[
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: # Replace with a single Ko-fi username\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\ncustom: ['https://sourceforge.net/p/lazpaint/donate/?source=navbar'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "---\nversion: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"monthly\"\n"
  },
  {
    "path": ".github/workflows/make.pas",
    "content": "program Make;\n{$mode objfpc}{$H+}\n\nuses\n  Classes,\n  SysUtils,\n  StrUtils,\n  FileUtil,\n  Zipper,\n  fphttpclient,\n  RegExpr,\n  openssl,\n  opensslsockets,\n  Process;\n\nconst\n  Target: string = 'test';\n  Dependencies: array of string = ('epiktimer', 'BGRAControls');\n\ntype\n  TLog = (audit, info, error);\n  Output = record\n    Success: boolean;\n    Output: string;\n  end;\n\n  procedure OutLog(Knd: TLog; Msg: string);\n  begin\n    case Knd of\n        error: Writeln(stderr, #27'[91m', Msg, #27'[0m');\n        info:  Writeln(stderr, #27'[32m', Msg, #27'[0m');\n        audit: Writeln(stderr, #27'[33m', Msg, #27'[0m');\n    end;\n  end;\n\n  function CheckModules: Output;\n  var Line: string;\n  begin\n    if FileExists('.gitmodules') then\n      if RunCommand('git', ['submodule', 'update', '--init', '--recursive',\n        '--force', '--remote'], Result.Output) then\n      begin\n        for Line in SplitString(Result.Output, LineEnding) do\n          if Line <> '' then\n            OutLog(info, Line);\n      end;\n  end;\n\n  function AddPackage(Path: string): Output;\n  begin\n    with TRegExpr.Create do\n    begin\n      Expression :=\n        {$IFDEF MSWINDOWS}\n          '(cocoa|x11|_template)'\n        {$ELSE}\n          '(cocoa|gdi|_template)'\n        {$ENDIF}\n      ;\n      if not Exec(Path) and RunCommand('lazbuild', ['--add-package-link', Path],\n        Result.Output) then\n        OutLog(info, 'added ' + Path);\n      Free;\n    end;\n  end;\n\n  function BuildProject(Path: string): Output;\n  var\n    Line: string;\n  begin\n    OutLog(audit, 'build from ' + Path);\n    try\n      Result.Success := RunCommand('lazbuild', ['--build-all', '--recursive',\n        '--no-write-project', Path], Result.Output);\n      if Result.Success then\n        for Line in SplitString(Result.Output, LineEnding) do\n        begin\n          if ContainsStr(Line, 'Linking') then\n          begin\n            Result.Output := SplitString(Line, ' ')[2];\n            OutLog(info, ' to ' + Result.Output);\n            break;\n          end;\n        end\n      else\n      begin\n        ExitCode += 1;\n        with TRegExpr.Create do\n        begin\n          Expression := '(Fatal|Error|/ld(\\.[a-z]+)?):';\n          for Line in SplitString(Result.Output, LineEnding) do\n          begin\n            if Exec(Line) then\n              OutLog(error, Line);\n          end;\n          Free;\n        end;\n      end;\n    except\n      on E: Exception do\n        OutLog(error, E.ClassName + LineEnding + E.Message);\n    end;\n  end;\n\n  function RunTest(Path: string): Output;\n  var\n    Temp: string;\n  begin\n    Result := BuildProject(Path);\n    Temp:= Result.Output;\n    if Result.Success then\n        try\n          if not RunCommand(Temp, ['--all', '--format=plain', '--progress'], Result.Output) then\n          begin\n            ExitCode += 1;\n            OutLog(error, Result.Output);\n          end;\n        except\n          on E: Exception do\n            OutLog(error, E.ClassName + LineEnding + E.Message);\n        end;\n  end;\n\n  function InstallOPM(Each: string): string;\n  var\n    OutFile, Uri: string;\n    Zip: TStream;\n  begin\n    Result :=\n      {$IFDEF MSWINDOWS}\n      GetEnvironmentVariable('APPDATA') + '\\.lazarus\\onlinepackagemanager\\packages\\'\n      {$ELSE}\n      GetEnvironmentVariable('HOME') + '/.lazarus/onlinepackagemanager/packages/'\n      {$ENDIF}\n      + Each;\n    OutFile := GetTempFileName;\n    Uri := 'https://packages.lazarus-ide.org/' + Each + '.zip';\n    if not DirectoryExists(Result) then\n    begin\n      Zip := TFileStream.Create(OutFile, fmCreate or fmOpenWrite);\n      with TFPHttpClient.Create(nil) do\n      begin\n        try\n          AddHeader('User-Agent', 'Mozilla/5.0 (compatible; fpweb)');\n          AllowRedirect := True;\n          Get(Uri, Zip);\n          OutLog(audit, 'Download from ' + Uri + ' to ' + OutFile);\n        finally\n          Free;\n        end;\n      end;\n      Zip.Free;\n      CreateDir(Result);\n      with TUnZipper.Create do\n      begin\n        try\n          FileName := OutFile;\n          OutputPath := Result;\n          Examine;\n          UnZipAllFiles;\n          OutLog(audit, 'Unzip from ' + OutFile + ' to ' + Result);\n        finally\n          Free;\n        end;\n      end;\n      DeleteFile(OutFile);\n    end;\n  end;\n\n  procedure BuildAll;\n  var\n    Each, Item: string;\n    List: TStringList;\n  begin\n    CheckModules;\n    InitSSLInterface;\n    for Item in Dependencies do\n    begin\n      List := FindAllFiles(InstallOPM(Item), '*.lpk', True);\n      try\n        for Each in List do\n          AddPackage(Each);\n      finally\n        List.Free;\n      end;\n    end;\n    List := FindAllFiles(GetCurrentDir, '*.lpk', True);\n    try\n      for Each in List do\n        AddPackage(Each);\n    finally\n      List.Free;\n    end;\n    List := FindAllFiles(Target, '*.lpi', True);\n    try\n      for Each in List do\n        if not ContainsStr(Each, 'zengl') then\n          if ContainsStr(ReadFileToString(ReplaceStr(Each, '.lpi', '.lpr')),\n            'consoletestrunner') then\n            RunTest(Each)\n          else\n            BuildProject(Each);\n    finally\n      List.Free;\n    end;\n    OutLog(audit,   '------------');\n    if ExitCode <> 0 then\n      OutLog(error, 'Errors: ' + IntToStr(ExitCode))\n    else\n      OutLog(info,  'No Errors 😊');\n    OutLog(audit,   '------------');  \n  end;\n\nbegin\n  BuildAll;\nend.\n"
  },
  {
    "path": ".github/workflows/make.yml",
    "content": "---\nname: Make\n\non:\n   schedule:\n      - cron: '0 0 1 * *'\n   push:\n      branches:\n         - \"**\"\n   pull_request:\n      branches:\n         - master\n         - main\n\nconcurrency:\n   group: ${{ github.workflow }}-${{ github.ref }}\n   cancel-in-progress: true\n\njobs:\n   build:\n      runs-on: ${{ matrix.os }}\n      timeout-minutes: 120\n      strategy:\n         matrix:\n            os:\n               - ubuntu-latest\n               - windows-latest\n      steps:\n          - name: Checkout\n            uses: actions/checkout@v6\n            with:\n               submodules: true\n\n          - name: Install Lazarus on Linux\n            if: runner.os == 'Linux'\n            shell: bash\n            run: |\n               set -xeuo pipefail\n               sudo bash -c 'apt-get update; apt-get install -y lazarus libxtst-dev' >/dev/null\n\n          - name: Build on Linux\n            if: runner.os == 'Linux'\n            shell: bash\n            run: |\n               set -xeuo pipefail\n               instantfpc -Fu/usr/lib/lazarus/*/components/lazutils .github/workflows/make.pas\n               delp -r \"${PWD}\"\n\n          - name: Get Lazarus installer from cache on Windows\n            if: runner.os == 'Windows'\n            id: cache-lazarus\n            uses: actions/cache@v5\n            with:\n               path: lazarus-installer\n               key: ${{ runner.os }}-lazarus-installer-4.0\n\n          - name: Download Lazarus installer if not cached on Windows\n            if: runner.os == 'Windows' && steps.cache-lazarus.outputs.cache-hit != 'true'\n            shell: powershell\n            run: |\n               New-Item -ItemType Directory -Force -Path lazarus-installer\n               $Uri = 'http://consume.o2switch.net/lazarus/lazarus-4.0-fpc-3.2.2-win64.exe'\n               $OutFile = \"lazarus-installer\\lazarus-setup.exe\"\n               Invoke-WebRequest -Uri $Uri -OutFile $OutFile\n\n          - name: Install Lazarus on Windows\n            if: runner.os == 'Windows'\n            shell: powershell\n            run: |\n               $Installer = \"lazarus-installer\\lazarus-setup.exe\"\n               & $Installer /SP- /VERYSILENT /SUPPRESSMSGBOXES /NORESTART | Out-Null\n\n          - name: Build on Windows\n            if: runner.os == 'Windows'\n            shell: powershell\n            run: |\n               $Env:PATH += ';C:\\Lazarus;C:\\Lazarus\\fpc\\3.2.2\\bin\\x86_64-win64'\n               instantfpc '-FuC:\\Lazarus\\components\\lazutils' .github/workflows/make.pas\n               delp -r $PWD.Path\n"
  },
  {
    "path": ".gitignore",
    "content": "*.bak\n*.dbg\n*.exe\n*.lps\n*.res\n*.lrt\n*.bak1\n*.app\n.DS_Store\nbackup\nlib\nbin\ndebug\n/bgrabitmap/lib4nogui\n/bgrabitmap/lib4fpgui\n/bgrabitmap/lib4android\n/bgrabitmap/lib4android+freetype\ntest/testglyph/testglyph\ntest/rationalbezier/rationalbezier\ntest/testbiditext2/project1\ntest/colorspace/ColorsDemo\ntest/colorspace/HorseShoe\ntest/testbiditext/project1\ntest/test4ideu/fractal_tree/units/\ntest/test4other/test.png\ndev/releaser/releaser\ndev/colorspace/UnitMaker\ndev/colorspace/generatecolorspaces\ndev/colorspace/generatedcolorspace.inc\n\ntest/test4other/test4nolcl\n\ntest/test4other/test4nolcl_freetype\n\nbgrabitmap/doc/\n\ndev/makedoc/pmakedoc\n\npasdoc\ndoc/web\n\ntest/testcore/lib\ntest/testcore/lib_createfont\n\nuse/*/\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"use/fpGUI\"]\n    path = use/fpGUI\n    url = https://github.com/graemeg/fpGUI.git\n[submodule \"use/lape\"]\n    path = use/lape\n    url = https://github.com/nielsAD/lape.git\n"
  },
  {
    "path": "COPYING.LGPL.txt",
    "content": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary."
  },
  {
    "path": "COPYING.modifiedLGPL.txt",
    "content": "This is the file COPYING.modifiedLGPL, it applies to all units of the\nBGRABitmap library.\n\nThese files are distributed under the GNU Lesser General Public License\n(see the file COPYING.LGPL) with the following modification:\n\nAs a special exception, the copyright holders of this library give you\npermission to link this library with independent modules to produce an\nexecutable, regardless of the license terms of these independent modules,\nand to copy and distribute the resulting executable under terms of your choice,\nprovided that you also meet, for each linked independent module, the terms\nand conditions of the license of that module. An independent module is a\nmodule which is not derived from or based on this library. If you modify this\nlibrary, you may extend this exception to your version of the library, but\nyou are not obligated to do so. If you do not wish to do so, delete this\nexception statement from your version.\n\n\nIf you didn't receive a copy of the file COPYING.LGPL, contact:\n      Free Software Foundation, Inc.,\n      675 Mass Ave\n      Cambridge, MA  02139\n      USA\n\n"
  },
  {
    "path": "Makefile",
    "content": "ifeq ($(OS),Windows_NT)     # true for Windows_NT or later\n  COPY := winmake\\copyfile\n  REMOVE := winmake\\remove\n  REMOVEDIR := winmake\\removedir\n  THEN := &\n  RUN :=\nelse\n  COPY := cp\n  REMOVE := rm -f\n  REMOVEDIR := rm -rf\n  THEN := ;\n  RUN := ./\n  RUN := $(strip $(RUN))\nendif\n\nall: generate compile\n\ninstall: not_installable\nuninstall: not_installable\n\nnot_installable:\n\techo \"The library cannot be installed on the system but statically linked to another Lazarus package or application.\"\n\nclean: clean_bgrabitmap clean_generate\n\nclean_bgrabitmap:\n\t$(REMOVE) \"bgrabitmap/generatedcolorspace.inc\"\n\t$(REMOVE) \"bgrabitmap/generatedunicode.inc\"\n\t$(REMOVE) \"bgrabitmap/generatedutf8.inc\"\n\t$(REMOVEDIR) \"bgrabitmap/lib\"\n\t$(REMOVEDIR) \"bgrabitmap/lib4nogui\"\n\t$(REMOVEDIR) \"bgrabitmap/backup\"\n\nclean_generate:\n\t$(REMOVE) \"dev/colorspace/generatecolorspaces\"\n\t$(REMOVE) \"dev/colorspace/generatedcolorspace.inc\"\n\t$(REMOVEDIR) \"dev/colorspace/lib\"\n\t$(REMOVEDIR) \"dev/colorspace/backup\"\n\t$(REMOVE) \"dev/parseunicode/parseunicodeclasses\"\n\t$(REMOVE) \"dev/parseunicode/generatedunicode.inc\"\n\t$(REMOVE) \"dev/parseunicode/generatedutf8.inc\"\n\t$(REMOVE) \"dev/parseunicode/generatedkerningfallback.inc\"\n\t$(REMOVEDIR) \"dev/parseunicode/lib\"\n\t$(REMOVEDIR) \"dev/parseunicode/backup\"\n\ngenerate: bgrabitmap/generatedcolorspace.inc bgrabitmap/generatedunicode.inc\n\nbgrabitmap/generatedcolorspace.inc: dev/colorspace/generatecolorspaces.lpr dev/colorspace/unitmakerunit.pas\n\tlazbuild dev/colorspace/generatecolorspaces.lpi\n\tcd dev $(THEN) cd colorspace $(THEN) $(RUN)generatecolorspaces\n\t$(COPY) dev/colorspace/generatedcolorspace.inc bgrabitmap/generatedcolorspace.inc\n\nbgrabitmap/generatedunicode.inc: dev/parseunicode/parseunicodeclasses.lpr dev/parseunicode/ArabicShaping.txt dev/parseunicode/BidiBrackets.txt dev/parseunicode/BidiMirroring.txt dev/parseunicode/UnicodeData.txt\n\tlazbuild dev/parseunicode/parseunicodeclasses.lpi\n\tcd dev $(THEN) cd parseunicode $(THEN) $(RUN)parseunicodeclasses\n\t$(COPY) dev/parseunicode/generatedunicode.inc bgrabitmap/generatedunicode.inc\n\t$(COPY) dev/parseunicode/generatedutf8.inc bgrabitmap/generatedutf8.inc\n\ncompile: BGRABitmapPack BGRABitmapPack4NoGUI\nlazbuild:\n\t#lazbuild will determine what to recompile\nBGRABitmapPack: lazbuild bgrabitmap/bgrabitmappack.lpk\n\tlazbuild bgrabitmap/bgrabitmappack.lpk\nBGRABitmapPack4NoGUI: lazbuild bgrabitmap/bgrabitmappack4nogui.lpk\n\tlazbuild bgrabitmap/bgrabitmappack4nogui.lpk\n\n"
  },
  {
    "path": "bglcontrols/bglcontrols.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"4\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGLControls\"/>\n    <Type Value=\"RunAndDesignTime\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\\$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"3\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Linking>\n        <Debugging>\n          <GenerateDebugInfo Value=\"False\"/>\n        </Debugging>\n      </Linking>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"1\" Minor=\"2\"/>\n    <Files Count=\"2\">\n      <Item1>\n        <Filename Value=\"bglvirtualscreen_icon.lrs\"/>\n        <Type Value=\"LRS\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bglvirtualscreen.pas\"/>\n        <HasRegisterProc Value=\"True\"/>\n        <UnitName Value=\"BGLVirtualScreen\"/>\n      </Item2>\n    </Files>\n    <RequiredPkgs Count=\"4\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"lazopenglcontext\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n      <Item4>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item4>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bglcontrols/bglcontrols.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGLControls;\n\ninterface\n\nuses\n  BGLVirtualScreen, LazarusPackageIntf;\n\nimplementation\n\nprocedure Register;\nbegin\n  RegisterUnit('BGLVirtualScreen', @BGLVirtualScreen.Register);\nend;\n\ninitialization\n  RegisterPackage('BGLControls', @Register);\nend.\n"
  },
  {
    "path": "bglcontrols/bglvirtualscreen.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit BGLVirtualScreen;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, BGRAClasses, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,\n  ExtCtrls, BGRABitmapTypes, BGRAOpenGL, OpenGLContext, BGRACanvasGL,\n  BGRASpriteGL;\n\ntype\n  TCustomBGLVirtualScreen = class;\n  TBGLRedrawEvent = procedure (Sender: TObject; BGLContext: TBGLContext) of object;\n  TBGLLoadTexturesEvent = procedure (Sender: TObject; BGLContext: TBGLContext) of object;\n  TBGLElapseEvent = procedure (Sender: TObject; BGLContext: TBGLContext; ElapsedMs: integer) of object;\n  TBGLFramesPerSecondEvent = procedure (Sender: TObject; BGLContext: TBGLContext; FramesPerSecond: integer) of object;\n  TBGLUseContextCallback = procedure (Sender: TObject; BGLContext: TBGLContext; Data: Pointer) of object;\n\n  { TCustomBGLVirtualScreen }\n\n  TCustomBGLVirtualScreen = class(TCustomOpenGLControl)\n  private\n    { Private declarations }\n    FOnRedraw: TBGLRedrawEvent;\n    FOnLoadTextures: TBGLLoadTexturesEvent;\n    FOnUnloadTextures: TBGLLoadTexturesEvent;\n    FOnElapse: TBGLElapseEvent;\n    FOnFramesPerSecond: TBGLFramesPerSecondEvent;\n    FSmoothedElapse: boolean;\n    FTexturesLoaded: boolean;\n    FBevelInner, FBevelOuter: TPanelBevel;\n    FBevelWidth:  TBevelWidth;\n    FBorderWidth: TBorderWidth;\n    FRedrawOnIdle: boolean;\n    FSprites: TBGLCustomSpriteEngine;\n    FElapseAccumulator, FElapseCount, FStoredFPS: integer;\n    FSmoothedElapseAccumulator: single;\n    FContextPrepared: boolean;\n    FOldSprites: TBGLCustomSpriteEngine;\n    FShaderList,FOldShaderList: TStringList;\n    function GetCanvas: TBGLCustomCanvas;\n    procedure SetBevelInner(const AValue: TPanelBevel);\n    procedure SetBevelOuter(const AValue: TPanelBevel);\n    procedure SetBevelWidth(const AValue: TBevelWidth);\n    procedure SetBorderWidth(const AValue: TBorderWidth);\n    procedure SetRedrawOnIdle(AValue: Boolean);\n    procedure SetSmoothedElapse(AValue: boolean);\n  protected\n    class var FToRedrawOnIdle: array of TCustomBGLVirtualScreen;\n    { Protected declarations }\n    procedure RedrawContent(ctx: TBGLContext); virtual;\n    procedure SetEnabled(Value: boolean); override;\n    procedure OnAppIdle(Sender: TObject; var Done: Boolean);\n    procedure LoadTextures; virtual;\n    function PrepareBGLContext: TBGLContext;\n    procedure ReleaseBGLContext(ctx: TBGLContext);\n  public\n    { Public declarations }\n    procedure DoOnPaint; override;\n    procedure QueryLoadTextures; virtual;\n    procedure UnloadTextures; virtual;\n    procedure UseContext(ACallback: TBGLUseContextCallback; AData: Pointer = nil);\n    constructor Create(TheOwner: TComponent); override;\n    destructor Destroy; override;\n  public\n    property Canvas: TBGLCustomCanvas read GetCanvas;\n    property Sprites: TBGLCustomSpriteEngine read FSprites;\n    property OnLoadTextures: TBGLLoadTexturesEvent Read FOnLoadTextures Write FOnLoadTextures;\n    property OnUnloadTextures: TBGLLoadTexturesEvent Read FOnUnloadTextures Write FOnUnloadTextures;\n    property OnRedraw: TBGLRedrawEvent Read FOnRedraw Write FOnRedraw;\n    property OnElapse: TBGLElapseEvent Read FOnElapse Write FOnElapse;\n    property OnFramesPerSecond: TBGLFramesPerSecondEvent Read FOnFramesPerSecond Write FOnFramesPerSecond;\n    property RedrawOnIdle: Boolean read FRedrawOnIdle write SetRedrawOnIdle default False;\n    property BorderWidth: TBorderWidth Read FBorderWidth Write SetBorderWidth default 0;\n    property BevelInner: TPanelBevel Read FBevelInner Write SetBevelInner default bvNone;\n    property BevelOuter: TPanelBevel Read FBevelOuter Write SetBevelOuter default bvNone;\n    property BevelWidth: TBevelWidth Read FBevelWidth Write SetBevelWidth default 1;\n    property SmoothedElapse: boolean read FSmoothedElapse write SetSmoothedElapse default False;\n  end;\n\n  TBGLVirtualScreen = class(TCustomBGLVirtualScreen)\n  published\n    property OnRedraw;\n    property Align;\n    property Anchors;\n    property AutoSize;\n    property BorderSpacing;\n    property BevelInner;\n    property BevelOuter;\n    property BevelWidth;\n    property BidiMode;\n    property BorderWidth;\n    property BorderStyle;\n    property Caption;\n    property ChildSizing;\n    property ClientHeight;\n    property ClientWidth;\n    property Color;\n    property Constraints;\n    property DockSite;\n    property DragCursor;\n    property DragKind;\n    property DragMode;\n    property Enabled;\n    property Font;\n    property ParentBidiMode;\n    property ParentColor;\n    property ParentFont;\n    property ParentShowHint;\n    property PopupMenu;\n    property RedrawOnIdle;\n    property ShowHint;\n    property TabOrder;\n    property TabStop;\n    property UseDockManager default True;\n    property Visible;\n    property OnClick;\n    property OnContextPopup;\n    property OnDockDrop;\n    property OnDockOver;\n    property OnDblClick;\n    property OnDragDrop;\n    property OnDragOver;\n    property OnElapse;\n    property OnEndDock;\n    property OnEndDrag;\n    property OnEnter;\n    property OnExit;\n    property OnFramesPerSecond;\n    property OnGetSiteInfo;\n    property OnGetDockCaption;\n    property OnLoadTextures;\n    property OnUnloadTextures;\n    property OnMouseDown;\n    property OnMouseEnter;\n    property OnMouseLeave;\n    property OnMouseMove;\n    property OnMouseUp;\n    property OnMouseWheel;\n    property OnMouseWheelDown;\n    property OnMouseWheelUp;\n    property OnResize;\n    property OnStartDock;\n    property OnStartDrag;\n    property OnUnDock;\n    property SmoothedElapse;\n  end;\n\nprocedure Register;\n\nimplementation\n\nprocedure Register;\nbegin\n  {$I bglvirtualscreen_icon.lrs}\n  RegisterComponents('OpenGL', [TBGLVirtualScreen]);\nend;\n\n{ TCustomBGLVirtualScreen }\n\nprocedure TCustomBGLVirtualScreen.SetBevelInner(const AValue: TPanelBevel);\nbegin\n  if FBevelInner = AValue then\n    exit;\n  FBevelInner := AValue;\n  Invalidate;\nend;\n\nfunction TCustomBGLVirtualScreen.GetCanvas: TBGLCustomCanvas;\nbegin\n  result := BGLCanvas;\nend;\n\nprocedure TCustomBGLVirtualScreen.SetBevelOuter(const AValue: TPanelBevel);\nbegin\n  if FBevelOuter = AValue then\n    exit;\n  FBevelOuter := AValue;\n  Invalidate;\nend;\n\nprocedure TCustomBGLVirtualScreen.SetBevelWidth(const AValue: TBevelWidth);\nbegin\n  if FBevelWidth = AValue then\n    exit;\n  FBevelWidth := AValue;\n  Invalidate;\nend;\n\nprocedure TCustomBGLVirtualScreen.SetBorderWidth(const AValue: TBorderWidth);\nbegin\n  if FBorderWidth = AValue then\n    exit;\n  FBorderWidth := AValue;\n  Invalidate;\nend;\n\nprocedure TCustomBGLVirtualScreen.SetRedrawOnIdle(AValue: Boolean);\nvar\n  i: Integer;\n  j: Integer;\nbegin\n  if FRedrawOnIdle=AValue then Exit;\n  FRedrawOnIdle:=AValue;\n\n  if FRedrawOnIdle then\n  begin\n    if length(FToRedrawOnIdle)= 0 then\n      Application.AddOnIdleHandler(@OnAppIdle);\n    setlength(FToRedrawOnIdle, length(FToRedrawOnIdle)+1);\n    FToRedrawOnIdle[high(FToRedrawOnIdle)] := self;\n  end\n  else\n  if length(FToRedrawOnIdle)> 0 then\n  begin\n    for i := 0 to high(FToRedrawOnIdle) do\n    begin\n      if FToRedrawOnIdle[i]=self then\n      begin\n        for j := i to high(FToRedrawOnIdle)-1 do\n          FToRedrawOnIdle[j] := FToRedrawOnIdle[j+1];\n        setlength(FToRedrawOnIdle, length(FToRedrawOnIdle)-1);\n        break;\n      end;\n    end;\n    if length(FToRedrawOnIdle) = 0 then\n       Application.RemoveOnIdleHandler(@OnAppIdle);\n  end;\nend;\n\nprocedure TCustomBGLVirtualScreen.SetSmoothedElapse(AValue: boolean);\nbegin\n  if FSmoothedElapse=AValue then Exit;\n  FSmoothedElapse:=AValue;\nend;\n\nprocedure TCustomBGLVirtualScreen.DoOnPaint;\nvar\n  ctx: TBGLContext;\n  knownFPS: Integer;\nbegin\n  if not FTexturesLoaded then LoadTextures;\n\n  ctx := PrepareBGLContext;\n  if Color = clNone then\n    BGLViewPort(ClientWidth,ClientHeight)\n  else\n  if Color = clDefault then\n    BGLViewPort(ClientWidth,ClientHeight,ColorToBGRA(clWindow))\n  else\n    BGLViewPort(ClientWidth,ClientHeight,ColorToBGRA(Color));\n\n  RedrawContent(ctx);\n  inherited DoOnPaint;\n  SwapBuffers;\n\n  inc(FElapseAccumulator, FrameDiffTimeInMSecs);\n  Inc(FElapseCount);\n  if FElapseAccumulator >= 2000 then\n  begin\n    FStoredFPS := 1000*FElapseCount div FElapseAccumulator;\n    if Assigned(FOnFramesPerSecond) then\n      FOnFramesPerSecond(self, ctx, FStoredFPS);\n    FElapseAccumulator := 0;\n    FElapseCount := 0;\n  end;\n\n  If Assigned(FOnElapse) then\n  begin\n    if SmoothedElapse then\n    begin\n      If FStoredFPS <> 0 then\n        knownFPS:= FStoredFPS\n      else\n      if FElapseAccumulator >= 500 then\n        knownFPS := 1000*FElapseCount div FElapseAccumulator\n      else\n        knownFPS := 0;\n\n      if knownFPS > 0 then\n      begin\n        IncF(FSmoothedElapseAccumulator, 1000/knownFPS);\n      end else\n        IncF(FSmoothedElapseAccumulator, FrameDiffTimeInMSecs);\n\n      FOnElapse(self, ctx, Trunc(FSmoothedElapseAccumulator));\n      DecF(FSmoothedElapseAccumulator, Trunc(FSmoothedElapseAccumulator));\n    end else\n      FOnElapse(self, ctx, FrameDiffTimeInMSecs);\n  end;\n\n  ReleaseBGLContext(ctx);\nend;\n\nprocedure TCustomBGLVirtualScreen.QueryLoadTextures;\nbegin\n  FTexturesLoaded := false;\nend;\n\nprocedure TCustomBGLVirtualScreen.LoadTextures;\nvar ctx: TBGLContext;\nbegin\n  if MakeCurrent then\n  begin\n    if Assigned(FOnLoadTextures) then\n    begin\n      ctx := PrepareBGLContext;\n      FOnLoadTextures(self, ctx);\n      ReleaseBGLContext(ctx);\n    end;\n    FTexturesLoaded:= true;\n  end;\nend;\n\nfunction TCustomBGLVirtualScreen.PrepareBGLContext: TBGLContext;\nbegin\n  if FContextPrepared then\n    raise exception.Create('Context already prepared');\n  FOldSprites := BGRASpriteGL.BGLSpriteEngine;\n  BGRASpriteGL.BGLSpriteEngine := FSprites;\n  FOldShaderList := BGLCanvas.Lighting.ShaderList;\n  BGLCanvas.Lighting.ShaderList := FShaderList;\n  result.Canvas := BGLCanvas;\n  result.Sprites := FSprites;\n  FContextPrepared := true;\nend;\n\nprocedure TCustomBGLVirtualScreen.ReleaseBGLContext(ctx: TBGLContext);\nbegin\n  if not FContextPrepared then\n    raise exception.Create('Context not prepared');\n  ctx.Canvas.Lighting.ShaderList := FOldShaderList;\n  BGRASpriteGL.BGLSpriteEngine := FOldSprites;\n  FContextPrepared := false;\nend;\n\nprocedure TCustomBGLVirtualScreen.UnloadTextures;\nvar ctx: TBGLContext;\nbegin\n  if MakeCurrent then\n  begin\n    ctx := PrepareBGLContext;\n    if Assigned(FOnUnloadTextures) then FOnUnloadTextures(self, ctx);\n    FSprites.Clear;\n    ctx.Canvas.Lighting.FreeShaders;\n    ReleaseBGLContext(ctx);\n    FTexturesLoaded := false;\n  end;\nend;\n\nprocedure TCustomBGLVirtualScreen.UseContext(ACallback: TBGLUseContextCallback; AData: Pointer);\nvar\n  ctx: TBGLContext;\nbegin\n  if not MakeCurrent then\n    raise exception.Create('Unable to switch to the OpenGL context');\n  ctx := PrepareBGLContext;\n  try\n    ACallback(self, ctx, AData);\n  finally\n    ReleaseBGLContext(ctx);\n  end;\nend;\n\nprocedure TCustomBGLVirtualScreen.RedrawContent(ctx: TBGLContext);\nvar\n  ARect: TRect;\n  w: integer;\nbegin\n  ARect := rect(0,0,ctx.Canvas.Width,ctx.Canvas.Height);\n  w := BevelWidth;\n  if w = 0 then w := 1;\n\n  // if BevelOuter is set then draw a frame with BevelWidth\n  if (BevelOuter <> bvNone) and (w > 0) then\n    ctx.Canvas.Frame3d(ARect, w, BevelOuter); // Note: Frame3D inflates ARect\n\n  ARect.Inflate(-BorderWidth, -BorderWidth);\n\n  // if BevelInner is set then skip the BorderWidth and draw a frame with BevelWidth\n  if (BevelInner <> bvNone) and (w > 0) then\n    ctx.Canvas.Frame3d(ARect, w, BevelInner); // Note: Frame3D inflates ARect\n\n  if Assigned(FOnRedraw) then\n    FOnRedraw(self, ctx);\nend;\n\nprocedure TCustomBGLVirtualScreen.SetEnabled(Value: boolean);\nbegin\n  if Value <> Enabled then Invalidate;\n  inherited SetEnabled(Value);\nend;\n\nprocedure TCustomBGLVirtualScreen.OnAppIdle(Sender: TObject; var Done: Boolean);\nvar\n  i: Integer;\nbegin\n  if length(FToRedrawOnIdle) > 0 then\n  begin\n    for i := 0 to high(FToRedrawOnIdle) do\n      if not (csDesigning in FToRedrawOnIdle[i].ComponentState) then\n        FToRedrawOnIdle[i].Invalidate;\n    Done:=false;\n  end;\nend;\n\nconstructor TCustomBGLVirtualScreen.Create(TheOwner: TComponent);\nbegin\n  inherited Create(TheOwner);\n  FTexturesLoaded:= False;\n  AutoResizeViewport := true;\n  FSprites := TBGLDefaultSpriteEngine.Create;\n  FShaderList:= TStringList.Create;\n  FStoredFPS := 0;\n  FElapseAccumulator := 0;\n  FElapseCount := 0;\n  FSmoothedElapseAccumulator := 0;\nend;\n\ndestructor TCustomBGLVirtualScreen.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FShaderList.Count-1 do\n    FShaderList.Objects[i].Free;\n  FShaderList.Free;\n  RedrawOnIdle := false;\n  FSprites.Free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "bglcontrols/bglvirtualscreen_icon.lrs",
    "content": "LazarusResources.Add('TBGLVirtualScreen','PNG',[\n  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#3#0#0#0#215#169#205\n  +#202#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0\n  +#3#0'PLTE'#0#0#0'7k'#190'vv'#146#128#128#128#150#181#231#192#192#192#194#192\n  +#193#223#223#219#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0\n  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#179#142\n  +#179#217#0#0#1#0'tRNS'#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255\n  +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0'S'#247#7'%'#0#0#0\n  +#9'pHYs'#0#0#14#195#0#0#14#195#1#199'o'#168'd'#0#0#0#25'tEXtSoftware'#0'Pain'\n  +'t.NET v3.5.87;'#128']'#0#0#0#145'IDAT(S}'#146#1#14#133' '#12'C;`'#204#251'_'\n  +#216#223'150'#244'WM'#180#175#133'd'#130#243'C'#248#3#202'.'#166#217'(GR+'\n  +#253#2#246#168#241#173#245#13#136#208'n'#182#1'i'#188'Dr'#3#244#220#150#212\n  +#128#24#200'xo'#128#27#152#195#21#140#133#140#15#236#5#132#191#0#212#216#186\n  +'&'#0#173#131#12#127'j'#248#167#163#240'g'#160#170#142#194'O@'#237#246#151\n  +#165#152#214'+?5`'#10#234#25#241'=D'#28#204#247'Y1v'#20#250#233''''#6#168')'\n  +#239#221#1#240'z >O'#201#15#143#1#178'Ms O)'#0#0#0#0'IEND'#174'B`'#130\n]);\n"
  },
  {
    "path": "bgrabitmap/avifbgra.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\r\n\r\n{ @abstract(Easy to use classes and functions to read/write images in AVIF format.)\r\n\r\n  It supports multi-image files.\r\n\r\n  Note that it requires libavif library. }\r\nunit avifbgra;\r\n\r\n{ Author: Domingo Galmes <dgalmesp@gmail.com>  01-11-2021 }\r\n\r\n{$mode ObjFPC}{$H+}\r\n\r\ninterface\r\n\r\nuses\r\n  Classes, SysUtils, BGRABitmapTypes, libavif;\r\n\r\ntype\r\n  {* Exception when using libavif library }\r\n  EAvifException = class(Exception);\r\n  {* Pixel format to use when encoding the image }\r\n  avifPixelFormat = libavif.avifPixelFormat;\r\n\r\nconst\r\n  {** This format uses YUV color space with a 4:4:4 chroma subsampling.\r\n    In this format, each component (Y for luminance, U, and V for chrominance) has the same\r\n    sample rate, meaning there's no chroma subsampling. This results in high-quality images\r\n    because it retains all the color information. }\r\n  AVIF_PIXEL_FORMAT_YUV444 = libavif.AVIF_PIXEL_FORMAT_YUV444;\r\n  {** This format also uses the YUV color space but with 4:2:2 chroma subsampling.\r\n    Here, the horizontal resolution of the chroma channels is halved\r\n    compared to the luminance channel, reducing the image size while still maintaining good quality.\r\n    It strikes a balance between compression and image quality. }\r\n  AVIF_PIXEL_FORMAT_YUV422 = libavif.AVIF_PIXEL_FORMAT_YUV422;\r\n  {** Utilizing the YUV color space with 4:2:0 chroma subsampling, this format reduces both\r\n    the horizontal and vertical resolution of the chroma channels by half relative\r\n    to the luminance channel. This is a commonly used format for digital video compression,\r\n    offering significant file size reduction at the cost of some image quality,\r\n    especially in areas with high color detail. }\r\n  AVIF_PIXEL_FORMAT_YUV420 = libavif.AVIF_PIXEL_FORMAT_YUV420;\r\n  {** This is a monochrome format where only the Y (luminance) component is used, and there are\r\n    no U and V (chrominance) components. Essentially, it's a grayscale image, which can\r\n    significantly reduce the file size while being appropriate for images that\r\n    don't require color. }\r\n  AVIF_PIXEL_FORMAT_YUV400 = libavif.AVIF_PIXEL_FORMAT_YUV400;\r\n\r\ntype\r\n  {* Codec choices for encoding and/or decoding AVIF }\r\n  avifCodecChoice = libavif.avifCodecChoice;\r\n\r\nconst\r\n  { AOM stands for Alliance for Open Media, which is the consortium\r\n    that developed the AV1 codec. This choice indicates the use of AOM's reference implementation\r\n    for both encoding and decoding AVIF images. }\r\n  AVIF_CODEC_CHOICE_AOM = libavif.AVIF_CODEC_CHOICE_AOM;\r\n  { This decoding-only codec is focused on decoding AV1 content. Developed by the VideoLAN, VLC, and FFmpeg\r\n    communities, dav1d is known for its speed and efficiency in decoding AV1 streams. }\r\n  AVIF_CODEC_CHOICE_DAV1D = libavif.AVIF_CODEC_CHOICE_DAV1D;\r\n  { This decoding-only codec is developed by Google. It is designed for efficiency and is used in\r\n     various Google products for decoding AV1 content. }\r\n  AVIF_CODEC_CHOICE_LIBGAV1 = libavif.AVIF_CODEC_CHOICE_LIBGAV1;\r\n  { This encoding-only codec is designed to offer efficient encoding of video content. }\r\n  AVIF_CODEC_CHOICE_RAV1E = libavif.AVIF_CODEC_CHOICE_RAV1E;\r\n  { This encoding-only codec focuses on offering high performance and scalability. SVT stands for\r\n    Scalable Video Technology. }\r\n  AVIF_CODEC_CHOICE_SVT = libavif.AVIF_CODEC_CHOICE_SVT;\r\n  { Ongoing development in the next-generation video compression technology beyond AV1. }\r\n  AVIF_CODEC_CHOICE_AVM = libavif.AVIF_CODEC_CHOICE_AVM;\r\n\r\nconst\r\n  { Default number of allocated threads for processing }\r\n  AVIF_BGRA_DEFAULT_MAX_THREADS = 2;\r\n\r\n  { Default timescale of the media (in Hz), not relevant for images }\r\n  AVIF_BGRA_DEFAULT_TIMESCALE = 30;\r\n\r\n  { Default quality of color compression }\r\n  AVIF_BGRA_DEFAULT_QUALITY = 30;\r\n  { Default difference between color quality and alpha quality }\r\n  AVIF_BGRA_DEFAULT_QUALITY_ALPHA_DELTA = 25;\r\n  { Default quality of compression of the alpha channel }\r\n  AVIF_BGRA_DEFAULT_QUALITY_ALPHA = AVIF_BGRA_DEFAULT_QUALITY + AVIF_BGRA_DEFAULT_QUALITY_ALPHA_DELTA;\r\n  { Specify that no information will be lost in the compression process }\r\n  AVIF_BGRA_LOSSLESS_QUALITY = 100;\r\n\r\n  { Let the encoder choose the adequate speed }\r\n  AVIF_BGRA_SPEED_DEFAULT = AVIF_SPEED_DEFAULT;\r\n\r\n  { Common format for image compression with half the resolution for chroma channels\r\n    (ignored when used with AVIF_BGRA_LOSSLESS_QUALITY) }\r\n  AVIF_BGRA_PIXEL_FORMAT_DEFAULT = AVIF_PIXEL_FORMAT_YUV420;\r\n  { Let the encoder choose the adequate codec }\r\n  AVIF_BGRA_CODEC_CHOICE_AUTO = AVIF_CODEC_CHOICE_AUTO;\r\n\r\ntype\r\n  { Reader for AVIF images or animations (not derived from TFPCustomImageReader) }\r\n  TAvifReader = class\r\n  private\r\n    function GetImageCount: uint32;\r\n    function GetImageIndex: integer;\r\n    function GetRepetitionCount: integer;\r\n    function GetSequenceDuration: double;\r\n    function GetTimescale: uint64;\r\n  protected\r\n    FDecoder: PavifDecoder;\r\n    FDecoderWrap: TObject; //TDecoderBase;\r\n    FStream: TStream;\r\n    FStreamOwned: boolean;\r\n    FWidth: uint32;\r\n    FHeight: uint32;\r\n    FImageDurationSeconds: double;\r\n    FImageDurationTimescales: UInt64;\r\n    procedure Init(AStream: TStream; AStreamOwned: boolean);\r\n    procedure SetDecoder(ACodec: avifCodecChoice);\r\n    function GetDecoder: avifCodecChoice;\r\n    procedure Close; // call before unloading libavif\r\n  public\r\n    constructor Create(AFileName: string); virtual; overload;\r\n    constructor Create(AStream: TStream; AStreamOwned: boolean = false); virtual; overload;\r\n    destructor Destroy; override;\r\n    class function CreateDecoder: PavifDecoder;\r\n    class procedure DestroyDecoder(var ADecoder: PavifDecoder);\r\n\r\n    function GetNextImage(AOutBitmap: TBGRACustomBitmap): boolean;\r\n    function GetNthImage(AOutBitmap: TBGRACustomBitmap; AImageIndex: uint32): boolean;\r\n\r\n    property Decoder: avifCodecChoice read GetDecoder write SetDecoder;\r\n    property ImageIndex: integer read GetImageIndex;\r\n    property ImageCount: uint32 read GetImageCount;\r\n    property ImageDurationSeconds: double read FImageDurationSeconds;\r\n    property ImageDurationTimescales: uint64 read FImageDurationTimescales;\r\n    property SequenceDuration: double read GetSequenceDuration;\r\n    property RepetitionCount: integer read GetRepetitionCount;\r\n    property Width: uint32 read FWidth;\r\n    property Height: uint32 read FHeight;\r\n    property Timescale: uint64 read GetTimescale; // if all images have 1 timescale of duration is the same as FPS\r\n  end;\r\n\r\n  { Writer for AVIF images or animations (not derived from TFPCustomImageWriter) }\r\n  TAvifWriter = class\r\n  protected\r\n    FEncoder: PAvifEncoder;\r\n    FEncoderWrap: TObject; //TEncoderBase;\r\n    FQuality0to100: integer;\r\n    FPixelFormat: avifPixelFormat;\r\n    FQualityAlpha0to100: integer;\r\n    FIgnoreAlpha: boolean;\r\n    FAvifOutput: avifRWData;\r\n    FOnlyOneImage: boolean;\r\n    FImagesCount: uint32;\r\n    FLossless: boolean;\r\n    procedure EncoderFinish;\r\n    procedure SetMaxThreads(AMT: integer);\r\n    procedure SetIgnoreAlpha(AValue: boolean);\r\n    function GetMaxThreads: integer;\r\n    procedure SetEncoder(ACodec: avifCodecChoice);\r\n    function GetEncoder: avifCodecChoice;\r\n    function GetLossless: boolean;\r\n    procedure SetLossless(AValue: boolean);\r\n    procedure SetTimescale(ATimescale: uint64);\r\n    function GetTimescale: uint64;\r\n    procedure SetSpeed(ASpeed: integer);\r\n    function GetSpeed: integer;\r\n    procedure SetQuality(AValue: integer);\r\n    procedure SetQualityAlpha(AValue: integer);\r\n    procedure ApplyQuality;\r\n  public\r\n    constructor Create(\r\n      AQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n      ASpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT;\r\n      APixelFormat: avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n      AIgnoreAlpha: boolean = False); virtual; overload;\r\n    procedure Close;\r\n    destructor Destroy; override;\r\n    class function CreateEncoder: PAvifEncoder;\r\n    class procedure DestroyEncoder(var AEncoder: PAvifEncoder);\r\n\r\n    procedure AddImage(ABitmap: TBGRACustomBitmap; ADurationMs: cardinal=0);\r\n    function SaveToFile(AFileName: string): NativeUInt;\r\n    function SaveToStream(AStream: TStream): NativeUInt;\r\n    function SaveToMemory(AData: Pointer; ASize: NativeUInt): NativeUInt;\r\n    function GetOutputSize: NativeUInt;\r\n\r\n    property Encoder: avifCodecChoice read GetEncoder write SetEncoder;\r\n    property OnlyOneImage: boolean read FOnlyOneImage write FOnlyOneImage;\r\n    property MaxThreads: integer read GetMaxThreads write SetMaxThreads;\r\n    property PixelFormat: avifPixelFormat read FPixelFormat write FPixelFormat;\r\n    property Quality: integer read FQuality0to100 write SetQuality;\r\n    property QualityAlpha: integer read FQualityAlpha0to100 write SetQualityAlpha;\r\n    property Speed: integer read GetSpeed write SetSpeed;\r\n    property Timescale: uint64 read GetTimescale write SetTimescale; // frequency in Hertz\r\n    property IgnoreAlpha: boolean read FIgnoreAlpha write SetIgnoreAlpha;\r\n    property Lossless: boolean read GetLossless write SetLossless;\r\n  end;\r\n\r\n{ Load an AVIF image from the given stream }\r\nprocedure AvifLoadFromStream(AStream: TStream; aBitmap: TBGRACustomBitmap);\r\n{ Load an AVIF image from the given file }\r\nprocedure AvifLoadFromFile(const AFilename: string; aBitmap: TBGRACustomBitmap);\r\n{ Load an AVIF image from the given file without using the reader class }\r\nprocedure AvifLoadFromFileNative(const AFilename: string; aBitmap: TBGRACustomBitmap);\r\n{ Load an AVIF image from memory, without using the reader class }\r\nprocedure AvifLoadFromMemory(AData: Pointer; ASize: cardinal; aBitmap: TBGRACustomBitmap);\r\n\r\n{ Save an image into a stream using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToStream(aBitmap: TBGRACustomBitmap; AStream: TStream;\r\n  aQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  aSpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT;\r\n  aPixelFormat:avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  aIgnoreAlpha:boolean = false): NativeUInt;\r\n\r\n{ Save an image into a file using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToFile(aBitmap: TBGRACustomBitmap; const AFilename: string;\r\n  aQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  aSpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT;\r\n  aPixelFormat: avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  aIgnoreAlpha: boolean = false): NativeUInt;\r\n\r\n{ Save an image to memory using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToMemory(aBitmap: TBGRACustomBitmap; AData: Pointer; ASize: cardinal;\r\n  aQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  aSpeed0to10:integer = AVIF_BGRA_SPEED_DEFAULT;\r\n  aPixelFormat:avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  aIgnoreAlpha:boolean = false): NativeUInt;\r\n\r\n{ Save an image into a stream using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToStream(ABitmap: TBGRACustomBitmap; AStream: TStream;\r\n  AIgnoreAlpha: boolean = False;\r\n  AQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  AQualityAlpha0to100: integer = AVIF_BGRA_DEFAULT_QUALITY_ALPHA;\r\n  APixelFormat: avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  ACodec: avifCodecChoice = AVIF_BGRA_CODEC_CHOICE_AUTO;\r\n  ASpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT): nativeuint; overload;\r\n\r\n{ Save an image into a file using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToFile(ABitmap: TBGRACustomBitmap; const AFilename: string;\r\n  AIgnoreAlpha: boolean = False;\r\n  AQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  AQualityAlpha0to100: integer = AVIF_BGRA_DEFAULT_QUALITY_ALPHA;\r\n  APixelFormat: avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  ACodec: avifCodecChoice = AVIF_BGRA_CODEC_CHOICE_AUTO;\r\n  ASpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT): nativeuint; overload;\r\n\r\n{ Save an image to memory using AVIF format. Return the number of bytes needed. }\r\nfunction AvifSaveToMemory(ABitmap: TBGRACustomBitmap; AData: Pointer; ASize: nativeuint;\r\n  AIgnoreAlpha: boolean = False;\r\n  AQuality0to100: integer = AVIF_BGRA_DEFAULT_QUALITY;\r\n  AQualityAlpha0to100: integer = AVIF_BGRA_DEFAULT_QUALITY_ALPHA;\r\n  APixelFormat: avifPixelFormat = AVIF_BGRA_PIXEL_FORMAT_DEFAULT;\r\n  ACodec: avifCodecChoice = AVIF_BGRA_CODEC_CHOICE_AUTO;\r\n  ASpeed0to10: integer = AVIF_BGRA_SPEED_DEFAULT): nativeuint; overload;\r\n\r\n{ Checks that the signature of the memory block correspond to a valid AVIF header }\r\nfunction AvifValidateHeaderSignature(\r\n  aBuffer: Pointer // at least 12 first bytes of file\r\n  ): boolean;\r\n\r\nimplementation\r\n\r\nuses\r\n  Math;\r\n\r\ntype\r\n  PavifIOStreamReader = ^avifIOStreamReader;\r\n\r\n  avifIOStreamReader = record\r\n    io: avifIO; // this must be the first member for easy casting to avifIO*\r\n    buffer: avifRWData;\r\n    Stream: TStream;\r\n  end;\r\n\r\n  TAvifImageBase = class\r\n  public\r\n    procedure Init(aImagePtr: Pointer); virtual; abstract;\r\n    function GetTransformFlags: longword; virtual; abstract;\r\n    function GetImirMode: uint8; virtual; abstract;\r\n    procedure SetColorPrimaries(AColorPrimaries: avifColorPrimaries); virtual; abstract;\r\n    procedure SetTransferCharacteristics(ATC: avifTransferCharacteristics); virtual; abstract;\r\n    procedure SetMatrixCoefficients(AMC: avifMatrixCoefficients); virtual; abstract;\r\n    procedure SetYuvRange(AYR: avifRange); virtual; abstract;\r\n    procedure SetTransformFlags(ATF: avifTransformFlags); virtual; abstract;\r\n    procedure SetImirMode(AIM: uint8); virtual; abstract;\r\n  end;\r\n\r\n  generic TAvifImage<T> = class(TAvifImageBase)\r\n  protected\r\n    FImage: T;\r\n  public\r\n    constructor Create(aImagePtr: Pointer = nil);\r\n    procedure Init(aImagePtr: Pointer); override;\r\n    function GetTransformFlags: longword; override;\r\n    function GetImirMode: uint8; override;\r\n    procedure SetColorPrimaries(AColorPrimaries: avifColorPrimaries); override;\r\n    procedure SetTransferCharacteristics(ATC: avifTransferCharacteristics); override;\r\n    procedure SetMatrixCoefficients(AMC: avifMatrixCoefficients); override;\r\n    procedure SetYuvRange(AYR: avifRange); override;\r\n    procedure SetTransformFlags(ATF: avifTransformFlags); override;\r\n    procedure SetImirMode(AIM: uint8); override;\r\n  end;\r\n\r\n  TDecoderBase = class\r\n  public\r\n    procedure Init(aDecoderPtr: Pointer); virtual; abstract;\r\n    function GetImage: PavifImage; virtual; abstract;\r\n    function GetIo:PavifIO; virtual; abstract;\r\n    function GetDecoder:PavifDecoder; virtual; abstract;\r\n    function GetSequenceDuration: double; virtual; abstract;\r\n    function GetImageCount: longint; virtual; abstract;\r\n    function GetImageIndex: longint; virtual; abstract;\r\n    function GetImageDurationSeconds: double; virtual; abstract;\r\n    function GetImageDurationTimescales: UInt64;virtual; abstract;\r\n    function GetRepetitionCount: integer; virtual; abstract;\r\n    function GetTimescale: UInt64; virtual; abstract;\r\n    procedure SetCodecChoice(ACodec:avifCodecChoice); virtual; abstract;\r\n    function GetCodecChoice: avifCodecChoice; virtual; abstract;\r\n  end;\r\n\r\n  { TDecoder }\r\n\r\n  generic TDecoder<T> = class(TDecoderBase)\r\n  protected\r\n    FDecoder: T;\r\n  public\r\n    constructor Create(aDecoderPtr: Pointer = nil); virtual;\r\n    procedure Init(aDecoderPtr: Pointer); override;\r\n    function GetImage: PavifImage; override;\r\n    function GetIo:PavifIO; override;\r\n    function GetDecoder:PavifDecoder; override;\r\n    function GetSequenceDuration: double; override;\r\n    function GetImageCount: longint; override;\r\n    function GetImageIndex: longint; override;\r\n    function GetImageDurationSeconds: double; override;\r\n    function GetImageDurationTimescales: UInt64; override;\r\n    function GetRepetitionCount: integer; override;\r\n    function GetTimescale: UInt64; override;\r\n    procedure SetCodecChoice(ACodec:avifCodecChoice); override;\r\n    function GetCodecChoice: avifCodecChoice; override;\r\n  end;\r\n\r\n  { TDecoderWithRepetition }\r\n\r\n  generic TDecoderWithRepetition<T> = class(specialize TDecoder<T>)\r\n    constructor Create(aDecoderPtr: Pointer = nil); override;\r\n    function GetRepetitionCount: integer; override;\r\n  end;\r\n\r\n  TEncoderBase = class\r\n  public\r\n    procedure Init(aEncoderPtr: Pointer); virtual; abstract;\r\n    procedure SetMaxThreads(AMT: integer); virtual; abstract;\r\n    procedure SetSpeed(ASpeed: integer); virtual; abstract;\r\n    function GetSpeed: integer; virtual; abstract;\r\n    procedure SetQuality(AQuality: integer); virtual; abstract;\r\n    function GetQuality: integer; virtual; abstract;\r\n    procedure SetQualityAlpha(AQuality: integer); virtual; abstract;\r\n    function GetQualityAlpha: integer; virtual; abstract;\r\n    function HasQuality: boolean; virtual; abstract;\r\n    procedure SetMinQuantizer(AMinQ: integer); virtual; abstract;\r\n    procedure SetMaxQuantizer(AMQ: integer); virtual; abstract;\r\n    procedure SetMinQuantizerAlpha(AMinQ: integer); virtual; abstract;\r\n    procedure SetMaxQuantizerAlpha(AMQ: integer); virtual; abstract;\r\n    procedure SetCodecChoice(AMQ: avifCodecChoice); virtual; abstract;\r\n    function GetCodecChoice: avifCodecChoice; virtual; abstract;\r\n    procedure SetTimescale(aValue:UInt64); virtual; abstract;\r\n    function GetTimescale:UInt64; virtual; abstract;\r\n    function GetMaxThreads: integer; virtual; abstract;\r\n    function GetMinQuantizer: integer; virtual; abstract;\r\n    function GetMaxQuantizer: integer; virtual; abstract;\r\n    function GetMinQuantizerAlpha: integer; virtual; abstract;\r\n    function GetMaxQuantizerAlpha: integer; virtual; abstract;\r\n  end;\r\n\r\n  { TEncoder }\r\n\r\n  generic TEncoder<T> = class(TEncoderBase)\r\n  protected\r\n    FEncoder: T;\r\n  public\r\n    constructor Create(aEncoderPtr: Pointer = nil); virtual;\r\n    procedure Init(aEncoderPtr: Pointer); override;\r\n    procedure SetMaxThreads(AMT: integer); override;\r\n    procedure SetSpeed(ASpeed: integer); override;\r\n    function GetSpeed: integer; override;\r\n    procedure SetMinQuantizer(AMinQ: integer); override;\r\n    procedure SetMaxQuantizer(AMQ: integer); override;\r\n    procedure SetMinQuantizerAlpha(AMinQ: integer); override;\r\n    procedure SetMaxQuantizerAlpha(AMQ: integer); override;\r\n    procedure SetCodecChoice(ACC: avifCodecChoice); override;\r\n    function GetCodecChoice: avifCodecChoice; override;\r\n    procedure SetTimescale(aValue:UInt64); override;\r\n    function GetTimescale:UInt64; override;\r\n    function GetMaxThreads: integer; override;\r\n    procedure SetQuality(AQuality: integer); override;\r\n    function GetQuality: integer;override;\r\n    procedure SetQualityAlpha(AQuality: integer); override;\r\n    function GetQualityAlpha: integer; override;\r\n    function HasQuality: boolean; override;\r\n    function GetMinQuantizer: integer; override;\r\n    function GetMaxQuantizer: integer; override;\r\n    function GetMinQuantizerAlpha: integer; override;\r\n    function GetMaxQuantizerAlpha: integer; override;\r\n  end;\r\n\r\n  { TEncoderWithQuality }\r\n\r\n  generic TEncoderWithQuality<T> = class(specialize TEncoder<T>)\r\n    constructor Create(aEncoderPtr: Pointer = nil); override;\r\n    procedure SetQuality(AQuality: integer); override;\r\n    function GetQuality: integer;override;\r\n    procedure SetQualityAlpha(AQuality: integer); override;\r\n    function GetQualityAlpha: integer; override;\r\n    function HasQuality: boolean; override;\r\n  end;\r\n\r\n  TAvifRGBImageBase = class\r\n  public\r\n    function GetRgbImage: PavifRGBImage; virtual; abstract;\r\n    function GetWidth:UInt32; virtual; abstract;\r\n    function GetHeight:UInt32; virtual; abstract;\r\n    procedure SetWidth(aWidth:UInt32); virtual; abstract;\r\n    procedure SetHeight(aHeight:UInt32); virtual; abstract;\r\n    procedure SetPixels(aPixels: PUInt8); virtual; abstract;\r\n    procedure SetDepth(aDepth:UInt32); virtual; abstract;\r\n    procedure SetFormat(aFormat:avifRGBFormat); virtual; abstract;\r\n    procedure SetRowBytes(aRowBytes : UInt32); virtual; abstract;\r\n    procedure SetIgnoreAlpha(AIgnoreAlpha : avifBool); virtual; abstract;\r\n    procedure SetAlphaPremultiplied(aValue:avifBool);virtual; abstract;\r\n  end;\r\n\r\n  TAvifRGBImageField = record\r\n    case integer of\r\n      0: (rgb0_8: avifRGBImage0_8_4);\r\n      1: (rgb0_10: avifRGBImage0_10_0);\r\n      2: (rgb0_11: avifRGBImage0_11_0);\r\n      3: (rgb1_00: avifRGBImage1_0_0);\r\n  end;\r\n\r\n  { TAvifRGBImage }\r\n\r\n  generic TAvifRGBImage<T> = class(TAvifRGBImageBase)\r\n  protected\r\n    wrgb: TAvifRGBImageField;\r\n    FImage: T;\r\n  public\r\n    constructor Create;\r\n    function GetRgbImage: PavifRGBImage; override;\r\n    function GetWidth:UInt32; override;\r\n    function GetHeight:UInt32; override;\r\n    procedure SetWidth(aWidth:UInt32); override;\r\n    procedure SetHeight(aHeight:UInt32); override;\r\n    procedure SetPixels(aPixels: PUInt8); override;\r\n    procedure SetDepth(aDepth:UInt32); override;\r\n    procedure SetFormat(aFormat:avifRGBFormat); override;\r\n    procedure SetRowBytes(aRowBytes : UInt32); override;\r\n    procedure SetIgnoreAlpha(AIgnoreAlpha : avifBool); override;\r\n    procedure SetAlphaPremultiplied(aValue:avifBool);override;\r\n  end;\r\n\r\nfunction TAvifImageFactory(aImagePtr: Pointer): TAvifImageBase;\r\nbegin\r\n  if AVIF_VERSION >= AVIF_VERSION_1_0_0 then\r\n    Result := specialize TAvifImage<PavifImage1_0_0>.Create(aImagePtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_11_0 then\r\n    Result := specialize TAvifImage<PavifImage0_11_0>.Create(aImagePtr)\r\n  else\r\n    Result := specialize TAvifImage<PavifImage0_8_4>.Create(aImagePtr);\r\nend;\r\n\r\nfunction TDecoderFactory(aDecoderPtr: Pointer): TDecoderBase;\r\nbegin\r\n  if AVIF_VERSION >= AVIF_VERSION_1_0_0 then\r\n     result := specialize TDecoderWithRepetition<PAvifDecoder1_0_0>.Create(aDecoderPtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_11_0 then\r\n     result := specialize TDecoder<PAvifDecoder0_11_0>.Create(aDecoderPtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_10_0 then\r\n     result := specialize TDecoder<PAvifDecoder0_10_0>.Create(aDecoderPtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_9_3 then\r\n     result := specialize TDecoder<PAvifDecoder0_9_3>.Create(aDecoderPtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_9_2 then\r\n     result := specialize TDecoder<PAvifDecoder0_9_2>.Create(aDecoderPtr)\r\n  else\r\n     result := specialize TDecoder<PAvifDecoder0_8_4>.Create(aDecoderPtr);\r\nend;\r\n\r\nfunction TEncoderFactory(aEncoderPtr: Pointer): TEncoderBase;\r\nbegin\r\n  if AVIF_VERSION >= AVIF_VERSION_1_0_0 then\r\n    result:=specialize TEncoderWithQuality<PAvifEncoder1_0_0>.Create(aEncoderPtr)\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_11_0 then\r\n    result:=specialize TEncoder<PAvifEncoder0_11_0>.Create(aEncoderPtr)\r\n  else\r\n    result:=specialize TEncoder<PAvifEncoder>.Create(aEncoderPtr);\r\nend;\r\n\r\nfunction TAvifRGBImageFactory(): TAvifRGBImageBase;\r\nbegin\r\n  if AVIF_VERSION >= AVIF_VERSION_1_0_0 then\r\n    result:=specialize TAvifRGBImage<PavifRGBImage1_0_0>.Create\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_11_0 then\r\n    result:=specialize TAvifRGBImage<PavifRGBImage0_11_0>.Create\r\n  else if AVIF_VERSION >= AVIF_VERSION_0_10_0 then\r\n    result:=specialize TAvifRGBImage<PavifRGBImage0_10_0>.Create\r\n  else\r\n    result:=specialize TAvifRGBImage<PavifRGBImage0_8_4>.Create;\r\nend;\r\n\r\n{ TDecoderWithRepetition }\r\n\r\nconstructor TDecoderWithRepetition.Create(aDecoderPtr: Pointer);\r\nbegin\r\n  inherited Create(aDecoderPtr);\r\nend;\r\n\r\nfunction TDecoderWithRepetition.GetRepetitionCount: integer;\r\nbegin\r\n  result := FDecoder^.repetitionCount;\r\nend;\r\n\r\n{ TEncoderWithQuality }\r\n\r\nconstructor TEncoderWithQuality.Create(aEncoderPtr: Pointer);\r\nbegin\r\n  inherited Create(aEncoderPtr);\r\nend;\r\n\r\nprocedure TEncoderWithQuality.SetQuality(AQuality: integer);\r\nbegin\r\n  FEncoder^.quality := AQuality;\r\nend;\r\n\r\nfunction TEncoderWithQuality.GetQuality: integer;\r\nbegin\r\n  result := FEncoder^.quality;\r\nend;\r\n\r\nprocedure TEncoderWithQuality.SetQualityAlpha(AQuality: integer);\r\nbegin\r\n  FEncoder^.qualityAlpha := AQuality;\r\nend;\r\n\r\nfunction TEncoderWithQuality.GetQualityAlpha: integer;\r\nbegin\r\n  result := FEncoder^.qualityAlpha;\r\nend;\r\n\r\nfunction TEncoderWithQuality.HasQuality: boolean;\r\nbegin\r\n  Result:= true;\r\nend;\r\n\r\nconstructor TDecoder.Create(aDecoderPtr:Pointer);\r\nbegin\r\n  Init(aDecoderPtr);\r\nend;\r\n\r\nprocedure TDecoder.Init(aDecoderPtr:Pointer);\r\nbegin\r\n  FDecoder:=T(aDecoderPtr);\r\nend;\r\n\r\nfunction TDecoder.GetImage:PavifImage;\r\nbegin\r\n  result := FDecoder^.image;\r\nend;\r\n\r\nfunction TDecoder.GetIo:PavifIO;\r\nbegin\r\n  result := FDecoder^.io;\r\nend;\r\n\r\nfunction TDecoder.GetDecoder:PavifDecoder;\r\nbegin\r\n  result := FDecoder;\r\nend;\r\n\r\nfunction TDecoder.GetImageIndex:longint;\r\nbegin\r\n  result := FDecoder^.imageIndex;\r\nend;\r\n\r\nfunction TDecoder.GetImageDurationSeconds: double;\r\nbegin\r\n  result := FDecoder^.imageTiming.duration;\r\nend;\r\n\r\nfunction TDecoder.GetImageDurationTimescales: UInt64;\r\nbegin\r\n  result := FDecoder^.imageTiming.durationInTimescales;\r\nend;\r\n\r\nfunction TDecoder.GetRepetitionCount: integer;\r\nbegin\r\n  result := 0;\r\nend;\r\n\r\nfunction TDecoder.GetTimescale: UInt64;\r\nbegin\r\n  result := FDecoder^.timescale;\r\nend;\r\n\r\nprocedure TDecoder.SetCodecChoice(ACodec: avifCodecChoice);\r\nbegin\r\n  FDecoder^.codecChoice := ACodec;\r\nend;\r\n\r\nfunction TDecoder.GetCodecChoice: avifCodecChoice;\r\nbegin\r\n  result := FDecoder^.codecChoice;\r\nend;\r\n\r\nfunction TDecoder.GetImageCount:longint;\r\nbegin\r\n  result := FDecoder^.imageCount;\r\nend;\r\n\r\nfunction TDecoder.GetSequenceDuration:double;\r\nbegin\r\n  result := FDecoder^.duration;\r\nend;\r\n\r\nconstructor TAvifRGBImage.Create;\r\nbegin\r\n  wrgb := Default(TAvifRGBImageField);\r\n  FImage:= T(@wrgb);\r\nend;\r\n\r\nfunction TAvifRGBImage.GetRgbImage: PavifRGBImage;\r\nbegin\r\n  result := FImage;\r\nend;\r\n\r\nfunction TAvifRGBImage.GetWidth:UInt32;\r\nbegin\r\n  result := FImage^.width;\r\nend;\r\n\r\nfunction TAvifRGBImage.GetHeight:UInt32;\r\nbegin\r\n  result := FImage^.height;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetWidth(aWidth:UInt32);\r\nbegin\r\n  FImage^.width:=aWidth;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetHeight(aHeight:UInt32);\r\nbegin\r\n  FImage^.height:=aHeight;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetPixels(aPixels:PUInt8);\r\nbegin\r\n  FImage^.pixels:=aPixels;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetDepth(aDepth:UInt32);\r\nbegin\r\n  FImage^.depth:=aDepth;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetFormat(aFormat:avifRGBFormat);\r\nbegin\r\n  FImage^.format:=aFormat;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetRowBytes(aRowBytes:UInt32);\r\nbegin\r\n  FImage^.rowBytes:=aRowBytes;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetIgnoreAlpha(AIgnoreAlpha:avifBool);\r\nbegin\r\n  FImage^.ignoreAlpha:=aIgnoreAlpha;\r\nend;\r\n\r\nprocedure TAvifRGBImage.SetAlphaPremultiplied(aValue: avifBool);\r\nbegin\r\n  FImage^.alphaPremultiplied:=aVAlue;\r\nend;\r\n\r\nconstructor TEncoder.Create(aEncoderPtr: Pointer);\r\nbegin\r\n  Init(aEncoderPtr);\r\nend;\r\n\r\nprocedure TEncoder.Init(aEncoderPtr: Pointer);\r\nbegin\r\n  FEncoder := T(aEncoderPtr);\r\nend;\r\n\r\nprocedure TEncoder.SetMaxThreads(AMT: integer);\r\nbegin\r\n  FEncoder^.maxThreads := AMT;\r\nend;\r\n\r\nprocedure TEncoder.SetSpeed(ASpeed: integer);\r\nbegin\r\n  FEncoder^.speed := ASpeed;\r\nend;\r\n\r\nfunction TEncoder.GetSpeed: integer;\r\nbegin\r\n  result := FEncoder^.speed;\r\nend;\r\n\r\nprocedure TEncoder.SetMinQuantizer(AMinQ: integer);\r\nbegin\r\n  FEncoder^.minQuantizer := AMinQ;\r\nend;\r\n\r\nprocedure TEncoder.SetMaxQuantizer(AMQ: integer);\r\nbegin\r\n  FEncoder^.maxQuantizer := AMQ;\r\nend;\r\n\r\nprocedure TEncoder.SetMinQuantizerAlpha(AMinQ: integer);\r\nbegin\r\n  FEncoder^.minQuantizerAlpha := AMinQ;\r\nend;\r\n\r\nprocedure TEncoder.SetMaxQuantizerAlpha(AMQ: integer);\r\nbegin\r\n  FEncoder^.maxQuantizerAlpha := AMQ;\r\nend;\r\n\r\nprocedure TEncoder.SetCodecChoice(ACC: avifCodecChoice);\r\nbegin\r\n  FEncoder^.codecChoice := ACC;\r\nend;\r\n\r\nfunction TEncoder.GetCodecChoice: avifCodecChoice;\r\nbegin\r\n  result := FEncoder^.codecChoice;\r\nend;\r\n\r\nprocedure TEncoder.SetTimescale(aValue: UInt64);\r\nbegin\r\n  FEncoder^.timescale:=aValue;\r\nend;\r\n\r\nfunction TEncoder.GetTimescale: UInt64;\r\nbegin\r\n  result := FEncoder^.timescale;\r\nend;\r\n\r\nfunction TEncoder.GetMaxThreads: integer;\r\nbegin\r\n  result:= FEncoder^.maxThreads;\r\nend;\r\n\r\nprocedure TEncoder.SetQuality(AQuality: integer);\r\nbegin\r\n  raise EAvifException.Create('Quality not available in this version of libavif');\r\nend;\r\n\r\nfunction TEncoder.GetQuality: integer;\r\nbegin\r\n  result := 0;\r\n  raise EAvifException.Create('Quality not available in this version of libavif');\r\nend;\r\n\r\nprocedure TEncoder.SetQualityAlpha(AQuality: integer);\r\nbegin\r\n  raise EAvifException.Create('Quality not available in this version of libavif');\r\nend;\r\n\r\nfunction TEncoder.GetQualityAlpha: integer;\r\nbegin\r\n  result := 0;\r\n  raise EAvifException.Create('Quality not available in this version of libavif');\r\nend;\r\n\r\nfunction TEncoder.HasQuality: boolean;\r\nbegin\r\n  result := false;\r\nend;\r\n\r\nfunction TEncoder.GetMinQuantizer: integer;\r\nbegin\r\n  result:=FEncoder^.minQuantizer;\r\nend;\r\n\r\nfunction TEncoder.GetMaxQuantizer: integer;\r\nbegin\r\n  result:=FEncoder^.maxQuantizer;\r\nend;\r\n\r\nfunction TEncoder.GetMinQuantizerAlpha: integer;\r\nbegin\r\n  result:=FEncoder^.minQuantizerAlpha;\r\nend;\r\n\r\nfunction TEncoder.GetMaxQuantizerAlpha: integer;\r\nbegin\r\n  result:=FEncoder^.maxQuantizerAlpha;\r\nend;\r\n\r\nconstructor TAvifImage.Create(aImagePtr: Pointer);\r\nbegin\r\n  Init(aImagePtr);\r\nend;\r\n\r\nprocedure TAvifImage.Init(aImagePtr: Pointer);\r\nbegin\r\n  FImage := T(aImagePtr);\r\nend;\r\n\r\nfunction TAvifImage.GetTransformFlags: longword;\r\nbegin\r\n  Result := FImage^.transformFlags;\r\nend;\r\n\r\nfunction TAvifImage.GetImirMode: uint8;\r\nbegin\r\n  Result := FImage^.imir.mode;\r\nend;\r\n\r\nprocedure TAvifImage.SetColorPrimaries(AColorPrimaries: avifColorPrimaries);\r\nbegin\r\n  FImage^.colorPrimaries := AColorPrimaries;\r\nend;\r\n\r\nprocedure TAvifImage.SetTransferCharacteristics(ATC: avifTransferCharacteristics);\r\nbegin\r\n  FImage^.transferCharacteristics := ATC;\r\nend;\r\n\r\nprocedure TAvifImage.SetMatrixCoefficients(AMC: avifMatrixCoefficients);\r\nbegin\r\n  FImage^.matrixCoefficients := AMC;\r\nend;\r\n\r\nprocedure TAvifImage.SetYuvRange(AYR: avifRange);\r\nbegin\r\n  FImage^.yuvRange := AYR;\r\nend;\r\n\r\nprocedure TAvifImage.SetTransformFlags(ATF: avifTransformFlags);\r\nbegin\r\n  FImage^.transformFlags := ATF;\r\nend;\r\n\r\nprocedure TAvifImage.SetImirMode(AIM: uint8);\r\nbegin\r\n  FImage^.imir.mode := AIM;\r\nend;\r\n\r\n//aBuffer  12 first bytes of file.\r\nfunction AvifValidateHeaderSignature(aBuffer: Pointer): boolean;\r\nbegin\r\n  if CompareMem(aBuffer + 4, pansichar('ftyp'), 4) then\r\n  begin\r\n    if CompareMem(aBuffer + 8, pansichar('avif'), 4) then\r\n      exit(True);\r\n    if CompareMem(aBuffer + 8, pansichar('avis'), 4) then\r\n      exit(True);\r\n    if CompareMem(aBuffer + 8, pansichar('mif1'), 4) then\r\n      exit(True);\r\n  end;\r\n  Result := False;\r\nend;\r\n\r\nfunction avifIOStreamReaderRead(io: PavifIO; readFlags: uint32; offset: uint64; size: size_type; output: PavifROData): avifResult; cdecl;\r\nvar\r\n  reader: PavifIOStreamReader;\r\n  availableSize: uint64;\r\n  bytesRead: size_type;\r\nbegin\r\n  if readFlags <> 0 then\r\n    exit(AVIF_RESULT_IO_ERROR);  // Unsupported readFlags\r\n  reader := PavifIOStreamReader(io);\r\n  // Sanitize/clamp incoming request\r\n  if offset > reader^.io.sizeHint then\r\n    exit(AVIF_RESULT_IO_ERROR);  // The offset is past the EOF.\r\n  availableSize := reader^.io.sizeHint - offset;\r\n  if size > availableSize then\r\n    size := availableSize;\r\n  if size > 0 then\r\n  begin\r\n    if (offset > MaxLongInt) then\r\n      exit(AVIF_RESULT_IO_ERROR);\r\n    if reader^.buffer.size < size then\r\n      avifRWDataRealloc(@reader^.buffer, size);\r\n    if (reader^.Stream.Seek(offset, soFromBeginning) <> offset) then\r\n      exit(AVIF_RESULT_IO_ERROR);\r\n    bytesRead := reader^.Stream.Read(reader^.buffer.Data^, size);\r\n    if size <> bytesRead then\r\n      size := bytesRead;\r\n  end;\r\n  output^.Data := reader^.buffer.Data;\r\n  output^.size := size;\r\n  exit(AVIF_RESULT_OK);\r\nend;\r\n\r\nprocedure avifIOStreamReaderDestroy(io: PavifIO); cdecl;\r\nvar\r\n  reader: PavifIOStreamReader;\r\nbegin\r\n  reader := PavifIOStreamReader(io);\r\n  avifRWDataFree(@reader^.buffer);\r\n  avifFree(io);\r\nend;\r\n\r\nfunction avifIOCreateStreamReader(aStream: TStream): PavifIO; cdecl;\r\nvar\r\n  reader: PavifIOStreamReader;\r\n  filesize: longint;\r\nbegin\r\n  filesize := aStream.Size;\r\n  //aStream.Position:=0;\r\n  reader := avifAlloc(sizeof(avifIOStreamReader));\r\n  FillChar(reader^, sizeof(avifIOStreamReader), 0);\r\n  reader^.Stream := aStream;\r\n  reader^.io.Destroy := @avifIOStreamReaderDestroy;\r\n  reader^.io.Read := @avifIOStreamReaderRead;\r\n  reader^.io.sizeHint := fileSize;\r\n  reader^.io.persistent := AVIF_FALSE;\r\n  avifRWDataRealloc(@reader^.buffer, 1024);\r\n  exit(PavifIO(reader));\r\nend;\r\n\r\nfunction avifDecoderSetIOStream(decoderWrap: TDecoderBase; aStream: TStream): avifResult; cdecl;\r\nvar\r\n  io: PavifIO;\r\nbegin\r\n  io := avifIOCreateStreamReader(aStream);\r\n  if io = nil then\r\n    exit(AVIF_RESULT_IO_ERROR);\r\n  avifDecoderSetIO(decoderWrap.GetDecoder, io);\r\n  if decoderWrap.GetIo = nil then\r\n    raise EAvifException.Create('Failed to set input. Could be due to incompatible version of AVIF library.');\r\n  exit(AVIF_RESULT_OK);\r\nend;\r\n\r\nprocedure AvifImageToBGRABitmap(aAvifImage:PAvifImage; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  res: avifResult;\r\n  imageWrap: TAvifImageBase;\r\n  rgbImageWrap: TAvifRgbImageBase;\r\n  sourceLineOrder: TRawImageLineOrder;\r\nbegin\r\n  imageWrap:=nil;\r\n  rgbImageWrap:=nil;\r\n  try\r\n    rgbImageWrap:=TAvifRgbImageFactory();\r\n    imageWrap:=TAvifImageFactory(aAvifImage);\r\n    avifRGBImageSetDefaults(rgbImageWrap.GetRgbImage, aAvifImage);\r\n    //aBitmap.LineOrder:=riloTopToBottom;\r\n    aBitmap.SetSize(rgbImageWrap.GetWidth, rgbImageWrap.GetHeight);\r\n    rgbImageWrap.SetPixels(PUint8(aBitmap.databyte));\r\n    rgbImageWrap.SetDepth(8);\r\n    {$push}{$warn 6018 off}//unreachable code\r\n    if TBGRAPixel_RGBAOrder then\r\n      rgbImageWrap.SetFormat(AVIF_RGB_FORMAT_RGBA)\r\n    else\r\n      rgbImageWrap.SetFormat(AVIF_RGB_FORMAT_BGRA);\r\n    {$pop}\r\n    rgbImageWrap.SetRowBytes(rgbImageWrap.GetWidth * 4);\r\n    //if aBitmap.LineOrder<>riloTopToBottom then\r\n    //begin\r\n    //  decoder^.image^.transformFlags:=decoder^.image^.transformFlags + Uint32(AVIF_TRANSFORM_IMIR);\r\n    //  decoder^.image^.imir.mode:=0;\r\n    //end;\r\n    //decoder^.image^.imir.axis:=0; //vertical mirror\r\n    res := avifImageYUVToRGB(aAvifImage, rgbImageWrap.GetRgbImage);\r\n\r\n    if res <> AVIF_RESULT_OK then\r\n      raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n    if ( (imageWrap.GetTransformFlags and longword(AVIF_TRANSFORM_IMIR)) <> 0) and\r\n       (imageWrap.GetImirMode = 0) then\r\n      sourceLineOrder := riloBottomToTop\r\n    else sourceLineOrder := riloTopToBottom;\r\n    if aBitmap.LineOrder <> sourceLineOrder then\r\n      aBitmap.VerticalFlip;\r\n    aBitmap.InvalidateBitmap;\r\n  finally\r\n     imageWrap.Free;\r\n     rgbImageWrap.Free;\r\n  end;\r\nend;\r\n\r\nprocedure AvifDecode(decoderWrap: TDecoderBase; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  res: avifResult;\r\n  image:PAvifImage;\r\nbegin\r\n  res := avifDecoderParse(decoderWrap.GetDecoder);\r\n  if res <> AVIF_RESULT_OK then\r\n    raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n  //  Memo1.Lines.Add(Format('Parsed AVIF: %ux%u (%ubpc)', [decoder^.image^.Width, decoder^.image^.Height, decoder^.image^.depth]));\r\n  res := avifDecoderNextImage(decoderWrap.GetDecoder);\r\n  if res = AVIF_RESULT_OK then\r\n  begin\r\n    image := decoderWrap.GetImage;\r\n    if image = nil then\r\n      raise EAvifException.Create('No image data recieved from AVIF library.');\r\n    AvifImageToBGRABitmap(image,aBitmap);\r\n   end\r\n  else\r\n    raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\nend;\r\n\r\nprocedure AvifLoadFromStream(AStream: TStream; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  decoder: PavifDecoder;\r\n  res: avifResult;\r\n  decoderWrap: TDecoderBase;\r\nbegin\r\n  decoderWrap:= nil;\r\n  decoder := TAvifReader.CreateDecoder;\r\n  try\r\n    decoderWrap:=TDecoderFactory(decoder);\r\n    // Override decoder defaults here (codecChoice, requestedSource, ignoreExif, ignoreXMP, etc)\r\n    //decoder^.maxThreads := 1;\r\n    // decoder^.codecChoice := AVIF_CODEC_CHOICE_AUTO;\r\n    // decoder^.imageSizeLimit := AVIF_DEFAULT_IMAGE_SIZE_LIMIT;\r\n    // decoder^.strictFlags := UInt32( AVIF_STRICT_ENABLED);\r\n    // decoder^.allowProgressive := AVIF_FALSE;\r\n    res := avifDecoderSetIOStream(decoderWrap, aStream);\r\n    if res = AVIF_RESULT_OK then\r\n      AvifDecode(decoderWrap, aBitmap)\r\n    else\r\n      raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n  finally\r\n    decoderWrap.Free;\r\n    TAvifReader.DestroyDecoder(decoder);\r\n  end;\r\nend;\r\n\r\nprocedure AvifLoadFromFile(const AFilename: string; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  Stream: TFileStream;\r\nbegin\r\n  Stream := TFileStream.Create(AFileName, fmOpenRead);\r\n  try\r\n    AvifLoadFromStream(Stream,aBitmap);\r\n  finally\r\n    Stream.Free;\r\n  end;\r\nend;\r\n\r\nprocedure AvifLoadFromFileNative(const AFilename: string; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  decoder: PavifDecoder;\r\n  res: avifResult;\r\n  decoderWrap: TDecoderBase;\r\nbegin\r\n  decoderWrap := nil;\r\n  decoder := TAvifReader.CreateDecoder;\r\n  try\r\n    decoderWrap:=TDecoderFactory(decoder);\r\n    // Override decoder defaults here (codecChoice, requestedSource, ignoreExif, ignoreXMP, etc)\r\n    //decoder^.maxThreads := 1;\r\n    // decoder^.codecChoice := AVIF_CODEC_CHOICE_AUTO;\r\n    // decoder^.imageSizeLimit := AVIF_DEFAULT_IMAGE_SIZE_LIMIT;\r\n    // decoder^.strictFlags := UInt32( AVIF_STRICT_ENABLED);\r\n    // decoder^.allowProgressive := AVIF_FALSE;\r\n    res := avifDecoderSetIOFile(decoder, pansichar(AFilename));\r\n    if res = AVIF_RESULT_OK then\r\n      AvifDecode(decoderWrap, aBitmap)\r\n    else\r\n      raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n  finally\r\n    decoderWrap.Free;\r\n    TAvifReader.DestroyDecoder(decoder);\r\n  end;\r\nend;\r\n\r\nprocedure AvifLoadFromMemory(AData: Pointer; ASize: cardinal; aBitmap: TBGRACustomBitmap);\r\nvar\r\n  decoder: PavifDecoder;\r\n  res: avifResult;\r\n  decoderWrap: TDecoderBase;\r\nbegin\r\n  decoderWrap := nil;\r\n  decoder := TAvifReader.CreateDecoder;\r\n  try\r\n    decoderWrap:= TDecoderFactory(decoder);\r\n    // Override decoder defaults here (codecChoice, requestedSource, ignoreExif, ignoreXMP, etc)\r\n    //decoder^.maxThreads := 1;\r\n    // decoder^.codecChoice := AVIF_CODEC_CHOICE_AUTO;\r\n    // decoder^.imageSizeLimit := AVIF_DEFAULT_IMAGE_SIZE_LIMIT;\r\n    // decoder^.strictFlags := UInt32( AVIF_STRICT_ENABLED);\r\n    // decoder^.allowProgressive := AVIF_FALSE;\r\n    res := avifDecoderSetIOMemory(decoder, AData, ASize);\r\n    if res = AVIF_RESULT_OK then\r\n      AvifDecode(decoderWrap, aBitmap)\r\n    else\r\n      raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n  finally\r\n    decoderWrap.Free;\r\n    TAvifReader.DestroyDecoder(decoder);\r\n  end;\r\nend;\r\n\r\nfunction Interpolate(x: double; x1, x2: double; v1, v2: double): double;\r\nbegin\r\n  Result := v1 + (((v2 - v1) / (x2 - x1)) * (x - x1));\r\nend;\r\n\r\n\r\nfunction clamp(aValue:integer;aMin:integer;aMax:integer):integer;\r\nbegin\r\n  result:=aValue;\r\n  if result<aMin then\r\n    result:=aMin;\r\n  if result>aMax then\r\n    result:=aMax;\r\nend;\r\n\r\n//https://github.com/AOMediaCodec/libavif/issues/545\r\n//https://gitmemory.com/issue/AOMediaCodec/libavif/545/802934788\r\n// aQuality0to100   0 worst quality, 100 best quality ( lossless ).\r\n\r\nfunction AvifSaveToFile(aBitmap: TBGRACustomBitmap; const AFilename: string;\r\n  aQuality0to100: integer; aSpeed0to10: integer; aPixelFormat: avifPixelFormat;\r\n  aIgnoreAlpha: boolean): NativeUInt;\r\nvar\r\n  writer: TAvifWriter;\r\nbegin\r\n  Result := 0;\r\n  writer := TAvifWriter.Create( aQuality0to100, aSpeed0to10, aPixelFormat, aIgnoreAlpha);\r\n  try\r\n    writer.OnlyOneImage := True;\r\n    writer.AddImage(aBitmap, 0);\r\n    Result := writer.SaveToFile(AFileName);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n\r\nfunction AvifSaveToStream(aBitmap: TBGRACustomBitmap; AStream: TStream;\r\n  aQuality0to100: integer; aSpeed0to10: integer; aPixelFormat: avifPixelFormat;\r\n  aIgnoreAlpha: boolean): NativeUInt;\r\nvar\r\n  writer: TAvifWriter;\r\nbegin\r\n  Result := 0;\r\n  writer := TAvifWriter.Create(aQuality0to100, aSpeed0to10, aPixelFormat, aIgnoreAlpha);\r\n  try\r\n    writer.OnlyOneImage := True;\r\n    writer.AddImage(aBitmap, 0);\r\n    Result := writer.SaveToStream(AStream);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n//returns the size of the resulting bitmap.\r\nfunction AvifSaveToMemory(aBitmap: TBGRACustomBitmap; AData: Pointer; ASize: cardinal; aQuality0to100: integer;aSpeed0to10:integer;aPixelFormat:avifPixelFormat;aIgnoreAlpha:boolean): NativeUInt;\r\nvar\r\n  writer:TAvifWriter;\r\nbegin\r\n  result:=0;\r\n  writer:=TAvifWriter.Create(aQuality0to100, aSpeed0to10, aPixelFormat, aIgnoreAlpha);\r\n  try\r\n    writer.OnlyOneImage := True;\r\n    writer.AddImage(aBitmap,0);\r\n    result:=writer.SaveToMemory(AData, ASize);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n\r\n\r\nfunction AvifSaveToStream(ABitmap: TBGRACustomBitmap; AStream: TStream;\r\n  AIgnoreAlpha: boolean; AQuality0to100: integer; AQualityAlpha0to100: integer;\r\n  APixelFormat: avifPixelFormat; ACodec: avifCodecChoice; ASpeed0to10: integer\r\n  ): nativeuint;\r\nvar\r\n  writer: TAvifWriter;\r\nbegin\r\n  Result := 0;\r\n  writer := TAvifWriter.Create( AQuality0to100, ASpeed0to10, APixelFormat, AIgnoreAlpha);\r\n  try\r\n    writer.Encoder := ACodec;\r\n    writer.OnlyOneImage := True;\r\n    writer.SetQuality(AQuality0to100);\r\n    writer.SetQualityAlpha(AQualityAlpha0to100);\r\n    writer.AddImage(aBitmap, 0);\r\n    Result := writer.SaveToStream(AStream);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n\r\nfunction AvifSaveToFile(ABitmap: TBGRACustomBitmap; const AFilename: string;\r\n  AIgnoreAlpha: boolean; AQuality0to100: integer; AQualityAlpha0to100: integer;\r\n  APixelFormat: avifPixelFormat; ACodec: avifCodecChoice; ASpeed0to10: integer\r\n  ): nativeuint;\r\nvar\r\n  writer: TAvifWriter;\r\nbegin\r\n  Result := 0;\r\n  writer := TAvifWriter.Create( AQuality0to100, ASpeed0to10, APixelFormat, AIgnoreAlpha);\r\n  try\r\n    writer.Encoder := ACodec;\r\n    writer.MaxThreads := 16;\r\n    writer.OnlyOneImage := True;\r\n    writer.SetQuality(AQuality0to100);\r\n    writer.SetQualityAlpha(AQualityAlpha0to100);\r\n    writer.AddImage(ABitmap, 0);\r\n    Result := writer.SaveToFile(AFileName);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n\r\nfunction AvifSaveToMemory(ABitmap: TBGRACustomBitmap; AData: Pointer;\r\n  ASize: nativeuint; AIgnoreAlpha: boolean; AQuality0to100: integer;\r\n  AQualityAlpha0to100: integer; APixelFormat: avifPixelFormat;\r\n  ACodec: avifCodecChoice; ASpeed0to10: integer): nativeuint;\r\nvar\r\n  writer: TAvifWriter;\r\nbegin\r\n  Result := 0;\r\n  writer := TAvifWriter.Create( AQuality0to100, ASpeed0to10, APixelFormat, AIgnoreAlpha);\r\n  try\r\n    writer.Encoder := ACodec;\r\n    writer.OnlyOneImage := True;\r\n    writer.SetQuality(AQuality0to100);\r\n    writer.SetQualityAlpha(AQualityAlpha0to100);\r\n    writer.AddImage(ABitmap, 0);\r\n    Result := writer.SaveToMemory(AData,ASize);\r\n  finally\r\n    writer.Free;\r\n  end;\r\nend;\r\n\r\n{ TAvifReader }\r\n\r\nconstructor TAvifReader.Create(AFileName: string);\r\nbegin\r\n  Init(TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite), true);\r\nend;\r\n\r\nconstructor TAvifReader.Create(AStream: TStream; AStreamOwned: boolean);\r\nbegin\r\n  Init(AStream, AStreamOwned);\r\nend;\r\n\r\nfunction TAvifReader.GetImageCount: uint32;\r\nbegin\r\n  result := TDecoderBase(FDecoderWrap).GetImageCount;\r\nend;\r\n\r\nfunction TAvifReader.GetImageIndex: integer;\r\nbegin\r\n  result := TDecoderBase(FDecoderWrap).GetImageIndex;\r\nend;\r\n\r\nfunction TAvifReader.GetRepetitionCount: integer;\r\nbegin\r\n  result := TDecoderBase(FDecoderWrap).GetRepetitionCount;\r\nend;\r\n\r\nfunction TAvifReader.GetSequenceDuration: double;\r\nbegin\r\n  result := TDecoderBase(FDecoderWrap).GetSequenceDuration;\r\nend;\r\n\r\nfunction TAvifReader.GetTimescale: uint64;\r\nbegin\r\n  result := TDecoderBase(FDecoderWrap).GetTimescale;\r\nend;\r\n\r\nprocedure TAvifReader.Init(AStream: TStream; AStreamOwned: boolean);\r\nvar\r\n  res: avifResult;\r\n  lDecoderWrap : TDecoderBase;\r\nbegin\r\n  FStream := AStream;\r\n  FStreamOwned:= AStreamOwned;\r\n  FDecoder := CreateDecoder;\r\n  lDecoderWrap := TDecoderFactory(FDecoder);\r\n  FDecoderWrap := lDecoderWrap;\r\n  res := avifDecoderSetIOStream(lDecoderWrap, AStream);\r\n  if res = AVIF_RESULT_OK then\r\n    res := avifDecoderParse(lDecoderWrap.GetDecoder);\r\n  if res <> AVIF_RESULT_OK then\r\n  begin\r\n    Close;\r\n    raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\n  end;\r\nend;\r\n\r\nprocedure TAvifReader.Close;\r\nbegin\r\n  DestroyDecoder(FDecoder);\r\n  FreeAndNil(FDecoderWrap);\r\n  if FStreamOwned then\r\n    FreeAndNil(FStream)\r\n  else\r\n    FStream := nil;\r\nend;\r\n\r\ndestructor TAvifReader.Destroy;\r\nbegin\r\n  Close;\r\n  inherited Destroy;\r\nend;\r\n\r\nclass function TAvifReader.CreateDecoder: PavifDecoder;\r\nbegin\r\n  result := nil;\r\n  if not LibAvifLoad then\r\n    raise EAvifException.Create('Cannot load libavif');\r\n  try\r\n    result := avifDecoderCreate();\r\n  finally\r\n    if not Assigned(result) then\r\n      LibAvifUnload;\r\n  end;\r\n  if not Assigned(result) then\r\n    raise EOutOfMemory.Create('Memory allocation failure');\r\nend;\r\n\r\nclass procedure TAvifReader.DestroyDecoder(var ADecoder: PavifDecoder);\r\nbegin\r\n  if not Assigned(ADecoder) then exit;\r\n  avifDecoderDestroy(ADecoder);\r\n  ADecoder := nil;\r\n  LibAvifUnload;\r\nend;\r\n\r\nfunction TAvifReader.GetNextImage(AOutBitmap: TBGRACustomBitmap): boolean;\r\nvar\r\n  image: PAvifImage;\r\n  res: avifResult;\r\nbegin\r\n  Result := False;\r\n  FImageDurationSeconds := 0;\r\n  FImageDurationTimescales := 0;\r\n  if (AOutBitmap = nil) or (ImageIndex >= (ImageCount - 1)) then\r\n    Exit;\r\n  res := avifDecoderNextImage(TDecoderBase(FDecoderWrap).GetDecoder);\r\n  if res = AVIF_RESULT_OK then\r\n  begin\r\n    image := TDecoderBase(FDecoderWrap).GetImage;\r\n    if image = nil then\r\n      raise EAvifException.Create('No image data recieved from AVIF library.');\r\n    AvifImageToBGRABitmap(image, aOutBitmap);\r\n    FImageDurationSeconds := TDecoderBase(FDecoderWrap).GetImageDurationSeconds;\r\n    FImageDurationTimescales := TDecoderBase(FDecoderWrap).GetImageDurationTimescales;\r\n    if ImageIndex = 0 then\r\n    begin\r\n      FWidth := aOutBitmap.Width;\r\n      FHeight := aOutBitmap.Height;\r\n    end;\r\n    Result := True;\r\n  end\r\n  else\r\n    raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\nend;\r\n\r\nfunction TAvifReader.GetNthImage(AOutBitmap: TBGRACustomBitmap;\r\n  AImageIndex: uint32): boolean;\r\nvar\r\n  image: PAvifImage;\r\n  res: avifResult;\r\nbegin\r\n  Result := False;\r\n  FImageDurationSeconds := 0;\r\n  FImageDurationTimescales := 0;\r\n  if (AOutBitmap = nil) or (aImageIndex >= ImageCount) then\r\n    Exit;\r\n  res := avifDecoderNthImage(TDecoderBase(FDecoderWrap).GetDecoder, aImageIndex);\r\n  if res = AVIF_RESULT_OK then\r\n  begin\r\n    image := TDecoderBase(FDecoderWrap).GetImage;\r\n    if image = nil then\r\n      raise EAvifException.Create('No image data recieved from AVIF library.');\r\n    AvifImageToBGRABitmap(image, aOutBitmap);\r\n    FImageDurationSeconds := TDecoderBase(FDecoderWrap).GetImageDurationSeconds;\r\n    FImageDurationTimescales := TDecoderBase(FDecoderWrap).GetImageDurationTimescales;\r\n    if ImageIndex = 0 then\r\n    begin\r\n      FWidth := aOutBitmap.Width;\r\n      FHeight := aOutBitmap.Height;\r\n    end;\r\n    Result := True;\r\n  end\r\n  else\r\n    raise EAvifException.Create('Avif Error: ' + avifResultToString(res));\r\nend;\r\n\r\nprocedure TAvifReader.SetDecoder(ACodec: avifCodecChoice);\r\nbegin\r\n  if Assigned(FDecoderWrap) then\r\n    TDecoderBase(FDecoderWrap).SetCodecChoice(ACodec);\r\nend;\r\n\r\nfunction TAvifReader.GetDecoder: avifCodecChoice;\r\nbegin\r\n  if Assigned(FDecoderWrap) then\r\n    result := TDecoderBase(FDecoderWrap).GetCodecChoice\r\n  else\r\n    result := AVIF_CODEC_CHOICE_AUTO;\r\nend;\r\n\r\n{ TAvifWriter }\r\n\r\nconstructor TAvifWriter.Create(AQuality0to100: integer; ASpeed0to10: integer;\r\n  APixelFormat: avifPixelFormat; AIgnoreAlpha: boolean);\r\nvar\r\n  alpha_quantizer, min_quantizer, max_quantizer: integer;\r\n  lEncoderWrap: TEncoderBase;\r\nconst\r\n  AVIF_BGRA_LOSSLESS_QUALITY = 100;\r\nbegin\r\n  FAvifOutput := AVIF_DATA_EMPTY;\r\n  FEncoder := CreateEncoder;\r\n  if FEncoder = nil then\r\n    raise EAvifException.Create('Avif Error: creating encoder');\r\n  FEncoderWrap := TEncoderFactory(FEncoder);\r\n  lEncoderWrap := TEncoderBase(FEncoderWrap);\r\n  FPixelFormat := APixelFormat;\r\n  IgnoreAlpha := AIgnoreAlpha;\r\n\r\n  // specifying max quality is a shorthand for lossless quality\r\n  if AQuality0to100 = AVIF_BGRA_LOSSLESS_QUALITY then\r\n    Lossless := true\r\n  else\r\n  begin\r\n    Quality := AQuality0to100;\r\n    QualityAlpha := AQuality0to100 + AVIF_BGRA_DEFAULT_QUALITY_ALPHA_DELTA;\r\n  end;\r\n\r\n  Timescale := AVIF_BGRA_DEFAULT_TIMESCALE;\r\n  MaxThreads := AVIF_BGRA_DEFAULT_MAX_THREADS;\r\n  Speed := ASpeed0to10;\r\n  Encoder := AVIF_BGRA_CODEC_CHOICE_AUTO;\r\n\r\n  // * tileRowsLog2\r\n  // * tileColsLog2\r\n  // * keyframeInterval\r\nend;\r\n\r\nprocedure TAvifWriter.Close;\r\nbegin\r\n  EncoderFinish;\r\nend;\r\n\r\nfunction TAvifWriter.GetLossless: boolean;\r\nbegin\r\n  result := FLossless;\r\nend;\r\n\r\nprocedure TAvifWriter.SetLossless(AValue: boolean);\r\nbegin\r\n  FLossless := AValue;\r\n  if AValue then\r\n  begin\r\n    // lossless quality has an effect on quality\r\n    // but also indirectly on pixel format and encoder\r\n    Quality := AVIF_BGRA_LOSSLESS_QUALITY;\r\n    QualityAlpha := AVIF_BGRA_LOSSLESS_QUALITY;\r\n  end;\r\nend;\r\n\r\nprocedure TAvifWriter.EncoderFinish;\r\nvar\r\n  finishResult: avifResult;\r\nbegin\r\n  if Assigned(FEncoder) then\r\n  begin\r\n    try\r\n      if FImagesCount > 0 then\r\n      begin\r\n        finishResult := avifEncoderFinish(FEncoder, @FAvifOutput);\r\n        if finishResult <> AVIF_RESULT_OK then\r\n          raise EAvifException.Create('Failed to finish encode: ' + avifResultToString(finishResult));\r\n      end;\r\n    finally\r\n      DestroyEncoder(FEncoder);\r\n      FreeAndNil(FEncoderWrap);\r\n    end;\r\n  end;\r\nend;\r\n\r\nprocedure TAvifWriter.SetMaxThreads(AMT: integer);\r\nbegin\r\n  if Assigned(FEncoderWrap) then\r\n    TEncoderBase(FEncoderWrap).SetMaxThreads(AMT);\r\nend;\r\n\r\n\r\nprocedure TAvifWriter.SetIgnoreAlpha(AValue: boolean);\r\nbegin\r\n  FIgnoreAlpha := AValue;\r\nend;\r\n\r\nfunction TAvifWriter.GetMaxThreads: integer;\r\nvar\r\n  lEncoderWrap:TEncoderBase;\r\nbegin\r\n  if Assigned(FEncoderWrap) then\r\n    result:= TEncoderBase(FEncoderWrap).GetMaxThreads\r\n  else\r\n    result := AVIF_BGRA_DEFAULT_MAX_THREADS;\r\nend;\r\n\r\ndestructor TAvifWriter.Destroy;\r\nbegin\r\n  try\r\n    EncoderFinish;\r\n  finally\r\n    if LibAvifLoaded then\r\n      avifRWDataFree(@FAvifOutput);\r\n  end;\r\n  inherited Destroy;\r\nend;\r\n\r\nclass function TAvifWriter.CreateEncoder: PAvifEncoder;\r\nbegin\r\n  result := nil;\r\n  if not LibAvifLoad then\r\n    raise EAvifException.Create('Cannot load libavif');\r\n  try\r\n    result := avifEncoderCreate();\r\n  finally\r\n    if not Assigned(result) then\r\n      LibAvifUnload;\r\n  end;\r\n  if not Assigned(result) then\r\n    raise EOutOfMemory.Create('Memory allocation failure');\r\nend;\r\n\r\nclass procedure TAvifWriter.DestroyEncoder(var AEncoder: PAvifEncoder);\r\nbegin\r\n  if not Assigned(AEncoder) then exit;\r\n  avifEncoderDestroy(AEncoder);\r\n  AEncoder := nil;\r\n  LibAvifUnload;\r\nend;\r\n\r\nprocedure TAvifWriter.AddImage(ABitmap: TBGRACustomBitmap; ADurationMs: cardinal\r\n  );\r\nvar\r\n  image: PavifImage;\r\n  imageWrap: TAvifImageBase;\r\n  rgbImageWrap: TAvifRgbImageBase;\r\n  convertResult, addImageResult: avifResult;\r\n  durationTimescales: uint64;\r\n  imageFlags: uint32;\r\nbegin\r\n  if (FImagesCount > 0) and FOnlyOneImage then\r\n    raise EAvifException.Create('Only one image is allowed. ');\r\n  rgbImageWrap := nil;\r\n  imageWrap := nil;\r\n  try\r\n    ApplyQuality;\r\n    if Lossless then\r\n      image := avifImageCreate(ABitmap.Width, ABitmap.Height, 8, AVIF_PIXEL_FORMAT_YUV444)\r\n    else\r\n      image := avifImageCreate(ABitmap.Width, ABitmap.Height, 8, FPixelFormat{AVIF_PIXEL_FORMAT_YUV420});\r\n    imageWrap := TAvifImageFactory(image);\r\n    // these values dictate what goes into the final AVIF\r\n    // Configure image here: (see avif/avif.h)\r\n    // * colorPrimaries\r\n    // * transferCharacteristics\r\n    // * matrixCoefficients\r\n    // * avifImageSetProfileICC()\r\n    // * avifImageSetMetadataExif()\r\n    // * avifImageSetMetadataXMP()\r\n    // * yuvRange\r\n    // * alphaRange\r\n    // * alphaPremultiplied\r\n    // * transforms (transformFlags, pasp, clap, irot, imir)\r\n    imageWrap.SetColorPrimaries(AVIF_COLOR_PRIMARIES_BT709);\r\n    imageWrap.SetTransferCharacteristics(AVIF_TRANSFER_CHARACTERISTICS_SRGB);\r\n    imageWrap.SetMatrixCoefficients(AVIF_MATRIX_COEFFICIENTS_BT601);\r\n\r\n    // Override RGB(A)->YUV(A) defaults here: depth, format, chromaUpsampling, ignoreAlpha, alphaPremultiplied, libYUVUsage, etc\r\n    // Alternative: set rgb.pixels and rgb.rowBytes yourself, which should match your chosen rgb.format\r\n    // Be sure to use uint16_t* instead of uint8_t* for rgb.pixels/rgb.rowBytes if (rgb.depth > 8)\r\n    rgbImageWrap := TAvifRgbImageFactory();\r\n    // If you have RGB(A) data you want to encode, use this path\r\n    avifRGBImageSetDefaults(rgbImageWrap.GetRgbImage, image);\r\n    rgbImageWrap.SetWidth(ABitmap.Width);\r\n    rgbImageWrap.SetHeight(ABitmap.Height);\r\n    {$push}{$warn 6018 off}//unreachable code\r\n    if TBGRAPixel_RGBAOrder then\r\n      rgbImageWrap.SetFormat(AVIF_RGB_FORMAT_RGBA)\r\n    else\r\n      rgbImageWrap.SetFormat(AVIF_RGB_FORMAT_BGRA);\r\n    {$pop}\r\n    if FIgnoreAlpha then\r\n      rgbImageWrap.SetIgnoreAlpha(AVIF_TRUE)\r\n    else\r\n      rgbImageWrap.SetIgnoreAlpha(AVIF_FALSE);\r\n    rgbImageWrap.SetPixels(ABitmap.DataByte);\r\n    rgbImageWrap.SetRowBytes(ABitmap.Width * 4);\r\n    if Lossless then\r\n    begin\r\n      // https://github.com/xiph/rav1e/issues/151\r\n      imageWrap.SetYuvRange(AVIF_RANGE_FULL); // avoid limited range\r\n      imageWrap.SetMatrixCoefficients(AVIF_MATRIX_COEFFICIENTS_IDENTITY); // this is key for lossless\r\n    end;\r\n    if aBitmap.LineOrder <> riloTopToBottom then   //vertical mirror.\r\n    begin\r\n      imageWrap.SetTransformFlags(imageWrap.GetTransformFlags + uint32(AVIF_TRANSFORM_IMIR));\r\n      imageWrap.SetImirMode(0);\r\n    end;\r\n    convertResult := avifImageRGBToYUV(image, rgbImageWrap.GetRgbImage);\r\n    if convertResult <> AVIF_RESULT_OK then\r\n      raise EAvifException.Create('Failed to convert to YUV(A): ' + avifResultToString(convertResult));\r\n\r\n    if Timescale <> 0 then\r\n      durationTimescales := Trunc(((ADurationMs / 1000) * Timescale) + 0.5)\r\n    else\r\n      durationTimescales := 1;\r\n    if durationTimescales < 1 then\r\n      durationTimescales := 1;\r\n\r\n    imageFlags := uint32(AVIF_ADD_IMAGE_FLAG_NONE);\r\n    if FOnlyOneImage then\r\n      imageFlags := uint32(AVIF_ADD_IMAGE_FLAG_SINGLE);\r\n    addImageResult := avifEncoderAddImage(FEncoder, image, durationTimescales, imageFlags);\r\n    if addImageResult <> AVIF_RESULT_OK then\r\n      raise EAvifException.Create('Failed to add image to encoder: ' + avifResultToString(addImageResult));\r\n    Inc(FImagesCount);\r\n  finally\r\n    if image <> nil then\r\n      avifImageDestroy(image);\r\n    imageWrap.Free;\r\n    rgbImageWrap.Free;\r\n  end;\r\nend;\r\n\r\nfunction TAvifWriter.SaveToFile(AFileName: string): NativeUInt;\r\nvar\r\n  lStream: TFileStream;\r\nbegin\r\n  Result := 0;\r\n  lStream := TFileStream.Create(AFileName, fmCreate or fmShareExclusive);\r\n  try\r\n    Result := SaveToStream(lStream);\r\n  finally\r\n    lSTream.Free;\r\n  end;\r\nend;\r\n\r\nfunction TAvifWriter.SaveToStream(AStream: TStream): NativeUInt;\r\nvar\r\n  p: pbyte;\r\n  remain, toWrite: longword;\r\nconst\r\n  CopySize = 65535;\r\nbegin\r\n  Result := GetOutputSize;\r\n  if FAvifOutput.Data <> nil then\r\n  begin\r\n    //AStream.WriteBuffer(avifOutput.Data^, avifOutput.size)\r\n    remain := FAvifOutput.size;\r\n    p := FAvifOutput.Data;\r\n    while remain > 0 do\r\n    begin\r\n      if remain > CopySize then\r\n        toWrite := CopySize\r\n      else\r\n        toWrite := remain;\r\n      aStream.WriteBuffer(p^, toWrite);\r\n      Inc(p, toWrite);\r\n      Dec(remain, toWrite);\r\n    end;\r\n  end;\r\nend;\r\n\r\n//returns the size of the resulting bitmap.\r\nfunction TAvifWriter.SaveToMemory(AData: Pointer; ASize: NativeUInt\r\n  ): NativeUInt;\r\nbegin\r\n  Result := GetOutputSize;\r\n  if FAvifOutput.Data <> nil then\r\n    Move(FAvifOutput.Data^, AData^, min(ASize, FAvifOutput.size));\r\nend;\r\n\r\nfunction TAvifWriter.GetOutputSize: NativeUInt;\r\nbegin\r\n  EncoderFinish;\r\n  Result := FAvifOutput.Size;\r\nend;\r\n\r\nprocedure TAvifWriter.SetQuality(AValue: integer);\r\nbegin\r\n  FQuality0to100 := clamp(AValue, AVIF_QUALITY_WORST, AVIF_QUALITY_BEST);\r\nend;\r\n\r\nprocedure TAvifWriter.SetQualityAlpha(AValue: integer);\r\nbegin\r\n  FQualityAlpha0to100 := clamp(AValue, AVIF_QUALITY_WORST, AVIF_QUALITY_BEST);\r\nend;\r\n\r\nprocedure TAvifWriter.SetEncoder(ACodec: avifCodecChoice);\r\nbegin\r\n  TEncoderBase(FEncoderWrap).SetCodecChoice(ACodec);\r\nend;\r\n\r\nfunction TAvifWriter.GetEncoder: avifCodecChoice;\r\nbegin\r\n  result := TEncoderBase(FEncoderWrap).GetCodecChoice;\r\nend;\r\n\r\nprocedure TAvifWriter.SetTimescale(ATimescale: uint64);\r\nbegin\r\n  if Assigned(FEncoderWrap) then\r\n    TEncoderBase(FEncoderWrap).SetTimescale(ATimescale);\r\nend;\r\n\r\nfunction TAvifWriter.GetTimescale: uint64;\r\nbegin\r\n  if Assigned(FEncoderWrap) then\r\n    result := TEncoderBase(FEncoderWrap).GetTimescale\r\n  else\r\n    result := AVIF_BGRA_DEFAULT_TIMESCALE;\r\nend;\r\n\r\nprocedure TAvifWriter.SetSpeed(ASpeed: integer);\r\nbegin\r\n  if ASpeed <> AVIF_SPEED_DEFAULT then\r\n    ASpeed := clamp(ASpeed, AVIF_SPEED_SLOWEST, AVIF_SPEED_FASTEST);\r\n\r\n  if Assigned(FEncoderWrap) then\r\n    TEncoderBase(FEncoderWrap).SetSpeed(ASpeed);\r\nend;\r\n\r\nfunction TAvifWriter.GetSpeed: integer;\r\nbegin\r\n  if Assigned(FEncoderWrap) then\r\n    result := TEncoderBase(FEncoderWrap).GetSpeed\r\n  else\r\n    result := AVIF_SPEED_DEFAULT;\r\nend;\r\n\r\nprocedure TAvifWriter.ApplyQuality;\r\n\r\n  procedure QualityToQuantizerMinMax(AQuality: integer; out AMinQuantizer, AMaxQuantizer: integer);\r\n  begin\r\n    AMaxQuantizer :=\r\n      Trunc(Interpolate(AQuality,\r\n                        AVIF_QUALITY_WORST, AVIF_QUALITY_BEST,\r\n                        AVIF_QUANTIZER_WORST_QUALITY, AVIF_QUANTIZER_BEST_QUALITY));\r\n    if AMaxQuantizer > 20 then\r\n      AMinQuantizer := AMaxQuantizer - 20\r\n    else\r\n      AMinQuantizer := 0;\r\n  end;\r\n\r\nvar minQ, maxQ: integer;\r\n  lEncoder : TEncoderBase;\r\n\r\nbegin\r\n  lEncoder := TEncoderBase(FEncoderWrap);\r\n\r\n  if Lossless and (Encoder = AVIF_CODEC_CHOICE_AUTO) then\r\n    Encoder := AVIF_CODEC_CHOICE_AOM;\r\n\r\n  if lEncoder.HasQuality then\r\n  begin\r\n    lEncoder.SetQuality(Quality);\r\n    lEncoder.SetQualityAlpha(QualityAlpha);\r\n  end\r\n  else\r\n  begin\r\n    QualityToQuantizerMinMax(Quality, minQ, maxQ);\r\n    lEncoder.SetMinQuantizer(minQ);\r\n    lEncoder.SetMaxQuantizer(maxQ);\r\n\r\n    QualityToQuantizerMinMax(QualityAlpha, minQ, maxQ);\r\n    lEncoder.SetMinQuantizerAlpha(minQ);\r\n    lEncoder.SetMaxQuantizerAlpha(maxQ);\r\n  end;\r\nend;\r\n\r\nend.\r\n"
  },
  {
    "path": "bgrabitmap/basiccolorspace.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  {* Possible channels in a bitmap using any RGBA colorspace }\n  TChannel = (cRed, cGreen, cBlue, cAlpha);\n  {** Combination of channels }\n  TChannels = set of TChannel;\n\nconst\n  {** Offsets of the different channels in a pixel }\n  TBGRAPixel_ChannelByteOffset : array[TChannel] of integer =\n  (TBGRAPixel_RedByteOffset, TBGRAPixel_GreenByteOffset, TBGRAPixel_BlueByteOffset, TBGRAPixel_AlphaByteOffset);\n\n{ Gamma conversion arrays. Should be used as readonly }\nvar\n  {* Equivalence for channel from TBGRAPixel to TExpandedPixel }\n  GammaExpansionTab:     packed array[0..255] of word;\n  {* Equivalence for channel from TBGRAPixel to TExpandedPixel (for value with offset 0.5) }\n  GammaExpansionTabHalf: packed array[0..254] of word;\n\n  {* Equivalence for channel from TExpandedPixel to TBGRAPixel }\n  GammaCompressionTab : packed array[0..65535] of byte;  //rounded value\n\n{* Sets the gamma value used for the sRGB colorspace }\nprocedure BGRASetGamma(AGamma: single = 1.7);\n{* Gets the gamma value used for the sRGB colorspace }\nfunction BGRAGetGamma: single;\n\ntype\n  {* Pointer to a TExpandedPixel }\n  PExpandedPixel = ^TExpandedPixel;\n  {* Stores a gamma expanded RGB color. Values range from 0 to 65535 and are linear. }\n  TExpandedPixel = packed record\n    red, green, blue, alpha: word;\n    class function New(const ARed,AGreen,ABlue,AAlpha:word): TExpandedPixel;overload;static;\n    class function New(const ARed,AGreen,ABlue:word): TExpandedPixel;overload;static;\n  end;\n  {** Array of TExpandedPixel to be used as a buffer }\n  TExpandedPixelBuffer = packed array of TExpandedPixel;\n  {** Allocate a buffer of TExpandedPixel }\n  procedure AllocateExpandedPixelBuffer(var ABuffer: TExpandedPixelBuffer; ASize: integer);\n\n  {** Converts a pixel from sRGB to gamma expanded RGB }\n  function GammaExpansion(c: TBGRAPixel): TExpandedPixel; inline;\n  {** Converts a pixel from gamma expanded RGB to sRGB }\n  function GammaCompression(const ec: TExpandedPixel): TBGRAPixel; inline; overload;\n  {** Converts a pixel from gamma expanded RGB to sRGB }\n  function GammaCompression(red,green,blue,alpha: word): TBGRAPixel; inline; overload;\n  {** Apply gamma compression with word values }\n  function GammaCompressionW(AExpanded: word): word;\n  {** Apply gamma expansion with word values }\n  function GammaExpansionW(ACompressed: word): word;\n  {** Returns the intensity of an gamma-expanded pixel. The intensity is the\n     maximum value reached by any component }\n  function GetIntensity(const c: TExpandedPixel): word; inline;\n  {** Sets the intensity of a gamma-expanded pixel }\n  function SetIntensity(const c: TExpandedPixel; intensity: word): TExpandedPixel;\n  {** Returns the lightness of an gamma-expanded pixel. The lightness is the\n     perceived brightness, 0 being black and 65535 being white }\n  function GetLightness(const c: TExpandedPixel): word; inline; overload;\n  {** Sets the lightness of a gamma-expanded pixel }\n  function SetLightness(const c: TExpandedPixel; lightness: word): TExpandedPixel; overload;\n  {** Sets the lightness of a gamma expanded pixel, provided you already know the current\n     value of lightness _curLightness_. It is a bit faster than the previous function }\n  function SetLightness(const c: TExpandedPixel; lightness: word; curLightness: word): TExpandedPixel; overload;\n  {** Returns the importance of the color. It is similar to saturation\n      in HSL colorspace, except it is gamma corrected. A value of zero indicates\n      a black/gray/white, and a value of 65535 indicates a bright color }\n  function ColorImportance(ec: TExpandedPixel): word;\n  {** Merge two gamma expanded pixels (implicit gamma correction) }\n  function MergeBGRA(ec1, ec2: TExpandedPixel): TExpandedPixel; overload;\n  {** Merge two gamma expanded pixels with the given weights }\n  function MergeBGRA(ec1: TExpandedPixel; weight1: integer; ec2: TExpandedPixel; weight2: integer): TExpandedPixel; overload;\n  {** Computes the difference (with gamma correction) between two pixels,\n      taking into account all dimensions, including transparency. The\n      result ranges from 0 to 65535 }\n  function ExpandedDiff(ec1, ec2: TExpandedPixel): word;\n\n  {** Converts from TFPColor to TExpandedPixel (with gamma expansion by default) }\n  function FPColorToExpanded(AColor: TFPColor; AGammaExpansion: boolean=true): TExpandedPixel;\n  {** Converts from TExpandedPixel to TFPColor (with gamma compression by default) }\n  function ExpandedToFPColor(AExpanded: TExpandedPixel; AGammaCompression: boolean=true): TFPColor;\n\ntype\n  {* General purpose color variable with single-precision floating point values.\n     It can be linear like TExpandedPixel or not, like TBGRAPixel. }\n  TColorF = packed array[1..4] of single;\n  {** Array of TColorF }\n  ArrayOfTColorF = array of TColorF;\n\n  {** Creates a TColorF structure }\n  function ColorF(red,green,blue,alpha: single): TColorF;\n  {** Creates a TColorF from a TBGRAPixel }\n  function BGRAToColorF(c: TBGRAPixel; AGammaExpansion: boolean): TColorF; overload;\n  {** Creates a TColorF array from an array of TBGRAPixel }\n  function BGRAToColorF(const a: array of TBGRAPixel; AGammaExpansion: boolean): ArrayOfTColorF; overload;\n  {** Converts a TColorF into a TBGRAPixel }\n  function ColorFToBGRA(c: TColorF; AGammaCompression: boolean): TBGRAPixel;\n  {** Applies gamma compression to a TColorF value (yielding non linear values) }\n  function GammaCompressionF(c: TColorF): TColorF;\n  {** Applies gamma expansion to a TColorF value (yielding linear values) }\n  function GammaExpansionF(c: TColorF): TColorF;\n  {** Subtract each component separately }\n  operator - (const c1, c2: TColorF): TColorF; inline;\n  {** Add each component separately }\n  operator + (const c1, c2: TColorF): TColorF; inline;\n  {** Multiply each component separately }\n  operator * (const c1, c2: TColorF): TColorF; inline;\n  {** Multiply each component by _factor_ }\n  operator * (const c1: TColorF; factor: single): TColorF; inline;\n\ntype\n  {* @abstract(Pixel color defined in linear HSL colorspace with gamma correction.)\n\n     Values range from 0 to 65535. See TGSBAPixel for corrected hue and brightness.\n\n**Example drawing all the colors in HSL colorspace:**\n\n@image(../doc/img/hslapixel_gradient.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar x,y: integer;\n    p: PBGRAPixel;\n    image: TBGRABitmap;\n    hsla: THSLAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight);\n  hsla.lightness := 32768;\n  hsla.alpha := 65535;\n  for y := 0 to image.Height-1 do\n  begin\n    p := image.Scanline[y];\n    hsla.saturation := y*65536 div image.Height;\n    for x := 0 to image.Width-1 do\n    begin\n      hsla.hue := x*65536 div image.Width;\n      p^:= HSLAToBGRA(hsla);\n      inc(p);\n    end;\n  end;\n  image.InvalidateBitmap; // changed by direct access\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```}\n  THSLAPixel = packed record\n    {** Hue of the pixel. The 6 primary colors red/yellow/green/cyan/blue/violet are stretched equally.\n        Extremum values 0 and 65535 are red }\n    hue: word;\n    {** Saturation of the color. 0 is gray and 65535 is the brightest color (including white) }\n    saturation: word;\n    {** Lightness of the color. 0 is black, 32768 is normal, and 65535 is white }\n    lightness: word;\n    {** Opacity of the pixel. 0 is transparent and 65535 is opaque }\n    alpha: word;\n    class function New(const AHue,ASaturation,ALightness,AAlpha:word): THSLAPixel;overload;static;\n    class function New(const AHue,ASaturation,ALightness:word): THSLAPixel;overload;static;\n  end;\n\n  {** Creates a pixel with given HSLA values, where A stands for alpha }\n  function HSLA(hue, saturation, lightness, alpha: word): THSLAPixel; overload; inline;\n  {** Creates an opaque pixel with given HSL values }\n  function HSLA(hue, saturation, lightness: word): THSLAPixel; overload; inline;\n  {** Converts a pixel from sRGB to HSL color space }\n  function BGRAToHSLA(c: TBGRAPixel): THSLAPixel;\n  {** Converts a pixel from gamma expanded RGB to HSL color space }\n  function ExpandedToHSLA(const ec: TExpandedPixel): THSLAPixel;\n  {** Converts a pixel from HSL colorspace to sRGB }\n  function HSLAToBGRA(const c: THSLAPixel): TBGRAPixel;\n  {** Converts a pixel from HSL colorspace to gamma expanded RGB }\n  function HSLAToExpanded(const c: THSLAPixel): TExpandedPixel;\n  {** Computes the hue difference }\n  function HueDiff(h1, h2: word): word;\n  {** Returns the hue of a gamma expanded pixel }\n  function GetHue(ec: TExpandedPixel): word;\n\ntype\n  {* @abstract(Pixel color defined in corrected HSL colorspace.)\n\n     G stands for corrected hue and B stands for actual brightness.\n     Values range from 0 to 65535.\n\n     See THSLAPixel for this colorspace without hue and brightness correction.\n\n**Example of drawing a gradient in GSB colorspace:**\n\n@image(../doc/img/gsbapixel_gradient.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar x,y: integer;\n    p: PBGRAPixel;\n    image: TBGRABitmap;\n    gsba: TGSBAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight);\n  gsba.lightness := 32768;\n  gsba.alpha := 65535;\n  for y := 0 to image.Height-1 do\n  begin\n    p := image.Scanline[y];\n    gsba.saturation := y*65536 div image.Height;\n    for x := 0 to image.Width-1 do\n    begin\n      gsba.hue := x*65536 div image.Width;\n      p^:= GSBAToBGRA(gsba);\n      inc(p);\n    end;\n  end;\n  image.InvalidateBitmap; // changed by direct access\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```\n}\n  TGSBAPixel = packed record\n    {** Corrected hue of the pixel. Extremum values 0 and 65535 are red.\n        G is corrected in the sense that each segment does not have the same size.\n        green-cyan and violet-red ranges are shorter, while red-yellow and cyan-blue are wider. }\n    hue: word;\n    {** Saturation of the color. 0 is gray and 65535 is the brightest color (excluding white).\n        Given a certain lightness, it is not always possible to have the full saturation of the color. }\n    saturation: word;\n    {** Actual perceived brightness. 0 is black, 32768 is normal, and 65535 is white.\n        At 32768, depending on the hue, contrary to THSLAPixel, the color may or may not be mixed with black/white.\n        Blue colors have a lower brightness and thus the full saturation is achieved under 32768.\n        Conversely yellow colors have higher brightness and thus the full saturation is achieved over 32768. }\n    lightness: word;\n    {** Opacity of the pixel. 0 is transparent and 65535 is opaque }\n    alpha: word;\n    class function New(const AHue,ASaturation,ABrightness,AAlpha:word): TGSBAPixel;overload;static;\n    class function New(const AHue,ASaturation,ABrightness:word): TGSBAPixel;overload;static;\n  end;\n\n  {** Converts a pixel from sRGB to correct HSL color space }\n  function BGRAToGSBA(c: TBGRAPixel): TGSBAPixel;\n  {** Converts a pixel from gamma expanded RGB to correct HSL color space }\n  function ExpandedToGSBA(const ec: TExpandedPixel): TGSBAPixel;\n  {** Converts a G hue (GSBA) to a H hue (HSLA) }\n  function GtoH(ghue: word): word;\n  {** Converts a H hue (HSLA) to a G hue (GSBA) }\n  function HtoG(hue: word): word;\n  {** Converts a pixel from corrected HSL to sRGB }\n  function GSBAToBGRA(c: TGSBAPixel): TBGRAPixel; overload;\n  {** Converts a pixel from corrected HSL to sRGB }\n  function GSBAToBGRA(const c: THSLAPixel): TBGRAPixel; overload;\n  {** Converts a pixel from corrected HSL to gamma expanded RGB }\n  function GSBAToExpanded(c: TGSBAPixel): TExpandedPixel; overload;\n  {** Converts a pixel from corrected HSL to gamma expanded RGB }\n  function GSBAToExpanded(const c: THSLAPixel): TExpandedPixel; overload;\n  {** Converts a pixel from corrected HSL to HSL }\n  function GSBAToHSLA(const c: TGSBAPixel): THSLAPixel; overload;\n  {** Converts a pixel from corrected HSL to HSL }\n  function GSBAToHSLA(const c: THSLAPixel): THSLAPixel; overload;\n  {** Converts a pixel from HSL to corrected HSL }\n  function HSLAToGSBA(const c: THSLAPixel): TGSBAPixel;\n\ntype\n  {* Helper for basic conversions of TBGRAPixel }\n  TBGRAPixelBasicHelper = record helper for TBGRAPixel\n    {** Converts to TExpandedPixel (linear 16-bit per channel) }\n    function ToExpanded: TExpandedPixel;\n    {** Converts from TExpandedPixel (linear 16-bit per channel) }\n    procedure FromExpanded(const AValue: TExpandedPixel);\n    {** Converts to THSLAPixel (linear 16-bit per channel) }\n    function ToHSLAPixel: THSLAPixel;\n    {** Converts from THSLAPixel (linear 16-bit per channel) }\n    procedure FromHSLAPixel(const AValue: THSLAPixel);\n    {** Converts to TGSBAPixel (linear 16-bit per channel) }\n    function ToGSBAPixel: TGSBAPixel;\n    {** Converts from TGSBAPixel (linear 16-bit per channel) }\n    procedure FromGSBAPixel(const AValue: TGSBAPixel); overload;\n    {** Converts from TGSBAPixel (linear 16-bit per channel) assuming\n        the THSLAPixel record contains GSBA colorspace }\n    procedure FromGSBAPixel(const AValue: THSLAPixel); overload;\n    {** Converts to TColorF, with or without gamma expansion }\n    function ToColorF(AGammaExpansion: boolean): TColorF;\n    {** Converts from TColorF, with or without gamma compression }\n    procedure FromColorF(const AValue: TColorF; AGammaCompression: boolean);\n  end;\n\n  {* Helper for basic conversions of TExpandedPixel }\n  TExpandedPixelBasicHelper = record helper for TExpandedPixel\n    {** Converts to TFPColor (16-bit per channel, by default non linear) }\n    function ToFPColor(AGammaCompression: boolean = true): TFPColor;\n    {** Converts from TFPColor (16-bit per channel, by default non linear) }\n    procedure FromFPColor(const AValue: TFPColor; AGammaExpansion: boolean = true);\n    {** Converts to TColor (non linear 8-bit, without alpha) }\n    function ToColor: TColor;\n    {** Converts from TColor (non linear 8-bit ,without alpha) }\n    procedure FromColor(const AValue: TColor);\n    {** Converts to TBGRAPixel (non linear 8-bit) }\n    function ToBGRAPixel: TBGRAPixel;\n    {** Converts from TBGRAPixel (non linear 8-bit) }\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    {** Converts to THSLAPixel }\n    function ToHSLAPixel: THSLAPixel;\n    {** Converts from THSLAPixel }\n    procedure FromHSLAPixel(const AValue: THSLAPixel);\n    {** Converts to TGSBAPixel }\n    function ToGSBAPixel: TGSBAPixel;\n    {** Converts from TGSBAPixel }\n    procedure FromGSBAPixel(const AValue: TGSBAPixel); overload;\n    {** Converts from TGSBAPixel assuming\n        the THSLAPixel record contains GSBA colorspace }\n    procedure FromGSBAPixel(const AValue: THSLAPixel); overload;\n  end;\n\n{** Implicit conversion of color from TExpandedPixel to TColor }\noperator := (const AValue: TExpandedPixel): TColor;\n{** Implicit conversion of color from TColor to TExpandedPixel }\noperator := (const AValue: TColor): TExpandedPixel;\n{** Implicit conversion of color from TExpandedPixel to TBGRAPixel }\nOperator := (const Source: TExpandedPixel): TBGRAPixel;\n{** Implicit conversion of color from TBGRAPixel to TExpandedPixel }\nOperator := (const Source: TBGRAPixel): TExpandedPixel;\n\ntype\n  {* Helper for basic conversions of TFPColor }\n  TFPColorBasicHelper = record helper for TFPColor\n    {** Converts to TColor (8-bit without alpha) }\n    function ToColor: TColor;\n    {** Converts from TColor (8-bit without alpha) }\n    procedure FromColor(const AValue: TColor);\n    {** Converts to TColor (8-bit) }\n    function ToBGRAPixel: TBGRAPixel;\n    {** Converts from TColor (8-bit) }\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    {** Converts to TExpandedPixel (linear) }\n    function ToExpanded(AGammaExpansion: boolean = true): TExpandedPixel;\n    {** Converts from TExpandedPixel (linear) }\n    procedure FromExpanded(const AValue: TExpandedPixel; AGammaCompression: boolean = true);\n    {** Converts to THSLAPixel (linear) }\n    function ToHSLAPixel(AGammaExpansion: boolean = true): THSLAPixel;\n    {** Converts from THSLAPixel (linear) }\n    procedure FromHSLAPixel(const AValue: THSLAPixel; AGammaCompression: boolean = true);\n    {** Converts to TGSBAPixel (linear) }\n    function ToGSBAPixel(AGammaExpansion: boolean = true): TGSBAPixel;\n    {** Converts from TGSBAPixel (linear) }\n    procedure FromGSBAPixel(const AValue: TGSBAPixel; AGammaCompression: boolean = true); overload;\n    {** Converts from TGSBAPixel (linear) assuming\n        the THSLAPixel record contains GSBA colorspace }\n    procedure FromGSBAPixel(const AValue: THSLAPixel; AGammaCompression: boolean = true); overload;\n  end;\n\n  {* Helper for basic conversions of THSLAPixel }\n  THSLAPixelBasicHelper = record helper for THSLAPixel\n    {** Converts to TColor (non linear 8-bit, without alpha) }\n    function ToColor: TColor;\n    {** Converts from TColor (non linear 8-bit, without alpha) }\n    procedure FromColor(const AValue: TColor);\n    {** Converts to TBGRAPixel (non linear 8-bit) }\n    function ToBGRAPixel: TBGRAPixel;\n    {** Converts from TBGRAPixel (non linear 8-bit) }\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    {** Converts to TGSBAPixel (corrected hue and brightness) }\n    function ToGSBAPixel: TGSBAPixel;\n    {** Converts from TGSBAPixel (corrected hue and brightness) }\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n    {** Converts to TExpandedPixel }\n    function ToExpanded: TExpandedPixel;\n    {** Converts from TExpandedPixel }\n    procedure FromExpanded(AValue: TExpandedPixel);\n    {** Converts to TFPColor (non linear by default) }\n    function ToFPColor(AGammaCompression: boolean=true): TFPColor;\n    {** Converts from TFPColor (non linear by default) }\n    procedure FromFPColor(AValue: TFPColor; AGammaExpansion: boolean=true);\n  end;\n\n{** Implicit conversion of color from THSLAPixel to TBGRAPixel }\nOperator := (const Source: THSLAPixel): TBGRAPixel;\n{** Implicit conversion of color from TBGRAPixel to THSLAPixel }\nOperator := (const Source: TBGRAPixel): THSLAPixel;\n{** Implicit conversion of color from THSLAPixel to TExpandedPixel }\nOperator := (const Source: THSLAPixel): TExpandedPixel;\n{** Implicit conversion of color from TExpandedPixel to THSLAPixel }\nOperator := (const Source: TExpandedPixel): THSLAPixel;\n{** Implicit conversion of color from THSLAPixel to TColor }\noperator := (const AValue: TColor): THSLAPixel;\n{** Implicit conversion of color from TColor to THSLAPixel }\noperator := (const AValue: THSLAPixel): TColor;\n\ntype\n  {* Helper for basic conversion of TGSBAPixel }\n  TGSBAPixelBasicHelper = record helper for TGSBAPixel\n    {** Converts to TColor (non linear 8-bit channel, without alpha) }\n    function ToColor: TColor;\n    {** Converts from TColor (non linear 8-bit channel, without alpha) }\n    procedure FromColor(const AValue: TColor);\n    {** Converts to ToBGRAPixel (non linear 8-bit channel) }\n    function ToBGRAPixel: TBGRAPixel;\n    {** Converts from ToBGRAPixel (non linear 8-bit channel) }\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    {** Converts to THSLAPixel (regular hue and standard lightness) }\n    function ToHSLAPixel: THSLAPixel;\n    {** Converts from THSLAPixel (regular hue and standard lightness) }\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    {** Converts to TExpandedPixel }\n    function ToExpanded: TExpandedPixel;\n    {** Converts from TExpandedPixel }\n    procedure FromExpanded(AValue: TExpandedPixel);\n    {** Converts to TFPColor (by default non linear) }\n    function ToFPColor(AGammaCompression: boolean=true): TFPColor;\n    {** Converts from TFPColor (by default non linear) }\n    procedure FromFPColor(AValue: TFPColor; AGammaExpansion: boolean=true);\n  end;\n\n{** Implicit conversion of color from TGSBAPixel to TBGRAPixel }\nOperator := (const Source: TGSBAPixel): TBGRAPixel;\n{** Implicit conversion of color from TBGRAPixel to TGSBAPixel }\nOperator := (const Source: TBGRAPixel): TGSBAPixel;\n{** Implicit conversion of color from TGSBAPixel to TExpandedPixel }\nOperator := (const Source: TGSBAPixel): TExpandedPixel;\n{** Implicit conversion of color from TExpandedPixel to TGSBAPixel }\nOperator := (const Source: TExpandedPixel): TGSBAPixel;\n{** Implicit conversion of color from TColor to TGSBAPixel }\noperator := (const AValue: TColor): TGSBAPixel;\n{** Implicit conversion of color from TGSBAPixel to TColor }\noperator := (const AValue: TGSBAPixel): TColor;\n{** Assigns TGSBAPixel to THSLAPixel without conversion,\n    just copying for backward compatibility (use ToHSLAPixel instead for conversion) }\nOperator := (const Source: TGSBAPixel): THSLAPixel;\n{** Assigns THSLAPixel to TGSBAPixel,\n    just copying for backward compatibility (use ToHSLAPixel instead for conversion) }\nOperator := (const Source: THSLAPixel): TGSBAPixel;\n\n{ Convert from sRGB the sHSV (byte, lossless). Hue is defined by the sextant and position. }\nprocedure RGBToByteStdHSV(ARed, AGreen, ABlue: byte; out ASextant, APosition, ASaturation, AValue: byte);\n{ Convert from sHSV the sRGB (byte, lossless). Hue is defined by the sextant and position. }\nprocedure ByteStdHSVToRGB(ASextant, APosition, ASaturation, AValue: byte; out ARed, AGreen, ABlue: byte);\n{ Convert from sRGB the sHSL (byte, lossless). Hue is defined by the sextant and position. }\nprocedure RGBToByteStdHSL(ARed, AGreen, ABlue: byte; out ASextant, APosition, ASaturation, ALightness: byte);\n{ Convert from sHSL the sRGB (byte, lossless). Hue is defined by the sextant and position. }\nprocedure ByteStdHSLToRGB(ASextant, APosition, ASaturation, ALightness: byte; out ARed, AGreen, ABlue: byte);\n{ Compute the lightness in sHSL (byte) }\nfunction GetByteStdLightness(ARed, AGreen, ABlue: byte): byte;\n{$ENDIF}\n\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n{ TBGRAPixel }\n\nfunction TBGRAPixel.GetClassIntensity: word;\nbegin\n  result := GetIntensity(self);\nend;\n\nfunction TBGRAPixel.GetClassLightness: word;\nbegin\n  result := GetLightness(self);\nend;\n\nprocedure TBGRAPixel.SetClassIntensity(AValue: word);\nbegin\n  self := SetIntensity(self, AValue);\nend;\n\nprocedure TBGRAPixel.SetClassLightness(AValue: word);\nbegin\n  self := SetLightness(self, AValue);\nend;\n\nclass function TBGRAPixel.New(const ARed,AGreen,ABlue,AAlpha:byte): TBGRAPixel;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TBGRAPixel.New(const ARed,AGreen,ABlue:byte): TBGRAPixel;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 255;\nend;\n\nprocedure TBGRAPixel.FromRGB(ARed, AGreen, ABlue: Byte; AAlpha: Byte);\nbegin\n  red := ARed;\n  green := AGreen;\n  blue := ABlue;\n  alpha := AAlpha;\nend;\n\nprocedure TBGRAPixel.FromColor(AColor: TColor; AAlpha: Byte);\nbegin\n  if AColor = clNone then\n    Self := BGRAPixelTransparent\n  else\n  begin\n    RedGreenBlue(ColorToRGB(AColor), red,green,blue);\n    alpha := AAlpha;\n  end;\nend;\n\nprocedure TBGRAPixel.FromString(AStr: string);\nbegin\n  Self := StrToBGRA(AStr);\nend;\n\nprocedure TBGRAPixel.FromFPColor(AColor: TFPColor);\nbegin\n  self := FPColorToBGRA(AColor);\nend;\n\nprocedure TBGRAPixel.ToRGB(out ARed, AGreen, ABlue, AAlpha: Byte);\nbegin\n  ARed := red;\n  AGreen := green;\n  ABlue := blue;\n  AAlpha := alpha;\nend;\n\nprocedure TBGRAPixel.ToRGB(out ARed, AGreen, ABlue: Byte);\nbegin\n  ARed := red;\n  AGreen := green;\n  ABlue := blue\nend;\n\nfunction TBGRAPixel.ToColor: TColor;\nbegin\n  if alpha = 0 then\n    result := clNone\n  else\n    result := RGBToColor(red,green,blue);\nend;\n\nfunction TBGRAPixel.ToString: string;\nbegin\n  result := BGRAToStr(Self, CSSColors);\nend;\n\nfunction TBGRAPixel.ToGrayscale(AGammaCorrection: boolean): TBGRAPixel;\nbegin\n  if AGammaCorrection then\n    result := BGRAToGrayscale(self)\n  else\n    result := BGRAToGrayscaleLinear(self);\nend;\n\nfunction TBGRAPixel.ToFPColor: TFPColor;\nbegin\n  result := BGRAToFPColor(Self);\nend;\n\nfunction TBGRAPixel.EqualsExactly(constref AColor: TBGRAPixel): boolean;\nbegin\n  result := PLongWord(@AColor)^ = PLongWord(@self)^;\nend;\n\nclass operator TBGRAPixel.:=(Source: TBGRAPixel): TColor;\nbegin\n  result := Source.ToColor;\nend;\n\nclass operator TBGRAPixel.:=(Source: TColor): TBGRAPixel;\nbegin\n  result.FromColor(Source);\nend;\n\n{ TGSBAPixel }\n\nclass function TGSBAPixel.New(const AHue,ASaturation,ABrightness,AAlpha:word): TGSBAPixel;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ABrightness;\n  Result.alpha := AAlpha;\nend;\n\nclass function TGSBAPixel.New(const AHue,ASaturation,ABrightness:word): TGSBAPixel;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ABrightness;\n  Result.alpha := 65535;\nend;\n\n{ THSLAPixel }\n\nclass function THSLAPixel.New(const AHue,ASaturation,ALightness,AAlpha:word): THSLAPixel;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ALightness;\n  Result.alpha := AAlpha;\nend;\n\nclass function THSLAPixel.New(const AHue,ASaturation,ALightness:word): THSLAPixel;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ALightness;\n  Result.alpha := 65535;\nend;\n\n{ TExpandedPixel }\n\nclass function TExpandedPixel.New(const ARed,AGreen,ABlue,AAlpha:word): TExpandedPixel;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TExpandedPixel.New(const ARed,AGreen,ABlue:word): TExpandedPixel;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 65535;\nend;\n\n{ The gamma correction is approximated here by a power function }\nvar\n  GammaExpFactor   : single; //exponent\n\nconst\n  redWeightShl10   = 306; // = 0.299\n  greenWeightShl10 = 601; // = 0.587\n  blueWeightShl10  = 117; // = 0.114\n\nprocedure BGRANoGamma;\nvar i,j: integer;\n  prevExp, nextExp: Word;\nbegin\n  GammaExpFactor := 1;\n  prevExp := 0;\n  for i := 0 to 255 do\n  begin\n    GammaExpansionTab[i] := (i shl 8) + i;\n    if i = 255 then nextExp := 65535\n    else\n    begin\n      nextExp := GammaExpansionTab[i]+128;\n      GammaExpansionTabHalf[i] := nextExp+1;\n    end;\n    for j := prevExp to nextExp do\n      GammaCompressionTab[j] := i;\n    if i < 255 then\n      prevExp := nextExp+1;\n  end;\nend;\n\nprocedure BGRASetGamma(AGamma: single);\nvar\n  GammaLinearFactor: single;\n  i,j,prevpos,nextpos,midpos: Int32or64;\nbegin\n  if AGamma = 1 then\n  begin\n    BGRANoGamma;\n    exit;\n  end;\n  GammaExpFactor := AGamma;\n  //the linear factor is used to normalize expanded values in the range 0..65535\n  GammaLinearFactor := 65535 / power(255, GammaExpFactor);\n  GammaExpansionTab[0] := 0;\n  nextpos := 0;\n  for i := 0 to 255 do\n  begin\n    prevpos := nextpos;\n    midpos := round(power(i, GammaExpFactor) * GammaLinearFactor);\n    if i = 255 then\n      nextpos := 65536\n    else\n      nextpos := round(power(i+0.5, GammaExpFactor) * GammaLinearFactor);\n    GammaExpansionTab[i] := midpos;\n    if i < 255 then\n      GammaExpansionTabHalf[i] := nextpos;\n    for j := prevpos to midpos-1 do\n      GammaCompressionTab[j] := i;\n    for j := midpos to nextpos-1 do\n      GammaCompressionTab[j] := i;\n  end;\n  GammaCompressionTab[0] := 0;\nend;\n\nfunction BGRAGetGamma: single;\nbegin\n  result := GammaExpFactor;\nend;\n\nprocedure AllocateExpandedPixelBuffer(var ABuffer: TExpandedPixelBuffer;\n  ASize: integer);\nbegin\n  if ASize > length(ABuffer) then\n    setlength(ABuffer, max(length(ABuffer)*2,ASize));\nend;\n\n{ Apply gamma correction using conversion tables }\nfunction GammaExpansion(c: TBGRAPixel): TExpandedPixel;\nbegin\n  Result.red   := GammaExpansionTab[c.red];\n  Result.green := GammaExpansionTab[c.green];\n  Result.blue  := GammaExpansionTab[c.blue];\n  Result.alpha := c.alpha shl 8 + c.alpha;\nend;\n\nfunction GammaCompression(const ec: TExpandedPixel): TBGRAPixel;\nbegin\n  Result.red   := GammaCompressionTab[ec.red];\n  Result.green := GammaCompressionTab[ec.green];\n  Result.blue  := GammaCompressionTab[ec.blue];\n  Result.alpha := ec.alpha shr 8;\nend;\n\nfunction GammaCompression(red, green, blue, alpha: word): TBGRAPixel;\nbegin\n  Result.red   := GammaCompressionTab[red];\n  Result.green := GammaCompressionTab[green];\n  Result.blue  := GammaCompressionTab[blue];\n  Result.alpha := alpha shr 8;\nend;\n\nfunction GammaExpansionW(ACompressed: word): word;\nconst\n  fracShift = 8;\n  fracHalf = 1 shl (fracShift-1);\n  fracQuarter = 1 shl (fracShift-2);\nvar\n  intPart, fracPart, half: word;\n  byteVal: byte;\nbegin\n  if ACompressed = 0 then\n    result := 0\n  else if ACompressed = $ffff then\n    result := $ffff\n  else\n  begin\n    //div 257\n    byteVal := ACompressed shr fracShift;\n    intPart := (byteVal shl fracShift) + byteVal;\n    if ACompressed < intPart then\n    begin\n      dec(byteVal);\n      dec(intPart, 257);\n    end;\n\n    fracPart := ACompressed - intPart;\n    if fracPart >= fracHalf then dec(fracPart);  //[0..256] -> [0..255]\n\n    if fracPart >= fracHalf then\n    begin\n      result := GammaExpansionTab[byteVal+1];\n      half := GammaExpansionTabHalf[byteVal];\n      dec(result, ((result-half)*((1 shl fracShift)-fracPart)+fracQuarter) shr (fracShift-1));\n    end\n    else\n    begin\n      result := GammaExpansionTab[byteVal];\n      if fracPart > 0 then\n      begin\n        half := GammaExpansionTabHalf[byteVal];\n        inc(result, ((half-result)*fracPart+fracQuarter) shr (fracShift-1));\n      end;\n    end;\n  end;\nend;\n\nfunction GammaCompressionW(AExpanded: word): word;\nvar\n  compByte: Byte;\n  reExp, reExpDelta: Word;\nbegin\n  if AExpanded=0 then exit(0) else\n  if AExpanded=65535 then exit(65535) else\n  begin\n    compByte := GammaCompressionTab[AExpanded];\n    reExp := GammaExpansionTab[compByte];\n    result := compByte + (compByte shl 8);\n    if reExp < AExpanded then\n    begin\n      reExpDelta := GammaExpansionTabHalf[compByte]-reExp;\n      if reExpDelta<>0 then\n        inc(result, ((AExpanded-reExp)*128+(reExpDelta shr 1)) div reExpDelta);\n    end else\n    begin\n      reExpDelta := reExp-GammaExpansionTabHalf[compByte-1];\n      if reExpDelta<>0 then\n        dec(result, ((reExp-AExpanded)*128+(reExpDelta shr 1)) div reExpDelta);\n    end;\n  end;\nend;\n\n{ The intensity is defined here as the maximum value of any color component }\nfunction GetIntensity(const c: TExpandedPixel): word; inline;\nbegin\n  Result := c.red;\n  if c.green > Result then\n    Result := c.green;\n  if c.blue > Result then\n    Result := c.blue;\nend;\n\nfunction SetIntensity(const c: TExpandedPixel; intensity: word): TExpandedPixel;\nvar\n  curIntensity: word;\nbegin\n  curIntensity := GetIntensity(c);\n  if curIntensity = 0 then //suppose it's gray if there is no color information\n  begin\n    Result.red := intensity;\n    Result.green := intensity;\n    Result.blue := intensity;\n    result.alpha := c.alpha;\n  end\n  else\n  begin\n    //linear interpolation to reached wanted intensity\n    Result.red   := (c.red * intensity + (curIntensity shr 1)) div curIntensity;\n    Result.green := (c.green * intensity + (curIntensity shr 1)) div curIntensity;\n    Result.blue  := (c.blue * intensity + (curIntensity shr 1)) div curIntensity;\n    Result.alpha := c.alpha;\n  end;\nend;\n\n{ The lightness here is defined as the subjective sensation of luminosity, where\n  blue is the darkest component and green the lightest }\nfunction GetLightness(const c: TExpandedPixel): word; inline;\nbegin\n  Result := (c.red * redWeightShl10 + c.green * greenWeightShl10 +\n    c.blue * blueWeightShl10 + 512) shr 10;\nend;\n\nfunction SetLightness(const c: TExpandedPixel; lightness: word): TExpandedPixel;\nvar\n  curLightness: word;\nbegin\n  curLightness := GetLightness(c);\n  if lightness = curLightness then\n  begin //no change\n    Result := c;\n    exit;\n  end;\n  result := SetLightness(c, lightness, curLightness);\nend;\n\nfunction SetLightness(const c: TExpandedPixel; lightness: word; curLightness: word): TExpandedPixel;\nvar\n  AddedWhiteness, maxBeforeWhite: word;\n  clip: boolean;\nbegin\n  if lightness = curLightness then\n  begin //no change\n    Result := c;\n    exit;\n  end;\n  if lightness = 65535 then //set to white\n  begin\n    Result.red   := 65535;\n    Result.green := 65535;\n    Result.blue  := 65535;\n    Result.alpha := c.alpha;\n    exit;\n  end;\n  if lightness = 0 then  //set to black\n  begin\n    Result.red   := 0;\n    Result.green := 0;\n    Result.blue  := 0;\n    Result.alpha := c.alpha;\n    exit;\n  end;\n  if curLightness = 0 then  //set from black\n  begin\n    Result.red   := lightness;\n    Result.green := lightness;\n    Result.blue  := lightness;\n    Result.alpha := c.alpha;\n    exit;\n  end;\n  if lightness < curLightness then //darker is easy\n  begin\n    result.alpha:= c.alpha;\n    result.red := (c.red * lightness + (curLightness shr 1)) div curLightness;\n    result.green := (c.green * lightness + (curLightness shr 1)) div curLightness;\n    result.blue := (c.blue * lightness + (curLightness shr 1)) div curLightness;\n    exit;\n  end;\n  //lighter and grayer\n  Result := c;\n  AddedWhiteness := lightness - curLightness;\n  maxBeforeWhite := 65535 - AddedWhiteness;\n  clip   := False;\n  if Result.red <= maxBeforeWhite then\n    Inc(Result.red, AddedWhiteness)\n  else\n  begin\n    Result.red := 65535;\n    clip := True;\n  end;\n  if Result.green <= maxBeforeWhite then\n    Inc(Result.green, AddedWhiteness)\n  else\n  begin\n    Result.green := 65535;\n    clip := True;\n  end;\n  if Result.blue <= maxBeforeWhite then\n    Inc(Result.blue, AddedWhiteness)\n  else\n  begin\n    Result.blue := 65535;\n    clip := True;\n  end;\n\n  if clip then //light and whiter\n  begin\n    curLightness   := GetLightness(Result);\n    addedWhiteness := lightness - curLightness;\n    maxBeforeWhite := 65535 - curlightness;\n    Result.red     := Result.red + addedWhiteness * (65535 - Result.red) div\n      maxBeforeWhite;\n    Result.green   := Result.green + addedWhiteness * (65535 - Result.green) div\n      maxBeforeWhite;\n    Result.blue    := Result.blue + addedWhiteness * (65535 - Result.blue) div\n      maxBeforeWhite;\n  end;\nend;\n\nfunction ColorImportance(ec: TExpandedPixel): word;\nvar min,max: word;\nbegin\n  min := ec.red;\n  max := ec.red;\n  if ec.green > max then\n    max := ec.green\n  else\n  if ec.green < min then\n    min := ec.green;\n  if ec.blue > max then\n    max := ec.blue\n  else\n  if ec.blue < min then\n    min  := ec.blue;\n  result := max - min;\nend;\n\n{ Merge two colors of same importance }\nfunction MergeBGRA(ec1, ec2: TExpandedPixel): TExpandedPixel;\nvar c12: LongWord;\nbegin\n  if (ec1.alpha = 0) then\n    Result := ec2\n  else\n  if (ec2.alpha = 0) then\n    Result := ec1\n  else\n  begin\n    c12 := ec1.alpha + ec2.alpha;\n    Result.red   := (int64(ec1.red) * ec1.alpha + int64(ec2.red) * ec2.alpha + c12 shr 1) div c12;\n    Result.green := (int64(ec1.green) * ec1.alpha + int64(ec2.green) * ec2.alpha + c12 shr 1) div c12;\n    Result.blue  := (int64(ec1.blue) * ec1.alpha + int64(ec2.blue) * ec2.alpha + c12 shr 1) div c12;\n    Result.alpha := (c12 + 1) shr 1;\n  end;\nend;\n\nfunction MergeBGRA(ec1: TExpandedPixel; weight1: integer; ec2: TExpandedPixel;\n  weight2: integer): TExpandedPixel;\nvar\n    f1,f2,f12: int64;\nbegin\n  if (weight1 = 0) then\n  begin\n    if (weight2 = 0) then\n      result := BGRAPixelTransparent\n    else\n      Result := ec2\n  end\n  else\n  if (weight2 = 0) then\n    Result := ec1\n  else\n  if (weight1+weight2 = 0) then\n    Result := BGRAPixelTransparent\n  else\n  begin\n    f1 := int64(ec1.alpha)*weight1;\n    f2 := int64(ec2.alpha)*weight2;\n    f12 := f1+f2;\n    if f12 = 0 then\n      result := BGRAPixelTransparent\n    else\n    begin\n      Result.red   := (ec1.red * f1 + ec2.red * f2 + f12 shr 1) div f12;\n      Result.green := (ec1.green * f1 + ec2.green * f2 + f12 shr 1) div f12;\n      Result.blue  := (ec1.blue * f1 + ec2.blue * f2 + f12 shr 1) div f12;\n      {$hints off}\n      Result.alpha := (f12 + ((weight1+weight2) shr 1)) div (weight1+weight2);\n      {$hints on}\n    end;\n  end;\nend;\n\nfunction LessStartSlope65535(value: word): word;\nvar factor: word;\nbegin\n  factor := 4096 - (not value)*3 shr 7;\n  result := value*factor shr 12;\nend;\n\nfunction ExpandedDiff(ec1, ec2: TExpandedPixel): word;\nvar\n  CompRedAlpha1, CompGreenAlpha1, CompBlueAlpha1, CompRedAlpha2,\n  CompGreenAlpha2, CompBlueAlpha2: integer;\n  DiffAlpha: word;\n  ColorDiff: word;\n  TempHueDiff: word;\nbegin\n  if (ec1.alpha = 0) and (ec2.alpha = 0) then exit(0) else\n  if (ec1.alpha = ec2.alpha) and (ec1.red = ec2.red) and\n     (ec1.green = ec2.green) and (ec1.blue = ec2.blue) then exit(0);\n  CompRedAlpha1 := ec1.red * ec1.alpha shr 16; //gives 0..65535\n  CompGreenAlpha1 := ec1.green * ec1.alpha shr 16;\n  CompBlueAlpha1 := ec1.blue * ec1.alpha shr 16;\n  CompRedAlpha2 := ec2.red * ec2.alpha shr 16;\n  CompGreenAlpha2 := ec2.green * ec2.alpha shr 16;\n  CompBlueAlpha2 := ec2.blue * ec2.alpha shr 16;\n  Result    := (Abs(CompRedAlpha2 - CompRedAlpha1)*redWeightShl10 +\n    Abs(CompBlueAlpha2 - CompBlueAlpha1)*blueWeightShl10 +\n    Abs(CompGreenAlpha2 - CompGreenAlpha1)*greenWeightShl10) shr 10;\n  ColorDiff := min(ColorImportance(ec1),ColorImportance(ec2));\n  if ColorDiff > 0 then\n  begin\n    TempHueDiff := HueDiff(HtoG(GetHue(ec1)),HtoG(GetHue(ec2)));\n    if TempHueDiff < 32768 then\n      TempHueDiff := LessStartSlope65535(TempHueDiff shl 1) shr 4\n    else\n      TempHueDiff := TempHueDiff shr 3;\n    Result := ((Result shr 4)* (not ColorDiff) + TempHueDiff*ColorDiff) shr 12;\n  end;\n  DiffAlpha := Abs(integer(ec2.Alpha) - integer(ec1.Alpha));\n  if DiffAlpha > Result then\n    Result := DiffAlpha;\nend;\n\nfunction FPColorToExpanded(AColor: TFPColor; AGammaExpansion: boolean): TExpandedPixel;\nbegin\n  result.FromFPColor(AColor, AGammaExpansion);\nend;\n\nfunction ExpandedToFPColor(AExpanded: TExpandedPixel; AGammaCompression: boolean): TFPColor;\nbegin\n  result.FromExpanded(AExpanded, AGammaCompression);\nend;\n\nfunction ColorF(red, green, blue, alpha: single): TColorF;\nbegin\n  result[1] := red;\n  result[2] := green;\n  result[3] := blue;\n  result[4] := alpha;\nend;\n\nfunction BGRAToColorF(c: TBGRAPixel; AGammaExpansion: boolean): TColorF;\nconst OneOver255 = 1/255;\n      OneOver65535 = 1/65535;\nbegin\n  if not AGammaExpansion then\n  begin\n    result[1] := c.red*OneOver255;\n    result[2] := c.green*OneOver255;\n    result[3] := c.blue*OneOver255;\n    result[4] := c.alpha*OneOver255;\n  end else\n  with GammaExpansion(c) do\n  begin\n    result[1] := red*OneOver65535;\n    result[2] := green*OneOver65535;\n    result[3] := blue*OneOver65535;\n    result[4] := alpha*OneOver65535;\n  end;\nend;\n\nfunction BGRAToColorF(const a: array of TBGRAPixel; AGammaExpansion: boolean\n  ): ArrayOfTColorF;\nvar\n  i: Int32or64;\nbegin\n  result := nil;\n  setlength(result, length(a));\n  for i := 0 to high(a) do\n    result[i] := BGRAToColorF(a[i],AGammaExpansion);\nend;\n\nfunction ColorFToBGRA(c: TColorF; AGammaCompression: boolean): TBGRAPixel;\nbegin\n  if not AGammaCompression then\n  begin\n    result.red := Min(255,Max(0,round(c[1]*255)));\n    result.green := Min(255,Max(0,round(c[2]*255)));\n    result.blue := Min(255,Max(0,round(c[3]*255)));\n  end else\n  begin\n    result.red := GammaCompressionTab[Min(65535,Max(0,round(c[1]*65535)))];\n    result.green := GammaCompressionTab[Min(65535,Max(0,round(c[2]*65535)))];\n    result.blue := GammaCompressionTab[Min(65535,Max(0,round(c[3]*65535)))];\n  end;\n  result.alpha := Min(255,Max(0,round(c[4]*255)));\nend;\n\nfunction GammaCompressionF(c: TColorF): TColorF;\nvar inv: single;\nbegin\n  inv := 1/GammaExpFactor;\n  result := ColorF(power(c[1],inv),power(c[2],inv),power(c[3],inv),c[4]);\nend;\n\nfunction GammaExpansionF(c: TColorF): TColorF;\nbegin\n  result := ColorF(power(c[1],GammaExpFactor),power(c[2],GammaExpFactor),power(c[3],GammaExpFactor),c[4]);\nend;\n\noperator-(const c1, c2: TColorF): TColorF;\nbegin\n  result[1] := c1[1]-c2[1];\n  result[2] := c1[2]-c2[2];\n  result[3] := c1[3]-c2[3];\n  result[4] := c1[4]-c2[4];\nend;\n\noperator+(const c1, c2: TColorF): TColorF;\nbegin\n  result[1] := c1[1]+c2[1];\n  result[2] := c1[2]+c2[2];\n  result[3] := c1[3]+c2[3];\n  result[4] := c1[4]+c2[4];\nend;\n\noperator*(const c1, c2: TColorF): TColorF;\nbegin\n  result[1] := c1[1]*c2[1];\n  result[2] := c1[2]*c2[2];\n  result[3] := c1[3]*c2[3];\n  result[4] := c1[4]*c2[4];\nend;\n\noperator*(const c1: TColorF; factor: single): TColorF;\nbegin\n  result[1] := c1[1]*factor;\n  result[2] := c1[2]*factor;\n  result[3] := c1[3]*factor;\n  result[4] := c1[4]*factor;\nend;\n\n{ THSLAPixel }\n\nfunction HSLA(hue, saturation, lightness, alpha: word): THSLAPixel;\nbegin\n  Result.hue   := hue;\n  Result.saturation := saturation;\n  Result.lightness  := lightness;\n  Result.alpha := alpha;\nend;\n\nfunction HSLA(hue, saturation, lightness: word): THSLAPixel;\nbegin\n  Result.hue   := hue;\n  Result.saturation := saturation;\n  Result.lightness  := lightness;\n  Result.alpha := $ffff;\nend;\n\n{ Conversion from RGB value to HSL colorspace. See : http://en.wikipedia.org/wiki/HSL_color_space }\nfunction BGRAToHSLA(c: TBGRAPixel): THSLAPixel;\nbegin\n  result := ExpandedToHSLA(GammaExpansion(c));\nend;\n\nprocedure ExpandedToHSLAInline(r,g,b: Int32Or64; var dest: THSLAPixel); inline;\nconst\n  deg60  = 10922;\n  deg120 = 21845;\n  deg240 = 43690;\nvar\n  min, max, minMax: Int32or64;\n  UMinMax,UTwiceLightness: UInt32or64;\nbegin\n  if g > r then\n  begin\n    max := g;\n    min := r;\n  end else\n  begin\n    max := r;\n    min := g;\n  end;\n  if b > max then\n    max := b else\n  if b < min then\n    min := b;\n  minMax := max - min;\n\n  if minMax = 0 then\n    dest.hue := 0\n  else\n  if max = r then\n    {$PUSH}{$RANGECHECKS OFF}\n    dest.hue := ((g - b) * deg60) div minMax\n    {$POP}\n  else\n  if max = g then\n    dest.hue := ((b - r) * deg60) div minMax + deg120\n  else\n    {max = b} dest.hue := ((r - g) * deg60) div minMax + deg240;\n  UTwiceLightness := max + min;\n  if min = max then\n    dest.saturation := 0 else\n  begin\n    UMinMax:= minMax;\n    if UTwiceLightness < 65536 then\n      dest.saturation := (UMinMax shl 16) div (UTwiceLightness + 1)\n    else\n      dest.saturation := (UMinMax shl 16) div (131072 - UTwiceLightness);\n  end;\n  dest.lightness := UTwiceLightness shr 1;\nend;\n\nfunction ExpandedToHSLA(const ec: TExpandedPixel): THSLAPixel;\nbegin\n  result.alpha := ec.alpha;\n  ExpandedToHSLAInline(ec.red,ec.green,ec.blue,result);\nend;\n\n{ Conversion from HSL colorspace to RGB. See : http://en.wikipedia.org/wiki/HSL_color_space }\nfunction HSLAToBGRA(const c: THSLAPixel): TBGRAPixel;\nvar ec: TExpandedPixel;\nbegin\n  ec := HSLAToExpanded(c);\n  Result := GammaCompression(ec);\nend;\n\nfunction HSLAToExpanded(const c: THSLAPixel): TExpandedPixel;\nconst\n  deg30  = 4096;\n  deg60  = 8192;\n  deg120 = deg60 * 2;\n  deg180 = deg60 * 3;\n  deg240 = deg60 * 4;\n  deg360 = deg60 * 6;\n\n  function ComputeColor(p, q: Int32or64; h: Int32or64): Int32or64; inline;\n  begin\n    if h < deg180 then\n    begin\n      if h < deg60 then\n        Result := p + ((q - p) * h + deg30) div deg60\n      else\n        Result := q\n    end else\n    begin\n      if h < deg240 then\n        Result := p + ((q - p) * (deg240 - h) + deg30) div deg60\n      else\n        Result := p;\n    end;\n  end;\n\nvar\n  q, p, L, S, H: Int32or64;\nbegin\n  L := c.lightness;\n  S := c.saturation;\n  if S = 0 then  //gray\n  begin\n    result.red   := L;\n    result.green := L;\n    result.blue  := L;\n    result.alpha := c.alpha;\n    exit;\n  end;\n  {$hints off}\n  if L < 32768 then\n    q := (L shr 1) * ((65535 + S) shr 1) shr 14\n  else\n    q := L + S - ((L shr 1) *\n      (S shr 1) shr 14);\n  {$hints on}\n  if q > 65535 then q := 65535;\n  p   := (L shl 1) - q;\n  if p > 65535 then p := 65535;\n  H := c.hue * deg360 shr 16;\n  result.green := ComputeColor(p, q, H);\n  inc(H, deg120);\n  if H > deg360 then Dec(H, deg360);\n  result.red   := ComputeColor(p, q, H);\n  inc(H, deg120);\n  if H > deg360 then Dec(H, deg360);\n  result.blue  := ComputeColor(p, q, H);\n  result.alpha := c.alpha;\nend;\n\nfunction HueDiff(h1, h2: word): word;\nbegin\n  result := abs(integer(h1)-integer(h2));\n  if result > 32768 then result := 65536-result;\nend;\n\nfunction GetHue(ec: TExpandedPixel): word;\nconst\n  deg60  = 8192;\n  deg120 = deg60 * 2;\n  deg240 = deg60 * 4;\n  deg360 = deg60 * 6;\nvar\n  min, max, minMax: integer;\n  r,g,b: integer;\nbegin\n  r := ec.red;\n  g := ec.green;\n  b := ec.blue;\n  min := r;\n  max := r;\n  if g > max then\n    max := g\n  else\n  if g < min then\n    min := g;\n  if b > max then\n    max := b\n  else\n  if b < min then\n    min  := b;\n  minMax := max - min;\n\n  if minMax = 0 then\n    Result := 0\n  else\n  if max = r then\n    Result := (((g - b) * deg60) div\n      minMax + deg360) mod deg360\n  else\n  if max = g then\n    Result := ((b - r) * deg60) div minMax + deg120\n  else\n    {max = b} Result :=\n      ((r - g) * deg60) div minMax + deg240;\n\n  Result   := (Result shl 16) div deg360; //normalize\nend;\n\n{ TGSBAPixel }\n\nfunction BGRAToGSBA(c: TBGRAPixel): TGSBAPixel;\nvar\n  ec: TExpandedPixel;\nbegin\n  ec := GammaExpansion(c);\n  result := ExpandedToGSBA(ec);\nend;\n\nfunction ExpandedToGSBA(const ec: TExpandedPixel): TGSBAPixel;\nvar lightness: UInt32Or64;\n    red,green,blue: Int32or64;\n    hsla: THSLAPixel;\nbegin\n  red   := ec.red;\n  green := ec.green;\n  blue  := ec.blue;\n  hsla.alpha := ec.alpha;\n\n  lightness := (red * redWeightShl10 + green * greenWeightShl10 +\n    blue * blueWeightShl10 + 512) shr 10;\n\n  ExpandedToHSLAInline(red,green,blue,hsla);\n  result := TGSBAPixel(hsla);\n\n  if result.lightness > 32768 then\n    result.saturation := result.saturation* UInt32or64(not result.lightness) div 32767;\n  result.lightness := lightness;\n  result.hue := HtoG(result.hue);\nend;\n\nfunction GtoH(ghue: word): word;\nconst\n  segment: array[0..5] of UInt32or64 =\n     (13653, 10923, 8192, 13653, 10923, 8192);\nvar g: UInt32or64;\nbegin\n  g := ghue;\n  if g < segment[0] then\n    result := g * 10923 div segment[0]\n  else\n  begin\n    dec(g, segment[0]);\n    if g < segment[1] then\n      result := g * (21845-10923) div segment[1] + 10923\n    else\n    begin\n      dec(g, segment[1]);\n      if g < segment[2] then\n        result := g * (32768-21845) div segment[2] + 21845\n      else\n      begin\n        dec(g, segment[2]);\n        if g < segment[3] then\n          result := g * (43691-32768) div segment[3] + 32768\n        else\n        begin\n          dec(g, segment[3]);\n          if g < segment[4] then\n            result := g * (54613-43691) div segment[4] + 43691\n          else\n          begin\n            dec(g, segment[4]);\n            result := g * (65536-54613) div segment[5] + 54613;\n          end;\n        end;\n      end;\n    end;\n  end;\nend;\n\nfunction HtoG(hue: word): word;\nconst\n  segmentDest: array[0..5] of UInt32or64 =\n     (13653, 10923, 8192, 13653, 10923, 8192);\n  segmentSrc: array[0..5] of UInt32or64 =\n     (10923, 10922, 10923, 10923, 10922, 10923);\nvar\n  h,g: UInt32or64;\nbegin\n  h := hue;\n  if h < segmentSrc[0] then\n    g := h * segmentDest[0] div segmentSrc[0]\n  else\n  begin\n    g := segmentDest[0];\n    dec(h, segmentSrc[0]);\n    if h < segmentSrc[1] then\n      inc(g, h * segmentDest[1] div segmentSrc[1])\n    else\n    begin\n      inc(g, segmentDest[1]);\n      dec(h, segmentSrc[1]);\n      if h < segmentSrc[2] then\n        inc(g, h * segmentDest[2] div segmentSrc[2])\n      else\n      begin\n        inc(g, segmentDest[2]);\n        dec(h, segmentSrc[2]);\n        if h < segmentSrc[3] then\n          inc(g, h * segmentDest[3] div segmentSrc[3])\n        else\n        begin\n          inc(g, segmentDest[3]);\n          dec(h, segmentSrc[3]);\n          if h < segmentSrc[4] then\n            inc(g, h * segmentDest[4] div segmentSrc[4])\n          else\n          begin\n            inc(g, segmentDest[4]);\n            dec(h, segmentSrc[4]);\n            inc(g, h * segmentDest[5] div segmentSrc[5]);\n          end;\n        end;\n      end;\n    end;\n  end;\n  result := g;\nend;\n\nfunction GSBAToBGRA(c: TGSBAPixel): TBGRAPixel;\nvar ec: TExpandedPixel;\nbegin\n  ec := GSBAToExpanded(c);\n  result := GammaCompression(ec);\nend;\n\nfunction GSBAToBGRA(const c: THSLAPixel): TBGRAPixel;\nbegin\n  result := GSBAToBGRA(TGSBAPixel(c));\nend;\n\nfunction GSBAToExpanded(c: TGSBAPixel): TExpandedPixel;\nvar lightness: word;\nbegin\n  c.hue := GtoH(c.hue);\n  lightness := c.lightness;\n  c.lightness := 32768;\n  result := SetLightness(HSLAToExpanded(THSLAPixel(c)),lightness);\nend;\n\nfunction GSBAToExpanded(const c: THSLAPixel): TExpandedPixel;\nbegin\n  result := GSBAToExpanded(TGSBAPixel(c));\nend;\n\nfunction GSBAToHSLA(const c: TGSBAPixel): THSLAPixel;\nbegin\n  result := ExpandedToHSLA(GSBAToExpanded(c));\nend;\n\nfunction GSBAToHSLA(const c: THSLAPixel): THSLAPixel;\nbegin\n  result := ExpandedToHSLA(GSBAToExpanded(TGSBAPixel(c)));\nend;\n\nfunction HSLAToGSBA(const c: THSLAPixel): TGSBAPixel;\nbegin\n  result := ExpandedToGSBA(HSLAToExpanded(c));\nend;\n\n{ TBGRAPixelBasicHelper }\n\nfunction TBGRAPixelBasicHelper.ToExpanded: TExpandedPixel;\nbegin\n  result := GammaExpansion(self);\nend;\n\nprocedure TBGRAPixelBasicHelper.FromExpanded(const AValue: TExpandedPixel);\nbegin\n  Self := GammaCompression(AValue);\nend;\n\nfunction TBGRAPixelBasicHelper.ToHSLAPixel: THSLAPixel;\nbegin\n  result := BGRAToHSLA(Self);\nend;\n\nprocedure TBGRAPixelBasicHelper.FromHSLAPixel(const AValue: THSLAPixel);\nbegin\n  Self := HSLAToBGRA(AValue);\nend;\n\nfunction TBGRAPixelBasicHelper.ToGSBAPixel: TGSBAPixel;\nbegin\n  result := BGRAToGSBA(Self);\nend;\n\nprocedure TBGRAPixelBasicHelper.FromGSBAPixel(const AValue: TGSBAPixel);\nbegin\n  Self := GSBAToBGRA(AValue);\nend;\n\nprocedure TBGRAPixelBasicHelper.FromGSBAPixel(const AValue: THSLAPixel);\nbegin\n  Self := GSBAToBGRA(AValue);\nend;\n\nfunction TBGRAPixelBasicHelper.ToColorF(AGammaExpansion: boolean): TColorF;\nbegin\n  result := BGRAToColorF(Self,AGammaExpansion);\nend;\n\nprocedure TBGRAPixelBasicHelper.FromColorF(const AValue: TColorF;\n    AGammaCompression: boolean);\nbegin\n  Self := ColorFToBGRA(AValue,AGammaCompression);\nend;\n\n{ TExpandedPixelBasicHelper }\n\nfunction TExpandedPixelBasicHelper.ToFPColor(AGammaCompression: boolean): TFPColor;\nbegin\n  if AGammaCompression then\n  begin\n    result.red := GammaCompressionW(self.red);\n    result.green := GammaCompressionW(self.green);\n    result.blue := GammaCompressionW(self.blue);\n  end else\n  begin\n    result.red := self.red;\n    result.green := self.green;\n    result.blue := self.blue;\n  end;\n  result.alpha := self.alpha;\nend;\n\nprocedure TExpandedPixelBasicHelper.FromFPColor(const AValue: TFPColor;\n  AGammaExpansion: boolean);\nbegin\n  if AGammaExpansion then\n  begin\n    self.red := GammaExpansionW(AValue.red);\n    self.green := GammaExpansionW(AValue.green);\n    self.blue := GammaExpansionW(AValue.blue);\n  end else\n  begin\n    self.red := AValue.red;\n    self.green := AValue.green;\n    self.blue := AValue.blue;\n  end;\n  self.alpha := AValue.alpha;\nend;\n\nfunction TExpandedPixelBasicHelper.ToColor: TColor;\nbegin\n  result := BGRAToColor(GammaCompression(self));\nend;\n\nprocedure TExpandedPixelBasicHelper.FromColor(const AValue: TColor);\nbegin\n  self := GammaExpansion(ColorToBGRA(AValue));\nend;\n\nfunction TExpandedPixelBasicHelper.ToBGRAPixel: TBGRAPixel;\nbegin\n  result := GammaCompression(Self);\nend;\n\nprocedure TExpandedPixelBasicHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin\n  Self := GammaExpansion(AValue);\nend;\n\nfunction TExpandedPixelBasicHelper.ToHSLAPixel: THSLAPixel;\nbegin\n  result := ExpandedToHSLA(Self);\nend;\n\nprocedure TExpandedPixelBasicHelper.FromHSLAPixel(const AValue: THSLAPixel);\nbegin\n  Self := HSLAToExpanded(AValue);\nend;\n\nfunction TExpandedPixelBasicHelper.ToGSBAPixel: TGSBAPixel;\nbegin\n  result := ExpandedToGSBA(Self);\nend;\n\nprocedure TExpandedPixelBasicHelper.FromGSBAPixel(const AValue: TGSBAPixel);\nbegin\n  Self := GSBAToExpanded(AValue);\nend;\n\nprocedure TExpandedPixelBasicHelper.FromGSBAPixel(const AValue: THSLAPixel);\nbegin\n  Self := GSBAToExpanded(AValue);\nend;\n\noperator := (const AValue: TExpandedPixel): TColor;\nbegin Result := BGRAToColor(GammaCompression(AValue)); end;\n\noperator := (const AValue: TColor): TExpandedPixel;\nbegin Result := GammaExpansion(ColorToBGRA(AValue)) end;\n\noperator :=(const Source: TExpandedPixel): TBGRAPixel;\nbegin\n  result := GammaCompression(Source);\nend;\n\noperator :=(const Source: TBGRAPixel): TExpandedPixel;\nbegin\n  result := GammaExpansion(Source);\nend;\n\n{ TFPColorBasicHelper }\n\nfunction TFPColorBasicHelper.ToColor: TColor;\nbegin\n  result := FPColorToTColor(self);\nend;\n\nprocedure TFPColorBasicHelper.FromColor(const AValue: TColor);\nbegin\n  self := TColorToFPColor(AValue);\nend;\n\nfunction TFPColorBasicHelper.ToBGRAPixel: TBGRAPixel;\nbegin\n  result := FPColorToBGRA(self);\nend;\n\nprocedure TFPColorBasicHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin\n  self := BGRAToFPColor(AValue);\nend;\n\nfunction TFPColorBasicHelper.ToExpanded(AGammaExpansion: boolean): TExpandedPixel;\nbegin\n  result.FromFPColor(self, AGammaExpansion);\nend;\n\nprocedure TFPColorBasicHelper.FromExpanded(const AValue: TExpandedPixel;\n  AGammaCompression: boolean);\nbegin\n  self := AValue.ToFPColor(AGammaCompression);\nend;\n\nfunction TFPColorBasicHelper.ToHSLAPixel(AGammaExpansion: boolean): THSLAPixel;\nbegin\n  result.FromFPColor(self, AGammaExpansion);\nend;\n\nprocedure TFPColorBasicHelper.FromHSLAPixel(const AValue: THSLAPixel;\n  AGammaCompression: boolean);\nbegin\n  FromExpanded(AValue.ToExpanded, AGammaCompression);\nend;\n\nfunction TFPColorBasicHelper.ToGSBAPixel(AGammaExpansion: boolean): TGSBAPixel;\nbegin\n  result.FromFPColor(self, AGammaExpansion);\nend;\n\nprocedure TFPColorBasicHelper.FromGSBAPixel(const AValue: TGSBAPixel;\n  AGammaCompression: boolean);\nbegin\n  FromExpanded(AValue.ToExpanded, AGammaCompression);\nend;\n\nprocedure TFPColorBasicHelper.FromGSBAPixel(const AValue: THSLAPixel;\n  AGammaCompression: boolean);\nbegin\n  FromExpanded(AValue.ToExpanded, AGammaCompression);\nend;\n\n{ THSLAPixelBasicHelper }\n\nfunction THSLAPixelBasicHelper.ToColor: TColor;\nbegin\n  result := BGRAToColor(HSLAToBGRA(self));\nend;\n\nprocedure THSLAPixelBasicHelper.FromColor(const AValue: TColor);\nbegin\n  self := BGRAToHSLA(ColorToBGRA(AValue));\nend;\n\nfunction THSLAPixelBasicHelper.ToBGRAPixel: TBGRAPixel;\nbegin\n  result := HSLAToBGRA(self);\nend;\n\nprocedure THSLAPixelBasicHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin\n  self := BGRAToHSLA(AValue);\nend;\n\nfunction THSLAPixelBasicHelper.ToGSBAPixel: TGSBAPixel;\nbegin\n  result := HSLAToGSBA(self);\nend;\n\nprocedure THSLAPixelBasicHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin\n  self := GSBAToHSLA(AValue);\nend;\n\nfunction THSLAPixelBasicHelper.ToExpanded: TExpandedPixel;\nbegin\n  result := HSLAToExpanded(Self);\nend;\n\nprocedure THSLAPixelBasicHelper.FromExpanded(AValue: TExpandedPixel);\nbegin\n  Self := ExpandedToHSLA(AValue);\nend;\n\nfunction THSLAPixelBasicHelper.ToFPColor(AGammaCompression: boolean): TFPColor;\nbegin\n  result.FromExpanded(self.ToExpanded, AGammaCompression);\nend;\n\nprocedure THSLAPixelBasicHelper.FromFPColor(AValue: TFPColor;\n  AGammaExpansion: boolean);\nbegin\n  FromExpanded(AValue.ToExpanded(AGammaExpansion));\nend;\n\noperator :=(const Source: THSLAPixel): TBGRAPixel;\nbegin\n  result := HSLAToBGRA(Source);\nend;\n\noperator :=(const Source: TBGRAPixel): THSLAPixel;\nbegin\n  result := BGRAToHSLA(Source);\nend;\n\noperator :=(const Source: THSLAPixel): TExpandedPixel;\nbegin\n  result := HSLAToExpanded(Source);\nend;\n\noperator:=(const Source: TExpandedPixel): THSLAPixel;\nbegin\n  result := ExpandedToHSLA(Source);\nend;\n\noperator := (const AValue: TColor): THSLAPixel;\nbegin Result := BGRAToHSLA(ColorToBGRA(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TColor;\nbegin Result := BGRAToColor(HSLAToBGRA(AValue)) end;\n\n{ @abstract(Converts a color from RGB to Hue/Chroma/Value.)\n\n  - Hue is expressed as a Sextant from 0 to 5 and Position from 0 to 255.\n  - Chroma ranges from 0 to Value.\n  - Value ranges from 0 to 255.\n}\nprocedure RGBToByteStdHCV(ARed, AGreen, ABlue: byte; out ASextant, APosition, AChroma, AValue: byte);\nvar mini: Byte;\nbegin\n  if (ARed = AGreen) and (AGreen = ABlue) then\n  begin\n    ASextant := 0;\n    APosition := 0;\n    AChroma := 0;\n    AValue := ARed;\n    exit;\n  end;\n  AValue := max(max(ARed, AGreen), ABlue);\n  mini := min(min(ARed, AGreen), ABlue);\n  AChroma := AValue - mini;\n  if ARed = AValue then\n  begin\n    if AGreen >= ABlue then\n    begin\n      ASextant := 0;\n      APosition := AGreen - mini;\n    end else\n    begin\n      ASextant := 5;\n      APosition := AValue - ABlue;\n    end;\n  end else\n  if AGreen = AValue then\n  begin\n    if ABlue >= ARed then\n    begin\n      ASextant := 2;\n      APosition := ABlue - mini;\n    end else\n    begin\n      ASextant := 1;\n      APosition := AValue - ARed;\n    end;\n  end else // ABlue = AValue\n  begin\n    if ARed >= AGreen then\n    begin\n      ASextant := 4;\n      APosition := ARed - mini;\n    end else\n    begin\n      ASextant := 3;\n      APosition := AValue - AGreen;\n    end;\n  end;\n  // normalize position\n  APosition := (APosition * 255 + (AChroma shr 1)) div AChroma;\nend;\n\n{ @abstract(Converts a color expressed as Hue/Chroma/Value into sRGB.)\n\n  - Hue is expressed as a Sextant from 0 to 5 and Position from 0 to 255.\n  - Chroma ranges from 0 to Value.\n  - Value ranges from 0 to 255.\n}\nprocedure ByteStdHCVToRGB(ASextant, APosition, AChroma, AValue: byte; out ARed, AGreen, ABlue: byte);\nvar\n  mini: Byte;\nbegin\n  if AChroma = 0 then\n  begin\n    ARed := AValue;\n    AGreen := AValue;\n    ABlue := AValue;\n    exit;\n  end;\n  if AChroma > AValue then AChroma := AValue;\n  // denormalize position\n  APosition := (APosition * AChroma + 127) div 255;\n  mini := AValue - AChroma;\n  case ASextant of\n  0: begin\n    ARed := AValue;\n    AGreen := mini + APosition;\n    ABlue := mini;\n  end;\n  1: begin\n    ARed := AValue - APosition;\n    AGreen := AValue;\n    ABlue := mini;\n  end;\n  2: begin\n    ARed := mini;\n    AGreen := AValue;\n    ABlue := mini + APosition;\n  end;\n  3: begin\n    ARed := mini;\n    AGreen := AValue - APosition;\n    ABlue := AValue;\n  end;\n  4: begin\n    ARed := mini + APosition;\n    AGreen := mini;\n    ABlue := AValue;\n  end;\n  5: begin\n    ARed := AValue;\n    AGreen := mini;\n    ABlue := AValue - APosition;\n  end;\n  else\n    raise Exception.Create('Invalid sextant');\n  end;\nend;\n\nprocedure RGBToByteStdHSL(ARed, AGreen, ABlue: byte; out ASextant, APosition,\n  ASaturation, ALightness: byte);\nvar\n  value, chroma, maxChroma: byte;\nbegin\n  RGBToByteStdHCV(ARed, AGreen, ABlue, ASextant, APosition, chroma, value);\n  ALightness := max(value - (chroma shr 1), 0);\n  // normalize chroma\n  if ALightness >= 128 then\n    maxChroma := (255 - ALightness) shl 1 + 1\n  else\n    maxChroma := ALightness shl 1;\n  if maxChroma = 0 then\n    ASaturation := 0\n  else\n    ASaturation := (chroma * 255 + (maxChroma shr 1)) div maxChroma;\nend;\n\nprocedure ByteStdHSLToRGB(ASextant, APosition, ASaturation, ALightness: byte; out\n  ARed, AGreen, ABlue: byte);\nvar value, chroma, maxChroma: byte;\nbegin\n  // denormalize chroma\n  if ALightness >= 128 then\n    maxChroma := (255 - ALightness) shl 1 + 1\n  else\n    maxChroma := ALightness shl 1;\n  chroma := (ASaturation * maxChroma + 127) div 255;\n\n  value := min(ALightness + (chroma shr 1), 255);\n  ByteStdHCVToRGB(ASextant, APosition, chroma, value, ARed, AGreen, ABlue);\nend;\n\nprocedure RGBToByteStdHSV(ARed, AGreen, ABlue: byte; out ASextant, APosition,\n  ASaturation, AValue: byte);\nvar\n  chroma: byte;\nbegin\n  RGBToByteStdHCV(ARed, AGreen, ABlue, ASextant, APosition, chroma, AValue);\n  // normalize chroma\n  if AValue = 0 then\n    ASaturation := 0\n  else\n    ASaturation := (chroma * 255 + (AValue shr 1)) div AValue;\nend;\n\nprocedure ByteStdHSVToRGB(ASextant, APosition, ASaturation, AValue: byte; out\n  ARed, AGreen, ABlue: byte);\nvar chroma: byte;\nbegin\n  // denormalize chroma\n  chroma := (ASaturation * AValue + 127) div 255;\n  ByteStdHCVToRGB(ASextant, APosition, chroma, AValue, ARed, AGreen, ABlue);\nend;\n\nfunction GetByteStdLightness(ARed, AGreen, ABlue: byte): byte;\nbegin\n  result := (max(max(ARed, AGreen), ABlue) + min(min(ARed, AGreen), ABlue) + 1) shr 1;\nend;\n\n{ TGSBAPixelBasicHelper }\n\nfunction TGSBAPixelBasicHelper.ToColor: TColor;\nbegin\n  result := BGRAToColor(GSBAToBGRA(self));\nend;\n\nprocedure TGSBAPixelBasicHelper.FromColor(const AValue: TColor);\nbegin\n  self := BGRAToGSBA(ColorToBGRA(AValue));\nend;\n\nfunction TGSBAPixelBasicHelper.ToBGRAPixel: TBGRAPixel;\nbegin\n  result := GSBAToBGRA(self);\nend;\n\nprocedure TGSBAPixelBasicHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin\n  self := BGRAToGSBA(AValue);\nend;\n\nfunction TGSBAPixelBasicHelper.ToHSLAPixel: THSLAPixel;\nbegin\n  result := GSBAToHSLA(self);\nend;\n\nprocedure TGSBAPixelBasicHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin\n  self := HSLAToGSBA(AValue);\nend;\n\nfunction TGSBAPixelBasicHelper.ToExpanded: TExpandedPixel;\nbegin\n  result := GSBAToExpanded(self);\nend;\n\nprocedure TGSBAPixelBasicHelper.FromExpanded(AValue: TExpandedPixel);\nbegin\n  self := ExpandedToGSBA(AValue);\nend;\n\nfunction TGSBAPixelBasicHelper.ToFPColor(AGammaCompression: boolean): TFPColor;\nbegin\n  result.FromGSBAPixel(self, AGammaCompression);\nend;\n\nprocedure TGSBAPixelBasicHelper.FromFPColor(AValue: TFPColor;\n  AGammaExpansion: boolean);\nbegin\n  FromExpanded(AValue.ToExpanded(AGammaExpansion));\nend;\n\noperator :=(const Source: TGSBAPixel): TBGRAPixel;\nbegin\n  result := GSBAToBGRA(Source);\nend;\n\noperator :=(const Source: TBGRAPixel): TGSBAPixel;\nbegin\n  result := BGRAToGSBA(Source);\nend;\n\noperator :=(const Source: TGSBAPixel): TExpandedPixel;\nbegin\n  result := GSBAToExpanded(Source);\nend;\n\noperator:=(const Source: TExpandedPixel): TGSBAPixel;\nbegin\n  result := ExpandedToGSBA(Source);\nend;\n\noperator := (const AValue: TColor): TGSBAPixel;\nbegin Result := BGRAToGSBA(ColorToBGRA(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TColor;\nbegin Result := BGRAToColor(GSBAToBGRA(AValue)) end;\n\noperator :=(const Source: TGSBAPixel): THSLAPixel;\nbegin\n  result := THSLAPixel(Pointer(@Source)^);\nend;\n\noperator:=(const Source: THSLAPixel): TGSBAPixel;\nbegin\n  result := TGSBAPixel(Pointer(@Source)^);\nend;\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bezier.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\n{=== Geometry types ===}\n{==== Bézier curves ====}\n\ntype\n  {* Definition of a Bézier curve of order 3. It has two control points _c1_ and _c2_.\n     Those are not reached by the curve in general. }\n  TCubicBezierCurve = object\n  private\n    {** Compute the points using the simple approach of computing for each time value }\n    function SimpleComputePoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\n  public\n    {** Starting point (reached) }\n    p1: TPointF;\n    {** First control point (not reached by the curve) }\n    c1: TPointF;\n    {** Second control point (not reached by the curve) }\n    c2: TPointF;\n    {** Ending point (reached) }\n    p2: TPointF;\n    {** Computes the point at time _t_, varying from 0 to 1 }\n    function ComputePointAt(t: single): TPointF;\n    {** Split the curve in two such that _ALeft.p2_ = _ARight.p1_ }\n    procedure Split(out ALeft, ARight: TCubicBezierCurve);\n    {** Compute an approximation of the length of the curve. _AAcceptedDeviation_ indicates the\n       maximum orthogonal distance that is ignored and approximated by a straight line. }\n    function ComputeLength(AAcceptedDeviation: single = 0.1): single;\n    {** Computes a polygonal approximation of the curve. _AAcceptedDeviation_ indicates the\n       maximum orthogonal distance that is ignored and approximated by a straight line.\n       _AIncludeFirstPoint_ indicates if the first point must be included in the array }\n    function ToPoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\n    {** Copy the curve to the given path }\n    procedure CopyToPath(ADest: IBGRAPath);\n    {** Computes the rectangular bounds }\n    function GetBounds: TRectF;\n  end;\n\n  {** Creates a structure for a cubic Bézier curve }\n  function BezierCurve(origin, control1, control2, destination: TPointF) : TCubicBezierCurve; overload;\n\ntype\n  {* Definition of a Bézier curve of order 2. It has one control point }\n  TQuadraticBezierCurve = object\n  private\n    {** Compute the points using the simple approach of computing for each time value }\n    function SimpleComputePoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\n    {** Computes the position where the curve has its extremum }\n    function ComputeExtremumPositionOutsideSegment: single;\n  public\n    {** Starting point (reached) }\n    p1: TPointF;\n    {** Control point (not reached by the curve) }\n    c: TPointF;\n    {** Ending point (reached) }\n    p2: TPointF;\n    {** Computes the point at time _t_, varying from 0 to 1 }\n    function ComputePointAt(t: single): TPointF;\n    {** Split the curve in two such that _ALeft.p2_ = _ARight.p1_ }\n    procedure Split(out ALeft, ARight: TQuadraticBezierCurve);\n    {** Compute the **exact** length of the curve }\n    function ComputeLength: single;\n    {** Computes a polygonal approximation of the curve. _AAcceptedDeviation_ indicates the\n       maximum orthogonal distance that is ignored and approximated by a straight line.\n       _AIncludeFirstPoint_ indicates if the first point must be included in the array }\n    function ToPoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\n    {** Copy the curve to the given path }\n    procedure CopyToPath(ADest: IBGRAPath);\n    {** Computes the rectangular bounds }\n    function GetBounds: TRectF;\n  end;\n\n  {** Creates a structure for a quadratic Bézier curve }\n  function BezierCurve(origin, control, destination: TPointF) : TQuadraticBezierCurve; overload;\n  {** Creates a structure for a quadratic Bézier curve without curvature }\n  function BezierCurve(origin, destination: TPointF) : TQuadraticBezierCurve; overload;\n\ntype\n  {** Array of single-precision floating point values }\n  ArrayOfSingle = array of single;\n\n  {* Quasi-standard rational quadratic Bezier curve. It has one control point _c_ with a weight.\n    To transform a rational quadratic Bezier curve with an affin transformation, you\n    only have to transform the three points and leave the weight as it is. }\n  TRationalQuadraticBezierCurve = object\n    {** Starting point }\n    p1: TPointF;\n    {** Control point }\n    c: TPointF;\n    {** End point }\n    p2 : TPointF;\n    {** Weight of control point. The curve is an arc of:\n       - ellipse when _weight_ in ]-1; 1[\n       - parabola when _weight_ = 1 (classical quadratic Bezier curve)\n       - hyperbola when _weight_ > 1\n\n       A negative weight give the complementary curve for its positive counterpart.\n       So when _weight_ <= -1 the curve is discontinuous:\n      - infinite branches of parabola when _weight_ = -1\n      - infinite branches of hyperbola and symetric hyperbola when _weight_ < -1\n       }\n    weight : single;\n  private\n    {** Checks whether the curve is infinitely long }\n    function GetIsInfinite: boolean;\n    {** Compute points in the general case }\n    function InternalComputePoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\n    {** Computes the points relevant to compute bounds }\n    function GetBoundingPositions(AIncludeFirstAndLast: boolean; ASorted: boolean): ArrayOfSingle;\n  public\n    {** Compute a point at the specified time (_t_ in [0; 1]). The curve is defined by:\n\n        p = ((1-t)^2 * _p1_ + 2 * t * (1-t) * _weight_ * _c_ + t^2*_p2_) / (1-t)^2 + 2 * t * (1-t) * _weight_ + t^2) }\n    function ComputePointAt(t: single): TPointF;\n    {** Compute the length of the curve }\n    function ComputeLength(AAcceptedDeviation: single = 0.1): single;\n    {** Computes the points of the curve }\n    function ToPoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload;\n    {** Computes the points of the curve by providing where the infinite curve can stop.\n\n        }\n    function ToPoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload;\n    {** Compute the rectangular bounds of the curve }\n    function GetBounds: TRectF;\n    {** Split into two curves }\n    procedure Split(out ALeft, ARight: TRationalQuadraticBezierCurve);\n    {** Is the curve infinitely long }\n    property IsInfinite: boolean read GetIsInfinite;\n  end;\n\n  {** Creates a rational Bézier curve }\n  function BezierCurve(origin, control, destination: TPointF; Aweight:single) : TRationalQuadraticBezierCurve; overload;\n\ntype\n  {* Enumerates modes for handling curves in a Bezier curve sequence }\n  TEasyBezierCurveMode = (\n    {** Automatically determines whether to curve or form an angle based on the points' positions }\n    cmAuto,\n    {** Forces a curve at the point }\n    cmCurve,\n    {** Forces an angle at the point, meaning the point is reached and forms an angle instead of a curve }\n    cmAngle\n  );\n\n  {* Function type for transforming Bezier curve points }\n  TEasyBezierPointTransformFunc = function(APoint: PPointF; AData: Pointer): TPointF of object;\n\n  {* @abstract(Object representing an easy-to-use Bezier curve.)\n\n     Curve is configured with approximate points,\n     with configurable curve modes and transformation functions }\n  TEasyBezierCurve = object\n  private\n    {** Retrieves the curve mode for a specified point index }\n    function GetCurveMode(AIndex: integer): TEasyBezierCurveMode;\n    {** Gets the starting point of the curve }\n    function GetCurveStartPoint: TPointF;\n    {** Retrieves the point at a specified index }\n    function GetPoint(AIndex: integer): TPointF;\n    {** Gets the total number of points in the curve }\n    function GetPointCount: integer;\n    {** Sets whether the curve is closed }\n    procedure SetClosed(AValue: boolean);\n    {** Sets the curve mode for a specified point index }\n    procedure SetCurveMode(AIndex: integer; AValue: TEasyBezierCurveMode);\n    {** Sets the minimum dot product to form a curve instead of an angle }\n    procedure SetMinimumDotProduct(AValue: single);\n    {** Sets the point at a specified index }\n    procedure SetPoint(AIndex: integer; AValue: TPointF);\n\n  protected\n    {** Computed Bézier control points }\n    FCurves: array of record\n      isCurvedToNext,isCurvedToPrevious: boolean;\n      Center,ControlPoint,NextCenter: TPointF;\n    end;\n    {** Whether the curve need to be recomputed }\n    FInvalidated: boolean;\n    {** Definition of the curve by the user }\n    FPoints: array of record\n               Coord: TPointF;\n               CurveMode: TEasyBezierCurveMode;\n             end;\n    {** Minimum dot product to form a curve instead of an angle }\n    FMinimumDotProduct: single;\n    {** Is the curve is closed }\n    FClosed: boolean;\n    {** Checks whether two vectors have the minimum dot product to suggest a curve.\n        _start1_ and _end1_ are the indices for the first vector.\n        _start2_ and _end2_ for the second vector. }\n    function MaybeCurve(start1, end1, start2, end2: integer): boolean;\n    {** Computes the control points for the classical quadratic curve }\n    procedure ComputeQuadraticCurves;\n    {** Fonction to apply no transformation }\n    function PointTransformNone(APoint: PPointF; {%H-}AData: Pointer): TPointF;\n    {** Fonction to apply an offset }\n    function PointTransformOffset(APoint: PPointF; AData: Pointer): TPointF;\n  public\n    {** Initializes the Bezier curve object }\n    procedure Init;\n    {** Clears all points and resets the curve }\n    procedure Clear;\n    {** Sets the points and curve mode for the entire curve }\n    procedure SetPoints(APoints: array of TPointF; ACurveMode: TEasyBezierCurveMode); overload;\n    {** Sets the points and individual curve modes for each point }\n    procedure SetPoints(APoints: array of TPointF; ACurveMode: array of TEasyBezierCurveMode); overload;\n    {** Sets a subset of points and a single curve mode for these points }\n    procedure SetPoints(APoints: array of TPointF; ACurveMode: TEasyBezierCurveMode; AStart, ACount: integer); overload;\n    {** Sets a subset of points and individual curve modes for each of these points }\n    procedure SetPoints(APoints: array of TPointF; ACurveMode: array of TEasyBezierCurveMode; AStart, ACount: integer); overload;\n    {** Copies the Bezier curve to a path object }\n    procedure CopyToPath(ADest: IBGRAPath); overload;\n    {** Copies the Bezier curve to a path object with an offset and optional reversal }\n    procedure CopyToPath(ADest: IBGRAPath; AOffset: TPointF; AReverse: boolean = false); overload;\n    {** Copies the Bezier curve to a path object with a custom transformation }\n    procedure CopyToPath(ADest: IBGRAPath; ATransformFunc: TEasyBezierPointTransformFunc; ATransformData: Pointer; AReverse: boolean = false); overload;\n\n    {** Coordinates of the points }\n    property Point[AIndex: integer]: TPointF read GetPoint write SetPoint;\n    {** Mode to use for each point }\n    property CurveMode[AIndex: integer]: TEasyBezierCurveMode read GetCurveMode write SetCurveMode;\n    {** Number of points }\n    property PointCount: integer read GetPointCount;\n    {** Minimum dot product to form a curve rather than an angle when using _cmAuto_ mode }\n    property MinimumDotProduct: single read FMinimumDotProduct write SetMinimumDotProduct;\n    {** Gets or sets whether to close the curve }\n    property Closed: boolean read FClosed write SetClosed;\n    {** Coordinates of the starting point }\n    property CurveStartPoint: TPointF read GetCurveStartPoint;\n    {** Converts the Bezier curve into an array of points }\n    function ToPoints: ArrayOfTPointF;\n    {** Computes the total length of the Bezier curve }\n    function ComputeLength: single;\n  end;\n\n  {** Minimum dot product, corresponding to approximately 45 degrees, to form a curve instead of an angle }\n  const EasyBezierDefaultMinimumDotProduct = 0.707;\n\n  {* Create a TEasyBezierCurve object with only one curve mode }\n  function EasyBezierCurve(APoints: array of TPointF; AClosed: boolean; ACurveMode: TEasyBezierCurveMode;\n    AMinimumDotProduct: single = EasyBezierDefaultMinimumDotProduct): TEasyBezierCurve; overload;\n\n  {* Create a TEasyBezierCurve object with a curve mode for each point }\n  function EasyBezierCurve(APoints: array of TPointF; AClosed: boolean; ACurveMode: array of TEasyBezierCurveMode;\n    AMinimumDotProduct: single = EasyBezierDefaultMinimumDotProduct): TEasyBezierCurve; overload;\n\n  {* Create a TEasyBezierCurve object with a subsection of the array of points, with only one curve mode }\n  function EasyBezierCurve(APoints: array of TPointF; AStart, ACount: integer; AClosed: boolean; ACurveMode: TEasyBezierCurveMode;\n    AMinimumDotProduct: single = EasyBezierDefaultMinimumDotProduct): TEasyBezierCurve; overload;\n\n  {* Create a TEasyBezierCurve object with a subsection of the array of points, with a curve mode for each point }\n  function EasyBezierCurve(APoints: array of TPointF; AStart, ACount: integer; AClosed: boolean; ACurveMode: array of TEasyBezierCurveMode;\n    AMinimumDotProduct: single = EasyBezierDefaultMinimumDotProduct): TEasyBezierCurve; overload;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n//-------------- Bézier curves definitions ----------------\n// See : http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n// Define a Bézier curve with two control points.\nfunction BezierCurve(origin, control1, control2, destination: TPointF): TCubicBezierCurve;\nbegin\n  result.p1 := origin;\n  result.c1 := control1;\n  result.c2 := control2;\n  result.p2 := destination;\nend;\n\n// Define a Bézier curve with one control point.\nfunction BezierCurve(origin, control, destination: TPointF\n  ): TQuadraticBezierCurve;\nbegin\n  result.p1 := origin;\n  result.c := control;\n  result.p2 := destination;\nend;\n\n//straight line\nfunction BezierCurve(origin, destination: TPointF): TQuadraticBezierCurve;\nbegin\n  result.p1 := origin;\n  result.c := (origin+destination)*0.5;\n  result.p2 := destination;\nend;\n\n// rational Bezier curve\nfunction BezierCurve(origin, control, destination: TPointF; Aweight:single) : TRationalQuadraticBezierCurve;\nbegin\n  result.p1 := origin;\n  result.c := control;\n  result.p2 := destination;\n  result.weight := Aweight;\nend;\n\nfunction ComputeBezierCurvePrecision(pt1, pt2, pt3, pt4: TPointF; AAcceptedDeviation: single = 0.1): integer;\nvar\n  len: single;\nbegin\n  len    := sqr(pt1.x - pt2.x) + sqr(pt1.y - pt2.y);\n  len    := max(len, sqr(pt3.x - pt2.x) + sqr(pt3.y - pt2.y));\n  len    := max(len, sqr(pt3.x - pt4.x) + sqr(pt3.y - pt4.y));\n  Result := round(sqrt(sqrt(len)/ AAcceptedDeviation) * 1);\n  if Result<=0 then Result:=1;\nend;\n\n{ TCubicBezierCurve }\n\nfunction TCubicBezierCurve.SimpleComputePoints(AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nvar\n  t,step: single;\n  i,nb: Integer;\n  a,b,c: TpointF;\nbegin\n  nb := ComputeBezierCurvePrecision(p1,c1,c2,p2, AAcceptedDeviation/2);\n  if nb <= 1 then nb := 2;\n  a:=p2-p1+3*(c1-c2);\n  b:=3*(p1+c2)-6*c1;\n  c:=3*(c1-p1);\n  result := nil;\n  if AIncludeFirstPoint then\n  begin\n    setlength(result,nb);\n    result[0] := p1;\n    result[nb-1] := p2;\n    step := 1/(nb-1);\n    t := 0;\n    for i := 1 to nb-2 do\n    begin\n      IncF(t, step);\n      result[i] := p1+t*(c+t*(b+t*a))\n    end;\n  end else\n  begin\n    setlength(result,nb-1);\n    result[nb-2] := p2;\n    step := 1/(nb-1);\n    t := 0;\n    for i := 0 to nb-3 do\n    begin\n      IncF(t, step);\n      result[i] := p1+t*(c+t*(b+t*a))\n    end;\n  end;\nend;\n\nfunction TCubicBezierCurve.ComputePointAt(t: single): TPointF;\nvar\n  f1,f2,f3,f4: single;\nbegin\n  f1 := (1-t);\n  f2 := f1*f1;\n  f1 := f1 * f2;\n  f2 := f2 * t*3;\n  f4 := t*t;\n  f3 := f4*(1-t)*3;\n  f4 := f4 * t;\n\n  result.x := f1*p1.x + f2*c1.x +\n              f3*c2.x + f4*p2.x;\n  result.y := f1*p1.y + f2*c1.y +\n              f3*c2.y + f4*p2.y;\nend;\n\nprocedure TCubicBezierCurve.Split(out ALeft, ARight: TCubicBezierCurve);\nvar midc: TPointF;\nbegin\n  ALeft.p1 := p1;\n  ALeft.c1 := 0.5*(p1+c1);\n  ARight.p2 := p2;\n  ARight.c2 := 0.5*(p2+c2);\n  midc := 0.5*(c1+c2);\n  ALeft.c2 := 0.5*(ALeft.c1+midc);\n  ARight.c1 := 0.5*(ARight.c2+midc);\n  ALeft.p2 := 0.5*(ALeft.c2+ARight.c1);\n  ARight.p1 := ALeft.p2;\nend;\n\nfunction TCubicBezierCurve.ComputeLength(AAcceptedDeviation: single): single;\nvar\n  t,step: single;\n  i,nb: Integer;\n  curCoord,nextCoord: TPointF;\nbegin\n  nb := ComputeBezierCurvePrecision(p1,c1,c2,p2, AAcceptedDeviation);\n  if nb <= 1 then nb := 2;\n  result := 0;\n  curCoord := p1;\n  step := 1/(nb-1);\n  t := 0;\n  for i := 1 to nb-2 do\n  begin\n    IncF(t, step);\n    nextCoord := ComputePointAt(t);\n    IncF(result, VectLen(nextCoord-curCoord));\n    curCoord := nextCoord;\n  end;\n  IncF(result, VectLen(p2-curCoord));\nend;\n\nfunction TCubicBezierCurve.ToPoints(AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nbegin\n  result := SimpleComputePoints(AAcceptedDeviation, AIncludeFirstPoint);\nend;\n\nprocedure TCubicBezierCurve.CopyToPath(ADest: IBGRAPath);\nbegin\n  ADest.lineTo(p1);\n  ADest.bezierCurveTo(c1,c2,p2);\nend;\n\n{//The following function computes by splitting the curve. It is slower than the simple function.\nfunction TCubicBezierCurve.ToPoints(AAcceptedDeviation: single;\n  ARelativeDeviation: boolean): ArrayOfTPointF;\n  function ToPointsRec(const ACurve: TCubicBezierCurve): ArrayOfTPointF;\n  var simpleLen2: single;\n    v: TPointF;\n    left,right: TCubicBezierCurve;\n    subLeft,subRight: ArrayOfTPointF;\n    maxDev,dev1,dev2: single;\n    subLeftLen: integer;\n\n    procedure ComputeExtremum;\n    begin\n      raise Exception.Create('Not implemented');\n      result := nil;\n    end;\n\n  begin\n    v := ACurve.p2-ACurve.p1;\n    simpleLen2 := v*v;\n    if simpleLen2 = 0 then\n    begin\n      if (ACurve.c1.x = ACurve.p1.x) and (ACurve.c1.y = ACurve.p1.y) and\n         (ACurve.c2.x = ACurve.p2.x) and (ACurve.c2.y = ACurve.p2.y) then\n      begin\n        result := nil;\n        exit;\n      end;\n      ACurve.Split(left,right);\n    end else\n    begin\n      ACurve.Split(left,right);\n      if not ARelativeDeviation then simpleLen2:= sqrt(simpleLen2);\n      maxDev := AAcceptedDeviation*simpleLen2;\n      if abs(PointF(v.y,-v.x) * (left.p2-ACurve.p1)) <= maxDev then\n      begin\n        dev1 := PointF(v.y,-v.x) * (ACurve.c1-ACurve.p1);\n        dev2 := PointF(v.y,-v.x) * (ACurve.c2-ACurve.p2);\n        if not ((Sign(dev1)<>Sign(dev2)) and ((abs(dev1) > maxDev) or (abs(dev2) > maxDev))) then\n        begin\n          result := nil;\n          if ((ACurve.c1-ACurve.p1)*v < -maxDev) or\n             ((ACurve.c1-ACurve.p2)*v > maxDev) or\n             ((ACurve.c2-ACurve.p1)*v < -maxDev) or\n             ((ACurve.c2-ACurve.p2)*v > maxDev) then\n            ComputeExtremum;\n          exit;\n        end;\n      end;\n    end;\n    subRight := ToPointsRec(right);\n    subLeft := ToPointsRec(left);\n    subLeftLen := length(subLeft);\n\n    //avoid leaving a gap in memory\n    result := subLeft;\n    subLeft := nil;\n    setlength(result, subLeftLen+1+length(subRight));\n    result[subLeftLen] := left.p2;\n    move(subRight[0], result[subLeftLen+1], length(subRight)*sizeof(TPointF));\n  end;\n\nvar\n  subLen: integer;\n\nbegin\n  if (c1.x = p1.x) and (c1.y = p1.y) and\n     (c1.x = c2.x) and (c1.y = c2.y) and\n     (c1.x = p2.x) and (c1.y = p2.y) then\n  begin\n    setlength(result,1);\n    result[0] := c1;\n    exit;\n  end else\n  begin\n    result := ToPointsRec(self);\n    subLen := length(result);\n    setlength(result, length(result)+2);\n    move(result[0], result[1], subLen*sizeof(TPointF));\n    result[0] := p1;\n    result[high(result)] := p2;\n  end;\nend;}\n\nfunction TCubicBezierCurve.GetBounds: TRectF;\nconst precision = 1e-5;\n\n  procedure Include(pt: TPointF);\n  begin\n    if pt.x < result.Left then result.Left := pt.x\n    else if pt.x > result.Right then result.Right := pt.x;\n    if pt.y < result.Top then result.Top := pt.y\n    else if pt.y > result.Bottom then result.Bottom := pt.y;\n  end;\n\n  procedure IncludeT(t: single);\n  begin\n    if (t > 0) and (t < 1) then\n      Include(ComputePointAt(t));\n  end;\n\n  procedure IncludeABC(a,b,c: single);\n  var b2ac, sqrtb2ac: single;\n  begin\n    if abs(a) < precision then\n    begin\n      if abs(b) < precision then exit;\n      IncludeT(-c/b);\n    end else\n    begin\n      b2ac := sqr(b) - 4 * a * c;\n      if b2ac >= 0 then\n      begin\n        sqrtb2ac := sqrt(b2ac);\n        IncludeT((-b + sqrtb2ac) / (2 * a));\n        IncludeT((-b - sqrtb2ac) / (2 * a));\n      end;\n    end;\n  end;\n\nvar\n  va, vb, vc: TPointF;\n\nbegin\n  result.TopLeft := p1;\n  result.BottomRight := p1;\n  Include(p2);\n\n  vb := 6 * p1 - 12 * c1 + 6 * c2;\n  va := -3 * p1 + 9 * c1 - 9 * c2 + 3 * p2;\n  vc := 3 * c1 - 3 * p1;\n\n  IncludeABC(va.x,vb.x,vc.x);\n  IncludeABC(va.y,vb.y,vc.y);\nend;\n\n{ TQuadraticBezierCurve }\n\nfunction TQuadraticBezierCurve.SimpleComputePoints(AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nvar\n  t,step: single;\n  i,nb: Integer;\n  pA,pB : TpointF;\nbegin\n  nb := ComputeBezierCurvePrecision(p1,c,c,p2, AAcceptedDeviation);\n  if nb <= 1 then nb := 2;\n  pA := p2+p1-2*c; pB := 2*(c-p1);\n  result := nil;\n  if AIncludeFirstPoint then\n  begin\n    setlength(result,nb);\n    result[0] := p1;\n    result[nb-1] := p2;\n    step := 1/(nb-1);\n    t := 0;\n    for i := 1 to nb-2 do\n    begin\n      IncF(t, step);\n      result[i] := p1+t*(pB+t*pA);\n    end;\n  end else\n  begin\n    setlength(result,nb-1);\n    result[nb-2] := p2;\n    step := 1/(nb-1);\n    t := 0;\n    for i := 0 to nb-3 do\n    begin\n      IncF(t, step);\n      result[i] := p1+t*(pB+t*pA);\n    end;\n  end;\nend;\n\nfunction TQuadraticBezierCurve.ComputeExtremumPositionOutsideSegment: single;\nvar a,b: single;\n  v: TPointF;\nbegin\n  v := self.p2-self.p1;\n  a := (self.p1-2*self.c+self.p2)**v;\n  if a = 0 then //no solution\n  begin\n    result := -1;\n    exit;\n  end;\n  b := (self.c-self.p1)**v;\n  result := -b/a;\nend;\n\nfunction TQuadraticBezierCurve.ComputePointAt(t: single): TPointF;\nvar\n  rev_t,f2,t2: single;\nbegin\n  rev_t := (1-t);\n  f2 := rev_t*t*2;\n  rev_t := rev_t * rev_t;\n  t2 := t*t;\n  result.x := rev_t*p1.x + f2*c.x + t2*p2.x;\n  result.y := rev_t*p1.y + f2*c.y + t2*p2.y;\nend;\n\nprocedure TQuadraticBezierCurve.Split(out ALeft, ARight: TQuadraticBezierCurve);\nbegin\n  ALeft.p1 := p1;\n  ALeft.c := 0.5*(p1+c);\n  ARight.p2 := p2;\n  ARight.c := 0.5*(p2+c);\n  ALeft.p2 := 0.5*(ALeft.c+ARight.c);\n  ARight.p1 := ALeft.p2;\nend;\n\nfunction TQuadraticBezierCurve.ComputeLength: single;\nvar a,b: TPointF;\n  A_,AB_,B_,Sabc,A_2,A_32,B_2,BA,\n  divisor: single;\n  extremumPos: single;\n  extremum: TPointF;\nbegin\n  a := p1 - 2*c + p2;\n  b := 2*(c - p1);\n  A_ := 4*(a**a);\n  B_ := b**b;\n  if (A_ = 0) or (B_ = 0) then\n  begin\n    result := VectLen(p2-p1);\n    exit;\n  end;\n  AB_ := 4*(a**b);\n\n  A_2 := sqrt(A_);\n  B_2 := 2*sqrt(B_);\n  BA := AB_/A_2;\n  divisor := BA+B_2;\n  if divisor <= 0 then\n  begin\n    extremumPos:= ComputeExtremumPositionOutsideSegment;\n    if (extremumPos <= 0) or (extremumPos >= 1) then\n      result := VectLen(p2-p1)\n    else\n    begin\n      extremum := ComputePointAt(extremumPos);\n      result := VectLen(extremum-p1)+VectLen(p2-extremum);\n    end;\n    exit;\n  end;\n\n  Sabc := 2*sqrt(A_+AB_+B_);\n  A_32 := 2*A_*A_2;\n  result := ( A_32*Sabc +\n              A_2*AB_*(Sabc-B_2) +\n              (4*B_*A_-AB_*AB_)*ln( (2*A_2+BA+Sabc)/divisor )\n            )/(4*A_32);\nend;\n\nfunction TQuadraticBezierCurve.ToPoints(AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nbegin\n  result := SimpleComputePoints(AAcceptedDeviation, AIncludeFirstPoint);\nend;\n\nprocedure TQuadraticBezierCurve.CopyToPath(ADest: IBGRAPath);\nbegin\n  ADest.lineTo(p1);\n  ADest.quadraticCurveTo(c,p2);\nend;\n\nfunction TQuadraticBezierCurve.GetBounds: TRectF;\nconst precision = 1e-5;\n\n  procedure Include(pt: TPointF);\n  begin\n    if pt.x < result.Left then result.Left := pt.x\n    else if pt.x > result.Right then result.Right := pt.x;\n    if pt.y < result.Top then result.Top := pt.y\n    else if pt.y > result.Bottom then result.Bottom := pt.y;\n  end;\n\n  procedure IncludeT(t: single);\n  begin\n    if (t > 0) and (t < 1) then\n      Include(ComputePointAt(t));\n  end;\n\n  procedure IncludeABC(a,b,c: single);\n  var denom: single;\n  begin\n    denom := a-2*b+c;\n    if abs(denom) < precision then exit;\n    IncludeT((a-b)/denom);\n  end;\n\nbegin\n  result.TopLeft := p1;\n  result.BottomRight := p1;\n  Include(p2);\n\n  IncludeABC(p1.x,c.x,p2.x);\n  IncludeABC(p1.y,c.y,p2.y);\nend;\n\n{//The following function computes by splitting the curve. It is slower than the simple function\nfunction TQuadraticBezierCurve.ToPoints(AAcceptedDeviation: single; ARelativeDeviation: boolean): ArrayOfTPointF;\n\n  function ToPointsRec(const ACurve: TQuadraticBezierCurve): ArrayOfTPointF;\n  var simpleLen2: single;\n    v: TPointF;\n    left,right: TQuadraticBezierCurve;\n    subLeft,subRight: ArrayOfTPointF;\n    subLeftLen: Integer;\n\n    procedure ComputeExtremum;\n    var\n      t: single;\n    begin\n      t := ACurve.ComputeExtremumPositionOutsideSegment;\n      if (t <= 0) or (t >= 1) then\n        result := nil\n      else\n      begin\n        setlength(result,1);\n        result[0] := ACurve.ComputePointAt(t);\n      end;\n    end;\n\n  begin\n    v := ACurve.p2-ACurve.p1;\n    simpleLen2 := v*v;\n    if simpleLen2 = 0 then\n    begin\n      if (ACurve.c.x = ACurve.p1.x) and (ACurve.c.y = ACurve.p1.y) then\n      begin\n        result := nil;\n        exit;\n      end;\n      ACurve.Split(left,right);\n    end else\n    begin\n      ACurve.Split(left,right);\n      if not ARelativeDeviation then simpleLen2:= sqrt(simpleLen2);\n      if abs(PointF(v.y,-v.x) * (left.p2-ACurve.p1))\n          <= AAcceptedDeviation*simpleLen2 then\n      begin\n        result := nil;\n        if ((ACurve.c-ACurve.p1)*v < -AAcceptedDeviation*simpleLen2) or\n           ((ACurve.c-ACurve.p2)*v > AAcceptedDeviation*simpleLen2) then\n          ComputeExtremum;\n        exit;\n      end;\n    end;\n    subRight := ToPointsRec(right);\n    subLeft := ToPointsRec(left);\n    subLeftLen := length(subLeft);\n\n    //avoid leaving a gap in memory\n    result := subLeft;\n    subLeft := nil;\n    setlength(result, subLeftLen+1+length(subRight));\n    result[subLeftLen] := left.p2;\n    move(subRight[0], result[subLeftLen+1], length(subRight)*sizeof(TPointF));\n  end;\n\nvar\n  subLen: integer;\n\nbegin\n  if (c.x = p1.x) and (c.y = p1.y) and\n     (c.x = p2.x) and (c.y = p2.y) then\n  begin\n    setlength(result,1);\n    result[0] := c;\n    exit;\n  end else\n  begin\n    result := ToPointsRec(self);\n    subLen := length(result);\n    setlength(result, length(result)+2);\n    move(result[0], result[1], subLen*sizeof(TPointF));\n    result[0] := p1;\n    result[high(result)] := p2;\n  end;\nend;}\n\n{ TRationalQuadraticBezierCurve }\n\nfunction TRationalQuadraticBezierCurve.GetIsInfinite: boolean;\nbegin\n  result:= (weight <= -1);\nend;\n\nfunction TRationalQuadraticBezierCurve.InternalComputePoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nvar\n  pA,pB : TpointF;\n  a1,b1: single;\n\n  function InternalComputeAt(t: single): TPointF;\n  var\n    den: single;\n  begin\n    den := (1+t*(b1+t*a1));\n    if den <> 0 then\n       result := (p1+t*(pB+t*pA))*(1/den)\n    else\n       result := EmptyPointF\n  end;\n\n  procedure ComputeFactors;\n  var\n    c2 : TpointF;\n    c1: single;\n  begin\n    c1 := 2*weight; c2 := c1*c;\n    pA := p2+p1-c2; pB := -2*p1+c2;\n    a1 := 2-c1;     b1 := -a1;\n  end;\n\n  function ComputeContinuous(t1,t2: single; AIncludeFirstPoint: boolean): ArrayOfTPointF;\n  var\n    pointCount: integer;\n\n    procedure AddPoint(APoint: TPointF);\n    begin\n      if isEmptyPointF(APoint) then exit;\n      if pointCount >= length(result) then\n        setlength(result, pointCount*2+4);\n      result[pointCount] := APoint;\n      inc(pointCount);\n    end;\n\n    procedure ComputeRec(left: single; constref leftPoint: TPointF; right: single; constref rightPoint: TPointF);\n    var\n      middlePoint, u: TPointF;\n      middle, lenU, deviation: Single;\n    begin\n      if rightPoint<>leftPoint then\n      begin\n        middle := (left+right)*0.5;\n        middlePoint := InternalComputeAt(middle);\n        u := rightPoint-leftPoint;\n        lenU := VectLen(u);\n        if lenU>0 then u.Scale(1/lenU);\n        deviation := abs((middlePoint-leftPoint)**PointF(u.y,-u.x));\n        if deviation > AAcceptedDeviation then\n        begin\n          ComputeRec(left, leftPoint, middle, middlePoint);\n          AddPoint(middlePoint);\n          ComputeRec(middle, middlePoint, right, rightPoint);\n        end else\n        if deviation > AAcceptedDeviation*0.6 then\n          AddPoint(middlePoint);\n      end;\n    end;\n\n  var\n    startPoint, endPoint: TPointF;\n  begin\n    pointCount := 0;\n    result:= nil;\n    startPoint := InternalComputeAt(t1);\n    endPoint := InternalComputeAt(t2);\n    if AIncludeFirstPoint then AddPoint(startPoint);\n    if endPoint <> startPoint then\n    begin\n      ComputeRec(t1,startPoint,t2,endPoint);\n      AddPoint(endPoint);\n    end;\n    setlength(result,PointCount);\n  end;\n\nvar\n  tSplitA, tSplitB, tSplit1, tSplit2, delta: single;\n  leftPart,middlePart,rightPart: array of TPointF;\n  tList: ArrayOfSingle;\n  parts: array of ArrayOfTPointF;\n  i: Integer;\n\n  function PointWithinInifiniteBounds(APoint: TPointF): boolean;\n  begin\n    result := not isEmptyPointF(APoint) and\n              (APoint.x > AInfiniteBounds.Left) and (APoint.x < AInfiniteBounds.Right) and\n              (APoint.y > AInfiniteBounds.Top) and (APoint.y < AInfiniteBounds.Bottom);\n  end;\n\nbegin\n  if weight = 0 then exit(PointsF([p1,p2]));\n  ComputeFactors;\n\n  if weight > -1 then\n  begin\n    tList := GetBoundingPositions(true,true);\n    setlength(parts, length(tList)-1);\n    for i := 0 to high(parts) do\n      parts[i] := ComputeContinuous(tList[i],tList[i+1], AIncludeFirstPoint and (i=0));\n    result := ConcatPointsF(parts);\n  end\n  else\n  if weight = -1 then\n  begin\n    tSplit1 := 0.5;\n    tSplitA := 0;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitA)) do tSplitA := (tSplitA+tSplit1)*0.5;\n    tSplitB := 1;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitB)) do tSplitB := (tSplitB+tSplit1)*0.5;\n\n    tList := GetBoundingPositions(true,true);\n    setlength(parts, length(tList)-1);\n    for i := 0 to high(parts) do\n    begin\n      if (tList[i] > tSplitA) and (tList[i+1] <= tSplitB) then parts[i] := nil\n      else\n      if (tList[i] <= tSplitA) and (tList[i+1] >= tSplitA) then\n      begin\n        parts[i] := ComputeContinuous(tList[i],tSplitA, AIncludeFirstPoint or (i>0));\n        setlength(parts[i], length(parts[i])+1);\n        parts[i][high(parts[i])] := EmptyPointF;\n\n        if tList[i+1] > tSplitB then\n          parts[i] := ConcatPointsF([parts[i], ComputeContinuous(tSplitB,tList[i+1], true)])\n        else\n          tList[i+1] := tSplitB;\n      end\n      else\n      if (tList[i] < tSplitB) and (tList[i+1] >= tSplitB) then\n        parts[i] := ComputeContinuous(tSplitB,tList[i+1], AIncludeFirstPoint or (i>0))\n      else\n        parts[i] := ComputeContinuous(tList[i],tList[i+1], AIncludeFirstPoint or (i>0));\n    end;\n    result := ConcatPointsF(parts);\n  end else\n  begin\n    delta:= 1 - 2/(1-weight);\n    tSplit1 := (1 - sqrt(delta))/2;\n    tSplit2 := 1-tSplit1;\n\n    tSplitA := 0;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitA)) do tSplitA := (tSplitA+tSplit1)*0.5;\n    leftPart := ComputeContinuous(0, tSplitA, AIncludeFirstPoint);\n\n    tSplitA := (tSplit1+tSplit2)*0.5;\n    tSplitB := tSplitA;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitA)) do tSplitA := (tSplitA+tSplit1)*0.5;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitB)) do tSplitB := (tSplitB+tSplit2)*0.5;\n    middlePart := ComputeContinuous(tSplitA, tSplitB, true);\n\n    tSplitB := 1;\n    while PointWithinInifiniteBounds(InternalComputeAt(tSplitB)) do tSplitB := (tSplitB+tSplit2)*0.5;\n    rightPart:= ComputeContinuous(tSplitB, 1, true);\n    result := ConcatPointsF([leftPart, PointsF([EmptyPointF]), middlePart, PointsF([EmptyPointF]), rightPart]);\n  end;\nend;\n\nfunction TRationalQuadraticBezierCurve.GetBoundingPositions(\n  AIncludeFirstAndLast: boolean; ASorted: boolean): ArrayOfSingle;\nconst precision = 1e-6;\nvar a,delta,sqrtDelta,den,invDen: single;\n    A_,B_,p2_,c_: TPointF;\n    posCount : integer;\n\n  procedure Include(t: single);\n  var\n    i: Integer;\n  begin\n    if (t < 0) or (t > 1) then exit;\n    for i := 0 to PosCount-1 do\n      if result[i] = t then exit;\n    result[posCount] := t;\n    inc(posCount);\n  end;\n\n  procedure SortList;\n  var i,j,k: integer;\n    temp: single;\n  begin\n    for i := 1 to high(result) do\n    begin\n      j := i;\n      while (j > 0) and (result[j-1] > result[i]) do dec(j);\n      if j <> i then\n      begin\n        temp := result[i];\n        for k := i downto j+1 do\n          result[k] := result[k-1];\n        result[j] := temp;\n      end;\n    end;\n  end;\n\nbegin\n  result := nil;\n  setlength(result, 6);\n  posCount := 0;\n\n  if AIncludeFirstAndLast then\n  begin\n    Include(0);\n    Include(1);\n  end;\n\n  p2_ := p2-p1; c_ := c-p1; //translation with -p1\n  B_ := 2*weight*c_; A_ := p2_-B_;\n  a := 2*(1-weight);\n\n  //on Ox\n  den := a*p2_.x;\n  if abs(den) >= precision then\n  begin\n    delta := sqr(A_.x)+den*B_.x;\n    if delta >= 0 then\n    begin\n      invDen := 1/den;\n      sqrtDelta := sqrt(delta);\n      Include( (A_.x-sqrtDelta)*invDen );\n      Include( (A_.x+sqrtDelta)*invDen );\n    end;\n  end else //den=0\n  if abs(A_.x) >= precision  then\n    Include( -B_.x/A_.x*0.5 );\n\n  //on Oy\n  den := a*p2_.y;\n  if abs(den) >= precision then\n  begin\n    delta := sqr(A_.y)+den*B_.y;\n    if delta >= 0 then\n    begin\n      invDen := 1/den;\n      sqrtDelta := sqrt(delta);\n      Include( (A_.y-sqrtDelta)*invDen );\n      Include( (A_.y+sqrtDelta)*invDen );\n    end;\n  end else //den=0\n  if abs(A_.y) >= precision  then\n    Include( -B_.y/A_.y*0.5 );\n\n  setlength(result, posCount);\n  if ASorted then SortList;\nend;\n\nfunction TRationalQuadraticBezierCurve.ComputePointAt(t: single): TPointF;\nvar\n  rev_t,f2,t2,den: single;\nbegin\n  rev_t := (1-t);\n  t2 := t*t;\n  f2 := weight*rev_t*t*2;\n  rev_t := rev_t * rev_t;\n  den := rev_t+f2+t2;\n  if den <> 0 then\n  begin\n    result.x := (rev_t*p1.x + f2*c.x + t2*p2.x)/den;\n    result.y := (rev_t*p1.y + f2*c.y + t2*p2.y)/den;\n  end\n  else\n    result := EmptyPointF\nend;\n\nfunction TRationalQuadraticBezierCurve.ToPoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;\nbegin\n  if weight=1 then\n     result := BezierCurve(p1,c,p2).ToPoints(AAcceptedDeviation, AIncludeFirstPoint)\n  else\n     result := InternalComputePoints(AInfiniteBounds, AAcceptedDeviation, AIncludeFirstPoint)\nend;\n\nfunction TRationalQuadraticBezierCurve.GetBounds: TRectF;\nvar a: single;\n    A_,B_,p2_,c_: TPointF;\n    t: single;\n    tList: array of Single;\n    i: Integer;\n\n  procedure Include(pt: TPointF);\n  begin\n    if pt.x < result.Left then result.Left := pt.x\n    else if pt.x > result.Right then result.Right := pt.x;\n    if pt.y < result.Top then result.Top := pt.y\n    else if pt.y > result.Bottom then result.Bottom := pt.y;\n  end;\n\nbegin\n  if weight=1 then exit(BezierCurve(p1,c,p2).GetBounds);\n  if IsInfinite then exit(EmptyRectF);\n  tList:= GetBoundingPositions(false,false);\n\n  result.TopLeft := p1;\n  result.BottomRight := p1;\n  Include(p2);\n\n  p2_ := p2-p1; c_ := c-p1; //translation with -p1\n  B_ := 2*weight*c_; A_ := p2_-B_;\n  a := 2*(1-weight);\n\n  for i := 0 to high(tList) do\n  begin\n    t := tList[i];\n    Include( p1+t*(B_+t*A_)*(1/(1+t*(-a+t*a))) );\n  end;\nend;\n\nfunction TRationalQuadraticBezierCurve.ComputeLength(AAcceptedDeviation: single): single;\nvar  i: Integer;\n     curCoord,nextCoord: TPointF;\n     pts: ArrayOfTPointF;\nbegin\n  if weight = 1 then exit(BezierCurve(p1,c,p2).ComputeLength);\n  if weight <= -1 then exit(EmptySingle); // no bounds in this case\n  pts := InternalComputePoints(EmptyRectF, AAcceptedDeviation, true);\n  curCoord := p1; result:=0;\n  for i := 1 to high(pts) do\n  begin\n    nextCoord := pts[i];\n    if (nextCoord <> EmptyPointF) and (curCoord <> EmptyPointF) then\n       IncF(result, VectLen(nextCoord-curCoord));\n    curCoord := nextCoord;\n  end;\n  finalize(pts)\nend;\n\nfunction TRationalQuadraticBezierCurve.ToPoints(AAcceptedDeviation: single;\n  AIncludeFirstPoint: boolean): ArrayOfTPointF;\nbegin\n  result := ToPoints(RectF(-64,-64, 16384, 16384), AAcceptedDeviation, AIncludeFirstPoint);\nend;\n\nprocedure TRationalQuadraticBezierCurve.Split(out ALeft, ARight: TRationalQuadraticBezierCurve);\nconst precision=1E-6;\nvar M, D, E, H, c1, c2: TPointF;\n    alpha, sg, w: single;\n\n  function Intersec(): TPointF; //dichotomie\n  var t, t1, t2: single;\n      U, V: TPointF;\n  begin\n    t1 := 0; t2 := 0.5; U := E-c1;\n    if VectDet(U,p1-c1)>0 then sg := 1 else sg := -1;\n    while (t2-t1) > precision do //19 iterations\n    begin\n      t := (t1+t2)/2;\n      V := ComputePointAt(t)-c1;\n      if VectDet(U,V)*sg>0 then t1 := t else t2 := t;\n    end;\n    result := ComputePointAt((t1+t2)/2)\n  end;\n\nbegin\n  if IsInfinite then raise exception.Create('Cannot split an infinite curve');\n\n  M := ComputePointAt(0.5);\n  ALeft.p1 := p1;\n  ALeft.p2 := M;\n  ARight.p1 := M;\n  ARight.p2 := p2;\n  ALeft.weight := 1;\n  ARight.weight := 1;\n  D := 0.5*(p1+p2);\n  if (weight = 1) or (D = c) then\n  begin\n    ALeft.c := 0.5*(p1+c);\n    ARight.c := 0.5*(p2+c);\n    exit;\n  end;\n  if weight > 0 then\n    alpha := VectLen(D-M)/VectLen(D-c)\n  else\n    alpha := -VectLen(D-M)/VectLen(D-c);\n  c1 := p1 + alpha*(c-p1);\n  c2 := p2 + alpha*(c-p2);\n  ALeft.c := c1;\n  ARight.c := c2;\n  E := 0.5*(p1+M);\n  H := Intersec(); //between [c1;E] and the curve\n  w := VectLen(E-c1)/VectLen(H-c1)-1; // new weight\n  ALeft.weight := w;\n  ARight.weight := w;\nend;\n\n{ TEasyBezierCurve }\n\nfunction EasyBezierCurve(APoints: array of TPointF; AClosed: boolean;\n  ACurveMode: TEasyBezierCurveMode; AMinimumDotProduct: single): TEasyBezierCurve;\nbegin\n  result := EasyBezierCurve(APoints, 0, length(APoints), AClosed, ACurveMode, AMinimumDotProduct);\nend;\n\nfunction EasyBezierCurve(APoints: array of TPointF; AClosed: boolean;\n  ACurveMode: array of TEasyBezierCurveMode; AMinimumDotProduct: single): TEasyBezierCurve;\nbegin\n  result := EasyBezierCurve(APoints, 0, length(APoints), AClosed, ACurveMode, AMinimumDotProduct);\nend;\n\nfunction EasyBezierCurve(APoints: array of TPointF; AStart, ACount: integer; AClosed: boolean;\n  ACurveMode: TEasyBezierCurveMode; AMinimumDotProduct: single): TEasyBezierCurve;\nbegin\n  result.Init;\n  result.SetPoints(APoints, ACurveMode, AStart, ACount);\n  result.Closed:= AClosed;\n  result.MinimumDotProduct:= AMinimumDotProduct;\nend;\n\nfunction EasyBezierCurve(APoints: array of TPointF; AStart, ACount: integer; AClosed: boolean;\n  ACurveMode: array of TEasyBezierCurveMode;\n  AMinimumDotProduct: single = EasyBezierDefaultMinimumDotProduct): TEasyBezierCurve;\nbegin\n  result.Init;\n  result.SetPoints(APoints, ACurveMode, AStart, ACount);\n  result.Closed:= AClosed;\n  result.MinimumDotProduct:= AMinimumDotProduct;\nend;\n\nprocedure TEasyBezierCurve.CopyToPath(ADest: IBGRAPath; ATransformFunc: TEasyBezierPointTransformFunc;\n  ATransformData: Pointer; AReverse: boolean);\nvar i: integer;\n  nextMove: boolean;\n  pt,startCoord: TPointF;\nbegin\n  if PointCount = 0 then exit;\n  if (FCurves = nil) or FInvalidated then ComputeQuadraticCurves;\n  nextMove := true;\n\n  if AReverse then\n  begin\n    for i := PointCount-1 downto 0 do\n    begin\n      pt := Point[i];\n      if isEmptyPointF(pt) then\n      begin\n        if not nextMove and FClosed then ADest.closePath;\n        nextMove := true;\n      end else\n      begin\n        pt := Point[i];\n        with FCurves[i] do\n        begin\n          if isCurvedToNext then\n          begin\n            if nextMove then\n            begin\n              ADest.moveTo(ATransformFunc(@NextCenter,ATransformData));\n              nextMove := false;\n            end;\n            ADest.quadraticCurveTo(ATransformFunc(@ControlPoint,ATransformData),ATransformFunc(@Center,ATransformData));\n          end;\n          if not isCurvedToPrevious then\n          begin\n            if nextMove then\n            begin\n              ADest.moveTo(ATransformFunc(@pt,ATransformData));\n              nextMove := false;\n            end else\n              ADest.lineTo(ATransformFunc(@pt,ATransformData));\n          end;\n        end;\n      end;\n    end;\n  end else\n  begin\n    for i := 0 to PointCount-1 do\n    begin\n      pt := Point[i];\n      if isEmptyPointF(pt) then\n      begin\n        if not nextMove and FClosed then ADest.closePath;\n        nextMove := true;\n      end else\n      begin\n        with FCurves[i] do\n        begin\n          if nextMove then\n          begin\n            if not isCurvedToPrevious then\n              startCoord := pt\n            else\n              startCoord := Center;\n            ADest.moveTo(ATransformFunc(@startCoord,ATransformData));\n            nextMove := false;\n          end else\n            if not isCurvedToPrevious then\n              ADest.lineTo(ATransformFunc(@pt,ATransformData));\n\n          if isCurvedToNext then\n          begin\n            if not isCurvedToPrevious then ADest.lineTo(ATransformFunc(@Center,ATransformData));\n            ADest.quadraticCurveTo(ATransformFunc(@ControlPoint,ATransformData),ATransformFunc(@NextCenter,ATransformData));\n          end;\n        end;\n      end;\n    end;\n  end;\n  if not nextMove and FClosed then ADest.closePath;\nend;\n\nfunction TEasyBezierCurve.ToPoints: ArrayOfTPointF;\nvar p: TBGRACustomPath;\nbegin\n  if not Assigned(BGRAPathFactory) then raise exception.Create('BGRAPath unit needed');\n  p := BGRAPathFactory.Create;\n  CopyToPath(p);\n  result := p.getPoints;\n  p.Free;\nend;\n\nfunction TEasyBezierCurve.ComputeLength: single;\nvar p: TBGRACustomPath;\nbegin\n  if not Assigned(BGRAPathFactory) then raise exception.Create('BGRAPath unit needed');\n  p := BGRAPathFactory.Create;\n  CopyToPath(p);\n  result := p.getLength;\n  p.Free;\nend;\n\nprocedure TEasyBezierCurve.CopyToPath(ADest: IBGRAPath);\nbegin\n  CopyToPath(ADest, @PointTransformNone, nil);\nend;\n\nprocedure TEasyBezierCurve.CopyToPath(ADest: IBGRAPath; AOffset: TPointF; AReverse: boolean);\nbegin\n  CopyToPath(ADest, @PointTransformOffset, @AOffset, AReverse);\nend;\n\nprocedure TEasyBezierCurve.ComputeQuadraticCurves;\nvar\n  i,FirstPointIndex,NextPt,NextPt2: integer;\nbegin\n  setlength(FCurves, PointCount);\n  FirstPointIndex := 0;\n  for i := 0 to PointCount-1 do\n    FCurves[i].isCurvedToPrevious := false;\n  for i := 0 to PointCount-1 do\n  begin\n    FCurves[i].isCurvedToNext := false;\n    FCurves[i].Center := EmptyPointF;\n    FCurves[i].ControlPoint := EmptyPointF;\n    FCurves[i].NextCenter := EmptyPointF;\n\n    if IsEmptyPointF(Point[i]) then\n    begin\n      FirstPointIndex := i+1;\n    end else\n    begin\n      NextPt := i+1;\n      if (NextPt = PointCount) or isEmptyPointF(Point[NextPt]) then NextPt := FirstPointIndex;\n      NextPt2 := NextPt+1;\n      if (NextPt2 = PointCount) or isEmptyPointF(Point[NextPt2]) then NextPt2 := FirstPointIndex;\n\n      FCurves[i].Center := (Point[i]+Point[NextPt])*0.5;\n      FCurves[i].NextCenter := (Point[NextPt]+Point[NextPt2])*0.5;\n      FCurves[i].ControlPoint := Point[NextPt];\n\n      if (i < PointCount-2) or FClosed then\n      begin\n        case CurveMode[nextPt] of\n          cmAuto: FCurves[i].isCurvedToNext:= MaybeCurve(i,NextPt,NextPt,NextPt2);\n          cmCurve: FCurves[i].isCurvedToNext:= true;\n          else FCurves[i].isCurvedToNext:= false;\n        end;\n        FCurves[NextPt].isCurvedToPrevious := FCurves[i].isCurvedToNext;\n      end;\n    end;\n  end;\n  FInvalidated:= false;\nend;\n\nfunction TEasyBezierCurve.PointTransformNone(APoint: PPointF; AData: Pointer): TPointF;\nbegin\n  result := APoint^;\nend;\n\nfunction TEasyBezierCurve.PointTransformOffset(APoint: PPointF; AData: Pointer): TPointF;\nbegin\n  result := APoint^ + PPointF(AData)^;\nend;\n\nprocedure TEasyBezierCurve.Init;\nbegin\n  FClosed := false;\n  FMinimumDotProduct:= EasyBezierDefaultMinimumDotProduct;\n  FPoints := nil;\n  FInvalidated := true;\nend;\n\nprocedure TEasyBezierCurve.Clear;\nbegin\n  FPoints := nil;\nend;\n\nprocedure TEasyBezierCurve.SetPoints(APoints: array of TPointF;\n  ACurveMode: TEasyBezierCurveMode);\nbegin\n  SetPoints(APoints, ACurveMode, 0, length(APoints));\nend;\n\nprocedure TEasyBezierCurve.SetPoints(APoints: array of TPointF;\n  ACurveMode: array of TEasyBezierCurveMode);\nbegin\n  SetPoints(APoints, ACurveMode, 0, length(APoints));\nend;\n\nprocedure TEasyBezierCurve.SetPoints(APoints: array of TPointF;\n  ACurveMode: TEasyBezierCurveMode; AStart, ACount: integer);\nvar\n  i: Integer;\nbegin\n  if (AStart < 0) or (AStart+ACount > length(APoints)) then\n    raise exception.Create('Index out of bounds');\n  setlength(FPoints, ACount);\n  for i := 0 to ACount-1 do\n  begin\n    FPoints[i].Coord := APoints[AStart + i];\n    FPoints[i].CurveMode:= ACurveMode;\n  end;\n  FInvalidated:= true;\nend;\n\nprocedure TEasyBezierCurve.SetPoints(APoints: array of TPointF;\n  ACurveMode: array of TEasyBezierCurveMode; AStart, ACount: integer);\nvar\n  i,j: Integer;\nbegin\n  if (AStart < 0) or (AStart+ACount > length(APoints)) then\n    raise exception.Create('Index out of bounds');\n  setlength(FPoints, ACount);\n  if length(ACurveMode) > 0 then\n    j := AStart mod length(ACurveMode);\n  for i := 0 to ACount-1 do\n  begin\n    FPoints[i].Coord := APoints[i + AStart];\n    if length(ACurveMode) = 0 then\n      FPoints[i].CurveMode:= cmAuto\n    else\n    begin\n      FPoints[i].CurveMode:= ACurveMode[j];\n      inc(j);\n      if j = length(ACurveMode) then j := 0;\n    end;\n  end;\n  FInvalidated:= true;\nend;\n\nfunction TEasyBezierCurve.GetCurveMode(AIndex: integer): TEasyBezierCurveMode;\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  result:= FPoints[AIndex].CurveMode;\nend;\n\nfunction TEasyBezierCurve.GetCurveStartPoint: TPointF;\nbegin\n  if (PointCount=0) or isEmptyPointF(Point[0]) then exit(EmptyPointF);\n  if FInvalidated or (FCurves = nil) then ComputeQuadraticCurves;\n  if not FCurves[0].isCurvedToPrevious then\n    result := Point[0]\n  else\n    result := FCurves[0].Center;\nend;\n\nfunction TEasyBezierCurve.GetPoint(AIndex: integer): TPointF;\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  result:= FPoints[AIndex].Coord;\nend;\n\nfunction TEasyBezierCurve.GetPointCount: integer;\nbegin\n  result:= length(FPoints);\nend;\n\nprocedure TEasyBezierCurve.SetClosed(AValue: boolean);\nbegin\n  if FClosed=AValue then Exit;\n  FClosed:=AValue;\n  FInvalidated:= true;\nend;\n\nprocedure TEasyBezierCurve.SetCurveMode(AIndex: integer;\n  AValue: TEasyBezierCurveMode);\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  if FPoints[AIndex].CurveMode = AValue then exit;\n  FPoints[AIndex].CurveMode := AValue;\n  FInvalidated:= true;\nend;\n\nprocedure TEasyBezierCurve.SetMinimumDotProduct(AValue: single);\nbegin\n  if FMinimumDotProduct=AValue then Exit;\n  FMinimumDotProduct:=AValue;\n  FInvalidated:= true;\nend;\n\nprocedure TEasyBezierCurve.SetPoint(AIndex: integer; AValue: TPointF);\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  if FPoints[AIndex].Coord = AValue then exit;\n  FPoints[AIndex].Coord := AValue;\n  FInvalidated:= true;\nend;\n\nfunction TEasyBezierCurve.MaybeCurve(start1,end1,start2,end2: integer): boolean;\nvar\n  u,v: TPointF;\n  lu,lv: single;\nbegin\n  if (start1=-1) or (end1=-1) or (start2=-1) or (end2=-1) then\n  begin\n    result := false;\n    exit;\n  end;\n  u := pointF(Point[end1].x - Point[start1].x, Point[end1].y - Point[start1].y);\n  lu := VectLen(u);\n  if lu <> 0 then u.Scale(1/lu);\n  v := pointF(Point[end2].x - Point[start2].x, Point[end2].y - Point[start2].y);\n  lv := VectLen(v);\n  if lv <> 0 then v.Scale(1/lv);\n\n  result := u**v > FMinimumDotProduct;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgraanimatedgif.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{ Classes to read and write animated GIF and animated PNG files. }\nunit BGRAAnimatedGif;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, FPImage, BGRABitmap, BGRABitmapTypes,\n  BGRAPalette, BGRAGifFormat{$IFDEF BGRABITMAP_USE_LCL}, ExtCtrls{$ENDIF};\n\ntype\n  TDisposeMode = BGRAGifFormat.TDisposeMode;\n  TGifSubImage = BGRAGifFormat.TGifSubImage;\n  TGifSubImageArray = BGRAGifFormat.TGifSubImageArray;\n\n  {* How to deal with the background under the GIF animation }\n  TGifBackgroundMode = (\n    gbmSimplePaint,                   // frames are rendered without clearing the backgroud\n    gbmEraseBackground,               // pixels in the GIF that become transparent are filled with EraseColor\n    gbmSaveBackgroundOnce,            // background is saved once before drawing the first frame\n    gbmUpdateBackgroundContinuously); // background is updated continuously to handle overlapping animations\n\n  {** String constants for TGifBackgroundMode }\n  const GifBackgroundModeStr: array[TGifBackgroundMode] of string =\n    ('gbmSimplePaint', 'gbmEraseBackground', 'gbmSaveBackgroundOnce',\n    'gbmUpdateBackgroundContinuously');\n\ntype\n  {* Class to read/write animated GIF, supports animated PNG as well when specified }\n  TBGRAAnimatedGif = class(TGraphic)\n  private\n    FAspectRatio: single;\n    FWidth, FHeight:  integer;\n    FBackgroundColor: TColor;\n\n    FPrevDate: TDateTime;\n    FPaused:   boolean;\n    FTimeAccumulator: double;\n    FCurrentImage, FWantedImage: integer;\n    FTotalAnimationTime: int64;\n    FPreviousDisposeMode: TDisposeMode;\n\n    FBackgroundImage, FPreviousVirtualScreen, FStretchedVirtualScreen,\n    FInternalVirtualScreen, FRestoreImage: TBGRABitmap;\n    FImageChanged: boolean;\n\n    {$IFDEF BGRABITMAP_USE_LCL}\n    FTimer: TTimer;\n    {$ENDIF}\n\n    procedure CheckFrameIndex(AIndex: integer);\n    function GetAverageDelayMs: integer;\n    function GetCount: integer;\n    function GetFrameDelayMs(AIndex: integer): integer;\n    function GetFrameDisposeMode(AIndex: integer): TDisposeMode;\n    function GetFrameDrawMode(AIndex: integer): TDrawMode;\n    function GetFrameHasLocalPalette(AIndex: integer): boolean;\n    function GetFrameImage(AIndex: integer): TBGRABitmap;\n    function GetFrameImagePos(AIndex: integer): TPoint;\n    function GetTimeUntilNextImage: integer;\n    {$IFDEF BGRABITMAP_USE_LCL}\n    procedure OnTimer(Sender: TObject);\n    {$ENDIF}\n    procedure Render(StretchWidth, StretchHeight: integer);\n    procedure SetAspectRatio(AValue: single);\n    procedure SetBackgroundColor(AValue: TColor);\n    procedure SetFrameDelayMs(AIndex: integer; AValue: integer);\n    procedure SetFrameDisposeMode(AIndex: integer; AValue: TDisposeMode);\n    procedure SetFrameDrawMode(AIndex: integer; AValue: TDrawMode);\n    procedure SetFrameHasLocalPalette(AIndex: integer; AValue: boolean);\n    procedure SetFrameImage(AIndex: integer; AValue: TBGRABitmap);\n    procedure SetFrameImagePos(AIndex: integer; AValue: TPoint);\n    procedure UpdateSimple(Canvas: TCanvas; ARect: TRect;\n      DrawOnlyIfChanged: boolean = True);\n    procedure UpdateEraseBackground(Canvas: TCanvas; ARect: TRect;\n      DrawOnlyIfChanged: boolean = True);\n    procedure Init;\n    function GetBitmap: TBitmap;\n    function GetMemBitmap: TBGRABitmap;\n    procedure SaveBackgroundOnce(Canvas: TCanvas; ARect: TRect);\n    procedure SetCurrentImage(Index: integer);\n\n  protected\n    FImages: TGifSubImageArray;\n    FDestroying: boolean;\n\n    {TGraphic}\n    procedure Draw(ACanvas: TCanvas; const Rect: TRect); override;\n    function GetEmpty: boolean; override;\n    function GetHeight: integer; override;\n    function GetTransparent: boolean; override;\n    function GetWidth: integer; override;\n    procedure SetHeight({%H-}Value: integer); override;\n    procedure SetTransparent({%H-}Value: boolean); override;\n    procedure SetWidth({%H-}Value: integer); override;\n    procedure ClearViewer; virtual;\n    procedure Changed(Sender: TObject); override;\n    procedure EnsureNextFrameRec(AIndex: integer);\n    procedure AssignTo(Dest: TPersistent); override;\n    procedure AssignImage(AImage: TFPCustomImage; AOwned: boolean);\n    procedure LoadFromStreamAsGif(Stream: TStream; AMaxImageCount: integer);\n    procedure LoadFromStreamAsPng(Stream: TStream; AMaxImageCount: integer);\n    procedure LoadFromStreamAsStatic(Stream: TStream);\n\n    procedure CheckSavable(AFormat: TBGRAImageFormat);\n    procedure CheckAnyFrame;\n    procedure SaveToStreamAsPng(Stream: TStream);\n    procedure SaveToStreamAsPng(Stream: TStream;\n      AQuantizer: TBGRAColorQuantizerAny;\n      ADitheringAlgorithm: TDitheringAlgorithm); overload; virtual;\n    procedure SaveToStreamAsGif(Stream: TStream;\n      AQuantizer: TBGRAColorQuantizerAny;\n      ADitheringAlgorithm: TDitheringAlgorithm); overload; virtual;\n\n  public\n    EraseColor:     TColor;\n    BackgroundMode: TGifBackgroundMode;\n    LoopCount:      Word;\n    LoopDone:       Integer;\n\n    constructor Create(filenameUTF8: string); overload;\n    constructor Create(stream: TStream); overload;\n    constructor Create(stream: TStream; AMaxImageCount: integer); overload;\n    constructor Create; overload; override;\n    function Duplicate: TBGRAAnimatedGif;\n    procedure Assign(ASource: TPersistent); override;\n    function AddFrame(AImage: TFPCustomImage; X,Y: integer; ADelayMs: integer;\n      ADisposeMode: TDisposeMode = dmErase; AHasLocalPalette: boolean = false;\n      ADrawMode: TDrawMode = dmSetExceptTransparent; AOwned: boolean = false) : integer;\n    procedure InsertFrame(AIndex: integer; AImage: TFPCustomImage; X,Y: integer; ADelayMs: integer;\n      ADisposeMode: TDisposeMode = dmErase; AHasLocalPalette: boolean = false;\n      ADrawMode: TDrawMode = dmSetExceptTransparent; AOwned: boolean = false);\n    procedure DeleteFrame(AIndex: integer; AEnsureNextFrameDoesNotChange: boolean);\n\n    {** Add a frame that replaces completely the previous one }\n    function AddFullFrame(AImage: TFPCustomImage; ADelayMs: integer;\n                          AHasLocalPalette: boolean = true;\n                          ADrawMode: TDrawMode = dmSetExceptTransparent; AOwned: boolean = false): integer;\n    {** Insert at the specified _AIndex_ a frame that replaces completely the previous one }\n    procedure InsertFullFrame(AIndex: integer;\n                              AImage: TFPCustomImage; ADelayMs: integer;\n                              AHasLocalPalette: boolean = true;\n                              ADrawMode: TDrawMode = dmSetExceptTransparent; AOwned: boolean = false);\n    procedure ReplaceFullFrame(AIndex: integer;\n                              AImage: TFPCustomImage; ADelayMs: integer;\n                              AHasLocalPalette: boolean = true;\n                              ADrawMode: TDrawMode = dmSetExceptTransparent; AOwned: boolean = false);\n    procedure OptimizeFrames;\n\n    {TGraphic}\n    procedure LoadFromStream(Stream: TStream); overload; override;\n    procedure LoadFromStream(Stream: TStream; AMaxImageCount: integer); overload;\n    procedure LoadFromResource(AFilename: string);\n    {** Save to a stream using GIF format }\n    procedure SaveToStream(Stream: TStream); override; overload;\n    {** There are some differences in the dispose modes and draw modes so some files\n        cannot be directly saved from one format to the other:\n        - dispose mode dmErase is only in GIF and dispose mode dmEraseArea is only in PNG,\n        - draw mode in GIF is only dmSetExceptTransparent and draw mode in PNG is dmSet or dmDrawWithTransparency.\n\n        PNG format is not limited to 256 colors, so there is no need for quantization even if it possible.\n        When PNG has a palette, it applies to all frames, whereas for GIF, there can be a palette for each frame. }\n    procedure SaveToStream(Stream: TStream; AFormat: TBGRAImageFormat); overload;\n    procedure LoadFromFile(const AFilenameUTF8: string); override;\n    procedure SaveToFile(const AFilenameUTF8: string); override;\n    class function GetFileExtensions: string; override;\n\n    procedure SetSize(AWidth,AHeight: integer); virtual;\n    procedure SaveToStream(Stream: TStream; AQuantizer: TBGRAColorQuantizerAny;\n      ADitheringAlgorithm: TDitheringAlgorithm; AFormat: TBGRAImageFormat = ifGif); overload; virtual;\n    procedure Clear; override;\n    destructor Destroy; override;\n    procedure Pause;\n    procedure Resume;\n\n    procedure Show(Canvas: TCanvas; ARect: TRect); overload;\n    procedure Update(Canvas: TCanvas; ARect: TRect); overload;\n    procedure Hide(Canvas: TCanvas; ARect: TRect); overload;\n    function MakeBitmapCopy(ABackground: TColor = clNone): TBitmap;\n\n    property BackgroundColor: TColor Read FBackgroundColor write SetBackgroundColor;\n    property Count: integer Read GetCount;\n    property Width: integer Read FWidth;\n    property Height: integer Read FHeight;\n    property Paused: boolean Read FPaused;\n    property Bitmap: TBitmap Read GetBitmap;\n    property MemBitmap: TBGRABitmap Read GetMemBitmap;\n    property CurrentImage: integer Read FCurrentImage Write SetCurrentImage;\n    property TimeUntilNextImageMs: integer read GetTimeUntilNextImage;\n    property FrameImage[AIndex: integer]: TBGRABitmap read GetFrameImage write SetFrameImage;\n    property FrameHasLocalPalette[AIndex: integer]: boolean read GetFrameHasLocalPalette write SetFrameHasLocalPalette;\n    property FrameImagePos[AIndex: integer]: TPoint read GetFrameImagePos write SetFrameImagePos;\n    property FrameDelayMs[AIndex: integer]: integer read GetFrameDelayMs write SetFrameDelayMs;\n    property FrameDisposeMode[AIndex: integer]: TDisposeMode read GetFrameDisposeMode write SetFrameDisposeMode;\n    property FrameDrawMode[AIndex: integer]: TDrawMode read GetFrameDrawMode write SetFrameDrawMode; // linear blend only in PNG\n    property AspectRatio: single read FAspectRatio write SetAspectRatio;\n    property TotalAnimationTimeMs: Int64 read FTotalAnimationTime;\n    property AverageDelayMs: integer read GetAverageDelayMs;\n  end;\n\n  {* @abstract(Class to read/write animated PNG, supports animated GIF as well when specified.)\n\n     This class only changes default format used, everything is implemented in TBGRAAnimatedGif }\n  TBGRAAnimatedPng = class(TBGRAAnimatedGif)\n    {** Save to a stream using PNG format }\n    procedure SaveToStream(Stream: TStream); override; overload;\n    class function GetFileExtensions: string; override;\n  end;\n\n  {* Static GIF reader }\n  TBGRAReaderGIF = class(TFPCustomImageReader)\n  protected\n    procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n    function InternalCheck(Str: TStream): boolean; override;\n  end;\n\n  {* Static GIF writer }\n  TBGRAWriterGIF = class(TFPCustomImageWriter)\n  protected\n    procedure InternalWrite(Str: TStream; Img: TFPCustomImage); override;\n  end;\n\nimplementation\n\nuses BGRABlend, BGRAUTF8,\n  BGRAReadPng, BGRAWritePng, BGRAPNGComn\n  {$IFDEF BGRABITMAP_USE_LCL}, Graphics{$ENDIF};\n\nconst\n  {$IFDEF ENDIAN_LITTLE}\n  AlphaMask = $FF000000;\n  {$ELSE}\n  AlphaMask = $000000FF;\n  {$ENDIF}\n\n\n{ TBGRAAnimatedGif }\n\nclass function TBGRAAnimatedGif.GetFileExtensions: string;\nbegin\n  Result := 'gif';\nend;\n\nprocedure TBGRAAnimatedGif.SetSize(AWidth, AHeight: integer);\nbegin\n  ClearViewer;\n  FWidth := AWidth;\n  FHeight := AHeight;\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStream(Stream: TStream;\n      AQuantizer: TBGRAColorQuantizerAny;\n      ADitheringAlgorithm: TDitheringAlgorithm;\n      AFormat: TBGRAImageFormat);\nbegin\n  case AFormat of\n    ifGif: SaveToStreamAsGif(Stream, AQuantizer, ADitheringAlgorithm);\n    ifPng: SaveToStreamAsPng(Stream, AQuantizer, ADitheringAlgorithm);\n    else\n      raise Exception.Create('Unhandled image format (' + SuggestImageExtension(AFormat) + ')');\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.Render(StretchWidth, StretchHeight: integer);\nvar\n  curDate: TDateTime;\n  previousImage, nextImage: integer;\n\nbegin\n  if FInternalVirtualScreen = nil then\n  begin\n    FInternalVirtualScreen := TBGRABitmap.Create(FWidth, FHeight);\n    if (Count = 0) and (BackgroundColor <> clNone) then\n      FInternalVirtualScreen.Fill(BackgroundColor)\n    else\n      FInternalVirtualScreen.Fill(BGRAPixelTransparent);\n    FImageChanged := True;\n  end;\n\n  if Count = 0 then\n    exit;\n\n  previousImage := FCurrentImage;\n\n  curDate := Now;\n  if FWantedImage <> -1 then\n  begin\n    nextImage    := FWantedImage;\n    FTimeAccumulator := 0;\n    FWantedImage := -1;\n  end\n  else\n  if FCurrentImage = -1 then\n  begin\n    nextImage := 0;\n    FTimeAccumulator := 0;\n    FPreviousDisposeMode := dmNone;\n  end\n  else\n  begin\n    if not FPaused then\n      IncF(FTimeAccumulator, (curDate - FPrevDate) * 24 * 60 * 60 * 1000);\n    if FTotalAnimationTime > 0 then FTimeAccumulator:= frac(FTimeAccumulator/FTotalAnimationTime)*FTotalAnimationTime;\n    nextImage := FCurrentImage;\n    while FTimeAccumulator > FImages[nextImage].DelayMs do\n    begin\n      DecF(FTimeAccumulator, FImages[nextImage].DelayMs);\n      Inc(nextImage);\n      if nextImage >= Count then\n      begin\n        if (LoopCount > 0) and (LoopDone >= LoopCount-1) then\n        begin\n          LoopDone := LoopCount;\n          dec(nextImage);\n          break;\n        end else\n        begin\n          nextImage := 0;\n          inc(LoopDone);\n        end;\n      end;\n\n      if nextImage = previousImage then\n      begin\n        if not ((LoopCount > 0) and (LoopDone >= LoopCount-1)) then\n        begin\n          Inc(nextImage);\n          if nextImage >= Count then\n            nextImage := 0;\n        end;\n        break;\n      end;\n    end;\n  end;\n  FPrevDate := curDate;\n\n  while FCurrentImage <> nextImage do\n  begin\n    case FPreviousDisposeMode of\n      dmEraseArea:\n        with FImages[FCurrentImage] do\n          FInternalVirtualScreen.EraseRect(\n            RectWithSize(Position.X, Position.Y, Image.Width, Image.Height), 255);\n    end;\n\n    Inc(FCurrentImage);\n    if FCurrentImage >= Count then\n    begin\n      FCurrentImage := 0;\n      FPreviousDisposeMode := dmErase;\n    end;\n\n    case FPreviousDisposeMode of\n      dmErase: FInternalVirtualScreen.Fill(BGRAPixelTransparent);\n      dmRestore: if FRestoreImage <> nil then\n          FInternalVirtualScreen.PutImage(0, 0, FRestoreImage, dmSet);\n    end;\n\n    with FImages[FCurrentImage] do\n    begin\n      if disposeMode = dmRestore then\n      begin\n        if FRestoreImage = nil then\n          FRestoreImage := TBGRABitmap.Create(FWidth, FHeight);\n        FRestoreImage.PutImage(0, 0, FInternalVirtualScreen, dmSet);\n      end;\n\n      if Image <> nil then\n        FInternalVirtualScreen.PutImage(Position.X, Position.Y, Image,\n          DrawMode);\n      FPreviousDisposeMode := DisposeMode;\n    end;\n\n    FImageChanged := True;\n    previousImage := FCurrentImage;\n    FInternalVirtualScreen.InvalidateBitmap;\n  end;\n\n  if FStretchedVirtualScreen <> nil then\n    FStretchedVirtualScreen.FreeReference;\n  if (FInternalVirtualScreen.Width = StretchWidth) and\n    (FInternalVirtualScreen.Height = StretchHeight) then\n    FStretchedVirtualScreen := TBGRABitmap(FInternalVirtualScreen.NewReference)\n  else\n    FStretchedVirtualScreen :=\n      TBGRABitmap(FInternalVirtualScreen.Resample(StretchWidth, StretchHeight));\nend;\n\nprocedure TBGRAAnimatedGif.SetAspectRatio(AValue: single);\nbegin\n  if AValue < 0.25 then AValue := 0.25;\n  if AValue > 4 then AValue := 4;\n  if FAspectRatio=AValue then Exit;\n  FAspectRatio:=AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetBackgroundColor(AValue: TColor);\nbegin\n  if FBackgroundColor=AValue then Exit;\n  FBackgroundColor:=AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameDelayMs(AIndex: integer; AValue: integer);\nbegin\n  CheckFrameIndex(AIndex);\n  if AValue < 0 then AValue := 0;\n  FTotalAnimationTime := FTotalAnimationTime + AValue - FImages[AIndex].DelayMs;\n  FImages[AIndex].DelayMs := AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameDisposeMode(AIndex: integer;\n  AValue: TDisposeMode);\nbegin\n  CheckFrameIndex(AIndex);\n  FImages[AIndex].DisposeMode := AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameDrawMode(AIndex: integer; AValue: TDrawMode);\nbegin\n  CheckFrameIndex(AIndex);\n  if not (AValue in[dmSet, dmSetExceptTransparent, dmLinearBlend]) then\n    raise Exception.Create('Unhandled draw mode');\n  FImages[AIndex].DrawMode := AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameHasLocalPalette(AIndex: integer;\n  AValue: boolean);\nbegin\n  CheckFrameIndex(AIndex);\n  FImages[AIndex].HasLocalPalette := AValue;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameImage(AIndex: integer; AValue: TBGRABitmap);\nvar ACopy: TBGRABitmap;\nbegin\n  CheckFrameIndex(AIndex);\n  ACopy := AValue.Duplicate;\n  FImages[AIndex].Image.FreeReference;\n  FImages[AIndex].Image := ACopy;\nend;\n\nprocedure TBGRAAnimatedGif.SetFrameImagePos(AIndex: integer; AValue: TPoint);\nbegin\n  CheckFrameIndex(AIndex);\n  FImages[AIndex].Position := AValue;\nend;\n\nprocedure TBGRAAnimatedGif.UpdateSimple(Canvas: TCanvas; ARect: TRect;\n  DrawOnlyIfChanged: boolean = True);\nbegin\n  if FPreviousVirtualScreen <> nil then\n  begin\n    FPreviousVirtualScreen.FreeReference;\n    FPreviousVirtualScreen := nil;\n  end;\n\n  Render(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);\n  if FImageChanged then\n  begin\n    FStretchedVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, False);\n    FImageChanged := False;\n  end\n  else\n  if not DrawOnlyIfChanged then\n    FStretchedVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, False);\n\n  FPreviousVirtualScreen := TBGRABitmap(FStretchedVirtualScreen.NewReference);\nend;\n\nprocedure TBGRAAnimatedGif.CheckFrameIndex(AIndex: integer);\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then Raise ERangeError.Create('Index out of bounds');\nend;\n\nfunction TBGRAAnimatedGif.GetAverageDelayMs: integer;\nvar sum: int64;\n  i: Integer;\nbegin\n  if Count > 0 then\n  begin\n    sum := 0;\n    for i := 0 to Count-1 do\n      inc(sum, FrameDelayMs[i]);\n    result := sum div Count;\n  end else\n    result := 100; //default\nend;\n\nfunction TBGRAAnimatedGif.GetCount: integer;\nbegin\n  Result := length(FImages);\nend;\n\nfunction TBGRAAnimatedGif.GetFrameDelayMs(AIndex: integer): integer;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].DelayMs;\nend;\n\nfunction TBGRAAnimatedGif.GetFrameDisposeMode(AIndex: integer): TDisposeMode;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].DisposeMode;\nend;\n\nfunction TBGRAAnimatedGif.GetFrameDrawMode(AIndex: integer): TDrawMode;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].DrawMode;\nend;\n\nfunction TBGRAAnimatedGif.GetFrameHasLocalPalette(AIndex: integer): boolean;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].HasLocalPalette;\nend;\n\nfunction TBGRAAnimatedGif.GetFrameImage(AIndex: integer): TBGRABitmap;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].Image;\nend;\n\nfunction TBGRAAnimatedGif.GetFrameImagePos(AIndex: integer): TPoint;\nbegin\n  CheckFrameIndex(AIndex);\n  result := FImages[AIndex].Position;\nend;\n\nfunction TBGRAAnimatedGif.GetTimeUntilNextImage: integer;\nvar\n  acc: double;\nbegin\n  if Count <= 1 then result := 60*1000 else\n  if (FWantedImage <> -1) or (FCurrentImage = -1) then\n    result := 0\n  else\n  begin\n    acc := FTimeAccumulator;\n    if not FPaused then IncF(acc, (Now- FPrevDate) * 24 * 60 * 60 * 1000);\n    if acc >= FImages[FCurrentImage].DelayMs then\n      result := 0\n    else\n      result := round(FImages[FCurrentImage].DelayMs-FTimeAccumulator);\n  end;\nend;\n\n{$IFDEF BGRABITMAP_USE_LCL}\nprocedure TBGRAAnimatedGif.OnTimer(Sender: TObject);\nvar\n  waitMs: Integer;\nbegin\n  waitMs := TimeUntilNextImageMs;\n  if waitMs <= 0 then\n  begin\n    Changed(self);\n  end else\n  begin\n    FTimer.Enabled := false;\n    FTimer.Interval:= waitMs+5;\n    FTimer.Enabled := true;\n  end;\nend;\n{$ENDIF}\n\nconstructor TBGRAAnimatedGif.Create(filenameUTF8: string);\nbegin\n  inherited Create;\n  Init;\n  LoadFromFile(filenameUTF8);\nend;\n\nconstructor TBGRAAnimatedGif.Create(stream: TStream);\nbegin\n  inherited Create;\n  Init;\n  LoadFromStream(stream);\nend;\n\nconstructor TBGRAAnimatedGif.Create(stream: TStream; AMaxImageCount: integer);\nbegin\n  inherited Create;\n  Init;\n  LoadFromStream(stream, AMaxImageCount);\nend;\n\nconstructor TBGRAAnimatedGif.Create;\nbegin\n  inherited Create;\n  Init;\n  LoadFromStream(nil);\nend;\n\nfunction TBGRAAnimatedGif.Duplicate: TBGRAAnimatedGif;\nvar\n  i: integer;\nbegin\n  Result := TBGRAAnimatedGif.Create;\n  setlength(Result.FImages, length(FImages));\n  for i := 0 to high(FImages) do\n  begin\n    Result.FImages[i] := FImages[i];\n    FImages[i].Image.NewReference;\n  end;\n  Result.FWidth  := FWidth;\n  Result.FHeight := FHeight;\n  Result.FBackgroundColor := FBackgroundColor;\nend;\n\nprocedure TBGRAAnimatedGif.Assign(ASource: TPersistent);\nvar\n  i: integer;\n  src: TBGRAAnimatedGif;\nbegin\n  if ASource is TBGRAAnimatedGif then\n  begin\n    src := TBGRAAnimatedGif(ASource);\n    Clear;\n    FWidth  := src.Width;\n    FHeight := src.Height;\n    FBackgroundColor := src.BackgroundColor;\n    FAspectRatio:= src.AspectRatio;\n    LoopDone := 0;\n    LoopCount := src.LoopCount;\n\n    SetLength(FImages, src.Count);\n    FTotalAnimationTime:= 0;\n    for i := 0 to src.Count-1 do\n    begin\n      FImages[i] := src.FImages[i];\n      FImages[i].Image := FImages[i].Image.Duplicate;\n      inc(FTotalAnimationTime, FImages[i].DelayMs);\n    end;\n    Changed(self);\n  end else\n  if ASource is TFPCustomImage then\n    AssignImage(TFPCustomImage(ASource), false)\n  else\n    inherited Assign(ASource);\nend;\n\nfunction TBGRAAnimatedGif.AddFrame(AImage: TFPCustomImage; X, Y: integer;\n  ADelayMs: integer; ADisposeMode: TDisposeMode; AHasLocalPalette: boolean;\n  ADrawMode: TDrawMode; AOwned: boolean): integer;\nbegin\n  result := length(FImages);\n  InsertFrame(result, AImage, X, Y, ADelayMs, ADisposeMode, AHasLocalPalette,\n    ADrawMode, AOwned);\nend;\n\nprocedure TBGRAAnimatedGif.InsertFrame(AIndex: integer; AImage: TFPCustomImage; X,\n  Y: integer; ADelayMs: integer; ADisposeMode: TDisposeMode;\n  AHasLocalPalette: boolean; ADrawMode: TDrawMode; AOwned: boolean);\nvar i: integer;\nbegin\n  if (AIndex < 0) or (AIndex > Count) then\n    raise ERangeError.Create('Index out of bounds');\n  setlength(FImages, length(FImages)+1);\n  if ADelayMs < 0 then ADelayMs:= 0;\n  for i := high(FImages) downto AIndex+1 do\n    FImages[i] := FImages[i-1];\n  with FImages[AIndex] do\n  begin\n    if AOwned then\n    begin\n      if AImage is TBGRABitmap then\n        Image := TBGRABitmap(AImage)\n      else\n      begin\n        Image := TBGRABitmap.Create(AImage);\n        AImage.Free;\n      end;\n    end else\n      Image := TBGRABitmap.Create(AImage);\n    Position := Point(x,y);\n    DelayMs := ADelayMs;\n    HasLocalPalette := AHasLocalPalette;\n    DisposeMode := ADisposeMode;\n    DrawMode := ADrawMode;\n  end;\n  inc(FTotalAnimationTime, ADelayMs);\n  if AIndex <= FCurrentImage then inc(FCurrentImage);\nend;\n\nfunction TBGRAAnimatedGif.AddFullFrame(AImage: TFPCustomImage;\n  ADelayMs: integer; AHasLocalPalette: boolean;\n  ADrawMode: TDrawMode; AOwned: boolean): integer;\nbegin\n  if (AImage.Width <> Width) or (AImage.Height <> Height) then\n    raise exception.Create('Size mismatch');\n  if Count > 0 then\n    FrameDisposeMode[Count-1] := dmErase;\n  result := AddFrame(AImage, 0,0, ADelayMs, dmErase, AHasLocalPalette,\n    ADrawMode, AOwned);\nend;\n\nprocedure TBGRAAnimatedGif.InsertFullFrame(AIndex: integer;\n  AImage: TFPCustomImage; ADelayMs: integer; AHasLocalPalette: boolean;\n  ADrawMode: TDrawMode; AOwned: boolean);\nbegin\n  if (AIndex < 0) or (AIndex > Count) then\n    raise ERangeError.Create('Index out of bounds');\n\n  if AIndex = Count then\n    AddFullFrame(AImage, ADelayMs, AHasLocalPalette, ADrawMode, AOwned)\n  else\n  begin\n    //if previous image did not clear up, ensure that\n    //next image will stay the same\n    if AIndex > 0 then\n      EnsureNextFrameRec(AIndex-1);\n\n    InsertFrame(AIndex, AImage, 0,0, ADelayMs, dmErase, AHasLocalPalette,\n      ADrawMode, AOwned);\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.ReplaceFullFrame(AIndex: integer;\n  AImage: TFPCustomImage; ADelayMs: integer; AHasLocalPalette: boolean;\n  ADrawMode: TDrawMode; AOwned: boolean);\nbegin\n  DeleteFrame(AIndex, True);\n  if AIndex > 0 then FrameDisposeMode[AIndex-1] := dmErase;\n  InsertFrame(AIndex, AImage, 0,0, ADelayMs, dmErase, AHasLocalPalette,\n    ADrawMode, AOwned);\nend;\n\nprocedure TBGRAAnimatedGif.OptimizeFrames;\nvar\n  prevCurImage, i, y, x: Integer;\n  prevFrame, curFrame, changeFrame: TBGRABitmap;\n  scanPrev, scanNext: PBGRAPixel;\n  transparentAppear: Boolean;\n  rChange: TRect;\nbegin\n  if Count <= 1 then exit;\n  prevCurImage := CurrentImage;\n  CurrentImage := 0;\n  prevFrame := MemBitmap.Duplicate;\n  for i := 1 to Count-1 do\n  begin\n    CurrentImage := i;\n    curFrame := MemBitmap.Duplicate;\n    //necessary only if transparent pixels appear\n    if FrameDisposeMode[i-1] = dmErase then\n    begin\n      transparentAppear := false;\n      for y := 0 to Height-1 do\n      begin\n        scanPrev := prevFrame.ScanLine[y];\n        scanNext := curFrame.ScanLine[y];\n        for x := 0 to Width-1 do\n        begin\n          if (scanNext^.alpha < 255) and (scanPrev^ <> scanNext^) then\n          begin\n            transparentAppear:= true;\n            break;\n          end;\n          inc(scanPrev);\n          inc(scanNext);\n        end;\n      end;\n      if not transparentAppear then\n        FrameDisposeMode[i-1] := dmKeep;\n    end;\n\n    if FrameDisposeMode[i-1] = dmKeep then\n    begin\n      changeFrame := curFrame.Duplicate;\n      for y := 0 to Height-1 do\n      begin\n        scanPrev := prevFrame.ScanLine[y];\n        scanNext := changeFrame.ScanLine[y];\n        for x := 0 to Width-1 do\n        begin\n          if scanPrev^ = scanNext^ then\n            scanNext^ := BGRAPixelTransparent;\n          inc(scanPrev);\n          inc(scanNext);\n        end;\n      end;\n      rChange := changeFrame.GetImageBounds;\n      FImages[i].Image.FreeReference;\n      if rChange.IsEmpty then\n        FImages[i].Image := TBGRABitmap.Create\n      else\n        FImages[i].Image := changeFrame.GetPart(rChange);\n      FImages[i].Position := rChange.TopLeft;\n      changeFrame.Free;\n    end else\n    if FrameDisposeMode[i-1] = dmErase then\n    begin\n      rChange := curFrame.GetImageBounds;\n      if rChange <> RectWithSize(FImages[i].Position.x, FImages[i].Position.y,\n         FImages[i].Image.Width, FImages[i].Image.Height) then\n      begin\n        FImages[i].Image.FreeReference;\n        if rChange.IsEmpty then\n          FImages[i].Image := TBGRABitmap.Create\n        else\n          FImages[i].Image := curFrame.GetPart(rChange);\n        FImages[i].Position := rChange.TopLeft;\n      end;\n    end;\n\n    prevFrame.Free;\n    prevFrame := curFrame;\n    curFrame := nil;\n  end;\n  prevFrame.Free;\n  CurrentImage := prevCurImage;\nend;\n\nprocedure TBGRAAnimatedGif.DeleteFrame(AIndex: integer;\n  AEnsureNextFrameDoesNotChange: boolean);\nvar\n  i: Integer;\nbegin\n  CheckFrameIndex(AIndex);\n\n  //if this frame did not clear up, ensure that\n  //next image will stay the same\n  if AEnsureNextFrameDoesNotChange then\n    EnsureNextFrameRec(AIndex);\n\n  dec(FTotalAnimationTime, FImages[AIndex].DelayMs);\n\n  FImages[AIndex].Image.FreeReference;\n  for i := AIndex to Count-2 do\n    FImages[i] := FImages[i+1];\n  SetLength(FImages, Count-1);\n\n  if AIndex < CurrentImage then\n    CurrentImage := CurrentImage-1\n  else\n  if (CurrentImage >= Count) then\n  begin\n    CurrentImage := 0;\n    Changed(self);\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromStream(Stream: TStream);\nbegin\n  LoadFromStream(Stream, maxLongint);\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromStream(Stream: TStream;\n  AMaxImageCount: integer);\nbegin\n  if Stream = nil then\n  begin\n    Clear;\n    FWidth  := 0;\n    FHeight := 0;\n    exit;\n  end;\n  case DetectFileFormat(Stream) of\n    ifGif: LoadFromStreamAsGif(Stream, AMaxImageCount);\n    ifPng: LoadFromStreamAsPng(Stream, AMaxImageCount);\n    ifUnknown: raise Exception.Create('Unknown image format');\n  else\n    LoadFromStreamAsStatic(Stream);\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromResource(AFilename: string);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStream(Stream: TStream);\nbegin\n  SaveToStream(Stream, ifGif);\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStream(Stream: TStream; AFormat: TBGRAImageFormat);\nvar temp: TMemoryStream; // needed because stream position is set to zero\nbegin\n  case AFormat of\n    ifGif: SaveToStream(Stream, BGRAColorQuantizerFactory, daFloydSteinberg, AFormat);\n    ifPng: SaveToStreamAsPng(Stream);\n  else\n    begin\n      temp := TMemoryStream.Create;\n      try\n        MemBitmap.SaveToStreamAs(temp, AFormat);\n        temp.Position := 0;\n        Stream.CopyFrom(temp, temp.Size);\n      finally\n        temp.Free;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromFile(const AFilenameUTF8: string);\nvar stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead or fmShareDenyWrite);\n  try\n    LoadFromStream(stream);\n  finally\n    Stream.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.SaveToFile(const AFilenameUTF8: string);\nvar\n  Stream: TFileStreamUTF8;\n  imageFormat: TBGRAImageFormat;\nbegin\n  imageFormat := SuggestImageFormat(AFilenameUTF8);\n  if imageFormat = ifUnknown then imageFormat := ifGif;\n  CheckSavable(imageFormat);\n  Stream := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate);\n  try\n    SaveToStream(Stream, imageFormat);\n  finally\n    Stream.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.Draw(ACanvas: TCanvas; const Rect: TRect);\nbegin\n  if FBackgroundImage <> nil then\n    FreeAndNil(FBackgroundImage);\n  SaveBackgroundOnce(ACanvas, Rect);\n\n  if FPreviousVirtualScreen <> nil then\n  begin\n    FPreviousVirtualScreen.FreeReference;\n    FPreviousVirtualScreen := nil;\n  end;\n\n  Render(Rect.Right - Rect.Left, Rect.Bottom - Rect.Top);\n  FStretchedVirtualScreen.Draw(ACanvas, Rect.Left, Rect.Top, false);\n  FImageChanged := False;\n\n  FPreviousVirtualScreen := TBGRABitmap(FStretchedVirtualScreen.Duplicate);\n\n  {$IFDEF BGRABITMAP_USE_LCL}\n  FTimer.Enabled := false;\n  if Count > 1 then\n  begin\n    FTimer.Interval := TimeUntilNextImageMs + 5;\n    FTimer.Enabled := true;\n  end;\n  {$ENDIF}\nend;\n\nfunction TBGRAAnimatedGif.GetEmpty: boolean;\nbegin\n  Result := (length(FImages) = 0);\nend;\n\nfunction TBGRAAnimatedGif.GetHeight: integer;\nbegin\n  Result := FHeight;\nend;\n\nfunction TBGRAAnimatedGif.GetTransparent: boolean;\nbegin\n  Result := True;\nend;\n\nfunction TBGRAAnimatedGif.GetWidth: integer;\nbegin\n  Result := FWidth;\nend;\n\nprocedure TBGRAAnimatedGif.SetHeight(Value: integer);\nbegin\n  //not implemented\nend;\n\nprocedure TBGRAAnimatedGif.SetTransparent(Value: boolean);\nbegin\n  //not implemented\nend;\n\nprocedure TBGRAAnimatedGif.SetWidth(Value: integer);\nbegin\n  //not implemented\nend;\n\nprocedure TBGRAAnimatedGif.ClearViewer;\nbegin\n  FCurrentImage    := -1;\n  FWantedImage     := -1;\n  FTimeAccumulator := 0;\n\n  if FStretchedVirtualScreen <> nil then\n    FStretchedVirtualScreen.FreeReference;\n  if FPreviousVirtualScreen <> nil then\n    FPreviousVirtualScreen.FreeReference;\n  FInternalVirtualScreen.Free;\n  FRestoreImage.Free;\n  FBackgroundImage.Free;\n\n  FInternalVirtualScreen := nil;\n  FStretchedVirtualScreen := nil;\n  FRestoreImage    := nil;\n  FBackgroundImage := nil;\n  FPreviousVirtualScreen := nil;\n\n  FPreviousDisposeMode := dmNone;\nend;\n\nprocedure TBGRAAnimatedGif.Changed(Sender: TObject);\nbegin\n  {$IFDEF BGRABITMAP_USE_LCL}\n  if Assigned(FTimer) then FTimer.Enabled := false;\n  {$ENDIF}\n  inherited Changed(Sender);\nend;\n\nprocedure TBGRAAnimatedGif.EnsureNextFrameRec(AIndex: integer);\nvar\n  nextImage: TBGRABitmap;\n  prevCurrentImage: integer;\nbegin\n  if (AIndex < Count-1) and (FrameDisposeMode[AIndex] <> dmErase) then\n  begin\n    prevCurrentImage := CurrentImage;\n    CurrentImage := AIndex+1;\n    nextImage := MemBitmap.Duplicate;\n    FrameImagePos[AIndex+1] := Point(0,0);\n    FrameImage[AIndex+1] := nextImage;\n    FrameHasLocalPalette[AIndex+1] := true;\n    FreeAndNil(nextImage);\n    EnsureNextFrameRec(AIndex+1);\n    FrameDisposeMode[AIndex] := dmErase;\n    CurrentImage := prevCurrentImage;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.AssignTo(Dest: TPersistent);\n\n  procedure AssignToBitmap;\n  {$IFDEF WINDOWS}\n  begin\n    MemBitmap.AssignToBitmap(TBitmap(Dest));\n  end;\n  {$ELSE}\n  var\n    copy: TBitmap;\n  begin\n    copy := MemBitmap.MakeBitmapCopy(CSSSilver, true);\n    try\n      TBitmap(Dest).Assign(copy);\n    finally\n      copy.Free;\n    end;\n  end;\n  {$ENDIF}\n\n  procedure AssignToFPImage;\n  var\n    img: TFPCustomImage;\n    p: PBGRAPixel;\n    yb, xb: Integer;\n    bgra: TBGRABitmap;\n  begin\n    bgra := MemBitmap;\n    img := TFPCustomImage(Dest);\n    img.SetSize(bgra.Width, bgra.Height);\n    for yb := 0 to bgra.Height-1 do\n    begin\n      p := bgra.ScanLine[yb];\n      for xb := 0 to bgra.Width-1 do\n      begin\n        img.Colors[xb,yb] := p^.ToFPColor;\n        inc(p);\n      end;\n    end;\n  end;\n\nbegin\n  if Dest is TBitmap then\n    AssignToBitmap\n  else if Dest is TBGRACustomBitmap then\n    Dest.Assign(MemBitmap)\n  else if Dest is TFPCustomImage then\n    AssignToFPImage\n  else\n    inherited AssignTo(Dest);\nend;\n\nprocedure TBGRAAnimatedGif.AssignImage(AImage: TFPCustomImage; AOwned: boolean);\nbegin\n  Clear;\n  SetSize(AImage.Width, AImage.Height);\n  AddFrame(AImage, 0, 0, 100, dmKeep, False, dmSet, AOwned);\n  Changed(self);\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromStreamAsGif(Stream: TStream;\n  AMaxImageCount: integer);\nvar data: TGIFData;\n  i: integer;\nbegin\n  data := GIFLoadFromStream(Stream, AMaxImageCount);\n\n  Clear;\n  FWidth  := data.Width;\n  FHeight := data.Height;\n  FBackgroundColor := data.BackgroundColor;\n  FAspectRatio:= data.AspectRatio;\n  LoopCount := data.LoopCount;\n\n  SetLength(FImages, length(data.Images));\n  FTotalAnimationTime:= 0;\n  for i := 0 to high(FImages) do\n  begin\n    FImages[i] := data.Images[i];\n    inc(FTotalAnimationTime, FImages[i].DelayMs);\n  end;\n\n  Changed(self);\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromStreamAsPng(Stream: TStream;\n  AMaxImageCount: integer);\nvar\n  reader: TBGRAReaderPNG;\n  mainBitmap, frameBitmap: TBGRABitmap;\n  frameControl: TFrameControlChunk;\n  i: Integer;\n  disposeMode: TDisposeMode;\n  drawMode: TDrawMode;\nbegin\n  reader := TBGRAReaderPNG.Create;\n  mainBitmap := nil;\n  try\n    mainBitmap := TBGRABitmap.Create;\n    mainBitmap.CanvasDrawModeFP := dmSet;\n    reader.ImageRead(Stream, mainBitmap);\n    // if it is actually an animation\n    if reader.FrameCount > 0 then\n    begin\n      Clear;\n      LoopCount := reader.LoopCount;\n      if mainBitmap.ResolutionY <> 0 then\n        AspectRatio := mainBitmap.ResolutionX / mainBitmap.ResolutionY;\n      SetSize(mainBitmap.Width, mainBitmap.Height);\n      for i := 0 to reader.FrameCount-1 do\n      begin\n        frameControl := reader.FrameControl[i];\n        case frameControl.DisposeOp of\n          APNG_DISPOSE_OP_NONE: disposeMode := dmKeep;\n          APNG_DISPOSE_OP_PREVIOUS:\n          begin\n            if i = 0 then\n              disposeMode := dmErase\n              else disposeMode:= dmRestore;\n          end\n          else {APNG_DISPOSE_OP_BACKGROUND}\n          begin\n            if (frameControl.OffsetX = 0) and (frameControl.OffsetY = 0)\n              and (frameControl.Width = Width) and (frameControl.Height = Height) then\n              disposeMode := dmErase\n            else\n              disposeMode:= dmEraseArea;\n          end;\n        end;\n        if frameControl.BlendOp = APNG_BLEND_OP_OVER then\n          drawMode := dmLinearBlend\n        else\n          drawMode := dmSet;\n        if (i = reader.MainImageFrameIndex) and Assigned(mainBitmap) then\n        begin\n          frameBitmap := mainBitmap;\n          mainBitmap := nil;\n        end else\n        begin\n          frameBitmap := TBGRABitmap.Create;\n          frameBitmap.CanvasDrawModeFP := dmSet;\n          reader.LoadFrame(i, frameBitmap);\n        end;\n        AddFrame(frameBitmap, frameControl.OffsetX, frameControl.OffsetY,\n          round(frameControl.DelayNum / frameControl.DelayDenom * 1000),\n          disposeMode, false, drawMode, true);\n      end;\n    end else\n    begin\n      AssignImage(mainBitmap, true);\n      mainBitmap := nil;\n    end;\n  finally\n    mainBitmap.Free;\n    reader.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.LoadFromStreamAsStatic(Stream: TStream);\nvar\n  image: TBGRABitmap;\nbegin\n  image := TBGRABitmap.Create(Stream);\n  AssignImage(image, true);\nend;\n\nprocedure TBGRAAnimatedGif.CheckSavable(AFormat: TBGRAImageFormat);\nvar\n  drawMode: TDrawMode;\n  disposeMode: TDisposeMode;\n  framePos: TPoint;\n  i: integer;\nbegin\n  CheckAnyFrame;\n  case AFormat of\n    ifGif: begin\n      for i := 0 to Count-1 do\n      begin\n        drawMode := FrameDrawMode[i];\n        if (drawMode <> dmSetExceptTransparent) and\n         not ((drawMode in[dmSet, dmLinearBlend]) and (i = 0)) and\n         not ((drawMode = dmLinearBlend) and FrameImage[i].HasSemiTransparentPixels) then\n        begin\n          raise Exception.Create('Draw mode not supported by GIF');\n        end;\n        disposeMode := FrameDisposeMode[i];\n        framePos := FrameImagePos[i];\n        if (disposeMode = dmEraseArea) and\n          ((framePos.X <> 0) or (framePos.Y <> 0) or\n           (FrameImage[i].Width <> Width) or\n           (FrameImage[i].Height <> Height)) then\n          raise Exception.Create('Dispose mode not supported by GIF');\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.CheckAnyFrame;\nbegin\n  if Count = 0 then\n    raise Exception.Create('No frame defined');\n  if (Width = 0) or (Height = 0) then\n    raise Exception.Create('Image of zero size');\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStreamAsPng(Stream: TStream);\nvar\n  writer: TBGRAWriterPNG;\n  curImage, mainImageWithMargin: TBGRABitmap;\n  framesToWrite: TPNGArrayOfFrameToWrite;\n  fc: TFrameControlChunk;\n  i: integer;\n  temp: TMemoryStream; // needed because stream position is set to zero\nbegin\n  CheckSavable(ifPng);\n\n  writer := TBGRAWriterPNG.Create;\n  mainImageWithMargin := nil;\n  temp := TMemoryStream.Create;\n  try\n    // check if transparency will be used\n    writer.UseAlpha:= false;\n    for i := 0 to Count-1 do\n      if FrameImage[i].HasTransparentPixels then\n        writer.UseAlpha:= true;\n\n    // define frame array to write\n    SetLength(framesToWrite, Count);\n    for i := 0 to Count-1 do\n    begin\n      curImage := FrameImage[i];\n      if i = 0 then\n      begin\n        fc.Width := Width;\n        fc.Height := Height;\n        fc.OffsetX := 0;\n        fc.OffsetY := 0;\n        if (curImage.Width <> Width) or\n          (curImage.Height <> Height) or\n          (FrameImagePos[i].X <> 0) or\n          (FrameImagePos[i].Y <> 0) then\n        begin\n          // add margin to main image\n          mainImageWithMargin := TBGRABitmap.Create(Width, Height);\n          mainImageWithMargin.PutImage(FrameImagePos[i].X,\n            FrameImagePos[i].Y, curImage, dmSet);\n          curImage.CopyPropertiesTo(mainImageWithMargin);\n          curImage := mainImageWithMargin;\n          mainImageWithMargin := nil;\n        end;\n      end else\n      begin\n        fc.Width := curImage.Width;\n        fc.Height := curImage.Height;\n        fc.OffsetX:= FrameImagePos[i].X;\n        fc.OffsetY:= FrameImagePos[i].Y;\n      end;\n      fc.DelayNum := FrameDelayMs[i];\n      fc.DelayDenom := 1000;\n      case FrameDisposeMode[i] of\n        dmErase, dmEraseArea: fc.DisposeOp := APNG_DISPOSE_OP_BACKGROUND;\n        dmRestore: fc.DisposeOp:= APNG_DISPOSE_OP_PREVIOUS;\n        else fc.DisposeOp := APNG_DISPOSE_OP_NONE;\n      end;\n      case FrameDrawMode[i] of\n        dmLinearBlend, dmDrawWithTransparency: fc.BlendOp:= APNG_BLEND_OP_OVER;\n        else fc.BlendOp:= APNG_BLEND_OP_SOURCE;\n      end;\n      framesToWrite[i].FrameControl := fc;\n      framesToWrite[i].Image := curImage;\n    end;\n\n    writer.AnimationWrite(temp, framesToWrite[0].Image, framesToWrite);\n    temp.Position := 0;\n    Stream.CopyFrom(temp, temp.Size);\n  finally\n    temp.Free;\n    mainImageWithMargin.Free;\n    writer.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStreamAsPng(Stream: TStream;\n  AQuantizer: TBGRAColorQuantizerAny; ADitheringAlgorithm: TDitheringAlgorithm);\nvar\n  weightedPalette: TBGRAWeightedPalette;\n  reducedPalette: TFPPalette;\n  bmp: TBGRABitmap;\n  i: Integer;\n  pData: PBGRAPixel;\n  quantizer: TBGRACustomColorQuantizer;\n  writer: TBGRAWriterPNG;\n  framesToWrite: TPNGArrayOfFrameToWrite;\n  fc: TFrameControlChunk;\n  curImage: TBGRABitmap;\n  mainImageWithMargin: TBGRABitmap;\nbegin\n  CheckSavable(ifPng);\n  weightedPalette := nil;\n  reducedPalette := nil;\n  quantizer := nil;\n  mainImageWithMargin := nil;\n  writer := TBGRAWriterPNG.Create;\n  try\n    // check if transparency will be used\n    writer.UseAlpha:= false;\n    for i := 0 to Count-1 do\n      if FrameImage[i].HasTransparentPixels then\n        writer.UseAlpha:= true;\n\n    // make global palette for all frames\n    weightedPalette := TBGRAWeightedPalette.Create;\n    for i := 0 to Count-1 do\n      weightedPalette.IncColors(FrameImage[i]);\n    quantizer := AQuantizer.Create(weightedPalette, false, 256);\n    FreeAndNil(weightedPalette);\n    reducedPalette := TFPPalette.Create(0);\n    quantizer.ReducedPalette.AssignTo(reducedPalette);\n    writer.CustomPalette := reducedPalette;\n\n    // define frame array to write\n    SetLength(framesToWrite, Count);\n    for i := 0 to Count-1 do\n    begin\n      curImage := FrameImage[i];\n      if i = 0 then\n      begin\n        fc.Width := Width;\n        fc.Height := Height;\n        fc.OffsetX := 0;\n        fc.OffsetY := 0;\n        if (curImage.Width <> Width) or\n          (curImage.Height <> Height) or\n          (FrameImagePos[i].X <> 0) or\n          (FrameImagePos[i].Y <> 0) then\n        begin\n          // add margin to main image\n          mainImageWithMargin := TBGRABitmap.Create(Width, Height);\n          mainImageWithMargin.PutImage(FrameImagePos[i].X,\n            FrameImagePos[i].Y, curImage, dmSet);\n          curImage.CopyPropertiesTo(mainImageWithMargin);\n          quantizer.ApplyDitheringInplace(ADitheringAlgorithm, mainImageWithMargin);\n          curImage := mainImageWithMargin;\n          mainImageWithMargin := nil;\n        end;\n      end else\n      begin\n        fc.Width := curImage.Width;\n        fc.Height := curImage.Height;\n        fc.OffsetX:= FrameImagePos[i].X;\n        fc.OffsetY:= FrameImagePos[i].Y;\n        curImage := curImage.Duplicate(true);\n        quantizer.ApplyDitheringInplace(ADitheringAlgorithm, curImage);\n      end;\n      fc.DelayNum := FrameDelayMs[i];\n      fc.DelayDenom := 1000;\n      case FrameDisposeMode[i] of\n        dmErase, dmEraseArea: fc.DisposeOp := APNG_DISPOSE_OP_BACKGROUND;\n        dmRestore: fc.DisposeOp:= APNG_DISPOSE_OP_PREVIOUS;\n        else fc.DisposeOp := APNG_DISPOSE_OP_NONE;\n      end;\n      case FrameDrawMode[i] of\n        dmLinearBlend, dmDrawWithTransparency: fc.BlendOp:= APNG_BLEND_OP_OVER;\n        else fc.BlendOp:= APNG_BLEND_OP_SOURCE;\n      end;\n      framesToWrite[i].FrameControl := fc;\n      framesToWrite[i].Image := curImage;\n    end;\n\n    writer.AnimationWrite(Stream, framesToWrite[0].Image, framesToWrite);\n  finally\n    for i := 0 to high(framesToWrite) do\n      framesToWrite[i].Image.Free;\n    mainImageWithMargin.Free;\n    quantizer.Free;\n    weightedPalette.Free;\n    reducedPalette.Free;\n    writer.Free;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.SaveToStreamAsGif(Stream: TStream;\n  AQuantizer: TBGRAColorQuantizerAny; ADitheringAlgorithm: TDitheringAlgorithm);\nvar data: TGIFData;\nbegin\n  CheckSavable(ifGif);\n  data.Height:= Height;\n  data.Width := Width;\n  data.AspectRatio := AspectRatio;\n  data.BackgroundColor := BackgroundColor;\n  data.Images := FImages;\n  data.LoopCount := LoopCount;\n  GIFSaveToStream(data, Stream, AQuantizer, ADitheringAlgorithm);\nend;\n\nprocedure TBGRAAnimatedGif.SaveBackgroundOnce(Canvas: TCanvas; ARect: TRect);\nbegin\n  if (FBackgroundImage <> nil) and\n    ((FBackgroundImage.Width <> ARect.Right - ARect.Left) or\n    (FBackgroundImage.Height <> ARect.Bottom - ARect.Top)) then\n    FreeAndNil(FBackgroundImage);\n\n  if (BackgroundMode in [gbmSaveBackgroundOnce, gbmUpdateBackgroundContinuously]) and\n    (FBackgroundImage = nil) then\n  begin\n    FBackgroundImage := TBGRABitmap.Create(ARect.Right - ARect.Left,\n      ARect.Bottom - ARect.Top);\n    FBackgroundImage.GetImageFromCanvas(Canvas, ARect.Left, ARect.Top);\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.SetCurrentImage(Index: integer);\nbegin\n  if (Index >= 0) and (Index < Length(FImages)) then\n    FWantedImage := Index;\nend;\n\nprocedure TBGRAAnimatedGif.Clear;\nvar\n  i, prevCount: integer;\nbegin\n  inherited Clear;\n\n  prevCount := Count;\n\n  for i := 0 to Count - 1 do\n    FImages[i].Image.FreeReference;\n  FImages := nil;\n  LoopDone := 0;\n  LoopCount := 0;\n  AspectRatio := 1;\n  BackgroundColor:= clNone;\n  ClearViewer;\n\n  if not FDestroying and (prevCount <> 0) then\n    Changed(self);\nend;\n\ndestructor TBGRAAnimatedGif.Destroy;\nbegin\n  FDestroying := true;\n  {$IFDEF BGRABITMAP_USE_LCL}\n  FTimer.Enabled := false;\n  FreeAndNil(FTimer);\n  {$ENDIF}\n  Clear;\n\n  if FStretchedVirtualScreen <> nil then\n    FStretchedVirtualScreen.FreeReference;\n  if FPreviousVirtualScreen <> nil then\n    FPreviousVirtualScreen.FreeReference;\n  FInternalVirtualScreen.Free;\n  FRestoreImage.Free;\n  FBackgroundImage.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRAAnimatedGif.Pause;\nbegin\n  FPaused := True;\nend;\n\nprocedure TBGRAAnimatedGif.Resume;\nbegin\n  FPaused := False;\nend;\n\nprocedure TBGRAAnimatedGif.Show(Canvas: TCanvas; ARect: TRect);\nbegin\n  Canvas.StretchDraw(ARect, self);\nend;\n\nprocedure TBGRAAnimatedGif.Update(Canvas: TCanvas; ARect: TRect);\nvar\n  n: integer;\n  PChangePix, PNewPix, PBackground, PNewBackground: PLongWord;\n  oldpix, newpix, newbackpix: LongWord;\n  NewBackgroundImage: TBGRABitmap;\nbegin\n  if (BackgroundMode = gbmUpdateBackgroundContinuously) and\n    (FBackgroundImage = nil) then\n    BackgroundMode := gbmSaveBackgroundOnce;\n\n  SaveBackgroundOnce(Canvas, ARect);\n\n  case BackgroundMode of\n    gbmSimplePaint:\n    begin\n      UpdateSimple(Canvas, ARect);\n      exit;\n    end;\n    gbmEraseBackground:\n    begin\n      UpdateEraseBackground(Canvas, ARect);\n      exit;\n    end;\n    gbmSaveBackgroundOnce, gbmUpdateBackgroundContinuously:\n    begin\n      if FPreviousVirtualScreen <> nil then\n      begin\n        if (FPreviousVirtualScreen.Width <> ARect.Right - ARect.Left) or\n          (FPreviousVirtualScreen.Height <> ARect.Bottom - ARect.Top) then\n        begin\n          FPreviousVirtualScreen.FreeReference;\n          FPreviousVirtualScreen := nil;\n        end\n        else\n          FPreviousVirtualScreen := TBGRABitmap(FPreviousVirtualScreen.GetUnique);\n      end;\n\n      Render(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);\n\n      if FImageChanged then\n      begin\n        if BackgroundMode = gbmUpdateBackgroundContinuously then\n        begin\n          NewBackgroundImage :=\n            TBGRABitmap.Create(FStretchedVirtualScreen.Width,\n            FStretchedVirtualScreen.Height);\n          NewBackgroundImage.GetImageFromCanvas(Canvas, ARect.Left, ARect.Top);\n\n          if FPreviousVirtualScreen = nil then\n          begin\n            FPreviousVirtualScreen := TBGRABitmap.Create(FWidth, FHeight);\n            FPreviousVirtualScreen.Fill(BGRAPixelTransparent);\n          end;\n\n          PChangePix  := PLongWord(FPreviousVirtualScreen.Data);\n          PNewPix     := PLongWord(FStretchedVirtualScreen.Data);\n          PBackground := PLongWord(FBackgroundImage.Data);\n          PNewBackground := PLongWord(NewBackgroundImage.Data);\n          for n := FStretchedVirtualScreen.NbPixels - 1 downto 0 do\n          begin\n            oldpix := PChangePix^;\n\n            if (oldpix and AlphaMask = AlphaMask) then //pixel opaque précédent\n            begin\n              newbackpix := PNewBackground^;\n              if (newbackpix <> oldpix) then //stocke nouveau fond\n                PBackground^ := newbackpix;\n            end;\n\n            newpix := PNewPix^;\n\n            if newpix and AlphaMask = AlphaMask then\n              PChangePix^ := newpix //pixel opaque\n            else if newpix and AlphaMask > 0 then\n            begin\n              PChangePix^ := PBackground^;\n              DrawPixelInlineNoAlphaCheck(PBGRAPixel(PChangePix), PBGRAPixel(@newpix)^);\n            end\n            else if PChangePix^ and AlphaMask <> 0 then\n              PChangePix^ := PBackground^; //efface précédent\n\n{               if newpix and AlphaMask > AlphaLimit then PChangePix^ := newpix or AlphaMask //pixel opaque\n               else if PChangePix^ and AlphaMask <> 0 then PChangePix^ := PBackground^; //efface précédent}\n\n            Inc(PNewPix);\n            Inc(PChangePix);\n            Inc(PBackground);\n            Inc(PNewBackground);\n          end;\n          NewBackgroundImage.Free;\n          FPreviousVirtualScreen.InvalidateBitmap;\n          FPreviousVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, false);\n          FPreviousVirtualScreen.PutImage(0, 0, FStretchedVirtualScreen, dmSet);\n        end\n        else\n        begin\n          if FPreviousVirtualScreen = nil then\n          begin\n            FStretchedVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, false);\n            FPreviousVirtualScreen :=\n              TBGRABitmap(FStretchedVirtualScreen.NewReference);\n          end\n          else\n          begin\n            PChangePix  := PLongWord(FPreviousVirtualScreen.Data);\n            PNewPix     := PLongWord(FStretchedVirtualScreen.Data);\n            PBackground := PLongWord(FBackgroundImage.Data);\n            for n := FStretchedVirtualScreen.NbPixels - 1 downto 0 do\n            begin\n              newpix := PNewPix^;\n\n              if newpix and AlphaMask = AlphaMask then\n                PChangePix^ := newpix //pixel opaque\n              else if newpix and AlphaMask > 0 then\n              begin\n                PChangePix^ := PBackground^;\n                DrawPixelInlineNoAlphaCheck(PBGRAPixel(PChangePix), PBGRAPixel(@newpix)^);\n              end\n              else if PChangePix^ and AlphaMask <> 0 then\n                PChangePix^ := PBackground^; //efface précédent\n\n{                 if newpix and AlphaMask > AlphaLimit then PChangePix^ := newpix or AlphaMask //pixel opaque\n                 else if PChangePix^ and AlphaMask <> 0 then PChangePix^ := PBackground^; //efface précédent}\n\n              Inc(PNewPix);\n              Inc(PChangePix);\n              Inc(PBackground);\n            end;\n            FPreviousVirtualScreen.InvalidateBitmap;\n            FPreviousVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, false);\n            FPreviousVirtualScreen.PutImage(0, 0, FStretchedVirtualScreen, dmSet);\n          end;\n        end;\n        FImageChanged := False;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.Hide(Canvas: TCanvas; ARect: TRect);\nvar\n  shape: TBGRABitmap;\n  p, pback: PBGRAPixel;\n  MemEraseColor: TBGRAPixel;\n  n: integer;\nbegin\n  MemEraseColor := ColorToBGRA(EraseColor);\n  if FPreviousVirtualScreen <> nil then\n  begin\n    if (FPreviousVirtualScreen.Width <> ARect.Right - ARect.Left) or\n      (FPreviousVirtualScreen.Height <> ARect.Bottom - ARect.Top) then\n    begin\n      FPreviousVirtualScreen.FreeReference;\n      FPreviousVirtualScreen := nil;\n    end;\n  end;\n\n  case BackgroundMode of\n    gbmEraseBackground, gbmSimplePaint:\n    begin\n      if FPreviousVirtualScreen <> nil then\n      begin\n        shape := TBGRABitmap(FPreviousVirtualScreen.Duplicate);\n        p     := shape.Data;\n        for n := shape.NbPixels - 1 downto 0 do\n        begin\n          if p^.alpha <> 0 then\n            p^ := MemEraseColor\n          else\n            p^ := BGRAPixelTransparent;\n          Inc(p);\n        end;\n        shape.Draw(Canvas, ARect.Left, ARect.Top, false);\n        shape.FreeReference;\n      end;\n    end;\n    gbmSaveBackgroundOnce, gbmUpdateBackgroundContinuously:\n    begin\n      if (FPreviousVirtualScreen <> nil) and (FBackgroundImage <> nil) then\n      begin\n        shape := TBGRABitmap(FPreviousVirtualScreen.Duplicate);\n        p     := shape.Data;\n        pback := FBackgroundImage.Data;\n        for n := shape.NbPixels - 1 downto 0 do\n        begin\n          if p^.alpha <> 0 then\n            p^ := pback^\n          else\n            p^ := BGRAPixelTransparent;\n          Inc(p);\n          Inc(pback);\n        end;\n        shape.Draw(Canvas, ARect.Left, ARect.Top, false);\n        shape.FreeReference;\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRAAnimatedGif.MakeBitmapCopy(ABackground: TColor): TBitmap;\nbegin\n  result := MemBitmap.MakeBitmapCopy(ABackground);\nend;\n\nprocedure TBGRAAnimatedGif.UpdateEraseBackground(Canvas: TCanvas;\n  ARect: TRect; DrawOnlyIfChanged: boolean);\nvar\n  n:      integer;\n  PChangePix, PNewPix: PLongWord;\n  newpix: LongWord;\n  MemPixEraseColor: LongWord;\nbegin\n  if EraseColor = clNone then\n  begin\n    UpdateSimple(Canvas, ARect, DrawOnlyIfChanged);\n    exit;\n  end;\n\n  if FPreviousVirtualScreen <> nil then\n  begin\n    if (FPreviousVirtualScreen.Width <> ARect.Right - ARect.Left) or\n      (FPreviousVirtualScreen.Height <> ARect.Bottom - ARect.Top) then\n    begin\n      FPreviousVirtualScreen.FreeReference;\n      FPreviousVirtualScreen := nil;\n    end\n    else\n      FPreviousVirtualScreen := TBGRABitmap(FPreviousVirtualScreen.GetUnique);\n  end;\n\n  Render(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);\n  if FImageChanged then\n  begin\n    PBGRAPixel(@MemPixEraseColor)^ := ColorToBGRA(EraseColor);\n    if FPreviousVirtualScreen = nil then\n    begin\n      FStretchedVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, false);\n      FPreviousVirtualScreen := TBGRABitmap(FStretchedVirtualScreen.NewReference);\n    end\n    else\n    begin\n      PChangePix := PLongWord(FPreviousVirtualScreen.Data);\n      PNewPix    := PLongWord(FStretchedVirtualScreen.Data);\n      for n := FStretchedVirtualScreen.NbPixels - 1 downto 0 do\n      begin\n        newpix := PNewPix^;\n\n        if newpix and AlphaMask = AlphaMask then\n          PChangePix^ := newpix //pixel opaque\n        else if newpix and AlphaMask > 0 then\n        begin\n          PChangePix^ := MemPixEraseColor;\n          DrawPixelInlineNoAlphaCheck(PBGRAPixel(PChangePix), PBGRAPixel(@newpix)^);\n        end\n        else if PChangePix^ and AlphaMask <> 0 then\n          PChangePix^ := MemPixEraseColor; //efface précédent\n{           if newpix and AlphaMask > AlphaLimit then PChangePix^ := newpix or AlphaMask //pixel opaque\n           else if PChangePix^ and AlphaMask <> 0 then PChangePix^ := MemPixEraseColor; //efface précédent}\n\n        Inc(PNewPix);\n        Inc(PChangePix);\n      end;\n      FPreviousVirtualScreen.InvalidateBitmap;\n      FPreviousVirtualScreen.Draw(Canvas, ARect.Left, ARect.Top, false);\n      FPreviousVirtualScreen.PutImage(0, 0, FStretchedVirtualScreen, dmSet);\n    end;\n\n    FImageChanged := False;\n  end;\nend;\n\nprocedure TBGRAAnimatedGif.Init;\nbegin\n  FDestroying := false;\n  BackgroundMode := gbmSaveBackgroundOnce;\n  BackgroundColor:= clNone;\n  LoopCount := 0;\n  LoopDone := 0;\n  AspectRatio:= 1;\n  {$IFDEF BGRABITMAP_USE_LCL}\n  FTimer := TTimer.Create(nil);\n  FTimer.Enabled := false;\n  FTimer.OnTimer:=@OnTimer;\n  {$ENDIF}\nend;\n\nfunction TBGRAAnimatedGif.GetBitmap: TBitmap;\nbegin\n  Render(FWidth, FHeight);\n  Result := FStretchedVirtualScreen.Bitmap;\nend;\n\nfunction TBGRAAnimatedGif.GetMemBitmap: TBGRABitmap;\nbegin\n  Render(FWidth, FHeight);\n  Result := FStretchedVirtualScreen;\nend;\n\n{ TBGRAAnimatedPng }\n\nprocedure TBGRAAnimatedPng.SaveToStream(Stream: TStream);\nbegin\n  SaveToStream(Stream, ifPng);\nend;\n\nclass function TBGRAAnimatedPng.GetFileExtensions: string;\nbegin\n  Result:= 'apng';\nend;\n\n{ TBGRAReaderGIF }\n\nprocedure TBGRAReaderGIF.InternalRead(Str: TStream; Img: TFPCustomImage);\nvar\n  gif:  TBGRAAnimatedGif;\n  x, y: integer;\n  Mem:  TBGRABitmap;\nbegin\n  gif := TBGRAAnimatedGif.Create(Str, 1);\n  Mem := gif.MemBitmap;\n  if Img is TBGRABitmap then\n  begin\n    TBGRABitmap(Img).Assign(Mem);\n  end\n  else\n  begin\n    Img.SetSize(gif.Width, gif.Height);\n    for y := 0 to gif.Height - 1 do\n      for x := 0 to gif.Width - 1 do\n        with Mem.GetPixel(x, y) do\n          Img.Colors[x, y] := FPColor(red * $101, green * $101, blue *\n            $101, alpha * $101);\n  end;\n  gif.Free;\nend;\n\nfunction TBGRAReaderGIF.InternalCheck(Str: TStream): boolean;\nvar\n  GIFSignature: TGIFSignature;\n  savepos:      int64;\nbegin\n  savepos := str.Position;\n  try\n    fillchar({%H-}GIFSignature, sizeof(GIFSignature), 0);\n    str.Read(GIFSignature, sizeof(GIFSignature));\n    if (GIFSignature[1] = 'G') and (GIFSignature[2] = 'I') and\n      (GIFSignature[3] = 'F') then\n    begin\n      Result := True;\n    end\n    else\n      Result := False;\n  except\n    on ex: Exception do\n      Result := False;\n  end;\n  str.Position := savepos;\nend;\n\n{ TBGRAWriterGIF }\n\nprocedure TBGRAWriterGIF.InternalWrite(Str: TStream; Img: TFPCustomImage);\nvar\n  gif: TBGRAAnimatedGif;\nbegin\n  gif := TBGRAAnimatedGif.Create;\n  try\n    gif.SetSize(Img.Width,Img.Height);\n    gif.AddFrame(Img, 0,0,0);\n    gif.SaveToStream(Str, BGRAColorQuantizerFactory, daFloydSteinberg);\n  except\n    on ex: EColorQuantizerMissing do\n    begin\n      FreeAndNil(gif);\n      raise EColorQuantizerMissing.Create('Please define the color quantizer factory. You can do that with the following statements: Uses BGRAPalette, BGRAColorQuantization; BGRAColorQuantizerFactory:= TBGRAColorQuantizer;');\n    end;\n    on ex: Exception do\n    begin\n      FreeAndNil(gif);\n      raise ex;\n    end;\n  end;\n  FreeAndNil(gif);\nend;\n\ninitialization\n  BGRARegisterImageHandlers(ifGif, TBGRAReaderGIF, TBGRAWriterGIF,\n    True, 'Animated GIF', 'gif');\n\n  {$IFDEF BGRABITMAP_USE_LCL}\n  //Lazarus Picture\n  TPicture.RegisterFileFormat('gif', 'Animated GIF', TBGRAAnimatedGif);\n  TPicture.RegisterFileFormat('apng', 'Animated PNG', TBGRAAnimatedPng);\n  {$ENDIF}\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraarrow.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Computation of arrow paths.)\n\n  Arrows are appended to lines drawn with TBGRABitmap\n  when configured using arrow properties. }\nunit BGRAArrow;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRABitmapTypes, BGRAGraphics;\n\ntype\n  { Implementation of arrow computation }\n  TBGRAArrow = class(TBGRACustomArrow)\n  private\n    FLineCap: TPenEndCap;\n    FWidth : single;\n    FStart : ArrayOfTPointF;\n    FStartComputed: boolean;\n    FStartStyle: TBGRAArrowStyle;\n    FStartSizeFactor: TPointF;\n    FStartTipStyle: TPenJoinStyle;\n    FStartOffsetX: single;\n    FStartRepeatCount: integer;\n    FStartRelativePenWidth: single;\n    FStartTriangleBackOffset: single;\n    FEnd : ArrayOfTPointF;\n    FEndComputed: boolean;\n    FEndStyle: TBGRAArrowStyle;\n    FEndSizeFactor: TPointF;\n    FEndTipStyle: TPenJoinStyle;\n    FEndOffsetX: single;\n    FEndRepeatCount: integer;\n    FEndRelativePenWidth: single;\n    FEndTriangleBackOffset: single;\n    function ComputeAnyAt(const AData: ArrayOfTPointF; const APosition, ADirection: TPointF): ArrayOfTPointF;\n    function ComputeData(AStyle: TBGRAArrowStyle; const ASizeFactor: TPointF;\n        ATipStyle: TPenJoinStyle; ALineCap: TPenEndCap; const AWidth: single; AOffsetX: single;\n        ARepeatCount: integer; ARelativePenWidth: single; ATriangleBackOffset: single): ArrayOfTPointF;\n    procedure SetWidth(AValue: single);\n  protected\n    function GetEndRepeatCount: integer; override;\n    function GetEndSizeFactor: TPointF; override;\n    function GetIsEndDefined: boolean; override;\n    function GetIsStartDefined: boolean; override;\n    function GetEndOffsetX: single; override;\n    function GetStartOffsetX: single; override;\n    function GetStartRepeatCount: integer; override;\n    function GetStartSizeFactor: TPointF; override;\n    procedure SetEndOffsetX(AValue: single); override;\n    procedure SetEndRepeatCount(AValue: integer); override;\n    procedure SetEndSizeFactor(AValue: TPointF); override;\n    procedure SetStartOffsetX(AValue: single); override;\n    procedure SetStartRepeatCount(AValue: integer); override;\n    procedure SetStartSizeFactor(AValue: TPointF); override;\n    function GetLineCap: TPenEndCap; override;\n    procedure SetLineCap(AValue: TPenEndCap); override;\n    procedure SetStart(AStyle: TBGRAArrowStyle; ATipStyle: TPenJoinStyle = pjsMiter; ARelativePenWidth: single = 1; ATriangleBackOffset: single = 0);\n    procedure SetEnd(AStyle: TBGRAArrowStyle; ATipStyle: TPenJoinStyle = pjsMiter; ARelativePenWidth: single = 1; ATriangleBackOffset: single = 0);\n  public\n    constructor Create;\n    procedure StartAsNone; override;\n    procedure StartAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); override;\n    procedure StartAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); override;\n    procedure StartAsTail; override;\n    procedure EndAsNone; override;\n    procedure EndAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); override;\n    procedure EndAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); override;\n    procedure EndAsTail; override;\n    function ComputeStartAt(const APosition: TPointF; const ADirection: TPointF; const AWidth: single; const ACurrentPos: single): ArrayOfTPointF; override;\n    function ComputeEndAt(const APosition: TPointF; const ADirection: TPointF; const AWidth: single; const ACurrentPos: single): ArrayOfTPointF; override;\n\n  end;\n\nimplementation\n\nuses BGRAClasses, BGRATransform, BGRAPen, BGRAPath;\n\n{ TBGRAArrow }\n\nfunction TBGRAArrow.ComputeAnyAt(const AData: ArrayOfTPointF; const APosition,\n  ADirection: TPointF): ArrayOfTPointF;\nvar m: TAffineMatrix;\n  i: integer;\nbegin\n  if (AData = nil) or isEmptyPointF(APosition) or isEmptyPointF(ADirection) or ((ADirection.x = 0) and (ADirection.y = 0)) then\n  begin\n    result := nil;\n    exit;\n  end;\n  m := AffineMatrixTranslation(APosition.x,APosition.y)*AffineMatrixLinear(ADirection, PointF(-ADirection.y, ADirection.x));\n  setlength(result, length(AData));\n  for i := 0 to high(result) do\n    if not isEmptyPointF(AData[i]) then\n      result[i] := m*AData[i]\n    else\n      result[i] := EmptyPointF;\nend;\n\nfunction TBGRAArrow.ComputeData(AStyle: TBGRAArrowStyle;\n  const ASizeFactor: TPointF; ATipStyle: TPenJoinStyle; ALineCap: TPenEndCap;\n  const AWidth: single; AOffsetX: single; ARepeatCount: integer;\n  ARelativePenWidth: single; ATriangleBackOffset: single): ArrayOfTPointF;\nvar sizeFactorX,sizeFactorY,ofsX: single;\n  prefix,suffix,middle: ArrayOfTPointF;\n  arc: TArcDef;\n  i,j,n : integer;\n  withCut: ArrayOfTPointF;\n  subResult: ArrayOfTPointF;\n  w: single;\n  backOfs: single;\n  tailSizeX, tailAdditionalWidth: single;\nbegin\n  sizeFactorX := abs(ASizeFactor.X)*AWidth;\n  sizeFactorY := abs(ASizeFactor.Y)*AWidth;\n  if (sizeFactorX = 0) or (sizeFactorY = 0) then\n  begin\n    result := nil;\n    exit;\n  end;\n  w := AWidth*ARelativePenWidth;\n  if AStyle in [asTail,asTailRepeat] then\n  begin\n    tailSizeX := sizeFactorX/SizeFactorY*AWidth*0.5;\n    if AStyle = asTailRepeat then\n    begin\n      tailAdditionalWidth:= AWidth-tailSizeX;\n      if tailAdditionalWidth < 0 then tailAdditionalWidth := 0;\n    end else\n      tailAdditionalWidth:=0;\n  end\n  else\n  begin\n    tailSizeX := 0;\n    tailAdditionalWidth:=0;\n  end;\n  case AStyle of\n  asTriangle,asHollowTriangle: begin\n    backOfs := ATriangleBackOffset*sizeFactorX;\n    if AStyle = asHollowTriangle then\n    begin\n      result := ComputeWidePolylinePoints(PointsF([PointF(0.5*w,-AWidth*0.5),\n             PointF(0.5*w-backOfs,-sizeFactorY+w*0.5),\n             PointF(sizeFactorX-w*0.5,0),\n             PointF(w*0.5-backOfs,sizeFactorY-w*0.5),\n             PointF(0.5*w,AWidth*0.5)]),\n             w,BGRABlack,ALineCap,ATipStyle,nil,[plCycle]);\n    end else\n    begin\n      prefix := PointsF([PointF(0,-AWidth*0.5),PointF(-backOfs,-sizeFactorY)]);\n      suffix := PointsF([PointF(-backOfs,sizeFactorY),PointF(0,AWidth*0.5)]);\n      if (ATipStyle in[pjsRound,pjsBevel]) then\n      begin\n        arc := Html5ArcTo(prefix[1],PointF(sizeFactorX,0),suffix[0],AWidth*0.5);\n        if ATipStyle = pjsRound then\n          middle := ComputeArc(arc)\n        else\n          middle := PointsF([ArcStartPoint(arc),ArcEndPoint(arc)]);\n      end\n      else middle := PointsF([PointF(sizeFactorX,0)]);\n      result := ConcatPointsF([prefix,middle,suffix]);\n    end;\n  end;\n  asNormal,asCut:\n    begin\n      if AStyle = asCut then ALineCap:= pecSquare;\n      result := ComputeWidePolylinePoints([PointF(-sizeFactorX,-sizeFactorY),\n        PointF(0,0),PointF(-sizeFactorX,+sizeFactorY)],w,BGRABlack,ALineCap,ATipStyle,nil,[]);\n    end;\n  asFlipped,asFlippedCut:\n    begin\n      if AStyle = asFlippedCut then ALineCap:= pecSquare;\n      result := ComputeWidePolylinePoints([PointF(+sizeFactorX,-sizeFactorY),\n       PointF(0,0),PointF(+sizeFactorX,+sizeFactorY)],w,BGRABlack,ALineCap,ATipStyle,nil,[]);\n    end;\n  asTail: result := PointsF([PointF(0,-0.5*AWidth),PointF(tailSizeX,-0.5*AWidth),PointF(0,0),PointF(tailSizeX,0.5*AWidth),PointF(0,0.5*AWidth)]);\n  asTailRepeat: result := PointsF([PointF(0,-0.5*AWidth),PointF(tailSizeX+tailAdditionalWidth,-0.5*AWidth),PointF(tailAdditionalWidth,0),PointF(tailSizeX+tailAdditionalWidth,0.5*AWidth),PointF(0,0.5*AWidth),PointF(-tailSizeX,0)]);\n  else\n    result := nil;\n  end;\n  if (AStyle in [asCut,asFlippedCut,asHollowTriangle]) then\n  begin\n    n := 0;\n    setlength(withCut,length(result)*2);\n    for i := 0 to high(result) do\n      if isEmptyPointF(result[i]) then\n      begin\n        if (n > 0) and not isEmptyPointF(withCut[n-1]) then\n        begin\n          withCut[n] := EmptyPointF;\n          inc(n);\n        end;\n      end else\n      if abs(result[i].y)<=sizeFactorY then\n      begin\n        withCut[n] := result[i];\n        inc(n);\n      end else\n      if result[i].y>sizeFactorY then\n      begin\n        j := (i+length(result)-1) mod length(result);\n        if result[j].y<=sizeFactorY then\n        begin\n          withCut[n].x := result[j].x + (result[i].x-result[j].x)/(result[i].y-result[j].y)*(sizeFactorY-result[j].y);\n          withCut[n].y := sizeFactorY;\n          inc(n);\n        end;\n        j := (i+1) mod length(result);\n        if result[j].y<=sizeFactorY then\n        begin\n          withCut[n].x := result[j].x + (result[i].x-result[j].x)/(result[i].y-result[j].y)*(sizeFactorY-result[j].y);\n          withCut[n].y := sizeFactorY;\n          inc(n);\n        end;\n      end else\n      if result[i].y<-sizeFactorY then\n      begin\n        j := (i+length(result)-1) mod length(result);\n        if result[j].y>=-sizeFactorY then\n        begin\n          withCut[n].x := result[j].x + (result[i].x-result[j].x)/(result[i].y-result[j].y)*(-sizeFactorY-result[j].y);\n          withCut[n].y := -sizeFactorY;\n          inc(n);\n        end;\n        j := (i+1) mod length(result);\n        if result[j].y>=-sizeFactorY then\n        begin\n          withCut[n].x := result[j].x + (result[i].x-result[j].x)/(result[i].y-result[j].y)*(-sizeFactorY-result[j].y);\n          withCut[n].y := -sizeFactorY;\n          inc(n);\n        end;\n      end;\n      if (n > 0) and isEmptyPointF(withCut[n-1]) then dec(n);\n      setlength(withCut,n);\n      result := withCut;\n  end;\n  if AOffsetX <> 0 then\n  begin\n    ofsX := AOffsetX*AWidth;\n    for i := 0 to high(result) do\n      if not isEmptyPointF(result[i]) then\n        IncF(result[i].x, ofsX);\n  end;\n  if ARepeatCount > 1 then\n  begin\n    if ARepeatCount > 10 then ARepeatCount:= 10;\n    if AStyle in[asTriangle,asHollowTriangle] then IncF(AOffsetX, sizeFactorX/AWidth)\n    else if AStyle in[asTail,asTailRepeat] then IncF(AOffsetX, (tailSizeX+tailAdditionalWidth)/AWidth+1)\n    else IncF(AOffsetX, 2*ARelativePenWidth);\n    if AStyle = asTail then AStyle := asTailRepeat;\n    subResult := ComputeData(AStyle,ASizeFactor,ATipStyle,ALineCap,AWidth,AOffsetX,ARepeatCount-1,ARelativePenWidth,ATriangleBackOffset);\n    result := ConcatPointsF([result,PointsF([EmptyPointF]),subResult]);\n  end;\nend;\n\nfunction TBGRAArrow.GetIsEndDefined: boolean;\nbegin\n  result := FEndStyle <> asNone;\nend;\n\nfunction TBGRAArrow.GetIsStartDefined: boolean;\nbegin\n  result := FStartStyle <> asNone;\nend;\n\nfunction TBGRAArrow.GetEndOffsetX: single;\nbegin\n  result := FEndOffsetX;\nend;\n\nfunction TBGRAArrow.GetStartOffsetX: single;\nbegin\n  result := FStartOffsetX;\nend;\n\nfunction TBGRAArrow.GetStartRepeatCount: integer;\nbegin\n  result := FStartRepeatCount;\nend;\n\nfunction TBGRAArrow.GetStartSizeFactor: TPointF;\nbegin\n  result := FStartSizeFactor;\nend;\n\nprocedure TBGRAArrow.SetEndOffsetX(AValue: single);\nbegin\n  if FEndOffsetX=AValue then Exit;\n  FEndOffsetX:=AValue;\n  FEndComputed:= false;\n  FEnd := nil;\nend;\n\nfunction TBGRAArrow.GetLineCap: TPenEndCap;\nbegin\n  result := FLineCap;\nend;\n\nprocedure TBGRAArrow.SetEndRepeatCount(AValue: integer);\nbegin\n  if FEndRepeatCount=AValue then Exit;\n  FEndRepeatCount:=AValue;\n  FEndComputed:= false;\n  FEnd := nil;\nend;\n\nprocedure TBGRAArrow.SetEndSizeFactor(AValue: TPointF);\nbegin\n  if FEndSizeFactor=AValue then Exit;\n  FEndSizeFactor:=AValue;\n  FEndComputed:= false;\n  FEnd := nil;\nend;\n\nprocedure TBGRAArrow.SetLineCap(AValue: TPenEndCap);\nbegin\n  if FLineCap=AValue then Exit;\n  FLineCap:=AValue;\n  FStartComputed:= false;\n  FEndComputed:= false;\n  FStart:= nil;\n  FEnd := nil;\nend;\n\nprocedure TBGRAArrow.SetStartOffsetX(AValue: single);\nbegin\n  if FStartOffsetX=AValue then Exit;\n  FStartOffsetX:=AValue;\n  FStartComputed:= false;\n  FStart := nil;\nend;\n\nprocedure TBGRAArrow.SetStartRepeatCount(AValue: integer);\nbegin\n  if FStartRepeatCount=AValue then Exit;\n  FStartRepeatCount:=AValue;\n  FStartComputed:= false;\n  FStart := nil;\nend;\n\nprocedure TBGRAArrow.SetStartSizeFactor(AValue: TPointF);\nbegin\n  if FStartSizeFactor=AValue then Exit;\n  FStartSizeFactor:=AValue;\n  FStartComputed:= false;\n  FStart := nil;\nend;\n\nprocedure TBGRAArrow.SetWidth(AValue: single);\nbegin\n  if FWidth=AValue then Exit;\n  FWidth:=AValue;\n  FStartComputed := false;\n  FEndComputed:= false;\nend;\n\nfunction TBGRAArrow.GetEndRepeatCount: integer;\nbegin\n  Result:= FEndRepeatCount;\nend;\n\nfunction TBGRAArrow.GetEndSizeFactor: TPointF;\nbegin\n  Result:= FEndSizeFactor;\nend;\n\nconstructor TBGRAArrow.Create;\nbegin\n  FWidth := 1;\n  FStartSizeFactor := PointF(2,2);\n  FEndSizeFactor := PointF(2,2);\nend;\n\nprocedure TBGRAArrow.StartAsNone;\nbegin\n  SetStart(asNone);\nend;\n\nprocedure TBGRAArrow.StartAsClassic(AFlipped: boolean; ACut: boolean;\n  ARelativePenWidth: single);\nvar join: TPenJoinStyle;\nbegin\n  if (LineCap = pecRound) and not ACut then join := pjsRound else join := pjsMiter;\n  if ACut then\n  begin\n    if AFlipped then\n      SetStart(asFlippedCut,join,ARelativePenWidth)\n    else\n      SetStart(asCut,join,ARelativePenWidth)\n  end\n  else\n  begin\n    if AFlipped then\n      SetStart(asFlipped,join,ARelativePenWidth)\n    else\n      SetStart(asNormal,join,ARelativePenWidth)\n  end;\nend;\n\nprocedure TBGRAArrow.StartAsTriangle(ABackOffset: single; ARounded: boolean;\n  AHollow: boolean; AHollowPenWidth: single);\nvar join: TPenJoinStyle;\nbegin\n  if ARounded then join := pjsRound else join := pjsMiter;\n  if AHollow then\n    SetStart(asHollowTriangle, join,AHollowPenWidth, ABackOffset)\n  else\n    SetStart(asTriangle, join,1,ABackOffset);\nend;\n\nprocedure TBGRAArrow.StartAsTail;\nbegin\n  SetStart(asTail);\nend;\n\nprocedure TBGRAArrow.EndAsNone;\nbegin\n  SetEnd(asNone);\nend;\n\nprocedure TBGRAArrow.EndAsClassic(AFlipped: boolean; ACut: boolean;\n  ARelativePenWidth: single);\nvar join: TPenJoinStyle;\nbegin\n  if (LineCap = pecRound) and not ACut then join := pjsRound else join := pjsMiter;\n  if ACut then\n  begin\n    if AFlipped then\n      SetEnd(asFlippedCut,join,ARelativePenWidth)\n    else\n      SetEnd(asCut,join,ARelativePenWidth)\n  end\n  else\n  begin\n    if AFlipped then\n      SetEnd(asFlipped,join,ARelativePenWidth)\n    else\n      SetEnd(asNormal,join,ARelativePenWidth)\n  end;\nend;\n\nprocedure TBGRAArrow.EndAsTriangle(ABackOffset: single; ARounded: boolean;\n  AHollow: boolean; AHollowPenWidth: single);\nvar join: TPenJoinStyle;\nbegin\n  if ARounded then join := pjsRound else join := pjsMiter;\n  if AHollow then\n    SetEnd(asHollowTriangle, join,AHollowPenWidth, ABackOffset)\n  else\n    SetEnd(asTriangle, join,1, ABackOffset);\nend;\n\nprocedure TBGRAArrow.EndAsTail;\nbegin\n  SetEnd(asTail);\nend;\n\nprocedure TBGRAArrow.SetStart(AStyle: TBGRAArrowStyle;\n  ATipStyle: TPenJoinStyle; ARelativePenWidth: single; ATriangleBackOffset: single);\nbegin\n  FStartStyle := AStyle;\n  FStartTipStyle := ATipStyle;\n  FStartComputed := false;\n  FStartRelativePenWidth:= ARelativePenWidth;\n  FStartTriangleBackOffset := ATriangleBackOffset;\n  FStart := nil;\nend;\n\nprocedure TBGRAArrow.SetEnd(AStyle: TBGRAArrowStyle; ATipStyle: TPenJoinStyle;\n  ARelativePenWidth: single; ATriangleBackOffset: single);\nbegin\n  FEndStyle := AStyle;\n  FEndTipStyle := ATipStyle;\n  FEndComputed := false;\n  FEndRelativePenWidth:= ARelativePenWidth;\n  FEndTriangleBackOffset := ATriangleBackOffset;\n  FEnd := nil;\nend;\n\nfunction TBGRAArrow.ComputeStartAt(const APosition: TPointF;\n  const ADirection: TPointF; const AWidth: single; const ACurrentPos: single\n  ): ArrayOfTPointF;\nbegin\n  if not IsStartDefined then\n  begin\n    result := nil;\n    exit;\n  end;\n  if AWidth <> FWidth then\n  begin\n    FWidth := AWidth;\n    FStartComputed:= false;\n  end;\n  if not FStartComputed then\n  begin\n    FStart := ComputeData(FStartStyle,FStartSizeFactor,FStartTipStyle,FLineCap,FWidth,\n    FStartOffsetX-ACurrentPos,FStartRepeatCount,FStartRelativePenWidth,FStartTriangleBackOffset);\n    FStartComputed:= true;\n  end;\n  result := ComputeAnyAt(FStart,APosition,ADirection);\nend;\n\nfunction TBGRAArrow.ComputeEndAt(const APosition: TPointF;\n  const ADirection: TPointF; const AWidth: single; const ACurrentPos: single\n  ): ArrayOfTPointF;\nbegin\n  if not IsEndDefined then\n  begin\n    result := nil;\n    exit;\n  end;\n  if AWidth <> FWidth then\n  begin\n    FWidth := AWidth;\n    FEndComputed:= false;\n  end;\n  if not FEndComputed then\n  begin\n    FEnd := ComputeData(FEndStyle,FEndSizeFactor,FEndTipStyle,FLineCap,FWidth,\n      FEndOffsetX-ACurrentPos,FEndRepeatCount,FEndRelativePenWidth,FEndTriangleBackOffset);\n    FEndComputed:= true;\n  end;\n  result := ComputeAnyAt(FEnd,APosition,ADirection);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrabitmap.inc",
    "content": "{$DEFINE BGRABITMAP}\n{ You can define the following compiler directives in the package options,\n  in tab Compiler options, in section Other. Directives must be prefixed with\n  \"-d\". So for example:\n\n  - to always have RGBA pixel format, write \"-dBGRABITMAP_RGBAPIXEL\"\n  - to always have BGRA pixel format, write \"-dBGRABITMAP_BGRAPIXEL\"\n  - to use fpGUI toolkit, write \"-dBGRABITMAP_USE_FPGUI\" }\n{$IFNDEF BGRABITMAP_DONT_USE_LCL}\n  {$IFDEF LCL}\n    {$DEFINE BGRABITMAP_USE_LCL}\n  {$ENDIF}\n{$ENDIF}\n{$IFDEF BGRABITMAP_USE_FPGUI}\n  {$UNDEF BGRABITMAP_USE_LCL}\n  {$DEFINE TCOLOR_BLUE_IN_LOW_BYTE}\n{$ENDIF}\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  {$UNDEF BGRABITMAP_USE_LCL}\n  {$DEFINE TCOLOR_BLUE_IN_LOW_BYTE}\n  {$DEFINE BGRABITMAP_DONT_USE_FPCANVAS}\n{$ENDIF}\n{$IFNDEF BGRABITMAP_DONT_USE_FPCANVAS}\n  {$DEFINE BGRABITMAP_USE_FPCANVAS}\n{$ENDIF}\n\n{$MODESWITCH ADVANCEDRECORDS}\n{$MODESWITCH TypeHelpers}\n\n{$IFNDEF BGRABITMAP_DONT_USE_LAZFREETYPE}\n  {$IFNDEF BGRABITMAP_CORE}\n    {$DEFINE BGRABITMAP_USE_LAZFREETYPE}\n  {$ENDIF}\n{$ENDIF}\n\n{$IF NOT defined(BGRABITMAP_CORE) and NOT defined(BGRABITMAP_NO_EXTENDED_COLORSPACE)}\n  {$DEFINE BGRABITMAP_EXTENDED_COLORSPACE}\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgrabitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Provides the 32-bit RGBA bitmap type adapted to your system.)\n\n  Pixels are of TBGRAPixel type based on sRGB colorspace with transparency (TBGRAPixelColorspace).\n\n  To use, you generally need to add BGRABitmapTypes as well to the **uses** clause.\n\n  Channels can be in the following orders:\n  - B G R A (recommended for Windows, required for fpGUI)\n  - R G B A (recommended for Gtk and MacOS)\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit BGRABitmap;\n\n{ Provides:\n  - Drawing primitives\n  - Resample\n  - Reference counter\n  - Drawing on LCL canvas\n  - Loading and saving images }\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\n{ Compiler directives are used to include the best version according\n  to the platform }\n\nuses\n  BGRAClasses, BGRABitmapTypes, FPImage, SysUtils, BGRAUnits,\n{$IFDEF BGRABITMAP_USE_FPGUI}\n    BGRAfpGUIBitmap,\n{$ELSE}\n\t{$IFDEF BGRABITMAP_USE_LCL}\n\t  {$IFDEF LCLwin32}\n\t\tBGRAWinBitmap,\n\t  {$ELSE}\n\t\t{$IFDEF LCLgtk}\n\t\tBGRAGtkBitmap,\n\t\t{$ELSE}\n\t\t  {$IFDEF LCLgtk2}\n\t\tBGRAGtkBitmap,\n\t\t  {$ELSE}\n  \t\t    {$IFDEF LCLgtk3}\n\t\t  BGRAGtkBitmap,\n\t\t    {$ELSE}\n\t\t\t{$IF defined(LCLqt) or defined(LCLqt5)}\n\t\tBGRAQtBitmap,\n\t\t\t{$ELSE}\n              {$IFDEF DARWIN}\n                BGRAMacBitmap,\n              {$ELSE}\n\t\tBGRALCLBitmap,\n              {$ENDIF}\n\t\t\t{$ENDIF}\n                    {$ENDIF}\n                  {$ENDIF}\n\t\t{$ENDIF}\n\t  {$ENDIF}\n\t{$ELSE}\n\t  {$IFDEF BGRABITMAP_USE_MSEGUI}\n            BGRAMSEguiBitmap,\n          {$ELSE}\n            BGRANoGuiBitmap,\n          {$ENDIF}\n\t{$ENDIF}\n{$ENDIF}\n  BGRAGraphics;\n\ntype\n{$IFDEF BGRABITMAP_USE_FPGUI}\n  {* Import version for fpGUI }\n  TBGRABitmap = class(TBGRAfpGUIBitmap)\n{$ELSE}\n    {$IFDEF BGRABITMAP_USE_LCL}\n      {$IFDEF LCLwin32}\n        {* Import version for Windows }\n\n        { TBGRABitmap }\n\n        TBGRABitmap = class(TBGRAWinBitmap)\n      {$ELSE}\n        {$IFDEF LCLgtk}\n        {* Import version for Linux GTK }\n        TBGRABitmap = class(TBGRAGtkBitmap)\n        {$ELSE}\n         {$IFDEF LCLgtk2}\n        {* Import version for Linux GTK2 }\n        TBGRABitmap = class(TBGRAGtkBitmap)\n         {$ELSE}\n          {$IFDEF LCLgtk3}\n          {* Import version for Linux GTK2 }\n          TBGRABitmap = class(TBGRAGtkBitmap)\n            {$ELSE}\n            {$IF defined(LCLqt) or defined(LCLqt5)}\n        {* Import version for Qt }\n        TBGRABitmap = class(TBGRAQtBitmap)\n            {$ELSE}\n              {$IFDEF DARWIN}\n        {* Import version for MacOS }\n        TBGRABitmap = class(TBGRAMacBitmap)\n              {$ELSE}\n        {* Import version for other systems }{ Cross-platform 32-bit RGBA image compatible with Lazarus Component Library }\n        TBGRABitmap = class(TBGRALCLBitmap)\n              {$ENDIF}\n            {$ENDIF}\n          {$ENDIF}\n         {$ENDIF}\n        {$ENDIF}\n      {$ENDIF}\n    {$ELSE}\n      {$IFDEF BGRABITMAP_USE_MSEGUI}\n        {* Import version for MSEgui }\n        TBGRABitmap = class(TBGRAMSEguiBitmap)\n      {$ELSE}\n        {* Import version without a GUI }{ Standalone cross-platform 32-bit RGBA image }\n        TBGRABitmap = class(TBGRANoGUIBitmap)\n      {$ENDIF}\n    {$ENDIF}\n{$ENDIF}\n  public\n    function NewBitmap: TBGRABitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer): TBGRABitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel): TBGRABitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TBGRABitmap; overload; override;\n    function NewBitmap(Filename: string): TBGRABitmap; overload; override;\n    function NewBitmap(Filename: string; AIsUtf8: boolean): TBGRABitmap; overload; override;\n    function NewBitmap(Filename: string; AIsUtf8: boolean; AOptions: TBGRALoadingOptions): TBGRABitmap; overload; override;\n    function NewBitmap(AFPImage: TFPCustomImage): TBGRABitmap; overload; override;\n    function NewReference: TBGRABitmap; override;\n    function GetUnique: TBGRABitmap; override;\n    function Duplicate(DuplicateProperties: Boolean = False): TBGRABitmap; overload; override;\n    function Duplicate(DuplicateProperties, DuplicateXorMask: Boolean) : TBGRABitmap; overload; override;\n    function GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor, ABackgroundColor: TBGRAPixel;\n                AWidth: integer = 8; AHeight: integer = 8; APenWidth: single = 1): TBGRABitmap; override;\n    function Resample(newWidth, newHeight: integer;\n      mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function Resample(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n      mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=True): TBGRABitmap; overload; override;\n    function RotateCW(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function RotateCCW(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function RotateUD(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    {$IFNDEF BGRABITMAP_CORE}\n    function FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterSmooth(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterSharpen(Amount: single = 1; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterSharpen(ABounds: TRect; Amount: single = 1; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterPixelate(pixelSize: integer; useResample: boolean; filter: TResampleFilter = rfLinear; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterBlurRadial(const ABounds: TRect; radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterBlurRadial(radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterBlurMotion(distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterBlurMotion(const ABounds: TRect; distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterCustomBlur(const ABounds: TRect; mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterEmboss(angle: single; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterEmboss(angle: single; ABounds: TRect; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterGrayscale(ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterNormalize(eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterNormalize(ABounds: TRect; eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterRotate(origin: TPointF; angle: single; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterSphere(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterTwirl(ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterTwirl(ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRABitmap; overload; override;\n    function FilterCylinder(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    function FilterPlane(ACopyProperties: Boolean=False): TBGRABitmap; override;\n    {$ENDIF}\n  end;\n\n{* Draw a bitmap from pure data }\nprocedure BGRABitmapDraw(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n  VerticalFlip: boolean; AWidth, AHeight: integer; Opaque: boolean);\n  \n{* Replace the content of the variable Destination with the variable\n  _Temp_ and frees previous object contained in _Destination_.\n  \n  This function is useful as a shortcut for :\n  ```pascal\n  var\n    temp: TBGRABitmap;\n  begin\n    ...\n    temp := someBmp.Filter... as TBGRABitmap;\n    someBmp.Free;\n    someBmp := temp;\n  end;\n  ```\n  \n  which becomes :\n  ```pascal\n  begin\n    ...\n    BGRAReplace(someBmp, someBmp.Filter... );\n  end;\n  ```\n}\nprocedure BGRAReplace(var Destination: TBGRABitmap; Temp: TObject);\n\nimplementation\n\nuses BGRAReadBMP, BGRAWriteBMP, BGRAReadPng, BGRAWritePNG\n  {$IFNDEF BGRABITMAP_CORE},\n  BGRAReadBmpMioMap, BGRAReadGif, BGRAReadIco, BGRAReadPSD, BGRAReadTGA, BGRAReadXPM,\n  BGRAReadJpeg, BGRAWriteJpeg, BGRAReadLzp, BGRAWriteLzp, BGRAReadPCX, BGRAWritePCX,\n  BGRAReadWebP, BGRAWriteWebP, BGRAReadAVIF, BGRAWriteAVIF\n    {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}, BGRAReadTiff, BGRAWriteTiff{$ENDIF}\n  {$ENDIF};\n\nvar\n  tempBmp: TBGRABitmap;\n\nprocedure BGRABitmapDraw(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n  VerticalFlip: boolean; AWidth, AHeight: integer; Opaque: boolean);\nvar\n  LineOrder: TRawImageLineOrder;\nbegin\n  if tempBmp = nil then\n    tempBmp := TBGRABitmap.Create;\n  if VerticalFlip then\n    LineOrder := riloBottomToTop\n  else\n    LineOrder := riloTopToBottom;\n  if Opaque then\n    tempBmp.DataDrawOpaque(ACanvas, Rect, AData, LineOrder, AWidth, AHeight)\n  else\n    tempBmp.DataDrawTransparent(ACanvas, Rect, AData, LineOrder, AWidth, AHeight);\nend;\n\nprocedure BGRAReplace(var Destination: TBGRABitmap; Temp: TObject);\nbegin\n  Destination.Free;\n  Destination := Temp as TBGRABitmap;\nend;\n\n{ TBGRABitmap }\n\nfunction TBGRABitmap.NewBitmap: TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(AWidth, AHeight: integer): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel\n  ): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, Color) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(AWidth, AHeight: integer; AColor: Pointer\n  ): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, AColor) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(Filename: string): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(Filename) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(Filename: string; AIsUtf8: boolean): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(Filename, AIsUtf8) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(Filename: string; AIsUtf8: boolean;\n  AOptions: TBGRALoadingOptions): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(Filename, AIsUtf8, AOptions) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewBitmap(AFPImage: TFPCustomImage): TBGRABitmap;\nbegin\n  Result:=inherited NewBitmap(AFPImage) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.NewReference: TBGRABitmap;\nbegin\n  Result:=inherited NewReference as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.GetUnique: TBGRABitmap;\nbegin\n  Result:=inherited GetUnique as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.Duplicate(DuplicateProperties: Boolean): TBGRABitmap;\nbegin\n  Result:=inherited Duplicate(DuplicateProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.Duplicate(DuplicateProperties, DuplicateXorMask: Boolean\n  ): TBGRABitmap;\nbegin\n  Result:=inherited Duplicate(DuplicateProperties, DuplicateXorMask) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited GetPart(ARect, ACopyProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.CreateBrushTexture(ABrushStyle: TBrushStyle;\n  APatternColor, ABackgroundColor: TBGRAPixel; AWidth: integer;\n  AHeight: integer; APenWidth: single): TBGRABitmap;\nbegin\n  Result:=inherited CreateBrushTexture(ABrushStyle, APatternColor,\n    ABackgroundColor, AWidth, AHeight, APenWidth) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.Resample(newWidth, newHeight: integer; mode: TResampleMode; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited Resample(newWidth, newHeight, mode, ACopyProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.Resample(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n  mode: TResampleMode; ACopyProperties: Boolean): TBGRABitmap;\nbegin\n  Result:=inherited Resample(NewWidth, NewHeight, ASizeUnit, mode, ACopyProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.RotateCW(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited RotateCW(ACopyProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.RotateCCW(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited RotateCCW(ACopyProperties) as TBGRABitmap;\nend;\n\nfunction TBGRABitmap.RotateUD(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited RotateUD(ACopyProperties) as TBGRABitmap;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterSmartZoom3(Option, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterMedian(Option, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterSmooth(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterSmooth(ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterSharpen(Amount: single; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterSharpen(Amount, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterSharpen(ABounds: TRect; Amount: single; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterSharpen(ABounds, Amount, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterContour(AGammaCorrection, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterPixelate(pixelSize: integer; useResample: boolean;\n  filter: TResampleFilter; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterPixelate(pixelSize, useResample, filter, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurRadial(radius, blurType, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurRadial(const ABounds: TRect; radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radius, blurType, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurRadial(radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurRadial(radiusX, radiusY, blurType, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radiusX, radiusY, blurType, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurMotion(distance: single; angle: single;\n  oriented: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurMotion(distance, angle, oriented, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterBlurMotion(const ABounds: TRect; distance: single;\n  angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterBlurMotion(ABounds, distance, angle, oriented, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterCustomBlur(mask, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterCustomBlur(const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterCustomBlur(ABounds, mask, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterEmboss(angle: single; AStrength: integer;\n  AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterEmboss(angle, AStrength, AOptions, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterEmboss(angle: single; ABounds: TRect;\n  AStrength: integer; AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterEmboss(angle, ABounds, AStrength, AOptions, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, BorderColor, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, BorderColor, Offset, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterGrayscale(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterGrayscale(ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterGrayscale(ABounds, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterNormalize(eachChannel: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterNormalize(eachChannel, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterNormalize(ABounds: TRect; eachChannel: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterNormalize(ABounds, eachChannel, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterRotate(origin: TPointF; angle: single;\n  correctBlur: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterRotate(origin, angle, correctBlur, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterAffine(AMatrix, correctBlur, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterSphere(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterSphere(ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterTwirl(ACenter: TPoint; ARadius: Single;\n  ATurn: Single; AExponent: Single; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterTwirl(ACenter, ARadius, ATurn, AExponent, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterTwirl(ABounds: TRect; ACenter: TPoint;\n  ARadius: Single; ATurn: Single; AExponent: Single; ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterTwirl(ABounds, ACenter, ARadius, ATurn, AExponent, ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterCylinder(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterCylinder(ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRABitmap.FilterPlane(ACopyProperties: Boolean=False): TBGRABitmap;\nbegin\n  Result:=inherited FilterPlane(ACopyProperties) as TBGRABitmap;\nend;{$ENDIF}\n\ninitialization\n\n  //this variable is assigned to access appropriate functions\n  //depending on the platform\n  BGRABitmapFactory := TBGRABitmap;\n\nfinalization\n\n  tempBmp.Free;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)-$(LCLWidgetType)-$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"0\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"154\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgrafreetype.pas\"/>\n        <UnitName Value=\"BGRAFreeType\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"bgratext.pas\"/>\n        <UnitName Value=\"BGRAText\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"bgratextfx.pas\"/>\n        <UnitName Value=\"BGRATextFX\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"bgravectorize.pas\"/>\n        <UnitName Value=\"BGRAVectorize\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgrasse.inc\"/>\n        <Type Value=\"Include\"/>\n        <AddToUsesPkgSection Value=\"True\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadico.pas\"/>\n        <UnitName Value=\"BGRAReadIco\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgralclbitmap.pas\"/>\n        <UnitName Value=\"BGRALCLBitmap\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"geometrytypes.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgracustombitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"bgrafontgl.pas\"/>\n        <UnitName Value=\"BGRAFontGL\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"blurbox.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item106>\n      <Item107>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item107>\n      <Item108>\n        <Filename Value=\"bgralazresource.pas\"/>\n        <UnitName Value=\"BGRALazResource\"/>\n      </Item108>\n      <Item109>\n        <Filename Value=\"bgraiconcursor.pas\"/>\n        <UnitName Value=\"BGRAIconCursor\"/>\n      </Item109>\n      <Item110>\n        <Filename Value=\"bgrablurgl.pas\"/>\n        <UnitName Value=\"BGRABlurGL\"/>\n      </Item110>\n      <Item111>\n        <Filename Value=\"bgrareadtiff.pas\"/>\n        <UnitName Value=\"BGRAReadTiff\"/>\n      </Item111>\n      <Item112>\n        <Filename Value=\"bgralazpaint.pas\"/>\n        <UnitName Value=\"BGRALazPaint\"/>\n      </Item112>\n      <Item113>\n        <Filename Value=\"bgramemdirectory.pas\"/>\n        <UnitName Value=\"BGRAMemDirectory\"/>\n      </Item113>\n      <Item114>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item114>\n      <Item115>\n        <Filename Value=\"bgratextbidi.pas\"/>\n        <UnitName Value=\"BGRATextBidi\"/>\n      </Item115>\n      <Item116>\n        <Filename Value=\"bgralayeroriginal.pas\"/>\n        <UnitName Value=\"BGRALayerOriginal\"/>\n      </Item116>\n      <Item117>\n        <Filename Value=\"bgrasvgoriginal.pas\"/>\n        <UnitName Value=\"BGRASVGOriginal\"/>\n      </Item117>\n      <Item118>\n        <Filename Value=\"bgragradientoriginal.pas\"/>\n        <UnitName Value=\"BGRAGradientOriginal\"/>\n      </Item118>\n      <Item119>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item119>\n      <Item120>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item120>\n      <Item121>\n        <Filename Value=\"bgraunicodetext.pas\"/>\n        <UnitName Value=\"BGRAUnicodeText\"/>\n      </Item121>\n      <Item122>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item122>\n      <Item123>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item123>\n      <Item124>\n        <Filename Value=\"basiccolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item124>\n      <Item125>\n        <Filename Value=\"unibitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item125>\n      <Item126>\n        <Filename Value=\"universaldrawer.pas\"/>\n        <UnitName Value=\"UniversalDrawer\"/>\n      </Item126>\n      <Item127>\n        <Filename Value=\"unibitmapgeneric.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item127>\n      <Item128>\n        <Filename Value=\"density256.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item128>\n      <Item129>\n        <Filename Value=\"linearrgbabitmap.pas\"/>\n        <UnitName Value=\"LinearRGBABitmap\"/>\n      </Item129>\n      <Item130>\n        <Filename Value=\"xyzabitmap.pas\"/>\n        <UnitName Value=\"XYZABitmap\"/>\n      </Item130>\n      <Item131>\n        <Filename Value=\"bgrawritetiff.pas\"/>\n        <UnitName Value=\"BGRAWriteTiff\"/>\n      </Item131>\n      <Item132>\n        <Filename Value=\"wordxyzabitmap.pas\"/>\n        <UnitName Value=\"WordXYZABitmap\"/>\n      </Item132>\n      <Item133>\n        <Filename Value=\"expandedbitmap.pas\"/>\n        <UnitName Value=\"ExpandedBitmap\"/>\n      </Item133>\n      <Item134>\n        <Filename Value=\"spectraldata.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item134>\n      <Item135>\n        <Filename Value=\"libwebp.pas\"/>\n        <UnitName Value=\"libwebp\"/>\n      </Item135>\n      <Item136>\n        <Filename Value=\"linuxlib.pas\"/>\n        <UnitName Value=\"linuxlib\"/>\n      </Item136>\n      <Item137>\n        <Filename Value=\"bgrareadwebp.pas\"/>\n        <UnitName Value=\"BGRAReadWebP\"/>\n      </Item137>\n      <Item138>\n        <Filename Value=\"bgrawritewebp.pas\"/>\n        <UnitName Value=\"BGRAWriteWebP\"/>\n      </Item138>\n      <Item139>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item139>\n      <Item140>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item140>\n      <Item141>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item141>\n      <Item142>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item142>\n      <Item143>\n        <Filename Value=\"avifbgra.pas\"/>\n        <UnitName Value=\"avifbgra\"/>\n      </Item143>\n      <Item144>\n        <Filename Value=\"libavif.pas\"/>\n        <UnitName Value=\"libavif\"/>\n      </Item144>\n      <Item145>\n        <Filename Value=\"bgrawriteavif.pas\"/>\n        <UnitName Value=\"BGRAWriteAvif\"/>\n      </Item145>\n      <Item146>\n        <Filename Value=\"bgrareadavif.pas\"/>\n        <UnitName Value=\"BGRAReadAvif\"/>\n      </Item146>\n      <Item147>\n        <Filename Value=\"darwinlib.pas\"/>\n        <UnitName Value=\"darwinlib\"/>\n      </Item147>\n      <Item148>\n        <Filename Value=\"bgrawritejpeg.pas\"/>\n        <UnitName Value=\"BGRAWriteJpeg\"/>\n      </Item148>\n      <Item149>\n        <Filename Value=\"bgrawritebmp.pas\"/>\n        <UnitName Value=\"BGRAWriteBMP\"/>\n      </Item149>\n      <Item150>\n        <Filename Value=\"bgrawritepcx.pas\"/>\n        <UnitName Value=\"BGRAWritePCX\"/>\n      </Item150>\n      <Item151>\n        <Filename Value=\"bgrapapers.pas\"/>\n        <UnitName Value=\"BGRAPapers\"/>\n      </Item151>\n      <Item152>\n        <Filename Value=\"bgrapngcomn.pas\"/>\n        <UnitName Value=\"BGRAPNGComn\"/>\n      </Item152>\n      <Item153>\n        <Filename Value=\"bgracustomtextfx.pas\"/>\n        <UnitName Value=\"BGRACustomTextFX\"/>\n      </Item153>\n      <Item154>\n        <Filename Value=\"bgrapdf.pas\"/>\n        <UnitName Value=\"BGRAPDF\"/>\n      </Item154>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"2\">\n      <Item1>\n        <PackageName Value=\"LCL\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item2>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAFreeType, BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRAText, BGRATextFX, \n  BGRATransform, BGRATypewriter, BGRAVectorize, BGRAGrayscaleMask, \n  BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, BGRAReadPSD, \n  BGRAThumbnail, BGRAReadTGA, BGRAReadIco, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRASVG, BGRAUnits, \n  BGRASVGShapes, BGRASVGType, BGRAReadBmpMioMap, BGRAArrow, BGRAPalette, \n  BGRAColorQuantization, BGRADithering, BGRAUTF8, BGRALCLBitmap, BGRAWritePNG, \n  BGRAGifFormat, BGRAGraphics, BGRASceneTypes, BGRARenderer3D, \n  BGRAWriteBmpMioMap, BGRAOpenGLType, BGRASpriteGL, BGRAOpenGL, BGRACanvasGL, \n  BGRAFontGL, BGRAOpenGL3D, BGRAPhoxo, BGRAFilterScanner, BGRAFilterType, \n  BGRAFilterBlur, BGRAMultiFileType, BGRAWinResource, BGRALazResource, \n  BGRAIconCursor, BGRABlurGL, BGRAReadTiff, BGRALazPaint, BGRAMemDirectory, \n  BGRAUnicode, BGRATextBidi, BGRALayerOriginal, BGRASVGOriginal, \n  BGRAGradientOriginal, BGRAUnicodeText, UniversalDrawer, LinearRGBABitmap, \n  XYZABitmap, BGRAWriteTiff, WordXYZABitmap, ExpandedBitmap, libwebp, \n  linuxlib, BGRAReadWebP, BGRAWriteWebP, BGRAClasses, avifbgra, libavif, \n  BGRAWriteAvif, BGRAReadAvif, darwinlib, BGRAWriteJpeg, BGRAWriteBMP, \n  BGRAWritePCX, BGRAPapers, BGRAPNGComn, BGRACustomTextFX, BGRAPDF;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4android.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4Android\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib4android\\$(TargetCPU)-$(TargetOS)\\$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"3\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Linking>\n        <Debugging>\n          <GenerateDebugInfo Value=\"False\"/>\n        </Debugging>\n      </Linking>\n      <Other>\n        <ConfigFile>\n          <WriteConfigFilePath Value=\"$(PkgOutDir)\\fpclaz.cfg\"/>\n        </ConfigFile>\n        <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL -dBGRABITMAP_DONT_USE_LAZFREETYPE\"/>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"106\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"bgrasse.inc\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgracustomtextfx.pas\"/>\n        <UnitName Value=\"BGRACustomTextFX\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgranoguibitmap.pas\"/>\n        <UnitName Value=\"BGRANoGUIBitmap\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item106>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"1\">\n      <Item1>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item1>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4android.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack4Android;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRATransform, \n  BGRAGrayscaleMask, BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, \n  BGRAReadPSD, BGRAThumbnail, BGRAReadTGA, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRAUnits, \n  BGRAReadBmpMioMap, BGRAArrow, BGRAGraphics, BGRAUTF8, BGRATypewriter, \n  BGRASVG, BGRASVGShapes, BGRASVGType, BGRAPalette, BGRAColorQuantization, \n  BGRADithering, BGRACustomTextFX, BGRAWritePNG, BGRAGifFormat, \n  BGRANoGUIBitmap, BGRASceneTypes, BGRARenderer3D, BGRAWriteBmpMioMap, \n  BGRASpriteGL, BGRAOpenGLType, BGRACanvasGL, BGRAPhoxo, BGRAFilterScanner, \n  BGRAFilterType, BGRAFilterBlur, BGRAMultiFileType, BGRAWinResource, \n  BGRAUnicode, BGRAClasses;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4android_freetype.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4Android_FreeType\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib4android+freetype\\$(TargetCPU)-$(TargetOS)\\$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"3\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Linking>\n        <Debugging>\n          <GenerateDebugInfo Value=\"False\"/>\n        </Debugging>\n      </Linking>\n      <Other>\n        <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL\"/>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"107\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"bgrasse.inc\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgracustomtextfx.pas\"/>\n        <UnitName Value=\"BGRACustomTextFX\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgranoguibitmap.pas\"/>\n        <UnitName Value=\"BGRANoGUIBitmap\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item106>\n      <Item107>\n        <Filename Value=\"bgrafreetype.pas\"/>\n        <UnitName Value=\"BGRAFreeType\"/>\n      </Item107>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"2\">\n      <Item1>\n        <PackageName Value=\"freetypelaz\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item2>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4android_freetype.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack4Android_FreeType;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRATransform, \n  BGRAGrayscaleMask, BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, \n  BGRAReadPSD, BGRAThumbnail, BGRAReadTGA, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRAUnits, \n  BGRAReadBmpMioMap, BGRAArrow, BGRAGraphics, BGRAUTF8, BGRATypewriter, \n  BGRASVG, BGRASVGShapes, BGRASVGType, BGRAPalette, BGRAColorQuantization, \n  BGRADithering, BGRACustomTextFX, BGRAWritePNG, BGRAGifFormat, \n  BGRANoGUIBitmap, BGRASceneTypes, BGRARenderer3D, BGRAWriteBmpMioMap, \n  BGRASpriteGL, BGRAOpenGLType, BGRACanvasGL, BGRAPhoxo, BGRAFilterScanner, \n  BGRAFilterType, BGRAFilterBlur, BGRAMultiFileType, BGRAWinResource, \n  BGRAUnicode, BGRAClasses, BGRAFreeType;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4fpgui.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4fpGUI\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <OtherUnitFiles Value=\"fpgui\"/>\n        <UnitOutputDirectory Value=\"lib4fpgui\\$(TargetCPU)-$(TargetOS)\\$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"3\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Linking>\n        <Debugging>\n          <GenerateDebugInfo Value=\"False\"/>\n        </Debugging>\n      </Linking>\n      <Other>\n        <CustomOptions Value=\"-dBGRABITMAP_USE_FPGUI\"/>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"105\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"bgrasse.inc\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgrafpguibitmap.pas\"/>\n        <UnitName Value=\"BGRAfpGUIBitmap\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"bgrafreetype.pas\"/>\n        <UnitName Value=\"BGRAFreeType\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgracustomtextfx.pas\"/>\n        <UnitName Value=\"BGRACustomTextFX\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"unibitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item105>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"3\">\n      <Item1>\n        <PackageName Value=\"freetypelaz\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"fpgui_toolkit\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item3>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4fpgui.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack4fpGUI;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRATransform, \n  BGRAGrayscaleMask, BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, \n  BGRAReadPSD, BGRAThumbnail, BGRAReadTGA, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRAUnits, \n  BGRAReadBmpMioMap, BGRAArrow, BGRAGraphics, BGRAUTF8, BGRAfpGUIBitmap, \n  BGRATypewriter, BGRASVG, BGRASVGShapes, BGRASVGType, BGRAPalette, \n  BGRAColorQuantization, BGRADithering, BGRAFreeType, BGRACustomTextFX, \n  BGRAWritePNG, BGRAGifFormat, BGRASceneTypes, BGRARenderer3D, \n  BGRAWriteBmpMioMap, BGRAPhoxo, BGRAFilterScanner, BGRAFilterType, \n  BGRAFilterBlur, BGRAMultiFileType, BGRAWinResource, BGRAUnicode, BGRAClasses;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nogui.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4NoGUI\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib4nogui\\$(TargetCPU)-$(TargetOS)\\$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"3\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Linking>\n        <Debugging>\n          <GenerateDebugInfo Value=\"False\"/>\n        </Debugging>\n      </Linking>\n      <Other>\n        <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL\"/>\n        <OtherDefines Count=\"1\">\n          <Define0 Value=\"$DEFINE BGRABITMAP_DONT_USE_LCL\"/>\n        </OtherDefines>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"109\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"bgrasse.inc\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgrafreetype.pas\"/>\n        <UnitName Value=\"BGRAFreeType\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"bgracustomtextfx.pas\"/>\n        <UnitName Value=\"BGRACustomTextFX\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgranoguibitmap.pas\"/>\n        <UnitName Value=\"BGRANoGUIBitmap\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item106>\n      <Item107>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item107>\n      <Item108>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item108>\n      <Item109>\n        <Filename Value=\"bgrapdf.pas\"/>\n        <UnitName Value=\"BGRAPDF\"/>\n      </Item109>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"2\">\n      <Item1>\n        <PackageName Value=\"freetypelaz\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item2>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nogui.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack4NoGUI;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRATransform, \n  BGRAGrayscaleMask, BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, \n  BGRAReadPSD, BGRAThumbnail, BGRAReadTGA, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRAUnits, \n  BGRAReadBmpMioMap, BGRAArrow, BGRAGraphics, BGRAUTF8, BGRATypewriter, \n  BGRASVG, BGRASVGShapes, BGRASVGType, BGRAPalette, BGRAColorQuantization, \n  BGRADithering, BGRAFreeType, BGRACustomTextFX, BGRAWritePNG, BGRAGifFormat, \n  BGRANoGUIBitmap, BGRASceneTypes, BGRARenderer3D, BGRAWriteBmpMioMap, \n  BGRASpriteGL, BGRAOpenGLType, BGRAOpenGL, BGRACanvasGL, BGRAPhoxo, \n  BGRAFilterScanner, BGRAFilterType, BGRAFilterBlur, BGRAMultiFileType, \n  BGRAWinResource, BGRAUnicode, BGRAClasses, BGRAPDF;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nolcl.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4NoLCL\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)-nolcl-$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"0\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Other>\n        <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL -dBGRABITMAP_DONT_USE_LAZFREETYPE\"/>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"148\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratext.pas\"/>\n        <UnitName Value=\"BGRAText\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"bgratextfx.pas\"/>\n        <UnitName Value=\"BGRATextFX\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"bgravectorize.pas\"/>\n        <UnitName Value=\"BGRAVectorize\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrasse.inc\"/>\n        <Type Value=\"Include\"/>\n        <AddToUsesPkgSection Value=\"True\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrareadico.pas\"/>\n        <UnitName Value=\"BGRAReadIco\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"geometrytypes.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgracustombitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgrafontgl.pas\"/>\n        <UnitName Value=\"BGRAFontGL\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"blurbox.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"bgraiconcursor.pas\"/>\n        <UnitName Value=\"BGRAIconCursor\"/>\n      </Item106>\n      <Item107>\n        <Filename Value=\"bgrablurgl.pas\"/>\n        <UnitName Value=\"BGRABlurGL\"/>\n      </Item107>\n      <Item108>\n        <Filename Value=\"bgrareadtiff.pas\"/>\n        <UnitName Value=\"BGRAReadTiff\"/>\n      </Item108>\n      <Item109>\n        <Filename Value=\"bgralazpaint.pas\"/>\n        <UnitName Value=\"BGRALazPaint\"/>\n      </Item109>\n      <Item110>\n        <Filename Value=\"bgramemdirectory.pas\"/>\n        <UnitName Value=\"BGRAMemDirectory\"/>\n      </Item110>\n      <Item111>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item111>\n      <Item112>\n        <Filename Value=\"bgratextbidi.pas\"/>\n        <UnitName Value=\"BGRATextBidi\"/>\n      </Item112>\n      <Item113>\n        <Filename Value=\"bgralayeroriginal.pas\"/>\n        <UnitName Value=\"BGRALayerOriginal\"/>\n      </Item113>\n      <Item114>\n        <Filename Value=\"bgrasvgoriginal.pas\"/>\n        <UnitName Value=\"BGRASVGOriginal\"/>\n      </Item114>\n      <Item115>\n        <Filename Value=\"bgragradientoriginal.pas\"/>\n        <UnitName Value=\"BGRAGradientOriginal\"/>\n      </Item115>\n      <Item116>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item116>\n      <Item117>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item117>\n      <Item118>\n        <Filename Value=\"bgraunicodetext.pas\"/>\n        <UnitName Value=\"BGRAUnicodeText\"/>\n      </Item118>\n      <Item119>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item119>\n      <Item120>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item120>\n      <Item121>\n        <Filename Value=\"basiccolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item121>\n      <Item122>\n        <Filename Value=\"unibitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item122>\n      <Item123>\n        <Filename Value=\"universaldrawer.pas\"/>\n        <UnitName Value=\"UniversalDrawer\"/>\n      </Item123>\n      <Item124>\n        <Filename Value=\"unibitmapgeneric.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item124>\n      <Item125>\n        <Filename Value=\"density256.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item125>\n      <Item126>\n        <Filename Value=\"linearrgbabitmap.pas\"/>\n        <UnitName Value=\"LinearRGBABitmap\"/>\n      </Item126>\n      <Item127>\n        <Filename Value=\"xyzabitmap.pas\"/>\n        <UnitName Value=\"XYZABitmap\"/>\n      </Item127>\n      <Item128>\n        <Filename Value=\"bgrawritetiff.pas\"/>\n        <UnitName Value=\"BGRAWriteTiff\"/>\n      </Item128>\n      <Item129>\n        <Filename Value=\"wordxyzabitmap.pas\"/>\n        <UnitName Value=\"WordXYZABitmap\"/>\n      </Item129>\n      <Item130>\n        <Filename Value=\"expandedbitmap.pas\"/>\n        <UnitName Value=\"ExpandedBitmap\"/>\n      </Item130>\n      <Item131>\n        <Filename Value=\"spectraldata.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item131>\n      <Item132>\n        <Filename Value=\"libwebp.pas\"/>\n        <UnitName Value=\"libwebp\"/>\n      </Item132>\n      <Item133>\n        <Filename Value=\"linuxlib.pas\"/>\n        <UnitName Value=\"linuxlib\"/>\n      </Item133>\n      <Item134>\n        <Filename Value=\"bgrareadwebp.pas\"/>\n        <UnitName Value=\"BGRAReadWebP\"/>\n      </Item134>\n      <Item135>\n        <Filename Value=\"bgrawritewebp.pas\"/>\n        <UnitName Value=\"BGRAWriteWebP\"/>\n      </Item135>\n      <Item136>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item136>\n      <Item137>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item137>\n      <Item138>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item138>\n      <Item139>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item139>\n      <Item140>\n        <Filename Value=\"avifbgra.pas\"/>\n        <UnitName Value=\"avifbgra\"/>\n      </Item140>\n      <Item141>\n        <Filename Value=\"libavif.pas\"/>\n        <UnitName Value=\"libavif\"/>\n      </Item141>\n      <Item142>\n        <Filename Value=\"bgrawriteavif.pas\"/>\n        <UnitName Value=\"BGRAWriteAvif\"/>\n      </Item142>\n      <Item143>\n        <Filename Value=\"bgrareadavif.pas\"/>\n        <UnitName Value=\"BGRAReadAvif\"/>\n      </Item143>\n      <Item144>\n        <Filename Value=\"darwinlib.pas\"/>\n        <UnitName Value=\"darwinlib\"/>\n      </Item144>\n      <Item145>\n        <Filename Value=\"bgrawritejpeg.pas\"/>\n        <UnitName Value=\"BGRAWriteJpeg\"/>\n      </Item145>\n      <Item146>\n        <Filename Value=\"bgrawritebmp.pas\"/>\n        <UnitName Value=\"BGRAWriteBMP\"/>\n      </Item146>\n      <Item147>\n        <Filename Value=\"bgrawritepcx.pas\"/>\n        <UnitName Value=\"BGRAWritePCX\"/>\n      </Item147>\n      <Item148>\n        <Filename Value=\"bgrapdf.pas\"/>\n        <UnitName Value=\"BGRAPDF\"/>\n      </Item148>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"1\">\n      <Item1>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item1>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nolcl.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\r\n  This source is only used to compile and install the package.\r\n }\r\n\r\nunit BGRABitmapPack4NoLCL;\r\n\r\n{$warn 5023 off : no warning about unused units}\r\ninterface\r\n\r\nuses\r\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \r\n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \r\n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \r\n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \r\n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \r\n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \r\n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRAText, BGRATextFX, \r\n  BGRATransform, BGRATypewriter, BGRAVectorize, BGRAGrayscaleMask, \r\n  BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, BGRAReadPSD, \r\n  BGRAThumbnail, BGRAReadTGA, BGRAReadIco, BGRAReadJpeg, BGRAReadLzp, \r\n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRASVG, BGRAUnits, \r\n  BGRASVGShapes, BGRASVGType, BGRAReadBmpMioMap, BGRAArrow, BGRAPalette, \r\n  BGRAColorQuantization, BGRADithering, BGRAUTF8, BGRAWritePNG, BGRAGifFormat, \r\n  BGRAGraphics, BGRASceneTypes, BGRARenderer3D, BGRAWriteBmpMioMap, \r\n  BGRAOpenGLType, BGRASpriteGL, BGRAOpenGL, BGRACanvasGL, BGRAFontGL, \r\n  BGRAOpenGL3D, BGRAPhoxo, BGRAFilterScanner, BGRAFilterType, BGRAFilterBlur, \r\n  BGRAMultiFileType, BGRAWinResource, BGRAIconCursor, BGRABlurGL, \r\n  BGRAReadTiff, BGRALazPaint, BGRAMemDirectory, BGRAUnicode, BGRATextBidi, \r\n  BGRALayerOriginal, BGRASVGOriginal, BGRAGradientOriginal, BGRAUnicodeText, \r\n  UniversalDrawer, LinearRGBABitmap, XYZABitmap, BGRAWriteTiff, \r\n  WordXYZABitmap, ExpandedBitmap, libwebp, linuxlib, BGRAReadWebP, \r\n  BGRAWriteWebP, BGRAClasses, avifbgra, libavif, BGRAWriteAvif, BGRAReadAvif, \r\n  darwinlib, BGRAWriteJpeg, BGRAWriteBMP, BGRAWritePCX, BGRAPDF;\r\n\r\nimplementation\r\n\r\nend.\r\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nolcl_freetype.lpk",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <Package Version=\"5\">\n    <PathDelim Value=\"\\\"/>\n    <Name Value=\"BGRABitmapPack4NoLCL_FreeType\"/>\n    <Author Value=\"Circular\"/>\n    <CompilerOptions>\n      <Version Value=\"11\"/>\n      <PathDelim Value=\"\\\"/>\n      <SearchPaths>\n        <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)-nolcl+freetype-$(FPCVer)\"/>\n      </SearchPaths>\n      <Parsing>\n        <SyntaxOptions>\n          <UseAnsiStrings Value=\"False\"/>\n        </SyntaxOptions>\n      </Parsing>\n      <CodeGeneration>\n        <Optimizations>\n          <OptimizationLevel Value=\"0\"/>\n          <VariablesInRegisters Value=\"True\"/>\n        </Optimizations>\n      </CodeGeneration>\n      <Other>\n        <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL\"/>\n      </Other>\n    </CompilerOptions>\n    <Description Value=\"Drawing routines with alpha blending and antialiasing\"/>\n    <License Value=\"modified LGPL\"/>\n    <Version Major=\"11\" Minor=\"6\" Release=\"6\"/>\n    <Files Count=\"149\">\n      <Item1>\n        <Filename Value=\"bgraanimatedgif.pas\"/>\n        <UnitName Value=\"BGRAAnimatedGif\"/>\n      </Item1>\n      <Item2>\n        <Filename Value=\"bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n      </Item2>\n      <Item3>\n        <Filename Value=\"bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n      </Item3>\n      <Item4>\n        <Filename Value=\"bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n      </Item4>\n      <Item5>\n        <Filename Value=\"bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n      </Item5>\n      <Item6>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n      </Item6>\n      <Item7>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <UnitName Value=\"BGRAColorInt\"/>\n      </Item7>\n      <Item8>\n        <Filename Value=\"bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n      </Item8>\n      <Item9>\n        <Filename Value=\"bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n      </Item9>\n      <Item10>\n        <Filename Value=\"bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n      </Item10>\n      <Item11>\n        <Filename Value=\"bgradnetdeserial.pas\"/>\n        <UnitName Value=\"BGRADNetDeserial\"/>\n      </Item11>\n      <Item12>\n        <Filename Value=\"bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n      </Item12>\n      <Item13>\n        <Filename Value=\"bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n      </Item13>\n      <Item14>\n        <Filename Value=\"bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n      </Item14>\n      <Item15>\n        <Filename Value=\"bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n      </Item15>\n      <Item16>\n        <Filename Value=\"bgralayers.pas\"/>\n        <UnitName Value=\"BGRALayers\"/>\n      </Item16>\n      <Item17>\n        <Filename Value=\"bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n      </Item17>\n      <Item18>\n        <Filename Value=\"bgraopenraster.pas\"/>\n        <UnitName Value=\"BGRAOpenRaster\"/>\n      </Item18>\n      <Item19>\n        <Filename Value=\"bgrapaintnet.pas\"/>\n        <UnitName Value=\"BGRAPaintNet\"/>\n      </Item19>\n      <Item20>\n        <Filename Value=\"bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n      </Item20>\n      <Item21>\n        <Filename Value=\"bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n      </Item21>\n      <Item22>\n        <Filename Value=\"bgraphongtypes.pas\"/>\n        <UnitName Value=\"BGRAPhongTypes\"/>\n      </Item22>\n      <Item23>\n        <Filename Value=\"bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n      </Item23>\n      <Item24>\n        <Filename Value=\"bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n      </Item24>\n      <Item25>\n        <Filename Value=\"bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n      </Item25>\n      <Item26>\n        <Filename Value=\"bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n      </Item26>\n      <Item27>\n        <Filename Value=\"bgraslicescaling.pas\"/>\n        <UnitName Value=\"BGRASliceScaling\"/>\n      </Item27>\n      <Item28>\n        <Filename Value=\"bgrasse.pas\"/>\n        <UnitName Value=\"BGRASSE\"/>\n      </Item28>\n      <Item29>\n        <Filename Value=\"bgrastreamlayers.pas\"/>\n        <UnitName Value=\"BGRAStreamLayers\"/>\n      </Item29>\n      <Item30>\n        <Filename Value=\"bgratext.pas\"/>\n        <UnitName Value=\"BGRAText\"/>\n      </Item30>\n      <Item31>\n        <Filename Value=\"bgratextfx.pas\"/>\n        <UnitName Value=\"BGRATextFX\"/>\n      </Item31>\n      <Item32>\n        <Filename Value=\"bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n      </Item32>\n      <Item33>\n        <Filename Value=\"bgratypewriter.pas\"/>\n        <UnitName Value=\"BGRATypewriter\"/>\n      </Item33>\n      <Item34>\n        <Filename Value=\"bgravectorize.pas\"/>\n        <UnitName Value=\"BGRAVectorize\"/>\n      </Item34>\n      <Item35>\n        <Filename Value=\"blendpixelinline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item35>\n      <Item36>\n        <Filename Value=\"blendpixels.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item36>\n      <Item37>\n        <Filename Value=\"blendpixelsover.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item37>\n      <Item38>\n        <Filename Value=\"blurfast.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item38>\n      <Item39>\n        <Filename Value=\"blurnormal.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item39>\n      <Item40>\n        <Filename Value=\"csscolorconst.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item40>\n      <Item41>\n        <Filename Value=\"lightingclasses3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item41>\n      <Item42>\n        <Filename Value=\"lineartexscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item42>\n      <Item43>\n        <Filename Value=\"lineartexscan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item43>\n      <Item44>\n        <Filename Value=\"multishapeline.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item44>\n      <Item45>\n        <Filename Value=\"perspectivecolorscan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item45>\n      <Item46>\n        <Filename Value=\"perspectivescan.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item46>\n      <Item47>\n        <Filename Value=\"perspectivescan2.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item47>\n      <Item48>\n        <Filename Value=\"phongdraw.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item48>\n      <Item49>\n        <Filename Value=\"phongdrawsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item49>\n      <Item50>\n        <Filename Value=\"phonglight.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item50>\n      <Item51>\n        <Filename Value=\"phonglightsse.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item51>\n      <Item52>\n        <Filename Value=\"polyaliaspersp.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item52>\n      <Item53>\n        <Filename Value=\"shapes3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item53>\n      <Item54>\n        <Filename Value=\"bgrasse.inc\"/>\n        <Type Value=\"Include\"/>\n        <AddToUsesPkgSection Value=\"True\"/>\n        <UnitName Value=\"bgrasse\"/>\n      </Item54>\n      <Item55>\n        <Filename Value=\"bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n      </Item55>\n      <Item56>\n        <Filename Value=\"bgrareadbmp.pas\"/>\n        <UnitName Value=\"BGRAReadBMP\"/>\n      </Item56>\n      <Item57>\n        <Filename Value=\"bgrareadgif.pas\"/>\n        <UnitName Value=\"BGRAReadGif\"/>\n      </Item57>\n      <Item58>\n        <Filename Value=\"bgrareadpcx.pas\"/>\n        <UnitName Value=\"BGRAReadPCX\"/>\n      </Item58>\n      <Item59>\n        <Filename Value=\"bgrareadpng.pas\"/>\n        <UnitName Value=\"BGRAReadPng\"/>\n      </Item59>\n      <Item60>\n        <Filename Value=\"bgrareadpsd.pas\"/>\n        <UnitName Value=\"BGRAReadPSD\"/>\n      </Item60>\n      <Item61>\n        <Filename Value=\"bgrathumbnail.pas\"/>\n        <UnitName Value=\"BGRAThumbnail\"/>\n      </Item61>\n      <Item62>\n        <Filename Value=\"bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n      </Item62>\n      <Item63>\n        <Filename Value=\"bgrareadico.pas\"/>\n        <UnitName Value=\"BGRAReadIco\"/>\n      </Item63>\n      <Item64>\n        <Filename Value=\"bgrareadjpeg.pas\"/>\n        <UnitName Value=\"BGRAReadJpeg\"/>\n      </Item64>\n      <Item65>\n        <Filename Value=\"bgrareadlzp.pas\"/>\n        <UnitName Value=\"BGRAReadLzp\"/>\n      </Item65>\n      <Item66>\n        <Filename Value=\"unzipperext.pas\"/>\n        <UnitName Value=\"UnzipperExt\"/>\n      </Item66>\n      <Item67>\n        <Filename Value=\"bgralzpcommon.pas\"/>\n        <UnitName Value=\"BGRALzpCommon\"/>\n      </Item67>\n      <Item68>\n        <Filename Value=\"bgrawritelzp.pas\"/>\n        <UnitName Value=\"BGRAWriteLzp\"/>\n      </Item68>\n      <Item69>\n        <Filename Value=\"bgrareadxpm.pas\"/>\n        <UnitName Value=\"BGRAReadXPM\"/>\n      </Item69>\n      <Item70>\n        <Filename Value=\"bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n      </Item70>\n      <Item71>\n        <Filename Value=\"bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n      </Item71>\n      <Item72>\n        <Filename Value=\"bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n      </Item72>\n      <Item73>\n        <Filename Value=\"bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n      </Item73>\n      <Item74>\n        <Filename Value=\"bgrareadbmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAReadBmpMioMap\"/>\n      </Item74>\n      <Item75>\n        <Filename Value=\"bgraarrow.pas\"/>\n        <UnitName Value=\"BGRAArrow\"/>\n      </Item75>\n      <Item76>\n        <Filename Value=\"vertex3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item76>\n      <Item77>\n        <Filename Value=\"face3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item77>\n      <Item78>\n        <Filename Value=\"part3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item78>\n      <Item79>\n        <Filename Value=\"object3d.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item79>\n      <Item80>\n        <Filename Value=\"bgrapalette.pas\"/>\n        <UnitName Value=\"BGRAPalette\"/>\n      </Item80>\n      <Item81>\n        <Filename Value=\"bgracolorquantization.pas\"/>\n        <UnitName Value=\"BGRAColorQuantization\"/>\n      </Item81>\n      <Item82>\n        <Filename Value=\"bgradithering.pas\"/>\n        <UnitName Value=\"BGRADithering\"/>\n      </Item82>\n      <Item83>\n        <Filename Value=\"paletteformats.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item83>\n      <Item84>\n        <Filename Value=\"bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n      </Item84>\n      <Item85>\n        <Filename Value=\"bgrawritepng.pas\"/>\n        <UnitName Value=\"BGRAWritePNG\"/>\n      </Item85>\n      <Item86>\n        <Filename Value=\"bgragifformat.pas\"/>\n        <UnitName Value=\"BGRAGifFormat\"/>\n      </Item86>\n      <Item87>\n        <Filename Value=\"geometrytypes.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item87>\n      <Item88>\n        <Filename Value=\"bgracustombitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item88>\n      <Item89>\n        <Filename Value=\"bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n      </Item89>\n      <Item90>\n        <Filename Value=\"bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n      </Item90>\n      <Item91>\n        <Filename Value=\"bgrarenderer3d.pas\"/>\n        <UnitName Value=\"BGRARenderer3D\"/>\n      </Item91>\n      <Item92>\n        <Filename Value=\"bgrawritebmpmiomap.pas\"/>\n        <UnitName Value=\"BGRAWriteBmpMioMap\"/>\n      </Item92>\n      <Item93>\n        <Filename Value=\"bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n      </Item93>\n      <Item94>\n        <Filename Value=\"bgraspritegl.pas\"/>\n        <UnitName Value=\"BGRASpriteGL\"/>\n      </Item94>\n      <Item95>\n        <Filename Value=\"bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n      </Item95>\n      <Item96>\n        <Filename Value=\"bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n      </Item96>\n      <Item97>\n        <Filename Value=\"bgrafontgl.pas\"/>\n        <UnitName Value=\"BGRAFontGL\"/>\n      </Item97>\n      <Item98>\n        <Filename Value=\"bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n      </Item98>\n      <Item99>\n        <Filename Value=\"blurbox.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item99>\n      <Item100>\n        <Filename Value=\"bgraphoxo.pas\"/>\n        <UnitName Value=\"BGRAPhoxo\"/>\n      </Item100>\n      <Item101>\n        <Filename Value=\"bgrafilterscanner.pas\"/>\n        <UnitName Value=\"BGRAFilterScanner\"/>\n      </Item101>\n      <Item102>\n        <Filename Value=\"bgrafiltertype.pas\"/>\n        <UnitName Value=\"BGRAFilterType\"/>\n      </Item102>\n      <Item103>\n        <Filename Value=\"bgrafilterblur.pas\"/>\n        <UnitName Value=\"BGRAFilterBlur\"/>\n      </Item103>\n      <Item104>\n        <Filename Value=\"bgramultifiletype.pas\"/>\n        <UnitName Value=\"BGRAMultiFileType\"/>\n      </Item104>\n      <Item105>\n        <Filename Value=\"bgrawinresource.pas\"/>\n        <UnitName Value=\"BGRAWinResource\"/>\n      </Item105>\n      <Item106>\n        <Filename Value=\"bgraiconcursor.pas\"/>\n        <UnitName Value=\"BGRAIconCursor\"/>\n      </Item106>\n      <Item107>\n        <Filename Value=\"bgrablurgl.pas\"/>\n        <UnitName Value=\"BGRABlurGL\"/>\n      </Item107>\n      <Item108>\n        <Filename Value=\"bgrareadtiff.pas\"/>\n        <UnitName Value=\"BGRAReadTiff\"/>\n      </Item108>\n      <Item109>\n        <Filename Value=\"bgralazpaint.pas\"/>\n        <UnitName Value=\"BGRALazPaint\"/>\n      </Item109>\n      <Item110>\n        <Filename Value=\"bgramemdirectory.pas\"/>\n        <UnitName Value=\"BGRAMemDirectory\"/>\n      </Item110>\n      <Item111>\n        <Filename Value=\"bgraunicode.pas\"/>\n        <UnitName Value=\"BGRAUnicode\"/>\n      </Item111>\n      <Item112>\n        <Filename Value=\"bgratextbidi.pas\"/>\n        <UnitName Value=\"BGRATextBidi\"/>\n      </Item112>\n      <Item113>\n        <Filename Value=\"bgralayeroriginal.pas\"/>\n        <UnitName Value=\"BGRALayerOriginal\"/>\n      </Item113>\n      <Item114>\n        <Filename Value=\"bgrasvgoriginal.pas\"/>\n        <UnitName Value=\"BGRASVGOriginal\"/>\n      </Item114>\n      <Item115>\n        <Filename Value=\"bgragradientoriginal.pas\"/>\n        <UnitName Value=\"BGRAGradientOriginal\"/>\n      </Item115>\n      <Item116>\n        <Filename Value=\"bgrapixel.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item116>\n      <Item117>\n        <Filename Value=\"bezier.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item117>\n      <Item118>\n        <Filename Value=\"bgraunicodetext.pas\"/>\n        <UnitName Value=\"BGRAUnicodeText\"/>\n      </Item118>\n      <Item119>\n        <Filename Value=\"generatedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item119>\n      <Item120>\n        <Filename Value=\"extendedcolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item120>\n      <Item121>\n        <Filename Value=\"basiccolorspace.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item121>\n      <Item122>\n        <Filename Value=\"unibitmap.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item122>\n      <Item123>\n        <Filename Value=\"universaldrawer.pas\"/>\n        <UnitName Value=\"UniversalDrawer\"/>\n      </Item123>\n      <Item124>\n        <Filename Value=\"unibitmapgeneric.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item124>\n      <Item125>\n        <Filename Value=\"density256.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item125>\n      <Item126>\n        <Filename Value=\"linearrgbabitmap.pas\"/>\n        <UnitName Value=\"LinearRGBABitmap\"/>\n      </Item126>\n      <Item127>\n        <Filename Value=\"xyzabitmap.pas\"/>\n        <UnitName Value=\"XYZABitmap\"/>\n      </Item127>\n      <Item128>\n        <Filename Value=\"bgrawritetiff.pas\"/>\n        <UnitName Value=\"BGRAWriteTiff\"/>\n      </Item128>\n      <Item129>\n        <Filename Value=\"wordxyzabitmap.pas\"/>\n        <UnitName Value=\"WordXYZABitmap\"/>\n      </Item129>\n      <Item130>\n        <Filename Value=\"expandedbitmap.pas\"/>\n        <UnitName Value=\"ExpandedBitmap\"/>\n      </Item130>\n      <Item131>\n        <Filename Value=\"spectraldata.inc\"/>\n        <Type Value=\"Binary\"/>\n      </Item131>\n      <Item132>\n        <Filename Value=\"libwebp.pas\"/>\n        <UnitName Value=\"libwebp\"/>\n      </Item132>\n      <Item133>\n        <Filename Value=\"linuxlib.pas\"/>\n        <UnitName Value=\"linuxlib\"/>\n      </Item133>\n      <Item134>\n        <Filename Value=\"bgrareadwebp.pas\"/>\n        <UnitName Value=\"BGRAReadWebP\"/>\n      </Item134>\n      <Item135>\n        <Filename Value=\"bgrawritewebp.pas\"/>\n        <UnitName Value=\"BGRAWriteWebP\"/>\n      </Item135>\n      <Item136>\n        <Filename Value=\"bgraclasses.pas\"/>\n        <UnitName Value=\"BGRAClasses\"/>\n      </Item136>\n      <Item137>\n        <Filename Value=\"bgrascanner.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item137>\n      <Item138>\n        <Filename Value=\"generatedutf8.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item138>\n      <Item139>\n        <Filename Value=\"generatedunicode.inc\"/>\n        <Type Value=\"Include\"/>\n      </Item139>\n      <Item140>\n        <Filename Value=\"avifbgra.pas\"/>\n        <UnitName Value=\"avifbgra\"/>\n      </Item140>\n      <Item141>\n        <Filename Value=\"libavif.pas\"/>\n        <UnitName Value=\"libavif\"/>\n      </Item141>\n      <Item142>\n        <Filename Value=\"bgrawriteavif.pas\"/>\n        <UnitName Value=\"BGRAWriteAvif\"/>\n      </Item142>\n      <Item143>\n        <Filename Value=\"bgrareadavif.pas\"/>\n        <UnitName Value=\"BGRAReadAvif\"/>\n      </Item143>\n      <Item144>\n        <Filename Value=\"darwinlib.pas\"/>\n        <UnitName Value=\"darwinlib\"/>\n      </Item144>\n      <Item145>\n        <Filename Value=\"bgrawritejpeg.pas\"/>\n        <UnitName Value=\"BGRAWriteJpeg\"/>\n      </Item145>\n      <Item146>\n        <Filename Value=\"bgrawritebmp.pas\"/>\n        <UnitName Value=\"BGRAWriteBMP\"/>\n      </Item146>\n      <Item147>\n        <Filename Value=\"bgrawritepcx.pas\"/>\n        <UnitName Value=\"BGRAWritePCX\"/>\n      </Item147>\n      <Item148>\n        <Filename Value=\"bgrafreetype.pas\"/>\n        <UnitName Value=\"BGRAFreeType\"/>\n      </Item148>\n      <Item149>\n        <Filename Value=\"bgrapdf.pas\"/>\n        <UnitName Value=\"BGRAPDF\"/>\n      </Item149>\n    </Files>\n    <CompatibilityMode Value=\"True\"/>\n    <RequiredPkgs Count=\"2\">\n      <Item1>\n        <PackageName Value=\"freetypelaz\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"FCL\"/>\n        <MinVersion Major=\"1\" Valid=\"True\"/>\n      </Item2>\n    </RequiredPkgs>\n    <UsageOptions>\n      <UnitPath Value=\"$(PkgOutDir)\"/>\n    </UsageOptions>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <CustomOptions Items=\"ExternHelp\" Version=\"2\">\n      <_ExternHelp Items=\"Count\"/>\n    </CustomOptions>\n  </Package>\n</CONFIG>\n"
  },
  {
    "path": "bgrabitmap/bgrabitmappack4nolcl_freetype.pas",
    "content": "{ This file was automatically created by Lazarus. Do not edit!\n  This source is only used to compile and install the package.\n }\n\nunit BGRABitmapPack4NoLCL_FreeType;\n\n{$warn 5023 off : no warning about unused units}\ninterface\n\nuses\n  BGRAAnimatedGif, BGRABitmap, BGRABitmapTypes, BGRABlend, BGRACanvas, \n  BGRACanvas2D, BGRAColorInt, BGRACompressableBitmap, BGRACoordPool3D, \n  BGRADefaultBitmap, BGRADNetDeserial, BGRAFillInfo, BGRAFilters, \n  BGRAGradients, BGRAGradientScanner, BGRALayers, BGRAMatrix3D, \n  BGRAOpenRaster, BGRAPaintNet, BGRAPath, BGRAPen, BGRAPhongTypes, \n  BGRAPolygon, BGRAPolygonAliased, BGRAResample, BGRAScene3D, \n  BGRASliceScaling, BGRASSE, BGRAStreamLayers, BGRAText, BGRATextFX, \n  BGRATransform, BGRATypewriter, BGRAVectorize, BGRAGrayscaleMask, \n  BGRAReadBMP, BGRAReadGif, BGRAReadPCX, BGRAReadPng, BGRAReadPSD, \n  BGRAThumbnail, BGRAReadTGA, BGRAReadIco, BGRAReadJpeg, BGRAReadLzp, \n  UnzipperExt, BGRALzpCommon, BGRAWriteLzp, BGRAReadXPM, BGRASVG, BGRAUnits, \n  BGRASVGShapes, BGRASVGType, BGRAReadBmpMioMap, BGRAArrow, BGRAPalette, \n  BGRAColorQuantization, BGRADithering, BGRAUTF8, BGRAWritePNG, BGRAGifFormat, \n  BGRAGraphics, BGRASceneTypes, BGRARenderer3D, BGRAWriteBmpMioMap, \n  BGRAOpenGLType, BGRASpriteGL, BGRAOpenGL, BGRACanvasGL, BGRAFontGL, \n  BGRAOpenGL3D, BGRAPhoxo, BGRAFilterScanner, BGRAFilterType, BGRAFilterBlur, \n  BGRAMultiFileType, BGRAWinResource, BGRAIconCursor, BGRABlurGL, \n  BGRAReadTiff, BGRALazPaint, BGRAMemDirectory, BGRAUnicode, BGRATextBidi, \n  BGRALayerOriginal, BGRASVGOriginal, BGRAGradientOriginal, BGRAUnicodeText, \n  UniversalDrawer, LinearRGBABitmap, XYZABitmap, BGRAWriteTiff, \n  WordXYZABitmap, ExpandedBitmap, libwebp, linuxlib, BGRAReadWebP, \n  BGRAWriteWebP, BGRAClasses, avifbgra, libavif, BGRAWriteAvif, BGRAReadAvif, \n  darwinlib, BGRAWriteJpeg, BGRAWriteBMP, BGRAWritePCX, BGRAFreeType, BGRAPDF;\n\nimplementation\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrabitmaptypes.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Basic types for BGRABitmap.)\n\n  This unit is generally needed in the **uses** clause,\n  along with the BGRABitmap unit.\n\n  It defines pixel types, image formats, text options, gemoetry types,\n  colors and base classes.\n\n  Whether you're using LCL types or not, add also BGRAGraphics unit rather\n  than Graphics unit to get the most portable types.\n}\nunit BGRABitmapTypes;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, BGRAGraphics, BGRAUnicode,\n  FPImage{$IFDEF BGRABITMAP_USE_FPCANVAS}, FPImgCanv{$ENDIF}\n  {$IFDEF BGRABITMAP_USE_LCL}, LCLType, GraphType, LResources{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}, BGRAMultiFileType{$ENDIF};\n\n{=== Miscellaneous types ===}\n\n  {* Current version expressed as an integer with each part multiplied by 100 }\n  const BGRABitmapVersion = 11060600;\n\n  {* String representation of the version, numbers separated by dots }\n  function BGRABitmapVersionStr: string;\n\ntype\n  {$IFNDEF BGRABITMAP_CORE}TMultiFileContainer = BGRAMultiFileType.TMultiFileContainer;{$ENDIF}\n  Int32or64 = BGRAClasses.Int32or64;\n  UInt32or64 = BGRAClasses.UInt32or64;\n\n  {* Device context handle (using LCL if available) }\n  HDC = {$IFDEF BGRABITMAP_USE_LCL}LCLType.HDC{$ELSE}PtrUInt{$ENDIF};\n\ntype\n  {* Options when doing a floodfill (also called bucket fill) }\n  TFloodfillMode = (\n    {** Pixels that are filled are replaced }\n    fmSet,\n    {** Pixels that are filled are drawn upon with the fill color }\n    fmDrawWithTransparency,\n    {** Pixels that are filled are drawn without gamma correction upon with the fill color }\n    fmLinearBlend,\n    {** Pixels that are XORed with the fill color}\n    fmXor,\n    {** Pixels that are filled are drawn upon to the extent that the color underneath is similar to\n        the start color. The more different the different is, the less it is drawn upon }\n    fmProgressive);\n\n  {* Specifies how much smoothing is applied to the computation of the median }\n  TMedianOption = (moNone, moLowSmooth, moMediumSmooth, moHighSmooth);\n  {* Specifies the shape of a predefined blur }\n  TRadialBlurType = (\n    {** Gaussian-like, pixel importance decreases progressively }\n    rbNormal,\n    {** Disk blur, pixel importance does not decrease progressively }\n    rbDisk,\n    {** Pixel are considered when they are at a certain distance }\n    rbCorona,\n    {** Gaussian-like, but 10 times smaller than _rbNormal_ }\n    rbPrecise,\n    {** Gaussian-like but simplified to be computed faster }\n    rbFast,\n    {** Box blur, pixel importance does not decrease progressively\n        and the pixels are included when they are in a square.\n        This is much faster than _rbFast_ however you may get\n        square shapes in the resulting image }\n    rbBox);\n\n  {** String constants to represent TRadialBlurType values }\n  const RadialBlurTypeToStr: array[TRadialBlurType] of string =\n  ('Normal','Disk','Corona','Precise','Fast','Box');\n\ntype\n  {* Possible options when applying emboss filter }\n  TEmbossOption = (\n    {** Transparent output except when there borders were detected }\n    eoTransparent,\n    {** Preserve the original hue }\n    eoPreserveHue);\n  {** Sets of emboss options }\n  TEmbossOptions = set of TEmbossOption;\n\n  {* List of image formats }\n  TBGRAImageFormat = (\n    {** Unknown format }\n    ifUnknown,\n    {** JPEG format, opaque, lossy compression }\n    ifJpeg,\n    {** PNG format, transparency, lossless compression. Can be animated (see BGRAAnimatedGif) }\n    ifPng,\n    {** GIF format, single transparent color, lossless in theory but only low number of colors allowed.\n        Can be animated (see BGRAAnimatedGif) }\n    ifGif,\n    {** BMP format, transparency, no compression. Note that transparency is\n        not supported by all BMP readers so it is recommended to avoid\n        storing images with transparency in this format }\n    ifBmp,\n    {** iGO BMP (16-bit, rudimentary lossless compression) }\n    ifBmpMioMap,\n    {** ICO format, contains different sizes of the same image }\n    ifIco,\n    {** CUR format, has hotspot, contains different sizes of the same image }\n    ifCur,\n    {** PCX format, opaque, rudimentary lossless compression }\n    ifPcx,\n    {** Paint.NET format, layers, lossless compression }\n    ifPaintDotNet,\n    {** LazPaint format, layers, lossless compression }\n    ifLazPaint,\n    {** OpenRaster format, layers, lossless compression }\n    ifOpenRaster,\n    {** Phoxo format, layers }\n    ifPhoxo,\n    {** Photoshop format, layers, rudimentary lossless compression }\n    ifPsd,\n    {** Targa format (TGA), transparency, rudimentary lossless compression }\n    ifTarga,\n    {** TIFF format, limited support }\n    ifTiff,\n    {** X-Window capture, limited support }\n    ifXwd,\n    {** X-Pixmap, text encoded image, limited support }\n    ifXPixMap,\n    {** text or binary encoded image, no compression, extension PBM, PGM, PPM }\n    ifPortableAnyMap,\n    {** Scalable Vector Graphic, vectorial, read-only as raster }\n    ifSvg,\n    {** Lossless or lossy compression using V8 algorithm (need libwebp library) }\n    ifWebP,\n    {** Lossless or lossy compression using Avif algorithm (need libavif library) }\n    ifAvif\n    );\n\n  {* Physical units as defined by CSS }\n  TCSSUnit = (cuCustom, cuPixel,\n              cuCentimeter, cuMillimeter,\n              cuInch, cuPica, cuPoint,\n              cuFontEmHeight, cuFontXHeight, cuPercent);\n\nvar\n  { #note 5 -oMaxM : it would be useful to make a single record that contains everything }\n  {** List of stream readers for images }\n  DefaultBGRAImageReader: array[TBGRAImageFormat] of TFPCustomImageReaderClass;\n  {** List of stream writers for images }\n  DefaultBGRAImageWriter: array[TBGRAImageFormat] of TFPCustomImageWriterClass;\n  {** List of names and extensions for image formats }\n  BGRAImageFormat: array[TBGRAImageFormat] of record\n    TypeName: string; // named use by FPC\n    Extensions: string;\n  end;\n\n  {** Detect the file format of a given file }\n  function DetectFileFormat(AFilenameUTF8: string): TBGRAImageFormat;\n  {** Detect the file format of a given stream. _ASuggestedExtensionUTF8_ can\n      be provided to guess the format }\n  function DetectFileFormat(AStream: TStream; ASuggestedExtensionUTF8: string = ''): TBGRAImageFormat;\n  {** Returns the file format that is most likely to be stored in the\n      given filename (according to its extension) }\n  function SuggestImageFormat(AFilenameOrExtensionUTF8: string): TBGRAImageFormat;\n  {** Returns a likely image extension for the format }\n  function SuggestImageExtension(AFormat: TBGRAImageFormat): string;\n  {** Create an image reader for the given format }\n  function CreateBGRAImageReader(AFormat: TBGRAImageFormat): TFPCustomImageReader;\n  {** Create an image writer for the given format. _AHasTransparentPixels_\n      specifies if alpha channel must be supported }\n  function CreateBGRAImageWriter(AFormat: TBGRAImageFormat; AHasTransparentPixels: boolean): TFPCustomImageWriter;\n\n  {** Register an image Reader for the given format, if AddFPCReader register also the FPC handler }\n  procedure BGRARegisterImageReader(AFormat: TBGRAImageFormat;\n                                    AReader: TFPCustomImageReaderClass;\n                                    AddFPCReader: Boolean;\n                                    const ATypeName: String;\n                                    const AExtensions: String);\n\n  {** Register an image Writer for the given format, if AddFPCWriter register also the FPC handler }\n  procedure BGRARegisterImageWriter(AFormat: TBGRAImageFormat;\n                                    AWriter: TFPCustomImageWriterClass;\n                                    AddFPCWriter: Boolean;\n                                    const ATypeName: String;\n                                    const AExtensions: String);\n\n  {** Register image Reader and Writer for the given format.\n      If AddFPCWriter register also the FPC handler }\n  procedure BGRARegisterImageHandlers(AFormat: TBGRAImageFormat;\n    AReader: TFPCustomImageReaderClass; AWriter: TFPCustomImageWriterClass;\n    AddFPCHandlers: Boolean; const ATypeName: String; const AExtensions: String);\n\n  {** Get Registered Readers Extensions to use in Masks List}\n  function BGRARegisteredImageReaderExtension: String; overload;\n  function BGRARegisteredImageReaderExtension(AFormat: TBGRAImageFormat): String; overload;\n\n  {** Get Registered Writers Extensions to use in Masks List}\n  function BGRARegisteredImageWriterExtension: String;\n  function BGRARegisteredImageWriterExtension(AFormat: TBGRAImageFormat): String; overload;\n\ntype\n  {* Possible options when loading an image }\n  TBGRALoadingOption = (\n     {** Do not clear RGB channels when alpha is zero (not recommended) }\n     loKeepTransparentRGB,\n     {** Consider BMP to be opaque if no alpha value is provided (for compatibility) }\n     loBmpAutoOpaque,\n     {** Load JPEG quickly however with a lower quality }\n     loJpegQuick);\n  {** Set of options when loading }\n  TBGRALoadingOptions = set of TBGRALoadingOption;\n\n  TTextLayout = BGRAGraphics.TTextLayout;\n\nconst\n  tlTop = BGRAGraphics.tlTop;\n  tlCenter = BGRAGraphics.tlCenter;\n  tlBottom = BGRAGraphics.tlBottom;\n\ntype\n  TFontBidiMode = BGRAUnicode.TFontBidiMode;\n\nconst\n  fbmAuto = BGRAUnicode.fbmAuto;\n  fbmLeftToRight = BGRAUnicode.fbmLeftToRight;\n  fbmRightToLeft = BGRAUnicode.fbmRightToLeft;\n\ntype\n  {* Alignment relative to the bidi-mode }\n  TBidiTextAlignment = (\n    {** Natural alignment: left-aligned for left-to-right and right-aligned for right-to-left text }\n    btaNatural,\n    {** Opposite of natural alignment }\n    btaOpposite,\n    {** Always left-aligned }\n    btaLeftJustify,\n    {** Always right-aligned }\n    btaRightJustify,\n    {** Centered }\n    btaCenter);\n\n  {** Converts an alignment to a bidi alignement relative to a bidi-mode }\n  function AlignmentToBidiTextAlignment(AAlign: TAlignment; ARightToLeft: boolean): TBidiTextAlignment; overload;\n  {** Converts an alignment to a bidi alignement independent of bidi-mode }\n  function AlignmentToBidiTextAlignment(AAlign: TAlignment): TBidiTextAlignment; overload;\n  {** Converts a bidi alignment to a classic alignement according to bidi-mode }\n  function BidiTextAlignmentToAlignment(ABidiAlign: TBidiTextAlignment; ARightToLeft: boolean): TAlignment;\n\n  {* Checks the bounds of an image in the given clipping rectangle }\n  function CheckPutImageBounds(x, y, tx, ty: integer; out minxb, minyb, maxxb, maxyb, ignoreleft: integer; const cliprect: TRect): boolean;\n\n{==== Imported from GraphType ====}\n//if this unit is defined, otherwise\n//define here the types used by the library.\n{$IFDEF BGRABITMAP_USE_LCL}\n  type\n    { Order of the lines in an image }\n    TRawImageLineOrder = GraphType.TRawImageLineOrder;\n    { Order of the bits in a byte containing pixel values }\n    TRawImageBitOrder = GraphType.TRawImageBitOrder;\n    { Order of the bytes in a group of byte containing pixel values }\n    TRawImageByteOrder = GraphType.TRawImageByteOrder;\n    { Definition of a single line 3D bevel }\n    TGraphicsBevelCut = GraphType.TGraphicsBevelCut;\n\n  const\n    { The first line (line 0) is the top line }\n    riloTopToBottom = GraphType.riloTopToBottom;\n    { The first line (line 0) is the bottom line }\n    riloBottomToTop = GraphType.riloBottomToTop;\n\n    { Bit 0 is pixel 0 }\n    riboBitsInOrder = GraphType.riboBitsInOrder;\n    { Bit 0 is pixel 7 (Bit 1 is pixel 6, ...) }\n    riboReversedBits = GraphType.riboReversedBits;\n\n    { least significant byte first (little endian) }\n    riboLSBFirst = GraphType.riboLSBFirst;\n    { most significant byte first (big endian) }\n    riboMSBFirst = GraphType.riboMSBFirst;\n\n    { fill till the color (it fills all except this color) }\n    fsSurface = GraphType.fsSurface;\n    { fill this color (it fills only connected pixels of this color) }\n    fsBorder = GraphType.fsBorder;\n\n    { No bevel }\n    bvNone = GraphType.bvNone;\n    { Bevel for lowered surface }\n    bvLowered = GraphType.bvLowered;\n    { Bevel for raised surface }\n    bvRaised = GraphType.bvRaised;\n    { Spacing only }\n    bvSpace = GraphType.bvSpace;\n{$ELSE}\n  type\n    {* Order of the lines in an image }\n    TRawImageLineOrder = (\n      {** The first line in memory (line 0) is the top line }\n      riloTopToBottom,\n      {** The first line in memory (line 0) is the bottom line }\n      riloBottomToTop);\n\n    {* Order of the bits in a byte containing pixel values }\n    TRawImageBitOrder = (\n      {** The lowest bit is on the left. So with a monochrome picture, bit 0 would be pixel 0 }\n      riboBitsInOrder,\n      {** The lowest bit is on the right. So with a momochrome picture, bit 0 would be pixel 7 (bit 1 would be pixel 6, ...) }\n      riboReversedBits);\n\n    {* Order of the bytes in a group of byte containing pixel values }\n    TRawImageByteOrder = (\n      {** Least significant byte first (little endian) }\n      riboLSBFirst,\n      {** most significant byte first (big endian) }\n      riboMSBFirst);\n\n    {* Definition of a single line 3D bevel }\n    TGraphicsBevelCut =\n    (\n      {** No bevel }\n      bvNone,\n      {** Shape is lowered, light is on the bottom-right corner }\n      bvLowered,\n      {** Shape is raised, light is on the top-left corner }\n      bvRaised,\n      {** Shape is at the same level, there is no particular lighting }\n      bvSpace);\n{$ENDIF}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I bgrapixel.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I geometrytypes.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$i csscolorconst.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I bgrascanner.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I unibitmap.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I unibitmapgeneric.inc}\n\n{==== Integer math ====}\n\n  {* Computes the value modulo cycle, and if the _value_ is negative, the result\n     is still positive }\n  function PositiveMod(value, cycle: Int32or64): Int32or64; inline; overload;\n\n  { Sin65536 and Cos65536 are fast routines to compute sine and cosine as integer values.\n    They use a table to store already computed values. The return value is an integer\n    ranging from 0 to 65536, so the mean value is 32768 and the half amplitude is\n    32768 instead of 1. The input has a period of 65536, so you can supply any integer\n    without applying a modulo. }\n\n  { * Compute all sin values now }\n  procedure PrecalcSin65536;\n\n  {* Returns an integer approximation of the sine. Value ranges from 0 to 65535,\n     where 65536 corresponds to the next cycle }\n  function Sin65536(value: word): Int32or64; inline;\n  {* Returns an integer approximation of the cosine. Value ranges from 0 to 65535,\n     where 65536 corresponds to the next cycle }\n  function Cos65536(value: word): Int32or64; inline;\n\n  {* Returns the square root of the given byte, considering that\n     255 is equal to unity }\n  function ByteSqrt(value: byte): byte; inline;\n\n  {* Rounds the number to the nearest integer. If the number is exactly halfway\n     between two integers, it rounds towards positive infinity. }\n  function HalfUp(value: single): integer;\n\n  {* Rounds the number to the nearest 64-bit integer. If the number is exactly halfway\n     between two integers, it rounds towards positive infinity. }\n  function HalfUp64(value: single): Int64;\n\n{==== Types provided for fonts ====}\ntype\n  {* Quality to be used to render text }\n  TBGRAFontQuality = (\n    {** Use the system capabilities. It is rather fast however it may be\n        not be smoothed. }\n    fqSystem,\n    {** Use the system capabilities to render with ClearType. This quality is\n        of course better than _fqSystem_ however it may not be perfect.}\n    fqSystemClearType,\n    {** Garanties a high quality antialiasing. }\n    fqFineAntialiasing,\n    {** Fine antialiasing with ClearType assuming an LCD display in red/green/blue order }\n    fqFineClearTypeRGB,\n    {** Fine antialiasing with ClearType assuming an LCD display in blue/green/red order }\n    fqFineClearTypeBGR);\n\n  {** Function type to detect the adequate ClearType mode }\n  TGetFineClearTypeAutoFunc = function(): TBGRAFontQuality;\nvar\n  {** Provide function to detect the adequate ClearType mode }\n  fqFineClearType : TGetFineClearTypeAutoFunc;\n\ntype\n  {* Measurements of a font }\n  TFontPixelMetric = record\n    {** The values have been computed }\n    Defined: boolean;\n    {** Position of the baseline, where most letters lie }\n    Baseline,\n    {** Position of the top of the small letters (x being one of them) }\n    xLine,\n    {** Position of the top of the UPPERCASE letters }\n    CapLine,\n    {** Position of the bottom of letters like g and p }\n    DescentLine,\n    {** Total line height including line spacing defined by the font }\n    Lineheight: integer;\n  end;\n\n  {* Measurements of a font in floating point values }\n  TFontPixelMetricF = record\n    {** The values have been computed }\n    Defined: boolean;\n    {** Position of the baseline, where most letters lie }\n    Baseline,\n    {** Position of the top of the small letters (x being one of them) }\n    xLine,\n    {** Position of the top of the UPPERCASE letters }\n    CapLine,\n    {** Position of the bottom of letters like g and p }\n    DescentLine,\n    {** Total line height including line spacing defined by the font }\n    Lineheight: single;\n  end;\n\n  {* Vertical anchoring of the font. When text is drawn, a start coordinate\n      is necessary. Text can be positioned in different ways. This enum\n      defines what position it is regarding the font }\n  TFontVerticalAnchor = (\n    {** The top of the font. Everything will be drawn below the start coordinate. }\n    fvaTop,\n    {** The center of the font }\n    fvaCenter,\n    {** The top of capital letters }\n    fvaCapLine,\n    {** The center of capital letters }\n    fvaCapCenter,\n    {** The top of small letters }\n    fvaXLine,\n    {** The center of small letters }\n    fvaXCenter,\n    {** The baseline, the bottom of most letters }\n    fvaBaseline,\n    {** The bottom of letters that go below the baseline }\n    fvaDescentLine,\n    {** The bottom of the font. Everything will be drawn above the start coordinate }\n    fvaBottom);\n\n  {* Definition of a function that handles work-break }\n  TWordBreakHandler = procedure(var ABeforeUTF8, AAfterUTF8: string) of object;\n\n  {* Alignment for a typewriter, that does not have any more information\n     than a square shape containing glyphs }\n  TBGRATypeWriterAlignment = (twaTopLeft, twaTop, twaTopRight, twaLeft, twaMiddle, twaRight, twaBottomLeft, twaBottom, twaBottomRight);\n  {* How a typewriter must render its content on a Canvas2d }\n  TBGRATypeWriterOutlineMode = (twoPath, twoFill, twoStroke, twoFillOverStroke, twoStrokeOverFill, twoFillThenStroke, twoStrokeThenFill);\n\n  {* Abstract class for all font renderers }\n  TBGRACustomFontRenderer = class\n  protected\n    {** Specifies the height of the font without taking into account additional line spacing.\n        A negative value means that it is the full height instead }\n    FFontEmHeightF: single;\n    {** Retrieves the em-height of the font }\n    function GetFontEmHeight: integer;\n    {** Sets the font height as em-height }\n    procedure SetFontEmHeight(AValue: integer);\n  public\n    {** Specifies the font to use. Unless the font renderer accept otherwise,\n        the name is in human readable form, like 'Arial', 'Times New Roman', ...  }\n    FontName: string;\n\n    {** Specifies the set of styles to be applied to the font.\n        These can be fsBold, fsItalic, fsStrikeOut, fsUnderline.\n        So the value \\[fsBold, fsItalic] means that the font must be bold and italic }\n    FontStyle: TFontStyles;\n\n    {** Specifies the quality of rendering. Default value is fqSystem }\n    FontQuality: TBGRAFontQuality;\n\n    {** Specifies the rotation of the text, for functions that support text rotation.\n        It is expressed in tenth of degrees, positive values going counter-clockwise }\n    FontOrientation: integer;\n\n    {** Returns measurement for the current font in pixels }\n    function GetFontPixelMetric: TFontPixelMetric; virtual; abstract;\n    {** Returns measurement for the current font in fractional pixels }\n    function GetFontPixelMetricF: TFontPixelMetricF; virtual;\n    {** Checks whether a font exists }\n    function FontExists(AName: string): boolean; virtual; abstract;\n\n    {** Checks if any text would be visible using the specified color }\n    function TextVisible(const AColor: TBGRAPixel): boolean; virtual;\n\n    {** Returns the total size of the string provided using the current font.\n        Orientation is not taken into account, so that the width is horizontal }\n    function TextSize(sUTF8: string): TSize; overload; virtual; abstract;\n    {** Returns the total floating point size of the string provided using the current font.\n        Orientation is not taken into account, so that the width is horizontal }\n    function TextSizeF(sUTF8: string): TPointF; overload; virtual;\n    {** Returns the total size of the string provided given a maximum width and RTL mode,\n        using the current font. Orientation is not taken into account,\n        so that the width is along the text }\n    function TextSize(sUTF8: string; AMaxWidth: integer; ARightToLeft: boolean): TSize; overload; virtual; abstract;\n    {** Returns the total floating point size of the string provided given a maximum width and RTL mode,\n        using the current font. Orientation is not taken into account,\n        so that the width is along the text }\n    function TextSizeF(sUTF8: string; AMaxWidthF: single; ARightToLeft: boolean): TPointF; overload; virtual;\n    {** Returns the total size of the string provided using the current font,\n        with the given orientation in tenth of degrees CCW, along the text }\n    function TextSizeAngle(sUTF8: string; {%H-}orientationTenthDegCCW: integer): TSize; virtual;\n    {** Returns the total floating-point size of the string provided using the current font,\n        with the given orientation, along the text }\n    function TextSizeAngleF(sUTF8: string; {%H-}orientationTenthDegCCW: integer): TPointF; virtual;\n\n    {** Returns the number of Unicode characters that fit into the specified size }\n    function TextFitInfo(sUTF8: string; AMaxWidth: integer): integer; virtual; abstract;\n    {** Returns the number of Unicode characters that fit into the specified floating-point size }\n    function TextFitInfoF(sUTF8: string; AMaxWidthF: single): integer; virtual;\n\n    {** Draws the UTF8 encoded string, with color _c_.\n        If align is taLeftJustify, (_x_, _y_) is the top-left corner.\n        If align is taCenter, (_x_, _y_) is at the top and middle of the text.\n        If align is taRightJustify, (_x_, _y_) is the top-right corner.\n        The value of _FontOrientation_ is taken into account, so that the text may be rotated }\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; virtual; abstract;\n    {** Same as above but with given RTL mode }\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment; {%H-}ARightToLeft: boolean); overload; virtual;\n\n    {** Same as above functions, except that the text is filled using texture.\n        The value of _FontOrientation_ is taken into account, so that the text may be rotated }\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; virtual; abstract;\n    {** Same as above but with given RTL mode }\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment; {%H-}ARightToLeft: boolean); overload; virtual;\n\n    {** Same as above, except that the orientation is specified in tenth of degrees CCW,\n        overriding the value of the property _FontOrientation_ }\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; virtual; abstract;\n    {** Same as above but with given RTL mode }\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel; align: TAlignment; {%H-}ARightToLeft: boolean); overload; virtual;\n    {** Same as above, except that the orientation is specified, overriding the value of the property _FontOrientation_ }\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; virtual; abstract;\n    {** Same as above but with given RTL mode }\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; texture: IBGRAScanner; align: TAlignment; {%H-}ARightToLeft: boolean); overload; virtual;\n\n    {** Draw the UTF8 encoded string at the coordinate (_x_, _y_), clipped inside the rectangle _ARect_.\n        Additional style information is provided by the style parameter.\n        The color _c_ is used to fill the text. No rotation is applied. }\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; c: TBGRAPixel); overload; virtual; abstract;\n\n    {** Same as above except a _texture_ is used to fill the text }\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; texture: IBGRAScanner); overload; virtual; abstract;\n\n    {** Copy the path for the UTF8 encoded string into _ADest_.\n        If _align_ is _taLeftJustify_, (_x_, _y_) is the top-left corner.\n        If _align_ is _taCenter_, (_x_, _y_) is at the top and middle of the text.\n        If _align_ is _taRightJustify_, (_x_, _y_) is the top-right corner. }\n    procedure CopyTextPathTo({%H-}ADest: IBGRAPath; {%H-}x, {%H-}y: single; {%H-}s: string; {%H-}align: TAlignment); virtual; //optional\n    {** Same as above but with given RTL mode }\n    procedure CopyTextPathTo({%H-}ADest: IBGRAPath; {%H-}x, {%H-}y: single; {%H-}s: string; {%H-}align: TAlignment; {%H-}ARightToLeft: boolean); virtual; //optional\n    {** Check whether the renderer can produce text path }\n    function HandlesTextPath: boolean; virtual;\n\n    {** Font em-height as an integer }\n    property FontEmHeight: integer read GetFontEmHeight write SetFontEmHeight;\n    {** Font em-height as a single-precision floating point value }\n    property FontEmHeightF: single read FFontEmHeightF write FFontEmHeightF;\n  end;\n\n  {* Output mode for the improved renderer for readability.\n     This is used by the font renderer based on LCL in BGRAText }\n  TBGRATextOutImproveReadabilityMode = (\n    {** Render the grayscale mask }\n    irMask,\n    {** Render normally with provided the color or texture }\n    irNormal,\n    {** Render with ClearType for RGB ordered display }\n    irClearTypeRGB,\n    {** Render with ClearType for BGR ordered display }\n    irClearTypeBGR);\n\n{* Removes line ending and tab characters from a string (for a function\n    like _TextOut_ that does not handle this). this works with UTF8 strings\n    as well }\nfunction CleanTextOutString(const s: string): string;\n{* Remove the line ending at the specified position or return False.\n    This works with UTF8 strings however the index is the byte index }\nfunction RemoveLineEnding(var s: string; indexByte: integer): boolean;\n{* Remove the line ending at the specified position or return False.\n    The index is the character index, that may be different from the\n    byte index }\nfunction RemoveLineEndingUTF8(var sUTF8: string; indexUTF8: integer): boolean;\n{* Default word break handler }\nprocedure BGRADefaultWordBreakHandler(var ABefore, AAfter: string);\n\n{==== Images and resampling ====}\n\ntype\n  {* How the resample is to be computed }\n  TResampleMode = (\n    {** Low quality resample by repeating pixels, stretching them }\n    rmSimpleStretch,\n    {** Use resample filters. This gives high\n        quality resampling however this the proportion changes slightly because\n        the first and last pixel are considered to occupy only half a unit as\n        they are considered as the border of the picture\n        (pixel-centered coordinates) }\n    rmFineResample);\n\n  {* List of resample filter to be used with _rmFineResample_ }\n  TResampleFilter = (\n    {** Equivalent of simple stretch with high quality and pixel-centered coordinates }\n    rfBox,\n    {** Linear interpolation giving slow transition between pixels }\n    rfLinear,\n    {** Mix of _rfLinear_ and _rfCosine_ giving medium speed stransition between pixels }\n    rfHalfCosine,\n    {** Cosine-like interpolation giving fast transition between pixels }\n    rfCosine,\n    {** Simple bi-cubic filter (blurry) }\n    rfBicubic,\n    {** Mitchell filter, good for downsizing interpolation }\n    rfMitchell,\n    {** Spline filter, good for upsizing interpolation, however slightly blurry }\n    rfSpline,\n    {** Lanczos with radius 2, blur is corrected }\n    rfLanczos2,\n    {** Lanczos with radius 3, high contrast }\n    rfLanczos3,\n    {** Lanczos with radius 4, high contrast }\n    rfLanczos4,\n    {** Best quality using rfMitchell or rfSpline }\n    rfBestQuality);\n\nconst\n  {** List of strings to represent resample filters }\n  ResampleFilterStr : array[TResampleFilter] of string =\n   ('Box','Linear','HalfCosine','Cosine','Bicubic','Mitchell','Spline',\n    'Lanczos2','Lanczos3','Lanczos4','BestQuality');\n\n  {** Gives the sample filter represented by a string }\n  function StrToResampleFilter(str: string): TResampleFilter;\n\ntype\n  {* Image information from superficial analysis }\n  TQuickImageInfo = record\n    {** Width in pixels }\n    Width,\n    {** Height in pixels }\n    Height,\n    {** Bitdepth for colors (1, 2, 4, 8 for images with palette/grayscale, 16, 24 or 48 if each channel is present) }\n    ColorDepth,\n    {** Bitdepth for alpha (0 if no alpha channel, 1 if bit mask, 8 or 16 if alpha channel) }\n    AlphaDepth: integer;\n  end;\n\n  {* Bitmap reader with additional features }\n  TBGRAImageReader = class(TFPCustomImageReader)\n    {** Return bitmap information (size, bit depth) }\n    function GetQuickInfo(AStream: TStream): TQuickImageInfo; virtual; abstract;\n    {** Return a draft of the bitmap, the ratio may change compared to the original width and height (useful to make thumbnails) }\n    function GetBitmapDraft(AStream: TStream; AMaxWidth, AMaxHeight: integer; out AOriginalWidth,AOriginalHeight: integer): TBGRACustomBitmap; virtual; abstract;\n  end;\n\n  {* Generic definition for a PNG writer with alpha option }\n  TBGRACustomWriterPNG = class(TFPCustomImageWriter)\n  protected\n    {** Gets whether or not to use the alpha channel }\n    function GetUseAlpha: boolean; virtual; abstract;\n    {** Sets whether or not to use the alpha channel }\n    procedure SetUseAlpha(AValue: boolean); virtual; abstract;\n  public\n    {** Whether or not to use the alpha channel }\n    property UseAlpha : boolean read GetUseAlpha write SetUseAlpha;\n  end;\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I bgracustombitmap.inc}\n\n{* Check whether to GUID are equal }\noperator =(const AGuid1, AGuid2: TGuid): boolean;\n\ntype\n  {* Generic class for embedded resource management }\n  TBGRAResourceManager = class\n  protected\n    function GetWinResourceType(AExtension: string): pchar;\n  public\n    function GetResourceStream(AFilename: string): TStream; virtual;\n    function IsWinResource(AFilename: string): boolean; virtual;\n  end;\n\n  {** Provides a resource manager }\n  var BGRAResource : TBGRAResourceManager;\n\n{* Return the full path for a resource file on the disk. On Windows and Linux, it\n   can be next to the binary but on MacOS, it can be outside of the application bundle\n   when debugging }\nfunction ResourceFile(AFilename: string): string;\n\nimplementation\n\nuses Math, SysUtils, BGRAUTF8, FPWriteBMP, FPReadPNM, FPWritePNM, FPWriteXPM{$IFNDEF BGRABITMAP_CORE},\n  FPReadXwd, FPReadXPM, FPReadPcx,\n  FPWriteJPEG, FPWritePCX,\n  FPWriteTGA{$ENDIF};\n\nfunction BGRABitmapVersionStr: string;\nvar numbers: TStringList;\n  i,remaining: LongWord;\nbegin\n  numbers := TStringList.Create;\n  remaining := BGRABitmapVersion;\n  for i := 1 to 4 do\n  begin\n    numbers.Insert(0, IntToStr(remaining mod 100));\n    remaining := remaining div 100;\n  end;\n  while (numbers.Count > 1) and (numbers[numbers.Count-1]='0') do\n    numbers.Delete(numbers.Count-1);\n  numbers.Delimiter:= '.';\n  result := numbers.DelimitedText;\n  numbers.Free;\nend;\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I geometrytypes.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I unibitmap.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I unibitmapgeneric.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I csscolorconst.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I bgracustombitmap.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I bgrascanner.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I bgrapixel.inc}\n\nfunction AlignmentToBidiTextAlignment(AAlign: TAlignment; ARightToLeft: boolean): TBidiTextAlignment;\nbegin\n  case AAlign of\n    taCenter: result := btaCenter;\n    taRightJustify: if ARightToLeft then result := btaNatural else result := btaOpposite;\n    else {taLeftJustify}\n      if ARightToLeft then result := btaOpposite else result := btaNatural;\n  end;\nend;\n\nfunction AlignmentToBidiTextAlignment(AAlign: TAlignment): TBidiTextAlignment;\nbegin\n  case AAlign of\n    taCenter: result := btaCenter;\n    taRightJustify: result := btaRightJustify;\n    else {taLeftJustify}\n      result := btaLeftJustify;\n  end;\nend;\n\nfunction BidiTextAlignmentToAlignment(ABidiAlign: TBidiTextAlignment;\n  ARightToLeft: boolean): TAlignment;\nbegin\n  case ABidiAlign of\n    btaCenter: result := taCenter;\n    btaLeftJustify: result := taLeftJustify;\n    btaRightJustify: result := taRightJustify;\n    btaOpposite: if ARightToLeft then result := taLeftJustify else result := taRightJustify;\n  else {btaNatural}\n    if ARightToLeft then result := taRightJustify else result := taLeftJustify;\n  end;\nend;\n\nfunction CleanTextOutString(const s: string): string;\nvar idxIn, idxOut: integer;\nbegin\n  setlength(result, length(s));\n  idxIn := 1;\n  idxOut := 1;\n  while IdxIn <= length(s) do\n  begin\n    if not (s[idxIn] in[#13,#10,#9]) then //those characters are always 1 byte long so it is the same with UTF8\n    begin\n      result[idxOut] := s[idxIn];\n      inc(idxOut);\n    end;\n    inc(idxIn);\n  end;\n  setlength(result, idxOut-1);\nend;\n\nfunction RemoveLineEnding(var s: string; indexByte: integer): boolean;\nbegin //we can ignore UTF8 character length because #13 and #10 are always 1 byte long\n      //so this function can be applied to UTF8 strings as well\n  result := false;\n  if length(s) >= indexByte then\n  begin\n    if s[indexByte] in[#13,#10] then\n    begin\n      result := true;\n      if length(s) >= indexByte+1 then\n      begin\n        if (s[indexByte+1] <> s[indexByte]) and (s[indexByte+1] in[#13,#10]) then\n          delete(s,indexByte,2)\n        else\n          delete(s,indexByte,1);\n      end\n        else\n          delete(s,indexByte,1);\n    end else\n    if (s[indexByte] = #$C2) and (length(s) >= indexByte+1) and (s[indexByte+1] = #$85) then\n    begin\n      result := true;\n      delete(s,indexByte,2);\n    end else\n    if (s[indexByte] = #$E2) and (length(s) >= indexByte+2) and (s[indexByte+1] = #$80) and\n       (s[indexByte+2] in[#$A8,#$A9]) then\n    begin\n      result := true;\n      delete(s,indexByte,3);\n    end\n  end;\nend;\n\nfunction RemoveLineEndingUTF8(var sUTF8: string; indexUTF8: integer): boolean;\nvar indexByte: integer;\n    pIndex: PChar;\nbegin\n  pIndex := UTF8CharStart(@sUTF8[1],length(sUTF8),indexUTF8);\n  if pIndex = nil then\n  begin\n    result := false;\n    exit;\n  end;\n  indexByte := pIndex - @sUTF8[1];\n  result := RemoveLineEnding(sUTF8, indexByte);\nend;\n\nprocedure BGRADefaultWordBreakHandler(var ABefore, AAfter: string);\nconst spacingChars = [' '];\n  wordBreakChars = [' ',#9,'-','?','!'];\nvar p, charLen: integer;\n  u: LongWord;\nbegin\n  if (AAfter <> '') and (ABefore <> '') and not (AAfter[1] in spacingChars) and not (ABefore[length(ABefore)] in wordBreakChars) then\n  begin\n    p := length(ABefore);\n    while (p > 1) and not (ABefore[p-1] in wordBreakChars) do dec(p);\n    while (p < length(ABefore)+1) and (ABefore[p] in [#$80..#$BF]) do inc(p); //do not split UTF8 char\n    //keep non-spacing mark together\n    while p <= length(ABefore) do\n    begin\n      charLen := UTF8CharacterLength(@ABefore[p]);\n      if p+charLen > length(ABefore)+1 then charLen := length(ABefore)+1-p;\n      u := UTF8CodepointToUnicode(@ABefore[p],charLen);\n      if (GetUnicodeBidiClassEx(u) in[ubcNonSpacingMark, ubcCombiningLeftToRight]) then\n        inc(p,charLen)\n      else\n        break;\n    end;\n\n    if p = 1 then\n    begin\n      //keep ideographic punctuation together\n      charLen := UTF8CharacterLength(@AAfter[p]);\n      if charLen > length(AAfter) then charLen := length(AAfter);\n      u := UTF8CodepointToUnicode(@AAfter[p],charLen);\n      case u of\n      UNICODE_IDEOGRAPHIC_COMMA,\n      UNICODE_IDEOGRAPHIC_FULL_STOP,\n      UNICODE_FULLWIDTH_COMMA,\n      UNICODE_HORIZONTAL_ELLIPSIS:\n        begin\n          p := length(ABefore)+1;\n          while p > 1 do\n          begin\n            charLen := 1;\n            dec(p);\n            while (p > 0) and (ABefore[p] in [#$80..#$BF]) do\n            begin\n              dec(p); //do not split UTF8 char\n              inc(charLen);\n            end;\n            if charLen <= 4 then\n              u := UTF8CodepointToUnicode(@ABefore[p],charLen)\n            else\n              u := ord('A');\n            case GetUnicodeBidiClass(u) of\n              ubcNonSpacingMark: ;   // include NSM\n              ubcOtherNeutrals, ubcWhiteSpace, ubcCommonSeparator, ubcEuropeanNumberSeparator:\n                begin\n                  p := 1;\n                  break;\n                end\n            else\n              break;\n            end;\n          end;\n        end;\n      end;\n    end;\n\n    if p > 1 then //can put the word after\n    begin\n      AAfter := copy(ABefore,p,length(ABefore)-p+1)+AAfter;\n      ABefore := copy(ABefore,1,p-1);\n    end else\n    begin //cannot put the word after, so before\n\n    end;\n  end;\n  while (ABefore <> '') and (ABefore[length(ABefore)] in spacingChars) do delete(ABefore,length(ABefore),1);\n  while (AAfter <> '') and (AAfter[1] in spacingChars) do delete(AAfter,1,1);\nend;\n\n\nfunction StrToResampleFilter(str: string): TResampleFilter;\nvar f: TResampleFilter;\nbegin\n  result := rfLinear;\n  str := LowerCase(str);\n  for f := low(TResampleFilter) to high(TResampleFilter) do\n    if CompareText(str,ResampleFilterStr[f])=0 then\n    begin\n      result := f;\n      exit;\n    end;\nend;\n\nfunction GetFineClearTypeAuto: TBGRAFontQuality;\nbegin\n  result := fqFineClearTypeRGB;\nend;\n\n{ TBGRACustomFontRenderer }\n\nfunction TBGRACustomFontRenderer.GetFontEmHeight: integer;\nbegin\n  result := round(FFontEmHeightF);\nend;\n\nprocedure TBGRACustomFontRenderer.SetFontEmHeight(AValue: integer);\nbegin\n  FFontEmHeightF:= AValue;\nend;\n\nfunction TBGRACustomFontRenderer.GetFontPixelMetricF: TFontPixelMetricF;\nbegin\n  with GetFontPixelMetric do\n  begin\n    result.Defined := Defined;\n    result.Baseline := Baseline;\n    result.xLine := xLine;\n    result.CapLine := CapLine;\n    result.DescentLine := DescentLine;\n    result.Lineheight := LineHeight;\n  end;\nend;\n\nfunction TBGRACustomFontRenderer.TextVisible(const AColor: TBGRAPixel): boolean;\nbegin\n  result := AColor.alpha <> 0;\nend;\n\nfunction TBGRACustomFontRenderer.TextSizeF(sUTF8: string): TPointF;\nbegin\n  with TextSize(sUTF8) do\n    result := PointF(cx,cy);\nend;\n\nfunction TBGRACustomFontRenderer.TextSizeF(sUTF8: string; AMaxWidthF: single;\n  ARightToLeft: boolean): TPointF;\nbegin\n  with TextSize(sUTF8, round(AMaxWidthF), ARightToLeft) do\n    result := PointF(cx,cy);\nend;\n\nfunction TBGRACustomFontRenderer.TextFitInfoF(sUTF8: string; AMaxWidthF: single): integer;\nbegin\n  result := TextFitInfo(sUTF8, round(AMaxWidthF));\nend;\n\nfunction TBGRACustomFontRenderer.TextSizeAngle(sUTF8: string;\n  orientationTenthDegCCW: integer): TSize;\nbegin\n  result := TextSize(sUTF8); //ignore orientation by default\nend;\n\nfunction TBGRACustomFontRenderer.TextSizeAngleF(sUTF8: string;\n  orientationTenthDegCCW: integer): TPointF;\nbegin\n  result := TextSizeF(sUTF8); //ignore orientation by default\nend;\n\nprocedure TBGRACustomFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  //if RightToLeft is not handled\n  TextOut(ADest,x,y,sUTF8,c,align);\nend;\n\nprocedure TBGRACustomFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  //if RightToLeft is not handled\n  TextOut(ADest,x,y,sUTF8,texture,align);\nend;\n\nprocedure TBGRACustomFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel;\n  align: TAlignment; ARightToLeft: boolean);\nbegin\n  //if RightToLeft is not handled\n  TextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,c,align);\nend;\n\nprocedure TBGRACustomFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientationTenthDegCCW: integer; sUTF8: string;\n  texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean);\nbegin\n  //if RightToLeft is not handled\n  TextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,texture,align);\nend;\n\nprocedure TBGRACustomFontRenderer.CopyTextPathTo(ADest: IBGRAPath; x, y: single; s: string; align: TAlignment);\nbegin {optional implementation} end;\n\nprocedure TBGRACustomFontRenderer.CopyTextPathTo(ADest: IBGRAPath; x,\n  y: single; s: string; align: TAlignment; ARightToLeft: boolean);\nbegin\n  //if RightToLeft is not handled\n  CopyTextPathTo(ADest, x,y, s, align);\nend;\n\nfunction TBGRACustomFontRenderer.HandlesTextPath: boolean;\nbegin\n  result := false;\nend;\n\n\nfunction CheckPutImageBounds(x, y, tx, ty: integer; out minxb, minyb, maxxb,\n  maxyb, ignoreleft: integer; const cliprect: TRect): boolean;\nvar x2,y2: integer;\nbegin\n  if (x >= cliprect.Right) or (y >= cliprect.Bottom) or (x <= cliprect.Left-tx) or\n    (y <= cliprect.Top-ty) or (ty <= 0) or (tx <= 0) then\n  begin\n    result := false;\n    exit;\n  end;\n\n  x2 := x + tx - 1;\n  y2 := y + ty - 1;\n\n  if y < cliprect.Top then\n    minyb := cliprect.Top\n  else\n    minyb := y;\n  if y2 >= cliprect.Bottom then\n    maxyb := cliprect.Bottom - 1\n  else\n    maxyb := y2;\n\n  if x < cliprect.Left then\n  begin\n    ignoreleft := cliprect.Left-x;\n    minxb      := cliprect.Left;\n  end\n  else\n  begin\n    ignoreleft := 0;\n    minxb      := x;\n  end;\n  if x2 >= cliprect.Right then\n    maxxb := cliprect.Right - 1\n  else\n    maxxb := x2;\n\n  result := true;\nend;\n\n{************************** Cyclic functions *******************}\n\n// Get the cyclic value in the range [0..cycle-1]\nfunction PositiveMod(value, cycle: Int32or64): Int32or64; inline;\nbegin\n  result := value mod cycle;\n  if result < 0 then //modulo can be negative\n    Inc(result, cycle);\nend;\n\n{ Table of precalc values. Note : the value is stored for\n  the first half of the cycle, and values are stored 'minus 1'\n  in order to stay in the range 0..65535 }\nvar\n  sinTab65536: packed array of word;\n  byteSqrtTab: packed array of word;\n\nfunction Sin65536(value: word): Int32or64;\nvar b: integer;\nbegin\n  //allocate array\n  if sinTab65536 = nil then\n    setlength(sinTab65536,32768);\n\n  if value >= 32768 then //function is upside down after half-period\n  begin\n    b := value xor 32768;\n    if sinTab65536[b] = 0 then //precalc\n      sinTab65536[b] := round((sin(b*2*Pi/65536)+1)*65536/2)-1;\n    result := not sinTab65536[b];\n  end else\n  begin\n    b := value;\n    if sinTab65536[b] = 0 then //precalc\n      sinTab65536[b] := round((sin(b*2*Pi/65536)+1)*65536/2)-1;\n    {$hints off}\n    result := sinTab65536[b]+1;\n    {$hints on}\n  end;\nend;\n\nfunction Cos65536(value: word): Int32or64;\nbegin\n  {$PUSH}{$R-}\n  result := Sin65536(value+16384); //cosine is translated\n  {$POP}\nend;\n\nprocedure PrecalcSin65536;\nvar\n  i: Integer;\nbegin\n  for i := 0 to 32767 do Sin65536(i);\nend;\n\nprocedure PrecalcByteSqrt;\nvar i: integer;\nbegin\n  if byteSqrtTab = nil then\n  begin\n    setlength(byteSqrtTab,256);\n    for i := 0 to 255 do\n      byteSqrtTab[i] := round(sqrt(i/255)*255);\n  end;\nend;\n\nfunction ByteSqrt(value: byte): byte; inline;\nbegin\n  if byteSqrtTab = nil then PrecalcByteSqrt;\n  result := ByteSqrtTab[value];\nend;\n\nfunction HalfUp(value: single): integer;\nbegin\n  result := Floor(value + 0.5);\nend;\n\nfunction HalfUp64(value: single): Int64;\nbegin\n  result := Floor64(value + 0.5);\nend;\n\nfunction DetectFileFormat(AFilenameUTF8: string): TBGRAImageFormat;\nvar stream: TFileStreamUTF8;\nbegin\n  try\n    stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead or fmShareDenyWrite);\n  except\n    result := ifUnknown;\n    exit;\n  end;\n  try\n    result := DetectFileFormat(stream, ExtractFileExt(AFilenameUTF8));\n  finally\n    stream.Free;\n  end;\nend;\n\nfunction DetectFileFormat(AStream: TStream; ASuggestedExtensionUTF8: string\n  ): TBGRAImageFormat;\nvar\n  scores: array[TBGRAImageFormat] of integer;\n  imageFormat,bestImageFormat: TBGRAImageFormat;\n  bestScore: integer;\n\n  procedure DetectFromStream;\n  var\n    {%H-}magic: packed array[0..7] of byte;\n    {%H-}dwords: packed array[0..9] of LongWord;\n    magicAsText, moreMagic: string;\n\n    streamStartPos, maxFileSize: Int64;\n    expectedFileSize: LongWord;\n\n    procedure DetectTarga;\n    var\n      paletteCount: integer;\n      {%H-}targaPixelFormat: packed record pixelDepth: byte; imgDescriptor: byte; end;\n    begin\n      if (magic[1] in[$00,$01]) and (magic[2] in[0,1,2,3,9,10,11]) and (maxFileSize >= 18) then\n      begin\n        paletteCount:= magic[5] + magic[6] shl 8;\n        if ((paletteCount = 0) and (magic[7] = 0)) or\n          (magic[7] in [16,24,32]) then //check palette bit count\n        begin\n          AStream.Position:= streamStartPos+16;\n          if AStream.Read({%H-}targaPixelFormat,2) = 2 then\n          begin\n            if (targaPixelFormat.pixelDepth in [8,16,24,32]) and\n              (targaPixelFormat.imgDescriptor and 15 < targaPixelFormat.pixelDepth) then\n                inc(scores[ifTarga],2);\n          end;\n        end;\n      end;\n    end;\n\n    procedure DetectLazPaint;\n    var\n      w,h: LongWord;\n      i: integer;\n    begin\n      if (copy(magicAsText,1,8) = 'LazPaint') then //with header\n      begin\n        AStream.Position:= streamStartPos+8;\n        if AStream.Read(dwords,10*4) = 10*4 then\n        begin\n          for i := 0 to 6 do dwords[i] := LEtoN(dwords[i]);\n          if (dwords[0] = 0) and (dwords[1] <= maxFileSize) and (dwords[5] <= maxFileSize) and\n             (dwords[9] <= maxFileSize) and\n            (dwords[6] = 0) then inc(scores[ifLazPaint],2);\n        end;\n      end else //without header\n      if ((magic[0] <> 0) or (magic[1] <> 0)) and (magic[2] = 0) and (magic[3] = 0) and\n         ((magic[4] <> 0) or (magic[5] <> 0)) and (magic[6] = 0) and (magic[7] = 0) then\n      begin\n        w := magic[0] + (magic[1] shl 8);\n        h := magic[4] + (magic[5] shl 8);\n        AStream.Position:= streamStartPos+8;\n        if AStream.Read(dwords,4) = 4 then\n        begin\n          dwords[0] := LEtoN(dwords[0]);\n          if (dwords[0] > 0) and (dwords[0] < 65536) then\n          begin\n            if 12+dwords[0] < expectedFileSize then\n            begin\n              AStream.Position:= streamStartPos+12+dwords[0];\n              if AStream.Read(dwords,6*4) = 6*4 then\n              begin\n                for i := 0 to 5 do dwords[i] := LEtoN(dwords[i]);\n                if (dwords[0] <= w) and (dwords[1] <= h) and\n                  (dwords[2] <= w) and (dwords[3] <= h) and\n                  (dwords[2] >= dwords[0]) and (dwords[3] >= dwords[1]) and\n                  ((dwords[4] = 0) or (dwords[4] = 1)) and\n                  (dwords[5] > 0) then inc(scores[ifLazPaint],1);\n              end;\n            end;\n          end;\n        end;\n      end;\n    end;\n\n  begin\n    fillchar({%H-}magic, sizeof(magic), 0);\n    fillchar({%H-}dwords, sizeof(dwords), 0);\n\n    streamStartPos:= AStream.Position;\n    maxFileSize:= AStream.Size - streamStartPos;\n    if maxFileSize < 8 then exit;\n    if AStream.Read(magic,sizeof(magic)) <> sizeof(magic) then\n    begin\n      fillchar(scores,sizeof(scores),0);\n      exit;\n    end;\n    setlength(magicAsText,sizeof(magic));\n    move(magic[0],magicAsText[1],sizeof(magic));\n\n    if (magic[0] = $ff) and (magic[1] = $d8) then\n    begin\n         inc(scores[ifJpeg]);\n         if (magic[2] = $ff) and (magic[3] >= $c0) then inc(scores[ifJpeg]);\n    end;\n\n    if (magic[0] = $89) and (magic[1] = $50) and (magic[2] = $4e) and\n      (magic[3] = $47) and (magic[4] = $0d) and (magic[5] = $0a) and\n      (magic[6] = $1a) and (magic[7] = $0a) then inc(scores[ifPng],2);\n\n    if (copy(magicAsText,1,6)='GIF87a') or (copy(magicAsText,1,6)='GIF89a') then inc(scores[ifGif],2);\n\n    if (magic[0] = $0a) and (magic[1] in [0,2,3,4,5]) and (magic[2] in[0,1]) and (magic[3] in[1,2,4,8]) then\n      inc(scores[ifPcx],2);\n\n    if (copy(magicAsText,1,2)='BM') then\n    begin\n      inc(scores[ifBmp]);\n      expectedFileSize:= magic[2] + (magic[3] shl 8) + (magic[4] shl 16) + (magic[5] shl 24);\n      if expectedFileSize = maxFileSize then inc(scores[ifBmp]);\n    end else\n    if (copy(magicAsText,1,2)='RL') then\n    begin\n      inc(scores[ifBmpMioMap]);\n      if (magic[2] in[0,1]) and (magic[3] = 0) then inc(scores[ifBmpMioMap]);\n    end;\n\n    if (magic[0] = $00) and (magic[1] = $00) and (magic[3] = $00) and\n      (magic[4] + (magic[5] shl 8) > 0) then\n    begin\n      if magic[2] = $01 then\n        inc(scores[ifIco])\n      else if magic[2] = $02 then\n        inc(scores[ifCur]);\n    end;\n\n    if (copy(magicAsText,1,4) = 'PDN3') then\n    begin\n      expectedFileSize:= 6 + (magic[4] + (magic[5] shl 8) + (magic[6] shl 16)) + 2;\n      if expectedFileSize <= maxFileSize then\n      begin\n        inc(scores[ifPaintDotNet]);\n        if magic[7] = $3c then inc(scores[ifPaintDotNet]);\n      end;\n    end;\n\n    if (copy(magicAsText,1,4) = 'oXo ') then\n    begin\n      inc(scores[ifPhoxo],1);\n      if (magic[4] = 1) and (magic[5] = 0) and (magic[6] = 0) and (magic[7] = 0) then\n        inc(scores[ifPhoxo],1);\n    end;\n\n    DetectLazPaint;\n\n    if (magic[0] = $50) and (magic[1] = $4b) and (magic[2] = $03) and (magic[3] = $04) then\n    begin\n      if DefaultBGRAImageReader[ifOpenRaster] = nil then inc(scores[ifOpenRaster]) else\n      with CreateBGRAImageReader(ifOpenRaster) do\n        try\n          AStream.Position := streamStartPos;\n          if CheckContents(AStream) then inc(scores[ifOpenRaster],2);\n        finally\n          Free;\n        end;\n    end;\n\n    if (copy(magicAsText,1,4) = '8BPS') and (magic[4] = $00) and (magic[5] = $01) then inc(scores[ifPsd],2);\n\n    DetectTarga;\n\n    if (copy(magicAsText,1,2)='II') and (magic[2] = 42) and (magic[3]=0) then inc(scores[ifTiff]) else\n    if (copy(magicAsText,1,2)='MM') and (magic[2] = 0) and (magic[3]=42) then inc(scores[ifTiff]);\n\n    if (copy(magicAsText,1,8) = '/* XPM *') or (copy(magicAsText,1,6) = '! XPM2') then inc(scores[ifXPixMap]);\n\n    if (copy(magicAsText,1,6) = '<?xml ') or (copy(magicAsText,1,5) = '<svg ') then inc(scores[ifSvg]);\n\n    if (length(magicAsText)>3) and (magicAsText[1]='P') and\n      (magicAsText[2] in['1'..'6']) and (magicAsText[3] = #10) then inc(scores[ifPortableAnyMap]);\n\n    if (copy(magicAsText,1,4) = 'RIFF') then\n    begin\n      AStream.Position:= streamStartPos+8;\n      setlength(moreMagic, 4);\n      if (AStream.Read(moreMagic[1],4) = 4)\n       and (moreMagic = 'WEBP') then\n        inc(scores[ifWebP], 2);\n    end;\n    if CompareMem(@magic[4], pansichar('ftyp'), 4) then  // maybe AVIF.\n    begin\n      AStream.Position:= streamStartPos+8;\n      setlength(moreMagic, 4);\n      if (AStream.Read(moreMagic[1],4) = 4) then\n      begin\n        if CompareMem(@moreMagic[1], pansichar('avif'), 4) then\n           inc(scores[ifAvif], 2)\n        else if CompareMem(@moreMagic[1], pansichar('avis'), 4) then\n           inc(scores[ifAvif], 2)\n        else if CompareMem(@moreMagic[1], pansichar('mif1'), 4) then\n           inc(scores[ifAvif], 2);\n        end;\n    end;\n\n    AStream.Position := streamStartPos;\n  end;\n\nvar\n  extFormat: TBGRAImageFormat;\n\nbegin\n  result := ifUnknown;\n  for imageFormat:= low(TBGRAImageFormat) to high(TBGRAImageFormat) do\n    scores[imageFormat] := 0;\n\n  ASuggestedExtensionUTF8:= UTF8LowerCase(ASuggestedExtensionUTF8);\n  if (ASuggestedExtensionUTF8 <> '') and (ASuggestedExtensionUTF8[1] <> '.') then //first UTF8 char is in first pos\n    ASuggestedExtensionUTF8 := '.'+ASuggestedExtensionUTF8;\n\n  extFormat:= SuggestImageFormat(ASuggestedExtensionUTF8);\n  if extFormat <> ifUnknown then inc(scores[extFormat]);\n\n  If AStream <> nil then DetectFromStream;\n\n  bestScore := 0;\n  bestImageFormat:= ifUnknown;\n  for imageFormat:=low(TBGRAImageFormat) to high(TBGRAImageFormat) do\n    if scores[imageFormat] > bestScore then\n    begin\n      bestScore:= scores[imageFormat];\n      bestImageFormat:= imageFormat;\n    end;\n  result := bestImageFormat;\nend;\n\nfunction SuggestImageFormat(AFilenameOrExtensionUTF8: string): TBGRAImageFormat;\nvar ext: string;\n  posDot: integer;\nbegin\n  result := ifUnknown;\n\n  ext := ExtractFileName(AFilenameOrExtensionUTF8);\n  posDot := LastDelimiter('.', ext);\n  if posDot <> 0 then ext := copy(ext,posDot,length(ext)-posDot+1)\n  else ext := '.'+ext;\n  ext := LowerCase(ext);\n\n  if (ext = '.jpg') or (ext = '.jpeg') then result := ifJpeg else\n  if (ext = '.png') or (ext = '.apng') then result := ifPng else\n  if (ext = '.gif') then result := ifGif else\n  if (ext = '.pcx') then result := ifPcx else\n  if (ext = '.bmp') then result := ifBmp else\n  if (ext = '.ico') then result := ifIco else\n  if (ext = '.cur') then result := ifCur else\n  if (ext = '.pdn') then result := ifPaintDotNet else\n  if (ext = '.lzp') then result := ifLazPaint else\n  if (ext = '.ora') then result := ifOpenRaster else\n  if (ext = '.psd') or (ext = '.pdd') then result := ifPsd else\n  if (ext = '.tga') then result := ifTarga else\n  if (ext = '.tif') or (ext = '.tiff') then result := ifTiff else\n  if (ext = '.xwd') then result := ifXwd else\n  if (ext = '.xpm') then result := ifXPixMap else\n  if (ext = '.oxo') then result := ifPhoxo else\n  if (ext = '.svg') then result := ifSvg else\n  if (ext = '.pbm') or (ext = '.pgm') or (ext = '.ppm') then result := ifPortableAnyMap else\n  if (ext = '.webp') then result := ifWebP else\n  if (ext = '.avif') then result := ifAvif;\n\nend;\n\nfunction SuggestImageExtension(AFormat: TBGRAImageFormat): string;\nbegin\n  case AFormat of\n    ifJpeg: result := 'jpg';\n    ifPng: result := 'png';\n    ifGif: result := 'gif';\n    ifBmp: result := 'bmp';\n    ifBmpMioMap: result := 'bmp';\n    ifIco: result := 'ico';\n    ifCur: result := 'ico';\n    ifPcx: result := 'pcx';\n    ifPaintDotNet: result := 'pdn';\n    ifLazPaint: result := 'lzp';\n    ifOpenRaster: result := 'ora';\n    ifPhoxo: result := 'oXo';\n    ifPsd: result := 'psd';\n    ifTarga: result := 'tga';\n    ifTiff: result := 'tif';\n    ifXwd: result := 'xwd';\n    ifXPixMap: result := 'xpm';\n    ifSvg: result := 'svg';\n    ifPortableAnyMap: result := 'ppm';\n    ifWebP: result := 'webp';\n    ifAvif: result := 'avif';\n    else result := '?';\n  end;\nend;\n\nfunction CreateBGRAImageReader(AFormat: TBGRAImageFormat): TFPCustomImageReader;\nbegin\n  if DefaultBGRAImageReader[AFormat] = nil then\n  begin\n    case AFormat of\n      ifUnknown: raise exception.Create('The image format is unknown.');\n      ifOpenRaster: raise exception.Create('You need to call BGRAOpenRaster.RegisterOpenRasterFormat to read this image.');\n      ifPaintDotNet: raise exception.Create('You need to call BGRAPaintNet.RegisterPaintNetFormat to read this image.');\n      ifSvg: raise exception.Create('You need to call BGRASVG.RegisterSvgFormat to read this image.');\n    else\n      raise exception.Create('The image reader is not registered for this image format.');\n    end;\n  end;\n  result := DefaultBGRAImageReader[AFormat].Create;\nend;\n\nfunction CreateBGRAImageWriter(AFormat: TBGRAImageFormat; AHasTransparentPixels: boolean): TFPCustomImageWriter;\nbegin\n  if DefaultBGRAImageWriter[AFormat] = nil then\n  begin\n    case AFormat of\n      ifUnknown: raise exception.Create('The image format is unknown');\n      ifOpenRaster: raise exception.Create('You need to call BGRAOpenRaster.RegisterOpenRasterFormat to write with this image format.');\n      ifPhoxo: raise exception.Create('You need to call BGRAPhoxo.RegisterPhoxoFormat to write with this image format.');\n    else\n      raise exception.Create('The image writer is not registered for this image format.');\n    end;\n  end;\n\n  if AFormat = ifPng then\n  begin\n    result := DefaultBGRAImageWriter[AFormat].Create;\n    if result is TBGRACustomWriterPNG then\n      TBGRACustomWriterPNG(result).UseAlpha := AHasTransparentPixels;\n  end else\n  if AFormat = ifBmp then\n  begin\n    result := DefaultBGRAImageWriter[AFormat].Create;\n    if AHasTransparentPixels then\n      TFPWriterBMP(result).BitsPerPixel := 32 else\n      TFPWriterBMP(result).BitsPerPixel := 24;\n  end else\n  if AFormat = ifXPixMap then\n  begin\n    result := TFPWriterXPM.Create;\n    TFPWriterXPM(result).ColorCharSize := 2;\n  end else\n    result := DefaultBGRAImageWriter[AFormat].Create;\nend;\n\nprocedure BGRARegisterImageFormat(AFormat: TBGRAImageFormat; const ATypeName: String; const AExtensions: String);\nbegin\n  BGRAImageFormat[AFormat].TypeName := ATypeName;\n  BGRAImageFormat[AFormat].Extensions := AExtensions;\nend;\n\nprocedure BGRARegisterImageReader(AFormat: TBGRAImageFormat; AReader: TFPCustomImageReaderClass;\n  AddFPCReader: Boolean);\nvar\n  typeName: String;\n\nbegin\n  DefaultBGRAImageReader[AFormat] := AReader;\n  typeName := BGRAImageFormat[AFormat].TypeName;\n\n  if AddFPCReader and (typeName <> '') and (BGRAImageFormat[AFormat].Extensions <> '') then\n  begin\n    if (ImageHandlers.ImageReader[typeName] <> nil)\n    then ImageHandlers.UnregisterImageHandlers(typeName, True, False);\n\n    ImageHandlers.RegisterImageReader(typeName, BGRAImageFormat[AFormat].Extensions, AReader);\n  end;\nend;\n\nprocedure BGRARegisterImageReader(AFormat: TBGRAImageFormat; AReader: TFPCustomImageReaderClass;\n  AddFPCReader: Boolean; const ATypeName: String; const AExtensions: String);\nbegin\n  BGRARegisterImageFormat(AFormat, ATypeName, AExtensions);\n  BGRARegisterImageReader(AFormat, AReader, AddFPCReader);\nend;\n\nprocedure BGRARegisterImageWriter(AFormat: TBGRAImageFormat; AWriter: TFPCustomImageWriterClass;\n  AddFPCWriter: Boolean);\nvar\n  typeName: String;\n\nbegin\n  DefaultBGRAImageWriter[AFormat] := AWriter;\n  typeName := BGRAImageFormat[AFormat].TypeName;\n\n  if addFPCWriter and (typeName <> '') and (BGRAImageFormat[AFormat].Extensions <> '') then\n  begin\n    if (ImageHandlers.ImageWriter[typeName] <> nil)\n    then ImageHandlers.UnregisterImageHandlers(typeName, False, True);\n\n    ImageHandlers.RegisterImageWriter(typeName, BGRAImageFormat[AFormat].Extensions, AWriter);\n  end;\nend;\n\nprocedure BGRARegisterImageWriter(AFormat: TBGRAImageFormat; AWriter: TFPCustomImageWriterClass;\n  AddFPCWriter: Boolean; const ATypeName: String; const AExtensions: String);\nbegin\n  BGRARegisterImageFormat(AFormat, ATypeName, AExtensions);\n  BGRARegisterImageWriter(AFormat, AWriter, AddFPCWriter);\nend;\n\nprocedure BGRARegisterImageHandlers(AFormat: TBGRAImageFormat;\n  AReader: TFPCustomImageReaderClass; AWriter: TFPCustomImageWriterClass;\n  AddFPCHandlers: Boolean; const ATypeName: String; const AExtensions: String);\nbegin\n  BGRARegisterImageFormat(AFormat, ATypeName, AExtensions);\n  BGRARegisterImageReader(AFormat, AReader, AddFPCHandlers);\n  BGRARegisterImageWriter(AFormat, AWriter, AddFPCHandlers);\nend;\n\nfunction BGRARegisteredImageReaderExtension: String;\nvar\n   iFormat: TBGRAImageFormat;\n\nbegin\n  Result:= '';\n  for iFormat:=ifJpeg to High(TBGRAImageFormat) do\n    if (DefaultBGRAImageReader[iFormat] <> nil)\n    then if (Result = '')\n         then Result:= '*'+ExtensionSeparator+BGRAImageFormat[iFormat].Extensions\n         else Result:= Result+';'+BGRAImageFormat[iFormat].Extensions;\n\n  Result:= StringReplace(Result, ';', ';*'+ExtensionSeparator, [rfReplaceAll]);\nend;\n\nfunction BGRARegisteredImageReaderExtension(AFormat: TBGRAImageFormat): String;\nbegin\n  Result:= '';\n  if (DefaultBGRAImageReader[AFormat] <> nil)\n  then Result:= StringReplace('*'+ExtensionSeparator+BGRAImageFormat[AFormat].Extensions,\n                              ';', ';*'+ExtensionSeparator, [rfReplaceAll]);\nend;\n\nfunction BGRARegisteredImageWriterExtension: String;\nvar\n   iFormat: TBGRAImageFormat;\n\nbegin\n  Result:= '';\n  for iFormat:=ifJpeg to High(TBGRAImageFormat) do\n    if (DefaultBGRAImageWriter[iFormat] <> nil)\n    then if (Result = '')\n         then Result:= '*'+ExtensionSeparator+BGRAImageFormat[iFormat].Extensions\n         else Result:= Result+';'+BGRAImageFormat[iFormat].Extensions;\n\n  Result:= StringReplace(Result, ';', ';*'+ExtensionSeparator, [rfReplaceAll]);\nend;\n\nfunction BGRARegisteredImageWriterExtension(AFormat: TBGRAImageFormat): String;\nbegin\n  Result:= '';\n  if (DefaultBGRAImageWriter[AFormat] <> nil)\n  then Result:= StringReplace('*'+ExtensionSeparator+BGRAImageFormat[AFormat].Extensions,\n                              ';', ';*'+ExtensionSeparator, [rfReplaceAll]);\nend;\n\nfunction ResourceFile(AFilename: string): string;\n{$IFDEF DARWIN}\nconst\n  PackagePathEnd = '.app/Contents/MacOS/';\n{$ENDIF}\nvar\n  binPath, nextToBinary, packageName, packagePath: String;\nbegin\n  binPath := ExtractFilePath(ParamStr(0));\n  if not FileExistsUTF8(AFilename) then\n  begin\n    nextToBinary := ConcatPaths([binPath, AFilename]);\n    {$IFDEF DARWIN}\n    if not FileExistsUTF8(nextToBinary) and binPath.EndsWith(PackagePathEnd) then\n    begin\n      packageName := copy(binPath, 1, length(binPath) - length(PackagePathEnd) + 4);\n      result := ConcatPaths([packageName, 'Contents', 'Resources', AFilename]);\n      if not FileExistsUTF8(result) then\n      begin\n        packagePath := copy(packageName, 1, packageName.LastIndexOf(PathDelim));\n        result := ConcatPaths([packagePath, AFilename]);\n      end;\n    end else\n    {$ENDIF}\n      result := nextToBinary;\n  end else\n    result := AFilename;\nend;\n\noperator =(const AGuid1, AGuid2: TGuid): boolean;\nbegin\n  result := CompareMem(@AGuid1, @AGuid2, sizeof(TGuid));\nend;\n\ntype\n  TResourceType = record\n    ext: string;\n    code: pchar;\n  end;\n\n{$IFNDEF BGRABITMAP_USE_LCL}{$IFDEF MSWINDOWS}\nconst\n  RT_BITMAP = MAKEINTRESOURCE(2);\n  RT_RCDATA = MAKEINTRESOURCE(10);\n  RT_GROUP_CURSOR = MAKEINTRESOURCE(12);\n  RT_GROUP_ICON = MAKEINTRESOURCE(14);\n  RT_HTML = MAKEINTRESOURCE(23);\n{$ENDIF}{$ENDIF}\n\nconst\n  ResourceTypes: array[1..7] of TResourceType =\n   ((ext: 'CUR'; code: RT_GROUP_CURSOR),\n    (ext: 'BMP'; code: RT_BITMAP),\n    (ext: 'ICO'; code: RT_GROUP_ICON),\n    (ext: 'DAT'; code: RT_RCDATA),\n    (ext: 'DATA'; code: RT_RCDATA),\n    (ext: 'HTM'; code: RT_HTML),\n    (ext: 'HTML'; code: RT_HTML));\n\n{ TBGRAResourceManager }\n\nfunction TBGRAResourceManager.GetWinResourceType(AExtension: string): pchar;\nvar\n  i: Integer;\nbegin\n  if (AExtension <> '') and (AExtension[1]='.') then delete(AExtension,1,1);\n  for i := low(ResourceTypes) to high(ResourceTypes) do\n    if AExtension = ResourceTypes[i].ext then\n      exit(ResourceTypes[i].code);\n\n  exit(RT_RCDATA);\nend;\n\nfunction TBGRAResourceManager.GetResourceStream(AFilename: string): TStream;\nvar\n  name,ext: RawByteString;\n  rt: PChar;\nbegin\n  ext := UpperCase(ExtractFileExt(AFilename));\n  name := ChangeFileExt(AFilename,'');\n  rt := GetWinResourceType(ext);\n\n  if (rt = RT_GROUP_CURSOR) or (rt = RT_GROUP_ICON) then\n    raise exception.Create('Not implemented');\n\n  result := TResourceStream.Create(HINSTANCE, name, rt);\nend;\n\nfunction TBGRAResourceManager.IsWinResource(AFilename: string): boolean;\nvar\n  name,ext: RawByteString;\n  rt: PChar;\nbegin\n  ext := UpperCase(ExtractFileExt(AFilename));\n  name := ChangeFileExt(AFilename,'');\n  rt := GetWinResourceType(ext);\n  result := FindResource(HINSTANCE, pchar(name), rt)<>0;\nend;\n\n{$IFDEF BGRABITMAP_USE_LCL}\ntype\n  { Resource manager handling Lazarus resources }\n  TLCLResourceManager = class(TBGRAResourceManager)\n  protected\n    function FindLazarusResource(AFilename: string): TLResource;\n  public\n    function GetResourceStream(AFilename: string): TStream; override;\n    function IsWinResource(AFilename: string): boolean; override;\n  end;\n\nfunction TLCLResourceManager.FindLazarusResource(AFilename: string): TLResource;\nvar\n  name,ext: RawByteString;\nbegin\n  ext := UpperCase(ExtractFileExt(AFilename));\n  if (ext<>'') and (ext[1]='.') then Delete(ext,1,1);\n  name := ChangeFileExt(AFilename,'');\n  if ext<>'' then\n    result := LazarusResources.Find(name,ext)\n  else\n    result := LazarusResources.Find(name);\nend;\n\nfunction TLCLResourceManager.GetResourceStream(AFilename: string): TStream;\nvar\n  res: TLResource;\nbegin\n  res := FindLazarusResource(AFilename);\n  if Assigned(res) then\n    result := TLazarusResourceStream.CreateFromHandle(res)\n  else\n    result := inherited GetResourceStream(AFilename);\nend;\n\nfunction TLCLResourceManager.IsWinResource(AFilename: string): boolean;\nbegin\n  if FindLazarusResource(AFilename)<>nil then\n    result := false\n  else\n    Result:=inherited IsWinResource(AFilename);\nend;\n\n{$ENDIF}\n\ninitialization\n\n  {$DEFINE INCLUDE_INIT}\n  {$I bgrapixel.inc}\n\n  {$DEFINE INCLUDE_INIT}\n  {$I csscolorconst.inc}\n\n  fqFineClearType := @GetFineClearTypeAuto;\n\n  {$IFNDEF BGRABITMAP_CORE}\n  BGRARegisterImageWriter(ifTarga, TFPWriterTarga, false, 'TARGA Format', 'tga');\n  BGRARegisterImageWriter(ifXPixMap, TFPWriterXPM, false, 'XPM Format', 'xpm');\n  BGRARegisterImageHandlers(ifPortableAnyMap, TFPReaderPNM, TFPWriterPNM,\n    False, 'Netpbm Portable aNyMap', 'pnm;pbm;pgm;ppm');\n  BGRARegisterImageReader(ifXwd, TFPReaderXWD, false, 'XWD Format', 'xwd');\n\n  //the other readers/writers are registered by their unit\n  {$ENDIF}\n\n  {$IFDEF BGRABITMAP_USE_LCL}\n  BGRAResource := TLCLResourceManager.Create;\n  {$ELSE}\n  BGRAResource := TBGRAResourceManager.Create;\n  {$ENDIF}\n\nfinalization\n\n  {$DEFINE INCLUDE_FINAL}\n  {$I csscolorconst.inc}\n\n  {$DEFINE INCLUDE_FINAL}\n  {$I bgrapixel.inc}\n\n  BGRAResource.Free;\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrablend.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Pixel blending functions for 32-bit BGRA/RGBA.)\n\n  Pixel functions take a destination adress as parameter\n  and draw pixels at this address with different blending modes.\n  These functions are used by many functions/classes in BGRABitmap library. }\nunit BGRABlend;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRABitmapTypes;\n\n{ Brush providers }\n\nprocedure BGRASolidBrushIndirect(out ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode = dmDrawWithTransparency);\nprocedure BGRAScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                           AOffsetX: integer = 0; AOffsetY: integer = 0);\nprocedure BGRAMaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; AOffsetX: integer = 0; AOffsetY: integer = 0);\nprocedure BGRAEraseBrush(out ABrush: TUniversalBrush; AAlpha: Word);\nprocedure BGRAAlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word);\n\n{ Draw one pixel with alpha blending }\nprocedure DrawPixelInlineWithAlphaCheck(dest: PBGRAPixel; const c: TBGRAPixel); inline; overload;\nprocedure DrawPixelInlineWithAlphaCheck(dest: PBGRAPixel; c: TBGRAPixel; appliedOpacity: byte); inline; overload;\nprocedure DrawExpandedPixelInlineWithAlphaCheck(dest: PBGRAPixel; const ec: TExpandedPixel); inline; overload;\nprocedure DrawPixelInlineExpandedOrNotWithAlphaCheck(dest: PBGRAPixel; const ec: TExpandedPixel; c: TBGRAPixel); inline; overload;  //alpha in 'c' parameter\nprocedure DrawPixelInlineNoAlphaCheck(dest: PBGRAPixel; const c: TBGRAPixel); inline; overload;\nprocedure DrawExpandedPixelInlineNoAlphaCheck(dest: PBGRAPixel; const ec: TExpandedPixel; calpha: byte); inline; overload;\nprocedure ClearTypeDrawPixel(pdest: PBGRAPixel; Cr, Cg, Cb: byte; Color: TBGRAPixel); inline;\nprocedure InterpolateBilinear(pUpLeft,pUpRight,pDownLeft,pDownRight: PBGRAPixel;\n                iFactX,iFactY: Integer; ADest: PBGRAPixel);\nprocedure InterpolateBilinearMask(pUpLeft,pUpRight,pDownLeft,pDownRight: PByteMask;\n                iFactX,iFactY: Integer; ADest: PByteMask);\n\nprocedure CopyPixelsWithOpacity(dest,src: PBGRAPixel; opacity: byte; Count: integer); inline;\nfunction ApplyOpacity(opacity1,opacity2: byte): byte; inline;\nfunction FastRoundDiv255(value: LongWord): LongWord; inline;\n\n{ Draw a series of pixels with alpha blending }\nprocedure PutPixels(pdest: PBGRAPixel; psource: PBGRAPixel; copycount: integer; mode: TDrawMode; AOpacity:byte);\nprocedure DrawPixelsInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer); inline; overload;\nprocedure DrawExpandedPixelsInline(dest: PBGRAPixel; ec: TExpandedPixel; Count: integer); inline; overload;\nprocedure DrawPixelsInlineExpandedOrNot(dest: PBGRAPixel; ec: TExpandedPixel; c: TBGRAPixel; Count: integer); inline; overload;  //alpha in 'c' parameter\n\n{ Draw one pixel with linear alpha blending }\nprocedure FastBlendPixelInline(dest: PBGRAPixel; const c: TBGRAPixel); inline; overload;\nprocedure FastBlendPixelInline(dest: PBGRAPixel; c: TBGRAPixel; appliedOpacity: byte); inline; overload;\n\n{ Draw a series of pixels with linear alpha blending }\nprocedure FastBlendPixelsInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer); inline;\n\n{ Replace a series of pixels }\nprocedure FillInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer); inline;\n\n{ Xor a series of pixels }\nprocedure XorInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer); inline;\nprocedure XorPixels(pdest, psrc: PBGRAPixel; count: integer);\n\n{ Set alpha value for a series of pixels }\nprocedure AlphaFillInline(dest: PBGRAPixel; alpha: byte; Count: integer); inline;\n\n{ Erase a series of pixels, i.e. decrease alpha value }\nprocedure ErasePixelInline(dest: PBGRAPixel; alpha: byte); inline;\n\n{ Draw a pixel to the extent the current pixel is close enough to compare value.\n  It should not be called on pixels that have not been checked to be close enough }\nprocedure DrawPixelInlineDiff(dest: PBGRAPixel; c, compare: TBGRAPixel;\n  maxDiff: byte); inline;\n{ Draw a series of pixel to the extent the current pixel is close enough to compare value }\nprocedure DrawPixelsInlineDiff(dest: PBGRAPixel; c: TBGRAPixel;\n  Count: integer; compare: TBGRAPixel; maxDiff: byte); inline;\n\n{ Blend pixels with scanner content }\nprocedure ScannerPutPixels(scan: IBGRAScanner; pdest: PBGRAPixel; count: integer; mode: TDrawMode);\n\n{ Perform advanced blending operation }\nprocedure BlendPixels(pdest: PBGRAPixel; psrc: PBGRAPixel;\n  blendOp: TBlendOperation; Count: integer; excludeChannels: TChannels = []);\n\n{ Perform blending operation and merge over destination }\nprocedure BlendPixelsOver(pdest: PBGRAPixel; psrc: PBGRAPixel;\n  blendOp: TBlendOperation; Count: integer; opacity: byte; linearBlend: boolean = false;\n  excludeChannels: TChannels = []);\n\n//layer blend modes\n//- http://www.pegtop.net/delphi/articles/blendmodes/\n//- http://www.w3.org/TR/2009/WD-SVGCompositing-20090430/#comp-op\n//- http://docs.gimp.org/en/gimp-concepts-layer-modes.html\nprocedure LinearMultiplyPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure AddPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearAddPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure ColorBurnPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure ColorDodgePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure DividePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure ReflectPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure NonLinearReflectPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure GlowPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure NiceGlowPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure OverlayPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearOverlayPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure DifferencePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearDifferencePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure ExclusionPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearExclusionPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearSubtractPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearSubtractInversePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure SubtractPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure SubtractInversePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure NegationPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearNegationPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LightenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure DarkenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure ScreenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure SoftLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure SvgSoftLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure HardLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure BlendXorPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure BlendMaskPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearMultiplySaturationInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearHueInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearColorInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearLightnessInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure LinearSaturationInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure CorrectedHueInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure CorrectedColorInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure CorrectedLightnessInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure CorrectedSaturationInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nprocedure BGRAFillClearTypeMask(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner; RGBOrder: boolean);\nprocedure BGRAFillClearTypeRGBMask(dest: TBGRACustomBitmap; x, y: integer;\n  mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner;\n  KeepRGBOrder: boolean);\nprocedure BGRAFillClearTypeMaskPtr(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; maskData: PByte; maskPixelSize: Int32or64; maskRowSize: Int32or64; maskWidth,maskHeight: integer; color: TBGRAPixel; texture: IBGRAScanner; RGBOrder: boolean);\n\nimplementation\n\ntype\n  PBGRASolidBrushFixedData = ^TBGRASolidBrushFixedData;\n  TBGRASolidBrushFixedData = record\n    BGRA: TBGRAPixel;\n    Expanded: TExpandedPixel;\n  end;\n\nprocedure BGRASolidBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PBGRAPixel;\n  bAlpha: Byte;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PBGRAPixel(AContextData^.Dest);\n  if AAlpha >= $ff7f then\n  begin\n    FillDWord(pDest^, ACount, PLongWord(@PBGRASolidBrushFixedData(AFixedData)^.BGRA)^);\n    inc(pDest, ACount);\n  end else\n  begin\n    with PBGRASolidBrushFixedData(AFixedData)^ do\n    begin\n      if BGRA.alpha = 255 then\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          DrawExpandedPixelInlineNoAlphaCheck(pDest, Expanded, bAlpha);\n          inc(pDest);\n          dec(ACount);\n        end;\n      end\n      else\n      begin\n        while ACount > 0 do\n        begin\n          pDest^ := GammaCompression(MergeBGRA(GammaExpansion(pDest^), not AAlpha, Expanded, AAlpha));\n          inc(pDest);\n          dec(ACount);\n        end;\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRASolidBrushSkipPixels({%H-}AFixedData: Pointer;\n  AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PBGRAPixel(AContextData^.Dest), ACount);\nend;\n\nprocedure BGRASolidBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: byte;\n  pDest: PBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  with PBGRASolidBrushFixedData(AFixedData)^ do\n  begin\n    pDest := PBGRAPixel(AContextData^.Dest);\n    bAlpha := FastRoundDiv257(Expanded.alpha*AAlpha shr 16);\n    if bAlpha = 255 then\n    begin\n      FillDWord(pDest^, ACount, PLongWord(@BGRA)^);\n      inc(pDest, ACount);\n    end else\n    begin\n      while ACount > 0 do\n      begin\n        DrawExpandedPixelInlineNoAlphaCheck(pDest, Expanded, bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n    PBGRAPixel(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure BGRASolidBrushLinearDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  c: TBGRAPixel;\n  pDest: PBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  with PBGRASolidBrushFixedData(AFixedData)^ do\n  begin\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      while ACount > 0 do\n      begin\n        FastBlendPixelInline(pDest, BGRA);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end else\n    begin\n      c := BGRA;\n      c.alpha := FastRoundDiv257(c.alpha*AAlpha shr 8);\n      while ACount > 0 do\n      begin\n        FastBlendPixelInline(pDest, c);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n    PBGRAPixel(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure BGRASolidBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  c: TBGRAPixel;\n  pDest: PBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  with PBGRASolidBrushFixedData(AFixedData)^ do\n  begin\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      while ACount > 0 do\n      begin\n        PLongWord(pdest)^ := PLongWord(pdest)^ xor PLongWord(@BGRA)^;\n        inc(pDest);\n        dec(ACount);\n      end;\n    end else\n    begin\n      while ACount > 0 do\n      begin\n        PLongWord(@c)^ := PLongWord(pdest)^ xor PLongWord(@BGRA)^;\n        pDest^ := MergeBGRA(pDest^, not AAlpha, c, AAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n    PBGRAPixel(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure BGRASolidBrushIndirect(out ABrush: TUniversalBrush; AColor: Pointer;\n  ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace:= TBGRAPixelColorspace;\n  with PBGRASolidBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    BGRA := PBGRAPixel(AColor)^;\n    if not (ADrawMode in[dmLinearBlend,dmXor]) then\n      Expanded := GammaExpansion(BGRA);\n  end;\n  ABrush.InternalInitContext:= nil;\n  case ADrawMode of\n    dmSet: ABrush.InternalPutNextPixels:= @BGRASolidBrushSetPixels;\n\n    dmSetExceptTransparent: if PBGRAPixel(AColor)^.alpha <> 255 then\n      begin\n        ABrush.InternalPutNextPixels:= @BGRASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end else ABrush.InternalPutNextPixels:= @BGRASolidBrushSetPixels;\n\n    dmDrawWithTransparency: if PBGRAPixel(AColor)^.alpha = 0 then\n      begin\n        ABrush.InternalPutNextPixels:= @BGRASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end else ABrush.InternalPutNextPixels:= @BGRASolidBrushDrawPixels;\n\n    dmLinearBlend: if PBGRAPixel(AColor)^.alpha = 0 then\n      begin\n        ABrush.InternalPutNextPixels:= @BGRASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end\n        else ABrush.InternalPutNextPixels:= @BGRASolidBrushLinearDrawPixels;\n\n    dmXor: if PLongWord(AColor)^ = 0 then\n      begin\n        ABrush.InternalPutNextPixels:= @BGRASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end else ABrush.InternalPutNextPixels:= @BGRASolidBrushXorPixels;\n  end;\n\nend;\n\ntype\n  PBGRAScannerBrushFixedData = ^TBGRAScannerBrushFixedData;\n  TBGRAScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    case boolean of\n    true: (HasPutPixels: boolean);           //BGRA\n    false: (Conversion: TBridgedConversion); //other\n  end;\n\nprocedure BRGBAScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure BGRAScannerBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: Byte;\n  pDest: PBGRAPixel;\n  buf: packed array[0..3] of TBGRAPixel;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      if HasPutPixels then\n      begin\n        IBGRAScanner(Scanner).ScanPutPixels(pDest, ACount, dmSet);\n        inc(pDest, ACount);\n      end else\n        while ACount > 0 do\n        begin\n          pDest^ := IBGRAScanner(Scanner).ScanNextPixel;\n          inc(pDest);\n          dec(ACount);\n        end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      if HasPutPixels then\n      begin\n        while ACount > 3 do\n        begin\n          IBGRAScanner(Scanner).ScanPutPixels({%H-}buf, 4, dmSet);\n          pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, buf[0], bAlpha);\n          (pDest+1)^ := MergeBGRAWithGammaCorrection((pDest+1)^, not bAlpha, buf[1], bAlpha);\n          (pDest+2)^ := MergeBGRAWithGammaCorrection((pDest+2)^, not bAlpha, buf[2], bAlpha);\n          (pDest+3)^ := MergeBGRAWithGammaCorrection((pDest+3)^, not bAlpha, buf[3], bAlpha);\n          inc(pDest, 4);\n          dec(ACount, 4);\n        end;\n      end;\n      while ACount > 0 do\n      begin\n        pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, IBGRAScanner(Scanner).ScanNextPixel, bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pBuf,pDest: PBGRAPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TBGRAPixel;\n  bAlpha: Byte;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n    end else\n    begin\n      pDest := PBGRAPixel(AContextData^.Dest);\n      pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n      if AAlpha >= $ff7f then\n      begin\n        while ACount > 0 do\n        begin\n          qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, pDest, qty, pixSize, sizeof(TBGRAPixel), nil);\n          inc(pDest, qty);\n          dec(ACount, qty);\n        end;\n      end else\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, pBuf^, bAlpha);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end;\n      AContextData^.Dest := pDest;\n    end;\n  end;\nend;\n\nprocedure BGRAScannerBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: Byte;\n  pDest: PBGRAPixel;\n  buf: packed array[0..3] of TBGRAPixel;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      if HasPutPixels then\n      begin\n        IBGRAScanner(Scanner).ScanPutPixels(pDest, ACount, dmSetExceptTransparent);\n        inc(pDest, ACount);\n      end else\n        while ACount > 0 do\n        begin\n          buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n          if buf[0].alpha = 255 then pDest^ := buf[0];\n          inc(pDest);\n          dec(ACount);\n        end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      if HasPutPixels then\n      begin\n        while ACount > 3 do\n        begin\n          IBGRAScanner(Scanner).ScanPutPixels({%H-}buf, 4, dmSet);\n          if buf[0].alpha = 255 then pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, buf[0], bAlpha);\n          if buf[1].alpha = 255 then (pDest+1)^ := MergeBGRAWithGammaCorrection((pDest+1)^, not bAlpha, buf[1], bAlpha);\n          if buf[2].alpha = 255 then (pDest+2)^ := MergeBGRAWithGammaCorrection((pDest+2)^, not bAlpha, buf[2], bAlpha);\n          if buf[3].alpha = 255 then (pDest+3)^ := MergeBGRAWithGammaCorrection((pDest+3)^, not bAlpha, buf[3], bAlpha);\n          inc(pDest, 4);\n          dec(ACount, 4);\n        end;\n      end;\n      while ACount > 0 do\n      begin\n        buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n        if buf[0].alpha = 255 then\n          pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, buf[0], bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAScannerConvertBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pBuf,pDest: PBGRAPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TBGRAPixel;\n  bAlpha: Byte;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n    end else\n    begin\n      pDest := PBGRAPixel(AContextData^.Dest);\n      pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n      if AAlpha >= $ff7f then\n      begin\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            if pBuf^.alpha = 255 then pDest^ := pBuf^;\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end else\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            if pBuf^.alpha = 255 then\n              pDest^ := MergeBGRAWithGammaCorrection(pDest^, not bAlpha, pBuf^, bAlpha);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end;\n      AContextData^.Dest := pDest;\n    end;\n  end;\nend;\n\nprocedure BGRAScannerBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: Byte;\n  pDest: PBGRAPixel;\n  buf: packed array[0..3] of TBGRAPixel;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      if HasPutPixels then\n      begin\n        IBGRAScanner(Scanner).ScanPutPixels(pDest, ACount, dmDrawWithTransparency);\n        inc(pDest, ACount);\n      end else\n        while ACount > 0 do\n        begin\n          buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n          DrawPixelInlineWithAlphaCheck(pDest, buf[0]);\n          inc(pDest);\n          dec(ACount);\n        end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      if HasPutPixels then\n      begin\n        while ACount > 3 do\n        begin\n          IBGRAScanner(Scanner).ScanPutPixels({%H-}buf, 4, dmSet);\n          DrawPixelInlineWithAlphaCheck(pDest, buf[0], bAlpha);\n          DrawPixelInlineWithAlphaCheck(pDest+1, buf[1], bAlpha);\n          DrawPixelInlineWithAlphaCheck(pDest+2, buf[2], bAlpha);\n          DrawPixelInlineWithAlphaCheck(pDest+3, buf[3], bAlpha);\n          inc(pDest, 4);\n          dec(ACount, 4);\n        end;\n      end;\n      while ACount > 0 do\n      begin\n        buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n        DrawPixelInlineWithAlphaCheck(pDest, buf[0], bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAScannerConvertBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pBuf,pDest: PBGRAPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TBGRAPixel;\n  bAlpha: Byte;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n    end else\n    begin\n      pDest := PBGRAPixel(AContextData^.Dest);\n      pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n      if AAlpha >= $ff7f then\n      begin\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pDest, pBuf^);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end else\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pDest, pBuf^, bAlpha);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end;\n      AContextData^.Dest := pDest;\n    end;\n  end;\nend;\n\nprocedure BGRAScannerBrushLinearDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: Byte;\n  pDest: PBGRAPixel;\n  buf: packed array[0..3] of TBGRAPixel;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      if HasPutPixels then\n      begin\n        IBGRAScanner(Scanner).ScanPutPixels(pDest, ACount, dmLinearBlend);\n        inc(pDest, ACount);\n      end else\n        while ACount > 0 do\n        begin\n          buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n          FastBlendPixelInline(pDest, buf[0]);\n          inc(pDest);\n          dec(ACount);\n        end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      if HasPutPixels then\n      begin\n        while ACount > 3 do\n        begin\n          IBGRAScanner(Scanner).ScanPutPixels({%H-}buf, 4, dmSet);\n          FastBlendPixelInline(pDest, buf[0], bAlpha);\n          FastBlendPixelInline(pDest+1, buf[1], bAlpha);\n          FastBlendPixelInline(pDest+2, buf[2], bAlpha);\n          FastBlendPixelInline(pDest+3, buf[3], bAlpha);\n          inc(pDest, 4);\n          dec(ACount, 4);\n        end;\n      end;\n      while ACount > 0 do\n      begin\n        buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n        FastBlendPixelInline(pDest, buf[0], bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAScannerConvertBrushLinearDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pBuf,pDest: PBGRAPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TBGRAPixel;\n  bAlpha: Byte;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n    end else\n    begin\n      pDest := PBGRAPixel(AContextData^.Dest);\n      pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n      if AAlpha >= $ff7f then\n      begin\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            FastBlendPixelInline(pDest, pBuf^);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end else\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            FastBlendPixelInline(pDest, pBuf^, bAlpha);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end;\n      AContextData^.Dest := pDest;\n    end;\n  end;\nend;\n\nprocedure BGRAScannerBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: byte;\n  pDest: PBGRAPixel;\n  buf: packed array[0..3] of TBGRAPixel;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      if HasPutPixels then\n      begin\n        IBGRAScanner(Scanner).ScanPutPixels(pDest, ACount, dmXor);\n        inc(pDest, ACount);\n      end else\n        while ACount > 0 do\n        begin\n          buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n          PLongWord(pdest)^ := PLongWord(pdest)^ xor PLongWord(@buf[0])^;\n          inc(pDest);\n          dec(ACount);\n        end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      if HasPutPixels then\n      begin\n        while ACount > 3 do\n        begin\n          IBGRAScanner(Scanner).ScanPutPixels({%H-}buf, 4, dmSet);\n          PLongWord(@buf[0])^ := PLongWord(pdest)^ xor PLongWord(@buf[0])^;\n          PLongWord(@buf[1])^ := PLongWord(pdest+1)^ xor PLongWord(@buf[1])^;\n          PLongWord(@buf[2])^ := PLongWord(pdest+2)^ xor PLongWord(@buf[2])^;\n          PLongWord(@buf[3])^ := PLongWord(pdest+3)^ xor PLongWord(@buf[3])^;\n          pDest^ := MergeBGRA(pDest^, not bAlpha, buf[0], bAlpha);\n          (pDest+1)^ := MergeBGRA((pDest+1)^, not bAlpha, buf[1], bAlpha);\n          (pDest+2)^ := MergeBGRA((pDest+2)^, not bAlpha, buf[2], bAlpha);\n          (pDest+3)^ := MergeBGRA((pDest+3)^, not bAlpha, buf[3], bAlpha);\n          inc(pDest, 4);\n          dec(ACount, 4);\n        end;\n      end;\n      while ACount > 0 do\n      begin\n        buf[0] := IBGRAScanner(Scanner).ScanNextPixel;\n        PLongWord(@buf[0])^ := PLongWord(pdest)^ xor PLongWord(@buf[0])^;\n        pDest^ := MergeBGRA(pDest^, not bAlpha, buf[0], bAlpha);\n        inc(pDest);\n        dec(ACount);\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAScannerConvertBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pBuf,pDest: PBGRAPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TBGRAPixel;\n  bAlpha: Byte;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n    end else\n    begin\n      pDest := PBGRAPixel(AContextData^.Dest);\n      pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n      if AAlpha >= $ff7f then\n      begin\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            PLongWord(pDest)^ := PLongWord(pDest)^ xor PLongWord(pBuf)^;\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end else\n      begin\n        bAlpha := FastRoundDiv257(AAlpha);\n        while ACount > 0 do\n        begin\n          if ACount > length(buf) then qty := length(buf) else qty := ACount;\n          IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n          Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TBGRAPixel), nil);\n          pBuf := @buf;\n          dec(ACount, qty);\n          while qty > 0 do\n          begin\n            PLongWord(pBuf)^ := PLongWord(pDest)^ xor PLongWord(pBuf)^;\n            pDest^ := MergeBGRA(pDest^, not bAlpha, pBuf^, bAlpha);\n            inc(pDest);\n            inc(pBuf);\n            dec(qty);\n          end;\n        end;\n      end;\n      AContextData^.Dest := pDest;\n    end;\n  end;\nend;\n\nprocedure BGRAScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n  ADrawMode: TDrawMode; AOffsetX: integer = 0; AOffsetY: integer = 0);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TBGRAPixelColorspace;\n  with PBGRAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    HasPutPixels:= AScanner.IsScanPutPixelsDefined;\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @BRGBAScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if (AScanner.IsScanPutPixelsDefined) or (sourceSpace = TBGRAPixelColorspace)\n    or (sourceSpace = TExpandedPixelColorspace) then\n  begin\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @BGRAScannerBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @BGRAScannerBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency: ABrush.InternalPutNextPixels:= @BGRAScannerBrushDrawPixels;\n      dmLinearBlend: ABrush.InternalPutNextPixels:= @BGRAScannerBrushLinearDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @BGRAScannerBrushXorPixels;\n    end;\n  end else\n  begin\n    with PBGRAScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TBGRAPixelColorspace);\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @BGRAScannerConvertBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @BGRAScannerConvertBrushSetPixelsExceptTransparent;\n      dmLinearBlend: ABrush.InternalPutNextPixels:= @BGRAScannerConvertBrushLinearDrawPixels;\n      dmDrawWithTransparency: ABrush.InternalPutNextPixels:= @BGRAScannerConvertBrushDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @BGRAScannerConvertBrushXorPixels;\n    end;\n  end;\nend;\n\nprocedure BGRASolidBrushErasePixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: byte;\n  pDest: PBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PBGRAPixel(AContextData^.Dest);\n  bAlpha := PByte(AFixedData)^ * AAlpha shr 16;\n  while ACount > 0 do\n  begin\n    ErasePixelInline(pDest, bAlpha);\n    inc(pDest);\n    dec(ACount);\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  bAlpha: Byte;\n  pDest: PBGRAPixel;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\nbegin\n  with PBGRAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha <= $80 then\n    begin\n      inc(PBGRAPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PBGRAPixel(AContextData^.Dest);\n    if AAlpha >= $ff7f then\n    begin\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.alpha := ApplyOpacity(pDest^.alpha, pMask^.gray);\n          if pDest^.alpha = 0 then pDest^ := BGRAPixelTransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end else\n    begin\n      bAlpha := FastRoundDiv257(AAlpha);\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.alpha := ApplyOpacity(pDest^.alpha, ApplyOpacity(pMask^.gray, bAlpha));\n          if pDest^.alpha = 0 then pDest^ := BGRAPixelTransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAMaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n  AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TBGRAPixelColorspace;\n  with PBGRAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @BRGBAScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @BGRAMaskBrushApply;\nend;\n\nprocedure BGRAEraseBrush(out ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  bAlpha: Byte;\nbegin\n  if AAlpha >= $ff7f then\n    BGRASolidBrushIndirect(ABrush, @BGRAPixelTransparent, dmSet)\n  else\n  begin\n    ABrush.Colorspace:= TBGRAPixelColorspace;\n    bAlpha := FastRoundDiv257(AAlpha);\n    PByte(@ABrush.FixedData)^ := bAlpha;\n    ABrush.InternalInitContext:= nil;\n    if bAlpha = 0 then\n      ABrush.InternalPutNextPixels:= @BGRASolidBrushSkipPixels\n    else\n      ABrush.InternalPutNextPixels:= @BGRASolidBrushErasePixels;\n  end;\nend;\n\nprocedure BGRASolidBrushAlphaPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  alphaAdd: Word;\n  pDest: PBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end else\n  if AAlpha >= $ff7f then\n  begin\n    AlphaFillInline(PBGRAPixel(AContextData^.Dest), PByte(AFixedData)^, ACount);\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n  end else\n  begin\n    pDest := PBGRAPixel(AContextData^.Dest);\n    alphaAdd := PByte(AFixedData)^*AAlpha;\n    while ACount > 0 do\n    begin\n      pDest^.alpha := (pDest^.alpha*(not AAlpha) + alphaAdd) shr 16;\n      inc(pDest);\n      dec(ACount);\n    end;\n    PBGRAPixel(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure BGRAAlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  bAlpha: Byte;\nbegin\n  if AAlpha <= $80 then\n    BGRASolidBrushIndirect(ABrush, @BGRAPixelTransparent, dmSet)\n  else\n  begin\n    ABrush.Colorspace:= TBGRAPixelColorspace;\n    bAlpha := FastRoundDiv257(AAlpha);\n    PByte(@ABrush.FixedData)^ := bAlpha;\n    ABrush.InternalInitContext:= nil;\n    ABrush.InternalPutNextPixels:= @BGRASolidBrushAlphaPixels;\n  end;\nend;\n\nprocedure BGRAFillClearTypeMaskPtr(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; maskData: PByte; maskPixelSize: Int32or64; maskRowSize: Int32or64; maskWidth,maskHeight: integer; color: TBGRAPixel; texture: IBGRAScanner; RGBOrder: boolean);\nvar\n  pdest: PBGRAPixel;\n  ClearTypePixel: array[0..2] of byte;\n  curThird: integer;\n\n  procedure OutputPixel; inline;\n  begin\n    if texture <> nil then\n      color := texture.ScanNextPixel;\n    if RGBOrder then\n      ClearTypeDrawPixel(pdest, ClearTypePixel[0],ClearTypePixel[1],ClearTypePixel[2], color)\n    else\n      ClearTypeDrawPixel(pdest, ClearTypePixel[2],ClearTypePixel[1],ClearTypePixel[0], color);\n  end;\n\n  procedure NextAlpha(alphaValue: byte); inline;\n  begin\n    ClearTypePixel[curThird] := alphaValue;\n    inc(curThird);\n    if curThird = 3 then\n    begin\n      OutputPixel;\n      curThird := 0;\n      Fillchar(ClearTypePixel, sizeof(ClearTypePixel),0);\n      inc(pdest);\n    end;\n  end;\n\n  procedure EndRow; inline;\n  begin\n    if curThird > 0 then OutputPixel;\n  end;\n\nvar\n  yMask,n: integer;\n  a: byte;\n  pmask: PByte;\n  dx:integer;\n  miny,maxy,minx,minxThird,maxx,alphaMinX,alphaMaxX,alphaLineLen: integer;\n  leftOnSide, rightOnSide: boolean;\n  countBetween: integer;\n  v1,v2,v3: byte;\n\n  procedure StartRow; inline;\n  begin\n    pdest := dest.Scanline[yMask+y]+minx;\n    if texture <> nil then\n      texture.ScanMoveTo(minx,yMask+y);\n\n    curThird := minxThird;\n    ClearTypePixel[0] := 0;\n    ClearTypePixel[1] := 0;\n    ClearTypePixel[2] := 0;\n  end;\n\nbegin\n  alphaLineLen := maskWidth+2;\n\n  dec(xThird); //for first subpixel\n\n  if xThird >= 0 then dx := xThird div 3\n   else dx := -((-xThird+2) div 3);\n  inc(x, dx);\n  dec(xThird, dx*3);\n\n  if y >= dest.ClipRect.Top then miny := 0\n    else miny := dest.ClipRect.Top-y;\n  if y+maskHeight-1 < dest.ClipRect.Bottom then\n    maxy := maskHeight-1 else\n      maxy := dest.ClipRect.Bottom-1-y;\n\n  if x >= dest.ClipRect.Left then\n  begin\n    minx := x;\n    minxThird := xThird;\n    alphaMinX := 0;\n    leftOnSide := false;\n  end else\n  begin\n    minx := dest.ClipRect.Left;\n    minxThird := 0;\n    alphaMinX := (dest.ClipRect.Left-x)*3 - xThird;\n    leftOnSide := true;\n  end;\n\n  if x*3+xThird+maskWidth-1 < dest.ClipRect.Right*3 then\n  begin\n    maxx := (x*3+xThird+maskWidth-1) div 3;\n    alphaMaxX := alphaLineLen-1;\n    rightOnSide := false;\n  end else\n  begin\n    maxx := dest.ClipRect.Right-1;\n    alphaMaxX := maxx*3+2 - (x*3+xThird);\n    rightOnSide := true;\n  end;\n\n  countBetween := alphaMaxX-alphaMinX-1;\n\n  if (alphaMinX <= alphaMaxX) then\n  begin\n    for yMask := miny to maxy do\n    begin\n      StartRow;\n\n      if leftOnSide then\n      begin\n        pmask := maskData + (yMask*maskRowSize)+ (alphaMinX-1)*maskPixelSize;\n        a := pmask^ div 3;\n        v1 := a+a;\n        v2 := a;\n        v3 := 0;\n        inc(pmask, maskPixelSize);\n      end else\n      begin\n        pmask := maskData + (yMask*maskRowSize);\n        v1 := 0;\n        v2 := 0;\n        v3 := 0;\n      end;\n\n      for n := countBetween-1 downto 0 do\n      begin\n        a := pmask^ div 3;\n        inc(v1, a);\n        inc(v2, a);\n        inc(v3, a);\n        inc(pmask, maskPixelSize);\n\n        NextAlpha(v1);\n        v1 := v2;\n        v2 := v3;\n        v3 := 0;\n      end;\n\n      if rightOnSide then\n      begin\n        a := pmask^ div 3;\n        inc(v1, a);\n        inc(v2, a+a);\n      end;\n\n      NextAlpha(v1);\n      NextAlpha(v2);\n\n      EndRow;\n    end;\n  end;\nend;\n\nprocedure BGRAFillClearTypeMask(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner; RGBOrder: boolean);\nvar delta: Int32or64;\nbegin\n  delta := mask.Width*sizeof(TBGRAPixel);\n  if mask.LineOrder = riloBottomToTop then\n    delta := -delta;\n  BGRAFillClearTypeMaskPtr(dest,x,y,xThird,pbyte(mask.ScanLine[0])+1,sizeof(TBGRAPixel),delta,mask.Width,mask.Height,color,texture,RGBOrder);\nend;\n\nprocedure BGRAFillClearTypeRGBMask(dest: TBGRACustomBitmap; x, y: integer;\n  mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner;\n  KeepRGBOrder: boolean);\nvar\n  minx,miny,maxx,maxy,countx,n,yb: integer;\n  pdest,psrc: PBGRAPixel;\nbegin\n  if y >= dest.ClipRect.Top then miny := 0\n    else miny := dest.ClipRect.Top-y;\n  if y+mask.Height-1 < dest.ClipRect.Bottom then\n    maxy := mask.Height-1 else\n      maxy := dest.ClipRect.Bottom-1-y;\n\n  if x >= dest.ClipRect.Left then minx := 0\n    else minx := dest.ClipRect.Left-x;\n  if x+mask.Width-1 < dest.ClipRect.Right then\n    maxx := mask.Width-1 else\n      maxx := dest.ClipRect.Right-1-x;\n\n  countx := maxx-minx+1;\n  if countx <= 0 then exit;\n\n  for yb := miny to maxy do\n  begin\n    pdest := dest.ScanLine[y+yb]+(x+minx);\n    psrc := mask.ScanLine[yb]+minx;\n    if texture <> nil then\n      texture.ScanMoveTo(x+minx, y+yb);\n    if KeepRGBOrder then\n    begin\n      for n := countx-1 downto 0 do\n      begin\n        if texture <> nil then color := texture.ScanNextPixel;\n        ClearTypeDrawPixel(pdest, psrc^.red, psrc^.green, psrc^.blue, color);\n        inc(pdest);\n        inc(psrc);\n      end;\n    end else\n    begin\n      for n := countx-1 downto 0 do\n      begin\n        if texture <> nil then color := texture.ScanNextPixel;\n        ClearTypeDrawPixel(pdest, psrc^.blue, psrc^.green, psrc^.red, color);\n        inc(pdest);\n        inc(psrc);\n      end;\n    end;\n  end;\nend;\n\nprocedure ClearTypeDrawPixel(pdest: PBGRAPixel; Cr, Cg, Cb: byte; Color: TBGRAPixel);\nvar merge,mergeClearType: TBGRAPixel;\n    acc: word;\n    keep,dont_keep: byte;\nbegin\n  Cr := ApplyOpacity(Cr,color.alpha);\n  Cg := ApplyOpacity(Cg,color.alpha);\n  Cb := ApplyOpacity(Cb,color.alpha);\n  acc := Cr+Cg+Cb;\n  if acc = 0 then exit;\n\n  merge := pdest^;\n  mergeClearType.red := GammaCompressionTab[(GammaExpansionTab[merge.red] * (not byte(Cr)) +\n                GammaExpansionTab[color.red] * Cr + 128) div 255];\n  mergeClearType.green := GammaCompressionTab[(GammaExpansionTab[merge.green] * (not byte(Cg)) +\n                GammaExpansionTab[color.green] * Cg + 128) div 255];\n  mergeClearType.blue := GammaCompressionTab[(GammaExpansionTab[merge.blue] * (not byte(Cb)) +\n                GammaExpansionTab[color.blue] * Cb + 128) div 255];\n  mergeClearType.alpha := merge.alpha;\n\n  if (mergeClearType.alpha = 255) then\n    pdest^:= mergeClearType\n  else\n  begin\n    if Cg <> 0 then\n      DrawPixelInlineWithAlphaCheck(@merge, color, Cg);\n    dont_keep := mergeClearType.alpha;\n    if dont_keep > 0 then\n    begin\n      keep := not dont_keep;\n      merge.red := GammaCompressionTab[(GammaExpansionTab[merge.red] * keep + GammaExpansionTab[mergeClearType.red] * dont_keep) div 255];\n      merge.green := GammaCompressionTab[(GammaExpansionTab[merge.green] * keep + GammaExpansionTab[mergeClearType.green] * dont_keep) div 255];\n      merge.blue := GammaCompressionTab[(GammaExpansionTab[merge.blue] * keep + GammaExpansionTab[mergeClearType.blue] * dont_keep) div 255];\n      merge.alpha := mergeClearType.alpha + ApplyOpacity(merge.alpha, not mergeClearType.alpha);\n    end;\n    pdest^ := merge;\n  end;\nend;\n\nprocedure InterpolateBilinear(pUpLeft, pUpRight, pDownLeft,\n  pDownRight: PBGRAPixel; iFactX,iFactY: Integer; ADest: PBGRAPixel);\nvar\n  w1,w2,w3,w4,alphaW: LongWord;\n  rSum, gSum, bSum: LongWord; //rgbDiv = aSum\n  aSum, aDiv: LongWord;\nbegin\n  rSum   := 0;\n  gSum   := 0;\n  bSum   := 0;\n  aSum   := 0;\n  aDiv   := 0;\n\n  w4 := (iFactX*iFactY+127) shr 8;\n  w3 := iFactY-w4;\n  {$PUSH}{$HINTS OFF}\n  w1 := (256-iFactX)-w3;\n  {$POP}\n  w2 := iFactX-w4;\n\n  if (pUpLeft <> nil) and (pUpRight <> nil) and (pDownLeft <> nil) and (pDownRight <> nil) and\n     (pUpLeft^.alpha = pUpRight^.alpha) and (pUpLeft^.alpha = pDownLeft^.alpha) and\n     (pUpRight^.alpha = pDownRight^.alpha) then\n  begin\n    if pUpLeft^.alpha = 0 then\n      ADest^ := BGRAPixelTransparent\n    else\n    begin\n      ADest^.red := (pUpLeft^.red*w1 + pUpRight^.red*w2 + pDownLeft^.red*w3 + pDownRight^.red*w4 + 128) shr 8;\n      ADest^.green := (pUpLeft^.green*w1 + pUpRight^.green*w2 + pDownLeft^.green*w3 + pDownRight^.green*w4 + 128) shr 8;\n      ADest^.blue := (pUpLeft^.blue*w1 + pUpRight^.blue*w2 + pDownLeft^.blue*w3 + pDownRight^.blue*w4 + 128) shr 8;\n      ADest^.alpha := pUpLeft^.alpha;\n    end;\n    exit;\n  end;\n\n  { For each pixel around the coordinate, compute\n    the weight for it and multiply values by it before\n    adding to the sum }\n  if pUpLeft <> nil then\n  with pUpLeft^ do\n  begin\n    alphaW := alpha * w1;\n    inc(aDiv, w1);\n    inc(aSum, alphaW);\n    inc(rSum, red * alphaW);\n    inc(gSum, green * alphaW);\n    inc(bSum, blue * alphaW);\n  end;\n  if pUpRight <> nil then\n  with pUpRight^ do\n  begin\n    alphaW := alpha * w2;\n    inc(aDiv, w2);\n    inc(aSum, alphaW);\n    inc(rSum, red * alphaW);\n    inc(gSum, green * alphaW);\n    inc(bSum, blue * alphaW);\n  end;\n  if pDownLeft <> nil then\n  with pDownLeft^ do\n  begin\n    alphaW := alpha * w3;\n    inc(aDiv, w3);\n    inc(aSum, alphaW);\n    inc(rSum, red * alphaW);\n    inc(gSum, green * alphaW);\n    inc(bSum, blue * alphaW);\n  end;\n  if pDownRight <> nil then\n  with pDownRight^ do\n  begin\n    alphaW := alpha * w4;\n    inc(aDiv, w4);\n    inc(aSum, alphaW);\n    inc(rSum, red * alphaW);\n    inc(gSum, green * alphaW);\n    inc(bSum, blue * alphaW);\n  end;\n\n  if aSum < 128 then //if there is no alpha\n    ADest^ := BGRAPixelTransparent\n  else\n  with ADest^ do\n  begin\n    red   := (rSum + aSum shr 1) div aSum;\n    green := (gSum + aSum shr 1) div aSum;\n    blue  := (bSum + aSum shr 1) div aSum;\n    if aDiv = 256 then\n      alpha := (aSum + 128) shr 8\n    else\n      alpha := (aSum + aDiv shr 1) div aDiv;\n  end;\nend;\n\nprocedure InterpolateBilinearMask(pUpLeft, pUpRight, pDownLeft,\n  pDownRight: PByteMask; iFactX, iFactY: Integer; ADest: PByteMask);\nvar\n  w1,w2,w3,w4,sum: LongWord;\nbegin\n  w4 := (iFactX*iFactY+127) shr 8;\n  w3 := iFactY-w4;\n  {$PUSH}{$HINTS OFF}\n  w1 := (256-iFactX)-w3;\n  {$POP}\n  w2 := iFactX-w4;\n\n  if (pUpLeft <> nil) and (pUpRight <> nil) and (pDownLeft <> nil) and (pDownRight <> nil) then\n    ADest^.gray := (pUpLeft^.gray*w1 + pUpRight^.gray*w2 + pDownLeft^.gray*w3 + pDownRight^.gray*w4 + 128) shr 8\n  else\n  begin\n    sum := 0;\n    if pUpLeft <> nil then inc(sum, pUpLeft^.gray*w1);\n    if pUpRight <> nil then inc(sum, pUpRight^.gray*w2);\n    if pDownLeft <> nil then inc(sum, pDownLeft^.gray*w3);\n    if pDownRight <> nil then inc(sum, pDownRight^.gray*w4);\n    ADest^.gray := (sum + 128) shr 8;\n  end;\nend;\n\nprocedure ScannerPutPixels(scan: IBGRAScanner; pdest: PBGRAPixel; count: integer; mode: TDrawMode);\nvar c : TBGRAPixel;\n  i: Integer;\n  scanNextFunc: function(): TBGRAPixel of object;\nbegin\n  if scan.IsScanPutPixelsDefined then\n    scan.ScanPutPixels(pdest,count,mode) else\n  begin\n    scanNextFunc := @scan.ScanNextPixel;\n    case mode of\n      dmLinearBlend:\n        for i := 0 to count-1 do\n        begin\n          FastBlendPixelInline(pdest, scanNextFunc());\n          inc(pdest);\n        end;\n      dmDrawWithTransparency:\n        for i := 0 to count-1 do\n        begin\n          DrawPixelInlineWithAlphaCheck(pdest, scanNextFunc());\n          inc(pdest);\n        end;\n      dmSet:\n        for i := 0 to count-1 do\n        begin\n          pdest^ := scanNextFunc();\n          inc(pdest);\n        end;\n      dmXor:\n        for i := 0 to count-1 do\n        begin\n          PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(scanNextFunc());\n          inc(pdest);\n        end;\n      dmSetExceptTransparent:\n        for i := 0 to count-1 do\n        begin\n          c := scanNextFunc();\n          if c.alpha = 255 then pdest^ := c;\n          inc(pdest);\n        end;\n    end;\n  end;\nend;\n\nprocedure XorInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n  begin\n    PLongWord(dest)^ := PLongWord(dest)^ xor LongWord(c);\n    Inc(dest);\n    Dec(Count);\n  end;\nend;\n\nprocedure XorPixels(pdest, psrc: PBGRAPixel; count: integer);\nbegin\n  while Count > 0 do\n  begin\n    PLongWord(pdest)^ := PLongWord(psrc)^ xor PLongWord(pdest)^;\n    Inc(pdest);\n    Inc(psrc);\n    Dec(Count);\n  end;\nend;\n\n{$i blendpixels.inc}\n\nprocedure AlphaFillInline(dest: PBGRAPixel; alpha: byte; Count: integer); inline;\nbegin\n  while Count > 0 do\n  begin\n    dest^.alpha := alpha;\n    Inc(dest);\n    Dec(Count);\n  end;\nend;\n\nprocedure FillInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer); inline;\nbegin\n  FillDWord(dest^, Count, LongWord(c));\nend;\n\nprocedure FastBlendPixelsInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer);\nvar\n  n: integer;\nbegin\n  if c.alpha = 0 then exit;\n  for n := Count - 1 downto 0 do\n  begin\n    FastBlendPixelInline(dest, c);\n    Inc(dest);\n  end;\nend;\n\nprocedure PutPixels(pdest: PBGRAPixel; psource: PBGRAPixel; copycount: integer;\n  mode: TDrawMode; AOpacity: byte);\nvar i: integer; tempPixel: TBGRAPixel;\nbegin\n  case mode of\n    dmSet:\n    begin\n      if AOpacity <> 255 then\n        CopyPixelsWithOpacity(pdest, psource, AOpacity, copycount)\n      else\n        move(psource^, pdest^, copycount * sizeof(TBGRAPixel));\n    end;\n    dmSetExceptTransparent:\n    begin\n        if AOpacity <> 255 then\n        begin\n          for i := copycount - 1 downto 0 do\n          begin\n            if psource^.alpha = 255 then\n            begin\n              tempPixel := psource^;\n              tempPixel.alpha := ApplyOpacity(tempPixel.alpha,AOpacity);\n              FastBlendPixelInline(pdest,tempPixel);\n            end;\n            Inc(pdest);\n            Inc(psource);\n          end;\n        end else\n          for i := copycount - 1 downto 0 do\n          begin\n            if psource^.alpha = 255 then\n              pdest^ := psource^;\n            Inc(pdest);\n            Inc(psource);\n          end;\n    end;\n    dmDrawWithTransparency:\n    begin\n        if AOpacity <> 255 then\n        begin\n          for i := copycount - 1 downto 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pdest, psource^, AOpacity);\n            Inc(pdest);\n            Inc(psource);\n          end;\n        end\n        else\n          for i := copycount - 1 downto 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pdest, psource^);\n            Inc(pdest);\n            Inc(psource);\n          end;\n    end;\n    dmFastBlend:\n    begin\n        if AOpacity <> 255 then\n        begin\n          for i := copycount - 1 downto 0 do\n          begin\n            FastBlendPixelInline(pdest, psource^, AOpacity);\n            Inc(pdest);\n            Inc(psource);\n          end;\n        end else\n          for i := copycount - 1 downto 0 do\n          begin\n            FastBlendPixelInline(pdest, psource^);\n            Inc(pdest);\n            Inc(psource);\n          end;\n    end;\n    dmXor:\n    begin\n      if AOpacity <> 255 then\n      begin\n          for i := copycount - 1 downto 0 do\n          begin\n            PLongWord(@tempPixel)^ := PLongWord(pdest)^ xor PLongWord(psource)^;\n            FastBlendPixelInline(pdest, tempPixel, AOpacity);\n            Inc(pdest);\n            Inc(psource);\n          end;\n      end else\n          XorPixels(pdest, psource, copycount);\n    end;\n  end;\nend;\n\nprocedure DrawPixelsInline(dest: PBGRAPixel; c: TBGRAPixel; Count: integer);\nvar\n  n: integer;\n  ec: TExpandedPixel;\nbegin\n  if c.alpha = 0 then exit;\n  if c.alpha = 255 then\n  begin\n    filldword(dest^,count,LongWord(c));\n    exit;\n  end;\n  ec := GammaExpansion(c);\n  for n := Count - 1 downto 0 do\n  begin\n    DrawExpandedPixelInlineNoAlphaCheck(dest, ec,c.alpha);\n    Inc(dest);\n  end;\nend;\n\nprocedure DrawExpandedPixelsInline(dest: PBGRAPixel; ec: TExpandedPixel;\n  Count: integer);\nvar\n  n: integer;\n  c: TBGRAPixel;\nbegin\n  if ec.alpha < $0100 then exit;\n  if ec.alpha >= $FF00 then\n  begin\n    c := GammaCompression(ec);\n    filldword(dest^,count,LongWord(c));\n    exit;\n  end;\n  for n := Count - 1 downto 0 do\n  begin\n    DrawExpandedPixelInlineNoAlphaCheck(dest, ec, ec.alpha shr 8);\n    Inc(dest);\n  end;\nend;\n\nprocedure DrawPixelsInlineExpandedOrNot(dest: PBGRAPixel; ec: TExpandedPixel; c: TBGRAPixel; Count: integer);\nvar\n  n: integer;\nbegin\n  if c.alpha = 0 then exit;\n  if c.alpha = 255 then\n  begin\n    filldword(dest^,count,LongWord(c));\n    exit;\n  end;\n  for n := Count - 1 downto 0 do\n  begin\n    DrawExpandedPixelInlineNoAlphaCheck(dest, ec, c.alpha);\n    Inc(dest);\n  end;\nend;\n\nprocedure DrawPixelsInlineDiff(dest: PBGRAPixel; c: TBGRAPixel;\n  Count: integer; compare: TBGRAPixel; maxDiff: byte); inline;\nvar\n  n: integer;\nbegin\n  for n := Count - 1 downto 0 do\n  begin\n    DrawPixelInlineDiff(dest, c, compare, maxDiff);\n    Inc(dest);\n  end;\nend;\n\nprocedure DrawPixelInlineWithAlphaCheck(dest: PBGRAPixel; const c: TBGRAPixel);\nbegin\n  case c.alpha of\n  0: ;\n  255: dest^ := c;\n  else\n    DrawPixelInlineNoAlphaCheck(dest,c);\n  end;\nend;\n\nprocedure DrawPixelInlineWithAlphaCheck(dest: PBGRAPixel; c: TBGRAPixel; appliedOpacity: byte);\nbegin\n  c.alpha := ApplyOpacity(c.alpha,appliedOpacity);\n  DrawPixelInlineWithAlphaCheck(dest, c);\nend;\n\nprocedure CopyPixelsWithOpacity(dest, src: PBGRAPixel; opacity: byte;\n  Count: integer);\nbegin\n  while count > 0 do\n  begin\n    dest^ := MergeBGRAWithGammaCorrection(src^,opacity,dest^,not opacity);\n    inc(src);\n    inc(dest);\n    dec(count);\n  end;\nend;\n\nfunction ApplyOpacity(opacity1, opacity2: byte): byte;\nbegin\n  result := opacity1*(opacity2+1) shr 8;\nend;\n\nfunction FastRoundDiv255(value: LongWord): LongWord; inline;\nbegin\n  result := (value + (value shr 7)) shr 8;\nend;\n\nprocedure DrawExpandedPixelInlineWithAlphaCheck(dest: PBGRAPixel; const ec: TExpandedPixel);\nvar\n  calpha: byte;\nbegin\n  calpha := ec.alpha shr 8;\n  case calpha of\n  0: ;\n  255: dest^ := GammaCompression(ec);\n  else\n    DrawExpandedPixelInlineNoAlphaCheck(dest,ec,calpha);\n  end;\nend;\n\nprocedure DrawPixelInlineExpandedOrNotWithAlphaCheck(dest: PBGRAPixel; const ec: TExpandedPixel; c: TBGRAPixel);\nbegin\n  case c.alpha of\n  0: ;\n  255: dest^ := c;\n  else\n    DrawExpandedPixelInlineNoAlphaCheck(dest,ec,c.alpha);\n  end;\nend;\n\nprocedure DrawPixelInlineNoAlphaCheck(dest: PBGRAPixel; const c: TBGRAPixel);\nvar\n  a1f, a2f, a12, a12m, alphaCorr: UInt32or64;\nbegin\n  case dest^.alpha of\n    0: dest^ := c;\n    255:\n      begin\n        alphaCorr := c.alpha;\n        if alphaCorr >= 128 then inc(alphaCorr);\n        dest^.red := GammaCompressionTab[(GammaExpansionTab[dest^.red] * UInt32or64(256-alphaCorr) + GammaExpansionTab[c.red]*alphaCorr) shr 8];\n        dest^.green := GammaCompressionTab[(GammaExpansionTab[dest^.green] * UInt32or64(256-alphaCorr) + GammaExpansionTab[c.green]*alphaCorr) shr 8];\n        dest^.blue := GammaCompressionTab[(GammaExpansionTab[dest^.blue] * UInt32or64(256-alphaCorr) + GammaExpansionTab[c.blue]*alphaCorr) shr 8];\n      end;\n    else\n    begin\n      {$HINTS OFF}\n      a12  := 65025 - (not dest^.alpha) * (not c.alpha);\n      {$HINTS ON}\n      a12m := a12 shr 1;\n\n      a1f := dest^.alpha * (not c.alpha);\n      a2f := (c.alpha shl 8) - c.alpha;\n\n      PLongWord(dest)^ := ((GammaCompressionTab[(GammaExpansionTab[dest^.red] * a1f +\n                         GammaExpansionTab[c.red] * a2f + a12m) div a12]) shl TBGRAPixel_RedShift) or\n                       ((GammaCompressionTab[(GammaExpansionTab[dest^.green] * a1f +\n                         GammaExpansionTab[c.green] * a2f + a12m) div a12]) shl TBGRAPixel_GreenShift) or\n                       ((GammaCompressionTab[(GammaExpansionTab[dest^.blue] * a1f +\n                         GammaExpansionTab[c.blue] * a2f + a12m) div a12]) shl TBGRAPixel_BlueShift) or\n                       (((a12 + a12 shr 7) shr 8) shl TBGRAPixel_AlphaShift);\n    end;\n  end;\nend;\n\nprocedure DrawExpandedPixelInlineNoAlphaCheck(dest: PBGRAPixel;\n  const ec: TExpandedPixel; calpha: byte);\nvar\n  a1f, a2f, a12, a12m, alphaCorr: UInt32or64;\nbegin\n  case dest^.alpha of\n    0: begin\n         dest^.red := GammaCompressionTab[ec.red];\n         dest^.green := GammaCompressionTab[ec.green];\n         dest^.blue := GammaCompressionTab[ec.blue];\n         dest^.alpha := calpha;\n      end;\n    255:\n      begin\n        alphaCorr := calpha;\n        if alphaCorr >= 128 then inc(alphaCorr);\n        dest^.red := GammaCompressionTab[(GammaExpansionTab[dest^.red] * UInt32or64(256-alphaCorr) + ec.red*alphaCorr) shr 8];\n        dest^.green := GammaCompressionTab[(GammaExpansionTab[dest^.green] * UInt32or64(256-alphaCorr) + ec.green*alphaCorr) shr 8];\n        dest^.blue := GammaCompressionTab[(GammaExpansionTab[dest^.blue] * UInt32or64(256-alphaCorr) + ec.blue*alphaCorr) shr 8];\n      end;\n    else\n    begin\n      {$HINTS OFF}\n      a12  := 65025 - (not dest^.alpha) * (not calpha);\n      {$HINTS ON}\n      a12m := a12 shr 1;\n\n      a1f := dest^.alpha * (not calpha);\n      a2f := (calpha shl 8) - calpha;\n\n      PLongWord(dest)^ := ((GammaCompressionTab[(GammaExpansionTab[dest^.red] * a1f +\n                         ec.red * a2f + a12m) div a12]) shl TBGRAPixel_RedShift) or\n                       ((GammaCompressionTab[(GammaExpansionTab[dest^.green] * a1f +\n                         ec.green * a2f + a12m) div a12]) shl TBGRAPixel_GreenShift) or\n                       ((GammaCompressionTab[(GammaExpansionTab[dest^.blue] * a1f +\n                         ec.blue * a2f + a12m) div a12]) shl TBGRAPixel_BlueShift) or\n                       (((a12 + a12 shr 7) shr 8) shl TBGRAPixel_AlphaShift);\n    end;\n  end;\nend;\n\nprocedure FastBlendPixelInline(dest: PBGRAPixel; const c: TBGRAPixel);\nvar\n  a1f, a2f, a12, a12m, alphaCorr: UInt32or64;\nbegin\n  case c.alpha of\n    0: ;\n    255: dest^ := c;\n    else\n    begin\n      case dest^.alpha of\n        0: dest^ := c;\n        255:\n        begin\n          alphaCorr := c.alpha;\n          if alphaCorr >= 128 then inc(alphaCorr);\n          dest^.red := (dest^.red * UInt32or64(256-alphaCorr) + c.red*(alphaCorr+1)) shr 8;\n          dest^.green := (dest^.green * UInt32or64(256-alphaCorr) + c.green*(alphaCorr+1)) shr 8;\n          dest^.blue := (dest^.blue * UInt32or64(256-alphaCorr) + c.blue*(alphaCorr+1)) shr 8;\n        end;\n        else\n        begin\n          {$HINTS OFF}\n          a12  := 65025 - (not dest^.alpha) * (not c.alpha);\n          {$HINTS ON}\n          a12m := a12 shr 1;\n\n          a1f := dest^.alpha * (not c.alpha);\n          a2f := (c.alpha shl 8) - c.alpha;\n\n          PLongWord(dest)^ := (((dest^.red * a1f + c.red * a2f + a12m) div a12) shl TBGRAPixel_RedShift) or\n                           (((dest^.green * a1f + c.green * a2f + a12m) div a12) shl TBGRAPixel_GreenShift) or\n                           (((dest^.blue * a1f + c.blue * a2f + a12m) div a12) shl TBGRAPixel_BlueShift) or\n                           (((a12 + a12 shr 7) shr 8) shl TBGRAPixel_AlphaShift);\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure FastBlendPixelInline(dest: PBGRAPixel; c: TBGRAPixel;\n  appliedOpacity: byte);\nbegin\n  c.alpha := ApplyOpacity(c.alpha,appliedOpacity);\n  FastBlendPixelInline(dest,c);\nend;\n\nprocedure DrawPixelInlineDiff(dest: PBGRAPixel; c, compare: TBGRAPixel;\n  maxDiff: byte); inline;\nvar alpha: Int32or64;\nbegin\n  alpha := (c.alpha * (maxDiff + 1 - BGRADiff(dest^, compare)) + (maxDiff + 1) shr 1) div\n    (maxDiff + 1);\n  if alpha > 0 then\n    DrawPixelInlineWithAlphaCheck(dest, BGRA(c.red, c.green, c.blue, alpha));\nend;\n\nprocedure ErasePixelInline(dest: PBGRAPixel; alpha: byte); inline;\nvar\n  newAlpha: byte;\nbegin\n  newAlpha := ApplyOpacity(dest^.alpha, not alpha);\n  if newAlpha = 0 then\n    dest^ := BGRAPixelTransparent\n  else\n    dest^.alpha := newAlpha;\nend;\n\n{$i blendpixelsover.inc}\n\n{$i blendpixelinline.inc}\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrablurgl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Blur effect using OpenGL shaders }\nunit BGRABlurGL;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRAOpenGL3D, BGRABitmapTypes, BGRACanvasGL, BGRAOpenGLType;\n\ntype\n  { Shader computing a blurred image }\n  TBGLBlurShader = class(TBGLShader3D)\n  private\n    function GetAllocatedTextureSize: TPoint;\n    function GetDirection: TPointF;\n    function GetImageIndex: integer;\n    function GetRadius: Single;\n    function GetTextureSize: TPoint;\n    procedure SetAllocatedTextureSize(AValue: TPoint);\n    procedure SetDirection(AValue: TPointF);\n    procedure SetImageIndex(AValue: integer);\n    procedure SetRadius(AValue: Single);\n    procedure SetTextureSize(AValue: TPoint);\n  protected\n    FTextureSize, FAllocatedTextureSize: TUniformVariablePoint;\n    FImageIndex: TUniformVariableInteger;\n    FDirection: TUniformVariablePointF;\n    FRadius: TUniformVariableSingle;\n    FBlurType: TRadialBlurType;\n    procedure StartUse; override;\n    property AllocatedTextureSize: TPoint read GetAllocatedTextureSize write SetAllocatedTextureSize;\n  public\n    constructor Create(ACanvas: TBGLCustomCanvas; ABlurType: TRadialBlurType);\n    function FilterBlurMotion(ATexture: IBGLTexture): IBGLTexture; overload;\n    function FilterBlurMotion(ATexture: IBGLTexture; ADirection: TPointF): IBGLTexture; overload;\n    function FilterBlurRadial(ATexture: IBGLTexture): IBGLTexture;\n    property ImageIndex: integer read GetImageIndex write SetImageIndex;\n    property TextureSize: TPoint read GetTextureSize write SetTextureSize;\n    property Direction: TPointF read GetDirection write SetDirection;\n    property Radius: Single read GetRadius write SetRadius;\n    property BlurType: TRadialBlurType read FBlurType;\n  end;\n\nimplementation\n\nuses BGRAOpenGL;\n\n{ TBGLBlurShader }\n\nfunction TBGLBlurShader.GetAllocatedTextureSize: TPoint;\nbegin\n  result := FAllocatedTextureSize.Value;\nend;\n\nfunction TBGLBlurShader.GetDirection: TPointF;\nbegin\n  result := FDirection.Value;\nend;\n\nfunction TBGLBlurShader.GetImageIndex: integer;\nbegin\n  result := FImageIndex.Value;\nend;\n\nfunction TBGLBlurShader.GetRadius: Single;\nbegin\n  result := FRadius.Value;\n  if FBlurType = rbPrecise then result := result * 10;\nend;\n\nfunction TBGLBlurShader.GetTextureSize: TPoint;\nbegin\n  result := FTextureSize.Value;\nend;\n\nprocedure TBGLBlurShader.SetAllocatedTextureSize(AValue: TPoint);\nbegin\n  FAllocatedTextureSize.Value := AValue;\nend;\n\nprocedure TBGLBlurShader.SetDirection(AValue: TPointF);\nbegin\n  FDirection.Value := AValue;\nend;\n\nprocedure TBGLBlurShader.SetImageIndex(AValue: integer);\nbegin\n  FImageIndex.Value := AValue;\nend;\n\nprocedure TBGLBlurShader.SetRadius(AValue: Single);\nbegin\n  if FBlurType = rbPrecise then AValue := AValue/10;\n  FRadius.Value := AValue;\nend;\n\nprocedure TBGLBlurShader.SetTextureSize(AValue: TPoint);\nbegin\n  FTextureSize.Value:= AValue;\nend;\n\nconstructor TBGLBlurShader.Create(ACanvas: TBGLCustomCanvas; ABlurType: TRadialBlurType);\nvar weightFunc: string;\n  overflowFunc: string;\nbegin\n  FBlurType:= ABlurType;\n  case ABlurType of\n  rbNormal,rbPrecise: weightFunc:=\n'   float sigma = max(0.1,radius/1.8);'#10+\n'\tfloat normalized = x/sigma;'#10 +\n'\treturn 1/(2.506628274631*sigma)*exp(-0.5*normalized*normalized);';\n  rbCorona: weightFunc := 'return max(0, 1-abs(x-radius));';\n  rbFast: weightFunc := 'return max(0,radius+1-x);';\n  else {rbBox,rbDisk}\n    weightFunc := 'if (x <= radius) return 1; else return max(0,radius+1-x);';\n  end;\n\n  if GetOpenGLVersion >= 200 then\n  begin\n    overflowFunc :=\n'vec2 overflowTexCoord(vec2 coord)'#10 +\n'{'#10 +\n'return coord;'#10 +\n'}'#10\n  end else\n  begin\n    // fix repeat mode on older version\n    overflowFunc :=\n'vec2 overflowTexCoord(vec2 coord)'#10 +\n'{'#10 +\n'return fract(coord / textureSize) * textureSize;'#10 +\n'}'#10\n  end;\n\n  inherited Create(ACanvas,\n'void main(void) {'#10 +\n'\tgl_Position = gl_ProjectionMatrix * gl_Vertex;'#10 +\n'    texCoord = vec2(gl_MultiTexCoord0);'#10 +\n'}',\n\n'uniform sampler2D image;'#10 +\n'uniform ivec2 textureSize;'#10 +\n'uniform ivec2 allocatedTextureSize;'#10 +\n'uniform vec2 direction;'#10 +\n'uniform float radius;'#10 +\n'out vec4 FragmentColor;'#10 +\n\n'float computeWeight(float x)'#10 +\n'{'#10 +\nweightFunc + #10 +\n'}'#10 +\n\noverflowFunc +\n\n'void main(void)'#10 +\n'{'#10 +\n'\tint range = int(radius+1.5);'#10 +\n\n'\tfloat weight = computeWeight(0);'#10 +\n'\tfloat totalWeight = weight;'#10 +\n'\tFragmentColor = texture2D( image, texCoord ) * weight;'#10 +\n\n'\tfor (int i=1; i<=range; i++) {'#10 +\n'\t\tweight = computeWeight(i);'#10 +\n'\t\tFragmentColor += texture2D( image, overflowTexCoord(texCoord*allocatedTextureSize + i*direction)/allocatedTextureSize ) * weight;'#10 +\n'\t\tFragmentColor += texture2D( image, overflowTexCoord(texCoord*allocatedTextureSize - i*direction)/allocatedTextureSize ) * weight;'#10 +\n'\t\ttotalWeight += 2*weight;'#10 +\n'\t}'#10 +\n\n'\tFragmentColor /= totalWeight;'#10 +\n'}',\n\n'varying vec2 texCoord;', '130');\n\n  FImageIndex := UniformInteger['image'];\n  FTextureSize := UniformPoint['textureSize'];\n  FAllocatedTextureSize := UniformPoint['allocatedTextureSize'];\n  FDirection := UniformPointF['direction'];\n  FRadius := UniformSingle['radius'];\n\n  ImageIndex:= 0;\n  Direction := PointF(1,0);\n  TextureSize := Point(1,1);\n  AllocatedTextureSize := Point(1,1);\n  Radius := 0;\nend;\n\nfunction TBGLBlurShader.FilterBlurRadial(ATexture: IBGLTexture): IBGLTexture;\nvar horiz: IBGLTexture;\nbegin\n  horiz := FilterBlurMotion(ATexture, PointF(1,0));\n  result := FilterBlurMotion(horiz, PointF(0,1));\nend;\n\nfunction TBGLBlurShader.FilterBlurMotion(ATexture: IBGLTexture): IBGLTexture;\nvar previousBuf,buf: TBGLCustomFrameBuffer;\n  previousShader: TBGLCustomShader;\nbegin\n  previousBuf := Canvas.ActiveFrameBuffer;\n  buf := Canvas.CreateFrameBuffer(ATexture.Width, ATexture.Height);\n  Canvas.ActiveFrameBuffer := buf;\n  Canvas.Fill(BGRAPixelTransparent);\n\n  TextureSize := Point(ATexture.Width,ATexture.Height);\n  AllocatedTextureSize := Point(ATexture.AllocatedWidth, ATexture.AllocatedHeight);\n  previousShader := Canvas.Lighting.ActiveShader;\n  Canvas.Lighting.ActiveShader := self;\n\n  ATexture.Draw(0, 0); //perform horiz blur\n\n  Canvas.Lighting.ActiveShader := previousShader;\n  Canvas.ActiveFrameBuffer := previousBuf;\n  result := buf.MakeTextureAndFree;\nend;\n\nfunction TBGLBlurShader.FilterBlurMotion(ATexture: IBGLTexture;\n  ADirection: TPointF): IBGLTexture;\nvar prevDir: TPointF;\nbegin\n  prevDir := Direction;\n  Direction := ADirection;\n  result := FilterBlurMotion(ATexture);\n  Direction := prevDir;\nend;\n\nprocedure TBGLBlurShader.StartUse;\nbegin\n  inherited StartUse;\n  FImageIndex.Update;\n  FTextureSize.Update;\n  FAllocatedTextureSize.Update;\n  FDirection.Update;\n  FRadius.Update;\nend;\n\nend.\n\n\n"
  },
  {
    "path": "bgrabitmap/bgracanvas.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Equivalent of LCL Canvas but with transparency and gamma correction,\n  using drawing functions of BGRABitmap. }\nunit BGRACanvas;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, FPImage, BGRABitmapTypes\n  {$IFDEF BGRABITMAP_USE_FPCANVAS}, FPCanvas{$ENDIF};\n\ntype\n  { Any colored object }\n  TBGRAColoredObject = class\n  private\n    function GetColor: TColor;\n    function GetOpacity: Byte;\n    procedure SetColor(const AValue: TColor);\n    procedure SetOpacity(const AValue: Byte);\n  public\n    BGRAColor: TBGRAPixel;\n    procedure Assign(Source: TObject); virtual;\n    property Color: TColor read GetColor write SetColor;\n    property Opacity: Byte read GetOpacity write SetOpacity;\n  end;\n\n  { Pen property for TBGRACanvas }\n  TBGRAPen = class(TBGRAColoredObject)\n  private\n    FPenMode: TPenMode;\n    function GetActualColor: TBGRAPixel;\n    function GetActualDrawMode: TDrawMode;\n    function GetActualWidth: integer;\n    function GetCustomPenStyle: TBGRAPenStyle;\n    function GetInvisible: boolean;\n    function GetPenStyle: TPenStyle;\n    procedure SetCustomPenStyle(const AValue: TBGRAPenStyle);\n    procedure SetPenMode(AValue: TPenMode);\n    procedure SetPenStyle(const AValue: TPenStyle);\n  protected\n    FCustomPenStyle:  TBGRAPenStyle;\n    FPenStyle: TPenStyle;\n  public\n    Width: Integer;\n    EndCap: TPenEndCap;\n    JoinStyle: TPenJoinStyle;\n    constructor Create;\n    procedure Assign(Source: TObject); override;\n    procedure GetUniversalBrush(out ABrush: TUniversalBrush);\n    property Style: TPenStyle read GetPenStyle Write SetPenStyle;\n    property Mode: TPenMode read FPenMode write SetPenMode;\n    property CustomStyle: TBGRAPenStyle read GetCustomPenStyle write SetCustomPenStyle;\n    property ActualWidth: integer read GetActualWidth;\n    property ActualColor: TBGRAPixel read GetActualColor;\n    property ActualDrawMode: TDrawMode read GetActualDrawMode;\n    property Invisible: boolean read GetInvisible;\n  end;\n\n  { Brush property for TBGRACanvas }\n  TBGRABrush = class(TBGRAColoredObject)\n  private\n    function GetActualColor: TBGRAPixel;\n    function GetActualDrawMode: TDrawMode;\n    function GetInvisible: boolean;\n    procedure SetBackColor(const AValue: TBGRAPixel);\n    procedure SetBrushStyle(const AValue: TBrushStyle);\n    procedure SetTexture(AValue: IBGRAScanner);\n  protected\n    FStyle, FStyleBeforeTexture: TBrushStyle;\n    FBackColor: TBGRAPixel;\n    FTexture: IBGRAScanner;\n    FInternalBitmap: TBGRACustomBitmap;\n    FInternalBitmapColor: TBGRAPixel;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure Assign(Source: TObject); override;\n    procedure GetUniversalBrush(ABitmapPrototype: TBGRACustomBitmap; out ABrush: TUniversalBrush);\n    function BuildTexture(Prototype: TBGRACustomBitmap): IBGRAScanner;\n    property Style: TBrushStyle read FStyle write SetBrushStyle;\n    property BackColor: TBGRAPixel read FBackColor write SetBackColor;\n    property ActualColor: TBGRAPixel read GetActualColor;\n    property ActualDrawMode: TDrawMode read GetActualDrawMode;\n    property Invisible: boolean read GetInvisible;\n    property Texture: IBGRAScanner read FTexture write SetTexture;\n  end;\n\n  { Font property for TBGRACanvas }\n  TBGRAFont = class(TBGRAColoredObject)\n  private\n    function GetAntialiasing: Boolean;\n    procedure SetAntialiasing(const AValue: Boolean);\n  public\n    Name:   string;\n    Height: Integer;\n    Style:  TFontStyles;\n    Quality : TBGRAFontQuality;\n    Orientation:  integer;\n    Texture:      IBGRAScanner;\n    constructor Create;\n    procedure Assign(Source: TObject); override;\n    property Antialiasing: Boolean read GetAntialiasing write SetAntialiasing;\n\n  end;\n\n  { Improved canvas with gamma correction and transparency }\n  TBGRACanvas = class\n    procedure SetBrush(const AValue: TBGRABrush);\n    procedure SetPen(const AValue: TBGRAPen);\n    function GetPixelColor(X, Y: Integer): TColor;\n    procedure SetPixelColor(X, Y: Integer; const AValue: TColor);\n  private\n    function GetClipping: Boolean;\n    function GetClipRect: TRect;\n    function GetExpandedPixel(X, Y: Integer): TExpandedPixel;\n    function GetFPPixelColor(X, Y: Integer): TFPColor;\n    function GetHeight: integer;\n    function GetWidth: integer;\n    procedure SetClipping(const AValue: Boolean);\n    procedure SetClipRect(const AValue: TRect);\n    procedure SetExpandedPixel(X, Y: Integer; const AValue: TExpandedPixel);\n    procedure SetFont(const AValue: TBGRAFont);\n    procedure SetFPPixelColor(X, Y: Integer; const AValue: TFPColor);\n    function ComputeEllipseC(x1, y1, x2, y2: integer; out cx,cy,rx,ry: single): boolean;\n    function CheckRectangle(var x1, y1, x2, y2: integer; out tx,ty: integer): boolean;\n\n  protected\n    FBitmap: TBGRACustomBitmap;\n    FBrush: TBGRABrush;\n    FPen: TBGRAPen;\n    FPenPos: TPoint;\n    FFont : TBGRAFont;\n    FInactiveClipRect: TRect;\n    FClippingOn: Boolean;\n    procedure ApplyPenStyle;\n    procedure ApplyFont;\n    function NoPen: boolean;\n    function NoBrush: boolean;\n  public\n    AntialiasingMode: TAntialiasingMode;\n    FillMode : TFillMode;\n    TextStyle : TTextStyle;\n    DrawFontBackground : boolean;\n    constructor Create(ABitmap: TBGRACustomBitmap);\n    destructor Destroy; override;\n    procedure MoveTo(x,y: integer); overload;\n    procedure MoveTo(p: TPoint); overload;\n    procedure LineTo(x,y: integer); overload;\n    procedure LineTo(p: TPoint); overload;\n    procedure Line(x1,y1,x2,y2: integer); overload;\n    procedure Line(p1,p2: TPoint); overload;\n    procedure Arc(x1,y1,x2,y2,sx,sy,ex,ey: integer);\n    procedure Arc(x1,y1,x2,y2,StartDeg16,LengthDeg16: integer);\n    procedure Arc65536(x1,y1,x2,y2: integer; start65536,end65536: word; Options: TArcOptions);\n    procedure Chord(x1,y1,x2,y2,sx,sy,ex,ey: integer);\n    procedure Chord(x1,y1,x2,y2,StartDeg16,LengthDeg16: integer);\n    procedure Pie(x1,y1,x2,y2,sx,sy,ex,ey: integer);\n    procedure Pie(x1,y1,x2,y2,StartDeg16,LengthDeg16: integer);\n    procedure RadialPie(x1,y1,x2,y2,StartDeg16,LengthDeg16: integer);\n    procedure Ellipse(x1,y1,x2,y2: integer);\n    procedure Ellipse(const bounds: TRect);\n    procedure Rectangle(x1,y1,x2,y2: integer; Filled: Boolean = True);\n    procedure Rectangle(const bounds: TRect; Filled: Boolean = True);\n    procedure Frame(x1,y1,x2,y2: integer);\n    procedure Frame(const bounds: TRect);\n    procedure RoundRect(x1,y1,x2,y2: integer; dx,dy: integer);\n    procedure RoundRect(const bounds: TRect; dx,dy: integer);\n    procedure EllipseC(x,y,rx,ry: integer);\n    procedure FillRect(x1,y1,x2,y2: integer);\n    procedure FillRect(const bounds: TRect);\n    procedure FrameRect(x1,y1,x2,y2: integer; width: integer = 1);\n    procedure FrameRect(const bounds: TRect; width: integer = 1);\n    procedure Frame3D(var bounds: TRect; width: integer; Style: TGraphicsBevelCut); overload;\n    procedure Frame3D(var bounds: TRect; width: integer; Style: TGraphicsBevelCut; LightColor: TBGRAPixel; ShadowColor: TBGRAPixel); overload;\n    procedure GradientFill(ARect: TRect; AStart, AStop: TColor;\n      ADirection: TGradientDirection; GammaCorrection: Boolean = false);\n    procedure FloodFill(X, Y: Integer; FillColor: TColor; FillStyle: TFillStyle);\n    procedure FloodFill(X, Y: Integer; FillColor: TBGRAPixel; FillStyle: TFillStyle);\n    procedure FloodFill(X, Y: Integer);\n    procedure Polygon(const APoints: array of TPoint);\n    procedure Polygon(const Points: array of TPoint;\n                      Winding: Boolean;\n                      StartIndex: Integer = 0;\n                      NumPts: Integer = -1);\n    procedure Polygon(Points: PPoint; NumPts: Integer;\n                      Winding: boolean = False);\n    procedure PolygonF(const APoints: array of TPointF);\n    procedure PolygonF(const APoints: array of TPointF; Winding: Boolean; FillOnly: Boolean = False);\n    procedure Polyline(const APoints: array of TPoint);\n    procedure Polyline(const Points: array of TPoint;\n                      StartIndex: Integer;\n                      NumPts: Integer = -1);\n    procedure Polyline(Points: PPoint; NumPts: Integer);\n    procedure PolylineF(const APoints: array of TPointF);\n    procedure PolyBezier(Points: PPoint; NumPts: Integer;\n                         Filled: boolean = False;\n                         Continuous: boolean = False);\n    procedure PolyBezier(const Points: array of TPoint;\n                         Filled: boolean = False;\n                         Continuous: boolean = False);\n    procedure Draw(X,Y: Integer; SrcBitmap: TBGRACustomBitmap); overload;\n    procedure Draw(X,Y: Integer; SrcBitmap: TBitmap); overload;\n    procedure CopyRect(X,Y: Integer; SrcBitmap: TBGRACustomBitmap; SrcRect: TRect);\n    procedure StretchDraw(DestRect: TRect; SrcBitmap: TBGRACustomBitmap; HorizFlip: Boolean = false; VertFlip: Boolean = false);\n    procedure DrawFocusRect(bounds: TRect);\n    procedure CopyRect(Dest: TRect; SrcBmp: TBGRACustomBitmap;\n                       Source: TRect); virtual;\n\n    procedure TextOut(X,Y: Integer; const Text: String; RightToLeft: boolean = false);\n    procedure TextRect(const ARect: TRect; X, Y: integer; const Text: string);\n    procedure TextRect(ARect: TRect; X, Y: integer; const Text: string;\n                       const Style: TTextStyle);\n    function TextExtent(const Text: string): TSize;\n    function TextHeight(const Text: string): Integer;\n    function TextWidth(const Text: string): Integer;\n\n    property Pen: TBGRAPen read FPen write SetPen;\n    property PenPos : TPoint read FPenPos write FPenPos;\n    property Brush: TBGRABrush read FBrush write SetBrush;\n    property Font: TBGRAFont read FFont write SetFont;\n    property Pixels[X,Y: Integer]: TColor read GetPixelColor write SetPixelColor;\n    property GammaExpandedPixels[X,Y: Integer]: TExpandedPixel read GetExpandedPixel write SetExpandedPixel;\n    property Colors[X,Y: Integer]: TFPColor read GetFPPixelColor write SetFPPixelColor;\n    property Height: integer read GetHeight;\n    property Width : integer read GetWidth;\n    property ClipRect: TRect read GetClipRect write SetClipRect;\n    property Clipping: Boolean read GetClipping write SetClipping;\n  end;\n\nimplementation\n\nuses BGRAPen, BGRAPath, BGRAPolygon, BGRAPolygonAliased, Math, BGRABlend;\n\n{ TBGRAFont }\n\nfunction TBGRAFont.GetAntialiasing: Boolean;\nbegin\n  result := Quality <> fqSystem;\nend;\n\nprocedure TBGRAFont.SetAntialiasing(const AValue: Boolean);\nbegin\n  if AValue = Antialiasing then exit;\n  if AValue then\n    Quality := fqFineAntialiasing\n  else\n    Quality := fqSystem;\nend;\n\nconstructor TBGRAFont.Create;\nbegin\n  Name := 'default';\n  Height := 12;\n  Style := [];\n  Antialiasing := False;\n  Orientation := 0;\n  Texture := nil;\n  BGRAColor := BGRABlack;\nend;\n\nprocedure TBGRAFont.Assign(Source: TObject);\nvar sf: TBGRAFont;\n    f: TFont;\n    {$IFDEF BGRABITMAP_USE_FPCANVAS}cf: TFPCustomFont;{$ENDIF}\nbegin\n  if Source is TFont then\n  begin\n    f := TFont(Source);\n    Color := f.Color;\n    Opacity := 255;\n    Style := f.Style;\n    Name := f.Name;\n    Orientation := f.Orientation;\n    if f.Height= 0 then\n      Height := 16 else\n       Height := f.Height;\n  end else\n  if Source is TBGRAFont then\n  begin\n    sf := Source as TBGRAFont;\n    Name := sf.Name;\n    Height := sf.Height;\n    Style := sf.Style;\n    Quality := sf.Quality;\n    Orientation := sf.Orientation;\n    Texture := sf.Texture;\n  end\n  {$IFDEF BGRABITMAP_USE_FPCANVAS}else\n  if Source is TFPCustomFont then\n  begin\n    cf := Source as TFPCustomFont;\n    Color := FPColorToTColor(cf.FPColor);\n    Style := [];\n    if cf.Bold then include(Style, fsBold);\n    if cf.Italic then include(Style, fsItalic);\n    if cf.Underline then include(Style, fsUnderline);\n{$IF FPC_FULLVERSION>=20602} //changed in 2.6.2 and 2.7    \n    if cf.StrikeThrough then include(Style, fsStrikeOut);\n{$ELSE}\n    if cf.StrikeTrough then include(Style, fsStrikeOut);\n{$ENDIF}\n    Name := cf.Name;\n    //Orientation := cf.Orientation;\n    if cf.Size = 0 then\n      Height := 16 else\n       Height := round(cf.Size*1.8);\n  end{$ENDIF};\n  inherited Assign(Source);\nend;\n\n{ TBGRABrush }\n\nfunction TBGRABrush.GetActualColor: TBGRAPixel;\nbegin\n  if (Style = bsClear) or (Opacity = 0) then\n    result := BGRAPixelTransparent\n  else\n    result := BGRAColor;\nend;\n\nfunction TBGRABrush.GetActualDrawMode: TDrawMode;\nbegin\n  result := dmDrawWithTransparency;\nend;\n\nfunction TBGRABrush.GetInvisible: boolean;\nbegin\n  result := (texture = nil) and ((style = bsClear) or ((style= bsSolid) and (bgracolor.alpha = 0))\n    or ((bgracolor.alpha = 0) and (BackColor.alpha = 0)));\nend;\n\nprocedure TBGRABrush.SetBackColor(const AValue: TBGRAPixel);\nbegin\n  if FBackColor=AValue then exit;\n  FBackColor:=AValue;\n  FreeAndNil(FInternalBitmap);\nend;\n\nprocedure TBGRABrush.SetBrushStyle(const AValue: TBrushStyle);\nbegin\n  if FStyle=AValue then exit;\n  FStyle:=AValue;\n  if FStyle <> bsImage then FTexture := nil;\n  FreeAndNil(FInternalBitmap);\nend;\n\nprocedure TBGRABrush.SetTexture(AValue: IBGRAScanner);\nbegin\n  if FTexture=AValue then Exit;\n  FTexture:=AValue;\n  if Assigned(AValue) then\n  begin\n    if FStyle <> bsImage then\n    begin\n      FStyleBeforeTexture:= FStyle;\n      FStyle:= bsImage;\n    end;\n  end else\n  begin\n    if FStyle = bsImage then\n      FStyle := FStyleBeforeTexture;\n  end;\nend;\n\nconstructor TBGRABrush.Create;\nbegin\n  BGRAColor := BGRAWhite;\n  FInternalBitmap := nil;\n  FInternalBitmapColor := BGRAPixelTransparent;\n  FStyle := bsSolid;\n  FStyleBeforeTexture:= Style;\n  FTexture := nil;\n  FBackColor := BGRAPixelTransparent;\nend;\n\ndestructor TBGRABrush.Destroy;\nbegin\n  Texture := nil;\n  FInternalBitmap.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRABrush.Assign(Source: TObject);\nvar sb: TBGRABrush;\n    b: TBrush;\nbegin\n  if Source is TBGRABrush then\n  begin\n    sb := Source as TBGRABrush;\n    Texture := sb.Texture;\n    BackColor := sb.BackColor;\n    Style := sb.Style;\n  end else\n  if Source is TBrush then\n  begin\n    b := Source as TBrush;\n    Color := b.Color;\n    Opacity := 255;\n    Style := b.Style;\n  end;\n  inherited Assign(Source);\nend;\n\nprocedure TBGRABrush.GetUniversalBrush(ABitmapPrototype: TBGRACustomBitmap; out ABrush: TUniversalBrush);\nvar\n  tex: IBGRAScanner;\n  c: TBGRAPixel;\nbegin\n  tex := BuildTexture(ABitmapPrototype);\n  if tex <> nil then\n    BGRAScannerBrush(ABrush, tex, ActualDrawMode)\n  else\n  begin\n    c := ActualColor;\n    BGRASolidBrushIndirect(ABrush, @c, ActualDrawMode);\n  end;\nend;\n\nfunction TBGRABrush.BuildTexture(Prototype: TBGRACustomBitmap): IBGRAScanner;\nbegin\n  //user-defined texture\n  if Texture <> nil then\n    result := texture\n  else\n  begin\n    //free pattern if color has changed\n    if (FInternalBitmap <> nil) and (FInternalBitmapColor <> BGRAColor) then\n      FreeAndNil(FInternalBitmap);\n\n    //styles that do not have pattern\n    if Style in[bsSolid,bsClear] then\n      result := nil\n    else\n    begin\n      //create pattern if needed\n      if FInternalBitmap = nil then\n      begin\n        FInternalBitmap := CreateBrushTexture(Prototype, Style, BGRAColor,BackColor);\n        FInternalBitmapColor := BGRAColor;\n      end;\n      result := FInternalBitmap;\n    end;\n  end;\nend;\n\n{ TBGRAPen }\n\nfunction TBGRAPen.GetActualColor: TBGRAPixel;\nbegin\n  if (Style = psClear) or (Opacity = 0) then\n    result := BGRAPixelTransparent\n  else\n  begin\n    case Mode of\n    pmBlack: result := BGRABlack;\n    pmWhite: result := BGRAWhite;\n    pmNop: result := BGRAPixelTransparent;\n    pmNot: result := BGRA(255,255,255,0);\n    pmCopy: result := BGRAColor;\n    pmNotCopy: result := BGRA(not BGRAColor.red, not BGRAColor.green, not BGRAColor.blue, BGRAColor.alpha);\n    pmMerge, pmNotMerge, pmMask, pmNotMask, pmXor: result := BGRA(BGRAColor.red, BGRAColor.green, BGRAColor.blue, 0);\n    pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmNotXor: result := BGRA(not BGRAColor.red, not BGRAColor.green, not BGRAColor.blue, 0);\n    else\n      raise exception.Create('Unhandled pen mode');\n    end;\n  end;\nend;\n\nfunction TBGRAPen.GetActualDrawMode: TDrawMode;\nbegin\n  case Mode of\n    pmBlack, pmWhite, pmNop, pmCopy, pmNotCopy:\n      result := dmDrawWithTransparency;\n    else\n      {pmNot, pmXor, pmNotXor and others}\n      result := dmXor;\n  end;\nend;\n\nfunction TBGRAPen.GetActualWidth: integer;\nbegin\n  if width < 1 then result := 1 else\n    result := Width;\nend;\n\nfunction TBGRAPen.GetCustomPenStyle: TBGRAPenStyle;\nbegin\n  result := DuplicatePenStyle(FCustomPenStyle);\nend;\n\nfunction TBGRAPen.GetInvisible: boolean;\nvar b: TUniversalBrush;\nbegin\n  GetUniversalBrush(b);\n  result := b.DoesNothing;\nend;\n\nfunction TBGRAPen.GetPenStyle: TPenStyle;\nbegin\n  Result:= FPenStyle;\nend;\n\nprocedure TBGRAPen.SetCustomPenStyle(const AValue: TBGRAPenStyle);\nbegin\n  FCustomPenStyle := DuplicatePenStyle(AValue);\n  FPenStyle:= BGRAToPenStyle(AValue);\nend;\n\nprocedure TBGRAPen.SetPenMode(AValue: TPenMode);\nbegin\n  if FPenMode=AValue then Exit;\n  FPenMode:=AValue;\nend;\n\nprocedure TBGRAPen.SetPenStyle(const AValue: TPenStyle);\nbegin\n  if AValue = psPattern then exit;\n  FCustomPenStyle := PenStyleToBGRA(AValue);\n  FPenStyle := AValue;\nend;\n\nconstructor TBGRAPen.Create;\nbegin\n  Width := 1;\n  EndCap := pecRound;\n  JoinStyle := pjsRound;\n  Style := psSolid;\n  BGRAColor := BGRABlack;\n  Mode := pmCopy;\nend;\n\nprocedure TBGRAPen.Assign(Source: TObject);\nvar sp: TBGRAPen;\n    p: TPen;\nbegin\n  if Source is TBGRAPen then\n  begin\n    sp := Source as TBGRAPen;\n    Mode := sp.Mode;\n    Width := sp.Width;\n    EndCap := sp.EndCap;\n    JoinStyle := sp.JoinStyle;\n    Style := sp.Style;\n    CustomStyle := sp.CustomStyle;\n  end else\n  if Source is TPen then\n  begin\n    p := Source as TPen;\n    Mode := p.Mode;\n    Width := p.Width;\n    EndCap := p.EndCap;\n    JoinStyle := p.JoinStyle;\n    Style := p.Style;\n    Color := p.Color;\n    Opacity := 255;\n  end;\n  inherited Assign(Source);\nend;\n\ntype\n  PBGRAPenBrushFixedData = ^TBGRAPenBrushFixedData;\n  TBGRAPenBrushFixedData = record\n    BGRA: TBGRAPixel;\n    NotResult: boolean;\n  end;\n\nprocedure BGRAPenSkipPixels({%H-}AFixedData: Pointer;\n  AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PBGRAPixel(AContextData^.Dest), ACount);\nend;\n\nprocedure BGRAPenMergePixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PBGRAPixel;\n  merged: TBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PBGRAPixel(AContextData^.Dest);\n  with PBGRAPenBrushFixedData(AFixedData)^ do\n  begin\n    while ACount > 0 do\n    begin\n      merged.red := pDest^.red or PBGRAPenBrushFixedData(AFixedData)^.BGRA.red;\n      merged.green := pDest^.green or PBGRAPenBrushFixedData(AFixedData)^.BGRA.green;\n      merged.blue := pDest^.blue or PBGRAPenBrushFixedData(AFixedData)^.BGRA.blue;\n      if NotResult then\n      begin\n        merged.red := not merged.red;\n        merged.green := not merged.green;\n        merged.blue := not merged.blue;\n      end;\n      if AAlpha >= $ff7f then\n        pDest^ := merged else\n        pDest^ := GammaCompression(MergeBGRA(GammaExpansion(pDest^), not AAlpha,\n                                             GammaExpansion(merged), AAlpha));\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure BGRAPenMaskPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PBGRAPixel;\n  merged: TBGRAPixel;\nbegin\n  if AAlpha <= $80 then\n  begin\n    inc(PBGRAPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PBGRAPixel(AContextData^.Dest);\n  with PBGRAPenBrushFixedData(AFixedData)^ do\n  begin\n    while ACount > 0 do\n    begin\n      merged.red := pDest^.red and PBGRAPenBrushFixedData(AFixedData)^.BGRA.red;\n      merged.green := pDest^.green and PBGRAPenBrushFixedData(AFixedData)^.BGRA.green;\n      merged.blue := pDest^.blue and PBGRAPenBrushFixedData(AFixedData)^.BGRA.blue;\n      if NotResult then\n      begin\n        merged.red := not merged.red;\n        merged.green := not merged.green;\n        merged.blue := not merged.blue;\n      end;\n      if AAlpha >= $ff7f then\n        pDest^ := merged else\n        pDest^ := GammaCompression(MergeBGRA(GammaExpansion(pDest^), not AAlpha,\n                                             GammaExpansion(merged), AAlpha));\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PBGRAPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure TBGRAPen.GetUniversalBrush(out ABrush: TUniversalBrush);\nvar c: TBGRAPixel;\nbegin\n  if Opacity = 0 then\n  begin\n    TBGRACustomBitmap.IdleBrush(ABrush);\n    exit;\n  end;\n  c := ActualColor;\n  case Mode of\n    pmMerge, pmNotMerge, pmMergeNotPen, pmMaskPenNot: //or-based\n      begin\n        ABrush.Colorspace:= TBGRAPixelColorspace;\n        ABrush.InternalInitContext:= nil;\n        PBGRAPenBrushFixedData(@ABrush.FixedData)^.BGRA := c;\n        if Mode in [pmNotMerge, pmMaskPenNot] then\n        begin\n          ABrush.DoesNothing := false;\n          PBGRAPenBrushFixedData(@ABrush.FixedData)^.NotResult:= true;\n          ABrush.InternalPutNextPixels:= @BGRAPenMergePixels;\n        end else\n        begin\n          ABrush.DoesNothing:= (c.red = 0) and (c.green = 0) and (c.blue = 0);\n          PBGRAPenBrushFixedData(@ABrush.FixedData)^.NotResult:= false;\n          if ABrush.DoesNothing then\n            ABrush.InternalPutNextPixels:= @BGRAPenSkipPixels\n          else\n            ABrush.InternalPutNextPixels:= @BGRAPenMergePixels;\n        end;\n      end;\n    pmMask, pmNotMask, pmMaskNotPen, pmMergePenNot: //and-based\n      begin\n        ABrush.Colorspace:= TBGRAPixelColorspace;\n        ABrush.InternalInitContext:= nil;\n        PBGRAPenBrushFixedData(@ABrush.FixedData)^.BGRA := c;\n        if Mode in [pmNotMask, pmMergePenNot] then\n        begin\n          ABrush.DoesNothing := false;\n          PBGRAPenBrushFixedData(@ABrush.FixedData)^.NotResult:= true;\n          ABrush.InternalPutNextPixels:= @BGRAPenMaskPixels;\n        end else\n        begin\n          ABrush.DoesNothing:= (c.red = 255) and (c.green = 255) and (c.blue = 255);\n          PBGRAPenBrushFixedData(@ABrush.FixedData)^.NotResult:= false;\n          if ABrush.DoesNothing then\n            ABrush.InternalPutNextPixels:= @BGRAPenSkipPixels\n          else\n            ABrush.InternalPutNextPixels:= @BGRAPenMaskPixels;\n        end;\n      end;\n    else //draw-based and xor-based\n      BGRASolidBrushIndirect(ABrush, @c, ActualDrawMode);\n  end;\nend;\n\n{ TBGRAColoredObject }\n\nfunction TBGRAColoredObject.GetColor: TColor;\nbegin\n  result := BGRAToColor(BGRAColor);\nend;\n\nfunction TBGRAColoredObject.GetOpacity: Byte;\nbegin\n  result := BGRAColor.alpha;\nend;\n\nprocedure TBGRAColoredObject.SetColor(const AValue: TColor);\nbegin\n  BGRAColor := ColorToBGRA(AValue,BGRAColor.alpha);\nend;\n\nprocedure TBGRAColoredObject.SetOpacity(const AValue: Byte);\nbegin\n  BGRAColor.alpha := AValue;\nend;\n\nprocedure TBGRAColoredObject.Assign(Source: TObject);\nvar so: TBGRAColoredObject;\nbegin\n  if Source is TBGRAColoredObject then\n  begin\n    so := Source as TBGRAColoredObject;\n    BGRAColor := so.BGRAColor;\n  end;\nend;\n\n{ TBGRACanvas }\n\nprocedure TBGRACanvas.SetBrush(const AValue: TBGRABrush);\nbegin\n  if FBrush=AValue then exit;\n  FBrush.Assign(AValue);\nend;\n\nprocedure TBGRACanvas.SetPen(const AValue: TBGRAPen);\nbegin\n  if FPen=AValue then exit;\n  FPen.Assign(AValue);\nend;\n\nfunction TBGRACanvas.GetPixelColor(X, Y: Integer): TColor;\nbegin\n  result := BGRAToColor(FBitmap.GetPixel(x,y));\nend;\n\nprocedure TBGRACanvas.SetPixelColor(X, Y: Integer; const AValue: TColor);\nbegin\n  FBitmap.SetPixel(x,y,ColorToBGRA(AValue));\nend;\n\nfunction TBGRACanvas.GetClipping: Boolean;\nbegin\n  result := FClippingOn;\nend;\n\nfunction TBGRACanvas.GetClipRect: TRect;\nbegin\n  if not Clipping then\n    result := FInactiveClipRect else\n    result := FBitmap.ClipRect;\nend;\n\nfunction TBGRACanvas.GetExpandedPixel(X, Y: Integer): TExpandedPixel;\nbegin\n  result := GammaExpansion(FBitmap.GetPixel(X,Y));\nend;\n\nfunction TBGRACanvas.GetFPPixelColor(X, Y: Integer): TFPColor;\nbegin\n  result := BGRAToFPColor(FBitmap.GetPixel(x,y));\nend;\n\nfunction TBGRACanvas.GetHeight: integer;\nbegin\n  result := FBitmap.Height;\nend;\n\nfunction TBGRACanvas.GetWidth: integer;\nbegin\n  result := FBitmap.Width;\nend;\n\nprocedure TBGRACanvas.SetClipping(const AValue: Boolean);\nbegin\n  FClippingOn := AValue;\n  if not AValue then FBitmap.NoClip else\n    FBitmap.ClipRect := FInactiveClipRect;\nend;\n\nprocedure TBGRACanvas.SetClipRect(const AValue: TRect);\nbegin\n  FInactiveClipRect := AValue;\n  if FClippingOn then\n  begin\n    FBitmap.ClipRect := AValue;\n    FInactiveClipRect := FBitmap.ClipRect;\n  end;\nend;\n\nprocedure TBGRACanvas.SetExpandedPixel(X, Y: Integer;\n  const AValue: TExpandedPixel);\nbegin\n  FBitmap.SetPixel(x,y,GammaCompression(AValue));\nend;\n\nprocedure TBGRACanvas.SetFont(const AValue: TBGRAFont);\nbegin\n  if FFont=AValue then exit;\n  FFont.Assign(AValue);\nend;\n\nprocedure TBGRACanvas.SetFPPixelColor(X, Y: Integer; const AValue: TFPColor);\nbegin\n  FBitmap.SetPixel(x,y,FPColorToBGRA(AValue));\nend;\n\nfunction TBGRACanvas.ComputeEllipseC(x1, y1, x2, y2: integer; out cx, cy, rx,\n  ry: single): boolean;\nbegin\n  cx := (x1+x2-1)/2;\n  cy := (y1+y2-1)/2;\n  rx := abs((x2-x1)/2);\n  ry := abs((y2-y1)/2);\n  result := (rx<>0) and (ry<>0);\nend;\n\nfunction TBGRACanvas.CheckRectangle(var x1, y1, x2, y2: integer; out tx, ty: integer\n  ): boolean;\nvar\n  temp: integer;\nbegin\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  tx := x2-x1;\n  ty := y2-y1;\n  result := (tx<>0) and (ty <>0);\nend;\n\nprocedure TBGRACanvas.ApplyPenStyle;\nvar\n  TempPenStyle: TBGRAPenStyle;\n  i: Integer;\nbegin\n  FBitmap.JoinStyle := FPen.JoinStyle;\n  FBitmap.LineCap := FPen.EndCap;\n  if FPen.Width = 1 then\n  begin\n    SetLength(TempPenStyle, length(FPen.CustomStyle));\n    for i := 0 to high(TempPenStyle) do\n      TempPenStyle[i] := FPen.CustomStyle[i]*4;\n    FBitmap.CustomPenStyle := TempPenStyle;\n  end else\n    FBitmap.CustomPenStyle := FPen.CustomStyle;\nend;\n\nprocedure TBGRACanvas.ApplyFont;\nbegin\n  FBitmap.FontName := Font.Name;\n  FBitmap.FontHeight := -Font.Height;\n  FBitmap.FontStyle := Font.Style;\n  FBitmap.FontQuality := Font.Quality;\n  FBitmap.FontOrientation := Font.Orientation;\nend;\n\nfunction TBGRACanvas.NoPen: boolean;\nbegin\n  result := Pen.Invisible;\nend;\n\nfunction TBGRACanvas.NoBrush: boolean;\nbegin\n  result := Brush.Invisible;\nend;\n\nconstructor TBGRACanvas.Create(ABitmap: TBGRACustomBitmap);\nbegin\n  FBitmap := ABitmap;\n  AntialiasingMode := amOn;\n  FPen := TBGRAPen.Create;\n  FPenPos := Point(0,0);\n  FFont := TBGRAFont.Create;\n  FBrush := TBGRABrush.Create;\n  FClippingOn := False;\n  FInactiveClipRect := FBitmap.ClipRect;\n  FillMode := fmWinding;\n  DrawFontBackground := True;\nend;\n\ndestructor TBGRACanvas.Destroy;\nbegin\n  FPen.Free;\n  FBrush.Free;\n  FFont.Free;\nend;\n\nprocedure TBGRACanvas.MoveTo(x, y: integer);\nbegin\n  MoveTo(Point(x,y));\nend;\n\nprocedure TBGRACanvas.MoveTo(p: TPoint);\nbegin\n  FPenPos := p;\nend;\n\nprocedure TBGRACanvas.LineTo(x, y: integer);\nvar pts: array of TPointF;\n  b: TUniversalBrush;\nbegin\n  Pen.GetUniversalBrush(b);\n  if not b.DoesNothing then\n  begin\n    //1 pixel-wide solid pen is rendered with pixel line\n    if (Pen.Style = psSolid) and (Pen.ActualWidth = 1) then\n    begin\n      if AntialiasingMode = amOff then\n        FBitmap.DrawLine(FPenPos.x,FPenPos.y,x,y, b, False)\n      else\n        FBitmap.DrawLineAntialias(FPenPos.x,FPenPos.y,x,y, b, False);\n    end else\n    begin\n      ApplyPenStyle;\n      if AntialiasingMode = amOff then\n      begin\n        pts := FBitmap.ComputeWidePolyline([PointF(FPenPos.x,FPenPos.y),PointF(x,y)],Pen.ActualWidth);\n        FBitmap.FillPoly(pts, b);\n      end else\n        FBitmap.DrawLineAntialias(FPenPos.x,FPenPos.y,x,y, b, Pen.ActualWidth);\n    end;\n  end;\n  MoveTo(x,y);\nend;\n\nprocedure TBGRACanvas.LineTo(p: TPoint);\nbegin\n  LineTo(p.x,p.y);\nend;\n\nprocedure TBGRACanvas.Line(x1, y1, x2, y2: integer);\nbegin\n  MoveTo(x1,y1);\n  LineTo(x2,y2);\nend;\n\nprocedure TBGRACanvas.Line(p1, p2: TPoint);\nbegin\n  MoveTo(p1);\n  LineTo(p2);\nend;\n\nprocedure TBGRACanvas.Arc(x1, y1, x2, y2, sx, sy, ex, ey: integer);\nvar\n  angle1,angle2: word;\n  cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(x1,y1,x2,y2,cx,cy,rx,ry) then exit;\n  angle1 := round(arctan2(-(sy-cy)/ry,(sx-cx)/rx)*65536/(2*Pi));\n  angle2 := round(arctan2(-(ey-cy)/ry,(ex-cx)/rx)*65536/(2*Pi));\n  Arc65536(x1,y1,x2,y2,angle1, angle2, []);\nend;\n\nprocedure TBGRACanvas.Arc(x1, y1, x2, y2, StartDeg16, LengthDeg16: integer);\nbegin\n  if LengthDeg16 > 360*16 then LengthDeg16 := 360*16;\n  Arc65536(x1,y1,x2,y2,StartDeg16*512 div 45, (StartDeg16+LengthDeg16)*512 div 45, []);\nend;\n\nprocedure TBGRACanvas.Arc65536(x1, y1, x2, y2: integer; start65536, end65536: word; Options: TArcOptions);\nvar cx,cy,rx,ry,w: single;\n    arcPts,penPts: array of TPointF;\n    multi: TBGRAMultishapeFiller;\n    tex: IBGRAScanner;\n    hasFill, hasPen: Boolean;\n    b: TUniversalBrush;\nbegin\n  if NoPen and NoBrush then exit;\n  if not ComputeEllipseC(x1,y1,x2,y2,cx,cy,rx,ry) then exit;\n\n  DecF(rx, 0.50);\n  DecF(ry, 0.50);\n  w := Pen.ActualWidth;\n\n  if AntialiasingMode = amOff then\n  begin\n    if not NoPen and not Odd(Pen.ActualWidth) then\n    begin\n      DecF(rx, 0.01);\n      DecF(ry, 0.01);\n    end;\n  end;\n\n  if NoPen then\n  begin\n    DecF(cx, 0.5);\n    DecF(cy, 0.5);\n    DecF(rx, 0.2);\n    DecF(ry, 0.2);\n    if (rx<0) or (ry<0) then exit;\n  end;\n\n  arcPts := ComputeArc65536(cx,cy,rx,ry,start65536,end65536);\n  if (aoPie in Options) and (start65536 <> end65536) then\n  begin\n    setlength(arcPts,length(arcPts)+1);\n    arcPts[high(arcPts)] := PointF(cx,cy);\n  end;\n\n  hasFill := (aoFillPath in Options) and not NoBrush;\n  hasPen := not NoPen;\n  if hasPen then\n  begin\n    ApplyPenStyle;\n    if (aoClosePath in Options) or (aoPie in Options) then\n      penPts := FBitmap.ComputeWidePolygon(arcPts,w)\n      else penPts := FBitmap.ComputeWidePolyline(arcPts,w);\n  end\n  else\n    penPts := nil;\n\n  if hasPen and (Pen.ActualDrawMode <> dmDrawWithTransparency) then\n  begin\n    if hasFill then\n    begin\n      Brush.GetUniversalBrush(FBitmap, b);\n      if AntialiasingMode <> amOff then\n        FBitmap.FillPolyAntialias(arcPts, b)\n        else FBitmap.FillPoly(arcPts, b);\n    end;\n    if hasPen then\n    begin\n      Pen.GetUniversalBrush(b);\n      if AntialiasingMode <> amOff then\n        FBitmap.FillPolyAntialias(penPts, b)\n        else FBitmap.FillPoly(penPts, b);\n    end;\n  end else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.Antialiasing := AntialiasingMode <> amOff;\n    multi.FillMode := FillMode;\n    multi.PolygonOrder := poLastOnTop;\n    multi.AliasingIncludeBottomRight := True;\n    if hasFill then\n    begin\n      tex := Brush.BuildTexture(FBitmap);\n      if tex <> nil then\n        multi.AddPolygon(arcPts, tex) else\n        multi.AddPolygon(arcPts, Brush.ActualColor);\n    end;\n    if hasPen then\n      multi.AddPolygon(penPts, Pen.ActualColor);\n    multi.Draw(FBitmap, Brush.ActualDrawMode);\n    multi.Free;\n  end;\nend;\n\nprocedure TBGRACanvas.Chord(x1, y1, x2, y2, sx, sy, ex, ey: integer);\nvar\n  angle1,angle2: word;\n  cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(x1,y1,x2,y2,cx,cy,rx,ry) then exit;\n  angle1 := round(arctan2(-(sy-cy)/ry,(sx-cx)/rx)*65536/(2*Pi)) and 65535;\n  angle2 := round(arctan2(-(ey-cy)/ry,(ex-cx)/rx)*65536/(2*Pi)) and 65535;\n  Arc65536(x1,y1,x2,y2,angle1, angle2, [aoClosePath,aoFillPath]);\nend;\n\nprocedure TBGRACanvas.Chord(x1, y1, x2, y2, StartDeg16, LengthDeg16: integer);\nbegin\n  if LengthDeg16 > 360*16 then LengthDeg16 := 360*16;\n  Arc65536(x1,y1,x2,y2,StartDeg16*512 div 45, (StartDeg16+LengthDeg16)*512 div 45,[aoClosePath,aoFillPath]);\nend;\n\nprocedure TBGRACanvas.Pie(x1, y1, x2, y2, sx, sy, ex, ey: integer);\nvar\n  angle1,angle2: word;\n  cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(x1,y1,x2,y2,cx,cy,rx,ry) then exit;\n  angle1 := round(arctan2(-(sy-cy)/ry,(sx-cx)/rx)*65536/(2*Pi)) and 65535;\n  angle2 := round(arctan2(-(ey-cy)/ry,(ex-cx)/rx)*65536/(2*Pi)) and 65535;\n  Arc65536(x1,y1,x2,y2,angle1, angle2, [aoPie,aoFillPath]);\nend;\n\nprocedure TBGRACanvas.Pie(x1, y1, x2, y2, StartDeg16, LengthDeg16: integer);\nbegin\n  if LengthDeg16 > 360*16 then LengthDeg16 := 360*16;\n  Arc65536(x1,y1,x2,y2,StartDeg16*512 div 45, (StartDeg16+LengthDeg16)*512 div 45,[aoPie,aoFillPath]);\nend;\n\nprocedure TBGRACanvas.RadialPie(x1, y1, x2, y2, StartDeg16, LengthDeg16: integer\n  );\nbegin\n  Pie(x1,y1,x2,y2,StartDeg16,LengthDeg16);\nend;\n\nprocedure TBGRACanvas.Ellipse(x1, y1, x2, y2: integer);\nvar cx,cy,rx,ry,w: single;\n    tex: IBGRAScanner;\n    multi: TBGRAMultishapeFiller;\n    pb, bb: TUniversalBrush;\nbegin\n  if NoPen and NoBrush then exit;\n  if (AntialiasingMode = amOff) and not NoPen and (Pen.Style = psSolid) and (Pen.ActualWidth = 1) then\n  begin\n    Pen.GetUniversalBrush(pb);\n    Brush.GetUniversalBrush(FBitmap, bb);\n    BGRARoundRectAliased(FBitmap, x1,y1,x2,y2, abs(x2-x1),abs(y2-y1), pb,bb, 65535);\n    exit;\n  end;\n  if not ComputeEllipseC(x1,y1,x2,y2,cx,cy,rx,ry) then exit;\n  w := Pen.ActualWidth;\n  DecF(rx, 0.50);\n  DecF(ry, 0.50);\n\n  if AntialiasingMode = amOff then\n  begin\n    if not NoPen and not Odd(Pen.ActualWidth) then\n    begin\n      DecF(rx, 0.01);\n      DecF(ry, 0.01);\n    end;\n  end;\n\n  if NoPen then\n  begin\n    DecF(cx, 0.5);\n    DecF(cy, 0.5);\n    DecF(rx, 0.2);\n    DecF(ry, 0.2);\n    if (rx<0) or (ry<0) then exit;\n  end;\n\n  if not NoPen and (Pen.ActualDrawMode <> dmDrawWithTransparency) then\n  begin\n    if not NoBrush then\n    begin\n      Brush.GetUniversalBrush(FBitmap, bb);\n      if AntialiasingMode <> amOff then\n        FBitmap.FillEllipseAntialias(cx,cy,rx,ry, bb)\n        else FBitmap.FillEllipseInRect(\n               rect(round(cx-rx+0.5), round(cy-ry+0.5), round(cx+rx+0.5), round(cy+ry+0.5)), bb);\n    end;\n    if not NoPen then\n    begin\n      Pen.GetUniversalBrush(pb);\n      ApplyPenStyle;\n      if AntialiasingMode <> amOff then\n        FBitmap.EllipseAntialias(cx,cy,rx,ry, pb, w)\n      else FBitmap.Ellipse(cx,cy,rx,ry, pb, w);\n    end;\n  end else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.Antialiasing := AntialiasingMode <> amOff;\n    multi.PolygonOrder := poLastOnTop;\n    multi.AliasingIncludeBottomRight := True;\n    if not NoBrush then\n    begin\n      tex := Brush.BuildTexture(FBitmap);\n      if tex <> nil then\n        multi.AddEllipse(cx,cy,rx,ry,tex)\n      else\n        multi.AddEllipse(cx,cy,rx,ry,Brush.ActualColor);\n    end;\n    if not NoPen then\n    begin\n      if (Pen.Style = psSolid) and multi.Antialiasing then\n        multi.AddEllipseBorder(cx,cy,rx,ry,w,Pen.ActualColor)\n      else\n      begin\n        ApplyPenStyle;\n        multi.AddPolygon(FBitmap.ComputeWidePolygon(ComputeEllipse(cx,cy,rx,ry),w),Pen.ActualColor);\n      end;\n    end;\n    multi.Draw(FBitmap);\n    multi.Free;\n  end;\nend;\n\nprocedure TBGRACanvas.Ellipse(const bounds: TRect);\nbegin\n  Ellipse(bounds.left,bounds.top,bounds.right,bounds.Bottom);\nend;\n\nprocedure TBGRACanvas.Rectangle(x1, y1, x2, y2: integer; Filled: Boolean = True);\nvar tx,ty: integer;\n    tex: IBGRAScanner;\n    multi: TBGRAMultishapeFiller;\n    b: TUniversalBrush;\nbegin\n  if NoBrush then Filled := false;\n  if NoPen and not Filled then exit;\n  if not CheckRectangle(x1,y1,x2,y2,tx,ty) then exit;\n\n  if NoPen then\n    FillRect(x1,y1,x2-1,y2-1) //one pixel\n  else\n  begin\n    dec(x2);\n    dec(y2);\n\n    if not NoPen and (Pen.ActualDrawMode <> dmDrawWithTransparency) then\n    begin\n      if AntialiasingMode <> amOff then\n      begin\n        if Filled then FillRect(x1,y1,x2,y2);\n        ApplyPenStyle;\n        Pen.GetUniversalBrush(b);\n        FBitmap.RectangleAntialias(x1,y1,x2,y2, b, Pen.ActualWidth);\n      end else\n        PolygonF([PointF(x1,y1), PointF(x2,y1), PointF(x2,y2), PointF(x1,y2)]);\n    end else\n    begin\n      multi := TBGRAMultishapeFiller.Create;\n      multi.Antialiasing := AntialiasingMode <> amOff;\n      multi.PolygonOrder := poLastOnTop;\n      if Filled then\n      begin\n        tex := Brush.BuildTexture(FBitmap);\n        if tex <> nil then\n          multi.AddRectangle(x1,y1,x2,y2,tex)\n          else multi.AddRectangle(x1,y1,x2,y2,Brush.ActualColor);\n      end;\n      if not NoPen then\n      begin\n        ApplyPenStyle;\n        if (Pen.Style = psSolid) and (Pen.JoinStyle = pjsMiter) and (FBitmap.JoinMiterLimit > 1.4142) then\n          multi.AddRectangleBorder(x1,y1,x2,y2, Pen.ActualWidth, Pen.ActualColor)\n        else\n          multi.AddPolygon(FBitmap.ComputeWidePolygon(\n            [PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)], Pen.ActualWidth),\n            Pen.ActualColor);\n      end;\n      multi.Draw(FBitmap);\n      multi.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACanvas.Rectangle(const bounds: TRect; Filled: Boolean = True);\nbegin\n  Rectangle(bounds.left,bounds.top,bounds.right,bounds.Bottom, Filled);\nend;\n\nprocedure TBGRACanvas.Frame(x1, y1, x2, y2: integer);\nbegin\n  Rectangle(x1,y1,x2,y2,False);\nend;\n\nprocedure TBGRACanvas.Frame(const bounds: TRect);\nbegin\n  Rectangle(bounds,False);\nend;\n\nprocedure TBGRACanvas.RoundRect(x1, y1, x2, y2: integer; dx,dy: integer);\nvar tx,ty: integer;\n    tex: IBGRAScanner;\n    multi: TBGRAMultishapeFiller;\n    x1f,y1f,x2f,y2f: single;\n    pb, fb: TUniversalBrush;\nbegin\n  if not CheckRectangle(x1,y1,x2,y2,tx,ty) then exit;\n  if not NoPen and (AntialiasingMode = amOff) and (Pen.Style = psSolid) and (Pen.ActualWidth = 1) then\n  begin\n    ApplyPenStyle;\n    Pen.GetUniversalBrush(pb);\n    Brush.GetUniversalBrush(FBitmap, fb);\n    FBitmap.RoundRect(x1,y1,x2,y2, dx,dy, pb, fb);\n  end else\n  begin\n    dec(x2);\n    dec(y2);\n    if not NoPen and (Pen.ActualDrawMode <> dmDrawWithTransparency) then\n      PolygonF(FBitmap.ComputeRoundRect(x1,y1,x2,y2, dx/2,dy/2, [])) else\n    begin\n      multi := TBGRAMultishapeFiller.Create;\n      multi.Antialiasing := AntialiasingMode <> amOff;\n      multi.PolygonOrder := poLastOnTop;\n      if not NoBrush then\n      begin\n        if NoPen then\n        begin\n          x1f := x1-0.5;\n          y1f := y1-0.5;\n          x2f := x2+0.5;\n          y2f := y2+0.5;\n        end else\n        begin\n          x1f := x1;\n          y1f := y1;\n          x2f := x2;\n          y2f := y2;\n        end;\n        tex := Brush.BuildTexture(FBitmap);\n        if tex <> nil then\n          multi.AddRoundRectangle(x1f,y1f,x2f,y2f,dx/2,dy/2,tex)\n        else\n          multi.AddRoundRectangle(x1f,y1f,x2f,y2f,dx/2,dy/2,Brush.ActualColor);\n      end;\n      if not NoPen then\n      begin\n        ApplyPenStyle;\n        if Pen.Style = psSolid then\n          multi.AddRoundRectangleBorder(x1,y1,x2,y2,dx/2,dy/2, Pen.ActualWidth ,Pen.ActualColor)\n        else\n          multi.AddPolygon(FBitmap.ComputeWidePolygon(ComputeRoundRect(x1,y1,x2,y2,dx/2,dy/2), Pen.ActualWidth),\n                           Pen.ActualColor);\n      end;\n      multi.Draw(FBitmap);\n      multi.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACanvas.RoundRect(const bounds: TRect; dx,dy: integer);\nbegin\n  RoundRect(bounds.left,bounds.top,bounds.right,bounds.Bottom,dx,dy);\nend;\n\nprocedure TBGRACanvas.EllipseC(x, y, rx, ry: integer);\nbegin\n  Ellipse (Rect(x-rx,y-ry,x+rx,y+ry));\nend;\n\nprocedure TBGRACanvas.FillRect(x1, y1, x2, y2: integer);\nvar\n  b: TUniversalBrush;\nbegin\n  if NoBrush then exit;\n  Brush.GetUniversalBrush(FBitmap, b);\n  FBitmap.FillRect(x1,y1,x2,y2, b);\nend;\n\nprocedure TBGRACanvas.FillRect(const bounds: TRect);\nbegin\n  FillRect(bounds.left,bounds.top,bounds.right,bounds.Bottom);\nend;\n\nprocedure TBGRACanvas.FrameRect(x1, y1, x2, y2: integer; width: integer = 1);\nvar\n  Temp: integer;\n  b: TUniversalBrush;\n  ofs: single;\nbegin\n  if (x1= x2) or (y1 =y2) or NoBrush then exit;\n  if x1 > x2 then\n  begin\n    Temp := x1;\n    x1 := x2;\n    x2 := Temp;\n  end;\n  if y1 > y2 then\n  begin\n    Temp := y1;\n    y1 := y2;\n    y2 := Temp;\n  end;\n  dec(x2);\n  dec(y2);\n\n  Brush.GetUniversalBrush(FBitmap, b);\n  FBitmap.PenStyle := psSolid;\n  FBitmap.JoinStyle := pjsMiter;\n  if not odd(width) and (AntialiasingMode = amOff) then\n    ofs := 0.5 else ofs := 0;\n  FBitmap.RectangleAntialias(x1+ofs, y1+ofs, x2+ofs, y2+ofs, b, width);\nend;\n\nprocedure TBGRACanvas.FrameRect(const bounds: TRect; width: integer = 1);\nbegin\n  FrameRect(bounds.left,bounds.top,bounds.right,bounds.Bottom,width);\nend;\n\nprocedure TBGRACanvas.Frame3D(var bounds: TRect; width: integer;\n  Style: TGraphicsBevelCut);\nbegin\n  Frame3D(bounds,width,style,ColorToBGRA(clRgbBtnHighlight),ColorToBGRA(clRgbBtnShadow));\nend;\n\nprocedure TBGRACanvas.Frame3D(var bounds: TRect; width: integer;\n  Style: TGraphicsBevelCut; LightColor: TBGRAPixel; ShadowColor: TBGRAPixel);\nvar temp: TBGRAPixel;\n    multi: TBGRAMultishapeFiller;\n    color1,color2: TBGRAPixel;\nbegin\n  if width <= 0 then exit;\n  color1 := LightColor;\n  color2 := ShadowColor;\n  if Style = bvLowered then\n  begin\n    temp := color1;\n    color1 := color2;\n    color2 := temp;\n  end;\n  if Style in [bvLowered,bvRaised] then\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.Antialiasing := AntialiasingMode <> amOff;\n    multi.AddPolygon([PointF(bounds.Left-0.5,bounds.Top-0.5),PointF(bounds.Right-0.5,bounds.Top-0.5),\n                      PointF(bounds.Right-0.5-width,bounds.Top-0.5+width),PointF(bounds.Left-0.5+width,bounds.Top-0.5+width),\n                      PointF(bounds.Left-0.5+width,bounds.Bottom-0.5-width),PointF(bounds.Left-0.5,bounds.Bottom-0.5)],color1);\n    multi.AddPolygon([PointF(bounds.Right-0.5,bounds.Bottom-0.5),PointF(bounds.Left-0.5,bounds.Bottom-0.5),\n                      PointF(bounds.Left-0.5+width,bounds.Bottom-0.5-width),PointF(bounds.Right-0.5-width,bounds.Bottom-0.5-width),\n                      PointF(bounds.Right-0.5-width,bounds.Top-0.5+width),PointF(bounds.Right-0.5,bounds.Top-0.5)],color2);\n    multi.Draw(FBitmap);\n    multi.Free;\n  end;\n  bounds.Inflate(-width,-width);\nend;\n\nprocedure TBGRACanvas.GradientFill(ARect: TRect; AStart, AStop: TColor;\n  ADirection: TGradientDirection; GammaCorrection: Boolean = false);\nvar\n  Count: Integer;\n\n  procedure NotGammaCorrected;\n  var\n    c: TBGRAPixel;\n    I: Integer;\n    BDiff,GDiff,RDiff: Integer;\n    BStop,BStart: Byte;\n    GStop,GStart: Byte;\n    RStop,RStart: Byte;\n  begin\n      RedGreenBlue(ColorToRGB(AStart), RStart, GStart, BStart);\n      RedGreenBlue(ColorToRGB(AStop),  RStop,  GStop,  BStop);\n\n      RDiff := RStop - RStart;\n      GDiff := GStop - GStart;\n      BDiff := BStop - BStart;\n\n      for I := 0 to Count-1 do\n      begin\n        c := BGRA(RStart + (i * RDiff) div Count,\n                  GStart + (i * GDiff) div Count,\n                  BStart + (i * BDiff) div Count);\n\n        if ADirection = gdHorizontal then\n          FBitmap.SetVertLine(ARect.Left+I,ARect.Top,ARect.Bottom-1,c)\n        else\n          FBitmap.SetHorizLine(ARect.Left,ARect.Top+I,ARect.Right-1,c);\n      end;\n  end;\n\n  procedure GammaCorrected;\n  var\n    ec: TExpandedPixel;\n    c: TBGRAPixel;\n    I: Integer;\n    BDiff,GDiff,RDiff: Integer;\n    CStart,CStop: TExpandedPixel;\n  begin\n    CStart := GammaExpansion(ColorToBGRA(AStart));\n    CStop := GammaExpansion(ColorToBGRA(AStop));\n\n    RDiff := CStop.red - CStart.red;\n    GDiff := CStop.green - CStart.green;\n    BDiff := CStop.blue - CStart.blue;\n\n    for I := 0 to Count-1 do\n    begin\n      ec.red := CStart.red + (i * RDiff) div Count;\n      ec.green := CStart.green + (i * GDiff) div Count;\n      ec.blue := CStart.blue + (i * BDiff) div Count;\n      ec.alpha := $ffff;\n      c := GammaCompression(ec);\n\n      if ADirection = gdHorizontal then\n        FBitmap.SetVertLine(ARect.Left+I,ARect.Top,ARect.Bottom-1,c)\n      else\n        FBitmap.SetHorizLine(ARect.Left,ARect.Top+I,ARect.Right-1,c);\n    end;\n  end;\n\nbegin\n  with ARect do\n    if (Right <= Left) or (Bottom <= Top) then\n      Exit;\n\n  if ADirection = gdVertical then\n    Count := ARect.Bottom - ARect.Top\n  else\n    Count := ARect.Right - ARect.Left;\n\n  if GammaCorrection then\n    GammaCorrected else\n    NotGammaCorrected;\nend;\n\nprocedure TBGRACanvas.FloodFill(X, Y: Integer; FillColor: TColor;\n  FillStyle: TFillStyle);\nbegin\n  FloodFill(X,Y,ColorToBGRA(FillColor,255),FillStyle);\nend;\n\nprocedure TBGRACanvas.FloodFill(X, Y: Integer; FillColor: TBGRAPixel;\n  FillStyle: TFillStyle);\nvar\n  b: TUniversalBrush;\nbegin\n  if FillStyle = fsSurface then\n  begin\n    if FBitmap.GetPixel(X,Y) <> FillColor then exit;\n    Brush.GetUniversalBrush(FBitmap, b);\n    FBitmap.FloodFill(X,Y, b, false);\n  end;\n   //fsBorder not handled\nend;\n\nprocedure TBGRACanvas.FloodFill(X, Y: Integer);\nbegin\n  FloodFill(X,Y,FBitmap.GetPixel(X,Y),fsSurface);\nend;\n\nprocedure TBGRACanvas.Polygon(const APoints: array of TPoint);\nbegin\n  Polygon(@APoints[0],length(APoints), FillMode = fmWinding);\nend;\n\nprocedure TBGRACanvas.Polygon(const Points: array of TPoint; Winding: Boolean;\n  StartIndex: Integer; NumPts: Integer);\nbegin\n  if (StartIndex < 0) or (StartIndex >= length(Points)) then exit;\n  if NumPts < 0 then NumPts := length(Points)-StartIndex;\n  Polygon(@Points[StartIndex], NumPts, Winding);\nend;\n\nprocedure TBGRACanvas.Polygon(Points: PPoint; NumPts: Integer; Winding: boolean);\nvar\n  ptsF: array of TPointF;\n  i: Integer;\n  Ofs: TPointF;\nbegin\n  if NoPen and NoBrush then exit;\n  if NoPen then Ofs := PointF(-0.5,-0.5) else Ofs := PointF(0,0);\n  setlength(ptsF, NumPts);\n  for i := 0 to NumPts-1 do\n  begin\n    ptsF[i] := PointF(Points^.x,Points^.y)+Ofs;\n    inc(Points);\n  end;\n  PolygonF(ptsF, Winding);\nend;\n\nprocedure TBGRACanvas.PolygonF(const APoints: array of TPointF);\nbegin\n  PolygonF(APoints, FillMode = fmWinding);\nend;\n\nprocedure TBGRACanvas.PolygonF(const APoints: array of TPointF; Winding: Boolean; FillOnly: Boolean = False);\nvar\n  hasPen, hasBrush: Boolean;\n  b: TUniversalBrush;\n  penPts: ArrayOfTPointF;\n  multi: TBGRAMultishapeFiller;\n  tex: IBGRAScanner;\nbegin\n  hasPen := not NoPen and not FillOnly;\n  hasBrush := not NoBrush;\n  if not HasPen and not HasBrush then exit;\n  if hasPen and (Pen.ActualDrawMode <> dmDrawWithTransparency) then\n  begin\n    ApplyPenStyle;\n    Pen.GetUniversalBrush(b);\n    penPts := FBitmap.ComputeWidePolygon(APoints, Pen.ActualWidth);\n    if AntialiasingMode = amOff then\n      FBitmap.FillPoly(penPts, b)\n      else FBitmap.FillPolyAntialias(penPts, b);\n    if hasBrush then\n      PolygonF(APoints, Winding, true);\n  end else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.Antialiasing := AntialiasingMode <> amOff;\n    if Winding then multi.FillMode := fmWinding else\n      multi.FillMode := fmAlternate;\n    multi.PolygonOrder := poLastOnTop;\n    if hasBrush then\n    begin\n      tex := Brush.BuildTexture(FBitmap);\n      if tex <> nil then\n        multi.AddPolygon(APoints, tex)\n        else multi.AddPolygon(APoints, Brush.ActualColor);\n    end;\n    if hasPen then\n    begin\n      ApplyPenStyle;\n      multi.AddPolygon(FBitmap.ComputeWidePolygon(APoints,Pen.ActualWidth), Pen.ActualColor);\n    end;\n    multi.Draw(FBitmap);\n    multi.Free\n  end;\nend;\n\nprocedure TBGRACanvas.Polyline(const APoints: array of TPoint);\nbegin\n  Polyline(@APoints[0],length(APoints));\nend;\n\nprocedure TBGRACanvas.Polyline(const Points: array of TPoint; StartIndex: Integer; NumPts: Integer);\nbegin\n  if (StartIndex < 0) or (StartIndex >= length(Points)) then exit;\n  if NumPts < 0 then NumPts := length(Points)-StartIndex;\n  Polyline(@Points[StartIndex],NumPts);\nend;\n\nprocedure TBGRACanvas.Polyline(Points: PPoint; NumPts: Integer);\nvar\n  i: Integer;\n  ptsF: array of TPointF;\n  oldPos: TPoint;\nbegin\n  if NoPen or (NumPts <= 0) then exit;\n\n  if (Pen.Style = psSolid) and (Pen.ActualWidth = 1) then\n  begin\n    oldPos := FPenPos;\n    MoveTo(Points^.x,Points^.y);\n    for i := 1 to NumPts-1 do\n    begin\n      inc(Points);\n      LineTo(Points^.x,Points^.y);\n    end;\n    FPenPos := oldPos;\n    exit;\n  end;\n\n  setlength(ptsF, NumPts);\n  for i := 0 to NumPts-1 do\n  begin\n    ptsF[i] := PointF(Points^.x,Points^.y);\n    inc(Points);\n  end;\n  PolylineF(ptsF);\nend;\n\nprocedure TBGRACanvas.PolylineF(const APoints: array of TPointF);\nvar ptsF: Array of TPointF;\nbegin\n  if NoPen then exit;\n  ApplyPenStyle;\n  FBitmap.FillMode := fmWinding;\n  ptsF := FBitmap.ComputeWidePolyline(APoints,Pen.ActualWidth);\n  if AntialiasingMode = amOff then\n    FBitmap.FillPoly(ptsF,Pen.ActualColor,dmDrawWithTransparency) else\n    FBitmap.FillPolyAntialias(ptsF,Pen.ActualColor);\nend;\n\nprocedure TBGRACanvas.PolyBezier(Points: PPoint; NumPts: Integer;\n  Filled: boolean; Continuous: boolean);\nvar\n  beziers: array of TCubicBezierCurve;\n  nbBeziers,i: integer;\n  PrevPt: TPointF;\n  spline: array of TPointF;\nbegin\n  if NumPts < 4 then exit;\n  if Continuous then\n  begin\n    nbBeziers := 1+(NumPts-4) div 3;\n    setlength(beziers, nbBeziers);\n    PrevPt := PointF(Points^.x,Points^.y);\n    inc(Points);\n    for i := 0 to nbBeziers-1 do\n    begin\n      beziers[i].p1 := prevPt;\n      beziers[i].c1 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      beziers[i].c2 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      beziers[i].p2 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      prevPt := beziers[i].p2;\n    end;\n  end else\n  begin\n    nbBeziers := NumPts div 4;\n    setlength(beziers, nbBeziers);\n    for i := 0 to nbBeziers-1 do\n    begin\n      beziers[i].p1 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      beziers[i].c1 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      beziers[i].c2 := PointF(Points^.x,Points^.y);\n      inc(Points);\n      beziers[i].p2 := PointF(Points^.x,Points^.y);\n      inc(Points);\n    end;\n  end;\n  spline := ComputeBezierSpline(beziers);\n  if Filled then\n    PolygonF(spline) else\n    PolylineF(spline);\nend;\n\nprocedure TBGRACanvas.PolyBezier(const Points: array of TPoint;\n  Filled: boolean; Continuous: boolean);\nbegin\n  PolyBezier(@Points[0],length(Points),Filled,Continuous);\nend;\n\nprocedure TBGRACanvas.Draw(X, Y: Integer; SrcBitmap: TBGRACustomBitmap);\nbegin\n  FBitmap.PutImage(X,Y,SrcBitmap,dmDrawWithTransparency);\nend;\n\nprocedure TBGRACanvas.Draw(X, Y: Integer; SrcBitmap: TBitmap);\nbegin\n  FBitmap.PutImage(X,Y,SrcBitmap,dmDrawWithTransparency);\nend;\n\nprocedure TBGRACanvas.CopyRect(X, Y: Integer; SrcBitmap: TBGRACustomBitmap;\n  SrcRect: TRect);\nbegin\n  FBitmap.PutImagePart(X,Y,SrcBitmap,SrcRect,dmDrawWithTransparency);\nend;\n\nprocedure TBGRACanvas.StretchDraw(DestRect: TRect; SrcBitmap: TBGRACustomBitmap; HorizFlip: Boolean = false; VertFlip: Boolean = false);\nvar Stretched: TBGRACustomBitmap;\n    temp: Integer;\nbegin\n  with DestRect do\n  begin\n    if (Left= Right) or (Top =Bottom) then exit;\n    if Left > Right then\n    begin\n      Temp := Left;\n      Left := Right+1;\n      Right := Temp+1;\n      HorizFlip := not HorizFlip;\n    end;\n    if Top > Bottom then\n    begin\n      Temp := Top;\n      Top := Bottom+1;\n      Bottom := Temp+1;\n      VertFlip := not VertFlip;\n    end;\n  end;\n  if (DestRect.Right-DestRect.Left <> SrcBitmap.Width) or\n     (DestRect.Bottom-DestRect.Top <> SrcBitmap.Height) or\n     HorizFlip or VertFlip then\n  begin\n    if AntialiasingMode = amOff then\n      Stretched := SrcBitmap.Resample(DestRect.Right-DestRect.Left,DestRect.Bottom-DestRect.Top,rmSimpleStretch) else\n      Stretched := SrcBitmap.Resample(DestRect.Right-DestRect.Left,DestRect.Bottom-DestRect.Top,rmFineResample);\n    if HorizFlip then Stretched.HorizontalFlip;\n    if VertFlip then Stretched.VerticalFlip;\n    FBitmap.PutImage(DestRect.Left,DestRect.Top,Stretched,dmDrawWithTransparency);\n    Stretched.Free;\n  end else\n    FBitmap.PutImage(DestRect.Left,DestRect.Top,SrcBitmap,dmDrawWithTransparency);\nend;\n\nprocedure TBGRACanvas.DrawFocusRect(bounds: TRect);\nvar\n  temp: Integer;\n  xb,yb: integer;\n  c: TBGRAPixel;\nbegin\n  c := Brush.ActualColor;\n  if (c.red = 0) and (c.Green =0) and (c.Blue =0) then exit;\n  c.alpha := 0;\n  with bounds do\n  begin\n    if (Left= Right) or (Top =Bottom) then exit;\n    if Left > Right then\n    begin\n      Temp := Left;\n      Left := Right;\n      Right := Temp;\n    end;\n    if Top > Bottom then\n    begin\n      Temp := Top;\n      Top := Bottom;\n      Bottom := Temp;\n    end;\n    dec(Right);\n    dec(Bottom);\n    for xb := max(FBitmap.ClipRect.Left, bounds.Left+1) to min(FBitmap.ClipRect.Right-1,bounds.Right-1) do\n    begin\n      if odd(xb) xor odd(Top) then FBitmap.XorPixel(xb,Top,c);\n      if odd(xb) xor odd(Bottom) then FBitmap.XorPixel(xb,Bottom,c);\n    end;\n    for yb := max(FBitmap.ClipRect.Top, bounds.Top) to min(FBitmap.ClipRect.Bottom-1,bounds.Bottom) do\n    begin\n      if odd(yb) xor odd(Left) then FBitmap.XorPixel(Left,yb,c);\n      if odd(yb) xor odd(Right) then FBitmap.XorPixel(Right,yb,c);\n    end;\n  end;\nend;\n\nprocedure TBGRACanvas.CopyRect(Dest: TRect; SrcBmp: TBGRACustomBitmap;\n  Source: TRect);\nvar TempBmp: TBGRACustomBitmap;\n  Temp: Integer;\n  FlipHoriz,FlipVert: Boolean;\nbegin\n  if (Dest.Right-Dest.Left = Source.Right-Source.Left) and (Dest.Bottom-Dest.Top = Source.Bottom-Source.Top) and\n     (Dest.Right > Dest.Left) and (Dest.Bottom > Dest.Top) then\n  begin\n    CopyRect(Dest.Left,Dest.Top, SrcBmp, Source);\n    exit;\n  end;\n  if (Source.Left = Source.Right) or (Source.Bottom = Source.Top) or\n    (Dest.Left = Dest.Right) or (Dest.Bottom = Dest.Top) then exit;\n  if Source.Left > Source.Right then\n  begin\n    Temp := Source.Left;\n    Source.Left := Source.Right+1;\n    Source.Right := Temp+1;\n    FlipHoriz := True;\n  end else\n    FlipHoriz := false;\n  if Source.Top > Source.Bottom then\n  begin\n    Temp := Source.Top;\n    Source.Top := Source.Bottom+1;\n    Source.Bottom := Temp+1;\n    FlipVert := True;\n  end else\n    FlipVert := false;\n  TempBmp := SrcBmp.GetPart(Source);\n  StretchDraw(Dest,TempBmp,FlipHoriz,FlipVert);\n  TempBmp.Free;\nend;\n\nprocedure TBGRACanvas.TextOut(X, Y: Integer;\n            const Text: String; RightToLeft: boolean);\nvar size: TSize;\n    c,s: single;\nbegin\n  ApplyFont;\n  if DrawFontBackground then\n  begin\n    size := TextExtent(Text);\n    c := cos(Font.Orientation*Pi/1800);\n    s := -sin(Font.Orientation*Pi/1800);\n    PolygonF([PointF(X,Y),PointF(X+c*size.cx,Y+s*size.cx),\n              PointF(X+c*size.cx-s*size.cy,Y+s*size.cx+c*size.cy),\n              PointF(X-s*size.cy,Y+c*size.cy)],False,True);\n  end;\n  if Font.Texture <> nil then\n    FBitmap.TextOut(x,y,Text,Font.Texture, taLeftJustify, RightToLeft) else\n    FBitmap.TextOut(x,y,Text,Font.BGRAColor, taLeftJustify, RightToLeft);\nend;\n\nprocedure TBGRACanvas.TextRect(const ARect: TRect; X, Y: integer;\n  const Text: string);\nbegin\n  ApplyFont;\n  if Font.Texture <> nil then\n    FBitmap.TextRect(ARect,x,y,Text,self.TextStyle,Font.Texture) else\n    FBitmap.TextRect(ARect,x,y,Text,self.TextStyle,Font.BGRAColor);\nend;\n\nprocedure TBGRACanvas.TextRect(ARect: TRect; X, Y: integer; const Text: string;\n  const Style: TTextStyle);\nbegin\n  ApplyFont;\n  if Font.Texture <> nil then\n    FBitmap.TextRect(ARect,x,y,Text,Style,Font.Texture) else\n    FBitmap.TextRect(ARect,x,y,Text,Style,Font.BGRAColor);\nend;\n\nfunction TBGRACanvas.TextExtent(const Text: string): TSize;\nbegin\n  ApplyFont;\n  result := FBitmap.TextSize(Text);\nend;\n\n{$hints off}\nfunction TBGRACanvas.TextHeight(const Text: string): Integer;\nbegin\n  ApplyFont;\n  result := FBitmap.TextSize(Text).cy;\nend;\n{$hints on}\n\nfunction TBGRACanvas.TextWidth(const Text: string): Integer;\nbegin\n  ApplyFont;\n  result := FBitmap.TextSize(Text).cx;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracanvas2d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Equivalent to HTML Canvas (supports affine transformation, gradients and clipping).)\n\n  To use it, access Canvas2D property of a TBGRABitmap object or create an instance of TBGRACanvas2D.\n\n  Fonctions are similar to Javascript [CanvasRenderingContext2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)}\nunit BGRACanvas2D;\n\n{ To do :\n\n  partial image\n    drawImage(in image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh)\n    -> using FillPoly with texture coordinates\n  linear gradient any transformation\n  clearPath clipping\n  globalCompositeOperation\n  image data functions\n  imageSmoothingEnabled\n}\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, BGRATransform,\n  BGRAGradientScanner, BGRAPath, BGRAPen, BGRAGrayscaleMask;\n\ntype\n  ArrayOfString = array of string;\n\n  { Interface for a texture/scanner for Tcanvas2D }\n  IBGRACanvasTextureProvider2D = interface\n    function getTexture: IBGRAScanner;\n    property texture: IBGRAScanner read GetTexture;\n  end;\n\n  { Interface for a gradient for TCanvas2D }\n  IBGRACanvasGradient2D = interface(IBGRACanvasTextureProvider2D)\n    procedure addColorStop(APosition: single; AColor: TBGRAPixel);\n    procedure addColorStop(APosition: single; AColor: TColor);\n    procedure addColorStop(APosition: single; AColor: string);\n    procedure setColors(ACustomGradient: TBGRACustomGradient);\n    function GetGammaCorrection: boolean;\n    procedure SetGammaCorrection(AValue: boolean);\n    function GetRepetition: TBGRAGradientRepetition;\n    procedure SetRepetition(AValue: TBGRAGradientRepetition);\n    property gammaCorrection: boolean read GetGammaCorrection write SetGammaCorrection;\n    property repetition: TBGRAGradientRepetition read GetRepetition write SetRepetition;\n  end;\n\n  { @abstract(Provides a texture to a TCanvas2D.) }\n  TBGRACanvasTextureProvider2D = class(TInterfacedObject,IBGRACanvasTextureProvider2D)\n    function getTexture: IBGRAScanner; virtual; abstract;\n  end;\n\n  { Saved state of a TCanvas2D }\n  TBGRACanvasState2D = class\n  private\n    FClipMask: TGrayscaleMask;\n    FClipMaskOwned: boolean;\n    function GetClipMaskReadWrite: TGrayscaleMask;\n  public\n    strokeColor: TBGRAPixel;\n    strokeTextureProvider: IBGRACanvasTextureProvider2D;\n    fillColor: TBGRAPixel;\n    fillMode: TFillMode;\n    fillTextureProvider: IBGRACanvasTextureProvider2D;\n    globalAlpha: byte;\n\n    fontName: string;\n    fontStyle: TFontStyles;\n    fontEmHeight: single;\n    textAlign: TAlignment;\n    textBaseline: string;\n    textDirection: TFontBidiMode;\n\n    lineWidth: single;\n    penStroker: TBGRAPenStroker;\n\n    shadowOffsetX,shadowOffsetY,shadowBlur: single;\n    shadowColor: TBGRAPixel;\n    shadowFastest: boolean;\n\n    matrix: TAffineMatrix;\n    constructor Create(AMatrix: TAffineMatrix; AClipMask: TGrayscaleMask; AClipMaskOwned: boolean);\n    function Duplicate: TBGRACanvasState2D;\n    destructor Destroy; override;\n    procedure transform(AMatrix: TAffineMatrix);\n    procedure SetClipMask(AClipMask: TGrayscaleMask; AOwned: boolean);\n    property clipMaskReadOnly: TGrayscaleMask read FClipMask;\n    property clipMaskReadWrite: TGrayscaleMask read GetClipMaskReadWrite;\n  end;\n\n  { Text measurement in TBGRACanvas2D }\n  TCanvas2dTextSize = record\n    width,height: single;\n  end;\n\n  { @abstract(Implementation of a canvas similar to [HTML Canvas2d](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D).)\n\nTBGRACanvas2D is the surface to use when rendering with TBGRASVG, TBGRACustomTypeWriter and TBGRAVectorizedFont.\n\n**Comparison between TBGRACanvas2D and Javascript HTML canvas:**\n\n@image(../doc/img/blue_circular_bevel_js.png)\n\n    @table(\n    @rowHead( @cell(BGRABitmap) @cell(JavaScript) )\n    @row(\n\n\t@cell(@LongCode(#\nuses BGRABitmap, BGRABitmapTypes, BGRACanvas2D;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  bmp: TBGRABitmap;\n  ctx: TBGRACanvas2D;\n  gradient: IBGRACanvasGradient2D;\nbegin\n  bmp := TBGRABitmap.Create(ClientWidth, ClientHeight,\n                            StrToBGRA('#E0E2E5'));\n  ctx := bmp.Canvas2d;\n\n  // Draw the outer rounded rectangle\n  gradient := ctx.createLinearGradient(100, 20, 100, 180);\n  gradient.addColorStop(0, 'white');\n  gradient.addColorStop(1, '#7C878A');\n  ctx.fillStyle(gradient);\n  ctx.beginPath();\n  ctx.roundRect(20, 20, 160, 160, 20);\n  ctx.save();\n  ctx.shadowBlur := 10;\n  ctx.shadowColor('rgba(0,0,0, .8)');\n  ctx.shadowOffsetX := 0;\n  ctx.shadowOffsetY := 10;\n  ctx.fill();\n  ctx.restore();\n\n  // Draw the blue circle with gradient\n  gradient := ctx.createLinearGradient(100, 30, 100, 170);\n  gradient.addColorStop(0, '#CAEBF5');\n  gradient.addColorStop(1, '#0F5369');\n  ctx.strokeStyle(gradient);\n  ctx.beginPath();\n  ctx.arc(100, 100, 70, 0, Pi * 2);\n  ctx.lineWidth := 10;\n  ctx.stroke();\n\n  gradient := ctx.createLinearGradient(100, 50, 100, 150);\n  gradient.addColorStop(0, '#003C50');\n  gradient.addColorStop(1, '#53E6FF');\n  ctx.strokeStyle(gradient);\n  ctx.beginPath();\n  ctx.arc(100, 100, 60, 0, Pi * 2);\n  ctx.lineWidth := 10;\n  ctx.stroke();\n\n  bmp.Draw(Canvas, 0,0, true);\n  bmp.Free;\nend;\n\n\t#))\n\n\t@cell(\n\tTry on [JSFiddle](https://jsfiddle.net/qvcps6u2/)\n\t@LongCode(#\nvar my_canvas = document.getElementById('canvas'),\n    ctx = my_canvas.getContext(\"2d\");\n\nctx.fillStyle = \"#E0E2E5\";\nctx.fillRect(0, 0, 200, 200);\n\n// Draw the outer rounded rectangle\nvar gradient = ctx.createLinearGradient(100, 20, 100, 180);\ngradient.addColorStop(0, \"white\");\ngradient.addColorStop(1, \"#7C878A\");\nctx.fillStyle = gradient;\nctx.beginPath();\nctx.roundRect(20, 20, 160, 160, 20);\nctx.save();\nctx.shadowBlur = 10;\nctx.shadowColor = \"rgba(0,0,0, .6)\";\nctx.shadowOffsetX = 0;\nctx.shadowOffsetY = 10;\nctx.fill();\nctx.restore();\n\n// Draw the blue circle with gradient\ngradient = ctx.createLinearGradient(100, 30, 100, 170);\ngradient.addColorStop(0, \"#CAEBF5\");\ngradient.addColorStop(1, \"#0F5369\");\nctx.strokeStyle = gradient;\nctx.beginPath();\nctx.arc(100, 100, 70, 0, Math.PI * 2);\nctx.lineWidth = 10;\nctx.stroke();\n\ngradient = ctx.createLinearGradient(100, 50, 100, 150);\ngradient.addColorStop(0, \"#003C50\");\ngradient.addColorStop(1, \"#53E6FF\");\nctx.strokeStyle = gradient;\nctx.beginPath();\nctx.arc(100, 100, 60, 0, Math.PI * 2);\nctx.lineWidth = 10;\nctx.stroke();\n\t#))\n\n\t)\n  )\n}\n  TBGRACanvas2D = class(IBGRAPath)\n  private\n    FSurface: TBGRACustomBitmap;\n    StateStack: TList;\n    currentState: TBGRACanvasState2D;\n    FCanvasOffset: TPointF;\n    FPixelCenteredCoordinates: boolean;\n    FPathPoints: array of TPointF;\n    FPathPointCount: integer;\n    FTextPaths: array of record\n        Text: string;\n        FontName: string;\n        FontMatrix: TAffineMatrix;\n        FontAlign: TAlignment;\n        FontAnchor: TFontVerticalAnchor;\n        FontStyle: TFontStyles;\n        TextDirection: TFontBidiMode;\n      end;\n    FFontRenderer: TBGRACustomFontRenderer;\n    FLastCoord, FStartCoord: TPointF;\n    function GetCurrentPathAsPoints: ArrayOfTPointF;\n    function GetTextDirection: TFontBidiMode;\n    function GetFontName: string;\n    function GetFontRenderer: TBGRACustomFontRenderer;\n    function GetFontEmHeight: single;\n    function GetFontString: string;\n    function GetFontStyle: TFontStyles;\n    function GetGlobalAlpha: single;\n    function GetHasShadow: boolean;\n    function GetHeight: Integer;\n    function GetLineCap: string;\n    function GetLineCapLCL: TPenEndCap;\n    function GetlineJoin: string;\n    function GetlineJoinLCL: TPenJoinStyle;\n    function GetLineWidth: single;\n    function GetMatrix: TAffineMatrix;\n    function GetMiterLimit: single;\n    function GetPixelCenteredCoordinates: boolean;\n    function GetShadowBlur: single;\n    function GetShadowFastest: boolean;\n    function GetShadowOffset: TPointF;\n    function GetShadowOffsetX: single;\n    function GetShadowOffsetY: single;\n    function GetStrokeMatrix: TAffineMatrix;\n    function GetTextAlign: string;\n    function GetTextAlignLCL: TAlignment;\n    function GetTextBaseline: string;\n    function GetFillMode: TFillMode;\n    function GetWidth: Integer;\n    procedure SetTextDirection(AValue: TFontBidiMode);\n    procedure SetFontName(AValue: string);\n    procedure SetFontRenderer(AValue: TBGRACustomFontRenderer);\n    procedure SetFontEmHeight(AValue: single);\n    procedure SetFontString(AValue: string);\n    procedure SetFontStyle(AValue: TFontStyles);\n    procedure SetGlobalAlpha(const AValue: single);\n    procedure SetLineCap(const AValue: string);\n    procedure SetLineCapLCL(AValue: TPenEndCap);\n    procedure SetLineJoin(const AValue: string);\n    procedure FillPoly(const points: array of TPointF);\n    procedure FillStrokePoly(const points: array of TPointF; fillOver: boolean);\n    procedure FillTexts(AErase: boolean);\n    procedure SetLineJoinLCL(AValue: TPenJoinStyle);\n    procedure SetLineWidth(const AValue: single);\n    procedure SetMatrix(AValue: TAffineMatrix);\n    procedure SetMiterLimit(const AValue: single);\n    procedure SetPixelCenteredCoordinates(const AValue: boolean);\n    procedure SetShadowBlur(const AValue: single);\n    procedure SetShadowFastest(AValue: boolean);\n    procedure SetShadowOffset(const AValue: TPointF);\n    procedure SetShadowOffsetX(const AValue: single);\n    procedure SetShadowOffsetY(const AValue: single);\n    procedure SetStrokeMatrix(AValue: TAffineMatrix);\n    procedure SetTextAlign(AValue: string);\n    procedure SetTextAlignLCL(AValue: TAlignment);\n    procedure SetTextBaseline(AValue: string);\n    procedure SetFillMode(mode: TFillMode);\n    procedure StrokePoly(const points: array of TPointF);\n    procedure DrawShadow(const points, points2: array of TPointF; AFillMode: TFillMode = fmWinding);\n    procedure DrawShadowMask(X,Y: integer; AMask: TCustomUniversalBitmap; AMaskOwned: boolean);\n    procedure ClearPoly(const points: array of TPointF);\n    function ApplyTransform(const points: array of TPointF; matrix: TAffineMatrix): ArrayOfTPointF; overload;\n    function ApplyTransform(const points: array of TPointF): ArrayOfTPointF; overload;\n    function ApplyTransform(point: TPointF): TPointF; overload;\n    function GetPenPos(defaultX, defaultY: single): TPointF;\n    function GetPenPos(defaultPt: TPointF): TPointF;\n    procedure AddPoint(point: TPointF);\n    procedure AddPoints(const points: array of TPointF);\n    procedure AddPointsRev(const points: array of TPointF);\n    function ApplyGlobalAlpha(color: TBGRAPixel): TBGRAPixel;\n    function GetDrawMode: TDrawMode;\n    procedure copyTo({%H-}dest: IBGRAPath); //IBGRAPath\n    function getPoints: ArrayOfTPointF; //IBGRAPath\n    function getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF; //IBGRAPath\n    function getCursor: TBGRACustomPathCursor; //IBGRAPath\n  public\n    { Whether to apply antialiasing when drawing }\n    antialiasing: boolean;\n    { @abstract(Whether to use linear blending when merging colors.)\n\n    In this case, gamma correction won't be applied. It is less\n    accurate but it reflects more how HTML Canvas works. }\n    linearBlend: boolean;\n\n    { @abstract(Whether to use gamma correction in gradient interpolation.)\n\n    It is less accurate but it reflects more how HTML Canvas works.}\n    gradientGammaCorrection: boolean;\n    { @abstract(Create an new instance with its own context.) }\n    constructor Create(ASurface: TBGRACustomBitmap);\n    { Destroys the canvas context including the font renderer. }\n    destructor Destroy; override;\n\n    { Converts the image to code that can be put in an image href }\n    function toDataURL(mimeType: string = 'image/png'): string;\n\n    { @abstract(Saves the entire state of the canvas by pushing the current state onto a stack.)\n\n    The drawing state consists of:\n    - the current transformation matrix.\n    - the current clipping region.\n    - the font parameters.\n    - the various properties of stroke and fill style.\n    - the shadow parameters. }\n    procedure save;\n\n    { @abstract(Restores the most recently saved canvas state by popping the top entry in the drawing state stack.)\n\n    If there is no saved state, this method does nothing. }\n    procedure restore;\n\n    { Save the current state and copy the canvas state from\n      another canvas. }\n    procedure copyStateFrom(AOtherCanvas2D: TBGRACanvas2D);\n\n    { Apply scaling to the canvas with independent _x_ and _y_ scales. }\n    procedure scale(x,y: single); overload;\n    { Apply uniform scaling to the canvas. }\n    procedure scale(factor: single); overload;\n    { @abstract(Rotates the canvas around the origin (0,0) by the given angle in radians, clockwise.)\n\n**Example rotating around the center of a 200x200 canvas:**\n```pascal\ncanvas2D.translate(100, 100);\ncanvas2D.rotate(Pi);\ncanvas2D.translate(-100, -100);\n```}\n    procedure rotate(angleRadCW: single);\n    { Translates the canvas origin to a new location. }\n    procedure translate(x,y: single);\n    { Skews the drawing on the canvas along the X axis by the given angle in radians. }\n    procedure skewx(angleRadCW: single);\n    { Skews the drawing on the canvas along the Y axis by the given angle in radians. }\n    procedure skewy(angleRadCW: single);\n    { Applies a transformation matrix to the canvas. }\n    procedure transform(m11,m21, m12,m22, m13,m23: single); overload;\n    { Applies a pre-built transformation matrix to the canvas. }\n    procedure transform(AMatrix: TAffineMatrix); overload;\n    { Resets the current transform to the identity matrix, then applies the new transformation. }\n    procedure setTransform(m11,m21, m12,m22, m13,m23: single);\n    { Resets the current transformation matrix to the identity matrix. }\n    procedure resetTransform;\n\n    { Apply scaling to the stroke. Can specify _x_ and _y_ scales independently. }\n    procedure strokeScale(x,y: single);\n    { Skews the stroke on the canvas along the X axis by the given angle in radians. }\n    procedure strokeSkewx(angleRadCW: single);\n    { Skews the stroke on the canvas along the Y axis by the given angle in radians. }\n    procedure strokeSkewy(angleRadCW: single);\n    { Resets the stroke transformation matrix to the identity matrix, removing any stroke transformations. }\n    procedure strokeResetTransform;\n\n    { Sets the stroke to a solid color specified as TBGRAPixel }\n    procedure strokeStyle(color: TBGRAPixel); overload;\n    { Sets the stroke to a solid color specified as TColor }\n    procedure strokeStyle(color: TColor); overload;\n    { Sets the stroke to a solid color specified as CSS string }\n    procedure strokeStyle(color: string); overload;\n    { @abstract(Sets the stroke to a texture defined by IBGRAScanner interface.)\n\n    The texture can be a TBGRABitmap object or any custom scanner. }\n    procedure strokeStyle(texture: IBGRAScanner); overload;\n    { Sets the stroke to a texture using a texture provider. }\n    procedure strokeStyle(provider: IBGRACanvasTextureProvider2D); overload;\n    { Sets the fill style to a solid color specified as TBGRAPixel }\n    procedure fillStyle(color: TBGRAPixel); overload;\n    { Sets the fill style to a solid color specified as TColor }\n    procedure fillStyle(color: TColor); overload;\n    { Sets the fill style to a solid color specified as CSS string }\n    procedure fillStyle(color: string); overload;\n    { @abstract(Sets the fill style to a texture defined by IBGRAScanner interface.)\n\n    The texture can be a TBGRABitmap object or any custom scanner. }\n    procedure fillStyle(texture: IBGRAScanner); overload;\n    { Sets the fill style to a texture using a texture provider. }\n    procedure fillStyle(provider: IBGRACanvasTextureProvider2D); overload;\n\n    { Sets the color of the shadow specified as TBGRAPixel }\n    procedure shadowColor(color: TBGRAPixel); overload;\n    { Sets the color of the shadow specified as TColor }\n    procedure shadowColor(color: TColor); overload;\n    { Sets the color of the shadow specified as CSS string }\n    procedure shadowColor(color: string); overload;\n    { Removes any shadow effect from future drawings. }\n    procedure shadowNone;\n    { Retrieves the current color used for shadows. }\n    function getShadowColor: TBGRAPixel;\n\n    { Creates a linear gradient between two points. }\n    function createLinearGradient(x0,y0,x1,y1: single): IBGRACanvasGradient2D; overload;\n    { Creates a linear gradient between two points using TPointF. }\n    function createLinearGradient(p0,p1: TPointF): IBGRACanvasGradient2D; overload;\n    { Creates a linear gradient with custom color stops. }\n    function createLinearGradient(x0,y0,x1,y1: single; Colors: TBGRACustomGradient): IBGRACanvasGradient2D; overload;\n    { Creates a linear gradient with custom color stops using TPointF. }\n    function createLinearGradient(p0,p1: TPointF; Colors: TBGRACustomGradient): IBGRACanvasGradient2D; overload;\n\n    { Creates a radial gradient between two circles. }\n    function createRadialGradient(x0,y0,r0,x1,y1,r1: single; flipGradient: boolean=false): IBGRACanvasGradient2D; overload;\n    { Creates a radial gradient between two circles using TPointF. }\n    function createRadialGradient(p0: TPointF; r0: single; p1: TPointF; r1: single; flipGradient: boolean=false): IBGRACanvasGradient2D; overload;\n    { Creates a radial gradient with custom color stops. }\n    function createRadialGradient(x0,y0,r0,x1,y1,r1: single; Colors: TBGRACustomGradient; flipGradient: boolean=false): IBGRACanvasGradient2D; overload;\n    { Creates a radial gradient with custom color stops using TPointF. }\n    function createRadialGradient(p0: TPointF; r0: single; p1: TPointF; r1: single; Colors: TBGRACustomGradient; flipGradient: boolean=false): IBGRACanvasGradient2D; overload;\n\n    { @abstract(Creates a pattern using an image.)\n\n    _repetition_ can be:\n    - repeat-x: repetition along X axis\n    - repeat-y: repetition along Y axis\n    - no-repeat: image is drawn only once }\n    function createPattern(image: TBGRACustomBitmap; repetition: string): IBGRACanvasTextureProvider2D; overload;\n    { Creates a pattern using a scanner interface. }\n    function createPattern(texture: IBGRAScanner): IBGRACanvasTextureProvider2D; overload;\n\n    { Directly fills a rectangle with the current fill style. }\n    procedure fillRect(x,y,w,h: single);\n    { Directly strokes a rectangle with the current stroke style. }\n    procedure strokeRect(x,y,w,h: single);\n    { Directly clears a rectangle, making it fully transparent. }\n    procedure clearRect(x,y,w,h: single);\n\n    { Adds a path to the current drawing. }\n    procedure addPath(APath: IBGRAPath); overload;\n    { Adds an SVG path to the current drawing. }\n    procedure addPath(ASvgPath: string); overload;\n    { Replaces the current defined path. }\n    procedure path(APath: IBGRAPath); overload;\n    { Replaces the current defined path defined as SVG path. }\n    procedure path(ASvgPath: string); overload;\n    { Begins a new path or resets the current path. }\n    procedure beginPath;\n    { Closes the current path. }\n    procedure closePath;\n    { Converts the current polyline path to a spline. }\n    procedure toSpline(closed: boolean; style: TSplineStyle= ssOutside);\n    { Moves the pen to a new location. }\n    procedure moveTo(x,y: single); overload;\n    { Connects with a line to a specified point. }\n    procedure lineTo(x,y: single); overload;\n    { Moves the pen to a new location using TPointF. }\n    procedure moveTo(constref pt: TPointF); overload;\n    { Connects a line to a specified point using TPointF. }\n    procedure lineTo(constref pt: TPointF); overload;\n    { Add multiple connected lines. }\n    procedure polylineTo(const pts: array of TPointF);\n    { Adds a quadratic Bézier curve to a specified point. }\n    procedure quadraticCurveTo(cpx,cpy,x,y: single); overload;\n    { Adds a quadratic Bézier curve to a specified point using TPointF. }\n    procedure quadraticCurveTo(constref cp,pt: TPointF); overload;\n    { Adds a cubic Bézier curve to a specified point. }\n    procedure bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y: single); overload;\n    { Adds a cubic Bézier curve to a specified point using TPointF. }\n    procedure bezierCurveTo(constref cp1,cp2,pt: TPointF); overload;\n    { Adds a rectangle specified by its top-left corner, width\n      and height }\n    procedure rect(x,y,w,h: single);\n    { Adds a rounded rectangle. }\n    procedure roundRect(x,y,w,h,radius: single); overload;\n    { Adds a rounded rectangle with different x and y radii. }\n    procedure roundRect(x,y,w,h,rx,ry: single); overload;\n    { Adds an opened spline to the current path }\n    procedure openedSpline(const pts: array of TPointF; style: TSplineStyle);\n    { Adds an closed spline to the current path }\n    procedure closedSpline(const pts: array of TPointF; style: TSplineStyle);\n    { @abstract(Adds a spline to the current path.)\n\n    It will be closed if the last point is equal to the first one. }\n    procedure spline(const pts: array of TPointF; style: TSplineStyle= ssOutside);\n    { Continues from current position with an opened spline. }\n    procedure splineTo(const pts: array of TPointF; style: TSplineStyle= ssOutside);\n    { Adds an arc around the specified point. }\n    procedure arc(x, y, radius, startAngleRadCW, endAngleRadCW: single; anticlockwise: boolean); overload;\n    { Adds an arc around the specified point in the clockwise direction. }\n    procedure arc(x, y, radius, startAngleRadCW, endAngleRadCW: single); overload;\n    { Adds an elliptical arc around the specified point. }\n    procedure arc(cx, cy, rx,ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single; anticlockwise: boolean); overload;\n    { Adds an elliptical arc around the specified point in the clockwise direction. }\n    procedure arc(cx, cy, rx,ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single); overload;\n    { Adds an elliptical arc using TArcDef. }\n    procedure arc(constref arcDef: TArcDef); overload;\n    { Adds an arc from current position. }\n    procedure arcTo(x1, y1, x2, y2, radius: single); overload;\n    { Adds an arc from current position using TPointF. }\n    procedure arcTo(p1,p2: TPointF; radius: single); overload;\n    { Adds an elliptic arc of the given angle from current position. }\n    procedure arcTo(rx, ry, xAngleRadCW: single; largeArc,anticlockwise: boolean; x, y: single);\n    { Adds a full circle. }\n    procedure circle(x,y,r: single);\n    { Adds a full ellipse. }\n    procedure ellipse(x,y,rx,ry: single);\n    { Adds the path of a text. }\n    procedure text(AText: string; x,y: single);\n    { Fills directly the specified text using current fill style. }\n    procedure fillText(AText: string; x,y: single);\n    { Draws directly the outline of the specified text using current stroke style. }\n    procedure strokeText(AText: string; x,y: single);\n    { Measures the size of the given text. }\n    function measureText(AText: string): TCanvas2dTextSize;\n\n    { Fills the current path with the current fill style. }\n    procedure fill; overload;\n    { Fills the current path using the specified function. }\n    procedure fill(AFillProc: TBGRAPathFillProc; AData: pointer); overload;\n    { Fills the current path using the specified function and transformation matrix. }\n    procedure fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix; AData: pointer); overload; //may not render curve nicely\n    { Strokes the current path with the current stroke style. }\n    procedure stroke; overload;\n    { Strokes the current path using the specified function. }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer); overload;\n    { Strokes the current path using the specified function and transformation matrix. }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AData: pointer); overload; //may not render curve nicely\n    { Fill and stroke at the same time, with filling being on top }\n    procedure fillOverStroke;\n    { Fill and stroke at the same time, with stroke being on top }\n    procedure strokeOverFill;\n    { Clears the area represented by the current path, making the canvas transparent }\n    procedure clearPath;\n    { Clips the drawing region to the current path. }\n    procedure clip;\n    { Reintroduce the current path in the drawing region. }\n    procedure unclip;\n    { Checks if a given point is inside the current path. }\n    function isPointInPath(x,y: single): boolean; overload;\n    { Checks if a given TPointF is inside the current path. }\n    function isPointInPath(pt: TPointF): boolean; overload;\n\n    { Draws an image at the specified location. }\n    procedure drawImage(image: TBGRACustomBitmap; dx,dy: single; AFilter: TResampleFilter = rfLinear); overload;\n    { Draws an image with scaling. }\n    procedure drawImage(image: TBGRACustomBitmap; dx,dy,dw,dh: single; AFilter: TResampleFilter = rfLinear); overload;\n    { Applies the specified mask at the specified location\n      for future drawings. }\n    procedure mask(image: TBGRACustomBitmap; dx,dy: single; AFilter: TResampleFilter = rfLinear); overload;\n    { Applies the specified mask with scaling\n      for future drawings. }\n    procedure mask(image: TBGRACustomBitmap; dx,dy,dw,dh: single; AFilter: TResampleFilter = rfLinear); overload;\n\n    { Gets the current line style. }\n    function getLineStyle: TBGRAPenStyle;\n    { Sets the style for lines. }\n    procedure lineStyle(const AValue: array of single); overload;\n    { Sets the style for lines using a predefined style. }\n    procedure lineStyle(AStyle: TPenStyle); overload;\n\n    { Converts a string of font names to a list. }\n    class function StrToFontNameList(AText: string): ArrayOfString;\n    { Converts a list of font names to a string. }\n    class function FontNameListToStr(AList: ArrayOfString): string;\n     { Converts CSS font name to LCL font name. }\n     class function CSSFontNameToLCL(AName: string): string;\n\n    { The underlying bitmap where the canvas draws. }\n    property surface: TBGRACustomBitmap read FSurface;\n    { The width of the underlying bitmap. }\n    property width: Integer read GetWidth;\n    { The height of the underlying bitmap. }\n    property height: Integer read GetHeight;\n    { Determines if coordinates are centered on pixels (**false** by default). }\n    property pixelCenteredCoordinates: boolean read GetPixelCenteredCoordinates write SetPixelCenteredCoordinates;\n    { The global alpha (transparency) applied to drawings. }\n    property globalAlpha: single read GetGlobalAlpha write SetGlobalAlpha;\n    { The transformation matrix applied to the path. }\n    property matrix: TAffineMatrix read GetMatrix write SetMatrix;\n    { The transformation matrix applied to pen. }\n    property strokeMatrix: TAffineMatrix read GetStrokeMatrix write SetStrokeMatrix;\n\n    { The width of lines drawn on the canvas. }\n    property lineWidth: single read GetLineWidth write SetLineWidth;\n    { The shape used at the end of lines (`butt`, `round`, `square`). }\n    property lineCap: string read GetLineCap write SetLineCap;\n    { Line cap style using LCL enumeration. }\n    property lineCapLCL: TPenEndCap read GetLineCapLCL write SetLineCapLCL;\n    { The type of corner created when two lines meet (`miter`, `round`, `bevel`). }\n    property lineJoin: string read GetlineJoin write SetLineJoin;\n    { Line join style using LCL enumeration. }\n    property lineJoinLCL: TPenJoinStyle read GetlineJoinLCL write SetLineJoinLCL;\n    { The maximum miter length when connecting lines. }\n    property miterLimit: single read GetMiterLimit write SetMiterLimit;\n\n    { The horizontal offset of the shadow from the shape. }\n    property shadowOffsetX: single read GetShadowOffsetX write SetShadowOffsetX;\n    { The vertical offset of the shadow from the shape. }\n    property shadowOffsetY: single read GetShadowOffsetY write SetShadowOffsetY;\n    { The offset of the shadow as a TPointF. }\n    property shadowOffset: TPointF read GetShadowOffset write SetShadowOffset;\n    { The blur level of the shadow. }\n    property shadowBlur: single read GetShadowBlur write SetShadowBlur;\n    { If true, uses a faster but less accurate shadow algorithm. }\n    property shadowFastest: boolean read GetShadowFastest write SetShadowFastest;\n    { @abstract(Indicates if any shadow is set.)\n\n    A shadow is visible if the shadow color is set and\n    the offset or the radius is set. }\n    property hasShadow: boolean read GetHasShadow;\n\n    { The name of the font for text drawing. }\n    property fontName: string read GetFontName write SetFontName;\n    { The size of the font's em square in pixels. }\n    property fontEmHeight: single read GetFontEmHeight write SetFontEmHeight;\n    { The style of the font using LCL enumeration set. }\n    property fontStyle: TFontStyles read GetFontStyle write SetFontStyle;\n    { Combined font properties in CSS-like string format. }\n    property font: string read GetFontString write SetFontString;\n    { Horizontal alignment of text using LCL enumeration. }\n    property textAlignLCL: TAlignment read GetTextAlignLCL write SetTextAlignLCL;\n    { Horizontal alignment of text (`left`, `right`, `center`, `start`, `end`). }\n    property textAlign: string read GetTextAlign write SetTextAlign;\n    { Vertical alignment of text (`top`, `middle`, `alphabetic`, `bottom`). }\n    property textBaseline: string read GetTextBaseline write SetTextBaseline;\n    { The direction of the text (left-to-right, right-to-left). }\n    property direction: TFontBidiMode read GetTextDirection write SetTextDirection;\n    \n    { The rule to use for filling shapes (non-zero winding, even-odd alternate). }\n    property fillMode: TFillMode read GetFillMode write SetFillMode;\n\n    { The current path as an array of points. }\n    property currentPath: ArrayOfTPointF read GetCurrentPathAsPoints;\n    { The renderer used for custom font drawing. }\n    property fontRenderer: TBGRACustomFontRenderer read GetFontRenderer write SetFontRenderer;\n\n  private\n    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n  end;\n\nimplementation\n\nuses Math, BGRAFillInfo, BGRAPolygon, BGRABlend, BGRAWriteJPEG, BGRAWriteBMP, base64, BGRAFilterBlur;\n\ntype\n  TColorStop = record\n    position: single;\n    color: TBGRAPixel;\n  end;\n\n  TGradientArrayOfColors = array of TBGRAPixel;\n  TGradientArrayOfPositions = array of single;\n\n  { Gradient for TCanvas2D }\n  TBGRACanvasGradient2D = class(TBGRACanvasTextureProvider2D, IBGRACanvasGradient2D)\n  private\n    colorStops: array of TColorStop;\n    nbColorStops: integer;\n    FCustomGradient: TBGRACustomGradient;\n    FGammaCorrection: boolean;\n    FRepetition: TBGRAGradientRepetition;\n  protected\n    scanner: TBGRAGradientScanner;\n    procedure CreateScanner; virtual; abstract;\n    function getColorArray: TGradientArrayOfColors;\n    function getPositionArray: TGradientArrayOfPositions;\n    procedure GetBGRAGradient(out ABGRAGradient: TBGRACustomGradient; out AOwned: boolean);\n    function GetGammaCorrection: boolean;\n    procedure SetGammaCorrection(AValue: boolean);\n    function GetRepetition: TBGRAGradientRepetition;\n    procedure SetRepetition(AValue: TBGRAGradientRepetition);\n  public\n    constructor Create;\n    function getTexture: IBGRAScanner; override;\n    destructor Destroy; override;\n    procedure addColorStop(APosition: single; AColor: TBGRAPixel);\n    procedure addColorStop(APosition: single; AColor: TColor);\n    procedure addColorStop(APosition: single; AColor: string);\n    procedure setColors(ACustomGradient: TBGRACustomGradient);\n    property texture: IBGRAScanner read GetTexture;\n    property colorStopCount: integer read nbColorStops;\n    property gammaCorrection: boolean read GetGammaCorrection write SetGammaCorrection;\n    property repetition: TBGRAGradientRepetition read GetRepetition write SetRepetition;\n  end;\n\n  { Linear gradient for TCanvas2D }\n  TBGRACanvasLinearGradient2D = class(TBGRACanvasGradient2D)\n  protected\n    o1,o2: TPointF;\n    FTransform: TAffineMatrix;\n    procedure CreateScanner; override;\n  public\n    constructor Create(x0,y0,x1,y1: single; transform: TAffineMatrix);\n    constructor Create(p0,p1: TPointF; transform: TAffineMatrix);\n  end;\n\n  { Radial gradient for TCanvas2D }\n  TBGRACanvasRadialGradient2D = class(TBGRACanvasGradient2D)\n  protected\n    c0,c1: TPointF;\n    cr0,cr1: single;\n    FFlipGradient: boolean;\n    FTransform: TAffineMatrix;\n    procedure CreateScanner; override;\n  public\n    constructor Create(x0,y0,r0,x1,y1,r1: single; transform: TAffineMatrix; flipGradient: boolean=false);\n    constructor Create(p0: TPointF; r0: single; p1: TPointF; r1: single; transform: TAffineMatrix; flipGradient: boolean=false);\n  end;\n\n  { Brush texture for TCanvas2D }\n  TBGRACanvasPattern2D = class(TBGRACanvasTextureProvider2D)\n  protected\n    scanner: TBGRACustomScanner;\n    foreignInterface: IBGRAScanner;\n    ownScanner: boolean;\n  public\n    function getTexture: IBGRAScanner; override;\n    constructor Create(source: TBGRACustomBitmap; repeatX,repeatY: boolean; Origin, HAxis, VAxis: TPointF);\n    constructor Create(source: IBGRAScanner; transformation: TAffineMatrix);\n    destructor Destroy; override;\n  end;\n\n{ TBGRACanvasPattern2D }\n\nfunction TBGRACanvasPattern2D.GetTexture: IBGRAScanner;\nbegin\n  if ownScanner then\n    result := scanner\n  else\n    result := foreignInterface;\nend;\n\nconstructor TBGRACanvasPattern2D.Create(source: TBGRACustomBitmap; repeatX,\n  repeatY: boolean; Origin, HAxis, VAxis: TPointF);\nvar\n  affine: TBGRAAffineBitmapTransform;\nbegin\n  if (abs(Origin.X-round(Origin.X)) < 1e-6) and\n     (abs(Origin.Y-round(Origin.Y)) < 1e-6) and\n     (HAxis = Origin+PointF(1,0)) and\n     (VAxis = Origin+PointF(0,1)) then\n  begin\n    if (round(Origin.X)=0) and (round(Origin.Y)=0) and repeatX and repeatY then\n    begin\n      foreignInterface := source;\n      ownScanner:= false;\n    end else\n    begin\n      scanner := TBGRABitmapScanner.Create(source,repeatX,repeatY,Point(round(Origin.X),round(Origin.Y)));\n      ownScanner := true;\n    end;\n  end\n  else\n  begin\n    affine := TBGRAAffineBitmapTransform.Create(source,repeatX,repeatY);\n    affine.Fit(Origin,HAxis,VAxis);\n    scanner := affine;\n    ownScanner:= true;\n  end;\nend;\n\nconstructor TBGRACanvasPattern2D.Create(source: IBGRAScanner;\n  transformation: TAffineMatrix);\nvar\n  affine : TBGRAAffineScannerTransform;\nbegin\n  if (abs(transformation[1,1]-1) < 1e-6) and\n     (abs(transformation[2,2]-1) < 1e-6) and\n     (abs(transformation[1,2]) < 1e-6) and\n     (abs(transformation[2,1]) < 1e-6) and\n     (abs(transformation[1,3]-round(transformation[1,3])) < 1e-6) and\n     (abs(transformation[2,3]-round(transformation[2,3])) < 1e-6) then\n  begin\n    if (abs(transformation[1,3]) < 1e-6) and\n      (abs(transformation[2,3]) < 1e-6) then\n    begin\n      foreignInterface := source;\n      ownScanner := false;\n    end else\n    begin\n     scanner := TBGRAScannerOffset.Create(source,Point(round(transformation[1,3]),round(transformation[2,3])));\n     ownScanner := true;\n    end;\n  end else\n  begin\n    affine := TBGRAAffineScannerTransform.Create(source);\n    affine.Matrix := transformation;\n    affine.Invert;\n    scanner := affine;\n    ownScanner:= true;\n  end;\nend;\n\ndestructor TBGRACanvasPattern2D.Destroy;\nbegin\n  fillchar(foreignInterface,sizeof(foreignInterface),0);\n  if ownScanner then FreeAndNil(scanner);\n  inherited Destroy;\nend;\n\n{ TBGRACanvasLinearGradient2D }\n\nprocedure TBGRACanvasLinearGradient2D.CreateScanner;\nvar GradientOwner: boolean;\n    GradientColors: TBGRACustomGradient;\nbegin\n  GetBGRAGradient(GradientColors,GradientOwner);\n  scanner := TBGRAGradientScanner.Create(GradientColors,gtLinear,o1,o2,False,GradientOwner);\n  scanner.Transform := FTransform;\nend;\n\nconstructor TBGRACanvasLinearGradient2D.Create(x0, y0, x1, y1: single; transform: TAffineMatrix);\nbegin\n  o1 := PointF(x0,y0);\n  o2 := PointF(x1,y1);\n  FTransform := transform;\nend;\n\nconstructor TBGRACanvasLinearGradient2D.Create(p0, p1: TPointF; transform: TAffineMatrix);\nbegin\n  o1 := p0;\n  o2 := p1;\n  FTransform := transform;\nend;\n\n{ TBGRACanvasRadialGradient2D }\n\nprocedure TBGRACanvasRadialGradient2D.CreateScanner;\nvar GradientOwner: boolean;\n    GradientColors: TBGRACustomGradient;\nbegin\n  GetBGRAGradient(GradientColors,GradientOwner);\n  scanner := TBGRAGradientScanner.Create(GradientColors,c0,cr0,c1,cr1,GradientOwner);\n  scanner.FlipGradient := not FFlipGradient;\n  scanner.Transform := FTransform;\nend;\n\nconstructor TBGRACanvasRadialGradient2D.Create(x0, y0, r0, x1, y1, r1: single;\n  transform: TAffineMatrix; flipGradient: boolean);\nbegin\n  self.c0 := PointF(x0,y0);\n  self.cr0 := r0;\n  self.c1 := PointF(x1,y1);\n  self.cr1 := r1;\n  FTransform := transform;\n  FFlipGradient := flipGradient;\nend;\n\nconstructor TBGRACanvasRadialGradient2D.Create(p0: TPointF; r0: single;\n  p1: TPointF; r1: single; transform: TAffineMatrix; flipGradient: boolean);\nbegin\n  self.c0 := p0;\n  self.cr0 := r0;\n  self.c1 := p1;\n  self.cr1 := r1;\n  FTransform := transform;\n  FFlipGradient := flipGradient;\nend;\n\n{ TBGRACanvasGradient2D }\n\nfunction TBGRACanvasGradient2D.getTexture: IBGRAScanner;\nbegin\n  if scanner = nil then CreateScanner;\n  result := scanner;\nend;\n\nfunction TBGRACanvasGradient2D.GetGammaCorrection: boolean;\nbegin\n  result := FGammaCorrection;\nend;\n\nprocedure TBGRACanvasGradient2D.SetGammaCorrection(AValue: boolean);\nbegin\n  FGammaCorrection:= AValue;\n  FreeAndNil(scanner);\nend;\n\nconstructor TBGRACanvasGradient2D.Create;\nbegin\n  inherited Create;\n  scanner := nil;\n  FGammaCorrection:= false;\nend;\n\nfunction TBGRACanvasGradient2D.GetRepetition: TBGRAGradientRepetition;\nbegin\n  result := FRepetition;\nend;\n\nprocedure TBGRACanvasGradient2D.SetRepetition(\n  AValue: TBGRAGradientRepetition);\nbegin\n  FRepetition := AValue;\n  FreeAndNil(scanner);\nend;\n\nfunction TBGRACanvasGradient2D.getColorArray: TGradientArrayOfColors;\nvar\n  i: Integer;\nbegin\n  setlength(result, nbColorStops);\n  for i := 0 to nbColorStops-1 do\n    result[i] := colorStops[i].color;\nend;\n\nfunction TBGRACanvasGradient2D.getPositionArray: TGradientArrayOfPositions;\nvar\n  i: Integer;\nbegin\n  setlength(result, nbColorStops);\n  for i := 0 to nbColorStops-1 do\n    result[i] := colorStops[i].position;\nend;\n\nprocedure TBGRACanvasGradient2D.GetBGRAGradient(out\n  ABGRAGradient: TBGRACustomGradient; out AOwned: boolean);\nbegin\n  if FCustomGradient = nil then\n  begin\n    if (colorStopCount = 2) and (colorStops[0].position = 0) and (colorStops[1].position = 1) then\n    begin\n      if FGammaCorrection then\n        ABGRAGradient := TBGRASimpleGradientWithGammaCorrection.Create(colorStops[0].color, colorStops[1].color, FRepetition)\n      else\n        ABGRAGradient := TBGRASimpleGradientWithoutGammaCorrection.Create(colorStops[0].color, colorStops[1].color, FRepetition);\n    end\n    else\n      ABGRAGradient := TBGRAMultiGradient.Create(getColorArray,getPositionArray,FGammaCorrection, FRepetition = grRepeat);\n    AOwned := true;\n  end else\n  begin\n    ABGRAGradient := FCustomGradient;\n    AOwned := false;\n  end;\nend;\n\ndestructor TBGRACanvasGradient2D.Destroy;\nbegin\n  FreeAndNil(scanner);\n  inherited Destroy;\nend;\n\nprocedure TBGRACanvasGradient2D.addColorStop(APosition: single;\n  AColor: TBGRAPixel);\nbegin\n  FreeAndNil(scanner);\n  if nbColorStops = length(colorStops) then\n    setlength(colorStops, (length(colorStops)+1)*2);\n\n  with colorStops[nbColorStops] do\n  begin\n    position := APosition;\n    color := AColor;\n  end;\n  inc(nbColorStops);\nend;\n\nprocedure TBGRACanvasGradient2D.addColorStop(APosition: single; AColor: TColor\n  );\nbegin\n  addColorStop(APosition, ColorToBGRA(AColor));\nend;\n\nprocedure TBGRACanvasGradient2D.addColorStop(APosition: single; AColor: string\n  );\nbegin\n  addColorStop(APosition, StrToBGRA(AColor));\nend;\n\nprocedure TBGRACanvasGradient2D.setColors(ACustomGradient: TBGRACustomGradient\n  );\nbegin\n  FCustomGradient := ACustomGradient;\nend;\n\n{ TBGRACanvasState2D }\n\nfunction TBGRACanvasState2D.GetClipMaskReadWrite: TGrayscaleMask;\nbegin\n  if not FClipMaskOwned then\n  begin\n    if FClipMask <> nil then\n      FClipMask := FClipMask.Duplicate as TGrayscaleMask;\n    FClipMaskOwned := true;\n  end;\n  result := FClipMask;\nend;\n\nconstructor TBGRACanvasState2D.Create(AMatrix: TAffineMatrix;\n  AClipMask: TGrayscaleMask; AClipMaskOwned: boolean);\nbegin\n  strokeColor := BGRABlack;\n  fillColor := BGRABlack;\n  globalAlpha := 255;\n\n  fontName := 'sans-serif';\n  fontEmHeight := 10;\n  fontStyle := [];\n  textDirection := fbmAuto;\n  textAlign:= taLeftJustify;\n  textBaseline := 'alphabetic';\n\n  lineWidth := 1;\n  penStroker := TBGRAPenStroker.Create;\n  penStroker.LineCap := pecFlat;\n  penStroker.JoinStyle := pjsMiter;\n  penStroker.CustomPenStyle := DuplicatePenStyle(SolidPenStyle);\n  penStroker.MiterLimit := 10;\n  penStroker.StrokeMatrix := AffineMatrixIdentity;\n\n  shadowOffsetX := 0;\n  shadowOffsetY := 0;\n  shadowBlur := 0;\n  shadowColor := BGRAPixelTransparent;\n  shadowFastest:= false;\n\n  matrix := AMatrix;\n  FClipMask := nil;\n  FClipMaskOwned := true;\n  SetClipMask(AClipMask,AClipMaskOwned);\nend;\n\nfunction TBGRACanvasState2D.Duplicate: TBGRACanvasState2D;\nbegin\n  result := TBGRACanvasState2D.Create(matrix,clipMaskReadOnly,false);\n  result.strokeColor := strokeColor;\n  result.strokeTextureProvider := strokeTextureProvider;\n  result.fillColor := fillColor;\n  result.fillMode := fillMode;\n  result.fillTextureProvider := fillTextureProvider;\n  result.globalAlpha := globalAlpha;\n\n  result.fontName:= fontName;\n  result.fontEmHeight := fontEmHeight;\n  result.fontStyle := fontStyle;\n  result.textDirection:= textDirection;\n  result.textBaseline:= textBaseline;\n\n  result.lineWidth := lineWidth;\n  result.penStroker.LineCap := penStroker.LineCap;\n  result.penStroker.JoinStyle := penStroker.JoinStyle;\n  result.penStroker.CustomPenStyle := DuplicatePenStyle(penStroker.CustomPenStyle);\n  result.penStroker.MiterLimit := penStroker.MiterLimit;\n  result.penStroker.StrokeMatrix := penStroker.StrokeMatrix;\n\n  result.shadowOffsetX := shadowOffsetX;\n  result.shadowOffsetY := shadowOffsetY;\n  result.shadowBlur := shadowBlur;\n  result.shadowColor := shadowColor;\n  result.shadowFastest := shadowFastest;\nend;\n\ndestructor TBGRACanvasState2D.Destroy;\nbegin\n  if FClipMaskOwned and Assigned(FClipMask) then\n    FClipMask.Free;\n  penStroker.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRACanvasState2D.transform(AMatrix: TAffineMatrix);\nbegin\n  matrix := matrix*AMatrix;\nend;\n\nprocedure TBGRACanvasState2D.SetClipMask(AClipMask: TGrayscaleMask;\n  AOwned: boolean);\nbegin\n  if FClipMaskOwned and Assigned(FClipMask) then FreeAndNil(FClipMask);\n  FClipMask := AClipMask;\n  FClipMaskOwned := AOwned;\nend;\n\n{ TBGRACanvas2D }\n\nfunction TBGRACanvas2D.GetHeight: Integer;\nbegin\n  if Assigned(surface) then\n    result := Surface.Height\n  else\n    result := 0;\nend;\n\nfunction TBGRACanvas2D.GetLineCap: string;\nbegin\n  case currentState.penStroker.LineCap of\n    pecRound: result := 'round';\n    pecSquare: result := 'square';\n    else result := 'butt';\n  end;\nend;\n\nfunction TBGRACanvas2D.GetLineCapLCL: TPenEndCap;\nbegin\n  result := currentState.penStroker.LineCap;\nend;\n\nfunction TBGRACanvas2D.GetlineJoin: string;\nbegin\n  case currentState.penStroker.JoinStyle of\n    pjsBevel: result := 'bevel';\n    pjsRound: result := 'round';\n    else result := 'miter';\n  end;\nend;\n\nfunction TBGRACanvas2D.GetlineJoinLCL: TPenJoinStyle;\nbegin\n  result := currentState.penStroker.JoinStyle;\nend;\n\nfunction TBGRACanvas2D.getLineStyle: TBGRAPenStyle;\nbegin\n  result := DuplicatePenStyle(currentState.penStroker.CustomPenStyle);\nend;\n\nfunction TBGRACanvas2D.GetLineWidth: single;\nbegin\n  result := currentState.lineWidth;\nend;\n\nfunction TBGRACanvas2D.GetMatrix: TAffineMatrix;\nbegin\n  result := currentState.matrix;\nend;\n\nfunction TBGRACanvas2D.GetMiterLimit: single;\nbegin\n  result := currentState.penStroker.MiterLimit;\nend;\n\nfunction TBGRACanvas2D.GetPixelCenteredCoordinates: boolean;\nbegin\n  result := FPixelCenteredCoordinates;\nend;\n\nfunction TBGRACanvas2D.GetShadowBlur: single;\nbegin\n  result := currentState.shadowBlur;\nend;\n\nfunction TBGRACanvas2D.GetShadowFastest: boolean;\nbegin\n  result := currentState.shadowFastest;\nend;\n\nfunction TBGRACanvas2D.GetShadowOffset: TPointF;\nbegin\n  result := PointF(shadowOffsetX,shadowOffsetY);\nend;\n\nfunction TBGRACanvas2D.GetShadowOffsetX: single;\nbegin\n  result := currentState.shadowOffsetX;\nend;\n\nfunction TBGRACanvas2D.GetShadowOffsetY: single;\nbegin\n  result := currentState.shadowOffsetY;\nend;\n\nfunction TBGRACanvas2D.GetStrokeMatrix: TAffineMatrix;\nbegin\n  result := currentState.penStroker.StrokeMatrix;\nend;\n\nfunction TBGRACanvas2D.GetTextAlign: string;\nbegin\n  case currentState.textAlign of\n    taRightJustify: result := 'right';\n    taCenter: result := 'center';\n  else\n    result := 'left';\n  end;\nend;\n\nfunction TBGRACanvas2D.GetTextAlignLCL: TAlignment;\nbegin\n  result := currentState.textAlign;\nend;\n\nfunction TBGRACanvas2D.GetTextBaseline: string;\nbegin\n  result := currentState.textBaseline;\nend;\n\nfunction TBGRACanvas2D.GetGlobalAlpha: single;\nbegin\n  result := currentState.globalAlpha/255;\nend;\n\nfunction TBGRACanvas2D.GetCurrentPathAsPoints: ArrayOfTPointF;\nvar i: integer;\nbegin\n  setlength(result, FPathPointCount);\n  for i := 0 to high(result) do\n    result[i] := FPathPoints[i];\nend;\n\nfunction TBGRACanvas2D.GetTextDirection: TFontBidiMode;\nbegin\n  result := currentState.textDirection;\nend;\n\nfunction TBGRACanvas2D.GetFontName: string;\nbegin\n  result := currentState.fontName;\nend;\n\nfunction TBGRACanvas2D.GetFontRenderer: TBGRACustomFontRenderer;\nvar zoom1,zoom2,zoom: single;\nbegin\n  if FFontRenderer = nil then\n  begin\n    if FSurface <> nil then\n      result := FSurface.FontRenderer\n    else\n      result := nil;\n  end else\n    result := FFontRenderer;\n  if Assigned(result) then\n  begin\n    result.FontName := CSSFontNameToLCL(currentState.fontName);\n    result.FontStyle := currentState.fontStyle;\n    if antialiasing then\n      result.FontQuality:= fqFineAntialiasing\n    else\n      result.FontQuality := fqSystem;\n    result.FontOrientation := 0;\n    zoom1 := VectLen(currentState.matrix[1,1],currentState.matrix[2,1]);\n    zoom2 := VectLen(currentState.matrix[1,2],currentState.matrix[2,2]);\n    if zoom1>zoom2 then zoom := zoom1 else zoom := zoom2;\n    result.FontEmHeight := round(currentState.fontEmHeight*zoom);\n  end;\nend;\n\nfunction TBGRACanvas2D.GetFontEmHeight: single;\nbegin\n  result := currentState.fontEmHeight;\nend;\n\nfunction TBGRACanvas2D.GetFontString: string;\nvar formats: TFormatSettings;\nbegin\n  formats := DefaultFormatSettings;\n  formats.DecimalSeparator := '.';\n\n  result := '';\n  if fsItalic in currentState.fontStyle then\n    AppendStr(result, 'italic ');\n  if fsBold in currentState.fontStyle then\n    AppendStr(result, 'bold ');\n  AppendStr(result, FloatToStrF(currentState.fontEmHeight,ffGeneral,6,0,formats)+'px ');\n  AppendStr(result, currentState.fontName);\n  result := trim(result);\nend;\n\nfunction TBGRACanvas2D.GetFontStyle: TFontStyles;\nbegin\n  result := currentState.fontStyle;\nend;\n\nfunction TBGRACanvas2D.GetHasShadow: boolean;\nbegin\n  result := (ApplyGlobalAlpha(currentState.shadowColor).alpha <> 0) and\n    ( (currentState.shadowBlur <> 0) or (currentState.shadowOffsetX <> 0)\n      or (currentState.shadowOffsetY <> 0) );\nend;\n\nfunction TBGRACanvas2D.GetWidth: Integer;\nbegin\n  if Assigned(Surface) then\n    result := Surface.Width\n  else\n    result := 0;\nend;\n\nprocedure TBGRACanvas2D.SetTextDirection(AValue: TFontBidiMode);\nbegin\n  currentState.textDirection := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetFontName(AValue: string);\nvar\n  list: ArrayOfString;\n  i: Integer;\nbegin\n  list := StrToFontNameList(AValue);\n  for i := 0 to high(list) do\n  begin\n    if (list[i] = 'serif') or (list[i] = 'sans-serif') or (list[i] = 'monospace')\n    or (list[i] = 'cursive') or (list[i] = 'fantasy') then\n    begin\n      currentState.fontName:= list[i];\n      exit;\n    end else\n    if Assigned(fontRenderer) and fontRenderer.FontExists(list[i]) then\n    begin\n      currentState.fontName := list[i];\n      exit;\n    end;\n  end;\n  currentState.fontName := 'sans-serif';\nend;\n\nprocedure TBGRACanvas2D.SetFontRenderer(AValue: TBGRACustomFontRenderer);\nbegin\n  if AValue = FFontRenderer then exit;\n  FreeAndNil(FFontRenderer);\n  FFontRenderer := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetFontEmHeight(AValue: single);\nbegin\n  currentState.fontEmHeight := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetFontString(AValue: string);\nvar idxSpace,errPos: integer;\n  attrib,u: string;\n  value: single;\nbegin\n  currentState.fontStyle := [];\n  currentState.fontEmHeight := 10;\n  currentState.fontName := 'sans-serif';\n  AValue := trim(AValue);\n  while AValue <> '' do\n  begin\n    while (AValue <> '') and (AValue[1]in [#0..#32]) do delete(AValue,1,1);\n    idxSpace := pos(' ',AValue);\n    if idxSpace = 0 then\n      attrib := AValue\n    else\n      attrib := copy(AValue,1,idxSpace-1);\n    attrib := lowerCase(attrib);\n    if attrib = '' then break;\n    if (attrib = 'normal') or (attrib = 'small-caps') or (attrib = 'lighter') then\n    begin\n      //nothing\n    end else\n    if (attrib = 'italic') or (attrib = 'oblique') then\n    begin\n      include(currentState.fontStyle, fsItalic);\n    end else\n    if (attrib = 'bold') or (attrib = 'bolder') then\n    begin\n      include(currentState.fontStyle, fsBold);\n    end else\n    if (attrib[1] in ['.','0'..'9']) then\n    begin\n      u := '';\n      while (length(attrib)>0) and (attrib[length(attrib)] in['a'..'z']) do\n      begin\n        u := attrib[length(attrib)]+u;\n        delete(attrib,length(attrib),1);\n      end;\n      val(attrib,value,errPos);\n      if errPos = 0 then\n      begin\n        if u = '' then //weight\n        begin\n          if value >= 600 then include(currentState.fontStyle, fsBold);\n        end else\n        if u = 'px' then currentState.fontEmHeight := value else\n        if u = 'pt' then currentState.fontEmHeight:= value/72*96 else\n        if u = 'in' then currentState.fontEmHeight:= value*96 else\n        if u = 'mm' then currentState.fontEmHeight:= value/25.4*96 else\n        if u = 'cm' then currentState.fontEmHeight:= value/2.54*96;\n      end;\n    end else\n      break;\n    delete(AValue,1,length(attrib)+1);\n  end;\n  AValue := trim(AValue);\n  if AValue <> '' then currentState.fontName := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetFontStyle(AValue: TFontStyles);\nbegin\n  currentState.fontStyle:= AValue;\nend;\n\nprocedure TBGRACanvas2D.SetGlobalAlpha(const AValue: single);\nbegin\n  if AValue < 0 then currentState.globalAlpha:= 0 else\n  if AValue > 1 then currentState.globalAlpha:= 255 else\n    currentState.globalAlpha:= round(AValue*255);\nend;\n\nprocedure TBGRACanvas2D.SetLineCap(const AValue: string);\nbegin\n  if CompareText(AValue,'round')=0 then\n    currentState.penStroker.LineCap := pecRound else\n  if CompareText(AValue,'square')=0 then\n    currentState.penStroker.LineCap := pecSquare\n  else\n    currentState.penStroker.LineCap := pecFlat;\nend;\n\nprocedure TBGRACanvas2D.SetLineCapLCL(AValue: TPenEndCap);\nbegin\n  currentState.penStroker.LineCap := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetLineJoin(const AValue: string);\nbegin\n  if CompareText(AValue,'round')=0 then\n    currentState.penStroker.JoinStyle := pjsRound else\n  if CompareText(AValue,'bevel')=0 then\n    currentState.penStroker.JoinStyle := pjsBevel\n  else\n    currentState.penStroker.JoinStyle := pjsMiter;\nend;\n\nprocedure TBGRACanvas2D.FillPoly(const points: array of TPointF);\nvar\n  bfill: boolean;\n  tempScan: TBGRACustomScanner;\nbegin\n  if (length(points) = 0) or (surface = nil) then exit;\n  If hasShadow then DrawShadow(points,[],fillMode);\n  bfill:= currentState.fillMode = fmWinding;\n  if currentState.clipMaskReadOnly <> nil then\n  begin\n    if currentState.fillTextureProvider <> nil then\n      tempScan := TBGRATextureMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),currentState.fillTextureProvider.texture,currentState.globalAlpha)\n    else\n      tempScan := TBGRASolidColorMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),ApplyGlobalAlpha(currentState.fillColor));\n    if self.antialiasing then\n      BGRAPolygon.FillPolyAntialiasWithTexture(surface, points, tempScan, bfill, linearBlend)\n    else\n      BGRAPolygon.FillPolyAliasedWithTexture(surface, points, tempScan, bfill, GetDrawMode);\n    tempScan.free;\n  end else\n  begin\n    if currentState.fillTextureProvider <> nil then\n    begin\n      if currentState.globalAlpha <> 255 then\n      begin\n        tempScan := TBGRAOpacityScanner.Create(currentState.fillTextureProvider.texture, currentState.globalAlpha);\n        if self.antialiasing then\n          BGRAPolygon.FillPolyAntialiasWithTexture(surface, points, tempScan, bfill, linearBlend)\n        else\n          BGRAPolygon.FillPolyAliasedWithTexture(surface, points, tempScan, bfill, GetDrawMode);\n        tempScan.Free;\n      end else\n      begin\n        if self.antialiasing then\n          BGRAPolygon.FillPolyAntialiasWithTexture(surface, points, currentState.fillTextureProvider.texture, bfill, linearBlend)\n        else\n          BGRAPolygon.FillPolyAliasedWithTexture(surface, points, currentState.fillTextureProvider.texture, bfill, GetDrawMode);\n      end\n    end\n    else\n    begin\n      if self.antialiasing then\n        BGRAPolygon.FillPolyAntialias(surface, points, ApplyGlobalAlpha(currentState.fillColor), false, bfill, linearBlend)\n      else\n        BGRAPolygon.FillPolyAliased(surface, points, ApplyGlobalAlpha(currentState.fillColor), false, bfill, GetDrawMode)\n    end\n  end;\nend;\n\nprocedure TBGRACanvas2D.FillStrokePoly(const points: array of TPointF;\n  fillOver: boolean);\nvar\n  tempScan,tempScan2: TBGRACustomScanner;\n  multi: TBGRAMultishapeFiller;\n  contour : array of TPointF;\n  texture: IBGRAScanner;\n  idxContour: Integer;\nbegin\n  if (length(points) = 0) or (surface = nil) then exit;\n  tempScan := nil;\n  tempScan2 := nil;\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := self.fillMode;\n  if currentState.clipMaskReadOnly <> nil then\n  begin\n    if currentState.fillTextureProvider <> nil then\n      tempScan := TBGRATextureMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),currentState.fillTextureProvider.texture,currentState.globalAlpha)\n    else\n      tempScan := TBGRASolidColorMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),ApplyGlobalAlpha(currentState.fillColor));\n    multi.AddPolygon(points, tempScan);\n  end else\n  begin\n    if currentState.fillTextureProvider <> nil then\n    begin\n      if currentState.globalAlpha <> 255 then\n      begin\n        tempScan := TBGRAOpacityScanner.Create(currentState.fillTextureProvider.texture, currentState.globalAlpha);\n        multi.AddPolygon(points, tempScan);\n      end else\n        multi.AddPolygon(points, currentState.fillTextureProvider.texture)\n    end\n    else\n      multi.AddPolygon(points, ApplyGlobalAlpha(currentState.fillColor));\n  end;\n\n  if currentState.lineWidth > 0 then\n  begin\n    contour := currentState.penStroker.ComputePolylineAutocycle(points,currentState.lineWidth);\n\n    if currentState.clipMaskReadOnly <> nil then\n    begin\n      if currentState.strokeTextureProvider <> nil then\n        tempScan2 := TBGRATextureMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),currentState.strokeTextureProvider.texture,currentState.globalAlpha)\n      else\n        tempScan2 := TBGRASolidColorMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),ApplyGlobalAlpha(currentState.strokeColor));\n      idxContour := multi.AddPolygon(contour,tempScan);\n    end else\n    begin\n      if currentState.strokeTextureProvider <> nil then\n        texture := currentState.strokeTextureProvider.texture else\n        texture := nil;\n      if texture = nil then\n        idxContour := multi.AddPolygon(contour,ApplyGlobalAlpha(currentState.strokeColor))\n      else\n        idxContour := multi.AddPolygon(contour,texture);\n    end;\n    multi.OverrideFillMode(idxContour, fmWinding);\n    If hasShadow then DrawShadow(points,contour);\n  end else\n    If hasShadow then DrawShadow(points,[]);\n\n  if fillOver then multi.PolygonOrder := poFirstOnTop else multi.PolygonOrder:= poLastOnTop;\n  multi.Antialiasing := self.antialiasing;\n  multi.Draw(surface);\n  tempScan.free;\n  tempScan2.free;\n  multi.Free;\nend;\n\nprocedure TBGRACanvas2D.FillTexts(AErase: boolean);\nvar\n  i,j: Integer;\n  hy,hx,h: single;\n  bmp,bmpTransf: TBGRACustomBitmap;\n  tempScan: TBGRACustomScanner;\n  m: TAffineMatrix;\n  s: TSize;\n  sourceBounds, usedSourceBounds, surfaceBounds, shadowBounds: TRect;\n  rf: TResampleFilter;\n  pad: TSize;\n  p: PBGRAPixel;\nbegin\n  for i := 0 to High(FTextPaths) do\n  with FTextPaths[i] do\n  begin\n    hx := VectLen(FontMatrix[1,1],FontMatrix[2,1]);\n    hy := VectLen(FontMatrix[1,2],FontMatrix[2,2]);\n    h := max(hx,hy);\n    if self.antialiasing then h := round(h);\n    if h<=0 then continue;\n    m := FontMatrix*AffineMatrixScale(1/h, 1/h);\n    if pixelCenteredCoordinates then m := AffineMatrixTranslation(0.5,0.5)*m;\n    bmp := BGRABitmapFactory.Create;\n    try\n      bmp.FontName := CSSFontNameToLCL(FontName);\n      bmp.FontStyle:= FontStyle;\n      bmp.FontHeight:= round(h);\n      bmp.FontBidiMode:= TextDirection;\n      if self.antialiasing then\n        bmp.FontQuality := fqFineAntialiasing\n      else\n        bmp.FontQuality:= fqSystem;\n\n      bmp.FontVerticalAnchor:= FontAnchor;\n      m := m*AffineMatrixTranslation(0,-bmp.FontVerticalAnchorOffset);\n      bmp.FontVerticalAnchor:= fvaTop;\n\n      s := bmp.TextSize(Text);\n      case FontAlign of\n        taCenter: m := m*AffineMatrixTranslation(-s.cx/2,0);\n        taRightJustify: m := m*AffineMatrixTranslation(-s.cx,0);\n      end;\n\n      pad := Size(round(h/3), round(h/3));\n      m := m*AffineMatrixTranslation(-pad.cx,-pad.cy);\n      sourceBounds := BGRAClasses.Rect(0,0,s.cx+pad.cx*2,s.cy+pad.cy*2);\n      surfaceBounds := surface.GetImageAffineBounds(m, sourceBounds);\n      if hasShadow then\n      begin\n        shadowBounds := surfaceBounds;\n        shadowBounds.Inflate(ceil(shadowBlur),ceil(shadowBlur));\n        shadowBounds.Offset(round(shadowOffsetX),round(shadowOffsetY));\n        shadowBounds.Intersect(surface.ClipRect);\n        if not shadowBounds.IsEmpty then\n        begin\n          shadowBounds.Offset(-round(shadowOffsetX),-round(shadowOffsetY));\n          surfaceBounds.Union(shadowBounds);\n        end;\n      end;\n      if not surfaceBounds.IsEmpty and IsAffineMatrixInversible(m) then\n      begin\n        usedSourceBounds := (AffineMatrixInverse(m) *\n                             TAffineBox.AffineBox(RectF(surfaceBounds))).RectBounds;\n        usedSourceBounds.Inflate(1,1);\n        sourceBounds.Intersect(usedSourceBounds);\n        m := m * AffineMatrixTranslation(sourceBounds.Left, sourceBounds.Top);\n        bmp.SetSize(sourceBounds.Width, sourceBounds.Height);\n        bmp.Fill(BGRABlack);\n        bmp.TextOut(pad.cx - sourceBounds.Left,pad.cy - sourceBounds.Top, Text, BGRAWhite);\n        if self.antialiasing then bmp.ConvertToLinearRGB else\n        begin\n          p := bmp.Data;\n          for j := bmp.NbPixels-1 downto 0 do\n          begin\n            if p^.green<128 then p^ := BGRABlack else p^ := BGRAWhite;\n            inc(p);\n          end;\n        end;\n\n        bmpTransf := BGRABitmapFactory.Create(surfaceBounds.Width,surfaceBounds.Height,BGRABlack);\n        try\n          m := AffineMatrixTranslation(-surfaceBounds.Left-0.5,-surfaceBounds.Top-0.5)*m;\n          if self.antialiasing then rf:= rfCosine else rf := rfBox;\n          bmpTransf.PutImageAffine(m, bmp, rf, GetDrawMode);\n          FreeAndNil(bmp);\n\n          if AErase then\n            surface.EraseMask(surfaceBounds.Left,surfaceBounds.Top, bmpTransf) else\n          begin\n            if hasShadow then\n              DrawShadowMask(surfaceBounds.Left+round(shadowOffsetX),surfaceBounds.Top+round(shadowOffsetY), bmpTransf, false);\n\n            if currentState.clipMaskReadOnly <> nil then\n            begin\n              if currentState.fillTextureProvider <> nil then\n                tempScan := TBGRATextureMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),currentState.fillTextureProvider.texture,currentState.globalAlpha)\n              else\n                tempScan := TBGRASolidColorMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),ApplyGlobalAlpha(currentState.fillColor));\n              surface.FillMask(surfaceBounds.Left,surfaceBounds.Top, bmpTransf, tempScan, GetDrawMode);\n              tempScan.free;\n            end else\n            begin\n              if currentState.fillTextureProvider <> nil then\n              begin\n                if currentState.globalAlpha <> 255 then\n                begin\n                  tempScan := TBGRAOpacityScanner.Create(currentState.fillTextureProvider.texture, currentState.globalAlpha);\n                  surface.FillMask(surfaceBounds.Left,surfaceBounds.Top, bmpTransf, tempScan, GetDrawMode);\n                  tempScan.Free;\n                end else\n                  surface.FillMask(surfaceBounds.Left,surfaceBounds.Top, bmpTransf, currentState.fillTextureProvider.texture, GetDrawMode);\n              end\n              else\n                surface.FillMask(surfaceBounds.Left,surfaceBounds.Top, bmpTransf, ApplyGlobalAlpha(currentState.fillColor), GetDrawMode);\n            end;\n          end;\n        finally\n          bmpTransf.Free;\n        end;\n      end;\n    finally\n      bmp.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACanvas2D.SetLineJoinLCL(AValue: TPenJoinStyle);\nbegin\n  currentState.penStroker.JoinStyle := AValue;\nend;\n\nprocedure TBGRACanvas2D.lineStyle(const AValue: array of single);\nvar a: array of single;\n  i: Integer;\n  isClear: boolean;\nbegin\n  isClear := (length(AValue) = 1) and (AValue[0] = 0);\n  if odd(length(AValue)) and not isClear then\n  begin\n    setlength(a, length(AValue)*2);\n    for i := 0 to high(AValue) do\n    begin\n      a[i] := AValue[i];\n      a[i + length(AValue)] := AValue[i];\n    end;\n  end else\n    a := DuplicatePenStyle(AValue);\n  currentState.penStroker.CustomPenStyle := a;\nend;\n\nprocedure TBGRACanvas2D.lineStyle(AStyle: TPenStyle);\nbegin\n  if AStyle = psPattern then exit;\n  lineStyle(PenStyleToBGRA(AStyle));\nend;\n\nclass function TBGRACanvas2D.StrToFontNameList(AText: string): ArrayOfString;\nvar\n  list: TStringList;\n  inQuote: Char;\n  nameStart, i: Integer;\n\n  procedure SkipSpace;\n  begin\n    while (i < length(AText)) and (AText[i] in [#0..#32]) do inc(i);\n  end;\n\n  procedure SkipComma;\n  begin\n    SkipSpace;\n    if (i < length(AText)) and (AText[i] = ',') then inc(i);\n    SkipSpace;\n  end;\n\nbegin\n  list := TStringList.Create;\n  inQuote := ' ';\n  i := 1;\n  SkipSpace;\n  nameStart := -1;\n  while i <= length(AText) do\n  begin\n    if inQuote <> ' ' then\n    begin\n      if AText[i] = inQuote then\n      begin\n        list.Add(copy(AText, nameStart, i-nameStart));\n        inQuote := ' ';\n        inc(i);\n        SkipComma;\n        nameStart := -1;\n      end else\n        inc(i);\n    end else\n    if nameStart = -1 then\n    begin\n      if AText[i] in ['''', '\"'] then\n      begin\n        nameStart := i+1;\n        inQuote := AText[i];\n        inc(i);\n      end else\n      begin\n        nameStart := i;\n        inc(i);\n      end;\n    end else\n    if AText[i] = ',' then\n    begin\n      list.Add(Trim(copy(AText, nameStart, i-nameStart)));\n      inc(i);\n      SkipComma;\n      nameStart := -1;\n    end else\n      inc(i);\n  end;\n  if nameStart <> -1 then list.Add(copy(AText, nameStart, length(AText)-nameStart+1));\n  setlength(result, list.Count);\n  for i := 0 to list.Count-1 do\n    result[i] := list[i];\n  list.Free;\nend;\n\nclass function TBGRACanvas2D.FontNameListToStr(AList: ArrayOfString): string;\nvar\n  i: Integer;\nbegin\n  result := '';\n  for i := 0 to high(AList) do\n  begin\n    if i > 0 then AppendStr(result, ', ');\n    if pos(' ',AList[i]) <> -1 then\n      AppendStr(result, '''' + StringReplace(AList[i], '''', '&#39;', [rfReplaceAll]) + '''')\n      else AppendStr(result, AList[i]);\n  end;\nend;\n\nclass function TBGRACanvas2D.CSSFontNameToLCL(AName: string): string;\nbegin\n  if AName = 'sans-serif' then result := 'sans'\n  else if AName = 'cursive' then result := {$IFDEF WINDOWS}'Segoe Script'{$ELSE}\n                                           {$IFDEF LINUX}'Z003'{$ELSE}\n                                           {$IFDEF DARWIN}'Brush Script MT'{$ELSE}\n                                           'sans'\n                                           {$ENDIF}{$ENDIF}{$ENDIF}\n  else if AName = 'fantasy' then result := {$IFDEF WINDOWS}'Comic Sans MS'{$ELSE}\n                                           {$IFDEF DARWIN}'Papyrus'{$ELSE}\n                                           'sans'\n                                           {$ENDIF}{$ENDIF}\n  else result := StringReplace(StringReplace(AName, '&apos;', '''', [rfReplaceAll]),\n                                  '&#39;', '''', [rfReplaceAll]);\nend;\n\nfunction TBGRACanvas2D.QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  if GetInterface(iid, obj) then\n    Result := S_OK\n  else\n    Result := longint(E_NOINTERFACE);\nend;\n\n{ There is no automatic reference counting, but it is compulsory to define these functions }\nfunction TBGRACanvas2D._AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nfunction TBGRACanvas2D._Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nprocedure TBGRACanvas2D.SetLineWidth(const AValue: single);\nbegin\n  currentState.lineWidth := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetMatrix(AValue: TAffineMatrix);\nbegin\n  currentState.matrix := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetMiterLimit(const AValue: single);\nbegin\n  currentState.penStroker.MiterLimit := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetPixelCenteredCoordinates(const AValue: boolean);\nbegin\n  FPixelCenteredCoordinates:= AValue;\n  if AValue then\n    FCanvasOffset := PointF(0,0)\n  else\n    FCanvasOffset := PointF(-0.5,-0.5);\nend;\n\nprocedure TBGRACanvas2D.SetShadowBlur(const AValue: single);\nbegin\n  currentState.shadowBlur := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetShadowFastest(AValue: boolean);\nbegin\n  currentState.shadowFastest := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetShadowOffset(const AValue: TPointF);\nbegin\n  shadowOffsetX := AValue.X;\n  shadowOffsetY := AValue.Y;\nend;\n\nprocedure TBGRACanvas2D.SetShadowOffsetX(const AValue: single);\nbegin\n  currentState.shadowOffsetX := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetShadowOffsetY(const AValue: single);\nbegin\n  currentState.shadowOffsetY := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetStrokeMatrix(AValue: TAffineMatrix);\nbegin\n  currentState.penStroker.strokeMatrix := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetTextAlign(AValue: string);\nbegin\n  AValue := trim(LowerCase(AValue));\n  if (AValue = 'left') or (AValue = 'start') then\n    textAlignLCL := taLeftJustify else\n  if (AValue = 'right') or (AValue = 'end') then\n    textAlignLCL := taRightJustify else\n  if AValue = 'center' then\n    textAlignLCL := taCenter;\nend;\n\nprocedure TBGRACanvas2D.SetTextAlignLCL(AValue: TAlignment);\nbegin\n  currentState.textAlign := AValue;\nend;\n\nprocedure TBGRACanvas2D.SetTextBaseline(AValue: string);\nbegin\n  currentState.textBaseline := trim(lowercase(AValue));\nend;\n\nprocedure TBGRACanvas2D.StrokePoly(const points: array of TPointF);\nvar\n  texture: IBGRAScanner;\n  tempScan: TBGRACustomScanner;\n  contour: array of TPointF;\nbegin\n  if (length(points)= 0) or (currentState.lineWidth = 0) or (surface = nil) then exit;\n  contour := currentState.penStroker.ComputePolylineAutocycle(points,currentState.lineWidth);\n\n  If hasShadow then DrawShadow(contour,[]);\n  if currentState.clipMaskReadOnly <> nil then\n  begin\n    if currentState.strokeTextureProvider <> nil then\n      tempScan := TBGRATextureMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),currentState.strokeTextureProvider.texture,currentState.globalAlpha)\n    else\n      tempScan := TBGRASolidColorMaskScanner.Create(currentState.clipMaskReadOnly,Point(0,0),ApplyGlobalAlpha(currentState.strokeColor));\n    if self.antialiasing then\n      BGRAPolygon.FillPolyAntialiasWithTexture(Surface,contour,tempScan,True, linearBlend)\n    else\n      BGRAPolygon.FillPolyAliasedWithTexture(Surface,contour,tempScan,True,GetDrawMode);\n    tempScan.free;\n  end else\n  begin\n    if currentState.strokeTextureProvider <> nil then\n      texture := currentState.strokeTextureProvider.texture else\n      texture := nil;\n    if texture = nil then\n    begin\n      if self.antialiasing then\n        BGRAPolygon.FillPolyAntialias(Surface,contour,ApplyGlobalAlpha(currentState.strokeColor),false,True, linearBlend)\n      else\n        BGRAPolygon.FillPolyAliased(Surface,contour,ApplyGlobalAlpha(currentState.strokeColor),false,True,GetDrawMode)\n    end\n    else\n    begin\n      if self.antialiasing then\n        BGRAPolygon.FillPolyAntialiasWithTexture(Surface,contour,texture,True, linearBlend)\n      else\n        BGRAPolygon.FillPolyAliasedWithTexture(Surface,contour,texture,True,GetDrawMode)\n    end;\n  end;\nend;\n\nprocedure TBGRACanvas2D.DrawShadow(const points, points2: array of TPointF;\n  AFillMode: TFillMode = fmWinding);\nvar ofsPts,ofsPts2: array of TPointF;\n    offset: TPointF;\n    i: Integer;\n    tempBmp: TGrayscaleMask;\n    maxRect: TRect;\n    foundRect: TRect;\n    firstFound: boolean;\n\n    procedure AddPt(const coord: TPointF);\n    var pixRect: TRect;\n    begin\n      if isEmptyPointF(coord) then exit;\n      pixRect := BGRAClasses.Rect(round(floor(coord.x)),round(floor(coord.y)),round(ceil(coord.x+0.999))+1,round(ceil(coord.y+0.999))+1);\n      if firstFound then\n      begin\n        foundRect := pixRect;\n        firstFound := false\n      end\n      else\n      begin\n        if pixRect.left < foundRect.left then foundRect.left := pixRect.Left;\n        if pixRect.top < foundRect.top then foundRect.top := pixRect.top;\n        if pixRect.right > foundRect.right then foundRect.right := pixRect.right;\n        if pixRect.bottom > foundRect.bottom then foundRect.bottom := pixRect.bottom;\n      end;\n    end;\n\nbegin\n  if not hasShadow or (surface = nil) then exit;\n  offset := PointF(shadowOffsetX,shadowOffsetY);\n  setlength(ofsPts, length(points));\n  for i := 0 to high(ofsPts) do\n    ofsPts[i] := points[i]+offset;\n  setlength(ofsPts2, length(points2));\n  for i := 0 to high(ofsPts2) do\n    ofsPts2[i] := points2[i]+offset;\n\n  maxRect := BGRAClasses.Rect(0,0,width,height);\n  if currentState.clipMaskReadOnly <> nil then\n    foundRect := maxRect\n  else\n  begin\n    firstFound := true;\n    foundRect := EmptyRect;\n    for i := 0 to high(ofsPts) do\n      AddPt(ofsPts[i]);\n    for i := 0 to high(ofsPts2) do\n      AddPt(ofsPts2[i]);\n    if firstFound then exit;\n    foundRect.Inflate(ceil(shadowBlur), ceil(shadowBlur));\n    foundRect.Intersect(maxRect);\n    if foundRect.IsEmpty then exit;\n    offset := PointF(-foundRect.Left,-foundRect.Top);\n    for i := 0 to high(ofsPts) do\n      ofsPts[i].Offset(offset);\n    for i := 0 to high(ofsPts2) do\n      ofsPts2[i].Offset(offset);\n  end;\n\n  tempBmp := TGrayscaleMask.Create(foundRect.Right-foundRect.Left,foundRect.Bottom-foundRect.Top,BGRABlack);\n  tempBmp.FillMode := AFillMode;\n  tempBmp.FillPolyAntialias(ofsPts, BGRAWhite);\n  tempBmp.FillPolyAntialias(ofsPts2, BGRAWhite);\n  DrawShadowMask(foundRect.Left,foundRect.Top, tempBmp, true);\nend;\n\nprocedure TBGRACanvas2D.DrawShadowMask(X, Y: integer; AMask: TCustomUniversalBitmap; AMaskOwned: boolean);\nconst invSqrt2 = 1/sqrt(2);\nvar\n  bmp: TCustomUniversalBitmap;\n  gs: TGrayscaleMask;\nbegin\n  if AMask.Colorspace <> TByteMaskColorspace then\n  begin\n    gs := TGrayscaleMask.Create(AMask as TBGRACustomBitmap, cGreen);\n    if AMaskOwned then AMask.Free;\n    AMask := gs;\n    AMaskOwned:= true;\n  end;\n  bmp := AMask;\n  if shadowBlur > 0 then\n  begin\n    if shadowFastest then\n    begin\n      if shadowBlur*invSqrt2 >= 0.5 then\n        bmp := BGRAFilterBlur.FilterBlurRadial(AMask, shadowBlur*invSqrt2, shadowBlur*invSqrt2, rbBox);\n    end\n    else\n    begin\n      if (shadowBlur < 5) and (abs(shadowBlur-round(shadowBlur)) > 1e-6) then\n        bmp := BGRAFilterBlur.FilterBlurRadial(AMask, shadowBlur*10, shadowBlur*10, rbPrecise)\n      else\n        bmp := BGRAFilterBlur.FilterBlurRadial(AMask, shadowBlur, shadowBlur, rbFast);\n    end;\n  end;\n  if currentState.clipMaskReadOnly <> nil then\n  begin\n    if (bmp = AMask) and not AMaskOwned then bmp := AMask.Duplicate;\n    bmp.ApplyMask(currentState.clipMaskReadOnly);\n  end;\n  surface.FillMask(X,Y,bmp,ApplyGlobalAlpha(getShadowColor),GetDrawMode);\n  if bmp <> AMask then bmp.Free;\n  if AMaskOwned then AMask.Free;\nend;\n\nprocedure TBGRACanvas2D.ClearPoly(const points: array of TPointF);\nbegin\n  if surface = nil then exit;\n  if self.antialiasing then\n    BGRAPolygon.FillPolyAntialias(surface, points, BGRA(0,0,0,255), true, true, linearBlend)\n  else\n    BGRAPolygon.FillPolyAliased(surface, points, BGRA(0,0,0,255), true, true, dmSet);\nend;\n\nfunction TBGRACanvas2D.ApplyTransform(const points: array of TPointF;\n  matrix: TAffineMatrix): ArrayOfTPointF;\nvar\n  i: Integer;\nbegin\n  setlength(result,length(points));\n  for i := 0 to high(result) do\n    if isEmptyPointF(points[i]) then\n      result[i] := EmptyPointF\n    else\n      result[i] := matrix*points[i]+FCanvasOffset;\nend;\n\nfunction TBGRACanvas2D.ApplyTransform(const points: array of TPointF\n  ): ArrayOfTPointF;\nvar\n  i: Integer;\nbegin\n  setlength(result,length(points));\n  for i := 0 to high(result) do\n    if isEmptyPointF(points[i]) then\n      result[i] := EmptyPointF\n    else\n      result[i] := currentState.matrix*points[i]+FCanvasOffset;\nend;\n\nfunction TBGRACanvas2D.ApplyTransform(point: TPointF): TPointF;\nbegin\n  result := currentState.matrix*point+FCanvasOffset;\nend;\n\nfunction TBGRACanvas2D.GetPenPos(defaultX,defaultY: single): TPointF;\nbegin\n  if isEmptyPointF(FLastCoord) then\n    result := PointF(defaultX,defaultY)\n  else\n    result := FLastCoord;\nend;\n\nfunction TBGRACanvas2D.GetPenPos(defaultPt: TPointF): TPointF;\nbegin\n  result := GetPenPos(defaultPt.x,defaultPt.y);\nend;\n\nprocedure TBGRACanvas2D.AddPoint(point: TPointF);\nbegin\n  if FPathPointCount = length(FPathPoints) then\n    setlength(FPathPoints, (length(FPathPoints)+1)*2);\n  FPathPoints[FPathPointCount] := point;\n  inc(FPathPointCount);\nend;\n\nprocedure TBGRACanvas2D.AddPoints(const points: array of TPointF);\nvar i: integer;\nbegin\n  if FPathPointCount+length(points) > length(FPathPoints) then\n    setlength(FPathPoints, max( (length(FPathPoints)+1)*2, FPathPointCount+length(points) ) );\n  for i := 0 to high(points) do\n  begin\n    FPathPoints[FPathPointCount] := points[i];\n    inc(FPathPointCount);\n  end;\nend;\n\nprocedure TBGRACanvas2D.AddPointsRev(const points: array of TPointF);\nvar i: integer;\nbegin\n  if FPathPointCount+length(points) > length(FPathPoints) then\n    setlength(FPathPoints, max( (length(FPathPoints)+1)*2, FPathPointCount+length(points) ) );\n  for i := high(points) downto 0 do\n  begin\n    FPathPoints[FPathPointCount] := points[i];\n    inc(FPathPointCount);\n  end;\nend;\n\nfunction TBGRACanvas2D.ApplyGlobalAlpha(color: TBGRAPixel): TBGRAPixel;\nbegin\n  result := BGRA(color.red,color.green,color.blue,ApplyOpacity(color.alpha, currentState.globalAlpha));\nend;\n\nfunction TBGRACanvas2D.GetDrawMode: TDrawMode;\nbegin\n  if linearBlend then result := dmLinearBlend else result := dmDrawWithTransparency;\nend;\n\nprocedure TBGRACanvas2D.copyTo(dest: IBGRAPath);\nbegin\n  //nothing\nend;\n\nfunction TBGRACanvas2D.getPoints: ArrayOfTPointF;\nbegin\n  result := GetCurrentPathAsPoints;\nend;\n\nfunction TBGRACanvas2D.getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF;\nbegin\n  result := GetCurrentPathAsPoints;\n  if not IsAffineMatrixIdentity(AMatrix) then\n    result := AMatrix*result;\nend;\n\nfunction TBGRACanvas2D.getCursor: TBGRACustomPathCursor;\nbegin\n  result := nil;\nend;\n\nconstructor TBGRACanvas2D.Create(ASurface: TBGRACustomBitmap);\nbegin\n  FSurface := ASurface;\n  StateStack := TList.Create;\n  FPathPointCount := 0;\n  FLastCoord := EmptyPointF;\n  FStartCoord := EmptyPointF;\n  currentState := TBGRACanvasState2D.Create(AffineMatrixIdentity,nil,true);\n  pixelCenteredCoordinates := false;\n  antialiasing := true;\n  gradientGammaCorrection := false;\nend;\n\ndestructor TBGRACanvas2D.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := 0 to StateStack.Count-1 do\n    TObject(StateStack[i]).Free;\n  StateStack.Free;\n  currentState.Free;\n  FreeAndNil(FFontRenderer);\n  inherited Destroy;\nend;\n\nfunction TBGRACanvas2D.toDataURL(mimeType: string): string;\nvar\n  stream: TMemoryStream;\n  jpegWriter: TBGRAWriterJPEG;\n  bmpWriter: TBGRAWriterBMP;\n  output: TStringStream;\n  encode64: TBase64EncodingStream;\nbegin\n  if surface = nil then exit('');\n  stream := TMemoryStream.Create;\n  if mimeType='image/jpeg' then\n  begin\n    jpegWriter := TBGRAWriterJPEG.Create;\n    Surface.SaveToStream(stream,jpegWriter);\n    jpegWriter.Free;\n  end else\n  if mimeType='image/bmp' then\n  begin\n    bmpWriter := TBGRAWriterBMP.Create;\n    Surface.SaveToStream(stream,bmpWriter);\n    bmpWriter.Free;\n  end else\n  begin\n    mimeType := 'image/png';\n    Surface.SaveToStreamAsPng(stream);\n  end;\n  output := TStringStream.Create('data:'+mimeType+';base64,');\n  output.Position := output.size;\n  stream.Position := 0;\n  encode64 := TBase64EncodingStream.Create(output);\n  encode64.CopyFrom(stream,stream.size);\n  encode64.free;\n  stream.free;\n  result := output.DataString;\n  output.free;\nend;\n\nprocedure TBGRACanvas2D.save;\nbegin\n  StateStack.Add(currentState);\n  currentState := currentState.Duplicate;\nend;\n\nprocedure TBGRACanvas2D.restore;\nbegin\n  if StateStack.Count > 0 then\n  begin\n    FreeAndNil(currentState);\n    currentState := TBGRACanvasState2D(StateStack[StateStack.Count-1]);\n    StateStack.Delete(StateStack.Count-1);\n  end;\nend;\n\nprocedure TBGRACanvas2D.copyStateFrom(AOtherCanvas2D: TBGRACanvas2D);\nbegin\n  StateStack.Add(currentState);\n  currentState := AOtherCanvas2D.currentState.Duplicate;\nend;\n\nprocedure TBGRACanvas2D.scale(x, y: single);\nbegin\n  if (x = 1) and (y = 1) then exit;\n  currentState.transform(AffineMatrixScale(x,y));\nend;\n\nprocedure TBGRACanvas2D.scale(factor: single);\nbegin\n  if factor = 1 then exit;\n  currentState.transform( AffineMatrixScale(factor,factor) );\nend;\n\nprocedure TBGRACanvas2D.rotate(angleRadCW: single);\nbegin\n  currentState.transform( AffineMatrixRotationRad(-angleRadCW) );\nend;\n\nprocedure TBGRACanvas2D.translate(x, y: single);\nbegin\n  if (x = 0) and (y = 0) then exit;\n  currentState.transform( AffineMatrixTranslation(x,y) );\nend;\n\nprocedure TBGRACanvas2D.skewx(angleRadCW: single);\nbegin\n  currentState.transform( AffineMatrixSkewXRad(-angleRadCW) );\nend;\n\nprocedure TBGRACanvas2D.skewy(angleRadCW: single);\nbegin\n  currentState.transform( AffineMatrixSkewYRad(-angleRadCW) );\nend;\n\nprocedure TBGRACanvas2D.transform(m11,m21, m12,m22, m13,m23: single);\nbegin\n  currentState.transform( AffineMatrix(m11,m12,m13,\n                                       m21,m22,m23) );\nend;\n\nprocedure TBGRACanvas2D.transform(AMatrix: TAffineMatrix);\nbegin\n  currentState.transform( AMatrix );\nend;\n\nprocedure TBGRACanvas2D.setTransform(m11,m21, m12,m22, m13,m23: single);\nbegin\n  currentState.matrix := AffineMatrix(m11,m12,m13,\n                                      m21,m22,m23);\nend;\n\nprocedure TBGRACanvas2D.resetTransform;\nbegin\n  currentState.matrix := AffineMatrixIdentity;\nend;\n\nprocedure TBGRACanvas2D.strokeScale(x, y: single);\nbegin\n  currentState.penStroker.strokeMatrix := currentState.penStroker.strokeMatrix * AffineMatrixScale(x,y);\nend;\n\nprocedure TBGRACanvas2D.strokeSkewx(angleRadCW: single);\nbegin\n  currentState.penStroker.strokeMatrix := currentState.penStroker.strokeMatrix * AffineMatrixSkewXRad(-angleRadCW);\nend;\n\nprocedure TBGRACanvas2D.strokeSkewy(angleRadCW: single);\nbegin\n  currentState.penStroker.strokeMatrix := currentState.penStroker.strokeMatrix * AffineMatrixSkewYRad(-angleRadCW);\nend;\n\nprocedure TBGRACanvas2D.strokeResetTransform;\nbegin\n  currentState.penStroker.strokeMatrix := AffineMatrixIdentity;\nend;\n\nprocedure TBGRACanvas2D.strokeStyle(color: TBGRAPixel);\nbegin\n  currentState.strokeColor := color;\n  currentState.strokeTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.strokeStyle(color: TColor);\nbegin\n  currentState.strokeColor := ColorToBGRA(color);\n  currentState.strokeTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.strokeStyle(color: string);\nbegin\n  currentState.strokeColor := StrToBGRA(color);\n  currentState.strokeTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.strokeStyle(texture: IBGRAScanner);\nbegin\n  strokeStyle(createPattern(texture));\nend;\n\nprocedure TBGRACanvas2D.strokeStyle(provider: IBGRACanvasTextureProvider2D);\nbegin\n  currentState.strokeColor := BGRAPixelTransparent;\n  currentState.strokeTextureProvider := provider;\nend;\n\nfunction TBGRACanvas2D.GetFillMode: TFillMode;\nbegin\n  result := currentState.fillMode;\nend;\n\nprocedure TBGRACanvas2D.SetFillMode(mode: TFillMode);\nbegin\n  currentState.fillMode := mode;\nend;     \n\nprocedure TBGRACanvas2D.fillStyle(color: TBGRAPixel);\nbegin\n  currentState.fillColor := color;\n  currentState.fillTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.fillStyle(color: TColor);\nbegin\n  currentState.fillColor := ColorToBGRA(color);\n  currentState.fillTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.fillStyle(color: string);\nbegin\n  currentState.fillColor := StrToBGRA(color);\n  currentState.fillTextureProvider := nil;\nend;\n\nprocedure TBGRACanvas2D.fillStyle(texture: IBGRAScanner);\nbegin\n  fillStyle(createPattern(texture));\nend;\n\nprocedure TBGRACanvas2D.fillStyle(provider: IBGRACanvasTextureProvider2D);\nbegin\n  currentState.fillColor := BGRAPixelTransparent;\n  currentState.fillTextureProvider := provider;\nend;\n\nprocedure TBGRACanvas2D.shadowColor(color: TBGRAPixel);\nbegin\n  currentState.shadowColor := color;\nend;\n\nprocedure TBGRACanvas2D.shadowColor(color: TColor);\nbegin\n  shadowColor(ColorToBGRA(color));\nend;\n\nprocedure TBGRACanvas2D.shadowColor(color: string);\nbegin\n  shadowColor(StrToBGRA(color));\nend;\n\nprocedure TBGRACanvas2D.shadowNone;\nbegin\n  shadowColor(BGRAPixelTransparent);\nend;\n\nfunction TBGRACanvas2D.getShadowColor: TBGRAPixel;\nbegin\n  result := currentState.shadowColor;\nend;\n\nfunction TBGRACanvas2D.createLinearGradient(x0, y0, x1, y1: single): IBGRACanvasGradient2D;\nbegin\n  result := createLinearGradient(PointF(x0,y0), PointF(x1,y1));\nend;\n\nfunction TBGRACanvas2D.createLinearGradient(p0, p1: TPointF): IBGRACanvasGradient2D;\nbegin\n  result := TBGRACanvasLinearGradient2D.Create(p0,p1,\n            AffineMatrixTranslation(FCanvasOffset.x,FCanvasOffset.y)*currentState.matrix);\n  result.gammaCorrection := gradientGammaCorrection;\nend;\n\nfunction TBGRACanvas2D.createLinearGradient(x0, y0, x1, y1: single;\n  Colors: TBGRACustomGradient): IBGRACanvasGradient2D;\nbegin\n  result := createLinearGradient(x0,y0,x1,y1);\n  result.setColors(Colors);\nend;\n\nfunction TBGRACanvas2D.createLinearGradient(p0, p1: TPointF;\n  Colors: TBGRACustomGradient): IBGRACanvasGradient2D;\nbegin\n  result := createLinearGradient(p0,p1);\n  result.setColors(Colors);\nend;\n\nfunction TBGRACanvas2D.createRadialGradient(x0, y0, r0, x1, y1, r1: single;\n  flipGradient: boolean): IBGRACanvasGradient2D;\nbegin\n  result := createRadialGradient(PointF(x0,y0), r0, PointF(x1,y1), r1, flipGradient);\nend;\n\nfunction TBGRACanvas2D.createRadialGradient(p0: TPointF; r0: single;\n  p1: TPointF; r1: single; flipGradient: boolean): IBGRACanvasGradient2D;\nbegin\n  result := TBGRACanvasRadialGradient2D.Create(p0,r0,p1,r1,\n            AffineMatrixTranslation(FCanvasOffset.x,FCanvasOffset.y)*currentState.matrix,\n            flipGradient);\n  result.gammaCorrection := gradientGammaCorrection;\nend;\n\nfunction TBGRACanvas2D.createRadialGradient(x0, y0, r0, x1, y1, r1: single;\n  Colors: TBGRACustomGradient; flipGradient: boolean): IBGRACanvasGradient2D;\nbegin\n  result := createRadialGradient(x0,y0,r0,x1,y1,r1,flipGradient);\n  result.setColors(Colors);\nend;\n\nfunction TBGRACanvas2D.createRadialGradient(p0: TPointF; r0: single;\n  p1: TPointF; r1: single; Colors: TBGRACustomGradient; flipGradient: boolean): IBGRACanvasGradient2D;\nbegin\n  result := createRadialGradient(p0,r0,p1,r1,flipGradient);\n  result.setColors(Colors);\nend;\n\nfunction TBGRACanvas2D.createPattern(image: TBGRACustomBitmap; repetition: string\n  ): IBGRACanvasTextureProvider2D;\nvar\n  repeatX,repeatY: boolean;\n  origin: TPointF;\nbegin\n  repetition := lowercase(trim(repetition));\n  repeatX := true;\n  repeatY := true;\n  if repetition = 'repeat-x' then repeatY := false else\n  if repetition = 'repeat-y' then repeatX := false else\n  if repetition = 'no-repeat' then\n  begin\n    repeatX := false;\n    repeatY := false;\n  end;\n  origin := ApplyTransform(PointF(0,0));\n  result := TBGRACanvasPattern2D.Create(image,repeatX,repeatY,\n     origin, origin+PointF(currentState.matrix[1,1],currentState.matrix[2,1])*image.Width,\n     origin+PointF(currentState.matrix[1,2],currentState.matrix[2,2])*image.Height);\nend;\n\nfunction TBGRACanvas2D.createPattern(texture: IBGRAScanner\n  ): IBGRACanvasTextureProvider2D;\nvar\n  tempTransform: TAffineMatrix;\nbegin\n  tempTransform := AffineMatrixTranslation(FCanvasOffset.X+0.5,FCanvasOffset.Y+0.5)*currentState.matrix;\n  result := TBGRACanvasPattern2D.Create(texture,tempTransform);\nend;\n\nprocedure TBGRACanvas2D.fillRect(x, y, w, h: single);\nbegin\n  if (w=0) or (h=0) then exit;\n  FillPoly(ApplyTransform([PointF(x,y),PointF(x+w,y),PointF(x+w,y+h),PointF(x,y+h)]));\nend;\n\nprocedure TBGRACanvas2D.strokeRect(x, y, w, h: single);\nbegin\n  if (w=0) or (h=0) then exit;\n  StrokePoly(ApplyTransform([PointF(x,y),PointF(x+w,y),PointF(x+w,y+h),PointF(x,y+h),PointF(x,y)]));\nend;\n\nprocedure TBGRACanvas2D.clearRect(x, y, w, h: single);\nbegin\n  if (w=0) or (h=0) then exit;\n  ClearPoly(ApplyTransform([PointF(x,y),PointF(x+w,y),PointF(x+w,y+h),PointF(x,y+h)]));\nend;\n\nprocedure TBGRACanvas2D.addPath(APath: IBGRAPath);\nbegin\n  if (FPathPointCount <> 0) and not isEmptyPointF(FPathPoints[FPathPointCount-1]) then\n  begin\n    AddPoint(EmptyPointF);\n    FLastCoord := EmptyPointF;\n    FStartCoord := EmptyPointF;\n  end;\n  APath.copyTo(self);\nend;\n\nprocedure TBGRACanvas2D.addPath(ASvgPath: string);\nvar p: TBGRAPath;\nbegin\n  p := TBGRAPath.Create(ASvgPath);\n  addPath(p);\n  p.Free;\nend;\n\nprocedure TBGRACanvas2D.path(APath: IBGRAPath);\nbegin\n  beginPath;\n  addPath(APath);\nend;\n\nprocedure TBGRACanvas2D.path(ASvgPath: string);\nbegin\n  beginPath;\n  addPath(ASvgPath);\nend;\n\nprocedure TBGRACanvas2D.beginPath;\nbegin\n  FPathPointCount := 0;\n  FLastCoord := EmptyPointF;\n  FStartCoord := EmptyPointF;\n  FTextPaths := nil;\nend;\n\nprocedure TBGRACanvas2D.closePath;\nvar i: integer;\nbegin\n  if FPathPointCount > 0 then\n  begin\n    i := FPathPointCount-1;\n    while (i > 0) and not isEmptyPointF(FPathPoints[i-1]) do dec(i);\n    AddPoint(FPathPoints[i]);\n    FLastCoord := FStartCoord;\n  end;\nend;\n\nprocedure TBGRACanvas2D.toSpline(closed: boolean; style: TSplineStyle);\nvar i,j: integer;\n  pts, splinePts: array of TPointF;\n  nb: integer;\nbegin\n  if FPathPointCount > 0 then\n  begin\n    i := FPathPointCount-1;\n    while (i > 0) and not isEmptyPointF(FPathPoints[i-1]) do dec(i);\n    nb := FPathPointCount - i;\n    setlength(pts,nb);\n    for j := 0 to nb-1 do\n      pts[j] := FPathPoints[i+j];\n    if closed then\n      splinePts := BGRAPath.ComputeClosedSpline(pts,style)\n    else\n      splinePts := BGRAPath.ComputeOpenedSpline(pts,style);\n    dec(FPathPointCount,nb);\n    AddPoints(splinePts);\n  end;\nend;\n\nprocedure TBGRACanvas2D.moveTo(x, y: single);\nbegin\n  moveTo(PointF(x,y));\nend;\n\nprocedure TBGRACanvas2D.lineTo(x, y: single);\nbegin\n  lineTo(PointF(x,y));\nend;\n\nprocedure TBGRACanvas2D.moveTo(constref pt: TPointF);\nbegin\n  if (FPathPointCount <> 0) and not isEmptyPointF(FPathPoints[FPathPointCount-1]) then\n    AddPoint(EmptyPointF);\n  AddPoint(ApplyTransform(pt));\n  FStartCoord := pt;\n  FLastCoord := pt;\nend;\n\nprocedure TBGRACanvas2D.lineTo(constref pt: TPointF);\nbegin\n  AddPoint(ApplyTransform(pt));\n  FLastCoord := pt;\nend;\n\nprocedure TBGRACanvas2D.polylineTo(const pts: array of TPointF);\nbegin\n  if length(pts)> 0 then\n  begin\n    AddPoints(ApplyTransform(pts));\n    FLastCoord := pts[high(pts)];\n  end;\nend;\n\nprocedure TBGRACanvas2D.quadraticCurveTo(cpx, cpy, x, y: single);\nvar\n  curve : TQuadraticBezierCurve;\n  pts : array of TPointF;\nbegin\n  curve := BezierCurve(ApplyTransform(GetPenPos(cpx,cpy)),ApplyTransform(PointF(cpx,cpy)),ApplyTransform(PointF(x,y)));\n  pts := BGRAPath.ComputeBezierCurve(curve);\n  AddPoints(pts);\n  FLastCoord := PointF(x,y);\nend;\n\nprocedure TBGRACanvas2D.quadraticCurveTo(constref cp, pt: TPointF);\nbegin\n  quadraticCurveTo(cp.x,cp.y,pt.x,pt.y);\nend;\n\nprocedure TBGRACanvas2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y: single);\nvar\n  curve : TCubicBezierCurve;\n  pts : array of TPointF;\nbegin\n  curve := BezierCurve(ApplyTransform(GetPenPos(cp1x,cp1y)),ApplyTransform(PointF(cp1x,cp1y)),\n    ApplyTransform(PointF(cp2x,cp2y)),ApplyTransform(PointF(x,y)));\n  pts := BGRAPath.ComputeBezierCurve(curve);\n  AddPoints(pts);\n  FLastCoord := PointF(x,y);\nend;\n\nprocedure TBGRACanvas2D.bezierCurveTo(constref cp1, cp2, pt: TPointF);\nbegin\n  bezierCurveTo(cp1.x,cp1.y,cp2.x,cp2.y,pt.x,pt.y);\nend;\n\nprocedure TBGRACanvas2D.rect(x, y, w, h: single);\nbegin\n  MoveTo(x,y);\n  LineTo(x+w,y);\n  LineTo(x+w,y+h);\n  LineTo(x,y+h);\n  closePath;\nend;\n\nprocedure TBGRACanvas2D.roundRect(x, y, w, h, radius: single);\nbegin\n  if radius <= 0 then\n  begin\n    rect(x,y,w,h);\n    exit;\n  end;\n  if (w <= 0) or (h <= 0) then exit;\n  if radius*2 > w then radius := w/2;\n  if radius*2 > h then radius := h/2;\n  moveTo(x+radius,y);\n  arcTo(PointF(x+w,y),PointF(x+w,y+h), radius);\n  arcTo(PointF(x+w,y+h),PointF(x,y+h), radius);\n  arcTo(PointF(x,y+h),PointF(x,y), radius);\n  arcTo(PointF(x,y),PointF(x+w,y), radius);\n  closePath;\nend;\n\nprocedure TBGRACanvas2D.roundRect(x, y, w, h, rx, ry: single);\nbegin\n  if (w <= 0) or (h <= 0) then exit;\n  if rx < 0 then rx := 0;\n  if ry < 0 then ry := 0;\n  if (rx = 0) and (ry = 0) then\n  begin\n    rect(x,y,w,h);\n    exit;\n  end;\n  if rx*2 > w then rx := w/2;\n  if ry*2 > h then ry := h/2;\n  moveTo(x+rx,y);\n  lineTo(x+w-rx,y);\n  arcTo(rx,ry,0,false,false,x+w,y+ry);\n  lineTo(x+w,y+h-ry);\n  arcTo(rx,ry,0,false,false,x+w-rx,y+h);\n  lineTo(x+rx,y+h);\n  arcTo(rx,ry,0,false,false,x,y+h-ry);\n  lineTo(x,y+ry);\n  arcTo(rx,ry,0,false,false,x+rx,y);\n  closePath;\nend;\n\nprocedure TBGRACanvas2D.openedSpline(const pts: array of TPointF;\n  style: TSplineStyle);\nvar transf: array of TPointF;\nbegin\n  if length(pts)=0 then exit;\n  transf := ApplyTransform(pts);\n  transf := BGRAPath.ComputeOpenedSpline(transf,style);\n  AddPoints(transf);\n  FLastCoord := pts[high(pts)];\nend;\n\nprocedure TBGRACanvas2D.closedSpline(const pts: array of TPointF;\n  style: TSplineStyle);\nvar transf: array of TPointF;\nbegin\n  if length(pts)=0 then exit;\n  transf := ApplyTransform(pts);\n  transf := BGRAPath.ComputeClosedSpline(slice(transf, length(transf)-1),style);\n  AddPoints(transf);\n  FLastCoord := pts[high(pts)];\nend;\n\nprocedure TBGRACanvas2D.spline(const pts: array of TPointF; style: TSplineStyle);\nvar transf: array of TPointF;\nbegin\n  if length(pts)=0 then exit;\n  transf := ApplyTransform(pts);\n  if (pts[0] = pts[high(pts)]) and (length(pts) > 1) then\n    transf := BGRAPath.ComputeClosedSpline(slice(transf, length(transf)-1),style)\n  else\n    transf := BGRAPath.ComputeOpenedSpline(transf,style);\n  AddPoints(transf);\n  FLastCoord := pts[high(pts)];\nend;\n\nprocedure TBGRACanvas2D.splineTo(const pts: array of TPointF;\n  style: TSplineStyle);\nvar transf: array of TPointF;\n  i: Integer;\nbegin\n  if length(pts) = 0 then exit;\n  transf := ApplyTransform(pts);\n  if FPathPointCount <> 0 then\n  begin\n    setlength(transf,length(transf)+1);\n    for i := high(transf) downto 1 do\n      transf[i]:= transf[i-1];\n    transf[0] := ApplyTransform(GetPenPos(pts[0].x,pts[0].y));\n  end;\n  transf := BGRAPath.ComputeOpenedSpline(transf,style);\n  AddPoints(transf);\n  FLastCoord := pts[high(pts)];\nend;\n\nprocedure TBGRACanvas2D.arc(x, y, radius, startAngleRadCW, endAngleRadCW: single;\n  anticlockwise: boolean);\nvar pts: array of TPointF;\n  temp: single;\n  pt: TPointF;\n  rx,ry: single;\n  len1,len2: single;\n  unitAffine: TAffineMatrix;\n  v1orig,v2orig,v1ortho,v2ortho: TPointF;\n  startRadCCW,endRadCCW: single;\nbegin\n  v1orig := PointF(currentState.matrix[1,1],currentState.matrix[2,1]);\n  v2orig := PointF(currentState.matrix[1,2],currentState.matrix[2,2]);\n  len1 := VectLen(v1orig);\n  len2 := VectLen(v2orig);\n  rx := len1*radius;\n  ry := len2*radius;\n  if len1 <> 0 then v1ortho := v1orig * (1/len1) else v1ortho := v1orig;\n  if len2 <> 0 then v2ortho := v2orig * (1/len2) else v2ortho := v2orig;\n  pt := currentState.matrix* PointF(x,y);\n  unitAffine := AffineMatrix(v1ortho.x, v2ortho.x, pt.x,\n                             v1ortho.y, v2ortho.y, pt.y);\n  startRadCCW := -startAngleRadCW;\n  endRadCCW := -endAngleRadCW;\n  if not anticlockwise then\n  begin\n    temp := startRadCCW;\n    startRadCCW := endRadCCW;\n    endRadCCW:= temp;\n    pts := BGRAPath.ComputeArcRad(0,0,rx,ry,startRadCCW,endRadCCW);\n    pts := ApplyTransform(pts,unitAffine);\n    AddPointsRev(pts);\n  end else\n  begin\n    pts := BGRAPath.ComputeArcRad(0,0,rx,ry,startRadCCW,endRadCCW);\n    pts := ApplyTransform(pts,unitAffine);\n    AddPoints(pts);\n  end;\n  FLastCoord := ArcEndPoint(ArcDef(x,y,radius,radius,0,startAngleRadCW,endAngleRadCW,anticlockwise));\nend;\n\nprocedure TBGRACanvas2D.arc(x, y, radius, startAngleRadCW, endAngleRadCW: single);\nbegin\n  arc(x,y,radius,startAngleRadCW,endAngleRadCW,false);\nend;\n\nprocedure TBGRACanvas2D.arc(cx, cy, rx, ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single;\n  anticlockwise: boolean);\nbegin\n  arc(ArcDef(cx,cy,rx,ry,xAngleRadCW,startAngleRadCW,endAngleRadCW,anticlockwise))\nend;\n\nprocedure TBGRACanvas2D.arc(cx, cy, rx, ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single);\nbegin\n  arc(ArcDef(cx,cy,rx,ry,xAngleRadCW,startAngleRadCW,endAngleRadCW,false))\nend;\n\nprocedure TBGRACanvas2D.arc(constref arcDef: TArcDef);\nvar previousMatrix: TAffineMatrix;\nbegin\n  if (arcDef.radius.x = 0) and (arcDef.radius.y = 0) then\n    lineTo(arcDef.center) else\n  begin\n    previousMatrix := currentState.matrix;\n    translate(arcDef.center.x,arcDef.center.y);\n    rotate(arcDef.xAngleRadCW);\n    scale(arcDef.radius.x,arcDef.radius.y);\n    arc(0,0,1,arcDef.startAngleRadCW,arcDef.endAngleRadCW,arcDef.anticlockwise);\n    currentState.matrix := previousMatrix;\n    FLastCoord := ArcEndPoint(arcDef);\n  end;\nend;\n\nprocedure TBGRACanvas2D.arcTo(x1, y1, x2, y2, radius: single);\nvar p0: TPointF;\nbegin\n  p0 := GetPenPos(x1,y1);\n  arc(Html5ArcTo(p0,PointF(x1,y1),PointF(x2,y2),radius));\nend;\n\nprocedure TBGRACanvas2D.arcTo(p1, p2: TPointF; radius: single);\nbegin\n  arcTo(p1.x,p1.y,p2.x,p2.y,radius);\nend;\n\nprocedure TBGRACanvas2D.arcTo(rx, ry, xAngleRadCW: single; largeArc,\n  anticlockwise: boolean; x, y: single);\nbegin\n  arc(SvgArcTo(GetPenPos(x,y), rx,ry, xAngleRadCW, largeArc, anticlockwise, PointF(x,y)));\n  FLastCoord := PointF(x,y);\nend;\n\nprocedure TBGRACanvas2D.circle(x, y, r: single);\nbegin\n  arc(x,y,r,0,0);\nend;\n\nprocedure TBGRACanvas2D.ellipse(x, y, rx, ry: single);\nbegin\n  arc(x,y,rx,ry,0,0,0);\nend;\n\nprocedure TBGRACanvas2D.text(AText: string; x, y: single);\nvar renderer : TBGRACustomFontRenderer;\n  previousMatrix: TAffineMatrix;\n  fva: TFontVerticalAnchor;\nbegin\n  renderer := fontRenderer;\n  if renderer = nil then exit;\n  if renderer.FontEmHeight <= 0 then exit;\n\n  case currentState.textBaseline of\n    'bottom': fva := fvaBottom;\n    'middle': fva := fvaCenter;\n    'alphabetic': fva := fvaBaseline;\n    else {'top','hanging'}\n      fva := fvaTop;\n  end;\n\n  if renderer.HandlesTextPath then\n  begin\n    previousMatrix := currentState.matrix;\n    translate(x,y);\n    scale(currentState.fontEmHeight/renderer.FontEmHeight);\n    if fva <> fvaTop then\n    with renderer.GetFontPixelMetric do\n    case fva of\n      fvaBottom: translate(0,-Lineheight);\n      fvaCenter: translate(0,-Lineheight/2);\n      fvaBaseline: translate(0,-baseline);\n    end;\n    if direction=fbmAuto then\n      renderer.CopyTextPathTo(self, 0,0, AText, textAlignLCL)\n    else\n      renderer.CopyTextPathTo(self, 0,0, AText, textAlignLCL, direction=fbmRightToLeft);\n    currentState.matrix := previousMatrix;\n  end else\n  begin\n    setlength(FTextPaths, length(FTextPaths)+1);\n    FTextPaths[high(FTextPaths)].Text := AText;\n    FTextPaths[high(FTextPaths)].FontName := fontName;\n    FTextPaths[high(FTextPaths)].FontMatrix := currentState.matrix*AffineMatrixTranslation(x,y)*AffineMatrixScale(fontEmHeight,fontEmHeight);\n    FTextPaths[high(FTextPaths)].FontStyle := fontStyle;\n    FTextPaths[high(FTextPaths)].FontAlign := textAlignLCL;\n    FTextPaths[high(FTextPaths)].FontAnchor := fva;\n    FTextPaths[high(FTextPaths)].TextDirection := direction;\n  end;\n\n  FLastCoord := EmptyPointF;\n  FStartCoord := EmptyPointF;\nend;\n\nprocedure TBGRACanvas2D.fillText(AText: string; x, y: single);\nbegin\n  beginPath;\n  text(AText,x,y);\n  fill;\n  beginPath;\nend;\n\nprocedure TBGRACanvas2D.strokeText(AText: string; x, y: single);\nbegin\n  beginPath;\n  text(AText,x,y);\n  stroke;\n  beginPath;\nend;\n\nfunction TBGRACanvas2D.measureText(AText: string): TCanvas2dTextSize;\nvar renderer: TBGRACustomFontRenderer;\n  ratio: Single;\nbegin\n  renderer := fontRenderer;\n  if renderer <> nil then\n  begin\n    if renderer.FontEmHeight = 0 then\n    begin\n      result.width := 0;\n      result.height:= 0;\n    end else\n    with renderer.TextSize(AText) do\n    begin\n      ratio := currentState.fontEmHeight/renderer.FontEmHeight;\n      result.width := cx*ratio;\n      result.height:= cy*ratio;\n    end;\n  end\n  else\n  begin\n    result.width := 0;\n    result.height := 0;\n  end;\nend;\n\nprocedure TBGRACanvas2D.fill;\nbegin\n  if FPathPointCount > 0 then\n    FillPoly(slice(FPathPoints,FPathPointCount));\n  FillTexts(false);\nend;\n\nprocedure TBGRACanvas2D.stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer);\nbegin\n  stroke(ADrawProc, AffineMatrixIdentity, AData);\nend;\n\nprocedure TBGRACanvas2D.stroke(ADrawProc: TBGRAPathDrawProc;\n  const AMatrix: TAffineMatrix; AData: pointer);\nvar\n  startIndex: integer;\n\n  procedure CallStrokeProc(AEndIndex: integer);\n  var\n    j: Integer;\n    subPts: array of TPointF;\n    closed: boolean;\n  begin\n    closed := false;\n    while (AEndIndex>startIndex)\n      and (FPathPoints[AEndIndex-1]=FPathPoints[startIndex]) do\n    begin\n      dec(AEndIndex);\n      closed := true;\n    end;\n    if AEndIndex > startIndex then\n    begin\n      setlength(subPts, AEndIndex-startIndex);\n      if IsAffineMatrixIdentity(AMatrix) then\n      begin\n        for j := 0 to high(subPts) do\n          subPts[j] := FPathPoints[startIndex+j];\n      end else\n        for j := 0 to high(subPts) do\n          subPts[j] := AMatrix*FPathPoints[startIndex+j];\n      ADrawProc(subPts, closed, AData);\n    end;\n  end;\n\nvar i: integer;\nbegin\n  startIndex := 0;\n  for i := 0 to FPathPointCount-1 do\n    if isEmptyPointF(FPathPoints[i]) then\n    begin\n      CallStrokeProc(i);\n      startIndex := i+1;\n    end;\n  CallStrokeProc(FPathPointCount);\nend;\n\nprocedure TBGRACanvas2D.stroke;\nbegin\n  if FPathPointCount > 0 then\n    StrokePoly(slice(FPathPoints,FPathPointCount));\nend;\n\nprocedure TBGRACanvas2D.fill(AFillProc: TBGRAPathFillProc; AData: pointer);\nbegin\n  fill(AFillProc, AffineMatrixIdentity, AData);\nend;\n\nprocedure TBGRACanvas2D.fill(AFillProc: TBGRAPathFillProc;\n  const AMatrix: TAffineMatrix; AData: pointer);\nvar\n  startIndex: integer;\n\n  procedure CallFillProc(AEndIndex: integer);\n  var\n    j: Integer;\n    subPts: array of TPointF;\n  begin\n    if AEndIndex > startIndex then\n    begin\n      setlength(subPts, AEndIndex-startIndex);\n      if IsAffineMatrixIdentity(AMatrix) then\n      begin\n        for j := 0 to high(subPts) do\n          subPts[j] := FPathPoints[startIndex+j];\n      end else\n        for j := 0 to high(subPts) do\n          subPts[j] := AMatrix*FPathPoints[startIndex+j];\n\n      AFillProc(subPts, AData);\n    end;\n  end;\n\nvar i: integer;\nbegin\n  startIndex := 0;\n  for i := 0 to FPathPointCount-1 do\n    if isEmptyPointF(FPathPoints[i]) then\n    begin\n      CallFillProc(i);\n      startIndex := i+1;\n    end;\n  CallFillProc(FPathPointCount);\nend;\n\nprocedure TBGRACanvas2D.fillOverStroke;\nbegin\n  if FPathPointCount > 0 then\n    FillStrokePoly(slice(FPathPoints,FPathPointCount),true);\n  FillTexts(false);\nend;\n\nprocedure TBGRACanvas2D.strokeOverFill;\nbegin\n  FillTexts(false);\n  if FPathPointCount > 0 then\n    FillStrokePoly(slice(FPathPoints,FPathPointCount),false);\nend;\n\nprocedure TBGRACanvas2D.clearPath;\nbegin\n  if FPathPointCount > 0 then\n    ClearPoly(slice(FPathPoints,FPathPointCount));\n  FillTexts(true);\nend;\n\nprocedure TBGRACanvas2D.clip;\nvar\n  tempBmp: TGrayscaleMask;\nbegin\n  if FPathPointCount = 0 then\n  begin\n    if currentState.clipMaskReadOnly <> nil then\n      currentState.clipMaskReadWrite.Fill(BGRABlack);\n    exit;\n  end;\n  if currentState.clipMaskReadOnly = nil then\n    currentState.SetClipMask(TGrayscaleMask.Create(width,height,BGRAWhite),True);\n  tempBmp := TGrayscaleMask.Create(width,height,BGRABlack);\n  if antialiasing then\n    tempBmp.FillPolyAntialias(slice(FPathPoints,FPathPointCount),BGRAWhite)\n  else\n    tempBmp.FillPoly(slice(FPathPoints,FPathPointCount),BGRAWhite);\n  currentState.clipMaskReadWrite.ApplyMask(tempBmp);\n  tempBmp.Free;\nend;\n\nprocedure TBGRACanvas2D.unclip;\nbegin\n  if FPathPointCount = 0 then exit;\n  if currentState.clipMaskReadOnly = nil then exit;\n  if antialiasing then\n    currentState.clipMaskReadWrite.FillPolyAntialias(slice(FPathPoints,FPathPointCount),BGRAWhite)\n  else\n    currentState.clipMaskReadWrite.FillPoly(slice(FPathPoints,FPathPointCount),BGRAWhite,dmSet);\n  if currentState.clipMaskReadOnly.Equals(BGRAWhite) then\n    currentState.SetClipMask(nil,true);\nend;\n\nfunction TBGRACanvas2D.isPointInPath(x, y: single): boolean;\nbegin\n  result := isPointInPath(PointF(x,y));\nend;\n\nfunction TBGRACanvas2D.isPointInPath(pt: TPointF): boolean;\nbegin\n  if FPathPointCount <= 2 then\n    result := false\n  else\n  begin\n    setlength(FPathPoints,FPathPointCount);\n    result := IsPointInPolygon(FPathPoints,pt+FCanvasOffset, fillMode = fmWinding);\n  end;\nend;\n\nprocedure TBGRACanvas2D.drawImage(image: TBGRACustomBitmap; dx, dy: single; AFilter: TResampleFilter);\nbegin\n  if not Assigned(image) or (image.Width = 0) or (image.Height = 0) then exit;\n  drawImage(image, dx, dy, image.Width, image.Height, AFilter);\nend;\n\nprocedure TBGRACanvas2D.drawImage(image: TBGRACustomBitmap; dx, dy, dw, dh: single; AFilter: TResampleFilter);\nvar\n  m: TAffineMatrix;\nbegin\n  if not Assigned(image) or (image.Width = 0) or (image.Height = 0) then exit;\n  m := matrix*AffineMatrixTranslation(dx, dy)*AffineMatrixScale(dw/image.Width,dh/image.Height);\n  if pixelCenteredCoordinates then\n    m := AffineMatrixTranslation(0.5, 0.5)*m;\n  Surface.PutImageAffine(m, image, AFilter, GetDrawMode, currentState.globalAlpha, false);\nend;\n\nprocedure TBGRACanvas2D.mask(image: TBGRACustomBitmap; dx, dy: single;\n  AFilter: TResampleFilter);\nbegin\n  if not Assigned(image) or (image.Width = 0) or (image.Height = 0) then exit;\n  mask(image, dx, dy, image.Width, image.Height, AFilter);\nend;\n\nprocedure TBGRACanvas2D.mask(image: TBGRACustomBitmap; dx, dy, dw,\n  dh: single; AFilter: TResampleFilter);\nvar\n  m: TAffineMatrix;\n  tempColored: TBGRACustomBitmap;\n  grayMask: TGrayscaleMask;\nbegin\n  if not Assigned(image) or (image.Width = 0) or (image.Height = 0) then exit;\n  m := matrix*AffineMatrixTranslation(dx, dy)*AffineMatrixScale(dw/image.Width,dh/image.Height);\n  if pixelCenteredCoordinates then\n    m := AffineMatrixTranslation(0.5, 0.5)*m;\n  tempColored := BGRABitmapFactory.Create(Width, Height, BGRABlack);\n  tempColored.PutImageAffine(m, image, AFilter, GetDrawMode, currentState.globalAlpha, false);\n  tempColored.InplaceGrayscale(False);\n  grayMask := TGrayscaleMask.Create(tempColored, cGreen);\n  tempColored.Free;\n  if currentState.clipMaskReadOnly = nil then\n    currentState.SetClipMask(grayMask, true)\n  else\n  begin\n    currentState.clipMaskReadWrite.ApplyMask(grayMask);\n    grayMask.Free;\n  end;\nend;\n\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracanvasgl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Canvas that can be used with OpenGL (2D, 3D and lighting shader) }\nunit BGRACanvasGL;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes,\n  BGRAOpenGLType, BGRATransform, BGRAPath,\n  BGRASSE, BGRAMatrix3D;\n\ntype\n  TBGLPath = class;\n  TBGLCustomCanvas = class;\n\n  { Abstract shader for OpenGL }\n  TBGLCustomShader = class\n  protected\n    procedure StartUse; virtual; abstract;\n    procedure EndUse; virtual; abstract;\n  end;\n\n  { Abstract array for OpenGL }\n  TBGLCustomArray = class\n  protected\n    FBuffer: LongWord;\n    function GetCount: integer; virtual; abstract;\n    function GetRecordSize: integer; virtual; abstract;\n  public\n    constructor Create(ABufferAddress: pointer; ACount: integer; ARecordSize: integer); virtual; abstract;\n    property Count: integer read GetCount;\n    property RecordSize: integer read GetRecordSize;\n    property Handle: LongWord read FBuffer;\n  end;\n\n  { Attribute variable in shader (value defined per vertex) }\n  TAttributeVariable = object\n  protected\n    FOwner: TObject;\n    FAttribute: LongWord;\n    FVectorSize: integer;\n    FArray: TBGLCustomArray;\n    FRecordOffset: integer;\n    FFloat: boolean;\n    procedure Init(AOwner: TObject; AAttribute: LongWord; AVectorSize: integer;\n              AFloat: boolean);\n  public\n    property Source: TBGLCustomArray read FArray write FArray;\n    property RecordOffset: integer read FRecordOffset write FRecordOffset;\n    property Handle: LongWord read FAttribute;\n    property VectorSize: integer read FVectorSize;\n    property IsFloat: boolean read FFloat;\n    property Owner: TObject read FOwner;\n  end;\n\n  { Abstract array of elements specifed by index for OpenGL }\n  TBGLCustomElementArray = class\n  protected\n    function GetCount: integer; virtual; abstract;\n  public\n    constructor Create(const AElements: array of integer); virtual; abstract;\n    procedure Draw(ACanvas: TBGLCustomCanvas; APrimitive: TOpenGLPrimitive; AAttributes: array of TAttributeVariable); virtual; abstract;\n    property Count: integer read GetCount;\n  end;\n\n  { Abstract class for lighting with OpenGL }\n  TBGLCustomLighting = class\n  private\n    FCurrentShader: TBGLCustomShader;\n    function GetActiveShader: TBGLCustomShader;\n    procedure SetActiveShader(AValue: TBGLCustomShader);\n  protected\n    function GetSupportShaders: boolean; virtual;\n    function GetShader(AName: string): TBGLCustomShader;\n    procedure SetShader(AName: string; AValue: TBGLCustomShader);\n    procedure SetAmbiantLightF(AAmbiantLight: TColorF); virtual; abstract;\n    function GetAmbiantLightF: TColorF; virtual; abstract;\n    function GetBuiltInLightingEnabled: boolean; virtual; abstract;\n    procedure SetBuiltInLightingEnabled(AValue: boolean); virtual; abstract;\n  public\n    ShaderList: TStringList;\n    destructor Destroy; override;\n    function AddDirectionalLight(AColor: TColorF; ADirection: TPoint3D): integer; virtual; abstract;\n    function AddPointLight(AColor: TColorF; APosition: TPoint3D; ALinearAttenuation, AQuadraticAttenuation: single): integer; virtual; abstract;\n    procedure ClearLights; virtual; abstract;\n    function RemoveLight(AIndex: integer): boolean; virtual; abstract;\n    procedure SetSpecularIndex(AIndex: integer); virtual; abstract;\n\n    function MakeVertexShader(ASource: string): LongWord; virtual; abstract;\n    function MakeFragmentShader(ASource: string): LongWord; virtual; abstract;\n    function MakeShaderProgram(AVertexShader, AFragmentShader: LongWord): LongWord; virtual; abstract;\n    procedure DeleteShaderObject(AShader: LongWord); virtual; abstract;\n    procedure DeleteShaderProgram(AProgram: LongWord); virtual; abstract;\n    procedure UseProgram(AProgram: LongWord); virtual; abstract;\n    function GetUniformVariable(AProgram: LongWord; AName: string): LongWord; virtual; abstract;\n    function GetAttribVariable(AProgram: LongWord; AName: string): LongWord; virtual; abstract;\n    procedure SetUniformSingle(AVariable: LongWord; const AValue; AElementCount, AComponentCount: integer); virtual; abstract;\n    procedure SetUniformInteger(AVariable: LongWord; const AValue; AElementCount, AComponentCount: integer); virtual; abstract;\n    procedure BindAttribute(AAttribute: TAttributeVariable); virtual; abstract;\n    procedure UnbindAttribute(AAttribute: TAttributeVariable); virtual; abstract;\n    procedure FreeShaders;\n    property ActiveShader: TBGLCustomShader read GetActiveShader write SetActiveShader;\n    property Shader[AName: string]: TBGLCustomShader read GetShader write SetShader;\n    property SupportShaders: boolean read GetSupportShaders;\n    property AmbiantLightF: TColorF read GetAmbiantLightF write SetAmbiantLightF;\n    property BuiltInLightingEnabled: boolean read GetBuiltInLightingEnabled write SetBuiltInLightingEnabled;\n  end;\n\n  { Abstract canvas for OpenGL }\n  TBGLCustomCanvas = class\n  private\n    FActiveFrameBuffer: TBGLCustomFrameBuffer;\n    FHeight: integer;\n    FWidth: integer;\n    FNoClip: boolean;\n    FClipRect: TRect;\n  protected\n    procedure SwapRect(var r: TRect); overload;\n    procedure SwapRect(var x1,y1,x2,y2: single); overload;\n    procedure InternalArc(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; ABorderColor,AOuterFillColor,ACenterFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false); overload;\n    procedure InternalArc(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; ABorderColor,AOuterFillColor,ACenterFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false); overload;\n    procedure InternalArcInRect(r: TRect; StartAngleRad,EndAngleRad: Single; ABorderColor,AOuterFillColor,ACenterFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false); overload;\n    function ComputeEllipseC(r: TRect; AHasBorder: boolean; out cx,cy,rx,ry: single): boolean;\n    function GetHeight: integer; virtual;\n    function GetWidth: integer; virtual;\n    procedure SetWidth(AValue: integer); virtual;\n    procedure SetHeight(AValue: integer); virtual;\n    function GetClipRect: TRect;\n    procedure SetClipRect(AValue: TRect);\n    procedure EnableScissor(AValue: TRect); virtual; abstract;\n    procedure DisableScissor; virtual; abstract;\n    function GetMatrix: TAffineMatrix; virtual; abstract;\n    procedure SetMatrix(const AValue: TAffineMatrix); virtual; abstract;\n    function GetProjectionMatrix: TMatrix4D; virtual;\n    procedure SetProjectionMatrix(const {%H-}AValue: TMatrix4D); virtual;\n    procedure SetBlendMode(AValue: TOpenGLBlendMode); virtual; abstract;\n    function GetBlendMode: TOpenGLBlendMode; virtual; abstract;\n    function GetFaceCulling: TFaceCulling; virtual; abstract;\n    procedure SetFaceCulling(AValue: TFaceCulling); virtual; abstract;\n    procedure SetActiveFrameBuffer(AValue: TBGLCustomFrameBuffer); virtual;\n\n    function GetLighting: TBGLCustomLighting; virtual;\n\n    procedure InternalStartPutPixel(const pt: TPointF); virtual; abstract;\n    procedure InternalStartPolyline(const pt: TPointF); virtual; abstract;\n    procedure InternalStartPolygon(const pt: TPointF); virtual; abstract;\n    procedure InternalStartTriangleFan(const pt: TPointF); virtual; abstract;\n    procedure InternalContinueShape(const pt: TPointF); overload; virtual; abstract;\n\n    procedure InternalContinueShape(const {%H-}pt: TPoint3D); overload; virtual;\n    procedure InternalContinueShape(const {%H-}pt: TPoint3D_128); overload; virtual;\n    procedure InternalContinueShape(const {%H-}pt, {%H-}normal: TPoint3D_128); overload; virtual;\n\n    procedure InternalEndShape; virtual; abstract;\n    procedure InternalSetColor(const AColor: TBGRAPixel); virtual; abstract;\n    procedure InternalSetColorF(const AColor: TColorF); virtual; abstract;\n\n    procedure InternalStartBlend; virtual; abstract;\n    procedure InternalEndBlend; virtual; abstract;\n\n    procedure InternalStartBlendTriangles; virtual; abstract;\n    procedure InternalStartBlendQuads; virtual; abstract;\n    procedure InternalEndBlendTriangles; virtual; abstract;\n    procedure InternalEndBlendQuads; virtual; abstract;\n  public\n    constructor Create;\n    procedure Fill(AColor: TBGRAPixel); virtual; abstract;\n\n    procedure PutPixels(const APoints: array of TPointF; AColor: TBGRAPixel); overload; virtual;\n    procedure PutPixels(const APoints: array of TPointF; const AColors: array of TBGRAPixel); overload; virtual;\n\n    procedure Line(x1,y1,x2,y2: single; AColor: TBGRAPixel; ADrawLastPoint: boolean = true); overload;\n    procedure Line(p1,p2: TPointF; AColor: TBGRAPixel; ADrawLastPoint: boolean = true); overload;\n    procedure Polylines(const APoints: array of TPointF; AColor: TBGRAPixel; ADrawLastPoints: boolean = true); virtual;\n\n    procedure Polygons(const APoints: array of TPointF; AColor: TBGRAPixel); virtual;\n    procedure FillPolyConvex(const APoints: array of TPointF; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true);\n\n    procedure FillTriangleLinearColor(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n    procedure FillTriangles(const APoints: array of TPointF; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPointF; const AColors: array of TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPoint3D; const AColors: array of TBGRAPixel); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPoint3D_128; const AColors: array of TBGRAPixel); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints, ANormals: array of TPoint3D_128; const AColors: array of TBGRAPixel); overload; virtual;\n    procedure FillTrianglesFan(const APoints: array of TPointF; ACenterColor, ABorderColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    procedure FillTriangleLinearColor(pt1,pt2,pt3: TPointF; c1,c2,c3: TColorF; APixelCenteredCoordinates: boolean = true); overload;\n    procedure FillTriangles(const APoints: array of TPointF; AColor: TColorF; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPointF; const AColors: array of TColorF; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPoint3D; const AColors: array of TColorF); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints: array of TPoint3D_128; const AColors: array of TColorF); overload; virtual;\n    procedure FillTrianglesLinearColor(const APoints, ANormals: array of TPoint3D_128; const AColors: array of TColorF); overload; virtual;\n    procedure FillTrianglesFan(const APoints: array of TPointF; ACenterColor, ABorderColor: TColorF; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    procedure FillQuadLinearColor(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n    procedure FillQuads(const APoints: array of TPointF; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPointF; const AColors: array of TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPoint3D; const AColors: array of TBGRAPixel); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPoint3D_128; const AColors: array of TBGRAPixel); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints, ANormals: array of TPoint3D_128; const AColors: array of TBGRAPixel); overload; virtual;\n\n    procedure FillQuadLinearColor(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TColorF; APixelCenteredCoordinates: boolean = true); overload;\n    procedure FillQuads(const APoints: array of TPointF; AColor: TColorF; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPointF; const AColors: array of TColorF; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPoint3D; const AColors: array of TColorF); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints: array of TPoint3D_128; const AColors: array of TColorF); overload; virtual;\n    procedure FillQuadsLinearColor(const APoints, ANormals: array of TPoint3D_128; const AColors: array of TColorF); overload; virtual;\n\n    procedure DrawPath(APath: TBGLPath; c: TBGRAPixel);\n    procedure FillPathConvex(APath: TBGLPath; c: TBGRAPixel; APixelCenteredCoordinates: boolean = true);\n\n    procedure FillRectLinearColor(r: TRect; ATopLeftColor, ATopRightColor, ABottomRightColor, ABottomLeftColor: TBGRAPixel); overload; virtual;\n    procedure FillRectLinearColor(x1,y1,x2,y2: single;\n         ATopLeftColor, ATopRightColor, ABottomRightColor, ABottomLeftColor: TBGRAPixel;\n         APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    procedure Ellipse(cx,cy,rx,ry: single; AColor: TBGRAPixel); overload;\n    procedure EllipseInRect(r: TRect; AColor: TBGRAPixel); overload;\n    procedure Ellipse(cx,cy,rx,ry: single; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure EllipseInRect(r: TRect; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure EllipseLinearColor(cx,cy,rx,ry: single; AColor: TBGRAPixel; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure EllipseLinearColorInRect(r: TRect; AColor: TBGRAPixel; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure FillEllipse(cx,cy,rx,ry: single; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true);\n    procedure FillEllipseInRect(r: TRect; AColor: TBGRAPixel);\n    procedure FillEllipseLinearColor(cx, cy, rx, ry: single; AOuterColor, AInnerColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true);\n    procedure FillEllipseLinearColorInRect(r: TRect; AOuterColor, AInnerColor: TBGRAPixel);\n\n    procedure Arc(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel); overload;\n    procedure Arc(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel); overload;\n    procedure ArcInRect(r: TRect; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel);\n    procedure ArcLinearColor(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure ArcLinearColor(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure ArcLinearColorInRect(r: TRect; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor, AInnerFillColor: TBGRAPixel);\n\n    procedure Pie(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure Pie(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure PieInRect(r: TRect; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; AFillColor: TBGRAPixel);\n    procedure PieLinearColor(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure PieLinearColor(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; AOuterFillColor, AInnerFillColor: TBGRAPixel); overload;\n    procedure PieLinearColorInRect(r: TRect; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; AOuterFillColor, AInnerFillColor: TBGRAPixel);\n\n    procedure Rectangle(r: TRect; AColor: TBGRAPixel); overload;\n    procedure Rectangle(r: TRect; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure Rectangle(x1,y1,x2,y2: single; AColor: TBGRAPixel); overload;\n    procedure Rectangle(x1,y1,x2,y2: single; AColor: TBGRAPixel; AFillColor: TBGRAPixel); overload;\n    procedure Rectangle(x1,y1,x2,y2: single; AColor: TBGRAPixel; w: single; APixelCenteredCoordinates: boolean = true); overload;\n    procedure Rectangle(x1,y1,x2,y2: single; AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n    procedure RectangleWithin(x1,y1,x2,y2: single; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n    procedure RectangleWithin(r: TRect; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel); overload;\n    procedure FillRect(x1,y1,x2,y2: single; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n    procedure FillRect(r: TRect; AColor: TBGRAPixel); overload;\n    procedure FillRect(r: TRectF; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean = false); overload;\n    procedure FillRect(r: TRect; AScanner: IBGRAScanner); overload; virtual;\n    procedure RoundRect(x1,y1,x2,y2,rx,ry: single; ABorderColor: TBGRAPixel; options: TRoundRectangleOptions = []); overload;\n    procedure RoundRect(x1,y1,x2,y2,rx,ry: single; ABorderColor,AFillColor: TBGRAPixel; options: TRoundRectangleOptions = []); overload;\n    procedure FillRoundRect(x,y,x2,y2,rx,ry: single; AFillColor: TBGRAPixel; options: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true);\n\n    procedure Frame3D(var bounds: TRect; width: integer; Style: TGraphicsBevelCut); overload;\n    procedure Frame3D(var bounds: TRect; width: integer;\n      Style: TGraphicsBevelCut; LightColor: TBGRAPixel; ShadowColor: TBGRAPixel); overload;\n\n    procedure PutImage(x,y: single; ATexture: IBGLTexture; AAlpha: byte = 255); overload;\n    procedure PutImage(x,y: single; ATexture: IBGLTexture; AColor: TBGRAPixel); overload;\n    procedure StretchPutImage(x,y,w,h: single; ATexture: IBGLTexture; AAlpha: byte = 255); overload;\n    procedure StretchPutImage(x,y,w,h: single; ATexture: IBGLTexture; AColor: TBGRAPixel); overload;\n    procedure StretchPutImage(r: TRect; ATexture: IBGLTexture; AAlpha: byte = 255); overload;\n    procedure StretchPutImage(r: TRect; ATexture: IBGLTexture; AColor: TBGRAPixel); overload;\n    procedure PutImageAngle(x,y: single; ATexture: IBGLTexture; angleDeg: single; AAlpha: byte = 255); overload;\n    procedure PutImageAngle(x,y: single; ATexture: IBGLTexture; angleDeg: single; AColor: TBGRAPixel); overload;\n    procedure PutImageAffine(const Origin, HAxis, VAxis: TPointF; ATexture: IBGLTexture; AAlpha: byte = 255); overload;\n    procedure PutImageAffine(const Origin, HAxis, VAxis: TPointF; ATexture: IBGLTexture; AColor: TBGRAPixel); overload;\n    procedure PutImageAffine(x,y: single; ATexture: IBGLTexture; const AMatrix: TAffineMatrix; AAlpha: byte = 255); overload;\n    procedure PutImageAffine(x,y: single; ATexture: IBGLTexture; const AMatrix: TAffineMatrix; AColor: TBGRAPixel); overload;\n\n    procedure Translate(x,y: single); virtual;\n    procedure Scale(sx,sy: single); virtual;\n    procedure RotateDeg(angleCW: single); virtual;\n    procedure RotateRad(angleCCW: single); virtual;\n    procedure ResetTransform; virtual;\n\n    procedure UseOrthoProjection; overload; virtual;\n    procedure UseOrthoProjection(AMinX,AMinY,AMaxX,AMaxY: single); overload; virtual;\n    procedure StartZBuffer; virtual;\n    procedure EndZBuffer; virtual;\n    procedure WaitForGPU({%H-}AOption: TWaitForGPUOption); virtual;\n\n    function GetImage({%H-}x,{%H-}y,{%H-}w,{%H-}h: integer): TBGRACustomBitmap; virtual;\n    function CreateFrameBuffer({%H-}AWidth,{%H-}AHeight: integer): TBGLCustomFrameBuffer; virtual;\n\n    procedure NoClip;\n    property ActiveFrameBuffer: TBGLCustomFrameBuffer read FActiveFrameBuffer write SetActiveFrameBuffer;\n    property Width: integer read GetWidth write SetWidth;\n    property Height: integer read GetHeight write SetHeight;\n    property ClipRect: TRect read GetClipRect write SetClipRect;\n    property Matrix: TAffineMatrix read GetMatrix write SetMatrix;\n    property ProjectionMatrix: TMatrix4D read GetProjectionMatrix write SetProjectionMatrix;\n    property BlendMode: TOpenGLBlendMode read GetBlendMode write SetBlendMode;\n    property FaceCulling: TFaceCulling read GetFaceCulling write SetFaceCulling;\n    property Lighting: TBGLCustomLighting read GetLighting;\n  end;\n\n  { Path with OpenGL rendering }\n  TBGLPath = class(TBGRAPath)\n  private\n    procedure GLDrawProc(const APoints: array of TPointF; AClosed: boolean; AData: pointer);\n    procedure GLFillProc(const APoints: array of TPointF; AData: pointer);\n  public\n    procedure stroke(ACanvas: TBGLCustomCanvas; AColor: TBGRAPixel; AAcceptedDeviation: single = 0.1); overload;\n    procedure fillConvex(ACanvas: TBGLCustomCanvas; AColor: TBGRAPixel; AAcceptedDeviation: single = 0.1; APixelCenteredCoordinates: boolean = true);\n  end;\n\nimplementation\n\nuses Math, BGRAGradientScanner;\n\ntype\n  TGLStrokeData = record\n    Color: TBGRAPixel;\n    Canvas: TBGLCustomCanvas;\n  end;\n  TGLFillData = record\n    Color: TBGRAPixel;\n    Canvas: TBGLCustomCanvas;\n    PixelCenteredCoordinates: boolean;\n  end;\n\n{ TAttributeVariable }\n\nprocedure TAttributeVariable.Init(AOwner: TObject; AAttribute: LongWord;\n  AVectorSize: integer; AFloat: boolean);\nbegin\n  FOwner := AOwner;\n  FAttribute:= AAttribute;\n  FVectorSize:= AVectorSize;\n  FFloat := AFloat;\n  FArray := nil;\n  FRecordOffset := 0;\nend;\n\n{ TBGLCustomLighting }\n\nfunction TBGLCustomLighting.GetActiveShader: TBGLCustomShader;\nbegin\n  result := FCurrentShader;\nend;\n\nfunction TBGLCustomLighting.GetSupportShaders: boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGLCustomLighting.GetShader(AName: string): TBGLCustomShader;\nvar index: integer;\nbegin\n  if ShaderList = nil then ShaderList := TStringList.Create;\n  index := ShaderList.IndexOf(AName);\n  if index = -1 then\n    result := nil\n  else\n    result := TBGLCustomShader(ShaderList.Objects[index]);\nend;\n\nprocedure TBGLCustomLighting.SetShader(AName: string; AValue: TBGLCustomShader);\nvar index: integer;\nbegin\n  if ShaderList = nil then ShaderList := TStringList.Create;\n  index := ShaderList.IndexOf(AName);\n  if AValue = nil then\n  begin\n    if index <> -1 then\n      ShaderList.Delete(index);\n  end else\n  begin\n    if index = -1 then\n      ShaderList.AddObject(AName,AValue)\n    else\n      ShaderList.Objects[index] := AValue;\n  end;\nend;\n\ndestructor TBGLCustomLighting.Destroy;\nbegin\n  FreeShaders;\n  FreeAndNil(ShaderList);\n  inherited Destroy;\nend;\n\nprocedure TBGLCustomLighting.FreeShaders;\nvar i: integer;\nbegin\n  if Assigned(ShaderList) then\n  begin\n    for i := 0 to ShaderList.Count-1 do\n      ShaderList.Objects[i].Free;\n    ShaderList.Clear;\n  end;\nend;\n\nprocedure TBGLCustomLighting.SetActiveShader(AValue: TBGLCustomShader);\nbegin\n  if AValue <> FCurrentShader then\n  begin\n    if Assigned(FCurrentShader) then FCurrentShader.EndUse;\n    FCurrentShader := AValue;\n    if Assigned(FCurrentShader) then FCurrentShader.StartUse;\n  end;\nend;\n\n{ TBGLPath }\n\nprocedure TBGLPath.GLDrawProc(const APoints: array of TPointF;\n  AClosed: boolean; AData: pointer);\nbegin\n  with TGLStrokeData(AData^) do\n  if AClosed then\n    Canvas.Polygons(APoints, Color)\n  else\n    Canvas.Polylines(APoints, Color);\nend;\n\nprocedure TBGLPath.GLFillProc(const APoints: array of TPointF; AData: pointer);\nbegin\n  with TGLFillData(AData^) do\n    Canvas.FillPolyConvex(APoints,Color,PixelCenteredCoordinates);\nend;\n\nprocedure TBGLPath.stroke(ACanvas: TBGLCustomCanvas; AColor: TBGRAPixel; AAcceptedDeviation: single);\nvar data: TGLStrokeData;\nbegin\n  data.Color := AColor;\n  data.Canvas := ACanvas;\n  stroke(@GLDrawProc, AffineMatrixIdentity, AAcceptedDeviation, @data);\nend;\n\nprocedure TBGLPath.fillConvex(ACanvas: TBGLCustomCanvas; AColor: TBGRAPixel; AAcceptedDeviation: single; APixelCenteredCoordinates: boolean);\nvar data: TGLFillData;\nbegin\n  data.Color := AColor;\n  data.Canvas := ACanvas;\n  data.PixelCenteredCoordinates := APixelCenteredCoordinates;\n  fill(@GLFillProc, AffineMatrixIdentity, AAcceptedDeviation, @data);\nend;\n\n{ TBGLCustomCanvas }\n\nfunction TBGLCustomCanvas.ComputeEllipseC(r: TRect; AHasBorder: boolean; out\n  cx, cy, rx, ry: single): boolean;\nbegin\n  if (r.right = r.left) or (r.bottom = r.top) then\n  begin\n    cx := r.left;\n    cy := r.top;\n    rx := 0;\n    ry := 0;\n    exit(false);\n  end;\n  SwapRect(r);\n  cx := (r.left+r.right-1)*0.5;\n  cy := (r.top+r.bottom-1)*0.5;\n  rx := (r.right-r.left)*0.5;\n  ry := (r.bottom-r.top)*0.5;\n  if AHasBorder then\n  begin\n    DecF(rx, 0.5);\n    if rx < 0 then rx := 0;\n    DecF(ry, 0.5);\n    if ry < 0 then ry := 0;\n  end;\n  result := true;\nend;\n\nfunction TBGLCustomCanvas.GetHeight: integer;\nbegin\n  if FActiveFrameBuffer = nil then\n    result := FHeight\n  else\n    result := FActiveFrameBuffer.Height;\nend;\n\nfunction TBGLCustomCanvas.GetWidth: integer;\nbegin\n  if FActiveFrameBuffer = nil then\n    result := FWidth\n  else\n    result := FActiveFrameBuffer.Width;\nend;\n\nprocedure TBGLCustomCanvas.SetWidth(AValue: integer);\nbegin\n  if FWidth=AValue then Exit;\n  FWidth:=AValue;\nend;\n\nprocedure TBGLCustomCanvas.SetHeight(AValue: integer);\nbegin\n  if FHeight=AValue then Exit;\n  FHeight:=AValue;\nend;\n\nfunction TBGLCustomCanvas.GetClipRect: TRect;\nbegin\n  if FNoClip then\n    result := rect(0,0,Width,Height)\n  else\n    result := FClipRect;\nend;\n\nprocedure TBGLCustomCanvas.SetClipRect(AValue: TRect);\nbegin\n  SwapRect(AValue);\n  with ClipRect do\n    if (AValue.left = left) and (AValue.top = top) and (AValue.bottom = bottom)\n     and (AValue.right = right) then exit;\n\n  if (AValue.Left = 0) and (AValue.Top = 0) and\n    (AValue.Right = Width) and (AValue.Bottom = Height) then\n    NoClip\n    else\n  begin\n    FClipRect := AValue;\n    EnableScissor(FClipRect);\n  end;\nend;\n\nfunction TBGLCustomCanvas.GetProjectionMatrix: TMatrix4D;\nbegin\n  result := MatrixIdentity4D;\nend;\n\nprocedure TBGLCustomCanvas.SetProjectionMatrix(const AValue: TMatrix4D);\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nfunction TBGLCustomCanvas.GetLighting: TBGLCustomLighting;\nbegin\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomCanvas.InternalContinueShape(const pt: TPoint3D);\nbegin\n  raise exception.Create('Not available');\nend;\n\nprocedure TBGLCustomCanvas.InternalContinueShape(const pt: TPoint3D_128);\nbegin\n  raise exception.Create('Not available');\nend;\n\nprocedure TBGLCustomCanvas.InternalContinueShape(const pt, normal: TPoint3D_128);\nbegin\n  raise exception.Create('Not available');\nend;\n\nprocedure TBGLCustomCanvas.NoClip;\nbegin\n  FClipRect := rect(0,0,Width,Height);\n  FNoClip := true;\n  DisableScissor;\nend;\n\nconstructor TBGLCustomCanvas.Create;\nbegin\n  FNoClip:= true;\nend;\n\nprocedure TBGLCustomCanvas.FillTriangles(const APoints: array of TPointF;\n  AColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 3) or (AColor.alpha = 0) then exit;\n  InternalStartBlendTriangles;\n  InternalSetColor(AColor);\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n    InternalContinueShape(APoints[i]+ofs);\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(const APoints: array of TPointF;\n  const AColors: array of TBGRAPixel; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]+ofs);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(\n  const APoints: array of TPoint3D; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(\n  const APoints: array of TPoint3D_128; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(const APoints,\n  ANormals: array of TPoint3D_128; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then raise exception.Create('Length of APoints and AColors do not match');\n  if length(AColors)<>length(ANormals) then raise exception.Create('Length of APoints and ANormals do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i], ANormals[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillQuads(const APoints: array of TPointF;\n  AColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 4) or (AColor.alpha = 0) then exit;\n  InternalStartBlendQuads;\n  InternalSetColor(AColor);\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n    InternalContinueShape(APoints[i]+ofs);\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(const APoints: array of TPointF;\n  const AColors: array of TBGRAPixel; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]+ofs);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(\n  const APoints: array of TPoint3D; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(\n  const APoints: array of TPoint3D_128; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(const APoints,\n  ANormals: array of TPoint3D_128; const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then raise exception.Create('Length of APoints and AColors do not match');\n  if length(AColors)<>length(ANormals) then raise exception.Create('Length of APoints and ANormals do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i], ANormals[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadLinearColor(pt1, pt2, pt3, pt4: TPointF; c1,\n  c2, c3, c4: TColorF; APixelCenteredCoordinates: boolean);\nbegin\n  FillQuadsLinearColor([pt1,pt2,pt3,pt4],[c1,c2,c3,c4],APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillQuads(const APoints: array of TPointF;\n  AColor: TColorF; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 4) or (AColor[4] = 0) then exit;\n  InternalStartBlendQuads;\n  InternalSetColorF(AColor);\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n    InternalContinueShape(APoints[i]+ofs);\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(\n  const APoints: array of TPointF; const AColors: array of TColorF;\n  APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]+ofs);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(\n  const APoints: array of TPoint3D; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(\n  const APoints: array of TPoint3D_128; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.FillQuadsLinearColor(const APoints,\n  ANormals: array of TPoint3D_128; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 4 then exit;\n  if length(AColors)<>length(APoints) then raise exception.Create('Length of APoints and AColors do not match');\n  if length(AColors)<>length(ANormals) then raise exception.Create('Length of APoints and ANormals do not match');\n  InternalStartBlendQuads;\n  for i := 0 to length(APoints) - (length(APoints) and 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i], ANormals[i]);\n  end;\n  InternalEndBlendQuads;\nend;\n\nprocedure TBGLCustomCanvas.PutPixels(const APoints: array of TPointF;\n  AColor: TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) = 0 then exit;\n  InternalStartBlend;\n  InternalSetColor(AColor);\n  InternalStartPutPixel(APoints[0]);\n  for i := 1 to high(APoints) do\n    InternalContinueShape(APoints[i]);\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.PutPixels(const APoints: array of TPointF;\n  const AColors: array of TBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) = 0 then exit;\n  InternalStartBlend;\n  InternalSetColor(AColors[0]);\n  InternalStartPutPixel(APoints[0]);\n  for i := 1 to high(APoints) do\n  begin\n    InternalSetColor(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesFan(const APoints: array of TPointF;\n  ACenterColor, ABorderColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  firstPoint: boolean;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 3) or ((ACenterColor.alpha = 0) and (ABorderColor.alpha = 0)) then exit;\n  InternalStartBlend;\n  firstPoint := true;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to high(APoints) do\n  begin\n    if isEmptyPointF(APoints[i]) then\n    begin\n      if not firstPoint then\n      begin\n        InternalEndShape;\n        firstPoint := true;\n      end;\n    end else\n    begin\n      if firstPoint then\n      begin\n        InternalSetColor(ACenterColor);\n        InternalStartTriangleFan(APoints[i]+ofs);\n        InternalSetColor(ABorderColor);\n        firstPoint := false;\n      end else\n        InternalContinueShape(APoints[i]+ofs);\n    end;\n  end;\n  if not firstPoint then InternalEndShape;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.FillTriangleLinearColor(pt1, pt2, pt3: TPointF; c1,\n  c2, c3: TColorF; APixelCenteredCoordinates: boolean);\nbegin\n  FillTrianglesLinearColor([pt1,pt2,pt3],[c1,c2,c3],APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillTriangles(const APoints: array of TPointF;\n  AColor: TColorF; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 3) or (AColor[4] = 0) then exit;\n  InternalStartBlendTriangles;\n  InternalSetColorF(AColor);\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n    InternalContinueShape(APoints[i]+ofs);\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(\n  const APoints: array of TPointF; const AColors: array of TColorF;\n  APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]+ofs);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(\n  const APoints: array of TPoint3D; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(\n  const APoints: array of TPoint3D_128; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then\n    raise exception.Create('Length of APoints and AColors do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesLinearColor(const APoints,\n  ANormals: array of TPoint3D_128; const AColors: array of TColorF);\nvar\n  i: Int32or64;\nbegin\n  if length(APoints) < 3 then exit;\n  if length(AColors)<>length(APoints) then raise exception.Create('Length of APoints and AColors do not match');\n  if length(AColors)<>length(ANormals) then raise exception.Create('Length of APoints and ANormals do not match');\n  InternalStartBlendTriangles;\n  for i := 0 to length(APoints) - (length(APoints) mod 3) - 1 do\n  begin\n    InternalSetColorF(AColors[i]);\n    InternalContinueShape(APoints[i], ANormals[i]);\n  end;\n  InternalEndBlendTriangles;\nend;\n\nprocedure TBGLCustomCanvas.FillTrianglesFan(const APoints: array of TPointF;\n  ACenterColor, ABorderColor: TColorF; APixelCenteredCoordinates: boolean);\nvar\n  i: Int32or64;\n  firstPoint: boolean;\n  ofs: TPointF;\nbegin\n  if (length(APoints) < 3) or ((ACenterColor[4] = 0) and (ABorderColor[4] = 0)) then exit;\n  InternalStartBlend;\n  firstPoint := true;\n  if APixelCenteredCoordinates then ofs := PointF(0.5,0.5) else ofs := PointF(0,0);\n  for i := 0 to high(APoints) do\n  begin\n    if isEmptyPointF(APoints[i]) then\n    begin\n      if not firstPoint then\n      begin\n        InternalEndShape;\n        firstPoint := true;\n      end;\n    end else\n    begin\n      if firstPoint then\n      begin\n        InternalSetColorF(ACenterColor);\n        InternalStartTriangleFan(APoints[i]+ofs);\n        InternalSetColorF(ABorderColor);\n        firstPoint := false;\n      end else\n        InternalContinueShape(APoints[i]+ofs);\n    end;\n  end;\n  if not firstPoint then InternalEndShape;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.Polylines(const APoints: array of TPointF;\n  AColor: TBGRAPixel; ADrawLastPoints: boolean);\nconst\n  STATE_START = 0;  //nothing defined\n  STATE_SECOND = 1; //prevPoint defined and is the first point\n  STATE_AFTER = 2;  //newPoint defined and is the lastest point, prevPoint is the point before that\nvar\n  i: Int32or64;\n  state: Int32or64;\n  prevPoint,newPoint,v,ofs: TPointF;\n  len: single;\n\n  procedure Flush;\n  begin\n    case state of\n      STATE_SECOND: begin\n        InternalStartPutPixel(prevPoint);\n        InternalEndShape;\n      end;\n      STATE_AFTER:\n      begin\n        v := newPoint-prevPoint;\n        len := VectLen(v);\n        if len > 0 then\n        begin\n          v := v*(1/len);\n          if ADrawLastPoints then\n            InternalContinueShape(newPoint + v*0.5 + ofs)\n          else\n            InternalContinueShape(newPoint - v*0.5 + ofs);\n        end;\n        InternalEndShape;\n      end;\n    end;\n    state := STATE_START;\n  end;\n\nbegin\n  if (length(APoints) = 0) or (AColor.alpha = 0) then exit;\n  InternalStartBlend;\n  InternalSetColor(AColor);\n  prevPoint := PointF(0,0);\n  newPoint := PointF(0,0);\n  state := STATE_START;\n  ofs := PointF(0.5,0.5);\n  for i := 0 to high(APoints) do\n  begin\n    if isEmptyPointF(APoints[i]) then\n    begin\n      Flush;\n    end else\n    begin\n      if state = STATE_START then\n      begin\n        state := STATE_SECOND;\n        prevPoint := APoints[i];\n      end else\n      if APoints[i] <> prevPoint then\n      begin\n        if state = STATE_SECOND then\n        begin\n          newPoint := APoints[i];\n          v := newPoint-prevPoint;\n          len := VectLen(v);\n          if len > 0 then\n          begin\n            v := v*(1/len);\n            InternalStartPolyline(prevPoint - v*0.5 + ofs);\n            state := STATE_AFTER;\n          end;\n        end else\n        begin\n          InternalContinueShape(newPoint + ofs);\n          prevPoint := newPoint;\n          newPoint := APoints[i];\n        end;\n      end;\n    end;\n  end;\n  Flush;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.Polygons(const APoints: array of TPointF;\n  AColor: TBGRAPixel);\nconst\n  STATE_START = 0;  //nothing defined\n  STATE_SECOND = 1; //prevPoint defined and is the first point\n  STATE_AFTER = 2;  //newPoint defined and is the lastest point, prevPoint is the point before that\nvar\n  i: Int32or64;\n  state: Int32or64;\n  prevPoint,newPoint: TPointF;\n  ofs: TPointF;\n\n  procedure Flush;\n  begin\n    case state of\n      STATE_SECOND: begin\n        InternalStartPutPixel(prevPoint);\n        InternalEndShape;\n      end;\n      STATE_AFTER:\n      begin\n        InternalContinueShape(newPoint + ofs);\n        InternalEndShape;\n      end;\n    end;\n    state := STATE_START;\n  end;\n\nbegin\n  if (length(APoints) = 0) or (AColor.alpha = 0) then exit;\n  InternalStartBlend;\n  InternalSetColor(AColor);\n  prevPoint := PointF(0,0);\n  newPoint := PointF(0,0);\n  state := STATE_START;\n  ofs := PointF(0.5,0.5);\n  for i := 0 to high(APoints) do\n  begin\n    if isEmptyPointF(APoints[i]) then\n    begin\n      Flush;\n    end else\n    begin\n      if state = STATE_START then\n      begin\n        state := STATE_SECOND;\n        prevPoint := APoints[i];\n      end else\n      if APoints[i] <> prevPoint then\n      begin\n        if state = STATE_SECOND then\n        begin\n          InternalStartPolygon(prevPoint+ofs);\n          newPoint := APoints[i];\n          state := STATE_AFTER;\n        end else\n        begin\n          InternalContinueShape(newPoint+ofs);\n          prevPoint := newPoint;\n          newPoint := APoints[i];\n        end;\n      end;\n    end;\n  end;\n  Flush;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCustomCanvas.FillRect(r: TRect; AScanner: IBGRAScanner);\nvar\n  bmp: TBGLCustomBitmap;\n  yb,bandHeight,bandY: Int32or64;\n  tx: integer;\nbegin\n  SwapRect(r);\n  if (r.right = r.left) or (r.bottom = r.top) then exit;\n  tx := r.right-r.left;\n  bandHeight := 65536 div tx;\n  if bandHeight <= 2 then bandHeight := 2;\n  bandHeight := GetPowerOfTwo(bandHeight);\n  bmp := BGLBitmapFactory.Create(tx,bandHeight);\n  bmp.Texture.ResampleFilter := orfBox;\n  bandY := (r.Bottom-1-r.top) mod bandHeight;\n  for yb := r.bottom-1 downto r.top do\n  begin\n    AScanner.ScanMoveTo(r.left,yb);\n    AScanner.ScanPutPixels(bmp.ScanLine[bandY],tx,dmSet);\n    bmp.InvalidateBitmap;\n    if bandY = 0 then\n    begin\n      bmp.Texture.Draw(r.left,yb);\n      bandY := bandHeight-1;\n    end else\n      dec(bandY);\n  end;\n  bmp.Free;\nend;\n\nprocedure TBGLCustomCanvas.DrawPath(APath: TBGLPath; c: TBGRAPixel);\nbegin\n  APath.stroke(self, c);\nend;\n\nprocedure TBGLCustomCanvas.FillPathConvex(APath: TBGLPath; c: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  APath.fillConvex(self, c, 0.1, APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.SetActiveFrameBuffer(AValue: TBGLCustomFrameBuffer);\nbegin\n  if FActiveFrameBuffer=AValue then Exit;\n  if FActiveFrameBuffer <> nil then\n    FActiveFrameBuffer.SetCanvas(nil);\n  FActiveFrameBuffer:=AValue;\n  if FActiveFrameBuffer <> nil then\n    FActiveFrameBuffer.SetCanvas(self);\nend;\n\nprocedure TBGLCustomCanvas.SwapRect(var r: TRect);\nvar\n  temp: LongInt;\nbegin\n  if (r.Right < r.left) then\n  begin\n    temp := r.Left;\n    r.left := r.right;\n    r.right := temp;\n  end;\n  if (r.bottom < r.top) then\n  begin\n    temp := r.top;\n    r.top:= r.bottom;\n    r.bottom:= temp;\n  end;\nend;\n\nprocedure TBGLCustomCanvas.SwapRect(var x1, y1, x2, y2: single);\nvar\n  temp: single;\nbegin\n  if (x2 < x1) then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if (y2 < y1) then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\nend;\n\nprocedure TBGLCustomCanvas.InternalArc(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; ABorderColor, AOuterFillColor,ACenterFillColor: TBGRAPixel;\n  AOptions: TArcOptions; ADrawChord: boolean = false);\nvar angle1,angle2: single;\nbegin\n  if (rx = 0) or (ry = 0) then exit;\n  angle1 := arctan2(-(StartPoint.y-cy)/ry,(StartPoint.x-cx)/rx);\n  angle2 := arctan2(-(EndPoint.y-cy)/ry,(EndPoint.x-cx)/rx);\n  if angle1 = angle2 then angle2 := angle1+2*Pi;\n  InternalArc(cx,cy,rx,ry, angle1,angle2,\n              ABorderColor,AOuterFillColor,ACenterFillColor, AOptions, ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.InternalArc(cx, cy, rx, ry: single;\n  StartAngleRad, EndAngleRad: Single; ABorderColor,\n  AOuterFillColor,ACenterFillColor: TBGRAPixel; AOptions: TArcOptions;\n  ADrawChord: boolean = false);\nvar\n  pts,ptsFill: array of TPointF;\n  temp: single;\nbegin\n  if (rx = 0) or (ry = 0) then exit;\n  if ADrawChord then AOptions := AOptions+[aoClosePath];\n  if not (aoFillPath in AOptions) then\n  begin\n    AOuterFillColor := BGRAPixelTransparent;\n    ACenterFillColor := BGRAPixelTransparent;\n  end;\n\n  if (ABorderColor.alpha = 0) and (AOuterFillColor.alpha = 0) and (ACenterFillColor.alpha = 0) then exit;\n\n  if abs(StartAngleRad-EndAngleRad) >= 2*PI - 1e-6 then\n  begin\n    Ellipse(cx,cy,rx,ry,ABorderColor);\n    FillEllipseLinearColor(cx,cy,rx,ry,AOuterFillColor,ACenterFillColor);\n    if aoPie in AOptions then\n      Line(cx,cy,cx+cos(StartAngleRad)*rx,cy-sin(StartAngleRad)*ry,ABorderColor,False);\n    exit;\n  end;\n\n  if EndAngleRad < StartAngleRad then\n  begin\n    temp := StartAngleRad;\n    StartAngleRad:= EndAngleRad;\n    EndAngleRad:= temp;\n  end;\n\n  pts := ComputeArcRad(cx,cy,rx,ry,StartAngleRad,EndAngleRad);\n  if aoPie in AOptions then\n    pts := ConcatPointsF([PointsF([PointF(cx,cy)]),pts]);\n  if (ACenterFillColor.alpha <> 0) or (AOuterFillColor.alpha <> 0) then\n  begin\n    if not (aoPie in AOptions) and (length(pts)>=2) then ptsFill := ConcatPointsF([PointsF([(pts[0]+pts[high(pts)])*0.5]),pts])\n      else ptsFill := pts;\n    FillTrianglesFan(ptsFill, ACenterFillColor,AOuterFillColor);\n  end;\n  if ABorderColor.alpha <> 0 then\n  begin\n    if [aoPie,aoClosePath]*AOptions <> [] then\n      Polygons(pts, ABorderColor)\n    else\n      Polylines(pts, ABorderColor, true);\n  end;\nend;\n\nprocedure TBGLCustomCanvas.InternalArcInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; ABorderColor, AOuterFillColor,ACenterFillColor: TBGRAPixel;\n  AOptions: TArcOptions; ADrawChord: boolean = false);\nbegin\n  if r.right = r.left then exit;\n  if r.bottom = r.top then exit;\n  SwapRect(r);\n  InternalArc((r.left+r.right-1)/2,(r.top+r.bottom-1)/2,\n             (r.right-r.left-1)/2,(r.bottom-r.top-1)/2,\n             StartAngleRad,EndAngleRad,\n             ABorderColor,AOuterFillColor,ACenterFillColor,\n             AOptions, ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.FillTriangleLinearColor(pt1, pt2, pt3: TPointF; c1,\n  c2, c3: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  FillTrianglesLinearColor([pt1,pt2,pt3],[c1,c2,c3],APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillQuadLinearColor(pt1, pt2, pt3, pt4: TPointF; c1,\n  c2, c3, c4: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  FillQuadsLinearColor([pt1,pt2,pt3,pt4],[c1,c2,c3,c4],APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillPolyConvex(const APoints: array of TPointF;\n  AColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  FillTrianglesFan(APoints,AColor,AColor,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.Line(x1, y1, x2, y2: single; AColor: TBGRAPixel; ADrawLastPoint: boolean);\nvar pts: array of TPointF;\nbegin\n  setlength(pts,2);\n  pts[0] := PointF(x1,y1);\n  pts[1] := PointF(x2,y2);\n  Polylines(pts,AColor,ADrawLastPoint);\nend;\n\nprocedure TBGLCustomCanvas.Line(p1, p2: TPointF; AColor: TBGRAPixel; ADrawLastPoint: boolean);\nvar pts: array of TPointF;\nbegin\n  setlength(pts,2);\n  pts[0] := p1;\n  pts[1] := p2;\n  Polylines(pts,AColor,ADrawLastPoint);\nend;\n\nprocedure TBGLCustomCanvas.FillRectLinearColor(r: TRect;\n  ATopLeftColor, ATopRightColor, ABottomRightColor, ABottomLeftColor: TBGRAPixel);\nbegin\n  FillRectLinearColor(r.left,r.top,r.right,r.bottom,\n       ATopLeftColor, ATopRightColor, ABottomRightColor, ABottomLeftColor,\n       False);\nend;\n\nprocedure TBGLCustomCanvas.FillRectLinearColor(x1, y1, x2, y2: single;\n  ATopLeftColor, ATopRightColor, ABottomRightColor,\n  ABottomLeftColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  FillQuadLinearColor(PointF(x1,y1),PointF(x2,y1),\n       PointF(x2,y2),PointF(x1,y2),\n       ATopLeftColor, ATopRightColor, ABottomRightColor, ABottomLeftColor,\n       APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.Ellipse(cx, cy, rx, ry: single; AColor: TBGRAPixel);\nbegin\n  if AColor.alpha = 0 then exit;\n  Polygons(ComputeEllipse(cx,cy,rx,ry),AColor);\nend;\n\nprocedure TBGLCustomCanvas.EllipseInRect(r: TRect; AColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  Ellipse(cx,cy,rx,ry, AColor);\nend;\n\nprocedure TBGLCustomCanvas.FillEllipse(cx, cy, rx, ry: single; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  if AColor.alpha = 0 then exit;\n  FillTrianglesFan(ComputeEllipse(cx,cy,rx,ry),AColor,AColor,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillEllipseInRect(r: TRect; AColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,False,cx,cy,rx,ry) then exit;\n  FillEllipse(cx,cy,rx,ry, AColor);\nend;\n\nprocedure TBGLCustomCanvas.FillEllipseLinearColor(cx, cy, rx, ry: single;\n  AOuterColor, AInnerColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  if (AOutercolor.alpha = 0) and (AInnercolor.alpha = 0) then exit;\n  FillTrianglesFan(ConcatPointsF([PointsF([PointF(cx,cy)]),ComputeEllipse(cx,cy,rx,ry)]),AInnercolor,AOutercolor,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillEllipseLinearColorInRect(r: TRect; AOuterColor,\n  AInnerColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,False,cx,cy,rx,ry) then exit;\n  FillEllipseLinearColor(cx,cy,rx,ry, AOutercolor,AInnercolor);\nend;\n\nprocedure TBGLCustomCanvas.Arc(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,AFillColor,AFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.Arc(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,AFillColor,AFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.ArcInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AFillColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  Arc(cx,cy,rx,ry,StartAngleRad,EndAngleRad, AColor,ADrawChord, AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.ArcLinearColor(cx, cy, rx, ry: single;\n  const StartPoint, EndPoint: TPointF; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,AOuterFillColor,AInnerFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.ArcLinearColor(cx, cy, rx, ry: single;\n  StartAngleRad, EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,AOuterFillColor,AInnerFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGLCustomCanvas.ArcLinearColorInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; ADrawChord: boolean; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  ArcLinearColor(cx,cy,rx,ry,StartAngleRad,EndAngleRad, AColor,ADrawChord, AOuterFillColor,AInnerFillColor);\nend;\n\nprocedure TBGLCustomCanvas.Pie(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AColor: TBGRAPixel; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,AFillColor,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGLCustomCanvas.Pie(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,AFillColor,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGLCustomCanvas.PieInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; AFillColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  Pie(cx,cy,rx,ry,StartAngleRad,EndAngleRad, AColor,AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.PieLinearColor(cx, cy, rx, ry: single;\n  const StartPoint, EndPoint: TPointF; AColor: TBGRAPixel; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,AOuterFillColor,AInnerFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGLCustomCanvas.PieLinearColor(cx, cy, rx, ry: single;\n  StartAngleRad, EndAngleRad: Single; AColor: TBGRAPixel; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,AOuterFillColor,AInnerFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGLCustomCanvas.PieLinearColorInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; AOuterFillColor,\n  AInnerFillColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  PieLinearColor(cx,cy,rx,ry,StartAngleRad,EndAngleRad, AColor,AOuterFillColor,AInnerFillColor);\nend;\n\nprocedure TBGLCustomCanvas.EllipseLinearColor(cx, cy, rx, ry: single; AColor: TBGRAPixel;\n  AOuterFillColor, AInnerFillColor: TBGRAPixel);\nbegin\n  if (rx>1) and (ry>1) then\n    FillEllipseLinearColor(cx,cy,rx-0.5,ry-0.5,AOuterFillColor,AInnerFillColor);\n  Ellipse(cx,cy,rx,ry,AColor);\nend;\n\nprocedure TBGLCustomCanvas.EllipseLinearColorInRect(r: TRect; AColor: TBGRAPixel;\n  AOuterFillColor, AInnerFillColor: TBGRAPixel);\nvar cx,cy,rx,ry: single;\nbegin\n  if not ComputeEllipseC(r,True,cx,cy,rx,ry) then exit;\n  FillEllipseLinearColor(cx,cy,rx,ry, AOuterFillColor,AInnerFillColor);\n  EllipseInRect(r,AColor);\nend;\n\nprocedure TBGLCustomCanvas.Ellipse(cx, cy, rx, ry: single; AColor: TBGRAPixel;\n  AFillColor: TBGRAPixel);\nbegin\n  EllipseLinearColor(cx,cy,rx,ry,AColor,AFillColor,AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.EllipseInRect(r: TRect; AColor: TBGRAPixel;\n  AFillColor: TBGRAPixel);\nbegin\n  EllipseLinearColorInRect(r, AColor, AFillColor, AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(r: TRect; AColor: TBGRAPixel);\nbegin\n  Rectangle(r,AColor,BGRAPixelTransparent);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(r: TRect; AColor: TBGRAPixel;\n  AFillColor: TBGRAPixel);\nbegin\n  SwapRect(r);\n  if r.left=r.right then exit;\n  if r.top=r.bottom then exit;\n  Rectangle(r.left,r.top,r.right-1,r.bottom-1,AColor,AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(x1, y1, x2, y2: single; AColor: TBGRAPixel);\nbegin\n  Rectangle(x1,y1,x2,y2,AColor,1);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(x1, y1, x2, y2: single;\n  AColor: TBGRAPixel; AFillColor: TBGRAPixel);\nbegin\n  Rectangle(x1,y1,x2,y2,AColor,1,AFillColor);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(x1, y1, x2, y2: single;\n  AColor: TBGRAPixel; w: single; APixelCenteredCoordinates: boolean);\nvar hw: single;\nbegin\n  SwapRect(x1,y1,x2,y2);\n  hw := w*0.5;\n  if (x2-x1 > w) and (y2-y1 > w) then\n    FillQuads(PointsF([PointF(x1-hw,y1-hw),PointF(x2+hw,y1-hw),PointF(x2+hw,y1+hw),PointF(x1-hw,y1+hw),\n      PointF(x1-hw,y2-hw),PointF(x2+hw,y2-hw),PointF(x2+hw,y2+hw),PointF(x1-hw,y2+hw),\n      PointF(x1-hw,y1+hw),PointF(x1+hw,y1+hw),PointF(x1+hw,y2-hw),PointF(x1-hw,y2-hw),\n      PointF(x2-hw,y1+hw),PointF(x2+hw,y1+hw),PointF(x2+hw,y2-hw),PointF(x2-hw,y2-hw)]), AColor,\n      APixelCenteredCoordinates)\n  else\n    FillQuads(PointsF([PointF(x1-hw,y1-hw),PointF(x2+hw,y1-hw),PointF(x2+hw,y2+hw),PointF(x1-hw,y2+hw)]),AColor,\n    APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.Rectangle(x1, y1, x2, y2: single;\n  AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  SwapRect(x1,y1,x2,y2);\n  if (x2-x1 > w) and (y2-y1 > w) then\n    FillRect(x1+0.5*w,y1+0.5*w,x2-0.5*w,y2-0.5*w,AFillColor,APixelCenteredCoordinates);\n  Rectangle(x1,y1,x2,y2,AColor,w,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.RectangleWithin(x1, y1, x2, y2: single;\n  ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel;\n  APixelCenteredCoordinates: boolean);\nbegin\n  Rectangle(x1+w*0.5,y1+w*0.5,x2-w*0.5,y2-w*0.5, ABorderColor, w, AFillColor,\n    APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.RectangleWithin(r: TRect; ABorderColor: TBGRAPixel;\n  w: single; AFillColor: TBGRAPixel);\nbegin\n  RectangleWithin(r.left,r.top,r.right,r.bottom,ABorderColor,w,AFillColor,false);\nend;\n\nprocedure TBGLCustomCanvas.RoundRect(x1, y1, x2, y2, rx, ry: single;\n  ABorderColor: TBGRAPixel; options: TRoundRectangleOptions);\nbegin\n  RoundRect(x1,y1,x2,y2,rx,ry,ABorderColor,options);\nend;\n\nprocedure TBGLCustomCanvas.RoundRect(x1, y1, x2, y2, rx, ry: single;\n  ABorderColor, AFillColor: TBGRAPixel; options: TRoundRectangleOptions);\nconst radiusReduction = 1;\nbegin\n  SwapRect(x1,y1,x2,y2);\n  rx := abs(rx);\n  ry := abs(ry);\n  if (AFillColor.alpha <> 0) and (y2-y1 > 1) and (x2-x1 > 1) then\n  begin\n    if (rx <= radiusReduction) or (ry <= radiusReduction) then\n      FillRect(x1+0.5,y1+0.5,x2-0.5,y2-0.5, AFillColor)\n    else\n      FillPolyConvex(ComputeRoundRect(x1+0.5,y1+0.5,x2-0.5,y2-0.5,rx-radiusReduction,ry-radiusReduction,options),AFillColor);\n  end;\n  Polygons(ComputeRoundRect(x1,y1,x2,y2,rx,ry,options),ABorderColor);\nend;\n\nprocedure TBGLCustomCanvas.FillRoundRect(x, y, x2, y2, rx, ry: single;\n  AFillColor: TBGRAPixel; options: TRoundRectangleOptions; APixelCenteredCoordinates: boolean);\nbegin\n  if AFillColor.alpha <> 0 then\n    FillPolyConvex(ComputeRoundRect(x,y,x2,y2,rx,ry,options),AFillColor,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillRect(x1, y1, x2, y2: single; AColor: TBGRAPixel; APixelCenteredCoordinates: boolean);\nbegin\n  FillQuads(PointsF([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)]), AColor, APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.FillRect(r: TRect; AColor: TBGRAPixel);\nbegin\n  SwapRect(r);\n  if r.left=r.right then exit;\n  if r.top=r.bottom then exit;\n  FillRect(r.left,r.top,r.Right,r.bottom,AColor,False);\nend;\n\nprocedure TBGLCustomCanvas.FillRect(r: TRectF; AColor: TBGRAPixel;\n  APixelCenteredCoordinates: boolean);\nbegin\n  if r.left=r.right then exit;\n  if r.top=r.bottom then exit;\n  FillRect(r.left,r.top,r.Right,r.bottom,AColor,APixelCenteredCoordinates);\nend;\n\nprocedure TBGLCustomCanvas.Frame3D(var bounds: TRect; width: integer;\n  Style: TGraphicsBevelCut);\nbegin\n  Frame3D(bounds,width,style,ColorToBGRA(clRgbBtnHighlight),ColorToBGRA(clRgbBtnShadow));\nend;\n\nprocedure TBGLCustomCanvas.Frame3D(var bounds: TRect; width: integer;\n  Style: TGraphicsBevelCut; LightColor: TBGRAPixel; ShadowColor: TBGRAPixel);\nvar temp: TBGRAPixel;\n    color1,color2: TBGRAPixel;\nbegin\n  if width <= 0 then exit;\n  color1 := LightColor;\n  color2 := ShadowColor;\n  if Style = bvLowered then\n  begin\n    temp := color1;\n    color1 := color2;\n    color2 := temp;\n  end;\n  if Style in [bvLowered,bvRaised] then\n  with bounds do\n  begin\n    FillTrianglesFan([PointF(Left,Top),PointF(Right,Top),\n                      PointF(Right-width,Top+width),PointF(Left+width,Top+width),\n                      PointF(Left+width,Bottom-width),PointF(Left,Bottom)],color1,color1, False);\n    FillTrianglesFan([PointF(Right,Bottom),PointF(Left,Bottom),\n                        PointF(Left+width,Bottom-width),PointF(Right-width,Bottom-width),\n                        PointF(Right-width,Top+width),PointF(Right,Top)],color2,color2, false);\n  end;\n  bounds.Inflate(-width, -width);\nend;\n\nprocedure TBGLCustomCanvas.PutImage(x, y: single; ATexture: IBGLTexture;\n  AAlpha: byte);\nbegin\n  ATexture.Draw(x,y,AAlpha);\nend;\n\nprocedure TBGLCustomCanvas.PutImage(x, y: single; ATexture: IBGLTexture;\n  AColor: TBGRAPixel);\nbegin\n  ATexture.Draw(x,y,AColor);\nend;\n\nprocedure TBGLCustomCanvas.StretchPutImage(x, y, w, h: single;\n  ATexture: IBGLTexture; AAlpha: byte);\nbegin\n  ATexture.StretchDraw(x,y,w,h, AAlpha);\nend;\n\nprocedure TBGLCustomCanvas.StretchPutImage(x, y, w, h: single;\n  ATexture: IBGLTexture; AColor: TBGRAPixel);\nbegin\n  ATexture.StretchDraw(x,y,w,h, AColor);\nend;\n\nprocedure TBGLCustomCanvas.StretchPutImage(r: TRect; ATexture: IBGLTexture;\n  AAlpha: byte);\nbegin\n  ATexture.StretchDraw(r.left,r.top,r.right-r.left,r.bottom-r.top, AAlpha);\nend;\n\nprocedure TBGLCustomCanvas.StretchPutImage(r: TRect; ATexture: IBGLTexture;\n  AColor: TBGRAPixel);\nbegin\n  ATexture.StretchDraw(r.left,r.top,r.right-r.left,r.bottom-r.top, AColor);\nend;\n\nprocedure TBGLCustomCanvas.PutImageAngle(x, y: single; ATexture: IBGLTexture;\n  angleDeg: single; AAlpha: byte);\nbegin\n  ATexture.DrawAngle(x,y,angleDeg,AAlpha);\nend;\n\nprocedure TBGLCustomCanvas.PutImageAngle(x, y: single; ATexture: IBGLTexture;\n  angleDeg: single; AColor: TBGRAPixel);\nbegin\n  ATexture.DrawAngle(x,y,angleDeg,AColor);\nend;\n\nprocedure TBGLCustomCanvas.PutImageAffine(const Origin, HAxis, VAxis: TPointF;\n  ATexture: IBGLTexture; AAlpha: byte);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  ATexture.DrawAffine(Origin, HAxis, VAxis, AAlpha);\n  {$POP}\nend;\n\nprocedure TBGLCustomCanvas.PutImageAffine(const Origin, HAxis, VAxis: TPointF;\n  ATexture: IBGLTexture; AColor: TBGRAPixel);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  ATexture.DrawAffine(Origin, HAxis, VAxis, AColor);\n  {$POP}\nend;\n\nprocedure TBGLCustomCanvas.PutImageAffine(x, y: single; ATexture: IBGLTexture;\n  const AMatrix: TAffineMatrix; AAlpha: byte);\nbegin\n  ATexture.DrawAffine(x,y,AMatrix,AAlpha);\nend;\n\nprocedure TBGLCustomCanvas.PutImageAffine(x, y: single; ATexture: IBGLTexture;\n  const AMatrix: TAffineMatrix; AColor: TBGRAPixel);\nbegin\n  ATexture.DrawAffine(x,y,AMatrix,AColor);\nend;\n\nprocedure TBGLCustomCanvas.Translate(x, y: single);\nbegin\n  Matrix := Matrix*AffineMatrixTranslation(x,y);\nend;\n\nprocedure TBGLCustomCanvas.Scale(sx, sy: single);\nbegin\n  Matrix := Matrix*AffineMatrixScale(sx,sy);\nend;\n\nprocedure TBGLCustomCanvas.RotateDeg(angleCW: single);\nbegin\n  Matrix := Matrix*AffineMatrixRotationDeg(angleCW);\nend;\n\nprocedure TBGLCustomCanvas.RotateRad(angleCCW: single);\nbegin\n  Matrix := Matrix*AffineMatrixRotationRad(angleCCW);\nend;\n\nprocedure TBGLCustomCanvas.ResetTransform;\nbegin\n  Matrix := AffineMatrixIdentity;\nend;\n\nprocedure TBGLCustomCanvas.UseOrthoProjection;\nbegin\n  ProjectionMatrix := OrthoProjectionToOpenGL(0,0,Width,Height);\nend;\n\nprocedure TBGLCustomCanvas.UseOrthoProjection(AMinX, AMinY, AMaxX, AMaxY: single);\nbegin\n  ProjectionMatrix := OrthoProjectionToOpenGL(AMinX,AMinY,AMaxX,AMaxY);\nend;\n\nprocedure TBGLCustomCanvas.StartZBuffer;\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomCanvas.EndZBuffer;\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomCanvas.WaitForGPU(AOption: TWaitForGPUOption);\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nfunction TBGLCustomCanvas.GetImage(x, y, w, h: integer): TBGRACustomBitmap;\nbegin\n  result := nil;\nend;\n\nfunction TBGLCustomCanvas.CreateFrameBuffer(AWidth, AHeight: integer): TBGLCustomFrameBuffer;\nbegin\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraclasses.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Basic Pascal types regardless of the framework (LCL, no LCL, MSEgui).\n  To be used instead of _Classes_ and _Types_ in unit clause. }\nunit BGRAClasses;\n\n{=== Types imported from Classes ===}\n\n{$mode objfpc}{$H+}\n{$modeswitch advancedrecords}\n\ninterface\n\nuses\n  {$IFDEF BGRABITMAP_USE_MSEGUI}Types, Classes, mclasses, msegraphutils, mseguiglob{$ELSE}Types, Classes{$ENDIF};\n\ntype\n  {* Signed integer value of at least 32 bits }\n  Int32or64 = {$IFDEF CPU64}Int64{$ELSE}LongInt{$ENDIF};\n  {* Unsigned integer value of at least 32 bits }\n  UInt32or64 = {$IFDEF CPU64}UInt64{$ELSE}LongWord{$ENDIF};\n\ntype //types always imported from Classes\n\n  { FreePascal list of pointers }\n  TFPList = Classes.TFPList;\n\n  { Delphi list of pointers }\n  TList = Classes.TList;\n\n  { Standard event without parameters }\n  TNotifyEvent = Classes.TNotifyEvent;\n\n  { Invalid operation exception }\n  EInvalidOperation = Classes.EInvalidOperation;\n  { File creation exception }\n  EFCreateError = Classes.EFCreateError;\n  { File open exception }\n  EFOpenError = Classes.EFOpenError;\n  { Horizontal alignment }\n  TAlignment = Classes.TAlignment;\n  { Stream seek origin }\n  TSeekOrigin = Classes.TSeekOrigin;\n  { Stream base class }\n  TStream = Classes.TStream;\n  { Base persistent class }\n  TPersistent = Classes.TPersistent;\n  { Base string list }\n  TStrings = Classes.TStrings;\n  { String list }\n  TStringList = Classes.TStringList;\n\ntype // types that can be bridged\n  { Base component class }\n  TComponent = {$IFDEF BGRABITMAP_USE_MSEGUI}mclasses{$ELSE}Classes{$ENDIF}.TComponent;\n  { Resource stream }\n  TResourceStream = {$IFDEF BGRABITMAP_USE_MSEGUI}mclasses{$ELSE}Classes{$ENDIF}.TResourceStream;\n  { Memory stream }\n  TMemoryStream = {$IFDEF BGRABITMAP_USE_MSEGUI}mclasses{$ELSE}Classes{$ENDIF}.TMemoryStream;\n  { Stream attached to file handle }\n  THandleStream = {$IFDEF BGRABITMAP_USE_MSEGUI}mclasses{$ELSE}Classes{$ENDIF}.THandleStream;\n  { String stream }\n  TStringStream = {$IFDEF BGRABITMAP_USE_MSEGUI}mclasses{$ELSE}Classes{$ENDIF}.TStringStream;\n\ntype\n  {$IFDEF BGRABITMAP_USE_MSEGUI}\n  TPoint = msegraphutils.pointty;\n  TSize = msegraphutils.sizety;\n  TRect = Classes.TRect;\n  TClassesPoint = Classes.TPoint;\n  TMSERect = msegraphutils.rectty;\n  {$ELSE}\n  {* Represents a point with X and Y integer coordinates }\n  TPoint = Types.TPoint;\n  {* Constains a size with integer with and height }\n  TSize = Types.TSize;\n  TRect = Types.TRect;\n  {$ENDIF}\n  PPoint = ^TPoint;\n  PSize = ^TSize;\n  PRect = ^TRect;\n\n  {$IF FPC_FULLVERSION>=030001}\n  {* Contains a point with single-precision floating point coordinates }\n  TPointF = Types.TPointF;\n  {* Represents a rectangle with single-precision floating point coordinates }\n  TRectF = Types.TRectF;\n  {$ELSE}\n  TPointF = record x : single; y : single; end;\n\n  {$define BGRA_DEFINE_TRECTF}\n  TRectF =\n  {$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}\n  packed\n  {$endif FPC_REQUIRES_PROPER_ALIGNMENT}\n  record\n  private\n    function GetHeight: single;\n    function GetWidth: Single;\n  public\n    property Width: Single read GetWidth;\n    property Height: single read GetHeight;\n    procedure Offset (const dx,dy : Single);\n    case Integer of\n     0: (Left, Top, Right, Bottom: Single);\n     1: (TopLeft, BottomRight: TPointF);\n  end;\n  {$ENDIF}\n\nconst\n  //types always imported from Classes\n  taLeftJustify = Classes.taLeftJustify;\n  taRightJustify = Classes.taRightJustify;\n  taCenter = Classes.taCenter;\n\ntype\n  {$IFDEF BGRABITMAP_USE_MSEGUI}\n  TShiftState = mseguiglob.shiftstatesty;\n  {$ELSE}\n  TShiftState = Classes.TShiftState;\n  {$ENDIF}\n\nconst\n  {$IFDEF BGRABITMAP_USE_MSEGUI}\n  ssShift = mseguiglob.ss_shift;\n  ssAlt = mseguiglob.ss_alt;\n  ssCtrl = mseguiglob.ss_ctrl;\n  ssLeft = mseguiglob.ss_left;\n  ssRight = mseguiglob.ss_right;\n  ssMiddle = mseguiglob.ss_middle;\n  ssDouble = mseguiglob.ss_double;\n  ssTriple = mseguiglob.ss_triple;\n  {$ELSE}\n  ssShift = Classes.ssShift;\n  ssAlt = Classes.ssAlt;\n  ssCtrl = Classes.ssCtrl;\n  ssLeft = Classes.ssLeft;\n  ssRight = Classes.ssRight;\n  ssMiddle = Classes.ssMiddle;\n  ssDouble = Classes.ssDouble;\n  ssTriple = Classes.ssTriple;\n  {$ENDIF}\n\n  soBeginning = Classes.soBeginning;\n  soCurrent = Classes.soCurrent;\n  soEnd = Classes.soEnd;\n\n  {$IFDEF BGRABITMAP_USE_MSEGUI}\n  fmCreate        = $FF00;\n  fmOpenRead      = 0;\n  fmOpenWrite     = 1;\n  fmOpenReadWrite = 2;\n\n  soFromBeginning = 0;\n  soFromCurrent = 1;\n  soFromEnd = 2;\n  {$ELSE}\n  fmCreate = Classes.fmCreate;\n  fmOpenRead = Classes.fmOpenRead;\n  fmOpenWrite = Classes.fmOpenWrite;\n  fmOpenReadWrite = Classes.fmOpenReadWrite;\n  soFromBeginning = Classes.soFromBeginning;\n  soFromCurrent = Classes.soFromCurrent;\n  soFromEnd = Classes.soFromEnd;\n  {$ENDIF}\n\nfunction Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;\nfunction Point(AX, AY: Integer): TPoint;\nfunction Size(AWidth, AHeight: Integer): TSize;\nprocedure IncF(var ADest: single; ADelta: single); overload; inline;\nprocedure IncF(var ADest: double; ADelta: double); overload; inline;\nprocedure DecF(var ADest: single; ADelta: single); overload; inline;\nprocedure DecF(var ADest: double; ADelta: double); overload; inline;\nprocedure Inc64(var AValue: int64; const ADelta: int64); overload; inline;\nprocedure Dec64(var AValue: int64; const ADelta: int64); overload; inline;\nprocedure Inc64(var AValue: uint64; const ADelta: uint64); overload; inline;\nprocedure Dec64(var AValue: uint64; const ADelta: uint64); overload; inline;\n\nimplementation\n\nfunction Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;\nbegin\n  with Result do\n  begin\n    Left := ALeft;\n    Top := ATop;\n    Right := ARight;\n    Bottom := ABottom;\n  end;\nend;\n\n{$IFDEF BGRA_DEFINE_TRECTF}\n{ TRectF }\n\nfunction TRectF.GetHeight: single;\nbegin\n  result := Bottom-Top;\nend;\n\nfunction TRectF.GetWidth: Single;\nbegin\n  result := Right-Left;\nend;\n\nprocedure TRectF.Offset(const dx, dy: Single);\nbegin\n  left:=left+dx; right:=right+dx;\n  bottom:=bottom+dy; top:=top+dy;\nend;\n{$ENDIF}\n\nfunction Point(AX, AY: Integer): TPoint;\nbegin\n  with Result do\n  begin\n    X := AX;\n    Y := AY;\n  end;\nend;\n\nfunction Size(AWidth, AHeight: Integer): TSize;\nbegin\n  Result.cx := AWidth;\n  Result.cy := AHeight;\nend;\n\nprocedure IncF(var ADest: single; ADelta: single);\nbegin\n  ADest := ADest + ADelta;\nend;\n\nprocedure IncF(var ADest: double; ADelta: double);\nbegin\n  ADest := ADest + ADelta;\nend;\n\nprocedure DecF(var ADest: single; ADelta: single);\nbegin\n  ADest := ADest - ADelta;\nend;\n\nprocedure DecF(var ADest: double; ADelta: double);\nbegin\n  ADest := ADest - ADelta;\nend;\n\nprocedure Inc64(var AValue: int64; const ADelta: int64);\nbegin\n  {$IFDEF CPU64}\n  Inc(AValue, ADelta);\n  {$ELSE}\n  AValue := AValue + ADelta;\n  {$ENDIF}\nend;\n\nprocedure Dec64(var AValue: int64; const ADelta: int64);\nbegin\n  {$IFDEF CPU64}\n  Dec(AValue, ADelta);\n  {$ELSE}\n  AValue := AValue - ADelta;\n  {$ENDIF}\nend;\n\nprocedure Inc64(var AValue: uint64; const ADelta: uint64);\nbegin\n  {$IFDEF CPU64}\n  Inc(AValue, ADelta);\n  {$ELSE}\n  AValue := AValue + ADelta;\n  {$ENDIF}\nend;\n\nprocedure Dec64(var AValue: uint64; const ADelta: uint64);\nbegin\n  {$IFDEF CPU64}\n  Dec(AValue, ADelta);\n  {$ELSE}\n  AValue := AValue - ADelta;\n  {$ENDIF}\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracolorint.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Colors stored as integers with maximum value 65536 but allowing overflow }\nunit BGRAColorInt;\n\n{$mode objfpc}{$H+}\n{$if defined(CPUI386) and not defined(openbsd)}\n  {$define BGRACOLORINT_USEASM}\n{$endif}\n{$ifdef DARWIN}\n  {$undef BGRACOLORINT_USEASM}\n{$endif}\n\ninterface\n\nuses\n  BGRABitmapTypes;\n\ntype\n  { RGBA color defined by integers from 0 to 65536 }\n  TColorInt65536 = packed record\n    r,g,b,a: integer;\n  end;\n\nfunction ColorInt65536(r,g,b,a: integer): TColorInt65536; inline; overload;\nfunction ColorInt65536(r,g,b: integer): TColorInt65536; inline; overload;\nfunction ColorFToColorInt65536(colorF: TColorF): TColorInt65536; inline;\nfunction ColorInt65536ToColorF(color: TColorInt65536): TColorF;\noperator +(const color1,color2: TColorInt65536): TColorInt65536; inline;\noperator *(const color1,color2: TColorInt65536): TColorInt65536;\noperator *(const color1: TColorInt65536; factor65536: integer): TColorInt65536;\nfunction ColorIntToBGRA(const AColor: TColorInt65536; AGammaCompression: boolean = false): TBGRAPixel;\nfunction BGRAToColorInt(const AColor: TBGRAPixel; AGammaExpansion: boolean = false): TColorInt65536;\nfunction BGRAToColorIntMultiply(const color1: TBGRAPixel; const color2: TColorInt65536): TColorInt65536;\n\nimplementation\n\nfunction ColorInt65536(r, g, b, a: integer): TColorInt65536;\nbegin\n  result.r := r;\n  result.g := g;\n  result.b := b;\n  result.a := a;\nend;\n\nfunction ColorInt65536(r, g, b: integer): TColorInt65536;\nbegin\n  result.r := r;\n  result.g := g;\n  result.b := b;\n  result.a := 65536;\nend;\n\nfunction ColorFToColorInt65536(colorF: TColorF): TColorInt65536;\nbegin\n  result.r := round(colorF[1]*65536);\n  result.g := round(colorF[2]*65536);\n  result.b := round(colorF[3]*65536);\n  result.a := round(colorF[4]*65536);\nend;\n\nfunction ColorInt65536ToColorF(color: TColorInt65536): TColorF;\nconst oneOver65536 = 1/65536;\nbegin\n  result[1] := color.r*oneOver65536;\n  result[2] := color.g*oneOver65536;\n  result[3] := color.b*oneOver65536;\n  result[4] := color.a*oneOver65536;\nend;\n\noperator+(const color1, color2: TColorInt65536): TColorInt65536;\nbegin\n  result.r := color1.r+color2.r;\n  result.g := color1.g+color2.g;\n  result.b := color1.b+color2.b;\n  result.a := color1.a+color2.a;\nend;\n\noperator*(const color1, color2: TColorInt65536): TColorInt65536;\n{$ifdef BGRACOLORINT_USEASM} {$asmmode intel} assembler;\n  asm\n    push edx\n    push ebx\n    push esi\n    mov ebx, Color1\n    mov esi, Color2\n    //ecx = @result\n\n    mov eax, [ebx] //r\n    imul dword ptr [esi]\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx], edx\n\n    mov eax, [ebx+4] //g\n    imul dword ptr [esi+4]\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+4], edx\n\n    mov eax, [ebx+8] //b\n    imul dword ptr [esi+8]\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+8], edx\n\n    mov eax, [ebx+12] //a\n    imul dword ptr [esi+12]\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+12], edx\n\n    pop esi\n    pop ebx\n    pop edx\n  end;\n{$ELSE}\nbegin\n  result.r := int64(color1.r)*color2.r shr 16;\n  result.g := int64(color1.g)*color2.g shr 16;\n  result.b := int64(color1.b)*color2.b shr 16;\n  result.a := int64(color1.a)*color2.a shr 16;\nend;\n{$ENDIF}\n\noperator*(const color1: TColorInt65536; factor65536: integer): TColorInt65536;\n{$ifdef BGRACOLORINT_USEASM} {$asmmode intel} assembler;\n  asm\n    push edx\n    push ebx\n    push esi\n    mov ebx, Color1\n    mov esi, factor65536\n    //ecx = @result\n\n    mov eax, [ebx] //r\n    imul esi\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx], edx\n\n    mov eax, [ebx+4] //g\n    imul esi\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+4], edx\n\n    mov eax, [ebx+8] //b\n    imul esi\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+8], edx\n\n    mov eax, [ebx+12] //a\n    imul esi\n    shl edx, 16\n    shr eax, 16\n    or edx, eax\n    mov [ecx+12], edx\n\n    pop esi\n    pop ebx\n    pop edx\n  end;\n{$else}\nvar prod: int64;\nbegin\n  prod := int64(color1.r)*factor65536;\n  if prod >= 0 then result.r := prod shr 16\n  else result.r := -((-prod) shr 16);\n  prod := int64(color1.g)*factor65536;\n  if prod >= 0 then result.g := prod shr 16\n  else result.g := -((-prod) shr 16);\n  prod := int64(color1.b)*factor65536;\n  if prod >= 0 then result.b := prod shr 16\n  else result.b := -((-prod) shr 16);\n  prod := int64(color1.a)*factor65536;\n  if prod >= 0 then result.a := prod shr 16\n  else result.a := -((-prod) shr 16);\nend;\n{$endif}\n\nfunction BGRAToColorInt(const AColor: TBGRAPixel; AGammaExpansion: boolean): TColorInt65536;\nbegin\n  if AGammaExpansion then\n  begin\n    result.r := GammaExpansionTab[AColor.red] + (AColor.red shr 7);\n    result.g := GammaExpansionTab[AColor.green] + (AColor.green shr 7);\n    result.b := GammaExpansionTab[AColor.blue] + (AColor.blue shr 7);\n  end else\n  begin\n    result.r := AColor.red shl 8 + AColor.red + (AColor.red shr 7);\n    result.g := AColor.green shl 8 + AColor.green + (AColor.green shr 7);\n    result.b := AColor.blue shl 8 + AColor.blue + (AColor.blue shr 7);\n  end;\n  result.a := AColor.alpha shl 8 + AColor.alpha+ (AColor.alpha shr 7);\nend;\n\nfunction BGRAToColorIntMultiply(const color1: TBGRAPixel;\n  const color2: TColorInt65536): TColorInt65536;\n{$ifdef BGRACOLORINT_USEASM} {$asmmode intel} assembler;\n  asm\n    push ebx\n    push esi\n\n    mov esi, Color2\n    mov ebx, result\n    mov ecx, [Color1]\n\n    mov eax, ecx\n    shr eax, TBGRAPixel_RedShift\n    and eax, 255\n    mov edx, eax\n    shr edx, 7\n    add eax, edx\n    imul dword ptr [esi]\n    shl edx, 24\n    shr eax, 8\n    or edx, eax\n    mov [ebx], edx\n\n    mov eax, ecx\n    shr eax, TBGRAPixel_GreenShift\n    and eax, 255\n    mov edx, eax\n    shr edx, 7\n    add eax, edx\n    imul dword ptr [esi+4]\n    shl edx, 24\n    shr eax, 8\n    or edx, eax\n    mov [ebx+4], edx\n\n    mov eax, ecx\n    shr eax, TBGRAPixel_BlueShift\n    and eax, 255\n    mov edx, eax\n    shr edx, 7\n    add eax, edx\n    imul dword ptr [esi+8]\n    shl edx, 24\n    shr eax, 8\n    or edx, eax\n    mov [ebx+8], edx\n\n    mov eax, ecx\n    shr eax, TBGRAPixel_AlphaShift\n    and eax, 255\n    mov edx, eax\n    shr edx, 7\n    add eax, edx\n    imul dword ptr [esi+12]\n    shl edx, 24\n    shr eax, 8\n    or edx, eax\n    mov [ebx+12], edx\n\n    pop esi\n    pop ebx\n  end;\n{$ELSE}\nbegin\n  result.r := int64(color2.r)*(color1.red shr 7+color1.red) shr 8;\n  result.g := int64(color2.g)*(color1.green shr 7+color1.green) shr 8;\n  result.b := int64(color2.b)*(color1.blue shr 7+color1.blue) shr 8;\n  result.a := int64(color2.a)*(color1.alpha shr 7+color1.alpha) shr 8;\nend;\n{$ENDIF}\n\nfunction ColorIntToBGRA(const AColor: TColorInt65536; AGammaCompression: boolean): TBGRAPixel;\nvar maxValue,invMaxValue,r,g,b: integer;\nbegin\n  if AColor.a <= 0 then\n    result.alpha := 0;\n  if AColor.a >= 65536 then\n    result.alpha := 255\n  else\n    result.alpha := AColor.a shr 8 - (AColor.a shr 15);\n\n  maxValue := AColor.r;\n  if AColor.g > maxValue then maxValue := AColor.g;\n  if AColor.b > maxValue then maxValue := AColor.b;\n\n  if maxValue <= 0 then\n  begin\n    result.red := 0;\n    result.green := 0;\n    result.blue := 0;\n    exit;\n  end;\n\n  if AGammaCompression then\n  begin\n    if maxValue <= 65535 then\n    begin\n      if AColor.r <= 0 then result.red := 0 else\n        result.red := GammaCompressionTab[AColor.r - (AColor.r shr 15)];\n\n      if AColor.g <= 0 then result.green := 0 else\n        result.green :=GammaCompressionTab[AColor.g - (AColor.g shr 15)];\n\n      if AColor.b <= 0 then result.blue := 0 else\n        result.blue := GammaCompressionTab[AColor.b - (AColor.b shr 15)];\n      exit;\n    end;\n\n    invMaxValue := (1073741824+maxValue-1) div maxValue;\n\n    maxValue := (maxValue-65535) shr 1;\n    if AColor.r < 0 then r := maxValue else\n      r := AColor.r*invMaxValue shr 14 + maxValue;\n    if AColor.g < 0 then g := maxValue else\n      g := AColor.g*invMaxValue shr 14 + maxValue;\n    if AColor.b < 0 then b := maxValue else\n      b := AColor.b*invMaxValue shr 14 + maxValue;\n\n    if r >= 65535 then result.red := 255 else\n      result.red := GammaCompressionTab[r];\n    if g >= 65535 then result.green := 255 else\n        result.green := GammaCompressionTab[g];\n    if b >= 65535 then result.blue := 255 else\n      result.blue := GammaCompressionTab[b];\n  end else\n  begin\n    if maxValue <= 65535 then\n    begin\n      if AColor.r <= 0 then result.red := 0 else\n        result.red := AColor.r shr 8 - (AColor.r shr 15);\n\n      if AColor.g <= 0 then result.green := 0 else\n        result.green := AColor.g shr 8 - (AColor.g shr 15);\n\n      if AColor.b <= 0 then result.blue := 0 else\n        result.blue := AColor.b shr 8 - (AColor.b shr 15);\n      exit;\n    end;\n\n    invMaxValue := (1073741824+maxValue-1) div maxValue;\n\n    maxValue := (maxValue-65535) shr 9;\n    if AColor.r < 0 then r := maxValue else\n      r := AColor.r*invMaxValue shr 22 + maxValue;\n    if AColor.g < 0 then g := maxValue else\n      g := AColor.g*invMaxValue shr 22 + maxValue;\n    if AColor.b < 0 then b := maxValue else\n      b := AColor.b*invMaxValue shr 22 + maxValue;\n\n    if r >= 255 then result.red := 255 else\n      result.red := r;\n    if g >= 255 then result.green := 255 else\n        result.green := g;\n    if b >= 255 then result.blue := 255 else\n      result.blue := b;\n  end;\nend;\n\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracolorquantization.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Color quantization i.e. the reduction to a palette using dithering or not,\n  provided by TBGRAColorQuantizer class. }\nunit BGRAColorQuantization;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAPalette, BGRABitmapTypes;\n\ntype\n  TBGRAColorBox = class;\n  TBGRAColorTree = class;\n  TBGRAApproxPalette = class;\n  TBiggestLeafMethod = (blMix, blApparentInterval, blWeight);\n\n  { Range according to one dimension of a color }\n  TDimensionMinMax = object\n    Minimum: UInt32;\n    Maximum: UInt32;\n    function Size: UInt32;\n    function Contains(AValue: UInt32): boolean;\n    function PointLike: boolean;\n    procedure SetAsPoint(AValue: UInt32);\n    function GetCenter: UInt32;\n    procedure GrowToInclude(AValue: UInt32);\n  end;\n\n  TColorDimension = (cdFast,cdRed,cdGreen,cdBlue,cdAlpha,cdRGB,cdRG,cdGB,cdRB,cdRInvG,cdGInvB,cdRInvB,cdRInvGB,cdGInvRB,cdBInvRG,\n                     cdSaturation);\n  TColorDimensions = set of TColorDimension;\n\n  { @abstract(Implementation of color quantization.)\n\nExample saving an image into 8-bit PNG file:\n```pascal\nuses BGRAColorQuantization, BGRABitmapTypes, BGRABitmap;\nvar\n  quant : TBGRAColorQuantizer;\n  sourceBmp: TBGRABitmap;\nbegin\n  sourceBmp := TBGRABitmap.Create('picture_in_32_bits.bmp');\n  quant := TBGRAColorQuantizer.Create(sourceBmp, acFullChannelInPalette);\n  // by default, reduces to 256 colors\n  quant.SaveBitmapToFile(daFloydSteinberg, sourceBmp, 'picture_in_8_bits.png');\n  quant.Free;\n  sourceBmp.Free;\nend;\n```\n  }\n  TBGRAColorQuantizer = class(TBGRACustomColorQuantizer)\n  private\n    FColors: ArrayOfWeightedColor;\n    FPalette: TBGRAApproxPalette;\n    FReductionColorCount: Integer;\n    FReductionKeepContrast: boolean;\n    FSeparateAlphaChannel: boolean;\n    procedure Init(ABox: TBGRAColorBox);\n    procedure NormalizeArrayOfColors(AColors: ArrayOfTBGRAPixel; ARedBounds, AGreenBounds, ABlueBounds, AAlphaBounds: TDimensionMinMax; AUniform: boolean); overload;\n    procedure NormalizeArrayOfColors(AColors: ArrayOfTBGRAPixel; AColorBounds, AAlphaBounds: TDimensionMinMax); overload;\n  protected\n    function GetPalette: TBGRACustomApproxPalette; override;\n    function GetSourceColor(AIndex: integer): TBGRAPixel; override;\n    function GetSourceColorCount: Integer; override;\n    function GetReductionColorCount: integer; override;\n    procedure SetReductionColorCount(AValue: Integer); override;\n  public\n    constructor Create(APalette: TBGRACustomPalette; ASeparateAlphaChannel: boolean); override;\n    constructor Create(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption); override;\n    constructor Create(APalette: TBGRACustomPalette; ASeparateAlphaChannel: boolean; AReductionColorCount: integer); override;\n    constructor Create(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption; AReductionColorCount: integer); override;\n    destructor Destroy; override;\n    procedure ApplyDitheringInplace(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; ABounds: TRect); override;\n    function GetDitheredBitmap(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; ABounds: TRect): TBGRACustomBitmap; overload; override;\n    function GetDitheredBitmapIndexedData(ABitDepth: integer; AByteOrder: TRawImageByteOrder; AAlgorithm: TDitheringAlgorithm;\n      ABitmap: TBGRACustomBitmap; out AScanlineSize: PtrInt): Pointer; overload; override;\n    procedure SaveBitmapToStream(AAlgorithm: TDitheringAlgorithm;\n      ABitmap: TBGRACustomBitmap; AStream: TStream; AFormat: TBGRAImageFormat); override;\n  end;\n\n  { Palette approximating color base on a color tree }\n  TBGRAApproxPalette = class(TBGRACustomApproxPalette)\n  private\n    FTree: TBGRAColorTree;\n    FColors: ArrayOfWeightedColor;\n  protected\n    function GetCount: integer; override;\n    function GetColorByIndex(AIndex: integer): TBGRAPixel; override;\n    function GetWeightByIndex(AIndex: Integer): UInt32; override;\n    procedure Init(const AColors: ArrayOfTBGRAPixel);\n  public\n    constructor Create(const AColors: ArrayOfTBGRAPixel); overload;\n    constructor Create(const AColors: ArrayOfWeightedColor); overload;\n    constructor Create(AOwnedSplitTree: TBGRAColorTree); overload;\n    destructor Destroy; override;\n    function ContainsColor(AValue: TBGRAPixel): boolean; override;\n    function IndexOfColor(AValue: TBGRAPixel): integer; override;\n    function FindNearestColor(AValue: TBGRAPixel): TBGRAPixel; override;\n    function FindNearestColorIndex(AValue: TBGRAPixel): integer; override;\n    function GetAsArrayOfColor: ArrayOfTBGRAPixel; override;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; override;\n  end;\n\n  { Palette approximating via a large palette }\n  TBGRAApproxPaletteViaLargerPalette = class(TBGRAApproxPalette)\n  private\n    FLarger: TBGRACustomApproxPalette;\n    FLargerColors: array of record\n      approxColor: TBGRAPixel;\n      approxColorIndex: integer;\n    end;\n    FLargerOwned: boolean;\n    FTransparentColorIndex: integer;\n  protected\n    function FindNearestLargerColorIndex(AValue: TBGRAPixel): integer; virtual;\n    function SlowFindNearestColorIndex(AValue: TBGRAPixel): integer;\n  public\n    constructor Create(const AColors: ArrayOfTBGRAPixel; ALarger: TBGRACustomApproxPalette; ALargerOwned: boolean);\n    destructor Destroy; override;\n    function FindNearestColor(AValue: TBGRAPixel): TBGRAPixel; override;\n    function FindNearestColorIndex(AValue: TBGRAPixel): integer; override;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; override;\n  end;\n\n  TIsChannelStrictlyGreaterFunc = TBGRAPixelComparer;\n  TIsChannelGreaterThanOrEqualToValueFunc = function (p : PBGRAPixel; v: UInt32): boolean;\n\n  TColorBoxBounds = array[TColorDimension] of TDimensionMinMax;\n\n  { Box area in the colorspace allowing to split in two different areas }\n  TBGRAColorBox = class\n  private\n    FBounds: TColorBoxBounds;\n    FTotalWeight: UInt32;\n    FColors: ArrayOfWeightedColor;\n    FDimensions: TColorDimensions;\n    FPureTransparentColorCount: integer;\n    function GetApparentInterval(ADimension: TColorDimension): UInt32;\n    function GetAverageColor: TBGRAPixel;\n    function GetAverageColorOrMainColor: TBGRAPixel;\n    function GetBounds(ADimension: TColorDimension): TDimensionMinMax;\n    function GetColorCount(ACountPureTransparent: boolean): integer;\n    function GetHasPureTransparentColor: boolean;\n    function GetInferiorColor: TBGRAPixel;\n    function GetLargestApparentDimension: TColorDimension;\n    function GetLargestApparentInterval: UInt32;\n    function GetPointLike: boolean;\n    function GetSuperiorColor: TBGRAPixel;\n    procedure Init(AColors: ArrayOfWeightedColor; AOwner: boolean);\n    procedure SortBy(ADimension: TColorDimension);\n    function GetMedianIndex(ADimension : TColorDimension; AMinValue, AMaxValue: UInt32): integer;\n  public\n    constructor Create(ADimensions: TColorDimensions; AColors: ArrayOfWeightedColor; AOwner: boolean); overload;\n    constructor Create(ADimensions: TColorDimensions; const AColors: ArrayOfTBGRAPixel; AAlpha: TAlphaChannelPaletteOption = acFullChannelInPalette); overload;\n    constructor Create(ADimensions: TColorDimensions; ABounds: TColorBoxBounds); overload;\n    constructor Create(ADimensions: TColorDimensions; APalette: TBGRACustomPalette); overload;\n    constructor Create(ADimensions: TColorDimensions; ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption); overload;\n    constructor Create(ADimensions: TColorDimensions; AColors: PBGRAPixel; ANbPixels: integer; AAlpha: TAlphaChannelPaletteOption); overload;\n    function BoundsContain(AColor: TBGRAPixel): boolean;\n    function MedianCut(ADimension: TColorDimension; out SuperiorMiddle: UInt32): TBGRAColorBox;\n    function Duplicate : TBGRAColorBox;\n    property Bounds[ADimension: TColorDimension]: TDimensionMinMax read GetBounds;\n    property ApparentInterval[AChannel: TColorDimension]: UInt32 read GetApparentInterval;\n    property LargestApparentDimension: TColorDimension read GetLargestApparentDimension;\n    property LargestApparentInterval: UInt32 read GetLargestApparentInterval;\n    property PointLike: boolean read GetPointLike;\n    property AverageColor: TBGRAPixel read GetAverageColor;\n    property SuperiorColor: TBGRAPixel read GetSuperiorColor;\n    property InferiorColor: TBGRAPixel read GetInferiorColor;\n    property AverageColorOrMainColor: TBGRAPixel read GetAverageColorOrMainColor;\n    function GetAsArrayOfColors(AIncludePureTransparent: boolean): ArrayOfTBGRAPixel;\n    property TotalWeight: UInt32 read FTotalWeight;\n    property ColorCount[ACountPureTransparent: boolean]: integer read GetColorCount;\n    property HasPureTransparentColor: boolean read GetHasPureTransparentColor;\n    property PureTransparentColorCount: integer read FPureTransparentColorCount;\n  end;\n\n  TBGRALeafColorMode = (lcAverage, lcCenter, lcExtremum, lcMix);\n\n  { Binary tree of colors for color approximation }\n  TBGRAColorTree = class\n  private\n    FLeaf: TBGRAColorBox;\n    FIsLeaf: boolean;\n    FLargestApparentInterval: integer;\n    FWeight: UInt32;\n\n    FLeafColor: TBGRAPixel;\n    FLeafColorIndex: integer;\n    FLeafColorComputed: boolean;\n    FMinBorder, FMaxBorder: array[TColorDimension] of boolean;\n    FCenterColor: TBGRAPixel;\n    FAverageColor: TBGRAPixel;\n\n    FPureTransparentColorCount: integer;\n    FPureTransparentColorIndex: integer;\n    FDimension: TColorDimension;\n    FPixelValueComparer: TIsChannelGreaterThanOrEqualToValueFunc;\n    FSuperiorMiddle: UInt32;\n    FInferiorBranch, FSuperiorBranch: TBGRAColorTree;\n    function GetApproximatedColorCount: integer;\n    function GetHasPureTransparentColor: boolean;\n    function GetLeafCount: integer;\n    procedure Init(ALeaf: TBGRAColorBox; AOwned: boolean);\n    procedure InternalComputeLeavesColor(ALeafColor: TBGRALeafColorMode; var AStartIndex: integer);\n    procedure CheckColorComputed;\n  public\n    constructor Create(ABox: TBGRAColorBox; AOwned: boolean); overload;\n    constructor Create(ADimensions: TColorDimensions; APalette: TBGRACustomPalette); overload;\n    constructor Create(ADimensions: TColorDimensions; ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption); overload;\n    destructor Destroy; override;\n    procedure FreeLeaves;\n    function FindBiggestLeaf(AMethod: TBiggestLeafMethod): TBGRAColorTree;\n    property LargestApparentInterval: integer read FLargestApparentInterval;\n    property Weight: UInt32 read FWeight;\n    property IsLeaf: boolean read FIsLeaf;\n    function TrySplitLeaf: boolean;\n    procedure ComputeLeavesColor(ALeafColor: TBGRALeafColorMode);\n    function ApproximateColor(AColor: TBGRAPixel): TBGRAPixel;\n    function ApproximateColorIndex(AColor: TBGRAPixel): integer;\n    function GetAsArrayOfApproximatedColors: ArrayOfTBGRAPixel;\n    function GetAsArrayOfWeightedColors: ArrayOfWeightedColor;\n    procedure SplitIntoPalette(ACount: integer; AMethod: TBiggestLeafMethod;\n      ALeafColor: TBGRALeafColorMode);\n    function SplitIntoPaletteWithSubPalette(ACount: integer; AMethod: TBiggestLeafMethod;\n      ALeafColor: TBGRALeafColorMode; ASubPaletteCount: integer): ArrayOfTBGRAPixel;\n    property LeafCount: integer read GetLeafCount;\n    property ApproximatedColorCount: integer read GetApproximatedColorCount;\n    property HasPureTransparentColor: boolean read GetHasPureTransparentColor;\n    property PureTransparentColorCount: integer read FPureTransparentColorCount;\n  end;\n\nfunction GetPixelStrictComparer(ADimension: TColorDimension): TIsChannelStrictlyGreaterFunc;\nfunction GetPixelValueComparer(ADimension: TColorDimension): TIsChannelGreaterThanOrEqualToValueFunc;\nfunction BGRAColorCount(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption): integer;\n\nconst AllColorDimensions = [cdRed,cdGreen,cdBlue,cdAlpha,cdRGB,cdRG,cdGB,cdRB,cdRInvG,cdGInvB,cdRInvB,cdRInvGB,cdGInvRB,cdBInvRG,\n                            cdSaturation];\n\nimplementation\n\nuses BGRADithering, FPimage, FPWriteBMP, BGRAWritePNG, math;\n\nconst MedianMinPercentage = 0.2;\n\nconst RedShift = 1;\n      GreenShift = 2;\n      AlphaShift = 1;\n      SaturationShift = 2;\n\nfunction GetDimensionValue(APixel: TBGRAPixel; ADimension: TColorDimension): UInt32;\nvar v: UInt32;\nbegin\n  case ADimension of\n  cdFast: result := LongWord(APixel);\n  cdRed: result := GammaExpansionTab[APixel.red] shl RedShift;\n  cdGreen: result := GammaExpansionTab[APixel.green] shl GreenShift;\n  cdBlue: result := GammaExpansionTab[APixel.blue];\n  cdAlpha: result := (APixel.alpha + (APixel.alpha shl 8)) shl AlphaShift;\n  cdRGB: result := GammaExpansionTab[APixel.blue] + (GammaExpansionTab[APixel.red] shl RedShift) + (GammaExpansionTab[APixel.green] shl GreenShift);\n  cdRG: result := (GammaExpansionTab[APixel.red] shl RedShift) + (GammaExpansionTab[APixel.green] shl GreenShift);\n  cdGB: result := GammaExpansionTab[APixel.blue] + (GammaExpansionTab[APixel.green] shl GreenShift);\n  cdRB: result := (GammaExpansionTab[APixel.red] shl RedShift) + GammaExpansionTab[APixel.blue];\n  cdRInvG: result := (GammaExpansionTab[APixel.red] shl RedShift) + ((not GammaExpansionTab[APixel.green]) shl GreenShift);\n  cdGInvB: result := (GammaExpansionTab[APixel.green] shl GreenShift) + (not GammaExpansionTab[APixel.blue]);\n  cdRInvB: result := (GammaExpansionTab[APixel.red] shl RedShift) + (not GammaExpansionTab[APixel.blue]);\n  cdRInvGB: result := (GammaExpansionTab[APixel.red] shl RedShift) + ((not GammaExpansionTab[APixel.green]) shl GreenShift) + (not GammaExpansionTab[APixel.blue]);\n  cdGInvRB: result := (GammaExpansionTab[APixel.green] shl GreenShift) + ((not GammaExpansionTab[APixel.red]) shl RedShift) + (not GammaExpansionTab[APixel.blue]);\n  cdBInvRG: result := (GammaExpansionTab[APixel.blue]) + ((not GammaExpansionTab[APixel.red]) shl RedShift) + ((not GammaExpansionTab[APixel.green]) shl GreenShift);\n  cdSaturation: with GammaExpansion(APixel) do\n    begin\n       v := red;\n       if green>v then v := green;\n       if blue>v then v := blue;\n       result := v;\n       v := red;\n       if green<v then v := green;\n       if blue<v then v := blue;\n       dec(result, v);\n       result := result shl SaturationShift;\n    end\n  else raise exception.Create('Unknown dimension');\n  end;\nend;\n\nfunction IsRGBGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := ((GammaExpansionTab[p1^.red] shl RedShift)+(GammaExpansionTab[p1^.green] shl GreenShift)+GammaExpansionTab[p1^.blue]) >\n     ((GammaExpansionTab[p2^.red] shl RedShift)+(GammaExpansionTab[p2^.green] shl GreenShift)+GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsRGBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := ((GammaExpansionTab[red] shl RedShift)+(GammaExpansionTab[green] shl GreenShift)+GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsRGGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := ((GammaExpansionTab[p1^.red] shl RedShift)+(GammaExpansionTab[p1^.green] shl GreenShift)) >\n     ((GammaExpansionTab[p2^.red] shl RedShift)+(GammaExpansionTab[p2^.green] shl GreenShift));\nend;\n\nfunction IsRGGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := ((GammaExpansionTab[red] shl RedShift)+(GammaExpansionTab[green] shl GreenShift)) >= v;\nend;\n\nfunction IsGBGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := ((GammaExpansionTab[p1^.green] shl GreenShift)+GammaExpansionTab[p1^.blue]) >\n  ((GammaExpansionTab[p2^.green] shl GreenShift)+GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsGBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := ((GammaExpansionTab[green] shl GreenShift)+GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsRBGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := ((GammaExpansionTab[p1^.red] shl RedShift)+GammaExpansionTab[p1^.blue]) >\n  ((GammaExpansionTab[p2^.red] shl RedShift)+GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsRBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := ((GammaExpansionTab[red] shl RedShift)+GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsRInvGGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.red]+ ((not GammaExpansionTab[p1^.green]) shl GreenShift)) >\n          (GammaExpansionTab[p2^.red]+((not GammaExpansionTab[p2^.green]) shl GreenShift));\nend;\n\nfunction IsRInvGGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[red]+((not GammaExpansionTab[green]) shl GreenShift)) >= v;\nend;\n\nfunction IsGInvBGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.green] shl GreenShift + not GammaExpansionTab[p1^.blue]) >\n     (GammaExpansionTab[p2^.green] shl GreenShift + not GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsGInvBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[green] shl GreenShift + not GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsRInvBGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.red] shl RedShift + not GammaExpansionTab[p1^.blue]) >\n    (GammaExpansionTab[p2^.red] shl RedShift + not GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsRInvBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[red] shl RedShift + not GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsRInvGBGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.red] shl RedShift + ((not GammaExpansionTab[p1^.green]) shl GreenShift) + not GammaExpansionTab[p1^.blue]) >\n          (GammaExpansionTab[p2^.red] shl RedShift + ((not GammaExpansionTab[p2^.green]) shl GreenShift) + not GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsRInvGBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[red] shl RedShift + ((not GammaExpansionTab[green]) shl GreenShift) + not GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsGInvRBGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.green] shl GreenShift + ((not GammaExpansionTab[p1^.red]) shl RedShift) + not GammaExpansionTab[p1^.blue]) >\n     (GammaExpansionTab[p2^.green] shl GreenShift + ((not GammaExpansionTab[p2^.red]) shl RedShift) + not GammaExpansionTab[p2^.blue]);\nend;\n\nfunction IsGInvRBGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[green] shl GreenShift + ((not GammaExpansionTab[red]) shl RedShift) + not GammaExpansionTab[blue]) >= v;\nend;\n\nfunction IsBInvRGGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := (GammaExpansionTab[p1^.blue] + ((not GammaExpansionTab[p1^.red]) shl RedShift) + ((not GammaExpansionTab[p1^.green]) shl GreenShift)) >\n    (GammaExpansionTab[p2^.blue] + ((not GammaExpansionTab[p2^.red]) shl RedShift) + ((not GammaExpansionTab[p2^.green]) shl GreenShift));\nend;\n\nfunction IsBInvRGGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  with p^ do\n    result := (GammaExpansionTab[blue] + ((not GammaExpansionTab[red]) shl RedShift) + ((not GammaExpansionTab[green]) shl GreenShift)) >= v;\nend;\n\nfunction IsSaturationGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := GetDimensionValue(p1^,cdSaturation) > GetDimensionValue(p2^,cdSaturation);\nend;\n\nfunction IsSaturationGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := GetDimensionValue(p^,cdSaturation) >= v;\nend;\n\nfunction IsRedGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := p1^.red > p2^.red;\nend;\n\nfunction IsRedGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := GammaExpansionTab[p^.red] shl RedShift >= v;\nend;\n\nfunction IsGreenGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := p1^.green > p2^.green;\nend;\n\nfunction IsGreenGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := GammaExpansionTab[p^.green] shl GreenShift >= v;\nend;\n\nfunction IsBlueGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := p1^.blue > p2^.blue;\nend;\n\nfunction IsBlueGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := GammaExpansionTab[p^.blue] >= v;\nend;\n\nfunction IsAlphaGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := p1^.alpha > p2^.alpha;\nend;\n\nfunction IsAlphaGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := (p^.alpha + p^.alpha shl 8) shl AlphaShift >= v;\nend;\n\nfunction IsDWordGreater(p1, p2: PBGRAPixel\n  ): boolean;\nbegin\n  result := LongWord(p1^) > LongWord(p2^);\nend;\n\nfunction IsDWordGreaterThanValue(p: PBGRAPixel;\n  v: UInt32): boolean;\nbegin\n  result := LongWord(p^) >= v;\nend;\n\nfunction GetPixelStrictComparer(ADimension: TColorDimension\n  ): TIsChannelStrictlyGreaterFunc;\nbegin\n  case ADimension of\n  cdFast: result := @IsDWordGreater;\n  cdRed: result := @IsRedGreater;\n  cdGreen: result := @IsGreenGreater;\n  cdBlue: result := @IsBlueGreater;\n  cdAlpha: result := @IsAlphaGreater;\n  cdRGB: result := @IsRGBGreater;\n  cdRG: result := @IsRGGreater;\n  cdGB: result := @IsGBGreater;\n  cdRB: result := @IsRBGreater;\n  cdRInvG: result := @IsRInvGGreater;\n  cdGInvB: result := @IsGInvBGreater;\n  cdRInvB: result := @IsRInvBGreater;\n  cdRInvGB: result := @IsRInvGBGreater;\n  cdGInvRB: result := @IsGInvRBGreater;\n  cdBInvRG: result := @IsBInvRGGreater;\n  cdSaturation: result := @IsSaturationGreater;\n  else raise Exception.Create('Unknown dimension');\n  end;\nend;\n\nfunction GetPixelValueComparer(ADimension: TColorDimension\n  ): TIsChannelGreaterThanOrEqualToValueFunc;\nbegin\n  case ADimension of\n  cdFast: result := @IsDWordGreaterThanValue;\n  cdRed: result := @IsRedGreaterThanValue;\n  cdGreen: result := @IsGreenGreaterThanValue;\n  cdBlue: result := @IsBlueGreaterThanValue;\n  cdAlpha: result := @IsAlphaGreaterThanValue;\n  cdRGB: result := @IsRGBGreaterThanValue;\n  cdRG: result := @IsRGGreaterThanValue;\n  cdGB: result := @IsGBGreaterThanValue;\n  cdRB: result := @IsRBGreaterThanValue;\n  cdRInvG: result := @IsRInvGGreaterThanValue;\n  cdGInvB: result := @IsGInvBGreaterThanValue;\n  cdRInvB: result := @IsRInvBGreaterThanValue;\n  cdRInvGB: result := @IsRInvGBGreaterThanValue;\n  cdGInvRB: result := @IsGInvRBGreaterThanValue;\n  cdBInvRG: result := @IsBInvRGGreaterThanValue;\n  cdSaturation: result := @IsSaturationGreaterThanValue;\n  else raise Exception.Create('Unknown dimension');\n  end;\nend;\n\nfunction BGRAColorCount(ABitmap: TBGRACustomBitmap;\n  AAlpha: TAlphaChannelPaletteOption): integer;\nvar\n  box: TBGRAColorBox;\nbegin\n  box := TBGRAColorBox.Create(AllColorDimensions,ABitmap,AAlpha);\n  result := box.ColorCount[True];\n  box.Free;\nend;\n\nconst\n  ApproxPaletteDimensions = [cdAlpha,cdRInvG,cdGInvB,cdRInvB,cdRInvGB,cdGInvRB,cdBInvRG,cdRGB];\n\n{ TBGRAApproxPaletteViaLargerPalette }\n\nfunction TBGRAApproxPaletteViaLargerPalette.FindNearestLargerColorIndex(\n  AValue: TBGRAPixel): integer;\nbegin\n  result := FLarger.FindNearestColorIndex(AValue);\nend;\n\nfunction TBGRAApproxPaletteViaLargerPalette.SlowFindNearestColorIndex(\n  AValue: TBGRAPixel): integer;\nvar diff,curDiff: Int32or64;\n  i: Int32or64;\nbegin\n  if AValue.alpha = 0 then\n  begin\n    result := FTransparentColorIndex;\n    exit;\n  end;\n  diff := BGRAWordDiff(AValue, FColors[0].Color);\n  result := 0;\n  for i := 0 to high(FColors) do\n  begin\n    curDiff := BGRAWordDiff(AValue, FColors[i].Color);\n    if curDiff < diff then\n    begin\n      result := i;\n      diff := curDiff;\n    end;\n  end;\nend;\n\nconstructor TBGRAApproxPaletteViaLargerPalette.Create(\n  const AColors: ArrayOfTBGRAPixel; ALarger: TBGRACustomApproxPalette; ALargerOwned: boolean);\nvar i: integer;\n  largeWeighted: ArrayOfWeightedColor;\nbegin\n  inherited Create(AColors);\n  FTransparentColorIndex:= -1;\n  for i := 0 to high(FColors) do\n  begin\n    FColors[i].Weight := 0;\n    if FColors[i].Color.alpha = 0 then FTransparentColorIndex:= i;\n  end;\n  FLarger := ALarger;\n  FLargerOwned := ALargerOwned;\n  largeWeighted := FLarger.GetAsArrayOfWeightedColor;\n  setlength(FLargerColors, length(largeWeighted));\n  for i := 0 to high(FLargerColors) do\n  with FLargerColors[i] do\n  begin\n    approxColorIndex := SlowFindNearestColorIndex(largeWeighted[i].Color);\n    if approxColorIndex = -1 then\n      approxColor := BGRAPixelTransparent\n    else\n    begin\n      approxColor := FColors[approxColorIndex].Color;\n      inc(FColors[approxColorIndex].Weight, largeWeighted[i].Weight);\n    end;\n  end;\nend;\n\ndestructor TBGRAApproxPaletteViaLargerPalette.Destroy;\nbegin\n  if FLargerOwned then FreeAndNil(FLarger);\n  inherited Destroy;\nend;\n\nfunction TBGRAApproxPaletteViaLargerPalette.FindNearestColor(AValue: TBGRAPixel\n  ): TBGRAPixel;\nvar index: integer;\nbegin\n  index := FindNearestLargerColorIndex(AValue);\n  if index = -1 then\n    result := BGRAPixelTransparent\n  else\n    Result:= FLargerColors[index].approxColor;\nend;\n\nfunction TBGRAApproxPaletteViaLargerPalette.FindNearestColorIndex(\n  AValue: TBGRAPixel): integer;\nvar index: integer;\nbegin\n  index := FindNearestLargerColorIndex(AValue);\n  if index = -1 then\n    result := -1\n  else\n    Result:= FLargerColors[index].approxColorIndex;\nend;\n\nfunction TBGRAApproxPaletteViaLargerPalette.GetAsArrayOfWeightedColor: ArrayOfWeightedColor;\nvar\n  i: Integer;\nbegin\n  setlength(result, length(FColors));\n  for i := 0 to high(FColors) do\n    result[i] := FColors[i];\nend;\n\n{ TBGRAApproxPalette }\n\nfunction TBGRAApproxPalette.GetCount: integer;\nbegin\n  result := length(FColors);\nend;\n\nfunction TBGRAApproxPalette.GetColorByIndex(AIndex: integer): TBGRAPixel;\nbegin\n  if (AIndex < 0) or (AIndex >= length(FColors)) then\n    raise ERangeError.Create('Index out of bounds');\n  result := FColors[AIndex].Color;\nend;\n\nfunction TBGRAApproxPalette.GetWeightByIndex(AIndex: Integer): UInt32;\nbegin\n  if (AIndex < 0) or (AIndex >= length(FColors)) then\n    raise ERangeError.Create('Index out of bounds');\n  result := FColors[AIndex].Weight;\nend;\n\nprocedure TBGRAApproxPalette.Init(const AColors: ArrayOfTBGRAPixel);\nvar\n  weightedColors: ArrayOfWeightedColor;\n  i: Int32or64;\nbegin\n  setlength(weightedColors, length(AColors));\n  for i := 0 to high(weightedColors) do\n  with weightedColors[i] do\n  begin\n    Color := AColors[i];\n    Weight := 1;\n  end;\n  FTree := TBGRAColorTree.Create(TBGRAColorBox.Create(ApproxPaletteDimensions,weightedColors,True),True);\n  FTree.SplitIntoPalette(length(AColors),blApparentInterval,lcAverage);\n\n  FColors := FTree.GetAsArrayOfWeightedColors;\nend;\n\nconstructor TBGRAApproxPalette.Create(const AColors: ArrayOfTBGRAPixel);\nbegin\n  Init(AColors);\nend;\n\nconstructor TBGRAApproxPalette.Create(const AColors: ArrayOfWeightedColor);\nbegin\n  FTree := TBGRAColorTree.Create(TBGRAColorBox.Create(ApproxPaletteDimensions,AColors,True),True);\n  FTree.SplitIntoPalette(length(AColors),blApparentInterval,lcAverage);\n\n  FColors := FTree.GetAsArrayOfWeightedColors;\nend;\n\nconstructor TBGRAApproxPalette.Create(AOwnedSplitTree: TBGRAColorTree);\nbegin\n  FTree := AOwnedSplitTree;\n  FColors := FTree.GetAsArrayOfWeightedColors;\nend;\n\ndestructor TBGRAApproxPalette.Destroy;\nbegin\n  FreeAndNil(FTree);\n  inherited Destroy;\nend;\n\nfunction TBGRAApproxPalette.ContainsColor(AValue: TBGRAPixel): boolean;\nbegin\n  result := (IndexOfColor(AValue)<>-1);\nend;\n\nfunction TBGRAApproxPalette.IndexOfColor(AValue: TBGRAPixel): integer;\nbegin\n  result := FTree.ApproximateColorIndex(AValue);\n  if (result <> -1) and not (LongWord(FColors[result].Color) = LongWord(AValue)) then result := -1;\nend;\n\nfunction TBGRAApproxPalette.FindNearestColor(AValue: TBGRAPixel): TBGRAPixel;\nbegin\n  result := FTree.ApproximateColor(AValue);\nend;\n\nfunction TBGRAApproxPalette.FindNearestColorIndex(AValue: TBGRAPixel): integer;\nbegin\n  result := FTree.ApproximateColorIndex(AValue);\nend;\n\nfunction TBGRAApproxPalette.GetAsArrayOfColor: ArrayOfTBGRAPixel;\nvar\n  i: Int32or64;\nbegin\n  setlength(result, length(FColors));\n  for i := 0 to high(result) do\n    result[i] := FColors[i].Color;\nend;\n\nfunction TBGRAApproxPalette.GetAsArrayOfWeightedColor: ArrayOfWeightedColor;\nvar\n  i: Int32or64;\nbegin\n  if Assigned(FTree) then\n    result := FTree.GetAsArrayOfWeightedColors\n  else\n  begin\n    setlength(result, length(FColors));\n    for i := 0 to high(result) do\n      result[i] := FColors[i];\n  end;\nend;\n\n{ TBGRAColorQuantizer }\n\nprocedure TBGRAColorQuantizer.Init(ABox: TBGRAColorBox);\nbegin\n  FColors := ABox.FColors;\n  if ABox.HasPureTransparentColor then\n  begin\n    setlength(FColors,length(FColors)+1);\n    with FColors[high(FColors)] do\n    begin\n      Color := BGRAPixelTransparent;\n      Weight:= ABox.PureTransparentColorCount;\n    end;\n  end;\n  ABox.FColors := nil;\n  ABox.Free;\n  FReductionColorCount := 256;\n  FReductionKeepContrast := true;\nend;\n\nprocedure TBGRAColorQuantizer.SetReductionColorCount(AValue: Integer);\nbegin\n  if AValue < 1 then AValue := 1;\n  if FReductionColorCount=AValue then Exit;\n  FReductionColorCount:=AValue;\n  FreeAndNil(FPalette);\nend;\n\nprocedure TBGRAColorQuantizer.NormalizeArrayOfColors(\n  AColors: ArrayOfTBGRAPixel; ARedBounds, AGreenBounds, ABlueBounds,\n  AAlphaBounds: TDimensionMinMax; AUniform: boolean);\nvar\n  curRedBounds, curGreenBounds, curBlueBounds, curAlphaBounds: TDimensionMinMax;\n  RedSub,RedMul,RedDiv,RedAdd: UInt32or64;\n  GreenSub,GreenMul,GreenDiv,GreenAdd: UInt32or64;\n  BlueSub,BlueMul,BlueDiv,BlueAdd: UInt32or64;\n  AlphaSub,AlphaMul,AlphaDiv,AlphaAdd: UInt32or64;\n  i: Int32or64;\n  colorBounds: TDimensionMinMax;\nbegin\n  if length(AColors)=0 then exit;\n  if AUniform then\n  begin\n    colorBounds := ABlueBounds;\n    colorBounds.GrowToInclude(AGreenBounds.Minimum shr GreenShift);\n    colorBounds.GrowToInclude(AGreenBounds.Maximum shr GreenShift);\n    colorBounds.GrowToInclude(ARedBounds.Minimum shr RedShift);\n    colorBounds.GrowToInclude(ARedBounds.Maximum shr RedShift);\n    NormalizeArrayOfColors(AColors, colorBounds, AAlphaBounds);\n    exit;\n  end;\n  curRedBounds.SetAsPoint(GetDimensionValue(AColors[0],cdRed));\n  curGreenBounds.SetAsPoint(GetDimensionValue(AColors[0],cdGreen));\n  curBlueBounds.SetAsPoint(GetDimensionValue(AColors[0],cdBlue));\n  curAlphaBounds.SetAsPoint(GetDimensionValue(AColors[0],cdAlpha));\n  for i := 1 to high(AColors) do\n  with AColors[i] do\n  begin\n    curRedBounds.GrowToInclude(GetDimensionValue(AColors[i],cdRed));\n    curGreenBounds.GrowToInclude(GetDimensionValue(AColors[i],cdGreen));\n    curBlueBounds.GrowToInclude(GetDimensionValue(AColors[i],cdBlue));\n    curAlphaBounds.GrowToInclude(GetDimensionValue(AColors[i],cdAlpha));\n  end;\n  RedSub := curRedBounds.Minimum shr RedShift;\n  RedMul := ARedBounds.Size shr RedShift;\n  RedDiv := curRedBounds.Size shr RedShift;\n  RedAdd := ARedBounds.Minimum shr RedShift;\n  if RedDiv = 0 then RedDiv := 1;\n  GreenSub := curGreenBounds.Minimum shr GreenShift;\n  GreenMul := AGreenBounds.Size shr GreenShift;\n  GreenDiv := curGreenBounds.Size shr GreenShift;\n  GreenAdd := AGreenBounds.Minimum shr GreenShift;\n  if GreenDiv = 0 then GreenDiv := 1;\n  BlueSub := curBlueBounds.Minimum;\n  BlueMul := ABlueBounds.Size;\n  BlueDiv := curBlueBounds.Size;\n  BlueAdd := ABlueBounds.Minimum;\n  if BlueDiv = 0 then BlueDiv := 1;\n  AlphaSub := curAlphaBounds.Minimum shr (AlphaShift+8);\n  AlphaMul := AAlphaBounds.Size shr (AlphaShift+8);\n  AlphaDiv := curAlphaBounds.Size shr (AlphaShift+8);\n  AlphaAdd := AAlphaBounds.Minimum shr (AlphaShift+8);\n  if AlphaDiv = 0 then AlphaDiv := 1;\n  for i := 0 to high(AColors) do\n  with AColors[i] do\n  begin\n    red := GammaCompressionTab[((GammaExpansionTab[red]-RedSub)*RedMul+(RedDiv shr 1)) div RedDiv + RedAdd];\n    green := GammaCompressionTab[((GammaExpansionTab[green]-GreenSub)*GreenMul+(GreenDiv shr 1)) div GreenDiv + GreenAdd];\n    blue := GammaCompressionTab[((GammaExpansionTab[blue]-BlueSub)*BlueMul+(BlueDiv shr 1)) div BlueDiv + BlueAdd];\n    alpha := ((alpha-AlphaSub)*AlphaMul+(AlphaDiv shr 1)) div AlphaDiv + AlphaAdd;\n  end;\nend;\n\nprocedure TBGRAColorQuantizer.NormalizeArrayOfColors(\n  AColors: ArrayOfTBGRAPixel; AColorBounds, AAlphaBounds: TDimensionMinMax);\nvar\n  curColorBounds, curAlphaBounds: TDimensionMinMax;\n  ColorSub,ColorMul,ColorDiv,ColorAdd: UInt32or64;\n  AlphaSub,AlphaMul,AlphaDiv,AlphaAdd: UInt32or64;\n  i: Int32or64;\nbegin\n  if length(AColors)=0 then exit;\n  curColorBounds.SetAsPoint(GammaExpansionTab[AColors[0].red]);\n  curColorBounds.GrowToInclude(GammaExpansionTab[AColors[0].green]);\n  curColorBounds.GrowToInclude(GammaExpansionTab[AColors[0].blue]);\n  curAlphaBounds.SetAsPoint(AColors[0].alpha);\n  for i := 1 to high(AColors) do\n  with AColors[i] do\n  begin\n    curColorBounds.GrowToInclude(GammaExpansionTab[red]);\n    curColorBounds.GrowToInclude(GammaExpansionTab[green]);\n    curColorBounds.GrowToInclude(GammaExpansionTab[blue]);\n    curAlphaBounds.GrowToInclude(alpha);\n  end;\n  ColorSub := curColorBounds.Minimum;\n  ColorMul := AColorBounds.Size;\n  ColorDiv := curColorBounds.Size;\n  ColorAdd := AColorBounds.Minimum;\n  if ColorDiv = 0 then ColorDiv := 1;\n  AlphaSub := curAlphaBounds.Minimum;\n  AlphaMul := AAlphaBounds.Size shr 8;\n  AlphaDiv := curAlphaBounds.Size;\n  AlphaAdd := AAlphaBounds.Minimum shr 8;\n  if AlphaDiv = 0 then AlphaDiv := 1;\n  for i := 0 to high(AColors) do\n  with AColors[i] do\n  begin\n    red := GammaCompressionTab[((GammaExpansionTab[red]-ColorSub)*ColorMul+(ColorDiv shr 1)) div ColorDiv + ColorAdd];\n    green := GammaCompressionTab[((GammaExpansionTab[green]-ColorSub)*ColorMul+(ColorDiv shr 1)) div ColorDiv + ColorAdd];\n    blue := GammaCompressionTab[((GammaExpansionTab[blue]-ColorSub)*ColorMul+(ColorDiv shr 1)) div ColorDiv + ColorAdd];\n    alpha := ((alpha-AlphaSub)*AlphaMul+(AlphaDiv shr 1)) div AlphaDiv + AlphaAdd;\n  end;\nend;\n\nfunction TBGRAColorQuantizer.GetSourceColorCount: Integer;\nbegin\n  result := length(FColors);\nend;\n\nfunction TBGRAColorQuantizer.GetReductionColorCount: integer;\nbegin\n  result := FReductionColorCount;\nend;\n\nfunction TBGRAColorQuantizer.GetPalette: TBGRACustomApproxPalette;\nvar\n  tree: TBGRAColorTree;\n\n  procedure MakeTreeErrorDiffusionFriendly;\n  var moreColors: ArrayOfWeightedColor;\n    box: TBGRAColorBox;\n  begin\n    moreColors := tree.GetAsArrayOfWeightedColors;\n    tree.free;\n    box := TBGRAColorBox.Create([cdRed,cdGreen,cdBlue,cdAlpha],moreColors,True);\n    tree := TBGRAColorTree.Create(box,True);\n    tree.SplitIntoPalette(box.ColorCount[true], blApparentInterval, lcAverage);\n  end;\n\nvar\n  originalBox: TBGRAColorBox;\n  colors: ArrayOfTBGRAPixel;\n  bounds: array[TColorDimension] of TDimensionMinMax;\n  nbLarge,nbOriginal: integer;\n\nbegin\n  if not Assigned(FPalette) then\n  if FReductionColorCount >= length(FColors) then\n  begin\n    originalBox := TBGRAColorBox.Create([cdRed,cdGreen,cdBlue,cdAlpha],FColors, False);\n    tree := TBGRAColorTree.Create(originalBox,True);\n    tree.SplitIntoPalette(originalBox.ColorCount[true], blApparentInterval, lcAverage);\n    FPalette := TBGRAApproxPalette.Create(tree);\n  end else\n  begin\n    originalBox := TBGRAColorBox.Create(AllColorDimensions, FColors, False);\n    bounds[cdRed] := originalBox.Bounds[cdRed];\n    bounds[cdGreen] := originalBox.Bounds[cdGreen];\n    bounds[cdBlue] := originalBox.Bounds[cdBlue];\n    bounds[cdAlpha] := originalBox.Bounds[cdAlpha];\n    if originalBox.HasPureTransparentColor then bounds[cdAlpha].Minimum := 0;\n    if FReductionColorCount = 1 then\n    begin\n      setlength(colors,1);\n      colors[0] := originalBox.AverageColor;\n      originalBox.Free;\n      FPalette := TBGRAApproxPalette.Create(colors);\n    end else\n    begin\n      tree := TBGRAColorTree.Create(originalBox,True);\n      if FReductionColorCount <= 64 then\n      begin\n        nbLarge := 128;\n        nbOriginal := originalBox.ColorCount[True];\n        if nbOriginal < 128 then nbLarge:= nbOriginal;\n        colors := tree.SplitIntoPaletteWithSubPalette(nbLarge, blMix,lcMix, FReductionColorCount);\n        MakeTreeErrorDiffusionFriendly;\n        if FReductionColorCount <= 4 then\n          NormalizeArrayOfColors(colors, bounds[cdRed],bounds[cdGreen],bounds[cdBlue],bounds[cdAlpha],true);\n        FPalette := TBGRAApproxPaletteViaLargerPalette.Create(colors, TBGRAApproxPalette.Create(tree), True);\n      end else\n      begin\n        tree.SplitIntoPalette(FReductionColorCount, blMix,lcMix);\n        MakeTreeErrorDiffusionFriendly;\n        FPalette := TBGRAApproxPalette.Create(tree);\n      end;\n    end;\n  end;\n  result := FPalette;\nend;\n\nfunction TBGRAColorQuantizer.GetSourceColor(AIndex: integer): TBGRAPixel;\nbegin\n  if (AIndex < 0) or (AIndex >= length(FColors)) then\n    raise ERangeError.Create('Index out of bounds');\n  result := FColors[AIndex].Color;\nend;\n\nconstructor TBGRAColorQuantizer.Create(APalette: TBGRACustomPalette; ASeparateAlphaChannel: boolean);\nbegin\n  FSeparateAlphaChannel:= ASeparateAlphaChannel;\n  Init(TBGRAColorBox.Create(AllColorDimensions, APalette));\nend;\n\nconstructor TBGRAColorQuantizer.Create(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption);\nbegin\n  FSeparateAlphaChannel:= (AAlpha = acIgnore);\n  Init(TBGRAColorBox.Create(AllColorDimensions, ABitmap, AAlpha));\nend;\n\nconstructor TBGRAColorQuantizer.Create(APalette: TBGRACustomPalette;\n  ASeparateAlphaChannel: boolean; AReductionColorCount: integer);\nbegin\n  FSeparateAlphaChannel:= ASeparateAlphaChannel;\n  Init(TBGRAColorBox.Create(AllColorDimensions, APalette));\n  ReductionColorCount := AReductionColorCount;\nend;\n\nconstructor TBGRAColorQuantizer.Create(ABitmap: TBGRACustomBitmap;\n  AAlpha: TAlphaChannelPaletteOption; AReductionColorCount: integer);\nbegin\n  FSeparateAlphaChannel:= (AAlpha = acIgnore);\n  Init(TBGRAColorBox.Create(AllColorDimensions, ABitmap, AAlpha));\n  ReductionColorCount := AReductionColorCount;\nend;\n\ndestructor TBGRAColorQuantizer.Destroy;\nbegin\n  FreeAndNil(FPalette);\n  inherited Destroy;\nend;\n\nprocedure TBGRAColorQuantizer.ApplyDitheringInplace(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  ABounds: TRect);\nvar task: TDitheringTask;\nbegin\n  task := CreateDitheringTask(AAlgorithm, ABitmap, ReducedPalette, FSeparateAlphaChannel, ABounds);\n  task.Destination := ABitmap;\n  task.Execute;\n  task.Free;\nend;\n\nfunction TBGRAColorQuantizer.GetDitheredBitmap(AAlgorithm: TDitheringAlgorithm;\n  ABitmap: TBGRACustomBitmap; ABounds: TRect): TBGRACustomBitmap;\nvar task: TDitheringTask;\nbegin\n  task := CreateDitheringTask(AAlgorithm, ABitmap, ReducedPalette, FSeparateAlphaChannel, ABounds);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction TBGRAColorQuantizer.GetDitheredBitmapIndexedData(\n  ABitDepth: integer; AByteOrder: TRawImageByteOrder; AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  out AScanlineSize: PtrInt): Pointer;\nvar\n  indexer: TDitheringToIndexedImage;\nbegin\n  indexer := TDitheringToIndexedImage.Create(ReducedPalette, FSeparateAlphaChannel, ABitDepth, AByteOrder);\n  indexer.DefaultTransparentColorIndex := ReducedPalette.IndexOfColor(BGRAPixelTransparent);\n  AScanlineSize:= indexer.ComputeMinimumScanlineSize(ABitmap.Width);\n  result := indexer.DitherImage(AAlgorithm, ABitmap, AScanlineSize);\n  indexer.Free;\nend;\n\nprocedure TBGRAColorQuantizer.SaveBitmapToStream(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  AStream: TStream; AFormat: TBGRAImageFormat);\nvar\n  dithered: TBGRACustomBitmap;\n  hasTransp: boolean;\n  writer: TFPCustomImageWriter;\n  depth: integer;\nbegin\n  dithered := GetDitheredBitmap(AAlgorithm, ABitmap);\n  try\n    ReducedPalette.AssignTo(dithered);\n    hasTransp := dithered.HasTransparentPixels;\n    writer := CreateBGRAImageWriter(AFormat, hasTransp);\n    try\n      if writer is TBGRAWriterPNG then TBGRAWriterPNG(writer).Indexed := true else\n      if writer is TFPWriterBMP then\n      begin\n        if not hasTransp then\n        begin\n          depth := BGRARequiredBitDepth(ReducedPalette);\n          if depth < 8 then\n          begin\n            if depth > 4 then\n              depth := 8\n            else if depth > 1 then\n              depth := 4;\n          end;\n          TFPWriterBMP(writer).BitsPerPixel := depth;\n        end;\n      end;\n      dithered.SaveToStream(AStream, writer);\n    finally\n      writer.Free;\n    end;\n  finally\n    dithered.Free;\n  end;\nend;\n\n{ TBGRAColorTree }\n\nfunction TBGRAColorTree.TrySplitLeaf: boolean;\nvar\n  dim: TColorDimension;\n  box2: TBGRAColorBox;\n  mid: UInt32;\nbegin\n  result := false;\n  if IsLeaf and Assigned(FLeaf) and not FLeaf.PointLike then\n  begin\n    dim := FLeaf.LargestApparentDimension;\n    box2 := FLeaf.MedianCut(dim,mid);\n    if box2 <> nil then\n    begin\n      FInferiorBranch := TBGRAColorTree.Create(FLeaf,True);\n      FSuperiorBranch := TBGRAColorTree.Create(box2,True);\n\n      FInferiorBranch.FMinBorder := FMinBorder;\n      FInferiorBranch.FMaxBorder := FMaxBorder;\n      FSuperiorBranch.FMinBorder := FMinBorder;\n      FSuperiorBranch.FMaxBorder := FMaxBorder;\n      FInferiorBranch.FMaxBorder[dim] := false;\n      FSuperiorBranch.FMinBorder[dim] := false;\n\n      FLeaf := nil;\n      FIsLeaf:= false;\n      FDimension := dim;\n      FPixelValueComparer := GetPixelValueComparer(FDimension);\n      FSuperiorMiddle := mid;\n      result := true;\n    end;\n  end;\nend;\n\nprocedure TBGRAColorTree.ComputeLeavesColor(ALeafColor: TBGRALeafColorMode);\nvar index: integer;\nbegin\n  index := 0;\n  if HasPureTransparentColor then\n  begin\n    FPureTransparentColorIndex:= index;\n    inc(index);\n  end;\n  InternalComputeLeavesColor(ALeafColor,{%H-}index);\nend;\n\nprocedure TBGRAColorTree.InternalComputeLeavesColor(\n  ALeafColor: TBGRALeafColorMode; var AStartIndex: integer);\nvar nbMin,nbMax: Int32or64;\n  c: TColorDimension;\n  extremumColor: TBGRAPixel;\n  extremumColorRelevant: Boolean;\nbegin\n  if IsLeaf then\n  begin\n    FLeafColorIndex := AStartIndex;\n    inc(AStartIndex);\n    if Assigned(FLeaf) then\n    begin\n      if not FLeafColorComputed then\n      begin\n        FLeafColorComputed := true;\n        FCenterColor.alpha:= min(FLeaf.FBounds[cdAlpha].GetCenter shr AlphaShift, 255);\n        FCenterColor.red:= GammaCompressionTab[min(FLeaf.FBounds[cdRed].GetCenter shr RedShift, 65535)];\n        FCenterColor.green:= GammaCompressionTab[min(FLeaf.FBounds[cdGreen].GetCenter shr GreenShift, 65535)];\n        FCenterColor.blue:= GammaCompressionTab[min(FLeaf.FBounds[cdBlue].GetCenter, 65535)];\n        FAverageColor := FLeaf.AverageColorOrMainColor;\n        extremumColor := FAverageColor;\n\n        if ALeafColor in [lcMix,lcExtremum] then\n        begin\n          nbMax := 0;\n          nbMin := 0;\n          for c := succ(low(TColorDimension)) to high(TColorDimension) do\n          begin\n            if FMinBorder[c] then inc(nbMin);\n            if FMaxBorder[c] then inc(nbMax);\n          end;\n\n          if nbMin > nbMax then\n            extremumColor := FLeaf.InferiorColor\n          else if nbMax > nbMin then\n            extremumColor := FLeaf.SuperiorColor;\n        end;\n\n        case ALeafColor of\n        lcAverage,lcMix: FLeafColor := FAverageColor;\n        lcExtremum: FLeafColor := extremumColor;\n        else FLeafColor := FCenterColor;\n        end;\n\n        if ALeafColor = lcMix then\n        begin\n          extremumColorRelevant := false;\n          for c := succ(low(TColorDimension)) to high(TColorDimension) do\n            if UInt32(abs(GetDimensionValue(extremumColor,c) - GetDimensionValue(FLeafColor,c))) >\n               FLeaf.FBounds[c].Size div 7 then\n            begin\n              extremumColorRelevant := true;\n              break;\n            end;\n          if extremumColorRelevant then FLeafColor := extremumColor;\n        end;\n      end;\n    end else\n    begin\n      FLeafColor := BGRAPixelTransparent;\n      FCenterColor := BGRAPixelTransparent;\n    end;\n  end else\n  begin\n    if Assigned(FInferiorBranch) then FInferiorBranch.InternalComputeLeavesColor(ALeafColor, AStartIndex);\n    if Assigned(FSuperiorBranch) then FSuperiorBranch.InternalComputeLeavesColor(ALeafColor, AStartIndex);\n  end;\nend;\n\nprocedure TBGRAColorTree.CheckColorComputed;\nbegin\n  if not FLeafColorComputed then\n    raise exception.Create('Color not computed. Call ComputeLeavesColor first.');\nend;\n\nfunction TBGRAColorTree.ApproximateColor(AColor: TBGRAPixel): TBGRAPixel;\nvar branch: TBGRAColorTree;\nbegin\n  if AColor.alpha = 0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  if IsLeaf then\n  begin\n    CheckColorComputed;\n    result := FLeafColor;\n  end else\n  begin\n    if FPixelValueComparer(@AColor,FSuperiorMiddle) then\n      branch := FSuperiorBranch else branch := FInferiorBranch;\n    if Assigned(branch) then\n      result := branch.ApproximateColor(AColor)\n    else\n      result := BGRAPixelTransparent;\n  end;\nend;\n\nfunction TBGRAColorTree.ApproximateColorIndex(AColor: TBGRAPixel): integer;\nvar branch: TBGRAColorTree;\nbegin\n  if AColor.alpha = 0 then\n  begin\n    result := FPureTransparentColorIndex;\n    exit;\n  end;\n  if IsLeaf then\n  begin\n    CheckColorComputed;\n    result := FLeafColorIndex;\n  end else\n  begin\n    if FPixelValueComparer(@AColor,FSuperiorMiddle) then\n      branch := FSuperiorBranch else branch := FInferiorBranch;\n    if Assigned(branch) then\n      result := branch.ApproximateColorIndex(AColor)\n    else\n      result := FPureTransparentColorIndex;\n  end;\nend;\n\nfunction TBGRAColorTree.GetAsArrayOfApproximatedColors: ArrayOfTBGRAPixel;\nvar a,b: ArrayOfTBGRAPixel;\n  idx,i: integer;\nbegin\n  if IsLeaf then\n  begin\n    CheckColorComputed;\n    setlength(result,1+byte(HasPureTransparentColor));\n    idx := 0;\n    if HasPureTransparentColor then\n    begin\n      result[idx] := BGRAPixelTransparent;\n      inc(idx);\n    end;\n    result[idx] := FLeafColor;\n  end else\n  begin\n    a := FInferiorBranch.GetAsArrayOfApproximatedColors;\n    b := FSuperiorBranch.GetAsArrayOfApproximatedColors;\n    setlength(result, length(a)+length(b)+byte(HasPureTransparentColor));\n    idx := 0;\n    if HasPureTransparentColor then\n    begin\n      result[idx] := BGRAPixelTransparent;\n      inc(idx);\n    end;\n    for i := 0 to high(a) do\n    begin\n      result[idx] := a[i];\n      inc(idx);\n    end;\n    for i := 0 to high(b) do\n    begin\n      result[idx] := b[i];\n      inc(idx);\n    end;\n  end;\nend;\n\nfunction TBGRAColorTree.GetAsArrayOfWeightedColors: ArrayOfWeightedColor;\nvar a,b: ArrayOfWeightedColor;\n  idx,i: integer;\nbegin\n  if IsLeaf then\n  begin\n    CheckColorComputed;\n    setlength(result,1+byte(HasPureTransparentColor));\n    idx := 0;\n    if HasPureTransparentColor then\n    begin\n      result[idx].Color := BGRAPixelTransparent;\n      result[idx].Weight := PureTransparentColorCount;\n      inc(idx);\n    end;\n    result[idx].Color := FLeafColor;\n    result[idx].Weight := Weight;\n  end else\n  begin\n    a := FInferiorBranch.GetAsArrayOfWeightedColors;\n    b := FSuperiorBranch.GetAsArrayOfWeightedColors;\n    setlength(result, length(a)+length(b)+byte(HasPureTransparentColor));\n    idx := 0;\n    if HasPureTransparentColor then\n    begin\n      result[idx].Color := BGRAPixelTransparent;\n      result[idx].Weight := PureTransparentColorCount;\n      inc(idx);\n    end;\n    for i := 0 to high(a) do\n    begin\n      result[idx] := a[i];\n      inc(idx);\n    end;\n    for i := 0 to high(b) do\n    begin\n      result[idx] := b[i];\n      inc(idx);\n    end;\n  end;\nend;\n\nprocedure TBGRAColorTree.SplitIntoPalette(ACount: integer;\n  AMethod: TBiggestLeafMethod; ALeafColor: TBGRALeafColorMode);\nvar nbColors: integer;\n  leaf: TBGRAColorTree;\nbegin\n  nbColors := ApproximatedColorCount;\n  while nbColors < ACount do\n  begin\n    leaf := FindBiggestLeaf(AMethod);\n    if not leaf.TrySplitLeaf then break;\n    inc(nbColors);\n  end;\n  ComputeLeavesColor(ALeafColor);\n  FreeLeaves;\nend;\n\nfunction TBGRAColorTree.SplitIntoPaletteWithSubPalette(ACount: integer;\n  AMethod: TBiggestLeafMethod; ALeafColor: TBGRALeafColorMode;\n  ASubPaletteCount: integer): ArrayOfTBGRAPixel;\nvar nbColors: integer;\n  leaf: TBGRAColorTree;\nbegin\n  result := nil;\n  nbColors := ApproximatedColorCount;\n  if ASubPaletteCount > ACount then ASubPaletteCount:= ACount;\n  if nbColors = ASubPaletteCount then\n  begin\n    ComputeLeavesColor(ALeafColor);\n    result := GetAsArrayOfApproximatedColors;\n  end;\n  while nbColors < ACount do\n  begin\n    leaf := FindBiggestLeaf(AMethod);\n    if not leaf.TrySplitLeaf then break;\n    inc(nbColors);\n    if nbColors = ASubPaletteCount then\n    begin\n      ComputeLeavesColor(ALeafColor);\n      result := GetAsArrayOfApproximatedColors;\n    end;\n  end;\n  ComputeLeavesColor(ALeafColor);\n  FreeLeaves;\nend;\n\nfunction TBGRAColorTree.GetLeafCount: integer;\nbegin\n  if IsLeaf then\n    result := 1\n  else\n  begin\n    result := 0;\n    if Assigned(FInferiorBranch) then inc(result, FInferiorBranch.LeafCount);\n    if Assigned(FSuperiorBranch) then inc(result, FSuperiorBranch.LeafCount);\n  end;\nend;\n\nfunction TBGRAColorTree.GetApproximatedColorCount: integer;\nbegin\n  if IsLeaf then\n    result := 1\n  else\n  begin\n    result := 0;\n    if Assigned(FInferiorBranch) then inc(result, FInferiorBranch.ApproximatedColorCount);\n    if Assigned(FSuperiorBranch) then inc(result, FSuperiorBranch.ApproximatedColorCount);\n  end;\n  if HasPureTransparentColor then inc(result);\nend;\n\nfunction TBGRAColorTree.GetHasPureTransparentColor: boolean;\nbegin\n  result := FPureTransparentColorCount > 0;\nend;\n\nprocedure TBGRAColorTree.Init(ALeaf: TBGRAColorBox; AOwned: boolean);\nvar\n  c: TColorDimension;\nbegin\n  if not AOwned then\n    FLeaf := ALeaf.Duplicate\n  else\n    FLeaf := ALeaf;\n  FLargestApparentInterval:= FLeaf.LargestApparentInterval;\n  FWeight := FLeaf.TotalWeight;\n  FIsLeaf:= true;\n  for c := low(TColorDimension) to high(TColorDimension) do\n  begin\n    FMinBorder[c] := true;\n    FMaxBorder[c] := true;\n  end;\n  FPureTransparentColorCount:= FLeaf.PureTransparentColorCount;\n  FPureTransparentColorIndex:= -1;\nend;\n\nconstructor TBGRAColorTree.Create(ABox: TBGRAColorBox; AOwned: boolean);\nbegin\n  Init(ABox,AOwned);\nend;\n\nconstructor TBGRAColorTree.Create(ADimensions: TColorDimensions; APalette: TBGRACustomPalette);\nbegin\n  Init(TBGRAColorBox.Create(ADimensions, APalette),True);\nend;\n\nconstructor TBGRAColorTree.Create(ADimensions: TColorDimensions; ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption);\nbegin\n  Init(TBGRAColorBox.Create(ADimensions, ABitmap, AAlpha),True);\nend;\n\ndestructor TBGRAColorTree.Destroy;\nbegin\n  FreeAndNil(FInferiorBranch);\n  FreeAndNil(FSuperiorBranch);\n  FreeAndNil(FLeaf);\n  inherited Destroy;\nend;\n\nprocedure TBGRAColorTree.FreeLeaves;\nbegin\n  if IsLeaf then\n    FreeAndNil(FLeaf)\n  else\n  begin\n    if Assigned(FInferiorBranch) then FInferiorBranch.FreeLeaves;\n    if Assigned(FSuperiorBranch) then FSuperiorBranch.FreeLeaves;\n  end;\nend;\n\nfunction TBGRAColorTree.FindBiggestLeaf(AMethod: TBiggestLeafMethod\n  ): TBGRAColorTree;\nvar infLeaf,supLeaf: TBGRAColorTree;\nbegin\n  if IsLeaf then\n    result := self\n  else\n  begin\n    infLeaf := FInferiorBranch.FindBiggestLeaf(AMethod);\n    supLeaf := FSuperiorBranch.FindBiggestLeaf(AMethod);\n    case AMethod of\n    blApparentInterval:\n      if infLeaf.LargestApparentInterval >= supLeaf.LargestApparentInterval then\n        result := infLeaf\n      else\n        result := supLeaf;\n    blWeight:\n      if (infLeaf.LargestApparentInterval > 0) and (infLeaf.Weight >= supLeaf.Weight) then\n        result := infLeaf\n      else\n        result := supLeaf;\n    else{blMix:}\n      if (sqrt(infLeaf.Weight/FWeight)*(infLeaf.LargestApparentInterval/LargestApparentInterval) >=\n          sqrt(supLeaf.Weight/FWeight)*(supLeaf.LargestApparentInterval/LargestApparentInterval) ) then\n        result := infLeaf\n      else\n        result := supLeaf;\n    end;\n  end;\nend;\n\n{ TDimensionMinMax }\n\nfunction TDimensionMinMax.Size: UInt32;\nbegin\n  if Maximum>Minimum then\n    result := Maximum-Minimum\n  else\n    result := 0;\nend;\n\nfunction TDimensionMinMax.Contains(AValue: UInt32): boolean;\nbegin\n  result := (AValue >= Minimum) and (AValue <= Maximum);\nend;\n\nfunction TDimensionMinMax.PointLike: boolean;\nbegin\n  result := (Minimum = Maximum);\nend;\n\nprocedure TDimensionMinMax.SetAsPoint(AValue: UInt32);\nbegin\n  Minimum := AValue;\n  Maximum := AValue;\nend;\n\nfunction TDimensionMinMax.GetCenter: UInt32;\nbegin\n  result := (Minimum+Maximum) shr 1;\nend;\n\nprocedure TDimensionMinMax.GrowToInclude(AValue: UInt32);\nbegin\n  if AValue < Minimum then Minimum := AValue\n  else if AValue > Maximum then Maximum := AValue;\nend;\n\n{ TBGRAColorBox }\n\nfunction TBGRAColorBox.GetApparentInterval(ADimension: TColorDimension): UInt32;\nvar factor: single;\nbegin\n  if not (ADimension in FDimensions) then result := 0\n  else\n  begin\n    factor := 1;\n    case ADimension of\n    cdRGB: factor := 0.7;\n    end;\n    result := round(FBounds[ADimension].Size*factor);\n  end;\nend;\n\nfunction TBGRAColorBox.GetAverageColor: TBGRAPixel;\nvar\n  n:     integer;\n  r, g, b, a: double;\n  cura: double;\n  w: UInt32;\nbegin\n  a := 0;\n  r := 0;\n  g := 0;\n  b := 0;\n  w := 0;\n  for n := 0 to high(FColors) do\n  with FColors[n].Color do\n  begin\n    cura := (alpha / 255)*FColors[n].Weight;\n    IncF(a, cura);\n    IncF(r, GammaExpansionTab[red] * cura);\n    IncF(g, GammaExpansionTab[green] * cura);\n    IncF(b, GammaExpansionTab[blue] * cura);\n    Inc(w, FColors[n].Weight);\n  end;\n  if w = 0 then\n    Result := BGRAPixelTransparent\n  else\n  begin\n    result.alpha := round(a*255/w);\n    if result.alpha = 0 then result := BGRAPixelTransparent\n    else\n    begin\n      result.red := GammaCompressionTab[round(r / a)];\n      result.green := GammaCompressionTab[round(g / a)];\n      result.blue := GammaCompressionTab[round(b / a)];\n    end;\n  end;\nend;\n\nfunction TBGRAColorBox.GetAverageColorOrMainColor: TBGRAPixel;\nvar i: integer;\n  maxWeight: UInt32;\nbegin\n  result := BGRAPixelTransparent;\n  maxWeight:= 0;\n  for i := 0 to high(FColors) do\n    with FColors[i] do\n    begin\n      if Weight > maxWeight then\n      begin\n        maxWeight:= Weight;\n        result := Color;\n      end;\n    end;\n  if maxWeight <= 3*FTotalWeight shr 2 then\n    result := GetAverageColor;\nend;\n\nfunction TBGRAColorBox.GetBounds(ADimension: TColorDimension): TDimensionMinMax;\nbegin\n  result := FBounds[ADimension];\nend;\n\nfunction TBGRAColorBox.GetColorCount(ACountPureTransparent: boolean): integer;\nbegin\n  result := length(FColors);\n  if ACountPureTransparent and HasPureTransparentColor then inc(result);\nend;\n\nfunction TBGRAColorBox.GetHasPureTransparentColor: boolean;\nbegin\n  result := FPureTransparentColorCount > 0;\nend;\n\nfunction TBGRAColorBox.GetInferiorColor: TBGRAPixel;\nvar\n  n:     integer;\n  r, g, b, a: double;\n  w: UInt32;\n  cura: double;\n  wantedWeight: UInt32;\nbegin\n  a := 0;\n  r := 0;\n  g := 0;\n  b := 0;\n  w := 0;\n  wantedWeight:= FTotalWeight div 10;\n  for n := 0 to high(FColors) do\n  with FColors[n].Color do\n  begin\n    cura := (alpha / 255)*FColors[n].Weight;\n    IncF(a, cura);\n    IncF(r, red * cura);\n    IncF(g, green * cura);\n    IncF(b, blue * cura);\n    Inc(w, FColors[n].Weight);\n    if w >= wantedWeight then break;\n  end;\n  if w = 0 then\n    Result := BGRAPixelTransparent\n  else\n  begin\n    result.alpha := round(a*255/w);\n    if result.alpha = 0 then result := BGRAPixelTransparent\n    else\n    begin\n      result.red := round(r / a);\n      result.green := round(g / a);\n      result.blue := round(b / a);\n    end;\n  end;\nend;\n\nfunction TBGRAColorBox.GetLargestApparentDimension: TColorDimension;\nvar c: TColorDimension;\n  curApparentInterval, maxApparentInterval: UInt32;\nbegin\n  c := succ(low(TColorDimension));\n  result := c;\n  maxApparentInterval:= ApparentInterval[c];\n  while c < high(TColorDimension) do\n  begin\n    inc(c);\n    curApparentInterval:= ApparentInterval[c];\n    if curApparentInterval > maxApparentInterval then\n    begin\n      maxApparentInterval:= curApparentInterval;\n      result := c;\n    end;\n  end;\nend;\n\nfunction TBGRAColorBox.GetLargestApparentInterval: UInt32;\nvar\n  curApparentInterval: UInt32;\n  c: TColorDimension;\nbegin\n  result:= ApparentInterval[succ(low(TColorDimension))];\n  for c := succ(succ(low(TColorDimension))) to high(TColorDimension) do\n  begin\n    curApparentInterval:= ApparentInterval[c];\n    if curApparentInterval > result then\n      result := curApparentInterval;\n  end;\nend;\n\nfunction TBGRAColorBox.GetPointLike: boolean;\nvar c: TColorDimension;\nbegin\n  for c := succ(low(TColorDimension)) to high(TColorDimension) do\n    if not FBounds[c].PointLike then\n    begin\n      result := false;\n      exit;\n    end;\n  result := true;\nend;\n\nfunction TBGRAColorBox.GetSuperiorColor: TBGRAPixel;\nvar\n  n:     integer;\n  r, g, b, a: double;\n  w: UInt32;\n  cura: double;\n  wantedWeight: UInt32;\nbegin\n  a := 0;\n  r := 0;\n  g := 0;\n  b := 0;\n  w := 0;\n  wantedWeight:= FTotalWeight div 10;\n  for n := high(FColors) downto 0 do\n  with FColors[n].Color do\n  begin\n    cura := (alpha / 255)*FColors[n].Weight;\n    IncF(a, cura);\n    IncF(r, red * cura);\n    IncF(g, green * cura);\n    IncF(b, blue * cura);\n    Inc(w, FColors[n].Weight);\n    if w >= wantedWeight then break;\n  end;\n  if w = 0 then\n    Result := BGRAPixelTransparent\n  else\n  begin\n    result.alpha := round(a*255/w);\n    if result.alpha = 0 then result := BGRAPixelTransparent\n    else\n    begin\n      result.red := round(r / a);\n      result.green := round(g / a);\n      result.blue := round(b / a);\n    end;\n  end;\nend;\n\nprocedure TBGRAColorBox.Init(AColors: ArrayOfWeightedColor; AOwner: boolean);\nvar\n  i,idx: Int32or64;\n  FirstColor: boolean;\n  c: TColorDimension;\nbegin\n  FPureTransparentColorCount:= 0;\n  FTotalWeight:= 0;\n  for c := low(TColorDimension) to high(TColorDimension) do\n    FBounds[c].SetAsPoint(0);\n  FirstColor := True;\n  if AOwner then\n    FColors := AColors\n  else\n    SetLength(FColors, length(AColors));\n  idx := 0;\n  for i := 0 to high(AColors) do\n  with AColors[i] do\n  begin\n    if Color.alpha > 0 then\n    begin\n      if FirstColor then\n      begin\n        for c := low(TColorDimension) to high(TColorDimension) do\n          FBounds[c].SetAsPoint(GetDimensionValue(Color,c));\n        FirstColor := false;\n      end else\n      begin\n        for c := low(TColorDimension) to high(TColorDimension) do\n          FBounds[c].GrowToInclude(GetDimensionValue(Color,c));\n      end;\n      inc(FTotalWeight, Weight);\n      if not AOwner or (idx <> i) then\n        FColors[idx] := AColors[i];\n      inc(idx);\n    end else\n      inc(FPureTransparentColorCount, Weight);\n  end;\n  setlength(FColors,idx);\nend;\n\nprocedure TBGRAColorBox.SortBy(ADimension: TColorDimension);\nvar comparer: TIsChannelStrictlyGreaterFunc;\nbegin\n  comparer := GetPixelStrictComparer(ADimension);\n  if comparer = nil then exit;\n  ArrayOfWeightedColor_QuickSort(FColors,0,high(FColors),comparer)\nend;\n\nfunction TBGRAColorBox.GetMedianIndex(ADimension: TColorDimension;\n    AMinValue, AMaxValue: UInt32\n  ): integer;\nvar i: integer;\n  sum,goal: UInt32;\n  valueComparer: TIsChannelGreaterThanOrEqualToValueFunc;\n  strictComparer: TIsChannelStrictlyGreaterFunc;\n  ofs: integer;\nbegin\n  if length(FColors) = 1 then\n  begin\n    result := 0;\n    exit;\n  end else\n  if length(FColors) = 0 then\n  begin\n    result := -1;\n    exit;\n  end;\n  valueComparer:= GetPixelValueComparer(ADimension);\n  sum := 0;\n  goal := (FTotalWeight+1) shr 1;\n  result := high(FColors) shr 1;\n  for i := 0 to high(FColors) do\n  begin\n    inc(sum, FColors[i].Weight);\n    if (sum>=goal) and (valueComparer(@FColors[i].Color, AMinValue)) then\n    begin\n      result := i;\n      while (result > 0) and (valueComparer(@FColors[result].Color, AMaxValue+1)) do dec(result);\n      break;\n    end;\n  end;\n  if result = 0 then inc(result);\n  //check that there it is not splitting consecutive colors with the same value\n  strictComparer := GetPixelStrictComparer(ADimension);\n  ofs := 0;\n  while true do\n  begin\n    if (result-ofs < 1) and (result+ofs > high(FColors)) then break;\n    if (result-ofs >= 1) and strictComparer(@FColors[result-ofs].Color,@FColors[result-ofs-1].Color) then\n    begin\n      result := result-ofs;\n      exit;\n    end;\n    if (result+ofs <= high(FColors)) and strictComparer(@FColors[result+ofs].Color,@FColors[result+ofs-1].Color) then\n    begin\n      result := result+ofs;\n      exit;\n    end;\n    inc(ofs);\n  end;\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions; AColors: ArrayOfWeightedColor; AOwner: boolean);\nbegin\n  FDimensions:= ADimensions;\n  Init(AColors,AOwner);\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions;\n  const AColors: ArrayOfTBGRAPixel; AAlpha: TAlphaChannelPaletteOption = acFullChannelInPalette);\nvar weightedColors: ArrayOfWeightedColor;\n  i: Integer;\nbegin\n  if AAlpha = acFullChannelInPalette then\n  begin\n    FDimensions:= ADimensions;\n    setlength(weightedColors, length(AColors));\n    for i := 0 to high(weightedColors) do\n    with weightedColors[i] do\n    begin\n      color := AColors[i];\n      Weight:= 1;\n    end;\n    Init(weightedColors,True);\n  end else\n    Create(ADimensions, @AColors[0], length(AColors), AAlpha);\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions; ABounds: TColorBoxBounds);\nbegin\n  FDimensions:= ADimensions;\n  FBounds := ABounds;\n  FTotalWeight:= 0;\n  FPureTransparentColorCount:= 0;\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions; APalette: TBGRACustomPalette);\nbegin\n  FDimensions:= ADimensions;\n  Init(APalette.GetAsArrayOfWeightedColor,False);\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions;\n  ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption);\nbegin\n  Create(ADimensions, ABitmap.Data, ABitmap.NbPixels, AAlpha);\nend;\n\nconstructor TBGRAColorBox.Create(ADimensions: TColorDimensions; AColors: PBGRAPixel; ANbPixels: integer; AAlpha: TAlphaChannelPaletteOption);\nvar i,j,prev,idx: integer;\n  p: PBGRAPixel;\n  skip: boolean;\n  alphaMask: LongWord;\n  transpIndex: integer;\nbegin\n  if AAlpha <> acFullChannelInPalette then\n    alphaMask := LEtoN($FF000000)\n  else\n    alphaMask := 0;\n  FDimensions:= ADimensions;\n  transpIndex := -1;\n  SetLength(FColors,ANbPixels);\n  if length(FColors)>0 then\n  begin\n    p := AColors;\n    idx := 0;\n    for i := 0 to ANbPixels-1 do\n    begin\n      if (p^.alpha = 0) or ((AAlpha = acTransparentEntry) and (p^.alpha < 128)) then\n      begin\n        skip := true;\n        if not (AAlpha = acIgnore) then\n        begin\n          if (transpIndex=-1) then\n          begin\n            transpIndex := idx;\n            with FColors[idx] do\n            begin\n              Color := BGRAPixelTransparent;\n              Weight:= 1;\n            end;\n            inc(idx);\n          end else\n            inc(FColors[transpIndex].Weight);\n        end;\n        if (p^.alpha = 0) then\n        begin\n          inc(p);\n          continue;\n        end;\n      end;\n      skip := false;\n      for j := idx-1 downto idx-10 do\n        if j < 0 then\n          break\n        else\n        with FColors[j] do\n        if LongWord(Color)=LongWord(p^) or alphaMask then\n        begin\n          skip := true;\n          inc(Weight);\n          break;\n        end;\n      if skip then\n      begin\n        inc(p);\n        continue;\n      end;\n      with FColors[idx] do\n      begin\n        Color := p^;\n        if AAlpha <> acFullChannelInPalette then Color.alpha := 255;\n        Weight := 1;\n        inc(p);\n        inc(idx);\n      end;\n    end;\n    setLength(FColors, idx);\n\n    ArrayOfWeightedColor_QuickSort(FColors,0,high(FColors),@IsDWordGreater);\n    prev := 0;\n    for i := 1 to high(FColors) do\n    begin\n      if LongWord(FColors[i].Color)=LongWord(FColors[prev].Color) then\n        inc(FColors[prev].Weight, FColors[i].Weight)\n      else\n      begin\n        inc(prev);\n        if i <> prev then\n          FColors[prev] := FColors[i];\n      end;\n    end;\n    setlength(FColors, prev+1);\n  end;\n  Init(FColors,True);\nend;\n\nfunction TBGRAColorBox.BoundsContain(AColor: TBGRAPixel): boolean;\nvar c: TColorDimension;\nbegin\n  for c := succ(low(TColorDimension)) to high(TColorDimension) do\n    if not FBounds[c].Contains(GetDimensionValue(AColor,c)) then\n    begin\n      result := false;\n      exit;\n    end;\n  result := true;\nend;\n\nfunction TBGRAColorBox.MedianCut(ADimension: TColorDimension; out SuperiorMiddle: UInt32\n  ): TBGRAColorBox;\nvar idxSplit: Int32or64;\n  secondArray: ArrayOfWeightedColor;\n  i: Int32or64;\nbegin\n  result := nil;\n  SuperiorMiddle := 0;\n  if FBounds[ADimension].PointLike then exit;\n  if length(FColors) <= 1 then exit;\n  SortBy(ADimension);\n  idxSplit := GetMedianIndex(ADimension,\n    round(FBounds[ADimension].Minimum*(1-MedianMinPercentage)+FBounds[ADimension].Maximum*MedianMinPercentage),\n    round(FBounds[ADimension].Minimum*MedianMinPercentage+FBounds[ADimension].Maximum*(1-MedianMinPercentage)));\n  if idxSplit = -1 then exit;\n  setlength(secondArray, length(FColors)-idxSplit);\n  for i := idxSplit to high(FColors) do\n    secondArray[i-idxSplit] := FColors[i];\n  result := TBGRAColorBox.Create(FDimensions, secondArray,True);\n  setlength(FColors, idxSplit);\n  Init(FColors,True);\n  SuperiorMiddle := (FBounds[ADimension].Maximum + result.FBounds[ADimension].Minimum + 1) shr 1;\nend;\n\nfunction TBGRAColorBox.Duplicate: TBGRAColorBox;\nvar\n  i: Int32or64;\nbegin\n  result := TBGRAColorBox.Create(FDimensions, FBounds);\n  result.FTotalWeight := FTotalWeight;\n  setlength(result.FColors, length(FColors));\n  for i := 0 to high(FColors) do\n    result.FColors[i] := FColors[i];\nend;\n\nfunction TBGRAColorBox.GetAsArrayOfColors(AIncludePureTransparent: boolean): ArrayOfTBGRAPixel;\nvar i,idx: integer;\nbegin\n  if AIncludePureTransparent and HasPureTransparentColor then\n  begin\n    setlength(result, length(FColors)+1);\n    result[0] := BGRAPixelTransparent;\n    idx := 1;\n  end else\n  begin\n    setlength(result, length(FColors));\n    idx := 0;\n  end;\n  for i:= 0 to high(FColors) do\n  begin\n    result[idx] := FColors[i].Color;\n    inc(idx);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracompressablebitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Class to temporarily compress bitmaps in memory and serialize it. }\nunit BGRACompressableBitmap;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRABitmap, zstream;\n\ntype\n   {* @abstract(Class to compress and store the compressed image.)\n\n     To use it, create an instance with the bitmap you want\n     to compress. You can then free the original bitmap because\n     TBGRACompressableBitmap contains all information necessary\n     to build it again. To construct again your bitmap, call\n     the GetBitmap function.\n\n     In this implementation, the memory usage grows during\n     the compression process and is lower only after it is\n     finished. So it is recommended to compress one bitmap\n     at a time. }\n   TBGRACompressableBitmap = class\n   private\n     FWidth,FHeight: integer;\n     FCaption: String;\n     FBounds: TRect;\n     FCompressedDataArray: array of TMemoryStream;\n     FUncompressedData: TMemoryStream;\n     FLineOrder: TRawImageLineOrder;\n     FCompressionProgress: Int64;\n     procedure Decompress;\n     procedure FreeData;\n     procedure Init;\n   public\n     CompressionLevel: Tcompressionlevel;\n     constructor Create; overload;\n     constructor Create(Source: TBGRABitmap); overload;\n\n     {** Constructs the bitmap again, decompressing if necessary.\n         After this, the image is not compressed anymore so the\n         memoy usage grows again and the access becomes fast\n         because there is no need to decompress anymore. }\n     function GetBitmap: TBGRABitmap;\n\n     {** Does one step of compression. It does only a part of the\n         work at each call, so you can put it in a loop or in\n         a timer. When it's done, Compress returns false to\n         notify that it did nothing, which means you can\n         stop calling Compress. }\n     function Compress: boolean;\n\n     procedure WriteToStream(AStream: TStream);\n     procedure ReadFromStream(AStream: TStream);\n     \n     function UsedMemory: Int64;\n     procedure Assign(Source: TBGRABitmap);\n     destructor Destroy; override;\n     property Width : Integer read FWidth;\n     property Height: Integer read FHeight;\n     property Caption : string read FCaption write FCaption;\n\n   end;\n\nimplementation\n\nuses BGRAUTF8;\n\n// size of each chunk treated by Compress function\nconst maxPartSize = 524288;\n\n{ TBGRACompressedBitmap }\n\nconstructor TBGRACompressableBitmap.Create;\nbegin\n  Init;\nend;\n\nconstructor TBGRACompressableBitmap.Create(Source: TBGRABitmap);\nbegin\n  Init;\n  Assign(Source);\nend;\n\nfunction TBGRACompressableBitmap.GetBitmap: TBGRABitmap;\nvar UsedPart: TBGRABitmap;\n    UsedNbPixels: Integer;\nbegin\n  Decompress;\n  if FUncompressedData = nil then\n  begin\n    result := nil;\n    exit;\n  end;\n  result := TBGRABitmap.Create(FWidth,FHeight);\n  result.Caption := FCaption;\n  FUncompressedData.Position := 0;\n  if (FBounds.Left <> 0) or (FBounds.Top <> 0)\n    or (FBounds.Right <> FWidth) or (FBounds.Bottom <> FHeight) then\n  begin\n    UsedNbPixels := (FBounds.Right-FBounds.Left)*(FBounds.Bottom-FBounds.Top);\n    if UsedNbPixels > 0 then\n    begin\n      UsedPart := TBGRABitmap.Create(FBounds.Right-FBounds.Left,FBounds.Bottom-FBounds.Top);\n      FUncompressedData.Read(UsedPart.Data^,UsedPart.NbPixels*Sizeof(TBGRAPixel));\n      if UsedPart.LineOrder <> FLineOrder then UsedPart.VerticalFlip;\n      If TBGRAPixel_RGBAOrder then UsedPart.SwapRedBlue;\n      result.PutImage(FBounds.Left,FBounds.Top,UsedPart,dmSet);\n      UsedPart.Free;\n    end;\n  end else\n  begin\n    FUncompressedData.Read(result.Data^,result.NbPixels*Sizeof(TBGRAPixel));\n    if result.LineOrder <> FLineOrder then result.VerticalFlip;\n    If TBGRAPixel_RGBAOrder then result.SwapRedBlue;\n  end;\nend;\n\n{ Returns the total memory used by this object for storing bitmap data }\nfunction TBGRACompressableBitmap.UsedMemory: Int64;\nvar i: integer;\nbegin\n  result := 0;\n  for i := 0 to high(FCompressedDataArray) do\n    inc(result, FCompressedDataArray[i].Size);\n  if FUncompressedData <> nil then inc(result, FUncompressedData.Size);\nend;\n\n{ Do one compress step or return false }\nfunction TBGRACompressableBitmap.Compress: boolean;\nvar comp: Tcompressionstream;\n    partSize: integer;\nbegin\n  if FCompressedDataArray = nil then FCompressionProgress := 0;\n  if (FUncompressedData = nil) or (FUncompressedData.Size = 0) then\n  begin\n    result := false;\n    exit;\n  end;\n  if FCompressionProgress < FUncompressedData.Size then\n  begin\n    setlength(FCompressedDataArray, length(FCompressedDataArray)+1);\n    FCompressedDataArray[high(FCompressedDataArray)] := TMemoryStream.Create;\n    FUncompressedData.Position := FCompressionProgress;\n    if FUncompressedData.Size - FCompressionProgress > maxPartSize then\n      partSize := maxPartSize else\n        partSize := integer(FUncompressedData.Size - FCompressionProgress);\n\n    comp := Tcompressionstream.Create(CompressionLevel,FCompressedDataArray[high(FCompressedDataArray)],true);\n    LEWriteLongint(comp, partSize);\n    comp.CopyFrom(FUncompressedData,partSize);\n    comp.Free;\n    inc(FCompressionProgress, partSize);\n  end;\n  if FCompressionProgress >= FUncompressedData.Size then\n    FreeAndNil(FUncompressedData);\n  result := true;\nend;\n\nprocedure TBGRACompressableBitmap.WriteToStream(AStream: TStream);\nvar i:integer;\nbegin\n  repeat\n  until not Compress;\n  LEWriteLongint(AStream,FWidth);\n  LEWriteLongint(AStream,FHeight);\n  LEWriteLongint(AStream,length(FCaption));\n  AStream.Write(FCaption[1],length(FCaption));\n  if (FWidth=0) or (FHeight = 0) then exit;\n\n  LEWriteLongint(AStream,FBounds.Left);\n  LEWriteLongint(AStream,FBounds.Top);\n  LEWriteLongint(AStream,FBounds.Right);\n  LEWriteLongint(AStream,FBounds.Bottom);\n  LEWriteLongint(AStream,ord(FLineOrder));\n\n  LEWriteLongint(AStream,length(FCompressedDataArray));\n  for i := 0 to high(FCompressedDataArray) do\n  begin\n    LEWriteLongint(AStream,FCompressedDataArray[i].Size);\n    FCompressedDataArray[i].Position := 0;\n    AStream.CopyFrom(FCompressedDataArray[i],FCompressedDataArray[i].Size);\n  end;\nend;\n\nprocedure TBGRACompressableBitmap.ReadFromStream(AStream: TStream);\nvar size,i: integer;\nbegin\n  FreeData;\n  FWidth := LEReadLongint(AStream);\n  FHeight := LEReadLongint(AStream);\n  setlength(FCaption,LEReadLongint(AStream));\n  AStream.Read(FCaption[1],length(FCaption));\n  if (FWidth=0) or (FHeight = 0) then\n  begin\n    FUncompressedData := TMemoryStream.Create;\n    exit;\n  end;\n\n  FBounds.Left := LEReadLongint(AStream);\n  FBounds.Top := LEReadLongint(AStream);\n  FBounds.Right := LEReadLongint(AStream);\n  FBounds.Bottom := LEReadLongint(AStream);\n  FLineOrder := TRawImageLineOrder(LEReadLongint(AStream));\n\n  setlength(FCompressedDataArray,LEReadLongint(AStream));\n  for i := 0 to high(FCompressedDataArray) do\n  begin\n    size := LEReadLongint(AStream);\n    FCompressedDataArray[i] := TMemoryStream.Create;\n    FCompressedDataArray[i].CopyFrom(AStream,size);\n  end;\n\n  if FCompressedDataArray = nil then\n    FUncompressedData := TMemoryStream.Create;\nend;\n\nprocedure TBGRACompressableBitmap.Decompress;\nvar decomp: Tdecompressionstream;\n    i: integer;\n    partSize: integer;\nbegin\n  if (FUncompressedData <> nil) or (FCompressedDataArray = nil) then exit;\n  FUncompressedData := TMemoryStream.Create;\n  for i := 0 to high(FCompressedDataArray) do\n  begin\n    FCompressedDataArray[i].Position := 0;\n    decomp := Tdecompressionstream.Create(FCompressedDataArray[i],true);\n    partSize := LEReadLongint(decomp);\n    FUncompressedData.CopyFrom(decomp,partSize);\n    decomp.Free;\n    FreeAndNil(FCompressedDataArray[i]);\n  end;\n  FCompressedDataArray := nil;\nend;\n\n{ Free all data }\nprocedure TBGRACompressableBitmap.FreeData;\nvar i: integer;\nbegin\n  if FCompressedDataArray <> nil then\n  begin\n    for i := 0 to high(FCompressedDataArray) do\n      FCompressedDataArray[I].Free;\n    FCompressedDataArray := nil;\n  end;\n  if FUncompressedData <> nil then FreeAndNil(FUncompressedData);\nend;\n\nprocedure TBGRACompressableBitmap.Init;\nbegin\n  FUncompressedData := nil;\n  FCompressedDataArray := nil;\n  FWidth := 0;\n  FHeight := 0;\n  FCaption := '';\n  FCompressionProgress := 0;\n  CompressionLevel := clfastest;\nend;\n\n{ Copy a bitmap into this object. As it is copied, you need not\n  keep a copy of the source }\nprocedure TBGRACompressableBitmap.Assign(Source: TBGRABitmap);\nvar\n  UsedPart: TBGRABitmap;\n  NbUsedPixels: integer;\nbegin\n  FreeData;\n  if Source = nil then\n  begin\n    FWidth := 0;\n    FHeight := 0;\n    FCaption := '';\n    exit;\n  end;\n  FWidth := Source.Width;\n  FHeight := Source.Height;\n  FCaption := Source.Caption;\n  FBounds := Source.GetImageBounds([cRed,cGreen,cBlue,cAlpha]);\n  NbUsedPixels := (FBounds.Right-FBounds.Left)*(FBounds.Bottom-FBounds.Top);\n  FUncompressedData := TMemoryStream.Create;\n  if NbUsedPixels = 0 then exit;\n\n  if (FBounds.Left <> 0) or (FBounds.Top <> 0)\n    or (FBounds.Right <> Source.Width) or (FBounds.Bottom <> Source.Height) then\n  begin\n    UsedPart := Source.GetPart(FBounds);\n    If TBGRAPixel_RGBAOrder then UsedPart.SwapRedBlue;\n    FUncompressedData.Write(UsedPart.Data^,NbUsedPixels*Sizeof(TBGRAPixel));\n    FLineOrder := UsedPart.LineOrder;\n    UsedPart.Free;\n  end else\n  begin\n    If TBGRAPixel_RGBAOrder then Source.SwapRedBlue;\n    FUncompressedData.Write(Source.Data^,Source.NbPixels*Sizeof(TBGRAPixel));\n    If TBGRAPixel_RGBAOrder then Source.SwapRedBlue;\n    FLineOrder := Source.LineOrder;\n  end;\nend;\n\ndestructor TBGRACompressableBitmap.Destroy;\nbegin\n  FreeData;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracoordpool3d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Pools of coordinates, to be transformed using SSE instructions, if available }\nunit BGRACoordPool3D;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRABitmapTypes, BGRASSE, BGRAMatrix3D;\n\ntype\n  PBGRACoordData3D = ^TBGRACoordData3D;\n  { 3D coordinate information (can be aligned for SSE) }\n  TBGRACoordData3D = packed record\n    {0} sceneCoord: TPoint3D_128;\n    {16} viewCoord: TPoint3D_128;\n    {32} projectedCoord: TPointF;\n    {40} InvZ: single;\n    {44} used: wordbool; customNormalUsed: wordbool;\n    {48} viewNormal: TPoint3D_128;\n    {64} customNormal: TPoint3D_128;\n  end; {80}\n\n  PBGRANormalData3D = ^TBGRANormalData3D;\n  { 3D normal information (can be aligned for SSE) }\n  TBGRANormalData3D = packed record\n    {0} customNormal: TPoint3D_128;\n    {16} viewNormal: TPoint3D_128;\n    {32} used: longbool;\n    {36} filler1,filler2,filler3: LongWord;\n  end; {48}\n\n  { Array of 3D points for batch computation }\n  TBGRAGenericPool = class\n  private\n    FFirstFree: integer;\n    FNbElements,FCapacity: integer;\n    FElementSize: PtrInt;\n    FUsedCapacity : integer;\n    function GetElement(AIndex: integer): Pointer;\n    procedure SetCapacity(ACapacity: integer);\n  protected\n    FPoolData: TMemoryBlockAlign128;\n    function GetUsed({%H-}AElement: integer): boolean; virtual;\n    procedure SetUsed({%H-}AElement: integer; {%H-}AUsed: boolean); virtual;\n    procedure Remove(AIndex: integer); //does not work if GetUsed/SetUsed are not implemented\n  public\n    constructor Create(ACapacity: integer; AElementSize: integer);\n    destructor Destroy; override;\n    function Add: integer;\n    property Element[AIndex: integer]: Pointer read GetElement;\n    property Capacity: integer read FCapacity;\n    property UsedCapacity: integer read FUsedCapacity;\n  end;\n\n  { Array of 3D coordinates for batch computation }\n  TBGRACoordPool3D = class(TBGRAGenericPool)\n  private\n    function GetCoordData(AIndex: integer): PBGRACoordData3D;\n  protected\n    function GetUsed(AElement: integer): boolean; override;\n    procedure SetUsed(AElement: integer; AUsed: boolean); override;\n  public\n    procedure Remove(AIndex: integer);\n    constructor Create(ACapacity: integer);\n    procedure ComputeWithMatrix(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\n    property CoordData[AIndex: integer]: PBGRACoordData3D read GetCoordData;\n  end;\n\n  { Array of 3D normals for batch computation }\n  TBGRANormalPool3D = class(TBGRAGenericPool)\n  private\n    function GetNormalData(AIndex: integer): PBGRANormalData3D;\n  protected\n    function GetUsed(AElement: integer): boolean; override;\n    procedure SetUsed(AElement: integer; AUsed: boolean); override;\n  public\n    procedure Remove(AIndex: integer);\n    constructor Create(ACapacity: integer);\n    procedure ComputeWithMatrix(const AMatrix: TMatrix3D);\n    property NormalData[AIndex: integer]: PBGRANormalData3D read GetNormalData;\n  end;\n\nimplementation\n\n{ TBGRAGenericPool }\n\nfunction TBGRAGenericPool.GetElement(AIndex: integer): Pointer;\nbegin\n  result := Pointer(PByte(FPoolData.Data)+AIndex*FElementSize);\nend;\n\nprocedure TBGRAGenericPool.SetCapacity(ACapacity: integer);\nvar NewPoolData: TMemoryBlockAlign128;\nbegin\n  if FCapacity <> ACapacity then\n  begin\n    if ACapacity = 0 then\n      FreeAndNil(FPoolData)\n    else\n    begin\n      NewPoolData := TMemoryBlockAlign128.Create(ACapacity*FElementSize);\n      if FCapacity <> 0 then\n      begin\n        //previous block is smaller\n        if FCapacity < ACapacity then\n        begin\n          move(FPoolData.Data^, NewPoolData.Data^, FCapacity*FElementSize);\n          //pad with zeros\n          fillchar((pbyte(NewPoolData.Data)+FCapacity*FElementSize)^,(ACapacity-FCapacity)*FElementSize,0);\n        end\n        else //previous block is greater or equal\n          move(FPoolData.Data^, NewPoolData.Data^, ACapacity*FElementSize);\n        FreeAndNil(FPoolData);\n      end else\n       //clear new block\n        fillchar(pbyte(NewPoolData.Data)^,ACapacity*FElementSize,0);\n\n      FPoolData := NewPoolData;\n    end;\n    FCapacity:= ACapacity;\n  end;\nend;\n\nfunction TBGRAGenericPool.GetUsed(AElement: integer): boolean;\nbegin\n  result := false;\nend;\n\nprocedure TBGRAGenericPool.SetUsed(AElement: integer; AUsed: boolean);\nbegin\n  //nothing\nend;\n\nconstructor TBGRAGenericPool.Create(ACapacity: integer; AElementSize: integer);\nbegin\n  FCapacity := 0;\n  FPoolData := nil;\n  FNbElements:= 0;\n  FFirstFree := 0;\n  FUsedCapacity := 0;\n  FElementSize:= AElementSize;\n  SetCapacity(ACapacity);\nend;\n\ndestructor TBGRAGenericPool.Destroy;\nbegin\n  FreeAndNil(FPoolData);\n  FCapacity := 0;\n  FNbElements:= 0;\n  FFirstFree := 0;\n  FUsedCapacity := 0;\n  inherited Destroy;\nend;\n\nprocedure TBGRAGenericPool.Remove(AIndex: integer);\nbegin\n  if (AIndex < 0) or (AIndex >= FUsedCapacity) then\n    raise ERangeError.Create('Index out of bounds');\n  if GetUsed(AIndex) then\n  begin\n    SetUsed(AIndex, false);\n    if AIndex < FFirstFree then FFirstFree := AIndex;\n    if AIndex = FUsedCapacity-1 then\n    begin\n      while (FUsedCapacity > 0) and not GetUsed(FUsedCapacity-1) do\n        dec(FUsedCapacity);\n    end;\n  end;\nend;\n\nfunction TBGRAGenericPool.Add: integer;\nbegin\n  //check for free space\n  while FFirstFree < FCapacity do\n  begin\n    if not GetUsed(FFirstFree) then\n    begin\n      SetUsed(FFirstFree,True);\n      result := FFirstFree;\n      inc(FFirstFree);\n      if FFirstFree > FUsedCapacity then\n        FUsedCapacity := FFirstFree;\n      exit;\n    end;\n    inc(FFirstFree);\n  end;\n\n  //no free space\n  SetCapacity(FCapacity*2+8);\n  SetUsed(FFirstFree, true);\n  result := FFirstFree;\n  inc(FFirstFree);\n  if FFirstFree > FUsedCapacity then\n    FUsedCapacity := FFirstFree;\nend;\n\n{ TBGRACoordPool3D }\n\nconstructor TBGRACoordPool3D.Create(ACapacity: integer);\nbegin\n  inherited Create(ACapacity,SizeOf(TBGRACoordData3D));\nend;\n\nprocedure TBGRACoordPool3D.ComputeWithMatrix(const AMatrix: TMatrix3D;\n  const AProjection: TProjection3D);\nvar\n  P: PBGRACoordData3D;\n  I: Int32or64;\nbegin\n  if UsedCapacity = 0 then exit;\n  P := PBGRACoordData3D(FPoolData.Data);\n  {$IFDEF CPUI386}\n  {$IFDEF BGRASSE_AVAILABLE}\n  {$asmmode intel}\n  if UseSSE then\n  begin\n    Matrix3D_SSE_Load(AMatrix);\n    asm\n      mov eax,[AProjection]\n      movups xmm4,[eax]\n      xorps xmm1,xmm1\n    end;\n    i := UsedCapacity;\n    if UseSSE3 then\n    begin\n      while i > 0 do\n      with P^ do\n      begin\n        if used then\n        begin\n          MatrixMultiplyVect3D_SSE3_Aligned(sceneCoord,viewCoord);\n          if viewCoord.z > 0 then\n          begin\n            asm\n              mov eax, P\n              movaps xmm3, [eax+16] //viewCoord\n              movaps xmm2,xmm3\n              shufps xmm2,xmm3,2+8+32+128\n              rcpps xmm2,xmm2  //xmm2 = InvZ\n              movss [eax+40],xmm2 //-> InvZ\n\n              mulps xmm3,xmm4  //xmm3 *= Projection.Zoom\n              mulps xmm3,xmm2  //xmm3 *= InvZ\n\n              movhlps xmm0,xmm4  //xmm0 = Projection.Center\n              addps xmm3,xmm0  //xmm3 += Projection.Center\n\n              movlps [eax+32],xmm3 //->projectedCoord\n              movaps [eax+48],xmm1 //->normal\n            end;\n          end else\n          asm\n            mov eax, P\n            movlps [eax+32],xmm1  //0->projectedCoord\n            movaps [eax+48],xmm1 //->normal\n          end;\n          if customNormalUsed then\n            MatrixMultiplyVect3DWithoutTranslation_SSE3_Aligned(customNormal,viewNormal);\n        end;\n        dec(i);\n        inc(p);\n      end;\n    end else\n    begin\n      while i > 0 do\n      with P^ do\n      begin\n        if used then\n        begin\n          MatrixMultiplyVect3D_SSE_Aligned(sceneCoord,viewCoord);\n          if viewCoord.z > 0 then\n          begin\n            asm\n              mov eax, P\n              movaps xmm3, [eax+16] //viewCoord\n              movaps xmm2,xmm3\n              shufps xmm2,xmm3,2+8+32+128\n              rcpps xmm2,xmm2  //xmm2 = InvZ\n              movss [eax+40],xmm2 //-> InvZ\n\n              mulps xmm3,xmm4  //xmm3 *= Projection.Zoom\n              mulps xmm3,xmm2  //xmm3 *= InvZ\n\n              movhlps xmm0,xmm4  //xmm0 = Projection.Center\n              addps xmm3,xmm0  //xmm3 += Projection.Center\n\n              movlps [eax+32],xmm3 //->projectedCoord\n              movaps [eax+48],xmm1 //->normal\n            end;\n          end else\n          asm\n            mov eax, P\n            movlps [eax+32],xmm1  //0 ->projectedCoord\n            movaps [eax+48],xmm1 //->normal\n          end;\n          if customNormalUsed then\n            MatrixMultiplyVect3DWithoutTranslation_SSE_Aligned(customNormal,viewNormal);\n        end;\n        dec(i);\n        inc(p);\n      end;\n    end;\n  end\n  else\n  {$ENDIF}\n  {$ENDIF}\n  begin\n    i := UsedCapacity;\n    while i > 0 do\n    with P^ do\n    begin\n      if used then\n      begin\n        viewCoord := AMatrix*sceneCoord;\n        if customNormalUsed then\n          viewNormal := MultiplyVect3DWithoutTranslation(AMatrix,customNormal)\n        else\n          ClearPoint3D_128(viewNormal);\n        if viewCoord.z > 0 then\n        begin\n          InvZ := 1/viewCoord.z;\n          projectedCoord := PointF(viewCoord.x*InvZ*AProjection.Zoom.x + AProjection.Center.x,\n                                   viewCoord.y*InvZ*AProjection.Zoom.Y + AProjection.Center.y);\n        end else\n          projectedCoord := PointF(0,0);\n      end;\n      dec(i);\n      inc(p);\n    end;\n  end;\nend;\n\nfunction TBGRACoordPool3D.GetCoordData(AIndex: integer): PBGRACoordData3D;\nbegin\n  result := PBGRACoordData3D(FPoolData.Data)+AIndex;\nend;\n\nfunction TBGRACoordPool3D.GetUsed(AElement: integer): boolean;\nbegin\n  Result:= CoordData[AElement]^.used;\nend;\n\nprocedure TBGRACoordPool3D.SetUsed(AElement: integer; AUsed: boolean);\nbegin\n  CoordData[AElement]^.used := AUsed;\nend;\n\nprocedure TBGRACoordPool3D.Remove(AIndex: integer);\nbegin\n  inherited Remove(AIndex);\nend;\n\n{ TBGRANormalPool3D }\n\nfunction TBGRANormalPool3D.GetNormalData(AIndex: integer): PBGRANormalData3D;\nbegin\n  result := PBGRANormalData3D(FPoolData.Data)+AIndex;\nend;\n\nfunction TBGRANormalPool3D.GetUsed(AElement: integer): boolean;\nbegin\n  Result:= NormalData[AElement]^.used;\nend;\n\nprocedure TBGRANormalPool3D.SetUsed(AElement: integer; AUsed: boolean);\nbegin\n  NormalData[AElement]^.used := AUsed;\nend;\n\nprocedure TBGRANormalPool3D.Remove(AIndex: integer);\nbegin\n  inherited Remove(AIndex);\nend;\n\nconstructor TBGRANormalPool3D.Create(ACapacity: integer);\nbegin\n  inherited Create(ACapacity,SizeOf(TBGRANormalData3D));\nend;\n\nprocedure TBGRANormalPool3D.ComputeWithMatrix(const AMatrix: TMatrix3D);\nvar\n  P: PBGRANormalData3D;\n  I: Int32or64;\nbegin\n  if UsedCapacity = 0 then exit;\n  P := PBGRANormalData3D(FPoolData.Data);\n  {$IFDEF CPUI386}\n  {$IFDEF BGRASSE_AVAILABLE}\n  {$asmmode intel}\n  if UseSSE then\n  begin\n    Matrix3D_SSE_Load(AMatrix);\n    i := UsedCapacity;\n    if UseSSE3 then\n    begin\n      while i > 0 do\n      with P^ do\n      begin\n        if used then\n          MatrixMultiplyVect3DWithoutTranslation_SSE3_Aligned(customNormal,viewNormal);\n        dec(i);\n        inc(p);\n      end;\n    end else\n    begin\n      while i > 0 do\n      with P^ do\n      begin\n        if used then\n          MatrixMultiplyVect3DWithoutTranslation_SSE_Aligned(customNormal,viewNormal);\n        dec(i);\n        inc(p);\n      end;\n    end;\n  end\n  else\n  {$ENDIF}\n  {$ENDIF}\n  begin\n    i := UsedCapacity;\n    while i > 0 do\n    with P^ do\n    begin\n      if used then\n        viewNormal := MultiplyVect3DWithoutTranslation(AMatrix,customNormal);\n      dec(i);\n      inc(p);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgracustombitmap.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n{=== TBGRACustomBitmap ===}\n\n  { TBGRACustomBitmap }\n  {* @abstract(Base class for TBGRABitmap.)\n\n     It is the direct parent of TBGRADefaultBitmap class, which is the parent of the diverse\n     implementations. A bitmap can be used as a scanner using the IBGRAScanner interface.\n  }\n  TBGRACustomBitmap = class(specialize TGenericUniversalBitmap<TBGRAPixel,TBGRAPixelColorspace>,IBGRAScanner)\n  protected\n    FXorMask: TBGRACustomBitmap;\n\n    { accessors to properies }\n     procedure SetXorMask(AValue: TBGRACustomBitmap);\n\n     function GetAverageColor: TColor; virtual; abstract;\n     function GetAveragePixel: TBGRAPixel; virtual; abstract;\n\n     //FreePascal drawing routines\n     {$IFDEF BGRABITMAP_USE_FPCANVAS}function GetCanvasFP: TFPImageCanvas; virtual; abstract;{$ENDIF}\n     function GetCanvasDrawModeFP: TDrawMode; virtual; abstract;\n     procedure SetCanvasDrawModeFP(const AValue: TDrawMode); virtual; abstract;\n\n     //GUI bitmap object\n     function GetBitmap: TBitmap; virtual; abstract;\n     function GetCanvas: TCanvas; virtual; abstract;\n     function GetCanvasOpacity: byte; virtual; abstract;\n     procedure SetCanvasOpacity(AValue: byte); virtual; abstract;\n     function GetCanvasAlphaCorrection: boolean; virtual; abstract;\n     procedure SetCanvasAlphaCorrection(const AValue: boolean); virtual; abstract;\n\n     procedure Init; override;\n     function InternalNew: TBGRACustomBitmap; override;\n\n     procedure InternalArc(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false; ATexture: IBGRAScanner = nil); overload;\n     procedure InternalArc(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false; ATexture: IBGRAScanner = nil); overload; virtual; abstract;\n     procedure InternalArcInRect(r: TRect; StartAngleRad,EndAngleRad: Single; ABorderColor : TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false; ATexture: IBGRAScanner = nil);\n     procedure InternalFillArcInRect(r: TRect; StartAngleRad,EndAngleRad: Single; AFillColor: TBGRAPixel; AOptions: TArcOptions; ATexture: IBGRAScanner = nil);\n     procedure InternalTextOutOffset(x, y: single; const sUTF8: string; AColor: TBGRAPixel; ATexture: IBGRAScanner; AOffsets: array of TPointF); virtual; abstract;\n\n  public\n     {** Resample filter is used when resizing the bitmap. See [[BGRABitmap Miscellaneous types#Images and resampling|resampling types]] }\n     ResampleFilter : TResampleFilter;\n\n     {** Scan interpolation filter is used when the bitmap is used\n         as a scanner (interface ''IBGRAScanner'') }\n     ScanInterpolationFilter: TResampleFilter;\n     ScanMaskChannel: TChannel;\n\n     {** Cursor position for mouse pointer }\n     HotSpot: TPoint;\n\n     { ** Free reference to xor mask }\n     procedure DiscardXorMask; virtual;\n     { ** Allocate xor mask }\n     procedure NeedXorMask; virtual;\n     {** Xor mask to be applied when image is drawn }\n     property XorMask: TBGRACustomBitmap read FXorMask write SetXorMask;\n\n     {** Average color of the image }\n     property AverageColor: TColor Read GetAverageColor;\n     {** Average color (including alpha) of the image }\n     property AveragePixel: TBGRAPixel Read GetAveragePixel;\n\n     {** Canvas compatible with FreePascal }\n     {$IFDEF BGRABITMAP_USE_FPCANVAS}property CanvasFP: TFPImageCanvas read GetCanvasFP;{$ENDIF}\n\n     {** Draw mode to used when image is access using FreePascal functions\n         and ''Colors'' property }\n     property CanvasDrawModeFP: TDrawMode read GetCanvasDrawModeFP write SetCanvasDrawModeFP;\n\n     {** Bitmap in a format compatible with the current GUI.\n         Don't forget to call ''InvalidateBitmap'' before using it\n         if you changed something with direct pixel access (''Scanline''\n         and ''Data'') }\n     property Bitmap: TBitmap Read GetBitmap;\n     {** Canvas provided by the GUI }\n     property Canvas: TCanvas Read GetCanvas;\n     {** Opacity to apply to changes made using GUI functions, provided\n         ''CanvasAlphaCorrection'' is set to ''True'' }\n     property CanvasOpacity: byte Read GetCanvasOpacity Write SetCanvasOpacity;\n     {** Specifies if the alpha values must be corrected after GUI access\n         to the bitmap }\n     property CanvasAlphaCorrection: boolean Read GetCanvasAlphaCorrection Write SetCanvasAlphaCorrection;\n\n  protected {----------- pen style accessors ----------------}\n     function GetPenJoinStyle: TPenJoinStyle; virtual; abstract;\n     procedure SetPenJoinStyle(const AValue: TPenJoinStyle); virtual; abstract;\n     function GetPenMiterLimit: single; virtual; abstract;\n     procedure SetPenMiterLimit(const AValue: single); virtual; abstract;\n     function GetPenStyle: TPenStyle; virtual; abstract;\n     procedure SetPenStyle(const AValue: TPenStyle); virtual; abstract;\n     function GetCustomPenStyle: TBGRAPenStyle; virtual; abstract;\n     procedure SetCustomPenStyle(const AValue: TBGRAPenStyle); virtual; abstract;\n\n     function GetArrowEndRepeat: integer; virtual; abstract;\n     function GetArrowStartRepeat: integer; virtual; abstract;\n     procedure SetArrowEndRepeat(AValue: integer); virtual; abstract;\n     procedure SetArrowStartRepeat(AValue: integer); virtual; abstract;\n     function GetArrowEndOffset: single; virtual; abstract;\n     function GetArrowStartOffset: single; virtual; abstract;\n     procedure SetArrowEndOffset(AValue: single); virtual; abstract;\n     procedure SetArrowStartOffset(AValue: single); virtual; abstract;\n     function GetArrowEndSize: TPointF; virtual; abstract;\n     function GetArrowStartSize: TPointF; virtual; abstract;\n     procedure SetArrowEndSize(AValue: TPointF); virtual; abstract;\n     procedure SetArrowStartSize(AValue: TPointF); virtual; abstract;\n\n  public {----------- pen style ----------------}\n     {** How to join segments. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]] }\n     property JoinStyle: TPenJoinStyle read GetPenJoinStyle Write SetPenJoinStyle;\n     {** Limit for the extension of the segments when joining them\n         with ''pjsMiter'' join style, expressed in multiples of the width\n         of the pen }\n     property JoinMiterLimit: single read GetPenMiterLimit Write SetPenMiterLimit;\n     {** Pen style. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]] }\n     property PenStyle: TPenStyle read GetPenStyle Write SetPenStyle;\n     {** Custom pen style. See [[BGRABitmap Geometry types|geometric types]] }\n     property CustomPenStyle: TBGRAPenStyle read GetCustomPenStyle write SetCustomPenStyle;\n\n     {** Size of arrows at the start of the line }\n     property ArrowStartSize: TPointF read GetArrowStartSize write SetArrowStartSize;\n     {** Size of arrows at the end of the line }\n     property ArrowEndSize: TPointF read GetArrowEndSize write SetArrowEndSize;\n     {** Offset of the arrow from the start of the line }\n     property ArrowStartOffset: single read GetArrowStartOffset write SetArrowStartOffset;\n     {** Offset of the arrow from the end of the line }\n     property ArrowEndOffset: single read GetArrowEndOffset write SetArrowEndOffset;\n     {** Number of times to repeat the starting arrow }\n     property ArrowStartRepeat: integer read GetArrowStartRepeat write SetArrowStartRepeat;\n     {** Number of times to repeat the ending arrow }\n     property ArrowEndRepeat: integer read GetArrowEndRepeat write SetArrowEndRepeat;\n\n     procedure ArrowStartAsNone; virtual; abstract;\n     procedure ArrowStartAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); virtual; abstract;\n     procedure ArrowStartAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); virtual; abstract;\n     procedure ArrowStartAsTail; virtual; abstract;\n\n     procedure ArrowEndAsNone; virtual; abstract;\n     procedure ArrowEndAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); virtual; abstract;\n     procedure ArrowEndAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); virtual; abstract;\n     procedure ArrowEndAsTail; virtual; abstract;\n\n  protected {-------------------font style accessors------------------------}\n     function GetFontAntialias: Boolean;\n     procedure SetFontAntialias(const AValue: Boolean);\n     function GetFontRenderer: TBGRACustomFontRenderer; virtual; abstract;\n     procedure SetFontRenderer(AValue: TBGRACustomFontRenderer); virtual; abstract;\n     function GetFontHeight: integer; virtual; abstract;\n     procedure SetFontHeight(AHeight: integer); virtual; abstract;\n     function GetFontFullHeight: integer; virtual; abstract;\n     procedure SetFontFullHeight(AHeight: integer); virtual; abstract;\n     function GetFontVerticalAnchorOffset: single; virtual; abstract;\n     function GetFontPixelMetric: TFontPixelMetric; virtual; abstract;\n\n     function GetFontRightToLeftFor(AText: string): boolean;\n\n  public {-------------------font style------------------------}\n     {** Specifies the font to use. Unless the font renderer accept otherwise,\n         the name is in human readable form, like 'Arial', 'Times New Roman', ... }\n     FontName: string;\n     {** Specifies the set of styles to be applied to the font.\n         These can be ''fsBold'', ''fsItalic'', ''fsStrikeOut'', ''fsUnderline''.\n         So the value [''fsBold'',''fsItalic''] means that the font must be bold and italic.\n         See [[BGRABitmap Miscellaneous types|miscellaneous types]] }\n     FontStyle: TFontStyles;\n\n     {** Specifies the quality of rendering. Default value is ''fqSystem''.\n         See [[BGRABitmap Miscellaneous types|miscellaneous types]] }\n     FontQuality : TBGRAFontQuality;\n\n     {** Specifies the rotation of the text, for functions that support text rotation.\n         It is expressed in tenth of degrees, positive values going counter-clockwise. }\n     FontOrientation: integer;\n\n     {** Specifies how the font is vertically aligned relative to the start coordinate.\n         See [[BGRABitmap Miscellaneous types|miscellaneous types]]}\n     FontVerticalAnchor: TFontVerticalAnchor;\n\n     {** Specifies the base direction of the text (cf Unicode). By default, it is\n         automatically determined by the first strongly oriented character.\n         You can specify another base direction here however it is not taken\n         into account by the LCL on Linux. }\n     FontBidiMode: TFontBidiMode;\n\n     {** Specifies the height of the font in pixels without taking into account\n         additional line spacing. A negative value means that it is the\n         full height instead (see below) }\n     property FontHeight: integer Read GetFontHeight Write SetFontHeight;\n\n     {** Specifies the height of the font in pixels, taking into account the\n         additional line spacing defined for the font }\n     property FontFullHeight: integer read GetFontFullHeight write SetFontFullHeight;\n\n     {** Simplified property to specify the quality (see ''FontQuality'') }\n     property FontAntialias: Boolean read GetFontAntialias write SetFontAntialias;\n\n     property FontVerticalAnchorOffset: single read GetFontVerticalAnchorOffset;\n\n     {** Returns measurement for the current font in pixels }\n     property FontPixelMetric: TFontPixelMetric read GetFontPixelMetric;\n\n     {** Specifies the font renderer. When working with the LCL,\n         by default it is an instance of ''TLCLFontRenderer'' of\n         unit ''BGRAText''. Other renderers are provided in ''BGRATextFX''\n         unit and ''BGRAVectorize'' unit. Additionally, ''BGRAFreeType''\n         provides a renderer independent from the LCL.\n       *\n       * Once you assign a renderer, it will automatically be freed when\n         the bitmap is freed. The renderers may provide additional styling\n         for the font, not accessible with the properties in this class\n       *\n       * See [[BGRABitmap tutorial Font rendering|font rendering]]}\n     property FontRenderer: TBGRACustomFontRenderer read GetFontRenderer write SetFontRenderer;\n\n  public\n     constructor Create(AFPImage: TFPCustomImage; ACopyProperties: Boolean=False); overload; virtual; abstract;\n     constructor Create(ABitmap: TBitmap); overload; virtual; abstract;\n     { @abstract(Create an instance and load an image from a file.)\n\n**Example of loading and displaying an image on a form:**\n\n```pascal\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  image := TBGRABitmap.Create('image.png');\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  image.free;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nbegin\n  image.Draw(Canvas, 0, 0, True); // assume image is opaque\nend;\n```}\n     constructor Create(ABitmap: TBitmap; AUseTransparent: boolean); overload; virtual; abstract;\n     constructor Create(AFilename: string); overload; virtual; abstract;\n     constructor Create(AFilename: string; AIsUtf8Filename: boolean); overload; virtual; abstract;\n     constructor Create(AFilename: string; AIsUtf8Filename: boolean; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n     constructor Create(AStream: TStream); overload; virtual; abstract;\n\n     function NewBitmap: TBGRACustomBitmap; overload; override;\n     function NewBitmap(AWidth, AHeight: integer): TBGRACustomBitmap; overload; override;\n     function NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel): TBGRACustomBitmap; overload; override;\n     function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TBGRACustomBitmap; overload; override;\n     function NewBitmap(Filename: string): TBGRACustomBitmap; overload; virtual; abstract;\n     function NewBitmap(Filename: string; AIsUtf8: boolean): TBGRACustomBitmap; overload; virtual; abstract;\n     function NewBitmap(Filename: string; AIsUtf8: boolean; AOptions: TBGRALoadingOptions): TBGRACustomBitmap; overload; virtual; abstract;\n     function NewBitmap(AFPImage: TFPCustomImage): TBGRACustomBitmap; overload; virtual; abstract;\n\n     procedure LoadFromStream(AStream: TStream; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); override;\n\n     {==== Reference counting ====}\n\n     {** Adds a reference (this reference count is not the same as\n         the reference count of an interface, it changes only by\n         explicit calls) }\n     function NewReference: TBGRACustomBitmap; override;\n     {** Returns an object with a reference count equal to 1. Duplicate\n         this bitmap if necessary }\n     function GetUnique: TBGRACustomBitmap; override;\n     function Duplicate(DuplicateProperties: Boolean = False): TBGRACustomBitmap; overload; override;\n     function Duplicate(DuplicateProperties, DuplicateXorMask: Boolean): TBGRACustomBitmap; overload; virtual;\n     procedure CopyPropertiesTo(ABitmap: TCustomUniversalBitmap); override;\n     function GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TBGRACustomBitmap; override;\n\n     function CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor, ABackgroundColor: TBGRAPixel;\n                 AWidth: integer = 8; AHeight: integer = 8; APenWidth: single = 1): TBGRACustomBitmap; override;\n\n     {** Can only be called with an existing instance of ''TBGRACustomBitmap''.\n         Sets the dimensions of an existing ''TBGRACustomBitmap'' instance. }\n     procedure SetSize(AWidth, AHeight: integer); override;\n\n     {==== Retrieve image from system ====}\n\n     {** Gets the content of the specified device context }\n     procedure LoadFromDevice(DC: HDC); overload; virtual; abstract;\n     {** Gets the content from the specified rectangular area of a device context }\n     procedure LoadFromDevice(DC: HDC; ARect: TRect); overload; virtual; abstract;\n     {** Fills the content with a screenshot of the primary monitor }\n     procedure TakeScreenshotOfPrimaryMonitor; virtual; abstract;\n     {** Fills the content with a screenshot of the specified rectangular area of the desktop\n         (it can be from any screen) }\n     procedure TakeScreenshot(ARect: TRect); virtual; abstract;\n     {** For more methods, see derived class [[TBGRABitmap class|TBGRABitmap]] }\n\n     {==== Drawing functions ====}\n\n     {Pixel functions}\n     procedure SetPixel(x, y: int32or64; c: TColor); overload; virtual; abstract;\n     procedure XorPixel(x, y: int32or64; const c: TBGRAPixel); overload; virtual; abstract;\n     procedure DrawPixel(x, y: int32or64; const c: TBGRAPixel; ADrawMode: TDrawMode); overload; override;\n     procedure FastBlendPixel(x, y: int32or64; const c: TBGRAPixel); virtual; abstract;\n     function GetPixel256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TBGRAPixel; virtual; abstract;\n     function GetPixel(x, y: single; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TBGRAPixel; overload; virtual; abstract;\n     function GetPixelCycle(x, y: single; AResampleFilter: TResampleFilter = rfLinear): TBGRAPixel; overload; virtual; abstract;\n     function GetPixelCycle(x, y: single; AResampleFilter: TResampleFilter; repeatX: boolean; repeatY: boolean): TBGRAPixel; overload; virtual; abstract;\n     function GetPixelCycle256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter = rfLinear): TBGRAPixel; overload; virtual; abstract;\n     function GetPixelCycle256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter; repeatX: boolean; repeatY: boolean): TBGRAPixel; overload; virtual; abstract;\n\n     {Line primitives}\n     procedure XorHorizLine(x, y, x2: int32or64; c: TBGRAPixel); virtual; abstract;\n     procedure DrawHorizLine(x, y, x2: int32or64; ec: TExpandedPixel); overload; virtual; abstract;\n     procedure DrawHorizLine(x, y, x2: int32or64; texture: IBGRAScanner); overload;\n     procedure FastBlendHorizLine(x, y, x2: int32or64; c: TBGRAPixel); virtual; abstract;\n     procedure DrawHorizLineDiff(x, y, x2: int32or64; c, compare: TBGRAPixel; maxDiff: byte); virtual; abstract;\n     procedure HorizLineDiff(x, y, x2: int32or64; const ABrush: TUniversalBrush; ACompare: TBGRAPixel; AMaxDiffW: word); virtual; abstract;\n\n     procedure XorVertLine(x, y, y2: int32or64; c: TBGRAPixel); virtual; abstract;\n     procedure DrawVertLine(x, y, y2: int32or64; c: TBGRAPixel); virtual; abstract;\n     procedure FastBlendVertLine(x, y, y2: int32or64; c: TBGRAPixel); virtual; abstract;\n\n     {==== Rectangles, ellipses and path (floating point coordinates) ====}\n     {* These functions use the current pen style/cap/join. The parameter ''w''\n        specifies the width of the line and the base unit for dashes\n      * The coordinates are pixel-centered, so that when filling a rectangle,\n        if the supplied values are integers, the border will be half transparent.\n        If you want the border to be completely filled, you can subtract/add\n        0.5 to the coordinates to include the remaining thin border.\n        See [[BGRABitmap tutorial 13|coordinate system]]. }\n\n     {==== Multi-shape fill ====}\n\n     {** Draws and fill a polyline using current pen style/cap/join in one go.\n         The stroke is stricly over the fill even if partially transparent.\n         ''fillcolor'' specifies a color to fill the polygon formed by the points }\n     procedure DrawPolyLineAntialias(const points: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload; virtual; abstract;\n     {** Draws a filled polygon using current pen style/cap/join in one go.\n         The stroke is stricly over the fill even if partially transparent.\n         The polygon is always closed. You don't need to set the last point\n         to be the same as the first point. }\n     procedure DrawPolygonAntialias(const points: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload; virtual; abstract;\n\n     procedure EllipseAntialias(x, y, rx, ry: single; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; virtual; abstract;\n     procedure EllipseAntialias(AOrigin, AXAxis, AYAxis: TPointF; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; virtual; abstract;\n\n     procedure DrawPath(APath: IBGRAPath; AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner); overload; virtual; abstract;\n\n     procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner); overload; virtual; abstract;\n     procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner); overload; virtual; abstract;\n\n     {==== Gradient/textured polygons ====}\n\n     procedure FillTriangleLinearColor(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel); overload; virtual; abstract;\n     procedure FillTriangleLinearColorAntialias(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel); overload; virtual; abstract;\n     procedure FillTriangleLinearMapping(pt1,pt2,pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF; TextureInterpolation: Boolean= True); overload; virtual; abstract;\n     {$IFNDEF BGRABITMAP_CORE}{ Fills a triangle with linear mapping of a texture and lightness }\n     procedure FillTriangleLinearMappingLightness(pt1,pt2,pt3: TPointF; texture: IBGRAScanner;\n                 tex1, tex2, tex3: TPointF; light1,light2,light3: word;\n                 TextureInterpolation: Boolean= True); overload; virtual; abstract; {$ENDIF}\n     procedure FillTriangleLinearMappingAntialias(pt1,pt2,pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF); overload; virtual; abstract;\n\n     procedure FillQuadLinearColor(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TBGRAPixel); overload; virtual; abstract;\n     procedure FillQuadLinearColorAntialias(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TBGRAPixel); overload; virtual; abstract;\n     procedure FillQuadLinearMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; TextureInterpolation: Boolean= True; ACulling: TFaceCulling = fcNone; ACropToPolygon: boolean = true); overload; virtual; abstract;\n     {$IFNDEF BGRABITMAP_CORE}{ Fills a quadrilateral with linear mapping and lightness }\n     procedure FillQuadLinearMappingLightness(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner;\n                 tex1, tex2, tex3, tex4: TPointF; light1,light2,light3,light4: word;\n                 TextureInterpolation: Boolean= True); overload; virtual; abstract;{$ENDIF}\n     procedure FillQuadLinearMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACulling: TFaceCulling = fcNone); overload; virtual; abstract;\n     procedure FillQuadPerspectiveMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual; abstract;\n     procedure FillQuadPerspectiveMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACleanBorders: TRect; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual; abstract;\n     procedure FillQuadPerspectiveMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF); overload; virtual; abstract;\n     procedure FillQuadPerspectiveMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACleanBorders: TRect); overload; virtual; abstract;\n     procedure FillQuadAffineMapping(Orig,HAxis,VAxis: TPointF; AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean = true; ADrawMode: TDrawMode = dmDrawWithTransparency; AOpacity: byte = 255); virtual; abstract;\n     procedure FillQuadAffineMappingAntialias(Orig,HAxis,VAxis: TPointF; AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean = true; AOpacity: byte = 255); virtual; abstract;\n\n     procedure FillEllipseLinearColorAntialias(x, y, rx, ry: single; outercolor, innercolor: TBGRAPixel); overload; virtual; abstract;\n     procedure FillEllipseLinearColorAntialias(AOrigin, AXAxis, AYAxis: TPointF; outercolor, innercolor: TBGRAPixel); overload; virtual; abstract;\n\n     {$IFNDEF BGRABITMAP_CORE}\n     procedure FillPolyLinearColor(const points: array of TPointF; AColors: array of TBGRAPixel);  overload; virtual; abstract;\n     { @abstract(Fills a polygon with a texture that is linearly mapped.)\n\n**Example filling a trapeze with a texture:**\n\n@image(../doc/img/fillpolylinearmapping.png)\n\n```pascal\nprocedure TForm1.PaintImage;\nvar image: TBGRABitmap;\n    tex: TBGRABitmap;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  tex:= TBGRABitmap.Create('image.png');\n  image.FillPolyLinearMapping( [PointF(110,10), PointF(250,10), PointF(350,160), PointF(10,160)], tex,\n             [PointF(0,0), PointF(tex.width-1,0), PointF(tex.Width-1,tex.Height-1), PointF(0,tex.Height-1)], true);\n  tex.Free;\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```}\n     procedure FillPolyLinearMapping(const points: array of TPointF; texture: IBGRAScanner; texCoords: array of TPointF; TextureInterpolation: Boolean); overload; virtual; abstract;\n     procedure FillPolyLinearMappingLightness(const points: array of TPointF; texture: IBGRAScanner; texCoords: array of TPointF; lightnesses: array of word; TextureInterpolation: Boolean); overload; virtual; abstract;\n     { @abstract(Fills a polygon with a texture that is mapped with perspective.)\n\n**Example filling a trapeze with a texture:**\n\n@image(../doc/img/fillpolyperspectivemapping.png)\n\n```pascal\nprocedure TForm1.PaintImage;\nvar image: TBGRABitmap;\n    tex: TBGRABitmap;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  tex:= TBGRABitmap.Create('image.png');\n  image.FillPolyPerspectiveMapping( [PointF(110,10), PointF(250,10), PointF(350,160), PointF(10,160)],\n                                    [75,             75,             50,              50],\n       tex, [PointF(0,0), PointF(tex.width-1,0), PointF(tex.Width-1,tex.Height-1), PointF(0,tex.Height-1)], true);\n  tex.Free;\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```}\n     procedure FillPolyPerspectiveMapping(const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner; texCoords: array of TPointF; TextureInterpolation: Boolean; zbuffer: psingle = nil); overload; virtual; abstract;\n     procedure FillPolyPerspectiveMappingLightness(const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner; texCoords: array of TPointF; lightnesses: array of word; TextureInterpolation: Boolean; zbuffer: psingle = nil); overload; virtual; abstract;\n     {$ENDIF}\n\n     procedure Arc(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; w: single; ADrawChord: boolean; AFillColor: TBGRAPixel); overload;\n     procedure Arc(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; w: single; ADrawChord: boolean; AFillColor: TBGRAPixel); overload;\n     procedure FillChord(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AFillColor: TBGRAPixel); overload;\n     procedure FillChord(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AFillColor: TBGRAPixel); overload;\n     procedure FillChord(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; texture: IBGRAScanner); overload;\n     procedure FillChord(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; texture: IBGRAScanner); overload;\n     procedure FillChordInRect(const ARect: TRect; StartAngleRad,EndAngleRad: Single; AFillColor: TBGRAPixel); overload;\n     procedure FillChordInRect(const ARect: TRect; StartAngleRad,EndAngleRad: Single; texture: IBGRAScanner); overload;\n\n     procedure Pie(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel); overload;\n     procedure Pie(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel); overload;\n     procedure FillPie(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; AFillColor: TBGRAPixel); overload;\n     procedure FillPie(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; AFillColor: TBGRAPixel); overload;\n     procedure FillPie(cx,cy,rx,ry: single; const StartPoint,EndPoint: TPointF; texture: IBGRAScanner); overload;\n     procedure FillPie(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; texture: IBGRAScanner); overload;\n     procedure FillPieInRect(const ARect: TRect; StartAngleRad,EndAngleRad: Single; AFillColor: TBGRAPixel); overload;\n     procedure FillPieInRect(const ARect: TRect; StartAngleRad,EndAngleRad: Single; texture: IBGRAScanner); overload;\n\n     procedure RectangleAntialias(x, y, x2, y2: single; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; virtual; abstract;\n     procedure RectangleWithin(x1,y1,x2,y2: single; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; APixelCenteredCoordinates: boolean = true); overload;\n     procedure RectangleWithin(r: TRect; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel); overload;\n\n     procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; c: TBGRAPixel; w: single; options: TRoundRectangleOptions = []); overload; virtual; abstract;\n     procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; pencolor: TBGRAPixel; w: single; fillcolor: TBGRAPixel; options: TRoundRectangleOptions = []); overload; virtual; abstract;\n     procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; penTexture: IBGRAScanner; w: single; fillTexture: IBGRAScanner; options: TRoundRectangleOptions = []); overload; virtual; abstract;\n     procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; texture: IBGRAScanner; w: single; options: TRoundRectangleOptions = []); overload; virtual; abstract;\n\n     {** Fills completely a rectangle, without any border, with the\n         specified ''texture'' and with the specified ''mode'' and optional dithering algorithm }\n     procedure FillRect(r: TRect; texture: IBGRAScanner; mode: TDrawMode; ditheringAlgorithm: TDitheringAlgorithm); overload; virtual;\n     procedure FillRect(r: TRect; texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm); overload; virtual;\n     procedure FillRect(x, y, x2, y2: integer; texture: IBGRAScanner; mode: TDrawMode; ditheringAlgorithm: TDitheringAlgorithm); overload; virtual;\n     procedure FillRect(x, y, x2, y2: integer; texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm); overload; virtual; abstract;\n\n     procedure TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single); overload; virtual; abstract;\n     procedure TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single); overload; virtual; abstract;\n     procedure TextOutCurved(APath: IBGRAPath; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single); overload; virtual;\n     procedure TextOutCurved(APath: IBGRAPath; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single); overload; virtual;\n     procedure TextRect(ARect: TRect; x, y: integer; const sUTF8: string; style: TTextStyle; c: TBGRAPixel); overload; virtual; abstract;\n     procedure TextRect(ARect: TRect; x, y: integer; const sUTF8: string; style: TTextStyle; texture: IBGRAScanner); overload; virtual; abstract;\n\n     {$IFNDEF BGRABITMAP_CORE}\n     { Draw text taking into account line endings, filling it with a solid color }\n     procedure TextMultiline(x,y: single; const sUTF8: string; c: TBGRAPixel;\n       AAlign: TBidiTextAlignment = btaLeftJustify; AVertAlign: TTextLayout = tlTop; AParagraphSpacing: single = 0); overload;\n     { Draw text taking into account line endings, filling it with a texture }\n     procedure TextMultiline(x,y: single; const sUTF8: string; ATexture: IBGRAScanner;\n       AAlign: TBidiTextAlignment = btaLeftJustify; AVertAlign: TTextLayout = tlTop; AParagraphSpacing: single = 0); overload;\n     { Draw text with line breaks, filling it with a solid color }\n     procedure TextMultiline(ALeft,ATop,AWidth: single; const sUTF8: string; c: TBGRAPixel;\n       AAlign: TBidiTextAlignment = btaNatural; AVertAlign: TTextLayout = tlTop; AParagraphSpacing: single = 0); overload; virtual; abstract;\n     { Draw text with line breaks, filling it with a texture }\n     procedure TextMultiline(ALeft,ATop,AWidth: single; const sUTF8: string; ATexture: IBGRAScanner;\n       AAlign: TBidiTextAlignment = btaNatural; AVertAlign: TTextLayout = tlTop; AParagraphSpacing: single = 0); overload; virtual; abstract;\n     {$ENDIF}\n\n     function TextSize(const sUTF8: string): TSize; overload; virtual; abstract;\n     function TextAffineBox(const sUTF8: string): TAffineBox; virtual; abstract;\n     function TextSize(const sUTF8: string; AMaxWidth: integer): TSize; overload; virtual; abstract;\n     function TextSize(const sUTF8: string; AMaxWidth: integer; ARightToLeft: boolean): TSize; overload; virtual; abstract;\n     function TextFitInfo(const sUTF8: string; AMaxWidth: integer): integer; virtual; abstract;\n     {$IFNDEF BGRABITMAP_CORE}{ Returns the total size of the string provided using the current font\n                                and taking into account line breaks. }\n     function TextSizeMultiline(const sUTF8: string; AMaxWidth: single = EmptySingle;\n                 AParagraphSpacing: single = 0): TSize; virtual; abstract;{$ENDIF}\n\n     { Draw the UTF8 encoded string, (_x_, _y_) being the top-left corner. The color _c_ or texture is used to fill the text.\n       The value of FontOrientation is taken into account, so that the text may be rotated.\n\n**Example drawing text on a form:**\n\n@image(../doc/img/textout.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  c: TBGRAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, clBtnFace);\n  c := clBtnText; //retrieve default text color\n\n  image.FontHeight := 30;\n  image.FontAntialias := true;\n  image.FontStyle := [fsBold];\n  image.TextOut (5, 5, 'Hello world', c);\n  image.SetPixel (5, 5, c);\n\n  image.free;\nend;\n```}\n     procedure TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel); overload; virtual;\n     { Draw the UTF8 encoded string, (_x_, _y_) is the top reference point with the chosen alignment.\n       If left-aligned, this will be the top-left corner.\n       If right-aligned, the top-right corner.\n       The color _c_ or texture is used to fill the text.\n       The value of FontOrientation is taken into account, so that the text may be rotated.\n\n**Example drawing text on a form:**\n\n@image(../doc/img/textout-align.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  c: TBGRAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, clBtnFace);\n  c := clBtnText; //retrieve default text color\n\n  image.FontHeight := 30;\n  image.FontAntialias := true;\n  image.FontStyle := [fsBold];\n  image.TextOut(ClientWidth-5,5, 'Hello world', c, taRightJustify);\n  image.SetPixel(ClientWidth-5,5, c);\n\n  image.free;\nend;\n```}\n     procedure TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel; ARightToLeft: boolean); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; c: TColor); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; c: TColor; ARightToLeft: boolean); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; texture: IBGRAScanner); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; texture: IBGRAScanner; ARightToLeft: boolean); overload; virtual;\n     procedure TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; virtual; abstract;\n     procedure TextOut(x, y: single; const sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; virtual; abstract;\n     procedure TextOut(x, y: single; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single); overload; virtual; abstract;\n     procedure TextOut(x, y: single; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single); overload; virtual; abstract;\n\n     procedure TextOutOffset(x, y: single; const sUTF8: string; AColor: TBGRAPixel; AOffset: array of TPointF); overload; virtual;\n     procedure TextOutOffset(x, y: single; const sUTF8: string; ATexture: IBGRAScanner; AOffset: array of TPointF); overload; virtual;\n\n     { Overrides the font orientation with the parameter orientationTenthDegCCW }\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel); overload; virtual;\n     { Draw the UTF8 encoded string with specified orientation (positive values will make the text go upwards).\n       (_x_, _y_) is the top reference point with the chosen alignment.\n       If left-aligned, this will be the top-left corner.\n       If right-aligned, the top-right corner.\n       The color _c_ or texture is used to fill the text.\n\n**Example drawing text on a form:**\n\n@image(../doc/img/textoutangle.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  c: TBGRAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, clBtnFace);\n  c := clBtnText; //retrieve default text color\n\n  image.FontHeight := 30;\n  image.FontAntialias := true;\n  image.FontStyle := [fsBold];\n  image.TextOutAngle(30,5, -450, 'Hello world', c, taLeftJustify);\n  image.SetPixel(30,5,c);\n\n  image.free;\nend;\n```}\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; virtual;\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; virtual; abstract;\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner); overload; virtual;\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; virtual;\n     procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; virtual; abstract;\n\n     { Draw the UTF8 encoded string in the rectangle _ARect_. Text is wrapped if necessary.\n       The position depends on the specified horizontal alignment _halign_ and\n       vertical alignement _valign_.\n       The color _c_ or _texture_ is used to fill the text. No rotation is applied.\n\n**Example drawing wrapped text on a form:**\n\n@image(../doc/img/textrect-align.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  c: TBGRAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, clBtnFace);\n  c := clBtnText; //retrieve default text color\n\n  image.FontHeight := 30;\n  image.FontAntialias := true;\n  image.FontStyle := [fsBold];\n  image.TextRect(rect(5,5, ClientWidth-5,ClientHeight-5),\n                 'This is a text that should be word wrapped',taCenter,tlCenter,c);\n  image.Rectangle(rect(5,5, ClientWidth-5,ClientHeight-5), c, dmSet);\n\n  image.free;\nend;\n```}\n     procedure TextRect(ARect: TRect; const sUTF8: string; halign: TAlignment; valign: TTextLayout; c: TBGRAPixel); overload; virtual;\n     procedure TextRect(ARect: TRect; const sUTF8: string; halign: TAlignment; valign: TTextLayout; texture: IBGRAScanner); overload; virtual;\n\n     //-------------------------- computing path ------------------------------------\n\n     { @abstract(Compute an closed spline passing by the given points.)\n\n**Example of drawing a spline on a form:**\n\n@image(../doc/img/computeclosedspline.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  pts: array of TPointF;\n  storedSpline: array of TPointF;\n  c: TBGRAPixel;\nbegin\n    image := TBGRABitmap.Create(ClientWidth, ClientHeight, clBtnFace);\n    c := clWindowText;\n\n    //rectangular polyline\n    setlength(pts,4);\n    pts[0] := PointF(50,50);\n    pts[1] := PointF(150,50);\n    pts[2] := PointF(150,150);\n    pts[3] := PointF(50,150);\n    image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);\n\n    //compute spline points and draw as a polyline\n    storedSpline := image.ComputeClosedSpline(pts,ssVertexToSide);\n    image.DrawPolylineAntialias(storedSpline,c,1);\n\n    image.Draw(Canvas,0,0,True);\n    image.free;\nend;\n```}\n     function ComputeClosedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF; virtual; abstract;\n\n     { @abstract(Compute an opened spline passing by the given points.)\n\n**Example of drawing a spline on a form:**\n\n@image(../doc/img/computeopenedspline.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  pts: array of TPointF;\n  storedSpline: array of TPointF;\n  c: TBGRAPixel;\nbegin\n    image := TBGRABitmap.Create(ClientWidth, ClientHeight, clBtnFace);\n    c := clWindowText;\n\n    //rectangular polyline\n    setlength(pts,4);\n    pts[0] := PointF(50,50);\n    pts[1] := PointF(150,50);\n    pts[2] := PointF(150,150);\n    pts[3] := PointF(50,150);\n    image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);\n\n    //compute spline points and draw as a polyline\n    storedSpline := image.ComputeOpenedSpline(pts,ssVertexToSide);\n    image.DrawPolylineAntialias(storedSpline,c,1);\n\n    image.Draw(Canvas,0,0,True);\n    image.free;\nend;\n```}\n     function ComputeOpenedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF; virtual; abstract;\n     function ComputeBezierCurve(const curve: TCubicBezierCurve): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeBezierCurve(const curve: TQuadraticBezierCurve): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeBezierSpline(const spline: array of TCubicBezierCurve): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeBezierSpline(const spline: array of TQuadraticBezierCurve): ArrayOfTPointF; overload; virtual; abstract;\n\n     {can be accessed via Pen property}\n     function ComputeWidePolyline(const points: array of TPointF; w: single): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeWidePolyline(const points: array of TPointF; w: single; ClosedCap: boolean): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeWidePolygon(const points: array of TPointF; w: single): ArrayOfTPointF; virtual; abstract;\n\n     function ComputeEllipse(x,y,rx,ry: single): ArrayOfTPointF; overload; deprecated;\n     function ComputeEllipse(x,y,rx,ry,w: single): ArrayOfTPointF; overload; deprecated;\n     function ComputeEllipseContour(x,y,rx,ry: single; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeEllipseContour(AOrigin, AXAxis, AYAxis: TPointF; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeEllipseBorder(x,y,rx,ry,w: single; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeEllipseBorder(AOrigin, AXAxis, AYAxis: TPointF; w: single; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeArc65536(x,y,rx,ry: single; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; virtual; abstract;\n     function ComputeArcRad(x,y,rx,ry: single; startRad,endRad: single; quality: single = 1): ArrayOfTPointF; virtual; abstract;\n     function ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; options: TRoundRectangleOptions; quality: single = 1): ArrayOfTPointF; overload; virtual; abstract;\n     function ComputePie65536(x,y,rx,ry: single; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; virtual; abstract;\n     function ComputePieRad(x,y,rx,ry: single; startRad,endRad: single; quality: single = 1): ArrayOfTPointF; virtual; abstract;\n\n     {Filling}\n\n     // compatibility: take into account ClipRect\n     procedure Fill(texture: IBGRAScanner); overload; virtual;\n     procedure Fill(texture: IBGRAScanner; mode: TDrawMode); overload; override;\n\n     procedure Fill(c: TBGRAPixel; start, Count: integer); overload; virtual; abstract;\n     procedure DrawPixels(c: TBGRAPixel; start, Count: integer); virtual; abstract;\n     procedure AlphaFill(alpha: byte; start, Count: integer); overload; virtual; abstract;\n     procedure ReplaceColor(before, after: TColor); overload; virtual; abstract;\n     procedure ReplaceColor(ARect: TRect; before, after: TColor); overload; virtual; abstract;\n     procedure FloodFill(X, Y: integer; Color: TBGRAPixel;\n       mode: TFloodfillMode; Tolerance: byte = 0); overload; virtual;\n     procedure FloodFill(X, Y: integer; const Brush: TUniversalBrush;\n       Progressive: boolean; ToleranceW: Word = $00ff); overload; virtual;\n     procedure ParallelFloodFill(X, Y: integer; Dest: TCustomUniversalBitmap; Color: TBGRAPixel;\n       mode: TFloodfillMode; Tolerance: byte = 0; DestOfsX: integer = 0; DestOfsY: integer = 0); overload; virtual; abstract;\n     procedure ParallelFloodFill(X, Y: integer; Dest: TCustomUniversalBitmap; const Brush: TUniversalBrush;\n       Progressive: boolean; ToleranceW: Word = $00ff; DestOfsX: integer = 0; DestOfsY: integer = 0); overload; virtual; abstract;\n     procedure GradientFill(x, y, x2, y2: integer; c1, c2: TBGRAPixel;\n       gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n       gammaColorCorrection: boolean = True; Sinus: Boolean=False;\n       ditherAlgo: TDitheringAlgorithm = daNearestNeighbor); overload; virtual; abstract;\n     procedure GradientFill(x, y, x2, y2: integer; gradient: TBGRACustomGradient;\n       gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n       Sinus: Boolean=False;\n       ditherAlgo: TDitheringAlgorithm = daNearestNeighbor); overload; virtual; abstract;\n\n     {Canvas drawing functions}\n     procedure DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n       AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); virtual; abstract;\n     procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; AData: Pointer;\n       ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); virtual; abstract;\n     procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); virtual; abstract;\n     procedure Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean = True); overload; virtual; abstract;\n     procedure Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean = True); overload; virtual; abstract;\n     procedure DrawPart(ARect: TRect; ACanvas: TCanvas; x, y: integer; Opaque: boolean); overload; virtual;\n     procedure DrawPart(ARect: TRect; ACanvas: TCanvas; ATargetRect: TRect; Opaque: boolean); overload; virtual;\n     function GetPtrBitmap(Top,Bottom: Integer): TBGRACustomBitmap; virtual; abstract;\n     function MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean = False): TBitmap; virtual; abstract;\n\n     {BGRA bitmap functions}\n     procedure CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadePosition: byte; mode: TDrawMode = dmDrawWithTransparency); overload; virtual; abstract;\n     procedure CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadeMask: IBGRAScanner; mode: TDrawMode = dmDrawWithTransparency); overload; virtual; abstract;\n     procedure PutImage(x, y: integer; Source: TBitmap; mode: TDrawMode; AOpacity: byte = 255); overload;\n     procedure StretchPutImage(ARect: TRect; Source: TBitmap; mode: TDrawMode; AOpacity: byte = 255); overload;\n     procedure StretchPutImage(ARect: TRect; Source: TBGRACustomBitmap; mode: TDrawMode; AOpacity: byte = 255); overload; virtual; abstract;\n     procedure StretchPutImageProportionally(ARect: TRect; AHorizAlign: TAlignment; AVertAlign: TTextLayout;\n       Source: TBGRACustomBitmap; mode: TDrawMode; AOpacity: byte = 255; ACover: boolean = false);\n     procedure PutImageSubpixel(x, y: single; Source: TBGRACustomBitmap; AOpacity: byte = 255);\n     procedure PutImagePart(x,y: integer; Source: TBGRACustomBitmap; SourceRect: TRect; mode: TDrawMode; AOpacity: byte = 255);\n     procedure PutImageAffine(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap; AOpacity: Byte=255; ACorrectBlur: Boolean = false); overload;\n     procedure PutImageAffine(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AOpacity: Byte=255); overload;\n     procedure PutImageAffine(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte=255); overload;\n     procedure PutImageAffine(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap; AOutputBounds: TRect; AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte=255); overload;\n     procedure PutImageAffine(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap; AOutputBounds: TRect; AOpacity: Byte=255; ACorrectBlur: Boolean = false); overload;\n     procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AOpacity: Byte=255; ACorrectBlur: Boolean = false; APixelCenteredCoords: boolean = true); overload;\n     procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AOpacity: Byte=255; APixelCenteredCoords: boolean = true); overload;\n     procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte=255; APixelCenteredCoords: boolean = true); overload;\n     procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AOutputBounds: TRect; AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte=255; APixelCenteredCoords: boolean = true); overload; virtual; abstract;\n     procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AOutputBounds: TRect; AOpacity: Byte=255; ACorrectBlur: Boolean = false; APixelCenteredCoords: boolean = true); overload;\n     function GetImageAffineBounds(Origin,HAxis,VAxis: TPointF; Source: TBGRACustomBitmap): TRect; overload;\n     function GetImageAffineBounds(Origin,HAxis,VAxis: TPointF; ASourceWidth, ASourceHeight: integer; const ASourceBounds: TRect; AClipOutput: boolean = true): TRect; overload;\n     function GetImageAffineBounds(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; APixelCenteredCoords: boolean = true): TRect; overload;\n     function GetImageAffineBounds(AMatrix: TAffineMatrix; ASourceBounds: TRect; AClipOutput: boolean = true; APixelCenteredCoords: boolean = true): TRect; overload; virtual; abstract;\n     class function IsAffineRoughlyTranslation(AMatrix: TAffineMatrix; ASourceBounds: TRect): boolean; virtual; abstract;\n     procedure PutImageAngle(x,y: single; Source: TBGRACustomBitmap; angle: single; AOutputBounds: TRect; imageCenterX: single = 0; imageCenterY: single = 0; AOpacity: Byte=255; ARestoreOffsetAfterRotation: boolean = false; ACorrectBlur: Boolean = false); overload;\n     procedure PutImageAngle(x,y: single; Source: TBGRACustomBitmap; angle: single; imageCenterX: single = 0; imageCenterY: single = 0; AOpacity: Byte=255; ARestoreOffsetAfterRotation: boolean = false; ACorrectBlur: Boolean = false); overload;\n     procedure PutImageAngle(x,y: single; Source: TBGRACustomBitmap; angle: single; AOutputBounds: TRect; AResampleFilter: TResampleFilter; imageCenterX: single = 0; imageCenterY: single = 0; AOpacity: Byte=255; ARestoreOffsetAfterRotation: boolean = false); overload;\n     procedure PutImageAngle(x,y: single; Source: TBGRACustomBitmap; angle: single; AResampleFilter: TResampleFilter; imageCenterX: single = 0; imageCenterY: single = 0; AOpacity: Byte=255; ARestoreOffsetAfterRotation: boolean = false); overload;\n     procedure ComputeImageAngleAxes(x,y,w,h,angle: single; imageCenterX,imageCenterY: single; ARestoreOffsetAfterRotation: boolean;\n       out Origin,HAxis,VAxis: TPointF);\n     function GetImageAngleBounds(x,y: single; Source: TBGRACustomBitmap; angle: single; imageCenterX: single = 0; imageCenterY: single = 0; ARestoreOffsetAfterRotation: boolean = false): TRect;\n     procedure Blend(AColor: TBGRAPixel; AOperation: TBlendOperation; AIgnoreDestAlpha: boolean = false); virtual;\n     procedure BlendOver(AColor: TBGRAPixel; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false; AIgnoreDestAlpha: boolean = false); virtual;\n     procedure BlendRect(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AIgnoreDestAlpha: boolean = false); overload;\n     procedure BlendRect(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AExcludeChannels: TChannels); overload; virtual; abstract;\n     procedure BlendRectOver(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false; AIgnoreDestAlpha: boolean = false); overload;\n     procedure BlendRectOver(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean; AExcludeChannels: TChannels); overload; virtual; abstract;\n     procedure BlendImage(x, y: integer; ASource: TBGRACustomBitmap; AOperation: TBlendOperation); overload; virtual; abstract;\n     procedure BlendImage(ADest: TRect; ASource: IBGRAScanner; AOffsetX, AOffsetY: integer; AOperation: TBlendOperation); overload; virtual; abstract;\n     procedure BlendImageOver(x, y: integer; ASource: TBGRACustomBitmap; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false); overload; virtual; abstract;\n     procedure BlendImageOver(ADest: TRect; ASource: IBGRAScanner; AOffsetX, AOffsetY: integer; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false); overload; virtual; abstract;\n     function Resample(newWidth, newHeight: integer;\n       mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function Resample(newWidth, newHeight: Single; ASizeUnit: TCSSUnit;\n       mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n\n     //masks\n     procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; ADrawMode: TDrawMode); overload; override;\n     procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; ADrawMode: TDrawMode; AOpacity: byte); overload; virtual; abstract;\n     procedure EraseMask(x,y: integer; AMask: TBGRACustomBitmap; alpha: byte=255); virtual; abstract;\n     procedure FillClearTypeMask(x,y: integer; xThird: integer; AMask: TBGRACustomBitmap; color: TBGRAPixel; ARGBOrder: boolean = true); overload; virtual; abstract;\n     procedure FillClearTypeMask(x,y: integer; xThird: integer; AMask: TBGRACustomBitmap; texture: IBGRAScanner; ARGBOrder: boolean = true); overload; virtual; abstract;\n     function GetMaskFromAlpha: TBGRACustomBitmap; virtual; abstract;\n     function GetImageBoundsWithin(const ARect: TRect; Channel: TChannel = cAlpha; ANothingValue: Byte = 0): TRect; overload; override;\n     function GetImageBoundsWithin(const ARect: TRect; Channels: TChannels; ANothingValue: Byte = 0): TRect; overload; override;\n\n     {inplace filters}\n     procedure Negative; virtual; abstract;\n     procedure NegativeRect(ABounds: TRect); virtual; abstract;\n     procedure LinearNegative; virtual; abstract;\n     procedure LinearNegativeRect(ABounds: TRect); virtual; abstract;\n     procedure InplaceGrayscale(AGammaCorrection: boolean = true); overload; virtual; abstract;\n     procedure InplaceGrayscale(ABounds: TRect; AGammaCorrection: boolean = true); overload; virtual; abstract;\n     procedure InplaceNormalize(AEachChannel: boolean = True); overload; virtual; abstract;\n     procedure InplaceNormalize(ABounds: TRect; AEachChannel: boolean = True); overload; virtual; abstract;\n     procedure ConvertToLinearRGB; virtual; abstract;\n     procedure ConvertFromLinearRGB; virtual; abstract;\n     procedure ConvertToPaletteGrayscale; virtual; abstract;\n     procedure SwapRedBlue; overload; virtual; abstract;\n     procedure SwapRedBlue(ARect: TRect); overload; virtual; abstract;\n     procedure GrayscaleToAlpha; virtual; abstract;\n     procedure AlphaToGrayscale; virtual; abstract;\n     procedure VerticalFlip(ARect: TRect); overload; override;\n     procedure HorizontalFlip(ARect: TRect); overload; override;\n     procedure RotateUDInplace(ARect: TRect); overload; override;\n\n     {Filters}\n     function RotateCW(ACopyProperties: Boolean=False): TBGRACustomBitmap; override;\n     function RotateCCW(ACopyProperties: Boolean=False): TBGRACustomBitmap; override;\n     function RotateUD(ACopyProperties: Boolean=False): TBGRACustomBitmap; override;\n     {$IFNDEF BGRABITMAP_CORE}\n     function FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterSmooth(ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterSharpen(Amount: single = 1; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterSharpen(ABounds: TRect; Amount: single = 1; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterPixelate(pixelSize: integer; useResample: boolean; filter: TResampleFilter = rfLinear; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterBlurRadial(const ABounds: TRect; radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterBlurRadial(radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterBlurMotion(distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterBlurMotion(const ABounds: TRect; distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterCustomBlur(const ABounds: TRect; mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; override;\n     function FilterEmboss(angle: single; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterEmboss(angle: single; ABounds: TRect; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterGrayscale(ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterNormalize(eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterNormalize(ABounds: TRect; eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterRotate(origin: TPointF; angle: single; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterSphere(ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterTwirl(ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterTwirl(ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRACustomBitmap; overload; virtual; abstract;\n     function FilterCylinder(ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     function FilterPlane(ACopyProperties: Boolean=False): TBGRACustomBitmap; virtual; abstract;\n     {$ENDIF}\n\n     //IBGRAScanner\n     function ScanAtIntegerExpanded(X,Y: integer): TExpandedPixel; override;\n     function ScanNextExpandedPixel: TExpandedPixel; override;\n     function ScanAtExpanded(X,Y: Single): TExpandedPixel; override;\n     function ProvidesScanline(ARect: TRect): boolean; override;\n     function GetScanlineAt(X, Y: integer): PBGRAPixel; override;\n     procedure ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer); override;\n     function ScanAtIntegerMask(X,Y: integer): TByteMask; override;\n     function ScanAtMask(X,Y: Single): TByteMask; override;\n  end;\n\ntype\n  TBGRABitmapAny = class of TBGRACustomBitmap;  //used to create instances of the same type (see NewBitmap)\n\nvar\n  BGRABitmapFactory : TBGRABitmapAny;\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\nfunction InternalGetImageBoundsWithin(ASourceBitmap: TBGRACustomBitmap; ASourceTexture: IBGRAScanner;\n  const ARect: TRect; Channels: TChannels; ANothingValue: Byte): TRect;\nvar\n  minx, miny, maxx, maxy: integer;\n  xb, xb2, yb: integer;\n  p:      PLongWord;\n  colorMask, colorZeros: LongWord;\n  actualRect: TRect;\n  pixelBuffer: TBGRAPixelBuffer;\nbegin\n  pixelBuffer := nil;\n  if ASourceBitmap <> nil then\n  begin\n    actualRect := TRect.Intersect(ARect, rect(0,0,ASourceBitmap.Width,ASourceBitmap.Height));\n  end\n  else if ASourceTexture <> nil then\n  begin\n    actualRect := ARect;\n    AllocateBGRAPixelBuffer(pixelBuffer, ARect.Right-ARect.Left)\n  end\n  else\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  maxx := actualRect.Left-1;\n  maxy := actualRect.Top-1;\n  minx := actualRect.Right;\n  miny := actualRect.Bottom;\n  colorMask := 0;\n  colorZeros := 0;\n  if cBlue in Channels then\n  begin\n    colorMask := colorMask or LongWord(BGRA(0,0,255,0));\n    colorZeros:= colorZeros or LongWord(BGRA(0,0,ANothingValue,0));\n  end;\n  if cGreen in Channels then\n  begin\n    colorMask := colorMask or LongWord(BGRA(0,255,0,0));\n    colorZeros:= colorZeros or LongWord(BGRA(0,ANothingValue,0,0));\n  end;\n  if cRed in Channels then\n  begin\n    colorMask := colorMask or LongWord(BGRA(255,0,0,0));\n    colorZeros:= colorZeros or LongWord(BGRA(ANothingValue,0,0,0));\n  end;\n  if cAlpha in Channels then\n  begin\n    colorMask := colorMask or LongWord(BGRA(0,0,0,255));\n    colorZeros:= colorZeros or LongWord(BGRA(0,0,0,ANothingValue));\n  end;\n  colorMask := NtoLE(colorMask);\n  colorZeros := NtoLE(colorZeros);\n  for yb := actualRect.Top to actualRect.Bottom-1 do\n  begin\n    if ASourceBitmap <> nil then\n      p := PLongWord(ASourceBitmap.ScanLine[yb])+actualRect.Left\n    else\n    begin\n      p := @pixelBuffer[0];\n      ASourceTexture.ScanMoveTo(actualRect.Left,actualRect.Top);\n      ASourceTexture.ScanPutPixels(PBGRAPixel(p),ARect.Right-ARect.Left, dmSet);\n    end;\n    for xb := actualRect.Left to actualRect.Right - 1 do\n    begin\n      if (p^ and colorMask) <> colorZeros then\n      begin\n        if xb < minx then\n          minx := xb;\n        if yb < miny then\n          miny := yb;\n        if xb > maxx then\n          maxx := xb;\n        if yb > maxy then\n          maxy := yb;\n\n        inc(p, actualRect.Right-1-xb);\n        for xb2 := actualRect.Right-1 downto xb+1 do\n        begin\n          if (p^ and colorMask) <> colorZeros then\n          begin\n            if xb2 > maxx then\n              maxx := xb2;\n            break;\n          end;\n          dec(p);\n        end;\n        break;\n      end;\n      Inc(p);\n    end;\n  end;\n  if minx > maxx then\n  begin\n    Result.left   := 0;\n    Result.top    := 0;\n    Result.right  := 0;\n    Result.bottom := 0;\n  end\n  else\n  begin\n    Result.left   := minx;\n    Result.top    := miny;\n    Result.right  := maxx + 1;\n    Result.bottom := maxy + 1;\n  end;\nend;\n\n{ TBGRACustomBitmap }\n\nfunction TBGRACustomBitmap.GetFontAntialias: Boolean;\nbegin\n  result := FontQuality <> fqSystem;\nend;\n\nprocedure TBGRACustomBitmap.SetFontAntialias(const AValue: Boolean);\nbegin\n  if AValue and not FontAntialias then\n    FontQuality := fqFineAntialiasing\n  else if not AValue and (FontQuality <> fqSystem) then\n    FontQuality := fqSystem;\nend;\n\nprocedure TBGRACustomBitmap.SetXorMask(AValue: TBGRACustomBitmap);\nbegin\n  if FXorMask=AValue then Exit;\n  if (AValue.Width <> Width) or (AValue.Height <> Height) then\n    raise exception.Create('Dimension mismatch');\n  DiscardXorMask;\n  FXorMask:=AValue;\nend;\n\nprocedure TBGRACustomBitmap.Init;\nbegin\n  inherited Init;\n  ScanMaskChannel:= cGreen;\nend;\n\nfunction TBGRACustomBitmap.GetFontRightToLeftFor(AText: string): boolean;\nbegin\n  case FontBidiMode of\n    fbmAuto: result := IsRightToLeftUTF8(AText);\n    fbmRightToLeft: result := true;\n  else\n    {fbmLeftToRight}\n    result := false;\n  end;\nend;\n\nfunction TBGRACustomBitmap.NewBitmap: TBGRACustomBitmap;\nbegin\n  Result:=inherited NewBitmap as TBGRACustomBitmap;\nend;\n\nfunction TBGRACustomBitmap.NewBitmap(AWidth, AHeight: integer): TBGRACustomBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight) as TBGRACustomBitmap;\nend;\n\nfunction TBGRACustomBitmap.NewBitmap(AWidth, AHeight: integer;\n  const Color: TBGRAPixel): TBGRACustomBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, Color) as TBGRACustomBitmap;\nend;\n\nfunction TBGRACustomBitmap.NewBitmap(AWidth, AHeight: integer; AColor: Pointer\n  ): TBGRACustomBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, AColor) as TBGRACustomBitmap;\nend;\n\nfunction TBGRACustomBitmap.InternalNew: TBGRACustomBitmap;\nbegin\n  Result:= BGRABitmapFactory.Create;\nend;\n\nprocedure TBGRACustomBitmap.DiscardXorMask;\nbegin\n  if Assigned(FXorMask) then\n  begin\n    if FXorMask is TBGRACustomBitmap then\n    begin\n      TBGRACustomBitmap(FXorMask).FreeReference;\n      FXorMask := nil;\n    end else\n      FreeAndNil(FXorMask);\n  end;\nend;\n\nprocedure TBGRACustomBitmap.NeedXorMask;\nbegin\n  if FXorMask = nil then\n    FXorMask := BGRABitmapFactory.Create(Width,Height);\nend;\n\nfunction TBGRACustomBitmap.NewReference: TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited NewReference);\nend;\n\nfunction TBGRACustomBitmap.GetUnique: TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited GetUnique);\nend;\n\nfunction TBGRACustomBitmap.Duplicate(DuplicateProperties: Boolean): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited Duplicate(DuplicateProperties));\nend;\n\nfunction TBGRACustomBitmap.Duplicate(DuplicateProperties,\n  DuplicateXorMask: Boolean): TBGRACustomBitmap;\nbegin\n  result := Duplicate(DuplicateProperties);\n  if DuplicateXorMask and Assigned(XorMask) then\n    result.XorMask := FXorMask.Duplicate(True);\nend;\n\nprocedure TBGRACustomBitmap.CopyPropertiesTo(ABitmap: TCustomUniversalBitmap);\nvar\n  other: TBGRACustomBitmap;\nbegin\n  inherited CopyPropertiesTo(ABitmap);\n  if ABitmap is TBGRACustomBitmap then\n  begin\n    other := TBGRACustomBitmap(ABitmap);\n    other.CanvasOpacity := CanvasOpacity;\n    other.CanvasDrawModeFP := CanvasDrawModeFP;\n    other.PenStyle := PenStyle;\n    other.CustomPenStyle := CustomPenStyle;\n    other.FontName := FontName;\n    other.FontHeight := FontHeight;\n    other.FontStyle := FontStyle;\n    other.FontQuality := FontQuality;\n    other.FontOrientation := FontOrientation;\n    other.FontVerticalAnchor:= FontVerticalAnchor;\n    other.FontBidiMode:= FontBidiMode;\n    other.LineCap := LineCap;\n    other.JoinStyle := JoinStyle;\n    other.ResampleFilter := ResampleFilter;\n    other.ScanInterpolationFilter:= ScanInterpolationFilter;\n    other.HotSpot := HotSpot;\n  end;\nend;\n\nfunction TBGRACustomBitmap.GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited GetPart(ARect, ACopyProperties));\nend;\n\nfunction TBGRACustomBitmap.CreateBrushTexture(ABrushStyle: TBrushStyle;\n  APatternColor, ABackgroundColor: TBGRAPixel; AWidth: integer;\n  AHeight: integer; APenWidth: single): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited CreateBrushTexture(ABrushStyle, APatternColor, ABackgroundColor, AWidth,AHeight,APenWidth));\nend;\n\nprocedure TBGRACustomBitmap.SetSize(AWidth, AHeight: integer);\nbegin\n  if (AWidth <> Width) or (AHeight <> Height) then\n  begin\n    inherited SetSize(AWidth, AHeight);\n    DiscardXorMask;\n  end;\nend;\n\nprocedure TBGRACustomBitmap.InternalArc(cx, cy, rx, ry: single;\n  const StartPoint, EndPoint: TPointF; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions;\n  ADrawChord: boolean; ATexture: IBGRAScanner);\nvar angle1,angle2: single;\nbegin\n  if (rx = 0) or (ry = 0) then exit;\n  angle1 := arctan2(-(StartPoint.y-cy)/ry,(StartPoint.x-cx)/rx);\n  angle2 := arctan2(-(EndPoint.y-cy)/ry,(EndPoint.x-cx)/rx);\n  if angle1 = angle2 then angle2 := angle1+2*Pi;\n  InternalArc(cx,cy,rx,ry, angle1,angle2,\n              ABorderColor,w,AFillColor, AOptions, ADrawChord, ATexture);\nend;\n\nprocedure TBGRACustomBitmap.InternalArcInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions;\n  ADrawChord: boolean; ATexture: IBGRAScanner);\nvar\n  temp: LongInt;\nbegin\n  if r.right = r.left then exit;\n  if r.bottom = r.top then exit;\n  if r.right < r.left then\n  begin\n    temp := r.left;\n    r.left := r.right;\n    r.right := temp;\n  end;\n  if r.Bottom < r.Top then\n  begin\n    temp := r.Top;\n    r.Top := r.Bottom;\n    r.Bottom := temp;\n  end;\n  InternalArc((r.left+r.right-1)/2,(r.top+r.bottom-1)/2,\n             (r.right-r.left-1)/2,(r.bottom-r.top-1)/2,\n             StartAngleRad,EndAngleRad,\n             ABorderColor,w,AFillColor,\n             AOptions, ADrawChord, ATexture);\nend;\n\nprocedure TBGRACustomBitmap.InternalFillArcInRect(r: TRect; StartAngleRad,\n  EndAngleRad: Single; AFillColor: TBGRAPixel; AOptions: TArcOptions;\n  ATexture: IBGRAScanner);\nvar\n  temp: LongInt;\nbegin\n  if r.right = r.left then exit;\n  if r.bottom = r.top then exit;\n  if r.right < r.left then\n  begin\n    temp := r.left;\n    r.left := r.right;\n    r.right := temp;\n  end;\n  if r.Bottom < r.Top then\n  begin\n    temp := r.Top;\n    r.Top := r.Bottom;\n    r.Bottom := temp;\n  end;\n  InternalArc((r.left+r.right-1)/2,(r.top+r.bottom-1)/2,\n             (r.right-r.left)/2,(r.bottom-r.top)/2,\n             StartAngleRad,EndAngleRad,\n             BGRAPixelTransparent,0,AFillColor,\n             AOptions, False, ATexture);\nend;\n\nprocedure TBGRACustomBitmap.DrawPixel(x, y: int32or64; const c: TBGRAPixel;\n  ADrawMode: TDrawMode);\nbegin\n  case ADrawMode of\n  dmSet: SetPixel(x,y,c);\n  dmSetExceptTransparent: if c.alpha = 255 then SetPixel(x,y,c);\n  dmLinearBlend: FastBlendPixel(x,y,c);\n  dmDrawWithTransparency: DrawPixel(x,y,c);\n  dmXor: XorPixel(x,y,c);\n  end;\nend;\n\nprocedure TBGRACustomBitmap.LoadFromStream(AStream: TStream;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nvar\n  OldDrawMode: TDrawMode;\nbegin\n  { LoadFromStream uses TFPCustomImage routine, which uses\n    Colors property to access pixels. That's why the\n    FP drawing mode is temporarily changed to load\n    bitmaps properly }\n  OldDrawMode := CanvasDrawModeFP;\n  CanvasDrawModeFP := dmSet;\n  DiscardXorMask;\n  try\n    inherited LoadFromStream(AStream, AHandler, AOptions);\n  finally\n    CanvasDrawModeFP := OldDrawMode;\n  end;\nend;\n\n{ Look for a pixel considering the bitmap is repeated in both directions }\nprocedure TBGRACustomBitmap.DrawHorizLine(x, y, x2: int32or64;\n  texture: IBGRAScanner);\nbegin\n  HorizLine(x,y,x2,texture,dmDrawWithTransparency);\nend;\n\nprocedure TBGRACustomBitmap.Arc(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AColor: TBGRAPixel; w: single; ADrawChord: boolean;\n  AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,w,AFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGRACustomBitmap.Arc(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; w: single; ADrawChord: boolean;\n  AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,w,AFillColor,[aoFillPath],ADrawChord);\nend;\n\nprocedure TBGRACustomBitmap.FillChord(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,BGRAPixelTransparent,0,AFillColor,[aoFillPath]);\nend;\n\nprocedure TBGRACustomBitmap.FillChord(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,BGRAPixelTransparent,0,AFillColor,[aoFillPath]);\nend;\n\nprocedure TBGRACustomBitmap.FillChord(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; texture: IBGRAScanner);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,BGRAPixelTransparent,0,BGRAWhite,[aoFillPath],False,texture);\nend;\n\nprocedure TBGRACustomBitmap.FillChord(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; texture: IBGRAScanner);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,BGRAPixelTransparent,0,BGRAWhite,[aoFillPath],False,texture);\nend;\n\nprocedure TBGRACustomBitmap.FillChordInRect(const ARect: TRect; StartAngleRad,\n  EndAngleRad: Single; AFillColor: TBGRAPixel);\nbegin\n  InternalFillArcInRect(ARect,StartAngleRad,EndAngleRad,AFillColor,[aoFillPath]);\nend;\n\nprocedure TBGRACustomBitmap.FillChordInRect(const ARect: TRect; StartAngleRad,\n  EndAngleRad: Single; texture: IBGRAScanner);\nbegin\n  InternalFillArcInRect(ARect,StartAngleRad,EndAngleRad,BGRAWhite,[aoFillPath],texture);\nend;\n\nprocedure TBGRACustomBitmap.Pie(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,AColor,w,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGRACustomBitmap.Pie(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,AColor,w,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGRACustomBitmap.FillPie(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,BGRAPixelTransparent,0,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGRACustomBitmap.FillPie(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; AFillColor: TBGRAPixel);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,BGRAPixelTransparent,0,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGRACustomBitmap.FillPie(cx, cy, rx, ry: single; const StartPoint,\n  EndPoint: TPointF; texture: IBGRAScanner);\nbegin\n  InternalArc(cx,cy,rx,ry,StartPoint,EndPoint,BGRAPixelTransparent,0,BGRAWhite,[aoFillPath,aoPie],False,texture);\nend;\n\nprocedure TBGRACustomBitmap.FillPie(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; texture: IBGRAScanner);\nbegin\n  InternalArc(cx,cy,rx,ry,StartAngleRad,EndAngleRad,BGRAPixelTransparent,0,BGRAWhite,[aoFillPath,aoPie],False,texture);\nend;\n\nprocedure TBGRACustomBitmap.FillPieInRect(const ARect: TRect; StartAngleRad,\n  EndAngleRad: Single; AFillColor: TBGRAPixel);\nbegin\n  InternalFillArcInRect(ARect,StartAngleRad,EndAngleRad,AFillColor,[aoFillPath,aoPie]);\nend;\n\nprocedure TBGRACustomBitmap.FillPieInRect(const ARect: TRect; StartAngleRad,\n  EndAngleRad: Single; texture: IBGRAScanner);\nbegin\n  InternalFillArcInRect(ARect,StartAngleRad,EndAngleRad,BGRAWhite,[aoFillPath,aoPie],texture);\nend;\n\n{ Following functions are defined for convenience }\nprocedure TBGRACustomBitmap.RectangleWithin(x1, y1, x2, y2: single;\n  ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel;\n  APixelCenteredCoordinates: boolean);\nbegin\n  if not APixelCenteredCoordinates then\n  begin\n    DecF(x1, 0.5);\n    DecF(y1, 0.5);\n    DecF(x2, 0.5);\n    DecF(y2, 0.5);\n  end;\n  RectangleAntialias(x1+w*0.5,y1+w*0.5,x2-w*0.5,y2-w*0.5, ABorderColor, w, AFillColor);\nend;\n\nprocedure TBGRACustomBitmap.RectangleWithin(r: TRect; ABorderColor: TBGRAPixel;\n  w: single; AFillColor: TBGRAPixel);\nbegin\n  RectangleWithin(r.left,r.top,r.right,r.bottom,ABorderColor,w,AFillColor,false);\nend;\n\nprocedure TBGRACustomBitmap.FillRect(r: TRect; texture: IBGRAScanner;\n  mode: TDrawMode; ditheringAlgorithm: TDitheringAlgorithm);\nbegin\n  FillRect(r.Left,r.Top,r.Right,r.Bottom, texture, mode, ditheringAlgorithm);\nend;\n\nprocedure TBGRACustomBitmap.FillRect(r: TRect; texture: IBGRAScanner;\n  mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm);\nbegin\n  FillRect(r.Left,r.Top,r.Right,r.Bottom, texture, mode, AScanOffset, ditheringAlgorithm);\nend;\n\nprocedure TBGRACustomBitmap.FillRect(x, y, x2, y2: integer;\n  texture: IBGRAScanner; mode: TDrawMode;\n  ditheringAlgorithm: TDitheringAlgorithm);\nbegin\n  FillRect(x,y,x2,y2,texture,mode,Point(0,0),ditheringAlgorithm);\nend;\n\nprocedure TBGRACustomBitmap.TextOutCurved(APath: IBGRAPath; const sUTF8: string;\n  AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single);\nvar cursor: TBGRACustomPathCursor;\nbegin\n  cursor := APath.getCursor;\n  if cursor = nil then exit;\n  case AAlign of\n    taCenter: cursor.Position := cursor.PathLength*0.5;\n    taRightJustify: cursor.Position:= cursor.PathLength;\n  end;\n  TextOutCurved(cursor, sUTF8, AColor, AAlign, ALetterSpacing);\n  cursor.free;\nend;\n\nprocedure TBGRACustomBitmap.TextOutCurved(APath: IBGRAPath; const sUTF8: string;\n  ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\nvar cursor: TBGRACustomPathCursor;\nbegin\n  cursor := APath.getCursor;\n  if cursor = nil then exit;\n  case AAlign of\n    taCenter: cursor.Position := cursor.PathLength*0.5;\n    taRightJustify: cursor.Position:= cursor.PathLength;\n  end;\n  TextOutCurved(cursor, sUTF8, ATexture, AAlign, ALetterSpacing);\n  cursor.free;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRACustomBitmap.TextMultiline(x, y: single; const sUTF8: string;\n  c: TBGRAPixel; AAlign: TBidiTextAlignment; AVertAlign: TTextLayout; AParagraphSpacing: single);\nbegin\n  TextMultiline(x, y, EmptySingle, sUTF8, c, AAlign, AVertAlign, AParagraphSpacing);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRACustomBitmap.TextMultiline(x, y: single; const sUTF8: string;\n  ATexture: IBGRAScanner; AAlign: TBidiTextAlignment; AVertAlign: TTextLayout; AParagraphSpacing: single);\nbegin\n  TextMultiline(x, y, EmptySingle, sUTF8, ATexture, AAlign, AVertAlign, AParagraphSpacing);\nend;{$ENDIF}\n\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel;\n  align: TAlignment);\nbegin\n  TextOut(x,y,sUTF8,c,align, GetFontRightToLeftFor(sUTF8));\nend;\n\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string;\n  texture: IBGRAScanner; align: TAlignment);\nbegin\n  TextOut(x,y,sUTF8,texture,align, GetFontRightToLeftFor(sUTF8));\nend;\n\n{ Draw the UTF8 encoded string, (x,y) being the top-left corner. The color c is used to fill the text.\n  The value of FontOrientation is taken into account, so that the text may be rotated. }\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel);\nbegin\n  TextOut(x, y, sUTF8, c, taLeftJustify);\nend;\n\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel;\n  ARightToLeft: boolean);\nbegin\n  TextOut(x, y, sUTF8, c, taLeftJustify, ARightToLeft);\nend;\n\n{ Draw the UTF8 encoded string, (x,y) being the top-left corner. The color c is used to fill the text.\n  The value of FontOrientation is taken into account, so that the text may be rotated. }\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string; c: TColor);\nbegin\n  TextOut(x, y, sUTF8, ColorToBGRA(c));\nend;\n\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string; c: TColor;\n  ARightToLeft: boolean);\nbegin\n  TextOut(x, y, sUTF8, ColorToBGRA(c), ARightToLeft);\nend;\n\n{ Draw the UTF8 encoded string, (x,y) being the top-left corner. The texture is used to fill the text.\n  The value of FontOrientation is taken into account, so that the text may be rotated. }\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string;\n  texture: IBGRAScanner);\nbegin\n  TextOut(x, y, sUTF8, texture, taLeftJustify);\nend;\n\nprocedure TBGRACustomBitmap.TextOut(x, y: single; const sUTF8: string;\n  texture: IBGRAScanner; ARightToLeft: boolean);\nbegin\n  TextOut(x, y, sUTF8, texture, taLeftJustify, ARightToLeft);\nend;\n\nprocedure TBGRACustomBitmap.TextOutOffset(x, y: single; const sUTF8: string;\n  AColor: TBGRAPixel; AOffset: array of TPointF);\nbegin\n  InternalTextOutOffset(x, y, sUTF8, AColor, nil, AOffset);\nend;\n\nprocedure TBGRACustomBitmap.TextOutOffset(x, y: single; const sUTF8: string;\n  ATexture: IBGRAScanner; AOffset: array of TPointF);\nbegin\n  InternalTextOutOffset(x, y, sUTF8, BGRAPixelTransparent, ATexture, AOffset);\nend;\n\nprocedure TBGRACustomBitmap.TextOutAngle(x, y: single;\n  orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel);\nbegin\n  TextOutAngle(x,y, orientationTenthDegCCW, sUTF8,c,taLeftJustify);\nend;\n\nprocedure TBGRACustomBitmap.TextOutAngle(x, y: single;\n  orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel;\n  align: TAlignment);\nbegin\n  TextOutAngle(x,y, orientationTenthDegCCW, sUTF8,c,align, GetFontRightToLeftFor(sUTF8));\nend;\n\nprocedure TBGRACustomBitmap.TextOutAngle(x, y: single;\n  orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner);\nbegin\n  TextOutAngle(x,y, orientationTenthDegCCW, sUTF8,texture,taLeftJustify);\nend;\n\nprocedure TBGRACustomBitmap.TextOutAngle(x, y: single;\n  orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner;\n  align: TAlignment);\nbegin\n  TextOutAngle(x,y, orientationTenthDegCCW, sUTF8,texture,align, GetFontRightToLeftFor(sUTF8));\nend;\n\n{ Draw the UTF8 encoded string in the rectangle ARect. Text is wrapped if necessary.\n  The position depends on the specified horizontal alignment halign and vertical alignement valign.\n  The color c is used to fill the text. No rotation is applied. }\nprocedure TBGRACustomBitmap.TextRect(ARect: TRect; const sUTF8: string;\n  halign: TAlignment; valign: TTextLayout; c: TBGRAPixel);\nvar\n  style: TTextStyle;\n  sUTF8bidi: String;\nbegin\n  {$hints off}\n  FillChar(style,sizeof(style),0);\n  {$hints on}\n  style.Alignment := halign;\n  style.Layout := valign;\n  style.Wordbreak := true;\n  style.ShowPrefix := false;\n  style.Clipping := false;\n  style.RightToLeft := GetFontRightToLeftFor(sUTF8);\n  if FontBidiMode = fbmAuto then\n    sUTF8bidi := AddParagraphBidiUTF8(sUTF8, style.RightToLeft)\n    else sUTF8bidi := sUTF8;\n  TextRect(ARect, ARect.Left, ARect.Top, sUTF8bidi, style, c);\nend;\n\n{ Draw the UTF8 encoded string in the rectangle ARect. Text is wrapped if necessary.\n  The position depends on the specified horizontal alignment halign and vertical alignement valign.\n  The texture is used to fill the text. No rotation is applied. }\nprocedure TBGRACustomBitmap.TextRect(ARect: TRect; const sUTF8: string;\n  halign: TAlignment; valign: TTextLayout; texture: IBGRAScanner);\nvar\n  style: TTextStyle;\n  sUTF8bidi: String;\nbegin\n  {$hints off}\n  FillChar(style,sizeof(style),0);\n  {$hints on}\n  style.Alignment := halign;\n  style.Layout := valign;\n  style.Wordbreak := true;\n  style.ShowPrefix := false;\n  style.Clipping := false;\n  style.RightToLeft := GetFontRightToLeftFor(sUTF8);\n  if FontBidiMode = fbmAuto then\n    sUTF8bidi := AddParagraphBidiUTF8(sUTF8, style.RightToLeft)\n    else sUTF8bidi := sUTF8;\n  TextRect(ARect,ARect.Left,ARect.Top,sUTF8bidi,style,texture);\nend;\n\nfunction TBGRACustomBitmap.ComputeEllipse(x, y, rx, ry: single): ArrayOfTPointF;\nbegin\n  result := ComputeEllipseContour(x,y,rx,ry);\nend;\n\nfunction TBGRACustomBitmap.ComputeEllipse(x, y, rx, ry, w: single\n  ): ArrayOfTPointF;\nbegin\n  result := ComputeEllipseBorder(x,y,rx,ry,w);\nend;\n\nprocedure TBGRACustomBitmap.Fill(texture: IBGRAScanner);\nbegin\n  FillRect(ClipRect, texture, dmSet);\nend;\n\nprocedure TBGRACustomBitmap.Fill(texture: IBGRAScanner; mode: TDrawMode);\nbegin\n  FillRect(ClipRect, texture, mode);\nend;\n\nprocedure TBGRACustomBitmap.FloodFill(X, Y: integer; Color: TBGRAPixel;\n  mode: TFloodfillMode; Tolerance: byte);\nbegin\n  ParallelFloodFill(X,Y, Self, Color, mode, Tolerance);\nend;\n\nprocedure TBGRACustomBitmap.FloodFill(X, Y: integer;\n  const Brush: TUniversalBrush; Progressive: boolean; ToleranceW: Word);\nbegin\n  ParallelFloodFill(X,Y, Self, Brush, Progressive, ToleranceW);\nend;\n\nprocedure TBGRACustomBitmap.DrawPart(ARect: TRect; ACanvas: TCanvas; x,\n  y: integer; Opaque: boolean);\nvar\n  partial: TBGRACustomBitmap;\nbegin\n  if (ARect.Left = 0) and (ARect.Top = 0) and (ARect.Right = Width) and (ARect.Bottom = Height) then\n    Draw(ACanvas, x,y, Opaque)\n  else\n  begin\n    partial := GetPart(ARect);\n    if partial <> nil then\n    begin\n      partial.Draw(ACanvas, x, y, Opaque);\n      partial.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomBitmap.DrawPart(ARect: TRect; ACanvas: TCanvas;\n  ATargetRect: TRect; Opaque: boolean);\nvar\n  partial: TBGRACustomBitmap;\nbegin\n  if (ARect.Left = 0) and (ARect.Top = 0) and (ARect.Right = Width) and (ARect.Bottom = Height) then\n    Draw(ACanvas, ATargetRect, Opaque)\n  else\n  begin\n    partial := GetPart(ARect);\n    if partial <> nil then\n    begin\n      partial.Draw(ACanvas, ATargetRect, Opaque);\n      partial.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomBitmap.PutImage(x, y: integer; Source: TBitmap;\n  mode: TDrawMode; AOpacity: byte);\nvar bgra: TBGRACustomBitmap;\nbegin\n  bgra := BGRABitmapFactory.create(Source);\n  PutImage(x,y, bgra, mode, AOpacity);\n  bgra.free;\nend;\n\nprocedure TBGRACustomBitmap.StretchPutImage(ARect: TRect; Source: TBitmap;\n  mode: TDrawMode; AOpacity: byte);\nvar bgra: TBGRACustomBitmap;\nbegin\n  bgra := BGRABitmapFactory.create(Source);\n  StretchPutImage(ARect, bgra, mode, AOpacity);\n  bgra.free;\nend;\n\nprocedure TBGRACustomBitmap.StretchPutImageProportionally(ARect: TRect;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; Source: TBGRACustomBitmap;\n  mode: TDrawMode; AOpacity: byte; ACover: boolean);\nvar\n  ratio: single;\n  imgRect: TRect;\nbegin\n  if (Source.Width = 0) or (Source.Height = 0) then exit;\n  if (ARect.Width <= 0) or (ARect.Height <= 0) then exit;\n\n  if ACover then\n    ratio := max(ARect.Width/Source.Width, ARect.Height/Source.Height)\n  else\n    ratio := min(ARect.Width/Source.Width, ARect.Height/Source.Height);\n  imgRect := RectWithSize(ARect.Left,ARect.Top, round(Source.Width*ratio), round(Source.Height*ratio));\n  case AHorizAlign of\n    taCenter: imgRect.Offset((ARect.Width-imgRect.Width) div 2, 0);\n    taRightJustify: imgRect.Offset(ARect.Width-imgRect.Width, 0);\n  end;\n  case AVertAlign of\n    tlCenter: imgRect.Offset(0,(ARect.Height-imgRect.Height) div 2);\n    tlBottom: imgRect.Offset(0,ARect.Height-imgRect.Height);\n  end;\n  StretchPutImage(imgRect, Source, mode, AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageSubpixel(x, y: single; Source: TBGRACustomBitmap; AOpacity: byte);\nbegin\n  PutImageAngle(x,y,source,0,0,0,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImagePart(x, y: integer;\n  Source: TBGRACustomBitmap; SourceRect: TRect; mode: TDrawMode; AOpacity: byte);\nvar w,h,sourcex,sourcey,nx,ny,xb,yb,destx,desty: integer;\n    oldClip,newClip: TRect;\nbegin\n  if (Source = nil) or (AOpacity = 0) then exit;\n  w := SourceRect.Right-SourceRect.Left;\n  h := SourceRect.Bottom-SourceRect.Top;\n  if (w <= 0) or (h <= 0) or (Source.Width = 0) or (Source.Height = 0) then exit;\n  sourcex := PositiveMod(SourceRect.Left, Source.Width);\n  sourcey := PositiveMod(SourceRect.Top, Source.Height);\n  nx := (sourceX+w + Source.Width-1) div Source.Width;\n  ny := (sourceY+h + Source.Height-1) div Source.Height;\n\n  oldClip := ClipRect;\n  newClip := rect(x,y,x+w,y+h);\n  newClip.Intersect(oldClip);\n  if newClip.IsEmpty then exit;\n\n  ClipRect := newClip;\n\n  desty := y-sourcey;\n  for yb := 0 to ny-1 do\n  begin\n    destx := x-sourcex;\n    for xb := 0 to nx-1 do\n    begin\n      self.PutImage(destx,desty,Source,mode,AOpacity);\n      inc(destx,Source.Width);\n    end;\n    inc(desty,Source.Height);\n  end;\n\n  ClipRect := oldClip;\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap; AOpacity: Byte; ACorrectBlur: Boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAffine(Origin,HAxis,VAxis,Source,rfCosine,AOpacity)\n  else\n    PutImageAffine(Origin,HAxis,VAxis,Source,rfLinear,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AOpacity: Byte);\nbegin\n  if (Source = nil) or (Source.Width = 0) or (Source.Height = 0) or (AOpacity = 0) then exit;\n  PutImageAffine(Origin,HAxis,VAxis,Source,GetImageAffineBounds(Origin,HAxis,VAxis,Source),AResampleFilter,dmDrawWithTransparency,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter;\n  AMode: TDrawMode; AOpacity: Byte);\nbegin\n  if (Source = nil) or (Source.Width = 0) or (Source.Height = 0) or (AOpacity = 0) then exit;\n  PutImageAffine(Origin,HAxis,VAxis,Source,GetImageAffineBounds(Origin,HAxis,VAxis,Source),AResampleFilter,AMode,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap; AOutputBounds: TRect;\n  AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte);\nvar m: TAffineMatrix; w,h: integer;\nbegin\n  if (Source = nil) or (Source.Width = 0) or (Source.Height = 0) or (AOpacity = 0) then exit;\n  if Source.Width < 2 then w := 2 else w := Source.Width; //avoid actual size of zero\n  if Source.Height < 2 then h := 2 else h := Source.Height;\n  m[1,1] := (HAxis.x-Origin.x)/(w-1); m[1,2] := (VAxis.x-Origin.x)/(h-1); m[1,3] := Origin.x;\n  m[2,1] := (HAxis.y-Origin.y)/(w-1); m[2,2] := (VAxis.y-Origin.y)/(h-1); m[2,3] := Origin.y;\n  PutImageAffine(m,Source,AOutputBounds,AResampleFilter,AMode,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap; AOutputBounds: TRect; AOpacity: Byte;\n  ACorrectBlur: Boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAffine(Origin,HAxis,VAxis,Source,AOutputBounds,rfCosine,dmDrawWithTransparency,AOpacity)\n  else\n    PutImageAffine(Origin,HAxis,VAxis,Source,AOutputBounds,rfLinear,dmDrawWithTransparency,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; AOpacity: Byte; ACorrectBlur: Boolean; APixelCenteredCoords: boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAffine(AMatrix,Source,rfCosine,AOpacity,APixelCenteredCoords)\n  else\n    PutImageAffine(AMatrix,Source,rfLinear,AOpacity,APixelCenteredCoords);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter; AOpacity: Byte; APixelCenteredCoords: boolean);\nbegin\n  PutImageAffine(AMatrix, Source, AResampleFilter, dmDrawWithTransparency, AOpacity, APixelCenteredCoords);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; AResampleFilter: TResampleFilter;\n  AMode: TDrawMode; AOpacity: Byte; APixelCenteredCoords: boolean);\nbegin\n  if (Source = nil) or (Source.Width = 0) or (Source.Height = 0) or (AOpacity = 0) then exit;\n  PutImageAffine(AMatrix, Source, GetImageAffineBounds(AMatrix,Source),\n                 AResampleFilter,AMode,AOpacity,APixelCenteredCoords);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAffine(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; AOutputBounds: TRect; AOpacity: Byte;\n  ACorrectBlur: Boolean; APixelCenteredCoords: boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAffine(AMatrix,Source,AOutputBounds,rfCosine,dmDrawWithTransparency,AOpacity,APixelCenteredCoords)\n  else\n    PutImageAffine(AMatrix,Source,AOutputBounds,rfLinear,dmDrawWithTransparency,AOpacity,APixelCenteredCoords);\nend;\n\n{ Returns the area that contains the affine transformed image }\nfunction TBGRACustomBitmap.GetImageAffineBounds(Origin, HAxis, VAxis: TPointF;\n  Source: TBGRACustomBitmap): TRect;\nbegin\n  if Source = nil then\n    result := EmptyRect\n  else\n    result := GetImageAffineBounds(Origin,HAxis,VAxis,Source.Width,Source.Height,Source.GetImageBounds);\nend;\n\nfunction TBGRACustomBitmap.GetImageAffineBounds(Origin, HAxis, VAxis: TPointF;\n  ASourceWidth, ASourceHeight: integer; const ASourceBounds: TRect; AClipOutput: boolean): TRect;\nvar m: TAffineMatrix;\nbegin\n  if (ASourceWidth = 0) or (ASourceHeight = 0) then\n    result := EmptyRect\n  else\n  begin\n    if ASourceWidth < 2 then ASourceWidth := 2;   //avoid division by zero by supposing a pixel size of 2\n    if ASourceHeight < 2 then ASourceHeight := 2; //i.e. an actual size of 1 (cf pixel centered coordinates)\n    m[1,1] := (HAxis.x-Origin.x)/(ASourceWidth-1); m[1,2] := (VAxis.x-Origin.x)/(ASourceHeight-1); m[1,3] := Origin.x;\n    m[2,1] := (HAxis.y-Origin.y)/(ASourceWidth-1); m[2,2] := (VAxis.y-Origin.y)/(ASourceHeight-1); m[2,3] := Origin.y;\n    result := GetImageAffineBounds(m, ASourceBounds, AClipOutput);\n  end;\nend;\n\nfunction TBGRACustomBitmap.GetImageAffineBounds(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; APixelCenteredCoords: boolean): TRect;\nbegin\n  result := GetImageAffineBounds(AMatrix, Source.GetImageBounds, true, APixelCenteredCoords);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAngle(x, y: single;\n  Source: TBGRACustomBitmap; angle: single; AOutputBounds: TRect;\n  imageCenterX: single; imageCenterY: single; AOpacity: Byte;\n  ARestoreOffsetAfterRotation: boolean; ACorrectBlur: Boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAngle(x,y,Source,angle,AOutputBounds,rfCosine,imageCenterX,imageCenterY,AOpacity,ARestoreOffsetAfterRotation)\n  else\n    PutImageAngle(x,y,Source,angle,AOutputBounds,rfLinear,imageCenterX,imageCenterY,AOpacity,ARestoreOffsetAfterRotation);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAngle(x, y: single;\n  Source: TBGRACustomBitmap; angle: single; imageCenterX: single;\n  imageCenterY: single; AOpacity: Byte; ARestoreOffsetAfterRotation: boolean; ACorrectBlur: Boolean);\nbegin\n  if ACorrectBlur then\n    PutImageAngle(x,y,Source,angle,rfCosine,imageCenterX,imageCenterY,AOpacity,ARestoreOffsetAfterRotation)\n  else\n    PutImageAngle(x,y,Source,angle,rfLinear,imageCenterX,imageCenterY,AOpacity,ARestoreOffsetAfterRotation);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAngle(x, y: single;\n  Source: TBGRACustomBitmap; angle: single; AOutputBounds: TRect;\n  AResampleFilter: TResampleFilter; imageCenterX: single; imageCenterY: single; AOpacity: Byte;\n  ARestoreOffsetAfterRotation: boolean);\nvar\n  Origin,HAxis,VAxis: TPointF;\nbegin\n  if (source = nil) or (AOpacity=0) then exit;\n  ComputeImageAngleAxes(x,y,source.Width,source.Height,angle,imageCenterX,imageCenterY,ARestoreOffsetAfterRotation,\n     Origin,HAxis,VAxis);\n  PutImageAffine(Origin,HAxis,VAxis,source,AOutputBounds,AResampleFilter,dmDrawWithTransparency,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.PutImageAngle(x, y: single;\n  Source: TBGRACustomBitmap; angle: single; AResampleFilter: TResampleFilter;\n  imageCenterX: single; imageCenterY: single; AOpacity: Byte;\n  ARestoreOffsetAfterRotation: boolean);\nvar\n  Origin,HAxis,VAxis: TPointF;\nbegin\n  if (source = nil) or (AOpacity=0) then exit;\n  ComputeImageAngleAxes(x,y,source.Width,source.Height,angle,imageCenterX,imageCenterY,ARestoreOffsetAfterRotation,\n     Origin,HAxis,VAxis);\n  PutImageAffine(Origin,HAxis,VAxis,source,AResampleFilter,AOpacity);\nend;\n\nprocedure TBGRACustomBitmap.ComputeImageAngleAxes(x, y, w, h,\n  angle: single; imageCenterX, imageCenterY: single;\n  ARestoreOffsetAfterRotation: boolean; out Origin, HAxis, VAxis: TPointF);\nvar\n  cosa,sina: single;\n\n  { Compute rotated coordinates }\n  function Coord(relX,relY: single): TPointF;\n  begin\n    DecF(relX, imageCenterX);\n    DecF(relY, imageCenterY);\n    result.x := relX*cosa - relY*sina+ x;\n    result.y := relY*cosa + relX*sina+ y;\n    if ARestoreOffsetAfterRotation then\n      result.Offset(imageCenterX,imageCenterY);\n  end;\n\nbegin\n  cosa := cos(-angle*Pi/180);\n  sina := -sin(-angle*Pi/180);\n  Origin := Coord(0,0);\n  if w < 2 then w := 2; //when pixel size is 1, actual size is zero, so avoid that\n  if h < 2 then h := 2;\n  HAxis := Coord(w-1,0);\n  VAxis := Coord(0,h-1);\nend;\n\nfunction TBGRACustomBitmap.GetImageAngleBounds(x, y: single;\n  Source: TBGRACustomBitmap; angle: single; imageCenterX: single;\n  imageCenterY: single; ARestoreOffsetAfterRotation: boolean): TRect;\nvar\n  cosa,sina: single;\n\n  { Compute rotated coordinates }\n  function Coord(relX,relY: single): TPointF;\n  begin\n    DecF(relX, imageCenterX);\n    DecF(relY, imageCenterY);\n    result.x := relX*cosa - relY*sina + x;\n    result.y := relY*cosa + relX*sina + y;\n    if ARestoreOffsetAfterRotation then\n      result.Offset(imageCenterX,imageCenterY);\n  end;\n\nbegin\n  if (source = nil) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  cosa := cos(-angle*Pi/180);\n  sina := -sin(-angle*Pi/180);\n  result := GetImageAffineBounds(Coord(0,0),Coord(source.Width,0),Coord(0,source.Height),source);\nend;\n\nprocedure TBGRACustomBitmap.Blend(AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AIgnoreDestAlpha: boolean);\nbegin\n  BlendRect(ClipRect, AColor, AOperation, AIgnoreDestAlpha);\nend;\n\nprocedure TBGRACustomBitmap.BlendOver(AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean; AIgnoreDestAlpha: boolean);\nbegin\n  BlendRectOver(ClipRect, AColor, AOperation, AOpacity, ALinearBlend, AIgnoreDestAlpha);\nend;\n\nprocedure TBGRACustomBitmap.BlendRect(ADest: TRect; AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AIgnoreDestAlpha: boolean);\nbegin\n  if AIgnoreDestAlpha then\n    BlendRect(ADest, AColor, AOperation, [cAlpha])\n    else BlendRect(ADest, AColor, AOperation, []);\nend;\n\nprocedure TBGRACustomBitmap.BlendRectOver(ADest: TRect; AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean;\n  AIgnoreDestAlpha: boolean);\nbegin\n  if AIgnoreDestAlpha then\n    BlendRectOver(ADest, AColor, AOperation, AOpacity, ALinearBlend,[cAlpha])\n    else BlendRectOver(ADest, AColor, AOperation, AOpacity, ALinearBlend, []);\nend;\n\nprocedure TBGRACustomBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; ADrawMode: TDrawMode);\nbegin\n  FillMask(x, y, AMask, ATexture, ADrawMode, 255);\nend;\n\nprocedure TBGRACustomBitmap.VerticalFlip(ARect: TRect);\nbegin\n  inherited VerticalFlip(ARect);\n  if Assigned(XorMask) then XorMask.VerticalFlip(ARect);\nend;\n\nprocedure TBGRACustomBitmap.HorizontalFlip(ARect: TRect);\nbegin\n  inherited HorizontalFlip(ARect);\n  if Assigned(XorMask) then XorMask.HorizontalFlip(ARect);\nend;\n\nprocedure TBGRACustomBitmap.RotateUDInplace(ARect: TRect);\nbegin\n  inherited RotateUDInplace(ARect);\n  if Assigned(XorMask) then XorMask.RotateUDInplace(ARect);\nend;\n\nfunction TBGRACustomBitmap.RotateCW(ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(Inherited RotateCW(ACopyProperties));\n  if Assigned(XorMask) then result.FXorMask := self.XorMask.RotateCW(ACopyProperties);\nend;\n\nfunction TBGRACustomBitmap.RotateCCW(ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(Inherited RotateCCW(ACopyProperties));\n  if Assigned(XorMask) then result.FXorMask := self.XorMask.RotateCCW(ACopyProperties);\nend;\n\nfunction TBGRACustomBitmap.RotateUD(ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(Inherited RotateUD(ACopyProperties));\n  if Assigned(XorMask) then result.FXorMask := self.XorMask.RotateUD(ACopyProperties);\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurRadial(radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurRadial(radius, blurType, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurRadial(const ABounds: TRect; radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurRadial(ABounds, radius, blurType, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurRadial(radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurRadial(radiusX,radiusY, blurType, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurRadial(const ABounds: TRect; radiusX,\n  radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurRadial(ABounds, radiusX,radiusY, blurType, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurMotion(distance: single; angle: single;\n  oriented: boolean; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurMotion(distance, angle, oriented, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterBlurMotion(const ABounds: TRect; distance: single;\n  angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterBlurMotion(ABounds, distance, angle, oriented, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterCustomBlur(mask, ACopyProperties));\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRACustomBitmap.FilterCustomBlur(const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGRACustomBitmap;\nbegin\n  result := TBGRACustomBitmap(inherited FilterCustomBlur(ABounds,mask, ACopyProperties));\nend;{$ENDIF}\n\nfunction TBGRACustomBitmap.GetImageBoundsWithin(const ARect: TRect;\n  Channel: TChannel; ANothingValue: Byte): TRect;\nbegin\n  result := InternalGetImageBoundsWithin(self,nil,ARect,[Channel],ANothingValue);\nend;\n\nfunction TBGRACustomBitmap.GetImageBoundsWithin(const ARect: TRect;\n  Channels: TChannels; ANothingValue: Byte): TRect;\nbegin\n  result := InternalGetImageBoundsWithin(self,nil,ARect,Channels,ANothingValue);\nend;\n\nfunction TBGRACustomBitmap.ScanAtIntegerExpanded(X, Y: integer): TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanAtInteger(X,Y));\nend;\n\nfunction TBGRACustomBitmap.ScanNextExpandedPixel: TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanNextPixel);\nend;\n\nfunction TBGRACustomBitmap.ScanAtExpanded(X, Y: Single): TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanAt(X,Y));\nend;\n\nfunction TBGRACustomBitmap.ProvidesScanline(ARect: TRect): boolean;\nbegin\n  result := (ARect.Left+ScanOffset.x >= 0) and (ARect.Top+ScanOffset.y >= 0) and\n      (ARect.Right+ScanOffset.x <= Width) and (ARect.Bottom+ScanOffset.y <= Height);\nend;\n\nfunction TBGRACustomBitmap.GetScanlineAt(X, Y: integer): PBGRAPixel;\nbegin\n  result := ScanLine[y+ScanOffset.y]+x+ScanOffset.x;\nend;\n\nprocedure TBGRACustomBitmap.ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer);\nvar\n  PPixels: Pointer;\nbegin\n  ScanNextCustomChunk(ACount, PPixels);\n  AMask := (PByteMask(PPixels)+TBGRAPixel_ChannelByteOffset[ScanMaskChannel]);\n  AStride := sizeof(TBGRAPixel);\nend;\n\nfunction TBGRACustomBitmap.ScanAtIntegerMask(X,Y: integer): TByteMask;\nvar\n  c: TBGRAPixel;\nbegin\n  c := ScanAtInteger(X,Y);\n  Byte(result) := (PByte(@c)+TBGRAPixel_ChannelByteOffset[ScanMaskChannel])^;\nend;\n\nfunction TBGRACustomBitmap.ScanAtMask(X,Y: Single): TByteMask;\nvar\n  c: TBGRAPixel;\nbegin\n  c := ScanAt(X,Y);\n  Byte(result) := (PByte(@c)+TBGRAPixel_ChannelByteOffset[ScanMaskChannel])^;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgracustomtextfx.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Computation of text effects based on a text mask }\nunit BGRACustomTextFX;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRAPhongTypes, BGRAGrayscaleMask;\n\nconst DefaultOutlineWidth = 3;\n\ntype\n  { @abstract(Computes text effects based on a grayscale mask.)\n\n    This class computes at the pixel level the following effects: drop shadow, outline\n    and multi-color text (on color per letter) }\n\n  TBGRACustomTextEffect = class\n  private\n    function GetBounds: TRect;\n    function GetMaskHeight: integer;\n    class function GetOutlineWidth: integer; static;\n    function GetShadowBounds(ARadius: integer): TRect;\n    function GetMaskWidth: integer;\n    function GetTextHeight: integer;\n    function GetTextWidth: integer;\n    procedure SetShadowQuality(AValue: TRadialBlurType);\n  protected\n    FShadowQuality: TRadialBlurType;\n    FTextMask: TGrayscaleMask;\n    FShadowRadius: integer;\n    FOutlineMask, FShadowMask : TGrayscaleMask;\n    FShadingMask: TBGRACustomBitmap;\n    FShadingAltitude: integer;\n    FShadingRounded: boolean;\n    FTextSize: TSize;\n    FOffset: TPoint;\n    function DrawMaskMulticolored(ADest: TBGRACustomBitmap; AMask: TCustomUniversalBitmap; X,Y: Integer; const AColors: array of TBGRAPixel): TRect;\n    function DrawMask(ADest: TBGRACustomBitmap; AMask: TCustomUniversalBitmap; X,Y: Integer; AColor: TBGRAPixel): TRect; overload;\n    function DrawMask(ADest: TBGRACustomBitmap; AMask: TCustomUniversalBitmap; X,Y: Integer; ATexture: IBGRAScanner): TRect; overload;\n    function InternalDrawShaded(ADest: TBGRACustomBitmap; X,Y: integer; Shader: TCustomPhongShading; Altitude: integer; AColor: TBGRAPixel; ATexture: IBGRAScanner; ARounded: Boolean): TRect;\n    procedure Init(AMask: TGrayscaleMask; AMaskOwner: boolean; AWidth,AHeight: integer; AOffset: TPoint);\n  public\n    constructor Create(AMask: TBGRACustomBitmap; AMaskOwner: boolean; AWidth,AHeight: integer; AOffset: TPoint);\n    constructor Create(AMask: TGrayscaleMask; AMaskOwner: boolean; AWidth,AHeight: integer; AOffset: TPoint);\n\n    {$IFNDEF BGRABITMAP_CORE}procedure ApplySphere;{$ENDIF}\n    {$IFNDEF BGRABITMAP_CORE}procedure ApplyVerticalCylinder;{$ENDIF}\n    {$IFNDEF BGRABITMAP_CORE}procedure ApplyHorizontalCylinder;{$ENDIF}\n    function Draw(ADest: TBGRACustomBitmap; X,Y: integer; AColor: TBGRAPixel): TRect; overload;\n    function Draw(ADest: TBGRACustomBitmap; X,Y: integer; ATexture: IBGRAScanner): TRect; overload;\n    function Draw(ADest: TBGRACustomBitmap; X, Y: integer; AColor: TBGRAPixel; AAlign: TAlignment): TRect; overload;\n    function Draw(ADest: TBGRACustomBitmap; X, Y: integer; ATexture: IBGRAScanner; AAlign: TAlignment): TRect; overload;\n\n    function DrawShaded(ADest: TBGRACustomBitmap; X,Y: integer; Shader: TCustomPhongShading; Altitude: integer; AColor: TBGRAPixel; ARounded: Boolean = true): TRect; overload;\n    function DrawShaded(ADest: TBGRACustomBitmap; X,Y: integer; Shader: TCustomPhongShading; Altitude: integer; ATexture: IBGRAScanner; ARounded: Boolean = true): TRect; overload;\n    function DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer; Shader: TCustomPhongShading; Altitude: integer; AColor: TBGRAPixel; AAlign: TAlignment; ARounded: Boolean = true): TRect; overload;\n    function DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer; Shader: TCustomPhongShading; Altitude: integer; ATexture: IBGRAScanner; AAlign: TAlignment; ARounded: Boolean = true): TRect; overload;\n\n    function DrawMulticolored(ADest: TBGRACustomBitmap; X,Y: integer; const AColors: array of TBGRAPixel): TRect; overload;\n    function DrawMulticolored(ADest: TBGRACustomBitmap; X,Y: integer; const AColors: array of TBGRAPixel; AAlign: TAlignment): TRect; overload;\n    function DrawOutline(ADest: TBGRACustomBitmap; X,Y: integer; AColor: TBGRAPixel): TRect; overload;\n    function DrawOutline(ADest: TBGRACustomBitmap; X,Y: integer; ATexture: IBGRAScanner): TRect; overload;\n    function DrawOutline(ADest: TBGRACustomBitmap; X,Y: integer; AColor: TBGRAPixel; AAlign: TAlignment): TRect; overload;\n    function DrawOutline(ADest: TBGRACustomBitmap; X,Y: integer; ATexture: IBGRAScanner; AAlign: TAlignment): TRect; overload;\n    function DrawShadow(ADest: TBGRACustomBitmap; X,Y,Radius: integer; AColor: TBGRAPixel): TRect; overload;\n    function DrawShadow(ADest: TBGRACustomBitmap; X,Y,Radius: integer; AColor: TBGRAPixel; AAlign: TAlignment): TRect; overload;\n    destructor Destroy; override;\n    property TextMask: TGrayscaleMask read FTextMask;\n    property TextMaskOffset: TPoint read FOffset;\n    property Width: integer read GetTextWidth; deprecated;\n    property Height: integer read GetTextHeight; deprecated;\n    property MaskWidth: integer read GetMaskWidth;\n    property MaskHeight: integer read GetMaskHeight;\n    property TextSize: TSize read FTextSize;\n    property TextWidth: integer read GetTextWidth;\n    property TextHeight: integer read GetTextHeight;\n    property Bounds: TRect read GetBounds;\n    property ShadowBounds[ARadius: integer]: TRect read GetShadowBounds;\n    property ShadowQuality: TRadialBlurType read FShadowQuality write SetShadowQuality;\n    class property OutlineWidth: integer read GetOutlineWidth;\n  end;\n\nimplementation\n\nuses Math, BGRAGradientScanner, BGRAFilterBlur;\n\nprocedure BGRACustomReplace(var Destination: TBGRACustomBitmap; Temp: TObject); overload;\nbegin\n  Destination.Free;\n  Destination := Temp as TBGRACustomBitmap;\nend;\n\nprocedure BGRACustomReplace(var Destination: TGrayscaleMask; Temp: TObject); overload;\nbegin\n  Destination.Free;\n  Destination := Temp as TGrayscaleMask;\nend;\n\n{ TBGRACustomTextEffect }\n\nfunction TBGRACustomTextEffect.GetBounds: TRect;\nbegin\n  if FTextMask = nil then\n    result := EmptyRect else\n  with TextMaskOffset do\n    result := rect(X,Y,X+FTextMask.Width,Y+FTextMask.Height);\nend;\n\nfunction TBGRACustomTextEffect.GetMaskHeight: integer;\nbegin\n  if FTextMask = nil then\n    result := 0\n  else\n    result := FTextMask.Height;\nend;\n\nclass function TBGRACustomTextEffect.GetOutlineWidth: integer; static;\nbegin\n  result := DefaultOutlineWidth;\nend;\n\nfunction TBGRACustomTextEffect.GetShadowBounds(ARadius: integer): TRect;\nbegin\n  result := Bounds;\n  if (ARadius > 0) and not result.IsEmpty then\n    result.Inflate(ARadius, ARadius);\nend;\n\nfunction TBGRACustomTextEffect.GetMaskWidth: integer;\nbegin\n  if FTextMask = nil then\n    result := 0\n  else\n    result := FTextMask.Width;\nend;\n\nfunction TBGRACustomTextEffect.GetTextHeight: integer;\nbegin\n  result := FTextSize.cy;\nend;\n\nfunction TBGRACustomTextEffect.GetTextWidth: integer;\nbegin\n  result := FTextSize.cx;\nend;\n\nprocedure TBGRACustomTextEffect.SetShadowQuality(AValue: TRadialBlurType);\nbegin\n  if FShadowQuality=AValue then Exit;\n  FShadowQuality:=AValue;\n  FreeAndNil(FShadowMask);\nend;\n\nfunction TBGRACustomTextEffect.DrawMaskMulticolored(ADest: TBGRACustomBitmap;\n  AMask: TCustomUniversalBitmap; X, Y: Integer; const AColors: array of TBGRAPixel\n  ): TRect;\nvar\n  scan: TBGRASolidColorMaskScanner;\n  xb,yb,startX,numColor: integer;\n  p0,p: PByte;\n  emptyCol, nextCol: boolean;\nbegin\n  if (AMask = nil) or (length(AColors)=0) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  if (length(AColors)=1) then\n  begin\n    result := DrawMask(ADest,AMask,X,Y,AColors[0]);\n    exit;\n  end;\n  scan := TBGRASolidColorMaskScanner.Create(AMask,Point(-X,-Y),AColors[0]);\n  numColor := 0;\n  startX := -1;\n  p0 := AMask.DataByte;\n  for xb := 0 to AMask.Width-1 do\n  begin\n    p := p0;\n\n    if startX=-1 then\n    begin\n      emptyCol := true;\n      for yb := AMask.Height-1 downto 0 do\n      begin\n        if (p^ <> 0) then\n        begin\n          emptyCol := false;\n          break;\n        end;\n        inc(p, AMask.Width);\n      end;\n\n      if not emptyCol then\n      begin\n        if startX=-1 then\n          startX := xb;\n      end else\n      begin\n        if startX<>-1 then\n        begin\n          ADest.FillRect(X+startX,Y,X+xb,Y+AMask.Height,scan,dmDrawWithTransparency);\n          inc(numColor);\n          if numColor = length(AColors) then\n            numColor := 0;\n          scan.Color := AColors[numColor];\n          startX := -1;\n        end;\n      end;\n\n    end else\n    begin\n      emptyCol := true;\n      nextCol := true;\n      for yb := AMask.Height-1 downto 0 do\n      begin\n        if (p^ <> 0) then\n        begin\n          emptyCol := false;\n          if ((p-1)^ <> 0) then\n          begin\n            nextCol := false;\n            break;\n          end;\n        end;\n        inc(p, AMask.Width);\n      end;\n      if nextCol or emptyCol then\n      begin\n        ADest.FillRect(X+startX,Y,X+xb,Y+AMask.Height,scan,dmDrawWithTransparency);\n        inc(numColor);\n        if numColor = length(AColors) then\n          numColor := 0;\n        scan.Color := AColors[numColor];\n        if emptyCol then startX := -1\n         else startX := xb;\n      end;\n    end;\n\n    inc(p0);\n  end;\n  if startX<>-1 then\n    ADest.FillRect(X+startX,Y,X+AMask.Width,Y+AMask.Height,scan,dmDrawWithTransparency);\n  scan.Free;\n  result := rect(X,Y,X+AMask.Width,Y+AMask.Height);\nend;\n\nfunction TBGRACustomTextEffect.DrawMask(ADest: TBGRACustomBitmap;\n  AMask: TCustomUniversalBitmap; X, Y: Integer; AColor: TBGRAPixel): TRect;\nvar\n  scan: TBGRACustomScanner;\nbegin\n  if (AMask = nil) or (AColor.alpha = 0) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  scan := TBGRASolidColorMaskScanner.Create(AMask,Point(-X,-Y),AColor);\n  ADest.FillRect(X,Y,X+AMask.Width,Y+AMask.Height,scan,dmDrawWithTransparency);\n  scan.Free;\n  result := rect(X,Y,X+AMask.Width,Y+AMask.Height);\nend;\n\nfunction TBGRACustomTextEffect.DrawMask(ADest: TBGRACustomBitmap;\n  AMask: TCustomUniversalBitmap; X, Y: Integer; ATexture: IBGRAScanner): TRect;\nvar\n  scan: TBGRACustomScanner;\nbegin\n  if (AMask = nil) or (ATexture = nil) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  scan := TBGRATextureMaskScanner.Create(AMask,Point(-X,-Y),ATexture);\n  ADest.FillRect(X,Y,X+AMask.Width,Y+AMask.Height,scan,dmDrawWithTransparency);\n  scan.Free;\n  result := rect(X,Y,X+AMask.Width,Y+AMask.Height);\nend;\n\nfunction TBGRACustomTextEffect.InternalDrawShaded(ADest: TBGRACustomBitmap; X,\n  Y: integer; Shader: TCustomPhongShading; Altitude: integer;\n  AColor: TBGRAPixel; ATexture: IBGRAScanner; ARounded: Boolean): TRect;\nvar\n  WithMargin,GrayMap: TGrayscaleMask;\n  HeightMap: TBGRACustomBitmap;\n  p: PBGRAPixel;\n  n,maxv: integer;\n  v,blurRadius: single;\n  iBlurRadius: integer;\nbegin\n  if (FTextMask = nil) or (FTextMask.Width = 0) or (FTextMask.Height = 0) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n\n  if (FShadingMask <> nil) and ((FShadingAltitude <> Altitude) or (FShadingRounded <> ARounded)) then\n    FreeAndNil(FShadingMask);\n\n  if FShadingMask = nil then\n  begin\n    FShadingRounded := ARounded;\n    FShadingAltitude := Altitude;\n\n    if ARounded then blurRadius := Altitude\n      else blurRadius := Altitude*0.5;\n\n    iBlurRadius := ceil(blurRadius);\n\n    WithMargin := TGrayscaleMask.Create(FTextMask.Width+iBlurRadius*2, FTextMask.Height+iBlurRadius*2,BGRABlack);\n    WithMargin.PutImage(iBlurRadius, iBlurRadius, FTextMask, dmSet);\n    if (iBlurRadius <> blurRadius) and (blurRadius < 3) then\n      GrayMap := BGRAFilterBlur.FilterBlurRadial(WithMargin,\n        round(blurRadius*10), round(blurRadius*10), rbPrecise) as TGrayscaleMask\n    else\n      GrayMap := BGRAFilterBlur.FilterBlurRadial(WithMargin, iBlurRadius, iBlurRadius,\n        rbFast) as TGrayscaleMask;\n    HeightMap := BGRABitmapFactory.Create;\n    HeightMap.SetSize(GrayMap.Width, GrayMap.Height);\n    GrayMap.Draw(HeightMap, 0, 0);\n    GrayMap.Free;\n\n    p := HeightMap.Data;\n    maxv := 0;\n    for n := HeightMap.NbPixels-1 downto 0 do\n    begin\n      if p^.green > maxv then\n        maxv := p^.green;\n      inc(p);\n    end;\n\n    if maxv > 0 then\n    begin\n      p := HeightMap.Data;\n      for n := HeightMap.NbPixels-1 downto 0 do\n      begin\n        v := p^.green/maxv;\n        if ARounded then\n        begin\n          if v <= 0.5 then\n            v := v*v*2 else\n            v := 1-(1-v)*(1-v)*2;\n        end;\n        p^ := MapHeightToBGRA( v, p^.alpha);\n        inc(p);\n      end;\n    end;\n\n    HeightMap.ApplyMask(WithMargin);\n    WithMargin.Free;\n    BGRACustomReplace(HeightMap, HeightMap.GetPart( rect(iBlurRadius, iBlurRadius,\n                                 HeightMap.Width-iBlurRadius, HeightMap.Height-iBlurRadius) ) );\n    FShadingMask := HeightMap;\n  end;\n\n  inc(X, FOffset.X);\n  Inc(Y, FOffset.Y);\n  if ATexture <> nil then\n    Shader.DrawScan(ADest,FShadingMask,Altitude,X,Y, ATexture)\n  else\n    Shader.Draw(ADest,FShadingMask,Altitude,X,Y, AColor);\n  result := rect(X,Y, X+FShadingMask.Width,Y+FShadingMask.Height);\nend;\n\nprocedure TBGRACustomTextEffect.Init(AMask: TGrayscaleMask;\n  AMaskOwner: boolean; AWidth, AHeight: integer; AOffset: TPoint);\nbegin\n  FTextSize := Size(AWidth,AHeight);\n  FOffset := AOffset;\n  if not AMaskOwner then\n    FTextMask := AMask.Duplicate\n  else\n    FTextMask := AMask;\n  FShadowQuality:= rbFast;\nend;\n\nfunction TBGRACustomTextEffect.Draw(ADest: TBGRACustomBitmap; X, Y: integer;\n  AColor: TBGRAPixel; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := Draw(ADest,X-TextSize.cx,Y,AColor);\n  taCenter: result := Draw(ADest,X-TextSize.cx div 2,Y,AColor);\n  else result := Draw(ADest,X,Y,AColor);\n  end;\nend;\n\nfunction TBGRACustomTextEffect.Draw(ADest: TBGRACustomBitmap; X, Y: integer;\n  ATexture: IBGRAScanner; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := Draw(ADest,X-TextSize.cx,Y,ATexture);\n  taCenter: result := Draw(ADest,X-TextSize.cx div 2,Y,ATexture);\n  else result := Draw(ADest,X,Y,ATexture);\n  end;\nend;\n\nfunction TBGRACustomTextEffect.DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer;\n  Shader: TCustomPhongShading; Altitude: integer; AColor: TBGRAPixel;\n  ARounded: Boolean): TRect;\nbegin\n  result := InternalDrawShaded(ADest,X,Y,Shader,Altitude,AColor,nil,ARounded);\nend;\n\nfunction TBGRACustomTextEffect.DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer;\n  Shader: TCustomPhongShading; Altitude: integer; ATexture: IBGRAScanner;\n  ARounded: Boolean): TRect;\nbegin\n  result := InternalDrawShaded(ADest,X,Y,Shader,Altitude,BGRAPixelTransparent,ATexture,ARounded);\nend;\n\nfunction TBGRACustomTextEffect.DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer;\n  Shader: TCustomPhongShading; Altitude: integer; AColor: TBGRAPixel;\n  AAlign: TAlignment; ARounded: Boolean): TRect;\nbegin\n  Case AAlign of\n  taLeftJustify: result := DrawShaded(ADest,X,Y,Shader,Altitude,AColor,ARounded);\n  taRightJustify: result := DrawShaded(ADest,X-TextSize.cx,Y,Shader,Altitude,AColor,ARounded);\n  taCenter: result := DrawShaded(ADest,X-TextSize.cx div 2,Y,Shader,Altitude,AColor,ARounded);\n  else\n    result := EmptyRect;\n  end;\nend;\n\nfunction TBGRACustomTextEffect.DrawShaded(ADest: TBGRACustomBitmap; X, Y: integer;\n  Shader: TCustomPhongShading; Altitude: integer; ATexture: IBGRAScanner;\n  AAlign: TAlignment; ARounded: Boolean): TRect;\nbegin\n  Case AAlign of\n  taLeftJustify: result := DrawShaded(ADest,X,Y,Shader,Altitude,ATexture,ARounded);\n  taRightJustify: result := DrawShaded(ADest,X-TextSize.cx,Y,Shader,Altitude,ATexture,ARounded);\n  taCenter: result := DrawShaded(ADest,X-TextSize.cx div 2,Y,Shader,Altitude,ATexture,ARounded);\n  else\n    result := EmptyRect;\n  end;\nend;\n\nconstructor TBGRACustomTextEffect.Create(AMask: TBGRACustomBitmap; AMaskOwner: boolean; AWidth,\n  AHeight: integer; AOffset: TPoint);\nvar\n  grayMask: TGrayscaleMask;\nbegin\n  grayMask := TGrayscaleMask.Create(AMask, cGreen);\n  if AMaskOwner then AMask.Free;\n  Init(grayMask, true, AWidth, AHeight, AOffset);\nend;\n\nconstructor TBGRACustomTextEffect.Create(AMask: TGrayscaleMask;\n  AMaskOwner: boolean; AWidth, AHeight: integer; AOffset: TPoint);\nbegin\n  Init(AMask, AMaskOwner, AWidth, AHeight, AOffset);\nend;\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRACustomTextEffect.ApplySphere;\nbegin\n  if FTextMask = nil then exit;\n  FreeAndNil(FOutlineMask);\n  FreeAndNil(FShadowMask);\n  FShadowRadius := 0;\n  BGRACustomReplace(FTextMask, FTextMask.FilterSphere);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRACustomTextEffect.ApplyVerticalCylinder;\nbegin\n  if FTextMask = nil then exit;\n  FreeAndNil(FOutlineMask);\n  FreeAndNil(FShadowMask);\n  FShadowRadius := 0;\n  BGRACustomReplace(FTextMask, FTextMask.FilterCylinder);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRACustomTextEffect.ApplyHorizontalCylinder;\nbegin\n  if FTextMask = nil then exit;\n  FreeAndNil(FOutlineMask);\n  FreeAndNil(FShadowMask);\n  FShadowRadius := 0;\n  BGRACustomReplace(FTextMask,FTextMask.RotateCW);\n  BGRACustomReplace(FTextMask,FTextMask.FilterCylinder);\n  BGRACustomReplace(FTextMask,FTextMask.RotateCCW);\nend;{$ENDIF}\n\nfunction TBGRACustomTextEffect.Draw(ADest: TBGRACustomBitmap; X, Y: integer;\n  AColor: TBGRAPixel): TRect;\nbegin\n  result := DrawMask(ADest,FTextMask,X+FOffset.X,Y+FOffset.Y,AColor);\nend;\n\nfunction TBGRACustomTextEffect.Draw(ADest: TBGRACustomBitmap; X, Y: integer;\n  ATexture: IBGRAScanner): TRect;\nbegin\n  result := DrawMask(ADest,FTextMask,X+FOffset.X,Y+FOffset.Y,ATexture);\nend;\n\nfunction TBGRACustomTextEffect.DrawMulticolored(ADest: TBGRACustomBitmap; X,\n  Y: integer; const AColors: array of TBGRAPixel): TRect;\nbegin\n  result := DrawMaskMulticolored(ADest,FTextMask,X+FOffset.X,Y+FOffset.Y,AColors);\nend;\n\nfunction TBGRACustomTextEffect.DrawMulticolored(ADest: TBGRACustomBitmap; X,\n  Y: integer; const AColors: array of TBGRAPixel; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := DrawMulticolored(ADest,X-TextSize.cx,Y,AColors);\n  taCenter: result := DrawMulticolored(ADest,X-TextSize.cx div 2,Y,AColors);\n  else result := DrawMulticolored(ADest,X,Y,AColors);\n  end;\nend;\n\nfunction TBGRACustomTextEffect.DrawOutline(ADest: TBGRACustomBitmap; X, Y: integer;\n  AColor: TBGRAPixel): TRect;\nbegin\n  if (FTextMask = nil) or (FTextMask.Width = 0) or (FTextMask.Height = 0) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  if FOutlineMask = nil then\n  begin\n    FOutlineMask := FTextMask.FilterContour;\n    FOutlineMask.Negative;\n  end;\n  result := DrawMask(ADest,FOutlineMask,X+FOffset.X,Y+FOffset.Y,AColor);\nend;\n\nfunction TBGRACustomTextEffect.DrawOutline(ADest: TBGRACustomBitmap; X, Y: integer;\n  ATexture: IBGRAScanner): TRect;\nbegin\n  if (FTextMask = nil) or (FTextMask.Width = 0) or (FTextMask.Height = 0) then\n  begin\n    result := EmptyRect;\n    exit;\n  end;\n  if FOutlineMask = nil then\n  begin\n    FOutlineMask := FTextMask.FilterContour;\n    FOutlineMask.Negative;\n  end;\n  result := DrawMask(ADest,FOutlineMask,X+FOffset.X,Y+FOffset.Y,ATexture);\nend;\n\nfunction TBGRACustomTextEffect.DrawOutline(ADest: TBGRACustomBitmap; X, Y: integer;\n  AColor: TBGRAPixel; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := DrawOutline(ADest,X-TextSize.cx,Y,AColor);\n  taCenter: result := DrawOutline(ADest,X-TextSize.cx div 2,Y,AColor);\n  else result := DrawOutline(ADest,X,Y,AColor);\n  end;\nend;\n\nfunction TBGRACustomTextEffect.DrawOutline(ADest: TBGRACustomBitmap; X, Y: integer;\n  ATexture: IBGRAScanner; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := DrawOutline(ADest,X-TextSize.cx,Y,ATexture);\n  taCenter: result := DrawOutline(ADest,X-TextSize.cx div 2,Y,ATexture);\n  else result := DrawOutline(ADest,X,Y,ATexture);\n  end;\nend;\n\nfunction TBGRACustomTextEffect.DrawShadow(ADest: TBGRACustomBitmap; X, Y,\n  Radius: integer; AColor: TBGRAPixel): TRect;\nbegin\n  if AColor.alpha = 0 then exit(EmptyRect);\n  if (Radius <= 0) or (FTextMask = nil) or (FTextMask.Width = 0) or (FTextMask.Height = 0) then\n  begin\n    result := Draw(ADest,X,Y,AColor);\n    exit;\n  end;\n  if (FShadowRadius <> Radius) or (FShadowMask = nil) then\n  begin\n    FShadowRadius := Radius;\n    FreeAndNil(FShadowMask);\n    FShadowMask := TGrayscaleMask.Create(FTextMask.Width+Radius*2,FTextMask.Height+Radius*2, 0);\n    FShadowMask.PutImage(Radius,Radius,FTextMask,dmSet);\n    BGRACustomReplace(FShadowMask, BGRAFilterBlur.FilterBlurRadial(FShadowMask, Radius, Radius, ShadowQuality));\n  end;\n  Inc(X,FOffset.X-Radius);\n  Inc(Y,FOffset.Y-Radius);\n  DrawMask(ADest,FShadowMask,X,Y,AColor);\n  result := rect(X,Y,X+FShadowMask.Width,Y+FShadowMask.Height);\nend;\n\nfunction TBGRACustomTextEffect.DrawShadow(ADest: TBGRACustomBitmap; X, Y,\n  Radius: integer; AColor: TBGRAPixel; AAlign: TAlignment): TRect;\nbegin\n  Case AAlign of\n  taRightJustify: result := DrawShadow(ADest,X-TextSize.cx,Y,Radius,AColor);\n  taCenter: result := DrawShadow(ADest,X-TextSize.cx div 2,Y,Radius,AColor);\n  else result := DrawShadow(ADest,X,Y,Radius,AColor);\n  end;\nend;\n\ndestructor TBGRACustomTextEffect.Destroy;\nbegin\n  FShadowMask.free;\n  FTextMask.Free;\n  FOutlineMask.Free;\n  FShadingMask.Free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgradefaultbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Implements basic operations on bitmaps (not optimized for a platform).)\n\n  It is not to be used directly nor added to the **uses** clause. Instead use\n  BGRABitmap or one of its variants. }\nunit BGRADefaultBitmap;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\n{ This unit contains TBGRADefaultBitmap class. This class contains basic drawing routines,\n  and call functions from other units to perform advanced drawing functions. }\n\nuses\n  SysUtils, BGRAClasses, FPImage, BGRAGraphics, BGRABitmapTypes,\n  {$IFDEF BGRABITMAP_USE_FPCANVAS}FPImgCanv,{$ENDIF}\n  BGRATransform, UniversalDrawer\n  {$IFNDEF BGRABITMAP_CORE},\n  BGRAGrayscaleMask, BGRATextBidi, BGRACanvas, BGRACanvas2D{$ENDIF};\n\ntype\n  TBGRAPtrBitmap = class;\n  {=== TBGRABitmap reference ===}\n\n  { @abstract(Base implementation for all TBGRABitmap classes.)\n\n    It implements most function to the exception from implementations specific to the\n    widgetset.\n  }\n\n  { TBGRADefaultBitmap }\n\n  TBGRADefaultBitmap = class(TBGRACustomBitmap)\n  private\n    { Bounds checking which are shared by drawing functions. These functions check\n      if the coordinates are visible and return true if it is the case, swap\n      coordinates if necessary and make them fit into the clipping rectangle }\n    function CheckRectBounds(var x,y,x2,y2: integer; minsize: integer): boolean; inline;\n    function CheckAntialiasRectBounds(var x,y,x2,y2: single; w: single): boolean;\n    {$IFNDEF BGRABITMAP_CORE}function GetCanvasBGRA: TBGRACanvas;{$ENDIF}\n    {$IFNDEF BGRABITMAP_CORE}function GetCanvas2D: TBGRACanvas2D;{$ENDIF}\n    procedure GradientFillDithered(x, y, x2, y2: integer; c1, c2: TBGRAPixel;\n      gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n      gammaColorCorrection: boolean = True; Sinus: Boolean=False;\n      ditherAlgo: TDitheringAlgorithm = daFloydSteinberg); overload;\n    procedure GradientFillDithered(x, y, x2, y2: integer; gradient: TBGRACustomGradient;\n      gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n      Sinus: Boolean=False;\n      ditherAlgo: TDitheringAlgorithm = daFloydSteinberg); overload;\n\n  protected\n    //Pixel data\n    FDataModified: boolean;              //if data image has changed so TBitmap should be updated\n\n    //GUI bitmap object\n    FBitmap:   TBitmap;\n    FBitmapModified: boolean;         //if TBitmap has changed so pixel data should be updated\n    FCanvasOpacity: byte;             //opacity used with standard canvas functions\n    FAlphaCorrectionNeeded: boolean;  //the alpha channel is not correct because standard functions do not\n                                      //take it into account\n\n    //FreePascal drawing routines\n    {$IFDEF BGRABITMAP_USE_FPCANVAS}FCanvasFP: TFPImageCanvas;{$ENDIF}\n    FCanvasDrawModeFP: TDrawMode;\n    FCanvasPixelProcFP: procedure(x, y: int32or64; const col: TBGRAPixel) of object;\n\n    {$IFNDEF BGRABITMAP_CORE}//canvas-like with antialiasing and texturing\n    FCanvasBGRA: TBGRACanvas;\n    FCanvas2D: TBGRACanvas2D;{$ENDIF}\n\n    //drawing options\n    FFontHeight: integer;\n    FFontRenderer: TBGRACustomFontRenderer;\n\n    //Pixel data\n    function LoadFromRawImage(ARawImage: TRawImage; DefaultOpacity: byte;\n      AlwaysReplaceAlpha: boolean = False; RaiseErrorOnInvalidPixelFormat: boolean = True): boolean; virtual; abstract;\n\n    //FreePascal drawing routines\n    {$IFDEF BGRABITMAP_USE_FPCANVAS}function GetCanvasFP: TFPImageCanvas; override;{$ENDIF}\n    procedure SetCanvasDrawModeFP(const AValue: TDrawMode); override;\n    function GetCanvasDrawModeFP: TDrawMode; override;\n\n    //GUI bitmap object\n    function GetBitmap: TBitmap; override;\n    function GetCanvas: TCanvas; override;\n    function GetCanvasOpacity: byte; override;\n    procedure SetCanvasOpacity(AValue: byte); override;\n    function GetCanvasAlphaCorrection: boolean; override;\n    procedure SetCanvasAlphaCorrection(const AValue: boolean); override;\n    procedure DoAlphaCorrection;\n    procedure DiscardBitmapChange; inline;\n    procedure DoLoadFromBitmap; virtual;\n\n    function CreatePtrBitmap(AWidth,AHeight: integer; AData: PBGRAPixel): TBGRAPtrBitmap; virtual;\n\n    procedure RebuildBitmap; virtual; abstract;\n    procedure FreeBitmap; virtual;\n\n    procedure Init; override;\n\n    {TFPCustomImage}\n    procedure SetInternalColor(x, y: integer; const Value: TFPColor); override;\n    function GetInternalColor(x, y: integer): TFPColor; override;\n    procedure SetInternalPixel(x, y: integer; Value: integer); override;\n    function GetInternalPixel(x, y: integer): integer; override;\n\n    {Image functions}\n    function FineResample(NewWidth, NewHeight: integer; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n    function FineResample(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n\n    function SimpleStretch(NewWidth, NewHeight: integer; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n    function SimpleStretch(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n\n    function CheckEmpty: boolean; override;\n    function GetHasTransparentPixels: boolean; override;\n    function GetHasSemiTransparentPixels: boolean; override;\n    function GetAverageColor: TColor; override;\n    function GetAveragePixel: TBGRAPixel; override;\n\n  protected //pen style accesors\n    function GetPenJoinStyle: TPenJoinStyle; override;\n    procedure SetPenJoinStyle(const AValue: TPenJoinStyle); override;\n    function GetPenMiterLimit: single; override;\n    procedure SetPenMiterLimit(const AValue: single); override;\n    function GetCustomPenStyle: TBGRAPenStyle; override;\n    procedure SetCustomPenStyle(const AValue: TBGRAPenStyle); override;\n    procedure SetPenStyle(const AValue: TPenStyle); override;\n    function GetPenStyle: TPenStyle; override;\n\n    function GetArrowEndSize: TPointF; override;\n    function GetArrowStartSize: TPointF; override;\n    procedure SetArrowEndSize(AValue: TPointF); override;\n    procedure SetArrowStartSize(AValue: TPointF); override;\n    function GetArrowEndOffset: single; override;\n    function GetArrowStartOffset: single; override;\n    procedure SetArrowEndOffset(AValue: single); override;\n    procedure SetArrowStartOffset(AValue: single); override;\n    function GetArrowEndRepeat: integer; override;\n    function GetArrowStartRepeat: integer; override;\n    procedure SetArrowEndRepeat(AValue: integer); override;\n    procedure SetArrowStartRepeat(AValue: integer); override;\n\n  protected //font accessors\n    function GetFontHeight: integer; override;\n    procedure SetFontHeight(AHeight: integer); override;\n    function GetFontFullHeight: integer; override;\n    procedure SetFontFullHeight(AHeight: integer); override;\n    function GetFontPixelMetric: TFontPixelMetric; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; virtual; abstract;\n    function GetFontVerticalAnchorOffset: single; override;\n    function GetFontAnchorRotatedOffset: TPointF; overload;\n    function GetFontAnchorRotatedOffset(ACustomOrientation: integer): TPointF; overload;\n    function GetFontRenderer: TBGRACustomFontRenderer; override;\n    procedure SetFontRenderer(AValue: TBGRACustomFontRenderer); override;\n\n    function InternalGetPixelCycle256(ix,iy: int32or64; iFactX,iFactY: int32or64): TBGRAPixel;\n    function InternalGetPixel256(ix,iy: int32or64; iFactX,iFactY: int32or64; smoothBorder: boolean): TBGRAPixel;\n    procedure InternalTextOutCurved(ACursor: TBGRACustomPathCursor; sUTF8: string; AColor: TBGRAPixel; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\n    procedure InternalTextOutLetterSpacing(x,y: single; sUTF8: string; AColor: TBGRAPixel; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\n    procedure InternalCrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadePos: byte; AFadeMask: IBGRAScanner; mode: TDrawMode = dmDrawWithTransparency);\n\n    procedure InternalArc(cx,cy,rx,ry: single; StartAngleRad,EndAngleRad: Single; ABorderColor: TBGRAPixel; w: single;\n      AFillColor: TBGRAPixel; AOptions: TArcOptions; ADrawChord: boolean = false; ATexture: IBGRAScanner = nil); override;\n    function InternalNew: TBGRADefaultBitmap; override;\n    procedure InternalTextOutOffset(x, y: single; const sUTF8: string;\n      AColor: TBGRAPixel; ATexture: IBGRAScanner; AOffsets: array of TPointF);\n      override;\n\n  public\n    {$IFNDEF BGRABITMAP_CORE}{** Provides a canvas with opacity and antialiasing }\n    property CanvasBGRA: TBGRACanvas read GetCanvasBGRA;{$ENDIF}\n    {$IFNDEF BGRABITMAP_CORE}{** Provides a canvas with 2d transformation and similar to HTML5. }\n    property Canvas2D: TBGRACanvas2D read GetCanvas2D;{$ENDIF}\n    {** For more properties, see parent class [[TBGRACustomBitmap and IBGRAScanner#TBGRACustomBitmap|TBGRACustomBitmap]] }\n\n    procedure SetSize(AWidth, AHeight: integer); override;\n\n    {==== Constructors ====}\n\n    {------------------------- Constructors from TBGRACustomBitmap-------------}\n\n    {** Creates an image by copying the content of a ''TFPCustomImage'' }\n    constructor Create(AFPImage: TFPCustomImage; ACopyProperties: Boolean=False); overload; override;\n    {** Creates an image by copying the content of a ''TBitmap'', apply transparent color if specified and bitmap is masked }\n    constructor Create(ABitmap: TBitmap); overload; override;\n    {** Creates an image by copying the content of a ''TBitmap'', enforce/disable use of transparent color }\n    constructor Create(ABitmap: TBitmap; AUseTransparentColor: boolean); overload; override;\n\n    {** Creates an image by loading its content from the file ''AFilename''.\n        The encoding of the string is the default one for the operating system.\n        It is recommended to use the next constructor and UTF8 encoding }\n    constructor Create(AFilename: string); overload; override;\n\n    {** Creates an image by loading its content from the file ''AFilename''.\n        The boolean ''AIsUtf8Filename'' specifies if UTF8 encoding is assumed\n        for the filename }\n    constructor Create(AFilename: string; AIsUtf8: boolean); overload; override;\n    constructor Create(AFilename: string; AIsUtf8: boolean; AOptions: TBGRALoadingOptions); overload; override;\n\n    {** Creates an image by loading its content from the stream ''AStream'' }\n    constructor Create(AStream: TStream); overload; override;\n    {** Free the object and all its resources }\n    destructor Destroy; override;\n\n    {** Clear all channels of transparent pixels }\n    procedure ClearTransparentPixels; override;\n\n    {------------------------- Quasi-constructors -----------------------------}\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates a new instance with dimensions 0 x 0. }\n    function NewBitmap: TBGRADefaultBitmap; overload; override;\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates a new instance with dimensions ''AWidth'' and ''AHeight'',\n        containing transparent pixels. }\n    function NewBitmap(AWidth, AHeight: integer): TBGRADefaultBitmap; overload; override;\n\n    {* Example:\n       <syntaxhighlight>\n     * var bmp1, bmp2: TBGRABitmap;\n     * begin\n     *   bmp1 := TBGRABitmap.Create(100,100);\n     *   bmp2 := bmp1.NewBitmap(100,100);\n     *   ...\n     * end;</syntaxhighlight>\n       See tutorial 2 on [[BGRABitmap_tutorial_2|how to load and display an image]].\n     * See reference on [[TBGRACustomBitmap_and_IBGRAScanner#Load_and_save_files|loading and saving files]] }\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates a new instance with dimensions ''AWidth'' and ''AHeight'',\n        and fills it with Color }\n    function NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel): TBGRADefaultBitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TBGRADefaultBitmap; overload; override;\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates a new instance with by loading its content\n        from the file ''Filename''. The encoding of the string\n        is the default one for the operating system }\n    function NewBitmap(Filename: string): TBGRADefaultBitmap; overload; override;\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates a new instance with by loading its content\n        from the file ''Filename'' }\n    function NewBitmap(Filename: string; AIsUtf8: boolean): TBGRADefaultBitmap; overload; override;\n    function NewBitmap(Filename: string; AIsUtf8: boolean; AOptions: TBGRALoadingOptions): TBGRADefaultBitmap; overload; override;\n\n    {** Can only be called from an existing instance of ''TBGRABitmap''.\n        Creates an image by copying the content of a ''TFPCustomImage'' }\n    function NewBitmap(AFPImage: TFPCustomImage): TBGRADefaultBitmap; overload; override;\n\n    {** Assign the content of the specified ''Source''. It can be a ''TBGRACustomBitmap'' or\n        a ''TFPCustomImage'' }\n    procedure Assign(Source: TPersistent); overload; override;\n    procedure Assign(Source: TPersistent; ACopyProperties: Boolean); overload; override;\n    procedure AssignWithFixedTransparent(Source: TBitmap); overload;\n    procedure Assign(Source: TBitmap; AUseTransparentColor: boolean); overload;\n\n    {** Stores the image in the stream without compression nor header }\n    procedure Serialize(AStream: TStream); override;\n    {** Reads the image in a stream that was previously serialized }\n    procedure Deserialize(AStream: TStream); override;\n\n    // universal brushes\n    procedure SolidBrushIndirect(out ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TBGRAPixel; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                              AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n\n    {==== Pixel functions ====}\n    {** Sets the pixel by replacing the content at (''x'',''y'') with the specified color.\n        Alpha value is set to 255 (opaque) }\n    procedure SetPixel(x, y: int32or64; c: TColor); overload; override;\n    {** Applies a logical '''xor''' to the content of the pixel with the specified value.\n        This includes the alpha channel, so if you want to preserve the opacity, provide\n        a color ''c'' with alpha channel equal to zero }\n    procedure XorPixel(x, y: int32or64; const c: TBGRAPixel); override;\n    {** Draws a pixel with gamma correction at (''x'',''y''). Pixel is supplied\n        in sRGB colorspace }\n    procedure DrawPixel(x, y: int32or64; const c: TBGRAPixel); overload; override;\n    {** Draws a pixel without gamma correction at (''x'',''y''). Pixel is supplied\n        in sRGB colorspace }\n    procedure FastBlendPixel(x, y: int32or64; const c: TBGRAPixel); override;\n    {** Erase the content of the pixel by reducing the value of the\n        alpha channel. ''alpha'' specifies how much to decrease.\n        If the resulting alpha reaches zero, the content\n        is replaced by ''BGRAPixelTransparent'' }\n    procedure ErasePixel(x, y: int32or64; alpha: byte); override;\n    {** Sets the alpha value at (''x'',''y''). If ''alpha'' = 0, the\n        pixel is replaced by ''BGRAPixelTransparent'' }\n    procedure AlphaPixel(x, y: int32or64; alpha: byte); override;\n    {** Computes the value of the pixel at a floating point coordiante\n        by interpolating the values of the pixels around it.\n      * There is a one pixel wide margin around the pixel where the pixels are\n        still considered inside. If ''smoothBorder'' is set to true, pixel fade\n        to transparent.\n      * If it is more out of the bounds, the result is ''BGRAPixelTransparent''.\n      * ''AResampleFilter'' specifies how pixels must be interpolated. Accepted\n        values are ''rfBox'', ''rfLinear'', ''rfHalfCosine'' and ''rfCosine'' }\n    function GetPixel(x, y: single; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TBGRAPixel; overload; override;\n    {** Similar to previous ''GetPixel'' function, but the fractional part of\n        the coordinate is supplied with a number from 0 to 255. The actual\n        coordinate is (''x'' + ''fracX256''/256, ''y'' + ''fracY256''/256) }\n    function GetPixel256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TBGRAPixel; override;\n    {** Computes the value of the pixel at a floating point coordiante\n        by interpolating the values of the pixels around it. If the pixel\n        is out of bounds, the image is repeated.\n      * ''AResampleFilter'' specifies how pixels must be interpolated. Accepted\n        values are ''rfBox'', ''rfLinear'', ''rfHalfCosine'' and ''rfCosine'' }\n    function GetPixelCycle(x, y: single; AResampleFilter: TResampleFilter = rfLinear): TBGRAPixel; overload; override;\n    {** Similar to previous ''GetPixel'' function, but the fractional part of\n        the coordinate is supplied with a number from 0 to 255. The actual\n        coordinate is (''x'' + ''fracX256''/256, ''y'' + ''fracY256''/256) }\n    function GetPixelCycle256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter = rfLinear): TBGRAPixel; overload; override;\n    {** Computes the value of the pixel at a floating point coordiante\n        by interpolating the values of the pixels around it. ''repeatX'' and\n        ''repeatY'' specifies if the image is to be repeated or not.\n      * ''AResampleFilter'' specifies how pixels must be interpolated. Accepted\n        values are ''rfBox'', ''rfLinear'', ''rfHalfCosine'' and ''rfCosine'' }\n    function GetPixelCycle(x, y: single; AResampleFilter: TResampleFilter; repeatX: boolean; repeatY: boolean): TBGRAPixel; overload; override;\n    {** Similar to previous ''GetPixel'' function, but the fractional part of\n        the coordinate is supplied with a number from 0 to 255. The actual\n        coordinate is (''x'' + ''fracX256''/256, ''y'' + ''fracY256''/256) }\n    function GetPixelCycle256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter; repeatX: boolean; repeatY: boolean): TBGRAPixel; overload; override;\n\n    {==== Drawing lines and polylines (integer coordinates) ====}\n    {* These functions do not take into account current pen style/cap/join.\n       See [[BGRABitmap tutorial 13|coordinate system]]. }\n\n    {** Applies xor to the pixels at line ''y'' and\n        at columns ''x'' to ''x2'' included, using specified color.\n        This includes the alpha channel, so if you want to preserve the\n        opacity, provide a color ''c'' with alpha channel equal to zero }\n    procedure XorHorizLine(x, y, x2: int32or64; c: TBGRAPixel); override;\n    {** Draws an horizontal line with gamma correction at line ''y'' and\n        at columns ''x'' to ''x2'' included, using specified color }\n    procedure DrawHorizLine(x, y, x2: int32or64; ec: TExpandedPixel); override; overload;\n    {** Draws an horizontal line without gamma correction at line ''y'' and\n        at columns ''x'' to ''x2'' included, using specified color }\n    procedure FastBlendHorizLine(x, y, x2: int32or64; c: TBGRAPixel); override;\n    {** Replaces the alpha value of the pixels at line ''y'' and\n        at columns ''x'' to ''x2'' included }\n    procedure AlphaHorizLine(x, y, x2: int32or64; alpha: byte); override;\n    {** Draws an horizontal line with gamma correction at line ''y'' and\n        at columns ''x'' to ''x2'' included, using specified color,\n        and with a transparency that increases with the color difference\n        with ''compare''. If the difference is greater than ''maxDiff'',\n        pixels are not changed }\n    procedure DrawHorizLineDiff(x, y, x2: int32or64; c, compare: TBGRAPixel;\n      maxDiff: byte); override;\n    procedure HorizLineDiff(x, y, x2: int32or64; const ABrush: TUniversalBrush;\n      ACompare: TBGRAPixel; AMaxDiffW: word); override;\n\n    {** Xors a vertical line at column ''x'' and at row ''y'' to ''y2'' }\n    procedure XorVertLine(x, y, y2: int32or64; c: TBGRAPixel); override;\n    {** Draws a vertical line with gamma correction at column ''x'' and at row ''y'' to ''y2'' }\n    procedure DrawVertLine(x, y, y2: int32or64; c: TBGRAPixel); override;\n    {** Draws a vertical line without gamma correction at column ''x'' and at row ''y'' to ''y2'' }\n    procedure FastBlendVertLine(x, y, y2: int32or64; c: TBGRAPixel); override;\n    {** Replace alpha values in a vertical line at column ''x'' and at row ''y'' to ''y2'' }\n    procedure AlphaVertLine(x, y, y2: int32or64; alpha: byte); override;\n\n    {** Fills completely a rectangle, without any border, with the specified ''texture'' and\n    with the specified ''mode'' }\n    procedure FillRect(x, y, x2, y2: integer; texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm); overload; override;\n\n    {==== Rectangles, ellipses and path (floating point coordinates) ====}\n    {* These functions use the current pen style/cap/join. The parameter ''w''\n       specifies the width of the line and the base unit for dashes\n     * The coordinates are pixel-centered, so that when filling a rectangle,\n       if the supplied values are integers, the border will be half transparent.\n       If you want the border to be completely filled, you can subtract/add\n       0.5 to the coordinates to include the remaining thin border.\n       See [[BGRABitmap tutorial 13|coordinate system]]. }\n\n    {==== Multi-shape fill ====}\n\n    {** Draws and fill a polyline using current pen style/cap/join in one go.\n        The stroke is stricly over the fill even if partially transparent.\n        ''fillcolor'' specifies a color to fill the polygon formed by the points }\n    procedure DrawPolyLineAntialias(const points: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload; override;\n    {** Draws a filled polygon using current pen style/cap/join in one go.\n        The stroke is stricly over the fill even if partially transparent.\n        The polygon is always closed. You don't need to set the last point\n        to be the same as the first point. }\n    procedure DrawPolygonAntialias(const points: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload; override;\n\n    {** Draws and fills an ellipse }\n    procedure EllipseAntialias(x, y, rx, ry: single; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; override;\n    procedure EllipseAntialias(AOrigin, AXAxis, AYAxis: TPointF; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; override;\n\n    {** Draws and fills a path }\n    procedure DrawPath(APath: IBGRAPath; AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner); overload; override;\n\n    {** Draws and fills a path with a matrix transform }\n    procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner); overload; override;\n    procedure DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix; AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner); overload; override;\n\n    {** Draws a rectangle with antialiasing and fills it with color ''back''.\n        Note that the pixel (x2,y2) is included contrary to integer coordinates }\n    procedure RectangleAntialias(x, y, x2, y2: single; c: TBGRAPixel; w: single; back: TBGRAPixel); overload; override;\n\n    {** Draws a rounded rectangle border with antialiasing. The corners have an\n        elliptical radius of ''rx'' and ''ry''. ''options'' specifies how to\n        draw the corners. See [[BGRABitmap Geometry types|geometry types]] }\n    procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; c: TBGRAPixel; w: single; options: TRoundRectangleOptions = []); overload; override;\n    {** Draws a rounded rectangle border with the specified texture.\n        The corners have an elliptical radius of ''rx'' and ''ry''.\n        ''options'' specifies how to draw the corners.\n        See [[BGRABitmap Geometry types|geometry types]] }\n    procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; texture: IBGRAScanner; w: single; options: TRoundRectangleOptions = []); overload; override;\n    {** Draws and fills a round rectangle }\n    procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; pencolor: TBGRAPixel; w: single; fillcolor: TBGRAPixel; options: TRoundRectangleOptions = []); overload; override;\n    {** Draws and fills a round rectangle with textures }\n    procedure RoundRectAntialias(x,y,x2,y2,rx,ry: single; penTexture: IBGRAScanner; w: single; fillTexture: IBGRAScanner; options: TRoundRectangleOptions = []); overload; override;\n\n    {==== Gradient polygons ====}\n\n    procedure FillTriangleLinearColor(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel); override;\n    procedure FillTriangleLinearColorAntialias(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel); override;\n    procedure FillTriangleLinearMapping(pt1,pt2,pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF; TextureInterpolation: Boolean= True); override;\n    {$IFNDEF BGRABITMAP_CORE}procedure FillTriangleLinearMappingLightness(pt1,pt2,pt3: TPointF;\n      texture: IBGRAScanner; tex1, tex2, tex3: TPointF; light1,light2,light3:\n        word; TextureInterpolation: Boolean= True); override;{$ENDIF}\n    procedure FillTriangleLinearMappingAntialias(pt1,pt2,pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF); override;\n\n    procedure FillQuadLinearColor(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TBGRAPixel); override;\n    procedure FillQuadLinearColorAntialias(pt1,pt2,pt3,pt4: TPointF; c1,c2,c3,c4: TBGRAPixel); override;\n    procedure FillQuadLinearMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; TextureInterpolation: Boolean= True; ACulling: TFaceCulling = fcNone; ACropToPolygon: boolean = true); override;\n    {$IFNDEF BGRABITMAP_CORE}procedure FillQuadLinearMappingLightness(pt1,pt2,pt3,pt4: TPointF;\n        texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; light1,light2,light3,light4: word;\n          TextureInterpolation: Boolean= True); override;{$ENDIF}\n    procedure FillQuadLinearMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACulling: TFaceCulling = fcNone); override;\n    procedure FillQuadPerspectiveMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    procedure FillQuadPerspectiveMapping(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACleanBorders: TRect; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    procedure FillQuadPerspectiveMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF); override;\n    procedure FillQuadPerspectiveMappingAntialias(pt1,pt2,pt3,pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; ACleanBorders: TRect); override;\n    procedure FillQuadAffineMapping(Orig,HAxis,VAxis: TPointF; AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean = true; ADrawMode: TDrawMode = dmDrawWithTransparency; AOpacity: byte = 255); override;\n    procedure FillQuadAffineMappingAntialias(Orig,HAxis,VAxis: TPointF; AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean = true; AOpacity: byte = 255); override;\n\n    {** Fills an ellipse with a gradient of color. ''outercolor'' specifies\n        the end color of the gradient on the border of the ellipse and\n        ''innercolor'' the end color of the gradient at the center of the ellipse }\n    procedure FillEllipseLinearColorAntialias(x, y, rx, ry: single; outercolor, innercolor: TBGRAPixel); overload; override;\n    procedure FillEllipseLinearColorAntialias(AOrigin, AXAxis, AYAxis: TPointF; outercolor, innercolor: TBGRAPixel); overload; override;\n\n    {$IFNDEF BGRABITMAP_CORE}\n    procedure FillPolyLinearMapping(const points: array of TPointF; texture: IBGRAScanner; texCoords: array of TPointF; TextureInterpolation: Boolean); override;\n    procedure FillPolyLinearMappingLightness(const points: array of TPointF; texture: IBGRAScanner; texCoords: array of TPointF; lightnesses: array of word; TextureInterpolation: Boolean); override;\n    procedure FillPolyLinearColor(const points: array of TPointF; AColors: array of TBGRAPixel); override;\n    procedure FillPolyPerspectiveMapping(const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner; texCoords: array of TPointF; TextureInterpolation: Boolean; zbuffer: psingle = nil); override;\n    procedure FillPolyPerspectiveMappingLightness(const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner; texCoords: array of TPointF; lightnesses: array of word; TextureInterpolation: Boolean; zbuffer: psingle = nil); override;\n    {$ENDIF}\n\n    procedure ArrowStartAsNone; override;\n    procedure ArrowStartAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); override;\n    procedure ArrowStartAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); override;\n    procedure ArrowStartAsTail; override;\n\n    procedure ArrowEndAsNone; override;\n    procedure ArrowEndAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); override;\n    procedure ArrowEndAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); override;\n    procedure ArrowEndAsTail; override;\n\n    { Draws the UTF8 encoded string, with color c.\n      If align is taLeftJustify, (x,y) is the top-left corner.\n      If align is taCenter, (x,y) is at the top and middle of the text.\n      If align is taRightJustify, (x,y) is the top-right corner.\n      The value of FontOrientation is taken into account, so that the text may be rotated. }\n    procedure TextOut(x, y: single; const sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n\n    { Same as above functions, except that the text is filled using texture.\n      The value of FontOrientation is taken into account, so that the text may be rotated. }\n    procedure TextOut(x, y: single; const sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n\n    procedure TextOut(x, y: single; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single); overload; override;\n    procedure TextOut(x, y: single; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single); overload; override;\n\n    { Same as above, except that the orientation is specified, overriding the value of the property FontOrientation. }\n    procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOutAngle(x, y: single; orientationTenthDegCCW: integer; const sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n\n    procedure TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single); overload; override;\n    procedure TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single); overload; override;\n\n    {$IFNDEF BGRABITMAP_CORE}procedure TextMultiline(ALeft,ATop,AWidth: single; const sUTF8: string; c: TBGRAPixel;\n      AAlign: TBidiTextAlignment = btaNatural; AVertAlign: TTextLayout = tlTop;\n      AParagraphSpacing: single = 0); overload; override;{$ENDIF}\n    {$IFNDEF BGRABITMAP_CORE}procedure TextMultiline(ALeft,ATop,AWidth: single; const sUTF8: string; ATexture: IBGRAScanner;\n      AAlign: TBidiTextAlignment = btaNatural; AVertAlign: TTextLayout = tlTop;\n      AParagraphSpacing: single = 0); overload; override;{$ENDIF}\n\n    { Draw the UTF8 encoded string at the coordinate (x,y), clipped inside the rectangle ARect.\n      Additional style information is provided by the style parameter.\n      The color c or texture is used to fill the text. No rotation is applied. }\n    procedure TextRect(ARect: TRect; x, y: integer; const sUTF8: string; style: TTextStyle; c: TBGRAPixel); overload; override;\n    procedure TextRect(ARect: TRect; x, y: integer; const sUTF8: string; style: TTextStyle; texture: IBGRAScanner); overload; override;\n\n    { Returns the total size of the string provided using the current font.\n      Orientation is not taken into account, so that the width is along the text.\n      End of lines are stripped from the string. }\n    function TextSize(const sUTF8: string): TSize; override;\n    {$IFNDEF BGRABITMAP_CORE}function TextSizeMultiline(const sUTF8: string;\n      AMaxWidth: single = EmptySingle; AParagraphSpacing: single = 0): TSize; override;{$ENDIF}\n\n    { Returns the affine box of the string provided using the current font.\n      Orientation is taken into account. End of lines are stripped from the string. }\n    function TextAffineBox(const sUTF8: string): TAffineBox; override;\n\n    { Returns the total size of a paragraph i.e. with word break }\n    function TextSize(const sUTF8: string; AMaxWidth: integer): TSize; override;\n    function TextSize(const sUTF8: string; AMaxWidth: integer; ARightToLeft: boolean): TSize; override;\n    function TextFitInfo(const sUTF8: string; AMaxWidth: integer): integer; override;\n\n    {Spline}\n    function ComputeClosedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF; override;\n    function ComputeOpenedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF; override;\n\n    function ComputeBezierCurve(const ACurve: TCubicBezierCurve): ArrayOfTPointF; overload; override;\n    function ComputeBezierCurve(const ACurve: TQuadraticBezierCurve): ArrayOfTPointF; overload; override;\n    function ComputeBezierSpline(const ASpline: array of TCubicBezierCurve): ArrayOfTPointF; overload; override;\n    function ComputeBezierSpline(const ASpline: array of TQuadraticBezierCurve): ArrayOfTPointF; overload; override;\n\n    function ComputeWidePolyline(const points: array of TPointF; w: single): ArrayOfTPointF; overload; override;\n    function ComputeWidePolyline(const points: array of TPointF; w: single; ClosedCap: boolean): ArrayOfTPointF; overload; override;\n    function ComputeWidePolygon(const points: array of TPointF; w: single): ArrayOfTPointF; overload; override;\n\n    function ComputeEllipseContour(x,y,rx,ry: single; quality: single = 1): ArrayOfTPointF;  overload; override;\n    function ComputeEllipseContour(AOrigin, AXAxis, AYAxis: TPointF; quality: single = 1): ArrayOfTPointF;  overload; override;\n    function ComputeEllipseBorder(x,y,rx,ry,w: single; quality: single = 1): ArrayOfTPointF; overload; override;\n    function ComputeEllipseBorder(AOrigin, AXAxis, AYAxis: TPointF; w: single; quality: single = 1): ArrayOfTPointF; override; overload;\n    function ComputeArc65536(x,y,rx,ry: single; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; override;\n    function ComputeArcRad(x,y,rx,ry: single; startRad,endRad: single; quality: single = 1): ArrayOfTPointF; override;\n    function ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; quality: single = 1): ArrayOfTPointF; overload; override;\n    function ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; options: TRoundRectangleOptions; quality: single = 1): ArrayOfTPointF; overload; override;\n    function ComputePie65536(x,y,rx,ry: single; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; override;\n    function ComputePieRad(x,y,rx,ry: single; startRad,endRad: single; quality: single = 1): ArrayOfTPointF; override;\n\n    {Filling}\n    procedure Fill(c: TBGRAPixel; start, Count: integer); overload; override;\n    procedure DrawPixels(c: TBGRAPixel; start, Count: integer); override;\n    procedure AlphaFill(alpha: byte; start, Count: integer); overload; override;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; const AColor: TBGRAPixel; ADrawMode: TDrawMode); overload; override;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; ADrawMode: TDrawMode; AOpacity: byte); overload; override;\n    procedure EraseMask(x,y: integer; AMask: TBGRACustomBitmap; alpha: byte=255); override;\n    procedure FillClearTypeMask(x,y: integer; xThird: integer; AMask: TBGRACustomBitmap; color: TBGRAPixel; ARGBOrder: boolean = true); override;\n    procedure FillClearTypeMask(x,y: integer; xThird: integer; AMask: TBGRACustomBitmap; texture: IBGRAScanner; ARGBOrder: boolean = true); override;\n    procedure ReplaceColor(before, after: TColor); overload; override;\n    procedure ReplaceColor(ABounds: TRect; before, after: TColor); overload; override;\n    procedure ParallelFloodFill(X, Y: integer; Dest: TCustomUniversalBitmap; Color: TBGRAPixel;\n      mode: TFloodfillMode; Tolerance: byte = 0; DestOfsX: integer = 0; DestOfsY: integer = 0); overload; override;\n    procedure ParallelFloodFill(X, Y: integer; Dest: TCustomUniversalBitmap; const Brush: TUniversalBrush;\n      Progressive: boolean; ToleranceW: Word = $00ff; DestOfsX: integer = 0; DestOfsY: integer = 0); overload; override;\n    procedure GradientFill(x, y, x2, y2: integer; c1, c2: TBGRAPixel;\n      gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n      gammaColorCorrection: boolean = True; Sinus: Boolean=False;\n      ditherAlgo: TDitheringAlgorithm = daNearestNeighbor); override;\n    procedure GradientFill(x, y, x2, y2: integer; gradient: TBGRACustomGradient;\n      gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n      Sinus: Boolean=False; ditherAlgo: TDitheringAlgorithm = daNearestNeighbor); override;\n\n    function ScanAtInteger(X,Y: integer): TBGRAPixel; override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n\n    {Canvas drawing functions}\n    procedure Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean = True); overload; override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean = True); overload; override;\n    procedure InvalidateBitmap; override;         //call if you modify with Scanline\n    procedure LoadFromBitmapIfNeeded; override;   //call to ensure that bitmap data is up to date\n    procedure NotifyBitmapChange; inline;\n\n    {BGRA bitmap functions}\n    procedure CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadePosition: byte; mode: TDrawMode = dmDrawWithTransparency); overload; override;\n    procedure CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadeMask: IBGRAScanner; mode: TDrawMode = dmDrawWithTransparency); overload; override;\n    procedure PutImage(X, Y: integer; ASource: TCustomUniversalBitmap; AMode: TDrawMode; AOpacity: byte); overload; override;\n    procedure PutImageAffine(AMatrix: TAffineMatrix; Source: TBGRACustomBitmap; AOutputBounds: TRect; AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte=255; APixelCenteredCoords: boolean = true); overload; override;\n    function GetImageAffineBounds(AMatrix: TAffineMatrix; ASourceBounds: TRect; AClipOutput: boolean = true; APixelCenteredCoords: boolean = true): TRect; overload; override;\n    class function IsAffineRoughlyTranslation(AMatrix: TAffineMatrix; ASourceBounds: TRect): boolean; override;\n\n    procedure StretchPutImage(ARect: TRect; Source: TBGRACustomBitmap; mode: TDrawMode; AOpacity: byte = 255); override;\n    procedure BlendRect(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AExcludeChannels: TChannels); overload; override;\n    procedure BlendRectOver(ADest: TRect; AColor: TBGRAPixel; AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean; AExcludeChannels: TChannels); overload; override;\n    procedure BlendImage(x, y: integer; ASource: TBGRACustomBitmap; AOperation: TBlendOperation); overload; override;\n    procedure BlendImage(ADest: TRect; ASource: IBGRAScanner; AOffsetX, AOffsetY: integer; AOperation: TBlendOperation); overload; override;\n    procedure BlendImageOver(x, y: integer; ASource: TBGRACustomBitmap; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false); overload; override;\n    procedure BlendImageOver(ADest: TRect; ASource: IBGRAScanner; AOffsetX, AOffsetY: integer; AOperation: TBlendOperation; AOpacity: byte = 255; ALinearBlend: boolean = false); overload; override;\n\n    function GetPtrBitmap(Top,Bottom: Integer): TBGRACustomBitmap; override;\n    function MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean = False): TBitmap; override;\n\n    function Resample(newWidth, newHeight: integer;\n      mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function Resample(newWidth, newHeight: Single; ASizeUnit: TCSSUnit;\n      mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    procedure Negative; override;\n    procedure NegativeRect(ABounds: TRect); override;\n    procedure LinearNegative; override;\n    procedure LinearNegativeRect(ABounds: TRect); override;\n    procedure InplaceGrayscale(AGammaCorrection: boolean = true); overload; override;\n    procedure InplaceGrayscale(ABounds: TRect; AGammaCorrection: boolean = true); overload; override;\n    procedure InplaceNormalize(AEachChannel: boolean = True); overload; override;\n    procedure InplaceNormalize(ABounds: TRect; AEachChannel: boolean = True); overload; override;\n    procedure SwapRedBlue; override;\n    procedure SwapRedBlue(ARect: TRect); override;\n    procedure GrayscaleToAlpha; override;\n    procedure AlphaToGrayscale; override;\n    function GetMaskFromAlpha: TBGRADefaultBitmap; override;\n    {$IFNDEF BGRABITMAP_CORE}function GetGrayscaleMaskFromAlpha: TGrayscaleMask;{$ENDIF}\n    procedure ConvertToLinearRGB; override;\n    procedure ConvertFromLinearRGB; override;\n    procedure ConvertToPaletteGrayscale; override;\n\n    {Filters}\n    {$IFNDEF BGRABITMAP_CORE}\n    function FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterSmooth(ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterSharpen(Amount: single = 1; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterSharpen(ABounds: TRect; Amount: single = 1; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterPixelate(pixelSize: integer; useResample: boolean; filter: TResampleFilter = rfLinear; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterEmboss(angle: single; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterEmboss(angle: single; ABounds: TRect; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterGrayscale(ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterNormalize(eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterNormalize(ABounds: TRect; eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterRotate(origin: TPointF; angle: single; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterSphere(ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterTwirl(ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterTwirl(ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRADefaultBitmap; overload; override;\n    function FilterCylinder(ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    function FilterPlane(ACopyProperties: Boolean=False): TBGRADefaultBitmap; override;\n    {$ENDIF}\n  end;\n\n  { Bitmap relying on a pointer to RGBA pixel data }\n  TBGRAPtrBitmap = class(TBGRADefaultBitmap)\n  protected\n    function GetLineOrder: TRawImageLineOrder; override;\n    procedure SetLineOrder(AValue: TRawImageLineOrder); override;\n    procedure ReallocData; override;\n    procedure FreeData; override;\n    procedure CannotResize;\n    procedure NotImplemented;\n    procedure RebuildBitmap; override;\n\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override; //to override\n    function LoadFromRawImage({%H-}ARawImage: TRawImage; {%H-}DefaultOpacity: byte;\n      {%H-}AlwaysReplaceAlpha: boolean=False; {%H-}RaiseErrorOnInvalidPixelFormat: boolean\n      =True): boolean; override; //to override\n  public\n    constructor Create(AWidth, AHeight: integer; AData: Pointer); overload;\n    procedure SetDataPtr(AData: Pointer);\n    property LineOrder: TRawImageLineOrder Read GetLineOrder Write SetLineOrder;\n\n    procedure DataDrawTransparent({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override; //to override\n    procedure DataDrawOpaque({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override; //to override\n    procedure GetImageFromCanvas({%H-}CanvasSource: TCanvas; {%H-}x, {%H-}y: integer); override; //to override\n\n    procedure Assign({%H-}Source: TPersistent); override;\n    procedure TakeScreenshot({%H-}ARect: TRect); override;\n    procedure TakeScreenshotOfPrimaryMonitor; override;\n    procedure LoadFromDevice({%H-}DC: HDC); override;\n    procedure LoadFromDevice({%H-}DC: HDC; {%H-}ARect: TRect); override;\n  end;\n\n  { Bitmap relying on a memory stream containing RGBA pixel data }\n  TBGRAMemoryStreamBitmap = class(TBGRAPtrBitmap)\n  private\n    function GetOwnStream: boolean;\n    procedure SetOwnStream(AValue: boolean);\n  protected\n    FStream: TMemoryStream;\n    FStreamOffset: IntPtr;\n    FOwnStream: boolean;\n  public\n    constructor Create(AWidth, AHeight: integer; AStream: TMemoryStream; AStreamOffset: IntPtr; AOwnStream: boolean);\n    constructor Create(AWidth, AHeight: integer); override;\n    constructor Create(AWidth, AHeight: integer; const AColor: TBGRAPixel); override;\n    destructor Destroy; override;\n    property OwnStream: boolean read GetOwnStream write SetOwnStream;\n    property Stream: TMemoryStream read FStream;\n  end;\n\nvar\n  DefaultTextStyle: TTextStyle;\n\nprocedure BGRAGradientFill(bmp: TBGRACustomBitmap; x, y, x2, y2: integer;\n  c1, c2: TBGRAPixel; gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n  gammaColorCorrection: boolean = True; Sinus: Boolean=False);\n\nimplementation\n\nuses Math, BGRAUTF8, BGRABlend,\n  BGRAGradientScanner,\n  BGRAResample, BGRAPolygon, BGRAPath, BGRAFilterScanner\n  {$IFNDEF BGRABITMAP_CORE},\n  BGRAFilters, BGRAPolygonAliased, BGRADithering,\n  BGRAReadPcx, BGRAWritePcx, FPReadXPM, FPWriteXPM,\n  BGRAReadBMP, BGRAReadJpeg{$ENDIF};\n\n{ TBGRAMemoryStreamBitmap }\n\nfunction TBGRAMemoryStreamBitmap.GetOwnStream: boolean;\nbegin\n  result := FOwnStream;\nend;\n\nprocedure TBGRAMemoryStreamBitmap.SetOwnStream(AValue: boolean);\nbegin\n  FOwnStream:= AValue;\nend;\n\nconstructor TBGRAMemoryStreamBitmap.Create(AWidth, AHeight: integer;\n  AStream: TMemoryStream; AStreamOffset: IntPtr; AOwnStream: boolean);\nbegin\n  inherited Create(AWidth, AHeight, PByte(AStream.Memory) + AStreamOffset);\n  FStream := AStream;\n  FStreamOffset:= AStreamOffset;\n  FOwnStream := AOwnStream;\nend;\n\nconstructor TBGRAMemoryStreamBitmap.Create(AWidth, AHeight: integer);\nbegin\n  Create(AWidth, AHeight, BGRAPixelTransparent);\nend;\n\nconstructor TBGRAMemoryStreamBitmap.Create(AWidth, AHeight: integer;\n  const AColor: TBGRAPixel);\nbegin\n  inherited Create(AWidth, AHeight);\n  FStream := TMemoryStream.Create;\n  FStreamOffset:= 0;\n  FStream.Size := RowSize * Height;\n  FOwnStream := true;\n  SetDataPtr(PByte(FStream.Memory) + FStreamOffset);\n  Fill(AColor, dmSet);\nend;\n\ndestructor TBGRAMemoryStreamBitmap.Destroy;\nbegin\n  if FOwnStream then FStream.Free;\n  inherited Destroy;\nend;\n\n{ TBGRADefaultBitmap }\n\nfunction TBGRADefaultBitmap.CheckEmpty: boolean;\nconst\n  alphaMask = $ff shl TBGRAPixel_AlphaShift;\nvar\n  i: integer;\n  p: PBGRAPixel;\nbegin\n  p := Data;\n  for i := (NbPixels shr 1) - 1 downto 0 do\n  begin\n    if PInt64(p)^ and (alphaMask or (alphaMask shl 32)) <> 0 then\n    begin\n      Result := False;\n      exit;\n    end;\n    Inc(p,2);\n  end;\n  if Odd(NbPixels) and (p^.alpha <> 0) then\n  begin\n    Result := false;\n    exit;\n  end;\n  Result := True;\nend;\n\nfunction TBGRADefaultBitmap.GetCanvasAlphaCorrection: boolean;\nbegin\n  Result := (FCanvasOpacity <> 0);\nend;\n\nfunction TBGRADefaultBitmap.GetCustomPenStyle: TBGRAPenStyle;\nbegin\n  result := GetInternalPen.CustomPenStyle;\nend;\n\nprocedure TBGRADefaultBitmap.SetCanvasAlphaCorrection(const AValue: boolean);\nbegin\n  if AValue then\n  begin\n    if FCanvasOpacity = 0 then\n      FCanvasOpacity := 255;\n  end\n  else\n    FCanvasOpacity := 0;\nend;\n\nprocedure TBGRADefaultBitmap.DoLoadFromBitmap;\nbegin\n  //nothing\nend;\n\nprocedure TBGRADefaultBitmap.SetCustomPenStyle(const AValue: TBGRAPenStyle);\nbegin\n  GetInternalPen.CustomPenStyle := AValue;\nend;\n\nprocedure TBGRADefaultBitmap.SetPenStyle(const AValue: TPenStyle);\nbegin\n  GetInternalPen.Style := AValue;\nend;\n\nfunction TBGRADefaultBitmap.GetPenStyle: TPenStyle;\nbegin\n  Result:= GetInternalPen.Style;\nend;\n\nfunction TBGRADefaultBitmap.GetArrowEndSize: TPointF;\nbegin\n  result := GetArrow.EndSize;\nend;\n\nfunction TBGRADefaultBitmap.GetArrowStartSize: TPointF;\nbegin\n  result := GetArrow.StartSize;\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowEndSize(AValue: TPointF);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  GetArrow.EndSize := AValue;\n  {$POP}\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowStartSize(AValue: TPointF);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  GetArrow.StartSize := AValue;\n  {$POP}\nend;\n\nfunction TBGRADefaultBitmap.GetArrowEndOffset: single;\nbegin\n  result := GetArrow.EndOffsetX;\nend;\n\nfunction TBGRADefaultBitmap.GetArrowStartOffset: single;\nbegin\n  result := GetArrow.StartOffsetX;\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowEndOffset(AValue: single);\nbegin\n  GetArrow.EndOffsetX := AValue;\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowStartOffset(AValue: single);\nbegin\n  GetArrow.StartOffsetX := AValue;\nend;\n\nfunction TBGRADefaultBitmap.GetArrowEndRepeat: integer;\nbegin\n  result := GetArrow.EndRepeatCount;\nend;\n\nfunction TBGRADefaultBitmap.GetArrowStartRepeat: integer;\nbegin\n  result := GetArrow.StartRepeatCount;\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowEndRepeat(AValue: integer);\nbegin\n  GetArrow.EndRepeatCount := AValue;\nend;\n\nprocedure TBGRADefaultBitmap.SetArrowStartRepeat(AValue: integer);\nbegin\n  GetArrow.StartRepeatCount := AValue;\nend;\n\nprocedure TBGRADefaultBitmap.SetFontHeight(AHeight: integer);\nbegin\n  FFontHeight := AHeight;\nend;\n\nfunction TBGRADefaultBitmap.GetFontFullHeight: integer;\nbegin\n  if FontHeight < 0 then\n    result := -FontHeight\n  else\n    result := TextSize('Hg').cy;\nend;\n\nprocedure TBGRADefaultBitmap.SetFontFullHeight(AHeight: integer);\nbegin\n  if AHeight > 0 then\n    FontHeight := -AHeight\n  else\n    FontHeight := 1;\nend;\n\nfunction TBGRADefaultBitmap.GetFontPixelMetric: TFontPixelMetric;\nbegin\n  result := FontRenderer.GetFontPixelMetric;\nend;\n\nfunction TBGRADefaultBitmap.GetFontRenderer: TBGRACustomFontRenderer;\nbegin\n  if FFontRenderer = nil then FFontRenderer := CreateDefaultFontRenderer;\n  if FFontRenderer = nil then raise exception.Create('No font renderer');\n  result := FFontRenderer;\n  result.FontName := FontName;\n  result.FontStyle := FontStyle;\n  result.FontQuality := FontQuality;\n  result.FontOrientation := FontOrientation;\n  result.FontEmHeight := FFontHeight;\nend;\n\nprocedure TBGRADefaultBitmap.SetFontRenderer(AValue: TBGRACustomFontRenderer);\nbegin\n  if AValue = FFontRenderer then exit;\n  FFontRenderer.Free;\n  FFontRenderer := AValue\nend;\n\nfunction TBGRADefaultBitmap.GetFontVerticalAnchorOffset: single;\nbegin\n  case FontVerticalAnchor of\n  fvaTop: result := 0;\n  fvaCenter: result := FontFullHeight*0.5;\n  fvaCapLine: result := FontPixelMetric.CapLine;\n  fvaCapCenter: result := (FontPixelMetric.CapLine+FontPixelMetric.Baseline)*0.5;\n  fvaXLine: result := FontPixelMetric.xLine;\n  fvaXCenter: result := (FontPixelMetric.xLine+FontPixelMetric.Baseline)*0.5;\n  fvaBaseline: result := FontPixelMetric.Baseline;\n  fvaDescentLine: result := FontPixelMetric.DescentLine;\n  fvaBottom: result := FontFullHeight;\n  else\n    result := 0;\n  end;\nend;\n\nfunction TBGRADefaultBitmap.GetFontAnchorRotatedOffset: TPointF;\nbegin\n  result := GetFontAnchorRotatedOffset(FontOrientation);\nend;\n\nfunction TBGRADefaultBitmap.GetFontAnchorRotatedOffset(\n  ACustomOrientation: integer): TPointF;\nbegin\n  result := PointF(0, GetFontVerticalAnchorOffset);\n  if ACustomOrientation <> 0 then\n    result := AffineMatrixRotationDeg(-ACustomOrientation*0.1)*result;\nend;\n\n{ Creates a new bitmap with dimensions 0 x 0 }\nfunction TBGRADefaultBitmap.NewBitmap: TBGRADefaultBitmap;\nbegin\n  Result := inherited NewBitmap as TBGRADefaultBitmap;\nend;\n\n{ Creates a new bitmap with dimensions AWidth and AHeight and filled with\n  transparent pixels. Internally, it uses the same type so that if you\n  use an optimized version, you get a new bitmap with the same optimizations }\nfunction TBGRADefaultBitmap.NewBitmap(AWidth, AHeight: integer): TBGRADefaultBitmap;\nbegin\n  result := inherited NewBitmap(AWidth, AHeight)  as TBGRADefaultBitmap;\nend;\n\n{ Can only be called from an existing instance of TBGRABitmap.\n  Creates a new instance with dimensions AWidth and AHeight,\n  and fills it with Color. }\nfunction TBGRADefaultBitmap.NewBitmap(AWidth, AHeight: integer;\n  const Color: TBGRAPixel): TBGRADefaultBitmap;\nbegin\n  result := inherited NewBitmap(AWidth, AHeight, Color) as TBGRADefaultBitmap;\nend;\n\nfunction TBGRADefaultBitmap.NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TBGRADefaultBitmap;\nbegin\n  result := inherited NewBitmap(AWidth, AHeight, AColor) as TBGRADefaultBitmap;\nend;\n\n{ Creates a new bitmap and loads it contents from a file.\n  The encoding of the string is the default one for the operating system.\n  It is recommended to use the next function and UTF8 encoding }\nfunction TBGRADefaultBitmap.NewBitmap(Filename: string): TBGRADefaultBitmap;\nvar\n  BGRAClass: TBGRABitmapAny;\nbegin\n  BGRAClass := TBGRABitmapAny(self.ClassType);\n  Result    := BGRAClass.Create(Filename) as TBGRADefaultBitmap;\nend;\n\n{ Creates a new bitmap and loads it contents from a file.\n  It is recommended to use UTF8 encoding }\nfunction TBGRADefaultBitmap.NewBitmap(Filename: string; AIsUtf8: boolean): TBGRADefaultBitmap;\nvar\n  BGRAClass: TBGRABitmapAny;\nbegin\n  BGRAClass := TBGRABitmapAny(self.ClassType);\n  Result    := BGRAClass.Create(Filename,AIsUtf8) as TBGRADefaultBitmap;\nend;\n\nfunction TBGRADefaultBitmap.NewBitmap(Filename: string; AIsUtf8: boolean;\n  AOptions: TBGRALoadingOptions): TBGRADefaultBitmap;\nvar\n  BGRAClass: TBGRABitmapAny;\nbegin\n  BGRAClass := TBGRABitmapAny(self.ClassType);\n  Result    := BGRAClass.Create(Filename,AIsUtf8,AOptions) as TBGRADefaultBitmap;\nend;\n\nfunction TBGRADefaultBitmap.NewBitmap(AFPImage: TFPCustomImage): TBGRADefaultBitmap;\nvar\n  BGRAClass: TBGRABitmapAny;\nbegin\n  BGRAClass := TBGRABitmapAny(self.ClassType);\n  Result    := BGRAClass.Create(AFPImage) as TBGRADefaultBitmap;\nend;\n\n{----------------------- TFPCustomImage override ------------------------------}\n\n{ Set the size of the current bitmap. All data is lost during the process }\nprocedure TBGRADefaultBitmap.SetSize(AWidth, AHeight: integer);\nbegin\n  if (Width <> AWidth) or (Height <> AHeight) then\n  begin\n    inherited SetSize(AWidth, AHeight);\n    FreeBitmap;\n  end;\nend;\n\n{---------------------- Constructors ---------------------------------}\n\nconstructor TBGRADefaultBitmap.Create(AFPImage: TFPCustomImage; ACopyProperties: Boolean=False);\nbegin\n  inherited Create;\n  Assign(AFPImage, ACopyProperties);\nend;\n\nconstructor TBGRADefaultBitmap.Create(ABitmap: TBitmap);\nbegin\n  inherited Create;\n  AssignWithFixedTransparent(ABitmap);\nend;\n\n{ Creates an image of dimensions AWidth and AHeight and filled with transparent pixels. }\nconstructor TBGRADefaultBitmap.Create(ABitmap: TBitmap; AUseTransparentColor: boolean);\nbegin\n  inherited Create;\n  Assign(ABitmap, AUseTransparentColor);\nend;\n\n{ Creates an image by loading its content from the file AFilename.\n  The encoding of the string is the default one for the operating system.\n  It is recommended to use the next constructor and UTF8 encoding. }\nconstructor TBGRADefaultBitmap.Create(AFilename: string);\nbegin\n  inherited Create;\n  LoadFromFile(Afilename);\nend;\n\n{ Free the object and all its resources }\ndestructor TBGRADefaultBitmap.Destroy;\nbegin\n  DiscardXorMask;\n  FFontRenderer.Free;\n  {$IFDEF BGRABITMAP_USE_FPCANVAS}FCanvasFP.Free;{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}FCanvasBGRA.Free;{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}FCanvas2D.Free;{$ENDIF}\n  FreeBitmap;\n  inherited Destroy;\nend;\n\n{------------------------- Loading functions ----------------------------------}\n\n{ Creates an image by loading its content from the file AFilename.\n  The boolean AIsUtf8Filename specifies if UTF8 encoding is assumed for the filename. }\nconstructor TBGRADefaultBitmap.Create(AFilename: string; AIsUtf8: boolean);\nbegin\n  inherited Create;\n  if AIsUtf8 then\n    LoadFromFileUTF8(Afilename)\n  else\n    LoadFromFile(Afilename);\nend;\n\nconstructor TBGRADefaultBitmap.Create(AFilename: string; AIsUtf8: boolean;\n  AOptions: TBGRALoadingOptions);\nbegin\n  inherited Create;\n  if AIsUtf8 then\n    LoadFromFileUTF8(Afilename, AOptions)\n  else\n    LoadFromFile(Afilename, AOptions);\nend;\n\n{ Creates an image by loading its content from the stream AStream. }\nconstructor TBGRADefaultBitmap.Create(AStream: TStream);\nbegin\n  inherited Create;\n  LoadFromStream(AStream);\nend;\n\nprocedure TBGRADefaultBitmap.Serialize(AStream: TStream);\nbegin\n  If TBGRAPixel_RGBAOrder then\n  begin\n    LoadFromBitmapIfNeeded;\n    TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(Data,Data,FNbPixels,False);\n  end;\n  inherited Serialize(AStream);\n  If TBGRAPixel_RGBAOrder then TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(Data,Data,FNbPixels,False);\nend;\n\nprocedure TBGRADefaultBitmap.Deserialize(AStream: TStream);\nbegin\n  inherited Deserialize(AStream);\n  If TBGRAPixel_RGBAOrder then TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(Data,Data,FNbPixels,False);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.SolidBrushIndirect(out\n  ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode);\nbegin\n  BGRASolidBrushIndirect(ABrush, AColor, ADrawMode);\nend;\n\nclass procedure TBGRADefaultBitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TBGRAPixel; ADrawMode: TDrawMode);\nbegin\n  BGRASolidBrushIndirect(ABrush, @AColor, ADrawMode);\nend;\n\nclass procedure TBGRADefaultBitmap.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer; AOffsetY: integer);\nbegin\n  BGRAScannerBrush(ABrush, AScanner, ADrawMode, AOffsetX, AOffsetY);\nend;\n\nclass procedure TBGRADefaultBitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  BGRAMaskBrush(ABrush, AScanner, AOffsetX, AOffsetY);\nend;\n\nclass procedure TBGRADefaultBitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  BGRAEraseBrush(ABrush, AAlpha);\nend;\n\nclass procedure TBGRADefaultBitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  BGRAAlphaBrush(ABrush, AAlpha);\nend;\n\nprocedure TBGRADefaultBitmap.Assign(Source: TPersistent);\nbegin\n  Assign(Source, False);\nend;\n\nprocedure TBGRADefaultBitmap.Assign(Source: TPersistent; ACopyProperties: Boolean);\nvar pdest: PBGRAPixel;\n  x,y: Int32or64;\nbegin\n  if Source is TBGRACustomBitmap then\n  begin\n    DiscardBitmapChange;\n    SetSize(TBGRACustomBitmap(Source).Width, TBGRACustomBitmap(Source).Height);\n\n    if ACopyProperties then TBGRACustomBitmap(Source).CopyPropertiesTo(Self);\n\n    PutImage(0, 0, TBGRACustomBitmap(Source), dmSet);\n    if Source is TBGRADefaultBitmap then\n    begin\n      HotSpot := TBGRADefaultBitmap(Source).HotSpot;\n      if XorMask <> TBGRADefaultBitmap(Source).XorMask then\n      begin\n        DiscardXorMask;\n        if TBGRADefaultBitmap(Source).XorMask is TBGRADefaultBitmap then\n          FXorMask := TBGRADefaultBitmap(TBGRADefaultBitmap(Source).XorMask).NewReference as TBGRADefaultBitmap\n        else\n          FXorMask := TBGRADefaultBitmap(Source).XorMask.Duplicate;\n      end;\n    end;\n  end else\n  if Source is TFPCustomImage then\n  begin\n    DiscardBitmapChange;\n    SetSize(TFPCustomImage(Source).Width, TFPCustomImage(Source).Height);\n\n    if ACopyProperties then\n    begin\n      {$IF FPC_FULLVERSION>=30203}\n      //Resolution\n      ResolutionUnit:=TFPCustomImage(Source).ResolutionUnit;\n      ResolutionX:=TFPCustomImage(Source).ResolutionX;\n      ResolutionY:=TFPCustomImage(Source).ResolutionY;\n      {$ENDIF}\n      // Copy palette if needed.\n      UsePalette := TFPCustomImage(Source).UsePalette;\n      if UsePalette then\n      begin\n        Palette.Count:=0;\n        Palette.Merge(TFPCustomImage(Source).Palette);\n      end;\n    end;\n\n    for y := 0 to TFPCustomImage(Source).Height-1 do\n    begin\n      pdest := ScanLine[y];\n      for x := 0 to TFPCustomImage(Source).Width-1 do\n      begin\n        pdest^ := FPColorToBGRA(TFPCustomImage(Source).Colors[x,y]);\n        inc(pdest);\n      end;\n    end;\n  end else\n    inherited Assign(Source, ACopyProperties);\nend;\n\nprocedure TBGRADefaultBitmap.AssignWithFixedTransparent(Source: TBitmap);\nbegin\n  Assign(Source, Source.Masked and (Source.TransparentMode = tmFixed));\nend;\n\nprocedure TBGRADefaultBitmap.Assign(Source: TBitmap; AUseTransparentColor: boolean);\nvar\n  transpColor: TBGRAPixel;\nbegin\n  Assign(Source);\n  if AUseTransparentColor then\n  begin\n    if TBitmap(Source).TransparentMode = tmFixed then\n      transpColor := ColorToBGRA(TBitmap(Source).TransparentColor)\n    else\n      transpColor := GetPixel(0,Height-1);\n    ReplaceColor(transpColor, BGRAPixelTransparent);\n  end;\nend;\n\n{------------------------- Clipping -------------------------------}\n\nfunction TBGRADefaultBitmap.InternalGetPixelCycle256(ix, iy: int32or64; iFactX,\n  iFactY: int32or64): TBGRAPixel;\nvar\n  ixMod2: int32or64;\n  pUpLeft, pUpRight, pDownLeft, pDownRight: PBGRAPixel;\n  scan: PBGRAPixel;\nbegin\n  scan := GetScanlineFast(iy);\n\n  pUpLeft := (scan + ix);\n  ixMod2 := ix+1;\n  if ixMod2=Width then ixMod2 := 0;\n  pUpRight := (scan + ixMod2);\n\n  Inc(iy);\n  if iy = Height then iy := 0;\n  scan := GetScanlineFast(iy);\n  pDownLeft := (scan + ix);\n  pDownRight := (scan + ixMod2);\n\n  InterpolateBilinear(pUpLeft, pUpRight, pDownLeft,\n          pDownRight, iFactX, iFactY, @result);\nend;\n\nfunction TBGRADefaultBitmap.InternalGetPixel256(ix, iy: int32or64; iFactX,\n  iFactY: int32or64; smoothBorder: boolean): TBGRAPixel;\nvar\n  pUpLeft, pUpRight, pDownLeft, pDownRight: PBGRAPixel;\n  scan: PBGRAPixel;\nbegin\n  if (iy >= 0) and (iy < FHeight) then\n  begin\n    scan := GetScanlineFast(iy);\n\n    if (ix >= 0) and (ix < FWidth) then\n      pUpLeft := scan+ix\n    else if smoothBorder then\n      pUpLeft := @BGRAPixelTransparent\n    else\n      pUpLeft := nil;\n\n    if (ix+1 >= 0) and (ix+1 < FWidth) then\n      pUpRight := scan+(ix+1)\n    else if smoothBorder then\n      pUpRight := @BGRAPixelTransparent\n    else\n      pUpRight := nil;\n  end else\n  if smoothBorder then\n  begin\n    pUpLeft := @BGRAPixelTransparent;\n    pUpRight := @BGRAPixelTransparent;\n  end else\n  begin\n    pUpLeft := nil;\n    pUpRight := nil;\n  end;\n\n  if (iy+1 >= 0) and (iy+1 < FHeight) then\n  begin\n    scan := GetScanlineFast(iy+1);\n\n    if (ix >= 0) and (ix < FWidth) then\n      pDownLeft := scan+ix\n    else if smoothBorder then\n      pDownLeft := @BGRAPixelTransparent\n    else\n      pDownLeft := nil;\n\n    if (ix+1 >= 0) and (ix+1 < FWidth) then\n      pDownRight := scan+(ix+1)\n    else if smoothBorder then\n      pDownRight := @BGRAPixelTransparent\n    else\n      pDownRight := nil;\n  end else\n  if smoothBorder then\n  begin\n    pDownLeft := @BGRAPixelTransparent;\n    pDownRight := @BGRAPixelTransparent;\n  end else\n  begin\n    pDownLeft := nil;\n    pDownRight := nil;\n  end;\n\n  InterpolateBilinear(pUpLeft, pUpRight, pDownLeft,\n          pDownRight, iFactX, iFactY, @result);\nend;\n\n{-------------------------- Pixel functions -----------------------------------}\n\nprocedure TBGRADefaultBitmap.XorPixel(x, y: int32or64; const c: TBGRAPixel);\nvar\n  p : PLongWord;\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  p := PLongWord(GetScanlineFast(y) +x);\n  p^ := p^ xor LongWord(c);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.SetPixel(x, y: int32or64; c: TColor);\nvar\n  p: PBGRAPixel;\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  p  := GetScanlineFast(y) + x;\n  RedGreenBlue(c, p^.red,p^.green,p^.blue);\n  p^.alpha := 255;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPixel(x, y: int32or64; const c: TBGRAPixel);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  DrawPixelInlineWithAlphaCheck(GetScanlineFast(y) + x, c);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.FastBlendPixel(x, y: int32or64; const c: TBGRAPixel);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  FastBlendPixelInline(GetScanlineFast(y) + x, c);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.ErasePixel(x, y: int32or64; alpha: byte);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  ErasePixelInline(GetScanlineFast(y) + x, alpha);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.AlphaPixel(x, y: int32or64; alpha: byte);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  if alpha = 0 then\n    (GetScanlineFast(y) +x)^ := BGRAPixelTransparent\n  else\n    (GetScanlineFast(y) +x)^.alpha := alpha;\n  InvalidateBitmap;\nend;\n\nfunction TBGRADefaultBitmap.GetPixel256(x, y, fracX256, fracY256: int32or64;\n  AResampleFilter: TResampleFilter; smoothBorder: boolean = true): TBGRAPixel;\nbegin\n  if (fracX256 = 0) and (fracY256 = 0) then\n    result := GetPixel(x,y)\n  else if AResampleFilter = rfBox then\n  begin\n    if fracX256 >= 128 then inc(x);\n    if fracY256 >= 128 then inc(y);\n    result := GetPixel(x,y);\n  end else\n  begin\n    LoadFromBitmapIfNeeded;\n    result := InternalGetPixel256(x,y,FineInterpolation256(fracX256,AResampleFilter),FineInterpolation256(fracY256,AResampleFilter),smoothBorder);\n  end;\nend;\n\n{$hints off}\n{ This function compute an interpolated pixel at floating point coordinates }\nfunction TBGRADefaultBitmap.GetPixel(x, y: single; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TBGRAPixel;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  ix := round(x*256);\n  if (ix<= -256) or (ix>=Width shl 8) then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  iy := round(y*256);\n  if (iy<= -256) or (iy>=Height shl 8) then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n\n  iFactX := ix and 255; //distance from integer coordinate\n  iFactY := iy and 255;\n  if ix<0 then ix := -1 else ix := ix shr 8;\n  if iy<0 then iy := -1 else iy := iy shr 8;\n\n  //if the coordinate is integer, then call standard GetPixel function\n  if (iFactX = 0) and (iFactY = 0) then\n  begin\n    Result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n\n  LoadFromBitmapIfNeeded;\n  result := InternalGetPixel256(ix,iy,FineInterpolation256(iFactX,AResampleFilter),FineInterpolation256(iFactY,AResampleFilter),smoothBorder);\nend;\n\n{ Same as GetPixel(single,single,TResampleFilter) but with coordinate cycle, supposing the image repeats itself in both directions }\nfunction TBGRADefaultBitmap.GetPixelCycle(x, y: single; AResampleFilter: TResampleFilter = rfLinear): TBGRAPixel;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  if FNbPixels = 0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  LoadFromBitmapIfNeeded;\n  ix := round(x*256);\n  iy := round(y*256);\n  iFactX := ix and 255;\n  iFactY := iy and 255;\n  ix := PositiveMod(ix, FWidth shl 8) shr 8;\n  iy := PositiveMod(iy, FHeight shl 8) shr 8;\n  if (iFactX = 0) and (iFactY = 0) then\n  begin\n    result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n  if ScanInterpolationFilter <> rfLinear then\n  begin\n    iFactX := FineInterpolation256( iFactX, ScanInterpolationFilter );\n    iFactY := FineInterpolation256( iFactY, ScanInterpolationFilter );\n  end;\n  result := InternalGetPixelCycle256(ix,iy, iFactX,iFactY);\nend;\n\nfunction TBGRADefaultBitmap.GetPixelCycle(x, y: single;\n  AResampleFilter: TResampleFilter; repeatX: boolean; repeatY: boolean\n  ): TBGRAPixel;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  if FNbPixels = 0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  ix := round(x*256);\n  iy := round(y*256);\n  iFactX := ix and 255;\n  iFactY := iy and 255;\n  if ix < 0 then ix := -((iFactX-ix) shr 8)\n  else ix := ix shr 8;\n  if iy < 0 then iy := -((iFactY-iy) shr 8)\n  else iy := iy shr 8;\n  result := GetPixelCycle256(ix,iy,iFactX,iFactY,AResampleFilter,repeatX,repeatY);\nend;\n\nfunction TBGRADefaultBitmap.GetPixelCycle256(x, y, fracX256,\n  fracY256: int32or64; AResampleFilter: TResampleFilter): TBGRAPixel;\nbegin\n  if (fracX256 = 0) and (fracY256 = 0) then\n    result := GetPixelCycle(x,y)\n  else if AResampleFilter = rfBox then\n  begin\n    if fracX256 >= 128 then inc(x);\n    if fracY256 >= 128 then inc(y);\n    result := GetPixelCycle(x,y);\n  end else\n  begin\n    LoadFromBitmapIfNeeded;\n    result := InternalGetPixelCycle256(PositiveMod(x,FWidth),PositiveMod(y,FHeight),FineInterpolation256(fracX256,AResampleFilter),FineInterpolation256(fracY256,AResampleFilter));\n  end;\nend;\n\nfunction TBGRADefaultBitmap.GetPixelCycle256(x, y, fracX256,\n  fracY256: int32or64; AResampleFilter: TResampleFilter; repeatX: boolean;\n  repeatY: boolean): TBGRAPixel;\nbegin\n  if not repeatX and not repeatY then\n    result := GetPixel256(x,y,fracX256,fracY256,AResampleFilter)\n  else if repeatX and repeatY then\n    result := GetPixelCycle256(x,y,fracX256,fracY256,AResampleFilter)\n  else\n  begin\n    if not repeatX then\n    begin\n      if x < 0 then\n      begin\n        if x < -1 then\n        begin\n          result := BGRAPixelTransparent;\n          exit;\n        end;\n        result := GetPixelCycle256(0,y,0,fracY256,AResampleFilter);\n        result.alpha:= result.alpha*fracX256 shr 8;\n        if result.alpha = 0 then\n          result := BGRAPixelTransparent;\n        exit;\n      end;\n      if x >= FWidth-1 then\n      begin\n        if x >= FWidth then\n        begin\n          result := BGRAPixelTransparent;\n          exit;\n        end;\n        result := GetPixelCycle256(FWidth-1,y,0,fracY256,AResampleFilter);\n        result.alpha:= result.alpha*(256-fracX256) shr 8;\n        if result.alpha = 0 then\n          result := BGRAPixelTransparent;\n        exit;\n      end;\n    end else\n    begin\n      if y < 0 then\n      begin\n        if y < -1 then\n        begin\n          result := BGRAPixelTransparent;\n          exit;\n        end;\n        result := GetPixelCycle256(x,0,fracX256,0,AResampleFilter);\n        result.alpha:= result.alpha*fracY256 shr 8;\n        if result.alpha = 0 then\n          result := BGRAPixelTransparent;\n        exit;\n      end;\n      if y >= FHeight-1 then\n      begin\n        if y >= FHeight then\n        begin\n          result := BGRAPixelTransparent;\n          exit;\n        end;\n        result := GetPixelCycle256(x,FHeight-1,fracX256,0,AResampleFilter);\n        result.alpha:= result.alpha*(256-fracY256) shr 8;\n        if result.alpha = 0 then\n          result := BGRAPixelTransparent;\n        exit;\n      end;\n    end;\n    result := GetPixelCycle256(x,y,fracX256,fracY256,AResampleFilter);\n  end;\nend;\n\n{$hints on}\n\nprocedure TBGRADefaultBitmap.InvalidateBitmap;\nbegin\n  FDataModified := True;\nend;\n\nfunction TBGRADefaultBitmap.GetBitmap: TBitmap;\nbegin\n  if FAlphaCorrectionNeeded then\n  begin\n    if CanvasAlphaCorrection then\n      LoadFromBitmapIfNeeded\n    else\n      FAlphaCorrectionNeeded := false;\n  end;\n  if FDataModified or (FBitmap = nil) then\n  begin\n    RebuildBitmap;\n    FBitmapModified := false;\n    FAlphaCorrectionNeeded:= false;\n    FDataModified := False;\n  end;\n  Result := FBitmap;\nend;\n\nfunction TBGRADefaultBitmap.GetCanvas: TCanvas;\nbegin\n  if FDataModified or (FBitmap = nil) then\n  begin\n    RebuildBitmap;\n    FBitmapModified := false;\n    FAlphaCorrectionNeeded:= false;\n    FDataModified := False;\n  end;\n  Result := FBitmap.Canvas;\nend;\n\n{$IFDEF BGRABITMAP_USE_FPCANVAS}function TBGRADefaultBitmap.GetCanvasFP: TFPImageCanvas;\nbegin\n  {$warnings off}\n  if FCanvasFP = nil then\n    FCanvasFP := TFPImageCanvas.Create(self);\n  {$warnings on}\n  result := FCanvasFP;\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.SetCanvasDrawModeFP(const AValue: TDrawMode);\nbegin\n  FCanvasDrawModeFP := AValue;\n  Case AValue of\n  dmLinearBlend: FCanvasPixelProcFP := @FastBlendPixel;\n  dmDrawWithTransparency: FCanvasPixelProcFP := @DrawPixel;\n  dmXor: FCanvasPixelProcFP:= @XorPixel;\n  else FCanvasPixelProcFP := @SetPixel;\n  end;\nend;\n\nfunction TBGRADefaultBitmap.GetCanvasDrawModeFP: TDrawMode;\nbegin\n  Result:= FCanvasDrawModeFP;\nend;\n\nprocedure TBGRADefaultBitmap.LoadFromBitmapIfNeeded;\nbegin\n  if FBitmapModified then\n  begin\n    DoLoadFromBitmap;\n    DiscardBitmapChange;\n  end;\n  if FAlphaCorrectionNeeded then\n  begin\n    DoAlphaCorrection;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadePosition: byte; mode: TDrawMode = dmDrawWithTransparency);\nbegin\n  if AFadePosition = 0 then\n    FillRect(ARect, Source1, mode) else\n  if AFadePosition = 255 then\n    FillRect(ARect, Source2, mode) else\n    InternalCrossFade(ARect, Source1,Source2, AFadePosition,nil, mode);\nend;\n\nprocedure TBGRADefaultBitmap.CrossFade(ARect: TRect; Source1, Source2: IBGRAScanner; AFadeMask: IBGRAScanner; mode: TDrawMode = dmDrawWithTransparency);\nbegin\n  InternalCrossFade(ARect, Source1,Source2, 0,AFadeMask, mode);\nend;\n\nprocedure TBGRADefaultBitmap.DiscardBitmapChange; inline;\nbegin\n  FBitmapModified := False;\nend;\n\nprocedure TBGRADefaultBitmap.NotifyBitmapChange;\nbegin\n  FBitmapModified := True;\n  FAlphaCorrectionNeeded := true;\nend;\n\n{ Initialize properties }\nprocedure TBGRADefaultBitmap.Init;\nbegin\n  inherited Init;\n  FBitmap    := nil;\n  {$IFDEF BGRABITMAP_USE_FPCANVAS}FCanvasFP  := nil;{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}FCanvasBGRA := nil;{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}FCanvas2D := nil;{$ENDIF}\n  CanvasDrawModeFP := dmDrawWithTransparency;\n  FCanvasOpacity := 255;\n  FAlphaCorrectionNeeded := False;\n\n  FontName  := 'Arial';\n  FontStyle := [];\n  FontAntialias := False;\n  FontVerticalAnchor:= fvaTop;\n  FFontHeight := 20;\n\n  ResampleFilter := rfHalfCosine;\n  ScanInterpolationFilter := rfLinear;\nend;\n\nprocedure TBGRADefaultBitmap.SetInternalColor(x, y: integer; const Value: TFPColor);\nbegin\n  FCanvasPixelProcFP(x,y, FPColorToBGRA(Value));\nend;\n\nfunction TBGRADefaultBitmap.GetInternalColor(x, y: integer): TFPColor;\nbegin\n  if (x < 0) or (y < 0) or (x >= Width) or (y >= Height) then\n    result := colTransparent\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    result := BGRAToFPColor((Scanline[y] + x)^);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.SetInternalPixel(x, y: integer; Value: integer);\nvar\n  c: TFPColor;\nbegin\n  if not PtInClipRect(x,y) then exit;\n  c  := Palette.Color[Value];\n  (Scanline[y] + x)^ := FPColorToBGRA(c);\n  InvalidateBitmap;\nend;\n\nfunction TBGRADefaultBitmap.GetInternalPixel(x, y: integer): integer;\nvar\n  c: TFPColor;\nbegin\n  if (x < 0) or (y < 0) or (x >= Width) or (y >= Height) then\n    result := 0\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    c := BGRAToFPColor((Scanline[y] + x)^);\n    Result := palette.IndexOf(c);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  if (self = nil) or (Width = 0) or (Height = 0) then exit;\n  if Opaque then\n    DataDrawOpaque(ACanvas, Rect(X, Y, X + Width, Y + Height), Data,\n      FLineOrder, FWidth, FHeight)\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    if Empty then\n      exit;\n    ACanvas.Draw(X, Y, Bitmap);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nbegin\n  if (self = nil) or (Width = 0) or (Height = 0) then exit;\n  if Opaque then\n    DataDrawOpaque(ACanvas, Rect, Data, FLineOrder, FWidth, FHeight)\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    ACanvas.StretchDraw(Rect, Bitmap);\n  end;\nend;\n\n{---------------------------- Line primitives ---------------------------------}\n\nprocedure TBGRADefaultBitmap.XorHorizLine(x, y, x2: int32or64; c: TBGRAPixel);\nbegin\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  XorInline(scanline[y] + x, c, x2 - x + 1);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.DrawHorizLine(x, y, x2: int32or64; ec: TExpandedPixel\n  );\nbegin\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  DrawExpandedPixelsInline(scanline[y] + x, ec, x2 - x + 1);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.FastBlendHorizLine(x, y, x2: int32or64; c: TBGRAPixel);\nbegin\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  FastBlendPixelsInline(scanline[y] + x, c, x2 - x + 1);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.AlphaHorizLine(x, y, x2: int32or64; alpha: byte);\nbegin\n  if alpha = 0 then\n  begin\n    SetHorizLine(x, y, x2, BGRAPixelTransparent);\n    exit;\n  end;\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  AlphaFillInline(scanline[y] + x, alpha, x2 - x + 1);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.XorVertLine(x, y, y2: int32or64; c: TBGRAPixel);\nvar\n  n, delta: int32or64;\n  p: PBGRAPixel;\nbegin\n  if not CheckVertLineBounds(x,y,y2) then exit;\n  if LineOrder = riloTopToBottom then delta := Width else delta := -Width;\n  p    := scanline[y] + x;\n  for n := y2 - y downto 0 do\n  begin\n    PLongWord(p)^ := PLongWord(p)^ xor LongWord(c);\n    Inc(p, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.DrawVertLine(x, y, y2: int32or64; c: TBGRAPixel);\nvar\n  n, delta: int32or64;\n  p: PBGRAPixel;\nbegin\n  if c.alpha = 255 then\n  begin\n    SetVertLine(x,y,y2,c);\n    exit;\n  end;\n  if not CheckVertLineBounds(x,y,y2) or (c.alpha=0) then exit;\n  p    := scanline[y] + x;\n  if LineOrder = riloTopToBottom then delta := Width else delta := -Width;\n  for n := y2 - y downto 0 do\n  begin\n    DrawPixelInlineNoAlphaCheck(p, c);\n    Inc(p, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.AlphaVertLine(x, y, y2: int32or64; alpha: byte);\nvar\n  n, delta: int32or64;\n  p: PBGRAPixel;\nbegin\n  if alpha = 0 then\n  begin\n    SetVertLine(x, y, y2, BGRAPixelTransparent);\n    exit;\n  end;\n  if not CheckVertLineBounds(x,y,y2) then exit;\n  p    := scanline[y] + x;\n  if LineOrder = riloTopToBottom then delta := Width else delta := -Width;\n  for n := y2 - y downto 0 do\n  begin\n    p^.alpha := alpha;\n    Inc(p, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.FastBlendVertLine(x, y, y2: int32or64; c: TBGRAPixel);\nvar\n  n, delta: int32or64;\n  p: PBGRAPixel;\nbegin\n  if not CheckVertLineBounds(x,y,y2) then exit;\n  p    := scanline[y] + x;\n  if LineOrder = riloTopToBottom then delta := Width else delta := -Width;\n  for n := y2 - y downto 0 do\n  begin\n    FastBlendPixelInline(p, c);\n    Inc(p, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.DrawHorizLineDiff(x, y, x2: int32or64;\n  c, compare: TBGRAPixel; maxDiff: byte);\nbegin\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  DrawPixelsInlineDiff(scanline[y] + x, c, x2 - x + 1, compare, maxDiff);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.HorizLineDiff(x, y, x2: int32or64;\n  const ABrush: TUniversalBrush; ACompare: TBGRAPixel; AMaxDiffW: word);\nvar\n  pScan: PBGRAPixel;\n  ctx: TUniBrushContext;\n  sameCount, remain: Int32or64;\n  startAlpha, nextAlpha: Word;\n  compExpand: TExpandedPixel;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := PBGRAPixel(GetPixelAddress(x,y));\n  ABrush.MoveTo(@ctx, pScan,x,y);\n  remain := x2-x+1;\n  compExpand := ACompare.ToExpanded;\n  if pScan^ = ACompare then nextAlpha := 65535\n  else nextAlpha := (65535 * (AMaxDiffW + 1 - ExpandedDiff(GammaExpansion(pScan^), compExpand)) + (AMaxDiffW + 1) shr 1) div (AMaxDiffW + 1);\n  inc(pScan);\n  while remain > 0 do\n  begin\n    startAlpha := nextAlpha;\n    sameCount := 1;\n    dec(remain);\n    while remain > 0 do\n    begin\n      if pScan^ = ACompare then nextAlpha := 65535\n      else nextAlpha := (65535 * (AMaxDiffW + 1 - ExpandedDiff(GammaExpansion(pScan^), compExpand)) + (AMaxDiffW + 1) shr 1) div (AMaxDiffW + 1);\n      inc(pScan);\n      if nextAlpha = startAlpha then\n      begin\n        inc(sameCount);\n        dec(remain);\n      end else break;\n    end;\n    ABrush.PutNextPixels(@ctx, startAlpha, sameCount);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.InternalTextOutCurved(\n  ACursor: TBGRACustomPathCursor; sUTF8: string; AColor: TBGRAPixel;\n  ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\nvar\n  glyphCursor: TGlyphCursorUtf8;\n  currentGlyph: TGlyphUtf8;\n  currentGlyphUtf8: string;\n  currentGlyphWidth: single;\n  angleRad, textLen, skipped: single;\n\n  procedure NextGlyph;\n  begin\n    currentGlyph := glyphCursor.GetNextGlyph;\n    if currentGlyph.MirroredGlyphUtf8 <> '' then\n      currentGlyphUtf8:= currentGlyph.MirroredGlyphUtf8\n      else currentGlyphUtf8 := currentGlyph.GlyphUtf8;\n    currentGlyphWidth := TextSize(currentGlyphUtf8).cx;\n  end;\n\n  function SkipStartGlyphs(AInitialPosition:single):single;\n  begin\n    result := 0;\n    while (result + 1e-6 < AInitialPosition) and not glyphCursor.EndOfString do\n    begin\n      NextGlyph;\n      IncF(result, currentGlyphWidth + ALetterSpacing);\n    end;\n  end;\n\nbegin\n  if (ATexture = nil) and not FontRenderer.TextVisible(AColor) then exit;\n  sUTF8 := CleanTextOutString(sUTF8);\n  if sUTF8 = '' then exit;\n  glyphCursor := TGlyphCursorUtf8.New(sUTF8, FontBidiMode);\n\n  if AAlign<> taLeftJustify then\n  begin\n    textLen := -ALetterSpacing;\n    while not glyphCursor.EndOfString do\n    begin\n      NextGlyph;\n      IncF(textLen, ALetterSpacing + currentGlyphWidth);\n    end;\n    glyphCursor.Rewind;\n    skipped:=0;\n    case AAlign of\n      taCenter:\n        begin\n          skipped:=SkipStartGlyphs(0.5 * (textLen-ACursor.PathLength));\n          ACursor.MoveBackward((textLen-skipped)*0.5);\n        end;\n      taRightJustify:\n        begin\n          skipped:=SkipStartGlyphs(textLen-ACursor.PathLength);\n          ACursor.MoveBackward(textLen-skipped);\n        end;\n    end;\n  end;\n\n  while not glyphCursor.EndOfString do\n  begin\n    NextGlyph;\n    if ACursor.MoveForward(currentGlyphWidth) <> currentGlyphWidth then break;\n    ACursor.MoveBackward(currentGlyphWidth, false);\n    ACursor.MoveForward(currentGlyphWidth*0.5);\n    with ACursor.CurrentTangent do angleRad := arctan2(y,x);\n    with ACursor.CurrentCoordinate do\n    begin\n      if ATexture = nil then\n        TextOutAngle(x,y, system.round(-angleRad*(1800/Pi)), currentGlyphUtf8, AColor, taCenter)\n      else\n        TextOutAngle(x,y, system.round(-angleRad*(1800/Pi)), currentGlyphUtf8, ATexture, taCenter);\n    end;\n    ACursor.MoveForward(currentGlyphWidth*0.5 + ALetterSpacing);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.InternalTextOutLetterSpacing(x, y: single;\n  sUTF8: string; AColor: TBGRAPixel; ATexture: IBGRAScanner;\n  AAlign: TAlignment; ALetterSpacing: single);\nvar\n  glyphCursor: TGlyphCursorUtf8;\n  currentGlyph: TGlyphUtf8;\n  currentGlyphUtf8: string;\n  currentGlyphWidth: single;\n  angle, textLen: single;\n  m: TAffineMatrix;\n  ofs: TPointF;\n\n  procedure NextGlyph;\n  begin\n    currentGlyph := glyphCursor.GetNextGlyph;\n    if currentGlyph.MirroredGlyphUtf8 <> '' then\n      currentGlyphUtf8:= currentGlyph.MirroredGlyphUtf8\n      else currentGlyphUtf8 := currentGlyph.GlyphUtf8;\n    currentGlyphWidth := TextSize(currentGlyphUtf8).cx;\n  end;\n\nbegin\n  if (ATexture = nil) and not FontRenderer.TextVisible(AColor) then exit;\n  sUTF8 := CleanTextOutString(sUTF8);\n  if sUTF8 = '' then exit;\n  glyphCursor := TGlyphCursorUtf8.New(sUTF8, FontBidiMode);\n\n  ofs := PointF(0, 0);\n  if AAlign<> taLeftJustify then\n  begin\n    textLen := -ALetterSpacing;\n    while not glyphCursor.EndOfString do\n    begin\n      NextGlyph;\n      IncF(textLen, ALetterSpacing + currentGlyphWidth);\n    end;\n    case AAlign of\n      taCenter: DecF(ofs.x, 0.5*textLen);\n      taRightJustify: DecF(ofs.x, textLen);\n    end;\n    glyphCursor.Rewind;\n  end;\n  m := AffineMatrixRotationDeg(-FontOrientation*0.1);\n  ofs := m*ofs;\n  incF(x, ofs.x);\n  incF(y, ofs.y);\n\n  while not glyphCursor.EndOfString do\n  begin\n    NextGlyph;\n    if ATexture = nil then\n      TextOut(x,y, currentGlyphUtf8, AColor, taLeftJustify, currentGlyph.RightToLeft)\n    else\n      TextOut(x,y, currentGlyphUtf8, ATexture, taLeftJustify, currentGlyph.RightToLeft);\n    ofs := m*PointF(currentGlyphWidth + ALetterSpacing, 0);\n    incF(x, ofs.x);\n    incF(y, ofs.y);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.InternalCrossFade(ARect: TRect; Source1,\n  Source2: IBGRAScanner; AFadePos: byte; AFadeMask: IBGRAScanner; mode: TDrawMode);\nvar xb,yb: Int32or64;\n  pdest: PBGRAPixel;\n  c: TBGRAPixel;\n  buf1,buf2: ArrayOfTBGRAPixel;\nbegin\n  ARect.Intersect(ClipRect);\n  if ARect.IsEmpty then exit;\n  setlength(buf1, ARect.Width);\n  setlength(buf2, ARect.Width);\n  for yb := ARect.top to ARect.Bottom-1 do\n  begin\n    pdest := GetScanlineFast(yb)+ARect.Left;\n    Source1.ScanMoveTo(ARect.left, yb);\n    Source1.ScanPutPixels(@buf1[0], length(buf1), dmSet);\n    Source2.ScanMoveTo(ARect.left, yb);\n    Source2.ScanPutPixels(@buf2[0], length(buf2), dmSet);\n    if AFadeMask<>nil then AFadeMask.ScanMoveTo(ARect.left, yb);\n    for xb := 0 to ARect.Right-ARect.left-1 do\n    begin\n      if AFadeMask<>nil then AFadePos := AFadeMask.ScanNextPixel.green;\n      c := MergeBGRAWithGammaCorrection(buf1[xb],not AFadePos,buf2[xb],AFadePos);\n      case mode of\n      dmSet: pdest^ := c;\n      dmDrawWithTransparency: DrawPixelInlineWithAlphaCheck(pdest, c);\n      dmLinearBlend: FastBlendPixelInline(pdest,c);\n      dmSetExceptTransparent: if c.alpha = 255 then pdest^ := c;\n      end;\n      inc(pdest);\n    end;\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.InternalArc(cx, cy, rx, ry: single; StartAngleRad,\n  EndAngleRad: Single; ABorderColor: TBGRAPixel; w: single; AFillColor: TBGRAPixel; AOptions: TArcOptions;\n  ADrawChord: boolean; ATexture: IBGRAScanner);\nvar\n  pts, ptsFill: array of TPointF;\n  temp: single;\n  multi: TBGRAMultishapeFiller;\nbegin\n  if (rx = 0) or (ry = 0) then exit;\n  if ADrawChord then AOptions := AOptions+[aoClosePath];\n  if not (aoFillPath in AOptions) then\n    AFillColor := BGRAPixelTransparent;\n\n  if (ABorderColor.alpha = 0) and (AFillColor.alpha = 0) then exit;\n\n  if (abs(StartAngleRad-EndAngleRad) >= 2*PI - 1e-6) or (StartAngleRad = EndAngleRad) then\n  begin\n    if (aoPie in AOptions) or ((PenStyle <> psSolid) and (PenStyle <> psClear)) then\n      EndAngleRad:= StartAngleRad+2*PI\n    else\n    begin\n      EllipseAntialias(cx,cy,rx,ry,ABorderColor,w,AFillColor);\n      exit;\n    end;\n  end;\n\n  if EndAngleRad < StartAngleRad then\n  begin\n    temp := StartAngleRad;\n    StartAngleRad:= EndAngleRad;\n    EndAngleRad:= temp;\n  end;\n\n  pts := ComputeArcRad(cx,cy,rx,ry,StartAngleRad,EndAngleRad);\n  if aoPie in AOptions then pts := ConcatPointsF([PointsF([PointF(cx,cy)]),pts]);\n\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := fmWinding;\n  multi.PolygonOrder := poLastOnTop;\n  if AFillColor.alpha <> 0 then\n  begin\n    if not (aoPie in AOptions) and (length(pts)>=2) then ptsFill := ConcatPointsF([PointsF([(pts[0]+pts[high(pts)])*0.5]),pts])\n     else ptsFill := pts;\n    if ATexture <> nil then\n      multi.AddPolygon(ptsFill, ATexture)\n    else\n      multi.AddPolygon(ptsFill, AFillColor);\n  end;\n  if ABorderColor.alpha <> 0 then\n  begin\n    if [aoPie,aoClosePath]*AOptions <> [] then\n      multi.AddPolygon(ComputeWidePolygon(pts,w), ABorderColor)\n    else\n      multi.AddPolygon(ComputeWidePolyline(pts,w), ABorderColor);\n  end;\n  multi.Antialiasing := true;\n  multi.Draw(self);\n  multi.Free;\nend;\n\nfunction TBGRADefaultBitmap.InternalNew: TBGRADefaultBitmap;\nvar\n  BGRAClass: TBGRABitmapAny;\nbegin\n  BGRAClass := TBGRABitmapAny(self.ClassType);\n  if BGRAClass = TBGRAPtrBitmap then\n    BGRAClass := TBGRADefaultBitmap;\n  Result      := BGRAClass.Create(0, 0) as TBGRADefaultBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.InternalTextOutOffset(x, y: single;\n  const sUTF8: string; AColor: TBGRAPixel; ATexture: IBGRAScanner;\n  AOffsets: array of TPointF);\nvar\n  cursor: TGlyphCursorUtf8;\n  glyph: TGlyphUtf8;\n  index, i: integer;\n  p: TPointF;\nbegin\n  cursor := TGlyphCursorUtf8.New(sUTF8, FontBidiMode);\n  index := 0;\n  p := PointF(x, y);\n  while not cursor.EndOfString do\n  begin\n    glyph := cursor.GetNextGlyph;\n    if Assigned(ATexture) then\n      TextOut(p.x, p.y, glyph.GlyphUtf8, ATexture)\n    else\n      TextOut(p.x, p.y, glyph.GlyphUtf8, AColor);\n    for i := 1 to UTF8Length(glyph.GlyphUtf8) do\n    begin\n      if index <= high(AOffsets) then\n        p.Offset(AOffsets[i]);\n      inc(index);\n    end;\n  end;\nend;\n\nclass function TBGRADefaultBitmap.IsAffineRoughlyTranslation(AMatrix: TAffineMatrix; ASourceBounds: TRect): boolean;\nconst oneOver512 = 1/512;\nvar Orig,HAxis,VAxis: TPointF;\nbegin\n  Orig := AMatrix*PointF(ASourceBounds.Left,ASourceBounds.Top);\n  if (abs(Orig.x-round(Orig.x)) > oneOver512) or\n     (abs(Orig.y-round(Orig.y)) > oneOver512) then\n  begin\n    result := false;\n    exit;\n  end;\n  HAxis := AMatrix*PointF(ASourceBounds.Right-1,ASourceBounds.Top);\n  if (abs(HAxis.x - (round(Orig.x)+ASourceBounds.Right-1 - ASourceBounds.Left)) > oneOver512) or\n     (abs(HAxis.y - round(Orig.y)) > oneOver512) then\n  begin\n    result := false;\n    exit;\n  end;\n  VAxis := AMatrix*PointF(ASourceBounds.Left,ASourceBounds.Bottom-1);\n  if (abs(VAxis.y - (round(Orig.y)+ASourceBounds.Bottom-1 - ASourceBounds.Top)) > oneOver512) or\n     (abs(VAxis.x - round(Orig.x)) > oneOver512) then\n  begin\n    result := false;\n    exit;\n  end;\n  result := true;\nend;\n\n{---------------------------- Lines ---------------------------------}\n{ Call appropriate functions }\n\nprocedure TBGRADefaultBitmap.DrawPolyLineAntialias(\n  const points: array of TPointF; c: TBGRAPixel; w: single;\n  fillcolor: TBGRAPixel);\nvar multi: TBGRAMultishapeFiller;\nbegin\n  multi := TBGRAMultishapeFiller.Create;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPolygon(points,fillcolor);\n  multi.AddPolygon(ComputeWidePolyline(points,w),c);\n  if LinearAntialiasing then\n    multi.Draw(self,dmLinearBlend)\n  else\n    multi.Draw(self,dmDrawWithTransparency);\n  multi.Free;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPolygonAntialias(\n  const points: array of TPointF; c: TBGRAPixel; w: single;\n  fillcolor: TBGRAPixel);\nvar multi: TBGRAMultishapeFiller;\nbegin\n  multi := TBGRAMultishapeFiller.Create;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPolygon(points,fillcolor);\n  multi.AddPolygon(ComputeWidePolygon(points,w),c);\n  if LinearAntialiasing then\n    multi.Draw(self,dmLinearBlend)\n  else\n    multi.Draw(self,dmDrawWithTransparency);\n  multi.Free;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix;\n  AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel);\nvar tempPath: TBGRAPath;\n  multi: TBGRAMultishapeFiller;\nbegin\n  tempPath := TBGRAPath.Create(APath);\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := FillMode;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPathFill(tempPath,AMatrix,AFillColor);\n  multi.AddPathStroke(tempPath,AMatrix,AStrokeColor,AWidth,GetInternalPen);\n  multi.Draw(self);\n  multi.Free;\n  tempPath.Free;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix;\n  AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel);\nvar tempPath: TBGRAPath;\n  multi: TBGRAMultishapeFiller;\nbegin\n  tempPath := TBGRAPath.Create(APath);\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := FillMode;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPathFill(tempPath,AMatrix,AFillColor);\n  multi.AddPathStroke(tempPath,AMatrix,AStrokeTexture,AWidth,GetInternalPen);\n  multi.Draw(self);\n  multi.Free;\n  tempPath.Free;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix;\n  AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner);\nvar tempPath: TBGRAPath;\n  multi: TBGRAMultishapeFiller;\nbegin\n  tempPath := TBGRAPath.Create(APath);\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := FillMode;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPathFill(tempPath,AMatrix,AFillTexture);\n  multi.AddPathStroke(tempPath,AMatrix,AStrokeColor,AWidth,GetInternalPen);\n  multi.Draw(self);\n  multi.Free;\n  tempPath.Free;\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath; AMatrix: TAffineMatrix;\n  AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner);\nvar\n  tempPath: TBGRAPath;\n  multi: TBGRAMultishapeFiller;\nbegin\n  tempPath := TBGRAPath.Create(APath);\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := FillMode;\n  multi.PolygonOrder := poLastOnTop;\n  multi.AddPathFill(tempPath,AMatrix,AFillTexture);\n  multi.AddPathStroke(tempPath,AMatrix,AStrokeTexture,AWidth,GetInternalPen);\n  multi.Draw(self);\n  multi.Free;\n  tempPath.Free;\nend;\n\nprocedure TBGRADefaultBitmap.ArrowStartAsNone;\nbegin\n  GetArrow.StartAsNone;\nend;\n\nprocedure TBGRADefaultBitmap.ArrowStartAsClassic(AFlipped: boolean;\n  ACut: boolean; ARelativePenWidth: single);\nbegin\n  GetArrow.StartAsClassic(AFlipped,ACut,ARelativePenWidth);\nend;\n\nprocedure TBGRADefaultBitmap.ArrowStartAsTriangle(ABackOffset: single;\n  ARounded: boolean; AHollow: boolean; AHollowPenWidth: single);\nbegin\n  GetArrow.StartAsTriangle(ABackOffset,ARounded,AHollow,AHollowPenWidth);\nend;\n\nprocedure TBGRADefaultBitmap.ArrowStartAsTail;\nbegin\n  GetArrow.StartAsTail;\nend;\n\nprocedure TBGRADefaultBitmap.ArrowEndAsNone;\nbegin\n  GetArrow.EndAsNone;\nend;\n\nprocedure TBGRADefaultBitmap.ArrowEndAsClassic(AFlipped: boolean;\n  ACut: boolean; ARelativePenWidth: single);\nbegin\n  GetArrow.EndAsClassic(AFlipped,ACut,ARelativePenWidth);\nend;\n\nprocedure TBGRADefaultBitmap.ArrowEndAsTriangle(ABackOffset: single;\n  ARounded: boolean; AHollow: boolean; AHollowPenWidth: single);\nbegin\n  GetArrow.EndAsTriangle(ABackOffset,ARounded,AHollow,AHollowPenWidth);\nend;\n\nprocedure TBGRADefaultBitmap.ArrowEndAsTail;\nbegin\n  GetArrow.EndAsTail;\nend;\n\n{------------------------ Shapes ----------------------------------------------}\n{ Call appropriate functions }\n\nprocedure TBGRADefaultBitmap.FillTriangleLinearColor(pt1, pt2, pt3: TPointF;\n  c1, c2, c3: TBGRAPixel);\n{$IFDEF BGRABITMAP_CORE}var\n  grad: TBGRAGradientTriangleScanner;\nbegin\n  grad := TBGRAGradientTriangleScanner.Create(pt1,pt2,pt3, c1,c2,c3);\n  FillPoly([pt1,pt2,pt3],grad,dmDrawWithTransparency);\n  grad.Free;\nend;{$ELSE}begin\n  FillPolyLinearColor([pt1,pt2,pt3],[c1,c2,c3]);\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.FillTriangleLinearColorAntialias(pt1, pt2,\n  pt3: TPointF; c1, c2, c3: TBGRAPixel);\nvar\n  grad: TBGRAGradientTriangleScanner;\nbegin\n  grad := TBGRAGradientTriangleScanner.Create(pt1,pt2,pt3, c1,c2,c3);\n  FillPolyAntialias([pt1,pt2,pt3],grad);\n  grad.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillTriangleLinearMapping(pt1, pt2, pt3: TPointF;\n  texture: IBGRAScanner; tex1, tex2, tex3: TPointF; TextureInterpolation: Boolean= True);\n{$IFDEF BGRABITMAP_CORE}var\n  mapping: TBGRATriangleLinearMapping;\nbegin\n  mapping := TBGRATriangleLinearMapping.Create(texture, pt1,pt2,pt3, tex1, tex2, tex3);\n  FillPoly([pt1,pt2,pt3],mapping,dmDrawWithTransparency);\n  mapping.Free;\nend;{$ELSE}begin\n  FillPolyLinearMapping([pt1,pt2,pt3],texture,[tex1,tex2,tex3],TextureInterpolation);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillTriangleLinearMappingLightness(pt1, pt2,\n  pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF; light1,\n  light2, light3: word; TextureInterpolation: Boolean);\nbegin\n  FillPolyLinearMappingLightness([pt1,pt2,pt3],texture,[tex1,tex2,tex3],[light1,light2,light3],TextureInterpolation);\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.FillTriangleLinearMappingAntialias(pt1, pt2,\n  pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF);\nvar\n  mapping: TBGRATriangleLinearMapping;\nbegin\n  mapping := TBGRATriangleLinearMapping.Create(texture, pt1,pt2,pt3, tex1, tex2, tex3);\n  FillPolyAntialias([pt1,pt2,pt3],mapping);\n  mapping.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadLinearColor(pt1, pt2, pt3, pt4: TPointF;\n  c1, c2, c3, c4: TBGRAPixel);\nvar\n  center: TPointF;\n  centerColor: TBGRAPixel;\n  multi: TBGRAMultishapeFiller;\nbegin\n  if not IsConvex([pt1,pt2,pt3,pt4]) then //need to merge colors\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.AddQuadLinearColor(pt1,pt2,pt3,pt4,c1,c2,c3,c4);\n    multi.Antialiasing:= false;\n    multi.Draw(self);\n    multi.Free;\n    exit;\n  end;\n  center := (pt1+pt2+pt3+pt4)*(1/4);\n  centerColor := GammaCompression( MergeBGRA(MergeBGRA(GammaExpansion(c1),GammaExpansion(c2)),\n                    MergeBGRA(GammaExpansion(c3),GammaExpansion(c4))) );\n  FillTriangleLinearColor(pt1,pt2,center, c1,c2,centerColor);\n  FillTriangleLinearColor(pt2,pt3,center, c2,c3,centerColor);\n  FillTriangleLinearColor(pt3,pt4,center, c3,c4,centerColor);\n  FillTriangleLinearColor(pt4,pt1,center, c4,c1,centerColor);\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadLinearColorAntialias(pt1, pt2, pt3,\n  pt4: TPointF; c1, c2, c3, c4: TBGRAPixel);\nvar multi : TBGRAMultishapeFiller;\nbegin\n  multi := TBGRAMultishapeFiller.Create;\n  multi.AddQuadLinearColor(pt1, pt2, pt3, pt4, c1, c2, c3, c4);\n  multi.Draw(self);\n  multi.free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadLinearMapping(pt1, pt2, pt3, pt4: TPointF;\n  texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  TextureInterpolation: Boolean; ACulling: TFaceCulling; ACropToPolygon: boolean);\nvar\n  scan: TBGRAQuadLinearScanner;\n  r: TRect;\nbegin\n  {$IFNDEF BGRABITMAP_CORE}\n  if ((abs(pt1.y-pt2.y)<1e-6) and (abs(pt3.y-pt4.y)<1e-6)) or\n     ((abs(pt3.y-pt2.y)<1e-6) and (abs(pt1.y-pt4.y)<1e-6)) then\n     FillPolyLinearMapping([pt1,pt2,pt3,pt4], texture,\n            [tex1,tex2,tex3,tex4], TextureInterpolation)\n  else\n  {$ENDIF}\n  begin\n    scan := TBGRAQuadLinearScanner.Create(texture,\n         [tex1,tex2,tex3,tex4],\n         [pt1,pt2,pt3,pt4],TextureInterpolation);\n    scan.Culling := ACulling;\n    if ACropToPolygon then\n    begin\n      scan.Padding := true;\n      FillPoly([pt1,pt2,pt3,pt4],scan,dmDrawWithTransparency);\n    end\n    else\n    begin\n      r := RectWithSize(floor(pt1.x),floor(pt1.y),1,1);\n      r.Union( RectWithSize(floor(pt2.x),floor(pt2.y),1,1) );\n      r.Union( RectWithSize(floor(pt3.x),floor(pt3.y),1,1) );\n      r.Union( RectWithSize(floor(pt4.x),floor(pt4.y),1,1) );\n      FillRect(r,scan,dmDrawWithTransparency);\n    end;\n    scan.Free;\n  end;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillQuadLinearMappingLightness(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF; light1,\n  light2, light3, light4: word; TextureInterpolation: Boolean);\nvar\n  center: TPointF;\n  centerTex: TPointF;\n  centerLight: word;\nbegin\n  center := (pt1+pt2+pt3+pt4)*(1/4);\n  centerTex := (tex1+tex2+tex3+tex4)*(1/4);\n  centerLight := (light1+light2+light3+light4) div 4;\n  FillTriangleLinearMappingLightness(pt1,pt2,center, texture,tex1,tex2,centerTex, light1,light2,centerLight, TextureInterpolation);\n  FillTriangleLinearMappingLightness(pt2,pt3,center, texture,tex2,tex3,centerTex, light2,light3,centerLight, TextureInterpolation);\n  FillTriangleLinearMappingLightness(pt3,pt4,center, texture,tex3,tex4,centerTex, light3,light4,centerLight, TextureInterpolation);\n  FillTriangleLinearMappingLightness(pt4,pt1,center, texture,tex4,tex1,centerTex, light4,light1,centerLight, TextureInterpolation);\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.FillQuadLinearMappingAntialias(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  ACulling: TFaceCulling);\nvar multi : TBGRAMultishapeFiller;\nbegin\n  multi := TBGRAMultishapeFiller.Create;\n  multi.AddQuadLinearMapping(pt1, pt2, pt3, pt4, texture, tex1,tex2,tex3,tex4, ACulling);\n  multi.Draw(self);\n  multi.free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadPerspectiveMapping(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  ADrawMode: TDrawMode);\nvar\n  persp: TBGRAPerspectiveScannerTransform;\nbegin\n  persp := TBGRAPerspectiveScannerTransform.Create(texture,[tex1,tex2,tex3,tex4],[pt1,pt2,pt3,pt4]);\n  FillPoly([pt1,pt2,pt3,pt4],persp,ADrawMode);\n  persp.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadPerspectiveMapping(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  ACleanBorders: TRect; ADrawMode: TDrawMode);\nvar\n  persp: TBGRAPerspectiveScannerTransform;\n  clean: TBGRAExtendedBorderScanner;\nbegin\n  clean := TBGRAExtendedBorderScanner.Create(texture,ACleanBorders);\n  persp := TBGRAPerspectiveScannerTransform.Create(clean,[tex1,tex2,tex3,tex4],[pt1,pt2,pt3,pt4]);\n  FillPoly([pt1,pt2,pt3,pt4],persp,ADrawMode);\n  persp.Free;\n  clean.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadPerspectiveMappingAntialias(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF);\nvar\n  persp: TBGRAPerspectiveScannerTransform;\nbegin\n  persp := TBGRAPerspectiveScannerTransform.Create(texture,[tex1,tex2,tex3,tex4],[pt1,pt2,pt3,pt4]);\n  FillPolyAntialias([pt1,pt2,pt3,pt4],persp);\n  persp.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadPerspectiveMappingAntialias(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  ACleanBorders: TRect);\nvar\n  persp: TBGRAPerspectiveScannerTransform;\n  clean: TBGRAExtendedBorderScanner;\nbegin\n  clean := TBGRAExtendedBorderScanner.Create(texture,ACleanBorders);\n  persp := TBGRAPerspectiveScannerTransform.Create(clean,[tex1,tex2,tex3,tex4],[pt1,pt2,pt3,pt4]);\n  FillPolyAntialias([pt1,pt2,pt3,pt4],persp);\n  persp.Free;\n  clean.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadAffineMapping(Orig, HAxis, VAxis: TPointF;\n  AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean; ADrawMode: TDrawMode; AOpacity: byte);\nvar pts3: TPointF;\n  affine: TBGRAAffineBitmapTransform;\nbegin\n  if not APixelCenteredCoordinates then\n  begin\n    Orig.Offset(-0.5,-0.5);\n    HAxis.Offset(-0.5,-0.5);\n    VAxis.Offset(-0.5,-0.5);\n  end;\n  pts3 := HAxis+(VAxis-Orig);\n  affine := TBGRAAffineBitmapTransform.Create(AImage,False,AImage.ScanInterpolationFilter,not APixelCenteredCoordinates);\n  affine.GlobalOpacity:= AOpacity;\n  affine.Fit(Orig,HAxis,VAxis);\n  FillPoly([Orig,HAxis,pts3,VAxis],affine,ADrawMode);\n  affine.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillQuadAffineMappingAntialias(Orig, HAxis,\n  VAxis: TPointF; AImage: TBGRACustomBitmap; APixelCenteredCoordinates: boolean; AOpacity: byte);\nvar pts3: TPointF;\n  affine: TBGRAAffineBitmapTransform;\nbegin\n  if not APixelCenteredCoordinates then\n  begin\n    Orig.Offset(-0.5,-0.5);\n    HAxis.Offset(-0.5,-0.5);\n    VAxis.Offset(-0.5,-0.5);\n  end;\n  pts3 := HAxis+(VAxis-Orig);\n  affine := TBGRAAffineBitmapTransform.Create(AImage,False,AImage.ScanInterpolationFilter,not APixelCenteredCoordinates);\n  affine.GlobalOpacity:= AOpacity;\n  affine.Fit(Orig,HAxis,VAxis);\n  FillPolyAntialias([Orig,HAxis,pts3,VAxis],affine);\n  affine.Free;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillPolyLinearMapping(const points: array of TPointF;\n  texture: IBGRAScanner; texCoords: array of TPointF;\n  TextureInterpolation: Boolean);\nbegin\n  PolygonLinearTextureMappingAliased(self,points,texture,texCoords,TextureInterpolation, FillMode = fmWinding);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillPolyLinearMappingLightness(\n  const points: array of TPointF; texture: IBGRAScanner;\n  texCoords: array of TPointF; lightnesses: array of word;\n  TextureInterpolation: Boolean);\nbegin\n  PolygonLinearTextureMappingAliasedWithLightness(self,points,texture,texCoords,TextureInterpolation,lightnesses,FillMode = fmWinding);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillPolyLinearColor(\n  const points: array of TPointF; AColors: array of TBGRAPixel);\nbegin\n  PolygonLinearColorGradientAliased(self,points,AColors, FillMode = fmWinding);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillPolyPerspectiveMapping(\n  const points: array of TPointF; const pointsZ: array of single;\n  texture: IBGRAScanner; texCoords: array of TPointF;\n  TextureInterpolation: Boolean; zbuffer: psingle);\nbegin\n  PolygonPerspectiveTextureMappingAliased(self,points,pointsZ,texture,texCoords,TextureInterpolation, FillMode = fmWinding, zbuffer);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.FillPolyPerspectiveMappingLightness(\n  const points: array of TPointF; const pointsZ: array of single;\n  texture: IBGRAScanner; texCoords: array of TPointF;\n  lightnesses: array of word; TextureInterpolation: Boolean; zbuffer: psingle);\nbegin\n  PolygonPerspectiveTextureMappingAliasedWithLightness(self,points,pointsZ,texture,texCoords,TextureInterpolation,lightnesses, FillMode = fmWinding, zbuffer);\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath;\n  AStrokeColor: TBGRAPixel; AWidth: single; AFillColor: TBGRAPixel);\nbegin\n  DrawPath(APath,AffineMatrixIdentity,AStrokeColor,AWidth,AFillColor);\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath;\n  AStrokeTexture: IBGRAScanner; AWidth: single; AFillColor: TBGRAPixel);\nbegin\n  DrawPath(APath,AffineMatrixIdentity,AStrokeTexture,AWidth,AFillColor);\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath;\n  AStrokeColor: TBGRAPixel; AWidth: single; AFillTexture: IBGRAScanner);\nbegin\n  DrawPath(APath,AffineMatrixIdentity,AStrokeColor,AWidth,AFillTexture);\nend;\n\nprocedure TBGRADefaultBitmap.DrawPath(APath: IBGRAPath;\n  AStrokeTexture: IBGRAScanner; AWidth: single; AFillTexture: IBGRAScanner);\nbegin\n  DrawPath(APath,AffineMatrixIdentity,AStrokeTexture,AWidth,AFillTexture);\nend;\n\nprocedure TBGRADefaultBitmap.EllipseAntialias(x, y, rx, ry: single;\n  c: TBGRAPixel; w: single; back: TBGRAPixel);\nvar multi: TBGRAMultishapeFiller;\n    hw: single;\nbegin\n  if (w=0) or (PenStyle = psClear) or (c.alpha = 0) then\n  begin\n    FillEllipseAntialias(x, y, rx, ry, back);\n    exit;\n  end;\n  rx := abs(rx);\n  ry := abs(ry);\n  hw := w/2;\n  if (rx <= hw) or (ry <= hw) then\n  begin\n    FillEllipseAntialias(x,y,rx+hw,ry+hw,c);\n    exit;\n  end;\n  { use multishape filler for fine junction between polygons }\n  multi := TBGRAMultishapeFiller.Create;\n  if (PenStyle = psSolid) then\n  begin\n    if back.alpha <> 0 then multi.AddEllipse(x,y,rx-hw,ry-hw,back);\n    multi.AddEllipseBorder(x,y,rx,ry,w,c)\n  end\n  else\n  begin\n    if back.alpha <> 0 then multi.AddEllipse(x,y,rx,ry,back);\n    multi.AddPolygon(ComputeWidePolygon(ComputeEllipseContour(x,y,rx,ry),w),c);\n  end;\n  multi.PolygonOrder := poLastOnTop;\n  multi.Draw(self);\n  multi.Free;\nend;\n\nprocedure TBGRADefaultBitmap.EllipseAntialias(AOrigin, AXAxis, AYAxis: TPointF;\n  c: TBGRAPixel; w: single; back: TBGRAPixel);\nvar multi: TBGRAMultishapeFiller;\n    pts: ArrayOfTPointF;\nbegin\n  if (w=0) or (PenStyle = psClear) or (c.alpha = 0) then\n  begin\n    FillEllipseAntialias(AOrigin, AXAxis, AYAxis, back);\n    exit;\n  end;\n  { use multishape filler for fine junction between polygons }\n  multi := TBGRAMultishapeFiller.Create;\n  pts := ComputeEllipseContour(AOrigin, AXAxis, AYAxis);\n  if back.alpha <> 0 then multi.AddPolygon(pts, back);\n  pts := ComputeWidePolygon(pts,w);\n  multi.AddPolygon(pts,c);\n  multi.PolygonOrder := poLastOnTop;\n  multi.Draw(self);\n  multi.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillEllipseLinearColorAntialias(x, y, rx,\n  ry: single; outercolor, innercolor: TBGRAPixel);\nvar\n    grad: TBGRAGradientScanner;\n    affine: TBGRAAffineScannerTransform;\nbegin\n  if (rx=0) or (ry=0) then exit;\n  if rx=ry then\n  begin\n    grad := TBGRAGradientScanner.Create(innercolor,outercolor,gtRadial,PointF(x,y),PointF(x+rx,y),True);\n    FillEllipseAntialias(x,y,rx,ry,grad);\n    grad.Free;\n  end else\n  begin\n    grad := TBGRAGradientScanner.Create(innercolor,outercolor,gtRadial,PointF(0,0),PointF(1,0),True);\n    affine := TBGRAAffineScannerTransform.Create(grad);\n    affine.Scale(rx,ry);\n    affine.Translate(x,y);\n    FillEllipseAntialias(x,y,rx,ry,affine);\n    affine.Free;\n    grad.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.FillEllipseLinearColorAntialias(AOrigin, AXAxis,\n  AYAxis: TPointF; outercolor, innercolor: TBGRAPixel);\nvar\n  grad: TBGRAGradientScanner;\n  affine: TBGRAAffineScannerTransform;\nbegin\n  grad := TBGRAGradientScanner.Create(innercolor,outercolor,gtRadial,PointF(0,0),PointF(1,0),True);\n  affine := TBGRAAffineScannerTransform.Create(grad);\n  affine.Fit(AOrigin,AXAxis,AYAxis);\n  FillEllipseAntialias(AOrigin,AXAxis,AYAxis,affine);\n  affine.Free;\n  grad.Free;\nend;\n\nprocedure TBGRADefaultBitmap.RectangleAntialias(x, y, x2, y2: single;\n  c: TBGRAPixel; w: single; back: TBGRAPixel);\nvar\n  bevel: single;\n  multi: TBGRAMultishapeFiller;\n  hw: single;\nbegin\n  if (PenStyle = psClear) or (c.alpha=0) or (w=0) then\n  begin\n    if back <> BGRAPixelTransparent then\n      FillRectAntialias(x,y,x2,y2,back);\n    exit;\n  end;\n\n  hw := w/2;\n  if not CheckAntialiasRectBounds(x,y,x2,y2,w) then\n  begin\n    if JoinStyle = pjsBevel then\n    begin\n      bevel := (2-sqrt(2))*hw;\n      FillRoundRectAntialias(x - hw, y - hw, x2 + hw, y2 + hw, bevel,bevel, c, [rrTopLeftBevel, rrTopRightBevel, rrBottomLeftBevel, rrBottomRightBevel]);\n    end else\n    if JoinStyle = pjsRound then\n     FillRoundRectAntialias(x - hw, y - hw, x2 + hw, y2 + hw, hw,hw, c)\n    else\n     FillRectAntialias(x - hw, y - hw, x2 + hw, y2 + hw, c);\n    exit;\n  end;\n\n  { use multishape filler for fine junction between polygons }\n  multi := TBGRAMultishapeFiller.Create;\n  multi.FillMode := FillMode;\n  if (JoinStyle = pjsMiter) and (PenStyle = psSolid) then\n    multi.AddRectangleBorder(x,y,x2,y2,w,c)\n  else\n    multi.AddPolygon(ComputeWidePolygon([Pointf(x,y),Pointf(x2,y),Pointf(x2,y2),Pointf(x,y2)],w),c);\n\n  if (frac(x + hw) = 0.5) and (frac(y + hw)=0.5) and (frac(x2 - hw)=0.5) and (frac(y2 - hw)=0.5) then\n    FillRect(ceil(x + hw), ceil(y + hw), ceil(x2 - hw), ceil(y2 - hw), back, dmDrawWithTransparency)\n  else\n    multi.AddRectangle(x + hw, y + hw, x2 - hw, y2 - hw, back);\n  multi.Draw(self);\n  multi.Free;\nend;\n\nprocedure TBGRADefaultBitmap.RoundRectAntialias(x, y, x2, y2, rx, ry: single;\n   c: TBGRAPixel; w: single; options: TRoundRectangleOptions);\nbegin\n  if (PenStyle = psClear) or (c.alpha = 0) then exit;\n  if (PenStyle = psSolid) then\n    BGRAPolygon.BorderRoundRectangleAntialias(self,x,y,x2,y2,rx,ry,w,options,c,False, LinearAntialiasing)\n  else\n    DrawPolygonAntialias(BGRAPath.ComputeRoundRect(x,y,x2,y2,rx,ry,options),c,w);\nend;\n\nprocedure TBGRADefaultBitmap.RoundRectAntialias(x, y, x2, y2, rx, ry: single;\n  pencolor: TBGRAPixel; w: single; fillcolor: TBGRAPixel;\n  options: TRoundRectangleOptions);\nvar\n  multi: TBGRAMultishapeFiller;\nbegin\n  if (PenStyle = psClear) or (pencolor.alpha = 0) then\n  begin\n    FillRoundRectAntialias(x,y,x2,y2,rx,ry,fillColor,options);\n    exit;\n  end;\n  if (PenStyle = psSolid) then\n    BGRAPolygon.BorderAndFillRoundRectangleAntialias(self,x,y,x2,y2,rx,ry,w,options,pencolor,fillcolor,nil,nil,False)\n  else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.PolygonOrder := poLastOnTop;\n    multi.AddRoundRectangle(x,y,x2,y2,rx,ry,fillColor,options);\n    multi.AddPolygon(ComputeWidePolygon(BGRAPath.ComputeRoundRect(x,y,x2,y2,rx,ry,options),w),pencolor);\n    multi.Draw(self);\n    multi.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.RoundRectAntialias(x, y, x2, y2, rx, ry: single;\n  penTexture: IBGRAScanner; w: single; fillTexture: IBGRAScanner;\n  options: TRoundRectangleOptions);\nvar\n  multi: TBGRAMultishapeFiller;\nbegin\n  if (PenStyle = psClear) then\n  begin\n    FillRoundRectAntialias(x,y,x2,y2,rx,ry,fillTexture,options);\n    exit;\n  end else\n  if (PenStyle = psSolid) then\n    BGRAPolygon.BorderAndFillRoundRectangleAntialias(self,x,y,x2,y2,rx,ry,w,options,BGRAPixelTransparent,BGRAPixelTransparent,pentexture,filltexture,False)\n  else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.PolygonOrder := poLastOnTop;\n    multi.AddRoundRectangle(x,y,x2,y2,rx,ry,fillTexture,options);\n    multi.AddPolygon(ComputeWidePolygon(ComputeRoundRect(x,y,x2,y2,rx,ry,options),w),penTexture);\n    multi.Draw(self);\n    multi.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.RoundRectAntialias(x, y, x2, y2, rx, ry: single;\n  texture: IBGRAScanner; w: single; options: TRoundRectangleOptions);\nbegin\n  if (PenStyle = psClear) then exit;\n  if (PenStyle = psSolid) then\n    BGRAPolygon.BorderRoundRectangleAntialiasWithTexture(self,x,y,x2,y2,rx,ry,w,options,texture, LinearAntialiasing)\n  else\n    DrawPolygonAntialias(BGRAPath.ComputeRoundRect(x,y,x2,y2,rx,ry,options),texture,w);\nend;\n\nfunction TBGRADefaultBitmap.CheckRectBounds(var x, y, x2, y2: integer; minsize: integer): boolean; inline;\nvar\n  temp: integer;\nbegin\n  //swap coordinates if needed\n  if (x > x2) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (y > y2) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n  if (x2 - x <= minsize) or (y2 - y <= minsize) then\n  begin\n    result := false;\n    exit;\n  end else\n    result := true;\nend;\n\nprocedure TBGRADefaultBitmap.FillRect(x, y, x2, y2: integer;\n  texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm);\nbegin\n  if not CheckClippedRectBounds(x,y,x2,y2) then exit;\n  if ditheringAlgorithm = daNearestNeighbor then\n  begin\n    FillRect(x, y, x2, y2, texture, mode, ScanOffset, 65535);\n    exit;\n  end;\n  {$IFDEF BGRABITMAP_CORE}\n  raise Exception.Create('In core version of BGRABitmap, you need to use CreateDitheringTask doesn''t allow direct dithering fill');\n  {$ELSE}\n  DitheredFillRect(self, x, y, x2, y2, texture, mode, AScanOffset, ditheringAlgorithm);\n  {$ENDIF}\nend;\n\n{------------------------- Text functions ---------------------------------------}\n\nprocedure TBGRADefaultBitmap.TextOutAngle(x, y: single; orientationTenthDegCCW: integer;\n  const sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean);\nbegin\n  with (PointF(x,y)-GetFontAnchorRotatedOffset(orientationTenthDegCCW)) do\n    FontRenderer.TextOutAngle(self,x,y,orientationTenthDegCCW,CleanTextOutString(sUTF8),c,align,ARightToLeft);\nend;\n\nprocedure TBGRADefaultBitmap.TextOutAngle(x, y: single; orientationTenthDegCCW: integer;\n  const sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean);\nbegin\n  with (PointF(x,y)-GetFontAnchorRotatedOffset(orientationTenthDegCCW)) do\n    FontRenderer.TextOutAngle(self,x,y,orientationTenthDegCCW,CleanTextOutString(sUTF8),texture,align,ARightToLeft);\nend;\n\nprocedure TBGRADefaultBitmap.TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single);\nbegin\n  InternalTextOutCurved(ACursor, sUTF8, AColor, nil, AAlign, ALetterSpacing);\nend;\n\nprocedure TBGRADefaultBitmap.TextOutCurved(ACursor: TBGRACustomPathCursor; const sUTF8: string; ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\nbegin\n  InternalTextOutCurved(ACursor, sUTF8, BGRAPixelTransparent, ATexture, AAlign, ALetterSpacing);\nend;\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.TextMultiline(ALeft, ATop, AWidth: single; const sUTF8: string;\n  c: TBGRAPixel; AAlign: TBidiTextAlignment; AVertAlign: TTextLayout; AParagraphSpacing: single);\nvar\n  layout: TBidiTextLayout;\n  i: Integer;\nbegin\n  if FontBidiMode = fbmAuto then\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8)\n  else\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8, GetFontRightToLeftFor(sUTF8));\n  for i := 0 to layout.ParagraphCount-1 do\n    layout.ParagraphAlignment[i] := AAlign;\n  layout.ParagraphSpacingBelow:= AParagraphSpacing;\n  layout.AvailableWidth := AWidth;\n  case AVertAlign of\n    tlBottom: layout.TopLeft := PointF(ALeft,ATop-layout.TotalTextHeight);\n    tlCenter: layout.TopLeft := PointF(ALeft,ATop-layout.TotalTextHeight/2);\n    else layout.TopLeft := PointF(ALeft,ATop);\n  end;\n  layout.DrawText(self, c);\n  layout.Free;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}procedure TBGRADefaultBitmap.TextMultiline(ALeft, ATop, AWidth: single;\n  const sUTF8: string; ATexture: IBGRAScanner; AAlign: TBidiTextAlignment;\n  AVertAlign: TTextLayout; AParagraphSpacing: single);\nvar\n  layout: TBidiTextLayout;\n  i: Integer;\nbegin\n  if FontBidiMode = fbmAuto then\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8)\n  else\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8, GetFontRightToLeftFor(sUTF8));\n  for i := 0 to layout.ParagraphCount-1 do\n    layout.ParagraphAlignment[i] := AAlign;\n  layout.ParagraphSpacingBelow:= AParagraphSpacing;\n  layout.AvailableWidth := AWidth;\n  case AVertAlign of\n    tlBottom: layout.TopLeft := PointF(ALeft,ATop-layout.TotalTextHeight);\n    tlCenter: layout.TopLeft := PointF(ALeft,ATop-layout.TotalTextHeight/2);\n    else layout.TopLeft := PointF(ALeft,ATop);\n  end;\n  layout.DrawText(self, ATexture);\n  layout.Free;\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.TextOut(x, y: single; const sUTF8: string;\n  texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean);\nbegin\n  FontRenderer.TextOut(self,x,y,CleanTextOutString(sUTF8),texture,align, ARightToLeft);\nend;\n\nprocedure TBGRADefaultBitmap.TextOut(x, y: single; const sUTF8: string;\n  AColor: TBGRAPixel; AAlign: TAlignment; ALetterSpacing: single);\nbegin\n  InternalTextOutLetterSpacing(x, y, sUTF8, AColor, nil, AAlign, ALetterSpacing);\nend;\n\nprocedure TBGRADefaultBitmap.TextOut(x, y: single; const sUTF8: string;\n  ATexture: IBGRAScanner; AAlign: TAlignment; ALetterSpacing: single);\nbegin\n  InternalTextOutLetterSpacing(x, y, sUTF8, BGRAPixelTransparent, ATexture, AAlign, ALetterSpacing);\nend;\n\nprocedure TBGRADefaultBitmap.TextOut(x, y: single; const sUTF8: string;\n  c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean);\nbegin\n  with (PointF(x,y)-GetFontAnchorRotatedOffset) do\n    FontRenderer.TextOut(self,x,y,CleanTextOutString(sUTF8),c,align, ARightToLeft);\nend;\n\nprocedure TBGRADefaultBitmap.TextRect(ARect: TRect; x, y: integer;\n  const sUTF8: string; style: TTextStyle; c: TBGRAPixel);\nbegin\n  with (PointF(x,y)-GetFontAnchorRotatedOffset(0)) do\n    FontRenderer.TextRect(self,ARect,system.round(x),system.round(y),sUTF8,style,c);\nend;\n\nprocedure TBGRADefaultBitmap.TextRect(ARect: TRect; x, y: integer; const sUTF8: string;\n  style: TTextStyle; texture: IBGRAScanner);\nbegin\n  with (PointF(x,y)-GetFontAnchorRotatedOffset(0)) do\n    FontRenderer.TextRect(self,ARect,system.round(x),system.round(y),sUTF8,style,texture);\nend;\n\n{ Returns the total size of the string provided using the current font.\n  Orientation is not taken into account, so that the width is along the text.  }\nfunction TBGRADefaultBitmap.TextSize(const sUTF8: string): TSize;\nbegin\n  result := FontRenderer.TextSize(CleanTextOutString(sUTF8));\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.TextSizeMultiline(const sUTF8: string; AMaxWidth: single;\n  AParagraphSpacing: single): TSize;\nvar\n  layout: TBidiTextLayout;\nbegin\n  if FontBidiMode = fbmAuto then\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8)\n  else\n    layout := TBidiTextLayout.Create(FontRenderer, sUTF8, GetFontRightToLeftFor(sUTF8));\n  layout.ParagraphSpacingBelow:= AParagraphSpacing;\n  layout.AvailableWidth := AMaxWidth;\n  result := size(ceil(layout.UsedWidth), ceil(layout.TotalTextHeight));\n  layout.Free;\nend;{$ENDIF}\n\nfunction TBGRADefaultBitmap.TextAffineBox(const sUTF8: string): TAffineBox;\nvar size: TSize;\n  m: TAffineMatrix;\n  dy: single;\nbegin\n  dy := GetFontVerticalAnchorOffset;\n  size := FontRenderer.TextSizeAngle(sUTF8, FontOrientation);\n  m := AffineMatrixRotationDeg(-FontOrientation*0.1);\n  result := TAffineBox.AffineBox(PointF(0,-dy), m*PointF(size.cx,-dy), m*PointF(0,size.cy-dy));\nend;\n\nfunction TBGRADefaultBitmap.TextSize(const sUTF8: string; AMaxWidth: integer): TSize;\nbegin\n  result := FontRenderer.TextSize(sUTF8, AMaxWidth, GetFontRightToLeftFor(sUTF8));\nend;\n\nfunction TBGRADefaultBitmap.TextSize(const sUTF8: string; AMaxWidth: integer;\n  ARightToLeft: boolean): TSize;\nbegin\n  result := FontRenderer.TextSize(sUTF8, AMaxWidth, ARightToLeft);\nend;\n\nfunction TBGRADefaultBitmap.TextFitInfo(const sUTF8: string; AMaxWidth: integer\n  ): integer;\nbegin\n  result := FontRenderer.TextFitInfo(sUTF8, AMaxWidth);\nend;\n\n{---------------------------- Curves ----------------------------------------}\n\nfunction TBGRADefaultBitmap.ComputeClosedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeClosedSpline(APoints, AStyle);\nend;\n\nfunction TBGRADefaultBitmap.ComputeOpenedSpline(const APoints: array of TPointF; AStyle: TSplineStyle): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeOpenedSpline(APoints, AStyle);\nend;\n\nfunction TBGRADefaultBitmap.ComputeBezierCurve(const ACurve: TCubicBezierCurve\n  ): ArrayOfTPointF;\nbegin\n  Result:= BGRAPath.ComputeBezierCurve(ACurve);\nend;\n\nfunction TBGRADefaultBitmap.ComputeBezierCurve(\n  const ACurve: TQuadraticBezierCurve): ArrayOfTPointF;\nbegin\n  Result:= BGRAPath.ComputeBezierCurve(ACurve);\nend;\n\nfunction TBGRADefaultBitmap.ComputeBezierSpline(\n  const ASpline: array of TCubicBezierCurve): ArrayOfTPointF;\nbegin\n  Result:= BGRAPath.ComputeBezierSpline(ASpline);\nend;\n\nfunction TBGRADefaultBitmap.ComputeBezierSpline(\n  const ASpline: array of TQuadraticBezierCurve): ArrayOfTPointF;\nbegin\n  Result:= BGRAPath.ComputeBezierSpline(ASpline);\nend;\n\nfunction TBGRADefaultBitmap.ComputeWidePolyline(const points: array of TPointF;\n  w: single): ArrayOfTPointF;\nbegin\n  result := GetInternalPen.ComputePolyline(points,w);\nend;\n\nfunction TBGRADefaultBitmap.ComputeWidePolyline(const points: array of TPointF;\n  w: single; ClosedCap: boolean): ArrayOfTPointF;\nbegin\n  result := GetInternalPen.ComputePolyline(points,w,ClosedCap);\nend;\n\nfunction TBGRADefaultBitmap.ComputeWidePolygon(const points: array of TPointF;\n  w: single): ArrayOfTPointF;\nbegin\n  result := GetInternalPen.ComputePolygon(points,w);\nend;\n\nfunction TBGRADefaultBitmap.ComputeEllipseContour(x, y, rx, ry: single; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeEllipse(x,y,rx,ry, quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputeEllipseContour(AOrigin, AXAxis,\n  AYAxis: TPointF; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeEllipse(AOrigin,AXAxis,AYAxis, quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputeEllipseBorder(x, y, rx, ry, w: single; quality: single): ArrayOfTPointF;\nbegin\n  result := ComputeWidePolygon(ComputeEllipseContour(x,y,rx,ry, quality),w);\nend;\n\nfunction TBGRADefaultBitmap.ComputeEllipseBorder(AOrigin, AXAxis,\n  AYAxis: TPointF; w: single; quality: single): ArrayOfTPointF;\nbegin\n  result := ComputeWidePolygon(ComputeEllipseContour(AOrigin,AXAxis,AYAxis, quality),w);\nend;\n\nfunction TBGRADefaultBitmap.ComputeArc65536(x, y, rx, ry: single; start65536,\n  end65536: word; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeArc65536(x,y,rx,ry,start65536,end65536,quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputeArcRad(x, y, rx, ry: single; startRad,\n  endRad: single; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeArcRad(x,y,rx,ry,startRad,endRad,quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputeRoundRect(x1, y1, x2, y2, rx, ry: single; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeRoundRect(x1,y1,x2,y2,rx,ry,quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputeRoundRect(x1, y1, x2, y2, rx, ry: single;\n  options: TRoundRectangleOptions; quality: single): ArrayOfTPointF;\nbegin\n  Result:= BGRAPath.ComputeRoundRect(x1,y1,x2,y2,rx,ry,options,quality);\nend;\n\nfunction TBGRADefaultBitmap.ComputePie65536(x, y, rx, ry: single; start65536,\n  end65536: word; quality: single): ArrayOfTPointF;\nbegin\n  result := BGRAPath.ComputeArc65536(x,y,rx,ry,start65536,end65536,quality);\n  if (start65536 <> end65536) then\n  begin\n    setlength(result,length(result)+1);\n    result[high(result)] := PointF(x,y);\n  end;\nend;\n\nfunction TBGRADefaultBitmap.ComputePieRad(x, y, rx, ry: single; startRad,\n  endRad: single; quality: single): ArrayOfTPointF;\nbegin\n  result := self.ComputePie65536(x,y,rx,ry,round(startRad*32768/Pi),round(endRad*32768/Pi),quality);\nend;\n\n{---------------------------------- Fill ---------------------------------}\n\nprocedure TBGRADefaultBitmap.Fill(c: TBGRAPixel; start, Count: integer);\nbegin\n  if start < 0 then\n  begin\n    inc(Count, start);\n    start := 0;\n  end;\n  if start >= nbPixels then\n    exit;\n  if start + Count > nbPixels then\n    Count := nbPixels - start;\n\n  FillInline(Data + start, c, Count);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.AlphaFill(alpha: byte; start, Count: integer);\nbegin\n  if alpha = 0 then\n    Fill(BGRAPixelTransparent, start, Count);\n  if start < 0 then\n  begin\n    inc(Count, start);\n    start := 0;\n  end;\n  if start >= nbPixels then\n    exit;\n  if start + Count > nbPixels then\n    Count := nbPixels - start;\n\n  AlphaFillInline(Data + start, alpha, Count);\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.FillMask(x, y: integer; AMask: TCustomUniversalBitmap;\n  const AColor: TBGRAPixel; ADrawMode: TDrawMode);\nvar\n  scan: TBGRACustomScanner;\nbegin\n  if (AMask = nil) or (AColor.alpha = 0) then exit;\n  scan := TBGRASolidColorMaskScanner.Create(AMask, Point(-X,-Y), AColor);\n  self.FillRect(X,Y, X+AMask.Width,Y+AMask.Height, scan, ADrawMode);\n  scan.Free;\nend;\n\nprocedure TBGRADefaultBitmap.FillMask(x, y: integer; AMask: TCustomUniversalBitmap;\n  ATexture: IBGRAScanner; ADrawMode: TDrawMode; AOpacity: byte);\nvar\n  scan: TBGRACustomScanner;\nbegin\n  if AMask = nil then exit;\n  scan := TBGRATextureMaskScanner.Create(AMask, Point(-X,-Y), ATexture, AOpacity);\n  self.FillRect(X,Y, X+AMask.Width,Y+AMask.Height, scan, ADrawMode);\n  scan.Free;\nend;\n\nprocedure TBGRADefaultBitmap.EraseMask(x, y: integer; AMask: TBGRACustomBitmap;\n  alpha: byte);\nvar\n  x0,y0,x2, y2, yb,xb, tx, delta: integer;\n  p, psrc: PBGRAPixel;\nbegin\n  if (AMask = nil) or (alpha = 0) then exit;\n  x0 := x;\n  y0 := y;\n  x2 := x+AMask.Width;\n  y2 := y+AMask.Height;\n  if not CheckClippedRectBounds(x,y,x2,y2) then exit;\n  tx := x2 - x;\n  Dec(x2);\n  Dec(y2);\n\n  p := Scanline[y] + x;\n  if FLineOrder = riloBottomToTop then\n    delta := -Width\n  else\n    delta := Width;\n\n  for yb := y to y2 do\n  begin\n    psrc := AMask.ScanLine[yb-y0]+(x-x0);\n    if alpha = 255 then\n    begin\n      for xb := tx-1 downto 0 do\n      begin\n        ErasePixelInline(p, psrc^.green);\n        inc(p);\n        inc(psrc);\n      end;\n    end else\n    begin\n      for xb := tx-1 downto 0 do\n      begin\n        ErasePixelInline(p, ApplyOpacity(psrc^.green,alpha));\n        inc(p);\n        inc(psrc);\n      end;\n    end;\n    dec(p, tx);\n    Inc(p, delta);\n  end;\n\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.FillClearTypeMask(x, y: integer; xThird: integer;\n  AMask: TBGRACustomBitmap; color: TBGRAPixel; ARGBOrder: boolean);\nbegin\n  BGRAFillClearTypeMask(self,x, y, xThird, AMask, color, nil, ARGBOrder);\nend;\n\nprocedure TBGRADefaultBitmap.FillClearTypeMask(x, y: integer; xThird: integer;\n  AMask: TBGRACustomBitmap; texture: IBGRAScanner; ARGBOrder: boolean);\nbegin\n  BGRAFillClearTypeMask(self,x, y, xThird, AMask, BGRAPixelTransparent, texture, ARGBOrder);\nend;\n\n{ Replace color without taking alpha channel into account }\nprocedure TBGRADefaultBitmap.ReplaceColor(before, after: TColor);\nvar\n  p: PLongWord;\n  n: integer;\n  colorMask,beforeBGR, afterBGR: LongWord;\n  rAfter,gAfter,bAfter,rBefore,gBefore,bBefore: byte;\nbegin\n  colorMask := LongWord(BGRA(255,255,255,0));\n  RedGreenBlue(before, rBefore,gBefore,bBefore);\n  RedGreenBlue(after, rAfter,gAfter,bAfter);\n  beforeBGR := LongWord(BGRA(rBefore,gBefore,bBefore,0));\n  afterBGR  := LongWord(BGRA(rAfter,gAfter,bAfter,0));\n\n  p := PLongWord(Data);\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if p^ and colorMask = beforeBGR then\n      p^ := (p^ and not ColorMask) or afterBGR;\n    Inc(p);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.ReplaceColor(ABounds: TRect; before, after: TColor);\nvar p: PLongWord;\n  xb,yb,xcount: integer;\n\n  colorMask,beforeBGR, afterBGR: LongWord;\n  rAfter,gAfter,bAfter,rBefore,gBefore,bBefore: byte;\nbegin\n  colorMask := LongWord(BGRA(255,255,255,0));\n  RedGreenBlue(before, rBefore,gBefore,bBefore);\n  RedGreenBlue(after, rAfter,gAfter,bAfter);\n  beforeBGR := LongWord(BGRA(rBefore,gBefore,bBefore,0));\n  afterBGR  := LongWord(BGRA(rAfter,gAfter,bAfter,0));\n\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  xcount := ABounds.Right-ABounds.Left;\n  for yb := ABounds.Top to ABounds.Bottom-1 do\n  begin\n    p := PLongWord(ScanLine[yb]+ABounds.Left);\n    for xb := xcount-1 downto 0 do\n    begin\n      if p^ and colorMask = beforeBGR then\n        p^ := (p^ and not ColorMask) or afterBGR;\n      Inc(p);\n    end;\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.ParallelFloodFill(X, Y: integer;\n  Dest: TCustomUniversalBitmap; Color: TBGRAPixel; mode: TFloodfillMode;\n  Tolerance: byte; DestOfsX: integer; DestOfsY: integer);\nvar\n  b: TUniversalBrush;\nbegin\n  case mode of\n    fmSet: Dest.SolidBrushBGRA(b, Color, dmSet);\n    fmDrawWithTransparency: Dest.SolidBrushBGRA(b, Color, dmDrawWithTransparency);\n    fmLinearBlend: Dest.SolidBrushBGRA(b, Color, dmLinearBlend);\n    fmXor: Dest.SolidBrushBGRA(b, Color, dmXor);\n    fmProgressive: Dest.SolidBrushBGRA(b, Color, dmDrawWithTransparency);\n  end;\n  ParallelFloodFill(X,Y, Dest, b, mode=fmProgressive, (Tolerance shl 8)+$ff, DestOfsX, DestOfsY);\nend;\n\n{ General purpose FloodFill. It can be used to fill inplace or to\n  fill a destination bitmap according to the content of the current bitmap.\n\n  The first pixel encountered is taken as a reference, further pixels\n  are compared to this pixel. If the distance between next colors and\n  the first color is lower than the tolerance, then the floodfill continues.\n\n  It uses an array of bits to store visited places to avoid filling twice\n  the same area. It also uses a stack of positions to remember where\n  to continue after a place is completely filled.\n\n  The first direction to be checked is horizontal, then\n  it checks pixels on the line above and on the line below. }\nprocedure TBGRADefaultBitmap.ParallelFloodFill(X, Y: integer;\n  Dest: TCustomUniversalBitmap; const Brush: TUniversalBrush; Progressive: boolean;\n  ToleranceW: Word; DestOfsX: integer; DestOfsY: integer);\nvar\n  S: TBGRAPixel;\n  SExpand: TExpandedPixel;\n  SX, EX, I: integer;\n  Added: boolean;\n\n  Visited: array of LongWord;\n  VisitedLineSize: integer;\n\n  Stack:      array of integer;\n  StackCount: integer;\n  pScan: PBGRAPixel;\n\n  function CheckPixel(AX, AY: integer): boolean; inline;\n  begin\n    if Visited[AX shr 5 + AY * VisitedLineSize] and (1 shl (AX and 31)) <> 0 then\n      Result := False\n    else\n    begin\n      if (pScan+AX)^ = S then result := true else\n        Result := ExpandedDiff(GammaExpansion((pScan+AX)^), SExpand) <= ToleranceW;\n    end;\n  end;\n\n  procedure SetVisited(X1, AY, X2: integer);\n  var\n    StartMask, EndMask: LongWord;\n    StartPos, EndPos:   integer;\n  begin\n    if X2 < X1 then\n      exit;\n    StartMask := $FFFFFFFF shl (X1 and 31);\n    case X2 and 31 of\n    31: EndMask := $FFFFFFFF;\n    30: EndMask := $7FFFFFFF;\n    else\n      EndMask := 1 shl ((X2 and 31) + 1) - 1;\n    end;\n    StartPos := X1 shr 5 + AY * VisitedLineSize;\n    EndPos := X2 shr 5 + AY * VisitedLineSize;\n    if StartPos = EndPos then\n      Visited[StartPos] := Visited[StartPos] or (StartMask and EndMask)\n    else\n    begin\n      Visited[StartPos] := Visited[StartPos] or StartMask;\n      Visited[EndPos]   := Visited[EndPos] or EndMask;\n      if EndPos - StartPos > 1 then\n        FillDWord(Visited[StartPos + 1], EndPos - StartPos - 1, $FFFFFFFF);\n    end;\n  end;\n\n  procedure Push(AX, AY: integer); inline;\n  begin\n    if StackCount + 1 >= High(Stack) then\n      SetLength(Stack, Length(Stack) shl 1);\n\n    Stack[StackCount] := AX;\n    Inc(StackCount);\n    Stack[StackCount] := AY;\n    Inc(StackCount);\n  end;\n\n  procedure Pop(var AX, AY: integer); inline;\n  begin\n    Dec(StackCount);\n    AY := Stack[StackCount];\n    Dec(StackCount);\n    AX := Stack[StackCount];\n  end;\n\nbegin\n  if Brush.DoesNothing then exit;\n  if Progressive and not (dest is TBGRACustomBitmap) then\n    raise exception.Create('Progressive mode only available on TBGRACustomBitmap and derived classes');\n  if PtInClipRect(X,Y) then\n  begin\n    S := GetPixel(X, Y);\n    SExpand := s.ToExpanded;\n\n    VisitedLineSize := (Width + 31) shr 5;\n    SetLength(Visited, VisitedLineSize * Height);\n    FillDWord(Visited[0], Length(Visited), 0);\n\n    SetLength(Stack, 2);\n    StackCount := 0;\n\n    Push(X, Y);\n    repeat\n      Pop(X, Y);\n      pScan := GetScanlineFast(Y);\n      if not CheckPixel(X, Y) then\n        Continue;\n\n      SX := X;\n      while (SX > FClipRect.Left) and CheckPixel(Pred(SX), Y) do\n        Dec(SX);\n      EX := X;\n      while (EX < Pred(FClipRect.Right)) and CheckPixel(Succ(EX), Y) do\n        Inc(EX);\n\n      SetVisited(SX, Y, EX);\n      if Progressive then\n        TBGRACustomBitmap(dest).HorizLineDiff(SX+DestOfsX, Y+DestOfsY, EX+DestOfsX, Brush, S, ToleranceW)\n      else\n        dest.HorizLine(SX+DestOfsX, Y+DestOfsY, EX+DestOfsX, Brush);\n\n      Added := False;\n      if Y > FClipRect.Top then\n      begin\n        pScan := GetScanlineFast(Pred(Y));\n        for I := SX to EX do\n          if CheckPixel(I, Pred(Y)) then\n          begin\n            if Added then //do not add twice the same segment\n              Continue;\n            Push(I, Pred(Y));\n            Added := True;\n          end\n          else\n            Added := False;\n      end;\n\n      Added := False;\n      if Y < Pred(FClipRect.Bottom) then\n      begin\n        pScan := GetScanlineFast(Succ(Y));\n        for I := SX to EX do\n          if CheckPixel(I, Succ(Y)) then\n          begin\n            if Added then //do not add twice the same segment\n              Continue;\n            Push(I, Succ(Y));\n            Added := True;\n          end\n          else\n            Added := False;\n      end;\n    until StackCount <= 0;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.GradientFill(x, y, x2, y2: integer;\n  c1, c2: TBGRAPixel; gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n  gammaColorCorrection: boolean; Sinus: Boolean; ditherAlgo: TDitheringAlgorithm);\nvar\n  scanner: TBGRAGradientScanner;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    FillRect(x, y, x2, y2, BGRAPixelTransparent, mode)\n  else\n  if ditherAlgo <> daNearestNeighbor then\n    GradientFillDithered(x,y,x2,y2,c1,c2,gtype,o1,o2,mode,gammaColorCorrection,sinus,ditherAlgo)\n  else\n  begin\n    scanner := TBGRAGradientScanner.Create(c1,c2,gtype,o1,o2,gammaColorCorrection,Sinus);\n    FillRect(x,y,x2,y2,scanner,mode);\n    scanner.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.GradientFill(x, y, x2, y2: integer;\n  gradient: TBGRACustomGradient; gtype: TGradientType; o1, o2: TPointF;\n  mode: TDrawMode; Sinus: Boolean; ditherAlgo: TDitheringAlgorithm);\nvar\n  scanner: TBGRAGradientScanner;\nbegin\n  if ditherAlgo <> daNearestNeighbor then\n    GradientFillDithered(x,y,x2,y2,gradient,gtype,o1,o2,mode,sinus,ditherAlgo)\n  else\n  begin\n    scanner := TBGRAGradientScanner.Create(gradient,gtype,o1,o2,sinus);\n    FillRect(x,y,x2,y2,scanner,mode);\n    scanner.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.GradientFillDithered(x, y, x2, y2: integer; c1,\n  c2: TBGRAPixel; gtype: TGradientType; o1, o2: TPointF;\n  mode: TDrawMode; gammaColorCorrection: boolean; Sinus: Boolean;\n  ditherAlgo: TDitheringAlgorithm);\nvar\n  scanner: TBGRAGradientScanner;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n  begin\n    if mode = dmSet then\n      FillRect(x, y, x2, y2, BGRAPixelTransparent, dmSet);\n  end\n  else\n  begin\n    scanner := TBGRAGradientScanner.Create(c1,c2,gtype,o1,o2,gammaColorCorrection,Sinus);\n    FillRect(x,y,x2,y2,scanner,mode,ditherAlgo);\n    scanner.Free;\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.GradientFillDithered(x, y, x2, y2: integer;\n  gradient: TBGRACustomGradient; gtype: TGradientType; o1, o2: TPointF;\n  mode: TDrawMode; Sinus: Boolean; ditherAlgo: TDitheringAlgorithm);\nvar\n  scanner: TBGRAGradientScanner;\nbegin\n  scanner := TBGRAGradientScanner.Create(gradient,gtype,o1,o2,sinus);\n  FillRect(x,y,x2,y2,scanner,mode,ditherAlgo);\n  scanner.Free;\nend;\n\nfunction TBGRADefaultBitmap.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n    result := (GetScanlineFast(PositiveMod(Y+ScanOffset.Y, FScanHeight))+PositiveMod(X+ScanOffset.X, FScanWidth))^\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction TBGRADefaultBitmap.ScanNextPixel: TBGRAPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n  begin\n    result := PBGRAPixel(FScanPtr)^;\n    inc(FScanCurX);\n    inc(FScanPtr, sizeof(TBGRAPixel));\n    if FScanCurX = FScanWidth then //cycle\n    begin\n      FScanCurX := 0;\n      dec(FScanPtr, FRowSize);\n    end;\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction TBGRADefaultBitmap.ScanAt(X, Y: Single): TBGRAPixel;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  if (FScanWidth = 0) or (FScanHeight = 0) then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  LoadFromBitmapIfNeeded;\n  ix := round(x*256);\n  iy := round(y*256);\n  if ScanInterpolationFilter = rfBox then\n  begin\n    ix := PositiveMod((ix+128)+(ScanOffset.X shl 8), FScanWidth shl 8) shr 8;\n    iy := PositiveMod((iy+128)+(ScanOffset.Y shl 8), FScanHeight shl 8) shr 8;\n    result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n  iFactX := ix and 255;\n  iFactY := iy and 255;\n  ix := PositiveMod(ix+(ScanOffset.X shl 8), FScanWidth shl 8) shr 8;\n  iy := PositiveMod(iy+(ScanOffset.Y shl 8), FScanHeight shl 8) shr 8;\n  if (iFactX = 0) and (iFactY = 0) then\n  begin\n    result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n  if ScanInterpolationFilter <> rfLinear then\n  begin\n    iFactX := FineInterpolation256( iFactX, ScanInterpolationFilter );\n    iFactY := FineInterpolation256( iFactY, ScanInterpolationFilter );\n  end;\n  result := InternalGetPixelCycle256(ix,iy, iFactX,iFactY);\nend;\n\nfunction TBGRADefaultBitmap.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRADefaultBitmap.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nvar\n  i,nbCopy: Integer;\n  c: TBGRAPixel;\nbegin\n  if (FScanWidth <= 0) or (FScanHeight <= 0) then\n  begin\n    if mode = dmSet then\n      FillDWord(pdest^, count, LongWord(BGRAPixelTransparent));\n    exit;\n  end;\n  case mode of\n    dmLinearBlend:\n      for i := 0 to count-1 do\n      begin\n        FastBlendPixelInline(pdest, ScanNextPixel);\n        inc(pdest);\n      end;\n    dmDrawWithTransparency:\n      for i := 0 to count-1 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest, ScanNextPixel);\n        inc(pdest);\n      end;\n    dmSet:\n      while count > 0 do\n      begin\n        nbCopy := FScanWidth-FScanCurX;\n        if count < nbCopy then nbCopy := count;\n        move(FScanPtr^,pdest^,nbCopy*sizeof(TBGRAPixel));\n        inc(pdest,nbCopy);\n        inc(FScanCurX,nbCopy);\n        inc(FScanPtr,nbCopy*sizeof(TBGRAPixel));\n        if FScanCurX = FScanWidth then\n        begin\n          FScanCurX := 0;\n          dec(FScanPtr, RowSize);\n        end;\n        dec(count,nbCopy);\n      end;\n    dmSetExceptTransparent:\n      for i := 0 to count-1 do\n      begin\n        c := ScanNextPixel;\n        if c.alpha = 255 then pdest^ := c;\n        inc(pdest);\n      end;\n    dmXor:\n      for i := 0 to count-1 do\n      begin\n        PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(ScanNextPixel);\n        inc(pdest);\n      end;\n  end;\nend;\n\n{ General purpose pixel drawing function }\nprocedure TBGRADefaultBitmap.DrawPixels(c: TBGRAPixel; start, Count: integer);\nvar\n  p: PBGRAPixel;\nbegin\n  if c.alpha = 0 then\n    exit;\n  if c.alpha = 255 then\n  begin\n    Fill(c,start,Count);\n    exit;\n  end;\n\n  if start < 0 then\n  begin\n    inc(Count, start);\n    start := 0;\n  end;\n  if start >= nbPixels then\n    exit;\n  if start + Count > nbPixels then\n    Count := nbPixels - start;\n\n  p := Data + start;\n  DrawPixelsInline(p,c,Count);\n  InvalidateBitmap;\nend;\n\n{------------------------- End fill ------------------------------}\n\nprocedure TBGRADefaultBitmap.DoAlphaCorrection;\nvar\n  p: PBGRAPixel;\n  n: integer;\n  colormask: LongWord;\n  changed: boolean;\nbegin\n  if CanvasAlphaCorrection then\n  begin\n    p := PBGRAPixel(FDataByte); // avoid Data to avoid reloading from bitmap and thus stack overflow\n    colormask := $ffffffff - (255 shl TBGRAPixel_AlphaShift);\n    changed := false;\n    for n := NbPixels - 1 downto 0 do\n    begin\n      if (plongword(p)^ and colormask <> 0) and (p^.alpha = 0) then\n      begin\n        p^.alpha := FCanvasOpacity;\n        changed := true;\n      end;\n      Inc(p);\n    end;\n    if changed then InvalidateBitmap;\n  end;\n  FAlphaCorrectionNeeded := False;\nend;\n\n{ Ensure that transparent pixels have all channels to zero }\nprocedure TBGRADefaultBitmap.ClearTransparentPixels;\nvar\n  p: PBGRAPixel;\n  n: integer;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if (p^.alpha = 0) then\n      p^ := BGRAPixelTransparent;\n    Inc(p);\n  end;\n  InvalidateBitmap;\nend;\n\nfunction TBGRADefaultBitmap.CheckAntialiasRectBounds(var x, y, x2, y2: single;\n  w: single): boolean;\nvar\n  temp: Single;\nbegin\n  if (x > x2) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (y > y2) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n\n  result := (x2 - x > w) and (y2 - y > w);\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.GetCanvasBGRA: TBGRACanvas;\nbegin\n  if FCanvasBGRA = nil then\n    FCanvasBGRA := TBGRACanvas.Create(self);\n  result := FCanvasBGRA;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.GetCanvas2D: TBGRACanvas2D;\nbegin\n  if FCanvas2D = nil then\n    FCanvas2D := TBGRACanvas2D.Create(self);\n  result := FCanvas2D;\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.PutImage(X, Y: integer; ASource: TCustomUniversalBitmap;\n  AMode: TDrawMode; AOpacity: byte);\nbegin\n  inherited PutImage(X,Y, ASource, AMode, AOpacity);\n  if (AMode in [dmSetExceptTransparent,dmDrawWithTransparency,dmLinearBlend]) and\n     (ASource is TBGRACustomBitmap) and Assigned(TBGRACustomBitmap(ASource).XorMask) then\n    PutImage(X,Y,TBGRACustomBitmap(ASource).XorMask,dmXor,AOpacity);\nend;\n\nprocedure TBGRADefaultBitmap.BlendImage(x, y: integer; ASource: TBGRACustomBitmap;\n  AOperation: TBlendOperation);\nbegin\n  BlendImage(RectWithSize(x,y,ASource.Width,ASource.Height), ASource, -x,-y,AOperation);\nend;\n\nprocedure TBGRADefaultBitmap.BlendImage(ADest: TRect; ASource: IBGRAScanner;\n  AOffsetX, AOffsetY: integer; AOperation: TBlendOperation);\nconst BufSize = 8;\nvar\n  yb, remain, i, delta_dest: integer;\n  psource, pdest: PBGRAPixel;\n  sourceRect: TRect;\n  sourceScanline, sourcePut: boolean;\n  buf: packed array[0..BufSize-1] of TBGRAPixel;\nbegin\n  if not CheckClippedRectBounds(ADest.Left, ADest.Top, ADest.Right, ADest.Bottom) then exit;\n\n  sourceRect := ADest;\n  sourceRect.Offset(AOffsetX, AOffsetY);\n  sourceScanline := ASource.ProvidesScanline(sourceRect);\n  sourcePut := ASource.IsScanPutPixelsDefined;\n\n  pdest := Scanline[ADest.Top] + ADest.Left;\n  if LineOrder = riloBottomToTop then\n    delta_dest := -Width\n    else delta_dest := Width;\n\n  for yb := sourceRect.Top to sourceRect.Bottom-1 do\n  begin\n    if sourceScanline then\n    begin\n      psource := ASource.GetScanlineAt(sourceRect.Left, yb);\n      BlendPixels(pdest, psource, AOperation, ADest.Width);\n    end else\n    begin\n      ASource.ScanMoveTo(sourceRect.Left, yb);\n      remain := ADest.Width;\n      if sourcePut then\n        while remain >= BufSize do\n        begin\n          ASource.ScanPutPixels(@buf, BufSize, dmSet);\n          BlendPixels(pdest, @buf, AOperation, BufSize);\n          inc(pdest, bufSize);\n          dec(remain, bufSize);\n        end;\n      if remain > 0 then\n      begin\n        for i := 0 to remain-1 do\n          buf[i] := ASource.ScanNextPixel;\n        BlendPixels(pdest, @buf, AOperation, remain);\n        inc(pdest, remain);\n      end;\n      dec(pdest, ADest.Width);\n    end;\n    Inc(pdest, delta_dest);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.BlendImageOver(x, y: integer;\n  ASource: TBGRACustomBitmap; AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean);\nbegin\n  BlendImageOver(RectWithSize(x,y,ASource.Width,ASource.Height), ASource, -x,-y,\n                 AOperation, AOpacity, ALinearBlend);\nend;\n\nprocedure TBGRADefaultBitmap.BlendImageOver(ADest: TRect; ASource: IBGRAScanner;\n  AOffsetX, AOffsetY: integer; AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean);\nconst BufSize = 8;\nvar\n  yb, remain, i, delta_dest: integer;\n  psource, pdest: PBGRAPixel;\n  sourceRect: TRect;\n  sourceScanline, sourcePut: boolean;\n  buf: packed array[0..BufSize-1] of TBGRAPixel;\nbegin\n  if not CheckClippedRectBounds(ADest.Left, ADest.Top, ADest.Right, ADest.Bottom) then exit;\n\n  sourceRect := ADest;\n  sourceRect.Offset(AOffsetX, AOffsetY);\n  sourceScanline := ASource.ProvidesScanline(sourceRect);\n  sourcePut := ASource.IsScanPutPixelsDefined;\n\n  pdest := Scanline[ADest.Top] + ADest.Left;\n  if LineOrder = riloBottomToTop then\n    delta_dest := -Width\n    else delta_dest := Width;\n\n  for yb := sourceRect.Top to sourceRect.Bottom-1 do\n  begin\n    if sourceScanline then\n    begin\n      psource := ASource.GetScanlineAt(sourceRect.Left, yb);\n      BlendPixelsOver(pdest, psource, AOperation, ADest.Width, AOpacity, ALinearBlend);\n    end else\n    begin\n      ASource.ScanMoveTo(sourceRect.Left, yb);\n      remain := ADest.Width;\n      if sourcePut then\n        while remain >= BufSize do\n        begin\n          ASource.ScanPutPixels(@buf, BufSize, dmSet);\n          BlendPixelsOver(pdest, @buf, AOperation, BufSize, AOpacity, ALinearBlend);\n          inc(pdest, bufSize);\n          dec(remain, bufSize);\n        end;\n      if remain > 0 then\n      begin\n        for i := 0 to remain-1 do\n          buf[i] := ASource.ScanNextPixel;\n        BlendPixelsOver(pdest, @buf, AOperation, remain, AOpacity, ALinearBlend);\n        inc(pdest, remain);\n      end;\n      dec(pdest, ADest.Width);\n    end;\n    Inc(pdest, delta_dest);\n  end;\n  InvalidateBitmap;\nend;\n\n{ Draw an image with an affine transformation (rotation, scale, translate).\n  Parameters are the bitmap origin, the end of the horizontal axis and the end of the vertical axis.\n  The output bounds correspond to the pixels that will be affected in the destination. }\nprocedure TBGRADefaultBitmap.PutImageAffine(AMatrix: TAffineMatrix;\n  Source: TBGRACustomBitmap; AOutputBounds: TRect;\n  AResampleFilter: TResampleFilter; AMode: TDrawMode; AOpacity: Byte; APixelCenteredCoords: boolean);\nvar affine: TBGRAAffineBitmapTransform;\n    sourceBounds: TRect;\nbegin\n  if (Source = nil) or (Source.Width = 0) or (Source.Height = 0) or (AOpacity = 0) then exit;\n  AOutputBounds.Intersect(ClipRect);\n  if AOutputBounds.IsEmpty then exit;\n\n  if not APixelCenteredCoords then AMatrix := AffineMatrixTranslation(-0.5,-0.5)*AMatrix*AffineMatrixTranslation(0.5,0.5);\n  if IsAffineRoughlyTranslation(AMatrix, rect(0,0,Source.Width,Source.Height)) then\n  begin\n    sourceBounds := AOutputBounds;\n    sourceBounds.Offset(-round(AMatrix[1,3]), -round(AMatrix[2,3]));\n    sourceBounds.Intersect( rect(0,0,Source.Width,Source.Height) );\n    PutImagePart(round(AMatrix[1,3])+sourceBounds.Left,round(AMatrix[2,3])+sourceBounds.Top,Source,sourceBounds,AMode,AOpacity);\n  end else\n  begin\n    affine := TBGRAAffineBitmapTransform.Create(Source, false, AResampleFilter);\n    affine.GlobalOpacity := AOpacity;\n    affine.ViewMatrix := AMatrix;\n    FillRect(AOutputBounds,affine,AMode);\n    affine.Free;\n  end;\nend;\n\nfunction TBGRADefaultBitmap.GetImageAffineBounds(AMatrix: TAffineMatrix;\n  ASourceBounds: TRect; AClipOutput: boolean; APixelCenteredCoords: boolean): TRect;\nconst pointMargin = 0.5 - 1/512;\n\n  procedure FirstPoint(pt: TPointF);\n  begin\n    result.Left := round(pt.X);\n    result.Top := round(pt.Y);\n    result.Right := round(pt.X)+1;\n    result.Bottom := round(pt.Y)+1;\n  end;\n\n  //include specified point in the bounds\n  procedure IncludePoint(pt: TPointF);\n  begin\n    if round(pt.X) < result.Left then result.Left := round(pt.X);\n    if round(pt.Y) < result.Top then result.Top := round(pt.Y);\n    if round(pt.X)+1 > result.Right then result.Right := round(pt.X)+1;\n    if round(pt.Y)+1 > result.Bottom then result.Bottom := round(pt.Y)+1;\n  end;\n\nbegin\n  result := EmptyRect;\n  if ASourceBounds.IsEmpty then exit;\n\n  if not APixelCenteredCoords then AMatrix := AffineMatrixTranslation(-0.5,-0.5)*AMatrix*AffineMatrixTranslation(0.5,0.5);\n  if IsAffineRoughlyTranslation(AMatrix,ASourceBounds) then\n  begin\n    result := ASourceBounds;\n    result.Offset(round(AMatrix[1,3]), round(AMatrix[2,3]));\n  end else\n  begin\n    FirstPoint(AMatrix*PointF(ASourceBounds.Left-pointMargin,ASourceBounds.Top-pointMargin));\n    IncludePoint(AMatrix*PointF(ASourceBounds.Right-1+pointMargin,ASourceBounds.Top-pointMargin));\n    IncludePoint(AMatrix*PointF(ASourceBounds.Left-pointMargin,ASourceBounds.Bottom-1+pointMargin));\n    IncludePoint(AMatrix*PointF(ASourceBounds.Right-1+pointMargin,ASourceBounds.Bottom-1+pointMargin));\n  end;\n  if AClipOutput then result.Intersect(ClipRect);\nend;\n\nprocedure TBGRADefaultBitmap.StretchPutImage(ARect: TRect;\n  Source: TBGRACustomBitmap; mode: TDrawMode; AOpacity: byte);\nvar noTransition: boolean;\nbegin\n  If (Source = nil) or (AOpacity = 0) then exit;\n  if (ARect.Right-ARect.Left = Source.Width) and (ARect.Bottom-ARect.Top = Source.Height) then\n     PutImage(ARect.Left,ARect.Top,Source,mode,AOpacity)\n  else\n  begin\n     noTransition:= (mode = dmXor) or ((mode in [dmDrawWithTransparency,dmFastBlend,dmSetExceptTransparent]) and\n                                       (Source is TBGRADefaultBitmap) and\n                                       Assigned(TBGRADefaultBitmap(Source).XorMask));\n     BGRAResample.StretchPutImage(Source, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top, self, ARect.left,ARect.Top, mode, AOpacity, noTransition);\n    if (mode in [dmDrawWithTransparency,dmFastBlend,dmSetExceptTransparent]) and Assigned(TBGRADefaultBitmap(Source).XorMask) then\n      BGRAResample.StretchPutImage(TBGRADefaultBitmap(Source).XorMask, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top, self, ARect.left,ARect.Top, dmXor, AOpacity, noTransition);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.BlendRect(ADest: TRect; AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AExcludeChannels: TChannels);\nconst BufSize = 8;\nvar srcBuf: packed array[0..BufSize-1] of TBGRAPixel;\n  i, yb, remain: Integer;\n  p: PBGRAPixel;\nbegin\n  if not CheckClippedRectBounds(ADest.Left, ADest.Top, ADest.Right, ADest.Bottom) then exit;\n  for i := 0 to BufSize-1 do\n    srcBuf[i] := AColor;\n  for yb := ADest.Top to ADest.Bottom-1 do\n  begin\n    remain := ADest.Width;\n    p := PBGRAPixel(GetPixelAddress(ADest.Left, yb));\n    while remain >= BufSize do\n    begin\n      BlendPixels(p, @srcBuf, AOperation, BufSize, AExcludeChannels);\n      inc(p, BufSize);\n      dec(remain, BufSize);\n    end;\n    if remain > 0 then\n      BlendPixels(p, @srcBuf, AOperation, remain, AExcludeChannels);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.BlendRectOver(ADest: TRect; AColor: TBGRAPixel;\n  AOperation: TBlendOperation; AOpacity: byte; ALinearBlend: boolean;\n  AExcludeChannels: TChannels);\nconst BufSize = 8;\nvar srcBuf: packed array[0..BufSize-1] of TBGRAPixel;\n  i, yb, remain: Integer;\n  p: PBGRAPixel;\nbegin\n  if not CheckClippedRectBounds(ADest.Left, ADest.Top, ADest.Right, ADest.Bottom) then exit;\n  for i := 0 to BufSize-1 do\n    srcBuf[i] := AColor;\n  for yb := ADest.Top to ADest.Bottom-1 do\n  begin\n    remain := ADest.Width;\n    p := PBGRAPixel(GetPixelAddress(ADest.Left, yb));\n    while remain >= BufSize do\n    begin\n      BlendPixelsOver(p, @srcBuf, AOperation, BufSize, AOpacity, ALinearBlend, AExcludeChannels);\n      inc(p, BufSize);\n      dec(remain, BufSize);\n    end;\n    if remain > 0 then\n      BlendPixelsOver(p, @srcBuf, AOperation, remain, AOpacity, ALinearBlend, AExcludeChannels);\n  end;\nend;\n\n{----------------------------- Filters -----------------------------------------}\n{ Call the appropriate function }\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterSmartZoom3(self, Option) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterMedian(self, option) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterSmooth(ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterBlurRadial(self, 3, rbPrecise) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterSphere(ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterSphere(self) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterTwirl(ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterTwirl(self, ACenter, ARadius, ATurn, AExponent) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterTwirl(ABounds: TRect; ACenter: TPoint;\n  ARadius: Single; ATurn: Single; AExponent: Single; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterTwirl(self, ABounds, ACenter, ARadius, ATurn, AExponent) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterCylinder(ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterCylinder(self) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterPlane(ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterPlane(self) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterSharpen(Amount: single = 1; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterSharpen(self,round(Amount*256)) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterSharpen(ABounds: TRect; Amount: single; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterSharpen(self,ABounds,round(Amount*256)) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterContour(self, AGammaCorrection) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterPixelate(pixelSize: integer;\n  useResample: boolean; filter: TResampleFilter; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result:= BGRAFilters.FilterPixelate(self, pixelSize, useResample, filter) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterEmboss(angle: single;\n  AStrength: integer; AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterEmboss(self, angle, AStrength, AOptions) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterEmboss(angle: single; ABounds: TRect;\n  AStrength: integer; AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterEmboss(self, angle, ABounds, AStrength, AOptions) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterEmbossHighlight(self, FillSelection, BGRAPixelTransparent) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterEmbossHighlight(self, FillSelection, BorderColor) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterEmbossHighlightOffset(self, FillSelection, BorderColor, Offset) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterGrayscale(ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterGrayscale(self) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterGrayscale(self, ABounds) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterNormalize(eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterNormalize(self, eachChannel) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterNormalize(ABounds: TRect; eachChannel: boolean; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterNormalize(self, ABounds, eachChannel) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterRotate(origin: TPointF;\n  angle: single; correctBlur: boolean; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := BGRAFilters.FilterRotate(self, origin, angle, correctBlur) as TBGRADefaultBitmap;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.FilterAffine(AMatrix: TAffineMatrix;\n  correctBlur: boolean; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  Result := NewBitmap(Width,Height);\n  if ACopyProperties then CopyPropertiesTo(Result);\n  Result.PutImageAffine(AMatrix,self,255,correctBlur);\nend;{$ENDIF}\n\nfunction TBGRADefaultBitmap.GetHasTransparentPixels: boolean;\nvar\n  p: PBGRAPixel;\n  n: integer;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if p^.alpha <> 255 then\n    begin\n      Result := True;\n      exit;\n    end;\n    Inc(p);\n  end;\n  Result := False;\nend;\n\nfunction TBGRADefaultBitmap.GetHasSemiTransparentPixels: boolean;\nvar\n  n: integer;\n  p: PBGRAPixel;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if (p^.alpha > 0) and (p^.alpha < 255) then\n    begin\n      result := true;\n      exit;\n    end;\n    inc(p);\n  end;\n  result := false;\nend;\n\nfunction TBGRADefaultBitmap.GetAverageColor: TColor;\nvar\n  pix: TBGRAPixel;\nbegin\n  pix := GetAveragePixel;\n  {$hints off}\n  if pix.alpha = 0 then\n    result := clNone else\n     result := RGBToColor(pix.red,pix.green,pix.blue);\n  {$hints on}\nend;\n\nfunction TBGRADefaultBitmap.GetAveragePixel: TBGRAPixel;\nvar\n  n:     integer;\n  p:     PBGRAPixel;\n  r, g, b, sum: double;\n  alpha: double;\nbegin\n  sum := 0;\n  r   := 0;\n  g   := 0;\n  b   := 0;\n  p   := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    alpha := p^.alpha / 255;\n    incF(sum, alpha);\n    incF(r, p^.red * alpha);\n    incF(g, p^.green * alpha);\n    incF(b, p^.blue * alpha);\n    Inc(p);\n  end;\n  if sum = 0 then\n    Result := BGRAPixelTransparent\n  else\n    Result := BGRA(round(r / sum),round(g / sum),round(b / sum),round(sum*255/NbPixels));\nend;\n\nfunction TBGRADefaultBitmap.GetPenJoinStyle: TPenJoinStyle;\nbegin\n  result := GetInternalPen.JoinStyle;\nend;\n\nprocedure TBGRADefaultBitmap.SetPenJoinStyle(const AValue: TPenJoinStyle);\nbegin\n  GetInternalPen.JoinStyle := AValue;\nend;\n\nfunction TBGRADefaultBitmap.GetPenMiterLimit: single;\nbegin\n  result := GetInternalPen.MiterLimit;\nend;\n\nprocedure TBGRADefaultBitmap.SetPenMiterLimit(const AValue: single);\nbegin\n  GetInternalPen.MiterLimit := AValue;\nend;\n\nprocedure TBGRADefaultBitmap.SetCanvasOpacity(AValue: byte);\nbegin\n  LoadFromBitmapIfNeeded;\n  FCanvasOpacity := AValue;\nend;\n\n{----------------------------- Resample ---------------------------------------}\n\nfunction TBGRADefaultBitmap.FineResample(NewWidth, NewHeight: integer;\n                                         ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  Result := BGRAResample.FineResample(self, NewWidth, NewHeight, ResampleFilter, ACopyProperties);\nend;\n\nfunction TBGRADefaultBitmap.FineResample(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n                                         ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  Result := BGRAResample.FineResample(self, NewWidth, NewHeight, ASizeUnit, ResampleFilter, ACopyProperties);\nend;\n\nfunction TBGRADefaultBitmap.SimpleStretch(NewWidth, NewHeight: integer;\n                                          ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  Result := BGRAResample.SimpleStretch(self, NewWidth, NewHeight, ACopyProperties);\nend;\n\nfunction TBGRADefaultBitmap.SimpleStretch(NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n                                          ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  Result := BGRAResample.SimpleStretch(self, NewWidth, NewHeight, ASizeUnit, ACopyProperties);\nend;\n\nfunction TBGRADefaultBitmap.Resample(newWidth, newHeight: integer;\n  mode: TResampleMode; ACopyProperties: Boolean=False): TBGRADefaultBitmap;\nbegin\n  case mode of\n    rmFineResample: Result  := FineResample(newWidth, newHeight, ACopyProperties) as TBGRADefaultBitmap;\n    rmSimpleStretch: Result := SimpleStretch(newWidth, newHeight, ACopyProperties) as TBGRADefaultBitmap;\n  else\n    raise Exception.Create('Unhandled resample mode');\n  end;\nend;\n\nfunction TBGRADefaultBitmap.Resample(newWidth, newHeight: Single; ASizeUnit: TCSSUnit;\n  mode: TResampleMode; ACopyProperties: Boolean): TBGRADefaultBitmap;\nbegin\n  case mode of\n    rmFineResample: Result  := FineResample(newWidth, newHeight, ASizeUnit, ACopyProperties) as TBGRADefaultBitmap;\n    rmSimpleStretch: Result := SimpleStretch(newWidth, newHeight, ASizeUnit, ACopyProperties) as TBGRADefaultBitmap;\n  else\n    raise Exception.Create('Unhandled resample mode');\n  end;\nend;\n\n{-------------------------------- Data functions ------------------------}\n\n{ Compute negative with gamma correction. A negative contains\n  complentary colors (black becomes white etc.).\n\n  It is NOT EXACTLY an involution, when applied twice, some color information is lost }\nprocedure TBGRADefaultBitmap.Negative;\nbegin\n  TBGRAFilterScannerNegative.ComputeFilterInplace(self, rect(0,0,FWidth,FHeight), True);\nend;\n\nprocedure TBGRADefaultBitmap.NegativeRect(ABounds: TRect);\nbegin\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  TBGRAFilterScannerNegative.ComputeFilterInplace(self, ABounds, True);\nend;\n\n{ Compute negative without gamma correction.\n\n  It is an involution, i.e it does nothing when applied twice }\nprocedure TBGRADefaultBitmap.LinearNegative;\nbegin\n  TBGRAFilterScannerNegative.ComputeFilterInplace(self, rect(0,0,FWidth,FHeight), False);\nend;\n\nprocedure TBGRADefaultBitmap.LinearNegativeRect(ABounds: TRect);\nbegin\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  TBGRAFilterScannerNegative.ComputeFilterInplace(self, ABounds, False);\nend;\n\nprocedure TBGRADefaultBitmap.InplaceGrayscale(AGammaCorrection: boolean = true);\nbegin\n  TBGRAFilterScannerGrayscale.ComputeFilterInplace(self, rect(0,0,FWidth,FHeight), AGammaCorrection);\nend;\n\nprocedure TBGRADefaultBitmap.InplaceGrayscale(ABounds: TRect; AGammaCorrection: boolean = true);\nbegin\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  TBGRAFilterScannerGrayscale.ComputeFilterInplace(self, ABounds, AGammaCorrection);\nend;\n\nprocedure TBGRADefaultBitmap.InplaceNormalize(AEachChannel: boolean);\nbegin\n  InplaceNormalize(rect(0,0,Width,Height),AEachChannel);\nend;\n\nprocedure TBGRADefaultBitmap.InplaceNormalize(ABounds: TRect;\n  AEachChannel: boolean);\nvar scanner: TBGRAFilterScannerNormalize;\nbegin\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  scanner := TBGRAFilterScannerNormalize.Create(self,Point(0,0),ABounds,AEachChannel);\n  FillRect(ABounds,scanner,dmSet);\n  scanner.Free;\nend;\n\n{ Swap red and blue channels. Useful when RGB order is swapped.\n\n  It is an involution, i.e it does nothing when applied twice }\nprocedure TBGRADefaultBitmap.SwapRedBlue;\nbegin\n  TBGRAFilterScannerSwapRedBlue.ComputeFilterInplace(self, rect(0,0,FWidth,FHeight), False);\nend;\n\nprocedure TBGRADefaultBitmap.SwapRedBlue(ARect: TRect);\nbegin\n  if not CheckClippedRectBounds(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom) then exit;\n  TBGRAFilterScannerSwapRedBlue.ComputeFilterInplace(self, ARect, False);\nend;\n\n{ Convert a grayscale image into a black image with alpha value }\nprocedure TBGRADefaultBitmap.GrayscaleToAlpha;\nvar\n  n:    integer;\n  p:    PLongword;\nbegin\n  LoadFromBitmapIfNeeded;\n  p := PLongword(Data);\n  n := NbPixels;\n  if n = 0 then\n    exit;\n  repeat\n    p^   := (p^ shr TBGRAPixel_RedShift and $FF) shl TBGRAPixel_AlphaShift;\n    Inc(p);\n    Dec(n);\n  until n = 0;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRADefaultBitmap.AlphaToGrayscale;\nvar\n  n:    integer;\n  temp: LongWord;\n  p:    PLongword;\nbegin\n  LoadFromBitmapIfNeeded;\n  p := PLongword(Data);\n  n := NbPixels;\n  if n = 0 then\n    exit;\n  repeat\n    temp := (p^ shr TBGRAPixel_AlphaShift) and $ff;\n    p^   := (temp shl TBGRAPixel_RedShift) or (temp shl TBGRAPixel_GreenShift)\n         or (temp shl TBGRAPixel_BlueShift) or ($ff shl TBGRAPixel_AlphaShift);\n    Inc(p);\n    Dec(n);\n  until n = 0;\n  InvalidateBitmap;\nend;\n\nfunction TBGRADefaultBitmap.GetMaskFromAlpha: TBGRADefaultBitmap;\nvar y,x: integer;\n  psrc, pdest: PBGRAPixel;\nbegin\n  result := BGRABitmapFactory.Create(Width,Height) as TBGRADefaultBitmap;\n  for y := 0 to self.Height-1 do\n  begin\n    psrc := self.ScanLine[y];\n    pdest := result.ScanLine[y];\n    for x := 0 to self.Width-1 do\n    begin\n      pdest^ := BGRA(psrc^.alpha,psrc^.alpha,psrc^.alpha);\n      inc(psrc);\n      inc(pdest);\n    end;\n  end;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRADefaultBitmap.GetGrayscaleMaskFromAlpha: TGrayscaleMask;\nvar\n  psrc: PBGRAPixel;\n  pdest: PByte;\n  y, x: Integer;\nbegin\n  result := TGrayscaleMask.Create;\n  result.SetSize(Width,Height);\n  for y := 0 to self.Height-1 do\n  begin\n    psrc := self.ScanLine[y];\n    pdest := result.ScanLine[y];\n    for x := 0 to self.Width-1 do\n    begin\n      pdest^ := psrc^.alpha;\n      inc(psrc);\n      inc(pdest);\n    end;\n  end;\nend;{$ENDIF}\n\nprocedure TBGRADefaultBitmap.ConvertToLinearRGB;\nvar p: PBGRAPixel;\n    n: integer;\nbegin\n  p := Data;\n  for n := NbPixels-1 downto 0 do\n  begin\n    p^.red := GammaExpansionTab[p^.red] shr 8;\n    p^.green := GammaExpansionTab[p^.green] shr 8;\n    p^.blue := GammaExpansionTab[p^.blue] shr 8;\n    inc(p);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.ConvertFromLinearRGB;\nvar p: PBGRAPixel;\n    n: integer;\nbegin\n  p := Data;\n  for n := NbPixels-1 downto 0 do\n  begin\n    p^.red := GammaCompressionTab[p^.red shl 8 + p^.red];\n    p^.green := GammaCompressionTab[p^.green shl 8 + p^.green];\n    p^.blue := GammaCompressionTab[p^.blue shl 8 + p^.blue];\n    inc(p);\n  end;\nend;\n\nprocedure TBGRADefaultBitmap.ConvertToPaletteGrayscale;\nvar\n   newPal: TFPPalette;\n\nbegin\n  try\n     newPal:= CreateGrayScalePalette;\n     UsePalette:= True;\n     Palette.Copy(newPal);\n     InplaceGrayscale(True);\n\n  finally\n     newPal.Free;\n  end;\nend;\n\n{ Make a copy of the transparent bitmap to a TBitmap with a background color\n  instead of transparency }\nfunction TBGRADefaultBitmap.MakeBitmapCopy(BackgroundColor: TColor; {%H-}AMasked: boolean): TBitmap;\nvar\n  opaqueCopy: TBGRACustomBitmap;\nbegin\n  Result     := TBitmap.Create;\n  Result.Width := Width;\n  Result.Height := Height;\n  if not HasTransparentPixels then\n  begin\n    Draw(Result.Canvas, 0,0);\n    exit;\n  end;\n  opaqueCopy := NewBitmap(Width, Height);\n  opaqueCopy.Fill(BackgroundColor);\n  opaqueCopy.PutImage(0, 0, self, dmDrawWithTransparency);\n  opaqueCopy.Draw(Result.canvas, 0, 0, True);\n  opaqueCopy.Free;\nend;\n\nfunction TBGRADefaultBitmap.GetPtrBitmap(Top, Bottom: Integer\n  ): TBGRACustomBitmap;\nvar temp: integer;\n    ptrbmp: TBGRAPtrBitmap;\nbegin\n  if Top > Bottom then\n  begin\n    temp := Top;\n    Top := Bottom;\n    Bottom := Temp;\n  end;\n  if Top < 0 then Top := 0;\n  if Bottom > Height then Bottom := Height;\n  if Top >= Bottom then\n    result := nil\n  else\n  begin\n    if LineOrder = riloTopToBottom then\n      ptrbmp := CreatePtrBitmap(Width,Bottom-Top,ScanLine[Top]) else\n      ptrbmp := CreatePtrBitmap(Width,Bottom-Top,ScanLine[Bottom-1]);\n    ptrbmp.LineOrder := LineOrder;\n    result := ptrbmp;\n  end;\nend;\n\n{-------------------------- Allocation routines -------------------------------}\n\nfunction TBGRADefaultBitmap.CreatePtrBitmap(AWidth, AHeight: integer;\n  AData: PBGRAPixel): TBGRAPtrBitmap;\nbegin\n  result := TBGRAPtrBitmap.Create(AWidth,AHeight,AData);\nend;\n\nprocedure TBGRADefaultBitmap.FreeBitmap;\nbegin\n  FreeAndNil(FBitmap);\nend;\n\nfunction TBGRADefaultBitmap.GetCanvasOpacity: byte;\nbegin\n  result:= FCanvasOpacity;\nend;\n\nfunction TBGRADefaultBitmap.GetFontHeight: integer;\nbegin\n  result := FFontHeight;\nend;\n\n{ TBGRAPtrBitmap }\n\nfunction TBGRAPtrBitmap.GetLineOrder: TRawImageLineOrder;\nbegin\n  result := inherited GetLineOrder;\nend;\n\nprocedure TBGRAPtrBitmap.SetLineOrder(AValue: TRawImageLineOrder);\nbegin\n  inherited SetLineOrder(AValue);\nend;\n\nprocedure TBGRAPtrBitmap.ReallocData;\nbegin\n  //nothing\nend;\n\nprocedure TBGRAPtrBitmap.FreeData;\nbegin\n  FDataByte := nil;\nend;\n\nprocedure TBGRAPtrBitmap.CannotResize;\nbegin\n  raise exception.Create('A pointer bitmap cannot be resized');\nend;\n\nprocedure TBGRAPtrBitmap.NotImplemented;\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBGRAPtrBitmap.RebuildBitmap;\nbegin\n  NotImplemented;\nend;\n\nfunction TBGRAPtrBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  result := nil;\n  NotImplemented;\nend;\n\nfunction TBGRAPtrBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nbegin\n  result := false;\n  NotImplemented;\nend;\n\nconstructor TBGRAPtrBitmap.Create(AWidth, AHeight: integer; AData: Pointer);\nbegin\n  inherited Create(AWidth, AHeight);\n  SetDataPtr(AData);\nend;\n\nprocedure TBGRAPtrBitmap.SetDataPtr(AData: Pointer);\nbegin\n  FDataByte := AData;\nend;\n\nprocedure TBGRAPtrBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  NotImplemented;\nend;\n\nprocedure TBGRAPtrBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  NotImplemented;\nend;\n\nprocedure TBGRAPtrBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer\n  );\nbegin\n  NotImplemented;\nend;\n\nprocedure TBGRAPtrBitmap.Assign(Source: TPersistent);\nbegin\n  CannotResize;\nend;\n\nprocedure TBGRAPtrBitmap.TakeScreenshot(ARect: TRect);\nbegin\n  CannotResize;\nend;\n\nprocedure TBGRAPtrBitmap.TakeScreenshotOfPrimaryMonitor;\nbegin\n  CannotResize;\nend;\n\nprocedure TBGRAPtrBitmap.LoadFromDevice(DC: HDC);\nbegin\n  NotImplemented;\nend;\n\nprocedure TBGRAPtrBitmap.LoadFromDevice(DC: HDC; ARect: TRect);\nbegin\n  NotImplemented;\nend;\n\nprocedure BGRAGradientFill(bmp: TBGRACustomBitmap; x, y, x2, y2: integer;\n  c1, c2: TBGRAPixel; gtype: TGradientType; o1, o2: TPointF; mode: TDrawMode;\n  gammaColorCorrection: boolean = True; Sinus: Boolean=False);\nbegin\n  bmp.GradientFill(x,y,x2,y2,c1,c2,gtype,o1,o2,mode,gammaColorCorrection,sinus);\nend;\n\ninitialization\n\n  with DefaultTextStyle do\n  begin\n    Alignment  := taLeftJustify;\n    Layout     := tlTop;\n    WordBreak  := True;\n    SingleLine := True;\n    Clipping   := True;\n    ShowPrefix := False;\n    Opaque     := False;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgradithering.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implements the dithering algorithms }\nunit BGRADithering;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAFilterType, BGRAPalette, BGRABitmapTypes;\n\ntype\n  TOutputPixelProc = procedure(X,Y: Int32or64; AColorIndex: Int32or64; AColor: TBGRAPixel) of object;\n\n  { Abstract dithering task }\n  TDitheringTask = class(TFilterTask)\n  protected\n    FBounds: TRect;\n    FIgnoreAlpha: boolean;\n    FPalette: TBGRACustomApproxPalette;\n    FCurrentOutputScanline: PBGRAPixel;\n    FCurrentOutputY: Int32or64;\n    FOutputPixel : TOutputPixelProc;\n    FDrawMode: TDrawMode;\n    procedure UpdateCurrentLine(Y: Int32or64); inline;\n    procedure OutputPixel(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure OutputPixelSet(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure OutputPixelSetExceptTransparent(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure OutputPixelLinearBlend(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure OutputPixelDraw(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure OutputPixelXor(X,Y: Int32or64; {%H-}AColorIndex: Int32or64; AColor: TBGRAPixel); virtual;\n    procedure ApproximateColor(const AColor: TBGRAPixel; out AApproxColor: TBGRAPixel; out AIndex: integer);\n    procedure SetDrawMode(AValue: TDrawMode);\n    procedure UpdateOutputPixel;\n  public\n    constructor Create(ASource: IBGRAScanner; APalette: TBGRACustomApproxPalette; ADestination: TBGRACustomBitmap; AIgnoreAlpha: boolean; ABounds: TRect); overload;\n    constructor Create(bmp: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette; AInPlace: boolean; AIgnoreAlpha: boolean; ABounds: TRect); overload;\n    constructor Create(bmp: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette; AInPlace: boolean; AIgnoreAlpha: boolean); overload;\n    property OnOutputPixel: TOutputPixelProc read FOutputPixel write FOutputPixel;\n    property DrawMode: TDrawMode read FDrawMode write SetDrawMode;\n  end;\n\n  { Task for trivial dithering consisting in finding the nearest color }\n  TNearestColorTask = class(TDitheringTask)\n  protected\n    procedure DoExecute; override;\n  end;\n\n  { Task for Floyd-Steinberg dithering }\n  TFloydSteinbergDitheringTask = class(TDitheringTask)\n  protected\n    procedure DoExecute; override;\n  end;\n\n  { Handles dithering of an image }\n  TDitheringToIndexedImage = class\n  protected\n    FBitOrder: TRawImageBitOrder;\n    FByteOrder: TRawImageByteOrder;\n    FBitsPerPixel: integer;\n    FLineOrder: TRawImageLineOrder;\n    FPalette: TBGRACustomApproxPalette;\n    FIgnoreAlpha: boolean;\n    FTransparentColorIndex: Int32or64;\n\n    //following variables are used during dithering\n    FCurrentScanlineSize: PtrInt;\n    FCurrentData: PByte;\n    FCurrentOutputY: Int32or64;\n    FCurrentOutputScanline: PByte;\n    FCurrentBitOrderMask: Int32or64;\n    FCurrentMaxY: Int32or64;\n\n    procedure SetPalette(AValue: TBGRACustomApproxPalette);\n    procedure SetIgnoreAlpha(AValue: boolean);\n    procedure SetLineOrder(AValue: TRawImageLineOrder);\n    procedure SetBitOrder(AValue: TRawImageBitOrder); virtual;\n    procedure SetBitsPerPixel(AValue: integer); virtual;\n    procedure SetByteOrder(AValue: TRawImageByteOrder); virtual;\n    procedure OutputPixelSubByte(X,Y: Int32or64; AColorIndex: Int32or64; {%H-}AColor: TBGRAPixel); virtual;\n    procedure OutputPixelFullByte(X,Y: Int32or64; AColorIndex: Int32or64; {%H-}AColor: TBGRAPixel); virtual;\n    function GetScanline(Y: Int32or64): Pointer; virtual;\n    function GetTransparentColorIndex: integer;\n    procedure SetTransparentColorIndex(AValue: integer);\n  public\n    constructor Create(APalette: TBGRACustomApproxPalette; AIgnoreAlpha: boolean; ABitsPerPixelForIndices: integer); overload; //use platform byte order\n    constructor Create(APalette: TBGRACustomApproxPalette; AIgnoreAlpha: boolean; ABitsPerPixelForIndices: integer; AByteOrder: TRawImageByteOrder); overload; //maybe necessary if larger than 8 bits per pixel\n\n    function DitherImage(AAlgorithm: TDitheringAlgorithm; AImage: TBGRACustomBitmap): Pointer; overload; //use minimum scanline size\n    function DitherImage(AAlgorithm: TDitheringAlgorithm; AImage: TBGRACustomBitmap; AScanlineSize: PtrInt): Pointer; overload;\n    procedure DitherImageTo(AAlgorithm: TDitheringAlgorithm; AImage: TBGRACustomBitmap; AData: Pointer); overload; //use minimum scanline size\n    procedure DitherImageTo(AAlgorithm: TDitheringAlgorithm; AImage: TBGRACustomBitmap; AData: Pointer; AScanlineSize: PtrInt); overload;\n    function ComputeMinimumScanlineSize(AWidthInPixels: integer): PtrInt;\n    function AllocateSpaceForIndexedData(AImage: TBGRACustomBitmap; AScanlineSize: PtrInt): pointer;\n\n    //optional customization of format\n    property BitsPerPixel: integer read FBitsPerPixel write SetBitsPerPixel;\n    property BitOrder: TRawImageBitOrder read FBitOrder write SetBitOrder;\n    property ByteOrder: TRawImageByteOrder read FByteOrder write SetByteOrder;\n    property LineOrder: TRawImageLineOrder read FLineOrder write SetLineOrder;\n\n    property Palette: TBGRACustomApproxPalette read FPalette write SetPalette;\n    property IgnoreAlpha: boolean read FIgnoreAlpha write SetIgnoreAlpha;\n\n    //when there is no transparent color in the palette, or that IgnoreAlpha is set to True,\n    //this allows to define the index for the fully transparent color\n    property DefaultTransparentColorIndex: integer read GetTransparentColorIndex write SetTransparentColorIndex;\n  end;\n\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette;\n  AIgnoreAlpha: boolean): TDitheringTask; overload;\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette;\n  AIgnoreAlpha: boolean; ABounds: TRect): TDitheringTask; overload;\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ASource: IBGRAScanner; ADestination: TBGRACustomBitmap; ABounds: TRect): TDitheringTask; overload;\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ASource: IBGRAScanner; ADestination: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette;\n    AIgnoreAlpha: boolean; ABounds: TRect): TDitheringTask; overload;\n\nfunction DitherImageTo16Bit(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap): TBGRACustomBitmap;\n\nprocedure DitheredFillRect(ABitmap: TBGRACustomBitmap; x, y, x2, y2: integer;\n  texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm);\n\nimplementation\n\nuses BGRABlend;\n\nfunction AbsRGBADiff(const c1, c2: TExpandedPixel): Int32or64;\nbegin\n  result := abs(c1.alpha-c2.alpha);\n  inc(result, abs(c1.red-c2.red) );\n  inc(result, abs(c1.green-c2.green) );\n  inc(result, abs(c1.blue-c2.blue) );\nend;\n\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette;\n  AIgnoreAlpha: boolean): TDitheringTask;\nbegin\n  result := CreateDitheringTask(AAlgorithm, ABitmap, APalette, AIgnoreAlpha, rect(0,0,ABitmap.width, ABitmap.Height));\nend;\n\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; APalette: TBGRACustomApproxPalette;\n  AIgnoreAlpha: boolean; ABounds: TRect): TDitheringTask;\nbegin\n  result := nil;\n  case AAlgorithm of\n    daNearestNeighbor: result := TNearestColorTask.Create(ABitmap, APalette, False, AIgnoreAlpha, ABounds);\n    daFloydSteinberg: result := TFloydSteinbergDitheringTask.Create(ABitmap, APalette, False, AIgnoreAlpha, ABounds);\n    else raise exception.Create('Unknown algorithm');\n  end;\nend;\n\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm;\n  ASource: IBGRAScanner; ADestination: TBGRACustomBitmap; ABounds: TRect\n  ): TDitheringTask;\nbegin\n  result := CreateDitheringTask(AAlgorithm, ASource, ADestination, nil, true, ABounds);\nend;\n\nfunction CreateDitheringTask(AAlgorithm: TDitheringAlgorithm;\n  ASource: IBGRAScanner; ADestination: TBGRACustomBitmap;\n  APalette: TBGRACustomApproxPalette; AIgnoreAlpha: boolean; ABounds: TRect\n  ): TDitheringTask;\nbegin\n  result := nil;\n  case AAlgorithm of\n    daNearestNeighbor: result := TNearestColorTask.Create(ASource, APalette, ADestination, AIgnoreAlpha, ABounds);\n    daFloydSteinberg: result := TFloydSteinbergDitheringTask.Create(ASource, APalette, ADestination, AIgnoreAlpha, ABounds);\n    else raise exception.Create('Unknown algorithm');\n  end;\nend;\n\nfunction DitherImageTo16Bit(AAlgorithm: TDitheringAlgorithm;\n  ABitmap: TBGRACustomBitmap): TBGRACustomBitmap;\nvar\n  palette16bit: TBGRA16BitPalette;\n  dither: TDitheringTask;\nbegin\n  palette16bit := TBGRA16BitPalette.Create;\n  dither := CreateDitheringTask(AAlgorithm, ABitmap, palette16bit, false);\n  result := dither.Execute;\n  dither.Free;\n  palette16bit.Free;\nend;\n\nprocedure DitheredFillRect(ABitmap: TBGRACustomBitmap; x, y, x2, y2: integer;\n  texture: IBGRAScanner; mode: TDrawMode; AScanOffset: TPoint; ditheringAlgorithm: TDitheringAlgorithm);\nvar dither: TDitheringTask;\n  bounds: TRect;\nbegin\n  bounds := TRect.Intersect(rect(x,y,x2,y2), ABitmap.ClipRect);\n  if bounds.IsEmpty then exit;\n  dither := CreateDitheringTask(ditheringAlgorithm, texture, ABitmap, bounds);\n  dither.ScanOffset := AScanOffset;\n  dither.DrawMode := mode;\n  dither.Execute;\n  dither.Free;\nend;\n\n{ TDitheringToIndexedImage }\n\nprocedure TDitheringToIndexedImage.SetBitsPerPixel(AValue: integer);\nbegin\n  if not (AValue in [1,2,4,8,16,32]) then\n    raise exception.Create('Invalid value for bits per pixel. Allowed values: 1,2,4,8,16,32.');\n  if FBitsPerPixel=AValue then Exit;\n  FBitsPerPixel:=AValue;\nend;\n\nprocedure TDitheringToIndexedImage.SetByteOrder(AValue: TRawImageByteOrder);\nbegin\n  if FByteOrder=AValue then Exit;\n  FByteOrder:=AValue;\nend;\n\nprocedure TDitheringToIndexedImage.OutputPixelSubByte(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nvar p: PByte;\nbegin\n  if y <> FCurrentOutputY then\n  begin\n    FCurrentOutputY := y;\n    FCurrentOutputScanline := GetScanline(Y);\n  end;\n  if AColorIndex = -1 then AColorIndex := FTransparentColorIndex;\n  case FBitsPerPixel of\n    1: begin\n         p := FCurrentOutputScanline+(x shr 3);\n         p^ := p^ or ((AColorIndex and 1) shl ((x xor FCurrentBitOrderMask) and 7));\n       end;\n    2: begin\n         p := FCurrentOutputScanline+(x shr 2);\n         p^ := p^ or ((AColorIndex and 1) shl (((x xor FCurrentBitOrderMask) and 3) shl 1));\n       end;\n    4: begin\n         p := FCurrentOutputScanline+(x shr 1);\n         p^ := p^ or ((AColorIndex and 1) shl (((x xor FCurrentBitOrderMask) and 1) shl 2));\n       end;\n  end;\nend;\n\nprocedure TDitheringToIndexedImage.OutputPixelFullByte(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  if y <> FCurrentOutputY then\n  begin\n    FCurrentOutputY := y;\n    FCurrentOutputScanline := GetScanline(Y);\n  end;\n  if AColorIndex = -1 then AColorIndex := FTransparentColorIndex;\n  case FBitsPerPixel of\n    8: (FCurrentOutputScanline+x)^ := AColorIndex;\n    16: (PWord(FCurrentOutputScanline)+x)^ := AColorIndex;\n    32: (PLongWord(FCurrentOutputScanline)+x)^ := AColorIndex;\n  end;\nend;\n\nfunction TDitheringToIndexedImage.GetScanline(Y: Int32or64): Pointer;\nbegin\n  if FLineOrder = riloTopToBottom then\n    result := FCurrentData + Y*FCurrentScanlineSize\n  else\n    result := FCurrentData + (FCurrentMaxY-Y)*FCurrentScanlineSize\nend;\n\nprocedure TDitheringToIndexedImage.SetIgnoreAlpha(AValue: boolean);\nbegin\n  if FIgnoreAlpha=AValue then Exit;\n  FIgnoreAlpha:=AValue;\nend;\n\nprocedure TDitheringToIndexedImage.SetTransparentColorIndex(AValue: integer);\nbegin\n  if FTransparentColorIndex=AValue then Exit;\n  FTransparentColorIndex:=AValue;\nend;\n\nfunction TDitheringToIndexedImage.GetTransparentColorIndex: integer;\nbegin\n  result := FTransparentColorIndex;\nend;\n\nprocedure TDitheringToIndexedImage.SetPalette(AValue: TBGRACustomApproxPalette);\nbegin\n  if FPalette=AValue then Exit;\n  FPalette:=AValue;\nend;\n\nprocedure TDitheringToIndexedImage.SetLineOrder(AValue: TRawImageLineOrder);\nbegin\n  if FLineOrder=AValue then Exit;\n  FLineOrder:=AValue;\nend;\n\nprocedure TDitheringToIndexedImage.SetBitOrder(AValue: TRawImageBitOrder);\nbegin\n  if FBitOrder=AValue then Exit;\n  FBitOrder:=AValue;\nend;\n\nconstructor TDitheringToIndexedImage.Create(APalette: TBGRACustomApproxPalette; AIgnoreAlpha: boolean; ABitsPerPixelForIndices: integer);\nbegin\n  BitsPerPixel:= ABitsPerPixelForIndices;\n  BitOrder := riboReversedBits; //convention in BMP format\n  {$IFDEF ENDIAN_LITTLE}\n  ByteOrder:= riboLSBFirst;\n  {$ELSE}\n  ByteOrder:= riboMSBFirst;\n  {$ENDIF}\n  Palette := APalette;\n  IgnoreAlpha:= AIgnoreAlpha;\nend;\n\nconstructor TDitheringToIndexedImage.Create(APalette: TBGRACustomApproxPalette; AIgnoreAlpha: boolean; ABitsPerPixelForIndices: integer;\n  AByteOrder: TRawImageByteOrder);\nbegin\n  BitsPerPixel:= ABitsPerPixelForIndices;\n  BitOrder := riboReversedBits; //convention in BMP format\n  ByteOrder:= AByteOrder;\n  Palette := APalette;\n  IgnoreAlpha:= AIgnoreAlpha;\nend;\n\nfunction TDitheringToIndexedImage.ComputeMinimumScanlineSize(\n  AWidthInPixels: integer): PtrInt;\nbegin\n  result := (AWidthInPixels*FBitsPerPixel+7) shr 3;\nend;\n\nfunction TDitheringToIndexedImage.AllocateSpaceForIndexedData(AImage: TBGRACustomBitmap;\n  AScanlineSize: PtrInt): pointer;\nvar size: integer;\nbegin\n  size := AScanlineSize * AImage.Height;\n  GetMem(result, size);\n  Fillchar(result^, size, 0);\nend;\n\nfunction TDitheringToIndexedImage.DitherImage(AAlgorithm: TDitheringAlgorithm;\n  AImage: TBGRACustomBitmap): Pointer;\nbegin\n  result := DitherImage(AAlgorithm, AImage, ComputeMinimumScanlineSize(AImage.Width));\nend;\n\nprocedure TDitheringToIndexedImage.DitherImageTo(AAlgorithm: TDitheringAlgorithm;\n  AImage: TBGRACustomBitmap; AData: Pointer);\nbegin\n  DitherImageTo(AAlgorithm, AImage, AData, ComputeMinimumScanlineSize(AImage.Width));\nend;\n\nfunction TDitheringToIndexedImage.DitherImage(AAlgorithm: TDitheringAlgorithm;\n  AImage: TBGRACustomBitmap; AScanlineSize: PtrInt): Pointer;\nbegin\n  result := AllocateSpaceForIndexedData(AImage, AScanlineSize);\n  DitherImageTo(AAlgorithm, AImage, result, AScanlineSize);\nend;\n\nprocedure TDitheringToIndexedImage.DitherImageTo(AAlgorithm: TDitheringAlgorithm;\n  AImage: TBGRACustomBitmap; AData: Pointer; AScanlineSize: PtrInt);\nvar ditherTask: TDitheringTask;\nbegin\n  FCurrentOutputY := -1;\n  FCurrentOutputScanline := nil;\n  FCurrentData := AData;\n  FCurrentMaxY:= AImage.Height-1;\n  FCurrentScanlineSize:= AScanlineSize;\n\n  ditherTask := CreateDitheringTask(AAlgorithm, AImage, FPalette, FIgnoreAlpha);\n  try\n    ditherTask.Inplace := True; //do not allocate destination\n    if BitsPerPixel >= 8 then\n      ditherTask.OnOutputPixel := @OutputPixelFullByte\n    else\n    begin\n      ditherTask.OnOutputPixel:= @OutputPixelSubByte;\n      if BitOrder = riboBitsInOrder then\n        FCurrentBitOrderMask := 0\n      else\n        FCurrentBitOrderMask := $ff;\n    end;\n    ditherTask.Execute;\n  finally\n    ditherTask.Free;\n  end;\nend;\n\n{ TDitheringTask }\n\nprocedure TDitheringTask.SetDrawMode(AValue: TDrawMode);\nbegin\n  if FDrawMode=AValue then Exit;\n  FDrawMode:=AValue;\n  UpdateOutputPixel;\nend;\n\nprocedure TDitheringTask.UpdateOutputPixel;\nbegin\n  case FDrawMode of\n    dmSet: FOutputPixel := @OutputPixelSet;\n    dmSetExceptTransparent: FOutputPixel := @OutputPixelSetExceptTransparent;\n    dmLinearBlend: FOutputPixel := @OutputPixelLinearBlend;\n    dmXor: FOutputPixel := @OutputPixelXor;\n  else\n    {dmDrawWithTransparency} FOutputPixel := @OutputPixelDraw;\n  end;\nend;\n\nprocedure TDitheringTask.UpdateCurrentLine(Y: Int32or64);\nbegin\n  if Y <> FCurrentOutputY then\n  begin\n    FCurrentOutputY := Y;\n    FCurrentOutputScanline := Destination.ScanLine[y];\n  end;\nend;\n\nprocedure TDitheringTask.OutputPixel(X, Y: Int32or64; AColorIndex: Int32or64;\n  AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  PutPixels(FCurrentOutputScanline+x, @AColor, 1, FDrawMode, 255);\nend;\n\nprocedure TDitheringTask.OutputPixelSet(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  (FCurrentOutputScanline+x)^ := AColor;\nend;\n\nprocedure TDitheringTask.OutputPixelSetExceptTransparent(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  if AColor.alpha = 255 then (FCurrentOutputScanline+x)^ := AColor;\nend;\n\nprocedure TDitheringTask.OutputPixelLinearBlend(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  FastBlendPixelInline(FCurrentOutputScanline+x, AColor);\nend;\n\nprocedure TDitheringTask.OutputPixelDraw(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  DrawPixelInlineWithAlphaCheck(FCurrentOutputScanline+x, AColor);\nend;\n\nprocedure TDitheringTask.OutputPixelXor(X, Y: Int32or64;\n  AColorIndex: Int32or64; AColor: TBGRAPixel);\nbegin\n  UpdateCurrentLine(y);\n  PLongWord(FCurrentOutputScanline+x)^ := PLongWord(FCurrentOutputScanline+x)^ xor PLongWord(@AColor)^;\nend;\n\nprocedure TDitheringTask.ApproximateColor(const AColor: TBGRAPixel;\n  out AApproxColor: TBGRAPixel; out AIndex: integer);\nbegin\n  if FPalette <> nil then\n  begin\n    AIndex := FPalette.FindNearestColorIndex(AColor, FIgnoreAlpha);\n    if AIndex = -1 then\n      AApproxColor := BGRAPixelTransparent\n    else\n      AApproxColor := FPalette.Color[AIndex];\n  end else\n  begin\n    if AColor.alpha = 0 then\n    begin\n      AApproxColor := BGRAPixelTransparent;\n      AIndex := -1;\n    end else\n    begin\n      AApproxColor := AColor;\n      AIndex := 0;\n    end;\n  end;\nend;\n\nconstructor TDitheringTask.Create(ASource: IBGRAScanner;\n  APalette: TBGRACustomApproxPalette; ADestination: TBGRACustomBitmap;\n  AIgnoreAlpha: boolean; ABounds: TRect);\nbegin\n  FPalette := APalette;\n  SetSource(ASource);\n  FBounds := ABounds;\n  FIgnoreAlpha:= AIgnoreAlpha;\n  FCurrentOutputY := -1;\n  FCurrentOutputScanline:= nil;\n  Destination := ADestination;\n  FDrawMode:= dmSet;\n  UpdateOutputPixel;\nend;\n\nconstructor TDitheringTask.Create(bmp: TBGRACustomBitmap;\n  APalette: TBGRACustomApproxPalette; AInPlace: boolean; AIgnoreAlpha: boolean;\n  ABounds: TRect);\nbegin\n  FPalette := APalette;\n  SetSource(bmp);\n  FBounds := ABounds;\n  FIgnoreAlpha:= AIgnoreAlpha;\n  FCurrentOutputY := -1;\n  FCurrentOutputScanline:= nil;\n  InPlace := AInPlace;\n  FDrawMode:= dmSet;\n  UpdateOutputPixel;\nend;\n\nconstructor TDitheringTask.Create(bmp: TBGRACustomBitmap;\n  APalette: TBGRACustomApproxPalette; AInPlace: boolean; AIgnoreAlpha: boolean);\nbegin\n  FPalette := APalette;\n  SetSource(bmp);\n  FBounds := rect(0,0,bmp.Width,bmp.Height);\n  FIgnoreAlpha:= AIgnoreAlpha;\n  FCurrentOutputY := -1;\n  FCurrentOutputScanline:= nil;\n  InPlace := AInPlace;\n  FDrawMode:= dmSet;\n  UpdateOutputPixel;\nend;\n\n{ TFloydSteinbergDitheringTask }\n\nprocedure TFloydSteinbergDitheringTask.DoExecute;\nconst\n  ErrorPrecisionShift = 4;\n  MaxColorDiffForDiffusion = 4096;\ntype\n  TAccPixel = record\n    red,green,blue,alpha: Int32or64;\n  end;\n  TLine = array of TAccPixel;\n\n  procedure AddError(var dest: TAccPixel; const src: TAccPixel; factor: Int32or64); inline;\n  const maxError = 65536 shl ErrorPrecisionShift;\n    minError = -(65536 shl ErrorPrecisionShift);\n  begin\n    inc(dest.alpha, src.alpha * factor);\n    if dest.alpha > maxError then dest.alpha := maxError;\n    if dest.alpha < minError then dest.alpha := minError;\n    inc(dest.red, src.red * factor);\n    if dest.red > maxError then dest.red := maxError;\n    if dest.red < minError then dest.red := minError;\n    inc(dest.green, src.green * factor);\n    if dest.green > maxError then dest.green := maxError;\n    if dest.green < minError then dest.green := minError;\n    inc(dest.blue, src.blue * factor);\n    if dest.blue > maxError then dest.blue := maxError;\n    if dest.blue < minError then dest.blue := minError;\n  end;\n\nvar\n  w,h: Int32or64;\n\nvar\n  p,pNext: PExpandedPixel;\n  destX,destY: Int32or64;\n  orig,cur,approxExp: TExpandedPixel;\n  approx: TBGRAPixel;\n  approxIndex: integer;\n  curPix,diff: TAccPixel;\n  i: Int32or64;\n  yWrite: Int32or64;\n  tempLine, currentLine, nextLine: TLine;\n\n  nextScan,curScan: PExpandedPixel;\n\n  function ClampWordDiv(AValue: Int32or64): Word; inline;\n  begin\n    if AValue < 0 then AValue := -((-AValue) shr ErrorPrecisionShift) else AValue := AValue shr ErrorPrecisionShift;\n    if AValue < 0 then\n      result := 0\n    else if AValue > 65535 then\n      result := 65535\n    else\n      result := AValue;\n  end;\n\n  function Div16(AValue: Int32or64): Int32or64; inline;\n  begin\n    if AValue < 0 then\n      result := -((-AValue) shr 4)\n    else\n      result := AValue shr 4;\n  end;\n\nbegin\n  w := FBounds.Right-FBounds.Left;\n  h := FBounds.Bottom-FBounds.Top;\n  if (w <= 0) or (h <= 0) then exit;\n  setlength(currentLine,w);\n  setlength(nextLine,w);\n  curScan := nil;\n  nextScan := RequestSourceExpandedScanLine(FBounds.Left, FBounds.Top, FBounds.Right-FBounds.Left);\n  for yWrite := 0 to h-1 do\n  begin\n    if GetShouldStop(yWrite) then break;\n    ReleaseSourceExpandedScanLine(curScan);\n    curScan := nextScan;\n    nextScan := nil;\n    p := curScan;\n    destX := FBounds.Left;\n    destY := yWrite+FBounds.Top;\n    if yWrite < h-1 then\n      nextScan := RequestSourceExpandedScanLine(FBounds.Left,yWrite+FBounds.Top+1, FBounds.Right-FBounds.Left);\n    pNext := nextScan;\n    if odd(yWrite) then\n    begin\n      inc(p, w);\n      inc(destX, w);\n      if pNext<>nil then inc(pNext, w);\n      for i := w-1 downto 0 do\n      begin\n        dec(p);\n        dec(destX);\n        if pNext<>nil then dec(pNext);\n        if p^.alpha <> 0 then\n        begin\n          orig := p^;\n          with currentLine[i] do\n          begin\n            curPix.alpha := alpha+Int32or64(orig.alpha shl ErrorPrecisionShift);\n            curPix.red := red+Int32or64(orig.red shl ErrorPrecisionShift);\n            curPix.green := green+Int32or64(orig.green shl ErrorPrecisionShift);\n            curPix.blue := blue+Int32or64(orig.blue shl ErrorPrecisionShift);\n            cur.alpha := ClampWordDiv(curPix.alpha);\n            cur.red := ClampWordDiv(curPix.red);\n            cur.green := ClampWordDiv(curPix.green);\n            cur.blue := ClampWordDiv(curPix.blue);\n          end;\n          ApproximateColor(GammaCompression(cur), approx, approxIndex);\n          approxExp := GammaExpansion(approx);\n          diff.alpha := Div16(curPix.alpha - (approxExp.alpha shl ErrorPrecisionShift));\n          if (approxExp.alpha = 0) or (cur.alpha = 0) then\n          begin\n            diff.red := 0;\n            diff.green := 0;\n            diff.blue := 0;\n          end else\n          begin\n            diff.red := Div16(curPix.red - (approxExp.red shl ErrorPrecisionShift));\n            diff.green := Div16(curPix.green - (approxExp.green shl ErrorPrecisionShift));\n            diff.blue := Div16(curPix.blue - (approxExp.blue shl ErrorPrecisionShift));\n          end;\n          if i > 0 then\n          begin\n            if AbsRGBADiff((p-1)^,orig) < MaxColorDiffForDiffusion then\n              AddError(currentLine[i-1], diff, 7);\n          end;\n          if nextLine <> nil then\n          begin\n            if i > 0 then\n            begin\n              if AbsRGBADiff((pNext-1)^,orig) < MaxColorDiffForDiffusion then\n                AddError(nextLine[i-1], diff, 1);\n            end;\n            if AbsRGBADiff(pNext^,orig) < MaxColorDiffForDiffusion then\n              AddError(nextLine[i], diff, 5);\n            if i < w-1 then\n            begin\n              if AbsRGBADiff((pNext+1)^,orig) < MaxColorDiffForDiffusion then\n                AddError(nextLine[i+1], diff, 3);\n            end;\n          end;\n          OnOutputPixel(destX,destY,approxIndex,approx);\n        end else\n        begin\n          ApproximateColor(BGRAPixelTransparent, approx, approxIndex);\n          OnOutputPixel(destX,destY,approxIndex,approx);\n        end;\n      end\n    end\n    else\n    for i := 0 to w-1 do\n    begin\n      if p^.alpha <> 0 then\n      begin\n        orig := p^;\n        with currentLine[i] do\n        begin\n          curPix.alpha := alpha+Int32or64(orig.alpha shl ErrorPrecisionShift);\n          curPix.red := red+Int32or64(orig.red shl ErrorPrecisionShift);\n          curPix.green := green+Int32or64(orig.green shl ErrorPrecisionShift);\n          curPix.blue := blue+Int32or64(orig.blue shl ErrorPrecisionShift);\n          cur.alpha := ClampWordDiv(curPix.alpha);\n          cur.red := ClampWordDiv(curPix.red);\n          cur.green := ClampWordDiv(curPix.green);\n          cur.blue := ClampWordDiv(curPix.blue);\n        end;\n        ApproximateColor(GammaCompression(cur), approx, approxIndex);\n        approxExp := GammaExpansion(approx);\n        diff.alpha := Div16(curPix.alpha - (approxExp.alpha shl ErrorPrecisionShift));\n        if (approxExp.alpha = 0) or (cur.alpha = 0) then\n        begin\n          diff.red := 0;\n          diff.green := 0;\n          diff.blue := 0;\n        end else\n        begin\n          diff.red := Div16(curPix.red - (approxExp.red shl ErrorPrecisionShift));\n          diff.green := Div16(curPix.green - (approxExp.green shl ErrorPrecisionShift));\n          diff.blue := Div16(curPix.blue - (approxExp.blue shl ErrorPrecisionShift));\n        end;\n        if i < w-1 then\n        begin\n          if AbsRGBADiff((p+1)^,orig) < MaxColorDiffForDiffusion then\n            AddError(currentLine[i+1], diff, 7);\n        end;\n        if pNext <> nil then\n        begin\n          if i > 0 then\n          begin\n            if AbsRGBADiff((pNext-1)^,orig) < MaxColorDiffForDiffusion then\n              AddError(nextLine[i-1], diff, 3);\n          end;\n          if AbsRGBADiff(pNext^,orig) < MaxColorDiffForDiffusion then\n            AddError(nextLine[i], diff, 5);\n          if i < w-1 then\n          begin\n            if AbsRGBADiff((pNext+1)^,orig) < MaxColorDiffForDiffusion then\n              AddError(nextLine[i+1], diff, 1);\n          end;\n        end;\n        OnOutputPixel(destX,destY,approxIndex,approx);\n      end else\n      begin\n        ApproximateColor(BGRAPixelTransparent, approx, approxIndex);\n        OnOutputPixel(destX,destY,approxIndex,approx);\n      end;\n      inc(p);\n      inc(destX);\n      if pNext<>nil then inc(pNext);\n    end;\n    tempLine := currentLine;\n    currentLine := nextLine;\n    nextLine := tempLine;\n    if yWrite = h-2 then\n      nextLine := nil\n      else fillchar(nextLine[0], sizeof(nextLine[0])*w, 0);\n  end;\n  ReleaseSourceExpandedScanLine(curScan);\n  ReleaseSourceExpandedScanLine(nextScan);\n  Destination.InvalidateBitmap;\nend;\n\n{ TNearestColorTask }\n\nprocedure TNearestColorTask.DoExecute;\nvar yb,xb: Int32or64;\n  curScan,psrc: PBGRAPixel;\n  colorIndex: LongInt;\n  colorValue: TBGRAPixel;\nbegin\n  for yb := FBounds.Top to FBounds.Bottom - 1 do\n  begin\n    if GetShouldStop(yb) then break;\n    curScan := RequestSourceScanLine(FBounds.Left,yb,FBounds.Right-FBounds.Left);\n    psrc := curScan;\n    for xb := FBounds.Left to FBounds.Right-1 do\n    begin\n      ApproximateColor(psrc^, colorValue, colorIndex);\n      OnOutputPixel(xb,yb,colorIndex,colorValue);\n      inc(psrc);\n    end;\n    ReleaseSourceScanLine(curScan);\n  end;\n  Destination.InvalidateBitmap;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgradnetdeserial.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Read .Net serialized classes)\n\n  Serialization is a process by which objects in memory are saved according\n  to their structure. The .Net classes are saved with BinaryFormatter of\n  namespace System.Runtime.Serialization.Formatters.Binary.\n\n  This unit is used by BGRAPaintNet to read Paint.NET images. }\nunit BGRADNetDeserial;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils;\n\ntype\n  arrayOfLongword = array of LongWord;\n\n  TTypeCategory = (ftPrimitiveType = 0, ftString = 1, ftObjectType =\n    2, ftRuntimeType = 3,\n    ftGenericType = 4, ftArrayOfObject = 5, ftArrayOfString = 6,\n    ftArrayOfPrimitiveType = 7);\n\n  TPrimitiveType = (ptNone = 0, ptBoolean = 1, ptByte = 2, ptChar = 3, ptDecimal = 5,\n    ptDouble = 6, ptInt16 = 7, ptInt32 = 8, ptInt64 = 9, ptSByte = 10, ptSingle = 11,\n    ptDateTime = 13, ptUInt16 = 14, ptUInt32 = 15, ptUInt64 = 16, ptString = 18);\n\n  TGenericArrayType = (gatSingleDimension, gatJagged, gatMultidimensional);\n\n  TDotNetDeserialization = class;\n\n  { Array of name and values }\n  ArrayOfNameValue = array of record\n    Name: string;\n    Value, valueType: string;\n  end;\n\n  { Description of a .NET field }\n  TFieldType = record\n    category: TTypeCategory;\n    primitiveType: TPrimitiveType;\n    refAssembly: LongWord;\n    Name: string;\n  end;\n\n  { Description of a .NET type }\n  TSerializedType = record\n    ClassName:   string;\n    nbFields:    integer;\n    fieldNames:  array of string;\n    fieldTypes:  array of TFieldType;\n    refAssembly: LongWord;\n  end;\n\n  { Reference to a .NET assembly }\n  TAssemblyReference = record\n    idAssembly: LongWord;\n    Name: string;\n  end;\n\n  { Abstract class for a serialized .NET object }\n  TCustomSerializedObject = class\n  protected\n    FContainer: TDotNetDeserialization;\n    function GetTypeAsString: string; virtual; abstract;\n    function GetFieldAsString(Index: LongWord): string; overload; virtual; abstract;\n    function GetFieldAsString(Name: string): string; overload;\n    function GetFieldCount: LongWord; virtual; abstract;\n    function GetFieldName(Index: LongWord): string; virtual; abstract;\n    function GetFieldTypeAsString(Index: LongWord): string; virtual; abstract;\n    function IsReferenceType(index: LongWord): boolean; virtual; abstract;\n  public\n    idObject:   LongWord;\n    refCount:   integer;\n    inToString: boolean;\n    constructor Create(container: TDotNetDeserialization); virtual;\n    property FieldCount: LongWord read GetFieldCount;\n    property FieldName[Index: LongWord]:string read GetFieldName;\n    property FieldAsString[Index: LongWord]: string read GetFieldAsString;\n    property FieldByNameAsString[Name: string]: string read GetFieldAsString;\n    property FieldTypeAsString[Index: LongWord]: string read GetFieldTypeAsString;\n    property TypeAsString: string read GetTypeAsString;\n    function GetFieldIndex(Name: string): integer;\n  end;\n\n  { Information about a serialized .NET class }\n  TSerializedClass = class(TCustomSerializedObject)\n  protected\n    function GetFieldAsString(Index: LongWord): string; override;\n    function GetFieldCount: LongWord; override;\n    function GetFieldName(Index: LongWord): string; override;\n    function GetFieldTypeAsString(Index: LongWord): string; override;\n    function IsReferenceType(index: LongWord): boolean; override;\n    function GetTypeAsString: string; override;\n  public\n    numType: integer;\n    fields:  ArrayOfNameValue;\n  end;\n\n  { Information about a serialized .NET array }\n  TSerializedArray = class(TCustomSerializedObject)\n  private\n    data:       pointer;\n    FItemSize:   LongWord;\n    function GetItemPtr(Index: LongWord): pointer;\n    procedure InitData;\n  protected\n    FArrayType: TGenericArrayType;\n    function GetFieldAsString(Index: LongWord): string; override;\n    function GetFieldCount: LongWord; override;\n    function GetFieldName(Index: LongWord): string; override;\n    function GetFieldTypeAsString(Index: LongWord): string; override;\n    function IsReferenceType(index: LongWord): boolean; override;\n    function GetTypeAsString: string; override;\n  public\n    dimensions: array of LongWord;\n    itemType:   TFieldType;\n    nbItems:    LongWord;\n    constructor Create(AContainer: TDotNetDeserialization; AItemType: TFieldType; ALength: LongWord); overload;\n    constructor Create(AContainer: TDotNetDeserialization; AArrayType: TGenericArrayType; AItemType: TFieldType; ADimensions: arrayOfLongword); overload;\n    destructor Destroy; override;\n    property ItemPtr[Index:LongWord]: pointer read GetItemPtr;\n    property ItemSize: LongWord read FItemSize;\n  end;\n\n  { Information about a serialized .NET value }\n  TSerializedValue = class(TSerializedArray)\n  protected\n    function GetIsReferenceType: boolean;\n    function GetValueAsString: string;\n    function GetTypeAsString: string; override;\n  public\n    constructor Create(AContainer: TDotNetDeserialization; AItemType: TFieldType); overload;\n    property ValueAsString: string read GetValueAsString;\n    property IsReferenceType: boolean read GetIsReferenceType;\n  end;\n\n  { Deseralize .NET objets from a stream }\n  TDotNetDeserialization = class\n    objectTypes: array of TSerializedType;\n    assemblies:  array of TAssemblyReference;\n    objects:     array of TCustomSerializedObject;\n\n    function FindClass(typeName: string): TSerializedClass;\n    function FindObject(typeName: string): TCustomSerializedObject;\n    function GetSimpleField(obj: TCustomSerializedObject; Name: string): string;\n    function GetObjectField(obj: TCustomSerializedObject; Name: string): TCustomSerializedObject; overload;\n    function GetObjectField(obj: TCustomSerializedObject; index: integer): TCustomSerializedObject; overload;\n    function GetObject(id: string): TCustomSerializedObject; overload;\n    function GetObject(id: LongWord): TCustomSerializedObject; overload;\n    function IsBoxedValue(obj: TCustomSerializedObject; index: integer): boolean;\n    function GetBoxedValue(obj: TCustomSerializedObject; index: integer): string;\n    procedure LoadFromStream(Stream: TStream);\n    procedure LoadFromFile(filename: string);\n    procedure LoadFromFileUTF8(filenameUTF8: string);\n    function ToString: string; override;\n    constructor Create;\n    destructor Destroy; override;\n    function GetTypeOfClassObject(idObject: LongWord): integer;\n  private\n    EndOfStream:      boolean;\n    ArrayFillerCount: Longword;\n    currentAutoObjectValue: LongWord;\n    function nextAutoObjectId: LongWord;\n    function LoadNextFromStream(Stream: TStream): LongWord;\n    function LoadStringFromStream(Stream: TStream): string;\n    function LoadDotNetCharFromStream(Stream: TStream): string;\n    function LoadTypeFromStream(Stream: TStream; IsRuntimeType: boolean): integer;\n    function LoadValuesFromStream(Stream: TStream; numType: integer): ArrayOfNameValue;\n    function LoadValueFromStream(Stream: TStream; const fieldType: TFieldType): string;\n    function LoadFieldType(Stream: TStream; category: TTypeCategory): TFieldType;\n  end;\n\nfunction WinReadByte(stream: TStream): byte;\nfunction WinReadWord(Stream: TStream): word;\nfunction WinReadSmallInt(Stream: TStream): smallint;\nfunction WinReadLongint(Stream: TStream): longint;\nfunction WinReadLongword(Stream: TStream): LongWord;\nfunction WinReadInt64(Stream: TStream): int64;\nfunction WinReadQWord(Stream: TStream): QWord;\n\nimplementation\n\nuses BGRAUTF8;\n\nconst\n  //block types\n  btRefTypeObject = 1;\n  btRuntimeObject = 4;\n  btExternalObject = 5;\n  btString      = 6;\n  btGenericArray = 7;\n  btBoxedPrimitiveTypeValue = 8;\n  btObjectReference = 9;\n  btNullValue   = 10;\n  btEndOfStream = 11;\n  btAssembly    = 12;\n  btArrayFiller8b = 13;\n  btArrayFiller32b = 14;\n  btArrayOfPrimitiveType = 15;\n  btArrayOfObject = 16;\n  btArrayOfString = 17;\n  btMethodCall  = 21;\n  btMethodResponse = 22;\n\n  idArrayFiller = $80000000;\n\n{$hints off}\n\nfunction WinReadByte(stream: TStream): byte;\nbegin\n  stream.Read(Result, sizeof(Result));\nend;\n\nfunction WinReadWord(Stream: TStream): word;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nfunction WinReadSmallInt(Stream: TStream): smallint;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nfunction WinReadLongint(Stream: TStream): longint;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nfunction WinReadLongword(Stream: TStream): LongWord;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nfunction WinReadInt64(Stream: TStream): int64;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nfunction WinReadQWord(Stream: TStream): QWord;\nbegin\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\n{$hints on}\n\nfunction GetFieldTypeSize(const fieldType: TFieldType): LongWord;\nbegin\n  case fieldType.category of\n    ftPrimitiveType:\n      case fieldType.primitiveType of\n        ptBoolean, ptByte,ptSByte: result := 1;\n        ptChar,ptString, ptDecimal: Result := sizeof(string);\n        ptSingle: result := sizeof(single);\n        ptDouble: result := sizeof(double);\n        ptInt16,ptUInt16: result := 2;\n        ptInt32,ptUInt32: result := 4;\n        ptInt64,ptUInt64,ptDateTime: result := 8;\n      else\n        raise Exception.Create('Unknown primitive type (' + IntToStr(\n          byte(fieldType.primitiveType)) + ')');\n      end;\n    ftString, ftObjectType, ftRuntimeType, ftGenericType, ftArrayOfObject,\n    ftArrayOfString, ftArrayOfPrimitiveType: result := 4;\n  else\n    raise Exception.Create('Unknown field type (' + IntToStr(\n      byte(fieldType.category)) + ')');\n  end;\nend;\n\nfunction IsDotNetTypeStoredAsString(const fieldType: TFieldType): boolean;\nbegin\n  result := (fieldType.category = ftPrimitiveType) and\n    (fieldType.primitiveType in [ptChar,ptString,ptDecimal]);\nend;\n\nfunction DotNetValueToString(var value; const fieldType: TFieldType): string;\nvar\n  tempByte:     byte;\n  value2bytes: record\n    case byte of\n    2: (tempWord: word);\n    3: (tempInt16: smallint);\n  end;\n  value4bytes: record\n    case byte of\n    1: (tempSingle:   single);\n    2: (tempLongWord: LongWord);\n    3: (tempLongInt: longint);\n  end;\n  value8bytes: record\n    case byte of\n    1: (tempDouble:   double);\n    2: (tempInt64:    Int64);\n    2: (tempUInt64:   QWord);\n  end;\n  tempIdObject: LongWord;\n\nbegin\n  if IsDotNetTypeStoredAsString(fieldType) then\n  begin\n    Result := pstring(@value)^;\n    exit;\n  end;\n  case fieldType.category of\n    ftPrimitiveType: case fieldType.primitiveType of\n        ptBoolean:\n        begin\n          {$hints off}\n          move(value,tempByte,sizeof(tempByte));\n          {$hints on}\n          if tempByte = 0 then\n            Result := 'False'\n          else\n          if tempByte = 1 then\n            Result := 'True'\n          else\n            raise Exception.Create('Invalid boolean value (' +\n              IntToStr(tempByte) + ')');\n        end;\n        ptByte: Result := inttostr(pbyte(@value)^);\n        ptSByte: Result := inttostr(pshortint(@value)^);\n        ptInt16,ptUInt16:\n        begin\n          {$hints off}\n          move(value, value2bytes.tempWord,sizeof(word));\n          {$hints on}\n          value2bytes.tempWord := LEtoN(value2bytes.tempWord);\n          if fieldType.primitiveType = ptInt16 then\n            Result := IntToStr(value2bytes.tempInt16)\n          else\n            Result := IntToStr(value2bytes.tempWord);\n        end;\n        ptInt32,ptUInt32,ptSingle:\n        begin\n          {$hints off}\n          move(value, value4bytes.tempLongWord,sizeof(LongWord));\n          {$hints on}\n          value4bytes.tempLongWord := LEtoN(value4bytes.tempLongWord);\n          if fieldType.primitiveType = ptInt32 then\n            Result := IntToStr(value4bytes.tempLongInt)\n          else if fieldType.primitiveType = ptUInt32 then\n            Result := IntToStr(value4bytes.tempLongWord)\n          else\n            result := FloatToStr(value4bytes.tempSingle);\n        end;\n\n        ptInt64,ptUInt64,ptDouble,ptDateTime:\n        begin\n          {$hints off}\n          move(value, value8bytes.tempUInt64,8);\n          {$hints on}\n          value8bytes.tempUInt64 := LEtoN(value8bytes.tempUInt64);\n          if fieldType.primitiveType = ptInt64 then\n            Result := IntToStr(value8bytes.tempInt64)\n          else if fieldType.primitiveType = ptUInt64 then\n            Result := IntToStr(value8bytes.tempUInt64)\n          else if fieldType.primitiveType = ptDouble then\n            result := FloatToStr(value8bytes.tempDouble)\n          else\n            Result := DateTimeToStr(\n            (value8bytes.tempUInt64 and $7FFFFFFFFFFFFFFF - 599264352000000000) / 864000000000);\n        end;\n        else\n          raise Exception.Create('Unknown primitive type (' + IntToStr(\n            byte(fieldType.primitiveType)) + ')');\n      end;\n    ftString, ftObjectType, ftRuntimeType, ftGenericType, ftArrayOfObject,\n    ftArrayOfString, ftArrayOfPrimitiveType:\n    begin\n      {$hints off}\n      move(value,tempIdObject,sizeof(tempIdObject));\n      {$hints on}\n      result := '#' + IntToStr(tempIdObject);\n    end;\n    else\n      raise Exception.Create('Unknown field type (' + IntToStr(\n        byte(fieldType.category)) + ')');\n  end;\nend;\n\nfunction PrimitiveTypeName(pt: TPrimitiveType): string;\nbegin\n  case pt of\n    ptBoolean: Result  := 'Boolean';\n    ptByte: Result     := 'Byte';\n    ptChar: Result     := 'Char';\n    ptDecimal: Result  := 'Decimal';\n    ptDouble: Result   := 'Double';\n    ptInt16: Result    := 'Int16';\n    ptInt32: Result    := 'Int32';\n    ptInt64: Result    := 'Int64';\n    ptSByte: Result    := 'SByte';\n    ptSingle: Result   := 'Single';\n    ptDateTime: Result := 'DateTime';\n    ptUInt16: Result   := 'UInt16';\n    ptUInt32: Result   := 'UInt32';\n    ptUInt64: Result   := 'UInt64';\n    ptString: Result   := 'String';\n    else\n      raise Exception.Create('Unknown primitive type (' + IntToStr(integer(pt)) + ')');\n  end;\nend;\n\nFunction DotNetTypeToString(ft: TFieldType): string;\nbegin\n  if ft.category = ftPrimitiveType then\n    result := PrimitiveTypeName(ft.primitiveType)\n  else\n    case ft.category of\n      ftString: result := 'String';\n      ftObjectType: result := 'Object';\n      ftRuntimeType: result := 'RuntimeType';\n      ftGenericType: result := 'GenericType';\n      ftArrayOfObject: result := 'Object[]';\n      ftArrayOfString: result := 'String[]';\n      ftArrayOfPrimitiveType: result := 'PrimitiveType[]';\n    else\n      raise Exception.Create('Unknown field type (' + IntToStr(\n        byte(ft.category)) + ')');\n    end;\nend;\n\n{ TCustomSerializedObject }\n\nfunction TCustomSerializedObject.GetFieldAsString(Name: string): string;\nbegin\n  result := GetFieldAsString(GetFieldIndex(Name));\nend;\n\nconstructor TCustomSerializedObject.Create(container: TDotNetDeserialization);\nbegin\n  FContainer := container;\n  refCount := 0;\nend;\n\nfunction TCustomSerializedObject.GetFieldIndex(Name: string): integer;\nvar\n  i: integer;\n  fn: string;\nbegin\n  if FieldCount = 0 then\n  begin\n    result := -1;\n    exit;\n  end;\n  //case sensitive\n  for i := 0 to FieldCount-1 do\n    if FieldName[i] = Name then\n    begin\n      Result := i;\n      exit;\n    end;\n  //case insensitive\n  for i := 0 to FieldCount-1 do\n    if compareText(FieldName[i], Name) = 0 then\n    begin\n      Result := i;\n      exit;\n    end;\n  //case sensitive inner member\n  for i := 0 to FieldCount-1 do\n  begin\n    fn := FieldName[i];\n    if (length(Name) < length(fn)) and\n      (copy(fn, length(fn) - length(Name),\n      length(Name) + 1) = '+' + Name) then\n    begin\n      Result := i;\n      exit;\n    end;\n  end;\n  //case insensitive inner member\n  for i := 0 to FieldCount-1 do\n  begin\n    fn := FieldName[i];\n    if (length(Name) < length(fn)) and\n      (compareText(copy(fn, length(fn) -\n      length(Name), length(Name) + 1), '+' + Name) = 0) then\n    begin\n      Result := i;\n      exit;\n    end;\n  end;\n  Result := -1;\nend;\n\n{ TSerializedClass }\n\nfunction TSerializedClass.GetFieldAsString(Index: LongWord): string;\nbegin\n  result := fields[Index].Value;\nend;\n\nfunction TSerializedClass.GetFieldCount: LongWord;\nbegin\n  Result:= length(fields);\nend;\n\nfunction TSerializedClass.GetFieldName(Index: LongWord): string;\nbegin\n  result := fields[Index].Name;\nend;\n\nfunction TSerializedClass.GetFieldTypeAsString(Index: LongWord): string;\nbegin\n  result := fields[Index].valueType;\nend;\n\nfunction TSerializedClass.IsReferenceType(index: LongWord): boolean;\nbegin\n  Result:= FContainer.objectTypes[numType].fieldTypes[index].category <> ftPrimitiveType;\nend;\n\nfunction TSerializedClass.GetTypeAsString: string;\nbegin\n  Result:= FContainer.objectTypes[numType].ClassName;\nend;\n\n{ TSerializedArray }\n\nprocedure TSerializedArray.InitData;\nbegin\n  FItemSize := GetFieldTypeSize(itemType);\n  getmem(data, itemSize*nbItems);\n  fillchar(data^, itemSize*nbItems, 0);\nend;\n\nfunction TSerializedArray.GetItemPtr(Index: LongWord): pointer;\nbegin\n  if index >= nbItems then\n    raise exception.Create('Index out of bounds');\n  result := pointer(pbyte(data)+Index*itemsize);\nend;\n\nfunction TSerializedArray.GetFieldAsString(Index: LongWord): string;\nbegin\n  if data = nil then\n    result := ''\n  else\n    result := DotNetValueToString(ItemPtr[index]^, itemType);\nend;\n\nfunction TSerializedArray.GetFieldCount: LongWord;\nbegin\n  Result:= nbItems;\nend;\n\nfunction TSerializedArray.GetFieldName(Index: LongWord): string;\nvar\n  r: LongWord;\nbegin\n  result := '[';\n  for r := 1 to length(dimensions) do\n  begin\n    if r <> 1 then AppendStr(result, ',');\n    AppendStr(result, inttostr(index mod dimensions[r-1]));\n    index := index div dimensions[r-1];\n  end;\n  AppendStr(result, ']');\nend;\n\n{$hints off}\nfunction TSerializedArray.GetFieldTypeAsString(Index: LongWord): string;\nbegin\n  Result:= DotNetTypeToString(itemType);\nend;\n{$hints on}\n\n{$hints off}\nfunction TSerializedArray.IsReferenceType(index: LongWord): boolean;\nbegin\n  Result:= itemType.category <> ftPrimitiveType;\nend;\n{$hints on}\n\nfunction TSerializedArray.GetTypeAsString: string;\nvar\n  i: Integer;\nbegin\n  Result:= DotNetTypeToString(itemType)+'[';\n  for i := 2 to length(dimensions) do\n    AppendStr(result, ',');\n  AppendStr(result, ']');\nend;\n\nconstructor TSerializedArray.Create(AContainer: TDotNetDeserialization; AItemType: TFieldType; ALength: LongWord);\nbegin\n  inherited Create(AContainer);\n  setlength(dimensions,1);\n  dimensions[0] := ALength;\n  nbItems := ALength;\n  FArrayType := gatSingleDimension;\n  itemType := AItemType;\n  InitData;\nend;\n\nconstructor TSerializedArray.Create(AContainer: TDotNetDeserialization; AArrayType: TGenericArrayType; AItemType: TFieldType;\n  ADimensions: arrayOfLongword);\nvar n: LongWord;\nbegin\n  inherited Create(AContainer);\n  setlength(dimensions, length(ADimensions));\n  nbItems := 1;\n  if length(ADimensions) <> 0 then\n    for n := 0 to length(ADimensions)-1 do\n    begin\n      dimensions[n] := ADimensions[n];\n      nbItems := nbItems * ADimensions[n];\n    end;\n  FArrayType := AArrayType;\n  itemType := AItemType;\n  InitData;\nend;\n\ndestructor TSerializedArray.Destroy;\nvar ps: PString;\n  n: LongWord;\nbegin\n  if IsDotNetTypeStoredAsString(itemType) and (nbItems <> 0) then\n  begin\n    ps := PString(data);\n    for n := 1 to nbItems do\n    begin\n      ps^ := '';\n      inc(ps);\n    end;\n  end;\n  freemem(data);\n  inherited Destroy;\nend;\n\n{ TSerializedValue }\n\nfunction TSerializedValue.GetIsReferenceType: boolean;\nbegin\n  result := inherited IsReferenceType(0);\nend;\n\nfunction TSerializedValue.GetValueAsString: string;\nbegin\n  result := GetFieldAsString(0);\nend;\n\nfunction TSerializedValue.GetTypeAsString: string;\nbegin\n  Result:= GetFieldTypeAsString(0);\nend;\n\nconstructor TSerializedValue.Create(AContainer: TDotNetDeserialization;\n  AItemType: TFieldType);\nbegin\n  inherited Create(AContainer,AItemType,1);\nend;\n\n{ TDotNetDeserialization }\n\nfunction TDotNetDeserialization.FindClass(typeName: string): TSerializedClass;\nvar obj: TCustomSerializedObject;\nbegin\n  obj := FindObject(typeName);\n  if obj is TSerializedClass then\n    result := obj as TSerializedClass\n  else\n    raise exception.Create('FindClass: found object is not a class');\nend;\n\nfunction TDotNetDeserialization.FindObject(typeName: string): TCustomSerializedObject;\nvar\n  i:   integer;\n  comparedType: string;\nbegin\n  for i := 0 to high(objects) do\n  begin\n    comparedType := objects[i].TypeAsString;\n    if (comparedType = typeName) or\n      ( (length(typeName) < length(comparedType) ) and\n        (copy(comparedType, length(comparedType) - length(typeName),\n        length(typeName) + 1) = '.' + typeName) ) then\n    begin\n      Result := objects[i];\n      exit;\n    end;\n  end;\n  Result := nil;\nend;\n\nfunction TDotNetDeserialization.GetSimpleField(obj: TCustomSerializedObject;\n  Name: string): string;\nvar\n  i,idxSlash: integer;\n  tempSub: TCustomSerializedObject;\nbegin\n  i := obj.GetFieldIndex(Name);\n  if i = -1 then\n  begin\n    idxSlash := pos('\\',name);\n    if idxSlash <> 0 then\n    begin\n      tempSub := GetObjectField(obj,copy(name,1,idxSlash-1));\n      if tempSub <> nil then\n      begin\n        result := GetSimpleField(tempSub,copy(name,idxSlash+1,length(name)-idxSlash));\n        exit;\n      end;\n    end;\n    Result := ''\n  end\n  else\n  begin\n    if IsBoxedValue(obj, i) then\n      Result := GetBoxedValue(obj, i)\n    else\n      Result := obj.FieldAsString[i];\n  end;\nend;\n\nfunction TDotNetDeserialization.GetObjectField(obj: TCustomSerializedObject;\n  Name: string): TCustomSerializedObject;\nvar\n  i: integer;\n  idxSlash: LongInt;\n  tempSub: TCustomSerializedObject;\nbegin\n  i := obj.GetFieldIndex(Name);\n  if i = -1 then\n  begin\n    idxSlash := pos('\\',name);\n    if idxSlash <> 0 then\n    begin\n      tempSub := GetObjectField(obj,copy(name,1,idxSlash-1));\n      if tempSub <> nil then\n      begin\n        result := GetObjectField(tempSub,copy(name,idxSlash+1,length(name)-idxSlash));\n        exit;\n      end;\n    end;\n    Result := nil\n  end\n  else\n  begin\n    if not obj.IsReferenceType(i) then\n      raise Exception.Create('GetObjectField: Not a reference type');\n    Result := GetObject(obj.FieldAsString[i]);\n  end;\nend;\n\nfunction TDotNetDeserialization.GetObjectField(obj: TCustomSerializedObject;\n  index: integer): TCustomSerializedObject;\nbegin\n  if not obj.IsReferenceType(index) then\n    raise Exception.Create('GetObjectField: Not a reference type');\n  Result := GetObject(obj.FieldAsString[index]);\nend;\n\nfunction TDotNetDeserialization.GetObject(id: string): TCustomSerializedObject;\nvar\n  idObj: LongWord;\nbegin\n  if copy(id, 1, 1) = '#' then\n    Delete(id, 1, 1);\n  idObj  := StrToInt64(id);\n  Result := GetObject(idObj);\nend;\n\nfunction TDotNetDeserialization.GetObject(id: LongWord): TCustomSerializedObject;\nvar\n  i: integer;\nbegin\n  for i := 0 to high(objects) do\n    if objects[i].idObject = id then\n    begin\n      Result := objects[i];\n      exit;\n    end;\n  Result := nil;\nend;\n\nfunction TDotNetDeserialization.IsBoxedValue(obj: TCustomSerializedObject;\n  index: integer): boolean;\nvar\n  subObj: TCustomSerializedObject;\nbegin\n  if not obj.IsReferenceType(index) then\n  begin\n    Result := False;\n    exit;\n  end;\n  subObj := GetObject(obj.FieldAsString[index]);\n  if subObj = nil then //suppose Nothing is a boxed value\n  begin\n    Result := True;\n    exit;\n  end;\n  Result := subObj is TSerializedValue;\nend;\n\nfunction TDotNetDeserialization.GetBoxedValue(obj: TCustomSerializedObject;\n  index: integer): string;\nvar\n  subObj: TCustomSerializedObject;\nbegin\n  if not obj.IsReferenceType(index) then\n    raise Exception.Create('GetBoxedValue: Not a reference type');\n  subObj := GetObject(obj.FieldAsString[index]);\n  if subObj = nil then\n  begin\n    Result := ''; //empty value\n    exit;\n  end;\n  if (subObj is TSerializedValue) and not (subObj as TSerializedValue).IsReferenceType then\n    Result := (subObj as TSerializedValue).ValueAsString\n  else\n    raise Exception.Create('GetBoxedValue: Not a primitive type');\nend;\n\nprocedure TDotNetDeserialization.LoadFromStream(Stream: TStream);\nvar\n  header: packed record\n    blockId: byte;\n    value1, value2, value3, value4: longint;\n  end;\n  curStreamPosition, prevStreamPosition: int64;\nbegin\n  {$hints off}\n  if Stream.Read(header, sizeof(header)) <> sizeof(header) then\n    raise Exception.Create('Invalid header size');\n  if (header.blockId <> 0) or (header.value1 <> 1) or (header.value2 <> -1) or\n    (header.value3 <> 1) or (header.value4 <> 0) then\n    raise Exception.Create('Invalid header format');\n  {$hints on}\n\n  EndOfStream := False;\n  curStreamPosition := Stream.Position;\n  try\n    while (Stream.Position < Stream.Size) and not EndOfStream do\n    begin\n      prevStreamPosition := curStreamPosition;\n      curStreamPosition  := Stream.Position;\n      LoadNextFromStream(Stream);\n    end;\n  except\n    on ex: Exception do\n      raise Exception.Create('Error while loading serialized data at position ' +\n        IntToStr(stream.Position) + ' (block starting at ' +\n        IntToStr(curStreamPosition) + ', previous block at ' +\n        IntToStr(prevStreamPosition) + '). ' + ex.message);\n  end;\nend;\n\nprocedure TDotNetDeserialization.LoadFromFile(filename: string);\nvar\n  stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(SysToUTF8(filename), fmOpenRead);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TDotNetDeserialization.LoadFromFileUTF8(filenameUTF8: string);\nvar\n  stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(filenameUTF8, fmOpenRead);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nfunction TDotNetDeserialization.ToString: string;\n\n  function ObjectToString(num: integer; expectedType: string;\n    tab: string; main: boolean): string;\n  var\n    j, k:   integer;\n    subId:  LongWord;\n    subNum: integer;\n    objType, subExpectedType: string;\n    fieldTypeStr: string;\n  begin\n    Result := '';\n    if (num < 0) or (num > high(objects)) then\n      raise Exception.Create('Index out of bounds');\n    with objects[num] do  //here array is not changed so it won't move\n    begin\n      if inToString then\n      begin\n        if main then\n          Result := ''\n        else\n          Result := '#' + IntToStr(idObject) + LineEnding;\n        exit;\n      end;\n      inToString := True;\n      objType := TypeAsString;\n      if main then\n      begin\n        AppendStr(Result, tab + 'Object');\n        AppendStr(Result, ' #' + IntToStr(idObject));\n        if (objType = '') or (objType = expectedType) then\n          AppendStr(Result, ' = ')\n        else\n          AppendStr(Result, ' As ' + objType + ' = ');\n      end\n      else\n      begin\n        if (objType = '') or (objType = expectedType) then\n          Result := ''\n        else\n          Result := '(' + objType + ') ';\n        if (idObject < idArrayFiller) and (refCount > 0) then\n          AppendStr(Result, '#' + IntToStr(idObject) + ' = ');\n      end;\n      if (length(objType) > 2) and (copy(objType, length(objType) - 1, 2) = '[]') then\n        subExpectedType := copy(objType, 1, length(objType) - 2)\n      else\n        subExpectedType := '';\n\n      if not main and (objects[num] is TSerializedValue) then\n      begin\n        AppendStr(Result, (objects[num] as TSerializedValue).ValueAsString + LineEnding);\n      end\n      else\n      if (FieldCount = 0) then\n      begin\n        AppendStr(Result, '{}' + LineEnding);\n      end\n      else\n      begin\n        AppendStr(Result, '{' + LineEnding);\n        for j := 0 to FieldCount-1 do\n        begin\n          AppendStr(Result, tab + '  ' + FieldName[j]);\n          fieldTypeStr := FieldTypeAsString[j];\n          if (fieldTypeStr <> '') and (fieldTypeStr <> subExpectedType) and\n            not ((subExpectedType = '') and ((fieldTypeStr = 'Int32') or\n            (fieldTypeStr = 'Boolean') or (fieldTypeStr = 'Double'))) then\n            AppendStr(Result, ' As ' + fieldTypeStr);\n          AppendStr(Result, ' = ');\n          if not IsReferenceType(j) then\n            AppendStr(Result, FieldAsString[j] + lineending)\n          else\n          begin\n            try\n              subId  := StrToInt64(copy(fieldAsString[j], 2, length(fieldAsString[j]) - 1));\n              if subId = 0 then AppendStr(Result, 'null'+LineEnding) else\n              begin\n                begin\n                  subNum := -1;\n                  for k := 0 to high(objects) do\n                  if (objects[k].idObject = subId) then\n                  begin\n                    subNum := k;\n                    break;\n                  end;\n                end;\n                if subNum = -1 then\n                  AppendStr(Result, '(Not found) #' + IntToStr(subId)+LineEnding)\n                else\n                  AppendStr(Result, objectToString(subNum, fieldTypeStr, tab + '  ', False));\n              end;\n            except\n              AppendStr(Result, '!' + fieldAsString[j]+'!' +LineEnding)\n            end;\n          end;\n        end;\n        AppendStr(Result, tab + '}' + LineEnding);\n        if main then\n          AppendStr(Result, LineEnding);\n      end;\n    end;\n  end;\n\nvar\n  i: integer;\nbegin\n  Result := '';\n  for i := 0 to high(assemblies) do\n    AppendStr(Result, 'Imports ' + assemblies[i].Name + LineEnding);\n  AppendStr(Result, lineEnding);\n  for i := 0 to high(objects) do\n    objects[i].inToString := False;\n  for i := 0 to high(objects) do\n    AppendStr(Result, ObjectToString(i, 'Object', '', True));\nend;\n\nconstructor TDotNetDeserialization.Create;\nbegin\n  currentAutoObjectValue := idArrayFiller + 1;\nend;\n\ndestructor TDotNetDeserialization.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(objects) do\n    objects[i].Free;\n  inherited Destroy;\nend;\n\nfunction TDotNetDeserialization.GetTypeOfClassObject(idObject: LongWord\n  ): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(objects) do\n    if objects[i].idObject = idObject then\n    begin\n      if objects[i] is TSerializedClass then\n      begin\n        result := (objects[i] as TSerializedClass).numType;\n        exit;\n      end\n      else\n        raise exception.Create('GetTypeOfClassObject: Specified object is not of class type');\n    end;\n  raise exception.Create('GetTypeOfClassObject: Object not found');\nend;\n\nfunction TDotNetDeserialization.nextAutoObjectId: LongWord;\nbegin\n  Inc(currentAutoObjectValue);\n  Result := currentAutoObjectValue;\nend;\n\nfunction TDotNetDeserialization.LoadNextFromStream(Stream: TStream): LongWord;\nvar\n  blockType:    byte;\n  idRefObject, tempIdObject: LongWord;\n  tempType:     TFieldType;\n  arrayCount, arrayIndex,FillZeroCount : LongWord;\n  tempAnyObj: TCustomSerializedObject;\n  newClassObj: TSerializedClass;\n  newValueObj: TSerializedValue;\n  newArrayObj: TSerializedArray;\n  genericArrayType: TGenericArrayType;\n  genericArrayRank: LongWord;\n  genericArrayDims: array of LongWord;\n  genericArrayItemType: TFieldType;\n\n  function GetArrayCellNumber(index: LongWord): string;\n  var r: LongWord;\n  begin\n    result := '';\n    for r := 1 to genericArrayRank do\n    begin\n      if r <> 1 then AppendStr(result, ',');\n      AppendStr(result, inttostr(index mod genericArrayDims[r-1]));\n      index := index div genericArrayDims[r-1];\n    end;\n  end;\n\nbegin\n  Result := 0; //idObject or zero\n  blockType := WinReadByte(Stream);\n  case blockType of\n\n    btAssembly:\n    begin\n      setlength(assemblies, length(assemblies) + 1);\n      with assemblies[high(assemblies)] do\n      begin\n        idAssembly := WinReadLongword(Stream);\n        Name := LoadStringFromStream(Stream);\n      end;\n    end;\n\n    btRuntimeObject, btExternalObject:\n    begin\n      newClassObj := TSerializedClass.Create(self);\n      setlength(objects, length(objects) + 1);\n      objects[high(objects)] := newClassObj;\n      with newClassObj do\n      begin\n        idObject := WinReadLongword(Stream);\n        Result   := idObject;\n        numType  := LoadTypeFromStream(Stream, blockType = btRuntimeObject);\n        fields   := LoadValuesFromStream(Stream, numType);\n      end;\n    end;\n\n    btRefTypeObject:\n    begin\n      newClassObj := TSerializedClass.Create(self);\n      setlength(objects, length(objects) + 1);\n      objects[high(objects)] := newClassObj;\n      with newClassObj do\n      begin\n        idObject    := WinReadLongword(Stream);\n        Result      := idObject;\n        idRefObject := WinReadLongword(Stream);\n        numType     := GetTypeOfClassObject(idRefObject);\n        fields      := LoadValuesFromStream(Stream, numType);\n      end;\n    end;\n\n    btString:\n    begin\n      tempType.primitiveType := ptString;\n      tempType.category := ftPrimitiveType;\n      tempType.Name := PrimitiveTypeName(ptString);\n      tempType.refAssembly := 0;\n\n      newValueObj := TSerializedValue.Create(self,tempType);\n      setlength(objects, length(objects) + 1);\n      objects[high(objects)] := newValueObj;\n      with newValueObj do\n      begin\n        idObject := WinReadLongword(Stream);\n        Result  := idObject;\n        pstring(data)^ := LoadStringFromStream(Stream);\n      end;\n    end;\n\n    btBoxedPrimitiveTypeValue:\n    begin\n      try\n        tempType.category    := ftPrimitiveType;\n        tempType.refAssembly := 0;\n        tempType.primitiveType := TPrimitiveType(WinReadByte(stream));\n        tempType.Name := PrimitiveTypeName(tempType.primitiveType);\n\n        newValueObj := TSerializedValue.Create(self,tempType);\n        setlength(objects, length(objects) + 1);\n        objects[high(objects)] := newValueObj;\n\n        with newValueObj do\n        begin\n          idObject := nextAutoObjectId;\n          Result   := idObject;\n\n          if IsDotNetTypeStoredAsString(tempType) then\n            pstring(data)^ := LoadValueFromStream(Stream, tempType)\n          else\n            Stream.Read(data^, itemSize);\n        end;\n      except\n        on ex: Exception do\n          raise Exception.Create('Error while reading boxed primitive values. ' +\n            ex.Message);\n      end;\n    end;\n\n    btObjectReference:\n    begin\n      result := WinReadLongword(Stream);\n      tempAnyObj := GetObject(Result);\n      if tempAnyObj <> nil then\n        Inc(tempAnyObj.refCount);\n    end;\n\n    btNullValue: Result := 0;\n\n    btArrayOfPrimitiveType:\n    begin\n      try\n        result := WinReadLongword(Stream);\n        arrayCount := WinReadLongword(Stream);\n\n        tempType.category    := ftPrimitiveType;\n        tempType.refAssembly := 0;\n        tempType.primitiveType := TPrimitiveType(WinReadByte(stream));\n        tempType.Name := PrimitiveTypeName(tempType.primitiveType);\n\n        newArrayObj := TSerializedArray.Create(self,tempType,arrayCount);\n        setlength(objects, length(objects) + 1);\n        objects[high(objects)] := newArrayObj;\n        with newArrayObj do\n        begin\n          idObject := result;\n\n          if arrayCount <> 0 then\n          begin\n            if IsDotNetTypeStoredAsString(tempType) then\n            begin\n              for arrayIndex := 0 to arrayCount - 1 do\n                pstring(ItemPtr[arrayIndex])^ := LoadValueFromStream(Stream, tempType);\n            end else\n            begin\n              for arrayIndex := 0 to arrayCount - 1 do\n                stream.Read(ItemPtr[arrayIndex]^, itemSize);\n            end;\n          end;\n        end;\n      except\n        on ex: Exception do\n          raise Exception.Create('Error while reading array of primitive values. ' +\n            ex.Message);\n      end;\n    end;\n\n    btArrayOfObject,btArrayOfString:\n    begin\n      try\n        result := WinReadLongword(Stream);\n        arrayCount := WinReadLongword(Stream);\n\n        if blockType = btArrayOfObject then\n          tempType.category := ftObjectType\n        else\n          tempType.category := ftString;\n\n        tempType.refAssembly := 0;\n        tempType.primitiveType := ptNone;\n        tempType.Name := DotNetTypeToString(tempType);\n\n        newArrayObj := TSerializedArray.Create(self,tempType,arrayCount);\n        setlength(objects, length(objects) + 1);\n        objects[high(objects)] := newArrayObj;\n\n        with newArrayObj do\n        begin\n          idObject:= result;\n          FillZeroCount := 0;\n          if arrayCount <> 0 then\n            for arrayIndex := 0 to arrayCount - 1 do\n            begin\n              if FillZeroCount > 0 then\n                Dec(FillZeroCount)\n              else\n              begin\n                tempIdObject := LoadNextFromStream(Stream);\n                if tempIdObject = idArrayFiller then\n                begin\n                  tempIdObject     := 0;\n                  FillZeroCount    := ArrayFillerCount;\n                  ArrayFillerCount := 0;\n                end;\n                if FillZeroCount > 0 then\n                  Dec(FillZeroCount)\n                else\n                  plongword(ItemPtr[arrayIndex])^ := tempIdObject;\n              end;\n            end;\n        end;\n      except\n        on ex: Exception do\n          raise Exception.Create('Error while reading array of object. ' + ex.Message);\n      end;\n    end;\n\n    btArrayFiller8b, btArrayFiller32b:\n    begin\n      Result     := idArrayFiller;\n      arrayCount := 0;\n      if blockType = btArrayFiller8b then\n        arrayCount := WinReadByte(Stream)\n      else\n        arrayCount := WinReadLongWord(Stream);\n      ArrayFillerCount := arraycount;\n    end;\n\n    btGenericArray:\n    begin\n        try\n          result := WinReadLongword(Stream);\n          genericArrayType := TGenericArrayType( WinReadByte(Stream) );\n          genericArrayRank := WinReadLongword(Stream);\n          setlength(genericArrayDims,genericArrayRank);\n          arrayCount := 0;\n          if genericArrayRank <> 0 then\n            for arrayIndex := 0 to genericArrayRank-1 do\n            begin\n              genericArrayDims[arrayIndex] := WinReadLongword(Stream);\n              if arrayIndex=0 then\n                arrayCount := genericArrayDims[arrayIndex]\n              else\n                arrayCount := arrayCount * genericArrayDims[arrayIndex];\n            end;\n          genericArrayItemType.category := TTypeCategory(WinReadByte(Stream));\n          genericArrayItemType := LoadFieldType(stream,genericArrayItemType.category);\n\n          newArrayObj := TSerializedArray.Create(self,genericArrayType,genericArrayItemType,genericArrayDims);\n          setlength(objects, length(objects) + 1);\n          objects[high(objects)] := newArrayObj;\n          newArrayObj.idObject := result;\n\n          FillZeroCount := 0;\n          if arrayCount <> 0 then\n            for arrayIndex := 0 to arrayCount - 1 do\n            begin\n              if IsDotNetTypeStoredAsString(genericArrayItemType) then\n                PString(newArrayObj.ItemPtr[arrayIndex])^ := LoadValueFromStream(Stream,genericArrayItemType)\n              else\n              if genericArrayItemType.category = ftPrimitiveType then\n                Stream.Read(newArrayObj.ItemPtr[arrayIndex]^, newArrayObj.ItemSize)\n              else\n              begin\n                if FillZeroCount > 0 then\n                  Dec(FillZeroCount)\n                else\n                begin\n                  tempIdObject := LoadNextFromStream(Stream);\n                  if tempIdObject = idArrayFiller then\n                  begin\n                    tempIdObject     := 0;\n                    FillZeroCount    := ArrayFillerCount;\n                    ArrayFillerCount := 0;\n                  end;\n                  if FillZeroCount > 0 then\n                    Dec(FillZeroCount)\n                  else\n                    plongword(newArrayObj.ItemPtr[arrayIndex])^ := tempIdObject;\n                end;\n              end;\n            end;\n        except\n          on ex: Exception do\n            raise Exception.Create('Error while reading array of object. ' + ex.Message);\n        end;\n      end;\n\n    btMethodCall, btMethodResponse:\n      raise Exception.Create('Method or method response not supported');\n\n    btEndOfStream: EndOfStream := True;\n\n    else\n      raise Exception.Create('Unknown block type (' + IntToStr(blockType) + ')');\n  end;\nend;\n\nfunction TDotNetDeserialization.LoadStringFromStream(Stream: TStream): string;\nvar\n  byteLength, shift: byte;\n  fullLength: integer;\n  utf8value:  string;\nbegin\n  fullLength := 0;\n  shift      := 0;\n     {$hints off}\n  repeat\n    Stream.Read(byteLength, 1);\n    Inc(fullLength, (byteLength and 127) shl shift);\n    shift := shift + 7;\n  until (byteLength < 128) or (shift > 24);\n     {$hints on}\n  setlength(utf8value, fullLength);\n  if Stream.Read(utf8value[1], fullLength) <> fullLength then\n    raise Exception.Create('String length error');\n  Result := utf8value;\nend;\n\nfunction TDotNetDeserialization.LoadDotNetCharFromStream(Stream: TStream\n  ): string;\nvar\n  tempByte: byte;\n  dataLen: Byte;\n  utf8value: string;\nbegin\n  tempByte:= WinReadByte(Stream);\n\n  if tempByte and $80 = 0 then\n    dataLen := 1\n  else\n  if tempByte and $E0 = $C0 then\n    dataLen := 2\n  else\n  if tempByte and $F0 = $E0 then\n    dataLen := 3\n  else\n  if tempByte and $F8 = $F0 then\n    dataLen := 4\n  else\n    raise Exception.Create('Invalid UTF8 char');\n\n  setlength(utf8value, dataLen);\n  utf8value[1] := char(tempByte);\n  Stream.Read(utf8value[2], dataLen - 1);\n  Result := utf8value;\nend;\n\nfunction TDotNetDeserialization.LoadTypeFromStream(Stream: TStream;\n  IsRuntimeType: boolean): integer;\nvar\n  i: integer;\nbegin\n  try\n    setlength(objectTypes, length(objectTypes) + 1);\n    Result := high(objectTypes);\n    with objectTypes[Result] do\n    begin\n      ClassName := LoadStringFromStream(Stream);\n      nbFields := WinReadLongword(Stream);\n      setlength(fieldNames, nbFields);\n      setlength(fieldTypes, nbFields);\n      for i := 0 to nbFields - 1 do\n        fieldNames[i] := LoadStringFromStream(Stream);\n      for i := 0 to nbFields - 1 do\n        fieldTypes[i].category := TTypeCategory(WinReadByte(Stream));\n      for i := 0 to nbFields - 1 do\n        fieldTypes[i] := LoadFieldType(Stream,fieldTypes[i].category);\n      if isRuntimeType then\n        refAssembly := 0\n      else\n        refAssembly := WinReadLongword(Stream);\n    end;\n  except\n    on ex: Exception do\n      raise Exception.Create('Error while reading object type definition. ' +\n        ex.Message);\n  end;\nend;\n\nfunction TDotNetDeserialization.LoadValuesFromStream(Stream: TStream;\n  numType: integer): ArrayOfNameValue;\nvar\n  i:  integer;\n  ot: TSerializedType;\nbegin\n  if (numType < 0) or (numType > high(objectTypes)) then\n    raise Exception.Create('Type number out of bounds (' + IntToStr(numType) + ')');\n  ot := objectTypes[numType]; //use temp because array address may change\n  try\n    with ot do\n    begin\n      setlength(Result, nbFields);\n      for i := 0 to nbFields - 1 do\n      begin\n        Result[i].Name      := fieldNames[i];\n        Result[i].valueType := fieldTypes[i].Name;\n        Result[i].Value     := LoadValueFromStream(Stream, fieldTypes[i]);\n      end;\n    end;\n  except\n    on ex: Exception do\n      raise Exception.Create('Error while reading values of object of type ' +\n        ot.ClassName + '. ' + ex.Message);\n  end;\nend;\n\nfunction TDotNetDeserialization.LoadValueFromStream(Stream: TStream;\n  const fieldType: TFieldType): string;\nvar\n  data : record\n    case byte of\n    1: (ptr: pointer);\n    2: (bytes: array[0..7] of byte);\n    end;\n  dataLen: LongWord;\n  tempIdObject: LongWord;\nbegin\n  try\n    if fieldType.Category = ftPrimitiveType then\n    begin\n      case fieldType.primitiveType of\n        ptChar: Result := LoadDotNetCharFromStream(Stream);\n        ptString, ptDecimal: Result := LoadStringFromStream(Stream);\n      else\n        begin\n          dataLen := GetFieldTypeSize(fieldType);\n          {$hints off}\n          stream.read(data,dataLen);\n          {$hints on}\n          result := DotNetValueToString(data,fieldType);\n        end;\n      end;\n    end else\n    if fieldType.Category in [ftString, ftObjectType, ftRuntimeType, ftGenericType, ftArrayOfObject,\n        ftArrayOfString, ftArrayOfPrimitiveType] then\n    begin\n      tempIdObject := LoadNextFromStream(stream);\n      Result := '#' + IntToStr(tempIdObject);\n    end else\n      raise Exception.Create('Unknown field type (' + IntToStr(\n        byte(fieldType.category)) + ')');\n  except\n    on ex: Exception do\n      raise Exception.Create('Error while reading object value. ' + ex.Message);\n  end;\nend;\n\nfunction TDotNetDeserialization.LoadFieldType(Stream: TStream; category: TTypeCategory\n  ): TFieldType;\nbegin\n  result.category := category;\n  result.Name := '';\n  result.refAssembly := 0;\n  result.primitiveType := ptNone;\n  case category of\n    ftPrimitiveType, ftArrayOfPrimitiveType:\n    begin\n      result.primitiveType := TPrimitiveType(WinReadByte(stream));\n      result.Name := PrimitiveTypeName(result.primitiveType);\n      if result.category = ftArrayOfPrimitiveType then\n        AppendStr(result.Name, '[]');\n    end;\n    ftString: result.Name      := 'String';\n    ftObjectType: result.Name  := 'Object';\n    ftRuntimeType: result.Name := LoadStringFromStream(Stream);\n    ftGenericType:\n    begin\n      result.Name := LoadStringFromStream(Stream);\n      result.refAssembly := WinReadLongword(Stream);\n    end;\n    ftArrayOfObject: result.Name := 'Object[]';\n    ftArrayOfString: result.Name := 'String[]';\n    else\n      raise Exception.Create('Unknown field type tag (' + IntToStr(\n        byte(result.category)) + ')');\n  end;\nend;\n\ninitialization\n\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafillinfo.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Generic class to hold a shape to be filled as well as the implementation\n  for basic shapes }\nunit BGRAFillInfo;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes;\n\nconst\n  AntialiasPrecision = 16;\n  AntialiasPrecisionShift = 4;\n\ntype\n  TDensity = word;\n  PDensity = ^TDensity;\n\ntype\n  { Abstract class to provide fill information for any shape }\n  TFillShapeInfo = class(TBGRACustomFillInfo)\n    protected\n      FPointInsideInter : ArrayOfTIntersectionInfo;\n      //compute intersections. the array must be big enough\n      procedure ComputeIntersection(cury: single; var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;\n      //sort from left to right\n      procedure SortIntersection(var inter: ArrayOfTIntersectionInfo; nbInter: integer); virtual;\n      procedure InternalQuickSortIntersection(inter0: pointer; idxL, idxH: Integer); virtual;\n      //apply non-zero winding rule. it can change the number of intersections\n      procedure ConvertFromNonZeroWinding(var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;\n      //returns maximum of intersection per line\n      function NbMaxIntersection: integer; virtual;\n\n    public\n      destructor Destroy; override;\n\n      //returns true if the same segment number can be curved\n      function SegmentsCurved: boolean; override;\n\n      //returns integer bounds\n      function GetBounds: TRect; override;\n\n      //check if the point is inside the filling zone\n      function IsPointInside(x,y: single; windingMode: boolean): boolean; override;\n\n      //create an array that will contain computed intersections.\n      //you may augment, in this case, use CreateIntersectionInfo for new items\n      function CreateIntersectionArray: ArrayOfTIntersectionInfo; override;\n      function CreateIntersectionInfo: TIntersectionInfo; override; //creates a single info\n      procedure FreeIntersectionArray(var inter: ArrayOfTIntersectionInfo); override;\n\n      //fill a previously created array of intersections with actual intersections at the current y coordinate.\n      //nbInter gets the number of computed intersections\n      procedure ComputeAndSort(cury: single; var inter: ArrayOfTIntersectionInfo; out nbInter: integer; windingMode: boolean); override;\n\n      //can be called after ComputeAndSort or ComputeIntersection to determine the current horizontal slice\n      //so that it can be checked if the intermediates scanlines can be skipped\n      function GetSliceIndex: integer; override;\n\n  end;\n\n  { Fill information for an ellipse }\n  TFillEllipseInfo = class(TFillShapeInfo)\n  private\n    FX, FY, FRX, FRY: single;\n    FSliceIndex: integer;\n    function GetCenter: TPointF;\n  protected\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    WindingFactor: integer;\n    constructor Create(x, y, rx, ry: single);\n    function GetBounds: TRect; override;\n    function SegmentsCurved: boolean; override;\n    function GetSliceIndex: integer; override;\n    property Center: TPointF read GetCenter;\n    property RadiusX: single read FRX;\n    property RadiusY: single read FRY;\n  end;\n\n  { Fill information for the border of an ellipse }\n  TFillBorderEllipseInfo = class(TFillShapeInfo)\n  private\n    FInnerBorder, FOuterBorder: TFillEllipseInfo;\n  protected\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    constructor Create(x, y, rx, ry, w: single);\n    function GetBounds: TRect; override;\n    function SegmentsCurved: boolean; override;\n    destructor Destroy; override;\n    function GetSliceIndex: integer; override;\n    property InnerBorder: TFillEllipseInfo read FInnerBorder;\n    property OuterBorder: TFillEllipseInfo read FOuterBorder;\n  end;\n\n  { Fill information for a round rectangle }\n  TFillRoundRectangleInfo = class(TFillShapeInfo)\n  private\n    FX1, FY1, FX2, FY2, FRX, FRY: single;\n    FOptions: TRoundRectangleOptions;\n    function GetBottomRight: TPointF;\n    function GetTopLeft: TPointF;\n  protected\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    WindingFactor: integer;\n    constructor Create(x1, y1, x2, y2, rx, ry: single; options: TRoundRectangleOptions; APixelCenteredCoordinates: boolean = true);\n    function SegmentsCurved: boolean; override;\n    function GetBounds: TRect; override;\n    property TopLeft: TPointF read GetTopLeft;\n    property BottomRight: TPointF read GetBottomRight;\n    property RadiusX: single read FRX;\n    property RadiusY: single read FRY;\n  end;\n\n  { Fill information for rectangle }\n  TFillRectangleInfo = class(TFillShapeInfo)\n  private\n    FX1, FY1, FX2, FY2: single;\n    function GetBottomRight: TPointF;\n    function GetTopLeft: TPointF;\n  protected\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    WindingFactor: integer;\n    constructor Create(x1, y1, x2, y2: single; APixelCenteredCoordinates: boolean = true);\n    function GetBounds: TRect; override;\n    property TopLeft: TPointF read GetTopLeft;\n    property BottomRight: TPointF read GetBottomRight;\n  end;\n\n  { Fill information for the border of a round rectangle }\n  TFillBorderRoundRectInfo = class(TFillShapeInfo)\n  protected\n    FInnerBorder, FOuterBorder: TFillRoundRectangleInfo;\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    constructor Create(x1, y1, x2, y2, rx, ry, w: single; options: TRoundRectangleOptions; APixelCenteredCoordinates: boolean = true);\n    function GetBounds: TRect; override;\n    function SegmentsCurved: boolean; override;\n    destructor Destroy; override;\n    property InnerBorder: TFillRoundRectangleInfo read FInnerBorder;\n    property OuterBorder: TFillRoundRectangleInfo read FOuterBorder;\n  end;\n\n  PCustomPointRecord = ^TCustomPointRecord;\n  { Base record to describe a point in a polygon to be filled }\n  TCustomPointRecord = record\n    originalIndex: integer;\n    slope: single;\n    empty: boolean;\n    next: integer;\n    winding: integer;\n    includeStartingPoint,includeEndingPoint: boolean;\n    data: pointer;\n    case boolean of\n    false: (x,y,x2,y2: single);\n    true: (coord,coord2: TPointF);\n  end;\n\n  { Abstract class to provide fill information for a polygon }\n  TCustomFillPolyInfo = class(TFillShapeInfo)\n  private\n    function GetNbPoints: integer;\n  protected\n    FPoints: array of TCustomPointRecord;\n    FSegmentsDataCreated: boolean;\n    FBoundsF: TRectF;\n    function NbMaxIntersection: integer; override;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer; {%H-}dy: single; {%H-}AData: pointer); virtual;\n    procedure InitPoints(const points: array of TPointF);\n    procedure CreateSegmentsData; virtual;\n  public\n    constructor Create(const points: array of TPointF; APixelCenteredCoordinates: boolean = true);\n    destructor Destroy; override;\n    function CreateIntersectionArray: ArrayOfTIntersectionInfo; override;\n    function CreateSegmentData({%H-}numPt, {%H-}nextPt: integer; {%H-}ASeg: PCustomPointRecord): pointer; virtual;\n    procedure FreeSegmentData(data: pointer); virtual;\n    function GetBounds: TRect; override;\n    function GetBoundsF: TRectF;\n    property NbPoints: integer read GetNbPoints;\n  end;\n\n  { Horizontal strip of a polygon being filled }\n  TPolySlice = record\n    y1,y2: single;\n    segments: array of record\n                id: integer;\n                custom: PCustomPointRecord;\n              end;\n    nbSegments: integer;\n  end;\n\n  { Fill information for a polygon }\n  TFillPolyInfo = class(TCustomFillPolyInfo)\n  protected\n    FSlices:   array of TPolySlice;\n    FCurSlice: integer;\n    FMaxIntersection: integer;\n    function NbMaxIntersection: integer; override;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    constructor Create(const points: array of TPointF; APixelCenteredCoordinates: boolean = true);\n    function GetSliceIndex: integer; override;\n  end;\n\n  POnePassRecord = ^TOnePassRecord;\n  { Linked list of coordinates for one-pass drawing }\n  TOnePassRecord = record\n                id: integer;\n                custom: PCustomPointRecord;\n                next: POnePassRecord;\n                nextWaiting: POnePassRecord;\n                nextDrawing: POnePassRecord;\n            end;\n\n  { Fill information for a polygon assuming that queries are always in increasying Y. }\n  TOnePassFillPolyInfo = class(TCustomFillPolyInfo)\n  private\n    procedure InsertionSortByY;\n    function PartitionByY(left, right: integer): integer;\n    procedure QuickSortByY(left, right: integer);\n    procedure SortByY;\n  protected\n    FOnePass: array of TOnePassRecord;\n    FSortedByY: array of POnePassRecord;\n    FFirstWaiting, FFirstDrawing: POnePassRecord;\n    FShouldInitializeDrawing: boolean;\n    FSliceIndex: integer;\n    procedure ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer); override;\n  public\n    constructor Create(const points: array of TPointF; APixelCenteredCoordinates: boolean = true);\n    function CreateIntersectionArray: ArrayOfTIntersectionInfo; override;\n    function GetSliceIndex: integer; override;\n  end;\n\n  { Fill information for a simple polygons }\n  TSimpleFillPolyInfo = class(TCustomFillPolyInfo)\n  protected\n    procedure ComputeIntersection(cury: single; var inter: ArrayOfTIntersectionInfo;\n      var nbInter: integer); override;\n  public\n    constructor Create(const points: array of TPointF; APixelCenteredCoordinates: boolean = true);\n  end;\n\nprocedure AddDensity(dest: PDensity; start,count: integer; value : word); inline;\nfunction DivByAntialiasPrecision(value: UInt32or64): UInt32or64; inline;\nfunction DivByAntialiasPrecision256(value: UInt32or64): UInt32or64; inline;\nfunction DivByAntialiasPrecision65536(value: UInt32or64): UInt32or64; inline;\nprocedure ComputeAliasedRowBounds(x1,x2: single; minx,maxx: integer; out ix1,ix2: integer);\n\nfunction IsPointInPolygon(const points: ArrayOfTPointF; point: TPointF; windingMode: boolean): boolean;\nfunction IsPointInEllipse(x,y,rx,ry: single; point: TPointF): boolean;\nfunction IsPointInRoundRectangle(x1, y1, x2, y2, rx, ry: single; point: TPointF): boolean;\nfunction IsPointInRectangle(x1, y1, x2, y2: single; point: TPointF): boolean;\n\nfunction BGRAShapeComputeMinMax(AShape: TBGRACustomFillInfo; out minx, miny, maxx, maxy: integer;\n  bmpDest: TBGRACustomBitmap): boolean; overload;\nfunction BGRAShapeComputeMinMax(AShape: TBGRACustomFillInfo; out minx, miny, maxx, maxy: integer;\n  clip: TRect): boolean; overload;\n\nimplementation\n\nuses Math;\n\nfunction BGRAShapeComputeMinMax(AShape: TBGRACustomFillInfo; out minx, miny, maxx, maxy: integer;\n  bmpDest: TBGRACustomBitmap): boolean;\nbegin\n  result := BGRAShapeComputeMinMax(AShape, minx,miny,maxx,maxy, bmpDest.ClipRect);\nend;\n\nfunction BGRAShapeComputeMinMax(AShape: TBGRACustomFillInfo; out minx, miny, maxx, maxy: integer;\n  clip: TRect): boolean;\nvar bounds: TRect;\nbegin\n  result := true;\n  bounds := AShape.GetBounds;\n\n  if (bounds.Right <= bounds.left) or (bounds.bottom <= bounds.top) then\n  begin\n    result := false;\n    exit;\n  end;\n\n  miny := bounds.top;\n  maxy := bounds.bottom - 1;\n  minx := bounds.left;\n  maxx := bounds.right - 1;\n\n  if minx < clip.Left then\n    minx := clip.Left;\n  if maxx < clip.Left then\n    result := false;\n\n  if maxx > clip.Right - 1 then\n    maxx := clip.Right- 1;\n  if minx > clip.Right - 1 then\n    result := false;\n\n  if miny < clip.Top then\n    miny := clip.Top;\n  if maxy < clip.Top then\n    result := false;\n\n  if maxy > clip.Bottom - 1 then\n    maxy := clip.Bottom - 1;\n  if miny > clip.Bottom - 1 then\n    result := false;\nend;\n\nprocedure ComputeAliasedRowBounds(x1,x2: single; minx,maxx: integer; out ix1,ix2: integer);\nbegin\n  ix1 := trunc(x1);\n  if frac(x1)>0.5 then inc(ix1)\n  else if frac(x1)<=-0.5 then dec(ix1);\n  ix2 := trunc(x2)-1;\n  if frac(x2)>0.5 then inc(ix2)\n  else if frac(x2)<=-0.5 then dec(ix2);\n  if ix1 < minx then ix1 := minx;\n  if ix2 >= maxx then ix2 := maxx;\nend;\n\nfunction IsPointInPolygon(const points: ArrayOfTPointF; point: TPointF\n  ; windingMode: boolean): boolean;\nvar info: TBGRACustomFillInfo;\nbegin\n  info := TSimpleFillPolyInfo.Create(points);\n  result := info.IsPointInside(point.x+0.5,point.y+0.5,windingMode);\n  info.free;\nend;\n\nfunction IsPointInEllipse(x, y, rx, ry: single; point: TPointF): boolean;\nvar info: TBGRACustomFillInfo;\nbegin\n  info := TFillEllipseInfo.Create(x,y,rx,ry);\n  result := info.IsPointInside(point.x+0.5,point.y+0.5,false);\n  info.free;\nend;\n\nfunction IsPointInRoundRectangle(x1, y1, x2, y2, rx, ry: single; point: TPointF\n  ): boolean;\nvar info: TBGRACustomFillInfo;\nbegin\n  info := TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry,[]);\n  result := info.IsPointInside(point.x+0.5,point.y+0.5,false);\n  info.free;\nend;\n\nfunction IsPointInRectangle(x1, y1, x2, y2: single; point: TPointF): boolean;\nbegin\n  with point do\n    result := (((x1<x) and (x2>x)) or ((x1>x) and (x2<x))) and\n              (((y1<y) and (y2>y)) or ((y1>y) and (y2<y)));\nend;\n\nprocedure AddDensity(dest: PDensity; start,count: integer; value: word);\nvar valueValue: LongWord;\n    lastAdd: integer;\nbegin\n  if count=0 then exit;\n  inc(dest,start);\n  if start and 1 = 1 then\n  begin\n    inc(dest^, value);\n    inc(dest);\n    dec(count);\n  end;\n  lastAdd := count and 1;\n  count := count shr 1;\n  if count > 0 then\n  begin\n    valueValue := value+(value shl 16);\n    while count > 0 do\n    begin\n      inc(plongword(dest)^, valueValue);\n      inc(dest,2);\n      dec(count);\n    end;\n  end;\n  if lastAdd <> 0 then\n    inc(dest^, value);\nend;\n\nfunction DivByAntialiasPrecision(value: UInt32or64): UInt32or64;\nbegin             //\n  result := value shr AntialiasPrecisionShift;// div AntialiasPrecision;\nend;\n\nfunction DivByAntialiasPrecision256(value: UInt32or64): UInt32or64;\nbegin             //\n  result := value shr (AntialiasPrecisionShift+8);// div (256*AntialiasPrecision);\nend;\n\nfunction DivByAntialiasPrecision65536(value: UInt32or64): UInt32or64;\nbegin             //\n  result := value shr (AntialiasPrecisionShift+16);//div (65536*AntialiasPrecision);\nend;\n\n{ TFillRectangleInfo }\n\nfunction TFillRectangleInfo.GetBottomRight: TPointF;\nbegin\n  result := PointF(FX2-0.5,FY2-0.5);\nend;\n\nfunction TFillRectangleInfo.GetTopLeft: TPointF;\nbegin\n  result := PointF(FX1-0.5,FY1-0.5);\nend;\n\nfunction TFillRectangleInfo.NbMaxIntersection: integer;\nbegin\n  Result:= 2;\nend;\n\nprocedure TFillRectangleInfo.ComputeIntersection(cury: single;\n  var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nbegin\n  if (cury >= FY1) and (cury <= FY2) then\n  begin\n    inter[nbinter].interX := FX1;\n    inter[nbinter].winding := -windingFactor;\n    inter[nbinter].numSegment := 0;\n    Inc(nbinter);\n    inter[nbinter].interX := FX2;\n    inter[nbinter].winding := +windingFactor;\n    inter[nbinter].numSegment := 1;\n    Inc(nbinter);\n  end;\nend;\n\nconstructor TFillRectangleInfo.Create(x1, y1, x2, y2: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  temp: Single;\nbegin\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if APixelCenteredCoordinates then\n  begin\n    FX1  := x1 + 0.5;\n    FY1  := y1 + 0.5;\n    FX2  := x2 + 0.5;\n    FY2  := y2 + 0.5;\n  end else\n  begin\n    FX1 := x1;\n    FY1 := y1;\n    FX2 := x2;\n    FY2 := y2;\n  end;\n  WindingFactor := 1;\nend;\n\nfunction TFillRectangleInfo.GetBounds: TRect;\nbegin\n  result := rect(floor(fx1),floor(fy1),floor(fx2)+1,floor(fy2)+1);\nend;\n\n{ TFillShapeInfo }\n\nfunction TFillShapeInfo.GetBounds: TRect;\nbegin\n  Result := rect(0, 0, 0, 0);\nend;\n\n\nfunction TFillShapeInfo.IsPointInside(x, y: single; windingMode: boolean\n  ): boolean;\nvar\n  i,nbInter: integer;\nbegin\n  if FPointInsideInter = nil then\n    FPointInsideInter := CreateIntersectionArray;\n  ComputeAndSort(y,FPointInsideInter,nbInter,windingMode);\n  i := 0;\n  while i+1 < nbInter do\n  begin\n    if (FPointInsideInter[i].interX < x) and (FPointInsideInter[i+1].interX > x) then\n    begin\n      result := true;\n      FreeIntersectionArray(FPointInsideInter);\n      exit;\n    end;\n    inc(i,2);\n  end;\n  result := false;\nend;\n\nfunction TFillShapeInfo.NbMaxIntersection: integer;\nbegin\n  Result := 0;\nend;\n\ndestructor TFillShapeInfo.Destroy;\nbegin\n  FreeIntersectionArray(FPointInsideInter);\n  inherited Destroy;\nend;\n\nfunction TFillShapeInfo.SegmentsCurved: boolean;\nbegin\n  result := false;\nend;\n\nfunction TFillShapeInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  result := TIntersectionInfo.Create;\nend;\n\nprocedure TFillShapeInfo.FreeIntersectionArray(\n  var inter: ArrayOfTIntersectionInfo);\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(inter) do\n    inter[i].free;\n  inter := nil;\nend;\n\n{$hints off}\nprocedure TFillShapeInfo.ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nbegin\n\nend;\n{$hints on}\n\nprocedure TFillShapeInfo.SortIntersection(var inter: ArrayOfTIntersectionInfo; nbInter: integer);\nvar\n  i,j,k: Integer;\n  tempInter: TIntersectionInfo;\nbegin\n  if nbInter > 10 then\n    InternalQuickSortIntersection(@inter[0], 0, nbInter-1);\n  for i := 1 to nbinter - 1 do\n  begin\n    j := i;\n    while (j > 0) and (inter[i].interX < inter[j-1].interX) do dec(j);\n    if j <> i then\n    begin\n      tempInter := inter[i];\n      for k := i-1 downto j do\n        inter[k+1] := inter[k];\n      inter[j]  := tempInter;\n    end;\n  end;\nend;\n\nprocedure TFillShapeInfo.InternalQuickSortIntersection(inter0: pointer;\n      idxL, idxH: Integer);\nconst Stride = sizeof(pointer);\n      MinSub = 10;\ntype PIntersectionInfo = ^TIntersectionInfo;\nvar\n  ls,hs : Integer;\n  li,hi : Integer;\n  mi    : Integer;\n  ms    : Integer;\n  pb    : PByte;\n  tempInfo: TIntersectionInfo;\n  m: Single;\nbegin\n  pb:=PByte(inter0);\n  li:=idxL;\n  hi:=idxH;\n  mi:=(li+hi) div 2;\n  ls:=li*Stride;\n  hs:=hi*Stride;\n  ms:=mi*Stride;\n  m := PIntersectionInfo(pb+ms)^.interX;\n  repeat\n    while PIntersectionInfo(pb+ls)^.interX < m do begin\n      inc(ls, Stride);\n      inc(li);\n    end;\n    while m < PIntersectionInfo(pb+hs)^.interX do begin\n      dec(hs, Stride);\n      dec(hi);\n    end;\n    if ls <= hs then begin\n      tempInfo := PIntersectionInfo(pb+ls)^;\n      PIntersectionInfo(pb+ls)^ := PIntersectionInfo(pb+hs)^;\n      PIntersectionInfo(pb+hs)^ := tempInfo;\n      inc(ls, Stride); inc(li);\n      dec(hs, Stride); dec(hi);\n    end;\n  until ls>hs;\n  if hi>=idxL+MinSub-1 then InternalQuickSortIntersection(inter0, idxL, hi);\n  if li+MinSub-1<=idxH then InternalQuickSortIntersection(inter0, li, idxH);\nend;\n\nprocedure TFillShapeInfo.ConvertFromNonZeroWinding(var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar windingSum,prevSum,i,nbAlternate: integer;\n    tempInfo: TIntersectionInfo;\nbegin\n  windingSum := 0;\n  nbAlternate := 0;\n  for i := 0 to nbInter-1 do\n  begin\n    prevSum := windingSum;\n    inc(windingSum, inter[i].winding);\n    if (windingSum = 0) xor (prevSum = 0) then\n    begin\n      if nbAlternate<>i then\n      begin\n        tempInfo := inter[nbAlternate];\n        inter[nbAlternate] := inter[i];\n        inter[i] := tempInfo;\n      end;\n      inc(nbAlternate);\n    end;\n  end;\n  nbInter := nbAlternate;\nend;\n\nprocedure TFillShapeInfo.ComputeAndSort(cury: single;\n  var inter: ArrayOfTIntersectionInfo; out nbInter: integer; windingMode: boolean);\nbegin\n  nbInter := 0;\n  ComputeIntersection(cury,inter,nbInter);\n  if nbInter < 2 then exit;\n  SortIntersection(inter,nbInter);\n  if windingMode then ConvertFromNonZeroWinding(inter,nbInter);\nend;\n\nfunction TFillShapeInfo.GetSliceIndex: integer;\nbegin\n  result := 0;\nend;\n\nfunction TFillShapeInfo.CreateIntersectionArray: ArrayOfTIntersectionInfo;\nvar\n  i: Integer;\nbegin\n  setlength(result, NbMaxIntersection);\n  for i := 0 to high(result) do\n    result[i] := CreateIntersectionInfo;\nend;\n\nfunction ComputeWinding(y1,y2: single): integer;\nbegin\n    if y2 > y1 then result := 1 else\n    if y2 < y1 then result := -1 else\n      result := 0;\nend;\n\ntype\n  arrayOfSingle = array of single;\n\nprocedure InsertionSortSingles(var a: arrayOfSingle);\nvar i,j: integer;\n    temp: single;\nbegin\n  for i := 1 to high(a) do\n  begin\n    Temp := a[i];\n    j := i;\n    while (j>0) and (a[j-1]> Temp) do\n    begin\n      a[j] := a[j-1];\n      dec(j);\n    end;\n    a[j] := Temp;\n  end;\nend;\n\nfunction PartitionSingles(var a: arrayOfSingle; left,right: integer): integer;\n\n  procedure Swap(idx1,idx2: integer); inline;\n  var temp: single;\n  begin\n    temp := a[idx1];\n    a[idx1] := a[idx2];\n    a[idx2] := temp;\n  end;\n\nvar pivotIndex: integer;\n    pivotValue: single;\n    storeIndex: integer;\n    i: integer;\n\nbegin\n  pivotIndex := left + random(right-left+1);\n  pivotValue := a[pivotIndex];\n  swap(pivotIndex,right);\n  storeIndex := left;\n  for i := left to right-1 do\n    if a[i] <= pivotValue then\n    begin\n      swap(i,storeIndex);\n      inc(storeIndex);\n    end;\n  swap(storeIndex,right);\n  result := storeIndex;\nend;\n\nprocedure QuickSortSingles(var a: arrayOfSingle; left,right: integer);\nvar pivotNewIndex: integer;\nbegin\n  if right > left+9 then\n  begin\n    pivotNewIndex := PartitionSingles(a,left,right);\n    QuickSortSingles(a,left,pivotNewIndex-1);\n    QuickSortSingles(a,pivotNewIndex+1,right);\n  end;\nend;\n\nprocedure SortSingles(var a: arrayOfSingle);\nbegin\n  if length(a) < 10 then InsertionSortSingles(a) else\n  begin\n    QuickSortSingles(a,0,high(a));\n    InsertionSortSingles(a);\n  end;\nend;\n\nprocedure RemoveSingleDuplicates(var a: arrayOfSingle; var nb: integer);\nvar i,idx: integer;\nbegin\n  idx := 0;\n  for i := 1 to nb-1 do\n  begin\n    if a[i] <> a[idx] then\n    begin\n      inc(idx);\n      a[idx] := a[i];\n    end;\n  end;\n  nb := idx+1;\nend;\n\nfunction BinarySearchSingle(value: single; var a: arrayOfSingle; left,right: integer): integer;\nvar pivotIndex: integer;\n    pivotValue: single;\nbegin\n  pivotIndex := (left+right) div 2;\n  pivotValue := a[pivotIndex];\n  if value = pivotValue then\n    result := pivotIndex else\n  if value < pivotValue then\n  begin\n    if pivotIndex = left then result := left else\n      result := BinarySearchSingle(value, a, left,pivotIndex-1);\n  end else\n  begin\n    if pivotIndex = right then result := right+1 else\n      result := BinarySearchSingle(value, a, pivotIndex+1, right);\n  end;\nend;\n\n{ TCustomFillPolyInfo }\n\nconstructor TCustomFillPolyInfo.Create(const points: array of TPointF; APixelCenteredCoordinates: boolean);\nvar\n  cur, first, i, j: integer;\n  p, pNext: PCustomPointRecord;\n  tempCoord: TPointF;\n  tempBool: Boolean;\n\nbegin\n  InitPoints(points);\n  FSegmentsDataCreated:= false;\n  if FPoints=nil then\n  begin\n    FBoundsF := EmptyRectF;\n    exit;\n  end;\n\n  //look for empty points, correct coordinate and successors\n  cur   := -1;\n  first := -1;\n  p := @FPoints[0];\n  for i := 0 to high(FPoints) do\n  begin\n    if not isEmptyPointF(p^.coord) then\n    begin\n      p^.empty := False;\n      if APixelCenteredCoordinates then\n        p^.coord.Offset(0.5,0.5);\n      if cur <> -1 then\n        FPoints[cur].next := i;\n      if first = -1 then\n        first := i;\n      cur := i;\n    end\n    else\n    begin\n      if (first <> -1) and (cur <> first) then\n        FPoints[cur].next := first;\n\n      p^.empty := True;\n      p^.next  := -1;\n      cur   := -1;\n      first := -1;\n    end;\n    inc(p);\n  end;\n  if (first <> -1) and (cur <> first) then\n    FPoints[cur].next := first;\n\n  FBoundsF := RectF(FPoints[0].coord,FPoints[0].coord);\n\n  p := @FPoints[0];\n  for i := 0 to high(FPoints) do\n  begin\n    if not p^.empty then\n    begin\n      if p^.x < FBoundsF.Left then FBoundsF.Left := p^.x else\n      if p^.x > FBoundsF.Right then FBoundsF.Right := p^.x;\n      if p^.y < FBoundsF.Top then FBoundsF.Top := p^.y else\n      if p^.y > FBoundsF.Bottom then FBoundsF.Bottom := p^.y;\n    end;\n    if p^.next <> -1 then\n    begin\n      pNext := @FPoints[p^.next];\n      p^.coord2 := pNext^.coord;\n    end;\n    inc(p);\n  end;\n\n  //compute slopes\n  p := @FPoints[0];\n  for i := 0 to high(FPoints) do\n  begin\n    if not p^.empty then\n    begin\n      p^.winding := ComputeWinding(p^.y, p^.y2);\n      if p^.winding<>0 then\n        p^.slope := (p^.x2 - p^.x) / (p^.y2 - p^.y)\n      else\n        p^.slope := EmptySingle;\n    end\n    else\n      p^.slope := EmptySingle;\n    inc(p);\n  end;\n\n  //check if end points are included\n  p := @FPoints[0];\n  for i := 0 to high(FPoints) do\n  begin\n    if not p^.empty then\n    begin\n      j := p^.next;\n      pNext := @FPoints[j];\n      if p^.winding > 0 then\n        p^.includeEndingPoint := pNext^.winding < 0\n      else if p^.winding < 0 then\n        p^.includeEndingPoint := pNext^.winding >= 0\n      else\n        p^.includeStartingPoint := false;\n\n      if pNext^.winding > 0 then\n        pNext^.includeStartingPoint := true\n      else if pNext^.winding < 0 then\n        pNext^.includeStartingPoint := p^.winding <> 0;\n    end;\n    inc(p);\n  end;\n\n  //flip vertically to have always top to bottom\n  p := @FPoints[0];\n  for i := 0 to high(FPoints) do\n  begin\n    if p^.winding < 0 then\n    begin\n      tempCoord := p^.coord;\n      p^.coord := p^.coord2;\n      p^.coord2 := tempCoord;\n      tempBool := p^.includeStartingPoint;\n      p^.includeStartingPoint := p^.includeEndingPoint;\n      p^.includeEndingPoint := tempBool;\n    end;\n    inc(p);\n  end;\nend;\n\ndestructor TCustomFillPolyInfo.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(FPoints) do\n    freemem(FPoints[i].data);\n  inherited Destroy;\nend;\n\nfunction TCustomFillPolyInfo.CreateIntersectionArray: ArrayOfTIntersectionInfo;\nvar\n  i: Integer;\nbegin\n  CreateSegmentsData;\n  setlength(result, NbMaxIntersection);\n  for i := 0 to high(result) do\n    result[i] := nil;\nend;\n\nfunction TCustomFillPolyInfo.CreateSegmentData(numPt, nextPt: integer;\n  ASeg: PCustomPointRecord): pointer;\nbegin\n  result := nil;\nend;\n\nprocedure TCustomFillPolyInfo.FreeSegmentData(data: pointer);\nbegin\n  freemem(data);\nend;\n\nfunction TCustomFillPolyInfo.GetBounds: TRect;\nbegin\n  with FBoundsF do\n    result := Rect(floor(Left),floor(Top),ceil(Right),ceil(Bottom));\nend;\n\nfunction TCustomFillPolyInfo.GetBoundsF: TRectF;\nbegin\n  result := FBoundsF;\nend;\n\nfunction TCustomFillPolyInfo.GetNbPoints: integer;\nbegin\n  result := length(FPoints);\nend;\n\nfunction TCustomFillPolyInfo.NbMaxIntersection: integer;\nbegin\n  Result := length(FPoints);\nend;\n\nprocedure TCustomFillPolyInfo.SetIntersectionValues(AInter: TIntersectionInfo;\n  AInterX: Single; AWinding, ANumSegment: integer; dy: single; AData: pointer);\nbegin\n  AInter.SetValues( AInterX, AWinding, ANumSegment );\nend;\n\nprocedure TCustomFillPolyInfo.InitPoints(const points: array of TPointF);\nconst\n  minDist = 0.00390625; //1 over 256\n\nvar\n  i, first, nbP: integer;\n\n  function PointAlmostEqual(const p1,p2: TPointF): boolean;\n  begin\n    result := (abs(p1.x-p2.x) < minDist) and (abs(p1.y-p2.y) < minDist);\n  end;\n\n  procedure EndOfSubPolygon;\n  begin\n    //if there is a subpolygon\n    if first<>-1 then\n    begin\n      //last point is the same as first point?\n      if (nbP >= first+2) and PointAlmostEqual(FPoints[nbP-1].coord,FPoints[first].coord) then\n        dec(nbP); //remove superfluous looping point\n\n      if (nbP <= first+2) then //are there only one or two points?\n      begin\n        //remove subpolygon because we need at least a triangle\n        nbP := first;\n        first := -1;\n      end;\n\n    end;\n  end;\n\nbegin\n  setlength(FPoints, length(points));\n  nbP := 0;\n  first := -1;\n  for i := 0 to high(points) do\n  if isEmptyPointF(points[i]) then\n  begin\n    EndOfSubPolygon;\n    if first<>-1 then\n    begin\n      FPoints[nbP].originalIndex := i;\n      FPoints[nbP].coord := EmptyPointF;\n      inc(nbP);\n      first := -1;\n    end;\n  end else\n  if (first=-1) or not PointAlmostEqual(FPoints[nbP-1].coord,points[i]) then\n  begin\n    if first = -1 then first := nbP;\n    FPoints[nbP].originalIndex := i;\n    FPoints[nbP].coord := points[i];\n    inc(nbP);\n  end;\n  EndOfSubPolygon;\n  //if last point was a subpolygon delimiter (EmptyPointF) then removes it\n  if (nbP > 0) and isEmptyPointF(FPoints[nbP-1].coord) then dec(nbP);\n\n  setlength(FPoints, nbP);\nend;\n\nprocedure TCustomFillPolyInfo.CreateSegmentsData;\nvar\n  i: Integer;\n  p: PCustomPointRecord;\nbegin\n  if FSegmentsDataCreated then exit;\n  FSegmentsDataCreated := true;\n  if FPoints<>nil then\n  begin\n    p := @FPoints[0];\n    for i := 0 to high(FPoints) do\n    begin\n      if not p^.empty and (p^.slope <> EmptySingle) then\n      begin\n        if p^.winding < 0 then\n          p^.data := CreateSegmentData(p^.next,i, p)\n        else\n          p^.data := CreateSegmentData(i,p^.next, p);\n      end;\n      inc(p);\n    end;\n  end;\nend;\n\n{ TFillPolyInfo }\n\nfunction TFillPolyInfo.NbMaxIntersection: integer;\nbegin\n  Result:= FMaxIntersection;\nend;\n\nprocedure TFillPolyInfo.ComputeIntersection(cury: single;\n  var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar\n  j: integer;\n  cust: PCustomPointRecord;\n  pInter: PIntersectionInfo;\nbegin\n  if length(FSlices)=0 then exit;\n\n  while (cury < FSlices[FCurSlice].y1) and (FCurSlice > 0) do dec(FCurSlice);\n  while (cury > FSlices[FCurSlice].y2) and (FCurSlice < high(FSlices)) do inc(FCurSlice);\n\n  pInter := @inter[nbInter];\n  with FSlices[FCurSlice] do\n  if (cury >= y1) and (cury < y2) then\n  begin\n    for j := 0 to nbSegments-1 do\n    begin\n      cust := segments[j].custom;\n      if pInter^ = nil then pInter^ := CreateIntersectionInfo;\n      SetIntersectionValues(pInter^, (cury - cust^.y) * cust^.slope + cust^.x,\n                            cust^.winding, segments[j].id, cury - cust^.y, cust^.data );\n      Inc(nbinter);\n      inc(pInter);\n    end;\n  end;\nend;\n\nconstructor TFillPolyInfo.Create(const points: array of TPointF; APixelCenteredCoordinates: boolean);\n  function AddSeg(numSlice: integer): integer;\n  begin\n    result := FSlices[numSlice].nbSegments;\n    if length(FSlices[numSlice].segments)=FSlices[numSlice].nbSegments then\n      setlength(FSlices[numSlice].segments,FSlices[numSlice].nbSegments*2+2);\n    inc(FSlices[numSlice].nbSegments);\n  end;\n\nvar\n  yList: array of single;\n  nbYList: integer;\n  ya,yb,temp: single;\n  sliceStart,sliceEnd,idxSeg: integer;\n  i,j,idSeg: integer;\n\nbegin\n  inherited Create(points, APixelCenteredCoordinates);\n\n  //slice\n  nbYList:= length(FPoints)*2;\n  setlength(YList, nbYList);\n  for i := 0 to high(FPoints) do\n  begin\n    YList[i*2] := FPoints[i].y;\n    YList[i*2+1] := FPoints[i].y2;\n  end;\n\n  SortSingles(YList);\n  RemoveSingleDuplicates(YList, nbYList);\n\n  setlength(FSlices, nbYList-1);\n  for i := 0 to high(FSlices) do\n  begin\n    FSlices[i].y1 := YList[i];\n    FSlices[i].y2 := YList[i+1];\n    FSlices[i].nbSegments := 0;\n  end;\n\n  idSeg := 0;\n  for j := 0 to high(FPoints) do\n  begin\n    if FPoints[j].slope<>EmptySingle then\n    begin\n      ya := FPoints[j].y;\n      yb := FPoints[j].y2;\n      if yb < ya then\n      begin\n        temp := ya;\n        ya := yb;\n        yb := temp;\n      end;\n      sliceStart := BinarySearchSingle(ya,YList,0,nbYList-1);\n      sliceEnd := BinarySearchSingle(yb,YList,0,nbYList-1);\n      if sliceEnd > high(FSlices) then sliceEnd := high(FSlices);\n      for i := sliceStart to sliceEnd do\n      begin\n        if ((FPoints[j].y < FSlices[i].y2) and\n           (FPoints[j].y2 > FSlices[i].y1)) or\n           ((FPoints[j].y2 < FSlices[i].y2) and\n           (FPoints[j].y > FSlices[i].y1)) then\n        begin\n          idxSeg := AddSeg(i);\n          with FSlices[i].segments[idxSeg] do\n          begin\n            inc(idSeg);\n            id := idSeg;\n            custom:= @FPoints[j];\n          end;\n        end;\n      end;\n    end;\n  end;\n\n  FCurSlice := 0;\n  FMaxIntersection:= 0;\n  for i := 0 to high(FSlices) do\n    if FSlices[i].nbSegments > FMaxIntersection then\n      FMaxIntersection:= FSlices[i].nbSegments;\nend;\n\nfunction TFillPolyInfo.GetSliceIndex: integer;\nbegin\n  Result:= FCurSlice;\nend;\n\n{ TOnePassFillPolyInfo }\n\nfunction TOnePassFillPolyInfo.PartitionByY(left,right: integer): integer;\n\n  procedure Swap(idx1,idx2: integer); inline;\n  var temp: POnePassRecord;\n  begin\n    temp := FSortedByY[idx1];\n    FSortedByY[idx1] := FSortedByY[idx2];\n    FSortedByY[idx2] := temp;\n  end;\n\nvar pivotIndex: integer;\n    pivotValue: single;\n    storeIndex: integer;\n    i: integer;\n\nbegin\n  pivotIndex := left + random(right-left+1);\n  pivotValue := FSortedByY[pivotIndex]^.custom^.y;\n  swap(pivotIndex,right);\n  storeIndex := left;\n  for i := left to right-1 do\n    if FSortedByY[i]^.custom^.y <= pivotValue then\n    begin\n      swap(i,storeIndex);\n      inc(storeIndex);\n    end;\n  swap(storeIndex,right);\n  result := storeIndex;\nend;\n\nprocedure TOnePassFillPolyInfo.QuickSortByY(left,right: integer);\nvar pivotNewIndex: integer;\nbegin\n  if right > left+9 then\n  begin\n    pivotNewIndex := PartitionByY(left,right);\n    QuickSortByY(left,pivotNewIndex-1);\n    QuickSortByY(pivotNewIndex+1,right);\n  end;\nend;\n\nprocedure TOnePassFillPolyInfo.InsertionSortByY;\nvar i,j: integer;\n    tempValue: single;\n    tempPtr: POnePassRecord;\nbegin\n  for i := 1 to high(FSortedByY) do\n  begin\n    tempPtr := FSortedByY[i];\n    TempValue := tempPtr^.custom^.y;\n    j := i;\n    while (j>0) and (FSortedByY[j-1]^.custom^.y > TempValue) do\n    begin\n      FSortedByY[j] := FSortedByY[j-1];\n      dec(j);\n    end;\n    FSortedByY[j] := tempPtr;\n  end;\nend;\n\nprocedure TOnePassFillPolyInfo.SortByY;\nvar i,nbSorted: integer;\nbegin\n  setlength(FSortedByY, length(FPoints));\n  nbSorted := 0;\n  for i := 0 to high(FSortedByY) do\n    if not FPoints[i].empty then\n    begin\n      FSortedByY[nbSorted] := @FOnePass[i];\n      inc(nbSorted);\n    end;\n  setlength(FSortedByY,nbSorted);\n  if length(FSortedByY) < 10 then InsertionSortByY else\n  begin\n    QuickSortByY(0,high(FSortedByY));\n    InsertionSortByY;\n  end;\nend;\n\nprocedure TOnePassFillPolyInfo.ComputeIntersection(cury: single;\n  var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar\n  p,pprev,pnext: POnePassRecord;\n{  t: TextFile;\n  i: Integer; }\n  pCust: PCustomPointRecord;\n  pInter: PIntersectionInfo;\nbegin\n  FShouldInitializeDrawing := true;\n\n  p := FFirstWaiting;\n  while p <> nil do\n  begin\n    if (cury >= p^.custom^.y) then\n    begin\n      if cury <= p^.custom^.y2+1 then\n      begin\n        p^.nextDrawing := FFirstDrawing;\n        FFirstDrawing := p;\n        inc(FSliceIndex);\n      end;\n    end\n      else break;\n    p := p^.nextWaiting;\n  end;\n  FFirstWaiting:= p;\n\n  p := FFirstDrawing;\n  pprev := nil;\n  pInter := @inter[nbInter];\n  while p <> nil do\n  begin\n    pnext := p^.nextDrawing;\n    pCust := p^.custom;\n    if (((cury > pCust^.y) and (cury < pCust^.y2)) or\n       (pCust^.includeStartingPoint and (cury = pCust^.y)) or\n       (pCust^.includeEndingPoint and (cury = pCust^.y2))) then\n    begin\n      if pInter^ = nil then pInter^ := CreateIntersectionInfo;\n      SetIntersectionValues(pInter^, (cury - pCust^.y)*pCust^.slope + pCust^.x,\n                   pCust^.winding, p^.id, cury - pCust^.y, pCust^.data);\n      inc(nbinter);\n      inc(pInter);\n    end else\n    if (cury > pCust^.y2+1) then\n    begin\n      if pprev <> nil then\n        pprev^.nextDrawing := pnext\n      else\n        FFirstDrawing:= pnext;\n      p := pnext;\n      Inc(FSliceIndex);\n      continue;\n    end;\n    pprev := p;\n    p := pnext;\n  end;\n{  if odd(nbInter) then\n  begin\n    assignfile(t, 'polygon.dump');\n    rewrite(t);\n    writeln(t,'Polygon tested at ',cury);\n    for i := 0 to NbPoints-1 do\n      if isEmptyPointF(FPoints[i]) then write(t,'] [') else\n      write(t,FPoints[i].x, ',', FPoints[i].y,'  ');\n    writeln(t);\n    writeln(t,'Drawing');\n    p := FFirstDrawing;\n    while p <> nil do\n    begin\n      if ((p^.winding > 0) and\n        (((cury > p^.y1) and (cury < p^.y2)) or\n         (p^.includeStartingPoint and (cury = p^.y1)) or\n         (p^.includeEndingPoint and (cury = p^.y2)))) or\n        ((p^.winding < 0) and\n       (((cury > p^.y1) and (cury < p^.y2)) or\n         (p^.includeStartingPoint and (cury = p^.y2)) or\n         (p^.includeEndingPoint and (cury = p^.y1)))) then\n         write(t,'* ') else write(t,'- ');\n\n      writeln(t,p^.x1,',',p^.y1,'  ',p^.x2,',',p^.y2,'  ',p^.winding,' ',BoolToStr(p^.includeEndingPoint,'end incl','end not incl'));\n      p := p^.nextDrawing;\n    end;\n    closefile(t);\n\n    raise exception.Create('Even intersections expected');\n  end;   }\nend;\n\nconstructor TOnePassFillPolyInfo.Create(const points: array of TPointF; APixelCenteredCoordinates: boolean);\nvar i,j: integer;\n  p: POnePassRecord;\nbegin\n  inherited create(points, APixelCenteredCoordinates);\n\n  FShouldInitializeDrawing := true;\n  setlength(FOnePass, length(FPoints));\n  for i := 0 to high(FPoints) do\n  if not FPoints[i].empty then\n  begin\n    p := @FOnePass[i];\n    p^.id := i;\n    j := FPoints[i].next;\n    p^.next := @FOnePass[j];\n    p^.custom:= @FPoints[i];\n  end;\n\n  SortByY;\n  FSliceIndex := 0;\nend;\n\nfunction TOnePassFillPolyInfo.CreateIntersectionArray: ArrayOfTIntersectionInfo;\nvar i: integer;\n  p,pprev: POnePassRecord;\nbegin\n  if FShouldInitializeDrawing then\n  begin\n    FShouldInitializeDrawing := false;\n    FFirstWaiting:= nil;\n    pprev := nil;\n    for i := 0 to high(FSortedByY) do\n    begin\n      p := FSortedByY[i];\n      if p^.custom^.slope <> EmptySingle then\n      begin\n        if pprev <> nil then\n          pprev^.nextWaiting:= p\n        else\n          FFirstWaiting := p;\n        pprev := p;\n      end;\n    end;\n  end;\n  result := inherited CreateIntersectionArray;\nend;\n\nfunction TOnePassFillPolyInfo.GetSliceIndex: integer;\nbegin\n  Result:= FSliceIndex;\nend;\n\n{ TSimpleFillPolyInfo }\n\nprocedure TSimpleFillPolyInfo.ComputeIntersection(cury: single;\n  var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar i: integer;\n  p: PCustomPointRecord;\n  pInter: PIntersectionInfo;\nbegin\n  if FPoints = nil then exit;\n  p := @FPoints[0];\n  pInter := @inter[nbInter];\n  for i := 0 to high(FPoints) do\n  begin\n    if (p^.winding <> 0) and\n     ( ((cury > p^.y) and (cury < p^.y2)) or\n       (p^.includeStartingPoint and (cury = p^.y)) or\n       (p^.includeEndingPoint and (cury = p^.y2)) ) then\n    begin\n      if pInter^ = nil then pInter^ := CreateIntersectionInfo;\n      SetIntersectionValues(pInter^, (cury - p^.y)*p^.slope + p^.x, p^.winding, i, cury - p^.y, p^.data);\n      inc(nbinter);\n      inc(pInter);\n    end;\n    inc(p);\n  end;\nend;\n\nconstructor TSimpleFillPolyInfo.Create(const points: array of TPointF; APixelCenteredCoordinates: boolean);\nbegin\n  inherited Create(points, APixelCenteredCoordinates);\nend;\n\n{ TFillEllipseInfo }\n\nconstructor TFillEllipseInfo.Create(x, y, rx, ry: single);\nbegin\n  FX  := x + 0.5;\n  FY  := y + 0.5;\n  FRX := abs(rx);\n  FRY := abs(ry);\n  WindingFactor := 1;\n  FSliceIndex:= -1;\nend;\n\nfunction TFillEllipseInfo.GetBounds: TRect;\nbegin\n  Result := rect(floor(fx - frx), floor(fy - fry), ceil(fx + frx), ceil(fy + fry));\nend;\n\nfunction TFillEllipseInfo.SegmentsCurved: boolean;\nbegin\n  Result:= true;\nend;\n\nfunction TFillEllipseInfo.GetSliceIndex: integer;\nbegin\n  Result:= FSliceIndex;\nend;\n\nfunction TFillEllipseInfo.GetCenter: TPointF;\nbegin\n  result := PointF(FX-0.5,FY-0.5);\nend;\n\nfunction TFillEllipseInfo.NbMaxIntersection: integer;\nbegin\n  Result := 2;\nend;\n\nprocedure TFillEllipseInfo.ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar\n  d: single;\nbegin\n  if (FRY <= 0) or (FRX <= 0) then exit;\n  d := sqr((cury - FY) / FRY);\n  if d < 1 then\n  begin\n    d := sqrt(1 - d) * FRX;\n    inter[nbinter].SetValues( FX - d, -windingFactor, 0);\n    Inc(nbinter);\n    inter[nbinter].SetValues( FX + d, windingFactor, 1);\n    Inc(nbinter);\n    FSliceIndex := 0;\n  end else\n  begin\n    if cury < FY then\n      FSliceIndex:= -1\n    else\n      FSliceIndex:= 1;\n  end;\nend;\n\n{ TFillBorderEllipseInfo }\n\nconstructor TFillBorderEllipseInfo.Create(x, y, rx, ry, w: single);\nbegin\n  if rx < 0 then\n    rx := -rx;\n  if ry < 0 then\n    ry := -ry;\n  FOuterBorder := TFillEllipseInfo.Create(x, y, rx + w / 2, ry + w / 2);\n  if (rx > w / 2) and (ry > w / 2) then\n  begin\n    FInnerBorder := TFillEllipseInfo.Create(x, y, rx - w / 2, ry - w / 2);\n    FInnerBorder.WindingFactor := -1;\n  end\n  else\n    FInnerBorder := nil;\nend;\n\nfunction TFillBorderEllipseInfo.GetBounds: TRect;\nbegin\n  Result := FOuterBorder.GetBounds;\nend;\n\nfunction TFillBorderEllipseInfo.SegmentsCurved: boolean;\nbegin\n  Result:= FOuterBorder.SegmentsCurved;\n  if FInnerBorder <> nil then result := result or FInnerBorder.SegmentsCurved;\nend;\n\nfunction TFillBorderEllipseInfo.NbMaxIntersection: integer;\nbegin\n  Result := 4;\nend;\n\nprocedure TFillBorderEllipseInfo.ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nbegin\n  FOuterBorder.ComputeIntersection(cury, inter, nbInter);\n  if FInnerBorder <> nil then\n    FInnerBorder.ComputeIntersection(cury, inter, nbInter);\nend;\n\ndestructor TFillBorderEllipseInfo.Destroy;\nbegin\n  FOuterBorder.Free;\n  if FInnerBorder <> nil then\n    FInnerBorder.Free;\n  inherited Destroy;\nend;\n\nfunction TFillBorderEllipseInfo.GetSliceIndex: integer;\nbegin\n  Result:= FOuterBorder.GetSliceIndex;\nend;\n\n{ TFillRoundRectangleInfo }\n\nconstructor TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry: single; options: TRoundRectangleOptions; APixelCenteredCoordinates: boolean);\nvar\n  temp: Single;\nbegin\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if APixelCenteredCoordinates then\n  begin\n    FX1  := x1 + 0.5;\n    FY1  := y1 + 0.5;\n    FX2  := x2 + 0.5;\n    FY2  := y2 + 0.5;\n  end else\n  begin\n    FX1 := x1;\n    FY1 := y1;\n    FX2 := x2;\n    FY2 := y2;\n  end;\n  FRX := abs(rx);\n  FRY := abs(ry);\n  if 2*FRX > x2-x1 then FRX := (x2-x1)/2;\n  if 2*FRY > y2-y1 then FRY := (y2-y1)/2;\n  FOptions:= options;\n  WindingFactor := 1;\nend;\n\nfunction TFillRoundRectangleInfo.SegmentsCurved: boolean;\nbegin\n  if (not (rrTopLeftSquare in FOptions) and not (rrTopLeftBevel in FOptions)) or\n     (not (rrTopRightSquare in FOptions) and not (rrTopRightBevel in FOptions)) or\n     (not (rrBottomRightSquare in FOptions) and not (rrBottomRightBevel in FOptions)) or\n     (not (rrBottomLeftSquare in FOptions) and not (rrBottomLeftBevel in FOptions)) then\n     result := true else result := false;\nend;\n\nfunction TFillRoundRectangleInfo.GetBounds: TRect;\nbegin\n  result := rect(floor(fx1),floor(fy1),floor(fx2)+1,floor(fy2)+1);\nend;\n\nfunction TFillRoundRectangleInfo.GetBottomRight: TPointF;\nbegin\n  result := PointF(FX2-0.5,FY2-0.5);\nend;\n\nfunction TFillRoundRectangleInfo.GetTopLeft: TPointF;\nbegin\n  result := PointF(FX1-0.5,FY1-0.5);\nend;\n\nfunction TFillRoundRectangleInfo.NbMaxIntersection: integer;\nbegin\n  result := 2;\nend;\n\nprocedure TFillRoundRectangleInfo.ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nvar\n  d,d2: single;\nbegin\n  if (cury >= FY1) and (cury <= FY2) then\n  begin\n    if cury < FY1+FRY then\n    begin\n      d := abs((cury - (FY1+FRY)) / FRY);\n      if d > 1 then d2 := 0\n      else d2 := sqrt(1 - sqr(d)) * FRX;\n\n      if rrTopLeftSquare in FOptions then\n        inter[nbinter].interX := FX1 else\n      if rrTopLeftBevel in FOptions then\n        inter[nbinter].interX := FX1 + d*FRX\n      else\n        inter[nbinter].interX := FX1 + FRX - d2;\n      inter[nbinter].winding := -windingFactor;\n      inter[nbinter].numSegment := 0;\n      Inc(nbinter);\n\n      if rrTopRightSquare in FOptions then\n        inter[nbinter].interX := FX2 else\n      if rrTopRightBevel in FOptions then\n        inter[nbinter].interX := FX2 - d*FRX\n      else\n        inter[nbinter].interX := FX2 - FRX + d2;\n      inter[nbinter].winding := +windingFactor;\n      inter[nbinter].numSegment := 1;\n      Inc(nbinter);\n    end else\n    if cury > FY2-FRY then\n    begin\n      d := abs((cury - (FY2-FRY)) / FRY);\n      if d > 1 then d2 := 0\n      else d2 := sqrt(1 - sqr(d)) * FRX;\n\n      if rrBottomLeftSquare in FOptions then\n        inter[nbinter].interX := FX1 else\n      if rrBottomLeftBevel in FOptions then\n        inter[nbinter].interX := FX1 + d*FRX\n      else\n        inter[nbinter].interX := FX1 + FRX - d2;\n      inter[nbinter].winding := -windingFactor;\n      inter[nbinter].numSegment := 0;\n      Inc(nbinter);\n\n      if rrBottomRightSquare in FOptions then\n        inter[nbinter].interX := FX2 else\n      if rrBottomRightBevel in FOptions then\n        inter[nbinter].interX := FX2 - d*FRX\n      else\n        inter[nbinter].interX := FX2 - FRX + d2;\n      inter[nbinter].winding := +windingFactor;\n      inter[nbinter].numSegment := 1;\n      Inc(nbinter);\n    end else\n    begin\n      inter[nbinter].interX := FX1;\n      inter[nbinter].winding := -windingFactor;\n      inter[nbinter].numSegment := 0;\n      Inc(nbinter);\n      inter[nbinter].interX := FX2;\n      inter[nbinter].winding := +windingFactor;\n      inter[nbinter].numSegment := 1;\n      Inc(nbinter);\n    end;\n  end;\nend;\n\n{ TFillBorderRoundRectInfo }\n\nconstructor TFillBorderRoundRectInfo.Create(x1, y1, x2, y2, rx, ry, w: single; options: TRoundRectangleOptions; APixelCenteredCoordinates: boolean);\nvar rdiff: single;\n  temp: Single;\nbegin\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n\n  if rx < 0 then\n    rx := -rx;\n  if ry < 0 then\n    ry := -ry;\n  if 2*rx > x2-x1 then rx := (x2-x1)/2;\n  if 2*ry > y2-y1 then ry := (y2-y1)/2;\n  rdiff := w*(sqrt(2)-1);\n  FOuterBorder := TFillRoundRectangleInfo.Create(x1-w/2,y1-w/2,x2+w/2,y2+w/2, rx+rdiff, ry+rdiff, options, APixelCenteredCoordinates);\n  if (abs(x2-x1) > w) and (abs(y2-y1) > w) then\n  begin\n    if (rx-rdiff <= 0) or (ry-rdiff <= 0) then\n      FInnerBorder := TFillRoundRectangleInfo.Create(x1+w/2, y1+w/2, x2-w/2, y2-w/2, 0,0, options, APixelCenteredCoordinates)\n    else\n      FInnerBorder := TFillRoundRectangleInfo.Create(x1+w/2, y1+w/2, x2-w/2, y2-w/2, rx-rdiff, ry-rdiff, options, APixelCenteredCoordinates);\n    FInnerBorder.WindingFactor := -1;\n  end\n  else\n    FInnerBorder := nil;\nend;\n\nfunction TFillBorderRoundRectInfo.GetBounds: TRect;\nbegin\n  result := FOuterBorder.GetBounds;\nend;\n\nfunction TFillBorderRoundRectInfo.SegmentsCurved: boolean;\nbegin\n  Result:= FOuterBorder.SegmentsCurved;\n  if FInnerBorder <> nil then result := result or FInnerBorder.SegmentsCurved;\nend;\n\nfunction TFillBorderRoundRectInfo.NbMaxIntersection: integer;\nbegin\n  Result := 4;\nend;\n\nprocedure TFillBorderRoundRectInfo.ComputeIntersection(cury: single;\n      var inter: ArrayOfTIntersectionInfo; var nbInter: integer);\nbegin\n  FOuterBorder.ComputeIntersection(cury, inter, nbInter);\n  if FInnerBorder <> nil then\n    FInnerBorder.ComputeIntersection(cury, inter, nbInter);\nend;\n\ndestructor TFillBorderRoundRectInfo.Destroy;\nbegin\n  FOuterBorder.Free;\n  FInnerBorder.Free;\n  inherited Destroy;\nend;\n\ninitialization\n\n  Randomize;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafilterblur.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Various blur tasks implemented with software (using regular CPU) }\nunit BGRAFilterBlur;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRABitmapTypes, BGRAFilterType;\n\ntype\n  { Blur task for custom filter }\n  TCustomBlurTask = class(TFilterTask)\n  private\n    FBounds: TRect;\n    FMask: TCustomUniversalBitmap;\n    FMaskOwned: boolean;\n  public\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect; AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean = false);\n    destructor Destroy; override;\n  protected\n    procedure DoExecute; override;\n  end;\n\n  { Blur task for radial blur }\n  TRadialBlurTask = class(TFilterTask)\n  private\n    FBounds: TRect;\n    FRadiusX,FRadiusY: single;\n    FBlurType: TRadialBlurType;\n  public\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect; radius: single;\n                       blurType: TRadialBlurType); overload;\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect; radiusX,radiusY: single;\n                       blurType: TRadialBlurType); overload;\n  protected\n    procedure DoExecute; override;\n  end;\n\n  { Blur task for motion blur }\n  TMotionBlurTask = class(TFilterTask)\n  private\n    FBounds: TRect;\n    FDistance,FAngle: single;\n    FOriented: boolean;\n  public\n    constructor Create(ABmp: TBGRACustomBitmap; ABounds: TRect; ADistance, AAngle: single; AOriented: boolean);\n  protected\n    procedure DoExecute; override;\n  end;\n\nprocedure FilterBlurCustom(bmp: TCustomUniversalBitmap; ABounds: TRect;\n   blurMask: TCustomUniversalBitmap; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nprocedure FilterBlurMotion(bmp: TCustomUniversalBitmap; ABounds: TRect; distance: single;\n  angle: single; oriented: boolean; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nprocedure FilterBlurRadial(bmp: TCustomUniversalBitmap; ABounds: TRect; radiusX,radiusY: single;\n  blurType: TRadialBlurType; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nfunction FilterBlurRadial(ABitmap:TCustomUniversalBitmap; ARadiusX,ARadiusY: single; ABlurType: TRadialBlurType): TCustomUniversalBitmap;\n\nimplementation\n\nuses Math, SysUtils, BGRAGrayscaleMask,\n  BGRAGradientScanner;\n\ntype\n  { Blur task for box blur }\n  TBoxBlurTask = class(TFilterTask)\n  private\n    FBounds: TRect;\n    FRadiusX,FRadiusY: single;\n  public\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect; radius: single); overload;\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect; radiusX,radiusY: single); overload;\n  protected\n    procedure DoExecute; override;\n  end;\n\n{ TCustomBlurTask }\n\nconstructor TCustomBlurTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect;\n  AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\n  if AMaskIsThreadSafe then\n  begin\n    FMask := AMask;\n    FMaskOwned := false;\n  end else\n  begin\n    FMask := AMask.Duplicate;\n    FMaskOwned := true;\n  end;\nend;\n\ndestructor TCustomBlurTask.Destroy;\nbegin\n  If FMaskOwned then FreeAndNil(FMask);\n  inherited Destroy;\nend;\n\nprocedure TCustomBlurTask.DoExecute;\nbegin\n  FilterBlurCustom(FSource,FBounds,FMask,Destination,@GetShouldStop);\nend;\n\n{ TMotionBlurTask }\n\nconstructor TMotionBlurTask.Create(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  ADistance, AAngle: single; AOriented: boolean);\nbegin\n  SetSource(ABmp);\n  FBounds := ABounds;\n  FDistance := ADistance;\n  FAngle := AAngle;\n  FOriented:= AOriented;\nend;\n\nprocedure TMotionBlurTask.DoExecute;\nbegin\n  FilterBlurMotion(FSource,FBounds,FDistance,FAngle,FOriented,Destination,@GetShouldStop);\nend;\n\n{ TRadialBlurTask }\n\nconstructor TRadialBlurTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect;\n  radius: single; blurType: TRadialBlurType);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\n  FRadiusX := radius;\n  FRadiusY := radius;\n  FBlurType:= blurType;\nend;\n\nconstructor TRadialBlurTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect;\n  radiusX, radiusY: single; blurType: TRadialBlurType);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\n  FRadiusX := radiusX;\n  FRadiusY := radiusY;\n  FBlurType:= blurType;\nend;\n\nprocedure TRadialBlurTask.DoExecute;\nbegin\n  FilterBlurRadial(FSource,FBounds,FRadiusX,FRadiusY,FBlurType,Destination,@GetShouldStop);\nend;\n\nprocedure FilterBlurBoxRGBA(ASource: TCustomUniversalBitmap; ABounds: TRect; ARadiusX,ARadiusY: single;\n         ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc=nil);\nvar oldClip: TRect;\nconst\n  factMainX = 16;\n  factMainY = 16;\ntype\n  TAccumulator = LongWord;\n{$i blurbox.inc}\n\nprocedure FilterBlurBoxRGBA64(ASource: TCustomUniversalBitmap; ABounds: TRect; ARadiusX,ARadiusY: single;\n         ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc=nil);\nvar oldClip: TRect;\nconst\n  factMainX = 16;\n  factMainY = 16;\ntype\n  TAccumulator = UInt64;\n{$DEFINE PARAM_USE_INC64}\n{$i blurbox.inc}\n\nprocedure FilterBlurBoxByte(ASource: TCustomUniversalBitmap; ABounds: TRect; ARadiusX,ARadiusY: single;\n         ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc=nil);\nvar oldClip: TRect;\nconst\n  factMainX = 16;\n  factMainY = 16;\ntype\n  TAccumulator = LongWord;\n{$DEFINE PARAM_BYTEMASK}\n{$i blurbox.inc}\n\nprocedure FilterBlurBoxByte64(ASource: TCustomUniversalBitmap; ABounds: TRect; ARadiusX,ARadiusY: single;\n         ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc=nil);\nvar oldClip: TRect;\nconst\n  factMainX = 16;\n  factMainY = 16;\ntype\n  TAccumulator = UInt64;\n{$DEFINE PARAM_BYTEMASK}\n{$DEFINE PARAM_USE_INC64}\n{$i blurbox.inc}\n\nprocedure FilterBlurBox(ASource: TCustomUniversalBitmap; ABounds: TRect; ARadiusX,ARadiusY: single;\n         ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc=nil);\nconst\n    factMainX = 16;\n    factMainY = 16;\nvar\n  totalSum: UInt64;\n  factExtraX,factExtraY: UInt32or64;\n  {$IFNDEF CPU64}need64: Boolean;{$ENDIF}\nbegin\n  if ADestination.Colorspace <> ASource.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n\n  totalSum := (2*ceil(ARadiusX)+1)*(2*ceil(ARadiusY)+1);\n  factExtraX := trunc(frac(ARadiusX+0.5/factMainX)*factMainX);\n  factExtraY := trunc(frac(ARadiusY+0.5/factMainY)*factMainY);\n  if factExtraX > 0 then totalSum := totalSum * factMainX;\n  if factExtraY > 0 then totalSum := totalSum * factMainY;\n\n  if ASource.Colorspace = TBGRAPixelColorspace then\n  begin\n    {$IFNDEF CPU64}\n    need64 := totalSum > high(LongWord) div (256*256);\n    if not need64 then\n     FilterBlurBoxRGBA(ASource, ABounds, ARadiusX,ARadiusY, ADestination, ACheckShouldStop) else\n    {$ENDIF}\n    FilterBlurBoxRGBA64(ASource, ABounds, ARadiusX,ARadiusY, ADestination, ACheckShouldStop)\n  end\n  else if ASource.Colorspace = TByteMaskColorspace then\n  begin\n    {$IFNDEF CPU64}\n    need64 := totalSum > high(LongWord) div 256;\n    if not need64 then\n     FilterBlurBoxByte(ASource, ABounds, ARadiusX,ARadiusY, ADestination, ACheckShouldStop) else\n    {$ENDIF}\n    FilterBlurBoxByte64(ASource, ABounds, ARadiusX,ARadiusY, ADestination, ACheckShouldStop);\n  end\n  else raise exception.Create('Unexpected colorspace: '+ASource.Colorspace.GetName);\nend;\n\n{ This is a clever solution for fast computing of the blur\n  effect : it stores an array of vertical sums forming a square\n  around the pixel which moves with it. For each new pixel,\n  the vertical sums are kept except for the last column of\n  the square }\nprocedure FilterBlurFastRGBA(bmp: TCustomUniversalBitmap; ABounds: TRect;\n  radiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\n {$IFDEF CPU64}{$DEFINE FASTBLUR_DOUBLE}{$ENDIF}\n  const BitMargin = 16;\n  type\n    PRowSum = ^TRowSum;\n    TRegularRowValue = UInt32or64;\n    TRowSum = record\n      sumR,sumG,sumB,rgbDiv,sumA,aDiv: TRegularRowValue;\n    end;\n    TExtendedRowValue = {$IFDEF FASTBLUR_DOUBLE}double{$ELSE}uint64{$ENDIF};\n    TExtendedRowSum = record\n      sumR,sumG,sumB,rgbDiv,sumA,aDiv: TExtendedRowValue;\n    end;\n\n  procedure IncExt(var ADest: TExtendedRowValue; ADelta: TExtendedRowValue);\n  begin\n    ADest := ADest + ADelta;\n  end;\n\n  procedure AccumulatePixel(psrc: Pointer; w: UInt32or64; var sums: TRowSum; verticalWeightShift: Int32or64); inline;\n  var\n    c: LongWord;\n  begin\n    with sums do\n    begin\n      c := PLongWord(psrc)^;\n      Inc(aDiv, w);\n      w := w * ((c shr TBGRAPixel_AlphaShift) and $ff);\n      inc(sumA, w);\n      w := w shr verticalWeightShift;\n      inc(rgbDiv, w);\n      {$hints off}\n      inc(sumR, ((c shr TBGRAPixel_RedShift) and $ff)*w );\n      inc(sumG, ((c shr TBGRAPixel_GreenShift) and $ff)*w );\n      inc(sumB, ((c shr TBGRAPixel_BlueShift) and $ff)*w );\n      {$hints on}\n    end;\n  end;\n\n  procedure AccumulateExtended(var ex: TExtendedRowSum; psum: PRowSum; w: UInt32or64); inline;\n  begin\n    with psum^ do\n    begin\n      IncExt(ex.sumA, TExtendedRowValue(sumA)*w);\n      IncExt(ex.aDiv, TExtendedRowValue(aDiv)*w);\n      IncExt(ex.sumR, TExtendedRowValue(sumR)*w);\n      IncExt(ex.sumG, TExtendedRowValue(sumG)*w);\n      IncExt(ex.sumB, TExtendedRowValue(sumB)*w);\n      IncExt(ex.rgbDiv, TExtendedRowValue(rgbDiv)*w);\n    end;\n  end;\n\n  procedure AccumulateShr(var total: TRowSum; psum: PRowSum; w: UInt32or64; horizontalWeightShift: Int32or64); inline;\n  var\n    addDiv2: Int32or64;\n  begin\n    with psum^ do\n    begin\n      addDiv2 := 1 shl (horizontalWeightShift-1);\n      inc(total.sumA, (sumA*w+addDiv2) shr horizontalWeightShift );\n      inc(total.aDiv, (aDiv*w+addDiv2) shr horizontalWeightShift );\n      inc(total.sumR, (sumR*w+addDiv2) shr horizontalWeightShift );\n      inc(total.sumG, (sumG*w+addDiv2) shr horizontalWeightShift );\n      inc(total.sumB, (sumB*w+addDiv2) shr horizontalWeightShift );\n      inc(total.rgbDiv, (rgbDiv*w+addDiv2) shr horizontalWeightShift );\n    end;\n  end;\n\n  procedure AccumulateNormal(var total: TRowSum; psum: PRowSum; w: UInt32or64); inline;\n  begin\n    with psum^ do\n    begin\n      inc(total.sumA, sumA*w );\n      inc(total.aDiv, aDiv*w );\n      inc(total.sumR, sumR*w );\n      inc(total.sumG, sumG*w );\n      inc(total.sumB, sumB*w );\n      inc(total.rgbDiv, rgbDiv*w );\n    end;\n  end;\n\n  procedure ComputeExtendedAverage(const sum: TExtendedRowSum; pdest: pointer); inline;\n  {$IFDEF FASTBLUR_DOUBLE}\n  var v: uint32or64;\n  {$ELSE}\n  var rgbDivShr1: TExtendedRowValue;\n  {$ENDIF}\n  begin\n    if (sum.aDiv <= 0) or (sum.rgbDiv <= 0) then\n    begin\n      PBGRAPixel(pdest)^ := BGRAPixelTransparent;\n      exit;\n    end;\n    {$IFDEF FASTBLUR_DOUBLE}\n    v := round(sum.sumA/sum.aDiv);\n    if v > 255 then PBGRAPixel(pdest)^.alpha := 255 else PBGRAPixel(pdest)^.alpha := v;\n    v := round(sum.sumR/sum.rgbDiv);\n    if v > 255 then PBGRAPixel(pdest)^.red := 255 else PBGRAPixel(pdest)^.red := v;\n    v := round(sum.sumG/sum.rgbDiv);\n    if v > 255 then PBGRAPixel(pdest)^.green := 255 else PBGRAPixel(pdest)^.green := v;\n    v := round(sum.sumB/sum.rgbDiv);\n    if v > 255 then PBGRAPixel(pdest)^.blue := 255 else PBGRAPixel(pdest)^.blue := v;\n    {$ELSE}\n    rgbDivShr1:= sum.rgbDiv shr 1;\n    PLongWord(pdest)^ := (((sum.sumA+sum.aDiv shr 1) div sum.aDiv) shl TBGRAPixel_AlphaShift)\n    or (((sum.sumR+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_RedShift)\n    or (((sum.sumG+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_GreenShift)\n    or (((sum.sumB+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_BlueShift);\n    {$ENDIF}\n  end;\n\n  procedure ComputeClampedAverage(const sum: TRowSum; pdest: pointer); inline;\n  var v: UInt32or64;\n  begin\n    if (sum.aDiv = 0) or (sum.rgbDiv = 0) then\n    begin\n      PBGRAPixel(pdest)^ := BGRAPixelTransparent;\n      exit;\n    end;\n    v := (sum.sumA+sum.aDiv shr 1) div sum.aDiv;\n    if v > 255 then PBGRAPixel(pdest)^.alpha := 255 else PBGRAPixel(pdest)^.alpha := v;\n    v := (sum.sumR+sum.rgbDiv shr 1) div sum.rgbDiv;\n    if v > 255 then PBGRAPixel(pdest)^.red := 255 else PBGRAPixel(pdest)^.red := v;\n    v := (sum.sumG+sum.rgbDiv shr 1) div sum.rgbDiv;\n    if v > 255 then PBGRAPixel(pdest)^.green := 255 else PBGRAPixel(pdest)^.green := v;\n    v := (sum.sumB+sum.rgbDiv shr 1) div sum.rgbDiv;\n    if v > 255 then PBGRAPixel(pdest)^.blue := 255 else PBGRAPixel(pdest)^.blue := v;\n  end;\n\n  procedure ComputeAverage(const sum: TRowSum; pdest: pointer); inline;\n  var rgbDivShr1: UInt32or64;\n  begin\n    if (sum.aDiv = 0) or (sum.rgbDiv = 0) then\n    begin\n      PBGRAPixel(pdest)^ := BGRAPixelTransparent;\n      exit;\n    end;\n    rgbDivShr1:= sum.rgbDiv shr 1;\n    PLongWord(pdest)^ := (((sum.sumA+sum.aDiv shr 1) div sum.aDiv) shl TBGRAPixel_AlphaShift)\n    or (((sum.sumR+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_RedShift)\n    or (((sum.sumG+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_GreenShift)\n    or (((sum.sumB+rgbDivShr1) div sum.rgbDiv) shl TBGRAPixel_BlueShift);\n  end;\n\n  {$I blurfast.inc}\n\nprocedure FilterBlurFastByte(bmp: TCustomUniversalBitmap; ABounds: TRect;\nradiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\n\n  const BitMargin = 8;\n  type\n    PRowSum = ^TRowSum;\n    TRegularRowValue = UInt32or64;\n    TRowSum = record\n      sumA,aDiv: TRegularRowValue;\n    end;\n    TExtendedRowValue = {$IFDEF FASTBLUR_DOUBLE}double{$ELSE}uint64{$ENDIF};\n    TExtendedRowSum = record\n      sumA,aDiv: TExtendedRowValue;\n    end;\n\n  procedure IncExt(var ADest: TExtendedRowValue; ADelta: TExtendedRowValue);\n  begin\n    ADest := ADest + ADelta;\n  end;\n\n  procedure AccumulatePixel(psrc: Pointer; w: UInt32or64; var sums: TRowSum; verticalWeightShift: Int32or64); inline;\n  begin\n    with sums do\n    begin\n      Inc(aDiv, w);\n      inc(sumA, w*PByte(psrc)^ shr verticalWeightShift);\n    end;\n  end;\n\n  procedure AccumulateExtended(var ex: TExtendedRowSum; psum: PRowSum; w: UInt32or64); inline;\n  begin\n    with psum^ do\n    begin\n      IncExt(ex.sumA, TExtendedRowValue(sumA)*w);\n      IncExt(ex.aDiv, TExtendedRowValue(aDiv)*w);\n    end;\n  end;\n\n  procedure AccumulateShr(var total: TRowSum; psum: PRowSum; w: UInt32or64; horizontalWeightShift: Int32or64); inline;\n  var\n    addDiv2: Int32or64;\n  begin\n    with psum^ do\n    begin\n      addDiv2 := 1 shl (horizontalWeightShift-1);\n      inc(total.sumA, (sumA*w+addDiv2) shr horizontalWeightShift );\n      inc(total.aDiv, (aDiv*w+addDiv2) shr horizontalWeightShift );\n    end;\n  end;\n\n  procedure AccumulateNormal(var total: TRowSum; psum: PRowSum; w: UInt32or64); inline;\n  begin\n    with psum^ do\n    begin\n      inc(total.sumA, sumA*w );\n      inc(total.aDiv, aDiv*w );\n    end;\n  end;\n\n  procedure ComputeExtendedAverage(const sum: TExtendedRowSum; pdest: pointer); inline;\n  {$IFDEF FASTBLUR_DOUBLE}\n  var v: uint32or64;\n  {$ENDIF}\n  begin\n    if sum.aDiv <= 0 then\n    begin\n      PByte(pdest)^ := 0;\n      exit;\n    end;\n    {$IFDEF FASTBLUR_DOUBLE}\n    v := round(sum.sumA/sum.aDiv);\n    if v > 255 then PByte(pdest)^ := 255 else PByte(pdest)^ := v;\n    {$ELSE}\n    PByte(pdest)^ := (sum.sumA+sum.aDiv shr 1) div sum.aDiv;\n    {$ENDIF}\n  end;\n\n  procedure ComputeClampedAverage(const sum: TRowSum; pdest: pointer); inline;\n  var v: UInt32or64;\n  begin\n    if sum.aDiv = 0 then\n    begin\n      PByte(pdest)^ := 0;\n      exit;\n    end;\n    v := (sum.sumA+sum.aDiv shr 1) div sum.aDiv;\n    if v > 255 then PByte(pdest)^ := 255 else PByte(pdest)^ := v;\n  end;\n\n  procedure ComputeAverage(const sum: TRowSum; pdest: pointer); inline;\n  begin\n    if sum.aDiv = 0 then\n    begin\n      PByte(pdest)^ := 0;\n      exit;\n    end;\n    PByte(pdest)^ := (sum.sumA+sum.aDiv shr 1) div sum.aDiv;\n  end;\n\n  {$I blurfast.inc}\n\nprocedure FilterBlurFast(bmp: TCustomUniversalBitmap; ABounds: TRect;\n  radiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nbegin\n  if ADestination.Colorspace <> bmp.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n  if bmp.Colorspace = TBGRAPixelColorspace then\n    FilterBlurFastRGBA(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop)\n  else if bmp.Colorspace = TByteMaskColorspace then\n    FilterBlurFastByte(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\nend;\n\n{ Normal radial blur compute a blur mask with a GradientFill and\n  then posterize to optimize general purpose blur }\nprocedure FilterBlurRadialNormal(bmp: TCustomUniversalBitmap;\n  ABounds: TRect; radiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  blurShape: TGrayscaleMask;\n  n: Int32or64;\n  p: PByte;\n  shift, addRound: LongWord;\n  grad: TBGRAGradientScanner;\n  minRadius,maxRadius: single;\n  oldClip: TRect;\nbegin\n  if (radiusX <= 0) and (radiusY <= 0) then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,bmp,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  blurShape := TGrayscaleMask.Create(2 * ceil(radiusX) + 1, 2 * ceil(radiusY) + 1);\n  grad := TBGRAGradientScanner.Create(BGRAWhite, BGRABlack, gtRadial,\n                pointF(ceil(radiusX), ceil(radiusY)),\n                pointF(ceil(radiusX)-radiusX-0.5, ceil(radiusY)),\n                pointF(ceil(radiusX), ceil(radiusY)-radiusY-0.5),false);\n  blurShape.Fill(grad, dmSet);\n  grad.Free;\n  minRadius := min(radiusX,radiusY);\n  maxRadius := max(radiusX,radiusY);\n  shift := max(0,min(ceil((maxRadius-8)/2), floor(minRadius)));\n  if shift > 0 then\n  begin\n    if shift > 5 then shift := 5;\n    addRound := 1 shl (shift-1);\n    p := blurShape.Data;\n    for n := 0 to blurShape.NbPixels-1 do\n    begin\n      p^ := (p^+addRound) shr shift;\n      inc(p);\n    end;\n  end;\n  FilterBlurCustom(bmp, ABounds, blurShape, ADestination, ACheckShouldStop);\n  blurShape.Free;\nend;\n\n{ Blur disk creates a disk mask with a FillEllipse }\nprocedure FilterBlurDisk(bmp: TCustomUniversalBitmap; ABounds: TRect; radiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  blurShape: TGrayscaleMask;\n  oldClip: TRect;\nbegin\n  if (radiusX <= 0) and (radiusY <= 0) then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,bmp,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  blurShape := TGrayscaleMask.Create(2 * ceil(radiusX) + 1, 2 * ceil(radiusY) + 1, BGRABlack);\n  blurShape.FillEllipseAntialias(ceil(radiusX), ceil(radiusY), radiusX + 0.5, radiusY + 0.5, BGRAWhite);\n  FilterBlurCustom(bmp, ABounds, blurShape, ADestination, ACheckShouldStop);\n  blurShape.Free;\nend;\n\n{ Corona blur use a circle as mask }\nprocedure FilterBlurCorona(bmp: TCustomUniversalBitmap; ABounds: TRect; radiusX,radiusY: single; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  blurShape: TGrayscaleMask;\n  oldClip: TRect;\nbegin\n  if (radiusX <= 0) and (radiusY <= 0) then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,bmp,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  blurShape := TGrayscaleMask.Create(2 * ceil(radiusX) + 1, 2 * ceil(radiusY) + 1, BGRABlack);\n  blurShape.EllipseAntialias(ceil(radiusX), ceil(radiusY), radiusX, radiusY, BGRAWhite, 1);\n  FilterBlurCustom(bmp, ABounds, blurShape, ADestination, ACheckShouldStop);\n  blurShape.Free;\nend;\n\nfunction FilterBlurRadial(ABitmap:TCustomUniversalBitmap; ARadiusX,ARadiusY: single; ABlurType: TRadialBlurType): TCustomUniversalBitmap;\nbegin\n  result := ABitmap.NewBitmap(ABitmap.Width, ABitmap.Height);\n  FilterBlurRadial(ABitmap, BGRAClasses.Rect(0,0,ABitmap.Width,ABitmap.Height),\n    ARadiusX, ARadiusY, ABlurType, result, nil);\nend;\n\nprocedure FilterBlurRadial(bmp: TCustomUniversalBitmap; ABounds: TRect; radiusX,radiusY: single;\n  blurType: TRadialBlurType; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  oldClip: TRect;\nbegin\n  if (radiusX <= 0) and (radiusY <= 0) then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,bmp,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  if radiusX < 0 then radiusX := 0;\n  if radiusY < 0 then radiusY := 0;\n  case blurType of\n    rbCorona:  FilterBlurCorona(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\n    rbDisk:    FilterBlurDisk(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\n    rbNormal:  FilterBlurRadialNormal(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\n    rbFast:    FilterBlurFast(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\n    rbPrecise: FilterBlurRadialNormal(bmp, ABounds, radiusX / 10 + 0.5, radiusY/10 + 0.5, ADestination, ACheckShouldStop);\n    rbBox:     FilterBlurBox(bmp, ABounds, radiusX,radiusY, ADestination, ACheckShouldStop);\n  end;\nend;\n\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadius: single;\n  ABlurType: TRadialBlurType): TFilterTask; overload;\nbegin\n  if ABlurType = rbBox then\n    result := TBoxBlurTask.Create(ABmp,ABounds,ARadius)\n  else\n    result := TRadialBlurTask.Create(ABmp,ABounds,ARadius,ABlurType);\nend;\n\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  ARadiusX, ARadiusY: single; ABlurType: TRadialBlurType): TFilterTask; overload;\nbegin\n  if ABlurType = rbBox then\n    result := TBoxBlurTask.Create(ABmp,ABounds,ARadiusX,ARadiusY)\n  else\n    result := TRadialBlurTask.Create(ABmp,ABounds,ARadiusX,ARadiusY,ABlurType);\nend;\n\n{ This filter draws an antialiased line to make the mask, and\n  if the motion blur is oriented, does a GradientFill to orient it }\nprocedure FilterBlurMotion(bmp: TCustomUniversalBitmap; ABounds: TRect; distance: single;\n  angle: single; oriented: boolean; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  blurShape: TBGRACustomBitmap;\n  intRadius: integer;\n  dx, dy, r: single;\n  oldClip: TRect;\nbegin\n  if distance < 1e-6 then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,bmp,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  dx := cos(angle * Pi / 180);\n  dy := sin(angle * Pi / 180);\n  if not oriented and (abs(dx)<1e-6) then\n    FilterBlurBox(bmp, ABounds,0,distance/2, ADestination, ACheckShouldStop)\n  else if not oriented and (abs(dy)<1e-6) then\n    FilterBlurBox(bmp, ABounds,distance/2,0, ADestination, ACheckShouldStop)\n  else\n  begin\n    r  := distance / 2;\n    intRadius := ceil(r);\n    blurShape := BGRABitmapFactory.Create(2 * intRadius + 1, 2 * intRadius + 1, BGRABlack);\n    blurShape.DrawLineAntialias(intRadius - dx * r, intRadius - dy *\n      r, intRadius + dx * r, intRadius + dy * r, BGRAWhite, 1, True);\n    if oriented then\n      blurShape.GradientFill(0, 0, blurShape.Width, blurShape.Height,\n        BGRAPixelTransparent, BGRABlack, gtRadial, pointF(intRadius -\n        dx * r, intRadius - dy * r),\n        pointF(intRadius + dx * (r + 0.5), intRadius + dy * (r + 0.5)),\n        dmFastBlend, False);\n    FilterBlurCustom(bmp, ABounds, blurShape, ADestination, ACheckShouldStop);\n    blurShape.Free;\n  end;\nend;\n\nfunction CreateMotionBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  ADistance, AAngle: single; AOriented: boolean): TFilterTask;\nbegin\n  result := TMotionBlurTask.Create(ABmp,ABounds,ADistance,AAngle,AOriented);\nend;\n\n{ General purpose blur : compute pixel sum according to the mask and then\n  compute only difference while scanning from the left to the right }\nprocedure FilterBlurSmallMask(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc); forward;\nprocedure FilterBlurSmallMaskWithShift(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; maskShift: integer; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc); forward;\nprocedure FilterBlurBigMask(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc); forward;\nprocedure FilterBlurMask64(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc); forward;\n\n//make sure value is in the range 0..255\nfunction clampByte(value: Int32or64): UInt32or64; inline;\nbegin\n  if value <= 0 then result := 0 else\n  if value >= 255 then result := 255 else\n    result := value;\nend;\n\nfunction CreateBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  AMask: TBGRACustomBitmap; AMaskIsThreadSafe: boolean): TFilterTask;\nbegin\n  result := TCustomBlurTask.Create(ABmp,ABounds,AMask,AMaskIsThreadSafe);\nend;\n\nprocedure FilterBlurCustom(bmp: TCustomUniversalBitmap;\n  ABounds: TRect; blurMask: TCustomUniversalBitmap; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar\n  maskSum: int64;\n  p: PByteMask;\n  y, count, qty, maskShift, pStride: integer;\nbegin\n  maskSum := 0;\n  for y:= 0 to blurMask.Height-1 do\n  begin\n    blurMask.ScanMoveTo(0,Y);\n    count := blurMask.Width;\n    while count > 0 do\n    begin\n      qty := count;\n      blurMask.ScanNextMaskChunk(qty, p, pStride);\n      dec(count, qty);\n      while qty > 0 do\n      begin\n        inc(maskSum,p^.gray);\n        inc(p, pStride);\n        dec(qty);\n      end;\n    end;\n  end;\n  if bmp.Colorspace = TBGRAPixelColorspace then\n  begin\n    maskShift := 0;\n    while maskSum > 32768 do\n    begin\n      inc(maskShift);\n      maskSum := maskSum shr 1;\n    end;\n    //check if sum can be stored in a 32-bit signed integer\n    if maskShift = 0 then\n      FilterBlurSmallMask(bmp,blurMask,ABounds,ADestination,ACheckShouldStop) else\n    {$IFDEF CPU32}\n    if maskShift < 8 then\n      FilterBlurSmallMaskWithShift(bmp,blurMask,maskShift,ABounds,ADestination,ACheckShouldStop) else\n      FilterBlurBigMask(bmp,blurMask,ABounds,ADestination,ACheckShouldStop);\n    {$ELSE}\n      FilterBlurMask64(bmp,blurMask,ABounds,ADestination,ACheckShouldStop);\n    {$ENDIF}\n  end else\n  if bmp.Colorspace = TByteMaskColorspace then\n  begin\n    if maskSum > 32768*255 then\n      FilterBlurMask64(bmp, blurMask, ABounds, Adestination, ACheckShouldStop)\n    else\n      FilterBlurSmallMask(bmp, blurMask, ABounds, Adestination, ACheckShouldStop)\n  end else\n    raise exception.Create('Unexpected source colorspace');\nend;\n\ntype\n  TBlurClearSumProc = procedure(AData: Pointer);\n  TBlurAccumulateProc = procedure(AData: Pointer; pPix: pointer; maskAlpha: Int32or64);\n  TBlurComputeAverageProc = procedure(AData: Pointer; pPix: pointer);\n\nprocedure FilterBlurGeneric(bmp: TCustomUniversalBitmap; blurMask: TCustomUniversalBitmap;\n  ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc;\n  AClearSum: TBlurClearSumProc; AAccumulate: TBlurAccumulateProc;\n  AComputeAverage: TBlurComputeAverageProc; AData: Pointer);\n\n  {$I blurnormal.inc}\n\n//32-bit blur with shift\ntype\n  TFilterBlurSmallMaskWithShift_Sum = record\n      sumR, sumG, sumB,\n      sumA, Adiv, RGBdiv : Int32or64;\n      maskShift: integer;\n    end;\n\nprocedure FilterBlurSmallMaskWithShift_ClearSum(AData: pointer);\nbegin\n  with TFilterBlurSmallMaskWithShift_Sum(AData^) do\n  begin\n    sumR   := 0;\n    sumG   := 0;\n    sumB   := 0;\n    sumA   := 0;\n    Adiv   := 0;\n    RGBdiv := 0;\n  end;\nend;\n\nprocedure FilterBlurSmallMaskWithShift_ComputeAverage(AData: pointer; pPix: pointer);\nvar temp,rgbDivShr1: Int32or64;\nbegin\n  with TFilterBlurSmallMaskWithShift_Sum(AData^) do\n  if (Adiv <= 0) or (RGBdiv <= 0) then\n    PBGRAPixel(pPix)^ := BGRAPixelTransparent else\n  begin\n    temp := sumA + Adiv shr 1;\n    if temp < Adiv then\n      PBGRAPixel(pPix)^ := BGRAPixelTransparent\n    else\n    begin\n      rgbDivShr1 := RGBdiv shr 1;\n      PBGRAPixel(pPix)^.alpha := temp div Adiv;\n      PBGRAPixel(pPix)^.red   := clampByte((sumR + rgbDivShr1) div RGBdiv);\n      PBGRAPixel(pPix)^.green := clampByte((sumG + rgbDivShr1) div RGBdiv);\n      PBGRAPixel(pPix)^.blue  := clampByte((sumB + rgbDivShr1) div RGBdiv);\n    end;\n  end;\nend;\n\nprocedure FilterBlurSmallMaskWithShift_AccumulateSum(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nvar\n  pixMaskAlpha: Int32or64;\n  tempPixel: TBGRAPixel;\nbegin\n  with TFilterBlurSmallMaskWithShift_Sum(AData^) do\n  begin\n    tempPixel := PBGRAPixel(pPix)^;\n    pixMaskAlpha := maskAlpha * tempPixel.alpha;\n    inc(sumA, pixMaskAlpha);\n    inc(Adiv, maskAlpha);\n    pixMaskAlpha := (LongWord(pixMaskAlpha)+$80000000) shr maskShift - ($80000000 shr maskShift);\n    inc(RGBdiv, pixMaskAlpha);\n    inc(sumR, Int32or64(tempPixel.red) * pixMaskAlpha);\n    inc(sumG, Int32or64(tempPixel.green) * pixMaskAlpha);\n    inc(sumB, Int32or64(tempPixel.blue) * pixMaskAlpha);\n  end;\nend;\n\nprocedure FilterBlurSmallMaskWithShift(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; maskShift: integer; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar Sum: TFilterBlurSmallMaskWithShift_Sum;\nbegin\n  if ADestination.Colorspace <> bmp.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n  if bmp.Colorspace <> TBGRAPixelColorspace then\n    raise exception.Create('Unexpected colorspace: '+bmp.Colorspace.GetName);\n  Sum.maskShift:= maskShift;\n  FilterBlurGeneric(bmp, blurMask, ABounds, ADestination, ACheckShouldStop,\n                    @FilterBlurSmallMaskWithShift_ClearSum,\n                    @FilterBlurSmallMaskWithShift_AccumulateSum,\n                    @FilterBlurSmallMaskWithShift_ComputeAverage, @Sum);\nend;\n\n//32-bit blur\ntype\n  TFilterBlurSmallMask_Sum= record\n    sumR, sumG, sumB, sumA, Adiv : integer;\n  end;\n\nprocedure FilterBlurSmallMask_ClearSum(AData: pointer);\nbegin\n  with TFilterBlurSmallMask_Sum(AData^) do\n  begin\n    sumR   := 0;\n    sumG   := 0;\n    sumB   := 0;\n    sumA   := 0;\n    Adiv   := 0;\n  end;\nend;\n\nprocedure FilterBlurSmallMask_ComputeAverageRGBA(AData: pointer; pPix: pointer);\nvar temp,sumAShr1: integer;\nbegin\n  with TFilterBlurSmallMask_Sum(AData^) do\n  if Adiv <= 0 then PBGRAPixel(pPix)^ := BGRAPixelTransparent else\n  begin\n    temp := sumA + Adiv shr 1;\n    if temp < Adiv then\n      PBGRAPixel(pPix)^ := BGRAPixelTransparent\n    else\n    begin\n      sumAShr1 := sumA shr 1;\n      PBGRAPixel(pPix)^.alpha := temp div Adiv;\n      PBGRAPixel(pPix)^.red   := clampByte((sumR + sumAShr1) div sumA);\n      PBGRAPixel(pPix)^.green := clampByte((sumG + sumAShr1) div sumA);\n      PBGRAPixel(pPix)^.blue  := clampByte((sumB + sumAShr1) div sumA);\n    end;\n  end;\nend;\n\nprocedure FilterBlurSmallMask_ComputeAverageByte(AData: pointer; pPix: pointer);\nbegin\n  with TFilterBlurSmallMask_Sum(AData^) do\n  begin\n    if Adiv <= 0 then PByte(pPix)^ := 0 else\n      PByte(pPix)^ := (sumA + Adiv shr 1) div Adiv;\n  end;\nend;\n\nprocedure FilterBlurSmallMask_AccumulateSumRGBA(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nvar\n  pixMaskAlpha: integer;\n  tempPixel: TBGRAPixel;\nbegin\n  with TFilterBlurSmallMask_Sum(AData^) do\n  begin\n    tempPixel := PBGRAPixel(pPix)^;\n    pixMaskAlpha := integer(maskAlpha) * tempPixel.alpha;\n    inc(sumA, pixMaskAlpha);\n    inc(Adiv, maskAlpha);\n    inc(sumR, integer(tempPixel.red) * pixMaskAlpha);\n    inc(sumG, integer(tempPixel.green) * pixMaskAlpha);\n    inc(sumB, integer(tempPixel.blue) * pixMaskAlpha);\n  end;\nend;\n\nprocedure FilterBlurSmallMask_AccumulateSumByte(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nbegin\n  with TFilterBlurSmallMask_Sum(AData^) do\n  begin\n    inc(sumA, maskAlpha * PByte(pPix)^);\n    inc(Adiv, maskAlpha);\n  end;\nend;\n\nprocedure FilterBlurSmallMask(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar Sum: TFilterBlurSmallMask_Sum;\n  accumulate: TBlurAccumulateProc;\n  computeAverage: TBlurComputeAverageProc;\nbegin\n  if ADestination.Colorspace <> bmp.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n\n  if bmp.Colorspace = TBGRAPixelColorspace then\n  begin\n    accumulate := @FilterBlurSmallMask_AccumulateSumRGBA;\n    computeAverage := @FilterBlurSmallMask_ComputeAverageRGBA\n  end\n  else if bmp.Colorspace = TByteMaskColorspace then\n  begin\n    accumulate := @FilterBlurSmallMask_AccumulateSumByte;\n    computeAverage := @FilterBlurSmallMask_ComputeAverageByte\n  end else\n    raise exception.Create('Unexpected colorspace: '+bmp.Colorspace.GetName);\n\n  FilterBlurGeneric(bmp, blurMask, ABounds, ADestination, ACheckShouldStop,\n                    @FilterBlurSmallMask_ClearSum,accumulate,computeAverage, @Sum);\nend;\n\n//64-bit blur\ntype\n  TFilterBlurMask64_Sum= record\n    sumR, sumG, sumB, sumA, Adiv : int64;\n  end;\n\nprocedure FilterBlurMask64_ClearSum(AData: pointer);\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    sumR   := 0;\n    sumG   := 0;\n    sumB   := 0;\n    sumA   := 0;\n    Adiv   := 0;\n  end;\nend;\n\nprocedure FilterBlurMask64_ComputeAverageRGBA(AData: pointer; pPix: pointer);\nvar\n  temp, sumAShr1: Int64;\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    if Adiv <= 0 then PBGRAPixel(pPix)^ := BGRAPixelTransparent else\n    begin\n      temp := sumA + Adiv shr 1;\n      if temp < Adiv then\n        PBGRAPixel(pPix)^ := BGRAPixelTransparent\n      else\n      begin\n        sumAShr1 := sumA shr 1;\n        PBGRAPixel(pPix)^.alpha := temp div Adiv;\n        PBGRAPixel(pPix)^.red   := clampByte((sumR + sumAShr1) div sumA);\n        PBGRAPixel(pPix)^.green := clampByte((sumG + sumAShr1) div sumA);\n        PBGRAPixel(pPix)^.blue  := clampByte((sumB + sumAShr1) div sumA);\n      end;\n    end;\n  end;\nend;\n\nprocedure FilterBlurMask64_ComputeAverageConvertRGBAToByteMask(AData: pointer; pPix: pointer);\nvar c: TBGRAPixel;\nbegin\n  FilterBlurMask64_ComputeAverageRGBA(AData, @c);\n  PByteMask(pPix)^ := BGRAToMask(c);\nend;\n\nprocedure FilterBlurMask64_ComputeAverageByte(AData: pointer; pPix: pointer);\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    if Adiv <= 0 then PByte(pPix)^ := 0 else\n      PByte(pPix)^ := (sumA + Adiv shr 1) div Adiv;\n  end;\nend;\n\nprocedure FilterBlurMask64_ComputeAverageConvertByteMaskToRGBA(AData: pointer; pPix: pointer);\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    if Adiv <= 0 then PBGRAPixel(pPix)^ := BGRAPixelTransparent else\n      PBGRAPixel(pPix)^ := MaskToBGRA(TByteMask.New((sumA + Adiv shr 1) div Adiv));\n  end;\nend;\n\nprocedure FilterBlurMask64_AccumulateSumRGBA(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nvar\n  pixMaskAlpha: Int32or64;\n  tempPixel: TBGRAPixel;\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    tempPixel := PBGRAPixel(pPix)^;\n    pixMaskAlpha := maskAlpha * tempPixel.alpha;\n    Inc64(sumA, pixMaskAlpha);\n    Inc64(Adiv, maskAlpha);\n    Inc64(sumR, tempPixel.red * pixMaskAlpha);\n    Inc64(sumG, tempPixel.green * pixMaskAlpha);\n    Inc64(sumB, tempPixel.blue * pixMaskAlpha);\n  end;\nend;\n\nprocedure FilterBlurMask64_AccumulateSumByte(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nbegin\n  with TFilterBlurMask64_Sum(AData^) do\n  begin\n    Inc64(sumA, maskAlpha * PByte(pPix)^);\n    Inc64(Adiv, maskAlpha);\n  end;\nend;\n\nprocedure FilterBlurMask64(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar Sum: TFilterBlurMask64_Sum;\n  accumulate: TBlurAccumulateProc;\n  computeAverage: TBlurComputeAverageProc;\nbegin\n  if ADestination.Colorspace <> bmp.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n\n  if bmp.Colorspace = TBGRAPixelColorspace then\n  begin\n    accumulate := @FilterBlurMask64_AccumulateSumRGBA;\n    computeAverage := @FilterBlurMask64_ComputeAverageRGBA\n  end\n  else if bmp.Colorspace = TByteMaskColorspace then\n  begin\n    accumulate := @FilterBlurMask64_AccumulateSumByte;\n    computeAverage := @FilterBlurMask64_ComputeAverageByte\n  end else\n    raise exception.Create('Unexpected colorspace: '+bmp.Colorspace.GetName);\n\n  FilterBlurGeneric(bmp, blurMask, ABounds, ADestination, ACheckShouldStop,\n                    @FilterBlurMask64_ClearSum,accumulate,computeAverage, @Sum);\nend;\n\n//floating point blur\ntype\n  TFilterBlurBigMask_Sum= record\n    sumR, sumG, sumB, sumA, Adiv : single;\n  end;\n\nprocedure FilterBlurBigMask_ClearSum(AData: pointer);\nbegin\n  with TFilterBlurBigMask_Sum(AData^) do\n  begin\n    sumR   := 0;\n    sumG   := 0;\n    sumB   := 0;\n    sumA   := 0;\n    Adiv   := 0;\n  end;\nend;\n\nprocedure FilterBlurBigMask_ComputeAverage(AData: pointer; pPix: pointer);\nbegin\n  with TFilterBlurBigMask_Sum(AData^) do\n  if Adiv <= 0 then PBGRAPixel(pPix)^ := BGRAPixelTransparent else\n  begin\n    PBGRAPixel(pPix)^.alpha := round(sumA/Adiv);\n    if PBGRAPixel(pPix)^.alpha = 0 then\n      PBGRAPixel(pPix)^ := BGRAPixelTransparent\n    else\n    begin\n      PBGRAPixel(pPix)^.red   := clampByte(round(sumR/sumA));\n      PBGRAPixel(pPix)^.green := clampByte(round(sumG/sumA));\n      PBGRAPixel(pPix)^.blue  := clampByte(round(sumB/sumA));\n    end;\n  end;\nend;\n\nprocedure FilterBlurBigMask_AccumulateSum(AData: pointer; pPix: pointer; maskAlpha: Int32or64);\nvar\n  pixMaskAlpha: Int32or64;\n  tempPixel: TBGRAPixel;\nbegin\n  with TFilterBlurBigMask_Sum(AData^) do\n  begin\n    tempPixel := PBGRAPixel(pPix)^;\n    pixMaskAlpha := maskAlpha * tempPixel.alpha;\n    IncF(sumA, pixMaskAlpha);\n    IncF(Adiv, maskAlpha);\n    IncF(sumR, tempPixel.red * pixMaskAlpha);\n    IncF(sumG, tempPixel.green * pixMaskAlpha);\n    IncF(sumB, tempPixel.blue * pixMaskAlpha);\n  end;\nend;\n\nprocedure FilterBlurBigMask(bmp: TCustomUniversalBitmap;\n  blurMask: TCustomUniversalBitmap; ABounds: TRect; ADestination: TCustomUniversalBitmap; ACheckShouldStop: TCheckShouldStopFunc);\nvar Sum: TFilterBlurBigMask_Sum;\nbegin\n  if ADestination.Colorspace <> bmp.Colorspace then\n    raise exception.Create('Colorspace mismatch');\n  if bmp.Colorspace <> TBGRAPixelColorspace then\n    raise exception.Create('Unexpected colorspace: '+bmp.Colorspace.GetName);\n  FilterBlurGeneric(bmp, blurMask, ABounds, ADestination, ACheckShouldStop,\n                    @FilterBlurBigMask_ClearSum,\n                    @FilterBlurBigMask_AccumulateSum,\n                    @FilterBlurBigMask_ComputeAverage, @Sum);\nend;\n\nconstructor TBoxBlurTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect;\n  radius: single);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\n  FRadiusX := radius;\n  FRadiusY := radius;\nend;\n\nconstructor TBoxBlurTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect;\n  radiusX, radiusY: single);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\n  FRadiusX := max(radiusX,0);\n  FRadiusY := max(radiusY,0);\nend;\n\nprocedure TBoxBlurTask.DoExecute;\nbegin\n  FilterBlurBox(FSource,FBounds,FRadiusX,FRadiusY,Destination,@GetShouldStop);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafilters.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Filters that can be applied to a bitmap. The filters\n  take a source image as a parameter and gives a filtered image as\n  a result. }\nunit BGRAFilters;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRABitmapTypes, BGRAFilterType, BGRAFilterBlur;\n\ntype\n  TFilterTask = BGRAFilterType.TFilterTask;\n\n/////////////////////// PIXELWISE FILTERS ////////////////////////////////\ntype\n  { Grayscale task converts colored pixel into grayscale with same luminosity }\n  TGrayscaleTask = class(TFilterTask)\n  private\n    FBounds: TRect;\n  public\n    constructor Create(bmp: TBGRACustomBitmap; ABounds: TRect);\n  protected\n    procedure DoExecute; override;\n  end;\n\n{ Grayscale converts colored pixel into grayscale with same luminosity }\nfunction FilterGrayscale(bmp: TBGRACustomBitmap): TBGRACustomBitmap; overload;\nfunction FilterGrayscale(bmp: TBGRACustomBitmap; ABounds: TRect): TBGRACustomBitmap; overload;\nfunction CreateGrayscaleTask(bmp: TBGRACustomBitmap; ABounds: TRect): TFilterTask;\n\n{ Normalize use the whole available range of values, making dark colors darkest possible\n  and light colors lightest possible }\nfunction FilterNormalize(bmp: TBGRACustomBitmap;\n  eachChannel: boolean = True): TBGRACustomBitmap; overload;\nfunction FilterNormalize(bmp: TBGRACustomBitmap; ABounds: TRect;\n  eachChannel: boolean = True): TBGRACustomBitmap; overload;\n\n////////////////////// 3X3 FILTERS ////////////////////////////////////////////\n\n{ Sharpen filter add more contrast between pixels }\nfunction FilterSharpen(bmp: TBGRACustomBitmap; AAmount: integer = 256): TBGRACustomBitmap; overload;\nfunction FilterSharpen(bmp: TBGRACustomBitmap; ABounds: TRect; AAmount: integer = 256): TBGRACustomBitmap; overload;\n\n{ Compute a contour, as if the image was drawn with a 2 pixels-wide black pencil }\nfunction FilterContour(bmp: TBGRACustomBitmap; AGammaCorrection: boolean = false): TBGRACustomBitmap;\n\n{ Emboss filter compute a color difference in the angle direction }\nfunction FilterEmboss(bmp: TBGRACustomBitmap; angle: single; AStrength: integer= 64; AOptions: TEmbossOptions = []): TBGRACustomBitmap; overload;\nfunction FilterEmboss(bmp: TBGRACustomBitmap; angle: single; ABounds: TRect; AStrength: integer= 64; AOptions: TEmbossOptions = []): TBGRACustomBitmap; overload;\n\n{ Emboss highlight computes a sort of emboss with 45 degrees angle and\n  with standard selection color (white/black and filled with blue) }\nfunction FilterEmbossHighlight(bmp: TBGRACustomBitmap;\n  FillSelection: boolean; DefineBorderColor: TBGRAPixel): TBGRACustomBitmap;\nfunction FilterEmbossHighlightOffset(bmp: TBGRACustomBitmap;\n  FillSelection: boolean; DefineBorderColor: TBGRAPixel; var Offset: TPoint): TBGRACustomBitmap;\n\n{ The median filter consist in calculating the median value of pixels. Here\n  a square of 9x9 pixel is considered. The median allow to select the most\n  representative colors. The option parameter allow to choose to smooth the\n  result or not. }\nfunction FilterMedian(bmp: TBGRACustomBitmap; Option: TMedianOption): TBGRACustomBitmap;\n\n//////////////////////// DEFORMATION FILTERS /////////////////////////////////\n\n{ Distort the image as if it were on a sphere }\nfunction FilterSphere(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\n\n{ Twirl distortion, i.e. a progressive rotation }\nfunction FilterTwirl(bmp: TBGRACustomBitmap; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3): TBGRACustomBitmap; overload;\nfunction FilterTwirl(bmp: TBGRACustomBitmap; ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3): TBGRACustomBitmap; overload;\n\n{ Distort the image as if it were on a vertical cylinder }\nfunction FilterCylinder(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\n\n{ Compute a plane projection towards infinity (SLOW) }\nfunction FilterPlane(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\n\n{ Rotate filter rotate the image and clip it in the bounding rectangle }\nfunction FilterRotate(bmp: TBGRACustomBitmap; origin: TPointF;\n  angle: single; correctBlur: boolean = false): TBGRACustomBitmap;\n\n///////////////////////// BLUR FILTERS //////////////////////////////////////\n\n{ A radial blur applies a blur with a circular influence, i.e, each pixel\n  is merged with pixels within the specified radius. There is an exception\n  with rbFast blur, the optimization entails a hyperbolic shape. }\ntype TRadialBlurTask = BGRAFilterBlur.TRadialBlurTask;\nfunction FilterBlurRadial(bmp: TBGRACustomBitmap; radius: single; blurType: TRadialBlurType): TBGRACustomBitmap; overload;\nfunction FilterBlurRadial(bmp: TBGRACustomBitmap; radiusX: single; radiusY: single; blurType: TRadialBlurType): TBGRACustomBitmap; overload;\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadius: single; ABlurType: TRadialBlurType): TRadialBlurTask; overload;\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadiusX,ARadiusY: single; ABlurType: TRadialBlurType): TRadialBlurTask; overload;\n\n{ The precise blur allow to specify the blur radius with subpixel accuracy }\nfunction FilterBlurRadialPrecise(bmp: TBGRACustomBitmap; radius: single): TBGRACustomBitmap; deprecated 'Use FilterBlurRadial with blurType:=rbPrecise and radius multiplied by 10';\nfunction CreateRadialPreciseBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadius: single): TRadialBlurTask; deprecated 'Use CreateRadialBlurTask with blurType:=rbPrecise and radius multiplied by 10';\n\n{ Motion blur merge pixels in a direction. The oriented parameter specifies\n  if the weights of the pixels are the same along the line or not. }\ntype TMotionBlurTask = BGRAFilterBlur.TMotionBlurTask;\nfunction FilterBlurMotion(bmp: TBGRACustomBitmap; distance: single; angle: single; oriented: boolean): TBGRACustomBitmap;\nfunction CreateMotionBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ADistance,AAngle: single; AOriented: boolean): TMotionBlurTask;\n\n{ General purpose blur filter, with a blur mask as parameter to describe\n  how pixels influence each other }\nfunction FilterBlur(bmp: TBGRACustomBitmap; AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean = false): TBGRACustomBitmap;\nfunction CreateBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean = false): TFilterTask;\n\n////////////////////////////// OTHER FILTERS /////////////////////////////////\n\n{ SmartZoom x3 is a filter that upsizes 3 times the picture and add\n  pixels that could be logically expected (horizontal, vertical, diagonal lines) }\nfunction FilterSmartZoom3(bmp: TBGRACustomBitmap;\n  Option: TMedianOption): TBGRACustomBitmap;\n\nfunction FilterPixelate(bmp: TBGRACustomBitmap; pixelSize: integer; useResample: boolean; filter: TResampleFilter = rfLinear): TBGRACustomBitmap;\n\nimplementation\n\nuses Math, BGRATransform, SysUtils, BGRAFilterScanner;\n\n/////////////////////// PIXELWISE FILTERS ////////////////////////////////\n\n{ TGrayscaleTask }\n\nconstructor TGrayscaleTask.Create(bmp: TBGRACustomBitmap; ABounds: TRect);\nbegin\n  SetSource(bmp);\n  FBounds := ABounds;\nend;\n\nprocedure TGrayscaleTask.DoExecute;\nvar\n  yb: LongInt;\nbegin\n  if FBounds.IsEmpty then exit;\n  for yb := FBounds.Top to FBounds.bottom - 1 do\n  begin\n    if GetShouldStop(yb) then break;\n    TBGRAFilterScannerGrayscale.ComputeFilterAt(FSource.scanline[yb] + FBounds.left,\n            Destination.scanline[yb] + FBounds.left, FBounds.right-FBounds.left, true);\n  end;\n  Destination.InvalidateBitmap;\nend;\n\n{ Filter grayscale applies BGRAToGrayscale function to all pixels }\nfunction FilterGrayscale(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\nbegin\n  result := FilterGrayscale(bmp,rect(0,0,bmp.width,bmp.Height));\nend;\n\nfunction FilterGrayscale(bmp: TBGRACustomBitmap; ABounds: TRect): TBGRACustomBitmap;\nvar scanner: TBGRAFilterScannerGrayscale;\nbegin\n  result := bmp.NewBitmap(bmp.Width,bmp.Height);\n  scanner := TBGRAFilterScannerGrayscale.Create(bmp,Point(0,0),True);\n  result.FillRect(ABounds,scanner,dmSet);\n  scanner.Free;\nend;\n\nfunction CreateGrayscaleTask(bmp: TBGRACustomBitmap; ABounds: TRect): TFilterTask;\nbegin\n  result := TGrayscaleTask.Create(bmp,ABounds);\nend;\n\nfunction FilterNormalize(bmp: TBGRACustomBitmap; eachChannel: boolean\n  ): TBGRACustomBitmap;\nbegin\n  result := FilterNormalize(bmp, rect(0,0,bmp.Width,bmp.Height), eachChannel);\nend;\n\n{ Normalize compute min-max of specified channel and apply an affine transformation\n  to make it use the full range of values }\nfunction FilterNormalize(bmp: TBGRACustomBitmap; ABounds: TRect;\n  eachChannel: boolean = True): TBGRACustomBitmap;\nvar scanner: TBGRAFilterScannerNormalize;\n  remain: TRect;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  remain := TRect.Intersect(ABounds, rect(0,0,bmp.Width,bmp.Height));\n  if remain.IsEmpty then exit;\n  scanner := TBGRAFilterScannerNormalize.Create(bmp,Point(0,0),remain,eachChannel);\n  result.FillRect(remain,scanner,dmSet);\n  scanner.Free;\nend;\n\n////////////////////// 3X3 FILTERS ////////////////////////////////////////////\n\n{ This filter compute for each pixel the mean of the eight surrounding pixels,\n  then the difference between this average pixel and the pixel at the center\n  of the square. Finally the difference is added to the new pixel, exagerating\n  its difference with its neighbours. }\nfunction FilterSharpen(bmp: TBGRACustomBitmap; ABounds: TRect; AAmount: integer = 256): TBGRACustomBitmap;\nvar scanner: TBGRAFilterScanner;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  if ABounds.IsEmpty then exit;\n  scanner := TBGRASharpenScanner.Create(bmp,ABounds,AAmount);\n  result.FillRect(ABounds,scanner,dmSet);\n  scanner.Free;\nend;\n\nfunction FilterSharpen(bmp: TBGRACustomBitmap; AAmount: integer\n  ): TBGRACustomBitmap;\nbegin\n  result := FilterSharpen(bmp,rect(0,0,bmp.Width,bmp.Height),AAmount);\nend;\n\n{ Filter contour computes for each pixel\n  the grayscale difference with surrounding pixels (in intensity and alpha)\n  and draw black pixels when there is a difference }\nfunction FilterContour(bmp: TBGRACustomBitmap; AGammaCorrection: boolean = false): TBGRACustomBitmap;\nvar scanner: TBGRAContourScanner;\nbegin\n  result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  scanner := TBGRAContourScanner.Create(bmp,rect(0,0,bmp.width,bmp.height),AGammaCorrection);\n  result.Fill(scanner);\n  scanner.Free;\nend;\n\nfunction FilterEmboss(bmp: TBGRACustomBitmap; angle: single; AStrength: integer; AOptions: TEmbossOptions): TBGRACustomBitmap;\nbegin\n  result := FilterEmboss(bmp, angle, rect(0,0,bmp.Width,bmp.Height), AStrength, AOptions);\nend;\n\n{ Emboss filter computes the difference between each pixel and the surrounding pixels\n  in the specified direction. }\nfunction FilterEmboss(bmp: TBGRACustomBitmap; angle: single; ABounds: TRect; AStrength: integer; AOptions: TEmbossOptions): TBGRACustomBitmap;\nvar\n  yb, xb: Int32or64;\n  dx, dy: single;\n  idx, idy: Int32or64;\n  x256,y256: Int32or64;\n  cMiddle: TBGRAPixel;\n  hMiddle: THSLAPixel;\n\n  tempPixel, refPixel: TBGRAPixel;\n  pdest: PBGRAPixel;\n\n  bounds: TRect;\n  psrc: PBGRAPixel;\n  redDiff,greenDiff,blueDiff: UInt32or64;\n  diff: Int32or64;\nbegin\n  //compute pixel position and weight\n  dx   := cos(angle * Pi / 180);\n  dy   := sin(angle * Pi / 180);\n  idx := floor(dx);\n  idy := floor(dy);\n  x256 := trunc((dx-idx)*256);\n  y256 := trunc((dy-idy)*256);\n\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  if ABounds.IsEmpty then exit;\n\n  bounds := bmp.GetImageBounds;\n  bounds.Intersect(ABounds);\n  if bounds.IsEmpty then exit;\n  bounds.Left   := max(0, bounds.Left - 1);\n  bounds.Top    := max(0, bounds.Top - 1);\n  bounds.Right  := min(bmp.Width, bounds.Right + 1);\n  bounds.Bottom := min(bmp.Height, bounds.Bottom + 1);\n\n  if not (eoTransparent in AOptions) then\n  begin\n    if eoPreserveHue in AOptions then\n      Result.PutImagePart(ABounds.left,ABounds.top,bmp,ABounds,dmSet)\n    else\n      Result.FillRect(ABounds,BGRA(128, 128, 128, 255),dmSet);\n  end;\n\n  //loop through destination\n  for yb := bounds.Top to bounds.bottom - 1 do\n  begin\n    pdest := Result.scanline[yb] + bounds.Left;\n    psrc := bmp.ScanLine[yb]+bounds.Left;\n\n    for xb := bounds.Left+idx to bounds.Right-1+idx do\n    begin\n      refPixel := bmp.GetPixel256(xb,yb+idy,x256,y256);\n      cMiddle := psrc^;\n      inc(psrc);\n\n      if eoPreserveHue in AOptions then\n      begin\n        diff := (integer(refPixel.red * refPixel.alpha) - integer(cMiddle.red * cMiddle.alpha)+\n                 integer(refPixel.green * refPixel.alpha) - integer(cMiddle.green * cMiddle.alpha)+\n                 integer(refPixel.blue * refPixel.alpha) - integer(cMiddle.blue * cMiddle.alpha))* AStrength div 128;\n        if diff > 0 then\n          hMiddle := BGRAToHSLA(refPixel)\n        else\n          hMiddle := BGRAToHSLA(cMiddle);\n        hMiddle.lightness := min(65535,max(0,hMiddle.lightness+diff));\n        if eoTransparent in AOptions then\n          hMiddle.alpha := min(65535,abs(diff));\n        pdest^ := HSLAToBGRA(hMiddle);\n      end else\n      begin\n        {$push}{$hints off}{$r-}\n        redDiff := UInt32or64(max(0, 65536 + (refPixel.red * refPixel.alpha - cMiddle.red * cMiddle.alpha) * AStrength div 64)) shr 9;\n        greenDiff := UInt32or64(max(0, 65536 + (refPixel.green * refPixel.alpha - cMiddle.green * cMiddle.alpha) * AStrength div 64)) shr 9;\n        blueDiff := UInt32or64(max(0, 65536 + (refPixel.blue * refPixel.alpha - cMiddle.blue * cMiddle.alpha) * AStrength div 64)) shr 9;\n        {$pop}\n        if (redDiff <> 128) or (greenDiff <> 128) or (blueDiff <> 128) then\n        begin\n          tempPixel.red := min(255, redDiff);\n          tempPixel.green := min(255, greenDiff);\n          tempPixel.blue := min(255, blueDiff);\n          if eoTransparent in AOptions then\n          begin\n            tempPixel.alpha := min(255,abs(Int32or64(redDiff-128))+abs(Int32or64(greenDiff-128))+abs(Int32or64(blueDiff-128)));\n            pdest^ := tempPixel;\n          end else\n          begin\n            tempPixel.alpha := 255;\n            pdest^ := tempPixel;\n          end;\n        end;\n      end;\n\n      Inc(pdest);\n    end;\n  end;\n  Result.InvalidateBitmap;\nend;\n\n{ Like general emboss, but with fixed direction and automatic color with transparency }\nfunction FilterEmbossHighlight(bmp: TBGRACustomBitmap;\n  FillSelection: boolean; DefineBorderColor: TBGRAPixel): TBGRACustomBitmap;\nvar\n  bounds: TRect;\n  borderColorOverride: boolean;\n  borderColorLevel: Int32or64;\n  scan: TBGRAEmbossHightlightScanner;\nbegin\n  borderColorOverride := DefineBorderColor.alpha <> 0;\n  borderColorLevel := DefineBorderColor.red;\n\n  Result    := bmp.NewBitmap(bmp.Width, bmp.Height);\n\n  if borderColorOverride then\n    bounds := bmp.GetImageBounds(cRed, borderColorLevel)\n  else\n    bounds := bmp.GetImageBounds(cRed);\n  if (bounds.Right <= bounds.Left) or (bounds.Bottom <= Bounds.Top) then\n    exit;\n  bounds.Left   := max(0, bounds.Left - 1);\n  bounds.Top    := max(0, bounds.Top - 1);\n  bounds.Right  := min(bmp.Width, bounds.Right + 1);\n  bounds.Bottom := min(bmp.Height, bounds.Bottom + 1);\n\n  scan := TBGRAEmbossHightlightScanner.Create(bmp, bounds, borderColorOverride);\n  scan.AllowDirectRead := true;\n  scan.FillSelection := FillSelection;\n  if borderColorOverride then scan.SourceBorderColor := DefineBorderColor;\n  Result.FillRect(bounds, scan, dmSet);\n  scan.Free;\nend;\n\nfunction FilterEmbossHighlightOffset(bmp: TBGRACustomBitmap;\n  FillSelection: boolean; DefineBorderColor: TBGRAPixel; var Offset: TPoint): TBGRACustomBitmap;\nvar\n  bounds: TRect;\n  borderColorOverride: boolean;\n  borderColorLevel: int32or64;\n  scan: TBGRAEmbossHightlightScanner;\nbegin\n  borderColorOverride := DefineBorderColor.alpha <> 0;\n  borderColorLevel := DefineBorderColor.red;\n\n  if borderColorOverride then\n    bounds := bmp.GetImageBounds(cRed, borderColorLevel)\n  else\n    bounds := bmp.GetImageBounds(cRed);\n  if (bounds.Right <= bounds.Left) or (bounds.Bottom <= Bounds.Top) then\n  begin\n    Result    := bmp.NewBitmap(0, 0);\n    exit;\n  end;\n  bounds.Left   := max(0, bounds.Left - 1);\n  bounds.Top    := max(0, bounds.Top - 1);\n  bounds.Right  := min(bmp.Width, bounds.Right + 1);\n  bounds.Bottom := min(bmp.Height, bounds.Bottom + 1);\n\n  Result    := bmp.NewBitmap(bounds.Right-Bounds.Left+1, bounds.Bottom-Bounds.Top+1);\n  inc(Offset.X, bounds.Left);\n  inc(Offset.Y, bounds.Top);\n\n  scan := TBGRAEmbossHightlightScanner.Create(bmp, bounds, borderColorOverride);\n  scan.AllowDirectRead := true;\n  scan.FillSelection := FillSelection;\n  if borderColorOverride then scan.SourceBorderColor := DefineBorderColor;\n  Result.FillRect(rect(0,0,result.Width,result.Height), scan, dmSet, Offset);\n  scan.Free;\nend;\n\n{ For each component, sort values to get the median }\nfunction FilterMedian(bmp: TBGRACustomBitmap;\n  Option: TMedianOption): TBGRACustomBitmap;\n\n  function ComparePixLt(p1, p2: TBGRAPixel): boolean;\n  begin\n    if (p1.red + p1.green + p1.blue = p2.red + p2.green + p2.blue) then\n      Result := (int32or64(p1.red) shl 8) + (int32or64(p1.green) shl 16) +\n        int32or64(p1.blue) < (int32or64(p2.red) shl 8) + (int32or64(p2.green) shl 16) +\n        int32or64(p2.blue)\n    else\n      Result := (p1.red + p1.green + p1.blue) < (p2.red + p2.green + p2.blue);\n  end;\n\nconst\n  nbpix = 9;\nvar\n  yb, xb:    int32or64;\n  dx, dy, n, i, j, k: int32or64;\n  a_pixels:  array[0..nbpix - 1] of TBGRAPixel;\n  tempPixel, refPixel: TBGRAPixel;\n  tempValue: byte;\n  sumR, sumG, sumB, sumA, BGRAdiv, nbA: uint32or64;\n  tempAlpha: word;\n  bounds:    TRect;\n  pdest:     PBGRAPixel;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n\n  bounds := bmp.GetImageBounds;\n  if (bounds.Right <= bounds.Left) or (bounds.Bottom <= Bounds.Top) then\n    exit;\n  bounds.Left   := max(0, bounds.Left - 1);\n  bounds.Top    := max(0, bounds.Top - 1);\n  bounds.Right  := min(bmp.Width, bounds.Right + 1);\n  bounds.Bottom := min(bmp.Height, bounds.Bottom + 1);\n\n  for yb := bounds.Top to bounds.bottom - 1 do\n  begin\n    pdest := Result.scanline[yb] + bounds.left;\n    for xb := bounds.left to bounds.right - 1 do\n    begin\n      n := 0;\n      for dy := -1 to 1 do\n        for dx := -1 to 1 do\n        begin\n          a_pixels[n] := bmp.GetPixel(xb + dx, yb + dy);\n          if a_pixels[n].alpha = 0 then\n            a_pixels[n] := BGRAPixelTransparent;\n          Inc(n);\n        end;\n      for i := 1 to n - 1 do\n      begin\n        j := i;\n        while (j > 1) and (a_pixels[j].alpha < a_pixels[j - 1].alpha) do\n        begin\n          tempValue := a_pixels[j].alpha;\n          a_pixels[j].alpha := a_pixels[j - 1].alpha;\n          a_pixels[j - 1].alpha := tempValue;\n          Dec(j);\n        end;\n        j := i;\n        while (j > 1) and (a_pixels[j].red < a_pixels[j - 1].red) do\n        begin\n          tempValue := a_pixels[j].red;\n          a_pixels[j].red := a_pixels[j - 1].red;\n          a_pixels[j - 1].red := tempValue;\n          Dec(j);\n        end;\n        j := i;\n        while (j > 1) and (a_pixels[j].green < a_pixels[j - 1].green) do\n        begin\n          tempValue := a_pixels[j].green;\n          a_pixels[j].green := a_pixels[j - 1].green;\n          a_pixels[j - 1].green := tempValue;\n          Dec(j);\n        end;\n        j := i;\n        while (j > 1) and (a_pixels[j].blue < a_pixels[j - 1].blue) do\n        begin\n          tempValue := a_pixels[j].blue;\n          a_pixels[j].blue := a_pixels[j - 1].blue;\n          a_pixels[j - 1].blue := tempValue;\n          Dec(j);\n        end;\n      end;\n\n      refPixel := a_pixels[n div 2];\n\n      if option in [moLowSmooth, moMediumSmooth, moHighSmooth] then\n      begin\n        sumR    := 0;\n        sumG    := 0;\n        sumB    := 0;\n        sumA    := 0;\n        BGRAdiv := 0;\n        nbA     := 0;\n\n        case option of\n          moHighSmooth, moMediumSmooth:\n          begin\n            j := 2;\n            k := 2;\n          end;\n          else\n          begin\n            j := 1;\n            k := 1;\n          end;\n        end;\n\n         {$hints off}\n        for i := -k to j do\n        begin\n          tempPixel := a_pixels[n div 2 + i];\n          tempAlpha := tempPixel.alpha;\n          if (option = moMediumSmooth) and ((i = -k) or (i = j)) then\n            tempAlpha := tempAlpha div 2;\n\n          inc(sumR, tempPixel.red * tempAlpha );\n          inc(sumG, tempPixel.green * tempAlpha );\n          inc(sumB, tempPixel.blue * tempAlpha );\n          inc(BGRAdiv, tempAlpha);\n\n          inc(sumA, tempAlpha);\n          Inc(nbA);\n        end;\n         {$hints on}\n        if option = moMediumSmooth then\n          Dec(nbA);\n\n        if (BGRAdiv = 0) then\n          refPixel := BGRAPixelTransparent\n        else\n        begin\n          refPixel.red   := round(sumR / BGRAdiv);\n          refPixel.green := round(sumG / BGRAdiv);\n          refPixel.blue  := round(sumB / BGRAdiv);\n          refPixel.alpha := round(sumA / nbA);\n        end;\n      end;\n\n      pdest^ := refPixel;\n      Inc(pdest);\n    end;\n  end;\nend;\n\n//////////////////////// DEFORMATION FILTERS /////////////////////////////////\n\n{ Compute the distance for each pixel to the center of the bitmap,\n  calculate the corresponding angle with arcsin, use this angle\n  to determine a distance from the center in the source bitmap }\nfunction FilterSphere(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\nvar\n  cx, cy: single;\n  scanner: TBGRASphereDeformationScanner;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  cx     := bmp.Width / 2 - 0.5;\n  cy     := bmp.Height / 2 - 0.5;\n  scanner := TBGRASphereDeformationScanner.Create(bmp,PointF(cx,cy),bmp.Width/2,bmp.Height/2);\n  result.FillEllipseAntialias(cx,cy,bmp.Width/2-0.5,bmp.Height/2-0.5,scanner);\n  scanner.Free;\nend;\n\n{ Applies twirl scanner. See TBGRATwirlScanner }\nfunction FilterTwirl(bmp: TBGRACustomBitmap; ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3): TBGRACustomBitmap;\nvar twirl: TBGRATwirlScanner;\nbegin\n  twirl := TBGRATwirlScanner.Create(bmp,ACenter,ARadius,ATurn,AExponent);\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  result.FillRect(ABounds, twirl, dmSet);\n  twirl.free;\nend;\n\nfunction FilterTwirl(bmp: TBGRACustomBitmap; ACenter: TPoint;\n  ARadius: Single; ATurn: Single; AExponent: Single): TBGRACustomBitmap;\nbegin\n  result := FilterTwirl(bmp,rect(0,0,bmp.Width,bmp.Height),ACenter,ARadius,ATurn,AExponent);\nend;\n\n{ Compute the distance for each pixel to the vertical axis of the bitmap,\n  calculate the corresponding angle with arcsin, use this angle\n  to determine a distance from the vertical axis in the source bitmap }\nfunction FilterCylinder(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\nvar\n  cx: single;\n  scanner: TBGRAVerticalCylinderDeformationScanner;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  cx     := bmp.Width / 2 - 0.5;\n  scanner := TBGRAVerticalCylinderDeformationScanner.Create(bmp,cx,bmp.Width/2);\n  result.Fill(scanner);\n  scanner.Free;\nend;\n\nfunction FilterPlane(bmp: TBGRACustomBitmap): TBGRACustomBitmap;\nconst resampleGap=0.6;\nvar\n  cy, x1, x2, y1, y2, z1, z2, h: single;\n  yb: int32or64;\n  resampledBmp: TBGRACustomBitmap;\n  resampledBmpWidth: int32or64;\n  resampledFactor,newResampleFactor: single;\n  sub,resampledSub: TBGRACustomBitmap;\n  partRect: TRect;\n  resampleSizeY : int32or64;\nbegin\n  resampledBmp := bmp.Resample(bmp.Width*2,bmp.Height*2,rmSimpleStretch);\n  resampledBmpWidth := resampledBmp.Width;\n  resampledFactor := 2;\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height*2);\n  cy     := result.Height / 2 - 0.5;\n  h      := 1;\n  for yb := 0 to ((Result.Height-1) div 2) do\n  begin\n    y1 := (cy - (yb-0.5)) / (cy+0.5);\n    y2 := (cy - (yb+0.5)) / (cy+0.5);\n    if y2 <= 0 then continue;\n    z1 := h/y1;\n    z2 := h/y2;\n    newResampleFactor := 1/(z2-z1)*1.5;\n\n    x1 := (z1+1)/2;\n    x2 := (z2+1)/2;\n    if newResampleFactor <= resampledFactor*resampleGap then\n    begin\n      resampledFactor := newResampleFactor;\n      if resampledBmp <> bmp then resampledBmp.Free;\n      if (x2-x1 >= 1) then resampleSizeY := 1 else\n        resampleSizeY := round(1+((x2-x1)-1)/(1/bmp.Height-1)*(bmp.Height-1));\n      resampledBmp := bmp.Resample(max(1,round(bmp.Width*resampledFactor)),resampleSizeY,rmSimpleStretch);\n      resampledBmpWidth := resampledBmp.Width;\n    end;\n\n    partRect := Rect(round(-resampledBmpWidth/2*z1+resampledBmpWidth/2),floor(x1*resampledBmp.Height),\n       round(resampledBmpWidth/2*z1+resampledBmpWidth/2),floor(x2*resampledBmp.Height)+1);\n    if x2-x1 > 1 then\n    begin\n      partRect.Top := 0;\n      partRect.Bottom := 1;\n    end;\n    sub := resampledBmp.GetPart(partRect);\n    if sub <> nil then\n    begin\n      resampledSub := sub.Resample(bmp.Width,1,rmFineResample);\n      result.PutImage(0,yb,resampledSub,dmSet);\n      result.PutImage(0,Result.Height-1-yb,resampledSub,dmSet);\n      resampledSub.free;\n      sub.free;\n    end;\n  end;\n  if resampledBmp <> bmp then resampledBmp.Free;\n\n  if result.Height <> bmp.Height then\n  begin\n    resampledBmp := result.Resample(bmp.Width,bmp.Height,rmSimpleStretch);\n    result.free;\n    result := resampledBmp;\n  end;\nend;\n\n{ Rotates the image. To do this, loop through the destination and\n  calculates the position in the source bitmap with an affine transformation }\nfunction FilterRotate(bmp: TBGRACustomBitmap; origin: TPointF;\n  angle: single; correctBlur: boolean): TBGRACustomBitmap;\nbegin\n  Result := bmp.NewBitmap(bmp.Width, bmp.Height);\n  Result.PutImageAngle(0,0,bmp,angle,origin.x,origin.y,255,true,correctBlur);\nend;\n\n///////////////////////// BLUR FILTERS //////////////////////////////////////\n\nfunction FilterBlurRadial(bmp: TBGRACustomBitmap; radius: single; blurType: TRadialBlurType): TBGRACustomBitmap;\nvar task: TFilterTask;\nbegin\n  task := CreateRadialBlurTask(bmp,rect(0,0,bmp.Width,bmp.Height),radius,blurType);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction FilterBlurRadial(bmp: TBGRACustomBitmap; radiusX: single; radiusY: single; blurType: TRadialBlurType): TBGRACustomBitmap;\nvar task: TFilterTask;\nbegin\n  task := CreateRadialBlurTask(bmp,rect(0,0,bmp.Width,bmp.Height),radiusX,radiusY,blurType);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadius: single; ABlurType: TRadialBlurType): TRadialBlurTask;\nbegin\n  result := TRadialBlurTask.Create(ABmp,ABounds,ARadius,ABlurType);\nend;\n\nfunction CreateRadialBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  ARadiusX,ARadiusY: single; ABlurType: TRadialBlurType): TRadialBlurTask;\nbegin\n  result := TRadialBlurTask.Create(ABmp,ABounds,ARadiusX,ARadiusY,ABlurType);\nend;\n\n{ Precise blur }\n\nfunction FilterBlurRadialPrecise(bmp: TBGRACustomBitmap; radius: single): TBGRACustomBitmap;\nvar task: TRadialBlurTask;\nbegin\n  task := CreateRadialBlurTask(bmp,rect(0,0,bmp.Width,bmp.Height),radius*10,rbPrecise);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction CreateRadialPreciseBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect; ARadius: single): TRadialBlurTask;\nbegin\n  result := TRadialBlurTask.Create(ABmp,ABounds,ARadius*10,rbPrecise);\nend;\n\nfunction FilterBlurMotion(bmp: TBGRACustomBitmap; distance: single; angle: single; oriented: boolean): TBGRACustomBitmap;\nvar task: TFilterTask;\nbegin\n  task := CreateMotionBlurTask(bmp, rect(0,0,bmp.Width,bmp.Height), distance, angle, oriented);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction CreateMotionBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  ADistance, AAngle: single; AOriented: boolean): TMotionBlurTask;\nbegin\n  result := TMotionBlurTask.Create(ABmp,ABounds,ADistance,AAngle,AOriented);\nend;\n\nfunction FilterBlur(bmp: TBGRACustomBitmap; AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean = false): TBGRACustomBitmap;\nvar task: TFilterTask;\nbegin\n  task := TCustomBlurTask.Create(bmp,rect(0,0,bmp.Width,bmp.Height), AMask, AMaskIsThreadSafe);\n  result := task.Execute;\n  task.Free;\nend;\n\nfunction CreateBlurTask(ABmp: TBGRACustomBitmap; ABounds: TRect;\n  AMask: TCustomUniversalBitmap; AMaskIsThreadSafe: boolean = false): TFilterTask;\nbegin\n  result := TCustomBlurTask.Create(ABmp, ABounds, AMask, AMaskIsThreadSafe);\nend;\n\n///////////////////////////////////// OTHER FILTERS ///////////////////////////\n\nfunction FilterSmartZoom3(bmp: TBGRACustomBitmap;\n  Option: TMedianOption): TBGRACustomBitmap;\ntype\n  TSmartDiff = record\n    d, cd, sd, b, a: single;\n  end;\n\nvar\n  xb, yb: Int32or64;\n  diag1, diag2, h1, h2, v1, v2: TSmartDiff;\n  c,c1,c2:      TBGRAPixel;\n  temp, median: TBGRACustomBitmap;\n\n  function ColorDiff(c1, c2: TBGRAPixel): single;\n  var\n    max1, max2: Int32or64;\n  begin\n    if (c1.alpha = 0) and (c2.alpha = 0) then\n    begin\n      Result := 0;\n      exit;\n    end\n    else\n    if (c1.alpha = 0) or (c2.alpha = 0) then\n    begin\n      Result := 1;\n      exit;\n    end;\n    max1 := c1.red;\n    if c1.green > max1 then\n      max1 := c1.green;\n    if c1.blue > max1 then\n      max1 := c1.blue;\n\n    max2 := c2.red;\n    if c2.green > max2 then\n      max2 := c2.green;\n    if c2.blue > max2 then\n      max2 := c2.blue;\n\n    if (max1 = 0) or (max2 = 0) then\n    begin\n      Result := 0;\n      exit;\n    end;\n    Result := (abs(c1.red / max1 - c2.red / max2) +\n      abs(c1.green / max1 - c2.green / max2) + abs(c1.blue / max1 - c2.blue / max2)) / 3;\n  end;\n\n  function RGBDiff(c1, c2: TBGRAPixel): single;\n  begin\n    if (c1.alpha = 0) and (c2.alpha = 0) then\n    begin\n      Result := 0;\n      exit;\n    end\n    else\n    if (c1.alpha = 0) or (c2.alpha = 0) then\n    begin\n      Result := 1;\n      exit;\n    end;\n    Result := (abs(c1.red - c2.red) + abs(c1.green - c2.green) +\n      abs(c1.blue - c2.blue)) / 3 / 255;\n  end;\n\n  function smartDiff(x1, y1, x2, y2: Int32or64): TSmartDiff;\n  var\n    c1, c2, c1m, c2m: TBGRAPixel;\n  begin\n    c1  := bmp.GetPixel(x1, y1);\n    c2  := bmp.GetPixel(x2, y2);\n    c1m := median.GetPixel(x1, y1);\n    c2m := median.GetPixel(x2, y2);\n    Result.d := RGBDiff(c1, c2);\n    Result.cd := ColorDiff(c1, c2);\n    Result.a := c1.alpha / 255 * c2.alpha / 255;\n    Result.d := Result.d * Result.a + (1 - Result.a) *\n      (1 + abs(c1.alpha - c2.alpha) / 255) / 5;\n    Result.b := RGBDiff(c1, c1m) * c1.alpha / 255 * c1m.alpha / 255 +\n      RGBDiff(c2, c2m) * c2.alpha / 255 * c2m.alpha / 255 +\n      (abs(c1.alpha - c1m.alpha) + abs(c2.alpha - c2m.alpha)) / 255 / 4;\n    Result.sd := Result.d + Result.cd * 3;\n  end;\n\nvar\n  diff: single;\n\nbegin\n  median := FilterMedian(bmp, moNone);\n\n  temp   := bmp.Resample(bmp.Width * 3, bmp.Height * 3, rmSimpleStretch);\n  Result := FilterMedian(temp, Option);\n  temp.Free;\n\n  for yb := 0 to bmp.Height - 2 do\n    for xb := 0 to bmp.Width - 2 do\n    begin\n      diag1 := smartDiff(xb, yb, xb + 1, yb + 1);\n      diag2 := smartDiff(xb, yb + 1, xb + 1, yb);\n\n      h1 := smartDiff(xb, yb, xb + 1, yb);\n      h2 := smartDiff(xb, yb + 1, xb + 1, yb + 1);\n      v1 := smartDiff(xb, yb, xb, yb + 1);\n      v2 := smartDiff(xb + 1, yb, xb + 1, yb + 1);\n\n      diff := diag1.sd - diag2.sd;\n      if abs(diff) < 3 then\n        DecF(diff, (diag1.b - diag2.b) * (3 - abs(diff)) / 2);\n      //which diagonal to highlight?\n      if abs(diff) < 0.2 then\n        diff := 0;\n\n      if diff < 0 then\n      begin\n        //same color?\n        if diag1.cd < 0.3 then\n        begin\n          c1 := bmp.GetPixel(xb, yb);\n          c2 := bmp.GetPixel(xb + 1, yb + 1);\n          c := MergeBGRA(c1, c2);\n          //restore\n          Result.SetPixel(xb * 3 + 2, yb * 3 + 2, bmp.GetPixel(xb, yb));\n          Result.SetPixel(xb * 3 + 3, yb * 3 + 3, bmp.GetPixel(xb + 1, yb + 1));\n\n          if (diag1.sd < h1.sd) and (diag1.sd < v2.sd) then\n            Result.SetPixel(xb * 3 + 3, yb * 3 + 2, c);\n          if (diag1.sd < h2.sd) and (diag1.sd < v1.sd) then\n            Result.SetPixel(xb * 3 + 2, yb * 3 + 3, c);\n        end;\n      end\n      else\n      if diff > 0 then\n      begin\n        //same color?\n        if diag2.cd < 0.3 then\n        begin\n          c1 := bmp.GetPixel(xb, yb + 1);\n          c2 := bmp.GetPixel(xb + 1, yb);\n          c := MergeBGRA(c1, c2);\n          //restore\n          Result.SetPixel(xb * 3 + 3, yb * 3 + 2, bmp.GetPixel(xb + 1, yb));\n          Result.SetPixel(xb * 3 + 2, yb * 3 + 3, bmp.GetPixel(xb, yb + 1));\n\n          if (diag2.sd < h1.sd) and (diag2.sd < v1.sd) then\n            Result.SetPixel(xb * 3 + 2, yb * 3 + 2, c);\n          if (diag2.sd < h2.sd) and (diag2.sd < v2.sd) then\n            Result.SetPixel(xb * 3 + 3, yb * 3 + 3, c);\n\n        end;\n      end;\n    end;\n\n  median.Free;\nend;\n\nfunction FilterPixelate(bmp: TBGRACustomBitmap; pixelSize: integer;\n  useResample: boolean; filter: TResampleFilter): TBGRACustomBitmap;\nvar yb,xb, xs,ys, tx,ty: Int32or64;\n    psrc,pdest: PBGRAPixel;\n    temp,stretched: TBGRACustomBitmap;\n    oldfilter: TResampleFilter;\nbegin\n  if pixelSize < 1 then\n  begin\n    result := bmp.Duplicate;\n    exit;\n  end;\n  result := bmp.NewBitmap(bmp.Width,bmp.Height);\n\n  tx := (bmp.Width+pixelSize-1) div pixelSize;\n  ty := (bmp.Height+pixelSize-1) div pixelSize;\n  if not useResample then\n  begin\n    temp := bmp.NewBitmap(tx,ty);\n\n    xs := (bmp.Width mod pixelSize) div 2;\n    ys := (bmp.Height mod pixelSize) div 2;\n\n    for yb := 0 to temp.height-1 do\n    begin\n      pdest := temp.ScanLine[yb];\n      psrc := bmp.scanline[ys]+xs;\n      inc(ys,pixelSize);\n      for xb := temp.width-1 downto 0 do\n      begin\n        pdest^ := psrc^;\n        inc(pdest);\n        inc(psrc,pixelSize);\n      end;\n    end;\n    temp.InvalidateBitmap;\n  end else\n  begin\n    oldfilter := bmp.ResampleFilter;\n    bmp.ResampleFilter := filter;\n    temp := bmp.Resample(tx,ty,rmFineResample);\n    bmp.ResampleFilter := oldfilter;\n  end;\n  stretched := temp.Resample(temp.Width*pixelSize,temp.Height*pixelSize,rmSimpleStretch);\n  temp.free;\n  if bmp.Width mod pixelSize = 0 then\n    xs := 0\n  else\n    xs := (-pixelSize+(bmp.Width mod pixelSize)) div 2;\n  if bmp.Height mod pixelSize = 0 then\n    ys := 0\n  else\n    ys := (-pixelSize+(bmp.Height mod pixelSize)) div 2;\n  result.PutImage(xs,ys,stretched,dmSet);\n  stretched.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafilterscanner.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Provide scanners that act as filters. This allows to use them directly as texture\n  rather than rendering first the whole filtered image }\nunit BGRAFilterScanner;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRABitmapTypes, BGRAFilterType;\n\ntype\n  { Scanner that converts colored pixel into grayscale with same luminosity }\n  TBGRAFilterScannerGrayscale = class(TBGRAFilterScannerPixelwise)\n    class procedure ComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n      ACount: integer; AGammaCorrection: boolean); override;\n  end;\n\n  { Scanner that computes the negative of the colors }\n  TBGRAFilterScannerNegative = class(TBGRAFilterScannerPixelwise)\n    class procedure ComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n      ACount: integer; AGammaCorrection: boolean); override;\n  end;\n\n  { Scanner that swaps red and blue channels }\n  TBGRAFilterScannerSwapRedBlue = class(TBGRAFilterScannerPixelwise)\n    class procedure ComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n      ACount: integer; {%H-}AGammaCorrection: boolean); override;\n  end;\n\n  { TBGRAFilterScannerNormalize }\n  { @abstract(Scanner that normalizes the value of color channels.)\n\n    It computes min-max of specified channel and apply an affine transformation\n    to make it use the full range of values }\n  TBGRAFilterScannerNormalize = class(TBGRAFilterScannerPixelwise)\n  private\n    minValRed, maxValRed, minValGreen, maxValGreen,\n    minValBlue, maxValBlue, minAlpha, maxAlpha: word;\n    addValRed, addValGreen, addValBlue, addAlpha: word;\n    factorValRed, factorValGreen, factorValBlue, factorAlpha: int32or64;\n    procedure DetermineNormalizationFactors(ABounds: TRect; AEachChannel: boolean);\n  protected\n    procedure DoComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n            ACount: integer; {%H-}AGammaCorrection: boolean); override;\n  public\n    constructor Create(ASource: IBGRAScanner; AOffset: TPoint; ABounds: TRect;\n            AEachChannel: boolean);\n    class procedure ComputeFilterAt({%H-}ASource: PBGRAPixel; {%H-}ADest: PBGRAPixel;\n            {%H-}ACount: integer; {%H-}AGammaCorrection: boolean); override;\n  end;\n\n  { Abstract scanner that applies a filter on a 3x3 window of pixels }\n  TBGRA3X3FilterScanner = class(TBGRAFilterScannerMultipixel)\n  protected\n    FSourceBorderColor,FDestinationBorderColor: TBGRAPixel;\n    FAutoSourceBorderColor: boolean;\n    function DoFilter3X3(PTop,PMiddle,PBottom: PBGRAPixel): TBGRAPixel; virtual; abstract;\n    procedure DoComputeFilter(BufferX: Integer;\n      const Buffers: array of PBGRAPixel; BufferWidth: integer;\n      ADest: PBGRAPixel; ACount: integer); override;\n  public\n    constructor Create(ASource: IBGRAScanner; ABounds: TRect); overload;\n    constructor Create(ASource: TBGRACustomBitmap); overload;\n    property SourceBorderColor: TBGRAPixel read FSourceBorderColor write FSourceBorderColor;\n    property DestinationBorderColor: TBGRAPixel read FDestinationBorderColor write FDestinationBorderColor;\n    property AutoSourceBorderColor: boolean read FAutoSourceBorderColor write FAutoSourceBorderColor;\n  end;\n\n  { @abstract(Scanner that computes the contour of the elements of an image.)\n\n    It computes a grayscale image, then for each pixel\n    calculates the difference with surrounding pixels (in intensity and alpha)\n    and draw black pixels when there is a difference. }\n  TBGRAContourScanner = class(TBGRA3X3FilterScanner)\n  protected\n    FGammaCorrection: boolean;\n    FOpacity: byte;\n    function DoFilter3X3(PTop,PMiddle,PBottom: PBGRAPixel): TBGRAPixel; override;\n  public\n    constructor Create(ASource: IBGRAScanner; ABounds: TRect;\n                       AGammaCorrection: boolean = False); overload;\n    constructor Create(ASource: TBGRACustomBitmap;\n                       AGammaCorrection: boolean = False); overload;\n    property Opacity: Byte read FOpacity write FOpacity;\n  end;\n\n  { Scanner that computes a sharpened image by comparing neighbouring pixels }\n  TBGRASharpenScanner = class(TBGRA3X3FilterScanner)\n  protected\n    FAmount: integer;\n    function DoFilter3X3(PTop,PMiddle,PBottom: PBGRAPixel): TBGRAPixel; override;\n  public\n    constructor Create(ASource: IBGRAScanner; ABounds: TRect;\n                       AAmount: integer = 256); overload;\n    constructor Create(ASource: TBGRACustomBitmap;\n                       AAmount: integer = 256); overload;\n  end;\n\n  { Scanner that computes an embossed image and fills the shape with a highlight color. }\n  TBGRAEmbossHightlightScanner = class(TBGRA3X3FilterScanner)\n  protected\n    FFillSelection: boolean;\n    FSourceChannel: TChannel;\n    FChannelOffset: Byte;\n    function DoFilter3X3(PTop,PMiddle,PBottom: PBGRAPixel): TBGRAPixel; override;\n    procedure SetSourceChannel(AValue: TChannel);\n  public\n    constructor Create(ASource: IBGRAScanner; ABounds: TRect; ABoundsVisible: Boolean); overload;\n    constructor Create(ASource: TBGRACustomBitmap; ABoundsVisible: Boolean); overload;\n    property FillSelection: boolean read FFillSelection write FFillSelection;\n    property SourceChannel: TChannel read FSourceChannel write SetSourceChannel;\n  end;\n\nimplementation\n\nuses BGRABlend, math, SysUtils;\n\n{ TBGRAEmbossHightlightScanner }\n\nprocedure TBGRAEmbossHightlightScanner.SetSourceChannel(AValue: TChannel);\nbegin\n  FSourceChannel:=AValue;\n  FChannelOffset:= TBGRAPixel_ChannelByteOffset[FSourceChannel];\nend;\n\nfunction TBGRAEmbossHightlightScanner.DoFilter3X3(PTop, PMiddle,\n  PBottom: PBGRAPixel): TBGRAPixel;\nvar\n  sum: Int32or64;\n  slope,h: byte;\n  highlight: TBGRAPixel;\nbegin\n  sum := Int32or64((PByte(PTop)+FChannelOffset)^) +\n         Int32or64((PByte(PTop+1)+FChannelOffset)^) +\n         Int32or64((PByte(PMiddle)+FChannelOffset)^) -\n         Int32or64((PByte(PMiddle+2)+FChannelOffset)^) -\n         Int32or64((PByte(PBottom+1)+FChannelOffset)^) -\n         Int32or64((PByte(PBottom+2)+FChannelOffset)^);\n  sum := 128 - sum div 3;\n  if sum > 255 then\n    slope := 255\n  else\n  if sum < 1 then\n    slope := 1\n  else\n    slope := sum;\n  h := (PByte(PMiddle+1)+FChannelOffset)^;\n\n  result.red   := slope;\n  result.green := slope;\n  result.blue  := slope;\n  result.alpha := abs(slope - 128) * 2;\n\n  if FFillSelection then\n  begin\n    highlight := BGRA(h shr 2, h shr 1, h, h shr 1);\n    if result.red < highlight.red then\n      result.red := highlight.red;\n    if result.green < highlight.green then\n      result.green := highlight.green;\n    if result.blue < highlight.blue then\n      result.blue := highlight.blue;\n    if result.alpha < highlight.alpha then\n      result.alpha := highlight.alpha;\n  end;\nend;\n\nconstructor TBGRAEmbossHightlightScanner.Create(ASource: IBGRAScanner;\n  ABounds: TRect; ABoundsVisible: Boolean);\nbegin\n  inherited Create(ASource,ABounds);\n  SourceChannel := cGreen;\n  FillSelection:= true;\n  AutoSourceBorderColor := not ABoundsVisible;\nend;\n\nconstructor TBGRAEmbossHightlightScanner.Create(ASource: TBGRACustomBitmap;\n  ABoundsVisible: Boolean);\nbegin\n  inherited Create(ASource);\n  SourceChannel := cGreen;\n  FillSelection:= true;\n  AutoSourceBorderColor := not ABoundsVisible;\nend;\n\n{ TBGRA3X3FilterScanner }\n\nprocedure TBGRA3X3FilterScanner.DoComputeFilter(BufferX: Integer;\n  const Buffers: array of PBGRAPixel; BufferWidth: integer; ADest: PBGRAPixel;\n  ACount: integer);\nvar MiddleX: Integer;\n  TopLine,MiddleLine,BottomLine: array[0..2] of TBGRAPixel;\n  PTop,PMiddle,PBottom: PBGRAPixel;\n  borderColor: TBGRAPixel;\nbegin\n  if Buffers[1] = nil then\n  begin\n    FillDWord(ADest^, ACount, LongWord(FDestinationBorderColor));\n    exit;\n  end;\n  MiddleX := BufferX+1;\n  while (ACount > 0) and (MiddleX < 0) do\n  begin\n    ADest^ := FDestinationBorderColor;\n    Dec(ACount);\n    Inc(ADest);\n    Inc(MiddleX);\n  end;\n  if (ACount > 0) and (MiddleX = 0) and (MiddleX < BufferWidth) then\n  begin\n    MiddleLine[1] := Buffers[1][MiddleX];\n    if AutoSourceBorderColor then borderColor := MiddleLine[1]\n    else borderColor := FSourceBorderColor;\n\n    TopLine[0] := borderColor;\n    MiddleLine[0] := borderColor;\n    BottomLine[0] := borderColor;\n    if Buffers[0] = nil then TopLine[1] := borderColor else TopLine[1] := Buffers[0][MiddleX];\n    if Buffers[2] = nil then BottomLine[1] := borderColor else BottomLine[1] := Buffers[2][MiddleX];\n    inc(MiddleX);\n    if MiddleX >= BufferWidth then\n    begin\n      TopLine[2] := borderColor;\n      MiddleLine[2] := borderColor;\n      BottomLine[2] := borderColor;\n    end else\n    begin\n      if Buffers[0] = nil then TopLine[2] := borderColor else TopLine[2] := Buffers[0][MiddleX];\n      MiddleLine[2] := Buffers[1][MiddleX];\n      if Buffers[2] = nil then BottomLine[2] := borderColor else BottomLine[2] := Buffers[2][MiddleX];\n    end;\n    ADest^ := DoFilter3X3(@TopLine,@MiddleLine,@BottomLine);\n    Dec(ACount);\n    Inc(ADest);\n  end;\n  if (Buffers[0]<>nil) and (Buffers[2]<>nil) then\n  begin\n    while (ACount > 0) and (MiddleX+1 < BufferWidth) do\n    begin\n      ADest^ := DoFilter3X3(@Buffers[0][MiddleX-1],@Buffers[1][MiddleX-1],@Buffers[2][MiddleX-1]);\n      Inc(MiddleX);\n      Dec(ACount);\n      Inc(ADest);\n    end;\n  end else\n  begin\n    if not AutoSourceBorderColor then\n    begin\n      TopLine[0] := FSourceBorderColor;\n      TopLine[1] := FSourceBorderColor;\n      TopLine[2] := FSourceBorderColor;\n      BottomLine[0] := FSourceBorderColor;\n      BottomLine[1] := FSourceBorderColor;\n      BottomLine[2] := FSourceBorderColor;\n    end;\n    while (ACount > 0) and (MiddleX+1 < BufferWidth) do\n    begin\n      PMiddle:= @Buffers[1][MiddleX-1];\n      if Buffers[0] = nil then\n      begin\n        if AutoSourceBorderColor then\n        begin\n          TopLine[0] := PMiddle[1];\n          TopLine[1] := PMiddle[1];\n          TopLine[2] := PMiddle[1];\n        end;\n        PTop := @TopLine;\n      end\n      else PTop := @Buffers[0][MiddleX-1];\n      if Buffers[2] = nil then\n      begin\n        if AutoSourceBorderColor then\n        begin\n          BottomLine[0] := PMiddle[1];\n          BottomLine[1] := PMiddle[1];\n          BottomLine[2] := PMiddle[1];\n        end;\n        PBottom := @BottomLine;\n      end\n      else PBottom := @Buffers[2][MiddleX-1];\n      ADest^ := DoFilter3X3(PTop,PMiddle,PBottom);\n      Inc(MiddleX);\n      Dec(ACount);\n      Inc(ADest);\n    end;\n  end;\n  if (ACount > 0) and (MiddleX < BufferWidth) then\n  begin\n    MiddleLine[1] := Buffers[1][MiddleX];\n    if AutoSourceBorderColor then borderColor := MiddleLine[1]\n    else borderColor := FSourceBorderColor;\n\n    if Buffers[0] = nil then TopLine[0] := borderColor else TopLine[0] := Buffers[0][MiddleX-1];\n    MiddleLine[0] := Buffers[1][MiddleX-1];\n    if Buffers[2] = nil then BottomLine[0] := borderColor else BottomLine[0] := Buffers[2][MiddleX-1];\n    if Buffers[0] = nil then TopLine[1] := borderColor else TopLine[1] := Buffers[0][MiddleX];\n    if Buffers[2] = nil then BottomLine[1] := borderColor else BottomLine[1] := Buffers[2][MiddleX];\n    inc(MiddleX);\n    if MiddleX >= BufferWidth then\n    begin\n      TopLine[2] := borderColor;\n      MiddleLine[2] := borderColor;\n      BottomLine[2] := borderColor;\n    end else\n    begin\n      if Buffers[0] = nil then TopLine[2] := borderColor else TopLine[2] := Buffers[0][MiddleX];\n      MiddleLine[2] := Buffers[1][MiddleX];\n      if Buffers[2] = nil then BottomLine[2] := borderColor else BottomLine[2] := Buffers[2][MiddleX];\n    end;\n    ADest^ := DoFilter3X3(@TopLine,@MiddleLine,@BottomLine);\n    Dec(ACount);\n    Inc(ADest);\n  end;\n  while (ACount > 0) do\n  begin\n    ADest^ := FDestinationBorderColor;\n    Dec(ACount);\n    Inc(ADest);\n  end;\nend;\n\nconstructor TBGRA3X3FilterScanner.Create(ASource: IBGRAScanner;\n  ABounds: TRect);\nbegin\n  inherited Create(ASource,ABounds,Point(-1,-1),3,3);\n  FSourceBorderColor := BGRAPixelTransparent;\n  FDestinationBorderColor := BGRAPixelTransparent;\n  FAutoSourceBorderColor := False;\nend;\n\nconstructor TBGRA3X3FilterScanner.Create(ASource: TBGRACustomBitmap);\nbegin\n  inherited Create(ASource,Rect(0,0,ASource.Width,ASource.Height),Point(-1,-1),3,3);\n  FSourceBorderColor := BGRAPixelTransparent;\n  FDestinationBorderColor := BGRAPixelTransparent;\n  FAutoSourceBorderColor := False;\n  AllowDirectRead := true;\nend;\n\n{ TBGRASharpenScanner }\n\nfunction TBGRASharpenScanner.DoFilter3X3(PTop, PMiddle, PBottom: PBGRAPixel): TBGRAPixel;\nvar\n  sumR, sumG, sumB, sumA, nbA: UInt32or64;\n  refPixel: TBGRAPixel;\n  rgbDivShr1: UInt32or64;\nbegin\n  if FAmount = 0 then\n  begin\n    result := PMiddle[1];\n    exit;\n  end;\n  //compute sum\n  sumR   := 0;\n  sumG   := 0;\n  sumB   := 0;\n  sumA   := 0;\n  //RGBdiv := 0;\n  nbA    := 0;\n\n  {$hints off}\n  with PTop[0] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PTop[1] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PTop[2] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PMiddle[0] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PMiddle[2] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PBottom[0] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PBottom[1] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n  with PBottom[2] do if alpha <> 0 then begin inc(sumR, red * alpha); inc(sumG, green * alpha); inc(sumB, blue * alpha); inc(sumA, alpha); inc(nbA); end;\n   {$hints on}\n\n  //we finally have an average pixel\n  if (sumA = 0) then\n    refPixel := BGRAPixelTransparent\n  else\n  begin\n    rgbDivShr1:= sumA shr 1;\n    refPixel.red   := (sumR + rgbDivShr1) div sumA;\n    refPixel.green := (sumG + rgbDivShr1) div sumA;\n    refPixel.blue  := (sumB + rgbDivShr1) div sumA;\n    refPixel.alpha := (sumA + nbA shr 1) div nbA;\n  end;\n\n  //read the pixel at the center of the square\n  if refPixel <> BGRAPixelTransparent then\n  begin\n    with PMiddle[1] do\n    begin\n      //compute sharpened pixel by adding the difference\n      if FAmount<>256 then\n        result := BGRA( max(0, min($FFFF, Int32or64(red shl 8) +\n          FAmount*(red - refPixel.red))) shr 8,\n            max(0, min($FFFF, Int32or64(green shl 8) +\n          FAmount*(green - refPixel.green))) shr 8,\n           max(0, min($FFFF, Int32or64(blue shl 8) +\n          FAmount*(blue - refPixel.blue))) shr 8,\n           max(0, min($FFFF, Int32or64(alpha shl 8) +\n          FAmount*(alpha - refPixel.alpha))) shr 8 )\n      else\n        result := BGRA( max(0, min(255, (red shl 1) - refPixel.red)),\n           max(0, min(255, (green shl 1) - refPixel.green)),\n           max(0, min(255, (blue shl 1) - refPixel.blue)),\n           max(0, min(255, (alpha shl 1) - refPixel.alpha)));\n    end;\n  end else\n    result := PMiddle[1];\nend;\n\nconstructor TBGRASharpenScanner.Create(ASource: IBGRAScanner;\n  ABounds: TRect; AAmount: integer);\nbegin\n  inherited Create(ASource,ABounds);\n  FAmount:= AAmount;\nend;\n\nconstructor TBGRASharpenScanner.Create(ASource: TBGRACustomBitmap;\n  AAmount: integer);\nbegin\n  inherited Create(ASource);\n  FAmount:= AAmount;\nend;\n\n{ TBGRAContourScanner }\n\nfunction TBGRAContourScanner.DoFilter3X3(PTop, PMiddle, PBottom: PBGRAPixel): TBGRAPixel;\nvar\n  sum: Int32or64;\n  slope: byte;\nbegin\n  if FGammaCorrection then\n  begin\n    sum := (FastBGRAExpandedDiff(PTop[0],PBottom[2]) + FastBGRAExpandedDiff(PTop[1],PBottom[1]) +\n        FastBGRAExpandedDiff(PTop[2],PBottom[0]) + FastBGRAExpandedDiff(PMiddle[0],PMiddle[2])) div 3;\n\n    if sum >= 65535 then\n      slope := 0\n    else if sum <= 0 then\n      slope := 255\n    else slope := GammaCompressionTab[65535-sum];\n  end else\n  begin\n      sum := (FastBGRALinearDiff(PTop[0],PBottom[2]) + FastBGRALinearDiff(PTop[1],PBottom[1]) +\n        FastBGRALinearDiff(PTop[2],PBottom[0]) + FastBGRALinearDiff(PMiddle[0],PMiddle[2])) div 3;\n\n    if sum >= 255 then\n      slope := 0\n    else if sum < 0 then\n      slope := 255\n    else slope := 255-sum;\n  end;\n  result.red := slope;\n  result.green := slope;\n  result.blue := slope;\n  result.alpha := FOpacity;\nend;\n\nconstructor TBGRAContourScanner.Create(ASource: IBGRAScanner;\n  ABounds: TRect; AGammaCorrection: boolean);\nbegin\n  inherited Create(ASource,ABounds);\n  FGammaCorrection := AGammaCorrection;\n  AutoSourceBorderColor:= True;\n  FOpacity:= 255;\nend;\n\nconstructor TBGRAContourScanner.Create(ASource: TBGRACustomBitmap;\n  AGammaCorrection: boolean);\nbegin\n  inherited Create(ASource);\n  FGammaCorrection := AGammaCorrection;\n  AutoSourceBorderColor:= True;\n  FOpacity:= 255;\nend;\n\n{ TBGRAFilterScannerNormalize }\n\nprocedure TBGRAFilterScannerNormalize.DetermineNormalizationFactors(ABounds: TRect; AEachChannel: boolean);\nvar\n  buffer: TBGRAPixelBuffer;\n  p: PBGRAPixel;\n  c: TExpandedPixel;\n  yb, xb: LongInt;\nbegin\n  if (ABounds.Right <= ABounds.Left) or (ABounds.Bottom <= ABounds.Top) then\n  begin\n    addValRed := 0;\n    addValGreen := 0;\n    addValBlue := 0;\n    addAlpha := 0;\n    factorValRed := 4096;\n    factorValGreen := 4096;\n    factorValBlue := 4096;\n    factorAlpha := 4096;\n    exit;\n  end;\n  maxValRed := 0;\n  minValRed := 65535;\n  maxValGreen := 0;\n  minValGreen := 65535;\n  maxValBlue := 0;\n  minValBlue := 65535;\n  maxAlpha  := 0;\n  minAlpha  := 65535;\n  buffer := nil;\n  for yb := ABounds.Top to ABounds.Bottom do\n  begin\n    if Source.ProvidesScanline(rect(ABounds.Left,yb,ABounds.Right,yb+1)) then\n      p := Source.GetScanlineAt(ABounds.Left,yb)\n    else\n    begin\n      Source.ScanMoveTo(ABounds.Left,yb);\n      AllocateBGRAPixelBuffer(buffer, ABounds.Right-ABounds.Left);\n      p := @buffer[0];\n      ScannerPutPixels(Source,p,ABounds.Right-ABounds.Left,dmSet);\n    end;\n    for xb := ABounds.Right-ABounds.Left-1 downto 0 do\n    begin\n      c := GammaExpansion(p[xb]);\n      if c.red > maxValRed then\n        maxValRed := c.red;\n      if c.green > maxValGreen then\n        maxValGreen := c.green;\n      if c.blue > maxValBlue then\n        maxValBlue := c.blue;\n      if c.red < minValRed then\n        minValRed := c.red;\n      if c.green < minValGreen then\n        minValGreen := c.green;\n      if c.blue < minValBlue then\n        minValBlue := c.blue;\n      if c.alpha > maxAlpha then\n        maxAlpha := c.alpha;\n      if c.alpha < minAlpha then\n        minAlpha := c.alpha;\n    end;\n  end;\n  if not AEachChannel then\n  begin\n    minValRed   := min(min(minValRed, minValGreen), minValBlue);\n    maxValRed   := max(max(maxValRed, maxValGreen), maxValBlue);\n    minValGreen := minValRed;\n    maxValGreen := maxValRed;\n    minValBlue  := minValBlue;\n    maxValBlue  := maxValBlue;\n  end;\n  if maxValRed > minValRed then\n  begin\n    factorValRed := 268431360 div (maxValRed - minValRed);\n    addValRed    := 0;\n  end else\n  begin\n    factorValRed := 0;\n    if minValRed = 0 then\n      addValRed := 0\n    else addValRed := 65535;\n  end;\n  if maxValGreen > minValGreen then\n  begin\n    factorValGreen := 268431360 div (maxValGreen - minValGreen);\n    addValGreen    := 0;\n  end else\n  begin\n    factorValGreen := 0;\n    if minValGreen = 0 then\n      addValGreen := 0\n    else addValGreen := 65535;\n  end;\n  if maxValBlue > minValBlue then\n  begin\n    factorValBlue := 268431360 div (maxValBlue - minValBlue);\n    addValBlue    := 0;\n  end else\n  begin\n    factorValBlue := 0;\n    if minValBlue = 0 then\n      addValBlue := 0 else\n      addValBlue := 65535;\n  end;\n  if maxAlpha > minAlpha then\n  begin\n    factorAlpha := 268431360 div (maxAlpha - minAlpha);\n    addAlpha    := 0;\n  end else\n  begin\n    factorAlpha := 0;\n    if minAlpha = 0 then\n      addAlpha := 0 else\n      addAlpha := 65535;\n  end;\nend;\n\nprocedure TBGRAFilterScannerNormalize.DoComputeFilterAt(ASource: PBGRAPixel;\n  ADest: PBGRAPixel; ACount: integer; AGammaCorrection: boolean);\nvar\n  c: TExpandedPixel;\nbegin\n  While ACount > 0 do\n  begin\n    c := GammaExpansion(ASource^);\n    Inc(ASource);\n    c.red   := ((c.red - minValRed) * factorValRed + 2047) shr 12 + addValRed;\n    c.green := ((c.green - minValGreen) * factorValGreen + 2047) shr 12 + addValGreen;\n    c.blue  := ((c.blue - minValBlue) * factorValBlue + 2047) shr 12 + addValBlue;\n    c.alpha := ((c.alpha - minAlpha) * factorAlpha + 2047) shr 12 + addAlpha;\n    ADest^  := GammaCompression(c);\n    Inc(ADest);\n    dec(ACount);\n  end;\nend;\n\nconstructor TBGRAFilterScannerNormalize.Create(ASource: IBGRAScanner;\n  AOffset: TPoint; ABounds: TRect; AEachChannel: boolean);\nbegin\n  inherited Create(ASource,AOffset,True);\n  DetermineNormalizationFactors(ABounds, AEachChannel);\nend;\n\nclass procedure TBGRAFilterScannerNormalize.ComputeFilterAt(\n  ASource: PBGRAPixel; ADest: PBGRAPixel; ACount: integer;\n  AGammaCorrection: boolean);\nbegin\n  raise exception.Create('Normalize filter scanner cannot be called as a class procedure');\nend;\n\n{ TBGRAFilterScannerSwapRedBlue }\n\nclass procedure TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(\n  ASource: PBGRAPixel; ADest: PBGRAPixel; ACount: integer;\n  AGammaCorrection: boolean);\nconst RedMask = 255 shl TBGRAPixel_RedShift;\n      BlueMask = 255 shl TBGRAPixel_BlueShift;\n      GreenAndAlphaMask = (255 shl TBGRAPixel_GreenShift) or (255 shl TBGRAPixel_AlphaShift);\n      RedMask64 = RedMask or (RedMask shl 32);\n      BlueMask64 = BlueMask or (BlueMask shl 32);\n      GreenAndAlphaMask64 = GreenAndAlphaMask or (GreenAndAlphaMask shl 32);\nvar\n  temp: LongWord;\n  temp64: QWord;\n  oddN: boolean;\nbegin\n  {$PUSH}{$WARNINGS OFF}\n  if ACount <= 0 then exit;\n  oddN := odd(ACount);\n  ACount := ACount shr 1;\n  if TBGRAPixel_RedShift > TBGRAPixel_BlueShift then\n    while ACount > 0 do\n    begin\n      temp64 := PQWord(ASource)^;\n      PQWord(ADest)^ := ((temp64 and BlueMask64) shl (TBGRAPixel_RedShift-TBGRAPixel_BlueShift)) or\n                    ((temp64 and RedMask64) shr (TBGRAPixel_RedShift-TBGRAPixel_BlueShift)) or\n                    (temp64 and GreenAndAlphaMask64);\n      dec(ACount);\n      inc(ASource,2);\n      inc(ADest,2);\n    end else\n    while ACount > 0 do\n    begin\n      temp64 := PQWord(ASource)^;\n      PQWord(ADest)^ := ((temp64 and BlueMask64) shr (TBGRAPixel_BlueShift-TBGRAPixel_RedShift)) or\n                    ((temp64 and RedMask64) shl (TBGRAPixel_BlueShift-TBGRAPixel_RedShift)) or\n                    (temp64 and GreenAndAlphaMask64);\n      dec(ACount);\n      inc(ASource,2);\n      inc(ADest,2);\n    end;\n  if oddN then\n  begin\n    if TBGRAPixel_RedShift > TBGRAPixel_BlueShift then\n    begin\n      temp := PLongWord(ASource)^;\n      PLongWord(ADest)^ := ((temp and BlueMask) shl (TBGRAPixel_RedShift-TBGRAPixel_BlueShift)) or\n            ((temp and RedMask) shr (TBGRAPixel_RedShift-TBGRAPixel_BlueShift)) or\n            (temp and GreenAndAlphaMask);\n    end else\n    begin\n      temp := PLongWord(ASource)^;\n      PLongWord(ADest)^ := ((temp and BlueMask) shr (TBGRAPixel_BlueShift-TBGRAPixel_RedShift)) or\n            ((temp and RedMask) shl (TBGRAPixel_BlueShift-TBGRAPixel_RedShift)) or\n            (temp and GreenAndAlphaMask);\n    end;\n  end;\n  {$POP}\nend;\n\n{ TBGRAFilterScannerNegative }\n\nclass procedure TBGRAFilterScannerNegative.ComputeFilterAt(\n  ASource: PBGRAPixel; ADest: PBGRAPixel; ACount: integer;\n  AGammaCorrection: boolean);\nbegin\n  if ADest = ASource then\n  begin\n    if AGammaCorrection then\n      while ACount > 0 do\n      begin\n        with ADest^ do\n          if alpha <> 0 then\n          begin\n            ADest^.red := GammaCompressionTab[not GammaExpansionTab[red]];\n            ADest^.green := GammaCompressionTab[not GammaExpansionTab[green]];\n            ADest^.blue := GammaCompressionTab[not GammaExpansionTab[blue]];\n          end;\n        Inc(ADest);\n        dec(ACount);\n      end else\n      while ACount > 0 do\n      begin\n        if ADest^.alpha <> 0 then\n          LongWord(ADest^) := LongWord(ADest^) xor ($ffffffff and not ($ff shl TBGRAPixel_AlphaShift));\n        Inc(ADest);\n        dec(ACount);\n      end;\n  end else\n    if AGammaCorrection then\n      while ACount > 0 do\n      begin\n        with ASource^ do\n          if alpha = 0 then\n            ADest^ := BGRAPixelTransparent\n          else\n          begin\n            ADest^.red := GammaCompressionTab[not GammaExpansionTab[red]];\n            ADest^.green := GammaCompressionTab[not GammaExpansionTab[green]];\n            ADest^.blue := GammaCompressionTab[not GammaExpansionTab[blue]];\n            ADest^.alpha := alpha;\n          end;\n        inc(ASource);\n        Inc(ADest);\n        dec(ACount);\n      end else\n      while ACount > 0 do\n      begin\n        if ASource^.alpha = 0 then\n          ADest^ := BGRAPixelTransparent\n        else\n          LongWord(ADest^) := LongWord(ASource^) xor ($ffffffff and not ($ff shl TBGRAPixel_AlphaShift));\n        inc(ASource);\n        Inc(ADest);\n        dec(ACount);\n      end;\nend;\n\n{ TBGRAFilterScannerGrayscale }\n\nclass procedure TBGRAFilterScannerGrayscale.ComputeFilterAt(\n  ASource: PBGRAPixel; ADest: PBGRAPixel; ACount: integer;\n  AGammaCorrection: boolean);\nbegin\n  if ASource = ADest then\n  begin\n    if AGammaCorrection then\n      while ACount > 0 do\n      begin\n        if ADest^.alpha <> 0 then\n          ADest^ := BGRAToGrayscale(ADest^);\n        Inc(ADest);\n        dec(ACount);\n      end else\n      while ACount > 0 do\n      begin\n        if ADest^.alpha <> 0 then\n          ADest^ := BGRAToGrayscaleLinear(ADest^);\n        Inc(ADest);\n        dec(ACount);\n      end;\n  end else\n    if AGammaCorrection then\n      while ACount > 0 do\n      begin\n        ADest^ := BGRAToGrayscale(ASource^);\n        inc(ASource);\n        Inc(ADest);\n        dec(ACount);\n      end else\n      while ACount > 0 do\n      begin\n        ADest^ := BGRAToGrayscaleLinear(ASource^);\n        inc(ASource);\n        Inc(ADest);\n        dec(ACount);\n      end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafiltertype.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Generic classes for tasks. Those are computations that can be stopped externally via\n  a callback function, thus allowing cancellation. }\nunit BGRAFilterType;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRABitmapTypes;\n\nconst\n    FilterScannerChunkSize = 16;\n\ntype\n  TCheckShouldStopFunc = function(ACurrentY: integer) : boolean of object;\n\n  { Task to apply a filter on an image }\n  TFilterTask = class\n  private\n    FCheckShouldStop: TCheckShouldStopFunc;\n    FScanOffset: TPoint;\n    procedure SetDestination(AValue: TBGRACustomBitmap);\n    function GetInplace: boolean;\n    procedure SetInplace(AValue: boolean);\n  protected\n    FDestination: TBGRACustomBitmap;\n    FSource: TBGRACustomBitmap;\n    FSourceScanner: IBGRAScanner;\n    FCurrentY: integer;\n    function GetShouldStop(ACurrentY: integer): boolean;\n    procedure DoExecute; virtual; abstract;\n    function RequestSourceScanLine(X,Y,Count: Integer): PBGRAPixel;\n    procedure ReleaseSourceScanLine(P: PBGRAPixel);\n    function RequestSourceExpandedScanLine(X,Y,Count: Integer): PExpandedPixel;\n    procedure ReleaseSourceExpandedScanLine(P: PExpandedPixel);\n    procedure SetSource(ABitmap: TBGRACustomBitmap); overload;\n    procedure SetSource(AScanner: IBGRAScanner); overload;\n  public\n    function Execute: TBGRACustomBitmap;\n    property Destination: TBGRACustomBitmap read FDestination write SetDestination;\n    property CheckShouldStop: TCheckShouldStopFunc read FCheckShouldStop write FCheckShouldStop;\n    property CurrentY: integer read FCurrentY;\n    property ScanOffset: TPoint read FScanOffset write FScanOffset;\n    property Inplace: boolean read GetInplace write SetInplace;\n  end;\n\n  { Abstract class for a scanner that applies a filter }\n  TBGRAFilterScanner = class(TBGRACustomScanner)\n  private\n    FAllowDirectRead: boolean;\n    FCurX,FCurY: integer;\n    FSource: IBGRAScanner;\n    FOffset: TPoint;\n    FVariablePixelBuffer: TBGRAPixelBuffer;\n    FOutputBuffer: packed array[0..FilterScannerChunkSize-1] of TBGRAPixel;\n    FOutputBufferPos: integer;\n  public\n    constructor Create(ASource: IBGRAScanner; AOffset: TPoint);\n    procedure ComputeFilter(ASource: IBGRAScanner; X,Y: Integer; ADest: PBGRAPixel; ACount: integer); virtual; abstract;\n    function ScanAtInteger(X,Y: integer): TBGRAPixel; override;\n    procedure ScanMoveTo(X,Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    function IsScanPutPixelsDefined: boolean; override;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    property Source: IBGRAScanner read FSource;\n    property Offset: TPoint read FOffset;\n    property AllowDirectRead: boolean read FAllowDirectRead write FAllowDirectRead;\n  end;\n\n  { Abstract class for a scanner that applies a filter per pixel }\n  TBGRAFilterScannerPixelwise = class(TBGRAFilterScanner)\n  private\n    FBuffer: TBGRAPixelBuffer;\n    FGammaCorrection: boolean;\n  protected\n    procedure DoComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n            ACount: integer; AGammaCorrection: boolean); virtual;\n  public\n    constructor Create(ASource: IBGRAScanner; AOffset: TPoint; AGammaCorrection: boolean = true);\n    procedure ComputeFilter(ASource: IBGRAScanner; X, Y: Integer; ADest: PBGRAPixel;\n      ACount: integer); override;\n    class procedure ComputeFilterAt(ASource: PBGRAPixel; ADest: PBGRAPixel;\n      ACount: integer; AGammaCorrection: boolean); virtual; abstract;\n    class procedure ComputeFilterInplace(ABitmap: TBGRACustomBitmap; ABounds: TRect;\n      AGammaCorrection: boolean); virtual;\n    property GammaCorrection: boolean read FGammaCorrection write FGammaCorrection;\n  end;\n\n  { Abstract class for a scanner that applies a filter on a group of pixels }\n  TBGRAFilterScannerMultipixel = class(TBGRAFilterScanner)\n  private\n    FSourceBounds: TRect;\n    FKernelWidth,FKernelHeight: integer;\n    FCurBufferY: integer;\n    FCurBufferYDefined: boolean;\n    FBuffers: array of TBGRAPixelBuffer;\n    FPBuffers: array of PBGRAPixel;\n  protected\n    procedure DoComputeFilter(BufferX: Integer; const Buffers: array of PBGRAPixel;\n      BufferWidth: integer; ADest: PBGRAPixel; ACount: integer); virtual; abstract;\n    procedure LoadBuffer(ASource: IBGRAScanner; X,Y: Integer; BufferIndex: Integer; ACount: integer); virtual;\n  public\n    constructor Create(ASource: IBGRAScanner; ASourceBounds: TRect; AOffset: TPoint;\n      AKernelWidth,AKernelHeight: Integer);\n    procedure ComputeFilter(ASource: IBGRAScanner; X, Y: Integer; ADest: PBGRAPixel;\n      ACount: integer); override;\n    property KernelWidth: integer read FKernelWidth;\n    property KernelHeight: integer read FKernelHeight;\n    property SourceBounds: TRect read FSourceBounds;\n  end;\n\nimplementation\n\nuses SysUtils, BGRABlend;\n\n{ TFilterTask }\n\nfunction TFilterTask.GetShouldStop(ACurrentY: integer): boolean;\nbegin\n  FCurrentY:= ACurrentY;\n  if Assigned(FCheckShouldStop) then\n    result := FCheckShouldStop(ACurrentY)\n  else\n    result := false;\nend;\n\nfunction TFilterTask.RequestSourceScanLine(X, Y, Count: Integer): PBGRAPixel;\nbegin\n  if FSource <> nil then\n    result := FSource.ScanLine[y]+x\n  else\n  begin\n    getmem(result, sizeof(TBGRAPixel)*Count);\n    FSourceScanner.ScanMoveTo(X+FScanOffset.X,Y+FScanOffset.Y);\n    FSourceScanner.ScanPutPixels(result,count,dmSet);\n  end;\nend;\n\nprocedure TFilterTask.ReleaseSourceScanLine(P: PBGRAPixel);\nbegin\n  if FSource = nil then\n    if p <> nil then freemem(p);\nend;\n\nfunction TFilterTask.RequestSourceExpandedScanLine(X, Y, Count: Integer\n  ): PExpandedPixel;\nvar p: PBGRAPixel;\n   pexp: PExpandedPixel;\nbegin\n  getmem(result, sizeof(TExpandedPixel)*Count);\n  if FSource <> nil then\n  begin\n    p := FSource.ScanLine[Y]+x;\n    pexp := result;\n    while Count > 0 do\n    begin\n      pexp^ := GammaExpansion(p^);\n      inc(pexp);\n      inc(p);\n      dec(Count);\n    end;\n  end else\n  begin\n    FSourceScanner.ScanMoveTo(X+FScanOffset.X,Y+FScanOffset.Y);\n    pexp := result;\n    while Count > 0 do\n    begin\n      pexp^ := FSourceScanner.ScanNextExpandedPixel;\n      inc(pexp);\n      dec(Count);\n    end;\n  end;\nend;\n\nprocedure TFilterTask.ReleaseSourceExpandedScanLine(P: PExpandedPixel);\nbegin\n  if p <> nil then freemem(p);\nend;\n\nprocedure TFilterTask.SetSource(ABitmap: TBGRACustomBitmap);\nbegin\n  FSource := ABitmap;\n  FSourceScanner := nil;\nend;\n\nprocedure TFilterTask.SetSource(AScanner: IBGRAScanner);\nbegin\n  FSource := nil;\n  FSourceScanner := AScanner;\nend;\n\nfunction TFilterTask.Execute: TBGRACustomBitmap;\nvar DestinationOwned: boolean;\nbegin\n  FCurrentY := 0;\n  if Destination = nil then\n  begin\n    if FSource = nil then //using default factory\n      FDestination := BGRABitmapFactory.create(FSource.Width,FSource.Height)\n    else\n      FDestination := FSource.NewBitmap(FSource.Width,FSource.Height);\n    DestinationOwned:= true;\n  end else\n    DestinationOwned:= false;\n  try\n    DoExecute;\n    result := Destination;\n    FDestination := nil;\n  except\n    on ex: exception do\n    begin\n      if DestinationOwned then FreeAndNil(FDestination);\n      raise ex;\n    end;\n  end;\nend;\n\nprocedure TFilterTask.SetDestination(AValue: TBGRACustomBitmap);\nbegin\n  if FDestination <> nil then\n    raise exception.Create('Destination is already defined');\n  FDestination := AValue;\nend;\n\nfunction TFilterTask.GetInplace: boolean;\nbegin\n  result := (Destination = FSource) and (FSource <> nil);\nend;\n\nprocedure TFilterTask.SetInplace(AValue: boolean);\nbegin\n  if AValue = InPlace then exit;\n  if AValue and (FSource = nil) then\n     raise exception.Create('Inplace is valid only when source image is defined');\n  Destination := FSource;\nend;\n\n{ TBGRAFilterScanner }\n\nconstructor TBGRAFilterScanner.Create(ASource: IBGRAScanner; AOffset: TPoint);\nbegin\n  FSource := ASource;\n  FOffset := AOffset;\n  FOutputBufferPos := FilterScannerChunkSize;\nend;\n\nfunction TBGRAFilterScanner.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  ScanMoveTo(X,Y);\n  result := ScanNextPixel;\nend;\n\nprocedure TBGRAFilterScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FCurX := X;\n  FCurY := Y;\n  FOutputBufferPos := FilterScannerChunkSize;\nend;\n\nfunction TBGRAFilterScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  if FOutputBufferPos >= FilterScannerChunkSize then\n  begin\n    ComputeFilter(FSource,FCurX+FOffset.X,FCurY+FOffset.Y,@FOutputBuffer[0],FilterScannerChunkSize);\n    FOutputBufferPos := 0;\n  end;\n  Result:= FOutputBuffer[FOutputBufferPos];\n  inc(FOutputBufferPos);\n  inc(FCurX);\nend;\n\nprocedure TBGRAFilterScanner.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nbegin\n  if mode = dmSet then\n  begin\n    ComputeFilter(FSource,FCurX+FOffset.X,FCurY+FOffset.Y,pdest,count);\n    inc(FCurX,count);\n  end else\n  begin\n    AllocateBGRAPixelBuffer(FVariablePixelBuffer, count);\n    ComputeFilter(FSource,FCurX+FOffset.X,FCurY+FOffset.Y,@FVariablePixelBuffer[0],count);\n    inc(FCurX,count);\n    PutPixels(pdest, @FVariablePixelBuffer[0], count, mode, 255);\n  end;\nend;\n\nprocedure TBGRAFilterScanner.ScanSkipPixels(ACount: integer);\nbegin\n  inc(FOutputBufferPos, ACount);\n  inc(FCurX, ACount);\nend;\n\nfunction TBGRAFilterScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:= true;\nend;\n\nfunction TBGRAFilterScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  result := ScanAtInteger(round(X),round(Y));\nend;\n\n{ TBGRAFilterScannerPixelwise }\n\nprocedure TBGRAFilterScannerPixelwise.DoComputeFilterAt(ASource: PBGRAPixel;\n  ADest: PBGRAPixel; ACount: integer; AGammaCorrection: boolean);\nbegin\n  ComputeFilterAt(ASource,ADest,ACount,AGammaCorrection);\nend;\n\nconstructor TBGRAFilterScannerPixelwise.Create(ASource: IBGRAScanner;\n  AOffset: TPoint; AGammaCorrection: boolean);\nbegin\n  inherited Create(ASource,AOffset);\n  GammaCorrection := AGammaCorrection;\n  //it is most likely that direct read can be used, the only exception being\n  //that the destination would be equal to the source and that there would\n  //be an offset\n  AllowDirectRead := true;\nend;\n\nprocedure TBGRAFilterScannerPixelwise.ComputeFilter(ASource: IBGRAScanner; X,\n  Y: Integer; ADest: PBGRAPixel; ACount: integer);\nvar p: PBGRAPixel;\nbegin\n  if AllowDirectRead and ASource.ProvidesScanline(rect(x,y,x+ACount,y+1)) then\n  begin\n    p := ASource.GetScanlineAt(x,y);\n  end else\n  begin\n    AllocateBGRAPixelBuffer(FBuffer, ACount);\n    ASource.ScanMoveTo(X,Y);\n    p := @FBuffer[0];\n    ASource.ScanPutPixels(p, ACount, dmSet);\n  end;\n  DoComputeFilterAt(p,ADest,ACount,GammaCorrection);\nend;\n\nclass procedure TBGRAFilterScannerPixelwise.ComputeFilterInplace(\n  ABitmap: TBGRACustomBitmap; ABounds: TRect; AGammaCorrection: boolean);\nvar\n  yb: LongInt;\n  p: Pointer;\nbegin\n  ABitmap.LoadFromBitmapIfNeeded;\n  if (ABounds.Left = 0) and (ABounds.Top = 0) and\n     (ABounds.Right = ABitmap.Width) and (ABounds.Bottom = ABitmap.Height) then\n    ComputeFilterAt(ABitmap.Data,ABitmap.Data,ABitmap.NbPixels,AGammaCorrection)\n  else\n    for yb := ABounds.Top to ABounds.Bottom-1 do\n    begin\n      p := ABitmap.ScanLine[yb]+ABounds.Left;\n      ComputeFilterAt(p,p,ABounds.Right-ABounds.Left,AGammaCorrection);\n    end;\n  ABitmap.InvalidateBitmap;\nend;\n\n{ TBGRAFilterScannerMultipixel }\n\nprocedure TBGRAFilterScannerMultipixel.LoadBuffer(ASource: IBGRAScanner; X,\n  Y: Integer; BufferIndex: Integer; ACount: integer);\nbegin\n  if (Y < FSourceBounds.Top) or (Y >= FSourceBounds.Bottom) then\n    FPBuffers[BufferIndex] := nil\n  else\n  if AllowDirectRead and ASource.ProvidesScanline(rect(x,y,x+ACount,y+1)) then\n  begin\n    FPBuffers[BufferIndex] := ASource.GetScanlineAt(X,Y);\n  end else\n  begin\n    AllocateBGRAPixelBuffer(FBuffers[BufferIndex], ACount);\n    ASource.ScanMoveTo(X,Y);\n    FPBuffers[BufferIndex] := @(FBuffers[BufferIndex][0]);\n    ASource.ScanPutPixels(FPBuffers[BufferIndex], ACount, dmSet);\n  end;\nend;\n\nconstructor TBGRAFilterScannerMultipixel.Create(ASource: IBGRAScanner;\n  ASourceBounds: TRect; AOffset: TPoint; AKernelWidth, AKernelHeight: Integer);\nvar\n  temp: Integer;\nbegin\n  inherited Create(ASource,AOffset);\n  FSourceBounds := ASourceBounds;\n  if FSourceBounds.Left > FSourceBounds.Right then\n  begin\n    temp := FSourceBounds.Left;\n    FSourceBounds.Left := FSourceBounds.Right;\n    FSourceBounds.Right := temp;\n  end;\n  if FSourceBounds.Top > FSourceBounds.Bottom then\n  begin\n    temp := FSourceBounds.Top;\n    FSourceBounds.Top := FSourceBounds.Bottom;\n    FSourceBounds.Bottom := temp;\n  end;\n  FKernelWidth := AKernelWidth;\n  FKernelHeight:= AKernelHeight;\n  SetLength(FBuffers, FKernelHeight);\n  SetLength(FPBuffers, FKernelHeight);\n  FCurBufferYDefined := false;\n  //it is not sure that direct read can be used, because if the destination\n  //is equal to the source, the output will change the input buffers\n  AllowDirectRead := false;\nend;\n\nprocedure TBGRAFilterScannerMultipixel.ComputeFilter(ASource: IBGRAScanner; X,\n  Y: Integer; ADest: PBGRAPixel; ACount: integer);\nvar\n  yb,dy: Integer;\n  temp: TBGRAPixelBuffer;\n  p: PBGRAPixel;\nbegin\n  if not FCurBufferYDefined or (Abs(Y-FCurBufferY)>=FKernelHeight) then\n  begin\n    FCurBufferY := y;\n    FCurBufferYDefined := true;\n    for yb := 0 to FKernelHeight-1 do\n      LoadBuffer(ASource,FSourceBounds.Left,Y+yb,yb,SourceBounds.Right-FSourceBounds.Left);\n  end else\n  if Y < FCurBufferY then\n  begin\n    dy := FCurBufferY-y;\n    for yb := FKernelHeight-1 downto dy do\n    begin\n      temp := FBuffers[yb];\n      FBuffers[yb] := FBuffers[yb-dy];\n      FBuffers[yb-dy] := temp;\n      p := FPBuffers[yb];\n      FPBuffers[yb] := FPBuffers[yb-dy];\n      FPBuffers[yb-dy] := p;\n    end;\n    for yb := 0 to dy-1 do\n      LoadBuffer(ASource,FSourceBounds.Left,Y+yb,yb,FSourceBounds.Right-FSourceBounds.Left);\n    FCurBufferY := y;\n  end else\n  if Y > FCurBufferY then\n  begin\n    dy := y-FCurBufferY;\n    for yb := 0 to FKernelHeight-1-dy do\n    begin\n      temp := FBuffers[yb];\n      FBuffers[yb] := FBuffers[yb+dy];\n      FBuffers[yb+dy] := temp;\n      p := FPBuffers[yb];\n      FPBuffers[yb] := FPBuffers[yb+dy];\n      FPBuffers[yb+dy] := p;\n    end;\n    for yb := FKernelHeight-1-dy+1 to FKernelHeight-1 do\n      LoadBuffer(ASource,FSourceBounds.Left,Y+yb,yb,FSourceBounds.Right-FSourceBounds.Left);\n    FCurBufferY := y;\n  end;\n  DoComputeFilter(X-FSourceBounds.Left,FPBuffers,FSourceBounds.Right-FSourceBounds.Left,ADest,ACount);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafontgl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Font rendering in OpenGL with caching of textures for each glyph. Textures\n  are built using a TBGRACustomFontRenderer }\nunit BGRAFontGL;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRAOpenGLType, BGRABitmapTypes,\n  Avl_Tree;\n\ntype\n  { Glyph rendered as a texture }\n  TRenderedGlyph = class\n  private\n    FIdentifier: UTF8String;\n    FTexture: IBGLTexture;\n    FHorizontalOverflowPx, FVerticalOverflowPx, FAdvancePx: integer;\n  public\n    constructor Create(AIdentifier: UTF8String; ATexture: IBGLTexture;\n      AHorizontalOverflowPx, AVerticalOverflowPx: integer);\n    procedure Draw(x,y,Scale: single; AColor: TBGRAPixel); overload;\n    procedure Draw(x,y,Scale: single; AGradTopLeft, AGradTopRight, AGradBottomRight, AGradBottomLeft: TBGRAPixel); overload;\n    property Identifier: UTF8String read FIdentifier;\n    property AdvancePx: integer read FAdvancePx;\n  end;\n\n  { Interface for font rendering with OpenGL }\n  IBGLRenderedFont = interface(IBGLFont)\n    function GetBackgroundColor: TBGRAPixel;\n    function GetColor: TBGRAPixel;\n    function GetFontEmHeight: integer;\n    function GetFontFullHeight: integer;\n    function GetHorizontalOverflow: single;\n    function GetName: string;\n    function GetQuality: TBGRAFontQuality;\n    function GetStyle: TFontStyles;\n    function GetVerticalOverflow: single;\n    procedure SetBackgroundColor(AValue: TBGRAPixel);\n    procedure SetColor(AValue: TBGRAPixel);\n    procedure SetFontEmHeight(AValue: integer);\n    procedure SetFontFullHeight(AValue: integer);\n    procedure SetHorizontalOverflow(AValue: single);\n    procedure SetName(AValue: string);\n    procedure SetQuality(AValue: TBGRAFontQuality);\n    procedure SetStyle(AValue: TFontStyles);\n    procedure SetVerticalOverflow(AValue: single);\n\n    property Name: string read GetName write SetName;\n    property Style: TFontStyles read GetStyle write SetStyle;\n    property Quality: TBGRAFontQuality read GetQuality write SetQuality;\n    property EmHeight: integer read GetFontEmHeight write SetFontEmHeight;\n    property FullHeight: integer read GetFontFullHeight write SetFontFullHeight;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property HorizontalOverflow: single read GetHorizontalOverflow write SetHorizontalOverflow;\n    property VerticalOverflow: single read GetVerticalOverflow write SetVerticalOverflow;\n    property BackgroundColor: TBGRAPixel read GetBackgroundColor write SetBackgroundColor;\n  end;\n\n  { Implementation of font rendering by using a bitmap cache }\n  TBGLRenderedFont = class(TBGLCustomFont,IBGLRenderedFont)\n  private\n    FGlyphs: TAVLTree;\n\n    FName: string;\n    FColor: TBGRAPixel;\n    FBackgroundColor: TBGRAPixel;\n    FEmHeight: integer;\n    FHorizontalOverflow: single;\n    FVerticalOverflow: single;\n    FQuality: TBGRAFontQuality;\n    FStyle: TFontStyles;\n    FGradTopLeft, FGradTopRight, FGradBottomRight, FGradBottomLeft: TBGRAPixel;\n    FUseGradientColor: boolean;\n    FClipped: boolean;\n    FWordBreakHandler: TWordBreakHandler;\n\n    function FindGlyph(AIdentifier: string): TAVLTreeNode;\n    function GetBackgroundColor: TBGRAPixel;\n    function GetColor: TBGRAPixel;\n    function GetFontEmHeight: integer;\n    function GetGlyph(AIdentifier: string): TRenderedGlyph;\n    function GetHorizontalOverflow: single;\n    function GetName: string;\n    function GetQuality: TBGRAFontQuality;\n    function GetStyle: TFontStyles;\n    function GetVerticalOverflow: single;\n    procedure SetGlyph(AIdentifier: string; AValue: TRenderedGlyph);\n    function GetFontFullHeight: integer;\n    procedure SetBackgroundColor(AValue: TBGRAPixel);\n    procedure SetColor(AValue: TBGRAPixel);\n    procedure SetFontEmHeight(AValue: integer);\n    procedure SetFontFullHeight(AValue: integer);\n    procedure SetHorizontalOverflow(AValue: single);\n    procedure SetName(AValue: string);\n    procedure SetQuality(AValue: TBGRAFontQuality);\n    procedure SetStyle(AValue: TFontStyles);\n    procedure SetVerticalOverflow(AValue: single);\n  protected\n    FRenderer: TBGRACustomFontRenderer;\n    FRendererOwned: boolean;\n    function LoadFromFile({%H-}AFilename: UTF8String): boolean; override;\n    procedure FreeMemoryOnDestroy; override;\n    function CreateGlyph(AIdentifier: string): TRenderedGlyph; virtual;\n    procedure CopyFontToRenderer; virtual;\n    procedure DoTextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel; AHorizontalAlign: TAlignment; AVerticalAlign: TTextLayout); overload; virtual;\n    procedure DoTextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel); overload; override;\n    procedure DoTextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel); override;\n    function GetClipped: boolean; override;\n    function GetUseGradientColors: boolean; override;\n    procedure SetClipped(AValue: boolean); override;\n    procedure SetUseGradientColors(AValue: boolean); override;\n    procedure DiscardGlyphs; virtual;\n    procedure DefaultWordBreakHandler(var ABefore, AAfter: string);\n    procedure SplitText(var ATextUTF8: string; AMaxWidth: single; out ARemainsUTF8: string);\n    function GetWrappedLines(ATextUTF8: string; AWidth: single): TStringList;\n  public\n    constructor Create(ARenderer: TBGRACustomFontRenderer; ARendererOwned: boolean = true);\n    procedure FreeMemory; override;\n    function TextWidth(const Text: UTF8String): single; override;\n    function TextHeight(const {%H-}Text: UTF8String): single; override;\n    function TextHeight(const Text: UTF8String; AWidth: single): single; override;\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel); override;\n    property Name: string read GetName write SetName;\n    property Style: TFontStyles read GetStyle write SetStyle;\n    property Quality: TBGRAFontQuality read GetQuality write SetQuality;\n    property EmHeight: integer read GetFontEmHeight write SetFontEmHeight;\n    property FullHeight: integer read GetFontFullHeight write SetFontFullHeight;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property HorizontalOverflow: single read GetHorizontalOverflow write SetHorizontalOverflow;\n    property VerticalOverflow: single read GetVerticalOverflow write SetVerticalOverflow;\n    property BackgroundColor: TBGRAPixel read GetBackgroundColor write SetBackgroundColor;\n    property WordBreakHandler: TWordBreakHandler read FWordBreakHandler write FWordBreakHandler;\n    property Glyph[AIdentifier: string]: TRenderedGlyph read GetGlyph;\n  end;\n\nimplementation\n\nuses BGRAUTF8;\n\n{ TRenderedGlyph }\n\nconstructor TRenderedGlyph.Create(AIdentifier: UTF8String; ATexture: IBGLTexture;\n  AHorizontalOverflowPx, AVerticalOverflowPx: integer);\nbegin\n  FIdentifier := AIdentifier;\n  FTexture := ATexture;\n  FHorizontalOverflowPx:= AHorizontalOverflowPx;\n  FVerticalOverflowPx:= AVerticalOverflowPx;\n  FAdvancePx := ATexture.Width - 2*FHorizontalOverflowPx;\nend;\n\nprocedure TRenderedGlyph.Draw(x, y, Scale: single; AColor: TBGRAPixel);\nbegin\n  FTexture.StretchDraw(x-FHorizontalOverflowPx*Scale,y-FVerticalOverflowPx*Scale, FTexture.Width*Scale, FTexture.Height*Scale, AColor);\nend;\n\nprocedure TRenderedGlyph.Draw(x, y, Scale: single; AGradTopLeft, AGradTopRight,\n  AGradBottomRight, AGradBottomLeft: TBGRAPixel);\nbegin\n  FTexture.SetGradientColors(AGradTopLeft,AGradTopRight, AGradBottomRight,AGradBottomLeft);\n  FTexture.StretchDraw(x-FHorizontalOverflowPx*Scale,y-FVerticalOverflowPx*Scale, FTexture.Width*Scale, FTexture.Height*Scale);\n  FTexture.GradientColors := false;\nend;\n\nfunction CompareGlyphNode(Data1, Data2: Pointer): integer;\nbegin\n  result := CompareStr(TRenderedGlyph(Data1).Identifier,TRenderedGlyph(Data2).Identifier);\nend;\n\n{ TBGLRenderedFont }\n\nfunction TBGLRenderedFont.FindGlyph(AIdentifier: string): TAVLTreeNode;\nvar Comp: integer;\n  Node: TAVLTreeNode;\nbegin\n  Node:=FGlyphs.Root;\n  while (Node<>nil) do begin\n    Comp:=CompareStr(AIdentifier,TRenderedGlyph(Node.Data).Identifier);\n    if Comp=0 then break;\n    if Comp<0 then begin\n      Node:=Node.Left\n    end else begin\n      Node:=Node.Right\n    end;\n  end;\n  result := Node;\nend;\n\nfunction TBGLRenderedFont.GetBackgroundColor: TBGRAPixel;\nbegin\n  result := FBackgroundColor;\nend;\n\nfunction TBGLRenderedFont.GetColor: TBGRAPixel;\nbegin\n  result := FColor;\nend;\n\nfunction TBGLRenderedFont.GetFontEmHeight: integer;\nbegin\n  result := FEmHeight;\nend;\n\nfunction TBGLRenderedFont.CreateGlyph(AIdentifier: string): TRenderedGlyph;\nvar b: TBGLCustomBitmap;\n  hOverflow, vOverflow: integer;\nbegin\n  CopyFontToRenderer;\n  with FRenderer.TextSize(AIdentifier) do\n  begin\n    hOverflow := round(cx*HorizontalOverflow)+1;\n    vOverflow:= round(cy*VerticalOverflow)+1;\n    b:= BGLBitmapFactory.Create(cx+2*hOverflow,cy+2*vOverflow,BackgroundColor);\n    FRenderer.TextOut(b, hOverflow,vOverflow, AIdentifier, Color, taLeftJustify);\n    result:= TRenderedGlyph.Create(AIdentifier,b.MakeTextureAndFree,hOverflow,vOverflow);\n  end;\nend;\n\nprocedure TBGLRenderedFont.CopyFontToRenderer;\nbegin\n  FRenderer.FontName := FName;\n  FRenderer.FontEmHeight := FEmHeight;\n  FRenderer.FontOrientation := 0;\n  FRenderer.FontQuality := FQuality;\n  FRenderer.FontStyle := FStyle;\nend;\n\nprocedure TBGLRenderedFont.DoTextOut(X, Y: Single; const Text: UTF8String;\n  AColor: TBGRAPixel; AHorizontalAlign: TAlignment; AVerticalAlign: TTextLayout);\nvar\n  pstr: pchar;\n  left,charlen: integer;\n  nextchar: string;\n  g: TRenderedGlyph;\nbegin\n  if Text = '' then exit;\n\n  pstr := @Text[1];\n  left := length(Text);\n  case AHorizontalAlign of\n  taCenter: DecF(x, round(TextWidth(Text)/2));\n  taRightJustify: DecF(x, TextWidth(Text));\n  end;\n  case AVerticalAlign of\n  tlCenter: DecF(y, round(TextHeight(Text)/2));\n  tlBottom: DecF(y, TextHeight(Text)*Scale);\n  end;\n  while left > 0 do\n  begin\n    charlen := UTF8CharacterLength(pstr);\n    setlength(nextchar, charlen);\n    move(pstr^, nextchar[1], charlen);\n    inc(pstr,charlen);\n    dec(left,charlen);\n\n    g := GetGlyph(nextchar);\n    if g <> nil then\n    begin\n      if FUseGradientColor then\n        g.Draw(x,y,Scale,FGradTopLeft,FGradTopRight,FGradBottomRight,FGradBottomLeft)\n      else\n        g.Draw(x,y,Scale,AColor);\n      IncF(x, (g.AdvancePx + StepX)  * Scale);\n    end;\n  end;\nend;\n\nprocedure TBGLRenderedFont.DoTextOut(X, Y: Single; const Text: UTF8String;\n  AColor: TBGRAPixel);\nbegin\n  if Justify then\n    DoTextOut(X,Y,Text,AColor,taLeftJustify,VerticalAlign)\n  else\n    DoTextOut(X,Y,Text,AColor,HorizontalAlign,VerticalAlign);\nend;\n\nprocedure TBGLRenderedFont.DoTextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AColor: TBGRAPixel);\n\n  procedure DoDrawTextLine(LineY, LineWidth: Single; ALine: string; AJustify: boolean);\n  var CurX: single;\n    words: TStringList;\n    wordStart: integer;\n    i: Integer;\n  begin\n    if AJustify then\n    begin\n      words := TStringList.Create;\n      wordStart := 1;\n      for i := 1 to length(ALine) do\n      begin\n        if ALine[i]=' ' then\n        begin\n          words.Add(copy(ALine,wordStart,i-wordStart));\n          wordStart := i+1;\n        end;\n      end;\n      words.add(copy(ALine,wordStart,length(ALine)+1-wordStart));\n      CurX := X;\n      LineWidth := 0;\n      for i := 0 to words.Count-1 do\n        IncF(LineWidth, TextWidth(words[i]));\n\n      for i := 0 to words.Count-1 do\n      begin\n        DoTextOut(CurX+round((Width-LineWidth)/(words.Count-1)*i),LineY,words[i],AColor,taLeftJustify,tlTop);\n        IncF(CurX, TextWidth(words[i]));\n      end;\n      words.Free;\n    end else\n    begin\n      Case HorizontalAlign of\n      taCenter: CurX := round(X+(Width-LineWidth)/2);\n      taRightJustify: CurX := X+Width-LineWidth;\n      else\n        CurX := X;\n      end;\n      DoTextOut(CurX,LineY,ALine,AColor,taLeftJustify,tlTop);\n    end;\n  end;\n\nvar CurY: Single;\n  lineHeight: Single;\n  lines: TStringList;\n  i,originalNbLines: Integer;\n  maxLineCount: int64;\nbegin\n  If Text='' then exit;\n  lines := GetWrappedLines(Text,Width);\n  lineHeight := FullHeight * Scale;\n  originalNbLines := lines.Count;\n\n  if Clipped then\n  begin\n    if lineHeight = 0 then exit;\n    maxLineCount := trunc(Height/lineHeight);\n    if maxLineCount <= 0 then exit;\n    while lines.Count > maxLineCount do\n      lines.Delete(lines.Count-1);\n  end;\n\n  case VerticalAlign of\n  tlCenter: CurY := round(Y+( Height - lines.Count*lineHeight )/2);\n  tlBottom: CurY := Y + Height - lines.Count*lineHeight;\n  else CurY := Y;\n  end;\n\n  for i := 0 to lines.Count-1 do\n  begin\n    DoDrawTextLine(CurY,TextWidth(lines[i]),lines[i],Justify and (i<>originalNbLines-1));\n    IncF(CurY, lineHeight);\n  end;\n  lines.Free;\nend;\n\nfunction TBGLRenderedFont.GetGlyph(AIdentifier: string): TRenderedGlyph;\nvar Node: TAVLTreeNode;\nbegin\n  Node := FindGlyph(AIdentifier);\n  if Node = nil then\n  begin\n    if UTF8Length(AIdentifier)<>1 then\n      result := nil\n    else\n    begin\n      result := CreateGlyph(AIdentifier);\n      SetGlyph(AIdentifier, result);\n    end;\n  end\n  else\n    result := TRenderedGlyph(Node.Data);\nend;\n\nfunction TBGLRenderedFont.GetHorizontalOverflow: single;\nbegin\n  result := FHorizontalOverflow;\nend;\n\nfunction TBGLRenderedFont.GetName: string;\nbegin\n  result := FName;\nend;\n\nfunction TBGLRenderedFont.GetQuality: TBGRAFontQuality;\nbegin\n  result := FQuality;\nend;\n\nfunction TBGLRenderedFont.GetStyle: TFontStyles;\nbegin\n  result := FStyle;\nend;\n\nfunction TBGLRenderedFont.GetVerticalOverflow: single;\nbegin\n  result := FVerticalOverflow;\nend;\n\nprocedure TBGLRenderedFont.SetGlyph(AIdentifier: string; AValue: TRenderedGlyph);\nvar Node: TAVLTreeNode;\nbegin\n  if AValue.Identifier <> AIdentifier then\n    raise exception.Create('Identifier mismatch');\n  Node := FindGlyph(AIdentifier);\n  if Node <> nil then\n  begin\n    if pointer(AValue) <> Node.Data then\n      TRenderedGlyph(Node.Data).Free;\n    Node.Data := AValue;\n  end else\n    FGlyphs.Add(pointer(AValue));\nend;\n\nprocedure TBGLRenderedFont.SetStyle(AValue: TFontStyles);\nbegin\n  if FStyle=AValue then Exit;\n  FStyle:=AValue;\n  DiscardGlyphs;\nend;\n\nprocedure TBGLRenderedFont.SetVerticalOverflow(AValue: single);\nbegin\n  if FVerticalOverflow=AValue then Exit;\n  FVerticalOverflow:=AValue;\n  DiscardGlyphs;\nend;\n\nfunction TBGLRenderedFont.GetClipped: boolean;\nbegin\n  result := FClipped;\nend;\n\nfunction TBGLRenderedFont.GetUseGradientColors: boolean;\nbegin\n  result := FUseGradientColor;\nend;\n\nprocedure TBGLRenderedFont.SetClipped(AValue: boolean);\nbegin\n  FClipped:= AValue;\nend;\n\nprocedure TBGLRenderedFont.SetUseGradientColors(AValue: boolean);\nbegin\n  FUseGradientColor:= AValue;\nend;\n\nprocedure TBGLRenderedFont.DiscardGlyphs;\nbegin\n  FGlyphs.FreeAndClear;\nend;\n\nprocedure TBGLRenderedFont.DefaultWordBreakHandler(var ABefore, AAfter: string);\nbegin\n  BGRADefaultWordBreakHandler(ABefore,AAfter);\nend;\n\nfunction TBGLRenderedFont.GetWrappedLines(ATextUTF8: string; AWidth: single\n  ): TStringList;\nvar\n  ARemains: string;\nbegin\n  result := TStringList.Create;\n  repeat\n    SplitText(ATextUTF8, AWidth, ARemains);\n    result.Add(ATextUTF8);\n    ATextUTF8 := ARemains;\n  until ARemains = '';\nend;\n\nprocedure TBGLRenderedFont.SplitText(var ATextUTF8: string; AMaxWidth: single;\n  out ARemainsUTF8: string);\nvar\n  pstr: pchar;\n  p,left,charlen: integer;\n  totalWidth: single;\n  firstChar: boolean;\n  nextchar: string;\n  g: TRenderedGlyph;\nbegin\n  totalWidth := 0;\n  if ATextUTF8 = '' then\n  begin\n    ARemainsUTF8 := '';\n    exit;\n  end else\n  begin\n    p := 1;\n    pstr := @ATextUTF8[1];\n    left := length(ATextUTF8);\n    firstChar := true;\n    while left > 0 do\n    begin\n      if RemoveLineEnding(ATextUTF8,p) then\n      begin\n        ARemainsUTF8 := copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n        ATextUTF8 := copy(ATextUTF8,1,p-1);\n        exit;\n      end;\n\n      charlen := UTF8CharacterLength(pstr);\n      setlength(nextchar, charlen);\n      move(pstr^, nextchar[1], charlen);\n      inc(pstr,charlen);\n\n      g := GetGlyph(nextchar);\n      if g <> nil then\n      begin\n        if not firstChar then IncF(totalWidth, StepX*Scale);\n        IncF(totalWidth, g.AdvancePx*Scale);\n        if not firstChar and (totalWidth > AMaxWidth) then\n        begin\n          ARemainsUTF8:= copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n          ATextUTF8 := copy(ATextUTF8,1,p-1);\n          if Assigned(FWordBreakHandler) then\n            FWordBreakHandler(ATextUTF8,ARemainsUTF8) else\n              DefaultWordBreakHandler(ATextUTF8,ARemainsUTF8);\n          exit;\n        end;\n      end;\n\n      dec(left,charlen);\n      inc(p,charlen);\n      firstChar := false;\n    end;\n  end;\n  ARemainsUTF8 := ''; //no split\nend;\n\nprocedure TBGLRenderedFont.SetName(AValue: string);\nbegin\n  if FName=AValue then Exit;\n  FName:=AValue;\n  DiscardGlyphs;\nend;\n\nprocedure TBGLRenderedFont.SetFontEmHeight(AValue: integer);\nbegin\n  if FEmHeight=AValue then Exit;\n  FEmHeight:=AValue;\n  DiscardGlyphs;\nend;\n\nfunction TBGLRenderedFont.GetFontFullHeight: integer;\nbegin\n  if FEmHeight < 0 then\n    result := -EmHeight\n  else\n    result := FRenderer.TextSize('Hg').cy;\nend;\n\nprocedure TBGLRenderedFont.SetBackgroundColor(AValue: TBGRAPixel);\nbegin\n  if FBackgroundColor=AValue then Exit;\n  FBackgroundColor:=AValue;\n  DiscardGlyphs;\nend;\n\nprocedure TBGLRenderedFont.SetColor(AValue: TBGRAPixel);\nbegin\n  if FColor=AValue then Exit;\n  FColor:=AValue;\n  DiscardGlyphs;\nend;\n\nprocedure TBGLRenderedFont.SetFontFullHeight(AValue: integer);\nbegin\n  EmHeight:= -AValue;\nend;\n\nprocedure TBGLRenderedFont.SetHorizontalOverflow(AValue: single);\nbegin\n  if FHorizontalOverflow=AValue then Exit;\n  FHorizontalOverflow:=AValue;\n  DiscardGlyphs;\nend;\n\nprocedure TBGLRenderedFont.SetQuality(AValue: TBGRAFontQuality);\nbegin\n  if FQuality=AValue then Exit;\n  FQuality:=AValue;\n  DiscardGlyphs;\nend;\n\nfunction TBGLRenderedFont.LoadFromFile(AFilename: UTF8String): boolean;\nbegin\n  result := false;\nend;\n\nprocedure TBGLRenderedFont.FreeMemoryOnDestroy;\nbegin\n  FreeMemory;\n  if FRendererOwned then FreeAndNil(FRenderer);\n  FreeAndNil(FGlyphs);\nend;\n\nconstructor TBGLRenderedFont.Create(ARenderer: TBGRACustomFontRenderer;\n  ARendererOwned: boolean);\nbegin\n  Init;\n  FRenderer := ARenderer;\n  FRendererOwned := ARendererOwned;\n\n  FName := 'Arial';\n  FColor := BGRAWhite;\n  FBackgroundColor := BGRAPixelTransparent;\n  FEmHeight := 20;\n  FStyle := [];\n  FHorizontalOverflow := 0.33;\n  FVerticalOverflow := 0;\n  FQuality := fqFineAntialiasing;\n\n  FGradTopLeft := BGRAWhite;\n  FGradTopRight := BGRAWhite;\n  FGradBottomLeft := BGRAWhite;\n  FGradBottomRight := BGRAWhite;\n  FUseGradientColor:= false;\n  FClipped:= false;\n\n  FGlyphs := TAVLTree.Create(@CompareGlyphNode);\n  FWordBreakHandler:= nil;\nend;\n\nprocedure TBGLRenderedFont.FreeMemory;\nbegin\n  DiscardGlyphs;\n  inherited FreeMemory;\nend;\n\nfunction TBGLRenderedFont.TextWidth(const Text: UTF8String): single;\nvar\n  pstr: pchar;\n  left,charlen: integer;\n  nextchar: string;\n  g: TRenderedGlyph;\n  firstChar: boolean;\nbegin\n  result := 0;\n  if Text = '' then exit;\n\n  firstChar := true;\n  pstr := @Text[1];\n  left := length(Text);\n  while left > 0 do\n  begin\n    charlen := UTF8CharacterLength(pstr);\n    setlength(nextchar, charlen);\n    move(pstr^, nextchar[1], charlen);\n    inc(pstr,charlen);\n    dec(left,charlen);\n\n    g := GetGlyph(nextchar);\n    if g <> nil then\n    begin\n      if firstChar then\n        firstchar := false\n      else\n        IncF(result, StepX * Scale);\n      IncF(result, g.AdvancePx * Scale);\n    end;\n  end;\nend;\n\nfunction TBGLRenderedFont.TextHeight(const Text: UTF8String): single;\nbegin\n  result := FullHeight * Scale;\nend;\n\nfunction TBGLRenderedFont.TextHeight(const Text: UTF8String; AWidth: single\n  ): single;\nvar\n  lines: TStringList;\nbegin\n  lines := GetWrappedLines(Text, AWidth);\n  result := lines.Count * (FullHeight * Scale);\n  lines.Free;\nend;\n\nprocedure TBGLRenderedFont.SetGradientColors(ATopLeft, ATopRight, ABottomRight,\n  ABottomLeft: TBGRAPixel);\nbegin\n  FGradTopLeft := ATopLeft;\n  FGradTopRight := ATopRight;\n  FGradBottomLeft := ABottomLeft;\n  FGradBottomRight := ABottomRight;\n  GradientColors := true;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafpcanvas.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\n\ntype\n  {* How to draw the end of line }\n  TPenEndCap = TFPPenEndCap;\n\nconst\n    {** Draw a half-disk at the end of the line. The diameter of the disk is\n        equal to the pen width. }\n    pecRound = FPCanvas.pecRound;\n    {** Draw a half-square. The size of the square is equal to the pen width.\n        This is visually equivalent to extend the line of half the pen width }\n    pecSquare = FPCanvas.pecSquare;\n    {** The line ends exactly at the end point }\n    pecFlat = FPCanvas.pecFlat;\n\ntype\n  {* How to join segments. This makes sense only for geometric pens (that\n     have a certain width) }\n  TPenJoinStyle = TFPPenJoinStyle;\n\nconst\n    {** Segments are joined by filling the gap with an arc }\n    pjsRound = FPCanvas.pjsRound;\n    {** Segments are joind by filling the gap with an intermediary segment }\n    pjsBevel = FPCanvas.pjsBevel;\n    {** Segments are joined by extending them up to their intersection.\n        There is a miter limit so that if the intersection is too far,\n        an intermediary segment is used }\n    pjsMiter = FPCanvas.pjsMiter;\n\ntype\n  {* Style to use for the pen. The unit for the pattern is the width of the\n     line }\n  TPenStyle = TFPPenStyle;\n  TPenMode = TFPPenMode;\n\nconst\n  {** Pen is continuous }\n  psSolid = FPCanvas.psSolid;\n  {** Pen is dashed. The dash have a length of 3 unit and the gaps of 1 unit }\n  psDash = FPCanvas.psDash;\n  {** Pen is dotted. The dots have a length of 1 unit and the gaps of 1 unit }\n  psDot = FPCanvas.psDot;\n  {** Pattern is a dash of length 3 followed by a dot of length 1, separated by a gap of length 1 }\n  psDashDot = FPCanvas.psDashDot;\n  {** Dash of length 3, and two dots of length 1 }\n  psDashDotDot = FPCanvas.psDashDotDot;\n  {** Pen is not drawn }\n  psClear = FPCanvas.psClear;\n  {** Not used. Provided for compatibility }\n  psInsideframe = FPCanvas.psInsideframe;\n  {** Custom pattern used }\n  psPattern = FPCanvas.psPattern;\n\n  pmBlack = FPCanvas.pmBlack;\n  pmWhite = FPCanvas.pmWhite;\n  pmNop = FPCanvas.pmNop;\n  pmNot = FPCanvas.pmNot;\n  pmCopy = FPCanvas.pmCopy;\n  pmNotCopy = FPCanvas.pmNotCopy;\n  pmMergePenNot = FPCanvas.pmMergePenNot;\n  pmMaskPenNot = FPCanvas.pmMaskPenNot;\n  pmMergeNotPen = FPCanvas.pmMergeNotPen;\n  pmMaskNotPen = FPCanvas.pmMaskNotPen;\n  pmMerge = FPCanvas.pmMerge;\n  pmNotMerge = FPCanvas.pmNotMerge;\n  pmMask = FPCanvas.pmMask;\n  pmNotMask = FPCanvas.pmNotMask;\n  pmXor = FPCanvas.pmXor;\n  pmNotXor = FPCanvas.pmNotXor;\n\ntype\n  { TPen }\n  {* A class containing a pen }\n  TPen = class(TFPCustomPen)\n  private\n    function GetColor: TColor;\n    procedure SetColor(AValue: TColor);\n  public\n    constructor Create; override;\n    {** Color of the pen }\n    property Color: TColor read GetColor write SetColor;\n    {** Operation done on pixels }\n    property Mode;\n    {** End cap of the pen: how to draw the ends of the lines }\n    property EndCap;\n    {** Join style: how to join the segments of a polyline }\n    property JoinStyle;\n    {** Pen style: solid, dash, dot... }\n    property Style;\n    {** Pen width in pixels }\n    property Width;\n  end;\n\n  {* Pattern when filling with a brush. It is used in BGRACanvas but can\n     also be created with TBGRABitmap.CreateBrushTexture function }\n  TBrushStyle = TFPBrushStyle;\n\nconst\n  {** Fill with the current color }\n  bsSolid = FPCanvas.bsSolid;\n  {** Does not fill at all }\n  bsClear = FPCanvas.bsClear;\n  {** Draw horizontal lines }\n  bsHorizontal = FPCanvas.bsHorizontal;\n  {** Draw vertical lines }\n  bsVertical = FPCanvas.bsVertical;\n  {** Draw diagonal lines from top-left to bottom-right }\n  bsFDiagonal = FPCanvas.bsFDiagonal;\n  {** Draw diagonal lines from bottom-left to top-right }\n  bsBDiagonal = FPCanvas.bsBDiagonal;\n  {** Draw both horizontal and vertical lines }\n  bsCross = FPCanvas.bsCross;\n  {** Draw both diagonal lines }\n  bsDiagCross = FPCanvas.bsDiagCross;\n  {** Fills with an image }\n  bsImage = FPCanvas.bsImage;\n\ntype\n  { TBrush }\n  {* A class describing a brush }\n  TBrush = class(TFPCustomBrush)\n  private\n    function GetColor: TColor;\n    procedure SetColor(AValue: TColor);\n  public\n    constructor Create; override;\n    {** Color of the brush }\n    property Color: TColor read GetColor write SetColor;\n    {** Style of the brush: solid, diagonal lines, horizontal lines... }\n    property Style;\n  end;\n\n  { TFont }\n  {* Contains the description of a font }\n  TFont = class(TFPCustomFont)\n  private\n    FPixelsPerInch, FHeight: Integer;\n    FQuality: TFontQuality;\n    FStyle: TFontStyles;\n    function GetColor: TColor;\n    function GetHeight: Integer;\n    function GetSize: Integer;\n    function GetStyle: TFontStyles;\n    procedure SetColor(AValue: TColor);\n    procedure SetHeight(AValue: Integer);\n    procedure SetQuality(AValue: TFontQuality);\n    procedure SetStyle(AValue: TFontStyles);\n  protected\n    procedure SetSize(AValue: Integer); override;\n  public\n    constructor Create; override;\n    {** Pixels per inches }\n    property PixelsPerInch: Integer read FPixelsPerInch write FPixelsPerInch;\n    {** Color of the font }\n    property Color: TColor read GetColor write SetColor;\n    {** Height of the font in pixels. When the number is negative, it indicates a size in pixels }\n    property Height: Integer read GetHeight write SetHeight;\n    {** Size of the font in inches. When the number is negative, it indicates a height in inches }\n    property Size: Integer read GetSize write SetSize;\n    {** Quality of the font rendering }\n    property Quality: TFontQuality read FQuality write SetQuality;\n    {** Style to apply to the text }\n    property Style: TFontStyles read GetStyle write SetStyle;\n  end;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{ TPen }\n\nprocedure TPen.SetColor(AValue: TColor);\nbegin\n  FPColor := TColorToFPColor(AValue);\nend;\n\nfunction TPen.GetColor: TColor;\nbegin\n  result := FPColorToTColor(FPColor);\nend;\n\nconstructor TPen.Create;\nbegin\n  inherited Create;\n  Mode := pmCopy;\n  Style := psSolid;\n  Width := 1;\n  FPColor := colBlack;\n  EndCap:= pecRound;\n  JoinStyle:= pjsRound;\nend;\n\n{ TBrush }\n\nfunction TBrush.GetColor: TColor;\nbegin\n  result := FPColorToTColor(FPColor);\nend;\n\nprocedure TBrush.SetColor(AValue: TColor);\nbegin\n  FPColor := TColorToFPColor(AValue);\nend;\n\nconstructor TBrush.Create;\nbegin\n  inherited Create;\n  FPColor := colWhite;\nend;\n\n{ TFont }\n\nfunction TFont.GetColor: TColor;\nbegin\n  result := FPColorToTColor(FPColor);\nend;\n\nfunction TFont.GetHeight: Integer;\nbegin\n  result := FHeight;\nend;\n\nfunction TFont.GetSize: Integer;\nbegin\n  Result := inherited Size;\nend;\n\nfunction TFont.GetStyle: TFontStyles;\nbegin\n  result := FStyle;\nend;\n\nprocedure TFont.SetColor(AValue: TColor);\nbegin\n  FPColor := TColorToFPColor(AValue);\nend;\n\nprocedure TFont.SetHeight(AValue: Integer);\nbegin\n  if Height <> AValue then\n  begin\n    FHeight := AValue;\n    inherited SetSize(-MulDiv(AValue, 72, FPixelsPerInch));\n  end;\nend;\n\nprocedure TFont.SetQuality(AValue: TFontQuality);\nbegin\n  if FQuality=AValue then Exit;\n  FQuality:=AValue;\nend;\n\nprocedure TFont.SetSize(AValue: Integer);\nbegin\n  if Size <> AValue then\n  begin\n    inherited SetSize(AValue);\n    FHeight := -MulDiv(AValue, FPixelsPerInch, 72);\n  end;\nend;\n\nprocedure TFont.SetStyle(AValue: TFontStyles);\nbegin\n  if FStyle <> AValue then\n  begin\n    FStyle := AValue;\n    inherited SetFlags(5, fsBold in FStyle);\n    inherited SetFlags(6, fsItalic in FStyle);\n    inherited SetFlags(7, fsUnderline in FStyle);\n    inherited SetFlags(8, fsStrikeOut in FStyle);\n  end;\nend;\n\nconstructor TFont.Create;\nbegin\n  FPixelsPerInch := GetScreenDPIY;\n  FQuality := fqDefault;\n  FPColor := colBlack;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgrafpgui.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  TColor = TfpgColor;\n\n  { Raw image for fpGUI }\n  TRawImage = class(TfpgImage)\n    procedure BGRASetSizeAndTransparency(AWidth,AHeight: Integer; ATransparent: boolean);\n    procedure Assign(AOther: TObject); virtual;\n  end;\n  TGUICanvas = TfpgCanvas;\n\nconst\n  clNone = fpg_base.clNone;\n  clBlack = fpg_base.clBlack;\n  clWhite = fpg_base.clWhite;\n\nfunction clRgbBtnHighlight: TColor;\nfunction clRgbBtnShadow: TColor;\nfunction ColorToRGB(c: TColor): TColor; inline;\nfunction GetScreenDPIX: integer;\nfunction GetScreenDPIY: integer;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\nprocedure TRawImage.BGRASetSizeAndTransparency(AWidth,AHeight: Integer; ATransparent: boolean);  \nvar\n  tempData: pointer;\nbegin\n  if (Width <> AWidth) or (Height <> AHeight) then\n  begin\n    AllocateImage(32,AWidth,AHeight);\n    if ATransparent then AllocateMask;\n  end else\n  begin\n    if ATransparent and not Masked then AllocateMask else\n    if not ATransparent and Masked then\n    begin\n      getmem(tempData, ImageDataSize);\n      if tempData <> nil then\n      begin\n        move(ImageData^, tempData^, ImageDataSize);\n        FreeImage;\n        AllocateImage(32,AWidth,AHeight);\n        move(tempData^, ImageData^, ImageDataSize);\n        freemem(tempData);\n      end;\n    end;\n  end;\nend;\n\nprocedure TRawImage.Assign(AOther: TObject);\nvar\n  src: TRawImage;\nbegin\n  if AOther is TRawImage then\n  begin\n    src := TRawImage(AOther);\n    BGRASetSizeAndTransparency(src.Width, src.Height, src.Masked);\n    move(src.ImageData^, ImageData^, ImageDataSize);\n    if Masked then\n      move(src.MaskData^, MaskData^, MaskDataSize);\n  end else\n    raise exception.Create('Unable to assign');\nend;\n\nfunction clRgbBtnHighlight: TColor;\nbegin\n  result := fpgColorToRGB(fpg_base.clHilite2);\nend;\n\nfunction clRgbBtnShadow: TColor;\nbegin\n  result := fpgColorToRGB(fpg_base.clShadow2);\nend;\n\nfunction ColorToRGB(c: TColor): TColor; inline;\nbegin\n  result := fpgColorToRGB(c);\nend;\n\nfunction GetScreenDPIX: integer;\nbegin\n  result := fpgApplication.Screen_dpi_x;\nend;\n\nfunction GetScreenDPIY: integer;\nbegin\n  result := fpgApplication.Screen_dpi_y;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgrafpgui_uses.inc",
    "content": "uses BGRAClasses, FPImage, FPCanvas, fpg_base, fpg_main;\n"
  },
  {
    "path": "bgrabitmap/bgrafpguibitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for fpGUI }\nunit BGRAfpGUIBitmap;\n{ It should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{$i bgrabitmap.inc}\n\nuses\n  SysUtils, BGRAClasses, BGRAGraphics, BGRABitmapTypes, BGRADefaultBitmap,\n  {$IFDEF BGRABITMAP_USE_LAZFREETYPE}BGRAFreeType, EasyLazFreeType, LazFreeTypeFontCollection,{$ENDIF}\n  BGRACanvas;\n\ntype\n\n  { Implementation of TBGRABitmap for fpGUI }\n  TBGRAfpGUIBitmap = class(TBGRADefaultBitmap)\n  private\n    FPseudoCanvas: TBGRACanvas;\n    function GetPseudoCanvas: TBGRACanvas;\n    function GetBitmapTransparent: boolean;\n    procedure SetBitmapTransparent(AValue: boolean);\n  protected\n    procedure RebuildBitmap; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override;\n    function LoadFromRawImage(ARawImage: TRawImage; DefaultOpacity: byte;\n      AlwaysReplaceAlpha: boolean=False; {%H-}RaiseErrorOnInvalidPixelFormat: boolean\n      =True): boolean; override;\n    procedure Init; override;\n    procedure FreeData; override;\n    procedure ReallocData; override;\n    procedure FreeBitmap; override;\n    procedure NotAvailable;\n  public\n    destructor Destroy; override;\n    procedure AssignToBitmap(ADestination: TBitmap);\n    {$IFDEF BGRABITMAP_USE_LAZFREETYPE}\n    class procedure AddFreeTypeFontFolder(ADirectory: string; AUTF8: boolean = false); static;\n    class procedure AddFreeTypeFontFile(AFilename: string; AUTF8: boolean = false); static;\n    class procedure AddFreeTypeFontStream(AStream: TStream; AOwned: boolean); static;\n    {$ENDIF}\n    procedure Draw(ACanvas: TCanvas; x, y: integer; {%H-}Opaque: boolean=True); override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; {%H-}Opaque: boolean=True); override;\n    procedure Draw(ACanvas: TGUICanvas; x, y: integer; {%H-}Opaque: boolean=True); overload;\n    procedure Draw(ACanvas: TGUICanvas; Rect: TRect; {%H-}Opaque: boolean=True); overload;\n    procedure GetImageFromCanvas({%H-}CanvasSource: TCanvas; {%H-}x, {%H-}y: integer); override; //not available\n    procedure DataDrawTransparent(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure TakeScreenshot({%H-}ARect: TRect); override; //not available\n    procedure TakeScreenshotOfPrimaryMonitor; override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC); override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC; {%H-}ARect: TRect); override; //not available\n    property BitmapTransparent: boolean read GetBitmapTransparent write SetBitmapTransparent;\n    property Canvas: TBGRACanvas read GetPseudoCanvas;\n  end;\n\nimplementation\n\n{ TBGRAfpGUIBitmap }\n\nfunction TBGRAfpGUIBitmap.GetBitmapTransparent: boolean;\nbegin\n  result := FBitmap.Transparent;\nend;\n\nfunction TBGRAfpGUIBitmap.GetPseudoCanvas: TBGRACanvas;\nbegin\n  if FPseudoCanvas = nil then\n  begin\n    FPseudoCanvas := TBGRACanvas.Create(self);\n    FPseudoCanvas.AntialiasingMode := amOff;\n  end;\n  result := FPseudoCanvas;\nend;\n\nprocedure TBGRAfpGUIBitmap.SetBitmapTransparent(AValue: boolean);\nbegin\n  if FBitmap.Transparent <> AValue then\n  begin\n    FBitmap.Transparent:= AValue;\n    InvalidateBitmap;\n  end;\nend;\n\nprocedure TBGRAfpGUIBitmap.RebuildBitmap;\nvar pmask, pmaskline: PByte;\n  pdata: PBGRAPixel;\n  raw: TRawImage;\n  x,y,bit,masklinesize,curmaskbyte: UInt32or64;\nbegin\n  if FBitmap.Transparent then\n  begin\n    raw := FBitmap.RawImage;\n    masklinesize := ((Width+31) div 32)*4;\n    pmaskline := FBitmap.RawImage.MaskData;\n    pdata := raw.ImageData;\n    for y := 0 to Height-1 do\n      begin\n        pmask:= pmaskline;\n        bit := $80;\n        curmaskbyte := 0;\n        for x := Width-1 downto 0 do\n        begin\n          if pdata^.alpha >= $80 then\n            curmaskbyte := curmaskbyte or bit;\n          bit := bit shr 1;\n          if bit = 0 then\n          begin\n            bit := $80;\n            pmask^ := curmaskbyte;\n            inc(pmask);\n            curmaskbyte := 0;\n          end;\n          inc(pdata);\n        end;\n        if bit <> $80 then\n          pmask^ := curmaskbyte;\n        inc(pmaskline, masklinesize);\n      end;\n  end;\n  FBitmap.RawImage.UpdateImage;\nend;\n\nfunction TBGRAfpGUIBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  {$IFDEF BGRABITMAP_USE_LAZFREETYPE}\n  result := TBGRAFreeTypeFontRenderer.Create;\n  {$ELSE}\n  raise Exception.Create('LazFreeType not available');\n  {$ENDIF}\nend;\n\nfunction TBGRAfpGUIBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nvar\n  lineSize: integer;\n  y: Integer;\nbegin\n  if (ARawImage.Width <> Width) or\n    (ARawImage.Height <> Height) then\n    raise Exception.Create('Bitmap size is inconsistent');\n\n  lineSize := Width*sizeof(TBGRAPixel);\n  for y := 0 to Height-1 do\n    move(ARawImage.ScanLine[y]^, ScanLine[y]^, lineSize);\n  if AlwaysReplaceAlpha then AlphaFill(DefaultOpacity);\n  result := true;\nend;\n\nprocedure TBGRAfpGUIBitmap.Init;\nbegin\n  inherited Init;\n  FBitmap := TBitmap.Create;\n  FontAntialias:= true;\nend;\n\nprocedure TBGRAfpGUIBitmap.ReallocData;\nbegin\n  FBitmap.Width := Width;\n  FBitmap.Height:= Height;\n  FDataByte := PByte(FBitmap.RawImage.ImageData);\n  InvalidateBitmap;\n  FScanPtr := nil;\nend;\n\nprocedure TBGRAfpGUIBitmap.FreeData;\nbegin\n  //nothing\nend;\n\nprocedure TBGRAfpGUIBitmap.FreeBitmap;\nbegin\n  //nothing\nend;\n\nprocedure TBGRAfpGUIBitmap.NotAvailable;\nbegin\n  raise exception.Create('Function not available with fpGUI');\nend;\n\ndestructor TBGRAfpGUIBitmap.Destroy;\nbegin\n  FreeAndNil(FBitmap);\n  FreeAndNil(FPseudoCanvas);\n  inherited Destroy;\nend;\n\nprocedure TBGRAfpGUIBitmap.AssignToBitmap(ADestination: TBitmap);\nbegin\n  ADestination.Assign(Bitmap);\nend;\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRAfpGUIBitmap.AddFreeTypeFontFolder(ADirectory: string; AUTF8: boolean);\nbegin\n  if AUTF8 then ADirectory:= Utf8ToAnsi(ADirectory);\n  EasyLazFreeType.FontCollection.AddFolder(ADirectory);\n\nend;{$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRAfpGUIBitmap.AddFreeTypeFontFile(AFilename: string; AUTF8: boolean);\nbegin\n  if AUTF8 then AFilename:= Utf8ToAnsi(AFilename);\n  EasyLazFreeType.FontCollection.AddFile(AFilename);\nend;{$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRAfpGUIBitmap.AddFreeTypeFontStream(AStream: TStream; AOwned: boolean);\nbegin\n  EasyLazFreeType.FontCollection.AddStream(AStream, AOwned);\n  if AOwned then AStream.Free;\nend;{$ENDIF}\n\nprocedure TBGRAfpGUIBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  Draw(ACanvas.GUICanvas, x, y, Opaque);\nend;\n\nprocedure TBGRAfpGUIBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nbegin\n  Draw(ACanvas.GUICanvas, Rect, Opaque);\nend;\n\nprocedure TBGRAfpGUIBitmap.Draw(ACanvas: TGUICanvas; x, y: integer;\n  Opaque: boolean);\nbegin\n  BitmapTransparent := not Opaque;\n  ACanvas.DrawImage(x,y, Bitmap.RawImage);\nend;\n\nprocedure TBGRAfpGUIBitmap.Draw(ACanvas: TGUICanvas; Rect: TRect;\n  Opaque: boolean);\nbegin\n  BitmapTransparent := not Opaque;\n  ACanvas.StretchDraw(rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top, Bitmap.RawImage);\nend;\n\nprocedure TBGRAfpGUIBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x,\n  y: integer);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAfpGUIBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar temp: TBGRAfpGUIBitmap;\nbegin\n  temp := TBGRAfpGUIBitmap.Create(AWidth,AHeight);\n  move(AData^, temp.Data^, temp.NbPixels*sizeof(TBGRAPixel));\n  if ALineOrder <> temp.LineOrder then temp.VerticalFlip;\n  temp.Draw(ACanvas, Rect, False);\n  temp.Free;\nend;\n\nprocedure TBGRAfpGUIBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar temp: TBGRAfpGUIBitmap;\nbegin\n  temp := TBGRAfpGUIBitmap.Create(AWidth,AHeight);\n  move(AData^, temp.Data^, temp.NbPixels*sizeof(TBGRAPixel));\n  if ALineOrder <> temp.LineOrder then temp.VerticalFlip;\n  temp.Draw(ACanvas, Rect, True);\n  temp.Free;\nend;\n\nprocedure TBGRAfpGUIBitmap.TakeScreenshot(ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAfpGUIBitmap.TakeScreenshotOfPrimaryMonitor;\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAfpGUIBitmap.LoadFromDevice(DC: HDC);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAfpGUIBitmap.LoadFromDevice(DC: HDC; ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrafreetype.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Font renderer of FreeType fonts using Lazarus renderer.)\n\n  This unit provides a nice and fast rendering of text. There are some drawbacks to consider though:\n  - it needs font files or streams (to be provided to the font collection\n  of EasyLazFreeType unit)\n  - it has limited support for complex font behaviors like ligature.\n\n  This unit depend on freetypelaz package provided by Lazarus.\n\n  **Font rendering units** : BGRAText, BGRATextFX, BGRAVectorize, BGRAFreeType.\n}\nunit BGRAFreeType;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{$i bgrabitmap.inc}\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, EasyLazFreeType, FPimage,\n  BGRACustomTextFX, BGRAPhongTypes, BGRATypewriter, LazVersion;\n\n{$IF laz_fullversion >= 2001000}\n  {$DEFINE LAZFREETYPE_GLYPH_BOX_FIXED}\n{$ENDIF}\n\n{$IF laz_fullversion >= 2010000}\n  {$DEFINE LAZFREETYPE_PROVIDE_KERNING}\n{$ENDIF}\n\ntype\n  TBGRAFreeTypeDrawer = class;\n\n  {* @abstract(FreeType font renderer with effects.)\n\n     To use, assign to FontRenderer property of TBGRABitmap.\n\n     To set the effects, keep a variable containing the TBGRAFreeTypeFontRenderer class and\n     modify ShadowVisible and other effects parameters. The FontHinted property\n     allows you to choose if the font is snapped to pixels to make it more readable. }\n  TBGRAFreeTypeFontRenderer = class(TBGRACustomFontRenderer)\n  private\n    FDrawer: TBGRAFreeTypeDrawer;\n    FFont: TFreeTypeFont;\n    FLastFontSize: single;\n    function GetCollection: TCustomFreeTypeFontCollection;\n    function GetDrawer(ASurface: TBGRACustomBitmap): TBGRAFreeTypeDrawer;\n    function GetShaderLightPosition: TPoint;\n    function GetShaderLightPositionF: TPointF;\n    procedure SetShaderLightPosition(const AValue: TPoint);\n    procedure SetShaderLightPositionF(const AValue: TPointF);\n  protected\n    FShaderOwner: boolean;\n    FShader: TCustomPhongShading;\n    FTypeWriter: TBGRACustomTypeWriter;\n    function GetTypeWriter: TBGRACustomTypeWriter;\n    procedure UpdateFont(ADisableClearType: boolean = false);\n    procedure Init;\n    procedure TextOutAnglePatch(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string;\n              c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment);\n    procedure InternalTextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; c: TBGRAPixel; align: TAlignment);\n    property TypeWriter: TBGRACustomTypeWriter read GetTypeWriter;\n  public\n    FontHinted: boolean;\n\n    ShaderActive: boolean;\n\n    ShadowVisible: boolean;\n    ShadowColor: TBGRAPixel;\n    ShadowRadius: integer;\n    ShadowOffset: TPoint;\n    ShadowQuality: TRadialBlurType;\n\n    OutlineColor: TBGRAPixel;\n    OutlineVisible,OuterOutlineOnly: boolean;\n    OutlineTexture: IBGRAScanner;\n\n    constructor Create; overload;\n    constructor Create(AShader: TCustomPhongShading; AShaderOwner: boolean); overload;\n    function FontExists(AName: string): boolean; override;\n    function TextVisible(const AColor: TBGRAPixel): boolean; override;\n    function GetFontPixelMetric: TFontPixelMetric; override;\n    function GetFontPixelMetricF: TFontPixelMetricF; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; s: string; style: TTextStyle; c: TBGRAPixel); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; s: string; style: TTextStyle; texture: IBGRAScanner); overload; override;\n    function TextSize(sUTF8: string): TSize; overload; override;\n    function TextSizeF(sUTF8: string): TPointF; overload; override;\n    function TextSize(sUTF8: string; AMaxWidth: integer; {%H-}ARightToLeft: boolean): TSize; overload; override;\n    function TextSizeF(sUTF8: string; AMaxWidthF: single; {%H-}ARightToLeft: boolean): TPointF; overload; override;\n    function TextFitInfo(sUTF8: string; AMaxWidth: integer): integer; override;\n    function TextFitInfoF(sUTF8: string; AMaxWidthF: single): integer; override;\n    destructor Destroy; override;\n    property Collection: TCustomFreeTypeFontCollection read GetCollection;\n    property ShaderLightPosition: TPoint read GetShaderLightPosition write SetShaderLightPosition;\n    property ShaderLightPositionF: TPointF read GetShaderLightPositionF write SetShaderLightPositionF;\n  end;\n\n  {* @abstract(Provides basic FreeType drawing by deriving the TFreeTypeDrawer type.)\n\n     You can use it directly, but it is not recommended, because there are less\n     text layout parameters. However, it is necessary if you want to create\n     TBGRATextEffect objects using FreeType fonts. }\n  TBGRAFreeTypeDrawer = class(TFreeTypeDrawer)\n  private\n    FMask: TBGRACustomBitmap;\n    FColor: TBGRAPixel;\n    FInCreateTextEffect: boolean;\n    procedure RenderDirectly(x, y, tx: integer; data: pointer);\n    procedure RenderDirectlyClearType(x, y, tx: integer; data: pointer);\n    function ShadowActuallyVisible :boolean;\n    function OutlineActuallyVisible: boolean;\n    function ShaderActuallyActive : boolean;\n  public\n    Destination: TBGRACustomBitmap;\n    ClearTypeRGBOrder: boolean;\n    Texture: IBGRAScanner;\n\n    Shader: TCustomPhongShading;\n    ShaderActive: boolean;\n\n    ShadowVisible: boolean;\n    ShadowColor: TBGRAPixel;\n    ShadowRadius: integer;\n    ShadowOffset: TPoint;\n    ShadowQuality: TRadialBlurType;\n\n    OutlineColor: TBGRAPixel;\n    OutlineVisible,OuterOutlineOnly: boolean;\n    OutlineTexture: IBGRAScanner;\n\n    constructor Create(ADestination: TBGRACustomBitmap);\n    procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); overload; override;\n    procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TBGRAPixel); overload;\n    procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TBGRAPixel; AAlign: TFreeTypeAlignments); overload;\n    procedure DrawTextWordBreak(AText: string; AFont: TFreeTypeRenderableFont; x, y, AMaxWidth: Single; AColor: TBGRAPixel; AAlign: TFreeTypeAlignments); overload;\n    procedure DrawTextRect(AText: string; AFont: TFreeTypeRenderableFont; X1,Y1,X2,Y2: Single; AColor: TBGRAPixel; AAlign: TFreeTypeAlignments); overload;\n    procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); overload; override;\n    procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TBGRAPixel); overload;\n    procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TBGRAPixel; AAlign: TFreeTypeAlignments); overload;\n    function CreateTextEffect(AText: string; AFont: TFreeTypeRenderableFont): TBGRACustomTextEffect;\n    destructor Destroy; override;\n  end;\n\n\nimplementation\n\nuses BGRABlend, Math, BGRATransform, BGRAUnicode, BGRAUTF8;\n\n{$i generatedutf8.inc}\n\nprocedure RecomposeUTF8(AFont: TFreeTypeFont; ADecomposed: string; out ARecomposed: string; out AMarks, AInnerMarks: string);\nvar\n  joinBefore, joinAfter: boolean;\n  lookFor: string;\n\n  function FindChars(AText: string): boolean;\n  var\n    p, charLen: Integer;\n    u: LongWord;\n  begin\n    if AFont = nil then exit(true);\n\n    p := 1;\n    while p <= length(AText) do\n    begin\n      charLen := UTF8CharacterLength(@AText[p]);\n      u := UTF8CodepointToUnicode(@AText[p], charLen);\n      if AFont.CharIndex[u] = 0 then exit(false);\n      inc(p, charLen);\n    end;\n    result := true;\n  end;\n\n  function RecomposeRec(AMin,AMax: integer): boolean;\n\n    function TryExactMatch: boolean;\n    var\n      i, extra: Integer;\n      newExtra: String;\n    begin\n      for i := AMin to AMax do\n        if UTF8Decomposition[i].de = ARecomposed then\n        begin\n          if UTF8Decomposition[i].join <> arNone then\n            if (joinBefore xor (UTF8Decomposition[i].join in[arMedial,arFinal])) or\n               (joinAfter xor (UTF8Decomposition[i].join in[arInitial,arMedial])) then continue;\n          if not FindChars(UTF8Decomposition[i].re) then continue;\n          ARecomposed := UTF8Decomposition[i].re;\n          result := true;\n          exit;\n        end;\n      for i := AMin to AMax do\n        if ARecomposed.StartsWith(UTF8Decomposition[i].de, true) then\n        begin\n          extra := length(ARecomposed) - length(UTF8Decomposition[i].de);\n          if UTF8Decomposition[i].join <> arNone then\n            if (joinBefore xor (UTF8Decomposition[i].join in[arMedial,arFinal])) or\n               (joinAfter xor (UTF8Decomposition[i].join in[arInitial,arMedial])) then continue;\n          if not FindChars(UTF8Decomposition[i].re) then continue;\n          newExtra := copy(ARecomposed, length(ARecomposed)+1-extra, extra);\n          if GetFirstStrongBidiClassUTF8(newExtra) <> ubcUnknown then continue;\n          AMarks := newExtra + AMarks;\n          ARecomposed := UTF8Decomposition[i].re;\n          result := true;\n          exit;\n        end;\n      result := false;\n    end;\n\n  var i,j: integer;\n  begin\n    if AMax <= AMin+9 then\n    begin\n      result := TryExactMatch;\n    end else\n    begin\n      i := (AMin+AMax) div 2;\n      if UTF8Decomposition[i].de.StartsWith(lookFor, true) then\n      begin\n        j := i;\n        while (j > AMin) and UTF8Decomposition[j-1].de.StartsWith(lookFor, true) do dec(j);\n        AMin := j;\n        j := i;\n        while (j < AMax) and UTF8Decomposition[j+1].de.StartsWith(lookFor, true) do inc(j);\n        AMax := j;\n        result := TryExactMatch;\n      end else\n      if CompareStr(lookFor, UTF8Decomposition[i].de) > 0 then\n        result := RecomposeRec(i+1, AMax)\n      else\n        result := RecomposeRec(AMin, i-1);\n    end;\n  end;\n\n  procedure ExtractInnerMarks;\n  var\n    p, charLen, pStart: Integer;\n    u: LongWord;\n  begin\n    if ARecomposed.StartsWith(UTF8_ARABIC_LAM, true) then\n    begin\n      pStart := length(UTF8_ARABIC_LAM)+1;\n      p := pStart;\n      while p <= length(ARecomposed) do\n      begin\n        charLen := UTF8CharacterLength(@ARecomposed[p]);\n        u := UTF8CodepointToUnicode(@ARecomposed[p], charLen);\n        if GetUnicodeBidiClass(u) = ubcNonSpacingMark then\n          inc(p, charLen)\n          else break;\n      end;\n      if p>pStart then\n      begin\n        AppendStr(AInnerMarks, copy(ARecomposed, pStart, p-pStart));\n        delete(ARecomposed, pStart, p-pStart);\n      end;\n    end;\n  end;\n\n  procedure ExtractFinalMarks;\n  var\n    p,pStart,pPrev: Integer;\n  begin\n    pStart := length(ARecomposed)+1;\n    p := pStart;\n    while p > 1 do\n    begin\n      pPrev := p;\n      dec(p);\n      while (p > 1) and (ARecomposed[p] in[#$80..#$BF]) do dec(p);\n      if (p = 1) or (ARecomposed[p] in [#$80..#$BF]) or\n        not (GetUnicodeBidiClassEx(UTF8CodepointToUnicode(@ARecomposed[p], pPrev-p))\n            in [ubcNonSpacingMark, ubcCombiningLeftToRight]) then\n      begin\n        p := pPrev;\n        break;\n      end;\n    end;\n    if p < pStart then\n    begin\n      AMarks := copy(ARecomposed, p, pStart-p) + AMarks;\n      delete(ARecomposed, p, pStart-p);\n    end;\n  end;\n\nbegin\n  joinBefore := ADecomposed.StartsWith(UTF8_ZERO_WIDTH_JOINER, true);\n  joinAfter := ADecomposed.EndsWith(UTF8_ZERO_WIDTH_JOINER, true);\n  if joinBefore and joinAfter then\n    ADecomposed := copy(ADecomposed, length(UTF8_ZERO_WIDTH_JOINER)+1,\n                   length(ADecomposed) - (length(UTF8_ZERO_WIDTH_JOINER) shl 1)) else\n  if joinBefore then Delete(ADecomposed, 1, length(UTF8_ZERO_WIDTH_JOINER)) else\n  if joinAfter then Delete(ADecomposed, length(ADecomposed) - length(UTF8_ZERO_WIDTH_JOINER) + 1, length(UTF8_ZERO_WIDTH_JOINER));\n\n  ARecomposed := ADecomposed;\n  AMarks := '';\n  AInnerMarks := '';\n  ExtractInnerMarks;\n  repeat\n    if length(ADecomposed)<=1 then break;\n    lookFor := copy(ARecomposed, 1, UTF8CharacterLength(@ARecomposed[1]));\n  until not RecomposeRec(0, high(UTF8Decomposition));\n  ExtractFinalMarks;\nend;\n\ntype\n  TMarkGlyph = record\n    FreeTypeGlyph: TFreeTypeGlyph;\n    Index: integer;\n    Bounds: TRect;\n    CombiningClass: Byte;\n  end;\n\n  { TBGRAFreeTypeGlyph }\n\n  TBGRAFreeTypeGlyph = class(TBGRAGlyph)\n  protected\n    FFont: TFreeTypeFont;\n    FCentralText: string;\n    FCentralTextWidth: Single;\n    FMarks, FInnerMarks: TUnicodeArray;\n    FBounds: TRect;\n    function RetrieveMarkGlyph(AMark: LongWord; out AMarkGlyph: TMarkGlyph; AAllowTranslate: boolean): boolean;\n    procedure DrawNonSpacingMarks(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; RTL: boolean; AColor: TBGRAPixel);\n    procedure DrawCentralGlyph(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; AColor: TBGRAPixel);\n    procedure DrawCombiningMarks(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; AColor: TBGRAPixel; out ACentralLeft: single);\n  public\n    constructor Create(AFont: TFreeTypeFont; AIdentifier: string);\n    constructor Create({%H-}AIdentifier: string); override;\n    procedure Draw(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; RTL: boolean; AColor: TBGRAPixel);\n  end;\n\n  { TFreeTypeTypeWriter }\n\n  TFreeTypeTypeWriter = class(TBGRACustomTypeWriter)\n  protected\n    FFont: TFreeTypeFont;\n    function GetGlyph(AIdentifier: string): TBGRAGlyph; override;\n    function GetKerningOffset(AIdBefore, AIdAfter: string; ARightToLeft: boolean): single; override;\n    function ComputeKerning({%H-}AIdLeft, {%H-}AIdRight: string): single; override;\n  public\n    constructor Create(AFont: TFreeTypeFont);\n    procedure DrawText(ADrawer: TBGRAFreeTypeDrawer; ATextUTF8: string; X,Y: Single;\n              AColor: TBGRAPixel; AAlign: TBGRATypeWriterAlignment = twaTopLeft); overload;\n  end;\n\n{ TFreeTypeGlyph }\n\nconstructor TBGRAFreeTypeGlyph.Create(AFont: TFreeTypeFont; AIdentifier: string);\n\n  procedure SortMarks(A: TUnicodeArray);\n    procedure MoveBefore(AFrom, ATo: integer);\n    var k: integer;\n      backU: LongWord;\n    begin\n      if ATo >= AFrom then exit;\n      backU := A[AFrom];\n      for k := AFrom downto ATo+1 do\n        A[k] := A[k-1];\n      A[ATo] := backU;\n    end;\n\n    procedure SortByCombiningClass;\n    var\n      start, i, j: Integer;\n      newCC: Byte;\n    begin\n      start := 0;\n      i := start+1;\n      while i <= high(a) do\n      begin\n        //sequence is split\n        if A[i] = UNICODE_COMBINING_GRAPHEME_JOINER then\n        begin\n          start := i+1;\n          i := start+1;\n          continue;\n        end else\n        begin\n          newCC := GetUnicodeCombiningClass(A[i]);\n          j := i;\n          while (j > start) and (newCC < GetUnicodeCombiningClass(A[j-1])) do dec(j);\n          MoveBefore(i, j);\n          inc(i);\n        end;\n      end;\n    end;\n\n    procedure PutShaddaFirst;\n    var\n      i, j: Integer;\n    begin\n      j := 0;\n      for i := 0 to high(A) do\n        if A[i] = UNICODE_COMBINING_GRAPHEME_JOINER then\n          j := i+1 else\n        if GetUnicodeCombiningClass(A[i]) = 33 then\n        begin\n          MoveBefore(i, j);\n          inc(j);\n        end;\n    end;\n\n    procedure PutLeadingMCMFirst(ACombiningClass: byte);\n    var\n      i, j: Integer;\n    begin\n      j := 0;\n      i := 0;\n      while i <= high(A) do\n      begin\n        if A[i] = UNICODE_COMBINING_GRAPHEME_JOINER then\n        begin\n          j := i+1;\n          inc(i);\n        end else\n        if GetUnicodeCombiningClass(A[i]) = ACombiningClass then\n        begin\n          //put leading MCM first\n          while IsModifierCombiningMark(A[i]) do\n          begin\n            MoveBefore(i, j);\n            inc(j);\n            inc(i);\n            if (i >= length(A)) or\n              not (GetUnicodeCombiningClass(A[i]) = ACombiningClass) then\n                break;\n          end;\n          //skip rest of combining class\n          while (i <= high(A)) and (GetUnicodeCombiningClass(A[i]) = ACombiningClass) do\n            inc(i);\n        end else\n          inc(i);\n      end;\n    end;\n\n  begin\n    if A = nil then exit;\n    SortByCombiningClass;\n    PutShaddaFirst;\n    PutLeadingMCMFirst(230);\n    PutLeadingMCMFirst(220);\n  end;\n\n  //some marks are combined both from left and right, so they need to be split\n  procedure SplitMarks;\n    procedure SplitMark(AFrom: LongWord; ATo1, ATo2: LongWord);\n    var\n      i, j: Integer;\n    begin\n      for i := high(FMarks) downto 0 do\n        if FMarks[i] = AFrom then\n        begin\n          FMarks[i] := ATo1;\n          setlength(FMarks, length(FMarks)+1);\n          for j := high(FMarks) downto i+2 do\n            FMarks[j] := FMarks[j-1];\n          FMarks[i+1] := ATo2;\n        end;\n    end;\n\n  begin\n    {BENGALI}\n    SplitMark($09CB, $09C7, $09BE);\n    SplitMark($09CC, $09C7, $09D7);\n    {TAMIL}\n    SplitMark($0BCA, $0BC6, $0BBE);\n    SplitMark($0BCB, $0BC7, $0BBE);\n    SplitMark($0BCC, $0BC6, $0BD7);\n    {MALAYALAM}\n    SplitMark($0D4A, $0D46, $0D3E);\n    SplitMark($0D4B, $0D47, $0D3E);\n    SplitMark($0D4C, $0D46, $0D57);\n    {BALINESE}\n    SplitMark($1B3D, $1B3C, $1B35);\n    SplitMark($1B40, $1B3E, $1B35);\n    SplitMark($1B41, $1B3F, $1B35);\n  end;\n\nvar\n  marksStr, innerMarksStr: string;\n  ofs: TIntegerArray;\n  u: LongWord;\n  glyphIndex: LongInt;\n  ftGlyph: TFreeTypeGlyph;\n  i: Integer;\nbegin\n  inherited Create(AIdentifier);\n  FFont := AFont;\n  RecomposeUTF8(FFont, AIdentifier, FCentralText, marksStr, innerMarksStr);\n  UTF8ToUnicodeArray(marksStr, FMarks, ofs);\n  SortMarks(FMarks);\n  UTF8ToUnicodeArray(innerMarksStr, FInnerMarks, ofs);\n  SortMarks(FInnerMarks);\n  SplitMarks;\n  FCentralTextWidth := AFont.TextWidth(FCentralText);\n  Width := FCentralTextWidth;\n  for i := 0 to high(FMarks) do\n  if GetUnicodeBidiClassEx(FMarks[i]) = ubcCombiningLeftToRight then\n  begin\n    glyphIndex := AFont.CharIndex[FMarks[i]];\n    if glyphIndex <> 0 then\n    begin\n      if AFont.ClearType then\n        IncF(Width, AFont.Glyph[glyphIndex].Advance/3)\n        else IncF(Width, AFont.Glyph[glyphIndex].Advance);\n    end;\n  end;\n  Height := AFont.LineFullHeight;\n  FBounds := EmptyRect;\n  if length(FCentralText) <> 0 then\n  begin\n    u := UTF8CodepointToUnicode(@FCentralText[1], UTF8CharacterLength(@FCentralText[1]));\n    glyphIndex := AFont.CharIndex[u];\n    if glyphIndex <> 0 then\n    begin\n      ftGlyph := AFont.Glyph[glyphIndex];\n      FBounds := ftGlyph.Bounds;\n    end;\n  end;\nend;\n\nconstructor TBGRAFreeTypeGlyph.Create(AIdentifier: string);\nbegin\n  raise exception.Create('Requires a font');\nend;\n\nfunction TBGRAFreeTypeGlyph.RetrieveMarkGlyph(AMark: LongWord; out AMarkGlyph: TMarkGlyph; AAllowTranslate: boolean): boolean;\n  const\n    ArabicMarkAbove: array[0..10] of LongWord =\n      ($0618, $0619, $064B, $064C, $064E, $064F,\n       $0651, $0652, $0670, $08F0, $08F1);\n\n    ArabicMarkBelow: array[0..3] of LongWord =\n      ($061A, $064D, $0650, $08F2);\n\n  type\n    TMarkFallback = record\n      NonSpacing: LongWord;\n      Spacing: LongWord;\n      Moved: boolean;\n    end;\n\n  const\n    MarkFallback: array[0..40] of TMarkFallback = (\n    (NonSpacing: $300; Spacing: $2CA; Moved: false),\n    (NonSpacing: $301; Spacing: $B4; Moved: false),\n    (NonSpacing: $302; Spacing: $5E; Moved: false),\n    (NonSpacing: $303; Spacing: $2DC; Moved: false),\n    (NonSpacing: $304; Spacing: $AF; Moved: false),\n    (NonSpacing: $305; Spacing: $203E; Moved: false),\n    (NonSpacing: $306; Spacing: $2D8; Moved: false),\n    (NonSpacing: $307; Spacing: $2D9; Moved: false),\n    (NonSpacing: $308; Spacing: $A8; Moved: false),\n    (NonSpacing: $30A; Spacing: $2DA; Moved: false),\n    (NonSpacing: $30B; Spacing: $2DD; Moved: false),\n    (NonSpacing: $30E; Spacing: $22; Moved: false),\n    (NonSpacing: $313; Spacing: $1FBD; Moved: false),\n    (NonSpacing: $314; Spacing: $1FFE; Moved: false),\n    (NonSpacing: $316; Spacing: $2CA; Moved: true),\n    (NonSpacing: $317; Spacing: $B4; Moved: true),\n    (NonSpacing: $320; Spacing: $AF; Moved: true),\n    (NonSpacing: $324; Spacing: $A8; Moved: true),\n    (NonSpacing: $325; Spacing: $2DA; Moved: true),\n    (NonSpacing: $327; Spacing: $B8; Moved: false),\n    (NonSpacing: $328; Spacing: $2DB; Moved: false),\n    (NonSpacing: $32D; Spacing: $5E; Moved: true),\n    (NonSpacing: $32E; Spacing: $2D8; Moved: true),\n    (NonSpacing: $330; Spacing: $2DC; Moved: true),\n    (NonSpacing: $331; Spacing: $AF; Moved: true),\n    (NonSpacing: $332; Spacing: $203E; Moved: true),\n    (NonSpacing: $333; Spacing: $2017; Moved: false),\n    (NonSpacing: $336; Spacing: $2013; Moved: false),\n    (NonSpacing: $337; Spacing: $2F; Moved: false),\n    (NonSpacing: $338; Spacing: $2F; Moved: false),\n    (NonSpacing: $33F; Spacing: $2017; Moved: true),\n    (NonSpacing: $340; Spacing: $2CA; Moved: false),\n    (NonSpacing: $341; Spacing: $B4; Moved: false),\n    (NonSpacing: $342; Spacing: $1FC0; Moved: false),\n    (NonSpacing: $343; Spacing: $1FBD; Moved: false),\n    (NonSpacing: $345; Spacing: $37A; Moved: false),\n    (NonSpacing: $348; Spacing: $22; Moved: true),\n    (NonSpacing: $35E; Spacing: $203E; Moved: false),\n    (NonSpacing: $35F; Spacing: $5F; Moved: false),\n    (NonSpacing: $3099; Spacing: $309B; Moved: false),\n    (NonSpacing: $309A; Spacing: $309C; Moved: false));\n\n  function IsArabicMarkAbove(u: LongWord): boolean;\n  var\n    i: Integer;\n  begin\n    for i := 0 to high(ArabicMarkAbove) do\n      if ArabicMarkAbove[i] = u then exit(true);\n    result := false;\n  end;\n\n  function IsArabicMarkBelow(u: LongWord): boolean;\n  var\n    i: Integer;\n  begin\n    for i := 0 to high(ArabicMarkBelow) do\n      if ArabicMarkBelow[i] = u then exit(true);\n    result := false;\n  end;\n\nvar k: integer;\nbegin\n  AMarkGlyph.Index := FFont.CharIndex[AMark];\n  if AMarkGlyph.Index = 0 then\n  begin\n    for k := 0 to high(MarkFallback) do\n      if (MarkFallback[k].NonSpacing = AMark) and\n         (not MarkFallback[k].Moved or AAllowTranslate) then\n      begin\n        AMarkGlyph.Index := FFont.CharIndex[MarkFallback[k].Spacing];\n        if AMarkGlyph.Index = 0 then\n        begin\n          if MarkFallback[k].Spacing = $1FBD then AMarkGlyph.Index:= FFont.CharIndex[$27] else\n          if MarkFallback[k].Spacing = $1FC0 then AMarkGlyph.Index:= FFont.CharIndex[$2DC] else\n          if MarkFallback[k].Spacing = $2CA then AMarkGlyph.Index:= FFont.CharIndex[$60];\n        end;\n        break;\n      end;\n  end;\n  if AMarkGlyph.Index <> 0 then\n  begin\n    AMarkGlyph.FreeTypeGlyph := FFont.Glyph[AMarkGlyph.Index];\n    AMarkGlyph.Bounds := AMarkGlyph.FreeTypeGlyph.Bounds;\n    AMarkGlyph.CombiningClass := GetUnicodeCombiningClass(AMark);\n    if AMarkGlyph.CombiningClass in[27..35] then\n    begin\n      if IsArabicMarkAbove(AMark) then AMarkGlyph.CombiningClass := 230 else\n      if IsArabicMarkBelow(AMark) then AMarkGlyph.CombiningClass := 220;\n    end;\n    result := true;\n  end\n  else result := false;\nend;\n\nprocedure TBGRAFreeTypeGlyph.DrawNonSpacingMarks(ADrawer: TBGRAFreeTypeDrawer;\n  ALeft, ATop: single; RTL: boolean; AColor: TBGRAPixel);\nvar\n  markGlyph: TMarkGlyph;\n  aboveOfs, belowOfs, xRef, xRefBelow, xAfter: Single;\n  justBelow, justAbove: boolean;\n\n  procedure DoJustAbove(const ALetterBounds: TRect);\n  begin\n    if justAbove then\n    begin\n      {$IFDEF LAZFREETYPE_GLYPH_BOX_FIXED}\n        DecF(aboveOfs, ALetterBounds.Top - markGlyph.Bounds.Bottom);\n        incF(aboveOfs, FFont.SizeInPixels/12);\n      {$ELSE}\n        DecF(aboveOfs, ALetterBounds.Top + FFont.Ascent/3);\n      {$ENDIF}\n      justAbove := false;\n    end;\n  end;\n\n  procedure DoJustBelow(const ALetterBounds: TRect);\n  begin\n    if justBelow then\n    begin\n      {$IFDEF LAZFREETYPE_GLYPH_BOX_FIXED}\n        incF(belowOfs, ALetterBounds.Bottom - markGlyph.Bounds.Top);\n        incF(belowOfs, FFont.SizeInPixels/12);\n      {$ELSE}\n        incF(belowOfs, ALetterBounds.Bottom);\n      {$ENDIF}\n      justBelow := false;\n    end;\n  end;\n\n  function GetMarkOffsetY(AMark: LongWord): single;\n  begin\n    if (AMark = $304) or (AMark= $305)  or (AMark= $33F) or\n       (AMark = $320) or (AMark = $331) or (AMark = $332) or (AMark = $333) then\n    begin\n      result := FFont.SizeInPixels/8;\n    end else\n    begin\n      {$IFDEF LAZFREETYPE_GLYPH_BOX_FIXED}\n        result := markGlyph.Bounds.Height + FFont.SizeInPixels/20\n      {$ELSE}\n        result := FFont.SizeInPixels/4;\n      {$ENDIF}\n    end;\n  end;\n\n  procedure DrawMark(AMark: LongWord; const ALetterBounds: TRect);\n  var\n    ofsX, ofsY: Single;\n  begin\n    if GetUnicodeBidiClassEx(AMark) <> ubcNonSpacingMark then exit;\n    if RetrieveMarkGlyph(AMark, markGlyph, {$IFDEF LAZFREETYPE_GLYPH_BOX_FIXED}true{$ELSE}false{$ENDIF}) then\n    begin\n      if markGlyph.CombiningClass = 230 then\n      begin\n        DoJustAbove(ALetterBounds);\n        ofsX := -(markGlyph.Bounds.Left + markGlyph.Bounds.Right)/2;\n        ofsY := -aboveOfs;\n        IncF(aboveOfs, GetMarkOffsetY(AMark));\n        ADrawer.DrawGlyph(markGlyph.Index, FFont,\n            xRef + ofsX, ATop + ofsY, BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n      end else\n      if markGlyph.CombiningClass in[220,240] then\n      begin\n        if justBelow then incF(ofsX, xRefBelow - xRef);\n        DoJustBelow(ALetterBounds);\n        ofsX := -(markGlyph.Bounds.Left + markGlyph.Bounds.Right)/2;\n        ofsY := belowOfs;\n        IncF(belowOfs, GetMarkOffsetY(AMark));\n        ADrawer.DrawGlyph(markGlyph.Index, FFont,\n            xRefBelow + ofsX, ATop + ofsY, BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n      end else\n      if markGlyph.CombiningClass = 1 then //overlay\n      begin\n        ofsX := -(markGlyph.Bounds.Left + markGlyph.Bounds.Right)/2;\n        ADrawer.DrawGlyph(markGlyph.Index, FFont,\n            xRef + ofsX, ATop, BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n      end else\n        ADrawer.DrawGlyph(markGlyph.Index, FFont,\n            xAfter, ATop, BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n    end;\n  end;\n\nvar\n  j: integer;\nbegin\n  if RTL then xAfter := ALeft else xAfter := ALeft + FCentralTextWidth;\n\n  if FMarks <> nil then\n  begin\n    justAbove := false;\n    if (FCentralText = 'ﻁ') or (FCentralText = 'ﻂ') or (FCentralText = 'ﻃ') or (FCentralText = 'ﻄ') or\n       (FCentralText = 'ﻅ') or (FCentralText = 'ﻆ') or (FCentralText = 'ﻇ') or (FCentralText = 'ﻈ') then\n    begin\n      aboveOfs := 0;\n      xRef := ALeft + Width*3/4;\n      xRefBelow := xRef;\n    end else\n    if (FCentralText = 'ﻝ') or (FCentralText = 'ﻞ') or (FCentralText = 'ﻚ') or (FCentralText = 'ﻙ') then\n    begin\n      aboveOfs := 0;\n      xRef := ALeft + Width/2;\n      xRefBelow := xRef;\n    end else\n    if (FCentralText = 'ﻵ') or (FCentralText = 'ﻶ') or (FCentralText = 'ﻷ') or (FCentralText = 'ﻸ') or\n       (FCentralText = 'ﻹ') or (FCentralText = 'ﻺ') or (FCentralText = 'ﻻ') or (FCentralText = 'ﻼ') then\n    begin\n      justAbove := true;\n      aboveOfs := - FFont.SizeInPixels/10;\n      xRef := ALeft + Width/6;\n      xRefBelow := ALeft + Width/4;\n    end else\n    begin\n      justAbove := true;\n      aboveOfs := 0;\n      xRef := ALeft + Width/2;\n      xRefBelow := xRef;\n    end;\n    if (FCentralText = 'ﻅ') or (FCentralText = 'ﻆ') or (FCentralText = 'ﻇ') or (FCentralText = 'ﻈ') or\n     (FCentralText = 'ﻚ') or (FCentralText = 'ﻙ') then\n    begin\n      IncF(aboveOfs, FFont.SizeInPixels/12);\n    end;\n    if (FCentralText = 'ﺏ') or (FCentralText = 'ﺐ') or (FCentralText = 'ﭒ') or (FCentralText = 'ﭓ') or\n       (FCentralText = 'ﭖ') or (FCentralText = 'ﭗ') or (FCentralText = 'ﭚ') or (FCentralText = 'ﭛ') or\n       (FCentralText = 'ٮ') then\n    begin\n      DecF(aboveOfs, FFont.SizeInPixels/16);\n    end;\n\n    belowOfs := 0;\n    justBelow := true;\n    for j := 0 to high(FMarks) do\n      DrawMark(FMarks[j], FBounds);\n  end;\n  if FInnerMarks <> nil then\n  begin\n    xRef := ALeft + Width*3/4;\n    xRefBelow := xRef;\n    aboveOfs := 0;\n    justAbove := true;\n    belowOfs := 0;\n    justBelow := true;\n    for j := 0 to high(FInnerMarks) do\n      DrawMark(FInnerMarks[j], FBounds);\n  end;\nend;\n\nprocedure TBGRAFreeTypeGlyph.DrawCentralGlyph(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; AColor: TBGRAPixel);\nbegin\n  ADrawer.DrawText(FCentralText, FFont, ALeft, ATop, BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\nend;\n\nprocedure TBGRAFreeTypeGlyph.DrawCombiningMarks(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; AColor: TBGRAPixel; out ACentralLeft: single);\nvar\n  xRight: Single;\n  widthFactor: single;\n\n  procedure DrawCombiningMark(AMark: LongWord);\n  var\n    markGlyph: TMarkGlyph;\n  begin\n    if GetUnicodeBidiClassEx(AMark) <> ubcCombiningLeftToRight then exit;\n    if RetrieveMarkGlyph(AMark, markGlyph, false) then\n    begin\n      if markGlyph.CombiningClass in[208,224] then\n      begin\n        ADrawer.DrawGlyph(markGlyph.Index, FFont, ALeft, ATop,\n                          BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n        IncF(ALeft, markGlyph.FreeTypeGlyph.Advance*widthFactor);\n        IncF(xRight, markGlyph.FreeTypeGlyph.Advance*widthFactor);\n      end else\n      if markGlyph.CombiningClass in[210,226,9] then\n      begin\n        ADrawer.DrawGlyph(markGlyph.Index, FFont, xRight, ATop,\n                          BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n        IncF(xRight, markGlyph.FreeTypeGlyph.Advance*widthFactor);\n      end else\n      begin\n        ADrawer.DrawGlyph(markGlyph.Index, FFont, ALeft, ATop,\n                          BGRAToFPColor(AColor), [ftaTop,ftaLeft]);\n        IncF(ALeft, markGlyph.FreeTypeGlyph.Advance/2*widthFactor);\n        IncF(xRight, markGlyph.FreeTypeGlyph.Advance*widthFactor);\n      end;\n    end;\n  end;\n\nvar\n  j: Integer;\nbegin\n  if FFont.ClearType then\n    widthFactor := 1/3\n    else widthFactor:= 1;\n  xRight := ALeft + FCentralTextWidth;\n  for j := 0 to high(FMarks) do\n    DrawCombiningMark(FMarks[j]);\n  ACentralLeft:= ALeft;\nend;\n\nprocedure TBGRAFreeTypeGlyph.Draw(ADrawer: TBGRAFreeTypeDrawer; ALeft, ATop: single; RTL: boolean; AColor: TBGRAPixel);\nvar\n  xLeft: single;\nbegin\n  DrawCombiningMarks(ADrawer, ALeft, ATop, AColor, xLeft);\n  DrawCentralGlyph(ADrawer, xLeft, ATop, AColor);\n  DrawNonSpacingMarks(ADrawer, xLeft, ATop, RTL, AColor);\nend;\n\n{ TFreeTypeTypeWriter }\n\nfunction TFreeTypeTypeWriter.GetGlyph(AIdentifier: string): TBGRAGlyph;\nvar\n  g: TBGRAFreeTypeGlyph;\nbegin\n  Result:= inherited GetGlyph(AIdentifier);\n  if result = nil then\n  begin\n    g := TBGRAFreeTypeGlyph.Create(FFont, AIdentifier);\n    SetGlyph(AIdentifier, g);\n    result := g;\n  end;\nend;\n\nfunction TFreeTypeTypeWriter.GetKerningOffset(AIdBefore, AIdAfter: string;\n  ARightToLeft: boolean): single;\nvar\n  temp: String;\nbegin\n  //don't store kerning as it is stored in TFreeTypeFont font object\n  if ARightToLeft then\n  begin\n    temp := AIdBefore;\n    AIdBefore := AIdAfter;\n    AIdAfter := temp;\n  end;\n  result := ComputeKerning(AIdBefore, AIdAfter);\nend;\n\nfunction TFreeTypeTypeWriter.ComputeKerning(AIdLeft, AIdRight: string): single;\n{$IFDEF LAZFREETYPE_PROVIDE_KERNING}\nvar\n  uLeft, uRight: LongWord;\nbegin\n  if (AIdLeft = '') or (AIdRight = '') then exit(0);\n  uLeft := UTF8CodepointToUnicode(@AIdLeft[1], UTF8CharacterLength(@AIdLeft[1]));\n  uRight := UTF8CodepointToUnicode(@AIdRight[1], UTF8CharacterLength(@AIdRight[1]));\n  Result:= FFont.CharKerning[uLeft, uRight].Kerning.x;\nend;\n{$ELSE}\nbegin\n  result := 0;\nend;{$ENDIF}\n\nconstructor TFreeTypeTypeWriter.Create(AFont: TFreeTypeFont);\nbegin\n  inherited Create;\n  FFont := AFont;\n  SubstituteBidiBracket:= true;\nend;\n\nprocedure TFreeTypeTypeWriter.DrawText(ADrawer: TBGRAFreeTypeDrawer;\n  ATextUTF8: string; X, Y: Single; AColor: TBGRAPixel; AAlign: TBGRATypeWriterAlignment);\nvar\n  i : Integer;\n  ptGlyph: TPointF;\n  di: TBGRATextDisplayInfo;\nbegin\n  di := GetDisplayInfo(ATextUTF8, x, y, AAlign);\n  for i := 0 to high(di) do\n  begin\n    if di[i].Mirrored then\n      ptGlyph := di[i].Matrix * PointF(di[i].Glyph.Width, 0)\n      else ptGlyph := di[i].Matrix * PointF(0, 0);\n    TBGRAFreeTypeGlyph(di[i].Glyph).Draw(ADrawer, ptGlyph.x, ptGlyph.y, di[i].RTL, AColor);\n  end;\nend;\n\n{ TBGRAFreeTypeFontRenderer }\n\nfunction TBGRAFreeTypeFontRenderer.GetCollection: TCustomFreeTypeFontCollection;\nbegin\n  result := EasyLazFreeType.FontCollection;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetDrawer(ASurface: TBGRACustomBitmap): TBGRAFreeTypeDrawer;\nbegin\n  result := FDrawer;\n  result.ShadowColor := ShadowColor;\n  result.ShadowOffset := ShadowOffset;\n  result.ShadowRadius := ShadowRadius;\n  result.ShadowVisible := ShadowVisible;\n  result.ShadowQuality := ShadowQuality;\n  result.ClearTypeRGBOrder := FontQuality <> fqFineClearTypeBGR;\n  result.Destination := ASurface;\n  result.OutlineColor := OutlineColor;\n  result.OutlineVisible := OutlineVisible;\n  result.OuterOutlineOnly := OuterOutlineOnly;\n  result.OutlineTexture := OutlineTexture;\n  if ShaderActive then result.Shader := FShader\n   else result.Shader := nil;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetShaderLightPosition: TPoint;\nbegin\n  if FShader = nil then\n    result := point(0,0)\n  else\n    result := FShader.LightPosition;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetShaderLightPositionF: TPointF;\nbegin\n  if FShader = nil then\n    result := pointF(0,0)\n  else\n    result := FShader.LightPositionF;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.SetShaderLightPosition(const AValue: TPoint);\nbegin\n  if FShader <> nil then\n    FShader.LightPosition := AValue;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.SetShaderLightPositionF(\n  const AValue: TPointF);\nbegin\n  if FShader <> nil then\n    FShader.LightPositionF := AValue;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetTypeWriter: TBGRACustomTypeWriter;\nbegin\n  if FTypeWriter = nil then\n    FTypeWriter := TFreeTypeTypeWriter.Create(FFont);\n  result := FTypeWriter;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.UpdateFont(ADisableClearType: boolean);\nvar fts: TFreeTypeStyles;\n  filename: string;\n  twChange, newClearType: boolean;\n  newSize: Single;\nbegin\n  twChange := false;\n  fts := [];\n  if fsBold in FontStyle then include(fts, ftsBold);\n  if fsItalic in FontStyle then include(fts, ftsItalic);\n  try\n    filename := FontName;\n    if (filename <> FFont.Name) or (fts <> FFont.Style) then\n    begin\n      twChange := true;\n      FFont.SetNameAndStyle(filename,fts);\n    end;\n  except\n    on ex: exception do\n    begin\n    end;\n  end;\n  newSize := FontEmHeightF;\n  if newSize <> FLastFontSize then\n  begin\n    twChange := true;\n    if FontEmHeightF >= 0 then\n      FFont.SizeInPixels := FontEmHeightF\n    else\n      FFont.LineFullHeight := -FontEmHeightF;\n    FLastFontSize := newSize;\n  end;\n  case FontQuality of\n    fqSystem:\n    begin\n      FFont.Quality := grqMonochrome;\n      newClearType := false;\n    end;\n    fqSystemClearType:\n    begin\n      FFont.Quality:= grqLowQuality;\n      newClearType:= true;\n    end;\n    fqFineAntialiasing:\n    begin\n      FFont.Quality:= grqHighQuality;\n      newClearType:= false;\n    end;\n    fqFineClearTypeRGB,fqFineClearTypeBGR:\n    begin\n      FFont.Quality:= grqHighQuality;\n      newClearType:= true;\n    end;\n  end;\n  if ADisableClearType then newClearType:= false;\n  if newClearType <> FFont.ClearType then\n  begin\n    twChange := true;\n    FFont.ClearType:= newClearType;\n  end;\n  if FFont.Hinted <> FontHinted then\n  begin\n    twChange := true;\n    FFont.Hinted := FontHinted;\n  end;\n  FFont.StrikeOutDecoration := fsStrikeOut in FontStyle;\n  FFont.UnderlineDecoration := fsUnderline in FontStyle;\n  if twChange then FreeAndNil(FTypeWriter);\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.Init;\nbegin\n  ShaderActive := true;\n\n  FDrawer := TBGRAFreeTypeDrawer.Create(nil);\n  FFont := TFreeTypeFont.Create;\n  FLastFontSize:= EmptySingle;\n  FontHinted:= True;\n\n  ShadowColor := BGRABlack;\n  ShadowVisible := false;\n  ShadowOffset := Point(5,5);\n  ShadowRadius := 5;\n  ShadowQuality:= rbFast;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextOutAnglePatch(ADest: TBGRACustomBitmap;\n  x, y: single; orientation: integer; s: string; c: TBGRAPixel;\n  tex: IBGRAScanner; align: TAlignment);\nconst orientationToDeg = -0.1;\nvar\n  temp: TBGRACustomBitmap;\n  coord: TPointF;\n  angleDeg: single;\n  OldOrientation: integer;\n  filter: TResampleFilter;\nbegin\n  OldOrientation := FontOrientation;\n  FontOrientation:= 0;\n  UpdateFont(true);\n\n  temp := BGRABitmapFactory.Create;\n  with TypeWriter.GetTextSizeBeforeTransform(s) do\n    temp.SetSize(ceil(x),ceil(y));\n  temp.FillTransparent;\n  if tex<>nil then\n  begin\n    FDrawer.Texture := tex;\n    InternalTextOut(temp,0,0, s, BGRAWhite, taLeftJustify);\n    FDrawer.Texture := nil;\n  end\n  else\n    InternalTextOut(temp,0,0, s, c, taLeftJustify);\n\n  orientation:= orientation mod 3600;\n  if orientation < 0 then inc(orientation, 3600);\n\n  angleDeg := orientation * orientationToDeg;\n  coord := PointF(x,y);\n  case align of\n  taRightJustify: coord.Offset( AffineMatrixRotationDeg(angleDeg)*PointF(-temp.Width,0) );\n  taCenter: coord.Offset( AffineMatrixRotationDeg(angleDeg)*PointF(-0.5*temp.Width,0) );\n  end;\n  case orientation of\n  0,900,1800,2700: filter := rfBox;\n  else filter := rfCosine;\n  end;\n  ADest.PutImageAngle(coord.x,coord.y, temp, angleDeg, filter);\n  temp.Free;\n\n  FontOrientation:= OldOrientation;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.InternalTextOut(ADest: TBGRACustomBitmap;\n  x, y: single; s: string; c: TBGRAPixel; align: TAlignment);\nvar\n  twAlign: TBGRATypeWriterAlignment;\nbegin\n  case align of\n    taCenter: twAlign:= twaTop;\n    taRightJustify: twAlign := twaTopRight\n  else\n    twAlign := twaTopLeft;\n  end;\n  TFreeTypeTypeWriter(TypeWriter).DrawText(GetDrawer(ADest), s, x,y, c, twAlign);\nend;\n\nconstructor TBGRAFreeTypeFontRenderer.Create;\nbegin\n  Init;\nend;\n\nconstructor TBGRAFreeTypeFontRenderer.Create(AShader: TCustomPhongShading;\n  AShaderOwner: boolean);\nbegin\n  Init;\n  FShader := AShader;\n  FShaderOwner := AShaderOwner;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.FontExists(AName: string): boolean;\nvar\n  enum: IFreeTypeFamilyEnumerator;\nbegin\n  if Assigned(Collection) then\n  begin\n    enum := Collection.FamilyEnumerator;\n    while enum.MoveNext do\n      if CompareText(enum.Current.FamilyName, AName) = 0 then exit(true);\n    result := false;\n  end else\n    result := true;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextVisible(const AColor: TBGRAPixel): boolean;\nbegin\n  Result:=inherited TextVisible(AColor) or\n    (((OutlineTexture <> nil) or (OutlineColor.alpha <> 0)) and OutlineVisible);\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetFontPixelMetric: TFontPixelMetric;\nbegin\n  UpdateFont;\n  result.Baseline := round(FFont.Ascent);\n  result.CapLine:= round(FFont.Ascent*0.2);\n  result.DescentLine:= round(FFont.Ascent+FFont.Descent);\n  result.Lineheight := round(FFont.LineFullHeight);\n  result.xLine := round(FFont.Ascent*0.45);\n  result.Defined := True;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.GetFontPixelMetricF: TFontPixelMetricF;\nbegin\n  UpdateFont;\n  result.Baseline := FFont.Ascent;\n  result.CapLine:= FFont.Ascent*0.2;\n  result.DescentLine:= FFont.Ascent+FFont.Descent;\n  result.Lineheight := FFont.LineFullHeight;\n  result.xLine := FFont.Ascent*0.45;\n  result.Defined := True;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment);\nbegin\n  TextOutAnglePatch(ADest, x,y, orientation, s, c, nil, align);\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; texture: IBGRAScanner;\n  align: TAlignment);\nbegin\n  TextOutAnglePatch(ADest, x,y, orientation, s, BGRAPixelTransparent, texture, align);\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; texture: IBGRAScanner; align: TAlignment);\nbegin\n  if FontOrientation mod 3600 <> 0 then\n    TextOutAngle(ADest, x,y, FontOrientation, s, texture, align)\n  else\n  begin\n    FDrawer.Texture := texture;\n    TextOut(ADest,x,y,s,BGRAWhite,align);\n    FDrawer.Texture := nil;\n  end;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; c: TBGRAPixel; align: TAlignment);\nbegin\n  if FontOrientation mod 3600 <> 0 then\n    TextOutAngle(ADest, x,y, FontOrientation, s, c, align)\n  else\n  begin\n    UpdateFont;\n    InternalTextOut(ADest, x,y, s, c, align);\n  end;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextRect(ADest: TBGRACustomBitmap;\n  ARect: TRect; x, y: integer; s: string; style: TTextStyle; c: TBGRAPixel);\nvar align: TFreeTypeAlignments;\n    intersectedClip,previousClip: TRect;\nbegin\n  previousClip := ADest.ClipRect;\n  if style.Clipping then\n  begin\n    intersectedClip := TRect.Intersect(previousClip, ARect);\n    if intersectedClip.IsEmpty then exit;\n    ADest.ClipRect := intersectedClip;\n  end;\n  UpdateFont;\n  align := [];\n  case style.Alignment of\n  taCenter: begin ARect.Left := x; include(align, ftaCenter); end;\n  taRightJustify: begin ARect.Left := x; include(align, ftaRight); end;\n  else\n    include(align, ftaLeft);\n  end;\n  case style.Layout of\n  tlCenter: begin ARect.Top := y; include(align, ftaVerticalCenter); end;\n  tlBottom: begin ARect.top := y; include(align, ftaBottom); end;\n  else include(align, ftaTop);\n  end;\n  try\n    if style.Wordbreak then\n      GetDrawer(ADest).DrawTextRect(s, FFont, ARect.Left,ARect.Top,ARect.Right,ARect.Bottom,BGRAToFPColor(c),align)\n    else\n    begin\n      case style.Layout of\n      tlCenter: y := (ARect.Top+ARect.Bottom) div 2;\n      tlBottom: y := ARect.Bottom;\n      else\n        y := ARect.Top;\n      end;\n      case style.Alignment of\n      taLeftJustify: GetDrawer(ADest).DrawText(s,FFont,ARect.Left,y,BGRAToFPColor(c),align);\n      taCenter: GetDrawer(ADest).DrawText(s,FFont,(ARect.Left+ARect.Right-1) div 2,y,BGRAToFPColor(c),align);\n      taRightJustify: GetDrawer(ADest).DrawText(s,FFont,ARect.Right,y,BGRAToFPColor(c),align);\n      end;\n    end;\n  finally\n    if style.Clipping then\n      ADest.ClipRect := previousClip;\n  end;\nend;\n\nprocedure TBGRAFreeTypeFontRenderer.TextRect(ADest: TBGRACustomBitmap;\n  ARect: TRect; x, y: integer; s: string; style: TTextStyle;\n  texture: IBGRAScanner);\nbegin\n  FDrawer.Texture := texture;\n  TextRect(ADest,ARect,x,y,s,style,BGRAWhite);\n  FDrawer.Texture := nil;\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextSize(sUTF8: string): TSize;\nbegin\n  with TextSizeF(sUTF8) do\n    result := Size(System.Round(x),System.Round(y));\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextSizeF(sUTF8: string): TPointF;\nbegin\n  UpdateFont;\n  result := TypeWriter.GetTextSizeBeforeTransform(sUTF8);\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextSize(sUTF8: string; AMaxWidth: integer;\n  ARightToLeft: boolean): TSize;\nbegin\n  with TextSizeF(sUTF8, AMaxWidth, ARightToLeft) do\n    result := Size(System.Round(x),System.Round(y));\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextSizeF(sUTF8: string; AMaxWidthF: single;\n  ARightToLeft: boolean): TPointF;\nvar\n  w,h: single;\n  charCount, byteCount: integer;\nbegin\n  UpdateFont;\n  result.x := 0;\n  result.y := 0;\n  h := FFont.LineFullHeight;\n  repeat\n    TypeWriter.TextFitInfoBeforeTransform(sUTF8, AMaxWidthF, charCount, byteCount, w);\n    if w>result.x then result.x := w;\n    IncF(result.y, h);\n    sUTF8 := copy(sUTF8, byteCount+1, length(sUTF8)-byteCount);\n  until sUTF8 = '';\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextFitInfo(sUTF8: string; AMaxWidth: integer): integer;\nbegin\n  result := TextFitInfoF(sUTF8, AMaxWidth);\nend;\n\nfunction TBGRAFreeTypeFontRenderer.TextFitInfoF(sUTF8: string;\n  AMaxWidthF: single): integer;\nvar\n  byteCount: integer;\n  usedWidth: single;\nbegin\n  UpdateFont;\n  TypeWriter.TextFitInfoBeforeTransform(sUTF8, AMaxWidthF, result, byteCount, usedWidth);\nend;\n\ndestructor TBGRAFreeTypeFontRenderer.Destroy;\nbegin\n  FTypeWriter.Free;\n  FDrawer.Free;\n  FFont.Free;\n  if FShaderOwner then FShader.Free;\n  inherited Destroy;\nend;\n\n{ TBGRAFreeTypeDrawer }\n\nprocedure TBGRAFreeTypeDrawer.RenderDirectly( x,y,tx: integer;\n                          data: pointer );\nvar psrc: pbyte;\n    pdest: PBGRAPixel;\n    c: TBGRAPixel;\nbegin\n  if Destination <> nil then\n  begin\n    //ensure rendering in bounds\n    if (y < 0) or (y >= Destination.height) or (x < 0) or (x > Destination.width-tx) then exit;\n\n    psrc := pbyte(data);\n    pdest := Destination.ScanLine[y]+x;\n    if Texture = nil then\n    begin\n      c := FColor;\n      while tx > 0 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest,c,psrc^);\n        inc(psrc);\n        inc(pdest);\n        dec(tx);\n      end;\n    end else\n    begin\n      Texture.ScanMoveTo(x,y);\n      while tx > 0 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest,Texture.ScanNextPixel,psrc^);\n        inc(psrc);\n        inc(pdest);\n        dec(tx);\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAFreeTypeDrawer.RenderDirectlyClearType(x, y, tx: integer; data: pointer);\nvar xb: integer;\n    psrc: pbyte;\n    pdest: PBGRAPixel;\nbegin\n  if Destination <> nil then\n  begin\n    tx := tx div 3;\n    if tx=0 then exit;\n    if (FMask <> nil) and (FMask.Width <> tx) then\n      FMask.SetSize(tx,1)\n    else if FMask = nil then FMask := BGRABitmapFactory.create(tx,1);\n\n    pdest := FMask.Data;\n    psrc := pbyte(data);\n    pdest^.red := (psrc^ + psrc^ + (psrc+1)^) div 3;\n    pdest^.green := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3;\n    if tx > 1 then\n      pdest^.blue := ((psrc+1)^ + (psrc+2)^ + (psrc+3)^) div 3\n    else\n      pdest^.blue := ((psrc+1)^ + (psrc+2)^ + (psrc+2)^) div 3;\n    inc(pdest);\n    inc(psrc,3);\n    for xb := 1 to tx-2 do\n    begin\n      pdest^.red := ((psrc-1)^+ psrc^ + (psrc+1)^) div 3;\n      pdest^.green := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3;\n      pdest^.blue := ((psrc+1)^ + (psrc+2)^ + (psrc+3)^) div 3;\n      inc(pdest);\n      inc(psrc,3);\n    end;\n    if tx > 1 then\n    begin\n      pdest^.red := ((psrc-1)^+ psrc^ + (psrc+1)^) div 3;\n      pdest^.green := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3;\n      pdest^.blue := ((psrc+1)^ + (psrc+2)^ + (psrc+2)^) div 3;\n    end;\n    BGRAFillClearTypeRGBMask(Destination,x div 3,y,FMask,FColor,Texture,ClearTypeRGBOrder);\n  end;\nend;\n\nfunction TBGRAFreeTypeDrawer.ShadowActuallyVisible: boolean;\nbegin\n  result := ShadowVisible and (ShadowColor.alpha <> 0);\nend;\n\nfunction TBGRAFreeTypeDrawer.OutlineActuallyVisible: boolean;\nbegin\n  result := ((OutlineTexture <> nil) or (OutlineColor.alpha <> 0)) and OutlineVisible;\nend;\n\nfunction TBGRAFreeTypeDrawer.ShaderActuallyActive: boolean;\nbegin\n  result := (Shader <> nil) and ShaderActive;\nend;\n\nconstructor TBGRAFreeTypeDrawer.Create(ADestination: TBGRACustomBitmap);\nbegin\n  Destination := ADestination;\n  ClearTypeRGBOrder:= true;\n  ShaderActive := true;\n  ShadowQuality:= rbFast;\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawText(AText: string;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TFPColor);\nvar fx: TBGRACustomTextEffect;\n  procedure DoOutline;\n  begin\n    if OutlineActuallyVisible then\n    begin\n      if OutlineTexture <> nil then\n        fx.DrawOutline(Destination,round(x),round(y), OutlineTexture)\n      else\n        fx.DrawOutline(Destination,round(x),round(y), OutlineColor);\n    end;\n  end;\nbegin\n  if not FInCreateTextEffect and (ShadowActuallyVisible or OutlineActuallyVisible or ShaderActuallyActive) then\n  begin\n    fx := CreateTextEffect(AText, AFont);\n    fx.ShadowQuality := ShadowQuality;\n    DecF(y, AFont.Ascent);\n    if ShadowActuallyVisible then fx.DrawShadow(Destination, round(x+ShadowOffset.X),round(y+ShadowOffset.Y), ShadowRadius, ShadowColor);\n    if OuterOutlineOnly then DoOutline;\n\n    if texture <> nil then\n    begin\n      if ShaderActuallyActive then\n        fx.DrawShaded(Destination,floor(x),floor(y), Shader, round(fx.TextSize.cy*0.05), texture)\n      else\n        fx.Draw(Destination,round(x),round(y), texture);\n    end else\n    begin\n      if ShaderActuallyActive then\n        fx.DrawShaded(Destination,floor(x),floor(y), Shader, round(fx.TextSize.cy*0.05), FPColorToBGRA(AColor))\n      else\n        fx.Draw(Destination,round(x),round(y), FPColorToBGRA(AColor));\n    end;\n    if not OuterOutlineOnly then DoOutline;\n    fx.Free;\n  end else\n  begin\n    FColor := FPColorToBGRA(AColor);\n    if AFont.ClearType then\n      AFont.RenderText(AText, x, y, Destination.ClipRect, @RenderDirectlyClearType)\n    else\n      AFont.RenderText(AText, x, y, Destination.ClipRect, @RenderDirectly);\n  end;\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawText(AText: string;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TBGRAPixel);\nbegin\n  DrawText(AText, AFont, x,y, BGRAToFPColor(AColor));\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawText(AText: string;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TBGRAPixel;\n  AAlign: TFreeTypeAlignments);\nbegin\n  DrawText(AText, AFont, x,y, BGRAToFPColor(AColor), AAlign);\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawTextWordBreak(AText: string;\n  AFont: TFreeTypeRenderableFont; x, y, AMaxWidth: Single; AColor: TBGRAPixel;\n  AAlign: TFreeTypeAlignments);\nbegin\n  DrawTextWordBreak(AText,AFont,x,y,AMaxWidth,BGRAToFPColor(AColor),AAlign);\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawTextRect(AText: string;\n  AFont: TFreeTypeRenderableFont; X1, Y1, X2, Y2: Single; AColor: TBGRAPixel;\n  AAlign: TFreeTypeAlignments);\nbegin\n  DrawTextRect(AText,AFont,X1,Y1,X2,Y2,BGRAToFPColor(AColor),AAlign);\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawGlyph(AGlyph: integer;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TFPColor);\nvar f: TFreeTypeFont;\nbegin\n  if not (AFont is TFreeTypeFont) then exit;\n  f := TFreeTypeFont(Afont);\n  FColor := FPColorToBGRA(AColor);\n  if AFont.ClearType then\n    f.RenderGlyph(AGlyph, x, y, Destination.ClipRect, @RenderDirectlyClearType)\n  else\n    f.RenderGlyph(AGlyph, x, y, Destination.ClipRect, @RenderDirectly);\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawGlyph(AGlyph: integer;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TBGRAPixel);\nbegin\n  DrawGlyph(AGlyph, AFont, x,y, BGRAToFPColor(AColor));\nend;\n\nprocedure TBGRAFreeTypeDrawer.DrawGlyph(AGlyph: integer;\n  AFont: TFreeTypeRenderableFont; x, y: single; AColor: TBGRAPixel;\n  AAlign: TFreeTypeAlignments);\nbegin\n  DrawGlyph(AGlyph, AFont, x,y, BGRAToFPColor(AColor), AAlign);\nend;\n\nfunction TBGRAFreeTypeDrawer.CreateTextEffect(AText: string;\n  AFont: TFreeTypeRenderableFont): TBGRACustomTextEffect;\nvar\n  mask: TBGRACustomBitmap;\n  tx,ty,marginHoriz,marginVert: integer;\n  tempDest: TBGRACustomBitmap;\n  tempTex: IBGRAScanner;\n  tempClearType: boolean;\nbegin\n  FInCreateTextEffect:= True;\n  try\n    tx := ceil(AFont.TextWidth(AText));\n    ty := ceil(AFont.TextHeight(AText));\n    marginHoriz := ty div 2;\n    marginVert := 1;\n    mask := BGRABitmapFactory.Create(tx+2*marginHoriz,ty+2*marginVert,BGRABlack);\n    tempDest := Destination;\n    tempTex := Texture;\n    tempClearType:= AFont.ClearType;\n    Destination := mask;\n    Texture := nil;\n    AFont.ClearType := false;\n    DrawText(AText,AFont,marginHoriz,marginVert,BGRAWhite,[ftaTop,ftaLeft]);\n    Destination := tempDest;\n    Texture := tempTex;\n    AFont.ClearType := tempClearType;\n    mask.ConvertToLinearRGB;\n    result := TBGRACustomTextEffect.Create(mask, true,tx,ty,point(-marginHoriz,-marginVert));\n  finally\n    FInCreateTextEffect:= false;\n  end;\nend;\n\ndestructor TBGRAFreeTypeDrawer.Destroy;\nbegin\n  FMask.Free;\n  inherited Destroy;\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgragifformat.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Structure and algorithms to read/write GIF files }\nunit BGRAGifFormat;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmap, BGRABitmapTypes,\n  BGRAPalette;\n\ntype\n  { What to do when finishing a frame and starting the next one }\n  TDisposeMode = (dmNone,        //undefined value\n                  dmKeep,        //keep the changes done by the frame\n                  dmErase,       //clear everything after the frame (used by GIF but not available in PNG)\n                  dmRestore,     //restore to how it was before the frame\n                  dmEraseArea    //clear the rectangular area changed by the frame (not used by GIF but by PNG)\n                  );\n\n  { One image in the GIF animation }\n  TGifSubImage = record\n    Image:    TBGRABitmap;       //image to draw at the beggining of the frame\n    Position: TPoint;            //relative position of the image in the frame\n    DelayMs:    integer;         //time in milliseconds to wait before going to next frame\n    DisposeMode: TDisposeMode;   //what do do when going to next frame\n    HasLocalPalette: boolean;    //the image has its own palette\n    DrawMode: TDrawMode;         //always dmSetExceptTransparent for GIF files\n  end;\n  TGifSubImageArray = array of TGifSubImage;\n\n  { Signature for a GIF file }\n  TGIFSignature = packed array[1..6] of char; //'GIF87a' or 'GIF89a'\n\n  { Screen descriptor for GIF rendering }\n  TGIFScreenDescriptor = packed record\n    Width, Height: word;\n    flags,                    //screen bit depth  = ((flags shr 4) and 7) + 1\n                              //palette bit depth = (flags and 7) + 1\n    BackgroundColorIndex,     //index of background color in global palette\n    AspectRatio64 : byte;     //0 if not specified, otherwise aspect ratio is (AspectRatio64 + 15) / 64\n  end;\n\n  { Image descriptor of GIF frame }\n  TGIFImageDescriptor = packed record\n    x, y, Width, Height: word;\n    flags: byte;\n  end;\n\n  { GIF extension block }\n  TGIFExtensionBlock = packed record\n    FunctionCode: byte;\n  end;\n\n  { GIF graphic control extension }\n  TGIFGraphicControlExtension = packed record\n    flags: byte;\n    DelayHundredthSec: word;\n    TransparentColorIndex: byte;\n  end;\n\n  { 8-bit RGB values }\n  TPackedRGBTriple = packed record\n    r, g, b: byte;\n  end;\n\n  { Data describing a GIF file }\n  TGIFData = record\n    Width, Height: integer;\n    AspectRatio: single;\n    BackgroundColor: TColor;\n    LoopCount: Word;\n    Images: array of TGifSubImage;\n  end;\n\n  { Exception raised when no color quantizer is available }\n  EColorQuantizerMissing = class(Exception)\n    constructor Create;\n    constructor Create(AMessage: string);\n  end;\n\nconst\n  GIFScreenDescriptor_GlobalColorTableFlag = $80;    //global palette is present\n  GIFScreenDescriptor_GlobalColorSortFlag  = $08;    //global palette colors are sorted by importance\n\n  GIFImageIntroducer     = $2c;\n  GIFExtensionIntroducer = $21;\n  GIFBlockTerminator     = $00;\n  GIFFileTerminator      = $3B;\n\n  GIFGraphicControlExtension_TransparentFlag = $01;  //transparent color index is provided\n  GIFGraphicControlExtension_UserInputFlag = $02;    //wait for user input at this frame (ignored)\n  GIFGraphicControlExtension_FunctionCode = $f9;\n  GIFGraphicControlExtension_DisposeModeShift = 2;\n\n  GIFImageDescriptor_LocalColorTableFlag = $80;      //local palette is present\n  GIFImageDescriptor_InterlacedFlag = $40;           //image data is interlaced\n  GIFImageDescriptor_LocalColorSortFlag = $20;       //local palette colors are sorted by importance\n\n  GIFInterlacedStart: array[1..4] of longint = (0, 4, 2, 1);\n  GIFInterlacedStep: array[1..4] of longint = (8, 8, 4, 2);\n\n  GIFCodeTableSize = 4096;\n\n  NetscapeApplicationIdentifier = 'NETSCAPE2.0';\n  NetscapeSubBlockIdLoopCount = 1;\n  NetscapeSubBlockIdBuffering = 2;\n\nfunction CeilLn2(AValue: Integer): integer;\nfunction BGRAToPackedRgbTriple(color: TBGRAPixel): TPackedRGBTriple;\nfunction PackedRgbTribleToBGRA(rgb: TPackedRGBTriple): TBGRAPixel;\nfunction GIFLoadFromStream(stream: TStream; MaxImageCount: integer = maxLongint): TGIFData;\nprocedure GIFSaveToStream(AData: TGifData; Stream: TStream; AQuantizerFactory: TBGRAColorQuantizerAny;\n          ADitheringAlgorithm: TDitheringAlgorithm);\nprocedure GIFDecodeLZW(AStream: TStream; AImage: TBGRACustomBitmap;\n          const APalette: ArrayOfTBGRAPixel; transcolorIndex: integer;\n          interlaced: boolean);\n\n//Encode an image supplied as an sequence of bytes, from left to right and top to bottom.\n//Adapted from the work of Udo Schmal, http://www.gocher.me/FPWriteGIF\nprocedure GIFEncodeLZW(AStream: TStream; AImageData: PByte;\n          AImageWidth, AImageHeight: integer; ABitDepth: byte);\n\nimplementation\n\nfunction PackedRgbTribleToBGRA(rgb: TPackedRGBTriple): TBGRAPixel;\nbegin\n  Result.red   := rgb.r;\n  Result.green := rgb.g;\n  Result.blue  := rgb.b;\n  Result.alpha := 255;\nend;\n\nfunction BGRAToPackedRgbTriple(color: TBGRAPixel): TPackedRGBTriple;\nbegin\n  result.r := color.red;\n  result.g := color.green;\n  result.b := color.blue;\nend;\n\nfunction CeilLn2(AValue: Integer): integer;\nvar comp: integer;\nbegin\n  result := 0;\n  comp := 1;\n  while (comp < AValue) and (result < 30) do\n  begin\n    inc(result);\n    comp := comp shl 1;\n  end;\nend;\n\nprocedure GIFDecodeLZW(AStream: TStream; AImage: TBGRACustomBitmap;\n          const APalette: ArrayOfTBGRAPixel; transcolorIndex: integer;\n          interlaced: boolean);\nvar\n  xd, yd: longint;\ntype\n  Pstr = ^Tstr;\n\n  Tstr = record\n    prefix: Pstr;\n    suffix: longint;\n  end;\n  Pstrtab = ^Tstrtab;\n  Tstrtab = array[0..GIFCodeTableSize-1] of Tstr;\n\nvar\n  strtab:   Pstrtab;\n  oldcode, curcode, clearcode, endcode: longint;\n  codesize, codelen, codemask: longint;\n  stridx:   longint;\n  bitbuf, bitsinbuf: longint;\n  bytbuf:   packed array[0..255] of byte;\n  bytinbuf, bytbufidx: byte;\n  endofsrc: boolean;\n  xcnt, ycnt, ystep, pass: longint;\n  pdest: PBGRAPixel;\n\n  procedure InitStringTable;\n  var\n    i: longint;\n  begin\n    new(strtab);\n    clearcode := 1 shl codesize;\n    endcode   := clearcode + 1;\n    stridx    := endcode + 1;\n    codelen   := CeilLn2(stridx+1);\n    codemask  := (1 shl codelen) - 1;\n    for i := 0 to clearcode - 1 do\n    begin\n      strtab^[i].prefix := nil;\n      strtab^[i].suffix := i;\n    end;\n    for i := clearcode to GIFCodeTableSize-1 do\n    begin\n      strtab^[i].prefix := nil;\n      strtab^[i].suffix := 0;\n    end;\n  end;\n\n  procedure ClearStringTable;\n  var\n    i: longint;\n  begin\n    clearcode := 1 shl codesize;\n    endcode   := clearcode + 1;\n    stridx    := endcode + 1;\n    codelen   := CeilLn2(stridx+1);\n    codemask  := (1 shl codelen) - 1;\n    for i := clearcode to GIFCodeTableSize-1 do\n    begin\n      strtab^[i].prefix := nil;\n      strtab^[i].suffix := 0;\n    end;\n  end;\n\n  procedure DoneStringTable;\n  begin\n    dispose(strtab);\n  end;\n\n  function GetNextCode: longint;\n  begin\n    while (bitsinbuf < codelen) do\n    begin\n      if (bytinbuf = 0) then\n      begin\n        if AStream.Read(bytinbuf, 1) <> 1 then\n          raise exception.Create('Unexpected end of stream');\n\n        if (bytinbuf = 0) then\n        begin\n          endofsrc := True;\n          result := endcode;\n          exit;\n        end;\n        AStream.Read(bytbuf, bytinbuf);\n        bytbufidx := 0;\n      end;\n      bitbuf := bitbuf or (longint(byte(bytbuf[bytbufidx])) shl bitsinbuf);\n      Inc(bytbufidx);\n      Dec(bytinbuf);\n      Inc(bitsinbuf, 8);\n    end;\n    Result := bitbuf and codemask;\n    bitbuf := bitbuf shr codelen;\n    Dec(bitsinbuf, codelen);\n    //write(inttostr(result)+'@'+inttostr(codelen)+' ');\n  end;\n\n  procedure AddStr2Tab(prefix: Pstr; suffix: longint);\n  begin\n    if stridx >= GIFCodeTableSize then exit;\n    strtab^[stridx].prefix := prefix;\n    strtab^[stridx].suffix := suffix;\n    Inc(stridx);\n    if (stridx = 1 shl codelen)\n      and (stridx < GIFCodeTableSize) then\n        inc(codelen);\n    codemask := (1 shl codelen) - 1;\n  end;\n\n  function Code2Str(code: longint): Pstr;\n  begin\n    Result := addr(strtab^[code]);\n  end;\n\n  procedure WriteStr(s: Pstr);\n  var\n    colorIndex: integer;\n  begin\n    if (s^.prefix <> nil) then\n    begin\n      if s^.prefix = s then\n        raise exception.Create('Circular reference in prefix');\n      WriteStr(s^.prefix);\n    end;\n    if (ycnt >= yd) then\n    begin\n      if interlaced then\n      begin\n        while ycnt >= yd do\n        begin\n          if pass >= 5 then exit;\n\n          Inc(pass);\n          ycnt  := GIFInterlacedStart[pass];\n          ystep := GIFInterlacedStep[pass];\n        end;\n      end else exit;\n    end;\n\n    colorIndex := s^.suffix;\n    if xcnt = 0 then pdest := AImage.ScanLine[ycnt];\n\n    if (colorIndex <> transcolorIndex) and (colorIndex >= 0) and\n      (colorIndex < length(APalette)) then\n      pdest^ := APalette[colorIndex];\n\n    Inc(xcnt);\n    inc(pdest);\n\n    if (xcnt >= xd) then\n    begin\n      pdest := nil;\n      xcnt := 0;\n      Inc(ycnt, ystep);\n\n      if not interlaced then\n        if (ycnt >= yd) then\n        begin\n          Inc(pass);\n        end;\n\n    end;\n  end;\n\n  function firstchar(s: Pstr): byte;\n  begin\n    while (s^.prefix <> nil) do\n      s    := s^.prefix;\n    Result := s^.suffix;\n  end;\n\nbegin\n  endofsrc := False;\n  xd   := AImage.Width;\n  yd   := AImage.Height;\n  xcnt := 0;\n  pdest := nil;\n  if interlaced then\n  begin\n    pass  := 1;\n    ycnt  := GIFInterlacedStart[pass];\n    ystep := GIFInterlacedStep[pass];\n  end\n  else\n  begin\n    pass  := 4;\n    ycnt  := 0;\n    ystep := 1;\n  end;\n  oldcode   := 0;\n  bitbuf    := 0;\n  bitsinbuf := 0;\n  bytinbuf  := 0;\n  bytbufidx := 0;\n  codesize  := 0;\n  AStream.Read(codesize, 1);\n  InitStringTable;\n  try\n    curcode := getnextcode;\n    //Write('Reading ');\n    while (curcode <> endcode) and (pass < 5) and not endofsrc do\n    begin\n      if (curcode = clearcode) then\n      begin\n        ClearStringTable;\n        repeat\n          curcode := getnextcode;\n        until (curcode <> clearcode);\n        if (curcode = endcode) then\n          break;\n        WriteStr(code2str(curcode));\n        oldcode := curcode;\n      end\n      else\n      begin\n        if (curcode < stridx) then\n        begin\n          WriteStr(Code2Str(curcode));\n          AddStr2Tab(Code2Str(oldcode), firstchar(Code2Str(curcode)));\n          oldcode := curcode;\n        end\n        else\n        begin\n          if (curcode > stridx) then\n          begin\n            //write('!Invalid! ');\n            break;\n          end;\n          AddStr2Tab(Code2Str(oldcode), firstchar(Code2Str(oldcode)));\n          WriteStr(Code2Str(stridx - 1));\n          oldcode := curcode;\n        end;\n      end;\n      curcode := getnextcode;\n    end;\n  finally\n    DoneStringTable;\n  end;\n  //Writeln;\n  if not endofsrc then\n  begin\n    bytinbuf:= 0;\n    AStream.ReadBuffer(bytinbuf, 1);\n    if bytinbuf = 1 then\n    begin\n      AStream.ReadBuffer(bytinbuf, 1); // skip extra\n      AStream.ReadBuffer(bytinbuf, 1); // check again for block terminator\n    end;\n    if bytinbuf <> 0 then\n      raise exception.Create('Invalid GIF format: expecting block terminator');\n  end;\nend;\n\n//Encode an image supplied as an sequence of bytes, from left to right and top to bottom.\n//Adapted from the work of Udo Schmal, http://www.gocher.me/FPWriteGIF\nprocedure GIFEncodeLZW(AStream: TStream; AImageData: PByte;\n          AImageWidth, AImageHeight: integer; ABitDepth: byte);\n\nvar  //input position\n  PInput, PInputEnd: PByte;\n\n  // get the next pixel from the bitmap\n  function ReadValue: byte;\n  begin\n    result := PInput^;\n    Inc(PInput);\n  end;\n\nvar // GIF buffer can be up to 255 bytes long\n  OutputBufferSize: Int32or64;\n  OutputBuffer: packed array[0..255] of byte;\n\n  procedure FlushByteOutput;\n  begin\n    if OutputBufferSize > 0 then\n    begin\n      OutputBuffer[0] := OutputBufferSize;\n      AStream.WriteBuffer(OutputBuffer, OutputBufferSize+1);\n      OutputBufferSize := 0;\n    end;\n  end;\n\n  procedure OutputByte(AValue: byte);\n  begin\n    if OutputBufferSize = 255 then FlushByteOutput;\n    inc(OutputBufferSize);\n    OutputBuffer[OutputBufferSize] := AValue;\n  end;\n\ntype TCode = Word;\n\nvar\n  BitBuffer       : LongWord; // steady stream of bit output\n  BitBufferLen    : Byte;  // number of bits in buffer\n  CurCodeSize     : byte;  // current code size\n\n  // save the code in the output data stream\n  procedure WriteCode(Code: TCode);\n  begin\n    //Write(IntToStr(Code)+'@'+IntToStr(CurCodeSize)+' ');\n\n    // append code to bit buffer\n    BitBuffer := BitBuffer or (Code shl BitBufferLen);\n    BitBufferLen := BitBufferLen + CurCodeSize;\n    // output whole bytes\n    while BitBufferLen >= 8 do\n    begin\n      OutputByte(BitBuffer and $ff);\n      BitBuffer := BitBuffer shr 8;\n      dec(BitBufferLen, 8);\n    end;\n  end;\n\n  procedure CloseBitOutput;\n  begin\n    // write out the rest of the bit string\n    // and add padding bits if necessary\n    while BitBufferLen > 0 do\n    begin\n      OutputByte(BitBuffer and $ff);\n      BitBuffer := BitBuffer shr 8;\n      if BitBufferLen >= 8 then\n        dec(BitBufferLen, 8)\n      else\n        BitBufferLen := 0;\n    end;\n  end;\n\ntype\n  PCodeTableEntry = ^TCodeTableEntry;\n  TCodeTableEntry = packed record\n               Prefix: TCode;\n               LongerFirst, LongerLast: TCode;\n               Suffix, Padding: Byte;\n               NextWithPrefix: TCode;\n             end;\n\nvar\n  ClearCode     : TCode;   // reset decode params\n  EndStreamCode : TCode;   // last code in input stream\n  FirstCodeSlot : TCode;   // first slot when table is empty\n  NextCodeSlot  : TCode;   // next slot to be used\n\n  PEntry: PCodeTableEntry;\n  CodeTable: array of TCodeTableEntry;\n  CurrentCode   : TCode; // code representing current string\n\n  procedure DoClearCode;\n  var\n    i: Word;\n  begin\n    for i := 0 to (1 shl ABitDepth)-1 do\n    with CodeTable[i] do\n    begin\n      LongerFirst:= 0;\n      LongerLast:= 0;\n    end;\n\n    WriteCode(ClearCode);\n    CurCodeSize := CeilLn2(FirstCodeSlot+1);\n    NextCodeSlot := FirstCodeSlot;\n  end;\n\nvar\n  CurValue: Byte;\n  i: TCode;\n  found: boolean; // decoded string in prefix table?\nbegin\n   if ABitDepth > 8 then\n     raise exception.Create('Maximum bit depth is 8');\n\n   //most readers won't handle less than 2 bits\n   if ABitDepth < 2 then ABitDepth := 2;\n\n   //output\n   AStream.WriteByte(ABitDepth);\n   ClearCode := 1 shl ABitDepth;\n   EndStreamCode := ClearCode + 1;\n   FirstCodeSlot := ClearCode + 2;\n   CurCodeSize := CeilLn2(FirstCodeSlot+1);\n\n   OutputBufferSize := 0;\n   BitBuffer := 0;\n   BitBufferLen := 0;\n\n   //input\n   PInput := AImageData;\n   PInputEnd := AImageData + PtrInt(AImageWidth)*AImageHeight;\n\n   setlength(CodeTable, GIFCodeTableSize);\n   DoClearCode;\n   //write('Writing ');\n\n   while PInput < PInputEnd do\n   begin\n     CurrentCode := ReadValue;\n     if CurrentCode >= ClearCode then\n       raise exception.Create('Internal error');\n\n     //try to match the longest string\n     while PInput < PInputEnd do\n     begin\n       CurValue := ReadValue;\n\n       found := false;\n\n       i := CodeTable[CurrentCode].LongerFirst;\n       while i <> 0 do\n       begin\n         PEntry := @CodeTable[i];\n         if PEntry^.Suffix = CurValue then\n         begin\n           found := true;\n           CurrentCode := i;\n           break;\n         end;\n         i := PEntry^.NextWithPrefix;\n       end;\n\n       if not found then\n       begin\n         PEntry := @CodeTable[CurrentCode];\n         if PEntry^.LongerFirst = 0 then\n         begin\n           //store the first and last code being longer\n           PEntry^.LongerFirst := NextCodeSlot;\n           PEntry^.LongerLast := NextCodeSlot;\n         end else\n         begin\n           //link next entry having the same prefix\n           CodeTable[PEntry^.LongerLast].NextWithPrefix:= NextCodeSlot;\n           PEntry^.LongerLast := NextCodeSlot;\n         end;\n\n         // add new encode table entry\n         PEntry := @CodeTable[NextCodeSlot];\n         PEntry^.Prefix := CurrentCode;\n         PEntry^.Suffix := CurValue;\n         PEntry^.LongerFirst := 0;\n         PEntry^.LongerLast := 0;\n         PEntry^.NextWithPrefix := 0;\n         inc(NextCodeSlot);\n\n         Dec(PInput);\n         break;\n       end;\n     end;\n\n     // write the code of the longest entry found\n     WriteCode(CurrentCode);\n\n     if NextCodeSlot >= GIFCodeTableSize then\n       DoClearCode\n     else if NextCodeSlot > 1 shl CurCodeSize then\n       inc(CurCodeSize);\n   end;\n\n   WriteCode(EndStreamCode);\n   CloseBitOutput;\n   FlushByteOutput;\n\n   AStream.WriteByte(0); //GIF block terminator\n   //Writeln;\nend;\n\nfunction GIFLoadFromStream(stream: TStream; MaxImageCount: integer = maxLongint): TGIFData;\n\n  procedure DumpData;\n  var\n    Count: byte;\n  begin\n    repeat\n      Count := 0;\n      stream.Read(Count, 1);\n      stream.position := stream.position + Count;\n    until (Count = 0) or (stream.position >= stream.size);\n  end;\n\n  function ReadString: string;\n  var Count: byte;\n  begin\n    Count := 0;\n    stream.Read(Count, 1);\n    setlength(result, Count);\n    if Count > 0 then\n      stream.ReadBuffer(result[1], length(result));\n  end;\n\nvar\n  NbImages:  integer;\n\n  GIFSignature: TGIFSignature;\n  GIFScreenDescriptor: TGIFScreenDescriptor;\n  GIFBlockID:   char;\n  GIFImageDescriptor: TGIFImageDescriptor;\n\n  globalPalette: ArrayOfTBGRAPixel;\n  localPalette:  ArrayOfTBGRAPixel;\n\n  transcolorIndex: integer;\n  DelayMs: integer;\n  disposeMode: TDisposeMode;\n\n  procedure LoadGlobalPalette;\n  var\n    NbEntries, i: integer;\n    rgb: TPackedRGBTriple;\n  begin\n    NbEntries := 1 shl (GIFScreenDescriptor.flags and $07 + 1);\n    setlength(globalPalette, NbEntries);\n    for i := 0 to NbEntries - 1 do\n    begin\n      stream.ReadBuffer({%H-}rgb, 3);\n      globalPalette[i] := PackedRgbTribleToBGRA(rgb);\n    end;\n  end;\n\n  procedure LoadLocalPalette;\n  var\n    NbEntries, i: integer;\n    rgb: TPackedRGBTriple;\n  begin\n    NbEntries := 1 shl (GIFImageDescriptor.flags and $07 + 1);\n    setlength(localPalette, NbEntries);\n    for i := 0 to NbEntries - 1 do\n    begin\n      stream.ReadBuffer({%H-}rgb, 3);\n      localPalette[i] := PackedRgbTribleToBGRA(rgb);\n    end;\n  end;\n\n  procedure LoadImage;\n  var\n    imgWidth, imgHeight: integer;\n    img:     TBGRABitmap;\n    Interlaced: boolean;\n    palette: ArrayOfTBGRAPixel;\n  begin\n    stream.Read(GIFImageDescriptor, sizeof(GIFImageDescriptor));\n    GIFImageDescriptor.Width := LEtoN(GIFImageDescriptor.Width);\n    GIFImageDescriptor.Height := LEtoN(GIFImageDescriptor.Height);\n    GIFImageDescriptor.x := LEtoN(GIFImageDescriptor.x);\n    GIFImageDescriptor.y := LEtoN(GIFImageDescriptor.y);\n    if (GIFImageDescriptor.flags and GIFImageDescriptor_LocalColorTableFlag =\n      GIFImageDescriptor_LocalColorTableFlag) then\n      LoadLocalPalette\n    else\n      localPalette := nil;\n\n    if localPalette <> nil then\n      palette := localPalette\n    else\n      palette := globalPalette;\n    imgWidth := GIFImageDescriptor.Width;\n    imgHeight := GIFImageDescriptor.Height;\n\n    if length(result.Images) <= NbImages then\n      setlength(result.Images, length(result.Images) * 2 + 1);\n    img := TBGRABitmap.Create(imgWidth, imgHeight);\n    img.Fill(BGRAPixelTransparent);\n    result.Images[NbImages].Image    := img;\n    result.Images[NbImages].Position := point(GIFImageDescriptor.x, GIFImageDescriptor.y);\n    result.Images[NbImages].DelayMs    := DelayMs;\n    result.Images[NbImages].DisposeMode := disposeMode;\n    result.Images[NbImages].HasLocalPalette := localPalette <> nil;\n    result.Images[NbImages].DrawMode:= dmSetExceptTransparent;\n    Inc(NbImages);\n\n    Interlaced := GIFImageDescriptor.flags and GIFImageDescriptor_InterlacedFlag =\n      GIFImageDescriptor_InterlacedFlag;\n    GIFDecodeLZW(stream, img, palette, transcolorIndex, Interlaced);\n  end;\n\n  procedure ReadExtension;\n  var\n    GIFExtensionBlock: TGIFExtensionBlock;\n    GIFGraphicControlExtension: TGIFGraphicControlExtension;\n    mincount, Count, SubBlockId:   byte;\n    app: String;\n\n  begin\n    stream.ReadBuffer({%H-}GIFExtensionBlock, sizeof(GIFExtensionBlock));\n    case GIFExtensionBlock.FunctionCode of\n      $F9: //graphic control extension\n      begin\n        Count := 0;\n        stream.Read(Count, 1);\n        if Count < sizeof(GIFGraphicControlExtension) then\n          mincount := 0\n        else\n        begin\n          mincount := sizeof(GIFGraphicControlExtension);\n          stream.ReadBuffer({%H-}GIFGraphicControlExtension, mincount);\n          GIFGraphicControlExtension.DelayHundredthSec := LEtoN(GIFGraphicControlExtension.DelayHundredthSec);\n\n          if GIFGraphicControlExtension.flags and\n            GIFGraphicControlExtension_TransparentFlag =\n            GIFGraphicControlExtension_TransparentFlag then\n            transcolorIndex := GIFGraphicControlExtension.TransparentColorIndex\n          else\n            transcolorIndex := -1;\n          if GIFGraphicControlExtension.DelayHundredthSec <> 0 then\n            DelayMs     := GIFGraphicControlExtension.DelayHundredthSec * 10;\n          DisposeMode := TDisposeMode((GIFGraphicControlExtension.flags shr GIFGraphicControlExtension_DisposeModeShift) and 7);\n        end;\n        stream.Position := Stream.Position + Count - mincount;\n        DumpData;\n      end;\n      $ff: //application extension\n      begin\n        app := ReadString;\n        if app <> '' then\n        begin\n          if app = NetscapeApplicationIdentifier then\n          begin\n            repeat\n              Count := 0;\n              stream.Read(Count,1);\n              if Count = 0 then break;\n              stream.ReadBuffer({%H-}SubBlockId,1);\n              Dec(Count);\n              if (SubBlockId = NetscapeSubBlockIdLoopCount) and (Count >= 2) then\n              begin\n                stream.ReadBuffer(result.LoopCount, 2);\n                dec(Count,2);\n                result.LoopCount := LEtoN(result.LoopCount);\n                if result.LoopCount > 0 then inc(result.LoopCount);\n              end;\n              stream.Position:= stream.Position+Count;\n            until false;\n          end else\n            DumpData;\n        end;\n      end\n      else\n      begin\n        DumpData;\n      end;\n    end;\n  end;\n\n  procedure DiscardImages;\n  var\n    i: Integer;\n  begin\n    for i := 0 to NbImages-1 do\n      FreeAndNil(result.Images[i].Image);\n    NbImages:= 0;\n  end;\n\nbegin\n  result.Width := 0;\n  result.Height := 0;\n  result.BackgroundColor := clNone;\n  result.Images := nil;\n  result.AspectRatio := 1;\n  result.LoopCount := 1;\n  if stream = nil then exit;\n\n  NbImages  := 0;\n  transcolorIndex := -1;\n  DelayMs     := 100;\n  disposeMode := dmErase;\n\n  try\n    FillChar({%H-}GIFSignature,sizeof(GIFSignature),0);\n    stream.Read(GIFSignature, sizeof(GIFSignature));\n    if (GIFSignature[1] = 'G') and (GIFSignature[2] = 'I') and (GIFSignature[3] = 'F') then\n    begin\n      stream.ReadBuffer({%H-}GIFScreenDescriptor, sizeof(GIFScreenDescriptor));\n      GIFScreenDescriptor.Width := LEtoN(GIFScreenDescriptor.Width);\n      GIFScreenDescriptor.Height := LEtoN(GIFScreenDescriptor.Height);\n      result.Width  := GIFScreenDescriptor.Width;\n      result.Height := GIFScreenDescriptor.Height;\n      if GIFScreenDescriptor.AspectRatio64 = 0 then\n        result.AspectRatio:= 1\n      else\n        result.AspectRatio:= (GIFScreenDescriptor.AspectRatio64+15)/64;\n      if (GIFScreenDescriptor.flags and GIFScreenDescriptor_GlobalColorTableFlag =\n        GIFScreenDescriptor_GlobalColorTableFlag) then\n      begin\n        LoadGlobalPalette;\n        if GIFScreenDescriptor.BackgroundColorIndex < length(globalPalette) then\n          result.BackgroundColor :=\n            BGRAToColor(globalPalette[GIFScreenDescriptor.BackgroundColorIndex]);\n      end;\n      repeat\n        stream.ReadBuffer({%H-}GIFBlockID, sizeof(GIFBlockID));\n        case GIFBlockID of\n          ';': ;\n          ',': begin\n                 if NbImages >= MaxImageCount then break;\n                 LoadImage;\n               end;\n          '!': ReadExtension;\n          else\n          begin\n            raise Exception.Create('GIF format: unexpected block type');\n            break;\n          end;\n        end;\n      until (GIFBlockID = ';') or (stream.Position >= stream.size);\n    end\n    else\n      raise Exception.Create('GIF format: invalid header');\n  except\n    on ex: Exception do\n    begin\n      DiscardImages;\n      raise Exception.Create('GIF format: '+ ex.Message);\n    end;\n  end;\n  setlength(result.Images, NbImages);\nend;\n\ntype\n  { Image descriptor with introducer }\n  TGIFImageDescriptorWithHeader = packed record\n    ImageIntroducer: byte;\n    Image: TGIFImageDescriptor;\n  end;\n\n  { GIF graphic control extension with its header }\n  TGIFGraphicControlExtensionWithHeader = packed record\n    ExtensionIntroducer: byte;\n    FunctionCode: byte;\n    BlockSize: byte;\n    GraphicControl: TGIFGraphicControlExtension;\n    BlockTerminator: byte;\n  end;\n\nprocedure GIFSaveToStream(AData: TGifData; Stream: TStream; AQuantizerFactory: TBGRAColorQuantizerAny;\n          ADitheringAlgorithm: TDitheringAlgorithm);\nvar\n  signature: TGIFSignature;\n  screenDescriptor: TGIFScreenDescriptor;\n  globalPalette: TBGRAPalette;\n  globalQuantizer: TBGRACustomColorQuantizer;\n  globalTranspIndex: integer;\n\n  procedure AddColorsToPalette(AImage: TBGRACustomBitmap; APalette: TBGRAPalette);\n  var n: integer;\n    p: PBGRAPixel;\n    c: TBGRAPixel;\n  begin\n    p := AImage.Data;\n    for n := AImage.NbPixels-1 downto 0 do\n    begin\n      if p^.alpha < 255 then //transparent color will be needed to dither properly\n        APalette.AddColor(BGRAPixelTransparent);\n      if p^.alpha > 0 then //color may be needed to dither properly\n      begin\n        c := p^;\n        c.alpha := 255;\n        APalette.AddColor(c);\n      end;\n      inc(p);\n    end;\n  end;\n\n  function ImageCount: integer;\n  begin\n    result := length(AData.Images);\n  end;\n\n  function NeedGlobalPalette: boolean;\n  var i: integer;\n  begin\n    for i := 0 to ImageCount-1 do\n      if not AData.Images[i].HasLocalPalette then\n      begin\n        result := true;\n        exit;\n      end;\n    result := false;\n  end;\n\n  function IndexOfGlobalColor(AColor: TBGRAPixel): integer;\n  begin\n    if Assigned(globalQuantizer) then\n      result := globalQuantizer.ReducedPalette.FindNearestColorIndex(AColor)\n    else\n      result := globalPalette.IndexOfColor(AColor);\n  end;\n\n  procedure MakeGlobalPalette;\n  var i: integer;\n    indexed: TBGRAIndexedPalette;\n    bitDepth: integer;\n  begin\n    globalPalette := TBGRAPalette.Create;\n    for i := 0 to ImageCount-1 do\n      if not AData.Images[i].HasLocalPalette then\n        AddColorsToPalette(AData.Images[i].Image, globalPalette);\n    if AData.BackgroundColor <> clNone then\n      globalPalette.AddColor(ColorToBGRA(AData.BackgroundColor));\n\n    if globalPalette.Count > 256 then\n    begin\n      if Assigned(AQuantizerFactory) then\n      begin\n        globalQuantizer:= AQuantizerFactory.Create(globalPalette, False, 256);\n        globalPalette.Free;\n        globalPalette := TBGRAIndexedPalette.Create(globalQuantizer.ReducedPalette);\n      end\n      else\n      begin\n        globalPalette.Free;\n        raise EColorQuantizerMissing.Create;\n      end;\n    end else\n    begin\n      indexed := TBGRAIndexedPalette.Create(globalPalette);\n      globalPalette.Free;\n      globalPalette := indexed;\n    end;\n\n    globalTranspIndex:= globalPalette.IndexOfColor(BGRAPixelTransparent);\n    if AData.BackgroundColor <> clNone then\n      screenDescriptor.BackgroundColorIndex:= IndexOfGlobalColor(ColorToBGRA(AData.BackgroundColor)) and 255;\n\n    bitDepth := CeilLn2(globalPalette.Count);\n    if bitDepth > 8 then bitDepth:= 8;\n    if bitDepth < 1 then bitDepth:= 1;\n    screenDescriptor.flags := screenDescriptor.flags or GIFScreenDescriptor_GlobalColorTableFlag;\n    screenDescriptor.flags := screenDescriptor.flags or (bitDepth-1);\n  end;\n\n  procedure WritePalette(pal: TBGRAPalette; bitDepth: integer);\n  var i: integer;\n    numberToWrite,numberFromPal: Integer;\n    rgbs: ^TPackedRGBTriple;\n    black: TPackedRGBTriple;\n  begin\n    if not Assigned(pal) then exit;\n    numberToWrite:= 1 shl bitDepth;\n    numberFromPal := pal.Count;\n    if numberFromPal > numberToWrite then numberFromPal:= numberToWrite;\n    getmem(rgbs, numberToWrite*sizeof(TPackedRGBTriple));\n    try\n      for i := 0 to numberFromPal-1 do\n        rgbs[i] := BGRAToPackedRgbTriple(pal.Color[i]);\n      black := BGRAToPackedRgbTriple(BGRABlack);\n      for i := numberFromPal to numberToWrite-1 do\n        rgbs[i] := black;\n      Stream.WriteBuffer(rgbs^,sizeof(TPackedRGBTriple)*numberToWrite);\n    finally\n      freemem(rgbs);\n    end;\n  end;\n\n  procedure WriteGlobalPalette;\n  begin\n    WritePalette(globalPalette, (screenDescriptor.flags and 7)+1);\n  end;\n\n  procedure FreeGlobalPalette;\n  begin\n    FreeAndNil(globalPalette);\n    FreeAndNil(globalQuantizer);\n  end;\n\n  procedure WriteImages;\n  var\n    localPalette: TBGRAPalette;\n    localQuantizer: TBGRACustomColorQuantizer;\n    localTranspIndex: integer;\n    imageDescriptor: TGIFImageDescriptorWithHeader;\n\n    procedure MakeLocalPalette(AFrameIndex: integer);\n    var\n      indexed: TBGRAIndexedPalette;\n      bitDepth: integer;\n    begin\n      localPalette := TBGRAPalette.Create;\n      AddColorsToPalette(AData.Images[AFrameIndex].Image, localPalette);\n      if localPalette.Count > 256 then\n      begin\n        if Assigned(AQuantizerFactory) then\n        begin\n          localQuantizer:= AQuantizerFactory.Create(localPalette, False, 256);\n          localPalette.Free;\n          localPalette := TBGRAIndexedPalette.Create(localQuantizer.ReducedPalette);\n        end\n        else\n        begin\n          localPalette.Free;\n          raise EColorQuantizerMissing.Create;\n        end;\n      end else\n      begin\n        indexed := TBGRAIndexedPalette.Create(localPalette);\n        localPalette.Free;\n        localPalette := indexed;\n      end;\n\n      localTranspIndex:= localPalette.IndexOfColor(BGRAPixelTransparent);\n\n      bitDepth := CeilLn2(localPalette.Count);\n      if bitDepth > 8 then bitDepth:= 8;\n      if bitDepth < 1 then bitDepth:= 1;\n      imageDescriptor.Image.flags := imageDescriptor.Image.flags or GIFImageDescriptor_LocalColorTableFlag;\n      imageDescriptor.Image.flags := imageDescriptor.Image.flags or (bitDepth-1);\n    end;\n\n    procedure WriteLocalPalette;\n    begin\n      WritePalette(localPalette, (imageDescriptor.Image.flags and 7)+1);\n    end;\n\n    procedure FreeLocalPalette;\n    begin\n      FreeAndNil(localPalette);\n      FreeAndNil(localQuantizer);\n      localTranspIndex:= -1;\n    end;\n\n    procedure DitherAndCompressImage(AFrame: integer; APalette: TBGRAPalette; AQuantizer: TBGRACustomColorQuantizer);\n    var ImageData: Pointer;\n      Image: TBGRABitmap;\n      y,x: Int32or64;\n      psource: PBGRAPixel;\n      pdest: PByte;\n    begin\n      Image := AData.Images[AFrame].Image;\n      if Assigned(AQuantizer) then\n        ImageData := AQuantizer.GetDitheredBitmapIndexedData(8, ADitheringAlgorithm, Image)\n      else\n      begin\n        GetMem(ImageData, Image.Width*Image.Height);\n        pdest := ImageData;\n        for y := 0 to Image.Height -1 do\n        begin\n          psource := Image.ScanLine[y];\n          for x := 0 to Image.Width -1 do\n          begin\n            if psource^.alpha < 128 then\n              pdest^ := APalette.IndexOfColor(BGRAPixelTransparent)\n            else\n              pdest^ := APalette.IndexOfColor(BGRA(psource^.red,psource^.green,psource^.blue,255));\n            inc(psource);\n            inc(pdest);\n          end;\n        end;\n      end;\n      try\n        GIFEncodeLZW(Stream, ImageData, Image.Width, Image.Height, CeilLn2(APalette.Count));\n      finally\n        FreeMem(ImageData);\n      end;\n    end;\n\n    procedure WriteImage(AFrame: integer);\n    var\n      ext: TGIFGraphicControlExtensionWithHeader;\n      transpIndex: integer;\n      disposeMode: TDisposeMode;\n    begin\n      fillchar({%H-}ext, sizeof(ext), 0);\n      try\n        ext.ExtensionIntroducer := GIFExtensionIntroducer;\n        ext.FunctionCode := GIFGraphicControlExtension_FunctionCode;\n        ext.BlockSize := sizeof(ext.GraphicControl);\n        ext.GraphicControl.DelayHundredthSec := (AData.Images[AFrame].DelayMs+5) div 10;\n        ext.GraphicControl.TransparentColorIndex := 0;\n        disposeMode := AData.Images[AFrame].DisposeMode;\n        if disposeMode = dmEraseArea then disposeMode := dmErase;\n        ext.GraphicControl.flags := integer(AData.Images[AFrame].DisposeMode) shl GIFGraphicControlExtension_DisposeModeShift;\n        ext.BlockTerminator := GIFBlockTerminator;\n        with AData.Images[AFrame].Position do\n        begin\n          imageDescriptor.Image.x := x;\n          imageDescriptor.Image.y := y;\n        end;\n        with AData.Images[AFrame].Image do\n        begin\n          imageDescriptor.Image.Width := Width;\n          imageDescriptor.Image.Height := Height;\n        end;\n        imageDescriptor.Image.flags := 0;\n\n        if AData.Images[AFrame].HasLocalPalette then MakeLocalPalette(AFrame);\n\n        if AData.Images[AFrame].Image.HasTransparentPixels then\n        begin\n          if AData.Images[AFrame].HasLocalPalette then\n            transpIndex := localTranspIndex\n          else\n            transpIndex := globalTranspIndex;\n        end else\n          transpIndex := -1;\n        if (transpIndex >= 0) and (transpIndex <= 255) then\n        begin\n          ext.GraphicControl.flags := ext.GraphicControl.flags or GIFGraphicControlExtension_TransparentFlag;\n          ext.GraphicControl.TransparentColorIndex := transpIndex;\n        end;\n\n        Stream.WriteBuffer(ext, sizeof(ext));\n        Stream.WriteBuffer(imageDescriptor, sizeof(imageDescriptor));\n        WriteLocalPalette;\n\n        if AData.Images[AFrame].HasLocalPalette then\n          DitherAndCompressImage(AFrame, localPalette, localQuantizer)\n        else\n          DitherAndCompressImage(AFrame, globalPalette, globalQuantizer);\n      finally\n        FreeLocalPalette;\n      end;\n    end;\n\n  var\n    i: integer;\n  begin\n    localPalette := nil;\n    localQuantizer := nil;\n    localTranspIndex:= -1;\n    fillchar({%H-}imageDescriptor, sizeof(imageDescriptor), 0);\n    imageDescriptor.ImageIntroducer := GIFImageIntroducer;\n    for i := 0 to ImageCount-1 do\n      WriteImage(i);\n  end;\n\n  procedure WriteLoopExtension;\n  var\n    app: shortstring;\n    w: Word;\n  begin\n    if AData.LoopCount = 1 then exit;\n\n    Stream.WriteByte(GIFExtensionIntroducer);\n    Stream.WriteByte($ff);\n    app := NetscapeApplicationIdentifier;\n    Stream.WriteBuffer(app[0], length(app)+1);\n\n    Stream.WriteByte(3);\n    Stream.WriteByte(NetscapeSubBlockIdLoopCount);\n    if AData.LoopCount = 0 then\n      w := 0\n    else\n      w := AData.LoopCount-1;\n    w := NtoLE(w);\n    Stream.WriteWord(w);\n\n    Stream.WriteByte(0);\n  end;\n\nbegin\n  globalPalette := nil;\n  globalQuantizer := nil;\n  globalTranspIndex:= -1;\n  try\n    signature := 'GIF89a';\n    screenDescriptor.Width := NtoLE(AData.Width);\n    screenDescriptor.Height := NtoLE(AData.Height);\n    screenDescriptor.flags := $70;               //suppose 8-bit screen\n    screenDescriptor.BackgroundColorIndex := 0;  //not specified for now\n    screenDescriptor.AspectRatio64 := round(AData.AspectRatio*64)-15;\n    if NeedGlobalPalette then MakeGlobalPalette;\n\n    Stream.WriteBuffer(signature, sizeof(signature));\n    Stream.WriteBuffer(screenDescriptor, sizeof(screenDescriptor));\n    WriteGlobalPalette;\n\n    WriteLoopExtension;\n\n    WriteImages;\n    Stream.WriteByte(GIFFileTerminator); //end of file\n\n  finally\n    FreeGlobalPalette;\n  end;\nend;\n\n{ EColorQuantizerMissing }\n\nconstructor EColorQuantizerMissing.Create;\nbegin\n  inherited Create('Please provide a color quantizer class (one is provided in BGRAColorQuantization)')\nend;\n\nconstructor EColorQuantizerMissing.Create(AMessage: string);\nbegin\n  inherited Create(AMessage);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgragradientoriginal.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Original that renders a gradient. Originals can be used in a layered image }\nunit BGRAGradientOriginal;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALayerOriginal, BGRABitmap, BGRABitmapTypes, BGRAGradientScanner,\n  BGRASVG, BGRASVGShapes, BGRASVGType;\n\ntype\n  TBGRAColorInterpolation = BGRAGradientScanner.TBGRAColorInterpolation;\n  TBGRAGradientRepetition = BGRAGradientScanner.TBGRAGradientRepetition;\n  TBGRAGradientOriginalDiff = BGRALayerOriginal.TBGRAOriginalStorageDiff;\n\n  { Original for rendering a gradient }\n  TBGRALayerGradientOriginal = class(TBGRALayerCustomOriginal)\n  private\n    function GetColorByIndex(AIndex: integer): TBGRAPixel;\n    function GetColorCount: integer;\n    function GetColorPositionByIndex(AIndex: integer): single;\n    function GetEndColor: TBGRAPixel;\n    function GetIsOpaque: boolean;\n    function GetStartColor: TBGRAPixel;\n    procedure SetColorByIndex(AIndex: integer; AValue: TBGRAPixel);\n    procedure SetColorCount(AValue: integer);\n    procedure SetColorInterpolation(AValue: TBGRAColorInterpolation);\n    procedure SetColorPositionByIndex(AIndex: integer; AValue: single);\n    procedure SetEndColor(AValue: TBGRAPixel);\n    procedure SetFocalPoint(AValue: TPointF);\n    procedure SetFocalRadius(AValue: Single);\n    procedure SetGradientType(AValue: TGradientType);\n    procedure SetOrigin(AValue: TPointF);\n    procedure SetRadius(AValue: Single);\n    procedure SetRepetition(AValue: TBGRAGradientRepetition);\n    procedure SetStartColor(AValue: TBGRAPixel);\n    procedure SetXAxis(AValue: TPointF);\n    procedure SetYAxis(AValue: TPointF);\n  protected\n    FColors: array of TBGRAPixel;\n    FColorPositions: array of single;\n    FGradientType: TGradientType;\n    FOrigin,FXAxis,FYAxis,FFocalPoint: TPointF;\n    FOriginBackup,FXAxisBackup, FYAxisBackup: TPointF;\n    FRadius,FFocalRadius: single;\n    FColorInterpolation: TBGRAColorInterpolation;\n    FRepetition: TBGRAGradientRepetition;\n    FUpdateCount: integer;\n    FUpdateDiff: TBGRAGradientOriginalDiff;\n    function GetAverageColor: TBGRAPixel;\n    function GetComputedRadius: single;\n    function GetComputedYAxis: TPointF;\n    function GetComputedFocalPoint: TPointF;\n    function GetComputedFocalRadius: single;\n    procedure OnMoveOrigin({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnMoveXAxis({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnMoveXAxisNeg({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnMoveYAxis({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnMoveFocalPoint({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnMoveFocalRadius({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; {%H-}AShift: TShiftState);\n    procedure OnStartMove({%H-}ASender: TObject; {%H-}AIndex: integer; {%H-}AShift: TShiftState);\n    procedure BeginUpdate;\n    procedure EndUpdate;\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n    function ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TObject; override;\n    function AddToSVGDefs(const AMatrix: TAffineMatrix; ADefs: TSVGDefine): TObject;\n    function IsInfiniteSurface: boolean; override;\n    procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); overload; override;\n    procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean; ADrawMode: TDrawMode); overload;\n    function CreateScanner(AMatrix: TAffineMatrix; ADraft: boolean = false): TBGRACustomScanner;\n    procedure ConfigureEditor(AEditor: TBGRAOriginalEditor); override;\n    function GetRenderBounds(ADestRect: TRect; {%H-}AMatrix: TAffineMatrix): TRect; override;\n    procedure LoadFromStorage(AStorage: TBGRACustomOriginalStorage); override;\n    procedure SaveToStorage(AStorage: TBGRACustomOriginalStorage); override;\n    class function StorageClassName: RawByteString; override;\n    class function CanConvertToSVG: boolean; override;\n    property ComputedYAxis: TPointF read GetComputedYAxis;\n    property ComputedRadius: single read GetComputedRadius;\n    property ComputedFocalPoint: TPointF read GetComputedFocalPoint;\n    property ComputedFocalRadius: single read GetComputedFocalRadius;\n    procedure Transform(AMatrix: TAffineMatrix);\n    procedure AssignExceptGeometry(AOther: TBGRALayerGradientOriginal);\n    procedure FitGeometry(const ABox: TAffineBox);\n    procedure SetColors(AStartColor, AEndColor: TBGRAPixel);\n    procedure SetColors(const AColors: array of TBGRAPixel; ASpreadColorsEqually: boolean = true);\n    procedure SetColors(const AColors: array of TBGRAPixel; const APositions: Array of single);\n    procedure AddColor(AColor: TBGRAPixel; APreviousColorPosition: single = EmptySingle);\n    procedure ApplyOpacity(AOpacity: byte);\n    function Equals(Obj: TObject): boolean; override;\n\n    property StartColor: TBGRAPixel read GetStartColor write SetStartColor;\n    property EndColor: TBGRAPixel read GetEndColor write SetEndColor;\n    property Color[AIndex: integer]: TBGRAPixel read GetColorByIndex write SetColorByIndex;\n    property ColorPosition[AIndex: integer]: single read GetColorPositionByIndex write SetColorPositionByIndex;\n    property ColorCount: integer read GetColorCount write SetColorCount;\n    property AverageColor: TBGRAPixel read GetAverageColor;\n    property GradientType: TGradientType read FGradientType write SetGradientType;   //default gtLinear\n    property Origin: TPointF read FOrigin write SetOrigin;\n    property XAxis: TPointF read FXAxis write SetXAxis;\n    property YAxis: TPointF read FYAxis write SetYAxis;\n    property FocalPoint: TPointF read FFocalPoint write SetFocalPoint;     //default Origin\n    property Radius: Single read FRadius write SetRadius;                  //default 1\n    property FocalRadius: Single read FFocalRadius write SetFocalRadius;   //default 0\n    property ColorInterpolation: TBGRAColorInterpolation read FColorInterpolation write SetColorInterpolation;\n    property Repetition: TBGRAGradientRepetition read FRepetition write SetRepetition;\n    property IsOpaque: boolean read GetIsOpaque;\n\n  end;\n\nimplementation\n\nuses BGRATransform, BGRABlend, math;\n\n{ TBGRALayerGradientOriginal }\n\nfunction TBGRALayerGradientOriginal.GetComputedRadius: single;\nbegin\n  if FRadius = EmptySingle then result := 1 else result := FRadius;\nend;\n\nfunction TBGRALayerGradientOriginal.GetAverageColor: TBGRAPixel;\nbegin\n  result := MergeBGRAWithGammaCorrection(StartColor, 1, EndColor, 1);\nend;\n\nfunction TBGRALayerGradientOriginal.GetColorByIndex(AIndex: integer\n  ): TBGRAPixel;\nbegin\n  if (AIndex < 0) or (AIndex >= ColorCount) then\n     raise ERangeError.Create('Index out of range');\n  result := FColors[AIndex];\nend;\n\nfunction TBGRALayerGradientOriginal.GetColorCount: integer;\nbegin\n  result := length(FColors);\nend;\n\nfunction TBGRALayerGradientOriginal.GetColorPositionByIndex(AIndex: integer\n  ): single;\nbegin\n  if (AIndex < 0) or (AIndex >= ColorCount) then\n     raise ERangeError.Create('Index out of range');\n  result := FColorPositions[AIndex];\nend;\n\nfunction TBGRALayerGradientOriginal.GetEndColor: TBGRAPixel;\nbegin\n  result := FColors[high(FColors)];\nend;\n\nfunction TBGRALayerGradientOriginal.GetIsOpaque: boolean;\nvar\n  xLen, yLen, focalLen: Single;\n  focalCoord, u, v: TPointF;\nbegin\n  result := (StartColor.alpha = 255) and (EndColor.alpha = 255);\n  if result and (GradientType = gtRadial) and not FocalPoint.IsEmpty and\n    not Origin.IsEmpty and not XAxis.IsEmpty then\n  begin\n    u := XAxis - Origin;\n    v := ComputedYAxis - Origin;\n    xLen := VectLen(u);\n    yLen := VectLen(v);\n    if (xLen = 0) or (yLen = 0) then\n      result := false\n    else\n    begin\n      focalCoord := PointF((FocalPoint - Origin)**u/sqr(xLen),\n                           (FocalPoint - Origin)**v/sqr(yLen));\n      focalLen := VectLen(focalCoord);\n      if (focalLen + ComputedFocalRadius + 0.01 >= ComputedRadius) and not\n        (ComputedFocalRadius > focalLen + ComputedRadius + 0.01) then\n        result := false;\n    end;\n  end;\nend;\n\nfunction TBGRALayerGradientOriginal.GetStartColor: TBGRAPixel;\nbegin\n  result := FColors[0];\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColorByIndex(AIndex: integer;\n  AValue: TBGRAPixel);\nbegin\n  if (AIndex < 0) or (AIndex >= ColorCount) then\n     raise ERangeError.Create('Index out of range');\n  BeginUpdate;\n  FColors[AIndex] := AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColorCount(AValue: integer);\nvar\n  prevCount, i: Integer;\nbegin\n  if AValue < 2 then\n    raise ERangeError.Create('There must be at least 2 colors');\n  if AValue = ColorCount then exit;\n  prevCount := ColorCount;\n  BeginUpdate;\n  setlength(FColors, AValue);\n  setlength(FColorPositions, AValue);\n  if AValue > prevCount then\n  begin\n    for i := prevCount to AValue - 1 do\n    begin\n      FColors[i] := FColors[prevCount - 1];\n      FColorPositions[i] := FColorPositions[prevCount - 1];\n    end;\n  end else\n  if AValue < prevCount then\n  begin\n    FColorPositions[AValue-1] := 1;\n  end;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColorInterpolation(\n  AValue: TBGRAColorInterpolation);\nbegin\n  if FColorInterpolation=AValue then Exit;\n  BeginUpdate;\n  FColorInterpolation:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColorPositionByIndex(AIndex: integer;\n  AValue: single);\nbegin\n  if (AIndex < 0) or (AIndex >= ColorCount) then\n     raise ERangeError.Create('Index out of range');\n  if (AIndex = 0) and (AValue <> 0) then\n     raise ERangeError.Create('First position must be 0');\n  if (AIndex = ColorCount-1) and (AValue <> 1) then\n     raise ERangeError.Create('Last position must be 1');\n  BeginUpdate;\n  FColorPositions[AIndex] := AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetEndColor(AValue: TBGRAPixel);\nbegin\n  if EndColor.EqualsExactly(AValue) then Exit;\n  BeginUpdate;\n  FColors[high(FColors)]:= AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetFocalPoint(AValue: TPointF);\nbegin\n  if FFocalPoint=AValue then Exit;\n  BeginUpdate;\n  FFocalPoint:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetFocalRadius(AValue: Single);\nbegin\n  if FFocalRadius=AValue then Exit;\n  BeginUpdate;\n  FFocalRadius:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetGradientType(AValue: TGradientType);\nbegin\n  if FGradientType=AValue then Exit;\n  BeginUpdate;\n  FGradientType:=AValue;\n  if FGradientType in [gtLinear,gtReflected] then FYAxis := EmptyPointF;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetOrigin(AValue: TPointF);\nbegin\n  if FOrigin=AValue then Exit;\n  BeginUpdate;\n  FOrigin:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetRadius(AValue: Single);\nbegin\n  if FRadius=AValue then Exit;\n  BeginUpdate;\n  FRadius:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetRepetition(\n  AValue: TBGRAGradientRepetition);\nbegin\n  if FRepetition=AValue then Exit;\n  BeginUpdate;\n  FRepetition:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetStartColor(AValue: TBGRAPixel);\nbegin\n  if StartColor.EqualsExactly(AValue) then Exit;\n  BeginUpdate;\n  FColors[0]:= AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetXAxis(AValue: TPointF);\nbegin\n  if FXAxis=AValue then Exit;\n  BeginUpdate;\n  FXAxis:=AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetYAxis(AValue: TPointF);\nbegin\n  if FYAxis=AValue then Exit;\n  BeginUpdate;\n  FYAxis:=AValue;\n  EndUpdate;\nend;\n\nfunction TBGRALayerGradientOriginal.GetComputedYAxis: TPointF;\nvar\n  u: TPointF;\nbegin\n  if isEmptyPointF(FYAxis) then\n  begin\n    u := FXAxis - FOrigin;\n    result := FOrigin + PointF(-u.y,u.x)\n  end\n  else\n    result := FYAxis;\nend;\n\nfunction TBGRALayerGradientOriginal.GetComputedFocalPoint: TPointF;\nbegin\n  if isEmptyPointF(FFocalPoint) then result := FOrigin else result := FFocalPoint;\nend;\n\nfunction TBGRALayerGradientOriginal.GetComputedFocalRadius: single;\nbegin\n  if FFocalRadius = EmptySingle then result := 0 else result := FFocalRadius;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveOrigin(ASender: TObject; APrevCoord,\n  ANewCoord: TPointF; AShift: TShiftState);\nvar\n  delta: TPointF;\nbegin\n  BeginUpdate;\n  delta := ANewCoord-APrevCoord;\n  FOrigin.Offset(delta);\n  FXAxis.Offset(delta);\n  FYAxis.Offset(delta);\n  FFocalPoint.Offset(delta);\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveXAxis(ASender: TObject; APrevCoord,\n  ANewCoord: TPointF; AShift: TShiftState);\nvar\n  m: TAffineMatrix;\n  c: TPointF;\nbegin\n  BeginUpdate;\n  if not (ssAlt in AShift) or (GradientType in [gtLinear,gtReflected]) then\n  begin\n    if not isEmptyPointF(FYAxis) and not isEmptyPointF(FYAxisBackup) then\n    begin\n      m := AffineMatrixScaledRotation(FXAxisBackup, ANewCoord, FOrigin);\n      FYAxis := m*FYAxisBackup;\n    end;\n  end else\n    if isEmptyPointF(FYAxis) then FYAxis := ComputedYAxis;\n\n  if (GradientType = gtLinear) and (ssShift in AShift) then\n  begin\n    c := (FOriginBackup+FXAxisBackup)*0.5;\n    m := AffineMatrixScaledRotation(FXAxisBackup, ANewCoord, c);\n    FOrigin := m*FOriginBackup;\n  end\n  else\n    FOrigin := FOriginBackup;\n\n  FXAxis := ANewCoord;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveXAxisNeg(ASender: TObject;\n  APrevCoord, ANewCoord: TPointF; AShift: TShiftState);\nvar\n  delta, c: TPointF;\n  m: TAffineMatrix;\nbegin\n  BeginUpdate;\n  delta := ANewCoord-APrevCoord;\n\n  if (GradientType = gtLinear) and (ssShift in AShift) then\n  begin\n    c := (FOriginBackup+FXAxisBackup)*0.5;\n    m := AffineMatrixScaledRotation(FOriginBackup, (FOrigin+delta), c);\n    FXAxis := m*FXAxisBackup;\n  end\n  else\n    FXAxis := FXAxisBackup;\n\n  FOrigin.Offset(delta);\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveYAxis(ASender: TObject; APrevCoord,\n  ANewCoord: TPointF; AShift: TShiftState);\nvar\n  m: TAffineMatrix;\nbegin\n  BeginUpdate;\n  if not (ssAlt in AShift) or (GradientType in [gtLinear,gtReflected]) then\n  begin\n    if not isEmptyPointF(FXAxis) then\n    begin\n      m := AffineMatrixScaledRotation(FYAxisBackup, ANewCoord, FOrigin);\n      FXAxis := m*FXAxisBackup;\n    end;\n  end;\n  FYAxis := ANewCoord;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveFocalPoint(ASender: TObject;\n  APrevCoord, ANewCoord: TPointF; AShift: TShiftState);\nbegin\n  FocalPoint := ANewCoord;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnMoveFocalRadius(ASender: TObject;\n  APrevCoord, ANewCoord: TPointF; AShift: TShiftState);\nvar refLen: single;\n  u, focalOrig: TPointF;\nbegin\n  BeginUpdate;\n  focalOrig := ComputedFocalPoint;\n  if isEmptyPointF(focalOrig) or isEmptyPointF(FOrigin) or isEmptyPointF(FXAxis) then exit;\n  refLen := VectLen(FOrigin-FXAxis);\n  if refLen = 0 then exit;\n\n  u := (FOrigin-FXAxis)*(1/refLen);\n  FFocalRadius := u ** (ANewCoord-focalOrig) / refLen - 0.1;\n  if FFocalRadius < 0 then FFocalRadius:= 0;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.OnStartMove(ASender: TObject;\n  AIndex: integer; AShift: TShiftState);\nbegin\n  FOriginBackup := FOrigin;\n  FXAxisBackup := FXAxis;\n  FYAxisBackup := ComputedYAxis;\nend;\n\nprocedure TBGRALayerGradientOriginal.BeginUpdate;\nbegin\n  if DiffExpected and (FUpdateCount = 0) then\n    FUpdateDiff := TBGRAGradientOriginalDiff.Create(self);\n  inc(FUpdateCount);\nend;\n\nprocedure TBGRALayerGradientOriginal.EndUpdate;\nbegin\n  if FUpdateCount > 0 then\n  begin\n    dec(FUpdateCount);\n    if FUpdateCount = 0 then\n    begin\n      if Assigned(FUpdateDiff) then\n        FUpdateDiff.ComputeDifference(self);\n      NotifyChange(FUpdateDiff);\n      FUpdateDiff := nil;\n    end;\n  end;\nend;\n\nconstructor TBGRALayerGradientOriginal.Create;\nbegin\n  inherited Create;\n  setLength(FColors, 2);\n  FColors[0] := BGRABlack;\n  FColors[1] := BGRAWhite;\n  setlength(FColorPositions, 2);\n  FColorPositions[0] := 0;\n  FColorPositions[1] := 1;\n  FGradientType := gtLinear;\n  FColorInterpolation:= ciStdRGB;\n  FRepetition := grPad;\n  FRadius := EmptySingle;\n  FFocalRadius := EmptySingle;\n  FFocalPoint := EmptyPointF;\n  FOrigin := PointF(0,0);\n  FXAxis := EmptyPointF;\n  FYAxis := EmptyPointF;\nend;\n\ndestructor TBGRALayerGradientOriginal.Destroy;\nbegin\n  FUpdateDiff.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRALayerGradientOriginal.ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TObject;\nvar\n  svg: TBGRASVG;\n  def: TSVGDefine;\n  grad: TSVGGradient;\n  r: TSVGRectangle;\nbegin\n  AOffset:= Point(0, 0);\n  svg := TBGRASVG.Create(640, 480, cuPixel);  // potentially infinite\n  result := svg;\n  def := svg.Content.AppendDefine;\n  grad := AddToSVGDefs(AMatrix, def) as TSVGGradient;\n  r := svg.Content.AppendRect(0, 0, 100, 100, cuPercent);\n  if Assigned(grad) then\n  begin\n    grad.ID := 'grad1';\n    r.fill:= 'url(#grad1)';\n  end else\n    r.fillColor := AverageColor;\nend;\n\nfunction TBGRALayerGradientOriginal.AddToSVGDefs(const AMatrix: TAffineMatrix;\n  ADefs: TSVGDefine): TObject;\nconst ApproxCount = 16;\n  MaxReflectRepeatCount = 8;\nvar\n  grad: TSVGGradient;\n  colors: TBGRASimpleGradient;\n  tOrigin, tXAxis, tYAxis, tFocalPoint, reflectedXAxis, repeatedXAxis: TPointF;\n  gt: TGradientType;\n\n  procedure AddColorStops(AOffset, AFactor: single; AIncludeStart: boolean);\n  var i, i0: integer;\n  begin\n    if (Repetition <> grSine) and (ColorInterpolation in [ciStdRGB, ciLinearRGB])  then\n    begin\n      if AFactor >= 0 then\n      begin\n        if AIncludeStart then\n          grad.Content.AppendStop(StartColor, AOffset, false);\n        grad.Content.AppendStop(EndColor, AOffset + AFactor*1, false);\n      end else\n      begin\n        grad.Content.AppendStop(EndColor, AOffset + AFactor*1, false);\n        if AIncludeStart then\n          grad.Content.AppendStop(StartColor, AOffset, false);\n      end;\n    end else\n    begin\n      colors := TBGRASimpleGradient.CreateAny(ColorInterpolation, StartColor,EndColor, Repetition);\n      try\n        if AIncludeStart then i0 := 0 else i0 := 1;\n        if AFactor >= 0 then\n        begin\n          for i := i0 to ApproxCount do\n            grad.Content.AppendStop(colors.GetColorAtF(i/ApproxCount), AOffset + AFactor*i/ApproxCount, false);\n        end else\n          for i := ApproxCount downto i0 do\n            grad.Content.AppendStop(colors.GetColorAtF(i/ApproxCount), AOffset + AFactor*i/ApproxCount, false);\n      finally\n        colors.Free;\n      end;\n    end;\n  end;\n\nvar j: integer;\n  m: TAffineMatrix;\n  radialScale: Single;\n  fp, u, v: TPointF;\n  lenU, lenV: Single;\n\nbegin\n  m := AffineMatrixTranslation(0.5, 0.5) * AMatrix;\n  tOrigin := m * Origin;\n  tXAxis := m * XAxis;\n  tYAxis := m * ComputedYAxis;\n  tFocalPoint := m * ComputedFocalPoint;\n  gt := GradientType;\n  if (GradientType = gtReflected) and (Repetition = grReflect) then\n    gt := gtLinear; // same as linear in this case\n  case gt of\n  gtLinear:\n    grad := ADefs.Content.AppendLinearGradient(tOrigin.X,tOrigin.Y,tXAxis.X,tXAxis.Y,cuCustom);\n  gtReflected:\n  begin\n    if Repetition <> grPad then j := MaxReflectRepeatCount else j := 1;\n    reflectedXAxis := tOrigin - j*(tXAxis - tOrigin);\n    repeatedXAxis := tOrigin + j*(tXAxis - tOrigin);\n    grad := ADefs.Content.AppendLinearGradient(reflectedXAxis.X,reflectedXAxis.Y,\n      repeatedXAxis.X,repeatedXAxis.Y,cuCustom);\n  end;\n  gtDiamond, gtRadial: // diamond approximated by radial\n    begin\n      u := tXAxis - tOrigin;\n      v := tYAxis - tOrigin;\n      lenU := u.Length;\n      lenV := v.Length;\n      radialScale := (lenU + lenV)/2;\n      if radialScale = 0 then\n        grad := ADefs.Content.AppendRadialGradient(tOrigin.X,tOrigin.Y,0,\n          tOrigin.X,tOrigin.Y,0, cuCustom)\n      else if (lenU = lenV) and (u**v = 0) then\n        grad := ADefs.Content.AppendRadialGradient(tOrigin.X,tOrigin.Y,radialScale*ComputedRadius,\n          tFocalPoint.X,tFocalPoint.Y,radialScale*ComputedFocalRadius, cuCustom)\n      else\n      begin\n        if lenU = 0 then lenU := 1;\n        if lenV = 0 then lenV := 1;\n        fp := PointF((tFocalPoint - tOrigin) ** u / sqr(lenU),\n          (tFocalPoint - tOrigin)**v / sqr(lenV));\n        tFocalPoint := tOrigin + (fp.x * radialScale / lenU) * u + (fp.y * radialScale / lenV) * v;\n        grad := ADefs.Content.AppendRadialGradient(tOrigin.X,tOrigin.Y,radialScale*ComputedRadius,\n          tFocalPoint.X,tFocalPoint.Y,radialScale*ComputedFocalRadius, cuCustom);\n        grad.gradientMatrix[cuPixel] :=\n          AffineMatrix((1 / radialScale)*u, (1 / radialScale)*v, tOrigin) *\n          AffineMatrixTranslation(-tOrigin.X, -tOrigin.Y);\n      end;\n    end;\n  gtAngular: exit(nil); // not implemented\n  else\n    raise Exception.Create('Unknown gradient type');\n  end;\n  case Repetition of\n  grPad: grad.spreadMethod := ssmPad;\n  grReflect: grad.spreadMethod := ssmReflect;\n  grRepeat, grSine: grad.spreadMethod := ssmRepeat;\n  end;\n  if gt = gtReflected then\n  begin\n    if Repetition <> grPad then\n    begin\n      for j := -MaxReflectRepeatCount+1 to 0 do\n        AddColorStops(0.5 + j/MaxReflectRepeatCount*0.5, -0.5/MaxReflectRepeatCount, true);\n      for j := 0 to MaxReflectRepeatCount-1 do\n        AddColorStops(0.5 + j*0.5/MaxReflectRepeatCount, 0.5/MaxReflectRepeatCount, j > 0);\n    end else\n    begin\n      AddColorStops(0.5, -0.5, true);\n      AddColorStops(0.5, 0.5, false);\n    end;\n  end else\n    AddColorStops(0, 1, true);\n  if ColorInterpolation = ciStdRGB then\n    grad.colorInterpolation := sciStdRGB\n    else grad.colorInterpolation := sciLinearRGB;\n  result := grad;\nend;\n\nfunction TBGRALayerGradientOriginal.IsInfiniteSurface: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRALayerGradientOriginal.Render(ADest: TBGRABitmap;\n  AMatrix: TAffineMatrix; ADraft: boolean);\nbegin\n  Render(ADest,AMatrix,ADraft,dmSet);\nend;\n\nprocedure TBGRALayerGradientOriginal.Render(ADest: TBGRABitmap;\n  AMatrix: TAffineMatrix; ADraft: boolean; ADrawMode: TDrawMode);\nvar\n  grad: TBGRACustomScanner;\n  temp: TBGRABitmap;\nbegin\n  if (ADrawMode in[dmDrawWithTransparency, dmLinearBlend, dmSetExceptTransparent]) and\n    IsOpaque then ADrawMode := dmSet;\n\n  if ADraft and (ADest.ClipRect.Width*ADest.ClipRect.Height > 512*512) then\n  begin\n    temp := TBGRABitmap.Create(0,0);\n    temp.SetSize(min(400,ADest.Width),min(400,ADest.Height));\n    Render(temp, AffineMatrixScale(temp.Width/ADest.Width,\n                                   temp.Height/ADest.Height)*AMatrix, ADraft);\n    ADest.StretchPutImage(rect(0,0,ADest.Width,Adest.Height),temp, ADrawMode);\n    temp.Free;\n  end else\n  begin\n    grad := CreateScanner(AMatrix, ADraft);\n    if ADraft then\n      ADest.FillRect(ADest.ClipRect, grad,ADrawMode)\n      else ADest.FillRect(ADest.ClipRect, grad,ADrawMode, daFloydSteinberg);\n    grad.Free;\n  end;\nend;\n\nfunction TBGRALayerGradientOriginal.CreateScanner(AMatrix: TAffineMatrix; ADraft: boolean): TBGRACustomScanner;\nvar\n  colors: TBGRACustomGradient;\n  grad: TBGRAGradientScanner;\nbegin\n  if isEmptyPointF(FOrigin) or isEmptyPointF(FXAxis) then exit(nil);\n\n  if ColorCount = 2 then\n    colors := TBGRASimpleGradient.CreateAny(FColorInterpolation,\n           StartColor, EndColor, FRepetition)\n  else\n    colors := TBGRAMultiGradient.CreateAny(FColors,\n           FColorPositions, FColorInterpolation,\n           FRepetition);\n  if ADraft then\n    colors := TBGRABufferedGradient.Create(colors, true, FRepetition = grPad, 1024);\n\n  if FGradientType = gtRadial then\n  begin\n    grad := TBGRAGradientScanner.Create(FOrigin,FXAxis,ComputedYAxis,ComputedFocalPoint,ComputedRadius,ComputedFocalRadius);\n  end else\n    grad := TBGRAGradientScanner.Create(FGradientType, FOrigin,FXAxis,ComputedYAxis);\n\n  grad.SetGradient(colors, true);\n  grad.Transform := AMatrix;\n\n  exit(grad);\nend;\n\nprocedure TBGRALayerGradientOriginal.ConfigureEditor(\n  AEditor: TBGRAOriginalEditor);\nvar\n  originPoint: Integer;\nbegin\n  if not isEmptyPointF(FOrigin) then\n  begin\n    AEditor.AddStartMoveHandler(@OnStartMove);\n\n    if not isEmptyPointF(FXAxis) and (FGradientType = gtLinear) then\n      originPoint := AEditor.AddPoint((FOrigin + FXAxis)*0.5, @OnMoveOrigin, true)\n    else originPoint := AEditor.AddPoint(FOrigin, @OnMoveOrigin, true);\n\n    if not isEmptyPointF(FXAxis) then\n    begin\n      if not isEmptyPointF(FXAxis) and (FGradientType = gtLinear) then\n      begin\n        AEditor.AddArrow((FOrigin + FXAxis)*0.5, FXAxis, @OnMoveXAxis);\n        AEditor.AddArrow((FOrigin + FXAxis)*0.5, FOrigin, @OnMoveXAxisNeg);\n      end\n      else AEditor.AddArrow(FOrigin, FXAxis, @OnMoveXAxis);\n\n      if FGradientType in[gtDiamond, gtRadial, gtAngular] then\n        AEditor.AddArrow(FOrigin, ComputedYAxis, @OnMoveYAxis);\n    end;\n    if FGradientType = gtRadial then\n    begin\n      AEditor.AddPoint(ComputedFocalPoint, @OnMoveFocalPoint, false, originPoint);\n      AEditor.AddArrow(ComputedFocalPoint, ComputedFocalPoint - (FXAxis - FOrigin) * (ComputedFocalRadius + 0.1), @OnMoveFocalRadius, false);\n    end;\n  end;\nend;\n\nfunction TBGRALayerGradientOriginal.GetRenderBounds(ADestRect: TRect;\n  AMatrix: TAffineMatrix): TRect;\nbegin\n  result := ADestRect;\nend;\n\nprocedure TBGRALayerGradientOriginal.LoadFromStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar\n  i: Integer;\nbegin\n  FColors := AStorage.ColorArray['colors'];\n  FColorPositions := AStorage.FloatArray['color-positions'];\n  if FColorPositions = nil then\n  begin\n    setlength(FColorPositions, length(FColors));\n    if length(FColorPositions) > 1 then\n    begin\n      for i := 0 to high(FColorPositions) do\n        FColorPositions[i] := i / high(FColorPositions);\n    end else\n      FColorPositions[0] := 0;\n  end;\n\n\n  case AStorage.RawString['gradient-type'] of\n  'reflected': FGradientType := gtReflected;\n  'radial': FGradientType := gtRadial;\n  'diamond': FGradientType := gtDiamond;\n  'angular': FGradientType := gtAngular;\n  else {'linear'} FGradientType := gtLinear;\n  end;\n\n  FOrigin := AStorage.PointF['origin'];\n  FXAxis := AStorage.PointF['x-axis'];\n  FYAxis := AStorage.PointF['y-axis'];\n  FFocalPoint := AStorage.PointF['focal-point'];\n\n  FRadius := AStorage.Float['radial'];\n  FFocalRadius := AStorage.Float['focal-radius'];\n\n  case AStorage.RawString['color-interpolation'] of\n  'RGB': FColorInterpolation:= ciLinearRGB;\n  'HSL': FColorInterpolation:= ciLinearHSLAuto;\n  'HSL+': FColorInterpolation:= ciLinearHSLPositive;\n  'HSL-': FColorInterpolation:= ciLinearHSLNegative;\n  'GSB': FColorInterpolation:= ciGSBAuto;\n  'GSB+': FColorInterpolation:= ciGSBPositive;\n  'GSB-': FColorInterpolation:= ciGSBNegative;\n  else {'sRGB'} FColorInterpolation:= ciStdRGB;\n  end;\n\n  case AStorage.RawString['repetition'] of\n  'repeat': FRepetition:= grRepeat;\n  'reflect': FRepetition:= grReflect;\n  'sine': FRepetition := grSine;\n  else {'pad'} FRepetition:= grPad;\n  end;\nend;\n\nprocedure TBGRALayerGradientOriginal.SaveToStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar\n  gtStr, ciStr: String;\nbegin\n  AStorage.ColorArray['colors'] := FColors;\n  AStorage.FloatArray['color-positions'] := FColorPositions;\n\n  case FGradientType of\n  gtReflected: gtStr := 'reflected';\n  gtRadial: gtStr := 'radial';\n  gtDiamond: gtStr := 'diamond';\n  gtAngular: gtStr := 'angular';\n  else {gtLinear} gtStr := 'linear';\n  end;\n  AStorage.RawString['gradient-type'] := gtStr;\n\n  AStorage.PointF['origin'] := FOrigin;\n  AStorage.PointF['x-axis'] := FXAxis;\n\n  if FGradientType in[gtRadial,gtDiamond,gtAngular] then\n    AStorage.PointF['y-axis'] := FYAxis\n  else\n    AStorage.RemoveAttribute('y-axis');\n\n  if FGradientType = gtRadial then\n  begin\n    AStorage.Float['radius'] := FRadius;\n    AStorage.Float['focal-radius'] := FFocalRadius;\n    AStorage.PointF['focal-point'] := FFocalPoint;\n  end else\n  begin\n    AStorage.RemoveAttribute('radius');\n    AStorage.RemoveAttribute('focal-radius');\n  end;\n\n  case FColorInterpolation of\n  ciLinearRGB: ciStr := 'RGB';\n  ciLinearHSLAuto: ciStr := 'HSL';\n  ciLinearHSLPositive: ciStr := 'HSL+';\n  ciLinearHSLNegative: ciStr := 'HSL-';\n  ciGSBAuto: ciStr := 'GSB';\n  ciGSBPositive: ciStr := 'GSB+';\n  ciGSBNegative: ciStr := 'GSB-';\n  else {ciStdRGB} ciStr := 'sRGB';\n  end;\n  AStorage.RawString['color-interpolation'] := ciStr;\n\n  case FRepetition of\n  grRepeat: AStorage.RawString['repetition'] := 'repeat';\n  grReflect: AStorage.RawString['repetition'] := 'reflect';\n  grSine: AStorage.RawString['repetition'] := 'sine';\n  else {grPad} AStorage.RawString['repetition'] := 'pad';\n  end;\nend;\n\nclass function TBGRALayerGradientOriginal.StorageClassName: RawByteString;\nbegin\n  result := 'gradient';\nend;\n\nclass function TBGRALayerGradientOriginal.CanConvertToSVG: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRALayerGradientOriginal.Transform(AMatrix: TAffineMatrix);\nbegin\n  BeginUpdate;\n  if not isEmptyPointF(FOrigin) then FOrigin := AMatrix*FOrigin;\n  if not isEmptyPointF(FXAxis) then FXAxis := AMatrix*FXAxis;\n  if not isEmptyPointF(FYAxis) then FYAxis := AMatrix*FYAxis;\n  if not isEmptyPointF(FFocalPoint) then FFocalPoint := AMatrix*FFocalPoint;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.AssignExceptGeometry(\n  AOther: TBGRALayerGradientOriginal);\nbegin\n  if (GradientType = AOther.GradientType) and\n    (StartColor.EqualsExactly(AOther.StartColor)) and\n    (EndColor.EqualsExactly(AOther.EndColor)) and\n    (ColorInterpolation = AOther.ColorInterpolation) and\n    (Repetition = AOther.Repetition) then exit;\n  BeginUpdate;\n  GradientType := AOther.GradientType;\n  StartColor:= AOther.StartColor;\n  EndColor:= AOther.EndColor;\n  ColorInterpolation:= AOther.ColorInterpolation;\n  Repetition:= AOther.Repetition;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.FitGeometry(const ABox: TAffineBox);\nbegin\n  BeginUpdate;\n  if GradientType = gtLinear then\n  begin\n    Origin := ABox.TopLeft;\n    XAxis := ABox.BottomRight;\n  end else\n  begin\n    Origin := (ABox.TopLeft + ABox.BottomRight)*0.5;\n    if GradientType = gtReflected then\n      XAxis := ABox.BottomRight\n    else\n    begin\n      XAxis := (ABox.TopRight + ABox.BottomRight)*0.5;\n      YAxis := (ABox.BottomLeft + ABox.BottomRight)*0.5;\n    end;\n  end;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColors(AStartColor,\n  AEndColor: TBGRAPixel);\nbegin\n  if (AStartColor = StartColor) and (AEndColor = EndColor) and (ColorCount = 2) then exit;\n  BeginUpdate;\n  ColorCount := 2;\n  StartColor := AStartColor;\n  EndColor := AEndColor;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.ApplyOpacity(AOpacity: byte);\nvar\n  cStart, cEnd: TBGRAPixel;\nbegin\n  cStart := StartColor;\n  cStart.alpha := BGRABlend.ApplyOpacity(cStart.alpha, AOpacity);\n  cEnd := EndColor;\n  cEnd.alpha := BGRABlend.ApplyOpacity(cEnd.alpha, AOpacity);\n  SetColors(cStart, cEnd);\nend;\n\nfunction TBGRALayerGradientOriginal.Equals(Obj: TObject): boolean;\nvar\n  other: TBGRALayerGradientOriginal;\nbegin\n  if Obj is TBGRALayerGradientOriginal then\n  begin\n    other := TBGRALayerGradientOriginal(Obj);\n    result := StartColor.EqualsExactly(other.StartColor) and\n              EndColor.EqualsExactly(other.EndColor) and\n              (GradientType = other.GradientType) and\n              (Origin = other.Origin) and\n              (XAxis = other.XAxis) and\n              ((GradientType in[gtLinear, gtReflected]) or\n               (YAxis = other.YAxis)) and\n              ((GradientType <> gtRadial) or\n               ((FocalPoint = other.FocalPoint) and\n                (FocalRadius = other.FocalRadius))) and\n              (ColorInterpolation = other.ColorInterpolation) and\n              (Repetition = other.Repetition);\n  end else\n    Result:=inherited Equals(Obj);\nend;\n\nprocedure TBGRALayerGradientOriginal.AddColor(AColor: TBGRAPixel; APreviousColorPosition: single);\nvar\n  prevCount: Integer;\nbegin\n  prevCount := ColorCount;\n  BeginUpdate;\n  setlength(FColors, prevCount+1);\n  setlength(FColorPositions, prevCount+1);\n  FColors[prevCount] := AColor;\n  FColorPositions[prevCount] := FColorPositions[prevCount - 1];\n  if APreviousColorPosition <> EmptySingle then\n  begin\n    FColorPositions[prevCount - 1] := APreviousColorPosition;\n    if FColorPositions[prevCount] < APreviousColorPosition then\n      FColorPositions[prevCount] := APreviousColorPosition;\n  end;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColors(\n  const AColors: array of TBGRAPixel; ASpreadColorsEqually: boolean);\nvar\n  i: Integer;\nbegin\n  if length(AColors) < 2 then\n    exception.Create('At least two colors expected');\n  BeginUpdate;\n  ColorCount := length(AColors);\n  for i := 0 to high(AColors) do\n    FColors[i] := AColors[i];\n  if ASpreadColorsEqually then\n  begin\n    for i := 0 to high(AColors) do\n      FColorPositions[i] := i / (length(AColors) - 1);\n  end;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerGradientOriginal.SetColors(\n  const AColors: array of TBGRAPixel; const APositions: array of single);\nvar\n  i: Integer;\nbegin\n  if length(AColors) < 2 then\n    exception.Create('At least two colors expected');\n  if length(APositions) <> length(AColors) then\n    exception.Create('Too many color positions');\n  if (APositions[0] <> 0) or (APositions[high(APositions)] <> 1) then\n    exception.Create('Positions must start at 0 and end at 1');\n  BeginUpdate;\n  ColorCount := length(AColors);\n  for i := 0 to high(AColors) do\n  begin\n    FColors[i] := AColors[i];\n    FColorPositions[i] := APositions[i];\n  end;\n  EndUpdate;\nend;\n\ninitialization\n\n  RegisterLayerOriginal(TBGRALayerGradientOriginal);\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgragradients.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Helper functions for gradients and shadows, as well as Phong shading }\nunit BGRAGradients;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n{$i bgrasse.inc}\n\ninterface\n\n{ Here are various functions that draw gradients, shadow and lighting }\n\nuses\n  BGRAClasses, BGRAGraphics, BGRABitmapTypes, BGRABitmap, BGRABlend, BGRAPhongTypes,\n  BGRASSE, BGRAGrayscaleMask;\n\n{$IFDEF BGRABITMAP_USE_LCL}{ Creates a bitmap with the specified text horizontally centered and with a shadow }\nfunction TextShadow(AWidth,AHeight: Integer; AText: String; AFontHeight: Integer; ATextColor,AShadowColor: TBGRAPixel;\n  AOffSetX,AOffSetY: Integer; ARadius: Integer = 0; AFontStyle: TFontStyles = []; AFontName: String = 'Default'; AShowText: Boolean = True): TBGRABitmap;\n{$ENDIF}\n\n{----------------------------------------------------------------------}\n{ Functions to draw multiple gradients.\n  See : http://wiki.lazarus.freepascal.org/Double_Gradient#nGradient }\ntype\n  TnGradientInfo = record\n    StartColor,StopColor: TBGRAPixel;\n    Direction: TGradientDirection;\n    EndPercent : single; // Position from 0 to 1\n  end;\n\nfunction nGradientInfo(StartColor, StopColor: TBGRAPixel; Direction: TGradientDirection; EndPercent: Single): TnGradientInfo;\n\nfunction nGradientAlphaFill(ARect: TRect; ADir: TGradientDirection; const AGradient: array of TnGradientInfo): TBGRABitmap; overload;\nfunction nGradientAlphaFill(AWidth, AHeight: Integer; ADir: TGradientDirection; const AGradient: array of TnGradientInfo): TBGRABitmap; overload;\nprocedure nGradientAlphaFill(ACanvas: TCanvas; ARect: TRect; ADir: TGradientDirection; const AGradient: array of TnGradientInfo); overload;\nprocedure nGradientAlphaFill(ABitmap: TBGRABitmap; ARect: TRect; ADir: TGradientDirection; const AGradient: array of TnGradientInfo); overload;\n\nfunction DoubleGradientAlphaFill(ARect: TRect; AStart1,AStop1,AStart2,AStop2: TBGRAPixel;\n                                 ADirection1,ADirection2,ADir: TGradientDirection; AValue: Single): TBGRABitmap; overload;\nfunction DoubleGradientAlphaFill(AWidth,AHeight: Integer; AStart1,AStop1,AStart2,AStop2: TBGRAPixel;\n                                 ADirection1,ADirection2,ADir: TGradientDirection; AValue: Single): TBGRABitmap; overload;\nprocedure DoubleGradientAlphaFill(ACanvas: TCanvas; ARect: TRect; AStart1,AStop1,AStart2,AStop2: TBGRAPixel;\n                                 ADirection1,ADirection2,ADir: TGradientDirection; AValue: Single); overload;\nprocedure DoubleGradientAlphaFill(ABitmap: TBGRABitmap; ARect: TRect; AStart1,AStop1,AStart2,AStop2: TBGRAPixel;\n                                 ADirection1,ADirection2,ADir: TGradientDirection; AValue: Single); overload;\n\n{----------------------------------------------------------------------}\ntype\n  TRectangleMapOption = (rmoNoLeftBorder,rmoNoTopBorder,rmoNoRightBorder,rmoNoBottomBorder,rmoLinearBorder);\n  TRectangleMapOptions = set of TRectangleMapOption;\n\n  { @abstract(Renders shape and height maps using Phong shading.)\n\n    Phong shading consist in adding an ambiant light, a diffuse light (angle between light and object),\n    and a specular light (angle between light, object and observer, i.e. reflected light).\n\n    Height maps are grayscale images or a precise bitmaps filled with MapHeightToBGRA. They are used\n    to determine orientation and position of the surface.\n\n    See [tutorial on Phong shading](https://wiki.freepascal.org/BGRABitmap_tutorial_9).\n  }\n  TPhongShading = class(TCustomPhongShading)\n  public\n    LightSourceIntensity : Single; //global intensity of the light\n\n    LightSourceDistanceTerm,       //minimum distance always added (positive value)\n    LightSourceDistanceFactor,     //how much actual distance is taken into account (usually 0 or 1)\n    LightDestFactor : Single;      //how much the location of the lightened pixel is taken into account (usually 0 or 1)\n\n    LightColor: TBGRAPixel;        //color of the light reflection\n\n    SpecularFactor,                //how much light is reflected (0..1)\n    SpecularIndex : Single;        //how concentrated reflected light is (positive value)\n\n    AmbientFactor,                 //ambiant lighting whereever the point is (0..1)\n    DiffusionFactor,               //diffusion, i.e. how much pixels are lightened by light source (0..1)\n    NegativeDiffusionFactor : Single; //how much hidden surface are darkened (0..1)\n    DiffuseSaturation: Boolean;    //when diffusion saturates, use light color to show it\n\n    constructor Create;\n\n    { Render the specified map on the destination bitmap with one solid color. Map altitude\n      indicate the global height of the map. }\n    procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   Color : TBGRAPixel); override;\n\n    { Render with a color map of the same size as the height map. Map altitude\n      indicate the global height of the map. }\n    procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorMap : TBGRACustomBitmap); override;\n\n    { Render with a color scanner. Map altitude\n      indicate the global height of the map. }\n    procedure DrawScan(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorScan : IBGRAScanner); override;\n\n    { Draw a cone of the specified color }\n    procedure DrawCone(dest: TBGRACustomBitmap; X,Y,Size: Integer; Altitude: Single; Color: TBGRAPixel); overload;\n    procedure DrawCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); overload;\n\n    { Draw a vertical cone of the specified color }\n    procedure DrawVerticalCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel);\n\n    { Draw an horizontal cylinder of the specified color }\n    procedure DrawHorizontalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel);\n\n    { Draw a vertical cylinder of the specified color }\n    procedure DrawVerticalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel);\n\n    { @abstract(Draw a hemisphere of the specified color.)\n\n**Example drawing a red sphere on a form:**\n\n@image(../doc/img/tphongshading_drawsphere.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image: TBGRABitmap;\n  phong: TPhongShading;\nbegin\n  phong := TPhongShading.Create;\n  phong.LightPosition := Point(100, 100);\n  phong.LightPositionZ := 150;\n  phong.SpecularIndex := 20;\n  phong.AmbientFactor := 0.4;\n  phong.LightSourceIntensity := 250;\n  phong.LightSourceDistanceTerm := 200;\n\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace)));\n\n  phong.DrawSphere(image,rect(20,20,120,120),50,BGRA(255,0,0));\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```\n}\n    procedure DrawSphere(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel);\n\n    { Draw a rectangle of the specified color }\n    procedure DrawRectangle(dest: TBGRACustomBitmap; bounds: TRect; Border: Integer; Altitude: Single; Color: TBGRAPixel; RoundCorners: Boolean; Options: TRectangleMapOptions);\n\n  protected\n\n    procedure DrawMapNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorMap : TBGRACustomBitmap);\n    procedure DrawScannerNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorScan : IBGRAScanner);\n    procedure DrawColorNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   Color : TBGRAPixel);\n\n    {$ifdef BGRASSE_AVAILABLE}\n    procedure DrawMapSSE(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorMap : TBGRACustomBitmap);\n    procedure DrawScannerSSE(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   ColorScan : IBGRAScanner);\n    procedure DrawColorSSE(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                   Color : TBGRAPixel);\n    {$endif}\n  end;\n\n{ Create a grayscale height map for a cone (may not be precise enough) }\nfunction CreateConeMap(size: integer): TBGRABitmap;\n\n{ Create a precise height map for a cone (not grayscale anymore but more precise) }\nfunction CreateConePreciseMap(width,height: integer): TBGRABitmap;\n\n{ Create a precise height map for a vertical cone (not grayscale anymore but more precise) }\nfunction CreateVerticalConePreciseMap(width,height: integer): TBGRABitmap;\n\n{ Create a precise height map for a vertical cylinder (not grayscale anymore but more precise) }\nfunction CreateVerticalCylinderPreciseMap(width,height: integer): TBGRABitmap;\n\n{ Create a precise height map for an horizontal cylinder (not grayscale anymore but more precise) }\nfunction CreateHorizontalCylinderPreciseMap(width,height: integer): TBGRABitmap;\n\n{ Create a grayscale height map for a sphere (may not be precise enough) }\nfunction CreateSphereMap(width,height: integer): TBGRABitmap;\n\n{ Create a precise height map for a sphere (not grayscale anymore but more precise) }\nfunction CreateSpherePreciseMap(width,height: integer): TBGRABitmap;\n\n{ Create a rectangle height map with a border }\nfunction CreateRectangleMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\n\n{ Create a precise height map for a rectangle height map with a border (not grayscale anymore but more precise) }\nfunction CreateRectanglePreciseMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\nfunction CreateRectanglePreciseMap(width, height, borderWidth, borderHeight: integer; options: TRectangleMapOptions): TBGRABitmap;\n\n{ Create a round rectangle height map with a border }\nfunction CreateRoundRectangleMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\n\n{ Create a precise height map for a round rectangle height map with a border (not grayscale anymore but more precise) }\nfunction CreateRoundRectanglePreciseMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\nfunction CreateRoundRectanglePreciseMap(width,height,borderWidth,borderHeight: integer; options: TRectangleMapOptions = []): TBGRABitmap;\n\n{---------- Perlin Noise -------------}\n{ Random image using a superposition of interpolated random values.\n  See : http://wiki.lazarus.freepascal.org/Perlin_Noise\n        http://freespace.virgin.net/hugo.elias/models/m_perlin.htm }\n\n{ Creates a non-tilable random grayscale image }\nfunction CreatePerlinNoiseMap(AWidth, AHeight: integer; HorizontalPeriod: Single = 1;\n  VerticalPeriod: Single = 1; Exponent: Double = 1; ResampleFilter: TResampleFilter = rfCosine): TBGRABitmap;\n\n{ @abstract(Creates a tilable random grayscale image.)\n\n**Example filling a form with Perlin noise:**\n\n@image(../doc/img/createcyclicperlinnoisemap.png)\n\n```pascal\nuses\n  BGRABitmap, BGRABitmapTypes, BGRAGradients;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image,tex: TBGRABitmap;\n\nbegin\n    image := TBGRABitmap.Create(ClientWidth,ClientHeight);\n\n    tex := CreateCyclicPerlinNoiseMap(100,100);\n    image.FillRect(0,0,image.Width,image.Height, tex, dmSet);\n    tex.free;\n\n    image.Draw(Canvas,0,0,True);\n    image.free;\nend;\n```\n\nSee also [tutorial on creating textures](https://wiki.freepascal.org/BGRABitmap_tutorial_8).\n}\nfunction CreateCyclicPerlinNoiseMap(AWidth, AHeight: integer; HorizontalPeriod: Single = 1;\n  VerticalPeriod: Single = 1; Exponent: Double = 1; ResampleFilter: TResampleFilter = rfCosine): TBGRABitmap;\n\nimplementation\n\nuses Math, SysUtils{$IFDEF BGRABITMAP_USE_LCL}, BGRATextFX{$ENDIF},\n  BGRAFilterScanner, BGRAFilterBlur; {GraphType unit used by phongdraw.inc}\n\n{$IFDEF BGRABITMAP_USE_LCL}function TextShadow(AWidth, AHeight: Integer; AText: String;\n  AFontHeight: Integer; ATextColor, AShadowColor: TBGRAPixel; AOffSetX,\n  AOffSetY: Integer; ARadius: Integer; AFontStyle: TFontStyles;\n  AFontName: String; AShowText: Boolean): TBGRABitmap;\nbegin\n  result := BGRATextFX.TextShadow(AWidth,AHeight,AText,AFontHeight,ATextColor,AShadowColor,AOffsetX,AOffsetY,ARadius,AFontStyle,AFontName,AShowText) as TBGRABitmap;\nend;{$ENDIF}\n\nfunction nGradientInfo(StartColor, StopColor: TBGRAPixel;\n  Direction: TGradientDirection; EndPercent: Single): TnGradientInfo;\nbegin\n  result.StartColor := StartColor;\n  result.StopColor := StopColor;\n  result.Direction := Direction;\n  result.EndPercent := EndPercent;\nend;\n\nfunction DoubleGradientAlphaFill(ARect: TRect; AStart1,AStop1,AStart2,AStop2: TBGRAPixel;\n  ADirection1,ADirection2,ADir: TGradientDirection; AValue: Single): TBGRABitmap;\nvar\n  ABitmap: TBGRABitmap;\n  ARect1,ARect2: TRect;\n  APoint1,APoint2,APoint3,APoint4: TPointF;\nbegin\n  Dec(ARect.Right, ARect.Left);\n  ARect.Left := 0;\n  Dec(ARect.Bottom,ARect.Top);\n  ARect.Top := 0;\n\n  ABitmap := TBGRABitmap.Create(ARect.Right,ARect.Bottom);\n\n  ARect1:=ARect;\n  ARect2:=ARect;\n\n  if ADir = gdVertical then begin\n    ARect1.Bottom:=Round(ARect1.Bottom * AValue);\n    ARect2.Top:=ARect1.Bottom;\n  end\n  else if ADir = gdHorizontal then begin\n    ARect1.Right:=Round(ARect1.Right * AValue);\n    ARect2.Left:=ARect1.Right;\n  end\n  else\n    raise exception.Create('Unknown gradient direction');\n  if ADirection1 = gdVertical then begin\n    APoint1:=PointF(ARect1.Left,ARect1.Top);\n    APoint2:=PointF(ARect1.Left,ARect1.Bottom);\n  end\n  else if ADirection1 = gdHorizontal then begin\n    APoint1:=PointF(ARect1.Left,ARect1.Top);\n    APoint2:=PointF(ARect1.Right,ARect1.Top);\n  end\n  else\n    raise exception.Create('Unknown gradient direction');\n  if ADirection2 = gdVertical then begin\n    APoint3:=PointF(ARect2.Left,ARect2.Top);\n    APoint4:=PointF(ARect2.Left,ARect2.Bottom);\n  end\n  else if ADirection2 = gdHorizontal then begin\n    APoint3:=PointF(ARect2.Left,ARect2.Top);\n    APoint4:=PointF(ARect2.Right,ARect2.Top);\n  end\n  else\n    raise exception.Create('Unknown gradient direction');\n\n  if AValue <> 0 then\n    ABitmap.GradientFill(ARect1.Left,ARect1.Top,ARect1.Right,ARect1.Bottom,\n    AStart1,AStop1,gtLinear,APoint1,APoint2,dmSet,True);\n  if AValue <> 1 then\n    ABitmap.GradientFill( ARect2.Left,ARect2.Top,ARect2.Right,ARect2.Bottom,\n    AStart2,AStop2,gtLinear,APoint3,APoint4,dmSet,True);\n\n  Result:=ABitmap;\nend;\n\nfunction DoubleGradientAlphaFill(AWidth, AHeight: Integer; AStart1, AStop1,\n  AStart2, AStop2: TBGRAPixel; ADirection1, ADirection2,\n  ADir: TGradientDirection; AValue: Single): TBGRABitmap;\nbegin\n  result := DoubleGradientAlphaFill(Rect(0,0,AWidth,AHeight),\n    AStart1,AStop1,AStart2,AStop2,\n    ADirection1,ADirection2, ADir, AValue);\nend;\n\nprocedure DoubleGradientAlphaFill(ACanvas: TCanvas; ARect: TRect; AStart1,\n  AStop1, AStart2, AStop2: TBGRAPixel; ADirection1, ADirection2,\n  ADir: TGradientDirection; AValue: Single);\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := DoubleGradientAlphaFill(ARect,AStart1,AStop1,AStart2,AStop2,ADirection1,ADirection2,ADir,AValue);\n  bmp.Draw(ACanvas,ARect.Left,ARect.Top,not bmp.HasTransparentPixels);\n  bmp.Free;\nend;\n\nprocedure DoubleGradientAlphaFill(ABitmap: TBGRABitmap; ARect: TRect; AStart1,\n  AStop1, AStart2, AStop2: TBGRAPixel; ADirection1, ADirection2,\n  ADir: TGradientDirection; AValue: Single);\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := DoubleGradientAlphaFill(ARect,AStart1,AStop1,AStart2,AStop2,ADirection1,ADirection2,ADir,AValue);\n  ABitmap.PutImage(ARect.Left,ARect.Top,bmp,dmDrawWithTransparency);\n  bmp.Free;\nend;\n\nfunction nGradientAlphaFill(ARect: TRect; ADir: TGradientDirection;\n  const AGradient: array of TnGradientInfo): TBGRABitmap;\nvar\n  i:integer;\n  AnRect, OldRect: TRect;\n  Point1, Point2: TPointF;\nbegin\n  Result := TBGRABitmap.Create(ARect.Right-ARect.Left,ARect.Bottom-ARect.Top);\n  Dec(ARect.Right, ARect.Left);\n  ARect.Left := 0;\n  Dec(ARect.Bottom,ARect.Top);\n  ARect.Top := 0;\n\n  OldRect := ARect;\n\n  if ADir = gdVertical then\n    OldRect.Bottom := ARect.Top\n  else\n    OldRect.Right := ARect.Left;\n\n  for i := 0 to high(AGradient) do\n  begin\n    AnRect:=OldRect;\n    if ADir = gdVertical then\n    begin\n      AnRect.Bottom:=Round((ARect.Bottom-ARect.Top) * AGradient[i].endPercent + ARect.Top);\n      AnRect.Top:=OldRect.Bottom;\n      Point1:=PointF(AnRect.Left,AnRect.Top);\n      Point2:=PointF(AnRect.Left,AnRect.Bottom);\n    end\n    else\n    begin\n     AnRect.Right:=Round((ARect.Right-ARect.Left) * AGradient[i].endPercent + ARect.Left);\n     AnRect.Left:=OldRect.Right;\n     Point1:=PointF(AnRect.Left,AnRect.Top);\n     Point2:=PointF(AnRect.Right,AnRect.Top);\n    end;\n    Result.GradientFill(AnRect.Left,AnRect.Top,AnRect.Right,AnRect.Bottom,\n      AGradient[i].StartColor,AGradient[i].StopColor,gtLinear,Point1,Point2,dmSet,True);\n    OldRect := AnRect;\n  end;\nend;\n\nfunction nGradientAlphaFill(AWidth, AHeight: Integer; ADir: TGradientDirection;\n  const AGradient: array of TnGradientInfo): TBGRABitmap;\nbegin\n  result := nGradientAlphaFill(Rect(0,0,AWidth,AHeight),ADir,AGradient);\nend;\n\nprocedure nGradientAlphaFill(ACanvas: TCanvas; ARect: TRect;\n  ADir: TGradientDirection; const AGradient: array of TnGradientInfo);\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := nGradientAlphaFill(ARect, ADir, AGradient);\n  bmp.Draw(ACanvas,ARect.Left,ARect.Top,not bmp.HasTransparentPixels);\n  bmp.Free;\nend;\n\nprocedure nGradientAlphaFill(ABitmap: TBGRABitmap; ARect: TRect;\n  ADir: TGradientDirection; const AGradient: array of TnGradientInfo);\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := nGradientAlphaFill(ARect, ADir, AGradient);\n  ABitmap.PutImage(ARect.Left,ARect.Top,bmp,dmDrawWithTransparency);\n  bmp.Free;\nend;\n\n{ TPhongShading }\n\nconstructor TPhongShading.Create;\nbegin\n  //set default values\n  LightSourceIntensity := 500;\n  LightSourceDistanceTerm := 150;\n  LightSourceDistanceFactor := 1;\n  LightDestFactor := 1;\n  LightColor := BGRAWhite;\n  AmbientFactor := 0.3;\n  DiffusionFactor := 0.9;\n  DiffuseSaturation:= False;\n  NegativeDiffusionFactor := 0.1;\n  SpecularFactor := 0.6;\n  SpecularIndex := 10;\n  LightPosition3D := Point3D(-100,-100,100);\nend;\n\nConst\n  PhongLightPrecisionSh = 12;\n  PhongLightPrecision = 1 shl PhongLightPrecisionSh;\n  PhongLightPrecisionDiv2 = PhongLightPrecision shr 1;\n\n{------------------ Phong drawing ----------------}\n{ Look for the fastest method available }\nprocedure TPhongShading.Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                             Color : TBGRAPixel);\nbegin\n  {$ifdef BGRASSE_AVAILABLE}\n    if UseSSE then\n      DrawColorSSE(dest,map,mapAltitude,ofsX,ofsY,Color)\n    else\n  {$endif}\n      DrawColorNormal(dest,map,mapAltitude,ofsX,ofsY,Color);\nend;\n\nprocedure TPhongShading.Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n            mapAltitude: single; ofsX, ofsY: integer; ColorMap: TBGRACustomBitmap);\nbegin\n  {$ifdef BGRASSE_AVAILABLE}\n    if UseSSE then\n      DrawMapSSE(dest,map,mapAltitude,ofsX,ofsY,ColorMap)\n    else\n  {$endif}\n      DrawMapNormal(dest,map,mapAltitude,ofsX,ofsY,ColorMap);\nend;\n\nprocedure TPhongShading.DrawScan(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n  mapAltitude: single; ofsX, ofsY: integer; ColorScan: IBGRAScanner);\nbegin\n  {$ifdef BGRASSE_AVAILABLE}\n    if UseSSE then\n      DrawScannerSSE(dest,map,mapAltitude,ofsX,ofsY,ColorScan)\n    else\n  {$endif}\n      DrawScannerNormal(dest,map,mapAltitude,ofsX,ofsY,ColorScan);\nend;\n\n  {------------------ End of phong drawing ----------------}\n\nprocedure TPhongShading.DrawCone(dest: TBGRACustomBitmap; X, Y, Size: Integer;\n  Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\nbegin\n  map := CreateConePreciseMap(Size,Size);\n  Draw(dest,map,Altitude,X,Y,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawCone(dest: TBGRACustomBitmap; bounds: TRect;\n  Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  map := CreateConePreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top);\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawVerticalCone(dest: TBGRACustomBitmap;\n  bounds: TRect; Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  map := CreateVerticalConePreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top);\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawHorizontalCylinder(dest: TBGRACustomBitmap;\n  bounds: TRect; Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  map := CreateHorizontalCylinderPreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top);\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawVerticalCylinder(dest: TBGRACustomBitmap;\n  bounds: TRect; Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  map := CreateVerticalCylinderPreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top);\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawSphere(dest: TBGRACustomBitmap; bounds: TRect;\n  Altitude: Single; Color: TBGRAPixel);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  map := CreateSpherePreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top);\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawRectangle(dest: TBGRACustomBitmap; bounds: TRect;\n  Border: Integer; Altitude: Single; Color: TBGRAPixel; RoundCorners: Boolean; Options: TRectangleMapOptions);\nvar map: TBGRABitmap;\n    temp: integer;\nbegin\n  if Bounds.Right < Bounds.Left then\n  begin\n    temp := Bounds.Left;\n    bounds.Left := bounds.Right;\n    Bounds.Right := temp;\n  end;\n  if Bounds.Bottom < Bounds.Top then\n  begin\n    temp := Bounds.Bottom;\n    bounds.Bottom := bounds.Top;\n    Bounds.Top := temp;\n  end;\n  if border > 10 then\n  begin\n    if RoundCorners then\n      map := CreateRoundRectanglePreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top,Border,Options)\n    else\n      map := CreateRectanglePreciseMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top,Border,Options);\n  end else\n  begin\n    if RoundCorners then\n      map := CreateRoundRectangleMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top,Border,Options)\n    else\n      map := CreateRectangleMap(Bounds.Right-Bounds.Left,Bounds.Bottom-Bounds.Top,Border,Options);\n  end;\n  Draw(dest,map,Altitude,bounds.Left,bounds.Top,Color);\n  map.Free;\nend;\n\nprocedure TPhongShading.DrawMapNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n  mapAltitude: single; ofsX, ofsY: integer; ColorMap: TBGRACustomBitmap);\n  {$I phongdraw.inc }\n\nprocedure TPhongShading.DrawColorNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n  mapAltitude: single; ofsX, ofsY: integer; Color: TBGRAPixel);\n  {$define PARAM_SIMPLECOLOR}\n  {$I phongdraw.inc }\n\nprocedure TPhongShading.DrawScannerNormal(dest: TBGRACustomBitmap;\n  map: TBGRACustomBitmap; mapAltitude: single; ofsX, ofsY: integer;\n  ColorScan: IBGRAScanner);\n  {$define PARAM_SCANNER}\n  {$I phongdraw.inc }\n\n{$ifdef BGRASSE_AVAILABLE}\nprocedure TPhongShading.DrawMapSSE(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n  mapAltitude: single; ofsX, ofsY: integer; ColorMap: TBGRACustomBitmap);\n  {$define PARAM_PHONGSSE}\n  {$I phongdraw.inc }\n\nprocedure TPhongShading.DrawColorSSE(dest: TBGRACustomBitmap; map: TBGRACustomBitmap;\n  mapAltitude: single; ofsX, ofsY: integer; Color: TBGRAPixel);\n  {$define PARAM_PHONGSSE}\n  {$define PARAM_SIMPLECOLOR}\n  {$I phongdraw.inc }\n\nprocedure TPhongShading.DrawScannerSSE(dest: TBGRACustomBitmap;\n  map: TBGRACustomBitmap; mapAltitude: single; ofsX, ofsY: integer;\n  ColorScan: IBGRAScanner);\n  {$define PARAM_PHONGSSE}\n  {$define PARAM_SCANNER}\n  {$I phongdraw.inc }\n\n{$endif}\n\n{************************ maps ***********************************}\n\nfunction CreateConeMap(size: integer): TBGRABitmap;\nvar cx,cy,r: single;\n    mask: TGrayscaleMask;\nbegin\n  cx := (size-1)/2;\n  cy := (size-1)/2;\n  r := (size-1)/2;\n  result := TBGRABitmap.Create(size,size);\n  result.GradientFill(0,0,size,size,BGRAWhite,BGRABlack,gtRadial,PointF(cx,cy),PointF(cx+r,cy),dmSet,False);\n\n  mask := TGrayscaleMask.Create(size,size,BGRABlack);\n  mask.FillEllipseAntialias(cx,cy,r,r,BGRAWhite);\n  result.ApplyMask(mask);\n  mask.Free;\nend;\n\nfunction CreateConePreciseMap(width,height: integer): TBGRABitmap;\nvar cx,cy,rx,ry,d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    mask: TGrayscaleMask;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  cx := (width-1)/2;\n  cy := (height-1)/2;\n  rx := (width-1)/2;\n  ry := (height-1)/2;\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     d := sqr((xb-cx)/(rx+1))+sqr((yb-cy)/(ry+1));\n     if d >= 1 then\n       p^ := BGRAPixelTransparent else\n       p^ := MapHeightToBGRA(1-sqrt(d),255);\n     inc(p);\n   end;\n  end;\n  //antialiased border\n  mask := TGrayscaleMask.Create(width,height,BGRABlack);\n  mask.FillEllipseAntialias(cx,cy,rx,ry,BGRAWhite);\n  result.ApplyMask(mask);\n  mask.Free;\nend;\n\nfunction CreateVerticalConePreciseMap(width, height: integer): TBGRABitmap;\nvar cx,rx,d,vpos: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    mask: TGrayscaleMask;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  if (height=0) or (width=0) then exit;\n  cx := (width-1)/2;\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   vpos := (yb+1)/height;\n   rx := width/2*vpos;\n   for xb := 0 to width-1 do\n   begin\n     d := sqr((xb-cx)/(rx+1));\n     if d >= 1 then\n       p^ := BGRAPixelTransparent else\n       p^ := MapHeightToBGRA(sqrt(1-d)*vpos,255);\n     inc(p);\n   end;\n  end;\n  //antialiased border\n  mask := TGrayscaleMask.Create(width,height,BGRABlack);\n  mask.FillPolyAntialias([PointF(width/2,-0.5),PointF(0,height-0.5),PointF(width-0.5,height-0.5)],BGRAWhite);\n  result.ApplyMask(mask);\n  mask.Free;\nend;\n\nfunction CreateVerticalCylinderPreciseMap(width, height: integer): TBGRABitmap;\nvar cx,rx,d: single;\n    xb: integer;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  if (height=0) or (width=0) then exit;\n  rx := width/2;\n  cx := (width-1)/2;\n  for xb := 0 to width-1 do\n  begin\n    d := sqr((xb-cx)/(rx+1));\n    result.SetVertLine(xb,0,height-1,MapHeightToBGRA(sqrt(1-d),255));\n  end;\nend;\n\nfunction CreateHorizontalCylinderPreciseMap(width, height: integer\n  ): TBGRABitmap;\nvar cy,ry,d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    c: TBGRAPixel;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  if (height=0) or (width=0) then exit;\n  ry := height/2;\n  cy := (height-1)/2;\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   d := sqr((yb-cy)/(ry+1));\n   c := MapHeightToBGRA(sqrt(1-d),255);\n   for xb := 0 to width-1 do\n   begin\n     p^ := c;\n     inc(p);\n   end;\n  end;\nend;\n\nfunction CreateSphereMap(width,height: integer): TBGRABitmap;\nvar cx,cy,rx,ry,d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    h: integer;\n    mask: TGrayscaleMask;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  cx := (width-1)/2;\n  cy := (height-1)/2;\n  rx := (width-1)/2;\n  ry := (height-1)/2;\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     d := sqr((xb-cx)/(rx+1))+sqr((yb-cy)/(ry+1));\n     if d >= 1 then\n       p^ := BGRAPixelTransparent else\n     begin\n       h := round(sqrt(1-d)*255);\n       p^.red := h;\n       p^.green := h;\n       p^.blue := h;\n       p^.alpha := 255;\n     end;\n     inc(p);\n   end;\n  end;\n  //antialiased border\n  mask := TGrayscaleMask.Create(width,height,BGRABlack);\n  mask.FillEllipseAntialias(cx,cy,rx,ry,BGRAWhite);\n  result.ApplyMask(mask);\n  mask.Free;\nend;\n\nprocedure MapBorderLimit(width,height: integer; options: TRectangleMapOptions; var border: integer);\nvar maxHoriz,maxVert: integer;\nbegin\n  if [rmoNoLeftBorder,rmoNoRightBorder] <= options then maxHoriz := border else\n  if [rmoNoLeftBorder,rmoNoRightBorder] * options = [] then maxHoriz := width div 2 else\n    maxHoriz := width;\n  if border > maxHoriz then border := maxHoriz;\n\n  if [rmoNoTopBorder,rmoNoBottomBorder] <= options then maxVert := border else\n  if [rmoNoTopBorder,rmoNoBottomBorder] * options = [] then maxVert := height div 2 else\n    maxVert := height;\n  if border > maxVert then border := maxVert;\nend;\n\nprocedure MapBorderLimit(width,height: integer; options: TRectangleMapOptions; var borderHoriz,borderVert: integer);\nvar maxHoriz,maxVert: integer;\nbegin\n  if [rmoNoLeftBorder,rmoNoRightBorder] <= options then maxHoriz := borderHoriz else\n  if [rmoNoLeftBorder,rmoNoRightBorder] * options = [] then maxHoriz := width div 2 else\n    maxHoriz := width;\n  if borderHoriz > maxHoriz then borderHoriz := maxHoriz;\n\n  if [rmoNoTopBorder,rmoNoBottomBorder] <= options then maxVert := borderVert else\n  if [rmoNoTopBorder,rmoNoBottomBorder] * options = [] then maxVert := height div 2 else\n    maxVert := height;\n  if borderVert > maxVert then borderVert := maxVert;\nend;\n\nfunction CreateSpherePreciseMap(width, height: integer): TBGRABitmap;\nvar cx,cy,rx,ry,d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    mask: TGrayscaleMask;\nbegin\n  result := TBGRABitmap.Create(width,height);\n  cx := (width-1)/2;\n  cy := (height-1)/2;\n  rx := (width-1)/2;\n  ry := (height-1)/2;\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     d := sqr((xb-cx)/(rx+1))+sqr((yb-cy)/(ry+1));\n     if d >= 1 then\n       p^ := BGRAPixelTransparent else\n       p^ := MapHeightToBGRA(sqrt(1-d),255);\n     inc(p);\n   end;\n  end;\n  //antialiased border\n  mask := TGrayscaleMask.Create(width,height,BGRABlack);\n  mask.FillEllipseAntialias(cx,cy,rx,ry,BGRAWhite);\n  result.ApplyMask(mask);\n  mask.Free;\nend;\n\nprocedure RectangleMapRemoveCorners(dest: TBGRABitmap; options: TRectangleMapOptions);\nbegin\n  if [rmoNoLeftBorder,rmoNoTopBorder]*Options = [] then\n  begin\n    dest.SetPixel(0,0,BGRAPixelTransparent);\n    dest.ErasePixel(1,0,128);\n    dest.ErasePixel(0,1,128);\n  end;\n\n  if [rmoNoRightBorder,rmoNoTopBorder]*Options = [] then\n  begin\n    dest.SetPixel(dest.width-1,0,BGRAPixelTransparent);\n    dest.ErasePixel(dest.width-2,0,128);\n    dest.ErasePixel(dest.width-1,1,128);\n  end;\n\n  if [rmoNoRightBorder,rmoNoBottomBorder]*Options = [] then\n  begin\n    dest.SetPixel(dest.width-1,dest.height-1,BGRAPixelTransparent);\n    dest.ErasePixel(dest.width-2,dest.height-1,128);\n    dest.ErasePixel(dest.width-1,dest.height-2,128);\n  end;\n\n  if [rmoNoLeftBorder,rmoNoBottomBorder]*Options = [] then\n  begin\n    dest.SetPixel(0,dest.height-1,BGRAPixelTransparent);\n    dest.ErasePixel(1,dest.height-1,128);\n    dest.ErasePixel(0,dest.height-2,128);\n  end;\nend;\n\nfunction CreateRectangleMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\nvar xb,yb: integer;\n    p: PBGRAPixel;\n    h: integer;\nbegin\n  MapBorderLimit(width,height,options,border);\n\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and (xb < border) and (yb > xb) and (yb < height-1-xb) then h := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) and (yb > width-1-xb) and (yb < height-1-(width-1-xb)) then h := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) and (xb > yb) and (xb < width-1-yb) then h := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) and (xb > height-1-yb) and (xb < width-1-(height-1-yb)) then h := height-1-yb else\n     if not (rmoNoLeftBorder in options) and (xb < border) then h := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) then h := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) then h := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) then h := height-1-yb else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     if rmoLinearBorder in options then h := h*256 div border else\n       h := round(sin((h+1/2)/border*Pi/2)*255);\n     p^.red := h;\n     p^.green := h;\n     p^.blue := h;\n     p^.alpha := 255;\n     inc(p);\n   end;\n  end;\n\n  RectangleMapRemoveCorners(result,options);\nend;\n\nfunction CreateRectanglePreciseMap(width, height, border: integer;\n  options: TRectangleMapOptions): TBGRABitmap;\nvar xb,yb: integer;\n    p: PBGRAPixel;\n    h: single;\nbegin\n  MapBorderLimit(width,height,options,border);\n\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and (xb < border) and (yb > xb) and (yb < height-1-xb) then h := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) and (yb > width-1-xb) and (yb < height-1-(width-1-xb)) then h := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) and (xb > yb) and (xb < width-1-yb) then h := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) and (xb > height-1-yb) and (xb < width-1-(height-1-yb)) then h := height-1-yb else\n     if not (rmoNoLeftBorder in options) and (xb < border) then h := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) then h := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) then h := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) then h := height-1-yb else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     if rmoLinearBorder in options then h := h/border else\n       h := sin((h+1/2)/border*Pi/2);\n\n     p^ := MapHeightToBGRA(h,255);\n\n     inc(p);\n   end;\n  end;\n\n  RectangleMapRemoveCorners(result,options);\nend;\n\nfunction CreateRectanglePreciseMap(width, height, borderWidth, borderHeight: integer;\n  options: TRectangleMapOptions): TBGRABitmap;\nvar xb,yb, minBorder: integer;\n    p: PBGRAPixel;\n    h: single;\n    smallStep: single;\nbegin\n  MapBorderLimit(width,height,options,borderWidth,borderHeight);\n\n  minBorder := min(borderWidth,borderHeight);\n  if minBorder > 0 then smallStep := 1/minBorder else smallStep:= 0;\n\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and (xb < borderWidth) and (yb < borderHeight) then\n        h := min(xb/borderWidth, yb/borderHeight) else\n     if not (rmoNoRightBorder in options) and (xb > width-1-borderWidth) and (yb < borderHeight) then\n        h := min((width-1-xb)/borderWidth, yb/borderHeight) else\n     if not (rmoNoTopBorder in options) and (xb < borderWidth) and (yb > height-1-borderHeight) then\n        h := min(xb/borderWidth, (height-1-yb)/borderHeight) else\n     if not (rmoNoBottomBorder in options) and  (xb > width-1-borderWidth) and (yb > height-1-borderHeight) then\n        h := min((width-1-xb)/borderWidth, (height-1-yb)/borderHeight) else\n     if not (rmoNoLeftBorder in options) and (xb < borderWidth) then h := xb/borderWidth else\n     if not (rmoNoRightBorder in options) and (xb > width-1-borderWidth) then h := (width-1-xb)/borderWidth else\n     if not (rmoNoTopBorder in options) and (yb < borderHeight) then h := yb/borderHeight else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-borderHeight) then h := (height-1-yb)/borderHeight else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     if not (rmoLinearBorder in options) then\n       h := sin((h+smallStep*0.5)*Pi*0.5);\n\n     p^ := MapHeightToBGRA(h,255);\n\n     inc(p);\n   end;\n  end;\n\n  RectangleMapRemoveCorners(result,options);\nend;\n\nfunction CreateRoundRectangleMap(width,height,border: integer; options: TRectangleMapOptions = []): TBGRABitmap;\nvar d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    h: integer;\nbegin\n  MapBorderLimit(width,height,options,border);\n\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and not (rmoNoTopBorder in options) and (xb < border) and (yb < border) then d := border-sqrt(sqr(border-xb)+sqr(border-yb)) else\n     if not (rmoNoLeftBorder in options) and not (rmoNoBottomBorder in options) and (xb < border) and (yb > height-1-border) then d := border-sqrt(sqr(border-xb)+sqr(border-(height-1-yb))) else\n     if not (rmoNoRightBorder in options) and not (rmoNoTopBorder in options) and (xb > width-1-border) and (yb < border) then d := border-sqrt(sqr(border-(width-1-xb))+sqr(border-yb)) else\n     if not (rmoNoRightBorder in options) and not (rmoNoBottomBorder in options) and (xb > width-1-border) and (yb > height-1-border) then d := border-sqrt(sqr(border-(width-1-xb))+sqr(border-(height-1-yb))) else\n     if not (rmoNoLeftBorder in options) and (xb < border) then d := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) then d := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) then d := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) then d := height-1-yb else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     d := (d+1)*border/(border+1);\n\n     if d < 0 then\n       p^ := BGRAPixelTransparent else\n     begin\n       if rmoLinearBorder in options then h := trunc(d*256/border) else\n         h := round(sin((d+1/2)/border*Pi/2)*255);\n\n       p^.red := h;\n       p^.green := h;\n       p^.blue := h;\n       if d < 1 then p^.alpha := round(d*255) else\n         p^.alpha := 255;\n     end;\n     inc(p);\n   end;\n  end;\nend;\n\nfunction CreatePerlinNoiseMap(AWidth, AHeight: integer; HorizontalPeriod: Single;\n  VerticalPeriod: Single; Exponent: Double = 1; ResampleFilter: TResampleFilter = rfCosine): TBGRABitmap;\n\n  procedure AddNoise(frequencyH, frequencyV: integer; amplitude: byte; dest: TBGRABitmap);\n  var small,resampled: TBGRABitmap;\n      p: PBGRAPixel;\n      i: Integer;\n  begin\n    if (frequencyH = 0) or (frequencyV = 0) then exit;\n    small := TBGRABitmap.Create(frequencyH,frequencyV);\n    p := small.data;\n    for i := 0 to small.NbPixels-1 do\n    begin\n      p^.red := random(amplitude);\n      p^.green := p^.red;\n      p^.blue := p^.green;\n      p^.alpha := 255;\n      inc(p);\n    end;\n    small.ResampleFilter := ResampleFilter;\n    resampled := small.Resample(dest.Width,dest.Height);\n    dest.BlendImage(0,0,resampled,boAdditive);\n    resampled.Free;\n    small.Free;\n  end;\n\nvar\n  i: Integer;\n  normalizeFilter: TBGRAFilterScannerNormalize;\n\nbegin\n  result := TBGRABitmap.Create(AWidth,AHeight);\n  for i := 0 to 5 do\n    AddNoise(round(AWidth / HorizontalPeriod / (32 shr i)),round(AHeight / VerticalPeriod / (32 shr i)), round(exp(ln((128 shr i)/128)*Exponent)*128),result);\n\n  normalizeFilter := TBGRAFilterScannerNormalize.Create(result, Point(0,0), rect(0,0,AWidth,AHeight), false);\n  result.Fill(normalizeFilter, dmSet);\n  normalizeFilter.Free;\n\n  BGRAReplace(result, BGRAFilterBlur.FilterBlurRadial(result, 1, 1, rbNormal));\nend;\n\nfunction CreateCyclicPerlinNoiseMap(AWidth, AHeight: integer; HorizontalPeriod: Single = 1;\n  VerticalPeriod: Single = 1; Exponent: Double = 1; ResampleFilter: TResampleFilter = rfCosine): TBGRABitmap;\n\n  procedure AddNoise(frequencyH, frequencyV: integer; amplitude: byte; dest: TBGRABitmap);\n  var small,cycled,resampled: TBGRABitmap;\n      p: PBGRAPixel;\n      i: Integer;\n      x, y: Int64;\n  begin\n    if (frequencyH = 0) or (frequencyV = 0) then exit;\n    small := TBGRABitmap.Create(frequencyH,frequencyV);\n    p := small.data;\n    for i := 0 to small.NbPixels-1 do\n    begin\n      p^.red := random(amplitude);\n      p^.green := p^.red;\n      p^.blue := p^.green;\n      p^.alpha := 255;\n      inc(p);\n    end;\n    cycled := small.GetPart(rect(-2,-2,small.Width+2,small.Height+2));\n    cycled.ResampleFilter := ResampleFilter;\n    resampled := cycled.Resample(round((cycled.Width-1)*(dest.Width/frequencyH)),round((cycled.Height-1)*(dest.Height/frequencyV)));\n    x := round(-2*(dest.Width/frequencyH));\n    y := round(-2*(dest.Height/frequencyV));\n    dest.BlendImage(x,y,resampled,boAdditive);\n    resampled.Free;\n    cycled.Free;\n    small.Free;\n  end;\n\nvar\n  i: Integer;\n  temp: TBGRABitmap;\n  normalizeFilter: TBGRAFilterScannerNormalize;\n\nbegin\n  result := TBGRABitmap.Create(AWidth,AHeight);\n  for i := 0 to 5 do\n    AddNoise(round(AWidth / HorizontalPeriod / (32 shr i)),round(AHeight / VerticalPeriod / (32 shr i)), round(exp(ln((128 shr i)/128)*Exponent)*128),result);\n\n  normalizeFilter := TBGRAFilterScannerNormalize.Create(result, Point(0,0), rect(0,0,AWidth,AHeight), false);\n  result.Fill(normalizeFilter, dmSet);\n  normalizeFilter.Free;\n\n  BGRAReplace(result, BGRAFilterBlur.FilterBlurRadial(result, 1, 1, rbNormal));\nend;\n\nfunction CreateRoundRectanglePreciseMap(width, height, border: integer;\n  options: TRectangleMapOptions): TBGRABitmap;\nvar d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    h: single;\nbegin\n  MapBorderLimit(width,height,options,border);\n\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and not (rmoNoTopBorder in options) and (xb < border) and (yb < border) then d := border-sqrt(sqr(border-xb)+sqr(border-yb)) else\n     if not (rmoNoLeftBorder in options) and not (rmoNoBottomBorder in options) and (xb < border) and (yb > height-1-border) then d := border-sqrt(sqr(border-xb)+sqr(border-(height-1-yb))) else\n     if not (rmoNoRightBorder in options) and not (rmoNoTopBorder in options) and (xb > width-1-border) and (yb < border) then d := border-sqrt(sqr(border-(width-1-xb))+sqr(border-yb)) else\n     if not (rmoNoRightBorder in options) and not (rmoNoBottomBorder in options) and (xb > width-1-border) and (yb > height-1-border) then d := border-sqrt(sqr(border-(width-1-xb))+sqr(border-(height-1-yb))) else\n     if not (rmoNoLeftBorder in options) and (xb < border) then d := xb else\n     if not (rmoNoRightBorder in options) and (xb > width-1-border) then d := width-1-xb else\n     if not (rmoNoTopBorder in options) and (yb < border) then d := yb else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-border) then d := height-1-yb else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     d := (d+1)*border/(border+1);\n\n     if d < 0 then\n       p^ := BGRAPixelTransparent else\n     begin\n       if rmoLinearBorder in options then h := d/border else\n         h := sin((d+1/2)/border*Pi/2);\n\n       if d < 1 then p^:= MapHeightToBGRA(h,round(d*255)) else\n         p^ := MapHeightToBGRA(h,255);\n     end;\n     inc(p);\n   end;\n  end;\nend;\n\nfunction CreateRoundRectanglePreciseMap(width, height, borderWidth,\n  borderHeight: integer; options: TRectangleMapOptions): TBGRABitmap;\nvar d: single;\n    xb,yb: integer;\n    p: PBGRAPixel;\n    h,smallStep,factor: single;\n    minBorder: integer;\nbegin\n  MapBorderLimit(width,height,options,borderWidth,borderHeight);\n\n  minBorder := min(borderWidth,borderHeight);\n  if minBorder > 0 then smallStep := 1/minBorder else smallStep:= 0;\n  factor := minBorder/(minBorder+1);\n  result := TBGRABitmap.Create(width,height);\n  for yb := 0 to height-1 do\n  begin\n   p := result.scanline[yb];\n   for xb := 0 to width-1 do\n   begin\n     if not (rmoNoLeftBorder in options) and not (rmoNoTopBorder in options) and (xb < borderWidth) and (yb < borderHeight) then\n        d := 1-sqrt(sqr((borderWidth-xb)/borderWidth)+sqr((borderHeight-yb)/borderHeight)) else\n     if not (rmoNoLeftBorder in options) and not (rmoNoBottomBorder in options) and (xb < borderWidth) and (yb > height-1-borderHeight) then\n        d := 1-sqrt(sqr((borderWidth-xb)/borderWidth)+sqr((borderHeight-(height-1-yb))/borderHeight)) else\n     if not (rmoNoRightBorder in options) and not (rmoNoTopBorder in options) and (xb > width-1-borderWidth) and (yb < borderHeight) then\n        d := 1-sqrt(sqr((borderWidth-(width-1-xb))/borderWidth)+sqr((borderHeight-yb)/borderHeight)) else\n     if not (rmoNoRightBorder in options) and not (rmoNoBottomBorder in options) and (xb > width-1-borderWidth) and (yb > height-1-borderHeight) then\n        d := 1-sqrt(sqr((borderWidth-(width-1-xb))/borderWidth)+sqr((borderHeight-(height-1-yb))/borderHeight)) else\n     if not (rmoNoLeftBorder in options) and (xb < borderWidth) then d := xb/borderWidth else\n     if not (rmoNoRightBorder in options) and (xb > width-1-borderWidth) then d := (width-1-xb)/borderWidth else\n     if not (rmoNoTopBorder in options) and (yb < borderHeight) then d := yb/borderHeight else\n     if not (rmoNoBottomBorder in options) and (yb > height-1-borderHeight) then d := (height-1-yb)/borderHeight else\n     begin\n       p^ := BGRAWhite;\n       inc(p);\n       Continue;\n     end;\n\n     d := (d + smallStep)*factor;\n\n     if d < 0 then\n       p^ := BGRAPixelTransparent else\n     begin\n       if rmoLinearBorder in options then h := d else\n         h := sin((d+smallStep*0.5)*Pi*0.5);\n\n       if d < smallStep then p^:= MapHeightToBGRA(h,round(d/smallStep*255)) else\n         p^ := MapHeightToBGRA(h,255);\n     end;\n     inc(p);\n   end;\n  end;\nend;\n\ninitialization\n\n  Randomize;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgragradientscanner.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Scanners that generate gradients. This allows to use gradients as textures }\nunit BGRAGradientScanner;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRABitmapTypes, BGRATransform;\n\ntype\n  {* Color interpolation in gradients }\n  TBGRAColorInterpolation = (\n    {** Using sRGB colorspace }\n    ciStdRGB,\n    {** Using linear RGB colorspace }\n    ciLinearRGB,\n    {** Using HSL colorspace, rotating hue towards positive }\n    ciLinearHSLPositive,\n    {** Using HSL colorspace, rotating hue towards negative }\n    ciLinearHSLNegative,\n    {** Using GSB colorspace, rotating hue towards positive }\n    ciGSBPositive,\n    {** Using GSB colorspace, rotating hue towards negative }\n    ciGSBNegative,\n    {** Using HSL colorspace, rotating hue for shortest path }\n    ciLinearHSLAuto,\n    {** Using GSB colorspace, rotating hue for shortest path }\n    ciGSBAuto);\n\n  {* Gradient reptition option }\n  TBGRAGradientRepetition = (\n    {** Pad with the end colors }\n    grPad,\n    {** Repeat gradient by jumping from end to start }\n    grRepeat,\n    {** Repeat gradient using reflection }\n    grReflect,\n    {** Repeat gradient using the sine of the position }\n    grSine);\n\n  { Abstract simple RGBA gradient between two colors }\n  TBGRASimpleGradient = class(TBGRACustomGradient)\n  protected\n    FColor1,FColor2: TBGRAPixel;\n    ec1,ec2: TExpandedPixel;\n    FRepetition: TBGRAGradientRepetition;\n    function InterpolateToBGRA(position: word): TBGRAPixel; virtual; abstract;\n    function InterpolateToExpanded(position: word): TExpandedPixel; virtual; abstract;\n  public\n    class function CreateAny(AInterpolation: TBGRAColorInterpolation; AColor1,AColor2: TBGRAPixel; ARepetition: TBGRAGradientRepetition): TBGRASimpleGradient; overload; static;\n    class function CreateAny(AInterpolation: TBGRAColorInterpolation; AColor1,AColor2: TExpandedPixel; ARepetition: TBGRAGradientRepetition): TBGRASimpleGradient; overload; static;\n    constructor Create(AColor1,AColor2: TBGRAPixel; ARepetition: TBGRAGradientRepetition); overload; //do not call directly\n    constructor Create(AColor1,AColor2: TExpandedPixel; ARepetition: TBGRAGradientRepetition); overload; //do not call directly\n    function GetColorAt(position: integer): TBGRAPixel; override;\n    function GetColorAtF(position: single): TBGRAPixel; override;\n    function GetExpandedColorAt(position: integer): TExpandedPixel; override;\n    function GetExpandedColorAtF(position: single): TExpandedPixel; override;\n    function GetAverageColor: TBGRAPixel; override;\n    function GetAverageExpandedColor: TExpandedPixel; override;\n    function GetMonochrome: boolean; override;\n    property Repetition: TBGRAGradientRepetition read FRepetition write FRepetition;\n  end;\n\n  { Simple RGBA gradient between two colors without gamma correction }\n  TBGRASimpleGradientWithoutGammaCorrection = class(TBGRASimpleGradient)\n  protected\n    function InterpolateToBGRA(position: word): TBGRAPixel; override;\n    function InterpolateToExpanded(position: word): TExpandedPixel; override;\n  public\n    constructor Create(Color1,Color2: TBGRAPixel; ARepetition: TBGRAGradientRepetition = grPad); overload;\n    constructor Create(Color1,Color2: TExpandedPixel; ARepetition: TBGRAGradientRepetition = grPad); overload;\n  end;\n\n  { Simple RGBA gradient between two colors with gamma correction }\n  TBGRASimpleGradientWithGammaCorrection = class(TBGRASimpleGradient)\n  protected\n    function InterpolateToBGRA(position: word): TBGRAPixel; override;\n    function InterpolateToExpanded(position: word): TExpandedPixel; override;\n  public\n    constructor Create(Color1,Color2: TBGRAPixel; ARepetition: TBGRAGradientRepetition = grPad); overload;\n    constructor Create(Color1,Color2: TExpandedPixel; ARepetition: TBGRAGradientRepetition = grPad); overload;\n  end;\n\n  THueGradientOption = (hgoRepeat, hgoReflect,                       //repetition\n                        hgoPositiveDirection, hgoNegativeDirection,\n                        hgoDirectionAuto,                            //hue orientation\n                        hgoHueCorrection, hgoLightnessCorrection,\n                        hgoGuessNonSaturatedHue                      //color interpolation\n                        );\n  THueGradientOptions = set of THueGradientOption;\n\n  { Hue gradient between two colors }\n  TBGRAHueGradient = class(TBGRASimpleGradient)\n  private\n    hsla1,hsla2: THSLAPixel;\n    hue1,hue2: LongWord;\n    FOptions: THueGradientOptions;\n    procedure Init(c1,c2: THSLAPixel; AOptions: THueGradientOptions);\n    function InterpolateColor(position: word): THSLAPixel;\n  protected\n    function InterpolateToBGRA(position: word): TBGRAPixel; override;\n    function InterpolateToExpanded(position: word): TExpandedPixel; override;\n  public\n    constructor Create(Color1,Color2: TBGRAPixel; options: THueGradientOptions); overload;\n    constructor Create(Color1,Color2: TExpandedPixel; options: THueGradientOptions); overload;\n    constructor Create(Color1,Color2: THSLAPixel; options: THueGradientOptions); overload;\n    constructor Create(AHue1,AHue2: Word; Saturation,Lightness: Word; options: THueGradientOptions); overload;\n    function GetAverageColor: TBGRAPixel; override;\n    function GetAverageExpandedColor: TExpandedPixel; override;\n    function GetMonochrome: boolean; override;\n  end;\n\n  TGradientInterpolationFunction = function(t: single): single of object;\n\n  { Abstract class multi color stops gradient }\n  TBGRACustomMultiGradient = class(TBGRACustomGradient)\n  private\n    function GetColorCount: integer;\n  protected\n    FColors: array of TBGRAPixel;\n    FPositions: array of integer;\n    FPositionsF: array of single;\n    FEColors: array of TExpandedPixel;\n    FRepetition: TBGRAGradientRepetition;\n    FInterpolationFunction: TGradientInterpolationFunction;\n    procedure Init(Colors: array of TBGRAPixel; Positions0To1: array of single);\n    procedure Init(Colors: array of TExpandedPixel; Positions0To1: array of single);\n  public\n    class function CreateAny(Colors: array of TBGRAPixel; Positions0To1: array of single;\n      AInterpolation: TBGRAColorInterpolation; ARepetition: TBGRAGradientRepetition = grPad): TBGRACustomMultiGradient;\n    class function CreateAny(Colors: array of TEXpandedPixel; Positions0To1: array of single;\n      AInterpolation: TBGRAColorInterpolation; ARepetition: TBGRAGradientRepetition = grPad): TBGRACustomMultiGradient;\n    function CosineInterpolation(t: single): single;\n    function HalfCosineInterpolation(t: single): single;\n    function GetMonochrome: boolean; override;\n    property InterpolationFunction: TGradientInterpolationFunction read FInterpolationFunction write FInterpolationFunction;\n    property Repetition: TBGRAGradientRepetition read FRepetition write FRepetition;\n    property ColorCount: integer read GetColorCount;\n  end;\n\n  { Multi-gradient using RGBA interpolation }\n  TBGRAMultiGradient = class(TBGRACustomMultiGradient)\n  protected\n    procedure Init(Colors: array of TBGRAPixel; Positions0To1: array of single; AGammaCorrection, ACycle: boolean);\n    procedure Init(Colors: array of TExpandedPixel; Positions0To1: array of single; AGammaCorrection, ACycle: boolean);\n  public\n    GammaCorrection: boolean;\n    constructor Create(Colors: array of TBGRAPixel; Positions0To1: array of single; AGammaCorrection: boolean; ACycle: boolean = false);\n    constructor Create(Colors: array of TBGRAPixel; Positions0To1: array of single; AGammaCorrection: boolean; ARepetition: TBGRAGradientRepetition);\n    constructor Create(Colors: array of TBGRAPixel; AGammaCorrection: boolean; ACycle: boolean = false);\n    constructor Create(Colors: array of TBGRAPixel; AGammaCorrection: boolean; ARepetition: TBGRAGradientRepetition);\n    constructor Create(Colors: array of TExpandedPixel; ARepetition: TBGRAGradientRepetition);\n    constructor Create(Colors: array of TExpandedPixel; Positions0To1: array of single; ARepetition: TBGRAGradientRepetition);\n    function GetColorAt(position: integer): TBGRAPixel; override;\n    function GetExpandedColorAt(position: integer): TExpandedPixel; override;\n    function GetAverageColor: TBGRAPixel; override;\n    function GetAverageExpandedColor: TExpandedPixel; override;\n  end;\n\n  { Multi-gradient using hue interpolation }\n  TBGRAHueMultiGradient = class(TBGRACustomMultiGradient)\n  private\n    FHueColors: array of THSLAPixel;\n    FHueGradients: array of TBGRAHueGradient;\n    procedure InitHueGradients(AOptions: THueGradientOptions);\n    procedure InitHueGradients(AInterpolation: TBGRAColorInterpolation);\n    procedure FreeHueGradients;\n  public\n    constructor Create(Colors: array of TBGRAPixel; Positions0To1: array of single;\n      options: THueGradientOptions);\n    constructor Create(Colors: array of TExpandedPixel; Positions0To1: array of single;\n      options: THueGradientOptions);\n    constructor Create(Colors: array of TBGRAPixel; Positions0To1: array of single;\n      AInterpolation: TBGRAColorInterpolation; ARepetition: TBGRAGradientRepetition = grPad);\n    constructor Create(Colors: array of TExpandedPixel; Positions0To1: array of single;\n      AInterpolation: TBGRAColorInterpolation; ARepetition: TBGRAGradientRepetition = grPad);\n    destructor Destroy; override;\n    function GetColorAt(position: integer): TBGRAPixel; override;\n    function GetExpandedColorAt(position: integer): TExpandedPixel; override;\n    function GetAverageColor: TBGRAPixel; override;\n    function GetAverageExpandedColor: TExpandedPixel; override;\n  end;\n\n  { Buffered gradient to accelerate computation of complex gradients }\n  TBGRABufferedGradient = class(TBGRACustomGradient)\n  protected\n    FGradient: TBGRACustomGradient;\n    FGradientOwned: boolean;\n    FPadded: boolean;\n    FAverageColorComputed: boolean;\n    FAverageColorExpanded: TExpandedPixel;\n    FMonochromeComputed: boolean;\n    FMonochrome: boolean;\n    FBufferSize, FBufferShift: integer;\n    FColorTab: array of TBGRAPixel;\n    FColorComputed: bitpacked array[0..65535] of boolean;\n    FRepetition: TBGRAGradientRepetition;\n  public\n    constructor Create(AGradient: TBGRACustomGradient; AOwner: boolean; APadded: boolean;\n      ABufferSize: integer);\n    destructor Destroy; override;\n    {** Returns the color at a given ''position''. The reference range is\n        from 0 to 65535, however values beyond are possible as well }\n    function GetColorAt(position: integer): TBGRAPixel; override;\n    {** Returns the average color of the gradient }\n    function GetAverageColor: TBGRAPixel; override;\n    function GetAverageExpandedColor: TExpandedPixel; override;\n    function GetMonochrome: boolean; override;\n  end;\n\n  TBGRAGradientScannerInternalScanNextFunc = function():single of object;\n  TBGRAGradientScannerInternalScanAtFunc = function(const p: TPointF):single of object;\n\n  { Scanner that renders a gradient }\n  TBGRAGradientScanner = class(TBGRACustomScanner)\n  protected\n    FGradientType: TGradientType;\n    FOrigin,FDir1,FDir2: TPointF;\n    FRelativeFocal: TPointF;\n    FRadius, FFocalRadius: single;\n    FTransform, FHiddenTransform: TAffineMatrix;\n    FSinus: Boolean;\n    FGradient: TBGRACustomGradient;\n    FGradientOwner: boolean;\n    FFlipGradient: boolean;\n\n    FMatrix: TAffineMatrix;\n    FRepeatHoriz, FIsAverage: boolean;\n    FAverageColor: TBGRAPixel;\n    FAverageExpandedColor: TExpandedPixel;\n    FScanNextFunc: TBGRAGradientScannerInternalScanNextFunc;\n    FScanAtFunc: TBGRAGradientScannerInternalScanAtFunc;\n    FGetGradientColor: TBGRAGradientGetColorAtFloatFunc;\n    FGetGradientExpandedColor: TBGRAGradientGetExpandedColorAtFloatFunc;\n    FFocalDistance: single;\n    FFocalDirection, FFocalNormal: TPointF;\n    FRadialDenominator, FRadialDeltaSign, maxW1, maxW2: single;\n\n    FPosition: TPointF;\n    FHorizColor: TBGRAPixel;\n    FHorizExpandedColor: TExpandedPixel;\n\n    procedure Init(AGradientType: TGradientType; AOrigin, d1: TPointF; ATransform: TAffineMatrix; Sinus: Boolean=False); overload;\n    procedure Init(AGradientType: TGradientType; AOrigin, d1, d2: TPointF; ATransform: TAffineMatrix; Sinus: Boolean=False); overload;\n    procedure Init(AOrigin: TPointF; ARadius: single; AFocal: TPointF; AFocalRadius: single; ATransform: TAffineMatrix; AHiddenTransform: TAffineMatrix); overload;\n\n    procedure InitGradientType;\n    procedure InitTransform;\n    procedure InitGradient;\n\n    function ComputeRadialFocal(const p: TPointF): single;\n\n    function ScanNextLinear: single;\n    function ScanNextReflected: single;\n    function ScanNextDiamond: single;\n    function ScanNextRadial: single;\n    function ScanNextRadial2: single;\n    function ScanNextRadialFocal: single;\n    function ScanNextAngular: single;\n\n    function ScanAtLinear(const p: TPointF): single;\n    function ScanAtReflected(const p: TPointF): single;\n    function ScanAtDiamond(const p: TPointF): single;\n    function ScanAtRadial(const p: TPointF): single;\n    function ScanAtRadial2(const p: TPointF): single;\n    function ScanAtRadialFocal(const p: TPointF): single;\n    function ScanAtAngular(const p: TPointF): single;\n\n    function ScanNextInline: TBGRAPixel; inline;\n    function ScanNextExpandedInline: TExpandedPixel; inline;\n    procedure SetTransform(AValue: TAffineMatrix);\n    procedure SetFlipGradient(AValue: boolean);\n    procedure SetSinus(AValue: boolean);\n    function GetGradientColor(a: single): TBGRAPixel;\n    function GetGradientExpandedColor(a: single): TExpandedPixel;\n    function GetGradientColorFlipped(a: single): TBGRAPixel;\n    function GetGradientExpandedColorFlipped(a: single): TExpandedPixel;\n    function GetGradientColorSinus(a: single): TBGRAPixel;\n    function GetGradientExpandedColorSinus(a: single): TExpandedPixel;\n    procedure UpdateGetGradientColorFunctions;\n  public\n    constructor Create(AGradientType: TGradientType; AOrigin, d1: TPointF); overload;\n    constructor Create(AGradientType: TGradientType; AOrigin, d1, d2: TPointF); overload;\n    constructor Create(AOrigin, d1, d2, AFocal: TPointF; ARadiusRatio: single = 1; AFocalRadiusRatio: single = 0); overload;\n    constructor Create(AOrigin: TPointF; ARadius: single; AFocal: TPointF; AFocalRadius: single); overload;\n\n    constructor Create(c1, c2: TBGRAPixel; AGradientType: TGradientType; AOrigin, d1: TPointF;\n                       gammaColorCorrection: boolean = True; Sinus: Boolean=False); overload;\n    constructor Create(c1, c2: TBGRAPixel; AGradientType: TGradientType; AOrigin, d1, d2: TPointF;\n                       gammaColorCorrection: boolean = True; Sinus: Boolean=False); overload;\n\n    constructor Create(gradient: TBGRACustomGradient; AGradientType: TGradientType; AOrigin, d1: TPointF;\n                       Sinus: Boolean=False; AGradientOwner: Boolean=False); overload;\n    constructor Create(gradient: TBGRACustomGradient; AGradientType: TGradientType; AOrigin, d1, d2: TPointF;\n                       Sinus: Boolean=False; AGradientOwner: Boolean=False); overload;\n    constructor Create(gradient: TBGRACustomGradient; AOrigin: TPointF; ARadius: single; AFocal: TPointF;\n                       AFocalRadius: single; AGradientOwner: Boolean=False); overload;\n\n    procedure SetGradient(c1,c2: TBGRAPixel; AGammaCorrection: boolean = true); overload;\n    procedure SetGradient(AGradient: TBGRACustomGradient; AOwner: boolean); overload;\n    destructor Destroy; override;\n    procedure ScanMoveTo(X, Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanNextExpandedPixel: TExpandedPixel; override;\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    function ScanAtExpanded(X, Y: Single): TExpandedPixel; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    function IsScanPutPixelsDefined: boolean; override;\n    property Transform: TAffineMatrix read FTransform write SetTransform;\n    property Gradient: TBGRACustomGradient read FGradient;\n    property FlipGradient: boolean read FFlipGradient write SetFlipGradient;\n    property Sinus: boolean Read FSinus write SetSinus;\n  end;\n\n  { Scanner of constant color }\n  TBGRAConstantScanner = class(TBGRAGradientScanner)\n    constructor Create(c: TBGRAPixel);\n  end;\n\n  { @abstract(Scanner of random color.)\n\n**Example filling a form with random pixels:**\n\n@image(../doc/img/randomscanner.png)\n\n```pascal\nuses ..., BGRABitmap, BGRAGradientScanner;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp: TBGRABitmap;\n  scan: TBGRARandomScanner;\nbegin\n  bmp := TBGRABitmap.Create(ClientWidth, ClientHeight);\n  scan := TBGRARandomScanner.Create(False, 255);\n  bmp.Fill(scan);\n  scan.Free;\n  bmp.Draw(Canvas,0,0);\n  bmp.Free;\nend;\n```}\n  TBGRARandomScanner = class(TBGRACustomScanner)\n  private\n    FOpacity: byte;\n    FGrayscale: boolean;\n    FRandomBuffer, FRandomBufferCount: integer;\n  public\n    constructor Create(AGrayscale: Boolean; AOpacity: byte);\n    function ScanAtInteger({%H-}X, {%H-}Y: integer): TBGRAPixel; override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt({%H-}X, {%H-}Y: Single): TBGRAPixel; override;\n  end;\n\n  { Scanner of triangle scanner in linear RGBA colorspace }\n  TBGRAGradientTriangleScanner= class(TBGRACustomScanner)\n  protected\n    FMatrix: TAffineMatrix;\n    FColor1,FDiff2,FDiff3,FStep: TColorF;\n    FCurColor: TColorF;\n  public\n    constructor Create(pt1,pt2,pt3: TPointF; c1,c2,c3: TBGRAPixel);\n    procedure ScanMoveTo(X,Y: Integer); override;\n    procedure ScanMoveToF(X,Y: Single);\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanNextExpandedPixel: TExpandedPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n  end;\n\n  { Scanner filling a mask with a solid color }\n  TBGRASolidColorMaskScanner = class(TBGRACustomScanner)\n  private\n    FOffset: TPoint;\n    FMask: IBGRAScanner;\n    FSolidColor: TBGRAPixel;\n  public\n    constructor Create(AMask: IBGRAScanner; AOffset: TPoint; ASolidColor: TBGRAPixel);\n    destructor Destroy; override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    procedure ScanMoveTo(X,Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    property Color: TBGRAPixel read FSolidColor write FSolidColor;\n  end;\n\n  { Scanner filling a mask with a texture }\n  TBGRATextureMaskScanner = class(TBGRACustomScanner)\n  private\n    FOffset: TPoint;\n    FMask: IBGRAScanner;\n    FTexture: IBGRAScanner;\n    FTextureScanNext : TScanNextPixelFunction;\n    FTextureScanAt : TScanAtFunction;\n    FGlobalOpacity: Byte;\n    FMemTex: packed array of TBGRAPixel;\n  public\n    constructor Create(AMask: IBGRAScanner; AOffset: TPoint; ATexture: IBGRAScanner; AGlobalOpacity: Byte = 255);\n    destructor Destroy; override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    procedure ScanMoveTo(X,Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n  end;\n\n  { Scanner applying an opacity }\n  TBGRAOpacityScanner = class(TBGRACustomScanner)\n  private\n      FTexture: IBGRAScanner;\n      FOwnedScanner: TBGRACustomScanner;\n      FGlobalOpacity: Byte;\n      FScanNext : TScanNextPixelFunction;\n      FScanAt : TScanAtFunction;\n      FMemTex: packed array of TBGRAPixel;\n  public\n    constructor Create(ATexture: IBGRAScanner; AGlobalOpacity: Byte = 255);\n    constructor Create(ATexture: TBGRACustomScanner; AGlobalOpacity: Byte; AOwned: boolean);\n    destructor Destroy; override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    procedure ScanMoveTo(X,Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n  end;\n\nimplementation\n\nuses BGRABlend, Math;\n\nfunction ApplyCycleToPosition(const APosition: integer;\n                   ARepetition: TBGRAGradientRepetition): Word;\nvar temp: integer;\nbegin\n  case ARepetition of\n  grSine: begin\n    temp := Sin65536(APosition and $ffff);\n    if temp > 65535 then\n      result := 65535\n    else\n      result := temp;\n  end;\n  grRepeat: result := APosition and $ffff;\n  grReflect:\n    begin\n      temp := APosition and $1ffff;\n      if temp >= $10000 then\n        result := $1ffff - temp\n      else\n        result := temp;\n    end;\n  else\n    begin\n      if APosition <= 0 then\n        result := 0 else\n      if APosition >= 65536 then\n        result := 65535\n      else\n        result := APosition;\n    end;\n  end;\nend;\n\nfunction ApplyCycleToPosition(const APosition: integer;\n                   ARepetition: TBGRAGradientRepetition;\n                   AMinPos, AMaxPos: integer): integer;\nconst TwoPi = 6.283185307179586476925286766559;\nvar delta: integer;\nbegin\n  if (AMinPos = 0) and (AMaxPos = 65536) then\n    exit(ApplyCycleToPosition(APosition, ARepetition));\n  delta := AMaxPos - AMinPos;\n  case ARepetition of\n  grSine:\n    result :=\n      AMinPos +\n      round((sin((APosition - AMinPos) / delta * TwoPi) + 1) * delta * 0.5);\n  grRepeat:\n    begin\n      result := (APosition - AMinPos) mod delta;\n      if result < 0 then inc(result, delta);\n      inc(result, AMinPos);\n    end;\n  grReflect:\n    begin\n      result := (APosition - AMinPos) mod (delta+delta);\n      if result < 0 then inc(result, delta+delta);\n      if result >= delta then result := delta+delta-1 - result;\n      inc(result, AMinPos);\n    end;\n  else\n    begin\n      if APosition <= AMinPos then\n        result := AMinPos else\n      if APosition >= AMaxPos then\n        result := AMaxPos\n      else\n        result := APosition;\n    end;\n  end;\nend;\n\nfunction ApplyCycleToPositionF(const APositionF: single;\n                   ARepetition: TBGRAGradientRepetition): Word;\nvar temp: integer;\nbegin\n  case ARepetition of\n  grSine: begin\n    temp := Sin65536(round(APositionF*65536) and $ffff);\n    if temp > 65535 then\n      result := 65535\n    else\n      result := temp;\n  end;\n  grRepeat: result := trunc(frac(APositionF)*65536);\n  grReflect:\n    begin\n      if (abs(frac(APositionF*0.5)) < 0.5) xor (APositionF < 0) then\n        result := round(frac(APositionF)*65535)\n      else\n        result := 65535 - round(frac(APositionF)*65535);\n    end;\n  else\n    begin\n      if APositionF <= 0 then\n        result := 0 else\n      if APositionF >= 1 then\n        result := 65535\n      else\n        result := round(APositionF*65535);\n    end;\n  end;\nend;\n\n{ TBGRABufferedGradient }\n\nconstructor TBGRABufferedGradient.Create(AGradient: TBGRACustomGradient;\n  AOwner: boolean; APadded: boolean; ABufferSize: integer);\nvar\n  bufferPowSize: integer;\nbegin\n  FGradient := AGradient;\n  FGradientOwned:= AOwner;\n  FPadded := APadded;\n  bufferPowSize := 0;\n  while ABufferSize > 1 do\n  begin\n    ABufferSize := ABufferSize shr 1;\n    inc(bufferPowSize);\n  end;\n  if bufferPowSize > 16 then bufferPowSize := 16;\n  FBufferSize:= 1 shl bufferPowSize;\n  setlength(FColorTab, FBufferSize);\n  FBufferShift := 16-bufferPowSize;\nend;\n\ndestructor TBGRABufferedGradient.Destroy;\nbegin\n  if FGradientOwned then FGradient.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRABufferedGradient.GetColorAt(position: integer): TBGRAPixel;\nvar\n  posBuf: Integer;\nbegin\n  if FPadded then\n  begin\n    if position < 0 then\n      position := 0 else\n    if position >= 65536 then\n      position := 65536;\n    posBuf := position shr FBufferShift;\n    if posBuf > FBufferSize shr 1 then dec(posBuf);\n  end else\n  begin\n    position := position and 131071;\n    posBuf := position shr (FBufferShift+1);\n  end;\n\n  if not FColorComputed[posBuf] then\n  begin\n    result := FGradient.GetColorAt(position);\n    FColorTab[posBuf] := result;\n    FColorComputed[posBuf] := true;\n  end else\n    result := FColorTab[posBuf];\nend;\n\nfunction TBGRABufferedGradient.GetAverageColor: TBGRAPixel;\nbegin\n  result := GammaCompression(GetAverageExpandedColor);\nend;\n\nfunction TBGRABufferedGradient.GetAverageExpandedColor: TExpandedPixel;\nbegin\n  if not FAverageColorComputed then\n  begin\n    FAverageColorExpanded := FGradient.GetAverageExpandedColor;\n    FAverageColorComputed := true;\n  end;\n  result := FAverageColorExpanded;\nend;\n\nfunction TBGRABufferedGradient.GetMonochrome: boolean;\nbegin\n  if not FMonochromeComputed then\n  begin\n    FMonochrome:= FGradient.Monochrome;\n    FMonochromeComputed:= true;\n  end;\n  result := FMonochrome;\nend;\n\n{ TBGRASimpleGradient }\n\nconstructor TBGRASimpleGradient.Create(AColor1, AColor2: TBGRAPixel; ARepetition: TBGRAGradientRepetition);\nbegin\n  FColor1 := AColor1;\n  FColor2 := AColor2;\n  ec1 := GammaExpansion(AColor1);\n  ec2 := GammaExpansion(AColor2);\n  FRepetition:= ARepetition;\nend;\n\nconstructor TBGRASimpleGradient.Create(AColor1, AColor2: TExpandedPixel;\n  ARepetition: TBGRAGradientRepetition);\nbegin\n  FColor1 := GammaCompression(AColor1);\n  FColor2 := GammaCompression(AColor2);\n  ec1 := AColor1;\n  ec2 := AColor2;\n  FRepetition:= ARepetition;\nend;\n\nclass function TBGRASimpleGradient.CreateAny(AInterpolation: TBGRAColorInterpolation;\n  AColor1, AColor2: TBGRAPixel; ARepetition: TBGRAGradientRepetition): TBGRASimpleGradient;\nbegin\n  case AInterpolation of\n    ciStdRGB: result := TBGRASimpleGradientWithoutGammaCorrection.Create(AColor1,AColor2);\n    ciLinearRGB: result := TBGRASimpleGradientWithGammaCorrection.Create(AColor1,AColor2);\n    ciLinearHSLAuto: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoDirectionAuto]);\n    ciLinearHSLPositive: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoPositiveDirection]);\n    ciLinearHSLNegative: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoNegativeDirection]);\n    ciGSBAuto: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                           [hgoDirectionAuto, hgoHueCorrection, hgoLightnessCorrection]);\n    ciGSBPositive: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                               [hgoPositiveDirection, hgoHueCorrection, hgoLightnessCorrection]);\n    ciGSBNegative: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                               [hgoNegativeDirection, hgoHueCorrection, hgoLightnessCorrection]);\n    else\n      raise Exception.Create('Unknown color interpolation');\n  end;\n  result.Repetition := ARepetition;\nend;\n\nclass function TBGRASimpleGradient.CreateAny(AInterpolation: TBGRAColorInterpolation;\n  AColor1, AColor2: TExpandedPixel; ARepetition: TBGRAGradientRepetition): TBGRASimpleGradient;\nbegin\n  case AInterpolation of\n    ciStdRGB: result := TBGRASimpleGradientWithoutGammaCorrection.Create(AColor1,AColor2);\n    ciLinearRGB: result := TBGRASimpleGradientWithGammaCorrection.Create(AColor1,AColor2);\n    ciLinearHSLAuto: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoDirectionAuto]);\n    ciLinearHSLPositive: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoPositiveDirection]);\n    ciLinearHSLNegative: result := TBGRAHueGradient.Create(AColor1,AColor2,[hgoNegativeDirection]);\n    ciGSBAuto: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                               [hgoDirectionAuto, hgoHueCorrection, hgoLightnessCorrection]);\n    ciGSBPositive: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                               [hgoPositiveDirection, hgoHueCorrection, hgoLightnessCorrection]);\n    ciGSBNegative: result := TBGRAHueGradient.Create(AColor1,AColor2,\n                               [hgoNegativeDirection, hgoHueCorrection, hgoLightnessCorrection]);\n    else\n      raise Exception.Create('Unknown color interpolation');\n  end;\n  result.Repetition := ARepetition;\nend;\n\nfunction TBGRASimpleGradient.GetAverageColor: TBGRAPixel;\nbegin\n  result := InterpolateToBGRA(32768);\nend;\n\nfunction TBGRASimpleGradient.GetAverageExpandedColor: TExpandedPixel;\nbegin\n  Result:= InterpolateToExpanded(32768);\nend;\n\nfunction TBGRASimpleGradient.GetColorAt(position: integer): TBGRAPixel;\nvar\n  wordPos: Word;\nbegin\n  wordPos := ApplyCycleToPosition(position, FRepetition);\n  if wordPos = 0 then\n    result := FColor1\n  else if wordPos = 65535 then\n    result := FColor2\n  else\n    result := InterpolateToBGRA(wordPos);\nend;\n\nfunction TBGRASimpleGradient.GetColorAtF(position: single): TBGRAPixel;\nvar\n  wordPos: Word;\nbegin\n  if position = EmptySingle then result := BGRAPixelTransparent else\n  begin\n    wordPos := ApplyCycleToPositionF(position, FRepetition);\n    if wordPos = 0 then\n      result := FColor1\n    else if wordPos = 65535 then\n      result := FColor2\n    else\n      result := InterpolateToBGRA(wordPos);\n  end;\nend;\n\nfunction TBGRASimpleGradient.GetExpandedColorAt(position: integer): TExpandedPixel;\nvar\n  wordPos: Word;\nbegin\n  wordPos := ApplyCycleToPosition(position, FRepetition);\n  if wordPos = 0 then\n    result := ec1\n  else if wordPos = 65535 then\n    result := ec2\n  else\n    result := InterpolateToExpanded(wordPos);\nend;\n\nfunction TBGRASimpleGradient.GetExpandedColorAtF(position: single): TExpandedPixel;\nvar\n  wordPos: Word;\nbegin\n  if position = EmptySingle then result := ExpandedPixelTransparent else\n  begin\n    wordPos := ApplyCycleToPositionF(position, FRepetition);\n    if wordPos = 0 then\n      result := ec1\n    else if wordPos = 65535 then\n      result := ec2\n    else\n      result := InterpolateToExpanded(wordPos);\n  end;\nend;\n\nfunction TBGRASimpleGradient.GetMonochrome: boolean;\nbegin\n  Result:= (FColor1 = FColor2);\nend;\n\n{ TBGRAConstantScanner }\n\nconstructor TBGRAConstantScanner.Create(c: TBGRAPixel);\nbegin\n  inherited Create(c,c,gtLinear,PointF(0,0),PointF(0,0),false);\nend;\n\n{ TBGRARandomScanner }\n\nconstructor TBGRARandomScanner.Create(AGrayscale: Boolean; AOpacity: byte);\nbegin\n  FGrayscale:= AGrayscale;\n  FOpacity:= AOpacity;\n  FRandomBufferCount := 0;\nend;\n\nfunction TBGRARandomScanner.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  Result:=ScanNextPixel;\nend;\n\nfunction TBGRARandomScanner.ScanNextPixel: TBGRAPixel;\nvar rgb: integer;\nbegin\n  if FGrayscale then\n  begin\n    if FRandomBufferCount = 0 then\n    begin\n      FRandomBuffer := random(256*256*256);\n      FRandomBufferCount := 3;\n    end;\n    result.red := FRandomBuffer and 255;\n    FRandomBuffer:= FRandomBuffer shr 8;\n    dec(FRandomBufferCount);\n    result.green := result.red;\n    result.blue := result.red;\n    result.alpha:= FOpacity;\n  end else\n  begin\n    rgb := random(256*256*256);\n    Result:= BGRA(rgb and 255,(rgb shr 8) and 255,(rgb shr 16) and 255,FOpacity);\n  end;\nend;\n\nfunction TBGRARandomScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  Result:=ScanNextPixel;\nend;\n\n{ TBGRAHueGradient }\n\nprocedure TBGRAHueGradient.Init(c1, c2: THSLAPixel; AOptions: THueGradientOptions);\nvar hueGuessed: boolean;\nbegin\n  FOptions:= AOptions;\n  hueGuessed:= false;\n  if hgoGuessNonSaturatedHue in AOptions then\n  begin\n    if (c1.saturation = 0) and (c2.saturation <> 0) then\n    begin\n      c1.hue := c2.hue;\n      hueGuessed:= true;\n    end\n    else if (c2.saturation = 0) and (c1.saturation <> 0) then\n    begin\n      c2.hue := c1.hue;\n      hueGuessed:= true;\n    end;\n  end;\n\n  if (hgoLightnessCorrection in AOptions) then\n  begin\n    hsla1 := ExpandedToGSBA(ec1);\n    hsla2 := ExpandedToGSBA(ec2);\n  end else\n  begin\n    hsla1 := c1;\n    hsla2 := c2;\n  end;\n  if not (hgoHueCorrection in AOptions) then\n  begin\n    hue1 := c1.hue;\n    hue2 := c2.hue;\n  end else\n  begin\n    hue1 := HtoG(c1.hue);\n    hue2 := HtoG(c2.hue);\n  end;\n  if not hueGuessed then\n  begin\n    if (hgoPositiveDirection in AOptions) and not (hgoNegativeDirection in AOptions) then\n    begin\n      if c2.hue <= c1.hue then inc(hue2, 65536);\n    end else\n    if not (hgoPositiveDirection in AOptions) and (hgoNegativeDirection in AOptions) then\n    begin\n      if c2.hue >= c1.hue then inc(hue1, 65536);\n    end else\n    if hgoDirectionAuto in AOptions then\n    begin\n      if (c2.hue > c1.hue) and (c2.hue - c1.hue > 32768) then\n        inc(hue1, 65536)\n      else if (c2.hue < c1.hue) and (c1.hue - c2.hue > 32768) then\n        inc(hue2, 65536);\n    end;\n  end;\nend;\n\nfunction TBGRAHueGradient.InterpolateColor(position: word): THSLAPixel;\nvar b,b2: LongWord;\nbegin\n  b      := position shr 2;\n  b2     := 16384-b;\n  result.hue := ((hue1 * b2 + hue2 * b + 8191) shr 14) and $ffff;\n  result.saturation := (hsla1.saturation * b2 + hsla2.saturation * b + 8191) shr 14;\n  result.lightness := (hsla1.lightness * b2 + hsla2.lightness * b + 8191) shr 14;\n  result.alpha := (hsla1.alpha * b2 + hsla2.alpha * b + 8191) shr 14;\n  if hgoLightnessCorrection in FOptions then\n  begin\n    // result is in GSBA colorspace\n    if not (hgoHueCorrection in FOptions) then\n      result.hue := HtoG(result.hue);\n  end else\n  begin\n    // result is in linear HSLA colorspace\n    if hgoHueCorrection in FOptions then\n      result.hue := GtoH(result.hue);\n  end;\nend;\n\nfunction TBGRAHueGradient.InterpolateToBGRA(position: word): TBGRAPixel;\nbegin\n  if hgoLightnessCorrection in FOptions then\n    result := GSBAToBGRA(InterpolateColor(position))\n  else\n    result := HSLAToBGRA(InterpolateColor(position));\nend;\n\nfunction TBGRAHueGradient.InterpolateToExpanded(position: word): TExpandedPixel;\nbegin\n  if hgoLightnessCorrection in FOptions then\n    result := GSBAToExpanded(InterpolateColor(position))\n  else\n    result := HSLAToExpanded(InterpolateColor(position));\nend;\n\nconstructor TBGRAHueGradient.Create(Color1, Color2: TBGRAPixel;\n  options: THueGradientOptions);\nbegin\n  if hgoReflect in options then\n    inherited Create(Color1,Color2,grReflect)\n  else if hgoRepeat in options then\n    inherited Create(Color1,Color2,grRepeat)\n  else\n    inherited Create(Color1,Color2,grPad);\n\n  Init(BGRAToHSLA(Color1),BGRAToHSLA(Color2),options);\nend;\n\nconstructor TBGRAHueGradient.Create(Color1, Color2: TExpandedPixel;\n  options: THueGradientOptions);\nbegin\n  if hgoReflect in options then\n    inherited Create(Color1,Color2,grReflect)\n  else if hgoRepeat in options then\n    inherited Create(Color1,Color2,grRepeat)\n  else\n    inherited Create(Color1,Color2,grPad);\n\n  Init(ExpandedToHSLA(Color1),ExpandedToHSLA(Color2),options);\nend;\n\nconstructor TBGRAHueGradient.Create(Color1, Color2: THSLAPixel; options: THueGradientOptions);\nbegin\n  if hgoReflect in options then\n    inherited Create(Color1.ToExpanded,Color2.ToExpanded,grReflect)\n  else if hgoRepeat in options then\n    inherited Create(Color1.ToExpanded,Color2.ToExpanded,grRepeat)\n  else\n    inherited Create(Color1.ToExpanded,Color2.ToExpanded,grPad);\n\n  Init(Color1,Color2, options);\nend;\n\nconstructor TBGRAHueGradient.Create(AHue1, AHue2: Word; Saturation,\n  Lightness: Word; options: THueGradientOptions);\nbegin\n  Create(HSLA(AHue1,saturation,lightness), HSLA(AHue2,saturation,lightness), options);\nend;\n\nfunction TBGRAHueGradient.GetAverageColor: TBGRAPixel;\nbegin\n  Result:= GetAverageExpandedColor;\nend;\n\nfunction TBGRAHueGradient.GetAverageExpandedColor: TExpandedPixel;\nbegin\n  Result:= MergeBGRA(MergeBGRA(ec1, ec2), InterpolateToExpanded(32768));\nend;\n\nfunction TBGRAHueGradient.GetMonochrome: boolean;\nbegin\n  Result:= inherited GetMonochrome and\n    ((hsla1.lightness = 0) or (hsla1.lightness = 65535)\n    or (hsla1.saturation = 0));\nend;\n\n{ TBGRACustomMultiGradient }\n\nfunction TBGRACustomMultiGradient.GetColorCount: integer;\nbegin\n  result := length(FColors);\nend;\n\nprocedure TBGRACustomMultiGradient.Init(Colors: array of TBGRAPixel;\n  Positions0To1: array of single);\nvar\n  i: Integer;\nbegin\n  if length(Positions0To1) <> length(colors) then\n    raise Exception.Create('Dimension mismatch');\n  if length(Positions0To1) = 0 then\n    raise Exception.Create('Empty gradient');\n  setlength(FColors,length(Colors));\n  setlength(FPositions,length(Positions0To1));\n  setlength(FPositionsF,length(Positions0To1));\n  setlength(FEColors,length(Colors));\n  for i := 0 to high(colors) do\n  begin\n    FColors[i]:= colors[i];\n    FPositions[i]:= round(Positions0To1[i]*65536);\n    FPositionsF[i]:= Positions0To1[i];\n    FEColors[i]:= GammaExpansion(colors[i]);\n  end;\nend;\n\nprocedure TBGRACustomMultiGradient.Init(Colors: array of TExpandedPixel;\n  Positions0To1: array of single);\nvar\n  i: Integer;\nbegin\n  if length(Positions0To1) <> length(colors) then\n    raise Exception.Create('Dimension mismatch');\n  if length(Positions0To1) = 0 then\n    raise Exception.Create('Empty gradient');\n  setlength(FColors,length(Colors));\n  setlength(FPositions,length(Positions0To1));\n  setlength(FPositionsF,length(Positions0To1));\n  setlength(FEColors,length(Colors));\n  for i := 0 to high(colors) do\n  begin\n    FColors[i]:= GammaCompression(colors[i]);\n    FPositions[i]:= round(Positions0To1[i]*65536);\n    FPositionsF[i]:= Positions0To1[i];\n    FEColors[i]:= colors[i];\n  end;\nend;\n\nclass function TBGRACustomMultiGradient.CreateAny(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; AInterpolation: TBGRAColorInterpolation;\n  ARepetition: TBGRAGradientRepetition): TBGRACustomMultiGradient;\nbegin\n  if AInterpolation in [ciStdRGB, ciLinearRGB] then\n    result := TBGRAMultiGradient.Create(Colors, Positions0To1,\n           AInterpolation = ciLinearRGB, ARepetition)\n  else\n    result := TBGRAHueMultiGradient.Create(Colors, Positions0To1,\n           AInterpolation, ARepetition);\nend;\n\nclass function TBGRACustomMultiGradient.CreateAny(\n  Colors: array of TExpandedPixel; Positions0To1: array of single;\n  AInterpolation: TBGRAColorInterpolation; ARepetition: TBGRAGradientRepetition\n  ): TBGRACustomMultiGradient;\nvar\n  temp: TBGRAMultiGradient;\nbegin\n  if AInterpolation in [ciStdRGB, ciLinearRGB] then\n  begin\n    temp := TBGRAMultiGradient.Create(Colors, Positions0To1, ARepetition);\n    temp.GammaCorrection:= AInterpolation = ciLinearRGB;\n    result := temp;\n  end\n  else\n    result := TBGRAHueMultiGradient.Create(Colors, Positions0To1,\n           AInterpolation, ARepetition);\nend;\n\nfunction TBGRACustomMultiGradient.CosineInterpolation(t: single): single;\nbegin\n  result := (1-cos(t*Pi))*0.5;\nend;\n\nfunction TBGRACustomMultiGradient.HalfCosineInterpolation(t: single): single;\nbegin\n  result := (1-cos(t*Pi))*0.25 + t*0.5;\nend;\n\nfunction TBGRACustomMultiGradient.GetMonochrome: boolean;\nvar i: integer;\nbegin\n  for i := 1 to high(FColors) do\n    if FColors[i] <> FColors[0] then\n    begin\n      result := false;\n      exit;\n    end;\n  Result:= true;\nend;\n\n{ TBGRAMultiGradient }\n\nprocedure TBGRAMultiGradient.Init(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; AGammaCorrection, ACycle: boolean);\nbegin\n  inherited Init(Colors, Positions0To1);\n  GammaCorrection := AGammaCorrection;\n  if ACycle then\n    FRepetition := grRepeat\n  else\n    FRepetition := grPad;\n  if FPositions[high(FPositions)] = FPositions[0] then\n    FRepetition := grPad;\nend;\n\nprocedure TBGRAMultiGradient.Init(Colors: array of TExpandedPixel;\n  Positions0To1: array of single; AGammaCorrection, ACycle: boolean);\nbegin\n  inherited Init(Colors, Positions0To1);\n  GammaCorrection := AGammaCorrection;\n  if ACycle then\n    FRepetition := grRepeat\n  else\n    FRepetition := grPad;\n  if FPositions[high(FPositions)] = FPositions[0] then\n    FRepetition := grPad;\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; AGammaCorrection: boolean; ACycle: boolean);\nbegin\n  Init(Colors,Positions0To1,AGammaCorrection, ACycle);\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; AGammaCorrection: boolean;\n  ARepetition: TBGRAGradientRepetition);\nbegin\n  Init(Colors,Positions0To1,AGammaCorrection, false);\n  Repetition:= ARepetition;\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TBGRAPixel;\n  AGammaCorrection: boolean; ACycle: boolean);\nvar positions: array of single;\n  i: Integer;\nbegin\n  positions := nil;\n  setlength(positions, length(colors));\n  positions[0] := 0;\n  for i := 1 to high(Colors) do\n    positions[i] := i / high(Colors);\n  Init(Colors, positions, AGammaCorrection, ACycle);\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TBGRAPixel;\n  AGammaCorrection: boolean; ARepetition: TBGRAGradientRepetition);\nbegin\n  Create(Colors, AGammaCorrection, False);\n  Repetition:= ARepetition;\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TExpandedPixel;\n  ARepetition: TBGRAGradientRepetition);\nvar positions: array of single;\n  i: Integer;\nbegin\n  positions := nil;\n  setlength(positions, length(colors));\n  positions[0] := 0;\n  for i := 1 to high(Colors) do\n    positions[i] := i / high(Colors);\n  Init(Colors, positions, true, false);\n  Repetition:= ARepetition;\nend;\n\nconstructor TBGRAMultiGradient.Create(Colors: array of TExpandedPixel;\n  Positions0To1: array of single; ARepetition: TBGRAGradientRepetition);\nbegin\n  Init(Colors, Positions0To1, true, false);\n  Repetition:= ARepetition;\nend;\n\nfunction TBGRAMultiGradient.GetColorAt(position: integer): TBGRAPixel;\nvar i: Int32or64;\n    ec: TExpandedPixel;\n    curPos,posDiff: Int32or64;\nbegin\n  if FRepetition <> grPad then\n    position := ApplyCycleToPosition(position, FRepetition,\n                  FPositions[0], FPositions[high(FPositions)]);\n\n  if position <= FPositions[0] then\n    result := FColors[0] else\n  if position >= FPositions[high(FPositions)] then\n    result := FColors[high(FColors)] else\n  begin\n    i := 0;\n    while (i < high(FPositions)-1) and (position >= FPositions[i+1]) do\n      inc(i);\n\n    if Position = FPositions[i] then\n      result := FColors[i]\n    else\n    begin\n      curPos := position-FPositions[i];\n      posDiff := FPositions[i+1]-FPositions[i];\n      if FInterpolationFunction <> nil then\n      begin\n        curPos := round(FInterpolationFunction(curPos/posDiff)*65536);\n        posDiff := 65536;\n      end;\n      if GammaCorrection then\n      begin\n        if FEColors[i+1].red < FEColors[i].red then\n          ec.red := FEColors[i].red - UInt32or64(curPos)*UInt32or64(FEColors[i].red-FEColors[i+1].red) div UInt32or64(posDiff) else\n          ec.red := FEColors[i].red + UInt32or64(curPos)*UInt32or64(FEColors[i+1].red-FEColors[i].red) div UInt32or64(posDiff);\n        if FEColors[i+1].green < FEColors[i].green then\n          ec.green := FEColors[i].green - UInt32or64(curPos)*UInt32or64(FEColors[i].green-FEColors[i+1].green) div UInt32or64(posDiff) else\n          ec.green := FEColors[i].green + UInt32or64(curPos)*UInt32or64(FEColors[i+1].green-FEColors[i].green) div UInt32or64(posDiff);\n        if FEColors[i+1].blue < FEColors[i].blue then\n          ec.blue := FEColors[i].blue - UInt32or64(curPos)*UInt32or64(FEColors[i].blue-FEColors[i+1].blue) div UInt32or64(posDiff) else\n          ec.blue := FEColors[i].blue + UInt32or64(curPos)*UInt32or64(FEColors[i+1].blue-FEColors[i].blue) div UInt32or64(posDiff);\n        if FEColors[i+1].alpha < FEColors[i].alpha then\n          ec.alpha := FEColors[i].alpha - UInt32or64(curPos)*UInt32or64(FEColors[i].alpha-FEColors[i+1].alpha) div UInt32or64(posDiff) else\n          ec.alpha := FEColors[i].alpha + UInt32or64(curPos)*UInt32or64(FEColors[i+1].alpha-FEColors[i].alpha) div UInt32or64(posDiff);\n        result := GammaCompression(ec);\n      end else\n      begin\n        result.red := FColors[i].red + (curPos)*(FColors[i+1].red-FColors[i].red) div (posDiff);\n        result.green := FColors[i].green + (curPos)*(FColors[i+1].green-FColors[i].green) div (posDiff);\n        result.blue := FColors[i].blue + (curPos)*(FColors[i+1].blue-FColors[i].blue) div (posDiff);\n        result.alpha := FColors[i].alpha + (curPos)*(FColors[i+1].alpha-FColors[i].alpha) div (posDiff);\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRAMultiGradient.GetExpandedColorAt(position: integer\n  ): TExpandedPixel;\nvar i: Int32or64;\n    curPos,posDiff: Int32or64;\n    rw,gw,bw: UInt32or64;\nbegin\n  if FRepetition <> grPad then\n    position := ApplyCycleToPosition(position, FRepetition,\n                  FPositions[0], FPositions[high(FPositions)]);\n\n  if position <= FPositions[0] then\n    result := FEColors[0] else\n  if position >= FPositions[high(FPositions)] then\n    result := FEColors[high(FColors)] else\n  begin\n    i := 0;\n    while (i < high(FPositions)-1) and (position >= FPositions[i+1]) do\n      inc(i);\n\n    if Position = FPositions[i] then\n      result := FEColors[i]\n    else\n    begin\n      curPos := position-FPositions[i];\n      posDiff := FPositions[i+1]-FPositions[i];\n      if FInterpolationFunction <> nil then\n      begin\n        curPos := round(FInterpolationFunction(curPos/posDiff)*65536);\n        posDiff := 65536;\n      end;\n      if GammaCorrection then\n      begin\n        if FEColors[i+1].red < FEColors[i].red then\n          result.red := FEColors[i].red - UInt32or64(curPos)*UInt32or64(FEColors[i].red-FEColors[i+1].red) div UInt32or64(posDiff) else\n          result.red := FEColors[i].red + UInt32or64(curPos)*UInt32or64(FEColors[i+1].red-FEColors[i].red) div UInt32or64(posDiff);\n        if FEColors[i+1].green < FEColors[i].green then\n          result.green := FEColors[i].green - UInt32or64(curPos)*UInt32or64(FEColors[i].green-FEColors[i+1].green) div UInt32or64(posDiff) else\n          result.green := FEColors[i].green + UInt32or64(curPos)*UInt32or64(FEColors[i+1].green-FEColors[i].green) div UInt32or64(posDiff);\n        if FEColors[i+1].blue < FEColors[i].blue then\n          result.blue := FEColors[i].blue - UInt32or64(curPos)*UInt32or64(FEColors[i].blue-FEColors[i+1].blue) div UInt32or64(posDiff) else\n          result.blue := FEColors[i].blue + UInt32or64(curPos)*UInt32or64(FEColors[i+1].blue-FEColors[i].blue) div UInt32or64(posDiff);\n        if FEColors[i+1].alpha < FEColors[i].alpha then\n          result.alpha := FEColors[i].alpha - UInt32or64(curPos)*UInt32or64(FEColors[i].alpha-FEColors[i+1].alpha) div UInt32or64(posDiff) else\n          result.alpha := FEColors[i].alpha + UInt32or64(curPos)*UInt32or64(FEColors[i+1].alpha-FEColors[i].alpha) div UInt32or64(posDiff);\n      end else\n      begin\n        rw := Int32or64(FColors[i].red shl 8) + (((curPos) shl 8)*(FColors[i+1].red-FColors[i].red)) div (posDiff);\n        gw := Int32or64(FColors[i].green shl 8) + (((curPos) shl 8)*(FColors[i+1].green-FColors[i].green)) div (posDiff);\n        bw := Int32or64(FColors[i].blue shl 8) + (((curPos) shl 8)*(FColors[i+1].blue-FColors[i].blue)) div (posDiff);\n\n        if rw >= $ff00 then result.red := $ffff\n        else result.red := (GammaExpansionTab[rw shr 8]*UInt32or64(255 - (rw and 255)) + GammaExpansionTab[(rw shr 8)+1]*UInt32or64(rw and 255)) shr 8;\n        if gw >= $ff00 then result.green := $ffff\n        else result.green := (GammaExpansionTab[gw shr 8]*UInt32or64(255 - (gw and 255)) + GammaExpansionTab[(gw shr 8)+1]*UInt32or64(gw and 255)) shr 8;\n        if bw >= $ff00 then result.blue := $ffff\n        else result.blue := (GammaExpansionTab[bw shr 8]*UInt32or64(255 - (bw and 255)) + GammaExpansionTab[(bw shr 8)+1]*UInt32or64(bw and 255)) shr 8;\n        result.alpha := Int32or64(FColors[i].alpha shl 8) + (((curPos) shl 8)*(FColors[i+1].alpha-FColors[i].alpha)) div (posDiff);\n        result.alpha := result.alpha + (result.alpha shr 8);\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRAMultiGradient.GetAverageColor: TBGRAPixel;\nvar sumR,sumG,sumB,sumA: integer;\n  i: Integer;\nbegin\n  if GammaCorrection then\n    exit(GetAverageExpandedColor);\n  sumR := 0;\n  sumG := 0;\n  sumB := 0;\n  sumA := 0;\n  for i := 0 to high(FColors) do\n  begin\n    inc(sumR, FColors[i].red);\n    inc(sumG, FColors[i].green);\n    inc(sumB, FColors[i].blue);\n    inc(sumA, FColors[i].alpha);\n  end;\n  result := BGRA(sumR div length(FColors),sumG div length(FColors),\n    sumB div length(FColors),sumA div length(FColors));\nend;\n\nfunction TBGRAMultiGradient.GetAverageExpandedColor: TExpandedPixel;\nvar sumR,sumG,sumB,sumA: int64;\n  i: Integer;\nbegin\n  if not GammaCorrection then\n    exit(GetAverageColor);\n  sumR := 0;\n  sumG := 0;\n  sumB := 0;\n  sumA := 0;\n  for i := 0 to high(FColors) do\n  begin\n    inc(sumR, FEColors[i].red);\n    inc(sumG, FEColors[i].green);\n    inc(sumB, FEColors[i].blue);\n    inc(sumA, FEColors[i].alpha);\n  end;\n  result := TExpandedPixel.New(sumR div length(FColors),\n    sumG div length(FColors),\n    sumB div length(FColors),\n    sumA div length(FColors));\nend;\n\n{ TBGRAHueMultiGradient }\n\nprocedure TBGRAHueMultiGradient.InitHueGradients(AOptions: THueGradientOptions);\nvar\n  i: Integer;\nbegin\n  setlength(FHueColors, ColorCount);\n  for i := 0 to high(FHueColors) do\n    FHueColors[i] := FEColors[i].ToHSLAPixel;\n  setlength(FHueGradients, ColorCount - 1);\n  for i := 0 to high(FHueGradients) do\n  begin\n    FHueGradients[i] := TBGRAHueGradient.Create(FEColors[i], FEColors[i+1],\n      AOptions - [hgoRepeat, hgoReflect]);\n  end;\n  if hgoRepeat in AOptions then\n    Repetition := grRepeat\n  else if hgoReflect in AOptions then\n    Repetition := grReflect;\nend;\n\nprocedure TBGRAHueMultiGradient.InitHueGradients(\n  AInterpolation: TBGRAColorInterpolation);\nbegin\n  case AInterpolation of\n    ciLinearHSLAuto: InitHueGradients([hgoDirectionAuto, hgoGuessNonSaturatedHue]);\n    ciLinearHSLPositive: InitHueGradients([hgoPositiveDirection, hgoGuessNonSaturatedHue]);\n    ciLinearHSLNegative: InitHueGradients([hgoNegativeDirection, hgoGuessNonSaturatedHue]);\n    ciGSBAuto: InitHueGradients([hgoDirectionAuto, hgoLightnessCorrection, hgoHueCorrection, hgoGuessNonSaturatedHue]);\n    ciGSBPositive: InitHueGradients([hgoPositiveDirection, hgoLightnessCorrection, hgoHueCorrection, hgoGuessNonSaturatedHue]);\n    ciGSBNegative: InitHueGradients([hgoNegativeDirection, hgoLightnessCorrection, hgoHueCorrection, hgoGuessNonSaturatedHue]);\n  else\n    {ciStdRGB, ciLinearRGB}\n    raise ERangeError.Create('Invalid color interpolation');\n  end;\nend;\n\nprocedure TBGRAHueMultiGradient.FreeHueGradients;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(FHueGradients) do\n    FHueGradients[i].Free;\n  FHueGradients := nil;\nend;\n\nconstructor TBGRAHueMultiGradient.Create(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; options: THueGradientOptions);\nbegin\n  Init(Colors, Positions0To1);\n  InitHueGradients(options);\nend;\n\nconstructor TBGRAHueMultiGradient.Create(Colors: array of TEXpandedPixel;\n  Positions0To1: array of single; options: THueGradientOptions);\nbegin\n  Init(Colors, Positions0To1);\n  InitHueGradients(options);\nend;\n\nconstructor TBGRAHueMultiGradient.Create(Colors: array of TBGRAPixel;\n  Positions0To1: array of single; AInterpolation: TBGRAColorInterpolation;\n  ARepetition: TBGRAGradientRepetition);\nbegin\n  Init(Colors, Positions0To1);\n  InitHueGradients(AInterpolation);\n  Repetition := ARepetition;\nend;\n\nconstructor TBGRAHueMultiGradient.Create(Colors: array of TEXpandedPixel;\n  Positions0To1: array of single; AInterpolation: TBGRAColorInterpolation;\n  ARepetition: TBGRAGradientRepetition);\nbegin\n  Init(Colors, Positions0To1);\n  InitHueGradients(AInterpolation);\n  Repetition := ARepetition;\nend;\n\ndestructor TBGRAHueMultiGradient.Destroy;\nbegin\n  FreeHueGradients;\n  inherited Destroy;\nend;\n\nfunction TBGRAHueMultiGradient.GetColorAt(position: integer): TBGRAPixel;\nvar i: Int32or64;\n    curPos: Int32or64;\nbegin\n  if FRepetition <> grPad then\n    position := ApplyCycleToPosition(position, FRepetition,\n                  FPositions[0], FPositions[high(FPositions)]);\n\n  if position <= FPositions[0] then\n    result := FColors[0] else\n  if position >= FPositions[high(FPositions)] then\n    result := FColors[high(FColors)] else\n  begin\n    i := 0;\n    while (i < high(FPositions)-1) and (position >= FPositions[i+1]) do\n      inc(i);\n\n    curPos := (position - FPositions[i]) * 65536\n           div (FPositions[i+1]-FPositions[i]);\n    result := FHueGradients[i].GetColorAt(curPos);\n  end;\nend;\n\nfunction TBGRAHueMultiGradient.GetExpandedColorAt(position: integer\n  ): TExpandedPixel;\nvar i: Int32or64;\n    curPos: Int32or64;\nbegin\n  if FRepetition <> grPad then\n    position := ApplyCycleToPosition(position, FRepetition,\n                  FPositions[0], FPositions[high(FPositions)]);\n\n  if position <= FPositions[0] then\n    result := FEColors[0] else\n  if position >= FPositions[high(FPositions)] then\n    result := FEColors[high(FColors)] else\n  begin\n    i := 0;\n    while (i < high(FPositions)-1) and (position >= FPositions[i+1]) do\n      inc(i);\n\n    curPos := (position - FPositions[i]) * 65536\n           div (FPositions[i+1]-FPositions[i]);\n    result := FHueGradients[i].GetExpandedColorAt(curPos);\n  end;\nend;\n\nfunction TBGRAHueMultiGradient.GetAverageColor: TBGRAPixel;\nbegin\n  result := GetAverageExpandedColor;\nend;\n\nfunction TBGRAHueMultiGradient.GetAverageExpandedColor: TExpandedPixel;\nvar sumR,sumG,sumB,sumA: int64;\n  i: Integer;\n  ec: TExpandedPixel;\nbegin\n  sumR := 0;\n  sumG := 0;\n  sumB := 0;\n  sumA := 0;\n  for i := 0 to high(FHueGradients) do\n  begin\n    ec := FHueGradients[i].GetAverageExpandedColor;\n    inc(sumR, ec.red);\n    inc(sumG, ec.green);\n    inc(sumB, ec.blue);\n    inc(sumA, ec.alpha);\n  end;\n  result := TExpandedPixel.New(sumR div length(FHueGradients),\n    sumG div length(FHueGradients),\n    sumB div length(FHueGradients),\n    sumA div length(FHueGradients));\nend;\n\n{ TBGRASimpleGradientWithGammaCorrection }\n\nfunction TBGRASimpleGradientWithGammaCorrection.InterpolateToBGRA(position: word\n  ): TBGRAPixel;\nvar b,b2: LongWord;\n    ec: TExpandedPixel;\nbegin\n  b      := position;\n  b2     := 65536-b;\n  ec.red := (ec1.red * b2 + ec2.red * b + 32767) shr 16;\n  ec.green := (ec1.green * b2 + ec2.green * b + 32767) shr 16;\n  ec.blue := (ec1.blue * b2 + ec2.blue * b + 32767) shr 16;\n  ec.alpha := (ec1.alpha * b2 + ec2.alpha * b + 32767) shr 16;\n  result := GammaCompression(ec);\nend;\n\nfunction TBGRASimpleGradientWithGammaCorrection.InterpolateToExpanded(\n  position: word): TExpandedPixel;\nvar b,b2: LongWord;\nbegin\n  b      := position;\n  b2     := 65536-b;\n  result.red := (ec1.red * b2 + ec2.red * b + 32767) shr 16;\n  result.green := (ec1.green * b2 + ec2.green * b + 32767) shr 16;\n  result.blue := (ec1.blue * b2 + ec2.blue * b + 32767) shr 16;\n  result.alpha := (ec1.alpha * b2 + ec2.alpha * b + 32767) shr 16;\nend;\n\nconstructor TBGRASimpleGradientWithGammaCorrection.Create(Color1,\n  Color2: TBGRAPixel; ARepetition: TBGRAGradientRepetition);\nbegin\n  inherited Create(Color1,Color2,ARepetition);\nend;\n\nconstructor TBGRASimpleGradientWithGammaCorrection.Create(Color1,\n  Color2: TExpandedPixel; ARepetition: TBGRAGradientRepetition);\nbegin\n  inherited Create(Color1,Color2,ARepetition);\nend;\n\n{ TBGRASimpleGradientWithoutGammaCorrection }\n\nfunction TBGRASimpleGradientWithoutGammaCorrection.InterpolateToBGRA(\n  position: word): TBGRAPixel;\nvar b,b2: LongWord;\nbegin\n  b      := position shr 6;\n  b2     := 1024-b;\n  result.red  := (FColor1.red * b2 + FColor2.red * b + 511) shr 10;\n  result.green := (FColor1.green * b2 + FColor2.green * b + 511) shr 10;\n  result.blue := (FColor1.blue * b2 + FColor2.blue * b + 511) shr 10;\n  result.alpha := (FColor1.alpha * b2 + FColor2.alpha * b + 511) shr 10;\nend;\n\nfunction TBGRASimpleGradientWithoutGammaCorrection.InterpolateToExpanded(\n  position: word): TExpandedPixel;\nvar b,b2: LongWord;\n    rw,gw,bw: word;\nbegin\n  b      := position shr 6;\n  b2     := 1024-b;\n  rw  := (FColor1.red * b2 + FColor2.red * b + 511) shr 2;\n  gw := (FColor1.green * b2 + FColor2.green * b + 511) shr 2;\n  bw := (FColor1.blue * b2 + FColor2.blue * b + 511) shr 2;\n\n  if rw >= $ff00 then\n    result.red := 65535\n  else\n    result.red := (GammaExpansionTab[rw shr 8]*UInt32or64(255 - (rw and 255)) + GammaExpansionTab[(rw shr 8)+1]*UInt32or64(rw and 255)) shr 8;\n\n  if gw >= $ff00 then\n    result.green := 65535\n  else\n    result.green := (GammaExpansionTab[gw shr 8]*UInt32or64(255 - (gw and 255)) + GammaExpansionTab[(gw shr 8)+1]*UInt32or64(gw and 255)) shr 8;\n\n  if bw >= $ff00 then\n    result.blue := 65535\n  else\n    result.blue := (GammaExpansionTab[bw shr 8]*UInt32or64(255 - (bw and 255)) + GammaExpansionTab[(bw shr 8)+1]*UInt32or64(bw and 255)) shr 8;\n\n  result.alpha := (FColor1.alpha * b2 + FColor2.alpha * b + 511) shr 2;\nend;\n\nconstructor TBGRASimpleGradientWithoutGammaCorrection.Create(Color1,\n  Color2: TBGRAPixel; ARepetition: TBGRAGradientRepetition);\nbegin\n  inherited Create(Color1,Color2,ARepetition);\nend;\n\nconstructor TBGRASimpleGradientWithoutGammaCorrection.Create(Color1,\n  Color2: TExpandedPixel; ARepetition: TBGRAGradientRepetition);\nbegin\n  inherited Create(Color1,Color2,ARepetition);\nend;\n\n{ TBGRAGradientTriangleScanner }\n\nconstructor TBGRAGradientTriangleScanner.Create(pt1, pt2, pt3: TPointF; c1, c2,\n  c3: TBGRAPixel);\nvar ec1,ec2,ec3: TExpandedPixel;\nbegin\n  FMatrix := AffineMatrix(pt2.X-pt1.X, pt3.X-pt1.X, 0,\n                          pt2.Y-pt1.Y, pt3.Y-pt1.Y, 0);\n  if not IsAffineMatrixInversible(FMatrix) then\n    FMatrix := AffineMatrix(0,0,0,0,0,0)\n  else\n    FMatrix := AffineMatrixInverse(FMatrix) * AffineMatrixTranslation(-pt1.x,-pt1.y);\n\n  ec1 := GammaExpansion(c1);\n  ec2 := GammaExpansion(c2);\n  ec3 := GammaExpansion(c3);\n  FColor1[1] := ec1.red;\n  FColor1[2] := ec1.green;\n  FColor1[3] := ec1.blue;\n  FColor1[4] := ec1.alpha;\n  FDiff2[1] := ec2.red - ec1.red;\n  FDiff2[2] := ec2.green - ec1.green;\n  FDiff2[3] := ec2.blue - ec1.blue;\n  FDiff2[4] := ec2.alpha - ec1.alpha;\n  FDiff3[1] := ec3.red - ec1.red;\n  FDiff3[2] := ec3.green - ec1.green;\n  FDiff3[3] := ec3.blue - ec1.blue;\n  FDiff3[4] := ec3.alpha - ec1.alpha;\n  FStep := FDiff2*FMatrix[1,1]+FDiff3*FMatrix[2,1];\nend;\n\nprocedure TBGRAGradientTriangleScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  ScanMoveToF(X, Y);\nend;\n\nprocedure TBGRAGradientTriangleScanner.ScanMoveToF(X, Y: Single);\nvar\n  Cur: TPointF;\nbegin\n  Cur := FMatrix*PointF(X,Y);\n  FCurColor := FColor1+FDiff2*Cur.X+FDiff3*Cur.Y;\nend;\n\nfunction TBGRAGradientTriangleScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  ScanMoveToF(X,Y);\n  result := ScanNextPixel;\nend;\n\nfunction TBGRAGradientTriangleScanner.ScanNextPixel: TBGRAPixel;\nvar r,g,b,a: int64;\nbegin\n  r := round(FCurColor[1]);\n  g := round(FCurColor[2]);\n  b := round(FCurColor[3]);\n  a := round(FCurColor[4]);\n  if r > 65535 then r := 65535 else\n  if r < 0 then r := 0;\n  if g > 65535 then g := 65535 else\n  if g < 0 then g := 0;\n  if b > 65535 then b := 65535 else\n  if b < 0 then b := 0;\n  if a > 65535 then a := 65535 else\n  if a < 0 then a := 0;\n  result.red := GammaCompressionTab[r];\n  result.green := GammaCompressionTab[g];\n  result.blue := GammaCompressionTab[b];\n  result.alpha := a shr 8;\n  FCurColor := FCurColor + FStep;\nend;\n\nfunction TBGRAGradientTriangleScanner.ScanNextExpandedPixel: TExpandedPixel;\nvar r,g,b,a: int64;\nbegin\n  r := round(FCurColor[1]);\n  g := round(FCurColor[2]);\n  b := round(FCurColor[3]);\n  a := round(FCurColor[4]);\n  if r > 65535 then r := 65535 else\n  if r < 0 then r := 0;\n  if g > 65535 then g := 65535 else\n  if g < 0 then g := 0;\n  if b > 65535 then b := 65535 else\n  if b < 0 then b := 0;\n  if a > 65535 then a := 65535 else\n  if a < 0 then a := 0;\n  result.red := r;\n  result.green := g;\n  result.blue := b;\n  result.alpha := a;\n  FCurColor := FCurColor + FStep;\nend;\n\nprocedure TBGRAGradientTriangleScanner.ScanSkipPixels(ACount: integer);\nbegin\n  FCurColor := FCurColor + FStep*ACount;\nend;\n\n{ TBGRAGradientScanner }\n\nprocedure TBGRAGradientScanner.SetTransform(AValue: TAffineMatrix);\nbegin\n  if FTransform=AValue then Exit;\n  FTransform:=AValue;\n  InitTransform;\nend;\n\nconstructor TBGRAGradientScanner.Create(AGradientType: TGradientType; AOrigin, d1: TPointF);\nbegin\n  FGradient := nil;\n  SetGradient(BGRABlack,BGRAWhite,False);\n  Init(AGradientType,AOrigin,d1,AffineMatrixIdentity,False);\nend;\n\nconstructor TBGRAGradientScanner.Create(AGradientType: TGradientType; AOrigin, d1,d2: TPointF);\nbegin\n  FGradient := nil;\n  SetGradient(BGRABlack,BGRAWhite,False);\n  Init(AGradientType,AOrigin,d1,d2,AffineMatrixIdentity,False);\nend;\n\nconstructor TBGRAGradientScanner.Create(AOrigin,\n  d1, d2, AFocal: TPointF; ARadiusRatio: single; AFocalRadiusRatio: single);\nvar\n  m, mInv: TAffineMatrix;\n  focalInv: TPointF;\nbegin\n  FGradient := nil;\n  SetGradient(BGRABlack,BGRAWhite,False);\n\n  m := AffineMatrix((d1-AOrigin).x, (d2-AOrigin).x, AOrigin.x,\n                    (d1-AOrigin).y, (d2-AOrigin).y, AOrigin.y);\n  if IsAffineMatrixInversible(m) then\n  begin\n    mInv := AffineMatrixInverse(m);\n    focalInv := mInv*AFocal;\n  end else\n    focalInv := PointF(0,0);\n\n  Init(PointF(0,0), ARadiusRatio, focalInv, AFocalRadiusRatio, AffineMatrixIdentity, m);\nend;\n\nconstructor TBGRAGradientScanner.Create(AOrigin: TPointF; ARadius: single;\n  AFocal: TPointF; AFocalRadius: single);\nbegin\n  FGradient := nil;\n  SetGradient(BGRABlack,BGRAWhite,False);\n\n  Init(AOrigin, ARadius, AFocal, AFocalRadius, AffineMatrixIdentity, AffineMatrixIdentity);\nend;\n\nprocedure TBGRAGradientScanner.SetFlipGradient(AValue: boolean);\nbegin\n  if FFlipGradient=AValue then Exit;\n  FFlipGradient:=AValue;\n  UpdateGetGradientColorFunctions;\nend;\n\nfunction TBGRAGradientScanner.GetGradientColor(a: single): TBGRAPixel;\nbegin\n  if a = EmptySingle then\n    result := BGRAPixelTransparent\n  else\n  begin\n    if FFlipGradient then a := 1-a;\n    if FSinus then\n    begin\n      a := a*65536;\n      if (a <= low(int64)) or (a >= high(int64)) then\n        result := FAverageColor\n      else\n        result := FGradient.GetColorAt(Sin65536(round(a) and 65535));\n    end else\n      result := FGradient.GetColorAtF(a);\n  end;\nend;\n\nfunction TBGRAGradientScanner.GetGradientExpandedColor(a: single): TExpandedPixel;\nbegin\n  if a = EmptySingle then\n    QWord(result) := 0\n  else\n  begin\n    if FFlipGradient then a := 1-a;\n    if FSinus then\n    begin\n      a := a * 65536;\n      if (a <= low(int64)) or (a >= high(int64)) then\n        result := FAverageExpandedColor\n      else\n        result := FGradient.GetExpandedColorAt(Sin65536(round(a) and 65535));\n    end else\n      result := FGradient.GetExpandedColorAtF(a);\n  end;\nend;\n\nfunction TBGRAGradientScanner.GetGradientColorFlipped(a: single): TBGRAPixel;\nbegin\n  result := FGradient.GetColorAtF(1 - a);\nend;\n\nfunction TBGRAGradientScanner.GetGradientExpandedColorFlipped(a: single): TExpandedPixel;\nbegin\n  result := FGradient.GetExpandedColorAtF(1 - a);\nend;\n\nfunction TBGRAGradientScanner.GetGradientColorSinus(a: single): TBGRAPixel;\nbegin\n  if FFlipGradient then a := 1-a;\n  a := a * 65536;\n  if (a <= low(int64)) or (a >= high(int64)) then\n    result := FAverageColor\n    else result := FGradient.GetColorAt(Sin65536(round(a) and 65535));\nend;\n\nfunction TBGRAGradientScanner.GetGradientExpandedColorSinus(a: single): TExpandedPixel;\nbegin\n  if FFlipGradient then a := 1-a;\n  a := a * 65536;\n  if (a <= low(int64)) or (a >= high(int64)) then\n    result := FAverageExpandedColor\n    else result := FGradient.GetExpandedColorAt(Sin65536(round(a) and 65535));\nend;\n\nprocedure TBGRAGradientScanner.UpdateGetGradientColorFunctions;\nbegin\n  if FSinus then\n  begin\n    FGetGradientColor:= @GetGradientColorSinus;\n    FGetGradientExpandedColor:= @GetGradientExpandedColorSinus;\n  end else\n  if FFlipGradient then\n  begin\n    FGetGradientColor:= @GetGradientColorFlipped;\n    FGetGradientExpandedColor:= @GetGradientExpandedColorFlipped;\n  end else\n  begin\n    FGetGradientColor:= @FGradient.GetColorAtF;\n    FGetGradientExpandedColor:= @FGradient.GetExpandedColorAtF;\n  end;\nend;\n\nprocedure TBGRAGradientScanner.SetSinus(AValue: boolean);\nbegin\n  if FSinus=AValue then Exit;\n  FSinus:=AValue;\n  UpdateGetGradientColorFunctions;\nend;\n\nprocedure TBGRAGradientScanner.Init(AGradientType: TGradientType; AOrigin, d1: TPointF;\n  ATransform: TAffineMatrix; Sinus: Boolean);\nvar d2: TPointF;\nbegin\n  with (d1-AOrigin) do\n    d2 := PointF(AOrigin.x+y,AOrigin.y-x);\n  Init(AGradientType,AOrigin,d1,d2,ATransform,Sinus);\nend;\n\nprocedure TBGRAGradientScanner.Init(AGradientType: TGradientType; AOrigin, d1, d2: TPointF;\n  ATransform: TAffineMatrix; Sinus: Boolean);\nbegin\n  FGradientType:= AGradientType;\n  FFlipGradient:= false;\n  FOrigin := AOrigin;\n  FDir1 := d1;\n  FDir2 := d2;\n  FSinus := Sinus;\n  FTransform := ATransform;\n  FHiddenTransform := AffineMatrixIdentity;\n\n  FRadius := 1;\n  FRelativeFocal := PointF(0,0);\n  FFocalRadius := 0;\n\n  InitGradientType;\n  InitTransform;\n  UpdateGetGradientColorFunctions;\nend;\n\nprocedure TBGRAGradientScanner.Init(AOrigin: TPointF; ARadius: single;\n  AFocal: TPointF; AFocalRadius: single; ATransform: TAffineMatrix; AHiddenTransform: TAffineMatrix);\nvar maxRadius: single;\nbegin\n  FGradientType:= gtRadial;\n  FFlipGradient:= false;\n  FOrigin := AOrigin;\n  ARadius := abs(ARadius);\n  AFocalRadius := abs(AFocalRadius);\n  maxRadius := max(ARadius,AFocalRadius);\n  FDir1 := AOrigin+PointF(maxRadius,0);\n  FDir2 := AOrigin+PointF(0,maxRadius);\n  FSinus := False;\n  FTransform := ATransform;\n  FHiddenTransform := AHiddenTransform;\n\n  FRadius := ARadius/maxRadius;\n  FRelativeFocal := (AFocal - AOrigin)*(1/maxRadius);\n  FFocalRadius := AFocalRadius/maxRadius;\n\n  InitGradientType;\n  InitTransform;\n  UpdateGetGradientColorFunctions;\nend;\n\nprocedure TBGRAGradientScanner.InitGradientType;\nbegin\n  case FGradientType of\n    gtReflected: begin\n      FScanNextFunc:= @ScanNextReflected;\n      FScanAtFunc:= @ScanAtReflected;\n    end;\n    gtDiamond: begin\n      FScanNextFunc:= @ScanNextDiamond;\n      FScanAtFunc:= @ScanAtDiamond;\n    end;\n    gtRadial: if (FRelativeFocal.x = 0) and (FRelativeFocal.y = 0) then\n    begin\n      if (FFocalRadius = 0) and (FRadius = 1) then\n      begin\n        FScanNextFunc:= @ScanNextRadial;\n        FScanAtFunc:= @ScanAtRadial;\n      end else\n      begin\n        FScanNextFunc:= @ScanNextRadial2;\n        FScanAtFunc:= @ScanAtRadial2;\n      end;\n    end else\n    begin\n      FScanNextFunc:= @ScanNextRadialFocal;\n      FScanAtFunc:= @ScanAtRadialFocal;\n\n      FFocalDirection := FRelativeFocal;\n      FFocalDistance := VectLen(FFocalDirection);\n      if FFocalDistance > 0 then FFocalDirection := FFocalDirection * (1/FFocalDistance);\n      FFocalNormal := PointF(-FFocalDirection.y,FFocalDirection.x);\n      FRadialDenominator := sqr(FRadius-FFocalRadius)-sqr(FFocalDistance);\n\n      //case in which the second circle is bigger and the first circle is within the second\n      if (FRadius < FFocalRadius) and (FFocalDistance <= FFocalRadius-FRadius) then\n        FRadialDeltaSign := -1\n      else\n        FRadialDeltaSign := 1;\n\n      //clipping afer the apex\n      if (FFocalRadius < FRadius) and (FFocalDistance > FRadius-FFocalRadius) then\n      begin\n        maxW1 := FRadius/(FRadius-FFocalRadius)*FFocalDistance;\n        maxW2 := MaxSingle;\n      end else\n      if (FRadius < FFocalRadius) and (FFocalDistance > FFocalRadius-FRadius) then\n      begin\n        maxW1 := MaxSingle;\n        maxW2 := FFocalRadius/(FFocalRadius-FRadius)*FFocalDistance;\n      end else\n      begin\n        maxW1 := MaxSingle;\n        maxW2 := MaxSingle;\n      end;\n    end;\n    gtAngular: begin\n      FScanNextFunc:= @ScanNextAngular;\n      FScanAtFunc:= @ScanAtAngular;\n    end;\n  else\n    {gtLinear:} begin\n      FScanNextFunc:= @ScanNextLinear;\n      FScanAtFunc:= @ScanAtLinear;\n    end;\n  end;\nend;\n\nprocedure TBGRAGradientScanner.SetGradient(c1, c2: TBGRAPixel;\n  AGammaCorrection: boolean);\nbegin\n  if Assigned(FGradient) and FGradientOwner then FreeAndNil(FGradient);\n\n  //transparent pixels have no color so\n  //take it from other color\n  if c1.alpha = 0 then c1 := BGRA(c2.red,c2.green,c2.blue,0);\n  if c2.alpha = 0 then c2 := BGRA(c1.red,c1.green,c1.blue,0);\n\n  if AGammaCorrection then\n    FGradient := TBGRASimpleGradientWithGammaCorrection.Create(c1,c2)\n  else\n    FGradient := TBGRASimpleGradientWithoutGammaCorrection.Create(c1,c2);\n  FGradientOwner := true;\n  InitGradient;\nend;\n\nprocedure TBGRAGradientScanner.SetGradient(AGradient: TBGRACustomGradient;\n  AOwner: boolean);\nbegin\n  if Assigned(FGradient) and FGradientOwner then FreeAndNil(FGradient);\n  FGradient := AGradient;\n  FGradientOwner := AOwner;\n  InitGradient;\nend;\n\nprocedure TBGRAGradientScanner.InitTransform;\nvar u,v: TPointF;\nbegin\n  u := FDir1-FOrigin;\n  if FGradientType in[gtLinear,gtReflected] then\n    v := PointF(u.y, -u.x)\n  else\n    v := FDir2-FOrigin;\n\n  FMatrix := FTransform * FHiddenTransform * AffineMatrix(u.x, v.x, FOrigin.x,\n                                                          u.y, v.y, FOrigin.y);\n  if IsAffineMatrixInversible(FMatrix) then\n  begin\n    FMatrix := AffineMatrixInverse(FMatrix);\n    FIsAverage:= false;\n  end else\n  begin\n    FMatrix := AffineMatrixIdentity;\n    FIsAverage:= true;\n  end;\n\n  case FGradientType of\n    gtReflected: FRepeatHoriz := (FMatrix[1,1]=0);\n    gtDiamond,gtAngular: FRepeatHoriz:= false;\n    gtRadial: begin\n      FRepeatHoriz:= false;\n      if FFocalRadius = FRadius then FIsAverage:= true;\n    end\n  else\n    {gtLinear:} FRepeatHoriz := (FMatrix[1,1]=0);\n  end;\n\n  if FGradient.Monochrome then\n    FIsAverage:= true;\n\n  if FIsAverage then\n    FRepeatHoriz:= true;\n\n  FPosition := PointF(0,0);\nend;\n\nprocedure TBGRAGradientScanner.InitGradient;\nbegin\n  FAverageColor := FGradient.GetAverageColor;\n  FAverageExpandedColor := FGradient.GetAverageExpandedColor;\n  UpdateGetGradientColorFunctions;\nend;\n\nfunction TBGRAGradientScanner.ComputeRadialFocal(const p: TPointF): single;\nvar\n  w1,w2,num: single;\n  h,d1,d2,delta: double;\nbegin\n  w1 := p**FFocalDirection;\n  w2 := FFocalDistance-w1;\n  if (w1 < maxW1) and (w2 < maxW2) then\n  begin\n    //vertical position and distances\n    h := sqr(p**FFocalNormal);\n    d1 := sqr(w1)+h;\n    d2 := sqr(w2)+h;\n    //finding t\n    delta := sqr(FFocalRadius)*d1 + 2*FRadius*FFocalRadius*(p**(FRelativeFocal-p))+\n             sqr(FRadius)*d2 - sqr(VectDet(p,FRelativeFocal));\n    if delta >= 0 then\n    begin\n      num := -FFocalRadius*(FRadius-FFocalRadius)-(FRelativeFocal**(FRelativeFocal-p));\n      result := (num+FRadialDeltaSign*sqrt(delta))/FRadialDenominator;\n    end else\n      result := EmptySingle;\n  end else\n    result := EmptySingle;\nend;\n\nfunction TBGRAGradientScanner.ScanNextLinear: single;\nbegin\n  result := FPosition.x;\nend;\n\nfunction TBGRAGradientScanner.ScanNextReflected: single;\nbegin\n  result := abs(FPosition.x);\nend;\n\nfunction TBGRAGradientScanner.ScanNextDiamond: single;\nbegin\n  result := max(abs(FPosition.x), abs(FPosition.y));\nend;\n\nfunction TBGRAGradientScanner.ScanNextRadial: single;\nbegin\n  result := sqrt(sqr(FPosition.x) + sqr(FPosition.y));\nend;\n\nfunction TBGRAGradientScanner.ScanNextRadial2: single;\nbegin\n  result := (sqrt(sqr(FPosition.x) + sqr(FPosition.y))-FFocalRadius)/(FRadius-FFocalRadius);\nend;\n\nfunction TBGRAGradientScanner.ScanNextRadialFocal: single;\nbegin\n  result := ComputeRadialFocal(FPosition);\nend;\n\nfunction TBGRAGradientScanner.ScanNextAngular: single;\nbegin\n  if FPosition.y >= 0 then\n    result := arctan2(FPosition.y,FPosition.x)/(2*Pi)\n  else\n    result := 1-arctan2(-FPosition.y,FPosition.x)/(2*Pi)\nend;\n\nfunction TBGRAGradientScanner.ScanAtLinear(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n    result := x;\nend;\n\nfunction TBGRAGradientScanner.ScanAtReflected(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n    result := abs(x);\nend;\n\nfunction TBGRAGradientScanner.ScanAtDiamond(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n    result := max(abs(x), abs(y));\nend;\n\nfunction TBGRAGradientScanner.ScanAtRadial(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n    result := sqrt(sqr(x) + sqr(y));\nend;\n\nfunction TBGRAGradientScanner.ScanAtRadial2(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n    result := (sqrt(sqr(x) + sqr(y))-FFocalRadius)/(FRadius-FFocalRadius);\nend;\n\nfunction TBGRAGradientScanner.ScanAtRadialFocal(const p: TPointF): single;\nbegin\n  result := ComputeRadialFocal(FMatrix*p);\nend;\n\nfunction TBGRAGradientScanner.ScanAtAngular(const p: TPointF): single;\nbegin\n  with (FMatrix*p) do\n  begin\n    if y >= 0 then\n      result := arctan2(y,x)/(2*Pi)\n    else\n      result := 1-arctan2(-y,x)/(2*Pi)\n  end;\nend;\n\nfunction TBGRAGradientScanner.ScanNextInline: TBGRAPixel;\nbegin\n  result := FGetGradientColor(FScanNextFunc());\n  FPosition.x := FPosition.x + FMatrix[1,1];\n  FPosition.y := FPosition.y + FMatrix[2,1];\nend;\n\nfunction TBGRAGradientScanner.ScanNextExpandedInline: TExpandedPixel;\nbegin\n  result := FGetGradientExpandedColor(FScanNextFunc());\n  FPosition.x := FPosition.x + FMatrix[1,1];\n  FPosition.y := FPosition.y + FMatrix[2,1];\nend;\n\nconstructor TBGRAGradientScanner.Create(c1, c2: TBGRAPixel;\n  AGradientType: TGradientType; AOrigin, d1: TPointF; gammaColorCorrection: boolean;\n  Sinus: Boolean);\nbegin\n  FGradient := nil;\n  SetGradient(c1,c2,gammaColorCorrection);\n  Init(AGradientType,AOrigin,d1,AffineMatrixIdentity,Sinus);\nend;\n\nconstructor TBGRAGradientScanner.Create(c1, c2: TBGRAPixel;\n  AGradientType: TGradientType; AOrigin, d1, d2: TPointF; gammaColorCorrection: boolean;\n  Sinus: Boolean);\nbegin\n  FGradient := nil;\n  if AGradientType in[gtLinear,gtReflected] then raise EInvalidArgument.Create('Two directions are not required for linear and reflected gradients');\n  SetGradient(c1,c2,gammaColorCorrection);\n  Init(AGradientType,AOrigin,d1,d2,AffineMatrixIdentity,Sinus);\nend;\n\nconstructor TBGRAGradientScanner.Create(gradient: TBGRACustomGradient;\n  AGradientType: TGradientType; AOrigin, d1: TPointF; Sinus: Boolean; AGradientOwner: Boolean=False);\nbegin\n  FGradient := gradient;\n  FGradientOwner := AGradientOwner;\n  InitGradient;\n  Init(AGradientType,AOrigin,d1,AffineMatrixIdentity,Sinus);\nend;\n\nconstructor TBGRAGradientScanner.Create(gradient: TBGRACustomGradient;\n  AGradientType: TGradientType; AOrigin, d1, d2: TPointF; Sinus: Boolean;\n  AGradientOwner: Boolean);\nbegin\n  if AGradientType in[gtLinear,gtReflected] then raise EInvalidArgument.Create('Two directions are not required for linear and reflected gradients');\n  FGradient := gradient;\n  FGradientOwner := AGradientOwner;\n  InitGradient;\n  Init(AGradientType,AOrigin,d1,d2,AffineMatrixIdentity,Sinus);\nend;\n\nconstructor TBGRAGradientScanner.Create(gradient: TBGRACustomGradient;\n  AOrigin: TPointF; ARadius: single; AFocal: TPointF; AFocalRadius: single;\n  AGradientOwner: Boolean);\nbegin\n  FGradient := gradient;\n  FGradientOwner := AGradientOwner;\n  InitGradient;\n  Init(AOrigin, ARadius, AFocal, AFocalRadius, AffineMatrixIdentity, AffineMatrixIdentity);\nend;\n\ndestructor TBGRAGradientScanner.Destroy;\nbegin\n  if FGradientOwner then\n    FGradient.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRAGradientScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FPosition := FMatrix*PointF(x,y);\n  if FRepeatHoriz then\n  begin\n    if FIsAverage then\n    begin\n      FHorizColor := FAverageColor;\n      FHorizExpandedColor := FAverageExpandedColor;\n    end else\n    begin\n      FHorizColor := ScanNextInline;\n      FHorizExpandedColor := ScanNextExpandedInline;\n    end;\n  end;\nend;\n\nfunction TBGRAGradientScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  if FRepeatHoriz then\n    result := FHorizColor\n  else\n    result := ScanNextInline;\nend;\n\nfunction TBGRAGradientScanner.ScanNextExpandedPixel: TExpandedPixel;\nbegin\n  if FRepeatHoriz then\n    result := FHorizExpandedColor\n  else\n    result := ScanNextExpandedInline;\nend;\n\nfunction TBGRAGradientScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  if FIsAverage then\n    result := FAverageColor\n  else\n    result := GetGradientColor(FScanAtFunc(PointF(X,Y)));\nend;\n\nfunction TBGRAGradientScanner.ScanAtExpanded(X, Y: Single): TExpandedPixel;\nbegin\n  if FIsAverage then\n    result := FAverageExpandedColor\n  else\n    result := GetGradientExpandedColor(FScanAtFunc(PointF(X,Y)));\nend;\n\nprocedure TBGRAGradientScanner.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nvar c: TBGRAPixel;\nbegin\n  if FRepeatHoriz then\n  begin\n    c := FHorizColor;\n    case mode of\n      dmDrawWithTransparency: DrawPixelsInline(pdest,c,count);\n      dmLinearBlend: FastBlendPixelsInline(pdest,c,count);\n      dmSet: FillDWord(pdest^,count,Longword(c));\n      dmXor: XorInline(pdest,c,count);\n      dmSetExceptTransparent: if c.alpha = 255 then FillDWord(pdest^,count,Longword(c));\n    end;\n    exit;\n  end;\n\n  case mode of\n    dmDrawWithTransparency:\n      while count > 0 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest,ScanNextInline);\n        inc(pdest);\n        dec(count);\n      end;\n    dmLinearBlend:\n      while count > 0 do\n      begin\n        FastBlendPixelInline(pdest,ScanNextInline);\n        inc(pdest);\n        dec(count);\n      end;\n    dmXor:\n      while count > 0 do\n      begin\n        PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(ScanNextInline);\n        inc(pdest);\n        dec(count);\n      end;\n    dmSet:\n      while count > 0 do\n      begin\n        pdest^ := ScanNextInline;\n        inc(pdest);\n        dec(count);\n      end;\n    dmSetExceptTransparent:\n      while count > 0 do\n      begin\n        c := ScanNextInline;\n        if c.alpha = 255 then pdest^ := c;\n        inc(pdest);\n        dec(count);\n      end;\n  end;\nend;\n\nprocedure TBGRAGradientScanner.ScanSkipPixels(ACount: integer);\nbegin\n  if not FRepeatHoriz and not FIsAverage then\n    FPosition.Offset(FMatrix[1,1]*ACount,FMatrix[2,1]*ACount);\nend;\n\nfunction TBGRAGradientScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  result := true;\nend;\n\n{ TBGRATextureMaskScanner }\n\nconstructor TBGRATextureMaskScanner.Create(AMask: IBGRAScanner;\n  AOffset: TPoint; ATexture: IBGRAScanner; AGlobalOpacity: Byte);\nbegin\n  FMask := AMask;\n  FOffset := AOffset;\n  FTexture := ATexture;\n  FTextureScanNext := @FTexture.ScanNextPixel;\n  FTextureScanAt := @FTexture.ScanAt;\n  FGlobalOpacity:= AGlobalOpacity;\nend;\n\ndestructor TBGRATextureMaskScanner.Destroy;\nbegin\n  fillchar(FMask,sizeof(FMask),0); //avoids interface deref\n  fillchar(FTexture,sizeof(FTexture),0);\n  inherited Destroy;\nend;\n\nfunction TBGRATextureMaskScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRATextureMaskScanner.ScanPutPixels(pdest: PBGRAPixel;\n  count: integer; mode: TDrawMode);\nvar c: TBGRAPixel;\n    ptex: pbgrapixel;\n    pmask: PByteMask;\n    stride, qty: integer;\n\n  function GetNext: TBGRAPixel; inline;\n  begin\n    result := ptex^;\n    inc(ptex);\n    result.alpha := ApplyOpacity(result.alpha, pmask^.gray);\n    inc(pmask, stride);\n  end;\n\n  function GetNextWithGlobal: TBGRAPixel; inline;\n  begin\n    result := ptex^;\n    inc(ptex);\n    result.alpha := ApplyOpacity( ApplyOpacity(result.alpha, pmask^.gray), FGlobalOpacity );\n    inc(pmask, stride);\n  end;\n\nbegin\n  if count > length(FMemTex) then setlength(FMemTex, max(length(FMemTex)*2,count));\n  ScannerPutPixels(FTexture,@FMemTex[0],count,dmSet);\n  ptex := @FMemTex[0];\n  while count > 0 do\n  begin\n    qty := count;\n    FMask.ScanNextMaskChunk(qty, pMask, stride);\n    dec(count, qty);\n    if FGlobalOpacity <> 255 then\n    begin\n      case mode of\n        dmDrawWithTransparency:\n          while qty > 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pdest,GetNextWithGlobal);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmLinearBlend:\n          while qty > 0 do\n          begin\n            FastBlendPixelInline(pdest,GetNextWithGlobal);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmXor:\n          while qty > 0 do\n          begin\n            PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(GetNextWithGlobal);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmSet:\n          while qty > 0 do\n          begin\n            pdest^ := GetNextWithGlobal;\n            inc(pdest);\n            dec(qty);\n          end;\n        dmSetExceptTransparent:\n          while qty > 0 do\n          begin\n            c := GetNextWithGlobal;\n            if c.alpha = 255 then pdest^ := c;\n            inc(pdest);\n            dec(qty);\n          end;\n      end;\n    end else\n    begin\n      case mode of\n        dmDrawWithTransparency:\n          while qty > 0 do\n          begin\n            DrawPixelInlineWithAlphaCheck(pdest,GetNext);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmLinearBlend:\n          while qty > 0 do\n          begin\n            FastBlendPixelInline(pdest,GetNext);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmXor:\n          while qty > 0 do\n          begin\n            PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(GetNext);\n            inc(pdest);\n            dec(qty);\n          end;\n        dmSet:\n          while qty > 0 do\n          begin\n            pdest^ := GetNext;\n            inc(pdest);\n            dec(qty);\n          end;\n        dmSetExceptTransparent:\n          while qty > 0 do\n          begin\n            c := GetNext;\n            if c.alpha = 255 then pdest^ := c;\n            inc(pdest);\n            dec(qty);\n          end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRATextureMaskScanner.ScanSkipPixels(ACount: integer);\nbegin\n  FMask.ScanSkipPixels(ACount);\n  FTexture.ScanSkipPixels(ACount);\nend;\n\nprocedure TBGRATextureMaskScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FMask.ScanMoveTo(X+FOffset.X,Y+FOffset.Y);\n  FTexture.ScanMoveTo(X,Y);\nend;\n\nfunction TBGRATextureMaskScanner.ScanNextPixel: TBGRAPixel;\nvar\n  pMask: PByteMask;\n  stride, qty: integer;\nbegin\n  qty := 1;\n  FMask.ScanNextMaskChunk(qty,pMask,stride);\n  result := FTextureScanNext();\n  result.alpha := ApplyOpacity( ApplyOpacity(result.alpha,pMask^.gray), FGlobalOpacity );\nend;\n\nfunction TBGRATextureMaskScanner.ScanAt(X, Y: Single): TBGRAPixel;\nvar alpha: byte;\nbegin\n  alpha := FMask.ScanAtMask(X+FOffset.X,Y+FOffset.Y).gray;\n  result := FTextureScanAt(X,Y);\n  result.alpha := ApplyOpacity( ApplyOpacity(result.alpha,alpha), FGlobalOpacity );\nend;\n\n{ TBGRASolidColorMaskScanner }\n\nconstructor TBGRASolidColorMaskScanner.Create(AMask: IBGRAScanner;\n  AOffset: TPoint; ASolidColor: TBGRAPixel);\nbegin\n  FMask := AMask;\n  FOffset := AOffset;\n  FSolidColor := ASolidColor;\nend;\n\ndestructor TBGRASolidColorMaskScanner.Destroy;\nbegin\n  fillchar(FMask,sizeof(FMask),0); //avoids interface deref\n  inherited Destroy;\nend;\n\nfunction TBGRASolidColorMaskScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRASolidColorMaskScanner.ScanPutPixels(pdest: PBGRAPixel;\n  count: integer; mode: TDrawMode);\nvar c: TBGRAPixel;\n    pmask: PByteMask;\n    stride, qty: integer;\n\n  function GetNext: TBGRAPixel; inline;\n  begin\n    result := FSolidColor;\n    result.alpha := ApplyOpacity(result.alpha,pmask^.gray);\n    inc(pmask, stride);\n  end;\n\nbegin\n  while count > 0 do\n  begin\n    qty := count;\n    FMask.ScanNextMaskChunk(qty, pMask, stride);\n    dec(count, qty);\n    case mode of\n      dmDrawWithTransparency:\n        while qty > 0 do\n        begin\n          DrawPixelInlineWithAlphaCheck(pdest,GetNext);\n          inc(pdest);\n          dec(qty);\n        end;\n      dmLinearBlend:\n        while qty > 0 do\n        begin\n          FastBlendPixelInline(pdest,GetNext);\n          inc(pdest);\n          dec(qty);\n        end;\n      dmXor:\n        while qty > 0 do\n        begin\n          PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(GetNext);\n          inc(pdest);\n          dec(qty);\n        end;\n      dmSet:\n        while qty > 0 do\n        begin\n          pdest^ := GetNext;\n          inc(pdest);\n          dec(qty);\n        end;\n      dmSetExceptTransparent:\n        while qty > 0 do\n        begin\n          c := GetNext;\n          if c.alpha = 255 then pdest^ := c;\n          inc(pdest);\n          dec(qty);\n        end;\n    end;\n  end;\nend;\n\nprocedure TBGRASolidColorMaskScanner.ScanSkipPixels(ACount: integer);\nbegin\n  FMask.ScanSkipPixels(ACount);\nend;\n\nprocedure TBGRASolidColorMaskScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FMask.ScanMoveTo(X+FOffset.X,Y+FOffset.Y);\nend;\n\nfunction TBGRASolidColorMaskScanner.ScanNextPixel: TBGRAPixel;\nvar\n  pMask: PByteMask;\n  stride, qty: integer;\nbegin\n  qty := 1;\n  FMask.ScanNextMaskChunk(qty,pMask,stride);\n  result := FSolidColor;\n  result.alpha := ApplyOpacity(result.alpha,pMask^.gray);\nend;\n\nfunction TBGRASolidColorMaskScanner.ScanAt(X, Y: Single): TBGRAPixel;\nvar alpha: byte;\nbegin\n  alpha := FMask.ScanAtMask(X,Y).gray;\n  result := FSolidColor;\n  result.alpha := ApplyOpacity(result.alpha,alpha);\nend;\n\n{ TBGRAOpacityScanner }\n\nconstructor TBGRAOpacityScanner.Create(ATexture: IBGRAScanner;\n  AGlobalOpacity: Byte);\nbegin\n  FTexture := ATexture;\n  FScanNext := @FTexture.ScanNextPixel;\n  FScanAt := @FTexture.ScanAt;\n  FGlobalOpacity:= AGlobalOpacity;\n  FOwnedScanner := nil;\nend;\n\nconstructor TBGRAOpacityScanner.Create(ATexture: TBGRACustomScanner;\n  AGlobalOpacity: Byte; AOwned: boolean);\nbegin\n  FTexture := ATexture;\n  FScanNext := @FTexture.ScanNextPixel;\n  FScanAt := @FTexture.ScanAt;\n  FGlobalOpacity:= AGlobalOpacity;\n  if AOwned then\n    FOwnedScanner := ATexture\n  else\n    FOwnedScanner := nil;\nend;\n\ndestructor TBGRAOpacityScanner.Destroy;\nbegin\n  fillchar(FTexture,sizeof(FTexture),0);\n  FOwnedScanner.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRAOpacityScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGRAOpacityScanner.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nvar c: TBGRAPixel;\n    ptex: pbgrapixel;\n\n  function GetNext: TBGRAPixel; inline;\n  begin\n    result := ptex^;\n    inc(ptex);\n    result.alpha := ApplyOpacity(result.alpha,FGlobalOpacity);\n  end;\n\nbegin\n  if count > length(FMemTex) then setlength(FMemTex, max(length(FMemTex)*2,count));\n  ScannerPutPixels(FTexture,@FMemTex[0],count,dmSet);\n\n  ptex := @FMemTex[0];\n\n  case mode of\n    dmDrawWithTransparency:\n      while count > 0 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest,GetNext);\n        inc(pdest);\n        dec(count);\n      end;\n    dmLinearBlend:\n      while count > 0 do\n      begin\n        FastBlendPixelInline(pdest,GetNext);\n        inc(pdest);\n        dec(count);\n      end;\n    dmXor:\n      while count > 0 do\n      begin\n        PLongWord(pdest)^ := PLongWord(pdest)^ xor LongWord(GetNext);\n        inc(pdest);\n        dec(count);\n      end;\n    dmSet:\n      while count > 0 do\n      begin\n        pdest^ := GetNext;\n        inc(pdest);\n        dec(count);\n      end;\n    dmSetExceptTransparent:\n      while count > 0 do\n      begin\n        c := GetNext;\n        if c.alpha = 255 then pdest^ := c;\n        inc(pdest);\n        dec(count);\n      end;\n  end;\nend;\n\nprocedure TBGRAOpacityScanner.ScanSkipPixels(ACount: integer);\nbegin\n  FTexture.ScanSkipPixels(ACount);\nend;\n\nprocedure TBGRAOpacityScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FTexture.ScanMoveTo(X,Y);\nend;\n\nfunction TBGRAOpacityScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  result := FScanNext();\n  result.alpha := ApplyOpacity(result.alpha, FGlobalOpacity );\nend;\n\nfunction TBGRAOpacityScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  result := FScanAt(X,Y);\n  result.alpha := ApplyOpacity(result.alpha, FGlobalOpacity );\nend;\n\ninitialization\n\n  Randomize;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgragraphics.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Imports type from Graphics, if available, or defines equivalent types. }\nunit BGRAGraphics;\n\n{$mode objfpc}{$H+}\n{$I bgrabitmap.inc}\n\ninterface\n\n{=== Types imported from Graphics ===}\n\n{$IFDEF BGRABITMAP_USE_LCL}\nuses Graphics, GraphType, FPImage, FPCanvas;\n\ntype\n  PColor = Graphics.PColor;\n  TColor = Graphics.TColor;\n  TAntialiasingMode = Graphics.TAntialiasingMode;\n  TGradientDirection = Graphics.TGradientDirection;\n  TPenEndCap = Graphics.TPenEndCap;\n  TPenJoinStyle = Graphics.TPenJoinStyle;\n  TPenStyle = Graphics.TPenStyle;\n  TPenMode = Graphics.TPenMode;\n\nconst\n  amDontCare = Graphics.amDontCare;\n  amOn = Graphics.amOn;\n  amOff = Graphics.amOff;\n\n  gdVertical = Graphics.gdVertical;\n  gdHorizontal = Graphics.gdHorizontal;\n\n  pecRound = Graphics.pecRound;\n  pecSquare = Graphics.pecSquare;\n  pecFlat = Graphics.pecFlat;\n\n  pjsRound = Graphics.pjsRound;\n  pjsBevel = Graphics.pjsBevel;\n  pjsMiter = Graphics.pjsMiter;\n\n  psSolid = Graphics.psSolid;\n  psDash = Graphics.psDash;\n  psDot = Graphics.psDot;\n  psDashDot = Graphics.psDashDot;\n  psDashDotDot = Graphics.psDashDotDot;\n  psClear = Graphics.psClear;\n  psInsideframe = Graphics.psInsideframe;\n  psPattern = Graphics.psPattern;\n\n  pmBlack = Graphics.pmBlack;\n  pmWhite = Graphics.pmWhite;\n  pmNop = Graphics.pmNop;\n  pmNot = Graphics.pmNot;\n  pmCopy = Graphics.pmCopy;\n  pmNotCopy = Graphics.pmNotCopy;\n  pmMergePenNot = Graphics.pmMergePenNot;\n  pmMaskPenNot = Graphics.pmMaskPenNot;\n  pmMergeNotPen = Graphics.pmMergeNotPen;\n  pmMaskNotPen = Graphics.pmMaskNotPen;\n  pmMerge = Graphics.pmMerge;\n  pmNotMerge = Graphics.pmNotMerge;\n  pmMask = Graphics.pmMask;\n  pmNotMask = Graphics.pmNotMask;\n  pmXor = Graphics.pmXor;\n  pmNotXor = Graphics.pmNotXor;\n\n  tmAuto = Graphics.tmAuto;\n  tmFixed = Graphics.tmFixed;\n\ntype\n  TPen = Graphics.TPen;\n  {* Text layout (vertical position) }\n  TTextLayout = Graphics.TTextLayout;\n  TTextStyle = Graphics.TTextStyle;\n\n  TFillStyle = Graphics.TFillStyle;\n  TFillMode = Graphics.TFillMode;\n  TBrushStyle = Graphics.TBrushStyle;\n\nconst\n  {** Text aligned to the top }\n  tlTop = Graphics.tlTop;\n  {** Text aligned vertically to the center }\n  tlCenter = Graphics.tlCenter;\n  {** Text aligned to the bottom }\n  tlBottom = Graphics.tlBottom;\n\n  fsSurface = GraphType.fsSurface;\n  fsBorder = GraphType.fsBorder;\n\n  fmAlternate = Graphics.fmAlternate;\n  fmWinding = Graphics.fmWinding;\n\n  bsSolid = Graphics.bsSolid;\n  bsClear = Graphics.bsClear;\n  bsHorizontal = Graphics.bsHorizontal;\n  bsVertical = Graphics.bsVertical;\n  bsFDiagonal = Graphics.bsFDiagonal;\n  bsBDiagonal = Graphics.bsBDiagonal;\n  bsCross = Graphics.bsCross;\n  bsDiagCross = Graphics.bsDiagCross;\n  bsImage = FPCanvas.bsImage;\n\ntype\n  TBrush = Graphics.TBrush;\n  TCanvas = Graphics.TCanvas;\n  TGraphic = Graphics.TGraphic;\n  TRawImage = GraphType.TRawImage;\n  TBitmap = Graphics.TBitmap;\n\n  TRasterImage = Graphics.TRasterImage;\n\n  TFontStyle = Graphics.TFontStyle;\n  TFontStyles = Graphics.TFontStyles;\n  TFontQuality = Graphics.TFontQuality;\n\ntype\n  TFont = Graphics.TFont;\n\nconst\n  fsBold = Graphics.fsBold;\n  fsItalic = Graphics.fsItalic;\n  fsStrikeOut = Graphics.fsStrikeOut;\n  fsUnderline = Graphics.fsUnderline;\n\n  fqDefault = Graphics.fqDefault;\n  fqDraft = Graphics.fqDraft;\n  fqProof = Graphics.fqProof;\n  fqNonAntialiased = Graphics.fqNonAntialiased;\n  fqAntialiased = Graphics.fqAntialiased;\n  fqCleartype = Graphics.fqCleartype;\n  fqCleartypeNatural = Graphics.fqCleartypeNatural;\n\n  clNone = Graphics.clNone;\n\n  clBlack   = Graphics.clBlack;\n  clMaroon  = Graphics.clMaroon;\n  clGreen   = Graphics.clGreen;\n  clOlive   = Graphics.clOlive;\n  clNavy    = Graphics.clNavy;\n  clPurple  = Graphics.clPurple;\n  clTeal    = Graphics.clTeal;\n  clGray    = Graphics.clGray;\n  clSilver  = Graphics.clSilver;\n  clRed     = Graphics.clRed;\n  clLime    = Graphics.clLime;\n  clYellow  = Graphics.clYellow;\n  clBlue    = Graphics.clBlue;\n  clFuchsia = Graphics.clFuchsia;\n  clAqua    = Graphics.clAqua;\n  clLtGray  = Graphics.clLtGray; // clSilver alias\n  clDkGray  = Graphics.clDkGray; // clGray alias\n  clWhite   = Graphics.clWhite;\n\nfunction FPColorToTColor(const FPColor: TFPColor): TColor; inline;\nfunction TColorToFPColor(const c: TColor): TFPColor; inline;\nfunction ColorToRGB(c: TColor): TColor; inline;\nfunction RGBToColor(R, G, B: Byte): TColor; inline;\nprocedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte); inline;// does not work on system color\nfunction clRgbBtnHighlight: TColor;\nfunction clRgbBtnShadow: TColor;\n\nimplementation\n\nfunction FPColorToTColor(const FPColor: TFPColor): TColor;\nbegin\n  result := Graphics.FPColorToTColor(FPColor);\nend;\n\nfunction TColorToFPColor(const c: TColor): TFPColor;\nbegin\n  result := Graphics.TColorToFPColor(c);\nend;\n\nfunction ColorToRGB(c: TColor): TColor;\nbegin\n  result := Graphics.ColorToRGB(c);\nend;\n\nfunction RGBToColor(R, G, B: Byte): TColor;\nbegin\n  result := Graphics.RGBToColor(R, G, B);\nend;\n\nprocedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte);\nbegin\n  Graphics.RedGreenBlue(rgb, Red, Green, Blue);\nend;\n\nfunction clRgbBtnHighlight: TColor;\nbegin\n  result := Graphics.ColorToRGB(clBtnHighlight);\nend;\n\nfunction clRgbBtnShadow: TColor;\nbegin\n  result := Graphics.ColorToRGB(clBtnShadow);\nend;\n\n{$ELSE}\n\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  {$i bgramsegui_uses.inc}\n{$ELSE}\n  {$IFDEF BGRABITMAP_USE_FPGUI}\n    {$i bgrafpgui_uses.inc}\n  {$ELSE}\n    {$i bgranogui_uses.inc}\n  {$ENDIF}\n{$ENDIF}\n\ntype\n  TTransparentMode = (tmAuto, tmFixed);\n  TGraphic = class;\n\n{$DEFINE INCLUDE_INTERFACE}\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  {$i bgramsegui.inc}\n{$ELSE}\n  {$IFDEF BGRABITMAP_USE_FPGUI}\n    {$i bgrafpgui.inc}\n  {$ELSE}\n    {$i bgranogui.inc}\n  {$ENDIF}\n{$ENDIF}\n\ntype\n  {* Pointer to a TColor value.\n\n  TColor contains a color stored as RGB. The red/green/blue values\n   range from 0 to 255. The formula to get the color value is:\n\n   _color_ = _red_ + (_green_ **shl** 8) + (_blue_ **shl** 16)\n\n   except with fpGUI where it is:\n\n   _color_ = (_red_ **shl** 16) + (_green_ **shl** 8) + _blue_ }\n  PColor = ^TColor;\n\n  {** Converts a TFPColor into a TColor value. Does not work on system color }\n  function FPColorToTColor(const FPColor: TFPColor): TColor;\n  {** Converts a TColor into a TFPColor value. Does not work on system color }\n  function TColorToFPColor(const c: TColor): TFPColor;\n\n  {** Makes a TColor from the RGB values }\n  function RGBToColor(R, G, B: Byte): TColor; inline;\n  {** Extracts the RGB values of a TColor. Does not work on system color }\n  procedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte);\n\ntype\n  {* Direction of change in a gradient }\n  TGradientDirection = (\n    {** Color changes vertically }\n    gdVertical,\n    {** Color changes horizontally }\n    gdHorizontal);\n\n  {* Antialiasing mode for a Canvas }\n  TAntialiasingMode = (\n    {** It does not matter if there is antialiasing or not }\n    amDontCare,\n    {** Antialiasing is required (BGRACanvas provide it) }\n    amOn,\n    {** Antialiasing is disabled }\n    amOff);\n\ntype\n  {* Vertical position of a text }\n  TTextLayout = (tlTop, tlCenter, tlBottom);\n  {* Styles to describe how a text is drawn in a rectangle }\n  TTextStyle = packed record\n    {** Horizontal alignment }\n    Alignment : TAlignment;\n\n    {** Vertical alignment }\n    Layout    : TTextLayout;\n\n    {** If WordBreak is false then process #13, #10 as\n        standard chars and perform no Line breaking }\n    SingleLine: boolean;\n\n    {** Clip Text to passed Rectangle }\n    Clipping  : boolean;\n\n    {** Replace #9 by apropriate amount of spaces (default is usually 8) }\n    ExpandTabs: boolean;\n\n    {** Process first single '&' per line as an underscore and draw '&&' as '&' }\n    ShowPrefix: boolean;\n\n    {** If line of text is too long too fit between left and right boundaries\n        try to break into multiple lines between words. See also _EndEllipsis_ }\n    Wordbreak : boolean;\n\n    {** Fills background with current brush }\n    Opaque    : boolean;\n\n    {** Use the system font instead of canvas font }\n    SystemFont: Boolean;\n\n    {** For RightToLeft text reading (Text Direction) }\n    RightToLeft: Boolean;\n\n    {** If line of text is too long to fit between left and right boundaries\n        truncates the text and adds \"...\". If Wordbreak is set as well,\n        Workbreak will dominate }\n    EndEllipsis: Boolean;\n  end;\n\n  {* Option for floodfill (used in BGRACanvas) }\n  TFillStyle =\n    (\n      {** Fill up to the color (it fills all except the specified color) }\n      fsSurface,\n      {** Fill the specified color (it fills only connected pixels of this color) }\n      fsBorder\n    );\n  {* How to handle polygons that intersect with themselves and\n     overlapping polygons }\n  TFillMode = (\n    {** Each time a boundary is found, it enters or exit the filling zone }\n    fmAlternate,\n    {** Adds or subtract 1 depending on the order of the points of the\n        polygons (clockwise or counter clockwise) and fill when the\n        result is non-zero. So, to draw a hole, you must specify the points\n        of the hole in the opposite order }\n    fmWinding);\n\n  {$IFNDEF TFontStyle}\ntype\n  {* Available font styles }\n  TFontStyle = (\n    {** Font is bold }\n    fsBold,\n    {** Font is italic }\n    fsItalic,\n    {** An horizontal line is drawn in the middle of the text }\n    fsStrikeOut,\n    {** Text is underlined }\n    fsUnderline);\n  {** A combination of font styles }\n  TFontStyles = set of TFontStyle;\n  {$ENDIF}\n  {$IFNDEF TFontQuality}\ntype\n  {* Quality to use when font is rendered by the system. ClearType means\n     that red and blue channel are used to increase the apparent resolution of the text }\n  TFontQuality = (\n    {** Default quality, depends on the system:\n        - on Windows, it is ClearType without fine antialising\n        - on Linux, it is ClearType with fine antialiasing\n        - on MacOS, it is non antialiased }\n    fqDefault,\n    {** Low quality, generally without fine antialiasing }\n    fqDraft,\n    {** Good quality, with at least some antialiasing }\n    fqProof,\n    {** Aliased if available }\n    fqNonAntialiased,\n    {** With antialiasing }\n    fqAntialiased,\n    {** Cleartype provided by the system }\n    fqCleartype,\n    {** Cleartype provided by the system }\n    fqCleartypeNatural);\n  {$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_FPCANVAS}\n{$DEFINE INCLUDE_INTERFACE}\n{$i bgrafpcanvas.inc}\n{$ENDIF}\n\ntype\n  {$IFNDEF TCanvas}\n  {* A surface on which to draw, generally provided by the operating system }\n  TCanvas = class\n  private\n    {** Assigns a font value }\n    procedure SetFont(AValue: TFont);\n  protected\n    {** Internal canvas, when bridging with non LCL canvas }\n    FCanvas: TGUICanvas;\n    {** Font value }\n    FFont: TFont;\n  public\n    {** Create a bridge to a non LCL canvas }\n    constructor Create(ACanvas: TGUICanvas);\n    {** Draw an image with top-left corner at (_x_, _y_) }\n    procedure Draw(x,y: integer; AImage: TGraphic);\n    {** Draw and stretch an image within the rectangle _ARect_ }\n    procedure StretchDraw(ARect: TRect; AImage: TGraphic);\n    {** Non-LCL canvas (MSEgui, fpGUI) }\n    property GUICanvas: TGUICanvas read FCanvas;\n    {** Access current font }\n    property Font: TFont read FFont write SetFont;\n  end;\n  {$ENDIF}\n\n  {* A class containing any element that can be drawn within rectangular bounds }\n  TGraphic = class(TPersistent)\n  protected\n    {** Draw the content onto a canvas }\n    procedure Draw(ACanvas: TCanvas; const Rect: TRect); virtual; abstract;\n    {** Check whether it is empty }\n    function GetEmpty: Boolean; virtual; abstract;\n    {** Retrieves height }\n    function GetHeight: Integer; virtual; abstract;\n    {** Retrieves width }\n    function GetWidth: Integer; virtual; abstract;\n    {** Retrieves whether transparent }\n    function GetTransparent: Boolean; virtual; abstract;\n    {** Sets whether to render as transparent }\n    procedure SetTransparent(Value: Boolean); virtual; abstract;\n    {** Sets the height }\n    procedure SetHeight(Value: Integer); virtual; abstract;\n    {** Sets the widith }\n    procedure SetWidth(Value: Integer); virtual; abstract;\n    {** Get mimetype of current graphic class }\n    function GetMimeType: string; virtual;\n    {** Notify a change }\n    procedure Changed(Sender: TObject); virtual;\n  public\n    {** Create an empty instance }\n    constructor Create; virtual;\n    {** Load the content from a given file }\n    procedure LoadFromFile({%H-}const Filename: string); virtual;\n    {** Load the content from a given stream }\n    procedure LoadFromStream(Stream: TStream); virtual; abstract;\n    {** Saves the content to a file }\n    procedure SaveToFile({%H-}const Filename: string); virtual;\n    {** Saves the content into a given stream }\n    procedure SaveToStream(Stream: TStream); virtual; abstract;\n    {** Returns the list of possible file extensions }\n    class function GetFileExtensions: string; virtual;\n    {** Clears the content }\n    procedure Clear; virtual;\n  public\n    {** Returns if the content is completely empty }\n    property Empty: Boolean read GetEmpty;\n    {** Returns the height of the bounding rectangle }\n    property Height: Integer read GetHeight write SetHeight;\n    {** Returns the width of the bounding rectangle }\n    property Width: Integer read GetWidth write SetWidth;\n    {** Gets or sets if it is drawn with transparency }\n    property Transparent: Boolean read GetTransparent write SetTransparent;\n  end;\n\n  {$IFNDEF TBitmap}\n  {* Contains a bitmap, generally provided by the operating system }\n  TBitmap = class(TGraphic)\n  private\n    FHeight: integer;\n    FWidth: integer;\n    FInDraw: boolean;\n    FTransparent: boolean;\n    FTransparentColor: TColor;\n    FTransparentMode: TTransparentMode;\n    {** Retrieve canvas }\n    function GetCanvas: TCanvas;\n    {** Retrieve whether a mask is applied }\n    function GetMasked: boolean;\n    {** Retrieve raw image data }\n    function GetRawImage: TRawImage;\n    {** Sets the color to be considered transparent }\n    procedure SetTransparentColor(AValue: TColor);\n    {** Sets the transparency mode }\n    procedure SetTransparentMode(AValue: TTransparentMode);\n  protected\n    FRawImage: TRawImage;\n    {** Draw the image on a canvas within the specified rectangle }\n    procedure Draw(ACanvas: TCanvas; const Rect: TRect); override;\n    {** Retreives width }\n    function GetHeight: Integer; override;\n    {** Retreives height }\n    function GetWidth: Integer; override;\n    {** Sets width (content will be lost) }\n    procedure SetHeight(Value: Integer); override;\n    {** Sets height (content will be lost) }\n    procedure SetWidth(Value: Integer); override;\n    {** Checks whether empty }\n    function GetEmpty: Boolean; override;\n    {** Checks whether transparency is used }\n    function GetTransparent: Boolean; override;\n    {** Sets whether transparency is used }\n    procedure SetTransparent({%H-}Value: Boolean); override;\n    {** Returns the mimetype of the bitmap }\n    function GetMimeType: string; override;\n  public\n    {** Create an empty bitmap (of zero size) }\n    constructor Create; override;\n    {** Frees the bitmap }\n    destructor Destroy; override;\n    {** Assigns an image }\n    procedure Assign(Source: TPersistent); override;\n    {** Loads the image from a stream }\n    procedure LoadFromStream({%H-}Stream: TStream); override;\n    {** Saves the image into a stream }\n    procedure SaveToStream({%H-}Stream: TStream); override;\n    {** Width of the bitmap in pixels }\n    property Width: integer read GetWidth write SetWidth;\n    {** Height of the bitmap in pixels }\n    property Height: integer read GetHeight write SetHeight;\n    {** Access as raw image, giving access to its data }\n    property RawImage: TRawImage read GetRawImage;\n    {** Access canvas for drawing }\n    property Canvas: TCanvas read GetCanvas;\n    {** Is the bitmap drawn according to a mask }\n    property Masked: boolean read GetMasked;\n    {** Color to be used as transparent }\n    property TransparentColor: TColor read FTransparentColor\n             write SetTransparentColor default clDefault;\n    {** Transparency mode }\n    property TransparentMode: TTransparentMode read FTransparentMode\n             write SetTransparentMode default tmAuto;\n  end;\n  {$ENDIF}\n\n{* Multiply and divide the number allowing big intermediate number and rounding the result }\nfunction MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer;\n{* Round the number using math convention }\nfunction MathRound(AValue: ValReal): Int64; inline;\n\nimplementation\n\nuses sysutils, BGRAUTF8;\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  {$i bgramsegui.inc}\n{$ELSE}\n  {$IFDEF BGRABITMAP_USE_FPGUI}\n    {$i bgrafpgui.inc}\n  {$ELSE}\n    {$i bgranogui.inc}\n  {$ENDIF}\n{$ENDIF}\n\nfunction MathRound(AValue: ValReal): Int64; inline;\nbegin\n  if AValue >= 0 then\n    Result := Trunc(AValue + 0.5)\n  else\n    Result := Trunc(AValue - 0.5);\nend;\n\nfunction MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer;\nbegin\n  if nDenominator = 0 then\n    Result := -1\n  else\n    Result := MathRound(int64(nNumber) * int64(nNumerator) / nDenominator);\nend;\n\nfunction FPColorToTColor(const FPColor: TFPColor): TColor;\nbegin\n  {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}\n  Result:=((FPColor.Blue shr 8) and $ff)\n       or (FPColor.Green and $ff00)\n       or ((FPColor.Red shl 8) and $ff0000);\n  {$ELSE}\n  Result:=((FPColor.Red shr 8) and $ff)\n       or (FPColor.Green and $ff00)\n       or ((FPColor.Blue shl 8) and $ff0000);\n  {$ENDIF}\nend;\n\nfunction TColorToFPColor(const c: TColor): TFPColor;\nbegin\n  {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}\n  Result.Blue:=(c and $ff);\n  Result.Blue:=Result.Blue+(Result.Blue shl 8);\n  Result.Green:=(c and $ff00);\n  Result.Green:=Result.Green+(Result.Green shr 8);\n  Result.Red:=(c and $ff0000) shr 8;\n  Result.Red:=Result.Red+(Result.Red shr 8);\n  {$ELSE}\n  Result.Red:=(c and $ff);\n  Result.Red:=Result.Red+(Result.Red shl 8);\n  Result.Green:=(c and $ff00);\n  Result.Green:=Result.Green+(Result.Green shr 8);\n  Result.Blue:=(c and $ff0000) shr 8;\n  Result.Blue:=Result.Blue+(Result.Blue shr 8);\n  {$ENDIF}\n  Result.Alpha:=FPImage.alphaOpaque;\nend;\n\nprocedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte);\nbegin\n  {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}\n  Blue := rgb and $000000ff;\n  Green := (rgb shr 8) and $000000ff;\n  Red := (rgb shr 16) and $000000ff;\n  {$ELSE}\n  Red := rgb and $000000ff;\n  Green := (rgb shr 8) and $000000ff;\n  Blue := (rgb shr 16) and $000000ff;\n  {$ENDIF}\nend;\n\nfunction RGBToColor(R, G, B: Byte): TColor;\nbegin\n  {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}\n  Result := (R shl 16) or (G shl 8) or B;\n  {$ELSE}\n  Result := (B shl 16) or (G shl 8) or R;\n  {$ENDIF}\nend;\n\n{ TGraphic }\n\nfunction TGraphic.GetMimeType: string;\nbegin\n  result := '';\nend;\n\nprocedure TGraphic.Changed(Sender: TObject);\nbegin\n  //nothing\nend;\n\nconstructor TGraphic.Create;\nbegin\n  //nothing\nend;\n\nprocedure TGraphic.LoadFromFile(const Filename: string);\nvar\n  Stream: TStream;\nbegin\n  Stream := TFileStreamUTF8.Create(Filename, fmOpenRead or fmShareDenyWrite);\n  try\n    LoadFromStream(Stream);\n  finally\n    Stream.Free;\n  end;\nend;\n\nprocedure TGraphic.SaveToFile(const Filename: string);\nvar\n  Stream: TStream;\nbegin\n  Stream := TFileStreamUTF8.Create(Filename, fmCreate);\n  try\n    SaveToStream(Stream);\n  finally\n    Stream.Free;\n  end;\nend;\n\nclass function TGraphic.GetFileExtensions: string;\nbegin\n  result := '';\nend;\n\nprocedure TGraphic.Clear;\nbegin\n  //nothing\nend;\n\n{$IFNDEF TCanvas}\n{ TCanvas }\n\nprocedure TCanvas.SetFont(AValue: TFont);\nbegin\n  if FFont=AValue then Exit;\n  FFont.Assign(AValue);\nend;\n\nconstructor TCanvas.Create(ACanvas: TGUICanvas);\nbegin\n  FCanvas := ACanvas;\n  FFont := TFont.Create;\nend;\n\nprocedure TCanvas.Draw(x, y: integer; AImage: TGraphic);\nbegin\n  if AImage is TBitmap then\n    FCanvas.DrawImage(x,y, TBitmap(AImage).RawImage)\n  else\n    AImage.Draw(self, rect(x,y,x+AImage.Width,y+AImage.Height));\nend;\n\nprocedure TCanvas.StretchDraw(ARect: TRect; AImage: TGraphic);\nbegin\n  if AImage is TBitmap then\n    FCanvas.StretchDraw(ARect.Left,ARect.Top,ARect.Right-ARect.Left,ARect.Bottom-ARect.Top, TBitmap(AImage).RawImage)\n  else\n    AImage.Draw(self, ARect);\nend;\n{$ENDIF}\n\n{$IFNDEF TBitmap}\n{ TBitmap }\n\nprocedure TBitmap.SetWidth(Value: Integer);\nbegin\n  if FWidth=Value then Exit;\n  FWidth:=Value;\nend;\n\nfunction TBitmap.GetEmpty: Boolean;\nbegin\n  result := (Width = 0) or (Height = 0);\nend;\n\nfunction TBitmap.GetTransparent: Boolean;\nbegin\n  result := FTransparent;\nend;\n\nprocedure TBitmap.SetTransparent(Value: Boolean);\nbegin\n  if Value = FTransparent then exit;\n  FTransparent:= Value;\nend;\n\nprocedure TBitmap.SetTransparentColor(AValue: TColor);\nbegin\n  if FTransparentColor = AValue then exit;\n  FTransparentColor := AValue;\n\n  if AValue = clDefault\n  then FTransparentMode := tmAuto\n  else FTransparentMode := tmFixed;\nend;\n\nprocedure TBitmap.SetTransparentMode(AValue: TTransparentMode);\nbegin\n  if AValue = TransparentMode then exit;\n  FTransparentMode := AValue;\n\n  if AValue = tmAuto\n  then TransparentColor := clDefault\nend;\n\nfunction TBitmap.GetMimeType: string;\nbegin\n  Result:= 'image/bmp';\nend;\n\nprocedure TBitmap.LoadFromStream(Stream: TStream);\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBitmap.SaveToStream(Stream: TStream);\nbegin\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBitmap.SetHeight(Value: Integer);\nbegin\n  if FHeight=Value then Exit;\n  FHeight:=Value;\nend;\n\nfunction TBitmap.GetRawImage: TRawImage;\nbegin\n  FRawImage.BGRASetSizeAndTransparency(FWidth, FHeight, FTransparent);\n  result := FRawImage;\nend;\n\nprocedure TBitmap.Draw(ACanvas: TCanvas; const Rect: TRect);\nbegin\n  if FInDraw then exit;\n  FInDraw := true;\n  ACanvas.StretchDraw(Rect, self);\n  FInDraw := false;\nend;\n\nfunction TBitmap.GetHeight: Integer;\nbegin\n  result := FHeight;\nend;\n\nfunction TBitmap.GetWidth: Integer;\nbegin\n  result := FWidth;\nend;\n\nfunction TBitmap.GetCanvas: TCanvas;\nbegin\n  result := nil;\n  raise exception.Create('Canvas not available');\nend;\n\nfunction TBitmap.GetMasked: boolean;\nbegin\n  result := false;\nend;\n\nconstructor TBitmap.Create;\nbegin\n  FRawImage := TRawImage.Create;\n  FTransparent:= false;\nend;\n\ndestructor TBitmap.Destroy;\nbegin\n  FRawImage.Free;\n  inherited Destroy;\nend;\n\nprocedure TBitmap.Assign(Source: TPersistent);\nvar\n  src: TBitmap;\nbegin\n  if Source is TBitmap then\n  begin\n    src := TBitmap(Source);\n    RawImage.Assign(src.RawImage);\n  end else\n    inherited Assign(Source);\nend;\n\n{$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_FPCANVAS}\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$i bgrafpcanvas.inc}\n{$ENDIF}\n\n{$ENDIF}\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgragrayscalemask.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Supplies a linear grayscale bitmap (8-bit per pixel) without transparency.)\n\n  Pixels are in TByteMask format, based on linear grayscale colorspace (TByteMaskColorspace).\n\n  A grayscale mask can be used to compute a shape, regardless of the colors. This is\n  useful for example for text rendering and for layer masking.\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit BGRAGrayscaleMask;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRAGraphics, SysUtils, BGRABitmapTypes, BGRAResample, {%H-}UniversalDrawer;\n\ntype\n  { @abstract(8-bit grayscale image.)\n\n**Example on applying a grayscale mask:**\n\nA red triangle is masked using an ellipse shape.\n@image(../doc/img/mask_poly.png)\n```pascal\nuses BGRABitmap, BGRABitmapTypes, BGRAGrayscaleMask;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar tmp, layer: TBGRABitmap;\n    mask: TGrayscaleMask;\n    poly : ArrayOfTPointF;\nbegin\n  layer := TBGRABitmap.Create(clientwidth, clientheight, BGRAPixelTransparent);\n  setLength(Poly,3);\n  poly[0] := PointF(10, 10);\n  Poly[1] := PointF(layer.width-10, 10);\n  Poly[2] := PointF(10, layer.height-10);\n  layer.DrawPolygonAntialias(poly, cssBlack, 3, cssRed);\n\n  mask := TGrayscaleMask.Create(clientwidth, clientheight, TByteMask.New(0));\n  mask.FillEllipseAntialias(mask.Width/2-0.5, mask.Height/2-0.5,\n                            mask.Width/2, mask.Height/2, TByteMask.New(255));\n  layer.ApplyMask(mask);\n  mask.Free;\n\n  tmp := TBGRABitmap.create (clientwidth, clientheight, cssWhite);\n  tmp.PutImage(0,0, layer, dmDrawWithTransparency);\n  tmp.Draw (canvas,0,0);\n  tmp.free;\nend;\n```}\n  TGrayscaleMask = class(specialize TGenericUniversalBitmap<TByteMask,TByteMaskColorspace>)\n  private\n     function GetScanLine(Y: Integer): PByte; inline;\n  protected\n     function InternalNew: TCustomUniversalBitmap; override;\n     procedure AssignTransparentPixel(out ADest); override;\n     function InternalGetPixelCycle256(ix,iy: int32or64; iFactX,iFactY: int32or64): TByteMask;\n     function InternalGetPixel256(ix,iy: int32or64; iFactX,iFactY: int32or64; smoothBorder: boolean): TByteMask;\n     procedure Init; override;\n  public\n     ScanInterpolationFilter: TResampleFilter;\n\n     constructor Create(AWidth,AHeight: Integer; AValue: byte); overload;\n     constructor Create(ABitmap: TBGRACustomBitmap; AChannel: TChannel); overload;\n     constructor CreateDownSample(ABitmap: TBGRACustomBitmap; AWidth,AHeight: integer);\n     constructor CreateDownSample(ABitmap: TGrayscaleMask; AWidth,AHeight: integer);\n     constructor CreateDownSample(ABitmap: TBGRACustomBitmap; AWidth,AHeight: integer; ASourceRect: TRect);\n     constructor CreateDownSample(ABitmap: TGrayscaleMask; AWidth,AHeight: integer; ASourceRect: TRect);\n     procedure CopyFrom(ABitmap: TGrayscaleMask); overload;\n     procedure CopyFrom(ABitmap: TBGRACustomBitmap; AChannel: TChannel); overload;\n     procedure CopyPropertiesTo(ABitmap: TCustomUniversalBitmap); override;\n     function GetImageBounds: TRect; overload; override;\n     function GetImageBoundsWithin(const ARect: TRect; Channel: TChannel = cAlpha; ANothingValue: Byte = 0): TRect; overload; override;\n     function GetImageBoundsWithin(const ARect: TRect; Channels: TChannels; ANothingValue: Byte = 0): TRect; overload; override;\n\n     class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TByteMask; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n     class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                  AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n     class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                               AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n     class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n     class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n\n     procedure Draw(ABitmap: TBGRACustomBitmap; X,Y: Integer; AGammaCorrection: boolean = false);\n     procedure DrawAsAlpha(ABitmap: TBGRACustomBitmap; X,Y: Integer; const c: TBGRAPixel); overload;\n     procedure DrawAsAlpha(ABitmap: TBGRACustomBitmap; X,Y: Integer; texture: IBGRAScanner); overload;\n     function GetPixel(X,Y: integer): byte; overload;\n     procedure SetPixel(X,Y: integer; AValue: byte);\n     property ScanLine[Y: Integer]: PByte read GetScanLine;\n     property Data: PByte read FDataByte;\n\n     function GetPixel(x, y: single; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TByteMask; overload;\n     function GetPixel256(x, y, fracX256,fracY256: int32or64; AResampleFilter: TResampleFilter = rfLinear; smoothBorder: boolean = true): TByteMask;\n\n     procedure ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer); override;\n     function ScanAtIntegerMask(X,Y: integer): TByteMask; override;\n     function ScanAtMask(X,Y: Single): TByteMask; override;\n     function ScanAtInteger(X, Y: integer): TBGRAPixel; override;\n     function ScanAt(X, Y: Single): TBGRAPixel; override;\n\n     {inplace filters}\n     procedure Negative;\n     procedure NegativeRect(ABounds: TRect);\n     procedure InplaceNormalize; overload;\n     procedure InplaceNormalize(ABounds: TRect); overload;\n\n     //return type helpers\n     function NewBitmap: TGrayscaleMask; overload; override;\n     function NewBitmap(AWidth, AHeight: integer): TGrayscaleMask; overload; override;\n     function NewBitmap(AWidth, AHeight: integer; const Color: TByteMask): TGrayscaleMask; overload; override;\n     function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TGrayscaleMask; overload; override;\n     function NewReference: TGrayscaleMask; override;\n     function GetUnique: TGrayscaleMask; override;\n     function Duplicate(DuplicateProperties: Boolean = False): TGrayscaleMask; overload; override;\n     function GetPart(const ARect: TRect; CopyProperties: Boolean=False): TGrayscaleMask; override;\n     function CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor, ABackgroundColor: TByteMask;\n                 AWidth: integer = 8; AHeight: integer = 8; APenWidth: single = 1): TGrayscaleMask; override;\n     function RotateCW(ACopyProperties: Boolean=False): TGrayscaleMask; override;\n     function RotateCCW(ACopyProperties: Boolean=False): TGrayscaleMask; override;\n     function RotateUD(ACopyProperties: Boolean=False): TGrayscaleMask; override;\n     function FilterContour(ABorderValue: byte = 0): TGrayscaleMask;\n     {$IFNDEF BGRABITMAP_CORE}\n     function FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterBlurRadial(const ABounds: TRect; radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterBlurRadial(radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterBlurMotion(distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterBlurMotion(const ABounds: TRect; distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterCustomBlur(const ABounds: TRect; mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TGrayscaleMask; overload; override;\n     function FilterSphere: TGrayscaleMask;\n     function FilterCylinder: TGrayscaleMask;\n     {$ENDIF}\n  end;\n\nprocedure DownSamplePutImageGrayscale(sourceData: PByte; sourcePixelSize: Int32or64; sourceRowDelta: Int32or64; sourceWidth, sourceHeight: Int32or64; dest: TGrayscaleMask; ADestRect: TRect); overload;\nprocedure DownSamplePutImageGrayscale(source: TBGRACustomBitmap; dest: TGrayscaleMask; ADestRect: TRect); overload;\nprocedure DownSamplePutImageGrayscale(source: TGrayscaleMask; dest: TGrayscaleMask; ADestRect: TRect); overload;\nprocedure DownSamplePutImageGrayscale(source: TBGRACustomBitmap; dest: TGrayscaleMask; ADestRect: TRect; ASourceRect: TRect); overload;\nprocedure DownSamplePutImageGrayscale(source: TGrayscaleMask; dest: TGrayscaleMask; ADestRect: TRect; ASourceRect: TRect); overload;\n\nprocedure BGRAFillClearTypeGrayscaleMask(dest: TBGRACustomBitmap; x,\n  y: integer; xThird: integer; mask: TGrayscaleMask; color: TBGRAPixel;\n  texture: IBGRAScanner; RGBOrder: boolean);\n\nconst\n  ByteMaskBlack : TByteMask = (gray:0);\n  ByteMaskWhite : TByteMask = (gray:255);\n\noperator = (const c1, c2: TByteMask): boolean; inline;\n\nimplementation\n\nuses BGRABlend, BGRATransform;\n\noperator = (const c1, c2: TByteMask): boolean;\nbegin\n  result := c1.gray = c2.gray;\nend;\n\nprocedure BGRAFillClearTypeGrayscaleMask(dest: TBGRACustomBitmap; x,\n  y: integer; xThird: integer; mask: TGrayscaleMask; color: TBGRAPixel;\n  texture: IBGRAScanner; RGBOrder: boolean);\nvar delta: Int32or64;\nbegin\n  delta := mask.Width;\n  BGRABlend.BGRAFillClearTypeMaskPtr(dest,x,y,xThird,mask.ScanLineByte[0],1,delta,mask.Width,mask.Height,color,texture,RGBOrder);\nend;\n\nprocedure ByteMaskSolidBrushSkipPixels({%H-}AFixedData: Pointer;\n    AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PByteMask(AContextData^.Dest), ACount);\nend;\n\nprocedure ByteMaskChunkSetPixels(\n    ASource: PByteMask; ADest: PByteMask;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    if ASourceStride = 1 then\n    begin\n      move(ASource^, ADest^, ACount);\n      inc(ASource, ACount);\n    end else\n      while ACount > 0 do\n      begin\n        ADest^ := ASource^;\n        inc(ADest);\n        dec(ACount);\n        inc(PByte(ASource), ASourceStride);\n      end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      ADest^.gray := (ADest^.gray*UInt32or64(65536-alphaOver) + ASource^.gray*alphaOver + 32768) shr 16;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure ByteMaskChunkXorPixels(\n    ASource: PByteMask; ADest: PByteMask;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  temp: Byte;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    if ASourceStride = 1 then\n    begin\n      move(ASource^, ADest^, ACount);\n      inc(ASource, ACount);\n    end else\n      while ACount > 0 do\n      begin\n        ADest^.gray := ADest^.gray xor ASource^.gray;\n        inc(ADest);\n        dec(ACount);\n        inc(PByte(ASource), ASourceStride);\n      end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      temp := ADest^.gray xor ASource^.gray;\n      ADest^.gray := (ADest^.gray*UInt32or64(65536-alphaOver) + temp*alphaOver + 32768) shr 16;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure ByteMaskSolidBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PByteMask;\nbegin\n  pDest := PByteMask(AContextData^.Dest);\n  ByteMaskChunkSetPixels( PByteMask(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure ByteMaskSolidBrushXorPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PByteMask;\nbegin\n  pDest := PByteMask(AContextData^.Dest);\n  ByteMaskChunkXorPixels( PByteMask(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\ntype\n  PByteMaskScannerBrushFixedData = ^TByteMaskScannerBrushFixedData;\n  TByteMaskScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    Conversion: TBridgedConversion;\n  end;\n\nprocedure ByteMaskScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure ByteMaskScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PByteMask;\n  qty, pixSize: Integer;\n  buf: packed array[0..31] of TByteMask;\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PByteMask(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PByteMask(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TByteMask), nil);\n      ByteMaskChunkSetPixels(@buf, pDest, AAlpha, qty, sizeof(TByteMask) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ByteMaskScannerConvertBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PByteMask;\n  qty, pixSize: Integer;\n  buf: packed array[0..31] of TByteMask;\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PByteMask(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PByteMask(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TByteMask), nil);\n      ByteMaskChunkXorPixels(@buf, pDest, AAlpha, qty, sizeof(TByteMask) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ByteMaskScannerChunkBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PByteMask;\n  qty: Integer;\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PByteMask(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PByteMask(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ByteMaskChunkSetPixels(PByteMask(psrc), pDest, AAlpha, qty, sizeof(TByteMask) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ByteMaskScannerChunkBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PByteMask;\n  qty: Integer;\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PByteMask(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PByteMask(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ByteMaskChunkXorPixels(PByteMask(psrc), pDest, AAlpha, qty, sizeof(TByteMask) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ByteMaskMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PByteMask;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\n  factor: UInt32or64;\nbegin\n  with PByteMaskScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PByteMask(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PByteMask(AContextData^.Dest);\n    if AAlpha = 65535 then\n    begin\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.gray := ApplyOpacity(pDest^.gray, pMask^.gray);\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end else\n    begin\n      factor := AAlpha + (AAlpha shr 8) + (AAlpha shr 14);\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.gray := (pDest^.gray*((factor*pMask^.gray+128) shr 8)) shr 16;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end;\n    PByteMask(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure ByteMaskBrushErasePixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PByteMask;\n  alphaMul,eraseMul: UInt32or64;\nbegin\n  pDest := PByteMask(AContextData^.Dest);\n  if AAlpha>=32768 then alphaMul := AAlpha+1 else alphaMul := AAlpha;\n  eraseMul := PWord(AFixedData)^;\n  if eraseMul>=32768 then inc(eraseMul);\n  eraseMul := 65536 - (eraseMul*alphaMul shr 16);\n  while ACount > 0 do\n  begin\n    pDest^.gray:= pDest^.gray*eraseMul shr 16;\n    dec(ACount);\n    inc(pDest);\n  end;\n  AContextData^.Dest := pDest;\nend;\n\n{ TGrayscaleMask }\n\nfunction TGrayscaleMask.InternalNew: TCustomUniversalBitmap;\nbegin\n  Result:= TGrayscaleMask.Create;\nend;\n\nprocedure TGrayscaleMask.AssignTransparentPixel(out ADest);\nbegin\n  TByteMask(ADest).gray := 0;\nend;\n\nfunction TGrayscaleMask.InternalGetPixelCycle256(ix, iy: int32or64; iFactX,\n  iFactY: int32or64): TByteMask;\nvar\n  ixMod2: int32or64;\n  pUpLeft, pUpRight, pDownLeft, pDownRight: PByteMask;\n  scan: PByteMask;\nbegin\n  scan := GetScanlineFast(iy);\n\n  pUpLeft := (scan + ix);\n  ixMod2 := ix+1;\n  if ixMod2=Width then ixMod2 := 0;\n  pUpRight := (scan + ixMod2);\n\n  Inc(iy);\n  if iy = Height then iy := 0;\n  scan := GetScanlineFast(iy);\n  pDownLeft := (scan + ix);\n  pDownRight := (scan + ixMod2);\n\n  InterpolateBilinearMask(pUpLeft, pUpRight, pDownLeft,\n          pDownRight, iFactX, iFactY, @result);\nend;\n\nfunction TGrayscaleMask.InternalGetPixel256(ix, iy: int32or64; iFactX,\n  iFactY: int32or64; smoothBorder: boolean): TByteMask;\nvar\n  pUpLeft, pUpRight, pDownLeft, pDownRight: PByteMask;\n  scan: PByteMask;\nbegin\n  if (iy >= 0) and (iy < FHeight) then\n  begin\n    scan := GetScanlineFast(iy);\n\n    if (ix >= 0) and (ix < FWidth) then\n      pUpLeft := scan+ix\n    else if smoothBorder then\n      pUpLeft := @ByteMaskBlack\n    else\n      pUpLeft := nil;\n\n    if (ix+1 >= 0) and (ix+1 < FWidth) then\n      pUpRight := scan+(ix+1)\n    else if smoothBorder then\n      pUpRight := @ByteMaskBlack\n    else\n      pUpRight := nil;\n  end else\n  if smoothBorder then\n  begin\n    pUpLeft := @ByteMaskBlack;\n    pUpRight := @ByteMaskBlack;\n  end else\n  begin\n    pUpLeft := nil;\n    pUpRight := nil;\n  end;\n\n  if (iy+1 >= 0) and (iy+1 < FHeight) then\n  begin\n    scan := GetScanlineFast(iy+1);\n\n    if (ix >= 0) and (ix < FWidth) then\n      pDownLeft := scan+ix\n    else if smoothBorder then\n      pDownLeft := @ByteMaskBlack\n    else\n      pDownLeft := nil;\n\n    if (ix+1 >= 0) and (ix+1 < FWidth) then\n      pDownRight := scan+(ix+1)\n    else if smoothBorder then\n      pDownRight := @ByteMaskBlack\n    else\n      pDownRight := nil;\n  end else\n  if smoothBorder then\n  begin\n    pDownLeft := @ByteMaskBlack;\n    pDownRight := @ByteMaskBlack;\n  end else\n  begin\n    pDownLeft := nil;\n    pDownRight := nil;\n  end;\n\n  InterpolateBilinearMask(pUpLeft, pUpRight, pDownLeft,\n          pDownRight, iFactX, iFactY, @result);\nend;\n\nprocedure TGrayscaleMask.Init;\nbegin\n  inherited Init;\n  ScanInterpolationFilter := rfLinear;\nend;\n\nfunction TGrayscaleMask.GetScanLine(Y: Integer): PByte;\nbegin\n  result := PByte(GetScanLineByte(y));\nend;\n\nprocedure TGrayscaleMask.CopyFrom(ABitmap: TBGRACustomBitmap; AChannel: TChannel);\nvar psrc: PByte;\n  pdest: PByte;\n  x,y: integer;\n  ofs: Int32or64;\nbegin\n  SetSize(ABitmap.Width, ABitmap.Height);\n  if NbPixels > 0 then\n  begin\n    pdest := DataByte;\n    ofs := TBGRAPixel_ChannelByteOffset[AChannel];\n    for y := 0 to FHeight-1 do\n    begin\n      psrc := PByte(ABitmap.ScanLine[y])+ofs;\n      for x := FWidth-1 downto 0 do\n      begin\n        pdest^ := psrc^;\n        inc(pdest);\n        inc(psrc,sizeof(TBGRAPixel));\n      end;\n    end;\n  end;\nend;\n\nprocedure TGrayscaleMask.CopyPropertiesTo(ABitmap: TCustomUniversalBitmap);\nbegin\n  inherited CopyPropertiesTo(ABitmap);\n  if ABitmap is TGrayscaleMask then\n  begin\n    TGrayscaleMask(ABitmap).ScanInterpolationFilter:= self.ScanInterpolationFilter;\n  end;\nend;\n\nfunction TGrayscaleMask.GetImageBounds: TRect;\nbegin\n  Result:= GetImageBounds(cGreen);\nend;\n\nfunction TGrayscaleMask.GetImageBoundsWithin(const ARect: TRect;\n  Channel: TChannel; ANothingValue: Byte): TRect;\nvar\n  minx, miny, maxx, maxy: integer;\n  xb, xb2, yb: integer;\n  p: PByte;\n  actualRect: TRect;\nbegin\n  if Channel = cAlpha then raise exception.Create('Channel not found');\n  actualRect := TRect.Intersect(ARect,rect(0,0,self.Width,self.Height));\n  maxx := actualRect.Left-1;\n  maxy := actualRect.Top-1;\n  minx := actualRect.Right;\n  miny := actualRect.Bottom;\n  for yb := actualRect.Top to actualRect.Bottom-1 do\n  begin\n    p := GetPixelAddress(actualRect.Left,yb);\n    for xb := actualRect.Left to actualRect.Right - 1 do\n    begin\n      if p^<>ANothingValue then\n      begin\n        if xb < minx then minx := xb;\n        if yb < miny then miny := yb;\n        if xb > maxx then maxx := xb;\n        if yb > maxy then maxy := yb;\n\n        inc(p, actualRect.Right-1-xb);\n        for xb2 := actualRect.Right-1 downto xb+1 do\n        begin\n          if p^ <> ANothingValue then\n          begin\n            if xb2 > maxx then maxx := xb2;\n            break;\n          end;\n          dec(p);\n        end;\n        break;\n      end;\n      Inc(p);\n    end;\n  end;\n  if minx > maxx then\n  begin\n    Result.left   := 0;\n    Result.top    := 0;\n    Result.right  := 0;\n    Result.bottom := 0;\n  end\n  else\n  begin\n    Result.left   := minx;\n    Result.top    := miny;\n    Result.right  := maxx + 1;\n    Result.bottom := maxy + 1;\n  end;\nend;\n\nfunction TGrayscaleMask.GetImageBoundsWithin(const ARect: TRect;\n  Channels: TChannels; ANothingValue: Byte): TRect;\nbegin\n  if cAlpha in Channels then raise exception.Create('Channel not found')\n  else if Channels = [] then result := EmptyRect\n  else result := GetImageBoundsWithin(ARect, cGreen, ANothingValue);\nend;\n\nclass procedure TGrayscaleMask.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TByteMask; ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace := TByteMaskColorspace;\n  PByteMask(@ABrush.FixedData)^ := AColor;\n  if ADrawMode <> dmXor then\n    ABrush.InternalPutNextPixels:= @ByteMaskSolidBrushSetPixels\n  else\n    ABrush.InternalPutNextPixels:= @ByteMaskSolidBrushXorPixels;\nend;\n\nclass procedure TGrayscaleMask.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode; AOffsetX: integer;\n  AOffsetY: integer);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TByteMaskColorspace;\n  with PByteMaskScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @ByteMaskScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if sourceSpace = TByteMaskColorspace then\n  begin\n    if ADrawMode <> dmXor then\n      ABrush.InternalPutNextPixels:= @ByteMaskScannerChunkBrushSetPixels\n    else\n      ABrush.InternalPutNextPixels:= @ByteMaskScannerChunkBrushXorPixels;\n  end else\n  begin\n    with PByteMaskScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TByteMaskColorspace);\n    if ADrawMode <> dmXor then\n      ABrush.InternalPutNextPixels:= @ByteMaskScannerConvertBrushSetPixels\n    else\n      ABrush.InternalPutNextPixels:= @ByteMaskScannerConvertBrushXorPixels;\n  end;\nend;\n\nclass procedure TGrayscaleMask.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TByteMaskColorspace;\n  with PByteMaskScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @ByteMaskScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @ByteMaskMaskBrushApply;\nend;\n\nclass procedure TGrayscaleMask.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  ABrush.Colorspace := TByteMaskColorspace;\n  PWord(@ABrush.FixedData)^ := AAlpha;\n  ABrush.InternalPutNextPixels:= @ByteMaskBrushErasePixels;\nend;\n\nclass procedure TGrayscaleMask.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  ABrush.Colorspace := TByteMaskColorspace;\n  PWord(@ABrush.FixedData)^ := not AAlpha;\n  ABrush.InternalPutNextPixels:= @ByteMaskBrushErasePixels;\nend;\n\nconstructor TGrayscaleMask.Create(AWidth, AHeight: Integer; AValue: byte);\nbegin\n  inherited Create(AWidth, AHeight, TByteMask.New(AValue));\nend;\n\nconstructor TGrayscaleMask.Create(ABitmap: TBGRACustomBitmap; AChannel: TChannel);\nbegin\n  inherited Create(0,0);\n  CopyFrom(ABitmap, AChannel);\nend;\n\nconstructor TGrayscaleMask.CreateDownSample(ABitmap: TBGRACustomBitmap; AWidth,\n  AHeight: integer);\nbegin\n  CreateDownSample(ABitmap, AWidth, AHeight, rect(0,0,ABitmap.Width,ABitmap.Height));\nend;\n\nconstructor TGrayscaleMask.CreateDownSample(ABitmap: TGrayscaleMask; AWidth,\n  AHeight: integer);\nbegin\n  CreateDownSample(ABitmap, AWidth, AHeight, rect(0,0,ABitmap.Width,ABitmap.Height));\nend;\n\nconstructor TGrayscaleMask.CreateDownSample(ABitmap: TBGRACustomBitmap; AWidth,\n  AHeight: integer; ASourceRect: TRect);\nbegin\n  inherited Create(0,0);\n  if (AWidth = ABitmap.Width) and (AHeight = ABitmap.Height) then\n    CopyFrom(ABitmap,cGreen)\n  else\n  begin\n    if (ABitmap.Width < AWidth) or (ABitmap.Height < AHeight) then\n      raise exception.Create('Original size smaller');\n    SetSize(AWidth,AHeight);\n    if NbPixels > 0 then\n      DownSamplePutImageGrayscale(ABitmap, self, rect(0,0,FWidth,FHeight), ASourceRect);\n  end;\nend;\n\nconstructor TGrayscaleMask.CreateDownSample(ABitmap: TGrayscaleMask; AWidth,\n  AHeight: integer; ASourceRect: TRect);\nbegin\n  inherited Create(0,0);\n  if (AWidth = ABitmap.Width) and (AHeight = ABitmap.Height) then\n    CopyFrom(ABitmap)\n  else\n  begin\n    if (ABitmap.Width < AWidth) or (ABitmap.Height < AHeight) then\n      raise exception.Create('Original size smaller');\n    SetSize(AWidth,AHeight);\n    if NbPixels > 0 then\n      DownSamplePutImageGrayscale(ABitmap, self, rect(0,0,FWidth,FHeight), ASourceRect);\n  end;\nend;\n\nprocedure TGrayscaleMask.CopyFrom(ABitmap: TGrayscaleMask);\nbegin\n  SetSize(ABitmap.Width, ABitmap.Height);\n  if NbPixels > 0 then\n    move(ABitmap.Data^, Data^, NbPixels);\nend;\n\nprocedure TGrayscaleMask.Draw(ABitmap: TBGRACustomBitmap; X, Y: Integer; AGammaCorrection: boolean = false);\nvar\n  yb, minxb, minyb, maxxb, maxyb, ignoreleft, copycount,\n  i, delta_source, delta_dest: integer;\n  pdest: PBGRAPixel;\n  psource: PByte;\n  value: byte;\nbegin\n  if not CheckPutImageBounds(x,y,FWidth,Fheight,minxb,minyb,maxxb,maxyb,ignoreleft,ABitmap.ClipRect) then exit;\n  copycount := maxxb - minxb + 1;\n\n  psource := ScanLineByte[minyb - y] + ignoreleft;\n  delta_source := FWidth;\n\n  pdest := ABitmap.Scanline[minyb] + minxb;\n  if ABitmap.LineOrder = riloBottomToTop then\n    delta_dest := -ABitmap.Width\n  else\n    delta_dest := ABitmap.Width;\n\n  Dec(delta_source, copycount);\n  Dec(delta_dest, copycount);\n  for yb := minyb to maxyb do\n  begin\n    if AGammaCorrection then\n    begin\n      for i := copycount -1 downto 0 do\n      begin\n        value := GammaCompressionTab[psource^ + (psource^ shl 8)];\n        pdest^ := BGRA(value,value,value,255);\n        inc(psource);\n        inc(pdest);\n      end;\n    end else\n    begin\n      for i := copycount -1 downto 0 do\n      begin\n        value := psource^;\n        pdest^ := BGRA(value,value,value,255);\n        inc(psource);\n        inc(pdest);\n      end;\n    end;\n    Inc(psource, delta_source);\n    Inc(pdest, delta_dest);\n  end;\n  ABitmap.InvalidateBitmap;\nend;\n\nprocedure TGrayscaleMask.DrawAsAlpha(ABitmap: TBGRACustomBitmap; X, Y: Integer; const c: TBGRAPixel);\nbegin\n  ABitmap.FillMask(x,y, self, c, dmDrawWithTransparency);\nend;\n\nprocedure TGrayscaleMask.DrawAsAlpha(ABitmap: TBGRACustomBitmap; X, Y: Integer; texture: IBGRAScanner);\nbegin\n  ABitmap.FillMask(x,y, self, texture, dmDrawWithTransparency);\nend;\n\nfunction TGrayscaleMask.GetPixel(X, Y: integer): byte;\nbegin\n  if (x < 0) or (x >= FWidth) then\n    raise ERangeError.Create('GetPixel: out of bounds');\n  result := (ScanLineByte[Y]+X)^;\nend;\n\nprocedure TGrayscaleMask.SetPixel(X, Y: integer; AValue: byte);\nbegin\n  if (x < 0) or (x >= FWidth) then\n    raise ERangeError.Create('SetPixel: out of bounds');\n  (ScanLineByte[Y]+X)^ := AValue;\nend;\n\nfunction TGrayscaleMask.GetPixel(x, y: single;\n  AResampleFilter: TResampleFilter; smoothBorder: boolean): TByteMask;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  ix := round(x*256);\n  if (ix<= -256) or (ix>=Width shl 8) then\n  begin\n    result := ByteMaskBlack;\n    exit;\n  end;\n  iy := round(y*256);\n  if (iy<= -256) or (iy>=Height shl 8) then\n  begin\n    result := ByteMaskBlack;\n    exit;\n  end;\n\n  iFactX := ix and 255; //distance from integer coordinate\n  iFactY := iy and 255;\n  if ix<0 then ix := -1 else ix := ix shr 8;\n  if iy<0 then iy := -1 else iy := iy shr 8;\n\n  //if the coordinate is integer, then call standard GetPixel function\n  if (iFactX = 0) and (iFactY = 0) then\n  begin\n    Result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n\n  result := InternalGetPixel256(ix,iy, FineInterpolation256(iFactX, AResampleFilter),\n              FineInterpolation256(iFactY, AResampleFilter), smoothBorder);\nend;\n\nfunction TGrayscaleMask.GetPixel256(x, y, fracX256, fracY256: int32or64;\n  AResampleFilter: TResampleFilter; smoothBorder: boolean): TByteMask;\nbegin\n  if (fracX256 = 0) and (fracY256 = 0) then\n    result := GetPixel(x,y)\n  else if AResampleFilter = rfBox then\n  begin\n    if fracX256 >= 128 then inc(x);\n    if fracY256 >= 128 then inc(y);\n    result := GetPixel(x,y);\n  end else\n    result := InternalGetPixel256(x,y, FineInterpolation256(fracX256,AResampleFilter),\n                FineInterpolation256(fracY256,AResampleFilter), smoothBorder);\nend;\n\nprocedure TGrayscaleMask.ScanNextMaskChunk(var ACount: integer; out\n  AMask: PByteMask; out AStride: integer);\nvar\n  pPixels: Pointer;\nbegin\n  ScanNextCustomChunk(ACount, pPixels);\n  AMask := PByteMask(pPixels);\n  AStride := sizeof(TByteMask);\nend;\n\nfunction TGrayscaleMask.ScanAtIntegerMask(X, Y: integer): TByteMask;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n    result := PByteMask(GetPixelAddress(PositiveMod(X+ScanOffset.X, FScanWidth),\n                             PositiveMod(Y+ScanOffset.Y, FScanHeight)))^\n  else\n    result := ByteMaskBlack;\nend;\n\nfunction TGrayscaleMask.ScanAtMask(X, Y: Single): TByteMask;\nvar\n  ix, iy: Int32or64;\n  iFactX,iFactY: Int32or64;\nbegin\n  if (FScanWidth = 0) or (FScanHeight = 0) then\n  begin\n    result := ByteMaskBlack;\n    exit;\n  end;\n  LoadFromBitmapIfNeeded;\n  ix := round(x*256);\n  iy := round(y*256);\n  if ScanInterpolationFilter = rfBox then\n  begin\n    ix := PositiveMod((ix+128)+(ScanOffset.X shl 8), FScanWidth shl 8) shr 8;\n    iy := PositiveMod((iy+128)+(ScanOffset.Y shl 8), FScanHeight shl 8) shr 8;\n    result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n  iFactX := ix and 255;\n  iFactY := iy and 255;\n  ix := PositiveMod(ix+(ScanOffset.X shl 8), FScanWidth shl 8) shr 8;\n  iy := PositiveMod(iy+(ScanOffset.Y shl 8), FScanHeight shl 8) shr 8;\n  if (iFactX = 0) and (iFactY = 0) then\n  begin\n    result := (GetScanlineFast(iy)+ix)^;\n    exit;\n  end;\n  if ScanInterpolationFilter <> rfLinear then\n  begin\n    iFactX := FineInterpolation256( iFactX, ScanInterpolationFilter );\n    iFactY := FineInterpolation256( iFactY, ScanInterpolationFilter );\n  end;\n  result := InternalGetPixelCycle256(ix,iy, iFactX,iFactY);\nend;\n\nfunction TGrayscaleMask.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  Result:= MaskToBGRA(ScanAtIntegerMask(X, Y));\nend;\n\nfunction TGrayscaleMask.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  Result:= MaskToBGRA(ScanAtMask(X, Y));\nend;\n\nprocedure TGrayscaleMask.Negative;\nbegin\n  NegativeRect(rect(0, 0, Width, Height));\nend;\n\nprocedure TGrayscaleMask.NegativeRect(ABounds: TRect);\nvar\n  yb, w, xb: LongInt;\n  p: PByte;\nbegin\n  ABounds.Intersect(ClipRect);\n  w := ABounds.Width;\n  for yb := ABounds.Top to ABounds.Bottom-1 do\n  begin\n    p := GetPixelAddress(ABounds.Left, yb);\n    for xb := w-1 downto 0 do\n    begin\n      p^ := not p^;\n      inc(p);\n    end;\n  end;\nend;\n\nprocedure TGrayscaleMask.InplaceNormalize;\nbegin\n  InplaceNormalize(rect(0, 0, Width, Height));\nend;\n\nprocedure TGrayscaleMask.InplaceNormalize(ABounds: TRect);\nvar\n  yb, w, xb: LongInt;\n  p: PByte;\n  minVal, maxVal, spread: byte;\nbegin\n  ABounds.Intersect(ClipRect);\n  if ABounds.IsEmpty then exit;\n  minVal := 255;\n  maxVal := 0;\n  w := ABounds.Width;\n  for yb := ABounds.Top to ABounds.Bottom-1 do\n  begin\n    p := GetPixelAddress(ABounds.Left, yb);\n    for xb := w-1 downto 0 do\n    begin\n      if p^ < minVal then minVal := p^;\n      if p^ > maxVal then maxVal := p^;\n      inc(p);\n    end;\n  end;\n  if (minVal > 0) or (maxVal < 255) then\n  begin\n    if minVal = maxVal then\n    begin\n      if (minVal > 0) and (minVal < 255) then\n        FillRect(ABounds, TByteMask.New(255));\n    end else\n    begin\n      spread := maxVal - minVal;\n      for yb := ABounds.Top to ABounds.Bottom-1 do\n      begin\n        p := GetPixelAddress(ABounds.Left, yb);\n        for xb := w-1 downto 0 do\n        begin\n          p^ := (p^ - minVal) * 255 div spread;\n          inc(p);\n        end;\n      end;\n    end;\n  end;\nend;\n\nfunction TGrayscaleMask.NewBitmap: TGrayscaleMask;\nbegin\n  Result:=inherited NewBitmap as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.NewBitmap(AWidth, AHeight: integer): TGrayscaleMask;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.NewBitmap(AWidth, AHeight: integer;\n  const Color: TByteMask): TGrayscaleMask;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, Color) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.NewBitmap(AWidth, AHeight: integer; AColor: Pointer\n  ): TGrayscaleMask;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, AColor) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.NewReference: TGrayscaleMask;\nbegin\n  Result:=inherited NewReference as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.GetUnique: TGrayscaleMask;\nbegin\n  Result:=inherited GetUnique as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.Duplicate(DuplicateProperties: Boolean): TGrayscaleMask;\nbegin\n  Result:=inherited Duplicate(DuplicateProperties) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.GetPart(const ARect: TRect; CopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited GetPart(ARect, CopyProperties) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.CreateBrushTexture(ABrushStyle: TBrushStyle;\n  APatternColor, ABackgroundColor: TByteMask; AWidth: integer;\n  AHeight: integer; APenWidth: single): TGrayscaleMask;\nbegin\n  Result:=inherited CreateBrushTexture(ABrushStyle, APatternColor,\n    ABackgroundColor, AWidth, AHeight, APenWidth) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.RotateCW(ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited RotateCW(ACopyProperties) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.RotateCCW(ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited RotateCCW(ACopyProperties) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.RotateUD(ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited RotateUD(ACopyProperties) as TGrayscaleMask;\nend;\n\nfunction TGrayscaleMask.FilterContour(ABorderValue: byte = 0): TGrayscaleMask;\nvar\n  pDest: PByte;\n\n  procedure ComputeDiff(x: integer; pPrevRow, pCurRow, pNextRow: PByte); inline;\n  var diff: Integer;\n  begin\n    diff := (abs((pCurRow+x+1)^ - (pCurRow+x-1)^) +\n            abs((pPrevRow+x-1)^ - (pNextRow+x+1)^) +\n            abs((pPrevRow+x)^ - (pNextRow+x)^) +\n            abs((pPrevRow+x+1)^ - (pNextRow+x-1)^)) div 3;\n    if diff > 255 then\n      (pDest+x)^ := 0\n      else (pDest+x)^ := not Byte(diff);\n  end;\n\n  procedure ComputeDiffLeft(x: integer; pPrevRow, pCurRow, pNextRow: PByte); inline;\n  var diff: Integer;\n  begin\n    diff := (abs((pCurRow+x+1)^ - ABorderValue) +\n            abs(ABorderValue - (pNextRow+x+1)^) +\n            abs((pPrevRow+x)^ - (pNextRow+x)^) +\n            abs((pPrevRow+x+1)^ - ABorderValue)) div 3;\n    if diff > 255 then\n      (pDest+x)^ := 0\n      else (pDest+x)^ := not Byte(diff);\n  end;\n\n  procedure ComputeDiffRight(x: integer; pPrevRow, pCurRow, pNextRow: PByte); inline;\n  var diff: Integer;\n  begin\n    diff := (abs(ABorderValue - (pCurRow+x-1)^) +\n            abs((pPrevRow+x-1)^ - ABorderValue) +\n            abs((pPrevRow+x)^ - (pNextRow+x)^) +\n            abs(ABorderValue - (pNextRow+x-1)^)) div 3;\n    if diff > 255 then\n      (pDest+x)^ := 0\n      else (pDest+x)^ := not Byte(diff);\n  end;\n\n  procedure ComputeDiffLeftRight(x: integer; pPrevRow, pCurRow, pNextRow: PByte); inline;\n  var diff: Integer;\n  begin\n    diff := abs((pPrevRow+x)^ - (pNextRow+x)^) div 3;\n    if diff > 255 then\n      (pDest+x)^ := 0\n      else (pDest+x)^ := not Byte(diff);\n  end;\n\nvar\n  pPrevRow, pCurRow, pNextRow, pBorder: PByte;\n  border: packed array of byte;\n  yb, xb: Integer;\n\nbegin\n  result := TGrayscaleMask.Create;\n  if NbPixels = 0 then exit;\n  result.SetSize(Width, Height);\n  setlength(border, Width);\n  for xb := 0 to Width-1 do\n    border[xb] := ABorderValue;\n  pBorder := @border[0];\n  pPrevRow := nil;\n  pCurRow := nil;\n  pNextRow := ScanLine[0];\n  for yb := 0 to Height-1 do\n  begin\n    pPrevRow := pCurRow;\n    pCurRow := pNextRow;\n    if yb < Height-1 then\n      pNextRow := ScanLine[yb+1]\n      else pNextRow := nil;\n    pDest := result.ScanLine[yb];\n\n    if pPrevRow = nil then\n    begin\n      if pNextRow = nil then\n      begin\n        if Width = 1 then\n          ComputeDiffLeftRight(0, pBorder, pCurRow, pBorder) else\n        begin\n          ComputeDiffLeft(0, pBorder, pCurRow, pBorder);\n          for xb := 1 to Width-2 do\n            ComputeDiff(xb, pBorder, pCurRow, pBorder);\n          ComputeDiffRight(Width-1, pBorder, pCurRow, pBorder);\n        end;\n      end else\n      begin\n        if Width = 1 then\n          ComputeDiffLeftRight(0, pBorder, pCurRow, pNextRow) else\n        begin\n          ComputeDiffLeft(0, pBorder, pCurRow, pNextRow);\n          for xb := 1 to Width-2 do\n            ComputeDiff(xb, pBorder, pCurRow, pNextRow);\n          ComputeDiffRight(Width-1, pBorder, pCurRow, pNextRow);\n        end;\n      end;\n    end else\n    if pNextRow = nil then\n    begin\n      if Width = 1 then\n        ComputeDiffLeftRight(0, pPrevRow, pCurRow, pBorder) else\n      begin\n        ComputeDiffLeft(0, pPrevRow, pCurRow, pBorder);\n        for xb := 1 to Width-2 do\n          ComputeDiff(xb, pPrevRow, pCurRow, pBorder);\n        ComputeDiffRight(Width-1, pPrevRow, pCurRow, pBorder);\n      end;\n    end else\n    begin\n      if Width = 1 then\n        ComputeDiffLeftRight(0, pPrevRow, pCurRow, pNextRow) else\n      begin\n        ComputeDiffLeft(0, pPrevRow, pCurRow, pNextRow);\n        for xb := 1 to Width-2 do\n          ComputeDiff(xb, pPrevRow, pCurRow, pNextRow);\n        ComputeDiffRight(Width-1, pPrevRow, pCurRow, pNextRow);\n      end;\n    end;\n  end;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurRadial(radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurRadial(radius, blurType, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurRadial(const ABounds: TRect; radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radius, blurType, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurRadial(radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurRadial(radiusX, radiusY, blurType, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurRadial(const ABounds: TRect; radiusX,\n  radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radiusX, radiusY, blurType, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurMotion(distance: single; angle: single;\n  oriented: boolean; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurMotion(distance, angle, oriented, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterBlurMotion(const ABounds: TRect;\n  distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterBlurMotion(ABounds, distance, angle, oriented, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterCustomBlur(mask, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterCustomBlur(const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TGrayscaleMask;\nbegin\n  Result:=inherited FilterCustomBlur(ABounds, mask, ACopyProperties) as TGrayscaleMask;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterSphere: TGrayscaleMask;\nvar\n  cx, cy: single;\n  scanner: TBGRASphereDeformationScanner;\nbegin\n  Result := NewBitmap(Width, Height);\n  cx     := Width / 2 - 0.5;\n  cy     := Height / 2 - 0.5;\n  scanner := TBGRASphereDeformationScanner.Create(self, PointF(cx,cy), Width/2, Height/2);\n  result.FillEllipseAntialias(cx, cy, Width/2-0.5, Height/2-0.5, scanner);\n  scanner.Free;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TGrayscaleMask.FilterCylinder: TGrayscaleMask;\nvar\n  cx: single;\n  scanner: TBGRAVerticalCylinderDeformationScanner;\nbegin\n  Result := NewBitmap(Width, Height);\n  cx     := Width / 2 - 0.5;\n  scanner := TBGRAVerticalCylinderDeformationScanner.Create(self, cx, Width/2);\n  result.Fill(scanner, dmSet);\n  scanner.Free;\nend;{$ENDIF}\n\nprocedure DownSamplePutImageGrayscale(sourceData: PByte;\n  sourcePixelSize: Int32or64; sourceRowDelta: Int32or64; sourceWidth,\n  sourceHeight: Int32or64; dest: TGrayscaleMask; ADestRect: TRect);\nvar\n  x_dest,y_dest: integer;\n  pdest: PByte;\n  nbPix,sum: UInt32or64;\n  prev_x_src,x_src,x_src_nb,xb: Int32or64;\n  x_src_inc,x_src_acc,x_src_div,x_src_rest: Int32or64;\n  prev_y_src,y_src,y_src_nb,yb: Int32or64;\n  y_src_inc,y_src_acc,y_src_div,y_src_rest: Int32or64;\n  psrc,psrc2,psrc3: PByte;\nbegin\n  y_src_div := ADestRect.Bottom-ADestRect.Top;\n  y_src_inc := sourceHeight div y_src_div;\n  y_src_rest := sourceHeight mod y_src_div;\n  x_src_div := ADestRect.Right-ADestRect.Left;\n  x_src_inc := sourceWidth div x_src_div;\n  x_src_rest := sourceWidth mod x_src_div;\n\n  if (x_src_rest = 0) and (y_src_rest = 0) then\n  begin\n    x_src_nb := x_src_inc;\n    y_src_nb := y_src_inc;\n    nbPix := x_src_nb*y_src_nb;\n    y_src := 0;\n    for y_dest := ADestRect.Top to ADestRect.Bottom-1 do\n    begin\n      pdest := dest.GetPixelAddress(ADestRect.Left, y_dest);\n      psrc := sourceData + y_src*sourceRowDelta;\n      inc(y_src,y_src_inc);\n\n      for x_dest := ADestRect.Right-ADestRect.Left-1 downto 0 do\n      begin\n        sum := 0;\n        psrc2 := psrc;\n        for xb := x_src_nb-1 downto 0 do\n        begin\n          psrc3 := psrc2;\n          for yb := y_src_nb-1 downto 0 do\n          begin\n            inc(sum, psrc3^);\n            inc(psrc3, sourceRowDelta);\n          end;\n          inc(psrc2, sourcePixelSize);\n        end;\n        pdest^ := sum div nbPix;\n\n        psrc := psrc2;\n        inc(pdest);\n      end;\n    end;\n  end else\n  begin\n    y_src := 0;\n    y_src_acc := 0;\n    for y_dest := ADestRect.Top to ADestRect.Bottom-1 do\n    begin\n      pdest := dest.GetPixelAddress(ADestRect.Left, y_dest);\n      psrc := sourceData + y_src*sourceRowDelta;\n\n      prev_y_src := y_src;\n      inc(y_src,y_src_inc);\n      inc(y_src_acc,y_src_rest);\n      if y_src_acc >= y_src_div then\n      begin\n        dec(y_src_acc,y_src_div);\n        inc(y_src);\n      end;\n      y_src_nb := y_src-prev_y_src;\n\n      x_src := 0;\n      x_src_acc := 0;\n      for x_dest := ADestRect.Right-ADestRect.Left-1 downto 0 do\n      begin\n        prev_x_src := x_src;\n        inc(x_src,x_src_inc);\n        inc(x_src_acc,x_src_rest);\n        if x_src_acc >= x_src_div then\n        begin\n          dec(x_src_acc,x_src_div);\n          inc(x_src);\n        end;\n        x_src_nb := x_src-prev_x_src;\n\n        sum := 0;\n        nbPix := 0;\n        psrc2 := psrc;\n        for xb := x_src_nb-1 downto 0 do\n        begin\n          psrc3 := psrc2;\n          for yb := y_src_nb-1 downto 0 do\n          begin\n            inc(nbPix);\n            inc(sum, psrc3^);\n            inc(psrc3, sourceRowDelta);\n          end;\n          inc(psrc2, sourcePixelSize);\n        end;\n        pdest^ := sum div nbPix;\n\n        psrc := psrc2;\n        inc(pdest);\n      end;\n    end;\n  end;\nend;\n\nprocedure DownSamplePutImageGrayscale(source: TBGRACustomBitmap;\n  dest: TGrayscaleMask; ADestRect: TRect);\nbegin\n  DownSamplePutImageGrayscale(source, dest, ADestRect, rect(0,0,source.Width,source.Height));\nend;\n\nprocedure DownSamplePutImageGrayscale(source: TGrayscaleMask; dest: TGrayscaleMask; ADestRect: TRect); overload;\nbegin\n  DownSamplePutImageGrayscale(source, dest, ADestRect, rect(0,0,source.Width,source.Height));\nend;\n\nprocedure DownSamplePutImageGrayscale(source: TBGRACustomBitmap;\n  dest: TGrayscaleMask; ADestRect: TRect; ASourceRect: TRect);\nvar delta: Int32or64;\nbegin\n  delta := source.Width*sizeof(TBGRAPixel);\n  if source.LineOrder = riloBottomToTop then\n    delta := -delta;\n  DownSamplePutImageGrayscale(\n       source.GetPixelAddress(ASourceRect.Left, ASourceRect.Top) + TBGRAPixel_GreenByteOffset,\n       sizeof(TBGRAPixel), delta, ASourceRect.Width, ASourceRect.Height, dest, ADestRect);\nend;\n\nprocedure DownSamplePutImageGrayscale(source: TGrayscaleMask;\n  dest: TGrayscaleMask; ADestRect: TRect; ASourceRect: TRect);\nvar delta: Int32or64;\nbegin\n  delta := source.Width;\n  if source.LineOrder = riloBottomToTop then\n    delta := -delta;\n  DownSamplePutImageGrayscale(source.GetPixelAddress(ASourceRect.Left, ASourceRect.Top), 1,\n    delta, ASourceRect.Width, ASourceRect.Height, dest, ADestRect);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgragtkbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for Gtk }\nunit BGRAGtkBitmap;\n{ This unit should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALCLBitmap, Graphics,\n  GraphType;\n\ntype\n  { Implementation of TBGRABitmap for Gtk }\n  TBGRAGtkBitmap = class(TBGRALCLBitmap)\n  private\n    FPixBuf: Pointer;\n    procedure DrawTransparent(ACanvas: TCanvas; ARect: TRect);\n    procedure DrawOpaque(ACanvas: TCanvas; ARect: TRect);\n  protected\n    procedure ReallocData; override;\n    procedure FreeData; override;\n  public\n    procedure DataDrawTransparent(ACanvas: TCanvas; ARect: TRect;\n      AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\n      override;\n    procedure DataDrawTransparent(ACanvas: TCanvas; ARect: TRect; ADataFirstRow: Pointer;\n      ARowStride: integer; AWidth, AHeight: integer); overload;\n    procedure DrawPart(ARect: TRect; ACanvas: TCanvas; x, y: integer; Opaque: boolean); override;\n    procedure Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean = True); override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean = True); override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); overload; override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; ADataFirstRow: Pointer;\n      ARowStride: integer; AWidth, AHeight: integer); overload;\n    procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); override;\n  end;\n\nimplementation\n\nuses math, BGRABitmapTypes, BGRADefaultBitmap, BGRAFilterScanner, LCLType,\n  LCLIntf, IntfGraphics,\n  {$IFDEF LCLgtk3}\n  LazGdk3, Gtk3Objects, LazGdkPixbuf2, LazGObject2, LazGLib2, Lazcairo1,\n  {$ENDIF}\n  {$IFDEF LCLgtk2}\n  gdk2, gtk2def, gdk2pixbuf, glib2,\n  {$ENDIF}\n  {$IFDEF LCLgtk}\n  gdk, gtkdef, gtkProc, gdkpixbuf, glib,\n  {$ENDIF}\n  FPImage, Dialogs;\n\nprocedure TBGRAGtkBitmap.ReallocData;\nbegin\n  {$IFNDEF LCLgtk}\n  If FPixBuf <> nil then g_object_unref(FPixBuf);\n  {$ELSE}\n  If FPixBuf <> nil then gdk_pixbuf_unref(FPixBuf);\n  {$ENDIF}\n  FPixBuf := nil;  \n  inherited ReallocData;\n  if (FWidth <> 0) and (FHeight <> 0) then\n  begin  \n    FPixbuf := gdk_pixbuf_new_from_data(pguchar(FDataByte),\n      GDK_COLORSPACE_RGB, True, 8, Width, Height, Width*Sizeof(TBGRAPixel), nil, nil);\n    if FPixbuf = nil then\n      raise Exception.Create('Error initializing Pixbuf');\n  end;\nend;\n\nprocedure TBGRAGtkBitmap.FreeData;\nbegin\n  {$IFNDEF LCLgtk}\n  If FPixBuf <> nil then g_object_unref(FPixBuf);\n  {$ELSE}\n  If FPixBuf <> nil then gdk_pixbuf_unref(FPixBuf);\n  {$ENDIF}\n  FPixBuf := nil;\n  inherited FreeData;\nend;\n\nprocedure TBGRAGtkBitmap.DrawTransparent(ACanvas: TCanvas; ARect: TRect);\nvar DrawWidth,DrawHeight: integer;\n    stretched: TBGRAGtkBitmap;\n    P: TPoint;\n    {$IFDEF LCLgtk3}\n    cr: Pcairo_t;\n    {$ENDIF}\nbegin\n  DrawWidth := abs(ARect.Right-ARect.Left);\n  DrawHeight := abs(ARect.Bottom-ARect.Top);\n  if (Height = 0) or (Width = 0) or (DrawWidth = 0) or (DrawHeight = 0)\n     or (ACanvas.Handle = 0) then\n    exit;\n\n  {$IFNDEF LCLgtk3}\n  if (DrawWidth <> Width) or (DrawHeight <> Height) then\n  begin\n    stretched := Resample(DrawWidth,DrawHeight,rmSimpleStretch) as TBGRAGtkBitmap;\n    try\n      stretched.DrawTransparent(ACanvas,ARect);\n    finally\n      stretched.Free;\n    end;\n    exit;\n  end;\n  {$ENDIF}\n\n  LoadFromBitmapIfNeeded;\n\n  {$PUSH}{$WARNINGS OFF}If not TBGRAPixel_RGBAOrder then SwapRedBlue;{$POP}\n\n  {$IFDEF LCLgtk3}\n  P := ARect.TopLeft;\n  LPToDP(ACanvas.Handle, P, 1);\n  cr := TGtk3DeviceContext(ACanvas.Handle).pcr;\n  cairo_save(cr);\n  cairo_translate(cr, P.X, P.Y);\n  cairo_scale(cr,\n    (ARect.Right - ARect.Left) / Width,\n    (ARect.Bottom - ARect.Top) / Height);\n  gdk_cairo_set_source_pixbuf(cr, FPixBuf, 0, 0);\n  cairo_paint(cr);\n  cairo_restore(cr);\n  {$ELSE}\n  P := Point(min(ARect.Left,ARect.Right), min(ARect.Top,ARect.Bottom));\n  LPToDP(ACanvas.Handle, P, 1);\n  gdk_pixbuf_render_to_drawable(FPixBuf,\n    TGtkDeviceContext(ACanvas.Handle).Drawable,\n    TGtkDeviceContext(ACanvas.Handle).GC,\n    0,0, P.X,P.Y,\n    Width,Height,\n    //GDK_PIXBUF_ALPHA_FULL, 1,\n    GDK_RGB_DITHER_NORMAL,0,0);\n  {$ENDIF}\n\n  {$PUSH}{$WARNINGS OFF}If not TBGRAPixel_RGBAOrder then SwapRedBlue;{$POP}\nend;\n\nprocedure TBGRAGtkBitmap.DrawOpaque(ACanvas: TCanvas; ARect: TRect);\nbegin\n  DataDrawOpaque(ACanvas,ARect,Data,LineOrder,Width,Height);\nend;\n\nprocedure TBGRAGtkBitmap.DataDrawTransparent(ACanvas: TCanvas; ARect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  rowStride: Integer;\n  firstRow: Pointer;\nbegin\n  if ALineOrder = riloTopToBottom then\n  begin\n    rowStride := AWidth*sizeof(TBGRAPixel);\n    firstRow := AData;\n  end\n  else\n  begin\n    rowStride := -AWidth*sizeof(TBGRAPixel);\n    firstRow := PBGRAPixel(AData) + (AWidth*(AHeight-1));\n  end;\n\n  DataDrawTransparent(ACanvas, ARect, firstRow, rowStride, AWidth, AHeight);\nend;\n\nprocedure TBGRAGtkBitmap.DataDrawTransparent(ACanvas: TCanvas; ARect: TRect;\n  ADataFirstRow: Pointer; ARowStride: integer; AWidth, AHeight: integer);\n\n  {$IFDEF LCLgtk3}\n  procedure DrawGtk3;\n\n    function IsDataOpaque: boolean;\n    var\n      curRow: PByte;\n      y, x: Integer;\n      p: PBGRAPixel;\n    begin\n      curRow := PByte(ADataFirstRow);\n      for y := AHeight-1 downto 0 do\n      begin\n        p := PBGRAPixel(curRow);\n        for x := AWidth-1 downto 0 do\n        begin\n          if p^.alpha <> 255 then exit(false);\n          inc(p);\n        end;\n        curRow += ARowStride;\n      end;\n      exit(true);\n    end;\n\n    function PremultiplyByAlpha: Pointer;\n    var\n      curRow: PByte;\n      y, x: Integer;\n      p, pDest: PBGRAPixel;\n      alpha256: Byte;\n    begin\n      getmem(result, AWidth*AHeight*sizeof(TBGRAPixel));\n      pDest := PBGRAPixel(result);\n\n      curRow := PByte(ADataFirstRow);\n      for y := AHeight-1 downto 0 do\n      begin\n        p := PBGRAPixel(curRow);\n        for x := AWidth-1 downto 0 do\n        begin\n          alpha256 := p^.alpha + byte(p^.alpha >= 128);\n          pDest^.red := (p^.red * alpha256 + 128) shr 8;\n          pDest^.green := (p^.green * alpha256 + 128) shr 8;\n          pDest^.blue := (p^.blue * alpha256 + 128) shr 8;\n          pDest^.alpha := p^.alpha;\n          inc(p);\n        end;\n        curRow += ARowStride;\n      end;\n    end;\n\n  var\n    temp: integer;\n    dataStart, premultipliedData: Pointer;\n    cr: Pcairo_t;\n    surface: Pcairo_surface_t;\n  begin\n    if IsDataOpaque then\n    begin\n      // avoid premultiplication by alpha if possible\n      DataDrawOpaque(ACanvas, ARect, ADataFirstRow, ARowStride, AWidth, AHeight);\n      exit;\n    end;\n\n    LPtoDP(ACanvas.Handle, ARect, 2);\n\n    if ARowStride < 0 then\n    begin\n      dataStart := PByte(ADataFirstRow) + ARowStride * (AHeight - 1);\n      temp := ARect.Top;\n      ARect.Top := ARect.Bottom;\n      ARect.Bottom := temp;\n    end else\n      dataStart := ADataFirstRow;\n\n    premultipliedData := PremultiplyByAlpha;\n\n    surface := cairo_image_surface_create_for_data(PByte(premultipliedData),\n      CAIRO_FORMAT_ARGB32, AWidth, AHeight, Abs(ARowStride));\n    if cairo_surface_status(surface) <> CAIRO_STATUS_SUCCESS then\n    begin\n      freemem(premultipliedData);\n      raise Exception.Create('Error creating Cairo surface from pixel data');\n    end;\n\n    cr := TGtk3DeviceContext(ACanvas.Handle).pcr;\n    cairo_save(cr);\n    cairo_translate(cr, ARect.Left, ARect.Top);\n    cairo_scale(cr,\n      (ARect.Right - ARect.Left) / AWidth,\n      (ARect.Bottom - ARect.Top) / AHeight);\n    cairo_set_source_surface(cr, surface, 0, 0);\n    cairo_paint(cr);\n    cairo_restore(cr);\n\n    cairo_surface_destroy(surface);\n    freemem(premultipliedData);\n    ACanvas.Changed;\n  end;\n  {$ELSE}\n  procedure DrawGtk2;\n\n    procedure DataSwapRedBlue;\n    var\n      y: Integer;\n      p: PByte;\n    begin\n      p := PByte(ADataFirstRow);\n      for y := 0 to AHeight-1 do\n      begin\n        TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(PBGRAPixel(p),PBGRAPixel(p),AWidth,False);\n        inc(p, ARowStride);\n      end;\n    end;\n\n    procedure DrawStretchedSoftware;\n    var\n      dataStart: Pointer;\n      ptr: TBGRAPtrBitmap;\n      stretched: TBGRACustomBitmap;\n    begin\n      if ARowStride < 0 then\n        dataStart := PByte(ADataFirstRow) + ARowStride*(Height-1)\n      else\n        dataStart := ADataFirstRow;\n\n      if ARowStride <> abs(AWidth*sizeof(TBGRAPixel)) then\n        raise exception.Create('DataDrawTransparent not supported when using custom row stride and resample');\n\n      ptr := TBGRAPtrBitmap.Create(AWidth,AHeight,dataStart);\n      if ARowStride < 0 then\n        ptr.LineOrder := riloBottomToTop\n      else\n        ptr.LineOrder := riloTopToBottom;\n      stretched := ptr.Resample(ARect.Right-ARect.Left,ARect.Bottom-ARect.Top, rmSimpleStretch);\n      ptr.free;\n      try\n        DataDrawTransparent(ACanvas,ARect,stretched.Data,stretched.LineOrder,stretched.Width,stretched.Height);\n      finally\n        stretched.Free;\n      end;\n    end;\n\n  var\n    temp: integer;\n    tempPixbuf: PGdkPixbuf;\n  begin\n    {$PUSH}{$WARNINGS OFF}if not TBGRAPixel_RGBAOrder then DataSwapRedBlue;{$POP}\n\n    if ARect.Right < ARect.Left then\n    begin\n      temp := ARect.Left;\n      ARect.Left := ARect.Right;\n      ARect.Right := temp;\n    end;\n\n    if ARect.Bottom < ARect.Top then\n    begin\n      temp := ARect.Top;\n      ARect.Top := ARect.Bottom;\n      ARect.Bottom := temp;\n    end;\n\n    if (AWidth <> ARect.Right-ARect.Left) or (AHeight <> ARect.Bottom-ARect.Top) then\n      DrawStretchedSoftware\n    else\n    begin\n      LPtoDP(ACanvas.Handle, ARect, 2);\n      tempPixbuf := gdk_pixbuf_new_from_data(pguchar(ADataFirstRow),\n        GDK_COLORSPACE_RGB, True, 8, AWidth, AHeight, AWidth*Sizeof(TBGRAPixel), nil, nil);\n      if tempPixbuf = nil then\n        raise Exception.Create('Error initializing Pixbuf');\n\n      gdk_pixbuf_render_to_drawable(tempPixbuf,\n        TGtkDeviceContext(ACanvas.Handle).Drawable,\n        TGtkDeviceContext(ACanvas.Handle).GC,\n        0,0, ARect.Left,ARect.Top,\n        AWidth,AHeight,\n        //GDK_PIXBUF_ALPHA_FULL, 1,\n        GDK_RGB_DITHER_NORMAL,0,0);\n\n      {$IFNDEF LCLgtk}\n      If tempPixbuf <> nil then g_object_unref(tempPixbuf);\n      {$ELSE}\n      If tempPixbuf <> nil then gdk_pixbuf_unref(tempPixbuf);\n      {$ENDIF}\n      ACanvas.Changed;\n    end;\n    {$PUSH}{$WARNINGS OFF}if not TBGRAPixel_RGBAOrder then DataSwapRedBlue;{$POP}\n  end;\n  {$ENDIF}\n\nbegin\n  if (AHeight = 0) or (AWidth = 0) or (ARect.Left = ARect.Right) or\n    (ARect.Top = ARect.Bottom) or (ACanvas.Handle = 0) then exit;\n\n  {$IFDEF LCLgtk3}\n  DrawGtk3;\n  {$ELSE}\n  DrawGtk2;\n  {$ENDIF}\nend;\n\nprocedure TBGRAGtkBitmap.DrawPart(ARect: TRect; ACanvas: TCanvas; x,\n  y: integer; Opaque: boolean);\nvar\n  rowStride,w,h: Integer;\nbegin\n  if Opaque then\n  begin\n    if LineOrder = riloTopToBottom then\n      rowStride := Width*sizeof(TBGRAPixel)\n    else\n      rowStride := -Width*sizeof(TBGRAPixel);\n    w:= ARect.Right-ARect.Left;\n    h:= ARect.Bottom-ARect.Top;\n    DataDrawOpaque(ACanvas, rect(x,y,x+w,y+h), Scanline[ARect.Top]+ARect.Left, rowStride, w,h);\n  end\n  else\n    inherited DrawPart(ARect, ACanvas, x, y, Opaque);\nend;\n\nprocedure TBGRAGtkBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  if self = nil then\n    exit;\n  if Opaque then\n    DrawOpaque(ACanvas, Rect(X, Y, X + Width, Y + Height))\n  else\n    DrawTransparent(ACanvas, Rect(X, Y, X + Width, Y + Height));\nend;\n\nprocedure TBGRAGtkBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nbegin\n  if self = nil then\n    exit;\n  if Opaque then\n    DrawOpaque(ACanvas, Rect)\n  else\n    DrawTransparent(ACanvas, Rect);\nend;\n\nprocedure TBGRAGtkBitmap.DataDrawOpaque(ACanvas: TCanvas; ARect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  rowStride: Integer;\n  firstRow: Pointer;\nbegin\n  if ALineOrder = riloTopToBottom then\n  begin\n    rowStride := AWidth*sizeof(TBGRAPixel);\n    firstRow := AData;\n  end\n  else\n  begin\n    rowStride := -AWidth*sizeof(TBGRAPixel);\n    firstRow := PBGRAPixel(AData) + (AWidth*(AHeight-1));\n  end;\n\n  DataDrawOpaque(ACanvas, ARect, firstRow, rowStride, AWidth, AHeight);\nend;\n\nprocedure TBGRAGtkBitmap.DataDrawOpaque(ACanvas: TCanvas; ARect: TRect;\n  ADataFirstRow: Pointer; ARowStride: integer; AWidth, AHeight: integer);\n\n  {$IFDEF LCLgtk3}\n  procedure DrawGtk3;\n  var\n    temp: integer;\n    dataStart: Pointer;\n    cr: Pcairo_t;\n    surface: Pcairo_surface_t;\n  begin\n    LPtoDP(ACanvas.Handle, ARect, 2);\n\n    if ARowStride < 0 then\n    begin\n      dataStart := PByte(ADataFirstRow) + ARowStride * (AHeight - 1);\n      temp := ARect.Top;\n      ARect.Top := ARect.Bottom;\n      ARect.Bottom := temp;\n    end else\n      dataStart := ADataFirstRow;\n\n    surface := cairo_image_surface_create_for_data(PByte(dataStart),\n      CAIRO_FORMAT_RGB24, AWidth, AHeight, Abs(ARowStride));\n    if cairo_surface_status(surface) <> CAIRO_STATUS_SUCCESS then\n      raise Exception.Create('Error creating Cairo surface from pixel data');\n\n    cr := TGtk3DeviceContext(ACanvas.Handle).pcr;\n    cairo_save(cr);\n    cairo_translate(cr, ARect.Left, ARect.Top);\n    cairo_scale(cr,\n      (ARect.Right - ARect.Left) / AWidth,\n      (ARect.Bottom - ARect.Top) / AHeight);\n    cairo_set_source_surface(cr, surface, 0, 0);\n    cairo_paint(cr);\n    cairo_restore(cr);\n\n    cairo_surface_destroy(surface);\n    ACanvas.Changed;\n  end;\n  {$ELSE}\n  procedure DrawGtk2;\n\n    procedure DataSwapRedBlue;\n    var\n      y: Integer;\n      p: PByte;\n    begin\n      p := PByte(ADataFirstRow);\n      for y := 0 to AHeight-1 do\n      begin\n        TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(PBGRAPixel(p),PBGRAPixel(p),AWidth,False);\n        inc(p, ARowStride);\n      end;\n    end;\n\n    procedure DrawStretchedSoftware;\n    var\n      dataStart: Pointer;\n      ptr: TBGRAPtrBitmap;\n      stretched: TBGRACustomBitmap;\n    begin\n      if ARowStride < 0 then\n        dataStart := PByte(ADataFirstRow) + ARowStride*(Height-1)\n      else\n        dataStart := ADataFirstRow;\n\n      if ARowStride <> abs(AWidth*sizeof(TBGRAPixel)) then\n        raise exception.Create('DataDrawOpaque not supported when using custom row stride and resample');\n\n      ptr := TBGRAPtrBitmap.Create(AWidth,AHeight,dataStart);\n      if ARowStride < 0 then\n        ptr.LineOrder := riloBottomToTop\n      else\n        ptr.LineOrder := riloTopToBottom;\n      stretched := ptr.Resample(ARect.Right-ARect.Left,ARect.Bottom-ARect.Top, rmSimpleStretch);\n      ptr.free;\n      DataDrawOpaque(ACanvas,ARect,stretched.Data,stretched.LineOrder,stretched.Width,stretched.Height);\n      stretched.Free;\n    end;\n\n  var\n    temp: integer;\n  begin\n    {$PUSH}{$WARNINGS OFF}if not TBGRAPixel_RGBAOrder then DataSwapRedBlue;{$POP}\n\n    if ARect.Right < ARect.Left then\n    begin\n      temp := ARect.Left;\n      ARect.Left := ARect.Right;\n      ARect.Right := temp;\n    end;\n\n    if ARect.Bottom < ARect.Top then\n    begin\n      temp := ARect.Top;\n      ARect.Top := ARect.Bottom;\n      ARect.Bottom := temp;\n    end;\n\n    if (AWidth <> ARect.Right-ARect.Left) or (AHeight <> ARect.Bottom-ARect.Top) then\n      DrawStretchedSoftware\n    else\n    begin\n      LPtoDP(ACanvas.Handle, ARect, 2);\n      gdk_draw_rgb_32_image(TGtkDeviceContext(ACanvas.Handle).Drawable,\n        TGtkDeviceContext(ACanvas.Handle).GC, ARect.Left, ARect.Top,\n        AWidth,AHeight, GDK_RGB_DITHER_NORMAL,\n        ADataFirstRow, ARowStride);\n      ACanvas.Changed;\n    end;\n    {$PUSH}{$WARNINGS OFF}if not TBGRAPixel_RGBAOrder then DataSwapRedBlue;{$POP}\n  end;\n  {$ENDIF}\n\nbegin\n  if (AHeight = 0) or (AWidth = 0) or (ARect.Left = ARect.Right) or\n    (ARect.Top = ARect.Bottom) or (ACanvas.Handle = 0) then exit;\n\n  {$IFDEF LCLgtk3}\n  DrawGtk3;\n  {$ELSE}\n  DrawGtk2;\n  {$ENDIF}\nend;\n\nprocedure TBGRAGtkBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer);\nvar\n  subBmp: TBGRACustomBitmap;\n  subRect: TRect;\n  cw,ch: integer;\n  P: TPoint;\nbegin\n  cw := CanvasSource.Width;\n  ch := CanvasSource.Height;\n  if (x < 0) or (y < 0) or (x+Width > cw) or\n    (y+Height > ch) then\n  begin\n    FillTransparent;\n    if (x+Width <= 0) or (y+Height <= 0) or\n      (x >= cw) or (y >= ch) then\n      exit;\n\n    if (x > 0) then subRect.Left := x else subRect.Left := 0;\n    if (y > 0) then subRect.Top := y else subRect.Top := 0;\n    if (x+Width > cw) then subRect.Right := cw else\n      subRect.Right := x+Width;\n    if (y+Height > ch) then subRect.Bottom := ch else\n      subRect.Bottom := y+Height;\n\n    subBmp := NewBitmap(subRect.Right-subRect.Left,subRect.Bottom-subRect.Top);\n    subBmp.GetImageFromCanvas(CanvasSource,subRect.Left,subRect.Top);\n    PutImage(subRect.Left-x,subRect.Top-y,subBmp,dmSet);\n    subBmp.Free;\n    exit;\n  end;\n\n  P := Point(x,y);\n  LPToDP(CanvasSource.Handle, P, 1);\n  {$IFDEF LCLgtk3}\n  gdk_pixbuf_get_from_window(TGtk3DeviceContext(\n    CanvasSource.Handle).Window, p.X, p.Y, Width, Height);\n  {$ELSE}\n  gdk_pixbuf_get_from_drawable(FPixBuf,\n    TGtkDeviceContext(CanvasSource.Handle).Drawable,\n    nil, P.X,P.Y,0,0,Width,Height);\n  {$ENDIF}\n  {$PUSH}{$WARNINGS OFF}If not TBGRAPixel_RGBAOrder then SwapRedBlue;{$POP}\n  InvalidateBitmap;\nend;\n\n\nend.\n\n\n"
  },
  {
    "path": "bgrabitmap/bgraiconcursor.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Reading/writing of icon/cursor files (with multiple sizes))\n\n  ICO and CUR files contain multiple scaled versions of the same image.\n  This unit allows to edit them. }\nunit BGRAIconCursor;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAMultiFileType, BGRABitmapTypes;\n\ntype\n  { Image entry within an icon or cursor }\n  TBGRAIconCursorEntry = class(TMultiFileEntry)\n  protected\n    FWidth,FHeight,FBitDepth: integer;\n    FExtension: string;\n    FContent: TStream;\n    FHotSpot: TPoint;\n    function GetName: utf8string; override;\n    procedure SetName({%H-}AValue: utf8string); override;\n    function GetExtension: utf8string; override;\n    function GetFileSize: int64; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AExtension: string; AInfo: TQuickImageInfo; AContent: TStream);\n    class function TryCreate(AContainer: TMultiFileContainer; AContent: TStream): TBGRAIconCursorEntry; static;\n    destructor Destroy; override;\n    function CopyTo(ADestination: TStream): int64; override;\n    function GetStream: TStream; override;\n    function GetBitmap: TBGRACustomBitmap;\n    property Width: integer read FWidth;\n    property Height: integer read FHeight;\n    property BitDepth: integer read FBitDepth;\n    property HotSpot: TPoint read FHotSpot write FHotSpot;\n  end;\n\n  { An icon or cursor, with multiple images, one for each size and depth }\n  TBGRAIconCursor = class(TMultiFileContainer)\n  private\n    function GetBitDepthAt(AIndex: integer): integer;\n    function GetHeightAt(AIndex: integer): integer;\n    function GetHotSpotAtAt(AIndex: integer): TPoint;\n    function GetWidthAt(AIndex: integer): integer;\n    procedure SetFileType(AValue: TBGRAImageFormat);\n    procedure SetHotSpotAt(AIndex: integer; AValue: TPoint);\n  protected\n    FFileType : TBGRAImageFormat;\n    FLoading : boolean;\n    function CreateEntry(AName: utf8string; AExtension: utf8string;\n      AContent: TStream): TMultiFileEntry; override;\n    function ExpectedMagic: Word;\n    procedure Init; override;\n    procedure AssignTo(Dest: TPersistent); override;\n  public\n    constructor Create(AFileType: TBGRAImageFormat); overload;\n    procedure Assign(Source: TPersistent); override;\n    function Add(ABitmap: TBGRACustomBitmap; ABitDepth: integer; AOverwrite: boolean = false): integer; overload;\n    function Add(AContent: TStream; AOverwrite: boolean = false; AOwnStream: boolean = true): integer; overload;\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure SaveToStream(ADestination: TStream); override;\n    function GetBitmap(AIndex: integer): TBGRACustomBitmap;\n    function GetBestFitIndex(AWidth,AHeight: integer): integer;\n    function GetBestFitBitmap(AWidth,AHeight: integer): TBGRACustomBitmap;\n    function IndexOf(AWidth,AHeight,ABitDepth: integer): integer; overload;\n    property FileType: TBGRAImageFormat read FFileType write SetFileType;\n    property Width[AIndex: integer]: integer read GetWidthAt;\n    property Height[AIndex: integer]: integer read GetHeightAt;\n    property BitDepth[AIndex: integer]: integer read GetBitDepthAt;\n    property HotSpot[AIndex: integer]: TPoint read GetHotSpotAtAt write SetHotSpotAt;\n  end;\n\nfunction BGRADitherIconCursor(ABitmap: TBGRACustomBitmap; ABitDepth: integer; ADithering: TDitheringAlgorithm): TBGRACustomBitmap;\nfunction BGRABitDepthIconCursor(ABitmap: TBGRACustomBitmap): integer;\n\nimplementation\n\nuses BGRAWinResource, BGRAUTF8, BGRAReadPng, BGRAReadBMP, FPWriteBMP, BGRAPalette, BGRAWritePNG,\n  BGRAColorQuantization{$IFDEF BGRABITMAP_USE_LCL}, Graphics{$ENDIF};\n\nfunction BGRADitherIconCursor(ABitmap: TBGRACustomBitmap; ABitDepth: integer;\n  ADithering: TDitheringAlgorithm): TBGRACustomBitmap;\nvar\n  frameMask, temp: TBGRACustomBitmap;\n  quantizer: TBGRAColorQuantizer;\n  maskQuantizer: TBGRAColorQuantizer;\n\n  x,y: integer;\n  psrc,pdest: PBGRAPixel;\nbegin\n  if ABitDepth <= 0 then\n    raise exception.Create('Invalid bit depth');\n\n  if ABitDepth <= 24 then\n  begin\n    if ABitDepth = 1 then\n    begin\n      quantizer := TBGRAColorQuantizer.Create([BGRABlack,BGRAWhite,BGRAPixelTransparent],false,3);\n      result := quantizer.GetDitheredBitmap(ADithering, ABitmap);\n      quantizer.Free;\n    end\n    else\n    begin\n      frameMask := ABitmap.GetMaskFromAlpha;\n      maskQuantizer := TBGRAColorQuantizer.Create([BGRABlack,BGRAWhite],false,2);\n      temp := maskQuantizer.GetDitheredBitmap(ADithering, frameMask);\n      frameMask.Free;\n      frameMask := temp;\n      maskQuantizer.Free;\n\n      result := ABitmap.Duplicate;\n      result.ReplaceTransparent(BGRABlack);\n      result.AlphaFill(255);\n\n      if ABitDepth <= 8 then\n      begin\n        quantizer := TBGRAColorQuantizer.Create(result,acFullChannelInPalette, 1 shl ABitDepth);\n        temp := quantizer.GetDitheredBitmap(daFloydSteinberg, result);\n        result.free;\n        result := temp;\n        quantizer.Free;\n      end;\n\n      result.ApplyMask(frameMask);\n      frameMask.Free;\n    end;\n  end else\n    result := ABitmap.Duplicate;\n\n  if Assigned(ABitmap.XorMask) then\n  begin\n    result.NeedXorMask;\n    for y := 0 to ABitmap.XorMask.Height-1 do\n    begin\n      psrc := ABitmap.XorMask.ScanLine[y];\n      pdest := result.XorMask.ScanLine[y];\n      for x := 0 to ABitmap.XorMask.Width-1 do\n      begin\n        if ((psrc^.red shl 1)+(psrc^.green shl 2)+psrc^.blue >= 128*(1+2+4)) then\n          pdest^ := BGRA(255,255,255,0);\n        inc(psrc);\n        inc(pdest);\n      end;\n    end;\n  end;\nend;\n\nfunction BGRABitDepthIconCursor(ABitmap: TBGRACustomBitmap): integer;\nvar pal: TBGRAPalette;\n  p: PBGRAPixel;\n  n: integer;\n\n  function BlackAndWhite: boolean;\n  var\n    i: Integer;\n  begin\n    if pal.Count > 2 then result := false\n    else\n    begin\n      for i := 0 to pal.Count-1 do\n        if (pal.Color[i] <> BGRAWhite) and (pal.Color[i] <> BGRABlack) then\n          exit(false);\n      result := true;\n    end;\n  end;\n\nbegin\n  pal := TBGRAPalette.Create;\n  p := ABitmap.Data;\n  n := ABitmap.NbPixels;\n  while (n > 0) and (pal.Count < 257) do\n  begin\n    if p^.alpha = 0 then\n    begin\n      if pal.Count < 257 then pal.AddColor(BGRABlack);\n    end else\n    if p^.alpha = 255 then\n    begin\n      if pal.Count < 257 then pal.AddColor(p^);\n    end else\n    begin\n      pal.Free;\n      exit(32);\n    end;\n    inc(p);\n    dec(n);\n  end;\n  if pal.Count > 256 then result := 24 else\n  if pal.Count > 16 then result := 8 else\n  if (pal.Count > 2) or not BlackAndWhite then result := 4 else\n    result := 1;\n  pal.Free;\nend;\n\n{ TBGRAIconCursorEntry }\n\nconstructor TBGRAIconCursorEntry.Create(AContainer: TMultiFileContainer; AExtension: string; AInfo: TQuickImageInfo;\n  AContent: TStream);\nbegin\n  inherited Create(AContainer);\n  FExtension:= AExtension;\n  FWidth := AInfo.Width;\n  FHeight:= AInfo.Height;\n\n  // 16 bit per channel is not relevant for icon depth\n  if AInfo.ColorDepth >= 24 then\n  begin\n    if AInfo.AlphaDepth >= 8 then\n      FBitDepth := 32\n    else\n      FBitDepth := 24;\n  end else\n    FBitDepth := AInfo.ColorDepth;\n\n  FContent := AContent;\nend;\n\nclass function TBGRAIconCursorEntry.TryCreate(\n  AContainer: TMultiFileContainer; AContent: TStream): TBGRAIconCursorEntry;\nvar\n  format: TBGRAImageFormat;\n  imageInfo: TQuickImageInfo;\n  tempStream: TMemoryStream;\n  reader: TBGRAImageReader;\n  bmp: TBGRACustomBitmap;\n  maskLine: packed array of byte;\n  maskStride: integer;\n  psrc: PBGRAPixel;\n  maskBit: byte;\n  maskPos,x,y: integer;\n  headerSize, dataSize: integer;\nbegin\n  AContent.Position:= 0;\n  format := DetectFileFormat(AContent);\n  case format of\n  ifBmp:\n    begin\n      reader := TBGRAReaderBMP.Create;\n      bmp := BGRABitmapFactory.Create;\n      try\n        AContent.Position := 0;\n        imageInfo := reader.GetQuickInfo(AContent);\n        if (imageInfo.width <= 0) or (imageInfo.height <= 0) or\n           (imageInfo.width > 256) or (imageInfo.height > 256) then\n          raise exception.Create('Invalid image size');\n        AContent.Position := 0;\n        //load bitmap to build mask\n        bmp.LoadFromStream(AContent);\n        maskStride := ((bmp.Width+31) div 32)*4;\n\n        tempStream := TMemoryStream.Create;\n        //BMP header is not stored in icon/cursor\n        AContent.Position:= sizeof(TBitMapFileHeader);\n        tempStream.CopyFrom(AContent, AContent.Size - sizeof(TBitMapFileHeader));\n        AContent.Free;\n\n        //fix height\n        tempStream.Position := 0;\n        headerSize := LEtoN(tempStream.ReadDWord);\n        if headerSize = sizeof(TOS2BitmapHeader) then // OS/2 1.x\n        begin\n          tempStream.Position := 6;\n          tempStream.WriteWord(NtoLE(word(bmp.Height*2))); //include mask size\n        end else\n        begin\n          tempStream.Position := 8;\n          tempStream.WriteDWord(NtoLE(LongWord(bmp.Height*2))); //include mask size\n          if headerSize >= 20+4 then\n          begin\n            tempStream.Position:= 20;\n            dataSize := LEtoN(tempStream.ReadDWord);\n            if dataSize <> 0 then\n            begin //if data size is supplied, include mask size\n              inc(dataSize, maskStride*bmp.Height);\n              tempStream.Position:= 20;\n              tempStream.WriteDWord(NtoLE(dataSize));\n            end;\n          end;\n        end;\n\n        //build mask\n        tempStream.Position := tempStream.Size;\n        setlength(maskLine, maskStride);\n        for y := bmp.Height-1 downto 0 do\n        begin\n          maskBit := $80;\n          maskPos := 0;\n          psrc := bmp.ScanLine[y];\n          fillchar(maskLine[0], length(maskLine), 0);\n          for x := 0 to bmp.Width-1 do\n          begin\n            if psrc^.alpha = 0 then\n              maskLine[maskPos] := maskLine[maskPos] or maskBit;\n            maskBit := maskBit shr 1;\n            if maskBit = 0 then\n            begin\n              maskBit := $80;\n              inc(maskPos);\n            end;\n            inc(psrc);\n          end;\n          tempStream.WriteBuffer(maskLine[0], length(maskLine));\n        end;\n\n        result := TBGRAIconCursorEntry.Create(AContainer, 'dib', imageInfo, tempStream);\n      finally\n        bmp.Free;\n        reader.Free;\n      end;\n    end;\n  ifPng:\n    begin\n      reader := TBGRAReaderPNG.Create;\n      imageInfo := reader.GetQuickInfo(AContent);\n      reader.Free;\n      result := TBGRAIconCursorEntry.Create(AContainer, 'png', imageInfo, AContent);\n\n    end;\n  ifUnknown, ifLazPaint {a headerless bmp can be confused for a headerless lzp}:\n    begin\n      //assume headerless BMP\n      AContent.Position := 0;\n      reader := TBGRAReaderBMP.Create;\n      imageInfo := reader.GetQuickInfo(AContent);\n      imageInfo.Height:= imageInfo.Height div 2; //mask size is included\n      reader.Free;\n      if (imageInfo.width <= 0) or (imageInfo.height <= 0) or\n         (imageInfo.width > 256) or (imageInfo.height > 256) then\n        raise exception.Create('Invalid image size');\n      result := TBGRAIconCursorEntry.Create(AContainer, 'dib', imageInfo, AContent);\n    end;\n  else\n    raise exception.Create(SuggestImageExtension(format) + ' format is not handled');\n  end;\nend;\n\ndestructor TBGRAIconCursorEntry.Destroy;\nbegin\n  FContent.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRAIconCursorEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  if FContent.Size = 0 then\n  begin\n    result := 0;\n    exit;\n  end;\n\n  FContent.Position := 0;\n  result := ADestination.CopyFrom(FContent, FContent.Size);\nend;\n\nfunction TBGRAIconCursorEntry.GetStream: TStream;\nbegin\n  Result:= FContent;\nend;\n\nfunction TBGRAIconCursorEntry.GetBitmap: TBGRACustomBitmap;\nvar reader: TBGRAImageReader;\nbegin\n  if Extension = 'dib' then\n  begin\n    reader := TBGRAReaderBMP.Create;\n    TBGRAReaderBMP(reader).Subformat := bsfHeaderlessWithMask;\n  end else\n    reader := TBGRAReaderPNG.create;\n\n  result := BGRABitmapFactory.Create;\n  FContent.Position := 0;\n  try\n    result.LoadFromStream(FContent, reader);\n  except on ex: Exception do\n    begin\n      result.Free;\n      reader.Free;\n      raise ex;\n    end;\n  end;\n  reader.Free;\n\n  result.HotSpot := HotSpot;\nend;\n\nfunction TBGRAIconCursorEntry.GetName: utf8string;\nbegin\n  result := IntToStr(FWidth)+'x'+IntToStr(FHeight)+'x'+IntToStr(FBitDepth);\nend;\n\nprocedure TBGRAIconCursorEntry.SetName(AValue: utf8string);\nbegin\n  raise exception.Create('Name cannot be changed');\nend;\n\nfunction TBGRAIconCursorEntry.GetExtension: utf8string;\nbegin\n  result := FExtension;\nend;\n\nfunction TBGRAIconCursorEntry.GetFileSize: int64;\nbegin\n  result := FContent.Size;\nend;\n\n{ TBGRAIconCursor }\n\nfunction TBGRAIconCursor.GetBitDepthAt(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  result := TBGRAIconCursorEntry(Entry[AIndex]).BitDepth;\nend;\n\nfunction TBGRAIconCursor.GetHeightAt(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  result := TBGRAIconCursorEntry(Entry[AIndex]).Height;\nend;\n\nfunction TBGRAIconCursor.GetHotSpotAtAt(AIndex: integer): TPoint;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  result := TBGRAIconCursorEntry(Entry[AIndex]).HotSpot;\nend;\n\nfunction TBGRAIconCursor.GetWidthAt(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  result := TBGRAIconCursorEntry(Entry[AIndex]).Width;\nend;\n\nprocedure TBGRAIconCursor.SetFileType(AValue: TBGRAImageFormat);\nbegin\n  if FFileType=AValue then Exit;\n  if not (AValue in [ifIco,ifCur,ifUnknown]) then\n    raise exception.Create('Allowed formats: ICO, CUR or unknown');\n  FFileType:=AValue;\nend;\n\nprocedure TBGRAIconCursor.SetHotSpotAt(AIndex: integer; AValue: TPoint);\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  TBGRAIconCursorEntry(Entry[AIndex]).HotSpot := AValue;\nend;\n\nfunction TBGRAIconCursor.CreateEntry(AName: utf8string;\n  AExtension: utf8string; AContent: TStream): TMultiFileEntry;\nbegin\n  AExtension := UTF8LowerCase(AExtension);\n  if (AExtension <> 'png') and (AExtension <> 'dib') then\n    raise exception.Create('The only supported extensions are PNG and DIB');\n\n  result := TBGRAIconCursorEntry.TryCreate(self, AContent);\n  if result.Extension <> AExtension then\n  begin\n    result.Free;\n    raise exception.Create(AExtension + ' file extension expected but ' + result.Extension + ' found');\n  end;\n\n  if result.Name <> AName then\n  begin\n    result.Free;\n    raise exception.Create('\"' + AName + '\" dimension expected but \"' + result.Name + '\" found');\n  end;\nend;\n\nfunction TBGRAIconCursor.ExpectedMagic: Word;\nbegin\n  case FFileType of\n  ifIco: result := ICON_OR_CURSOR_FILE_ICON_TYPE;\n  ifCur: result := ICON_OR_CURSOR_FILE_CURSOR_TYPE;\n  else\n    raise exception.Create('Invalid icon/cursor type');\n  end;\nend;\n\nprocedure TBGRAIconCursor.Init;\nbegin\n  inherited Init;\n  FFileType:= ifUnknown;\nend;\n\nprocedure TBGRAIconCursor.AssignTo(Dest: TPersistent);\n{$IFDEF BGRABITMAP_USE_LCL}\nvar\n  temp: TMemoryStream;\n{$ENDIF}\nbegin\n  {$IFDEF BGRABITMAP_USE_LCL}\n  if Dest is TCustomIcon then\n  begin\n    temp := TMemoryStream.Create;\n    try\n      SaveToStream(temp);\n      temp.Position:= 0;\n      TCustomIcon(Dest).LoadFromStream(temp);\n    finally\n      temp.Free;\n    end;\n  end else\n  {$ENDIF}\n    inherited AssignTo(Dest);\nend;\n\nconstructor TBGRAIconCursor.Create(AFileType: TBGRAImageFormat);\nbegin\n  if not (AFileType in [ifIco,ifCur,ifUnknown]) then\n    raise exception.Create('Allowed formats: ICO, CUR or unknown');\n\n  Init;\n  FFileType := AFileType;\nend;\n\nfunction TBGRAIconCursor.Add(ABitmap: TBGRACustomBitmap; ABitDepth: integer;\n  AOverwrite: boolean): integer;\nvar stream, temp: TStream;\n  writer: TFPWriterBMP;\n  bmpXOR: TBGRACustomBitmap;\n  y: Integer;\n  psrcMask, pdest: PBGRAPixel;\n  bitAndMask: array of byte;\n  bitAndMaskPos: integer;\n  bitAndMaskBit: byte;\n  bitAndMaskRowSize, x: integer;\n  palette: TBGRAPalette;\n  writerPng: TBGRAWriterPNG;\n\nbegin\n  stream := TMemoryStream.Create;\n  try\n    //PNG format is advised from 256 on but does not handle XOR\n    if ((ABitmap.Width >= 256) or (ABitmap.Height >= 256)) and (ABitDepth >= 8) and\n        ((ABitmap.XorMask = nil) or ABitmap.XorMask.IsZero) then\n    begin\n      writerPng := TBGRAWriterPNG.Create;\n      try\n        writerPng.WordSized := false;\n        if ABitDepth = 8 then\n        begin\n          writerPng.Indexed := true;\n          writerpng.UseAlpha := ABitmap.HasTransparentPixels;\n        end else\n        begin\n          writerPng.Indexed := false;\n          writerpng.UseAlpha := (ABitDepth = 32);\n        end;\n        ABitmap.SaveToStream(stream, writerPng);\n      finally\n        writerPng.Free;\n      end;\n      result := Add(stream, AOverwrite, true);\n      stream := nil;\n    end else\n    if ((ABitmap.XorMask = nil) or ABitmap.XorMask.IsZero) and\n      (not ABitmap.HasTransparentPixels or (ABitDepth = 32)) then\n    begin\n      writer := TFPWriterBMP.Create;\n      writer.BitsPerPixel := ABitDepth;\n      try\n        if not ABitmap.UsePalette and (ABitDepth < 24) then\n        begin\n          palette := TBGRAPalette.Create(ABitmap);\n          try\n            palette.AssignTo(ABitmap);\n          finally\n            palette.Free;\n          end;\n          ABitmap.SaveToStream(stream, writer);\n          ABitmap.UsePalette:= false;\n        end\n        else\n          ABitmap.SaveToStream(stream, writer);\n      finally\n        writer.Free;\n      end;\n      result := Add(stream, AOverwrite, true);\n      stream := nil;\n    end else\n    begin\n      bmpXOR := BGRABitmapFactory.Create(ABitmap);\n      try\n        bitAndMaskRowSize := ((bmpXOR.Width+31) div 32)*4;\n        setlength(bitAndMask, bitAndMaskRowSize*bmpXOR.Height);\n        for y := bmpXOR.Height-1 downto 0 do\n        begin\n          if assigned(ABitmap.XorMask) then\n            psrcMask := ABitmap.XorMask.ScanLine[y]\n          else\n            psrcMask := nil;\n          pdest := bmpXOR.ScanLine[y];\n          bitAndMaskPos := (bmpXOR.Height-1-y)*bitAndMaskRowSize;\n          bitAndMaskBit:= $80;\n          for x := bmpXOR.Width-1 downto 0 do\n          begin\n            //xor mask is either 100% or 0%\n            if assigned(psrcMask) and ((psrcMask^.red <> 0) or (psrcMask^.green <> 0) or (psrcMask^.blue <> 0)) then\n            begin\n              pdest^ := psrcMask^;\n              pdest^.alpha := 255;\n              bitAndMask[bitAndMaskPos] := bitAndMask[bitAndMaskPos] or bitAndMaskBit;\n            end else\n            if pdest^.alpha = 0 then\n            begin\n              bitAndMask[bitAndMaskPos] := bitAndMask[bitAndMaskPos] or bitAndMaskBit;\n              if ABitDepth <= 24 then //if we cannot save alpha, replace with black.\n              begin                   //mask will task care of making it transparent\n                pdest^ := BGRABlack;\n              end;\n            end;\n\n            bitAndMaskBit := bitAndMaskBit shr 1;\n            if bitAndMaskBit = 0 then\n            begin\n              bitAndMaskBit := $80;\n              inc(bitAndMaskPos);\n            end;\n            if assigned(psrcMask) then inc(psrcMask);\n            inc(pdest);\n          end;\n        end;\n        bmpXOR.InvalidateBitmap;\n\n        if ABitDepth < 24 then\n        begin\n          palette := TBGRAPalette.Create(bmpXor);\n          palette.AssignTo(bmpXor);\n          palette.Free;\n        end;\n\n        temp := TMemoryStream.Create;\n        try\n          writer := TFPWriterBMP.Create;\n          writer.BitsPerPixel := ABitDepth;\n          try\n            bmpXOR.SaveToStream(temp, writer);\n            //write double height to include mask\n            temp.Position := 22;\n            temp.WriteDWord(NtoLE(LongWord(bmpXOR.Height*2)));\n            //go after the file header\n            temp.Position := 14;\n            //copy bitmap without header\n            stream.CopyFrom(temp, temp.Size-temp.Position);\n          finally\n            writer.Free;\n          end;\n        finally\n          temp.Free;\n        end;\n        //write mask\n        stream.WriteBuffer(bitAndMask[0],length(bitAndMask));\n        result := Add(stream, AOverwrite, true);\n        stream := nil;\n      finally\n        bmpXOR.Free;\n      end;\n    end;\n\n  finally\n    stream.Free;\n  end;\nend;\n\nfunction TBGRAIconCursor.Add(AContent: TStream; AOverwrite: boolean;\n  AOwnStream: boolean): integer;\nvar\n  index,i: Integer;\n  newEntry: TBGRAIconCursorEntry;\n  contentCopy: TMemoryStream;\nbegin\n  if not AOwnStream then\n  begin\n    AContent.Position:= 0;\n    contentCopy := TMemoryStream.Create;\n    contentCopy.CopyFrom(AContent, AContent.Size);\n    newEntry := TBGRAIconCursorEntry.TryCreate(self, contentCopy);\n  end else\n    newEntry := TBGRAIconCursorEntry.TryCreate(self, AContent);\n\n  index := IndexOf(newEntry.Name, newEntry.Extension);\n  if index <> -1 then\n  begin\n    if AOverwrite then\n      Delete(index)\n    else\n    begin\n      newEntry.Free;\n      raise Exception.Create('Duplicate entry');\n    end;\n  end else if not FLoading then\n  begin\n    for i := 0 to Count-1 do\n      if ((Width[i] < newEntry.Width) and (Height[i] < newEntry.Height)) or\n         ((Width[i] = newEntry.Width) and (Height[i] = newEntry.Height) and (BitDepth[i] < newEntry.BitDepth)) then\n      begin\n        index := i;\n        break;\n      end;\n  end;\n  result := AddEntry(newEntry, index);\nend;\n\nprocedure TBGRAIconCursor.LoadFromStream(AStream: TStream);\nvar header: TGroupIconHeader;\n  dir: packed array of TIconFileDirEntry;\n  startPos: int64;\n  entryContent: TMemoryStream;\n  entryIndex, i: integer;\nbegin\n  FLoading:= true;\n  try\n    startPos := AStream.Position;\n    AStream.ReadBuffer({%H-}header, sizeof(header));\n    header.SwapIfNecessary;\n    if header.Reserved <> 0 then\n      raise exception.Create('Invalid file format');\n    if FileType = ifUnknown then\n    begin\n      case header.ResourceType of\n      ICON_OR_CURSOR_FILE_ICON_TYPE: FFileType := ifIco;\n      ICON_OR_CURSOR_FILE_CURSOR_TYPE: FFileType := ifCur;\n      end;\n    end;\n    if header.ResourceType <> ExpectedMagic then\n      raise exception.Create('Invalid resource type');\n    Clear;\n    setlength(dir, header.ImageCount);\n    AStream.ReadBuffer(dir[0], sizeof(TIconFileDirEntry)*length(dir));\n    for i := 0 to high(dir) do\n    begin\n      AStream.Position:= LEtoN(dir[i].ImageOffset) + startPos;\n      entryContent := TMemoryStream.Create;\n      entryContent.CopyFrom(AStream, LEtoN(dir[i].ImageSize));\n      entryIndex := Add(entryContent, false, true);\n      if ((dir[i].Width = 0) and (Width[entryIndex] < 256)) or\n         ((dir[i].Width > 0) and (Width[entryIndex] <> dir[i].Width)) or\n         ((dir[i].Height = 0) and (Height[entryIndex] < 256)) or\n         ((dir[i].Height > 0) and (Height[entryIndex] <> dir[i].Height)) then\n          raise Exception.Create('Inconsistent image size');\n      if FFileType = ifCur then\n        TBGRAIconCursorEntry(Entry[entryIndex]).HotSpot := Point(LEtoN(dir[i].HotSpotX),LEtoN(dir[i].HotSpotY));\n    end;\n  finally\n    FLoading:= false;\n  end;\nend;\n\nprocedure TBGRAIconCursor.SaveToStream(ADestination: TStream);\nvar header: TGroupIconHeader;\n  i: integer;\n  accSize: LongWord;\n  dir: packed array of TIconFileDirEntry;\n  contentSize: LongWord;\nbegin\n  if Count = 0 then\n    raise exception.Create('File cannot be empty');\n  if FileType = ifUnknown then\n    raise exception.Create('You need to specify the file type');\n  header.ImageCount:= Count;\n  header.Reserved := 0;\n  header.ResourceType:= ExpectedMagic;\n  header.SwapIfNecessary;\n  accSize := sizeof(header) + sizeof(TIconFileDirEntry)*Count;\n  setlength(dir, Count);\n  for i := 0 to Count-1 do\n  begin\n    if Width[i] >= 256\n    then dir[i].Width := 0\n    else dir[i].Width := Width[i];\n\n    if Height[i] >= 256\n    then dir[i].Height := 0\n    else dir[i].Height := Height[i];\n\n    if BitDepth[i] < 8 then\n      dir[i].Colors := 1 shl BitDepth[i]\n    else\n      dir[i].Colors := 0;\n    dir[i].Reserved := 0;\n    case FFileType of\n    ifCur: begin dir[i].HotSpotX:= NtoLE(Word(HotSpot[i].X)); dir[i].HotSpotY := NtoLE(Word(HotSpot[i].Y)); end;\n    ifIco: begin dir[i].BitsPerPixel:= NtoLE(Word(BitDepth[i])); dir[i].Planes := NtoLE(Word(1)); end;\n    else dir[i].Variable:= 0;\n    end;\n    dir[i].ImageOffset := LEtoN(accSize);\n    contentSize:= Entry[i].FileSize;\n    dir[i].ImageSize := NtoLE(contentSize);\n    inc(accSize,contentSize);\n  end;\n\n  ADestination.WriteBuffer(header, sizeof(header));\n  ADestination.WriteBuffer(dir[0], sizeof(TIconFileDirEntry)*length(dir));\n  for i := 0 to Count-1 do\n    if Entry[i].CopyTo(ADestination) <> Entry[i].FileSize then\n        raise exception.Create('Unable to write data in stream');\nend;\n\nfunction TBGRAIconCursor.GetBitmap(AIndex: integer): TBGRACustomBitmap;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise ERangeError.Create('Index out of bounds');\n  result := TBGRAIconCursorEntry(Entry[AIndex]).GetBitmap;\nend;\n\nfunction TBGRAIconCursor.GetBestFitIndex(AWidth, AHeight: integer): integer;\nvar bestIndex: integer;\n  bestSizeDiff: integer;\n  bestBPP: integer;\n  sizeDiff, i: integer;\nbegin\n  bestBPP := 0;\n  bestSizeDiff := high(integer);\n  bestIndex := -1;\n  for i := 0 to Count-1 do\n  begin\n    sizeDiff := abs(AWidth-Width[i])+abs(AHeight-Height[i]);\n    if (sizeDiff < bestSizeDiff) or\n      ((sizeDiff = bestSizeDiff) and (BitDepth[i] > bestBPP)) then\n    begin\n      bestIndex := i;\n      bestSizeDiff:= sizeDiff;\n      bestBPP:= BitDepth[i];\n    end;\n  end;\n  exit(bestIndex);\nend;\n\nfunction TBGRAIconCursor.GetBestFitBitmap(AWidth, AHeight: integer): TBGRACustomBitmap;\nvar bestIndex: integer;\nbegin\n  bestIndex := GetBestFitIndex(AWidth, AHeight);\n  if bestIndex = -1 then\n    raise Exception.Create('No bitmap found')\n  else\n    result := GetBitmap(bestIndex);\nend;\n\nfunction TBGRAIconCursor.IndexOf(AWidth, AHeight, ABitDepth: integer): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to Count-1 do\n    if (Width[i] = AWidth) and (Height[i] = AHeight) and (BitDepth[i] = ABitDepth) then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1;\nend;\n\nprocedure TBGRAIconCursor.Assign(Source: TPersistent);\n{$IFDEF BGRABITMAP_USE_LCL}\nvar\n  temp: TMemoryStream;\n{$ENDIF}\nbegin\n  {$IFDEF BGRABITMAP_USE_LCL}\n  if Source is TCustomIcon then\n  begin\n    temp := TMemoryStream.Create;\n    try\n      TCustomIcon(Source).SaveToStream(temp);\n      temp.Position:= 0;\n      LoadFromStream(temp);\n    finally\n      temp.Free;\n    end;\n  end else\n  {$ENDIF}\n    inherited Assign(Source);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralayeroriginal.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Generic classes to implement originals, to be used in layered images as renderers }\nunit BGRALayerOriginal;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmap, BGRABitmapTypes, BGRATransform, BGRAMemDirectory, fgl\n  {$IFDEF BGRABITMAP_USE_LCL},LCLType, LCLIntf{$ENDIF};\n\ntype\n  PRectF = BGRABitmapTypes.PRectF;\n  TAffineMatrix = BGRATransform.TAffineMatrix;\n  TBGRALayerCustomOriginal = class;\n  TBGRAOriginalDiff = class;\n  TBGRALayerOriginalAny = class of TBGRALayerCustomOriginal;\n  TOriginalMovePointEvent = procedure(ASender: TObject; APrevCoord, ANewCoord: TPointF; AShift: TShiftState) of object;\n  TOriginalStartMovePointEvent = procedure(ASender: TObject; AIndex: integer; AShift: TShiftState) of object;\n  TOriginalClickPointEvent = procedure(ASender: TObject; AIndex: integer; AShift: TShiftState) of object;\n  TOriginalHoverPointEvent = procedure(ASender: TObject; AIndex: integer) of object;\n  TOriginalChangeEvent = procedure(ASender: TObject; ABounds: PRectF; var ADiff: TBGRAOriginalDiff) of object;\n  TOriginalEditingChangeEvent = procedure(ASender: TObject) of object;\n  TOriginalEditorCursor = (oecDefault, oecMove, oecMoveW, oecMoveE, oecMoveN, oecMoveS,\n                           oecMoveNE, oecMoveSW, oecMoveNW, oecMoveSE, oecHandPoint, oecText);\n  TSpecialKey = (skUnknown, skBackspace, skTab, skReturn, skEscape,\n                 skPageUp, skPageDown, skHome, skEnd,\n                 skLeft, skUp, skRight, skDown,\n                 skInsert, skDelete,\n                 skNum0, skNum1, skNum2, skNum3, skNum4, skNum5, skNum6, skNum7, skNum8, skNum9,\n                 skF1, skF2, skF3, skF4, skF5, skF6, skF7, skF8, skF9, skF10, skF11, skF12,\n                 skA, skB, skC, skD, skE, skF, skG, skH, skI, skJ, skK, skL, skM, skN, skO, skP, skQ, skR, skS, skT, skU, skV, skW, skX, skY, skZ,\n                 sk0, sk1, sk2, sk3, sk4, sk5, sk6, sk7, sk8, sk9,\n                 skShift, skCtrl, skAlt);\n\nconst\n  SpecialKeyStr: array[TSpecialKey] of string =\n    ('Unknown', 'Backspace', 'Tab', 'Return', 'Escape',\n     'PageUp', 'PageDown', 'Home', 'End',\n     'Left', 'Up', 'Right', 'Down',\n     'Insert', 'Delete',\n     'Num0', 'Num1', 'Num2', 'Num3', 'Num4', 'Num5', 'Num6', 'Num7', 'Num8', 'Num9',\n     'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12',\n     'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n     'Shift', 'Ctrl', 'Alt');\n\n{$IFDEF BGRABITMAP_USE_LCL}\nconst\n  SpecialKeyToLCL: array[TSpecialKey] of Word =\n    (VK_UNKNOWN, VK_BACK,VK_TAB,VK_RETURN,VK_ESCAPE,\n     VK_PRIOR,VK_NEXT,VK_HOME,VK_END,\n     VK_LEFT,VK_UP,VK_RIGHT,VK_DOWN,\n     VK_INSERT,VK_DELETE,\n     VK_NUMPAD0,VK_NUMPAD1,VK_NUMPAD2,VK_NUMPAD3,VK_NUMPAD4,VK_NUMPAD5,VK_NUMPAD6,VK_NUMPAD7,VK_NUMPAD8,VK_NUMPAD9,\n     VK_F1,VK_F2,VK_F3,VK_F4,VK_F5,VK_F6,VK_F7,VK_F8,VK_F9,VK_F10,VK_F11,VK_F12,\n     VK_A, VK_B, VK_C, VK_D, VK_E, VK_F, VK_G, VK_H, VK_I, VK_J, VK_K, VK_L, VK_M, VK_N, VK_O, VK_P, VK_Q, VK_R, VK_S, VK_T, VK_U, VK_V, VK_W, VK_X, VK_Y, VK_Z,\n     VK_0, VK_1, VK_2, VK_3, VK_4, VK_5, VK_6, VK_7, VK_8, VK_9,\n     VK_SHIFT, VK_CONTROL, VK_MENU);\n\n  function LCLKeyToSpecialKey(AKey: Word; AShift: TShiftState): TSpecialKey;\n{$ENDIF}\n\ntype\n  TStartMoveHandlers = specialize TFPGList<TOriginalStartMovePointEvent>;\n  TClickPointHandlers = specialize TFPGList<TOriginalClickPointEvent>;\n  THoverPointHandlers = specialize TFPGList<TOriginalHoverPointEvent>;\n  TBGRAOriginalPolylineStyle = (opsNone, opsSolid, opsDash, opsDashWithShadow);\n\n  { Graphical editor for an original }\n  TBGRAOriginalEditor = class\n  private\n    FFocused: boolean;\n    FOnFocusChanged: TNotifyEvent;\n    function GetIsMovingPoint: boolean;\n    function GetPointCoord(AIndex: integer): TPointF;\n    function GetPointCount: integer;\n    function GetPointHighlighted(AIndex: integer): boolean;\n    procedure SetFocused(AValue: boolean);\n    procedure SetPointHighlighted(AIndex: integer; AValue: boolean);\n  protected\n    FMatrix,FMatrixInverse: TAffineMatrix;          //view matrix from original coord\n    FGridMatrix,FGridMatrixInverse: TAffineMatrix;  //grid matrix in original coord\n    FGridActive: boolean;\n    FPoints: array of record\n      Origin, Coord: TPointF;\n      OnMove, OnAlternateMove: TOriginalMovePointEvent;\n      RightButton, Highlighted: boolean;\n      SnapToPoint: integer;\n      HitBox: TAffineBox;\n    end;\n    FPolylines: array of record\n      Coords: array of TPointF;\n      Closed: boolean;\n      Style: TBGRAOriginalPolylineStyle;\n      BackColor: TBGRAPixel;\n    end;\n    FPointSize: single;\n    FPointMoving: integer;\n    FPointWasMoved: boolean;\n    FPointCoordDelta: TPointF;\n    FMovingRightButton: boolean;\n    FPrevMousePos: TPointF;\n    FStartMoveHandlers: TStartMoveHandlers;\n    FCurHoverPoint: integer;\n    FHoverPointHandlers: THoverPointHandlers;\n    FClickPointHandlers: TClickPointHandlers;\n    FLastClickTime: TDateTime;\n    FLastClickPos: TPointF;\n    FDoubleClickTime: TDateTime;\n    FConsecutiveClickCount: integer;\n    function RenderPoint(ADest: TBGRABitmap; ACoord: TPointF; AAlternateColor: boolean; AHighlighted: boolean): TRect; virtual;\n    function GetRenderPointBounds(ACoord: TPointF; AHighlighted: boolean): TRect; virtual;\n    function RenderArrow(ADest: TBGRABitmap; AOrigin, AEndCoord: TPointF): TRect; virtual;\n    function GetRenderArrowBounds(AOrigin, AEndCoord: TPointF): TRect; virtual;\n    function RenderPolygon(ADest: TBGRABitmap; ACoords: array of TPointF; AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle; ABackColor: TBGRAPixel): TRect; virtual;\n    function GetRenderPolygonBounds(ACoords: array of TPointF): TRect;\n    procedure SetMatrix(AValue: TAffineMatrix);\n    procedure SetGridMatrix(AValue: TAffineMatrix);\n    procedure SetGridActive(AValue: boolean);\n    function GetMoveCursor(APointIndex: integer): TOriginalEditorCursor; virtual;\n    function GetFixedShiftForButton(AShift: TShiftState; ARightDown: boolean): TShiftState;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure Clear; virtual;\n    procedure AddStartMoveHandler(AOnStartMove: TOriginalStartMovePointEvent);\n    procedure AddClickPointHandler(AOnClickPoint: TOriginalClickPointEvent);\n    procedure AddHoverPointHandler(AOnHoverPoint: TOriginalHoverPointEvent);\n    function AddPoint(const ACoord: TPointF; AOnMove: TOriginalMovePointEvent; ARightButton: boolean = false; ASnapToPoint: integer = -1): integer;\n    procedure AddPointAlternateMove(AIndex: integer; AOnAlternateMove: TOriginalMovePointEvent);\n    function AddFixedPoint(const ACoord: TPointF; ARightButton: boolean = false): integer;\n    function AddArrow(const AOrigin, AEndCoord: TPointF; AOnMoveEnd: TOriginalMovePointEvent; ARightButton: boolean = false): integer;\n    function AddPolyline(const ACoords: array of TPointF; AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle): integer; overload;\n    function AddPolyline(const ACoords: array of TPointF; AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle; ABackColor: TBGRAPixel): integer; overload;\n    procedure SetHitBox(AIndex: integer; AHitBox: TAffineBox);\n    procedure MouseMove(Shift: TShiftState; ViewX, ViewY: single; out ACursor: TOriginalEditorCursor; out AHandled: boolean); virtual;\n    procedure MouseDown(RightButton: boolean; Shift: TShiftState; ViewX, ViewY: single; out ACursor: TOriginalEditorCursor; out AHandled: boolean); virtual;\n    procedure MouseUp(RightButton: boolean; {%H-}Shift: TShiftState; {%H-}ViewX, {%H-}ViewY: single; out ACursor: TOriginalEditorCursor; out AHandled: boolean); virtual;\n    procedure KeyDown({%H-}Shift: TShiftState; {%H-}Key: TSpecialKey; out AHandled: boolean); virtual;\n    procedure KeyUp({%H-}Shift: TShiftState; {%H-}Key: TSpecialKey; out AHandled: boolean); virtual;\n    procedure KeyPress({%H-}UTF8Key: string; out AHandled: boolean); virtual;\n    function GetPointAt(const ACoord: TPointF; ARightButton: boolean): integer;\n    function Render(ADest: TBGRABitmap; const {%H-}ALayoutRect: TRect): TRect; virtual;\n    function GetRenderBounds(const {%H-}ALayoutRect: TRect): TRect; virtual;\n    function SnapToGrid(const ACoord: TPointF; AIsViewCoord: boolean): TPointF;\n    function OriginalCoordToView(const AImageCoord: TPointF): TPointF;\n    function ViewCoordToOriginal(const AViewCoord: TPointF): TPointF;\n    property Matrix: TAffineMatrix read FMatrix write SetMatrix;\n    property GridMatrix: TAffineMatrix read FGridMatrix write SetGridMatrix;\n    property GridActive: boolean read FGridActive write SetGridActive;\n    property Focused: boolean read FFocused write SetFocused;\n    property PointSize: single read FPointSize write FPointSize;\n    property PointCount: integer read GetPointCount;\n    property PointCoord[AIndex: integer]: TPointF read GetPointCoord;\n    property PointHighlighted[AIndex: integer]: boolean read GetPointHighlighted write SetPointHighlighted;\n    property OnFocusChanged: TNotifyEvent read FOnFocusChanged write FOnFocusChanged;\n    property IsMovingPoint: boolean read GetIsMovingPoint;\n    property ConsecutiveClickCount: integer read FConsecutiveClickCount;\n  end;\n\n  TBGRACustomOriginalStorage = class;\n  ArrayOfSingle = array of single;\n\n  { Difference of an original in a layered bitmap }\n  TBGRAOriginalDiff = class\n    procedure Apply(AOriginal: TBGRALayerCustomOriginal); virtual; abstract;\n    procedure Unapply(AOriginal: TBGRALayerCustomOriginal); virtual; abstract;\n    function CanAppend(ADiff: TBGRAOriginalDiff): boolean; virtual; abstract;\n    procedure Append(ADiff: TBGRAOriginalDiff); virtual; abstract;\n    function IsIdentity: boolean; virtual; abstract;\n  end;\n\n  { Abtract class for an original that renders a layer in a layered image }\n  TBGRALayerCustomOriginal = class\n  private\n    FOnChange: TOriginalChangeEvent;\n    FOnEditingChange: TOriginalEditingChangeEvent;\n    FRenderStorage: TBGRACustomOriginalStorage;\n    function GetDiffExpected: boolean;\n    procedure SetOnChange(AValue: TOriginalChangeEvent);\n    procedure SetRenderStorage(AValue: TBGRACustomOriginalStorage);\n  protected\n    FGuid: TGuid;\n    function GetGuid: TGuid;\n    procedure SetGuid(AValue: TGuid);\n    procedure NotifyChange(ADiff: TBGRAOriginalDiff = nil); overload;\n    procedure NotifyChange(ABounds: TRectF; ADiff: TBGRAOriginalDiff = nil); overload;\n    procedure NotifyEditorChange;\n    property DiffExpected: boolean read GetDiffExpected;\n  public\n    constructor Create; virtual;\n    destructor Destroy; override;\n    //one of the two Render functions must be overriden\n    procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); virtual;\n    procedure Render(ADest: TBGRABitmap; ARenderOffset: TPoint; AMatrix: TAffineMatrix; ADraft: boolean); virtual;\n    function GetRenderBounds(ADestRect: TRect; AMatrix: TAffineMatrix): TRect; virtual; abstract;\n    procedure ConfigureEditor({%H-}AEditor: TBGRAOriginalEditor); virtual;\n    procedure LoadFromStorage(AStorage: TBGRACustomOriginalStorage); virtual; abstract;\n    procedure SaveToStorage(AStorage: TBGRACustomOriginalStorage); virtual; abstract;\n    procedure LoadFromFile(AFilenameUTF8: string); virtual;\n    procedure LoadFromStream(AStream: TStream); virtual;\n    procedure LoadFromResource(AFilename: string);\n    procedure SaveToFile(AFilenameUTF8: string); virtual;\n    procedure SaveToStream(AStream: TStream); virtual;\n    function CreateEditor: TBGRAOriginalEditor; virtual;\n    class function StorageClassName: RawByteString; virtual; abstract;\n    class function CanConvertToSVG: boolean; virtual;\n    function IsInfiniteSurface: boolean; virtual;\n    function ConvertToSVG(const {%H-}AMatrix: TAffineMatrix; out AOffset: TPoint): TObject; virtual;\n    function Duplicate: TBGRALayerCustomOriginal; virtual;\n    property Guid: TGuid read GetGuid write SetGuid;\n    property OnChange: TOriginalChangeEvent read FOnChange write SetOnChange;\n    property OnEditingChange: TOriginalEditingChangeEvent read FOnEditingChange write FOnEditingChange;\n    property RenderStorage: TBGRACustomOriginalStorage read FRenderStorage write SetRenderStorage;\n  end;\n\n  TBGRALayerImageOriginal = class;\n\n  { Difference in an image original }\n  TBGRAImageOriginalDiff = class(TBGRAOriginalDiff)\n  protected\n    FContentVersionBefore,FContentVersionAfter: integer;\n    FImageBefore,FImageAfter: TBGRABitmap;\n    FJpegStreamBefore,FJpegStreamAfter: TMemoryStream;\n  public\n    constructor Create(AFromOriginal: TBGRALayerImageOriginal);\n    destructor Destroy; override;\n    procedure ComputeDiff(AToOriginal: TBGRALayerImageOriginal);\n    procedure Apply(AOriginal: TBGRALayerCustomOriginal); override;\n    procedure Unapply(AOriginal: TBGRALayerCustomOriginal); override;\n    function CanAppend(ADiff: TBGRAOriginalDiff): boolean; override;\n    procedure Append(ADiff: TBGRAOriginalDiff); override;\n    function IsIdentity: boolean; override;\n  end;\n\n  { Original of an image in a layered image (affined transformed) }\n  TBGRALayerImageOriginal = class(TBGRALayerCustomOriginal)\n  private\n    function GetImageHeight: integer;\n    function GetImageWidth: integer;\n  protected\n    FImage: TBGRABitmap;\n    FJpegStream: TMemoryStream;\n    FContentVersion: integer;\n    FDiff: TBGRAImageOriginalDiff;\n    procedure BeginUpdate;\n    procedure EndUpdate;\n    procedure InternalLoadImageFromStream(AStream: TStream; AUpdate: boolean);\n    procedure InternalClear;\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n    function ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TObject; override;\n    procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;\n    function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix): TRect; override;\n    procedure LoadFromStorage(AStorage: TBGRACustomOriginalStorage); override;\n    procedure SaveToStorage(AStorage: TBGRACustomOriginalStorage); override;\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure Clear;\n    procedure LoadImageFromStream(AStream: TStream);\n    procedure SaveImageToStream(AStream: TStream);\n    procedure AssignImage(AImage: TBGRACustomBitmap);\n    function GetImageCopy: TBGRABitmap;\n    class function StorageClassName: RawByteString; override;\n    class function CanConvertToSVG: boolean; override;\n    property Width: integer read GetImageWidth;\n    property Height: integer read GetImageHeight;\n  end;\n\n  { Abstract original storage }\n  TBGRACustomOriginalStorage = class\n  protected\n    FFormats: TFormatSettings;\n    function GetBool(AName: utf8string): boolean;\n    function GetBoolDef(AName: utf8string; ADefault: boolean): boolean;\n    function GetColorArray(AName: UTF8String): ArrayOfTBGRAPixel;\n    function GetInteger(AName: utf8string): integer;\n    function GetIntegerDef(AName: utf8string; ADefault: integer): integer;\n    function GetPointF(AName: utf8string): TPointF;\n    function GetRectF(AName: utf8string): TRectF;\n    function GetRect(AName: utf8string): TRect;\n    function GetAffineMatrix(AName: utf8string): TAffineMatrix;\n    function GetRawString(AName: utf8string): RawByteString; virtual; abstract;\n    function GetSingle(AName: utf8string): single;\n    function GetSingleArray(AName: utf8string): ArrayOfSingle;\n    function GetSingleDef(AName: utf8string; ADefault: single): single;\n    function GetColor(AName: UTF8String): TBGRAPixel;\n    procedure SetBool(AName: utf8string; AValue: boolean);\n    procedure SetColorArray(AName: UTF8String; AValue: ArrayOfTBGRAPixel);\n    procedure SetInteger(AName: utf8string; AValue: integer);\n    procedure SetPointF(AName: utf8string; AValue: TPointF);\n    procedure SetRectF(AName: utf8string; AValue: TRectF);\n    procedure SetRect(AName: utf8string; AValue: TRect);\n    procedure SetAffineMatrix(AName: utf8string; const AValue: TAffineMatrix);\n    procedure SetRawString(AName: utf8string; AValue: RawByteString); virtual; abstract;\n    procedure SetSingle(AName: utf8string; AValue: single);\n    procedure SetSingleArray(AName: utf8string; AValue: ArrayOfSingle);\n    procedure SetColor(AName: UTF8String; AValue: TBGRAPixel);\n    function GetDelimiter: char;\n    function GetEmpty: boolean; virtual; abstract;\n  public\n    constructor Create;\n    function Duplicate: TBGRACustomOriginalStorage; virtual; abstract;\n    procedure RemoveAttribute(AName: utf8string); virtual; abstract;\n    function HasAttribute(AName: utf8string): boolean; virtual; abstract;\n    procedure RemoveObject(AName: utf8string); virtual; abstract;\n    function CreateObject(AName: utf8string): TBGRACustomOriginalStorage; virtual; abstract;\n    function OpenObject(AName: utf8string): TBGRACustomOriginalStorage; virtual; abstract;\n    function ObjectExists(AName: utf8string): boolean; virtual; abstract;\n    procedure EnumerateObjects(AList: TStringList); virtual; abstract;\n    procedure EnumerateFiles(AList: TStringList); virtual; abstract;\n    procedure RemoveFile(AName: utf8string); virtual; abstract;\n    function GetFileStream(AName: UTF8String): TStream; virtual; abstract;\n    function ReadFile(AName: UTF8String; ADest: TStream): boolean; virtual; abstract;\n    function ReadBitmap(AName: UTF8String; ADest: TCustomUniversalBitmap): boolean; virtual; abstract;\n    procedure WriteFile(AName: UTF8String; ASource: TStream; ACompress: boolean; AOwnStream: boolean = false); virtual; abstract;\n    function FileExists(AName: UTF8String): boolean; virtual; abstract;\n    function FloatEquals(AName: utf8string; AValue: single): boolean;\n    function PointFEquals(AName: utf8string; const AValue: TPointF): boolean;\n    function AffineMatrixEquals(AName: utf8string; const AValue: TAffineMatrix): boolean;\n    property RawString[AName: utf8string]: RawByteString read GetRawString write SetRawString;\n    property Int[AName: utf8string]: integer read GetInteger write SetInteger;\n    property IntDef[AName: utf8string; ADefault: integer]: integer read GetIntegerDef;\n    property Bool[AName: utf8string]: boolean read GetBool write SetBool;\n    property BoolDef[AName: utf8string; ADefault: boolean]: boolean read GetBoolDef;\n    property Float[AName: utf8string]: single read GetSingle write SetSingle;\n    property FloatArray[AName: utf8string]: ArrayOfSingle read GetSingleArray write SetSingleArray;\n    property FloatDef[AName: utf8string; ADefault: single]: single read GetSingleDef;\n    property PointF[AName: utf8string]: TPointF read GetPointF write SetPointF;\n    property RectangleF[AName: utf8string]: TRectF read GetRectF write SetRectF;\n    property Rectangle[AName: utf8string]: TRect read GetRect write SetRect;\n    property AffineMatrix[AName: utf8string]: TAffineMatrix read GetAffineMatrix write SetAffineMatrix;\n    property Color[AName: UTF8String]: TBGRAPixel read GetColor write SetColor;\n    property ColorArray[AName: UTF8String]: ArrayOfTBGRAPixel read GetColorArray write SetColorArray;\n    property Empty: boolean read GetEmpty;\n  end;\n\n  { Storage available for an original }\n  TBGRAMemOriginalStorage = class(TBGRACustomOriginalStorage)\n  protected\n    FMemDir: TMemDirectory;\n    FMemDirOwned: boolean;\n    function GetRawString(AName: utf8string): RawByteString; override;\n    procedure SetRawString(AName: utf8string; AValue: RawByteString); override;\n    function GetEmpty: boolean; override;\n  public\n    destructor Destroy; override;\n    constructor Create;\n    constructor Create(AMemDir: TMemDirectory; AMemDirOwned: boolean = false);\n    function Equals(Obj: TObject): boolean; override;\n    function Duplicate: TBGRACustomOriginalStorage; override;\n    procedure RemoveAttribute(AName: utf8string); override;\n    function HasAttribute(AName: utf8string): boolean; override;\n    procedure RemoveObject(AName: utf8string); override;\n    function CreateObject(AName: utf8string): TBGRACustomOriginalStorage; override;\n    function OpenObject(AName: utf8string): TBGRACustomOriginalStorage; override;\n    function ObjectExists(AName: utf8string): boolean; override;\n    procedure EnumerateObjects(AList: TStringList); override;\n    procedure EnumerateFiles(AList: TStringList); override;\n    procedure RemoveFile(AName: utf8string); override;\n    function GetFileStream(AName: UTF8String): TStream; override;\n    function ReadBitmap(AName: UTF8String; ADest: TCustomUniversalBitmap): boolean; override;\n    function ReadFile(AName: UTF8String; ADest: TStream): boolean; override;\n    procedure WriteFile(AName: UTF8String; ASource: TStream; ACompress: boolean; AOwnStream: boolean = false); override;\n    function FileExists(AName: UTF8String): boolean; override;\n    procedure SaveToStream(AStream: TStream);\n    procedure LoadFromStream(AStream: TStream);\n    procedure LoadFromResource(AFilename: string);\n    procedure CopyTo(AMemDir: TMemDirectory);\n  end;\n\n  { Difference in the storage of an original }\n  TBGRAOriginalStorageDiff = class(TBGRAOriginalDiff)\n  protected\n    FOriginalClass: rawbytestring;\n    FStorageBefore, FStorageAfter: TBGRAMemOriginalStorage;\n  public\n    constructor Create(AOriginal: TBGRALayerCustomOriginal);\n    procedure ComputeDifference(AOriginal: TBGRALayerCustomOriginal);\n    destructor Destroy; override;\n    procedure Apply(AOriginal: TBGRALayerCustomOriginal); override;\n    procedure Unapply(AOriginal: TBGRALayerCustomOriginal); override;\n    function CanAppend(ADiff: TBGRAOriginalDiff): boolean; override;\n    procedure Append(ADiff: TBGRAOriginalDiff); override;\n    function IsIdentity: boolean; override;\n  end;\n\nprocedure RegisterLayerOriginal(AClass: TBGRALayerOriginalAny);\nfunction FindLayerOriginalClass(AStorageClassName: string): TBGRALayerOriginalAny;\n\nimplementation\n\nuses BGRAPolygon, math, BGRAMultiFileType, BGRAUTF8, BGRAGraphics, BGRASVG, BGRASVGShapes;\n\n{$IFDEF BGRABITMAP_USE_LCL}\nfunction LCLKeyToSpecialKey(AKey: Word; AShift: TShiftState): TSpecialKey;\nvar\n  sk: TSpecialKey;\nbegin\n  if (((AKey >= VK_A) and (AKey <= VK_Z)) or\n     ((AKey >= VK_0) and (AKey <= VK_9))) and (AShift*[ssCtrl,ssAlt]=[]) then exit(skUnknown);\n  for sk := low(TSpecialKey) to high(TSpecialKey) do\n    if AKey = SpecialKeyToLCL[sk] then exit(sk);\n  exit(skUnknown);\nend;\n{$ENDIF}\n\nvar\n  LayerOriginalClasses: array of TBGRALayerOriginalAny;\n\nprocedure RegisterLayerOriginal(AClass: TBGRALayerOriginalAny);\nbegin\n  setlength(LayerOriginalClasses, length(LayerOriginalClasses)+1);\n  LayerOriginalClasses[high(LayerOriginalClasses)] := AClass;\nend;\n\nfunction FindLayerOriginalClass(AStorageClassName: string): TBGRALayerOriginalAny;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(LayerOriginalClasses) do\n    if LayerOriginalClasses[i].StorageClassName = AStorageClassName then\n      exit(LayerOriginalClasses[i]);\n  exit(nil);\nend;\n\n{ TBGRAImageOriginalDiff }\n\nconstructor TBGRAImageOriginalDiff.Create(AFromOriginal: TBGRALayerImageOriginal);\nbegin\n  FImageBefore := AFromOriginal.FImage.NewReference;\n  if Assigned(AFromOriginal.FJpegStream) then\n  begin\n    FJpegStreamBefore := TMemoryStream.Create;\n    AFromOriginal.FJpegStream.Position:= 0;\n    FJpegStreamBefore.CopyFrom(AFromOriginal.FJpegStream, AFromOriginal.FJpegStream.Size);\n  end;\n  FContentVersionBefore:= AFromOriginal.FContentVersion;\nend;\n\nprocedure TBGRAImageOriginalDiff.ComputeDiff(\n  AToOriginal: TBGRALayerImageOriginal);\nbegin\n  if Assigned(FImageAfter) then FImageAfter.FreeReference;\n  FImageAfter := AToOriginal.FImage.NewReference;\n  FreeAndNil(FJpegStreamAfter);\n  if Assigned(AToOriginal.FJpegStream) then\n  begin\n    FJpegStreamAfter := TMemoryStream.Create;\n    AToOriginal.FJpegStream.Position:= 0;\n    FJpegStreamAfter.CopyFrom(AToOriginal.FJpegStream, AToOriginal.FJpegStream.Size);\n  end;\n  FContentVersionAfter:= AToOriginal.FContentVersion;\nend;\n\nprocedure TBGRAImageOriginalDiff.Apply(AOriginal: TBGRALayerCustomOriginal);\nvar\n  orig: TBGRALayerImageOriginal;\nbegin\n  orig := AOriginal as TBGRALayerImageOriginal;\n  orig.FImage.FreeReference;\n  orig.FImage := FImageAfter.NewReference;\n  FreeAndNil(orig.FJpegStream);\n  if Assigned(FJpegStreamAfter) then\n  begin\n    orig.FJpegStream := TMemoryStream.Create;\n    FJpegStreamAfter.Position := 0;\n    orig.FJpegStream.CopyFrom(FJpegStreamAfter, FJpegStreamAfter.Size);\n  end;\n  orig.FContentVersion := FContentVersionAfter;\nend;\n\nprocedure TBGRAImageOriginalDiff.Unapply(AOriginal: TBGRALayerCustomOriginal);\nvar\n  orig: TBGRALayerImageOriginal;\nbegin\n  orig := AOriginal as TBGRALayerImageOriginal;\n  orig.FImage.FreeReference;\n  orig.FImage := FImageBefore.NewReference;\n  FreeAndNil(orig.FJpegStream);\n  if Assigned(FJpegStreamBefore) then\n  begin\n    orig.FJpegStream := TMemoryStream.Create;\n    FJpegStreamBefore.Position := 0;\n    orig.FJpegStream.CopyFrom(FJpegStreamBefore, FJpegStreamBefore.Size);\n  end;\n  orig.FContentVersion := FContentVersionBefore;\nend;\n\nfunction TBGRAImageOriginalDiff.CanAppend(ADiff: TBGRAOriginalDiff): boolean;\nbegin\n  result := (ADiff is TBGRAImageOriginalDiff) and\n    (TBGRAImageOriginalDiff(ADiff).FContentVersionAfter >= FContentVersionAfter);\nend;\n\nprocedure TBGRAImageOriginalDiff.Append(ADiff: TBGRAOriginalDiff);\nvar\n  next: TBGRAImageOriginalDiff;\nbegin\n  next := ADiff as TBGRAImageOriginalDiff;\n  if next.FContentVersionAfter < FContentVersionAfter then\n    raise exception.Create('Cannot append diff made before this one.');\n  FImageAfter.FreeReference;\n  FImageAfter := next.FImageAfter.NewReference;\n  FreeAndNil(FJpegStreamAfter);\n  if Assigned(next.FJpegStreamAfter) then\n  begin\n    FJpegStreamAfter := TMemoryStream.Create;\n    next.FJpegStreamAfter.Position:= 0;\n    FJpegStreamAfter.CopyFrom(next.FJpegStreamAfter, next.FJpegStreamAfter.Size);\n  end;\n  FContentVersionAfter:= next.FContentVersionAfter;\nend;\n\nfunction TBGRAImageOriginalDiff.IsIdentity: boolean;\nbegin\n  result := FImageBefore.Equals(FImageAfter) and\n    ( ((FJpegStreamBefore=nil) and (FJpegStreamAfter=nil)) or\n      (Assigned(FJpegStreamBefore) and Assigned(FJpegStreamAfter) and\n       (FJpegStreamBefore.Size = FJpegStreamAfter.Size) and\n       CompareMem(FJpegStreamBefore.Memory,FJpegStreamBefore.Memory,FJpegStreamBefore.Size)) );\n\nend;\n\ndestructor TBGRAImageOriginalDiff.Destroy;\nbegin\n  FImageBefore.FreeReference;\n  FImageAfter.FreeReference;\n  FJpegStreamBefore.Free;\n  FJpegStreamAfter.Free;\n  inherited Destroy;\nend;\n\n{ TBGRAOriginalEditor }\n\nprocedure TBGRAOriginalEditor.SetMatrix(AValue: TAffineMatrix);\nbegin\n  if FMatrix=AValue then Exit;\n  FMatrix:=AValue;\n  FMatrixInverse := AffineMatrixInverse(FMatrix);\nend;\n\nfunction TBGRAOriginalEditor.GetMoveCursor(APointIndex: integer): TOriginalEditorCursor;\nvar\n  d: TPointF;\n  ratio: single;\nbegin\n  if (APointIndex < 0) or (APointIndex >= PointCount) then result := oecDefault else\n  if isEmptyPointF(FPoints[APointIndex].Origin) then\n  begin\n    if Assigned(FPoints[APointIndex].OnMove) then\n      result := oecMove\n    else\n      result := oecHandPoint;\n  end else\n  begin\n    d := AffineMatrixLinear(FMatrix)*(FPoints[APointIndex].Coord - FPoints[APointIndex].Origin);\n    ratio := sin(Pi/8);\n    if (d.x = 0) and (d.y = 0) then result := oecMove else\n    if abs(d.x)*ratio >= abs(d.y) then\n    begin\n      if d.x >= 0 then result := oecMoveE else result := oecMoveW\n    end else\n    if abs(d.y)*ratio >= abs(d.x) then\n    begin\n      if d.y >= 0 then result := oecMoveS else result := oecMoveN\n    end else\n    if (d.x > 0) and (d.y > 0) then result := oecMoveSE else\n    if (d.x < 0) and (d.y < 0) then result := oecMoveNW else\n    if (d.x > 0) and (d.y < 0) then result := oecMoveNE\n    else result := oecMoveSW;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.GetFixedShiftForButton(AShift: TShiftState;\n  ARightDown: boolean): TShiftState;\nbegin\n  result := AShift - [ssLeft,ssMiddle,ssRight];\n  if ARightDown then include(result, ssRight)\n  else include(result, ssLeft);\nend;\n\nfunction TBGRAOriginalEditor.GetPointCoord(AIndex: integer): TPointF;\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  result := FPoints[AIndex].Coord;\nend;\n\nfunction TBGRAOriginalEditor.GetIsMovingPoint: boolean;\nbegin\n  result := FPointMoving <> -1;\nend;\n\nfunction TBGRAOriginalEditor.GetPointCount: integer;\nbegin\n  result := length(FPoints);\nend;\n\nfunction TBGRAOriginalEditor.GetPointHighlighted(AIndex: integer): boolean;\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  result := FPoints[AIndex].Highlighted;\nend;\n\nprocedure TBGRAOriginalEditor.SetFocused(AValue: boolean);\nbegin\n  if FFocused=AValue then Exit;\n  FFocused:=AValue;\n  if Assigned(FOnFocusChanged) then FOnFocusChanged(self);\nend;\n\nprocedure TBGRAOriginalEditor.SetPointHighlighted(AIndex: integer;\n  AValue: boolean);\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  FPoints[AIndex].Highlighted := AValue;\nend;\n\nprocedure TBGRAOriginalEditor.SetGridActive(AValue: boolean);\nbegin\n  if FGridActive=AValue then Exit;\n  FGridActive:=AValue;\nend;\n\nprocedure TBGRAOriginalEditor.SetGridMatrix(AValue: TAffineMatrix);\nbegin\n  if FGridMatrix=AValue then Exit;\n  FGridMatrix:=AValue;\n  FGridMatrixInverse := AffineMatrixInverse(FGridMatrix);\nend;\n\nfunction TBGRAOriginalEditor.RenderPoint(ADest: TBGRABitmap; ACoord: TPointF; AAlternateColor: boolean; AHighlighted: boolean): TRect;\nconst alpha = 192;\nvar filler: TBGRAMultishapeFiller;\n  c: TBGRAPixel;\n  penScale: Single;\n  oldClip: TRect;\nbegin\n  result := GetRenderPointBounds(ACoord, AHighlighted);\n  if not isEmptyPointF(ACoord) then\n  begin\n    oldClip := ADest.ClipRect;\n    ADest.IntersectClip(result);\n    if AAlternateColor then c := BGRA(255,128,128,alpha)\n      else if AHighlighted then c := BGRA(96,170,255,alpha)\n      else c := BGRA(255,255,255,alpha);\n    if AHighlighted then\n      ADest.GradientFill(result.Left, result.Top, result.Right, result.Bottom,\n                  c, BGRAPixelTransparent,\n                  gtRadial, PointF(ACoord.x,ACoord.y), PointF(result.right,ACoord.y),\n                  dmDrawWithTransparency);\n    penScale := FPointSize / 6;\n    if penScale < 1 then penScale := 1;\n    filler := TBGRAMultishapeFiller.Create;\n    filler.AddEllipseBorder(ACoord.x,ACoord.y, FPointSize-2,FPointSize-2, 3.5*penScale, BGRA(0,0,0,alpha));\n    filler.AddEllipseBorder(ACoord.x,ACoord.y, FPointSize-2,FPointSize-2, 1*penScale, c);\n    filler.PolygonOrder:= poLastOnTop;\n    filler.Draw(ADest);\n    filler.Free;\n    ADest.ClipRect := oldClip;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.GetRenderPointBounds(ACoord: TPointF; AHighlighted: boolean): TRect;\nvar\n  r, penScale: Single;\nbegin\n  if isEmptyPointF(ACoord) then\n    result := EmptyRect\n  else\n  begin\n    penScale := FPointSize / 6;\n    if penScale < 1 then penScale := 1;\n    r := FPointSize + (penScale-1)*4;\n    if AHighlighted then r := max(r, FPointSize*2);\n    result := rect(floor(ACoord.x - r + 0.5), floor(ACoord.y - r + 0.5),\n                   ceil(ACoord.x + r + 0.5), ceil(ACoord.y + r + 0.5));\n  end;\nend;\n\nfunction TBGRAOriginalEditor.RenderArrow(ADest: TBGRABitmap; AOrigin,\n  AEndCoord: TPointF): TRect;\nconst alpha = 192;\nvar\n  pts, ptsContour: ArrayOfTPointF;\n  i: Integer;\n  rF: TRectF;\n  penScale: Single;\nbegin\n  if isEmptyPointF(AOrigin) or isEmptyPointF(AEndCoord) then\n    result := EmptyRect\n  else\n  begin\n    penScale := FPointSize / 6;\n    if penScale < 1 then penScale := 1;\n    ADest.Pen.Arrow.EndAsClassic;\n    ADest.Pen.Arrow.EndSize := PointF(FPointSize/penScale,FPointSize/penScale);\n    pts := ADest.ComputeWidePolyline([AOrigin,AEndCoord],1*penScale);\n    ADest.Pen.Arrow.EndAsNone;\n    ptsContour := ADest.ComputeWidePolygon(pts, 2*penScale);\n    ADest.FillPolyAntialias(ptsContour, BGRA(0,0,0,alpha));\n    ADest.FillPolyAntialias(pts, BGRA(255,255,255,alpha));\n    rF := RectF(AOrigin,AEndCoord);\n    for i := 0 to high(ptsContour) do\n    if not isEmptyPointF(ptsContour[i]) then\n    begin\n      if ptsContour[i].x < rF.Left then rF.Left := ptsContour[i].x;\n      if ptsContour[i].x > rF.Right then rF.Right := ptsContour[i].x;\n      if ptsContour[i].y < rF.Top then rF.Top := ptsContour[i].y;\n      if ptsContour[i].y > rF.Bottom then rF.Bottom := ptsContour[i].y;\n    end;\n    result := rect(floor(rF.Left+0.5),floor(rF.Top+0.5),ceil(rF.Right+0.5),ceil(rF.Bottom+0.5));\n  end;\nend;\n\nfunction TBGRAOriginalEditor.GetRenderArrowBounds(AOrigin, AEndCoord: TPointF): TRect;\nvar\n  penScale, margin: Single;\nbegin\n  if isEmptyPointF(AOrigin) or isEmptyPointF(AEndCoord) then\n    result := EmptyRect\n  else\n  begin\n    penScale := FPointSize / 6;\n    if penScale < 1 then penScale := 1;\n    margin := penScale * 1.5;\n    result := Rect(floor(AOrigin.x+0.5-margin),floor(AOrigin.y+0.5-margin),\n      ceil(AOrigin.x+0.5+margin),ceil(AOrigin.y+0.5+margin));\n    result.Union( rect(floor(AEndCoord.x+0.5-FPointSize-margin), floor(AEndCoord.y+0.5-FPointSize-margin),\n                      ceil(AEndCoord.x+0.5+FPointSize+margin), ceil(AEndCoord.y+0.5+FPointSize+margin)) );\n  end;\nend;\n\nfunction TBGRAOriginalEditor.RenderPolygon(ADest: TBGRABitmap;\n  ACoords: array of TPointF; AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle; ABackColor: TBGRAPixel): TRect;\nvar\n  dashLen: integer;\n  i: integer;\n  ptsF: array of TPointF;\n  pts1,pts2: array of TPoint;\nbegin\n  dashLen := round(PointSize/2);\n  if dashLen < 1 then dashLen := 1;\n\n  setlength(pts1, length(ACoords));\n  for i := 0 to high(ACoords) do\n    pts1[i] := ACoords[i].Round;\n\n  setlength(ptsF, length(pts1));\n  for i := 0 to high(pts1) do\n    ptsF[i] := PointF(pts1[i]);\n\n  if ABackColor.alpha <> 0 then\n    ADest.FillPolyAntialias(ptsF, ABackColor);\n\n  case AStyle of\n  opsDash, opsDashWithShadow:\n    begin\n      if AStyle = opsDashWithShadow then\n      begin\n        //shadow\n        setlength(pts2,length(pts1));\n        for i := 0 to high(pts1) do\n          if not isEmptyPoint(pts1[i]) then\n            pts2[i] := Point(pts1[i].x+1,pts1[i].y+1)\n          else pts2[i] := EmptyPoint;\n        if AClosed then\n          ADest.DrawPolygonAntialias(pts2, BGRA(0,0,0,96))\n        else\n          ADest.DrawPolyLineAntialias(pts2, BGRA(0,0,0,96), true);\n        pts2:= nil;\n      end;\n\n      //dotted line\n      if AClosed then\n        ADest.DrawPolygonAntialias(pts1, CSSIvory,BGRA(70,70,50),dashLen)\n      else\n        ADest.DrawPolyLineAntialias(pts1, CSSIvory,BGRA(70,70,50),dashLen, true);\n    end;\n  opsSolid:\n    begin\n      ADest.JoinStyle:= pjsRound;\n      ADest.LineCap:= pecRound;\n      //black outline\n      if AClosed then\n        ADest.DrawPolygonAntialias(ptsF, BGRA(0,0,0,192), 3)\n      else\n        ADest.DrawPolyLineAntialias(ptsF, BGRA(0,0,0,192), 3);\n\n      if AClosed then\n        ADest.DrawPolygonAntialias(pts1, CSSIvory)\n      else\n        ADest.DrawPolyLineAntialias(pts1, CSSIvory, true);\n    end;\n  end;\n\n  result := GetRenderPolygonBounds(ACoords);\nend;\n\nfunction TBGRAOriginalEditor.GetRenderPolygonBounds(ACoords: array of TPointF): TRect;\nvar\n  first: Boolean;\n  rF: TRectF;\n  i: Integer;\nbegin\n  first:= true;\n  rF:= EmptyRectF;\n  for i := 0 to high(ACoords) do\n    if not isEmptyPointF(ACoords[i]) then\n    begin\n      if first then\n      begin\n        rF := RectF(Acoords[i],ACoords[i]);\n        first:= false;\n      end else\n      begin\n        if ACoords[i].x < rF.Left then rF.Left := ACoords[i].x;\n        if ACoords[i].x > rF.Right then rF.Right := ACoords[i].x;\n        if ACoords[i].y < rF.Top then rF.Top := ACoords[i].y;\n        if ACoords[i].y > rF.Bottom then rF.Bottom := ACoords[i].y;\n      end;\n    end;\n  if not first then\n    result := rect(floor(rF.Left-0.5),floor(rF.Top-0.5),ceil(rF.Right+1.5),ceil(rF.Bottom+1.5))\n  else\n    result := EmptyRect;\nend;\n\nconstructor TBGRAOriginalEditor.Create;\nbegin\n  FPointSize:= 6;\n  FMatrix := AffineMatrixIdentity;\n  FMatrixInverse := AffineMatrixIdentity;\n  FGridMatrix := AffineMatrixIdentity;\n  FGridMatrixInverse := AffineMatrixIdentity;\n  FGridActive:= false;\n  FPointMoving:= -1;\n  FStartMoveHandlers := TStartMoveHandlers.Create;\n  FCurHoverPoint:= -1;\n  FHoverPointHandlers := THoverPointHandlers.Create;\n  FClickPointHandlers := TClickPointHandlers.Create;\n  FLastClickTime := Now;\n  FLastClickPos := EmptyPointF;\n  FDoubleClickTime := {$IFDEF BGRABITMAP_USE_LCL}GetDoubleClickTime()\n                      {$ELSE}500{$ENDIF}/(86400*1000);\n  FConsecutiveClickCount := 0;\nend;\n\ndestructor TBGRAOriginalEditor.Destroy;\nbegin\n  FreeAndNil(FStartMoveHandlers);\n  FreeAndNil(FHoverPointHandlers);\n  FreeAndNil(FClickPointHandlers);\n  inherited Destroy;\nend;\n\nprocedure TBGRAOriginalEditor.Clear;\nbegin\n  FPoints := nil;\n  FPolylines := nil;\n  FStartMoveHandlers.Clear;\n  FHoverPointHandlers.Clear;\n  FClickPointHandlers.Clear;\nend;\n\nprocedure TBGRAOriginalEditor.AddStartMoveHandler(\n  AOnStartMove: TOriginalStartMovePointEvent);\nbegin\n  FStartMoveHandlers.Add(AOnStartMove);\nend;\n\nprocedure TBGRAOriginalEditor.AddClickPointHandler(\n  AOnClickPoint: TOriginalClickPointEvent);\nbegin\n  FClickPointHandlers.Add(AOnClickPoint);\nend;\n\nprocedure TBGRAOriginalEditor.AddHoverPointHandler(\n  AOnHoverPoint: TOriginalHoverPointEvent);\nbegin\n  FHoverPointHandlers.Add(AOnHoverPoint);\nend;\n\nfunction TBGRAOriginalEditor.AddPoint(const ACoord: TPointF;\n  AOnMove: TOriginalMovePointEvent; ARightButton: boolean; ASnapToPoint: integer): integer;\nbegin\n  setlength(FPoints, length(FPoints)+1);\n  result := High(FPoints);\n  with FPoints[result] do\n  begin\n    Origin := EmptyPointF;\n    Coord := ACoord;\n    OnMove := AOnMove;\n    OnAlternateMove:= nil;\n    RightButton:= ARightButton;\n    SnapToPoint:= ASnapToPoint;\n    HitBox := TAffineBox.EmptyBox;\n  end;\nend;\n\nprocedure TBGRAOriginalEditor.AddPointAlternateMove(AIndex: integer;\n  AOnAlternateMove: TOriginalMovePointEvent);\nbegin\n  if (AIndex >= 0) and (AIndex < PointCount) then\n    FPoints[AIndex].OnAlternateMove:= AOnAlternateMove;\nend;\n\nfunction TBGRAOriginalEditor.AddFixedPoint(const ACoord: TPointF;\n  ARightButton: boolean): integer;\nbegin\n  setlength(FPoints, length(FPoints)+1);\n  result := High(FPoints);\n  with FPoints[result] do\n  begin\n    Origin := EmptyPointF;\n    Coord := ACoord;\n    OnMove := nil;\n    OnAlternateMove:= nil;\n    RightButton:= ARightButton;\n    Highlighted:= false;\n    SnapToPoint:= -1;\n    HitBox := TAffineBox.EmptyBox;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.AddArrow(const AOrigin, AEndCoord: TPointF;\n  AOnMoveEnd: TOriginalMovePointEvent; ARightButton: boolean): integer;\nbegin\n  setlength(FPoints, length(FPoints)+1);\n  result := High(FPoints);\n  with FPoints[result] do\n  begin\n    Origin := AOrigin;\n    Coord := AEndCoord;\n    OnMove := AOnMoveEnd;\n    OnAlternateMove:= nil;\n    RightButton:= ARightButton;\n    Highlighted:= false;\n    SnapToPoint:= -1;\n    HitBox := TAffineBox.EmptyBox;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.AddPolyline(const ACoords: array of TPointF;\n  AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle): integer;\nbegin\n  result := AddPolyline(ACoords, AClosed, AStyle, BGRAPixelTransparent);\nend;\n\nfunction TBGRAOriginalEditor.AddPolyline(const ACoords: array of TPointF;\n  AClosed: boolean; AStyle: TBGRAOriginalPolylineStyle; ABackColor: TBGRAPixel): integer;\nvar\n  i: Integer;\nbegin\n  setlength(FPolylines, length(FPolylines)+1);\n  result := high(FPolylines);\n  setlength(FPolylines[result].Coords, length(ACoords));\n  for i := 0 to high(ACoords) do\n    FPolylines[result].Coords[i] := ACoords[i];\n  FPolylines[result].Closed:= AClosed;\n  FPolylines[result].Style := AStyle;\n  FPolylines[result].BackColor := ABackColor;\nend;\n\nprocedure TBGRAOriginalEditor.SetHitBox(AIndex: integer; AHitBox: TAffineBox);\nbegin\n  if (AIndex < 0) or (AIndex >= PointCount) then raise exception.Create('Index out of bounds');\n  FPoints[AIndex].HitBox := AHitBox;\nend;\n\nprocedure TBGRAOriginalEditor.MouseMove(Shift: TShiftState; ViewX, ViewY: single; out\n  ACursor: TOriginalEditorCursor; out AHandled: boolean);\nvar newMousePos, newCoord, snapCoord: TPointF;\n  hoverPoint, i: Integer;\n  subShift: TShiftState;\nbegin\n  AHandled := false;\n  newMousePos := ViewCoordToOriginal(PointF(ViewX,ViewY));\n  if (FPointMoving <> -1) and (FPointMoving < length(FPoints)) then\n  begin\n    newCoord := newMousePos + FPointCoordDelta;\n    if GridActive then newCoord := SnapToGrid(newCoord, false);\n    if FPoints[FPointMoving].SnapToPoint <> -1 then\n    begin\n      snapCoord := FPoints[FPoints[FPointMoving].SnapToPoint].Coord;\n      if VectLen(AffineMatrixLinear(FMatrix)*(snapCoord - newCoord)) < FPointSize then\n        newCoord := snapCoord;\n    end;\n    if newCoord <> FPoints[FPointMoving].Coord then\n    begin\n      FPointWasMoved:= true;\n      subShift := GetFixedShiftForButton(Shift, FMovingRightButton);\n      if (FMovingRightButton xor FPoints[FPointMoving].RightButton) and\n        Assigned(FPoints[FPointMoving].OnAlternateMove) then\n        FPoints[FPointMoving].OnAlternateMove(self, FPoints[FPointMoving].Coord, newCoord, subShift)\n      else\n        FPoints[FPointMoving].OnMove(self, FPoints[FPointMoving].Coord, newCoord, subShift);\n      if (FPointMoving >= 0) and (FPointMoving < length(FPoints)) then\n        FPoints[FPointMoving].Coord := newCoord\n      else\n        FPointMoving := -1;\n    end;\n    ACursor := GetMoveCursor(FPointMoving);\n    AHandled:= true;\n  end else\n  begin\n    hoverPoint := GetPointAt(newMousePos, false);\n    if hoverPoint <> -1 then\n      ACursor := GetMoveCursor(hoverPoint)\n    else\n      ACursor:= oecDefault;\n    if hoverPoint <> FCurHoverPoint then\n    begin\n      FCurHoverPoint:= hoverPoint;\n      for i := 0 to FHoverPointHandlers.Count-1 do\n        FHoverPointHandlers[i](self, FCurHoverPoint);\n    end;\n  end;\n  FPrevMousePos:= newMousePos;\nend;\n\nprocedure TBGRAOriginalEditor.MouseDown(RightButton: boolean;\n  Shift: TShiftState; ViewX, ViewY: single; out ACursor: TOriginalEditorCursor; out\n  AHandled: boolean);\nvar\n  i, clickedPoint: Integer;\n  subShift: TShiftState;\n  curTime: TDateTime;\n  curPos: TPointF;\nbegin\n  curTime := Now;\n  curPos := PointF(ViewX,ViewY);\n  if (curTime - FLastClickTime < FDoubleClickTime) and\n     not IsEmptyPointF(FLastClickPos) and\n     (VectLen(curPos - FLastClickPos) <= PointSize/2) then\n       inc(FConsecutiveClickCount)\n       else FConsecutiveClickCount:= 1;\n  FLastClickPos := curPos;\n  FLastClickTime:= curTime;\n  AHandled:= false;\n  FPrevMousePos:= ViewCoordToOriginal(PointF(ViewX,ViewY));\n  if FPointMoving = -1 then\n  begin\n    clickedPoint := GetPointAt(FPrevMousePos, RightButton);\n    if clickedPoint <> -1 then\n    begin\n      subShift := GetFixedShiftForButton(Shift, RightButton);\n      if Assigned(FPoints[clickedPoint].OnMove) then\n      begin\n        FPointMoving:= clickedPoint;\n        FPointWasMoved:= false;\n        FMovingRightButton:= RightButton;\n        FPointCoordDelta := FPoints[FPointMoving].Coord - FPrevMousePos;\n        for i := 0 to FStartMoveHandlers.Count-1 do\n          FStartMoveHandlers[i](self, FPointMoving, subShift);\n      end else\n      begin\n        for i := 0 to FClickPointHandlers.Count-1 do\n          FClickPointHandlers[i](self, clickedPoint, subShift);\n      end;\n      AHandled:= true;\n    end;\n  end;\n  if FPointMoving <> -1 then\n  begin\n    ACursor := GetMoveCursor(FPointMoving);\n    AHandled:= true;\n  end\n  else\n    ACursor := oecDefault;\nend;\n\nprocedure TBGRAOriginalEditor.MouseUp(RightButton: boolean; Shift: TShiftState;\n  ViewX, ViewY: single; out ACursor: TOriginalEditorCursor; out AHandled: boolean);\nvar\n  i: Integer;\n  subShift: TShiftState;\nbegin\n  AHandled:= false;\n  if (RightButton = FMovingRightButton) and (FPointMoving <> -1) then\n  begin\n    if not FPointWasMoved then\n    begin\n      subShift := GetFixedShiftForButton(Shift, RightButton);\n      for i := 0 to FClickPointHandlers.Count-1 do\n        FClickPointHandlers[i](self, FPointMoving, subShift);\n    end;\n    FPointMoving:= -1;\n    AHandled:= true;\n  end;\n  ACursor := oecDefault;\nend;\n\nprocedure TBGRAOriginalEditor.KeyDown(Shift: TShiftState; Key: TSpecialKey; out\n  AHandled: boolean);\nbegin\n  AHandled := false;\nend;\n\nprocedure TBGRAOriginalEditor.KeyUp(Shift: TShiftState; Key: TSpecialKey; out\n  AHandled: boolean);\nbegin\n  AHandled := false;\nend;\n\nprocedure TBGRAOriginalEditor.KeyPress(UTF8Key: string; out AHandled: boolean);\nbegin\n  AHandled := false;\nend;\n\nfunction TBGRAOriginalEditor.GetPointAt(const ACoord: TPointF; ARightButton: boolean): integer;\nvar v: TPointF;\n  curDist,newDist: single;\n  i: Integer;\n  transfCoord: TPointF;\nbegin\n  if ARightButton then\n    curDist := sqr(2.25*FPointSize)\n  else\n    curDist := sqr(1.25*FPointSize);\n  result := -1;\n  transfCoord:= Matrix*ACoord;\n\n  for i := 0 to high(FPoints) do\n  if FPoints[i].RightButton = ARightButton then\n  begin\n    v := Matrix*FPoints[i].Coord - transfCoord;\n    newDist := v**v;\n    if newDist <= curDist then\n    begin\n      curDist:= newDist;\n      result := i;\n    end;\n  end;\n  if result <> -1 then exit;\n\n  if not ARightButton then\n    curDist := sqr(2.25*FPointSize)\n  else\n    curDist := sqr(1.25*FPointSize);\n  for i := 0 to high(FPoints) do\n  if FPoints[i].RightButton <> ARightButton then\n  begin\n    v := Matrix*FPoints[i].Coord - transfCoord;\n    newDist := v**v;\n    if newDist <= curDist then\n    begin\n      curDist:= newDist;\n      result := i;\n    end;\n  end;\n\n  for i := 0 to high(FPoints) do\n  if (FPoints[i].RightButton = ARightButton)\n    and FPoints[i].HitBox.Contains(ACoord) then exit(i);\n\n  for i := 0 to high(FPoints) do\n  if (FPoints[i].RightButton <> ARightButton)\n    and FPoints[i].HitBox.Contains(ACoord) then exit(i);\nend;\n\nfunction TBGRAOriginalEditor.Render(ADest: TBGRABitmap; const ALayoutRect: TRect): TRect;\nvar\n  i,j: Integer;\n  elemRect: TRect;\n  ptsF: array of TPointF;\nbegin\n  result := EmptyRect;\n  for i := 0 to high(FPoints) do\n  begin\n    if isEmptyPointF(FPoints[i].Origin) then\n      elemRect := RenderPoint(ADest, OriginalCoordToView(FPoints[i].Coord), FPoints[i].RightButton, FPoints[i].Highlighted)\n    else\n      elemRect := RenderArrow(ADest, OriginalCoordToView(FPoints[i].Origin), OriginalCoordToView(FPoints[i].Coord));\n    if not elemRect.IsEmpty then\n    begin\n      if result.IsEmpty then\n        result := elemRect\n      else\n        result.Union(elemRect);\n    end;\n  end;\n  for i := 0 to high(FPolylines) do\n  begin\n    with FPolylines[i] do\n    begin\n      setlength(ptsF, length(Coords));\n      for j := 0 to high(Coords) do\n        if IsEmptyPointF(Coords[j]) then\n          ptsF[j] := EmptyPointF\n        else\n          ptsF[j] := OriginalCoordToView(Coords[j]);\n      elemRect := RenderPolygon(ADest, ptsF, Closed, Style, BackColor);\n    end;\n    if not elemRect.IsEmpty then\n    begin\n      if result.IsEmpty then\n        result := elemRect\n      else\n        result.Union(elemRect);\n    end;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.GetRenderBounds(const ALayoutRect: TRect): TRect;\nvar\n  i,j: Integer;\n  elemRect: TRect;\n  ptsF: array of TPointF;\nbegin\n  result := EmptyRect;\n  for i := 0 to high(FPoints) do\n  begin\n    if isEmptyPointF(FPoints[i].Origin) then\n      elemRect := GetRenderPointBounds(OriginalCoordToView(FPoints[i].Coord), FPoints[i].Highlighted)\n    else\n      elemRect := GetRenderArrowBounds(OriginalCoordToView(FPoints[i].Origin), OriginalCoordToView(FPoints[i].Coord));\n    if not elemRect.IsEmpty then\n    begin\n      if result.IsEmpty then\n        result := elemRect\n      else\n        result.Union(elemRect);\n    end;\n  end;\n  for i := 0 to high(FPolylines) do\n  begin\n    with FPolylines[i] do\n    begin\n      setlength(ptsF, length(Coords));\n      for j := 0 to high(Coords) do\n        if IsEmptyPointF(Coords[j]) then\n          ptsF[j] := EmptyPointF\n        else\n          ptsF[j] := OriginalCoordToView(Coords[j]);\n      elemRect := GetRenderPolygonBounds(ptsF);\n    end;\n    if not elemRect.IsEmpty then\n    begin\n      if result.IsEmpty then\n        result := elemRect\n      else\n        result.Union(elemRect);\n    end;\n  end;\nend;\n\nfunction TBGRAOriginalEditor.SnapToGrid(const ACoord: TPointF;\n  AIsViewCoord: boolean): TPointF;\nvar\n  gridCoord: TPointF;\nbegin\n  if AIsViewCoord then\n    gridCoord := FGridMatrixInverse*ViewCoordToOriginal(ACoord)\n  else\n    gridCoord := FGridMatrixInverse*ACoord;\n  gridCoord.x := round(gridCoord.x);\n  gridCoord.y := round(gridCoord.y);\n  result := FGridMatrix*gridCoord;\n  if AIsViewCoord then\n    result := OriginalCoordToView(result);\nend;\n\nfunction TBGRAOriginalEditor.OriginalCoordToView(const AImageCoord: TPointF): TPointF;\nbegin\n  result := FMatrix*AImageCoord;\nend;\n\nfunction TBGRAOriginalEditor.ViewCoordToOriginal(const AViewCoord: TPointF): TPointF;\nbegin\n  result := FMatrixInverse*AViewCoord;\nend;\n\n{ TBGRAMemOriginalStorage }\n\nfunction TBGRAMemOriginalStorage.GetRawString(AName: utf8string): RawByteString;\nvar\n  idx: Integer;\nbegin\n  if pos('.',AName)<>0 then exit('');\n  idx := FMemDir.IndexOf(AName,'',true);\n  if idx = -1 then\n    result := ''\n  else if FMemDir.IsDirectory[idx] then\n    raise exception.Create('This name refers to an object and not an attribute')\n  else\n    result := FMemDir.RawString[idx];\nend;\n\nprocedure TBGRAMemOriginalStorage.SetRawString(AName: utf8string;\n  AValue: RawByteString);\nvar\n  idx: Integer;\nbegin\n  if pos('.',AName)<>0 then\n    raise exception.Create('Attribute name cannot contain \".\"');\n  idx := FMemDir.IndexOf(AName,'',true);\n  if idx = -1 then\n    FMemDir.Add(AName,'',AValue)\n  else if FMemDir.IsDirectory[idx] then\n    raise exception.Create('This name refers to an existing object and so cannot be an attribute')\n  else\n    FMemDir.RawString[idx] := AValue;\nend;\n\nfunction TBGRAMemOriginalStorage.GetEmpty: boolean;\nbegin\n  result := FMemDir.Count = 0;\nend;\n\ndestructor TBGRAMemOriginalStorage.Destroy;\nbegin\n  if FMemDirOwned then FreeAndNil(FMemDir);\n  inherited Destroy;\nend;\n\nconstructor TBGRAMemOriginalStorage.Create;\nbegin\n  inherited Create;\n  FMemDir := TMemDirectory.Create;\n  FMemDirOwned:= true;\nend;\n\nconstructor TBGRAMemOriginalStorage.Create(AMemDir: TMemDirectory; AMemDirOwned: boolean = false);\nbegin\n  inherited Create;\n  FMemDir := AMemDir;\n  FMemDirOwned:= AMemDirOwned;\nend;\n\nfunction TBGRAMemOriginalStorage.Equals(Obj: TObject): boolean;\nvar\n  other: TBGRAMemOriginalStorage;\nbegin\n  if not (Obj is TBGRAMemOriginalStorage) then exit(false);\n  other := TBGRAMemOriginalStorage(obj);\n  result := FMemDir.Equals(other.FMemDir);\nend;\n\nfunction TBGRAMemOriginalStorage.Duplicate: TBGRACustomOriginalStorage;\nbegin\n  result := TBGRAMemOriginalStorage.Create;\n  CopyTo(TBGRAMemOriginalStorage(result).FMemDir);\nend;\n\nprocedure TBGRAMemOriginalStorage.RemoveAttribute(AName: utf8string);\nvar\n  idx: Integer;\nbegin\n  if pos('.',AName)<>0 then exit;\n  idx := FMemDir.IndexOf(AName,'',true);\n  if idx = -1 then exit\n  else if FMemDir.IsDirectory[idx] then\n    raise exception.Create('This name refers to an object and not an attribute')\n  else\n    FMemDir.Delete(idx);\nend;\n\nfunction TBGRAMemOriginalStorage.HasAttribute(AName: utf8string): boolean;\nvar\n  idx: Integer;\nbegin\n  if pos('.',AName)<>0 then exit(false);\n  idx := FMemDir.IndexOf(AName,'',true);\n  if idx = -1 then exit(false)\n  else exit(not FMemDir.IsDirectory[idx]);\nend;\n\nprocedure TBGRAMemOriginalStorage.RemoveObject(AName: utf8string);\nvar\n  idx: Integer;\nbegin\n  idx := FMemDir.IndexOf(EntryFilename(AName));\n  if idx = -1 then exit\n  else if not FMemDir.IsDirectory[idx] then\n    raise exception.Create('This name refers to an attribute and not an object')\n  else\n    FMemDir.Delete(idx);\nend;\n\nfunction TBGRAMemOriginalStorage.CreateObject(AName: utf8string): TBGRACustomOriginalStorage;\nvar\n  dirIdx: Integer;\nbegin\n  if pos('.',AName)<>0 then\n    raise exception.Create('An object cannot contain \".\"');\n  RemoveObject(AName);\n  dirIdx := FMemDir.AddDirectory(AName,'');\n  result := TBGRAMemOriginalStorage.Create(FMemDir.Directory[dirIdx]);\nend;\n\nfunction TBGRAMemOriginalStorage.OpenObject(AName: utf8string): TBGRACustomOriginalStorage;\nvar\n  dir: TMemDirectory;\nbegin\n  if pos('.',AName)<>0 then\n    raise exception.Create('An object cannot contain \".\"');\n  dir := FMemDir.FindPath(AName);\n  if dir = nil then\n    result := nil\n  else\n    result := TBGRAMemOriginalStorage.Create(dir);\nend;\n\nfunction TBGRAMemOriginalStorage.ObjectExists(AName: utf8string): boolean;\nvar\n  dir: TMemDirectory;\nbegin\n  if pos('.',AName)<>0 then exit(false);\n  dir := FMemDir.FindPath(AName);\n  result:= Assigned(dir);\nend;\n\nprocedure TBGRAMemOriginalStorage.EnumerateObjects(AList: TStringList);\nvar\n  i: Integer;\nbegin\n  for i := 0 to FMemDir.Count-1 do\n    if FMemDir.IsDirectory[i] then\n      AList.Add(FMemDir.Entry[i].Name);\nend;\n\nprocedure TBGRAMemOriginalStorage.EnumerateFiles(AList: TStringList);\nvar\n  i: Integer;\nbegin\n  for i := 0 to FMemDir.Count-1 do\n    if not FMemDir.IsDirectory[i] then\n      AList.Add(FMemDir.Entry[i].Name);\nend;\n\nprocedure TBGRAMemOriginalStorage.RemoveFile(AName: utf8string);\nvar\n  idx: Integer;\nbegin\n  idx := FMemDir.IndexOf(EntryFilename(AName));\n  if idx = -1 then exit\n  else if FMemDir.IsDirectory[idx] then\n    raise exception.Create('This name refers to an object and not a file')\n  else\n    FMemDir.Delete(idx);\nend;\n\nfunction TBGRAMemOriginalStorage.GetFileStream(AName: UTF8String): TStream;\nvar\n  entryId: Integer;\nbegin\n  entryId := FMemDir.IndexOf(EntryFilename(AName));\n  if (entryId <> -1) and not FMemDir.IsDirectory[entryId] then\n  begin\n    with FMemDir.Entry[entryId] do\n      result := GetStream;\n  end\n  else\n    result := nil;\nend;\n\nfunction TBGRAMemOriginalStorage.ReadBitmap(AName: UTF8String;\n  ADest: TCustomUniversalBitmap): boolean;\nvar\n  entryId: Integer;\n  stream: TStream;\nbegin\n  entryId := FMemDir.IndexOf(EntryFilename(AName));\n  if (entryId <> -1) and not FMemDir.IsDirectory[entryId] then\n  begin\n    if FMemDir.IsEntryCompressed[entryId] then\n    begin\n      stream := TMemoryStream.Create;\n      try\n        with FMemDir.Entry[entryId] do\n        begin\n          if CopyTo(stream) <> FileSize then\n            result := false\n          else\n          begin\n            stream.Position:= 0;\n            ADest.LoadFromStream(stream);\n            result := true;\n          end;\n        end;\n      finally\n        stream.Free;\n      end;\n    end else\n    with FMemDir.Entry[entryId] do\n    begin\n      stream := GetStream;\n      stream.Position:= 0;\n      ADest.LoadFromStream(stream);\n      result := true;\n    end;\n  end\n  else\n    result := false;\nend;\n\nfunction TBGRAMemOriginalStorage.ReadFile(AName: UTF8String; ADest: TStream): boolean;\nvar\n  entryId: Integer;\nbegin\n  entryId := FMemDir.IndexOf(EntryFilename(AName));\n  if (entryId <> -1) and not FMemDir.IsDirectory[entryId] then\n  begin\n    with FMemDir.Entry[entryId] do\n      result := CopyTo(ADest) = FileSize\n  end\n  else\n    result := false;\nend;\n\nprocedure TBGRAMemOriginalStorage.WriteFile(AName: UTF8String; ASource: TStream; ACompress: boolean; AOwnStream: boolean);\nvar\n  idxEntry: Integer;\nbegin\n  idxEntry := FMemDir.Add(EntryFilename(AName), ASource, true, AOwnStream);\n  if ACompress then FMemDir.IsEntryCompressed[idxEntry] := true;\nend;\n\nfunction TBGRAMemOriginalStorage.FileExists(AName: UTF8String): boolean;\nvar\n  entryId: Integer;\nbegin\n  entryId := FMemDir.IndexOf(EntryFilename(AName));\n  result := (entryId <> -1) and not FMemDir.IsDirectory[entryId];\nend;\n\nprocedure TBGRAMemOriginalStorage.SaveToStream(AStream: TStream);\nbegin\n  FMemDir.SaveToStream(AStream);\nend;\n\nprocedure TBGRAMemOriginalStorage.LoadFromStream(AStream: TStream);\nbegin\n  FMemDir.LoadFromStream(AStream);\nend;\n\nprocedure TBGRAMemOriginalStorage.LoadFromResource(AFilename: string);\nbegin\n  FMemDir.LoadFromResource(AFilename);\nend;\n\nprocedure TBGRAMemOriginalStorage.CopyTo(AMemDir: TMemDirectory);\nbegin\n  FMemDir.CopyTo(AMemDir, true);\nend;\n\n{ TBGRACustomOriginalStorage }\n\nfunction TBGRACustomOriginalStorage.GetColor(AName: UTF8String): TBGRAPixel;\nbegin\n  result := StrToBGRA(RawString[AName], BGRAPixelTransparent);\nend;\n\nprocedure TBGRACustomOriginalStorage.SetColor(AName: UTF8String;\n  AValue: TBGRAPixel);\nbegin\n  RawString[AName] := LowerCase(BGRAToStr(AValue, CSSColors));\nend;\n\nfunction TBGRACustomOriginalStorage.GetDelimiter: char;\nbegin\n  if FFormats.DecimalSeparator = ',' then\n    result := ';' else result := ',';\nend;\n\nfunction TBGRACustomOriginalStorage.GetRectF(AName: utf8string): TRectF;\nvar\n  a: array of Single;\nbegin\n  a := FloatArray[AName];\n  if length(a)<4 then\n    result := EmptyRectF\n  else\n  begin\n    result.Left := a[0];\n    result.Top := a[1];\n    result.Right := a[2];\n    result.Bottom := a[3];\n  end;\nend;\n\nprocedure TBGRACustomOriginalStorage.SetRectF(AName: utf8string; AValue: TRectF);\nvar\n  a: array of Single;\nbegin\n  setlength(a,4);\n  a[0] := AValue.Left;\n  a[1] := AValue.Top;\n  a[2] := AValue.Right;\n  a[3] := AValue.Bottom;\n  FloatArray[AName] := a;\nend;\n\nfunction TBGRACustomOriginalStorage.GetAffineMatrix(AName: utf8string): TAffineMatrix;\nvar\n  stream: TMemoryStream;\nbegin\n  stream:= TMemoryStream.Create;\n  if ReadFile(AName, stream) and (stream.Size >= sizeof(result)) then\n  begin\n    stream.Position:= 0;\n    {$PUSH}{$HINTS OFF}stream.ReadBuffer({%H-}result, sizeof({%H-}result));{$POP}\n    LongWord(result[1,1]) := NtoLE(LongWord(result[1,1]));\n    LongWord(result[2,1]) := NtoLE(LongWord(result[2,1]));\n    LongWord(result[1,2]) := NtoLE(LongWord(result[1,2]));\n    LongWord(result[2,2]) := NtoLE(LongWord(result[2,2]));\n    LongWord(result[1,3]) := NtoLE(LongWord(result[1,3]));\n    LongWord(result[2,3]) := NtoLE(LongWord(result[2,3]));\n  end else\n    result := AffineMatrixIdentity;\n  stream.Free;\nend;\n\nprocedure TBGRACustomOriginalStorage.SetAffineMatrix(AName: utf8string;\n  const AValue: TAffineMatrix);\nvar\n  stream: TMemoryStream;\nbegin\n  stream:= TMemoryStream.Create;\n  stream.WriteBuffer(AValue, sizeof(AValue));\n  WriteFile(AName,stream,false,true);\nend;\n\nfunction TBGRACustomOriginalStorage.GetRect(AName: utf8string): TRect;\nvar\n  rF: TRectF;\nbegin\n  rF := RectangleF[AName];\n  result := rect(round(rF.Left),round(rF.Top),round(rF.Right),round(rF.Bottom));\nend;\n\nprocedure TBGRACustomOriginalStorage.SetRect(AName: utf8string; AValue: TRect);\nvar\n  rF: TRectF;\nbegin\n  rF := rectF(AValue.Left,AValue.Top,AValue.Right,AValue.Bottom);\n  RectangleF[AName] := rF;\nend;\n\nfunction TBGRACustomOriginalStorage.GetBoolDef(AName: utf8string;\n  ADefault: boolean): boolean;\nbegin\n  if RawString[AName] = 'true' then result := true\n  else if RawString[AName] = 'false' then result := false\n  else result := ADefault;\nend;\n\nfunction TBGRACustomOriginalStorage.GetBool(AName: utf8string): boolean;\nbegin\n  result := GetBoolDef(AName, false);\nend;\n\nfunction TBGRACustomOriginalStorage.GetSingleArray(AName: utf8string): ArrayOfSingle;\nvar\n  textVal: String;\n  values: TStringList;\n  i: Integer;\nbegin\n  textVal := Trim(RawString[AName]);\n  if textVal = '' then exit(nil);\n  values := TStringList.Create;\n  values.StrictDelimiter := true;\n  values.Delimiter:= GetDelimiter;\n  values.DelimitedText:= textVal;\n  setlength(result, values.Count);\n  for i := 0 to high(result) do\n    if CompareText(values[i],'none')=0 then\n      result[i] := EmptySingle\n    else\n      result[i] := StrToFloatDef(values[i], 0, FFormats);\n  values.Free;\nend;\n\nfunction TBGRACustomOriginalStorage.GetColorArray(AName: UTF8String\n  ): ArrayOfTBGRAPixel;\nvar colorNames: TStringList;\n  i: Integer;\nbegin\n  colorNames := TStringList.Create;\n  colorNames.StrictDelimiter := true;\n  colorNames.Delimiter:= GetDelimiter;\n  colorNames.DelimitedText:= RawString[AName];\n  setlength(result, colorNames.Count);\n  for i := 0 to high(result) do\n    result[i] := StrToBGRA(colorNames[i],BGRAPixelTransparent);\n  colorNames.Free;\nend;\n\nfunction TBGRACustomOriginalStorage.GetIntegerDef(AName: utf8string;\n  ADefault: integer): integer;\nbegin\n  result := StrToIntDef(RawString[AName],ADefault);\nend;\n\nfunction TBGRACustomOriginalStorage.GetSingleDef(AName: utf8string;\n  ADefault: single): single;\nbegin\n  result := StrToFloatDef(RawString[AName], ADefault, FFormats);\nend;\n\nprocedure TBGRACustomOriginalStorage.SetBool(AName: utf8string; AValue: boolean);\nbegin\n  RawString[AName] := BoolToStr(AValue,'true','false');\nend;\n\nprocedure TBGRACustomOriginalStorage.SetSingleArray(AName: utf8string;\n  AValue: ArrayOfSingle);\nvar\n  values: TStringList;\n  i: Integer;\nbegin\n  values:= TStringList.Create;\n  values.StrictDelimiter:= true;\n  values.Delimiter:= GetDelimiter;\n  for i := 0 to high(AValue) do\n    if AValue[i] = EmptySingle then\n      values.Add('none')\n    else\n      values.Add(FloatToStr(AValue[i], FFormats));\n  RawString[AName] := values.DelimitedText;\n  values.Free;\nend;\n\nprocedure TBGRACustomOriginalStorage.SetColorArray(AName: UTF8String;\n  AValue: ArrayOfTBGRAPixel);\nvar colorNames: TStringList;\n  i: Integer;\nbegin\n  colorNames := TStringList.Create;\n  colorNames.StrictDelimiter := true;\n  colorNames.Delimiter:= GetDelimiter;\n  for i := 0 to high(AValue) do\n    colorNames.Add(LowerCase(BGRAToStr(AValue[i], CSSColors)));\n  RawString[AName] := colorNames.DelimitedText;\n  colorNames.Free;\nend;\n\nfunction TBGRACustomOriginalStorage.GetInteger(AName: utf8string): integer;\nbegin\n  result := GetIntegerDef(AName,0);\nend;\n\nfunction TBGRACustomOriginalStorage.GetPointF(AName: utf8string): TPointF;\nvar\n  s: String;\n  posComma: integer;\nbegin\n  s := RawString[AName];\n  posComma := pos(GetDelimiter,s);\n  if posComma = 0 then\n    exit(EmptyPointF);\n\n  result.x := StrToFloat(copy(s,1,posComma-1), FFormats);\n  result.y := StrToFloat(copy(s,posComma+1,length(s)-posComma), FFormats);\nend;\n\nfunction TBGRACustomOriginalStorage.GetSingle(AName: utf8string): single;\nbegin\n  result := GetSingleDef(AName, EmptySingle);\nend;\n\nprocedure TBGRACustomOriginalStorage.SetInteger(AName: utf8string;\n  AValue: integer);\nbegin\n  RawString[AName] := IntToStr(AValue);\nend;\n\nprocedure TBGRACustomOriginalStorage.SetPointF(AName: utf8string;\n  AValue: TPointF);\nbegin\n  if isEmptyPointF(AValue) then RemoveAttribute(AName)\n  else RawString[AName] := FloatToStrF(AValue.x, ffGeneral,7,3, FFormats)+GetDelimiter+FloatToStrF(AValue.y, ffGeneral,7,3, FFormats);\nend;\n\nprocedure TBGRACustomOriginalStorage.SetSingle(AName: utf8string; AValue: single);\nbegin\n  if AValue = EmptySingle then RemoveAttribute(AName)\n  else RawString[AName] := FloatToStrF(AValue, ffGeneral,7,3, FFormats);\nend;\n\nconstructor TBGRACustomOriginalStorage.Create;\nbegin\n  FFormats := DefaultFormatSettings;\n  FFormats.DecimalSeparator := '.';\nend;\n\nfunction TBGRACustomOriginalStorage.FloatEquals(AName: utf8string;\n  AValue: single): boolean;\nvar\n  curValue: Single;\nbegin\n  curValue := Float[AName];\n  if curValue = EmptySingle then\n    result := (AValue = EmptySingle) else\n  if AValue = EmptySingle then\n    result := false else\n    result := (FloatToStrF(AValue, ffGeneral,7,3, FFormats) =\n              FloatToStrF(curValue, ffGeneral,7,3, FFormats));\nend;\n\nfunction TBGRACustomOriginalStorage.PointFEquals(AName: utf8string;\n  const AValue: TPointF): boolean;\nvar\n  curValue: TPointF;\nbegin\n  curValue := PointF[AName];\n  if isEmptyPointF(curValue) then\n    result := isEmptyPointF(AValue) else\n  if isEmptyPointF(AValue) then\n    result := False else\n    result := (FloatToStrF(AValue.x, ffGeneral,7,3, FFormats) =\n              FloatToStrF(curValue.x, ffGeneral,7,3, FFormats)) and\n              (FloatToStrF(AValue.y, ffGeneral,7,3, FFormats) =\n              FloatToStrF(curValue.y, ffGeneral,7,3, FFormats));\nend;\n\nfunction TBGRACustomOriginalStorage.AffineMatrixEquals(AName: utf8string;\n  const AValue: TAffineMatrix): boolean;\nbegin\n  result := (AffineMatrix[AName] = AValue);\nend;\n\n{ TBGRALayerCustomOriginal }\n\nprocedure TBGRALayerCustomOriginal.SetOnChange(AValue: TOriginalChangeEvent);\nbegin\n  if FOnChange=AValue then Exit;\n  FOnChange:=AValue;\nend;\n\nfunction TBGRALayerCustomOriginal.GetDiffExpected: boolean;\nbegin\n  result := Assigned(FOnChange);\nend;\n\nprocedure TBGRALayerCustomOriginal.SetRenderStorage(AValue: TBGRACustomOriginalStorage);\nbegin\n  if FRenderStorage=AValue then Exit;\n  FRenderStorage:=AValue;\nend;\n\nfunction TBGRALayerCustomOriginal.GetGuid: TGuid;\nbegin\n  result := FGuid;\nend;\n\nprocedure TBGRALayerCustomOriginal.SetGuid(AValue: TGuid);\nbegin\n  FGuid := AValue;\nend;\n\nprocedure TBGRALayerCustomOriginal.NotifyChange(ADiff: TBGRAOriginalDiff);\nbegin\n  if Assigned(FOnChange) then\n    FOnChange(self, nil, ADiff);\n  ADiff.Free;\nend;\n\nprocedure TBGRALayerCustomOriginal.NotifyChange(ABounds: TRectF; ADiff: TBGRAOriginalDiff);\nbegin\n  if Assigned(FOnChange) then\n    FOnChange(self, @ABounds, ADiff);\n  ADiff.Free;\nend;\n\nprocedure TBGRALayerCustomOriginal.NotifyEditorChange;\nbegin\n  if Assigned(FOnEditingChange) then\n    FOnEditingChange(self);\nend;\n\nconstructor TBGRALayerCustomOriginal.Create;\nbegin\n  FGuid := GUID_NULL;\n  FRenderStorage := nil;\nend;\n\ndestructor TBGRALayerCustomOriginal.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TBGRALayerCustomOriginal.Render(ADest: TBGRABitmap;\n  AMatrix: TAffineMatrix; ADraft: boolean);\nbegin\n  Render(ADest, Point(0,0), AMatrix, ADraft);\nend;\n\nprocedure TBGRALayerCustomOriginal.Render(ADest: TBGRABitmap;\n  ARenderOffset: TPoint; AMatrix: TAffineMatrix; ADraft: boolean);\nbegin\n  Render(ADest, AffineMatrixTranslation(ARenderOffset.X, ARenderOffset.Y)*AMatrix, ADraft);\nend;\n\nprocedure TBGRALayerCustomOriginal.ConfigureEditor(AEditor: TBGRAOriginalEditor);\nbegin\n  //nothing\nend;\n\nprocedure TBGRALayerCustomOriginal.LoadFromFile(AFilenameUTF8: string);\nvar\n  s: TFileStreamUTF8;\nbegin\n  s := TFileStreamUTF8.Create(AFilenameUTF8, fmOpenRead, fmShareDenyWrite);\n  try\n    LoadFromStream(s);\n  finally\n    s.Free;\n  end;\nend;\n\nprocedure TBGRALayerCustomOriginal.LoadFromStream(AStream: TStream);\nvar storage: TBGRAMemOriginalStorage;\n  memDir: TMemDirectory;\nbegin\n  memDir := TMemDirectory.Create;\n  storage := nil;\n  try\n    memDir.LoadFromStream(AStream);\n    storage := TBGRAMemOriginalStorage.Create(memDir);\n    if storage.RawString['class'] <> StorageClassName then\n      raise exception.Create('Invalid class');\n    LoadFromStorage(storage);\n    FreeAndNil(storage);\n  finally\n    storage.Free;\n    memDir.Free;\n  end;\nend;\n\nprocedure TBGRALayerCustomOriginal.LoadFromResource(AFilename: string);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRALayerCustomOriginal.SaveToFile(AFilenameUTF8: string);\nvar\n  s: TFileStreamUTF8;\nbegin\n  s := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate);\n  try\n    SaveToStream(s);\n  finally\n    s.Free;\n  end;\nend;\n\nprocedure TBGRALayerCustomOriginal.SaveToStream(AStream: TStream);\nvar storage: TBGRAMemOriginalStorage;\n  memDir: TMemDirectory;\nbegin\n  memDir := TMemDirectory.Create;\n  storage := nil;\n  try\n    storage := TBGRAMemOriginalStorage.Create(memDir);\n    storage.RawString['class'] := StorageClassName;\n    SaveToStorage(storage);\n    FreeAndNil(storage);\n    memDir.SaveToStream(AStream);\n  finally\n    storage.Free;\n    memDir.Free;\n  end;\nend;\n\nfunction TBGRALayerCustomOriginal.CreateEditor: TBGRAOriginalEditor;\nbegin\n  result := TBGRAOriginalEditor.Create;\nend;\n\nclass function TBGRALayerCustomOriginal.CanConvertToSVG: boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRALayerCustomOriginal.IsInfiniteSurface: boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRALayerCustomOriginal.ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TObject;\nbegin\n  AOffset := Point(0,0);\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nfunction TBGRALayerCustomOriginal.Duplicate: TBGRALayerCustomOriginal;\nvar\n  storage: TBGRAMemOriginalStorage;\n  c: TBGRALayerOriginalAny;\nbegin\n  c := FindLayerOriginalClass(StorageClassName);\n  if c = nil then raise exception.Create('Original class is not registered');\n  storage := TBGRAMemOriginalStorage.Create;\n  try\n    SaveToStorage(storage);\n    result := c.Create;\n    result.LoadFromStorage(storage);\n  finally\n    storage.Free;\n  end;\nend;\n\n{ TBGRAOriginalStorageDiff }\n\nconstructor TBGRAOriginalStorageDiff.Create(AOriginal: TBGRALayerCustomOriginal);\nbegin\n  FOriginalClass:= AOriginal.StorageClassName;\n  FStorageBefore := TBGRAMemOriginalStorage.Create;\n  AOriginal.SaveToStorage(FStorageBefore);\nend;\n\nprocedure TBGRAOriginalStorageDiff.ComputeDifference(\n  AOriginal: TBGRALayerCustomOriginal);\nbegin\n  if (AOriginal.StorageClassName <> FOriginalClass) then\n    raise exception.Create('Different original class');\n  if Assigned(FStorageAfter) then FreeAndNil(FStorageAfter);\n  FStorageAfter := TBGRAMemOriginalStorage.Create;\n  AOriginal.SaveToStorage(FStorageAfter);\nend;\n\ndestructor TBGRAOriginalStorageDiff.Destroy;\nbegin\n  FStorageBefore.Free;\n  FStorageAfter.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRAOriginalStorageDiff.Apply(AOriginal: TBGRALayerCustomOriginal);\nbegin\n  if (AOriginal.StorageClassName <> FOriginalClass) then\n    raise exception.Create('Different original class');\n  if not Assigned(FStorageAfter) then raise exception.Create('Undefined state after diff');\n  AOriginal.LoadFromStorage(FStorageAfter);\n  AOriginal.NotifyChange; // without diff\nend;\n\nprocedure TBGRAOriginalStorageDiff.Unapply(AOriginal: TBGRALayerCustomOriginal);\nbegin\n  if (AOriginal.StorageClassName <> FOriginalClass) then\n    raise exception.Create('Different original class');\n  if not Assigned(FStorageBefore) then raise exception.Create('Undefined state before diff');\n  AOriginal.LoadFromStorage(FStorageBefore);\n  AOriginal.NotifyChange; // without diff\nend;\n\nfunction TBGRAOriginalStorageDiff.CanAppend(ADiff: TBGRAOriginalDiff): boolean;\nbegin\n  result := (ADiff is TBGRAOriginalStorageDiff) and\n  (TBGRAOriginalStorageDiff(ADiff).FOriginalClass = FOriginalClass);\nend;\n\nprocedure TBGRAOriginalStorageDiff.Append(ADiff: TBGRAOriginalDiff);\nvar\n  next: TBGRAOriginalStorageDiff;\nbegin\n  next := ADiff as TBGRAOriginalStorageDiff;\n  FreeAndNil(FStorageAfter);\n  FStorageAfter := next.FStorageAfter.Duplicate as TBGRAMemOriginalStorage;\nend;\n\nfunction TBGRAOriginalStorageDiff.IsIdentity: boolean;\nbegin\n  result := FStorageBefore.Equals(FStorageAfter);\nend;\n\n{ TBGRALayerImageOriginal }\n\nfunction TBGRALayerImageOriginal.GetImageHeight: integer;\nbegin\n  if Assigned(FImage) then\n    result := FImage.Height\n  else\n    result := 0;\nend;\n\nfunction TBGRALayerImageOriginal.GetImageWidth: integer;\nbegin\n  if Assigned(FImage) then\n    result := FImage.Width\n  else\n    result := 0;\nend;\n\nprocedure TBGRALayerImageOriginal.BeginUpdate;\nbegin\n  if DiffExpected and (FDiff=nil) then\n    FDiff := TBGRAImageOriginalDiff.Create(self);\nend;\n\nprocedure TBGRALayerImageOriginal.EndUpdate;\nbegin\n  if Assigned(FDiff) then FDiff.ComputeDiff(self);\n  NotifyChange(FDiff);\n  FDiff := nil;\nend;\n\nprocedure TBGRALayerImageOriginal.InternalLoadImageFromStream(AStream: TStream; AUpdate: boolean);\nvar\n  newJpegStream: TMemoryStream;\n  newImage: TBGRABitmap;\nbegin\n  if DetectFileFormat(AStream) = ifJpeg then\n  begin\n    newJpegStream := TMemoryStream.Create;\n    try\n      newJpegStream.CopyFrom(AStream, AStream.Size);\n      newJpegStream.Position := 0;\n      newImage := TBGRABitmap.Create(newJpegStream);\n      if AUpdate then BeginUpdate;\n      InternalClear;\n      FImage := newImage;\n      FJpegStream := newJpegStream;\n      newImage := nil;\n      newJpegStream := nil;\n      if AUpdate then\n      begin\n        Inc(FContentVersion);\n        EndUpdate;\n      end;\n    finally\n      newJpegStream.Free;\n      newImage.Free;\n    end;\n  end else\n  begin\n    newImage := TBGRABitmap.Create(AStream);\n    if AUpdate then BeginUpdate;\n    InternalClear;\n    FImage := newImage;\n    if AUpdate then\n    begin\n      Inc(FContentVersion);\n      EndUpdate;\n    end;\n  end;\nend;\n\nprocedure TBGRALayerImageOriginal.InternalClear;\nbegin\n  if Assigned(FImage) then\n  begin\n    FImage.FreeReference;\n    FImage := nil\n  end;\n  FreeAndNil(FJpegStream);\nend;\n\nconstructor TBGRALayerImageOriginal.Create;\nbegin\n  inherited Create;\n  FImage := nil;\n  FContentVersion := 0;\n  FJpegStream := nil;\nend;\n\ndestructor TBGRALayerImageOriginal.Destroy;\nbegin\n  FImage.FreeReference;\n  FJpegStream.Free;\n  FDiff.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRALayerImageOriginal.ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TObject;\nvar\n  svg: TBGRASVG;\n  img: TSVGImage;\nbegin\n  svg := TBGRASVG.Create(Width, Height, cuPixel);\n  Result:= svg;\n  AOffset := Point(0,0);\n  if Assigned(FJpegStream) then\n  begin\n    img := svg.Content.AppendImage(0,0,Width,Height,FJpegStream,'image/jpeg');\n    img.matrix[cuCustom] := AMatrix;\n  end else\n  if Assigned(FImage) then\n  begin\n    img := svg.Content.AppendImage(0,0,Width,Height,FImage,false);\n    img.matrix[cuCustom] := AMatrix;\n  end;\nend;\n\nprocedure TBGRALayerImageOriginal.Render(ADest: TBGRABitmap;\n  AMatrix: TAffineMatrix; ADraft: boolean);\nvar resampleFilter: TResampleFilter;\nbegin\n  if ADraft then resampleFilter := rfBox else resampleFilter:= rfCosine;\n  if Assigned(FImage) then\n    ADest.PutImageAffine(AMatrix, FImage, resampleFilter, dmSet);\nend;\n\nfunction TBGRALayerImageOriginal.GetRenderBounds(ADestRect: TRect;\n  AMatrix: TAffineMatrix): TRect;\nvar\n  aff: TAffineBox;\nbegin\n  if Assigned(FImage) then\n  begin\n    aff := AMatrix*TAffineBox.AffineBox(PointF(0,0),PointF(FImage.Width,0),PointF(0,FImage.Height));\n    result := aff.RectBounds;\n  end else\n    result := EmptyRect;\nend;\n\nprocedure TBGRALayerImageOriginal.LoadFromStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar imgStream: TMemoryStream;\n  newImage: TBGRABitmap;\nbegin\n  imgStream := TMemoryStream.Create;\n  try\n    if AStorage.ReadFile('content.png', imgStream) then\n    begin\n      imgStream.Position:= 0;\n      newImage := TBGRABitmap.Create(imgStream);\n      InternalClear;\n      FImage := newImage;\n    end else\n    if AStorage.ReadFile('content.jpg', imgStream) then\n    begin\n      imgStream.Position:= 0;\n      newImage := TBGRABitmap.Create(imgStream);\n      InternalClear;\n      FImage := newImage;\n      FJpegStream := imgStream;\n      imgStream:= nil;\n    end else\n      InternalClear;\n    FContentVersion := AStorage.Int['content-version'];\n  finally\n    imgStream.Free;\n  end;\nend;\n\nprocedure TBGRALayerImageOriginal.SaveToStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar imgStream: TMemoryStream;\nbegin\n  if Assigned(FImage) then\n  begin\n    if FContentVersion > AStorage.Int['content-version'] then\n    begin\n      if Assigned(FJpegStream) then\n      begin\n        AStorage.WriteFile('content.jpg', FJpegStream, false);\n        AStorage.RemoveFile('content.png');\n        AStorage.Int['content-version'] := FContentVersion;\n      end else\n      begin\n        imgStream := TMemoryStream.Create;\n        try\n          FImage.SaveToStreamAsPng(imgStream);\n          AStorage.RemoveFile('content.jpg');\n          AStorage.WriteFile('content.png', imgStream, false);\n          AStorage.Int['content-version'] := FContentVersion;\n        finally\n          imgStream.Free;\n        end;\n      end;\n    end;\n  end else\n  begin\n    AStorage.RemoveFile('content.jpg');\n    AStorage.RemoveFile('content.png');\n    AStorage.Int['content-version'] := FContentVersion;\n  end;\nend;\n\nprocedure TBGRALayerImageOriginal.LoadFromStream(AStream: TStream);\nbegin\n  if TMemDirectory.CheckHeader(AStream) then\n    inherited LoadFromStream(AStream)\n  else\n  begin\n    InternalLoadImageFromStream(AStream, False);\n    inc(FContentVersion);\n  end;\nend;\n\nprocedure TBGRALayerImageOriginal.Clear;\nbegin\n  BeginUpdate;\n  InternalClear;\n  Inc(FContentVersion);\n  EndUpdate;\nend;\n\nprocedure TBGRALayerImageOriginal.LoadImageFromStream(AStream: TStream);\nbegin\n  InternalLoadImageFromStream(AStream, True);\nend;\n\nprocedure TBGRALayerImageOriginal.SaveImageToStream(AStream: TStream);\nbegin\n  if Assigned(FJpegStream) then\n  begin\n    FJpegStream.Position := 0;\n    if AStream.CopyFrom(FJpegStream, FJpegStream.Size)<>FJpegStream.Size then\n      raise exception.Create('Error while saving');\n  end else\n  if Assigned(FImage) then\n    FImage.SaveToStreamAsPng(AStream)\n  else raise exception.Create('No image to be saved');\nend;\n\nprocedure TBGRALayerImageOriginal.AssignImage(AImage: TBGRACustomBitmap);\nvar\n  newImage: TBGRABitmap;\nbegin\n  newImage := TBGRABitmap.Create;\n  newImage.Assign(AImage);\n  BeginUpdate;\n  InternalClear;\n  FImage := newImage;\n  Inc(FContentVersion);\n  EndUpdate;\nend;\n\nfunction TBGRALayerImageOriginal.GetImageCopy: TBGRABitmap;\nbegin\n  if FImage = nil then result := nil\n  else result := FImage.Duplicate;\nend;\n\nclass function TBGRALayerImageOriginal.StorageClassName: RawByteString;\nbegin\n  result := 'image';\nend;\n\nclass function TBGRALayerImageOriginal.CanConvertToSVG: boolean;\nbegin\n  Result:= true;\nend;\n\ninitialization\n\n  RegisterLayerOriginal(TBGRALayerImageOriginal);\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralayers.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Layered image, each layer being a TBGRABitmap or rendered from an original.\n  It can handle SVG format, gradients and blend modes. }\nunit BGRALayers;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  BGRAGraphics, BGRAClasses, SysUtils, BGRABitmapTypes, BGRABitmap,\n  BGRAMemDirectory, BGRATransform, fgl, BGRALayerOriginal;\n\ntype\n  TBGRACustomLayeredBitmap = class;\n  TBGRACustomLayeredBitmapClass = class of TBGRACustomLayeredBitmap;\n\n  { Entry for one original in a list of originals }\n  TBGRALayerOriginalEntry = record\n     Guid: TGuid;\n     Instance: TBGRALayerCustomOriginal;\n     class operator = (const AEntry1,AEntry2: TBGRALayerOriginalEntry): boolean;\n  end;\n\nfunction BGRALayerOriginalEntry(AGuid: TGuid): TBGRALayerOriginalEntry;\nfunction BGRALayerOriginalEntry(AInstance: TBGRALayerCustomOriginal): TBGRALayerOriginalEntry;\n\ntype\n  TBGRALayerOriginalList = specialize TFPGList<TBGRALayerOriginalEntry>;\n\n  TBGRALayeredBitmap = class;\n  TBGRALayeredBitmapClass = class of TBGRALayeredBitmap;\n\n  TBGRALayeredBitmapSaveToStreamProc = procedure(AStream: TStream; ALayers: TBGRACustomLayeredBitmap);\n  TBGRALayeredBitmapLoadFromStreamProc = procedure(AStream: TStream; ALayers: TBGRACustomLayeredBitmap);\n  TBGRALayeredBitmapCheckStreamProc = function(AStream: TStream): boolean;\n  TOriginalRenderStatus = (orsNone, orsDraft, orsPartialDraft, orsProof, orsPartialProof);\n\n  { Abstract class for storing a layered bitmap }\n  TBGRACustomLayeredBitmap = class(TGraphic)\n  private\n    FFrozenRange: array of record\n      firstLayer,lastLayer: integer;\n      image: TBGRABitmap;\n      linearBlend: boolean;\n    end;\n    FLinearBlend: boolean;\n    FMemDirectory: TMemDirectory;\n    FMemDirectoryOwned: boolean;\n    FSelectionDrawMode: TDrawMode;\n    FSelectionLayerIndex: integer;\n    FSelectionRect: TRect;\n    FSelectionScanner: IBGRAScanner;\n    FSelectionScannerOffset: TPoint;\n    function GetDefaultBlendingOperation: TBlendOperation;\n    function GetHasMemFiles: boolean;\n    function GetLinearBlend: boolean;\n    function GetSelectionVisible: boolean;\n    procedure SetLinearBlend(AValue: boolean);\n\n  protected\n    function GetNbLayers: integer; virtual; abstract;\n    function GetMemDirectory: TMemDirectory;\n    function GetBlendOperation(Layer: integer): TBlendOperation; virtual; abstract;\n    function GetLayerVisible(layer: integer): boolean; virtual; abstract;\n    function GetLayerOpacity(layer: integer): byte; virtual; abstract;\n    function GetLayerName(layer: integer): string; virtual;\n    function GetLayerOffset(layer: integer): TPoint; virtual;\n    function GetLayerFrozenRange(layer: integer): integer;\n    function GetLayerFrozen(layer: integer): boolean; virtual;\n    function GetLayerUniqueId(layer: integer): integer; virtual;\n    function GetLayerOriginal({%H-}layer: integer): TBGRALayerCustomOriginal; virtual;\n    function GetLayerOriginalKnown({%H-}layer: integer): boolean; virtual;\n    function GetLayerOriginalMatrix({%H-}layer: integer): TAffineMatrix; virtual;\n    function GetLayerOriginalGuid({%H-}layer: integer): TGuid; virtual;\n    function GetLayerOriginalRenderStatus({%H-}layer: integer): TOriginalRenderStatus; virtual;\n    function GetOriginalCount: integer; virtual;\n    function GetOriginalByIndex({%H-}AIndex: integer): TBGRALayerCustomOriginal; virtual;\n    function GetOriginalByIndexKnown({%H-}AIndex: integer): boolean; virtual;\n    function GetOriginalByIndexLoaded({%H-}AIndex: integer): boolean; virtual;\n    function GetOriginalByIndexClass({%H-}AIndex: integer): TBGRALayerOriginalAny; virtual;\n    function GetTransparent: Boolean; override;\n    function GetEmpty: boolean; override;\n\n    function IndexOfOriginal(const AGuid: TGuid): integer; overload; virtual;\n    function IndexOfOriginal(AOriginal: TBGRALayerCustomOriginal): integer; overload; virtual;\n\n    procedure SetWidth(Value: Integer); override;\n    procedure SetHeight(Value: Integer); override;\n    procedure SetMemDirectory(AValue: TMemDirectory);\n    procedure SetTransparent(Value: Boolean); override;\n\n    procedure SetLayerFrozen(layer: integer; AValue: boolean); virtual;\n    function RangeIntersect(first1,last1,first2,last2: integer): boolean;\n    procedure RemoveFrozenRange(index: integer);\n    function ContainsFrozenRange(first,last: integer): boolean;\n    function GetLayerDrawMode(AIndex: integer): TDrawMode;\n\n  public\n    procedure SaveToFile(const filenameUTF8: string); override;\n    procedure SaveToStream(Stream: TStream); override;\n    procedure SaveToStreamAs(Stream: TStream; AExtension: string);\n    constructor Create; override;\n    destructor Destroy; override;\n    function ToString: ansistring; override;\n    procedure DiscardSelection;\n    function GetLayerBitmapDirectly(layer: integer): TBGRABitmap; virtual;\n    function GetLayerBitmapCopy(layer: integer): TBGRABitmap; virtual; abstract;\n    function ComputeFlatImage(ASeparateXorMask: boolean = false): TBGRABitmap; overload;\n    function ComputeFlatImage(firstLayer, lastLayer: integer; ASeparateXorMask: boolean = false): TBGRABitmap; overload;\n    function ComputeFlatImage(ARect: TRect; ASeparateXorMask: boolean = false): TBGRABitmap; overload;\n    function ComputeFlatImage(ARect: TRect; firstLayer, lastLayer: integer; ASeparateXorMask: boolean = false): TBGRABitmap; overload;\n    procedure Draw(ACanvas: TCanvas; const Rect: TRect); override; overload;\n    procedure Draw(Canvas: TCanvas; x,y: integer); overload;\n    procedure Draw(Canvas: TCanvas; x,y: integer; firstLayer, lastLayer: integer); overload;\n    procedure Draw(Dest: TBGRABitmap; x,y: integer); overload;\n    procedure Draw(Dest: TBGRABitmap; x,y: integer; ASeparateXorMask: boolean; ADestinationEmpty: boolean = false); overload;\n    procedure Draw(Dest: TBGRABitmap; AX,AY: integer; firstLayer, lastLayer: integer; ASeparateXorMask: boolean = false; ADestinationEmpty: boolean = false); overload;\n    function DrawLayer(Dest: TBGRABitmap; X,Y: Integer; AIndex: integer; ASeparateXorMask: boolean = false; ADestinationEmpty: boolean = false): boolean;\n\n    procedure FreezeExceptOneLayer(layer: integer); overload;\n    procedure Freeze(firstLayer, lastLayer: integer); overload;\n    procedure Freeze; overload;\n    procedure Unfreeze; overload;\n    procedure Unfreeze(layer: integer); overload;\n    procedure Unfreeze(firstLayer, lastLayer: integer); overload;\n\n    procedure NotifyLoaded; virtual;\n    procedure NotifySaving; virtual;\n\n    property NbLayers: integer read GetNbLayers;\n    property BlendOperation[layer: integer]: TBlendOperation read GetBlendOperation;\n    property LayerVisible[layer: integer]: boolean read GetLayerVisible;\n    property LayerOpacity[layer: integer]: byte read GetLayerOpacity;\n    property LayerName[layer: integer]: string read GetLayerName;\n    property LayerOffset[layer: integer]: TPoint read GetLayerOffset;\n    property LayerFrozen[layer: integer]: boolean read GetLayerFrozen;\n    property LayerUniqueId[layer: integer]: integer read GetLayerUniqueId;\n    property LayerOriginal[layer: integer]: TBGRALayerCustomOriginal read GetLayerOriginal;\n    property LayerOriginalKnown[layer: integer]: boolean read GetLayerOriginalKnown;\n    property LayerOriginalGuid[layer: integer]: TGuid read GetLayerOriginalGuid;\n    property LayerOriginalMatrix[layer: integer]: TAffineMatrix read GetLayerOriginalMatrix;\n    property LayerOriginalRenderStatus[layer: integer]: TOriginalRenderStatus read GetLayerOriginalRenderStatus;\n    property SelectionScanner: IBGRAScanner read FSelectionScanner write FSelectionScanner;\n    property SelectionScannerOffset: TPoint read FSelectionScannerOffset write FSelectionScannerOffset;\n    property SelectionRect: TRect read FSelectionRect write FSelectionRect;\n    property SelectionLayerIndex: integer read FSelectionLayerIndex write FSelectionLayerIndex;\n    property SelectionDrawMode: TDrawMode read FSelectionDrawMode write FSelectionDrawMode;\n    property SelectionVisible: boolean read GetSelectionVisible;\n    property LinearBlend: boolean read GetLinearBlend write SetLinearBlend; //use linear blending unless specified\n    property DefaultBlendingOperation: TBlendOperation read GetDefaultBlendingOperation;\n    property MemDirectory: TMemDirectory read GetMemDirectory write SetMemDirectory;\n    property MemDirectoryOwned: boolean read FMemDirectoryOwned write FMemDirectoryOwned;\n    property HasMemFiles: boolean read GetHasMemFiles;\n  end;\n\n  TEmbeddedOriginalChangeEvent = procedure (ASender: TObject; AOriginal: TBGRALayerCustomOriginal;\n                                            var ADiff: TBGRAOriginalDiff) of object;\n  TEmbeddedOriginalEditingChangeEvent = procedure (ASender: TObject; AOriginal: TBGRALayerCustomOriginal) of object;\n  TLayeredActionProgressEvent = procedure(ASender: TObject; AProgressPercent: integer) of object;\n  TEmbeddedOriginalLoadErrorEvent = procedure (ASender: TObject; AError: string; var ARaise: boolean) of object;\n\n  { Information about one layer }\n  TBGRALayerInfo = record\n    UniqueId: integer;\n    Name: string;\n    x, y: integer;\n    Source: TBGRABitmap;\n    blendOp: TBlendOperation;\n    Opacity: byte;\n    Visible: boolean;\n    Owner: boolean;\n    Frozen: boolean;\n    OriginalMatrix: TAffineMatrix;\n    OriginalRenderStatus: TOriginalRenderStatus;\n    OriginalGuid: TGuid;\n    OriginalInvalidatedBounds: TRectF;\n  end;\n\n  { Base implementation for a layered bitmap }\n  TBGRALayeredBitmap = class(TBGRACustomLayeredBitmap)\n  private\n    FNbLayers: integer;\n    FLayers: array of TBGRALayerInfo;\n    FOnActionDone: TNotifyEvent;\n    FOnEditorFocusChanged: TNotifyEvent;\n    FEditorFocused: boolean;\n    FOnActionProgress: TLayeredActionProgressEvent;\n    FOnOriginalLoadError: TEmbeddedOriginalLoadErrorEvent;\n    FOriginalChange: TEmbeddedOriginalChangeEvent;\n    FOriginalEditingChange: TEmbeddedOriginalEditingChangeEvent;\n    FWidth,FHeight: integer;\n    FOriginals: TBGRALayerOriginalList;\n    FOriginalEditor: TBGRAOriginalEditor;\n    FOriginalEditorOriginal: TGuid;\n    FOriginalEditorViewMatrix: TAffineMatrix;\n    procedure EditorFocusedChanged({%H-}Sender: TObject);\n    function GetLayerOriginalClass(layer: integer): TBGRALayerOriginalAny;\n    function GetOriginalEditor: TBGRAOriginalEditor;\n    function GetOriginalGuid(AIndex: integer): TGUID;\n    procedure SetEditorFocused(AValue: boolean);\n    procedure SetOnActionDone(AValue: TNotifyEvent);\n    procedure SetOnActionProgress(AValue: TLayeredActionProgressEvent);\n\n  protected\n    function GetWidth: integer; override;\n    function GetHeight: integer; override;\n    function GetNbLayers: integer; override;\n    function GetBlendOperation(Layer: integer): TBlendOperation; override;\n    function GetLayerVisible(layer: integer): boolean; override;\n    function GetLayerOpacity(layer: integer): byte; override;\n    function GetLayerOffset(layer: integer): TPoint; override;\n    function GetLayerName(layer: integer): string; override;\n    function GetLayerFrozen(layer: integer): boolean; override;\n    function GetLayerUniqueId(layer: integer): integer; override;\n    function GetLayerOriginal(layer: integer): TBGRALayerCustomOriginal; override;\n    function GetLayerOriginalKnown(layer: integer): boolean; override;\n    function GetLayerOriginalMatrix(layer: integer): TAffineMatrix; override;\n    function GetLayerOriginalGuid(layer: integer): TGuid; override;\n    function GetLayerOriginalRenderStatus(layer: integer): TOriginalRenderStatus; override;\n    function GetOriginalCount: integer; override;\n    function GetOriginalByIndex(AIndex: integer): TBGRALayerCustomOriginal; override;\n    function GetOriginalByIndexKnown(AIndex: integer): boolean; override;\n    function GetOriginalByIndexLoaded(AIndex: integer): boolean; override;\n    function GetOriginalByIndexClass(AIndex: integer): TBGRALayerOriginalAny; override;\n    procedure SetBlendOperation(Layer: integer; op: TBlendOperation);\n    procedure SetLayerVisible(layer: integer; AValue: boolean);\n    procedure SetLayerOpacity(layer: integer; AValue: byte);\n    procedure SetLayerOffset(layer: integer; AValue: TPoint);\n    procedure SetLayerName(layer: integer; AValue: string);\n    procedure SetLayerFrozen(layer: integer; AValue: boolean); override;\n    procedure SetLayerUniqueId(layer: integer; AValue: integer);\n    procedure SetLayerOriginalMatrix(layer: integer; AValue: TAffineMatrix);\n    procedure SetLayerOriginalGuid(layer: integer; const AValue: TGuid);\n    procedure SetLayerOriginalRenderStatus(layer: integer; AValue: TOriginalRenderStatus);\n\n    procedure FindOriginal(AGuid: TGuid;\n                out ADir: TMemDirectory;\n                out AClass: TBGRALayerOriginalAny);\n    procedure StoreOriginal(AOriginal: TBGRALayerCustomOriginal);\n    procedure OriginalChange(ASender: TObject; ABounds: PRectF; var ADiff: TBGRAOriginalDiff);\n    procedure OriginalEditingChange(ASender: TObject);\n    function GetLayerDirectory(ALayerIndex: integer; ACanCreate: boolean): TMemDirectory;\n    procedure UpdateOriginalEditor(ALayerIndex: integer; AMatrix: TAffineMatrix;\n      APointSize: single);\n\n  public\n    procedure LoadFromFile(const filenameUTF8: string); override;\n    procedure LoadFromStream(stream: TStream); override;\n    procedure LoadFromResource(AFilename: string);\n    procedure SetSize(AWidth, AHeight: integer); virtual;\n    procedure Clear; override;\n    procedure ClearOriginals;\n    procedure RemoveLayer(index: integer);\n    procedure InsertLayer(index: integer; fromIndex: integer);\n    procedure Assign(ASource: TBGRACustomLayeredBitmap; ASharedLayerIds: boolean = false;\n                ACopyAdditionalMemData: boolean = false); overload;\n    function MoveLayerUp(index: integer): integer;\n    function MoveLayerDown(index: integer): integer;\n\n    function AddLayer(Source: TBGRABitmap; Opacity: byte = 255): integer; overload;\n    function AddLayer(Source: TBGRABitmap; Position: TPoint; BlendOp: TBlendOperation; Opacity: byte = 255; Shared: boolean = false): integer; overload;\n    function AddLayer(Source: TBGRABitmap; Position: TPoint; Opacity: byte = 255): integer; overload;\n    function AddLayer(Source: TBGRABitmap; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayer(AName: string; Source: TBGRABitmap; Opacity: byte = 255): integer; overload;\n    function AddLayer(AName: string; Source: TBGRABitmap; Position: TPoint; BlendOp: TBlendOperation; Opacity: byte = 255; Shared: boolean = false): integer; overload;\n    function AddLayer(AName: string; Source: TBGRABitmap; Position: TPoint; Opacity: byte = 255): integer; overload;\n    function AddLayer(AName: string; Source: TBGRABitmap; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddSharedLayer(Source: TBGRABitmap; Opacity: byte = 255): integer; overload;\n    function AddSharedLayer(Source: TBGRABitmap; Position: TPoint; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddSharedLayer(Source: TBGRABitmap; Position: TPoint; Opacity: byte = 255): integer; overload;\n    function AddSharedLayer(Source: TBGRABitmap; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromFile(AFileName: string; Opacity: byte = 255): integer; overload;\n    function AddLayerFromFile(AFileName: string; Position: TPoint; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromFile(AFileName: string; Position: TPoint; Opacity: byte = 255): integer; overload;\n    function AddLayerFromFile(AFileName: string; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddOwnedLayer(ABitmap: TBGRABitmap; Opacity: byte = 255): integer; overload;\n    function AddOwnedLayer(ABitmap: TBGRABitmap; Position: TPoint; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddOwnedLayer(ABitmap: TBGRABitmap; Position: TPoint; Opacity: byte = 255): integer; overload;\n    function AddOwnedLayer(ABitmap: TBGRABitmap; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOriginal(const AGuid: TGuid; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOriginal(const AGuid: TGuid; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOriginal(const AGuid: TGuid; Matrix: TAffineMatrix; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOriginal(const AGuid: TGuid; Matrix: TAffineMatrix; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOwnedOriginal(AOriginal: TBGRALayerCustomOriginal; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOwnedOriginal(AOriginal: TBGRALayerCustomOriginal; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOwnedOriginal(AOriginal: TBGRALayerCustomOriginal; Matrix: TAffineMatrix; Opacity: byte = 255): integer; overload;\n    function AddLayerFromOwnedOriginal(AOriginal: TBGRALayerCustomOriginal; Matrix: TAffineMatrix; BlendOp: TBlendOperation; Opacity: byte = 255): integer; overload;\n\n    class function IsValidRegistryIndentifier(AIdentifier: string): boolean;\n    function GetLayerRegistry(ALayerIndex: integer; ARegistryIdentifier: string): RawByteString;\n    procedure SetLayerRegistry(ALayerIndex: integer; ARegistryIdentifier: string; AValue: RawByteString);\n    procedure SaveLayerRegistryToStream(ALayerIndex: integer; AStream: TStream);\n    procedure LoadLayerRegistryFromStream(ALayerIndex: integer; AStream: TStream);\n    function GetGlobalRegistry(ARegistryIdentifier: string): RawByteString;\n    procedure SetGlobalRegistry(ARegistryIdentifier: string; AValue: RawByteString);\n\n    function AddOriginal(AOriginal: TBGRALayerCustomOriginal; AOwned: boolean = true): integer;\n    function AddOriginalFromStream(AStream: TStream; ALateLoad: boolean = false): integer; overload;\n    function AddOriginalFromStream(AStream: TStream; const AGuid: TGuid; ALateLoad: boolean = false): integer; overload;\n    function AddOriginalFromStorage(AStorage: TBGRAMemOriginalStorage; ALateLoad: boolean = false): integer; overload;\n    function AddOriginalFromStorage(AStorage: TBGRAMemOriginalStorage; const AGuid: TGuid; ALateLoad: boolean = false): integer; overload;\n    procedure SaveOriginalToStream(AIndex: integer; AStream: TStream); overload;\n    procedure SaveOriginalToStream(const AGuid: TGuid; AStream: TStream); overload;\n    function RemoveOriginal(AOriginal: TBGRALayerCustomOriginal): boolean;\n    procedure DeleteOriginal(AIndex: integer);\n    procedure NotifyLoaded; override;\n    procedure NotifySaving; override;\n    procedure RenderLayerFromOriginal(layer: integer; ADraft: boolean = false; AFullSizeLayer: boolean = false); overload;\n    procedure RenderLayerFromOriginal(layer: integer; ADraft: boolean; ARenderBounds: TRect; AFullSizeLayer: boolean = false); overload;\n    procedure RenderLayerFromOriginal(layer: integer; ADraft: boolean; ARenderBoundsF: TRectF; AFullSizeLayer: boolean = false); overload;\n    procedure RenderLayerFromOriginalIfNecessary(layer: integer; ADraft: boolean; var ABounds: TRect);\n    function RenderOriginalsIfNecessary(ADraft: boolean = false): TRect;\n    function RenderOriginalIfNecessary(const AGuid: TGuid; ADraft: boolean = false): TRect;\n    procedure RemoveUnusedOriginals;\n    procedure UnloadOriginals;\n    procedure UnloadOriginal(AIndex: integer); overload;\n    procedure UnloadOriginal(const AGuid: TGuid); overload;\n\n    destructor Destroy; override;\n    constructor Create; overload; override;\n    constructor Create(AWidth, AHeight: integer); overload; virtual;\n    function GetLayerBitmapDirectly(layer: integer): TBGRABitmap; override;\n    function GetLayerBitmapCopy(layer: integer): TBGRABitmap; override;\n    function GetLayerIndexFromId(AIdentifier: integer): integer;\n    function Duplicate(ASharedLayerIds: boolean = false): TBGRALayeredBitmap;\n    function ProduceLayerUniqueId: integer;\n\n    procedure RotateCW;\n    procedure RotateCCW;\n    procedure RotateUD; overload;\n    procedure RotateUD(ALayerIndex: integer); overload;\n    procedure HorizontalFlip; overload;\n    procedure HorizontalFlip(ALayerIndex: integer); overload;\n    procedure VerticalFlip; overload;\n    procedure VerticalFlip(ALayerIndex: integer); overload;\n    procedure Resample(AWidth, AHeight: integer; AResampleMode: TResampleMode; AFineResampleFilter: TResampleFilter = rfLinear);\n    procedure SetLayerBitmap(layer: integer; ABitmap: TBGRABitmap; AOwned: boolean);\n    function TakeLayerBitmap(layer: integer): TBGRABitmap;\n    procedure ApplyLayerOffset(ALayerIndex: integer; APadWithTranparentPixels: boolean);\n\n    function DrawEditor(ADest: TBGRABitmap; ALayerIndex: integer; X, Y: Integer; APointSize: single): TRect; overload;\n    function DrawEditor(ADest: TBGRABitmap; ALayerIndex: integer; AMatrix: TAffineMatrix; APointSize: single): TRect; overload;\n    function GetEditorBounds(ALayerIndex: integer; X, Y: Integer; APointSize: single): TRect; overload;\n    function GetEditorBounds(ADestRect: TRect; ALayerIndex: integer; X, Y: Integer; APointSize: single): TRect; overload;\n    function GetEditorBounds(ALayerIndex: integer; AMatrix: TAffineMatrix; APointSize: single): TRect; overload;\n    function GetEditorBounds(ADestRect: TRect; ALayerIndex: integer; AMatrix: TAffineMatrix; APointSize: single): TRect; overload;\n    procedure ClearEditor;\n    procedure MouseMove(Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor);\n    procedure MouseDown(RightButton: boolean; Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor);\n    procedure MouseUp(RightButton: boolean; Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor);\n    procedure MouseMove(Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor; out AHandled: boolean);\n    procedure MouseDown(RightButton: boolean; Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor; out AHandled: boolean);\n    procedure MouseUp(RightButton: boolean; Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor; out AHandled: boolean);\n    procedure KeyDown(Shift: TShiftState; Key: TSpecialKey; out AHandled: boolean);\n    procedure KeyUp(Shift: TShiftState; Key: TSpecialKey; out AHandled: boolean);\n    procedure KeyPress(UTF8Key: string; out AHandled: boolean);\n\n    property Width : integer read GetWidth;\n    property Height: integer read GetHeight;\n    property NbLayers: integer read GetNbLayers;\n    property BlendOperation[layer: integer]: TBlendOperation read GetBlendOperation write SetBlendOperation;\n    property LayerVisible[layer: integer]: boolean read GetLayerVisible write SetLayerVisible;\n    property LayerOpacity[layer: integer]: byte read GetLayerOpacity write SetLayerOpacity;\n    property LayerName[layer: integer]: string read GetLayerName write SetLayerName;\n    property LayerBitmap[layer: integer]: TBGRABitmap read GetLayerBitmapDirectly;\n    property LayerOffset[layer: integer]: TPoint read GetLayerOffset write SetLayerOffset;\n    property LayerUniqueId[layer: integer]: integer read GetLayerUniqueId write SetLayerUniqueId;\n    property LayerOriginal[layer: integer]: TBGRALayerCustomOriginal read GetLayerOriginal;\n    property LayerOriginalKnown[layer: integer]: boolean read GetLayerOriginalKnown;\n    property LayerOriginalClass[layer: integer]: TBGRALayerOriginalAny read GetLayerOriginalClass;\n    property LayerOriginalGuid[layer: integer]: TGuid read GetLayerOriginalGuid write SetLayerOriginalGuid;\n    property LayerOriginalMatrix[layer: integer]: TAffineMatrix read GetLayerOriginalMatrix write SetLayerOriginalMatrix;\n    property LayerOriginalRenderStatus[layer: integer]: TOriginalRenderStatus read GetLayerOriginalRenderStatus write SetLayerOriginalRenderStatus;\n\n    function IndexOfOriginal(const AGuid: TGuid): integer; overload; override;\n    function IndexOfOriginal(AOriginal: TBGRALayerCustomOriginal): integer; overload; override;\n    property OriginalCount: integer read GetOriginalCount;\n    property Original[AIndex: integer]: TBGRALayerCustomOriginal read GetOriginalByIndex;\n    property OriginalGuid[AIndex: integer]: TGUID read GetOriginalGuid;\n    property OriginalKnown[AIndex: integer]: boolean read GetOriginalByIndexKnown;\n    property OriginalClass[AIndex: integer]: TBGRALayerOriginalAny read GetOriginalByIndexClass;\n    property OnOriginalChange: TEmbeddedOriginalChangeEvent read FOriginalChange write FOriginalChange;\n    property OnOriginalEditingChange: TEmbeddedOriginalEditingChangeEvent read FOriginalEditingChange write FOriginalEditingChange;\n    property OnOriginalLoadError: TEmbeddedOriginalLoadErrorEvent read FOnOriginalLoadError write FOnOriginalLoadError;\n    property EditorFocused: boolean read FEditorFocused write SetEditorFocused;\n    property OnEditorFocusChanged: TNotifyEvent read FOnEditorFocusChanged write FOnEditorFocusChanged;\n    property OriginalEditor: TBGRAOriginalEditor read GetOriginalEditor;\n    property OnActionProgress: TLayeredActionProgressEvent read FOnActionProgress write SetOnActionProgress;\n    property OnActionDone: TNotifyEvent read FOnActionDone write SetOnActionDone;\n  end;\n\n  TAffineMatrix = BGRABitmapTypes.TAffineMatrix;\n\nprocedure RegisterLayeredBitmapWriter(AExtensionUTF8: string; AWriter: TBGRALayeredBitmapClass);\nprocedure RegisterLayeredBitmapReader(AExtensionUTF8: string; AReader: TBGRACustomLayeredBitmapClass);\nfunction TryCreateLayeredBitmapWriter(AExtensionUTF8: string): TBGRALayeredBitmap;\nfunction TryCreateLayeredBitmapReader(AExtensionUTF8: string): TBGRACustomLayeredBitmap;\n\nvar\n  LayeredBitmapSaveToStreamProc : TBGRALayeredBitmapSaveToStreamProc;\n  LayeredBitmapLoadFromStreamProc : TBGRALayeredBitmapLoadFromStreamProc;\n  LayeredBitmapCheckStreamProc: TBGRALayeredBitmapCheckStreamProc;\n\ntype\n  TOnLayeredBitmapLoadStartProc = procedure(AFilenameUTF8: string) of object;\n  TOnLayeredBitmapLoadProgressProc = procedure(APercentage: integer) of object;\n  TOnLayeredBitmapLoadedProc = procedure() of object;\n\nprocedure OnLayeredBitmapLoadFromStreamStart;\nprocedure OnLayeredBitmapLoadStart(AFilenameUTF8: string);\nprocedure OnLayeredBitmapLoadProgress(APercentage: integer);\nprocedure OnLayeredBitmapLoaded;\nprocedure RegisterLoadingHandler(AStart: TOnLayeredBitmapLoadStartProc; AProgress: TOnLayeredBitmapLoadProgressProc;\n     ADone: TOnLayeredBitmapLoadedProc);\nprocedure UnregisterLoadingHandler(AStart: TOnLayeredBitmapLoadStartProc; AProgress: TOnLayeredBitmapLoadProgressProc;\n     ADone: TOnLayeredBitmapLoadedProc);\n\ntype\n  TOnLayeredBitmapSaveStartProc = procedure(AFilenameUTF8: string) of object;\n  TOnLayeredBitmapSaveProgressProc = procedure(APercentage: integer) of object;\n  TOnLayeredBitmapSavedProc = procedure() of object;\n\nprocedure OnLayeredBitmapSaveToStreamStart;\nprocedure OnLayeredBitmapSaveStart(AFilenameUTF8: string);\nprocedure OnLayeredBitmapSaveProgress(APercentage: integer);\nprocedure OnLayeredBitmapSaved;\nprocedure RegisterSavingHandler(AStart: TOnLayeredBitmapSaveStartProc; AProgress: TOnLayeredBitmapSaveProgressProc;\n     ADone: TOnLayeredBitmapSavedProc);\nprocedure UnregisterSavingHandler(AStart: TOnLayeredBitmapSaveStartProc; AProgress: TOnLayeredBitmapSaveProgressProc;\n     ADone: TOnLayeredBitmapSavedProc);\n\nconst\n  RenderTempSubDirectory = 'temp';\n\nimplementation\n\nuses BGRAUTF8, BGRABlend, BGRAMultiFileType, math;\n\nconst\n  OriginalsDirectory = 'originals';\n  LayersDirectory = 'layers';\n  RenderSubDirectory = 'render';\n  RegistrySubDirectory = 'registry';\n\ntype\n  TOnLayeredBitmapLoadStartProcList = specialize TFPGList<TOnLayeredBitmapLoadStartProc>;\n  TOnLayeredBitmapLoadProgressProcList = specialize TFPGList<TOnLayeredBitmapLoadProgressProc>;\n  TOnLayeredBitmapLoadedProcList = specialize TFPGList<TOnLayeredBitmapLoadedProc>;\n  TOnLayeredBitmapSaveStartProcList = specialize TFPGList<TOnLayeredBitmapSaveStartProc>;\n  TOnLayeredBitmapSaveProgressProcList = specialize TFPGList<TOnLayeredBitmapSaveProgressProc>;\n  TOnLayeredBitmapSavedProcList = specialize TFPGList<TOnLayeredBitmapSavedProc>;\n\nvar\n  LayeredBitmapLoadEvents: record\n    OnStart: TOnLayeredBitmapLoadStartProcList;\n    OnProgress: TOnLayeredBitmapLoadProgressProcList;\n    OnDone: TOnLayeredBitmapLoadedProcList;\n  end;\n  LayeredBitmapSaveEvents: record\n    OnStart: TOnLayeredBitmapSaveStartProcList;\n    OnProgress: TOnLayeredBitmapSaveProgressProcList;\n    OnDone: TOnLayeredBitmapSavedProcList;\n  end;\n\nvar\n  NextLayerUniqueId: LongWord;\n  LayeredBitmapReaders: array of record\n     extension: string;\n     theClass: TBGRACustomLayeredBitmapClass;\n  end;\n  LayeredBitmapWriters: array of record\n     extension: string;\n     theClass: TBGRALayeredBitmapClass;\n  end;\n\n{ TBGRALayerOriginalEntry }\n\nclass operator TBGRALayerOriginalEntry.=(const AEntry1,\n  AEntry2: TBGRALayerOriginalEntry): boolean;\nbegin\n  result := AEntry1.Guid = AEntry2.Guid;\nend;\n\nfunction BGRALayerOriginalEntry(AGuid: TGuid): TBGRALayerOriginalEntry;\nbegin\n  result.Guid := AGuid;\n  result.Instance := nil;\nend;\n\nfunction BGRALayerOriginalEntry(AInstance: TBGRALayerCustomOriginal): TBGRALayerOriginalEntry;\nbegin\n  result.Guid := AInstance.Guid;\n  result.Instance := AInstance;\nend;\n\n{ TBGRALayeredBitmap }\n\nfunction TBGRALayeredBitmap.GetLayerUniqueId(layer: integer): integer;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    Result:= FLayers[layer].UniqueId;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginal(layer: integer): TBGRALayerCustomOriginal;\nvar\n  idxOrig: Integer;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalGuid = GUID_NULL then exit(nil);\n    idxOrig := IndexOfOriginal(FLayers[layer].OriginalGuid);\n    if idxOrig = -1 then exit(nil);\n    result := Original[idxOrig];\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginalMatrix(layer: integer\n  ): TAffineMatrix;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    result := FLayers[layer].OriginalMatrix;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginalGuid(layer: integer): TGuid;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    result := FLayers[layer].OriginalGuid;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginalRenderStatus(layer: integer\n  ): TOriginalRenderStatus;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    result := FLayers[layer].OriginalRenderStatus;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerUniqueId(layer: integer; AValue: integer);\nvar i: integer;\n  layerDir: TMemDirectory;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    for i := 0 to NbLayers-1 do\n      if (i <> layer) and (FLayers[i].UniqueId = AValue) then\n        raise Exception.Create('Another layer has the same identifier');\n    layerDir := GetLayerDirectory(layer,false);\n    if Assigned(layerDir) then\n      layerDir.ParentDirectory.Rename(inttostr(FLayers[layer].UniqueId),'',inttostr(AValue));\n    FLayers[layer].UniqueId := AValue;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerOriginalMatrix(layer: integer;\n  AValue: TAffineMatrix);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalMatrix = AValue then exit;\n    FLayers[layer].OriginalMatrix := AValue;\n    if FLayers[layer].OriginalGuid <> GUID_NULL then\n    begin\n      FLayers[layer].OriginalRenderStatus := orsNone;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerOriginalGuid(layer: integer;\n  const AValue: TGuid);\nvar\n  layerDir: TMemDirectory;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalGuid = AValue then exit;\n    FLayers[layer].OriginalGuid := AValue;\n    layerDir := GetLayerDirectory(layer, false);\n    if Assigned(layerDir) then\n      layerDir.Delete(RenderSubDirectory,'');\n\n    if (AValue <> GUID_NULL) and (IndexOfOriginal(AValue) <> -1) then\n    begin\n      FLayers[layer].OriginalRenderStatus := orsNone;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerOriginalRenderStatus(layer: integer;\n  AValue: TOriginalRenderStatus);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalRenderStatus = AValue then exit;\n    FLayers[layer].OriginalRenderStatus := AValue;\n    Unfreeze(layer);\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.FindOriginal(AGuid: TGuid; out\n  ADir: TMemDirectory; out AClass: TBGRALayerOriginalAny);\nvar\n  c: String;\nbegin\n  ADir := nil;\n  AClass := nil;\n\n  if HasMemFiles then\n  begin\n    ADir := MemDirectory.FindPath(OriginalsDirectory+'/'+GUIDToString(AGuid));\n    if ADir <> nil then\n    begin\n      c := ADir.RawStringByFilename['class'];\n      AClass := FindLayerOriginalClass(c);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.StoreOriginal(AOriginal: TBGRALayerCustomOriginal);\nvar\n  dir, subdir: TMemDirectory;\n  storage: TBGRAMemOriginalStorage;\nbegin\n  if AOriginal.Guid = GUID_NULL then raise exception.Create('Original GUID undefined');\n  dir := MemDirectory.Directory[MemDirectory.AddDirectory(OriginalsDirectory)];\n  subdir := dir.Directory[dir.AddDirectory(GUIDToString(AOriginal.Guid))];\n  storage := TBGRAMemOriginalStorage.Create(subdir);\n  try\n    AOriginal.SaveToStorage(storage);\n    storage.RawString['class'] := AOriginal.StorageClassName;\n  finally\n    storage.Free;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.OriginalChange(ASender: TObject; ABounds: PRectF; var ADiff: TBGRAOriginalDiff);\nvar\n  i: Integer;\n  orig: TBGRALayerCustomOriginal;\n  transfBounds: TRectF;\nbegin\n  orig := TBGRALayerCustomOriginal(ASender);\n  if not (Assigned(ABounds) and IsEmptyRectF(ABounds^)) then\n  begin\n    for i := 0 to NbLayers-1 do\n      if LayerOriginalGuid[i] = orig.Guid then\n      begin\n        if ABounds = nil then\n          LayerOriginalRenderStatus[i] := orsNone\n        else\n        begin\n          transfBounds := (LayerOriginalMatrix[i]*TAffineBox.AffineBox(ABounds^)).RectBoundsF;\n          case LayerOriginalRenderStatus[i] of\n          orsDraft: begin\n                      LayerOriginalRenderStatus[i] := orsPartialDraft;\n                      FLayers[i].OriginalInvalidatedBounds := transfBounds;\n                    end;\n          orsProof: begin\n                      LayerOriginalRenderStatus[i] := orsPartialProof;\n                      FLayers[i].OriginalInvalidatedBounds := transfBounds;\n                    end;\n          orsPartialDraft: FLayers[i].OriginalInvalidatedBounds :=\n                             FLayers[i].OriginalInvalidatedBounds.Union(transfBounds, true);\n          orsPartialProof: FLayers[i].OriginalInvalidatedBounds :=\n                             FLayers[i].OriginalInvalidatedBounds.Union(transfBounds, true);\n          end;\n        end;\n      end;\n  end;\n  if Assigned(FOriginalChange) then\n    FOriginalChange(self, orig, ADiff);\nend;\n\nprocedure TBGRALayeredBitmap.OriginalEditingChange(ASender: TObject);\nvar\n  orig: TBGRALayerCustomOriginal;\nbegin\n  orig := TBGRALayerCustomOriginal(ASender);\n  if Assigned(FOriginalEditingChange) then\n    FOriginalEditingChange(self, orig);\nend;\n\nfunction TBGRALayeredBitmap.GetLayerDirectory(ALayerIndex: integer; ACanCreate: boolean): TMemDirectory;\nvar\n  layersDir: TMemDirectory;\n  id: LongInt;\nbegin\n  if (MemDirectory.IndexOf(LayersDirectory,'')=-1) and not ACanCreate then exit(nil);\n  layersDir := MemDirectory.Directory[MemDirectory.AddDirectory(LayersDirectory)];\n  id := LayerUniqueId[ALayerIndex];\n  if (layersDir.IndexOf(IntToStr(id),'')=-1) and not ACanCreate then exit(nil);\n  result := layersDir.Directory[layersDir.AddDirectory(IntToStr(id))];\nend;\n\nprocedure TBGRALayeredBitmap.UpdateOriginalEditor(ALayerIndex: integer; AMatrix: TAffineMatrix; APointSize: single);\nvar\n  orig: TBGRALayerCustomOriginal;\n  editMatrix: TAffineMatrix;\nbegin\n  orig := LayerOriginal[ALayerIndex];\n\n  if (orig = nil) or (orig.Guid <> FOriginalEditorOriginal) then\n  begin\n    FreeAndNil(FOriginalEditor);\n    if orig = nil then\n      FOriginalEditorOriginal := GUID_NULL\n      else FOriginalEditorOriginal := orig.Guid;\n  end;\n\n  if Assigned(OriginalEditor) then\n    FOriginalEditor.Clear;\n\n  if Assigned(orig) then\n  begin\n    if OriginalEditor = nil then\n    begin\n      FOriginalEditor := orig.CreateEditor;\n      if FOriginalEditor = nil then\n        raise exception.Create('Unexpected nil value');\n      FOriginalEditor.Focused := FEditorFocused;\n      FOriginalEditor.OnFocusChanged:=@EditorFocusedChanged;\n    end;\n\n    editMatrix := AffineMatrixTranslation(-0.5,-0.5)*AMatrix*LayerOriginalMatrix[ALayerIndex]*AffineMatrixTranslation(0.5,0.5);\n    if IsAffineMatrixInversible(editMatrix) then\n    begin\n      orig.ConfigureEditor(FOriginalEditor);\n      FOriginalEditorViewMatrix := AffineMatrixTranslation(-0.5,-0.5)*AMatrix*AffineMatrixTranslation(0.5,0.5);\n      FOriginalEditor.Matrix := editMatrix;\n      FOriginalEditor.PointSize := APointSize;\n    end;\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalCount: integer;\nbegin\n  if Assigned(FOriginals) then\n    result := FOriginals.Count\n  else\n    result := 0;\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalByIndex(AIndex: integer\n  ): TBGRALayerCustomOriginal;\nvar\n  dir: TMemDirectory;\n  c: TBGRALayerOriginalAny;\n  guid: TGuid;\n  storage: TBGRAMemOriginalStorage;\n  raiseError: Boolean;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  result := FOriginals[AIndex].Instance;\n  guid := FOriginals[AIndex].Guid;\n\n  // load original on the fly\n  if (result = nil) and (guid <> GUID_NULL) then\n  begin\n    FindOriginal(guid, dir, c);\n    if not Assigned(dir) then\n      raise exception.Create('Original directory not found');\n    if not Assigned(c) then\n      raise exception.Create('Original class not found (it can be registered with the RegisterLayerOriginal function)');\n\n    result := c.Create;\n    result.Guid := guid;\n    storage := TBGRAMemOriginalStorage.Create(dir);\n    try\n      try\n        result.LoadFromStorage(storage);\n      finally\n        FOriginals[AIndex] := BGRALayerOriginalEntry(result);\n        result.OnChange:= @OriginalChange;\n        result.OnEditingChange:= @OriginalEditingChange;\n        storage.Free;\n      end;\n    except\n      on ex: Exception do\n      begin\n        raiseError := true;\n        if Assigned(FOnOriginalLoadError) then\n          FOnOriginalLoadError(self, ex.Message, raiseError);\n        if raiseError then\n          raise ex;\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginalKnown(layer: integer): boolean;\nvar\n  idxOrig: Integer;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalGuid = GUID_NULL then exit(true);\n    idxOrig := IndexOfOriginal(FLayers[layer].OriginalGuid);\n    if idxOrig = -1 then exit(false);\n    result := OriginalKnown[idxOrig];\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalByIndexKnown(AIndex: integer): boolean;\nvar\n  dir: TMemDirectory;\n  c: TBGRALayerOriginalAny;\n  guid: TGuid;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  if Assigned(FOriginals[AIndex].Instance) then exit(true);\n  guid := FOriginals[AIndex].Guid;\n  if guid = GUID_NULL then exit(true);\n\n  FindOriginal(guid, dir, c);\n  result:= Assigned(dir) and Assigned(c);\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalByIndexLoaded(AIndex: integer): boolean;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  Result:= Assigned(FOriginals[AIndex].Instance);\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalGuid(AIndex: integer): TGUID;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  result := FOriginals[AIndex].Guid;\nend;\n\nprocedure TBGRALayeredBitmap.SetEditorFocused(AValue: boolean);\nbegin\n  if Assigned(OriginalEditor) then OriginalEditor.Focused := AValue\n  else\n  begin\n    if FEditorFocused=AValue then Exit;\n    FEditorFocused:=AValue;\n    if Assigned(FOnEditorFocusChanged) then FOnEditorFocusChanged(self);\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetOnActionDone(AValue: TNotifyEvent);\nbegin\n  if FOnActionDone=AValue then Exit;\n  FOnActionDone:=AValue;\nend;\n\nprocedure TBGRALayeredBitmap.SetOnActionProgress(\n  AValue: TLayeredActionProgressEvent);\nbegin\n  if FOnActionProgress=AValue then Exit;\n  FOnActionProgress:=AValue;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOriginalClass(layer: integer): TBGRALayerOriginalAny;\nvar\n  idxOrig: Integer;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].OriginalGuid = GUID_NULL then exit(nil);\n    idxOrig := IndexOfOriginal(FLayers[layer].OriginalGuid);\n    if idxOrig = -1 then exit(nil);\n    result := OriginalClass[idxOrig];\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalEditor: TBGRAOriginalEditor;\nbegin\n  if Assigned(FOriginalEditor) and (IndexOfOriginal(FOriginalEditorOriginal)=-1) then\n  begin\n    FreeAndNil(FOriginalEditor);\n    FOriginalEditorOriginal := GUID_NULL;\n  end;\n  result := FOriginalEditor;\nend;\n\nprocedure TBGRALayeredBitmap.EditorFocusedChanged(Sender: TObject);\nbegin\n  if Assigned(OriginalEditor) then\n  begin\n    FEditorFocused := OriginalEditor.Focused;\n    if Assigned(FOnEditorFocusChanged) then FOnEditorFocusChanged(self);\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetOriginalByIndexClass(AIndex: integer): TBGRALayerOriginalAny;\nvar\n  dir: TMemDirectory;\n  c: TBGRALayerOriginalAny;\n  guid: TGuid;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  if Assigned(FOriginals[AIndex].Instance) then exit(TBGRALayerOriginalAny(FOriginals[AIndex].Instance.ClassType));\n  guid := FOriginals[AIndex].Guid;\n  if guid = GUID_NULL then exit(nil);\n\n  FindOriginal(guid, dir, c);\n  result:= c;\nend;\n\nfunction TBGRALayeredBitmap.GetWidth: integer;\nbegin\n  Result:= FWidth;\nend;\n\nfunction TBGRALayeredBitmap.GetHeight: integer;\nbegin\n  Result:= FHeight;\nend;\n\nfunction TBGRALayeredBitmap.GetNbLayers: integer;\nbegin\n  Result:= FNbLayers;\nend;\n\nfunction TBGRALayeredBitmap.GetBlendOperation(Layer: integer): TBlendOperation;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    Result:= FLayers[layer].blendOp;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerVisible(layer: integer): boolean;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    Result:= FLayers[layer].Visible;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOpacity(layer: integer): byte;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    Result:= FLayers[layer].Opacity;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerOffset(layer: integer): TPoint;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    with FLayers[layer] do\n      Result:= Point(x,y);\nend;\n\nfunction TBGRALayeredBitmap.GetLayerName(layer: integer): string;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if not FLayers[layer].Owner and (FLayers[layer].Source <> nil) then\n      Result := FLayers[layer].Source.Caption\n    else\n      Result:= FLayers[layer].Name;\n    if Result = '' then\n      result := inherited GetLayerName(layer);\n  end;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerFrozen(layer: integer): boolean;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    Result:= FLayers[layer].Frozen;\nend;\n\nprocedure TBGRALayeredBitmap.SetBlendOperation(Layer: integer;\n  op: TBlendOperation);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].blendOp <> op then\n    begin\n      FLayers[layer].blendOp := op;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerVisible(layer: integer; AValue: boolean);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].Visible <> AValue then\n    begin\n      FLayers[layer].Visible := AValue;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerOpacity(layer: integer; AValue: byte);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if FLayers[layer].Opacity <> AValue then\n    begin\n      FLayers[layer].Opacity := AValue;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerOffset(layer: integer; AValue: TPoint);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if (FLayers[layer].x <> AValue.x) or\n      (FLayers[layer].y <> AValue.y) then\n    begin\n      if FLayers[layer].OriginalGuid <> GUID_NULL then\n        raise exception.Create('The offset of the layer is computed from an original. You can change it by changing the layer original matrix.');\n\n      FLayers[layer].x := AValue.x;\n      FLayers[layer].y := AValue.y;\n      Unfreeze(layer);\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerName(layer: integer; AValue: string);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if not FLayers[layer].Owner and (FLayers[layer].Source <> nil) then\n      FLayers[layer].Source.Caption := AValue\n    else\n      FLayers[layer].Name := AValue;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerFrozen(layer: integer; AValue: boolean);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n    FLayers[layer].Frozen := AValue;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerBitmapDirectly(layer: integer): TBGRABitmap;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    result := nil\n  else\n  begin\n    if FLayers[layer].OriginalRenderStatus = orsNone then\n      RenderLayerFromOriginal(layer, true)\n    else if FLayers[layer].OriginalRenderStatus in [orsPartialDraft,orsPartialProof] then\n      RenderLayerFromOriginal(layer, true, FLayers[layer].OriginalInvalidatedBounds);\n    Result:= FLayers[layer].Source;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.LoadFromFile(const filenameUTF8: string);\nvar bmp: TBGRABitmap;\n    ext: string;\n    temp: TBGRACustomLayeredBitmap;\n    i: integer;\n    stream: TFileStreamUTF8;\nbegin\n  ext := UTF8LowerCase(ExtractFileExt(filenameUTF8));\n  for i := 0 to high(LayeredBitmapReaders) do\n    if '.'+LayeredBitmapReaders[i].extension = ext then\n    begin\n      temp := LayeredBitmapReaders[i].theClass.Create;\n      try\n        temp.LoadFromFile(filenameUTF8);\n        Assign(temp);\n      finally\n        temp.Free;\n      end;\n      exit;\n    end;\n\n  //when using \"data\" extension, simply deserialize\n  if (ext='.dat') or (ext='.data') then\n  begin\n    if Assigned(LayeredBitmapLoadFromStreamProc) then\n    begin\n      stream := TFileStreamUTF8.Create(filenameUTF8, fmOpenRead, fmShareDenyWrite);\n      try\n        LayeredBitmapLoadFromStreamProc(stream, self);\n      finally\n        stream.Free;\n      end;\n    end else\n      raise exception.Create('Enable layer deserialization by calling BGRAStreamLayers.RegisterStreamLayers');\n  end else\n  begin\n    bmp := TBGRABitmap.Create(filenameUTF8, True);\n    Clear;\n    SetSize(bmp.Width,bmp.Height);\n    AddOwnedLayer(bmp);\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.LoadFromStream(stream: TStream);\nvar bmp: TBGRABitmap;\nbegin\n  if Assigned(LayeredBitmapLoadFromStreamProc) then\n  begin\n    if not Assigned(LayeredBitmapCheckStreamProc) or\n      LayeredBitmapCheckStreamProc(stream) then\n    begin\n      LayeredBitmapLoadFromStreamProc(Stream, self);\n      exit;\n    end;\n  end;\n\n  bmp := TBGRABitmap.Create(stream);\n  Clear;\n  SetSize(bmp.Width,bmp.Height);\n  AddOwnedLayer(bmp);\nend;\n\nprocedure TBGRALayeredBitmap.LoadFromResource(AFilename: string);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SetSize(AWidth, AHeight: integer);\nbegin\n  Unfreeze;\n  FWidth := AWidth;\n  FHeight := AHeight;\nend;\n\nprocedure TBGRALayeredBitmap.Clear;\nvar i: integer;\nbegin\n  Unfreeze;\n  for i := NbLayers-1 downto 0 do\n    RemoveLayer(i);\n  MemDirectory := nil;\n  ClearOriginals;\nend;\n\nprocedure TBGRALayeredBitmap.ClearOriginals;\nvar\n  i: Integer;\nbegin\n  if Assigned(FOriginals) then\n  begin\n    for i := 0 to OriginalCount-1 do\n      FOriginals[i].Instance.Free;\n    FreeAndNil(FOriginals);\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.RemoveLayer(index: integer);\nvar i: integer;\n  id: LongInt;\n  layersDir: TMemDirectory;\nbegin\n  if (index < 0) or (index >= NbLayers) then exit;\n  Unfreeze;\n  if Assigned(FMemDirectory) then\n  begin\n    id := LayerUniqueId[index];\n    if FMemDirectory.IndexOf(LayersDirectory,'')<>-1 then\n    begin\n      layersDir := FMemDirectory.Directory[FMemDirectory.AddDirectory(LayersDirectory)];\n      layersDir.Delete(IntToStr(id),'');\n    end;\n  end;\n  if FLayers[index].Owner then FLayers[index].Source.Free;\n  for i := index to FNbLayers-2 do\n    FLayers[i] := FLayers[i+1];\n  Dec(FNbLayers);\nend;\n\nprocedure TBGRALayeredBitmap.InsertLayer(index: integer; fromIndex: integer);\nvar info: TBGRALayerInfo;\n    i: integer;\nbegin\n  if (index < 0) or (index > NbLayers) or (index = fromIndex) then exit;\n  if (fromIndex < 0) or (fromIndex >= NbLayers) then exit;\n  Unfreeze;\n  info := FLayers[fromIndex];\n  for i := fromIndex to FNbLayers-2 do\n    FLayers[i] := FLayers[i+1];\n  for i := FNbLayers-1 downto index+1 do\n    FLayers[i] := FLayers[i-1];\n  FLayers[index] := info;\nend;\n\nprocedure TBGRALayeredBitmap.Assign(ASource: TBGRACustomLayeredBitmap; ASharedLayerIds: boolean;\n  ACopyAdditionalMemData: boolean);\nvar i,idx,idxOrig,idxNewOrig: integer;\n    usedOriginals: array of record\n       used: boolean;\n       sourceGuid,newGuid: TGuid;\n    end;\n    orig: TBGRALayerCustomOriginal;\n    stream: TMemoryStream;\n    targetDir, layerDir: TMemDirectory;\n\nbegin\n  if ASource = nil then\n    raise exception.Create('Unexpected nil reference');\n  Clear;\n  SetSize(ASource.Width,ASource.Height);\n  LinearBlend:= ASource.LinearBlend;\n  setlength(usedOriginals, ASource.GetOriginalCount);\n  for idxOrig := 0 to high(usedOriginals) do\n  with usedOriginals[idxOrig] do\n  begin\n    used:= false;\n    newGuid := GUID_NULL;\n  end;\n  for i := 0 to ASource.NbLayers-1 do\n  if (ASource.LayerOriginalGuid[i]<>GUID_NULL) and\n     (ASource.LayerOriginalKnown[i] or (ASource is TBGRALayeredBitmap)) then\n  begin\n    idxOrig := ASource.IndexOfOriginal(ASource.LayerOriginalGuid[i]);\n    if (idxOrig <> -1) and not usedOriginals[idxOrig].used then\n    begin\n      if ASource.GetOriginalByIndexLoaded(idxOrig) then\n      begin\n        orig := ASource.GetOriginalByIndex(idxOrig);\n        idxNewOrig := AddOriginal(orig, false);\n        usedOriginals[idxOrig].sourceGuid := orig.Guid;\n      end else\n      begin\n        stream := TMemoryStream.Create;\n        (ASource as TBGRALayeredBitmap).SaveOriginalToStream(idxOrig, stream);\n        stream.Position:= 0;\n        idxNewOrig := AddOriginalFromStream(stream,true);\n        stream.Free;\n        usedOriginals[idxOrig].sourceGuid := (ASource as TBGRALayeredBitmap).OriginalGuid[idxOrig];\n      end;\n      usedOriginals[idxOrig].newGuid := OriginalGuid[idxNewOrig];\n      usedOriginals[idxOrig].used := true;\n    end;\n  end;\n  for i := 0 to ASource.NbLayers-1 do\n  begin\n    idx := AddOwnedLayer(ASource.GetLayerBitmapCopy(i),ASource.LayerOffset[i],ASource.BlendOperation[i],ASource.LayerOpacity[i]);\n    LayerName[idx] := ASource.LayerName[i];\n    LayerVisible[idx] := ASource.LayerVisible[i];\n    if ASharedLayerIds and (ASource is TBGRALayeredBitmap) then\n      LayerUniqueId[idx] := TBGRALayeredBitmap(ASource).LayerUniqueId[i];\n    for idxOrig := 0 to high(usedOriginals) do\n      if usedOriginals[idxOrig].sourceGuid = ASource.LayerOriginalGuid[i] then\n      begin\n        LayerOriginalGuid[idx] := usedOriginals[idxOrig].newGuid;\n        LayerOriginalMatrix[idx] := ASource.LayerOriginalMatrix[i];\n        LayerOriginalRenderStatus[idx] := ASource.LayerOriginalRenderStatus[i];\n        break;\n      end;\n    if ASource is TBGRALayeredBitmap then\n    begin\n      layerDir := TBGRALayeredBitmap(ASource).GetLayerDirectory(i,false);\n      if Assigned(layerDir) then\n        layerDir.CopyTo(GetLayerDirectory(idx,true), true);\n    end;\n  end;\n  if ACopyAdditionalMemData and ASource.HasMemFiles then\n    for i := 0 to ASource.GetMemDirectory.Count-1 do\n    if (ASource.GetMemDirectory.Entry[i].CompareNameAndExtension(OriginalsDirectory,'')<>0) and\n       (ASource.GetMemDirectory.Entry[i].CompareNameAndExtension(LayersDirectory,'')<>0) and\n       (ASource.GetMemDirectory.IsDirectory[i]) then\n    begin\n      with ASource.GetMemDirectory.Entry[i] do\n        targetDir := GetMemDirectory.Directory[GetMemDirectory.AddDirectory(Name,Extension)];\n      ASource.GetMemDirectory.Directory[i].CopyTo(targetDir, true);\n    end;\nend;\n\nfunction TBGRALayeredBitmap.MoveLayerUp(index: integer): integer;\nbegin\n  if (index >= 0) and (index <= NbLayers-2) then\n  begin\n    InsertLayer(index+1,index);\n    result := index+1;\n  end else\n    result := -1;\nend;\n\nfunction TBGRALayeredBitmap.MoveLayerDown(index: integer): integer;\nbegin\n  if (index > 0) and (index <= NbLayers-1) then\n  begin\n    InsertLayer(index-1,index);\n    result := index-1;\n  end else\n    result := -1;\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(Source: TBGRABitmap; Opacity: byte\n  ): integer;\nbegin\n  result := AddLayer(Source, Point(0,0), DefaultBlendingOperation, Opacity, False);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(Source: TBGRABitmap; Position: TPoint;\n  BlendOp: TBlendOperation; Opacity: byte; Shared: boolean): integer;\nbegin\n  result := AddLayer(Source.Caption,Source,Position,BlendOp,Opacity,Shared);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(Source: TBGRABitmap; Position: TPoint;\n  Opacity: byte): integer;\nbegin\n  result := AddLayer(Source,Position,DefaultBlendingOperation,Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(Source: TBGRABitmap;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddLayer(Source,Point(0,0),BlendOp,Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(AName: string; Source: TBGRABitmap;\n  Opacity: byte): integer;\nbegin\n  result := AddLayer(AName,Source,Point(0,0),Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(AName: string; Source: TBGRABitmap;\n  Position: TPoint; BlendOp: TBlendOperation; Opacity: byte; Shared: boolean): integer;\nbegin\n  if length(FLayers) = FNbLayers then\n    setlength(FLayers, length(FLayers)*2+1);\n  FLayers[FNbLayers].Name := AName;\n  FLayers[FNbLayers].X := Position.X;\n  FLayers[FNbLayers].Y := Position.Y;\n  FLayers[FNbLayers].blendOp := BlendOp;\n  FLayers[FNbLayers].Opacity := Opacity;\n  FLayers[FNbLayers].Visible := true;\n  FLayers[FNbLayers].Frozen := false;\n  FLayers[FNbLayers].UniqueId := ProduceLayerUniqueId;\n  FLayers[FNbLayers].OriginalMatrix := AffineMatrixIdentity;\n  FLayers[FNbLayers].OriginalRenderStatus := orsNone;\n  FLayers[FNbLayers].OriginalGuid := GUID_NULL;\n  if Shared then\n  begin\n    FLayers[FNbLayers].Source := Source;\n    FLayers[FNbLayers].Owner := false;\n  end else\n  begin\n    FLayers[FNbLayers].Source := Source.Duplicate;\n    FLayers[FNbLayers].Owner := true;\n  end;\n  result := FNbLayers;\n  inc(FNbLayers);\n  if (FNbLayers = 1) and (FWidth = 0) and (FHeight = 0) and (Source <> nil) then\n    SetSize(Source.Width,Source.Height);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(AName: string; Source: TBGRABitmap;\n  Position: TPoint; Opacity: byte): integer;\nbegin\n  result := AddLayer(AName, Source, Position, DefaultBlendingOperation, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayer(AName: string; Source: TBGRABitmap;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddLayer(AName, Source, Point(0,0), blendOp, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddSharedLayer(Source: TBGRABitmap; Opacity: byte\n  ): integer;\nbegin\n  result := AddSharedLayer(Source, Point(0,0), DefaultBlendingOperation, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddSharedLayer(Source: TBGRABitmap;\n  Position: TPoint; BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddLayer(Source, Position, BlendOp, Opacity, True);\nend;\n\nfunction TBGRALayeredBitmap.AddSharedLayer(Source: TBGRABitmap;\n  Position: TPoint; Opacity: byte): integer;\nbegin\n  result := AddSharedLayer(Source, Position, DefaultBlendingOperation, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddSharedLayer(Source: TBGRABitmap;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddSharedLayer(Source, Point(0,0), blendOp, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromFile(AFileName: string; Opacity: byte\n  ): integer;\nbegin\n  result := AddOwnedLayer(TBGRABitmap.Create(AFilename),Opacity);\n  FLayers[result].Name := ExtractFileName(AFilename);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromFile(AFileName: string;\n  Position: TPoint; BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddOwnedLayer(TBGRABitmap.Create(AFilename),Position,BlendOp,Opacity);\n  FLayers[result].Name := ExtractFileName(AFilename);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromFile(AFileName: string;\n  Position: TPoint; Opacity: byte): integer;\nbegin\n  result := AddOwnedLayer(TBGRABitmap.Create(AFilename),Position,Opacity);\n  FLayers[result].Name := ExtractFileName(AFilename);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromFile(AFileName: string;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddOwnedLayer(TBGRABitmap.Create(AFilename),BlendOp,Opacity);\n  FLayers[result].Name := ExtractFileName(AFilename);\nend;\n\nfunction TBGRALayeredBitmap.AddOwnedLayer(ABitmap: TBGRABitmap; Opacity: byte\n  ): integer;\nbegin\n  result := AddSharedLayer(ABitmap,Opacity);\n  FLayers[result].Owner := True;\nend;\n\nfunction TBGRALayeredBitmap.AddOwnedLayer(ABitmap: TBGRABitmap;\n  Position: TPoint; BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddSharedLayer(ABitmap,Position,BlendOp,Opacity);\n  FLayers[result].Owner := True;\nend;\n\nfunction TBGRALayeredBitmap.AddOwnedLayer(ABitmap: TBGRABitmap;\n  Position: TPoint; Opacity: byte): integer;\nbegin\n  result := AddSharedLayer(ABitmap,Position,Opacity);\n  FLayers[result].Owner := True;\nend;\n\nfunction TBGRALayeredBitmap.AddOwnedLayer(ABitmap: TBGRABitmap;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddSharedLayer(ABitmap,BlendOp,Opacity);\n  FLayers[result].Owner := True;\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOriginal(const AGuid: TGuid;\n  Opacity: byte): integer;\nbegin\n  result := AddLayerFromOriginal(AGuid, DefaultBlendingOperation, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOriginal(const AGuid: TGuid;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddLayerFromOriginal(AGuid, AffineMatrixIdentity, BlendOp, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOriginal(const AGuid: TGuid;\n  Matrix: TAffineMatrix; Opacity: byte): integer;\nbegin\n  result := AddLayerFromOriginal(AGuid, Matrix, DefaultBlendingOperation, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOriginal(const AGuid: TGuid;\n  Matrix: TAffineMatrix; BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  result := AddOwnedLayer(TBGRABitmap.Create, BlendOp, Opacity);\n  LayerOriginalGuid[result] := AGuid;\n  LayerOriginalMatrix[result] := Matrix;\n  if not Assigned(LayerOriginal[result]) then\n    raise exception.Create('Original data or class not found');\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOwnedOriginal(\n  AOriginal: TBGRALayerCustomOriginal; Opacity: byte): integer;\nbegin\n  if IndexOfOriginal(AOriginal) = -1 then AddOriginal(AOriginal);\n  result := AddLayerFromOriginal(AOriginal.Guid, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOwnedOriginal(\n  AOriginal: TBGRALayerCustomOriginal; BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  if IndexOfOriginal(AOriginal) = -1 then AddOriginal(AOriginal);\n  result := AddLayerFromOriginal(AOriginal.Guid, BlendOp, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOwnedOriginal(\n  AOriginal: TBGRALayerCustomOriginal; Matrix: TAffineMatrix; Opacity: byte): integer;\nbegin\n  if IndexOfOriginal(AOriginal) = -1 then AddOriginal(AOriginal);\n  result := AddLayerFromOriginal(AOriginal.Guid, Matrix, Opacity);\nend;\n\nfunction TBGRALayeredBitmap.AddLayerFromOwnedOriginal(\n  AOriginal: TBGRALayerCustomOriginal; Matrix: TAffineMatrix;\n  BlendOp: TBlendOperation; Opacity: byte): integer;\nbegin\n  if IndexOfOriginal(AOriginal) = -1 then AddOriginal(AOriginal);\n  result := AddLayerFromOriginal(AOriginal.Guid, Matrix, BlendOp, Opacity);\nend;\n\nclass function TBGRALayeredBitmap.IsValidRegistryIndentifier(AIdentifier: string): boolean;\nvar\n  i: Integer;\nbegin\n  if length(AIdentifier) = 0 then exit(false);\n  for i := 1 to length(AIdentifier) do\n    if not (AIdentifier[i] in ['A'..'Z','a'..'z','0'..'9','_','-']) then exit(false);\n  exit(true);\nend;\n\nfunction TBGRALayeredBitmap.GetLayerRegistry(ALayerIndex: integer;\n  ARegistryIdentifier: string): RawByteString;\nvar\n  layerDir, registryDir: TMemDirectory;\nbegin\n  if not IsValidRegistryIndentifier(ARegistryIdentifier) then\n    raise exception.Create('Invalid registry identifier');\n  layerDir := GetLayerDirectory(ALayerIndex, false);\n  if layerDir = nil then exit('');\n  registryDir := layerDir.Directory[layerDir.AddDirectory(RegistrySubDirectory,'')];\n  result := registryDir.RawStringByFilename[ARegistryIdentifier]\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerRegistry(ALayerIndex: integer;\n  ARegistryIdentifier: string; AValue: RawByteString);\nvar\n  layerDir, registryDir: TMemDirectory;\nbegin\n  if not IsValidRegistryIndentifier(ARegistryIdentifier) then\n    raise exception.Create('Invalid registry identifier');\n  layerDir := GetLayerDirectory(ALayerIndex, true);\n  registryDir := layerDir.Directory[layerDir.AddDirectory(RegistrySubDirectory,'')];\n  if length(AValue) = 0 then\n    registryDir.Delete(ARegistryIdentifier,'')\n  else registryDir.RawStringByFilename[ARegistryIdentifier] := AValue;\nend;\n\nprocedure TBGRALayeredBitmap.SaveLayerRegistryToStream(ALayerIndex: integer;\n  AStream: TStream);\nvar\n  layerDir, registryDir: TMemDirectory;\nbegin\n  layerDir := GetLayerDirectory(ALayerIndex, true);\n  registryDir := layerDir.Directory[layerDir.AddDirectory(RegistrySubDirectory,'')];\n  registryDir.SaveToStream(AStream);\nend;\n\nprocedure TBGRALayeredBitmap.LoadLayerRegistryFromStream(ALayerIndex: integer;\n  AStream: TStream);\nvar\n  layerDir, registryDir: TMemDirectory;\nbegin\n  layerDir := GetLayerDirectory(ALayerIndex, true);\n  registryDir := layerDir.Directory[layerDir.AddDirectory(RegistrySubDirectory,'')];\n  registryDir.LoadFromStream(AStream);\nend;\n\nfunction TBGRALayeredBitmap.GetGlobalRegistry(ARegistryIdentifier: string): RawByteString;\nvar\n  registryDir: TMemDirectory;\nbegin\n  if not IsValidRegistryIndentifier(ARegistryIdentifier) then\n    raise exception.Create('Invalid registry identifier');\n  registryDir := MemDirectory.Directory[MemDirectory.AddDirectory(RegistrySubDirectory,'')];\n  result := registryDir.RawStringByFilename[ARegistryIdentifier]\nend;\n\nprocedure TBGRALayeredBitmap.SetGlobalRegistry(ARegistryIdentifier: string; AValue: RawByteString);\nvar\n  registryDir: TMemDirectory;\nbegin\n  if not IsValidRegistryIndentifier(ARegistryIdentifier) then\n    raise exception.Create('Invalid registry identifier');\n  registryDir := MemDirectory.Directory[MemDirectory.AddDirectory(RegistrySubDirectory,'')];\n  if length(AValue) = 0 then\n    registryDir.Delete(ARegistryIdentifier,'')\n  else registryDir.RawStringByFilename[ARegistryIdentifier] := AValue;\nend;\n\nfunction TBGRALayeredBitmap.AddOriginal(AOriginal: TBGRALayerCustomOriginal; AOwned: boolean): integer;\nvar\n  newGuid: TGuid;\nbegin\n  if AOriginal = nil then\n    raise exception.Create('Unexpected nil reference');;\n  if AOriginal.Guid = GUID_NULL then\n  begin\n    if CreateGUID(newGuid)<> 0 then\n    begin\n      if AOwned then AOriginal.Free;\n      raise exception.Create('Error while creating GUID');\n    end;\n    AOriginal.Guid := newGuid;\n  end else\n  begin\n    if IndexOfOriginal(AOriginal) <> -1 then\n    begin\n      if AOwned then AOriginal.Free;\n      raise exception.Create('Original already added');\n    end;\n    if IndexOfOriginal(AOriginal.Guid) <> -1 then\n    begin\n      if AOwned then AOriginal.Free;\n      raise exception.Create('GUID is already in use');\n    end;\n  end;\n  if FOriginals = nil then FOriginals := TBGRALayerOriginalList.Create;\n  if AOwned then\n  begin\n    result := FOriginals.Add(BGRALayerOriginalEntry(AOriginal));\n    AOriginal.OnChange:= @OriginalChange;\n    AOriginal.OnEditingChange:= @OriginalEditingChange;\n  end\n  else\n  begin\n    StoreOriginal(AOriginal);\n    result := FOriginals.Add(BGRALayerOriginalEntry(AOriginal.Guid));\n  end;\nend;\n\nfunction TBGRALayeredBitmap.AddOriginalFromStream(AStream: TStream;\n  ALateLoad: boolean): integer;\nvar\n  newGuid: TGUID;\nbegin\n  if CreateGUID(newGuid)<> 0 then raise exception.Create('Error while creating GUID');\n  result := AddOriginalFromStream(AStream, newGuid, ALateLoad);\nend;\n\n\nfunction TBGRALayeredBitmap.AddOriginalFromStream(AStream: TStream;\n  const AGuid: TGuid; ALateLoad: boolean): integer;\nvar\n  storage: TBGRAMemOriginalStorage;\nbegin\n  storage:= TBGRAMemOriginalStorage.Create;\n  storage.LoadFromStream(AStream);\n  try\n    result := AddOriginalFromStorage(storage, AGuid, ALateLoad);\n  finally\n    storage.Free;\n  end;\nend;\n\nfunction TBGRALayeredBitmap.AddOriginalFromStorage(AStorage: TBGRAMemOriginalStorage; ALateLoad: boolean): integer;\nvar\n  newGuid: TGUID;\nbegin\n  if CreateGUID(newGuid)<> 0 then raise exception.Create('Error while creating GUID');\n  result := AddOriginalFromStorage(AStorage, newGuid, ALateLoad);\nend;\n\nfunction TBGRALayeredBitmap.AddOriginalFromStorage(\n  AStorage: TBGRAMemOriginalStorage; const AGuid: TGuid; ALateLoad: boolean): integer;\nvar\n  origClassName: String;\n  origClass: TBGRALayerOriginalAny;\n  orig: TBGRALayerCustomOriginal;\n  dir, subdir: TMemDirectory;\n  raiseError: Boolean;\nbegin\n  result := -1;\n  origClassName := AStorage.RawString['class'];\n  if origClassName = '' then raise Exception.Create('Original class name not defined');\n  if ALateLoad then\n  begin\n    if IndexOfOriginal(AGuid)<>-1 then\n      raise exception.Create('Duplicate GUID');\n\n    dir := MemDirectory.Directory[MemDirectory.AddDirectory(OriginalsDirectory)];\n    subdir := dir.Directory[dir.AddDirectory(GUIDToString(AGuid))];\n    AStorage.CopyTo(subdir);\n\n    if FOriginals = nil then FOriginals := TBGRALayerOriginalList.Create;\n    result := FOriginals.Add(BGRALayerOriginalEntry(AGuid));\n  end else\n  begin\n    origClass := FindLayerOriginalClass(origClassName);\n    if origClass = nil then raise exception.Create('Original class not found (it can be registered with the RegisterLayerOriginal function)');\n    orig := origClass.Create;\n    try\n      orig.LoadFromStorage(AStorage);\n      orig.Guid := AGuid;\n      result := AddOriginal(orig, true);\n    except on ex:exception do\n      begin\n        orig.Free;\n        raiseError := true;\n        if Assigned(FOnOriginalLoadError) then\n          FOnOriginalLoadError(self, ex.Message, raiseError);\n        if raiseError then\n          raise ex;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SaveOriginalToStream(AIndex: integer;\n  AStream: TStream);\nvar\n  dir: TMemDirectory;\n  c: TBGRALayerOriginalAny;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  if Assigned(FOriginals[AIndex].Instance) then\n    FOriginals[AIndex].Instance.SaveToStream(AStream)\n  else\n  begin\n    FindOriginal(FOriginals[AIndex].Guid, dir, c);\n    if dir = nil then\n      raise exception.Create('Original directory not found');\n    dir.SaveToStream(AStream);\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.SaveOriginalToStream(const AGuid: TGuid;\n  AStream: TStream);\nvar\n  idxOrig: Integer;\nbegin\n  idxOrig := IndexOfOriginal(AGuid);\n  if idxOrig = -1 then raise exception.Create('Original not found');\n  SaveOriginalToStream(idxOrig, AStream);\nend;\n\nfunction TBGRALayeredBitmap.RemoveOriginal(AOriginal: TBGRALayerCustomOriginal): boolean;\nvar\n  idx: Integer;\nbegin\n  idx := IndexOfOriginal(AOriginal);\n  if idx = -1 then exit(false);\n  DeleteOriginal(idx);\n  result := true;\nend;\n\nprocedure TBGRALayeredBitmap.DeleteOriginal(AIndex: integer);\nvar\n  dir: TMemDirectory;\n  i: Integer;\n  guid: TGuid;\nbegin\n  if (AIndex < 0) or (AIndex >= OriginalCount) then\n    raise ERangeError.Create('Index out of bounds');\n\n  guid := FOriginals[AIndex].Guid;\n  for i := 0 to NbLayers-1 do\n    if LayerOriginalGuid[i] = guid then\n    begin\n      LayerOriginalGuid[i] := GUID_NULL;\n      LayerOriginalMatrix[i] := AffineMatrixIdentity;\n    end;\n\n  dir := MemDirectory.Directory[MemDirectory.AddDirectory(OriginalsDirectory)];\n  dir.Delete(GUIDToString(guid),'');\n\n  FOriginals[AIndex].Instance.Free;\n  FOriginals.Delete(AIndex); //AOriginals freed\nend;\n\nprocedure TBGRALayeredBitmap.NotifyLoaded;\nvar\n  foundGuid: array of TGuid;\n  nbFoundGuid: integer;\n\n  procedure AddGuid(const AGuid: TGuid);\n  begin\n    foundGuid[nbFoundGuid] := AGuid;\n    inc(nbFoundGuid);\n  end;\n\n  function IndexOfGuid(AGuid: TGuid): integer;\n  var\n    i: Integer;\n  begin\n    for i := 0 to nbFoundGuid-1 do\n      if foundGuid[i] = AGuid then exit(i);\n    result := -1;\n  end;\n\nvar\n  i: Integer;\n  dir: TMemDirectory;\n  newGuid: TGUID;\n\nbegin\n  inherited NotifyLoaded;\n\n  //if there are no files in memory, we are sure that there are no originals\n  if not HasMemFiles then\n  begin\n    ClearOriginals;\n    exit;\n  end;\n\n  //determine list of GUID of originals\n  dir := MemDirectory.Directory[MemDirectory.AddDirectory(OriginalsDirectory)];\n  setlength(foundGuid, dir.Count);\n  nbFoundGuid:= 0;\n  for i := 0 to dir.Count-1 do\n    if dir.IsDirectory[i] and (dir.Entry[i].Extension = '') then\n    begin\n      if TryStringToGUID(dir.Entry[i].Name, newGuid) then\n        AddGuid(newGuid);\n    end;\n\n  //remove originals that do not exist anymore\n  for i := OriginalCount-1 downto 0 do\n    if IndexOfGuid(FOriginals[i].Guid) = -1 then\n      DeleteOriginal(i);\n\n  //add originals from memory directory\n  for i := 0 to nbFoundGuid-1 do\n  begin\n    if IndexOfOriginal(foundGuid[i]) = -1 then\n    begin\n      if FOriginals = nil then FOriginals := TBGRALayerOriginalList.Create;\n      FOriginals.Add(BGRALayerOriginalEntry(foundGuid[i]));\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.NotifySaving;\nvar\n  i, j, id, ErrPos: Integer;\n  layersDir, renderDir: TMemDirectory;\nbegin\n  inherited NotifySaving;\n\n  RenderOriginalsIfNecessary;\n\n  for i := 0 to OriginalCount-1 do\n    if Assigned(FOriginals[i].Instance) then\n      StoreOriginal(FOriginals[i].Instance);\n\n  //check layer storage\n  if MemDirectory.IndexOf(LayersDirectory,'')<>-1 then\n  begin\n    layersDir := MemDirectory.Directory[MemDirectory.AddDirectory(LayersDirectory)];\n    for i := layersDir.Count-1 downto 0 do\n    if layersDir.IsDirectory[i] then\n    begin\n      renderDir := layersDir.Directory[i].FindPath(RenderSubDirectory);\n\n      if Assigned(renderDir) then\n      begin\n        //discard temporary files\n        renderDir.Delete(RenderTempSubDirectory,'');\n\n        //compress significant files\n        for j := 0 to renderDir.Count-1 do\n        begin\n          if renderDir.Entry[j].FileSize > 128 then\n            renderDir.IsEntryCompressed[j] := true;\n        end;\n      end;\n\n      //remove invalid layer references\n      val(layersDir.Entry[i].Name, id, errPos);\n      if (errPos <> 0) or (GetLayerIndexFromId(id)=-1) then\n        layersDir.Delete(i);\n    end;\n    if layersDir.Count = 0 then\n      MemDirectory.Delete(LayersDirectory,'');\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.RenderLayerFromOriginal(layer: integer;\n  ADraft: boolean; AFullSizeLayer: boolean = false);\nbegin\n  RenderLayerFromOriginal(layer, ADraft, rectF(0,0,Width,Height), AFullSizeLayer);\nend;\n\nprocedure TBGRALayeredBitmap.RenderLayerFromOriginal(layer: integer;\n  ADraft: boolean; ARenderBounds: TRect; AFullSizeLayer: boolean = false);\nvar\n  orig: TBGRALayerCustomOriginal;\n  rAll, rNewBounds, rInterRender: TRect;\n  newSource: TBGRABitmap;\n  layerDir, renderDir: TMemDirectory;\n  j: integer;\n\n  procedure FreeSource;\n  begin\n    if FLayers[layer].Owner then\n      FreeAndNil(FLayers[layer].Source)\n    else\n      FLayers[layer].Source := nil;\n  end;\n\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds');\n\n  orig := LayerOriginal[layer];\n  if Assigned(orig) then\n  begin\n    Unfreeze(layer);\n    layerDir := GetLayerDirectory(layer, true);\n    renderDir := layerDir.Directory[layerDir.AddDirectory(RenderSubDirectory)];\n    //uncompress files for faster access\n    for j := 0 to renderDir.Count-1 do\n      renderDir.IsEntryCompressed[j] := false;\n    orig.RenderStorage := TBGRAMemOriginalStorage.Create(renderDir);\n\n    rAll := rect(0,0,Width,Height);\n    if AFullSizeLayer then\n      rNewBounds := rAll\n    else\n    begin\n      rNewBounds := orig.GetRenderBounds(rAll,FLayers[layer].OriginalMatrix);\n      rNewBounds.Intersect(rAll);\n    end;\n    rInterRender := TRect.Intersect(ARenderBounds, rNewBounds);\n    if (FLayers[layer].x = rNewBounds.Left) and\n      (FLayers[layer].y = rNewBounds.Top) and\n      Assigned(FLayers[layer].Source) and\n      (FLayers[layer].Source.Width = rNewBounds.Width) and\n      (FLayers[layer].Source.Height = rNewBounds.Height) then\n    begin\n      rInterRender.Offset(-rNewBounds.Left, -rNewBounds.Top);\n      FLayers[layer].Source.FillRect(rInterRender, BGRAPixelTransparent, dmSet);\n      FLayers[layer].Source.ClipRect := rInterRender;\n      orig.Render(FLayers[layer].Source, Point(-rNewBounds.Left,-rNewBounds.Top), FLayers[layer].OriginalMatrix, ADraft);\n      FLayers[layer].Source.NoClip;\n    end else\n    begin\n      if rInterRender = rNewBounds then\n      begin\n        FreeSource;\n        newSource := TBGRABitmap.Create(rNewBounds.Width,rNewBounds.Height);\n        orig.Render(newSource, Point(-rNewBounds.Left,-rNewBounds.Top), FLayers[layer].OriginalMatrix, ADraft);\n      end else\n      begin\n        newSource := TBGRABitmap.Create(rNewBounds.Width,rNewBounds.Height);\n        newSource.PutImage(FLayers[layer].x - rNewBounds.Left, FLayers[layer].y - rNewBounds.Top, FLayers[layer].Source, dmSet);\n        FreeSource;\n        rInterRender.Offset(-rNewBounds.Left, -rNewBounds.Top);\n        if not rInterRender.IsEmpty then\n        begin\n          newSource.FillRect(rInterRender, BGRAPixelTransparent, dmSet);\n          newSource.ClipRect := rInterRender;\n          orig.Render(newSource, Point(-rNewBounds.Left,-rNewBounds.Top), FLayers[layer].OriginalMatrix, ADraft);\n          newSource.NoClip;\n        end;\n      end;\n      FLayers[layer].Source := newSource;\n      FLayers[layer].x := rNewBounds.Left;\n      FLayers[layer].y := rNewBounds.Top;\n    end;\n\n    orig.RenderStorage.AffineMatrix['last-matrix'] := FLayers[layer].OriginalMatrix;\n    orig.RenderStorage.Free;\n    orig.renderStorage := nil;\n    if renderDir.Count = 1 then //only matrix\n      layerDir.Delete(RenderSubDirectory,'');\n  end;\n  if ADraft then\n    FLayers[layer].OriginalRenderStatus := orsDraft\n  else\n    FLayers[layer].OriginalRenderStatus := orsProof;\n  FLayers[layer].OriginalInvalidatedBounds := EmptyRectF;\nend;\n\nprocedure TBGRALayeredBitmap.RenderLayerFromOriginal(layer: integer;\n  ADraft: boolean; ARenderBoundsF: TRectF; AFullSizeLayer: boolean = false);\nvar\n  r: TRect;\nbegin\n  with ARenderBoundsF do\n    r := Rect(floor(Left),floor(Top),ceil(Right),ceil(Bottom));\n  RenderLayerFromOriginal(layer, ADraft, r, AFullSizeLayer);\nend;\n\nprocedure TBGRALayeredBitmap.RenderLayerFromOriginalIfNecessary(layer: integer;\n  ADraft: boolean; var ABounds: TRect);\n  procedure UnionLayerArea(ALayer: integer);\n  var\n    r: TRect;\n  begin\n    if (FLayers[ALayer].Source = nil) or\n      (FLayers[ALayer].Source.Width = 0) or\n      (FLayers[ALayer].Source.Height = 0) then exit;\n\n    r := RectWithSize(LayerOffset[ALayer].X, LayerOffset[ALayer].Y,\n                      FLayers[ALayer].Source.Width, FLayers[ALayer].Source.Height);\n    if ABounds.IsEmpty then ABounds := r else\n      ABounds.Union(r);\n  end;\n\nvar\n  r: TRect;\n\nbegin\n  case LayerOriginalRenderStatus[layer] of\n  orsNone:\n       begin\n         UnionLayerArea(layer);\n         RenderLayerFromOriginal(layer, ADraft);\n         UnionLayerArea(layer);\n       end;\n  orsDraft: if not ADraft then\n       begin\n         UnionLayerArea(layer);\n         RenderLayerFromOriginal(layer, ADraft);\n         UnionLayerArea(layer);\n       end;\n  orsPartialDraft,orsPartialProof:\n       if not ADraft and (LayerOriginalRenderStatus[layer] = orsPartialDraft) then\n       begin\n         UnionLayerArea(layer);\n         RenderLayerFromOriginal(layer, ADraft, rect(0,0,Width,Height), true);\n         UnionLayerArea(layer);\n       end\n       else\n       begin\n         with FLayers[layer].OriginalInvalidatedBounds do\n           r := Rect(floor(Left),floor(Top),ceil(Right),ceil(Bottom));\n         RenderLayerFromOriginal(layer, ADraft, r, true);\n         if not r.Isempty then\n         begin\n           if ABounds.IsEmpty then\n             ABounds := r\n           else\n             ABounds.Union(r);\n         end;\n       end;\n  end;\nend;\n\nfunction TBGRALayeredBitmap.RenderOriginalsIfNecessary(ADraft: boolean): TRect;\nvar\n  i: Integer;\nbegin\n  result:= EmptyRect;\n  for i := 0 to NbLayers-1 do\n    RenderLayerFromOriginalIfNecessary(i, ADraft, result);\nend;\n\nfunction TBGRALayeredBitmap.RenderOriginalIfNecessary(const AGuid: TGuid;\n  ADraft: boolean): TRect;\nvar\n  i: Integer;\nbegin\n  result:= EmptyRect;\n  for i := 0 to NbLayers-1 do\n    if LayerOriginalGuid[i] = AGuid then\n      RenderLayerFromOriginalIfNecessary(i, ADraft, result);\nend;\n\nprocedure TBGRALayeredBitmap.RemoveUnusedOriginals;\nvar useCount: array of integer;\n  i, idxOrig: Integer;\nbegin\n  if OriginalCount = 0 then exit;\n  setlength(useCount, OriginalCount);\n  for i := 0 to NbLayers-1 do\n  begin\n    idxOrig := IndexOfOriginal(LayerOriginalGuid[i]);\n    if idxOrig <> -1 then inc(useCount[idxOrig]);\n  end;\n  for i := high(useCount) downto 0 do\n    if useCount[i] = 0 then DeleteOriginal(i);\nend;\n\nprocedure TBGRALayeredBitmap.UnloadOriginals;\nvar\n  i: Integer;\nbegin\n  for i := 0 to OriginalCount-1 do\n    UnloadOriginal(i);\nend;\n\nprocedure TBGRALayeredBitmap.UnloadOriginal(AIndex: integer);\nvar\n  origInfo: TBGRALayerOriginalEntry;\nbegin\n  if (AIndex >= 0) and (AIndex < OriginalCount) then\n  begin\n    origInfo := FOriginals[AIndex];\n    if Assigned(origInfo.Instance) then\n    begin\n      StoreOriginal(origInfo.Instance);\n      FreeAndNil(origInfo.Instance);\n      FOriginals[AIndex] := origInfo;\n    end;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.UnloadOriginal(const AGuid: TGuid);\nbegin\n  UnloadOriginal(IndexOfOriginal(AGuid));\nend;\n\ndestructor TBGRALayeredBitmap.Destroy;\nbegin\n  FOriginalEditor.Free;\n  inherited Destroy;\nend;\n\nconstructor TBGRALayeredBitmap.Create;\nbegin\n  inherited Create;\n  FWidth := 0;\n  FHeight := 0;\n  FNbLayers:= 0;\n  FOriginals := nil;\nend;\n\nconstructor TBGRALayeredBitmap.Create(AWidth, AHeight: integer);\nbegin\n  inherited Create;\n  if AWidth < 0 then\n    FWidth := 0\n  else\n    FWidth := AWidth;\n  if AHeight < 0 then\n    FHeight := 0\n  else\n    FHeight := AHeight;\n  FNbLayers:= 0;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerBitmapCopy(layer: integer): TBGRABitmap;\nbegin\n  result := GetLayerBitmapDirectly(layer).Duplicate;\nend;\n\nfunction TBGRALayeredBitmap.GetLayerIndexFromId(AIdentifier: integer): integer;\nvar i: integer;\nbegin\n  for i := 0 to NbLayers-1 do\n    if FLayers[i].UniqueId = AIdentifier then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1; //not found\nend;\n\nfunction TBGRALayeredBitmap.Duplicate(ASharedLayerIds: boolean): TBGRALayeredBitmap;\nbegin\n  result := TBGRALayeredBitmap.Create;\n  result.Assign(self, ASharedLayerIds);\nend;\n\nfunction TBGRALayeredBitmap.ProduceLayerUniqueId: integer;\nbegin\n  result := InterLockedIncrement(NextLayerUniqueId);\nend;\n\nprocedure TBGRALayeredBitmap.RotateCW;\nvar i: integer;\n  newBmp: TBGRABitmap;\n  newOfs: TPointF;\n  m: TAffineMatrix;\nbegin\n  SetSize(Height,Width); //unfreeze\n  m := AffineMatrixTranslation(Width,0)*AffineMatrixRotationDeg(90);\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    newOfs:= m*PointF(FLayers[i].x,FLayers[i].y+FLayers[i].Source.Height);\n    newBmp := FLayers[i].Source.RotateCW;\n    if FLayers[i].Owner then FreeAndNil(FLayers[i].Source);\n    FLayers[i].Source := newBmp;\n    FLayers[i].Owner := true;\n    FLayers[i].x := round(newOfs.x);\n    FLayers[i].y := round(newOfs.y);\n    FLayers[i].OriginalMatrix := m*FLayers[i].OriginalMatrix;\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.RotateCCW;\nvar i: integer;\n  newBmp: TBGRABitmap;\n  newOfs: TPointF;\n  m: TAffineMatrix;\nbegin\n  SetSize(Height,Width); //unfreeze\n  m := AffineMatrixTranslation(0,Height)*AffineMatrixRotationDeg(-90);\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    newOfs:= m*PointF(FLayers[i].x+FLayers[i].Source.Width,FLayers[i].y);\n    newBmp := FLayers[i].Source.RotateCCW;\n    if FLayers[i].Owner then FreeAndNil(FLayers[i].Source);\n    FLayers[i].Source := newBmp;\n    FLayers[i].Owner := true;\n    FLayers[i].x := round(newOfs.x);\n    FLayers[i].y := round(newOfs.y);\n    FLayers[i].OriginalMatrix := m*FLayers[i].OriginalMatrix;\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.RotateUD;\nvar i: integer;\nbegin\n  Unfreeze;\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    RotateUD(i);\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.RotateUD(ALayerIndex: integer);\nbegin\n  if (ALayerIndex < 0) or (ALayerIndex >= NbLayers) then\n    raise ERangeError.Create('Index out of bounds');\n  Unfreeze(ALayerIndex);\n  if FLayers[ALayerIndex].Owner then\n    FLayers[ALayerIndex].Source.RotateUDInplace\n  else\n  begin\n    FLayers[ALayerIndex].Source := FLayers[ALayerIndex].Source.RotateUD;\n    FLayers[ALayerIndex].Owner := true;\n  end;\n  FLayers[ALayerIndex].x := Width-FLayers[ALayerIndex].x-FLayers[ALayerIndex].Source.Width;\n  FLayers[ALayerIndex].y := Height-FLayers[ALayerIndex].y-FLayers[ALayerIndex].Source.Height;\n  FLayers[ALayerIndex].OriginalMatrix := AffineMatrixTranslation(+Width/2,+Height/2)*AffineMatrixScale(-1,-1)*AffineMatrixTranslation(-Width/2,-Height/2)*FLayers[ALayerIndex].OriginalMatrix;\nend;\n\nprocedure TBGRALayeredBitmap.HorizontalFlip;\nvar i: integer;\nbegin\n  Unfreeze;\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    HorizontalFlip(i);\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.HorizontalFlip(ALayerIndex: integer);\nbegin\n  if (ALayerIndex < 0) or (ALayerIndex >= NbLayers) then\n    raise ERangeError.Create('Index out of bounds');\n  Unfreeze(ALayerIndex);\n  if FLayers[ALayerIndex].Owner then\n    FLayers[ALayerIndex].Source.HorizontalFlip\n  else\n  begin\n    FLayers[ALayerIndex].Source := FLayers[ALayerIndex].Source.Duplicate(True);\n    FLayers[ALayerIndex].Source.HorizontalFlip;\n    FLayers[ALayerIndex].Owner := true;\n  end;\n  FLayers[ALayerIndex].x := Width-FLayers[ALayerIndex].x-FLayers[ALayerIndex].Source.Width;\n  FLayers[ALayerIndex].OriginalMatrix := AffineMatrixTranslation(+Width/2,0)*AffineMatrixScale(-1,1)*AffineMatrixTranslation(-Width/2,0)*FLayers[ALayerIndex].OriginalMatrix;\nend;\n\nprocedure TBGRALayeredBitmap.VerticalFlip;\nvar i: integer;\nbegin\n  Unfreeze;\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    VerticalFlip(i);\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.VerticalFlip(ALayerIndex: integer);\nbegin\n  if (ALayerIndex < 0) or (ALayerIndex >= NbLayers) then\n    raise ERangeError.Create('Index out of bounds');\n  Unfreeze(ALayerIndex);\n  if FLayers[ALayerIndex].Owner then\n    FLayers[ALayerIndex].Source.VerticalFlip\n  else\n  begin\n    FLayers[ALayerIndex].Source := FLayers[ALayerIndex].Source.Duplicate(True);\n    FLayers[ALayerIndex].Source.VerticalFlip;\n    FLayers[ALayerIndex].Owner := true;\n  end;\n  FLayers[ALayerIndex].y := Height-FLayers[ALayerIndex].y-FLayers[ALayerIndex].Source.Height;\n  FLayers[ALayerIndex].OriginalMatrix := AffineMatrixTranslation(0,+Height/2)*AffineMatrixScale(1,-1)*AffineMatrixTranslation(0,-Height/2)*FLayers[ALayerIndex].OriginalMatrix;\nend;\n\nprocedure TBGRALayeredBitmap.Resample(AWidth, AHeight: integer;\n  AResampleMode: TResampleMode; AFineResampleFilter: TResampleFilter);\nvar i, prevWidth, prevHeight: integer;\n    resampled: TBGRABitmap;\n    oldFilter : TResampleFilter;\n    dummyRect: TRect;\nbegin\n  if (AWidth < 0) or (AHeight < 0) then\n    raise exception.Create('Invalid size');\n  prevWidth := Width;\n  if prevWidth < 1 then prevWidth := AWidth;\n  prevHeight := Height;\n  if prevHeight < 1 then prevHeight := AHeight;\n  SetSize(AWidth, AHeight); //unfreeze\n  dummyRect := EmptyRect;\n  for i := 0 to NbLayers-1 do\n  begin\n    if Assigned(OnActionProgress) then OnActionProgress(self, round(i*100/NbLayers));\n    if (FLayers[i].OriginalGuid <> GUID_NULL) and LayerOriginalKnown[i] then\n    begin\n      LayerOriginalMatrix[i] := AffineMatrixScale(AWidth/prevWidth,AHeight/prevHeight)*LayerOriginalMatrix[i];\n      if AResampleMode = rmFineResample then RenderLayerFromOriginalIfNecessary(i, false, dummyRect);\n    end else\n    begin\n      if LayerBitmap[i].NbPixels <> 0 then\n      begin\n        oldFilter := LayerBitmap[i].ResampleFilter;\n        LayerBitmap[i].ResampleFilter := AFineResampleFilter;\n        resampled := LayerBitmap[i].Resample(max(1,round(LayerBitmap[i].Width*AWidth/prevWidth)),\n          max(1,round(LayerBitmap[i].Height*AHeight/prevHeight)), AResampleMode);\n        LayerBitmap[i].ResampleFilter := oldFilter;\n        SetLayerBitmap(i, resampled, True);\n      end;\n      with LayerOffset[i] do\n        LayerOffset[i] := Point(round(X*AWidth/prevWidth),round(Y*AHeight/prevHeight));\n    end;\n  end;\n  if Assigned(OnActionDone) then OnActionDone(self);\nend;\n\nprocedure TBGRALayeredBitmap.SetLayerBitmap(layer: integer;\n  ABitmap: TBGRABitmap; AOwned: boolean);\nvar\n  layerDir: TMemDirectory;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds')\n  else\n  begin\n    if ABitmap = FLayers[layer].Source then exit;\n    Unfreeze(layer);\n    if FLayers[layer].Owner then FLayers[layer].Source.Free;\n    FLayers[layer].Source := ABitmap;\n    FLayers[layer].Owner := AOwned;\n    FLayers[layer].OriginalGuid := GUID_NULL;\n    FLayers[layer].OriginalMatrix := AffineMatrixIdentity;\n    layerDir := GetLayerDirectory(layer, false);\n    if Assigned(layerDir) then\n      layerDir.Delete(RenderSubDirectory,'');\n  end;\nend;\n\nfunction TBGRALayeredBitmap.TakeLayerBitmap(layer: integer): TBGRABitmap;\nbegin\n  result := GetLayerBitmapDirectly(layer);\n  if Assigned(result) then\n  begin\n    if FLayers[layer].Owner then FLayers[layer].Owner := false\n    else result := result.Duplicate;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.ApplyLayerOffset(ALayerIndex: integer;\n  APadWithTranparentPixels: boolean);\nvar\n  r: TRect;\n  newBmp: TBGRABitmap;\nbegin\n  if APadWithTranparentPixels then\n  begin\n    if (LayerOffset[ALayerIndex].X=0) and (LayerOffset[ALayerIndex].Y=0) and\n       (LayerBitmap[ALayerIndex].Width=Width) and (LayerBitmap[ALayerIndex].Height=Height) then exit;\n    newBmp := TBGRABitmap.Create(Width,Height);\n    newBmp.PutImage(LayerOffset[ALayerIndex].X, LayerOffset[ALayerIndex].Y, LayerBitmap[ALayerIndex], dmSet);\n    if FLayers[ALayerIndex].Owner then FLayers[ALayerIndex].Source.Free;\n    FLayers[ALayerIndex].Source := newBmp;\n    FLayers[ALayerIndex].Owner := true;\n    FLayers[ALayerIndex].x := 0;\n    FLayers[ALayerIndex].y := 0;\n  end else\n  begin\n    if (LayerOffset[ALayerIndex].X>=0) and (LayerOffset[ALayerIndex].Y>=0) and\n       (LayerOffset[ALayerIndex].X+LayerBitmap[ALayerIndex].Width <= Width) and\n       (LayerOffset[ALayerIndex].Y+LayerBitmap[ALayerIndex].Height <= Height) then exit;\n    r := RectWithSize(LayerOffset[ALayerIndex].X, LayerOffset[ALayerIndex].Y,\n                      LayerBitmap[ALayerIndex].Width, LayerBitmap[ALayerIndex].Height);\n    r.Intersect( rect(0,0,Width,Height) );\n    newBmp := TBGRABitmap.Create(r.Width,r.Height);\n    newBmp.PutImage(LayerOffset[ALayerIndex].X - r.Left, LayerOffset[ALayerIndex].Y - r.Top, LayerBitmap[ALayerIndex], dmSet);\n    if FLayers[ALayerIndex].Owner then FLayers[ALayerIndex].Source.Free;\n    FLayers[ALayerIndex].Source := newBmp;\n    FLayers[ALayerIndex].Owner := true;\n    FLayers[ALayerIndex].x := r.Left;\n    FLayers[ALayerIndex].y := r.Top;\n  end;\nend;\n\nfunction TBGRALayeredBitmap.DrawEditor(ADest: TBGRABitmap;\n  ALayerIndex: integer; X, Y: Integer; APointSize: single): TRect;\nbegin\n  result := DrawEditor(ADest, ALayerIndex, AffineMatrixTranslation(X,Y), APointSize);\nend;\n\nfunction TBGRALayeredBitmap.DrawEditor(ADest: TBGRABitmap; ALayerIndex: integer;\n  AMatrix: TAffineMatrix; APointSize: single): TRect;\nbegin\n  UpdateOriginalEditor(ALayerIndex, AMatrix, APointSize);\n  if Assigned(OriginalEditor) then\n    result := OriginalEditor.Render(ADest, rect(0,0,ADest.Width,ADest.Height))\n    else result := EmptyRect;\nend;\n\nfunction TBGRALayeredBitmap.GetEditorBounds(ALayerIndex: integer; X,\n  Y: Integer; APointSize: single): TRect;\nbegin\n  result := GetEditorBounds(ALayerIndex, AffineMatrixTranslation(X,Y), APointSize);\nend;\n\nfunction TBGRALayeredBitmap.GetEditorBounds(ADestRect: TRect;\n  ALayerIndex: integer; X, Y: Integer; APointSize: single): TRect;\nbegin\n  result := GetEditorBounds(ADestRect, ALayerIndex, AffineMatrixTranslation(X,Y), APointSize);\nend;\n\nfunction TBGRALayeredBitmap.GetEditorBounds(ALayerIndex: integer;\n  AMatrix: TAffineMatrix; APointSize: single): TRect;\nbegin\n  result := GetEditorBounds(rect(-maxLongint,-maxLongint,maxLongint,maxLongint), ALayerIndex, AMatrix, APointSize);\nend;\n\nfunction TBGRALayeredBitmap.GetEditorBounds(ADestRect: TRect; ALayerIndex: integer;\n  AMatrix: TAffineMatrix; APointSize: single): TRect;\nbegin\n  UpdateOriginalEditor(ALayerIndex, AMatrix, APointSize);\n\n  if Assigned(OriginalEditor) then\n    result := OriginalEditor.GetRenderBounds(ADestRect)\n    else result := EmptyRect;\nend;\n\nprocedure TBGRALayeredBitmap.ClearEditor;\nbegin\n  if Assigned(FOriginalEditor) then FOriginalEditor.Clear;\n  FOriginalEditorOriginal := GUID_NULL;\nend;\n\nprocedure TBGRALayeredBitmap.MouseMove(Shift: TShiftState; ImageX, ImageY: Single; out\n  ACursor: TOriginalEditorCursor);\nvar\n  handled: boolean;\nbegin\n  MouseMove(Shift, ImageX,ImageY, ACursor, handled);\nend;\n\nprocedure TBGRALayeredBitmap.MouseDown(RightButton: boolean;\n  Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor);\nvar\n  handled: boolean;\nbegin\n  MouseDown(RightButton, Shift, ImageX,ImageY, ACursor, handled);\nend;\n\nprocedure TBGRALayeredBitmap.MouseUp(RightButton: boolean; Shift: TShiftState;\n  ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor);\nvar\n  handled: boolean;\nbegin\n  MouseUp(RightButton, Shift, ImageX,ImageY, ACursor, handled);\nend;\n\nprocedure TBGRALayeredBitmap.MouseMove(Shift: TShiftState; ImageX, ImageY: Single; out\n  ACursor: TOriginalEditorCursor; out AHandled: boolean);\nvar\n  viewPt: TPointF;\nbegin\n  if Assigned(OriginalEditor) then\n  begin\n    viewPt := FOriginalEditorViewMatrix*PointF(ImageX,ImageY);\n    OriginalEditor.MouseMove(Shift, viewPt.X, viewPt.Y, ACursor, AHandled);\n  end\n  else\n  begin\n    ACursor:= oecDefault;\n    AHandled:= false;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.MouseDown(RightButton: boolean;\n  Shift: TShiftState; ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor; out\n  AHandled: boolean);\nvar\n  viewPt: TPointF;\nbegin\n  if Assigned(OriginalEditor) then\n  begin\n    viewPt := FOriginalEditorViewMatrix*PointF(ImageX,ImageY);\n    OriginalEditor.MouseDown(RightButton, Shift, viewPt.X, viewPt.Y, ACursor, AHandled);\n  end\n  else\n  begin\n    ACursor:= oecDefault;\n    AHandled:= false;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.MouseUp(RightButton: boolean; Shift: TShiftState;\n  ImageX, ImageY: Single; out ACursor: TOriginalEditorCursor; out AHandled: boolean);\nvar\n  viewPt: TPointF;\nbegin\n  if Assigned(OriginalEditor) then\n  begin\n    viewPt := FOriginalEditorViewMatrix*PointF(ImageX,ImageY);\n    OriginalEditor.MouseUp(RightButton, Shift, viewPt.X,viewPt.Y, ACursor, AHandled);\n  end\n  else\n  begin\n    ACursor:= oecDefault;\n    AHandled:= false;\n  end;\nend;\n\nprocedure TBGRALayeredBitmap.KeyDown(Shift: TShiftState; Key: TSpecialKey; out\n  AHandled: boolean);\nbegin\n  if Assigned(OriginalEditor) then\n    OriginalEditor.KeyDown(Shift, Key, AHandled)\n  else\n    AHandled := false;\nend;\n\nprocedure TBGRALayeredBitmap.KeyUp(Shift: TShiftState; Key: TSpecialKey; out\n  AHandled: boolean);\nbegin\n  if Assigned(OriginalEditor) then\n    OriginalEditor.KeyUp(Shift, Key, AHandled)\n  else\n    AHandled := false;\nend;\n\nprocedure TBGRALayeredBitmap.KeyPress(UTF8Key: string; out AHandled: boolean);\nbegin\n  if Assigned(OriginalEditor) then\n    OriginalEditor.KeyPress(UTF8Key, AHandled)\n  else\n    AHandled := false;\nend;\n\nfunction TBGRALayeredBitmap.IndexOfOriginal(const AGuid: TGuid): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to OriginalCount-1 do\n    if FOriginals[i].Guid = AGuid then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1\nend;\n\nfunction TBGRALayeredBitmap.IndexOfOriginal(AOriginal: TBGRALayerCustomOriginal): integer;\nbegin\n  if Assigned(FOriginals) then\n    result := FOriginals.IndexOf(BGRALayerOriginalEntry(AOriginal))\n  else\n    result := -1;\nend;\n\n{ TBGRACustomLayeredBitmap }\n\nfunction TBGRACustomLayeredBitmap.GetLinearBlend: boolean;\nbegin\n  result := FLinearBlend;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetSelectionVisible: boolean;\nbegin\n  result := (FSelectionScanner <> nil) and (FSelectionLayerIndex >= 0) and\n    (FSelectionLayerIndex < NbLayers) and FSelectionRect.IntersectsWith(rect(0,0,Width,Height));\nend;\n\nfunction TBGRACustomLayeredBitmap.GetMemDirectory: TMemDirectory;\nbegin\n  if FMemDirectory = nil then\n  begin\n    FMemDirectory:= TMemDirectory.Create;\n    FMemDirectoryOwned := true;\n  end;\n  result := FMemDirectory;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetDefaultBlendingOperation: TBlendOperation;\nbegin\n  result := boTransparent;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetHasMemFiles: boolean;\nbegin\n  result := assigned(FMemDirectory) and (FMemDirectory.Count > 0);\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerOriginalGuid(layer: integer): TGuid;\nbegin\n  result := GUID_NULL;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerOriginalRenderStatus(layer: integer): TOriginalRenderStatus;\nbegin\n  result := orsProof;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetOriginalCount: integer;\nbegin\n  result := 0;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetOriginalByIndex(AIndex: integer): TBGRALayerCustomOriginal;\nbegin\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nfunction TBGRACustomLayeredBitmap.GetOriginalByIndexKnown(AIndex: integer): boolean;\nbegin\n  result := true;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetOriginalByIndexLoaded(AIndex: integer): boolean;\nbegin\n  result := true;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetOriginalByIndexClass(AIndex: integer): TBGRALayerOriginalAny;\nbegin\n  result := nil;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerOriginal(layer: integer): TBGRALayerCustomOriginal;\nbegin\n  result := nil;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerOriginalKnown(layer: integer): boolean;\nbegin\n  result := true;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerOriginalMatrix(layer: integer): TAffineMatrix;\nbegin\n  result := AffineMatrixIdentity;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetLinearBlend(AValue: boolean);\nbegin\n  Unfreeze;\n  FLinearBlend := AValue;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetMemDirectory(AValue: TMemDirectory);\nbegin\n  if AValue = FMemDirectory then exit;\n  if FMemDirectoryOwned then FMemDirectory.Free;\n  FMemDirectory := AValue;\n  FMemDirectoryOwned := false;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerName(layer: integer): string;\nbegin\n  result := 'Layer' + inttostr(layer+1);\nend;\n\n{$hints off}\nfunction TBGRACustomLayeredBitmap.GetLayerOffset(layer: integer): TPoint;\nbegin\n  //optional function\n  result := Point(0,0);\nend;\n{$hints on}\n\n{$hints off}\nfunction TBGRACustomLayeredBitmap.GetLayerBitmapDirectly(layer: integer\n  ): TBGRABitmap;\nbegin\n  //optional function\n  result:= nil;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerFrozenRange(layer: integer): integer;\nvar i: integer;\nbegin\n  for i := 0 to high(FFrozenRange) do\n    if (layer >= FFrozenRange[i].firstLayer) and (layer <= FFrozenRange[i].lastLayer) then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerFrozen(layer: integer): boolean;\nvar i: integer;\nbegin\n  for i := 0 to high(FFrozenRange) do\n    if (layer >= FFrozenRange[i].firstLayer) and (layer <= FFrozenRange[i].lastLayer) then\n    begin\n      result := true;\n      exit;\n    end;\n  result := false;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerUniqueId(layer: integer): integer;\nbegin\n  result := layer;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetLayerFrozen(layer: integer;\n  AValue: boolean);\nbegin\n  //nothing\nend;\n\nfunction TBGRACustomLayeredBitmap.RangeIntersect(first1, last1, first2,\n  last2: integer): boolean;\nbegin\n  result := (first1 <= last2) and (last1 >= first2);\nend;\n\nprocedure TBGRACustomLayeredBitmap.RemoveFrozenRange(index: integer);\nvar j,i: integer;\nbegin\n  for j := FFrozenRange[index].firstLayer to FFrozenRange[index].lastLayer do\n    SetLayerFrozen(j,False);\n  FFrozenRange[index].image.Free;\n  for i := index to high(FFrozenRange)-1 do\n    FFrozenRange[i] := FFrozenRange[i+1];\n  setlength(FFrozenRange,length(FFrozenRange)-1);\nend;\n\nfunction TBGRACustomLayeredBitmap.ContainsFrozenRange(first, last: integer): boolean;\nvar i: integer;\nbegin\n  for i := 0 to high(FFrozenRange) do\n    if (FFrozenRange[i].firstLayer = first) and (FFrozenRange[i].lastLayer = last) then\n    begin\n      result := true;\n      exit;\n    end;\n  result := false;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetLayerDrawMode(AIndex: integer): TDrawMode;\nbegin\n  if (BlendOperation[AIndex] = boTransparent) and not LinearBlend then\n    result := dmDrawWithTransparency\n    else result := dmLinearBlend;\nend;\n\nfunction TBGRACustomLayeredBitmap.GetEmpty: boolean;\nbegin\n  result := (NbLayers = 0) and (Width = 0) and (Height = 0);\nend;\n\nfunction TBGRACustomLayeredBitmap.IndexOfOriginal(const AGuid: TGuid): integer;\nbegin\n  result := -1;\nend;\n\nfunction TBGRACustomLayeredBitmap.IndexOfOriginal(\n  AOriginal: TBGRALayerCustomOriginal): integer;\nbegin\n  result := -1;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetWidth(Value: Integer);\nbegin\n  //nothing\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetHeight(Value: Integer);\nbegin\n  //nothing\nend;\n\nfunction TBGRACustomLayeredBitmap.GetTransparent: Boolean;\nbegin\n  result := true;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SetTransparent(Value: Boolean);\nbegin\n  //nothing\nend;\n\nprocedure TBGRACustomLayeredBitmap.SaveToFile(const filenameUTF8: string);\nvar bmp: TBGRABitmap;\n    ext: string;\n    temp: TBGRALayeredBitmap;\n    i: integer;\n    stream: TFileStreamUTF8;\nbegin\n  ext := UTF8LowerCase(ExtractFileExt(filenameUTF8));\n  for i := 0 to high(LayeredBitmapWriters) do\n    if '.'+LayeredBitmapWriters[i].extension = ext then\n    begin\n      temp := LayeredBitmapWriters[i].theClass.Create;\n      try\n        temp.Assign(self);\n        temp.SaveToFile(filenameUTF8);\n      finally\n        temp.Free;\n      end;\n      exit;\n    end;\n\n  //when using \"data\" extension, simply serialize\n  if (ext='.dat') or (ext='.data') then\n  begin\n    if Assigned(LayeredBitmapLoadFromStreamProc) then\n    begin\n      stream := TFileStreamUTF8.Create(filenameUTF8, fmCreate);\n      try\n        LayeredBitmapSaveToStreamProc(stream, self);\n      finally\n        stream.Free;\n      end;\n    end else\n      raise exception.Create('Enable layer serialization by calling BGRAStreamLayers.RegisterStreamLayers');\n  end else\n  begin\n    bmp := ComputeFlatImage;\n    try\n      bmp.SaveToFileUTF8(filenameUTF8);\n    finally\n      bmp.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomLayeredBitmap.SaveToStream(Stream: TStream);\nbegin\n  if Assigned(LayeredBitmapSaveToStreamProc) then\n    LayeredBitmapSaveToStreamProc(Stream, self)\n  else\n    raise exception.Create('Call BGRAStreamLayers.RegisterStreamLayers first');\nend;\n\nprocedure TBGRACustomLayeredBitmap.SaveToStreamAs(Stream: TStream;\n  AExtension: string);\nvar bmp: TBGRABitmap;\n    ext: string;\n    format: TBGRAImageFormat;\n    temp: TBGRALayeredBitmap;\n    i: integer;\nbegin\n  ext := UTF8LowerCase(AExtension);\n  if ext[1] <> '.' then ext := '.'+ext;\n\n  for i := 0 to high(LayeredBitmapWriters) do\n    if '.'+LayeredBitmapWriters[i].extension = ext then\n    begin\n      temp := LayeredBitmapWriters[i].theClass.Create;\n      try\n        temp.Assign(self, true, true);\n        temp.SaveToStream(Stream);\n      finally\n        temp.Free;\n      end;\n      exit;\n    end;\n\n  format := SuggestImageFormat(ext);\n  bmp := ComputeFlatImage;\n  try\n    bmp.SaveToStreamAs(Stream, format);\n  finally\n    bmp.Free;\n  end;\nend;\n\nconstructor TBGRACustomLayeredBitmap.Create;\nbegin\n  FFrozenRange := nil;\n  FLinearBlend:= True;\n  FMemDirectory := nil;\n  FMemDirectoryOwned:= false;\n  FSelectionDrawMode:= dmDrawWithTransparency;\n  FSelectionLayerIndex:= -1;\n  FSelectionRect:= EmptyRect;\n  FSelectionScanner:= nil;\n  FSelectionScannerOffset:= Point(0,0);\nend;\n\n{$hints on}\n\nfunction TBGRACustomLayeredBitmap.ToString: ansistring;\nvar\n  i: integer;\nbegin\n  Result := 'LayeredBitmap' + LineEnding + LineEnding;\n  for i := 0 to NbLayers - 1 do\n  begin\n    AppendStr(Result, LineEnding + 'Layer ' + IntToStr(i) + ' : ' + LayerName[i] + LineEnding);\n  end;\nend;\n\nprocedure TBGRACustomLayeredBitmap.DiscardSelection;\nbegin\n  fillchar(FSelectionScanner, sizeof(FSelectionScanner), 0);\n  FSelectionRect := EmptyRect;\n  FSelectionLayerIndex := -1;\n  FSelectionScannerOffset:= Point(0,0);\nend;\n\nfunction TBGRACustomLayeredBitmap.ComputeFlatImage(ASeparateXorMask: boolean): TBGRABitmap;\nbegin\n  result := ComputeFlatImage(rect(0,0,Width,Height), 0, NbLayers - 1, ASeparateXorMask);\nend;\n\nfunction TBGRACustomLayeredBitmap.ComputeFlatImage(firstLayer,\n  lastLayer: integer; ASeparateXorMask: boolean): TBGRABitmap;\nbegin\n  result := ComputeFlatImage(rect(0,0,Width,Height), firstLayer,LastLayer,ASeparateXorMask);\nend;\n\nfunction TBGRACustomLayeredBitmap.ComputeFlatImage(ARect: TRect;\n  ASeparateXorMask: boolean): TBGRABitmap;\nbegin\n  result := ComputeFlatImage(ARect,0, NbLayers - 1, ASeparateXorMask);\nend;\n\ndestructor TBGRACustomLayeredBitmap.Destroy;\nbegin\n  DiscardSelection;\n  Clear;\nend;\n\nfunction TBGRACustomLayeredBitmap.ComputeFlatImage(ARect: TRect; firstLayer, lastLayer: integer; ASeparateXorMask: boolean): TBGRABitmap;\nvar\n  i,j: integer;\n  destEmpty: boolean;\n\nbegin\n  if (firstLayer < 0) or (lastLayer > NbLayers-1) then\n    raise ERangeError.Create('Layer index out of bounds');\n  If (ARect.Right <= ARect.Left) or (ARect.Bottom <= ARect.Top) then\n  begin\n    result := TBGRABitmap.Create(0,0);\n    exit;\n  end;\n  Result := TBGRABitmap.Create(ARect.Right-ARect.Left, ARect.Bottom-ARect.Top);\n  destEmpty := true;\n  if SelectionVisible then Unfreeze(SelectionLayerIndex);\n  i := firstLayer;\n  while i <= lastLayer do\n  begin\n    if LayerFrozen[i] then\n    begin\n      j := GetLayerFrozenRange(i);\n      if j <> -1 then\n      begin\n        if i = 0 then\n          Result.PutImage(-ARect.Left,-ARect.Top,FFrozenRange[j].image,dmSet) else\n        if not FFrozenRange[j].linearBlend then\n          Result.PutImage(-ARect.Left,-ARect.Top,FFrozenRange[j].image,dmDrawWithTransparency)\n        else\n          Result.PutImage(-ARect.Left,-ARect.Top,FFrozenRange[j].image,dmLinearBlend);\n        i := FFrozenRange[j].lastLayer+1;\n        destEmpty := false;\n        continue;\n      end;\n    end;\n    if DrawLayer(result, -ARect.Left, -ARect.Top, i, ASeparateXorMask, destEmpty) then\n      destEmpty := false;\n    inc(i);\n  end;\n  if result.XorMask <> nil then\n    AlphaFillInline(result.XorMask.Data, 0, result.XorMask.NbPixels);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(ACanvas: TCanvas; const Rect: TRect);\nvar temp: TBGRABitmap;\nbegin\n  if (Rect.Right <= Rect.Left) or (Rect.Bottom <= Rect.Top) then exit;\n  if (Rect.Right-Rect.Left = Width) and (Rect.Bottom-Rect.Top = Height) then\n    Draw(ACanvas, Rect.Left,Rect.Top) else\n  begin\n    temp := ComputeFlatImage;\n    BGRAReplace(temp,temp.Resample(Rect.Right-Rect.Left,Rect.Bottom-Rect.Top));\n    temp.Draw(ACanvas, Rect.Left,Rect.Top, False);\n    temp.Free;\n  end;\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(Canvas: TCanvas; x, y: integer);\nbegin\n  Draw(Canvas,x,y,0,NbLayers-1);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(Canvas: TCanvas; x, y: integer; firstLayer, lastLayer: integer);\nvar temp: TBGRABitmap;\nbegin\n  temp := ComputeFlatImage(firstLayer,lastLayer);\n  temp.Draw(Canvas,x,y,False);\n  temp.Free;\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(Dest: TBGRABitmap; x, y: integer);\nbegin\n  Draw(Dest, x, y, 0, NbLayers-1);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(Dest: TBGRABitmap; x, y: integer;\n  ASeparateXorMask: boolean; ADestinationEmpty: boolean);\nbegin\n  Draw(Dest, x, y, 0, NbLayers-1, ASeparateXorMask, ADestinationEmpty);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Draw(Dest: TBGRABitmap; AX, AY: integer; firstLayer, lastLayer: integer; ASeparateXorMask: boolean; ADestinationEmpty: boolean);\nvar\n  temp: TBGRABitmap;\n  i,j: integer;\n  NewClipRect: TRect;\nbegin\n  NewClipRect := TRect.Intersect(rect(AX,AY,AX+Width,AY+Height), Dest.ClipRect);\n  if NewClipRect.IsEmpty then exit;\n\n  for i := firstLayer to lastLayer do\n    if LayerVisible[i] and\n      (not (BlendOperation[i] in[boTransparent,boLinearBlend]) or\n       ( (SelectionLayerIndex = i) and SelectionVisible\n         and (SelectionDrawMode <> GetLayerDrawMode(i)) ) ) then\n    begin\n      temp := ComputeFlatImage(rect(NewClipRect.Left-AX,NewClipRect.Top-AY,NewClipRect.Right-AX,NewClipRect.Bottom-AY), ASeparateXorMask);\n      if ADestinationEmpty then\n        Dest.PutImage(NewClipRect.Left, NewClipRect.Top, temp, dmSet) else\n      if self.LinearBlend then\n        Dest.PutImage(NewClipRect.Left, NewClipRect.Top, temp, dmLinearBlend)\n        else Dest.PutImage(NewClipRect.Left, NewClipRect.Top, temp, dmDrawWithTransparency);\n      temp.Free;\n      exit;\n    end;\n\n  i := firstLayer;\n  while i <= lastLayer do\n  begin\n    if LayerFrozen[i] then\n    begin\n      j := GetLayerFrozenRange(i);\n      if j <> -1 then\n      begin\n        if ADestinationEmpty then\n          Dest.PutImage(AX, AY, FFrozenRange[j].image, dmSet) else\n        if not FFrozenRange[j].linearBlend then\n          Dest.PutImage(AX, AY, FFrozenRange[j].image, dmDrawWithTransparency)\n          else Dest.PutImage(AX, AY, FFrozenRange[j].image, dmLinearBlend);\n        i := FFrozenRange[j].lastLayer+1;\n        ADestinationEmpty := false;\n        continue;\n      end;\n    end;\n    if DrawLayer(Dest, AX,AY, i, ASeparateXorMask, ADestinationEmpty) then\n      ADestinationEmpty := false;\n    inc(i);\n  end;\nend;\n\nfunction TBGRACustomLayeredBitmap.DrawLayer(Dest: TBGRABitmap; X, Y: Integer;\n  AIndex: integer; ASeparateXorMask: boolean; ADestinationEmpty: boolean): boolean;\ntype IntArray4 = array[1..4] of integer;\n\n  function MergeSort(const ATab: IntArray4): IntArray4;\n  var\n    posA, posB, pos: Integer;\n  begin\n    posA := 1;\n    posB := 3;\n    pos := 1;\n    while (posA <= 2) and (posB <= 4) do\n    begin\n      if ATab[posA] <= ATab[posB] then\n      begin\n        result[pos] := ATab[posA];\n        inc(posA);\n      end else\n      begin\n        result[pos] := ATab[posB];\n        inc(posB);\n      end;\n      inc(pos);\n    end;\n    while posA <= 2 do\n    begin\n      result[pos] := ATab[posA];\n      inc(posA); inc(pos);\n    end;\n    while posB <= 4 do\n    begin\n      result[pos] := ATab[posB];\n      inc(posB); inc(pos);\n    end;\n  end;\n\nvar\n  opacity: Byte;\n\n  procedure Blend(ADestRect: TRect; AScan: IBGRAScanner; AScanOfsX, AScanOfsY: integer; ABlendOp: TBlendOperation);\n  begin\n    //XOR mask\n    if (ABlendOp = boXor) and ASeparateXorMask then\n    begin\n      Dest.NeedXorMask;\n      Dest.XorMask.BlendImageOver(ADestRect, AScan, AScanOfsX, AScanOfsY, ABlendOp, opacity, LinearBlend);\n    end else\n    //first layer is simply the background\n    if ADestinationEmpty and (ABlendOp <> boMask) then\n    begin\n      Dest.FillRect(ADestRect, AScan, dmSet, Point(AScanOfsX, AScanOfsY));\n      Dest.ApplyGlobalOpacity(ADestRect, opacity);\n    end\n    else\n      Dest.BlendImageOver(ADestRect, AScan, AScanOfsX, AScanOfsY, ABlendOp, opacity, LinearBlend);\n  end;\n\nvar\n  tempLayer: TBGRABitmap;\n  tempLayerScanOfs, selScanOfs: TPoint;\n  blendOp: TBlendOperation;\n\n  procedure BlendBoth(ATile: TRect);\n  var\n    mergeBuf: PByte;\n    pTemp: PByte;\n    tempStride, rowSize, destStride: PtrInt;\n    tileWidth, yb: LongInt;\n    pDest: PByte;\n  begin\n    tileWidth := ATile.Width;\n    rowSize := tileWidth * sizeof(TBGRAPixel);\n    if not ADestinationEmpty then\n      getmem(mergeBuf, rowSize)\n      else mergeBuf := nil;\n    try\n      if tempLayer.LineOrder = riloTopToBottom then\n        tempStride := tempLayer.RowSize else tempStride := -tempLayer.RowSize;\n      pTemp := tempLayer.GetPixelAddress(ATile.Left + tempLayerScanOfs.X,\n                 ATile.Top + tempLayerScanOfs.Y);\n      pDest := Dest.GetPixelAddress(ATile.Left, ATile.Top);\n      if Dest.LineOrder = riloTopToBottom then\n        destStride := Dest.RowSize else destStride := -Dest.RowSize;\n      if ADestinationEmpty then\n      begin\n        for yb := ATile.Top to ATile.Bottom-1 do\n        begin\n          move(pTemp^, pDest^, rowSize);\n          SelectionScanner.ScanMoveTo(ATile.Left + selScanOfs.X, yb + selScanOfs.Y);\n          ScannerPutPixels(SelectionScanner, PBGRAPixel(pDest), tileWidth, SelectionDrawMode);\n          inc(pTemp, tempStride);\n          inc(pDest, destStride);\n        end;\n        Dest.ApplyGlobalOpacity(ATile, opacity);\n      end else\n      begin\n        for yb := ATile.Top to ATile.Bottom-1 do\n        begin\n          move(pTemp^, mergeBuf^, rowSize);\n          SelectionScanner.ScanMoveTo(ATile.Left + selScanOfs.X, yb + selScanOfs.Y);\n          ScannerPutPixels(SelectionScanner, PBGRAPixel(mergeBuf), tileWidth, SelectionDrawMode);\n          BlendPixelsOver(PBGRAPixel(pDest), PBGRAPixel(mergeBuf),\n              blendOp, tileWidth, opacity, LinearBlend);\n          inc(pTemp, tempStride);\n          inc(pDest, destStride);\n        end;\n      end;\n    finally\n      freemem(mergeBuf);\n    end;\n  end;\n\nvar\n  mustFreeCopy, containsSel, containsLayer: Boolean;\n  ofs: TPoint;\n  rSel, oldClip, rLayer, rTile: TRect;\n  xTab,yTab: IntArray4;\n  xb, yb: Integer;\nbegin\n  if not LayerVisible[AIndex] then exit(false);\n  opacity := LayerOpacity[AIndex];\n  if opacity = 0 then exit(false);\n\n  tempLayer := GetLayerBitmapDirectly(AIndex);\n  if tempLayer <> nil then mustFreeCopy := false else\n    begin\n      mustFreeCopy := true;\n      tempLayer := GetLayerBitmapCopy(AIndex);\n    end;\n\n  ofs := LayerOffset[AIndex];\n  oldClip := Dest.IntersectClip(rect(X,Y,X+self.Width,Y+self.Height));\n\n  if (SelectionLayerIndex = AIndex) and SelectionVisible then\n  begin\n    rSel := SelectionRect;\n    rSel.Offset(X, Y);\n    rSel.Intersect(Dest.ClipRect);\n  end else\n    rSel := EmptyRect;\n\n  if Assigned(tempLayer) then\n  begin\n    rLayer := RectWithSize(ofs.x + X, ofs.y + Y, tempLayer.Width, tempLayer.Height);\n    rLayer.Intersect(Dest.ClipRect);\n  end else\n    rLayer := EmptyRect;\n\n  if (tempLayer <> nil) and (not rLayer.IsEmpty or not rSel.IsEmpty) then\n  begin\n    if AIndex = 0 then blendOp := boTransparent else blendOp := BlendOperation[AIndex];\n    tempLayerScanOfs := Point(-(ofs.X+X), -(ofs.Y+Y));\n\n    if rSel.IsEmpty then\n      Blend(rLayer, tempLayer, tempLayerScanOfs.X, tempLayerScanOfs.y, blendOp)\n    else\n    begin\n      selScanOfs := Point(SelectionScannerOffset.X - X, SelectionScannerOffset.Y - Y);\n\n      xTab[1] := rSel.Left;    yTab[1] := rSel.Top;\n      xTab[2] := rSel.Right;   yTab[2] := rSel.Bottom;\n      xTab[3] := rLayer.Left;  yTab[3] := rLayer.Top;\n      xTab[4] := rLayer.Right; yTab[4] := rLayer.Bottom;\n      xTab := MergeSort(xTab); yTab := MergeSort(yTab);\n\n      for yb := 1 to 3 do\n      begin\n        rTile.Top := yTab[yb];\n        rTile.Bottom := yTab[yb+1];\n        if rTile.Bottom > rTile.Top then\n          for xb := 1 to 3 do\n          begin\n            rTile.Left := xTab[xb];\n            rTile.Right := xTab[xb+1];\n            if rTile.Right > rTile.Left then\n            begin\n              containsSel := rTile.IntersectsWith(rSel);\n              containsLayer := rTile.IntersectsWith(rLayer);\n              if containsLayer then\n              begin\n                if not containsSel then\n                  Blend(rTile, tempLayer, tempLayerScanOfs.X, tempLayerScanOfs.y, blendOp)\n                else\n                  BlendBoth(rTile);\n              end else\n              if containsSel then\n                Blend(rTile, SelectionScanner, selScanOfs.X, selScanOfs.Y, blendOp)\n            end;\n          end;\n      end;\n    end;\n\n    result := true;\n  end else\n    result := false;\n\n  Dest.ClipRect := oldClip;\n  if mustFreeCopy then tempLayer.Free;\nend;\n\nprocedure TBGRACustomLayeredBitmap.FreezeExceptOneLayer(layer: integer);\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n  begin\n    Freeze;\n    exit;\n  end;\n  Unfreeze(layer,layer);\n  if layer > 1 then\n    Freeze(0,layer-1);\n  if layer < NbLayers-2 then\n    Freeze(layer+1,NbLayers-1);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Freeze(firstLayer, lastLayer: integer);\n\n  procedure DoFreeze(first,last: integer; linear: boolean);\n  var i,nbVisible: integer;\n    computedImage: TBGRABitmap;\n  begin\n    if last <= first then exit; //at least 2 frozen layers\n    nbVisible := 0;\n    for i := first to last do\n      if LayerVisible[i] and (LayerOpacity[i] > 0) then inc(nbVisible);\n    if nbvisible < 2 then exit;  //at least 2 frozen layers\n\n    if ContainsFrozenRange(first,last) then exit; //already frozen\n    Unfreeze(first,last);\n\n    computedImage := ComputeFlatImage(first,last); //must compute before layers are considered as frozen\n    setlength(FFrozenRange, length(FFrozenRange)+1);\n    with FFrozenRange[high(FFrozenRange)] do\n    begin\n      firstLayer := first;\n      lastLayer:= last;\n      image := computedImage;\n      linearBlend := linear;\n    end;\n    for i := first to last do\n      SetLayerFrozen(i,True);\n  end;\n\nvar j: integer;\n  start: integer;\n  linear,nextLinear: boolean;\nbegin\n  start := -1;\n  linear := false; //to avoid hint\n  for j := firstlayer to lastLayer do\n  if ((BlendOperation[j] in [boTransparent,boLinearBlend]) or (start = 0) or ((firstlayer= 0) and (j=0)))\n     and (not SelectionVisible or (j <> SelectionLayerIndex)) then\n  begin\n    nextLinear := (BlendOperation[j] = boLinearBlend) or self.LinearBlend;\n    if start = -1 then\n    begin\n      start := j;\n      linear := nextLinear;\n    end else\n    begin\n      if linear <> nextLinear then\n      begin\n        DoFreeze(start,j-1,linear);\n        start := j;\n        linear := nextLinear;\n      end;\n    end;\n  end else\n  begin\n    if start <> -1 then\n    begin\n      DoFreeze(start,j-1,linear);\n      start := -1;\n    end;\n  end;\n  if start <> -1 then\n    DoFreeze(start,lastLayer,linear);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Freeze;\nbegin\n  Freeze(0,NbLayers-1);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Unfreeze;\nbegin\n  Unfreeze(0,NbLayers-1);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Unfreeze(layer: integer);\nbegin\n  Unfreeze(layer,layer);\nend;\n\nprocedure TBGRACustomLayeredBitmap.Unfreeze(firstLayer, lastLayer: integer);\nvar i: integer;\nbegin\n  for i := high(FFrozenRange) downto 0 do\n    if RangeIntersect(firstLayer,lastLayer,FFrozenRange[i].firstLayer,FFrozenRange[i].lastLayer) then\n      RemoveFrozenRange(i);\nend;\n\nprocedure TBGRACustomLayeredBitmap.NotifyLoaded;\nbegin\n  //nothing\nend;\n\nprocedure TBGRACustomLayeredBitmap.NotifySaving;\nbegin\n  //nothing\nend;\n\nprocedure RegisterLayeredBitmapReader(AExtensionUTF8: string; AReader: TBGRACustomLayeredBitmapClass);\nbegin\n  setlength(LayeredBitmapReaders,length(LayeredBitmapReaders)+1);\n  with LayeredBitmapReaders[high(LayeredBitmapReaders)] do\n  begin\n    extension:= UTF8LowerCase(AExtensionUTF8);\n    theClass := AReader;\n  end;\nend;\n\nfunction TryCreateLayeredBitmapWriter(AExtensionUTF8: string): TBGRALayeredBitmap;\nvar\n  i: Integer;\nbegin\n  AExtensionUTF8:= UTF8LowerCase(AExtensionUTF8);\n  if (AExtensionUTF8 = '') or (AExtensionUTF8[1] <> '.') then\n    AExtensionUTF8:= '.'+AExtensionUTF8;\n  for i := 0 to high(LayeredBitmapWriters) do\n    if '.'+LayeredBitmapWriters[i].extension = AExtensionUTF8 then\n    begin\n      result := LayeredBitmapWriters[i].theClass.Create;\n      exit;\n    end;\n  result := nil;\nend;\n\nfunction TryCreateLayeredBitmapReader(AExtensionUTF8: string): TBGRACustomLayeredBitmap;\nvar\n  i: Integer;\nbegin\n  AExtensionUTF8:= UTF8LowerCase(AExtensionUTF8);\n  if (AExtensionUTF8 = '') or (AExtensionUTF8[1] <> '.') then\n    AExtensionUTF8:= '.'+AExtensionUTF8;\n  for i := 0 to high(LayeredBitmapReaders) do\n    if '.'+LayeredBitmapReaders[i].extension = AExtensionUTF8 then\n    begin\n      result := LayeredBitmapReaders[i].theClass.Create;\n      exit;\n    end;\n  result := nil;\nend;\n\nprocedure OnLayeredBitmapLoadFromStreamStart;\nbegin\n  OnLayeredBitmapLoadStart('<Stream>');\nend;\n\nprocedure OnLayeredBitmapLoadStart(AFilenameUTF8: string);\nvar i: Integer;\nbegin\n  with LayeredBitmapLoadEvents do if Assigned(OnStart) then\n    for i := 0 to OnStart.Count-1 do OnStart[i](AFilenameUTF8);\nend;\n\nprocedure OnLayeredBitmapLoadProgress(APercentage: integer);\nvar i: Integer;\nbegin\n  with LayeredBitmapLoadEvents do if Assigned(OnProgress) then\n    for i := 0 to OnProgress.Count-1 do OnProgress[i](APercentage);\nend;\n\nprocedure OnLayeredBitmapLoaded;\nvar i: Integer;\nbegin\n  with LayeredBitmapLoadEvents do if Assigned(OnDone) then\n    for i := 0 to OnDone.Count-1 do OnDone[i];\nend;\n\nprocedure RegisterLoadingHandler(AStart: TOnLayeredBitmapLoadStartProc;\n  AProgress: TOnLayeredBitmapLoadProgressProc; ADone: TOnLayeredBitmapLoadedProc);\nbegin\n  with LayeredBitmapLoadEvents do begin\n    if (AStart <> nil) and ((OnStart = nil) or (OnStart.IndexOf(AStart) = -1)) then\n    begin\n      if OnStart = nil then OnStart := TOnLayeredBitmapLoadStartProcList.Create;\n      OnStart.Add(AStart);\n    end;\n    if (AProgress <> nil) and ((OnProgress = nil) or (OnProgress.IndexOf(AProgress) = -1)) then\n    begin\n      if OnProgress = nil then OnProgress := TOnLayeredBitmapLoadProgressProcList.Create;\n      OnProgress.Add(AProgress);\n    end;\n    if (ADone <> nil) and ((OnDone = nil) or (OnDone.IndexOf(ADone) = -1)) then\n    begin\n      if OnDone = nil then OnDone := TOnLayeredBitmapLoadedProcList.Create;\n      OnDone.Add(ADone);\n    end;\n  end;\nend;\n\nprocedure UnregisterLoadingHandler(AStart: TOnLayeredBitmapLoadStartProc;\n  AProgress: TOnLayeredBitmapLoadProgressProc; ADone: TOnLayeredBitmapLoadedProc);\nbegin\n  with LayeredBitmapLoadEvents do begin\n    if Assigned(OnStart) then OnStart.Remove(AStart);\n    if Assigned(OnProgress) then OnProgress.Remove(AProgress);\n    if Assigned(OnDone) then OnDone.Remove(ADone);\n  end;\nend;\n\nprocedure OnLayeredBitmapSaveToStreamStart;\nbegin\n  OnLayeredBitmapSaveStart('<Stream>');\nend;\n\nprocedure OnLayeredBitmapSaveStart(AFilenameUTF8: string);\nvar i: Integer;\nbegin\n  with LayeredBitmapSaveEvents do if Assigned(OnStart) then\n    for i := 0 to OnStart.Count-1 do OnStart[i](AFilenameUTF8);\nend;\n\nprocedure OnLayeredBitmapSaveProgress(APercentage: integer);\nvar i: Integer;\nbegin\n  with LayeredBitmapSaveEvents do if Assigned(OnProgress) then\n    for i := 0 to OnProgress.Count-1 do OnProgress[i](APercentage);\nend;\n\nprocedure OnLayeredBitmapSaved;\nvar i: Integer;\nbegin\n  with LayeredBitmapSaveEvents do if Assigned(OnDone) then\n    for i := 0 to OnDone.Count-1 do OnDone[i];\nend;\n\nprocedure RegisterSavingHandler(AStart: TOnLayeredBitmapSaveStartProc;\n  AProgress: TOnLayeredBitmapSaveProgressProc; ADone: TOnLayeredBitmapSavedProc);\nbegin\n  with LayeredBitmapSaveEvents do begin\n    if (AStart <> nil) and ((OnStart = nil) or (OnStart.IndexOf(AStart) = -1)) then\n    begin\n      if OnStart = nil then OnStart := TOnLayeredBitmapSaveStartProcList.Create;\n      OnStart.Add(AStart);\n    end;\n    if (AProgress <> nil) and ((OnProgress = nil) or (OnProgress.IndexOf(AProgress) = -1)) then\n    begin\n      if OnProgress = nil then OnProgress := TOnLayeredBitmapSaveProgressProcList.Create;\n      OnProgress.Add(AProgress);\n    end;\n    if (ADone <> nil) and ((OnDone = nil) or (OnDone.IndexOf(ADone) = -1)) then\n    begin\n      if OnDone = nil then OnDone := TOnLayeredBitmapSavedProcList.Create;\n      OnDone.Add(ADone);\n    end;\n  end;\nend;\n\nprocedure UnregisterSavingHandler(AStart: TOnLayeredBitmapSaveStartProc;\n  AProgress: TOnLayeredBitmapSaveProgressProc; ADone: TOnLayeredBitmapSavedProc);\nbegin\n  with LayeredBitmapSaveEvents do begin\n    if Assigned(OnStart) then OnStart.Remove(AStart);\n    if Assigned(OnProgress) then OnProgress.Remove(AProgress);\n    if Assigned(OnDone) then OnDone.Remove(ADone);\n  end;\nend;\n\nprocedure RegisterLayeredBitmapWriter(AExtensionUTF8: string; AWriter: TBGRALayeredBitmapClass);\nbegin\n  while (length(AExtensionUTF8)>0) and (AExtensionUTF8[1]='.') do delete(AExtensionUTF8,1,1);\n  setlength(LayeredBitmapWriters,length(LayeredBitmapWriters)+1);\n  with LayeredBitmapWriters[high(LayeredBitmapWriters)] do\n  begin\n    extension:= UTF8LowerCase(AExtensionUTF8);\n    theClass := AWriter;\n  end;\nend;\n\ninitialization\n\n  NextLayerUniqueId := 1;\n\nfinalization\n\n  with LayeredBitmapLoadEvents do begin\n    OnStart.Free;\n    OnProgress.Free;\n    OnDone.Free;\n  end;\n  with LayeredBitmapSaveEvents do begin\n    OnStart.Free;\n    OnProgress.Free;\n    OnDone.Free;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralazpaint.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Layered image format used in LazPaint }\nunit BGRALazPaint;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALayers, BGRABitmapTypes, BGRAReadLzp, BGRAWriteLzp,\n  BGRALzpCommon, FPimage;\n\ntype\n  TLzpCompression = BGRALzpCommon.TLzpCompression;\n\n  { Layered image in LazPaint (LZP) format }\n  TBGRALazPaintImage = class(TBGRALayeredBitmap)\n  private\n    FSelectedLayerIndex: integer;\n  protected\n    procedure InternalLoadFromStream(AStream: TStream);\n    procedure InternalSaveToStream(AStream: TStream);\n  public\n    constructor Create; overload; override;\n    constructor Create(AWidth, AHeight: integer); overload; override;\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure LoadFromFile(const filenameUTF8: string); override;\n    procedure SaveToStream(AStream: TStream); override;\n    procedure SaveToFile(const filenameUTF8: string); override;\n    property SelectedLayerIndex: integer read FSelectedLayerIndex write FSelectedLayerIndex;\n  end;\n\n  { @abstract(Writer for LazPaint (LZP) image format.)\n\n    Handles both flattened and layered images. }\n  TBGRAWriterLazPaintWithLayers = class(TBGRAWriterLazPaint)\n    protected\n      FLayers: TBGRALayeredBitmap;\n      FSelectedLayerIndex: integer;\n      FCompression: TLzpCompression;\n      function GetNbLayers: integer; override;\n      function InternalWriteLayers(Str: TStream; {%H-}Img: TFPCustomImage): boolean; override;\n    public\n      constructor Create(ALayers: TBGRALayeredBitmap); overload;\n      property SelectedLayerIndex: integer read FSelectedLayerIndex write FSelectedLayerIndex;\n      property Compression: TLzpCompression read FCompression write FCompression;\n  end;\n\n  { @abstract(Reader for LazPaint (LZP) image format.)\n\n    Handles both flattened and layered images. }\n  TBGRAReaderLazPaintWithLayers = class(TBGRAReaderLazPaint)\n    protected\n      FLayers: TBGRALayeredBitmap;\n      FLayersLoaded: boolean;\n      FSelectedLayerIndex: integer;\n      procedure InternalReadLayers(str: TStream; {%H-}Img: TFPCustomImage); override;\n    public\n      constructor Create(ALayers: TBGRALayeredBitmap); overload;\n      property LayersLoaded: boolean read FLayersLoaded;\n      property SelectedLayerIndex: integer read FSelectedLayerIndex;\n  end;\n\nprocedure RegisterLazPaintFormat;\n\nimplementation\n\nuses BGRAStreamLayers, BGRABitmap, BGRAUTF8;\n\n{ TBGRALazPaintImage }\n\nconstructor TBGRALazPaintImage.Create;\nbegin\n  inherited Create;\n  RegisterLazPaintFormat;\n  FSelectedLayerIndex:= 0;\nend;\n\nconstructor TBGRALazPaintImage.Create(AWidth, AHeight: integer);\nbegin\n  inherited Create(AWidth, AHeight);\n  RegisterLazPaintFormat;\n  FSelectedLayerIndex:= 0;\nend;\n\nprocedure TBGRALazPaintImage.LoadFromStream(AStream: TStream);\nbegin\n  OnLayeredBitmapLoadFromStreamStart;\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n  end;\nend;\n\nprocedure TBGRALazPaintImage.InternalLoadFromStream(AStream: TStream);\nvar\n  {%H-}header: TLazPaintImageHeader;\n  bmp: TBGRACustomBitmap;\n  reader: TBGRAReaderLazPaintWithLayers;\nbegin\n  AStream.ReadBuffer({%H-}header, sizeof(header));\n  LazPaintImageHeader_SwapEndianIfNeeded(header);\n  AStream.Position:= AStream.Position-sizeof(header);\n\n  //use shortcut if possible\n  if (header.magic = LAZPAINT_MAGIC_HEADER) and (header.zero1 = 0)\n   and (header.layersOffset >= sizeof(header)) then\n  begin\n    AStream.Position:= AStream.Position+header.layersOffset;\n    LoadLayersFromStream(AStream, FSelectedLayerIndex, false, self, True);\n  end else\n  begin\n    reader := TBGRAReaderLazPaintWithLayers.Create(self);\n    try\n      bmp := BGRABitmapFactory.Create;\n      bmp.LoadFromStream(AStream, reader);\n      if reader.LayersLoaded then\n      begin\n        bmp.Free;\n      end else\n      begin\n        Clear;\n        SetSize(bmp.Width,bmp.Height);\n        AddOwnedLayer(bmp as TBGRABitmap);\n        LayerName[0] := reader.Caption;\n      end;\n      SelectedLayerIndex:= reader.SelectedLayerIndex;\n    finally\n      reader.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRALazPaintImage.LoadFromFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmOpenRead or fmShareDenyWrite);\n  OnLayeredBitmapLoadStart(filenameUTF8);\n  try\n    LoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRALazPaintImage.SaveToFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmCreate or fmShareDenyWrite);\n  OnLayeredBitmapSaveStart(filenameUTF8);\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRALazPaintImage.SaveToStream(AStream: TStream);\nbegin\n  OnLayeredBitmapSaveToStreamStart;\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n  end;\nend;\n\nprocedure TBGRALazPaintImage.InternalSaveToStream(AStream: TStream);\nvar\n  writer: TBGRAWriterLazPaint;\n  flat: TBGRACustomBitmap;\nbegin\n  if NbLayers = 0 then\n    raise exception.Create('File cannot be empty');\n\n  writer := nil;\n  flat := nil;\n  try\n    if (NbLayers > 1) or (LayerOpacity[0] <> 255) or not LayerVisible[0] or (BlendOperation[0]<>boTransparent)\n       or (OriginalCount <> 0) then\n    begin\n      writer := TBGRAWriterLazPaintWithLayers.Create(self);\n      writer.Caption := 'Preview';\n      TBGRAWriterLazPaintWithLayers(writer).SelectedLayerIndex := self.SelectedLayerIndex;\n    end else\n    begin\n      writer := TBGRAWriterLazPaint.Create;\n      writer.Caption := LayerName[0];\n    end;\n\n    writer.IncludeThumbnail:= true;\n    flat := ComputeFlatImage;\n    flat.SaveToStream(AStream, writer);\n  finally\n    writer.Free;\n    flat.Free;\n  end;\nend;\n\n{ TBGRAReaderLazPaintWithLayers }\n\nprocedure TBGRAReaderLazPaintWithLayers.InternalReadLayers(str: TStream;\n  Img: TFPCustomImage);\nbegin\n  if Assigned(FLayers) then\n  begin\n    if CheckStreamForLayers(str) then\n    begin\n      LoadLayersFromStream(str, FSelectedLayerIndex, false, FLayers, True);\n      FLayersLoaded := true;\n    end;\n  end;\nend;\n\nconstructor TBGRAReaderLazPaintWithLayers.Create(ALayers: TBGRALayeredBitmap);\nbegin\n  FLayersLoaded := false;\n  FLayers := ALayers;\n  FSelectedLayerIndex:= -1;\nend;\n\n{ TBGRAWriterLazPaintWithLayers }\n\nfunction TBGRAWriterLazPaintWithLayers.GetNbLayers: integer;\nbegin\n  if Assigned(FLayers) then\n    Result:= FLayers.NbLayers\n  else\n    Result := 1;\nend;\n\nfunction TBGRAWriterLazPaintWithLayers.InternalWriteLayers(Str: TStream;\n  Img: TFPCustomImage): boolean;\nbegin\n  If Assigned(FLayers) then\n  begin\n    SaveLayersToStream(str, FLayers, FSelectedLayerIndex, FCompression, True);\n    Result:=true;\n  end\n  else result := False;\nend;\n\nconstructor TBGRAWriterLazPaintWithLayers.Create(ALayers: TBGRALayeredBitmap);\nbegin\n  inherited Create;\n  FLayers := ALayers;\n  FSelectedLayerIndex:= 0;\n  FCompression:= lzpRLE;\n  IncludeThumbnail:= true;\nend;\n\nvar AlreadyRegistered: boolean;\n\nprocedure RegisterLazPaintFormat;\nbegin\n  if AlreadyRegistered then exit;\n  RegisterLayeredBitmapReader('lzp', TBGRALazPaintImage);\n  RegisterLayeredBitmapWriter('lzp', TBGRALazPaintImage);\n  AlreadyRegistered:= True;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralazresource.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Handles Lazarus resources files and provide tools to create them }\nunit BGRALazResource;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAMultiFileType;\n\ntype\n  { Entry in a Lazarus resource }\n  TLazResourceEntry = class(TMultiFileEntry)\n  private\n    procedure Serialize(ADestination: TStream);\n  protected\n    FName: utf8string;\n    FValueType: utf8string;\n    FContent: TStream;\n    function GetName: utf8string; override;\n    procedure SetName(AValue: utf8string); override;\n    function GetExtension: utf8string; override;\n    function GetFileSize: int64; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AName: utf8string; AValueType: utf8string; AContent: TStream);\n    destructor Destroy; override;\n    function CopyTo(ADestination: TStream): int64; override;\n    function GetStream: TStream; override;\n  end;\n\n  { Entry for form data in Lazarus resource }\n  TFormDataEntry = class(TLazResourceEntry)\n  protected\n    FTextContent: TStream;\n    procedure RequireTextContent;\n    function GetExtension: utf8string; override;\n    function GetFileSize: int64; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AName: utf8string; ABinaryContent: TStream);\n    destructor Destroy; override;\n    function CopyTo(ADestination: TStream): int64; override;\n  end;\n\n  { Lazarus resource container }\n  TLazResourceContainer = class(TMultiFileContainer)\n  protected\n    function CreateEntry(AName: utf8string; AExtension: utf8string; AContent: TStream): TMultiFileEntry; override;\n  public\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure SaveToStream(ADestination: TStream); override;\n  end;\n\nimplementation\n\nuses LResources, BGRAUTF8;\n\n{ TFormDataEntry }\n\nprocedure TFormDataEntry.RequireTextContent;\nbegin\n  if FTextContent = nil then\n  begin\n    FTextContent:= TMemoryStream.Create;\n    FContent.Position:= 0;\n    LRSObjectBinaryToText(FContent, FTextContent);\n  end;\nend;\n\nfunction TFormDataEntry.GetExtension: utf8string;\nbegin\n  Result:= 'lfm';\nend;\n\nfunction TFormDataEntry.GetFileSize: int64;\nbegin\n  RequireTextContent;\n  Result:= FTextContent.Size;\nend;\n\nconstructor TFormDataEntry.Create(AContainer: TMultiFileContainer;\n  AName: utf8string; ABinaryContent: TStream);\nbegin\n  inherited Create(AContainer,AName,'FORMDATA',ABinaryContent);\nend;\n\ndestructor TFormDataEntry.Destroy;\nbegin\n  FreeAndNil(FTextContent);\n  inherited Destroy;\nend;\n\nfunction TFormDataEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  RequireTextContent;\n  if FTextContent.Size = 0 then\n    result := 0\n  else\n  begin\n    FTextContent.Position:= 0;\n    result := ADestination.CopyFrom(FTextContent,FTextContent.Size);\n  end;\nend;\n\n{ TLazResourceEntry }\n\nprocedure TLazResourceEntry.Serialize(ADestination: TStream);\nbegin\n  FContent.Position := 0;\n  BinaryToLazarusResourceCode(FContent, ADestination, Name, FValueType);\nend;\n\nfunction TLazResourceEntry.GetName: utf8string;\nbegin\n  Result:= FName;\nend;\n\nprocedure TLazResourceEntry.SetName(AValue: utf8string);\nbegin\n  if AValue = FName then exit;\n  if Container.IndexOf(AVAlue, Extension) <> -1 then\n    raise Exception.Create('Name is already used for this extension');\n  FName := AValue;\nend;\n\nfunction TLazResourceEntry.GetExtension: utf8string;\nbegin\n  Result:= FValueType;\nend;\n\nfunction TLazResourceEntry.GetFileSize: int64;\nbegin\n  Result:= FContent.Size;\nend;\n\ndestructor TLazResourceEntry.Destroy;\nbegin\n  FreeAndNil(FContent);\n  inherited Destroy;\nend;\n\nconstructor TLazResourceEntry.Create(AContainer: TMultiFileContainer; AName: utf8string; AValueType: utf8string;\n  AContent: TStream);\nbegin\n  inherited Create(AContainer);\n  FName := AName;\n  FValueType := UTF8UpperCase(AValueType);\n  FContent := AContent;\nend;\n\nfunction TLazResourceEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  if FContent.Size = 0 then\n    result := 0\n  else\n  begin\n    FContent.Position:= 0;\n    result := ADestination.CopyFrom(FContent, FContent.Size);\n  end;\nend;\n\nfunction TLazResourceEntry.GetStream: TStream;\nbegin\n  Result:= FContent;\nend;\n\n{ TLazResourceContainer }\n\nprocedure TLazResourceContainer.LoadFromStream(AStream: TStream);\nconst\n  entryStart = 'LazarusResources.Add(';\n  entryEnd = ');';\n  whiteSpace = [' ',#9,#10,#13,#26];\nvar\n  fileContent: String;\n  filePos : integer;\n\n  procedure SkipWhitespace;\n  begin\n    while (filePos <= length(fileContent)) and (fileContent[filePos] in whiteSpace) do inc(filePos);\n  end;\n\n  procedure SkipComma;\n  begin\n    SkipWhitespace;\n    if (filePos <= length(fileContent)) and (fileContent[filePos] = ',') then\n      inc(filePos)\n    else\n      raise Exception.Create('Comma expected');\n  end;\n\n  function ParseString(ignoreCommas: boolean): TStream;\n  var\n    expectPlus: boolean;\n\n    procedure AppendChar(c: char);\n    begin\n      result.WriteByte(ord(c));\n    end;\n\n    function ParseNumber: integer;\n    var numberStart, errPos: integer;\n      s: String;\n    begin\n      numberStart:= filePos;\n      if (filePos <= length(fileContent)) and (fileContent[filePos] = '$') then\n      begin\n        inc(filePos);\n        while (filePos <= length(fileContent)) and (fileContent[filePos] in['0'..'9','a'..'f','A'..'F']) do inc(filePos);\n      end else\n      begin\n        while (filePos <= length(fileContent)) and (fileContent[filePos] in['0'..'9']) do inc(filePos);\n      end;\n      s := copy(fileContent,numberStart,filePos-numberStart);\n      val(s, result, errPos);\n      if errPos <> 0 then\n        raise exception.Create('Invalid number \"' + s + '\"');\n    end;\n\n    function ParseStringPart: boolean;\n    var charCode: integer;\n    begin\n      SkipWhitespace;\n      if filePos <= length(fileContent) then\n      begin\n        if expectPlus then\n          if fileContent[filePos] <> '+' then\n          begin\n            result := false;\n            expectPlus := false;\n            exit;\n          end else\n          inc(filePos);\n\n        case fileContent[filePos] of\n        '+': raise exception.Create('Unexpected \"+\"');\n        '''': begin\n            inc(filePos);\n            while (filePos <= length(fileContent)) do\n            begin\n              if fileContent[filePos] = '''' then\n              begin\n                inc(filePos);\n                if (filePos <= length(fileContent)) and (fileContent[filePos] = '''') then\n                begin\n                  AppendChar('''');\n                  inc(filePos);\n                end\n                else break;\n              end else\n              if fileContent[filePos] in[#10,#13] then\n                raise Exception.Create('Unexpected end of line')\n              else\n              begin\n                AppendChar(fileContent[filePos]);\n                inc(filePos);\n              end;\n            end;\n            if (filePos <= length(fileContent)) and (fileContent[filePos] = '#') then\n              expectPlus := false\n            else\n              expectPlus := true;\n            result := true;\n          end;\n        '#': begin\n            inc(filePos);\n            charCode := ParseNumber;\n            if (charCode < 0) or (charCode > 255) then\n              raise exception.Create('Character code out of bounds');\n            AppendChar(chr(charCode));\n            if (filePos <= length(fileContent)) and (fileContent[filePos] in['#','''']) then\n              expectPlus := false\n            else\n              expectPlus := true;\n            result := true;\n          end;\n         else\n         begin\n           result := false;\n           expectPlus := false;\n         end;\n         end;\n      end\n       else\n       begin\n         result := false;\n         expectPlus := false;\n       end;\n    end;\n\n  begin\n    result := TMemoryStream.Create;\n    expectPlus := false;\n    if not ParseStringPart then raise exception.Create('Expecting string');\n    repeat\n      if ignoreCommas then\n      begin\n        SkipWhitespace;\n        if (filePos <= length(fileContent)) and (fileContent[filePos] = ',') then\n        begin\n          inc(filePos);\n          expectPlus := false;\n        end;\n      end;\n    until not ParseStringPart;\n  end;\n\n  procedure ReadContent;\n  var\n    bytesRead: integer;\n  begin\n    setlength(fileContent,AStream.Size-AStream.Position);\n    bytesRead := AStream.Read(fileContent[1],length(fileContent));\n    setlength(fileContent, bytesRead);\n    filePos := 1;\n  end;\n\n  function StreamToUTF8String(AStream: TStream): utf8String;\n  begin\n    setlength(result, AStream.Size);\n    AStream.Position := 0;\n    AStream.Read(result[1], length(result));\n    AStream.Free;\n  end;\n\nvar\n  entryName: utf8string;\n  entryType: utf8string;\n  entryContent: TStream;\n  inArray: boolean;\n\nbegin\n  Clear;\n  ReadContent;\n  while filePos <= length(fileContent) do\n  begin\n    if (upcase(fileContent[filePos]) = upcase(entryStart[1])) and\n      (CompareText(copy(fileContent,filePos,length(entryStart)),entryStart)=0) then\n    begin\n      inc(filePos, length(entryStart));\n      entryName := StreamToUTF8String(ParseString(false));\n      SkipComma;\n      entryType := StreamToUTF8String(ParseString(false));\n      SkipComma;\n\n      SkipWhitespace;\n      if (filePos <= length(fileContent)) and (fileContent[filePos] = '[') then\n      begin\n        inArray := true;\n        inc(filePos);\n      end else\n        inArray := false;\n      entryContent := ParseString(inArray);\n      SkipWhitespace;\n      if inArray then\n      begin\n        if (filePos <= length(fileContent)) and (fileContent[filePos] = ']') then\n          inc(filePos)\n        else\n          raise exception.Create('Expecting \"]\"');\n      end;\n\n      if entryType = 'FORMDATA' then\n        AddEntry(TFormDataEntry.Create(self,entryName,entryContent))\n      else\n        AddEntry(TLazResourceEntry.Create(self,entryName,entryType,entryContent));\n\n      if (filePos+length(entryEnd)-1 <= length(fileContent)) and (CompareText(copy(fileContent,filePos,length(entryEnd)),entryEnd)=0) then\n        inc(filePos,length(entryEnd))\n      else\n        raise exception.Create('Expecting \"'+entryEnd+'\"');\n    end else\n    if fileContent[filePos] in whiteSpace then\n      inc(filePos)\n    else\n      raise exception.Create('Unexpected character \"'+fileContent[filePos]+'\"');\n  end;\nend;\n\nfunction TLazResourceContainer.CreateEntry(AName: utf8string; AExtension: utf8string;\n  AContent: TStream): TMultiFileEntry;\nvar\n  binContent: TMemoryStream;\nbegin\n  if UTF8CompareText(AExtension,'lfm')=0 then\n  begin\n    binContent := TMemoryStream.Create;\n    try\n      AContent.Position:= 0;\n      LRSObjectTextToBinary(AContent, binContent);\n      result := TFormDataEntry.Create(self,AName,binContent);\n    except\n      on ex:Exception do\n      begin\n        binContent.Free;\n        result := nil;\n      end;\n    end;\n    AContent.Free;\n  end\n  else\n    result := TLazResourceEntry.Create(self,AName,UTF8UpperCase(AExtension),AContent);\nend;\n\nprocedure TLazResourceContainer.SaveToStream(ADestination: TStream);\nvar\n  i: Integer;\nbegin\n  for i := 0 to Count-1 do\n    TLazResourceEntry(Entry[i]).Serialize(ADestination);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralclbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Common implementation of BGRABitmap based on LCL (Lazarus Component Library) }\nunit BGRALCLBitmap;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, Graphics, GraphType, BGRABitmapTypes, BGRADefaultBitmap;\n\ntype\n  {* Implementation of 32-RGBA bitmap based on LCL (Lazarus Component Library) }\n  TBGRALCLBitmap = class(TBGRADefaultBitmap)\n  protected\n    function LoadFromRawImage(ARawImage: TRawImage; DefaultOpacity: byte;\n      AlwaysReplaceAlpha: boolean = False; RaiseErrorOnInvalidPixelFormat: boolean = True): boolean; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override;\n    procedure DoLoadFromBitmap; override;\n    procedure RebuildBitmap; override;\n    function CreatePtrBitmap(AWidth, AHeight: integer; AData: PBGRAPixel): TBGRAPtrBitmap; override;\n    procedure AssignRasterImage(ARaster: TRasterImage); virtual;\n    {** Determines the Xor mask from the alpha values of the bitmap }\n    procedure ExtractXorMask;\n  public\n    procedure Assign(Source: TPersistent); override;\n    procedure Assign(Source: TPersistent; ACopyProperties: Boolean); overload; override;\n\n    procedure LoadFromResource(AFilename: string; AOptions: TBGRALoadingOptions); overload; override;\n    procedure DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n      AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); override;\n    function MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean = False): TBitmap; override;\n    {** Assign image to a TBitmap }\n    procedure AssignToBitmap(ADestination: TBitmap);\n    procedure LoadFromDevice({%H-}DC: HDC); override;\n    procedure LoadFromDevice({%H-}DC: HDC; {%H-}ARect: TRect); override;\n    procedure TakeScreenshotOfPrimaryMonitor; override;\n    procedure TakeScreenshot({%H-}ARect: TRect); override;\n  end;\n\n  {* Implementation of pointer to 32-RGBA data based on LCL (Lazarus Component Library) }\n  TBGRALCLPtrBitmap = class(TBGRAPtrBitmap)\n\n    procedure RebuildBitmap; override;\n    function CreatePtrBitmap(AWidth, AHeight: integer; AData: PBGRAPixel): TBGRAPtrBitmap; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override;\n    function LoadFromRawImage(ARawImage: TRawImage; DefaultOpacity: byte;\n      AlwaysReplaceAlpha: boolean=False; {%H-}RaiseErrorOnInvalidPixelFormat: boolean\n      =True): boolean; override;\n  public\n    procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); override;\n    procedure DataDrawTransparent(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n  end;\n\ntype\n  { Tracker of bitmap changes }\n  TBitmapTracker = class(TBitmap)\n  protected\n    FUser: TBGRADefaultBitmap;\n    procedure Changed(Sender: TObject); override;\n  public\n    constructor Create(AUser: TBGRADefaultBitmap); overload;\n  end;\n\nimplementation\n\nuses BGRAText, LCLType, LCLIntf, FPimage, IntfGraphics;\n\n{ TBitmapTracker }\n\nconstructor TBitmapTracker.Create(AUser: TBGRADefaultBitmap);\nbegin\n  FUser := AUser;\n  inherited Create;\nend;\n\nprocedure TBitmapTracker.Changed(Sender: TObject);\nbegin\n  if FUser <> nil then\n    FUser.NotifyBitmapChange;\n  inherited Changed(Sender);\nend;\n\ntype\n  TCopyPixelProc = procedure (psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\n\nprocedure ApplyMask1bit(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; {%H-}sourcePixelSize: PtrInt; {%H-}defaultOpacity: byte);\nvar currentBit: byte;\nbegin\n  currentBit := 1;\n  while count > 0 do\n  begin\n    if psrc^ and currentBit <> 0 then pdest^.alpha := 0;\n    inc(pdest);\n    if currentBit = 128 then\n    begin\n      currentBit := 1;\n      inc(psrc);\n    end else\n      currentBit := currentBit shl 1;\n    dec(count);\n  end;\nend;\n\nprocedure ApplyMask1bitRev(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; {%H-}sourcePixelSize: PtrInt; {%H-}defaultOpacity: byte);\nvar currentBit: byte;\nbegin\n  currentBit := 128;\n  while count > 0 do\n  begin\n    if psrc^ and currentBit <> 0 then pdest^.alpha := 0;\n    inc(pdest);\n    if currentBit = 1 then\n    begin\n      currentBit := 128;\n      inc(psrc);\n    end else\n      currentBit := currentBit shr 1;\n    dec(count);\n  end;\nend;\n\nprocedure CopyFromBW_SetAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; {%H-}sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar currentBit: byte;\nbegin\n  currentBit := 1;\n  while count > 0 do\n  begin\n    if psrc^ and currentBit <> 0 then\n      pdest^ := BGRAWhite\n    else\n      pdest^ := BGRABlack;\n    pdest^.alpha := DefaultOpacity;\n    inc(pdest);\n    if currentBit = 128 then\n    begin\n      currentBit := 1;\n      inc(psrc);\n    end else\n      currentBit := currentBit shl 1;\n    dec(count);\n  end;\nend;\n\nprocedure CopyFromBW_SetAlphaBitRev(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; {%H-}sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar currentBit: byte;\nbegin\n  currentBit := 128;\n  while count > 0 do\n  begin\n    if psrc^ and currentBit <> 0 then\n      pdest^ := BGRAWhite\n    else\n      pdest^ := BGRABlack;\n    pdest^.alpha := DefaultOpacity;\n    inc(pdest);\n    if currentBit = 1 then\n    begin\n      currentBit := 128;\n      inc(psrc);\n    end else\n      currentBit := currentBit shr 1;\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom16Bit(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar r,g,b: byte;\nbegin\n  while count > 0 do\n  begin\n    b := PWord(psrc)^ and 31;\n    g := (PWord(psrc)^ shr 5) and 63;\n    r := PWord(psrc)^ shr 11;\n    pdest^.blue := (b shl 3) + (b shr 2);\n    pdest^.green := (g shl 2) + (g shr 4);\n    pdest^.red := (r shl 3) + (r shr 2);\n    pdest^.alpha := defaultOpacity;\n    inc(psrc,sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom16BitSwap(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar r,g,b: byte; w: word;\nbegin\n  while count > 0 do\n  begin\n    w := swap(PWord(psrc)^);\n    b := w and 31;\n    g := (w shr 5) and 63;\n    r := w shr 11;\n    pdest^.blue := (b shl 3) + (b shr 2);\n    pdest^.green := (g shl 2) + (g shr 4);\n    pdest^.red := (r shl 3) + (r shr 2);\n    pdest^.alpha := defaultOpacity;\n    inc(psrc,sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom24Bit(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nbegin\n  while count > 0 do\n  begin\n    PWord(pdest)^ := PWord(psrc)^;\n    (PByte(pdest)+2)^ := (psrc+2)^;\n    pdest^.alpha := DefaultOpacity;\n    inc(psrc,sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom24Bit_SwapRedBlue(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nbegin\n  while count > 0 do\n  begin\n    PByte(pdest)^ := (psrc+2)^;\n    (PByte(pdest)+1)^ := (psrc+1)^;\n    (PByte(pdest)+2)^ := psrc^;\n    pdest^.alpha := DefaultOpacity;\n    inc(psrc,sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFromARGB_KeepAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; {%H-}defaultOpacity: byte);\nbegin\n  while count > 0 do\n  begin\n    PLongWord(pdest)^ := ((PByte(psrc)+3)^ shl TBGRAPixel_BlueShift) or\n                      ((PByte(psrc)+2)^ shl TBGRAPixel_GreenShift) or\n                      ((PByte(psrc)+1)^ shl TBGRAPixel_RedShift) or\n                      (PByte(psrc)^ shl TBGRAPixel_AlphaShift);\n    dec(count);\n    inc(pdest);\n    inc(psrc, sourcePixelSize);\n  end;\nend;\n\nprocedure CopyFromARGB_SetAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nbegin\n  while count > 0 do\n  begin\n    PLongWord(pdest)^ := ((PByte(psrc)+3)^ shl TBGRAPixel_BlueShift) or\n                      ((PByte(psrc)+2)^ shl TBGRAPixel_GreenShift) or\n                      ((PByte(psrc)+1)^ shl TBGRAPixel_RedShift) or\n                      (DefaultOpacity shl TBGRAPixel_AlphaShift);\n    inc(psrc, sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFromARGB_ReplaceZeroAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nconst ARGB_ColorMask = {$IFDEF ENDIAN_LITTLE}$FFFFFF00{$ELSE}$00FFFFFF{$ENDIF};\n      ARGB_RedShift = {$IFDEF ENDIAN_LITTLE}8{$ELSE}16{$ENDIF};\n      ARGB_GreenShift = {$IFDEF ENDIAN_LITTLE}16{$ELSE}8{$ENDIF};\n      ARGB_BlueShift = {$IFDEF ENDIAN_LITTLE}24{$ELSE}0{$ENDIF};\nvar\n  sourceval: UInt32or64;\n  alphaValue: UInt32or64;\n  OpacityOrMask: UInt32or64;\nbegin\n  OpacityOrMask := DefaultOpacity shl TBGRAPixel_AlphaShift;\n  while count > 0 do\n  begin\n    sourceval := plongword(psrc)^;\n    alphaValue := {$IFDEF ENDIAN_LITTLE}sourceval and $ff{$ELSE}sourceval shr 24{$ENDIF};\n    if (alphaValue = 0) and ((sourceval and ARGB_ColorMask) <> 0) then //if not black but transparent\n    begin\n      PLongWord(pdest)^ := (((sourceval shr ARGB_BlueShift) and $ff) shl TBGRAPixel_BlueShift) or\n                        (((sourceval shr ARGB_GreenShift) and $ff) shl TBGRAPixel_GreenShift) or\n                        (((sourceval shr ARGB_RedShift) and $ff) shl TBGRAPixel_RedShift) or\n                        OpacityOrMask;\n    end else\n    begin\n      PLongWord(pdest)^ := (((sourceval shr ARGB_BlueShift) and $ff) shl TBGRAPixel_BlueShift) or\n                        (((sourceval shr ARGB_GreenShift) and $ff) shl TBGRAPixel_GreenShift) or\n                        (((sourceval shr ARGB_RedShift) and $ff) shl TBGRAPixel_RedShift) or\n                        (alphaValue shl TBGRAPixel_AlphaShift);\n    end;\n    dec(count);\n    inc(pdest);\n    inc(psrc, sourcePixelSize);\n  end;\nend;\n\nconst\n  BGRA_AlphaMask = 255 shl TBGRAPixel_AlphaShift;\n  BGRA_RedMask = 255 shl TBGRAPixel_RedShift;\n  BGRA_GreenMask = 255 shl TBGRAPixel_GreenShift;\n  BGRA_BlueMask = 255 shl TBGRAPixel_BlueShift;\n  BGRA_ColorMask = BGRA_RedMask or BGRA_GreenMask or BGRA_BlueMask;\n\nprocedure CopyFrom32Bit_KeepAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; {%H-}defaultOpacity: byte);\nbegin\n  if sourcePixelSize = 4 then\n    move(psrc^,pdest^,count*sizeof(TBGRAPixel))\n  else\n  begin\n    while count > 0 do\n    begin\n      PLongWord(pdest)^ := PLongWord(psrc)^;\n      dec(count);\n      inc(pdest);\n      inc(psrc, sourcePixelSize);\n    end;\n  end;\nend;\n\nprocedure CopyFrom32Bit_SwapRedBlue_KeepAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; {%H-}defaultOpacity: byte);\nvar srcValue: UInt32or64;\nbegin\n  while count > 0 do\n  begin\n    srcValue := PLongWord(psrc)^;\n    PLongWord(pdest)^ := (srcValue and not (BGRA_RedMask or BGRA_BlueMask))\n                   or (((srcValue and BGRA_RedMask) shr TBGRAPixel_RedShift) shl TBGRAPixel_BlueShift)\n                   or (((srcValue and BGRA_BlueMask) shr TBGRAPixel_BlueShift) shl TBGRAPixel_RedShift);\n    dec(count);\n    inc(pdest);\n    inc(psrc, sourcePixelSize);\n  end;\nend;\n\nprocedure CopyFrom32Bit_SetAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar\n  OpacityOrMask: UInt32or64;\nbegin\n  OpacityOrMask := DefaultOpacity shl TBGRAPixel_AlphaShift;\n  while count > 0 do\n  begin\n    PLongWord(pdest)^ := (PLongWord(psrc)^ and not BGRA_AlphaMask) or OpacityOrMask;\n    inc(psrc, sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom32Bit_SwapRedBlue_SetAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nbegin\n  while count > 0 do\n  begin\n    pdest^.red := PBGRAPixel(psrc)^.blue;\n    pdest^.green := PBGRAPixel(psrc)^.green;\n    pdest^.blue := PBGRAPixel(psrc)^.red;\n    pdest^.alpha := DefaultOpacity; //use default opacity\n    inc(psrc, sourcePixelSize);\n    inc(pdest);\n    dec(count);\n  end;\nend;\n\nprocedure CopyFrom32Bit_ReplaceZeroAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar sourceval: UInt32or64;\n  OpacityOrMask : UInt32or64;\nbegin\n  OpacityOrMask := DefaultOpacity shl TBGRAPixel_AlphaShift;\n  while count > 0 do\n  begin\n    sourceval := plongword(psrc)^;\n    if ((sourceVal shr TBGRAPixel_AlphaShift) and $ff = 0) and ((sourceval and BGRA_ColorMask) <> 0) then //if not black but transparent\n      plongword(pdest)^ := (sourceval and BGRA_ColorMask) or OpacityOrMask //use default opacity\n    else\n      plongword(pdest)^ := plongword(psrc)^;\n    dec(count);\n    inc(pdest);\n    inc(psrc, sourcePixelSize);\n  end;\nend;\n\nprocedure CopyFrom32Bit_SwapRedBlue_ReplaceZeroAlpha(psrc: PByte; pdest: PBGRAPixel; count: Int32or64; sourcePixelSize: PtrInt; defaultOpacity: byte);\nvar sourceval: UInt32or64;\n  OpacityOrMask : UInt32or64;\nbegin\n  OpacityOrMask := DefaultOpacity shl TBGRAPixel_AlphaShift;\n  while count > 0 do\n  begin\n    sourceval := plongword(psrc)^;\n    if ((sourceVal shr TBGRAPixel_AlphaShift) and $ff = 0) and ((sourceval and BGRA_ColorMask) <> 0) then //if not black but transparent\n      plongword(pdest)^ := (((sourceval and BGRA_RedMask) shr TBGRAPixel_RedShift) shl TBGRAPixel_BlueShift)\n                        or (((sourceval and BGRA_BlueMask) shr TBGRAPixel_BlueShift) shl TBGRAPixel_RedShift)\n                        or (sourceval and BGRA_GreenMask)\n                        or OpacityOrMask\n    else\n      plongword(pdest)^ := (((sourceval and BGRA_RedMask) shr TBGRAPixel_RedShift) shl TBGRAPixel_BlueShift)\n                        or (((sourceval and BGRA_BlueMask) shr TBGRAPixel_BlueShift) shl TBGRAPixel_RedShift)\n                        or (sourceval and (BGRA_GreenMask or BGRA_AlphaMask));\n    dec(count);\n    inc(pdest);\n    inc(psrc, sourcePixelSize);\n  end;\nend;\n\nprocedure DoCopyProc(ADestination: TBGRACustomBitmap; ACopyProc: TCopyPixelProc; AData: PByte; ABytesPerLine, ABitsPerPixel: integer; ALineOrder: TRawImageLineOrder; ADefaultOpacity: byte);\nvar\n  n: integer;\n  psource_byte, pdest_byte,\n  psource_first, pdest_first: PByte;\n  psource_delta, pdest_delta: integer;\nbegin\n  if (ALineOrder = ADestination.LineOrder) and\n    (ABytesPerLine = (ABitsPerPixel shr 3) * LongWord(ADestination.Width)) then\n    ACopyProc(AData, ADestination.Data, ADestination.NbPixels, ABitsPerPixel shr 3, ADefaultOpacity)\n  else\n  begin\n    if ALineOrder = riloTopToBottom then\n    begin\n      psource_first := AData;\n      psource_delta := ABytesPerLine;\n    end else\n    begin\n      psource_first := AData + (ADestination.Height-1) * ABytesPerLine;\n      psource_delta := -ABytesPerLine;\n    end;\n\n    if ADestination.LineOrder = riloTopToBottom then\n    begin\n      pdest_first := PByte(ADestination.Data);\n      pdest_delta := ADestination.Width*sizeof(TBGRAPixel);\n    end else\n    begin\n      pdest_first := PByte(ADestination.Data) + (ADestination.Height-1)*ADestination.Width*sizeof(TBGRAPixel);\n      pdest_delta := -ADestination.Width*sizeof(TBGRAPixel);\n    end;\n\n    psource_byte := psource_first;\n    pdest_byte := pdest_first;\n    for n := ADestination.Height-1 downto 0 do\n    begin\n      ACopyProc(psource_byte, PBGRAPixel(pdest_byte), ADestination.Width, ABitsPerPixel shr 3, ADefaultOpacity);\n      inc(psource_byte, psource_delta);\n      inc(pdest_byte, pdest_delta);\n    end;\n  end;\nend;\n\nprocedure ApplyRawImageMask(ADestination: TBGRACustomBitmap; const ARawImage: TRawImage);\nvar\n  copyProc: TCopyPixelProc;\nbegin\n  if (ARawImage.Description.MaskBitsPerPixel = 1) and (ARawImage.Mask <> nil) then\n  begin\n    if ARawImage.Description.BitOrder = riboBitsInOrder then\n      copyProc := @ApplyMask1bit\n    else\n      copyProc := @ApplyMask1bitRev;\n    DoCopyProc(ADestination, copyProc, ARawImage.Mask, ARawImage.Description.MaskBytesPerLine, ARawImage.Description.MaskBitsPerPixel, ARawImage.Description.LineOrder, 0);\n    ADestination.InvalidateBitmap;\n  end;\nend;\n\n{ Load raw image data. It must be 32bit, 24 bits or 1bit per pixel}\nfunction LoadFromRawImageImplementation(ADestination: TBGRADefaultBitmap; const ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean; RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nvar\n  mustSwapRedBlue: boolean;\n  copyProc: TCopyPixelProc;\n  nbColorChannels: integer;\n\n  function FormatError(message: string): boolean;\n  begin\n    if RaiseErrorOnInvalidPixelFormat then\n      raise Exception.Create('Invalid raw image format. ' + message)\n    else\n      result := false;\n  end;\n\nbegin\n  if (ARawImage.Description.Width <> LongWord(ADestination.Width)) or\n    (ARawImage.Description.Height <> LongWord(ADestination.Height)) then\n    raise Exception.Create('Bitmap size is inconsistent');\n\n  if (ADestination.Height=0) or (ADestination.Width=0) then\n  begin\n    result := true;\n    exit;\n  end;\n\n  if ARawImage.Description.BitsPerPixel = 1 then\n  begin\n    if ARawImage.Description.BitOrder = riboBitsInOrder then\n      copyProc := @CopyFromBW_SetAlpha\n    else\n      copyProc := @CopyFromBW_SetAlphaBitRev;\n    DefaultOpacity := 255;\n  end else\n  begin\n    if ((ARawImage.Description.BitsPerPixel and 7) <> 0) then\n    begin\n      result := FormatError(IntToStr(ARawImage.Description.BitsPerPixel) + 'bit per pixel found but multiple of 8bit expected');\n      exit;\n    end;\n\n    if (ARawImage.Description.BitsPerPixel < 16) then\n    begin\n      result := FormatError(IntToStr(ARawImage.Description.BitsPerPixel) + 'bit per pixel found but at least 16bit expected');\n      exit;\n    end;\n\n    nbColorChannels := 0;\n    if (ARawImage.Description.RedPrec > 0)  then inc(nbColorChannels);\n    if (ARawImage.Description.GreenPrec > 0)  then inc(nbColorChannels);\n    if (ARawImage.Description.BluePrec > 0)  then inc(nbColorChannels);\n\n    if (nbColorChannels < 3) then\n    begin\n      result := FormatError('One or more color channel is missing (RGB expected)');\n      exit;\n    end;\n\n    if ARawImage.Description.BitsPerPixel = 16 then\n    begin\n      if ARawImage.Description.Depth <> 16 then\n      begin\n        result := FormatError(IntToStr(ARawImage.Description.Depth) + 'bit depth found but 16bit expected');\n        exit;\n      end;\n      if (ARawImage.Description.ByteOrder = riboLSBFirst) xor {$IFDEF ENDIAN_BIG}true{$ELSE}false{$ENDIF} then\n        copyProc := @CopyFrom16Bit\n      else\n        copyProc := @CopyFrom16BitSwap;\n    end else\n    //channels are in ARGB order\n    if (ARawImage.Description.BitsPerPixel >= 32) and\n       (ARawImage.Description.AlphaPrec = 8) and\n      (((ARawImage.Description.AlphaShift = 0) and\n      (ARawImage.Description.RedShift = 8) and\n      (ARawImage.Description.GreenShift = 16) and\n      (ARawImage.Description.BlueShift = 24) and\n      (ARawImage.Description.ByteOrder = riboLSBFirst)) or\n      ((ARawImage.Description.AlphaShift = ARawImage.Description.BitsPerPixel - 8) and\n      (ARawImage.Description.RedShift = ARawImage.Description.BitsPerPixel - 16) and\n      (ARawImage.Description.GreenShift = ARawImage.Description.BitsPerPixel - 24) and\n      (ARawImage.Description.BlueShift = ARawImage.Description.BitsPerPixel - 32) and\n      (ARawImage.Description.ByteOrder = riboMSBFirst))) then\n      begin\n        if AlwaysReplaceAlpha then\n          copyProc := @CopyFromARGB_SetAlpha\n        else if DefaultOpacity = 0 then\n          copyProc := @CopyFromARGB_KeepAlpha\n        else\n          copyProc := @CopyFromARGB_ReplaceZeroAlpha;\n      end\n    else //channels are in ARGB order but alpha is not used\n    if (ARawImage.Description.BitsPerPixel >= 32) and\n       (ARawImage.Description.AlphaPrec = 0) and\n      (((ARawImage.Description.RedShift = 8) and\n      (ARawImage.Description.GreenShift = 16) and\n      (ARawImage.Description.BlueShift = 24) and\n      (ARawImage.Description.ByteOrder = riboLSBFirst)) or\n      ((ARawImage.Description.RedShift = ARawImage.Description.BitsPerPixel - 16) and\n      (ARawImage.Description.GreenShift = ARawImage.Description.BitsPerPixel - 24) and\n      (ARawImage.Description.BlueShift = ARawImage.Description.BitsPerPixel - 32) and\n      (ARawImage.Description.ByteOrder = riboMSBFirst))) then\n      begin\n        DefaultOpacity := 255;\n        copyProc := @CopyFromARGB_SetAlpha;\n      end\n    else\n    begin\n      //channels are in RGB order (alpha channel may follow)\n      if (ARawImage.Description.BitsPerPixel >= 24) and\n         (((ARawImage.Description.RedShift = 0) and\n           (ARawImage.Description.GreenShift = 8) and\n           (ARawImage.Description.BlueShift = 16) and\n           (ARawImage.Description.ByteOrder = riboLSBFirst)) or\n          ((ARawImage.Description.RedShift = ARawImage.Description.BitsPerPixel - 8) and\n           (ARawImage.Description.GreenShift = ARawImage.Description.BitsPerPixel - 16) and\n           (ARawImage.Description.BlueShift = ARawImage.Description.BitsPerPixel - 24) and\n           (ARawImage.Description.ByteOrder = riboMSBFirst))) then\n      begin\n        mustSwapRedBlue:= not TBGRAPixel_RGBAOrder;\n      end\n      else\n      //channels are in BGR order (alpha channel may follow)\n      if (ARawImage.Description.BitsPerPixel >= 24) and\n         (((ARawImage.Description.BlueShift = 0) and\n           (ARawImage.Description.GreenShift = 8) and\n           (ARawImage.Description.RedShift = 16) and\n           (ARawImage.Description.ByteOrder = riboLSBFirst)) or\n          ((ARawImage.Description.BlueShift = ARawImage.Description.BitsPerPixel - 8) and\n           (ARawImage.Description.GreenShift = ARawImage.Description.BitsPerPixel - 16) and\n           (ARawImage.Description.RedShift = ARawImage.Description.BitsPerPixel - 24) and\n           (ARawImage.Description.ByteOrder = riboMSBFirst))) then\n      begin\n        mustSwapRedBlue:= TBGRAPixel_RGBAOrder;\n      end\n      else\n      begin\n        result := FormatError('BitsPerPixel: ' + IntToStr(ARawImage.Description.BitsPerPixel) + ', '\n          + 'RedShit: ' + IntToStr(ARawImage.Description.RedShift) + ', Prec: ' + IntToStr(ARawImage.Description.RedPrec)+ ', '\n          + 'GreenShit: ' + IntToStr(ARawImage.Description.GreenShift) + ', Prec: ' + IntToStr(ARawImage.Description.GreenPrec)+ ', '\n          + 'BlueShift: ' + IntToStr(ARawImage.Description.BlueShift) + ', Prec: ' + IntToStr(ARawImage.Description.BluePrec)+ ', '\n          + 'AlphaShift: ' + IntToStr(ARawImage.Description.AlphaShift) + ', Prec: ' + IntToStr(ARawImage.Description.AlphaPrec) );\n        exit;\n      end;\n\n      if not mustSwapRedBlue then\n      begin\n        if ARawImage.Description.BitsPerPixel = 24 then\n          copyProc := @CopyFrom24Bit\n        else\n        if AlwaysReplaceAlpha or (ARawImage.Description.AlphaPrec = 0) then\n          copyProc := @CopyFrom32Bit_SetAlpha\n        else if DefaultOpacity = 0 then\n          copyProc := @CopyFrom32Bit_KeepAlpha\n        else\n          copyProc := @CopyFrom32Bit_ReplaceZeroAlpha;\n      end else\n      begin\n        if ARawImage.Description.BitsPerPixel = 24 then\n          copyProc := @CopyFrom24Bit_SwapRedBlue\n        else\n        if AlwaysReplaceAlpha or (ARawImage.Description.AlphaPrec = 0) then\n          copyProc := @CopyFrom32Bit_SwapRedBlue_SetAlpha\n        else if DefaultOpacity = 0 then\n          copyProc := @CopyFrom32Bit_SwapRedBlue_KeepAlpha\n        else\n          copyProc := @CopyFrom32Bit_SwapRedBlue_ReplaceZeroAlpha;\n      end;\n    end;\n  end;\n\n  DoCopyProc(ADestination, copyProc, ARawImage.Data, ARawImage.Description.BytesPerLine, ARawImage.Description.BitsPerPixel, ARawImage.Description.LineOrder, DefaultOpacity);\n  ADestination.InvalidateBitmap;\n\n  ApplyRawImageMask(ADestination, ARawImage);\n  result := true;\nend;\n\n{ Draw BGRA data to a canvas with transparency }\nprocedure DataDrawTransparentImplementation(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  Temp:     TBitmap;\n  RawImage: TRawImage;\n  BitmapHandle, MaskHandle: HBitmap;\nbegin\n  RawImage.Init;\n  RawImage.Description.Init_BPP32_B8G8R8A8_BIO_TTB(AWidth, AHeight);\n  RawImage.Description.LineOrder := ALineOrder;\n  RawImage.Data     := PByte(AData);\n  RawImage.DataSize := AWidth * AHeight * sizeof(TBGRAPixel);\n  if not RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False) then\n    raise FPImageException.Create('Failed to create bitmap handle');\n  Temp := TBitmap.Create;\n  Temp.Handle := BitmapHandle;\n  Temp.MaskHandle := MaskHandle;\n  ACanvas.StretchDraw(Rect, Temp);\n  Temp.Free;\nend;\n\n{ Draw BGRA data to a canvas without transparency }\nprocedure DataDrawOpaqueImplementation(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  Temp:      TBitmap;\n  RawImage:  TRawImage;\n  BitmapHandle, MaskHandle: HBitmap;\n  CreateResult: boolean;\n  tempShift: byte;\nbegin\n  if (AHeight = 0) or (AWidth = 0) then\n    exit;\n\n  RawImage.Init;\n  RawImage.Description.Init_BPP32_B8G8R8_BIO_TTB(AWidth,AHeight);\n  RawImage.Description.LineOrder := ALineOrder;\n  RawImage.Description.LineEnd := rileDWordBoundary;\n  RawImage.Data := PByte(AData);\n  RawImage.DataSize:= AWidth*AHeight*sizeof(TBGRAPixel);\n  if TBGRAPixel_RGBAOrder then\n  begin\n    tempShift := RawImage.Description.RedShift;\n    RawImage.Description.RedShift := RawImage.Description.BlueShift;\n    RawImage.Description.BlueShift := tempShift;\n  end;\n  CreateResult := RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False);\n\n  if not CreateResult then\n    raise FPImageException.Create('Failed to create bitmap handle');\n\n  Temp := TBitmap.Create;\n  Temp.Handle := BitmapHandle;\n  Temp.MaskHandle := MaskHandle;\n  ACanvas.StretchDraw(Rect, Temp);\n  Temp.Free;\nend;\n\nprocedure GetImageFromCanvasImplementation(ADestination: TBGRADefaultBitmap; CanvasSource: TCanvas; x, y: integer);\nvar\n  bmp: TBitmap;\n  subBmp: TBGRACustomBitmap;\n  subRect: TRect;\n  cw,ch: integer;\nbegin\n  cw := CanvasSource.Width;\n  ch := CanvasSource.Height;\n  if (x < 0) or (y < 0) or (x+ADestination.Width > cw) or\n    (y+ADestination.Height > ch) then\n  begin\n    ADestination.FillTransparent;\n    if (x+ADestination.Width <= 0) or (y+ADestination.Height <= 0) or\n      (x >= cw) or (y >= ch) then\n      exit;\n\n    if (x > 0) then subRect.Left := x else subRect.Left := 0;\n    if (y > 0) then subRect.Top := y else subRect.Top := 0;\n    if (x+ADestination.Width > cw) then subRect.Right := cw else\n      subRect.Right := x+ADestination.Width;\n    if (y+ADestination.Height > ch) then subRect.Bottom := ch else\n      subRect.Bottom := y+ADestination.Height;\n\n    subBmp := ADestination.NewBitmap(subRect.Right-subRect.Left,subRect.Bottom-subRect.Top);\n    subBmp.GetImageFromCanvas(CanvasSource,subRect.Left,subRect.Top);\n    ADestination.PutImage(subRect.Left-x,subRect.Top-y,subBmp,dmSet);\n    subBmp.Free;\n    exit;\n  end;\n  bmp := TBitmap.Create;\n  bmp.PixelFormat := pf24bit;\n  bmp.Width := ADestination.Width;\n  bmp.Height := ADestination.Height;\n  bmp.Canvas.CopyRect(rect(0, 0, ADestination.Width, ADestination.Height), CanvasSource,\n    rect(x, y, x + ADestination.Width, y + ADestination.Height));\n  LoadFromRawImageImplementation(ADestination, bmp.RawImage, 255, True, False);\n  bmp.Free;\n  ADestination.InvalidateBitmap;\nend;\n\n{ TBGRALCLPtrBitmap }\n\nprocedure TBGRALCLPtrBitmap.RebuildBitmap;\nvar\n  RawImage: TRawImage;\n  BitmapHandle, MaskHandle: HBitmap;\nbegin\n  if FBitmap <> nil then\n    FBitmap.Free;\n\n  FBitmap := TBitmapTracker.Create(self);\n\n  if (FWidth > 0) and (FHeight > 0) then\n  begin\n    RawImage.Init;\n    {$PUSH}{$WARNINGS OFF}\n    if TBGRAPixel_RGBAOrder then\n      RawImage.Description.Init_BPP32_R8G8B8A8_BIO_TTB(FWidth, FHeight)\n    else\n      RawImage.Description.Init_BPP32_B8G8R8A8_BIO_TTB(FWidth, FHeight);\n    {$POP}\n    RawImage.Description.LineOrder := FLineOrder;\n    RawImage.Data     := FDataByte;\n    RawImage.DataSize := FWidth * FHeight * sizeof(TBGRAPixel);\n    if not RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False) then\n      raise FPImageException.Create('Failed to create bitmap handle');\n    FBitmap.Handle     := BitmapHandle;\n    FBitmap.MaskHandle := MaskHandle;\n  end;\n\n  FBitmap.Canvas.AntialiasingMode := amOff;\nend;\n\nfunction TBGRALCLPtrBitmap.CreatePtrBitmap(AWidth, AHeight: integer;\n  AData: PBGRAPixel): TBGRAPtrBitmap;\nbegin\n  Result:= TBGRALCLPtrBitmap.Create(AWidth,AHeight,AData);\nend;\n\nfunction TBGRALCLPtrBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  result := TLCLFontRenderer.Create;\nend;\n\nfunction TBGRALCLPtrBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nbegin\n  DiscardBitmapChange;\n  result := LoadFromRawImageImplementation(self,ARawImage,DefaultOpacity,AlwaysReplaceAlpha,RaiseErrorOnInvalidPixelFormat);\nend;\n\nprocedure TBGRALCLPtrBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x,\n  y: integer);\nbegin\n  DiscardBitmapChange;\n  GetImageFromCanvasImplementation(self,CanvasSource,x,y);\nend;\n\nprocedure TBGRALCLPtrBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  DataDrawTransparentImplementation(ACanvas, Rect, AData, ALineOrder, AWidth, AHeight);\nend;\n\nprocedure TBGRALCLPtrBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  DataDrawOpaqueImplementation(ACanvas, Rect, AData, ALineOrder, AWidth, AHeight);\nend;\n\nfunction TBGRALCLBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nbegin\n  DiscardBitmapChange;\n  result := LoadFromRawImageImplementation(self,ARawImage,DefaultOpacity,AlwaysReplaceAlpha,RaiseErrorOnInvalidPixelFormat);\nend;\n\nfunction TBGRALCLBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  result := TLCLFontRenderer.Create;\nend;\n\nprocedure TBGRALCLBitmap.DoLoadFromBitmap;\nbegin\n  if FBitmap <> nil then\n  begin\n    LoadFromRawImage(FBitmap.RawImage, FCanvasOpacity);\n    if FAlphaCorrectionNeeded then DoAlphaCorrection;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.RebuildBitmap;\nvar\n  RawImage: TRawImage;\n  BitmapHandle, MaskHandle: HBitmap;\nbegin\n  if FBitmap <> nil then\n    FBitmap.Free;\n\n  FBitmap := TBitmapTracker.Create(self);\n\n  if (FWidth > 0) and (FHeight > 0) then\n  begin\n    RawImage.Init;\n    {$PUSH}{$WARNINGS OFF}\n    if TBGRAPixel_RGBAOrder then\n      RawImage.Description.Init_BPP32_R8G8B8A8_BIO_TTB(FWidth, FHeight)\n    else\n      RawImage.Description.Init_BPP32_B8G8R8A8_BIO_TTB(FWidth, FHeight);\n    {$POP}\n    RawImage.Description.LineOrder := FLineOrder;\n    RawImage.Data     := FDataByte;\n    RawImage.DataSize := FWidth * FHeight * sizeof(TBGRAPixel);\n    if not RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False) then\n      raise FPImageException.Create('Failed to create bitmap handle');\n    FBitmap.Handle     := BitmapHandle;\n    FBitmap.MaskHandle := MaskHandle;\n  end;\n\n  FBitmap.Canvas.AntialiasingMode := amOff;\nend;\n\nfunction TBGRALCLBitmap.CreatePtrBitmap(AWidth, AHeight: integer;\n  AData: PBGRAPixel): TBGRAPtrBitmap;\nbegin\n  Result:= TBGRALCLPtrBitmap.Create(AWidth, AHeight, AData);\nend;\n\nprocedure TBGRALCLBitmap.Assign(Source: TPersistent);\nbegin\n  Assign(Source, False);\nend;\n\nprocedure TBGRALCLBitmap.Assign(Source: TPersistent; ACopyProperties: Boolean);\nbegin\n  if Source is TRasterImage then\n  begin\n    AssignRasterImage(TRasterImage(Source));\n  end else\n    inherited Assign(Source, ACopyProperties);\n\n  if Source is TCursorImage then\n  begin\n    HotSpot := TCursorImage(Source).HotSpot;\n    ExtractXorMask;\n  end\n  else if Source is TIcon then\n  begin\n    HotSpot := Point(0,0);\n    ExtractXorMask;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.LoadFromResource(AFilename: string;\n  AOptions: TBGRALoadingOptions);\nvar\n  icon: TCustomIcon;\n  ext: String;\nbegin\n  if BGRAResource.IsWinResource(AFilename) then\n  begin\n    ext:= Uppercase(ExtractFileExt(AFilename));\n    if (ext = '.ICO') or (ext = '.CUR') then\n    begin\n      if ext= '.ICO' then icon := TIcon.Create\n      else icon := TCursorImage.Create;\n      try\n        icon.LoadFromResourceName(HInstance, ChangeFileExt(AFilename,''));\n        icon.Current:= icon.GetBestIndexForSize(Size(65536,65536));\n        self.AssignRasterImage(icon);\n      finally\n        icon.Free;\n      end;\n      exit;\n    end;\n  end;\n\n  inherited LoadFromResource(AFilename, AOptions);\nend;\n\nprocedure TBGRALCLBitmap.AssignRasterImage(ARaster: TRasterImage);\nvar TempBmp: TBitmap;\nbegin\n  DiscardBitmapChange;\n  SetSize(ARaster.Width, ARaster.Height);\n  if LoadFromRawImage(ARaster.RawImage,0,False,False) then\n  begin\n    If Empty then\n    begin\n      AlphaFill(255); // if bitmap seems to be empty, assume\n                      // it is an opaque bitmap without alpha channel\n      ApplyRawImageMask(self, ARaster.RawImage);\n    end;\n  end else\n  if (ARaster is TBitmap) or (ARaster is TCustomIcon) then\n  begin //try to convert\n    TempBmp := TBitmap.Create;\n    TempBmp.Width := ARaster.Width;\n    TempBmp.Height := ARaster.Height;\n    TempBmp.Canvas.Draw(0,0,ARaster);\n    try\n      LoadFromRawImage(TempBmp.RawImage,255,False,true);\n      ApplyRawImageMask(self, ARaster.RawImage);\n    finally\n      TempBmp.Free;\n    end;\n  end else\n    raise Exception.Create('Unable to convert image to 24 bit');\nend;\n\nprocedure TBGRALCLBitmap.ExtractXorMask;\nvar\n  y, x: Integer;\n  p: PBGRAPixel;\nbegin\n  DiscardXorMask;\n  for y := 0 to Height-1 do\n  begin\n    p := ScanLine[y];\n    for x := 0 to Width-1 do\n    begin\n      if (p^.alpha = 0) and (PLongWord(p)^<>0) then\n      begin\n        NeedXorMask;\n        XorMask.SetPixel(x,y, p^);\n      end;\n      inc(p);\n    end;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  DataDrawTransparentImplementation(ACanvas, Rect, AData, ALineOrder, AWidth, AHeight);\nend;\n\nprocedure TBGRALCLBitmap.DataDrawOpaque(ACanvas: TCanvas; ARect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  DataDrawOpaqueImplementation(ACanvas, ARect, AData, ALineOrder, AWidth, AHeight);\nend;\n\nprocedure TBGRALCLBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer);\nbegin\n  DiscardBitmapChange;\n  GetImageFromCanvasImplementation(self,CanvasSource,x,y);\nend;\n\nfunction TBGRALCLBitmap.MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean): TBitmap;\nvar\n  maskImg: TLazIntfImage;\n  y, x: Integer;\n  p: PBGRAPixel;\n  bmpHandle, maskHandle: HBitmap;\nbegin\n  {$IFDEF LINUX}\n  if (BackgroundColor = clNone) and not HasSemiTransparentPixels then\n  begin\n    BackgroundColor := clSilver;\n    AMasked := true;\n  end;\n  {$ENDIF}\n  if BackgroundColor = clNone then\n  begin\n    result := TBitmap.Create;\n    AssignToBitmap(result);\n  end else\n  begin\n    Result:=inherited MakeBitmapCopy(BackgroundColor, AMasked);\n    if AMasked and HasTransparentPixels then\n    begin\n      maskImg := TLazIntfImage.Create(Width, Height, [riqfMono]);\n      try\n        maskImg.CreateData;\n        for y := 0 to Height-1 do\n        begin\n          p := ScanLine[y];\n          for x := 0 to Width-1 do\n          begin\n            if p^.alpha >= 128 then\n              maskImg.Colors[x,y] := colBlack\n            else\n              maskImg.Colors[x,y] := colWhite;\n            inc(p);\n          end;\n        end;\n        maskImg.CreateBitmaps(bmpHandle, maskHandle, true);\n        result.Masked := true;\n        result.MaskHandle:= bmpHandle;\n      finally\n        maskImg.Free;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.AssignToBitmap(ADestination: TBitmap);\nvar\n  stream: TStream;\nbegin\n  stream := TMemoryStream.Create;\n  try\n    Bitmap.SaveToStream(stream);\n    stream.Position:= 0;\n    ADestination.LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.LoadFromDevice(DC: HDC);\nvar\n  rawImage: TRawImage;\n  sourceSize: TPoint;\nbegin\n  sourceSize := Point(0,0);\n  GetDeviceSize(DC, sourceSize);\n  if (sourceSize.x = 0) or (sourceSize.y = 0) then\n  begin\n    SetSize(0,0);\n    exit;\n  end;\n  try\n    if not RawImage_FromDevice(rawImage, DC, rect(0,0,sourceSize.x,sourceSize.y)) then\n      raise Exception.Create('Cannot get raw image from device');\n    SetSize(rawImage.Description.Width, rawImage.Description.Height);\n    LoadFromRawImage(rawImage,255);\n  finally\n    rawImage.FreeData;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.LoadFromDevice(DC: HDC; ARect: TRect);\nvar\n  rawImage: TRawImage;\nbegin\n  if (ARect.Right <= ARect.Left) or (ARect.Bottom <= ARect.Top) then\n  begin\n    SetSize(0,0);\n    exit;\n  end;\n  try\n    if not RawImage_FromDevice(rawImage, DC, ARect) then\n      raise Exception.Create('Cannot get raw image from device');\n    SetSize(rawImage.Description.Width, rawImage.Description.Height);\n    LoadFromRawImage(rawImage,255);\n  finally\n    rawImage.FreeData;\n  end;\nend;\n\nprocedure TBGRALCLBitmap.TakeScreenshotOfPrimaryMonitor;\nvar primaryDC: THandle;\nbegin\n  primaryDC := LCLIntf.GetDC(0);\n  try\n    LoadFromDevice(primaryDC);\n  finally\n    LCLIntf.ReleaseDC(0, primaryDC);\n  end;\nend;\n\nprocedure TBGRALCLBitmap.TakeScreenshot(ARect: TRect);\nvar primaryDC: THandle;\nbegin\n  primaryDC := LCLIntf.GetDC(0);\n  try\n    LoadFromDevice(primaryDC, ARect);\n  finally\n    LCLIntf.ReleaseDC(0, primaryDC);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgralzpcommon.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Type and structure definitions for LazPaint image format }\nunit BGRALzpCommon;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils;\n\nconst\n  LAZPAINT_COMPRESSION_MODE_ZSTREAM = 1;\n  LAZPAINT_COMPRESSION_MODE_RLE = 2;\n  LAZPAINT_COMPRESSION_MASK = 255;\n  LAZPAINT_THUMBNAIL_PNG = 256;\n  LAZPAINT_MAGIC_HEADER : array[0..7] of char = 'LazPaint';\n\n  LazpaintChannelGreenFromRed  = 1;\n  LazpaintChannelBlueFromRed   = 2;\n  LazpaintChannelBlueFromGreen = 4;\n  LazpaintChannelNoAlpha       = 8;\n  LazpaintPalettedRGB          = 16;\n\n  LazPaintThumbMaxWidth = 128;\n  LazPaintThumbMaxHeight = 128;\n\ntype\n  TLzpCompression = (lzpZStream, //slower and not necessarily better\n                     lzpRLE);    //custom RLE for lzp files\n\n  { Format of header for LazPaint files }\n  TLazPaintImageHeader = packed record\n    magic: packed array[0..7] of char;\n    zero1, headerSize: LongWord;\n    width, height, nbLayers, previewOffset: LongWord;\n    zero2, compressionMode, reserved1, layersOffset: LongWord;\n  end;\n\nprocedure LazPaintImageHeader_SwapEndianIfNeeded(AHeader: TLazPaintImageHeader);\n\n//routines to compress and uncompress byte-sized values (you need to\n//separate the channels to obtain any compression)\n\nprocedure EncodeLazRLE(var sourceBuffer; size:PtrInt; ADest: TStream);\nfunction DecodeLazRLE(ASource: TStream; var destBuffer; availableOutputSize: PtrInt; availableInputSize: int64 = -1): PtrInt;\n\n//routines to convert to/from Compression Flags\nprocedure LzpSetCompression(var CompressionMode: LongWord; AValue: TLzpCompression);\nfunction LzpGetCompression(CompressionMode: LongWord): TLzpCompression;\nfunction LzpCompressionIsValid(CompressionMode: LongWord): Boolean;\nprocedure LzpSetIncludeThumbnail(var CompressionMode: LongWord; AValue: Boolean);\nfunction LzpGetIncludeThumbnail(CompressionMode: LongWord): Boolean;\n\nimplementation\n\nconst //flag to distinguish ranges of opcodes\n      simpleRepetitionFlag = $00;    // $01..$3f: normal repetition\n      packedRepetitionFlag = $40;    // $41..$5f: packed repetition\n      repetitionOf0Flag    = $60;    // $60..$6f: repeat 1..16 zeros\n      repetitionOf255Flag  = $70;    // $70..$7f: repeat 1..16 values of 255\n      simpleDumpFlag       = $80;    // $81: dump of size as byte+64,   $82..$bf: simple dump (2..63)\n      packedDumpFlag       = $c0;    // $c3..$df: packed dump (3..31)\n      packedDumpFromLastFlag= $e0;   // $e2..$fe: packed dump from last packed dump value (2..30)\n\n      //special opcodes\n      wordRepetitionOpCode             = $00; //followed by word and then a value to repeat\n      byteRepetitionOpCode             = $40; //followed by byte (add 64 to it to get the repetition count) and then a value to repeat\n      previousWordSizeRepetitionOpCode = $80; //use the last value of opcode $00 so only followed by value to repeat\n      previousByteSizeRepetitionOpCode = $c0; //use the last value of opcode $80 so only followed by value to repeat\n      endOfStreamOpCode                = $e0; //end of RLE stream (not necessarily the end of the image)\n\n      //for future use but must not be accepted in the input stream\n      {%H-}reservedOpCode1 = $c1;\n      {%H-}reservedOpCode2 = $c2;\n      {%H-}reservedOpCode3 = $e1;\n\n      {%H-}optionalOpCode = $ff;  //for future use but should be ignored if not recognized\n\n      //numeric information\n      maxNormalRepetition = 63;\n      maxSmallRepCount    = 31 * 4;  // sets of four packed repetition\n      maxDumpCount        = 255+32;\n\n      maxRepetition = 65535;         // normal: 1..63, byte+64: 64..319, word-sized: 0..65535\n      minSmallRep = 1;\n      maxSmallRep = minSmallRep+3;\n\n\nprocedure EncodeLazRLE(var sourceBuffer; size:PtrInt; ADest: TStream);\nconst BufferSize = 4096;\nvar\n  buffer: array[0..BufferSize-1] of byte;\n  bufferPos: integer;\n  smallRepetitions: array[0..maxSmallRepCount-1] of record\n    value: Int32or64;\n    count: Int32or64; //minSmallRep..maxSmallRep\n  end;\n  smallRepetitionsCount, smallRepTotal: Int32or64;\n  previousWordSizeRepetition, previousByteSizeRepetition: Int32or64;\n  lastPackedDumpValue: Int32or64;\n\n  procedure FlushBuffer;\n  begin\n    ADest.WriteBuffer(buffer, BufferSize);\n    bufferPos := 0;\n  end;\n\n  procedure WriteByte(b: byte); inline;\n  begin\n    buffer[bufferPos] := b;\n    inc(bufferPos);\n    if bufferPos = BufferSize then FlushBuffer;\n  end;\n\n  procedure WriteBytes(p: PByte; ACount: integer);\n  var\n    writeCount: Integer;\n  begin\n    while bufferPos+ACount >= BufferSize do\n    begin\n      writeCount := BufferSize-bufferPos;\n      move(p^, buffer[bufferPos], writeCount);\n      inc(p, writeCount);\n      bufferPos := BufferSize;\n      dec(ACount, writeCount);\n      FlushBuffer;\n    end;\n    if ACount > 0 then\n    begin\n      move(p^, buffer[bufferPos], ACount);\n      inc(bufferPos, ACount);\n    end;\n  end;\n\n  procedure OutputNormalRepetition(AValue,ACount: Int32or64);\n  begin\n    If (ACount < 1) or (ACount > maxNormalRepetition) then\n      raise exception.Create('Invalid count');\n\n    if (AValue = 0) and (ACount <= 16) then\n      begin\n        WriteByte((ACount-1) or repetitionOf0Flag);\n      end else\n    if (AValue = 255) and (ACount <= 16) then\n      begin\n        WriteByte((ACount-1) or repetitionOf255Flag);\n      end else\n      begin\n        WriteByte(ACount or simpleRepetitionFlag);\n        WriteByte(AValue);\n      end;\n  end;\n\n  procedure FlushSmallRepetitions;\n  var i,j: Int32or64;\n    packedCount: Int32or64;\n    smallOutput: Int32or64;\n  begin\n    if smallRepetitionsCount = 0 then exit;\n    if smallRepetitionsCount >= 4 then\n    begin\n      smallOutput:= smallRepetitionsCount and not 3;\n      WriteByte(packedRepetitionFlag or (smallOutput shr 2));\n      packedCount := 0;\n      for i := 0 to smallOutput-1 do\n      begin\n        packedCount := packedCount + ((smallRepetitions[i].count-minSmallRep) shl ((i and 3) shl 1));\n        if (i and 3) = 3 then\n        begin\n          WriteByte(packedCount);\n          for j := i-3 to i do\n            WriteByte(smallRepetitions[j].value);\n          packedCount:= 0;\n        end;\n      end;\n      for i := smallOutput to smallRepetitionsCount-1 do\n        OutputNormalRepetition(smallRepetitions[i].value,smallRepetitions[i].count);\n    end else\n    begin\n      for i := 0 to smallRepetitionsCount-1 do\n        OutputNormalRepetition(smallRepetitions[i].value,smallRepetitions[i].count);\n    end;\n    smallRepetitionsCount := 0;\n    smallRepTotal := 0;\n  end;\n\n  procedure OutputRepetition(AValue,ACount: Int32or64; AAccumulate: boolean = true);\n  begin\n    if AAccumulate and (ACount >= minSmallRep) and (ACount <= maxSmallRep) and (maxSmallRepCount>0) then\n    begin\n      if (smallRepetitionsCount> 0) and (smallRepetitions[smallRepetitionsCount-1].value = AValue) and\n        (smallRepetitions[smallRepetitionsCount-1].count+ACount <= maxSmallRepCount) then\n      begin\n        inc(smallRepetitions[smallRepetitionsCount-1].count, ACount);\n        exit;\n      end;\n      if smallRepetitionsCount = maxSmallRepCount then\n        FlushSmallRepetitions;\n      if smallRepetitionsCount and 3 = 0 then smallRepTotal := 0;\n      smallRepetitions[smallRepetitionsCount].value := AValue;\n      smallRepetitions[smallRepetitionsCount].count := ACount;\n      inc(smallRepetitionsCount);\n      inc(smallRepTotal, ACount);\n    end else\n    begin\n      flushSmallRepetitions;\n      if ACount <= maxNormalRepetition then\n        OutputNormalRepetition(AValue,ACount) else\n      begin\n        if ACount = previousWordSizeRepetition then\n        begin\n          WriteByte(previousWordSizeRepetitionOpCode);\n          WriteByte(AValue);\n        end else\n        if ACount = previousByteSizeRepetition then\n        begin\n          WriteByte(previousByteSizeRepetitionOpCode);\n          WriteByte(AValue);\n        end else\n        if ACount <= 64+255 then\n        begin\n          WriteByte(byteRepetitionOpCode);\n          WriteByte(ACount-64);\n          WriteByte(AValue);\n          previousByteSizeRepetition := ACount;\n        end else\n        if ACount <= 65535 then\n        begin\n          WriteByte(wordRepetitionOpCode);\n          WriteByte(ACount shr 8);\n          WriteByte(ACount and 255);\n          WriteByte(AValue);\n          previousWordSizeRepetition := ACount;\n        end else\n          raise exception.Create('Invalid count');\n      end;\n    end;\n  end;\n\n  procedure DumpNoPack(P: PByte; ACount: Int32or64);\n  begin\n    if ACount = 0 then exit;\n    if ACount = 1 then\n    begin\n      OutputNormalRepetition(p^,1);\n      exit;\n    end;\n    If (ACount < 0) or (ACount > maxDumpCount) then\n      raise exception.Create('Invalid count');\n\n    if ACount > 63 then\n    begin\n      if ACount > 255+64 then\n        raise exception.Create('Invalid count');\n      WriteByte($01 or simpleDumpFlag);\n      WriteByte(ACount-64);\n    end else\n      WriteByte(ACount or simpleDumpFlag);\n\n    WriteBytes(p, ACount);\n  end;\n\n  procedure DumpPacked(p : PByte; ACount: Int32or64);\n  var diffLast: integer;\n      packedValues: array[0..31] of Int32or64;\n      nbPackedValues, idx: Int32or64;\n\n  begin\n    if ACount = 0 then exit else\n    if ACount = 1 then\n    begin\n      OutputNormalRepetition(p^,1);\n      exit;\n    end else\n    if ACount = 2 then\n    begin\n      DumpNoPack(p, ACount);\n      exit;\n    end;\n    If (ACount < 3) or (ACount > maxDumpCount) then\n      raise exception.Create('Invalid count');\n\n    diffLast := p^ - lastPackedDumpValue;\n    if (diffLast < -7) or (diffLast > 7) then\n    begin\n      if ACount > 31 then\n      begin\n        DumpPacked(p, 31);\n        DumpPacked(p+31, ACount-31);\n        exit;\n      end;\n      WriteByte(ACount or packedDumpFlag);\n      lastPackedDumpValue:= p^;\n      WriteByte(lastPackedDumpValue);\n      dec(ACount);\n      inc(p);\n    end else\n    if ACount > 30 then\n    begin\n      while ACount > 30 do\n      begin\n        DumpPacked(p, 30);\n        inc(p,30);\n        dec(ACount,30);\n      end;\n      DumpPacked(p, ACount);\n      exit;\n    end else\n      WriteByte(ACount or packedDumpFromLastFlag);\n\n    nbPackedValues := 0;\n    while ACount >0 do\n    begin\n      packedValues[nbPackedValues] := (p^ - lastPackedDumpValue + 8) and 15;\n      inc(nbPackedValues);\n      lastPackedDumpValue := p^;\n      inc(p);\n      dec(ACount);\n    end;\n\n    idx := 0;\n    while idx < nbPackedValues do\n    begin\n      if idx+1 = nbPackedValues then\n      begin\n        WriteByte(packedValues[idx] shl 4);\n        break;\n      end;\n      WriteByte((packedValues[idx] shl 4) + packedValues[idx+1]);\n      inc(idx,2);\n    end;\n  end;\n\n  procedure Dump(p: PByte; ACount: Int32or64);\n  const smallestPackedDump = 5;\n        smallestPackedDumpTail = 3;\n  var\n    diffVal,i: Int32or64;\n    fitPackStart: Int32or64;\n    p2: PByte;\n  begin\n    if ACount >= smallestPackedDump then\n    begin\n      p2 := p+1;\n      fitPackStart := -1;\n      for i := 1 to ACount-1 do\n      begin\n        diffVal := p2^ - (p2-1)^;\n        if diffVal > 128 then dec(diffVal,256)\n        else if diffVal < -128 then inc(diffVal,256);\n        if (diffVal > 7) or (diffVal < -7) then\n        begin\n          if (fitPackStart <> -1) and\n               ((i-fitPackStart+1 >= smallestPackedDump) or\n                ((i-fitPackStart+1 >= smallestPackedDumpTail) and\n                 (fitPackStart = 1) )) then\n          begin\n            DumpNoPack(p, fitPackStart-1);\n            DumpPacked(p+(fitPackStart-1), i-fitPackStart+1);\n            Dump(p+i, ACount-i);\n            exit;\n          end;\n          fitPackStart := -1;\n        end else\n        if fitPackStart = -1 then fitPackStart := i;\n        inc(p2);\n      end;\n      if (fitPackStart <> -1) and (ACount-fitPackStart+1 >= smallestPackedDumpTail) then\n      begin\n        DumpNoPack(p,fitPackStart-1);\n        DumpPacked(p+(fitPackStart-1), ACount-fitPackStart+1);\n        exit;\n      end;\n      ACount := ACount;\n    end;\n    DumpNoPack(p, ACount);\n  end;\n\nvar\n  psrc,psrcBefore: PByte;\n  curValue: Int32or64;\n  curCount: Int32or64;\nbegin\n  if size = 0 then exit;\n  psrc := @sourceBuffer;\n  if psrc = nil then\n    raise exception.Create('Source buffer not provided');\n  bufferPos := 0;\n  curValue := psrc^;\n  curCount := 1;\n  inc(psrc);\n  dec(size);\n  smallRepetitionsCount := 0;\n  smallRepTotal := 0;\n  previousWordSizeRepetition := 0;\n  previousByteSizeRepetition := 0;\n  lastPackedDumpValue:= $80;\n  while size > 0 do\n  begin\n    if (psrc^ = curValue) and (curCount < maxRepetition) then\n    begin\n      inc(curCount);\n      dec(size);\n      inc(psrc);\n    end else\n    if (curCount > 1) or (((smallRepetitionsCount and 3) <> 0) and (smallRepTotal >= 5)) then\n    begin\n      outputRepetition(curValue,curCount);\n      curCount := 1;\n      curValue := psrc^;\n      dec(size);\n      inc(psrc);\n    end else //curCount = 1\n    begin\n      psrcBefore := psrc-1;\n      inc(psrc);\n      inc(curCount);\n      dec(size);\n      while (curCount < maxDumpCount) and (size>0) and\n            ( (psrc^ <> (psrc-1)^) or ((size>1) and ((psrc+1)^ <> (psrc-1)^)) ) do //eat doubles too\n      begin\n        inc(psrc);\n        inc(curCount);\n        dec(size);\n        if (curCount > 12) and ((psrc-1)^ = (psrc-2)^) and\n          ((psrc-3)^ = (psrc-4)^) and ((psrc-5)^ = (psrc-6)^) then //three doubles\n        begin\n          dec(psrc,6);\n          dec(curCount,6);\n          inc(size,6);\n          break;\n        end;\n      end;\n      if (size > 1) and (psrc^ = (psrc-1)^) and ((psrc+1)^ = psrc^) then //repetition coming\n      begin\n        dec(psrc);\n        dec(curCount);\n        inc(size);\n      end;\n      FlushSmallRepetitions;\n      if curCount = 1 then OutputRepetition(psrcBefore^,1) else\n      if curCount > 1 then Dump(psrcBefore, curCount);\n      if size > 0 then\n      begin\n        curValue := psrc^;\n        curCount := 1;\n        inc(psrc);\n        dec(size);\n      end else\n      begin\n        curCount := 0;\n        break;\n      end;\n    end;\n  end;\n  if curCount > 0 then OutputRepetition(curValue,curCount);\n  FlushSmallRepetitions;\n  WriteByte(endOfStreamOpCode);\n  FlushBuffer;\nend;\n\nfunction DecodeLazRLE(ASource: TStream; var destBuffer; availableOutputSize: PtrInt; availableInputSize: int64 = -1): PtrInt;\nconst MaxBufferSize = 1024;\nvar\n  opCode: Int32or64;\n  pdest: PByte;\n  lastRepeatWordSize, lastRepeatByteSize: Int32or64;\n  lastPackedDumpValue: Int32or64;\n\n  Buffer: packed array of byte;\n  BufferPos, BufferSize: Int32or64;\n  BufferStartLocation: Int64;\n\n  procedure OutputOverflow(AWanted: PtrInt; AFunctionName: string);\n  var position: int64;\n  begin\n    position := ASource.Position - BufferSize + BufferPos;\n    raise exception.Create('Output buffer overflow. Current position is ' + IntToStr(result)+' out of '+ IntToStr(availableOutputSize)+\n    ' and '+IntToStr(AWanted)+' is required by '+AFunctionName+'. ' +\n    'The absolute input position is '+IntToStr(position)+' which is ' + inttostr(position-BufferStartLocation) + ' from start.');\n  end;\n\n  function ReduceAvailableInputSize(AWanted: PtrInt): PtrInt;\n  begin\n    if availableInputSize <> -1 then\n    begin\n      if AWanted>availableInputSize then\n        result := availableInputSize\n      else\n        result := AWanted;\n      dec(availableInputSize, result);\n    end else\n      result := AWanted;\n  end;\n\n  function GetByteFromNextBuffer: byte;\n  begin\n    if BufferSize = 0 then\n      result := $e0\n    else\n    begin\n      BufferSize := ASource.Read(Buffer[0],ReduceAvailableInputSize(length(Buffer)));\n      BufferPos := 0;\n      if BufferPos < BufferSize then\n      begin\n        result := Buffer[BufferPos];\n        inc(BufferPos);\n      end else\n        result := $e0;\n    end;\n  end;\n\n  function GetNextBufferByte: byte; inline;\n  begin\n    if BufferPos < BufferSize then\n    begin\n      result := Buffer[BufferPos];\n      inc(BufferPos);\n    end else\n      result := GetByteFromNextBuffer;\n  end;\n\n  procedure RepeatValue(AValue: Int32or64; ACount: Int32or64);\n  begin\n    if result+ACount > availableOutputSize then OutputOverflow(ACount,'RepeatValue');\n    fillchar(pdest^, ACount, AValue);\n    inc(pdest, ACount);\n    inc(result, ACount);\n  end;\n\n  procedure PackedRepeatValues(ACount: Int32or64);\n  var packedCount: Int32or64;\n  begin\n    while ACount > 0 do\n    begin\n      packedCount := GetNextBufferByte;\n      RepeatValue(GetNextBufferByte, (packedCount and 3) + 1);\n      packedCount:= packedCount shr 2;\n      RepeatValue(GetNextBufferByte, (packedCount and 3) + 1);\n      packedCount:= packedCount shr 2;\n      RepeatValue(GetNextBufferByte, (packedCount and 3) + 1);\n      packedCount:= packedCount shr 2;\n      RepeatValue(GetNextBufferByte, (packedCount and 3) + 1);\n      dec(ACount);\n    end;\n  end;\n\n  procedure DumpValues(ACount: Int32or64);\n  begin\n    if result+ACount > availableOutputSize then OutputOverflow(ACount, 'DumpValues');\n    inc(result, ACount);\n    while ACount > 0 do\n    begin\n      pdest^ := GetNextBufferByte;\n      inc(pdest);\n      dec(ACount);\n    end;\n  end;\n\n  procedure PackedDumpValues(ACount: Int32or64);\n  var packedData: Int32or64;\n  begin\n    if result+ACount > availableOutputSize then OutputOverflow(ACount, 'PackedDumpValues');\n    inc(result, ACount);\n    while ACount > 0 do\n    begin\n      packedData := GetNextBufferByte;\n      lastPackedDumpValue := (lastPackedDumpValue + (packedData shr 4) - 8) and 255;\n      pdest^ := lastPackedDumpValue;\n      if ACount >= 2 then\n      begin\n        lastPackedDumpValue := (lastPackedDumpValue + (packedData and 15) - 8) and 255;\n        (pdest+1)^ := lastPackedDumpValue;\n        inc(pdest,2);\n        dec(ACount,2);\n      end else\n      begin\n        inc(pdest);\n        dec(ACount);\n      end;\n      lastPackedDumpValue:= (pdest-1)^;\n    end;\n  end;\nbegin\n  BufferStartLocation:= ASource.Position;\n  setLength(Buffer,MaxBufferSize);\n  BufferSize := ASource.Read(Buffer[0],ReduceAvailableInputSize(length(Buffer)));\n  BufferPos := 0;\n\n  pdest := @destBuffer;\n  result := 0;\n  lastPackedDumpValue:= $80;\n  try\n    repeat\n      opCode := GetNextBufferByte;\n      case opCode of\n      wordRepetitionOpCode: begin\n          lastRepeatWordSize:= GetNextBufferByte shl 8;\n          inc(lastRepeatWordSize, GetNextBufferByte);\n          RepeatValue(GetNextBufferByte, lastRepeatWordSize);\n        end;\n      previousWordSizeRepetitionOpCode: RepeatValue(GetNextBufferByte, lastRepeatWordSize);\n      byteRepetitionOpCode: begin\n          lastRepeatByteSize:= GetNextBufferByte + 64;\n          RepeatValue(GetNextBufferByte, lastRepeatByteSize);\n        end;\n      previousByteSizeRepetitionOpCode: RepeatValue(GetNextBufferByte, lastRepeatByteSize);\n\n      $01..$3f: RepeatValue(GetNextBufferByte, opCode);\n      $41..$5f: PackedRepeatValues(opCode - $40);\n      $60..$6f: RepeatValue($00, opCode - $60 + 1);\n      $70..$7f: RepeatValue($FF, opCode - $70 + 1);\n      $81:      DumpValues(GetNextBufferByte+64);\n      $82..$bf: DumpValues(opCode - $80);\n      $c3..$df: begin\n          lastPackedDumpValue := GetNextBufferByte;\n          RepeatValue(lastPackedDumpValue, 1);\n          PackedDumpValues(opCode - $c0 - 1);\n        end;\n      $e2..$fe: PackedDumpValues(opCode - $e0);\n\n      reservedOpCode1, reservedOpCode2, reservedOpCode3: raise exception.Create('Unexpected opcode');\n      endOfStreamOpCode, optionalOpCode: ;\n      end;\n    until opCode = endOfStreamOpCode;\n  finally\n    ASource.Position:= ASource.Position-BufferSize+BufferPos;\n  end;\nend;\n\nprocedure LzpSetCompression(var CompressionMode: LongWord; AValue: TLzpCompression);\nbegin\n  if AValue = lzpZStream then\n    CompressionMode := (CompressionMode and not LAZPAINT_COMPRESSION_MASK) or LAZPAINT_COMPRESSION_MODE_ZSTREAM\n  else\n    CompressionMode := (CompressionMode and not LAZPAINT_COMPRESSION_MASK) or LAZPAINT_COMPRESSION_MODE_RLE;\nend;\n\nfunction LzpGetCompression(CompressionMode: LongWord): TLzpCompression;\nbegin\n  if (CompressionMode and LAZPAINT_COMPRESSION_MASK) = LAZPAINT_COMPRESSION_MODE_ZSTREAM then\n    result := lzpZStream\n  else\n    result := lzpRLE;\nend;\n\nfunction LzpCompressionIsValid(CompressionMode: LongWord): Boolean;\nbegin\n  result:= ((CompressionMode and LAZPAINT_COMPRESSION_MASK) = LAZPAINT_COMPRESSION_MODE_ZSTREAM) or\n           ((CompressionMode and LAZPAINT_COMPRESSION_MASK) = LAZPAINT_COMPRESSION_MODE_RLE);\nend;\n\nprocedure LzpSetIncludeThumbnail(var CompressionMode: LongWord; AValue: Boolean);\nbegin\n  if AValue then\n    CompressionMode := CompressionMode or LAZPAINT_THUMBNAIL_PNG else\n    CompressionMode := CompressionMode and not LAZPAINT_THUMBNAIL_PNG;\nend;\n\nfunction LzpGetIncludeThumbnail(CompressionMode: LongWord): Boolean;\nbegin\n  result := (CompressionMode and LAZPAINT_THUMBNAIL_PNG) <> 0;\nend;\n\n{ TLazPaintImageHeader }\n\nprocedure LazPaintImageHeader_SwapEndianIfNeeded(AHeader: TLazPaintImageHeader);\nbegin\n  with AHeader do\n  begin\n    headerSize := LEtoN(headerSize);\n    width := LEtoN(width);\n    height := LEtoN(height);\n    nbLayers := LEtoN(nbLayers);\n    height := LEtoN(height);\n    previewOffset := LEtoN(previewOffset);\n    compressionMode := LEtoN(compressionMode);\n    layersOffset := LEtoN(layersOffset);\n  end;\nend;\n\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgramacbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for Mac OS }\nunit BGRAMacBitmap;\n{ It should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALCLBitmap, BGRAGraphics, BGRABitmapTypes,\n  BGRADefaultBitmap;\n\ntype\n  {* Implementation of 32-bit RGBA bitmap for Mac OS }\n  TBGRAMacBitmap = class(TBGRALCLBitmap)\n    procedure DataDrawOpaque(ACanvas: TCanvas; Rect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    function MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean=False): TBitmap; override;\n    procedure TakeScreenshotOfPrimaryMonitor; override;\n    procedure TakeScreenshot(ARect: TRect); override;\n  end;\n\nimplementation\n\nuses LCLType, GraphType, LCLIntf, FPimage;\n\nprocedure DataDrawOpaqueImplementation(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\ntype\n  PARGB = ^TARGB;\n  TARGB = packed record\n    alpha,red,green,blue: byte;\n  end;\n\nvar\n  Temp:      TBitmap;\n  RawImage:  TRawImage;\n  BitmapHandle, MaskHandle: HBitmap;\n  CreateResult: boolean;\n  psrc: PBGRAPixel;\n  pdest: PARGB;\n  n: Integer;\nbegin\n  if (AHeight = 0) or (AWidth = 0) then\n    exit;\n\n  RawImage.Init;\n  RawImage.Description.Init_BPP32_A8R8G8B8_BIO_TTB(AWidth,AHeight);\n  RawImage.Description.Depth := 24;\n  RawImage.Description.AlphaPrec := 0;\n  RawImage.Description.LineOrder := ALineOrder;\n  RawImage.Description.LineEnd := rileDWordBoundary;\n  RawImage.CreateData(False);\n  psrc := PBGRAPixel(AData);\n  pdest := PARGB(RawImage.Data);\n  for n := AWidth*AHeight-1 downto 0 do\n  begin\n    pdest^.alpha := 255;\n    pdest^.red := psrc^.red;\n    pdest^.green := psrc^.green;\n    pdest^.blue := psrc^.blue;\n    inc(pdest);\n    inc(psrc);\n  end;\n  CreateResult := RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False);\n  RawImage.FreeData;\n\n  if not CreateResult then\n    raise FPImageException.Create('Failed to create bitmap handle');\n\n  Temp := TBitmap.Create;\n  Temp.Handle := BitmapHandle;\n  Temp.MaskHandle := MaskHandle;\n  ACanvas.StretchDraw(Rect, Temp);\n  Temp.Free;\nend;\n\n{ TBGRAMacBitmap }\n\nprocedure TBGRAMacBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  DataDrawOpaqueImplementation(ACanvas, Rect, AData, ALineOrder, AWidth, AHeight);\nend;\n\nfunction TBGRAMacBitmap.MakeBitmapCopy(BackgroundColor: TColor; AMasked: boolean): TBitmap;\nvar\n  temp: TBGRADefaultBitmap;\n  x, y: Integer;\n  psrc, pdest: PBGRAPixel;\nbegin\n  if not AMasked or not HasTransparentPixels then\n     Result:=inherited MakeBitmapCopy(BackgroundColor, AMasked)\n  else\n  begin\n    if not HasSemiTransparentPixels then\n    begin\n      result := TBitmap.Create;\n      result.Assign(Bitmap);\n    end else\n    begin\n      temp := NewBitmap(Width, Height, ColorToBGRA(BackgroundColor));\n      try\n        temp.PutImage(0, 0, self, dmDrawWithTransparency);\n        for y := 0 to Height-1 do\n        begin\n          psrc := ScanLine[y];\n          pdest := temp.ScanLine[y];\n          for x := 0 to Width-1 do\n          begin\n            if psrc^.alpha < 128 then\n               pdest^ := BGRAPixelTransparent;\n            inc(psrc);\n            inc(pdest);\n          end;\n        end;\n        result := TBitmap.Create;\n        result.Assign(temp.Bitmap);\n      finally\n        temp.Free;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAMacBitmap.TakeScreenshotOfPrimaryMonitor;\nvar primaryDC: THandle;\nbegin\n  primaryDC := LCLIntf.GetDC(0);\n  try\n    LoadFromDevice(primaryDC, rect(0,0,2560,1440));\n  finally\n    LCLIntf.ReleaseDC(0, primaryDC);\n  end;\nend;\n\nprocedure TBGRAMacBitmap.TakeScreenshot(ARect: TRect);\nvar all: TBGRAMacBitmap;\nbegin\n  all := TBGRAMacBitmap.Create;\n  all.TakeScreenshotOfPrimaryMonitor;\n  SetSize(ARect.Width, ARect.Height);\n  FillTransparent;\n  PutImage(-ARect.Left, -ARect.Top, all, dmSet);\n  all.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgramatrix3d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Matrix transformations in 3D }\nunit BGRAMatrix3D;\n\n{$mode objfpc}{$H+}\n\n{$i bgrasse.inc}\n\n{$ifdef CPUI386}\n  {$asmmode intel}\n{$ENDIF}\n{$ifdef cpux86_64}\n  {$asmmode intel}\n{$ENDIF}\n\ninterface\n\nuses\n  BGRABitmapTypes, BGRASSE,\n  BGRATransform;\n\ntype\n  TMatrix3D = packed array[1..3,1..4] of single;\n  TMatrix4D = packed array[1..4,1..4] of single;\n  { Parameters to adjust a projection of 3D in 2D }\n  TProjection3D = packed record\n    Zoom, Center: TPointF;\n  end;\n  TComputeProjectionFunc = function(AViewCoord: TPoint3D_128): TPointF of object;\n\noperator*(const A: TMatrix3D; const M: TPoint3D): TPoint3D;\noperator*(constref A: TMatrix3D; var M: TPoint3D_128): TPoint3D_128;\nfunction MultiplyVect3DWithoutTranslation(constref A: TMatrix3D; constref M: TPoint3D_128): TPoint3D_128;\noperator*(A,B: TMatrix3D): TMatrix3D;\n\nfunction Matrix3D(m11,m12,m13,m14, m21,m22,m23,m24, m31,m32,m33,m34: single): TMatrix3D; overload;\nfunction Matrix3D(vx,vy,vz,ofs: TPoint3D): TMatrix3D; overload;\nfunction Matrix3D(vx,vy,vz,ofs: TPoint3D_128): TMatrix3D; overload;\nfunction MatrixIdentity3D: TMatrix3D;\nfunction MatrixInverse3D(A: TMatrix3D): TMatrix3D;\nfunction MatrixTranslation3D(ofs: TPoint3D): TMatrix3D;\nfunction MatrixScale3D(size: TPoint3D): TMatrix3D;\nfunction MatrixRotateX(angle: single): TMatrix3D;\nfunction MatrixRotateY(angle: single): TMatrix3D;\nfunction MatrixRotateZ(angle: single): TMatrix3D;\n\noperator *(const A, B: TMatrix4D): TMatrix4D;\nfunction MatrixIdentity4D: TMatrix4D;\nfunction AffineMatrixToMatrix4D(AValue: TAffineMatrix): TMatrix4D;\n\n{$IFDEF BGRASSE_AVAILABLE}\nprocedure Matrix3D_SSE_Load(const A: TMatrix3D);\nprocedure MatrixMultiplyVect3D_SSE_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\nprocedure MatrixMultiplyVect3D_SSE3_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\nprocedure MatrixMultiplyVect3DWithoutTranslation_SSE_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\nprocedure MatrixMultiplyVect3DWithoutTranslation_SSE3_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\n{$ENDIF}\n\nimplementation\n\nprocedure multiplyVect3(const A : TMatrix3D; const vx,vy,vz,vt: single; out outx,outy,outz: single);\nbegin\n  outx := vx * A[1,1] + vy * A[1,2] + vz * A[1,3] + vt * A[1,4];\n  outy := vx * A[2,1] + vy * A[2,2] + vz * A[2,3] + vt * A[2,4];\n  outz := vx * A[3,1] + vy * A[3,2] + vz * A[3,3] + vt * A[3,4];\nend;\n\nprocedure multiplyVect4(const A : TMatrix4D; const vx,vy,vz,vt: single; out outx,outy,outz,outt: single);\nbegin\n  outx := vx * A[1,1] + vy * A[1,2] + vz * A[1,3] + vt * A[1,4];\n  outy := vx * A[2,1] + vy * A[2,2] + vz * A[2,3] + vt * A[2,4];\n  outz := vx * A[3,1] + vy * A[3,2] + vz * A[3,3] + vt * A[3,4];\n  outt := vx * A[4,1] + vy * A[4,2] + vz * A[4,3] + vt * A[4,4];\nend;\n\noperator*(const A: TMatrix3D; const M: TPoint3D): TPoint3D;\nbegin\n  result.x := M.x * A[1,1] + M.y * A[1,2] + M.z * A[1,3] + A[1,4];\n  result.y := M.x * A[2,1] + M.y * A[2,2] + M.z * A[2,3] + A[2,4];\n  result.z := M.x * A[3,1] + M.y * A[3,2] + M.z * A[3,3] + A[3,4];\nend;\n\noperator*(const A, B: TMatrix4D): TMatrix4D;\nbegin\n  multiplyVect4(A, B[1,1],B[2,1],B[3,1],B[4,1], result[1,1],result[2,1],result[3,1],result[4,1]);\n  multiplyVect4(A, B[1,2],B[2,2],B[3,2],B[4,2], result[1,2],result[2,2],result[3,2],result[4,2]);\n  multiplyVect4(A, B[1,3],B[2,3],B[3,3],B[4,3], result[1,3],result[2,3],result[3,3],result[4,3]);\n  multiplyVect4(A, B[1,4],B[2,4],B[3,4],B[4,4], result[1,4],result[2,4],result[3,4],result[4,4]);\nend;\n\nfunction MatrixIdentity4D: TMatrix4D;\nbegin\n  result[1,1] := 1;  result[2,1] := 0;  result[3,1] := 0; result[4,1] := 0;\n  result[1,2] := 0;  result[2,2] := 1;  result[3,2] := 0; result[4,2] := 0;\n  result[1,3] := 0;  result[2,3] := 0;  result[3,3] := 1; result[4,3] := 0;\n  result[1,4] := 0;  result[2,4] := 0;  result[3,4] := 0; result[4,4] := 1;\nend;\n\nfunction AffineMatrixToMatrix4D(AValue: TAffineMatrix): TMatrix4D;\nbegin\n  result[1,1] := AValue[1,1];  result[2,1] := AValue[1,2];  result[3,1] := 0; result[4,1] := AValue[1,3];\n  result[1,2] := AValue[2,1];  result[2,2] := AValue[2,2];  result[3,2] := 0; result[4,2] := AValue[2,3];\n  result[1,3] := 0;            result[2,3] := 0;            result[3,3] := 1; result[4,3] := 0;\n  result[1,4] := 0;            result[2,4] := 0;            result[3,4] := 0; result[4,4] := 1;\nend;\n\n{$IFDEF BGRASSE_AVAILABLE}\nvar SingleConst1 : single = 1;\n\n  procedure Matrix3D_SSE_Load(const A: TMatrix3D);\n  begin\n    {$IFDEF cpux86_64}\n    asm\n      mov rax, A\n      movups xmm5, [rax]\n      movups xmm6, [rax+16]\n      movups xmm7, [rax+32]\n    end;\n    {$ELSE}\n    asm\n      mov eax, A\n      movups xmm5, [eax]\n      movups xmm6, [eax+16]\n      movups xmm7, [eax+32]\n    end;\n   {$ENDIF}\n  end;\n\nprocedure MatrixMultiplyVect3D_SSE_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\nvar oldMt: single;\nbegin\n  oldMt := M.t;\n  M.t := SingleConst1;\n  {$IFDEF cpux86_64}\n  asm\n    mov rax, M\n    movaps xmm0, [rax]\n\n    mov rax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [rax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [rax+4], xmm2\n\n    mulps xmm0,xmm7\n    //mix1\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $4e\n    addps xmm0, xmm3\n    //mix2\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $11\n    addps xmm0, xmm3\n\n    movss [rax+8], xmm0\n  end;\n  {$ELSE}\n    asm\n    mov eax, M\n    movaps xmm0, [eax]\n\n    mov eax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [eax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [eax+4], xmm2\n\n    mulps xmm0,xmm7\n    //mix1\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $4e\n    addps xmm0, xmm3\n    //mix2\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $11\n    addps xmm0, xmm3\n\n    movss [eax+8], xmm0\n  end;\n  {$ENDIF}\n  M.t := oldMt;\n  N.t := 0;\nend;\n\nprocedure MatrixMultiplyVect3D_SSE3_Aligned(var M: TPoint3D_128; out N: TPoint3D_128);\nvar oldMt: single;\nbegin\n  oldMt := M.t;\n  M.t := SingleConst1;\n  {$IFDEF cpux86_64}\n  asm\n    mov rax, M\n    movaps xmm0, [rax]\n\n    mov rax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [rax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [rax+4], xmm2\n\n    mulps xmm0,xmm7\n    haddps xmm0,xmm0\n    haddps xmm0,xmm0\n    movss [rax+8], xmm0\n  end;\n  {$ELSE}\n  asm\n    mov eax, M\n    movaps xmm0, [eax]\n\n    mov eax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [eax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [eax+4], xmm2\n\n    mulps xmm0,xmm7\n    haddps xmm0,xmm0\n    haddps xmm0,xmm0\n    movss [eax+8], xmm0\n  end;\n  {$ENDIF}\n  M.t := oldMt;\nend;\n\nprocedure MatrixMultiplyVect3DWithoutTranslation_SSE_Aligned(\n  var M: TPoint3D_128; out N: TPoint3D_128);\nbegin\n  {$IFDEF cpux86_64}\n  asm\n    mov rax, M\n    movaps xmm0, [rax]\n\n    mov rax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [rax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [rax+4], xmm2\n\n    mulps xmm0,xmm7\n    //mix1\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $4e\n    addps xmm0, xmm3\n    //mix2\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $11\n    addps xmm0, xmm3\n\n    movss [rax+8], xmm0\n  end;\n  {$ELSE}\n    asm\n    mov eax, M\n    movaps xmm0, [eax]\n\n    mov eax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [eax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    //mix1\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $4e\n    addps xmm2, xmm3\n    //mix2\n    movaps xmm3, xmm2\n    shufps xmm3, xmm3, $11\n    addps xmm2, xmm3\n\n    movss [eax+4], xmm2\n\n    mulps xmm0,xmm7\n    //mix1\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $4e\n    addps xmm0, xmm3\n    //mix2\n    movaps xmm3, xmm0\n    shufps xmm3, xmm3, $11\n    addps xmm0, xmm3\n\n    movss [eax+8], xmm0\n  end;\n  {$ENDIF}\nend;\n\nprocedure MatrixMultiplyVect3DWithoutTranslation_SSE3_Aligned(\n  var M: TPoint3D_128; out N: TPoint3D_128);\nbegin\n  {$IFDEF cpux86_64}\n  asm\n    mov rax, M\n    movaps xmm0, [rax]\n\n    mov rax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [rax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [rax+4], xmm2\n\n    mulps xmm0,xmm7\n    haddps xmm0,xmm0\n    haddps xmm0,xmm0\n    movss [rax+8], xmm0\n  end;\n  {$ELSE}\n  asm\n    mov eax, M\n    movaps xmm0, [eax]\n\n    mov eax, N\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm5\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [eax], xmm2\n\n    movaps xmm2,xmm0\n    mulps xmm2,xmm6\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n    movss [eax+4], xmm2\n\n    mulps xmm0,xmm7\n    haddps xmm0,xmm0\n    haddps xmm0,xmm0\n    movss [eax+8], xmm0\n  end;\n  {$ENDIF}\nend;\n\n{$ENDIF}\n\noperator*(constref A: TMatrix3D; var M: TPoint3D_128): TPoint3D_128;\n{$IFDEF BGRASSE_AVAILABLE}var oldMt: single;\n  resultAddr: pointer;{$ENDIF}\nbegin\n  {$IFDEF BGRASSE_AVAILABLE}\n  if UseSSE then\n  begin\n    oldMt := M.t;\n    M.t := SingleConst1;\n    resultAddr := @result;\n    {$IFDEF cpux86_64}\n    if UseSSE3 then\n    asm\n      mov rax, A\n      movups xmm5, [rax]\n      movups xmm6, [rax+16]\n      movups xmm7, [rax+32]\n\n      mov rax, M\n      movups xmm0, [rax]\n\n      mov rax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [rax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [rax+4], xmm4\n\n      mulps xmm0,xmm7\n      haddps xmm0,xmm0\n      haddps xmm0,xmm0\n      movss [rax+8], xmm0\n    end else\n    asm\n      mov rax, A\n      movups xmm5, [rax]\n      movups xmm6, [rax+16]\n      movups xmm7, [rax+32]\n\n      mov rax, M\n      movups xmm0, [rax]\n\n      mov rax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [rax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [rax+4], xmm4\n\n      mulps xmm0,xmm7\n      //mix1\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $4e\n      addps xmm0, xmm3\n      //mix2\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $11\n      addps xmm0, xmm3\n\n      movss [rax+8], xmm0\n    end;\n    {$ELSE}\n    if UseSSE3 then\n    asm\n      mov eax, A\n      movups xmm5, [eax]\n      movups xmm6, [eax+16]\n      movups xmm7, [eax+32]\n\n      mov eax, M\n      movups xmm0, [eax]\n\n      mov eax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [eax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [eax+4], xmm4\n\n      mulps xmm0,xmm7\n      haddps xmm0,xmm0\n      haddps xmm0,xmm0\n      movss [eax+8], xmm0\n    end else\n    asm\n      mov eax, A\n      movups xmm5, [eax]\n      movups xmm6, [eax+16]\n      movups xmm7, [eax+32]\n\n      mov eax, M\n      movups xmm0, [eax]\n\n      mov eax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [eax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [eax+4], xmm4\n\n      mulps xmm0,xmm7\n      //mix1\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $4e\n      addps xmm0, xmm3\n      //mix2\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $11\n      addps xmm0, xmm3\n\n      movss [eax+8], xmm0\n    end;\n    {$ENDIF}\n    M.t := oldMt;\n    result.t := 0;\n  end else\n  {$ENDIF}\n  begin\n    result.x := M.x * A[1,1] + M.y * A[1,2] + M.z * A[1,3] + A[1,4];\n    result.y := M.x * A[2,1] + M.y * A[2,2] + M.z * A[2,3] + A[2,4];\n    result.z := M.x * A[3,1] + M.y * A[3,2] + M.z * A[3,3] + A[3,4];\n    result.t := 0;\n  end;\nend;\n\nfunction MultiplyVect3DWithoutTranslation(constref A: TMatrix3D; constref M: TPoint3D_128): TPoint3D_128;\n{$IFDEF BGRASSE_AVAILABLE}var resultAddr: pointer;{$ENDIF}\nbegin\n  {$IFDEF BGRASSE_AVAILABLE}\n  if UseSSE then\n  begin\n    resultAddr := @result;\n    {$IFDEF cpux86_64}\n    if UseSSE3 then\n    asm\n      mov rax, A\n      movups xmm5, [rax]\n      movups xmm6, [rax+16]\n      movups xmm7, [rax+32]\n\n      mov rax, M\n      movups xmm0, [rax]\n\n      mov rax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [rax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [rax+4], xmm4\n\n      mulps xmm0,xmm7\n      haddps xmm0,xmm0\n      haddps xmm0,xmm0\n      movss [rax+8], xmm0\n    end else\n    asm\n      mov rax, A\n      movups xmm5, [rax]\n      movups xmm6, [rax+16]\n      movups xmm7, [rax+32]\n\n      mov rax, M\n      movups xmm0, [rax]\n\n      mov rax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [rax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [rax+4], xmm4\n\n      mulps xmm0,xmm7\n      //mix1\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $4e\n      addps xmm0, xmm3\n      //mix2\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $11\n      addps xmm0, xmm3\n\n      movss [rax+8], xmm0\n    end;\n    {$ELSE}\n    if UseSSE3 then\n    asm\n      mov eax, A\n      movups xmm5, [eax]\n      movups xmm6, [eax+16]\n      movups xmm7, [eax+32]\n\n      mov eax, M\n      movups xmm0, [eax]\n\n      mov eax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [eax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      haddps xmm4,xmm4\n      haddps xmm4,xmm4\n      movss [eax+4], xmm4\n\n      mulps xmm0,xmm7\n      haddps xmm0,xmm0\n      haddps xmm0,xmm0\n      movss [eax+8], xmm0\n    end else\n    asm\n      mov eax, A\n      movups xmm5, [eax]\n      movups xmm6, [eax+16]\n      movups xmm7, [eax+32]\n\n      mov eax, M\n      movups xmm0, [eax]\n\n      mov eax, resultAddr\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm5\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [eax], xmm4\n\n      movaps xmm4,xmm0\n      mulps xmm4,xmm6\n      //mix1\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $4e\n      addps xmm4, xmm3\n      //mix2\n      movaps xmm3, xmm4\n      shufps xmm3, xmm3, $11\n      addps xmm4, xmm3\n\n      movss [eax+4], xmm4\n\n      mulps xmm0,xmm7\n      //mix1\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $4e\n      addps xmm0, xmm3\n      //mix2\n      movaps xmm3, xmm0\n      shufps xmm3, xmm3, $11\n      addps xmm0, xmm3\n\n      movss [eax+8], xmm0\n    end;\n    {$ENDIF}\n  end else\n  {$ENDIF}\n  begin\n    result.x := M.x * A[1,1] + M.y * A[1,2] + M.z * A[1,3];\n    result.y := M.x * A[2,1] + M.y * A[2,2] + M.z * A[2,3];\n    result.z := M.x * A[3,1] + M.y * A[3,2] + M.z * A[3,3];\n    result.t := 0;\n  end;\nend;\n\noperator*(A,B: TMatrix3D): TMatrix3D;\nbegin\n  multiplyVect3(A, B[1,1],B[2,1],B[3,1],0, result[1,1],result[2,1],result[3,1]);\n  multiplyVect3(A, B[1,2],B[2,2],B[3,2],0, result[1,2],result[2,2],result[3,2]);\n  multiplyVect3(A, B[1,3],B[2,3],B[3,3],0, result[1,3],result[2,3],result[3,3]);\n  multiplyVect3(A, B[1,4],B[2,4],B[3,4],1, result[1,4],result[2,4],result[3,4]);\nend;\n\nfunction MatrixIdentity3D: TMatrix3D;\nbegin\n  result := Matrix3D( 1,0,0,0,\n                      0,1,0,0,\n                      0,0,1,0);\nend;\n\nfunction Matrix3D(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33,\n  m34: single): TMatrix3D;\nbegin\n  result[1,1] := m11;\n  result[1,2] := m12;\n  result[1,3] := m13;\n  result[1,4] := m14;\n\n  result[2,1] := m21;\n  result[2,2] := m22;\n  result[2,3] := m23;\n  result[2,4] := m24;\n\n  result[3,1] := m31;\n  result[3,2] := m32;\n  result[3,3] := m33;\n  result[3,4] := m34;\nend;\n\nfunction MatrixInverse3D(A: TMatrix3D): TMatrix3D;\nvar ofs: TPoint3D;\nbegin\n  ofs := Point3D(A[1,4],A[2,4],A[3,4]);\n\n  result[1,1] := A[1,1];\n  result[1,2] := A[2,1];\n  result[1,3] := A[3,1];\n  result[1,4] := 0;\n\n  result[2,1] := A[1,2];\n  result[2,2] := A[2,2];\n  result[2,3] := A[3,2];\n  result[2,4] := 0;\n\n  result[3,1] := A[1,3];\n  result[3,2] := A[2,3];\n  result[3,3] := A[3,3];\n  result[3,4] := 0;\n\n  result := result*MatrixTranslation3D(-ofs);\nend;\n\nfunction Matrix3D(vx, vy, vz, ofs: TPoint3D): TMatrix3D;\nbegin\n  result := Matrix3D(vx.x, vy.x, vz.x, ofs.x,\n                     vx.y, vy.y, vz.y, ofs.y,\n                     vx.z, vy.z, vz.z, ofs.z);\nend;\n\nfunction Matrix3D(vx, vy, vz, ofs: TPoint3D_128): TMatrix3D;\nbegin\n  result := Matrix3D(vx.x, vy.x, vz.x, ofs.x,\n                     vx.y, vy.y, vz.y, ofs.y,\n                     vx.z, vy.z, vz.z, ofs.z);\nend;\n\nfunction MatrixTranslation3D(ofs: TPoint3D): TMatrix3D;\nbegin\n  result := Matrix3D(1,0,0,ofs.x,\n                     0,1,0,ofs.Y,\n                     0,0,1,ofs.z);\nend;\n\nfunction MatrixScale3D(size: TPoint3D): TMatrix3D;\nbegin\n  result := Matrix3D(size.x,0,0,0,\n                     0,size.y,0,0,\n                     0,0,size.z,0);\nend;\n\nfunction MatrixRotateX(angle: single): TMatrix3D;\nbegin\n  result := Matrix3D( 1,       0,           0,       0,\n                      0,   cos(angle), sin(angle),   0,\n                      0,  -sin(angle), cos(angle),   0);\nend;\n\nfunction MatrixRotateY(angle: single): TMatrix3D;\nbegin\n  result := Matrix3D(  cos(angle), 0, -sin(angle),  0,\n                           0,      1,      0,       0,\n                       sin(angle), 0,  cos(angle),  0);\nend;\n\nfunction MatrixRotateZ(angle: single): TMatrix3D;\nbegin\n  result := Matrix3D(  cos(angle), sin(angle),   0,    0,\n                      -sin(angle), cos(angle),   0,    0,\n                          0,            0,       1,    0);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgramemdirectory.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Directory structure stored in memory (can be serialized) }\nunit BGRAMemDirectory;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAMultiFileType, fgl;\n\nconst\n  MemDirectoryFileHeader = 'TMemDirectory'#26#0#0;\n  MemDirectoryEntry_FlagDirectory = 1;   //entry is a directory\n  MemDirectoryEntry_FlagCompressed = 2;  //the stream is compressed\n  MemDirectoryEntry_FlagSmallEntryPacked = $8000; //name and size <= 255\n\ntype\n  TMemDirectory = class;\n  TEntryFilename = BGRAMultiFileType.TEntryFilename;\n\ntype\n  TMemDirectoryPath = specialize TFPGList<TEntryFilename>;\n\n  { Entry in a directory structure in memory }\n  TMemDirectoryEntry = class(TMultiFileEntry)\n  private\n    FStream: TStream;\n    function GetIsCompressed: boolean;\n    function GetCompressedSize: int64;\n    function GetIsDirectory: boolean;\n    procedure SetIsCompressed(AValue: boolean);\n    procedure LoadExtraFromEmbeddedStream(ADataStream: TStream; AStartPos: int64);\n    procedure SaveToEmbeddedStream(AEntryStream, ADataStream: TStream; AStartPos: int64; out uncompressedSize: int64);\n  protected\n    FFlags: Word;\n    FName,FExtension: utf8String;\n    FUncompressedSize: int64;\n    FEmbeddedStreamPos: int64;\n    FMemDirectory: TMemDirectory;\n    function GetName: utf8string; override;\n    procedure SetName(AValue: utf8string); override;\n    function GetFileSize: int64; override;\n    function GetExtension: utf8string; override;\n    function InternalCopyTo({%H-}ADestination: TStream): int64;\n  public\n    function CopyTo({%H-}ADestination: TStream): int64; override;\n    function GetStream: TStream; override;\n    constructor Create(AContainer: TMultiFileContainer; AFilename: TEntryFilename; AUncompressedStream: TStream; AOwnStream: boolean); overload;\n    constructor CreateDirectory(AContainer: TMultiFileContainer; AFilename: TEntryFilename);\n    constructor CreateFromData(AContainer: TMultiFileContainer; AFilename: TEntryFilename; AStream: TStream; AOwnStream: boolean; AUncompressedSize: int64; AFlags: Word);\n    destructor Destroy; override;\n    property EmbeddedStreamPos: int64 read FEmbeddedStreamPos write FEmbeddedStreamPos;\n    property IsCompressed: boolean read GetIsCompressed write SetIsCompressed;\n    property IsDirectory: boolean read GetIsDirectory;\n    property CompressedSize: int64 read GetCompressedSize;\n    property Flags: Word read FFlags;\n    property MemDirectory: TMemDirectory read FMemDirectory;\n  end;\n\n  { Directory structure in memory }\n  TMemDirectory = class(TMultiFileContainer)\n  private\n    FParentDirectory: TMemDirectory;\n    function GetEntryCompressed(AIndex: integer): boolean;\n    function GetIsDirectory(AIndex: integer): boolean;\n    function GetDirectory(AIndex: integer): TMemDirectory;\n    procedure SetEntryCompressed(AIndex: integer; AValue: boolean);\n  protected\n    function CreateEntry(AName: utf8string; AExtension: utf8string; AContent: TStream): TMultiFileEntry; override;\n    function SplitPath(APath: utf8string): TMemDirectoryPath;\n  public\n    constructor Create(AParentDirectory: TMemDirectory = nil);\n    function Equals(Obj: TObject): boolean; override;\n    procedure LoadFromStream(AStream: TStream); override;\n    class function CheckHeader(AStream: TStream): boolean; static;\n    procedure LoadFromEmbeddedStream(ARootStream, ADataStream: TStream; AStartPos: int64);\n    procedure SaveToStream(ADestination: TStream); override;\n    procedure SaveToEmbeddedStream(ARootDest, ADataDest: TStream; AStartPos: int64);\n    function AddDirectory(AName: utf8string; AExtension: utf8string= ''; ACaseSensitive: boolean= true): integer;\n    function Rename(AName: utf8string; AExtension: utf8string; ANewName: utf8string; ACaseSensitive: boolean= true): boolean;\n    function FindPath(APath: utf8String; ACaseSensitive: boolean = true): TMemDirectory;\n    function FindEntry(APath: utf8String; ACaseSensitive: boolean = true): TMemDirectoryEntry;\n    procedure CopyTo(ADest: TMemDirectory; ARecursive: boolean);\n    property IsEntryCompressed[AIndex: integer]: boolean read GetEntryCompressed write SetEntryCompressed;\n    property Directory[AIndex: integer]: TMemDirectory read GetDirectory;\n    property IsDirectory[AIndex: integer]: boolean read GetIsDirectory;\n    property ParentDirectory: TMemDirectory read FParentDirectory;\n  end;\n\nimplementation\n\nuses zstream, BGRAUTF8, strutils;\n\ntype\n  TDirEntryRecord = packed record\n    Flags: Word;\n    FilenameSize: Word;\n    Offset: int64;\n  end;\n\n{ TMemDirectory }\n\nfunction TMemDirectory.GetEntryCompressed(AIndex: integer): boolean;\nbegin\n  result := (Entry[AIndex] as TMemDirectoryEntry).IsCompressed;\nend;\n\nfunction TMemDirectory.GetIsDirectory(AIndex: integer): boolean;\nbegin\n  result := (Entry[AIndex] as TMemDirectoryEntry).IsDirectory;\nend;\n\nfunction TMemDirectory.GetDirectory(AIndex: integer): TMemDirectory;\nbegin\n  result := (Entry[AIndex] as TMemDirectoryEntry).MemDirectory;\nend;\n\nprocedure TMemDirectory.SetEntryCompressed(AIndex: integer; AValue: boolean);\nbegin\n  (Entry[AIndex] as TMemDirectoryEntry).IsCompressed := AValue;\nend;\n\nfunction TMemDirectory.CreateEntry(AName: utf8string; AExtension: utf8string;\n  AContent: TStream): TMultiFileEntry;\nbegin\n  result := TMemDirectoryEntry.Create(self, EntryFilename(AName, AExtension), AContent, true);\nend;\n\nprocedure TMemDirectory.LoadFromStream(AStream: TStream);\nvar rootPos, rootSize: integer;\n  header: string;\n  rootStream: TStream;\n  startPos: Int64;\nbegin\n  startPos := AStream.Position;\n  setlength(header, length(MemDirectoryFileHeader));\n  AStream.ReadBuffer(header[1], length(header));\n  if header<>MemDirectoryFileHeader then\n    raise exception.Create('Invalid header');\n  rootPos := LEReadInt64(AStream);\n  if rootPos = 0 then\n    raise exception.Create('Invalid root offset');\n  rootSize := LEReadInt64(AStream);\n  if rootSize < 4 then\n    raise exception.Create('Invalid root size');\n  AStream.Position:= rootPos + startPos;\n  rootStream:= TMemoryStream.Create;\n  try\n    rootStream.CopyFrom(AStream, rootSize);\n    LoadFromEmbeddedStream(rootStream, AStream, startPos);\n  finally\n    rootStream.Free;\n  end;\nend;\n\nclass function TMemDirectory.CheckHeader(AStream: TStream): boolean;\nvar\n  startPos: Int64;\n  header: string;\nbegin\n  startPos := AStream.Position;\n  setlength(header, length(MemDirectoryFileHeader));\n  AStream.Read(header[1], length(header));\n  result := (header=MemDirectoryFileHeader);\n  AStream.Position:= startPos;\nend;\n\nprocedure TMemDirectory.LoadFromEmbeddedStream(ARootStream, ADataStream: TStream;\n  AStartPos: int64);\nvar\n  nbEntries,i: LongInt;\n  entryRec: TDirEntryRecord;\n  filename: string;\n  entryData: TStream;\n  newEntry: TMemDirectoryEntry;\n  compressedSize, uncompressedSize: Int64;\n\nbegin\n  Clear;\n  ARootStream.Position := 0;\n  nbEntries := LEReadLongint(ARootStream);\n  for i := 1 to nbEntries do\n  begin\n    ARootStream.ReadBuffer({%H-}entryRec, sizeof(entryRec));\n    entryRec.Offset:= LEtoN(entryRec.Offset);\n    entryRec.Flags:= LEtoN(entryRec.Flags);\n    entryRec.FilenameSize:= LEtoN(entryRec.FilenameSize);\n\n    if (entryRec.Flags and MemDirectoryEntry_FlagSmallEntryPacked) <> 0 then\n    begin\n      entryRec.Flags := entryRec.Flags xor MemDirectoryEntry_FlagSmallEntryPacked;\n      compressedSize := entryRec.FilenameSize shr 8;\n      uncompressedSize := compressedSize;\n      entryRec.FilenameSize := entryRec.FilenameSize and 255;\n    end else\n    begin\n      compressedSize := LEReadInt64(ARootStream);\n      uncompressedSize := LEReadInt64(ARootStream);\n    end;\n\n    setlength(filename, entryRec.FilenameSize);\n    if length(filename)> 0 then\n      ARootStream.ReadBuffer(filename[1], entryRec.FilenameSize);\n\n    ADataStream.Position:= entryRec.Offset + AStartPos;\n    entryData := TMemoryStream.Create;\n    try\n      if compressedSize <> 0 then\n        entryData.CopyFrom(ADataStream, compressedSize);\n      newEntry := TMemDirectoryEntry.CreateFromData(self, EntryFilename(filename), entryData, true,\n                  uncompressedSize, entryRec.Flags);\n      newEntry.LoadExtraFromEmbeddedStream(ADataStream, AStartPos);\n      AddEntry(newEntry);\n      entryData := nil;\n    finally\n      entryData.Free;\n    end;\n  end;\nend;\n\nprocedure TMemDirectory.SaveToStream(ADestination: TStream);\nvar rootPos,rootSize: integer;\n  header: string;\n  rootRecPos, startPos, endPos: int64;\n  rootStream: TStream;\nbegin\n  startPos := ADestination.Position;\n  header := MemDirectoryFileHeader;\n  ADestination.WriteBuffer(header[1], length(header));\n\n  rootRecPos := ADestination.Position;\n  LEWriteInt64(ADestination,0); //root pos\n  LEWriteInt64(ADestination,0); //root size\n\n  rootStream := TMemoryStream.Create;\n  try\n    SaveToEmbeddedStream(rootStream, ADestination, startPos);\n    rootStream.Position := 0;\n    rootPos := ADestination.Position - startPos;\n    rootSize := rootStream.Size;\n    ADestination.CopyFrom(rootStream, rootStream.Size);\n    FreeAndNil(rootStream);\n    endPos := ADestination.Position;\n    ADestination.Position := rootRecPos;\n    LEWriteInt64(ADestination, rootPos);\n    LEWriteInt64(ADestination, rootSize);\n    ADestination.Position := endPos;\n  finally\n    rootStream.Free;\n  end;\nend;\n\nprocedure TMemDirectory.SaveToEmbeddedStream(ARootDest, ADataDest: TStream;\n  AStartPos: int64);\nvar\n  entryRec: TDirEntryRecord;\n  entryStream: TMemoryStream;\n  curEntry: TMemDirectoryEntry;\n  filename: string;\n  i: Integer;\n  uncompressedSize: int64;\nbegin\n  LEWriteLongint(ARootDest, Count);\n  entryStream := TMemoryStream.Create;\n  try\n    for i := 0 to Count-1 do\n    begin\n      curEntry := Entry[i] as TMemDirectoryEntry;\n      entryStream.Clear;\n      curEntry.SaveToEmbeddedStream(entryStream, ADataDest, AStartPos, uncompressedSize);\n\n      entryRec.Offset:= ADataDest.Position - AStartPos;\n      entryRec.Offset:= NtoLE(entryRec.Offset);\n      if curEntry.Extension <> '' then\n        filename := curEntry.Name+'.'+curEntry.Extension\n      else\n        filename := curEntry.Name;\n\n      if ((curEntry.Flags and MemDirectoryEntry_FlagCompressed)=0) and\n         (Length(filename)<=255) and (entryStream.Size<=255) then\n      begin\n        entryRec.Flags:= curEntry.Flags or MemDirectoryEntry_FlagSmallEntryPacked;\n        entryRec.Flags:= NtoLE(entryRec.Flags);\n        entryRec.FilenameSize:= length(filename) + (entryStream.Size shl 8);\n        entryRec.FilenameSize := NtoLE(entryRec.FilenameSize);\n        ARootDest.WriteBuffer(entryRec, sizeof(entryRec));\n      end else\n      begin\n        entryRec.Flags:= curEntry.Flags;\n        entryRec.Flags:= NtoLE(entryRec.Flags);\n        entryRec.FilenameSize:= length(filename);\n        entryRec.FilenameSize := NtoLE(entryRec.FilenameSize);\n        ARootDest.WriteBuffer(entryRec, sizeof(entryRec));\n        LEWriteInt64(ARootDest, entryStream.Size);\n        LEWriteInt64(ARootDest, uncompressedSize);\n      end;\n\n      if filename <> '' then\n        ARootDest.WriteBuffer(filename[1], length(filename));\n\n      entryStream.Position:= 0;\n      ADataDest.CopyFrom(entryStream, entryStream.Size);\n    end;\n  finally\n    entryStream.Free;\n  end;\nend;\n\nfunction TMemDirectory.AddDirectory(AName: utf8string; AExtension: utf8string;\n  ACaseSensitive: boolean): integer;\nvar\n  newEntry: TMemDirectoryEntry;\nbegin\n  result := IndexOf(AName,AExtension,ACaseSensitive);\n  if result <> -1 then\n  begin\n    if not IsDirectory[result] then\n      raise exception.Create('There is already a file with this name and extension');\n    exit;\n  end;\n  newEntry := TMemDirectoryEntry.CreateDirectory(self, EntryFilename(AName, AExtension));\n  result := AddEntry(newEntry);\nend;\n\nfunction TMemDirectory.Rename(AName: utf8string; AExtension: utf8string;\n  ANewName: utf8string; ACaseSensitive: boolean): boolean;\nvar\n  idx, i: Integer;\nbegin\n  idx := IndexOf(AName, AExtension, ACaseSensitive);\n  if idx = -1 then exit(false);\n  for i := 0 to Count-1 do\n  if i <> idx then\n  begin\n    if Entry[i].CompareNameAndExtension(ANewName,AExtension,ACaseSensitive) = 0 then\n      raise exception.Create('Name with extension already in use');\n  end;\n  Entry[idx].Name := ANewName;\n  exit(true);\nend;\n\nfunction TMemDirectory.FindPath(APath: utf8String; ACaseSensitive: boolean): TMemDirectory;\nvar\n  path: TMemDirectoryPath;\n  idxPath: integer;\n  idxSub: LongInt;\nbegin\n  path := SplitPath(APath);\n  result := self;\n  if path.Items[0].IsEmpty then\n  begin\n    idxPath := 1;\n    while Assigned(result.ParentDirectory) do result := result.ParentDirectory;\n  end\n  else\n    idxPath := 0;\n\n  while idxPath < path.Count do\n  begin\n    idxSub := result.IndexOf(path[idxPath], ACaseSensitive);\n    if idxSub= -1 then\n    begin\n      result := nil;\n      break;\n    end;\n    result := result.Directory[idxSub];\n    inc(idxPath);\n  end;\n\n  path.Free;\nend;\n\nfunction TMemDirectory.FindEntry(APath: utf8String; ACaseSensitive: boolean): TMemDirectoryEntry;\nvar\n  path: TMemDirectoryPath;\n  idxPath: integer;\n  idxSub, idxEntry: LongInt;\n  curDir: TMemDirectory;\nbegin\n  path := SplitPath(APath);\n  curDir := self;\n  if path.Items[0].IsEmpty then\n  begin\n    idxPath := 1;\n    while Assigned(curDir.ParentDirectory) do curDir := curDir.ParentDirectory;\n  end\n  else\n    idxPath := 0;\n\n  while idxPath < path.Count-1 do\n  begin\n    idxSub := curDir.IndexOf(path[idxPath], ACaseSensitive);\n    if idxSub= -1 then\n    begin\n      curDir := nil;\n      break;\n    end;\n    curDir := curDir.Directory[idxSub];\n    inc(idxPath);\n  end;\n\n  if Assigned(curDir) and (idxPath < path.Count) then\n  begin\n    idxEntry := curDir.IndexOf(path[idxPath], ACaseSensitive);\n    if idxEntry = -1 then\n      result := nil\n    else\n      result := curDir.Entry[idxEntry] as TMemDirectoryEntry;\n  end\n  else\n    result := nil;\n\n  path.Free;\nend;\n\nprocedure TMemDirectory.CopyTo(ADest: TMemDirectory; ARecursive: boolean);\nvar\n  i, idxDir: Integer;\n  entryContent: TMemoryStream;\nbegin\n  for i := 0 to Count-1 do\n    if IsDirectory[i] and ARecursive then\n    begin\n      idxDir := ADest.AddDirectory(Entry[i].Name,Entry[i].Extension);\n      Directory[i].CopyTo(ADest.Directory[idxDir], true);\n    end else\n    begin\n      entryContent := TMemoryStream.Create;\n      Entry[i].CopyTo(entryContent);\n      ADest.Add(Entry[i].Name,Entry[i].Extension,entryContent,false,true);\n    end;\nend;\n\nfunction TMemDirectory.SplitPath(APath: utf8string): TMemDirectoryPath;\nvar idx,idxSlash: integer;\nbegin\n  result := TMemDirectoryPath.Create;\n  idx := 1;\n  repeat\n    idxSlash := PosEx('/',APath,idx);\n    if idxSlash = 0 then\n    begin\n      result.Add(EntryFilename(copy(APath, idx, length(APath)-idx+1)));\n      break;\n    end else\n    begin\n      result.Add(EntryFilename(copy(APath, idx, idxSlash-idx)));\n      idx := idxSlash+1;\n    end;\n  until false;\nend;\n\nconstructor TMemDirectory.Create(AParentDirectory: TMemDirectory);\nbegin\n  inherited Create;\n  FParentDirectory := AParentDirectory;\nend;\n\nfunction TMemDirectory.Equals(Obj: TObject): boolean;\nvar\n  other: TMemDirectory;\n  i, j: Integer;\n  data,otherData: TMemoryStream;\n  different: Boolean;\nbegin\n  if Obj = self then exit(true);\n  if not (Obj is TMemDirectory) then exit(false);\n  other := TMemDirectory(Obj);\n  if other.Count <> Count then exit(false);\n  for i := 0 to Count-1 do\n  begin\n    j := other.IndexOf(Entry[i].Name,Entry[i].Extension,true);\n    if j = -1 then exit(false);\n    if IsDirectory[i] then\n    begin\n      if not other.IsDirectory[j] then exit(false);\n      if not other.Directory[j].Equals(Directory[i]) then exit(false);\n    end else\n    if Entry[i].FileSize <> other.Entry[j].FileSize then exit(false)\n    else\n    begin\n      data := TMemoryStream.Create;\n      otherData := TMemoryStream.Create;\n      Entry[i].CopyTo(data);\n      other.Entry[j].CopyTo(otherData);\n      different := not CompareMem(data.Memory, otherData.Memory, data.Size);\n      data.Free;\n      otherData.Free;\n      if different then exit(false);\n    end;\n  end;\n  result := true;\nend;\n\n{ TMemDirectoryEntry }\n\nfunction TMemDirectoryEntry.GetIsCompressed: boolean;\nbegin\n  result := (FFlags and MemDirectoryEntry_FlagCompressed) <> 0;\nend;\n\nfunction TMemDirectoryEntry.GetCompressedSize: int64;\nbegin\n  if not IsDirectory and Assigned(FStream) then\n    result := FStream.Size\n  else\n    result := 0;\nend;\n\nfunction TMemDirectoryEntry.GetIsDirectory: boolean;\nbegin\n  result := (FFlags and MemDirectoryEntry_FlagDirectory) <> 0;\nend;\n\nprocedure TMemDirectoryEntry.SetIsCompressed(AValue: boolean);\nvar compressedStream,decompressed: TMemoryStream;\n  compression: Tcompressionstream;\nbegin\n  if AValue = IsCompressed then exit;\n\n  if Assigned(FStream) then\n  begin\n    if AValue then //compress\n    begin\n      compressedStream := TMemoryStream.Create;\n      compression := nil;\n      try\n        compression := Tcompressionstream.create(cldefault, compressedStream, true);\n        FStream.Position := 0;\n        compression.CopyFrom(FStream,FStream.Size);\n        FStream.Free;\n        FStream := compressedStream;\n        compressedStream := nil;\n        FFlags := FFlags xor MemDirectoryEntry_FlagCompressed;\n      finally\n        compression.Free;\n        compressedStream.Free;\n      end;\n    end else\n    begin //decompress\n      decompressed := TMemoryStream.Create;\n      try\n        InternalCopyTo(decompressed);\n        FStream.Free;\n        FStream := decompressed;\n        decompressed := nil;\n        FFlags := FFlags xor MemDirectoryEntry_FlagCompressed;\n      finally\n        decompressed.Free;\n      end;\n    end;\n  end else\n    FFlags := FFlags xor MemDirectoryEntry_FlagCompressed;\nend;\n\nfunction TMemDirectoryEntry.GetName: utf8string;\nbegin\n  result := FName;\nend;\n\nprocedure TMemDirectoryEntry.SetName(AValue: utf8string);\nbegin\n  while AValue[length(AValue)] = '.' do delete(AValue, length(AValue), 1);\n  FName := AValue;\nend;\n\nfunction TMemDirectoryEntry.GetFileSize: int64;\nbegin\n  if IsDirectory then\n    result := 0\n  else\n    Result:= FUncompressedSize;\nend;\n\nfunction TMemDirectoryEntry.GetExtension: utf8string;\nbegin\n  Result:= FExtension;\nend;\n\nfunction TMemDirectoryEntry.InternalCopyTo(ADestination: TStream): int64;\nvar\n  decomp: Tdecompressionstream;\nbegin\n  if not Assigned(FStream) then exit(0);\n  if IsCompressed then\n  begin\n    FStream.Position := 0;\n    decomp := Tdecompressionstream.Create(FStream,true);\n    try\n      result := ADestination.CopyFrom(decomp,FUncompressedSize);\n    finally\n      decomp.Free;\n    end;\n  end else\n  begin\n    FStream.Position := 0;\n    result := ADestination.CopyFrom(FStream, FStream.Size);\n  end;\nend;\n\nfunction TMemDirectoryEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  if IsDirectory then exit(0);\n  result := InternalCopyTo(ADestination);\nend;\n\nfunction TMemDirectoryEntry.GetStream: TStream;\nbegin\n  if IsCompressed then\n    raise exception.Create('Stream cannot be accessed directly because it is compressed')\n  else\n    result := FStream;\nend;\n\nconstructor TMemDirectoryEntry.Create(AContainer: TMultiFileContainer; AFilename: TEntryFilename;\n  AUncompressedStream: TStream; AOwnStream: boolean);\nbegin\n  CreateFromData(AContainer, AFilename, AUncompressedStream, AOwnStream, AUncompressedStream.Size, 0);\nend;\n\nconstructor TMemDirectoryEntry.CreateFromData(AContainer: TMultiFileContainer; AFilename: TEntryFilename;\n  AStream: TStream; AOwnStream: boolean;\n  AUncompressedSize: int64; AFlags: Word);\nbegin\n  inherited Create(AContainer);\n  Name := AFilename.Name;\n  FExtension:= AFilename.Extension;\n  if AOwnStream then\n    FStream := AStream\n  else\n  begin\n    FStream := TMemoryStream.Create;\n    AStream.Position:= 0;\n    FStream.CopyFrom(AStream, AStream.Size);\n  end;\n  FUncompressedSize:= AUncompressedSize;\n  FFlags:= AFlags;\n  FMemDirectory := nil;\nend;\n\nprocedure TMemDirectoryEntry.SaveToEmbeddedStream(AEntryStream, ADataStream: TStream;\n  AStartPos: int64; out uncompressedSize: int64);\nvar\n  entryStartPos: Int64;\nbegin\n  if IsDirectory then\n  begin\n    if not Assigned(FMemDirectory) then\n      raise exception.Create('Directory not allocated');\n    FreeAndNil(FStream);\n    IsCompressed:= false;\n    entryStartPos := AEntryStream.Position;\n    FMemDirectory.SaveToEmbeddedStream(AEntryStream, ADataStream, AStartPos);\n    uncompressedSize:= AEntryStream.Position - entryStartPos;\n  end else\n  if Assigned(FStream) then\n  begin\n    FStream.Position:= 0;\n    AEntryStream.CopyFrom(FStream, FStream.Size);\n    uncompressedSize:= FUncompressedSize;\n  end;\nend;\n\nprocedure TMemDirectoryEntry.LoadExtraFromEmbeddedStream(ADataStream: TStream;\n  AStartPos: int64);\nbegin\n  if IsDirectory and Assigned(FStream) then\n  begin\n    IsCompressed:= false;\n    if not Assigned(FMemDirectory) then\n      FMemDirectory := TMemDirectory.Create(Container as TMemDirectory);\n    FMemDirectory.LoadFromEmbeddedStream(FStream, ADataStream, AStartPos);\n    FreeAndNil(FStream);\n  end;\nend;\n\nconstructor TMemDirectoryEntry.CreateDirectory(AContainer: TMultiFileContainer;\n  AFilename: TEntryFilename);\nbegin\n  Name := AFilename.Name;\n  FExtension:= AFilename.Extension;\n  FStream := nil;\n  FUncompressedSize:= 0;\n  FFlags := MemDirectoryEntry_FlagDirectory;\n  FContainer := AContainer;\n  FMemDirectory := TMemDirectory.Create(Container as TMemDirectory);\nend;\n\ndestructor TMemDirectoryEntry.Destroy;\nbegin\n  FStream.Free;\n  FMemDirectory.Free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgramsegui.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  TColor = msegraphutils.colorty;\n\nconst\n  clNone = msegraphutils.cl_none;\n  clDefault = msegraphutils.cl_default;\n  clBlack = msegraphutils.cl_black;\n  clWhite = msegraphutils.cl_white;\n\nfunction ColorToRGB(c: TColor): TColor;\nfunction clRgbBtnHighlight: TColor;\nfunction clRgbBtnShadow: TColor;\nfunction GetScreenDPIX: integer;\nfunction GetScreenDPIY: integer;\n\ntype\n  {* How to draw the end of line }\n  TPenEndCap = msegraphics.capstylety;\n\nconst\n    {** Draw a half-disk at the end of the line. The diameter of the disk is\n        equal to the pen width. }\n    pecRound = msegraphics.cs_round;\n    {** Draw a half-square. The size of the square is equal to the pen width.\n        This is visually equivalent to extend the line of half the pen width }\n    pecSquare = msegraphics.cs_projecting;\n    {** The line ends exactly at the end point }\n    pecFlat = msegraphics.cs_butt;\n\ntype\n  {* How to join segments. This makes sense only for geometric pens (that\n     have a certain width) }\n  TPenJoinStyle = msegraphics.joinstylety;\n\nconst\n    {** Segments are joined by filling the gap with an arc }\n    pjsRound = msegraphics.js_round;\n    {** Segments are joind by filling the gap with an intermediary segment }\n    pjsBevel = msegraphics.js_bevel;\n    {** Segments are joined by extending them up to their intersection.\n        There is a miter limit so that if the intersection is too far,\n        an intermediary segment is used }\n    pjsMiter = msegraphics.js_miter;\n\ntype\n  {* Style to use for the pen. The unit for the pattern is the width of the\n     line }\n  TPenStyle = msegraphics.dashesstringty;\n  TPenMode = msegraphics.rasteropty;\n\nconst\n  {** Pen is continuous }\n  psSolid = TPenStyle('');\n  {** Pen is dashed. The dash have a length of 3 unit and the gaps of 1 unit }\n  psDash = TPenStyle(#3#1);\n  {** Pen is dotted. The dots have a length of 1 unit and the gaps of 1 unit }\n  psDot = TPenStyle(#1#1);\n  {** Pattern is a dash of length 3 followed by a dot of length 1, separated by a gap of length 1 }\n  psDashDot = TPenStyle(#3#1#1#1);\n  {** Dash of length 3, and two dots of length 1 }\n  psDashDotDot = TPenStyle(#3#1#1#1#1#1);\n\n  //the following are not directly compatible with mseGUI\n  {** Pen is not drawn }\n  psClear = TPenStyle(#0#0);\n  {** Custom pattern used }\n  psPattern = TPenStyle(#0#0#0#0);\n\n  pmBlack = msegraphics.rop_clear;\n  pmWhite = msegraphics.rop_set;\n  pmNop = msegraphics.rop_nop;\n  pmNot = msegraphics.rop_not;\n  pmCopy = msegraphics.rop_copy;\n  pmNotCopy = msegraphics.rop_notcopy;\n  pmMergePenNot = msegraphics.rop_notor;\n  pmMaskPenNot = msegraphics.rop_notand;\n  pmMergeNotPen = msegraphics.rop_ornot;\n  pmMaskNotPen = msegraphics.rop_andnot;\n  pmMerge = msegraphics.rop_or;\n  pmNotMerge = msegraphics.rop_nor;\n  pmMask = msegraphics.rop_and;\n  pmNotMask = msegraphics.rop_nand;\n  pmXor = msegraphics.rop_xor;\n  pmNotXor = msegraphics.rop_notxor;\n\ntype\n  TPen = class\n  private\n    FColor: TColor;\n    FMode: TPenMode;\n    FEndCap: TPenEndCap;\n    FJoinStyle: TPenJoinStyle;\n    FStyle: TPenStyle;\n    FWidth: integer;\n  public\n    constructor Create;\n    {** Color of the pen }\n    property Color: TColor read FColor write FColor;\n    {** Operation done on pixels }\n    property Mode: TPenMode read FMode write FMode;\n    {** End cap of the pen: how to draw the ends of the lines }\n    property EndCap: TPenEndCap read FEndCap write FEndCap;\n    {** Join style: how to join the segments of a polyline }\n    property JoinStyle: TPenJoinStyle read FJoinStyle write FJoinStyle;\n    {** Pen style: solid, dash, dot... }\n    property Style : TPenStyle read FStyle write FStyle;\n    {** Pen width in pixels }\n    property Width : Integer read FWidth write FWidth;\n  end;\n\n  TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal,\n                 bsBDiagonal, bsCross, bsDiagCross, bsImage, bsPattern);\n\ntype\n  { TBrush }\n  {* A class describing a brush }\n  TBrush = class\n  private\n    FColor: TColor;\n    FStyle: TBrushStyle;\n  public\n    constructor Create;\n    {** Color of the brush }\n    property Color: TColor read FColor write FColor;\n    {** Style of the brush: solid, diagonal lines, horizontal lines... }\n    property Style: TBrushStyle read FStyle write FStyle;\n  end;\n\ntype\n  {$DEFINE TCanvas}\n  TCanvas = msegraphics.tcanvas;\n  {$DEFINE TBitmap}\n  TBitmap = msebitmap.tbitmap;\n  TRawImage = TBitmap;\n  TFont = msegraphics.tfont;\n  {$DEFINE TFontStyle}\n  TFontStyle = msegraphutils.fontstylety;\n  TFontStyles = msegraphutils.fontstylesty;\n\n  TBitmapHelper = class helper for TBitmap\n  private\n    function GetMasked: boolean;\n    function GetTransparent: boolean;\n    function GetTransparentMode: TTransparentMode;\n    function GetTransparentColor: TColor;\n  public\n    class function Create: TBitmap; overload;\n    property Masked: boolean read GetMasked;\n    property Transparent: boolean read GetTransparent;\n    property TransparentMode: TTransparentMode read GetTransparentMode;\n    property TransparentColor: TColor read GetTransparentColor;\n  end;\n\n  TCanvasHelper = class helper for TCanvas\n    procedure Draw(X,Y: integer; AGraphic: TGraphic); overload;\n    procedure StretchDraw(ARect: TRect; AGraphic: TGraphic); overload;\n    procedure Draw(X,Y: integer; ABitmap: TBitmap); overload;\n    procedure StretchDraw(ARect: TRect; ABitmap: TBitmap); overload;\n  end;\n\n  {$DEFINE TFontQuality}\n  TFontQuality = (fqDefault, fqNonAntialiased, fqAntialiased, fqCleartype);\n\n  TFontHelper = class helper for TFont\n  private\n    function GetOrientation: integer;\n    procedure SetOrientation(AOrientation: integer);\n    function GetFontQuality: TFontQuality;\n    procedure SetFontQuality(AQuality: TFontQuality);\n    function GetHeightHelper: integer;\n    procedure SetHeightHelper(AHeight: integer);\n  public\n    property Orientation: integer read GetOrientation write SetOrientation;\n    property Quality: TFontQuality read GetFontQuality write SetFontQuality;\n    property Height: integer read GetHeightHelper write SetHeightHelper;\n  end;\n\nconst\n  fsBold = msegraphutils.fs_bold;\n  fsItalic = msegraphutils.fs_italic;\n  fsUnderline = msegraphutils.fs_underline;\n  fsStrikeOut = msegraphutils.fs_strikeout;\n\noperator :=(AClassesPoint: TClassesPoint): TPoint;\noperator :=(AMSERect: TMSERect): TRect;\noperator :=(ARect: TRect): TMSERect;\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\nfunction ColorToRGB(c: TColor): TColor;\nvar triple: rgbtriplety;\nbegin\n  triple := msegraphics.colortorgb(c);\n  result := msegraphics.rgbtocolor(triple.red, triple.green, triple.blue);\nend;\n\nfunction clRgbBtnHighlight: TColor;\nbegin\n  result := ColorToRGB(msegraphutils.cl_highlight);\nend;\n\nfunction clRgbBtnShadow: TColor;\nbegin\n  result := ColorToRGB(msegraphutils.cl_shadow);\nend;\n\nfunction GetScreenDPIX: integer;\nbegin\n  result := 96;\nend;\n\nfunction GetScreenDPIY: integer;\nbegin\n  result := 96;\nend;\n\n{ TPen }\n\nconstructor TPen.Create;\nbegin\n  inherited Create;\n  Mode := pmCopy;\n  Style := psSolid;\n  Width := 1;\n  Color := cl_black;\n  EndCap:= pecRound;\n  JoinStyle:= pjsRound;\nend;\n\n{ TBrush }\n\nconstructor TBrush.Create;\nbegin\n  Color := cl_white;\n  Style := bsSolid;\nend;\n\noperator :=(AClassesPoint: TClassesPoint): TPoint;\nbegin\n  result.x := AClassesPoint.X;\n  result.y := AClassesPoint.Y;\nend;\n\noperator :=(AMSERect: TMSERect): TRect;\nbegin\n  result.Left := AMSERect.x;\n  result.Top := AMSERect.y;\n  result.Right:= AMSERect.x + AMSERect.cx;\n  result.Bottom:= AMSERect.y + AMSERect.cy;\nend;\n\noperator :=(ARect: TRect): TMSERect;\nbegin\n  result.x := ARect.Left;\n  result.y := ARect.Top;\n  result.cx := ARect.Right - ARect.Left;\n  result.cy := ARect.Bottom - ARect.Top;\nend;\n\nclass function TBitmapHelper.Create: TBitmap;\nbegin\n  result := TBitmap.Create(bmk_rgb);\nend;\n\nfunction TBitmapHelper.GetMasked: boolean;\nbegin\n  if self is TMaskedBitmap then\n    result := TMaskedBitmap(self).masked\n  else\n    result := false;\nend;\n\nfunction TBitmapHelper.GetTransparent: boolean;\nbegin\n  result := TransparentColor <> clNone;\nend;\n\nfunction TBitmapHelper.GetTransparentMode: TTransparentMode;\nbegin\n  if TMaskedBitmap(self).TransparentColor = clDefault then\n    result := tmAuto\n  else\n    result := tmFixed;\nend;\n\nfunction TBitmapHelper.GetTransparentColor: TColor;\nbegin\n  if self is TMaskedBitmap then\n    result := TMaskedBitmap(self).TransparentColor\n    else result := clNone;\nend;\n\nprocedure TCanvasHelper.Draw(X,Y: integer; ABitmap: TBitmap);\nbegin\n  ABitmap.Paint(Self, Point(X,Y));\nEnd;\n\nprocedure TCanvasHelper.StretchDraw(ARect: TRect; ABitmap: TBitmap);\nbegin\n  ABitmap.Paint(Self, ARect);\nEnd;\n\nprocedure TCanvasHelper.Draw(X,Y: integer; AGraphic: TGraphic);\nbegin\n  AGraphic.Draw(self, rect(x,y,x+AGraphic.Width,y+AGraphic.Height));\nEnd;\n\nprocedure TCanvasHelper.StretchDraw(ARect: TRect; AGraphic: TGraphic);\nbegin\n  AGraphic.Draw(self, ARect);\nEnd;\n\nfunction TFontHelper.GetOrientation: integer;\nbegin\n  result := 0;\nend;\n\nprocedure TFontHelper.SetOrientation(AOrientation: integer);\nbegin\n  if AOrientation <> 0 then\n    raise exception.Create('Only orientation 0 allowed at font level');\nend;\n\nfunction TFontHelper.GetFontQuality: TFontQuality;\nbegin\n  if foo_antialiased2 in options then result := fqClearType else\n  if foo_antialiased in options then result := fqAntialiased else\n  if foo_nonantialiased in options then result := fqNonAntialiased else\n    result := fqDefault;\nend;\n\nprocedure TFontHelper.SetFontQuality(AQuality: TFontQuality);\nbegin\n  options := options - [foo_nonantialiased, foo_antialiased, foo_antialiased2];\n  case AQuality of\n  fqNonAntialiased: options := options + [foo_nonantialiased];\n  fqAntialiased: options := options + [foo_antialiased];\n  fqClearType: options := options + [foo_antialiased2];\n  end;\nend;\n\nfunction TFontHelper.GetHeightHelper: integer;\nbegin\n  result := round(inherited Height * 1.5);\nend;\n\nprocedure TFontHelper.SetHeightHelper(AHeight: integer);\nbegin\n  if AHeight < 0 then\n     inherited Height := -AHeight\n   else\n     inherited Height := round(AHeight/1.5);\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgramsegui_text.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nprocedure BitmapTextOut(ABitmap: TBitmap; ACoord: TPoint; AText: string);\nvar sUTF16: UnicodeString;\nbegin \n  sUTF16 := UTF8ToUTF16(AText);\n  inc(ACoord.Y, ABitmap.Canvas.Font.GlyphHeight-1);\n  ABitmap.Canvas.DrawString(sUTF16, ACoord);\nend;\n\nprocedure BitmapTextOutAngle(ABitmap: TBitmap; ACoord: TPoint; AText: string; AOrientation: integer);\nvar sUTF16: UnicodeString;\n  angleRad: single;\n  ofs: TPointF;\nbegin\n  angleRad := AOrientation*Pi/1800;\n  ofs := PointF(ACoord.X, ACoord.Y) +\n         PointF(sin(angleRad), cos(angleRad))*(ABitmap.Canvas.Font.GlyphHeight-1);\n  sUTF16 := UTF8ToUTF16(AText);\n  ABitmap.Canvas.DrawString(sUTF16, Point(round(ofs.X), round(ofs.Y)), \n                            nil, false, angleRad);\nend;\n\nprocedure BitmapTextRect(ABitmap: TBitmap; ARect: TRect; ACoord: TPoint; \n  AText: string; const AStyle: TTextStyle);\nvar sUTF16: UnicodeString;\n  AParts: TStringList;\n  partialWidths: array of integer;\n  oldLineWidth, totalWidth, i, y: integer;\nbegin\n  AParts := TStringList.Create;\n  If AStyle.ShowPrefix then\n  begin\n    SplitByPrefix(AText, AParts);\n  end else\n    AParts.Add(AText);\n  sUTF16 := UTF8ToUTF16(AText);\n  setlength(partialWidths, AParts.Count);\n  totalWidth := 0;\n  for i := 0 to AParts.Count-1 do\n  begin\n    partialWidths[i]:= ABitmap.Canvas.GetStringWidth(UTF8ToUTF16(AParts[i]));\n    Inc(totalWidth, partialWidths[i]);\n  end;\n  case AStyle.Alignment of\n  taRightJustify: ACoord.X := ARect.Right - totalWidth;\n  taCenter: ACoord.X := ARect.Left + (ARect.Width - totalWidth) div 2;\n  end;\n  case AStyle.Layout of\n  tlBottom: ACoord.Y := ARect.Bottom - ABitmap.Canvas.Font.Height;\n  tlCenter: ACoord.Y := ARect.Top + (ARect.Height - ABitmap.Canvas.Font.Height) div 2;\n  end;\n  inc(ACoord.Y, ABitmap.Canvas.Font.GlyphHeight-1);\n  oldLineWidth := ABitmap.Canvas.LineWidth;\n  for i := 0 to AParts.Count-1 do\n  begin\n    ABitmap.Canvas.DrawString(UTF8ToUTF16(AParts[i]), ACoord);\n    if (i and 1) = 1 then\n    begin\n      ABitmap.Canvas.LineWidth := ABitmap.Canvas.Font.LineWidth;\n      y := ACoord.Y + ABitmap.Canvas.Font.Descent div 2 + 1;\n      ABitmap.Canvas.DrawLine(Point(ACoord.X, y),\n        Point(ACoord.X + partialWidths[i] - 1, y),\n        ABitmap.Canvas.Font.Color);\n    end;\n    inc(ACoord.X, partialWidths[i]);\n  end;\n  ABitmap.Canvas.LineWidth := oldLineWidth;\nend;\n\nfunction BitmapTextExtent(ABitmap: TBitmap; AText: string): TSize;\nvar sUTF16: UnicodeString;\nbegin\n  sUTF16 := UTF8ToUTF16(AText);\n  result := Size(ABitmap.Canvas.GetStringWidth(sUTF16), ABitmap.Canvas.Font.Height);\nend;\n\nfunction BitmapTextExtentStyle(ABitmap: TBitmap; AText: string; AMaxWidth: integer;\n  const AStyle: TTextStyle): TSize;\nvar sUTF16: UnicodeString;\nbegin\n  if AStyle.ShowPrefix then // prefix not handled\n    AText := RemovePrefix(AText);\n  sUTF16 := UTF8ToUTF16(AText);\n  result := Size(ABitmap.Canvas.GetStringWidth(sUTF16), ABitmap.Canvas.Font.Height);\nend;\n\nfunction BitmapTextExtentAngle(ABitmap: TBitmap; AText: string; AOrientation: integer): TSize;\nbegin\n  result := BitmapTextExtent(ABitmap, AText);\nend;\n\nfunction BitmapTextFitInfo(ABitmap: TBitmap; AText: string; AMaxWidth: integer): integer;\nvar \n  bytePos, charLen: integer;  \n  sUTF16: UnicodeString; \nbegin\n  result := 0;\n  bytePos := 1;\n  while bytePos <= length(AText) do\n  begin\n    charLen := UTF8CharacterLength(@AText[bytePos]);\n    sUTF16 := UTF8ToUTF16(copy(AText, 1, bytePos+charLen-1));\n    if ABitmap.Canvas.GetStringWidth(sUTF16) > AMaxWidth then break;\n    inc(result);\n    inc(bytePos,charLen);\n  end;\nend;\n\nfunction BitmapTextFitInfoAngle(ABitmap: TBitmap; AText: string; \n  AMaxWidth: integer; AOrientation: integer): integer;\nbegin\n  result := BitmapTextFitInfo(ABitmap, AText, AMaxWidth);\nend;\n\nprocedure BitmapFillRect(ABitmap: TBitmap; ARect: TRect; AColor: TColor);\nbegin\n  ABitmap.Canvas.FillRect(ARect, AColor);\nend;\n"
  },
  {
    "path": "bgrabitmap/bgramsegui_uses.inc",
    "content": "uses BGRAClasses, FPimage, msegraphics, msegraphutils, msebitmap;\n"
  },
  {
    "path": "bgrabitmap/bgramseguibitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for MSEgui }\nunit BGRAMSEguiBitmap;\n{ It should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRAClasses, BGRAGraphics, BGRABitmapTypes, BGRADefaultBitmap,\n  BGRAText, msebitmap;\n\ntype\n  { Implementation of TBGRABitmap for MSEgui }\n  TBGRAMSEguiBitmap = class(TBGRADefaultBitmap)\n  protected\n    procedure CopyDataToBitmap(AData: Pointer; AWidth,AHeight: integer; ALineOrder: TRawImageLineOrder; ABitmap: TBitmap);\n    procedure RebuildBitmap; override;\n    procedure DoLoadFromBitmap; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override;\n    function LoadFromRawImage({%H-}ARawImage: TRawImage; {%H-}DefaultOpacity: byte;\n      {%H-}AlwaysReplaceAlpha: boolean=False; {%H-}RaiseErrorOnInvalidPixelFormat: boolean\n      =True): boolean; override;\n    procedure FreeBitmap; override;\n    procedure NotAvailable;\n    procedure InternalAssignBitmapPixels(ASource: TBitmap);\n    function GetCanvas: TCanvas; override;\n  public\n    procedure Assign(ASource: TPersistent); override;\n    procedure AssignToBitmap(ADestination: TBitmap);\n    destructor Destroy; override;\n    procedure GetImageFromCanvas({%H-}CanvasSource: TCanvas; {%H-}x, {%H-}y: integer); override; //not available\n    procedure DataDrawTransparent({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override;\n    procedure DataDrawOpaque({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override;\n    procedure TakeScreenshot({%H-}ARect: TRect); override; //not available\n    procedure TakeScreenshotOfPrimaryMonitor; override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC); override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC; {%H-}ARect: TRect); override; //not available\n  end;\n  \ntype\n  { Tracker of bitmap changes }\n  TBitmapTracker = class(TMaskedBitmap)\n  protected\n    FUser: TBGRADefaultBitmap;\n    procedure DoChange; override;\n  public\n    constructor Create(AUser: TBGRADefaultBitmap); overload;\n  end;  \n\nimplementation\n\nuses msegraphics, msegraphutils, math;\n\n{ TBitmapTracker }\n\nconstructor TBitmapTracker.Create(AUser: TBGRADefaultBitmap);\nbegin\n  FUser := AUser;\n  inherited Create(bmk_rgb);\nend;\n\nprocedure TBitmapTracker.DoChange;\nbegin\n  if FUser <> nil then\n    FUser.NotifyBitmapChange;\n  inherited DoChange;\nend;\n\n{ TBGRAMSEguiBitmap }\n\nprocedure TBGRAMSEguiBitmap.CopyDataToBitmap(AData: Pointer; AWidth,AHeight: integer; ALineOrder: TRawImageLineOrder; ABitmap: TBitmap);\nvar\n  ppix: PLongword;\n  pbmp: PLongword;\n  pmask: PByte;\n  x,y,yBmp : integer;\n  setMask: boolean;  \nbegin\n  ABitmap.Size := Size(AWidth, AHeight);\n  ppix := AData;\n  pmask := nil;\n  if ABitmap is TMaskedBitmap then\n  begin  \n    setMask := true;\n    TMaskedBitmap(ABitmap).Masked := true;\n    TMaskedBitmap(ABitmap).MaskKind := bmk_gray;  \n  end else\n    setMask := false;\n  for y := 0 to Height-1 do\n  begin\n    if ALineOrder = riloTopToBottom then\n      yBmp := y else yBmp := Height-1-y;\n    pbmp := ABitmap.Scanline[yBmp];\n    if setMask then pmask := TMaskedBitmap(ABitmap).Mask.Scanline[yBmp];\n    for x := 0 to Width-1 do\n    begin\n      pbmp^ := ppix^ and $ffffff;\n      if setMask then \n      begin\n        pmask^ := ppix^ shr 24;\n        inc(pmask);\n      end;\n      inc(ppix);\n      inc(pbmp);\n    end;\n  end;\nend;\n\nprocedure TBGRAMSEguiBitmap.RebuildBitmap;\nbegin\n  if FBitmap = nil then\n    FBitmap := TBitmapTracker.Create(self);\n\n  CopyDataToBitmap(Data, Width, Height, LineOrder, FBitmap);\nend;\n\nprocedure TBGRAMSEguiBitmap.InternalAssignBitmapPixels(ASource: TBitmap);\nvar \n  ppix,pbmp: PLongword;\n  pmask: PByte;\n  getMask: boolean;\n  x,y,wm1: integer;\nbegin\n  if ASource is TMaskedBitmap then\n    getMask := TMaskedBitmap(ASource).Masked\n    else getMask := false;\n  wm1 := min(Width-1, ASource.Width-1);\n  for y := 0 to min(Height-1, ASource.Height-1) do\n  begin\n    ppix := plongword(GetScanlineFast(y));\n    pbmp := ASource.Scanline[y];\n    if getMask then pmask := TMaskedBitmap(ASource).Mask.Scanline[y];\n    for x := 0 to wm1 do\n    begin\n      if getMask then\n      begin\n        ppix^ := (pbmp^ and $ffffff) or (pmask^ shl 24); \n        inc(pmask);\n      end else\n        ppix^ := (pbmp^ and $ffffff) or $ff000000;\n      inc(ppix);\n      inc(pbmp);\n    end;\n  end;\nend;\n\nfunction TBGRAMSEguiBitmap.GetCanvas: TCanvas; \nbegin\n  result := inherited GetCanvas;\n  NotifyBitmapChange;\nend;\n\nprocedure TBGRAMSEguiBitmap.Assign(ASource: TPersistent); \nvar bmp: TBitmap;\nbegin\n  if ASource is TBitmap then\n  begin\n    bmp := TBitmap(ASource);\n    SetSize(bmp.Width, bmp.Height);\n    InternalAssignBitmapPixels(bmp);\n    InvalidateBitmap;\n  end else\n    inherited Assign(ASource);\nend;\n\nprocedure TBGRAMSEguiBitmap.AssignToBitmap(ADestination: TBitmap);\nbegin\n  ADestination.Assign(Bitmap);\nend;\n\nprocedure TBGRAMSEguiBitmap.DoLoadFromBitmap; \nbegin\n  if Assigned(FBitmap) then\n    InternalAssignBitmapPixels(FBitmap);\nend;\n\nfunction TBGRAMSEguiBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  result := TMSEFontRenderer.Create;\nend;\n\nfunction TBGRAMSEguiBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nbegin\n  self.Assign(ARawImage);\n  result := true;\nend;\n\nprocedure TBGRAMSEguiBitmap.FreeBitmap;\nbegin\n  FreeAndNil(FBitmap);\nend;\n\nprocedure TBGRAMSEguiBitmap.NotAvailable;\nbegin\n  raise exception.Create('Function not available with MSEgui');\nend;\n\ndestructor TBGRAMSEguiBitmap.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TBGRAMSEguiBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x,\n  y: integer);\nbegin\n  (Bitmap as TMaskedBitmap).Masked := false;\n  Bitmap.Canvas.CopyArea(CanvasSource, MakeRect(x,y,Bitmap.Width,Bitmap.Height),\n              Point(0,0));              \nend;\n\nprocedure TBGRAMSEguiBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  bmp: TMaskedBitmap;\nbegin\n  bmp := TMaskedBitmap.Create(bmk_rgb);\n  CopyDataToBitmap(Data, Width, Height, ALineOrder, bmp);\n  bmp.Paint(ACanvas, Rect);  \n  bmp.Free;\nend;\n\nprocedure TBGRAMSEguiBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  bmp: TBitmap;\nbegin\n  bmp := TBitmap.Create(bmk_rgb);\n  CopyDataToBitmap(AData, AWidth, AHeight, ALineOrder, bmp);\n  bmp.Paint(ACanvas, Rect);  \n  bmp.Free;\nend;\n\nprocedure TBGRAMSEguiBitmap.TakeScreenshot(ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAMSEguiBitmap.TakeScreenshotOfPrimaryMonitor;\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAMSEguiBitmap.LoadFromDevice(DC: HDC);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRAMSEguiBitmap.LoadFromDevice(DC: HDC; ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgramultifiletype.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Generic definition of a file containing multiple items }\nunit BGRAMultiFileType;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, fgl;\n\ntype\n  { Filename for an entry in a multifile container }\n  TEntryFilename = record\n  private\n    FExtension: utf8string;\n    FName: utf8string;\n    function GetFilename: utf8string;\n    function GetIsEmpty: boolean;\n    procedure SetExtension(AValue: utf8string);\n    procedure SetFilename(AValue: utf8string);\n    procedure SetName(AValue: utf8string);\n  public\n    class operator =(const AValue1,AValue2: TEntryFilename): boolean;\n    property Filename: utf8string read GetFilename write SetFilename;\n    property Name: utf8string read FName write SetName;\n    property Extension: utf8string read FExtension write SetExtension;\n    property IsEmpty: boolean read GetIsEmpty;\n  end;\n\nfunction EntryFilename(AName,AExtension: string): TEntryFilename; overload;\nfunction EntryFilename(AFilename: string): TEntryFilename; overload;\n\ntype\n  TMultiFileContainer = class;\n\n  { Entry in a multifile container }\n  TMultiFileEntry = class\n  protected\n    FContainer: TMultiFileContainer;\n    function GetName: utf8string; virtual; abstract;\n    procedure SetName(AValue: utf8string); virtual; abstract;\n    function GetFileSize: int64; virtual;\n    function GetExtension: utf8string; virtual;\n  public\n    constructor Create(AContainer: TMultiFileContainer);\n    function CopyTo({%H-}ADestination: TStream): int64; virtual;\n    function GetStream: TStream; virtual;\n    function CompareNameAndExtension(AName: utf8string; AExtension: utf8string; ACaseSensitive: boolean = true): integer;\n    property Name: utf8string read GetName write SetName;\n    property Extension: utf8string read GetExtension;\n    property FileSize: int64 read GetFileSize;\n    property Container: TMultiFileContainer read FContainer;\n  end;\n\n  TMultiFileEntryList = specialize TFPGList<TMultiFileEntry>;\n\n  {* Generic definition of a multifile container }\n  TMultiFileContainer = class(TPersistent)\n  private\n    FEntries: TMultiFileEntryList;\n  protected\n    procedure Init; virtual;\n    function AddEntry(AEntry: TMultiFileEntry; AIndex: integer = -1): integer;\n    function GetCount: integer;\n    function GetEntry(AIndex: integer): TMultiFileEntry;\n    function CreateEntry(AName: utf8string; AExtension: utf8string; AContent: TStream): TMultiFileEntry; virtual; abstract;\n    function GetRawString(AIndex: integer): RawByteString;\n    function GetRawStringByFilename(AFilename: string): RawByteString;\n    procedure SetRawString(AIndex: integer; AValue: RawByteString);\n    procedure SetRawStringByFilename(AFilename: string; AValue: RawByteString);\n  public\n    constructor Create; overload;\n    constructor Create(AFilename: utf8string); overload;\n    constructor Create(AStream: TStream); overload;\n    constructor Create(AStream: TStream; AStartPos: Int64); overload;\n    procedure Assign(Source: TPersistent); override;\n    function Add(AName: utf8string; AExtension: utf8string; AContent: TStream; AOverwrite: boolean = false; AOwnStream: boolean = true): integer; overload;\n    function Add(AName: utf8string; AExtension: utf8string; AContent: RawByteString; AOverwrite: boolean = false): integer; overload;\n    function Add(AFilename: TEntryFilename; AContent: TStream; AOverwrite: boolean = false; AOwnStream: boolean = true): integer; overload;\n    function Add(AFilename: TEntryFilename; AContent: RawByteString; AOverwrite: boolean = false): integer; overload;\n    procedure Clear; virtual;\n    destructor Destroy; override;\n    procedure LoadFromFile(AFilename: utf8string);\n    procedure LoadFromStream(AStream: TStream); virtual; abstract;\n    procedure LoadFromResource(AFilename: string); virtual;\n    procedure SaveToFile(AFilename: utf8string);\n    procedure SaveToStream(ADestination: TStream); virtual; abstract;\n    procedure Remove(AEntry: TMultiFileEntry); virtual;\n    procedure Delete(AIndex: integer); overload; virtual;\n    function Delete(AName: utf8string; AExtension: utf8string; ACaseSensitive: boolean = True): boolean; overload;\n    function Delete(AFilename: TEntryFilename; ACaseSensitive: boolean = True): boolean; overload;\n    function IndexOf(AEntry: TMultiFileEntry): integer; overload;\n    function IndexOf(AName: utf8string; AExtenstion: utf8string; ACaseSensitive: boolean = True): integer; overload; virtual;\n    function IndexOf(AFilename: TEntryFilename; ACaseSensitive: boolean = True): integer; overload;\n    property Count: integer read GetCount;\n    property Entry[AIndex: integer]: TMultiFileEntry read GetEntry;\n    property RawString[AIndex: integer]: RawByteString read GetRawString write SetRawString;\n    property RawStringByFilename[AFilename: string]: RawByteString read GetRawStringByFilename write SetRawStringByFilename;\n  end;\n\nimplementation\n\nuses BGRAUTF8, strutils, BGRABitmapTypes;\n\n{ TEntryFilename }\n\nfunction TEntryFilename.GetFilename: utf8string;\nbegin\n  if Extension = '' then\n    result := Name\n  else\n    result := Name+'.'+Extension;\nend;\n\nfunction TEntryFilename.GetIsEmpty: boolean;\nbegin\n  result := (FName='') and (FExtension = '');\nend;\n\nprocedure TEntryFilename.SetExtension(AValue: utf8string);\nvar\n  i: Integer;\nbegin\n  if FExtension=AValue then Exit;\n  for i := 1 to length(AValue) do\n    if AValue[i] in ['.','/'] then\n      raise Exception.Create('Invalid extension');\n  FExtension:=AValue;\nend;\n\nprocedure TEntryFilename.SetFilename(AValue: utf8string);\nvar\n  idxDot: SizeInt;\nbegin\n  idxDot := RPos('.',AValue);\n  if idxDot = 0 then\n  begin\n    Name := AValue;\n    Extension := '';\n  end\n  else\n  begin\n    Name := copy(AValue,1,idxDot-1);\n    Extension := copy(AValue,idxDot+1,length(AValue)-idxDot);\n  end;\nend;\n\nprocedure TEntryFilename.SetName(AValue: utf8string);\nvar\n  i: Integer;\nbegin\n  if FName=AValue then Exit;\n  for i := 1 to length(AValue) do\n    if AValue[i] = '/' then\n      raise Exception.Create('Invalid name');\n  FName:=AValue;\nend;\n\nfunction EntryFilename(AName, AExtension: string): TEntryFilename;\nbegin\n  result.Name := AName;\n  result.Extension:= AExtension;\nend;\n\nfunction EntryFilename(AFilename: string): TEntryFilename;\nbegin\n  result.Filename:= AFilename;\nend;\n\nclass operator TEntryFilename.=(const AValue1, AValue2: TEntryFilename): boolean;\nbegin\n  result := (AValue1.Name = AValue2.Name) and (AValue1.Extension = AValue2.Extension);\nend;\n\n{ TMultiFileEntry }\n\nfunction TMultiFileEntry.GetFileSize: int64;\nbegin\n  result := 0;\nend;\n\nfunction TMultiFileEntry.GetExtension: utf8string;\nbegin\n  result := '';\nend;\n\nconstructor TMultiFileEntry.Create(AContainer: TMultiFileContainer);\nbegin\n  FContainer := AContainer;\nend;\n\nfunction TMultiFileEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  result := 0;\nend;\n\nfunction TMultiFileEntry.GetStream: TStream;\nbegin\n  result := nil;\nend;\n\nfunction TMultiFileEntry.CompareNameAndExtension(AName: utf8string;\n  AExtension: utf8string; ACaseSensitive: boolean): integer;\nbegin\n  if ACaseSensitive then\n    result := CompareStr(AName, Name)\n  else\n    result := UTF8CompareText(AName, Name);\n\n  if result = 0 then\n    result := UTF8CompareText(AExtension, Extension);\nend;\n\n{ TMultiFileContainer }\n\nfunction TMultiFileContainer.GetCount: integer;\nbegin\n  if Assigned(FEntries) then\n    result := FEntries.Count\n  else\n    result := 0;\nend;\n\nfunction TMultiFileContainer.GetEntry(AIndex: integer): TMultiFileEntry;\nbegin\n  result := FEntries[AIndex];\nend;\n\nfunction TMultiFileContainer.GetRawString(AIndex: integer): RawByteString;\nvar s: TMemoryStream;\nbegin\n  s := TMemoryStream.Create;\n  try\n    Entry[AIndex].CopyTo(s);\n    setlength(result, s.Size);\n    if length(result)>0 then\n      move(s.Memory^, result[1], length(result));\n  finally\n    s.Free;\n  end;\nend;\n\nfunction TMultiFileContainer.GetRawStringByFilename(AFilename: string\n  ): RawByteString;\nvar\n  idx: Integer;\nbegin\n  idx := IndexOf(EntryFilename(AFilename));\n  if idx = -1 then\n    result := ''\n  else\n    result := GetRawString(idx);\nend;\n\nprocedure TMultiFileContainer.SetRawString(AIndex: integer;\n  AValue: RawByteString);\nbegin\n  with Entry[AIndex] do\n    Add(Name, Extension, AValue, true);\nend;\n\nprocedure TMultiFileContainer.SetRawStringByFilename(AFilename: string;\n  AValue: RawByteString);\nvar\n  f: TEntryFilename;\nbegin\n  f := EntryFilename(AFilename);\n  Add(f.Name,f.Extension,AValue,true);\nend;\n\nprocedure TMultiFileContainer.Init;\nbegin\n  FEntries := TMultiFileEntryList.Create;\nend;\n\nfunction TMultiFileContainer.AddEntry(AEntry: TMultiFileEntry; AIndex: integer): integer;\nbegin\n  if not Assigned(FEntries) then\n    raise exception.Create('Entry list not created');\n  if (AIndex >= 0) and (AIndex < FEntries.Count) then\n  begin\n    FEntries.Insert(AIndex, AEntry);\n    result := AIndex;\n  end\n  else\n    result := FEntries.Add(AEntry);\nend;\n\nconstructor TMultiFileContainer.Create;\nbegin\n  Init;\nend;\n\nconstructor TMultiFileContainer.Create(AFilename: utf8string);\nbegin\n  Init;\n  LoadFromFile(AFilename);\nend;\n\nconstructor TMultiFileContainer.Create(AStream: TStream);\nbegin\n  Init;\n  LoadFromStream(AStream);\nend;\n\nconstructor TMultiFileContainer.Create(AStream: TStream; AStartPos: Int64);\nbegin\n  Init;\n  AStream.Position := AStartPos;\n  LoadFromStream(AStream);\nend;\n\nprocedure TMultiFileContainer.Assign(Source: TPersistent);\nvar\n  other: TMultiFileContainer;\n  otherEntry, newEntry: TMultiFileEntry;\n  i: Integer;\n  content: TMemoryStream;\nbegin\n  if Source is TMultiFileContainer then\n  begin\n    Clear;\n    other := TMultiFileContainer(Source);\n    for i := 0 to other.Count-1 do\n    begin\n      content := TMemoryStream.Create;\n      otherEntry := other.Entry[i];\n      otherEntry.CopyTo(content);\n      newEntry := CreateEntry(otherEntry.Name, otherEntry.Extension, content);\n      if not Assigned(newEntry) then\n        raise exception.Create('Unable to create entry');\n      AddEntry(newEntry);\n    end;\n  end else\n    inherited Assign(Source);\nend;\n\nfunction TMultiFileContainer.Add(AName: utf8string; AExtension: utf8string;\n  AContent: TStream; AOverwrite: boolean; AOwnStream: boolean): integer;\nvar\n  index: Integer;\n  newEntry: TMultiFileEntry;\n  contentCopy: TMemoryStream;\nbegin\n  index := IndexOf(AName,AExtension);\n  if index <> -1 then\n  begin\n    if AOverwrite then\n      Delete(index)\n    else\n      raise Exception.Create('Duplicate entry');\n  end;\n  if not AOwnStream then\n  begin\n    AContent.Position:= 0;\n    contentCopy := TMemoryStream.Create;\n    contentCopy.CopyFrom(AContent, AContent.Size);\n    newEntry := CreateEntry(AName, AExtension, contentCopy);\n  end else\n    newEntry := CreateEntry(AName, AExtension, AContent);\n  if Assigned(newEntry) then\n    result := AddEntry(newEntry, index)\n  else\n    raise exception.Create('Unable to create entry');\nend;\n\nfunction TMultiFileContainer.Add(AName: utf8string; AExtension: utf8string;\n  AContent: RawByteString; AOverwrite: boolean): integer;\nvar stream: TMemoryStream;\nbegin\n  stream := TMemoryStream.Create;\n  if length(AContent) > 0 then stream.Write(AContent[1],length(AContent));\n  result := Add(AName,AExtension,stream,AOverwrite);\nend;\n\nfunction TMultiFileContainer.Add(AFilename: TEntryFilename; AContent: TStream;\n  AOverwrite: boolean; AOwnStream: boolean): integer;\nbegin\n  result := Add(AFilename.Name,AFilename.Extension, AContent, AOverwrite, AOwnStream);\nend;\n\nfunction TMultiFileContainer.Add(AFilename: TEntryFilename;\n  AContent: RawByteString; AOverwrite: boolean): integer;\nbegin\n  result := Add(AFilename.Name,AFilename.Extension, AContent, AOverwrite);\nend;\n\ndestructor TMultiFileContainer.Destroy;\nbegin\n  Clear;\n  FreeAndNil(FEntries);\n  inherited Destroy;\nend;\n\nprocedure TMultiFileContainer.LoadFromFile(AFilename: utf8string);\nvar stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(AFilename, fmOpenRead);\n  LoadFromStream(stream);\n  stream.Free;\nend;\n\nprocedure TMultiFileContainer.LoadFromResource(AFilename: string);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TMultiFileContainer.SaveToFile(AFilename: utf8string);\nvar stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(AFilename, fmCreate);\n  SaveToStream(stream);\n  stream.Free;\nend;\n\nprocedure TMultiFileContainer.Remove(AEntry: TMultiFileEntry);\nvar\n  index: Integer;\nbegin\n  index := IndexOf(AEntry);\n  if index = -1 then\n    raise exception.Create('Entry not found');\n  Delete(index);\nend;\n\nprocedure TMultiFileContainer.Delete(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < Count) then\n  begin\n    Entry[AIndex].Free;\n    FEntries.Delete(AIndex);\n  end else\n    raise ERangeError.Create('Index out of bounds');\nend;\n\nfunction TMultiFileContainer.Delete(AName: utf8string; AExtension: utf8string;\n  ACaseSensitive: boolean): boolean;\nvar\n  index: Integer;\nbegin\n  index := IndexOf(AName, AExtension, ACaseSensitive);\n  if index = -1 then\n    result := false\n  else\n  begin\n    Delete(index);\n    result := true;\n  end;\nend;\n\nfunction TMultiFileContainer.Delete(AFilename: TEntryFilename;\n  ACaseSensitive: boolean): boolean;\nbegin\n  result := Delete(AFilename.Name,AFilename.Extension,ACaseSensitive);\nend;\n\nfunction TMultiFileContainer.IndexOf(AEntry: TMultiFileEntry): integer;\nbegin\n  result := FEntries.IndexOf(AEntry);\nend;\n\nfunction TMultiFileContainer.IndexOf(AName: utf8string; AExtenstion: utf8string; ACaseSensitive: boolean): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to Count-1 do\n    if Entry[i].CompareNameAndExtension(AName, AExtenstion, ACaseSensitive) = 0 then\n      exit(i);\n  result := -1;\nend;\n\nfunction TMultiFileContainer.IndexOf(AFilename: TEntryFilename;\n  ACaseSensitive: boolean): integer;\nbegin\n  result := IndexOf(AFilename.Name,AFilename.Extension,ACaseSensitive);\nend;\n\nprocedure TMultiFileContainer.Clear;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FEntries.Count-1 do\n    FEntries.Items[i].Free;\n  FEntries.Clear;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgranogui.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  TColor = type LongInt;\n  {$warnings off}\n  TRawImage = class(TFPMemoryImage)\n    procedure BGRASetSizeAndTransparency(AWidth,AHeight: Integer; {%H-}ATransparent: boolean);\n    constructor Create;\n  end;\n  {$warnings on}\n  TGUICanvas = class(TFPImageCanvas)\n    procedure DrawImage(x,y: integer; AImage: TFPCustomImage);\n  end;\n\nconst\n  clNone    = TColor($1FFFFFFF);\n  clDefault = TColor($20000000);\n  clBlack   = TColor($000000);\n  clMaroon  = TColor($000080);\n  clGreen   = TColor($008000);\n  clOlive   = TColor($008080);\n  clNavy    = TColor($800000);\n  clPurple  = TColor($800080);\n  clTeal    = TColor($808000);\n  clGray    = TColor($808080);\n  clSilver  = TColor($C0C0C0);\n  clRed     = TColor($0000FF);\n  clLime    = TColor($00FF00);\n  clYellow  = TColor($00FFFF);\n  clBlue    = TColor($FF0000);\n  clFuchsia = TColor($FF00FF);\n  clAqua    = TColor($FFFF00);\n  clLtGray  = TColor($C0C0C0); // clSilver alias\n  clDkGray  = TColor($808080); // clGray alias\n  clWhite   = TColor($FFFFFF);\n\n  clRgbBtnHighlight = TColor($E0E0E0);\n  clRgbBtnShadow = TColor($808080);\n\nfunction ColorToRGB(c: TColor): TColor; inline;\n\nfunction GetScreenDPIX: integer;\nfunction GetScreenDPIY: integer;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\nprocedure TRawImage.BGRASetSizeAndTransparency(AWidth,AHeight: Integer; ATransparent: boolean);\nbegin\n  SetSize(AWidth,AHeight);\nend;\n\nconstructor TRawImage.Create;\nbegin\n  inherited Create(0,0);\nend;\n\nprocedure TGUICanvas.DrawImage(x,y: integer; AImage: TFPCustomImage);\nbegin\n  Draw(x,y, AImage);\nend;\n\nfunction ColorToRGB(c: TColor): TColor; inline;\nbegin\n  result := c;\nend;\n\nfunction GetScreenDPIX: integer;\nbegin\n  result := 96;\nend;\n\nfunction GetScreenDPIY: integer;\nbegin\n  result := 96;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgranogui_uses.inc",
    "content": "uses BGRAClasses, FPImage, FPCanvas, FPImgCanv;\n"
  },
  {
    "path": "bgrabitmap/bgranoguibitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap without graphical user interface }\nunit BGRANoGUIBitmap;\n{ It should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  SysUtils, BGRAClasses, BGRAGraphics, BGRABitmapTypes, BGRADefaultBitmap\n  {$IFDEF BGRABITMAP_USE_LAZFREETYPE}, BGRAFreeType, EasyLazFreeType, LazFreeTypeFontCollection{$ENDIF}\n  {$IFNDEF BGRABITMAP_CORE}, BGRACanvas{$ENDIF};\n\ntype\n  { Implementation of TBGRABitmap for no graphical interface }\n  TBGRANoGUIBitmap = class(TBGRADefaultBitmap)\n  private\n    {$IFNDEF BGRABITMAP_CORE}\n    FPseudoCanvas: TBGRACanvas;\n    function GetPseudoCanvas: TBGRACanvas;\n    {$ENDIF}\n  protected\n    procedure RebuildBitmap; override;\n    function CreateDefaultFontRenderer: TBGRACustomFontRenderer; override;\n    function LoadFromRawImage({%H-}ARawImage: TRawImage; {%H-}DefaultOpacity: byte;\n      {%H-}AlwaysReplaceAlpha: boolean=False; {%H-}RaiseErrorOnInvalidPixelFormat: boolean\n      =True): boolean; override;\n    procedure Init; override;\n    procedure FreeBitmap; override;\n    procedure NotAvailable;\n  public\n    destructor Destroy; override;\n    procedure AssignToBitmap(ADestination: TBitmap);\n    {$IFDEF BGRABITMAP_USE_LAZFREETYPE}\n    class procedure AddFreeTypeFontFolder(ADirectory: string; AUTF8: boolean = false); static;\n    class procedure AddFreeTypeFontFile(AFilename: string; AUTF8: boolean = false); static;\n    class procedure AddFreeTypeFontStream(AStream: TStream; AOwned: boolean); static;\n    {$ENDIF}\n    procedure Draw(ACanvas: TCanvas; x, y: integer; {%H-}Opaque: boolean=True); override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; {%H-}Opaque: boolean=True); override;\n    procedure GetImageFromCanvas({%H-}CanvasSource: TCanvas; {%H-}x, {%H-}y: integer); override; //not available\n    procedure DataDrawTransparent({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override;\n    procedure DataDrawOpaque({%H-}ACanvas: TCanvas; {%H-}Rect: TRect; {%H-}AData: Pointer;\n      {%H-}ALineOrder: TRawImageLineOrder; {%H-}AWidth, {%H-}AHeight: integer); override;\n    procedure TakeScreenshot({%H-}ARect: TRect); override; //not available\n    procedure TakeScreenshotOfPrimaryMonitor; override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC); override; //not available\n    procedure LoadFromDevice({%H-}DC: HDC; {%H-}ARect: TRect); override; //not available\n    {$IFNDEF BGRABITMAP_CORE}property Canvas: TBGRACanvas read GetPseudoCanvas;{$ENDIF}\n  end;\n\nimplementation\n\n{ TBGRANoGUIBitmap }\n\n{$IFNDEF BGRABITMAP_CORE}function TBGRANoGUIBitmap.GetPseudoCanvas: TBGRACanvas;\nbegin\n  if FPseudoCanvas = nil then\n  begin\n    FPseudoCanvas := TBGRACanvas.Create(self);\n    FPseudoCanvas.AntialiasingMode := amOff;\n  end;\n  result := FPseudoCanvas;\nend;{$ENDIF}\n\nprocedure TBGRANoGUIBitmap.RebuildBitmap;\nbegin\n  //nothing\nend;\n\nfunction TBGRANoGUIBitmap.CreateDefaultFontRenderer: TBGRACustomFontRenderer;\nbegin\n  {$IFDEF BGRABITMAP_USE_LAZFREETYPE}\n  result := TBGRAFreeTypeFontRenderer.Create;\n  {$ELSE}\n  result := nil;\n  raise Exception.Create('LazFreeType not available');\n  {$ENDIF}\nend;\n\nfunction TBGRANoGUIBitmap.LoadFromRawImage(ARawImage: TRawImage;\n  DefaultOpacity: byte; AlwaysReplaceAlpha: boolean;\n  RaiseErrorOnInvalidPixelFormat: boolean): boolean;\nbegin\n  NotAvailable;\n  result := false;\nend;\n\nprocedure TBGRANoGUIBitmap.Init;\nbegin\n  inherited Init;\n  FontAntialias:= true;\nend;\n\nprocedure TBGRANoGUIBitmap.FreeBitmap;\nbegin\n  //nothing\nend;\n\nprocedure TBGRANoGUIBitmap.NotAvailable;\nbegin\n  raise exception.Create('Function not available without GUI');\nend;\n\ndestructor TBGRANoGUIBitmap.Destroy;\nbegin\n  {$IFNDEF BGRABITMAP_CORE}FreeAndNil(FPseudoCanvas);{$ENDIF}\n  inherited Destroy;\nend;\n\nprocedure TBGRANoGUIBitmap.AssignToBitmap(ADestination: TBitmap);\nbegin\n  ADestination.RawImage.Assign(self);\nend;\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRANoGUIBitmap.AddFreeTypeFontFolder(ADirectory: string; AUTF8: boolean);\nbegin\n  if AUTF8 then ADirectory:= Utf8ToAnsi(ADirectory);\n  EasyLazFreeType.FontCollection.AddFolder(ADirectory);\nend;{$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRANoGUIBitmap.AddFreeTypeFontFile(AFilename: string; AUTF8: boolean);\nbegin\n  if AUTF8 then AFilename:= Utf8ToAnsi(AFilename);\n  EasyLazFreeType.FontCollection.AddFile(AFilename);\nend;{$ENDIF}\n\n{$IFDEF BGRABITMAP_USE_LAZFREETYPE}class procedure TBGRANoGUIBitmap.AddFreeTypeFontStream(AStream: TStream; AOwned: boolean);\nbegin\n  EasyLazFreeType.FontCollection.AddStream(AStream, AOwned);\n  if AOwned then AStream.Free;\nend;{$ENDIF}\n\nprocedure TBGRANoGUIBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  ACanvas.GUICanvas.Draw(x,y,self);\nend;\n\nprocedure TBGRANoGUIBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nbegin\n  ACanvas.GUICanvas.StretchDraw(Rect.Left,Rect.Top,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top,self);\nend;\n\nprocedure TBGRANoGUIBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x,\n  y: integer);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.DataDrawOpaque(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.TakeScreenshot(ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.TakeScreenshotOfPrimaryMonitor;\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.LoadFromDevice(DC: HDC);\nbegin\n  NotAvailable;\nend;\n\nprocedure TBGRANoGUIBitmap.LoadFromDevice(DC: HDC; ARect: TRect);\nbegin\n  NotAvailable;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraopengl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ OpenGL rendering (bitmap and various other classes). }\nunit BGRAOpenGL;\n\n{$mode objfpc}{$H+}\n{$I bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, BGRAGraphics,\n  BGRAOpenGLType, BGRASpriteGL, BGRACanvasGL, GL, GLext, GLU, BGRABitmapTypes,\n  BGRAFontGL, BGRASSE, BGRAMatrix3D;\n\ntype\n  TBGLCustomCanvas = BGRACanvasGL.TBGLCustomCanvas;\n  TBGLSprite = TBGLDefaultSprite;\n  IBGLTexture = BGRAOpenGLType.IBGLTexture;\n  IBGLFont = BGRAOpenGLType.IBGLFont;\n  IBGLRenderedFont = BGRAFontGL.IBGLRenderedFont;\n  TOpenGLRepeatMode = BGRAOpenGLType.TOpenGLRepeatMode;\n  TOpenGLResampleFilter = BGRAOpenGLType.TOpenGLResampleFilter;\n  TOpenGLBlendMode = BGRAOpenGLType.TOpenGLBlendMode;\n  TBGLPath = BGRACanvasGL.TBGLPath;\n  TWaitForGPUOption = BGRAOpenGLType.TWaitForGPUOption;\n  TBGLCustomElementArray = BGRACanvasGL.TBGLCustomElementArray;\n  TBGLCustomArray = BGRACanvasGL.TBGLCustomArray;\n  TOpenGLPrimitive = BGRAOpenGLType.TOpenGLPrimitive;\n  TTextLayout = BGRAGraphics.TTextLayout;\n\nconst\n  tlTop = BGRAGraphics.tlTop;\n  tlCenter = BGRAGraphics.tlCenter;\n  tlBottom = BGRAGraphics.tlBottom;\n\ntype\n  { Context for OpenGL surface }\n  TBGLContext = object\n  private\n    function GetHeight: integer;\n    function GetWidth: integer;\n  public\n    Canvas: TBGLCustomCanvas;\n    Sprites: TBGLCustomSpriteEngine;\n    property Width: integer read GetWidth;\n    property Height: integer read GetHeight;\n  end;\n\n  { @abstract(Frame buffer in OpenGL.)\n\n    A frame buffer is a texture that can be used as a drawing surface in OpenGL.\n\n**Example of drawing on a framebuffer and then drawing it on the OpenGL control:**\n\n```pascal\nuses ..., BGRABitmapTypes, BGRAOpenGL;\n\nprocedure TForm1.OpenGLControlPaint(Sender: TObject);\nvar\n  mousePos: TPoint;\n  buf: TBGLFrameBuffer;\nbegin\n  // Draw Background\n  BGLViewPort(OpenGLControl.Width, OpenGLControl.Height, BGRAWhite);\n  // Create framebuffer\n  buf := TBGLFrameBuffer.Create(256,256);\n  // Use it\n  BGLCanvas.ActiveFrameBuffer := buf;\n\n  BGLCanvas.Fill(CSSYellow);\n  BGLCanvas.Line(0,0,128,128, BGRABlack);\n  mousePos := ScreenToClient(Mouse.CursorPos);\n  BGLCanvas.FillRect(mousePos.x - 50, mousePos.y - 50, mousePos.x + 50, mousePos.y + 50, CSSRed, False);\n\n  // Render framebuffer on the control\n  BGLCanvas.ActiveFrameBuffer := nil;\n  BGLCanvas.PutImage(0,0, buf.Texture);\n  // Free framebuffer\n  buf.Free;\n\n  // Update\n  OpenGLControl.SwapBuffers;\nend;\n```}\n  TBGLFrameBuffer = class(TBGLCustomFrameBuffer)\n  protected\n    FHeight: integer;\n    FMatrix: TAffineMatrix;\n    FProjectionMatrix: TMatrix4D;\n    FTexture: IBGLTexture;\n    FFrameBufferId, FRenderBufferId: GLuint;\n    FWidth: integer;\n    FSettingMatrices: boolean;\n    function GetTexture: IBGLTexture; override;\n    function GetHandle: pointer; override;\n    function GetHeight: integer; override;\n    function GetMatrix: TAffineMatrix; override;\n    function GetProjectionMatrix: TMatrix4D; override;\n    function GetWidth: integer; override;\n    procedure SetMatrix(AValue: TAffineMatrix); override;\n    procedure SetProjectionMatrix(AValue: TMatrix4D); override;\n  public\n    constructor Create(AWidth,AHeight: integer);\n    function MakeTextureAndFree: IBGLTexture; override;\n    destructor Destroy; override;\n  end;\n\nconst\n  ormRepeat = BGRAOpenGLType.ormRepeat;\n  ormMirroredRepeat = BGRAOpenGLType.ormMirroredRepeat;\n  ormClamp = BGRAOpenGLType.ormClamp;\n  orfBox = BGRAOpenGLType.orfBox;\n  orfLinear = BGRAOpenGLType.orfLinear;\n  obmNormal = BGRAOpenGLType.obmNormal;\n  obmAdd = BGRAOpenGLType.obmAdd;\n  obmMultiply = BGRAOpenGLType.obmMultiply;\n  wfgQueueAllCommands = BGRAOpenGLType.wfgQueueAllCommands;\n  wfgFinishAllCommands = BGRAOpenGLType.wfgFinishAllCommands;\n  opPoints = BGRAOpenGLType.opPoints;\n  opLineStrip = BGRAOpenGLType.opLineStrip;\n  opLineLoop = BGRAOpenGLType.opLineLoop;\n  opLines = BGRAOpenGLType.opLines;\n  opTriangleStrip = BGRAOpenGLType.opTriangleStrip;\n  opTriangleFan = BGRAOpenGLType.opTriangleFan;\n  opTriangles = BGRAOpenGLType.opTriangles;\n\ntype\n  { RGBA bitmap that can be used with OpenGL by converting it into a texture }\n  TBGLBitmap = class(TBGLCustomBitmap)\n  protected\n    class function GetOpenGLMaxTexSize: integer; override;\n  public\n    function NewBitmap: TBGLBitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer): TBGLBitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel): TBGLBitmap; overload; override;\n    function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TBGLBitmap; overload; override;\n    function NewBitmap(Filename: string): TBGLBitmap; overload; override;\n    function NewBitmap(Filename: string; AIsUtf8: boolean): TBGLBitmap; overload; override;\n    function NewBitmap(Filename: string; AIsUtf8: boolean; AOptions: TBGRALoadingOptions): TBGLBitmap; overload; override;\n    function NewBitmap(AFPImage: TFPCustomImage): TBGLBitmap; overload; override;\n    function NewReference: TBGLBitmap; override;\n    function GetUnique: TBGLBitmap; override;\n    function Duplicate(DuplicateProperties: Boolean = False): TBGLBitmap; overload; override;\n    function Duplicate(DuplicateProperties, DuplicateXorMask: Boolean) : TBGLBitmap; overload; override;\n    function GetPart(const ARect: TRect; CopyProperties: Boolean=False): TBGLBitmap; override;\n    function CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor, ABackgroundColor: TBGRAPixel;\n                AWidth: integer = 8; AHeight: integer = 8; APenWidth: single = 1): TBGLBitmap; override;\n    function Resample(newWidth, newHeight: integer;\n      mode: TResampleMode = rmFineResample; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    {$IFNDEF BGRABITMAP_CORE}\n    function FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterSmooth(ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterSharpen(Amount: single = 1; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterSharpen(ABounds: TRect; Amount: single = 1; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterPixelate(pixelSize: integer; useResample: boolean; filter: TResampleFilter = rfLinear; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterBlurRadial(const ABounds: TRect; radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterBlurRadial(radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterBlurMotion(distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterBlurMotion(const ABounds: TRect; distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterCustomBlur(const ABounds: TRect; mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterEmboss(angle: single; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterEmboss(angle: single; ABounds: TRect; AStrength: integer= 64; AOptions: TEmbossOptions = []; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterEmbossHighlight(FillSelection: boolean; BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterGrayscale(ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterNormalize(eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterNormalize(ABounds: TRect; eachChannel: boolean = True; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterRotate(origin: TPointF; angle: single; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean = false; ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterSphere(ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterTwirl(ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterTwirl(ABounds: TRect; ACenter: TPoint; ARadius: Single; ATurn: Single=1; AExponent: Single=3; ACopyProperties: Boolean=False): TBGLBitmap; overload; override;\n    function FilterCylinder(ACopyProperties: Boolean=False): TBGLBitmap; override;\n    function FilterPlane(ACopyProperties: Boolean=False): TBGLBitmap; override;\n    {$ENDIF}\n  end;\n\nfunction BGLTexture(ARGBAData: PLongWord; AllocatedWidth,AllocatedHeight, ActualWidth,ActualHeight: integer): IBGLTexture; overload;\nfunction BGLTexture(AFPImage: TFPCustomImage): IBGLTexture; overload;\nfunction BGLTexture(ABitmap: TBitmap): IBGLTexture; overload;\nfunction BGLTexture(AWidth, AHeight: integer; Color: TColor): IBGLTexture; overload;\nfunction BGLTexture(AWidth, AHeight: integer; Color: TBGRAPixel): IBGLTexture; overload;\nfunction BGLTexture(AFilenameUTF8: string; ARepeatX: TOpenGLRepeatMode = ormRepeat; ARepeatY: TOpenGLRepeatMode = ormRepeat): IBGLTexture; overload;\nfunction BGLTexture(AFilenameUTF8: string; AWidth, AHeight: integer; AResampleFilter: TResampleFilter = rfBox): IBGLTexture; overload;\nfunction BGLTexture(AStream: TStream): IBGLTexture; overload;\n\nfunction BGLSpriteEngine: TBGLCustomSpriteEngine;\n\nfunction BGLCanvas: TBGLCustomCanvas;\n\nprocedure BGLViewPort(AWidth,AHeight: integer); overload;\nprocedure BGLViewPort(AWidth,AHeight: integer; AColor: TBGRAPixel); overload;\n\nfunction BGLFont({%H-}AName: string; {%H-}AEmHeight: integer; {%H-}AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont({%H-}AName: string; {%H-}AEmHeight: integer; {%H-}AColor: TBGRAPixel; {%H-}AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont({%H-}AName: string; {%H-}AEmHeight: integer; {%H-}AColor: TBGRAPixel; {%H-}AOutlineColor: TBGRAPixel; {%H-}AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont({%H-}AName: string; {%H-}AEmHeight: integer; ARenderer: TBGRACustomFontRenderer; ARendererOwned: boolean = true): IBGLRenderedFont; overload;\n\ntype\n  { Array of elements indicated by their index }\n  TBGLElementArray = class(TBGLCustomElementArray)\n  protected\n    FElements: packed array of GLuint;\n    FBuffer: GLuint;\n    function GetCount: integer; override;\n  public\n    constructor Create(const AElements: array of integer); override;\n    procedure Draw(ACanvas: TBGLCustomCanvas; APrimitive: TOpenGLPrimitive; AAttributes: array of TAttributeVariable); override;\n    destructor Destroy; override;\n  end;\n\n  { Array in OpenGL }\n  TBGLArray = class(TBGLCustomArray)\n  protected\n    FBufferAddress: pointer;\n    FCount: integer;\n    FRecordSize: integer;\n    function GetCount: integer; override;\n    function GetRecordSize: integer; override;\n  public\n    constructor Create(ABufferAddress: Pointer; ACount: integer; ARecordSize: integer); override;\n    destructor Destroy; override;\n  end;\n\nfunction GetOpenGLVersion: integer; // major * 100 + minor\n\nimplementation\n\nuses BGRABlurGL, BGRATransform{$IFDEF BGRABITMAP_USE_LCL}, BGRAText, BGRATextFX{$ENDIF};\n\ntype\n  TBlendFuncSeparateProc = procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); {$IFDEF Windows} stdcall; {$ELSE} cdecl; {$ENDIF}\n\nfunction PrimitiveToOpenGL(AValue: TOpenGLPrimitive): GLenum;\nbegin\n  case AValue of\n    opPoints: result := GL_POINTS;\n    opLineStrip: result := GL_LINE_STRIP;\n    opLineLoop: result := GL_LINE_LOOP;\n    opLines: result := GL_LINES;\n    opTriangleStrip: result := GL_TRIANGLE_STRIP;\n    opTriangleFan: result := GL_TRIANGLE_FAN;\n    opTriangles: result := GL_TRIANGLES;\n  else\n    raise exception.Create('Unknown primitive type');\n  end;\nend;\n\nvar\n  OpenGLVersion: integer = -1; // major * 100 + minor\n\nfunction GetOpenGLVersion: integer;\nvar\n  versionStr, minorStr: string;\n  indexPoint, indexPoint2, major, minor, err: integer;\nbegin\n  if OpenGLVersion = -1 then\n  begin\n    versionStr := glGetString(GL_VERSION);\n    indexPoint := versionStr.IndexOf('.');\n    if indexPoint <> -1 then\n    begin\n      minorStr := versionStr.Substring(indexPoint + 1);\n      indexPoint2 := minorStr.IndexOf('.');\n      if indexPoint2 = -1 then indexPoint2 := length(minorStr);\n      val(minorStr.Substring(0, indexPoint2), minor, err);\n      if minor > 99 then minor := 99;\n      val(versionStr.Substring(0, indexPoint), major, err);\n    end else\n      val(versionStr, major, err);\n    OpenGLVersion := major * 100 + minor;\n  end;\n  exit(OpenGLVersion);\nend;\n\nprocedure NeedOpenGL3_0;\nbegin\n  if glGenFramebuffers = nil then\n  begin\n    if not Load_GL_version_3_0 then\n      raise exception.Create('Cannot load OpenGL 3.0');\n  end;\nend;\n\nprocedure NeedOpenGL2_0;\nbegin\n  if glUseProgram = nil then\n  begin\n    if not Load_GL_version_2_0 then\n      raise exception.Create('Cannot load OpenGL 2.0');\n  end;\nend;\n\nfunction CheckOpenGL2_0: boolean;\nbegin\n  if glUseProgram = nil then\n  begin\n    result := Load_GL_version_2_0;\n  end\n  else\n    result := true;\nend;\n\nvar\n  BGLCanvasInstance: TBGLCustomCanvas;\n  glBlendFuncSeparate: TBlendFuncSeparateProc;\n  glBlendFuncSeparateFetched: boolean;\n\nconst\n  GL_COMBINE_ARB                    = $8570;\n  GL_COMBINE_RGB_ARB                = $8571;\n  GL_SOURCE0_RGB_ARB                = $8580;\n  GL_PRIMARY_COLOR_ARB              = $8577;\n\ntype\n  { Texture to use with OpenGL (stored in VRAM) }\n  TBGLTexture = class(TBGLCustomTexture)\n  protected\n    FFlipX,FFlipY: Boolean;\n\n    class function GetOpenGLMaxTexSize: integer; override;\n    class function GetNonPowerOfTwoSizeSupport: boolean; override;\n    function CreateOpenGLTexture(ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer; RGBAOrder: boolean): TBGLTextureHandle; override;\n    procedure UpdateOpenGLTexture(ATexture: TBGLTextureHandle; ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth,AActualHeight: integer; RGBAOrder: boolean); override;\n    class function SupportsBGRAOrder: boolean; override;\n    procedure SetOpenGLTextureSize(ATexture: TBGLTextureHandle; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer); override;\n    function GetOpenGLAllocatedSize(ATexture: TBGLTextureHandle): TSize; override;\n    procedure ComputeOpenGLFramesCoord(ATexture: TBGLTextureHandle; FramesX: Integer=1; FramesY: Integer=1); override;\n    function GetOpenGLFrameCount(ATexture: TBGLTextureHandle): integer; override;\n    function GetEmptyTexture: TBGLTextureHandle; override;\n    procedure FreeOpenGLTexture(ATexture: TBGLTextureHandle); override;\n\n    function GetRepeatX: TOpenGLRepeatMode; override;\n    function GetRepeatY: TOpenGLRepeatMode; override;\n    procedure UpdateGLResampleFilter(ATexture: TBGLTextureHandle; AFilter: TOpenGLResampleFilter); override;\n\n    procedure InternalSetColor(const AColor: TBGRAPixel);\n    procedure DoDrawTriangleOrQuad(const APoints: array of TPointF;\n      const APointsZ: array of Single; const APoints3D: array of TPoint3D_128;\n      const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF;\n      const AColors: array of TColorF); override;\n    procedure DoDraw(pt1,pt2,pt3,pt4: TPointF; AColor: TBGRAPixel);\n    procedure DoStretchDraw(x,y,w,h: single; AColor: TBGRAPixel); override;\n    procedure DoStretchDrawAngle(x,y,w,h,angleDeg: single; rotationCenter: TPointF; AColor: TBGRAPixel); override;\n    procedure DoDrawAffine(Origin, HAxis, VAxis: TPointF; AColor: TBGRAPixel); override;\n    procedure Init(ATexture: TBGLTextureHandle; AWidth,AHeight: integer; AOwned: boolean); override;\n    procedure NotifyInvalidFrameSize; override;\n    procedure NotifyErrorLoadingFile(AFilenameUTF8: string); override;\n\n    function NewEmpty: TBGLCustomTexture; override;\n    function NewFromTexture(ATexture: TBGLTextureHandle; AWidth,AHeight: integer): TBGLCustomTexture; override;\n    function Duplicate: TBGLCustomTexture; override;\n\n  public\n    procedure ToggleFlipX; override;\n    procedure ToggleFlipY; override;\n    procedure SetRepetition(AValueX, AValueY: TOpenGLRepeatMode); override;\n    procedure Bind(ATextureNumber: integer); override;\n    function FilterBlurMotion(ARadius: single; ABlurType: TRadialBlurType; ADirection: TPointF): IBGLTexture; override;\n    function FilterBlurRadial(ARadius: single; ABlurType: TRadialBlurType): IBGLTexture; override;\n\n  end;\n\n  POpenGLTexture = ^TOpenGLTexture;\n  TOpenGLTexture = record\n    ID: GLuint;\n    AllocatedWidth,AllocatedHeight,ActualWidth,ActualHeight: integer;\n    FramesCoord: array of array[0..3] of TPointF;\n    RepeatX,RepeatY: TOpenGLRepeatMode;\n  end;\n\n  { Canvas for OpenGL }\n  TBGLCanvas = class(TBGLCustomCanvas)\n  protected\n    FMatrix: TAffineMatrix;\n    FProjectionMatrix: TMatrix4D;\n    FBlendMode: TOpenGLBlendMode;\n    FLighting: TBGLCustomLighting;\n    FFaceCulling: TFaceCulling;\n\n    function GetLighting: TBGLCustomLighting; override;\n\n    function GetMatrix: TAffineMatrix; override;\n    procedure SetMatrix(const AValue: TAffineMatrix); override;\n    function GetProjectionMatrix: TMatrix4D; override;\n    procedure SetProjectionMatrix(const AValue: TMatrix4D); override;\n\n    function GetFaceCulling: TFaceCulling; override;\n    procedure SetFaceCulling(AValue: TFaceCulling); override;\n\n    procedure InternalSetColor(const AColor: TBGRAPixel); override;\n    procedure InternalSetColorF(const AColor: TColorF); override;\n\n    procedure InternalStartPutPixel(const pt: TPointF); override;\n    procedure InternalStartPolyline(const pt: TPointF); override;\n    procedure InternalStartPolygon(const pt: TPointF); override;\n    procedure InternalStartTriangleFan(const pt: TPointF); override;\n    procedure InternalContinueShape(const pt: TPointF); overload; override;\n\n    procedure InternalContinueShape(const pt: TPoint3D); overload; override;\n    procedure InternalContinueShape(const pt: TPoint3D_128); overload; override;\n    procedure InternalContinueShape(const pt, normal: TPoint3D_128); overload; override;\n\n    procedure InternalEndShape; override;\n\n    procedure InternalStartBlend; override;\n    procedure InternalEndBlend; override;\n\n    procedure InternalStartBlendTriangles; override;\n    procedure InternalStartBlendQuads; override;\n    procedure InternalEndBlendTriangles; override;\n    procedure InternalEndBlendQuads; override;\n\n    procedure EnableScissor(AValue: TRect); override;\n    procedure DisableScissor; override;\n\n    function GetBlendMode: TOpenGLBlendMode; override;\n    procedure SetBlendMode(AValue: TOpenGLBlendMode); override;\n\n    procedure SetActiveFrameBuffer(AValue: TBGLCustomFrameBuffer); override;\n  public\n    destructor Destroy; override;\n    procedure Fill(AColor: TBGRAPixel); override;\n    procedure StartZBuffer; override;\n    procedure EndZBuffer; override;\n    procedure WaitForGPU(AOption: TWaitForGPUOption); override;\n    function GetImage(x, y, w, h: integer): TBGRACustomBitmap; override;\n    function CreateFrameBuffer(AWidth, AHeight: integer): TBGLCustomFrameBuffer; override;\n  end;\n\n  { Lighting for a TBGLCanvas }\n  TBGLLighting = class(TBGLCustomLighting)\n  protected\n    FLightUsage: array[0..7] of boolean;\n    FCurrentSpecularIndex: single;\n    FAmbiantLightF: TColorF;\n    FBuiltInLighting: boolean;\n    function MakeShaderObject(AShaderType: GLenum; ASource: string): GLuint;\n    function AddLight(AColor: TColorF): integer;\n    function GetSupportShaders: boolean; override;\n    procedure SetAmbiantLightF(AAmbiantLight: TColorF); override;\n    function GetAmbiantLightF: TColorF; override;\n    function GetBuiltInLightingEnabled: boolean; override;\n    procedure SetBuiltInLightingEnabled(AValue: boolean); override;\n  public\n    constructor Create;\n    function AddDirectionalLight(AColor: TColorF; ADirection: TPoint3D): integer; override;\n    function AddPointLight(AColor: TColorF; APosition: TPoint3D; ALinearAttenuation, AQuadraticAttenuation: single): integer; override;\n    procedure ClearLights; override;\n    function RemoveLight(AIndex: integer): boolean; override;\n    procedure SetSpecularIndex(AIndex: integer); override;\n\n    function MakeVertexShader(ASource: string): LongWord; override;\n    function MakeFragmentShader(ASource: string): LongWord; override;\n    function MakeShaderProgram(AVertexShader, AFragmentShader: LongWord): LongWord; override;\n    procedure UseProgram(AProgram: LongWord); override;\n    procedure DeleteShaderObject(AShader: LongWord); override;\n    procedure DeleteShaderProgram(AProgram: LongWord); override;\n    function GetUniformVariable(AProgram: LongWord; AName: string): LongWord; override;\n    function GetAttribVariable(AProgram: LongWord; AName: string): LongWord; override;\n    procedure SetUniformSingle(AVariable: LongWord; const AValue; AElementCount, AComponentCount: integer); override;\n    procedure SetUniformInteger(AVariable: LongWord; const AValue; AElementCount, AComponentCount: integer); override;\n    procedure BindAttribute(AAttribute: TAttributeVariable); override;\n    procedure UnbindAttribute(AAttribute: TAttributeVariable); override;\n  end;\n\n{ TBGLFrameBuffer }\n\nprocedure TBGLFrameBuffer.SetMatrix(AValue: TAffineMatrix);\nbegin\n  if FSettingMatrices then Exit;\n  FSettingMatrices := true;\n  FMatrix:=AValue;\n  if FCanvas <> nil then\n    TBGLCustomCanvas(FCanvas).Matrix := AValue;\n  FSettingMatrices := false;\nend;\n\nfunction TBGLFrameBuffer.GetMatrix: TAffineMatrix;\nbegin\n  result := FMatrix;\nend;\n\nfunction TBGLFrameBuffer.GetTexture: IBGLTexture;\nbegin\n  result := FTexture.FlipY;\nend;\n\nfunction TBGLFrameBuffer.GetHandle: pointer;\nbegin\n  result := @FFrameBufferId;\nend;\n\nfunction TBGLFrameBuffer.GetHeight: integer;\nbegin\n  result := FHeight;\nend;\n\nfunction TBGLFrameBuffer.GetProjectionMatrix: TMatrix4D;\nbegin\n  result := FProjectionMatrix;\nend;\n\nfunction TBGLFrameBuffer.GetWidth: integer;\nbegin\n  result := FWidth;\nend;\n\nprocedure TBGLFrameBuffer.SetProjectionMatrix(AValue: TMatrix4D);\nbegin\n  if FSettingMatrices then Exit;\n  FSettingMatrices := true;\n  FProjectionMatrix:= AValue;\n  if FCanvas <> nil then\n    TBGLCustomCanvas(FCanvas).ProjectionMatrix := AValue;\n  FSettingMatrices := false;\nend;\n\nconstructor TBGLFrameBuffer.Create(AWidth, AHeight: integer);\nvar frameBufferStatus: GLenum;\nbegin\n  NeedOpenGL3_0;\n\n  FWidth := AWidth;\n  FHeight := AHeight;\n\n  FTexture := BGLTextureFactory.Create(nil,AWidth,AHeight,AWidth,AHeight);\n\n  //depth and stencil\n  glGenRenderbuffers(1, @FRenderBufferId);\n  glBindRenderbuffer(GL_RENDERBUFFER, FRenderBufferId);\n  glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, AWidth,AHeight);\n  glBindRenderbuffer(GL_RENDERBUFFER, 0);\n\n  glGenFramebuffers(1, @FFrameBufferId);\n  glBindFramebuffer(GL_FRAMEBUFFER, FFrameBufferId);\n\n  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, PGLuint(FTexture.Handle)^, 0);\n  glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, FFrameBufferId);\n\n  frameBufferStatus:= glCheckFramebufferStatus(GL_FRAMEBUFFER);\n  glBindFramebuffer(GL_FRAMEBUFFER, 0);\n\n  if frameBufferStatus <> GL_FRAMEBUFFER_COMPLETE then\n  begin\n    glDeleteFramebuffers(1, @FFrameBufferId);\n    glDeleteRenderbuffers(1, @FRenderBufferId);\n    FTexture := nil;\n    raise exception.Create('Error ' + inttostr(frameBufferStatus) + ' while initializing frame buffer');\n  end;\n\n  UseOrthoProjection;\n  Matrix := AffineMatrixIdentity;\nend;\n\nfunction TBGLFrameBuffer.MakeTextureAndFree: IBGLTexture;\nbegin\n  result := FTexture;\n  FTexture := nil;\n  Free;\nend;\n\ndestructor TBGLFrameBuffer.Destroy;\nbegin\n  glDeleteFramebuffers(1, @FFrameBufferId);\n  glDeleteRenderbuffers(1, @FRenderBufferId);\n  FTexture := nil;\n\n  inherited Destroy;\nend;\n\nprocedure ApplyBlendMode(ABlendMode: TOpenGLBlendMode);\nvar\n  srcBlend : LongWord;\n  dstBlend : LongWord;\nbegin\n  case ABlendMode of\n    obmAdd:\n      begin\n        srcBlend := GL_SRC_ALPHA;\n        dstBlend := GL_ONE;\n      end;\n    obmMultiply:\n      begin\n        srcBlend := GL_ZERO;\n        dstBlend := GL_SRC_COLOR;\n      end\n    else\n      begin\n        srcBlend := GL_SRC_ALPHA;\n        dstBlend := GL_ONE_MINUS_SRC_ALPHA;\n      end;\n  end;\n  if not glBlendFuncSeparateFetched then\n  begin\n    glBlendFuncSeparate := TBlendFuncSeparateProc(wglGetProcAddress('glBlendFuncSeparate'));\n    glBlendFuncSeparateFetched := true;\n  end;\n  if Assigned(glBlendFuncSeparate) then\n    glBlendFuncSeparate( srcBlend, dstBlend, GL_ONE, GL_ONE_MINUS_SRC_ALPHA )\n  else\n    glBlendFunc( srcBlend, dstBlend );\nend;\n\nfunction BGLTexture(ARGBAData: PLongWord; AllocatedWidth, AllocatedHeight,\n  ActualWidth, ActualHeight: integer): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(ARGBAData,AllocatedWidth, AllocatedHeight,\n        ActualWidth, ActualHeight);\nend;\n\nfunction BGLTexture(AFPImage: TFPCustomImage): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AFPImage);\nend;\n\nfunction BGLTexture(ABitmap: TBitmap): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(ABitmap);\nend;\n\nfunction BGLTexture(AWidth, AHeight: integer; Color: TColor): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AWidth,AHeight,Color);\nend;\n\nfunction BGLTexture(AWidth, AHeight: integer; Color: TBGRAPixel): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AWidth,AHeight,Color);\nend;\n\nfunction BGLTexture(AFilenameUTF8: string; ARepeatX: TOpenGLRepeatMode;\n  ARepeatY: TOpenGLRepeatMode): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AFilenameUTF8);\n  if (ARepeatX <> ormRepeat) or (ARepeatY <> ormRepeat) then\n    result.SetRepetition(ARepeatX, ARepeatY);\nend;\n\nfunction BGLTexture(AFilenameUTF8: string; AWidth, AHeight: integer; AResampleFilter: TResampleFilter): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AFilenameUTF8, AWidth, AHeight, AResampleFilter);\nend;\n\nfunction BGLTexture(AStream: TStream): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AStream);\nend;\n\nfunction BGLSpriteEngine: TBGLCustomSpriteEngine;\nbegin\n  result := BGRASpriteGL.BGLSpriteEngine;\nend;\n\nprocedure BGLViewPort(AWidth, AHeight: integer; AColor: TBGRAPixel);\nbegin\n  BGLViewPort(AWidth,AHeight);\n  BGLCanvas.Fill(AColor);\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AStyle: TFontStyles = []): IBGLRenderedFont;\nbegin\n  {$IFDEF BGRABITMAP_USE_LCL}\n  result := BGLFont(AName, AEmHeight, TLCLFontRenderer.Create);\n  result.Style := AStyle;\n  {$ELSE}\n  result := nil;\n  raise exception.Create('LCL renderer not available');\n  {$ENDIF}\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel;\n  AStyle: TFontStyles): IBGLRenderedFont;\nbegin\n  {$IFDEF BGRABITMAP_USE_LCL}\n  result := BGLFont(AName, AEmHeight, TLCLFontRenderer.Create);\n  result.Color := AColor;\n  result.Style := AStyle;\n  {$ELSE}\n  result := nil;\n  raise exception.Create('LCL renderer not available');\n  {$ENDIF}\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel;\n  AOutlineColor: TBGRAPixel; AStyle: TFontStyles = []): IBGLRenderedFont;\n{$IFDEF BGRABITMAP_USE_LCL}\nvar renderer: TBGRATextEffectFontRenderer;\nbegin\n  renderer := TBGRATextEffectFontRenderer.Create;\n  renderer.OuterOutlineOnly:= true;\n  renderer.OutlineColor := AOutlineColor;\n  renderer.OutlineVisible := true;\n  result := BGLFont(AName, AEmHeight, renderer, true);\n  result.Color := AColor;\n  result.Style := AStyle;\nend;\n{$ELSE}\nbegin\n  result := nil;\n  raise exception.Create('LCL renderer not available');\nend;\n{$ENDIF}\n\nfunction BGLFont(AName: string; AEmHeight: integer;\n  ARenderer: TBGRACustomFontRenderer;\n  ARendererOwned: boolean): IBGLRenderedFont;\nvar f: TBGLRenderedFont;\nbegin\n  f:= TBGLRenderedFont.Create(ARenderer, ARendererOwned);\n  f.Name := AName;\n  f.EmHeight := AEmHeight;\n  result := f;\nend;\n\nfunction BGLCanvas: TBGLCustomCanvas;\nbegin\n  result := BGLCanvasInstance;\nend;\n\nprocedure BGLViewPort(AWidth, AHeight: integer);\nbegin\n  BGLCanvas.Width := AWidth;\n  BGLCanvas.Height := AHeight;\n  BGLCanvas.UseOrthoProjection;\n  BGLCanvas.Matrix := AffineMatrixIdentity;\n  BGLCanvas.FaceCulling := fcNone;\nend;\n\n{ TBGLArray }\n\nfunction TBGLArray.GetCount: integer;\nbegin\n  result := FCount;\nend;\n\nfunction TBGLArray.GetRecordSize: integer;\nbegin\n  result := FRecordSize;\nend;\n\nconstructor TBGLArray.Create(ABufferAddress: pointer; ACount: integer;\n  ARecordSize: integer);\nvar b: GLuint;\nbegin\n  NeedOpenGL2_0;\n  FBufferAddress:= ABufferAddress;\n  FCount := ACount;\n  FRecordSize:= ARecordSize;\n  glGenBuffers(1, @b);\n  FBuffer := b;\n  glBindBuffer(GL_ARRAY_BUFFER, FBuffer);\n  glBufferData(GL_ARRAY_BUFFER, FCount*FRecordSize, FBufferAddress, GL_STATIC_DRAW);\nend;\n\ndestructor TBGLArray.Destroy;\nvar b: GLuint;\nbegin\n  b := FBuffer;\n  glDeleteBuffers(1, @b);\n  inherited Destroy;\nend;\n\n{ TBGLElementArray }\n\nfunction TBGLElementArray.GetCount: integer;\nbegin\n  result := length(FElements);\nend;\n\nconstructor TBGLElementArray.Create(const AElements: array of integer);\nvar bufferSize: integer;\n  i: Int32or64;\nbegin\n  NeedOpenGL2_0;\n  setlength(FElements,length(AElements));\n  bufferSize := length(FElements)*sizeof(integer);\n  for i := 0 to high(FElements) do\n    FElements[i] := AElements[i];\n  glGenBuffers(1, @FBuffer);\n  glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, FBuffer);\n  glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufferSize, @FElements[0], GL_STATIC_DRAW);\nend;\n\nprocedure TBGLElementArray.Draw(ACanvas: TBGLCustomCanvas; APrimitive: TOpenGLPrimitive; AAttributes: array of TAttributeVariable);\nvar\n  i: Int32or64;\nbegin\n  for i := 0 to high(AAttributes) do\n    ACanvas.Lighting.BindAttribute(AAttributes[i]);\n\n  glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, FBuffer);\n  glDrawElements(PrimitiveToOpenGL(APrimitive), Count, GL_UNSIGNED_INT, nil);\n\n  for i := 0 to high(AAttributes) do\n    ACanvas.Lighting.UnbindAttribute(AAttributes[i]);\nend;\n\ndestructor TBGLElementArray.Destroy;\nbegin\n  glDeleteBuffers(1, @FBuffer);\n  inherited Destroy;\nend;\n\n{ TBGLLighting }\n\nprocedure TBGLLighting.SetAmbiantLightF(AAmbiantLight: TColorF);\nbegin\n  FAmbiantLightF := AAmbiantLight;\n  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @AAmbiantLight);\nend;\n\nconstructor TBGLLighting.Create;\nbegin\n  FAmbiantLightF := ColorF(1,1,1,1);\nend;\n\nfunction TBGLLighting.AddPointLight(AColor: TColorF; APosition: TPoint3D; ALinearAttenuation, AQuadraticAttenuation: single): integer;\nvar\n  v: TPoint3D_128;\nbegin\n  result := AddLight(AColor);\n  if result <> -1 then\n  begin\n    v := Point3D_128(APosition);\n    v.t := 1;\n    glLightfv(GL_LIGHT0 + result, GL_POSITION, @v);\n    glLightf(GL_LIGHT0 + result, GL_CONSTANT_ATTENUATION, 0);\n    glLightf(GL_LIGHT0 + result, GL_LINEAR_ATTENUATION, ALinearAttenuation);\n    glLightf(GL_LIGHT0 + result, GL_QUADRATIC_ATTENUATION, AQuadraticAttenuation);\n  end;\nend;\n\nprocedure TBGLLighting.ClearLights;\nvar\n  i: Integer;\nbegin\n  for i := 0 to High(FLightUsage) do\n    if FLightUsage[i] then\n      RemoveLight(i);\nend;\n\nfunction TBGLLighting.AddDirectionalLight(AColor: TColorF; ADirection: TPoint3D): integer;\nvar\n  v: TPoint3D_128;\nbegin\n  result := AddLight(AColor);\n  if result <> -1 then\n  begin\n    v := Point3D_128(ADirection);\n    Normalize3D_128(v);\n    v.t := 0;\n    glLightfv(GL_LIGHT0 + result, GL_POSITION, @v);\n  end;\nend;\n\nprocedure TBGLLighting.SetSpecularIndex(AIndex: integer);\nvar c: TColorF;\n  newIndex: single;\nbegin\n  newIndex := AIndex*0.5;\n  if newIndex < 0 then newIndex := 0;\n  if newIndex > 128 then newIndex := 128;\n  if newIndex <> FCurrentSpecularIndex then\n  begin\n    if newIndex = 0 then\n      c := ColorF(0,0,0,1)\n    else\n      c := ColorF(1,1,1,1);\n    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, newIndex);\n    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, @c);\n    FCurrentSpecularIndex := newIndex;\n  end;\nend;\n\nfunction TBGLLighting.MakeVertexShader(ASource: string): LongWord;\nbegin\n  result := MakeShaderObject(GL_VERTEX_SHADER, ASource);\nend;\n\nfunction TBGLLighting.MakeFragmentShader(ASource: string): LongWord;\nbegin\n  result := MakeShaderObject(GL_FRAGMENT_SHADER, ASource);\nend;\n\nfunction TBGLLighting.GetAmbiantLightF: TColorF;\nbegin\n  result := FAmbiantLightF;\nend;\n\nfunction TBGLLighting.GetBuiltInLightingEnabled: boolean;\nbegin\n  result := FBuiltInLighting;\nend;\n\nprocedure TBGLLighting.SetBuiltInLightingEnabled(AValue: boolean);\nbegin\n  if AValue = FBuiltInLighting then exit;\n  FBuiltInLighting:= AValue;\n  if AValue then\n  begin\n    glEnable(GL_LIGHTING);\n    glShadeModel(GL_SMOOTH);\n    glEnable(GL_COLOR_MATERIAL);\n    glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);\n    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @FAmbiantLightF);\n    glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);\n    glLightModelf(GL_LIGHT_MODEL_TWO_SIDE,1);\n  end else\n  begin\n    glDisable(GL_LIGHTING);\n  end;\nend;\n\nfunction TBGLLighting.MakeShaderObject(AShaderType: GLenum; ASource: string\n  ): GLuint;\nvar\n  psource: pchar;\n  sourceLen: GLint;\n  shaderId: GLuint;\n  shaderOk: GLint;\n  log: string;\n  logLen: GLint;\nbegin\n  NeedOpenGL2_0;\n\n  if ASource = '' then\n    raise exception.Create('Empty code file provided');\n\n  shaderId := glCreateShader(AShaderType);\n  psource := @ASource[1];\n  sourceLen := length(ASource);\n  glShaderSource(shaderId, 1, @psource, @sourceLen);\n  glCompileShader(shaderId);\n\n  glGetShaderiv(shaderId, GL_COMPILE_STATUS, @shaderOk);\n  if not (shaderOk <> 0) then\n  begin\n    //retrieve error log\n    glGetShaderiv(shaderId, GL_INFO_LOG_LENGTH, @logLen);\n    setlength(log, logLen);\n    if logLen > 0 then\n      glGetShaderInfoLog(shaderId, logLen, nil, @log[1]);\n\n    glDeleteShader(shaderId);\n    raise exception.Create('Failed to compile shader: ' + log);\n  end;\n  result := shaderId;\nend;\n\nfunction TBGLLighting.AddLight(AColor: TColorF): integer;\nvar\n  i: Integer;\n  black: TColorF;\nbegin\n  for i := 0 to high(FLightUsage) do\n    if not FLightUsage[i] then\n    begin\n      result := i;\n      FLightUsage[i] := true;\n      black := ColorF(0,0,0,1);\n      glLightfv(GL_LIGHT0 + i, GL_AMBIENT, @black);\n      glLightfv(GL_LIGHT0 + i, GL_DIFFUSE, @AColor);\n      glLightfv(GL_LIGHT0 + i, GL_SPECULAR, @AColor);\n      glEnable(GL_LIGHT0 + i);\n      exit;\n    end;\n  result := -1;\nend;\n\nfunction TBGLLighting.GetSupportShaders: boolean;\nbegin\n  result := CheckOpenGL2_0;\nend;\n\nfunction TBGLLighting.MakeShaderProgram(AVertexShader, AFragmentShader: LongWord): LongWord;\nvar\n  programOk: GLint;\n  shaderProgram: GLuint;\n  log: string;\n  logLen: GLint;\nbegin\n  NeedOpenGL2_0;\n\n  shaderProgram := glCreateProgram();\n  glAttachShader(shaderProgram, AVertexShader);\n  glAttachShader(shaderProgram, AFragmentShader);\n  glLinkProgram(shaderProgram);\n\n  glGetProgramiv(shaderProgram, GL_LINK_STATUS, @programOk);\n  if not (programOk <> 0) then\n  begin\n    //retrieve error log\n    glGetProgramiv(shaderProgram, GL_INFO_LOG_LENGTH, @logLen);\n    setlength(log, logLen);\n    if logLen > 0 then\n      glGetProgramInfoLog(shaderProgram, logLen, nil, @log[1]);\n\n    glDeleteProgram(shaderProgram);\n    raise exception.Create('Failed to link shader program: ' + log);\n  end;\n  result := shaderProgram;\nend;\n\nprocedure TBGLLighting.UseProgram(AProgram: LongWord);\nbegin\n  NeedOpenGL2_0;\n  glUseProgram(AProgram);\nend;\n\nprocedure TBGLLighting.DeleteShaderObject(AShader: LongWord);\nbegin\n  NeedOpenGL2_0;\n  if AShader<> 0 then\n    glDeleteShader(AShader);\nend;\n\nprocedure TBGLLighting.DeleteShaderProgram(AProgram: LongWord);\nbegin\n  NeedOpenGL2_0;\n  if AProgram<> 0 then\n    glDeleteProgram(AProgram);\nend;\n\nfunction TBGLLighting.GetUniformVariable(AProgram: LongWord; AName: string): LongWord;\nbegin\n  NeedOpenGL2_0;\n  result := glGetUniformLocation(AProgram, @AName[1]);\nend;\n\nfunction TBGLLighting.GetAttribVariable(AProgram: LongWord; AName: string): LongWord;\nbegin\n  NeedOpenGL2_0;\n  result := glGetAttribLocation(AProgram, @AName[1]);\nend;\n\nprocedure TBGLLighting.SetUniformSingle(AVariable: LongWord;\n  const AValue; AElementCount, AComponentCount: integer);\nbegin\n  NeedOpenGL2_0;\n  case AComponentCount of\n    1: glUniform1fv(AVariable, AElementCount, @AValue);\n    2: glUniform2fv(AVariable, AElementCount, @AValue);\n    3: glUniform3fv(AVariable, AElementCount, @AValue);\n    4: glUniform4fv(AVariable, AElementCount, @AValue);\n    9: glUniformMatrix3fv(AVariable, AElementCount, GL_FALSE, @AValue);\n    16: glUniformMatrix4fv(AVariable, AElementCount, GL_FALSE, @AValue);\n  else\n    raise exception.Create('Unexpected number of components');\n  end;\nend;\n\nprocedure TBGLLighting.SetUniformInteger(AVariable: LongWord;\n  const AValue; AElementCount, AComponentCount: integer);\nbegin\n  NeedOpenGL2_0;\n  case AComponentCount of\n    1: glUniform1iv(AVariable, AElementCount, @AValue);\n    2: glUniform2iv(AVariable, AElementCount, @AValue);\n    3: glUniform3iv(AVariable, AElementCount, @AValue);\n    4: glUniform4iv(AVariable, AElementCount, @AValue);\n  else\n    raise exception.Create('Unexpected number of components');\n  end;\nend;\n\nprocedure TBGLLighting.BindAttribute(AAttribute: TAttributeVariable);\nvar t: GLenum;\nbegin\n  glBindBuffer(GL_ARRAY_BUFFER, AAttribute.Source.Handle);\n  if AAttribute.IsFloat then\n    t := GL_FLOAT\n  else\n    t := GL_INT;\n  glVertexAttribPointer(AAttribute.Handle, AAttribute.VectorSize,t,GL_FALSE,\n     AAttribute.Source.RecordSize, {%H-}pointer(PtrInt(AAttribute.RecordOffset)));\n  glEnableVertexAttribArray(AAttribute.Handle);\nend;\n\nprocedure TBGLLighting.UnbindAttribute(AAttribute: TAttributeVariable);\nbegin\n  glDisableVertexAttribArray(AAttribute.Handle);\nend;\n\nfunction TBGLLighting.RemoveLight(AIndex: integer): boolean;\nbegin\n  if (AIndex >= 0) and (AIndex <= high(FLightUsage)) and\n    FLightUsage[AIndex] then\n  begin\n    glDisable(GL_LIGHT0 + AIndex);\n    FLightUsage[AIndex] := false;\n    result := true;\n  end\n  else\n    result := false;\nend;\n\n{ TBGLContext }\n\nfunction TBGLContext.GetHeight: integer;\nbegin\n  if Assigned(Canvas) then\n    result := Canvas.Height\n  else\n    result := 0;\nend;\n\nfunction TBGLContext.GetWidth: integer;\nbegin\n  if Assigned(Canvas) then\n    result := Canvas.Width\n  else\n    result := 0;\nend;\n\n{ TBGLCanvas }\n\nfunction TBGLCanvas.GetLighting: TBGLCustomLighting;\nbegin\n  if FLighting = nil then\n    FLighting := TBGLLighting.Create;\n  result := FLighting;\nend;\n\nfunction TBGLCanvas.GetMatrix: TAffineMatrix;\nbegin\n  if ActiveFrameBuffer <> nil then\n    result := ActiveFrameBuffer.Matrix\n  else\n    result := FMatrix;\nend;\n\nprocedure TBGLCanvas.SetMatrix(const AValue: TAffineMatrix);\nvar m: TMatrix4D;\nbegin\n  glMatrixMode(GL_MODELVIEW);\n  m := AffineMatrixToMatrix4D(AValue);\n  glLoadMatrixf(@m);\n\n  if ActiveFrameBuffer <> nil then\n    ActiveFrameBuffer.Matrix := AValue\n  else\n    FMatrix := AValue;\nend;\n\nfunction TBGLCanvas.GetProjectionMatrix: TMatrix4D;\nbegin\n  if ActiveFrameBuffer <> nil then\n    result := ActiveFrameBuffer.ProjectionMatrix\n  else\n    result := FProjectionMatrix;\nend;\n\nprocedure TBGLCanvas.SetProjectionMatrix(const AValue: TMatrix4D);\nbegin\n  glMatrixMode(GL_PROJECTION);\n  glLoadMatrixf(@AValue);\n  glMatrixMode(GL_MODELVIEW);\n\n  if ActiveFrameBuffer <> nil then\n    ActiveFrameBuffer.ProjectionMatrix := AValue\n  else\n    FProjectionMatrix := AValue;\nend;\n\nfunction TBGLCanvas.GetFaceCulling: TFaceCulling;\nbegin\n  result := FFaceCulling;\nend;\n\nprocedure TBGLCanvas.SetFaceCulling(AValue: TFaceCulling);\nbegin\n  if AValue = FFaceCulling then exit;\n  if FFaceCulling = fcNone then\n    glEnable(GL_CULL_FACE);\n  case AValue of\n    fcNone: glDisable(GL_CULL_FACE);\n    fcKeepCW: glFrontFace(GL_CW);\n    fcKeepCCW: glFrontFace(GL_CCW);\n  end;\n  FFaceCulling:= AValue;\nend;\n\nprocedure TBGLCanvas.InternalStartPutPixel(const pt: TPointF);\nbegin\n  glBegin(GL_POINTS);\n  glVertex2fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalStartPolyline(const pt: TPointF);\nbegin\n  glBegin(GL_LINE_STRIP);\n  glVertex2fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalStartPolygon(const pt: TPointF);\nbegin\n  glBegin(GL_LINE_LOOP);\n  glVertex2fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalStartTriangleFan(const pt: TPointF);\nbegin\n  glBegin(GL_TRIANGLE_FAN);\n  glVertex2fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalContinueShape(const pt: TPointF);\nbegin\n  glVertex2fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalContinueShape(const pt: TPoint3D);\nbegin\n  glVertex3fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalContinueShape(const pt: TPoint3D_128);\nbegin\n  glVertex3fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalContinueShape(const pt, normal: TPoint3D_128);\nbegin\n  glNormal3fv(@normal);\n  glVertex3fv(@pt);\nend;\n\nprocedure TBGLCanvas.InternalEndShape;\nbegin\n  glEnd();\nend;\n\nprocedure TBGLCanvas.InternalSetColor(const AColor: TBGRAPixel);\nbegin\n  {$PUSH}{$WARNINGS OFF}\n  if TBGRAPixel_RGBAOrder then\n    glColor4ubv(@AColor)\n  else\n    glColor4ub(AColor.red,AColor.green,AColor.blue,AColor.alpha);\n  {$POP}\nend;\n\nprocedure TBGLCanvas.InternalSetColorF(const AColor: TColorF);\nbegin\n  glColor4fv(@AColor[1]);\nend;\n\nprocedure TBGLCanvas.InternalStartBlend;\nbegin\n  glEnable(GL_BLEND);\n  ApplyBlendMode(BlendMode);\nend;\n\nprocedure TBGLCanvas.InternalEndBlend;\nbegin\n  glDisable(GL_BLEND);\nend;\n\nprocedure TBGLCanvas.InternalStartBlendTriangles;\nbegin\n  InternalStartBlend;\n  glBegin(GL_TRIANGLES);\nend;\n\nprocedure TBGLCanvas.InternalStartBlendQuads;\nbegin\n  InternalStartBlend;\n  glBegin(GL_QUADS);\nend;\n\nprocedure TBGLCanvas.InternalEndBlendTriangles;\nbegin\n  InternalEndShape;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCanvas.InternalEndBlendQuads;\nbegin\n  InternalEndShape;\n  InternalEndBlend;\nend;\n\nprocedure TBGLCanvas.Fill(AColor: TBGRAPixel);\nbegin\n  glClearColor(AColor.Red/255, AColor.green/255, AColor.blue/255, AColor.alpha/255);\n  glClear(GL_COLOR_BUFFER_BIT);\nend;\n\nprocedure TBGLCanvas.StartZBuffer;\nbegin\n  glEnable(GL_DEPTH_TEST);\n  glClear(GL_DEPTH_BUFFER_BIT);\nend;\n\nprocedure TBGLCanvas.EndZBuffer;\nbegin\n  glDisable(GL_DEPTH_TEST);\nend;\n\nprocedure TBGLCanvas.WaitForGPU(AOption: TWaitForGPUOption);\nbegin\n  case AOption of\n    wfgQueueAllCommands: glFlush;\n    wfgFinishAllCommands: glFinish;\n  end;\nend;\n\nfunction TBGLCanvas.GetImage(x, y, w, h: integer): TBGRACustomBitmap;\nbegin\n  NeedOpenGL2_0;\n  result := BGRABitmapFactory.Create(w,h);\n  {$PUSH}{$WARNINGS OFF}\n  if TBGRAPixel_RGBAOrder then\n    glReadPixels(x,self.Height-y-h, w,h, GL_RGBA, GL_UNSIGNED_BYTE, result.Data)\n  else\n    glReadPixels(x,self.Height-y-h, w,h, GL_BGRA, GL_UNSIGNED_BYTE, result.Data);\n  {$POP}\nend;\n\nfunction TBGLCanvas.CreateFrameBuffer(AWidth, AHeight: integer): TBGLCustomFrameBuffer;\nbegin\n  Result:= TBGLFrameBuffer.Create(AWidth,AHeight);\nend;\n\nprocedure TBGLCanvas.EnableScissor(AValue: TRect);\nbegin\n  glScissor(AValue.left,Height-AValue.bottom,AValue.right-AValue.left,AValue.Bottom-AValue.Top);\n  glEnable(GL_SCISSOR_TEST);\nend;\n\nprocedure TBGLCanvas.DisableScissor;\nbegin\n  glDisable(GL_SCISSOR_TEST);\nend;\n\nfunction TBGLCanvas.GetBlendMode: TOpenGLBlendMode;\nbegin\n  result := FBlendMode;\nend;\n\nprocedure TBGLCanvas.SetBlendMode(AValue: TOpenGLBlendMode);\nbegin\n  FBlendMode := AValue;\nend;\n\nprocedure TBGLCanvas.SetActiveFrameBuffer(AValue: TBGLCustomFrameBuffer);\nvar\n  m: TMatrix4D;\nbegin\n  if AValue = ActiveFrameBuffer then exit;\n  inherited SetActiveFrameBuffer(AValue);\n  if AValue = nil then\n    glBindFramebuffer(GL_FRAMEBUFFER, 0)\n  else\n    glBindFramebuffer(GL_FRAMEBUFFER, PGLuint(AValue.Handle)^);\n\n  glViewPort(0,0,Width,Height);\n\n  glMatrixMode(GL_PROJECTION);\n  m := ProjectionMatrix;\n  glLoadMatrixf(@m);\n\n  glMatrixMode(GL_MODELVIEW);\n  m := AffineMatrixToMatrix4D(Matrix);\n  glLoadMatrixf(@m);\nend;\n\ndestructor TBGLCanvas.Destroy;\nbegin\n  FLighting.Free;\n  inherited Destroy;\nend;\n\n{ TBGLTexture }\n\nclass function TBGLTexture.GetOpenGLMaxTexSize: integer;\nbegin\n  result := 0;\n  glGetIntegerv( GL_MAX_TEXTURE_SIZE, @result );\nend;\n\nclass function TBGLTexture.GetNonPowerOfTwoSizeSupport: boolean;\nbegin\n  result := GetOpenGLVersion >= 200;\nend;\n\nfunction TBGLTexture.CreateOpenGLTexture(ARGBAData: PLongWord;\n  AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer;\n  RGBAOrder: boolean): TBGLTextureHandle;\nvar p: POpenGLTexture;\n  providedFormat: GLenum;\nbegin\n  if RGBAOrder then providedFormat:= GL_RGBA else providedFormat:= GL_BGRA;\n  New(p);\n  p^.AllocatedWidth := AAllocatedWidth;\n  p^.AllocatedHeight := AAllocatedHeight;\n  p^.ActualWidth := AActualWidth;\n  p^.ActualHeight := AActualHeight;\n  p^.RepeatX := ormRepeat;\n  p^.RepeatY := ormRepeat;\n\n  glGenTextures( 1, @p^.ID );\n  glBindTexture( GL_TEXTURE_2D, p^.ID );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );\n  glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, AAllocatedWidth, AAllocatedHeight, 0, providedFormat, GL_UNSIGNED_BYTE, ARGBAData );\n  result := p;\nend;\n\nprocedure TBGLTexture.UpdateOpenGLTexture(ATexture: TBGLTextureHandle;\n  ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth,\n  AActualHeight: integer; RGBAOrder: boolean);\nvar providedFormat: GLenum;\nbegin\n  if RGBAOrder then providedFormat:= GL_RGBA else providedFormat:= GL_BGRA;\n  SetOpenGLTextureSize(ATexture, AAllocatedWidth,AAllocatedHeight, AActualWidth,AActualHeight);\n  glBindTexture( GL_TEXTURE_2D, TOpenGLTexture(ATexture^).ID );\n  glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, AAllocatedWidth, AAllocatedHeight, 0, providedFormat, GL_UNSIGNED_BYTE, ARGBAData );\nend;\n\nclass function TBGLTexture.SupportsBGRAOrder: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TBGLTexture.SetOpenGLTextureSize(ATexture: TBGLTextureHandle;\n  AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer);\nbegin\n  with TOpenGLTexture(ATexture^) do\n  begin\n    ActualWidth := AActualWidth;\n    ActualHeight:= AActualHeight;\n    AllocatedWidth := AAllocatedWidth;\n    AllocatedHeight := AAllocatedHeight;\n  end;\nend;\n\nfunction TBGLTexture.GetOpenGLAllocatedSize(ATexture: TBGLTextureHandle): TSize;\nbegin\n  if ATexture = nil then exit(Size(0, 0));\n  with TOpenGLTexture(ATexture^) do\n    result := Size(AllocatedWidth, AllocatedHeight);\nend;\n\nprocedure TBGLTexture.ComputeOpenGLFramesCoord(ATexture: TBGLTextureHandle;\n  FramesX: Integer; FramesY: Integer);\nvar U,V: Single;\n  tX, tY, fU, fV : Single;\n  ix,iy,i: Integer;\nbegin\n  with TOpenGLTexture(ATexture^) do\n  begin\n    if AllocatedWidth = 0 then\n      U := 1\n    else\n      U := ActualWidth/AllocatedWidth;\n    if AllocatedHeight = 0 then\n      V := 1\n    else\n      V := ActualHeight/AllocatedHeight;\n\n    if FramesX < 1 then FramesX := 1;\n    if FramesY < 1 then FramesY := 1;\n\n    SetLength( FramesCoord, FramesX * FramesY + 1 );\n    fU := U / FramesX;\n    fV := V / FramesY;\n\n    FramesCoord[ 0, 0 ].X := 0;\n    FramesCoord[ 0, 0 ].Y := 0;\n    FramesCoord[ 0, 1 ].X := U;\n    FramesCoord[ 0, 1 ].Y := 0;\n    FramesCoord[ 0, 2 ].X := U;\n    FramesCoord[ 0, 2 ].Y := V;\n    FramesCoord[ 0, 3 ].X := 0;\n    FramesCoord[ 0, 3 ].Y := V;\n\n    ix := 1;\n    iy := 1;\n    for i := 1 to FramesX * FramesY do\n      begin\n        tX := ix * fU;\n        tY := iy * fV;\n\n        FramesCoord[ i, 0 ].X := tX - fU;\n        FramesCoord[ i, 0 ].Y := tY - fV;\n\n        FramesCoord[ i, 1 ].X := tX;\n        FramesCoord[ i, 1 ].Y := tY - fV;\n\n        FramesCoord[ i, 2 ].X := tX;\n        FramesCoord[ i, 2 ].Y := tY;\n\n        FramesCoord[ i, 3 ].X := tX - fU;\n        FramesCoord[ i, 3 ].Y := tY;\n\n        inc(ix);\n        if ix > FramesX then\n        begin\n          ix := 1;\n          inc(iy);\n        end;\n      end;\n\n  end;\nend;\n\nfunction TBGLTexture.GetOpenGLFrameCount(ATexture: TBGLTextureHandle): integer;\nbegin\n  if ATexture = nil then\n    result := 0\n  else\n  begin\n    result := Length(TOpenGLTexture(ATexture^).FramesCoord);\n    if result > 0 then dec(result); //first frame is whole picture\n  end;\nend;\n\nfunction TBGLTexture.GetEmptyTexture: TBGLTextureHandle;\nbegin\n  result := nil;\nend;\n\nprocedure TBGLTexture.FreeOpenGLTexture(ATexture: TBGLTextureHandle);\nbegin\n  glDeleteTextures( 1, @TOpenGLTexture(ATexture^).ID );\n  Dispose(POpenGLTexture(ATexture));\nend;\n\nfunction TBGLTexture.GetRepeatX: TOpenGLRepeatMode;\nbegin\n  result := TOpenGLTexture(FOpenGLTexture^).RepeatX;\nend;\n\nfunction TBGLTexture.GetRepeatY: TOpenGLRepeatMode;\nbegin\n  result := TOpenGLTexture(FOpenGLTexture^).RepeatY;\nend;\n\nprocedure TBGLTexture.SetRepetition(AValueX, AValueY: TOpenGLRepeatMode);\n  function RepeatModeToGL(AValue: TOpenGLRepeatMode): integer;\n  begin\n    case AValue of\n      ormMirroredRepeat: result := GL_MIRRORED_REPEAT;\n      ormClamp: result := GL_CLAMP_TO_EDGE;\n      else\n        result := GL_REPEAT;\n    end;\n  end;\nbegin\n  TOpenGLTexture(FOpenGLTexture^).RepeatX := AValueX;\n  TOpenGLTexture(FOpenGLTexture^).RepeatY := AValueY;\n  glBindTexture( GL_TEXTURE_2D, TOpenGLTexture(FOpenGLTexture^).ID );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, RepeatModeToGL(AValueX) );\n  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, RepeatModeToGL(AValueY) );\nend;\n\nprocedure TBGLTexture.UpdateGLResampleFilter(ATexture: TBGLTextureHandle;\n  AFilter: TOpenGLResampleFilter);\nbegin\n  glBindTexture( GL_TEXTURE_2D, TOpenGLTexture(ATexture^).ID );\n  if AFilter = orfLinear then\n  begin\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );\n  end else\n  begin\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );\n  end;\nend;\n\nprocedure TBGLTexture.InternalSetColor(const AColor: TBGRAPixel);\nbegin\n  {$PUSH}{$WARNINGS OFF}\n  if TBGRAPixel_RGBAOrder then\n    glColor4ubv(@AColor)\n  else\n    glColor4ub(AColor.red,AColor.green,AColor.blue,AColor.alpha);\n  {$POP}\nend;\n\nprocedure TBGLTexture.DoDrawTriangleOrQuad(const APoints: array of TPointF;\n  const APointsZ: array of Single; const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF;\n  const AColors: array of TColorF);\nvar\n  i: Integer;\n  factorX,factorY: single;\nbegin\n  if (FOpenGLTexture = nil) or (Width = 0) or (Height = 0) then exit;\n  with TOpenGLTexture(FOpenGLTexture^) do\n  begin\n    glEnable( GL_BLEND );\n\n    glEnable( GL_TEXTURE_2D );\n    glBindTexture( GL_TEXTURE_2D, ID );\n\n    if FIsMask then\n    begin\n      glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB );\n      glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB,  GL_REPLACE );\n      glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB,  GL_PRIMARY_COLOR_ARB );\n    end else\n      glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );\n\n    ApplyBlendMode(BlendMode);\n\n    factorX := 1/Width;\n    factorY := 1/Height;\n\n    if length(AColors) = 0 then\n      glColor4f(1,1,1,1);\n\n    if length(APoints3D) <> 0 then\n    begin\n      if length(APoints3D) = 3 then\n        glBegin( GL_TRIANGLES )\n      else\n        glBegin( GL_QUADS );\n\n      for i := 0 to high(APoints3D) do\n      begin\n        if length(AColors) <> 0 then glColor4fv( @AColors[i] );\n        glTexCoord2f( (ATexCoords[i].x+0.5)*factorX, (ATexCoords[i].y+0.5)*factorY );\n        if length(ANormals3D) <> 0 then glNormal3fv( @ANormals3D[i] );\n        glVertex3fv( @APoints3D[i] );\n      end;\n    end else\n    begin\n      if length(APoints) = 3 then\n        glBegin( GL_TRIANGLES )\n      else\n        glBegin( GL_QUADS );\n\n      if length(APointsZ) <> 0 then\n      begin\n        for i := 0 to high(APoints) do\n        begin\n          if length(AColors) <> 0 then glColor4fv( @AColors[i] );\n          glTexCoord2f( (ATexCoords[i].x+0.5)*factorX, (ATexCoords[i].y+0.5)*factorY );\n          if length(ANormals3D) <> 0 then glNormal3fv( @ANormals3D[i] );\n          glVertex3f( APoints[i].x, APoints[i].y, APointsZ[i] );\n        end;\n      end else\n      begin\n        for i := 0 to high(APoints) do\n        begin\n          if length(AColors) <> 0 then glColor4fv( @AColors[i] );\n          glTexCoord2f( (ATexCoords[i].x+0.5)*factorX, (ATexCoords[i].y+0.5)*factorY );\n          if length(ANormals3D) <> 0 then glNormal3fv( @ANormals3D[i] );\n          glVertex2fv( @APoints[i] );\n        end;\n      end;\n    end;\n\n    glEnd;\n    glDisable( GL_TEXTURE_2D );\n    glDisable( GL_BLEND );\n  end;\nend;\n\nprocedure TBGLTexture.DoDraw(pt1, pt2, pt3, pt4: TPointF; AColor: TBGRAPixel);\ntype\n  TTexCoordIndex = array[0..3] of integer;\nconst\n  FLIP_TEXCOORD : array[ 0..3 ] of TTexCoordIndex = ( ( 0, 1, 2, 3 ), ( 1, 0, 3, 2 ), ( 3, 2, 1, 0 ), ( 2, 3, 0, 1 ) );\nvar\n  coordFlip: TTexCoordIndex;\nbegin\n  if (FOpenGLTexture = nil) or (FFrame < 0) or (FFrame > FrameCount) then exit;\n  with TOpenGLTexture(FOpenGLTexture^) do\n  begin\n    glEnable( GL_BLEND );\n    glEnable( GL_TEXTURE_2D );\n    glBindTexture( GL_TEXTURE_2D, ID );\n\n    if FIsMask then\n    begin\n      glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB );\n      glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB,  GL_REPLACE );\n      glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB,  GL_PRIMARY_COLOR_ARB );\n    end else\n      glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );\n\n    ApplyBlendMode(BlendMode);\n\n    coordFlip := FLIP_TEXCOORD[ Integer(FFlipX) + Integer(FFlipY)*2 ];\n\n    glBegin( GL_QUADS );\n\n    if GradientColors then\n      InternalSetColor(FGradTopLeft)\n    else\n      InternalSetColor(AColor);\n\n    glTexCoord2fv( @FramesCoord[FFrame,coordFlip[0]] );\n    glVertex2fv( @pt1 );\n\n    if GradientColors then\n      InternalSetColor(FGradTopRight);\n\n    glTexCoord2fv( @FramesCoord[FFrame,coordFlip[1]] );\n    glVertex2fv( @pt2 );\n\n    if GradientColors then\n      InternalSetColor(FGradBottomRight);\n\n    glTexCoord2fv( @FramesCoord[FFrame,coordFlip[2]] );\n    glVertex2fv( @pt3 );\n\n    if GradientColors then\n      InternalSetColor(FGradBottomLeft);\n\n    glTexCoord2fv( @FramesCoord[FFrame,coordFlip[3]] );\n    glVertex2fv( @pt4 );\n\n    glEnd;\n    glDisable( GL_TEXTURE_2D );\n    glDisable( GL_BLEND );\n  end;\nend;\n\nprocedure TBGLTexture.DoStretchDraw(x, y, w, h: single; AColor: TBGRAPixel);\nbegin\n  DoDraw(PointF(x, y), PointF(x+w, y), PointF(x+w, y+h), PointF(x, y+h), AColor);\nend;\n\nprocedure TBGLTexture.DoStretchDrawAngle(x, y, w, h, angleDeg: single;\n  rotationCenter: TPointF; AColor: TBGRAPixel);\nvar\n  m : TAffineMatrix;\nbegin\n  m := AffineMatrixTranslation(rotationCenter.X,rotationCenter.Y)*\n       AffineMatrixRotationDeg(angleDeg)*\n       AffineMatrixTranslation(-rotationCenter.X,-rotationCenter.Y);\n  DoDraw(m*PointF(x, y), m*PointF(x+w, y), m*PointF(x+w, y+h), m*PointF(x, y+h), AColor);\nend;\n\nprocedure TBGLTexture.DoDrawAffine(Origin, HAxis, VAxis: TPointF;\n  AColor: TBGRAPixel);\nbegin\n  DoDraw(Origin, HAxis, HAxis+(VAxis-Origin), VAxis, AColor);\nend;\n\nprocedure TBGLTexture.ToggleFlipX;\nbegin\n  FFlipX := not FFlipX;\nend;\n\nprocedure TBGLTexture.ToggleFlipY;\nbegin\n  FFlipY := not FFlipY;\nend;\n\nprocedure TBGLTexture.Bind(ATextureNumber: integer);\nbegin\n  if (ATextureNumber < 0) or (ATextureNumber > 31) then\n    raise exception.Create('Texture number out of bounds');\n  if (glActiveTexture = nil) then\n  begin\n    if not Load_GL_version_1_3 then\n      raise exception.Create('Cannot load OpenGL 1.3');\n  end;\n  glActiveTexture(GL_TEXTURE0 + ATextureNumber);\n  glBindTexture(GL_TEXTURE_2D, POpenGLTexture(FOpenGLTexture)^.ID);\n  if ATextureNumber<>0 then\n    glActiveTexture(GL_TEXTURE0);\nend;\n\nfunction TBGLTexture.FilterBlurMotion(ARadius: single; ABlurType: TRadialBlurType; ADirection: TPointF): IBGLTexture;\nvar shader: TBGLCustomShader;\n  blurName: string;\nbegin\n  blurName := 'TBGLBlurShader(' + RadialBlurTypeToStr[ABlurType] + ')';\n  shader := BGLCanvas.Lighting.Shader[blurName];\n  if shader = nil then\n  begin\n    shader := TBGLBlurShader.Create(BGLCanvas, ABlurType);\n    BGLCanvas.Lighting.Shader[blurName] := shader;\n  end;\n  with (shader as TBGLBlurShader) do\n  begin\n    Radius := ARadius;\n    Direction := ADirection;\n    result := FilterBlurMotion(self);\n  end;\nend;\n\nfunction TBGLTexture.FilterBlurRadial(ARadius: single; ABlurType: TRadialBlurType): IBGLTexture;\nvar shader: TBGLCustomShader;\n  blurName: String;\nbegin\n  blurName := 'TBGLBlurShader(' + RadialBlurTypeToStr[ABlurType] + ')';\n  shader := BGLCanvas.Lighting.Shader[blurName];\n  if shader = nil then\n  begin\n    shader := TBGLBlurShader.Create(BGLCanvas, ABlurType);\n    BGLCanvas.Lighting.Shader[blurName] := shader;\n  end;\n  with (shader as TBGLBlurShader) do\n  begin\n    Radius := ARadius;\n    result := FilterBlurRadial(self);\n  end;\nend;\n\nprocedure TBGLTexture.Init(ATexture: TBGLTextureHandle; AWidth,\n  AHeight: integer; AOwned: boolean);\nbegin\n  inherited Init(ATexture, AWidth, AHeight, AOwned);\n  FFlipX := false;\n  FFlipY := false;\n  FBlendMode := obmNormal;\nend;\n\nprocedure TBGLTexture.NotifyInvalidFrameSize;\nbegin\n  raise exception.Create('Invalid frame size');\nend;\n\nprocedure TBGLTexture.NotifyErrorLoadingFile(AFilenameUTF8: string);\nbegin\n  raise exception.Create('Error loading file \"'+AFilenameUTF8+'\"');\nend;\n\nfunction TBGLTexture.NewEmpty: TBGLCustomTexture;\nbegin\n  result := TBGLTexture.Create;\nend;\n\nfunction TBGLTexture.NewFromTexture(ATexture: TBGLTextureHandle; AWidth,\n  AHeight: integer): TBGLCustomTexture;\nbegin\n  result := TBGLTexture.Create(ATexture,AWidth,AHeight);\nend;\n\nfunction TBGLTexture.Duplicate: TBGLCustomTexture;\nbegin\n  Result:= inherited Duplicate;\n  TBGLTexture(result).FFlipX := FFlipX;\n  TBGLTexture(result).FFlipY := FFlipY;\nend;\n\n{ TBGLBitmap }\n\nclass function TBGLBitmap.GetOpenGLMaxTexSize: integer;\nbegin\n  result := TBGLTexture.GetOpenGLMaxTexSize;\nend;\n\nfunction TBGLBitmap.NewBitmap: TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(AWidth, AHeight: integer): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(AWidth, AHeight: integer; const Color: TBGRAPixel\n  ): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, Color) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(AWidth, AHeight: integer; AColor: Pointer\n  ): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(AWidth, AHeight, AColor) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(Filename: string): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(Filename) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(Filename: string; AIsUtf8: boolean): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(Filename, AIsUtf8) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(Filename: string; AIsUtf8: boolean;\n  AOptions: TBGRALoadingOptions): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(Filename, AIsUtf8, AOptions) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewBitmap(AFPImage: TFPCustomImage): TBGLBitmap;\nbegin\n  Result:=inherited NewBitmap(AFPImage) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.NewReference: TBGLBitmap;\nbegin\n  Result:=inherited NewReference as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.GetUnique: TBGLBitmap;\nbegin\n  Result:=inherited GetUnique as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.Duplicate(DuplicateProperties: Boolean): TBGLBitmap;\nbegin\n  Result:=inherited Duplicate(DuplicateProperties) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.Duplicate(DuplicateProperties, DuplicateXorMask: Boolean): TBGLBitmap;\nbegin\n  Result:=inherited Duplicate(DuplicateProperties, DuplicateXorMask) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.GetPart(const ARect: TRect; CopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited GetPart(ARect, CopyProperties) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor,\n  ABackgroundColor: TBGRAPixel; AWidth: integer; AHeight: integer;\n  APenWidth: single): TBGLBitmap;\nbegin\n  Result:=inherited CreateBrushTexture(ABrushStyle, APatternColor,\n    ABackgroundColor, AWidth, AHeight, APenWidth) as TBGLBitmap;\nend;\n\nfunction TBGLBitmap.Resample(newWidth, newHeight: integer; mode: TResampleMode; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited Resample(newWidth, newHeight, mode, ACopyProperties) as TBGLBitmap;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterSmartZoom3(Option: TMedianOption; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterSmartZoom3(Option, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterMedian(Option: TMedianOption; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterMedian(Option, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterSmooth(ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterSmooth(ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterSharpen(Amount: single; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterSharpen(Amount, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterSharpen(ABounds: TRect; Amount: single; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterSharpen(ABounds, Amount, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterContour(AGammaCorrection: boolean = false; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterContour(AGammaCorrection, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterPixelate(pixelSize: integer; useResample: boolean;\n  filter: TResampleFilter; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterPixelate(pixelSize, useResample, filter, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurRadial(radius, blurType, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurRadial(const ABounds: TRect; radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radius, blurType, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurRadial(radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurRadial(radiusX, radiusY, blurType, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurRadial(const ABounds: TRect; radiusX,\n  radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurRadial(ABounds, radiusX, radiusY, blurType, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurMotion(distance: single; angle: single;\n  oriented: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurMotion(distance, angle, oriented, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterBlurMotion(const ABounds: TRect; distance: single;\n  angle: single; oriented: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterBlurMotion(ABounds, distance, angle, oriented, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterCustomBlur(mask, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterCustomBlur(const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterCustomBlur(ABounds, mask, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterEmboss(angle: single; AStrength: integer;\n  AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterEmboss(angle, AStrength, AOptions, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterEmboss(angle: single; ABounds: TRect;\n  AStrength: integer; AOptions: TEmbossOptions; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterEmboss(angle, ABounds, AStrength, AOptions, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterEmbossHighlight(FillSelection: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, BorderColor, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterEmbossHighlight(FillSelection: boolean;\n  BorderColor: TBGRAPixel; var Offset: TPoint; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterEmbossHighlight(FillSelection, BorderColor, Offset, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterGrayscale(ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterGrayscale(ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterGrayscale(ABounds: TRect; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterGrayscale(ABounds, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterNormalize(eachChannel: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterNormalize(eachChannel, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterNormalize(ABounds: TRect; eachChannel: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterNormalize(ABounds, eachChannel, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterRotate(origin: TPointF; angle: single;\n  correctBlur: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterRotate(origin, angle, correctBlur, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterAffine(AMatrix: TAffineMatrix; correctBlur: boolean; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterAffine(AMatrix, correctBlur, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterSphere(ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterSphere(ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterTwirl(ACenter: TPoint; ARadius: Single;\n  ATurn: Single; AExponent: Single; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterTwirl(ACenter, ARadius, ATurn, AExponent, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterTwirl(ABounds: TRect; ACenter: TPoint;\n  ARadius: Single; ATurn: Single; AExponent: Single; ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterTwirl(ABounds, ACenter, ARadius, ATurn, AExponent, ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterCylinder(ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterCylinder(ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TBGLBitmap.FilterPlane(ACopyProperties: Boolean=False): TBGLBitmap;\nbegin\n  Result:=inherited FilterPlane(ACopyProperties) as TBGLBitmap;\nend;{$ENDIF}\n\ninitialization\n\n  BGLBitmapFactory := TBGLBitmap;\n  BGLTextureFactory := TBGLTexture;\n  BGRASpriteGL.BGLSpriteEngine := TBGLDefaultSpriteEngine.Create;\n  BGLCanvasInstance := TBGLCanvas.Create;\n\nfinalization\n\n  BGLCanvasInstance.Free;\n  BGLCanvasInstance := nil;\n  BGRASpriteGL.BGLSpriteEngine.Free;\n  BGRASpriteGL.BGLSpriteEngine := nil;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraopengl3d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ 3D rendering of TCustomRenderer3D scences in OpenGL }\nunit BGRAOpenGL3D;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses BGRABitmapTypes,\n  BGRASceneTypes, BGRASSE,\n  BGRAClasses, BGRAMatrix3D,\n  BGRACanvasGL,\n  BGRAScene3D,\n  BGRAOpenGLType,\n  BGRATransform,\n  BGRARenderer3D;\n\ntype\n  TAttributeVariable = BGRACanvasGL.TAttributeVariable;\n\n  TBGLShader3D = class;\n\n  { Lighting for 3D scene }\n  TBGLLighting3D = class\n  private\n    procedure SetUseBuiltIn(AValue: boolean);\n  protected\n    FCanvas: TBGLCustomCanvas;\n    FLights: TList;\n    FAmbiantLight: TColorF;\n    FShaderLightingCode: string;\n    FUseBuiltIn: boolean;\n    procedure Init;\n  public\n    constructor Create(ACanvas: TBGLCustomCanvas; AAmbiantLight: TColorF; ALights: TList);\n    procedure SetSpecularIndex(AIndex: Integer);\n    destructor Destroy; override;\n    property ShaderLightingCode: string read FShaderLightingCode;\n    property UseOpenGLBuiltInLighting: boolean read FUseBuiltIn write SetUseBuiltIn;\n  end;\n\n  { Renderer of 3D scenes using OpenGL }\n  TBGLRenderer3D = class(TCustomRenderer3D)\n  protected\n    FCanvas: TBGLCustomCanvas;\n    FHasZBuffer: Boolean;\n    FGlobalScale: single;\n    FOptions: TRenderingOptions;\n    FFactorZ, FAddZ: single;\n    FLightingGL: TBGLLighting3D;\n    FLights: TList;\n    FAmbiantLight: TColorF;\n    FFar: single;\n    FOldCulling: TFaceCulling;\n    FOldMatrix: TAffineMatrix;\n    FOldProjection, FProjectionMatrix: TMatrix4D;\n    FShader, FShaderWithTexture: TBGLCustomShader;\n    FBGRAShader: TBGRAShader3D;\n    FShadedColorsF: array of TColorF;\n    FShadedColors: array of TBGRAPixel;\n    function GetHasZBuffer: boolean; override;\n    function GetGlobalScale: single; override;\n    function GetSurfaceWidth: integer; override;\n    function GetSurfaceHeight: integer; override;\n    procedure SetProjection(const AValue: TProjection3D); override;\n    function GetHandlesNearClipping: boolean; override;\n    function GetHandlesFaceCulling: boolean; override;\n    procedure InitLighting(AUseOpenGLBuiltInLighting: boolean);\n  public\n    constructor Create(ACanvas: TBGLCustomCanvas;\n      AScene: TBGRAScene3D; AFar: single);\n    function RenderFace(var ADescription: TFaceRenderingDescription;\n      {%H-}AComputeCoordinate: TComputeProjectionFunc): boolean; override;\n    destructor Destroy; override;\n    property Canvas: TBGLCustomCanvas read FCanvas;\n  end;\n\n  { 3D scene rendered with OpenGL }\n  TBGLScene3D = class(TBGRAScene3D)\n  protected\n    function LoadBitmapFromFileUTF8(AFilenameUTF8: string): TBGRACustomBitmap; override;\n  public\n    procedure RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single = 1000); virtual;\n  end;\n\n  { Uniform variable in shader (constant for one primitve) }\n  TUniformVariable = object\n  private\n    FProgram: TBGLShader3D;\n    FVariable: LongWord;\n    procedure Init(AProgram: TBGLShader3D; AVariable: LongWord);\n  end;\n\n  { Uniform variable containg a floating-point value }\n  TUniformVariableSingle = object(TUniformVariable)\n  private\n    FValue: single;\n    procedure SetValue(const AValue: single);\n  public\n    procedure Update;\n    property Value: single read FValue write SetValue;\n  end;\n\n  { Uniform variable containg a 2D point }\n  TUniformVariablePointF = object(TUniformVariable)\n  private\n    FValue: TPointF;\n    procedure SetValue(const AValue: TPointF);\n  public\n    procedure Update;\n    property Value: TPointF read FValue write SetValue;\n  end;\n\n  { Uniform variable containg a 3D point }\n  TUniformVariablePoint3D = object(TUniformVariable)\n  private\n    FValue: TPoint3D;\n    procedure SetValue(const AValue: TPoint3D);\n  public\n    procedure Update;\n    property Value: TPoint3D read FValue write SetValue;\n  end;\n\n  { Uniform variable containg a color }\n  TUniformVariableColor = object(TUniformVariable)\n  private\n    FValue: TColorF;\n    procedure SetValue(const AValue: TColorF);\n  public\n    procedure Update;\n    property Value: TColorF read FValue write SetValue;\n  end;\n\n  { Uniform variable containg an integer }\n  TUniformVariableInteger = object(TUniformVariable)\n  private\n    FValue: Integer;\n    procedure SetValue(const AValue: Integer);\n  public\n    procedure Update;\n    property Value: Integer read FValue write SetValue;\n  end;\n\n  { Uniform variable containg a 2D point with integer coordinates }\n  TUniformVariablePoint = object(TUniformVariable)\n  private\n    FValue: TPoint;\n    procedure SetValue(const AValue: TPoint);\n  public\n    procedure Update;\n    property Value: TPoint read FValue write SetValue;\n  end;\n\n  { Uniform variable containg a 4D matrix }\n  TUniformVariableMatrix4D = object(TUniformVariable)\n  private\n    FValue: TMatrix4D;\n    procedure SetValue(const AValue: TMatrix4D);\n  public\n    procedure Update;\n    property Value: TMatrix4D read FValue write SetValue;\n  end;\n\n  { Attribute variable containg a floating-point value }\n  TAttributeVariableSingle = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Attribute variable containg a 2D point }\n\n  TAttributeVariablePointF = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Attribute variable containg a 3D point }\n  TAttributeVariablePoint3D = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Attribute variable containg a color }\n  TAttributeVariableColor = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Attribute variable containg an integer }\n  TAttributeVariableInteger = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Attribute variable containg a 2D point with integer coordinates }\n  TAttributeVariablePoint = object(TAttributeVariable)\n  protected\n    procedure Init(AProgram: TObject; AAttribute: LongWord);\n  end;\n\n  { Shader for 3D polygons }\n  TBGLShader3D = class(TBGLCustomShader)\n  protected\n    FUsed: boolean;\n    FCanvas: TBGLCustomCanvas;\n    FLighting: TBGLCustomLighting;\n    FVertexShaderSource,\n    FFragmentShaderSource: string;\n    FVertexShader,\n    FFragmentShader,\n    FProgram: LongWord;\n    function GetUniformVariableInteger(AName: string): TUniformVariableInteger;\n    function GetUniformVariablePoint(AName: string): TUniformVariablePoint;\n    function GetUniformVariableSingle(AName: string): TUniformVariableSingle;\n    function GetUniformVariablePointF(AName: string): TUniformVariablePointF;\n    function GetUniformVariablePoint3D(AName: string): TUniformVariablePoint3D;\n    function GetUniformVariableColor(AName: string): TUniformVariableColor;\n    function GetUniformVariableMatrix4D(AName: string): TUniformVariableMatrix4D;\n    function GetAttributeVariableInteger(AName: string): TAttributeVariableInteger;\n    function GetAttributeVariablePoint(AName: string): TAttributeVariablePoint;\n    function GetAttributeVariableSingle(AName: string): TAttributeVariableSingle;\n    function GetAttributeVariablePointF(AName: string): TAttributeVariablePointF;\n    function GetAttributeVariablePoint3D(AName: string): TAttributeVariablePoint3D;\n    function GetAttributeVariableColor(AName: string): TAttributeVariableColor;\n    procedure SetUniformSingle(AVariable: LongWord; const AValue; AElementCount: integer; AComponentCount: integer);\n    procedure SetUniformInteger(AVariable: LongWord; const AValue; AElementCount: integer; AComponentCount: integer);\n    procedure CheckUsage(AUsing: boolean);\n    procedure StartUse; override;\n    procedure EndUse; override;\n    property Canvas: TBGLCustomCanvas read FCanvas;\n  public\n    constructor Create(ACanvas: TBGLCustomCanvas; AVertexShaderSource: string;\n        AFragmentShaderSource: string; AVaryingVariables: string = '';\n        AVersion: string = '120');\n    destructor Destroy; override;\n    property UniformSingle[AName: string]: TUniformVariableSingle read GetUniformVariableSingle;\n    property UniformPointF[AName: string]: TUniformVariablePointF read GetUniformVariablePointF;\n    property UniformPoint3D[AName: string]: TUniformVariablePoint3D read GetUniformVariablePoint3D;\n    property UniformColor[AName: string]: TUniformVariableColor read GetUniformVariableColor;\n    property UniformInteger[AName: string]: TUniformVariableInteger read GetUniformVariableInteger;\n    property UniformPoint[AName: string]: TUniformVariablePoint read GetUniformVariablePoint;\n    property UniformMatrix4D[AName: string]: TUniformVariableMatrix4D read GetUniformVariableMatrix4D;\n    property AttributeSingle[AName: string]: TAttributeVariableSingle read GetAttributeVariableSingle;\n    property AttributePointF[AName: string]: TAttributeVariablePointF read GetAttributeVariablePointF;\n    property AttributePoint3D[AName: string]: TAttributeVariablePoint3D read GetAttributeVariablePoint3D;\n    property AttributeInteger[AName: string]: TAttributeVariableInteger read GetAttributeVariableInteger;\n    property AttributePoint[AName: string]: TAttributeVariablePoint read GetAttributeVariablePoint;\n    property IsUsed: boolean read FUsed;\n  end;\n\n  TBGLFullCanvasShader = class(TBGLShader3D)\n  private\n    function GetCanvasSize: TPointF;\n    procedure SetCanvasSize(AValue: TPointF);\n  protected\n    FCanvasSize: TUniformVariablePointF;\n    procedure StartUse; override;\n    function GetFragmentShader(AInputCoord, AInputColor, ACanvasSize, AOutputColor: string): string; virtual; abstract;\n    property CanvasSize: TPointF read GetCanvasSize write SetCanvasSize;\n  public\n    constructor Create(ACanvas: TBGLCustomCanvas);\n    // draw into a new texture\n    function Render(AWidth, AHeight: integer): IBGLTexture; overload;\n    function Render(AWidth, AHeight: integer; AColor: TBGRAPixel): IBGLTexture; overload;\n    // draw on the whole canvas\n    procedure RenderOnCanvas; overload;\n    procedure RenderOnCanvas(AColor: TBGRAPixel); overload;\n    // draw only part of the shader\n    procedure RenderOnCanvas(const ARect: TRect); overload;\n    procedure RenderOnCanvas(const ARect: TRect; AColor: TBGRAPixel); overload;\n  end;\n\nfunction ProjectionToOpenGL(AProj: TProjection3D; ANear, AFar: Single): TMatrix4D;\n\nimplementation\n\nuses SysUtils, BGRAColorInt;\n\ntype\n\n  { Shader that fills with a texture }\n  TShaderWithTexture = class(TBGLShader3D)\n  private\n    function GetTexture: integer;\n    procedure SetTexture(AValue: integer);\n  protected\n    FTextureUniform: TUniformVariableInteger;\n    procedure StartUse; override;\n  public\n    class function GetCodeForTextureColor: string; static;\n    constructor Create(ACanvas: TBGLCustomCanvas; AFragmentShader: string; ATexture: integer = 0);\n    property Texture: integer read GetTexture write SetTexture;\n  end;\n\nfunction ProjectionToOpenGL(AProj: TProjection3D; ANear, AFar: Single): TMatrix4D;\nbegin\n  result[1,1] := AProj.Zoom.X; result[2,1] := 0;            result[3,1] := -(AProj.Center.x + 0.5); result[4,1] := 0;\n  result[1,2] := 0;            result[2,2] := AProj.Zoom.Y; result[3,2] := -(AProj.Center.y + 0.5); result[4,2] := 0;\n  result[1,3] := 0;            result[2,3] := 0;            result[3,3] := -2/(AFar-ANear);         result[4,3] := -1 - AFar*result[3,3];\n  result[1,4] := 0;            result[2,4] := 0;            result[3,4] := -1;                      result[4,4] := 0;\nend;\n\n{ TUniformVariableMatrix4D }\n\nprocedure TUniformVariableMatrix4D.SetValue(const AValue: TMatrix4D);\nbegin\n  if CompareMem(@AValue, @FValue, sizeof(FValue)) then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariableMatrix4D.Update;\nbegin\n  FProgram.SetUniformSingle(FVariable, FValue, 1, 16);\nend;\n\n{ TShaderWithTexture }\n\nfunction TShaderWithTexture.GetTexture: integer;\nbegin\n  result := FTextureUniform.Value;\nend;\n\nprocedure TShaderWithTexture.SetTexture(AValue: integer);\nbegin\n  FTextureUniform.Value := AValue;\nend;\n\nprocedure TShaderWithTexture.StartUse;\nbegin\n  inherited StartUse;\n  FTextureUniform.Update;\nend;\n\nclass function TShaderWithTexture.GetCodeForTextureColor: string;\nbegin\n  result := 'texture2D(texture, texture_coordinate)';\nend;\n\nconstructor TShaderWithTexture.Create(ACanvas: TBGLCustomCanvas;\n  AFragmentShader: string; ATexture: integer);\nbegin\n  inherited Create(ACanvas,\n    'void main(void) ' +\n    '{ ' +\n    '  gl_Position = gl_ProjectionMatrix * gl_Vertex; ' +\n    '  texture_coordinate = vec2(gl_MultiTexCoord0); ' +\n    '  N = gl_Normal; ' +\n    '  V = vec3(gl_Vertex); ' +\n    '} ',\n\n    'uniform sampler2D texture; ' +\n    AFragmentShader,\n\n    'varying vec2 texture_coordinate; ' +\n    'varying vec3 N; ' +\n    'varying vec3 V; ');\n  FTextureUniform := UniformInteger['texture'];\n  Texture := ATexture;\nend;\n\n{ TAttributeVariablePoint3D }\n\nprocedure TAttributeVariablePoint3D.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,3,True);\nend;\n\n{ TAttributeVariableColor }\n\nprocedure TAttributeVariableColor.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,4,True);\nend;\n\n{ TAttributeVariablePointF }\n\nprocedure TAttributeVariablePointF.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,2,True);\nend;\n\n{ TAttributeVariableInteger }\n\nprocedure TAttributeVariableInteger.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,1,False);\nend;\n\n{ TAttributeVariablePoint }\n\nprocedure TAttributeVariablePoint.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,2,False);\nend;\n\n{ TAttributeVariableSingle }\n\nprocedure TAttributeVariableSingle.Init(AProgram: TObject; AAttribute: LongWord);\nbegin\n  inherited Init(AProgram,AAttribute,1,True);\nend;\n\n{ TUniformVariablePoint }\n\nprocedure TUniformVariablePoint.SetValue(const AValue: TPoint);\nbegin\n  if (FValue.x=AValue.x) and (FValue.y=AValue.y) then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariablePoint.Update;\nbegin\n  FProgram.SetUniformInteger(FVariable, FValue, 1, 2);\nend;\n\n{ TUniformVariableInteger }\n\nprocedure TUniformVariableInteger.SetValue(const AValue: Integer);\nbegin\n  if FValue=AValue then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariableInteger.Update;\nbegin\n  FProgram.SetUniformInteger(FVariable, FValue, 1, 1);\nend;\n\n{ TUniformVariablePoint3D }\n\nprocedure TUniformVariablePoint3D.SetValue(const AValue: TPoint3D);\nbegin\n  if (FValue.x=AValue.x) and (FValue.y=AValue.y) and (FValue.z=AValue.z) then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariablePoint3D.Update;\nbegin\n  FProgram.SetUniformSingle(FVariable, FValue, 1, 3);\nend;\n\n{ TUniformVariableColor }\n\nprocedure TUniformVariableColor.SetValue(const AValue: TColorF);\nbegin\n  if CompareMem(@FValue, @AValue, 4*sizeof(single)) then Exit;\n  FValue:= AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariableColor.Update;\nbegin\n  FProgram.SetUniformSingle(FVariable, FValue, 1, 4);\nend;\n\n{ TUniformVariablePointF }\n\nprocedure TUniformVariablePointF.SetValue(const AValue: TPointF);\nbegin\n  if (FValue.x=AValue.x) and (FValue.y=AValue.y) then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariablePointF.Update;\nbegin\n  FProgram.SetUniformSingle(FVariable, FValue, 1, 2);\nend;\n\n{ TUniformVariableSingle }\n\nprocedure TUniformVariableSingle.SetValue(const AValue: single);\nbegin\n  if FValue=AValue then Exit;\n  FValue:=AValue;\n  if FProgram.IsUsed then Update;\nend;\n\nprocedure TUniformVariableSingle.Update;\nbegin\n  FProgram.SetUniformSingle(FVariable, FValue, 1, 1);\nend;\n\n{ TUniformVariable }\n\nprocedure TUniformVariable.Init(AProgram: TBGLShader3D; AVariable: LongWord);\nbegin\n  FProgram := AProgram;\n  FVariable := AVariable;\nend;\n\n{ TBGLShader3D }\n\nfunction TBGLShader3D.GetUniformVariableSingle(AName: string): TUniformVariableSingle;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariablePointF(AName: string): TUniformVariablePointF;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariablePoint3D(AName: string): TUniformVariablePoint3D;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariableColor(AName: string): TUniformVariableColor;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariableInteger(AName: string): TUniformVariableInteger;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariablePoint(AName: string): TUniformVariablePoint;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetUniformVariableMatrix4D(AName: string): TUniformVariableMatrix4D;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetUniformVariable(FProgram, AName));\n  {$pop}\nend;\n\nprocedure TBGLShader3D.CheckUsage(AUsing: boolean);\nbegin\n  if AUsing <> FUsed then\n  begin\n     if FUsed then raise exception.Create('Shader is in use') else\n       raise exception.Create('Shader is not in use');\n  end;\nend;\n\nfunction TBGLShader3D.GetAttributeVariableSingle(AName: string): TAttributeVariableSingle;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetAttributeVariablePointF(AName: string): TAttributeVariablePointF;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetAttributeVariablePoint3D(AName: string): TAttributeVariablePoint3D;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetAttributeVariableColor(AName: string): TAttributeVariableColor;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetAttributeVariableInteger(AName: string): TAttributeVariableInteger;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nfunction TBGLShader3D.GetAttributeVariablePoint(AName: string): TAttributeVariablePoint;\nbegin\n  {$push}{$hints off}\n  fillchar(result,sizeof(result),0);\n  result.Init(self, FCanvas.Lighting.GetAttribVariable(FProgram, AName));\n  {$pop}\nend;\n\nprocedure TBGLShader3D.SetUniformSingle(AVariable: LongWord; const AValue; AElementCount: integer; AComponentCount: integer);\nbegin\n  CheckUsage(True);\n  FCanvas.Lighting.SetUniformSingle(AVariable, AValue, AElementCount, AComponentCount);\nend;\n\nprocedure TBGLShader3D.SetUniformInteger(AVariable: LongWord; const AValue; AElementCount: integer; AComponentCount: integer);\nbegin\n  CheckUsage(True);\n  FCanvas.Lighting.SetUniformInteger(AVariable, AValue, AElementCount, AComponentCount);\nend;\n\nconstructor TBGLShader3D.Create(ACanvas: TBGLCustomCanvas;\n  AVertexShaderSource: string; AFragmentShaderSource: string;\n  AVaryingVariables: string; AVersion: string);\nbegin\n  FCanvas := ACanvas;\n  FLighting := FCanvas.Lighting;\n  FVertexShaderSource:= '#version ' + AVersion + #10 + AVaryingVariables + #10 + AVertexShaderSource;\n  FFragmentShaderSource:= '#version ' + AVersion + #10 + AVaryingVariables + #10 + AFragmentShaderSource;\n  FVertexShader := 0;\n  FFragmentShader := 0;\n  FProgram := 0;\n  try\n    FVertexShader := FLighting.MakeVertexShader(FVertexShaderSource);\n    FFragmentShader := FLighting.MakeFragmentShader(FFragmentShaderSource);\n    FProgram := FLighting.MakeShaderProgram(FVertexShader,FFragmentShader);\n  except on ex:Exception do\n    begin\n      FLighting.DeleteShaderProgram(FProgram);\n      FLighting.DeleteShaderObject(FFragmentShader);\n      FLighting.DeleteShaderObject(FVertexShader);\n      raise ex;\n    end;\n  end;\nend;\n\ndestructor TBGLShader3D.Destroy;\nbegin\n  if IsUsed then raise exception.Create('Shader is still in use');\n  inherited Destroy;\nend;\n\nprocedure TBGLShader3D.StartUse;\nbegin\n  CheckUsage(False);\n  FLighting.UseProgram(FProgram);\n  FUsed:= True;\nend;\n\nprocedure TBGLShader3D.EndUse;\nbegin\n  CheckUsage(True);\n  FLighting.UseProgram(0);\n  FUsed:= False;\nend;\n\n{ TBGLFullCanvasShader }\n\nfunction TBGLFullCanvasShader.GetCanvasSize: TPointF;\nbegin\n  result := FCanvasSize.Value;\nend;\n\nprocedure TBGLFullCanvasShader.SetCanvasSize(AValue: TPointF);\nbegin\n  FCanvasSize.Value := AValue;\nend;\n\nprocedure TBGLFullCanvasShader.StartUse;\nbegin\n  inherited StartUse;\n  FCanvasSize.Update;\nend;\n\nconstructor TBGLFullCanvasShader.Create(ACanvas: TBGLCustomCanvas);\nbegin\n  // vertex + fragment\n  inherited Create(ACanvas,\n  'uniform vec2 canvasSize;'#10 +\n  'void main(void) {'#10 +\n  '    gl_Position = gl_ProjectionMatrix * gl_Vertex;'#10 +\n  '    gl_FrontColor = gl_Color;'#10 +\n  '    fragCoord = gl_Vertex.xy / canvasSize;'#10 +\n  '}',\n\n  'uniform vec2 canvasSize;'#10 +\n  GetFragmentShader('fragCoord', 'gl_Color', 'canvasSize', 'gl_FragColor'),\n\n  'varying vec2 fragCoord;', '130');\n\n  FCanvasSize := UniformPointF['canvasSize'];\nend;\n\nfunction TBGLFullCanvasShader.Render(AWidth, AHeight: integer): IBGLTexture;\nbegin\n  result := Render(AWidth, AHeight, BGRAWhite);\nend;\n\n\nfunction TBGLFullCanvasShader.Render(AWidth, AHeight: integer;\n  AColor: TBGRAPixel): IBGLTexture;\nvar previousBuf,buf: TBGLCustomFrameBuffer;\nbegin\n  previousBuf := Canvas.ActiveFrameBuffer;\n  buf := Canvas.CreateFrameBuffer(AWidth, AHeight);\n  Canvas.ActiveFrameBuffer := buf;\n  Canvas.Fill(BGRAPixelTransparent);\n  RenderOnCanvas(AColor);\n  Canvas.ActiveFrameBuffer := previousBuf;\n  result := buf.MakeTextureAndFree;\nend;\n\nprocedure TBGLFullCanvasShader.RenderOnCanvas;\nbegin\n  RenderOnCanvas(BGRAWhite);\nend;\n\nprocedure TBGLFullCanvasShader.RenderOnCanvas(AColor: TBGRAPixel);\nbegin\n  RenderOnCanvas(Rect(0, 0, Canvas.Width, Canvas.Height), AColor);\nend;\n\nprocedure TBGLFullCanvasShader.RenderOnCanvas(const ARect: TRect);\nbegin\n  RenderOnCanvas(ARect, BGRAWhite);\nend;\n\nprocedure TBGLFullCanvasShader.RenderOnCanvas(const ARect: TRect; AColor: TBGRAPixel);\nvar\n  previousShader: TBGLCustomShader;\nbegin\n  previousShader := Canvas.Lighting.ActiveShader;\n  Canvas.Lighting.ActiveShader := self;\n  CanvasSize := PointF(Canvas.Width, Canvas.Height);\n  Canvas.FillRect(ARect, AColor);\n  Canvas.Lighting.ActiveShader := previousShader;\nend;\n\n{ TBGLLighting3D }\n\nprocedure TBGLLighting3D.SetUseBuiltIn(AValue: boolean);\nbegin\n  if FUseBuiltIn=AValue then Exit;\n  FUseBuiltIn:=AValue;\n  FCanvas.Lighting.BuiltInLightingEnabled := FUseBuiltIn;\nend;\n\nprocedure TBGLLighting3D.Init;\nvar\n  i: Integer;\n  v: TPoint3D;\n  int: single;\n  num: string;\n  minInt: string;\n  colorMult: TColorF;\nbegin\n  FShaderLightingCode:=\n        'void main(void) ' +\n        '{ ' +\n        '  vec3 L, H; float d; float sat, sumUnsat; vec4 color, clampedColor; vec4 unsat; ' +\n        '  vec3 Idiff = vec3(gl_LightModel.ambient); ' +\n        '  vec4 Ispec = vec4(0,0,0,0); ' +\n        '  vec3 NN = normalize(N); ';\n  with FCanvas.Lighting do\n  begin\n    AmbiantLightF := FAmbiantLight;\n    for i := 0 to FLights.Count-1 do\n    with TBGRALight3D(FLights[i]) do\n    begin\n      str(GetMinIntensity,minInt);\n      if IsDirectional then\n      begin\n        v := -GetDirection;\n        v.z := -v.z;\n        num := IntToStr(AddDirectionalLight(GetColorF, v));\n        str(GetMinIntensity,minInt);\n        AppendStr(FShaderLightingCode,\n        '  L = gl_LightSource['+num+'].position.xyz; ' +\n        '  Idiff += vec3(gl_LightSource['+num+'].diffuse * max(dot(NN,L), '+minInt+') ); ' +\n        '  if (gl_FrontMaterial.shininess > 0) { ' +\n        '    H = normalize(L + vec3(0,0,1)); ' +\n        '    Ispec += gl_LightSource['+num+'].specular * pow(abs(dot(NN,H)), gl_FrontMaterial.shininess*2); ' +\n        '  } ');\n      end\n      else\n      begin\n        int := GetIntensity*0.75;\n        if int > 0 then\n        begin\n          v := GetPosition;\n          v.z := -v.z;\n          colorMult := GetColorF * ColorF(int,int,int,1);\n          num := IntToStr(AddPointLight(colorMult, v, 0,1));\n          str(GetMinIntensity/int,minInt);\n          AppendStr(FShaderLightingCode,\n        '  L = (gl_LightSource['+num+'].position.xyz - V).xyz; ' +\n        '  d = length(L); ' +\n        '  L *= 1/d; ' +\n        '  Idiff += vec3(gl_LightSource['+num+'].diffuse * max(dot(NN,L)/(d*d), '+minInt+') ); ' +\n        '  if (gl_FrontMaterial.shininess > 0) { ' +\n        '    H = normalize(L + vec3(0,0,1)); ' +\n        '    Ispec += gl_LightSource['+num+'].specular  * pow(abs(dot(NN,H))/(d*d), gl_FrontMaterial.shininess*2); ' +\n        '  } ');\n        end;\n      end;\n\n    end;\n  end;\n  AppendStr(FShaderLightingCode,\n        '  color = #color# * vec4(Idiff,1) + Ispec; ' +\n        '  clampedColor = clamp(color,0,1); ' +\n        '  sat = dot( color - clampedColor, vec4(1) ); ' +\n        '  if (sat > 0) { ' +\n        '    unsat = vec4(1) - clampedColor; ' +\n        '    sumUnsat = unsat[0]+unsat[1]+unsat[2]; ' +\n        '    if (sumUnsat > 0) { ' +\n        '      sat *= max(max(unsat[0],unsat[1]),unsat[2]) / sumUnsat; ' +\n        '      gl_FragColor = clamp(color + vec4(sat,sat,sat,0),0,1); ' +\n        '    } ' +\n        '    else gl_FragColor = clampedColor; ' +\n        '  } ' +\n        '  else gl_FragColor = clampedColor; ' +\n        '} ');\nend;\n\nconstructor TBGLLighting3D.Create(ACanvas: TBGLCustomCanvas; AAmbiantLight: TColorF; ALights: TList);\nbegin\n  FCanvas := ACanvas;\n  FLights := ALights;\n  FAmbiantLight := AAmbiantLight;\n  Init;\nend;\n\nprocedure TBGLLighting3D.SetSpecularIndex(AIndex: Integer);\nbegin\n  FCanvas.Lighting.SetSpecularIndex(AIndex);\nend;\n\ndestructor TBGLLighting3D.Destroy;\nbegin\n  FCanvas.Lighting.SetSpecularIndex(0);\n  FCanvas.Lighting.ClearLights;\n  UseOpenGLBuiltInLighting := false;\n  inherited Destroy;\nend;\n\n{ TBGLScene3D }\n\nfunction TBGLScene3D.LoadBitmapFromFileUTF8(AFilenameUTF8: string\n  ): TBGRACustomBitmap;\nbegin\n  if BGLBitmapFactory <> nil then\n    Result:= BGLBitmapFactory.Create(AFilenameUTF8,True)\n  else\n    result := inherited LoadBitmapFromFileUTF8(AFilenameUTF8);\nend;\n\nprocedure TBGLScene3D.RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single);\nvar\n  renderer: TBGLRenderer3D;\nbegin\n  renderer := TBGLRenderer3D.Create(ACanvas, self, AMaxZ);\n  Render(renderer);\n  renderer.Free;\nend;\n\n{ TBGLRenderer3D }\n\nfunction TBGLRenderer3D.GetHasZBuffer: boolean;\nbegin\n  result := FHasZBuffer;\nend;\n\nfunction TBGLRenderer3D.GetGlobalScale: single;\nbegin\n  result := FGlobalScale;\nend;\n\nfunction TBGLRenderer3D.GetSurfaceWidth: integer;\nbegin\n  result := FCanvas.Width;\nend;\n\nfunction TBGLRenderer3D.GetSurfaceHeight: integer;\nbegin\n  result := FCanvas.Height;\nend;\n\n{$PUSH}{$OPTIMIZATION OFF}   //avoid internal error 2012090607\nprocedure TBGLRenderer3D.SetProjection(const AValue: TProjection3D);\nbegin\n  inherited SetProjection(AValue);\n  FProjectionMatrix := ProjectionToOpenGL(AValue, FOptions.MinZ, FFar) *\n    OrthoProjectionToOpenGL(0,0,FCanvas.Width,FCanvas.Height);\n  FCanvas.ProjectionMatrix := FProjectionMatrix;\nend;\n{$POP}\n\nfunction TBGLRenderer3D.GetHandlesNearClipping: boolean;\nbegin\n  result := true;\nend;\n\nfunction TBGLRenderer3D.GetHandlesFaceCulling: boolean;\nbegin\n  result := FShader <> nil;\nend;\n\nprocedure TBGLRenderer3D.InitLighting(AUseOpenGLBuiltInLighting: boolean);\nvar\n  fragmentShaderCode: string;\nbegin\n  if not Assigned(FLightingGL) then\n  begin\n    FLightingGL := TBGLLighting3D.Create(FCanvas, FAmbiantLight, FLights);\n\n    if (FOptions.LightingInterpolation <> liLowQuality) and FCanvas.Lighting.SupportShaders then\n    begin\n      fragmentShaderCode := StringReplace(FLightingGL.ShaderLightingCode, '#color#', 'gl_Color', []);\n      FShader := FCanvas.Lighting.Shader[fragmentShaderCode];\n      if (FShader = nil) and FCanvas.Lighting.SupportShaders then\n      begin\n        FShader := TBGLShader3D.Create(FCanvas,\n          'void main(void) ' +\n          '{ ' +\n          '  gl_Position = gl_ProjectionMatrix * gl_Vertex; ' +\n          '  gl_FrontColor = gl_Color; ' +\n          '  gl_BackColor = gl_Color; ' +\n          '  N = gl_Normal; ' +\n          '  V = vec3(gl_Vertex); ' +\n          '} ',\n\n          fragmentShaderCode,\n\n          'varying vec3 N; ' +\n          'varying vec3 V; ');\n        FCanvas.Lighting.Shader[fragmentShaderCode] := FShader;\n      end;\n\n      fragmentShaderCode := StringReplace(FLightingGL.ShaderLightingCode, '#color#', TShaderWithTexture.GetCodeForTextureColor, []);\n      FShaderWithTexture := FCanvas.Lighting.Shader[fragmentShaderCode];\n      if (FShaderWithTexture = nil) and FCanvas.Lighting.SupportShaders then\n      begin\n        FShaderWithTexture := TShaderWithTexture.Create(FCanvas, fragmentShaderCode, 0);\n        FCanvas.Lighting.Shader[fragmentShaderCode] := FShaderWithTexture;\n      end;\n    end else\n    begin\n      FLightingGL.UseOpenGLBuiltInLighting := AUseOpenGLBuiltInLighting;\n      if not AUseOpenGLBuiltInLighting then\n        FBGRAShader := TBGRAShader3D.Create(FAmbiantLight, FLights);\n    end;\n  end;\nend;\n\nconstructor TBGLRenderer3D.Create(ACanvas: TBGLCustomCanvas;\n            AScene: TBGRAScene3D; AFar: single);\nbegin\n  FCanvas := ACanvas;\n  FOptions := AScene.RenderingOptions;\n  FLights := AScene.MakeLightList;\n  FAmbiantLight := AScene.AmbiantLightColorF;\n  FGlobalScale:= 1;\n  FHasZBuffer := FOptions.PerspectiveMode = pmZBuffer;\n  FFactorZ := -2/(FFar-FOptions.MinZ);\n  FAddZ := -1 - FFar*FFactorZ;\n  FFar := AFar;\n  if FHasZBuffer then ACanvas.StartZBuffer;\n  FOldCulling:= FCanvas.FaceCulling;\n  FOldMatrix := FCanvas.Matrix;\n  FCanvas.ResetTransform;\n  FOldProjection := FCanvas.ProjectionMatrix;\n  FCanvas.ProjectionMatrix := MatrixIdentity4D;\n\n  FShader := nil;\n  FShaderWithTexture := nil;\n\n  InitLighting(False);\nend;\n\nfunction TBGLRenderer3D.RenderFace(var ADescription: TFaceRenderingDescription;\n  AComputeCoordinate: TComputeProjectionFunc): boolean;\nvar\n  NormalCenter3D,PtCenter3D: TPoint3D_128;\n  ColorCenter: TBGRAPixel;\n\n  procedure ComputeCenter;\n  var j: Int32or64;\n  begin\n    with ADescription do\n    begin\n      PtCenter3D := Point3D_128_Zero;\n      NormalCenter3D := Point3D_128_Zero;\n      for j := 0 to NbVertices-1 do\n      begin\n        PtCenter3D.Offset(Positions3D[j]);\n        NormalCenter3D.Offset(Normals3D[j]);\n      end;\n      PtCenter3D.Scale(1/NbVertices);\n      Normalize3D_128(NormalCenter3D);\n      ColorCenter := MergeBGRA(slice(Colors,NbVertices));\n    end;\n  end;\n\nvar tex: IBGLTexture;\n  i,j: Int32or64;\nbegin\n  result := true;\n\n  if not ProjectionDefined then\n    raise exception.Create('Projection must be defined before drawing faces');\n\n  If ADescription.Texture <> nil then\n    tex := ADescription.Texture.GetTextureGL as IBGLTexture\n  else\n    tex := nil;\n\n  with ADescription do\n  begin\n    if ADescription.Biface then\n      FCanvas.FaceCulling := fcNone\n    else\n      FCanvas.FaceCulling := fcKeepCW;\n\n    if ADescription.Material.GetSpecularOn then\n      FLightingGL.SetSpecularIndex(ADescription.Material.GetSpecularIndex)\n    else\n      FLightingGL.SetSpecularIndex(0);\n\n    if tex <> nil then\n    begin\n      FCanvas.Lighting.ActiveShader := FShaderWithTexture;\n\n      if Assigned(FBGRAShader) then\n      begin\n        FBGRAShader.Prepare(ADescription);\n\n        if length(FShadedColorsF) < NbVertices then\n          setlength(FShadedColorsF, NbVertices);\n        for i := 0 to NbVertices-1 do\n          FShadedColorsF[i] := BGRAToColorF(ColorIntToBGRA(FBGRAShader.Int65536Apply(Positions3D[i],Normals3D[i],BGRAWhite), true), false);\n\n        for i := 0 to NbVertices-1 do\n          Positions3D[i].z := -Positions3D[i].z;\n\n        if NbVertices = 3 then\n          tex.DrawTriangle(slice(Positions3D,3),slice(TexCoords,3),slice(FShadedColorsF,3))\n        else if NbVertices = 4 then\n          tex.DrawQuad(slice(Positions3D,4),slice(TexCoords,4),slice(FShadedColorsF,4));\n      end else\n      begin\n        for i := 0 to NbVertices-1 do\n        begin\n          Positions3D[i].z := -Positions3D[i].z;\n          Normals3D[i].z := -Normals3D[i].z;\n        end;\n\n        if NbVertices = 3 then\n          tex.DrawTriangle(slice(Positions3D,3),slice(Normals3D,3),slice(TexCoords,3))\n        else if NbVertices = 4 then\n          tex.DrawQuad(slice(Positions3D,4),slice(Normals3D,4),slice(TexCoords,4));\n      end;\n    end\n    else\n    begin\n      FCanvas.Lighting.ActiveShader := FShader;\n\n      if Assigned(FBGRAShader) then\n      begin\n        FBGRAShader.Prepare(ADescription);\n\n        if length(FShadedColors) < NbVertices then\n          setlength(FShadedColors, NbVertices);\n        for i := 0 to NbVertices-1 do\n          FShadedColors[i] := FBGRAShader.Apply(Positions3D[i],Normals3D[i],Colors[i]);\n\n        if NbVertices > 4 then\n        begin\n          ComputeCenter;\n          ColorCenter := FBGRAShader.Apply(PtCenter3D,NormalCenter3D,MergeBGRA(slice(Colors,NbVertices)));\n\n          for i := 0 to NbVertices-1 do\n            Positions3D[i].z := -Positions3D[i].z;\n          PtCenter3D.z := -PtCenter3D.z;\n\n          i := NbVertices-1;\n          for j := 0 to NbVertices-1 do\n          begin\n            FCanvas.FillTrianglesLinearColor(\n               [Positions3D[i],Positions3D[j],PtCenter3D],\n               [FShadedColors[i],FShadedColors[j],ColorCenter]);\n            i := j;\n          end;\n        end else\n        begin\n          for i := 0 to NbVertices-1 do\n            Positions3D[i].z := -Positions3D[i].z;\n\n          if NbVertices = 3 then\n            FCanvas.FillTrianglesLinearColor(slice(Positions3D,3),slice(FShadedColors,3))\n          else if NbVertices = 4 then\n            FCanvas.FillQuadsLinearColor(slice(Positions3D,4),slice(FShadedColors,4));\n        end;\n      end else\n      begin\n        for i := 0 to NbVertices-1 do\n        begin\n          Positions3D[i].z := -Positions3D[i].z;\n          Normals3D[i].z := -Normals3D[i].z;\n        end;\n\n        if NbVertices > 4 then\n        begin\n          ComputeCenter;\n\n          i := NbVertices-1;\n          for j := 0 to NbVertices-1 do\n          begin\n            FCanvas.FillTrianglesLinearColor(\n               [Positions3D[i],Positions3D[j],PtCenter3D],\n               [Normals3D[i],Normals3D[j],NormalCenter3D],\n               [Colors[i],Colors[j],ColorCenter]);\n            i := j;\n          end;\n        end else\n        begin\n          if NbVertices = 3 then\n            FCanvas.FillTrianglesLinearColor(slice(Positions3D,3),slice(Normals3D,3),slice(Colors,3))\n          else if NbVertices = 4 then\n            FCanvas.FillQuadsLinearColor(slice(Positions3D,4),slice(Normals3D,4),slice(Colors,4));\n        end;\n      end;\n    end;\n  end;\nend;\n\ndestructor TBGLRenderer3D.Destroy;\nbegin\n  FreeAndNil(FBGRAShader);\n  FCanvas.Lighting.ActiveShader := nil;\n  FCanvas.ProjectionMatrix := FOldProjection;\n  FCanvas.Matrix := FOldMatrix;\n  FCanvas.FaceCulling := FOldCulling;\n  FreeAndNil(FLightingGL);\n  if FHasZBuffer then FCanvas.EndZBuffer;\n  FLights.Free;\n  inherited Destroy;\nend;\n\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgraopengltype.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Basic types used with OpenGL }\nunit BGRAOpenGLType;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAGraphics, BGRABitmap, BGRABitmapTypes,\n  FPimage, BGRAClasses, SysUtils, BGRATransform,\n  BGRASSE, BGRAMatrix3D;\n\ntype\n  TBGLTextureHandle = type Pointer;\n  TOpenGLResampleFilter = (orfBox,orfLinear);\n  TOpenGLRepeatMode = (ormRepeat, ormMirroredRepeat, ormClamp);\n  TOpenGLBlendMode = (obmNormal, obmAdd, obmMultiply);\n  TWaitForGPUOption = (wfgQueueAllCommands, wfgFinishAllCommands);\n  TFaceCulling = BGRABitmapTypes.TFaceCulling;\n  TOpenGLPrimitive = (opPoints,opLineStrip,opLineLoop,opLines,\n                  opTriangleStrip,opTriangleFan,opTriangles);\n\nconst\n  fcNone = BGRABitmapTypes.fcNone;\n  fcKeepCW = BGRABitmapTypes.fcKeepCW;\n  fcKeepCCW = BGRABitmapTypes.fcKeepCCW;\n\ntype\n\n  { Interface for a font drawn on OpenGL canvas }\n  IBGLFont = interface\n    function GetClipped: boolean;\n    function GetPadding: TRectF;\n    function GetUseGradientColors: boolean;\n    function GetHorizontalAlign: TAlignment;\n    function GetJustify: boolean;\n    function GetScale: single;\n    function GetStepX: single;\n    function GetVerticalAlign: TTextLayout;\n    procedure SetClipped(AValue: boolean);\n    procedure SetPadding(AValue: TRectF);\n    procedure SetUseGradientColors(AValue: boolean);\n    procedure SetHorizontalAlign(AValue: TAlignment);\n    procedure SetJustify(AValue: boolean);\n    procedure SetScale(AValue: single);\n    procedure SetStepX(AValue: single);\n    procedure SetVerticalAlign(AValue: TTextLayout);\n    procedure TextOut(X, Y: Single; const Text : UTF8String); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AVertAlign: TTextLayout); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AVertAlign: TTextLayout); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    function TextWidth(const Text: UTF8String): single;\n    function TextHeight(const Text: UTF8String): single; overload;\n    function TextHeight(const Text: UTF8String; AWidth: single): single; overload;\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel);\n\n    property Scale: single read GetScale write SetScale;\n    property StepX: single read GetStepX write SetStepX;\n    property Justify: boolean read GetJustify write SetJustify;\n    property Clipped: boolean read GetClipped write SetClipped;\n    property HorizontalAlign: TAlignment read GetHorizontalAlign write SetHorizontalAlign;\n    property VerticalAlign: TTextLayout read GetVerticalAlign write SetVerticalAlign;\n    property GradientColors: boolean read GetUseGradientColors write SetUseGradientColors;\n    property Padding: TRectF read GetPadding write SetPadding;\n  end;\n\n  { Abstract class for a font drawn on OpenGL canvas }\n  TBGLCustomFont = class(TInterfacedObject, IBGLFont)\n  protected\n    FScale, FStepX: single;\n    FPadding: TRectF;\n    FFlags: LongWord;\n    FHorizontalAlign: TAlignment;\n    FVerticalAlign: TTextLayout;\n    FJustify: boolean;\n    procedure Init; virtual;\n    function LoadFromFile(AFilename: UTF8String): boolean; virtual; abstract;\n    procedure FreeMemoryOnDestroy; virtual;\n\n    function GetScale: single; virtual;\n    function GetStepX: single; virtual;\n    procedure SetScale(AValue: single); virtual;\n    procedure SetStepX(AValue: single); virtual;\n    function GetPadding: TRectF;\n    procedure SetPadding(AValue: TRectF); virtual;\n\n    function GetHorizontalAlign: TAlignment; virtual;\n    function GetJustify: boolean; virtual;\n    function GetVerticalAlign: TTextLayout; virtual;\n    procedure SetHorizontalAlign(AValue: TAlignment); virtual;\n    procedure SetJustify(AValue: boolean); virtual;\n    procedure SetVerticalAlign(AValue: TTextLayout); virtual;\n\n    function GetClipped: boolean; virtual; abstract;\n    function GetUseGradientColors: boolean; virtual; abstract;\n    procedure SetClipped(AValue: boolean); virtual; abstract;\n    procedure SetUseGradientColors(AValue: boolean); virtual; abstract;\n\n    procedure DoTextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel); virtual; abstract;\n    procedure DoTextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel); virtual; abstract;\n\n    function GetDefaultColor: TBGRAPixel; virtual;\n    procedure SwapRectIfNeeded(var ARect: TRectF); overload;\n    procedure SwapRectIfNeeded(var ARect: TRect); overload;\n  public\n    constructor Create(AFilename: UTF8String);\n    procedure FreeMemory; virtual;\n    destructor Destroy; override;\n    procedure TextOut(X, Y: Single; const Text : UTF8String); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextOut(X, Y: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AVertAlign: TTextLayout); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextRect(X, Y, Width, Height: Single; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String; AVertAlign: TTextLayout); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextRect(ARect: TRect; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AVertAlign: TTextLayout); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop); overload;\n    procedure TextRect(ARect: TRectF; const Text : UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    function TextWidth(const Text: UTF8String): single; virtual; abstract;\n    function TextHeight(const Text: UTF8String): single; overload; virtual; abstract;\n    function TextHeight(const Text: UTF8String; AWidth: single): single; overload; virtual; abstract;\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel); virtual; abstract;\n\n    property Scale: single read GetScale write SetScale;\n    property StepX: single read GetStepX write SetStepX;\n    property Justify: boolean read GetJustify write SetJustify;\n    property Clipped: boolean read GetClipped write SetClipped;\n    property HorizontalAlign: TAlignment read GetHorizontalAlign write SetHorizontalAlign;\n    property VerticalAlign: TTextLayout read GetVerticalAlign write SetVerticalAlign;\n    property GradientColors: boolean read GetUseGradientColors write SetUseGradientColors;\n    property Padding: TRectF read GetPadding write SetPadding;\n  end;\n\n  { Interface for a texture in OpenGL (stored in VRAM) }\n  IBGLTexture = interface ['{BF2FF051-EBC6-4102-8268-37A9D0297B92}']\n    function GetAllocatedHeight: integer;\n    function GetAllocatedWidth: integer;\n    function GetFlipX: IBGLTexture;\n    function GetFlipY: IBGLTexture;\n    function GetFrame(AIndex: integer): IBGLTexture;\n    function GetFrameCount: integer;\n    function GetFrameHeight: integer;\n    function GetFrameWidth: integer;\n    function GetHeight: integer;\n    function GetImageCenter: TPointF;\n    function GetMask: IBGLTexture;\n    function GetOpenGLBlendMode: TOpenGLBlendMode;\n    function GetOpenGLTexture: TBGLTextureHandle;\n    function GetRepeatX: TOpenGLRepeatMode;\n    function GetRepeatY: TOpenGLRepeatMode;\n    function GetResampleFilter: TOpenGLResampleFilter;\n    function GetUseGradientColors: boolean;\n    function GetWidth: integer;\n\n    procedure SetFrameSize(x,y: integer);\n    procedure SetImageCenter(const AValue: TPointF);\n    procedure SetOpenGLBlendMode(AValue: TOpenGLBlendMode);\n    procedure SetRepetition(AValueX, AValueY: TOpenGLRepeatMode);\n    procedure SetResampleFilter(AValue: TOpenGLResampleFilter);\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel);\n    procedure SetUseGradientColors(AValue: boolean);\n    procedure Update(ARGBAData: PLongWord; AllocatedWidth, AllocatedHeight, ActualWidth,ActualHeight: integer; RGBAOrder: boolean = true);\n    procedure ToggleFlipX;\n    procedure ToggleFlipY;\n    procedure ToggleMask;\n    function FilterBlurMotion(ARadius: single; ABlurType: TRadialBlurType; ADirection: TPointF): IBGLTexture;\n    function FilterBlurRadial(ARadius: single; ABlurType: TRadialBlurType): IBGLTexture;\n    procedure SetFrame(AIndex: integer);\n    procedure FreeMemory;\n    procedure Bind(ATextureNumber: integer);\n\n    procedure Draw(x,y: single; AAlpha: byte = 255); overload;\n    procedure Draw(x,y: single; AColor: TBGRAPixel); overload;\n    procedure Draw(x,y: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure Draw(x,y: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure StretchDraw(x,y,w,h: single; AAlpha: byte = 255); overload;\n    procedure StretchDraw(x,y,w,h: single; AColor: TBGRAPixel); overload;\n    procedure StretchDraw(x,y,w,h: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure StretchDraw(x,y,w,h: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure DrawAffine(const Origin, HAxis, VAxis: TPointF; AAlpha: byte = 255); overload;\n    procedure DrawAffine(const Origin, HAxis, VAxis: TPointF; AColor: TBGRAPixel); overload;\n    procedure DrawAffine(x,y: single; const AMatrix: TAffineMatrix; AAlpha: byte = 255); overload;\n    procedure DrawAffine(x,y: single; const AMatrix: TAffineMatrix; AColor: TBGRAPixel); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n\n    property AllocatedWidth: integer read GetAllocatedWidth;\n    property AllocatedHeight: integer read GetAllocatedHeight;\n    property Width: integer read GetWidth;\n    property Height: integer read GetHeight;\n    property FrameCount: integer read GetFrameCount;\n    property Frame[AIndex: integer]: IBGLTexture read GetFrame;\n    property FrameWidth: integer read GetFrameWidth;\n    property FrameHeight: integer read GetFrameHeight;\n    property FlipX: IBGLTexture read GetFlipX;\n    property FlipY: IBGLTexture read GetFlipY;\n    property Mask: IBGLTexture read GetMask;\n    property Handle: TBGLTextureHandle read GetOpenGLTexture;\n    property ImageCenter: TPointF read GetImageCenter write SetImageCenter;\n    property RepeatX: TOpenGLRepeatMode read GetRepeatX;\n    property RepeatY: TOpenGLRepeatMode read GetRepeatY;\n    property ResampleFilter: TOpenGLResampleFilter read GetResampleFilter write SetResampleFilter;\n    property BlendMode: TOpenGLBlendMode read GetOpenGLBlendMode write SetOpenGLBlendMode;\n    property GradientColors: boolean read GetUseGradientColors write SetUseGradientColors;\n  end;\n\n  { Abstract RGBA bitmap that can be used with OpenGL by converting it into a texture }\n  TBGLCustomBitmap = class(TBGRABitmap)\n  protected\n    FActualWidth,FActualHeight,\n    FAllocatedWidth,FAllocatedHeight: integer;\n    FTextureInvalidated: boolean;\n    FActualRect: TRect;\n    FTexture: IBGLTexture;\n    procedure Init; override;\n    function GetTexture: IBGLTexture; virtual;\n    class function GetOpenGLMaxTexSize: integer; virtual; abstract;\n    procedure NotifySizeTooBigForOpenGL; virtual;\n    procedure NotifyOpenGLContextNotCreatedYet; virtual;\n    function GetTextureGL: IUnknown; override;\n    procedure SwapRedBlueWithoutInvalidate(ARect: TRect);\n    procedure SetClipRect(const AValue: TRect); override;\n  public\n    procedure InvalidateBitmap; override;\n    procedure Fill(const c: TBGRAPixel); override;\n    procedure NoClip; override;\n    destructor Destroy; override;\n    procedure SwapRedBlue; overload; override;\n    function Resample(newWidth, newHeight: integer; mode: TResampleMode=rmFineResample; ACopyProperties: Boolean=False): TBGLCustomBitmap; override;\n    procedure ApplyGlobalOpacity(alpha: byte); overload; override;\n    procedure ReplaceColor(before, after: TColor); overload; override;\n    procedure ReplaceColor(const ABefore, AAfter: TBGRAPixel); overload; override;\n    procedure ReplaceTransparent(const AAfter: TBGRAPixel); overload; override;\n    procedure SetSize(AWidth, AHeight: integer); override;\n    property Width: integer read FActualWidth;\n    property Height: integer read FActualHeight;\n    property AllocatedWidth: integer read FAllocatedWidth;\n    property AllocatedHeight: integer read FAllocatedHeight;\n    function MakeTextureAndFree: IBGLTexture;\n    property Texture: IBGLTexture read GetTexture;\n    property MaxTextureSize: integer read GetOpenGLMaxTexSize;\n  end;\n\n  { Abstract class for a texture in OpenGL (stored in VRAM) }\n  TBGLCustomTexture = class(TInterfacedObject, IBGLTexture)\n  private\n    function GetAllocatedHeight: integer;\n    function GetAllocatedWidth: integer;\n    function GetFlipX: IBGLTexture;\n    function GetFlipY: IBGLTexture;\n    function GetFrame(AIndex: integer): IBGLTexture;\n    function GetFrameCount: integer;\n    function GetFrameHeight: integer;\n    function GetFrameWidth: integer;\n    function GetHeight: integer;\n    function GetMask: IBGLTexture;\n    function GetOpenGLBlendMode: TOpenGLBlendMode;\n    function GetOpenGLTexture: TBGLTextureHandle;\n    function GetWidth: integer;\n    function GetImageCenter: TPointF;\n    procedure SetImageCenter(const AValue: TPointF);\n    function GetResampleFilter: TOpenGLResampleFilter;\n    procedure SetOpenGLBlendMode(AValue: TOpenGLBlendMode);\n    procedure SetResampleFilter(AValue: TOpenGLResampleFilter);\n  protected\n    FOpenGLTexture: TBGLTextureHandle;\n    FOpenGLTextureOwned: boolean;\n    FResampleFilter: TOpenGLResampleFilter;\n    FWidth,FHeight: integer;\n    FImageCenter: TPointF;\n    FFrame: integer;\n    FFrameWidth,FFrameHeight: integer;\n    FIsMask: boolean;\n    FGradTopLeft, FGradTopRight, FGradBottomRight, FGradBottomLeft: TBGRAPixel;\n    FUseGradientColor: boolean;\n    FBlendMode: TOpenGLBlendMode;\n\n    class function GetOpenGLMaxTexSize: integer; virtual; abstract;\n    class function GetNonPowerOfTwoSizeSupport: boolean; virtual;\n    function CreateOpenGLTexture(ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer; RGBAOrder: boolean): TBGLTextureHandle; virtual; abstract;\n    procedure UpdateOpenGLTexture(ATexture: TBGLTextureHandle; ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth,AActualHeight: integer; RGBAOrder: boolean); virtual; abstract;\n    class function SupportsBGRAOrder: boolean; virtual;\n    procedure SetOpenGLTextureSize(ATexture: TBGLTextureHandle; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer); virtual; abstract;\n    function GetOpenGLAllocatedSize(ATexture: TBGLTextureHandle): TSize; virtual; abstract;\n    procedure ComputeOpenGLFramesCoord(ATexture: TBGLTextureHandle; FramesX: Integer=1; FramesY: Integer=1); virtual; abstract;\n    function GetOpenGLFrameCount(ATexture: TBGLTextureHandle): integer; virtual; abstract;\n    function GetEmptyTexture: TBGLTextureHandle; virtual; abstract;\n    procedure FreeOpenGLTexture(ATexture: TBGLTextureHandle); virtual; abstract;\n    function GetRepeatX: TOpenGLRepeatMode; virtual; abstract;\n    function GetRepeatY: TOpenGLRepeatMode; virtual; abstract;\n    procedure UpdateGLResampleFilter(ATexture: TBGLTextureHandle; AFilter: TOpenGLResampleFilter); virtual; abstract;\n    function GetUseGradientColors: boolean; virtual;\n    procedure SetUseGradientColors(AValue: boolean); virtual;\n\n    procedure DoDrawTriangleOrQuad(const {%H-}Points: array of TPointF;\n      const {%H-}APointsZ: array of Single; const {%H-}APoints3D: array of TPoint3D_128;\n      const {%H-}ANormals3D: array of TPoint3D_128; const {%H-}TexCoords: array of TPointF;\n      const {%H-}AColors: array of TColorF); virtual;\n    procedure DoStretchDraw(x,y,w,h: single; AColor: TBGRAPixel); virtual; abstract;\n    procedure DoStretchDrawAngle(x,y,w,h,angleDeg: single; rotationCenter: TPointF; AColor: TBGRAPixel); virtual; abstract;\n    procedure DoDrawAffine(Origin, HAxis, VAxis: TPointF; AColor: TBGRAPixel); virtual; abstract;\n    function NewEmpty: TBGLCustomTexture; virtual; abstract;\n    function NewFromTexture(ATexture: TBGLTextureHandle; AWidth,AHeight: integer): TBGLCustomTexture; virtual; abstract;\n    procedure NotifyInvalidFrameSize; virtual;\n    procedure NotifyErrorLoadingFile({%H-}AFilename: string); virtual;\n\n    procedure Init(ATexture: TBGLTextureHandle; AWidth,AHeight: integer; AOwned: boolean); virtual;\n    function Duplicate: TBGLCustomTexture; virtual;\n    procedure FreeMemoryOnDestroy; virtual;\n\n    procedure InitEmpty;\n    procedure InitFromData(ARGBAData: PLongWord; AllocatedWidth,AllocatedHeight, ActualWidth,ActualHeight: integer; RGBAOrder: boolean);\n    procedure InitFromStream(AStream: TStream);\n  public\n    destructor Destroy; override;\n    constructor Create; overload;\n    constructor Create(ATexture: TBGLTextureHandle; AWidth,AHeight: integer); overload;\n    constructor Create(ARGBAData: PLongWord; AllocatedWidth,AllocatedHeight, ActualWidth,ActualHeight: integer; RGBAOrder: boolean = true); overload;\n    constructor Create(AFPImage: TFPCustomImage); overload;\n    constructor Create(ABitmap: TBitmap); overload;\n    constructor Create(AWidth, AHeight: integer; Color: TColor); overload;\n    constructor Create(AWidth, AHeight: integer; Color: TBGRAPixel); overload;\n    constructor Create(AFilenameUTF8: string); overload;\n    constructor Create(AFilenameUTF8: string; AWidth,AHeight: integer; AResampleFilter: TResampleFilter); overload;\n    constructor Create(AStream: TStream); overload;\n    procedure ToggleFlipX; virtual; abstract;\n    procedure ToggleFlipY; virtual; abstract;\n    procedure ToggleMask; virtual;\n    function FilterBlurMotion({%H-}ARadius: single; {%H-}ABlurType: TRadialBlurType; {%H-}ADirection: TPointF): IBGLTexture; virtual;\n    function FilterBlurRadial({%H-}ARadius: single; {%H-}ABlurType: TRadialBlurType): IBGLTexture; virtual;\n\n    procedure SetFrameSize(x,y: integer);\n    procedure SetRepetition(AValueX, AValueY: TOpenGLRepeatMode); virtual; abstract;\n    procedure Update(ARGBAData: PLongWord; AllocatedWidth, AllocatedHeight, ActualWidth,ActualHeight: integer; RGBAOrder: boolean = true);\n    procedure SetFrame(AIndex: integer);\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel);\n    procedure FreeMemory;\n    procedure Bind({%H-}ATextureNumber: integer); virtual;\n\n    procedure Draw(x,y: single; AAlpha: byte = 255); overload;\n    procedure Draw(x,y: single; AColor: TBGRAPixel); overload;\n    procedure Draw(x,y: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure Draw(x,y: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure StretchDraw(x,y,w,h: single; AAlpha: byte = 255); overload;\n    procedure StretchDraw(x,y,w,h: single; AColor: TBGRAPixel); overload;\n    procedure StretchDraw(x,y,w,h: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure StretchDraw(x,y,w,h: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AColor: TBGRAPixel); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure DrawAngle(x,y,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AColor: TBGRAPixel); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout = tlTop; AAlpha: byte = 255); overload;\n    procedure StretchDrawAngle(x,y,w,h,angleDeg: single; AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel); overload;\n    procedure DrawAffine(const Origin, HAxis, VAxis: TPointF; AAlpha: byte = 255); overload;\n    procedure DrawAffine(const Origin, HAxis, VAxis: TPointF; AColor: TBGRAPixel); overload;\n    procedure DrawAffine(x,y: single; const AMatrix: TAffineMatrix; AAlpha: byte = 255); overload;\n    procedure DrawAffine(x,y: single; const AMatrix: TAffineMatrix; AColor: TBGRAPixel); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawTriangle(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints: array of TPointF; const APointsZ: array of Single; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF); overload;\n    procedure DrawQuad(const APoints3D: array of TPoint3D_128; const ANormals3D: array of TPoint3D_128; const ATexCoords: array of TPointF; const AColors: array of TColorF); overload;\n\n    property Width: integer read GetWidth;\n    property Height: integer read GetHeight;\n    property AllocatedWidth: integer read GetAllocatedWidth;\n    property AllocatedHeight: integer read GetAllocatedHeight;\n    property FrameCount: integer read GetFrameCount;\n    property Frame[AIndex: integer]: IBGLTexture read GetFrame;\n    property FrameWidth: integer read GetFrameWidth;\n    property FrameHeight: integer read GetFrameHeight;\n    property FlipX: IBGLTexture read GetFlipX;\n    property FlipY: IBGLTexture read GetFlipY;\n    property Mask: IBGLTexture read GetMask;\n    property Handle: TBGLTextureHandle read GetOpenGLTexture;\n    property RepeatX: TOpenGLRepeatMode read GetRepeatX;\n    property RepeatY: TOpenGLRepeatMode read GetRepeatY;\n    property ResampleFilter: TOpenGLResampleFilter read GetResampleFilter write SetResampleFilter;\n    property BlendMode: TOpenGLBlendMode read GetOpenGLBlendMode write SetOpenGLBlendMode;\n    property GradientColors: boolean read GetUseGradientColors write SetUseGradientColors;\n  end;\n\n  { Abstract class for a frame buffer in OpenGL }\n  TBGLCustomFrameBuffer = class\n  protected\n    FCanvas: pointer;\n    function GetTexture: IBGLTexture; virtual; abstract;\n    function GetHandle: pointer; virtual; abstract;\n    function GetMatrix: TAffineMatrix; virtual; abstract;\n    function GetHeight: integer; virtual; abstract;\n    function GetProjectionMatrix: TMatrix4D; virtual; abstract;\n    function GetWidth: integer; virtual; abstract;\n    procedure SetMatrix(AValue: TAffineMatrix); virtual; abstract;\n    procedure SetProjectionMatrix(AValue: TMatrix4D); virtual; abstract;\n\n  public\n    procedure UseOrthoProjection; overload; virtual;\n    procedure UseOrthoProjection(AMinX,AMinY,AMaxX,AMaxY: single); overload; virtual;\n    function MakeTextureAndFree: IBGLTexture; virtual;\n\n    procedure SetCanvas(ACanvas: Pointer); //for internal use\n    property Matrix: TAffineMatrix read GetMatrix write SetMatrix;\n    property ProjectionMatrix: TMatrix4D read GetProjectionMatrix write SetProjectionMatrix;\n    property Width: integer read GetWidth;\n    property Height: integer read GetHeight;\n    property Handle: pointer read GetHandle;\n    property Texture: IBGLTexture read GetTexture;\n  end;\n\ntype\n  TBGLBitmapAny = class of TBGLCustomBitmap;\n  TBGLTextureAny = class of TBGLCustomTexture;\n\nvar\n  BGLBitmapFactory : TBGLBitmapAny;\n  BGLTextureFactory: TBGLTextureAny;\n\nfunction OrthoProjectionToOpenGL(AMinX,AMinY,AMaxX,AMaxY: Single): TMatrix4D;\nfunction GetPowerOfTwo( Value : Integer ) : Integer;\n\nimplementation\n\nuses BGRAFilterScanner;\n\nprocedure TBGLCustomFrameBuffer.UseOrthoProjection;\nbegin\n  ProjectionMatrix := OrthoProjectionToOpenGL(0,0,Width,Height);\nend;\n\nprocedure TBGLCustomFrameBuffer.UseOrthoProjection(AMinX, AMinY, AMaxX, AMaxY: single);\nbegin\n  ProjectionMatrix := OrthoProjectionToOpenGL(AMinX,AMinY,AMaxX,AMaxY);\nend;\n\nfunction TBGLCustomFrameBuffer.MakeTextureAndFree: IBGLTexture;\nbegin\n  result := nil;\n  raise exception.create('Not implemented');\nend;\n\nprocedure TBGLCustomFrameBuffer.SetCanvas(ACanvas: Pointer);\nbegin\n  FCanvas := ACanvas;\nend;\n\nfunction OrthoProjectionToOpenGL(AMinX, AMinY, AMaxX, AMaxY: Single): TMatrix4D;\nvar sx,sy: single;\nbegin\n  sx := 2/(AMaxX-AMinX);\n  sy := 2/(AMaxY-AMinY);\n  result[1,1] := sx;   result[2,1] := 0;     result[3,1] := 0;   result[4,1] := -1 - AMinX*sx;\n  result[1,2] := 0;    result[2,2] := -sy;   result[3,2] := 0;   result[4,2] := 1 + AMinY*sy;\n  result[1,3] := 0;    result[2,3] := 0;     result[3,3] := -1;  result[4,3] := 0;\n  result[1,4] := 0;    result[2,4] := 0;     result[3,4] := 0;   result[4,4] := 1;\nend;\n\nfunction GetPowerOfTwo( Value : Integer ) : Integer;\nbegin\n  Result := Value - 1;\n  Result := Result or ( Result shr 1 );\n  Result := Result or ( Result shr 2 );\n  Result := Result or ( Result shr 4 );\n  Result := Result or ( Result shr 8 );\n  Result := Result or ( Result shr 16 );\n  Result := Result + 1;\nend;\n\n{ TBGLCustomTexture }\n\nfunction TBGLCustomTexture.GetAllocatedHeight: integer;\nbegin\n  result := GetOpenGLAllocatedSize(FOpenGLTexture).Height;\nend;\n\nfunction TBGLCustomTexture.GetAllocatedWidth: integer;\nbegin\n  result := GetOpenGLAllocatedSize(FOpenGLTexture).Width;\nend;\n\nfunction TBGLCustomTexture.GetFlipX: IBGLTexture;\nbegin\n  result := Duplicate;\n  result.ToggleFlipX;\nend;\n\nfunction TBGLCustomTexture.GetFlipY: IBGLTexture;\nbegin\n  result := Duplicate;\n  result.ToggleFlipY;\nend;\n\nfunction TBGLCustomTexture.GetFrame(AIndex: integer): IBGLTexture;\nvar fc: integer;\nbegin\n  fc := GetFrameCount;\n  if fc <= 1 then\n    result := self\n  else\n    begin\n      if (AIndex < 1) or (AIndex > fc) then\n        result := NewEmpty\n      else\n      begin\n        result := Duplicate;\n        result.SetFrame(AIndex);\n      end;\n    end;\nend;\n\nfunction TBGLCustomTexture.GetFrameCount: integer;\nbegin\n  result := GetOpenGLFrameCount(FOpenGLTexture);\nend;\n\nfunction TBGLCustomTexture.GetFrameHeight: integer;\nbegin\n  result := FFrameHeight;\nend;\n\nfunction TBGLCustomTexture.GetFrameWidth: integer;\nbegin\n  result := FFrameWidth;\nend;\n\nfunction TBGLCustomTexture.GetHeight: integer;\nbegin\n  result := FHeight;\nend;\n\nfunction TBGLCustomTexture.GetMask: IBGLTexture;\nbegin\n  result := Duplicate;\n  result.ToggleMask;\nend;\n\nfunction TBGLCustomTexture.GetOpenGLBlendMode: TOpenGLBlendMode;\nbegin\n  result := FBlendMode;\nend;\n\nfunction TBGLCustomTexture.GetOpenGLTexture: TBGLTextureHandle;\nbegin\n  result := FOpenGLTexture;\nend;\n\nfunction TBGLCustomTexture.GetUseGradientColors: boolean;\nbegin\n  result := FUseGradientColor;\nend;\n\nfunction TBGLCustomTexture.GetWidth: integer;\nbegin\n  result := FWidth;\nend;\n\nfunction TBGLCustomTexture.GetImageCenter: TPointF;\nbegin\n  result := FImageCenter;\nend;\n\nprocedure TBGLCustomTexture.SetImageCenter(const AValue: TPointF);\nbegin\n  FImageCenter := AValue;\nend;\n\nfunction TBGLCustomTexture.GetResampleFilter: TOpenGLResampleFilter;\nbegin\n  result := FResampleFilter;\nend;\n\nprocedure TBGLCustomTexture.SetOpenGLBlendMode(AValue: TOpenGLBlendMode);\nbegin\n  FBlendMode := AValue;\nend;\n\nprocedure TBGLCustomTexture.SetResampleFilter(AValue: TOpenGLResampleFilter);\nbegin\n  if AValue <> FResampleFilter then\n  begin\n    FResampleFilter:= AValue;\n    UpdateGLResampleFilter(FOpenGLTexture, AValue);\n  end;\nend;\n\nclass function TBGLCustomTexture.GetNonPowerOfTwoSizeSupport: boolean;\nbegin\n  result := false;\nend;\n\nclass function TBGLCustomTexture.SupportsBGRAOrder: boolean;\nbegin\n  result := false;\nend;\n\nprocedure TBGLCustomTexture.SetUseGradientColors(AValue: boolean);\nbegin\n  FUseGradientColor := AValue;\nend;\n\nprocedure TBGLCustomTexture.DoDrawTriangleOrQuad(\n  const Points: array of TPointF; const APointsZ: array of Single;\n  const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128; const TexCoords: array of TPointF;\n  const AColors: array of TColorF);\nbegin\n  raise Exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomTexture.ToggleMask;\nbegin\n  FIsMask := not FIsMask;\nend;\n\nfunction TBGLCustomTexture.FilterBlurMotion(ARadius: single; ABlurType: TRadialBlurType;\n  ADirection: TPointF): IBGLTexture;\nbegin\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nfunction TBGLCustomTexture.FilterBlurRadial(ARadius: single; ABlurType: TRadialBlurType): IBGLTexture;\nbegin\n  result := nil;\n  raise exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomTexture.Update(ARGBAData: PLongWord; AllocatedWidth,\n  AllocatedHeight, ActualWidth, ActualHeight: integer; RGBAOrder: boolean);\nbegin\n  UpdateOpenGLTexture(FOpenGLTexture, ARGBAData, AllocatedWidth, AllocatedHeight, ActualWidth,ActualHeight,RGBAOrder);\n  ComputeOpenGLFramesCoord(FOpenGLTexture, round(FWidth/FFrameWidth),round(FWidth/FFrameHeight));\n  FWidth := ActualWidth;\n  FHeight := ActualHeight;\n  FImageCenter := PointF(FWidth*0.5,FHeight*0.5);\nend;\n\nprocedure TBGLCustomTexture.SetFrame(AIndex: integer);\nbegin\n  if (AIndex >= 1) and (AIndex <= GetFrameCount) then\n    begin\n      FFrame := AIndex;\n      FWidth := FFrameWidth;\n      FHeight:= FFrameHeight;\n      FImageCenter := PointF(FWidth*0.5,FHeight*0.5);\n    end;\nend;\n\nprocedure TBGLCustomTexture.SetGradientColors(ATopLeft, ATopRight,\n  ABottomRight, ABottomLeft: TBGRAPixel);\nbegin\n  FGradTopLeft := ATopLeft;\n  FGradTopRight := ATopRight;\n  FGradBottomLeft := ABottomLeft;\n  FGradBottomRight := ABottomRight;\n  GradientColors := true;\nend;\n\nprocedure TBGLCustomTexture.FreeMemory;\nbegin\n  if FOpenGLTextureOwned then\n  begin\n    FreeOpenGLTexture(FOpenGLTexture);\n    FOpenGLTexture := GetEmptyTexture;\n    FOpenGLTextureOwned := false;\n  end;\nend;\n\nprocedure TBGLCustomTexture.Bind(ATextureNumber: integer);\nbegin\n  raise Exception.Create('Not implemented');\nend;\n\nprocedure TBGLCustomTexture.NotifyInvalidFrameSize;\nbegin\n  //\nend;\n\nprocedure TBGLCustomTexture.NotifyErrorLoadingFile(AFilename: string);\nbegin\n  //\nend;\n\nprocedure TBGLCustomTexture.Init(ATexture: TBGLTextureHandle; AWidth,\n  AHeight: integer; AOwned: boolean);\nbegin\n  FOpenGLTexture:= ATexture;\n  FWidth := AWidth;\n  FHeight := AHeight;\n  FImageCenter := PointF(FWidth*0.5,FHeight*0.5);\n  FFrame:= 0;\n  FFrameWidth := AWidth;\n  FFrameHeight := AHeight;\n  FIsMask:= false;\n  FOpenGLTextureOwned := AOwned;\nend;\n\nfunction TBGLCustomTexture.Duplicate: TBGLCustomTexture;\nbegin\n  result := NewFromTexture(FOpenGLTexture, FWidth, FHeight);\n  result.FFrame := FFrame;\n  result.FFrameWidth := FFrameWidth;\n  result.FFrameHeight := FFrameHeight;\n  result.FIsMask := FIsMask;\n  result.FResampleFilter := FResampleFilter;\n  result.FGradTopLeft := FGradTopLeft;\n  result.FGradTopRight := FGradTopRight;\n  result.FGradBottomRight := FGradBottomRight;\n  result.FGradBottomLeft := FGradBottomLeft;\n  result.FUseGradientColor := FUseGradientColor;\n  result.FBlendMode := FBlendMode;\nend;\n\nprocedure TBGLCustomTexture.FreeMemoryOnDestroy;\nbegin\n  FreeMemory;\nend;\n\nprocedure TBGLCustomTexture.InitEmpty;\nbegin\n  Init(GetEmptyTexture,0,0,False);\nend;\n\nprocedure TBGLCustomTexture.InitFromData(ARGBAData: PLongWord;\n  AllocatedWidth, AllocatedHeight, ActualWidth, ActualHeight: integer;\n  RGBAOrder: boolean);\nvar tex: TBGLTextureHandle;\n    MaxTexSize: integer;\nbegin\n  MaxTexSize := GetOpenGLMaxTexSize;\n  if ( AllocatedWidth > MaxTexSize ) or ( AllocatedHeight > MaxTexSize ) or\n    (AllocatedWidth <= 0) or (AllocatedHeight <= 0) then\n    InitEmpty\n  else\n  begin\n    tex := CreateOpenGLTexture(ARGBAData,AllocatedWidth,AllocatedHeight,ActualWidth,ActualHeight,RGBAOrder);\n    FResampleFilter := orfLinear;\n    ComputeOpenGLFramesCoord(tex);\n    Init(tex,ActualWidth,ActualHeight,True);\n  end;\nend;\n\nprocedure TBGLCustomTexture.InitFromStream(AStream: TStream);\nvar bmp: TBGLCustomBitmap;\nbegin\n  bmp := nil;\n  try\n    bmp := BGLBitmapFactory.Create(AStream);\n    if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n    InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height,TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n  except\n    InitEmpty;\n  end;\n  bmp.Free;\nend;\n\ndestructor TBGLCustomTexture.Destroy;\nbegin\n  FreeMemoryOnDestroy;\n  inherited Destroy;\nend;\n\nconstructor TBGLCustomTexture.Create;\nbegin\n  InitEmpty;\nend;\n\nconstructor TBGLCustomTexture.Create(ATexture: TBGLTextureHandle; AWidth,\n  AHeight: integer);\nbegin\n  Init(ATexture, AWidth,AHeight, False);\nend;\n\nconstructor TBGLCustomTexture.Create(ARGBAData: PLongWord; AllocatedWidth,\n  AllocatedHeight, ActualWidth, ActualHeight: integer; RGBAOrder: boolean);\nbegin\n  InitFromData(ARGBAData,AllocatedWidth,AllocatedHeight,ActualWidth,ActualHeight,RGBAOrder);\nend;\n\nconstructor TBGLCustomTexture.Create(AFPImage: TFPCustomImage);\nvar bmp: TBGLCustomBitmap;\nbegin\n  if (AFPImage is TBGRACustomBitmap) and\n    (\n      (Assigned(BGLTextureFactory) and BGLTextureFactory.GetNonPowerOfTwoSizeSupport) or\n\n      ((AFPImage.Width = GetPowerOfTwo(AFPImage.Width)) and\n      (AFPImage.Height = GetPowerOfTwo(AFPImage.Height)))\n    ) then\n  begin\n    with TBGRACustomBitmap(AFPImage) do\n    begin\n      if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then SwapRedBlue;\n      if LineOrder = riloBottomToTop then VerticalFlip;\n      InitFromData(PLongWord(Data), Width,Height, Width,Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n      if LineOrder = riloBottomToTop then VerticalFlip;\n      if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then SwapRedBlue;\n    end;\n  end else\n  begin\n    bmp := BGLBitmapFactory.Create(AFPImage);\n    if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n    InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n    bmp.Free;\n  end;\nend;\n\nconstructor TBGLCustomTexture.Create(ABitmap: TBitmap);\nvar bmp: TBGLCustomBitmap;\nbegin\n  bmp := BGLBitmapFactory.Create(ABitmap);\n  if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n  InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n  bmp.Free;\nend;\n\nconstructor TBGLCustomTexture.Create(AWidth, AHeight: integer; Color: TColor);\nvar bmp: TBGLCustomBitmap;\nbegin\n  bmp := BGLBitmapFactory.Create(AWidth,AHeight,Color);\n  if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n  InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n  bmp.Free;\nend;\n\nconstructor TBGLCustomTexture.Create(AWidth, AHeight: integer;\n  Color: TBGRAPixel);\nvar bmp: TBGLCustomBitmap;\nbegin\n  bmp := BGLBitmapFactory.Create(AWidth,AHeight,Color);\n  if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n  InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n  bmp.Free;\nend;\n\nconstructor TBGLCustomTexture.Create(AFilenameUTF8: string);\nvar bmp: TBGLCustomBitmap;\nbegin\n  bmp := nil;\n  try\n    bmp := BGLBitmapFactory.Create(AFilenameUTF8, True);\n    if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n    InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder or not SupportsBGRAOrder);\n  except\n    InitEmpty;\n    NotifyErrorLoadingFile(AFilenameUTF8);\n  end;\n  bmp.Free;\nend;\n\nconstructor TBGLCustomTexture.Create(AFilenameUTF8: string; AWidth,\n  AHeight: integer; AResampleFilter: TResampleFilter);\nvar bmp, temp: TBGLCustomBitmap;\nbegin\n  bmp := nil;\n  try\n    bmp := BGLBitmapFactory.Create(AFilenameUTF8, True);\n    if (bmp.Width <> AWidth) or (bmp.Height <> AHeight) then\n    begin\n      if AResampleFilter = rfBox then\n        temp := bmp.Resample(AWidth,AHeight,rmSimpleStretch) as TBGLCustomBitmap\n      else\n      begin\n        bmp.ResampleFilter := AResampleFilter;\n        temp := bmp.Resample(AWidth,AHeight) as TBGLCustomBitmap;\n      end;\n      bmp.Free;\n      bmp := temp;\n      temp := nil;\n    end;\n    if not TBGRAPixel_RGBAOrder and not SupportsBGRAOrder then bmp.SwapRedBlue;\n    InitFromData(PLongWord(bmp.Data), bmp.AllocatedWidth,bmp.AllocatedHeight, bmp.Width,bmp.Height, TBGRAPixel_RGBAOrder);\n  except\n    InitEmpty;\n    NotifyErrorLoadingFile(AFilenameUTF8);\n  end;\n  bmp.Free;\nend;\n\nconstructor TBGLCustomTexture.Create(AStream: TStream);\nbegin\n  InitFromStream(AStream);\nend;\n\nprocedure TBGLCustomTexture.SetFrameSize(x, y: integer);\nbegin\n  if (FWidth = 0) or (FHeight = 0) then exit;\n  if (x <= 0) or (y <= 0) or (x > FWidth) or (y > FHeight) then\n  begin\n    NotifyInvalidFrameSize;\n    exit;\n  end;\n  ComputeOpenGLFramesCoord(FOpenGLTexture, FWidth div x,FHeight div y);\n  FFrameWidth:= x;\n  FFrameHeight:= y;\nend;\n\nprocedure TBGLCustomTexture.Draw(x, y: single; AAlpha: byte);\nbegin\n  DoStretchDraw(x,y,FWidth,FHeight,BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.Draw(x, y: single; AColor: TBGRAPixel);\nbegin\n  DoStretchDraw(x,y,FWidth,FHeight,AColor);\nend;\n\nprocedure TBGLCustomTexture.Draw(x, y: single; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; AAlpha: byte);\nbegin\n  Draw(x,y, AHorizAlign, AVertAlign, BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.Draw(x, y: single; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  StretchDraw(x,y, FWidth,FHeight, AHorizAlign,AVertAlign, AColor);\nend;\n\nprocedure TBGLCustomTexture.StretchDraw(x, y, w, h: single; AAlpha: byte);\nbegin\n  DoStretchDraw(x,y,w,h, BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.StretchDraw(x, y, w, h: single;\n  AColor: TBGRAPixel);\nbegin\n  DoStretchDraw(x,y,w,h,AColor);\nend;\n\nprocedure TBGLCustomTexture.StretchDraw(x, y, w, h: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AAlpha: byte);\nbegin\n  StretchDraw(x,y,w,h, AHorizAlign,AVertAlign, BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.StretchDraw(x, y, w, h: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  case AHorizAlign of\n  taCenter: DecF(x, w*0.5);\n  taRightJustify: DecF(x, w-1);\n  end;\n  case AVertAlign of\n  tlCenter: DecF(y, h*0.5);\n  tlBottom: DecF(y, h);\n  end;\n  DoStretchDraw(x,y,w,h,AColor);\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single;\n  const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte);\nbegin\n  StretchDrawAngle(x,y,FWidth,FHeight,angleDeg,imageCenter,ARestoreOffsetAfterRotation,BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single;\n  const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel);\nbegin\n  StretchDrawAngle(x,y,FWidth,FHeight,angleDeg,imageCenter,ARestoreOffsetAfterRotation,AColor);\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single; AAlpha: byte);\nbegin\n  StretchDrawAngle(x,y, FWidth,FHeight, angleDeg, AAlpha);\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single; AColor: TBGRAPixel);\nbegin\n  StretchDrawAngle(x,y, FWidth,FHeight, angleDeg, AColor);\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AAlpha: byte);\nbegin\n  StretchDrawAngle(x,y,FWidth,FHeight,angleDeg, AHorizAlign, AVertAlign, AAlpha);\nend;\n\nprocedure TBGLCustomTexture.DrawAngle(x, y, angleDeg: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  StretchDrawAngle(x,y,FWidth,FHeight, angleDeg, AHorizAlign, AVertAlign, AColor);\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single;\n  const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AAlpha: byte);\nbegin\n  StretchDrawAngle(x,y,w,h,angleDeg,imageCenter,ARestoreOffsetAfterRotation,BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single;\n  const imageCenter: TPointF; ARestoreOffsetAfterRotation: boolean; AColor: TBGRAPixel);\nvar\n  rotationCenter: TPointF;\nbegin\n  if (FWidth=0) or (FHeight = 0) then exit;\n  rotationCenter := PointF(imageCenter.x*w/FWidth, imageCenter.y*h/FHeight);\n  if not ARestoreOffsetAfterRotation then\n  begin\n    DecF(x, rotationCenter.x);\n    DecF(y, rotationCenter.y);\n  end;\n  DoStretchDrawAngle(x,y,w,h,angleDeg,rotationCenter+PointF(x,y),AColor);\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single; AAlpha: byte);\nbegin\n  StretchDrawAngle(x, y, w,h, angleDeg, FImageCenter, True, BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single;\n  AColor: TBGRAPixel);\nbegin\n  StretchDrawAngle(x, y, w,h, angleDeg, FImageCenter, True, AColor);\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AAlpha: byte);\nbegin\n  StretchDrawAngle(x,y,w,h,angleDeg, AHorizAlign, AVertAlign, BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.StretchDrawAngle(x, y,w,h, angleDeg: single;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nvar imageCenter: TPointF;\nbegin\n  case AHorizAlign of\n  taCenter: imageCenter.x := FWidth*0.5;\n  taRightJustify: imageCenter.x := FWidth;\n  else imageCenter.x := 0;\n  end;\n  case AVertAlign of\n  tlCenter: imageCenter.y := FHeight*0.5;\n  tlBottom: imageCenter.y := FHeight;\n  else imageCenter.y := 0;\n  end;\n  StretchDrawAngle(x,y,w,h, angleDeg, imageCenter, False, AColor);\nend;\n\nprocedure TBGLCustomTexture.DrawAffine(const Origin, HAxis, VAxis: TPointF;\n  AAlpha: byte);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  DoDrawAffine(Origin,HAxis,VAxis, BGRA(255,255,255,AAlpha));\n  {$POP}\nend;\n\nprocedure TBGLCustomTexture.DrawAffine(const Origin, HAxis, VAxis: TPointF;\n  AColor: TBGRAPixel);\nbegin\n  {$PUSH}{$OPTIMIZATION OFF}\n  DoDrawAffine(Origin,HAxis,VAxis, AColor);\n  {$POP}\nend;\n\nprocedure TBGLCustomTexture.DrawAffine(x, y: single;\n  const AMatrix: TAffineMatrix; AAlpha: byte);\nbegin\n  DoDrawAffine(AMatrix*PointF(0,0) + PointF(x,y), AMatrix*PointF(Width,0) + PointF(x,y),\n     AMatrix*PointF(0,Height) + PointF(x,y), BGRA(255,255,255,AAlpha));\nend;\n\nprocedure TBGLCustomTexture.DrawAffine(x, y: single;\n  const AMatrix: TAffineMatrix; AColor: TBGRAPixel);\nbegin\n  DoDrawAffine(AMatrix*PointF(0,0) + PointF(x,y), AMatrix*PointF(Width,0) + PointF(x,y),\n     AMatrix*PointF(0,Height) + PointF(x,y), AColor);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints: array of TPointF;\n  const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints) = 3) and (length(ATexCoords) = 3) then\n    DoDrawTriangleOrQuad(APoints,[],[],[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints: array of TPointF;\n  const ATexCoords: array of TPointF; const AColors: array of TColorF);\nbegin\n  if (length(APoints) = 3) and (length(ATexCoords) = 3)\n     and (length(AColors) = 3) then\n    DoDrawTriangleOrQuad(APoints,[],[],[],ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints: array of TPointF;\n  const APointsZ: array of Single; const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints) = 3) and (length(ATexCoords) = 3)\n     and (length(APointsZ) = 3) then\n  DoDrawTriangleOrQuad(APoints,APointsZ,[],[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints: array of TPointF;\n  const APointsZ: array of Single; const ATexCoords: array of TPointF;\n  const AColors: array of TColorF);\nbegin\n  if (length(APoints) = 3) and (length(ATexCoords) = 3)\n     and (length(APointsZ) = 3) and (length(AColors) = 3) then\n  DoDrawTriangleOrQuad(APoints,APointsZ,[],[],ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(\n  const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints3D) = 3) and (length(ATexCoords) = 3) then\n  DoDrawTriangleOrQuad([],[],APoints3D,[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(\n  const APoints3D: array of TPoint3D_128; const ATexCoords: array of TPointF;\n  const AColors: array of TColorF);\nbegin\n  if (length(APoints3D) = 3) and (length(ATexCoords) = 3)\n  and (length(AColors) = 3) then\n  DoDrawTriangleOrQuad([],[],APoints3D,[],ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints3D) = 3) and (length(ATexCoords) = 3)\n  and (length(ANormals3D) = 3) then\n  DoDrawTriangleOrQuad([],[],APoints3D,ANormals3D,ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawTriangle(const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF; const AColors: array of TColorF);\nbegin\n  if (length(APoints3D) = 3) and (length(ATexCoords) = 3)\n  and (length(ANormals3D) = 3)\n  and (length(AColors) = 3) then\n  DoDrawTriangleOrQuad([],[],APoints3D,ANormals3D,ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints: array of TPointF;\n  const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints) = 4) and (length(ATexCoords) = 4) then\n    DoDrawTriangleOrQuad(APoints,[],[],[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints: array of TPointF;\n  const ATexCoords: array of TPointF; const AColors: array of TColorF);\nbegin\n  if (length(APoints) = 4) and (length(ATexCoords) = 4)\n    and (length(AColors) = 4) then\n    DoDrawTriangleOrQuad(APoints,[],[],[],ATexCoords, AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints: array of TPointF;\n  const APointsZ: array of Single; const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints) = 4) and (length(ATexCoords) = 4)\n     and (length(APointsZ) = 4) then\n    DoDrawTriangleOrQuad(APoints,APointsZ,[],[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints: array of TPointF;\n  const APointsZ: array of Single; const ATexCoords: array of TPointF;\n  const AColors: array of TColorF);\nbegin\n  if (length(APoints) = 4) and (length(ATexCoords) = 4)\n     and (length(APointsZ) = 4) and (length(AColors) = 4) then\n    DoDrawTriangleOrQuad(APoints,APointsZ,[],[],ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints3D) = 4) and (length(ATexCoords) = 4) then\n    DoDrawTriangleOrQuad([],[],APoints3D,[],ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF; const AColors: array of TColorF);\nbegin\n  if (length(APoints3D) = 4) and (length(ATexCoords) = 4)\n     and (length(AColors) = 4) then\n    DoDrawTriangleOrQuad([],[],APoints3D,[],ATexCoords,AColors);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF);\nbegin\n  if (length(APoints3D) = 4) and (length(ATexCoords) = 4)\n     and (length(ANormals3D) = 4) then\n    DoDrawTriangleOrQuad([],[],APoints3D,ANormals3D,ATexCoords,[]);\nend;\n\nprocedure TBGLCustomTexture.DrawQuad(const APoints3D: array of TPoint3D_128;\n  const ANormals3D: array of TPoint3D_128;\n  const ATexCoords: array of TPointF; const AColors: array of TColorF);\nbegin\n  if (length(APoints3D) = 4) and (length(ATexCoords) = 4)\n     and (length(ANormals3D) = 4)\n     and (length(AColors) = 4) then\n    DoDrawTriangleOrQuad([],[],APoints3D,ANormals3D,ATexCoords,AColors);\nend;\n\n{ TBGLCustomFont }\n\nfunction TBGLCustomFont.GetScale: single;\nbegin\n  result := FScale;\nend;\n\nfunction TBGLCustomFont.GetStepX: single;\nbegin\n  result := FStepX;\nend;\n\nprocedure TBGLCustomFont.SetScale(AValue: single);\nbegin\n  FScale:= AValue;\nend;\n\nprocedure TBGLCustomFont.SetStepX(AValue: single);\nbegin\n  FStepX:= AValue;\nend;\n\nfunction TBGLCustomFont.GetHorizontalAlign: TAlignment;\nbegin\n  result := FHorizontalAlign;\nend;\n\nfunction TBGLCustomFont.GetJustify: boolean;\nbegin\n  result := FJustify;\nend;\n\nfunction TBGLCustomFont.GetVerticalAlign: TTextLayout;\nbegin\n  result := FVerticalAlign;\nend;\n\nprocedure TBGLCustomFont.SetHorizontalAlign(AValue: TAlignment);\nbegin\n  FHorizontalAlign:= AValue;\nend;\n\nprocedure TBGLCustomFont.SetJustify(AValue: boolean);\nbegin\n  FJustify:= AValue;\nend;\n\nprocedure TBGLCustomFont.SetVerticalAlign(AValue: TTextLayout);\nbegin\n  FVerticalAlign := AValue;\nend;\n\nfunction TBGLCustomFont.GetDefaultColor: TBGRAPixel;\nbegin\n  result := BGRAWhite;\nend;\n\nprocedure TBGLCustomFont.SwapRectIfNeeded(var ARect: TRectF);\nvar temp: single;\nbegin\n  if ARect.Right < ARect.Left then\n  begin\n    temp := ARect.Left;\n    ARect.Left := ARect.Right;\n    ARect.Right := temp;\n  end;\n  if ARect.Bottom < ARect.Top then\n  begin\n    temp := ARect.Top;\n    ARect.Top := ARect.Bottom;\n    ARect.Bottom := temp;\n  end;\nend;\n\nprocedure TBGLCustomFont.SwapRectIfNeeded(var ARect: TRect);\nvar temp: integer;\nbegin\n  if ARect.Right < ARect.Left then\n  begin\n    temp := ARect.Left;\n    ARect.Left := ARect.Right;\n    ARect.Right := temp;\n  end;\n  if ARect.Bottom < ARect.Top then\n  begin\n    temp := ARect.Top;\n    ARect.Top := ARect.Bottom;\n    ARect.Bottom := temp;\n  end;\nend;\n\nprocedure TBGLCustomFont.SetPadding(AValue: TRectF);\nbegin\n  FPadding:=AValue;\nend;\n\nfunction TBGLCustomFont.GetPadding: TRectF;\nbegin\n  result := FPadding;\nend;\n\nprocedure TBGLCustomFont.Init;\nbegin\n  FScale:= 1;\n  FStepX:= 0;\n  FHorizontalAlign:= taLeftJustify;\n  FVerticalAlign:= tlTop;\n  FJustify:= false;\n  FPadding := RectF(1,1,1,1);\nend;\n\nprocedure TBGLCustomFont.FreeMemoryOnDestroy;\nbegin\n  FreeMemory;\nend;\n\nprocedure TBGLCustomFont.FreeMemory;\nbegin\n\nend;\n\nconstructor TBGLCustomFont.Create(AFilename: UTF8String);\nbegin\n  Init;\n  LoadFromFile(AFilename);\nend;\n\ndestructor TBGLCustomFont.Destroy;\nbegin\n  FreeMemoryOnDestroy;\n  inherited Destroy;\nend;\n\nprocedure TBGLCustomFont.TextOut(X, Y: Single; const Text: UTF8String);\nbegin\n  DoTextOut(X,Y,Text,GetDefaultColor);\nend;\n\nprocedure TBGLCustomFont.TextOut(X, Y: Single; const Text: UTF8String;\n  AColor: TBGRAPixel);\nbegin\n  DoTextOut(X,Y,Text,AColor);\nend;\n\nprocedure TBGLCustomFont.TextOut(X, Y: Single; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout);\nbegin\n  TextOut(X,Y,Text,AHorizAlign,AVertAlign,GetDefaultColor);\nend;\n\nprocedure TBGLCustomFont.TextOut(X, Y: Single; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nvar PrevHorizAlign: TAlignment;\n    PrevVertAlign: TTextLayout;\nbegin\n  PrevHorizAlign:= GetHorizontalAlign;\n  PrevVertAlign:= GetVerticalAlign;\n  SetHorizontalAlign(AHorizAlign);\n  SetVerticalAlign(AVertAlign);\n  DoTextOut(X,Y,Text,AColor);\n  SetHorizontalAlign(PrevHorizAlign);\n  SetVerticalAlign(PrevVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String);\nbegin\n  DoTextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,GetDefaultColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AColor: TBGRAPixel);\nbegin\n  DoTextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AVertAlign: TTextLayout);\nbegin\n  TextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,AVertAlign,GetDefaultColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nvar PrevVertAlign: TTextLayout;\nbegin\n  PrevVertAlign:= GetVerticalAlign;\n  SetVerticalAlign(AVertAlign);\n  DoTextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,AColor);\n  SetVerticalAlign(PrevVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout);\nbegin\n  TextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,AHorizAlign,AVertAlign,GetDefaultColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(X, Y, Width, Height: Single;\n  const Text: UTF8String; AHorizAlign: TAlignment; AVertAlign: TTextLayout;\n  AColor: TBGRAPixel);\nvar PrevHorizAlign: TAlignment;\n    PrevVertAlign: TTextLayout;\n    PrevJustify: boolean;\nbegin\n  PrevHorizAlign:= GetHorizontalAlign;\n  PrevVertAlign:= GetVerticalAlign;\n  PrevJustify := GetJustify;\n  SetHorizontalAlign(AHorizAlign);\n  SetVerticalAlign(AVertAlign);\n  SetJustify(False);\n  DoTextRect(X+Padding.Left,Y+Padding.Top,Width-Padding.Left-Padding.Right,Height-Padding.Top-Padding.Bottom,Text,AColor);\n  SetHorizontalAlign(PrevHorizAlign);\n  SetVerticalAlign(PrevVertAlign);\n  SetJustify(PrevJustify);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String;\n  AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String;\n  AVertAlign: TTextLayout);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String;\n  AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AVertAlign, AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AHorizAlign, AVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRect; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AHorizAlign, AVertAlign, AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String;\n  AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String;\n  AVertAlign: TTextLayout);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String;\n  AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AVertAlign, AColor);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AHorizAlign, AVertAlign);\nend;\n\nprocedure TBGLCustomFont.TextRect(ARect: TRectF; const Text: UTF8String;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; AColor: TBGRAPixel);\nbegin\n  SwapRectIfNeeded(ARect);\n  with ARect do TextRect(Left,Top,Right-Left,Bottom-Top,Text,\n    AHorizAlign, AVertAlign, AColor);\nend;\n\n{ TBGLCustomBitmap }\n\nprocedure TBGLCustomBitmap.Init;\nbegin\n  inherited Init;\n  FTextureInvalidated := true;\n  FActualRect := rect(0,0,0,0);\n  FScanWidth := 0;\n  FScanHeight:= 0;\n  FTexture := nil;\n  FLineOrder := riloTopToBottom;\nend;\n\nfunction TBGLCustomBitmap.GetTexture: IBGLTexture;\nbegin\n  if (Width = 0) or (Height = 0) then\n    result := BGLTextureFactory.Create\n  else\n  begin\n    if FTextureInvalidated then\n    begin\n      FTextureInvalidated := false;\n      if not TBGRAPixel_RGBAOrder and not BGLTextureFactory.SupportsBGRAOrder then SwapRedBlueWithoutInvalidate(Rect(0,0,Width,Height));\n      if FTexture = nil then\n        FTexture := BGLTextureFactory.Create(PLongWord(self.Data), AllocatedWidth,AllocatedHeight, Width,Height, TBGRAPixel_RGBAOrder or not BGLTextureFactory.SupportsBGRAOrder)\n      else\n        FTexture.Update(PLongWord(self.Data), AllocatedWidth,AllocatedHeight, Width,Height, TBGRAPixel_RGBAOrder or not BGLTextureFactory.SupportsBGRAOrder);\n      if not TBGRAPixel_RGBAOrder and not BGLTextureFactory.SupportsBGRAOrder then SwapRedBlueWithoutInvalidate(Rect(0,0,Width,Height));\n    end;\n    result := FTexture;\n  end;\nend;\n\nprocedure TBGLCustomBitmap.NotifySizeTooBigForOpenGL;\nbegin\n  raise exception.Create('Size too big for OpenGL');\nend;\n\nprocedure TBGLCustomBitmap.NotifyOpenGLContextNotCreatedYet;\nbegin\n  raise exception.Create('OpenGL context has not been created yet');\nend;\n\nfunction TBGLCustomBitmap.GetTextureGL: IUnknown;\nbegin\n  Result:=GetTexture;\nend;\n\nprocedure TBGLCustomBitmap.SwapRedBlueWithoutInvalidate(ARect: TRect);\nvar y: Int32or64;\n    p: PBGRAPixel;\nbegin\n  if not CheckClippedRectBounds(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom) then exit;\n  for y := ARect.Top to ARect.Bottom-1 do\n  begin\n    p := GetScanlineFast(y)+ARect.Left;\n    TBGRAFilterScannerSwapRedBlue.ComputeFilterAt(p,p, ARect.Right-ARect.Left, False);\n  end;\nend;\n\nprocedure TBGLCustomBitmap.InvalidateBitmap;\nbegin\n  inherited InvalidateBitmap;\n  FTextureInvalidated := true;\nend;\n\nprocedure TBGLCustomBitmap.Fill(const c: TBGRAPixel);\nvar oldClip: TRect;\nbegin\n  oldClip := ClipRect;\n  NoClip;\n  FillRect(ClipRect, c, dmSet);\n  ClipRect := oldClip;\nend;\n\nprocedure TBGLCustomBitmap.NoClip;\nbegin\n  ClipRect := FActualRect;\nend;\n\ndestructor TBGLCustomBitmap.Destroy;\nbegin\n  if FTexture <> nil then\n  begin\n    //always free the memory of the texture\n    FTexture.FreeMemory;\n    FTexture := nil;\n  end;\n  inherited Destroy;\nend;\n\nprocedure TBGLCustomBitmap.SwapRedBlue;\nvar previousClip : TRect;\nbegin\n  previousClip := ClipRect;\n  NoClip;\n  SwapRedBlue(rect(0,0,Width,Height));\n  ClipRect := previousClip;\nend;\n\nfunction TBGLCustomBitmap.Resample(newWidth, newHeight: integer;\n  mode: TResampleMode; ACopyProperties: Boolean=False): TBGLCustomBitmap;\nvar temp,resampled: TBGRACustomBitmap;\nbegin\n  temp := TBGRABitmap.Create(FActualWidth,FActualHeight);\n  temp.PutImage(-FActualRect.Left,-FActualRect.Top, self, dmSet);\n  temp.ResampleFilter := ResampleFilter;\n  resampled := temp.Resample(NewWidth,NewHeight,mode);\n  temp.Free;\n  Result:= NewBitmap(resampled) as TBGLCustomBitmap;\n  resampled.Free;\n  if ACopyProperties then CopyPropertiesTo(Result);\nend;\n\nprocedure TBGLCustomBitmap.ApplyGlobalOpacity(alpha: byte);\nvar oldClip: TRect;\nbegin\n  oldClip := ClipRect;\n  NoClip;\n  ApplyGlobalOpacity(FActualRect,alpha);\n  ClipRect := oldClip;\nend;\n\nprocedure TBGLCustomBitmap.ReplaceColor(before, after: TColor);\nvar oldClip: TRect;\nbegin\n  oldClip := ClipRect;\n  NoClip;\n  ReplaceColor(FActualRect, before, after);\n  ClipRect := oldClip;\nend;\n\nprocedure TBGLCustomBitmap.ReplaceColor(const ABefore, AAfter: TBGRAPixel);\nvar oldClip: TRect;\nbegin\n  oldClip := ClipRect;\n  NoClip;\n  ReplaceColor(FActualRect, ABefore, AAfter);\n  ClipRect := oldClip;\nend;\n\nprocedure TBGLCustomBitmap.ReplaceTransparent(const AAfter: TBGRAPixel);\nvar oldClip: TRect;\nbegin\n  oldClip := ClipRect;\n  NoClip;\n  ReplaceTransparent(FActualRect,AAfter);\n  ClipRect := oldClip;\nend;\n\nprocedure TBGLCustomBitmap.SetClipRect(const AValue: TRect);\nvar r: TRect;\nbegin\n  r := TRect.Intersect(AValue, FActualRect);\n  inherited SetClipRect(r);\nend;\n\nprocedure TBGLCustomBitmap.SetSize(AWidth, AHeight: integer);\nvar AllocatedWidthNeeded,AllocatedHeightNeeded,\n    MaxTexSize: Integer;\nbegin\n  if AWidth < 0 then AWidth := 0;\n  if AHeight < 0 then AHeight := 0;\n  if (AWidth = Width) and (AHeight = Height) then exit;\n  if Assigned(BGLTextureFactory) and BGLTextureFactory.GetNonPowerOfTwoSizeSupport then\n  begin\n    AllocatedWidthNeeded := AWidth;\n    AllocatedHeightNeeded := AHeight;\n  end else\n  begin\n    AllocatedWidthNeeded := GetPowerOfTwo(AWidth);\n    AllocatedHeightNeeded := GetPowerOfTwo(AHeight);\n  end;\n  MaxTexSize := GetOpenGLMaxTexSize;\n  if (AllocatedWidthNeeded > MaxTexSize) or\n     (AllocatedHeightNeeded > MaxTexSize) then\n  begin\n    if MaxTexSize = 0 then\n      NotifyOpenGLContextNotCreatedYet\n    else\n      NotifySizeTooBigForOpenGL;\n    if AllocatedWidthNeeded > MaxTexSize then\n    begin\n      AllocatedWidthNeeded := MaxTexSize;\n      AWidth := MaxTexSize;\n    end;\n    if AllocatedHeightNeeded > MaxTexSize then\n    begin\n      AllocatedHeightNeeded := MaxTexSize;\n      AHeight := MaxTexSize;\n    end;\n  end;\n  FActualWidth := AWidth;\n  FActualHeight := AHeight;\n  FAllocatedWidth := AllocatedWidthNeeded;\n  FAllocatedHeight := AllocatedHeightNeeded;\n  FActualRect := rect(0,0,FActualWidth,FActualHeight);\n  if (FAllocatedWidth <> inherited Width) or\n     (FAllocatedHeight <> inherited Height) then\n    inherited SetSize(FAllocatedWidth, FAllocatedHeight);\n  inherited NoClip;\n  inherited FillRect(Width,0,FAllocatedWidth,Height, BGRAPixelTransparent, dmSet);\n  inherited FillRect(0,Height,FAllocatedWidth,FAllocatedHeight, BGRAPixelTransparent, dmSet);\n  NoClip;\n  FScanWidth := Width;\n  FScanHeight:= Height;\n  FTextureInvalidated:= true;\nend;\n\nfunction TBGLCustomBitmap.MakeTextureAndFree: IBGLTexture;\nbegin\n  result := Texture;\n  FTexture := nil;\n  Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraopenraster.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ OpenRaster layered image format }\nunit BGRAOpenRaster;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALayers, zipper, DOM, BGRABitmap, BGRALayerOriginal,\n  BGRASVGShapes, FPImage, BGRASVG;\n\nconst\n  OpenRasterMimeType = 'image/openraster'; //do not change, it's part of the file format\n  OpenRasterSVGDefaultDPI = 90;\n\ntype\n  { Layered image using OpenRaster format }\n  TBGRAOpenRasterDocument = class(TBGRALayeredBitmap)\n  private\n    FFiles: array of record\n      Filename: string;\n      Stream: TMemoryStream;\n    end;\n    FStackXML: TXMLDocument;\n    FZipInputStream: TStream;\n    procedure SetMimeType(AValue: string);\n  protected\n    Procedure ZipOnCreateStream(Sender : TObject; var AStream : TStream; AItem : TFullZipFileEntry);\n    Procedure ZipOnDoneStream(Sender : TObject; var AStream : TStream; AItem : TFullZipFileEntry);\n    Procedure ZipOnOpenInputStream(Sender : TObject; var AStream : TStream);\n    Procedure ZipOnCloseInputStream(Sender : TObject; var AStream : TStream);\n    procedure ClearFiles;\n    function GetMemoryStream(AFilename: string): TMemoryStream;\n    procedure SetMemoryStream(AFilename: string; AStream: TMemoryStream);\n    function AddLayerFromMemoryStream(ALayerFilename: string): integer;\n    function CopyRasterLayerToMemoryStream(ALayerIndex: integer; ALayerFilename: string): boolean;\n    procedure CopySVGToMemoryStream(ASVG: TBGRASVG; ASVGMatrix: TAffineMatrix; AOutFilename: string; out AOffset: TPoint);\n    function CopyBitmapToMemoryStream(ABitmap: TBGRABitmap; AFilename: string): boolean;\n    procedure SetMemoryStreamAsString(AFilename: string; AContent: string);\n    function GetMemoryStreamAsString(AFilename: string): string;\n    procedure UnzipFromStream(AStream: TStream; AFileList: TStrings = nil);\n    procedure UnzipFromFile(AFilenameUTF8: string);\n    procedure ZipToFile(AFilenameUTF8: string);\n    procedure ZipToStream(AStream: TStream);\n    procedure CopyThumbnailToMemoryStream(AMaxWidth, AMaxHeight: integer);\n    procedure AnalyzeZip; virtual;\n    procedure PrepareZipToSave; virtual;\n    function GetMimeType: string; override;\n    procedure InternalLoadFromStream(AStream: TStream);\n    procedure InternalSaveToStream(AStream: TStream);\n\n  public\n    constructor Create; overload; override;\n    constructor Create(AWidth, AHeight: integer); overload; override;\n    procedure Clear; override;\n    function CheckMimeType(AStream: TStream): boolean;\n    procedure LoadFlatImageFromStream(AStream: TStream;\n              out ANbLayers: integer;\n              out ABitmap: TBGRABitmap);\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure LoadFromFile(const filenameUTF8: string); override;\n    procedure SaveToStream(AStream: TStream); override;\n    procedure SaveToFile(const filenameUTF8: string); override;\n    property MimeType : string read GetMimeType write SetMimeType;\n    property StackXML : TXMLDocument read FStackXML;\n  end;\n\n  { Reader for ORA image format (flattened) }\n  TFPReaderOpenRaster = class(TFPCustomImageReader)\n    private\n      FWidth,FHeight,FNbLayers: integer;\n    protected\n      function InternalCheck(Stream: TStream): boolean; override;\n      procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    public\n      property Width: integer read FWidth;\n      property Height: integer read FHeight;\n      property NbLayers: integer read FNbLayers;\n  end;\n\n  { Writer for ORA image format (flattened) }\n  TFPWriterOpenRaster = class(TFPCustomImageWriter)\n    protected\n      procedure InternalWrite (Str:TStream; Img:TFPCustomImage); override;\n  end;\n\nprocedure RegisterOpenRasterFormat;\n\nimplementation\n\nuses XMLRead, XMLWrite, BGRABitmapTypes, zstream, BGRAUTF8,\n  UnzipperExt, BGRASVGOriginal, BGRATransform, BGRASVGType, math;\n\nconst\n  MergedImageFilename = 'mergedimage.png';\n  LayerStackFilename = 'stack.xml';\n\nfunction IsZipStream(stream: TStream): boolean;\nvar\n  header:  packed array[0..1] of char;\n  SavePos: int64;\nbegin\n  Result := False;\n  try\n    if stream.Position + 2 < Stream.Size then\n    begin\n      header  := #0#0;\n      SavePos := stream.Position;\n      stream.Read(header, 2);\n      stream.Position := SavePos;\n      if (header[0] = 'P') and (header[1] = 'K') then\n        Result := True;\n    end;\n  except\n    on ex: Exception do ;\n  end;\nend;\n\n{ TFPWriterOpenRaster }\n\nprocedure TFPWriterOpenRaster.InternalWrite(Str: TStream; Img: TFPCustomImage);\nvar doc: TBGRAOpenRasterDocument;\n  tempBmp: TBGRABitmap;\n  x,y: integer;\n\nbegin\n  doc := TBGRAOpenRasterDocument.Create;\n  if Img is TBGRABitmap then doc.AddLayer(Img as TBGRABitmap) else\n  begin\n    tempBmp := TBGRABitmap.Create(img.Width,img.Height);\n    for y := 0 to Img.Height-1 do\n      for x := 0 to img.Width-1 do\n        tempBmp.SetPixel(x,y, FPColorToBGRA(img.Colors[x,y]));\n    doc.AddOwnedLayer(tempBmp);\n  end;\n  doc.SaveToStream(Str);\n  doc.Free;\nend;\n\n{ TFPReaderOpenRaster }\n\nfunction TFPReaderOpenRaster.InternalCheck(Stream: TStream): boolean;\nvar magic: packed array[0..3] of byte;\n  OldPos,BytesRead: Int64;\n  doc : TBGRAOpenRasterDocument;\nbegin\n  Result:=false;\n  if Stream=nil then exit;\n  oldPos := stream.Position;\n  {$PUSH}{$HINTS OFF}\n  BytesRead := Stream.Read({%H-}magic,sizeof(magic));\n  {$POP}\n  stream.Position:= OldPos;\n  if BytesRead<>sizeof(magic) then exit;\n  if (magic[0] = $50) and (magic[1] = $4b) and (magic[2] = $03) and (magic[3] = $04) then\n  begin\n    doc := TBGRAOpenRasterDocument.Create;\n    result := doc.CheckMimeType(Stream);\n    doc.Free;\n  end;\nend;\n\nprocedure TFPReaderOpenRaster.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  layeredImage: TBGRAOpenRasterDocument;\n  flat: TBGRABitmap;\n  x,y: integer;\nbegin\n  FWidth := 0;\n  FHeight:= 0;\n  FNbLayers:= 0;\n  layeredImage := TBGRAOpenRasterDocument.Create;\n  try\n    layeredImage.LoadFlatImageFromStream(Stream, FNbLayers, flat);\n    if Assigned(flat) then\n    begin\n      FWidth := flat.Width;\n      FHeight := flat.Height;\n    end else\n    begin\n      layeredImage.LoadFromStream(Stream);\n      flat := layeredImage.ComputeFlatImage;\n      FWidth:= layeredImage.Width;\n      FHeight:= layeredImage.Height;\n      FNbLayers:= layeredImage.NbLayers;\n    end;\n    try\n      if Img is TBGRACustomBitmap then\n        TBGRACustomBitmap(img).Assign(flat)\n      else\n      begin\n        Img.SetSize(flat.Width,flat.Height);\n        for y := 0 to flat.Height-1 do\n          for x := 0 to flat.Width-1 do\n            Img.Colors[x,y] := BGRAToFPColor(flat.GetPixel(x,y));\n      end;\n    finally\n      flat.free;\n    end;\n    FreeAndNil(layeredImage);\n  except\n    on ex: Exception do\n    begin\n      layeredImage.Free;\n      raise Exception.Create('Error while loading OpenRaster file. ' + ex.Message);\n    end;\n  end;\nend;\n\n{ TBGRAOpenRasterDocument }\n\nprocedure TBGRAOpenRasterDocument.AnalyzeZip;\n\n  function CountLayersRec(stackNode: TDOMNode): integer;\n  var i: integer;\n    layerNode: TDOMNode;\n  begin\n    result := 0;\n    for i := stackNode.ChildNodes.Length-1 downto 0 do\n    begin\n      layerNode:= stackNode.ChildNodes[i];\n      if (layerNode.NodeName = 'layer') and Assigned(layerNode.Attributes) then\n        inc(result) else\n      if (layerNode.NodeName = 'stack') then\n        inc(result, CountLayersRec(layerNode));\n    end;\n  end;\n\nvar\n  totalLayerCount, doneLayerCount: integer;\n\n  procedure AddLayersRec(stackNode: TDOMNode);\n  var i,j : integer;\n    layerNode, attr: TDOMNode;\n    idx,x,y: integer;\n    float: double;\n    errPos: integer;\n    opstr : string;\n    gammastr: string;\n  begin\n    for i := stackNode.ChildNodes.Length-1 downto 0 do\n    begin\n      OnLayeredBitmapLoadProgress(doneLayerCount*100 div totalLayerCount);\n      layerNode:= stackNode.ChildNodes[i];\n      if layerNode.NodeName = 'stack' then\n        AddLayersRec(layerNode) else\n      if (layerNode.NodeName = 'layer') and Assigned(layerNode.Attributes) then\n      begin\n        attr := layerNode.Attributes.GetNamedItem('src');\n        idx := AddLayerFromMemoryStream(UTF8Encode(attr.NodeValue));\n        if idx <> -1 then\n        begin\n          x := 0;\n          y := 0;\n          gammastr := '';\n          for j := 0 to layerNode.Attributes.Length-1 do\n          begin\n            attr := layerNode.Attributes[j];\n            if lowercase(attr.NodeName) = 'opacity' then\n            begin\n              val(attr.NodeValue, float, errPos);\n              if errPos = 0 then\n              begin\n                if float < 0 then float := 0;\n                if float > 1 then float := 1;\n                LayerOpacity[idx] := round(float*255);\n              end;\n            end else\n            if lowercase(attr.NodeName) = 'gamma-correction' then\n              gammastr := string(attr.NodeValue) else\n            if lowercase(attr.NodeName) = 'visibility' then\n              LayerVisible[idx] := (attr.NodeValue = 'visible') or (attr.NodeValue = 'yes') or (attr.NodeValue = '1') else\n            if (lowercase(attr.NodeName) = 'x') or (lowercase(attr.NodeName) = 'y') then\n            begin\n              val(attr.NodeValue, float, errPos);\n              if errPos = 0 then\n              begin\n                if float < -(MaxInt shr 1) then float := -(MaxInt shr 1);\n                if float > (MaxInt shr 1) then float := (MaxInt shr 1);\n                if (lowercase(attr.NodeName) = 'x') then x := round(float);\n                if (lowercase(attr.NodeName) = 'y') then y := round(float);\n              end;\n            end else\n            if lowercase(attr.NodeName) = 'name' then\n              LayerName[idx] := UTF8Encode(attr.NodeValue) else\n            if lowercase(attr.NodeName) = 'composite-op' then\n            begin\n              opstr := StringReplace(lowercase(string(attr.NodeValue)),'_','-',[rfReplaceAll]);\n              if (pos(':',opstr) = 0) and (opstr <> 'xor') then opstr := 'svg:'+opstr;\n              //parse composite op\n              if (opstr = 'svg:src-over') or (opstr = 'krita:dissolve') then\n                BlendOperation[idx] := boTransparent else\n              if opstr = 'svg:lighten' then\n                BlendOperation[idx] := boLighten else\n              if opstr = 'svg:screen' then\n                BlendOperation[idx] := boScreen else\n              if opstr = 'svg:color-dodge' then\n                BlendOperation[idx] := boColorDodge else\n              if (opstr = 'svg:color-burn') or (opstr = 'krita:gamma_dark'){approx} then\n                BlendOperation[idx] := boColorBurn else\n              if opstr = 'svg:darken' then\n                BlendOperation[idx] := boDarken else\n              if (opstr = 'svg:plus') or (opstr = 'svg:add') or (opstr = 'krita:linear_dodge') then\n                BlendOperation[idx] := boLinearAdd else\n              if (opstr = 'svg:multiply') or (opstr = 'krita:bumpmap') then\n                BlendOperation[idx] := boMultiply else\n              if opstr = 'svg:overlay' then\n                BlendOperation[idx] := boOverlay else\n              if opstr = 'svg:soft-light' then\n                BlendOperation[idx] := boSvgSoftLight else\n              if opstr = 'svg:hard-light' then\n                BlendOperation[idx] := boHardLight else\n              if opstr = 'svg:difference' then\n                BlendOperation[idx] := boLinearDifference else\n              if (opstr = 'krita:inverse-subtract') or (opstr = 'krita:linear-burn') then\n                BlendOperation[idx] := boLinearSubtractInverse else\n              if opstr = 'krita:subtract' then\n                BlendOperation[idx] := boLinearSubtract else\n              if (opstr = 'svg:difference') or\n                (opstr = 'krita:equivalence') then\n                BlendOperation[idx] := boLinearDifference else\n              if (opstr = 'svg:exclusion') or\n                (opstr = 'krita:exclusion') then\n                BlendOperation[idx] := boLinearExclusion else\n              if opstr = 'krita:divide' then\n                BlendOperation[idx] := boDivide else\n              if opstr = 'bgra:soft-light' then\n                BlendOperation[idx] := boSoftLight else\n              if opstr = 'bgra:nice-glow' then\n                BlendOperation[idx] := boNiceGlow else\n              if opstr = 'bgra:glow' then\n                BlendOperation[idx] := boGlow else\n              if opstr = 'bgra:reflect' then\n                BlendOperation[idx] := boReflect else\n              if opstr = 'bgra:negation' then\n                BlendOperation[idx] := boLinearNegation else\n              if (opstr = 'bgra:xor') or (opstr = 'xor') then\n                BlendOperation[idx] := boXor else\n              if opstr = 'bgra:mask' then\n                BlendOperation[idx] := boMask else\n              if opstr = 'bgra:linear-multiply-saturation' then\n                BlendOperation[idx] := boLinearMultiplySaturation else\n              if opstr = 'svg:hue' then\n                BlendOperation[idx] := boCorrectedHue else\n              if opstr = 'svg:color' then\n                BlendOperation[idx] := boCorrectedColor else\n              if opstr = 'svg:luminosity' then\n                BlendOperation[idx] := boCorrectedLightness else\n              if opstr = 'svg:saturation' then\n                BlendOperation[idx] := boCorrectedSaturation else\n              if opstr = 'krita:hue-hsl' then\n                BlendOperation[idx] := boLinearHue else\n              if opstr = 'krita:color-hsl' then\n                BlendOperation[idx] := boLinearColor else\n              if opstr = 'krita:lightness' then\n                BlendOperation[idx] := boLinearLightness else\n              if opstr = 'krita:saturation-hsl' then\n                BlendOperation[idx] := boLinearSaturation else\n              begin\n                //messagedlg('Unknown blend operation : ' + attr.NodeValue,mtInformation,[mbOk],0);\n                BlendOperation[idx] := boTransparent;\n              end;\n            end;\n          end;\n          if LayerOriginalGuid[idx] <> GUID_NULL then\n          begin\n            LayerOriginalMatrix[idx] := AffineMatrixTranslation(x,y)*LayerOriginalMatrix[idx];\n            RenderLayerFromOriginal(idx);\n          end else LayerOffset[idx] := point(x,y);\n          if (gammastr = 'yes') or (gammastr = 'on') then\n          begin\n            case BlendOperation[idx] of\n              boLinearAdd: BlendOperation[idx] := boAdditive;\n              boOverlay: BlendOperation[idx] := boDarkOverlay;\n              boLinearDifference: BlendOperation[idx] := boDifference;\n              boLinearExclusion: BlendOperation[idx] := boExclusion;\n              boLinearSubtract: BlendOperation[idx] := boSubtract;\n              boLinearSubtractInverse: BlendOperation[idx] := boSubtractInverse;\n              boLinearNegation: BlendOperation[idx] := boNegation;\n            end;\n          end else\n          if (gammastr = 'no') or (gammastr = 'off') then\n            if BlendOperation[idx] = boTransparent then\n              BlendOperation[idx] := boLinearBlend; //explicit linear blending\n        end;\n        inc(doneLayerCount);\n      end;\n    end;\n  end;\n\nvar StackStream: TMemoryStream;\n  imageNode, stackNode, attr: TDOMNode;\n  i,w,h: integer;\n\nbegin\n  inherited Clear;\n\n  if MimeType <> OpenRasterMimeType then\n    raise Exception.Create('Invalid mime type');\n\n  StackStream := GetMemoryStream(LayerStackFilename);\n  if StackStream = nil then\n    raise Exception.Create('Layer stack not found');\n\n  ReadXMLFile(FStackXML, StackStream);\n\n  imageNode := StackXML.FindNode('image');\n  if imagenode = nil then\n    raise Exception.Create('Image node not found');\n\n  w := 0;\n  h := 0;\n  LinearBlend := true;\n\n  if Assigned(imageNode.Attributes) then\n    for i:=0 to imageNode.Attributes.Length-1 do\n    begin\n      attr := imagenode.Attributes[i];\n      if lowercase(attr.NodeName) = 'w' then\n        w := strToInt(string(attr.NodeValue)) else\n      if lowercase(attr.NodeName) = 'h' then\n        h := strToInt(string(attr.NodeValue)) else\n      if lowercase(attr.NodeName) = 'gamma-correction' then\n        linearBlend := (attr.NodeValue = 'no') or (attr.NodeValue = '0');\n    end;\n\n  SetSize(w,h);\n\n  stackNode := imageNode.FindNode('stack');\n  if stackNode = nil then\n    raise Exception.Create('Stack node not found');\n\n  totalLayerCount := CountLayersRec(stackNode);\n  doneLayerCount := 0;\n  AddLayersRec(stackNode);\nend;\n\nprocedure TBGRAOpenRasterDocument.PrepareZipToSave;\n\nvar i: integer;\n    imageNode,stackNode,layerNode: TDOMElement;\n    layerFilename,strval: string;\n    stackStream: TMemoryStream;\n    ofs, wantedOfs: TPoint;\n    fileAdded: Boolean;\n    svg: TBGRASVG;\n    m: TAffineMatrix;\nbegin\n  ClearFiles;\n  MimeType := OpenRasterMimeType;\n  FStackXML := TXMLDocument.Create;\n  imageNode := TDOMElement(StackXML.CreateElement('image'));\n  StackXML.AppendChild(imageNode);\n  imageNode.SetAttribute('w',DOMString(inttostr(Width)));\n  imageNode.SetAttribute('h',DOMString(inttostr(Height)));\n  if LinearBlend then\n    imageNode.SetAttribute('gamma-correction','no')\n  else\n    imageNode.SetAttribute('gamma-correction','yes');\n\n  stackNode := TDOMElement(StackXML.CreateElement('stack'));\n  imageNode.AppendChild(stackNode);\n  SetMemoryStreamAsString('stack.xml',''); //to put it before image data\n\n  CopyThumbnailToMemoryStream(256,256);\n\n  for i := NbLayers-1 downto 0 do\n  begin\n    OnLayeredBitmapSaveProgress(round((NbLayers-1-i) * 100 / NbLayers));\n    if (LayerOriginalGuid[i] <> GUID_NULL) and LayerOriginalKnown[i] and\n       LayerOriginalClass[i].CanConvertToSVG then\n    begin\n      layerFilename := 'data/layer'+inttostr(i)+'.svg';\n      if LayerOriginal[i].IsInfiniteSurface then\n      begin\n        svg := LayerOriginal[i].ConvertToSVG(LayerOriginalMatrix[i], wantedOfs) as TBGRASVG;\n        m := AffineMatrixTranslation(wantedOfs.X, wantedOfs.Y);\n        svg.WidthAsPixel := self.Width;\n        svg.HeightAsPixel := self.Height;\n      end else\n      begin\n        svg := LayerOriginal[i].ConvertToSVG(AffineMatrixIdentity, wantedOfs) as TBGRASVG;\n        m := LayerOriginalMatrix[i]\n          * AffineMatrixTranslation(wantedOfs.X, wantedOfs.Y);\n      end;\n      try\n        CopySVGToMemoryStream(svg, m, layerFilename, ofs);\n        fileAdded := true;\n      finally\n        svg.Free;\n      end;\n    end else\n    begin\n      layerFilename := 'data/layer'+inttostr(i)+'.png';\n      ofs := LayerOffset[i];\n      fileAdded := CopyRasterLayerToMemoryStream(i, layerFilename);\n    end;\n\n    if fileAdded then\n    begin\n      layerNode := StackXML.CreateElement('layer');\n      stackNode.AppendChild(layerNode);\n      layerNode.SetAttribute('name', UTF8Decode(LayerName[i]));\n      str(LayerOpacity[i]/255:0:3,strval);\n      layerNode.SetAttribute('opacity',DOMString(strval));\n      layerNode.SetAttribute('src',DOMString(layerFilename));\n      if LayerVisible[i] then\n        layerNode.SetAttribute('visibility','visible')\n      else\n        layerNode.SetAttribute('visibility','hidden');\n      layerNode.SetAttribute('x',DOMString(inttostr(ofs.x)));\n      layerNode.SetAttribute('y',DOMString(inttostr(ofs.y)));\n      strval := '';\n      case BlendOperation[i] of\n        boLighten: strval := 'svg:lighten';\n        boScreen: strval := 'svg:screen';\n        boAdditive, boLinearAdd: strval := 'svg:add';\n        boColorDodge: strval := 'svg:color-dodge';\n        boColorBurn : strval := 'svg:color-burn';\n        boDarken: strval := 'svg:darken';\n        boMultiply: strval := 'svg:multiply';\n        boOverlay, boDarkOverlay: strval := 'svg:overlay';\n        boSoftLight: strval := 'bgra:soft-light';\n        boHardLight: strval := 'svg:hard-light';\n        boDifference,boLinearDifference: strval := 'svg:difference';\n        boLinearSubtractInverse, boSubtractInverse: strval := 'krita:inverse_subtract';\n        boLinearSubtract, boSubtract: strval := 'krita:subtract';\n        boExclusion, boLinearExclusion: strval := 'svg:exclusion';\n        boDivide: strval := 'krita:divide';\n        boNiceGlow: strval := 'bgra:nice-glow';\n        boGlow: strval := 'bgra:glow';\n        boReflect: strval := 'bgra:reflect';\n        boLinearNegation,boNegation: strval := 'bgra:negation';\n        boXor: strval := 'bgra:xor';\n        boSvgSoftLight: strval := 'svg:soft-light';\n        boMask: strval := 'bgra:mask';\n        boLinearMultiplySaturation: strval := 'bgra:linear-multiply-saturation';\n        boCorrectedHue: strval := 'svg:hue';\n        boCorrectedColor: strval := 'svg:color';\n        boCorrectedLightness: strval := 'svg:luminosity';\n        boCorrectedSaturation: strval := 'svg:saturation';\n        boLinearHue: strval := 'krita:hue_hsl';\n        boLinearColor: strval := 'krita:color_hsl';\n        boLinearLightness: strval := 'krita:lightness';\n        boLinearSaturation: strval := 'krita:saturation_hsl';\n        else strval := 'svg:src-over';\n      end;\n      layerNode.SetAttribute('composite-op',DOMString(strval));\n      if BlendOperation[i] <> boTransparent then //in 'transparent' case, linear blending depends on general setting\n      begin\n        if BlendOperation[i] in[boAdditive,boDarkOverlay,boDifference,boSubtractInverse,\n             boSubtract,boExclusion,boNegation] then\n          strval := 'yes' else strval := 'no';\n        layerNode.SetAttribute('gamma-correction',DOMString(strval));\n      end;\n    end;\n  end;\n  OnLayeredBitmapSaveProgress(100);\n  StackStream := TMemoryStream.Create;\n  WriteXMLFile(StackXML, StackStream);\n  SetMemoryStream('stack.xml',StackStream);\nend;\n\nprocedure TBGRAOpenRasterDocument.LoadFromFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmOpenRead or fmShareDenyWrite);\n  OnLayeredBitmapLoadStart(filenameUTF8);\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.SaveToStream(AStream: TStream);\nbegin\n  OnLayeredBitmapSaveToStreamStart;\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.SaveToFile(const filenameUTF8: string);\nbegin\n  OnLayeredBitmapSaveStart(filenameUTF8);\n  try\n    PrepareZipToSave;\n    ZipToFile(filenameUTF8);\n  finally\n    OnLayeredBitmapSaved;\n    ClearFiles;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.InternalSaveToStream(AStream: TStream);\nbegin\n  try\n    PrepareZipToSave;\n    ZipToStream(AStream);\n  finally\n    ClearFiles;\n  end;\nend;\n\nfunction TBGRAOpenRasterDocument.GetMimeType: string;\nbegin\n  if length(FFiles)=0 then\n    result := OpenRasterMimeType\n   else\n    result := GetMemoryStreamAsString('mimetype');\nend;\n\nprocedure TBGRAOpenRasterDocument.InternalLoadFromStream(AStream: TStream);\nbegin\n  try\n    UnzipFromStream(AStream);\n    AnalyzeZip;\n  finally\n    ClearFiles;\n  end;\nend;\n\nconstructor TBGRAOpenRasterDocument.Create;\nbegin\n  inherited Create;\n  RegisterOpenRasterFormat;\nend;\n\nconstructor TBGRAOpenRasterDocument.Create(AWidth, AHeight: integer);\nbegin\n  inherited Create(AWidth, AHeight);\n  RegisterOpenRasterFormat;\nend;\n\nfunction TBGRAOpenRasterDocument.AddLayerFromMemoryStream(ALayerFilename: string): integer;\nvar stream: TMemoryStream;\n  bmp: TBGRABitmap;\n  orig: TBGRALayerSVGOriginal;\n  svg: TBGRASVG;\n  g: TSVGGroup;\n  i, svgElemCount: Integer;\n  origViewBox: TSVGViewBox;\n  elemToMove: TList;\n  m: TAffineMatrix;\nbegin\n  stream := GetMemoryStream(ALayerFilename);\n  if stream = nil then raise Exception.Create('Layer not found');\n\n  if SuggestImageFormat(ALayerFilename) = ifSvg then\n  begin\n    svg := TBGRASVG.Create;\n    svg.DefaultDpi:= OpenRasterSVGDefaultDPI;\n    try\n      svg.LoadFromStream(stream);\n    except\n      on ex:exception do\n      begin\n        svg.Free;\n        raise exception.Create('SVG layer format error');\n      end;\n    end;\n    g := nil;\n    svgElemCount := 0;\n    for i := 0 to svg.Content.ElementCount-1 do\n      if svg.Content.IsSVGElement[i] then\n      begin\n        inc(svgElemCount);\n        if svg.Content.ElementObject[i] is TSVGGroup then\n          g := TSVGGroup(svg.Content.ElementObject[i]);\n      end;\n\n    if (svgElemCount = 1) and Assigned(g) and\n       g.DOMElement.hasAttribute('bgra:originalViewBox') then\n    begin\n      svg.ContainerWidthAsPixel:= Width;\n      svg.ContainerHeightAsPixel:= Height;\n      origViewBox := TSVGViewBox.Parse(string(g.DOMElement.GetAttribute('bgra:originalViewBox')));\n      m := svg.GetStretchPresentationMatrix(cuPixel) * g.matrix[cuPixel] *\n        AffineMatrixTranslation(origViewBox.min.x, origViewBox.min.y);\n      g.DOMElement.RemoveAttribute('bgra:originalViewBox');\n      for i := svg.Content.ElementCount-1 downto 0 do\n        if svg.Content.ElementObject[i] <> g then\n          svg.Content.RemoveElement(svg.Content.ElementObject[i]);\n      elemToMove := TList.Create;\n      for i := 0 to g.Content.ElementCount-1 do\n        elemToMove.Add(g.Content.ElementObject[i]);\n      for i := 0 to elemToMove.Count-1 do\n        svg.Content.BringElement(TObject(elemToMove[i]), g.Content);\n      elemToMove.Free;\n      svg.Content.RemoveElement(g);\n      svg.ViewBox := origViewBox;\n      svg.WidthAsPixel:= origViewBox.size.x;\n      svg.HeightAsPixel:= origViewBox.size.y;\n    end else\n      m := AffineMatrixIdentity;\n    orig := TBGRALayerSVGOriginal.Create;\n    orig.SetSVG(svg, Width, Height);\n    result := AddLayerFromOwnedOriginal(orig);\n    LayerOriginalMatrix[result] := m;\n  end else\n  begin\n    bmp := TBGRABitmap.Create;\n    try\n      bmp.LoadFromStream(stream);\n    except\n      on ex: exception do\n      begin\n        bmp.Free;\n        raise exception.Create('Raster layer format error');\n      end;\n    end;\n    result := AddOwnedLayer(bmp);\n  end;\n  LayerName[result] := ExtractFileName(ALayerFilename);\nend;\n\nfunction TBGRAOpenRasterDocument.CopyRasterLayerToMemoryStream(ALayerIndex: integer;\n  ALayerFilename: string): boolean;\nvar\n  bmp: TBGRABitmap;\n  mustFreeBmp: boolean;\nbegin\n  result := false;\n  bmp := LayerBitmap[ALayerIndex];\n  if bmp <> nil then mustFreeBmp := false\n  else\n  begin\n    bmp := GetLayerBitmapCopy(ALayerIndex);\n    if bmp = nil then exit;\n    mustFreeBmp:= true;\n  end;\n\n  result := CopyBitmapToMemoryStream(bmp,ALayerFilename);\n  if mustFreeBmp then bmp.Free;\nend;\n\nprocedure TBGRAOpenRasterDocument.CopySVGToMemoryStream(\n  ASVG: TBGRASVG; ASVGMatrix: TAffineMatrix; AOutFilename: string; out AOffset: TPoint);\n\n  function IsIntegerTranslation(m: TAffineMatrix; out ofs: TPoint): boolean;\n  begin\n    ofs := Point(round(m[1,3]), round(m[2,3]));\n    result := IsAffineMatrixTranslation(m) and\n             (abs(round(m[1,3]) - ofs.x) < 1e-4) and\n             (abs(round(m[2,3]) - ofs.y) < 1e-4);\n  end;\n\n  procedure StoreSVG(ASVG: TBGRASVG);\n  var\n    memStream: TMemoryStream;\n    w, h: Single;\n  begin\n    memStream := TMemoryStream.Create;\n    try\n      w := ASVG.WidthAsPixel;\n      h := ASVG.HeightAsPixel;\n      //ensure we are not using units affected by DPI\n      ASVG.ConvertToUnit(cuCustom);\n      ASVG.WidthAsPixel := w;\n      ASVG.HeightAsPixel := h;\n      ASVG.SaveToStream(memStream);\n      SetMemoryStream(AOutFilename,memstream);\n    except\n      on ex: Exception do\n      begin\n        memStream.Free;\n        raise exception.Create(ex.Message);\n      end;\n    end;\n  end;\n\n  procedure StoreTransformedSVG(out AOffset: TPoint);\n  var\n    box, transfBox: TAffineBox;\n    newSvg: TBGRASVG;\n    newBounds: TRectF;\n    rootElems: TList;\n    i: Integer;\n    g: TSVGGroup;\n    newViewBox, origViewBox: TSVGViewBox;\n    presentMatrix: TAffineMatrix;\n  begin\n    newSvg := ASVG.Duplicate;\n    presentMatrix := ASVGMatrix * newSvg.GetStretchPresentationMatrix(cuPixel);\n    rootElems := TList.Create;\n    try\n      origViewBox := newSvg.ViewBox;\n      with origViewBox do\n        box := TAffineBox.AffineBox(RectWithSizeF(min.x, min.y, size.x, size.y));\n      transfBox := presentMatrix * box;\n      newBounds := RectF(transfBox.RectBounds);\n      AOffset := Point(round(newBounds.Left), round(newBounds.Top));\n      newBounds.Offset(-AOffset.X, -AOffset.Y);\n      presentMatrix := AffineMatrixTranslation(-AOffset.X, -AOffset.Y) * presentMatrix;\n      for i := 0 to newSvg.Content.ElementCount-1 do\n        rootElems.Add(newSvg.Content.ElementObject[i]);\n      g := newSvg.Content.AppendGroup;\n      for i := 0 to rootElems.Count-1 do\n        g.Content.BringElement(TObject(rootElems[i]), newSvg.Content);\n      g.matrix[cuPixel] := presentMatrix;\n      g.DOMElement.SetAttribute('xmlns:bgra', 'https://wiki.freepascal.org/LazPaint_SVG_format');\n      g.DOMElement.SetAttribute('bgra:originalViewBox', DOMString(origViewBox.ToString));\n      newSvg.WidthAsPixel:= newBounds.Width;\n      newSvg.HeightAsPixel:= newBounds.Height;\n      newViewBox.min := newBounds.TopLeft;\n      newViewBox.size := PointF(newBounds.Width, newBounds.Height);\n      newSvg.ViewBox := newViewBox;\n      StoreSVG(newSvg);\n    finally\n      rootElems.Free;\n      newSvg.Free;\n    end;\n  end;\n\nbegin\n  if IsIntegerTranslation(ASVGMatrix, AOffset) then\n    StoreSVG(ASVG)\n    else StoreTransformedSVG(AOffset);\nend;\n\nfunction TBGRAOpenRasterDocument.CopyBitmapToMemoryStream(ABitmap: TBGRABitmap;\n  AFilename: string): boolean;\nvar\n  memStream: TMemoryStream;\nbegin\n  result := false;\n  memstream := TMemoryStream.Create;\n  try\n    ABitmap.SaveToStreamAsPng(memStream);\n    SetMemoryStream(AFilename,memstream);\n    result := true;\n  except\n    on ex: Exception do\n    begin\n      memStream.Free;\n    end;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.SetMemoryStreamAsString(AFilename: string;\n  AContent: string);\nvar strstream: TStringStream;\n  memstream: TMemoryStream;\nbegin\n  strstream:= TStringStream.Create(AContent);\n  memstream := TMemoryStream.Create;\n  strstream.Position := 0;\n  memstream.CopyFrom(strstream, strstream.Size);\n  strstream.Free;\n  SetMemoryStream(AFilename, memstream);\nend;\n\nfunction TBGRAOpenRasterDocument.GetMemoryStreamAsString(AFilename: string): string;\nvar stream: TMemoryStream;\n  str: TStringStream;\nbegin\n  stream := GetMemoryStream(AFilename);\n  str := TStringStream.Create('');\n  str.CopyFrom(stream,stream.Size);\n  result := str.DataString;\n  str.Free;\nend;\n\nprocedure TBGRAOpenRasterDocument.UnzipFromStream(AStream: TStream;\n          AFileList: TStrings = nil);\nvar unzip: TUnZipper;\nbegin\n  ClearFiles;\n  unzip := TUnZipper.Create;\n  try\n    unzip.OnCreateStream := @ZipOnCreateStream;\n    unzip.OnDoneStream := @ZipOnDoneStream;\n    unzip.OnOpenInputStream := @ZipOnOpenInputStream;\n    unzip.OnCloseInputStream := @ZipOnCloseInputStream;\n    FZipInputStream := AStream;\n    if Assigned(AFileList) then\n    begin\n      if AFileList.Count > 0 then\n        unzip.UnZipFiles(AFileList);\n    end else\n      unzip.UnZipAllFiles;\n  finally\n    FZipInputStream := nil;\n    unzip.Free;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.UnzipFromFile(AFilenameUTF8: string);\nvar unzip: TUnZipper;\nbegin\n  ClearFiles;\n  unzip := TUnZipper.Create;\n  try\n    unzip.FileName := Utf8ToAnsi(AFilenameUTF8);\n    unzip.OnCreateStream := @ZipOnCreateStream;\n    unzip.OnDoneStream := @ZipOnDoneStream;\n    unzip.UnZipAllFiles;\n  finally\n    unzip.Free;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.ZipToFile(AFilenameUTF8: string);\nvar\n  stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate);\n  try\n    ZipToStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.ZipToStream(AStream: TStream);\nvar zip: TZipper;\n  i: integer;\n  tempFile: String;\nbegin\n  zip := TZipper.Create;\n  tempFile := ChangeFileExt(GetTempFileName, '');\n  if ExtractFileExt(tempFile) = '.tmp' then\n    tempFile := ChangeFileExt(tempFile, '');\n  zip.FileName:= tempFile;\n  try\n    for i := 0 to high(FFiles) do\n    begin\n      FFiles[i].Stream.Position:= 0;\n      zip.Entries.AddFileEntry(FFiles[i].Stream,FFiles[i].Filename).CompressionLevel := clnone;\n    end;\n    zip.SaveToStream(AStream);\n  finally\n    zip.Free;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.CopyThumbnailToMemoryStream(AMaxWidth,AMaxHeight: integer);\nvar thumbnail: TBGRABitmap;\n  w,h: integer;\nbegin\n  if (Width = 0) or (Height = 0) then exit;\n  thumbnail := ComputeFlatImage;\n  CopyBitmapToMemoryStream(thumbnail,MergedImageFilename);\n  if (thumbnail.Width > AMaxWidth) or\n   (thumbnail.Height > AMaxHeight) then\n  begin\n    if thumbnail.Width > AMaxWidth then\n    begin\n      w := AMaxWidth;\n      h := round(thumbnail.Height* (w/thumbnail.Width));\n    end else\n    begin\n      w := thumbnail.Width;\n      h := thumbnail.Height;\n    end;\n    if h > AMaxHeight then\n    begin\n      h := AMaxHeight;\n      w := round(thumbnail.Width* (h/thumbnail.Height));\n    end;\n    BGRAReplace(thumbnail, thumbnail.Resample(w,h));\n  end;\n  CopyBitmapToMemoryStream(thumbnail,'Thumbnails/thumbnail.png');\n  thumbnail.Free;\nend;\n\nprocedure TBGRAOpenRasterDocument.Clear;\nbegin\n  ClearFiles;\n  inherited Clear;\nend;\n\nfunction TBGRAOpenRasterDocument.CheckMimeType(AStream: TStream): boolean;\nvar unzip: TUnzipperStreamUtf8;\n  mimeTypeFound: string;\n  oldPos: int64;\nbegin\n  result := false;\n  unzip := TUnzipperStreamUtf8.Create;\n  oldPos := AStream.Position;\n  try\n    unzip.InputStream := AStream;\n    mimeTypeFound := unzip.UnzipFileToString('mimetype');\n    if mimeTypeFound = OpenRasterMimeType then result := true;\n  except\n  end;\n  unzip.Free;\n  astream.Position:= OldPos;\nend;\n\nprocedure TBGRAOpenRasterDocument.LoadFlatImageFromStream(AStream: TStream; out\n  ANbLayers: integer; out ABitmap: TBGRABitmap);\nvar fileList: TStringList;\n  imgStream, stackStream: TMemoryStream;\n  imageNode, stackNode: TDOMNode;\n  i: integer;\nbegin\n  fileList := TStringList.Create;\n  fileList.Add(MergedImageFilename);\n  fileList.Add(LayerStackFilename);\n  imgStream := nil;\n  try\n    UnzipFromStream(AStream, fileList);\n    imgStream := GetMemoryStream(MergedImageFilename);\n    if imgStream = nil then\n      ABitmap := nil\n    else\n      ABitmap := TBGRABitmap.Create(imgStream);\n    ANbLayers := 1;\n\n    stackStream := GetMemoryStream(LayerStackFilename);\n    ReadXMLFile(FStackXML, StackStream);\n    imageNode := StackXML.FindNode('image');\n    if Assigned(imagenode) then\n    begin\n      stackNode := imageNode.FindNode('stack');\n      if Assigned(stackNode) then\n      begin\n        ANbLayers:= 0;\n        for i := stackNode.ChildNodes.Length-1 downto 0 do\n        begin\n          if stackNode.ChildNodes[i].NodeName = 'layer' then\n            inc(ANbLayers);\n        end;\n      end;\n    end;\n\n  finally\n    fileList.Free;\n    ClearFiles;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.LoadFromStream(AStream: TStream);\nbegin\n  OnLayeredBitmapLoadFromStreamStart;\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n  end;\nend;\n\nprocedure TBGRAOpenRasterDocument.SetMimeType(AValue: string);\nbegin\n  SetMemoryStreamAsString('mimetype',AValue);\nend;\n\nprocedure TBGRAOpenRasterDocument.ZipOnCreateStream(Sender: TObject; var AStream: TStream;\n  AItem: TFullZipFileEntry);\nvar MemStream: TMemoryStream;\nbegin\n  MemStream := TMemoryStream.Create;\n  SetMemoryStream(AItem.ArchiveFileName, MemStream);\n  AStream := MemStream;\nend;\n\n{$hints off}\nprocedure TBGRAOpenRasterDocument.ZipOnDoneStream(Sender: TObject; var AStream: TStream;\n  AItem: TFullZipFileEntry);\nbegin\n  //do nothing, files stay in memory\nend;\n{$hints on}\n\nprocedure TBGRAOpenRasterDocument.ZipOnOpenInputStream(Sender: TObject;\n  var AStream: TStream);\nbegin\n  AStream := FZipInputStream;\nend;\n\nprocedure TBGRAOpenRasterDocument.ZipOnCloseInputStream(Sender: TObject;\n  var AStream: TStream);\nbegin\n  AStream := nil; //avoid freeing\nend;\n\nprocedure TBGRAOpenRasterDocument.ClearFiles;\nvar i: integer;\nbegin\n  for i := 0 to high(FFiles) do\n    ffiles[i].Stream.Free;\n  FFiles := nil;\n  FreeAndNil(FStackXML);\nend;\n\nfunction TBGRAOpenRasterDocument.GetMemoryStream(AFilename: string): TMemoryStream;\nvar i: integer;\nbegin\n  for i := 0 to high(FFiles) do\n    if ffiles[i].Filename = AFilename then\n    begin\n      result := FFiles[i].Stream;\n      result.Position:= 0;\n      exit;\n    end;\n  result := nil;\nend;\n\nprocedure TBGRAOpenRasterDocument.SetMemoryStream(AFilename: string;\n  AStream: TMemoryStream);\nvar i: integer;\nbegin\n  for i := 0 to high(FFiles) do\n    if ffiles[i].Filename = AFilename then\n    begin\n      FreeAndNil(FFiles[i].Stream);\n      FFiles[i].Stream := AStream;\n      exit;\n    end;\n  setlength(FFiles, length(FFiles)+1);\n  FFiles[high(FFiles)].Filename := AFilename;\n  FFiles[high(FFiles)].Stream := AStream;\nend;\n\nvar AlreadyRegistered: boolean;\n\nprocedure RegisterOpenRasterFormat;\nbegin\n  if AlreadyRegistered then exit;\n\n  BGRARegisterImageHandlers(ifOpenRaster, TFPReaderOpenRaster, TFPWriterOpenRaster,\n    True, 'OpenRaster', 'ora');\n\n  RegisterLayeredBitmapReader('ora', TBGRAOpenRasterDocument);\n  RegisterLayeredBitmapWriter('ora', TBGRAOpenRasterDocument);\n\n  AlreadyRegistered:= True;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapaintnet.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Paint.NET image format files.)\n\n  The unit registers a TFPCustomImageReader so that it can be read by any\n  image reading function of FreePascal, and also registers a reader for BGRALayers }\nunit BGRAPaintNet;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRADNetDeserial, FPImage, BGRABitmapTypes, BGRABitmap, BGRALayers;\n\ntype\n\n  { @abstract(Layered image reader for Paint.NET)\n\n  A Paint.NET image consists in three parts :\n  - Xml header\n  - Binary serialized information (contains layer information)\n  - Compressed data (pixel data)\n\n  The class TPaintDotNetFile do not read the Xml header.\n  ComputeFlatImage builds the resulting image\n  by using blending operations to merge layers. }\n  TPaintDotNetFile = class(TBGRACustomLayeredBitmap)\n  public\n    procedure LoadFromFile(const filenameUTF8: string); override;\n    procedure LoadFromStream(stream: TStream); override;\n    procedure Clear; override;\n    function ToString: ansistring; override;\n    function GetLayerBitmapCopy(layer: integer): TBGRABitmap; override;\n    constructor Create; override;\n  protected\n    procedure InternalLoadFromStream(stream: TStream);\n    function GetWidth: integer; override;\n    function GetHeight: integer; override;\n    function GetNbLayers: integer; override;\n    function GetBlendOperation(Layer: integer): TBlendOperation; override;\n    function GetLayerVisible(layer: integer): boolean; override;\n    function GetLayerOpacity(layer: integer): byte; override;\n    function GetLayerName(layer: integer): string; override;\n  private\n    Content:   TDotNetDeserialization;\n    Document:  TSerializedClass;\n    Layers:    TSerializedClass;\n    LayerData: array of TMemoryStream;\n    function InternalGetLayer(num: integer): TSerializedClass;\n    function InternalGetBlendOperation(layer: TSerializedClass): TBlendOperation;\n    function InternalGetLayerName(layer: TSerializedClass): string;\n    function InternalGetLayerVisible(layer: TSerializedClass): boolean;\n    function InternalGetLayerOpacity(layer: TSerializedClass): byte;\n    function LayerDataSize(numLayer: integer): int64;\n    procedure LoadLayer(dest: TMemoryStream; src: TStream; uncompressedSize: int64);\n  end;\n\n  { Reader for PDN files (flattened) }\n  TFPReaderPaintDotNet = class(TFPCustomImageReader)\n    private\n      FWidth,FHeight,FNbLayers: integer;\n    protected\n      function InternalCheck(Stream: TStream): boolean; override;\n      procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    public\n      property Width: integer read FWidth;\n      property Height: integer read FHeight;\n      property NbLayers: integer read FNbLayers;\n  end;\n\nfunction IsPaintDotNetFile(filename: string): boolean;\nfunction IsPaintDotNetFileUTF8(filenameUTF8: string): boolean;\nfunction IsPaintDotNetStream(stream: TStream): boolean;\nfunction LoadPaintDotNetFile(filename: string): TBGRABitmap;\nfunction LoadPaintDotNetFileUTF8(filenameUTF8: string): TBGRABitmap;\n\nprocedure RegisterPaintNetFormat;\n\nimplementation\n\nuses zstream, Math, BGRAUTF8;\n\n{$hints off}\nfunction BEReadLongword(Stream: TStream): LongWord;\nbegin\n  Stream.Read(Result, sizeof(Result));\n  Result := BEtoN(Result);\nend;\n\n{$hints on}\n\n{$hints off}\nfunction BEReadLongint(Stream: TStream): longint;\nbegin\n  Stream.Read(Result, sizeof(Result));\n  Result := BEtoN(Result);\nend;\n\nfunction IsPaintDotNetFile(filename: string): boolean;\nvar\n  stream: TFileStreamUTF8;\nbegin\n  Result := False;\n  if FileExists(filename) then\n  begin\n    stream := TFileStreamUTF8.Create(SysToUTF8(filename), fmOpenRead);\n    Result := IsPaintDotNetStream(stream);\n    stream.Free;\n  end;\nend;\n\nfunction IsPaintDotNetFileUTF8(filenameUTF8: string): boolean;\nvar\n  stream: TFileStreamUTF8;\nbegin\n  Result := False;\n  if FileExistsUTF8(filenameUTF8) then\n  begin\n    stream := TFileStreamUTF8.Create(filenameUTF8, fmOpenRead);\n    Result := IsPaintDotNetStream(stream);\n    stream.Free;\n  end;\nend;\n\nfunction IsPaintDotNetStream(stream: TStream): boolean;\nvar\n  header:  packed array[0..3] of char;\n  SavePos: int64;\nbegin\n  Result := False;\n  try\n    if stream.Position + 4 < Stream.Size then\n    begin\n      header  := #0#0#0#0;\n      SavePos := stream.Position;\n      stream.Read(header, 4);\n      stream.Position := SavePos;\n      if (header[0] = 'P') and (header[1] = 'D') and (header[2] = 'N') and\n        (header[3] = '3') then\n        Result := True;\n    end;\n  except\n    on ex: Exception do ;\n  end;\nend;\n\nfunction LoadPaintDotNetFile(filename: string): TBGRABitmap;\nbegin\n  result := LoadPaintDotNetFileUTF8(SysToUTF8(filename));\nend;\n\nfunction LoadPaintDotNetFileUTF8(filenameUTF8: string): TBGRABitmap;\nvar\n  pdn: TPaintDotNetFile;\nbegin\n  pdn    := TPaintDotNetFile.Create;\n  Result := nil;\n  try\n    pdn.LoadFromFile(filenameUTF8);\n    Result := pdn.ComputeFlatImage;\n    pdn.Free;\n  except\n    on ex: Exception do\n    begin\n      FreeAndNil(Result);\n      pdn.Free;\n      raise Exception.Create('Error while loading Paint.NET file. ' + ex.Message);\n    end;\n  end;\nend;\n\nfunction LoadPaintDotNetStream(stream: TStream): TBGRABitmap;\nvar\n  pdn: TPaintDotNetFile;\nbegin\n  pdn    := TPaintDotNetFile.Create;\n  Result := nil;\n  try\n    pdn.LoadFromStream(stream);\n    Result := pdn.ComputeFlatImage;\n    pdn.Free;\n  except\n    on ex: Exception do\n    begin\n      FreeAndNil(Result);\n      pdn.Free;\n      raise Exception.Create('Error while loading Paint.NET stream. ' + ex.Message);\n    end;\n  end;\nend;\n\n{$hints on}\n\n{ TFPReaderPaintDotNet }\n\nfunction TFPReaderPaintDotNet.InternalCheck(Stream: TStream): boolean;\nbegin\n  result := IsPaintDotNetStream(stream);\nend;\n\nprocedure TFPReaderPaintDotNet.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  pdn: TPaintDotNetFile;\n  flat: TBGRABitmap;\n  x,y: integer;\nbegin\n  FWidth := 0;\n  FHeight:= 0;\n  FNbLayers:= 0;\n  pdn    := TPaintDotNetFile.Create;\n  try\n    pdn.LoadFromStream(Stream);\n    flat := pdn.ComputeFlatImage;\n    try\n      FWidth:= pdn.Width;\n      FHeight:= pdn.Height;\n      FNbLayers:= pdn.NbLayers;\n\n      if Img is TBGRACustomBitmap then\n        TBGRACustomBitmap(Img).Assign(flat) else\n      begin\n        Img.SetSize(pdn.Width,pdn.Height);\n        for y := 0 to pdn.Height-1 do\n          for x := 0 to pdn.Width-1 do\n            Img.Colors[x,y] := BGRAToFPColor(flat.GetPixel(x,y));\n      end;\n    finally\n      flat.free;\n    end;\n    pdn.Free;\n  except\n    on ex: Exception do\n    begin\n      pdn.Free;\n      raise Exception.Create('Error while loading Paint.NET file. ' + ex.Message);\n    end;\n  end;\nend;\n\n{ TPaintDotNetFile }\n\nprocedure TPaintDotNetFile.LoadFromFile(const filenameUTF8: string);\nvar\n  stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(filenameUTF8, fmOpenRead);\n  OnLayeredBitmapLoadStart(filenameUTF8);\n  try\n    InternalLoadFromStream(stream);\n  finally\n    OnLayeredBitmapLoaded;\n    stream.Free;\n  end;\nend;\n\nprocedure TPaintDotNetFile.LoadFromStream(stream: TStream);\nbegin\n  OnLayeredBitmapLoadFromStreamStart;\n  try\n    InternalLoadFromStream(stream);\n  finally\n    OnLayeredBitmapLoaded;\n  end;\nend;\n\nprocedure TPaintDotNetFile.InternalLoadFromStream(stream: TStream);\nvar\n  header: packed array[0..3] of char;\n  XmlHeaderSize: integer;\n  CompressionFormat: word;\n  i:      integer;\nbegin\n  Clear;\n  header := #0#0#0#0;\n  stream.Read(header, 4);\n  if (header[0] <> 'P') or (header[1] <> 'D') or (header[2] <> 'N') or\n    (header[3] <> '3') then\n    raise Exception.Create('Invalid header');\n  XmlHeaderSize := 0;\n  stream.Read(XmlHeaderSize, 3);\n  XmlheaderSize := LEtoN(XmlheaderSize);\n  if Stream.Position + XmlHeaderSize > stream.Size then\n    raise Exception.Create('Xml header size error');\n  Stream.Position:= Stream.Position + XmlHeaderSize;\n     {$hints off}\n  stream.ReadBuffer({%H-}CompressionFormat, sizeof(CompressionFormat));\n     {$hints on}\n  CompressionFormat := LEToN(CompressionFormat);\n  Content := TDotNetDeserialization.Create;\n  case Compressionformat of\n    $0100: Content.LoadFromStream(Stream);\n    $8b1f: raise Exception.Create('Serialized data decompression not handled');\n    else\n      raise Exception.Create('Unknown compression format (' +\n        IntToStr(Compressionformat) + ')');\n  end;\n  Document := Content.FindClass('Document');\n  if Document <> nil then\n    Layers := Content.GetObjectField(Document, 'layers') as TSerializedClass;\n  SetLength(LayerData, NbLayers);\n  for i := 0 to NbLayers - 1 do\n  begin\n    OnLayeredBitmapLoadProgress((i+1)*100 div NbLayers);\n    LayerData[i] := TMemoryStream.Create;\n    LoadLayer(LayerData[i], Stream, LayerDataSize(i));\n  end;\n  OnLayeredBitmapLoadProgress(100);\nend;\n\nfunction TPaintDotNetFile.ToString: ansistring;\nvar\n  i, j, nbbytes: integer;\n  b: byte;\nbegin\n  Result := 'Paint.Net document' + LineEnding + LineEnding;\n  AppendStr(Result, Content.ToString);\n  for i := 0 to NbLayers - 1 do\n  begin\n    AppendStr(Result, LineEnding + 'Layer ' + IntToStr(i) + ' : ' + LayerName[i] + LineEnding);\n    AppendStr(Result, '[ ');\n    LayerData[i].Position := 0;\n    if LayerData[i].Size > 256 then\n      nbbytes := 256\n    else\n      nbbytes := LayerData[i].Size;\n    for j := 0 to nbbytes - 1 do\n    begin\n        {$hints off}\n      LayerData[i].ReadBuffer({%H-}b, 1);\n        {$hints on}\n      AppendStr(Result, IntToHex(b, 2) + ' ');\n    end;\n    if LayerData[i].Size > nbbytes then\n      AppendStr(Result, '...');\n    AppendStr(Result, ']' + lineending);\n  end;\nend;\n\nconstructor TPaintDotNetFile.Create;\nbegin\n  inherited Create;\n  Content   := nil;\n  Document  := nil;\n  Layers    := nil;\n  LinearBlend := True;\n  RegisterPaintNetFormat;\nend;\n\nprocedure TPaintDotNetFile.Clear;\nvar\n  i: integer;\nbegin\n  FreeAndNil(content);\n  document := nil;\n  Layers   := nil;\n  for i := 0 to high(LayerData) do\n    LayerData[i].Free;\n  LayerData := nil;\nend;\n\nfunction TPaintDotNetFile.GetWidth: integer;\nbegin\n  if Document = nil then\n    Result := 0\n  else\n    Result := StrToInt(Content.GetSimpleField(Document, 'width'));\nend;\n\nfunction TPaintDotNetFile.GetHeight: integer;\nbegin\n  if Document = nil then\n    Result := 0\n  else\n    Result := StrToInt(Content.GetSimpleField(Document, 'height'));\nend;\n\nfunction TPaintDotNetFile.GetNbLayers: integer;\nbegin\n  if Layers = nil then\n    Result := 0\n  else\n    Result := StrToInt(Content.GetSimpleField(Layers, '_size'));\nend;\n\nfunction TPaintDotNetFile.GetBlendOperation(Layer: integer): TBlendOperation;\nbegin\n  Result := InternalGetBlendOperation(InternalGetLayer(layer));\nend;\n\nfunction TPaintDotNetFile.GetLayerVisible(layer: integer): boolean;\nbegin\n  Result := InternalGetLayerVisible(InternalGetLayer(layer));\nend;\n\nfunction TPaintDotNetFile.GetLayerOpacity(layer: integer): byte;\nbegin\n  Result := InternalGetLayerOpacity(InternalGetLayer(layer));\nend;\n\nfunction TPaintDotNetFile.GetLayerName(layer: integer): string;\nbegin\n  Result := InternalGetLayerName(InternalGetLayer(layer));\nend;\n\nfunction TPaintDotNetFile.GetLayerBitmapCopy(layer: integer): TBGRABitmap;\nbegin\n  if (layer < 0) or (layer >= NbLayers) then\n    raise Exception.Create('Index out of bounds');\n\n  Result := TBGRABitmap.Create(Width, Height);\n  if int64(Result.NbPixels) * 4 <> LayerData[layer].Size then\n  begin\n    Result.Free;\n    raise Exception.Create('Inconsistent layer data size');\n  end\n  else\n  begin\n    layerData[layer].Position := 0;\n    layerData[layer].Read(Result.Data^, LayerData[layer].Size);\n    if TBGRAPixel_RGBAOrder then result.SwapRedBlue;\n    Result.InvalidateBitmap;\n\n    if Result.LineOrder = riloBottomToTop then\n      Result.VerticalFlip;\n  end;\nend;\n\nfunction TPaintDotNetFile.InternalGetLayerName(layer: TSerializedClass): string;\nvar\n  prop: TCustomSerializedObject;\nbegin\n  if layer = nil then\n    Result := ''\n  else\n  begin\n    prop := Content.GetObjectField(layer, 'Layer+properties');\n    if prop = nil then\n      Result := ''\n    else\n    begin\n      Result := Content.GetSimpleField(prop, 'name');\n    end;\n  end;\nend;\n\nfunction TPaintDotNetFile.LayerDataSize(numLayer: integer): int64;\nvar\n  layer, surface, scan0: TCustomSerializedObject;\nbegin\n  layer := InternalGetLayer(numLayer);\n  if layer = nil then\n    Result := 0\n  else\n  begin\n    surface := Content.GetObjectField(layer, 'surface');\n    if surface = nil then\n      Result := 0\n    else\n    begin\n      scan0  := Content.GetObjectField(surface, 'scan0');\n      Result := StrToInt64(Content.GetSimpleField(scan0, 'length64'));\n    end;\n  end;\nend;\n\nprocedure TPaintDotNetFile.LoadLayer(dest: TMemoryStream; src: TStream;\n  uncompressedSize: int64);\nvar\n  CompressionFlag: byte;\n  maxChunkSize, decompressedChunkSize, compressedChunkSize: LongWord;\n  chunks:   array of TMemoryStream;\n  numChunk: integer;\n  chunkCount, i: integer;\n  decomp:   Tdecompressionstream;\n  nextPos:  int64;\n\nbegin\n  {$hints off}\n  src.ReadBuffer({%H-}CompressionFlag, 1);\n  {$hints on}\n  if CompressionFlag = 1 then\n    dest.CopyFrom(src, uncompressedSize)\n  else\n  if CompressionFlag = 0 then\n  begin\n    maxChunkSize := BEReadLongword(src);\n    if maxChunkSize < 4 then\n      raise Exception.Create('Invalid max chunk size');\n    chunkCount := (uncompressedSize + maxChunkSize - 1) div maxChunkSize;\n    setlength(chunks, chunkCount);\n    for i := 0 to ChunkCount - 1 do\n    begin\n      numChunk := BEReadLongint(src);\n      if (numChunk < 0) or (numChunk >= chunkCount) then\n        raise Exception.Create('Chunk number out of bounds');\n      compressedChunkSize := BEReadLongword(src);\n      nextPos := src.Position + compressedChunkSize;\n      src.Position := src.Position + 10; //skip gzip header\n      decompressedChunkSize :=\n        min(maxChunkSize, uncompressedSize - int64(numChunk) * int64(maxChunkSize));\n      decomp := Tdecompressionstream.Create(src, True);\n      chunks[numChunk] := TMemoryStream.Create;\n      chunks[numChunk].CopyFrom(decomp, decompressedChunkSize);\n      FreeAndNil(decomp);\n      src.Position := nextPos;\n    end;\n    for i := 0 to ChunkCount - 1 do\n    begin\n      chunks[i].Position := 0;\n      dest.CopyFrom(chunks[i], chunks[i].size);\n      chunks[i].Free;\n    end;\n    chunks := nil;\n  end\n  else\n    raise Exception('Unknown compression flag (' + IntToStr(CompressionFlag) + ')');\nend;\n\nfunction TPaintDotNetFile.InternalGetLayer(num: integer): TSerializedClass;\nvar\n  layerList: TCustomSerializedObject;\nbegin\n  if Layers = nil then\n    raise Exception.Create('No layers available')\n  else\n  if (num < 0) or (num >= NbLayers) then\n    raise Exception.Create('Layer index out of bounds')\n  else\n  begin\n    layerList := Content.GetObjectField(Layers, '_items');\n    Result    := Content.GetObject(layerList.FieldAsString[num]) as TSerializedClass;\n  end;\nend;\n\nfunction TPaintDotNetFile.InternalGetBlendOperation(layer: TSerializedClass): TBlendOperation;\nvar\n  prop, blendOp: TCustomSerializedObject;\n  blendName:     string;\nbegin\n  if layer = nil then\n    Result := boTransparent\n  else\n  begin\n    prop := Content.GetObjectField(layer, 'properties');\n    if prop = nil then\n      Result := boTransparent\n    else\n    begin\n      blendOp := Content.GetObjectField(prop, 'blendOp');\n      if blendOp = nil then\n        Result := boTransparent\n      else\n      begin\n        blendName := blendOp.TypeAsString;\n        if (pos('+', blendName) <> 0) then\n          Delete(blendName, 1, pos('+', blendName));\n        if copy(blendName, length(blendName) - length('BlendOp') +\n          1, length('BlendOp')) = 'BlendOp' then\n          Delete(blendName, length(blendName) - length('BlendOp') +\n            1, length('BlendOp'));\n\n        if blendName = 'Normal' then\n          Result := boTransparent\n        else\n        if blendName = 'Multiply' then\n          Result := boLinearMultiply\n        else\n        if blendName = 'Additive' then\n          Result := boLinearAdd\n        else\n        if blendName = 'ColorBurn' then\n          Result := boColorBurn\n        else\n        if blendName = 'ColorDodge' then\n          Result := boColorDodge\n        else\n        if blendName = 'Reflect' then\n          Result := boReflect\n        else\n        if blendName = 'Glow' then\n          Result := boGlow\n        else\n        if blendName = 'Overlay' then\n          Result := boOverlay\n        else\n        if blendName = 'Difference' then\n          Result := boLinearDifference\n        else\n        if blendName = 'Negation' then\n          Result := boLinearNegation\n        else\n        if blendName = 'Lighten' then\n          Result := boLighten\n        else\n        if blendName = 'Darken' then\n          Result := boDarken\n        else\n        if blendName = 'Screen' then\n          Result := boScreen\n        else\n        if blendName = 'Xor' then\n          Result := boXor\n        else\n          Result := boTransparent;\n      end;\n    end;\n  end;\nend;\n\nfunction TPaintDotNetFile.InternalGetLayerVisible(layer: TSerializedClass): boolean;\nvar\n  prop: TCustomSerializedObject;\nbegin\n  if layer = nil then\n    Result := False\n  else\n  begin\n    prop := Content.GetObjectField(layer, 'Layer+properties');\n    if prop = nil then\n      Result := False\n    else\n    begin\n      Result := (Content.GetSimpleField(prop, 'visible') = 'True');\n    end;\n  end;\nend;\n\nfunction TPaintDotNetFile.InternalGetLayerOpacity(layer: TSerializedClass): byte;\nvar\n  prop: TCustomSerializedObject;\nbegin\n  if layer = nil then\n    Result := 0\n  else\n  begin\n    prop := Content.GetObjectField(layer, 'Layer+properties');\n    if prop = nil then\n      Result := 0\n    else\n    begin\n      Result := StrToInt(Content.GetSimpleField(prop, 'opacity'));\n    end;\n  end;\nend;\n\nvar AlreadyRegistered: boolean;\n\nprocedure RegisterPaintNetFormat;\nbegin\n  if AlreadyRegistered then exit;\n\n  BGRARegisterImageReader(ifPaintDotNet, TFPReaderPaintDotNet, True, 'Paint.NET image', 'pdn');\n\n  RegisterLayeredBitmapReader('pdn', TPaintDotNetFile);\n\n  AlreadyRegistered := true;\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrapalette.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Palette of colors for various purposes, loading/saving into various formats }\nunit BGRAPalette;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, Avl_Tree, BGRABitmapTypes, FPimage;\n\nconst\n  MaxLastAddedColors = 10;\n\ntype\n  TBGRAPaletteFormat = integer;\n\nconst\n  palUnknown : TBGRAPaletteFormat = 0;\n  palPaintDotNet : TBGRAPaletteFormat = 1;\n  palGimp : TBGRAPaletteFormat = 2;\n  palAdobeSwatchExchange : TBGRAPaletteFormat = 3;\n  palKOffice : TBGRAPaletteFormat = 4;\n  palJascPSP : TBGRAPaletteFormat = 5;\n  palCustom : TBGRAPaletteFormat = 100;\n\ntype\n  { Indexed color in palette }\n  TBGRAIndexedPaletteEntry = packed record\n    Color: TBGRAPixel;\n    Index: UInt32;\n  end;\n  PBGRAIndexedPaletteEntry = ^TBGRAIndexedPaletteEntry;\n  { Weighted color in palette }\n  TBGRAWeightedPaletteEntry = packed record\n    Color: TBGRAPixel;\n    Weight: UInt32;\n  end;\n  PBGRAWeightedPaletteEntry = ^TBGRAWeightedPaletteEntry;\n  ArrayOfWeightedColor = array of TBGRAWeightedPaletteEntry;\n\n  TBGRAPixelComparer = function (p1,p2 : PBGRAPixel): boolean;\n\n  { Abstract class containing a palette }\n  TBGRACustomPalette = class\n  private\n    function GetDominantColor: TBGRAPixel;\n  protected\n    function GetCount: integer; virtual; abstract;\n    function GetColorByIndex(AIndex: integer): TBGRAPixel; virtual; abstract;\n  public\n    function ContainsColor(AValue: TBGRAPixel): boolean; virtual; abstract;\n    function IndexOfColor(AValue: TBGRAPixel): integer; virtual; abstract;\n    function GetAsArrayOfColor: ArrayOfTBGRAPixel; virtual; abstract;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; virtual; abstract;\n    procedure AssignTo(AImage: TFPCustomImage); overload;\n    procedure AssignTo(APalette: TFPPalette); overload;\n    property DominantColor: TBGRAPixel read GetDominantColor;\n    property Count: integer read GetCount;\n    property Color[AIndex: integer]: TBGRAPixel read GetColorByIndex;\n  end;\n\ntype\n  { @abstract(Abstract implementation of a BGRA palette using a binary tree.)\n\n    It ensures relatively fast and average access time even with many entries. }\n  TBGRAAvgLvlPalette = class(TBGRACustomPalette)\n  protected\n    FTree: TAVLTree;\n    FArray: array of PBGRAPixel;\n    FLastAddedColors: packed array[0..MaxLastAddedColors-1] of PBGRAPixel;\n    FLastAddedColorCount: integer;\n    function GetCount: integer; override;\n    function GetColorByIndex(AIndex: integer): TBGRAPixel; override;\n    procedure FreeEntry(AEntry: PBGRAPixel); virtual; abstract;\n    procedure NeedArray; virtual;\n    procedure ClearArray; virtual;\n    procedure AddLastColor(AColor: PBGRAPixel);\n    function GetLastColor(AValue: TBGRAPixel): PBGRAPixel;\n    procedure ClearLastColors;\n  public\n    constructor Create; overload;\n    function ContainsColor(AValue: TBGRAPixel): boolean; override;\n    function IndexOfColor(AValue: TBGRAPixel): integer; override;\n    procedure Clear; virtual;\n    destructor Destroy; override;\n    function GetAsArrayOfColor: ArrayOfTBGRAPixel; override;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; override;\n  end;\n\n  { Palette of colors, roughly sorted by luminosity }\n  TBGRAPalette = class(TBGRAAvgLvlPalette)\n  protected\n    function CreateEntry(AColor: TBGRAPixel): PBGRAPixel; virtual;\n    procedure FreeEntry(AEntry: PBGRAPixel); override;\n    procedure IncludePixel(PPixel: PBGRAPixel); virtual;\n    procedure ExceptionUnknownPaletteFormat;\n    procedure ExceptionInvalidPaletteFormat;\n  public\n    constructor Create(ABitmap: TBGRACustomBitmap); overload; virtual;\n    constructor Create(APalette: TBGRACustomPalette); overload; virtual;\n    constructor Create(AColors: ArrayOfTBGRAPixel); overload; virtual;\n    constructor Create(AColors: ArrayOfWeightedColor); overload; virtual;\n    function AddColor(AValue: TBGRAPixel): boolean; virtual;\n    procedure AddColors(ABitmap: TBGRACustomBitmap); overload; virtual;\n    procedure AddColors(APalette: TBGRACustomPalette); overload; virtual;\n    function RemoveColor(AValue: TBGRAPixel): boolean; virtual;\n    procedure LoadFromFile(AFilenameUTF8: string); virtual;\n    procedure LoadFromStream(AStream: TStream; AFormat: TBGRAPaletteFormat); virtual;\n    procedure LoadFromResource(AFilename: string; AFormat: TBGRAPaletteFormat);\n    procedure SaveToFile(AFilenameUTF8: string); virtual;\n    procedure SaveToStream(AStream: TStream; AFormat: TBGRAPaletteFormat); virtual;\n    function DetectPaletteFormat(AStream: TStream): TBGRAPaletteFormat; overload; virtual;\n    function DetectPaletteFormat(AFilenameUTF8: string): TBGRAPaletteFormat; overload;\n    function SuggestPaletteFormat(AFilenameUTF8: string): TBGRAPaletteFormat; virtual;\n  end;\n\n  { Indexed palette of colors }\n  TBGRAIndexedPalette = class(TBGRAPalette)\n  private\n    FCurrentIndex: UInt32;\n  protected\n    procedure NeedArray; override;\n    function CreateEntry(AColor: TBGRAPixel): PBGRAPixel; override;\n    procedure FreeEntry(AEntry: PBGRAPixel); override;\n  public\n    function RemoveColor({%H-}AValue: TBGRAPixel): boolean; override;\n    function IndexOfColor(AValue: TBGRAPixel): integer; override;\n    procedure Clear; override;\n  end;\n\n  { @abstract(Palette of weighted colors.)\n\n    The weight is similar to a number of occurrences. It can be increased or decreased.\n  }\n  TBGRAWeightedPalette = class(TBGRAPalette)\n  private\n  protected\n    function CreateEntry(AColor: TBGRAPixel): PBGRAPixel; override;\n    procedure FreeEntry(AEntry: PBGRAPixel); override;\n    function GetWeightByIndex(AIndex: Integer): UInt32; virtual;\n    procedure IncludePixel(PPixel: PBGRAPixel); override;\n  public\n    constructor Create(AColors: ArrayOfWeightedColor); override;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; override;\n    function IncColor(AValue: TBGRAPixel; out NewWeight: UInt32): boolean;\n    procedure IncColors(ABitmap: TBGRACustomBitmap); overload; virtual;\n    function DecColor(AValue: TBGRAPixel; out NewWeight: UInt32): boolean;\n    property Weight[AIndex: Integer]: UInt32 read GetWeightByIndex;\n  end;\n\n  { Palette of colors indirectly specify by a pointer }\n  TBGRAReferencePalette = class(TBGRAAvgLvlPalette)\n  protected\n    procedure FreeEntry({%H-}AEntry: PBGRAPixel); override;\n  public\n    function AddColor(AValue: PBGRAPixel): boolean;\n    function RemoveColor(AValue: PBGRAPixel): boolean;\n  end;\n\n  { Abstract palette that can find an approximate matching color }\n  TBGRACustomApproxPalette = class(TBGRACustomPalette)\n  private\n    function FindNearestColorIgnoreAlpha(AValue: TBGRAPixel): TBGRAPixel; inline;\n    function FindNearestColorIndexIgnoreAlpha(AValue: TBGRAPixel): integer; inline;\n  protected\n    function GetWeightByIndex({%H-}AIndex: Integer): UInt32; virtual;\n  public\n    function FindNearestColor(AValue: TBGRAPixel; AIgnoreAlpha: boolean): TBGRAPixel; overload;\n    function FindNearestColor(AValue: TBGRAPixel): TBGRAPixel; overload; virtual; abstract;\n    function FindNearestColorIndex(AValue: TBGRAPixel; AIgnoreAlpha: boolean): integer; overload;\n    function FindNearestColorIndex(AValue: TBGRAPixel): integer; overload; virtual; abstract;\n    property Weight[AIndex: Integer]: UInt32 read GetWeightByIndex;\n  end;\n\n  { Palette containing all possible 16-bit colors. }\n  TBGRA16BitPalette = class(TBGRACustomApproxPalette)\n  protected\n    function GetCount: integer; override;\n    function GetColorByIndex(AIndex: integer): TBGRAPixel; override;\n  public\n    function ContainsColor(AValue: TBGRAPixel): boolean; override;\n    function IndexOfColor(AValue: TBGRAPixel): integer; override;\n    function GetAsArrayOfColor: ArrayOfTBGRAPixel; override;\n    function GetAsArrayOfWeightedColor: ArrayOfWeightedColor; override;\n    function FindNearestColor(AValue: TBGRAPixel): TBGRAPixel; override;\n    function FindNearestColorIndex(AValue: TBGRAPixel): integer; override;\n  end;\n\n  { @abstract(Abstract class for color quantization.)\n\n    Quantization is the process by which each color is reduced to an index into a palette.\n    Surrounding pixels can affect the approximate color, an effect called dithering.\n  }\n  TBGRACustomColorQuantizer = class\n  protected\n    function GetDominantColor: TBGRAPixel; virtual;\n    function GetPalette: TBGRACustomApproxPalette; virtual; abstract;\n    function GetSourceColor(AIndex: integer): TBGRAPixel; virtual; abstract;\n    function GetSourceColorCount: Integer; virtual; abstract;\n    function GetReductionColorCount: integer; virtual; abstract;\n    procedure SetReductionColorCount(AValue: Integer); virtual; abstract;\n  public\n    constructor Create(APalette: TBGRACustomPalette; ASeparateAlphaChannel: boolean); overload; virtual; abstract;\n    constructor Create(AColors: array of TBGRAPixel; ASeparateAlphaChannel: boolean); overload;\n    constructor Create(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption); overload; virtual; abstract;\n    constructor Create(APalette: TBGRACustomPalette; ASeparateAlphaChannel: boolean; AReductionColorCount: integer); overload; virtual; abstract;\n    constructor Create(AColors: array of TBGRAPixel; ASeparateAlphaChannel: boolean; AReductionColorCount: integer); overload;\n    constructor Create(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption; AReductionColorCount: integer); overload; virtual; abstract;\n    procedure ApplyDitheringInplace(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; ABounds: TRect); overload; virtual; abstract;\n    procedure ApplyDitheringInplace(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap); overload;\n    function GetDitheredBitmap(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; ABounds: TRect): TBGRACustomBitmap; overload; virtual; abstract;\n    function GetDitheredBitmap(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap): TBGRACustomBitmap; overload;\n    procedure SaveBitmapToFile(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; AFilenameUTF8: string); overload;\n    procedure SaveBitmapToFile(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; AFilenameUTF8: string; AFormat: TBGRAImageFormat); overload;\n    procedure SaveBitmapToStream(AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; AStream: TStream; AFormat: TBGRAImageFormat); virtual; abstract;\n    function GetDitheredBitmapIndexedData(ABitDepth: integer; AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap; out AScanlineSize: PtrInt): Pointer; overload;\n    function GetDitheredBitmapIndexedData(ABitDepth: integer; AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap): Pointer; overload;\n    function GetDitheredBitmapIndexedData(ABitDepth: integer; AByteOrder: TRawImageByteOrder; AAlgorithm: TDitheringAlgorithm;\n      ABitmap: TBGRACustomBitmap; out AScanlineSize: PtrInt): Pointer; overload; virtual; abstract;\n    { Number colors provided in the source }\n    property SourceColorCount: Integer read GetSourceColorCount;\n    { Value of a color in the source }\n    property SourceColor[AIndex: integer]: TBGRAPixel read GetSourceColor;\n    { @abstract(Number of different colors in the reduced palette.)\n\n    By default, there are 256 colors.\n\n**Example to reduce an image to 16 colors:**\n```pascal\nuses BGRAColorQuantization, BGRABitmapTypes, BGRABitmap;\nvar\n  quant : TBGRAColorQuantizer;\n  sourceBmp: TBGRABitmap;\nbegin\n  sourceBmp := TBGRABitmap.Create('picture.jpg');\n  quant := TBGRAColorQuantizer.Create(sourceBmp, acIgnore);\n  quant.ReductionColorCount := 16;\n  quant.SaveBitmapToFile(daFloydSteinberg, sourceBmp, 'picture_in_4_bits.bmp');\n  quant.Free;\n  sourceBmp.Free;\nend;\n```}\n    property ReductionColorCount: Integer read GetReductionColorCount write SetReductionColorCount;\n    { Palette with reduced number of colors after applying quantization }\n    property ReducedPalette: TBGRACustomApproxPalette read GetPalette;\n    { Colors that is the most represented in the source }\n    property DominantColor: TBGRAPixel read GetDominantColor;\n  end;\n\n  TBGRAColorQuantizerAny = class of TBGRACustomColorQuantizer;\n\nvar\n  BGRAColorQuantizerFactory: TBGRAColorQuantizerAny;\n\nfunction BGRARequiredBitDepth(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption): integer; overload;\nfunction BGRARequiredBitDepth(APalette: TBGRACustomPalette): integer; overload;\n\ntype\n  TPaletteReaderProc = function(APalette: TBGRAPalette; AStream: TStream): boolean;\n  TPaletteWriterProc = procedure(APalette: TBGRAPalette; AStream: TStream);\n  TCheckPaletteFormatProc = function(ABuf256: string): boolean;\n\nprocedure BGRARegisterPaletteFormat(AFormatIndex: TBGRAPaletteFormat; AExtension: string; ADescription: string;\n  AReadProc: TPaletteReaderProc; AWriteProc: TPaletteWriterProc; ACheckFormatProc: TCheckPaletteFormatProc);\nfunction BGRARegisteredPaletteFormatFilter(AAllSupportedDescription: string) : string;\n\nprocedure ArrayOfWeightedColor_QuickSort(AColors: ArrayOfWeightedColor; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\n\nprocedure ArrayOfWeightedColor_InsertionSort(AColors: ArrayOfWeightedColor; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\n\nprocedure ArrayOfTBGRAPixel_QuickSort(AColors: ArrayOfTBGRAPixel; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\n\nprocedure ArrayOfTBGRAPixel_InsertionSort(AColors: ArrayOfTBGRAPixel; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\n\nimplementation\n\nuses BGRAUTF8, bufstream;\n\nfunction IsDWordGreater(p1, p2: PBGRAPixel): boolean;\nbegin\n  result := LongWord(p1^) > LongWord(p2^);\nend;\n\nconst\n  InsertionSortLimit = 10;\n\nprocedure ArrayOfWeightedColor_InsertionSort(AColors: ArrayOfWeightedColor; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\nvar i,j,insertPos: Int32or64;\n  compared: TBGRAWeightedPaletteEntry;\nbegin\n  if AComparer = nil then AComparer := @IsDWordGreater;\n  for i := AMinIndex+1 to AMaxIndex do\n  begin\n    insertPos := i;\n    compared := AColors[i];\n    while (insertPos > AMinIndex) and AComparer(@AColors[insertPos-1].Color,@compared.Color) do\n      dec(insertPos);\n    if insertPos <> i then\n    begin\n      for j := i downto insertPos+1 do\n        AColors[j] := AColors[j-1];\n      AColors[insertPos] := compared;\n    end;\n  end;\nend;\n\nprocedure ArrayOfWeightedColor_QuickSort(AColors: ArrayOfWeightedColor; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\nvar Pivot: TBGRAPixel;\n  CurMin,CurMax,i : Int32or64;\n\n  procedure Swap(a,b: Int32or64);\n  var Temp: TBGRAWeightedPaletteEntry;\n  begin\n    if a = b then exit;\n    Temp := AColors[a];\n    AColors[a] := AColors[b];\n    AColors[b] := Temp;\n  end;\nbegin\n  if AComparer = nil then AComparer := @IsDWordGreater;\n  if AMaxIndex-AMinIndex+1 <= InsertionSortLimit then\n  begin\n    ArrayOfWeightedColor_InsertionSort(AColors,AMinIndex,AMaxIndex,AComparer);\n    exit;\n  end;\n  Pivot := AColors[(AMinIndex+AMaxIndex) shr 1].Color;\n  CurMin := AMinIndex;\n  CurMax := AMaxIndex;\n  i := CurMin;\n  while i < CurMax do\n  begin\n    if AComparer(@AColors[i].Color, @Pivot) then\n    begin\n      Swap(i, CurMax);\n      dec(CurMax);\n    end else\n    begin\n      if AComparer(@Pivot, @AColors[i].Color) then\n      begin\n        Swap(i, CurMin);\n        inc(CurMin);\n      end;\n      inc(i);\n    end;\n  end;\n  if AComparer(@Pivot, @AColors[i].Color) then\n  begin\n    Swap(i, CurMin);\n    inc(CurMin);\n  end;\n  if CurMin > AMinIndex then ArrayOfWeightedColor_QuickSort(AColors,AMinIndex,CurMin,AComparer);\n  if CurMax < AMaxIndex then ArrayOfWeightedColor_QuickSort(AColors,CurMax,AMaxIndex,AComparer);\nend;\n\nprocedure ArrayOfTBGRAPixel_InsertionSort(AColors: ArrayOfTBGRAPixel; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\nvar i,j,insertPos: Int32or64;\n  compared: TBGRAPixel;\nbegin\n  if AComparer = nil then AComparer := @IsDWordGreater;\n  for i := AMinIndex+1 to AMaxIndex do\n  begin\n    insertPos := i;\n    compared := AColors[i];\n    while (insertPos > AMinIndex) and AComparer(@AColors[insertPos-1],@compared) do\n      dec(insertPos);\n    if insertPos <> i then\n    begin\n      for j := i downto insertPos+1 do\n        AColors[j] := AColors[j-1];\n      AColors[insertPos] := compared;\n    end;\n  end;\nend;\n\nprocedure ArrayOfTBGRAPixel_QuickSort(AColors: ArrayOfTBGRAPixel; AMinIndex,\n  AMaxIndex: Int32or64; AComparer: TBGRAPixelComparer = nil);\nvar Pivot: TBGRAPixel;\n  CurMin,CurMax,i : Int32or64;\n\n  procedure Swap(a,b: Int32or64);\n  var Temp: TBGRAPixel;\n  begin\n    if a = b then exit;\n    Temp := AColors[a];\n    AColors[a] := AColors[b];\n    AColors[b] := Temp;\n  end;\nbegin\n  if AComparer = nil then AComparer := @IsDWordGreater;\n  if AMaxIndex-AMinIndex+1 <= InsertionSortLimit then\n  begin\n    ArrayOfTBGRAPixel_InsertionSort(AColors,AMinIndex,AMaxIndex,AComparer);\n    exit;\n  end;\n  Pivot := AColors[(AMinIndex+AMaxIndex) shr 1];\n  CurMin := AMinIndex;\n  CurMax := AMaxIndex;\n  i := CurMin;\n  while i < CurMax do\n  begin\n    if AComparer(@AColors[i], @Pivot) then\n    begin\n      Swap(i, CurMax);\n      dec(CurMax);\n    end else\n    begin\n      if AComparer(@Pivot, @AColors[i]) then\n      begin\n        Swap(i, CurMin);\n        inc(CurMin);\n      end;\n      inc(i);\n    end;\n  end;\n  if AComparer(@Pivot, @AColors[i]) then\n  begin\n    Swap(i, CurMin);\n    inc(CurMin);\n  end;\n  if CurMin > AMinIndex then ArrayOfTBGRAPixel_QuickSort(AColors,AMinIndex,CurMin,AComparer);\n  if CurMax < AMaxIndex then ArrayOfTBGRAPixel_QuickSort(AColors,CurMax,AMaxIndex,AComparer);\nend;\n\n{$i paletteformats.inc}\n\nfunction BGRARequiredBitDepth(ABitmap: TBGRACustomBitmap; AAlpha: TAlphaChannelPaletteOption): integer;\nvar\n  palette: TBGRAPalette;\n  p: PBGRAPixel;\n  i: Int32or64;\n  transparentEntry: boolean;\nbegin\n  palette := TBGRAPalette.Create;\n  p := ABitmap.Data;\n  transparentEntry := false;\n  if AAlpha = acIgnore then\n  begin\n    for i := ABitmap.NbPixels-1 downto 0 do\n    begin\n      palette.AddColor(BGRA(p^.red,p^.green,p^.blue));\n      inc(p);\n      if palette.Count > 256 then break;\n    end;\n  end else\n  if AAlpha = acTransparentEntry then\n  begin\n    for i := ABitmap.NbPixels-1 downto 0 do\n    begin\n      if p^.alpha < 128 then\n        transparentEntry:= true\n      else\n        palette.AddColor(BGRA(p^.red,p^.green,p^.blue));\n      inc(p);\n      if palette.Count > 256 then break;\n    end;\n  end else\n  begin\n    for i := ABitmap.NbPixels-1 downto 0 do\n    begin\n      palette.AddColor(p^);\n      inc(p);\n      if palette.Count > 256 then break;\n    end;\n  end;\n\n  if palette.Count+byte(transparentEntry) > 256 then\n  begin\n    if (AAlpha = acFullChannelInPalette) and ABitmap.HasTransparentPixels then\n      result := 32\n    else\n    if (AAlpha = acTransparentEntry) and ABitmap.HasTransparentPixels then\n      result := 25\n    else\n      result := 24;\n  end else\n  begin\n    result := 8;\n    while (result > 0) and (1 shl (result shr 1) >= palette.Count) do result := result shr 1;\n  end;\n  palette.Free;\nend;\n\nfunction BGRARequiredBitDepth(APalette: TBGRACustomPalette): integer;\nvar i: integer;\n  hasTransp: boolean;\nbegin\n  if APalette.Count > 256 then\n  begin\n    hasTransp := false;\n    for i := 0 to APalette.Count-1 do\n      if APalette.Color[i].alpha <> 255 then\n      begin\n        hasTransp:= true;\n        break;\n      end;\n    if hasTransp then\n      result := 32\n    else\n      result := 24;\n  end else\n  begin\n    result := 8;\n    while (result > 0) and (1 shl (result shr 1) >= APalette.Count) do result := result shr 1;\n  end;\nend;\n\n{ TBGRA16BitPalette }\n\nfunction TBGRA16BitPalette.GetCount: integer;\nbegin\n  result := 65537;\nend;\n\nfunction TBGRA16BitPalette.GetColorByIndex(AIndex: integer): TBGRAPixel;\nbegin\n  if (AIndex >= 65536) or (AIndex < 0) then\n    result := BGRAPixelTransparent\n  else\n    result := Color16BitToBGRA(AIndex);\nend;\n\nfunction TBGRA16BitPalette.ContainsColor(AValue: TBGRAPixel): boolean;\nbegin\n  if AValue.alpha = 0 then\n    result := true\n  else\n    result := (AValue.alpha = 255) and (FindNearestColor(AValue)=AValue);\nend;\n\nfunction TBGRA16BitPalette.IndexOfColor(AValue: TBGRAPixel): integer;\nvar idx: integer;\nbegin\n  if AValue.Alpha = 0 then\n    result := 65536\n  else\n  begin\n    idx := BGRAToColor16Bit(AValue);\n    if Color16BitToBGRA(idx)=AValue then\n      result := idx\n    else\n      result := -1;\n  end;\nend;\n\nfunction TBGRA16BitPalette.GetAsArrayOfColor: ArrayOfTBGRAPixel;\nbegin\n  result := nil;\n  raise exception.Create('Palette too big');\nend;\n\nfunction TBGRA16BitPalette.GetAsArrayOfWeightedColor: ArrayOfWeightedColor;\nbegin\n  result := nil;\n  raise exception.Create('Palette too big');\nend;\n\nfunction TBGRA16BitPalette.FindNearestColor(AValue: TBGRAPixel): TBGRAPixel;\nbegin\n  if AValue.alpha = 0 then result := BGRAPixelTransparent\n  else\n    result := GetColorByIndex(BGRAToColor16Bit(AValue));\nend;\n\nfunction TBGRA16BitPalette.FindNearestColorIndex(AValue: TBGRAPixel): integer;\nbegin\n  result := BGRAToColor16Bit(AValue);\nend;\n\n{ TBGRAIndexedPalette }\n\nprocedure TBGRAIndexedPalette.NeedArray;\nvar Node: TAVLTreeNode;\n  n: UInt32;\nbegin\n  n := Count;\n  if UInt32(length(FArray)) <> n then\n  begin\n    setLength(FArray,n);\n    for Node in FTree do\n    with PBGRAIndexedPaletteEntry(Node.Data)^ do\n    begin\n      if Index < n then //index is unsigned so always >= 0\n        FArray[Index] := @Color;\n    end;\n  end;\nend;\n\nfunction TBGRAIndexedPalette.CreateEntry(AColor: TBGRAPixel): PBGRAPixel;\nbegin\n  result := PBGRAPixel(GetMem(sizeOf(TBGRAIndexedPaletteEntry)));\n  result^ := AColor;\n  PBGRAIndexedPaletteEntry(result)^.Index := FCurrentIndex;\n  Inc(FCurrentIndex);\nend;\n\nprocedure TBGRAIndexedPalette.FreeEntry(AEntry: PBGRAPixel);\nbegin\n  FreeMem(AEntry);\nend;\n\nfunction TBGRAIndexedPalette.RemoveColor(AValue: TBGRAPixel): boolean;\nbegin\n  Result:= false;\n  raise exception.Create('It is not possible to remove a color from an indexed palette');\nend;\n\nfunction TBGRAIndexedPalette.IndexOfColor(AValue: TBGRAPixel): integer;\nVar Node: TAVLTreeNode;\nbegin\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n    result := PBGRAIndexedPaletteEntry(Node.Data)^.Index\n  else\n    result := -1;\nend;\n\nprocedure TBGRAIndexedPalette.Clear;\nbegin\n  inherited Clear;\n  FCurrentIndex := 0;\nend;\n\n{ TBGRACustomColorQuantizer }\n\nfunction TBGRACustomColorQuantizer.GetDominantColor: TBGRAPixel;\nbegin\n  result := ReducedPalette.DominantColor;\nend;\n\nconstructor TBGRACustomColorQuantizer.Create(AColors: array of TBGRAPixel;\n  ASeparateAlphaChannel: boolean);\nvar palette: TBGRAPalette;\n  i: Integer;\nbegin\n  palette := TBGRAPalette.Create;\n  for i := 0 to high(AColors) do\n    palette.AddColor(AColors[i]);\n  Create(palette, ASeparateAlphaChannel);\n  palette.Free;\nend;\n\nconstructor TBGRACustomColorQuantizer.Create(AColors: array of TBGRAPixel;\n  ASeparateAlphaChannel: boolean; AReductionColorCount: integer);\nvar palette: TBGRAPalette;\n  i: Integer;\nbegin\n  palette := TBGRAPalette.Create;\n  for i := 0 to high(AColors) do\n    palette.AddColor(AColors[i]);\n  Create(palette, ASeparateAlphaChannel, AReductionColorCount);\n  palette.Free;\nend;\n\nprocedure TBGRACustomColorQuantizer.ApplyDitheringInplace(\n  AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap);\nbegin\n  ApplyDitheringInplace(AAlgorithm, ABitmap, rect(0,0,ABitmap.Width,ABitmap.Height));\nend;\n\nfunction TBGRACustomColorQuantizer.GetDitheredBitmap(\n  AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap\n  ): TBGRACustomBitmap;\nbegin\n  result := GetDitheredBitmap(AAlgorithm, ABitmap, rect(0,0,ABitmap.Width,ABitmap.Height));\nend;\n\nprocedure TBGRACustomColorQuantizer.SaveBitmapToFile(\n  AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  AFilenameUTF8: string);\nbegin\n  SaveBitmapToFile(AAlgorithm, ABitmap, AFilenameUTF8, SuggestImageFormat(AFilenameUTF8));\nend;\n\nprocedure TBGRACustomColorQuantizer.SaveBitmapToFile(\n  AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  AFilenameUTF8: string; AFormat: TBGRAImageFormat);\nvar\n  stream: TFileStreamUTF8;\nbegin\n   stream := TFileStreamUTF8.Create(AFilenameUTF8,fmCreate);\n   try\n     SaveBitmapToStream(AAlgorithm, ABitmap, stream, AFormat);\n   finally\n     stream.Free;\n   end;\nend;\n\nfunction TBGRACustomColorQuantizer.GetDitheredBitmapIndexedData(\n  ABitDepth: integer; AAlgorithm: TDitheringAlgorithm; ABitmap: TBGRACustomBitmap;\n  out AScanlineSize: PtrInt): Pointer;\nbegin\n  result := GetDitheredBitmapIndexedData(ABitDepth,\n  {$IFDEF ENDIAN_LITTLE}riboLSBFirst{$ELSE}riboMSBFirst{$endif},\n  AAlgorithm, ABitmap, AScanlineSize);\nend;\n\nfunction TBGRACustomColorQuantizer.GetDitheredBitmapIndexedData(\n  ABitDepth: integer; AAlgorithm: TDitheringAlgorithm;\n  ABitmap: TBGRACustomBitmap): Pointer;\nvar dummy: PtrInt;\nbegin\n  result := GetDitheredBitmapIndexedData(ABitDepth, AAlgorithm, ABitmap, dummy);\nend;\n\n{ TBGRACustomPalette }\n\nfunction TBGRACustomPalette.GetDominantColor: TBGRAPixel;\nvar\n  w: ArrayOfWeightedColor;\n  i: Integer;\n  maxWeight, totalWeight: UInt32;\nbegin\n  result := BGRAWhite;\n  maxWeight := 0;\n  w := GetAsArrayOfWeightedColor;\n  totalWeight:= 0;\n  for i := 0 to high(w) do\n    inc(totalWeight, w[i].Weight);\n  for i := 0 to high(w) do\n    if (w[i].Weight > maxWeight) and (BGRAToGSBA(w[i].Color).saturation > 16000) then\n    begin\n      maxWeight:= w[i].Weight;\n      result := w[i].Color;\n    end;\n  if maxWeight > totalWeight div 20 then exit;\n  for i := 0 to high(w) do\n    if (w[i].Weight > maxWeight) and (BGRAToGSBA(w[i].Color).lightness < 56000) and (BGRAToGSBA(w[i].Color).lightness > 16000) then\n    begin\n      maxWeight:= w[i].Weight;\n      result := w[i].Color;\n    end;\n  if maxWeight > 0 then exit;\n  for i := 0 to high(w) do\n    if (w[i].Weight > maxWeight) then\n    begin\n      maxWeight:= w[i].Weight;\n      result := w[i].Color;\n    end;\nend;\n\nprocedure TBGRACustomPalette.AssignTo(AImage: TFPCustomImage);\nbegin\n  AImage.UsePalette := true;\n  AssignTo(AImage.Palette);\nend;\n\nprocedure TBGRACustomPalette.AssignTo(APalette: TFPPalette);\nvar i: integer;\nbegin\n  APalette.Clear;\n  APalette.Capacity := Count;\n  for i := 0 to Count-1 do\n    APalette.Color[i] := BGRAToFPColor(Color[i]);\nend;\n\n{ TBGRACustomApproxPalette }\n\nfunction TBGRACustomApproxPalette.FindNearestColorIgnoreAlpha(AValue: TBGRAPixel): TBGRAPixel;\nvar saveAlpha: byte;\nbegin\n  if AValue.alpha = 0 then\n    result := BGRAPixelTransparent\n  else\n  begin\n    saveAlpha := AValue.alpha;\n    AValue.alpha := 255;\n    result := FindNearestColor(AValue);\n    result.alpha := saveAlpha;\n  end;\nend;\n\nfunction TBGRACustomApproxPalette.FindNearestColorIndexIgnoreAlpha(\n  AValue: TBGRAPixel): integer;\nbegin\n  if AValue.alpha = 0 then\n    result := -1\n  else\n  begin\n    AValue.alpha := 255;\n    result := FindNearestColorIndex(AValue);\n  end;\nend;\n\nfunction TBGRACustomApproxPalette.GetWeightByIndex(AIndex: Integer): UInt32;\nbegin\n  result := 1;\nend;\n\nfunction TBGRACustomApproxPalette.FindNearestColor(AValue: TBGRAPixel; AIgnoreAlpha: boolean): TBGRAPixel;\nbegin\n  if AIgnoreAlpha then\n    result := FindNearestColorIgnoreAlpha(AValue)\n  else\n    result := FindNearestColor(AValue);\nend;\n\nfunction TBGRACustomApproxPalette.FindNearestColorIndex(AValue: TBGRAPixel;\n  AIgnoreAlpha: boolean): integer;\nbegin\n  if AIgnoreAlpha then\n    result := FindNearestColorIndexIgnoreAlpha(AValue)\n  else\n    result := FindNearestColorIndex(AValue);\nend;\n\n{ TBGRAWeightedPalette }\n\nfunction TBGRAWeightedPalette.GetWeightByIndex(AIndex: Integer): UInt32;\nbegin\n  NeedArray;\n  if (AIndex >= 0) and (AIndex < length(FArray)) then\n    result := PBGRAWeightedPaletteEntry(FArray[AIndex])^.Weight\n  else\n    raise ERangeError.Create('Index out of bounds');\nend;\n\nprocedure TBGRAWeightedPalette.IncludePixel(PPixel: PBGRAPixel);\nvar dummy: UInt32;\nbegin\n  IncColor(PPixel^,dummy);\nend;\n\nconstructor TBGRAWeightedPalette.Create(AColors: ArrayOfWeightedColor);\nvar\n  i: Integer;\nbegin\n  inherited Create;\n  for i := 0 to high(AColors) do\n    with AColors[i] do IncColor(Color,Weight);\nend;\n\nfunction TBGRAWeightedPalette.GetAsArrayOfWeightedColor: ArrayOfWeightedColor;\nvar\n  i: Int32or64;\nbegin\n  NeedArray;\n  setlength(result, length(FArray));\n  for i := 0 to high(result) do\n    result[i] := PBGRAWeightedPaletteEntry(FArray[i])^;\nend;\n\nfunction TBGRAWeightedPalette.CreateEntry(AColor: TBGRAPixel): PBGRAPixel;\nbegin\n  result := PBGRAPixel(GetMem(sizeOf(TBGRAWeightedPaletteEntry)));\n  result^ := AColor;\n  PBGRAWeightedPaletteEntry(result)^.Weight := 1;\nend;\n\nprocedure TBGRAWeightedPalette.FreeEntry(AEntry: PBGRAPixel);\nbegin\n  FreeMem(AEntry);\nend;\n\nfunction TBGRAWeightedPalette.IncColor(AValue: TBGRAPixel; out NewWeight: UInt32\n  ): boolean;\nVar Node: TAVLTreeNode;\n  Entry: PBGRAPixel;\nbegin\n  Entry := GetLastColor(AValue);\n  if Entry <> nil then\n  begin\n    NewWeight := PBGRAWeightedPaletteEntry(Entry)^.Weight+1;\n    PBGRAWeightedPaletteEntry(Entry)^.Weight := NewWeight;\n    result := false;\n    exit;\n  end;\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n  begin\n    Entry := PBGRAPixel(Node.Data);\n    NewWeight := PBGRAWeightedPaletteEntry(Entry)^.Weight+1;\n    PBGRAWeightedPaletteEntry(Entry)^.Weight := NewWeight;\n    AddLastColor(Entry);\n    result := false;\n  end\n  else\n  begin\n    Entry := CreateEntry(AValue);\n    FTree.Add(Entry);\n    ClearArray;\n    NewWeight := PBGRAWeightedPaletteEntry(Entry)^.Weight;\n    AddLastColor(Entry);\n    result := true;\n  end;\nend;\n\nprocedure TBGRAWeightedPalette.IncColors(ABitmap: TBGRACustomBitmap);\nvar p: PBGRAPixel;\n  n: integer;\n  w: UInt32;\nbegin\n  n := ABitmap.NbPixels;\n  p := ABitmap.Data;\n  while n > 0 do\n  begin\n    IncColor(p^, w);\n    inc(p);\n    dec(n);\n  end;\nend;\n\nfunction TBGRAWeightedPalette.DecColor(AValue: TBGRAPixel; out NewWeight: UInt32\n  ): boolean;\nvar\n  Node : TAVLTreeNode;\n  Entry: PBGRAPixel;\nbegin\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n  begin\n    Entry := PBGRAPixel(Node.Data);\n    NewWeight := PBGRAWeightedPaletteEntry(Entry)^.Weight;\n    if NewWeight >= 2 then\n    begin\n      dec(NewWeight);\n      PBGRAWeightedPaletteEntry(Entry)^.Weight := NewWeight;\n    end\n    else\n    begin\n      NewWeight := 0;\n      FreeEntry(Entry);\n      FTree.Delete(Node);\n      ClearArray;\n      ClearLastColors;\n    end;\n    result := true;\n  end else\n  begin\n    result := false;\n    NewWeight := 0;\n  end;\nend;\n\n{ TBGRAReferencePalette }\n\nprocedure TBGRAReferencePalette.FreeEntry(AEntry: PBGRAPixel);\nbegin\n  //nothing\nend;\n\nfunction TBGRAReferencePalette.AddColor(AValue: PBGRAPixel): boolean;\nbegin\n  if Assigned(GetLastColor(AValue^)) then\n  begin\n    result := false;\n    exit;\n  end;\n  AddLastColor(AValue);\n  if Assigned(FTree.Find(AValue)) then\n  begin\n    result := false;\n  end\n  else\n  begin\n    result := true;\n    FTree.Add(AValue);\n    ClearArray;\n  end;\nend;\n\nfunction TBGRAReferencePalette.RemoveColor(AValue: PBGRAPixel): boolean;\nvar\n  Node : TAVLTreeNode;\nbegin\n  Node := FTree.Find(AValue);\n  if Assigned(Node) then\n  begin\n    FTree.Delete(Node);\n    result := true;\n    ClearArray;\n    ClearLastColors;\n  end else\n    result := false;\nend;\n\nfunction PaletteOnCompareItems(Data1, Data2: Pointer): integer;\nvar gray1, gray2: UInt32or64;\n  c1, c2: TBGRAPixel;\nbegin\n  c1 := PBGRAPixel(Data1)^;\n  c2 := PBGRAPixel(Data2)^;\n  if c1.alpha < c2.alpha then\n    result := -1\n  else if c1.alpha > c2.alpha then\n    result := 1\n  else\n  begin\n    gray1 := (GammaExpansionTab[c1.red] shl 8)+(GammaExpansionTab[c1.green] shl 9)+(GammaExpansionTab[c1.blue] shl 7);\n    gray2 := (GammaExpansionTab[c2.red] shl 8)+(GammaExpansionTab[c2.green] shl 9)+(GammaExpansionTab[c2.blue] shl 7);\n    if gray1<gray2 then\n      result := -1\n    else if gray1>gray2 then\n      result := 1\n    else\n    begin\n      if c1.green > c2.green then\n        result := 1\n      else if c1.green < c2.green then\n        result := -1\n      else if c1.red > c2.red then\n        result := 1\n      else if c1.red < c2.red then\n        result := -1\n      else if c1.blue > c2.blue then\n        result := 1\n      else if c1.blue < c2.blue then\n        result := -1\n      else\n        result := 0;\n    end;\n  end;\nend;\n\n{ TBGRAAvgLvlPalette }\n\nconstructor TBGRAAvgLvlPalette.Create;\nbegin\n  FTree := TAVLTree.Create;\n  FTree.OnCompare := @PaletteOnCompareItems;\nend;\n\ndestructor TBGRAAvgLvlPalette.Destroy;\nbegin\n  Clear;\n  FreeAndNil(FTree);\n  inherited Destroy;\nend;\n\nfunction TBGRAAvgLvlPalette.GetAsArrayOfColor: ArrayOfTBGRAPixel;\nvar i: Int32or64;\nbegin\n  NeedArray;\n  setlength(result, Length(FArray));\n  for i := 0 to high(result) do\n    result[i] := FArray[i]^;\nend;\n\nfunction TBGRAAvgLvlPalette.GetAsArrayOfWeightedColor: ArrayOfWeightedColor;\nvar i: Int32or64;\nbegin\n  NeedArray;\n  setlength(result, Length(FArray));\n  for i := 0 to high(result) do\n  with result[i] do\n  begin\n    Color := FArray[i]^;\n    Weight:= 1;\n  end;\nend;\n\nprocedure TBGRAAvgLvlPalette.Clear;\nvar Node: TAVLTreeNode;\nbegin\n  For Node in FTree do\n    FreeEntry(PBGRAPixel(Node.Data));\n  FTree.Clear;\n  ClearArray;\n  FLastAddedColorCount := 0;\nend;\n\nfunction TBGRAAvgLvlPalette.GetCount: integer;\nbegin\n  result := FTree.Count;\nend;\n\nfunction TBGRAAvgLvlPalette.ContainsColor(AValue: TBGRAPixel): boolean;\nVar Node: TAVLTreeNode;\nbegin\n  if Assigned(GetLastColor(AValue)) then\n  begin\n    result := true;\n    exit;\n  end;\n  Node := FTree.Find(@AValue);\n  result := Assigned(Node);\n  if result then AddLastColor(PBGRAPixel(Node.Data));\nend;\n\nfunction TBGRAAvgLvlPalette.IndexOfColor(AValue: TBGRAPixel): integer;\nVar Node: TAVLTreeNode;\nbegin\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n  begin\n    result := 0;\n    Node := Node.Left;\n    while Assigned(Node) do\n    begin\n      inc(result);\n      Node := Node.Left;\n    end;\n  end else\n    result := -1;\nend;\n\nfunction TBGRAAvgLvlPalette.GetColorByIndex(AIndex: integer): TBGRAPixel;\nbegin\n  NeedArray;\n  if (AIndex >= 0) and (AIndex < length(FArray)) then\n    result := FArray[AIndex]^\n  else\n    raise ERangeError.Create('Index out of bounds');\nend;\n\nprocedure TBGRAAvgLvlPalette.NeedArray;\nvar Node: TAVLTreeNode;\n  i,n: integer;\nbegin\n  n := Count;\n  if length(FArray) <> n then\n  begin\n    setLength(FArray,n);\n    i := 0;\n    for Node in FTree do\n    begin\n      if i >= n then break;\n      FArray[i] := PBGRAPixel(Node.Data);\n      inc(i);\n    end;\n  end;\nend;\n\nprocedure TBGRAAvgLvlPalette.ClearArray;\nbegin\n  FArray := nil;\nend;\n\nprocedure TBGRAAvgLvlPalette.AddLastColor(AColor: PBGRAPixel);\nbegin\n  if FLastAddedColorCount < MaxLastAddedColors then\n  begin\n    FLastAddedColors[FLastAddedColorCount] := AColor;\n    inc(FLastAddedColorCount);\n  end else\n  begin\n    move(FLastAddedColors[1],FLastAddedColors[0],(FLastAddedColorCount-1)*sizeof(PBGRAPixel));\n    FLastAddedColors[FLastAddedColorCount-1] := AColor;\n  end;\nend;\n\nfunction TBGRAAvgLvlPalette.GetLastColor(AValue: TBGRAPixel): PBGRAPixel;\nvar\n  i: Int32or64;\nbegin\n  for i := FLastAddedColorCount-1 downto 0 do\n    if PLongWord(FLastAddedColors[i])^ = LongWord(AValue) then\n    begin\n      result := FLastAddedColors[i];\n      exit;\n    end;\n  result := nil;\nend;\n\nprocedure TBGRAAvgLvlPalette.ClearLastColors;\nbegin\n  FLastAddedColorCount := 0;\nend;\n\n{ TBGRAPalette }\n\nfunction TBGRAPalette.CreateEntry(AColor: TBGRAPixel): PBGRAPixel;\nbegin\n  result := PBGRAPixel(GetMem(sizeOf(TBGRAPixel)));\n  result^ := AColor;\nend;\n\nprocedure TBGRAPalette.FreeEntry(AEntry: PBGRAPixel);\nbegin\n  FreeMem(AEntry);\nend;\n\nprocedure TBGRAPalette.IncludePixel(PPixel: PBGRAPixel);\nbegin\n  AddColor(PPixel^);\nend;\n\nprocedure TBGRAPalette.ExceptionUnknownPaletteFormat;\nbegin\n  raise Exception.Create('Unknown palette format');\nend;\n\nprocedure TBGRAPalette.ExceptionInvalidPaletteFormat;\nbegin\n  raise Exception.Create('Invalid palette format');\nend;\n\nconstructor TBGRAPalette.Create(ABitmap: TBGRACustomBitmap);\nvar p: PBGRAPixel;\n  n: integer;\nbegin\n  inherited Create;\n  n:= ABitmap.NbPixels;\n  p := ABitmap.Data;\n  while n > 0 do\n  begin\n    IncludePixel(p);\n    inc(p);\n    dec(n);\n  end;\nend;\n\nconstructor TBGRAPalette.Create(APalette: TBGRACustomPalette);\nbegin\n  inherited Create;\n  AddColors(APalette);\nend;\n\nconstructor TBGRAPalette.Create(AColors: ArrayOfTBGRAPixel);\nvar\n  i: Integer;\nbegin\n  inherited Create;\n  for i := 0 to high(AColors) do\n    AddColor(AColors[i]);\nend;\n\nconstructor TBGRAPalette.Create(AColors: ArrayOfWeightedColor);\nvar\n  i: Integer;\nbegin\n  inherited Create;\n  for i := 0 to high(AColors) do\n    AddColor(AColors[i].Color);\nend;\n\nfunction TBGRAPalette.AddColor(AValue: TBGRAPixel): boolean;\nVar Node: TAVLTreeNode;\n  Entry: PBGRAPixel;\nbegin\n  if Assigned(GetLastColor(AValue)) then\n  begin\n    result := false;\n    exit;\n  end;\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n  begin\n    AddLastColor(PBGRAPixel(Node.Data));\n    result := false;\n  end\n  else\n  begin\n    result := true;\n    Entry := CreateEntry(AValue);\n    FTree.Add(Entry);\n    ClearArray;\n    AddLastColor(Entry);\n  end;\nend;\n\nprocedure TBGRAPalette.AddColors(ABitmap: TBGRACustomBitmap);\nvar p: PBGRAPixel;\n  n: integer;\nbegin\n  n := ABitmap.NbPixels;\n  p := ABitmap.Data;\n  while n > 0 do\n  begin\n    AddColor(p^);\n    inc(p);\n    dec(n);\n  end;\nend;\n\nprocedure TBGRAPalette.AddColors(APalette: TBGRACustomPalette);\nvar i: Int32or64;\nbegin\n  for i := 0 to APalette.Count- 1 do\n    AddColor(APalette.Color[i]);\nend;\n\nfunction TBGRAPalette.RemoveColor(AValue: TBGRAPixel): boolean;\nvar\n  Node : TAVLTreeNode;\nbegin\n  Node := FTree.Find(@AValue);\n  if Assigned(Node) then\n  begin\n    FreeEntry(Node.Data);\n    FTree.Delete(Node);\n    result := true;\n    ClearArray;\n    ClearLastColors;\n  end else\n    result := false;\nend;\n\nprocedure TBGRAPalette.LoadFromFile(AFilenameUTF8: string);\nvar\n  stream: TFileStreamUTF8;\n  format: TBGRAPaletteFormat;\nbegin\n  format := DetectPaletteFormat(AFilenameUTF8);\n  if format = palUnknown then\n  begin\n    ExceptionUnknownPaletteFormat;\n    exit;\n  end;\n  stream:= TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead);\n  try\n    LoadFromStream(stream, format);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRAPalette.LoadFromStream(AStream: TStream;\n  AFormat: TBGRAPaletteFormat);\nvar buf: TReadBufStream;\n  handled: boolean;\n  i: Integer;\nbegin\n  RegisterDefaultPaletteFormats;\n  Clear;\n  buf := TReadBufStream.Create(AStream);\n  try\n    handled := false;\n    for i := 0 to High(PaletteFormats) do\n      if PaletteFormats[i].formatIndex = AFormat then\n      begin\n        if not PaletteFormats[i].reader(self, AStream) then\n          ExceptionInvalidPaletteFormat;\n        handled := true;\n        break;\n      end;\n    if not handled then ExceptionUnknownPaletteFormat;\n  finally\n    buf.Free;\n  end;\nend;\n\nprocedure TBGRAPalette.LoadFromResource(AFilename: string; AFormat: TBGRAPaletteFormat);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream, AFormat);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRAPalette.SaveToFile(AFilenameUTF8: string);\nvar\n  stream: TFileStreamUTF8;\nbegin\n  stream:= TFileStreamUTF8.Create(AFilenameUTF8,fmCreate);\n  try\n    SaveToStream(stream, SuggestPaletteFormat(AFilenameUTF8));\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRAPalette.SaveToStream(AStream: TStream;\n  AFormat: TBGRAPaletteFormat);\nvar buf: TWriteBufStream;\n  handled: boolean;\n  i: Integer;\nbegin\n  RegisterDefaultPaletteFormats;\n  buf := TWriteBufStream.Create(AStream);\n  try\n    handled := false;\n    for i := 0 to High(PaletteFormats) do\n      if PaletteFormats[i].formatIndex = AFormat then\n      begin\n        PaletteFormats[i].writer(self, AStream);\n        handled := true;\n        break;\n      end;\n    if not handled then ExceptionUnknownPaletteFormat;\n  finally\n    buf.Free;\n  end;\nend;\n\nfunction TBGRAPalette.DetectPaletteFormat(AStream: TStream): TBGRAPaletteFormat;\nvar buf: string;\n  oldPos: int64;\n  i: Integer;\nbegin\n  result := palUnknown;\n  setlength(buf,256);\n  fillchar(buf[1],length(buf),#0);\n  oldPos := AStream.Position;\n  AStream.Read(buf[1],length(buf));\n  AStream.Position := oldPos;\n  if length(buf)>0 then\n  begin\n    RegisterDefaultPaletteFormats;\n    for i := 0 to high(PaletteFormats) do\n      if PaletteFormats[i].checkFormat(buf) then\n      begin\n        result := PaletteFormats[i].formatIndex;\n        exit;\n      end;\n  end;\nend;\n\nfunction TBGRAPalette.DetectPaletteFormat(AFilenameUTF8: string\n  ): TBGRAPaletteFormat;\nvar stream: TFileStreamUTF8;\nbegin\n  result := SuggestPaletteFormat(AFilenameUTF8);\n  if not FileExists(AFilenameUTF8) then exit;\n  try\n    stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead or fmShareDenyWrite);\n  except\n    exit;\n  end;\n  try\n    result := DetectPaletteFormat(stream);\n    if result = palUnknown then\n      result := SuggestPaletteFormat(AFilenameUTF8);\n  finally\n    stream.Free;\n  end;\nend;\n\nfunction TBGRAPalette.SuggestPaletteFormat(AFilenameUTF8: string\n  ): TBGRAPaletteFormat;\nvar ext: string;\n  i: Integer;\nbegin\n  RegisterDefaultPaletteFormats;\n  ext := ExtractFileExt(AFilenameUTF8);\n  if ext <> '' then\n  begin\n    for i := 0 to high(PaletteFormats) do\n      if CompareText(PaletteFormats[i].ext,ext) = 0 then\n      begin\n        result := PaletteFormats[i].formatIndex;\n        exit;\n      end;\n  end;\n  result := palUnknown;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapapers.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{ 2023 Massimo Magnano }\n\n{ List of paper sizes in inches and cm }\nunit BGRAPapers;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses Types;\n\ntype\n  { Description of a paper size }\n  TPaperSize = packed record\n    name:String[16];\n    w, h:Single;\n  end;\n\n  TPaperSizes=array of TPaperSize;\n  PPaperSizes=^TPaperSizes;\n\nconst\n  Paper_A_cm: TPaperSizes=(\n  (name:'A0'; w:84.1; h:118.9), (name:'A1'; w:59.4; h:84.1), (name:'A2'; w:42.0; h:59.4),\n  (name:'A3'; w:29.7; h:42.0), (name:'A4'; w:21.0; h:29.7), (name:'A5'; w:14.8; h:21.0),\n  (name:'A6'; w:10.5; h:14.8), (name:'A7'; w:7.4; h:10.5), (name:'A8'; w:5.2; h:7.4),\n  (name:'A9'; w:3.7; h:5.2), (name:'A10'; w:2.6; h:3.7)\n  );\n\n  Paper_A_inch: TPaperSizes=(\n  (name:'A0'; w:33.1; h:46.8), (name:'A1'; w:23.4; h:33.1), (name:'A2'; w:16.5; h:23.4),\n  (name:'A3'; w:11.7; h:16.5), (name:'A4'; w:8.3; h:11.7), (name:'A5'; w:5.8; h:8.3),\n  (name:'A6'; w:4.1; h:5.8), (name:'A7'; w:2.9; h:4.1), (name:'A8'; w:2.0; h:2.9),\n  (name:'A9'; w:1.5; h:2.0), (name:'A10'; w:1.0; h:1.5)\n  );\n\n  Paper_B_cm: TPaperSizes=(\n  (name:'B0'; w:100.0; h:141.4), (name:'B1'; w:70.7; h:100.0), (name:'B2'; w:50.0; h:70.7),\n  (name:'B3'; w:35.3; h:50.0), (name:'B4'; w:25.0; h:35.3), (name:'B5'; w:17.6; h:25.0),\n  (name:'B6'; w:12.5; h:17.6), (name:'B7'; w:8.8; h:12.5), (name:'B8'; w:6.2; h:8.8),\n  (name:'B9'; w:4.4; h:6.2), (name:'B10'; w:3.1; h:4.4)\n  );\n\n  Paper_B_inch: TPaperSizes=(\n  (name:'B0'; w:39.4; h:55.7), (name:'B1'; w:27.8; h:39.4), (name:'B2'; w:19.7; h:27.8),\n  (name:'B3'; w:13.9; h:19.7), (name:'B4'; w:9.8; h:13.9), (name:'B5'; w:6.9; h:9.8),\n  (name:'B6'; w:4.9; h:6.9), (name:'B7'; w:3.5; h:4.9), (name:'B8'; w:2.4; h:3.5),\n  (name:'B9'; w:1.7; h:2.4), (name:'B10'; w:1.2; h:1.7)\n  );\n\n  Paper_C_cm: TPaperSizes=(\n  (name:'C0'; w:91.7; h:129.7), (name:'C1'; w:64.8; h:91.7), (name:'C2'; w:45.8; h:64.8),\n  (name:'C3'; w:32.4; h:45.8), (name:'C4'; w:22.9; h:32.4), (name:'C5'; w:16.2; h:22.9),\n  (name:'C6'; w:11.4; h:16.2), (name:'C7'; w:8.1; h:11.4), (name:'C8'; w:5.7; h:8.1),\n  (name:'C9'; w:4.0; h:5.7), (name:'C10'; w:2.8; h:4.0)\n  );\n\n  Paper_C_inch: TPaperSizes=(\n  (name:'C0'; w:36.1; h:51.1), (name:'C1'; w:25.5; h:36.1), (name:'C2'; w:18.0; h:25.5),\n  (name:'C3'; w:12.8; h:18.0), (name:'C4'; w:9.0; h:12.8), (name:'C5'; w:6.4; h:9.0),\n  (name:'C6'; w:4.5; h:6.4), (name:'C7'; w:3.2; h:4.5), (name:'C8'; w:2.2; h:3.2),\n  (name:'C9'; w:1.6; h:2.2), (name:'C10'; w:1.1; h:1.6)\n  );\n\n  Paper_DIN_476_cm: TPaperSizes=((name:'2A0'; w:118.9; h:168.2), (name:'4A0'; w:168.2; h:237.8));\n  Paper_DIN_476_inch: TPaperSizes=((name:'2A0'; w:46.8; h:66.2), (name:'4A0'; w:66.2; h:93.6));\n\n  Paper_JIS_cm: TPaperSizes=(\n  (name:'B0'; w:103.0; h:145.6), (name:'B1'; w:72.8; h:103.0), (name:'B2'; w:51.5; h:72.8),\n  (name:'B3'; w:36.4; h:51.5), (name:'B4'; w:25.7; h:36.4), (name:'B5'; w:18.2; h:25.7),\n  (name:'B6'; w:12.8; h:18.2), (name:'B7'; w:9.1; h:12.8), (name:'B8'; w:6.4; h:9.1),\n  (name:'B9'; w:4.5; h:6.4), (name:'B10'; w:3.2; h:4.5), (name:'B11'; w:2.2; h:3.2), (name:'B12'; w:1.6; h:2.2)\n  );\n\n  Paper_JIS_inch: TPaperSizes=(\n  (name:'B0'; w:40.6; h:57.3), (name:'B1'; w:28.7; h:40.6), (name:'B2'; w:20.3; h:28.7),\n  (name:'B3'; w:14.3; h:20.3), (name:'B4'; w:10.1; h:14.3), (name:'B5'; w:7.2; h:10.1),\n  (name:'B6'; w:5.0; h:7.2), (name:'B7'; w:3.6; h:5.0), (name:'B8'; w:2.5; h:3.6),\n  (name:'B9'; w:1.8; h:2.5), (name:'B10'; w:1.3; h:1.8), (name:'B11'; w:0.9; h:1.3), (name:'B12'; w:0.6; h:0.9)\n  );\n\n  Paper_Shiroku_ban_cm: TPaperSizes=((name:'B4'; w:26.4; h:37.9), (name:'B5'; w:18.9; h:26.2), (name:'B6'; w:12.7; h:18.8));\n  Paper_Shiroku_ban_inch: TPaperSizes=((name:'B4'; w:10.4; h:14.9), (name:'B5'; w:7.4; h:10.3), (name:'B6'; w:5.0; h:7.4));\n\n  Paper_Kiku_cm: TPaperSizes=((name:'B4'; w:22.7; h:30.6), (name:'B5'; w:15.1; h:22.7));\n  Paper_Kiku_inch: TPaperSizes=((name:'B4'; w:8.9; h:12.0), (name:'B5'; w:5.9; h:8.9));\n\n  Paper_US_cm: TPaperSizes=(\n  (name:'Half Letter'; w:21.6; h:14.0), (name:'Letter'; w:21.6; h:27.9), (name:'Government Legal'; w:21.6; h:33.0),\n  (name:'Executive'; w:18.4; h:26.7), (name:'Statement'; w:14.0; h:21.6), (name:'Legal'; w:21.6; h:35.6),\n  (name:'Ledger'; w:43.2; h:27.9), (name:'Tabloid'; w:27.9; h:43.2), (name:'Junior Legal'; w:20.3; h:12.7)\n  );\n\n  Paper_US_inch: TPaperSizes=(\n  (name:'Half Letter'; w:8.5; h:5.5), (name:'Letter'; w:8.5; h:11.0), (name:'Government Legal'; w:8.5; h:13.0),\n  (name:'Executive'; w:7.25; h:10.5), (name:'Statement'; w:5.5; h:8.5), (name:'Legal'; w:8.5; h:14.0),\n  (name:'Ledger'; w:17.0; h:11.0), (name:'Tabloid'; w:11.0; h:17.0), (name:'Junior Legal'; w:8.0; h:5.0)\n  );\n\n  Paper_ANSI_cm: TPaperSizes=(\n  (name:'A'; w:21.6; h:27.9), (name:'B'; w:43.2; h:27.9), (name:'C'; w:43.2; h:55.9),\n  (name:'D'; w:55.9; h:86.4), (name:'E'; w:86.4; h:111.8)\n  );\n\n  Paper_ANSI_inch: TPaperSizes=(\n  (name:'A'; w:8.5; h:11.0), (name:'B'; w:17.0; h:11.0), (name:'C'; w:17.0; h:22.0),\n  (name:'D'; w:22.0; h:34.0), (name:'E'; w:34.0; h:44.0)\n  );\n\n  Photo_cm: TPaperSizes=(\n  (name:''; w:7; h:10),\n  (name:''; w:9; h:12), (name:''; w:9; h:13),\n  (name:''; w:10; h:10), (name:''; w:10; h:15),\n  (name:''; w:13; h:13), (name:''; w:13; h:18),\n  (name:''; w:15; h:20), (name:''; w:15; h:21),\n  (name:''; w:20; h:20), (name:''; w:20; h:24), (name:''; w:20; h:25), (name:''; w:20; h:30),\n  (name:''; w:30; h:30), (name:''; w:30; h:40), (name:''; w:30; h:45),\n  (name:''; w:40; h:40), (name:''; w:40; h:50), (name:''; w:40; h:60)\n  );\n\n  Paper_BUSINESS_CARD_cm: TPaperSizes=(\n  (name:'A8'; w:7.4; h:5.2), (name:'B8'; w:8.8; h:6.2), (name:'West Europe'; w:8.5; h:5.5),\n  (name:'International'; w:8.6; h:5.4), (name:'North America'; w:8.9; h:5.1), (name:'East Europe,Asia'; w:9.0; h:5.0),\n  (name:'East Asia'; w:9.0; h:5.4), (name:'Oceania'; w:9.0; h:5.5), (name:'Japan'; w:9.1; h:5.5)\n  );\n\n  Paper_BUSINESS_CARD_inch: TPaperSizes=(\n  (name:'A8'; w:2.9; h:2.0), (name:'B8'; w:3.5; h:2.4), (name:'West Europe'; w:3.33; h:2.16),\n  (name:'International'; w:3.37; h:2.12), (name:'North America'; w:3.5; h:2.0), (name:'East Europe,Asia'; w:3.56; h:2.0),\n  (name:'East Asia'; w:3.56; h:2.12), (name:'Oceania'; w:3.56; h:2.16), (name:'Japan'; w:3.58; h:2.16)\n  );\n\n  PaperSizes_Names: array of String[16]=('ISO A', 'ISO B', 'ISO C', 'DIN 476', 'JIS', 'ANSI', 'Photo');\n\nvar\n  PaperSizes_cm :array of TPaperSizes;\n  PaperSizes_inch :array of TPaperSizes;\n\nfunction Sizes_InchToCm(const APapers:TPaperSizes):TPaperSizes;\nfunction Sizes_CmToInch(const APapers:TPaperSizes):TPaperSizes;\n\n//Returns the smallest Paper in PaperSizes array that can contain the specified dimensions\nfunction GetPaperSize(AWidth, AHeight:Single; PaperSizes:array of TPaperSizes):TPaperSize;\n\nimplementation\n\nfunction Sizes_InchToCm(const APapers: TPaperSizes): TPaperSizes;\nvar\n   i:Integer;\n\nbegin\n  Result :=Copy(APapers, 0, Length(APapers));\n  for i:=Low(Result) to High(Result) do\n  begin\n    Result[i].w :=Result[i].w*2.54;\n    Result[i].h :=Result[i].h*2.54;\n  end;\nend;\n\nfunction Sizes_CmToInch(const APapers: TPaperSizes): TPaperSizes;\nvar\n   i:Integer;\n\nbegin\n  Result :=Copy(APapers, 0, Length(APapers));\n  for i:=Low(Result) to High(Result) do\n  begin\n    Result[i].w :=Result[i].w/2.54;\n    Result[i].h :=Result[i].h/2.54;\n  end;\nend;\n\nfunction GetPaperSize(AWidth, AHeight:Single; PaperSizes:array of TPaperSizes):TPaperSize;\nvar\n   p, i:Integer;\n   curW, curH:Single;\n\nbegin\n  curW :=MAXINT; curH :=MAXINT;\n  Fillchar(Result, sizeof(TPaperSize), 0);\n  for p:=Low(PaperSizes) to High(PaperSizes) do\n  for i:=Low(PaperSizes[p]) to High(PaperSizes[p]) do\n  begin\n    //Current paper can contain AWidth x AHeight ?\n    if (PaperSizes[p][i].w>=AWidth) and (PaperSizes[p][i].h>=AHeight) then\n    begin\n      //Current paper is smallest then Result ?\n      if (PaperSizes[p][i].w<=curW) and (PaperSizes[p][i].h<=curH) then\n      begin\n        Result :=PaperSizes[p][i];\n        curW :=Result.w;\n        curH :=Result.h;\n      end;\n    end;\n  end;\nend;\n\n\ninitialization\n   PaperSizes_cm :=[Paper_A_cm, Paper_B_cm, Paper_C_cm, Paper_DIN_476_cm,\n                    Paper_JIS_cm, Paper_ANSI_cm, Photo_cm];\n   PaperSizes_inch :=[Paper_A_inch, Paper_B_inch, Paper_C_inch, Paper_DIN_476_inch,\n                      Paper_JIS_inch, Paper_ANSI_inch, Sizes_CmToInch(Photo_cm)];\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapath.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Implements path and path cursor)\n\n  There are different conventions for angles.\n\n  First is about the unit. It can be one of the following:\n  - degrees (0..360)\n  - radian (0..2*Pi)\n  - tenth of degrees (0..3600)\n  - from 0 to 65536\n\n  Second is about the origin. It can be one of the following:\n  - right-most position (this is the default origin for radian and 65536)\n  - top-most position (this is the default origin for degrees)\n\n  Third is about the sign. It can be one of the following:\n  - positive is clockwise (this is the default for degrees)\n  - positive is counterclockwise (this is the default for radian and 65536)\n\n  TBGRAPath and TBGRACanvas2D follow HTML5 convention which is:\n    (radian, right-most, clockwise) that can be shortened to (radian, clockwise)\n    because right-most is the default for radian. This is abbreviated as \"radCW\".\n\n  When radian are CCW, it is also specified in order to make it clear, even\n  if it is the default convention in mathematics.\n\n  In order to make things easier, there are some functions that accept angles\n  in degrees. The convention used here is the usual degree convention:\n    (degrees, top-most, clockwise) that can be shortened to (degree)\n    because top-most and clockwise is the default for degrees.\n}\nunit BGRAPath;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n//todo: tangent interpolation\n\nuses\n  BGRABitmapTypes, BGRATransform;\n\nconst\n  DefaultDeviation = 0.1;\n\ntype\n  TBGRAPathElementType = (peNone, peMoveTo, peLineTo, peCloseSubPath,\n    peQuadraticBezierTo, peCubicBezierTo, peArc, peOpenedSpline,\n    peClosedSpline);\n\n  TBGRAPathDrawProc = BGRABitmapTypes.TBGRAPathDrawProc;\n  TBGRAPathFillProc = BGRABitmapTypes.TBGRAPathFillProc;\n\n  TBGRAPath = class;\n\n  { Cursor to determine position along a path }\n  TBGRAPathCursor = class(TBGRACustomPathCursor)\n  protected\n    FPath: TBGRAPath;\n    FDataPos: IntPtr;\n    FAcceptedDeviation: single;\n    FPathLength: single;\n    FPathLengthComputed: boolean;\n    FBounds: TRectF;\n    FBoundsComputed: boolean;\n    FArcPos: Single;\n\n    FStartCoordinate: TPointF;\n    FEndCoordinate: TPointF;\n    FLoopClosedShapes,FLoopPath: boolean;\n\n    FCurrentElementType: TBGRAPathElementType;\n    FCurrentElement: Pointer;\n    FCurrentElementArcPos,\n    FCurrentElementArcPosScale: single;\n    FCurrentElementStartCoord,\n    FCurrentElementEndCoord: TPointF;\n    FCurrentElementLength: single;\n    FCurrentElementPoints: array of TPointF;\n    FCurrentSegment: Int32or64;\n    FCurrentSegmentPos: single;\n    function GoToNextElement(ACanJump: boolean): boolean;\n    function GoToPreviousElement(ACanJump: boolean): boolean;\n    procedure MoveToEndOfElement;\n    procedure MoveForwardInElement(ADistance: single);\n    procedure MoveBackwardInElement(ADistance: single);\n    function NeedPolygonalApprox: boolean;\n    procedure OnPathFree; virtual;\n\n    function GetLoopClosedShapes: boolean; override;\n    function GetLoopPath: boolean; override;\n    function GetStartCoordinate: TPointF; override;\n    procedure SetLoopClosedShapes(AValue: boolean); override;\n    procedure SetLoopPath(AValue: boolean); override;\n\n    function GetArcPos: single; override;\n    function GetCurrentTangent: TPointF; override;\n    procedure SetArcPos(AValue: single); override;\n    function GetBounds: TRectF; override;\n    function GetPathLength: single; override;\n    procedure PrepareCurrentElement; virtual;\n    function GetCurrentCoord: TPointF; override;\n    function GetPath: TBGRAPath; virtual;\n  public\n    constructor Create(APath: TBGRAPath; AAcceptedDeviation: single = DefaultDeviation);\n    function MoveForward(ADistance: single; ACanJump: boolean = true): single; override;\n    function MoveBackward(ADistance: single; ACanJump: boolean = true): single; override;\n    destructor Destroy; override;\n    property CurrentCoordinate: TPointF read GetCurrentCoord;\n    property CurrentTangent: TPointF read GetCurrentTangent;\n    property Position: single read GetArcPos write SetArcPos;\n    property PathLength: single read GetPathLength;\n    property Path: TBGRAPath read GetPath;\n    property Bounds: TRectF read GetBounds;\n    property StartCoordinate: TPointF read GetStartCoordinate;\n    property LoopClosedShapes: boolean read GetLoopClosedShapes write SetLoopClosedShapes;\n    property LoopPath: boolean read GetLoopPath write SetLoopPath;\n    property AcceptedDeviation: single read FAcceptedDeviation;\n  end;\n\n  { @abstract(Path (in 2D) that allows to define custom shapes that can be drawn.)\n\n**Example of drawing an arrow with a path:**\n```pascal\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar p: TBGRAPath;\nbegin\n  p := TBGRAPath.Create;\n  p.scale(2);\n  p.moveTo(20, 20);\n  p.arcTo(60, 20, 60, 40, 20);\n  p.arcTo(60, 120, 80, 120, 20);\n  p.lineTo(120, 120);\n  Bitmap.ArrowEndAsClassic;\n  Bitmap.ArrowEndSize := PointF(5,5);\n  Bitmap.DrawPath(p, clBlack, 3);\n  Bitmap.ArrowEndAsNone;\n  p.Free;\nend;\n```}\n  TBGRAPath = class(TBGRACustomPath)\n  protected\n    FData: PByte;\n    FDataCapacity: PtrInt;\n    FDataPos: PtrInt;\n    FLastSubPathElementType, FLastStoredElementType: TBGRAPathElementType;\n    FLastMoveToDataPos: PtrInt;\n    FLastCoord,FLastTransformedCoord,\n    FSubPathStartCoord, FSubPathTransformedStartCoord: TPointF;\n    FExpectedTransformedControlPoint: TPointF;\n    FMatrix: TAffineMatrix; //this matrix must have a base of vectors\n                            //orthogonal, of same length and with positive\n                            //orientation in order to preserve arcs\n    FScale,FAngleRadCW: single;\n    FCursors: array of TBGRAPathCursor;\n    FInternalDrawOffset: TPointF;\n    procedure OnModify;\n    procedure OnMatrixChange;\n    procedure NeedSpace(count: integer);\n    function AllocateElement(AElementType: TBGRAPathElementType;\n  AExtraBytes: PtrInt = 0): Pointer;\n    procedure Init;\n    procedure DoClear;\n    function CheckElementType(AElementType: TBGRAPathElementType): boolean;\n    function GoToNextElement(var APos: PtrInt): boolean;\n    function GoToPreviousElement(var APos: PtrInt): boolean;\n    function PeekNextElement(APos: PtrInt): TBGRAPathElementType;\n    function GetElementStartCoord(APos: PtrInt): TPointF;\n    function GetElementEndCoord(APos: PtrInt): TPointF;\n    function GetElementLength(APos: PtrInt; AAcceptedDeviation: single): Single;\n    procedure GetElementAt(APos: PtrInt;\n      out AElementType: TBGRAPathElementType; out AElement: pointer);\n    function GetSvgString: string; virtual;\n    procedure SetSvgString(const AValue: string); virtual;\n    procedure RegisterCursor(ACursor: TBGRAPathCursor);\n    procedure UnregisterCursor(ACursor: TBGRAPathCursor);\n    function SetLastCoord(ACoord: TPointF): TPointF; inline;\n    procedure ClearLastCoord;\n    procedure BezierCurveFromTransformed(tcp1, cp2, pt:TPointF);\n    procedure QuadraticCurveFromTransformed(tcp, pt: TPointF);\n    function LastCoordDefined: boolean; inline;\n    function GetPolygonalApprox(APos: IntPtr; AAcceptedDeviation: single; AIncludeFirstPoint: boolean): ArrayOfTPointF;\n    function getPoints: ArrayOfTPointF; overload;override;\n    function getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF; overload;override;\n    function getLength: single; override;\n    function getCursor: TBGRACustomPathCursor; override;\n    procedure InternalDraw(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AAcceptedDeviation: single; AData: pointer);\n    procedure BitmapDrawSubPathProc(const APoints: array of TPointF; AClosed: boolean; AData: pointer);\n    function CorrectAcceptedDeviation(AAcceptedDeviation: single; const AMatrix: TAffineMatrix): single;\n  public\n    constructor Create; overload; override;\n    constructor Create(ASvgString: string); overload;\n    constructor Create(const APoints: ArrayOfTPointF); overload;\n    constructor Create(APath: IBGRAPath); overload;\n    destructor Destroy; override;\n    procedure beginPath; override;\n    procedure beginSubPath;\n    procedure closePath; override;\n    procedure translate(x,y: single);\n    procedure resetTransform;\n    procedure rotate(angleRadCW: single); overload;\n    procedure rotateDeg(angleDeg: single); overload;\n    procedure rotate(angleRadCW: single; center: TPointF); overload;\n    procedure rotateDeg(angleDeg: single; center: TPointF); overload;\n    procedure scale(factor: single);\n    procedure moveTo(x,y: single); overload;\n    procedure lineTo(x,y: single); overload;\n    procedure moveTo(constref pt: TPointF); overload; override;\n    procedure lineTo(constref pt: TPointF); overload; override;\n    procedure polyline(const pts: array of TPointF);\n    procedure polylineTo(const pts: array of TPointF); override;\n    procedure polygon(const pts: array of TPointF);\n    procedure quadraticCurveTo(cpx,cpy,x,y: single); overload;\n    procedure quadraticCurveTo(constref cp,pt: TPointF); overload; override;\n    procedure quadraticCurve(const curve: TQuadraticBezierCurve); overload;\n    procedure quadraticCurve(p1,cp,p2: TPointF); overload;\n    procedure smoothQuadraticCurveTo(x,y: single); overload;\n    procedure smoothQuadraticCurveTo(const pt: TPointF); overload;\n    procedure bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y: single); overload;\n    procedure bezierCurveTo(constref cp1,cp2,pt: TPointF); overload; override;\n    procedure bezierCurve(const curve: TCubicBezierCurve); overload;\n    procedure bezierCurve(p1,cp1,cp2,p2: TPointF); overload;\n    procedure smoothBezierCurveTo(cp2x,cp2y,x,y: single); overload;\n    procedure smoothBezierCurveTo(const cp2,pt: TPointF); overload;\n    procedure rect(x,y,w,h: single);\n    procedure roundRect(x,y,w,h,radius: single);\n    procedure arc(cx, cy, radius, startAngleRadCW, endAngleRadCW: single; anticlockwise: boolean); overload;\n    procedure arc(cx, cy, radius, startAngleRadCW, endAngleRadCW: single); overload;\n    procedure arcDeg(cx, cy, radius, startAngleDeg, endAngleDeg: single; anticlockwise: boolean); overload;\n    procedure arcDeg(cx, cy, radius, startAngleDeg, endAngleDeg: single); overload;\n    procedure arcTo(x1, y1, x2, y2, radius: single); overload;\n    procedure arcTo(const p1,p2: TPointF; radius: single); overload;\n    procedure arc(constref arcDef: TArcDef); overload; override;\n    procedure arc(cx, cy, rx,ry: single; xAngleRadCW, startAngleRadCW, endAngleRadCW: single); overload;\n    procedure arc(cx, cy, rx,ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single; anticlockwise: boolean); overload;\n    procedure arcTo(rx,ry, xAngleRadCW: single; largeArc, anticlockwise: boolean; x,y:single); overload;\n    procedure copyTo(dest: IBGRAPath); override;\n    procedure addPath(const AValue: string); overload;\n    procedure addPath(source: IBGRAPath); overload;\n    procedure openedSpline(const pts: array of TPointF; style: TSplineStyle); override;\n    procedure closedSpline(const pts: array of TPointF; style: TSplineStyle); override;\n    property SvgString: string read GetSvgString write SetSvgString;\n    function ComputeLength(AAcceptedDeviation: single = DefaultDeviation): single;\n    function ToPoints(AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\n    function ToPoints(AMatrix: TAffineMatrix; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\n    function IsEmpty: boolean;\n    function GetBounds(AAcceptedDeviation: single = DefaultDeviation): TRectF;\n    procedure SetPoints(const APoints: ArrayOfTPointF);\n    procedure stroke(ABitmap: TBGRACustomBitmap; AColor: TBGRAPixel; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ABitmap: TBGRACustomBitmap; ATexture: IBGRAScanner; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ABitmap: TBGRACustomBitmap; x,y: single; AColor: TBGRAPixel; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ABitmap: TBGRACustomBitmap; x,y: single; ATexture: IBGRAScanner; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix; AColor: TBGRAPixel; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AWidth: single; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer); overload; override;\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AData: pointer); overload; override;\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AAcceptedDeviation: single; AData: pointer = nil); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; AColor: TBGRAPixel; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; ATexture: IBGRAScanner; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; x,y: single; AColor: TBGRAPixel; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; x,y: single; ATexture: IBGRAScanner; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix; AColor: TBGRAPixel; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AAcceptedDeviation: single = DefaultDeviation); overload;\n    procedure fill(AFillProc: TBGRAPathFillProc; AData: pointer); overload; override;\n    procedure fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix; AData: pointer); overload; override;\n    procedure fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix; AAcceptedDeviation: single; AData: pointer = nil); overload;\n    function CreateCursor(AAcceptedDeviation: single = DefaultDeviation): TBGRAPathCursor;\n    procedure Fit(ARect: TRectF; AAcceptedDeviation: single = DefaultDeviation);\n    procedure FitInto(ADest: TBGRAPath; ARect: TRectF; AAcceptedDeviation: single = DefaultDeviation);\n  end;\n\n{----------------------- Spline ------------------}\n\nfunction SplineVertexToSide(y0, y1, y2, y3: single; t: single): single;\nfunction ComputeBezierCurve(const curve: TCubicBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nfunction ComputeBezierCurve(const curve: TQuadraticBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nfunction ComputeBezierSpline(const spline: array of TCubicBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nfunction ComputeBezierSpline(const spline: array of TQuadraticBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nfunction ComputeClosedSpline(const APoints: array of TPointF; AStyle: TSplineStyle; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nfunction ComputeClosedSpline(const APoints: array of TPointF; AStart, ACount: integer; AStyle: TSplineStyle; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nfunction ComputeOpenedSpline(const APoints: array of TPointF; AStyle: TSplineStyle; AEndCoeff: single = 0.25; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nfunction ComputeOpenedSpline(const APoints: array of TPointF; AStart, ACount: integer; AStyle: TSplineStyle; AEndCoeff: single = 0.25; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nfunction ClosedSplineStartPoint(const points: array of TPointF; Style: TSplineStyle): TPointF;\nfunction ComputeEasyBezier(const curve: TEasyBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\n\n{ Compute points to draw an antialiased ellipse }\nfunction ComputeEllipse(x,y,rx,ry: single; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeEllipse(AOrigin, AXAxis, AYAxis: TPointF; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeArc65536(x, y, rx, ry: single; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeArc65536(AOrigin, AXAxis, AYAxis: TPointF; start65536,end65536: word; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeArcRad(x, y, rx, ry: single; startRadCCW,endRadCCW: single; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeArcRad(AOrigin, AXAxis, AYAxis: TPointF; startRadCCW,endRadCCW: single; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeArc(const arc: TArcDef; quality: single = 1): ArrayOfTPointF;\nfunction ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; quality: single = 1): ArrayOfTPointF; overload;\nfunction ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; options: TRoundRectangleOptions; quality: single = 1): ArrayOfTPointF; overload;\n\nfunction Html5ArcTo(const p0, p1, p2: TPointF; radius: single): TArcDef;\nfunction SvgArcTo(const p0: TPointF; rx, ry, xAngleRadCW: single; largeArc,\n  anticlockwise: boolean; const p1: TPointF): TArcDef;\nfunction ArcStartPoint(const arc: TArcDef): TPointF;\nfunction ArcEndPoint(const arc: TArcDef): TPointF;\nfunction IsLargeArc(const arc: TArcDef): boolean;\n\nimplementation\n\nuses Math, BGRAClasses, BGRAResample, SysUtils;\n\ntype\n  TStrokeData = record\n    Bitmap: TBGRACustomBitmap;\n    Texture: IBGRAScanner;\n    Color: TBGRAPixel;\n    Width: Single;\n  end;\n\n  PPathElementHeader = ^TPathElementHeader;\n  TPathElementHeader = record\n    ElementType: TBGRAPathElementType;\n    PreviousElementType: TBGRAPathElementType;\n  end;\n  PMoveToElement = ^TMoveToElement;\n  TMoveToElement = record\n    StartCoordinate: TPointF;\n    LoopDataPos: PtrInt; //if the path is closed\n  end;\n  PClosePathElement = ^TClosePathElement;\n  TClosePathElement = type TMoveToElement;\n  PQuadraticBezierToElement = ^TQuadraticBezierToElement;\n  TQuadraticBezierToElement = record\n    ControlPoint, Destination: TPointF;\n  end;\n  PCubicBezierToElement = ^TCubicBezierToElement;\n  TCubicBezierToElement = record\n    ControlPoint1, ControlPoint2, Destination: TPointF;\n  end;\n  PArcElement = ^TArcElement;\n  TArcElement = TArcDef;\n\n  PSplineElement = ^TSplineElement;\n  TSplineElement = record\n    SplineStyle: TSplineStyle;\n    NbControlPoints: integer;\n  end;\n\nconst\n  PathElementSize : array[TBGRAPathElementType] of PtrInt =\n  (0, Sizeof(TMoveToElement), Sizeof(TClosePathElement), sizeof(TPointF),\n   sizeof(TQuadraticBezierToElement), sizeof(TCubicBezierToElement),\n   sizeof(TArcElement), sizeof(TSplineElement)+sizeof(integer),\n   sizeof(TSplineElement)+sizeof(integer));\n\nfunction SplineVertexToSide(y0, y1, y2, y3: single; t: single): single;\nvar\n  a0, a1, a2, a3: single;\n  t2: single;\nbegin\n  t2     := t * t;\n  a0     := y3 - y2 - y0 + y1;\n  a1     := y0 - y1 - a0;\n  a2     := y2 - y0;\n  a3     := y1;\n  Result := a0 * t * t2 + a1 * t2 + a2 * t + a3;\nend;\n\nfunction ComputeCurvePartPrecision(pt1, pt2, pt3, pt4: TPointF; AAcceptedDeviation: single = DefaultDeviation): integer;\nvar\n  len: single;\nbegin\n  len    := sqr(pt1.x - pt2.x) + sqr(pt1.y - pt2.y);\n  len    := max(len, sqr(pt3.x - pt2.x) + sqr(pt3.y - pt2.y));\n  len    := max(len, sqr(pt3.x - pt4.x) + sqr(pt3.y - pt4.y));\n  Result := round(sqrt(sqrt(len)/AAcceptedDeviation) * 0.9);\n  if Result<=0 then Result:=1;\nend;\n\nfunction ComputeBezierCurve(const curve: TCubicBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nbegin\n  result := curve.ToPoints(AAcceptedDeviation);\nend;\n\nfunction ComputeBezierCurve(const curve: TQuadraticBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF; overload;\nbegin\n  result := curve.ToPoints(AAcceptedDeviation);\nend;\n\nfunction ComputeBezierSpline(const spline: array of TCubicBezierCurve; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  curves: array of array of TPointF;\n  nb: integer;\n  lastPt: TPointF;\n  i: Integer;\n  j: Integer;\n\n  procedure AddPt(pt: TPointF); inline;\n  begin\n    result[nb]:= pt;\n    inc(nb);\n    lastPt := pt;\n  end;\n\n  function EqLast(pt: TPointF): boolean;\n  begin\n    result := (pt.x = lastPt.x) and (pt.y = lastPt.y);\n  end;\n\nbegin\n  if length(spline)= 0 then\n  begin\n    setlength(result,0);\n    exit;\n  end;\n  setlength(curves, length(spline));\n  for i := 0 to high(spline) do\n    curves[i] := ComputeBezierCurve(spline[i],AAcceptedDeviation);\n  nb := length(curves[0]);\n  lastPt := curves[0][high(curves[0])];\n  for i := 1 to high(curves) do\n  begin\n    inc(nb,length(curves[i]));\n    if EqLast(curves[i][0]) then dec(nb);\n    lastPt := curves[i][high(curves[i])];\n  end;\n  setlength(result,nb);\n  nb := 0;\n  for j := 0 to high(curves[0]) do\n    AddPt(curves[0][j]);\n  for i := 1 to high(curves) do\n  begin\n    if not EqLast(curves[i][0]) then AddPt(curves[i][0]);\n    for j := 1 to high(curves[i]) do\n      AddPt(curves[i][j]);\n  end;\nend;\n\nfunction ComputeBezierSpline(const spline: array of TQuadraticBezierCurve;\n  AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  curves: array of array of TPointF;\n  nb: integer;\n  lastPt: TPointF;\n  i: Integer;\n  j: Integer;\n\n  procedure AddPt(pt: TPointF); inline;\n  begin\n    result[nb]:= pt;\n    inc(nb);\n    lastPt := pt;\n  end;\n\n  function EqLast(pt: TPointF): boolean;\n  begin\n    result := (pt.x = lastPt.x) and (pt.y = lastPt.y);\n  end;\n\nbegin\n  if length(spline)= 0 then\n  begin\n    setlength(result,0);\n    exit;\n  end;\n  setlength(curves, length(spline));\n  for i := 0 to high(spline) do\n    curves[i] := ComputeBezierCurve(spline[i],AAcceptedDeviation);\n  nb := length(curves[0]);\n  lastPt := curves[0][high(curves[0])];\n  for i := 1 to high(curves) do\n  begin\n    inc(nb,length(curves[i]));\n    if EqLast(curves[i][0]) then dec(nb);\n    lastPt := curves[i][high(curves[i])];\n  end;\n  setlength(result,nb);\n  nb := 0;\n  for j := 0 to high(curves[0]) do\n    AddPt(curves[0][j]);\n  for i := 1 to high(curves) do\n  begin\n    if not EqLast(curves[i][0]) then AddPt(curves[i][0]);\n    for j := 1 to high(curves[i]) do\n      AddPt(curves[i][j]);\n  end;\nend;\n\nfunction InternalComputeClosedSpline(const APoints: array of TPointF; AStart, ACount: integer; AStyle: TSplineStyle; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  i, j, nb, idx, pre: integer;\n  ptPrev, ptPrev2, ptNext, ptNext2: TPointF;\n  t: single;\n  kernel: TWideKernelFilter;\n\nbegin\n  if AStyle = ssEasyBezier then\n  begin\n    result := ComputeEasyBezier(EasyBezierCurve(APoints, AStart, ACount, true, cmCurve));\n    exit;\n  end;\n\n  if ACount <= 2 then\n  begin\n    setlength(result, ACount);\n    for i := 0 to high(result) do\n      result[i] := APoints[AStart + i];\n    exit;\n  end;\n\n  nb := 1;\n  for i := 0 to ACount-1 do\n  begin\n    ptPrev2 := APoints[(i + ACount - 1) mod ACount + AStart];\n    ptPrev  := APoints[i + AStart];\n    ptNext  := APoints[(i + 1) mod ACount + AStart];\n    ptNext2 := APoints[(i + 2) mod ACount + AStart];\n    inc(nb, ComputeCurvePartPrecision(ptPrev2, ptPrev, ptNext, ptNext2, AAcceptedDeviation) );\n  end;\n\n  kernel := CreateInterpolator(AStyle);\n  setlength(Result, nb);\n  idx := 0;\n  for i := 0 to ACount-1 do\n  begin\n    ptPrev2 := APoints[(i + ACount - 1) mod ACount + AStart];\n    ptPrev  := APoints[i+ AStart];\n    ptNext  := APoints[(i + 1) mod ACount + AStart];\n    ptNext2 := APoints[(i + 2) mod ACount + AStart];\n    pre     := ComputeCurvePartPrecision(ptPrev2, ptPrev, ptNext, ptNext2, AAcceptedDeviation);\n    if i=0 then\n      j := 0\n    else\n      j := 1;\n    while j <= pre do\n    begin\n      t := j/pre;\n      result[idx] := ptPrev2*kernel.Interpolation(t+1) + ptPrev*kernel.Interpolation(t) +\n                     ptNext*kernel.Interpolation(t-1)  + ptNext2*kernel.Interpolation(t-2);\n      Inc(idx);\n      inc(j);\n    end;\n  end;\n  kernel.Free;\nend;\n\nfunction ComputeClosedSpline(const APoints: array of TPointF; AStyle: TSplineStyle; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  nbParts, partIndex, start, i: integer;\n  parts: array of array of TPointF;\nbegin\n  nbParts := 1;\n  for i := 0 to high(APoints) do\n    if isEmptyPointF(APoints[i]) then inc(nbParts);\n  if nbParts = 1 then\n    exit(InternalComputeClosedSpline(APoints, 0, length(APoints), AStyle, AAcceptedDeviation));\n  setlength(parts, nbParts);\n  partIndex := 0;\n  start := 0;\n  for i := 0 to high(APoints) do\n    if isEmptyPointF(APoints[i]) then\n    begin\n      parts[partIndex] := InternalComputeClosedSpline(APoints, start, i-start, AStyle, AAcceptedDeviation);\n      inc(partIndex);\n      start := i+1;\n    end;\n  parts[partIndex] := InternalComputeClosedSpline(APoints, start, length(APoints)-start, AStyle, AAcceptedDeviation);\n  result := ConcatPointsF(parts, true);\nend;\n\nfunction InternalComputeOpenedSpline(const APoints: array of TPointF; AStart, ACount: integer; AStyle: TSplineStyle; AEndCoeff: single; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  i, j, nb, idx, pre: integer;\n  ptPrev, ptPrev2, ptNext, ptNext2: TPointF;\n  t: single;\n  kernel: TWideKernelFilter;\nbegin\n  if AStyle = ssEasyBezier then\n  begin\n    result := ComputeEasyBezier(EasyBezierCurve(APoints, AStart, ACount, false, cmCurve));\n    exit;\n  end;\n\n  if ACount <= 2 then\n  begin\n    setlength(result, ACount);\n    for i := 0 to high(result) do\n      result[i] := APoints[AStart + i];\n    exit;\n  end;\n  if AStyle in[ssInsideWithEnds,ssCrossingWithEnds] then AEndCoeff := 0;\n  if AEndCoeff < -0.3 then AEndCoeff := -0.3;\n\n  nb := 1;\n  for i := 0 to ACount - 2 do\n  begin\n    ptPrev  := APoints[AStart + i];\n    ptNext  := APoints[AStart + i + 1];\n    if i=0 then\n      ptPrev2 := (ptPrev+(ptNext+APoints[AStart + i + 2])*AEndCoeff)*(1/(1+2*AEndCoeff))\n    else\n      ptPrev2 := APoints[AStart + i - 1];\n    if i = ACount - 2 then\n      ptNext2 := (ptNext+(ptPrev+APoints[AStart + i - 1])*AEndCoeff)*(1/(1+2*AEndCoeff))\n    else\n      ptNext2 := APoints[AStart + i + 2];\n    inc(nb, ComputeCurvePartPrecision(ptPrev2, ptPrev, ptNext, ptNext2, AAcceptedDeviation) );\n  end;\n\n  kernel := CreateInterpolator(AStyle);\n  if AStyle in[ssInsideWithEnds,ssCrossingWithEnds] then\n  begin\n    inc(nb,2);\n    setlength(Result, nb);\n    result[0] := APoints[AStart];\n    idx := 1;\n  end else\n  begin\n    idx := 0;\n    setlength(Result, nb);\n  end;\n  for i := 0 to ACount - 2 do\n  begin\n    ptPrev  := APoints[AStart + i];\n    ptNext  := APoints[AStart + i + 1];\n    if i=0 then\n      ptPrev2 := (ptPrev+(ptNext+APoints[i + 2 + AStart])*AEndCoeff)*(1/(1+2*AEndCoeff))\n    else\n      ptPrev2 := APoints[AStart + i - 1];\n    if i = ACount - 2 then\n      ptNext2 := (ptNext+(ptPrev+APoints[i - 1 + AStart])*AEndCoeff)*(1/(1+2*AEndCoeff))\n    else\n      ptNext2 := APoints[AStart + i + 2];\n    pre     := ComputeCurvePartPrecision(ptPrev2, ptPrev, ptNext, ptNext2, AAcceptedDeviation);\n    if i=0 then\n    begin\n      j := 0;\n    end else j := 1;\n    while j <= pre do\n    begin\n      t := j/pre;\n      result[idx] := ptPrev2*kernel.Interpolation(t+1) + ptPrev*kernel.Interpolation(t) +\n                     ptNext*kernel.Interpolation(t-1)  + ptNext2*kernel.Interpolation(t-2);\n      Inc(idx);\n      inc(j);\n    end;\n  end;\n  kernel.Free;\n  if AStyle in[ssInsideWithEnds,ssCrossingWithEnds] then\n    result[idx] := APoints[AStart + ACount - 1];\nend;\n\nfunction ComputeClosedSpline(const APoints: array of TPointF; AStart,\n  ACount: integer; AStyle: TSplineStyle; AAcceptedDeviation: single): ArrayOfTPointF;\nvar\n  i: Integer;\nbegin\n  if (AStart < 0) or (AStart + ACount > length(APoints)) then\n    raise exception.Create('Index out of bounds');\n  for i := 0 to ACount-1 do\n    if IsEmptyPointF(APoints[AStart + i]) then\n      raise exception.Create('Unexpected empty point');\n  result := InternalComputeClosedSpline(APoints, AStart, ACount, AStyle, AAcceptedDeviation);\nend;\n\nfunction ComputeOpenedSpline(const APoints: array of TPointF; AStyle: TSplineStyle; AEndCoeff: single; AAcceptedDeviation: single = DefaultDeviation): ArrayOfTPointF;\nvar\n  nbParts, partIndex, start, i: integer;\n  parts: array of array of TPointF;\nbegin\n  nbParts := 1;\n  for i := 0 to high(APoints) do\n    if isEmptyPointF(APoints[i]) then inc(nbParts);\n  if nbParts = 1 then\n    exit(InternalComputeOpenedSpline(APoints, 0, length(APoints), AStyle, AEndCoeff, AAcceptedDeviation));\n  setlength(parts, nbParts);\n  partIndex := 0;\n  start := 0;\n  for i := 0 to high(APoints) do\n    if isEmptyPointF(APoints[i]) then\n    begin\n      parts[partIndex] := InternalComputeOpenedSpline(APoints, start, i-start, AStyle, AEndCoeff, AAcceptedDeviation);\n      inc(partIndex);\n      start := i+1;\n    end;\n  parts[partIndex] := InternalComputeOpenedSpline(APoints, start, length(APoints)-start, AStyle, AEndCoeff, AAcceptedDeviation);\n  result := ConcatPointsF(parts, true);\nend;\n\nfunction ComputeOpenedSpline(const APoints: array of TPointF; AStart,\n  ACount: integer; AStyle: TSplineStyle; AEndCoeff: single;\n  AAcceptedDeviation: single): ArrayOfTPointF;\nvar\n  i: Integer;\nbegin\n  if (AStart < 0) or (AStart + ACount > length(APoints)) then\n    raise exception.Create('Index out of bounds');\n  for i := 0 to ACount-1 do\n    if IsEmptyPointF(APoints[AStart + i]) then\n      raise exception.Create('Unexpected empty point');\n  result := InternalComputeOpenedSpline(APoints, AStart, ACount, AStyle, AEndCoeff, AAcceptedDeviation);\nend;\n\nfunction ClosedSplineStartPoint(const points: array of TPointF;\n  Style: TSplineStyle): TPointF;\nvar\n  kernel: TWideKernelFilter;\n  ptPrev2: TPointF;\n  ptPrev: TPointF;\n  ptNext: TPointF;\n  ptNext2: TPointF;\nbegin\n  if Style = ssEasyBezier then\n  begin\n    result := EasyBezierCurve(points, true, cmCurve).CurveStartPoint;\n  end else\n  begin\n    if length(points) = 0 then\n      result := EmptyPointF\n    else\n    if length(points)<=2 then\n      result := points[0]\n    else\n    begin\n      kernel := CreateInterpolator(style);\n      ptPrev2 := points[high(points)];\n      ptPrev  := points[0];\n      ptNext  := points[1];\n      ptNext2 := points[2];\n      result := ptPrev2*kernel.Interpolation(1) + ptPrev*kernel.Interpolation(0) +\n                ptNext*kernel.Interpolation(-1)  + ptNext2*kernel.Interpolation(-2);\n      kernel.free;\n    end;\n  end;\nend;\n\nfunction ComputeEasyBezier(const curve: TEasyBezierCurve;\n  AAcceptedDeviation: single): ArrayOfTPointF;\nvar\n  path: TBGRAPath;\nbegin\n  path := TBGRAPath.Create;\n  curve.CopyToPath(path);\n  result := path.ToPoints(AAcceptedDeviation);\n  path.Free;\nend;\n\nfunction ComputeArc65536(x, y, rx, ry: single; start65536,end65536: word; quality: single): ArrayOfTPointF;\nvar i,nb: integer;\n    arclen: integer;\n    pos: word;\nbegin\n  if end65536 > start65536 then\n    arclen := end65536-start65536 else\n    arclen := 65536-(start65536-end65536);\n\n  if quality < 0 then quality := 0;\n\n  nb := round(((rx+ry)*2*quality+8)*arclen/65536) and not 3;\n  if arclen <= 16384 then\n  begin\n    if nb < 2 then nb := 2;\n  end else\n  if arclen <= 32768 then\n  begin\n    if nb < 3 then nb := 3;\n  end else\n  if arclen <= 32768+16384 then\n  begin\n    if nb < 4 then nb := 4;\n  end else\n    if nb < 5 then nb := 5;\n\n  if nb > arclen+1 then nb := arclen+1;\n\n  setlength(result,nb);\n  for i := 0 to nb-1 do\n  begin\n    {$PUSH}{$R-}\n    pos := start65536+int64(i)*arclen div (int64(nb)-1);\n    {$POP}\n    result[i] := PointF(x+rx*(Cos65536(pos)-32768)/32768,\n                        y-ry*(Sin65536(pos)-32768)/32768);\n  end;\nend;\n\nfunction ComputeEllipse(x, y, rx, ry: single; quality: single): ArrayOfTPointF;\nbegin\n  result := ComputeArc65536(x,y,rx,ry,0,0,quality);\nend;\n\nfunction ComputeEllipse(AOrigin, AXAxis, AYAxis: TPointF; quality: single): ArrayOfTPointF;\nbegin\n  result := ComputeArcRad(AOrigin, AXAxis, AYAxis, 0,0, quality);\nend;\n\nfunction ComputeArc65536(AOrigin, AXAxis, AYAxis: TPointF; start65536,\n  end65536: word; quality: single): ArrayOfTPointF;\nbegin\n  //go back temporarily to radians\n  result := ComputeArcRad(AOrigin,AXAxis,AYAxis, start65536*Pi/326768, end65536*Pi/326768, quality);\nend;\n\nfunction ComputeArcRad(x, y, rx, ry: single; startRadCCW, endRadCCW: single;\n  quality: single): ArrayOfTPointF;\nvar\n  start65536, end65536: Int64;\nbegin\n  start65536 := round(startRadCCW*32768/Pi);\n  end65536 := round(endRadCCW*32768/Pi);\n  //if arc is very small but non zero, it is not a circle\n  if (start65536 = end65536) and (startRadCCW <> endRadCCW) then\n    setlength(result,2) else\n    result := ComputeArc65536(x,y,rx,ry,start65536 and $ffff,end65536 and $ffff,quality);\n  result[0] := PointF(x+cos(startRadCCW)*rx,y-sin(startRadCCW)*ry);\n  result[high(result)] := PointF(x+cos(endRadCCW)*rx,y-sin(endRadCCW)*ry);\nend;\n\nfunction ComputeArcRad(AOrigin, AXAxis, AYAxis: TPointF; startRadCCW,endRadCCW: single; quality: single): ArrayOfTPointF;\nvar\n  u, v: TPointF;\n  lenU, lenV: Single;\n  m: TAffineMatrix;\n  i: Integer;\nbegin\n  u := AXAxis-AOrigin;\n  lenU := VectLen(u);\n  v := AYAxis-AOrigin;\n  lenV := VectLen(v);\n  if (lenU = 0) and (lenV = 0) then exit(PointsF([AOrigin]));\n\n  result := ComputeArcRad(0, 0, lenU, lenV, startRadCCW, endRadCCW, quality);\n\n  if lenU <> 0 then u.Scale(1/lenU);\n  if lenV <> 0 then v.Scale(1/lenV);\n  m := AffineMatrix(u, v, AOrigin);\n  for i := 0 to high(result) do\n    result[i] := m*result[i];\nend;\n\nfunction ComputeArc(const arc: TArcDef; quality: single): ArrayOfTPointF;\nvar startAngle,endAngle: single;\n    i,n: integer;\n    temp: TPointF;\n    m: TAffineMatrix;\nbegin\n  startAngle := -arc.startAngleRadCW;\n  endAngle:= -arc.endAngleRadCW;\n  if not arc.anticlockwise then\n  begin\n    result := ComputeArcRad(arc.center.x,arc.center.y,arc.radius.x,arc.radius.y,endAngle,startAngle,quality);\n    n := length(result);\n    if n>1 then\n      for i := 0 to (n-2) div 2 do\n      begin\n        temp := result[i];\n        result[i] := result[n-1-i];\n        result[n-1-i] := temp;\n      end;\n  end else\n    result := ComputeArcRad(arc.center.x,arc.center.y,arc.radius.x,arc.radius.y,startAngle,endAngle,quality);\n  if arc.xAngleRadCW <> 0 then\n  begin\n    m := AffineMatrixTranslation(arc.center.x,arc.center.y)*AffineMatrixRotationRad(-arc.xAngleRadCW)*AffineMatrixTranslation(-arc.center.x,-arc.center.y);\n    for i := 0 to high(result) do\n      result[i] := m*result[i];\n  end;\nend;\n\nfunction ComputeRoundRect(x1,y1,x2,y2,rx,ry: single; quality: single): ArrayOfTPointF;\nbegin\n  result := ComputeRoundRect(x1,y1,x2,y2,rx,ry,[],quality);\nend;\n\nfunction ComputeRoundRect(x1, y1, x2, y2, rx, ry: single;\n  options: TRoundRectangleOptions; quality: single): ArrayOfTPointF;\nvar q0,q1,q2,q3,q4: array of TPointF;\n  temp: Single;\nbegin\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  rx := abs(rx);\n  ry := abs(ry);\n  if 2*rx > x2-x1 then\n    rx := (x2-x1)/2;\n  if 2*ry > y2-y1 then\n    ry := (y2-y1)/2;\n\n  q0 := PointsF([PointF(x2,(y1+y2)/2)]);\n\n  if rrTopRightBevel in options then\n    q1 := PointsF([PointF(x2,y1+ry),PointF(x2-rx,y1)]) else\n  if rrTopRightSquare in options then\n    q1 := PointsF([PointF(x2,y1)])\n  else\n    q1 := ComputeArc65536(x2-rx,y1+ry,rx,ry,0,16384,quality);\n\n  if rrTopLeftBevel in options then\n    q2 := PointsF([PointF(x1+rx,y1),PointF(x1,y1+ry)]) else\n  if rrTopLeftSquare in options then\n    q2 := PointsF([PointF(x1,y1)])\n  else\n    q2 := ComputeArc65536(x1+rx,y1+ry,rx,ry,16384,32768,quality);\n\n  if rrBottomLeftBevel in options then\n    q3 := PointsF([PointF(x1,y2-ry),PointF(x1+rx,y2)]) else\n  if rrBottomLeftSquare in options then\n    q3 := PointsF([PointF(x1,y2)])\n  else\n    q3 := ComputeArc65536(x1+rx,y2-ry,rx,ry,32768,32768+16384,quality);\n\n  if rrBottomRightBevel in options then\n    q4 := PointsF([PointF(x2-rx,y2),PointF(x2,y2-ry)]) else\n  if rrBottomRightSquare in options then\n    q4 := PointsF([PointF(x2,y2)])\n  else\n    q4 := ComputeArc65536(x2-rx,y2-ry,rx,ry,32768+16384,0,quality);\n\n  result := ConcatPointsF([q0,q1,q2,q3,q4]);\nend;\n\nfunction Html5ArcTo(const p0, p1, p2: TPointF; radius: single\n  ): TArcDef;\nvar p3,p4,an,bn,cn,c: TPointF;\n    dir, a2, b2, c2, cosx, sinx, d: single;\n    anticlockwise: boolean;\nbegin\n  result.center := p1;\n  result.radius := PointF(0,0);\n  result.xAngleRadCW:= 0;\n  result.startAngleRadCW := 0;\n  result.endAngleRadCW:= 0;\n  result.anticlockwise:= false;\n\n  radius := abs(radius);\n  if (p0 = p1) or (p1 = p2) or (radius = 0) then exit;\n\n  dir := (p2.x-p1.x)*(p0.y-p1.y) + (p2.y-p1.y)*(p1.x-p0.x);\n  if dir = 0 then exit;\n\n  a2 := (p0.x-p1.x)*(p0.x-p1.x) + (p0.y-p1.y)*(p0.y-p1.y);\n  b2 := (p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y);\n  c2 := (p0.x-p2.x)*(p0.x-p2.x) + (p0.y-p2.y)*(p0.y-p2.y);\n  cosx := (a2+b2-c2)/(2*sqrt(a2*b2));\n\n  sinx := sqrt(1 - cosx*cosx);\n  if (sinx = 0) or (cosx = 1) then exit;\n  d := radius / ((1 - cosx) / sinx);\n\n  an := (p1-p0)*(1/sqrt(a2));\n  bn := (p1-p2)*(1/sqrt(b2));\n  p3 := p1 - an*d;\n  p4 := p1 - bn*d;\n  anticlockwise := (dir < 0);\n\n  cn := PointF(an.y,-an.x)*radius;\n  if not anticlockwise then cn := -cn;\n  c := p3 + cn;\n\n  result.center := c;\n  result.radius:= PointF(radius,radius);\n  result.startAngleRadCW := arctan2((p3.y-c.y), (p3.x-c.x));\n  result.endAngleRadCW := arctan2((p4.y-c.y), (p4.x-c.x));\n  result.anticlockwise:= anticlockwise;\nend;\n\nfunction SvgArcTo(const p0: TPointF; rx, ry, xAngleRadCW: single; largeArc,\n  anticlockwise: boolean; const p1: TPointF): TArcDef;\nvar\n    p0p,cp: TPointF;\n    cross1,cross2,lambda: single;\nbegin\n  if (rx=0) or (ry=0) or (p0 = p1) then\n  begin\n    result.radius := PointF(0,0);\n    result.xAngleRadCW:= 0;\n    result.anticlockwise := false;\n    result.endAngleRadCW := 0;\n    result.startAngleRadCW:= 0;\n    result.center := p1;\n    exit;\n  end;\n  result.xAngleRadCW := xAngleRadCW;\n  result.anticlockwise := anticlockwise;\n  p0p := AffineMatrixRotationRad(xAngleRadCW)*( (p0-p1)*0.5 );\n\n  //ensure radius is big enough\n  lambda := sqr(p0p.x/rx) + sqr(p0p.y/ry);\n  if lambda > 1 then\n  begin\n    lambda := sqrt(lambda);\n    rx := rx * lambda;\n    ry := ry * lambda;\n  end;\n  result.radius := PointF(rx,ry);\n\n  //compute center\n  cross2 := sqr(rx*p0p.y) + sqr(ry*p0p.x);\n  cross1 := sqr(rx*ry);\n  if cross1 <= cross2 then\n    cp := PointF(0,0)\n  else\n    cp := sqrt((cross1-cross2)/cross2)*\n       PointF(rx*p0p.y/ry, -ry*p0p.x/rx);\n  if largeArc <> anticlockwise then cp := -cp;\n\n  result.center := AffineMatrixRotationRad(-xAngleRadCW)*cp +\n                  (p0+p1)*0.5;\n  result.startAngleRadCW := arctan2((p0p.y-cp.y)/ry,(p0p.x-cp.x)/rx);\n  result.endAngleRadCW := arctan2((-p0p.y-cp.y)/ry,(-p0p.x-cp.x)/rx);\nend;\n\nfunction ArcStartPoint(const arc: TArcDef): TPointF;\nbegin\n  result := AffineMatrixRotationRad(-arc.xAngleRadCW)*PointF(cos(arc.startAngleRadCW)*arc.radius.x,\n                                                       sin(arc.startAngleRadCW)*arc.radius.y) + arc.center;\nend;\n\nfunction ArcEndPoint(const arc: TArcDef): TPointF;\nbegin\n  result := AffineMatrixRotationRad(-arc.xAngleRadCW)*PointF(cos(arc.endAngleRadCW)*arc.radius.x,\n                                                       sin(arc.endAngleRadCW)*arc.radius.y) + arc.center;\nend;\n\nfunction IsLargeArc(const arc: TArcDef): boolean;\nvar diff,a1,a2: single;\nbegin\n  a1 := arc.startAngleRadCW - floor(arc.startAngleRadCW/(2*Pi))*(2*Pi);\n  a2 := arc.endAngleRadCW - floor(arc.endAngleRadCW/(2*Pi))*(2*Pi);\n  if not arc.anticlockwise then\n    diff := a2 - a1\n  else\n    diff := a1 - a2;\n  result := (diff < 0) or (diff >= Pi);\nend;\n\n{ TBGRAPathCursor }\n\nfunction TBGRAPathCursor.GetCurrentCoord: TPointF;\nbegin\n  case FCurrentElementType of\n    peNone: result := EmptyPointF;\n    peMoveTo,peLineTo,peCloseSubPath:\n      if FCurrentElementLength <= 0 then\n        result := FCurrentElementStartCoord\n      else\n        result := FCurrentElementStartCoord + (FCurrentElementEndCoord-FCurrentElementStartCoord)*(FCurrentElementArcPos/FCurrentElementLength);\n    peCubicBezierTo,peQuadraticBezierTo,peArc,peOpenedSpline,peClosedSpline:\n      begin\n        NeedPolygonalApprox;\n        if FCurrentSegment >= high(FCurrentElementPoints) then\n          result := FCurrentElementEndCoord\n        else\n          result := FCurrentElementPoints[FCurrentSegment]+\n          (FCurrentElementPoints[FCurrentSegment+1]-\n           FCurrentElementPoints[FCurrentSegment])*FCurrentSegmentPos;\n      end;\n    else\n      raise Exception.Create('Unknown element type');\n  end;\nend;\n\nfunction TBGRAPathCursor.GetPath: TBGRAPath;\nbegin\n  if not Assigned(FPath) then\n    raise exception.Create('Path does not exist');\n  result := FPath;\nend;\n\nprocedure TBGRAPathCursor.MoveToEndOfElement;\nbegin\n  FCurrentElementArcPos := FCurrentElementLength;\n  if not NeedPolygonalApprox then exit;\n  if length(FCurrentElementPoints) > 1 then\n  begin\n    FCurrentSegment := high(FCurrentElementPoints)-1;\n    FCurrentSegmentPos := 1;\n  end else\n  begin\n    FCurrentSegment := high(FCurrentElementPoints);\n    FCurrentSegmentPos := 0;\n  end;\nend;\n\nprocedure TBGRAPathCursor.MoveForwardInElement(ADistance: single);\nvar segLen,rightSpace,remaining: single;\nbegin\n  if not NeedPolygonalApprox then exit;\n  ADistance := ADistance * FCurrentElementArcPosScale;\n  remaining := ADistance;\n  while remaining > 0 do\n  begin\n    if FCurrentSegment < high(FCurrentElementPoints) then\n      segLen := VectLen(FCurrentElementPoints[FCurrentSegment+1]-FCurrentElementPoints[FCurrentSegment])\n    else\n      segLen := 0;\n    rightSpace := segLen*(1-FCurrentSegmentPos);\n    if (segLen > 0) and (remaining <= rightSpace) then\n    begin\n      IncF(FCurrentSegmentPos, remaining/segLen);\n      exit;\n    end else\n    begin\n      DecF(remaining, rightSpace);\n      if FCurrentSegment < high(FCurrentElementPoints)-1 then\n      begin\n        inc(FCurrentSegment);\n        FCurrentSegmentPos := 0;\n      end else\n      begin\n        FCurrentSegmentPos := 1;\n        exit;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAPathCursor.MoveBackwardInElement(ADistance: single);\nvar\n  segLen,leftSpace,remaining: Single;\nbegin\n  if not NeedPolygonalApprox then exit;\n  ADistance := ADistance * FCurrentElementArcPosScale;\n  remaining := ADistance;\n  while remaining > 0 do\n  begin\n    if FCurrentSegment < high(FCurrentElementPoints) then\n      segLen := VectLen(FCurrentElementPoints[FCurrentSegment+1]-FCurrentElementPoints[FCurrentSegment])\n    else\n      segLen := 0;\n    leftSpace := segLen*FCurrentSegmentPos;\n    if (segLen > 0) and (remaining <= leftSpace) then\n    begin\n      DecF(FCurrentSegmentPos, remaining/segLen);\n      exit;\n    end else\n    begin\n      DecF(remaining, leftSpace);\n      if FCurrentSegment > 0 then\n      begin\n        dec(FCurrentSegment);\n        FCurrentSegmentPos := 1;\n      end else\n      begin\n        FCurrentSegmentPos := 0;\n        exit;\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRAPathCursor.NeedPolygonalApprox: boolean;\nbegin\n  if not (FCurrentElementType in[peQuadraticBezierTo,peCubicBezierTo,peArc,\n  peOpenedSpline,peClosedSpline])\n  then\n  begin\n    result := false;\n    exit;\n  end;\n  result := true;\n  if FCurrentElementPoints = nil then\n  begin\n    FCurrentElementPoints := Path.GetPolygonalApprox(FDataPos, FAcceptedDeviation, True);\n    if FCurrentElementType = peQuadraticBezierTo then\n    begin\n      if FCurrentElementLength <> 0 then\n        FCurrentElementArcPosScale := PolylineLen(FCurrentElementPoints)/FCurrentElementLength;\n    end;\n  end;\nend;\n\nfunction TBGRAPathCursor.GetArcPos: single;\nvar pos: PtrInt;\nbegin\n  if FArcPos = EmptySingle then\n  begin\n    FArcPos := FCurrentElementArcPos;\n    pos := FDataPos;\n    while Path.GoToPreviousElement(pos) do\n      IncF(FArcPos, Path.GetElementLength(pos, FAcceptedDeviation));\n  end;\n  result := FArcPos;\nend;\n\nfunction TBGRAPathCursor.GetCurrentTangent: TPointF;\nvar idxStart,idxEnd: integer;\n  seg: TPointF;\nbegin\n  while FCurrentElementLength <= 0 do\n  begin\n    if not GoToNextElement(False) then\n    begin\n      result := EmptyPointF;\n      exit;\n    end;\n  end;\n  case FCurrentElementType of\n    peMoveTo,peLineTo,peCloseSubPath:\n      result := (FCurrentElementEndCoord-FCurrentElementStartCoord)*(1/FCurrentElementLength);\n    peCubicBezierTo,peQuadraticBezierTo,peArc,peOpenedSpline,peClosedSpline:\n      begin\n        NeedPolygonalApprox;\n        idxStart := FCurrentSegment;\n        if idxStart >= high(FCurrentElementPoints) then\n          idxStart:= high(FCurrentElementPoints)-1;\n        idxEnd := idxStart+1;\n        if idxStart < 0 then\n        begin\n          result := EmptyPointF;\n          exit;\n        end;\n        seg := FCurrentElementPoints[idxEnd] - FCurrentElementPoints[idxStart];\n        while (seg.x = 0) and (seg.y = 0) and (idxEnd < high(FCurrentElementPoints)) do\n        begin\n          inc(idxEnd);\n          seg := FCurrentElementPoints[idxEnd] - FCurrentElementPoints[idxStart];\n        end;\n        while (seg.x = 0) and (seg.y = 0) and (idxStart > 0) do\n        begin\n          dec(idxStart);\n          seg := FCurrentElementPoints[idxEnd] - FCurrentElementPoints[idxStart];\n        end;\n        if (seg.x = 0) and (seg.y = 0) then\n          result := EmptyPointF\n        else\n          result := seg*(1/VectLen(seg));\n      end;\n    else result := EmptyPointF;\n  end;\nend;\n\nprocedure TBGRAPathCursor.SetArcPos(AValue: single);\nvar oldLoopClosedShapes,oldLoopPath: boolean;\nbegin\n  if GetArcPos=AValue then Exit;\n  if (AValue > PathLength) and (PathLength <> 0) then\n    AValue := AValue - trunc(AValue/PathLength)*PathLength\n  else if (AValue < 0) then\n    AValue := AValue + (trunc(-AValue/PathLength)+1)*PathLength;\n  oldLoopClosedShapes:= LoopClosedShapes;\n  oldLoopPath:= LoopPath;\n  LoopClosedShapes:= false;\n  LoopPath:= false;\n  MoveForward(AValue-GetArcPos, True);\n  LoopClosedShapes:= oldLoopClosedShapes;\n  LoopPath:= oldLoopPath;\nend;\n\nfunction TBGRAPathCursor.GetPathLength: single;\nbegin\n  if not FPathLengthComputed then\n  begin\n    FPathLength := Path.ComputeLength(FAcceptedDeviation);\n    FPathLengthComputed := true;\n  end;\n  result := FPathLength;\nend;\n\nprocedure TBGRAPathCursor.OnPathFree;\nbegin\n  FPath := nil;\nend;\n\nfunction TBGRAPathCursor.GetLoopClosedShapes: boolean;\nbegin\n  result := FLoopClosedShapes;\nend;\n\nfunction TBGRAPathCursor.GetLoopPath: boolean;\nbegin\n  result := FLoopPath;\nend;\n\nfunction TBGRAPathCursor.GetStartCoordinate: TPointF;\nbegin\n  result := FStartCoordinate;\nend;\n\nprocedure TBGRAPathCursor.SetLoopClosedShapes(AValue: boolean);\nbegin\n  FLoopClosedShapes := AValue;\nend;\n\nprocedure TBGRAPathCursor.SetLoopPath(AValue: boolean);\nbegin\n  FLoopPath := AValue;\nend;\n\nprocedure TBGRAPathCursor.PrepareCurrentElement;\nbegin\n  Path.GetElementAt(FDataPos, FCurrentElementType, FCurrentElement);\n  FCurrentElementLength := 0;\n  FCurrentElementArcPos := 0;\n  FCurrentElementPoints := nil;\n  FCurrentSegment := 0;\n  FCurrentSegmentPos := 0;\n  FCurrentElementArcPosScale := 1;\n  if FCurrentElementType = peNone then\n  begin\n    FCurrentElementStartCoord := EmptyPointF;\n    FCurrentElementEndCoord := EmptyPointF;\n  end\n  else\n  begin\n    FCurrentElementStartCoord := Path.GetElementStartCoord(FDataPos);\n    case FCurrentElementType of\n      peLineTo, peCloseSubPath:\n        begin\n          FCurrentElementEndCoord := PPointF(FCurrentElement)^;\n          FCurrentElementLength := VectLen(FCurrentElementEndCoord - FCurrentElementStartCoord);\n        end;\n      peQuadraticBezierTo: with PQuadraticBezierToElement(FCurrentElement)^ do\n        begin\n          FCurrentElementEndCoord := Destination;\n          FCurrentElementLength := BGRABitmapTypes.BezierCurve(FCurrentElementStartCoord,ControlPoint,Destination).ComputeLength;\n        end;\n      peCubicBezierTo,peArc,peOpenedSpline,peClosedSpline:\n        begin\n          NeedPolygonalApprox;\n          FCurrentElementEndCoord := FCurrentElementPoints[high(FCurrentElementPoints)];\n          FCurrentElementLength := PolylineLen(FCurrentElementPoints);\n        end;\n    else\n      FCurrentElementEndCoord := FCurrentElementStartCoord;\n    end;\n  end;\nend;\n\nfunction TBGRAPathCursor.GetBounds: TRectF;\nbegin\n  if not FBoundsComputed then\n  begin\n    FBounds:= Path.GetBounds(FAcceptedDeviation);\n    FBoundsComputed := true;\n  end;\n  result := FBounds;\nend;\n\nfunction TBGRAPathCursor.GoToNextElement(ACanJump: boolean): boolean;\nbegin\n  if (FCurrentElementType = peCloseSubPath) and\n   (PClosePathElement(FCurrentElement)^.LoopDataPos <> -1) and\n   (  FLoopClosedShapes or\n      (FLoopPath and (PClosePathElement(FCurrentElement)^.LoopDataPos = 0))\n   ) then\n  begin\n    if PClosePathElement(FCurrentElement)^.LoopDataPos <> FDataPos then\n    begin\n      result := true;\n      FDataPos := PClosePathElement(FCurrentElement)^.LoopDataPos;\n      FArcPos := EmptySingle;\n      PrepareCurrentElement;\n    end else\n      result := false;\n  end;\n  if not ACanJump and ((FCurrentElementType = peCloseSubPath)\n   or (Path.PeekNextElement(FDataPos) = peMoveTo)) then\n  begin\n    result := false;\n    exit;\n  end;\n  if Path.GoToNextElement(FDataPos) then\n  begin\n    result := true;\n    PrepareCurrentElement;\n  end\n  else\n  begin\n    if ACanJump and FLoopPath and (FDataPos > 0) then\n    begin\n      result := true;\n      FDataPos := 0;\n      FArcPos := EmptySingle;\n      PrepareCurrentElement;\n    end else\n      result := false;\n  end;\nend;\n\nfunction TBGRAPathCursor.GoToPreviousElement(ACanJump: boolean): boolean;\nvar lastElemPos: IntPtr;\nbegin\n  if (FCurrentElementType = peMoveTo) and (PMoveToElement(FCurrentElement)^.LoopDataPos <> -1) and\n    ( FLoopClosedShapes or\n      (FLoopPath and (FDataPos = 0))\n    ) then\n  with PMoveToElement(FCurrentElement)^ do\n  begin\n    if LoopDataPos <> -1 then\n    begin\n      result := true;\n      FDataPos := LoopDataPos;\n      FArcPos := EmptySingle;\n      PrepareCurrentElement;\n    end;\n  end;\n  if not ACanJump and (FCurrentElementType = peMoveTo) then\n  begin\n    result := false;\n    exit;\n  end;\n  if Path.GoToPreviousElement(FDataPos) then\n  begin\n    result := true;\n    PrepareCurrentElement;\n  end\n  else\n  begin\n    if FLoopPath then\n    begin\n      lastElemPos := FPath.FDataPos;\n      if (lastElemPos > 0) and FPath.GoToPreviousElement(lastElemPos) then\n      begin\n        if lastElemPos > 0 then\n        begin\n          result := true;\n          FDataPos := lastElemPos;\n          PrepareCurrentElement;\n          FArcPos := EmptySingle;\n          exit;\n        end;\n      end;\n    end;\n    result := false;\n  end;\nend;\n\nconstructor TBGRAPathCursor.Create(APath: TBGRAPath; AAcceptedDeviation: single);\nbegin\n  FPath := APath;\n  FPathLengthComputed := false;\n  FBoundsComputed:= false;\n  FDataPos := 0;\n  FArcPos:= 0;\n  FAcceptedDeviation:= AAcceptedDeviation;\n  Path.RegisterCursor(self);\n  PrepareCurrentElement;\n\n  FStartCoordinate := FCurrentElementStartCoord;\n  if isEmptyPointF(FStartCoordinate) then\n    raise exception.Create('Path does not has a starting coordinate');\n  FEndCoordinate := Path.FLastTransformedCoord;\n  if isEmptyPointF(FEndCoordinate) then\n    raise exception.Create('Path does not has an ending coordinate');\nend;\n\nfunction TBGRAPathCursor.MoveForward(ADistance: single; ACanJump: boolean): single;\nvar newArcPos,step,remaining: single;\nbegin\n  if ADistance < 0 then\n  begin\n    result := -MoveBackward(-ADistance, ACanJump);\n    exit;\n  end;\n  result := 0;\n  remaining := ADistance;\n  while remaining > 0 do\n  begin\n    newArcPos := FCurrentElementArcPos + remaining;\n    if newArcPos > FCurrentElementLength then\n    begin\n      step := FCurrentElementLength - FCurrentElementArcPos;\n      IncF(result, step);\n      DecF(remaining, step);\n      if not GoToNextElement(ACanJump) then\n      begin\n        MoveForwardInElement(step);\n        FCurrentElementArcPos := FCurrentElementLength;\n        FArcPos := PathLength;\n        exit;\n      end;\n    end else\n    begin\n      MoveForwardInElement(remaining);\n      FCurrentElementArcPos := newArcPos;\n      result := ADistance;\n      break;\n    end;\n  end;\n  if FArcPos <> EmptySingle then\n    IncF(FArcPos, result);\nend;\n\nfunction TBGRAPathCursor.MoveBackward(ADistance: single; ACanJump: boolean = true): single;\nvar\n  remaining: Single;\n  newArcPos: Single;\n  step: Single;\nbegin\n  if ADistance = 0 then\n  begin\n    result := 0;\n    exit;\n  end;\n  if ADistance < 0 then\n  begin\n    result := -MoveForward(-ADistance, ACanJump);\n    exit;\n  end;\n  result := 0;\n  remaining := ADistance;\n  while remaining > 0 do\n  begin\n    newArcPos := FCurrentElementArcPos - remaining;\n    if newArcPos < 0 then\n    begin\n      step := FCurrentElementArcPos;\n      IncF(result, step);\n      DecF(remaining, step);\n      if not GoToPreviousElement(ACanJump) then\n      begin\n        MoveBackwardInElement(step);\n        FCurrentElementArcPos := 0;\n        FArcPos := 0;\n        exit;\n      end else\n        MoveToEndOfElement;\n    end else\n    begin\n      MoveBackwardInElement(remaining);\n      FCurrentElementArcPos := newArcPos;\n      result := ADistance;\n      break;\n    end;\n  end;\n  if FArcPos <> EmptySingle then\n    DecF(FArcPos, result);\nend;\n\ndestructor TBGRAPathCursor.Destroy;\nbegin\n  if Assigned(FPath) then\n  begin\n    FPath.UnregisterCursor(self);\n  end;\n  inherited Destroy;\nend;\n\n{ TBGRAPath }\n\nfunction TBGRAPath.ComputeLength(AAcceptedDeviation: single): single;\nvar pos: PtrInt;\nbegin\n  pos := 0;\n  result := 0;\n  repeat\n    IncF(result, GetElementLength(pos, AAcceptedDeviation));\n  until not GoToNextElement(pos);\nend;\n\nfunction TBGRAPath.ToPoints(AAcceptedDeviation: single): ArrayOfTPointF;\nvar sub: array of ArrayOfTPointF;\n    temp: ArrayOfTPointF;\n    nbSub,nbPts,curPt,curSub: Int32or64;\n    startPos,pos: PtrInt;\n    elemType: TBGRAPathElementType;\n    elem: pointer;\nbegin\n  pos := 0;\n  nbSub := 0;\n  repeat\n    GetElementAt(pos, elemType, elem);\n    if elem = nil then break;\n    case elemType of\n      peMoveTo,peLineTo,peCloseSubPath: begin\n          inc(nbSub);\n          while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n            GoToNextElement(pos);\n        end;\n      peQuadraticBezierTo, peCubicBezierTo, peArc, peOpenedSpline, peClosedSpline: inc(nbSub);\n    end;\n  until not GoToNextElement(pos);\n\n  pos := 0;\n  setlength(sub, nbSub);\n  curSub := 0;\n  repeat\n    GetElementAt(pos, elemType, elem);\n    if elem = nil then break;\n    case elemType of\n      peMoveTo,peLineTo,peCloseSubPath: begin\n          startPos := pos;\n          if (elemType = peMoveTo) and (curSub > 0) then\n            nbPts := 2\n          else\n            nbPts := 1;\n          while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n          begin\n            GoToNextElement(pos);\n            inc(nbPts);\n          end;\n          setlength(temp, nbPts);\n          pos := startPos;\n          if (elemType = peMoveTo) and (curSub > 0) then\n          begin\n            temp[0] := EmptyPointF;\n            temp[1] := PPointF(elem)^;\n            curPt := 2;\n          end else\n          begin\n            temp[0] := PPointF(elem)^;\n            curPt := 1;\n          end;\n          while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n          begin\n            GoToNextElement(pos);\n            GetElementAt(pos, elemType, elem);\n            temp[curPt] := PPointF(elem)^;\n            inc(curPt);\n          end;\n          sub[curSub] := temp;\n          inc(curSub);\n          temp := nil;\n        end;\n      peQuadraticBezierTo,peCubicBezierTo,peArc,\n      peOpenedSpline, peClosedSpline:\n        begin\n          sub[curSub] := GetPolygonalApprox(pos, AAcceptedDeviation, False);\n          inc(curSub);\n        end;\n    end;\n  until not GoToNextElement(pos) or (curSub = nbSub);\n  result := ConcatPointsF(sub);\nend;\n\nfunction TBGRAPath.ToPoints(AMatrix: TAffineMatrix; AAcceptedDeviation: single): ArrayOfTPointF;\nbegin\n  AAcceptedDeviation:= CorrectAcceptedDeviation(AAcceptedDeviation,AMatrix);\n  result := ToPoints(AAcceptedDeviation);\n  if not IsAffineMatrixIdentity(AMatrix) then\n    result := AMatrix*result;\nend;\n\nfunction TBGRAPath.IsEmpty: boolean;\nbegin\n  result := FDataPos = 0;\nend;\n\nfunction TBGRAPath.GetBounds(AAcceptedDeviation: single): TRectF;\nvar empty: boolean;\n    pos: PtrInt;\n    elemType: TBGRAPathElementType;\n    elem: pointer;\n    temp: array of TPointF;\n    i: integer;\n\n  procedure Include(pt: TPointF);\n  begin\n    if empty then\n    begin\n      result.TopLeft := pt;\n      result.BottomRight := pt;\n      empty := false;\n    end else\n    begin\n      if pt.x < result.Left then result.Left := pt.x\n      else if pt.x > result.Right then result.Right := pt.x;\n      if pt.y < result.Top then result.Top := pt.y\n      else if pt.y > result.Bottom then result.Bottom := pt.y;\n    end;\n  end;\n\n  procedure IncludeRect(r: TRectF);\n  begin\n    Include(r.TopLeft);\n    Include(r.BottomRight);\n  end;\n\nbegin\n  empty := true;\n  result := RectF(0,0,0,0);\n  pos := 0;\n  repeat\n    GetElementAt(pos, elemType, elem);\n    if elem = nil then break;\n    case elemType of\n      peMoveTo,peLineTo,peCloseSubPath: begin\n          Include(PPointF(elem)^);\n          while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n          begin\n            GoToNextElement(pos);\n            GetElementAt(pos, elemType, elem);\n            Include(PPointF(elem)^);\n          end;\n        end;\n      peCubicBezierTo:\n        with PCubicBezierToElement(elem)^ do\n          IncludeRect(BGRABitmapTypes.BezierCurve(GetElementStartCoord(pos),ControlPoint1,ControlPoint2,Destination).GetBounds);\n      peQuadraticBezierTo:\n        with PQuadraticBezierToElement(elem)^ do\n          IncludeRect(BGRABitmapTypes.BezierCurve(GetElementStartCoord(pos),ControlPoint,Destination).GetBounds);\n      peArc, peOpenedSpline, peClosedSpline:\n        begin\n          temp := GetPolygonalApprox(pos, AAcceptedDeviation, False);\n          for i := 0 to high(temp) do\n            Include(temp[i]);\n        end;\n    end;\n  until not GoToNextElement(pos);\n  if empty then raise exception.Create('Path is empty');\nend;\n\nprocedure TBGRAPath.SetPoints(const APoints: ArrayOfTPointF);\nvar i: integer;\n    nextIsMoveTo: boolean;\n    startPoint: TPointF;\nbegin\n  beginPath;\n  if length(APoints) = 0 then exit;\n  NeedSpace((sizeof(TPathElementHeader)+sizeof(TPointF))*length(APoints));\n  nextIsMoveTo:= true;\n  startPoint := EmptyPointF;\n  for i := 0 to high(APoints) do\n  begin\n    if isEmptyPointF(APoints[i]) then\n      nextIsMoveTo:= true\n    else\n    if nextIsMoveTo then\n    begin\n      startPoint := APoints[i];\n      moveTo(startPoint);\n      nextIsMoveTo:= false;\n    end\n    else\n    begin\n      with APoints[i] do\n        if (x = startPoint.x) and (y = startPoint.y) then\n          closePath\n        else\n          lineTo(APoints[i]);\n    end;\n  end;\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; AColor: TBGRAPixel;\n  AWidth: single; AAcceptedDeviation: single);\nbegin\n  stroke(ABitmap,AffineMatrixIdentity,AColor,AWidth,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; ATexture: IBGRAScanner;\n  AWidth: single; AAcceptedDeviation: single);\nbegin\n  stroke(ABitmap,AffineMatrixIdentity,ATexture,AWidth,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; x, y: single;\n  AColor: TBGRAPixel; AWidth: single; AAcceptedDeviation: single);\nbegin\n  stroke(ABitmap,AffineMatrixTranslation(x,y),AColor,AWidth,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; x, y: single;\n  ATexture: IBGRAScanner; AWidth: single; AAcceptedDeviation: single);\nbegin\n  stroke(ABitmap,AffineMatrixTranslation(x,y),ATexture,AWidth,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix;\n  AColor: TBGRAPixel; AWidth: single; AAcceptedDeviation: single);\nvar data: TStrokeData;\nbegin\n  data.Bitmap := ABitmap;\n  data.Texture := nil;\n  data.Color := AColor;\n  data.Width := AWidth;\n  InternalDraw(@BitmapDrawSubPathProc, AMatrix, AAcceptedDeviation, @data);\nend;\n\nprocedure TBGRAPath.stroke(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix;\n  ATexture: IBGRAScanner; AWidth: single; AAcceptedDeviation: single);\nvar data: TStrokeData;\nbegin\n  data.Bitmap := ABitmap;\n  data.Texture := ATexture;\n  data.Color := BGRAPixelTransparent;\n  data.Width := AWidth;\n  InternalDraw(@BitmapDrawSubPathProc, AMatrix, AAcceptedDeviation, @data);\nend;\n\nprocedure TBGRAPath.stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer);\nbegin\n  stroke(ADrawProc, AffineMatrixIdentity, DefaultDeviation, AData);\nend;\n\nprocedure TBGRAPath.stroke(ADrawProc: TBGRAPathDrawProc;\n  const AMatrix: TAffineMatrix; AData: pointer);\nbegin\n  stroke(ADrawProc, AMatrix, DefaultDeviation, AData);\nend;\n\nprocedure TBGRAPath.stroke(ADrawProc: TBGRAPathDrawProc;\n  const AMatrix: TAffineMatrix; AAcceptedDeviation: single; AData: pointer);\nbegin\n  InternalDraw(ADrawProc,AMatrix,AAcceptedDeviation,AData);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; AColor: TBGRAPixel;\n  AAcceptedDeviation: single);\nbegin\n  fill(ABitmap,AffineMatrixIdentity,AColor,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; ATexture: IBGRAScanner;\n  AAcceptedDeviation: single);\nbegin\n  fill(ABitmap,AffineMatrixIdentity,ATexture,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; x, y: single;\n  AColor: TBGRAPixel; AAcceptedDeviation: single);\nbegin\n  fill(ABitmap,AffineMatrixTranslation(x,y),AColor,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; x, y: single;\n  ATexture: IBGRAScanner; AAcceptedDeviation: single);\nbegin\n  fill(ABitmap,AffineMatrixTranslation(x,y),ATexture,AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix;\n  AColor: TBGRAPixel; AAcceptedDeviation: single);\nbegin\n  ABitmap.FillPolyAntialias(ToPoints(AMatrix,AAcceptedDeviation), AColor);\nend;\n\nprocedure TBGRAPath.fill(ABitmap: TBGRACustomBitmap; const AMatrix: TAffineMatrix;\n  ATexture: IBGRAScanner; AAcceptedDeviation: single);\nbegin\n  ABitmap.FillPolyAntialias(ToPoints(AMatrix,AAcceptedDeviation), ATexture);\nend;\n\nprocedure TBGRAPath.fill(AFillProc: TBGRAPathFillProc; AData: pointer);\nbegin\n  fill(AFillProc, AffineMatrixIdentity, DefaultDeviation, AData);\nend;\n\nprocedure TBGRAPath.fill(AFillProc: TBGRAPathFillProc;\n  const AMatrix: TAffineMatrix; AData: pointer);\nbegin\n  fill(AFillProc, AMatrix, DefaultDeviation, AData);\nend;\n\nprocedure TBGRAPath.fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix;\n  AAcceptedDeviation: single; AData: pointer);\nbegin\n  AFillProc(ToPoints(AMatrix,AAcceptedDeviation), AData);\nend;\n\nfunction TBGRAPath.CreateCursor(AAcceptedDeviation: single): TBGRAPathCursor;\nbegin\n  result := TBGRAPathCursor.Create(self, AAcceptedDeviation);\nend;\n\nprocedure TBGRAPath.Fit(ARect: TRectF; AAcceptedDeviation: single);\nvar\n  temp: TBGRAPath;\nbegin\n  temp := TBGRAPath.Create;\n  copyTo(temp);\n  temp.FitInto(self, ARect, AAcceptedDeviation);\n  temp.Free;\nend;\n\nprocedure TBGRAPath.FitInto(ADest: TBGRAPath; ARect: TRectF;\n  AAcceptedDeviation: single);\nvar bounds: TRectF;\n    zoomX,zoomY: single;\nbegin\n  bounds := GetBounds(AAcceptedDeviation);\n  ADest.beginPath;\n  ADest.translate((ARect.Left+ARect.Right)*0.5, (ARect.Bottom+ARect.Top)*0.5);\n  if bounds.Right-bounds.Left <> 0 then\n  begin\n    zoomX := (ARect.Right-ARect.Left)/(bounds.Right-bounds.Left);\n    if bounds.Bottom-bounds.Top > 0 then\n    begin\n      zoomY := (ARect.Bottom-ARect.Top)/(bounds.Bottom-bounds.Top);\n      if zoomY < zoomX then ADest.scale(zoomY) else ADest.scale(zoomX);\n    end else\n      ADest.scale(zoomX);\n  end else\n  if bounds.Bottom-bounds.Top > 0 then\n  begin\n    zoomY := (ARect.Bottom-ARect.Top)/(bounds.Bottom-bounds.Top);\n    ADest.scale(zoomY);\n  end;\n  ADest.translate(-(bounds.Left+bounds.Right)*0.5, -(bounds.Bottom+bounds.Top)*0.5);\n  copyTo(ADest);\n  ADest.resetTransform;\nend;\n\nfunction TBGRAPath.GetSvgString: string;\nconst RadToDeg = 180/Pi;\nvar\n  formats: TFormatSettings;\n  lastPosF: TPointF;\n  implicitCommand: char;\n\n  function FloatToString(value: single): string;\n  begin\n    result := FloatToStrF(value,ffGeneral,7,0,formats)+' ';\n  end;\n\n  function CoordToString(const pt: TPointF): string;\n  begin\n    lastPosF := pt;\n    result := FloatToString(pt.x)+FloatToString(pt.y);\n  end;\n\n  function BoolToString(value: boolean): string;\n  begin\n    if value then\n      result := '1 ' else result := '0 ';\n  end;\n\n  procedure addCommand(command: char; parameters: string);\n  begin\n    if result <> '' then AppendStr(Result, ' '); //optional whitespace\n    if command <> implicitCommand then AppendStr(Result, command);\n    AppendStr(Result, trim(parameters));\n    if command = 'M' then implicitCommand:= 'L'\n    else if command = 'm' then implicitCommand:= 'l'\n    else if command in['z','Z'] then implicitCommand:= #0\n    else implicitCommand := command;\n  end;\n\nvar elemType: TBGRAPathElementType;\n    elem: pointer;\n    a: PArcElement;\n    Pos: PtrInt;\n    p1: TPointF;\n    pts: array of TPointF;\n    i: integer;\nbegin\n  formats := DefaultFormatSettings;\n  formats.DecimalSeparator := '.';\n\n  result := '';\n  Pos := 0;\n  lastPosF := EmptyPointF;\n  implicitCommand := #0;\n  repeat\n    GetElementAt(Pos, elemType, elem);\n    if elem = nil then break;\n    case elemType of\n      peMoveTo: addCommand('M',CoordToString(PPointF(elem)^));\n      peLineTo: addCommand('L',CoordToString(PPointF(elem)^));\n      peCloseSubPath: addCommand('z','');\n      peQuadraticBezierTo:\n        with PQuadraticBezierToElement(elem)^ do\n          addCommand('Q',CoordToString(ControlPoint)+CoordToString(Destination));\n      peCubicBezierTo:\n        with PCubicBezierToElement(elem)^ do\n          addCommand('C',CoordToString(ControlPoint1)+\n               CoordToString(ControlPoint2)+CoordToString(Destination));\n      peArc:\n        begin\n          a := PArcElement(elem);\n          p1 := ArcStartPoint(a^);\n          if isEmptyPointF(lastPosF) or (p1 <> lastPosF) then\n            addCommand('L',CoordToString(p1));\n          addCommand('A',CoordToString(a^.radius)+\n             FloatToString(a^.xAngleRadCW*RadToDeg)+\n             BoolToString(IsLargeArc(a^))+\n             BoolToString(not a^.anticlockwise)+\n             CoordToString(ArcEndPoint(a^)));\n        end;\n      peOpenedSpline, peClosedSpline:\n        begin\n          pts := GetPolygonalApprox(Pos, DefaultDeviation,True);\n          for i := 0 to high(pts) do\n          begin\n            if isEmptyPointF(lastPosF) then\n              addCommand('M',CoordToString(pts[i]))\n            else\n              addCommand('L',CoordToString(pts[i]));\n          end;\n        end;\n    end;\n  until not GoToNextElement(Pos);\nend;\n\nprocedure TBGRAPath.SetSvgString(const AValue: string);\nbegin\n  resetTransform;\n  beginPath;\n  addPath(AValue);\nend;\n\nprocedure TBGRAPath.RegisterCursor(ACursor: TBGRAPathCursor);\nbegin\n  setlength(FCursors, length(FCursors)+1);\n  FCursors[high(FCursors)] := ACursor;\nend;\n\nprocedure TBGRAPath.UnregisterCursor(ACursor: TBGRAPathCursor);\nvar\n  i,j: Integer;\nbegin\n  for i := high(FCursors) downto 0 do\n    if FCursors[i] = ACursor then\n    begin\n      for j := i to high(FCursors)-1 do\n        FCursors[j] := FCursors[j+1];\n      setlength(FCursors, length(FCursors)-1);\n      exit;\n    end;\nend;\n\nfunction TBGRAPath.SetLastCoord(ACoord: TPointF): TPointF;\nbegin\n  FLastCoord := ACoord;\n  FLastTransformedCoord := FMatrix*ACoord;\n  result := FLastTransformedCoord;\nend;\n\nprocedure TBGRAPath.ClearLastCoord;\nbegin\n  FLastCoord := EmptyPointF;\n  FLastTransformedCoord := EmptyPointF;\nend;\n\nprocedure TBGRAPath.BezierCurveFromTransformed(tcp1, cp2, pt: TPointF);\nbegin\n  with PCubicBezierToElement(AllocateElement(peCubicBezierTo))^ do\n  begin\n    ControlPoint1 := tcp1;\n    ControlPoint2 := FMatrix*cp2;\n    Destination := SetLastCoord(pt);\n    FExpectedTransformedControlPoint := Destination + (Destination-ControlPoint2);\n  end;\nend;\n\nprocedure TBGRAPath.QuadraticCurveFromTransformed(tcp, pt: TPointF);\nbegin\n  with PQuadraticBezierToElement(AllocateElement(peQuadraticBezierTo))^ do\n  begin\n    ControlPoint := tcp;\n    Destination := SetLastCoord(pt);\n    FExpectedTransformedControlPoint := Destination+(Destination-ControlPoint);\n  end;\nend;\n\nfunction TBGRAPath.LastCoordDefined: boolean;\nbegin\n  result := not isEmptyPointF(FLastTransformedCoord);\nend;\n\nfunction TBGRAPath.GetPolygonalApprox(APos: IntPtr; AAcceptedDeviation: single; AIncludeFirstPoint: boolean): ArrayOfTPointF;\nvar pts: ArrayOfTPointF;\n  elemType: TBGRAPathElementType;\n  elem: pointer;\n  pt : TPointF;\n  i: Int32or64;\nbegin\n  GetElementAt(APos, elemType, elem);\n  case elemType of\n    peQuadraticBezierTo:\n      with PQuadraticBezierToElement(elem)^ do\n        result := BGRABitmapTypes.BezierCurve(GetElementStartCoord(APos),ControlPoint,Destination).ToPoints(AAcceptedDeviation, AIncludeFirstPoint);\n    peCubicBezierTo:\n      with PCubicBezierToElement(elem)^ do\n        result := BGRABitmapTypes.BezierCurve(GetElementStartCoord(APos),ControlPoint1,ControlPoint2,Destination).ToPoints(AAcceptedDeviation, AIncludeFirstPoint);\n    peArc:\n      begin\n        result := ComputeArc(PArcElement(elem)^, DefaultDeviation/AAcceptedDeviation);\n        pt := GetElementStartCoord(APos);\n        if pt <> result[0] then\n        begin\n          setlength(result, length(result)+1);\n          for i := high(result) downto 1 do\n            result[i] := result[i-1];\n          result[0] := pt;\n        end;\n      end;\n    peOpenedSpline, peClosedSpline:\n      with PSplineElement(elem)^ do\n      begin\n        setlength(pts, NbControlPoints);\n        move(Pointer(PSplineElement(elem)+1)^, pts[0], NbControlPoints*sizeof(TPointF));\n        if elemType = peOpenedSpline then\n          result := ComputeOpenedSpline(pts, SplineStyle, 0.25, AAcceptedDeviation)\n        else\n          result := ComputeClosedSpline(pts, SplineStyle, AAcceptedDeviation);\n      end;\n    else\n      result := nil;\n  end;\nend;\n\nfunction TBGRAPath.getPoints: ArrayOfTPointF;\nbegin\n  result := ToPoints;\nend;\n\nfunction TBGRAPath.getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF;\nbegin\n  result := ToPoints(AMatrix);\nend;\n\nfunction TBGRAPath.getLength: single;\nbegin\n  result := ComputeLength;\nend;\n\nfunction TBGRAPath.getCursor: TBGRACustomPathCursor;\nbegin\n  result := CreateCursor;\nend;\n\nprocedure TBGRAPath.InternalDraw(ADrawProc: TBGRAPathDrawProc;\n  const AMatrix: TAffineMatrix; AAcceptedDeviation: single; AData: pointer);\nvar\n  nbSub: Int32or64;\n\n  procedure OutputSub(subPathStartPos, subPathEndPos: IntPtr);\n  var\n    sub: array of ArrayOfTPointF;\n    temp: ArrayOfTPointF;\n    startPos,pos,nbPts,curPt,curSub: Int32or64;\n    elemType: TBGRAPathElementType;\n    elem: pointer;\n  begin\n    pos := subPathStartPos;\n    setlength(sub, nbSub);\n    curSub := 0;\n    while (pos <= subPathEndPos) and (curSub < nbSub) do\n    begin\n      GetElementAt(pos, elemType, elem);\n      if elem = nil then break;\n      case elemType of\n        peMoveTo,peLineTo,peCloseSubPath: begin\n            startPos := pos;\n            if (elemType = peMoveTo) and (curSub > 0) then\n              nbPts := 2\n            else\n              nbPts := 1;\n            while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n            begin\n              GoToNextElement(pos);\n              inc(nbPts);\n            end;\n            setlength(temp, nbPts);\n            pos := startPos;\n            if (elemType = peMoveTo) and (curSub > 0) then\n            begin\n              temp[0] := EmptyPointF;\n              temp[1] := PPointF(elem)^;\n              curPt := 2;\n            end else\n            begin\n              temp[0] := PPointF(elem)^;\n              curPt := 1;\n            end;\n            while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n            begin\n              GoToNextElement(pos);\n              GetElementAt(pos, elemType, elem);\n              temp[curPt] := PPointF(elem)^;\n              inc(curPt);\n            end;\n            sub[curSub] := temp;\n            inc(curSub);\n            temp := nil;\n          end;\n        peQuadraticBezierTo,peCubicBezierTo,peArc,\n        peOpenedSpline, peClosedSpline:\n          begin\n            sub[curSub] := GetPolygonalApprox(pos, AAcceptedDeviation, False);\n            inc(curSub);\n          end;\n      end;\n      GoToNextElement(pos);\n    end;\n    temp := ConcatPointsF(sub);\n    if not IsAffineMatrixIdentity(AMatrix) then\n      temp := AMatrix*temp;\n    if (elemType = peCloseSubPath) or ((curSub = 2) and (elemType = peClosedSpline)) then\n      ADrawProc(temp, True, AData)\n    else\n      ADrawProc(temp, False, AData);\n  end;\n\nvar\n  subPathStartPos: IntPtr;\n  prevPos,pos: PtrInt;\n  elemType: TBGRAPathElementType;\n  elem: pointer;\nbegin\n  AAcceptedDeviation := CorrectAcceptedDeviation(AAcceptedDeviation, AMatrix);\n  pos := 0;\n  nbSub := 0;\n  subPathStartPos := pos;\n  repeat\n    prevPos := pos;\n    GetElementAt(pos, elemType, elem);\n    if elem = nil then\n    begin\n      pos := prevPos;\n      break;\n    end;\n    if (elemType = peMoveTo) and (nbSub > 0) then\n    begin\n      OutputSub(subPathStartPos,prevPos);\n      nbSub := 0;\n      subPathStartPos := pos;\n    end;\n    case elemType of\n      peMoveTo,peLineTo,peCloseSubPath: begin\n          inc(nbSub);\n          while PeekNextElement(pos) in[peLineTo,peCloseSubPath] do\n            GoToNextElement(pos);\n        end;\n      peQuadraticBezierTo, peCubicBezierTo, peArc, peOpenedSpline, peClosedSpline: inc(nbSub);\n    end;\n  until not GoToNextElement(pos);\n  if nbSub > 0 then OutputSub(subPathStartPos,pos);\nend;\n\nprocedure TBGRAPath.addPath(const AValue: string);\nvar p: integer;\n    numberError: boolean;\n    startCoord,lastCoord: TPointF;\n\n  function parseFloat: single;\n  var numberStart: integer;\n      errPos: integer;\n      decimalFind: boolean;\n      str: String;\n\n    procedure parseFloatInternal;\n    begin\n      if (p <= length(AValue)) and (AValue[p] in['+','-']) then inc(p);\n      decimalFind:= false;\n      while (p <= length(AValue)) and (AValue[p] in['0'..'9','.']) do\n      begin\n        if AValue[p] = '.' then\n          if decimalFind then\n            Break\n          else\n            decimalFind:= true;\n        inc(p);\n      end;\n    end;\n\n  begin\n    while (p <= length(AValue)) and (AValue[p] in[#0..#32,',']) do inc(p);\n    numberStart:= p;\n    parseFloatInternal;\n    if (p <= length(AValue)) and (AValue[p] in['e','E']) then\n    begin\n      inc(p);\n      parseFloatInternal;\n    end;\n    str := copy(AValue,numberStart,p-numberStart);\n    val(str,result,errPos);\n    if errPos <> 0 then numberError := true;\n  end;\n\n  function parseCoord(relative: boolean): TPointF;\n  begin\n    result.x := parseFloat;\n    result.y := parseFloat;\n    if relative and not isEmptyPointF(lastCoord) then result.Offset(lastCoord);\n    if isEmptyPointF(lastCoord) then startCoord := result;\n  end;\n\nvar\n  command,implicitCommand: char;\n  relative: boolean;\n  c1,c2,p1: TPointF;\n  a: TArcDef;\n  largeArc: boolean;\nbegin\n  BeginSubPath;\n  lastCoord := EmptyPointF;\n  startCoord := EmptyPointF;\n  p := 1;\n  implicitCommand:= #0;\n  while p <= length(AValue) do\n  begin\n    command := AValue[p];\n    if (command in['0'..'9','.','+','-']) and (implicitCommand <> #0) then\n      command := implicitCommand\n    else\n    begin\n      inc(p);\n    end;\n    relative := (command = lowerCase(command));\n    numberError := false;\n    if upcase(command) in ['L','H','V','C','S','Q','T','A'] then\n      implicitCommand:= command; //by default the command repeats\n    case upcase(command) of\n    'Z': begin\n           closePath;\n           implicitCommand:= #0;\n           lastCoord := startCoord;\n         end;\n    'M': begin\n           p1 := parseCoord(relative);\n           if not numberError then\n           begin\n             moveTo(p1);\n             lastCoord := p1;\n             startCoord := p1;\n           end;\n           if relative then implicitCommand:= 'l' else\n             implicitCommand:= 'L';\n      end;\n    'L': begin\n           p1 := parseCoord(relative);\n           if not numberError then\n           begin\n             lineTo(p1);\n             lastCoord := p1;\n           end;\n      end;\n    'H': begin\n        if not isEmptyPointF(lastCoord) then\n        begin\n          p1 := lastCoord;\n          if relative then IncF(p1.x, parseFloat)\n          else p1.x := parseFloat;\n        end else\n        begin\n          p1 := PointF(parseFloat,0);\n          lastCoord := p1;\n          startCoord := p1;\n        end;\n        if not numberError then\n        begin\n          lineTo(p1);\n          lastCoord := p1;\n        end;\n      end;\n    'V': begin\n        if not isEmptyPointF(lastCoord) then\n        begin\n          p1 := lastCoord;\n          if relative then IncF(p1.y, parseFloat)\n          else p1.y := parseFloat;\n        end else\n        begin\n          p1 := PointF(0,parseFloat);\n          lastCoord := p1;\n          startCoord := p1;\n        end;\n        if not numberError then\n        begin\n          lineTo(p1);\n          lastCoord := p1;\n        end;\n      end;\n    'C': begin\n        c1 := parseCoord(relative);\n        c2 := parseCoord(relative);\n        p1 := parseCoord(relative);\n        if not numberError then\n        begin\n          bezierCurveTo(c1,c2,p1);\n          lastCoord := p1;\n        end;\n      end;\n    'S': begin\n        c2 := parseCoord(relative);\n        p1 := parseCoord(relative);\n        if not numberError then\n        begin\n          smoothBezierCurveTo(c2,p1);\n          lastCoord := p1;\n        end;\n      end;\n    'Q': begin\n        c1 := parseCoord(relative);\n        p1 := parseCoord(relative);\n        if not numberError then\n        begin\n          quadraticCurveTo(c1,p1);\n          lastCoord := p1;\n        end;\n      end;\n    'T': begin\n        p1 := parseCoord(relative);\n        if not numberError then\n        begin\n          smoothQuadraticCurveTo(p1);\n          lastCoord := p1;\n        end;\n    end;\n    'A':\n      begin\n        a.radius.x := parseFloat;\n        a.radius.y := parseFloat;\n        a.xAngleRadCW := parseFloat*Pi/180;\n        largeArc := parseFloat<>0;\n        a.anticlockwise:= parseFloat=0;\n        p1 := parseCoord(relative);\n        if not numberError then\n        begin\n          arcTo(a.radius.x,a.radius.y,a.xAngleRadCW,largeArc,a.anticlockwise,p1.x,p1.y);\n          lastCoord := p1;\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAPath.addPath(source: IBGRAPath);\nbegin\n  source.copyTo(self);\nend;\n\nprocedure TBGRAPath.openedSpline(const pts: array of TPointF;\n  style: TSplineStyle);\nvar elem: PSplineElement;\n  i: Int32or64;\n  p: PPointF;\nbegin\n  if length(pts) = 0 then exit;\n  for i := 0 to high(pts) do\n    if isEmptyPointF(pts[i]) then\n      raise exception.Create('Unexpected empty point');\n  if length(pts) <= 2 then\n  begin\n    polyline(pts);\n    exit;\n  end;\n  if not LastCoordDefined then moveTo(pts[0]);\n  elem := AllocateElement(peOpenedSpline, length(pts)*sizeof(TPointF));\n  elem^.NbControlPoints := length(pts);\n  elem^.SplineStyle := style;\n  p := PPointF(elem+1);\n  for i := 0 to high(pts)-1 do\n  begin\n    p^ := FMatrix*pts[i];\n    inc(p);\n  end;\n  p^ := SetLastCoord(pts[high(pts)]);\n  inc(p);\n  PInteger(p)^ := length(pts);\nend;\n\nprocedure TBGRAPath.closedSpline(const pts: array of TPointF;\n  style: TSplineStyle);\nvar elem: PSplineElement;\n  i: Int32or64;\n  p: PPointF;\nbegin\n  if length(pts) = 0 then exit;\n  for i := 0 to high(pts) do\n    if isEmptyPointF(pts[i]) then\n      raise exception.Create('Unexpected empty point');\n  if not LastCoordDefined then moveTo(ClosedSplineStartPoint(pts, style));\n  if length(pts) <= 2 then exit;\n  elem := AllocateElement(peClosedSpline, length(pts)*sizeof(TPointF));\n  elem^.NbControlPoints := length(pts);\n  elem^.SplineStyle := style;\n  p := PPointF(elem+1);\n  for i := 0 to high(pts) do\n  begin\n    p^ := FMatrix*pts[i];\n    inc(p);\n  end;\n  PInteger(p)^ := length(pts);\nend;\n\nprocedure TBGRAPath.BitmapDrawSubPathProc(const APoints: array of TPointF;\n  AClosed: boolean; AData: pointer);\nbegin\n  with TStrokeData(AData^) do\n  if AClosed then\n  begin\n    if Texture <> nil then\n      Bitmap.DrawPolygonAntialias(APoints, Texture, Width)\n    else\n      Bitmap.DrawPolygonAntialias(APoints, Color, Width);\n  end else\n  begin\n    if Texture <> nil then\n      Bitmap.DrawPolyLineAntialiasAutocycle(APoints, Texture, Width)\n    else\n      Bitmap.DrawPolyLineAntialiasAutocycle(APoints, Color, Width);\n  end;\nend;\n\nfunction TBGRAPath.CorrectAcceptedDeviation(AAcceptedDeviation: single;\n  const AMatrix: TAffineMatrix): single;\nvar maxZoom: single;\nbegin\n  //determine the zoom of the matrix\n  maxZoom := Max(VectLen(PointF(AMatrix[1,1],AMatrix[2,1])),\n     VectLen(PointF(AMatrix[1,2],AMatrix[2,2])));\n  //make the accepted deviation smaller if the matrix zooms to avoid that\n  // curves would look angular\n  if maxZoom = 0 then\n    result:= 1e10\n  else\n    result := AAcceptedDeviation / maxZoom;\nend;\n\nprocedure TBGRAPath.OnModify;\nbegin\n  if length(FCursors)> 0 then\n      raise Exception.Create('You cannot modify the path when there are cursors');\nend;\n\nprocedure TBGRAPath.OnMatrixChange;\nbegin\n  //transformed coord are not changed,\n  //but original coords are lost in the process.\n  //this has a consequence when using\n  //arc functions that rely on the previous\n  //coordinate\n  FLastCoord := EmptyPointF;\n  FSubPathStartCoord := EmptyPointF;\nend;\n\nprocedure TBGRAPath.NeedSpace(count: integer);\nbegin\n  OnModify;\n  inc(count, 4); //avoid memory error\n  if FDataPos + count > FDataCapacity then\n  begin\n    FDataCapacity := (FDataCapacity shl 1)+8;\n    if FDataPos + count + 8 > FDataCapacity then\n      FDataCapacity := FDataPos + count + 8;\n    ReAllocMem(FData, FDataCapacity);\n  end;\nend;\n\nfunction TBGRAPath.AllocateElement(AElementType: TBGRAPathElementType;\n  AExtraBytes: PtrInt): Pointer;\nvar t: PtrInt;\nbegin\n  if not (AElementType in [succ(peNone)..high(TBGRAPathElementType)]) then\n    raise exception.Create('Invalid element type');\n  OnModify;\n  t := PathElementSize[AElementType]+AExtraBytes;\n  NeedSpace(SizeOf(TPathElementHeader)+t);\n  with PPathElementHeader(FData+FDataPos)^ do\n  begin\n    ElementType:= AElementType;\n    PreviousElementType := FLastStoredElementType;\n  end;\n  result := FData+(FDataPos+SizeOf(TPathElementHeader));\n  FLastSubPathElementType:= AElementType;\n  FLastStoredElementType:= AElementType;\n  Inc(FDataPos, sizeof(TPathElementHeader)+t);\nend;\n\nprocedure TBGRAPath.Init;\nbegin\n  FData := nil;\n  FDataCapacity := 0;\n  FLastMoveToDataPos := -1;\n  beginPath;\n  resetTransform;\nend;\n\nfunction TBGRAPath.GoToNextElement(var APos: PtrInt): boolean;\nvar newPos: PtrInt;\n  p: PSplineElement;\n  elemType: TBGRAPathElementType;\nbegin\n  if APos >= FDataPos then\n    result := false\n  else\n  begin\n    elemType := PPathElementHeader(FData+APos)^.ElementType;\n    newPos := APos + sizeof(TPathElementHeader) + PathElementSize[elemType];\n    if elemType in[peOpenedSpline,peClosedSpline] then\n    begin\n      p := PSplineElement(FData+(APos+sizeof(TPathElementHeader)));\n      inc(newPos, p^.NbControlPoints * sizeof(TPointF) ); //extra\n    end;\n    if newPos < FDataPos then\n    begin\n      result := true;\n      APos := newPos;\n      if not CheckElementType(PPathElementHeader(FData+APos)^.ElementType) or\n        not CheckElementType(PPathElementHeader(FData+APos)^.PreviousElementType) then\n          raise exception.Create('Internal structure error');\n    end\n    else\n      result := false;\n  end;\nend;\n\nfunction TBGRAPath.GoToPreviousElement(var APos: PtrInt): boolean;\nvar lastElemType: TBGRAPathElementType;\nbegin\n  if APos <= 0 then\n    result := false\n  else\n  begin\n    result := true;\n    if (APos = FDataPos) then\n      lastElemType := FLastStoredElementType\n    else\n      lastElemType := PPathElementHeader(FData+APos)^.PreviousElementType;\n\n    if lastElemType in [peOpenedSpline,peClosedSpline] then\n      dec(APos, (PInteger(FData+APos)-1)^ *sizeof(TPointF)); //extra\n    dec(APos, sizeof(TPathElementHeader) + PathElementSize[lastElemType]);\n\n    if not CheckElementType(PPathElementHeader(FData+APos)^.ElementType) or\n      not CheckElementType(PPathElementHeader(FData+APos)^.PreviousElementType) then\n        raise exception.Create('Internal structure error');\n  end;\nend;\n\nfunction TBGRAPath.PeekNextElement(APos: PtrInt): TBGRAPathElementType;\nbegin\n  if not GoToNextElement(APos) then\n    result := peNone\n  else\n    result := PPathElementHeader(FData+APos)^.ElementType;\nend;\n\nfunction TBGRAPath.GetElementStartCoord(APos: PtrInt): TPointF;\nvar\n  elemType: TBGRAPathElementType;\n  elem: pointer;\nbegin\n  GetElementAt(APos, elemType, elem);\n  case elemType of\n  peNone: raise exception.Create('No element');\n  peMoveTo: result := PPointF(elem)^;\n  else\n    begin\n      if not GoToPreviousElement(APos) then\n        raise exception.Create('No previous element')\n      else\n      begin\n        result := GetElementEndCoord(APos);\n      end;\n    end;\n  end;\nend;\n\nfunction TBGRAPath.GetElementEndCoord(APos: PtrInt): TPointF;\nvar elemType: TBGRAPathElementType;\n  elem: pointer;\nbegin\n  GetElementAt(APos, elemType, elem);\n  case elemType of\n  peMoveTo,peLineTo,peCloseSubPath: result := PPointF(elem)^;\n  peQuadraticBezierTo: result := PQuadraticBezierToElement(elem)^.Destination;\n  peCubicBezierTo: result := PCubicBezierToElement(elem)^.Destination;\n  peArc: result := ArcEndPoint(PArcElement(elem)^);\n  peClosedSpline: result := PPointF(PSplineElement(elem)+1)^;\n  peOpenedSpline: result := (PPointF(PSplineElement(elem)+1)+(PSplineElement(elem)^.NbControlPoints-1))^;\n  else\n    result := EmptyPointF;\n  end;\nend;\n\nfunction TBGRAPath.GetElementLength(APos: PtrInt; AAcceptedDeviation: single): Single;\nvar elemType: TBGRAPathElementType;\n  elem: pointer;\n  pts: array of TPointF;\nbegin\n  GetElementAt(APos, elemType, elem);\n  case elemType of\n  peMoveTo: result := 0;\n  peLineTo,peCloseSubPath: result := VectLen(PPointF(elem)^ - GetElementStartCoord(APos))*FScale;\n  peQuadraticBezierTo: with PQuadraticBezierToElement(elem)^ do\n      result := BGRABitmapTypes.BezierCurve(GetElementStartCoord(APos),ControlPoint,Destination).ComputeLength;\n  peCubicBezierTo: with PCubicBezierToElement(elem)^ do\n      result := BGRABitmapTypes.BezierCurve(GetElementStartCoord(APos),ControlPoint1,ControlPoint2,Destination).ComputeLength(AAcceptedDeviation);\n  peArc: begin\n      result := VectLen(ArcStartPoint(PArcElement(elem)^) - GetElementStartCoord(APos));\n      IncF(result, PolylineLen(ComputeArc(PArcElement(elem)^, DefaultDeviation/AAcceptedDeviation)));\n    end;\n  peClosedSpline,peOpenedSpline:\n    begin\n      pts := GetPolygonalApprox(APos, AAcceptedDeviation, true);\n      result := PolylineLen(pts) + VectLen(pts[0]-GetElementStartCoord(APos));\n    end\n  else\n    result := 0;\n  end;\nend;\n\nprocedure TBGRAPath.GetElementAt(APos: PtrInt; out\n  AElementType: TBGRAPathElementType; out AElement: pointer);\nbegin\n  if APos >= FDataPos then\n  begin\n    AElementType := peNone;\n    AElement := nil;\n  end else\n  begin\n    AElementType:= PPathElementHeader(FData+APos)^.ElementType;\n    AElement := FData+(APos+sizeof(TPathElementHeader));\n  end;\nend;\n\nconstructor TBGRAPath.Create;\nbegin\n  Init;\nend;\n\nconstructor TBGRAPath.Create(ASvgString: string);\nbegin\n  Init;\n  SvgString:= ASvgString;\nend;\n\nconstructor TBGRAPath.Create(const APoints: ArrayOfTPointF);\nbegin\n  Init;\n  SetPoints(APoints);\nend;\n\nconstructor TBGRAPath.Create(APath: IBGRAPath);\nbegin\n  Init;\n  APath.copyTo(self);\nend;\n\ndestructor TBGRAPath.Destroy;\nvar i: integer;\nbegin\n  for I := 0 to high(FCursors) do\n    FCursors[i].OnPathFree;\n  if Assigned(FData) then\n  begin\n    FreeMem(FData);\n    FData := nil;\n  end;\n  inherited Destroy;\nend;\n\nprocedure TBGRAPath.beginPath;\nbegin\n  DoClear;\nend;\n\nprocedure TBGRAPath.beginSubPath;\nbegin\n  OnModify;\n  FLastSubPathElementType := peNone;\n  ClearLastCoord;\n  FSubPathStartCoord := EmptyPointF;\n  FExpectedTransformedControlPoint := EmptyPointF;\nend;\n\nprocedure TBGRAPath.DoClear;\nbegin\n  OnModify;\n  FDataPos := 0;\n  BeginSubPath;\nend;\n\nfunction TBGRAPath.CheckElementType(AElementType: TBGRAPathElementType): boolean;\nbegin\n  result := AElementType <= high(TBGRAPathElementType);\nend;\n\nprocedure TBGRAPath.closePath;\nvar\n  moveToType: TBGRAPathElementType;\n  moveToElem: pointer;\nbegin\n  if (FLastSubPathElementType <> peNone) and (FLastSubPathElementType <> peCloseSubPath) then\n  begin\n    with PClosePathElement(AllocateElement(peCloseSubPath))^ do\n    begin\n      StartCoordinate := FSubPathTransformedStartCoord;\n      LoopDataPos := FLastMoveToDataPos;\n    end;\n    if FLastMoveToDataPos <> -1 then\n    begin\n      GetElementAt(FLastMoveToDataPos,moveToType,moveToElem);\n      PMoveToElement(moveToElem)^.LoopDataPos := FDataPos;\n      FLastMoveToDataPos:= -1;\n    end;\n    FLastCoord := FSubPathStartCoord;\n    FLastTransformedCoord := FSubPathTransformedStartCoord;\n  end;\nend;\n\nprocedure TBGRAPath.translate(x, y: single);\nbegin\n  OnMatrixChange;\n  FMatrix := FMatrix * AffineMatrixTranslation(x,y);\nend;\n\nprocedure TBGRAPath.resetTransform;\nbegin\n  OnMatrixChange;\n  FMatrix := AffineMatrixIdentity;\n  FAngleRadCW := 0;\n  FScale:= 1;\nend;\n\nprocedure TBGRAPath.rotate(angleRadCW: single);\nbegin\n  OnMatrixChange;\n  FMatrix := FMatrix * AffineMatrixRotationRad(-angleRadCW);\n  IncF(FAngleRadCW, angleRadCW);\nend;\n\nprocedure TBGRAPath.rotateDeg(angleDeg: single);\nconst degToRad = Pi/180;\nbegin\n  rotate(angleDeg*degToRad);\nend;\n\nprocedure TBGRAPath.rotate(angleRadCW: single; center: TPointF);\nbegin\n  translate(center.x,center.y);\n  rotate(angleRadCW);\n  translate(-center.x,-center.y);\nend;\n\nprocedure TBGRAPath.rotateDeg(angleDeg: single; center: TPointF);\nbegin\n  translate(center.x,center.y);\n  rotateDeg(angleDeg);\n  translate(-center.x,-center.y);\nend;\n\nprocedure TBGRAPath.scale(factor: single);\nbegin\n  OnMatrixChange;\n  FMatrix := FMatrix * AffineMatrixScale(factor,factor);\n  FScale := FScale * factor;\nend;\n\nprocedure TBGRAPath.moveTo(x, y: single);\nbegin\n  moveTo(PointF(x,y));\nend;\n\nprocedure TBGRAPath.lineTo(x, y: single);\nbegin\n  lineTo(PointF(x,y));\nend;\n\nprocedure TBGRAPath.moveTo(constref pt: TPointF);\nbegin\n  if FLastSubPathElementType <> peMoveTo then\n  begin\n    FLastMoveToDataPos:= FDataPos;\n    with PMoveToElement(AllocateElement(peMoveTo))^ do\n    begin\n      StartCoordinate := SetLastCoord(pt);\n      LoopDataPos := -1;\n    end\n  end else\n    PMoveToElement(FData+(FDataPos-Sizeof(TMoveToElement)))^.StartCoordinate := SetLastCoord(pt);\n  FSubPathStartCoord := FLastCoord;\n  FSubPathTransformedStartCoord := FLastTransformedCoord;\nend;\n\nprocedure TBGRAPath.lineTo(constref pt: TPointF);\nvar lastTransfCoord, newTransfCoord: TPointF;\nbegin\n  if LastCoordDefined then\n  begin\n    lastTransfCoord := FLastTransformedCoord;\n    newTransfCoord := SetLastCoord(pt);\n    if newTransfCoord <> lastTransfCoord then\n      PPointF(AllocateElement(peLineTo))^ := newTransfCoord;\n  end else\n    moveTo(pt);\nend;\n\nprocedure TBGRAPath.polyline(const pts: array of TPointF);\nvar i: integer;\nbegin\n  if length(pts) = 0 then exit;\n  NeedSpace((sizeof(TPathElementHeader)+sizeof(TPointF))*length(pts));\n  moveTo(pts[0]);\n  for i := 1 to high(pts) do lineTo(pts[i]);\nend;\n\nprocedure TBGRAPath.polylineTo(const pts: array of TPointF);\nvar i: integer;\nbegin\n  NeedSpace((sizeof(TPathElementHeader)+sizeof(TPointF))*length(pts));\n  for i := 0 to high(pts) do lineTo(pts[i]);\nend;\n\nprocedure TBGRAPath.polygon(const pts: array of TPointF);\nvar lastPt: integer;\nbegin\n  if length(pts) = 0 then exit;\n  lastPt := high(pts);\n  while (lastPt > 1) and (pts[lastPt] = pts[0]) do dec(lastPt);\n  if lastPt <> high(pts) then\n    polyline(slice(pts,lastPt+1))\n  else\n    polyline(pts);\n  closePath;\nend;\n\nprocedure TBGRAPath.quadraticCurveTo(cpx, cpy, x, y: single);\nbegin\n  quadraticCurveTo(PointF(cpx,cpy),PointF(x,y));\nend;\n\nprocedure TBGRAPath.quadraticCurveTo(constref cp, pt: TPointF);\nbegin\n  if LastCoordDefined then\n    QuadraticCurveFromTransformed(FMatrix*cp, pt) else\n  begin\n    lineTo(pt);\n    FExpectedTransformedControlPoint := FMatrix*(pt+(pt-cp));\n  end;\nend;\n\nprocedure TBGRAPath.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y: single);\nbegin\n  bezierCurveTo(PointF(cp1x,cp1y),PointF(cp2x,cp2y),PointF(x,y));\nend;\n\nprocedure TBGRAPath.bezierCurveTo(constref cp1, cp2, pt: TPointF);\nbegin\n  if not LastCoordDefined then moveTo(cp1);\n  BezierCurveFromTransformed(FMatrix*cp1, cp2, pt);\nend;\n\nprocedure TBGRAPath.bezierCurve(const curve: TCubicBezierCurve);\nbegin\n  moveTo(curve.p1);\n  bezierCurveTo(curve.c1,curve.c2,curve.p2);\nend;\n\nprocedure TBGRAPath.bezierCurve(p1, cp1, cp2, p2: TPointF);\nbegin\n  moveTo(p1);\n  bezierCurveTo(cp1,cp2,p2);\nend;\n\nprocedure TBGRAPath.smoothBezierCurveTo(cp2x, cp2y, x, y: single);\nbegin\n  smoothBezierCurveTo(PointF(cp2x,cp2y),PointF(x,y));\nend;\n\nprocedure TBGRAPath.smoothBezierCurveTo(const cp2, pt: TPointF);\nbegin\n  if (FLastSubPathElementType = peCubicBezierTo) and not isEmptyPointF(FExpectedTransformedControlPoint) then\n    BezierCurveFromTransformed(FExpectedTransformedControlPoint,cp2,pt)\n  else if LastCoordDefined then\n    BezierCurveFromTransformed(FLastTransformedCoord,cp2,pt)\n  else\n    bezierCurveTo(cp2,cp2,pt);\nend;\n\nprocedure TBGRAPath.quadraticCurve(const curve: TQuadraticBezierCurve);\nbegin\n  moveTo(curve.p1);\n  quadraticCurveTo(curve.c,curve.p2);\nend;\n\nprocedure TBGRAPath.quadraticCurve(p1, cp, p2: TPointF);\nbegin\n  moveTo(p1);\n  quadraticCurveTo(cp,p2);\nend;\n\nprocedure TBGRAPath.smoothQuadraticCurveTo(x, y: single);\nbegin\n  smoothQuadraticCurveTo(PointF(x,y));\nend;\n\nprocedure TBGRAPath.smoothQuadraticCurveTo(const pt: TPointF);\nbegin\n  if (FLastSubPathElementType = peQuadraticBezierTo) and not isEmptyPointF(FExpectedTransformedControlPoint) then\n    QuadraticCurveFromTransformed(FExpectedTransformedControlPoint,pt)\n  else if LastCoordDefined then\n    QuadraticCurveFromTransformed(FLastTransformedCoord,pt)\n  else\n    quadraticCurveTo(pt,pt);\nend;\n\nprocedure TBGRAPath.rect(x, y, w, h: single);\nbegin\n  moveTo(x,y);\n  lineTo(x+w,y);\n  lineTo(x+w,y+h);\n  lineTo(x,y+h);\n  closePath;\nend;\n\nprocedure TBGRAPath.roundRect(x, y, w, h, radius: single);\nbegin\n  if radius <= 0 then\n  begin\n    rect(x,y,w,h);\n    exit;\n  end;\n  if (w <= 0) or (h <= 0) then exit;\n  if radius*2 > w then radius := w/2;\n  if radius*2 > h then radius := h/2;\n  moveTo(x+radius,y);\n  arcTo(PointF(x+w,y),PointF(x+w,y+h), radius);\n  arcTo(PointF(x+w,y+h),PointF(x,y+h), radius);\n  arcTo(PointF(x,y+h),PointF(x,y), radius);\n  arcTo(PointF(x,y),PointF(x+w,y), radius);\n  closePath;\nend;\n\nprocedure TBGRAPath.arc(cx, cy, radius, startAngleRadCW, endAngleRadCW: single;\n  anticlockwise: boolean);\nbegin\n  arc(cx,cy,radius,radius,0,startAngleRadCW,endAngleRadCW,anticlockwise);\nend;\n\nprocedure TBGRAPath.arc(cx, cy, radius, startAngleRadCW, endAngleRadCW: single);\nbegin\n  arc(cx,cy,radius,startAngleRadCW,endAngleRadCW,false);\nend;\n\nprocedure TBGRAPath.arcDeg(cx, cy, radius, startAngleDeg, endAngleDeg: single;\n  anticlockwise: boolean);\nconst degToRad = Pi/180;\nbegin\n  arc(cx,cy,radius,(startAngleDeg-90)*degToRad,(endAngleDeg-90)*degToRad,anticlockwise);\nend;\n\nprocedure TBGRAPath.arcDeg(cx, cy, radius, startAngleDeg, endAngleDeg: single);\nconst degToRad = Pi/180;\nbegin\n  arc(cx,cy,radius,(startAngleDeg-90)*degToRad,(endAngleDeg-90)*degToRad);\nend;\n\nprocedure TBGRAPath.arcTo(x1, y1, x2, y2, radius: single);\nbegin\n  arcTo(PointF(x1,y1), PointF(x2,y2), radius);\nend;\n\nprocedure TBGRAPath.arcTo(const p1, p2: TPointF; radius: single);\nvar p0 : TPointF;\nbegin\n  if IsEmptyPointF(FLastCoord) then\n    p0 := p1 else p0 := FLastCoord;\n  arc(Html5ArcTo(p0,p1,p2,radius));\nend;\n\nprocedure TBGRAPath.arc(constref arcDef: TArcDef);\nvar transformedArc: TArcElement;\nbegin\n  if (arcDef.radius.x = 0) and (arcDef.radius.y = 0) then\n    lineTo(arcDef.center)\n  else\n  begin\n    if not LastCoordDefined then\n      moveTo(ArcStartPoint(arcDef));\n    transformedArc.anticlockwise := arcDef.anticlockwise;\n    transformedArc.startAngleRadCW := arcDef.startAngleRadCW;\n    transformedArc.endAngleRadCW := arcDef.endAngleRadCW;\n    transformedArc.center := FMatrix*arcDef.center;\n    transformedArc.radius := arcDef.radius*FScale;\n    transformedArc.xAngleRadCW := arcDef.xAngleRadCW+FAngleRadCW;\n    PArcElement(AllocateElement(peArc))^ := transformedArc;\n\t{$PUSH}{$OPTIMIZATION OFF}\n    SetLastCoord(ArcEndPoint(arcDef));\n\t{$POP}\n  end;\nend;\n\nprocedure TBGRAPath.arc(cx, cy, rx, ry: single; xAngleRadCW, startAngleRadCW,\n  endAngleRadCW: single);\nbegin\n  arc(ArcDef(cx,cy,rx,ry,xAngleRadCW,startAngleRadCW,endAngleRadCW,false));\nend;\n\nprocedure TBGRAPath.arc(cx, cy, rx, ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single;\n  anticlockwise: boolean);\nbegin\n  arc(ArcDef(cx,cy,rx,ry,xAngleRadCW,startAngleRadCW,endAngleRadCW,anticlockwise));\nend;\n\nprocedure TBGRAPath.arcTo(rx, ry, xAngleRadCW: single; largeArc,\n  anticlockwise: boolean; x, y: single);\nbegin\n  if IsEmptyPointF(FLastCoord) then\n    moveTo(x,y)\n  else\n    arc(SvgArcTo(FLastCoord, rx,ry, xAngleRadCW, largeArc, anticlockwise, PointF(x,y)));\nend;\n\nprocedure TBGRAPath.copyTo(dest: IBGRAPath);\nvar pos: IntPtr;\n    elemType: TBGRAPathElementType;\n    elem: Pointer;\n    pts: array of TPointF;\nbegin\n  pos := 0;\n  repeat\n    GetElementAt(pos, elemType, elem);\n    if elem = nil then break;\n    case elemType of\n      peMoveTo: dest.moveTo(PPointF(elem)^);\n      peLineTo: dest.lineTo(PPointF(elem)^);\n      peCloseSubPath: dest.closePath;\n      peQuadraticBezierTo:\n        with PQuadraticBezierToElement(elem)^ do\n          dest.quadraticCurveTo(ControlPoint,Destination);\n      peCubicBezierTo:\n        with PCubicBezierToElement(elem)^ do\n          dest.bezierCurveTo(ControlPoint1,ControlPoint2,Destination);\n      peArc: dest.arc(PArcElement(elem)^);\n      peOpenedSpline, peClosedSpline:\n        begin\n          with PSplineElement(elem)^ do\n          begin\n            setlength(pts, NbControlPoints);\n            move(Pointer(PSplineElement(elem)+1)^, pts[0], NbControlPoints*sizeof(TPointF));\n            if elemType = peOpenedSpline then\n              dest.openedSpline(pts, SplineStyle)\n            else\n              dest.closedSpline(pts, SplineStyle);\n            pts := nil;\n          end;\n        end;\n    end;\n  until not GoToNextElement(pos);\nend;\n\ninitialization\n\n  BGRAPathFactory := TBGRAPath;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapdf.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*******************************************************************************\n\n (c) 2025 - Massimo Magnano\n\n********************************************************************************\n\n PDF Document that allows you to specify ColorSpace and BitPerComponent of an image\n}\n\nunit BGRAPDF;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses Classes, SysUtils, fpPDF;\n\ntype\n  TPDFColorSpace = (\n    csDeviceCMYK, //Device-dependent names\n    csDeviceGray,\n    csDeviceN,\n    csDeviceRGB,\n    csCalGray,     //Device-independent names\n    csCalRGB,\n    csLab,\n    csICCBased,\n    csIndexed,     //Special names\n    csPattern,\n    csSeparation);\n\n  { TBGRAPDFImageItem }\n\n  TBGRAPDFImageItem = class(TPDFImageItem)\n  private\n    FBitsPerComponent: Integer;\n    FColorSpace: TPDFColorSpace;\n  public\n    constructor Create(ACollection: TCollection); override;\n\n    property ColorSpace: TPDFColorSpace read FColorSpace write FColorSpace;\n    property BitsPerComponent: Integer read FBitsPerComponent write FBitsPerComponent;\n  end;\n\n  { TBGRAPDFDocument }\n\n  TBGRAPDFDocument = class(TPDFDocument)\n  protected\n    function CreatePDFImages: TPDFImages; override;\n    procedure CreateImageEntry(ImgWidth, ImgHeight, NumImg: integer;\n                               out ImageDict: TPDFDictionary); override;\n\n  end;\n\nconst\n  PDFColorSpace : array[TPDFColorSpace] of String = (\n      'DeviceCMYK', //Device-dependent names\n      'DeviceGray',\n      'DeviceN',\n      'DeviceRGB',\n      'CalGray',     //Device-independent names\n      'CalRGB',\n      'Lab',\n      'ICCBased',\n      'Indexed',     //Special names\n      'Pattern',\n      'Separation');\n\n\nimplementation\n\ntype\n    //MaxM: Only to have access to protected methods,\n    //      What's the point of making Add methods protected remains a mystery?\n    TBGRAPDFDictionary = class(TPDFDictionary)\n    end;\n\n{ TBGRAPDFImageItem }\n\nconstructor TBGRAPDFImageItem.Create(ACollection: TCollection);\nbegin\n  inherited Create(ACollection);\n\n  FColorSpace:= csDeviceRGB;\n  FBitsPerComponent:= 8;\nend;\n\n{ TBGRAPDFDocument }\n\nfunction TBGRAPDFDocument.CreatePDFImages: TPDFImages;\nbegin\n  Result:=TPDFImages.Create(Self, TBGRAPDFImageItem);\nend;\n\nprocedure TBGRAPDFDocument.CreateImageEntry(ImgWidth, ImgHeight, NumImg: integer;\n                                            out ImageDict: TPDFDictionary);\nvar\n  N: TPDFName;\n  ADict: TPDFDictionary;\n  i: integer;\n  lXRef: integer;\n  curImg: TBGRAPDFImageItem;\n\nbegin\n  //MaxM: There is no way to Replace ColorSpace Dictionary Item, the Name property is readonly for no reason\n  //      So we copy the entire code from fpc source\n\n  curImg:= TBGRAPDFImageItem(Images[NumImg]);\n\n  lXRef := GlobalXRefCount; // reference to be used later\n\n  ImageDict:=CreateGlobalXRef.Dict;\n  TBGRAPDFDictionary(ImageDict).AddName('Type','XObject');\n  TBGRAPDFDictionary(ImageDict).AddName('Subtype','Image');\n  TBGRAPDFDictionary(ImageDict).AddInteger('Width',ImgWidth);\n  TBGRAPDFDictionary(ImageDict).AddInteger('Height',ImgHeight);\n\n  if (curImg <> nil)\n  then begin\n         TBGRAPDFDictionary(ImageDict).AddName('ColorSpace', PDFColorSpace[curImg.FColorSpace]);\n         TBGRAPDFDictionary(ImageDict).AddInteger('BitsPerComponent', curImg.FBitsPerComponent);\n       end\n  else begin\n         TBGRAPDFDictionary(ImageDict).AddName('ColorSpace','DeviceRGB');\n         TBGRAPDFDictionary(ImageDict).AddInteger('BitsPerComponent',8);\n       end;\n\n  N:=CreateName('I'+IntToStr(NumImg)); // Needed later\n  TBGRAPDFDictionary(ImageDict).AddElement('Name',N);\n\n  // now find where we must add the image xref - we are looking for \"Resources\"\n  for i := 1 to GlobalXRefCount-1 do\n  begin\n    ADict:=GlobalXRefs[i].Dict;\n    if ADict.ElementCount > 0 then\n    begin\n      if (ADict.Values[0] is TPDFName) and ((ADict.Values[0] as TPDFName).Name='Page') then\n      begin\n        ADict:=ADict.ValueByName('Resources') as TPDFDictionary;\n        ADict:=TPDFDictionary(ADict.FindValue('XObject'));\n        if Assigned(ADict) then\n        begin\n          TBGRAPDFDictionary(ADict).AddReference(N.Name, lXRef);\n        end;\n      end;\n    end;\n  end;\nend;\n\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapen.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Configuration and computation of pen style and width, as well as line caps and join styles.)\n\n  A line consists in two points.\n  A polyline consists in one or more lines, defined by two points or more.\n  A poly-polyline consists in a series of polylines, defined by polyline points\n  separated by empty points (see EmptyPointF and EmptyPoint)\n}\nunit BGRAPen;\n\n{$mode objfpc}{$H+}\ninterface\n\nuses\n  SysUtils, BGRAGraphics, BGRABitmapTypes, BGRATransform;\n\nvar   //predefined pen styles\n  SolidPenStyle, DashPenStyle, DotPenStyle, DashDotPenStyle, DashDotDotPenStyle, ClearPenStyle: TBGRAPenStyle;\n\ntype\n  TPenJoinStyle = BGRAGraphics.TPenJoinStyle;\n  TPenEndCap = BGRAGraphics.TPenEndCap;\n\n  { Class to hold pen stroker configuration and compute path }\n  TBGRAPenStroker = class(TBGRACustomPenStroker)\n    protected\n      { Pen style can be defined by PenStyle property of by CustomPenStyle property.\n      When PenStyle property is assigned, CustomPenStyle property is assigned the actual\n      pen pattern. }\n      FCustomPenStyle: TBGRAPenStyle;\n      FPenStyle: TPenStyle;\n      FArrow: TBGRACustomArrow;\n      FArrowOwned: boolean;\n      FOriginalStrokeMatrix,FStrokeMatrix,FStrokeMatrixInverse: TAffineMatrix;\n      FStrokeZoom: single;\n      FStrokeMatrixIdentity: boolean;\n      FLineCap: TPenEndCap;\n      FJoinStyle: TPenJoinStyle;\n      FMiterLimit: single;\n\n      function GetArrow: TBGRACustomArrow; override;\n      function GetArrowOwned: boolean; override;\n      function GetCustomPenStyle: TBGRAPenStyle; override;\n      function GetJoinStyle: TPenJoinStyle; override;\n      function GetLineCap: TPenEndCap; override;\n      function GetMiterLimit: single; override;\n      function GetPenStyle: TPenStyle; override;\n      function GetStrokeMatrix: TAffineMatrix; override;\n      procedure SetArrow(AValue: TBGRACustomArrow); override;\n      procedure SetArrowOwned(AValue: boolean); override;\n      procedure SetCustomPenStyle(AValue: TBGRAPenStyle); override;\n      procedure SetJoinStyle(AValue: TPenJoinStyle); override;\n      procedure SetLineCap(AValue: TPenEndCap); override;\n      procedure SetMiterLimit(AValue: single); override;\n      procedure SetPenStyle(AValue: TPenStyle); override;\n      procedure SetStrokeMatrix(const AValue: TAffineMatrix); override;\n    public\n      constructor Create;\n      destructor Destroy; override;\n      function ComputePolyline(const APoints: array of TPointF; AWidth: single; AClosedCap: boolean = true): ArrayOfTPointF; overload; override;\n      function ComputePolyline(const APoints: array of TPointF; AWidth: single; APenColor: TBGRAPixel; AClosedCap: boolean = true): ArrayOfTPointF; overload; override;\n      function ComputePolylineAutocycle(const APoints: array of TPointF; AWidth: single): ArrayOfTPointF; override;\n      function ComputePolygon(const APoints: array of TPointF; AWidth: single): ArrayOfTPointF; override;\n\n  end;\n\n  TBGRAPolyLineOption = (plRoundCapOpen, //specifies that the line ending is opened\n                         plCycle,        //specifies that it is a polygon\n                         plAutoCycle,    //specifies that a cycle must be used if the last point is the first point\n                         plNoStartCap,\n                         plNoEndCap);\n  TBGRAPolyLineOptions = set of TBGRAPolyLineOption;\n  TComputeArrowHeadProc = function(const APosition: TPointF; const ADirection: TPointF; const AWidth: single; const ACurrentPos: single): ArrayOfTPointF of object;\n\n{ Compute the path for a polyline }\nfunction ComputeWidePolylinePoints(const linepts: array of TPointF; width: single;\n          pencolor: TBGRAPixel; linecap: TPenEndCap; joinstyle: TPenJoinStyle; const penstyle: TBGRAPenStyle;\n          options: TBGRAPolyLineOptions; miterLimit: single = 2; arrow: TBGRACustomArrow = nil): ArrayOfTPointF;\n\n{ Compute the path for a poly-polyline }\nfunction ComputeWidePolyPolylinePoints(const linepts: array of TPointF; width: single;\n          pencolor: TBGRAPixel; linecap: TPenEndCap; joinstyle: TPenJoinStyle; const penstyle: TBGRAPenStyle;\n          options: TBGRAPolyLineOptions; miterLimit: single = 2; arrow: TBGRACustomArrow = nil): ArrayOfTPointF;\n\n{--------------------- Pixel line procedures --------------------------}\n{ These procedures take integer coordinates as parameters and do not handle pen styles and width.\n  They are faster and can be useful for drawing a simple frame }\n\n//aliased version\nprocedure BGRADrawLineAliased(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer; c: TBGRAPixel; DrawLastPixel: boolean; ADrawMode: TDrawMode = dmDrawWithTransparency); deprecated;\nprocedure BGRAEraseLineAliased(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer; alpha: byte; DrawLastPixel: boolean); deprecated;\n\n//antialiased version\nprocedure BGRADrawLineAntialias({%H-}dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  c: TBGRAPixel; DrawLastPixel: boolean; LinearBlend : boolean = false); overload; deprecated;\nprocedure BGRAEraseLineAntialias(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  calpha: byte; DrawLastPixel: boolean); overload; deprecated;\n\n//antialiased version with bicolor dashes (to draw a frame)\nprocedure BGRADrawLineAntialias(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  c1, c2: TBGRAPixel; dashLen: integer; DrawLastPixel: boolean; var DashPos: integer; LinearBlend : boolean = false); overload; deprecated;\n\n//length added to ensure accepable alpha join (using TBGRAMultishapeFiller is still better)\nfunction GetAlphaJoinFactor(alpha: byte): single;\n\n//create standard brush texture\nfunction CreateBrushTexture(prototype: TBGRACustomBitmap; brushstyle: TBrushStyle; PatternColor, BackgroundColor: TBGRAPixel;\n    width: integer = 8; height: integer = 8; penwidth: single = 1): TBGRACustomBitmap;\n\n//check special pen styles\nfunction IsSolidPenStyle(ACustomPenStyle: TBGRAPenStyle): boolean;\nfunction IsClearPenStyle(ACustomPenStyle: TBGRAPenStyle): boolean;\nfunction DuplicatePenStyle(ACustomPenStyle: array of single): TBGRAPenStyle;\nfunction PenStyleEqual(AStyle1, AStyle2: TBGRAPenStyle): boolean;\nfunction BGRAToPenStyle(ACustomPenStyle: TBGRAPenStyle): TPenStyle;\nfunction PenStyleToBGRA(APenStyle: TPenStyle): TBGRAPenStyle;\n\nimplementation\n\nuses math, BGRAClasses, BGRAPath;\n\nprocedure BGRADrawLineAliased(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  c: TBGRAPixel; DrawLastPixel: boolean; ADrawMode: TDrawMode);\nbegin\n  dest.DrawLine(x1,y1,x2,y2, c,DrawLastPixel, ADrawMode);\nend;\n\nprocedure BGRAEraseLineAliased(dest: TBGRACustomBitmap; x1, y1, x2,\n  y2: integer; alpha: byte; DrawLastPixel: boolean);\nbegin\n  dest.EraseLine(x1,y1,x2,y2,alpha,DrawLastPixel);\nend;\n\nprocedure BGRADrawLineAntialias(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  c: TBGRAPixel; DrawLastPixel: boolean; LinearBlend : boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if c.alpha = 0 then exit;\n  if LinearBlend then\n    dest.SolidBrush(b, c,dmLinearBlend)\n  else\n    dest.SolidBrush(b, c,dmDrawWithTransparency);\n  dest.DrawLineAntialias(x1,y1,x2,y2, b,DrawLastPixel);\nend;\n\nprocedure BGRAEraseLineAntialias(dest: TBGRACustomBitmap; x1, y1, x2,\n  y2: integer; calpha: byte; DrawLastPixel: boolean);\nbegin\n  dest.EraseLineAntialias(x1,y1,x2,y2,calpha,DrawLastPixel);\nend;\n\nprocedure BGRADrawLineAntialias(dest: TBGRACustomBitmap; x1, y1, x2, y2: integer;\n  c1, c2: TBGRAPixel; dashLen: integer; DrawLastPixel: boolean; var DashPos: integer; LinearBlend : boolean);\nvar\n  b1, b2: TUniversalBrush;\nbegin\n  if (c1.alpha=0) and (c2.alpha=0) then exit;\n  if LinearBlend then\n  begin\n    dest.SolidBrush(b1, c1,dmLinearBlend);\n    dest.SolidBrush(b2, c2,dmLinearBlend);\n  end\n  else\n  begin\n    dest.SolidBrush(b1, c1,dmDrawWithTransparency);\n    dest.SolidBrush(b2, c2,dmDrawWithTransparency);\n  end;\n  dest.DrawLineAntialias(x1,y1,x2,y2, b1,b2, dashLen,dashPos,DrawLastPixel);\nend;\n\nfunction GetAlphaJoinFactor(alpha: byte): single;\nvar t: single;\nbegin\n  if alpha = 255 then result := 1 else\n  begin\n    result := (power(20,alpha/255)-1)/19*0.5;\n    t := power(alpha/255,40);\n    result := result*(1-t)+t*0.82;\n  end;\nend;\n\nfunction CreateBrushTexture(prototype: TBGRACustomBitmap; brushstyle: TBrushStyle;\n  PatternColor, BackgroundColor: TBGRAPixel; width: integer = 8; height: integer = 8; penwidth: single = 1): TBGRACustomBitmap;\nbegin\n  result := prototype.CreateBrushTexture(brushstyle, PatternColor, BackgroundColor, width,height, penwidth);\nend;\n\nfunction IsSolidPenStyle(ACustomPenStyle: TBGRAPenStyle): boolean;\nbegin\n  result := ACustomPenStyle = nil;\nend;\n\nfunction IsClearPenStyle(ACustomPenStyle: TBGRAPenStyle): boolean;\nbegin\n  if (length(ACustomPenStyle)=1) and (ACustomPenStyle[0]=0) then\n    result := true\n  else\n    result := false;\nend;\n\nfunction DuplicatePenStyle(ACustomPenStyle: array of single): TBGRAPenStyle;\nvar\n  i: Integer;\nbegin\n  setlength(result,length(ACustomPenStyle));\n  for i := 0 to high(result) do\n    result[i]:= ACustomPenStyle[i];\nend;\n\nfunction BGRAToPenStyle(ACustomPenStyle: TBGRAPenStyle): TPenStyle;\nbegin\n  if IsSolidPenStyle(ACustomPenStyle) then exit(psSolid);\n  if IsClearPenStyle(ACustomPenStyle) then exit(psClear);\n  if PenStyleEqual(ACustomPenStyle, DashPenStyle) then exit(psDash);\n  if PenStyleEqual(ACustomPenStyle, DotPenStyle) then exit(psDot);\n  if PenStyleEqual(ACustomPenStyle, DashDotPenStyle) then exit(psDashDot);\n  if PenStyleEqual(ACustomPenStyle, DashDotDotPenStyle) then exit(psDashDotDot);\n  exit(psPattern);\nend;\n\nfunction PenStyleToBGRA(APenStyle: TPenStyle): TBGRAPenStyle;\nbegin\n  Case APenStyle of\n  psSolid: result := SolidPenStyle;\n  psDash: result := DashPenStyle;\n  psDot: result := DotPenStyle;\n  psDashDot: result := DashDotPenStyle;\n  psDashDotDot: result := DashDotDotPenStyle;\n  else result := ClearPenStyle;\n  end;\nend;\n\nfunction PenStyleEqual(AStyle1, AStyle2: TBGRAPenStyle): boolean;\nvar\n  i: Integer;\nbegin\n  if length(AStyle1)<>length(AStyle2) then exit(false);\n  for i := 0 to high(AStyle1) do\n    if AStyle1[i] <> AStyle2[i] then exit(false);\n  exit(true);\nend;\n\nprocedure ApplyPenStyle(const leftPts, rightPts: array of TPointF; const penstyle: TBGRAPenStyle;\n    width: single; var posstyle: single; out styledPts: ArrayOfTPointF);\nvar\n  styleIndex :integer;\n  remainingDash: single;\n\n  procedure NextStyleIndex;\n  begin\n    inc(styleIndex);\n    if styleIndex = length(penstyle) then\n      styleIndex := 0;\n    IncF(remainingDash, penstyle[styleindex]);\n  end;\n\nvar\n  dashStartIndex: integer;\n  dashLeftStartPos,dashRightStartPos : TPointF;\n  betweenDash: boolean;\n\n  procedure StartDash(index: integer; t: single);\n  begin\n    dashStartIndex := index;\n    if t = 0 then\n    begin\n      dashLeftStartPos := leftPts[index];\n      dashRightStartPos := rightPts[index];\n    end else\n    begin\n      dashLeftStartPos := leftPts[index] + (leftPts[index+1]-leftPts[index])*t;\n      dashRightStartPos := rightPts[index] + (rightPts[index+1]-rightPts[index])*t;\n    end;\n    betweenDash := false;\n  end;\n\nvar\n  nbStyled: integer;\n\n  procedure AddPt(pt: TPointF);\n  begin\n    if (nbStyled = 0) or (pt <> styledPts[nbStyled-1]) then\n    begin\n      if nbStyled = length(styledPts) then\n        setlength(styledPts,nbStyled*2+4);\n      styledPts[nbStyled] := pt;\n      inc(nbStyled);\n    end;\n  end;\n\n  procedure StartPolygon;\n  begin\n    if nbStyled > 0 then AddPt(EmptyPointF);\n  end;\n\n  procedure EndDash(index: integer; t: single);\n  var dashLeftEndPos,dashRightEndPos: TPointF;\n    i: Integer;\n  begin\n    if t=0 then\n    begin\n      dashLeftEndPos := leftPts[index];\n      dashRightEndPos := rightPts[index];\n    end else\n    begin\n      dashLeftEndPos := leftPts[index] + (leftPts[index+1]-leftPts[index])*t;\n      dashRightEndPos := rightPts[index] + (rightPts[index+1]-rightPts[index])*t;\n    end;\n    StartPolygon;\n    AddPt(dashLeftStartPos);\n    for i := dashStartIndex+1 to index do\n      AddPt(leftPts[i]);\n    AddPt(dashLeftEndPos);\n    AddPt(dashRightEndPos);\n    for i := index downto dashStartIndex+1 do\n      AddPt(rightPts[i]);\n    AddPt(dashRightStartPos);\n    betweenDash := true;\n  end;\n\nvar\n  i,nb: integer;\n  styleLength: single;\n  len,lenDone: single;\n\nbegin\n  nbStyled := 0;\n  styledPts := nil;\n  if IsClearPenStyle(penstyle) then exit;\n  if IsSolidPenStyle(penstyle) then\n  begin\n    for i := 0 to high(leftPts) do AddPt(leftPts[i]);\n    for i := high(rightPts) downto 0 do AddPt(rightPts[i]);\n    setlength(styledPts,nbStyled);\n    exit;\n  end;\n  if length(leftPts) <> length(rightPts) then\n    raise Exception.Create('Dimension mismatch');\n  nb := length(leftPts);\n  if length(penstyle) mod 2 <> 0 then\n    raise Exception.Create('Pen style must contain an even number of values');\n  styleLength := 0;\n  styleIndex := -1;\n  remainingDash := 0;\n  betweenDash   := false;\n  for i := 0 to high(penstyle) do\n    if penstyle[i] <= 0 then\n      raise Exception.Create('Invalid pen dash length')\n    else\n    begin\n      IncF(styleLength, penstyle[i]);\n      if styleLength >= posstyle then\n      begin\n        styleIndex := i;\n        remainingDash := styleLength-posstyle;\n        break;\n      end;\n    end;\n  if styleIndex = -1 then\n  begin\n    styleIndex := 0;\n    remainingDash := penstyle[0];\n  end;\n\n  if styleIndex mod 2 = 0 then\n    StartDash(0, 0) else\n      betweenDash := true;\n  for i := 0 to nb-2 do\n  begin\n    len := (VectLen(leftPts[i+1].x-leftPts[i].x, leftPts[i+1].y-leftPts[i].y)+\n           VectLen(rightPts[i+1].x-rightPts[i].x, rightPts[i+1].y-rightPts[i].y))/(2*width);\n    lenDone := 0;\n    while lenDone < len do\n    begin\n      if len-lenDone < remainingDash then\n      begin\n        DecF(remainingDash, len-lenDone);\n        if remainingDash = 0 then NextStyleIndex;\n        lenDone := len;\n      end else\n      if betweenDash then\n      begin\n        IncF(lenDone, remainingDash);\n        StartDash(i, lenDone/len);\n        remainingDash := 0;\n        NextStyleIndex;\n      end else\n      begin\n        IncF(lenDone, remainingDash);\n        EndDash(i, lenDone/len);\n        remainingDash := 0;\n        NextStyleIndex;\n      end;\n    end;\n  end;\n  if not betweenDash then\n    EndDash(nb-1,0);\n  setlength(styledPts,nbStyled);\nend;\n\nfunction ComputeWidePolylinePoints(const linepts: array of TPointF; width: single;\n          pencolor: TBGRAPixel; linecap: TPenEndCap; joinstyle: TPenJoinStyle; const penstyle: TBGRAPenStyle;\n          options: TBGRAPolyLineOptions; miterLimit: single; arrow: TBGRACustomArrow): ArrayOfTPointF;\nconst oneOver512 = 1/512;\nvar\n  startArrowPos, startArrowDir, endArrowPos, endArrowDir: TPointF;\n  startArrowLinePos, endArrowLinePos: single;\n  borders : array of record\n              leftSide,rightSide: TLineDef;\n              len: single;\n              leftDir: TPointF;\n            end;\n  compPts: array of TPointF;\n  nbCompPts: integer;\n  revCompPts: array of TPointF;\n  nbRevCompPts: integer;\n  pts: array of TPointF;\n  roundPrecision: integer;\n  hw: single; //half-width\n\n  procedure AddPt(normal,rev: TPointF); overload;\n  begin\n    if (nbCompPts > 0) and (compPts[nbCompPts-1]=normal) and\n       (nbRevCompPts > 0) and (revCompPts[nbRevCompPts-1]=rev) then exit;\n\n    if nbCompPts = length(compPts) then\n     setlength(compPts, length(compPts)*2);\n    compPts[nbCompPts] := normal;\n    inc(nbCompPts);\n\n    if nbRevCompPts = length(revCompPts) then\n     setlength(revCompPts, length(revCompPts)*2);\n    revCompPts[nbRevCompPts] := rev;\n    inc(nbRevCompPts);\n  end;\n\n  procedure AddPt(xnormal,ynormal: single; xrev,yrev: single); overload;\n  begin\n    AddPt(PointF(xnormal,ynormal),PointF(xrev,yrev));\n  end;\n\n  procedure AddRoundCap(origin: TPointF; dir: TPointF; fromCenter: boolean; flipped: boolean= false);\n  var i: integer;\n      a,s,c: single;\n      offset,flipvalue: single;\n  begin\n    if fromCenter then offset := 0 else offset := -Pi/2;\n    if flipped then flipvalue := -1 else flipvalue := 1;\n    for i := 1 to RoundPrecision do\n    begin\n      a := i/(RoundPrecision+1)*Pi/2 + offset;\n      s := sin(a)*hw*flipvalue;\n      c := cos(a)*hw;\n      AddPt( PointF(origin.x+ dir.x*c - dir.y*s, origin.y + dir.y*c + dir.x*s),\n             PointF(origin.x+ dir.x*c + dir.y*s, origin.y + dir.y*c - dir.x*s) );\n    end;\n  end;\n\n  procedure AddRoundCapAlphaJoin(origin: TPointF; dir: TPointF; fromCenter: boolean; flipped: boolean= false);\n  var i: integer;\n      a,s,c: single;\n      offset,flipvalue: single;\n      t,alphaFactor: single; //antialiasing join\n  begin\n    if fromCenter then offset := 0 else offset := -Pi/2;\n    if flipped then flipvalue := -1 else flipvalue := 1;\n\n    alphaFactor := GetAlphaJoinFactor(pencolor.alpha);\n\n    for i := 1 to RoundPrecision do\n    begin\n      a := i/(RoundPrecision+1)*Pi/2 + offset;\n      s := sin(a)*hw*flipvalue;\n      c := cos(a);\n      t := (1 - c) * (0.2 + alphaFactor*0.3) + alphaFactor;\n      c := c * hw;\n      AddPt( PointF(origin.x+ dir.x*(c-t) - dir.y*s, origin.y + dir.y*(c-t) + dir.x*s),\n             PointF(origin.x+ dir.x*(c-t) + dir.y*s, origin.y + dir.y*(c-t) - dir.x*s) );\n    end;\n  end;\n\n  function ComputeRoundJoin(origin, pt1,pt2: TPointF): ArrayOfTPointF;\n  var a1,a2: single;\n      da: single;\n      precision,i: integer;\n  begin\n    a1 := arctan2(pt1.y-origin.y,pt1.x-origin.x);\n    a2 := arctan2(pt2.y-origin.y,pt2.x-origin.x);\n    if a2-a1 > Pi then DecF(a2, 2*Pi);\n    if a1-a2 > Pi then DecF(a1, 2*Pi);\n    if a2=a1 then\n    begin\n      setlength(result,1);\n      result[0] := pt1;\n      exit;\n    end;\n    da := a2-a1;\n    precision := round( VectLen( pt2.x-pt1.x, pt2.y-pt1.y) ) +2;\n    setlength(result,precision);\n    for i := 0 to precision-1 do\n      result[i] := origin + PointF( cos(a1+i/(precision-1)*da)*hw,\n                                    sin(a1+i/(precision-1)*da)*hw );\n  end;\n\nvar\n  joinLeft,joinRight: array of TPointF;\n  nbJoinLeft,nbJoinRight: integer;\n\n  procedure SetJoinLeft(joinpts: array of TPointF);\n  var i: integer;\n  begin\n    nbJoinLeft := length(joinpts);\n    if length(joinLeft) < nbJoinLeft then setlength(joinLeft,length(joinLeft)+nbJoinLeft+2);\n    for i := 0 to nbJoinLeft-1 do\n      joinLeft[i] := joinpts[i];\n  end;\n\n  procedure SetJoinRight(joinpts: array of TPointF);\n  var i: integer;\n  begin\n    nbJoinRight := length(joinpts);\n    if length(joinRight) < nbJoinRight then setlength(joinRight,length(joinRight)+nbJoinRight+2);\n    for i := 0 to nbJoinRight-1 do\n      joinRight[i] := joinpts[i];\n  end;\n\n  procedure AddJoin(index: integer);\n  var len,i: integer;\n  begin\n    len := nbJoinLeft;\n    if nbJoinRight > len then\n      len := nbJoinRight;\n    if len = 0 then exit;\n    if (len > 1) and (index <> -1) then\n    begin\n      if nbJoinLeft=1 then\n        AddPt(joinLeft[0], joinLeft[0] - 2*borders[Index].leftDir) else\n      if nbJoinRight=1 then\n        AddPt( joinRight[0] + 2* borders[index].leftDir, joinRight[0]);\n    end;\n    for i := 0 to len-1 do\n    begin\n      AddPt(joinLeft[i*nbJoinLeft div len],\n            joinRight[i*nbJoinRight div len]);\n    end;\n    if (len > 1) and (index <> -1) then\n    begin\n      if nbJoinLeft=1 then\n        AddPt(joinLeft[0], joinLeft[0] - 2*borders[index+1].leftDir) else\n      if nbJoinRight=1 then\n        AddPt(joinRight[0]+2*borders[index+1].leftDir, joinRight[0]);\n    end;\n  end;\n\nvar\n  NbPolyAcc: integer;\n\n  procedure FlushLine(lastPointIndex: integer);\n  var\n    enveloppe: arrayOfTPointF;\n    posstyle: single;\n    i,idxInsert: Integer;\n  begin\n    if lastPointIndex <> -1 then\n       AddPt( pts[lastPointIndex] + borders[lastPointIndex-1].leftDir,\n              pts[lastPointIndex] - borders[lastPointIndex-1].leftDir);\n\n    if (lastPointIndex = high(pts)) and (linecap = pecRound) and not (plNoEndCap in options) then\n    begin\n      if not (plRoundCapOpen in options) then\n        AddRoundCap(pts[high(pts)],borders[high(pts)-1].leftSide.dir,false)\n      else\n       AddRoundCapAlphaJoin(pts[high(pts)],\n            -borders[high(pts)-1].leftSide.dir, false,true);\n    end;\n    posstyle := 0;\n    ApplyPenStyle(slice(compPts,nbCompPts),slice(revCompPts,nbRevCompPts),penstyle,width,posstyle,enveloppe);\n\n    if Result=nil then\n    begin\n      Result := enveloppe;\n      NbPolyAcc := length(enveloppe);\n    end\n      else\n    if enveloppe <> nil then\n    begin\n      if NbPolyAcc +1+length(enveloppe) > length(Result) then\n        setlength(Result, length(Result)*2+1+length(enveloppe));\n\n      idxInsert := NbPolyAcc+1;\n      Result[idxInsert-1] := EmptyPointF;\n      for i := 0 to high(enveloppe) do\n        Result[idxInsert+i]:= enveloppe[i];\n      inc(NbPolyAcc, length(enveloppe)+1);\n    end;\n\n    nbCompPts := 0;\n    nbRevCompPts := 0;\n  end;\n\n  procedure CycleFlush;\n  var idx: integer;\n  begin\n    if Result = nil then\n    begin\n      if (nbCompPts > 1) and (nbRevCompPts > 1) then\n      begin\n        compPts[0] := compPts[nbCompPts-1];\n        revCompPts[0] := revCompPts[nbRevCompPts-1];\n      end;\n      FlushLine(-1);\n    end else\n    begin\n      if (nbCompPts >= 1) and (nbRevCompPts >= 1) and (NbPolyAcc >= 2) then\n      begin\n        Result[0] := compPts[nbCompPts-1];\n        idx := 0;\n        while (idx < high(Result)) and (not isEmptyPointF(Result[idx+1])) do inc(idx);\n        Result[idx] := revCompPts[nbRevCompPts-1];\n      end;\n      FlushLine(-1);\n    end;\n  end;\n\n  procedure FinalizeArray;\n  var arrowStartData, arrowEndData: ArrayOfTPointF;\n    finalNb,i,delta: integer;\n    hasStart,hasEnd: boolean;\n  begin\n    if assigned(arrow) and not isEmptyPointF(startArrowPos) then\n      arrowStartData := arrow.ComputeStartAt(startArrowPos, startArrowDir, width, startArrowLinePos)\n    else\n      arrowStartData := nil;\n    if assigned(arrow) and not isEmptyPointF(endArrowPos) then\n      arrowEndData := arrow.ComputeEndAt(endArrowPos, endArrowDir, width, endArrowLinePos)\n    else\n      arrowEndData := nil;\n    hasStart := length(arrowStartData)>0;\n    hasEnd := length(arrowEndData)>0;\n    finalNb := NbPolyAcc;\n    if hasStart then\n    begin\n      delta := length(arrowStartData)+1;\n      inc(finalNb, delta);\n    end else delta := 0;\n    if hasEnd then inc(finalNb, length(arrowEndData)+1);\n    SetLength(Result, finalNb);\n    if hasStart then\n    begin\n      for i := NbPolyAcc-1 downto 0 do\n        result[i+delta] := result[i];\n      result[delta-1] := EmptyPointF;\n      for i := 0 to high(arrowStartData) do\n        result[i] := arrowStartData[i];\n    end;\n    if hasEnd then\n    begin\n      inc(delta, NbPolyAcc+1);\n      result[delta-1] := EmptyPointF;\n      for i := 0 to high(arrowEndData) do\n        result[i+delta] := arrowEndData[i];\n    end;\n  end;\n\nvar\n  i: integer;\n  dir: TPointF;\n  leftInter,rightInter,diff: TPointF;\n  len,maxMiter: single;\n  littleBorder: TLineDef;\n  turn,maxDiff: single;\n  nbPts: integer;\n  ShouldFlushLine, HasLittleBorder, NormalRestart: Boolean;\n  pt1,pt2,pt3,pt4: TPointF;\n  linePos: single;\n  startArrowDone,endArrowDone: boolean;\n  wantedStartArrowPos,wantedEndArrowPos: single;\n\nbegin\n  Result := nil;\n\n  if (length(linepts)=0) or (width = 0) then exit;\n  if IsClearPenStyle(penstyle) then exit;\n  for i := 0 to high(linepts) do\n    if isEmptyPointF(linepts[i]) then\n    begin\n      result := ComputeWidePolyPolylinePoints(linepts,width,pencolor,linecap,joinstyle,penstyle,options,miterLimit,arrow);\n      exit;\n    end;\n\n  if (plAutoCycle in options) and (length(linepts) >= 2) and (linepts[0]=linepts[high(linepts)]) then\n    options := options + [plCycle];\n  if plNoEndCap in options then options := options - [plRoundCapOpen];\n\n  hw := width / 2;\n  case joinstyle of\n  pjsBevel,pjsRound: maxMiter := hw*1.001;\n  pjsMiter: if miterLimit < 1.001 then maxMiter := hw*1.001 else\n               maxMiter := hw*miterLimit;\n  else\n    raise Exception.Create('Unknown join style');\n  end;\n\n  roundPrecision := round(hw)+2;\n\n  nbPts := 0;\n  setlength(pts, length(linepts)+2);\n  for i := 0 to high(linepts) do\n    if (nbPts = 0) or (abs(linepts[i].x-pts[nbPts-1].x)>oneOver512) or (abs(linepts[i].y-pts[nbPts-1].y)>oneOver512) then\n    begin\n      pts[nbPts]:= linePts[i];\n      inc(nbPts);\n    end;\n  if (nbPts > 1) and (plCycle in options) and\n      (abs(pts[0].x-pts[nbPts-1].x)<=oneOver512) and\n      (abs(pts[0].y-pts[nbPts-1].y)<=oneOver512) then dec(nbPts);\n  if (plCycle in options) and (nbPts > 2) then\n  begin\n    if (abs(pts[0].x-pts[nbPts-1].x)<=oneOver512) and\n       (abs(pts[0].y-pts[nbPts-1].y)<=oneOver512) then\n    begin\n      pts[nbPts-1] := pts[0];\n    end else\n    begin\n      pts[nbPts] := pts[0];\n      inc(nbPts);\n    end;\n    pts[nbPts] := pts[1];\n    inc(nbPts);\n  end else\n    exclude(options, plCycle);\n\n  setlength(pts,nbPts);\n\n  if nbPts = 1 then\n  begin\n    if (linecap <> pecFlat) and ((linecap <> pecRound) or not (plRoundCapOpen in options)) then\n      result := ComputeEllipse(pts[0].x,pts[0].y,hw,hw);\n    exit;\n  end;\n\n  startArrowDir := EmptyPointF;\n  startArrowPos := EmptyPointF;\n  endArrowDir := EmptyPointF;\n  endArrowPos := EmptyPointF;\n  if Assigned(arrow) then\n  begin\n    wantedStartArrowPos:= arrow.StartOffsetX;\n    wantedEndArrowPos:= arrow.EndOffsetX;\n    startArrowDone := not arrow.IsStartDefined;\n    endArrowDone := not arrow.IsEndDefined;\n  end\n  else\n  begin\n    wantedStartArrowPos:= 0;\n    wantedEndArrowPos:= 0;\n    startArrowDone := true;\n    endArrowDone := true;\n  end;\n\n  //init computed points arrays\n  setlength(compPts, length(pts)*2+4);\n  setlength(revCompPts, length(pts)*2+4); //reverse order array\n  nbCompPts := 0;\n  nbRevCompPts := 0;\n  NbPolyAcc := 0;\n\n  if not endArrowDone then\n  begin\n    wantedEndArrowPos:= -wantedEndArrowPos*width;\n    linePos := 0;\n    for i := high(pts) downto 1 do\n    begin\n      dir := pts[i-1]-pts[i];\n      len := VectLen(dir);\n      dir.Scale(1/len);\n      if not endArrowDone and (linePos+len >= wantedEndArrowPos) then\n      begin\n        endArrowPos := pts[i];\n        endArrowDir := -dir;\n        endArrowLinePos := -linePos/width;\n        endArrowDone := true;\n        break;\n      end;\n      IncF(linePos, len);\n    end;\n  end;\n\n  wantedStartArrowPos:= -wantedStartArrowPos*width;\n  linePos := 0;\n  //compute borders\n  setlength(borders, length(pts)-1);\n  for i := 0 to high(pts)-1 do\n  begin\n    dir := pts[i+1]-pts[i];\n    len := VectLen(dir);\n    dir.Scale(1/len);\n    if not startArrowDone and (linePos+len >= wantedStartArrowPos) then\n    begin\n      startArrowPos := pts[i];\n      startArrowDir := -dir;\n      startArrowLinePos := -linePos/width;\n      startArrowDone := true;\n    end;\n    if (linecap = pecSquare) and ((not (plNoStartCap in options) and (i=0)) or\n      (not (plNoEndCap in options) and (i=high(pts)-1))) then //for square cap, just start and end further\n    begin\n      if i=0 then\n        pts[0].Offset(dir*(-hw));\n\n      if (i=high(pts)-1) then\n        pts[high(pts)].Offset(dir*hw);\n\n      //length changed\n      dir := pts[i+1]-pts[i];\n      len := VectLen(dir);\n      dir.Scale(1/len);\n    end else\n    if not (plNoStartCap in options) and (linecap = pecRound) and (i=0) and not (plCycle in options) then\n      AddRoundCap(pts[0], -dir ,true);\n\n    borders[i].len := len;\n    borders[i].leftDir := PointF(dir.y*hw,-dir.x*hw);\n    borders[i].leftSide.origin := pts[i] + borders[i].leftDir;\n    borders[i].leftSide.dir := dir;\n    borders[i].rightSide.origin := pts[i] - borders[i].leftDir;\n    borders[i].rightSide.dir := dir;\n    IncF(linePos, len);\n  end;\n\n  //first points\n  AddPt( pts[0] + borders[0].leftDir,\n         pts[0] - borders[0].leftDir );\n\n  setlength(joinLeft,1);\n  setlength(joinRight,1);\n  ShouldFlushLine := False;\n  //between first and last points\n  for i := 0 to high(pts)-2 do\n  begin\n    HasLittleBorder := false;\n\n    //determine u-turn\n    turn := borders[i].leftSide.dir ** borders[i+1].leftSide.dir;\n    if turn < -0.99999 then\n    begin\n      if joinstyle <> pjsRound then\n      begin\n        littleBorder.origin := pts[i+1] + borders[i].leftSide.dir*maxMiter;\n        littleBorder.dir := borders[i].leftDir;\n        HasLittleBorder := true;\n        nbJoinLeft := 0;\n        nbJoinRight:= 0;\n        ShouldFlushLine := True;\n      end else\n      begin\n        pt1 := pts[i+1] + borders[i].leftDir;\n        pt2 := pts[i+1] + borders[i].leftSide.dir*hw;\n        SetJoinLeft(ComputeRoundJoin(pts[i+1],pt1,pt2));\n        pt1 := pts[i+1] - borders[i].leftDir;\n        SetJoinRight(ComputeRoundJoin(pts[i+1],pt1,pt2));\n        AddJoin(-1);\n        FlushLine(-1);\n        nbJoinLeft := 0;\n        nbJoinRight:= 0;\n        AddPt(pts[i+1]+borders[i+1].leftDir,\n              pts[i+1]-borders[i+1].leftDir);\n      end;\n    end else\n    if turn > 0.99999 then //straight line\n    begin\n      pt1 := pts[i+1] + borders[i].leftDir;\n      pt2 := pts[i+2] + borders[i+1].leftDir;\n      SetJoinLeft([pt1, (pt1+pt2)*(1/2),pt2]);\n\n      pt1 := pts[i+1] - borders[i].leftDir;\n      pt2 := pts[i+2] - borders[i+1].leftDir;\n      SetJoinRight([pt1,(pt1+pt2)*(1/2),pt2]);\n    end else\n    begin\n      //determine turning left or right\n      turn := borders[i].leftSide.dir.x*borders[i+1].leftSide.dir.y - borders[i].leftSide.dir.y*borders[i+1].leftSide.dir.x;\n\n      maxDiff := borders[i].len;\n      if borders[i+1].len < maxDiff then\n        maxDiff := borders[i+1].len;\n      if penstyle <> nil then\n        if maxDiff > 2*width then maxDiff := 2*width;\n      maxDiff := VectLen(maxDiff, hw);\n\n      //leftside join\n      leftInter := IntersectLine( borders[i].leftSide, borders[i+1].leftSide );\n      diff := leftInter-pts[i+1];\n      len := VectLen(diff);\n      if (len > maxMiter) and (turn >= 0) then //if miter too far\n      begin\n        diff.Scale(1/len);\n        if joinstyle <> pjsRound then\n        begin\n          //compute little border\n          littleBorder.origin := pts[i+1]+diff*maxMiter;\n          littleBorder.dir := PointF(diff.y,-diff.x);\n          HasLittleBorder := true;\n\n          //intersect with each border\n          pt1 := IntersectLine(borders[i].leftSide, littleBorder);\n          pt2 := IntersectLine(borders[i+1].leftSide, littleBorder);\n          SetJoinLeft( [pt1, pt2] );\n        end else\n        begin\n          //perpendicular\n          pt1 := PointF(pts[i+1].x+borders[i].leftSide.dir.y*hw,\n                        pts[i+1].y-borders[i].leftSide.dir.x*hw);\n          pt2 := PointF(pts[i+1].x+borders[i+1].leftSide.dir.y*hw,\n                        pts[i+1].y-borders[i+1].leftSide.dir.x*hw);\n          SetJoinLeft(ComputeRoundJoin(pts[i+1],pt1,pt2));\n        end;\n      end else\n      if (len > maxDiff) and (turn <= 0) then //if inner intersection too far\n      begin\n        ShouldFlushLine := True;\n        nbJoinLeft := 0;\n      end else\n      begin\n        if (turn > 0) and (len > 1.0001*hw) then\n          SetJoinLeft([leftInter,leftInter]) else\n        begin\n          nbJoinLeft := 1;\n          joinLeft[0] := leftInter;\n        end;\n      end;\n\n      //rightside join\n      rightInter := IntersectLine( borders[i].rightSide, borders[i+1].rightSide );\n      diff := rightInter-pts[i+1];\n      len := VectLen(diff);\n      if (len > maxMiter) and (turn <= 0) then //if miter too far\n      begin\n        diff.Scale(1/len);\n\n        if joinstyle <> pjsRound then\n        begin\n          //compute little border\n          littleBorder.origin := pts[i+1] + diff*maxMiter;\n          littleBorder.dir := PointF(diff.y, -diff.x);\n          HasLittleBorder := true;\n\n          //intersect with each border\n          pt1 := IntersectLine(borders[i].rightSide, littleBorder);\n          pt2 := IntersectLine(borders[i+1].rightSide, littleBorder);\n          SetJoinRight( [pt1, pt2] );\n        end else\n        begin\n          //perpendicular\n          pt1 := PointF(pts[i+1].x-borders[i].rightSide.dir.y*hw,\n                        pts[i+1].y+borders[i].rightSide.dir.x*hw);\n          pt2 := PointF(pts[i+1].x-borders[i+1].rightSide.dir.y*hw,\n                        pts[i+1].y+borders[i+1].rightSide.dir.x*hw);\n          SetJoinRight(ComputeRoundJoin(pts[i+1],pt1,pt2));\n        end;\n      end else\n      if (len > maxDiff) and (turn >= 0) then //if inner intersection too far\n      begin\n        ShouldFlushLine := True;\n        nbJoinRight := 0;\n      end else\n      begin\n        if (turn < 0) and (len > 1.0001*hw) then\n          SetJoinRight([rightInter,rightInter]) else\n        begin\n          nbJoinRight := 1;\n          joinRight[0] := rightInter;\n        end;\n      end;\n    end;\n\n    if ShouldFlushLine then\n    begin\n      NormalRestart := True;\n      if HasLittleBorder then\n      begin\n        if turn >= 0 then\n        begin\n          //intersect with each border\n          pt1 := IntersectLine(borders[i].leftSide, littleBorder);\n          pt2 := IntersectLine(borders[i+1].leftSide, littleBorder);\n          pt3 := pts[i+1] - borders[i].leftDir;\n          pt4 := pts[i+1] + borders[i].leftDir;\n\n          AddPt(pt4,pt3);\n          AddPt(pt1,pt2);\n        end else\n        begin\n          //intersect with each border\n          pt1 := IntersectLine(borders[i+1].rightSide, littleBorder);\n          pt2 := IntersectLine(borders[i].rightSide, littleBorder);\n          pt3 := pts[i+1] + borders[i].leftDir;\n          pt4 := pts[i+1] - borders[i].leftDir;\n\n          AddPt(pt3,pt4);\n          AddPt(pt1,pt2);\n        end;\n\n        FlushLine(-1);\n\n        AddPt(pt2,pt1);\n      end else\n      if joinstyle = pjsRound then\n      begin\n\n        if {(penstyle= nil) and} (turn > 0) then\n        begin\n          pt1 := pts[i+1] + borders[i].leftDir;\n          pt2 := pts[i+1] + borders[i+1].leftDir;\n          pt3 := pts[i+1] - borders[i].leftDir;\n          pt4 := pts[i+1];\n\n          SetJoinLeft([pt1,pt1]);\n          SetJoinRight([pt3,pt4]);\n          AddJoin(-1);\n\n          SetJoinLeft(ComputeRoundJoin(pts[i+1],pt1,pt2));\n          nbJoinRight := 1;\n          joinRight[0] := pt4;\n          AddJoin(-1);\n          FlushLine(-1);\n        end else\n        if {(penstyle= nil) and} (turn < 0) then\n        begin\n          pt1 := pts[i+1] - borders[i].leftDir;\n          pt2 := pts[i+1] - borders[i+1].leftDir;\n          pt3 := pts[i+1] + borders[i].leftDir;\n          pt4 := pts[i+1];\n\n          SetJoinRight([pt1,pt1]);\n          SetJoinLeft([pt3,pt4]);\n          AddJoin(-1);\n\n          SetJoinRight(ComputeRoundJoin(pts[i+1],pt1,pt2));\n          nbJoinLeft := 1;\n          joinLeft[0] := pt4;\n          AddJoin(-1);\n          FlushLine(-1);\n        end else\n        if (nbCompPts > 1) and (nbRevCompPts > 1) then\n        begin\n          pt1 := pts[i+1]+borders[i].leftDir;\n          pt2 := pts[i+1]-borders[i].leftDir;\n          AddPt( pt1, pt2 );\n          FlushLine(-1);\n        end else\n        begin\n          FlushLine(i+1);\n        end;\n      end else\n      begin\n        FlushLine(i+1);\n        if turn > 0 then\n          AddPt( leftInter, pts[i+1]+borders[i].leftDir ) else\n        if turn < 0 then\n          AddPt( pts[i+1] - borders[i].leftDir, rightInter );\n      end;\n\n      If NormalRestart then\n        AddPt(pts[i+1]+borders[i+1].leftDir,\n              pts[i+1]-borders[i+1].leftDir);\n\n      ShouldFlushLine := false;\n    end else\n      AddJoin(i);\n  end;\n\n  if plCycle in options then\n    CycleFlush\n  else\n    FlushLine(high(pts));\n\n  FinalizeArray;\nend;\n\nfunction ComputeWidePolyPolylinePoints(const linepts: array of TPointF;\n  width: single; pencolor: TBGRAPixel; linecap: TPenEndCap;\n  joinstyle: TPenJoinStyle; const penstyle: TBGRAPenStyle;\n  options: TBGRAPolyLineOptions; miterLimit: single; arrow: TBGRACustomArrow): ArrayOfTPointF;\n\nvar\n  results: array of array of TPointF;\n  nbResults,nbTotalPts: integer;\n\n  procedure AddWidePolyline(startIndex,endIndexP1: integer);\n  var\n    tempWidePolyline: array of TPointF;\n    subPts: array of TPointF;\n    j : integer;\n  begin\n    if endIndexP1 > startIndex then\n    begin\n      setlength(subPts,endIndexP1-startIndex);\n      for j := startIndex to endIndexP1-1 do\n        subPts[j-startIndex] := linepts[j];\n      tempWidePolyline := ComputeWidePolylinePoints(subPts,width,pencolor,linecap,joinstyle,penstyle,options,miterLimit,arrow);\n      if length(results) = nbresults then\n        setlength(results,(nbresults+1)*2);\n      results[nbResults] := tempWidePolyline;\n      if nbResults <> 0 then inc(nbTotalPts);\n      inc(nbResults);\n      inc(nbTotalPts,length(tempWidePolyline));\n    end;\n  end;\n\nvar\n  start,i,j: integer;\n\nbegin\n  start := 0;\n  results := nil;\n  nbResults := 0;\n  nbTotalPts := 0;\n  for i := 0 to high(linepts) do\n    if isEmptyPointF(linepts[i]) then\n    begin\n      AddWidePolyline(start,i);\n      start := i+1;\n    end;\n  AddWidePolyline(start,length(linepts));\n\n  setlength(result, nbTotalPts);\n  start := 0;\n  for i := 0 to nbResults-1 do\n  begin\n    if i <> 0 then\n    begin\n      result[start] := EmptyPointF;\n      inc(start);\n    end;\n    for j := 0 to high(results[i]) do\n    begin\n      result[start] := results[i][j];\n      inc(start);\n    end;\n  end;\nend;\n\n{ TBGRAPenStroker }\n\nfunction TBGRAPenStroker.GetArrow: TBGRACustomArrow;\nbegin\n  result := FArrow;\nend;\n\nfunction TBGRAPenStroker.GetArrowOwned: boolean;\nbegin\n  result := FArrowOwned;\nend;\n\nfunction TBGRAPenStroker.GetCustomPenStyle: TBGRAPenStyle;\nbegin\n  result := DuplicatePenStyle(FCustomPenStyle);\nend;\n\nfunction TBGRAPenStroker.GetJoinStyle: TPenJoinStyle;\nbegin\n  result := FJoinStyle;\nend;\n\nfunction TBGRAPenStroker.GetLineCap: TPenEndCap;\nbegin\n  result := FLineCap;\nend;\n\nfunction TBGRAPenStroker.GetMiterLimit: single;\nbegin\n  result := FMiterLimit;\nend;\n\nfunction TBGRAPenStroker.GetPenStyle: TPenStyle;\nbegin\n  result := FPenStyle;\nend;\n\nfunction TBGRAPenStroker.GetStrokeMatrix: TAffineMatrix;\nbegin\n  result := FOriginalStrokeMatrix;\nend;\n\nprocedure TBGRAPenStroker.SetArrow(AValue: TBGRACustomArrow);\nbegin\n  FArrow := AValue;\nend;\n\nprocedure TBGRAPenStroker.SetArrowOwned(AValue: boolean);\nbegin\n  FArrowOwned := AValue;\nend;\n\nprocedure TBGRAPenStroker.SetCustomPenStyle(AValue: TBGRAPenStyle);\nbegin\n  if PenStyleEqual(FCustomPenStyle,AValue) then Exit;\n  FCustomPenStyle:= DuplicatePenStyle(AValue);\n  FPenStyle:= BGRAToPenStyle(AValue);\nend;\n\nprocedure TBGRAPenStroker.SetJoinStyle(AValue: TPenJoinStyle);\nbegin\n  FJoinStyle:= AValue;\nend;\n\nprocedure TBGRAPenStroker.SetLineCap(AValue: TPenEndCap);\nbegin\n  FLineCap:= AValue;\nend;\n\nprocedure TBGRAPenStroker.SetMiterLimit(AValue: single);\nbegin\n  FMiterLimit := AValue;\nend;\n\nprocedure TBGRAPenStroker.SetStrokeMatrix(const AValue: TAffineMatrix);\nbegin\n  if FOriginalStrokeMatrix=AValue then Exit;\n  FOriginalStrokeMatrix:=AValue;\n  FStrokeMatrix := AValue;\n  FStrokeMatrix[1,3] := 0;\n  FStrokeMatrix[2,3] := 0;\n  FStrokeZoom := max(VectLen(PointF(FStrokeMatrix[1,1],FStrokeMatrix[2,1])),\n          VectLen(PointF(FStrokeMatrix[1,2],FStrokeMatrix[2,2])));\n  if FStrokeZoom > 0 then\n    FStrokeMatrix := FStrokeMatrix * AffineMatrixScale(1/FStrokeZoom,1/FStrokeZoom);\n  if IsAffineMatrixInversible(FStrokeMatrix) then\n    FStrokeMatrixInverse := AffineMatrixInverse(FStrokeMatrix)\n  else\n  begin\n    FStrokeMatrixInverse := AffineMatrixIdentity;\n    FStrokeMatrix := AffineMatrixIdentity;\n  end;\n  FStrokeMatrixIdentity := IsAffineMatrixIdentity(FStrokeMatrix);\nend;\n\nprocedure TBGRAPenStroker.SetPenStyle(AValue: TPenStyle);\nbegin\n  if (FPenStyle=AValue) or (AValue=psPattern) then Exit;\n  FCustomPenStyle := PenStyleToBGRA(AValue);\n  FPenStyle := AValue;\nend;\n\nconstructor TBGRAPenStroker.Create;\nbegin\n  Style := psSolid;\n  LineCap := pecRound;\n  JoinStyle := pjsBevel;\n  MiterLimit := 2;\n  fillchar(FOriginalStrokeMatrix,sizeof(FOriginalStrokeMatrix),0);\n  StrokeMatrix := AffineMatrixIdentity;\nend;\n\ndestructor TBGRAPenStroker.Destroy;\nbegin\n  if ArrowOwned then FreeAndNil(FArrow);\n  inherited Destroy;\nend;\n\nfunction TBGRAPenStroker.ComputePolyline(const APoints: array of TPointF;\n  AWidth: single; AClosedCap: boolean): ArrayOfTPointF;\nvar\n  c: TBGRAPixel;\nbegin\n  if not AClosedCap then\n    c := BGRAWhite //needed for alpha junction\n  else\n    c := BGRAPixelTransparent;\n\n  if FStrokeMatrixIdentity then\n    result := ComputePolyline(APoints,AWidth*FStrokeZoom,c,AClosedCap)\n  else\n    result := FStrokeMatrix*ComputePolyline(FStrokeMatrixInverse*APoints,AWidth*FStrokeZoom,c,AClosedCap);\nend;\n\nfunction TBGRAPenStroker.ComputePolyline(const APoints: array of TPointF;\n  AWidth: single; APenColor: TBGRAPixel; AClosedCap: boolean): ArrayOfTPointF;\nvar options: TBGRAPolyLineOptions;\nbegin\n  options := [];\n  if Assigned(Arrow) and Arrow.IsStartDefined then include(options, plNoStartCap);\n  if Assigned(Arrow) and Arrow.IsEndDefined then include(options, plNoEndCap);\n  if not AClosedCap then include(options, plRoundCapOpen);\n  if FStrokeMatrixIdentity then\n    result := BGRAPen.ComputeWidePolylinePoints(APoints, AWidth*FStrokeZoom, APenColor, LineCap, JoinStyle, CustomPenStyle, options, MiterLimit, Arrow)\n  else\n    result := FStrokeMatrix*BGRAPen.ComputeWidePolylinePoints(FStrokeMatrixInverse*APoints, AWidth*FStrokeZoom, APenColor, LineCap, JoinStyle, CustomPenStyle, options, MiterLimit, Arrow);\nend;\n\nfunction TBGRAPenStroker.ComputePolylineAutocycle(\n  const APoints: array of TPointF; AWidth: single): ArrayOfTPointF;\nvar options: TBGRAPolyLineOptions;\nbegin\n  options := [plAutoCycle];\n  if Assigned(Arrow) and Arrow.IsStartDefined then include(options, plNoStartCap);\n  if Assigned(Arrow) and Arrow.IsEndDefined then include(options, plNoEndCap);\n  if FStrokeMatrixIdentity then\n    result := BGRAPen.ComputeWidePolylinePoints(APoints, AWidth*FStrokeZoom, BGRAPixelTransparent, LineCap, JoinStyle, CustomPenStyle, options, MiterLimit, Arrow)\n  else\n    result := FStrokeMatrix*BGRAPen.ComputeWidePolylinePoints(FStrokeMatrixInverse*APoints, AWidth*FStrokeZoom, BGRAPixelTransparent, LineCap, JoinStyle, CustomPenStyle, options, MiterLimit, Arrow)\nend;\n\nfunction TBGRAPenStroker.ComputePolygon(const APoints: array of TPointF;\n  AWidth: single): ArrayOfTPointF;\nbegin\n  if FStrokeMatrixIdentity then\n    result := BGRAPen.ComputeWidePolylinePoints(APoints, AWidth*FStrokeZoom, BGRAPixelTransparent, LineCap, JoinStyle, CustomPenStyle, [plCycle], MiterLimit)\n  else\n    result := FStrokeMatrix*BGRAPen.ComputeWidePolylinePoints(FStrokeMatrixInverse*APoints, AWidth*FStrokeZoom, BGRAPixelTransparent, LineCap, JoinStyle, CustomPenStyle, [plCycle], MiterLimit);\nend;\n\ninitialization\n\n  //special pen styles\n  SolidPenStyle := nil;\n\n  setlength(ClearPenStyle,1);\n  ClearPenStyle[0] := 0;\n\n  DashPenStyle := BGRAPenStyle(3,1);\n  DotPenStyle := BGRAPenStyle(1,1);\n  DashDotPenStyle := BGRAPenStyle(3,1,1,1);\n  DashDotDotPenStyle := BGRAPenStyle(3,1,1,1,1,1);\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraphongtypes.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Types used by Phong shading }\nunit BGRAPhongTypes;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes;\n\ntype\n\n  { Abstract class for Phong shading }\n TCustomPhongShading = class\n   protected\n     FLightPosition3D: TPoint3D;\n     function GetLightPosition: TPoint;\n     procedure SetLightPosition(AValue: TPoint);\n     function GetLightPositionF: TPointF;\n     procedure SetLightPositionF(AValue: TPointF);\n     function GetLightPositionZ: integer;\n     procedure SetLightPositionZ(AValue: integer);\n\n   public\n\n   { Render the specified map on the destination bitmap with one solid color. Map altitude\n     indicate the global height of the map. }\n   procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                  Color : TBGRAPixel);  overload; virtual; abstract;\n\n   { Render with a color map of the same size as the height map. Map altitude\n     indicate the global height of the map. }\n   procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                  ColorMap : TBGRACustomBitmap);  overload; virtual; abstract;\n\n   { Render with a scanner. Map altitude\n     indicate the global height of the map. }\n   procedure DrawScan(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer;\n                  ColorScan : IBGRAScanner); virtual; abstract;\n\n   property LightPosition: TPoint read GetLightPosition write SetLightPosition;\n   property LightPositionZ: integer read GetLightPositionZ write SetLightPositionZ;\n   property LightPositionF: TPointF read GetLightPositionF write SetLightPositionF;\n   property LightPosition3D: TPoint3D read FLightPosition3D write FLightPosition3D;\n end;\n\nimplementation\n\n{ TCustomPhongShading }\n\nfunction TCustomPhongShading.GetLightPositionF: TPointF;\nbegin\n  result := PointF(FLightPosition3D.X,FLightPosition3D.Y);\nend;\n\nprocedure TCustomPhongShading.SetLightPositionF(AValue: TPointF);\nbegin\n  FLightPosition3D.X := AValue.X;\n  FLightPosition3D.Y := AValue.Y;\nend;\n\nfunction TCustomPhongShading.GetLightPosition: TPoint;\nbegin\n  result := Point(round(FLightPosition3D.X),round(FLightPosition3D.Y));\nend;\n\nprocedure TCustomPhongShading.SetLightPosition(AValue: TPoint);\nbegin\n  FLightPosition3D.X := AValue.X;\n  FLightPosition3D.Y := AValue.Y;\nend;\n\nfunction TCustomPhongShading.GetLightPositionZ: integer;\nbegin\n  result := round(FLightPosition3D.Z);\nend;\n\nprocedure TCustomPhongShading.SetLightPositionZ(AValue: integer);\nbegin\n  FLightPosition3D.Z := AValue;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraphoxo.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Phoxo layered image format, with .oXo extension. }\nunit BGRAPhoxo;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRABitmapTypes, FPImage, BGRALayers, BGRABitmap, BGRAClasses, SysUtils, BMPcomn;\n\nconst\n  PhoxoHeaderMagic : packed array[1..4] of char = 'oXo ';\n  PhoxoBlock_CanvasSize = 1;\n  PhoxoBlock_Layer = 2;\n  PhoxoBlock_TextLayer = 3;\n  PhoxoBlock_DPI = 4;\n  PhoxoBlock_LayerCaption = 5;\n  PhoxoBlock_LazPaintBlendMode = 128;\n  PhoxoBlock_EndOfFile = 255;\n\ntype\n  { PhoXo file header }\n  TPhoxoHeader = packed record\n    magic: packed array[1..4] of char;\n    version: LongWord;\n  end;\n\n  { PhoXo block header }\n  TPhoxoBlockHeader = packed record\n    blockType : LongWord;\n    blockSize : LongWord;\n  end;\n\n  { PhoXo layer header }\n  TPhoxoLayerHeader = packed record\n    layerVisible: LongWord;\n    layerLimited: LongWord;\n    opacityPercent: LongWord;\n    bmpHeader: TBitMapInfoHeader;\n    redMask,greenMask,blueMask: LongWord;\n  end;\n\n  { Layered image in Phoxo format }\n  TBGRAPhoxoDocument = class(TBGRALayeredBitmap)\n  private\n    FDPIX,FDPIY: integer;\n  protected\n    function GetMimeType: string; override;\n    procedure AddLayerFromPhoxoData(const ABlockHeader: TPhoxoBlockHeader; ABlockData: PByte);\n    procedure InternalLoadFromStream(AStream: TStream);\n    procedure InternalSaveToStream(AStream: TStream);\n  public\n    constructor Create; overload; override;\n    constructor Create(AWidth, AHeight: integer); overload; override;\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure LoadFromFile(const filenameUTF8: string); override;\n    procedure SaveToStream(AStream: TStream); override;\n    procedure SaveToFile(const filenameUTF8: string); override;\n    class function CheckFormat(Stream: TStream; ARestorePosition: boolean): boolean; static;\n    class function ReadBlock(Stream: TStream; out AHeader: TPhoxoBlockHeader; out ABlockData: PByte): boolean; static;\n    property DPIX: integer read FDPIX;\n    property DPIY: integer read FDPIY;\n  end;\n\n  { Reader for Phoxo image (flattened) }\n\n  { TBGRAReaderOXO }\n\n  TBGRAReaderOXO = class(TFPCustomImageReader)\n  private\n    FWidth,FHeight,FNbLayers: integer;\n    FDPIX,FDPIY: integer;\n  protected\n    procedure ReadResolutionValues(Img: TFPCustomImage);\n    function InternalCheck(Stream: TStream): boolean; override;\n    procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n  public\n    property Width: integer read FWidth;\n    property Height: integer read FHeight;\n    property NbLayers: integer read FNbLayers;\n    property DPIX: integer read FDPIX;\n    property DPIY: integer read FDPIY;\n  end;\n\n  { Writer for Phoxo image (flattened) }\n  TBGRAWriterOXO = class(TFPCustomImageWriter)\n    protected\n      procedure InternalWrite (Str:TStream; Img:TFPCustomImage); override;\n  end;\n\nprocedure RegisterPhoxoFormat;\n\nimplementation\n\nuses BGRAUTF8;\n\nvar AlreadyRegistered: boolean;\n\nfunction ComputeRowStride(AWidth,ABitsPerPixel: Longword): Longword;\nbegin\n  result := ((AWidth * ABitsPerPixel + 31) div 32)*4;\nend;\n\nprocedure SwapLayerHeaderIfNeeded(var ALayerHeader: TPhoxoLayerHeader);\nbegin\n  with ALayerHeader do\n  begin\n    layerVisible := LEtoN(layerVisible);\n    layerLimited := LEtoN(layerLimited);\n    opacityPercent := LEtoN(opacityPercent);\n    {$IFNDEF ENDIAN_LITTLE}SwapBMPInfoHeader(bmpHeader);{$ENDIF}\n  end;\nend;\n\nprocedure RegisterPhoxoFormat;\nbegin\n  if AlreadyRegistered then exit;\n\n  BGRARegisterImageHandlers(ifPhoxo, TBGRAReaderOXO, TBGRAWriterOXO, True, 'PhoXo', 'oXo');\n\n  RegisterLayeredBitmapReader('oXo', TBGRAPhoxoDocument);\n  RegisterLayeredBitmapWriter('oXo', TBGRAPhoxoDocument);\n\n  AlreadyRegistered:= True;\nend;\n\n{ TBGRAWriterOXO }\n\nprocedure TBGRAWriterOXO.InternalWrite(Str: TStream; Img: TFPCustomImage);\nvar doc: TBGRAPhoxoDocument;\n  tempBmp: TBGRABitmap;\n  x,y: integer;\nbegin\n  doc := TBGRAPhoxoDocument.Create;\n  if Img is TBGRABitmap then doc.AddLayer(Img as TBGRABitmap) else\n  begin\n    tempBmp := TBGRABitmap.Create(img.Width,img.Height);\n    for y := 0 to Img.Height-1 do\n      for x := 0 to img.Width-1 do\n        tempBmp.SetPixel(x,y, FPColorToBGRA(img.Colors[x,y]));\n    doc.AddOwnedLayer(tempBmp);\n  end;\n  doc.SaveToStream(Str);\n  doc.Free;\nend;\n\n{ TBGRAReaderOXO }\n\nprocedure TBGRAReaderOXO.ReadResolutionValues(Img: TFPCustomImage);\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  begin\n    ResolutionUnit:=ruPixelsPerInch;\n    ResolutionX :=FDPIX;\n    ResolutionY :=FDPIY;\n  end;\n  {$ELSE}\n  Img.ResolutionUnit:=ruPixelsPerInch;\n  Img.ResolutionX :=FDPIX;\n  Img.ResolutionY :=FDPIY;\n  {$ENDIF}\nend;\n\nfunction TBGRAReaderOXO.InternalCheck(Stream: TStream): boolean;\nbegin\n  result := TBGRAPhoxoDocument.CheckFormat(Stream,True);\nend;\n\nprocedure TBGRAReaderOXO.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar layeredImage: TBGRAPhoxoDocument;\n  flat: TBGRABitmap;\n  x,y: integer;\nbegin\n  FWidth := 0;\n  FHeight:= 0;\n  FNbLayers:= 0;\n  FDPIX := 0;\n  FDPIY := 0;\n  layeredImage := TBGRAPhoxoDocument.Create;\n  try\n    layeredImage.LoadFromStream(Stream);\n    flat := layeredImage.ComputeFlatImage;\n    try\n      FWidth:= layeredImage.Width;\n      FHeight:= layeredImage.Height;\n      FNbLayers:= layeredImage.NbLayers;\n      FDPIX := layeredImage.DPIX;\n      FDPIY := layeredImage.DPIY;\n      if Img is TBGRACustomBitmap then\n        TBGRACustomBitmap(img).Assign(flat)\n      else\n      begin\n        Img.SetSize(flat.Width,flat.Height);\n        for y := 0 to flat.Height-1 do\n          for x := 0 to flat.Width-1 do\n            Img.Colors[x,y] := BGRAToFPColor(flat.GetPixel(x,y));\n      end;\n\n      ReadResolutionValues(img);\n\n    finally\n      flat.free;\n    end;\n  finally\n    layeredImage.Free;\n  end;\nend;\n\n{ TBGRAPhoxoDocument }\n\nfunction TBGRAPhoxoDocument.GetMimeType: string;\nbegin\n  Result:= 'image/phoxo';\nend;\n\nprocedure TBGRAPhoxoDocument.AddLayerFromPhoxoData(\n  const ABlockHeader: TPhoxoBlockHeader; ABlockData: PByte);\nvar\n  layerHeader: TPhoxoLayerHeader;\n  rawImageSize: LongWord;\n  rowStride: LongWord;\n  remaining: LongWord;\n  bmp: TBGRABitmap;\n  layerIndex,y,x: integer;\n  pSrc: PByte;\n  pDest: PBGRAPixel;\nbegin\n  remaining := ABlockHeader.blockSize;\n  if remaining < sizeof(TPhoxoLayerHeader) then raise EFormatError.Create('Block too small');\n  move(ABlockData^, {%H-}layerHeader, sizeof(layerHeader));\n  inc(ABlockData, sizeof(layerHeader));\n  dec(remaining, sizeof(layerHeader));\n  SwapLayerHeaderIfNeeded(layerHeader);\n\n  if layerHeader.bmpHeader.Compression <> BI_RGB then raise EFormatError.Create('Compression not supported');\n  if (layerHeader.bmpHeader.Width < 0) or (layerHeader.bmpHeader.Height < 0) then\n    raise EFormatError.Create('Invalid image size');\n  if int64(layerHeader.bmpHeader.Width)*layerHeader.bmpHeader.Height > maxLongint div 4 then\n    raise EOutOfMemory.Create('Image too big');\n  rowStride := ComputeRowStride(layerHeader.bmpHeader.Width,layerHeader.bmpHeader.BitCount);\n  rawImageSize := rowStride * layerHeader.bmpHeader.Height;\n\n  if rawImageSize > remaining then\n     raise EFormatError.Create('Invalid image size');\n\n  bmp := TBGRABitmap.Create(layerHeader.bmpHeader.Width, layerHeader.bmpHeader.Height);\n  layerIndex := AddOwnedLayer(bmp, (layerHeader.opacityPercent*255 + 50) div 100);\n  LayerVisible[layerIndex] := (layerHeader.layerVisible = 1);\n\n  case layerHeader.bmpHeader.BitCount of\n    8: begin\n      for y := bmp.Height-1 downto 0 do\n        begin\n          pSrc := ABlockData + (bmp.Height-1 - y)*rowStride;\n          pDest := bmp.ScanLine[y];\n          for x := bmp.Width-1 downto 0 do\n          begin\n            pDest^ := BGRA(pSrc^,pSrc^,pSrc^);\n            inc(pDest);\n            inc(pSrc,3);\n          end;\n        end;\n    end;\n    24: begin\n      for y := bmp.Height-1 downto 0 do\n        begin\n          pSrc := ABlockData + (bmp.Height-1 - y)*rowStride;\n          pDest := bmp.ScanLine[y];\n          for x := bmp.Width-1 downto 0 do\n          begin\n            pDest^ := BGRA((pSrc+2)^,(pSrc+1)^,pSrc^);\n            inc(pDest);\n            inc(pSrc,3);\n          end;\n        end;\n    end;\n    32: begin\n      move(ABlockData^, bmp.Data^, sizeof(TBGRAPixel)*bmp.NbPixels);\n      if bmp.LineOrder = riloTopToBottom then bmp.VerticalFlip;\n      if TBGRAPixel_RGBAOrder then bmp.SwapRedBlue;\n    end;\n  else\n    raise EFormatError.Create('Unsupported bit depth');\n  end;\n\n  inc(ABlockData, rawImageSize);\n  dec(remaining, rawImageSize);\n  if remaining >= 8 then\n  begin\n    LayerOffset[layerIndex] := Point(LEtoN(PLongInt(ABlockData)^),LEtoN((PLongInt(ABlockData)+1)^));\n    inc(ABlockData, 8);\n    dec(remaining, 8);\n  end;\nend;\n\nconstructor TBGRAPhoxoDocument.Create;\nbegin\n  inherited Create;\n  RegisterPhoxoFormat;\nend;\n\nconstructor TBGRAPhoxoDocument.Create(AWidth, AHeight: integer);\nbegin\n  inherited Create(AWidth, AHeight);\n  RegisterPhoxoFormat;\nend;\n\nprocedure TBGRAPhoxoDocument.LoadFromStream(AStream: TStream);\nbegin\n  OnLayeredBitmapLoadFromStreamStart;\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n  end;\nend;\n\nprocedure TBGRAPhoxoDocument.InternalLoadFromStream(AStream: TStream);\nvar blockHeader: TPhoxoBlockHeader;\n    blockData: PByte;\n    wCaption: UnicodeString;\n    i: Integer;\nbegin\n  if not CheckFormat(AStream,False) then\n    raise EFormatError.Create('File header is invalid');\n  Clear;\n  FDPIX := 0;\n  FDPIY := 0;\n  blockData := nil;\n  repeat\n    if not ReadBlock(AStream, blockHeader,blockData) then\n    begin\n      if NbLayers = 0 then\n        raise EFormatError.Create('Error reading block from file')\n      else\n        break;\n    end;\n    try\n      case blockHeader.blockType of\n        PhoxoBlock_CanvasSize:\n          begin\n            if blockHeader.blockSize < 8 then raise EFormatError.Create('Block too small');\n            SetSize(LEtoN(PLongWord(blockData)^),LEtoN((PLongWord(blockData)+1)^));\n          end;\n        PhoxoBlock_DPI:\n          begin\n            if blockHeader.blockSize >= 8 then\n            begin\n              FDPIX := LEtoN(PLongWord(blockData)^);\n              FDPIY := LEtoN((PLongWord(blockData)+1)^);\n            end;\n          end;\n        PhoxoBlock_Layer, PhoxoBlock_TextLayer:\n          AddLayerFromPhoxoData(blockHeader,blockData);\n        PhoxoBlock_LayerCaption:\n          begin\n            if (blockHeader.blockSize >= 2) and (NbLayers > 0) then\n            begin\n              setlength(wCaption, blockHeader.blockSize div 2);\n              for i := 1 to length(wCaption) do\n                Word(wCaption[i]) := LEtoN((PWord(blockData)+i-1)^);\n              if wCaption[1] = #1 then Delete(wCaption,1,1);\n              LayerName[NbLayers-1] := UTF8Encode(wCaption);\n\n            end;\n          end;\n        PhoxoBlock_LazPaintBlendMode:\n          begin\n            if (blockHeader.blockSize >= 2) and (NbLayers > 0) then\n            begin\n              setlength(wCaption, blockHeader.blockSize div 2);\n              for i := 1 to length(wCaption) do\n                Word(wCaption[i]) := LEtoN((PWord(blockData)+i-1)^);\n              BlendOperation[NbLayers-1] := StrToBlendOperation(UTF8Encode(wCaption));\n            end;\n          end;\n      end;\n    finally\n      FreeMem(blockData);\n    end;\n  until blockHeader.blockType = PhoxoBlock_EndOfFile;\nend;\n\nprocedure TBGRAPhoxoDocument.LoadFromFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmOpenRead or fmShareDenyWrite);\n  OnLayeredBitmapLoadStart(filenameUTF8);\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRAPhoxoDocument.SaveToStream(AStream: TStream);\nbegin\n  OnLayeredBitmapSaveToStreamStart;\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n  end;\nend;\n\nprocedure TBGRAPhoxoDocument.SaveToFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmCreate or fmShareDenyWrite);\n  OnLayeredBitmapSaveStart(filenameUTF8);\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRAPhoxoDocument.InternalSaveToStream(AStream: TStream);\n\n  procedure WriteFileHeader;\n  var fileHeader: TPhoxoHeader;\n  begin\n    fileHeader.magic := PhoxoHeaderMagic;\n    fileHeader.version := 1;\n    fileHeader.version := NtoLE(fileHeader.version);\n    AStream.WriteBuffer(fileHeader, sizeof(fileHeader));\n  end;\n\n  procedure WriteBlockHeader(blockType: LongWord; blockSize: LongWord);\n  var blockHeader: TPhoxoBlockHeader;\n  begin\n    blockHeader.blockType := NtoLE(blockType);\n    blockHeader.blockSize := NtoLE(blockSize);\n    AStream.WriteBuffer(blockHeader, sizeof(blockHeader));\n  end;\n\n  procedure WriteLongInt(value: longint);\n  begin\n    value := NtoLE(value);\n    AStream.WriteBuffer(value, sizeof(value));\n  end;\n\n  procedure WriteLayer(index: integer);\n  var wCaption: UnicodeString;\n      pCaption: PWord;\n\n      layerHeader: TPhoxoLayerHeader;\n      rowStride: LongWord;\n\n      temp,pdest: PByte;\n      i,x,y: integer;\n      psrc: PBGRAPixel;\n  begin\n    if LayerVisible[index] then\n      layerHeader.layerVisible := 1\n    else\n      layerHeader.layerVisible := 0;\n    layerHeader.layerLimited:= 0;\n    layerHeader.opacityPercent := (LayerOpacity[index]*100 + 127) div 255;\n    with layerHeader.bmpHeader do\n    begin\n      Size := $28;\n      Width := self.LayerBitmap[index].Width;\n      Height := self.LayerBitmap[index].Height;\n      Planes := 1;\n      BitCount := 32; //24-bit does not seem to be supported\n      Compression := BI_RGB;\n      SizeImage := 0;\n      XPelsPerMeter := 0;\n      YPelsPerMeter := 0;\n      ClrUsed := 0;\n      ClrImportant := 0;\n    end;\n    layerHeader.redMask := 0;\n    layerHeader.greenMask := 0;\n    layerHeader.blueMask := 0;\n\n    rowStride := ComputeRowStride(layerHeader.bmpHeader.Width, layerHeader.bmpHeader.BitCount);\n\n    WriteBlockHeader(PhoxoBlock_Layer, sizeof(layerHeader) + rowStride*layerHeader.bmpHeader.Height + sizeof(TPoint));\n    SwapLayerHeaderIfNeeded(layerHeader);\n    AStream.WriteBuffer(layerHeader,sizeof(layerHeader));\n    SwapLayerHeaderIfNeeded(layerHeader);\n\n    case layerHeader.bmpHeader.BitCount of\n      32: begin\n            if TBGRAPixel_RGBAOrder then self.LayerBitmap[index].SwapRedBlue;\n            for y := self.LayerBitmap[index].Height-1 downto 0 do\n              AStream.WriteBuffer(self.LayerBitmap[index].ScanLine[y]^, rowStride);\n            if TBGRAPixel_RGBAOrder then self.LayerBitmap[index].SwapRedBlue;\n          end;\n      24: begin\n            GetMem(temp, rowStride);\n            fillchar(temp^, rowStride, 0);\n            try\n              for y := self.LayerBitmap[index].Height-1 downto 0 do\n              begin\n                psrc := self.LayerBitmap[index].ScanLine[y];\n                pdest := temp;\n                for x := self.LayerBitmap[index].Width-1 downto 0 do\n                begin\n                  pdest^ := psrc^.blue; inc(pdest);\n                  pdest^ := psrc^.green; inc(pdest);\n                  pdest^ := psrc^.red; inc(pdest);\n                  inc(psrc);\n                end;\n                AStream.WriteBuffer(temp^, rowstride);\n              end;\n            finally\n              FreeMem(temp);\n            end;\n          end\n      else\n        raise exception.Create('Internal error');\n      end;\n\n    WriteLongInt(LayerOffset[index].X);\n    WriteLongInt(LayerOffset[index].Y);\n\n    if LayerName[index]<>'' then\n    begin\n      wCaption := UTF8ToUTF16(LayerName[index]);\n      WriteBlockHeader(PhoxoBlock_LayerCaption, length(wCaption)*2);\n      getmem(pCaption, length(wCaption)*2);\n      try\n        for i := 1 to length(wCaption) do\n          (pCaption+i-1)^ := NtoLE(Word(wCaption[i]));\n        AStream.WriteBuffer(pCaption^, length(wCaption)*2);\n      finally\n        freemem(pCaption);\n      end;\n    end;\n\n    if BlendOperation[index] <> boTransparent then\n    begin\n      wCaption := UTF8ToUTF16(BlendOperationStr[BlendOperation[index]]);\n      WriteBlockHeader(PhoxoBlock_LazPaintBlendMode, length(wCaption)*2);\n      getmem(pCaption, length(wCaption)*2);\n      try\n        for i := 1 to length(wCaption) do\n          (pCaption+i-1)^ := NtoLE(Word(wCaption[i]));\n        AStream.WriteBuffer(pCaption^, length(wCaption)*2);\n      finally\n        freemem(pCaption);\n      end;\n    end;\n  end;\n\nvar\n  i: Integer;\nbegin\n  WriteFileHeader;\n\n  WriteBlockHeader(PhoxoBlock_CanvasSize, 8);\n  WriteLongInt(Width);\n  WriteLongInt(Height);\n\n  if (DPIX <> 0) and (DPIY <> 0) then\n  begin\n    WriteBlockHeader(PhoxoBlock_DPI, 8);\n    WriteLongInt(DPIX);\n    WriteLongInt(DPIY);\n  end;\n\n  for i := 0 to NbLayers-1 do\n  begin\n    OnLayeredBitmapSaveProgress(round(i*100/NbLayers));\n    WriteLayer(i);\n  end;\n  OnLayeredBitmapSaveProgress(100);\n\n  WriteBlockHeader(PhoxoBlock_EndOfFile,0);\nend;\n\nclass function TBGRAPhoxoDocument.CheckFormat(Stream: TStream; ARestorePosition: boolean): boolean;\nvar header: TPhoxoHeader;\n  oldPos: int64;\nbegin\n  oldPos := Stream.Position;\n  if Stream.Read({%H-}header,sizeof(header))<>sizeof(header) then\n    result := false else\n  begin\n    header.version:= LEtoN(header.version);\n    if (header.magic <> PhoxoHeaderMagic) or (header.version <> 1) then\n      result := false\n    else\n      result := true;\n  end;\n  if ARestorePosition then Stream.Position:= oldPos;\nend;\n\nclass function TBGRAPhoxoDocument.ReadBlock(Stream: TStream; out\n  AHeader: TPhoxoBlockHeader; out ABlockData: PByte): boolean;\nbegin\n  ABlockData := nil;\n  if Stream.Read({%H-}AHeader,sizeof(AHeader)) <> sizeof(AHeader) then\n  begin\n    AHeader.blockType := 0;\n    AHeader.blockSize := 0;\n    result := false;\n    exit;\n  end;\n  AHeader.blockType := LEtoN(AHeader.blockType);\n  AHeader.blockSize := LEtoN(AHeader.blockSize);\n  if Stream.Position + AHeader.blockSize > Stream.Size then\n  begin\n    AHeader.blockSize := 0;\n    result := false;\n    exit;\n  end;\n  GetMem(ABlockData, AHeader.blockSize);\n  if Stream.Read(ABlockData^, AHeader.blockSize) <> AHeader.blockSize then\n  begin\n    FreeMem(ABlockData);\n    AHeader.blockSize := 0;\n    result := false;\n    exit;\n  end;\n  result := true;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapixel.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{=== Pixel types and functions ===}\n\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  {* Pointer for direct pixel access. Data is stored as a sequence of TBGRAPixel.\n     See [Tutorial 4](https://wiki.freepascal.org/BGRABitmap_tutorial_4) }\n  PBGRAPixel = ^TBGRAPixel;\n\n  {$IFNDEF BGRABITMAP_BGRAPIXEL}\n    {$IFDEF BGRABITMAP_USE_LCL}\n      {$IFDEF LCLgtk}\n        {$DEFINE BGRABITMAP_RGBAPIXEL}\n      {$ENDIF}\n      {$IFDEF LCLgtk2}\n        {$DEFINE BGRABITMAP_RGBAPIXEL}\n      {$ENDIF}\n      {$IFDEF DARWIN}\n\t\t{$IFNDEF LCLQt}\n\t\t\t{$DEFINE BGRABITMAP_RGBAPIXEL}\n\t\t{$ENDIF}\n      {$ENDIF}\n    {$ENDIF}\n  {$ENDIF}\n\n  {* Each pixel is a sequence of 4 bytes containing _blue_, _green_, _red_ and _alpha_ channel.\n     Values range from 0 to 255, color is in sRGB colorspace. The _alpha_ value of 0\n     is transparent and 255 is opaque. In the bitmap data, when the pixel is fully transparent,\n\t the RGB values are supposed to be set to zero. }\n  TBGRAPixel = packed record\n  private\n    { Calls function to compute intensity }\n    function GetClassIntensity: word;\n    { Calls function to compute lightness }\n    function GetClassLightness: word;\n    { Calls function to set intensity }\n    procedure SetClassIntensity(AValue: word);\n    { Calls function to set lightness }\n    procedure SetClassLightness(AValue: word);\n  public\n    {$IFDEF BGRABITMAP_RGBAPIXEL}\n    {** Channels if ordered RGBA ordered }\n    red, green, blue, alpha: byte;\n    {$ELSE}\n    {** Channels if ordered BGRA ordered }\n    blue, green, red, alpha: byte;\n    {$ENDIF}\n    class function New(const ARed,AGreen,ABlue,AAlpha:byte): TBGRAPixel;overload;static;\n    class function New(const ARed,AGreen,ABlue:byte): TBGRAPixel;overload;static;\n    {** Sets the pixel with given RGB values }\n    procedure FromRGB(ARed,AGreen,ABlue: Byte; AAlpha: Byte = 255);\n    {** Sets the pixel with given TColor }\n    procedure FromColor(AColor: TColor; AAlpha: Byte = 255);\n    {** Sets the pixel according to a color name or CSS expression }\n    procedure FromString(AStr: string);\n    {** Sets the pixel with given TFPColor  (16-bit per channel) }\n    procedure FromFPColor(AColor: TFPColor);\n    {** Extras RGBA channels }\n    procedure ToRGB(out ARed,AGreen,ABlue,AAlpha: Byte); overload;\n    {** Extras RGB channels }\n    procedure ToRGB(out ARed,AGreen,ABlue: Byte); overload;\n    {** Converts to TColor }\n    function ToColor: TColor;\n    {** Converts to a CSS string representation }\n    function ToString: string;\n    {** Compute grayscale equivalent }\n    function ToGrayscale(AGammaCorrection: boolean = true): TBGRAPixel;\n    {** Converts to TFPColor (16-bit per channel) }\n    function ToFPColor: TFPColor;\n    {** Check whether all channels are equal (this is generally not necessary to\n        use this fonction unless the RGB value of a transparent color matter) }\n    function EqualsExactly(constref AColor: TBGRAPixel): boolean;\n    {** Assign a TBGRAPixel to a TColor }\n    class Operator := (Source: TBGRAPixel): TColor;\n    {** Assign a TColor to a TBGRAPixel }\n    class Operator := (Source: TColor): TBGRAPixel;\n    {** Intensity of the color (how much channels are saturated) }\n    property Intensity: word read GetClassIntensity write SetClassIntensity;\n    {** Lightness of the color (the resulting lightness of combined channels) }\n    property Lightness: word read GetClassLightness write SetClassLightness;\n  end;\n\n  {** Checks if two pixels are equal. If they are both transparent,\n      RGB values are ignored }\n  operator = (const c1, c2: TBGRAPixel): boolean; inline;\n\nconst\n  {$IFDEF BGRABITMAP_RGBAPIXEL}\n  TBGRAPixel_RGBAOrder = True;\n  TBGRAPixel_RedByteOffset = 0;\n  TBGRAPixel_GreenByteOffset = 1;\n  TBGRAPixel_BlueByteOffset = 2;\n  {$ELSE}\n  {** Order of the channels (when BGRA) }\n  TBGRAPixel_RGBAOrder = False;\n  {** Offset of the blue channel (when BGRA) }\n  TBGRAPixel_BlueByteOffset = 0;\n  {** Offset of the green channel (when BGRA) }\n  TBGRAPixel_GreenByteOffset = 1;\n  {** Offset of the blue channel (when BGRA) }\n  TBGRAPixel_RedByteOffset = 2;\n  {$ENDIF}\n  {** Offset of the alpha channel }\n  TBGRAPixel_AlphaByteOffset = 3;\n  {$IFDEF ENDIAN_LITTLE}\n  { Bit shift for the red channel }\n  TBGRAPixel_RedShift = TBGRAPixel_RedByteOffset*8;\n  { Bit shift for the green channel }\n  TBGRAPixel_GreenShift = TBGRAPixel_GreenByteOffset*8;\n  { Bit shift for the blue channel }\n  TBGRAPixel_BlueShift = TBGRAPixel_BlueByteOffset*8;\n  { Bit shift for the alpha channel }\n  TBGRAPixel_AlphaShift = TBGRAPixel_AlphaByteOffset*8;\n  {$ELSE}\n  TBGRAPixel_RedShift = 24 - TBGRAPixel_RedByteOffset*8;\n  TBGRAPixel_GreenShift = 24 - TBGRAPixel_GreenByteOffset*8;\n  TBGRAPixel_BlueShift = 24 - TBGRAPixel_BlueByteOffset*8;\n  TBGRAPixel_AlphaShift = 24 - TBGRAPixel_AlphaByteOffset*8;\n  {$ENDIF}\n\n  {* Creates a pixel with given RGBA values }\n  function BGRA(red, green, blue, alpha: byte): TBGRAPixel; overload; inline;\n  {* Creates a opaque pixel with given RGB values }\n  function BGRA(red, green, blue: byte): TBGRAPixel; overload; inline;\n  {* Returns the intensity of a pixel. The intensity is the\n     maximum value reached by any component }\n  function GetIntensity(c: TBGRAPixel): word; inline;\n  {* Sets the intensity of a pixel }\n  function SetIntensity(c: TBGRAPixel; intensity: word): TBGRAPixel;\n  {* Returns the lightness of a pixel. The lightness is the\n     perceived brightness, 0 being black and 65535 being white }\n  function GetLightness(c: TBGRAPixel): word; overload;\n  {* Sets the lightness of a pixel }\n  function SetLightness(c: TBGRAPixel; lightness: word): TBGRAPixel; overload;\n  {* Sets the lightness quickly, by fading towards black if _lightness_ is\n      less than 32768, and fading towards white if _lightness_ is more\n      than 32768 }\n  function ApplyLightnessFast(color: TBGRAPixel; lightness: word): TBGRAPixel; inline;\n  {* Sets the intensity quickly, by fading towards black if _lightness_ is\n      less than 32768, and multiplying all components if _lightness_ is more\n      than 32768. In case of saturation, it fades towards white }\n  function ApplyIntensityFast(color: TBGRAPixel; lightness: LongWord): TBGRAPixel;\n  {* Combines two lightnesses together. A value of 32768 is neutral. The\n      result may exceed 65535 }\n  function CombineLightness(lightness1,lightness2: Int32or64): Int32or64;\n  {* Converts a color into grayscale }\n  function BGRAToGrayscale(c: TBGRAPixel): TBGRAPixel;\n  {* Converts a color into grayscale assuming linear colorspace }\n  function BGRAToGrayscaleLinear(c: TBGRAPixel): TBGRAPixel;\n  {* Create a gray color with the given _lightness_ }\n  function GrayscaleToBGRA(lightness: word): TBGRAPixel;\n  {* Merge two colors without gamma correction }\n  function MergeBGRA(c1, c2: TBGRAPixel): TBGRAPixel; overload;\n  {* Merge two colors without gamma correction. _weight1_ and _weight2_\n      indicates the weight of the color barycentre }\n  function MergeBGRA(c1: TBGRAPixel; weight1: integer; c2: TBGRAPixel; weight2: integer): TBGRAPixel; overload;\n  {* Merge two colors with gamma correction. _weight1_ and _weight2_\n      indicates the weight of the color barycentre }\n  function MergeBGRAWithGammaCorrection(c1: TBGRAPixel; weight1: byte; c2: TBGRAPixel; weight2: byte): TBGRAPixel;\n  {* Converts a TColor value into an opaque pixel }\n  function ColorToBGRA(color: TColor): TBGRAPixel; overload;\n  {* Converts a TColor value into a pixel with given _opacity_ }\n  function ColorToBGRA(color: TColor; opacity: byte): TBGRAPixel; overload;\n  {* Converts a pixel into a TColor value, discarding the alpha value }\n  function BGRAToColor(c: TBGRAPixel): TColor;\n  {* Fonction to divide by 257 (not quite the same as **shr** 8)}\n  function FastRoundDiv257(valueWord: LongWord): byte; inline;\n  {* Converts a TFPColor value into a pixel. Note that even if\n      TFPColor have 16-bit values, they are not considered as\n      gamma expanded }\n  function FPColorToBGRA(AValue: TFPColor): TBGRAPixel;\n  {* Converts a pixel into a TFPColor }\n  function BGRAToFPColor(AValue: TBGRAPixel): TFPColor; inline;\n  {* Converts a 16-bit packed color into a TBGRAPixel }\n  function Color16BitToBGRA(AColor: Word): TBGRAPixel;\n  {* Converts a TBGRAPixel into a 16-bit packed color }\n  function BGRAToColor16Bit(const AColor: TBGRAPixel): Word;\n  {* Computes the difference (with gamma correction) between two pixels,\n      taking into account all dimensions, including transparency. The\n      result ranges from 0 to 65535 }\n  function BGRAWordDiff(c1, c2: TBGRAPixel): word;\n  {* Computes the difference (with gamma correction) between two pixels,\n      taking into account all dimensions, including transparency. The\n      result ranges from 0 to 255 }\n  function BGRADiff(c1, c2: TBGRAPixel): byte;\n  {* Fast computation of difference, without weighing the alpha channel and without gamma correction}\n  function FastBGRALinearDiff(c1,c2: TBGRAPixel): byte;\n  {* Fast computation of difference, without weighing the alpha channel }\n  function FastBGRAExpandedDiff(c1,c2: TBGRAPixel): word;\n\n  {* Get height [0..1] stored in a TBGRAPixel }\n  function MapHeight(Color: TBGRAPixel): Single;\n\n  {* Get TBGRAPixel to store height [0..1] }\n  function MapHeightToBGRA(Height: Single; Alpha: Byte): TBGRAPixel;\n\ntype\n  {* Array of TBGRAPixel to be used as a buffer }\n  TBGRAPixelBuffer = packed array of TBGRAPixel;\n\n  {** Allocate a buffer of TBGRAPixel }\n  procedure AllocateBGRAPixelBuffer(var ABuffer: TBGRAPixelBuffer; ASize: integer);\n\ntype\n  {** Array of pixels, not to be used as a buffer }\n  ArrayOfTBGRAPixel = array of TBGRAPixel;\n  {** Merge given colors without gamma correction }\n  function MergeBGRA(const colors: array of TBGRAPixel): TBGRAPixel; overload;\n\ntype\n  {* Possible modes when drawing a pixel over another one }\n  TDrawMode = (\n    {** The pixel is replaced }\n    dmSet,\n    {** The pixel is replaced if the pixel over has an alpha value of 255 }\n    dmSetExceptTransparent,\n    {** The pixel is blend over the other one according to alpha values,\n        however no gamma correction is applied. In other words, the color\n        space is assumed to be linear }\n    dmLinearBlend,\n    {** The pixel is blend over the other one according to alpha values,\n        and a gamma correction is applied. In other word, the color\n        space is assumed to be sRGB }\n    dmDrawWithTransparency,\n    {** Values of all channels are combined with Xor. This is useful to\n        compute the binary difference, however it is not something that makes\n        much sense to display on the screen }\n    dmXor);\n\nconst\n  {** An alias for the linear blend, because it is faster than blending\n      with gamma correction }\n  dmFastBlend = dmLinearBlend;\n\ntype\n  {* Advanced blending modes. See [Paint.NET blend modes](http://www.brighthub.com/multimedia/photography/articles/18301.aspx)\n    and [Formulas](http://www.pegtop.net/delphi/articles/blendmodes/). Blending layers has two steps. The first one is\n    to apply the blend operations listed below, and the second is the actual merging of the colors }\n  TBlendOperation = (\n    {** Simple blend, except that it forces a linear merge so it is equivalent to _dmLinearBlend_ }\n    boLinearBlend,\n    {** Simple blend. It is equivalent to _dmLinearBlend_ or _dmDrawWithTransparency_ }\n    boTransparent,\n    {** Lighting blend modes (tends to increase the luminosity) }\n    boLighten, boScreen, boAdditive, boLinearAdd, boColorDodge, boDivide, boNiceGlow, boSoftLight, boHardLight,\n    {** Masking blend modes (tends to decrease the luminosity) }\n    boGlow, boReflect, boOverlay, boDarkOverlay, boDarken, boMultiply, boColorBurn,\n    {** Difference blend modes }\n    boDifference, boLinearDifference, boExclusion, boLinearExclusion, boSubtract, boLinearSubtract, boSubtractInverse, boLinearSubtractInverse,\n    {** Negation blend modes }\n    boNegation, boLinearNegation,\n    {** Xor blend mode. It is sightly different from _dmXor_ because the alpha value is used like in other blends modes }\n    boXor,\n    {** SVG implementation of soft light }\n    boSvgSoftLight,\n    {** Apply mask }\n    boMask,\n    {** Standard HSL colorspace }\n    boLinearMultiplySaturation, boLinearHue, boLinearColor, boLinearLightness, boLinearSaturation,\n    {** Corrected HSL colorspace (GSB) }\n    boCorrectedHue, boCorrectedColor, boCorrectedLightness, boCorrectedSaturation\n    );\n\nconst\n  {** Alias to glow that express that this blend mode masks the part where the top layer is black }\n  boGlowMask = boGlow;\n  {** Alias because linear or non linear multiply modes are identical }\n  boLinearMultiply = boMultiply;\n  {** Alias to express that dark overlay is simply an overlay with gamma correction }\n  boNonLinearOverlay = boDarkOverlay;\n\nconst\n  {** String constants for blend modes }\n  BlendOperationStr : array[TBlendOperation] of string\n  = ('LinearBlend', 'Transparent',\n     'Lighten', 'Screen', 'Additive', 'LinearAdd', 'ColorDodge', 'Divide', 'NiceGlow', 'SoftLight', 'HardLight',\n     'Glow', 'Reflect', 'Overlay', 'DarkOverlay', 'Darken', 'Multiply', 'ColorBurn',\n     'Difference', 'LinearDifference', 'Exclusion', 'LinearExclusion', 'Subtract', 'LinearSubtract', 'SubtractInverse', 'LinearSubtractInverse',\n     'Negation', 'LinearNegation', 'Xor', 'SvgSoftLight', 'Mask', 'LinearMultiplySaturation',\n     'LinearHue', 'LinearColor', 'LinearLightness', 'LinearSaturation',\n     'CorrectedHue', 'CorrectedColor', 'CorrectedLightness', 'CorrectedSaturation');\n\n  {** Returns the blend mode expressed by the string }\n  function StrToBlendOperation(str: string): TBlendOperation;\n\ntype\n  {* Specifies how a palette handles the alpha channel }\n  TAlphaChannelPaletteOption = (\n    {** The alpha channel is ignored. The alpha channel is considered to be stored elsewhere }\n    acIgnore,\n    {** One entry is allocated the fully transparent color }\n    acTransparentEntry,\n    {** The alpha channel is fully embedded in the palette so that a color is identified by its four RGBA channels }\n    acFullChannelInPalette);\n\n  {* Dithering algorithms that specifies how to handle colors that are not found in the palette }\n  TDitheringAlgorithm = (\n    {** The nearest color is to be used instead }\n    daNearestNeighbor,\n    {** The nearest color may be used however another color may be used to compensate for the error,\n        following Floyd-Steinberg algorithm }\n    daFloydSteinberg);\n\n{$DEFINE INCLUDE_INTERFACE}\n{$i basiccolorspace.inc}\n\n{$DEFINE INCLUDE_INTERFACE}\n{$i extendedcolorspace.inc}\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$i basiccolorspace.inc}\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$i extendedcolorspace.inc}\n\nfunction StrToBlendOperation(str: string): TBlendOperation;\nvar op: TBlendOperation;\nbegin\n  result := boTransparent;\n  str := LowerCase(str);\n  for op := low(TBlendOperation) to high(TBlendOperation) do\n    if str = LowerCase(BlendOperationStr[op]) then\n    begin\n      result := op;\n      exit;\n    end;\nend;\n\n{************************** Color functions **************************}\n\nprocedure AllocateBGRAPixelBuffer(var ABuffer: TBGRAPixelBuffer; ASize: integer);\nbegin\n  if ASize > length(ABuffer) then\n    setlength(ABuffer, max(length(ABuffer)*2,ASize));\nend;\n\nfunction BGRA(red, green, blue, alpha: byte): TBGRAPixel;\nbegin\n  LongWord(result) := (red shl TBGRAPixel_RedShift) or\n                   (green shl TBGRAPixel_GreenShift) or\n                   (blue shl TBGRAPixel_BlueShift) or\n                   (alpha shl TBGRAPixel_AlphaShift);\nend;\n\nfunction BGRA(red, green, blue: byte): TBGRAPixel; overload;\nbegin\n  LongWord(result) := (red shl TBGRAPixel_RedShift) or\n                   (green shl TBGRAPixel_GreenShift) or\n                   (blue shl TBGRAPixel_BlueShift) or\n                   (255 shl TBGRAPixel_AlphaShift);\nend;\n\noperator = (const c1, c2: TBGRAPixel): boolean;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    Result := True\n  else\n    Result := (c1.alpha = c2.alpha) and (c1.red = c2.red) and\n      (c1.green = c2.green) and (c1.blue = c2.blue);\nend;\n\nfunction GetIntensity(c: TBGRAPixel): word;\nbegin\n  Result := c.red;\n  if c.green > Result then\n    Result := c.green;\n  if c.blue > Result then\n    Result := c.blue;\n  result := GammaExpansionTab[Result];\nend;\n\nfunction SetIntensity(c: TBGRAPixel; intensity: word): TBGRAPixel;\nbegin\n  result := GammaCompression(SetIntensity(GammaExpansion(c),intensity));\nend;\n\nfunction GetLightness(c: TBGRAPixel): word;\nbegin\n  result := GetLightness(GammaExpansion(c));\nend;\n\nfunction SetLightness(c: TBGRAPixel; lightness: word): TBGRAPixel;\nbegin\n  result := GammaCompression(SetLightness(GammaExpansion(c),lightness));\nend;\n\nfunction ApplyLightnessFast(color: TBGRAPixel; lightness: word): TBGRAPixel;\nvar\n  r,g,b: word;\n  lightness256: byte;\nbegin\n  if lightness <= 32768 then\n  begin\n    if lightness = 32768 then\n      result := color else\n    begin\n      lightness256 := GammaCompressionTab[lightness shl 1];\n      result := BGRA(color.red * lightness256 shr 8, color.green*lightness256 shr 8,\n                     color.blue * lightness256 shr 8, color.alpha);\n    end;\n  end else\n  begin\n    if lightness = 65535 then\n      result := BGRA(255,255,255,color.alpha) else\n    begin\n      dec(lightness, 32767);\n      r := GammaExpansionTab[color.red];\n      g := GammaExpansionTab[color.green];\n      b := GammaExpansionTab[color.blue];\n      result := BGRA(GammaCompressionTab[ r + (not r)*lightness shr 15 ],\n                     GammaCompressionTab[ g + (not g)*lightness shr 15 ],\n                     GammaCompressionTab[ b + (not b)*lightness shr 15 ],\n                     color.alpha);\n    end;\n  end;\nend;\n\nfunction ApplyIntensityFast(color: TBGRAPixel; lightness: LongWord): TBGRAPixel;\nvar\n    maxValue,invMaxValue,r,g,b: LongWord;\n    lightness256: byte;\nbegin\n  if lightness <= 32768 then\n  begin\n    if lightness = 32768 then\n      result := color else\n    begin\n      lightness256 := GammaCompressionTab[lightness shl 1];\n      result := BGRA(color.red * lightness256 shr 8, color.green*lightness256 shr 8,\n                     color.blue * lightness256 shr 8, color.alpha);\n    end;\n  end else\n  begin\n    r := CombineLightness(GammaExpansionTab[color.red], lightness);\n    g := CombineLightness(GammaExpansionTab[color.green], lightness);\n    b := CombineLightness(GammaExpansionTab[color.blue], lightness);\n    maxValue := r;\n    if g > maxValue then maxValue := g;\n    if b > maxValue then maxValue := b;\n    if maxValue <= 65535 then\n      result := BGRA(GammaCompressionTab[r],\n                     GammaCompressionTab[g],\n                     GammaCompressionTab[b],\n                     color.alpha)\n    else\n    begin\n      invMaxValue := (LongWord(2147483647)+LongWord(maxValue-1)) div maxValue;\n      maxValue := (maxValue-65535) shr 1;\n      r := r*invMaxValue shr 15 + maxValue;\n      g := g*invMaxValue shr 15 + maxValue;\n      b := b*invMaxValue shr 15 + maxValue;\n      if r >= 65535 then result.red := 255 else\n        result.red := GammaCompressionTab[r];\n      if g >= 65535 then result.green := 255 else\n        result.green := GammaCompressionTab[g];\n      if b >= 65535 then result.blue := 255 else\n        result.blue := GammaCompressionTab[b];\n      result.alpha := color.alpha;\n    end;\n  end;\nend;\n\nfunction CombineLightness(lightness1,lightness2: Int32or64): Int32or64;\n{$ifdef CPUI386} {$asmmode intel} assembler;\n  asm\n    imul edx\n    shl edx, 17\n    shr eax, 15\n    or edx, eax\n    mov result, edx\n  end;\n{$ELSE}\nbegin\n  if (lightness1 < 0) xor (lightness2 < 0) then\n    result := -(int64(-lightness1)*lightness2 shr 15)\n  else\n    result := int64(lightness1)*lightness2 shr 15;\nend;\n{$ENDIF}\n\n// Conversion to grayscale by taking into account\n// different color weights\nfunction BGRAToGrayscale(c: TBGRAPixel): TBGRAPixel;\nvar\n  ec:    TExpandedPixel;\n  gray:  word;\n  cgray: byte;\nbegin\n  if c.alpha = 0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  //gamma expansion\n  ec    := GammaExpansion(c);\n  //gray composition\n  gray  := (ec.red * redWeightShl10 + ec.green * greenWeightShl10 +\n    ec.blue * blueWeightShl10 + 512) shr 10;\n  //gamma compression\n  cgray := GammaCompressionTab[gray];\n  Result.red := cgray;\n  Result.green := cgray;\n  Result.blue := cgray;\n  Result.alpha := c.alpha;\nend;\n\nfunction BGRAToGrayscaleLinear(c: TBGRAPixel): TBGRAPixel;\nvar\n  gray:  byte;\nbegin\n  if c.alpha = 0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  //gray composition\n  gray  := (c.red * redWeightShl10 + c.green * greenWeightShl10 +\n    c.blue * blueWeightShl10 + 512) shr 10;\n  //gamma compression\n  Result.red := gray;\n  Result.green := gray;\n  Result.blue := gray;\n  Result.alpha := c.alpha;\nend;\n\nfunction GrayscaleToBGRA(lightness: word): TBGRAPixel;\nbegin\n  result.red := GammaCompressionTab[lightness];\n  result.green := result.red;\n  result.blue := result.red;\n  result.alpha := $ff;\nend;\n\n{ Merge linearly two colors of same importance }\nfunction MergeBGRA(c1, c2: TBGRAPixel): TBGRAPixel;\nvar c12: LongWord;\nbegin\n  if (c1.alpha = 0) then\n    Result := c2\n  else\n  if (c2.alpha = 0) then\n    Result := c1\n  else\n  begin\n    c12 := c1.alpha + c2.alpha;\n    Result.red   := (c1.red * c1.alpha + c2.red * c2.alpha + c12 shr 1) div c12;\n    Result.green := (c1.green * c1.alpha + c2.green * c2.alpha + c12 shr 1) div c12;\n    Result.blue  := (c1.blue * c1.alpha + c2.blue * c2.alpha + c12 shr 1) div c12;\n    Result.alpha := (c12 + 1) shr 1;\n  end;\nend;\n\nfunction MergeBGRA(c1: TBGRAPixel; weight1: integer; c2: TBGRAPixel;\n  weight2: integer): TBGRAPixel;\nvar\n    f1,f2,f12: int64;\nbegin\n  if (weight1 = 0) or (c1.alpha = 0) then\n  begin\n    if (weight2 = 0) or (c2.alpha = 0) then\n      result := BGRAPixelTransparent\n    else\n      Result := c2\n  end\n  else\n  if (weight2 = 0) or (c2.alpha = 0) then\n    Result := c1\n  else\n  if (weight1+weight2 = 0) then\n    Result := BGRAPixelTransparent\n  else\n  begin\n    f1 := int64(c1.alpha)*weight1;\n    f2 := int64(c2.alpha)*weight2;\n    f12 := f1+f2;\n    if f12 = 0 then\n      result := BGRAPixelTransparent\n    else\n    begin\n      Result.red   := (c1.red * f1 + c2.red * f2 + f12 shr 1) div f12;\n      Result.green := (c1.green * f1 + c2.green * f2 + f12 shr 1) div f12;\n      Result.blue  := (c1.blue * f1 + c2.blue * f2 + f12 shr 1) div f12;\n      {$hints off}\n      Result.alpha := (f12 + ((weight1+weight2) shr 1)) div (weight1+weight2);\n      {$hints on}\n    end;\n  end;\nend;\n\nfunction MergeBGRAWithGammaCorrection(c1: TBGRAPixel; weight1: byte; c2: TBGRAPixel;\n  weight2: byte): TBGRAPixel;\nvar\n    w1,w2,f1,f2,f12,a: UInt32or64;\nbegin\n  w1 := weight1;\n  w2 := weight2;\n  if (w1 = 0) or (c1.alpha = 0) then\n  begin\n    if (w2 = 0) or (c2.alpha = 0) then\n      result := BGRAPixelTransparent\n    else\n      Result := c2\n  end\n  else\n  if (w2 = 0) or (c2.alpha = 0) then\n    Result := c1\n  else\n  begin\n    f1 := c1.alpha*w1;\n    f2 := c2.alpha*w2;\n    a := (f1+f2 + ((w1+w2) shr 1)) div (w1+w2);\n    if a = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end else\n      Result.alpha := a;\n    {$IFNDEF CPU64}\n    if (f1 >= 32768) or (f2 >= 32768) then\n    begin\n      f1 := f1 shr 1;\n      f2 := f2 shr 1;\n    end;\n    {$ENDIF}\n    f12 := f1+f2;\n    Result.red   := GammaCompressionTab[(GammaExpansionTab[c1.red] * f1 + GammaExpansionTab[c2.red] * f2) div f12];\n    Result.green := GammaCompressionTab[(GammaExpansionTab[c1.green] * f1 + GammaExpansionTab[c2.green] * f2) div f12];\n    Result.blue  := GammaCompressionTab[(GammaExpansionTab[c1.blue] * f1 + GammaExpansionTab[c2.blue] * f2) div f12];\n  end;\nend;\n\n{ Convert a TColor value to a TBGRAPixel value }\n{$PUSH}{$R-}\nfunction ColorToBGRA(color: TColor): TBGRAPixel; overload;\nbegin\n  if (color < 0) or (color > $ffffff) then color := ColorToRGB(color);\n  RedGreenBlue(color, Result.red,Result.green,Result.blue);\n  Result.alpha := 255;\nend;\n\nfunction ColorToBGRA(color: TColor; opacity: byte): TBGRAPixel; overload;\nbegin\n  if (color < 0) or (color > $ffffff) then color := ColorToRGB(color);\n  RedGreenBlue(color, Result.red,Result.green,Result.blue);\n  Result.alpha := opacity;\nend;\n{$POP}\n\nfunction BGRAToColor(c: TBGRAPixel): TColor;\nbegin\n  Result := RGBToColor(c.red, c.green, c.blue);\nend;\n\nfunction FastRoundDiv257(valueWord: LongWord): byte; inline;\nbegin\n  result := LongWord(valueWord + 127 - (valueWord shr 8)) shr 8;\nend;\n\n{ Conversion from TFPColor to TBGRAPixel assuming TFPColor\n  is already gamma compressed }\nfunction FPColorToBGRA(AValue: TFPColor): TBGRAPixel;\nbegin\n  with AValue do\n    Result := BGRA(FastRoundDiv257(red), FastRoundDiv257(green), FastRoundDiv257(blue), alpha shr 8);\nend;\n\nfunction BGRAToFPColor(AValue: TBGRAPixel): TFPColor; inline;\nbegin\n  result.red := AValue.red shl 8 + AValue.red;\n  result.green := AValue.green shl 8 + AValue.green;\n  result.blue := AValue.blue shl 8 + AValue.blue;\n  result.alpha := AValue.alpha shl 8 + AValue.alpha;\nend;\n\nfunction Color16BitToBGRA(AColor: Word): TBGRAPixel;\nbegin\n  result := BGRA( ((AColor and $F800) shr 11)*255 div 31,\n                  ((AColor and $07e0) shr 5)*255 div 63,\n                  (AColor and $001f)*255 div 31 );\nend;\n\nfunction BGRAToColor16Bit(const AColor: TBGRAPixel): Word;\nbegin\n  result := (((AColor.Red * 31 + 64) div 255) shl 11) +\n            (((AColor.green * 63 + 64) div 255) shl 5) +\n             ((AColor.blue * 31 + 64) div 255);\nend;\n\nfunction BGRAWordDiff(c1, c2: TBGRAPixel): word;\nbegin\n  if c1 = c2 then result := 0\n  else result := ExpandedDiff(GammaExpansion(c1),GammaExpansion(c2));\nend;\n\nfunction BGRADiff(c1,c2: TBGRAPixel): byte;\nbegin\n  if c1 = c2 then result := 0\n  else result := ExpandedDiff(GammaExpansion(c1),GammaExpansion(c2)) shr 8;\nend;\n\nfunction FastBGRALinearDiff(c1, c2: TBGRAPixel): byte;\nbegin\n  result := max(min((abs(c1.red-c2.red)+(abs(c1.green-c2.green) shl 1)+abs(c1.blue-c2.blue)) shr 2,\n             min(c1.alpha,c2.alpha)), abs(c1.alpha-c2.alpha));\nend;\n\nfunction FastBGRAExpandedDiff(c1, c2: TBGRAPixel): word;\nvar wa1,wa2: word;\nbegin\n  wa1 := c1.alpha shl 8 + c1.alpha;\n  wa2 := (c2.alpha shl 8) + c2.alpha;\n  result := max(min((abs(GammaExpansionTab[c1.red]-GammaExpansionTab[c2.red])+\n               (abs(GammaExpansionTab[c1.green]-GammaExpansionTab[c2.green]) shl 1)+\n               abs(GammaExpansionTab[c1.blue]-GammaExpansionTab[c2.blue])) shr 2,\n             min(wa1,wa2)),\n             abs(wa1-wa2));\nend;\n\nfunction MergeBGRA(const colors: array of TBGRAPixel): TBGRAPixel;\nvar\n  sumR,sumG,sumB,sumA: UInt32or64;\n  i: integer;\nbegin\n  if length(colors)<=0 then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  sumR := 0;\n  sumG := 0;\n  sumB := 0;\n  sumA := 0;\n  for i := 0 to high(colors) do\n  with colors[i] do\n  begin\n    inc(sumR, red*alpha);\n    inc(sumG, green*alpha);\n    inc(sumB, blue*alpha);\n    inc(sumA, alpha);\n  end;\n  if sumA > 0 then\n  begin\n    result.red := (sumR + sumA shr 1) div sumA;\n    result.green := (sumG + sumA shr 1) div sumA;\n    result.blue := (sumB + sumA shr 1) div sumA;\n    result.alpha := sumA div LongWord(length(colors));\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction MapHeight(Color: TBGRAPixel): Single;\nvar intval: integer;\nbegin\n  intval := color.Green shl 16 + color.red shl 8 + color.blue;\n  result := intval*5.960464832810452e-8;\nend;\n\nfunction MapHeightToBGRA(Height: Single; Alpha: Byte): TBGRAPixel;\nvar intval: integer;\nbegin\n  if Height >= 1 then result := BGRA(255,255,255,alpha) else\n  if Height <= 0 then result := BGRA(0,0,0,alpha) else\n  begin\n    intval := round(Height*16777215);\n    {$PUSH}{$R-}\n    result := BGRA(intval shr 8,intval shr 16,intval,alpha);\n    {$POP}\n  end;\nend;\n{$ENDIF}\n\n{$IFDEF INCLUDE_INIT}\n{$UNDEF INCLUDE_INIT}\n  BGRASetGamma();\n\n  {$DEFINE INCLUDE_INITIALIZATION}\n  {$i extendedcolorspace.inc}\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgrapngcomn.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Common types for PNG format. This extents PNGComn unit for animated PNG. }\nunit BGRAPNGComn;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  PNGComn;\n\ntype\n  { Exception when reading/writing PNG files }\n  PNGImageException = PNGComn.PNGImageException;\n  { PNG signature }\n  TPNGSignature = array[0..7] of byte;\n  { PNG chunk }\n  TChunk = PNGComn.TChunk;\n  { PNG chunk code }\n  TChunkCode = PNGComn.TChunkCode;\n  { PNG chunk header }\n  TChunkHeader = PNGComn.TChunkHeader;\n\n  { Static PNG chunks }\n  TChunkTypes = PNGComn.TChunkTypes;\n  { PNG header chunk }\n  THeaderChunk = packed record\n    Width, height : LongWord;\n    BitDepth, ColorType, Compression, Filter, Interlace : byte;\n  end;\n  { Array of 8 longwords }\n  EightLong = PNGComn.EightLong;\n\n  { PNG resolution chunk }\n  TPNGPhysicalDimensions = packed record\n    X_Pixels, Y_Pixels :DWord;\n    Unit_Specifier :Byte;\n  end;\n  PPNGPhysicalDimensions=^TPNGPhysicalDimensions;\n\n  { Animated PNG chunks }\n  TAnimatedChunkTypes = {extends TChunkTypes} (\n  ctacTL = 128, // Animation Control: Specifies number of frames and repeat count\n  ctfcTL,       // Frame Control: Position, delay and render mode of the next frame\n  ctfdAT        // Frame Data: Contains image data for one frame\n  );\n\n  PAnimationControlChunk = ^TAnimationControlChunk;\n\n  { PNG chunk to specify animation }\n  TAnimationControlChunk = record\n    FrameCount : longword;\n    RepeatCount : longword;\n  end;\n\n  PFrameControlChunk = ^TFrameControlChunk;\n  { PNG chunk for frame in animation }\n  TFrameControlChunk = packed record\n    SequenceNumber: longword;\n    Width, Height: longword;\n    OffsetX, OffsetY: longword;\n    DelayNum, DelayDenom: word;\n    DisposeOp, BlendOp: byte;\n  end;\n\n  PFrameDataChunk = ^TFrameDataChunk;\n  { PNG chunk for frame data }\n  TFrameDataChunk = record\n    SequenceNumber: longword;\n    // followed by frame data\n  end;\n\nconst\n  { Maximum length for a PNG chunk }\n  MaxChunkLength = PNGComn.MaxChunkLength;\n\n  // static PNG chunks\n  ctIHDR = PNGComn.ctIHDR;  // Image Header: Contains image's size, depth and compression method\n  ctcHRM = PNGComn.ctcHRM;  // Chromaticity: Provides the chromaticity coordinates\n  ctgAMA = PNGComn.ctgAMA;  // Gamma factor: Specifies gamma correction.\n  ctsBIT = PNGComn.ctsBIT;  // Significant Bits: Indicates the color-accuracy of the source data.\n  ctPLTE = PNGComn.ctPLTE;  // Palette: Lists the colors in the image palette.\n  ctbKGD = PNGComn.ctbKGD;  // Background Color: Specifies the background color.\n  cthIST = PNGComn.cthIST;  // Histogram: Provides a histogram of the color usage in the image.\n  cttRNS = PNGComn.cttRNS;  // Transparency: Contains transparency information.\n  ctoFFs = PNGComn.ctoFFs;  // Offset: Gives position on a printed page.\n  ctpHYs = PNGComn.ctpHYs;  // Physical Dimensions: Specifies the intended pixel size or aspect ratio for display.\n  ctIDAT = PNGComn.ctIDAT;  // Image Data: Contains image data which is compressed and possibly filtered.\n  cttIME = PNGComn.cttIME;  // Image Last-Modification Time: Stores the time that the image was last changed.\n  ctsCAL = PNGComn.ctsCAL;  // Physical Scale: Provides physical scale information of the image.\n  cttEXt = PNGComn.cttEXt;  // Textual Data: Stores text data associated with a keyword.\n  ctzTXt = PNGComn.ctzTXt;  // Compressed Textual Data: Similar to tEXt but the text is compressed.\n  ctIEND = PNGComn.ctIEND;  // Image End: Marks the end of the PNG data stream.\n  ctsRGB = PNGComn.ctsRGB;  // Standard RGB Color Space: Indicates that the image uses the sRGB color space.\n  ctiCCP = PNGComn.ctiCCP;  // ICC Profile: Contains an ICC color profile.\n  ctiTXt = PNGComn.ctiTXt;  // International Textual Data: Allows embedding text data with character encoding information.\n  ctsPLT = PNGComn.ctsPLT;  // Suggested Palette: Suggests a palette to use if the full range of colors is unavailable.\n  ctUnknown = PNGComn.ctUnknown; // Unknown: Represents an unrecognized chunk.\n\n  { Animated PNG chunks codes }\n  AnimatedChunkTypes : array[low(TAnimatedChunkTypes)..high(TAnimatedChunkTypes)] of TChunkCode = (\n    'acTL',  'fcTL',  'fdAT'\n  );\n\n  APNG_DISPOSE_OP_NONE = 0;\n  APNG_DISPOSE_OP_BACKGROUND = 1;\n  APNG_DISPOSE_OP_PREVIOUS = 2;\n\n  APNG_BLEND_OP_SOURCE = 0;\n  APNG_BLEND_OP_OVER = 1;\n\nfunction CheckSignature(const ASignature: TPNGSignature): boolean;\nfunction GetSignature: TPNGSignature;\nfunction GetChunkCode(AChunkType: TChunkTypes): TChunkCode;\nfunction GetChunkType(AChunkCode: TChunkCode): TChunkTypes;\nfunction IsAnimatedChunkType(AChunkType: TChunkTypes): boolean;\nfunction CalculateChunkCRC(AChunkCode: TChunkCode; AData: Pointer; ALength: integer): LongWord;\n\nimplementation\n\nuses FPImgCmn;\n\nfunction CheckSignature(const ASignature: TPNGSignature): boolean;\nbegin\n  result := QWord(ASignature) = QWord(PNGComn.Signature);\nend;\n\nfunction GetSignature: TPNGSignature;\nbegin\n  result := PNGComn.Signature;\nend;\n\nfunction GetChunkCode(AChunkType: TChunkTypes): TChunkCode;\nbegin\n  if AChunkType <= high(PNGComn.ChunkTypes) then\n    result := PNGComn.ChunkTypes[AChunkType]\n  else if IsAnimatedChunkType(AChunkType) then\n    result := AnimatedChunkTypes[TAnimatedChunkTypes(AChunkType)]\n  else\n    raise PNGImageException.Create('Unknown chunk type');\nend;\n\nfunction GetChunkType(AChunkCode: TChunkCode): TChunkTypes;\nvar\n  t: TChunkTypes;\n  at: TAnimatedChunkTypes;\nbegin\n  for t := low(ChunkTypes) to high(ChunkTypes) do\n    if ChunkTypes[t] = AChunkCode then exit(t);\n  for at := low(AnimatedChunkTypes) to high(AnimatedChunkTypes) do\n    if AnimatedChunkTypes[at] = AChunkCode then exit(TChunkTypes(at));\n  result := ctUnknown;\nend;\n\nfunction IsAnimatedChunkType(AChunkType: TChunkTypes): boolean;\nbegin\n  result := TAnimatedChunkTypes(AChunkType) in [low(AnimatedChunkTypes)..high(AnimatedChunkTypes)];\nend;\n\nfunction CalculateChunkCRC(AChunkCode: TChunkCode; AData: Pointer; ALength: integer): LongWord;\nbegin\n  result := CalculateCRC (PNGComn.All1Bits, AChunkCode, sizeOf(AChunkCode));\n  result := CalculateCRC (result, AData^, ALength);\n  result := result xor PNGComn.All1Bits;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrapolygon.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ This unit contains polygon drawing functions and spline functions. }\nunit BGRAPolygon;\n\n{$mode objfpc}{$H+}\n\n{ Shapes are drawn using a TBGRACustomFillInfo object, which calculates the\n  intersection of an horizontal line and the polygon.\n\n  Various shapes are handled :\n  - TFillPolyInfo : polygon scanned in any order\n  - TSimpleFillPolyInfo : polygon with few points\n  - TOnePassFillPolyInfo : polygon scanned from top to bottom\n  - TFillEllipseInfo : ellipse\n  - TFillBorderEllipseInfo : ellipse border\n  - TFillRoundRectangleInfo : round rectangle (or other corners)\n  - TFillBorderRoundRectInfo : round rectangle border\n\n  Various fill modes :\n  - Alternate : each time there is an intersection, it enters or go out of the polygon\n  - Winding : filled when the sum of ascending and descending intersection is non zero\n  - Color : fill with a color defined as a TBGRAPixel argument\n  - Erase : erase with an alpha in the TBGRAPixel argument\n  - Texture : draws a texture with the IBGRAScanner argument\n\n  Various border handling :\n  - aliased : one horizontal line intersection is calculated per pixel in the vertical loop\n  - antialiased : more lines are calculated and a density is computed by adding them together\n  - multi-polygon antialiasing and superposition (TBGRAMultiShapeFiller) : same as above but\n    by combining multiple polygons at the same time, and optionally subtracting top polygons\n  }\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, BGRAFillInfo, BGRAPath;\n\nprocedure FillShapeAliased(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  c: TBGRAPixel; EraseMode: boolean; scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode; AliasingIncludeBottomRight: Boolean= false);\nprocedure FillShapeAliased(bmp: TCustomUniversalBitmap; shapeInfo: TBGRACustomFillInfo;\n  brush: TUniversalBrush; Alpha: Word; NonZeroWinding: boolean; AliasingIncludeBottomRight: Boolean= false);\nprocedure FillPolyAliased(bmp: TBGRACustomBitmap; points: array of TPointF;\n  c: TBGRAPixel; EraseMode: boolean; NonZeroWinding: boolean; drawmode: TDrawMode; APixelCenteredCoordinates: boolean = true);\nprocedure FillPolyAliasedWithTexture(bmp: TBGRACustomBitmap; const points: array of TPointF;\n  scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode; APixelCenteredCoordinates: boolean = true);\nprocedure FillPolyAliased(bmp: TCustomUniversalBitmap; const points: array of TPointF;\n  brush: TUniversalBrush; Alpha: Word; NonZeroWinding: boolean; APixelCenteredCoordinates: boolean = true);\n\nprocedure FillShapeAntialias(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  c: TBGRAPixel; EraseMode: boolean; scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean = false);\nprocedure FillShapeAntialias(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  c: TBGRAPixel; EraseMode: boolean; scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode);\nprocedure FillShapeAntialias(bmp: TCustomUniversalBitmap; shapeInfo: TBGRACustomFillInfo;\n  brush: TUniversalBrush; NonZeroWinding: boolean);\nprocedure FillShapeAntialiasWithTexture(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean = false);\nprocedure FillPolyAntialias(bmp: TBGRACustomBitmap; points: array of TPointF;\n  c: TBGRAPixel; EraseMode: boolean; NonZeroWinding: boolean; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\nprocedure FillPolyAntialiasWithTexture(bmp: TBGRACustomBitmap; const points: array of TPointF;\n  scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\nprocedure FillPolyAntialias(bmp: TCustomUniversalBitmap; const points: array of TPointF;\n  brush: TUniversalBrush; NonZeroWinding: boolean; APixelCenteredCoordinates: boolean = true);\n\ntype\n\n  { Class that fills multiple shapes at once, joining them smoothly }\n  TBGRAMultishapeFiller = class\n  protected\n    nbShapes: integer;\n    shapes: array of record\n        info: TBGRACustomFillInfo;\n        internalInfo: boolean;\n        texture: IBGRAScanner;\n        internalTexture: TObject;\n        color: TExpandedPixel;\n        bounds: TRect;\n        fillMode: TFillMode;\n        fillModeOverride: boolean;\n      end;\n    function AddShape(AInfo: TBGRACustomFillInfo; AInternalInfo: boolean; ATexture: IBGRAScanner; AInternalTexture: TObject; AColor: TBGRAPixel): integer; overload;\n    function CheckRectangleBorderBounds(var x1, y1, x2, y2: single; w: single): boolean;\n    procedure InternalAddStroke(const APoints: array of TPointF; AClosed: boolean; AData: Pointer);\n  public\n    FillMode : TFillMode;\n    PolygonOrder: TPolygonOrder;\n    Antialiasing: Boolean;\n    AliasingIncludeBottomRight: Boolean;\n    constructor Create;\n    destructor Destroy; override;\n    function AddShape(AShape: TBGRACustomFillInfo; AColor: TBGRAPixel): integer; overload;\n    function AddShape(AShape: TBGRACustomFillInfo; ATexture: IBGRAScanner): integer; overload;\n    function AddPolygon(const points: array of TPointF; AColor: TBGRAPixel): integer; overload;\n    function AddPolygon(const points: array of TPointF; ATexture: IBGRAScanner): integer; overload;\n    procedure AddPathStroke(APath: TBGRAPath; AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker); overload;\n    procedure AddPathStroke(APath: TBGRAPath; ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker); overload;\n    procedure AddPathStroke(APath: TBGRAPath; AMatrix: TAffineMatrix; AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker); overload;\n    procedure AddPathStroke(APath: TBGRAPath; AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker); overload;\n    function AddPathFill(APath: TBGRAPath; AColor: TBGRAPixel): integer; overload;\n    function AddPathFill(APath: TBGRAPath; ATexture: IBGRAScanner): integer; overload;\n    function AddPathFill(APath: TBGRAPath; AMatrix: TAffineMatrix; AColor: TBGRAPixel): integer; overload;\n    function AddPathFill(APath: TBGRAPath; AMatrix: TAffineMatrix; ATexture: IBGRAScanner): integer; overload;\n    function AddPolylineStroke(const points: array of TPointF; AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker): integer; overload;\n    function AddPolylineStroke(const points: array of TPointF; ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker): integer; overload;\n    function AddPolygonStroke(const points: array of TPointF; AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker): integer; overload;\n    function AddPolygonStroke(const points: array of TPointF; ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker): integer; overload;\n    function AddTriangleLinearColor(pt1, pt2, pt3: TPointF; c1, c2, c3: TBGRAPixel): integer;\n    function AddTriangleLinearMapping(pt1, pt2, pt3: TPointF; texture: IBGRAScanner; tex1, tex2, tex3: TPointF): integer;\n    procedure AddQuadLinearColor(pt1, pt2, pt3, pt4: TPointF; c1, c2, c3, c4: TBGRAPixel);\n    procedure AddQuadLinearMapping(pt1, pt2, pt3, pt4: TPointF; texture: IBGRAScanner; tex1, tex2, {%H-}tex3, tex4: TPointF;\n       ACulling: TFaceCulling = fcNone);\n    procedure AddQuadPerspectiveMapping(pt1, pt2, pt3, pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF);\n    function AddEllipse(x, y, rx, ry: single; AColor: TBGRAPixel): integer; overload;\n    function AddEllipse(x, y, rx, ry: single; ATexture: IBGRAScanner): integer; overload;\n    function AddEllipseBorder(x, y, rx, ry, w: single; AColor: TBGRAPixel): integer; overload;\n    function AddEllipseBorder(x, y, rx, ry, w: single; ATexture: IBGRAScanner): integer; overload;\n    function AddRoundRectangle(x1, y1, x2, y2, rx, ry: single; AColor: TBGRAPixel; options: TRoundRectangleOptions= []): integer; overload;\n    function AddRoundRectangle(x1, y1, x2, y2, rx, ry: single; ATexture: IBGRAScanner; options: TRoundRectangleOptions= []): integer; overload;\n    function AddRoundRectangleBorder(x1, y1, x2, y2, rx, ry, w: single; AColor: TBGRAPixel; options: TRoundRectangleOptions= []): integer; overload;\n    function AddRoundRectangleBorder(x1, y1, x2, y2, rx, ry, w: single; ATexture: IBGRAScanner; options: TRoundRectangleOptions= []): integer; overload;\n    function AddRectangle(x1, y1, x2, y2: single; AColor: TBGRAPixel): integer; overload;\n    function AddRectangle(x1, y1, x2, y2: single; ATexture: IBGRAScanner): integer; overload;\n    function AddRectangleBorder(x1, y1, x2, y2, w: single; AColor: TBGRAPixel): integer; overload;\n    function AddRectangleBorder(x1, y1, x2, y2, w: single; ATexture: IBGRAScanner): integer; overload;\n    procedure OverrideFillMode(AShapeIndex: integer; AFillMode: TFillMode);\n    procedure Draw(dest: TBGRACustomBitmap; ADrawMode: TDrawMode = dmDrawWithTransparency);\n    property ShapeCount: integer read nbShapes;\n  end;\n\nprocedure FillEllipseAntialias(bmp: TCustomUniversalBitmap; x, y, rx, ry: single; ABrush: TUniversalBrush);\nprocedure FillEllipseAntialias(bmp: TBGRACustomBitmap; x, y, rx, ry: single;\n  c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean = false);\nprocedure FillEllipseAntialiasWithTexture(bmp: TBGRACustomBitmap; x, y, rx, ry: single;\n  scan: IBGRAScanner; LinearBlend: boolean = false);\n\nprocedure BorderEllipseAntialias(bmp: TCustomUniversalBitmap; x, y, rx, ry, w: single; ABrush: TUniversalBrush);\nprocedure BorderEllipseAntialias(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean = false);\nprocedure BorderEllipseAntialiasWithTexture(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  scan: IBGRAScanner; LinearBlend: boolean = false);\n\nprocedure BorderEllipse(bmp: TCustomUniversalBitmap; x, y, rx, ry, w: single; ABrush: TUniversalBrush; AAlpha: word = 65535);\nprocedure BorderEllipse(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  c: TBGRAPixel; EraseMode: boolean; drawmode: TDrawMode);\nprocedure BorderEllipseWithTexture(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  scan: IBGRAScanner; drawmode: TDrawMode);\n\nprocedure FillRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1, x2, y2, rx, ry: single;\n  options: TRoundRectangleOptions; c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\nprocedure FillRoundRectangleAntialiasWithTexture(bmp: TBGRACustomBitmap; x1, y1, x2, y2, rx, ry: single;\n  options: TRoundRectangleOptions; scan: IBGRAScanner; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\n\nprocedure BorderRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1, x2, y2, rx, ry, w: single;\n  options: TRoundRectangleOptions; c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\nprocedure BorderRoundRectangleAntialiasWithTexture(bmp: TBGRACustomBitmap; x1, y1, x2, y2, rx, ry, w: single;\n  options: TRoundRectangleOptions; scan: IBGRAScanner; LinearBlend: boolean = false; APixelCenteredCoordinates: boolean = true);\n\nprocedure BorderAndFillRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1, x2, y2, rx, ry, w: single;\n  options: TRoundRectangleOptions; bordercolor,fillcolor: TBGRAPixel; bordertexture,filltexture: IBGRAScanner; EraseMode: boolean; APixelCenteredCoordinates: boolean = true);\n\nimplementation\n\nuses Math, BGRABlend, BGRAGradientScanner, BGRATransform;\n\nprocedure AnyBrush(out ABrush: TUniversalBrush; ABmp: TBGRACustomBitmap; ACol: TBGRAPixel;\n   AEraseMode: boolean; AScan: IBGRAScanner; ADrawmode: TDrawMode);\nbegin\n  if AScan <> nil then\n    ABmp.ScannerBrush(ABrush, AScan, ADrawmode)\n  else\n  begin\n    if AEraseMode then ABmp.EraseBrush(ABrush, ACol.alpha + (ACol.alpha shl 8))\n    else ABmp.SolidBrush(ABrush, ACol, ADrawmode);;\n  end;\nend;\n\nprocedure AnyBrush(out ABrush: TUniversalBrush; ABmp: TBGRACustomBitmap; ACol: TBGRAPixel;\n   AEraseMode: boolean; AScan: IBGRAScanner; ALinearBlend: boolean);\nbegin\n  if ALinearBlend then AnyBrush(ABrush,ABmp,ACol,AEraseMode,AScan,dmLinearBlend)\n  else AnyBrush(ABrush,ABmp,ACol,AEraseMode,AScan,dmDrawWithTransparency);\nend;\n\nprocedure FillShapeAliased(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  c: TBGRAPixel; EraseMode: boolean; scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode; AliasingIncludeBottomRight: Boolean= false);\nvar\n  bFill: TUniversalBrush;\nbegin\n  AnyBrush(bFill, bmp, c,EraseMode,scan,drawmode);\n  FillShapeAliased(bmp, shapeInfo, bFill,65535,NonZeroWinding,AliasingIncludeBottomRight);\nend;\n\nprocedure FillShapeAliased(bmp: TCustomUniversalBitmap;\n  shapeInfo: TBGRACustomFillInfo; brush: TUniversalBrush; Alpha: Word;\n  NonZeroWinding: boolean; AliasingIncludeBottomRight: Boolean);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n\n  miny, maxy, minx, maxx: integer;\n  yb, i: integer;\n  x1, x2: single;\n  ix1, ix2: integer;\n  pdest: PByte;\n  AliasingOfs: TPointF;\n  ctx: TUniBrushContext;\n\nbegin\n  if brush.DoesNothing or (Alpha=0) then exit;\n  If not BGRAShapeComputeMinMax(shapeInfo,minx,miny,maxx,maxy,bmp.ClipRect) then exit;\n  inter := shapeInfo.CreateIntersectionArray;\n\n  if AliasingIncludeBottomRight then\n    AliasingOfs := PointF(0.0001, 0.0001) else\n    AliasingOfs := PointF(0,0);\n  bmp.LoadFromBitmapIfNeeded;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //find intersections\n    shapeInfo.ComputeAndSort( yb+0.5-AliasingOfs.Y, inter, nbInter, NonZeroWinding);\n\n    for i := 0 to nbinter div 2 - 1 do\n    begin\n      x1 := inter[i + i].interX+AliasingOfs.X;\n      x2 := inter[i + i+ 1].interX+AliasingOfs.X;\n\n      if x1 <> x2 then\n      begin\n        ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n        if ix1 <= ix2 then\n        begin\n          //render scanline\n          pdest := bmp.GetPixelAddress(ix1,yb);\n          brush.MoveTo(@ctx, pdest, ix1,yb);\n          brush.PutNextPixels(@ctx, Alpha, ix2-ix1+1);\n        end;\n      end;\n    end;\n  end;\n\n  shapeInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\nend;\n\nprocedure FillPolyAliased(bmp: TBGRACustomBitmap; points: array of TPointF;\n  c: TBGRAPixel; EraseMode: boolean; NonZeroWinding: boolean; drawmode: TDrawMode; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp, c,EraseMode,nil,drawmode);\n  FillPolyAliased(bmp, points, b, 65535, NonZeroWinding, APixelCenteredCoordinates);\nend;\n\nprocedure FillPolyAliasedWithTexture(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp, BGRAPixelTransparent,false,scan,drawmode);\n  FillPolyAliased(bmp, points, b, 65535, NonZeroWinding, APixelCenteredCoordinates);\nend;\n\nprocedure FillPolyAliased(bmp: TCustomUniversalBitmap;\n  const points: array of TPointF; brush: TUniversalBrush; Alpha: Word;\n  NonZeroWinding: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TCustomFillPolyInfo;\nbegin\n  if brush.DoesNothing or (length(points) < 3) then exit;\n  if length(points)<=10 then\n    info := TSimpleFillPolyInfo.Create(points, APixelCenteredCoordinates)\n  else\n    info := TOnePassFillPolyInfo.Create(points, APixelCenteredCoordinates);\n  FillShapeAliased(bmp, info, brush, Alpha, NonZeroWinding);\n  info.Free;\nend;\n\n//////////////////////////////////////////////////////////////////////////////\n\nprocedure FillShapeAntialias(bmp: TBGRACustomBitmap; shapeInfo: TBGRACustomFillInfo;\n  c: TBGRAPixel; EraseMode: boolean; scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean = false);\nvar\n  drawMode: TDrawMode;\nbegin\n  if LinearBlend then drawMode := dmLinearBlend else drawMode := dmDrawWithTransparency;\n  FillShapeAntialias(bmp, shapeInfo, c, EraseMode, scan, NonZeroWinding, drawmode);\nend;\n\nprocedure FillShapeAntialias(bmp: TBGRACustomBitmap;\n  shapeInfo: TBGRACustomFillInfo; c: TBGRAPixel; EraseMode: boolean;\n  scan: IBGRAScanner; NonZeroWinding: boolean; drawmode: TDrawMode);\nvar\n  bFill: TUniversalBrush;\nbegin\n  AnyBrush(bFill, bmp, c,EraseMode,scan,drawmode);\n  FillShapeAntialias(bmp, shapeInfo, bFill,NonZeroWinding);\nend;\n\nprocedure FillShapeAntialias(bmp: TCustomUniversalBitmap;\n  shapeInfo: TBGRACustomFillInfo; brush: TUniversalBrush;\n  NonZeroWinding: boolean);\nconst oneOver512 = 1/512;\nvar\n  inter:   array of TIntersectionInfo;\n  nbInter: integer;\n\n  firstScan, lastScan: record\n    inter:   array of TIntersectionInfo;\n    nbInter: integer;\n    sliceIndex: integer;\n  end;\n\n  miny, maxy, minx, maxx,\n  densMinX, densMaxX: integer;\n  joinDensity, nextJoinDensity: boolean;\n\n  density: PDensity;\n\n  xb, yb, yc, i: integer;\n  tempDensity: UInt32or64;\n\n  x1, x2, x1b,x2b: single;\n  ix1, ix2, drawCount: integer;\n  pdens:    PDensity;\n\n  curvedSeg,optimised: boolean;\n  temp: Single;\n  pDest: PByte;\n  ctx: TUniBrushContext;\n\n  function GetYScan(num: integer): single; inline;\n  begin\n    result := yb + (num * 2 + 1) / (AntialiasPrecision * 2);\n  end;\n\n  procedure SubTriangleDensity(x1,density1, x2, density2: single);\n  var ix1,ix2,n: integer;\n      slope: single;\n    function densityAt(x: single): single; inline;\n    begin\n      result := (x-x1)*slope+density1;\n    end;\n  var\n      curdens: single;\n      pdens: pdensity;\n      newvalue: Int32or64;\n  begin\n    if (x1 <> x2) and (x1 < maxx + 1) and (x2 >= minx) then\n    begin\n      slope := (density2-density1)/(x2-x1);\n      if x1 < minx then\n      begin\n        density1 := densityAt(minx);\n        x1 := minx;\n      end;\n      if x2 >= maxx + 1 then\n      begin\n        density2 := densityAt(maxx+1);\n        x2 := maxx + 1;\n      end;\n      ix1  := floor(x1);\n      ix2  := floor(x2);\n\n      if ix1 = ix2 then\n      begin\n        newValue := (density + (ix1 - minx))^ - round((x2 - x1)*(density1+density2)/2);\n        if newValue < 0 then newValue := 0;\n        if newValue > 256 then newValue := 256;\n        (density + (ix1 - minx))^ := newValue\n      end\n      else\n      begin\n        newValue := (density + (ix1 - minx))^ - round((1 - (x1 - ix1))*(density1+densityAt(ix1+1))/2) ;\n        if newValue < 0 then newValue := 0;\n        if newValue > 256 then newValue := 256;\n        (density + (ix1 - minx))^ := newValue;\n        if (ix2 <= maxx) then\n        begin\n          newValue := (density + (ix2 - minx))^ - round((x2 - ix2)*(density2+densityAt(ix2))/2);\n          if newValue < 0 then newValue := 0;\n          if newValue > 256 then newValue := 256;\n          (density + (ix2 - minx))^ := newValue;\n        end;\n      end;\n      if ix2 > ix1 + 1 then\n      begin\n        curdens := densityAt(ix1+1.5);\n        pdens := density + (ix1+1 - minx);\n        for n := ix2-1-(ix1+1) downto 0 do\n        begin\n          newValue := pdens^ - round(curdens);\n          if newValue < 0 then newValue := 0;\n          if newValue > 256 then newValue := 256;\n          pdens^ := newValue;\n          IncF(curdens, slope);\n          inc(pdens);\n        end;\n      end;\n    end;\n  end;\n\nbegin\n  If brush.DoesNothing or not BGRAShapeComputeMinMax(shapeInfo,minx,miny,maxx,maxy,bmp.ClipRect) then exit;\n  bmp.LoadFromBitmapIfNeeded;\n\n  inter := shapeInfo.CreateIntersectionArray;\n  getmem(density, (maxx - minx + 2)*sizeof(TDensity)); //more for safety\n\n  curvedSeg := shapeInfo.SegmentsCurved;\n  if not curvedSeg then\n  begin\n    firstScan.inter := shapeInfo.CreateIntersectionArray;\n    lastScan.inter := shapeInfo.CreateIntersectionArray;\n  end;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //mean density\n    fillchar(density^,(maxx-minx+1)*sizeof(TDensity),0);\n\n    densMinX := maxx+1;\n    densMaxX := minx-1;\n\n    if not curvedSeg then\n    begin\n      with firstScan do\n      begin\n        shapeInfo.ComputeAndSort(yb+1/256,inter,nbInter,NonZeroWinding);\n        sliceIndex:= shapeInfo.GetSliceIndex;\n      end;\n      with lastScan do\n      begin\n        shapeInfo.ComputeAndSort(yb+255/256,inter,nbInter,NonZeroWinding);\n        sliceIndex:= shapeInfo.GetSliceIndex;\n      end;\n      if (firstScan.sliceIndex = lastScan.sliceIndex) and (firstScan.nbInter = lastScan.nbInter) then\n      begin\n        optimised := true;\n        for i := 0 to firstScan.nbInter-1 do\n          if firstScan.inter[i].numSegment <> lastScan.inter[i].numSegment then\n          begin\n            optimised := false;\n            break;\n          end;\n      end else\n        optimised := false;\n\n      if optimised then\n      begin\n        nextJoinDensity := false;\n        for i := 0 to firstScan.nbinter div 2 - 1 do\n        begin\n          joinDensity := nextJoinDensity;\n          x1 := firstScan.inter[i+i].interX;\n          x1b := lastScan.inter[i+i].interX;\n          x2 := firstScan.inter[i+i+1].interX;\n          x2b := lastScan.inter[i+i+1].interX;\n          nextJoinDensity := not ((i+i+2 >= firstScan.nbInter) or\n              ((firstScan.inter[i+i+2].interX >= x2+1) and\n               (lastScan.inter[i+i+2].interX >= x2b+1)));\n          if (abs(x1-x1b)<oneOver512) and (abs(x2-x2b)<oneOver512) and\n              not joinDensity and not nextJoinDensity then\n          begin\n            x1 := (x1+x1b)*0.5;\n            x2 := (x2+x2b)*0.5;\n\n            if x1 < minx then x1 := minx;\n            ix1 := floor(x1);\n\n            if x2 >= maxx+1 then\n            begin\n              x2 := maxx+1;\n              ix2 := maxx;\n            end else\n              ix2 := floor(x2);\n            if ix2 > maxx then ix2 := maxx;\n\n            if ix1>ix2 then continue;\n            pDest := bmp.GetPixelAddress(ix1,yb);\n            brush.MoveTo(@ctx,pDest,ix1,yb);\n            if ix1=ix2 then\n            begin\n              tempDensity:= round((x2-x1)*65535);\n              brush.PutNextPixels(@ctx,tempDensity,1);\n            end else\n            begin\n              tempDensity:= round((ix1+1-x1)*65535);\n              brush.PutNextPixels(@ctx,tempDensity,1);\n              inc(ix1);\n\n              tempDensity:= round((x2-ix2)*65535);\n              if tempDensity < 65535 then\n              begin\n                dec(ix2);\n                if ix2 >= ix1 then brush.PutNextPixels(@ctx,65535,ix2-ix1+1);\n                brush.PutNextPixels(@ctx,tempDensity,1);\n              end else\n                brush.PutNextPixels(@ctx,65535,ix2-ix1+1);\n            end;\n            continue;\n          end else\n          begin\n            if (x1 > x1b) then\n            begin\n              temp := x1;\n              x1 := x1b;\n              x1b := temp;\n            end;\n            if (x2 < x2b) then\n            begin\n              temp := x2;\n              x2 := x2b;\n              x2b := temp;\n            end;\n\n  \t    {$DEFINE INCLUDE_FILLDENSITY}\n  \t    {$DEFINE PARAM_SINGLESEGMENT}\n            {$i density256.inc}\n            SubTriangleDensity(x1,256,x1b,0);\n            SubTriangleDensity(x2b,0,x2,256);\n          end;\n        end;\n      end else\n      begin\n        for yc := 0 to AntialiasPrecision - 1 do\n        begin\n          //find intersections\n          shapeInfo.ComputeAndSort(GetYScan(yc),inter,nbInter,NonZeroWinding);\n\n\t  {$DEFINE INCLUDE_FILLDENSITY}\n          {$i density256.inc}\n        end;\n      end;\n    end else\n    begin\n      optimised := false;\n      //precision scan\n      for yc := 0 to AntialiasPrecision - 1 do\n      begin\n        //find intersections\n        shapeInfo.ComputeAndSort(GetYScan(yc),inter,nbInter,NonZeroWinding);\n\n\t{$DEFINE INCLUDE_FILLDENSITY}\n        {$i density256.inc}\n      end;\n    end;\n\n    if optimised then\n      {$DEFINE INCLUDE_RENDERDENSITY}\n      {$i density256.inc}\n    else\n      {$DEFINE INCLUDE_RENDERDENSITY}\n      {$define PARAM_ANTIALIASINGFACTOR}\n      {$i density256.inc}\n  end;\n\n  shapeInfo.FreeIntersectionArray(inter);\n\n  if not curvedSeg then\n  begin\n    with firstScan do\n    begin\n      for i := 0 to high(inter) do\n        inter[i].free;\n    end;\n    with lastScan do\n    begin\n      for i := 0 to high(inter) do\n        inter[i].free;\n    end;\n  end;\n  freemem(density);\n\n  bmp.InvalidateBitmap;\nend;\n\nprocedure FillShapeAntialiasWithTexture(bmp: TBGRACustomBitmap;\n  shapeInfo: TBGRACustomFillInfo; scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean);\nbegin\n  FillShapeAntialias(bmp,shapeInfo,BGRAPixelTransparent,False,scan,NonZeroWinding,LinearBlend);\nend;\n\nprocedure FillPolyAntialias(bmp: TBGRACustomBitmap; points: array of TPointF;\n  c: TBGRAPixel; EraseMode: boolean; NonZeroWinding: boolean; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp,c,EraseMode,nil,LinearBlend);\n  FillPolyAntialias(bmp, points, b, NonZeroWinding, APixelCenteredCoordinates);\nend;\n\nprocedure FillPolyAntialiasWithTexture(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; scan: IBGRAScanner; NonZeroWinding: boolean; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp,BGRAPixelTransparent,false,scan,LinearBlend);\n  FillPolyAntialias(bmp, points, b, NonZeroWinding, APixelCenteredCoordinates);\nend;\n\nprocedure FillPolyAntialias(bmp: TCustomUniversalBitmap;\n  const points: array of TPointF; brush: TUniversalBrush;\n  NonZeroWinding: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TCustomFillPolyInfo;\nbegin\n  if brush.DoesNothing or (length(points) < 3) then exit;\n  info := TOnePassFillPolyInfo.Create(points, APixelCenteredCoordinates);\n  FillShapeAntialias(bmp, info, brush, NonZeroWinding);\n  info.Free;\nend;\n\n////////////////////////////////////////////////////////////////////////\n\n{ TBGRAMultishapeFiller }\n\ntype\n  TPathStrokeData = record\n    Stroker: TBGRACustomPenStroker;\n    Texture: IBGRAScanner;\n    Color: TBGRAPixel;\n    Width: Single;\n  end;\n\nfunction TBGRAMultishapeFiller.AddShape(AInfo: TBGRACustomFillInfo; AInternalInfo: boolean; ATexture: IBGRAScanner; AInternalTexture: TObject; AColor: TBGRAPixel): integer;\nbegin\n  if length(shapes) = nbShapes then\n    setlength(shapes, (length(shapes)+1)*2);\n  result := nbShapes;\n  inc(nbShapes);\n\n  with shapes[result] do\n  begin\n    info := AInfo;\n    internalInfo:= AInternalInfo;\n    texture := ATexture;\n    internalTexture:= AInternalTexture;\n    color := GammaExpansion(AColor);\n    fillModeOverride:= false;\n  end;\nend;\n\nfunction TBGRAMultishapeFiller.CheckRectangleBorderBounds(var x1, y1, x2,\n  y2: single; w: single): boolean;\nvar temp: single;\nbegin\n  if x1 > x2 then\n  begin\n    temp := x1;\n    x1 := x2;\n    x2 := temp;\n  end;\n  if y1 > y2 then\n  begin\n    temp := y1;\n    y1 := y2;\n    y2 := temp;\n  end;\n  result := (x2-x1 > w) and (y2-y1 > w);\nend;\n\nprocedure TBGRAMultishapeFiller.InternalAddStroke(\n  const APoints: array of TPointF; AClosed: boolean; AData: Pointer);\nvar pts: ArrayOfTPointF;\n  idxShape: Integer;\nbegin\n  with TPathStrokeData(AData^) do\n  begin\n    if AClosed then\n      pts := Stroker.ComputePolygon(APoints, Width)\n    else\n      pts := Stroker.ComputePolylineAutoCycle(APoints, Width);\n    if Texture <> nil then\n      idxShape := AddPolygon(pts, Texture)\n    else\n      idxShape := AddPolygon(pts, Color);\n    OverrideFillMode(idxShape, fmWinding);\n  end;\nend;\n\nconstructor TBGRAMultishapeFiller.Create;\nbegin\n  nbShapes := 0;\n  shapes := nil;\n  PolygonOrder := poNone;\n  Antialiasing := True;\n  AliasingIncludeBottomRight := False;\nend;\n\ndestructor TBGRAMultishapeFiller.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := 0 to nbShapes-1 do\n  begin\n    if shapes[i].internalInfo then shapes[i].info.free;\n    shapes[i].texture := nil;\n    if shapes[i].internalTexture <> nil then shapes[i].internalTexture.Free;\n  end;\n  shapes := nil;\n  inherited Destroy;\nend;\n\nfunction TBGRAMultishapeFiller.AddShape(AShape: TBGRACustomFillInfo;\n  AColor: TBGRAPixel): integer;\nbegin\n  result := AddShape(AShape,False,nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddShape(AShape: TBGRACustomFillInfo;\n  ATexture: IBGRAScanner): integer;\nbegin\n  result := AddShape(AShape,False,ATexture,nil,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolygon(const points: array of TPointF;\n  AColor: TBGRAPixel): integer;\nbegin\n  if length(points) <= 2 then exit(-1);\n  result := AddShape(TOnePassFillPolyInfo.Create(points),True,nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolygon(const points: array of TPointF;\n  ATexture: IBGRAScanner): integer;\nbegin\n  if length(points) <= 2 then exit(-1);\n  result := AddShape(TOnePassFillPolyInfo.Create(points),True,ATexture,nil,BGRAPixelTransparent);\nend;\n\nprocedure TBGRAMultishapeFiller.AddPathStroke(APath: TBGRAPath;\n  AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker);\nbegin\n  AddPathStroke(APath,AffineMatrixIdentity,AColor,AWidth,AStroker);\nend;\n\nprocedure TBGRAMultishapeFiller.AddPathStroke(APath: TBGRAPath;\n  ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker);\nbegin\n  AddPathStroke(APath,AffineMatrixIdentity,ATexture,AWidth,AStroker);\nend;\n\nprocedure TBGRAMultishapeFiller.AddPathStroke(APath: TBGRAPath;\n  AMatrix: TAffineMatrix; AColor: TBGRAPixel; AWidth: single;\n  AStroker: TBGRACustomPenStroker);\nvar data: TPathStrokeData;\nbegin\n  data.Stroker := AStroker;\n  data.Color := AColor;\n  data.Texture := nil;\n  data.Width := AWidth;\n  APath.stroke(@InternalAddStroke, AMatrix, 0.1, @data);\nend;\n\nprocedure TBGRAMultishapeFiller.AddPathStroke(APath: TBGRAPath;\n  AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AWidth: single;\n  AStroker: TBGRACustomPenStroker);\nvar data: TPathStrokeData;\nbegin\n  data.Stroker := AStroker;\n  data.Color := BGRAPixelTransparent;\n  data.Texture := ATexture;\n  data.Width := AWidth;\n  APath.stroke(@InternalAddStroke, AMatrix, 0.1, @data);\nend;\n\nfunction TBGRAMultishapeFiller.AddPathFill(APath: TBGRAPath; AColor: TBGRAPixel): integer;\nbegin\n  result := AddPolygon(APath.ToPoints, AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddPathFill(APath: TBGRAPath;\n  ATexture: IBGRAScanner): integer;\nbegin\n  result := AddPolygon(APath.ToPoints, ATexture);\nend;\n\nfunction TBGRAMultishapeFiller.AddPathFill(APath: TBGRAPath;\n  AMatrix: TAffineMatrix; AColor: TBGRAPixel): integer;\nbegin\n  result := AddPolygon(APath.ToPoints(AMatrix), AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddPathFill(APath: TBGRAPath;\n  AMatrix: TAffineMatrix; ATexture: IBGRAScanner): integer;\nbegin\n  result := AddPolygon(APath.ToPoints(AMatrix), ATexture);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolylineStroke(\n  const points: array of TPointF; AColor: TBGRAPixel; AWidth: single;\n  AStroker: TBGRACustomPenStroker): integer;\nbegin\n  result := AddPolygon(AStroker.ComputePolyline(points,AWidth,AColor), AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolylineStroke(\n  const points: array of TPointF; ATexture: IBGRAScanner; AWidth: single;\n  AStroker: TBGRACustomPenStroker): integer;\nbegin\n  result := AddPolygon(AStroker.ComputePolyline(points,AWidth), ATexture);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolygonStroke(const points: array of TPointF;\n  AColor: TBGRAPixel; AWidth: single; AStroker: TBGRACustomPenStroker): integer;\nbegin\n  result := AddPolygon(AStroker.ComputePolygon(points,AWidth), AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddPolygonStroke(const points: array of TPointF;\n  ATexture: IBGRAScanner; AWidth: single; AStroker: TBGRACustomPenStroker\n  ): integer;\nbegin\n  result := AddPolygon(AStroker.ComputePolygon(points,AWidth), ATexture);\nend;\n\nfunction TBGRAMultishapeFiller.AddTriangleLinearColor(pt1, pt2, pt3: TPointF;\n  c1, c2, c3: TBGRAPixel): integer;\nvar grad: TBGRAGradientTriangleScanner;\nbegin\n  if (c1 = c2) and (c2 = c3) then\n    result := AddPolygon([pt1,pt2,pt3],c1)\n  else\n  begin\n    grad := TBGRAGradientTriangleScanner.Create(pt1,pt2,pt3, c1,c2,c3);\n    result := AddShape(TOnePassFillPolyInfo.Create([pt1,pt2,pt3]),True,grad,grad,BGRAPixelTransparent);\n  end;\nend;\n\nfunction TBGRAMultishapeFiller.AddTriangleLinearMapping(pt1, pt2, pt3: TPointF;\n  texture: IBGRAScanner; tex1, tex2, tex3: TPointF): integer;\nvar\n  mapping: TBGRATriangleLinearMapping;\nbegin\n  mapping := TBGRATriangleLinearMapping.Create(texture, pt1,pt2,pt3, tex1, tex2, tex3);\n  result := AddShape(TOnePassFillPolyInfo.Create([pt1,pt2,pt3]),True,mapping,mapping,BGRAPixelTransparent);\nend;\n\nprocedure TBGRAMultishapeFiller.AddQuadLinearColor(pt1, pt2, pt3, pt4: TPointF;\n  c1, c2, c3, c4: TBGRAPixel);\nvar\n  center: TPointF;\n  centerColor: TBGRAPixel;\nbegin\n  if (c1 = c2) and (c2 = c3) and (c3 = c4) then\n    AddPolygon([pt1,pt2,pt3,pt4],c1)\n  else\n  begin\n    center := (pt1+pt2+pt3+pt4)*(1/4);\n    centerColor := GammaCompression( MergeBGRA(MergeBGRA(GammaExpansion(c1),GammaExpansion(c2)),\n                      MergeBGRA(GammaExpansion(c3),GammaExpansion(c4))) );\n    AddTriangleLinearColor(pt1,pt2,center, c1,c2,centerColor);\n    AddTriangleLinearColor(pt2,pt3,center, c2,c3,centerColor);\n    AddTriangleLinearColor(pt3,pt4,center, c3,c4,centerColor);\n    AddTriangleLinearColor(pt4,pt1,center, c4,c1,centerColor);\n  end;\nend;\n\nprocedure TBGRAMultishapeFiller.AddQuadLinearMapping(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF;\n  ACulling: TFaceCulling);\nvar\n  mapping: TBGRAQuadLinearScanner;\nbegin\n  mapping := TBGRAQuadLinearScanner.Create(texture,\n    [tex1,tex2,tex3,tex4],\n    [pt1,pt2,pt3,pt4]);\n  mapping.Culling := ACulling;\n  mapping.Padding := true;\n  AddShape(TOnePassFillPolyInfo.Create([pt1,pt2,pt3,pt4]),True,mapping,mapping,BGRAPixelTransparent);\nend;\n\nprocedure TBGRAMultishapeFiller.AddQuadPerspectiveMapping(pt1, pt2, pt3,\n  pt4: TPointF; texture: IBGRAScanner; tex1, tex2, tex3, tex4: TPointF);\nvar persp: TBGRAPerspectiveScannerTransform;\nbegin\n  persp := TBGRAPerspectiveScannerTransform.Create(texture,[tex1,tex2,tex3,tex4],[pt1,pt2,pt3,pt4]);\n  AddShape(TOnePassFillPolyInfo.Create([pt1,pt2,pt3,pt4]),True,persp,persp,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddEllipse(x, y, rx, ry: single;\n  AColor: TBGRAPixel): integer;\nbegin\n  result := AddShape(TFillEllipseInfo.Create(x,y,rx,ry),True,nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddEllipse(x, y, rx, ry: single;\n  ATexture: IBGRAScanner): integer;\nbegin\n  result := AddShape(TFillEllipseInfo.Create(x,y,rx,ry),True,ATexture,nil,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddEllipseBorder(x, y, rx, ry, w: single;\n  AColor: TBGRAPixel): integer;\nbegin\n  result := AddShape(TFillBorderEllipseInfo.Create(x,y,rx,ry,w),True,nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddEllipseBorder(x, y, rx, ry, w: single;\n  ATexture: IBGRAScanner): integer;\nbegin\n  result := AddShape(TFillBorderEllipseInfo.Create(x,y,rx,ry,w),True,ATexture,nil,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddRoundRectangle(x1, y1, x2, y2, rx,\n  ry: single; AColor: TBGRAPixel; options: TRoundRectangleOptions): integer;\nbegin\n  result := AddShape(TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry,options),True,nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddRoundRectangle(x1, y1, x2, y2, rx,\n  ry: single; ATexture: IBGRAScanner; options: TRoundRectangleOptions): integer;\nbegin\n  result := AddShape(TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry,options),True,\n     ATexture,nil,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddRoundRectangleBorder(x1, y1, x2, y2, rx, ry,\n  w: single; AColor: TBGRAPixel; options: TRoundRectangleOptions): integer;\nbegin\n  result := AddShape(TFillBorderRoundRectInfo.Create(x1, y1, x2, y2, rx, ry,w,options),True,\n    nil,nil,AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddRoundRectangleBorder(x1, y1, x2, y2, rx, ry,\n  w: single; ATexture: IBGRAScanner; options: TRoundRectangleOptions): integer;\nbegin\n  result := AddShape(TFillBorderRoundRectInfo.Create(x1, y1, x2, y2, rx, ry,w,options),True,\n    ATexture,nil,BGRAPixelTransparent);\nend;\n\nfunction TBGRAMultishapeFiller.AddRectangle(x1, y1, x2, y2: single;\n  AColor: TBGRAPixel): integer;\nbegin\n  result := AddPolygon([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)],AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddRectangle(x1, y1, x2, y2: single;\n  ATexture: IBGRAScanner): integer;\nbegin\n  result := AddPolygon([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)],ATexture);\nend;\n\nfunction TBGRAMultishapeFiller.AddRectangleBorder(x1, y1, x2, y2, w: single;\n  AColor: TBGRAPixel): integer;\nvar hw : single;\nbegin\n  hw := w/2;\n  if not CheckRectangleBorderBounds(x1,y1,x2,y2,w) then\n    result := AddRectangle(x1-hw,y1-hw,x2+hw,y2+hw,AColor) else\n    result := AddPolygon([PointF(x1-hw,y1-hw),PointF(x2+hw,y1-hw),PointF(x2+hw,y2+hw),PointF(x1-hw,y2+hw),EmptyPointF,\n                PointF(x1+hw,y2-hw),PointF(x2-hw,y2-hw),PointF(x2-hw,y1+hw),PointF(x1+hw,y1+hw)],AColor);\nend;\n\nfunction TBGRAMultishapeFiller.AddRectangleBorder(x1, y1, x2, y2, w: single;\n  ATexture: IBGRAScanner): integer;\nvar hw : single;\nbegin\n  hw := w/2;\n  if not CheckRectangleBorderBounds(x1,y1,x2,y2,w) then\n    result := AddRectangle(x1-hw,y1-hw,x2+hw,y2+hw,ATexture) else\n    result := AddPolygon([PointF(x1-hw,y1-hw),PointF(x2+hw,y1-hw),PointF(x2+hw,y2+hw),PointF(x1-hw,y2+hw),EmptyPointF,\n                PointF(x1+hw,y2-hw),PointF(x2-hw,y2-hw),PointF(x2-hw,y1+hw),PointF(x1+hw,y1+hw)],ATexture);\nend;\n\nprocedure TBGRAMultishapeFiller.OverrideFillMode(AShapeIndex: integer;\n  AFillMode: TFillMode);\nbegin\n  if AShapeIndex < 0 then exit;\n  if AShapeIndex >= nbShapes then raise exception.Create('Index out of bounds');\n  shapes[AShapeIndex].fillMode := AFillMode;\n  shapes[AShapeIndex].fillModeOverride := true;\nend;\n\nprocedure TBGRAMultishapeFiller.Draw(dest: TBGRACustomBitmap; ADrawMode: TDrawMode = dmDrawWithTransparency);\nvar\n  shapeRow: array of record\n    density: PDensity;\n    densMinx,densMaxx: integer;\n    nbInter: integer;\n    inter: array of TIntersectionInfo;\n  end;\n  shapeRowsList: array of integer;\n  NbShapeRows: integer;\n  miny, maxy, minx, maxx,\n  rowminx, rowmaxx: integer;\n\n  procedure SubstractScanlines(src,dest: integer);\n  var i: integer;\n\n    procedure SubstractSegment(srcseg: integer);\n    var x1,x2, x3,x4: single;\n      j: integer;\n\n      procedure AddSegment(xa,xb: single);\n      var nb: PInteger;\n      begin\n        nb := @shapeRow[dest].nbinter;\n        if length(shapeRow[dest].inter) < nb^+2 then\n          setlength(shapeRow[dest].inter, nb^*2+2);\n        with shapeRow[dest] do\n        begin\n          if inter[nb^] = nil then inter[nb^] := shapes[dest].info.CreateIntersectionInfo;\n          inter[nb^].interX := xa;\n          if inter[nb^+1] = nil then inter[nb^+1] := shapes[dest].info.CreateIntersectionInfo;\n          inter[nb^+1].interX := xb;\n        end;\n        inc(nb^,2);\n      end;\n\n    begin\n      x1 := shapeRow[src].inter[(srcseg-1)*2].interX;\n      x2 := shapeRow[src].inter[srcseg*2-1].interX;\n      for j := shapeRow[dest].nbInter div 2 downto 1 do\n      begin\n        x3 := shapeRow[dest].inter[(j-1)*2].interX;\n        x4 := shapeRow[dest].inter[j*2-1].interX;\n        if (x2 <= x3) or (x1 >= x4) then continue; //not overlapping\n        if (x1 <= x3) and (x2 >= x4) then\n          shapeRow[dest].inter[j*2-1].interX := x3 //empty\n        else\n        if (x1 <= x3) and (x2 < x4) then\n          shapeRow[dest].inter[(j-1)*2].interX := x2 //remove left part\n        else\n        if (x1 > x3) and (x2 >= x4) then\n          shapeRow[dest].inter[j*2-1].interX := x1 else //remove right part\n        begin\n          //[x1,x2] is inside [x3,x4]\n          shapeRow[dest].inter[j*2-1].interX := x1; //left part\n          AddSegment(x2,x4);\n        end;\n      end;\n    end;\n\n  begin\n    for i := 1 to shapeRow[src].nbInter div 2 do\n      SubstractSegment(i);\n  end;\n\nvar\n    AliasingOfs: TPointF;\n    useAA: boolean;\n\n  procedure AddOneLineDensity(cury: single);\n  var\n    i,k: integer;\n    ix1,ix2: integer;\n    x1,x2: single;\n  begin\n    for k := 0 to NbShapeRows-1 do\n      with shapeRow[shapeRowsList[k]], shapes[shapeRowsList[k]] do\n      begin\n        //find intersections\n        info.ComputeAndSort(cury, inter, nbInter, fillMode=fmWinding);\n        nbInter := nbInter and not 1; //even\n      end;\n\n      case PolygonOrder of\n        poLastOnTop: begin\n          for k := 1 to NbShapeRows-1 do\n            if shapeRow[shapeRowsList[k]].nbInter > 0 then\n              for i := 0 to k-1 do\n                SubstractScanlines(shapeRowsList[k],shapeRowsList[i]);\n        end;\n        poFirstOnTop: begin\n          for k := 0 to NbShapeRows-2 do\n            if shapeRow[shapeRowsList[k]].nbInter > 0 then\n              for i := k+1 to NbShapeRows-1 do\n                SubstractScanlines(shapeRowsList[k],shapeRowsList[i]);\n        end;\n      end;\n\n      for k := 0 to NbShapeRows-1 do\n      with shapeRow[shapeRowsList[k]] do\n      begin\n        //fill density\n        if not useAA then\n        begin\n          for i := 0 to nbinter div 2 - 1 do\n          begin\n            x1 := inter[i + i].interX;\n            x2 := inter[i + i + 1].interX;\n            ComputeAliasedRowBounds(x1+AliasingOfs.X,x2+AliasingOfs.X,minx,maxx,ix1,ix2);\n\n            if ix1 < densMinx then densMinx := ix1;\n            if ix2 > densMaxx then densMaxx := ix2;\n\n            if ix2 >= ix1 then\n              FillWord(density[ix1-minx],ix2-ix1+1,256);\n          end;\n        end else\n          {$DEFINE INCLUDE_FILLDENSITY}\n          {$i density256.inc}\n      end;\n\n      for k := 0 to NbShapeRows-1 do\n      with shapeRow[shapeRowsList[k]] do\n      begin\n        if densMinX < rowminx then rowminx := densMinX;\n        if densMaxX > rowmaxx then rowmaxx := densMaxX;\n      end;\n  end;\n\ntype\n    TCardinalSum = record\n          sumR,sumG,sumB,sumA: LongWord;\n        end;\n\nvar\n  MultiEmpty: boolean;\n  bounds: TRect;\n\n  xb, yb, yc, k: integer;\n  pdest:    PBGRAPixel;\n\n  curSum,nextSum: ^TCardinalSum;\n  sums: array of TCardinalSum;\n  curAlpha: byte;\n\n  pdens: PDensity;\n  w: UInt32or64;\n  ec: TExpandedPixel;\n  count: integer;\n  ScanNextFunc: function: TBGRAPixel of object;\n\nbegin\n  if nbShapes = 0 then exit;\n  for k := 0 to nbShapes-1 do\n    if not shapes[k].fillModeOverride then shapes[k].fillMode:= fillMode;\n\n  useAA := Antialiasing and (ADrawMode in [dmDrawWithTransparency,dmLinearBlend]);\n  if nbShapes = 1 then\n  begin\n    if useAA then\n      FillShapeAntialias(dest,shapes[0].info,GammaCompression(shapes[0].color),False,shapes[0].texture,shapes[0].fillMode = fmWinding, ADrawMode=dmLinearBlend) else\n      FillShapeAliased(dest,shapes[0].info,GammaCompression(shapes[0].color),False,shapes[0].texture,shapes[0].fillMode = fmWinding, ADrawMode,\n        AliasingIncludeBottomRight);\n    exit;\n  end;\n  bounds := Rect(0,0,0,0);\n  MultiEmpty := True;\n  for k := 0 to nbShapes-1 do\n  begin\n    If BGRAShapeComputeMinMax(shapes[k].info,minx,miny,maxx,maxy,dest) then\n    begin\n      shapes[k].bounds := rect(minx,miny,maxx+1,maxy+1);\n      if MultiEmpty then\n      begin\n        MultiEmpty := False;\n        bounds := shapes[k].bounds;\n      end else\n      begin\n        if minx < bounds.left then bounds.left := minx;\n        if miny < bounds.top then bounds.top := miny;\n        if maxx >= bounds.right then bounds.right := maxx+1;\n        if maxy >= bounds.bottom then bounds.bottom := maxy+1;\n      end;\n    end else\n      shapes[k].bounds := rect(0,0,0,0);\n  end;\n  if MultiEmpty then exit;\n  minx := bounds.left;\n  miny := bounds.top;\n  maxx := bounds.right-1;\n  maxy := bounds.bottom-1;\n\n  setlength(shapeRow, nbShapes);\n  for k := 0 to nbShapes-1 do\n  begin\n    shapeRow[k].inter := shapes[k].info.CreateIntersectionArray;\n    getmem(shapeRow[k].density, (maxx - minx + 2)*sizeof(TDensity)); //more for safety\n  end;\n\n  if AliasingIncludeBottomRight then\n    AliasingOfs := PointF(0.0001,0.0001) else\n    AliasingOfs := PointF(0,0);\n\n  setlength(sums,maxx-minx+1);\n  setlength(shapeRowsList, nbShapes);\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    rowminx := maxx+1;\n    rowmaxx := minx-1;\n\n    //init shape rows\n    NbShapeRows := 0;\n    for k := 0 to nbShapes-1 do\n    if (yb >= shapes[k].bounds.top) and (yb < shapes[k].bounds.Bottom) then\n    begin\n      shapeRowsList[NbShapeRows] := k;\n      inc(NbShapeRows);\n\n      fillchar(shapeRow[k].density^,(maxx-minx+1)*sizeof(TDensity),0);\n      shapeRow[k].densMinx := maxx+1;\n      shapeRow[k].densMaxx := minx-1;\n    end;\n\n    If useAA then\n    begin\n      //precision scan\n      for yc := 0 to AntialiasPrecision - 1 do\n        AddOneLineDensity( yb + (yc * 2 + 1) / (AntialiasPrecision * 2) );\n    end else\n    begin\n      AddOneLineDensity( yb + 0.5 - AliasingOfs.Y );\n    end;\n\n    if rowminx < minx then rowminx := minx;\n    if rowmaxx > maxx then rowmaxx := maxx;\n\n    if rowminx <= rowmaxx then\n    begin\n      FillChar(sums[rowminx-minx],(rowmaxx-rowminx+1)*sizeof(sums[0]),0);\n\n      if useAA then\n        {$define PARAM_ANTIALIASINGFACTOR}\n        {$i multishapeline.inc}\n      else\n        {$i multishapeline.inc};\n\n      pdest := dest.ScanLine[yb] + rowminx;\n      xb := rowminx;\n      nextSum := @sums[xb-minx];\n      case ADrawMode of\n        dmDrawWithTransparency:\n          while xb <= rowmaxx do\n          begin\n            curSum := nextSum;\n            inc(nextSum);\n            with curSum^ do\n            begin\n              if sumA <> 0 then\n              begin\n                ec.red := (sumR+sumA shr 1) div sumA;\n                ec.green := (sumG+sumA shr 1) div sumA;\n                ec.blue := (sumB+sumA shr 1) div sumA;\n                if sumA > 255 then curAlpha := 255 else curAlpha := sumA;\n                ec.alpha := curAlpha shl 8 + curAlpha;\n                count := 1;\n                while (xb < rowmaxx) and (nextSum^.sumA = sumA) and (nextSum^.sumB = sumB)\n                  and (nextSum^.sumG = sumG) and (nextSum^.sumR = sumR) do\n                begin\n                  inc(xb);\n                  inc(nextSum);\n                  inc(count);\n                end;\n                if count = 1 then\n                  DrawExpandedPixelInlineNoAlphaCheck(pdest,ec,curAlpha) else\n                   DrawExpandedPixelsInline(pdest, ec, count );\n                inc(pdest,count-1);\n              end;\n            end;\n            inc(xb);\n            inc(pdest);\n          end;\n\n        dmLinearBlend:\n          while xb <= rowmaxx do\n          begin\n            curSum := nextSum;\n            inc(nextSum);\n            with curSum^ do\n            begin\n              if sumA <> 0 then\n              begin\n                ec.red := (sumR+sumA shr 1) div sumA;\n                ec.green := (sumG+sumA shr 1) div sumA;\n                ec.blue := (sumB+sumA shr 1) div sumA;\n                if sumA > 255 then curAlpha := 255 else curAlpha := sumA;\n                ec.alpha := curAlpha shl 8 + curAlpha;\n                count := 1;\n                while (xb < rowmaxx) and (nextSum^.sumA = sumA) and (nextSum^.sumB = sumB)\n                  and (nextSum^.sumG = sumG) and (nextSum^.sumR = sumR) do\n                begin\n                  inc(xb);\n                  inc(nextSum);\n                  inc(count);\n                end;\n                if count = 1 then\n                  DrawPixelInlineNoAlphaCheck(pdest,GammaCompression(ec)) else\n                begin\n                   DrawPixelsInline(pdest, GammaCompression(ec), count );\n                   inc(pdest,count-1);\n                end;\n              end;\n            end;\n            inc(xb);\n            inc(pdest);\n          end;\n\n        dmXor:\n          while xb <= rowmaxx do\n          begin\n            curSum := nextSum;\n            inc(nextSum);\n            with curSum^ do\n            begin\n              if sumA <> 0 then\n              begin\n                ec.red := (sumR+sumA shr 1) div sumA;\n                ec.green := (sumG+sumA shr 1) div sumA;\n                ec.blue := (sumB+sumA shr 1) div sumA;\n                if sumA > 255 then curAlpha := 255 else curAlpha := sumA;\n                ec.alpha := curAlpha shl 8 + curAlpha;\n                count := 1;\n                while (xb < rowmaxx) and (nextSum^.sumA = sumA) and (nextSum^.sumB = sumB)\n                  and (nextSum^.sumG = sumG) and (nextSum^.sumR = sumR) do\n                begin\n                  inc(xb);\n                  inc(nextSum);\n                  inc(count);\n                end;\n                XorInline(pdest,GammaCompression(ec),count);\n                inc(pdest,count-1);\n              end;\n            end;\n            inc(xb);\n            inc(pdest);\n          end;\n\n        dmSet:\n          while xb <= rowmaxx do\n          begin\n            curSum := nextSum;\n            inc(nextSum);\n            with curSum^ do\n            begin\n              if sumA <> 0 then\n              begin\n                ec.red := (sumR+sumA shr 1) div sumA;\n                ec.green := (sumG+sumA shr 1) div sumA;\n                ec.blue := (sumB+sumA shr 1) div sumA;\n                if sumA > 255 then curAlpha := 255 else curAlpha := sumA;\n                ec.alpha := curAlpha shl 8 + curAlpha;\n                count := 1;\n                while (xb < rowmaxx) and (nextSum^.sumA = sumA) and (nextSum^.sumB = sumB)\n                  and (nextSum^.sumG = sumG) and (nextSum^.sumR = sumR) do\n                begin\n                  inc(xb);\n                  inc(nextSum);\n                  inc(count);\n                end;\n                FillInline(pdest,GammaCompression(ec),count);\n                inc(pdest,count-1);\n              end;\n            end;\n            inc(xb);\n            inc(pdest);\n          end;\n\n        dmSetExceptTransparent:\n          while xb <= rowmaxx do\n          begin\n            curSum := nextSum;\n            inc(nextSum);\n            with curSum^ do\n            begin\n              if sumA >= 255 then\n              begin\n                ec.red := (sumR+sumA shr 1) div sumA;\n                ec.green := (sumG+sumA shr 1) div sumA;\n                ec.blue := (sumB+sumA shr 1) div sumA;\n                if sumA > 255 then curAlpha := 255 else curAlpha := sumA;\n                ec.alpha := curAlpha shl 8 + curAlpha;\n                count := 1;\n                while (xb < rowmaxx) and (nextSum^.sumA = sumA) and (nextSum^.sumB = sumB)\n                  and (nextSum^.sumG = sumG) and (nextSum^.sumR = sumR) do\n                begin\n                  inc(xb);\n                  inc(nextSum);\n                  inc(count);\n                end;\n                FillInline(pdest,GammaCompression(ec),count);\n                inc(pdest,count-1);\n              end;\n            end;\n            inc(xb);\n            inc(pdest);\n          end;\n\n      end;\n    end;\n\n  end;\n\n  for k := 0 to nbShapes-1 do\n  begin\n    freemem(shapeRow[k].density);\n    shapes[k].info.FreeIntersectionArray(shapeRow[k].inter);\n  end;\n\n  dest.InvalidateBitmap;\nend;\n\n//////////////////////////////////////////////////////////////////////////////\n\nprocedure FillEllipseAntialias(bmp: TCustomUniversalBitmap; x, y, rx,\n  ry: single; ABrush: TUniversalBrush);\nvar\n  info: TFillEllipseInfo;\nbegin\n  if ABrush.DoesNothing or (rx = 0) or (ry = 0) or (x = EmptySingle) or (y = EmptySingle) then exit;\n  info := TFillEllipseInfo.Create(x, y, rx, ry);\n  FillShapeAntialias(bmp, info, ABrush, False);\n  info.Free;\nend;\n\nprocedure FillEllipseAntialias(bmp: TBGRACustomBitmap; x, y, rx, ry: single;\n  c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp,c,EraseMode,nil,LinearBlend);\n  FillEllipseAntialias(bmp, x,y,rx,ry, b);\nend;\n\nprocedure FillEllipseAntialiasWithTexture(bmp: TBGRACustomBitmap; x, y, rx,\n  ry: single; scan: IBGRAScanner; LinearBlend: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp, BGRAPixelTransparent,false,scan,LinearBlend);\n  FillEllipseAntialias(bmp, x,y,rx,ry, b);\nend;\n\nprocedure BorderEllipseAntialias(bmp: TCustomUniversalBitmap; x, y, rx, ry,\n  w: single; ABrush: TUniversalBrush);\nvar\n  info: TFillBorderEllipseInfo;\nbegin\n  if ABrush.DoesNothing or (w=0) or (x = EmptySingle) or (y = EmptySingle) then exit;\n  info := TFillBorderEllipseInfo.Create(x, y, rx, ry, w);\n  FillShapeAntialias(bmp, info, ABrush, False);\n  info.Free;\nend;\n\nprocedure BorderEllipseAntialias(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp,c,EraseMode,nil,LinearBlend);\n  BorderEllipseAntialias(bmp, x,y,rx,ry,w,b);\nend;\n\nprocedure BorderEllipseAntialiasWithTexture(bmp: TBGRACustomBitmap; x, y, rx,\n  ry, w: single; scan: IBGRAScanner; LinearBlend: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AnyBrush(b, bmp,BGRAPixelTransparent,false,scan,LinearBlend);\n  BorderEllipseAntialias(bmp, x,y,rx,ry,w,b);\nend;\n   \nprocedure BorderEllipse(bmp: TCustomUniversalBitmap; x, y, rx, ry, w: single;\n  ABrush: TUniversalBrush; AAlpha: word);\nvar\n  info: TFillBorderEllipseInfo;\nbegin\n  if ABrush.DoesNothing or ((rx = 0) and (ry = 0)) or (w=0) or (x = EmptySingle) or (y = EmptySingle) then exit;\n  info := TFillBorderEllipseInfo.Create(x, y, rx, ry, w);\n  FillShapeAliased(bmp, info, ABrush, AAlpha, False);\n  info.Free;\nend;\n\nprocedure BorderEllipse(bmp: TBGRACustomBitmap; x, y, rx, ry, w: single;\n  c: TBGRAPixel; EraseMode: boolean; drawmode: TDrawMode);\nvar\n  bFill: TUniversalBrush;\nbegin\n  AnyBrush(bFill, bmp, c,EraseMode,nil,drawmode);\n  BorderEllipse(bmp, x,y,rx,ry,w,bFill);\nend;\n\nprocedure BorderEllipseWithTexture(bmp: TBGRACustomBitmap; x, y, rx, ry,\n  w: single; scan: IBGRAScanner; drawmode: TDrawMode);\nvar\n  bFill: TUniversalBrush;\nbegin\n  bmp.ScannerBrush(bFill, scan,drawMode);\n  BorderEllipse(bmp, x,y,rx,ry,w,bFill);\nend;\n\nprocedure FillRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1, x2, y2,\n  rx, ry: single; options: TRoundRectangleOptions; c: TBGRAPixel; EraseMode: boolean; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TFillRoundRectangleInfo;\nbegin\n  if (x1 = x2) or (y1 = y2) then exit;\n  info := TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry, options, APixelCenteredCoordinates);\n  FillShapeAntialias(bmp, info, c, EraseMode,nil, False, LinearBlend);\n  info.Free;\nend;\n\nprocedure FillRoundRectangleAntialiasWithTexture(bmp: TBGRACustomBitmap; x1,\n  y1, x2, y2, rx, ry: single; options: TRoundRectangleOptions;\n  scan: IBGRAScanner; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TFillRoundRectangleInfo;\nbegin\n  if (x1 = x2) or (y1 = y2) then exit;\n  info := TFillRoundRectangleInfo.Create(x1, y1, x2, y2, rx, ry, options, APixelCenteredCoordinates);\n  FillShapeAntialiasWithTexture(bmp, info, scan, False, LinearBlend);\n  info.Free;\nend;\n\nprocedure BorderRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1, x2,\n  y2, rx, ry, w: single; options: TRoundRectangleOptions; c: TBGRAPixel;\n  EraseMode: boolean; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TFillShapeInfo;\n  oldLinear: boolean;\nbegin\n  if w=0 then exit;\n  if ((rx=0) or (ry=0)) and not EraseMode then\n  begin\n    oldLinear := bmp.LinearAntialiasing;\n    bmp.LinearAntialiasing := LinearBlend;\n    bmp.RectangleAntialias(x1,y1,x2,y2,c,w);\n    bmp.LinearAntialiasing := oldLinear;\n    exit;\n  end;\n  info := TFillBorderRoundRectInfo.Create(x1, y1, x2,y2, rx, ry, w, options, APixelCenteredCoordinates);\n  FillShapeAntialias(bmp, info, c, EraseMode, nil, False, LinearBlend);\n  info.Free;\nend;\n\nprocedure BorderRoundRectangleAntialiasWithTexture(bmp: TBGRACustomBitmap; x1,\n  y1, x2, y2, rx, ry, w: single; options: TRoundRectangleOptions;\n  scan: IBGRAScanner; LinearBlend: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TFillBorderRoundRectInfo;\n  oldLinear: Boolean;\nbegin\n  if w=0 then exit;\n  if (rx=0) or (ry=0) then\n  begin\n    oldLinear := bmp.LinearAntialiasing;\n    bmp.LinearAntialiasing := LinearBlend;\n    bmp.RectangleAntialias(x1,y1,x2,y2,scan,w);\n    bmp.LinearAntialiasing := oldLinear;\n    exit;\n  end;\n  info := TFillBorderRoundRectInfo.Create(x1, y1, x2,y2, rx, ry, w, options, APixelCenteredCoordinates);\n  FillShapeAntialiasWithTexture(bmp, info, scan, False, LinearBlend);\n  info.Free;\nend;\n\nprocedure BorderAndFillRoundRectangleAntialias(bmp: TBGRACustomBitmap; x1, y1,\n  x2, y2, rx, ry, w: single; options: TRoundRectangleOptions; bordercolor,\n  fillcolor: TBGRAPixel; bordertexture,filltexture: IBGRAScanner; EraseMode: boolean; APixelCenteredCoordinates: boolean);\nvar\n  info: TFillBorderRoundRectInfo;\n  multi: TBGRAMultishapeFiller;\nbegin\n  if (rx = 0) or (ry = 0) then exit;\n  info := TFillBorderRoundRectInfo.Create(x1, y1, x2,y2, rx, ry, w, options, APixelCenteredCoordinates);\n  if not EraseMode then\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    if filltexture <> nil then\n      multi.AddShape(info.innerBorder, filltexture) else\n      multi.AddShape(info.innerBorder, fillcolor);\n    if w<>0 then\n    begin\n      if bordertexture <> nil then\n        multi.AddShape(info, bordertexture) else\n        multi.AddShape(info, bordercolor);\n    end;\n    multi.Draw(bmp);\n    multi.Free;\n  end else\n  begin\n    FillShapeAntialias(bmp, info.innerBorder, fillcolor, EraseMode, nil, False, False);\n    FillShapeAntialias(bmp, info, bordercolor, EraseMode, nil, False, False);\n  end;\n  info.Free;\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrapolygonaliased.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ This unit provides fast aliased polygon routines. }\nunit BGRAPolygonAliased;\n\n{$mode objfpc}{$H+}\n\n{$i bgrasse.inc}\n\ninterface\n\n{ To do aliased drawing, only one line is intersected with polygons for each output scanline.\n  Along with intersection coordinates, color and texture coordinates are computed using\n  linear interpolation. Inverse values are used for projective transform. }\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRAFillInfo, BGRASSE;\n\ntype\n  //segment information for linear color\n  TLinearColorInfo = record\n    Color, ColorSlopes: TColorF;\n  end;\n  PLinearColorInfo = ^TLinearColorInfo;\n  ArrayOfTColorF = array of TColorF;\n\n  { Intersection info for linear gradient }\n  TLinearColorGradientIntersectionInfo = class(TIntersectionInfo)\n    Color: TColorF;\n  end;\n\n  { Fill information for a polygon with linear gradient }\n  TPolygonLinearColorGradientInfo = class(TOnePassFillPolyInfo)\n  protected\n    FColors: array of TColorF;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding,\n      ANumSegment: integer; dy: single; AData: pointer); override;\n  public\n    constructor Create(const points: array of TPointF; const Colors: array of TBGRAPixel);\n    function CreateSegmentData(numPt, nextPt: integer; ASeg: PCustomPointRecord): pointer; override;\n    function CreateIntersectionInfo: TIntersectionInfo; override;\n  end;\n\nprocedure PolygonLinearColorGradientAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonLinearColorGradientInfo;\n  NonZeroWinding: boolean); overload;\nprocedure PolygonLinearColorGradientAliased(bmp: TBGRACustomBitmap; const points: array of TPointF;\n  const Colors: array of TBGRAPixel; NonZeroWinding: boolean); overload;\n\ntype\n  //segment information for linear color\n  TPerspectiveColorInfo = record\n    ColorDivZ, ColorSlopesDivZ: TColorF;\n    InvZ, InvZSlope: single;\n  end;\n  PPerspectiveColorInfo = ^TPerspectiveColorInfo;\n\n  { Intersection information for gradient with perspective gradient }\n  TPerspectiveColorGradientIntersectionInfo = class(TIntersectionInfo)\n    ColorDivZ: TColorF;\n    coordInvZ: single;\n  end;\n\n  { Fill information for a polygon with perspective gradient }\n  TPolygonPerspectiveColorGradientInfo = class(TOnePassFillPolyInfo)\n  protected\n    FColors: array of TColorF;\n    FPointsZ: array of single;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding,\n      ANumSegment: integer; dy: single; AData: pointer); override;\n  public\n    constructor Create(const points: array of TPointF; const pointsZ: array of single; const Colors: array of TBGRAPixel);\n    function CreateSegmentData(numPt, nextPt: integer; ASeg: PCustomPointRecord): pointer; override;\n    function CreateIntersectionInfo: TIntersectionInfo; override;\n  end;\n\nprocedure PolygonPerspectiveColorGradientAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonPerspectiveColorGradientInfo;\n  NonZeroWinding: boolean; zbuffer: psingle = nil); overload;\nprocedure PolygonPerspectiveColorGradientAliased(bmp: TBGRACustomBitmap; const points: array of TPointF;\n  const pointsZ: array of single; const Colors: array of TBGRAPixel; NonZeroWinding: boolean; zbuffer: psingle = nil); overload;\n\ntype\n  //segment information for linear texture\n  TLinearTextureInfo = record\n    TexCoord: TPointF;\n    TexCoordSlopes: TPointF;\n    lightness: single;\n    lightnessSlope: single;\n  end;\n  PLinearTextureInfo = ^TLinearTextureInfo;\n\n  { Intersection information for linear texture mapping }\n  TLinearTextureMappingIntersectionInfo = class(TIntersectionInfo)\n    texCoord: TPointF;\n    lightness: word;\n  end;\n\n  { Fill information for a polygon with linear texture mapping }\n  TPolygonLinearTextureMappingInfo = class(TOnePassFillPolyInfo)\n  protected\n    FTexCoords: array of TPointF;\n    FLightnesses: array of Word;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding,\n      ANumSegment: integer; dy: single; AData: pointer); override;\n  public\n    constructor Create(const points: array of TPointF; const texCoords: array of TPointF); overload;\n    constructor Create(const points: array of TPointF; const texCoords: array of TPointF; const lightnesses: array of word); overload;\n    function CreateSegmentData(numPt, nextPt: integer; ASeg: PCustomPointRecord): pointer; override;\n    function CreateIntersectionInfo: TIntersectionInfo; override;\n  end;\n\nprocedure PolygonLinearTextureMappingAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonLinearTextureMappingInfo;\n  texture: IBGRAScanner; TextureInterpolation: Boolean; NonZeroWinding: boolean); overload;\n\nprocedure PolygonLinearTextureMappingAliased(bmp: TBGRACustomBitmap; const points: array of TPointF; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean; NonZeroWinding: boolean); overload;\nprocedure PolygonLinearTextureMappingAliasedWithLightness(bmp: TBGRACustomBitmap; const points: array of TPointF; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean; lightnesses: array of word; NonZeroWinding: boolean); overload;\n\ntype\n  //segment information for perspective texture. Use inverse Z and slopes.\n  TPerspectiveTextureInfo = record\n    InvZ,InvZSlope: Single;\n    TexCoordDivByZ: TPointF;\n    TexCoordDivByZSlopes: TPointF;\n    lightness: single;\n    lightnessSlope: single;\n    Position3D, Normal3D: TPoint3D_128;\n    Position3DSlope, Normal3DSlope: TPoint3D_128;\n  end;\n  PPerspectiveTextureInfo = ^TPerspectiveTextureInfo;\n\n  { Intersection information for perspective texture mapping }\n  TPerspectiveTextureMappingIntersectionInfo = class(TIntersectionInfo)\n    texCoordDivByZ: TPointF;\n    coordInvZ: single;\n    lightness: word;\n    Position3D, Normal3D: TPoint3D_128;\n  end;\n\n  { Fill information for a polygon with perspective texture mapping with simple lighting }\n  TPolygonPerspectiveTextureMappingInfo = class(TOnePassFillPolyInfo)\n  protected\n    FTexCoords: array of TPointF;\n    FPointsZ: array of single;\n    FLightnesses: array of Word;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding,\n      ANumSegment: integer; dy: single; AData: pointer); override;\n  public\n    constructor Create(const points: array of TPointF; const pointsZ: array of single; const texCoords: array of TPointF); overload;\n    constructor Create(const points: array of TPointF; const pointsZ: array of single; const texCoords: array of TPointF; const lightnesses: array of word); overload;\n    function CreateSegmentData(numPt, nextPt: integer; ASeg: PCustomPointRecord): pointer; override;\n    function CreateIntersectionInfo: TIntersectionInfo; override;\n  end;\n\n  { Fill information for a polygon with perspective texture mapping with shading }\n  TPolygonPerspectiveMappingShaderInfo = class(TOnePassFillPolyInfo)\n  protected\n    FTexCoords: array of TPointF;\n    FPositions3D, FNormals3D: array of TPoint3D_128;\n    procedure SetIntersectionValues(AInter: TIntersectionInfo; AInterX: Single; AWinding,\n      ANumSegment: integer; dy: single; AData: pointer); override;\n  public\n    constructor Create(const points: array of TPointF; const points3D: array of TPoint3D; const normals: array of TPoint3D; const texCoords: array of TPointF); overload;\n    constructor Create(const points: array of TPointF; const points3D: array of TPoint3D_128; const normals: array of TPoint3D_128; const texCoords: array of TPointF); overload;\n    function CreateSegmentData(numPt, nextPt: integer; ASeg: PCustomPointRecord): pointer; override;\n    function CreateIntersectionInfo: TIntersectionInfo; override;\n  end;\n\n  TShaderFunction3D = function (Context: PBasicLightingContext; Color: TBGRAPixel): TBGRAPixel of object;\n\nprocedure PolygonPerspectiveTextureMappingAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonPerspectiveTextureMappingInfo;\n         texture: IBGRAScanner; TextureInterpolation: Boolean; NonZeroWinding: boolean; zbuffer: psingle = nil); overload;\nprocedure PolygonPerspectiveTextureMappingAliased(bmp: TBGRACustomBitmap; const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner;\n           const texCoords: array of TPointF; TextureInterpolation: Boolean; NonZeroWinding: boolean; zbuffer: psingle = nil); overload;\nprocedure PolygonPerspectiveTextureMappingAliasedWithLightness(bmp: TBGRACustomBitmap; const points: array of TPointF; const pointsZ: array of single; texture: IBGRAScanner;\n           const texCoords: array of TPointF; TextureInterpolation: Boolean; lightnesses: array of word; NonZeroWinding: boolean; zbuffer: psingle = nil); overload;\n\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonPerspectiveMappingShaderInfo;\n         texture: IBGRAScanner; TextureInterpolation: Boolean; ShaderFunction: TShaderFunction3D; NonZeroWinding: boolean;\n         solidColor: TBGRAPixel; zbuffer: psingle = nil; ShaderContext: PBasicLightingContext= nil); overload;\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap; const points: array of TPointF; const points3D: array of TPoint3D;\n           const normals: array of TPoint3D; texture: IBGRAScanner; const texCoords: array of TPointF;\n           TextureInterpolation: Boolean; ShaderFunction: TShaderFunction3D; NonZeroWinding: boolean;\n           solidColor: TBGRAPixel; zbuffer: psingle = nil; ShaderContext: PBasicLightingContext= nil); overload;\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap; const points: array of TPointF; const points3D: array of TPoint3D_128;\n           const normals: array of TPoint3D_128; texture: IBGRAScanner; const texCoords: array of TPointF;\n           TextureInterpolation: Boolean; ShaderFunction: TShaderFunction3D; NonZeroWinding: boolean;\n           solidColor: TBGRAPixel; zbuffer: psingle = nil; ShaderContext: PBasicLightingContext= nil); overload;\n\n{ Aliased round rectangle }\nprocedure BGRARoundRectAliased(dest: TBGRACustomBitmap; X1, Y1, X2, Y2: integer;\n  DX, DY: integer; BorderColor, FillColor: TBGRAPixel; FillTexture: IBGRAScanner = nil; ADrawMode: TDrawMode = dmDrawWithTransparency;\n  skipFill: boolean = false); overload;\nprocedure BGRARoundRectAliased(dest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer;\n  DX, DY: integer; const BorderColor, FillColor: TUniversalBrush; AAlpha: Word; skipBorder: boolean = false; skipFill: boolean = false); overload;\nprocedure BGRAFillRoundRectAliased(dest: TBGRACustomBitmap; X1, Y1, X2, Y2: integer;\n  DX, DY: integer; FillColor: TBGRAPixel; FillTexture: IBGRAScanner = nil; ADrawMode: TDrawMode = dmDrawWithTransparency);\n\nimplementation\n\nuses Math, BGRABlend, BGRAPolygon;\n\n{ TPolygonPerspectiveColorGradientInfo }\n\nprocedure TPolygonPerspectiveColorGradientInfo.SetIntersectionValues(\n  AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer;\n  dy: single; AData: pointer);\nvar\n  info: PPerspectiveColorInfo;\nbegin\n  AInter.SetValues(AInterX,AWinding,ANumSegment);\n  info := PPerspectiveColorInfo(AData);\n  TPerspectiveColorGradientIntersectionInfo(AInter).coordInvZ := dy*info^.InvZSlope + info^.InvZ;\n  TPerspectiveColorGradientIntersectionInfo(AInter).ColorDivZ := info^.ColorDivZ + info^.ColorSlopesDivZ*dy;\nend;\n\nconstructor TPolygonPerspectiveColorGradientInfo.Create(\n  const points: array of TPointF; const pointsZ: array of single;\n  const Colors: array of TBGRAPixel);\nvar\n  i: Integer;\n  ec: TExpandedPixel;\nbegin\n  if (length(Colors) <> length(points)) or (length(points) <> length(pointsZ)) then\n    raise Exception.Create('Dimensions mismatch');\n  inherited Create(points);\n\n  SetLength(FColors, length(FPoints));\n  SetLength(FPointsZ, length(FPoints));\n  for i := 0 to high(FPoints) do\n  begin\n    ec := GammaExpansion(Colors[FPoints[i].originalIndex]);\n    FColors[i] := ColorF(ec.red,ec.green,ec.blue,ec.alpha);\n    FPointsZ[i] := pointsZ[FPoints[i].originalIndex];\n  end;\nend;\n\nfunction TPolygonPerspectiveColorGradientInfo.CreateSegmentData(numPt, nextPt: integer;\n  ASeg: PCustomPointRecord): pointer;\nvar\n  info: PPerspectiveColorInfo;\n  InvTy: single;\n  CurColorDivByZ,NextColorDivByZ: TColorF;\n  CurInvZ,NextInvZ: single;\nbegin\n  New(info);\n  InvTy := 1/(ASeg^.y2-ASeg^.y);\n  CurInvZ := 1/FPointsZ[numPt];\n  CurColorDivByZ := FColors[numPt]*CurInvZ;\n  NextInvZ := 1/FPointsZ[nextPt];\n  NextColorDivByZ := FColors[nextPt]*NextInvZ;\n\n  info^.ColorSlopesDivZ := (NextColorDivByZ - CurColorDivByZ)*InvTy;\n  info^.ColorDivZ := CurColorDivByZ;\n\n  info^.InvZSlope := (NextInvZ-CurInvZ)*InvTy;\n  info^.InvZ := CurInvZ;\n\n  Result:= info;\nend;\n\nfunction TPolygonPerspectiveColorGradientInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  Result:= TPerspectiveColorGradientIntersectionInfo.Create;\nend;\n\n{ TPolygonLinearColorGradientInfo }\n\nprocedure TPolygonLinearColorGradientInfo.SetIntersectionValues(\n  AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer;\n  dy: single; AData: pointer);\nvar\n  info: PLinearColorInfo;\nbegin\n  AInter.SetValues(AInterX,AWinding,ANumSegment);\n  info := PLinearColorInfo(AData);\n  TLinearColorGradientIntersectionInfo(AInter).color := info^.Color + info^.ColorSlopes*dy;\nend;\n\nconstructor TPolygonLinearColorGradientInfo.Create(\n  const points: array of TPointF; const Colors: array of TBGRAPixel);\nvar\n  i: Integer;\n  ec: TExpandedPixel;\nbegin\n  if length(Colors) <> length(points) then\n    raise Exception.Create('Dimensions mismatch');\n\n  inherited Create(Points);\n  setlength(FColors, length(FPoints));\n  for i := 0 to high(FColors) do\n  begin\n    ec := GammaExpansion(Colors[FPoints[i].originalIndex]);\n    FColors[i] := ColorF(ec.red,ec.green,ec.blue,ec.alpha);\n  end;\nend;\n\nfunction TPolygonLinearColorGradientInfo.CreateSegmentData(numPt, nextPt: integer;\n  ASeg: PCustomPointRecord): pointer;\nvar\n  info: PLinearColorInfo;\n  ty: single;\nbegin\n  New(info);\n  ty := ASeg^.y2 - ASeg^.y;\n  info^.ColorSlopes := (FColors[nextPt] - FColors[numPt])*(1/ty);\n  info^.Color := FColors[numPt];\n  Result:= info;\nend;\n\nfunction TPolygonLinearColorGradientInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  Result:= TLinearColorGradientIntersectionInfo.Create;\nend;\n\nprocedure PolygonLinearColorGradientAliased(bmp: TBGRACustomBitmap;\n  polyInfo: TPolygonLinearColorGradientInfo; NonZeroWinding: boolean);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n\n  procedure DrawGradientLine(yb: integer; ix1: integer; ix2: integer;\n    x1: Single; c1: TColorF; x2: Single; c2: TColorF);\n  var\n    colorPos: TColorF;\n    colorStep: TColorF;\n    t: single;\n    pdest: PBGRAPixel;\n    i: LongInt;\n    ec: TExpandedPixel;\n    {%H-}cInt: packed record\n        r,g,b,a: integer;\n       end;\n    {$IFDEF BGRASSE_AVAILABLE} c: TBGRAPixel; {$ENDIF}\n  begin\n    t := ((ix1+0.5)-x1)/(x2-x1);\n    colorPos := c1 + (c2-c1)*t;\n    colorStep := (c2-c1)*(1/(x2-x1));\n    pdest := bmp.ScanLine[yb]+ix1;\n\n    {$IFDEF BGRASSE_AVAILABLE} {$asmmode intel}\n    If UseSSE then\n    begin\n      asm\n        movups xmm4, colorPos\n        movups xmm5, colorStep\n      end;\n      If UseSSE2 then\n      begin\n        for i := ix1 to ix2 do\n        begin\n          asm\n            cvtps2dq xmm0,xmm4\n            movups cInt, xmm0\n            addps xmm4,xmm5\n          end;\n          c.red := GammaCompressionTab[cInt.r];\n          c.green := GammaCompressionTab[cInt.g];\n          c.blue := GammaCompressionTab[cInt.b];\n          c.alpha := GammaCompressionTab[cInt.a];\n          DrawPixelInlineWithAlphaCheck(pdest, c);\n          inc(pdest);\n        end;\n      end else\n      begin\n        for i := ix1 to ix2 do\n        begin\n          asm\n            movups colorPos, xmm4\n            addps xmm4,xmm5\n          end;\n          ec.red := round(colorPos[1]);\n          ec.green := round(colorPos[2]);\n          ec.blue := round(colorPos[3]);\n          ec.alpha := round(colorPos[4]);\n          DrawPixelInlineWithAlphaCheck(pdest, GammaCompression(ec));\n          inc(pdest);\n        end;\n      end;\n    end else\n    {$ENDIF}\n    for i := ix1 to ix2 do\n    begin\n      ec.red := round(colorPos[1]);\n      ec.green := round(colorPos[2]);\n      ec.blue := round(colorPos[3]);\n      ec.alpha := round(colorPos[4]);\n      DrawPixelInlineWithAlphaCheck(pdest, GammaCompression(ec));\n      colorPos := colorPos + colorStep;\n      inc(pdest);\n    end;\n  end;\n\nvar\n  miny, maxy, minx, maxx: integer;\n\n  yb, i: integer;\n  x1, x2: single;\n\n  ix1, ix2: integer;\n\nbegin\n  If not BGRAShapeComputeMinMax(polyInfo,minx,miny,maxx,maxy,bmp) then exit;\n  inter := polyInfo.CreateIntersectionArray;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //find intersections\n    polyInfo.ComputeAndSort(yb+0.5,inter,nbInter,NonZeroWinding);\n\n    for i := 0 to nbinter div 2 - 1 do\n    begin\n      x1 := inter[i + i].interX;\n      x2 := inter[i + i+ 1].interX;\n\n      if x1 <> x2 then\n      begin\n        ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n        if ix1 <= ix2 then\n          DrawGradientLine(yb,ix1,ix2,\n            x1,TLinearColorGradientIntersectionInfo(inter[i+i]).Color,\n            x2,TLinearColorGradientIntersectionInfo(inter[i+i+1]).Color);\n      end;\n    end;\n  end;\n\n  polyInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\nend;\n\nprocedure PolygonLinearColorGradientAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; const Colors: array of TBGRAPixel;\n  NonZeroWinding: boolean);\nvar polyInfo: TPolygonLinearColorGradientInfo;\nbegin\n  polyInfo := TPolygonLinearColorGradientInfo.Create(points,Colors);\n  PolygonLinearColorGradientAliased(bmp,polyInfo,NonZeroWinding);\n  polyInfo.Free;\nend;\n\n{ TPolygonLinearTextureMappingInfo }\n\nprocedure TPolygonLinearTextureMappingInfo.SetIntersectionValues(\n  AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer;\n  dy: single; AData: pointer);\nvar\n  info: PLinearTextureInfo;\nbegin\n  AInter.SetValues(AInterX,AWinding,ANumSegment);\n  info := PLinearTextureInfo(AData);\n  TLinearTextureMappingIntersectionInfo(AInter).texCoord := info^.TexCoord + info^.TexCoordSlopes*dy;\n  if FLightnesses<>nil then\n    TLinearTextureMappingIntersectionInfo(AInter).lightness := round(info^.lightness + info^.lightnessSlope*dy)\n  else\n    TLinearTextureMappingIntersectionInfo(AInter).lightness := 32768;\nend;\n\nconstructor TPolygonLinearTextureMappingInfo.Create(const points: array of TPointF;\n  const texCoords: array of TPointF);\nvar\n  i: Integer;\nbegin\n  if length(texCoords) <> length(points) then\n    raise Exception.Create('Dimensions mismatch');\n  inherited Create(points);\n  SetLength(FTexCoords, length(FPoints));\n  for i := 0 to high(FPoints) do\n    FTexCoords[i] := texCoords[FPoints[i].originalIndex];\nend;\n\nconstructor TPolygonLinearTextureMappingInfo.Create(\n  const points: array of TPointF; const texCoords: array of TPointF;\n  const lightnesses: array of word);\nvar\n  i: Integer;\nbegin\n  if (length(texCoords) <> length(points)) or (length(lightnesses) <> length(points)) then\n    raise Exception.Create('Dimensions mismatch');\n  inherited Create(points);\n  SetLength(FTexCoords, length(FPoints));\n  setlength(FLightnesses, length(FPoints));\n  for i := 0 to high(FPoints) do\n  begin\n    FTexCoords[i] := texCoords[FPoints[i].originalIndex];\n    FLightnesses[i] := lightnesses[FPoints[i].originalIndex];\n  end;\nend;\n\nfunction TPolygonLinearTextureMappingInfo.CreateSegmentData(numPt, nextPt: integer;\n  ASeg: PCustomPointRecord): pointer;\nvar\n  info: PLinearTextureInfo;\n  ty: single;\nbegin\n  New(info);\n  ty := ASeg^.y2-ASeg^.y;\n  info^.TexCoordSlopes := (FTexCoords[nextPt] - FTexCoords[numPt])*(1/ty);\n  info^.TexCoord := FTexCoords[numPt];\n  if FLightnesses <> nil then\n  begin\n    info^.lightnessSlope := (FLightnesses[nextPt] - FLightnesses[numPt])*(1/ty);\n    info^.lightness := FLightnesses[numPt];\n  end else\n  begin\n    info^.lightness := 32768;\n    info^.lightnessSlope := 0;\n  end;\n  Result:= info;\nend;\n\nfunction TPolygonLinearTextureMappingInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  result := TLinearTextureMappingIntersectionInfo.Create;\nend;\n\n{$hints off}\n\nprocedure PolygonPerspectiveColorGradientAliased(bmp: TBGRACustomBitmap;\n  polyInfo: TPolygonPerspectiveColorGradientInfo; NonZeroWinding: boolean; zbuffer: psingle);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n\n  procedure DrawGradientLine(yb: integer; ix1: integer; ix2: integer;\n    x1: Single; info1: TPerspectiveColorGradientIntersectionInfo; x2: Single; info2: TPerspectiveColorGradientIntersectionInfo);\n  var\n    diff,colorPos,{%H-}colorPosByZ: TColorF;\n    colorStep: TColorF;\n    t: single;\n    pdest: PBGRAPixel;\n    i: LongInt;\n    ec: TExpandedPixel;\n    invDx: single;\n    z,invZ,InvZStep: single;\n    r,g,b,a: integer;\n    {$IFDEF BGRASSE_AVAILABLE}minVal,maxVal: single;\n    cInt: packed record\n      r,g,b,a: integer;\n    end;\n    c: TBGRAPixel;{$ENDIF}\n    zbufferpos: psingle;\n\n  begin\n    invDx := 1/(x2-x1);\n    t := ((ix1+0.5)-x1)*InvDx;\n    diff := info2.ColorDivZ-info1.ColorDivZ;\n    colorPos := info1.ColorDivZ + diff*t;\n    colorStep := diff*InvDx;\n    invZ := info1.coordInvZ + (info2.coordInvZ-info1.coordInvZ)*t;\n    InvZStep := (info2.coordInvZ-info1.coordInvZ)*InvDx;\n    pdest := bmp.ScanLine[yb]+ix1;\n    if zbuffer <> nil then\n    begin\n    {$DEFINE PARAM_USEZBUFFER}\n      zbufferpos := zbuffer + yb*bmp.Width + ix1;\n      {$IFDEF BGRASSE_AVAILABLE}\n      If UseSSE then\n      begin\n        {$DEFINE PARAM_USESSE}\n        If UseSSE2 then\n        begin\n          {$DEFINE PARAM_USESSE2}\n          {$i perspectivecolorscan.inc}\n          {$UNDEF PARAM_USESSE2}\n        end else\n        begin\n          {$i perspectivecolorscan.inc}\n        end;\n        {$UNDEF PARAM_USESSE}\n      end else\n      {$ENDIF}\n      begin\n        {$i perspectivecolorscan.inc}\n      end;\n    {$UNDEF PARAM_USEZBUFFER}\n    end else\n    begin\n      {$IFDEF BGRASSE_AVAILABLE}\n      If UseSSE then\n      begin\n        {$DEFINE PARAM_USESSE}\n        If UseSSE2 then\n        begin\n          {$DEFINE PARAM_USESSE2}\n          {$i perspectivecolorscan.inc}\n          {$UNDEF PARAM_USESSE2}\n        end else\n        begin\n          {$i perspectivecolorscan.inc}\n        end;\n        {$UNDEF PARAM_USESSE}\n      end else\n      {$ENDIF}\n      begin\n        {$i perspectivecolorscan.inc}\n      end;\n    end;\n  end;\n\nvar\n  miny, maxy, minx, maxx: integer;\n\n  yb, i: integer;\n  x1, x2: single;\n\n  ix1, ix2: integer;\n\nbegin\n  If not BGRAShapeComputeMinMax(polyInfo,minx,miny,maxx,maxy,bmp) then exit;\n  inter := polyInfo.CreateIntersectionArray;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //find intersections\n    polyInfo.ComputeAndSort(yb+0.5,inter,nbInter,NonZeroWinding);\n\n    for i := 0 to nbinter div 2 - 1 do\n    begin\n      x1 := inter[i + i].interX;\n      x2 := inter[i + i+ 1].interX;\n\n      if x1 <> x2 then\n      begin\n        ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n        if ix1 <= ix2 then\n          DrawGradientLine(yb,ix1,ix2,\n            x1,TPerspectiveColorGradientIntersectionInfo(inter[i+i]),\n            x2,TPerspectiveColorGradientIntersectionInfo(inter[i+i+1]));\n      end;\n    end;\n  end;\n\n  polyInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\nend;\n\nprocedure PolygonPerspectiveColorGradientAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; const pointsZ: array of single;\n  const Colors: array of TBGRAPixel; NonZeroWinding: boolean; zbuffer: psingle);\nvar polyInfo: TPolygonPerspectiveColorGradientInfo;\nbegin\n  polyInfo := TPolygonPerspectiveColorGradientInfo.Create(points,pointsZ,Colors);\n  PolygonPerspectiveColorGradientAliased(bmp,polyInfo,NonZeroWinding,zbuffer);\n  polyInfo.Free;\nend;\n\nprocedure PolygonLinearTextureMappingAliased(bmp: TBGRACustomBitmap; polyInfo: TPolygonLinearTextureMappingInfo;\n  texture: IBGRAScanner; TextureInterpolation: Boolean; NonZeroWinding: boolean);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n  scanAtFunc: function(X,Y: Single): TBGRAPixel of object;\n  scanAtIntegerFunc: function(X,Y: integer): TBGRAPixel of object;\n\n  procedure DrawTextureLineWithoutLight(yb: integer; ix1: integer; ix2: integer;\n    info1,info2: TLinearTextureMappingIntersectionInfo;\n    WithInterpolation: boolean);\n    {$i lineartexscan.inc}\n\n  procedure DrawTextureLineWithLight(yb: integer; ix1: integer; ix2: integer;\n    info1,info2: TLinearTextureMappingIntersectionInfo;\n    WithInterpolation: boolean);\n    {$define PARAM_USELIGHTING}\n    {$i lineartexscan.inc}\n\nvar\n  miny, maxy, minx, maxx: integer;\n\n  yb, i: integer;\n  x1, x2: single;\n\n  ix1, ix2: integer;\n\nbegin\n  If not BGRAShapeComputeMinMax(polyInfo,minx,miny,maxx,maxy,bmp) then exit;\n\n  scanAtFunc := @texture.ScanAt;\n  scanAtIntegerFunc := @texture.ScanAtInteger;\n\n  inter := polyInfo.CreateIntersectionArray;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //find intersections\n    polyInfo.ComputeAndSort(yb+0.5,inter,nbInter,NonZeroWinding);\n    for i := 0 to nbinter div 2 - 1 do\n    begin\n      x1 := inter[i + i].interX;\n      x2 := inter[i + i+ 1].interX;\n\n      if x1 <> x2 then\n      begin\n        ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n        if ix1 <= ix2 then\n        begin\n          if (TLinearTextureMappingIntersectionInfo(inter[i+i]).lightness = 32768) and\n             (TLinearTextureMappingIntersectionInfo(inter[i+i+1]).lightness = 32768) then\n            DrawTextureLineWithoutLight(yb,ix1,ix2,\n               TLinearTextureMappingIntersectionInfo(inter[i+i]),\n               TLinearTextureMappingIntersectionInfo(inter[i+i+1]),\n               TextureInterpolation)\n          else\n            DrawTextureLineWithLight(yb,ix1,ix2,\n               TLinearTextureMappingIntersectionInfo(inter[i+i]),\n               TLinearTextureMappingIntersectionInfo(inter[i+i+1]),\n               TextureInterpolation);\n        end;\n      end;\n    end;\n  end;\n\n  polyInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\nend;\n{$hints on}\n\nprocedure PolygonLinearTextureMappingAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean; NonZeroWinding: boolean);\nvar polyInfo: TPolygonLinearTextureMappingInfo;\nbegin\n  polyInfo := TPolygonLinearTextureMappingInfo.Create(points,texCoords);\n  PolygonLinearTextureMappingAliased(bmp,polyInfo,texture,TextureInterpolation,NonZeroWinding);\n  polyInfo.Free;\nend;\n\nprocedure PolygonLinearTextureMappingAliasedWithLightness(\n  bmp: TBGRACustomBitmap; const points: array of TPointF;\n  texture: IBGRAScanner; const texCoords: array of TPointF;\n  TextureInterpolation: Boolean; lightnesses: array of word;\n  NonZeroWinding: boolean);\nvar polyInfo: TPolygonLinearTextureMappingInfo;\nbegin\n  polyInfo := TPolygonLinearTextureMappingInfo.Create(points,texCoords,lightnesses);\n  PolygonLinearTextureMappingAliased(bmp,polyInfo,texture,TextureInterpolation,NonZeroWinding);\n  polyInfo.Free;\nend;\n\n{$i polyaliaspersp.inc}\n\n{From LazRGBGraphics}\nprocedure BGRARoundRectAliased(dest: TBGRACustomBitmap; X1, Y1, X2, Y2: integer;\n  DX, DY: integer; BorderColor, FillColor: TBGRAPixel; FillTexture: IBGRAScanner = nil; ADrawMode: TDrawMode = dmDrawWithTransparency;\n  skipFill: boolean = false);\nvar\n  bBorder, bFill: TUniversalBrush;\n  skipBorder: Boolean;\nbegin\n  dest.SolidBrush(bBorder, BorderColor, ADrawMode);\n  skipBorder := ((ADrawMode in[dmLinearBlend,dmDrawWithTransparency]) and (BorderColor.alpha=0))\n      or ((ADrawMode = dmSetExceptTransparent) and (BorderColor.alpha<>255))\n      or ((ADrawMode = dmXor) and (PLongWord(@BorderColor)^=0));\n\n  if FillTexture <> nil then\n    dest.ScannerBrush(bFill, FillTexture, ADrawMode)\n  else\n  begin\n    dest.SolidBrush(bFill, FillColor, ADrawMode);\n    skipFill := (skipFill or (ADrawMode in[dmLinearBlend,dmDrawWithTransparency]) and (FillColor.alpha=0))\n        or ((ADrawMode = dmSetExceptTransparent) and (FillColor.alpha<>255))\n        or ((ADrawMode = dmXor) and (PLongWord(@FillColor)^=0));\n  end;\n\n  BGRARoundRectAliased(dest, X1,Y1,X2,Y2, DX,DY, bBorder, bFill, 65535, skipBorder,skipFill);\nend;\n\nprocedure BGRARoundRectAliased(dest: TCustomUniversalBitmap; X1, Y1, X2,\n  Y2: integer; DX, DY: integer; const BorderColor, FillColor: TUniversalBrush;\n  AAlpha: Word; skipBorder: boolean; skipFill: boolean);\nvar\n  CX, CY, CX1, CY1, A, B, NX, NY: single;\n  X, Y, EX, EY: integer;\n  LX1, LY1: integer;\n  LX2, LY2: integer;\n  DivSqrA, DivSqrB: single;\n  I, J, S: integer;\n  EdgeList: array of TPoint;\n  temp:   integer;\n  LX, LY: integer;\n  RowStart,RowEnd: integer;\n\n  procedure AddEdge(X, Y: integer);\n  begin\n    If (Y > High(EdgeList)) or (Y < 0) then exit;\n    if (EdgeList[Y].X = -1) or (X < EdgeList[Y].X) then\n      EdgeList[Y].X := X;\n    if (EdgeList[Y].Y = -1) or (X > EdgeList[Y].Y) then\n      EdgeList[Y].Y := X;\n  end;\n\nbegin\n  if AAlpha = 0 then exit;\n  if BorderColor.DoesNothing then skipBorder:= true;\n  if FillColor.DoesNothing then skipFill:= true;\n  if skipBorder and skipFill then exit;\n  if (x1 > x2) then\n  begin\n    temp := x1;\n    x1   := x2;\n    x2   := temp;\n  end;\n  if (y1 > y2) then\n  begin\n    temp := y1;\n    y1   := y2;\n    y2   := temp;\n  end;\n  if (x2 - x1 <= 0) or (y2 - y1 <= 0) then exit;\n  LX := x2 - x1 - DX;\n  LY := y2 - y1 - DY;\n  if LX < 0 then LX := 0;\n  if LY < 0 then LY := 0;\n  Dec(x2);\n  Dec(y2);\n\n  if (X1 = X2) and (Y1 = Y2) then\n  begin\n    if not skipBorder then\n      dest.DrawPixel(X1, Y1, BorderColor, AAlpha);\n    Exit;\n  end;\n  if (X2 - X1 = 1) or (Y2 - Y1 = 1) then\n  begin\n    if not skipBorder then\n      dest.FillRect(X1, Y1, X2 + 1, Y2 + 1, BorderColor, AAlpha);\n    Exit;\n  end;\n  if (LX > X2 - X1) or (LY > Y2 - Y1) then\n  begin\n    if not skipBorder then\n      dest.Rectangle(X1, Y1, X2 + 1, Y2 + 1, BorderColor, AAlpha);\n    if not skipFill then\n      dest.FillRect(X1 + 1, Y1 + 1, X2, Y2, FillColor, AAlpha);\n    Exit;\n  end;\n\n  SetLength(EdgeList, Ceil((Y2 - Y1 + 1) / 2));\n  for I := 0 to Pred(High(EdgeList)) do\n    EdgeList[I] := Point(-1, -1);\n  EdgeList[High(EdgeList)] := Point(0, 0);\n\n  A  := (X2 - X1 + 1 - LX) / 2;\n  B  := (Y2 - Y1 + 1 - LY) / 2;\n  CX := (X2 + X1 + 1) / 2;\n  CY := (Y2 + Y1 + 1) / 2;\n\n  CX1 := X2 + 1 - A - Floor(CX);\n  CY1 := Y2 + 1 - B - Floor(CY);\n\n  EX := Floor(Sqr(A) / Sqrt(Sqr(A) + Sqr(B)) + Frac(A));\n  EY := Floor(Sqr(B) / Sqrt(Sqr(A) + Sqr(B)) + Frac(B));\n\n  DivSqrA := 1 / Sqr(A);\n  DivSqrB := 1 / Sqr(B);\n\n  NY := B;\n  AddEdge(Floor(CX1), Round(CY1 + B) - 1);\n  for X := 1 to Pred(EX) do\n  begin\n    NY := B * Sqrt(1 - Sqr(X + 0.5 - Frac(A)) * DivSqrA);\n\n    AddEdge(Floor(CX1) + X, Round(CY1 + NY) - 1);\n  end;\n\n  LX1 := Floor(CX1) + Pred(EX);\n  LY1 := Round(CY1 + NY) - 1;\n\n  NX := A;\n  AddEdge(Round(CX1 + A) - 1, Floor(CY1));\n  for Y := 1 to Pred(EY) do\n  begin\n    NX := A * Sqrt(1 - Sqr(Y + 0.5 - Frac(B)) * DivSqrB);\n\n    AddEdge(Round(CX1 + NX) - 1, Floor(CY1) + Y);\n  end;\n\n  LX2 := Round(CX1 + NX) - 1;\n  LY2 := Floor(CY1) + Pred(EY);\n\n  if Abs(LX1 - LX2) > 1 then\n  begin\n    if Abs(LY1 - LY2) > 1 then\n      AddEdge(LX1 + 1, LY1 - 1)\n    else\n      AddEdge(LX1 + 1, LY1);\n  end\n  else\n  if Abs(LY1 - LY2) > 1 then\n    AddEdge(LX2, LY1 - 1);\n\n  for I := 0 to High(EdgeList) do\n  begin\n    if EdgeList[I].X = -1 then\n      EdgeList[I] := Point(Round(CX1 + A) - 1, Round(CX1 + A) - 1)\n    else\n      Break;\n  end;\n\n  J := 0;\n  while J < Length(EdgeList) do\n  begin\n    if (J = 0) and (Frac(CY) > 0) then\n    begin\n      if not skipBorder then\n      for I := EdgeList[J].X to EdgeList[J].Y do\n      begin\n        dest.DrawPixel(Floor(CX) + I, Floor(CY) + J, BorderColor, AAlpha);\n        dest.DrawPixel(Ceil(CX) - Succ(I), Floor(CY) + J, BorderColor, AAlpha);\n      end;\n\n      if not SkipFill then\n        dest.HorizLine(Ceil(CX) - EdgeList[J].X, Floor(CY) + J, Floor(CX) +\n          Pred(EdgeList[J].X), FillColor, AAlpha);\n    end\n    else\n    if (J = High(EdgeList)) then\n    begin\n      if Frac(CX) > 0 then\n        S := -EdgeList[J].Y\n      else\n        S := -Succ(EdgeList[J].Y);\n\n      if not skipBorder then\n      for I := S to EdgeList[J].Y do\n      begin\n        dest.DrawPixel(Floor(CX) + I, Floor(CY) + J, BorderColor, AAlpha);\n        dest.DrawPixel(Floor(CX) + I, Ceil(CY) - Succ(J), BorderColor, AAlpha);\n      end;\n    end\n    else\n    begin\n      if not skipBorder then\n      for I := EdgeList[J].X to EdgeList[J].Y do\n      begin\n        dest.DrawPixel(Floor(CX) + I, Floor(CY) + J, BorderColor, AAlpha);\n        dest.DrawPixel(Floor(CX) + I, Ceil(CY) - Succ(J), BorderColor, AAlpha);\n        if Floor(CX) + I <> Ceil(CX) - Succ(I) then\n        begin\n          dest.DrawPixel(Ceil(CX) - Succ(I), Floor(CY) + J, BorderColor, AAlpha);\n          dest.DrawPixel(Ceil(CX) - Succ(I), Ceil(CY) - Succ(J), BorderColor, AAlpha);\n        end;\n      end;\n\n      if not SkipFill then\n      begin\n        RowStart := Ceil(CX) - EdgeList[J].X;\n        RowEnd := Floor(CX) + Pred(EdgeList[J].X);\n        if RowEnd >= RowStart then\n        begin\n          dest.HorizLine(RowStart, Floor(CY) + J,\n            RowEnd, FillColor, AAlpha);\n          dest.HorizLine(RowStart, Ceil(CY) - Succ(J),\n            RowEnd, FillColor, AAlpha);\n        end;\n      end;\n\n    end;\n    Inc(J);\n  end;\nend;\n\nprocedure BGRAFillRoundRectAliased(dest: TBGRACustomBitmap; X1, Y1, X2,\n  Y2: integer; DX, DY: integer; FillColor: TBGRAPixel;\n  FillTexture: IBGRAScanner; ADrawMode: TDrawMode);\nvar\n  fi: TFillRoundRectangleInfo;\nbegin\n  fi := TFillRoundRectangleInfo.Create(x1,y1,x2,y2,dx/2,dy/2,[rrDefault],false);\n  FillShapeAliased(dest, fi, FillColor, false, FillTexture, true, ADrawMode);\n  fi.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraqtbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for Qt }\nunit BGRAQtBitmap;\n{ This unit should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALCLBitmap, Graphics,\n  GraphType, BGRABitmapTypes;\n\ntype\n  { Implementation of TBGRABitmap for Qt }\n  TBGRAQtBitmap = class(TBGRALCLBitmap)\n  private\n    procedure SlowDrawTransparent(ABitmap: TBGRACustomBitmap;\n      ACanvas: TCanvas; ARect: TRect);\n  public\n    procedure DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n      AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean = True); override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean = True); override;\n    procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); override;\n  end;\n\nimplementation\n\nuses LCLType,\n  LCLIntf, IntfGraphics,\n  qtobjects, {$ifdef LCLqt5}qt5{$else}qt4{$endif},\n  FPImage;\n\nprocedure TBGRAQtBitmap.SlowDrawTransparent(ABitmap: TBGRACustomBitmap;\n  ACanvas: TCanvas; ARect: TRect);\nbegin\n  ACanvas.StretchDraw(ARect, ABitmap.Bitmap);\nend;\n\nprocedure TBGRAQtBitmap.DataDrawTransparent(ACanvas: TCanvas; Rect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  Temp: TBGRALCLPtrBitmap;\nbegin\n  Temp := TBGRALCLPtrBitmap.Create(AWidth, AHeight, AData);\n  Temp.LineOrder := ALineOrder;\n  SlowDrawTransparent(Temp, ACanvas, Rect);\n  Temp.Free;\nend;\n\nprocedure TBGRAQtBitmap.DataDrawOpaque(ACanvas: TCanvas; ARect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\n{$IFDEF DARWIN}\nvar\n  psrc,pdest: PBGRAPixel;\n  bmp: TBGRAQtBitmap;\n  x, y: integer;\n{$ENDIF}\nbegin\n  {$IFDEF DARWIN}\n  bmp := TBGRAQtBitmap.Create(AWidth,AHeight);\n  try\n    if ALineOrder = riloTopToBottom then psrc := AData\n    else psrc := PBGRAPixel(AData) + (AWidth*(AHeight-1));\n    for y := 0 to AHeight-1 do\n    begin\n      pdest := bmp.ScanLine[y];\n      for x := 0 to AWidth-1 do\n      begin\n        pdest^.red := psrc^.red;\n        pdest^.green:= psrc^.green;\n        pdest^.blue := psrc^.blue;\n        pdest^.alpha := 255;\n        inc(psrc);\n        inc(pdest);\n      end;\n      if ALineOrder = riloBottomToTop then dec(psrc, 2*AWidth);\n    end;\n    bmp.Draw(ACanvas, ARect, false);\n  finally\n    bmp.Free;\n  end;\n  {$ELSE}\n  inherited DataDrawOpaque(ACanvas, ARect, AData, ALineOrder, AWidth, AHeight);\n  {$ENDIF}\nend;\n\nprocedure TBGRAQtBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  if self = nil then\n    exit;\n  if Opaque then\n    DataDrawOpaque(ACanvas, Rect(X, Y, X + Width, Y + Height), Data, FLineOrder,\n      FWidth, FHeight)\n  else\n    SlowDrawTransparent(Self, ACanvas, Rect(X, Y, X + Width, Y + Height));\nend;\n\nprocedure TBGRAQtBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nbegin\n  if self = nil then\n    exit;\n  if Opaque then\n    DataDrawOpaque(ACanvas, Rect, Data, FLineOrder, FWidth, FHeight)\n  else\n    SlowDrawTransparent(Self, ACanvas, Rect);\nend;\n\nprocedure TBGRAQtBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer);\nvar\n  bmp: TBitmap;\n  Ofs: TPoint;\n  SrcX, SrcY: integer;\n  dcSource, dcDest: TQtDeviceContext;\n  B: Boolean;\nbegin\n  DiscardBitmapChange;\n  bmp    := TBitmap.Create;\n  bmp.PixelFormat := pf24bit;\n  bmp.Width := Width;\n  bmp.Height := Height;\n  dcDest := TQtDeviceContext(bmp.Canvas.handle);\n\n  dcSource := TQtDeviceContext(CanvasSource.Handle);\n  LCLIntf.GetWindowOrgEx(CanvasSource.Handle, @Ofs);\n\n  SrcX     := x + Ofs.X;\n  SrcY     := y + Ofs.Y;\n\n  if (dcSource.vImage <> nil) and (dcSource.vImage.Handle <> nil) then\n  begin\n    // we must stop painting on device\n    B := QPainter_isActive(dcDest.Widget);\n    if B then\n      QPainter_end(dcDest.Widget);\n    TQtImage(bmp.Handle).CopyFrom(dcSource.vImage.Handle,\n      SrcX, SrcY, Width, Height);\n    if B then\n      QPainter_begin(dcDest.Widget, TQtImage(bmp.Handle).Handle);\n  end;\n\n  LoadFromRawImage(bmp.RawImage, 255, True);\n  bmp.Free;\n  InvalidateBitmap;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadavif.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Provides a reader for AVIF image format }\nunit BGRAReadAvif;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPImage;\n\ntype\n  { @abstract(Reader for AVIF still image format.)\n\n    To read animations, use TAvifReader of AvifBGRA unit }\n  TBGRAReaderAvif = class(TFPCustomImageReader)\n  protected\n    procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n    function InternalCheck(Str: TStream): boolean; override;\n  end;\n\nimplementation\n\nuses avifbgra,libavif, BGRABitmapTypes, BGRABitmap;\n\nvar\n  MyLibAvifLoaded: boolean;\n\nprocedure NeedLibAvif;\nbegin\n  if not MyLibAvifLoaded then\n  begin\n    if not LibAvifLoad then\n      raise exception.Create('Cannot find libavif library ('+LibAvifFilename+')');\n    MyLibAvifLoaded:= true;\n  end;\nend;\n\n{ TBGRAReaderAvif }\n\nprocedure TBGRAReaderAvif.InternalRead(Str: TStream; Img: TFPCustomImage);\nvar\n  w, h, x, y: integer;\n  loadInto: TBGRACustomBitmap;\n  pbgra: PBGRAPixel;\nbegin\n  NeedLibAvif;\n  if not InternalCheck(Str) then\n    raise exception.Create('Invalid avif header');\n  try\n    if Img is TBGRACustomBitmap then\n      loadInto := TBGRACustomBitmap(Img)\n    else\n      loadInto := BGRABitmapFactory.Create(Img.Width,Img.Height);\n    avifLoadFromStream(Str,TBGRABitmap(loadInto));\n    //if loadInto.LineOrder = riloBottomToTop then loadInto.VerticalFlip;\n    if Img <> loadInto then\n    begin\n      h:=loadInto.Height;\n      w:=loadInto.Width;\n      Img.SetSize(w, h);\n      Img.SetSize(w, h);\n      for y := 0 to h-1 do\n      begin\n        pbgra := loadInto.ScanLine[y];\n        for x := 0 to w-1 do\n        begin\n          Img.Colors[x,y] := pbgra^.ToFPColor;\n          inc(pbgra);\n        end;\n      end;\n    end;\n  finally\n    if Assigned(loadInto) and (loadInto <> Img) then loadInto.Free;\n  end;\nend;\n\nfunction TBGRAReaderAvif.InternalCheck(Str: TStream): boolean;\nvar\n  oldPos: Int64;\n  header: array[0..11] of char;\nbegin\n  oldPos := Str.Position;\n  try\n    fillchar({%H-}header, sizeof({%H-}header), 0);\n    Str.Read(header, sizeof(header));\n    result:=AvifValidateHeaderSignature(@header[0]);\n  finally\n    Str.Position:= OldPos;\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifAvif, TBGRAReaderAvif, True, 'AVIF Still Image Format', 'avif');\n\nfinalization\n\n  if MyLibAvifLoaded then\n  begin\n    LibAvifUnload;\n    MyLibAvifLoaded:= false;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadbmp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n    This original file was part of the Free Pascal's \"Free Components Library\".\n    Copyright (c) 2003 by Mazen NEIFER of the Free Pascal development team\n\n    BMP reader implementation modified by circular.\n}\n{*****************************************************************************}\n{ 08/2005 by Giulio Bernardi:\n   - Added support for 16 and 15 bpp bitmaps.\n   - If we have bpp <= 8 make an indexed image instead of converting it to RGB\n   - Support for RLE4 and RLE8 decoding\n   - Support for top-down bitmaps\n\n  03/2014 by circular:\n   - RLE optimisation using a read buffer\n   - direct access to pixels with TBGRABitmap\n   - vertical shrink option with MinifyHeight,WantedHeight,OutputHeight (useful for thumbnails)\n  01/2017 by circular:\n   - support for OS/2 v1.x format\n   - support for headerless files\n  06/2023 by Massimo Magnano\n  - added Resolution support\n  04/2025 by circular:\n  - handle bit field with Windows v4 format\n  - support for OS/2 v2.x format\n  - use TransparencyOption for GetBitmapDraft\n}\n{*****************************************************************************}\n{$mode objfpc}\n{$h+}\n\n{ BMP reader implementation }\nunit BGRAReadBMP;\n\ninterface\n\nuses FPImage, BGRAClasses, SysUtils, BMPcomn, BGRABitmapTypes;\n\ntype\n  TBMPTransparencyOption = (toAuto, toTransparent, toOpaque);\n  TBitMapInfoHeader = BMPcomn.TBitMapInfoHeader;\n  TBitMapFileHeader = BMPcomn.TBitMapFileHeader;\n  TBitmapInfoHeaderV4 = packed record\n    {14+04 : Size of the bitmap info header : sould be 40=$28}\n          Size:longint;\n    {18+04 : Image width in pixels}\n          Width:longint;\n    {22+04 : Image height in pixels}\n          Height:longint;\n    {26+02 : Number of image planes : should be 1 always}\n          Planes:word;\n    {28+02 : Color resolution : Number of bits per pixel (1,4,8,16,24,32)}\n          BitCount:word;\n    {30+04 : Compression Type}\n          Compression:longint;\n    {34+04 : Size of image data (not headers nor palette): can be 0 if no compression}\n          SizeImage:longint;\n    {38+04 : Horizontal resolution in pixel/meter}\n          XPelsPerMeter:Longint;\n    {42+04 : Vertical resolution in pixel/meter}\n          YPelsPerMeter:Longint;\n    {46+04 : Number of colors used}\n          ClrUsed:longint;\n    {50+04 : Number of imprtant colors used : useful for displaying on VGA256}\n          ClrImportant:longint;\n\n          // additional fields for V4\n          RedMask, GreenMask, BlueMask, AlphaMask: longword;\n          CSType: longword;\n          RedXYZ, GreenXYZ, BlueXYZ: packed array[0..2] of longint;\n          GammaRed, GammaGreen, GammaBlue: longword;\n  end;\n\n  { Header for OS/2 v1 bitmap format }\n  TOS2BitmapHeader = packed record\n    bcSize: LongWord;\n    bcWidth: Word;\n    bcHeight: Word;\n    bcPlanes: Word;\n    bcBitCount: Word;\n  end;\n  { Minimum header for BMP format (non OS/2 v1) }\n  TMinimumBitmapHeader = packed record\n    Size:longint;\n    Width:longint;\n    Height:longint;\n    Planes:word;\n    BitCount:word;\n  end;\n  TBitmapSubFormat = (bsfWithFileHeader, bsfHeaderless, bsfHeaderlessWithMask);\n  TReadScanlineProc = procedure(Row : Integer; Stream : TStream) of object;\n  TWriteScanlineProc = procedure(Row : Integer; Img : TFPCustomImage) of object;\n  TProgressProc = procedure(Percent: integer; var ShouldContinue: boolean) of object;\n\n  { Reader for BMP format }\n  TBGRAReaderBMP = class (TBGRAImageReader)\n    Private\n      DeltaX, DeltaY : integer; // Used for the never-used delta option in RLE\n      TopDown : boolean;        // If set, bitmap is stored top down instead of bottom up\n      Procedure FreeBufs;       // Free (and nil) buffers.\n    protected\n      ReadSize : Integer;       // Size (in bytes) of 1 scanline.\n      BFH: TBitMapFileHeader;    // The file header\n      BFI: TBitMapInfoHeaderV4;  // The header as read from the stream.\n      FPaletteEntrySize: integer;  // 4 for Windows, 3 for OS/2 1.x\n      FPalette : PFPcolor;      // Buffer with Palette entries. (useless now)\n      FBGRAPalette : PBGRAPixel;\n      LineBuf : PByte;          // Buffer for 1 scanline. Can be Byte, Word, TColorRGB or TColorRGBA\n      RedMask, GreenMask, BlueMask, AlphaMask : LongWord; //Used if Compression=bi_bitfields\n      RedShift, GreenShift, BlueShift, AlphaShift : shortint;\n      FOutputHeight: integer;\n      FOriginalHeight: Integer;\n      FTransparencyOption: TBMPTransparencyOption;\n      FBuffer: packed array of byte;\n      FBufferPos, FBufferSize: integer;\n      FBufferStream: TStream;\n      FHasAlphaValues: boolean;\n      FMaskData: PByte;\n      FMaskDataSize: integer;\n      // SetupRead will allocate the needed buffers, and read the colormap if needed.\n      procedure SetupRead(nPalette, nRowBits: Integer; Stream : TStream; paletteByteCount: integer); virtual;\n      function CountBits(Value : byte) : shortint;\n      function ShiftCount(Mask : LongWord) : shortint;\n      function ExpandColor(value : LongWord) : TFPColor;\n      function ExpandColorBGRA(value : LongWord) : TBGRAPixel;\n      procedure ExpandRLE8ScanLine(Row : Integer; Stream : TStream);\n      procedure ExpandRLE4ScanLine(Row : Integer; Stream : TStream);\n      procedure ReadScanLine(Row : Integer; Stream : TStream); virtual;\n      procedure SkipScanLine(Row : Integer; Stream : TStream); virtual;\n      procedure WriteScanLine(Row : Integer; Img : TFPCustomImage); virtual;\n      procedure WriteScanLineBGRA(Row : Integer; Img : TFPCustomImage); virtual;\n      procedure ReadMaskLine({%H-}Row : Integer; Stream : TStream); virtual;\n      procedure SkipMaskLine({%H-}Row : Integer; Stream : TStream); virtual;\n      procedure WriteMaskLine(Row : Integer; Img : TFPCustomImage); virtual;\n\n      procedure ReadResolutionValues(Img: TFPCustomImage); virtual;\n\n      // required by TFPCustomImageReader\n      procedure InternalRead  (Stream:TStream; Img:TFPCustomImage); override;\n      function  InternalCheck (Stream:TStream) : boolean; override;\n      procedure InitReadBuffer(AStream: TStream; ASize: integer);\n      procedure CloseReadBuffer;\n      function GetNextBufferByte: byte;\n      procedure MakeOpaque(Img: TFPCustomImage);\n      procedure LoadMask(Stream:TStream; Img:TFPCustomImage; var ShouldContinue: boolean);\n      procedure MainProgressProc(Percent: integer; var ShouldContinue: boolean);\n      procedure ImageVerticalLoop(Stream:TStream; Img:TFPCustomImage;\n        ReadProc, SkipProc: TReadScanlineProc; WriteProc: TWriteScanlineProc;\n        ProgressProc: TProgressProc; var ShouldContinue: boolean);\n    public\n      MinifyHeight,WantedHeight: integer;\n      Hotspot: TPoint;\n      Subformat: TBitmapSubFormat;\n      constructor Create; override;\n      destructor Destroy; override;\n      property OriginalHeight: integer read FOriginalHeight;\n      property OutputHeight: integer read FOutputHeight;\n      property TransparencyOption: TBMPTransparencyOption read FTransparencyOption write FTransparencyOption;\n      function GetQuickInfo(AStream: TStream): TQuickImageInfo; override;\n      function GetBitmapDraft(AStream: TStream; {%H-}AMaxWidth, AMaxHeight: integer; out AOriginalWidth,AOriginalHeight: integer): TBGRACustomBitmap; override;\n  end;\n\nfunction MakeBitmapFileHeader(AData: TStream): TBitMapFileHeader;\n\nimplementation\n\nuses math;\n\nprocedure SwapBMPInfoHeaderV4(var BFI : TBitMapInfoHeaderV4);\nvar\n  i: Integer;\nbegin\n  with BFI do\n  begin\n    Size:=swap(Size);\n    Width:=swap(Width);\n    Height:=swap(Height);\n    Planes:=swap(Planes);\n    BitCount:=swap(BitCount);\n    Compression:=swap(Compression);\n    SizeImage:=swap(SizeImage);\n    XPelsPerMeter:=swap(XPelsPerMeter);\n    YPelsPerMeter:=swap(YPelsPerMeter);\n    ClrUsed:=swap(ClrUsed);\n    ClrImportant:=swap(ClrImportant);\n\n    // additional fields for V4\n    RedMask := swap(RedMask);\n    GreenMask := swap(GreenMask);\n    BlueMask := swap(BlueMask);\n    AlphaMask := swap(AlphaMask);\n    CSType := swap(CSType);\n    for i := 0 to 2 do\n    begin\n      RedXYZ[i] := swap(RedXYZ[i]);\n      GreenXYZ[i] := swap(GreenXYZ[i]);\n      BlueXYZ[i] := swap(BlueXYZ[i]);\n    end;\n    GammaRed := swap(GammaRed);\n    GammaGreen := swap(GammaGreen);\n    GammaBlue := swap(GammaBlue);\n  end;\nend;\n\nfunction MakeBitmapFileHeader(AData: TStream): TBitMapFileHeader;\nvar header: PBitMapInfoHeader;\n  headerSize: integer;\n  extraSize: integer;\n  os2header: TOS2BitmapHeader;\nbegin\n  AData.Position := 0;\n  headerSize := LEtoN(AData.ReadDWord);\n  if headerSize = sizeof(TOS2BitmapHeader) then //OS2 1.x\n  begin\n    AData.ReadBuffer({%H-}os2header,sizeof(os2header));\n    if LEtoN(os2header.bcBitCount) in [1,2,4,8] then\n    begin\n      extraSize := 3*(1 shl LEtoN(os2header.bcBitCount));\n    end else\n      extraSize := 0;\n    result.bfType:= Word('BM');\n    result.bfSize := NtoLE(Integer(sizeof(TBitMapFileHeader) + AData.Size));\n    result.bfReserved:= 0;\n    result.bfOffset := NtoLE(Integer(sizeof(TBitMapFileHeader) + headerSize + extraSize));\n  end else\n  begin\n    if (headerSize < 16) or (headerSize > AData.Size) or (headerSize > 1024) then\n      raise exception.Create('Invalid header size');\n    getmem(header, headerSize);\n    try\n      fillchar(header^, headerSize,0);\n      header^.Size := NtoLE(headerSize);\n      AData.ReadBuffer((PByte(header)+4)^, headerSize-4);\n      if LEtoN(header^.Compression) = BI_BITFIELDS then\n        extraSize := 4*3\n      else if LEtoN(header^.BitCount) in [1,2,4,8] then\n      begin\n        if header^.ClrUsed > 0 then\n          extraSize := 4*header^.ClrUsed\n        else\n          extraSize := 4*(1 shl header^.BitCount);\n      end else\n        extraSize := 0;\n      result.bfType:= Word('BM');\n      result.bfSize := NtoLE(Integer(sizeof(TBitMapFileHeader) + AData.Size));\n      result.bfReserved:= 0;\n      result.bfOffset := NtoLE(Integer(sizeof(TBitMapFileHeader) + headerSize + extraSize));\n    finally\n      freemem(header);\n    end;\n  end;\nend;\n\nfunction RGBAToFPColor(Const RGBA: TColorRGBA) : TFPcolor;\nbegin\n  with Result, RGBA do\n    begin\n    Red   :=(R shl 8) or R;\n    Green :=(G shl 8) or G;\n    Blue  :=(B shl 8) or B;\n    Alpha :=(A shl 8) or A\n    end;\nend;\n\nFunction RGBToFPColor(Const RGB : TColorRGB) : TFPColor;\nbegin\n  with Result,RGB do\n    begin  {Use only the high byte to convert the color}\n    Red   := (R shl 8) + R;\n    Green := (G shl 8) + G;\n    Blue  := (B shl 8) + B;\n    Alpha := AlphaOpaque;\n    end;\nend;\n\nconstructor TBGRAReaderBMP.Create;\nbegin\n  inherited create;\n  FTransparencyOption := toTransparent;\n  Subformat:= bsfWithFileHeader;\nend;\n\ndestructor TBGRAReaderBMP.Destroy;\nbegin\n  FreeBufs;\n  inherited destroy;\nend;\n\nfunction TBGRAReaderBMP.GetQuickInfo(AStream: TStream): TQuickImageInfo;\nvar headerSize: LongWord;\n  os2header: TOS2BitmapHeader;\n  minHeader: TMinimumBitmapHeader;\n  totalDepth: integer;\n  headerPos: int64;\nbegin\n  {$PUSH}{$HINTS OFF}fillchar({%H-}result, sizeof({%H-}result), 0);{$POP}\n  headerPos := AStream.Position;\n  if AStream.Read({%H-}headerSize, sizeof(headerSize)) <> sizeof(headerSize) then exit;\n  headerSize := LEtoN(headerSize);\n\n  //check presence of file header\n  if (headerSize and $ffff) = BMmagic then\n  begin\n    inc(headerPos, sizeof(TBitMapFileHeader));\n    AStream.Position := headerPos;\n    if AStream.Read(headerSize, sizeof(headerSize)) <> sizeof(headerSize) then exit;\n    headerSize := LEtoN(headerSize);\n  end;\n\n  AStream.Position := headerPos;\n\n  if headerSize = sizeof(TOS2BitmapHeader) then //OS2 1.x\n  begin\n    if AStream.Read({%H-}os2header, sizeof(os2header)) <> sizeof(os2header) then exit;\n    result.width := LEtoN(os2header.bcWidth);\n    result.height := LEtoN(os2header.bcHeight);\n    result.colorDepth := LEtoN(os2header.bcBitCount);\n    result.alphaDepth := 0;\n  end\n  else\n  if headerSize >= sizeof(minHeader) then\n  begin\n    if AStream.Read({%H-}minHeader, sizeof(minHeader)) <> sizeof(minHeader) then exit;\n    result.width := LEtoN(minHeader.Width);\n    result.height := LEtoN(minHeader.Height);\n    totalDepth := LEtoN(minHeader.BitCount);\n    if totalDepth > 24 then\n    begin\n      result.colorDepth:= 24;\n      result.alphaDepth:= 8;\n    end else\n    begin\n      result.colorDepth := totalDepth;\n      result.alphaDepth:= 0;\n    end;\n  end else\n  begin\n    result.width := 0;\n    result.height:= 0;\n    result.colorDepth:= 0;\n    result.alphaDepth:= 0;\n  end;\nend;\n\nfunction TBGRAReaderBMP.GetBitmapDraft(AStream: TStream; AMaxWidth,\n  AMaxHeight: integer; out AOriginalWidth, AOriginalHeight: integer): TBGRACustomBitmap;\nvar\n  bmpFormat: TBGRAReaderBMP;\n  prevStreamPos: Int64;\nbegin\n  bmpFormat:= TBGRAReaderBMP.Create;\n  bmpFormat.Subformat:= Subformat;\n  bmpFormat.MinifyHeight := AMaxHeight*2;\n  bmpFormat.TransparencyOption:= TransparencyOption;\n  result := BGRABitmapFactory.Create;\n  prevStreamPos := AStream.Position;\n  try\n    result.LoadFromStream(AStream, bmpFormat);\n    AOriginalWidth:= result.Width;\n    AOriginalHeight:= bmpFormat.OriginalHeight;\n  finally\n    bmpFormat.Free;\n    AStream.Position := prevStreamPos;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.FreeBufs;\nbegin\n  If (LineBuf<>Nil) then\n    begin\n    FreeMem(LineBuf);\n    LineBuf:=Nil;\n    end;\n  If (FPalette<>Nil) then\n    begin\n    FreeMem(FPalette);\n    FPalette:=Nil;\n    end;\n  If (FBGRAPalette<>Nil) then\n    begin\n    FreeMem(FBGRAPalette);\n    FBGRAPalette:=Nil;\n    end;\nend;\n\n{ Counts how many bits are set }\nfunction TBGRAReaderBMP.CountBits(Value : byte) : shortint;\nvar i,bits : shortint;\nbegin\n  bits:=0;\n  for i:=0 to 7 do\n  begin\n    if (value mod 2)<>0 then inc(bits);\n    value:=value shr 1;\n  end;\n  Result:=bits;\nend;\n\n{ If compression is bi_bitfields, there could be arbitrary masks for colors.\n  Although this is not compatible with windows9x it's better to know how to read these bitmaps\n  We must determine how to switch the value once masked\n  Example: 0000 0111 1110 0000, if we shr 5 we have 00XX XXXX for the color, but these bits must be the\n  highest in the color, so we must shr (5-(8-6))=3, and we have XXXX XX00.\n  A negative value means \"shift left\"  }\nfunction TBGRAReaderBMP.ShiftCount(Mask : LongWord) : shortint;\nvar tmp : shortint;\nbegin\n  tmp:=0;\n  if Mask=0 then\n  begin\n    Result:=0;\n    exit;\n  end;\n\n  while (Mask mod 2)=0 do { rightmost bit is 0 }\n  begin\n    inc(tmp);\n    Mask:= Mask shr 1;\n  end;\n  tmp:=tmp-(8-CountBits(Mask and $FF));\n  Result:=tmp;\nend;\n\nfunction TBGRAReaderBMP.ExpandColor(value : LongWord) : TFPColor;\nvar tmpr, tmpg, tmpb, tmpa : LongWord;\n    col : TColorRGBA;\nbegin\n  {$IFDEF ENDIAN_BIG}\n  value:=swap(value);\n  {$ENDIF}\n  tmpr:=value and RedMask;\n  tmpg:=value and GreenMask;\n  tmpb:=value and BlueMask;\n  if RedShift < 0 then col.R:=byte(tmpr shl (-RedShift))\n  else col.R:=byte(tmpr shr RedShift);\n  if GreenShift < 0 then col.G:=byte(tmpg shl (-GreenShift))\n  else col.G:=byte(tmpg shr GreenShift);\n  if BlueShift < 0 then col.B:=byte(tmpb shl (-BlueShift))\n  else col.B:=byte(tmpb shr BlueShift);\n  if AlphaMask <> 0 then\n  begin\n    tmpa := value and AlphaMask;\n    if AlphaShift < 0 then col.A:=byte(tmpa shl (-AlphaShift))\n    else col.A:=byte(tmpa shr AlphaShift);\n  end else\n    col.A := 255;\n  Result:=RGBAToFPColor(col);\nend;\n\nfunction TBGRAReaderBMP.ExpandColorBGRA(value: LongWord): TBGRAPixel;\nvar tmpr, tmpg, tmpb, tmpa : LongWord;\nbegin\n  {$IFDEF ENDIAN_BIG}\n  value:=swap(value);\n  {$ENDIF}\n  tmpr:=value and RedMask;\n  tmpg:=value and GreenMask;\n  tmpb:=value and BlueMask;\n  if RedShift < 0 then result.red:=byte(tmpr shl (-RedShift))\n  else result.red:=byte(tmpr shr RedShift);\n  if GreenShift < 0 then result.green:=byte(tmpg shl (-GreenShift))\n  else result.green:=byte(tmpg shr GreenShift);\n  if BlueShift < 0 then result.blue:=byte(tmpb shl (-BlueShift))\n  else result.blue:=byte(tmpb shr BlueShift);\n  if AlphaMask <> 0 then\n  begin\n    tmpa := value and AlphaMask;\n    if AlphaShift < 0 then result.alpha:=byte(tmpa shl (-AlphaShift))\n    else result.alpha:=byte(tmpa shr AlphaShift);\n  end else\n    result.alpha:= 255;\nend;\n\nprocedure TBGRAReaderBMP.SetupRead(nPalette, nRowBits: Integer; Stream : TStream; paletteByteCount: integer);\nvar\n  ColInfo: ARRAY OF TColorRGBA;\n  ColInfo3: packed array of TColorRGB;\n  i,colorPresent: Integer;\n  paletteStartPos: int64;\n\nbegin\n  paletteStartPos := Stream.Position;\n  if ((BFI.Compression=BI_RGB) and (BFI.BitCount=16)) then { 5 bits per channel, fixed mask }\n  begin\n    RedMask:=$7C00; RedShift:=7;\n    GreenMask:=$03E0; GreenShift:=2;\n    BlueMask:=$001F; BlueShift:=-3;\n    AlphaMask:= 0; AlphaShift:= 0;\n  end\n  else if ((BFI.Compression=BI_BITFIELDS) and (BFI.BitCount in [16,32])) then { arbitrary mask }\n  begin\n    if BFI.Size >= sizeof(TBitMapInfoHeaderV4) then\n    begin\n      RedMask := BFI.RedMask;\n      GreenMask := BFI.GreenMask;\n      BlueMask := BFI.BlueMask;\n      AlphaMask := BFI.AlphaMask;\n    end else\n    begin\n      Stream.Read(RedMask,4);\n      Stream.Read(GreenMask,4);\n      Stream.Read(BlueMask,4);\n      {$IFDEF ENDIAN_BIG}\n      RedMask:=swap(RedMask);\n      GreenMask:=swap(GreenMask);\n      BlueMask:=swap(BlueMask);\n      {$ENDIF}\n      AlphaMask := 0;\n    end;\n    RedShift:=ShiftCount(RedMask);\n    GreenShift:=ShiftCount(GreenMask);\n    BlueShift:=ShiftCount(BlueMask);\n    AlphaShift:=ShiftCount(AlphaMask);\n  end\n  else if nPalette>0 then\n  begin\n    GetMem(FPalette, nPalette*SizeOf(TFPColor));\n    GetMem(FBGRAPalette, nPalette*SizeOf(TBGRAPixel));\n    SetLength(ColInfo, nPalette);\n    if BFI.ClrUsed>0 then\n      colorPresent:= min(BFI.ClrUsed,nPalette)\n    else\n      colorPresent:= nPalette;\n    // fix entry size for OS/2 v2 format\n    if (FPaletteEntrySize = 4) and (paletteByteCount = colorPresent*3) then\n      FPaletteEntrySize := 3;\n\n    if FPaletteEntrySize = 3 then\n    begin\n      setlength(ColInfo3, nPalette);\n      Stream.Read(ColInfo3[0],colorPresent*SizeOf(TColorRGB));\n      for i := 0 to colorPresent-1 do\n        ColInfo[i].RGB := ColInfo3[i];\n    end\n    else\n    begin\n      Stream.Read(ColInfo[0],colorPresent*SizeOf(TColorRGBA));\n    end;\n    for i := 0 to High(ColInfo) do\n    begin\n      FPalette[i] := RGBToFPColor(ColInfo[i].RGB);\n      FBGRAPalette[i]:= FPColorToBGRA(FPalette[i]);\n    end;\n  end\n  else if BFI.ClrUsed>0 then { Skip palette }\n    {$PUSH}{$HINTS OFF}\n    Stream.Position := Stream.Position + BFI.ClrUsed*SizeOf(TColorRGBA);\n    {$POP}\n  ReadSize:=((nRowBits + 31) div 32) shl 2;\n  GetMem(LineBuf,ReadSize);\n  if paletteByteCount >= 0 then\n  begin\n    // go to image data (might not be well aligned after palette)\n    Stream.Position := paletteStartPos + paletteByteCount;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.InternalRead(Stream:TStream; Img:TFPCustomImage);\n\nVar\n  i, pallen, totalHeaderByteCount, headerByteCount, deltaPos,\n  paletteByteCount: Integer;\n  BadCompression : boolean;\n  WriteScanlineProc: TWriteScanlineProc;\n  headerSize: LongWord;\n  os2header: TOS2BitmapHeader;\n  shouldContinue: boolean;\n\nbegin\n  shouldContinue:=true;\n  Progress(psStarting,0,false,EmptyRect,'',shouldContinue);\n  if not shouldContinue then exit;\n\n  headerSize := LEtoN(Stream.ReadDWord);\n  fillchar({%H-}BFI,SizeOf(BFI),0);\n  if headerSize = sizeof(TOS2BitmapHeader) then // OS/2 v1 format\n  begin\n    fillchar({%H-}os2header,SizeOf(os2header),0);\n    headerByteCount := Stream.Read(os2header.bcWidth,min(SizeOf(os2header),headerSize)-sizeof(LongWord));\n    BFI.Size := 16; // equivalent Windows format\n    BFI.Width := LEtoN(os2header.bcWidth);\n    BFI.Height := LEtoN(os2header.bcHeight);\n    BFI.Planes := LEtoN(os2header.bcPlanes);\n    BFI.BitCount := LEtoN(os2header.bcBitCount);\n    FPaletteEntrySize:= 3;\n  end else\n  begin\n    // other formats (Windows, OS/2 v2)\n    headerByteCount := Stream.Read(BFI.Width,min(SizeOf(BFI),headerSize)-sizeof(LongWord));\n    {$IFDEF ENDIAN_BIG}\n    SwapBMPInfoHeaderV4(BFI);\n    {$ENDIF}\n    BFI.Size := headerSize;\n    FPaletteEntrySize:= 4;\n  end;\n  { This will move past any junk after the BFI header }\n  deltaPos := headerSize - sizeof(longword) { size field } - headerByteCount;\n  if deltaPos <> 0 then\n    Stream.Position:=Stream.Position + deltaPos;\n  paletteByteCount := BFH.bfOffset - sizeof(BFH) - headerSize;\n  with BFI do\n  begin\n    BadCompression:=false;\n    if ((Compression=BI_RLE4) and (BitCount<>4)) then BadCompression:=true;\n    if ((Compression=BI_RLE8) and (BitCount<>8)) then BadCompression:=true;\n    if ((Compression=BI_BITFIELDS) and (not (BitCount in [16,32]))) then BadCompression:=true;\n    if not (Compression in [BI_RGB..BI_BITFIELDS]) then BadCompression:=true;\n    if BadCompression then\n      raise FPImageException.Create('Bad BMP compression mode');\n    TopDown:=(Height<0);\n    Height:=abs(Height);\n    FOriginalHeight := Height;\n    if (TopDown and (not (Compression in [BI_RGB,BI_BITFIELDS]))) then\n      raise FPImageException.Create('Top-down bitmaps cannot be compressed');\n    Img.SetSize(0,0);\n    if BitCount<=8 then\n    begin\n      Img.UsePalette:=true;\n      Img.Palette.Clear;\n    end\n    else Img.UsePalette:=false;\n    Case BFI.BitCount of\n      1 : { Monochrome }\n        SetupRead(2,Width,Stream,paletteByteCount);\n      4 :\n        SetupRead(16,Width*4,Stream,paletteByteCount);\n      8 :\n        SetupRead(256,Width*8,Stream,paletteByteCount);\n      16 :\n        SetupRead(0,Width*8*2,Stream,paletteByteCount);\n      24:\n        SetupRead(0,Width*8*3,Stream,paletteByteCount);\n      32:\n        SetupRead(0,Width*8*4,Stream,paletteByteCount);\n    else raise exception.Create('Invalid bit depth ('+inttostr(BFI.BitCount)+')');\n    end;\n  end;\n  if Subformat = bsfHeaderlessWithMask then BFI.Height := BFI.Height div 2;\n  Try\n    { Note: it would be better to Fill the image palette in setupread instead of creating FPalette.\n      FPalette is indeed useless but we cannot remove it since it's not private :\\ }\n    pallen:=0;\n    if BFI.BitCount<=8 then\n      if BFI.ClrUsed>0 then pallen:=BFI.ClrUsed\n      else pallen:=(1 shl BFI.BitCount);\n    if pallen>0 then\n    begin\n      if FPalette = nil then raise exception.Create('Internal error: palette object not initialized');\n      Img.Palette.Count:=pallen;\n      for i:=0 to pallen-1 do\n        Img.Palette.Color[i]:=FPalette[i];\n    end;\n    if (MinifyHeight > 0) and (MinifyHeight < BFI.Height) then FOutputHeight:= MinifyHeight else\n    if WantedHeight > 0 then FOutputHeight:= WantedHeight else\n      FOutputHeight:= BFI.Height;\n\n    if (BFI.Compression=BI_RLE8) or(BFI.Compression=BI_RLE4) then InitReadBuffer(Stream,2048);\n    FHasAlphaValues:= false;\n\n    Img.SetSize(BFI.Width,FOutputHeight);\n\n    if Img is TBGRACustomBitmap then\n      WriteScanlineProc := @WriteScanLineBGRA else\n        WriteScanlineProc := @WriteScanLine;\n\n    ReadResolutionValues(Img);\n\n    ImageVerticalLoop(Stream, Img, @ReadScanLine, @SkipScanLine, WriteScanlineProc,\n                      @MainProgressProc, shouldContinue);\n\n    if shouldContinue then\n    begin\n      if not FHasAlphaValues and (TransparencyOption = toAuto) and (BFI.BitCount = 32) then\n        MakeOpaque(Img);\n      if (BFI.Compression=BI_RLE8) or(BFI.Compression=BI_RLE4) then CloseReadBuffer;\n\n      if Subformat = bsfHeaderlessWithMask then LoadMask(Stream,Img, shouldContinue);\n\n      Progress(psEnding,100,false,EmptyRect,'',shouldContinue);\n    end;\n\n  finally\n    FreeBufs;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.ExpandRLE8ScanLine(Row : Integer; Stream : TStream);\nvar i,j,k : integer;\n    b0, b1 : byte;\nbegin\n  i:=0;\n  while true do\n  begin\n    { let's see if we must skip pixels because of delta... }\n    if DeltaY<>-1 then\n    begin\n      if Row=DeltaY then j:=DeltaX { If we are on the same line, skip till DeltaX }\n      else j:=ReadSize;            { else skip up to the end of this line }\n      while (i<j) do\n        begin\n          LineBuf[i]:=0;\n          inc(i);\n        end;\n\n      if Row=DeltaY then { we don't need delta anymore }\n        DeltaY:=-1\n      else break; { skipping must continue on the next line, we are finished here }\n    end;\n\n    b0 := GetNextBufferByte; b1 := GetNextBufferByte;\n    if b0<>0 then { number of repetitions }\n    begin\n      if b0+i>ReadSize then\n        raise FPImageException.Create('Bad BMP RLE chunk at row '+inttostr(row)+', col '+inttostr(i)+', file offset $'+inttohex(Stream.Position,16) );\n      j:=i+b0;\n      while (i<j) do\n      begin\n        LineBuf[i]:=b1;\n        inc(i);\n      end;\n    end\n    else\n      case b1 of\n        0: break; { end of line }\n        1: break; { end of file }\n        2: begin  { Next pixel position. Skipped pixels should be left untouched, but we set them to zero }\n             b0 := GetNextBufferByte; b1 := GetNextBufferByte;\n             DeltaX:=i+b0; DeltaY:=Row+b1;\n           end\n        else begin { absolute mode }\n               if b1+i>ReadSize then\n                 raise FPImageException.Create('Bad BMP RLE chunk at row '+inttostr(row)+', col '+inttostr(i)+', file offset $'+inttohex(Stream.Position,16) );\n               for k := b1-1 downto 0 do\n               Begin\n                 LineBuf[i] := GetNextBufferByte;\n                 Inc(i);\n               end;\n               { aligned on 2 bytes boundary: every group starts on a 2 bytes boundary, but absolute group\n                 could end on odd address if there is a odd number of elements, so we pad it  }\n               if (b1 mod 2)<>0 then GetNextBufferByte;\n             end;\n      end;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.ExpandRLE4ScanLine(Row : Integer; Stream : TStream);\nvar i,j,tmpsize : integer;\n    b0, b1 : byte;\n    nibline : pbyte; { temporary array of nibbles }\n    even : boolean;\nbegin\n  tmpsize:=ReadSize*2; { ReadSize is in bytes, while nibline is made of nibbles, so it's 2*readsize long }\n  getmem(nibline,tmpsize);\n  if nibline=nil then\n    raise FPImageException.Create('Out of memory');\n  try\n    i:=0;\n    while true do\n    begin\n      { let's see if we must skip pixels because of delta... }\n      if DeltaY<>-1 then\n      begin\n        if Row=DeltaY then j:=DeltaX { If we are on the same line, skip till DeltaX }\n        else j:=tmpsize;            { else skip up to the end of this line }\n        while (i<j) do\n          begin\n            NibLine[i]:=0;\n            inc(i);\n          end;\n\n        if Row=DeltaY then { we don't need delta anymore }\n          DeltaY:=-1\n        else break; { skipping must continue on the next line, we are finished here }\n      end;\n\n      b0 := GetNextBufferByte; b1:= GetNextBufferByte;\n      if b0<>0 then { number of repetitions }\n      begin\n        if b0+i>tmpsize then\n          raise FPImageException.Create('Bad BMP RLE chunk at row '+inttostr(row)+', col '+inttostr(i)+', file offset $'+inttohex(Stream.Position,16) );\n        even:=true;\n        j:=i+b0;\n        while (i<j) do\n        begin\n          if even then NibLine[i]:=(b1 and $F0) shr 4\n          else NibLine[i]:=b1 and $0F;\n          inc(i);\n          even:=not even;\n        end;\n      end\n      else\n        case b1 of\n          0: break; { end of line }\n          1: break; { end of file }\n          2: begin  { Next pixel position. Skipped pixels should be left untouched, but we set them to zero }\n               b0 := GetNextBufferByte; b1:= GetNextBufferByte;\n               DeltaX:=i+b0; DeltaY:=Row+b1;\n             end\n          else begin { absolute mode }\n                 if b1+i>tmpsize then\n                   raise FPImageException.Create('Bad BMP RLE chunk at row '+inttostr(row)+', col '+inttostr(i)+', file offset $'+inttohex(Stream.Position,16) );\n                 j:=i+b1;\n                 even:=true;\n                 while (i<j) do\n                 begin\n                   if even then\n                   begin\n                     b0 := GetNextBufferByte;\n                     NibLine[i]:=(b0 and $F0) shr 4;\n                   end\n                   else NibLine[i]:=b0 and $0F;\n                   inc(i);\n                   even:=not even;\n                 end;\n               { aligned on 2 bytes boundary: see rle8 for details  }\n                 b1:=b1+(b1 mod 2);\n                 if (b1 mod 4)<>0 then GetNextBufferByte;\n               end;\n        end;\n    end;\n    { pack the nibline into the linebuf }\n    for i:=0 to ReadSize-1 do\n      LineBuf[i]:=(NibLine[i*2] shl 4) or NibLine[i*2+1];\n  finally\n    FreeMem(nibline)\n  end;\nend;\n\nprocedure TBGRAReaderBMP.ReadScanLine(Row : Integer; Stream : TStream);\nbegin\n  if BFI.Compression=BI_RLE8 then ExpandRLE8ScanLine(Row,Stream)\n  else if BFI.Compression=BI_RLE4 then ExpandRLE4ScanLine(Row,Stream)\n  else Stream.Read(LineBuf[0],ReadSize);\nend;\n\nprocedure TBGRAReaderBMP.SkipScanLine(Row: Integer; Stream: TStream);\nbegin\n  if (BFI.Compression=BI_RLE8) or(BFI.Compression=BI_RLE4) then ReadScanLine(Row,Stream)\n  else Stream.Position := Stream.Position+ReadSize;\nend;\n\nprocedure TBGRAReaderBMP.WriteScanLine(Row : Integer; Img : TFPCustomImage);\n\nVar\n  Column : Integer;\n  c: TFPColor;\nbegin\n  Case BFI.BitCount of\n   1 :\n     for Column:=0 to Img.Width-1 do\n       if ((LineBuf[Column div 8] shr (7-(Column and 7)) ) and 1) <> 0 then\n         img.Pixels[Column,Row]:=1\n       else\n         img.Pixels[Column,Row]:=0;\n   4 :\n      for Column:=0 to img.Width-1 do\n        img.Pixels[Column,Row]:=(LineBuf[Column div 2] shr (((Column+1) and 1)*4)) and $0f;\n   8 :\n      for Column:=0 to img.Width-1 do\n        img.Pixels[Column,Row]:=LineBuf[Column];\n   16 :\n      for Column:=0 to img.Width-1 do\n        img.colors[Column,Row]:=ExpandColor(PWord(LineBuf)[Column]);\n   24 :\n      for Column:=0 to img.Width-1 do\n        img.colors[Column,Row]:=RGBToFPColor(PColorRGB(LineBuf)[Column]);\n   32 :\n      for Column:=0 to img.Width-1 do\n        if BFI.Compression=BI_BITFIELDS then\n        begin\n          c := ExpandColor(PLongWord(LineBuf)[Column]);\n          img.colors[Column,Row]:= c;\n          if c.alpha <> 0 then FHasAlphaValues:= true;\n        end\n        else\n        begin\n          if FTransparencyOption = toOpaque then\n            img.colors[Column,Row]:=RGBToFPColor(PColorRGB(PColorRGBA(LineBuf)+Column)^)\n          else\n          begin\n            c := RGBAToFPColor(PColorRGBA(LineBuf)[Column]);\n            if c.alpha <> 0 then FHasAlphaValues:= true;\n            img.colors[Column,Row]:= c;\n          end;\n        end;\n    end;\nend;\n\nprocedure TBGRAReaderBMP.WriteScanLineBGRA(Row: Integer; Img: TFPCustomImage);\n\nVar\n  Column : Integer;\n  PDest: PBGRAPixel;\n  PSrc: PByte;\nbegin\n  PDest := TBGRACustomBitmap(Img).ScanLine[Row];\n  Case BFI.BitCount of\n   1 :\n     for Column:=0 to Img.Width-1 do\n     begin\n       if ((LineBuf[Column div 8] shr (7-(Column and 7)) ) and 1) <> 0 then\n         PDest^ := FBGRAPalette[1]\n       else\n         PDest^ := FBGRAPalette[0];\n       inc(PDest);\n     end;\n   4 :\n      for Column:=0 to img.Width-1 do\n      begin\n        PDest^ := FBGRAPalette[(LineBuf[Column div 2] shr (((Column+1) and 1)*4)) and $0f];\n        inc(PDest);\n      end;\n   8 :\n      for Column:=0 to img.Width-1 do\n      begin\n        PDest^ := FBGRAPalette[LineBuf[Column]];\n        inc(PDest);\n      end;\n   16 :\n      for Column:=0 to img.Width-1 do\n      begin\n        PDest^ :=ExpandColorBGRA(PWord(LineBuf)[Column]);\n        inc(PDest);\n      end;\n   24 : begin\n      PSrc := LineBuf;\n      for Column:=0 to img.Width-1 do\n      begin\n        PDest^ := BGRA((Psrc+2)^,(Psrc+1)^,(Psrc)^);\n        inc(PDest);\n        inc(PSrc,3);\n      end;\n   end;\n   32 :\n     if BFI.Compression=BI_BITFIELDS then\n     begin\n      for Column:=0 to img.Width-1 do\n      begin\n        PDest^:=ExpandColorBGRA(PLongWord(LineBuf)[Column]);\n        if PDest^.alpha <> 0 then FHasAlphaValues:= true;\n        inc(PDest);\n      end;\n     end else\n     if FTransparencyOption = toOpaque then\n     begin\n       {$PUSH}{$WARNINGS OFF}\n       if TBGRAPixel_RGBAOrder then\n       begin\n        PSrc := LineBuf;\n        for Column:=0 to img.Width-1 do\n        begin\n          PDest^:= BGRA((PSrc)^,(PSrc+1)^,(PSrc+2)^);\n          inc(PDest);\n          Inc(PSrc,4);\n        end;\n       end\n       else\n       begin\n        PSrc := LineBuf;\n        for Column:=0 to img.Width-1 do\n        begin\n          PDest^:= BGRA((PSrc+2)^,(PSrc+1)^,PSrc^);\n          inc(PDest);\n          Inc(PSrc,4);\n        end;\n       end;\n       {$POP}\n     end else\n     begin\n       {$PUSH}{$WARNINGS OFF}\n       if TBGRAPixel_RGBAOrder then\n       begin\n        PSrc := LineBuf;\n        for Column:=0 to img.Width-1 do\n        begin\n          PDest^:= BGRA((PSrc+2)^,(PSrc+1)^,(PSrc)^,(PSrc+3)^);\n          if PDest^.alpha <> 0 then FHasAlphaValues:= true;\n          inc(PDest);\n          Inc(PSrc,4);\n        end;\n       end\n       else\n       begin\n         PSrc := LineBuf;\n         for Column:=0 to img.Width-1 do\n         begin\n           PDest^ := PBGRAPixel(PSrc)^;\n           if PDest^.alpha <> 0 then FHasAlphaValues:= true;\n           inc(PDest);\n           Inc(PSrc,4);\n         end;\n       end;\n       {$POP}\n     end;\n    end;\nend;\n\nprocedure TBGRAReaderBMP.ReadMaskLine(Row: Integer; Stream: TStream);\nbegin\n  FillChar(FMaskData^, FMaskDataSize, 0);\n  Stream.Read(FMaskData^, FMaskDataSize);\nend;\n\nprocedure TBGRAReaderBMP.SkipMaskLine(Row: Integer; Stream: TStream);\nbegin\n  Stream.Position := Stream.Position+FMaskDataSize;\nend;\n\nprocedure TBGRAReaderBMP.WriteMaskLine(Row: Integer; Img: TFPCustomImage);\nvar x, maskPos: integer;\n  bit: byte;\n  bmp: TBGRACustomBitmap;\n  pimg: PBGRAPixel;\nbegin\n  if Img is TBGRACustomBitmap then\n    bmp := TBGRACustomBitmap(Img)\n  else\n    exit;\n\n  maskPos := 0;\n  bit := $80;\n  pimg := bmp.ScanLine[Row];\n  for x := 0 to bmp.Width-1 do\n  begin\n    if (FMaskData[maskPos] and bit) <> 0 then //if AND mask is non zero, value is kept\n    begin\n      if pimg^.alpha = 255 then\n      begin\n        pimg^.alpha := 0;\n        if LongWord(pimg^) <> 0 then\n        begin\n         bmp.NeedXorMask;\n         bmp.XorMask.SetPixel(x,Row,pimg^);\n        end;\n      end;\n    end;\n    inc(pimg);\n    bit := bit shr 1;\n    if bit = 0 then\n    begin\n      bit := $80;\n      inc(maskPos);\n    end;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.ReadResolutionValues(Img: TFPCustomImage);\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  {$ELSE}\n  with Img do\n  {$ENDIF}\n  begin\n    ResolutionUnit:=ruPixelsPerCentimeter;\n    ResolutionX :=BFI.XPelsPerMeter/100;\n    ResolutionY :=BFI.YPelsPerMeter/100;\n  end;\n end;\n\nfunction  TBGRAReaderBMP.InternalCheck (Stream:TStream) : boolean;\nbegin\n  fillchar(BFH, sizeof(BFH), 0);\n  if Subformat in [bsfHeaderless,bsfHeaderlessWithMask] then\n  begin\n   result := true;\n   Hotspot := Point(0,0);\n  end else\n  begin\n    if stream.Read(BFH,SizeOf(BFH)) < sizeof(BFH) then\n    begin\n      result := false;\n      exit;\n    end;\n    Hotspot := Point(LEtoN(PWord(@BFH.bfReserved)^),LEtoN((PWord(@BFH.bfReserved)+1)^));\n    {$IFDEF ENDIAN_BIG}\n    SwapBMPFileHeader(BFH);\n    {$ENDIF}\n    With BFH do\n      Result:=(bfType=BMmagic); // Just check magic number\n  end;\nend;\n\nprocedure TBGRAReaderBMP.InitReadBuffer(AStream: TStream; ASize: integer);\nbegin\n  setLength(FBuffer,ASize);\n  FBufferSize := AStream.Read(FBuffer[0],ASize);\n  FBufferPos := 0;\n  FBufferStream := AStream;\nend;\n\nprocedure TBGRAReaderBMP.CloseReadBuffer;\nbegin\n  FBufferStream.Position:= FBufferStream.Position-FBufferSize+FBufferPos;\nend;\n\nfunction TBGRAReaderBMP.GetNextBufferByte: byte;\nbegin\n  if FBufferPos < FBufferSize then\n  begin\n    result := FBuffer[FBufferPos];\n    inc(FBufferPos);\n  end else\n  if FBufferSize = 0 then\n    result := 0\n  else\n  begin\n    FBufferSize := FBufferStream.Read(FBuffer[0],length(FBuffer));\n    FBufferPos := 0;\n    if FBufferPos < FBufferSize then\n    begin\n      result := FBuffer[FBufferPos];\n      inc(FBufferPos);\n    end else\n      result := 0;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.MakeOpaque(Img: TFPCustomImage);\nvar c: TFPColor;\n  x,y: Int32or64;\nbegin\n  if Img is TBGRACustomBitmap then\n    TBGRACustomBitmap(Img).AlphaFill(255)\n  else\n    for y := 0 to Img.Height-1 do\n      for x := 0 to Img.Width-1 do\n      begin\n        c := Img.Colors[x,y];\n        c.alpha := alphaOpaque;\n        Img.Colors[x,y] := c;\n      end;\nend;\n\nprocedure TBGRAReaderBMP.LoadMask(Stream: TStream; Img: TFPCustomImage; var ShouldContinue: boolean);\nbegin\n  if Img is TBGRACustomBitmap then TBGRACustomBitmap(Img).DiscardXorMask;\n  FMaskDataSize := ((Img.Width+31) div 32)*4; //padded to LongWord\n  getmem(FMaskData, FMaskDataSize);\n  try\n    ImageVerticalLoop(Stream,Img, @ReadMaskLine, @SkipMaskLine, @WriteMaskLine, nil, ShouldContinue);\n  finally\n    freemem(FMaskData);\n    FMaskData := nil;\n    FMaskDataSize := 0;\n  end;\nend;\n\nprocedure TBGRAReaderBMP.MainProgressProc(Percent: integer;\n  var ShouldContinue: boolean);\nbegin\n  Progress(psRunning,Percent,false,EmptyRect,'',ShouldContinue);\nend;\n\nprocedure TBGRAReaderBMP.ImageVerticalLoop(Stream: TStream;\n  Img: TFPCustomImage; ReadProc, SkipProc: TReadScanlineProc;\n  WriteProc: TWriteScanlineProc; ProgressProc: TProgressProc;\n  var ShouldContinue: boolean);\nvar\n  prevPercent, percent, percentAdd : byte;\n  percentMod : LongWord;\n  percentAcc, percentAccAdd : LongWord;\n  PrevSourceRow,SourceRow, SourceRowDelta, SourceLastRow: integer;\n  SourceRowAdd: integer;\n  SourceRowAcc,SourceRowMod: integer;\n  SourceRowAccAdd: integer;\n  OutputLastRow, OutputRow, OutputRowDelta: integer;\nbegin\n  if OutputHeight <= 0 then exit;\n\n  percent:=0;\n  percentMod:= OutputHeight;\n  percentAdd := 100 div percentMod;\n  percentAcc:= percentMod div 2;\n  percentAccAdd := 100 mod percentMod;\n\n  DeltaX:=-1; DeltaY:=-1;\n  if TopDown then\n  begin\n    SourceRowDelta := 1;\n    SourceRow := 0;\n    SourceLastRow := BFI.Height-1;\n  end else\n  begin\n    SourceRowDelta := -1;\n    SourceRow := BFI.Height-1;\n    SourceLastRow := 0;\n  end;\n  OutputRowDelta:= SourceRowDelta;\n\n  SourceRowMod := OutputHeight;\n  SourceRowAdd := (BFI.Height div SourceRowMod)*SourceRowDelta;\n  SourceRowAcc := SourceRowMod div 2;\n  SourceRowAccAdd := BFI.Height mod SourceRowMod;\n  If TopDown then\n  begin\n    OutputRow := 0;\n    OutputLastRow := OutputHeight-1;\n  end\n  else\n  begin\n    OutputRow := OutputHeight-1;\n    OutputLastRow := 0;\n  end;\n\n  PrevSourceRow := SourceRow-SourceRowDelta;\n\n  while ShouldContinue and (SourceRow <> SourceLastRow+SourceRowDelta) do\n  begin\n    while PrevSourceRow <> SourceRow do\n    begin\n      inc(PrevSourceRow, SourceRowDelta);\n      if PrevSourceRow = SourceRow then\n        ReadProc(PrevSourceRow,Stream)\n      else\n        SkipProc(PrevSourceRow,Stream);\n    end;\n    WriteProc(OutputRow,Img);\n    if OutputRow = OutputLastRow then break;\n\n    inc(OutputRow,OutputRowDelta);\n    inc(SourceRow,SourceRowAdd);\n    inc(SourceRowAcc,SourceRowAccAdd);\n    if SourceRowAcc >= SourceRowMod then\n    begin\n     dec(SourceRowAcc,SourceRowMod);\n     Inc(SourceRow,SourceRowDelta);\n    end;\n\n    prevPercent := percent;\n    inc(percent,percentAdd);\n    inc(percentAcc,percentAccAdd);\n    if percentAcc>=percentMod then\n    begin\n      dec(percentAcc, percentMod);\n      inc(percent);\n    end;\n    if (percent<>prevPercent) and Assigned(ProgressProc) then ProgressProc(percent, ShouldContinue);\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifBmp, TBGRAReaderBMP, True, 'BMP Format', 'bmp');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadbmpmiomap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Reader implementation for iGo BMP format }\nunit BGRAReadBmpMioMap;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, BGRABitmapTypes;\n\nconst\n  MioMapMagicValue = 'RL';\n  MioMapTransparentColor = $F81F;\n\ntype\n  { Header format for iGo bitmap }\n  TMioHeader = packed record\n    magic: packed array[1..2] of char;\n    format: word;\n    width,height,nbColors,nbChunks: word;\n  end;\n\n  TPixelArray = array of TBGRAPixel;\n\n  { Reader for iGO bitmap format (MioMap) }\n  TBGRAReaderBmpMioMap = class(TFPCustomImageReader)\n  private\n    function ReadHeader(Stream: TStream; out header: TMioHeader): boolean;\n    function ReadPalette(Stream: TStream; nbColors: integer; alphaChannel: boolean): TPixelArray;\n    procedure UncompressChunks(Stream: TStream; nbChunks: integer; palette: TPixelArray; img: TFPCustomImage);\n  public\n    procedure InternalRead  (Stream:TStream; Img:TFPCustomImage); override;\n    function  InternalCheck (Stream:TStream) : boolean; override;\n  end;\n\nfunction MioMapToBGRA(AColor: Word): TBGRAPixel;\nfunction BGRAToMioMap(const AColor: TBGRAPixel): Word;\nfunction MioMapToAlpha(AValue: Byte): Byte;\nfunction AlphaToMioMap(AValue: Byte): Byte;\n\nimplementation\n\nuses bufstream;\n\nfunction MioMapToBGRA(AColor: Word): TBGRAPixel;\nbegin\n  if AColor = MioMapTransparentColor then\n    result := BGRAPixelTransparent\n  else\n    result := Color16BitToBGRA(AColor);\nend;\n\nfunction BGRAToMioMap(const AColor: TBGRAPixel): Word;\nbegin\n  if AColor.alpha < 7 then\n    result := MioMapTransparentColor\n  else\n  begin\n    result := BGRAToColor16Bit(AColor);\n    if result = MioMapTransparentColor then dec(result);\n  end;\nend;\n\nfunction MioMapToAlpha(AValue: Byte): Byte;\nbegin\n  result := AValue*255 div 32;\nend;\n\nfunction AlphaToMioMap(AValue: Byte): Byte;\nbegin\n  result := (AValue*32 + 64) div 255;\nend;\n\n{ TBGRAReaderBmpMioMap }\n\nfunction TBGRAReaderBmpMioMap.ReadHeader(Stream: TStream; out header: TMioHeader\n  ): boolean;\nbegin\n  result := false;\n  fillchar({%H-}header,sizeof(header),0);\n  if stream.Read(header, sizeof(header))<> sizeof(header) then exit;\n  if header.magic <> MioMapMagicValue then exit;\n  header.format:= LEtoN(header.format);\n  header.width:= LEtoN(header.width);\n  header.height:= LEtoN(header.height);\n  header.nbColors:= LEtoN(header.nbColors);\n  header.nbChunks:= LEtoN(header.nbChunks);\n  if header.format > 1 then exit;\n  result := true;\nend;\n\nfunction TBGRAReaderBmpMioMap.ReadPalette(Stream: TStream; nbColors: integer;\n  alphaChannel: boolean): TPixelArray;\nvar mioPalette: packed array of word;\n  nbColorsRead,i: integer;\n  colorValue: word;\n  alphaPalette: packed array of byte;\nbegin\n  setlength(mioPalette, nbColors);\n  setlength(result,nbColors);\n  nbColorsRead:= Stream.Read({%H-}mioPalette[0], nbColors*2) div 2;\n  for i := 0 to nbColorsRead-1 do\n  begin\n    colorValue := LEtoN(mioPalette[i]);\n    result[i] := MioMapToBGRA(colorValue);\n  end;\n  for i := nbColorsRead to nbColors-1 do\n    result[i] := BGRAPixelTransparent;\n  if alphaChannel then\n  begin\n    setlength(alphaPalette,nbColors);\n    Stream.Read(alphaPalette[0],nbColors);\n    for i := 0 to nbColors-1 do\n      if mioPalette[i] <> MioMapTransparentColor then\n        result[i].alpha := MioMapToAlpha(alphaPalette[i]);\n  end;\nend;\n\nprocedure TBGRAReaderBmpMioMap.UncompressChunks(Stream: TStream; nbChunks: integer;\n  palette: TPixelArray; img: TFPCustomImage);\nvar i,maxChunkSize: integer;\n  chunkSizes: array of integer;\n  chunkData: packed array of byte;\n  pos,bytesRead: integer;\n  palLen: integer;\n  x,y: integer;\n  p: PBGRAPixel;\n  colorOffset: integer;\n  b: byte;\n  w,h: integer;\n\n  procedure UncompressPixel(colorNumber, repeatCount: integer);\n  var\n    c: TBGRAPixel;\n  begin\n    if colorNumber >= palLen then\n      c := BGRAPixelTransparent\n    else\n      c := palette[colorNumber];\n    while (repeatCount > 0) and (y < h) do\n    begin\n      if p <> nil then\n      begin\n        p^ := c;\n        inc(p);\n      end else\n        img.Colors[x,y] := BGRAToFPColor(c);\n      inc(x);\n      if x = w then\n      begin\n        x := 0;\n        inc(y);\n        if p <> nil then\n        begin\n          if y >= h then p := nil\n          else\n            p := TBGRACustomBitmap(Img).ScanLine[y];\n        end;\n      end;\n      dec(repeatCount);\n    end;\n  end;\n\nbegin\n  palLen := length(palette);\n  if (img.Width = 0) or (img.Height = 0) or (palLen = 0) then exit;\n\n  maxChunkSize := 1;\n  setlength(chunkSizes, nbChunks);\n  for i := 0 to nbChunks-1 do\n  begin\n    if stream.read({%H-}b,1)=0 then b := 0;\n    if b < 255 then\n    begin\n      chunkSizes[i] := b;\n    end else\n    begin\n      if stream.read(b,1)=0 then b := 0;\n      chunkSizes[i] := b shl 8;\n      if stream.read(b,1)=0 then b := 0;\n      inc(chunkSizes[i], b);\n    end;\n    if chunkSizes[i]>maxChunkSize then\n      maxChunkSize := chunkSizes[i];\n  end;\n\n  setlength(chunkData, maxChunkSize);\n  x := 0;\n  y := 0;\n  w := img.Width;\n  h := img.Height;\n  colorOffset:= 0;\n  if Img is TBGRACustomBitmap then\n  begin\n    p := TBGRACustomBitmap(Img).ScanLine[y];\n    TBGRACustomBitmap(Img).FillTransparent;\n  end\n  else\n    p := nil;\n  for i:= 0 to nbChunks-1 do\n  begin\n    bytesRead := Stream.Read(chunkData[0], chunkSizes[i]);\n    pos := 0;\n    while pos < bytesRead do\n    begin\n      if (chunkData[pos] = $FE) and (pos+2 < bytesRead) then\n      begin\n        UncompressPixel(chunkData[pos+1]+colorOffset,chunkData[pos+2]);\n        inc(pos,3);\n      end else\n      if (chunkData[pos] = $ff) and (pos+1 < bytesRead) then\n      begin\n        UncompressPixel(0,chunkData[pos+1]);\n        inc(pos,2);\n      end else\n      if (chunkData[pos] = $fd) and (pos+2 < bytesRead) then\n      begin\n        colorOffset:= chunkData[pos+1] + (chunkData[pos+2] shl 8);\n        inc(pos,3);\n      end else\n      if chunkData[pos] = 0 then\n      begin\n        UncompressPixel(0,1);\n        inc(pos);\n      end else\n      begin\n        UncompressPixel(chunkData[pos]+colorOffset,1);\n        inc(pos);\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAReaderBmpMioMap.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar header: TMioHeader;\n  palette: TPixelArray;\n  buf: TReadBufStream;\nbegin\n  if not ReadHeader(stream, header) then exit;\n  buf := TReadBufStream.Create(Stream,1024);\n  Img.SetSize(header.width,header.height);\n  palette := ReadPalette(stream, header.nbColors, header.format = 1);\n  UncompressChunks(stream,header.nbChunks, palette, Img);\n  buf.Free;\nend;\n\nfunction TBGRAReaderBmpMioMap.InternalCheck(Stream: TStream): boolean;\nvar OldPosition : int64;\n  dummy: TMioHeader;\nbegin\n  OldPosition:= stream.Position;\n  result := ReadHeader(stream, dummy);\n  stream.Position:= OldPosition;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifBmpMioMap, TBGRAReaderBmpMioMap, True, 'iGO Bitmap Format', 'bmp');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadgif.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Provides reader for GIF format.)\n\n  This unit implements some optimisations of TFPReaderGif:\n  decompression algorithm and direct pixel access of TBGRABitmap.\n\n  Note: to read an animation use TBGRAAnimatedGif instead. }\n\nunit BGRAReadGif;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, FPReadGif;\n\ntype\n  PGifRGB = ^TGifRGB;\n\n  { @abstract(Reader for GIF still image format.)\n\n    For animations, use TBGRAAnimatedGif class. }\n  TBGRAReaderGif = class(TFPReaderGif)\n  protected\n    procedure ReadPaletteAtOnce(Stream: TStream; Size: integer);\n    procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    function ReadScanLine(Stream: TStream): boolean; override;\n    function WriteScanLineBGRA(Img: TFPCustomImage): Boolean; virtual;\n  end;\n\nimplementation\n\nuses BGRABitmapTypes;\n\n{ TBGRAReaderGif }\n\nprocedure TBGRAReaderGif.ReadPaletteAtOnce(Stream: TStream; Size: integer);\nVar\n  RGBEntries, RGBEntry : PGifRGB;\n  I : Integer;\n  c : TFPColor;\nbegin\n  FPalette.count := 0;\n  getmem(RGBEntries, sizeof(TGifRGB)*Size);\n  Stream.Read(RGBEntries^, sizeof(TGifRGB)*Size);\n  For I:=0 To Size-1 Do\n  Begin\n    RGBEntry := RGBEntries+I;\n    With c do\n    begin\n      Red:=RGBEntry^.Red or (RGBEntry^.Red shl 8);\n      Green:=RGBEntry^.Green or (RGBEntry^.Green shl 8);\n      Blue:=RGBEntry^.Blue or (RGBEntry^.Blue shl 8);\n      Alpha:=alphaOpaque;\n    end;\n    FPalette.Add(C);\n  End;\n  FreeMem(RGBEntries);\nend;\n\nprocedure TBGRAReaderGif.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  Introducer:byte;\n  ColorTableSize :Integer;\n  ContProgress: Boolean;\nbegin\n  FPalette:=nil;\n  FScanLine:=nil;\n  try\n    ContProgress:=true;\n    Progress(psStarting, 0, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n\n    FPalette := TFPPalette.Create(0);\n\n    Stream.Position:=0;\n    // header\n    Stream.Read(FHeader,SizeOf(FHeader));\n    Progress(psRunning, 0, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n\n    // Endian Fix Mantis 8541. Gif is always little endian\n    {$IFDEF ENDIAN_BIG}\n      with FHeader do\n        begin\n          ScreenWidth := LEtoN(ScreenWidth);\n          ScreenHeight := LEtoN(ScreenHeight);\n        end;\n    {$ENDIF}\n    // global palette\n    if (FHeader.Packedbit and $80) <> 0 then\n    begin\n      ColorTableSize := FHeader.Packedbit and 7 + 1;\n      ReadPaletteAtOnce(stream, 1 shl ColorTableSize);\n    end;\n\n    // skip extensions\n    Repeat\n      Introducer:=SkipBlock(Stream);\n    until (Introducer = $2C) or (Introducer = $3B);\n\n    // descriptor\n    Stream.Read(FDescriptor, SizeOf(FDescriptor));\n    {$IFDEF ENDIAN_BIG}\n      with FDescriptor do\n        begin\n          Left := LEtoN(Left);\n          Top := LEtoN(Top);\n          Width := LEtoN(Width);\n          Height := LEtoN(Height);\n        end;\n    {$ENDIF}\n    // local palette\n    if (FDescriptor.Packedbit and $80) <> 0 then\n    begin\n      ColorTableSize := FDescriptor.Packedbit and 7 + 1;\n      ReadPaletteAtOnce(stream, 1 shl ColorTableSize);\n    end;\n\n    // parse header\n    if not AnalyzeHeader then exit;\n\n    // create image\n    if Assigned(OnCreateImage) then\n      OnCreateImage(Self,Img);\n    Img.SetSize(FWidth,FHeight);\n\n    // read pixels\n    if not ReadScanLine(Stream) then exit;\n    if Img is TBGRACustomBitmap then\n    begin\n      if not WriteScanLineBGRA(Img) then exit;\n    end else\n      if not WriteScanLine(Img) then exit;\n\n    // ToDo: read further images\n  finally\n    FreeAndNil(FPalette);\n    ReAllocMem(FScanLine,0);\n  end;\n  Progress(FPimage.psEnding, 100, false, Rect(0,0,FWidth,FHeight), '', ContProgress);\nend;\n\nfunction TBGRAReaderGif.ReadScanLine(Stream: TStream): Boolean;\nvar\n  OldPos,\n  UnpackedSize,\n  PackedSize:longint;\n  I: Integer;\n  Data,\n  Bits,\n  Code: LongWord;\n  SourcePtr: PByte;\n  InCode: LongWord;\n\n  CodeSize: LongWord;\n  CodeMask: LongWord;\n  FreeCode: LongWord;\n  OldCode: LongWord;\n  Prefix: array[0..4095] of LongWord;\n  Suffix,\n  Stack: array [0..4095] of Byte;\n  StackPointer, StackTop: PByte;\n  StackSize: integer;\n  DataComp,\n  Target: PByte;\n  {%H-}B,\n  {%H-}FInitialCodeSize,\n  FirstChar: Byte;\n  ClearCode,\n  EOICode: Word;\n  ContProgress: Boolean;\n\nbegin\n  DataComp:=nil;\n  ContProgress:=true;\n  try\n    // read dictionary size\n    Stream.read({%H-}FInitialCodeSize, 1);\n\n    // search end of compressor table\n    OldPos:=Stream.Position;\n    PackedSize := 0;\n    Repeat\n      Stream.read({%H-}B, 1);\n      if B > 0 then\n      begin\n        inc(PackedSize, B);\n        Stream.Seek(B, soFromCurrent);\n      end;\n    until B = 0;\n\n    Progress(psRunning, trunc(100.0 * (Stream.position / Stream.size)),\n             False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit(false);\n\n    Getmem(DataComp, PackedSize);\n    // read compressor table\n    SourcePtr:=DataComp;\n    Stream.Position:=OldPos;\n    Repeat\n      Stream.read(B, 1);\n      if B > 0 then\n      begin\n         Stream.ReadBuffer(SourcePtr^, B);\n         Inc(SourcePtr,B);\n      end;\n    until B = 0;\n\n    Progress(psRunning, trunc(100.0 * (Stream.position / Stream.size)),\n             False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit(false);\n\n    SourcePtr:=DataComp;\n    Target := FScanLine;\n    CodeSize := FInitialCodeSize + 1;\n    ClearCode := 1 shl FInitialCodeSize;\n    EOICode := ClearCode + 1;\n    FreeCode := ClearCode + 2;\n    OldCode := 4096;\n    CodeMask := (1 shl CodeSize) - 1;\n    UnpackedSize:=FWidth * FHeight;\n    for I := 0 to ClearCode - 1 do\n    begin\n      Prefix[I] := 4096;\n      Suffix[I] := I;\n    end;\n    StackTop := @Stack[high(Stack)];\n    StackPointer := StackTop;\n    FirstChar := 0;\n    Data := 0;\n    Bits := 0;\n    // LZW decompression gif\n    while (UnpackedSize > 0) and (PackedSize > 0) do\n    begin\n      Inc(Data, SourcePtr^ shl Bits);\n      Inc(Bits, 8);\n      while Bits >= CodeSize do\n      begin\n        Code := Data and CodeMask;\n        Data := Data shr CodeSize;\n        Dec(Bits, CodeSize);\n        if Code = EOICode then Break;\n        if Code = ClearCode then\n        begin\n          CodeSize := FInitialCodeSize + 1;\n          CodeMask := (1 shl CodeSize) - 1;\n          FreeCode := ClearCode + 2;\n          OldCode := 4096;\n          Continue;\n        end;\n        if Code > FreeCode then Break;\n        if OldCode = 4096 then\n        begin\n          FirstChar := Suffix[Code];\n          Target^ := FirstChar;\n          Inc(Target);\n          Dec(UnpackedSize);\n          OldCode := Code;\n          Continue;\n        end;\n        InCode := Code;\n        if Code = FreeCode then\n        begin\n          StackPointer^ := FirstChar;\n          dec(StackPointer);\n          Code := OldCode;\n        end;\n        while Code > ClearCode do\n        begin\n          StackPointer^ := Suffix[Code];\n          dec(StackPointer);\n          Code := Prefix[Code];\n        end;\n        FirstChar := Suffix[Code];\n        StackPointer^ := FirstChar;\n        dec(StackPointer);\n        Prefix[FreeCode] := OldCode;\n        Suffix[FreeCode] := FirstChar;\n        if (FreeCode = CodeMask) and\n           (CodeSize < 12) then\n        begin\n          Inc(CodeSize);\n          CodeMask := (1 shl CodeSize) - 1;\n        end;\n        if FreeCode < 4095 then Inc(FreeCode);\n        OldCode := InCode;\n        StackSize := StackTop-StackPointer;\n        if StackSize > 0 then\n        begin\n          Move((StackPointer+1)^, Target^, StackSize);\n          inc(Target, StackSize);\n          StackPointer:= StackTop;\n          dec(UnpackedSize, StackSize);\n        end;\n      end;\n      Inc(SourcePtr);\n      Dec(PackedSize);\n    end;\n    Progress(psRunning, trunc(100.0 * (Stream.position / Stream.size)),\n             False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit(false);\n  finally\n    if DataComp<>nil then\n      FreeMem(DataComp);\n  end;\n  Result:=true;\nend;\n\nfunction TBGRAReaderGif.WriteScanLineBGRA(Img: TFPCustomImage): Boolean;\nVar\n  Row, Col,i : Integer;\n  Pass, Every : byte;\n  P : PByte;\n  PBGRAPalette: PBGRAPixel;\n  PDest: PBGRAPixel;\n  function IsMultiple(NumberA, NumberB: Integer): Boolean;\n  begin\n    Result := (NumberA >= NumberB) and\n              (NumberB > 0) and\n              (NumberA mod NumberB = 0);\n  end;\nbegin\n  Result:=false;\n  P:=FScanLine;\n  getmem(PBGRAPalette, (FPalette.Count)*sizeof(TBGRAPixel));\n  for i := 0 to FPalette.Count-1 do PBGRAPalette[i] := FPColorToBGRA(FPalette.Color[i]);\n  If FInterlace then\n  begin\n    For Pass := 1 to 4 do\n    begin\n      Case Pass of\n         1 : begin\n               Row := 0;\n               Every := 8;\n             end;\n         2 : begin\n               Row := 4;\n               Every := 8;\n             end;\n         3 : begin\n               Row := 2;\n               Every := 4;\n             end;\n         else{4}\n             begin\n               Row := 1;\n               Every := 2;\n             end;\n        end;\n      Repeat\n        PDest := TBGRACustomBitmap(Img).ScanLine[Row];\n        for Col:=Img.Width-1 downto 0 do\n        begin\n          PDest^ := PBGRAPalette[P^];\n          Inc(P);\n          Inc(PDest);\n        end;\n        Inc(Row, Every);\n      until Row >= Img.Height;\n    end;\n  end\n  else\n  begin\n    for Row:=0 to Img.Height-1 do\n    begin\n      PDest := TBGRACustomBitmap(Img).ScanLine[Row];\n      for Col:=Img.Width-1 downto 0 do\n      begin\n        PDest^ := PBGRAPalette[P^];\n        Inc(P);\n        Inc(PDest);\n      end;\n    end;\n  end;\n  FreeMem(PBGRAPalette);\n  Result:=true;\nend;\n\n\ninitialization\n  BGRARegisterImageReader(ifGif, TBGRAReaderGif, True, 'GIF Graphics', 'gif');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadico.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Provides readers for icons and cursors }\nunit BGRAReadIco;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage{$IFDEF BGRABITMAP_USE_LCL}, Graphics{$ENDIF};\n\ntype\n  {$IFDEF BGRABITMAP_USE_LCL}TCustomIconClass = class of TCustomIcon;{$ENDIF}\n  TByteSet = set of byte;\n\n  { Image reader for ICO and CUR format }\n  TBGRAReaderIcoOrCur = class(TFPCustomImageReader)\n  protected\n    procedure InternalRead({%H-}Str: TStream; {%H-}Img: TFPCustomImage); override;\n    function InternalCheck(Str: TStream): boolean; override;\n    function ExpectedMagic: TByteSet; virtual; abstract;\n    {$IFDEF BGRABITMAP_USE_LCL}function LazClass: TCustomIconClass; virtual; abstract;{$ENDIF}\n  public\n    WantedWidth, WantedHeight : integer;\n  end;\n\n  { Image reader for ICO format }\n  TBGRAReaderIco = class(TBGRAReaderIcoOrCur)\n  protected\n    function ExpectedMagic: TByteSet; override;\n    {$IFDEF BGRABITMAP_USE_LCL}function LazClass: TCustomIconClass; override;{$ENDIF}\n  end;\n\n  { Image reader for CUR format }\n  TBGRAReaderCur = class(TBGRAReaderIcoOrCur)\n  protected\n    function ExpectedMagic: TByteSet; override;\n    {$IFDEF BGRABITMAP_USE_LCL}function LazClass: TCustomIconClass; override;{$ENDIF}\n  end;\n\nimplementation\n\nuses BGRABitmapTypes{$IFNDEF BGRABITMAP_USE_LCL}, BGRAIconCursor{$ENDIF};\n\n{ TBGRAReaderCur }\n\nfunction TBGRAReaderCur.ExpectedMagic: TByteSet;\nbegin\n  result := [2];\nend;\n\n{$IFDEF BGRABITMAP_USE_LCL}function TBGRAReaderCur.LazClass: TCustomIconClass;\nbegin\n  result := TCursorImage;\nend;{$ENDIF}\n\n{ TBGRAReaderIco }\n\nfunction TBGRAReaderIco.ExpectedMagic: TByteSet;\nbegin\n  result := [1,2];\nend;\n\n{$IFDEF BGRABITMAP_USE_LCL}function TBGRAReaderIco.LazClass: TCustomIconClass;\nbegin\n  result := TIcon;\nend;{$ENDIF}\n\n{ TBGRAReaderIcoOrCur }\n\nprocedure TBGRAReaderIcoOrCur.InternalRead(Str: TStream; Img: TFPCustomImage);\n{$IFDEF BGRABITMAP_USE_LCL}\nvar ico: TCustomIcon; i,bestIdx: integer;\n    height,width: word; format:TPixelFormat;\n    bestHeight,bestWidth: integer; maxFormat: TPixelFormat;\n    compWidth,compHeight: integer;\nbegin\n  if WantedWidth > 0 then compWidth:= WantedWidth else compWidth:= 65536;\n  if WantedHeight > 0 then compHeight:= WantedHeight else compHeight:= 65536;\n  ico := LazClass.Create;\n  try\n    ico.LoadFromStream(Str);\n    bestIdx := -1;\n    bestHeight := 0;\n    bestWidth := 0;\n    maxFormat := pfDevice;\n    for i := 0 to ico.Count-1 do\n    begin\n      ico.GetDescription(i,format,height,width);\n      if (bestIdx = -1) or (abs(height-compHeight)+abs(width-compWidth) < abs(bestHeight-compHeight)+abs(bestWidth-compWidth)) or\n      ((height = bestHeight) and (width = bestWidth) and (format > maxFormat)) then\n      begin\n        bestIdx := i;\n        bestHeight := height;\n        bestWidth := width;\n        maxFormat := format;\n      end;\n    end;\n    if (bestIdx = -1) or (bestWidth = 0) or (bestHeight = 0) then\n      raise exception.Create('No adequate icon found') else\n    begin\n      ico.Current := bestIdx;\n      Img.Assign(ico);\n    end;\n  finally\n    ico.free;\n  end;\nend;\n{$ELSE}\nvar icoCur: TBGRAIconCursor;\n    compWidth,compHeight: integer;\n    bmp: TBGRACustomBitmap;\nbegin\n  if WantedWidth > 0 then compWidth:= WantedWidth else compWidth:= 65536;\n  if WantedHeight > 0 then compHeight:= WantedHeight else compHeight:= 65536;\n  icoCur := TBGRAIconCursor.Create(Str);\n  try\n    bmp := icoCur.GetBestFitBitmap(compWidth,compHeight);\n    try\n      Img.Assign(bmp);\n    finally\n      bmp.Free;\n    end;\n  finally\n    icoCur.Free;\n  end;\nend;\n{$ENDIF}\n\nfunction TBGRAReaderIcoOrCur.InternalCheck(Str: TStream): boolean;\nvar {%H-}magic: packed array[0..5] of byte;\n    oldPos: int64;\nbegin\n  oldPos := str.Position;\n  result := (str.Read({%H-}magic,sizeof(magic)) = sizeof(magic));\n  str.Position:= oldPos;\n  if result then\n    result := (magic[0] = $00) and (magic[1] = $00) and (magic[2] in ExpectedMagic) and (magic[3] = $00) and\n             (magic[4] + (magic[5] shl 8) > 0);\nend;\n\ninitialization\n  BGRARegisterImageReader(ifIco, TBGRAReaderIco, True, 'Icon Format', 'ico');\n  BGRARegisterImageReader(ifCur, TBGRAReaderCur, True, 'Cursor Format', 'cur');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadjpeg.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano added Resolution support\n  2025-04  - Massimo Magnano added GetJpegInfo class function\n}\n{*****************************************************************************}\n\n{ Provides reader for JPEG image format }\nunit BGRAReadJpeg;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Types, JPEGLib,\n  BGRABitmapTypes, Classes, SysUtils, FPReadJPEG, FPImage;\n\nconst\n  jsFullSize = FPReadJPEG.jsFullSize;\n  jsHalf = FPReadJPEG.jsHalf;\n  jsQuarter = FPReadJPEG.jsQuarter;\n  jsEighth = FPReadJPEG.jsEighth;\n\n  jpBestQuality = FPReadJPEG.jpBestQuality;\n  jpBestSpeed = FPReadJPEG.jpBestSpeed;\n\ntype\n  TJPEGScale = FPReadJPEG.TJPEGScale;\n  TJPEGReadPerformance = FPReadJPEG.TJPEGReadPerformance;\n\n  TJPEGInfo = record\n    Width, Height: Integer;\n    {$IF FPC_FULLVERSION>=30301}\n    Orientation: TExifOrientation;\n    {$ENDIF}\n    ProgressiveEncoding,\n    GrayScale: Boolean;\n    ResolutionUnit: TResolutionUnit;\n    ResolutionX,\n    ResolutionY: Single;\n  end;\n\n  { Reader for JPEG image format }\n\n  { TBGRAReaderJpeg }\n\n  TBGRAReaderJpeg = class(TFPReaderJPEG)\n    constructor Create; override;\n  protected\n    {$IF FPC_FULLVERSION<30203}\n    CompressInfo: jpeg_decompress_struct;\n    FError: jpeg_error_mgr;\n\n    procedure ReadResolutionValues(Img: TFPCustomImage); virtual;\n    procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n    {$ENDIF}\n\n    function InternalCheck(Str: TStream): boolean; override;\n\n  public\n    class function GetJpegInfo(AFileName: String; var AInfo: TJpegInfo): Boolean; overload;\n    class function GetJpegInfo(Str: TStream; var AInfo: TJpegInfo): Boolean; overload;\n\n  published\n    //property CompressInfo : jpeg_decompress_struct; rw\n    {$IF FPC_FULLVERSION>=30301}\n    property Orientation;         //: TExifOrientation; r\n    {$ENDIF}\n    property ProgressiveEncoding; //: boolean;  r\n    property GrayScale;           //: boolean;  r\n    property Smoothing;           //: boolean;  rw\n    property Performance;         //: TJPEGReadPerformance; rw\n    property Scale;               //: TJPEGScale; rw\n    property MinWidth;            //: integer rw\n    property MinHeight;           //: integer rw\n  end;\n\nimplementation\n\nuses  JdAPImin, JDataSrc, JdAPIstd, JmoreCfg;\n\n\nfunction density_unitToResolutionUnit(Adensity_unit: UINT8): TResolutionUnit;\nbegin\n  Case Adensity_unit of\n  1: Result :=ruPixelsPerInch;\n  2: Result :=ruPixelsPerCentimeter;\n  else Result :=ruNone;\n  end;\nend;\n\nvar\n  jpeg_std_error: jpeg_error_mgr;\n\n{ TBGRAReaderJpeg }\n\nconstructor TBGRAReaderJpeg.Create;\nbegin\n  inherited Create;\n  Performance := jpBestQuality;\nend;\n\n{$IF FPC_FULLVERSION<30203}\nprocedure TBGRAReaderJpeg.ReadResolutionValues(Img: TFPCustomImage);\nbegin\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  begin\n    ResolutionUnit:=density_unitToResolutionUnit(CompressInfo.density_unit);\n    ResolutionX :=CompressInfo.X_density;\n    ResolutionY :=CompressInfo.Y_density;\n  end;\nend;\n\nprocedure TBGRAReaderJpeg.InternalRead(Str: TStream; Img: TFPCustomImage);\nbegin\n  inherited InternalRead(Str, Img);\n\n  //I'm forced to re-read Compress Info because it's not declared as Protected see issue #40327\n  FillChar(CompressInfo,SizeOf(CompressInfo),0);\n\n  if (Str.Size>0) then\n  begin\n    FError:=jpeg_std_error;\n    CompressInfo.err := @FError;\n    jpeg_CreateDecompress(@CompressInfo, JPEG_LIB_VERSION, SizeOf(CompressInfo));\n    try\n       Str.Position:=0;\n       jpeg_stdio_src(@CompressInfo, @Str);\n       jpeg_read_header(@CompressInfo, false);\n       ReadResolutionValues(Img);\n    finally\n       jpeg_Destroy_Decompress(@CompressInfo);\n    end;\n  end;\nend;\n{$ENDIF}\n\nfunction TBGRAReaderJpeg.InternalCheck(Str: TStream): boolean;\nvar\n  {%H-}magic: packed array[0..3] of byte;\n  OldPos,BytesRead:int64;\n\nbegin\n  Result:=false;\n  if Str=nil then exit;\n  OldPos:= str.Position;\n  BytesRead := str.Read({%H-}magic,sizeof(magic));\n  str.Position:=OldPos;\n  if BytesRead<>sizeof(magic) then exit;\n  if (magic[0] = $ff) and (magic[1] = $d8) and (magic[2] = $ff) and (magic[3] >= $c0) then result := true;\nend;\n\nclass function TBGRAReaderJpeg.GetJpegInfo(AFileName: String; var AInfo: TJpegInfo): Boolean;\nvar\n   AStr: TFileStream;\n\nbegin\n   try\n      Result:= False;\n      AStr:= TFileStream.Create(AFileName, fmOpenRead);\n      Result:= GetJpegInfo(AStr, AInfo);\n\n   finally\n      AStr.Free;\n   end;\nend;\n\nclass function TBGRAReaderJpeg.GetJpegInfo(Str: TStream; var AInfo: TJpegInfo): Boolean;\nvar\n  {%H-}magic: packed array[0..3] of byte;\n  OldPos,BytesRead: int64;\n  JInfo: jpeg_decompress_struct;\n  JError: jpeg_error_mgr;\n\nbegin\n  //InternalCheck\n  Result:=false;\n  if Str=nil then exit;\n  OldPos:= str.Position;\n  BytesRead := str.Read({%H-}magic,sizeof(magic));\n  if BytesRead<>sizeof(magic) then exit;\n  if (magic[0] = $ff) and (magic[1] = $d8) and (magic[2] = $ff) and (magic[3] >= $c0) then result := true;\n  Str.Position:= OldPos;\n\n  FillChar(AInfo, Sizeof(AInfo), 0);\n  if Result then\n  with AInfo do\n  begin\n    //Same as InternalSize but with our Additional Info\n    FillChar(JInfo,SizeOf(JInfo),0);\n    if Str.Position < Str.Size then begin\n      JError:=jpeg_std_error;\n      JInfo.err := @JError;\n      jpeg_CreateDecompress(@JInfo, JPEG_LIB_VERSION, SizeOf(JInfo));\n      try\n         jpeg_stdio_src(@JInfo, @Str);\n\n         jpeg_read_header(@JInfo, TRUE);\n\n         Width := JInfo.image_width;\n         Height := JInfo.image_height;\n\n         {$IF FPC_FULLVERSION>=30301}\n         if JInfo.saw_EXIF_marker and (JInfo.orientation >= Ord(Low(TExifOrientation))) and (JInfo.orientation <= Ord(High(TExifOrientation))) then\n           Orientation := TExifOrientation(JInfo.orientation)\n         else\n           Orientation := Low(TExifOrientation);\n         {$ENDIF}\n\n         Grayscale := JInfo.jpeg_color_space = JCS_GRAYSCALE;\n         ProgressiveEncoding := jpeg_has_multiple_scans(@JInfo);\n\n         ResolutionUnit:=density_unitToResolutionUnit(JInfo.density_unit);\n         ResolutionX :=JInfo.X_density;\n         ResolutionY :=JInfo.Y_density;\n\n      finally\n        jpeg_Destroy_Decompress(@JInfo);\n      end;\n    end;\n\n    Str.Position:= OldPos;\n  end;\nend;\n\nprocedure JPEGError(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\n  raise Exception.CreateFmt('JPEG error',[CurInfo^.err^.msg_code]);\nend;\n\nprocedure EmitMessage(CurInfo: j_common_ptr; msg_level: Integer);\nbegin\n  if CurInfo=nil then exit;\n  if msg_level=0 then ;   //MaxM: really senseless, consider eliminating this procedure\nend;\n\nprocedure ResetErrorMgr(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\n  CurInfo^.err^.num_warnings := 0;\n  CurInfo^.err^.msg_code := 0;\nend;\n\ninitialization\n  with jpeg_std_error do begin\n    error_exit:=@JPEGError;\n    emit_message:=@EmitMessage;\n    output_message:= nil;\n    format_message:= nil;\n    reset_error_mgr:=@ResetErrorMgr;\n  end;\n\n  BGRARegisterImageReader(ifJpeg, TBGRAReaderJpeg, True, 'JPEG Graphics', 'jpg;jpeg');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadlzp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Provides reader for LazPaint image format }\nunit BGRAReadLzp;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, BGRALzpCommon, BGRABitmapTypes, BGRABitmap;\n\ntype\n  { Reader for LZP image format (flattened) }\n\n  { TBGRAReaderLazPaint }\n\n  TBGRAReaderLazPaint = class(TFPCustomImageReader)\n  protected\n    FHeight: integer;\n    FNbLayers: integer;\n    FWidth: integer;\n    FCaption: string;\n    FDimensionsAlreadyFetched: boolean;\n    {%H-}header: TLazPaintImageHeader;\n    FWantThumbnail: boolean;\n\n    function GetCompression: TLzpCompression;\n    function GetIncludeThumbnail: boolean;\n    procedure SetIncludeThumbnail(AValue: boolean);\n    procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n    procedure InternalReadLayers({%H-}str: TStream;{%H-}Img: TFPCustomImage); virtual;\n    procedure InternalReadCompressableBitmap(str: TStream; Img: TFPCustomImage); virtual;\n    function InternalCheck(Str: TStream): boolean; override;\n  public\n    class procedure LoadRLEImage(Str: TStream; Img: TFPCustomImage; out ACaption: string); static;\n    property Width: integer read FWidth;\n    property Height: integer read FHeight;\n    property WantThumbnail: boolean read FWantThumbnail write FWantThumbnail; deprecated 'Use IncludeThumbnail';\n\n  published\n    property NbLayers: integer read FNbLayers;\n    property Caption: string read FCaption;\n\n    {** Property to read the compression in use }\n    property Compression: TLzpCompression read GetCompression;\n    {** Specify if you want the thumbnail or not }\n    property IncludeThumbnail: boolean read GetIncludeThumbnail write SetIncludeThumbnail;\n  end;\n\nimplementation\n\nuses BGRACompressableBitmap, BGRAReadPng;\n\n{ TBGRAReaderLazPaint }\n\nfunction TBGRAReaderLazPaint.GetCompression: TLzpCompression;\nbegin\n  result:= LzpGetCompression(header.CompressionMode);\nend;\n\nfunction TBGRAReaderLazPaint.GetIncludeThumbnail: boolean;\nbegin\n  result:= LzpGetIncludeThumbnail(header.CompressionMode);\nend;\n\nprocedure TBGRAReaderLazPaint.SetIncludeThumbnail(AValue: boolean);\nbegin\n  FWantThumbnail:= AValue;\nend;\n\nprocedure TBGRAReaderLazPaint.InternalRead(Str: TStream; Img: TFPCustomImage);\nvar\n  oldPos: int64;\n  png: TBGRAReaderPNG;\n\nbegin\n  FCaption := '';\n  FWidth:= 0;\n  FHeight:= 0;\n  FNbLayers:= 0;\n  FDimensionsAlreadyFetched:= false;\n  oldPos := str.Position;\n  str.ReadBuffer({%H-}header.magic,sizeof(header.magic));\n  if header.magic = LAZPAINT_MAGIC_HEADER then\n  begin\n    str.ReadBuffer(header.zero1, sizeof(header)-sizeof(header.magic));\n    LazPaintImageHeader_SwapEndianIfNeeded(header);\n    if (header.zero1 <> 0) or (header.zero2 <> 0) or\n       (header.headerSize < $30) then raise exception.Create('Invalid file format');\n    FWidth:= header.width;\n    FHeight:= header.height;\n    FNbLayers:= header.nbLayers;\n    FDimensionsAlreadyFetched:= true;\n\n    if FWantThumbnail and LzpGetIncludeThumbnail(header.compressionMode) then\n      begin\n        str.Position:= oldPos+header.headerSize;\n        png := TBGRAReaderPNG.create;\n        try\n          png.ImageRead(Str,Img);\n        except\n          png.Free;\n          raise exception.Create('Invalid file format');\n        end;\n        png.free;\n        exit;\n      end;\n\n    if not(LzpCompressionIsValid(header.compressionMode)) then raise exception.Create('Compression mode not supported');\n\n    str.Position:= oldPos+header.previewOffset;\n    if (header.compressionMode and LAZPAINT_COMPRESSION_MASK) = LAZPAINT_COMPRESSION_MODE_RLE then\n      LoadRLEImage(Str, Img, FCaption)\n    else\n      InternalReadCompressableBitmap(str,Img);\n\n    if header.layersOffset > 0 then\n    begin\n      Str.Position:= oldPos+header.layersOffset;\n      InternalReadLayers(Str,Img);\n    end;\n  end else\n  begin\n    str.Position:= oldPos;\n    InternalReadCompressableBitmap(str,Img);\n    if (Str.Position < Str.Size) and (FCaption = 'Preview') then InternalReadLayers(Str,Img);\n  end;\nend;\n\nprocedure TBGRAReaderLazPaint.InternalReadLayers(str: TStream;\n  Img: TFPCustomImage);\nbegin\n  //not implemented here\nend;\n\nprocedure TBGRAReaderLazPaint.InternalReadCompressableBitmap(str: TStream;\n  Img: TFPCustomImage);\nvar\n  compressed: TBGRACompressableBitmap;\n  bmp: TBGRABitmap;\nbegin\n  compressed := TBGRACompressableBitmap.Create;\n  try\n    compressed.ReadFromStream(Str);\n    bmp := compressed.GetBitmap;\n    try\n      FCaption := compressed.Caption;\n      if (Img is TBGRACustomBitmap) then\n        TBGRACustomBitmap(Img).Assign(bmp)\n      else\n        Img.Assign(bmp);\n      if not FDimensionsAlreadyFetched then\n        begin\n          FDimensionsAlreadyFetched := true;\n          FWidth:= bmp.width;\n          FHeight:= bmp.height;\n          FNbLayers:= 1;\n        end;\n    finally\n      bmp.Free;\n    end;\n  finally\n    compressed.Free;\n  end;\nend;\n\nfunction TBGRAReaderLazPaint.InternalCheck(Str: TStream): boolean;\nvar {%H-}magic: packed array[0..7] of byte;\n    magicAsText: string;\n    oldPos: int64;\nbegin\n  oldPos := str.Position;\n  result := (str.Read({%H-}magic,sizeof(magic)) = sizeof(magic));\n  str.Position:= oldPos;\n  setlength(magicAsText, sizeof(magic));\n  move(magic[0], magicAsText[1], sizeof(magic));\n  result := (copy(magicAsText,1,8) = 'LazPaint') or\n    (((magic[0] <> 0) or (magic[1] <> 0)) and (magic[2] = 0) and (magic[3] = 0) and\n     ((magic[4] <> 0) or (magic[5] <> 0)) and (magic[6] = 0) and (magic[7] = 0));\nend;\n\nclass procedure TBGRAReaderLazPaint.LoadRLEImage(Str: TStream; Img: TFPCustomImage; out ACaption: string);\nvar channelFlags: byte;\n    w,h,NbPixels,nameLen,channelStreamSize: LongWord;\n    nextPosition: int64;\n    PIndexed,PRed,PGreen,PBlue,PAlpha,\n    PCurRed, PCurGreen, PCurBlue, PCurAlpha: PByte;\n    PDest: PBGRAPixel;\n    x,y: LongWord;\n    c: TFPColor;\n    n,NbNonTransp: LongWord;\n    a,index: Int32or64;\n    ColorTab: packed array[0..256*3-1] of byte;\nbegin\n  w := LEtoN(str.ReadDWord);\n  h := LEtoN(str.ReadDWord);\n  nameLen := LEtoN(str.ReadDWord);\n  setlength(ACaption, nameLen);\n  {$PUSH}{$RANGECHECKS OFF}\n  str.ReadBuffer(ACaption[1], nameLen);\n  {$POP}\n  channelFlags := str.ReadByte;\n  NbPixels := w*h;\n\n  PRed := nil;\n  PGreen := nil;\n  PBlue := nil;\n  PAlpha := nil;\n\n  try\n    if (channelFlags and LazpaintChannelNoAlpha) = 0 then\n      begin\n        Getmem(PAlpha, NbPixels);\n        channelStreamSize := LEtoN(str.ReadDWord);\n        nextPosition:= str.Position+channelStreamSize;\n        if (channelStreamSize > 0) and (NbPixels > 0) then DecodeLazRLE(Str, PAlpha^, NbPixels);\n        Str.Position:= nextPosition;\n\n        NbNonTransp := 0;\n        PCurAlpha := PAlpha;\n        for n := NbPixels-1 downto 0 do\n        begin\n          if PCurAlpha^ <> 0 then inc(NbNonTransp);\n          inc(PCurAlpha);\n        end;\n      end else\n        NbNonTransp:= NbPixels;\n\n    if NbNonTransp > 0 then\n    begin\n      if (channelFlags and LazpaintPalettedRGB) <> 0 then\n      begin\n        Getmem(PIndexed, NbNonTransp);\n        try\n          Getmem(PRed, NbNonTransp);\n          Getmem(PGreen, NbNonTransp);\n          Getmem(PBlue, NbNonTransp);\n          fillchar({%H-}ColorTab,sizeof(ColorTab),0);\n\n          channelStreamSize := LEtoN(str.ReadDWord);\n          nextPosition:= str.Position+channelStreamSize;\n          DecodeLazRLE(Str, colorTab[0], 256);\n          Str.Position:= nextPosition;\n\n          if (channelFlags and LazPaintChannelGreenFromRed) <> 0 then\n            move(ColorTab[0],colorTab[256], 256)\n          else\n          begin\n            channelStreamSize := LEtoN(str.ReadDWord);\n            nextPosition:= str.Position+channelStreamSize;\n            DecodeLazRLE(Str, colorTab[256], 256);\n            Str.Position:= nextPosition;\n          end;\n          if (channelFlags and LazPaintChannelBlueFromRed) <> 0 then\n            move(ColorTab[0],colorTab[512], 256)\n          else if (channelFlags and LazpaintChannelBlueFromGreen) <> 0 then\n            move(ColorTab[256],colorTab[512], 256)\n          else\n          begin\n            channelStreamSize := LEtoN(str.ReadDWord);\n            nextPosition:= str.Position+channelStreamSize;\n            DecodeLazRLE(Str, colorTab[512], 256);\n            Str.Position:= nextPosition;\n          end;\n\n          channelStreamSize := LEtoN(str.ReadDWord);\n          nextPosition:= str.Position+channelStreamSize;\n          DecodeLazRLE(Str, PIndexed^, NbNonTransp);\n          Str.Position:= nextPosition;\n\n          for n := 0 to NbNonTransp-1 do\n          begin\n            index := (PIndexed+n)^;\n            (PRed+n)^ := colorTab[index];\n            (PGreen+n)^ := colorTab[index+256];\n            (PBlue+n)^ := colorTab[index+512];\n          end;\n        finally\n          FreeMem(PIndexed);\n        end;\n      end else\n      begin\n        Getmem(PRed, NbNonTransp);\n        channelStreamSize := LEtoN(str.ReadDWord);\n        nextPosition:= str.Position+channelStreamSize;\n        DecodeLazRLE(Str, PRed^, NbNonTransp);\n        Str.Position:= nextPosition;\n\n        if (channelFlags and LazPaintChannelGreenFromRed) <> 0 then PGreen := PRed else\n        begin\n          Getmem(PGreen, NbNonTransp);\n          channelStreamSize := LEtoN(str.ReadDWord);\n          nextPosition:= str.Position+channelStreamSize;\n          DecodeLazRLE(Str, PGreen^, NbNonTransp);\n          Str.Position:= nextPosition;\n        end;\n\n        if (channelFlags and LazPaintChannelBlueFromRed) <> 0 then PBlue := PRed else\n        if (channelFlags and LazPaintChannelBlueFromGreen) <> 0 then PBlue := PGreen else\n        begin\n          Getmem(PBlue, NbNonTransp);\n          channelStreamSize := LEtoN(str.ReadDWord);\n          nextPosition:= str.Position+channelStreamSize;\n          DecodeLazRLE(Str, PBlue^, NbNonTransp);\n          Str.Position:= nextPosition;\n        end;\n      end;\n    end;\n\n    Img.SetSize(w,h);\n\n    if NbNonTransp > 0 then\n    begin\n      PCurRed := PRed;\n      PCurGreen := PGreen;\n      PCurBlue := PBlue;\n      PCurAlpha := PAlpha;\n\n      if Img is TBGRACustomBitmap then\n        begin\n          If PCurAlpha = nil then\n            begin\n              for y := 0 to h-1 do\n              begin\n                PDest := TBGRACustomBitmap(Img).ScanLine[y];\n                for x := w-1 downto 0 do\n                begin\n                  PDest^ := BGRA(PCurRed^,PCurGreen^,PCurBlue^);\n                  inc(PCurBlue);\n                  inc(PCurGreen);\n                  inc(PCurRed);\n                  inc(PDest);\n                end;\n              end;\n            end else\n          for y := 0 to h-1 do\n          begin\n            PDest := TBGRACustomBitmap(Img).ScanLine[y];\n            for x := w-1 downto 0 do\n            begin\n              if PCurAlpha^ = 0 then\n                PDest^ := BGRAPixelTransparent\n              else\n              begin\n                PDest^ := BGRA(PCurRed^,PCurGreen^,PCurBlue^,PCurAlpha^);\n                inc(PCurBlue);\n                inc(PCurGreen);\n                inc(PCurRed);\n              end;\n              inc(PDest);\n              inc(PCurAlpha);\n            end;\n          end;\n        end else\n        begin\n          a := 255;\n          for y := 0 to h-1 do\n            for x := 0 to w-1 do\n            begin\n              if PCurAlpha <> nil then\n              begin\n                a := PCurAlpha^;\n                inc(PCurAlpha);\n              end;\n              if a = 0 then\n              begin\n                img.Colors[x,y] := colTransparent;\n              end else\n              begin\n                c.red := PCurRed^ + (PCurRed^ shl 8);\n                c.green := PCurGreen^ + (PCurGreen^ shl 8);\n                c.blue := PCurBlue^ + (PCurBlue^ shl 8);\n                c.alpha := a + (a shl 8);\n                Img.Colors[x,y] := c;\n                inc(PCurBlue);\n                inc(PCurGreen);\n                inc(PCurRed);\n              end;\n            end;\n        end;\n    end else\n    begin\n      if Img is TBGRACustomBitmap then\n        TBGRACustomBitmap(Img).FillTransparent else\n      begin\n        for y := 0 to h-1 do\n          for x := 0 to w-1 do\n            img.Colors[x,y] := colTransparent;\n      end;\n    end;\n  finally\n    If Assigned(PAlpha) then FreeMem(PAlpha);\n    if Assigned(PBlue) and (PBlue <> PGreen) and (PBlue <> PRed) then FreeMem(PBlue);\n    if Assigned(PGreen) and (PGreen <> PRed) then FreeMem(PGreen);\n    If Assigned(PRed) then FreeMem(PRed);\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifLazPaint, TBGRAReaderLazPaint, True, 'LazPaint Image Format', 'lzp');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadpcx.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{*****************************************************************************}\n{\n  circlar :\n  - decompression is done using a read buffer.\n  - fix for the progress message and the InternalCheck.\n\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n\n{ Provides reader for PCX format }\nunit BGRAReadPCX;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses FPImage, BGRAClasses, SysUtils, FPReadPCX;\n\ntype\n  { Reader for PCX image format }\n\n  { TBGRAReaderPCX }\n\n  TBGRAReaderPCX = class(TFPReaderPCX)\n  protected\n    FBuffer: packed array of byte;\n    FBufferPos, FBufferSize: integer;\n    FBufferStream: TStream;\n\n    function GetBitsPerPixel: byte;\n    function GetGrayScale: Boolean;\n    function InternalCheck(Stream: TStream): boolean; override;\n    procedure ReadResolutionValues(Img: TFPCustomImage);\n    procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    procedure ReadScanLine({%H-}Row: integer; Stream: TStream); override;\n    procedure WriteScanLine(Row: integer; Img: TFPCustomImage); override;\n    procedure InitReadBuffer(AStream: TStream; ASize: integer);\n    procedure CloseReadBuffer;\n    function GetNextBufferByte: byte;\n\n  published\n    property GrayScale: Boolean read GetGrayScale;\n    property BitsPerPixel: byte read GetBitsPerPixel; // [1, 4, 8, 24]\n    property Compressed;  //: boolean r;\n  end;\n\nimplementation\n\nuses BGRABitmapTypes;\n\nprocedure TBGRAReaderPCX.ReadScanLine(Row: integer; Stream: TStream);\nvar\n  P: PByte;\n  B: UInt32or64;\n  bytes, Count: UInt32or64;\nbegin\n  if FLineSize <= 0 then exit;\n  P     := FScanLine;\n  bytes := FLineSize;\n  if Compressed then\n  begin\n    while bytes > 0 do\n    begin\n      B := GetNextBufferByte;\n      if (B < $c0) then\n        Count := 1\n      else\n      begin\n        Count := B - $c0;\n        B := GetNextBufferByte;\n      end;\n      if Count = 0 then continue else\n      if Count = 1 then\n      begin\n        P^ := B;\n        Inc(P);\n        Dec(bytes);\n      end else\n      begin\n        if Count > bytes then Count := bytes;\n        fillchar(p^, count, B);\n        Inc(p, count);\n        dec(bytes, count);\n      end;\n    end;\n  end\n  else\n    Stream.ReadBuffer(FScanLine^, FLineSize);\nend;\n\nprocedure TBGRAReaderPCX.ReadResolutionValues(Img: TFPCustomImage);\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  begin\n    ResolutionUnit:=ruPixelsPerInch;\n    ResolutionX :=Header.HRes;\n    ResolutionY :=Header.VRes;\n  end;\n  {$ELSE}\n  Img.ResolutionUnit:=ruPixelsPerInch;\n  Img.ResolutionX :=Header.HRes;\n  Img.ResolutionY :=Header.VRes;\n  {$ENDIF}\nend;\n\nprocedure TBGRAReaderPCX.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  H, Row:   integer;\n  continue: boolean;\n  emptyRect: TRect;\nbegin\n  emptyRect := rect(0,0,0,0);\n  continue    := True;\n  Progress(psStarting, 0, False, emptyRect, '', continue);\n  Stream.Read(Header, SizeOf(Header));\n  AnalyzeHeader(Img);\n  ReadResolutionValues(Img);\n  case BytesPerPixel of\n    1: CreateBWPalette(Img);\n    4: CreatePalette16(Img);\n    8: ReadPalette(stream, Img);\n    else\n      if (Header.PaletteType = 2) then\n        CreateGrayPalette(Img);\n  end;\n  H := Img.Height;\n  if Compressed then InitReadBuffer(Stream,2048);\n  for Row := 0 to H - 1 do\n  begin\n    ReadScanLine(Row, Stream);\n    WriteScanLine(Row, Img);\n    Progress(psRunning, (Row+1) div H, False, emptyRect, '', continue);\n  end;\n  if Compressed then CloseReadBuffer;\n  Progress(psEnding, 100, False, emptyRect, '', continue);\n  freemem(FScanLine);\nend;\n\nprocedure TBGRAReaderPCX.WriteScanLine(Row: integer; Img: TFPCustomImage);\nvar\n  Col:   integer;\n  C:     TFPColor;\n  P, P1, P2, P3: PByte;\n  Z2:    word;\n  color: byte;\nbegin\n  C.Alpha := AlphaOpaque;\n  P  := FScanLine;\n  Z2 := Header.BytesPerLine;\n  begin\n    case BytesPerPixel of\n      1:\n      begin\n        for Col := 0 to Img.Width - 1 do\n        begin\n          if (P[col div 8] and (128 shr (col mod 8))) <> 0 then\n            Img.Colors[Col, Row] := Img.Palette[1]\n          else\n            Img.Colors[Col, Row] := Img.Palette[0];\n        end;\n      end;\n      4:\n      begin\n        P1 := P;\n        Inc(P1, Z2);\n        P2 := P;\n        Inc(P2, Z2 * 2);\n        P3 := P;\n        Inc(P3, Z2 * 3);\n        for Col := 0 to Img.Width - 1 do\n        begin\n          color := 0;\n          if (P[col div 8] and (128 shr (col mod 8))) <> 0 then\n            Inc(color, 1);\n          if (P1[col div 8] and (128 shr (col mod 8))) <> 0 then\n            Inc(color, 1 shl 1);\n          if (P2[col div 8] and (128 shr (col mod 8))) <> 0 then\n            Inc(color, 1 shl 2);\n          if (P3[col div 8] and (128 shr (col mod 8))) <> 0 then\n            Inc(color, 1 shl 3);\n          Img.Colors[Col, Row] := Img.Palette[color];\n        end;\n      end;\n      8:\n      begin\n        for Col := 0 to Img.Width - 1 do\n        begin\n          Img.Colors[Col, Row] := Img.Palette[P[Col]];\n        end;\n      end;\n      24:\n      begin\n        for Col := 0 to Img.Width - 1 do\n        begin\n          with C do\n          begin\n            Red   := P[col] or (P[col] shl 8);\n            Blue  := P[col + Z2 * 2] or (P[col + Z2 * 2] shl 8);\n            Green := P[col + Z2] or (P[col + Z2] shl 8);\n            Alpha := alphaOpaque;\n          end;\n          Img[col, row] := C;\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAReaderPCX.InitReadBuffer(AStream: TStream; ASize: integer);\nbegin\n  setLength(FBuffer,ASize);\n  FBufferSize := AStream.Read(FBuffer[0],ASize);\n  FBufferPos := 0;\n  FBufferStream := AStream;\nend;\n\nprocedure TBGRAReaderPCX.CloseReadBuffer;\nbegin\n  FBufferStream.Position:= FBufferStream.Position-FBufferSize+FBufferPos;\nend;\n\nfunction TBGRAReaderPCX.GetNextBufferByte: byte;\nbegin\n  if FBufferPos < FBufferSize then\n  begin\n    result := FBuffer[FBufferPos];\n    inc(FBufferPos);\n  end else\n  if FBufferSize = 0 then\n    result := 0\n  else\n  begin\n    FBufferSize := FBufferStream.Read(FBuffer[0],length(FBuffer));\n    FBufferPos := 0;\n    if FBufferPos < FBufferSize then\n    begin\n      result := FBuffer[FBufferPos];\n      inc(FBufferPos);\n    end else\n      result := 0;\n  end;\nend;\n\nfunction TBGRAReaderPCX.GetBitsPerPixel: byte;\nbegin\n  Result:= Header.BitsPerPixel;\nend;\n\nfunction TBGRAReaderPCX.GetGrayScale: Boolean;\nbegin\n  Result:= (Header.PaletteType = 2);\nend;\n\nfunction TBGRAReaderPCX.InternalCheck({%H-}Stream: TStream): boolean;\nvar\n  {%H-}magic: packed array[0..3] of byte;\n  oldPos: Int64;\nbegin\n  oldPos:= stream.Position;\n  result := stream.Read({%H-}magic,SizeOf(magic)) = sizeof(magic);\n  stream.Position:= oldPos;\n  if result then\n    result := (magic[0] in[$0a,$0c,$cd]) and (magic[1] in [0,2,3,4,5]) and (magic[2] in[0,1]) and (magic[3] in[1,2,4,8])\nend;\n\ninitialization\n  BGRARegisterImageReader(ifPcx, TBGRAReaderPCX, True, 'PCX Format', 'pcx');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadpng.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{\n    This file is originally part of the Free Pascal run time library.\n    Copyright (c) 2003 by the Free Pascal development team\n\n    PNG reader implementation modified by circular.\n\n **********************************************************************\n\n  Optimisations applied:\n  - using \"const\" parameter for TColorData\n  - direct pixel access with TBGRABitmap when possible\n  - some fixes of hints and of initializations\n  - vertical shrink option with MinifyHeight, OriginalHeight and VerticalShrinkFactor (useful for thumbnails)\n }\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n{$mode objfpc}{$h+}\n\n{ PNG reader implementation }\nunit BGRAReadPng;\n\ninterface\n\nuses\n  SysUtils, BGRAClasses, FPImage, FPImgCmn, BGRAPNGComn, ZStream, BGRABitmapTypes, fgl;\n\nType\n  TSetPixelProc = procedure (x,y:integer; const CD : TColordata) of object;\n  TConvertColorProc = function (const CD:TColorData) : TFPColor of object;\n  TBGRAConvertColorProc = function (const CD:TColorData) : TBGRAPixel of object;\n  THandleScanLineProc = procedure (const y : integer; const ScanLine : PByteArray) of object;\n\n  { Frame in an animated PNG stream }\n  TPNGFrame = class\n    FrameControl: TFrameControlChunk;\n    FrameData: TMemoryStream;\n    constructor Create;\n    destructor Destroy; override;\n  end;\n  TPNGFrameList = specialize TFPGObjectList<TPNGFrame>;\n\n  { Reader for PNG image format }\n  TBGRAReaderPNG = class (TBGRAImageReader)\n    private\n      FHeader : THeaderChunk;\n      FTargetImage: TFPCustomImage;   // target image being decompressed\n      FMainImageData: TMemoryStream;  // holds compressed data until all blocks are read\n      FMainImageFrameIndex: integer;  // index of the frame containing the main image or -1\n      FFrames : TPNGFrameList;\n      FFrameCount: integer;\n      FLoopCount: integer;\n      FIndexed : boolean;             // if palette is used\n      FCountScanlines : EightLong; // Number of scanlines to process for each pass\n      FScanLineLength : EightLong; // Length of scanline for each pass\n      FCurrentPass : byte;\n      ByteWidth : byte;          // number of bytes to read for pixel information\n      BitsUsed : EightLong;      // bitmasks to use to split a byte into smaller parts\n      BitShift : byte;           // shift right to do of the bits extracted with BitsUsed for 1 element\n      CountBitsUsed : byte;      // number of bit groups (1 pixel) per byte (when bytewidth = 1)\n      StartX,StartY, DeltaX,DeltaY, StartPass,EndPass : integer;  // number and format of passes\n      FPalette : TFPPalette;\n      FSetPixel : TSetPixelProc;\n      FConvertColor : TConvertColorProc;\n      FBGRAConvertColor : TBGRAConvertColorProc;\n      FHandleScanLine: THandleScanLineProc;\n      FMinifyHeight: integer;\n      FVerticalShrinkMask: LongWord;\n      FVerticalShrinkShr: Integer;\n      FGammaCorrection: single;\n      FGammaCorrectionTable: packed array of word;\n      FGammaCorrectionTableComputed: boolean;\n      FResolutionUnit: TResolutionUnit;\n      FResolutionX, FResolutionY : single;\n      function GetFrameControl(AIndex: Integer): TFrameControlChunk;\n      function GetOriginalHeight: integer;\n      function GetOriginalWidth: integer;\n      function GetVerticalShrinkFactor: integer;\n      function ReadChunk: boolean;\n      procedure InvalidChunkLength;\n      function ColorGray1 (const CD:TColorData) : TFPColor;\n      function ColorGray2 (const CD:TColorData) : TFPColor;\n      function ColorGray4 (const CD:TColorData) : TFPColor;\n      function ColorGray8 (const CD:TColorData) : TFPColor;\n      function ColorGray16 (const CD:TColorData) : TFPColor;\n      function ColorGrayAlpha8 (const CD:TColorData) : TFPColor;\n      function ColorGrayAlpha16 (const CD:TColorData) : TFPColor;\n      function ColorColor8 (const CD:TColorData) : TFPColor;\n      function ColorColor16 (const CD:TColorData) : TFPColor;\n      function ColorColorAlpha8 (const CD:TColorData) : TFPColor;\n      function ColorColorAlpha16 (const CD:TColorData) : TFPColor;\n      function CheckGammaCorrection: boolean;\n      procedure ApplyGammaCorrection(var AColor: TFPColor);\n\n      function BGRAColorGray1 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGray2 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGray4 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGray8 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGray16 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGrayAlpha8 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorGrayAlpha16 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorColor8 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorColor16 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorColorAlpha8 (const CD:TColorData) : TBGRAPixel;\n      function BGRAColorColorAlpha16 (const CD:TColorData) : TBGRAPixel;\n    protected\n      Chunk : TChunk;\n      UseTransparent, EndOfFile : boolean;\n      TransparentDataValue : TColorData;\n      UsingBitGroup : byte;\n      DataIndex : LongWord;\n      DataBytes : TColorData;\n\n      procedure HandleChunk; virtual;\n      procedure HandlePalette; virtual;\n      procedure HandleAlpha; virtual;\n      procedure HandlePhysicalDimensions; virtual;\n      procedure HandleStdRGB; virtual;\n      procedure HandleGamma; virtual;\n      procedure HandleData; virtual;\n      procedure HandleUnknown; virtual;\n\n      procedure HandleAnimationControl; virtual;\n      procedure HandleFrameControl; virtual;\n      procedure HandleFrameData; virtual;\n\n      procedure PredefinedResolutionValues; virtual;\n      procedure AssignPalette;\n      procedure AssignResolutionValues;\n      procedure DoLoadImage(AImage: TFPCustomImage; AData: TStream; AWidth, AHeight: integer); virtual;\n\n      procedure DoDecompress(ACompressedData: TStream; AWidth, AHeight: integer); virtual;\n      function CalcColor(const ScanLine : PByteArray): TColorData;\n      procedure HandleScanLine (const y : integer; const ScanLine : PByteArray); virtual;\n      procedure BGRAHandleScanLine(const y: integer; const ScanLine: PByteArray);\n      procedure BGRAHandleScanLineTr(const y: integer; const ScanLine: PByteArray);\n      procedure SetPalettePixel (x,y:integer; const CD : TColordata);\n      procedure SetPalColPixel (x,y:integer; const CD : TColordata);\n      procedure SetColorPixel (x,y:integer; const CD : TColordata);\n      procedure SetColorTrPixel (x,y:integer; const CD : TColordata);\n      procedure SetBGRAColorPixel (x,y:integer; const CD : TColordata);\n      procedure SetBGRAColorTrPixel (x,y:integer; const CD : TColordata);\n      function DecideSetPixel : TSetPixelProc; virtual;\n      property ConvertColor : TConvertColorProc read FConvertColor;\n\n      procedure InternalRead  ({%H-}Str:TStream; Img:TFPCustomImage); override;\n      function  InternalCheck (Str:TStream) : boolean; override;\n\n      property Header : THeaderChunk read FHeader;\n      property CurrentPass : byte read FCurrentPass;\n      property CountScanlines : EightLong read FCountScanlines;\n      property ScanLineLength : EightLong read FScanLineLength;\n    public\n      constructor Create; override;\n      destructor Destroy; override;\n      function GetQuickInfo(AStream: TStream): TQuickImageInfo; override;\n      function GetBitmapDraft(AStream: TStream; {%H-}AMaxWidth, AMaxHeight: integer;\n        out AOriginalWidth,AOriginalHeight: integer): TBGRACustomBitmap; override;\n      procedure LoadFrame(AIndex: integer; AImage: TFPCustomImage);\n\n      // image format\n      property OriginalWidth: integer read GetOriginalWidth;\n      property OriginalHeight: integer read GetOriginalHeight;\n      property Indexed : boolean read FIndexed;\n      property ThePalette : TFPPalette read FPalette;\n\n      // thumbnail reduction\n      property MinifyHeight: integer read FMinifyHeight write FMinifyHeight;\n      property VerticalShrinkFactor: integer read GetVerticalShrinkFactor;\n\n      // animation\n      property FrameCount : integer read FFrameCount;\n      property LoopCount : integer read FLoopCount;\n      property FrameControl[AIndex: Integer]: TFrameControlChunk read GetFrameControl;\n      property MainImageFrameIndex: integer read FMainImageFrameIndex;\n  end;\n\nimplementation\n\nuses math;\n\nconst StartPoints : array[0..7, 0..1] of word =\n         ((0,0),(0,0),(4,0),(0,4),(2,0),(0,2),(1,0),(0,1));\n      Delta : array[0..7,0..1] of word =\n         ((1,1),(8,8),(8,8),(4,8),(4,4),(2,4),(2,2),(1,2));\n      BitsUsed1Depth : EightLong = ($80,$40,$20,$10,$08,$04,$02,$01);\n      BitsUsed2Depth : EightLong = ($C0,$30,$0C,$03,0,0,0,0);\n      BitsUsed4Depth : EightLong = ($F0,$0F,0,0,0,0,0,0);\n\n{ TPNGFrame }\n\nconstructor TPNGFrame.Create;\nbegin\n  FrameData := nil;\nend;\n\ndestructor TPNGFrame.Destroy;\nbegin\n  inherited Destroy;\n  FrameData.Free;\nend;\n\nconstructor TBGRAReaderPNG.Create;\nbegin\n  inherited;\n  chunk.acapacity := 0;\n  chunk.data := nil;\n  FMainImageData := nil;\n  FMainImageFrameIndex := -1;\n  UseTransparent := False;\n  FFrames := TPNGFrameList.Create;\n  FFrameCount := 0;\n  FLoopCount := 0;\n  FTargetImage := nil;\nend;\n\ndestructor TBGRAReaderPNG.Destroy;\nbegin\n  with chunk do\n    if acapacity > 0 then\n      freemem (data);\n  FFrames.Free;\n  FPalette.Free;\n  inherited;\nend;\n\nfunction TBGRAReaderPNG.GetQuickInfo(AStream: TStream): TQuickImageInfo;\nconst headerChunkSize = 13;\nvar\n  {%H-}FileHeader : packed array[0..7] of byte;\n  {%H-}ChunkHeader : TChunkHeader;\n  {%H-}HeaderChunk : THeaderChunk;\nbegin\n  {$PUSH}{$HINTS OFF}fillchar({%H-}result, sizeof({%H-}result), 0);{$POP}\n  if (AStream.Read({%H-}FileHeader, sizeof(FileHeader)) <> sizeof(FileHeader))\n    or not CheckSignature(FileHeader) then exit;\n  if AStream.Read({%H-}ChunkHeader, sizeof(ChunkHeader)) <> sizeof(ChunkHeader) then exit;\n  if ChunkHeader.CType <> GetChunkCode(ctIHDR) then exit;\n  if BEtoN(ChunkHeader.CLength) < headerChunkSize then exit;\n  if AStream.Read({%H-}HeaderChunk, headerChunkSize) <> headerChunkSize then exit;\n  result.width:= BEtoN(HeaderChunk.Width);\n  result.height:= BEtoN(HeaderChunk.height);\n  case HeaderChunk.ColorType and 3 of\n    0,3: {grayscale, palette}\n      if HeaderChunk.BitDepth > 8 then\n        result.colorDepth := 8\n      else\n        result.colorDepth := HeaderChunk.BitDepth;\n\n    2: {color} result.colorDepth := HeaderChunk.BitDepth*3;\n  end;\n  if (HeaderChunk.ColorType and 4) = 4 then\n    result.alphaDepth := HeaderChunk.BitDepth\n  else\n    result.alphaDepth := 0;\nend;\n\nfunction TBGRAReaderPNG.GetBitmapDraft(AStream: TStream; AMaxWidth,\n  AMaxHeight: integer; out AOriginalWidth, AOriginalHeight: integer): TBGRACustomBitmap;\nvar\n  png: TBGRAReaderPNG;\nbegin\n  png:= TBGRAReaderPNG.Create;\n  result := BGRABitmapFactory.Create;\n  try\n    png.MinifyHeight := AMaxHeight;\n    result.LoadFromStream(AStream, png);\n    AOriginalWidth:= png.OriginalWidth;\n    AOriginalHeight:= png.OriginalHeight;\n  finally\n    png.Free;\n  end;\nend;\n\nprocedure TBGRAReaderPNG.LoadFrame(AIndex: integer; AImage: TFPCustomImage);\nbegin\n  with FFrames[AIndex] do\n    DoLoadImage(AImage, FrameData, FrameControl.Width, FrameControl.Height);\nend;\n\nfunction TBGRAReaderPNG.ReadChunk: boolean;\nvar {%H-}ChunkHeader : TChunkHeader;\n    readCRC : LongWord;\n    l : LongWord;\n    readCount: integer;\nbegin\n  readCount := TheStream.Read ({%H-}ChunkHeader,sizeof(ChunkHeader));\n  if readCount <> sizeof(TChunkHeader) then\n    raise PNGImageException.Create('Unexpected end of stream when reading next chunk');\n  with chunk do\n    begin\n    // chunk header\n    with ChunkHeader do\n      begin\n      {$IFDEF ENDIAN_LITTLE}\n      alength := swap(CLength);\n      {$ELSE}\n      alength := CLength;\n      {$ENDIF}\n      ReadType := CType;\n      end;\n    aType := GetChunkType(ReadType);\n    if alength > MaxChunkLength then\n      raise PNGImageException.Create ('Length exceed maximum for ' + GetChunkCode(aType) + ' chunk');\n    if alength > acapacity then\n      begin\n      if acapacity > 0 then\n        freemem (data);\n      GetMem (data, alength);\n      acapacity := alength;\n      end;\n    l := TheStream.read (data^, alength);\n    if l <> alength then\n      raise PNGImageException.Create ('Length exceeds stream length for ' + GetChunkCode(aType) + ' chunk');\n    readCRC := 0;\n    TheStream.Read (readCRC, sizeof(ReadCRC));\n    l := CalculateChunkCRC(ReadType, data, alength);\n    {$IFDEF ENDIAN_LITTLE}\n    l := swap(l);\n    {$ENDIF}\n    if ReadCRC <> l then\n      begin\n        //if chunk is essential, then raise an error\n        if ReadType[0] = upcase(ReadType[0]) then\n          raise PNGImageException.Create ('CRC check failed for ' + GetChunkCode(aType) + ' chunk')\n        else\n          result := false;\n      end\n      else result := true;\n    end;\nend;\n\nprocedure TBGRAReaderPNG.InvalidChunkLength;\nbegin\n  raise PNGImageException.Create('Invalid length for ' + GetChunkCode(chunk.atype) + ' chunk');\nend;\n\nfunction TBGRAReaderPNG.GetVerticalShrinkFactor: integer;\nbegin\n  result := 1 shl FVerticalShrinkShr;\nend;\n\nfunction TBGRAReaderPNG.GetOriginalHeight: integer;\nbegin\n  result := Header.height;\nend;\n\nfunction TBGRAReaderPNG.GetFrameControl(AIndex: Integer): TFrameControlChunk;\nbegin\n  if not Assigned(FFrames) then\n    raise PNGImageException.Create('This PNG is not animated');\n  result := FFrames[AIndex].FrameControl;\nend;\n\nfunction TBGRAReaderPNG.GetOriginalWidth: integer;\nbegin\n  result := header.Width;\nend;\n\nprocedure TBGRAReaderPNG.HandleData;\nvar\n  frame: TPNGFrame;\nbegin\n  if not Assigned(FMainImageData) then\n  begin\n    FMainImageData := TMemoryStream.Create;\n\n    // main image can also be a frame in the animation\n    if (FFrames.Count > 0) and not Assigned(FFrames.Last.FrameData) then\n    begin\n      frame := FFrames.Last;\n      if (frame.FrameControl.Width <> Header.Width) or\n         (frame.FrameControl.Height <> Header.Height) or\n         (frame.FrameControl.OffsetX <> 0) or\n         (frame.FrameControl.OffsetY <> 0) then\n        raise PNGImageException.Create('Main frame must match the image dimensions');\n\n      frame.FrameData := FMainImageData;\n      FMainImageFrameIndex := FFrames.Count - 1;\n    end else\n      FMainImageFrameIndex := -1;\n  end;\n  FMainImageData.WriteBuffer(chunk.Data^, chunk.aLength);\nend;\n\nprocedure TBGRAReaderPNG.HandleAlpha;\n  procedure PaletteAlpha;\n    var r : integer;\n        a : word;\n        c : TFPColor;\n    begin\n      with chunk do\n        begin\n        if alength > LongWord(ThePalette.count) then\n          raise PNGImageException.create ('To much alpha values for palette');\n        for r := 0 to alength-1 do\n          begin\n          c := ThePalette[r];\n          a := data^[r];\n          c.alpha := (a shl 8) + a;\n          ThePalette[r] := c;\n          end;\n        end;\n    end;\n  procedure TransparentGray;\n    var {%H-}a : word;\n    begin\n      move (chunk.data^[0], {%H-}a, 2);\n      {$IFDEF ENDIAN_LITTLE}\n      a := swap (a);\n      {$ENDIF}\n      TransparentDataValue := a;\n      UseTransparent := True;\n    end;\n  procedure TransparentColor;\n    var d : byte;\n        {%H-}r,{%H-}g,{%H-}b : word;\n        a : TColorData;\n    begin\n      with chunk do\n        begin\n        move (data^[0], {%H-}r, 2);\n        move (data^[2], {%H-}g, 2);\n        move (data^[4], {%H-}b, 2);\n        end;\n      {$IFDEF ENDIAN_LITTLE}\n      r := swap (r);\n      g := swap (g);\n      b := swap (b);\n      {$ENDIF}\n      d := header.bitdepth;\n      a := (TColorData(b) shl d) shl d;\n      a := a + (TColorData(g) shl d) + r;\n      TransparentDataValue := a;\n      UseTransparent := True;\n    end;\nbegin\n  case header.ColorType of\n    3 : PaletteAlpha;\n    0 : TransparentGray;\n    2 : TransparentColor;\n  end;\nend;\n\nprocedure TBGRAReaderPNG.HandleStdRGB;\nbegin\n  FGammaCorrection:= 1;\n  FGammaCorrectionTableComputed:= false;\nend;\n\nprocedure TBGRAReaderPNG.HandleGamma;\nvar\n  invGammaInt: Longword;\nbegin\n  invGammaInt := BEtoN(PLongword(chunk.data)^);\n  FGammaCorrection:= invGammaInt/45455;  { 1/2.2 is default }\n  FGammaCorrectionTableComputed:= false;\nend;\n\nprocedure TBGRAReaderPNG.HandleAnimationControl;\nbegin\n  if chunk.alength < sizeof(TAnimationControlChunk) then\n    InvalidChunkLength;\n  with PAnimationControlChunk(chunk.data)^ do\n  begin\n    FFrameCount:= BEtoN(FrameCount);\n    if FFrameCount < 1 then raise PNGImageException.Create('Invalid frame count');\n    FLoopCount:= BEtoN(RepeatCount);\n    if FLoopCount < 0 then raise PNGImageException.Create('Invalid loop count');\n  end;\nend;\n\nprocedure TBGRAReaderPNG.HandleFrameControl;\nvar\n  frame: TPNGFrame;\nbegin\n  if FFrameCount = 0 then exit; // ignore if animation not specified\n\n  if FFrames.Count >= FFrameCount then\n    raise PNGImageException.Create('Actual frame count exceed defined count');\n  if Chunk.alength < sizeof(TFrameControlChunk) then\n    InvalidChunkLength;\n\n  frame := TPNGFrame.Create;\n  frame.FrameControl := PFrameControlChunk(Chunk.data)^;\n  frame.FrameControl.Width:= BEtoN(frame.FrameControl.Width);\n  frame.FrameControl.Height:= BEtoN(frame.FrameControl.Height);\n  frame.FrameControl.OffsetX:= BEtoN(frame.FrameControl.OffsetX);\n  frame.FrameControl.OffsetY:= BEtoN(frame.FrameControl.OffsetY);\n  frame.FrameControl.DelayNum:= BEtoN(frame.FrameControl.DelayNum);\n  frame.FrameControl.DelayDenom:= BEtoN(frame.FrameControl.DelayDenom);\n  if frame.FrameControl.DelayDenom = 0 then\n    frame.FrameControl.DelayDenom:= 100;\n  FFrames.Add(frame);\nend;\n\nprocedure TBGRAReaderPNG.HandleFrameData;\nvar\n  frame: TPNGFrame;\nbegin\n  if FFrameCount = 0 then exit; // ignore if animation not specified\n\n  if FFrames.Count = 0 then\n    raise PNGImageException.Create('Missing Frame Control chunk');\n  if Chunk.alength < sizeof(TFrameDataChunk) then\n    InvalidChunkLength;\n\n  frame := FFrames.Last;\n  if not Assigned(frame.FrameData) then\n    frame.FrameData := TMemoryStream.Create;\n  frame.FrameData.WriteBuffer((PByte(chunk.data) + sizeof(TFrameDataChunk))^,\n                              chunk.alength - sizeof(TFrameDataChunk));\nend;\n\nprocedure TBGRAReaderPNG.PredefinedResolutionValues;\nbegin\n  //According to Standard: If the pHYs chunk is not present, pixels are assumed to be square\n  FResolutionUnit :=ruNone;\n  FResolutionX :=1;\n  FResolutionY :=1;\nend;\n\nprocedure TBGRAReaderPNG.HandlePhysicalDimensions;\nbegin\n  if (chunk.alength<>sizeof(TPNGPhysicalDimensions))\n  then InvalidChunkLength;\n\n  if (PPNGPhysicalDimensions(chunk.data)^.Unit_Specifier = 1)\n  then FResolutionUnit :=ruPixelsPerCentimeter\n  else FResolutionUnit :=ruNone;\n\n  FResolutionX :=BEtoN(PPNGPhysicalDimensions(chunk.data)^.X_Pixels)/100;\n  FResolutionY :=BEtoN(PPNGPhysicalDimensions(chunk.data)^.Y_Pixels)/100;\nend;\n\nprocedure TBGRAReaderPNG.AssignPalette;\nbegin\n  if Assigned(FPalette) and FTargetImage.UsePalette then\n    FTargetImage.Palette.Copy(FPalette);\nend;\n\nprocedure TBGRAReaderPNG.AssignResolutionValues;\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (FTargetImage is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(FTargetImage) do\n  {$ELSE}\n  with FTargetImage do\n  {$ENDIF}\n  begin\n    ResolutionUnit := FResolutionUnit;\n    ResolutionX:= FResolutionX;\n    ResolutionY:= FResolutionY;\n  end;\nend;\n\nprocedure TBGRAReaderPNG.HandlePalette;\nvar r : LongWord;\n    c : TFPColor;\n    t : word;\nbegin\n  if header.colortype = 3 then\n    with chunk do\n    begin\n      if assigned(FPalette) then\n        raise PNGImageException.Create('Palette specified multiple times');\n      FPalette := TFPPalette.Create(0);\n      c.Alpha := AlphaOpaque;\n      if (aLength mod 3) > 0 then\n        InvalidChunkLength;\n      r := 0;\n      ThePalette.count := 0;\n      while r < alength do\n      begin\n        t := data^[r];\n        c.red := t + (t shl 8);\n        inc (r);\n        t := data^[r];\n        c.green := t + (t shl 8);\n        inc (r);\n        t := data^[r];\n        c.blue := t + (t shl 8);\n        inc (r);\n        ApplyGammaCorrection(c);\n        ThePalette.Add (c);\n      end;\n    end;\nend;\n\nprocedure TBGRAReaderPNG.SetPalettePixel (x,y:integer; const CD : TColordata);\nbegin  // both PNG and Img have palette\n  FTargetImage.Pixels[x,y] := CD;\nend;\n\nprocedure TBGRAReaderPNG.SetPalColPixel (x,y:integer; const CD : TColordata);\nbegin  // PNG with palette, Img without\n  FTargetImage.Colors[x,y] := ThePalette[CD];\nend;\n\nprocedure TBGRAReaderPNG.SetColorPixel (x,y:integer; const CD : TColordata);\nvar c : TFPColor;\nbegin  // both PNG and Img work without palette, and no transparency colordata\n  // c := ConvertColor (CD,CFmt);\n  c := ConvertColor (CD);\n  ApplyGammaCorrection(c);\n  FTargetImage.Colors[x,y] := c;\nend;\n\nprocedure TBGRAReaderPNG.SetColorTrPixel (x,y:integer; const CD : TColordata);\nvar c : TFPColor;\nbegin  // both PNG and Img work without palette, and there is a transparency colordata\n  //c := ConvertColor (CD,CFmt);\n  c := ConvertColor (CD);\n  ApplyGammaCorrection(c);\n  if TransparentDataValue = CD then\n    c.alpha := alphaTransparent;\n  FTargetImage.Colors[x,y] := c;\nend;\n\nprocedure TBGRAReaderPNG.SetBGRAColorPixel(x, y: integer; const CD: TColordata);\nvar c: TBGRAPixel;\nbegin\n  c := FBGRAConvertColor(CD);\n  if c.alpha = 0 then TBGRACustomBitmap(FTargetImage).SetPixel(x,y,BGRAPixelTransparent)\n  else TBGRACustomBitmap(FTargetImage).SetPixel(x,y,c);\nend;\n\nprocedure TBGRAReaderPNG.SetBGRAColorTrPixel(x, y: integer; const CD: TColordata);\nvar c: TBGRAPixel;\nbegin\n  if TransparentDataValue = CD then\n    TBGRACustomBitmap(FTargetImage).SetPixel(x,y,BGRAPixelTransparent) else\n  begin\n    c := FBGRAConvertColor(CD);\n    if c.alpha = 0 then TBGRACustomBitmap(FTargetImage).SetPixel(x,y,BGRAPixelTransparent)\n    else TBGRACustomBitmap(FTargetImage).SetPixel(x,y,c);\n  end;\nend;\n\nfunction TBGRAReaderPNG.DecideSetPixel : TSetPixelProc;\nbegin\n  if Indexed then\n    if FTargetImage.UsePalette then\n      result := @SetPalettePixel\n    else\n      result := @SetPalColPixel\n  else\n    if UseTransparent then\n    begin\n      if FTargetImage is TBGRACustomBitmap then\n        result := @SetBGRAColorTrPixel\n      else\n        result := @SetColorTrPixel\n    end\n    else\n    begin\n      if FTargetImage is TBGRACustomBitmap then\n        result := @SetBGRAColorPixel\n      else\n        result := @SetColorPixel\n    end;\nend;\n\nfunction TBGRAReaderPNG.CalcColor(const ScanLine : PByteArray): TColorData;\nvar cd : LongWord;\n    r : word;\n    p : pbyte;\nbegin\n  if UsingBitGroup = 0 then\n    begin\n    Databytes := 0;\n    if Header.BitDepth = 16 then\n      begin\n       p := @Databytes;\n       for r:=0 to bytewidth shr 1 - 1 do\n       begin\n        p^ := ScanLine^[Dataindex+(r shl 1)+1];\n        (p+1)^ := ScanLine^[Dataindex+(r shl 1)];\n        inc(p,2);\n       end;\n      end\n    else move (ScanLine^[DataIndex], Databytes, bytewidth);\n    {$IFDEF ENDIAN_BIG}\n    Databytes:=swap(Databytes);\n    {$ENDIF}\n    inc (DataIndex,bytewidth);\n    end;\n  if bytewidth = 1 then\n    begin\n    cd := (Databytes and BitsUsed[UsingBitGroup]);\n    result := cd shr ((CountBitsUsed-UsingBitGroup-1) * BitShift);\n    inc (UsingBitgroup);\n    if UsingBitGroup >= CountBitsUsed then\n      UsingBitGroup := 0;\n    end\n  else\n    result := Databytes;\nend;\n\nprocedure TBGRAReaderPNG.HandleScanLine (const y : integer; const ScanLine : PByteArray);\nvar x, rx : integer;\n    c : TColorData;\nbegin\n  UsingBitGroup := 0;\n  DataIndex := 0;\n  X := StartX;\n  if (UsingBitGroup = 0) and (Header.BitDepth <> 16) then\n    case ByteWidth of\n      1: if BitsUsed[0] = $ff then\n         begin\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             FSetPixel (x,y,ScanLine^[DataIndex]);\n             Inc(X, deltaX);\n             inc(DataIndex);\n           end;\n           exit;\n         end;\n      2: begin\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             {$IFDEF ENDIAN_BIG}\n             FSetPixel (x,y,swap(PWord(@ScanLine^[DataIndex])^));\n             {$ELSE}\n             FSetPixel (x,y,PWord(@ScanLine^[DataIndex])^);\n             {$ENDIF}\n             Inc(X, deltaX);\n             inc(DataIndex,2);\n           end;\n           exit;\n         end;\n      4: begin\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             {$IFDEF ENDIAN_BIG}\n             FSetPixel (x,y,swap(PLongWord(@ScanLine^[DataIndex])^));\n             {$ELSE}\n             FSetPixel (x,y,PLongWord(@ScanLine^[DataIndex])^);\n             {$ENDIF}\n             Inc(X, deltaX);\n             inc(DataIndex,4);\n           end;\n           exit;\n         end;\n      8: begin\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             {$IFDEF ENDIAN_BIG}\n             FSetPixel (x,y,swap(PQWord(@ScanLine^[DataIndex])^));\n             {$ELSE}\n             FSetPixel (x,y,PQWord(@ScanLine^[DataIndex])^);\n             {$ENDIF}\n             Inc(X, deltaX);\n             inc(DataIndex,8);\n           end;\n           exit;\n         end;\n    end;\n\n  for rx := 0 to ScanlineLength[CurrentPass]-1 do\n    begin\n    c := CalcColor(ScanLine);\n    FSetPixel (x,y,c);\n    Inc(X, deltaX);\n    end\nend;\n\nprocedure TBGRAReaderPNG.BGRAHandleScanLine (const y : integer; const ScanLine : PByteArray);\nvar rx : integer;\n    pdest: PBGRAPixel;\nbegin\n  UsingBitGroup := 0;\n  DataIndex := 0;\n  {$PUSH}{$RANGECHECKS OFF} //because PByteArray is limited to 32767\n  if (UsingBitGroup = 0) and (Header.BitDepth <> 16) then\n    case ByteWidth of\n      1: if BitsUsed[0] = $ff then\n         begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             pdest^ := FBGRAConvertColor(ScanLine^[DataIndex]);\n             if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n             Inc(pdest, deltaX);\n             inc(DataIndex);\n           end;\n           exit;\n         end;\n      2: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             pdest^ := FBGRAConvertColor(\n             {$IFDEF ENDIAN_BIG}\n             swap(PWord(@ScanLine^[DataIndex])^)\n             {$ELSE}\n             PWord(@ScanLine^[DataIndex])^\n             {$ENDIF} );\n             if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n             Inc(pdest, deltaX);\n             inc(DataIndex,2);\n           end;\n           exit;\n         end;\n      3: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             pdest^.red := ScanLine^[DataIndex];\n             pdest^.green := ScanLine^[DataIndex+1];\n             pdest^.blue := ScanLine^[DataIndex+2];\n             pdest^.alpha := 255;\n             Inc(pdest, deltaX);\n             inc(DataIndex, 3);\n           end;\n           exit;\n         end;\n      4: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             pdest^ := FBGRAConvertColor(\n             {$IFDEF ENDIAN_BIG}\n             swap(PLongWord(@ScanLine^[DataIndex])^)\n             {$ELSE}\n             PLongWord(@ScanLine^[DataIndex])^\n             {$ENDIF}  );\n             if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n             Inc(pdest, deltaX);\n             inc(DataIndex,4);\n           end;\n           exit;\n         end;\n    end;\n  {$POP}\n\n  pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n  for rx := 0 to ScanlineLength[CurrentPass]-1 do\n    begin\n    pdest^ := FBGRAConvertColor(CalcColor(ScanLine));\n    Inc(pdest, deltaX);\n    end\nend;\n\nprocedure TBGRAReaderPNG.BGRAHandleScanLineTr(const y: integer;\n  const ScanLine: PByteArray);\nvar rx : integer;\n    c : TColorData;\n    pdest: PBGRAPixel;\nbegin\n  UsingBitGroup := 0;\n  DataIndex := 0;\n  if (UsingBitGroup = 0) and (Header.BitDepth <> 16) then\n    case ByteWidth of\n      1: if BitsUsed[0] = $ff then\n         begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             c := ScanLine^[DataIndex];\n             if c = TransparentDataValue then\n               pdest^ := BGRAPixelTransparent else\n               begin\n                 pdest^ := FBGRAConvertColor(c);\n                 if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n             end;\n             Inc(pdest, deltaX);\n             inc(DataIndex);\n           end;\n           exit;\n         end;\n      2: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             c :=\n             {$IFDEF ENDIAN_BIG}\n             swap(PWord(@ScanLine^[DataIndex])^)\n             {$ELSE}\n             PWord(@ScanLine^[DataIndex])^\n             {$ENDIF} ;\n             if c = TransparentDataValue then\n               pdest^ := BGRAPixelTransparent else\n               begin\n                 pdest^ := FBGRAConvertColor(c);\n                 if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n               end;\n             Inc(pdest, deltaX);\n             inc(DataIndex,2);\n           end;\n           exit;\n         end;\n      4: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             c :=\n             {$IFDEF ENDIAN_BIG}\n             swap(PLongWord(@ScanLine^[DataIndex])^)\n             {$ELSE}\n             PLongWord(@ScanLine^[DataIndex])^\n             {$ENDIF}  ;\n             if c = TransparentDataValue then\n               pdest^ := BGRAPixelTransparent else\n               begin\n                 pdest^ := FBGRAConvertColor(c);\n                 if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n               end;\n             Inc(pdest, deltaX);\n             inc(DataIndex,4);\n           end;\n           exit;\n         end;\n      8: begin\n           pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n           for rx := 0 to ScanlineLength[CurrentPass]-1 do\n           begin\n             c :=\n             {$IFDEF ENDIAN_BIG}\n             swap(PQWord(@ScanLine^[DataIndex])^)\n             {$ELSE}\n             PQWord(@ScanLine^[DataIndex])^\n             {$ENDIF}  ;\n             if c = TransparentDataValue then\n               pdest^ := BGRAPixelTransparent else\n               begin\n                 pdest^ := FBGRAConvertColor(c);\n                 if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n               end;\n             Inc(pdest, deltaX);\n             inc(DataIndex,8);\n           end;\n           exit;\n         end;\n    end;\n\n  pdest := TBGRACustomBitmap(FTargetImage).ScanLine[y]+StartX;\n  for rx := 0 to ScanlineLength[CurrentPass]-1 do\n    begin\n    c := CalcColor(ScanLine);\n    if c = TransparentDataValue then\n      pdest^ := BGRAPixelTransparent\n      else pdest^ := FBGRAConvertColor(c);\n    Inc(pdest, deltaX);\n    end\nend;\n\nprocedure TBGRAReaderPNG.DoLoadImage(AImage: TFPCustomImage; AData: TStream; AWidth, AHeight: integer);\nvar\n  outputHeight: Integer;\nbegin\n  if not Assigned(AData) then\n    raise PNGImageException.Create('Image data not present');\n  FTargetImage := AImage;\n  outputHeight := (AHeight + FVerticalShrinkMask) shr FVerticalShrinkShr;\n  FTargetImage.SetSize(AWidth, outputHeight);\n  AssignResolutionValues;\n  AssignPalette;\n  AData.position:= 0;\n  DoDecompress(AData, AWidth, AHeight);\n  FTargetImage := nil;\nend;\n\nfunction TBGRAReaderPNG.ColorGray1(const CD: TColorData): TFPColor;\nbegin\n  if CD = 0 then\n    result := colBlack\n  else\n    result := colWhite;\nend;\n\nfunction TBGRAReaderPNG.ColorGray2(const CD: TColorData): TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and 3;\n  c := c + (c shl 2);\n  c := c + (c shl 4);\n  c := c + (c shl 8);\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorGray4(const CD: TColorData): TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and $F;\n  c := c + (c shl 4);\n  c := c + (c shl 8);\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorGray8(const CD: TColorData): TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and $FF;\n  c := c + (c shl 8);\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorGray16(const CD: TColorData): TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and $FFFF;\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorGrayAlpha8 (const CD:TColorData) : TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and $00FF;\n  c := c + (c shl 8);\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    c := CD and $FF00;\n    alpha := c + (c shr 8);\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorGrayAlpha16 (const CD:TColorData) : TFPColor;\nvar c : UInt32or64;\nbegin\n  c := CD and $FFFF;\n  with result do\n    begin\n    red := c;\n    green := c;\n    blue := c;\n    alpha := (CD shr 16) and $FFFF;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorColor8 (const CD:TColorData) : TFPColor;\nvar c : UInt32or64;\nbegin\n  with result do\n    begin\n    c := CD and $FF;\n    red := c + (c shl 8);\n    c := (CD shr 8) and $FF;\n    green := c + (c shl 8);\n    c := (CD shr 16) and $FF;\n    blue := c + (c shl 8);\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorColor16 (const CD:TColorData) : TFPColor;\nbegin\n  with result do\n    begin\n    red := CD and $FFFF;\n    green := (CD shr 16) and $FFFF;\n    blue := (CD shr 32) and $FFFF;\n    alpha := alphaOpaque;\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorColorAlpha8 (const CD:TColorData) : TFPColor;\nvar c : UInt32or64;\nbegin\n  with result do\n    begin\n    c := CD and $FF;\n    red := c + (c shl 8);\n    c := (CD shr 8) and $FF;\n    green := c + (c shl 8);\n    c := (CD shr 16) and $FF;\n    blue := c + (c shl 8);\n    c := (CD shr 24) and $FF;\n    alpha := c + (c shl 8);\n    end;\nend;\n\nfunction TBGRAReaderPNG.ColorColorAlpha16 (const CD:TColorData) : TFPColor;\nbegin\n  with result do\n    begin\n    red := CD and $FFFF;\n    green := (CD shr 16) and $FFFF;\n    blue := (CD shr 32) and $FFFF;\n    alpha := (CD shr 48) and $FFFF;\n    end;\nend;\n\nfunction TBGRAReaderPNG.CheckGammaCorrection: boolean;\nvar\n  i: Integer;\nbegin\n  if not FGammaCorrectionTableComputed then\n  begin\n    if abs(FGammaCorrection-1) < 0.01 then\n    begin\n      FGammaCorrectionTable := nil;\n    end else\n    begin\n      setlength(FGammaCorrectionTable, 65536);\n      FGammaCorrectionTable[0] := 0;\n      i := 1;\n      while i <= 65535 do\n      begin\n        if i+3 <= 65535 then\n        begin\n          FGammaCorrectionTable[i+3] := Round(Power((i+3)/65535, FGammaCorrection)*65535);\n          FGammaCorrectionTable[i] := (FGammaCorrectionTable[i-1]*3+FGammaCorrectionTable[i+3]+2) shr 2;\n          FGammaCorrectionTable[i+1] := (FGammaCorrectionTable[i-1]+FGammaCorrectionTable[i+3]+1) shr 1;\n          FGammaCorrectionTable[i+2] := (FGammaCorrectionTable[i-1]+FGammaCorrectionTable[i+3]*3+2) shr 2;\n          inc(i,4);\n        end else\n        begin\n          FGammaCorrectionTable[i] := Round(Power(i/65535, FGammaCorrection)*65535);\n          inc(i);\n        end;\n      end;\n    end;\n    FGammaCorrectionTableComputed:= true;\n  end;\n  result := FGammaCorrectionTable<>nil;\nend;\n\nprocedure TBGRAReaderPNG.ApplyGammaCorrection(var AColor: TFPColor);\nbegin\n  if FGammaCorrectionTable<>nil then\n  begin\n    AColor.red := FGammaCorrectionTable[AColor.red];\n    AColor.green := FGammaCorrectionTable[AColor.green];\n    AColor.blue := FGammaCorrectionTable[AColor.blue];\n  end;\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGray1(const CD: TColorData): TBGRAPixel;\nbegin\n  if CD = 0 then\n    result := BGRABlack\n  else\n    result := BGRAWhite;\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGray2(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := CD and 3;\n  c := c + (c shl 2);\n  c := c + (c shl 4);\n  result := BGRA(c,c,c);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGray4(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := CD and $F;\n  c := c + (c shl 4);\n  result := BGRA(c,c,c);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGray8(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := CD and $FF;\n  result := BGRA(c,c,c);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGray16(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := (CD shr 8) and $FF;\n  result := BGRA(c,c,c);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGrayAlpha8(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := CD and $00FF;\n  result := BGRA(c,c,c,(CD shr 8) and $FF);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorGrayAlpha16(const CD: TColorData): TBGRAPixel;\nvar c : UInt32or64;\nbegin\n  c := (CD shr 8) and $FF;\n  result := BGRA(c,c,c,(CD shr 24) and $FF);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorColor8(const CD: TColorData): TBGRAPixel;\nvar temp: LongWord;\nbegin\n  temp := CD;\n  result := BGRA(temp and $ff, (temp shr 8) and $ff, (temp shr 16) and $ff);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorColor16(const CD: TColorData): TBGRAPixel;\nbegin\n  result := BGRA(CD shr 8 and $FF,(CD shr 24) and $FF,(CD shr 40) and $FF);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorColorAlpha8(const CD: TColorData): TBGRAPixel;\nvar temp: LongWord;\nbegin\n  temp := CD;\n  result := BGRA(temp and $ff, (temp shr 8) and $ff, (temp shr 16) and $ff, temp shr 24);\nend;\n\nfunction TBGRAReaderPNG.BGRAColorColorAlpha16(const CD: TColorData): TBGRAPixel;\nbegin\n  result := BGRA(CD shr 8 and $FF,(CD shr 24) and $FF,(CD shr 40) and $FF, CD shr 56);\nend;\n\nprocedure TBGRAReaderPNG.DoDecompress(ACompressedData: TStream; AWidth, AHeight: integer);\nvar\n  decompressStream : TDeCompressionStream; // decompresses the data\n\n  procedure initVars;\n  var r,d : integer;\n  begin\n    with Header do\n      begin\n      if interlace=0 then\n        begin\n        StartPass := 0;\n        EndPass := 0;\n        FCountScanlines[0] := AHeight;\n        FScanLineLength[0] := AWidth;\n        end\n      else\n        begin\n        StartPass := 1;\n        EndPass := 7;\n        for r := 1 to 7 do\n          begin\n          d := AHeight div delta[r,1];\n          if (AHeight mod delta[r,1]) > startpoints[r,1] then\n            inc (d);\n          FCountScanlines[r] := d;\n          d := AWidth div delta[r,0];\n          if (AWidth mod delta[r,0]) > startpoints[r,0] then\n            inc (d);\n          FScanLineLength[r] := d;\n          end;\n        end;\n      FIndexed := (ColorType = 3);\n      case ColorType of\n        0 : case Bitdepth of\n              1  : begin\n                   FConvertColor := @ColorGray1; //CFmt := cfMono;\n                   FBGRAConvertColor := @BGRAColorGray1; //CFmt := cfMono;\n                   ByteWidth := 1;\n                   end;\n              2  : begin\n                   FConvertColor := @ColorGray2; //CFmt := cfGray2;\n                   FBGRAConvertColor := @BGRAColorGray2; //CFmt := cfGray2;\n                   ByteWidth := 1;\n                   end;\n              4  : begin\n                   FConvertColor := @ColorGray4; //CFmt := cfGray4;\n                   FBGRAConvertColor := @BGRAColorGray4; //CFmt := cfGray4;\n                   ByteWidth := 1;\n                   end;\n              8  : begin\n                   FConvertColor := @ColorGray8; //CFmt := cfGray8;\n                   FBGRAConvertColor := @BGRAColorGray8; //CFmt := cfGray8;\n                   ByteWidth := 1;\n                   end;\n              16 : begin\n                   FConvertColor := @ColorGray16; //CFmt := cfGray16;\n                   FBGRAConvertColor := @BGRAColorGray16; //CFmt := cfGray16;\n                   ByteWidth := 2;\n                   end;\n            end;\n        2 : if BitDepth = 8 then\n              begin\n              FConvertColor := @ColorColor8; //CFmt := cfBGR24\n              FBGRAConvertColor := @BGRAColorColor8; //CFmt := cfBGR24\n              ByteWidth := 3;\n              end\n            else\n              begin\n              FConvertColor := @ColorColor16; //CFmt := cfBGR48;\n              FBGRAConvertColor := @BGRAColorColor16; //CFmt := cfBGR48;\n              ByteWidth := 6;\n              end;\n        3 : if BitDepth = 16 then\n              ByteWidth := 2\n            else\n              ByteWidth := 1;\n        4 : if BitDepth = 8 then\n              begin\n              FConvertColor := @ColorGrayAlpha8; //CFmt := cfGrayA16\n              FBGRAConvertColor := @BGRAColorGrayAlpha8; //CFmt := cfGrayA16\n              ByteWidth := 2;\n              end\n            else\n              begin\n              FConvertColor := @ColorGrayAlpha16; //CFmt := cfGrayA32;\n              FBGRAConvertColor := @BGRAColorGrayAlpha16; //CFmt := cfGrayA32;\n              ByteWidth := 4;\n              end;\n        6 : if BitDepth = 8 then\n              begin\n              FConvertColor := @ColorColorAlpha8; //CFmt := cfABGR32\n              FBGRAConvertColor := @BGRAColorColorAlpha8; //CFmt := cfABGR32\n              ByteWidth := 4;\n              end\n            else\n              begin\n              FConvertColor := @ColorColorAlpha16; //CFmt := cfABGR64;\n              FBGRAConvertColor := @BGRAColorColorAlpha16; //CFmt := cfABGR64;\n              ByteWidth := 8;\n              end;\n      end;\n      //ByteWidth := BytesNeeded[CFmt];\n      case BitDepth of\n        1 : begin\n            CountBitsUsed := 8;\n            BitShift := 1;\n            BitsUsed := BitsUsed1Depth;\n            end;\n        2 : begin\n            CountBitsUsed := 4;\n            BitShift := 2;\n            BitsUsed := BitsUsed2Depth;\n            end;\n        4 : begin\n            CountBitsUsed := 2;\n            BitShift := 4;\n            BitsUsed := BitsUsed4Depth;\n            end;\n        8 : begin\n            CountBitsUsed := 1;\n            BitShift := 0;\n            BitsUsed[0] := $FF;\n            end;\n        end;\n      end;\n  end;\n\n  procedure FilterSub(p: PByte; Count: Int32or64; bw: Int32or64);\n  begin\n    inc(p,bw);\n    dec(Count,bw);\n    while Count > 0 do\n    begin\n      {$push}{$r-}\n      inc(p^, (p-bw)^);\n      {$pop}\n      inc(p);\n      dec(Count);\n    end;\n  end;\n\n  procedure FilterUp(p,pPrev: PByte; Count: UInt32or64);\n  var Count4: Int32or64;\n  begin\n    Count4 := Count shr 2;\n    dec(Count, Count4 shl 2);\n    while Count4 > 0 do\n    begin\n      {$push}{$r-}{$q-}\n      PLongWord(p)^ := (((PLongWord(pPrev)^ and $00FF00FF) + (PLongWord(p)^ and $00FF00FF)) and $00FF00FF)\n        or (((PLongWord(pPrev)^ and $FF00FF00) + (PLongWord(p)^ and $FF00FF00)) and $FF00FF00);\n      {$pop}\n      inc(p,4);\n      inc(pPrev,4);\n      dec(Count4);\n    end;\n    while Count > 0 do\n    begin\n      {$push}{$r-}\n      inc(p^, pPrev^);\n      {$pop}\n\n      inc(p);\n      inc(pPrev);\n      dec(Count);\n    end;\n  end;\n\n  procedure FilterAverage(p,pPrev: PByte; Count: UInt32or64; bw: Int32or64);\n  var CountBW: Int32or64;\n  begin\n    CountBW := bw;\n    dec(Count,CountBW);\n    while CountBW > 0 do\n    begin\n      {$push}{$r-}\n      inc(p^, pPrev^ shr 1);\n      {$pop}\n      inc(p);\n      inc(pPrev);\n      dec(CountBW);\n    end;\n\n    while Count > 0 do\n    begin\n      {$push}{$r-}\n      inc(p^, (pPrev^+(p-bw)^) shr 1);\n      {$pop}\n      inc(p);\n      inc(pPrev);\n      dec(Count);\n    end;\n  end;\n\n  procedure FilterPaeth(p,pPrev: PByte; Count: UInt32or64; bw: Int32or64);\n  var\n    rx, dl, dp, dlp : Int32or64;\n    diag,left: UInt32or64;\n  begin\n    for rx := 0 to bw-1 do\n    begin\n      {$push}{$r-}\n      inc(p^, pPrev^);\n      {$pop}\n      inc(p);\n      inc(pPrev);\n    end;\n    dec(Count,bw);\n    while Count > 0 do\n    begin\n      diag := (pPrev-bw)^;\n      left := (p - bw)^;\n      dl := pPrev^ - Int32or64(diag);\n      dp := Int32or64(left) - Int32or64(diag);\n      dlp := abs(dl+dp);\n      if dl < 0 then dl := -dl;\n      if dp < 0 then dp := -dp;\n      {$push}{$r-}\n      if dp <= dlp then\n      begin\n        if dl <= dp then\n          inc(p^, left)\n        else\n          inc(p^, pPrev^)\n      end\n      else\n      if dl <= dlp then\n        inc(p^, left)\n      else\n        inc(p^, diag);\n      {$pop}\n      inc(p);\n      inc(pPrev);\n      dec(Count);\n     end;\n  end;\n\n  procedure Decode;\n  var y, rp, ry, l : Int32or64;\n      lf : byte;\n      switchLine, currentLine, previousLine : pByteArray;\n  begin\n    FSetPixel := DecideSetPixel;\n    if not Indexed and (FTargetImage is TBGRACustomBitmap) and\n      not CheckGammaCorrection then\n    begin\n      if UseTransparent then\n        FHandleScanLine := @BGRAHandleScanLineTr\n      else\n        FHandleScanLine := @BGRAHandleScanLine;\n    end else\n      FHandleScanLine := @HandleScanLine;\n    for rp := StartPass to EndPass do\n      begin\n      FCurrentPass := rp;\n      StartX := StartPoints[rp,0];\n      StartY := StartPoints[rp,1];\n      DeltaX := Delta[rp,0];\n      DeltaY := Delta[rp,1];\n      if bytewidth = 1 then\n        begin\n        l := (ScanLineLength[rp] div CountBitsUsed);\n        if (ScanLineLength[rp] mod CountBitsUsed) > 0 then\n          inc (l);\n        end\n      else\n        l := ScanLineLength[rp]*ByteWidth;\n      if (l>0) then\n        begin\n        GetMem (previousLine, l);\n        GetMem (currentLine, l);\n        fillchar (currentLine^,l,0);\n        try\n          for ry := 0 to CountScanlines[rp]-1 do\n            begin\n            switchLine := currentLine;\n            currentLine := previousLine;\n            previousLine := switchLine;\n            Y := StartY + (ry * deltaY);\n            lf := 0;\n            decompressStream.Read (lf, sizeof(lf));\n            decompressStream.Read (currentLine^, l);\n\n            case lf of\n              1: FilterSub(PByte(currentLine), l, ByteWidth);\n              2: FilterUp(PByte(currentLine), PByte(previousLine), l);\n              3: FilterAverage(PByte(currentLine), PByte(previousLine), l, ByteWidth);\n              4: FilterPaeth(PByte(currentLine), PByte(previousLine), l, ByteWidth);\n            end;\n\n            if FVerticalShrinkShr <> 0 then\n              begin\n                if (y and FVerticalShrinkMask) = 0 then\n                  FHandleScanLine (y shr FVerticalShrinkShr, currentLine);\n              end else\n                FHandleScanLine (y, currentLine);\n            end;\n        finally\n          freemem (previousLine);\n          freemem (currentLine);\n        end;\n        end;\n      end;\n  end;\n\nbegin\n  decompressStream := TDecompressionStream.Create (ACompressedData);\n  try\n    InitVars;\n    DeCode;\n  finally\n    decompressStream.Free;\n  end;\nend;\n\nprocedure TBGRAReaderPNG.HandleChunk;\nbegin\n  if IsAnimatedChunkType(chunk.AType) then\n  case TAnimatedChunkTypes(chunk.AType) of\n    ctacTL: HandleAnimationControl;\n    ctfcTL: HandleFrameControl;\n    ctfdAT: HandleFrameData;\n  end else\n  case chunk.AType of\n    ctIHDR : raise PNGImageException.Create ('Second IHDR chunk found');\n    ctPLTE : HandlePalette;\n    ctIDAT : HandleData;\n    ctIEND : EndOfFile := True;\n    cttRNS : HandleAlpha;\n    ctsRGB : HandleStdRGB;\n    ctgAMA : HandleGamma;\n    ctpHYs : HandlePhysicalDimensions;\n    else HandleUnknown;\n  end;\nend;\n\nprocedure TBGRAReaderPNG.HandleUnknown;\nbegin\n  if (chunk.readtype[0] in ['A'..'Z']) then\n    raise PNGImageException.Create('Critical chunk '+chunk.readtype+' not recognized');\nend;\n\nprocedure TBGRAReaderPNG.InternalRead (Str:TStream; Img:TFPCustomImage);\nvar outputHeight: integer;\nbegin\n  {$ifdef FPC_Debug_Image}\n  if Str<>TheStream then\n    writeln('WARNING: TBGRAReaderPNG.InternalRead Str<>TheStream');\n  {$endif}\n  with Header do\n  begin\n    FVerticalShrinkShr := 0;\n    FVerticalShrinkMask := 0;\n    outputHeight := Height;\n    if MinifyHeight <> 0 then\n      begin\n        while (outputHeight shr 1 >= MinifyHeight) and (FVerticalShrinkShr < 8) do\n          begin\n            outputHeight:= outputHeight shr 1;\n            Inc(FVerticalShrinkShr);\n          end;\n        FVerticalShrinkMask:= (1 shl FVerticalShrinkShr)-1;\n      end;\n  end;\n\n  FreeAndNil(FPalette);\n  FFrames.Clear;\n  FMainImageFrameIndex := -1;\n  FGammaCorrection := 1;\n  FGammaCorrectionTableComputed:= false;\n  //Resolution: If the pHYs chunk is not present, pixels are assumed to be square\n  PredefinedResolutionValues;\n\n  try\n    EndOfFile := false;\n    while not EndOfFile do\n      begin\n      if ReadChunk then\n        HandleChunk;\n      end;\n\n    if Assigned(FMainImageData) then\n      DoLoadImage(TheImage, FMainImageData, Header.Width, Header.Height)\n    else\n      raise PNGImageException.Create('Missing image data');\n\n    // if not all frames are found, update the frame count accordingly\n    if FFrames.Count < FFrameCount then\n      FFrameCount := FFrames.Count;\n  finally\n    if FMainImageFrameIndex = -1 then\n      FreeAndNil(FMainImageData);\n  end;\nend;\n\nfunction  TBGRAReaderPNG.InternalCheck (Str:TStream) : boolean;\nvar {%H-}SigCheck : TPNGSignature;\n    r : integer;\nbegin\n  try\n    // Check Signature\n    if Str.Read({%H-}SigCheck, SizeOf(SigCheck)) <> SizeOf(SigCheck) then\n      raise PNGImageException.Create('This is not PNG-data');\n    if not CheckSignature(SigCheck) then\n        raise PNGImageException.Create('This is not PNG-data');\n    // Check IHDR\n    ReadChunk;\n    if chunk.aType <> ctIHDR then\n      raise PNGImageException.Create('Header chunk expected but '+chunk.ReadType+' found');\n    fillchar(FHeader, sizeof(FHeader), 0);\n    move (chunk.data^, FHeader, min(sizeof(Header), chunk.alength));\n    with header do\n      begin\n      {$IFDEF ENDIAN_LITTLE}\n      Width := swap(width);\n      height := swap (height);\n      {$ENDIF}\n      result := (width > 0) and (height > 0) and (compression = 0)\n                and (filter = 0) and (Interlace in [0,1]);\n      end;\n  except\n    result := false;\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifPng, TBGRAReaderPNG, True, 'Portable Network Graphics', 'png');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadpsd.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{\n    The original file was part of the Free Pascal run time library.\n    Copyright (c) 2008 by the Free Pascal development team\n\n    Psd reader for fpImage modified by circular.\n\n **********************************************************************\n\n    03/2014 changes by circular :\n    - added MinifyHeight,WantedHeight and OutputHeight (useful for thumbnails)\n\n    2023-06  - Massimo Magnano\n             - added Read of Image Resources Section\n             - added Resolution support\n    2023-07  - Massimo Magnano\n             - code fixes for reading palettes\n\n}\n{ Provides reader for Photoshop image format }\nunit BGRAReadPSD;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, BGRABitmapTypes, SysUtils, FPimage, FPReadPSD\n  {$IF FPC_FULLVERSION>=30203}\n   , PSDcomn\n  {$ENDIF}\n  ;\n\n{$IF FPC_FULLVERSION<30203}\nconst\n  { Image color modes  }\n  PSD_BITMAP = 0;       { Bitmap image  }\n  PSD_GRAYSCALE = 1;\t{ Greyscale image  }\n  PSD_INDEXED = 2;\t{ Indexed image  }\n  PSD_RGB = 3;\t        { RGB image  }\n  PSD_CMYK = 4;\t        { CMYK  }\n  PSD_MULTICHANNEL = 7;\t{ Multichannel image }\n  PSD_DUOTONE = 8;\t{ Duotone image }\n  PSD_LAB = 9;\t        { L*a*b image  }\n\n  { Image color spaces  }\n  PSD_CS_RGB = 0;\t{ RGB  }\n  PSD_CS_HSB = 1;\t{ Hue, Saturation, Brightness  }\n  PSD_CS_CMYK = 2;\t{ CMYK  }\n  PSD_CS_PANTONE = 3;\t{ Pantone matching system (Lab) }\n  PSD_CS_FOCOLTONE = 4;\t{ Focoltone color system (CMYK) }\n  PSD_CS_TRUMATCH = 5;\t{ Trumatch color (CMYK) }\n  PSD_CS_TOYO = 6;\t{ Toyo 88 colorfinder 1050 (Lab) }\n  PSD_CS_LAB = 7;\t{ L*a*b }\n  PSD_CS_GRAYSCALE = 8;\t{ Grey scale  }\n  PSD_CS_HKS = 10;\t{ HKS colors (CMYK) }\n  PSD_CS_DIC = 11;\t{ DIC color guide (Lab) }\n  PSD_CS_ANPA = 3000;\t{ Anpa color (Lab) }\n\n  { Image Resource IDs  }\n  PSD_ResourceSectionSignature ='8BIM';\n\n  PSD_PS2_IMAGE_INFO = $03e8;   { Obsolete - ps 2.0 image info  }\n  PSD_MAC_PRINT_INFO = $03e9;   { Optional - Mac print manager print info record  }\n  PSD_PS2_COLOR_TAB = $03eb;    { Obsolete - ps 2.0 indexed color table  }\n  PSD_RESN_INFO = $03ed;        { ResolutionInfo structure  }\n  PSD_ALPHA_NAMES = $03ee;      { Alpha channel names  }\n  PSD_DISPLAY_INFO = $03ef;     { Superceded by PSD_DISPLAY_INFO_NEW for ps CS3 and higher - DisplayInfo structure  }\n  PSD_CAPTION = $03f0;          { Optional - Caption string  }\n  PSD_BORDER_INFO = $03f1;      { Border info  }\n  PSD_BACKGROUND_COL = $03f2;   { Background color  }\n  PSD_PRINT_FLAGS = $03f3;      { Print flags  }\n  PSD_GREY_HALFTONE = $03f4;    { Greyscale and multichannel halftoning info  }\n  PSD_COLOR_HALFTONE = $03f5;   { Color halftoning info  }\n  PSD_DUOTONE_HALFTONE = $03f6; { Duotone halftoning info  }\n  PSD_GREY_XFER = $03f7;        { Greyscale and multichannel transfer functions  }\n  PSD_COLOR_XFER = $03f8;       { Color transfer functions  }\n  PSD_DUOTONE_XFER = $03f9;     { Duotone transfer functions  }\n  PSD_DUOTONE_INFO = $03fa;     { Duotone image information  }\n  PSD_EFFECTIVE_BW = $03fb;     { Effective black & white values for dot range  }\n  PSD_OBSOLETE_01 = $03fc;      { Obsolete  }\n  PSD_EPS_OPT = $03fd;          { EPS options  }\n  PSD_QUICK_MASK = $03fe;       { Quick mask info  }\n  PSD_OBSOLETE_02 = $03ff;      { Obsolete  }\n  PSD_LAYER_STATE = $0400;      { Layer state info  }\n  PSD_WORKING_PATH = $0401;     { Working path (not saved)  }\n  PSD_LAYER_GROUP = $0402;      { Layers group info  }\n  PSD_OBSOLETE_03 = $0403;      { Obsolete  }\n  PSD_IPTC_NAA_DATA = $0404;    { IPTC-NAA record (IMV4.pdf)  }\n  PSD_IMAGE_MODE_RAW = $0405;   { Image mode for raw format files  }\n  PSD_JPEG_QUAL = $0406;        { JPEG quality  }\n  PSD_GRID_GUIDE = $0408;       { Grid & guide info  }\n  PSD_THUMB_RES = $0409;        { Thumbnail resource  }\n  PSD_COPYRIGHT_FLG = $040a;    { Copyright flag  }\n  PSD_URL = $040b;              { URL string  }\n  PSD_THUMB_RES2 = $040c;       { Thumbnail resource  }\n  PSD_GLOBAL_ANGLE = $040d;     { Superceded by PSD_NEW_COLOR_SAMPLER for ps CS3 and higher - Global angle  }\n  PSD_COLOR_SAMPLER = $040e;    { Superceded by PSD_NEW_COLOR_SAMPLER for ps CS3 and higher - Color samplers resource  }\n  PSD_ICC_PROFILE = $040f;      { ICC Profile  }\n  PSD_WATERMARK = $0410;        { Watermark  }\n  PSD_ICC_UNTAGGED = $0411;     { Do not use ICC profile flag  }\n  PSD_EFFECTS_VISIBLE = $0412;  { Show / hide all effects layers  }\n  PSD_SPOT_HALFTONE = $0413;    { Spot halftone  }\n  PSD_DOC_IDS = $0414;          { Document specific IDs  }\n  PSD_ALPHA_NAMES_UNI = $0415;  { Unicode alpha names  }\n  PSD_IDX_COL_TAB_CNT = $0416;  { Indexed color table count  }\n  PSD_IDX_TRANSPARENT = $0417;  { Index of transparent color (if any)  }\n  PSD_GLOBAL_ALT = $0419;       { Global altitude  }\n  PSD_SLICES = $041a;           { Slices  }\n  PSD_WORKFLOW_URL_UNI = $041b; { Workflow URL - Unicode string  }\n  PSD_JUMP_TO_XPEP = $041c;     { Jump to XPEP (?)  }\n  PSD_ALPHA_ID = $041d;         { Alpha IDs  }\n  PSD_URL_LIST_UNI = $041e;     { URL list - unicode  }\n  PSD_VERSION_INFO = $0421;     { Version info  }\n  PSD_EXIF_DATA = $0422;        { Exif data block 1  }\n  PSD_EXIF_DATA_3 = $0423;      { Exif data block 3 (?)  }\n  PSD_XMP_DATA = $0424;         { XMP data block  }\n  PSD_CAPTION_DIGEST = $0425;   { Caption digest  }\n  PSD_PRINT_SCALE = $0426;      { Print scale  }\n  PSD_PIXEL_AR = $0428;         { Pixel aspect ratio  }\n  PSD_LAYER_COMPS = $0429;      { Layer comps  }\n  PSD_ALT_DUOTONE_COLOR = $042A;{ Alternative Duotone colors  }\n  PSD_ALT_SPOT_COLOR = $042B;   { Alternative Spot colors  }\n  PSD_LAYER_SELECT_ID = $042D;  { Layer selection ID  }\n  PSD_HDR_TONING_INFO = $042E;  { HDR toning information  }\n  PSD_PRINT_INFO_SCALE = $042F; { Print scale  }\n  PSD_LAYER_GROUP_E_ID = $0430; { Layer group(s) enabled ID  }\n  PSD_COLOR_SAMPLER_NEW = $0431;{ Color sampler resource for ps CS3 and higher PSD files  }\n  PSD_MEASURE_SCALE = $0432;    { Measurement scale  }\n  PSD_TIMELINE_INFO = $0433;    { Timeline information  }\n  PSD_SHEET_DISCLOSE = $0434;   { Sheet discloser  }\n  PSD_DISPLAY_INFO_NEW = $0435; { DisplayInfo structure for ps CS3 and higher PSD files  }\n  PSD_ONION_SKINS = $0436;      { Onion skins  }\n  PSD_COUNT_INFO = $0438;       { Count information }\n  PSD_PRINT_INFO = $043A;       { Print information added in ps CS5 }\n  PSD_PRINT_STYLE = $043B;      { Print style  }\n  PSD_MAC_NSPRINTINFO = $043C;  { Mac NSPrintInfo }\n  PSD_WIN_DEVMODE = $043D;      { Windows DEVMODE  }\n  PSD_AUTO_SAVE_PATH = $043E;   { Auto save file path  }\n  PSD_AUTO_SAVE_FORMAT = $043F; { Auto save format  }\n  PSD_PATH_INFO_FIRST = $07d0;  { First path info block  }\n  PSD_PATH_INFO_LAST = $0bb6;   { Last path info block  }\n  PSD_CLIPPING_PATH = $0bb7;    { Name of clipping path  }\n  PSD_PLUGIN_R_FIRST = $0FA0;   { First plugin resource  }\n  PSD_PLUGIN_R_LAST = $1387;    { Last plugin resource  }\n  PSD_IMAGEREADY_VARS = $1B58;  { Imageready variables  }\n  PSD_IMAGEREADY_DATA = $1B59;  { Imageready data sets  }\n  PSD_LIGHTROOM_WORK = $1F40;   { Lightroom workflow  }\n  PSD_PRINT_FLAGS_2 = $2710;    { Print flags  }\n\n  { Display resolution units  }\n  PSD_RES_INCH = 1; { Pixels / inch  }\n  PSD_RES_CM = 2;   { Pixels / cm  }\n\n  { Width and height units  }\n  PSD_UNIT_INCH = 1;  { inches  }\n  PSD_UNIT_CM = 2;    { cm  }\n  PSD_UNIT_POINT = 3; { points  (72 points =   1 inch)  }\n  PSD_UNIT_PICA = 4;  { pica    ( 6 pica   =   1 inch)  }\n  PSD_UNIT_COLUMN = 5;{ columns ( column defined in ps prefs, default = 2.5 inches)  }\n\n{$ENDIF}\n\ntype\n  { TBGRAReaderPSD }\n\n  {$IF FPC_FULLVERSION<30203}\n  { Image Resource Blocks }\n  TPSDResourceBlock = packed record\n    Types : array[0..3] of Char;   // Always \"8BIM\"\n    ID:word;                       // see previous Image Resource IDs constants\n    NameLen:Byte;                  // Pascal-format string, 2 bytes or longer\n    Name:Char;\n  end;\n  PPSDResourceBlock =^TPSDResourceBlock;\n\n  { Data block }\n  TPSDResourceBlockData = packed record\n    Size:LongWord;\n    Data:Byte;\n  end;\n  PPSDResourceBlockData =^TPSDResourceBlockData;\n  {$ENDIF}\n\n  { Reader for Photoshop image format }\n  TBGRAReaderPSD = class(TFPReaderPSD)\n  private\n    FCompressed: boolean;\n  protected\n    FScanLines      : array of PByte;\n    FInputLine     : array of record\n        StreamOffset: Int64;\n        Size: PtrInt;\n      end;\n    FOutputHeight: integer;\n    function ReadPalette(Stream: TStream): boolean;\n    procedure AnalyzeHeader;\n\n    procedure ReadResourceBlockData(Img: TFPCustomImage; blockID:Word;\n                                    blockName:ShortString; Size:LongWord; Data:Pointer);{$IF FPC_FULLVERSION<30203}virtual;{$ELSE}override;{$ENDIF}\n    procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    function ReadScanLine(Stream: TStream; AInputSize: PtrInt; AChannel: integer): boolean; overload;\n    procedure WriteScanLine(Img: TFPCustomImage; Row: integer); overload;\n    function  InternalCheck(Stream: TStream) : boolean; override;\n  public\n    MinifyHeight,WantedHeight: integer;\n    constructor Create; override;\n    property Compressed: Boolean read FCompressed;\n    property OutputHeight: integer read FOutputHeight;\n  end;\n\n{$IF FPC_FULLVERSION<30203}\nfunction PSDResolutionUnitToResolutionUnit(APSDResolutionUnit: Word): TResolutionUnit;\nfunction ResolutionUnitToPSdResolutionUnit(AResolutionUnit: TResolutionUnit): Word;\n{$ENDIF}\n\nimplementation\n\nfunction clamp(AValue, AMax: integer): integer;\nbegin\n  if AValue < 0 then result := 0 else\n  if AValue > AMax then result := AMax else\n   result := AValue;;\nend;\n\nfunction CMYKtoRGB ( C : TFPColor):  TFPColor;\nvar r,g,b: integer;\nbegin\n  r := $ffff - c.red + c.green div 10 + c.blue div 10 - c.alpha;\n  g := $ffff + c.red div 10 - c.green + c.blue div 10 - c.alpha;\n  b := $ffff + c.red div 10 + c.green div 10 - c.blue - c.alpha;\n  result.red := clamp(r, 65535);\n  result.green := clamp(g, 65535);\n  result.blue := clamp(b, 65535);\n  Result.alpha:=alphaOpaque;\nend;\n\nfunction fInv(t: single): single;\nbegin\n  if t > 6/29 then result := t*t*t else\n   result := 3*(6/29)*(6/29)*(t-4/29);\nend;\n\nfunction Csrgb(linear: single): single;\nbegin\n  if linear <= 0.0031308 then\n      result := 12.92*linear else\n  result := (1+0.055)*exp(ln(linear)*(1/2.4)) - 0.055;\nend;\n\nfunction LabToRGB(L,a,b: single):TFPColor; overload;\nvar r,g,blue: single;\nbegin\n  if a < 0 then\n    r := L + a + 0.25*b\n  else\n    r := L + 0.75*a + 0.25*b;\n  g := L - 0.25*a;\n  blue := L - b;\n  Result.red:= clamp(round((r)*65535),65535);\n  Result.green:= clamp(round((g)*65535),65535);\n  Result.blue:= clamp(round((blue)*65535),65535);\n  result.alpha := 65535;\nend;\n\nfunction LabToRGB(const Lab:TLab):TFPColor; overload;\nvar L: single;\nbegin\n  L := 1/255*Lab.L;\n  result := LabToRGB(L,(Lab.a-128)/127,(Lab.b-128)/127);\nend;\n\n{$IF FPC_FULLVERSION<30203}\nfunction PSDResolutionUnitToResolutionUnit(APSDResolutionUnit: Word): TResolutionUnit;\nbegin\n  Case APSDResolutionUnit of\n  PSD_RES_INCH: Result :=ruPixelsPerInch;\n  PSD_RES_CM: Result :=ruPixelsPerCentimeter;\n  else Result :=ruNone;\n  end;\nend;\n\nfunction ResolutionUnitToPSdResolutionUnit(AResolutionUnit: TResolutionUnit): Word;\nbegin\n  Case AResolutionUnit of\n  ruPixelsPerInch: Result :=PSD_RES_INCH;\n  ruPixelsPerCentimeter: Result :=PSD_RES_CM;\n  else Result :=0;\n  end;\nend;\n{$ENDIF}\n\n{ TBGRAReaderPSD }\n\nfunction TBGRAReaderPSD.ReadPalette(Stream: TStream): boolean;\nVar\n  BufSize:Longint;\n\n  procedure ReadPaletteFromStream;\n  var\n    i : Integer;\n    c : TFPColor;\n    {%H-}PalBuf: array[0..767] of Byte;\n    ContProgress: Boolean;\n\n  begin\n    Stream.Read({%H-}PalBuf, BufSize);\n    ContProgress:=true;\n    Progress(FPimage.psRunning, 0, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n    for i:=0 to BufSize div 3 do\n    begin\n      with c do\n      begin\n        Red:=PalBuf[I] shl 8;\n        Green:=PalBuf[I+(BufSize div 3)] shl 8;\n        Blue:=PalBuf[I+(BufSize div 3)* 2] shl 8;\n        Alpha:=alphaOpaque;\n      end;\n      FPalette.Add(c);\n    end;\n  end;\n\nbegin\n  Result:=False;\n  BufSize:=0;\n  Stream.Read(BufSize, SizeOf(BufSize));\n  BufSize:=BEtoN(BufSize);\n\n  Case FHeader.Mode of\n  PSD_BITMAP :begin  // Bitmap (monochrome)\n                FPalette := TFPPalette.Create(0);\n                CreateBWPalette;\n              end;\n  PSD_GRAYSCALE,\n  PSD_DUOTONE:begin // Gray-scale or Duotone image\n                FPalette := TFPPalette.Create(0);\n                CreateGrayPalette;\n              end;\n  PSD_INDEXED:begin // Indexed color (palette color)\n                FPalette := TFPPalette.Create(0);\n                if (BufSize=0) then exit;\n                ReadPaletteFromStream;\n              end;\n  end;\n\n  Result:=True;\nend;\n\nprocedure TBGRAReaderPSD.AnalyzeHeader;\nvar channel: integer;\nbegin\n  With FHeader do\n  begin\n    Depth:=BEtoN(Depth);\n    if (Signature <> '8BPS') then\n      Raise Exception.Create('Unknown/Unsupported PSD image type');\n    Channels:=BEtoN(Channels);\n    if Channels > 4 then\n      FBytesPerPixel:=Depth*4\n    else\n      FBytesPerPixel:=Depth*Channels;\n    Mode:=BEtoN(Mode);\n    FWidth:=BEtoN(Columns);\n    FHeight:=BEtoN(Rows);\n    FChannelCount:=Channels;\n    FLineSize:=(PtrInt(FWidth)*Depth+7) div 8;\n    setlength(FScanLines, FChannelCount);\n    for channel := 0 to FChannelCount-1 do\n      GetMem(FScanLines[channel],FLineSize);\n  end;\nend;\n\n//MaxM: in the near future we could make a list organized by ids (the blockname is always null) to hold the data of the blocks\nprocedure TBGRAReaderPSD.ReadResourceBlockData(Img: TFPCustomImage; blockID:Word;\n  blockName:ShortString; Size: LongWord; Data: Pointer);\nvar\n  PsdResolution:TResolutionInfo;\n  ResDWord: DWord;\n  VResolutionUnit:TResolutionUnit;\n\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  case blockID of\n  PSD_RESN_INFO:begin\n          if (Img is TCustomUniversalBitmap) then\n          with TCustomUniversalBitmap(Img) do\n          begin\n            PsdResolution :=TResolutionInfo(Data^);\n            //MaxM: Do NOT Remove the Casts after BEToN\n            ResolutionUnit :=PSDResolutionUnitToResolutionUnit(BEToN(Word(PsdResolution.hResUnit)));\n\n            //MaxM: Resolution always recorded in a fixed point implied decimal int32\n            //      with 16 bits before point and 16 after (cast as DWord and divide resolution by 2^16\n            ResDWord :=BEToN(DWord(PsdResolution.hRes));\n            ResolutionX :=ResDWord/65536;\n\n            //vertical resolution unit can be be different from horizontal resolution unit in PSD\n            VResolutionUnit :=PSDResolutionUnitToResolutionUnit(BEToN(Word(PsdResolution.vResUnit)));\n            //if not specified, assume it is the same as horizontal\n            if VResolutionUnit = ruNone then VResolutionUnit := ResolutionUnit;\n            ResDWord :=BEToN(DWord(PsdResolution.vRes));\n            ResolutionY :=ConvertResolution(ResDWord/65536, VResolutionUnit, ResolutionUnit);\n          end;\n        end;\n  end;\n  {$ELSE}\n  inherited ReadResourceBlockData(Img, blockID, blockName, Size, Data);\n  {$ENDIF}\nend;\n\n\nprocedure TBGRAReaderPSD.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  H,HOutput,InputLineIndex,LenOfLineIndex,channel: Integer;\n  LenOfLineFactor: PtrInt;\n  BufSize:LongWord;\n  Encoding:word;\n  ContProgress: Boolean;\n  CurOffset: int64;\n  PrevOutputRow, OutputRow, OutputRowAdd, OutputRowAcc, OutputRowAccAdd, OutputRowMod: integer;\n\n  procedure ReadResourceBlocks;\n  var\n     TotalBlockSize,\n     pPosition:LongWord;\n     blockData,\n     curBlock :PPSDResourceBlock;\n     curBlockData :PPSDResourceBlockData;\n     signature:String[4];\n     blockName:ShortString;\n     blockID:Word;\n     dataSize:LongWord;\n\n  begin\n    //MaxM: Do NOT Remove the Casts after BEToN\n    Stream.Read(TotalBlockSize, 4);\n    TotalBlockSize :=BEtoN(DWord(TotalBlockSize));\n    GetMem(blockData, TotalBlockSize);\n    try\n       Stream.Read(blockData^, TotalBlockSize);\n\n       pPosition :=0;\n       curBlock :=blockData;\n\n       repeat\n         signature :=curBlock^.Types;\n\n         if (signature=PSD_ResourceSectionSignature) then\n         begin\n           blockID :=BEtoN(Word(curBlock^.ID));\n           blockName :=curBlock^.Name;\n           setLength(blockName, curBlock^.NameLen);\n           curBlockData :=PPSDResourceBlockData(curBlock);\n\n           Inc(Pointer(curBlockData), sizeof(TPSDResourceBlock));\n\n           if (curBlock^.NameLen>0) then //MaxM: Maybe tested, in all my tests is always 0\n           begin\n             Inc(Pointer(curBlockData), curBlock^.NameLen);\n             if not(Odd(curBlock^.NameLen))\n             then Inc(Pointer(curBlockData), 1);\n           end;\n\n           dataSize :=BEtoN(DWord(curBlockData^.Size));\n           Inc(Pointer(curBlockData), 4);\n           ReadResourceBlockData(Img, blockID, blockName, dataSize, curBlockData);\n           Inc(Pointer(curBlockData), dataSize);\n         end\n         else Inc(Pointer(curBlockData), 1); //skip padding or something went wrong, search for next '8BIM'\n\n         curBlock :=PPSDResourceBlock(curBlockData);\n         pPosition :=Pointer(curBlockData)-Pointer(blockData);\n       until (pPosition >= TotalBlockSize);\n\n    finally\n      FreeMem(blockData, TotalBlockSize);\n    end;\n  end;\n\nbegin\n  FScanLines:=nil;\n  FPalette:=nil;\n  try\n    Stream.Position:=0;\n    ContProgress:=true;\n    Progress(FPimage.psStarting, 0, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n    // read header\n    Stream.Read(FHeader, SizeOf(FHeader));\n    Progress(FPimage.psRunning, 0, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n    AnalyzeHeader;\n\n    //  color palette\n    ReadPalette(Stream);\n\n    if Assigned(OnCreateImage) then\n      OnCreateImage(Self,Img);\n\n    if (MinifyHeight > 0) and (FHeight > MinifyHeight) then\n      FOutputHeight:= MinifyHeight\n    else\n      if WantedHeight > 0 then\n        FOutputHeight:= WantedHeight\n      else\n        FOutputHeight:= FHeight;\n    Img.SetSize(FWidth,FOutputHeight);\n\n    // Image Resources Section\n    ReadResourceBlocks;\n\n    //  mask\n    Stream.Read(BufSize, SizeOf(BufSize));\n    BufSize:=BEtoN(BufSize);\n    Stream.Seek(BufSize, soCurrent);\n    //  compression type\n    Encoding:=0;\n    Stream.Read(Encoding, SizeOf(Encoding));\n    FCompressed:=BEtoN(Encoding) = 1;\n    if BEtoN(Encoding)>1 then\n      Raise Exception.Create('Unknown compression type');\n    If FCompressed then\n    begin\n      SetLength(FLengthOfLine, FHeight * FChannelCount);\n      Stream.ReadBuffer(FLengthOfLine[0], 2 * Length(FLengthOfLine));\n      Progress(FPimage.psRunning, 0, False, Rect(0,0,0,0), '', ContProgress);\n      if not ContProgress then exit;\n      if not (FHeader.Mode in [0, 2]) then\n        LenOfLineFactor := FHeader.Depth div 8\n      else\n        LenOfLineFactor := 1;\n    end else\n    begin\n      FLengthOfLine := nil;\n    end;\n\n    setlength(FInputLine, FHeight * FChannelCount);\n    CurOffset := Stream.Position;\n    H := 0;\n    channel := 0;\n    InputLineIndex:= 0;\n    for LenOfLineIndex := 0 to FHeight * FChannelCount-1 do\n    begin\n      FInputLine[InputLineIndex].StreamOffset := CurOffset;\n      if FLengthOfLine <> nil then\n        FInputLine[InputLineIndex].Size := BEtoN(FLengthOfLine[LenOfLineIndex])*LenOfLineFactor else\n        FInputLine[InputLineIndex].Size := FLineSize;\n      inc(CurOffset, FInputLine[InputLineIndex].Size);\n      inc(H);\n      Inc(InputLineIndex, FChannelCount);\n      if H = FHeight then\n      begin\n        H := 0;\n        Inc(channel);\n        InputLineIndex:= channel;\n      end;\n    end;\n\n    InputLineIndex := 0;\n    PrevOutputRow := -1;\n    OutputRow := 0;\n    OutputRowAdd := FOutputHeight div FHeight;\n    OutputRowMod:= FHeight;\n    OutputRowAccAdd := FOutputHeight mod FHeight;\n    OutputRowAcc:= 0;\n\n    For H := 0 to FHeight - 1 do\n    begin\n      if OutputRow > PrevOutputRow then\n      begin\n        for channel := 0 to FChannelCount-1 do\n        begin\n            Stream.Position := FInputLine[InputLineIndex].StreamOffset;\n            ReadScanLine(Stream, FInputLine[InputLineIndex].Size, channel);\n            Inc(InputLineIndex);\n        end;\n        For HOutput:= PrevOutputRow+1 to OutputRow do WriteScanLine(Img, HOutput);\n        Progress(FPimage.psRunning, round((H+1)*99.0 / (FHeight * FChannelCount)), False, Rect(0,0,0,0), '', ContProgress);\n        if not ContProgress then exit;\n      end else inc(InputLineIndex, FChannelCount);\n\n      PrevOutputRow:= OutputRow;\n      Inc(OutputRow, OutputRowAdd);\n      Inc(OutputRowAcc, OutputRowAccAdd);\n      if OutputRowAcc> OutputRowMod then\n      begin\n        dec(OutputRowAcc, OutputRowMod);\n        inc(OutputRow);\n      end;\n    end;\n    Progress(FPimage.psRunning, 100, False, Rect(0,0,0,0), '', ContProgress);\n    if not ContProgress then exit;\n\n   {$ifdef FPC_Debug_Image}\n    WriteLn('TBGRAReaderPSD.InternalRead AAA1 ',Stream.position,' ',Stream.size);\n    {$endif}\n  finally\n    FreeAndNil(FPalette);\n    for channel := 0 to FChannelCount-1 do\n      ReAllocMem(FScanLines[channel],0);\n  end;\n  Progress(FPimage.psEnding, 100, false, Rect(0,0,FWidth,FHeight), '', ContProgress);\n\nend;\n\nfunction TBGRAReaderPSD.ReadScanLine(Stream: TStream; AInputSize: PtrInt;\n  AChannel: integer): boolean;\nVar\n  P : PByte;\n  B : Byte;\n  I, left : PtrInt;\n  N : Shortint;\n  Count:integer;\n  buf, PBuf: PByte;\nbegin\n  Result:=false;\n  If Not Compressed then\n    Stream.ReadBuffer(FScanLines[AChannel]^,FLineSize)\n  else\n    begin\n      getmem(buf, AInputSize);\n      if stream.Read(buf^,AInputSize) <> AInputSize then\n      begin\n        freemem(buf);\n        result := false;\n        exit;\n      end;\n      P:=FScanLines[AChannel];\n      left := FLineSize;\n      i:=AInputSize;\n      PBuf := buf;\n      repeat\n        Count:=0;\n        N:= PShortInt(PBuf)^;\n        inc(PBuf);\n        dec(i);\n        If N = -128 then\n        else\n        if N < 0 then\n        begin\n           Count:=-N+1;\n           if Count > left then Count := left;\n           dec(left,Count);\n           B:= PBuf^;\n           Inc(PBuf);\n           dec(i);\n           fillchar(p^,count,B);\n           inc(p,count);\n        end\n        else\n        begin\n           Count:=N+1;\n           if Count > left then Count := left;\n           dec(left,Count);\n           Move(PBuf^, P^, Count);\n           Inc(PBuf, Count);\n           inc(p, count);\n           dec(i, count);\n        end;\n      until (i <= 0) or (left <= 0);\n      freemem(buf);\n    end;\n  Result:=true;\nend;\n\nfunction Value32To16(p: PLongWord; gamma: single): Word;\nvar v: single;\nbegin\n  v := (BEtoN(P^) - 1024000000)/40960000;\n  if v <= 0 then result := 0 else\n    if v >= 1 then result := 65535 else\n      result := round(exp(ln(v)*gamma)*65535);\nend;\n\nprocedure TBGRAReaderPSD.WriteScanLine(Img: TFPCustomImage; Row: integer);\nVar\n  Col : Integer;\n  C   : TFPColor;\n  P, P1, P2, P3   : PByte;\n  Lab : TLab;\nbegin\n  C.Alpha:=AlphaOpaque;\n  P:=FScanLines[0];\n  begin\n    case FBytesPerPixel of\n      1 : begin\n             for Col:=0 to Img.Width-1 do\n               if (P[col div 8] and (128 shr (col mod 8))) <> 0 then\n                 Img.Colors[Col,Row]:=ThePalette[0]\n  \t       else\n                 Img.Colors[Col,Row]:=ThePalette[1];\n           end;\n      8 : begin\n             for Col:=0 to Img.Width-1 do\n             begin\n               Img.Colors[Col,Row]:=ThePalette[P[0]];\n               inc(p);\n             end;\n          end;\n      16 : if (FHeader.Mode = 1) or (FHeader.Mode = 8) then\n           begin\n             if FChannelCount = 1 then\n               for Col:=0 to Img.Width-1 do\n               begin\n                 C.Red:=BEtoN(PWord(P)^);\n                 C.green:=C.Red;\n                 C.blue:=C.Red;\n                 C.alpha:=65535;\n                 Img[col, row] := C;\n                 Inc(P,2);\n               end else\n             if FChannelCount = 2 then\n             begin\n               P1:=FScanLines[1];\n               for Col:=0 to Img.Width-1 do\n               begin\n                 C.Red:=P^ shl 8 + P^;\n                 C.green:=C.Red;\n                 C.blue:=C.Red;\n                 C.alpha:=p1^ shl 8 + P1^;\n                 Img[col, row] := C;\n                 Inc(P);\n                 Inc(P1);\n               end;\n             end;\n           end else\n           begin\n             for Col:=0 to Img.Width-1 do\n             begin\n               Img.Colors[Col,Row]:=ThePalette[BEtoN(PWord(P)^)];\n               inc(p,2);\n             end;\n          end;\n      24 : if FChannelCount>=3 then\n           begin\n           P1:=FScanLines[1];\n           P2:=FScanLines[2];\n           for Col:=0 to Img.Width-1 do\n           begin\n             if (FHeader.Mode =9) then\n             begin\n               Lab.L:=P[0];\n               Lab.a:=P1[0];\n               Lab.b:=P2[0];\n               C:=LabToRGB(Lab);\n             end\n             else\n              With C do\n              begin\n                Red:=P[0] or (P[0] shl 8);\n                green:=P1[0] or (P1[0] shl 8);\n                blue:=P2[0] or (P2[0] shl 8);\n                alpha:=alphaOpaque;\n              end;\n              Inc(P);\n              Inc(P1);\n              Inc(P2);\n              Img[col, row] := C;\n           end;\n          end;\n      32 : if (FHeader.Mode = 1) or (FHeader.Mode = 8) then\n           begin\n             if FChannelCount = 1 then\n               for Col:=0 to Img.Width-1 do\n               begin\n                 C.Red:=Value32To16(PLongWord(P),1.3);\n                 C.green:=C.Red;\n                 C.blue:=C.Red;\n                 C.alpha:=65535;\n                 Img[col, row] := C;\n                 Inc(P,4);\n               end else\n             if FChannelCount = 2 then\n             begin\n               P1:=FScanLines[1];\n               for Col:=0 to Img.Width-1 do\n               begin\n                 C.Red:=BEtoN(PWord(P)^);\n                 C.green:=C.Red;\n                 C.blue:=C.Red;\n                 C.alpha:=BEtoN(PWord(p1)^);\n                 Img[col, row] := C;\n                 Inc(P,2);\n                 Inc(P1,2);\n               end;\n             end;\n           end else\n           if FChannelCount >= 4 then\n           begin\n           P1:=FScanLines[1];\n           P2:=FScanLines[2];\n           P3:=FScanLines[3];\n           for Col:=0 to Img.Width-1 do\n           begin\n             if (FHeader.Mode =4) then\n             begin\n                 P^ := 255 - P^;\n                 P1^ := 255 - P1^;\n                 P2^ := 255 - P2^;\n                 P3^ := 255 - P3^;\n             end;\n             C.Red:=P[0] or (P[0] shl 8);\n             C.green:=P1[0] or (P1[0] shl 8);\n             C.blue:=P2[0] or (P2[0] shl 8);\n             C.alpha:=P3[0] or (P3[0] shl 8);\n             if (FHeader.Mode =4) then  C:=CMYKtoRGB(C); // CMYK to RGB\n             Img[col, row] := C;\n             Inc(P);\n             Inc(P1);\n             Inc(P2);\n             Inc(P3);\n           end;\n          end;\n      48 :if FChannelCount = 3 then\n          begin\n           P1:=FScanLines[1];\n           P2:=FScanLines[2];\n           C.alpha:=alphaOpaque;\n           for Col:=0 to Img.Width-1 do\n           begin\n              if (FHeader.Mode =9) then\n                C := LabToRGB(BEtoN(PWord(P)^)/65535, (BEtoN(PWord(P1)^)-32768)/32767, (BEtoN(PWord(P2)^)-32768)/32767)\n              else\n              With C do\n              begin\n                Red:=BEtoN(PWord(P)^);\n                green:=BEtoN(PWord(P1)^);\n                blue:=BEtoN(PWord(P2)^);\n              end;\n              Inc(P,2);\n              Inc(P1,2);\n              Inc(P2,2);\n              Img[col, row] := C;\n           end;\n          end;\n      64 : if FChannelCount = 4 then\n           begin\n           P1:=FScanLines[1];\n           P2:=FScanLines[2];\n           P3:=FScanLines[3];\n           for Col:=0 to Img.Width-1 do\n           begin\n             C.Red:=BEtoN(PWord(P)^);\n             C.green:=BEtoN(PWord(P1)^);\n             C.blue:=BEtoN(PWord(P2)^);\n             C.alpha:=BEtoN(PWord(P3)^);\n             if (FHeader.Mode =4) then\n             begin\n                 C.red:=$ffff-C.red;\n                 C.green:=$ffff-C.green;\n                 C.blue:=$ffff-C.blue;\n                 C.alpha:=$ffff-C.alpha;\n             end;\n             if (FHeader.Mode =4) then  C:=CMYKtoRGB(C); // CMYK to RGB\n             Img[col, row] := C;\n             Inc(P,2);\n             Inc(P1,2);\n             Inc(P2,2);\n             Inc(P3,2);\n           end;\n          end;\n      96 :if FChannelCount = 3 then\n          begin\n           P1:=FScanLines[1];\n           P2:=FScanLines[2];\n           C.alpha:=alphaOpaque;\n           for Col:=0 to Img.Width-1 do\n           begin\n              With C do\n              begin\n                Red:=Value32To16(PLongWord(P),2.7);\n                green:=Value32To16(PLongWord(P1),2.7);\n                blue:=Value32To16(PLongWord(P2),2.7);\n              end;\n              Inc(P,4);\n              Inc(P1,4);\n              Inc(P2,4);\n              Img[col, row] := C;\n           end;\n          end;\n    end;\n  end;\nend;\n\nfunction TBGRAReaderPSD.InternalCheck(Stream: TStream): boolean;\nvar\n  OldPos: Int64;\nbegin\n  try\n    OldPos:=Stream.Position;\n    Stream.Read(FHeader,SizeOf(FHeader));\n    Result:=(FHeader.Signature = '8BPS');\n    Stream.Position:=OldPos;\n  except\n    Result:=False;\n  end;\nend;\n\nconstructor TBGRAReaderPSD.Create;\nbegin\n  inherited Create;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifPsd, TBGRAReaderPSD, True, 'Photoshop Format', 'psd;pdd');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadtga.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n    The original file is part of the Free Pascal's \"Free Components Library\".\n    Copyright (c) 2003 by Mazen NEIFER of the Free Pascal development team\n\n    Targa reader implementation modified by circular.\n}\n{*****************************************************************************}\n\n{ - 22/11/2007 Modified by Laurent Jacques for support all format }\n\n{$mode objfpc}\n{$h+}\n\n{ Targa reader implementation }\nunit BGRAReadTGA;\n\ninterface\n\nuses FPReadTGA, FPimage, BGRAClasses;\n\ntype\n  { Reader for TGA image format }\n\n  { TBGRAReaderTarga }\n\n  TBGRAReaderTarga = class (TFPReaderTarga)\n  private\n    function GetBitsPerPixel: byte;\n    function GetCompressed: boolean;\n    function GetGrayScale: Boolean;\n\n  protected\n    FBuffer: packed array of byte;\n    FBufferPos, FBufferSize: integer;\n    FBufferStream: TStream;\n\n    procedure ReadScanLine({%H-}Row: Integer; Stream: TStream); override;\n    procedure WriteScanLine(Row : Integer; Img : TFPCustomImage); override;\n    procedure InitReadBuffer(AStream: TStream; ASize: integer);\n    procedure CloseReadBuffer;\n    function GetNextBufferByte: byte;\n\n  published\n    property GrayScale: Boolean read GetGrayScale;\n    property BitsPerPixel: byte read GetBitsPerPixel; // [8, 16, 24, 32]\n    property Compressed: boolean read GetCompressed;\n  end;\n\nImplementation\n\nuses BGRABitmapTypes, targacmn;\n\ntype\n  //Workaround to access the inherited Compressed variable with the same name of property\n  TFPReaderTarga_Access = class(TFPReaderTarga)\n  end;\n\nfunction TBGRAReaderTarga.GetBitsPerPixel: byte;\nbegin\n  Result:= BytesPerPixel; //MaxM: I think there is an error in var name 32byte for pixel it's not realistic\nend;\n\nfunction TBGRAReaderTarga.GetCompressed: boolean;\nbegin\n  Result:= TFPReaderTarga_Access(Self).Compressed;\nend;\n\nfunction TBGRAReaderTarga.GetGrayScale: Boolean;\nbegin\n  Result:= (Header.ImgType = TARGA_GRAY_IMAGE);\nend;\n\nprocedure TBGRAReaderTarga.ReadScanLine(Row: Integer; Stream: TStream);\nVar\n  P : PByte;\n  B : Byte;\n  I,J : Integer;\n  PixelSizeInBytesMinus1: integer;\n\nbegin\n  If Not Compressed then\n    Stream.ReadBuffer(FScanLine^,FLineSize)\n  else\n  begin\n    InitReadBuffer(Stream, 2048);\n    P:=FScanLine;\n    PixelSizeInBytesMinus1 := (BytesPerPixel shr 3)-1;\n    For I:=0 to ToWord(Header.Width)-1 do\n      begin\n      If (FPixelCount>0) then\n        Dec(FPixelCount)\n      else\n      begin\n        Dec(FBlockCount);\n        If (FBlockCount<0) then\n          begin\n          B := GetNextBufferByte;\n          If (B and $80)<>0 then\n            begin\n            FPixelCount:=B and $7F;\n            FblockCount:=0;\n            end\n          else\n            FBlockCount:=B and $7F\n          end;\n        For J:=0 to PixelSizeInBytesMinus1 do\n           FLastPixel[j] := GetNextBufferByte;\n      end;\n      For J:=0 to PixelSizeInBytesMinus1 do\n        begin\n        P[0]:=FLastPixel[j];\n        Inc(P);\n        end;\n      end;\n    CloseReadBuffer;\n  end;\nend;\n\nprocedure TBGRAReaderTarga.WriteScanLine(Row: Integer; Img: TFPCustomImage);\nVar\n  Col : Integer;\n  Value   : UInt32or64;\n  P   : PByte;\n  PDest: PBGRAPixel;\n\nbegin\n  P:=FScanLine;\n  PDest := TBGRACustomBitmap(img).ScanLine[Row];\n  Case Header.ImgType of\n    TARGA_INDEXED_IMAGE\n      : for Col:=Img.width-1 downto 0 do\n        begin\n         PDest^ := FPColorToBGRA(FPalette[P^]);\n         Inc(PDest);\n         Inc(P);\n        end;\n    TARGA_TRUECOLOR_IMAGE\n      : if (BytesPerPixel = 32) and (AlphaBits = 8) then\n           Move(P^,PDest^,Img.Width*sizeof(TBGRAPixel)) else\n        if (BytesPerPixel = 24) then\n        begin\n          for Col:=Img.Width-1 downto 0 do\n          begin\n            PDest^ := BGRA((P+2)^,(P+1)^,P^);\n            inc(Pdest);\n            Inc(p,3);\n          end;\n        end\n        else if (BytesPerPixel in[8,16]) then\n        for Col:= Img.Width-1 to 0 do\n          begin\n            Value:=P[0];\n            inc(P);\n            Value:=value or (P[0] shl 8);\n            PDest^ := BGRA(((value)shr 10) shl 3,((value)shr 5) shl 3,((value)) shl 3);\n            Inc(PDest);\n            Inc(P);\n          end;\n    TARGA_GRAY_IMAGE\n      :  case BytesPerPixel of\n           8 : for Col:=Img.width-1 downto 0 do\n              begin\n               PDest^ := FPColorToBGRA(FPalette[P^]);\n               Inc(PDest);\n               Inc(P);\n              end;\n          16 : for Col:=0 to Img.width-1 do\n               begin\n                 With PDest^ do\n                 begin\n                   blue:=FPalette[P^].blue shr 8;\n                   green:=FPalette[P^].green shr 8;\n                   red:=FPalette[P^].red shr 8;\n                   Inc(P);\n                   if alphaBits = 8 then alpha := P^ else\n                     alpha:=255;\n                   Inc(P);\n                 end;\n                 inc(PDest);\n               end;\n         end;\n  end;\nend;\n\nprocedure TBGRAReaderTarga.InitReadBuffer(AStream: TStream; ASize: integer);\nbegin\n  setLength(FBuffer,ASize);\n  FBufferSize := AStream.Read(FBuffer[0],ASize);\n  FBufferPos := 0;\n  FBufferStream := AStream;\nend;\n\nprocedure TBGRAReaderTarga.CloseReadBuffer;\nbegin\n  FBufferStream.Position:= FBufferStream.Position-FBufferSize+FBufferPos;\nend;\n\nfunction TBGRAReaderTarga.GetNextBufferByte: byte;\nbegin\n  if FBufferPos < FBufferSize then\n  begin\n    result := FBuffer[FBufferPos];\n    inc(FBufferPos);\n  end else\n  if FBufferSize = 0 then\n    result := 0\n  else\n  begin\n    FBufferSize := FBufferStream.Read(FBuffer[0],length(FBuffer));\n    FBufferPos := 0;\n    if FBufferPos < FBufferSize then\n    begin\n      result := FBuffer[FBufferPos];\n      inc(FBufferPos);\n    end else\n      result := 0;\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifTarga, TBGRAReaderTarga, True, 'TARGA Format', 'tga');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrareadtiff.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{\n    The original file is part of the Free Pascal run time library.\n    Copyright (c) 2012-2013 by the Free Pascal development team\n\n    Tiff reader for fpImage modified by circular.\n\n **********************************************************************\n\n Working:\n   Sample bitdepth: 1, 4, 8, 12, 16\n   Color format: black and white, grayscale, RGB, colormap, L*a*b*\n   Alpha channel: none, premultiplied, separated\n   Compression: packbits, LZW, deflate\n   Endian-ness: little endian and big endian\n   Orientation: any corner can be (0,0) and x/y can be flipped\n   Planar configuration: 1 (channels together)\n   Fill order: any (for 1 bit per sample images)\n   Skipping thumbnail by reading biggest image\n   Multiple images\n   Strips and tiles\n\n ToDo:\n   Compression: FAX, Jpeg...\n   Color format: ITU L*a*b*\n   PlanarConfiguration: 2 (one chunk for each channel)\n   XMP tag 700\n   ICC profile tag 34675\n\n Not to do:\n   Separate mask (deprecated)\n\n}\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n       07  - added BigTif (only from fpc 3.3.1),\n             solved Read 16 bit data with predictor fails\n             conditional compilation for 3.3.1 (now the class is derived from TFPReaderTiff)\n}\n{*****************************************************************************}\n\n{ Tiff reader implementation }\nunit BGRAReadTiff;\n\n{$mode objfpc}{$H+}\n\n{$inline on}\n\n{$i bgrabitmap.inc}\n\n{$IFNDEF BGRABITMAP_EXTENDED_COLORSPACE}{$STOP This unit need extended colorspaces}{$ENDIF}\n\ninterface\n\nuses\n  Math, BGRAClasses, SysUtils, ctypes, zinflate, zbase, FPimage, FPTiffCmn,\n  BGRABitmapTypes {$IF FPC_FULLVERSION>=30301}, FPReadTiff{$ENDIF};\n\ntype\n  {$IF FPC_FULLVERSION<30301}\n  TBGRAReaderTiff = class;\n\n  TTiffCreateCompatibleImgEvent = procedure(Sender: TBGRAReaderTiff;\n                                            ImgFileDir: TTiffIFD) of object;\n\n  TTiffCheckIFDOrder = (\n    tcioSmart,\n    tcioAlways,\n    tcioNever\n    );\n\n  { Reader for TIFF format }\n  TBGRAReaderTiff = class(TFPCustomImageReader)\n  private\n    FCheckIFDOrder: TTiffCheckIFDOrder;\n    FFirstIFDStart: LongWord;\n    FOnCreateImage: TTiffCreateCompatibleImgEvent;\n    {$ifdef FPC_Debug_Image}\n    FDebug: boolean;\n    {$endif}\n    FIFDList: TFPList;\n    FReverseEndian: Boolean;\n    fStartPos: int64;\n    s: TStream;\n    function GetImages(Index: integer): TTiffIFD;\n    procedure TiffError(Msg: string);\n    procedure SetStreamPos(p: LongWord);\n    function ReadTiffHeader(QuickTest: boolean; out IFDStart: LongWord): boolean; // returns IFD: offset to first IFD\n    function ReadIFD(Start: LongWord; IFD: TTiffIFD): LongWord;// Image File Directory\n    procedure ReadDirectoryEntry(var EntryTag: Word; IFD: TTiffIFD);\n    function ReadEntryUnsigned: LongWord;\n    function ReadEntrySigned: Cint32;\n    function ReadEntryRational: TTiffRational;\n    function ReadEntryString: string;\n    function ReadByte: Byte;\n    function ReadWord: Word;\n    function ReadDWord: LongWord;\n    procedure ReadValues(StreamPos: LongWord;\n                         out EntryType: word; out EntryCount: LongWord;\n                         out Buffer: Pointer; out ByteCount: PtrUInt);\n    procedure ReadShortOrLongValues(StreamPos: LongWord;\n                                    out Buffer: PLongWord; out Count: LongWord);\n    procedure ReadShortValues(StreamPos: LongWord;\n                              out Buffer: PWord; out Count: LongWord);\n    procedure ReadImageSampleProperties(IFD: TTiffIFD; out AlphaChannel: integer; out PremultipliedAlpha: boolean;\n      out SampleCnt: LongWord; out SampleBits: PWord; out SampleBitsPerPixel: LongWord;\n      out PaletteCnt: LongWord; out PaletteValues: PWord);\n    procedure ReadImgValue(BitCount: Word;\n      var Run: Pointer; var BitPos: Byte; FillOrder: LongWord;\n      Predictor: word; var LastValue: word; out Value: Word);\n    function FixEndian(w: Word): Word; inline;\n    function FixEndian(d: LongWord): LongWord; inline;\n    procedure SetFPImgExtras(CurImg: TFPCustomImage; IFD: TTiffIFD);\n    procedure DecodePackBits(var Buffer: Pointer; var Count: PtrInt);\n    procedure DecodeLZW(var Buffer: Pointer; var Count: PtrInt);\n    procedure DecodeDeflate(var Buffer: Pointer; var Count: PtrInt; ExpectedCount: PtrInt);\n  protected\n    procedure InternalRead(Str: TStream; AnImage: TFPCustomImage); override;\n    function InternalCheck(Str: TStream): boolean; override;\n    procedure DoCreateImage(ImgFileDir: TTiffIFD); virtual;\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n    procedure Clear;\n\n    procedure LoadFromStream(aStream: TStream; AutoClear: boolean = true); //load all images (you need to handle OnCreateImage event and assign ImgFileDir.Img)\n    {$ifdef FPC_Debug_Image}\n    property Debug: boolean read FDebug write FDebug;\n    {$endif}\n    property OnCreateImage: TTiffCreateCompatibleImgEvent read FOnCreateImage\n                                                          write FOnCreateImage;\n    property CheckIFDOrder: TTiffCheckIFDOrder read FCheckIFDOrder write FCheckIFDOrder; //check order of IFD entries or not\n    function FirstImg: TTiffIFD;\n    function GetBiggestImage: TTiffIFD;\n    function ImageCount: integer;\n    property Images[Index: integer]: TTiffIFD read GetImages; default;\n\n  public //advanced\n    ImageList: TFPList; // list of TTiffIFD\n    procedure LoadHeaderFromStream(aStream: TStream);\n    procedure LoadIFDsFromStream;                  // call LoadHeaderFromStream before\n    procedure LoadImageFromStream(Index: integer); // call LoadIFDsFromStream before\n    procedure LoadImageFromStream(IFD: TTiffIFD);  // call LoadIFDsFromStream before\n    procedure ReleaseStream;\n    property StartPos: int64 read fStartPos;\n    property TheStream: TStream read s;\n    property FirstIFDStart: LongWord read FFirstIFDStart;\n  end;\n\nprocedure DecompressPackBits(Buffer: Pointer; Count: PtrInt;\n  out NewBuffer: Pointer; out NewCount: PtrInt);\nprocedure DecompressLZW(Buffer: Pointer; Count: PtrInt;\n  out NewBuffer: PByte; out NewCount: PtrInt);\nfunction DecompressDeflate(Compressed: PByte; CompressedCount: LongWord;\n  out Decompressed: PByte; var DecompressedCount: LongWord;\n  ErrorMsg: PAnsiString = nil): boolean;\n\nfunction TifResolutionUnitToResolutionUnit(ATifResolutionUnit: DWord): TResolutionUnit;\nfunction ResolutionUnitToTifResolutionUnit(AResolutionUnit: TResolutionUnit): DWord;\n{$ELSE}\n  { Reader for TIFF format }\n  TBGRAReaderTiff = class(TFPReaderTiff)\n  public\n     procedure LoadImageFromStream(IFD: TTiffIFD); override;\n  end;\n\n{$ENDIF}\n\nimplementation\n\n{$IF FPC_FULLVERSION<30301}\nfunction CMYKToFPColor(C,M,Y,K: Word): TFPColor;\nvar R, G, B : LongWord;\nbegin\n   R := $ffff - ((LongWord(C)*($ffff-LongWord(K))) shr 16) - LongWord(K) ;\n   G := $ffff - ((LongWord(M)*($ffff-LongWord(K))) shr 16) - LongWord(K) ;\n   B := $ffff - ((LongWord(Y)*($ffff-LongWord(K))) shr 16) - LongWord(K) ;\n   Result := FPColor(R and $ffff,G and $ffff,B and $ffff);\nend ;\n\nprocedure TBGRAReaderTiff.TiffError(Msg: string);\nbegin\n  Msg:=Msg+' at position '+IntToStr(s.Position);\n  if fStartPos>0 then\n    Msg:=Msg+' (TiffPosition='+IntToStr(fStartPos)+')';\n  raise Exception.Create(Msg);\nend;\n\nfunction TBGRAReaderTiff.GetImages(Index: integer): TTiffIFD;\nbegin\n  Result:=TTiffIFD(ImageList[Index]);\nend;\n\nprocedure TBGRAReaderTiff.ReadImageSampleProperties(IFD: TTiffIFD;\n  out AlphaChannel: integer; out PremultipliedAlpha: boolean;\n  out SampleCnt: LongWord; out SampleBits: PWord; out SampleBitsPerPixel: LongWord;\n  out PaletteCnt: LongWord; out PaletteValues: PWord);\nvar\n  BytesPerPixel: Word;\n  i: Integer;\n  ExtraSampleCnt, RegularSampleCnt: LongWord;\n  ExtraSamples: PWord;\nbegin\n  ReadShortValues(IFD.BitsPerSample, SampleBits, SampleCnt);\n  if SampleCnt<>IFD.SamplesPerPixel then\n  begin\n    ReAllocMem(SampleBits, 0);\n    TiffError('Samples='+IntToStr(SampleCnt)+' <> SamplesPerPixel='+IntToStr(IFD\n      .SamplesPerPixel));\n  end;\n\n  BytesPerPixel:=0;\n  SampleBitsPerPixel:=0;\n  PaletteCnt:= 0;\n  PaletteValues:= nil;\n\n  AlphaChannel:= -1;\n  PremultipliedAlpha:= false;\n  IFD.AlphaBits:= 0;\n\n  //looking for alpha channel in extra samples\n  if IFD.ExtraSamples>0 then\n    ReadShortValues(IFD.ExtraSamples, ExtraSamples, ExtraSampleCnt)\n  else begin\n    ExtraSamples := nil;\n    ExtraSampleCnt:= 0;\n  end;\n\n  if ExtraSampleCnt>=SampleCnt then\n  begin\n    ReAllocMem(SampleBits, 0);\n    ReAllocMem(ExtraSamples, 0);\n    TiffError('Samples='+IntToStr(SampleCnt)+' ExtraSampleCnt='+IntToStr(\n      ExtraSampleCnt));\n  end;\n\n  RegularSampleCnt := SampleCnt - ExtraSampleCnt;\n\n  for i:=0 to ExtraSampleCnt-1 do begin\n    if ExtraSamples[i] in [1, 2] then begin\n      AlphaChannel := RegularSampleCnt+i;\n      PremultipliedAlpha:= ExtraSamples[i]=1;\n      IFD.AlphaBits:=SampleBits[AlphaChannel];\n    end;\n  end;\n\n  ReAllocMem(ExtraSamples, 0);  //end of extra samples\n\n  for i:=0 to SampleCnt-1 do begin\n    if SampleBits[i]>16 then\n      TiffError('Samples bigger than 16 bit not supported');\n    if not (SampleBits[i] in [1, 4, 8, 12, 16]) then\n      TiffError('Only samples of 1, 4, 8, 12 and 16 bit are supported');\n    if (i <> 0) and ((SampleBits[i] = 1) xor (SampleBits[0] = 1)) then\n      TiffError('Cannot mix 1 bit samples with other sample sizes');\n    inc(SampleBitsPerPixel, SampleBits[i]);\n  end;\n\n  BytesPerPixel:= SampleBitsPerPixel div 8;\n  IFD.BytesPerPixel:=BytesPerPixel;\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('BytesPerPixel=', BytesPerPixel);\n  {$endif}\n\n  case IFD.PhotoMetricInterpretation of\n  0, 1:\n    begin\n      if RegularSampleCnt<>1 then\n        TiffError('gray images expect one sample per pixel, but found '+\n          IntToStr(SampleCnt));\n\n      IFD.GrayBits:=SampleBits[0];\n    end;\n  2:\n    begin\n      if (RegularSampleCnt<>3) and (RegularSampleCnt<>4) then\n        TiffError('rgb(a) images expect three or four samples per pixel, but found '+\n          IntToStr(SampleCnt));\n\n      IFD.RedBits:=SampleBits[0];\n      IFD.GreenBits:=SampleBits[1];\n      IFD.BlueBits:=SampleBits[2];\n      if RegularSampleCnt=4 then begin\n        if (AlphaChannel <> -1) then\n          TiffError('Alpha channel specified twice');\n        AlphaChannel:= 3;\n        PremultipliedAlpha:= false;\n        IFD.AlphaBits:=SampleBits[AlphaChannel];\n      end;\n    end;\n  3:\n    begin\n      if RegularSampleCnt<>1 then\n        TiffError('palette images expect one sample per pixel, but found '+\n          IntToStr(SampleCnt));\n\n      if IFD.ColorMap > 0 then\n      begin\n        ReadShortValues(IFD.ColorMap, PaletteValues, PaletteCnt);\n        if PaletteCnt <> (1 shl SampleBits[0])*3 then\n        begin\n          ReAllocMem(PaletteValues, 0);\n          TiffError('Palette size mismatch');\n        end;\n      end else\n        TiffError('Palette not supplied')\n    end;\n  4:\n    begin\n      if RegularSampleCnt<>1 then\n        TiffError('mask images expect one sample per pixel, but found '+\n          IntToStr(SampleCnt));\n      TiffError('Mask images not handled');\n    end;\n  5:\n    begin\n      if RegularSampleCnt<>4 then\n        TiffError('cmyk images expect four samples per pixel, but found '+\n          IntToStr(SampleCnt));\n\n      IFD.RedBits:=SampleBits[0];   //cyan\n      IFD.GreenBits:=SampleBits[1]; //magenta\n      IFD.BlueBits:=SampleBits[2];   //yellow\n      IFD.GrayBits:=SampleBits[3];  //black\n      PremultipliedAlpha:= false;\n    end;\n  6:\n    begin\n      if RegularSampleCnt<>3 then\n        TiffError('YCbCr images expect 3 samples per pixel, but found '+\n          IntToStr(SampleCnt));\n\n      IFD.GrayBits:=SampleBits[0];   //Y\n      IFD.BlueBits:=SampleBits[1];   //Cb\n      IFD.RedBits:=SampleBits[2];    //Cr\n      PremultipliedAlpha:= false;\n    end;\n  8,9:\n    begin\n      if (RegularSampleCnt<>1) and (RegularSampleCnt<>3) then\n        TiffError('L*a*b* colorspace needs either one component for grayscale or three components, but found '+inttostr(RegularSampleCnt));\n      if RegularSampleCnt = 3 then\n      begin\n        IFD.GreenBits:=SampleBits[0];\n        if (IFD.GreenBits <> 8) and (IFD.GreenBits <> 16) then TiffError('Only 8 bit and 16 bit depth allowed for L* component');\n        IFD.RedBits:=SampleBits[1];\n        IFD.BlueBits:=SampleBits[2]; //in fact inverse blue so more like yellow\n        if ((IFD.RedBits <> 8) and (IFD.RedBits <> 16))\n        or ((IFD.BlueBits <> 8) and (IFD.BlueBits <> 16)) then TiffError('Only 8 bit and 16 bit depth allowed for a* and b* component');\n      end else\n      begin\n        IFD.GrayBits:=SampleBits[0];\n        if (IFD.GrayBits <> 8) and (IFD.GrayBits <> 16) then TiffError('Only 8 bit and 16 bit depth allowed for L* component');\n      end;\n      PremultipliedAlpha:= false;\n    end\n  else\n    TiffError('Photometric interpretation not handled (' + inttostr(IFD.PhotoMetricInterpretation)+')');\n  end;\nend;\n\nprocedure TBGRAReaderTiff.SetFPImgExtras(CurImg: TFPCustomImage; IFD: TTiffIFD);\nbegin\n  ClearTiffExtras(CurImg);\n  // set Tiff extra attributes\n  CurImg.Extra[TiffPhotoMetric]:=IntToStr(IFD.PhotoMetricInterpretation);\n  //writeln('TBGRAReaderTiff.SetFPImgExtras PhotoMetric=',CurImg.Extra[TiffPhotoMetric]);\n  if IFD.Artist<>'' then\n    CurImg.Extra[TiffArtist]:=IFD.Artist;\n  if IFD.Copyright<>'' then\n    CurImg.Extra[TiffCopyright]:=IFD.Copyright;\n  if IFD.DocumentName<>'' then\n    CurImg.Extra[TiffDocumentName]:=IFD.DocumentName;\n  if IFD.DateAndTime<>'' then\n    CurImg.Extra[TiffDateTime]:=IFD.DateAndTime;\n  if IFD.HostComputer<>'' then\n    CurImg.Extra[TiffHostComputer]:=IFD.HostComputer;\n  if IFD.ImageDescription<>'' then\n    CurImg.Extra[TiffImageDescription]:=IFD.ImageDescription;\n  if IFD.Make_ScannerManufacturer<>'' then\n    CurImg.Extra[TiffMake_ScannerManufacturer]:=IFD.Make_ScannerManufacturer;\n  if IFD.Model_Scanner<>'' then\n    CurImg.Extra[TiffModel_Scanner]:=IFD.Model_Scanner;\n  if IFD.Software<>'' then\n    CurImg.Extra[TiffSoftware]:=IFD.Software;\n  if not (IFD.Orientation in [1..8]) then\n    IFD.Orientation:=1;\n  CurImg.Extra[TiffOrientation]:=IntToStr(IFD.Orientation);\n  if IFD.ResolutionUnit<>0 then\n    CurImg.Extra[TiffResolutionUnit]:=IntToStr(IFD.ResolutionUnit);\n  if (IFD.XResolution.Numerator<>0) or (IFD.XResolution.Denominator<>0) then\n    CurImg.Extra[TiffXResolution]:=TiffRationalToStr(IFD.XResolution);\n  if (IFD.YResolution.Numerator<>0) or (IFD.YResolution.Denominator<>0) then\n    CurImg.Extra[TiffYResolution]:=TiffRationalToStr(IFD.YResolution);\n  CurImg.Extra[TiffRedBits]:=IntToStr(IFD.RedBits);\n  CurImg.Extra[TiffGreenBits]:=IntToStr(IFD.GreenBits);\n  CurImg.Extra[TiffBlueBits]:=IntToStr(IFD.BlueBits);\n  CurImg.Extra[TiffGrayBits]:=IntToStr(IFD.GrayBits);\n  CurImg.Extra[TiffAlphaBits]:=IntToStr(IFD.AlphaBits);\n  if IFD.PageCount>0 then begin\n    CurImg.Extra[TiffPageNumber]:=IntToStr(IFD.PageNumber);\n    CurImg.Extra[TiffPageCount]:=IntToStr(IFD.PageCount);\n  end;\n  if IFD.PageName<>'' then\n    CurImg.Extra[TiffPageName]:=IFD.PageName;\n  if IFD.ImageIsThumbNail then\n    CurImg.Extra[TiffIsThumbnail]:='1';\n  if IFD.ImageIsMask then\n    CurImg.Extra[TiffIsMask]:='1';\n  if IFD.Compression<>TiffCompressionNone then\n    CurImg.Extra[TiffCompression]:=IntToStr(IFD.Compression);\n\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    WriteTiffExtras('SetFPImgExtras', CurImg);\n  {$endif}\nend;\n\nprocedure TBGRAReaderTiff.ReadImgValue(BitCount: Word;\n  var Run: Pointer; var BitPos: Byte; FillOrder: LongWord;\n  Predictor: word; var LastValue: word; out Value: Word);\nvar\n  BitNumber: byte;\n  Byte1, Byte2: byte;\nbegin\n  case BitCount of\n  1:\n    begin\n      if FillOrder = 2 then\n        BitNumber:=BitPos    //Leftmost pixel starts with bit 0\n      else\n        BitNumber:=7-BitPos; //Leftmost pixel starts with bit 7\n      Value:=((PCUInt8(Run)^) and (1 shl BitNumber) shr BitNumber);\n      inc(BitPos);\n      if BitPos = 8 then\n      begin\n        BitPos := 0;\n        inc(Run); //next byte when all bits read\n      end;\n      if Predictor = 2 then Value := (LastValue+Value) and 1;\n      LastValue:=Value;\n      if Value > 0 then Value := $ffff;\n    end;\n  4:\n    begin\n      if BitPos = 0 then\n      begin\n        Value := PCUInt8(Run)^ shr 4;\n        BitPos := 4;\n      end\n      else\n      begin\n        Value := PCUInt8(Run)^ and 15;\n        BitPos := 0;\n        Inc(Run);\n      end;\n      if Predictor = 2 then Value := (LastValue+Value) and $f;\n      LastValue:=Value;\n      Value := Value + (value shl 4) + (value shl 8) + (value shl 12);\n    end;\n  8:\n    begin\n      Value:=PCUInt8(Run)^;\n      inc(Run);\n      if Predictor = 2 then Value := (LastValue+Value) and $ff;\n      LastValue:=Value;\n      Value:=Value shl 8+Value;\n    end;\n  12:\n    begin\n      Byte1 := PCUInt8(Run)^;\n      Byte2 := PCUInt8(Run+1)^;\n      if BitPos = 0 then begin\n        Value := (Byte1 shl 4) or (Byte2 shr 4);\n        inc(Run);\n        BitPos := 4;\n      end else begin\n        Value := ((Byte1 and $0F) shl 8) or Byte2;\n        inc(Run, 2);\n        BitPos := 0;\n      end;\n      if Predictor = 2 then Value := (LastValue+Value) and $fff;\n      LastValue:=Value;\n      Value := (Value shl 4) + (Value shr 8);\n    end;\n  16:\n    begin\n      Value:=FixEndian(PCUInt16(Run)^);\n      inc(Run,2);\n      if Predictor = 2 then Value := (LastValue+Value) and $ffff;\n      LastValue:=Value;\n    end;\n  end;\nend;\n\nprocedure TBGRAReaderTiff.SetStreamPos(p: LongWord);\nvar\n  NewPosition: int64;\nbegin\n  NewPosition:=Int64(p)+fStartPos;\n  if NewPosition>s.Size then\n    TiffError('Offset outside of stream');\n  s.Position:=NewPosition;\nend;\n\nprocedure TBGRAReaderTiff.LoadFromStream(aStream: TStream; AutoClear: boolean);\nvar\n  i: Integer;\n  aContinue: Boolean;\nbegin\n  if AutoClear then\n    Clear;\n  aContinue:=true;\n  Progress(psStarting, 0, False, Rect(0,0,0,0), '', aContinue);\n  if not aContinue then exit;\n  LoadHeaderFromStream(aStream);\n  LoadIFDsFromStream;\n  for i := 0 to ImageCount-1 do\n  begin\n    Progress(psRunning, (i+1)*100 div (ImageCount+1), False, Rect(0,0,0,0),\n             IntToStr(i+1)+'/'+IntToStr(ImageCount), aContinue);\n    LoadImageFromStream(i);\n  end;\n  Progress(psEnding, 100, False, Rect(0,0,0,0), '', aContinue);\n  ReleaseStream;\nend;\n\nprocedure TBGRAReaderTiff.LoadHeaderFromStream(aStream: TStream);\nbegin\n  FFirstIFDStart:=0;\n  s:=aStream;\n  fStartPos:=s.Position;\n  ReadTiffHeader(false,FFirstIFDStart);\nend;\n\nprocedure TBGRAReaderTiff.LoadIFDsFromStream;\nvar\n  i,j: Integer;\n  IFDStart: LongWord;\n  IFD: TTiffIFD;\nbegin\n  IFDStart:=FirstIFDStart;\n  i:=0;\n  while IFDStart>0 do begin\n    for j := 0 to i-1 do\n      if Images[j].IFDStart = IFDStart then exit; //IFD cycle detected\n\n    if ImageCount=i then\n    begin\n      IFD := TTiffIFD.Create;\n      ImageList.Add(IFD);\n    end else\n      IFD:=Images[i];\n    IFDStart:=ReadIFD(IFDStart, IFD);\n    inc(i);\n  end;\nend;\n\nfunction TBGRAReaderTiff.FirstImg: TTiffIFD;\nbegin\n  Result:=nil;\n  if (ImageList=nil) or (ImageList.Count=0) then exit;\n  Result:=TTiffIFD(ImageList[0]);\nend;\n\nfunction TBGRAReaderTiff.GetBiggestImage: TTiffIFD;\nvar\n  Size: Int64;\n  IFD: TTiffIFD;\n  CurSize: int64;\n  i: Integer;\nbegin\n  Result:=nil;\n  Size:=0;\n  for i:=0 to ImageCount-1 do begin\n    IFD:=Images[i];\n    CurSize:=Int64(IFD.ImageWidth)*IFD.ImageHeight;\n    if CurSize<Size then continue;\n    Size:=CurSize;\n    Result:=IFD;\n  end;\nend;\n\nfunction TBGRAReaderTiff.ImageCount: integer;\nbegin\n  Result:=ImageList.Count;\nend;\n\nfunction TBGRAReaderTiff.ReadTiffHeader(QuickTest: boolean; out IFDStart: LongWord): boolean;\nvar\n  ByteOrder: String;\n  BigEndian: Boolean;\n  FortyTwo: Word;\nbegin\n  Result:=false;\n  // read byte order  II low endian, MM big endian\n  ByteOrder:='  ';\n  s.Read(ByteOrder[1],2);\n  //debugln(['TForm1.ReadTiffHeader ',dbgstr(ByteOrder)]);\n  if ByteOrder='II' then\n    BigEndian:=false\n  else if ByteOrder='MM' then\n    BigEndian:=true\n  else if QuickTest then\n    exit\n  else\n  begin\n    TiffError('expected II or MM');\n    exit; // indicate that flow stops\n  end;\n  FReverseEndian:={$ifdef FPC_BIG_ENDIAN}not{$endif} BigEndian;\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('TBGRAReaderTiff.ReadTiffHeader Endian Big=',BigEndian,' ReverseEndian=',FReverseEndian);\n  {$endif}\n  // read magic number 42\n  FortyTwo:=ReadWord;\n  if FortyTwo<>42 then begin\n    if QuickTest then\n      exit\n    else\n      TiffError('expected 42, because of its deep philosophical impact, but found '+IntToStr(FortyTwo));\n  end;\n  // read offset to first IFD\n  IFDStart:=ReadDWord;\n  //debugln(['TForm1.ReadTiffHeader IFD=',IFD]);\n  Result:=true;\nend;\n\nfunction TBGRAReaderTiff.ReadIFD(Start: LongWord; IFD: TTiffIFD): LongWord;\nvar\n  Count: Word;\n  i: Integer;\n  EntryTag: Word;\n  p: Int64;\nbegin\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('ReadIFD Start=',Start);\n  {$endif}\n\n  Result:=0;\n  SetStreamPos(Start);\n  IFD.IFDStart:=Start;\n  Count:=ReadWord;\n  EntryTag:=0;\n  p:=s.Position;\n  for i:=1 to Count do begin\n    ReadDirectoryEntry(EntryTag, IFD);\n    inc(p,12);\n    s.Position:=p;\n  end;\n\n  //fix IFD if it is supposed to use tiles but provide chunks as strips\n  if IFD.TileWidth > 0 then\n  begin\n    if (IFD.TileOffsets=0) and (IFD.StripOffsets <> 0) then\n    begin\n      IFD.TileOffsets := IFD.StripOffsets;\n      IFD.StripOffsets := 0;\n    end;\n    if (IFD.TileByteCounts=0) and (IFD.StripByteCounts <> 0) then\n    begin\n      IFD.TileByteCounts := IFD.StripByteCounts;\n      IFD.StripByteCounts:= 0;\n    end;\n  end else\n  begin\n    //if not specified, the strip is the whole image\n    if IFD.RowsPerStrip = 0 then IFD.RowsPerStrip:= IFD.ImageHeight;\n  end;\n\n  // read start of next IFD\n  IFD.IFDNext:= ReadDWord;\n  Result:= IFD.IFDNext;\nend;\n\nprocedure TBGRAReaderTiff.ReadDirectoryEntry(var EntryTag: Word; IFD: TTiffIFD);\nvar\n  EntryType: Word;\n  EntryCount: LongWord;\n  EntryStart: LongWord;\n  NewEntryTag: Word;\n  UValue: LongWord;\n  SValue: integer;\n  WordBuffer: PWord;\n  Count: LongWord;\n  i: Integer;\n\n  function GetPos: LongWord;\n  begin\n     Result:=LongWord(s.Position-fStartPos-2)\n  end;\n\nbegin\n  NewEntryTag:=ReadWord;\n  if (NewEntryTag<EntryTag) then begin\n    // the TIFF specification insists on ordered entry tags in each IFD\n    // This allows to spot damaged files.\n    // But some programs like 'GraphicConverter' do not order the extension tags\n    // properly.\n    {$ifdef FPC_Debug_Image}\n    if Debug then\n      writeln('WARNING: Tags must be in ascending order: Last='+IntToStr(EntryTag)+' Next='+IntToStr(NewEntryTag));\n    {$endif}\n    case CheckIFDOrder of\n    tcioAlways: TiffError('Tags must be in ascending order: Last='+IntToStr(EntryTag)+' Next='+IntToStr(NewEntryTag));\n    tcioSmart:\n      if NewEntryTag<30000 then\n        TiffError('Tags must be in ascending order: Last='+IntToStr(EntryTag)+' Next='+IntToStr(NewEntryTag));\n    end;\n  end;\n  EntryTag:=NewEntryTag;\n  case EntryTag of\n  254:\n    begin\n      // NewSubFileType\n      UValue:=ReadEntryUnsigned;\n      IFD.ImageIsThumbNail:=UValue and 1<>0;\n      IFD.ImageIsPage:=UValue and 2<>0;\n      IFD.ImageIsMask:=UValue and 4<>0;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 254: NewSubFileType ThumbNail=',IFD.ImageIsThumbNail,' Page=',IFD.ImageIsPage,' Mask=',IFD.ImageIsMask);\n      {$endif}\n    end;\n  255:\n    begin\n      // SubFileType (deprecated)\n      UValue:=ReadEntryUnsigned;\n      IFD.ImageIsThumbNail:=false;\n      IFD.ImageIsPage:=false;\n      IFD.ImageIsMask:=false;\n      case UValue of\n      1: ;\n      2: IFD.ImageIsThumbNail:=true;\n      3: IFD.ImageIsPage:=true;\n      else\n        TiffError('SubFileType expected, but found '+IntToStr(UValue));\n      end;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 255: SubFileType ThumbNail=',IFD.ImageIsThumbNail,' Page=',IFD.ImageIsPage,' Mask=',IFD.ImageIsMask);\n      {$endif}\n    end;\n  256:\n    begin\n      // fImageWidth\n      IFD.ImageWidth:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 256: ImageWidth=',IFD.ImageWidth);\n      {$endif}\n    end;\n  257:\n    begin\n      // ImageLength according to TIFF spec, here used as imageheight\n      IFD.ImageHeight:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 257: ImageHeight=',IFD.ImageHeight);\n      {$endif}\n    end;\n  258:\n    begin\n      // BitsPerSample\n      IFD.BitsPerSample:=GetPos;\n      ReadShortValues(IFD.BitsPerSample,WordBuffer,Count);\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 258: BitsPerSample: ');\n        for i:=0 to Count-1 do\n          write(IntToStr(WordBuffer[i]),' ');\n        writeln;\n      end;\n      {$endif}\n      try\n        SetLength(IFD.BitsPerSampleArray,Count);\n        for i:=0 to Count-1 do\n          IFD.BitsPerSampleArray[i]:=WordBuffer[i];\n      finally\n        ReAllocMem(WordBuffer,0);\n      end;\n    end;\n  259:\n    begin\n      // Compression\n      UValue:=ReadEntryUnsigned;\n      case UValue of\n      TiffCompressionNone,\n      TiffCompressionCCITTRLE,\n      TiffCompressionCCITTFAX3,\n      TiffCompressionCCITTFAX4,\n      TiffCompressionLZW,\n      TiffCompressionOldJPEG,\n      TiffCompressionJPEG,\n      TiffCompressionDeflateAdobe,\n      TiffCompressionJBIGBW,\n      TiffCompressionJBIGCol,\n      TiffCompressionNeXT,\n      TiffCompressionCCITTRLEW,\n      TiffCompressionPackBits,\n      TiffCompressionThunderScan,\n      TiffCompressionIT8CTPAD,\n      TiffCompressionIT8LW,\n      TiffCompressionIT8MP,\n      TiffCompressionIT8BL,\n      TiffCompressionPixarFilm,\n      TiffCompressionPixarLog,\n      TiffCompressionDeflateZLib,\n      TiffCompressionDCS,\n      TiffCompressionJBIG,\n      TiffCompressionSGILog,\n      TiffCompressionSGILog24,\n      TiffCompressionJPEG2000: ;\n      else\n        TiffError('expected Compression, but found '+IntToStr(UValue));\n      end;\n      IFD.Compression:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 259: Compression=',IntToStr(IFD.Compression),'=',TiffCompressionName(IFD.Compression));\n      {$endif}\n    end;\n  262:\n    begin\n      // PhotometricInterpretation\n      UValue:=ReadEntryUnsigned;\n      if UValue > 65535 then\n        TiffError('expected PhotometricInterpretation, but found '+IntToStr(UValue));\n      IFD.PhotoMetricInterpretation:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 262: PhotometricInterpretation=');\n        case IFD.PhotoMetricInterpretation of\n        0: write('0=bilevel grayscale 0 is white');\n        1: write('1=bilevel grayscale 0 is black');\n        2: write('2=RGB 0,0,0 is black');\n        3: write('3=Palette color');\n        4: write('4=Transparency Mask');\n        5: write('5=CMYK 8bit');\n        8: write('8=L*a*b* with a and b [-128;127]');\n        9: write('9=L*a*b* with a and b [0;255]');\n        end;\n        writeln;\n      end;\n      {$endif}\n    end;\n  263:\n    begin\n      // Tresholding\n      UValue:=ReadEntryUnsigned;\n      case UValue of\n      1: ; // no dithering or halftoning was applied\n      2: ; // an ordered dithering or halftoning was applied\n      3: ; // a randomized dithering or halftoning was applied\n      else\n        TiffError('expected Tresholding, but found '+IntToStr(UValue));\n      end;\n      IFD.Tresholding:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 263: Tresholding=',IFD.Tresholding);\n      {$endif}\n    end;\n  264:\n    begin\n      // CellWidth\n      IFD.CellWidth:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 264: CellWidth=',IFD.CellWidth);\n      {$endif}\n    end;\n  265:\n    begin\n      // CellLength\n      IFD.CellLength:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 265: CellLength=',IFD.CellLength);\n      {$endif}\n    end;\n  266:\n    begin\n      // FillOrder\n      UValue:=ReadEntryUnsigned;\n      case UValue of\n      1: IFD.FillOrder:=1; // left to right = high to low\n      2: IFD.FillOrder:=2; // left to right = low to high\n      else\n        TiffError('expected FillOrder, but found '+IntToStr(UValue));\n      end;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 266: FillOrder=',IntToStr(IFD.FillOrder),'=');\n        case IFD.FillOrder of\n        1: write('left to right = high to low');\n        2: write('left to right = low to high');\n        end;\n        writeln;\n      end;\n      {$endif}\n    end;\n  269:\n    begin\n      // DocumentName\n      IFD.DocumentName:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 269: DocumentName=',IFD.DocumentName);\n      {$endif}\n    end;\n  270:\n    begin\n      // ImageDescription\n      IFD.ImageDescription:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 270: ImageDescription=',IFD.ImageDescription);\n      {$endif}\n    end;\n  271:\n    begin\n      // Make - scanner manufacturer\n      IFD.Make_ScannerManufacturer:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 271: Make_ScannerManufacturer=',IFD.Make_ScannerManufacturer);\n      {$endif}\n    end;\n  272:\n    begin\n      // Model - scanner model\n      IFD.Model_Scanner:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 272: Model_Scanner=',IFD.Model_Scanner);\n      {$endif}\n    end;\n  273:\n    begin\n      // StripOffsets (store offset to entity, not the actual contents of the offsets)\n      IFD.StripOffsets:=GetPos; //Store position of entity so we can look up multiple offsets later\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 273: StripOffsets, offset for entry=',IFD.StripOffsets);\n      {$endif}\n    end;\n  274:\n    begin\n      // Orientation\n      UValue:=ReadEntryUnsigned;\n      case UValue of\n      1: ;// 0,0 is left, top\n      2: ;// 0,0 is right, top\n      3: ;// 0,0 is right, bottom\n      4: ;// 0,0 is left, bottom\n      5: ;// 0,0 is top, left (rotated)\n      6: ;// 0,0 is top, right (rotated)\n      7: ;// 0,0 is bottom, right (rotated)\n      8: ;// 0,0 is bottom, left (rotated)\n      else\n        TiffError('expected Orientation, but found '+IntToStr(UValue));\n      end;\n      IFD.Orientation:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 274: Orientation=',IntToStr(IFD.Orientation),'=');\n        case IFD.Orientation of\n        1: write('0,0 is left, top');\n        2: write('0,0 is right, top');\n        3: write('0,0 is right, bottom');\n        4: write('0,0 is left, bottom');\n        5: write('0,0 is top, left (rotated)');\n        6: write('0,0 is top, right (rotated)');\n        7: write('0,0 is bottom, right (rotated)');\n        8: write('0,0 is bottom, left (rotated)');\n        end;\n        writeln;\n      end;\n      {$endif}\n    end;\n  277:\n    begin\n      // SamplesPerPixel\n      IFD.SamplesPerPixel:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 277: SamplesPerPixel=',IFD.SamplesPerPixel);\n      {$endif}\n    end;\n  278:\n    begin\n      // RowsPerStrip\n      UValue:=ReadEntryUnsigned;\n      if UValue=0 then\n        TiffError('expected RowsPerStrip, but found '+IntToStr(UValue));\n      IFD.RowsPerStrip:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 278: RowsPerStrip=',IFD.RowsPerStrip);\n      {$endif}\n    end;\n  279:\n    begin\n      // StripByteCounts (the number of bytes in each strip).\n      // We're storing the position of the tag, not the various bytecounts themselves\n      IFD.StripByteCounts:=GetPos;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 279: StripByteCounts, offset for entry=',IFD.StripByteCounts);\n      {$endif}\n    end;\n  280:\n    begin\n      // MinSampleValue\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 280: skipping MinSampleValue');\n      {$endif}\n    end;\n  281:\n    begin\n      // MaxSampleValue\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 281: skipping MaxSampleValue');\n      {$endif}\n    end;\n  282:\n    begin\n      // XResolution\n      IFD.XResolution:=ReadEntryRational;\n      {$ifdef FPC_Debug_Image}\n      try\n        if Debug then\n          writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 282: XResolution=',IFD.XResolution.Numerator,'/',IFD.XResolution.Denominator,'=',IFD.XResolution.Numerator/IFD.XResolution.Denominator);\n      except\n        //ignore division by 0\n      end;\n      {$endif}\n    end;\n  283:\n    begin\n      // YResolution\n      IFD.YResolution:=ReadEntryRational;\n      {$ifdef FPC_Debug_Image}\n      try\n        if Debug then\n          writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 283: YResolution=',IFD.YResolution.Numerator,'/',IFD.YResolution.Denominator,'=',IFD.YResolution.Numerator/IFD.YResolution.Denominator);\n      except\n        //ignore division by 0\n      end;      {$endif}\n    end;\n  284:\n    begin\n      // PlanarConfiguration\n      SValue:=ReadEntrySigned;\n      case SValue of\n      TiffPlanarConfigurationChunky: ; // 1\n      TiffPlanarConfigurationPlanar: ; // 2\n      else\n        TiffError('expected PlanarConfiguration, but found '+IntToStr(SValue));\n      end;\n      IFD.PlanarConfiguration:=SValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 284: PlanarConfiguration=');\n        case SValue of\n        TiffPlanarConfigurationChunky: write('chunky format');\n        TiffPlanarConfigurationPlanar: write('planar format');\n        end;\n        writeln;\n      end;\n      {$endif}\n    end;\n  285:\n    begin\n      // PageName\n      IFD.PageName:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 285: PageName=\"'+IFD.PageName+'\"');\n      {$endif}\n    end;\n  288:\n    begin\n      // FreeOffsets\n      // The free bytes in a tiff file are described with FreeByteCount and FreeOffsets\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 288: skipping FreeOffsets');\n      {$endif}\n    end;\n  289:\n    begin\n      // FreeByteCount\n      // The free bytes in a tiff file are described with FreeByteCount and FreeOffsets\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 289: skipping FreeByteCount');\n      {$endif}\n    end;\n  290:\n    begin\n      // GrayResponseUnit\n      // precision of GrayResponseCurve\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 290: skipping GrayResponseUnit');\n      {$endif}\n    end;\n  291:\n    begin\n      // GrayResponseCurve\n      // the optical density for each possible pixel value\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 291: skipping GrayResponseCurve');\n      {$endif}\n    end;\n  296:\n    begin\n      // fResolutionUnit\n      UValue:=ReadEntryUnsigned;\n      case UValue of\n      1: IFD.ResolutionUnit:=1; // none\n      2: IFD.ResolutionUnit:=2; // inch\n      3: IFD.ResolutionUnit:=3; // centimeter\n      else\n        TiffError('expected ResolutionUnit, but found '+IntToStr(UValue));\n      end;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 296: ResolutionUnit=');\n        case IFD.ResolutionUnit of\n        1: write('none');\n        2: write('inch');\n        3: write('centimeter');\n        end;\n        writeln;\n      end;\n      {$endif}\n    end;\n  297:\n    begin\n      // page number (starting at 0) and total number of pages\n      UValue:=GetPos;\n      ReadShortValues(UValue,WordBuffer,Count);\n      try\n        if Count<>2 then begin\n          {$ifdef FPC_Debug_Image}\n          if Debug then begin\n            write('TBGRAReaderTiff.ReadDirectoryEntry Tag 297: PageNumber/Count: ');\n            for i:=0 to Count-1 do\n              write(IntToStr(WordBuffer[i]),' ');\n            writeln;\n          end;\n          {$endif}\n          TiffError('PageNumber Count=2 expected, but found '+IntToStr(Count));\n        end;\n        IFD.PageNumber:=WordBuffer[0];\n        IFD.PageCount:=WordBuffer[1];\n        if IFD.PageNumber>=IFD.PageCount then begin\n          // broken order => repair\n          UValue:=IFD.PageNumber;\n          IFD.PageNumber:=IFD.PageCount;\n          IFD.PageCount:=UValue;\n        end;\n      finally\n        ReAllocMem(WordBuffer,0);\n      end;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 297: PageNumber=',IFD.PageNumber,'/',IFD.PageCount);\n      end;\n      {$endif}\n    end;\n  305:\n    begin\n      // Software\n      IFD.Software:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 305: Software=\"',IFD.Software,'\"');\n      {$endif}\n    end;\n  306:\n    begin\n      // DateAndTime\n      IFD.DateAndTime:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 306: DateAndTime=\"',IFD.DateAndTime,'\"');\n      {$endif}\n    end;\n  315:\n    begin\n      // Artist\n      IFD.Artist:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 315: Artist=\"',IFD.Artist,'\"');\n      {$endif}\n    end;\n  316:\n    begin\n      // HostComputer\n      IFD.HostComputer:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 316: HostComputer=\"',IFD.HostComputer,'\"');\n      {$endif}\n    end;\n  317:\n    begin\n      // Predictor\n      UValue:=word(ReadEntryUnsigned);\n      case UValue of\n      1: ;\n      2: ;\n      else TiffError('expected Predictor, but found '+IntToStr(UValue));\n      end;\n      IFD.Predictor:=UValue;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 317: Predictor=\"',IFD.Predictor,'\"');\n      {$endif}\n    end;\n  320:\n    begin\n      // ColorMap: N = 3*2^BitsPerSample\n      IFD.ColorMap:=GetPos;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 320: skipping ColorMap');\n      {$endif}\n    end;\n  322:\n    begin\n      // TileWidth\n      IFD.TileWidth:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 322: TileWidth=',IFD.TileWidth);\n      {$endif}\n      if IFD.TileWidth=0 then\n        TiffError('TileWidth=0');\n    end;\n  323:\n    begin\n      // TileLength = TileHeight\n      IFD.TileLength:=ReadEntryUnsigned;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 323: TileLength=',IFD.TileLength);\n      {$endif}\n      if IFD.TileLength=0 then\n        TiffError('TileLength=0');\n    end;\n  324:\n    begin\n      // TileOffsets\n      IFD.TileOffsets:=GetPos;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 324: TileOffsets=',IFD.TileOffsets);\n      {$endif}\n      if IFD.TileOffsets=0 then\n        TiffError('TileOffsets=0');\n    end;\n  325:\n    begin\n      // TileByteCounts\n      IFD.TileByteCounts:=GetPos;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 325: TileByteCounts=',IFD.TileByteCounts);\n      {$endif}\n      if IFD.TileByteCounts=0 then\n        TiffError('TileByteCounts=0');\n    end;\n  338:\n    begin\n      // ExtraSamples: if SamplesPerPixel is bigger than PhotometricInterpretation\n      // then ExtraSamples is an array defining the extra samples\n      // 0=unspecified\n      // 1=alpha (premultiplied)\n      // 2=alpha (unassociated)\n      IFD.ExtraSamples:=GetPos;\n      {$ifdef FPC_Debug_Image}\n      if Debug then begin\n        ReadShortValues(IFD.ExtraSamples,WordBuffer,Count);\n        write('TBGRAReaderTiff.ReadDirectoryEntry Tag 338: ExtraSamples: ');\n        for i:=0 to Count-1 do\n          write(IntToStr(WordBuffer[i]),' ');\n        writeln;\n        ReAllocMem(WordBuffer,0);\n      end;\n      {$endif}\n    end;\n  347:\n    begin\n      // ToDo: JPEGTables\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 347: skipping JPEG Tables');\n      {$endif}\n    end;\n  512:\n    begin\n      // ToDo: JPEGProc\n      // short\n      // 1 = baseline sequential\n      // 14 = lossless process with Huffman encoding\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 512: skipping JPEGProc');\n      {$endif}\n    end;\n  513:\n    begin\n      // ToDo: JPEGInterchangeFormat\n      // long\n      // non zero: start of start of image SOI marker\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 513: skipping JPEGInterchangeFormat');\n      {$endif}\n    end;\n  514:\n    begin\n      // ToDo: JPEGInterchangeFormatLength\n      // long\n      // length in bytes of 513\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 514: skipping JPEGInterchangeFormatLength');\n      {$endif}\n    end;\n  515:\n    begin\n      // ToDo: JPEGRestartInterval\n      // short\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 515: skipping JPEGRestartInterval');\n      {$endif}\n    end;\n  517:\n    begin\n      // ToDo: JPEGLosslessPredictor\n      // short\n      // Count: SamplesPerPixels\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 517: skipping JPEGLosslessPredictor');\n      {$endif}\n    end;\n  518:\n    begin\n      // ToDo: JPEGPointTransforms\n      // short\n      // Count: SamplesPerPixels\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 518: skipping JPEGPointTransforms');\n      {$endif}\n    end;\n  519:\n    begin\n      // ToDo: JPEGQTables\n      // long\n      // Count: SamplesPerPixels\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 519: skipping JPEGQTables');\n      {$endif}\n    end;\n  520:\n    begin\n      // ToDo: JPEGDCTables\n      // long\n      // Count: SamplesPerPixels\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 520: skipping JPEGDCTables');\n      {$endif}\n    end;\n  521:\n    begin\n      // ToDo: JPEGACTables\n      // long\n      // Count: SamplesPerPixels\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 521: skipping JPEGACTables');\n      {$endif}\n    end;\n  530:\n    begin\n      // ToDo: YCbCrSubSampling alias ChromaSubSampling\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 530: skipping YCbCrSubSampling alias ChromaSubSampling');\n      {$endif}\n    end;\n  700:\n    begin\n      // ToDo: XMP\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 700: skipping XMP');\n      {$endif}\n    end;\n  33432:\n    begin\n      // Copyright\n      IFD.Copyright:=ReadEntryString;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 33432: Copyright=\"',IFD.Copyright,'\"');\n      {$endif}\n    end;\n  34675:\n    begin\n      // ToDo: ICC Profile\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag 34675: skipping ICC profile');\n      {$endif}\n    end;\n  else\n    begin\n      EntryType:=ReadWord;\n      EntryCount:=ReadDWord;\n      EntryStart:=ReadDWord;\n      if (EntryType=0) and (EntryCount=0) and (EntryStart=0) then ;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.ReadDirectoryEntry Tag=',EntryTag,' Type=',EntryType,' Count=',EntryCount,' ValuesStart=',EntryStart);\n      {$endif}\n    end;\n  end;\nend;\n\nfunction TBGRAReaderTiff.ReadEntryUnsigned: LongWord;\nvar\n  EntryCount: LongWord;\n  EntryType: Word;\nbegin\n  Result:=0;\n  EntryType:=ReadWord;\n  EntryCount:=ReadDWord;\n  if EntryCount<>1 then\n    TiffError('EntryCount=1 expected, but found '+IntToStr(EntryCount));\n  //writeln('TBGRAReaderTiff.ReadEntryUnsigned Tag=',EntryTag,' Type=',EntryType,' Count=',EntryCount,' ValuesStart=',EntryStart]);\n  case EntryType of\n  1: begin\n      // byte: 8bit unsigned\n      Result:=ReadByte;\n    end;\n  3: begin\n      // short: 16bit unsigned\n      Result:=ReadWord;\n    end;\n  4: begin\n      // long: 32bit unsigned long\n      Result:=ReadDWord;\n    end;\n  else\n    TiffError('expected single unsigned value, but found type='+IntToStr(EntryType));\n  end;\nend;\n\nfunction TBGRAReaderTiff.ReadEntrySigned: Cint32;\nvar\n  EntryCount: LongWord;\n  EntryType: Word;\nbegin\n  Result:=0;\n  EntryType:=ReadWord;\n  EntryCount:=ReadDWord;\n  if EntryCount<>1 then\n    TiffError('EntryCount+1 expected, but found '+IntToStr(EntryCount));\n  //writeln('TBGRAReaderTiff.ReadEntrySigned Tag=',EntryTag,' Type=',EntryType,' Count=',EntryCount,' ValuesStart=',EntryStart]);\n  case EntryType of\n  1: begin\n      // byte: 8bit unsigned\n      Result:=cint8(ReadByte);\n    end;\n  3: begin\n      // short: 16bit unsigned\n      Result:=cint16(ReadWord);\n    end;\n  4: begin\n      // long: 32bit unsigned long\n      Result:=cint32(ReadDWord);\n    end;\n  6: begin\n      // sbyte: 8bit signed\n      Result:=cint8(ReadByte);\n    end;\n  8: begin\n      // sshort: 16bit signed\n      Result:=cint16(ReadWord);\n    end;\n  9: begin\n      // slong: 32bit signed long\n      Result:=cint32(ReadDWord);\n    end;\n  else\n    TiffError('expected single signed value, but found type='+IntToStr(EntryType));\n  end;\nend;\n\nfunction TBGRAReaderTiff.ReadEntryRational: TTiffRational;\nvar\n  EntryCount: LongWord;\n  EntryStart: LongWord;\n  EntryType: Word;\nbegin\n  Result:=TiffRational0;\n  EntryType:=ReadWord;\n  EntryCount:=ReadDWord;\n  if EntryCount<>1 then\n    TiffError('EntryCount+1 expected, but found '+IntToStr(EntryCount));\n  //writeln('TBGRAReaderTiff.ReadEntryUnsigned Tag=',EntryTag,' Type=',EntryType,' Count=',EntryCount,' ValuesStart=',EntryStart]);\n  case EntryType of\n  1: begin\n      // byte: 8bit unsigned\n      Result.Numerator:=ReadByte;\n    end;\n  3: begin\n      // short: 16bit unsigned\n      Result.Numerator:=ReadWord;\n    end;\n  4: begin\n      // long: 32bit unsigned long\n      Result.Numerator:=ReadDWord;\n    end;\n  5: begin\n      // rational: Two longs: numerator + denominator\n      // this does not fit into 4 bytes\n      EntryStart:=ReadDWord;\n      SetStreamPos(EntryStart);\n      Result.Numerator:=ReadDWord;\n      Result.Denominator:=ReadDWord;\n    end;\n  else\n    TiffError('expected rational unsigned value, but found type='+IntToStr(EntryType));\n  end;\nend;\n\nfunction TBGRAReaderTiff.ReadEntryString: string;\nvar\n  EntryType: Word;\n  EntryCount: LongWord;\n  EntryStart: LongWord;\nbegin\n  Result:='';\n  EntryType:=ReadWord;\n  if EntryType<>2 then\n    TiffError('asciiz expected, but found '+IntToStr(EntryType));\n  EntryCount:=ReadDWord;\n  SetLength(Result,EntryCount-1);\n  if EntryCount>4 then begin\n    // long string -> next 4 LongWord is the offset\n    EntryStart:=ReadDWord;\n    SetStreamPos(EntryStart);\n    s.Read(Result[1],EntryCount-1);\n  end else begin\n    // short string -> stored directly in the next 4 bytes\n    if Result<>'' then\n      s.Read(Result[1],length(Result));\n    // skip rest of 4 bytes\n    if length(Result)<4 then\n      s.Read(EntryStart,4-length(Result));\n  end;\nend;\n\nfunction TBGRAReaderTiff.ReadByte: Byte;\nbegin\n  Result:=s.ReadByte;\nend;\n\nfunction TBGRAReaderTiff.ReadWord: Word;\nbegin\n  Result:=FixEndian(s.ReadWord);\nend;\n\nfunction TBGRAReaderTiff.ReadDWord: LongWord;\nbegin\n  Result:=FixEndian(s.ReadDWord);\nend;\n\nprocedure TBGRAReaderTiff.ReadValues(StreamPos: LongWord; out EntryType: word; out\n  EntryCount: LongWord; out Buffer: Pointer; out ByteCount: PtrUInt);\nvar\n  EntryStart: LongWord;\nbegin\n  Buffer:=nil;\n  ByteCount:=0;\n  EntryType:=0;\n  EntryCount:=0;\n  SetStreamPos(StreamPos);\n  ReadWord; // skip tag\n  EntryType:=ReadWord;\n  EntryCount:=ReadDWord;\n  if EntryCount=0 then exit;\n  case EntryType of\n  1,6,7: ByteCount:=EntryCount; // byte\n  2: ByteCount:=EntryCount; // asciiz\n  3,8: ByteCount:=2*EntryCount; // short\n  4,9: ByteCount:=4*EntryCount; // long\n  5,10: ByteCount:=8*EntryCount; // rational\n  11: ByteCount:=4*EntryCount; // single\n  12: ByteCount:=8*EntryCount; // double\n  else\n    TiffError('invalid EntryType '+IntToStr(EntryType));\n  end;\n  if ByteCount>4 then begin\n    EntryStart:=ReadDWord;\n    SetStreamPos(EntryStart);\n  end;\n  GetMem(Buffer,ByteCount);\n  s.Read(Buffer^,ByteCount);\nend;\n\nprocedure TBGRAReaderTiff.ReadShortOrLongValues(StreamPos: LongWord; out\n  Buffer: PLongWord; out Count: LongWord);\nvar\n  p: Pointer;\n  ByteCount: PtrUInt;\n  EntryType: word;\n  i: LongWord;\nbegin\n  Buffer:=nil;\n  Count:=0;\n  p:=nil;\n  try\n    ReadValues(StreamPos,EntryType,Count,p,ByteCount);\n    if Count=0 then exit;\n    if EntryType=3 then begin\n      // short\n      GetMem(Buffer,SizeOf(LongWord)*Count);\n      for i:=0 to Count-1 do\n        Buffer[i]:=FixEndian(PWord(p)[i]);\n    end else if EntryType=4 then begin\n      // long\n      Buffer:=p;\n      p:=nil;\n      if FReverseEndian then\n        for i:=0 to Count-1 do\n          Buffer[i]:=FixEndian(PLongWord(Buffer)[i]);\n    end else\n      TiffError('only short or long allowed');\n  finally\n    if p<>nil then FreeMem(p);\n  end;\nend;\n\nprocedure TBGRAReaderTiff.ReadShortValues(StreamPos: LongWord; out Buffer: PWord;\n  out Count: LongWord);\nvar\n  p: Pointer;\n  ByteCount: PtrUInt;\n  EntryType: word;\n  i: LongWord;\nbegin\n  Buffer:=nil;\n  Count:=0;\n  p:=nil;\n  try\n    ReadValues(StreamPos,EntryType,Count,p,ByteCount);\n    //writeln('ReadShortValues ',FReverseEndian,' ',EntryType,' Count=',Count,' ByteCount=',ByteCount);\n    if Count=0 then exit;\n    if EntryType=3 then begin\n      // short\n      Buffer:=p;\n      p:=nil;\n      if FReverseEndian then\n        for i:=0 to Count-1 do\n          Buffer[i]:=FixEndian(Buffer[i]);\n      //for i:=0 to Count-1 do writeln(i,' ',Buffer[i]);\n    end else\n      TiffError('only short allowed, but found '+IntToStr(EntryType));\n  finally\n    if p<>nil then FreeMem(p);\n  end;\nend;\n\nprocedure TBGRAReaderTiff.LoadImageFromStream(Index: integer);\nvar\n  IFD: TTiffIFD;\nbegin\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('TBGRAReaderTiff.LoadImageFromStream Index=',Index);\n  {$endif}\n  IFD:=Images[Index];\n  LoadImageFromStream(IFD);\nend;\n\nprocedure TBGRAReaderTiff.LoadImageFromStream(IFD: TTiffIFD);\nvar\n  SampleCnt: LongWord;\n  SampleBits: PWord;\n  ChannelValues, LastChannelValues: array of word;\n  All8Bit, All16Bit: boolean;\n\n  procedure CheckBitCount;\n  var\n    Channel: LongWord;\n  begin\n    All8Bit := true;\n    All16Bit := true;\n    for Channel := 0 to SampleCnt-1 do\n    begin\n      if SampleBits[Channel] <> 8 then All8Bit:= false;\n      if SampleBits[Channel] <> 16 then All16Bit:= false;\n    end;\n  end;\n\nvar\n  PaletteCnt,PaletteStride: LongWord;\n  PaletteValues: PWord;\n\n  AlphaChannel: integer;\n  PremultipliedAlpha: boolean;\n\n  procedure InitColor;\n  var Channel: LongWord;\n  begin\n    SetLength(ChannelValues, SampleCnt);\n    SetLength(LastChannelValues, SampleCnt);\n    for Channel := 0 to SampleCnt-1 do\n      LastChannelValues[Channel] := 0;\n  end;\n\n  procedure ReadNext16BitData(var Run: Pointer);\n  var Channel: PtrUInt;\n  begin\n    if FReverseEndian then\n    begin\n      if IFD.Predictor=2 then\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          {$PUSH}{$Q-}\n          //Inc(ChannelValues[Channel],Swap(Word(Run^)));   original\n          LastChannelValues[Channel] := LastChannelValues[Channel]+Swap(Word(Run^));\n          ChannelValues[Channel] :=LastChannelValues[Channel];\n          {$POP}\n          inc(Run, 2);\n        end;\n      end else\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          ChannelValues[Channel] := Swap(Word(Run^));\n          inc(Run, 2);\n        end;\n      end;\n    end else\n    begin\n      if IFD.Predictor=2 then\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          {$PUSH}{$Q-}\n          //Inc(ChannelValues[Channel],Word(Run^)); original\n          LastChannelValues[Channel] := (LastChannelValues[Channel]+Word(Run^));\n          ChannelValues[Channel] :=LastChannelValues[Channel];\n          {$POP}\n          inc(Run, 2);\n        end;\n      end else\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          ChannelValues[Channel] := Word(Run^);\n          inc(Run, 2);\n        end;\n      end;\n    end;\n  end;\n\n  procedure ReadNext8BitData(var Run: Pointer);\n  var Channel: PtrUInt;\n  begin\n    if IFD.Predictor=2 then\n    begin\n      for Channel := 0 to SampleCnt-1 do\n      begin\n        {$PUSH}{$Q-}\n        LastChannelValues[Channel] := (LastChannelValues[Channel]+Byte(Run^)) and $ff;\n        ChannelValues[Channel] := LastChannelValues[Channel]+(LastChannelValues[Channel] shl 8);\n        {$POP}\n        inc(Run);\n      end;\n    end else\n    begin\n      for Channel := 0 to SampleCnt-1 do\n      begin\n        ChannelValues[Channel] := Byte(Run^)+(Byte(Run^) shl 8);\n        inc(Run);\n      end;\n    end;\n  end;\n\n  procedure ReadNextPixelData(var Run: Pointer; var BitPos: byte);\n  var Channel: LongWord;\n  begin\n    for Channel := 0 to SampleCnt-1 do\n      ReadImgValue(SampleBits[Channel], Run,BitPos,IFD.FillOrder,\n                   IFD.Predictor,LastChannelValues[Channel],\n                   ChannelValues[Channel]);\n  end;\n\n  procedure GetPixelAsLab(out lab: TLabA);\n  begin\n    lab.L := 0;\n    lab.a := 0;\n    lab.b := 0;\n    lab.alpha := 1;\n\n    case IFD.PhotoMetricInterpretation of\n    8: begin\n         case IFD.GrayBits of\n           8,16: lab.L := ChannelValues[0]*(100/65535);\n           0:begin\n               lab.L := ChannelValues[0]*(100/65535);\n               case IFD.RedBits of\n                 16: lab.a := SmallInt(ChannelValues[1])/256;\n                 8: lab.a := ShortInt(ChannelValues[1] shr 8);\n               end;\n               case IFD.BlueBits of\n                 16: lab.b := SmallInt(ChannelValues[2])/256;\n                 8: lab.b := ShortInt(ChannelValues[2] shr 8);\n               end;\n             end;\n         end;\n       end;\n    9: begin\n         case IFD.GrayBits of\n           16: lab.L := ChannelValues[0]*(100/65280);\n           8: lab.L := ChannelValues[0]*(100/65535);\n           0:begin\n               case IFD.GreenBits of\n                 16: lab.L := ChannelValues[0]*(100/65280);\n                 8: lab.L := ChannelValues[0]*(100/65535);\n               end;\n               case IFD.RedBits of\n                 16: lab.a := (ChannelValues[1]-32768)/256;\n                 8: lab.a := (ChannelValues[1] shr 8)-128;\n               end;\n               case IFD.BlueBits of\n                 16: lab.b := (ChannelValues[2]-32768)/256;\n                 8: lab.b := (ChannelValues[2] shr 8)-128;\n               end;\n             end;\n         end;\n       end;\n     //10: ITULAB: ITU L*a*b*\n     //32844: LOGL: CIE Log2(L)\n     //32845: LOGLUV: CIE Log2(L) (u',v')\n    else\n      TiffError('PhotometricInterpretation='+IntToStr(IFD.PhotoMetricInterpretation)+' not supported');\n    end;\n\n    if AlphaChannel >= 0 then\n      lab.alpha:= ChannelValues[AlphaChannel]/65535;\n  end;\n\nvar\n  FPColorValue: TFPColor;\n\n  procedure GetPixelAsFPColor;\n  var PaletteIndex: LongWord;\n    GrayValue: Word;\n    lab: TLabA;\n    cmyk: TStdCMYK;\n    ycbcr :TYCbCr601;\n  begin\n    if IFD.PhotoMetricInterpretation >= 8 then\n    begin\n      GetPixelAsLab(lab);\n      FPColorValue.FromLabA(lab);\n      exit;\n    end;\n\n    case IFD.PhotoMetricInterpretation of\n    0,1: // 0:bilevel grayscale 0 is white; 1:0 is black\n      begin\n        GrayValue := ChannelValues[0];\n        if IFD.PhotoMetricInterpretation=0 then\n          GrayValue:=$ffff-GrayValue;\n        FPColorValue.red  := GrayValue;\n        FPColorValue.green:= GrayValue;\n        FPColorValue.blue := GrayValue;\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    2: // RGB(A)\n      begin\n        FPColorValue.red  := ChannelValues[0];\n        FPColorValue.green:= ChannelValues[1];\n        FPColorValue.blue := ChannelValues[2];\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    3: //3 Palette/color map indexed\n      begin\n        PaletteIndex := ChannelValues[0] shr (16 - SampleBits[0]);\n        FPColorValue.red  := PaletteValues[PaletteIndex];\n        FPColorValue.green:= PaletteValues[PaletteIndex+PaletteStride];\n        FPColorValue.blue := PaletteValues[PaletteIndex+2*PaletteStride];\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    //4 Mask/holdout mask (obsolete by TIFF 6.0 specification)\n\n    5: // CMYK plus optional alpha\n      begin\n        //FPColorValue:=CMYKToFPColor(ChannelValues[0],ChannelValues[1],ChannelValues[2],ChannelValues[3]); test the differences\n        cmyk :=TStdCMYK.New(ChannelValues[0]/$ffff, ChannelValues[1]/$ffff, ChannelValues[2]/$ffff, ChannelValues[3]/$ffff);\n        FPColorValue :=cmyk.ToExpandedPixel.ToFPColor(true); //MaxM: in Future we can use GammaCompression\n      end;\n\n    6: // YCBCR: CCIR 601\n      begin\n        ycbcr :=TYCbCr601.New(ChannelValues[0]/$ffff, ChannelValues[1]/$ffff, ChannelValues[2]/$ffff);\n        FPColorValue :=ycbcr.ToFPColor;\n      end;\n\n    else\n      TiffError('PhotometricInterpretation='+IntToStr(IFD.PhotoMetricInterpretation)+' not supported');\n    end;\n\n    if AlphaChannel >= 0 then\n    begin\n      FPColorValue.alpha:= ChannelValues[AlphaChannel];\n      if PremultipliedAlpha and (FPColorValue.alpha <> alphaOpaque) and (FPColorValue.alpha <> 0) then\n      begin\n        FPColorValue.red := (FPColorValue.red * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n        FPColorValue.green := (FPColorValue.green * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n        FPColorValue.blue := (FPColorValue.blue * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n      end;\n    end;\n  end;\n\nvar\n  ChunkOffsets: PLongWord;\n  ChunkByteCounts: PLongWord;\n  Chunk: PByte;\n  ChunkCount: LongWord;\n  ChunkIndex: LongWord;\n  CurCount: LongWord;\n  CurOffset: LongWord;\n  CurByteCnt: PtrInt;\n  Run: PByte;\n  BitPos: Byte;\n  x, y, cx, cy, dx1,dy1, dx2,dy2, sx, sy: integer;\n  SampleBitsPerPixel: LongWord;\n  CurFPImg: TFPCustomImage;\n  aContinue, ConvertFromLab: Boolean;\n  ExpectedChunkLength: PtrInt;\n  ChunkType: TTiffChunkType;\n  TilesAcross, TilesDown: LongWord;\n  ChunkLeft, ChunkTop, ChunkWidth, ChunkHeight: LongWord;\n  ChunkBytesPerLine: LongWord;\n\n  LabArray: array of TLabA;\n  ConversionFromLab: TBridgedConversion;\n  DestStride: PtrInt;\n  PDest: PByte;\n  CurPixelValue: TBGRAPixel;\n\n  procedure ComputeDestStride;\n  begin\n    DestStride := dy1*TCustomUniversalBitmap(CurFPImg).RowSize;\n    if TCustomUniversalBitmap(CurFPImg).LineOrder = riloBottomToTop then\n      DestStride := -DestStride;\n    inc(DestStride, dx1*PtrInt(TCustomUniversalBitmap(CurFPImg).Colorspace.GetSize));\n  end;\n\n  procedure ReadResolutionValues;\n  begin\n    {$IF FPC_FULLVERSION<30203}\n    if (CurFPImg is TCustomUniversalBitmap) then\n    with TCustomUniversalBitmap(CurFPImg) do\n    {$ELSE}\n    with CurFPImg do\n    {$ENDIF}\n    begin\n        ResolutionUnit :=TifResolutionUnitToResolutionUnit(IFD.ResolutionUnit);\n        if (IFD.XResolution.Denominator>0)\n        then ResolutionX :=IFD.XResolution.Numerator/IFD.XResolution.Denominator\n        else ResolutionX :=IFD.XResolution.Numerator;\n        if (IFD.YResolution.Denominator>0)\n        then ResolutionY :=IFD.YResolution.Numerator/IFD.YResolution.Denominator\n        else ResolutionY :=IFD.YResolution.Numerator;\n     end;\n  end;\n\nbegin\n  if (IFD.ImageWidth=0) or (IFD.ImageHeight=0) then\n    exit;\n\n  if IFD.PhotoMetricInterpretation=High(IFD.PhotoMetricInterpretation) then\n    TiffError('missing PhotometricInterpretation');\n  if IFD.BitsPerSample=0 then\n    TiffError('missing BitsPerSample');\n  if IFD.TileWidth>0 then begin\n    ChunkType:=tctTile;\n    if IFD.TileLength=0 then\n      TiffError('missing TileLength');\n    if IFD.TileOffsets=0 then\n      TiffError('missing TileOffsets');\n    if IFD.TileByteCounts=0 then\n      TiffError('missing TileByteCounts');\n  end else begin\n    ChunkType:=tctStrip;\n    if IFD.RowsPerStrip=0 then\n      TiffError('missing RowsPerStrip');\n    if IFD.StripOffsets=0 then\n      TiffError('missing StripOffsets');\n    if IFD.StripByteCounts=0 then\n      TiffError('missing StripByteCounts');\n  end;\n\n  if IFD.PlanarConfiguration > 1 then\n     TiffError('Planar configuration not handled');\n\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('TBGRAReaderTiff.LoadImageFromStream reading ...');\n  {$endif}\n\n  ChunkOffsets:=nil;\n  ChunkByteCounts:=nil;\n  Chunk:=nil;\n  SampleBits:=nil;\n  try\n    // read chunk starts and sizes\n    if ChunkType=tctTile then begin\n      TilesAcross:=(IFD.ImageWidth+IFD.TileWidth-1) div IFD.TileWidth;\n      TilesDown:=(IFD.ImageHeight+IFD.TileLength-1) div IFD.TileLength;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.LoadImageFromStream TilesAcross=',TilesAcross,' TilesDown=',TilesDown);\n      {$endif}\n      ChunkCount := TilesAcross * TilesDown;\n      ReadShortOrLongValues(IFD.TileOffsets,ChunkOffsets,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of TileCounts is wrong');\n      ReadShortOrLongValues(IFD.TileByteCounts,ChunkByteCounts,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of TileByteCounts is wrong');\n    end else begin //strip\n      ChunkCount:=((IFD.ImageHeight-1) div IFD.RowsPerStrip)+1;\n      ReadShortOrLongValues(IFD.StripOffsets,ChunkOffsets,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of StripCounts is wrong');\n      ReadShortOrLongValues(IFD.StripByteCounts,ChunkByteCounts,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of StripByteCounts is wrong');\n    end;\n\n    // read image sample structure\n    ReadImageSampleProperties(IFD, AlphaChannel, PremultipliedAlpha,\n      SampleCnt, SampleBits, SampleBitsPerPixel,\n      PaletteCnt, PaletteValues);\n\n    PaletteStride := PaletteCnt div 3;\n    CheckBitCount;\n\n    // create FPimage\n    DoCreateImage(IFD);\n    if IFD.Img=nil then\n    begin\n      IFD.Img := BGRABitmapFactory.Create;\n      IFD.FreeImg := true;\n    end;\n    CurFPImg:=IFD.Img;\n    if CurFPImg=nil then exit;\n\n    //Resolution\n    ReadResolutionValues;\n\n    SetFPImgExtras(CurFPImg, IFD);\n\n    case IFD.Orientation of\n    0,1..4: CurFPImg.SetSize(IFD.ImageWidth,IFD.ImageHeight);\n    5..8: CurFPImg.SetSize(IFD.ImageHeight,IFD.ImageWidth);\n    end;\n\n    {$ifdef FPC_Debug_Image}\n    if Debug then\n      writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel);\n    {$endif}\n\n    LabArray := nil;\n    if (IFD.PhotoMetricInterpretation >= 8) and\n       (CurFPImg is TCustomUniversalBitmap) then\n    begin\n      ConvertFromLab := true;\n      ConversionFromLab := TLabAColorspace.GetBridgedConversion(TCustomUniversalBitmap(CurFPImg).Colorspace)\n    end else\n      ConvertFromLab := false;\n\n    // read chunks\n    for ChunkIndex:=0 to ChunkCount-1 do begin\n      CurOffset:=ChunkOffsets[ChunkIndex];\n      CurByteCnt:=ChunkByteCounts[ChunkIndex];\n      //writeln('TBGRAReaderTiff.LoadImageFromStream CurOffset=',CurOffset,' CurByteCnt=',CurByteCnt);\n      if CurByteCnt<=0 then continue;\n      ReAllocMem(Chunk,CurByteCnt);\n      SetStreamPos(CurOffset);\n      s.Read(Chunk^,CurByteCnt);\n\n      // decompress\n      if ChunkType=tctTile then\n        ExpectedChunkLength:=(SampleBitsPerPixel*IFD.TileWidth+7) div 8*IFD.TileLength\n      else\n        ExpectedChunkLength:=((SampleBitsPerPixel*IFD.ImageWidth+7) div 8)*IFD.RowsPerStrip;\n      case IFD.Compression of\n      TiffCompressionNone: ;\n      TiffCompressionPackBits: DecodePackBits(Chunk,CurByteCnt);\n      TiffCompressionLZW: DecodeLZW(Chunk,CurByteCnt);\n      TiffCompressionDeflateAdobe,\n      TiffCompressionDeflateZLib: DecodeDeflate(Chunk,CurByteCnt,ExpectedChunkLength);\n      else\n        TiffError('compression '+TiffCompressionName(IFD.Compression)+' not supported yet');\n      end;\n      if CurByteCnt<=0 then continue;\n\n      // compute current chunk area\n      if ChunkType=tctTile then begin\n        ChunkLeft:=(ChunkIndex mod TilesAcross)*IFD.TileWidth;\n        ChunkTop:=(ChunkIndex div TilesAcross)*IFD.TileLength;\n        ChunkWidth:=Min(IFD.TileWidth,IFD.ImageWidth-ChunkLeft);\n        ChunkHeight:=Min(IFD.TileLength,IFD.ImageHeight-ChunkTop);\n        ChunkBytesPerLine:=(SampleBitsPerPixel*ChunkWidth+7) div 8;\n        ExpectedChunkLength:=ChunkBytesPerLine*ChunkHeight;\n        if CurByteCnt<ExpectedChunkLength then begin\n          //writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' y=',y,' IFD.TileWidth=',IFD.TileWidth,' IFD.TileLength=',IFD.TileLength,' ExpectedChunkLength=',ExpectedChunkLength,' CurByteCnt=',CurByteCnt);\n          TiffError('TBGRAReaderTiff.LoadImageFromStream Tile too short ByteCnt='+IntToStr(CurByteCnt)+' ChunkWidth='+IntToStr(ChunkWidth)+' ChunkHeight='+IntToStr(ChunkHeight)+' expected='+IntToStr(ExpectedChunkLength));\n        end else if CurByteCnt>ExpectedChunkLength then begin\n          // boundary tiles have padding\n          ChunkBytesPerLine:=(SampleBitsPerPixel*IFD.TileWidth+7) div 8;\n        end;\n      end else begin //tctStrip\n        ChunkLeft:=0;\n        ChunkTop:=IFD.RowsPerStrip*ChunkIndex;\n        ChunkWidth:=IFD.ImageWidth;\n        ChunkHeight:=Min(IFD.RowsPerStrip,IFD.ImageHeight-ChunkTop);\n        ChunkBytesPerLine:=(SampleBitsPerPixel*ChunkWidth+7) div 8;\n        ExpectedChunkLength:=ChunkBytesPerLine*ChunkHeight;\n        //writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' y=',y,' IFD.RowsPerStrip=',IFD.RowsPerStrip,' ExpectedChunkLength=',ExpectedChunkLength,' CurByteCnt=',CurByteCnt);\n        if CurByteCnt<ExpectedChunkLength then\n          TiffError('TBGRAReaderTiff.LoadImageFromStream Strip too short ByteCnt='+IntToStr(CurByteCnt)+' ChunkWidth='+IntToStr(ChunkWidth)+' ChunkHeight='+IntToStr(ChunkHeight)+' expected='+IntToStr(ExpectedChunkLength));\n      end;\n\n      // progress\n      aContinue:=true;\n      Progress(psRunning, 0, false, Rect(0,0,IFD.ImageWidth,ChunkTop), '', aContinue);\n      if not aContinue then break;\n\n      // Orientation\n      if IFD.Orientation in [1..4] then begin\n        sx:=ChunkLeft; sy:=ChunkTop;\n        dy1 := 0; dx2 := 0;\n        case IFD.Orientation of\n        1: begin dx1:=1; dy2:=1; end;// 0,0 is left, top\n        2: begin sx:=IFD.ImageWidth-sx-1; dx1:=-1; dy2:=1; end;// 0,0 is right, top\n        3: begin sx:=IFD.ImageWidth-sx-1; dx1:=-1; sy:=IFD.ImageHeight-sy-1; dy2:=-1; end;// 0,0 is right, bottom\n        4: begin dx1:=1; sy:=IFD.ImageHeight-sy-1; dy2:=-1; end;// 0,0 is left, bottom\n        end;\n      end else begin\n        // rotated\n        sx:=ChunkTop; sy:=ChunkLeft;\n        dx1 := 0; dy2 := 0;\n        case IFD.Orientation of\n        5: begin dy1:=1; dx2:=1; end;// 0,0 is top, left (rotated)\n        6: begin dy1:=1; sx:=IFD.ImageWidth-sx-1; dx2:=-1; end;// 0,0 is top, right (rotated)\n        7: begin sy:=IFD.ImageHeight-sy-1; dy1:=-1; sx:=IFD.ImageHeight-sx-1; dx2:=-1; end;// 0,0 is bottom, right (rotated)\n        8: begin sy:=IFD.ImageHeight-sy-1; dy1:=-1; dx2:=1; end;// 0,0 is bottom, left (rotated)\n        end;\n      end;\n\n      //writeln('TBGRAReaderTiff.LoadImageFromStream Chunk ',ChunkIndex,' ChunkLeft=',ChunkLeft,' ChunkTop=',ChunkTop,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' ChunkWidth=',ChunkWidth,' ChunkHeight=',ChunkHeight,' PaddingRight=',PaddingRight);\n      for cy:=0 to ChunkHeight-1 do begin\n        Run:=Chunk+ChunkBytesPerLine*cy;\n        BitPos := 0;\n        InitColor;\n        //writeln('TBGRAReaderTiff.LoadImageFromStream (x,y)=(',sx,',',sy,')');\n\n        if ConvertFromLab then\n        begin\n          if length(LabArray)<ChunkWidth then setlength(LabArray, ChunkWidth);\n\n          if All16Bit then\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNext16BitData(Run);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end else\n          if All8Bit then\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNext8BitData(Run);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end else\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNextPixelData(Run,BitPos);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end;\n\n          ComputeDestStride;\n          ConversionFromLab.Convert(@LabArray[0], TCustomUniversalBitmap(CurFPImg).GetPixelAddress(sx,sy),\n                                    ChunkWidth, sizeof(TLabA), DestStride, nil);\n        end else\n        begin\n          x:= sx;\n          y:= sy;\n          if All16Bit then\n          begin\n            if (CurFPImg is TBGRACustomBitmap) and (IFD.Predictor <> 2) then\n            begin\n              ComputeDestStride;\n              PDest := TBGRACustomBitmap(CurFPImg).GetPixelAddress(sx,sy);\n              if (IFD.PhotoMetricInterpretation = 0) and (SampleCnt = 1) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(not (PWord(Run)^));\n                  PBGRAPixel(PDest)^.green:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.blue:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 2);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 1) and (SampleCnt = 1) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(PWord(Run)^);\n                  PBGRAPixel(PDest)^.green:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.blue:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 2);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 2) and (SampleCnt = 3) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(PWord(Run)^);\n                  PBGRAPixel(PDest)^.green:= FastRoundDiv257(PWord(Run+2)^);\n                  PBGRAPixel(PDest)^.blue:= FastRoundDiv257(PWord(Run+4)^);\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 6);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              for cx:=0 to ChunkWidth-1 do begin\n                 ReadNext16BitData(Run);\n                 GetPixelAsFPColor;\n                 PBGRAPixel(PDest)^.red:= FastRoundDiv257(FPColorValue.red);\n                 PBGRAPixel(PDest)^.green:= FastRoundDiv257(FPColorValue.green);\n                 PBGRAPixel(PDest)^.blue:= FastRoundDiv257(FPColorValue.blue);\n                 PBGRAPixel(PDest)^.alpha:= FastRoundDiv257(FPColorValue.alpha);\n                 inc(PDest, DestStride);\n               end;\n            end else\n              for cx:=0 to ChunkWidth-1 do begin\n                ReadNext16BitData(Run);\n                GetPixelAsFPColor;\n                CurFPImg.Colors[x,y]:= FPColorValue;\n                // next column\n                inc(x,dx1);\n                inc(y,dy1);\n              end;\n          end else\n          if All8Bit then\n          begin\n            if CurFPImg is TBGRACustomBitmap then\n            begin\n              ComputeDestStride;\n              PDest := TBGRACustomBitmap(CurFPImg).GetPixelAddress(sx,sy);\n              if (IFD.PhotoMetricInterpretation = 0) and (SampleCnt = 1) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.green, run^);{$POP}\n                    PBGRAPixel(PDest)^.red:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.green:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= not (Run^);\n                  PBGRAPixel(PDest)^.green:= not (Run^);\n                  PBGRAPixel(PDest)^.blue:= not (Run^);\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 1) and (SampleCnt = 1) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.green, run^);{$POP}\n                    PBGRAPixel(PDest)^.red:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.green:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= Run^;\n                  PBGRAPixel(PDest)^.green:= Run^;\n                  PBGRAPixel(PDest)^.blue:= Run^;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 2) and (SampleCnt = 3) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.red, run^);{$POP}\n                    {$PUSH}{$R-}inc(CurPixelValue.green, (run+1)^);{$POP}\n                    {$PUSH}{$R-}inc(CurPixelValue.blue, (run+2)^);{$POP}\n                    PBGRAPixel(PDest)^.red:= CurPixelValue.red;\n                    PBGRAPixel(PDest)^.green:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= CurPixelValue.blue;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run,3);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= Run^;\n                  PBGRAPixel(PDest)^.green:= (Run+1)^;\n                  PBGRAPixel(PDest)^.blue:= (Run+2)^;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run,3);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              for cx:=0 to ChunkWidth-1 do begin\n                 ReadNext8BitData(Run);\n                 GetPixelAsFPColor;\n                 PBGRAPixel(PDest)^.red:= FPColorValue.red shr 8;\n                 PBGRAPixel(PDest)^.green:= FPColorValue.green shr 8;\n                 PBGRAPixel(PDest)^.blue:= FPColorValue.blue shr 8;\n                 PBGRAPixel(PDest)^.alpha:= FPColorValue.alpha shr 8;\n                 inc(PDest, DestStride);\n               end;\n            end else\n              for cx:=0 to ChunkWidth-1 do begin\n                ReadNext8BitData(Run);\n                GetPixelAsFPColor;\n                CurFPImg.Colors[x,y]:= FPColorValue;\n                // next column\n                inc(x,dx1);\n                inc(y,dy1);\n              end;\n          end else\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNextPixelData(Run,BitPos);\n              GetPixelAsFPColor;\n              CurFPImg.Colors[x,y]:= FPColorValue;\n              // next column\n              inc(x,dx1);\n              inc(y,dy1);\n            end;\n          end;\n        end;\n\n        // next line\n        inc(sx,dx2);\n        inc(sy,dy2);\n      end;\n      // next chunk\n    end;\n  finally\n    ReAllocMem(SampleBits,0);\n    ReAllocMem(ChunkOffsets,0);\n    ReAllocMem(ChunkByteCounts,0);\n    ReAllocMem(Chunk,0);\n    ReAllocMem(PaletteValues,0);\n  end;\nend;\n\nprocedure TBGRAReaderTiff.ReleaseStream;\nbegin\n  s := nil;\nend;\n\nfunction TBGRAReaderTiff.FixEndian(w: Word): Word; inline;\nbegin\n  if FReverseEndian then\n    Result:= SwapEndian(w)\n  else\n    result:= w;\nend;\n\nfunction TBGRAReaderTiff.FixEndian(d: LongWord): LongWord; inline;\nbegin\n  if FReverseEndian then\n    Result:= SwapEndian(d)\n  else\n    result:= d;\nend;\n\nprocedure TBGRAReaderTiff.DecodePackBits(var Buffer: Pointer; var Count: PtrInt);\nvar\n  NewBuffer: Pointer;\n  NewCount: PtrInt;\nbegin\n  DecompressPackBits(Buffer,Count,NewBuffer,NewCount);\n  FreeMem(Buffer);\n  Buffer:=NewBuffer;\n  Count:=NewCount;\nend;\n\nprocedure TBGRAReaderTiff.DecodeLZW(var Buffer: Pointer; var Count: PtrInt);\nvar\n  NewBuffer: Pointer;\n  NewCount: PtrInt;\nbegin\n  DecompressLZW(Buffer,Count,NewBuffer,NewCount);\n  FreeMem(Buffer);\n  Buffer:=NewBuffer;\n  Count:=NewCount;\nend;\n\nprocedure TBGRAReaderTiff.DecodeDeflate(var Buffer: Pointer; var Count: PtrInt;\n  ExpectedCount: PtrInt);\nvar\n  NewBuffer: PByte;\n  NewCount: LongWord;\n  ErrorMsg: String;\nbegin\n  ErrorMsg:='';\n  NewBuffer:=nil;\n  try\n    NewCount:=ExpectedCount;\n    if not DecompressDeflate(Buffer,Count,NewBuffer,NewCount,@ErrorMsg) then\n      TiffError(ErrorMsg);\n    FreeMem(Buffer);\n    Buffer:=NewBuffer;\n    Count:=NewCount;\n    NewBuffer:=nil;\n  finally\n    ReAllocMem(NewBuffer,0);\n  end;\nend;\n\nprocedure TBGRAReaderTiff.InternalRead(Str: TStream; AnImage: TFPCustomImage);\n// read the biggest image\nvar\n  aContinue: Boolean;\n  BestIFD: TTiffIFD;\nbegin\n  Clear;\n\n  // read header\n  aContinue:=true;\n  Progress(psStarting, 0, False, Rect(0,0,0,0), '', aContinue);\n  if not aContinue then exit;\n  LoadHeaderFromStream(Str);\n  LoadIFDsFromStream;\n\n  // find the biggest image\n  BestIFD := GetBiggestImage;\n  Progress(psRunning, 25, False, Rect(0,0,0,0), '', aContinue);\n  if not aContinue then exit;\n\n  // read image\n  if Assigned(BestIFD) then begin\n    BestIFD.Img := AnImage;\n    LoadImageFromStream(BestIFD);\n  end;\n\n  // end\n  Progress(psEnding, 100, False, Rect(0,0,0,0), '', aContinue);\nend;\n\nfunction TBGRAReaderTiff.InternalCheck(Str: TStream): boolean;\nvar\n  IFDStart: LongWord;\nbegin\n  try\n    s:=Str;\n    fStartPos:=s.Position;\n    Result:=ReadTiffHeader(true,IFDStart) and (IFDStart<>0);\n    s.Position:=fStartPos;\n  except\n    Result:=false;\n  end;\nend;\n\nprocedure TBGRAReaderTiff.DoCreateImage(ImgFileDir: TTiffIFD);\nbegin\n  if Assigned(OnCreateImage) then\n    OnCreateImage(Self,ImgFileDir);\nend;\n\nconstructor TBGRAReaderTiff.Create;\nbegin\n  ImageList:=TFPList.Create;\nend;\n\ndestructor TBGRAReaderTiff.Destroy;\nbegin\n  Clear;\n  FreeAndNil(ImageList);\n  inherited Destroy;\nend;\n\nprocedure TBGRAReaderTiff.Clear;\nvar\n  i: Integer;\n  Img: TTiffIFD;\nbegin\n  for i:=ImageCount-1 downto 0 do begin\n    Img:=Images[i];\n    ImageList.Delete(i);\n    Img.Free;\n  end;\n  FReverseEndian:=false;\n  FreeAndNil(FIFDList);\nend;\n\nprocedure DecompressPackBits(Buffer: Pointer; Count: PtrInt; out\n  NewBuffer: Pointer; out NewCount: PtrInt);\n{ Algorithm:\n    while not got the expected number of bytes\n      read one byte n\n      if n in 0..127 copy the next n+1 bytes\n      else if n in -127..-1 then copy the next byte 1-n times\n      else continue\n    end\n}\nvar\n  p: Pcint8;\n  n: cint8;\n  d: pcint8;\n  i,j: integer;\n  EndP: Pcint8;\nbegin\n  // compute NewCount\n  NewCount:=0;\n  NewBuffer:=nil;\n  if Count=0 then exit;\n  p:=Pcint8(Buffer);\n  EndP:=p+Count;\n  while p<EndP do begin\n    n:=p^;\n    case n of\n    0..127:   begin inc(NewCount,n+1);  inc(p,n+2); end; // copy the next n+1 bytes\n    -127..-1: begin inc(NewCount,1-n); inc(p,2);   end; // copy the next byte 1-n times\n    else inc(p); // noop\n    end;\n  end;\n\n  // decompress\n  if NewCount=0 then exit;\n  GetMem(NewBuffer,NewCount);\n  p:=Pcint8(Buffer);\n  d:=Pcint8(NewBuffer);\n  while p<EndP do begin\n    n:=p^;\n    case n of\n    0..127:\n      begin\n        // copy the next n+1 bytes\n        i:=n+1;\n        inc(NewCount,i);\n        inc(p);\n        System.Move(p^,d^,i);\n        inc(p,i);\n        inc(d,i);\n      end;\n    -127..-1:\n      begin\n        // copy the next byte 1-n times\n        i:=1-n;\n        inc(NewCount,i);\n        inc(p);\n        n:=p^;\n        for j:=0 to i-1 do\n          d[j]:=n;\n        inc(d,i);\n        inc(p);\n      end;\n    else inc(p); // noop\n    end;\n  end;\nend;\n\nprocedure DecompressLZW(Buffer: Pointer; Count: PtrInt; out NewBuffer: PByte;\n  out NewCount: PtrInt);\ntype\n  TLZWString = packed record\n    Count: integer;\n    Data: PByte;\n    ShortData: array[0..3] of byte;\n  end;\nconst\n  ClearCode = 256; // clear table, start with 9bit codes\n  EoiCode = 257;   // end of input\n  NoCode = $7fff;\nvar\n  NewCapacity: PtrInt;\n  SrcPos: PtrInt;\n  CodeBuffer: LongWord;\n  CodeBufferLength: byte;\n  CurBitLength: byte;\n  Code: Word;\n  Table: array[0..4096-258-1] of TLZWString;\n  TableCount: integer;\n  OldCode: Word;\n  BigEndian: boolean;\n  TableMargin: byte;\n\n  procedure Error(const Msg: string);\n  begin\n    raise Exception.Create(Msg);\n  end;\n\n  function GetNextCode: Word;\n  begin\n    while CurBitLength > CodeBufferLength do\n    begin\n      if SrcPos >= Count then\n      begin\n        result := EoiCode;\n        exit;\n      end;\n      If BigEndian then\n        CodeBuffer := (CodeBuffer shl 8) or PByte(Buffer)[SrcPos]\n      else\n        CodeBuffer := CodeBuffer or (LongWord(PByte(Buffer)[SrcPos]) shl CodeBufferLength);\n      Inc(SrcPos);\n      Inc(CodeBufferLength, 8);\n    end;\n\n    if BigEndian then\n    begin\n      result := CodeBuffer shr (CodeBufferLength-CurBitLength);\n      Dec(CodeBufferLength, CurBitLength);\n      CodeBuffer := CodeBuffer and ((1 shl CodeBufferLength) - 1);\n    end else\n    begin\n      result := CodeBuffer and ((1 shl CurBitLength)-1);\n      Dec(CodeBufferLength, CurBitLength);\n      CodeBuffer := CodeBuffer shr CurBitLength;\n    end;\n  end;\n\n  procedure ClearTable;\n  var\n    i: Integer;\n  begin\n    for i:=0 to TableCount-1 do\n      if Table[i].Data <> @Table[i].ShortData then\n        ReAllocMem(Table[i].Data,0);\n    TableCount:=0;\n  end;\n\n  procedure InitializeTable;\n  begin\n    CurBitLength:=9;\n    ClearTable;\n  end;\n\n  function IsInTable(Code: word): boolean;\n  begin\n    Result:=Code<258+TableCount;\n  end;\n\n  procedure WriteStringFromCode(Code: integer; AddFirstChar: boolean = false);\n  var\n    s: TLZWString;\n  begin\n    //WriteLn('WriteStringFromCode Code=',Code,' AddFirstChar=',AddFirstChar,' x=',(NewCount div 4) mod IFD.ImageWidth,' y=',(NewCount div 4) div IFD.ImageWidth,' PixelByte=',NewCount mod 4);\n    if Code<256 then begin\n      // write byte\n      s.ShortData[0] := code;\n      s.Data:=@s.ShortData;\n      s.Count:=1;\n    end else if Code>=258 then begin\n      // write string\n      if Code-258>=TableCount then\n        Error('LZW code out of bounds');\n      s:=Table[Code-258];\n    end else\n      Error('LZW code out of bounds');\n    if NewCount+s.Count+1>NewCapacity then begin\n      NewCapacity:=NewCapacity*2+8;\n      ReAllocMem(NewBuffer,NewCapacity);\n    end;\n    System.Move(s.Data^,NewBuffer[NewCount],s.Count);\n    //for i:=0 to s.Count-1 do write(HexStr(NewBuffer[NewCount+i],2)); // debug\n    inc(NewCount,s.Count);\n    if AddFirstChar then begin\n      NewBuffer[NewCount]:=s.Data^;\n      //write(HexStr(NewBuffer[NewCount],2)); // debug\n      inc(NewCount);\n    end;\n    //writeln(',WriteStringFromCode'); // debug\n  end;\n\n  procedure AddStringToTable(Code, AddFirstCharFromCode: integer);\n  // add string from code plus first character of string from code as new string\n  var\n    s1, s2: TLZWString;\n    p: PByte;\n    NewCount: integer;\n  begin\n    //WriteLn('AddStringToTable Code=',Code,' FCFCode=',AddFirstCharFromCode,' TableCount=',TableCount);\n    //check whether can store more codes or not\n    if TableCount=high(Table)+1 then exit;\n    // find string 1\n    if Code<256 then begin\n      // string is byte\n      s1.ShortData[0] := code;\n      s1.Data:=@s1.ShortData;\n      s1.Count:=1;\n    end else if Code>=258 then begin\n      // normal string\n      if Code-258>=TableCount then\n        Error('LZW code out of bounds');\n      s1:=Table[Code-258];\n    end else\n      Error('LZW code out of bounds');\n    // find string 2\n    if AddFirstCharFromCode<256 then begin\n      // string is byte\n      s2.ShortData[0] := AddFirstCharFromCode;\n      s2.Data:=@s2.ShortData;\n      s2.Count:=1;\n    end else begin\n      // normal string\n      if AddFirstCharFromCode-258>=TableCount then\n        Error('LZW code out of bounds');\n      s2:=Table[AddFirstCharFromCode-258];\n    end;\n    // set new table entry\n    NewCount := s1.Count+1;\n    Table[TableCount].Count:= NewCount;\n    if NewCount > 4 then\n    begin\n      p:=nil;\n      GetMem(p,NewCount);\n    end else\n      p := @Table[TableCount].ShortData;\n    Table[TableCount].Data:=p;\n    System.Move(s1.Data^,p^,s1.Count);\n    // add first character from string 2\n    p[s1.Count]:=s2.Data^;\n    // increase TableCount\n    inc(TableCount);\n    case TableCount+258+TableMargin of\n    512,1024,2048: begin\n        //check if there is room for a greater code\n        if (Count-SrcPos) shl 3 + integer(CodeBufferLength) > integer(CurBitLength) then\n          inc(CurBitLength);\n      end;\n    end;\n  end;\n\nbegin\n  NewBuffer:=nil;\n  NewCount:=0;\n  if Count=0 then exit;\n  //WriteLn('DecompressLZW START Count=',Count);\n  //for SrcPos:=0 to 19 do\n  //  write(HexStr(PByte(Buffer)[SrcPos],2));\n  //writeln();\n\n  NewCapacity:=Count*2;\n  ReAllocMem(NewBuffer,NewCapacity);\n\n  if PByte(Buffer)[0] = $80 then\n  begin\n    BigEndian := true; //endian-ness of LZW is not necessarily consistent with the rest of the file\n    TableMargin := 1; //keep one free code to be able to write EOI code\n  end else\n  begin\n    BigEndian := false;\n    TableMargin := 0;\n  end;\n  SrcPos:=0;\n  CurBitLength:=9;\n  CodeBufferLength := 0;\n  CodeBuffer := 0;\n  TableCount:=0;\n  OldCode := NoCode;\n  try\n    repeat\n      Code:=GetNextCode;\n      //WriteLn('DecompressLZW Code=',Code);\n      if Code=EoiCode then break;\n      if Code=ClearCode then begin\n        InitializeTable;\n        Code:=GetNextCode;\n        //WriteLn('DecompressLZW after clear Code=',Code);\n        if Code=EoiCode then break;\n        if Code=ClearCode then\n          Error('LZW code out of bounds');\n        WriteStringFromCode(Code);\n        OldCode:=Code;\n      end else begin\n        if Code<TableCount+258 then begin\n          WriteStringFromCode(Code);\n          if OldCode <> NoCode then\n            AddStringToTable(OldCode,Code);\n          OldCode:=Code;\n        end else if (Code=TableCount+258) and (OldCode <> NoCode) then begin\n          WriteStringFromCode(OldCode,true);\n          AddStringToTable(OldCode,OldCode);\n          OldCode:=Code;\n        end else\n          Error('LZW code out of bounds');\n      end;\n    until false;\n  finally\n    ClearTable;\n  end;\n\n  ReAllocMem(NewBuffer,NewCount);\nend;\n\nfunction DecompressDeflate(Compressed: PByte; CompressedCount: LongWord;\n  out Decompressed: PByte; var DecompressedCount: LongWord;\n  ErrorMsg: PAnsiString = nil): boolean;\nvar\n  stream : z_stream;\n  err : integer;\nbegin\n  Result:=false;\n\n  //writeln('DecompressDeflate START');\n  Decompressed:=nil;\n  if CompressedCount=0 then begin\n    DecompressedCount:=0;\n    exit;\n  end;\n\n  err := inflateInit(stream{%H-});\n  if err <> Z_OK then begin\n    if ErrorMsg<>nil then\n      ErrorMsg^:='inflateInit failed';\n    exit;\n  end;\n\n  // set input = compressed data\n  stream.avail_in := CompressedCount;\n  stream.next_in  := Compressed;\n\n  // set output = decompressed data\n  if DecompressedCount=0 then\n    DecompressedCount:=CompressedCount;\n  Getmem(Decompressed,DecompressedCount);\n  stream.avail_out := DecompressedCount;\n  stream.next_out := Decompressed;\n\n  // Finish the stream\n  while TRUE do begin\n    //writeln('run: total_in=',stream.total_in,' avail_in=',stream.avail_in,' total_out=',stream.total_out,' avail_out=',stream.avail_out);\n    if (stream.avail_out=0) then begin\n      // need more space\n      if DecompressedCount<128 then\n        DecompressedCount:=DecompressedCount+128\n      else if DecompressedCount>High(DecompressedCount)-1024 then begin\n        if ErrorMsg<>nil then\n          ErrorMsg^:='inflate decompression failed, because not enough space';\n        exit;\n      end else\n        DecompressedCount:=DecompressedCount*2;\n      ReAllocMem(Decompressed,DecompressedCount);\n      stream.next_out:=Decompressed+stream.total_out;\n      stream.avail_out:=DecompressedCount-stream.total_out;\n    end;\n    err := inflate(stream, Z_NO_FLUSH);\n    if err = Z_STREAM_END then\n      break;\n    if err<>Z_OK then begin\n      if ErrorMsg<>nil then\n        ErrorMsg^:='inflate finish failed';\n      exit;\n    end;\n  end;\n\n  //writeln('decompressed: total_in=',stream.total_in,' total_out=',stream.total_out);\n  DecompressedCount:=stream.total_out;\n  ReAllocMem(Decompressed,DecompressedCount);\n\n  err := inflateEnd(stream);\n  if err<>Z_OK then begin\n    if ErrorMsg<>nil then\n      ErrorMsg^:='inflateEnd failed';\n    exit;\n  end;\n  Result:=true;\nend;\n\nfunction TifResolutionUnitToResolutionUnit(ATifResolutionUnit: DWord): TResolutionUnit;\nbegin\n  Case ATifResolutionUnit of\n  2: Result :=ruPixelsPerInch;\n  3: Result :=ruPixelsPerCentimeter;\n  else Result :=ruNone;\n  end;\nend;\n\nfunction ResolutionUnitToTifResolutionUnit(AResolutionUnit: TResolutionUnit): DWord;\nbegin\n  Case AResolutionUnit of\n  ruPixelsPerInch: Result :=2;\n  ruPixelsPerCentimeter: Result :=3;\n  else Result :=1;\n  end;\nend;\n\n{$ELSE}\n\nprocedure TBGRAReaderTiff.LoadImageFromStream(IFD: TTiffIFD);\nvar\n  SampleCnt: SizeUInt;\n  SampleBits: PWord;\n  ChannelValues, LastChannelValues: array of word;\n  All8Bit, All16Bit: boolean;\n\n  procedure CheckBitCount;\n  var\n    Channel: LongWord;\n  begin\n    All8Bit := true;\n    All16Bit := true;\n    for Channel := 0 to SampleCnt-1 do\n    begin\n      if SampleBits[Channel] <> 8 then All8Bit:= false;\n      if SampleBits[Channel] <> 16 then All16Bit:= false;\n    end;\n  end;\n\nvar\n  PaletteCnt,PaletteStride: SizeUInt;\n  PaletteValues: PWord;\n\n  AlphaChannel: integer;\n  PremultipliedAlpha: boolean;\n\n  procedure InitColor;\n  var Channel: LongWord;\n  begin\n    SetLength(ChannelValues, SampleCnt);\n    SetLength(LastChannelValues, SampleCnt);\n    for Channel := 0 to SampleCnt-1 do\n      LastChannelValues[Channel] := 0;\n  end;\n\n  procedure ReadNext16BitData(var Run: Pointer);\n  var Channel: PtrUInt;\n  begin\n    if ReverseEndian then\n    begin\n      if IFD.Predictor=2 then\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          {$PUSH}{$Q-}\n          //Inc(ChannelValues[Channel],Swap(Word(Run^)));   original\n          LastChannelValues[Channel] := LastChannelValues[Channel]+Swap(Word(Run^));\n          ChannelValues[Channel] :=LastChannelValues[Channel];\n          {$POP}\n          inc(Run, 2);\n        end;\n      end else\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          ChannelValues[Channel] := Swap(Word(Run^));\n          inc(Run, 2);\n        end;\n      end;\n    end else\n    begin\n      if IFD.Predictor=2 then\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          {$PUSH}{$Q-}\n          //Inc(ChannelValues[Channel],Word(Run^)); original\n          LastChannelValues[Channel] := (LastChannelValues[Channel]+Word(Run^));\n          ChannelValues[Channel] :=LastChannelValues[Channel];\n          {$POP}\n          inc(Run, 2);\n        end;\n      end else\n      begin\n        for Channel := 0 to SampleCnt-1 do\n        begin\n          ChannelValues[Channel] := Word(Run^);\n          inc(Run, 2);\n        end;\n      end;\n    end;\n  end;\n\n  procedure ReadNext8BitData(var Run: Pointer);\n  var Channel: PtrUInt;\n  begin\n    if IFD.Predictor=2 then\n    begin\n      for Channel := 0 to SampleCnt-1 do\n      begin\n        {$PUSH}{$Q-}\n        LastChannelValues[Channel] := (LastChannelValues[Channel]+Byte(Run^)) and $ff;\n        ChannelValues[Channel] := LastChannelValues[Channel]+(LastChannelValues[Channel] shl 8);\n        {$POP}\n        inc(Run);\n      end;\n    end else\n    begin\n      for Channel := 0 to SampleCnt-1 do\n      begin\n        ChannelValues[Channel] := Byte(Run^)+(Byte(Run^) shl 8);\n        inc(Run);\n      end;\n    end;\n  end;\n\n  procedure ReadNextPixelData(var Run: Pointer; var BitPos: byte);\n  var Channel: LongWord;\n  begin\n    for Channel := 0 to SampleCnt-1 do\n      ReadImgValue(SampleBits[Channel], Run,BitPos,IFD.FillOrder,\n                   IFD.Predictor,LastChannelValues[Channel],\n                   ChannelValues[Channel]);\n  end;\n\n  procedure GetPixelAsLab(out lab: TLabA);\n  begin\n    lab.L := 0;\n    lab.a := 0;\n    lab.b := 0;\n    lab.alpha := 1;\n\n    case IFD.PhotoMetricInterpretation of\n    8: begin\n         case IFD.GrayBits of\n           8,16: lab.L := ChannelValues[0]*(100/65535);\n           0:begin\n               lab.L := ChannelValues[0]*(100/65535);\n               case IFD.RedBits of\n                 16: lab.a := SmallInt(ChannelValues[1])/256;\n                 8: lab.a := ShortInt(ChannelValues[1] shr 8);\n               end;\n               case IFD.BlueBits of\n                 16: lab.b := SmallInt(ChannelValues[2])/256;\n                 8: lab.b := ShortInt(ChannelValues[2] shr 8);\n               end;\n             end;\n         end;\n       end;\n    9: begin\n         case IFD.GrayBits of\n           16: lab.L := ChannelValues[0]*(100/65280);\n           8: lab.L := ChannelValues[0]*(100/65535);\n           0:begin\n               case IFD.GreenBits of\n                 16: lab.L := ChannelValues[0]*(100/65280);\n                 8: lab.L := ChannelValues[0]*(100/65535);\n               end;\n               case IFD.RedBits of\n                 16: lab.a := (ChannelValues[1]-32768)/256;\n                 8: lab.a := (ChannelValues[1] shr 8)-128;\n               end;\n               case IFD.BlueBits of\n                 16: lab.b := (ChannelValues[2]-32768)/256;\n                 8: lab.b := (ChannelValues[2] shr 8)-128;\n               end;\n             end;\n         end;\n       end;\n     //10: ITULAB: ITU L*a*b*\n     //32844: LOGL: CIE Log2(L)\n     //32845: LOGLUV: CIE Log2(L) (u',v')\n    else\n      TiffError('PhotometricInterpretation='+IntToStr(IFD.PhotoMetricInterpretation)+' not supported');\n    end;\n\n    if AlphaChannel >= 0 then\n      lab.alpha:= ChannelValues[AlphaChannel]/65535;\n  end;\n\nvar\n  FPColorValue: TFPColor;\n\n  procedure GetPixelAsFPColor;\n  var PaletteIndex: LongWord;\n    GrayValue: Word;\n    lab: TLabA;\n    cmyk: TStdCMYK;\n    ycbcr: TYCbCr601;\n  begin\n    if IFD.PhotoMetricInterpretation >= 8 then\n    begin\n      GetPixelAsLab(lab);\n      //FPColorValue.FromLabA(lab);\n      FPColorValue :=lab.ToExpandedPixel.ToFPColor;\n      exit;\n    end;\n\n    case IFD.PhotoMetricInterpretation of\n    0,1: // 0:bilevel grayscale 0 is white; 1:0 is black\n      begin\n        GrayValue := ChannelValues[0];\n        if IFD.PhotoMetricInterpretation=0 then\n          GrayValue:=$ffff-GrayValue;\n        FPColorValue.red  := GrayValue;\n        FPColorValue.green:= GrayValue;\n        FPColorValue.blue := GrayValue;\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    2: // RGB(A)\n      begin\n        FPColorValue.red  := ChannelValues[0];\n        FPColorValue.green:= ChannelValues[1];\n        FPColorValue.blue := ChannelValues[2];\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    3: //3 Palette/color map indexed\n      begin\n        PaletteIndex := ChannelValues[0] shr (16 - SampleBits[0]);\n        FPColorValue.red  := PaletteValues[PaletteIndex];\n        FPColorValue.green:= PaletteValues[PaletteIndex+PaletteStride];\n        FPColorValue.blue := PaletteValues[PaletteIndex+2*PaletteStride];\n        FPColorValue.alpha := alphaOpaque;\n      end;\n\n    //4 Mask/holdout mask (obsolete by TIFF 6.0 specification)\n\n    5: // CMYK plus optional alpha\n      begin\n        cmyk :=TStdCMYK.New(ChannelValues[0]/$ffff, ChannelValues[1]/$ffff, ChannelValues[2]/$ffff, ChannelValues[3]/$ffff);\n        FPColorValue :=cmyk.ToExpandedPixel.ToFPColor(true); //Use of GammaCompression or direct?\n        //FPColorValue :=cmyk.ToFPColor;\n      end;\n\n    6: // YCBCR: CCIR 601\n      begin\n        ycbcr :=TYCbCr601.New(ChannelValues[0]/$ffff, ChannelValues[1]/$ffff, ChannelValues[2]/$ffff);\n\n        if IFD.YCbCr_LumaRed<>0\n        then FPColorValue :=YCbCr601ToStdRGBA(ycbcr, IFD.YCbCr_LumaRed, IFD.YCbCr_LumaGreen, IFD.YCbCr_LumaBlue, 1).ToFPColor\n        else FPColorValue :=ycbcr.ToFPColor;\n      end;\n\n    else\n      TiffError('PhotometricInterpretation='+IntToStr(IFD.PhotoMetricInterpretation)+' not supported');\n    end;\n\n    if AlphaChannel >= 0 then\n    begin\n      FPColorValue.alpha:= ChannelValues[AlphaChannel];\n      if PremultipliedAlpha and (FPColorValue.alpha <> alphaOpaque) and (FPColorValue.alpha <> 0) then\n      begin\n        FPColorValue.red := (FPColorValue.red * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n        FPColorValue.green := (FPColorValue.green * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n        FPColorValue.blue := (FPColorValue.blue * alphaOpaque + FPColorValue.alpha div 2) div FPColorValue.alpha;\n      end;\n    end;\n  end;\n\nvar\n  ChunkOffsets: Pointer;\n  ChunkByteCounts: PDWord;\n  Chunk: PByte;\n  ChunkCount: DWord;\n  ChunkIndex: DWord;\n  CurCount: SizeUInt;\n  CurOffset: SizeUInt;\n  CurByteCnt: PtrInt;\n  Run: PByte;\n  BitPos: Byte;\n  x, y, cx, cy, dx1,dy1, dx2,dy2, sx, sy: integer;\n  SampleBitsPerPixel: DWord;\n  CurFPImg: TFPCustomImage;\n  aContinue, ConvertFromLab: Boolean;\n  ExpectedChunkLength: PtrInt;\n  ChunkType: TTiffChunkType;\n  TilesAcross, TilesDown: DWord;\n  ChunkLeft, ChunkTop, ChunkWidth, ChunkHeight: DWord;\n  ChunkBytesPerLine: DWord;\n\n  LabArray: array of TLabA;\n  ConversionFromLab: TBridgedConversion;\n  DestStride: PtrInt;\n  PDest: PByte;\n  CurPixelValue: TBGRAPixel;\n\n  procedure ComputeDestStride;\n  begin\n    DestStride := dy1*TCustomUniversalBitmap(CurFPImg).RowSize;\n    if TCustomUniversalBitmap(CurFPImg).LineOrder = riloBottomToTop then\n      DestStride := -DestStride;\n    inc(DestStride, dx1*PtrInt(TCustomUniversalBitmap(CurFPImg).Colorspace.GetSize));\n  end;\n\n  procedure ReadResolutionValues;\n  begin\n    {$IF FPC_FULLVERSION<30203}\n    if (CurFPImg is TCustomUniversalBitmap) then\n    with TCustomUniversalBitmap(CurFPImg) do\n    {$ELSE}\n    with CurFPImg do\n    {$ENDIF}\n    begin\n        ResolutionUnit :=TifResolutionUnitToResolutionUnit(IFD.ResolutionUnit);\n        if (IFD.XResolution.Denominator>0)\n        then ResolutionX :=IFD.XResolution.Numerator/IFD.XResolution.Denominator\n        else ResolutionX :=IFD.XResolution.Numerator;\n        if (IFD.YResolution.Denominator>0)\n        then ResolutionY :=IFD.YResolution.Numerator/IFD.YResolution.Denominator\n        else ResolutionY :=IFD.YResolution.Numerator;\n     end;\n  end;\n\nbegin\n  if (IFD.ImageWidth=0) or (IFD.ImageHeight=0) then\n    exit;\n\n  if IFD.PhotoMetricInterpretation=High(IFD.PhotoMetricInterpretation) then\n    TiffError('missing PhotometricInterpretation');\n  if IFD.BitsPerSample=0 then\n    TiffError('missing BitsPerSample');\n  if IFD.TileWidth>0 then begin\n    ChunkType:=tctTile;\n    if IFD.TileLength=0 then\n      TiffError('missing TileLength');\n    if IFD.TileOffsets=0 then\n      TiffError('missing TileOffsets');\n    if IFD.TileByteCounts=0 then\n      TiffError('missing TileByteCounts');\n  end else begin\n    ChunkType:=tctStrip;\n    if IFD.RowsPerStrip=0 then\n      TiffError('missing RowsPerStrip');\n    if IFD.StripOffsets=0 then\n      TiffError('missing StripOffsets');\n    if IFD.StripByteCounts=0 then\n      TiffError('missing StripByteCounts');\n  end;\n\n  if IFD.PlanarConfiguration > 1 then\n     TiffError('Planar configuration not handled');\n\n  {$ifdef FPC_Debug_Image}\n  if Debug then\n    writeln('TBGRAReaderTiff.LoadImageFromStream reading ...');\n  {$endif}\n\n  ChunkOffsets:=nil;\n  ChunkByteCounts:=nil;\n  Chunk:=nil;\n  SampleBits:=nil;\n  try\n    // read chunk starts and sizes\n    if ChunkType=tctTile then begin\n      TilesAcross:=(IFD.ImageWidth+IFD.TileWidth-1) div IFD.TileWidth;\n      TilesDown:=(IFD.ImageHeight+IFD.TileLength-1) div IFD.TileLength;\n      {$ifdef FPC_Debug_Image}\n      if Debug then\n        writeln('TBGRAReaderTiff.LoadImageFromStream TilesAcross=',TilesAcross,' TilesDown=',TilesDown);\n      {$endif}\n      ChunkCount := TilesAcross * TilesDown;\n      ReadShortOrLongValues(IFD.TileOffsets,ChunkOffsets,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of TileCounts is wrong');\n      ReadShortOrLongValues(IFD.TileByteCounts,ChunkByteCounts,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of TileByteCounts is wrong');\n    end else begin //strip\n      ChunkCount:=((IFD.ImageHeight-1) div IFD.RowsPerStrip)+1;\n      ReadShortOrLongValues(IFD.StripOffsets,ChunkOffsets,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of StripOffsets is wrong');\n      ReadShortOrLongValues(IFD.StripByteCounts,ChunkByteCounts,CurCount);\n      if CurCount<ChunkCount then\n        TiffError('number of StripByteCounts is wrong');\n    end;\n\n    // read image sample structure\n    ReadImageSampleProperties(IFD, AlphaChannel, PremultipliedAlpha,\n      SampleCnt, SampleBits, SampleBitsPerPixel,\n      PaletteCnt, PaletteValues);\n\n    PaletteStride := PaletteCnt div 3;\n    CheckBitCount;\n\n    // create FPimage\n    DoCreateImage(IFD);\n    if IFD.Img=nil then\n    begin\n      IFD.Img := BGRABitmapFactory.Create;\n      IFD.FreeImg := true;\n    end;\n    CurFPImg:=IFD.Img;\n    if CurFPImg=nil then exit;\n\n    //Resolution\n    ReadResolutionValues;\n\n    SetFPImgExtras(CurFPImg, IFD);\n\n    case IFD.Orientation of\n    0,1..4: CurFPImg.SetSize(IFD.ImageWidth,IFD.ImageHeight);\n    5..8: CurFPImg.SetSize(IFD.ImageHeight,IFD.ImageWidth);\n    end;\n\n    {$ifdef FPC_Debug_Image}\n    if Debug then\n      writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel);\n    {$endif}\n\n    LabArray := nil;\n    if (IFD.PhotoMetricInterpretation >= 8) and\n       (CurFPImg is TCustomUniversalBitmap) then\n    begin\n      ConvertFromLab := true;\n      ConversionFromLab := TLabAColorspace.GetBridgedConversion(TCustomUniversalBitmap(CurFPImg).Colorspace)\n    end else\n      ConvertFromLab := false;\n\n    // read chunks\n    for ChunkIndex:=0 to ChunkCount-1 do begin\n      if BigTiff\n      then CurOffset:=PSizeUInt(ChunkOffsets)[ChunkIndex]\n      else CurOffset:=PDWord(ChunkOffsets)[ChunkIndex];\n\n      CurByteCnt:=ChunkByteCounts[ChunkIndex];\n\n      //writeln('TBGRAReaderTiff.LoadImageFromStream CurOffset=',CurOffset,' CurByteCnt=',CurByteCnt);\n      if CurByteCnt<=0 then continue;\n      ReAllocMem(Chunk,CurByteCnt);\n      SetStreamPos(CurOffset);\n      ReadBuffer(Chunk^,CurByteCnt);\n\n      // decompress\n      if ChunkType=tctTile then\n        ExpectedChunkLength:=(SampleBitsPerPixel*IFD.TileWidth+7) div 8*IFD.TileLength\n      else\n        ExpectedChunkLength:=((SampleBitsPerPixel*IFD.ImageWidth+7) div 8)*IFD.RowsPerStrip;\n      case IFD.Compression of\n      TiffCompressionNone: ;\n      TiffCompressionPackBits: DecodePackBits(Chunk,CurByteCnt);\n      TiffCompressionLZW: DecodeLZW(Chunk,CurByteCnt);\n      TiffCompressionDeflateAdobe,\n      TiffCompressionDeflateZLib: DecodeDeflate(Chunk,CurByteCnt,ExpectedChunkLength);\n      else\n        TiffError('compression '+TiffCompressionName(IFD.Compression)+' not supported yet');\n      end;\n      if CurByteCnt<=0 then continue;\n\n      // compute current chunk area\n      if ChunkType=tctTile then begin\n        ChunkLeft:=(ChunkIndex mod TilesAcross)*IFD.TileWidth;\n        ChunkTop:=(ChunkIndex div TilesAcross)*IFD.TileLength;\n        ChunkWidth:=Min(IFD.TileWidth,IFD.ImageWidth-ChunkLeft);\n        ChunkHeight:=Min(IFD.TileLength,IFD.ImageHeight-ChunkTop);\n        ChunkBytesPerLine:=(SampleBitsPerPixel*ChunkWidth+7) div 8;\n        ExpectedChunkLength:=ChunkBytesPerLine*ChunkHeight;\n        if CurByteCnt<ExpectedChunkLength then begin\n          //writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' y=',y,' IFD.TileWidth=',IFD.TileWidth,' IFD.TileLength=',IFD.TileLength,' ExpectedChunkLength=',ExpectedChunkLength,' CurByteCnt=',CurByteCnt);\n          TiffError('TBGRAReaderTiff.LoadImageFromStream Tile too short ByteCnt='+IntToStr(CurByteCnt)+' ChunkWidth='+IntToStr(ChunkWidth)+' ChunkHeight='+IntToStr(ChunkHeight)+' expected='+IntToStr(ExpectedChunkLength));\n        end else if CurByteCnt>ExpectedChunkLength then begin\n          // boundary tiles have padding\n          ChunkBytesPerLine:=(SampleBitsPerPixel*IFD.TileWidth+7) div 8;\n        end;\n      end else begin //tctStrip\n        ChunkLeft:=0;\n        ChunkTop:=IFD.RowsPerStrip*ChunkIndex;\n        ChunkWidth:=IFD.ImageWidth;\n        ChunkHeight:=Min(IFD.RowsPerStrip,IFD.ImageHeight-ChunkTop);\n        ChunkBytesPerLine:=(SampleBitsPerPixel*ChunkWidth+7) div 8;\n        ExpectedChunkLength:=ChunkBytesPerLine*ChunkHeight;\n        //writeln('TBGRAReaderTiff.LoadImageFromStream SampleBitsPerPixel=',SampleBitsPerPixel,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' y=',y,' IFD.RowsPerStrip=',IFD.RowsPerStrip,' ExpectedChunkLength=',ExpectedChunkLength,' CurByteCnt=',CurByteCnt);\n        if CurByteCnt<ExpectedChunkLength then\n          TiffError('TBGRAReaderTiff.LoadImageFromStream Strip too short ByteCnt='+IntToStr(CurByteCnt)+' ChunkWidth='+IntToStr(ChunkWidth)+' ChunkHeight='+IntToStr(ChunkHeight)+' expected='+IntToStr(ExpectedChunkLength));\n      end;\n\n      // progress\n      aContinue:=true;\n      Progress(psRunning, 0, false, Rect(0,0,IFD.ImageWidth,ChunkTop), '', aContinue);\n      if not aContinue then break;\n\n      // Orientation\n      if IFD.Orientation in [1..4] then begin\n        sx:=ChunkLeft; sy:=ChunkTop;\n        dy1 := 0; dx2 := 0;\n        case IFD.Orientation of\n        1: begin dx1:=1; dy2:=1; end;// 0,0 is left, top\n        2: begin sx:=IFD.ImageWidth-sx-1; dx1:=-1; dy2:=1; end;// 0,0 is right, top\n        3: begin sx:=IFD.ImageWidth-sx-1; dx1:=-1; sy:=IFD.ImageHeight-sy-1; dy2:=-1; end;// 0,0 is right, bottom\n        4: begin dx1:=1; sy:=IFD.ImageHeight-sy-1; dy2:=-1; end;// 0,0 is left, bottom\n        end;\n      end else begin\n        // rotated\n        sx:=ChunkTop; sy:=ChunkLeft;\n        dx1 := 0; dy2 := 0;\n        case IFD.Orientation of\n        5: begin dy1:=1; dx2:=1; end;// 0,0 is top, left (rotated)\n        6: begin dy1:=1; sx:=IFD.ImageWidth-sx-1; dx2:=-1; end;// 0,0 is top, right (rotated)\n        7: begin sy:=IFD.ImageHeight-sy-1; dy1:=-1; sx:=IFD.ImageHeight-sx-1; dx2:=-1; end;// 0,0 is bottom, right (rotated)\n        8: begin sy:=IFD.ImageHeight-sy-1; dy1:=-1; dx2:=1; end;// 0,0 is bottom, left (rotated)\n        end;\n      end;\n\n      //writeln('TBGRAReaderTiff.LoadImageFromStream Chunk ',ChunkIndex,' ChunkLeft=',ChunkLeft,' ChunkTop=',ChunkTop,' IFD.ImageWidth=',IFD.ImageWidth,' IFD.ImageHeight=',IFD.ImageHeight,' ChunkWidth=',ChunkWidth,' ChunkHeight=',ChunkHeight,' PaddingRight=',PaddingRight);\n      for cy:=0 to ChunkHeight-1 do begin\n        Run:=Chunk+ChunkBytesPerLine*cy;\n        BitPos := 0;\n        InitColor;\n        //writeln('TBGRAReaderTiff.LoadImageFromStream (x,y)=(',sx,',',sy,')');\n\n        if ConvertFromLab then\n        begin\n          if length(LabArray)<ChunkWidth then setlength(LabArray, ChunkWidth);\n\n          if All16Bit then\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNext16BitData(Run);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end else\n          if All8Bit then\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNext8BitData(Run);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end else\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNextPixelData(Run,BitPos);\n              GetPixelAsLab(LabArray[cx]);\n            end;\n          end;\n\n          ComputeDestStride;\n          ConversionFromLab.Convert(@LabArray[0], TCustomUniversalBitmap(CurFPImg).GetPixelAddress(sx,sy),\n                                    ChunkWidth, sizeof(TLabA), DestStride, nil);\n        end else\n        begin\n          x:= sx;\n          y:= sy;\n          if All16Bit then\n          begin\n            if (CurFPImg is TBGRACustomBitmap) and (IFD.Predictor <> 2) then\n            begin\n              ComputeDestStride;\n              PDest := TBGRACustomBitmap(CurFPImg).GetPixelAddress(sx,sy);\n              if (IFD.PhotoMetricInterpretation = 0) and (SampleCnt = 1) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(not (PWord(Run)^));\n                  PBGRAPixel(PDest)^.green:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.blue:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 2);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 1) and (SampleCnt = 1) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(PWord(Run)^);\n                  PBGRAPixel(PDest)^.green:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.blue:= PBGRAPixel(PDest)^.red;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 2);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 2) and (SampleCnt = 3) then\n              begin\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= FastRoundDiv257(PWord(Run)^);\n                  PBGRAPixel(PDest)^.green:= FastRoundDiv257(PWord(Run+2)^);\n                  PBGRAPixel(PDest)^.blue:= FastRoundDiv257(PWord(Run+4)^);\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run, 6);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              for cx:=0 to ChunkWidth-1 do begin\n                 ReadNext16BitData(Run);\n                 GetPixelAsFPColor;\n                 PBGRAPixel(PDest)^.red:= FastRoundDiv257(FPColorValue.red);\n                 PBGRAPixel(PDest)^.green:= FastRoundDiv257(FPColorValue.green);\n                 PBGRAPixel(PDest)^.blue:= FastRoundDiv257(FPColorValue.blue);\n                 PBGRAPixel(PDest)^.alpha:= FastRoundDiv257(FPColorValue.alpha);\n                 inc(PDest, DestStride);\n               end;\n            end else\n              for cx:=0 to ChunkWidth-1 do begin\n                ReadNext16BitData(Run);\n                GetPixelAsFPColor;\n                CurFPImg.Colors[x,y]:= FPColorValue;\n                // next column\n                inc(x,dx1);\n                inc(y,dy1);\n              end;\n          end else\n          if All8Bit then\n          begin\n            if CurFPImg is TBGRACustomBitmap then\n            begin\n              ComputeDestStride;\n              PDest := TBGRACustomBitmap(CurFPImg).GetPixelAddress(sx,sy);\n              if (IFD.PhotoMetricInterpretation = 0) and (SampleCnt = 1) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.green, run^);{$POP}\n                    PBGRAPixel(PDest)^.red:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.green:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= not CurPixelValue.green;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= not (Run^);\n                  PBGRAPixel(PDest)^.green:= not (Run^);\n                  PBGRAPixel(PDest)^.blue:= not (Run^);\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 1) and (SampleCnt = 1) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.green, run^);{$POP}\n                    PBGRAPixel(PDest)^.red:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.green:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= Run^;\n                  PBGRAPixel(PDest)^.green:= Run^;\n                  PBGRAPixel(PDest)^.blue:= Run^;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              if (IFD.PhotoMetricInterpretation = 2) and (SampleCnt = 3) then\n              begin\n                if IFD.Predictor = 2 then\n                begin\n                  CurPixelValue := BGRAPixelTransparent;\n                  for cx:=0 to ChunkWidth-1 do begin\n                    {$PUSH}{$R-}inc(CurPixelValue.red, run^);{$POP}\n                    {$PUSH}{$R-}inc(CurPixelValue.green, (run+1)^);{$POP}\n                    {$PUSH}{$R-}inc(CurPixelValue.blue, (run+2)^);{$POP}\n                    PBGRAPixel(PDest)^.red:= CurPixelValue.red;\n                    PBGRAPixel(PDest)^.green:= CurPixelValue.green;\n                    PBGRAPixel(PDest)^.blue:= CurPixelValue.blue;\n                    PBGRAPixel(PDest)^.alpha:= 255;\n                    inc(Run,3);\n                    inc(PDest, DestStride);\n                  end;\n                end else\n                for cx:=0 to ChunkWidth-1 do begin\n                  PBGRAPixel(PDest)^.red:= Run^;\n                  PBGRAPixel(PDest)^.green:= (Run+1)^;\n                  PBGRAPixel(PDest)^.blue:= (Run+2)^;\n                  PBGRAPixel(PDest)^.alpha:= 255;\n                  inc(Run,3);\n                  inc(PDest, DestStride);\n                end;\n              end else\n              for cx:=0 to ChunkWidth-1 do begin\n                 ReadNext8BitData(Run);\n                 GetPixelAsFPColor;\n                 PBGRAPixel(PDest)^.red:= FPColorValue.red shr 8;\n                 PBGRAPixel(PDest)^.green:= FPColorValue.green shr 8;\n                 PBGRAPixel(PDest)^.blue:= FPColorValue.blue shr 8;\n                 PBGRAPixel(PDest)^.alpha:= FPColorValue.alpha shr 8;\n                 inc(PDest, DestStride);\n               end;\n            end else\n              for cx:=0 to ChunkWidth-1 do begin\n                ReadNext8BitData(Run);\n                GetPixelAsFPColor;\n                CurFPImg.Colors[x,y]:= FPColorValue;\n                // next column\n                inc(x,dx1);\n                inc(y,dy1);\n              end;\n          end else\n          begin\n            for cx:=0 to ChunkWidth-1 do begin\n              ReadNextPixelData(Run,BitPos);\n              GetPixelAsFPColor;\n              CurFPImg.Colors[x,y]:= FPColorValue;\n              // next column\n              inc(x,dx1);\n              inc(y,dy1);\n            end;\n          end;\n        end;\n\n        // next line\n        inc(sx,dx2);\n        inc(sy,dy2);\n      end;\n      // next chunk\n    end;\n  finally\n    ReAllocMem(SampleBits,0);\n    ReAllocMem(ChunkOffsets,0);\n    ReAllocMem(ChunkByteCounts,0);\n    ReAllocMem(Chunk,0);\n    ReAllocMem(PaletteValues,0);\n  end;\nend;\n\n{$ENDIF}\n\ninitialization\n  BGRARegisterImageReader(ifTiff, TBGRAReaderTiff, True, TiffHandlerName, 'tif;tiff');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadwebp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Provides a reader for WebP format using libwebp }\nunit BGRAReadWebP;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPImage;\n\ntype\n  { Header for WebP files }\n  TWebPHeader = record\n    RIFFCode: array[1..4] of char;\n    FileSize: LongWord;\n    WebPCode: array[1..4] of char;\n  end;\n\n  { Reader for WebP image format }\n  TBGRAReaderWebP = class(TFPCustomImageReader)\n  protected\n    function ReadHeader(Str: TStream): TWebPHeader;\n    procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n    function InternalCheck(Str: TStream): boolean; override;\n  end;\n\nimplementation\n\nuses libwebp, BGRABitmapTypes;\n\nvar\n  MyLibWebPLoaded: boolean;\n\nprocedure NeedLibWebP;\nbegin\n  if not MyLibWebPLoaded then\n  begin\n    if not LibWebPLoad then\n      raise exception.Create('Cannot find libwebp library ('+LibWebPFilename+')');\n    MyLibWebPLoaded:= true;\n  end;\nend;\n\n{ TBGRAReaderWebP }\n\nfunction TBGRAReaderWebP.ReadHeader(Str: TStream): TWebPHeader;\nbegin\n  fillchar({%H-}result, sizeof({%H-}result), 0);\n  Str.Read(result, sizeof(result));\n  result.FileSize:= LEtoN(result.FileSize);\nend;\n\nprocedure TBGRAReaderWebP.InternalRead(Str: TStream; Img: TFPCustomImage);\nconst\n  CopySize = 65536;\nvar\n  header: TWebPHeader;\n  oldPos: Int64;\n  mem, p: PByte;\n  totalSize, remain: LongWord;\n  toRead, w, h, x, y: integer;\n  loadInto: TBGRACustomBitmap;\n  pbgra: PBGRAPixel;\n  ok: Boolean;\nbegin\n  NeedLibWebP;\n\n  oldPos := Str.Position;\n  header := ReadHeader(Str);\n  if (header.RIFFCode <> 'RIFF') or (header.WebPCode <> 'WEBP') then\n    raise exception.Create('Invalid header');\n  Str.Position:= OldPos;\n  totalSize := header.FileSize+8;\n  getmem(mem, totalSize);\n  loadInto := nil;\n  try\n    p := mem;\n    remain := totalSize;\n    while remain > 0 do\n    begin\n      if remain > CopySize then toRead := CopySize else\n        toRead := remain;\n      Str.ReadBuffer(p^, toRead);\n      inc(p, toRead);\n      dec(remain, toRead);\n    end;\n\n    if WebPGetInfo(mem, totalSize, @w, @h) = 0 then\n      raise exception.Create('Invalid WebP header');\n\n    Img.SetSize(w, h);\n    if Img is TBGRACustomBitmap then\n      loadInto := TBGRACustomBitmap(Img)\n    else\n      loadInto := BGRABitmapFactory.Create(w,h);\n    {$PUSH}{$WARNINGS OFF}\n    if TBGRAPixel_RGBAOrder then\n      ok := WebPDecodeRGBAInto(mem, totalSize, loadInto.DataByte, loadInto.RowSize*h, loadInto.RowSize)<>nil\n    else\n      ok := WebPDecodeBGRAInto(mem, totalSize, loadInto.DataByte, loadInto.RowSize*h, loadInto.RowSize)<>nil;\n    {$POP}\n    loadInto.InvalidateBitmap;\n    if not ok then raise exception.Create('Error decoding WebP');\n    if loadInto.LineOrder = riloBottomToTop then loadInto.VerticalFlip;\n    if Img <> loadInto then\n    begin\n      for y := 0 to h-1 do\n      begin\n        pbgra := loadInto.ScanLine[y];\n        for x := 0 to w-1 do\n        begin\n          Img.Colors[x,y] := pbgra^.ToFPColor;\n          inc(pbgra);\n        end;\n      end;\n    end;\n  finally\n    if Assigned(loadInto) and (loadInto <> Img) then loadInto.Free;\n    freemem(mem);\n  end;\nend;\n\nfunction TBGRAReaderWebP.InternalCheck(Str: TStream): boolean;\nvar\n  oldPos: Int64;\n  header: TWebPHeader;\nbegin\n  oldPos := Str.Position;\n  try\n    header := ReadHeader(Str);\n    result := (header.RIFFCode = 'RIFF') and (header.WebPCode = 'WEBP') and\n       (header.FileSize <= $FFFFFFF6) and (header.FileSize <= Str.Size-Str.Position+4);\n  finally\n    Str.Position:= OldPos;\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifWebP, TBGRAReaderWebP, True, 'WebP Image Format', 'webp');\n\nfinalization\n\n  if MyLibWebPLoaded then\n  begin\n    LibWebPUnload;\n    MyLibWebPLoaded:= false;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrareadxpm.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Reader for XPM format }\nunit BGRAReadXPM;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPReadXPM, FPimage;\n\ntype\n  { Reader for XPM image format }\n  TBGRAReaderXPM = class(TFPReaderXPM)\n    protected\n      procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;\n      function InternalCheck(Str: TStream): boolean; override;\n    public\n      class procedure ConvertToXPM3(ASource: TStream; ADestination: TStream); static;\n  end;\n\nimplementation\n\nuses BGRABitmapTypes;\n\n{ TBGRAReaderXPM }\n\nprocedure TBGRAReaderXPM.InternalRead(Str: TStream; Img: TFPCustomImage);\nvar tempStream: TMemoryStream;\nbegin\n  tempStream := TMemoryStream.Create;\n  try\n    ConvertToXPM3(Str, tempStream);\n    tempStream.Position:= 0;\n    try\n      img.UsePalette := true;\n      inherited InternalRead(tempStream, Img);\n    finally\n    end;\n  finally\n    tempStream.free;\n  end;\nend;\n\nfunction TBGRAReaderXPM.InternalCheck(Str: TStream): boolean;\nvar {%H-}magic : array[0..5] of char;\n    l : integer;\n    prevPos: int64;\nbegin\n  try\n    prevPos := str.Position;\n    l := str.Read ({%H-}magic[0],sizeof(magic));\n    str.Position:= prevPos;\n    result := (l = sizeof(magic)) and (magic = '! XPM2');\n    if not result then result := inherited InternalCheck(Str)\n  except\n    result := false;\n  end;\nend;\n\nclass procedure TBGRAReaderXPM.ConvertToXPM3(ASource: TStream;\n  ADestination: TStream);\nvar\n  lst: TStringList;\n  i : integer;\nbegin\n  lst := TStringList.Create;\n  try\n    lst.LoadFromStream(ASource);\n    if (lst[0] = '! XPM2') and (lst.count > 1) then\n    begin\n      lst[0] := '/* XPM */';\n      lst.Insert(1, 'static char * data[] = {');\n      for i := 2 to lst.Count-2 do\n        lst[i] := '\"' + lst[i] + '\",';\n      lst[lst.count-1] := '\"' + lst[lst.count-1] + '\"';\n      lst.Add('}');\n    end;\n    lst.SaveToStream(ADestination);\n  finally\n    lst.free;\n  end;\nend;\n\ninitialization\n  BGRARegisterImageReader(ifXPixMap, TBGRAReaderXPM, True, 'XPM Format', 'xpm');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrarenderer3d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Software renderer for 3D scenes }\nunit BGRARenderer3D;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses BGRABitmapTypes,\n  BGRASceneTypes, BGRASSE,\n  BGRAPolygon, BGRAColorInt,\n  BGRAClasses, BGRAMatrix3D,\n  BGRAPolygonAliased;\n\ntype\n  TInt65536ShaderFunction3D = function (Context: PBasicLightingContext; Color: TBGRAPixel): TColorInt65536 of object;\n\n  { Shader for 3D software rendering }\n  TBGRAShader3D = class\n  protected\n    FAmbiantLightness: integer;\n    FAmbiantLightColor: TColorInt65536;\n    FUseAmbiantColor: boolean;\n    FLights: TList;\n    FContextBlock: TMemoryBlockAlign128;\n    FShaderFunc: TShaderFunction3D;\n    FInt65536ShaderFunc: TInt65536ShaderFunction3D;\n    FContext: PBasicLightingContext;\n    FOnlyDirectionalLights: boolean;\n    FWhiteMaterial: boolean;\n\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext); inline;\n    procedure ComputeDiffuseLight(Context: PSceneLightingContext); inline;\n    procedure ComputeDiffuseAndSpecularLight(Context: PSceneLightingContext); inline;\n\n    function ApplyNoLighting(Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\n    function ApplyLightingWithAmbiantLightnessOnly(Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\n    function ApplyLightingWithLightness(Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\n    function ApplyLightingWithDiffuseColor(Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\n    function ApplyLightingWithDiffuseAndSpecularColor(Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\n\n    function Int65536ApplyNoLighting(Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\n    function Int65536ApplyLightingWithAmbiantLightnessOnly(Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\n    function Int65536ApplyLightingWithLightness(Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\n    function Int65536ApplyLightingWithDiffuseColor(Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\n    function Int65536ApplyLightingWithDiffuseAndSpecularColor(Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\n  public\n    constructor Create(const AAmbiantLightColorF: TColorF; ALights: TList);\n    destructor Destroy; override;\n    function Apply(APosition: TPoint3D_128; ANormal: TPoint3D_128; AColor: TBGRAPixel): TBGRAPixel;\n    function Int65536Apply(APosition: TPoint3D_128; ANormal: TPoint3D_128; AColor: TBGRAPixel): TColorInt65536;\n    procedure Prepare(constref ADescription: TFaceRenderingDescription);\n    property ShaderFunction: TShaderFunction3D read FShaderFunc;\n    property Int65536ShaderFunction: TInt65536ShaderFunction3D read FInt65536ShaderFunc;\n    property Context: PBasicLightingContext read FContext;\n    property OnlyDirectionalLights: boolean read FOnlyDirectionalLights;\n  end;\n\n  { Software renderer for 3D scenes }\n  TBGRARenderer3D = class(TCustomRenderer3D)\n  protected\n    FColorGradientTempBmp: TBGRACustomBitmap;\n    FZBuffer: PSingle;\n    FOutputSurface, FRenderSurface: TBGRACustomBitmap;\n    FRenderSurfaceMultisample: Integer;\n    FMultishapeFiller: TBGRAMultishapeFiller;\n    FOptions: TRenderingOptions;\n    FShader: TBGRAShader3D;\n    FDepths: array of single;\n    FLightings: array of word;\n\n    FShadedColors: array of TBGRAPixel;\n    FSameShadedColors: boolean;\n\n    FCenter: record\n      proj: TPointF;\n      pos3D,normal3D: TPoint3D_128;\n      color: TBGRAPixel;\n    end;\n\n    function GetHasZBuffer: boolean; override;\n    function GetGlobalScale: single; override;\n    function GetSurfaceWidth: integer; override;\n    function GetSurfaceHeight: integer; override;\n    function GetHandlesNearClipping: boolean; override;\n    function GetHandlesFaceCulling: boolean; override;\n  public\n    constructor Create(AOutputSurface: TBGRACustomBitmap;\n      ARenderingOptions: TRenderingOptions;\n      AAmbiantLightColorF: TColorF;\n      ALights: TList);\n    function RenderFace(var ADescription: TFaceRenderingDescription;\n      AComputeCoordinate: TComputeProjectionFunc): boolean; override;\n    destructor Destroy; override;\n  end;\n\nimplementation\n\nuses SysUtils, BGRAResample;\n\n{ TBGRAShader3D }\n\nconstructor TBGRAShader3D.Create(const AAmbiantLightColorF: TColorF;\n  ALights: TList);\nvar\n  j: Integer;\nbegin\n  FAmbiantLightColor := ColorFToColorInt65536(AAmbiantLightColorF);\n  FAmbiantLightness := round((AAmbiantLightColorF[1]+AAmbiantLightColorF[2]+AAmbiantLightColorF[3])/3*32768);\n  FUseAmbiantColor:= (FAmbiantLightColor.r <> FAmbiantLightColor.g) or (FAmbiantLightColor.g <> FAmbiantLightColor.b);\n  FLights := ALights;\n  FContextBlock := TMemoryBlockAlign128.Create(sizeof(TSceneLightingContext));\n  FOnlyDirectionalLights:= true;\n  for j := 0 to FLights.Count-1 do\n    if not TBGRALight3D(FLights[j]).IsDirectional then FOnlyDirectionalLights := false;\nend;\n\ndestructor TBGRAShader3D.Destroy;\nbegin\n  FreeAndNil(FContextBlock);\n  inherited Destroy;\nend;\n\nfunction TBGRAShader3D.Apply(APosition: TPoint3D_128; ANormal: TPoint3D_128;\n  AColor: TBGRAPixel): TBGRAPixel;\nbegin\n  with Context^ do\n  begin\n    Position := APosition;\n    Normal := ANormal;\n  end;\n  result := ShaderFunction(Context,AColor);\nend;\n\nfunction TBGRAShader3D.Int65536Apply(APosition: TPoint3D_128;\n  ANormal: TPoint3D_128; AColor: TBGRAPixel): TColorInt65536;\nbegin\n  with Context^ do\n  begin\n    Position := APosition;\n    Normal := ANormal;\n  end;\n  result := Int65536ShaderFunction(Context,AColor);\nend;\n\nprocedure TBGRAShader3D.Prepare(constref\n  ADescription: TFaceRenderingDescription);\nvar\n  UseDiffuseColor: Boolean;\n  j: Integer;\n  ctx: PSceneLightingContext;\nbegin\n  with ADescription do\n  begin\n   FWhiteMaterial:= Texture <> nil;\n   if Material.GetSpecularOn then\n   begin\n     FShaderFunc := TShaderFunction3D(@ApplyLightingWithDiffuseAndSpecularColor);\n     FInt65536ShaderFunc := TInt65536ShaderFunction3D(@Int65536ApplyLightingWithDiffuseAndSpecularColor);\n   end else\n   begin\n     UseDiffuseColor := FUseAmbiantColor;\n     if not UseDiffuseColor then\n     begin\n       with Material.GetDiffuseColorInt do\n        UseDiffuseColor := (r <> g) or (g <> b);\n       if not UseDiffuseColor and Material.GetAutoDiffuseColor then\n       begin\n         for j := 0 to FLights.Count-1 do\n           if TBGRALight3D(FLights[j]).GetColoredLight then\n           begin\n             UseDiffuseColor := true;\n             break;\n           end;\n       end;\n     end;\n     if UseDiffuseColor then\n     begin\n       FShaderFunc := TShaderFunction3D(@ApplyLightingWithDiffuseColor);\n       FInt65536ShaderFunc := TInt65536ShaderFunction3D(@Int65536ApplyLightingWithDiffuseColor);\n     end else\n     begin\n       if FLights.Count = 0 then\n       begin\n         if FAmbiantLightness = 32768 then\n         begin\n           FShaderFunc := TShaderFunction3D(@ApplyNoLighting);\n           FInt65536ShaderFunc := TInt65536ShaderFunction3D(@Int65536ApplyNoLighting);\n         end else\n         begin\n           FShaderFunc := TShaderFunction3D(@ApplyLightingWithAmbiantLightnessOnly);\n           FInt65536ShaderFunc := TInt65536ShaderFunction3D(@Int65536ApplyLightingWithAmbiantLightnessOnly);\n         end;\n       end else\n       begin\n        FShaderFunc := TShaderFunction3D(@ApplyLightingWithLightness);\n        FInt65536ShaderFunc := TInt65536ShaderFunction3D(@Int65536ApplyLightingWithLightness);\n       end;\n     end;\n   end;\n\n    ctx := PSceneLightingContext( FContextBlock.Data );\n    ctx^.material := Material;\n    ctx^.LightThroughFactor := LightThroughFactor;\n    ctx^.LightThrough := ctx^.LightThroughFactor > 0;\n    ctx^.SaturationHighF := Material.GetSaturationHigh;\n    ctx^.SaturationLowF := Material.GetSaturationLow;\n    ctx^.SaturationHigh := round(Material.GetSaturationHigh*32768);\n    ctx^.SaturationLow := round(Material.GetSaturationLow*32768);\n    FContext := PBasicLightingContext(ctx);\n  end;\nend;\n\nprocedure TBGRAShader3D.ComputeDiffuseLightness(\n  Context: PSceneLightingContext);\nvar i: Int32or64;\nbegin\n  Context^.lightness := FAmbiantLightness;\n\n  i := FLights.Count-1;\n  while i >= 0 do\n  begin\n    TBGRALight3D(FLights[i]).ComputeDiffuseLightness(Context);\n    dec(i);\n  end;\nend;\n\nprocedure TBGRAShader3D.ComputeDiffuseLight(Context: PSceneLightingContext);\nvar i: Int32or64;\n  m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if FWhiteMaterial or m.GetAutoAmbiantColor then\n    Context^.diffuseColor := FAmbiantLightColor\n  else\n    Context^.diffuseColor := FAmbiantLightColor*m.GetAmbiantColorInt;\n\n  i := FLights.Count-1;\n  while i >= 0 do\n  begin\n    TBGRALight3D(FLights[i]).ComputeDiffuseColor(Context);\n    dec(i);\n  end;\n\n  Context^.diffuseColor.a := 65536;\nend;\n\nprocedure TBGRAShader3D.ComputeDiffuseAndSpecularLight(\n  Context: PSceneLightingContext);\nvar i: Int32or64;\n  m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if FWhiteMaterial or m.GetAutoAmbiantColor then\n    Context^.diffuseColor := FAmbiantLightColor\n  else\n    Context^.diffuseColor := FAmbiantLightColor*m.GetAmbiantColorInt;\n  Context^.specularColor := ColorInt65536(0,0,0,0);\n\n  i := FLights.Count-1;\n  while i >= 0 do\n  begin\n    TBGRALight3D(FLights[i]).ComputeDiffuseAndSpecularColor(Context);\n    dec(i);\n  end;\n\n  Context^.diffuseColor.a := 65536;\nend;\n\nfunction TBGRAShader3D.ApplyNoLighting(Context: PSceneLightingContext;\n  Color: TBGRAPixel): TBGRAPixel;\nvar\n  m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if FWhiteMaterial or m.GetAutoAmbiantColor then\n    result := Color\n  else\n    result := ColorIntToBGRA(BGRAToColorInt(Color,True)*m.GetAmbiantColorInt,True);\nend;\n\nfunction TBGRAShader3D.ApplyLightingWithAmbiantLightnessOnly(\n  Context: PSceneLightingContext; Color: TBGRAPixel): TBGRAPixel;\nvar\n  m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if not FWhiteMaterial and not m.GetAutoAmbiantColor then\n    Color := ColorIntToBGRA(BGRAToColorInt(Color,True)* m.GetAmbiantColorInt,True);\n\n  if FAmbiantLightness <= 0 then\n    result := BGRA(0,0,0,color.alpha)\n  else\n    result := ApplyIntensityFast(Color, FAmbiantLightness);\nend;\n\nfunction TBGRAShader3D.ApplyLightingWithLightness(Context: PSceneLightingContext;\n  Color: TBGRAPixel): TBGRAPixel;\nvar\n  m: TBGRAMaterial3D;\nbegin\n  ComputeDiffuseLightness(Context);\n\n  m := TBGRAMaterial3D(Context^.material);\n  if not FWhiteMaterial and not m.GetAutoSimpleColor then\n    Color := ColorIntToBGRA(BGRAToColorInt(Color,True)*m.GetSimpleColorInt,True);\n\n  with Context^ do\n    if Lightness <= 0 then\n      result := BGRA(0,0,0,color.alpha)\n    else\n    begin\n      if Lightness <= SaturationLow then\n        result := ApplyIntensityFast(Color, Lightness)\n      else if Lightness >= SaturationHigh then\n        result := BGRA(255,255,255,color.alpha)\n      else\n        result := ApplyLightnessFast( ApplyIntensityFast(Color, SaturationLow),\n                              (Lightness - SaturationLow)*32767 div (SaturationHigh-SaturationLow)+32768 );\n    end;\nend;\n\nfunction TBGRAShader3D.ApplyLightingWithDiffuseColor(Context: PSceneLightingContext;\n  Color: TBGRAPixel): TBGRAPixel;\nbegin\n  ComputeDiffuseLight(Context);\n  result := ColorIntToBGRA(BGRAToColorInt(Color,True)*Context^.diffuseColor,True);\nend;\n\nfunction TBGRAShader3D.ApplyLightingWithDiffuseAndSpecularColor(Context: PSceneLightingContext;\n  Color: TBGRAPixel): TBGRAPixel;\nbegin\n  ComputeDiffuseAndSpecularLight(Context);\n  result := ColorIntToBGRA(BGRAToColorInt(Color,True)*Context^.diffuseColor + Context^.specularColor,True);\nend;\n\nfunction TBGRAShader3D.Int65536ApplyNoLighting(Context: PSceneLightingContext;\n  Color: TBGRAPixel): TColorInt65536;\nvar\n  m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if not FWhiteMaterial and not m.GetAutoAmbiantColor then\n    result := BGRAToColorInt(Color,True)* m.GetAmbiantColorInt\n  else\n    result := BGRAToColorInt(Color,True);\nend;\n\nfunction TBGRAShader3D.Int65536ApplyLightingWithAmbiantLightnessOnly(\n  Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\nvar\n  m: TBGRAMaterial3D;\n  MaterialColor: TColorInt65536;\nbegin\n  m := TBGRAMaterial3D(Context^.material);\n\n  if not FWhiteMaterial and not m.GetAutoAmbiantColor then\n    MaterialColor := BGRAToColorInt(Color,True)* m.GetAmbiantColorInt\n  else\n    MaterialColor := BGRAToColorInt(Color,True);\n\n  if FAmbiantLightness <= 0 then\n    result := ColorInt65536(0,0,0,MaterialColor.a)\n  else\n    result := MaterialColor *\n           ColorInt65536(FAmbiantLightness shl 1,FAmbiantLightness shl 1,FAmbiantLightness shl 1,65536);\nend;\n\nfunction TBGRAShader3D.Int65536ApplyLightingWithLightness(\n  Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\nvar\n  MaterialColor: TColorInt65536;\n  m: TBGRAMaterial3D;\n  Extra: Int32or64;\nbegin\n  ComputeDiffuseLightness(Context);\n\n  m := TBGRAMaterial3D(Context^.material);\n  if not FWhiteMaterial and not m.GetAutoSimpleColor then\n    MaterialColor := BGRAToColorInt(Color,True)*m.GetSimpleColorInt\n  else\n    MaterialColor := BGRAToColorInt(Color,True);\n\n  with Context^ do\n    if Lightness <= 0 then\n      result := ColorInt65536(0,0,0,MaterialColor.a)\n    else\n    begin\n      if Lightness <= SaturationLow then\n        result := MaterialColor * ColorInt65536(Lightness shl 1,Lightness shl 1,Lightness shl 1,65536)\n      else if Lightness >= SaturationHigh then\n        result := ColorInt65536(65536,65536,65536,MaterialColor.a)\n      else\n      begin\n        result := MaterialColor * ColorInt65536(Lightness shl 1,Lightness shl 1,Lightness shl 1,65536);\n        Extra := (Lightness - SaturationLow)*65536 div (SaturationHigh-SaturationLow);\n        inc(result.r, Extra);\n        inc(result.g, Extra);\n        inc(result.b, Extra);\n      end;\n    end;\nend;\n\nfunction TBGRAShader3D.Int65536ApplyLightingWithDiffuseColor(\n  Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\nbegin\n  ComputeDiffuseLight(Context);\n  result := BGRAToColorInt(Color,True)*Context^.diffuseColor;\nend;\n\nfunction TBGRAShader3D.Int65536ApplyLightingWithDiffuseAndSpecularColor(\n  Context: PSceneLightingContext; Color: TBGRAPixel): TColorInt65536;\nbegin\n  ComputeDiffuseAndSpecularLight(Context);\n  result := BGRAToColorInt(Color,True)*Context^.diffuseColor + Context^.specularColor;\nend;\n\n{ TBGRARenderer3D }\n\nfunction TBGRARenderer3D.GetHasZBuffer: boolean;\nbegin\n  result := Assigned(FZBuffer);\nend;\n\nfunction TBGRARenderer3D.GetGlobalScale: single;\nbegin\n  result := FRenderSurfaceMultisample;\nend;\n\nfunction TBGRARenderer3D.GetSurfaceWidth: integer;\nbegin\n  result := FOutputSurface.Width;\nend;\n\nfunction TBGRARenderer3D.GetSurfaceHeight: integer;\nbegin\n  result := FOutputSurface.Height;\nend;\n\nfunction TBGRARenderer3D.GetHandlesNearClipping: boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRARenderer3D.GetHandlesFaceCulling: boolean;\nbegin\n  result := false;\nend;\n\nconstructor TBGRARenderer3D.Create(AOutputSurface: TBGRACustomBitmap;\n            ARenderingOptions: TRenderingOptions;\n            AAmbiantLightColorF: TColorF;\n            ALights: TList);\nbegin\n  if AOutputSurface = nil then\n    raise exception.Create('No surface specified');\n  FOutputSurface := AOutputSurface;\n  FOptions := ARenderingOptions;\n\n  if (FOptions.AntialiasingMode = am3dResample)\n    and (FOptions.AntialiasingResampleLevel > 1) then\n  begin\n    FRenderSurface := FOutputSurface.NewBitmap(FOutputSurface.Width*FOptions.AntialiasingResampleLevel,\n                                         FOutputSurface.Height*FOptions.AntialiasingResampleLevel);\n    FRenderSurfaceMultisample := FOptions.AntialiasingResampleLevel;\n  end else\n  begin\n    FRenderSurface := FOutputSurface;\n    FRenderSurfaceMultisample := 1;\n  end;\n\n  FColorGradientTempBmp := FRenderSurface.NewBitmap(2,2);\n  FColorGradientTempBmp.ScanInterpolationFilter := rfLinear;\n\n  if FOptions.PerspectiveMode = pmZBuffer then\n  begin\n    Getmem(FZBuffer, FRenderSurface.NbPixels*sizeof(single));\n    FillDWord(FZBuffer^, FRenderSurface.NbPixels, LongWord(single(0)));\n  end\n  else\n    FZBuffer := nil;\n\n  if (FOptions.AntialiasingMode = am3dMultishape) and\n    (FOptions.PerspectiveMode <> pmZBuffer) then\n  begin\n    FMultishapeFiller := TBGRAMultishapeFiller.Create;\n    FMultishapeFiller.PolygonOrder := poLastOnTop;\n  end\n  else\n    FMultishapeFiller := nil;\n\n  FShader := TBGRAShader3D.Create(AAmbiantLightColorF, ALights);\nend;\n\nfunction TBGRARenderer3D.RenderFace(var ADescription: TFaceRenderingDescription;\n  AComputeCoordinate: TComputeProjectionFunc): boolean;\n\n  procedure ComputeCenter;\n  var j: Int32or64;\n  begin\n    with ADescription do\n    begin\n      with FCenter do\n      begin\n        ClearPoint3D_128(pos3D);\n        ClearPoint3D_128(normal3D);\n        color := MergeBGRA(slice(Colors,NbVertices));\n      end;\n      for j := 0 to NbVertices-1 do\n      begin\n        FCenter.pos3D.Offset(Positions3D[j]);\n        FCenter.normal3D.Offset(Normals3D[j]);\n      end;\n      with FCenter do\n      begin\n        pos3D.Scale(1/NbVertices);\n        Normalize3D_128(normal3D);\n      end;\n    end;\n    FCenter.proj := AComputeCoordinate(FCenter.pos3D);\n  end;\n\n  procedure DrawFaceWithShader;\n  var\n    j,k: Int32or64;\n    SameColor: boolean;\n  begin\n    with ADescription do\n    begin\n      if Texture <> nil then\n      begin\n        BGRAPolygonAliased.PolygonPerspectiveMappingShaderAliased(FRenderSurface,\n            slice(Projections,NbVertices),slice(Positions3D,NbVertices),slice(Normals3D,NbVertices),\n            Texture,slice(TexCoords,NbVertices),FOptions.TextureInterpolation,\n            FShader.ShaderFunction,True, BGRAPixelTransparent,FZBuffer,FShader.Context);\n        exit;\n      end;\n\n      SameColor := True;\n      for j := 1 to NbVertices-1 do\n        if (Colors[j]<>Colors[j-1]) then SameColor := False;\n\n      if SameColor then\n      begin\n        BGRAPolygonAliased.PolygonPerspectiveMappingShaderAliased(FRenderSurface,\n          slice(Projections,NbVertices),slice(Positions3D,NbVertices),slice(Normals3D,NbVertices),nil,\n            slice(TexCoords,NbVertices),False,FShader.ShaderFunction,True,Colors[0],FZBuffer,FShader.Context);\n      end else\n      if NbVertices = 3 then\n      begin\n        FColorGradientTempBmp.SetPixel(0,0,Colors[0]);\n        FColorGradientTempBmp.SetPixel(1,0,Colors[1]);\n        FColorGradientTempBmp.SetPixel(0,1,Colors[2]);\n        FColorGradientTempBmp.SetPixel(1,1,MergeBGRA(Colors[1],Colors[2]));\n        BGRAPolygonAliased.PolygonPerspectiveMappingShaderAliased(FRenderSurface,\n          slice(Projections,NbVertices),slice(Positions3D,NbVertices),slice(Normals3D,NbVertices),FColorGradientTempBmp,\n            [PointF(0,0),PointF(1,0),PointF(0,1)],True,FShader.ShaderFunction,True, BGRAPixelTransparent,FZBuffer,FShader.Context);\n      end else\n      if NbVertices = 4 then\n      begin\n        FColorGradientTempBmp.SetPixel(0,0,Colors[0]);\n        FColorGradientTempBmp.SetPixel(1,0,Colors[1]);\n        FColorGradientTempBmp.SetPixel(1,1,Colors[2]);\n        FColorGradientTempBmp.SetPixel(0,1,Colors[3]);\n        BGRAPolygonAliased.PolygonPerspectiveMappingShaderAliased(FRenderSurface,\n          slice(Projections,NbVertices),slice(Positions3D,NbVertices),slice(Normals3D,NbVertices),FColorGradientTempBmp,\n            [PointF(0,0),PointF(1,0),PointF(1,1),PointF(0,1)],True,FShader.ShaderFunction,True, BGRAPixelTransparent,FZBuffer,FShader.Context);\n      end else\n      if NbVertices >= 3 then\n      begin //split into triangles\n        ComputeCenter;\n        k := NbVertices-1;\n        for j := 0 to NbVertices-1 do\n        begin\n          FColorGradientTempBmp.SetPixel(0,0,Colors[k]);\n          FColorGradientTempBmp.SetPixel(1,0,Colors[j]);\n          FColorGradientTempBmp.SetPixel(0,1,FCenter.color);\n          FColorGradientTempBmp.SetPixel(1,1,MergeBGRA(Colors[j],FCenter.color));\n          BGRAPolygonAliased.PolygonPerspectiveMappingShaderAliased(FRenderSurface,\n            [Projections[k],Projections[j],FCenter.proj], [Positions3D[k],Positions3D[j],FCenter.pos3D],\n            [Normals3D[k],Normals3D[j],FCenter.normal3D], FColorGradientTempBmp,\n              [PointF(0,0),PointF(1,0),PointF(0,1)],True,FShader.ShaderFunction,True, BGRAPixelTransparent,FZBuffer,FShader.Context);\n          k := j;\n        end;\n      end;\n    end;\n  end;\n\n  procedure ComputeShadedColors;\n  var\n    j: Int32or64;\n  begin\n    with ADescription do\n    begin\n      //Vertex lighting interpolation (low-quality Gouraud, low-quality Phong)\n      if length(FShadedColors) < NbVertices then\n        setlength(FShadedColors, NbVertices);\n\n      for j := 0 to NbVertices-1 do\n        FShadedColors[j] := FShader.Apply(Positions3D[j],Normals3D[j],Colors[j]);\n\n      FSameShadedColors := True;\n      for j := 1 to NbVertices-1 do\n        if (FShadedColors[j]<>FShadedColors[j-1]) then\n        begin\n          FSameShadedColors := False;\n          break;\n        end;\n    end;\n  end;\n\n  procedure DrawWithMultishape;\n  var shadedCenter: TBGRAPixel;\n    j,k: Int32or64;\n  begin\n    with ADescription do\n    begin\n      if Texture <> nil then\n      begin\n        if (FOptions.PerspectiveMode <> pmLinearMapping) and (NbVertices=4) then\n          FMultishapeFiller.AddQuadPerspectiveMapping(\n             Projections[0],Projections[1],Projections[2],Projections[3],\n             Texture,TexCoords[0],TexCoords[1],TexCoords[2],TexCoords[3])\n        else\n        if NbVertices>=3 then\n        begin\n          for j := 0 to NbVertices-3 do\n            FMultishapeFiller.AddTriangleLinearMapping(\n                Projections[j],Projections[j+1],Projections[j+2],\n                Texture,TexCoords[j],TexCoords[j+1],TexCoords[j+2]);\n        end;\n      end\n      else\n      begin\n        ComputeShadedColors;\n\n        if FSameShadedColors then\n          FMultishapeFiller.AddPolygon(slice(Projections,NbVertices),FShadedColors[0])\n        else\n        if NbVertices=3 then\n          FMultishapeFiller.AddTriangleLinearColor(\n             Projections[0],Projections[1],Projections[2],\n             FShadedColors[0],FShadedColors[1],FShadedColors[2])\n        else\n        if NbVertices>=3 then\n        begin  //split into triangles\n          ComputeCenter;\n          shadedCenter := FShader.Apply(FCenter.pos3D,FCenter.normal3D,FCenter.color);\n          k := NbVertices-1;\n          for j := 0 to NbVertices-1 do\n          begin\n            FMultishapeFiller.AddTriangleLinearColor(\n               Projections[k],Projections[j],FCenter.proj,\n               FShadedColors[k],FShadedColors[j],shadedCenter);\n            k := j;\n          end;\n        end;\n      end;\n    end;\n  end;\n\n  procedure DrawAliasedColoredFace;\n  var j,k: integer;\n    shadedCenter: TBGRAPixel;\n  begin\n    with ADescription do\n    begin\n      ComputeShadedColors;\n\n      if FSameShadedColors then\n      begin\n        if FOptions.PerspectiveMode = pmZBuffer then\n          BGRAPolygonAliased.PolygonPerspectiveColorGradientAliased(FRenderSurface, slice(Projections,NbVertices),\n          slice(FDepths,NbVertices), slice(FShadedColors,NbVertices),True,FZBuffer)\n        else\n          FRenderSurface.FillPoly(slice(Projections,NbVertices),FShadedColors[0],dmDrawWithTransparency);\n      end\n      else\n      begin\n        if NbVertices > 4 then\n        begin //split into triangles\n          ComputeCenter;\n          shadedCenter := FShader.Apply(FCenter.pos3D,FCenter.normal3D,FCenter.color);\n          k := NbVertices-1;\n          if FOptions.PerspectiveMode = pmLinearMapping then\n          begin\n            for j := 0 to NbVertices-1 do\n            begin\n              FRenderSurface.FillPolyLinearColor([Projections[k],Projections[j],FCenter.proj],[FShadedColors[k],FShadedColors[j],shadedCenter]);\n              k := j;\n            end;\n          end else\n          begin\n            for j := 0 to NbVertices-1 do\n            begin\n              BGRAPolygonAliased.PolygonPerspectiveColorGradientAliased(FRenderSurface, [Projections[k],Projections[j],FCenter.proj],\n               [FDepths[k],FDepths[j],FCenter.pos3D.z], [FShadedColors[k],FShadedColors[j],shadedCenter],True,FZBuffer);\n              k := j;\n            end;\n          end;\n        end else\n        begin\n          if FOptions.PerspectiveMode = pmLinearMapping then\n            FRenderSurface.FillPolyLinearColor(slice(Projections,NbVertices),slice(FShadedColors,NbVertices))\n          else\n            BGRAPolygonAliased.PolygonPerspectiveColorGradientAliased(FRenderSurface, slice(Projections,NbVertices),\n             slice(FDepths,NbVertices), slice(FShadedColors,NbVertices),True,FZBuffer);\n        end;\n      end;\n    end;\n  end;\n\n  procedure DrawWithoutShader;\n  var\n    noLighting: Boolean;\n    j: Int32or64;\n  begin\n    with ADescription do\n    begin\n      if length(FDepths) < NbVertices then\n        setlength(FDepths, NbVertices);\n      for j := 0 to NbVertices-1 do\n        FDepths[j] := Positions3D[j].z;\n\n      if Texture <> nil then\n      begin\n        noLighting := True;\n        if length(FLightings) < NbVertices then\n            setlength(FLightings, NbVertices);\n        for j := 0 to NbVertices-1 do\n        begin\n          FLightings[j] := FShader.Int65536Apply(Positions3D[j],Normals3D[j],BGRAWhite).g div 2;\n          if abs(FLightings[j]-32768) > 1 then noLighting := false;\n        end;\n\n        if noLighting then\n        begin\n          if FOptions.PerspectiveMode <> pmLinearMapping then\n            FRenderSurface.FillPolyPerspectiveMapping(slice(Projections,NbVertices),\n            slice(FDepths,NbVertices),Texture,slice(TexCoords,NbVertices),\n            FOptions.TextureInterpolation, FZBuffer)\n          else\n            FRenderSurface.FillPolyLinearMapping(slice(Projections,NbVertices),\n            Texture,slice(TexCoords,NbVertices),FOptions.TextureInterpolation);\n        end else\n        begin\n          if FOptions.PerspectiveMode <> pmLinearMapping then\n            FRenderSurface.FillPolyPerspectiveMappingLightness(\n              slice(Projections,NbVertices),slice(FDepths,NbVertices),Texture,\n              slice(TexCoords,NbVertices),slice(FLightings,NbVertices),\n              FOptions.TextureInterpolation, FZBuffer)\n          else\n            FRenderSurface.FillPolyLinearMappingLightness(\n              slice(Projections,NbVertices),Texture,slice(TexCoords,NbVertices),\n              slice(FLightings,NbVertices),FOptions.TextureInterpolation);\n        end;\n      end\n      else\n        DrawAliasedColoredFace;  //already low-quality shaded\n    end;\n  end;\n\nvar\n  j: integer;\n  SkipShader: boolean;\nbegin\n  result := true;\n  FShader.Prepare(ADescription);\n  with ADescription do\n  begin\n    //high-quality lighting interpolation, necessary for Phong and high-quality Gouraud\n    if (  (FOptions.LightingInterpolation = liAlwaysHighQuality) or\n          ((FOptions.LightingInterpolation = liSpecularHighQuality) and Material.GetSpecularOn) )\n      and (NormalsMode <> lnNone) then\n    begin\n      //if there are only directional lights and all the normals are the same,\n      //then the lighting will be uniform so we can skip the shader\n      if FShader.OnlyDirectionalLights then\n      begin\n        SkipShader := true;\n        for j := 1 to NbVertices-1 do\n          if Normals3D[j] <> Normals3D[j-1] then\n          begin\n            SkipShader := false;\n            break;\n          end;\n      end else\n        SkipShader := false;\n\n      if not SkipShader then\n      begin\n        DrawFaceWithShader;\n        exit;\n      end;\n    end;\n\n    if Assigned(FMultishapeFiller) then //high-quality antialiasing\n      DrawWithMultishape\n    else\n      DrawWithoutShader;\n  end;\nend;\n\ndestructor TBGRARenderer3D.Destroy;\nbegin\n  FreeAndNil(FShader);\n\n  if Assigned(FMultishapeFiller) then\n  begin\n    FMultishapeFiller.Draw(FRenderSurface);\n    FreeAndNil(FMultishapeFiller);\n  end;\n\n  if FZBuffer <> nil then\n  begin\n    FreeMem(FZBuffer);\n    FZBuffer := nil;\n  end;\n\n  FreeAndNil(FColorGradientTempBmp);\n\n  if FRenderSurfaceMultisample > 1 then\n  begin\n    BGRAResample.DownSamplePutImage(FRenderSurface,\n               FRenderSurfaceMultisample,FRenderSurfaceMultisample,\n               FOutputSurface, 0,0, dmDrawWithTransparency);\n    FreeAndNil(FRenderSurface);\n    FRenderSurfaceMultisample := 1;\n  end\n  else\n    FRenderSurface := nil;\n\n  inherited Destroy;\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgraresample.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ This unit provides resampling functions, i.e. resizing of bitmaps with or\n  without interpolation filters. }\nunit BGRAResample;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRABitmapTypes, BGRAUnits\n  {$if FPC_FULLVERSION>30202}\n  , FpImage\n  {$endif}\n  ;\n\n{------------------------------- Simple stretch ------------------------------------}\n\n{ Computes a resampled image with pixels are boxes, with antialising between boxes.\n  For example, a 2x2 image will be stretched as four boxes, one for each pixel }\nfunction SimpleStretch(bmp: TBGRACustomBitmap; NewWidth, NewHeight: integer;\n  ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\nfunction SimpleStretch(bmp: TBGRACustomBitmap; NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n  ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n\n{ Puts a resampled image on the destination. Pixels are boxes, with antialising between boxes. }\nprocedure StretchPutImage(bmp: TBGRACustomBitmap; NewWidth, NewHeight: integer;\n  dest: TBGRACustomBitmap; OffsetX,OffsetY: Integer; ADrawMode: TDrawMode;\n  AOpacity: byte; ANoTransition: boolean = false);\n\n{ Puts a resampled image on the destination, downsampling by the provided _factorX_ and _factorY_ }\nprocedure DownSamplePutImage(source: TBGRACustomBitmap; factorX,factorY: integer; dest: TBGRACustomBitmap; OffsetX,OffsetY: Integer; ADrawMode: TDrawMode);\n{ Computes a resampled image, downsampling by the provided _factorX_ and _factorY_ }\nfunction DownSample(source: TBGRACustomBitmap; factorX,factorY: integer): TBGRACustomBitmap;\n\n{---------------------------- Interpolation filters --------------------------------}\n\n{ Computes fine interpolation between 0 and 1 for rfBox, rfLinear, rfHalfCosine and rfCosine filters.  }\nfunction FineInterpolation(t: single; ResampleFilter: TResampleFilter): single;\n{ Computes fine interpolation between 0 and 256 for rfBox, rfLinear, rfHalfCosine and rfCosine filters.  }\nfunction FineInterpolation256(t256: integer; ResampleFilter: TResampleFilter): integer;\n\ntype\n  { @abstract(Abstract class to define a wide kernel.)\n\n    A wide kernel is an interpolation method that can use more than the adjacent pixels. }\n  TWideKernelFilter = class\n    function Interpolation(t: single): single; virtual; abstract;\n    function ShouldCheckRange: boolean; virtual; abstract;\n    function KernelWidth: single; virtual; abstract;\n  end;\n\n  { Filter that provides smooth interpolation but less blurry than TCubicKernel }\n  TMitchellKernel = class(TWideKernelFilter)\n    function Interpolation(t: single): single; override;\n    function ShouldCheckRange: boolean; override;\n    function KernelWidth: single; override;\n  end;\n\n  { Spline kernel provides customizable wide interpolation filter using Coeff property }\n  TSplineKernel = class(TWideKernelFilter)\n  public\n    Coeff: single;\n    constructor Create; overload;\n    constructor Create(ACoeff: single); overload;\n    function Interpolation(t: single): single; override;\n    function ShouldCheckRange: boolean; override;\n    function KernelWidth: single; override;\n  end;\n\n  { Cubic interpolation is very smooth but can be a bit blurry }\n  TCubicKernel = class(TWideKernelFilter)\n    function pow3(x: single): single; inline;\n    function Interpolation(t: single): single; override;\n    function ShouldCheckRange: boolean; override;\n    function KernelWidth: single; override;\n  end;\n\n  { Lanczos kernel provides smooth but contrasted interpolation }\n  TLanczosKernel = class(TWideKernelFilter)\n  private\n    FNumberOfLobes: integer;\n    FFactor: ValReal;\n    procedure SetNumberOfLobes(AValue: integer);\n  public\n    constructor Create(ANumberOfLobes: integer);\n    function Interpolation(t: single): single; override;\n    function ShouldCheckRange: boolean; override;\n    function KernelWidth: single; override;\n\n    property NumberOfLobes : integer read FNumberOfLobes write SetNumberOfLobes;\n  end;\n\n{ Create an instance of a predefined kernel matching spline style }\nfunction CreateInterpolator(style: TSplineStyle): TWideKernelFilter;\n\n{-------------------------------- Fine resample ------------------------------------}\n\n{ @abstract(Uses floating point coordinates to get an antialiased resample.)\n\n  It can use minimal interpolation (4 pixels when upsizing) for simple interpolation\n  filters (linear and cosine-like) or wide kernel resample for complex interpolation.\n  In this cas, it calls WideKernelResample. }\nfunction FineResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: integer; ResampleFilter: TResampleFilter; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n\nfunction FineResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n  ResampleFilter: TResampleFilter; ACopyProperties: boolean = false): TBGRACustomBitmap; overload;\n\n{ WideKernelResample can be called for custom filter kernel, derived\n  from TWideKernelFilter. It is slower of course than simple interpolation. }\nfunction WideKernelResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: integer; ResampleFilterSmaller, ResampleFilterLarger: TWideKernelFilter): TBGRACustomBitmap;\n\nimplementation\n\nuses Math, BGRABlend, BGRAClasses;\n\n{ Adapt resolution from source to destination image according to the scaling between them }\nprocedure AdaptResolution(ASource: TBGRACustomBitmap; ADest: TBGRACustomBitmap);\nvar\n  res: TImageResolutionInfo;\nbegin\n  res := ASource.ResolutionInfo;\n  res.ResolutionX:= res.ResolutionX * ADest.Width / ASource.Width;\n  res.ResolutionY:= res.ResolutionY * ADest.Height / ASource.Height;\n  ADest.ResolutionInfo:= res;\nend;\n\nfunction SimpleStretch(bmp: TBGRACustomBitmap;\n  newWidth, newHeight: integer; ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  if (NewWidth = bmp.Width) and (NewHeight = bmp.Height) then\n  begin\n    Result := bmp.Duplicate;\n    exit;\n  end;\n  Result := bmp.NewBitmap(NewWidth, NewHeight);\n  StretchPutImage(bmp, newWidth,newHeight, result, 0,0, dmSet, 255);\n  AdaptResolution(bmp, result);\n  if ACopyProperties then bmp.CopyPropertiesTo(Result);\nend;\n\nfunction SimpleStretch(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit; ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  if ASizeUnit = cuPercent then\n  begin\n    NewWidth := bmp.Width * NewWidth / 100;\n    NewHeight := bmp.Height * NewHeight / 100;\n  end else\n    PhysicalSizeToPixels(NewWidth, NewHeight, bmp.ResolutionInfo, ASizeUnit);\n  Result:= SimpleStretch(bmp, HalfUp(NewWidth), HalfUp(NewHeight), ACopyProperties);\nend;\n\nprocedure StretchPutImage(bmp: TBGRACustomBitmap; NewWidth, NewHeight: integer;\n  dest: TBGRACustomBitmap; OffsetX, OffsetY: Integer; ADrawMode: TDrawMode; AOpacity: byte; ANoTransition: boolean);\ntype\n  TTransitionState = (tsNone, tsPlain, tsLeft, tsMiddle, tsRight);\nvar\n  x_src,y_src, y_src2, prev_y_src, prev_y_src2: Int32or64;\n  inc_x_src, mod_x_src, acc_x_src, inc_y_src, mod_y_src, acc_y_src,\n  acc_x_src2, acc_y_src2: Int32or64;\n  x_dest, y_dest: Int32or64;\n\n  PDest, PSrc1, PSrc2: PBGRAPixel;\n  vertColors: packed array[1..2] of TBGRAPixel;\n  DeltaSrcX: Int32or64;\n  targetRect: TRect;\n  tempData: PBGRAPixel;\n  prevHorizTransition,horizTransition,prevVertTransition,vertTransition: TTransitionState;\n  horizSlightlyDifferent,vertSlightlyDifferent: boolean;\n\n  procedure LinearMix(PSrc: PBGRAPixel; DeltaSrc: integer; AccSrcQuarter: boolean;\n        PDest: PBGRAPixel; slightlyDifferent: boolean; var transition: TTransitionState);\n  var\n    asum: Int32or64;\n    a1,a2: Int32or64;\n    newTransition: TTransitionState;\n  begin\n    if (DeltaSrc=0) or ANoTransition then\n    begin\n      PDest^ := PSrc^;\n      transition:= tsPlain;\n    end\n    else\n    begin\n      if slightlyDifferent then\n      begin\n        if AccSrcQuarter then newTransition:= tsRight else\n          newTransition:= tsLeft;\n      end else\n        newTransition:= tsMiddle;\n\n      if (newTransition = tsMiddle) or ((newTransition = tsRight) and (transition = tsLeft)) or\n        ((newTransition = tsLeft) and (transition = tsRight)) then\n      begin\n        transition:= tsMiddle;\n        if ADrawMode = dmXor then\n        begin\n          pdest^.alpha := (psrc^.alpha + (psrc+DeltaSrc)^.alpha + 1) shr 1;\n          pdest^.red := (psrc^.red + (psrc+DeltaSrc)^.red + 1) shr 1;\n          pdest^.green := (psrc^.green + (psrc+DeltaSrc)^.green + 1) shr 1;\n          pdest^.blue := (psrc^.blue + (psrc+DeltaSrc)^.blue + 1) shr 1;\n        end else\n        begin\n          asum := psrc^.alpha + (psrc+DeltaSrc)^.alpha;\n          if asum = 0 then\n            pdest^ := BGRAPixelTransparent\n          else if asum = 510 then\n          begin\n            pdest^.alpha := 255;\n            pdest^.red := (psrc^.red + (psrc+DeltaSrc)^.red + 1) shr 1;\n            pdest^.green := (psrc^.green + (psrc+DeltaSrc)^.green + 1) shr 1;\n            pdest^.blue := (psrc^.blue + (psrc+DeltaSrc)^.blue + 1) shr 1;\n          end else\n          begin\n            pdest^.alpha := asum shr 1;\n            a1 := psrc^.alpha;\n            a2 := (psrc+DeltaSrc)^.alpha;\n            pdest^.red := (psrc^.red*a1 + (psrc+DeltaSrc)^.red*a2 + (asum shr 1)) div asum;\n            pdest^.green := (psrc^.green*a1 + (psrc+DeltaSrc)^.green*a2 + (asum shr 1)) div asum;\n            pdest^.blue := (psrc^.blue*a1 + (psrc+DeltaSrc)^.blue*a2 + (asum shr 1)) div asum;\n          end;\n        end;\n      end else\n      if newTransition = tsRight then\n      begin\n        transition := tsRight;\n        if ADrawMode = dmXor then\n        begin\n          pdest^.alpha := (psrc^.alpha + (psrc+DeltaSrc)^.alpha*3 + 2) shr 2;\n          pdest^.red := (psrc^.red + (psrc+DeltaSrc)^.red*3 + 2) shr 2;\n          pdest^.green := (psrc^.green + (psrc+DeltaSrc)^.green*3 + 2) shr 2;\n          pdest^.blue := (psrc^.blue + (psrc+DeltaSrc)^.blue*3 + 2) shr 2;\n        end else\n        begin\n          asum := psrc^.alpha + (psrc+DeltaSrc)^.alpha*3;\n          if asum = 0 then\n            pdest^ := BGRAPixelTransparent\n          else if asum = 1020 then\n          begin\n            pdest^.alpha := 255;\n            pdest^.red := (psrc^.red + (psrc+DeltaSrc)^.red*3 + 2) shr 2;\n            pdest^.green := (psrc^.green + (psrc+DeltaSrc)^.green*3 + 2) shr 2;\n            pdest^.blue := (psrc^.blue + (psrc+DeltaSrc)^.blue*3 + 2) shr 2;\n          end else\n          begin\n            pdest^.alpha := asum shr 2;\n            a1 := psrc^.alpha;\n            a2 := (psrc+DeltaSrc)^.alpha;\n            pdest^.red := (psrc^.red*a1 + (psrc+DeltaSrc)^.red*a2*3 + (asum shr 1)) div asum;\n            pdest^.green := (psrc^.green*a1 + (psrc+DeltaSrc)^.green*a2*3 + (asum shr 1)) div asum;\n            pdest^.blue := (psrc^.blue*a1 + (psrc+DeltaSrc)^.blue*a2*3 + (asum shr 1)) div asum;\n          end;\n        end;\n      end else\n      begin\n        transition:= tsLeft;\n        if ADrawMode = dmXor then\n        begin\n          pdest^.alpha := (psrc^.alpha*3 + (psrc+DeltaSrc)^.alpha + 2) shr 2;\n          pdest^.red := (psrc^.red*3 + (psrc+DeltaSrc)^.red + 2) shr 2;\n          pdest^.green := (psrc^.green*3 + (psrc+DeltaSrc)^.green + 2) shr 2;\n          pdest^.blue := (psrc^.blue*3 + (psrc+DeltaSrc)^.blue + 2) shr 2;\n        end else\n        begin\n          asum := psrc^.alpha*3 + (psrc+DeltaSrc)^.alpha;\n          if asum = 0 then\n            pdest^ := BGRAPixelTransparent\n          else if asum = 1020 then\n          begin\n            pdest^.alpha := 255;\n            pdest^.red := (psrc^.red*3 + (psrc+DeltaSrc)^.red + 2) shr 2;\n            pdest^.green := (psrc^.green*3 + (psrc+DeltaSrc)^.green + 2) shr 2;\n            pdest^.blue := (psrc^.blue*3 + (psrc+DeltaSrc)^.blue + 2) shr 2;\n          end else\n          begin\n            pdest^.alpha := asum shr 2;\n            a1 := psrc^.alpha;\n            a2 := (psrc+DeltaSrc)^.alpha;\n            pdest^.red := (psrc^.red*a1*3 + (psrc+DeltaSrc)^.red*a2 + (asum shr 1)) div asum;\n            pdest^.green := (psrc^.green*a1*3 + (psrc+DeltaSrc)^.green*a2 + (asum shr 1)) div asum;\n            pdest^.blue := (psrc^.blue*a1*3 + (psrc+DeltaSrc)^.blue*a2 + (asum shr 1)) div asum;\n          end;\n        end;\n      end;\n    end;\n  end;\n\nbegin\n  if (newWidth <= 0) or (newHeight <= 0) or (bmp.Width <= 0)\n    or (bmp.Height <= 0) then\n    exit;\n\n  targetRect := rect(0,0,NewWidth,NewHeight);\n  if OffsetX < dest.ClipRect.Left then targetRect.Left:= dest.ClipRect.Left-OffsetX;\n  if OffsetY < dest.ClipRect.Top then targetRect.Top:= dest.ClipRect.Top-OffsetY;\n  if OffsetX+NewWidth > dest.ClipRect.Right then targetRect.Right := dest.ClipRect.Right-OffsetX;\n  if OffsetY+NewHeight > dest.ClipRect.Bottom then targetRect.Bottom := dest.ClipRect.Bottom-OffsetY;\n  if (targetRect.Right <= targetRect.Left) or (targetRect.Bottom <= targetRect.Top) then exit;\n\n  bmp.LoadFromBitmapIfNeeded;\n\n  if (ADrawMode <> dmSet) or (AOpacity <> 255) then\n     getmem(tempData, (targetRect.Right-targetRect.Left)*sizeof(TBGRAPixel) )\n  else\n      tempData := nil;\n\n  inc_x_src := bmp.Width div newwidth;\n  mod_x_src := bmp.Width mod newwidth;\n  inc_y_src := bmp.Height div newheight;\n  mod_y_src := bmp.Height mod newheight;\n\n  prev_y_src := -1;\n  prev_y_src2 := -1;\n\n  acc_y_src := targetRect.Top*mod_y_src;\n  y_src     := targetRect.Top*inc_y_src + (acc_y_src div NewHeight);\n  acc_y_src := acc_y_src mod NewHeight;\n\n  y_src     := y_src+ (bmp.Height div 4) div newheight;\n  acc_y_src := acc_y_src+ (bmp.Height div 4) mod newheight;\n\n  y_src2     := y_src+ (bmp.Height div 2) div newheight;\n  acc_y_src2 := acc_y_src+ (bmp.Height div 2) mod newheight;\n  if acc_y_src2 > NewHeight then\n  begin\n    dec(acc_y_src2, NewHeight);\n    inc(y_src2);\n  end;\n  horizSlightlyDifferent := (NewWidth > bmp.Width*2 div 3) and (NewWidth < bmp.Width*4 div 3);\n  prevVertTransition:= tsNone;\n  vertSlightlyDifferent := (NewHeight > bmp.Height*2 div 3) and (NewHeight < bmp.Height*4 div 3);\n  for y_dest := targetRect.Top to targetRect.Bottom - 1 do\n  begin\n    if (y_src = prev_y_src) and (y_src2 = prev_y_src2) and not vertSlightlyDifferent then\n    begin\n      if tempData = nil then\n        move((dest.ScanLine[y_dest-1+OffsetY]+OffsetX+targetRect.Left)^,(dest.ScanLine[y_dest+OffsetY]+OffsetX+targetRect.Left)^,(targetRect.Right-targetRect.Left)*sizeof(TBGRAPixel))\n      else\n        PutPixels(dest.ScanLine[y_dest+OffsetY]+OffsetX+targetRect.Left,tempData,targetRect.right-targetRect.left,ADrawMode,AOpacity);\n    end else\n    begin\n      if tempData = nil then\n         PDest := dest.ScanLine[y_dest+OffsetY]+OffsetX+targetRect.Left\n      else\n        PDest := tempData;\n      PSrc1 := bmp.Scanline[y_src];\n\n      acc_x_src := targetRect.Left*mod_x_src;\n      x_src     := targetRect.Left*inc_x_src + (acc_x_src div NewWidth);\n      acc_x_src := acc_x_src mod NewWidth;\n\n      x_src     := x_src+ (bmp.Width div 4) div NewWidth;\n      acc_x_src := acc_x_src+ (bmp.Width div 4) mod NewWidth;\n\n      DeltaSrcX := (bmp.Width div 2) div NewWidth;\n      acc_x_src2 := acc_x_src+ (bmp.Width div 2) mod NewWidth;\n      if acc_x_src2 > NewWidth then\n      begin\n        dec(acc_x_src2, NewWidth);\n        inc(DeltaSrcX);\n      end;\n      inc(Psrc1, x_src);\n      prevHorizTransition := tsNone;\n\n      if y_src2=y_src then\n      begin\n        horizTransition:= prevHorizTransition;\n        for x_dest := targetRect.left to targetRect.right - 1 do\n        begin\n          LinearMix(psrc1, DeltaSrcX, acc_x_src2 >= NewWidth shr 2, PDest, horizSlightlyDifferent, horizTransition);\n\n          Inc(PSrc1, inc_x_src);\n          Inc(acc_x_src, mod_x_src);\n          if acc_x_src >= newWidth then\n          begin\n            Dec(acc_x_src, newWidth);\n            Inc(PSrc1);\n            dec(DeltaSrcX);\n          end;\n          Inc(acc_x_src2, mod_x_src);\n          if acc_x_src2 >= newWidth then\n          begin\n            Dec(acc_x_src2, newWidth);\n            Inc(DeltaSrcX);\n          end;\n          inc(PDest);\n        end;\n        prevVertTransition:= tsPlain;\n      end else\n      begin\n        PSrc2 := bmp.Scanline[y_src2]+x_src;\n        for x_dest := targetRect.left to targetRect.right - 1 do\n        begin\n          horizTransition:= prevHorizTransition;\n          LinearMix(psrc1, DeltaSrcX, acc_x_src2 >= NewWidth shr 2, @vertColors[1], horizSlightlyDifferent, horizTransition);\n          horizTransition:= prevHorizTransition;\n          LinearMix(psrc2, DeltaSrcX, acc_x_src2 >= NewWidth shr 2, @vertColors[2], horizSlightlyDifferent, horizTransition);\n          prevHorizTransition:= horizTransition;\n          vertTransition:= prevVertTransition;\n          LinearMix(@vertColors[1],1,acc_y_src2 >= NewHeight shr 2,PDest,vertSlightlyDifferent,vertTransition);\n\n          Inc(PSrc1, inc_x_src);\n          Inc(PSrc2, inc_x_src);\n          Inc(acc_x_src, mod_x_src);\n          if acc_x_src >= newWidth then\n          begin\n            Dec(acc_x_src, newWidth);\n            Inc(PSrc1);\n            Inc(PSrc2);\n            dec(DeltaSrcX);\n          end;\n          Inc(acc_x_src2, mod_x_src);\n          if acc_x_src2 >= newWidth then\n          begin\n            Dec(acc_x_src2, newWidth);\n            Inc(DeltaSrcX);\n          end;\n          inc(PDest);\n        end;\n        prevVertTransition:= vertTransition;\n      end;\n\n      if tempData <> nil then\n         PutPixels(dest.ScanLine[y_dest+OffsetY]+OffsetX+targetRect.Left,tempData,targetRect.right-targetRect.left,ADrawMode,AOpacity);\n    end;\n\n    prev_y_src := y_src;\n    prev_y_src2 := y_src2;\n\n    Inc(y_src, inc_y_src);\n    Inc(acc_y_src, mod_y_src);\n    if acc_y_src >= newheight then\n    begin\n      Dec(acc_y_src, newheight);\n      Inc(y_src);\n    end;\n\n    Inc(y_src2, inc_y_src);\n    Inc(acc_y_src2, mod_y_src);\n    if acc_y_src2 >= newheight then\n    begin\n      Dec(acc_y_src2, newheight);\n      Inc(y_src2);\n    end;\n  end;\n  dest.InvalidateBitmap;\n  if Assigned(tempData) then FreeMem(tempData);\nend;\n\nprocedure DownSamplePutImage2(source: TBGRACustomBitmap;\n  dest: TBGRACustomBitmap; OffsetX, OffsetY: Integer; ADrawMode: TDrawMode);\nconst factorX = 2; factorY = 2; nbi= factorX*factorY;\nvar xb,yb,ys: Int32or64;\n    pdest: PBGRAPixel;\n    psrc1,psrc2: PBGRAPixel;\n    asum,maxsum: UInt32or64;\n    newWidth,newHeight: Int32or64;\n    r,g,b: UInt32or64;\nbegin\n  if (source.Width mod factorX <> 0) or (source.Height mod factorY <> 0) then\n     raise exception.Create('Source size must be a multiple of factorX and factorY');\n  newWidth := source.Width div factorX;\n  newHeight := source.Height div factorY;\n  ys := 0;\n  maxsum := 255*Int32or64(factorX)*Int32or64(factorY);\n  for yb := 0 to newHeight-1 do\n  begin\n    pdest := dest.ScanLine[yb+OffsetY]+OffsetX;\n    psrc1 := source.Scanline[ys]; inc(ys);\n    psrc2 := source.Scanline[ys]; inc(ys);\n    for xb := newWidth-1 downto 0 do\n    begin\n      asum := 0;\n      asum := psrc1^.alpha + psrc2^.alpha + (psrc1+1)^.alpha + (psrc2+1)^.alpha;\n      if asum = maxsum then\n      begin\n        pdest^.alpha := 255;\n        r := psrc1^.red + psrc2^.red + (psrc1+1)^.red + (psrc2+1)^.red;\n        g := psrc1^.green + psrc2^.green + (psrc1+1)^.green + (psrc2+1)^.green;\n        b := psrc1^.blue + psrc2^.blue + (psrc1+1)^.blue + (psrc2+1)^.blue;\n        inc(psrc1,factorX); inc(psrc2,factorX);\n        pdest^.red := (r + (nbi shr 1)) shr 2;\n        pdest^.green := (g + (nbi shr 1)) shr 2;\n        pdest^.blue := (b + (nbi shr 1)) shr 2;\n      end else\n      if ADrawMode <> dmSetExceptTransparent then\n      begin\n        if asum = 0 then\n        begin\n          if ADrawMode = dmSet then\n            pdest^ := BGRAPixelTransparent;\n          inc(psrc1,factorX); inc(psrc2,factorX);\n        end\n        else\n        begin\n          r := psrc1^.red*psrc1^.alpha + psrc2^.red*psrc2^.alpha + (psrc1+1)^.red*(psrc1+1)^.alpha + (psrc2+1)^.red*(psrc2+1)^.alpha;\n          g := psrc1^.green*psrc1^.alpha + psrc2^.green*psrc2^.alpha + (psrc1+1)^.green*(psrc1+1)^.alpha + (psrc2+1)^.green*(psrc2+1)^.alpha;\n          b := psrc1^.blue*psrc1^.alpha + psrc2^.blue*psrc2^.alpha + (psrc1+1)^.blue*(psrc1+1)^.alpha + (psrc2+1)^.blue*(psrc2+1)^.alpha;\n          inc(psrc1,factorX); inc(psrc2,factorX);\n          if ADrawMode = dmSet then\n          begin\n            pdest^.alpha := (asum + (nbi shr 1)) shr 2;\n            pdest^.red := (r + (asum shr 1)) div asum;\n            pdest^.green := (g + (asum shr 1)) div asum;\n            pdest^.blue := (b + (asum shr 1)) div asum;\n          end\n          else\n          begin\n            if ADrawMode = dmDrawWithTransparency then\n              DrawPixelInlineWithAlphaCheck(pdest,BGRA((r + (asum shr 1)) div asum,\n                 (g + (asum shr 1)) div asum,\n                 (b + (asum shr 1)) div asum,\n                 (asum + (nbi shr 1)) shr 2)) else\n             if ADrawMode = dmFastBlend then\n               FastBlendPixelInline(pdest,BGRA((r + (asum shr 1)) div asum,\n                  (g + (asum shr 1)) div asum,\n                  (b + (asum shr 1)) div asum,\n                  (asum + (nbi shr 1)) shr 2));\n          end;\n        end;\n      end;\n      inc(pdest);\n    end;\n  end;\nend;\n\nprocedure DownSamplePutImage3(source: TBGRACustomBitmap;\n  dest: TBGRACustomBitmap; OffsetX, OffsetY: Integer; ADrawMode: TDrawMode);\nconst factorX = 3; factorY = 3; nbi= factorX*factorY;\nvar xb,yb,ys: Int32or64;\n    pdest: PBGRAPixel;\n    psrc1,psrc2,psrc3: PBGRAPixel;\n    asum,maxsum: UInt32or64;\n    newWidth,newHeight: Int32or64;\n    r,g,b: UInt32or64;\nbegin\n  if (source.Width mod factorX <> 0) or (source.Height mod factorY <> 0) then\n     raise exception.Create('Source size must be a multiple of factorX and factorY');\n  newWidth := source.Width div factorX;\n  newHeight := source.Height div factorY;\n  ys := 0;\n  maxsum := 255*Int32or64(factorX)*Int32or64(factorY);\n  for yb := 0 to newHeight-1 do\n  begin\n    pdest := dest.ScanLine[yb+OffsetY]+OffsetX;\n    psrc1 := source.Scanline[ys]; inc(ys);\n    psrc2 := source.Scanline[ys]; inc(ys);\n    psrc3 := source.Scanline[ys]; inc(ys);\n    for xb := newWidth-1 downto 0 do\n    begin\n      asum := 0;\n      asum := psrc1^.alpha + psrc2^.alpha + psrc3^.alpha\n           + (psrc1+1)^.alpha + (psrc2+1)^.alpha + (psrc3+1)^.alpha\n           + (psrc1+2)^.alpha + (psrc2+2)^.alpha + (psrc3+2)^.alpha;\n      if asum = maxsum then\n      begin\n        pdest^.alpha := 255;\n        r := psrc1^.red + psrc2^.red + psrc3^.red\n           + (psrc1+1)^.red + (psrc2+1)^.red + (psrc3+1)^.red\n           + (psrc1+2)^.red + (psrc2+2)^.red + (psrc3+2)^.red;\n        g := psrc1^.green + psrc2^.green + psrc3^.green\n           + (psrc1+1)^.green + (psrc2+1)^.green + (psrc3+1)^.green\n           + (psrc1+2)^.green + (psrc2+2)^.green + (psrc3+2)^.green;\n        b := psrc1^.blue + psrc2^.blue + psrc3^.blue\n           + (psrc1+1)^.blue + (psrc2+1)^.blue + (psrc3+1)^.blue\n           + (psrc1+2)^.blue + (psrc2+2)^.blue + (psrc3+2)^.blue;\n        inc(psrc1,factorX); inc(psrc2,factorX); inc(psrc3,factorX);\n        pdest^.red := (r + (nbi shr 1)) div 9;\n        pdest^.green := (g + (nbi shr 1)) div 9;\n        pdest^.blue := (b + (nbi shr 1)) div 9;\n      end else\n      if ADrawMode <> dmSetExceptTransparent then\n      begin\n        if asum = 0 then\n        begin\n          if ADrawMode = dmSet then\n            pdest^ := BGRAPixelTransparent;\n          inc(psrc1,factorX); inc(psrc2,factorX); inc(psrc3,factorX);\n        end\n        else\n        begin\n          r := psrc1^.red*psrc1^.alpha + psrc2^.red*psrc2^.alpha + psrc3^.red*psrc3^.alpha\n            + (psrc1+1)^.red*(psrc1+1)^.alpha + (psrc2+1)^.red*(psrc2+1)^.alpha + (psrc3+1)^.red*(psrc3+1)^.alpha\n            + (psrc1+2)^.red*(psrc1+2)^.alpha + (psrc2+2)^.red*(psrc2+2)^.alpha + (psrc3+2)^.red*(psrc3+2)^.alpha;\n          g := psrc1^.green*psrc1^.alpha + psrc2^.green*psrc2^.alpha + psrc3^.green*psrc3^.alpha\n            + (psrc1+1)^.green*(psrc1+1)^.alpha + (psrc2+1)^.green*(psrc2+1)^.alpha + (psrc3+1)^.green*(psrc3+1)^.alpha\n            + (psrc1+2)^.green*(psrc1+2)^.alpha + (psrc2+2)^.green*(psrc2+2)^.alpha + (psrc3+2)^.green*(psrc3+2)^.alpha;\n          b := psrc1^.blue*psrc1^.alpha + psrc2^.blue*psrc2^.alpha + psrc3^.blue*psrc3^.alpha\n            + (psrc1+1)^.blue*(psrc1+1)^.alpha + (psrc2+1)^.blue*(psrc2+1)^.alpha + (psrc3+1)^.blue*(psrc3+1)^.alpha\n            + (psrc1+2)^.blue*(psrc1+2)^.alpha + (psrc2+2)^.blue*(psrc2+2)^.alpha + (psrc3+2)^.blue*(psrc3+2)^.alpha;\n          inc(psrc1,factorX); inc(psrc2,factorX); inc(psrc3,factorX);\n          if ADrawMode = dmSet then\n          begin\n            pdest^.alpha := (asum + (nbi shr 1)) div 9;\n            pdest^.red := (r + (asum shr 1)) div asum;\n            pdest^.green := (g + (asum shr 1)) div asum;\n            pdest^.blue := (b + (asum shr 1)) div asum;\n          end\n          else\n          begin\n            if ADrawMode = dmDrawWithTransparency then\n              DrawPixelInlineWithAlphaCheck(pdest,BGRA((r + (asum shr 1)) div asum,\n                 (g + (asum shr 1)) div asum,\n                 (b + (asum shr 1)) div asum,\n                 (asum + (nbi shr 1)) div 9)) else\n             if ADrawMode = dmFastBlend then\n               FastBlendPixelInline(pdest,BGRA((r + (asum shr 1)) div asum,\n                  (g + (asum shr 1)) div asum,\n                  (b + (asum shr 1)) div asum,\n                  (asum + (nbi shr 1)) div 9));\n          end;\n        end;\n      end;\n      inc(pdest);\n    end;\n  end;\nend;\n\nprocedure DownSamplePutImage(source: TBGRACustomBitmap; factorX, factorY: integer;\n  dest: TBGRACustomBitmap; OffsetX, OffsetY: Integer; ADrawMode: TDrawMode);\nvar xb,yb,ys,iy,ix: Int32or64;\n    pdest,psrci: PBGRAPixel;\n    psrc: array of PBGRAPixel;\n    asum,maxsum: UInt32or64;\n    newWidth,newHeight: Int32or64;\n    r,g,b,nbi: UInt32or64;\nbegin\n  if ADrawMode = dmXor then raise exception.Create('dmXor drawmode not supported');\n  if (factorX = 2) and (factorY = 2) then\n  begin\n     DownSamplePutImage2(source,dest,OffsetX,OffsetY,ADrawMode);\n     exit;\n  end;\n  if (factorX = 3) and (factorY = 3) then\n  begin\n     DownSamplePutImage3(source,dest,OffsetX,OffsetY,ADrawMode);\n     exit;\n  end;\n  if (source.Width mod factorX <> 0) or (source.Height mod factorY <> 0) then\n     raise exception.Create('Source size must be a multiple of factorX and factorY');\n  newWidth := source.Width div factorX;\n  newHeight := source.Height div factorY;\n  ys := 0;\n  maxsum := 255*Int32or64(factorX)*Int32or64(factorY);\n  nbi := factorX*factorY;\n  setlength(psrc, factorY);\n  for yb := 0 to newHeight-1 do\n  begin\n    pdest := dest.ScanLine[yb+OffsetY]+OffsetX;\n    for iy := factorY-1 downto 0 do\n    begin\n      psrc[iy] := source.Scanline[ys];\n      inc(ys);\n    end;\n    for xb := newWidth-1 downto 0 do\n    begin\n      asum := 0;\n      for iy := factorY-1 downto 0 do\n      begin\n        psrci := psrc[iy];\n        for ix := factorX-1 downto 0 do\n          inc(asum, (psrci+ix)^.alpha);\n      end;\n      if asum = maxsum then\n      begin\n        pdest^.alpha := 255;\n        r := 0;\n        g := 0;\n        b := 0;\n        for iy := factorY-1 downto 0 do\n          for ix := factorX-1 downto 0 do\n          begin\n            with psrc[iy]^ do\n            begin\n              inc(r, red);\n              inc(g, green);\n              inc(b, blue);\n            end;\n            inc(psrc[iy]);\n          end;\n        pdest^.red := (r + (nbi shr 1)) div nbi;\n        pdest^.green := (g + (nbi shr 1)) div nbi;\n        pdest^.blue := (b + (nbi shr 1)) div nbi;\n      end else\n      if ADrawMode <> dmSetExceptTransparent then\n      begin\n        if asum = 0 then\n        begin\n          if ADrawMode = dmSet then\n            pdest^ := BGRAPixelTransparent;\n          for iy := factorY-1 downto 0 do\n            inc(psrc[iy],factorX);\n        end\n        else\n        begin\n          r := 0;\n          g := 0;\n          b := 0;\n          for iy := factorY-1 downto 0 do\n            for ix := factorX-1 downto 0 do\n            begin\n              with psrc[iy]^ do\n              begin\n                inc(r, red*alpha);\n                inc(g, green*alpha);\n                inc(b, blue*alpha);\n              end;\n              inc(psrc[iy]);\n            end;\n          if ADrawMode = dmSet then\n          begin\n            pdest^.alpha := (asum + (nbi shr 1)) div nbi;\n            pdest^.red := (r + (asum shr 1)) div asum;\n            pdest^.green := (g + (asum shr 1)) div asum;\n            pdest^.blue := (b + (asum shr 1)) div asum;\n          end\n          else\n          begin\n            if ADrawMode = dmDrawWithTransparency then\n              DrawPixelInlineWithAlphaCheck(pdest,BGRA((r + (asum shr 1)) div asum,\n                 (g + (asum shr 1)) div asum,\n                 (b + (asum shr 1)) div asum,\n                 (asum + (nbi shr 1)) div nbi)) else\n             if ADrawMode = dmFastBlend then\n               FastBlendPixelInline(pdest,BGRA((r + (asum shr 1)) div asum,\n                  (g + (asum shr 1)) div asum,\n                  (b + (asum shr 1)) div asum,\n                  (asum + (nbi shr 1)) div nbi));\n          end;\n        end;\n      end;\n      inc(pdest);\n    end;\n  end;\nend;\n\nfunction DownSample(source: TBGRACustomBitmap; factorX, factorY: integer): TBGRACustomBitmap;\nbegin\n  if (source.Width mod factorX <> 0) or (source.Height mod factorY <> 0) then\n     raise exception.Create('Source size must be a multiple of factorX and factorY');\n  result := source.NewBitmap(source.Width div factorX, source.Height div factorY);\n  DownSamplePutImage(source,factorX,factorY,result,0,0,dmSet);\nend;\n\n{---------------------------- Interpolation filters ----------------------------------------}\n\nfunction FineInterpolation(t: single; ResampleFilter: TResampleFilter): single;\nbegin\n  if ResampleFilter <= rfLinear then\n  begin\n    if ResampleFilter = rfBox then\n    begin\n       result := round(t);\n    end else\n      result := t;\n  end else\n  begin\n    if t <= 0.5 then\n      result := t*t*2 else\n      result := 1-(1-t)*(1-t)*2;\n    if ResampleFilter <> rfCosine then result := (result+t)*0.5;\n  end;\nend;\n\nfunction FineInterpolation256(t256: integer; ResampleFilter: TResampleFilter): integer;\nbegin\n  if ResampleFilter <= rfLinear then\n  begin\n    if ResampleFilter = rfBox then\n    begin\n      if t256 < 128 then\n        result := 0\n      else\n        result := 256;\n    end\n    else\n      result := t256;\n  end else\n  begin\n    if t256 <= 128 then\n      result := (t256*t256) shr 7 else\n      result := 256 - (((256-t256)*(256-t256)) shr 7);\n    if ResampleFilter <> rfCosine then result := (result+t256) shr 1;\n  end;\nend;\n\n{ TCubicKernel }\n\nfunction TCubicKernel.pow3(x: single): single;\nbegin\n  if x <= 0.0 then\n   result:=0.0\n  else\n   result:=x * x * x;\nend;\n\nfunction TCubicKernel.Interpolation(t: single): single;\nconst globalfactor = 1/6;\nbegin\n   if t > 2 then\n     result := 0\n   else\n     result:= globalfactor *\n       (pow3(t + 2 ) - 4 * pow3(t + 1 ) + 6 * pow3(t ) - 4 * pow3(t - 1 ) );\nend;\n\nfunction TCubicKernel.ShouldCheckRange: boolean;\nbegin\n  Result:= false;\nend;\n\nfunction TCubicKernel.KernelWidth: single;\nbegin\n  Result:= 2;\nend;\n\n{ TMitchellKernel }\n\nfunction TMitchellKernel.Interpolation(t: single): single;\nvar\n  tt, ttt: single;\nconst OneEighteenth = 1 / 18;\nbegin\n  t := Abs(t);\n  tt := Sqr(t);\n  ttt := tt * t;\n  if t < 1 then Result := (21 * ttt - 36 * tt + 16 ) * OneEighteenth\n  else if t < 2 then Result := (- 7 * ttt + 36 * tt - 60 * t + 32) * OneEighteenth\n  else Result := 0;\nend;\n\nfunction TMitchellKernel.ShouldCheckRange: Boolean;\nbegin\n  Result := True;\nend;\n\nfunction TMitchellKernel.KernelWidth: single;\nbegin\n  Result := 2;\nend;\n\n{ TSplineKernel }\n\nconstructor TSplineKernel.Create;\nbegin\n  coeff := 0.5;\nend;\n\nconstructor TSplineKernel.Create(ACoeff: single);\nbegin\n  Coeff := ACoeff;\nend;\n\nfunction TSplineKernel.Interpolation(t: single): single;\nvar\n  tt, ttt: single;\nbegin\n  t := Abs(t);\n  tt := Sqr(t);\n  ttt := tt * t;\n  if t < 1 then\n    Result := (2 - Coeff) * ttt - (3 - Coeff) * tt + 1\n  else if t < 2 then\n    Result := -Coeff * (ttt - 5 * tt + 8 * t - 4)\n  else\n    Result := 0;\nend;\n\nfunction TSplineKernel.ShouldCheckRange: Boolean;\nbegin\n  Result := True;\nend;\n\nfunction TSplineKernel.KernelWidth: single;\nbegin\n  Result := 2;\nend;\n\n{ TLanczosKernel }\n{ by stab }\nprocedure TLanczosKernel.SetNumberOfLobes(AValue: integer);\nbegin\n  if AValue < 1 then AValue := 1;\n  if FNumberOfLobes=AValue then Exit;\n  FNumberOfLobes:=AValue;\n  if AValue = 1 then FFactor := 1.5 else FFactor := AValue;\nend;\n\nconstructor TLanczosKernel.Create(ANumberOfLobes: integer);\nbegin\n  NumberOfLobes:= ANumberOfLobes;\nend;\n\nfunction TLanczosKernel.Interpolation(t: single): single;\nvar Pi_t: ValReal;\nbegin\n  if t = 0 then\n    Result := 1\n  else if t < FNumberOfLobes then\n  begin\n    Pi_t := pi * t;\n    Result := FFactor * sin(Pi_t) * sin(Pi_t / FNumberOfLobes) /\n      (Pi_t * Pi_t)\n  end\n  else\n    Result := 0;\nend;\n\nfunction TLanczosKernel.ShouldCheckRange: boolean;\nbegin\n  Result := True;\nend;\n\nfunction TLanczosKernel.KernelWidth: single;\nbegin\n  Result := FNumberOfLobes;\nend;\n\n{--------------------------------------------- Fine resample ------------------------------------------------}\n\nfunction FineResampleLarger(bmp: TBGRACustomBitmap;\n  newWidth, newHeight: integer; ResampleFilter: TResampleFilter): TBGRACustomBitmap;\ntype\n  TInterpolationEntry = record\n    isrc1,isrc2,factCorr: integer;\n  end;\nvar\n  yb, xb: integer;\n  pdest,psrc1,psrc2:  PBGRAPixel;\n  xsrc, ysrc, xfactor, yfactor: double;\n  xTab,yTab: array of TInterpolationEntry;\n  xInfo,yInfo: TInterpolationEntry;\n  cUpLeft, cUpRight, cLowLeft, cLowRight: TBGRAPixel;\n  factHoriz, factVert: single;\n  fUpLeft, fUpRight, fLowLeft, fLowRight: integer;\n  faUpLeft, faUpRight, faLowLeft, faLowRight: integer;\n  rSum, gSum, bSum, aSum: integer;\n  temp:   TBGRACustomBitmap;\nbegin\n  if (newWidth < bmp.Width) or (newHeight < bmp.Height) then\n    raise ERangeError.Create('FineResampleLarger: New dimensions must be greater or equal ('+IntToStr(bmp.Width)+'x'+IntToStr(bmp.Height)+'->'+IntToStr(newWidth)+'x'+IntToStr(newHeight)+')');\n\n  if (newWidth = 0) or (newHeight = 0) then\n  begin\n    Result := bmp.NewBitmap(NewWidth, NewHeight);\n    exit;\n  end;\n\n  bmp.LoadFromBitmapIfNeeded;\n\n  if (bmp.Width = 1) and (bmp.Height = 1) then\n  begin\n    Result := bmp.NewBitmap(NewWidth, NewHeight);\n    Result.Fill(bmp.GetPixel(0, 0));\n    exit;\n  end\n  else\n  if bmp.Width = 1 then\n  begin\n    temp := bmp.NewBitmap(2, bmp.Height);\n    temp.PutImage(0, 0, bmp, dmSet);\n    temp.PutImage(1, 0, bmp, dmSet);\n    Result := FineResampleLarger(temp, 2, newHeight, ResampleFilter);\n    temp.Free;\n    temp := Result;\n    Result := SimpleStretch(temp, newWidth,temp.Height);\n    temp.Free;\n    exit;\n  end\n  else\n  if bmp.Height = 1 then\n  begin\n    temp := bmp.NewBitmap(bmp.Width, 2);\n    temp.PutImage(0, 0, bmp, dmSet);\n    temp.PutImage(0, 1, bmp, dmSet);\n    Result := FineResampleLarger(temp, newWidth, 2, ResampleFilter);\n    temp.Free;\n    temp := Result;\n    Result := SimpleStretch(temp, temp.Width,newHeight);\n    temp.Free;\n    exit;\n  end;\n\n  Result := bmp.NewBitmap(NewWidth, NewHeight);\n  yfactor := (bmp.Height - 1) / (newHeight - 1);\n  xfactor := (bmp.Width - 1) / (newWidth - 1);\n\n  setlength(yTab, newHeight);\n  for yb := 0 to newHeight - 1 do\n  begin\n    ysrc     := yb * yfactor;\n    factVert := frac(ysrc);\n    yTab[yb].isrc1   := floor(ysrc);\n    yTab[yb].isrc2 := min(bmp.Height-1, ceil(ysrc));\n    yTab[yb].factCorr := round(FineInterpolation(factVert,ResampleFilter)*256);\n  end;\n  setlength(xTab, newWidth);\n  for xb := 0 to newWidth - 1 do\n  begin\n    xsrc     := xb * xfactor;\n    factHoriz := frac(xsrc);\n    xTab[xb].isrc1   := floor(xsrc);\n    xTab[xb].isrc2 := min(bmp.Width-1,ceil(xsrc));\n    xTab[xb].factCorr := round(FineInterpolation(factHoriz,ResampleFilter)*256);\n  end;\n\n  for yb := 0 to newHeight - 1 do\n  begin\n    pdest    := Result.Scanline[yb];\n    yInfo    := yTab[yb];\n    psrc1    := bmp.scanline[yInfo.isrc1];\n    psrc2    := bmp.scanline[yInfo.isrc2];\n    for xb := 0 to newWidth - 1 do\n    begin\n      xInfo  := xTab[xb];\n\n      cUpLeft   := (psrc1 + xInfo.isrc1)^;\n      cUpRight  := (psrc1 + xInfo.isrc2)^;\n      cLowLeft  := (psrc2 + xInfo.isrc1)^;\n      cLowRight := (psrc2 + xInfo.isrc2)^;\n\n      fLowRight := (xInfo.factCorr * yInfo.factCorr + 128) shr 8;\n      fLowLeft := yInfo.factCorr - fLowRight;\n      fUpRight := xInfo.factCorr - fLowRight;\n      fUpLeft := (256 - xInfo.factCorr) - fLowLeft;\n\n      faUpLeft   := fUpLeft * cUpLeft.alpha;\n      faUpRight  := fUpRight * cUpRight.alpha;\n      faLowLeft  := fLowLeft * cLowLeft.alpha;\n      faLowRight := fLowRight * cLowRight.alpha;\n\n      rSum := cUpLeft.red * faUpLeft + cUpRight.red * faUpRight +\n        cLowLeft.red * faLowLeft + cLowRight.red * faLowRight;\n      gSum := cUpLeft.green * faUpLeft + cUpRight.green * faUpRight +\n        cLowLeft.green * faLowLeft + cLowRight.green * faLowRight;\n      bSum := cUpLeft.blue * faUpLeft + cUpRight.blue * faUpRight +\n        cLowLeft.blue * faLowLeft + cLowRight.blue * faLowRight;\n      aSum := cUpLeft.alpha * fUpLeft + cUpRight.alpha * fUpRight +\n        cLowLeft.alpha * fLowLeft + cLowRight.alpha * fLowRight;\n\n      if aSum = 0 then\n        pdest^ := BGRAPixelTransparent\n      else\n        pdest^ := BGRA((rSum + aSum shr 1) div aSum, (gSum + aSum shr 1) div aSum,\n          (bSum + aSum shr 1) div aSum, (aSum + 128) shr 8);\n      Inc(pdest);\n\n    end;\n  end;\nend;\n\nfunction FineResampleSmaller(bmp: TBGRACustomBitmap;\n  newWidth, newHeight: integer): TBGRACustomBitmap;\nvar\n  yb, xb, yb2, xb2: integer;\n  pdest, psrc:      PBGRAPixel;\n  lineDelta, delta: integer;\n  xsrc1, ysrc1, xsrc2, ysrc2, xfactor, yfactor: double;\n  ixsrc1, ixsrc2, iysrc1, iysrc2, ixsrc1p1, ixsrc2m1, iysrc1p1, iysrc2m1: integer;\n  cBorder, cFull, cUpLeft, cUpRight, cLowLeft, cLowRight: TBGRAPixel;\n  factHoriz1, factHoriz2, factVert1, factVert2, Sum, fUpLeft, fUpRight,\n  fLowLeft, fLowRight, faUpLeft, faUpRight, faLowLeft, faLowRight: single;\n  rSum, gSum, bSum, aSum: double;\nbegin\n  if (newWidth > bmp.Width) or (newHeight > bmp.Height) then\n    raise ERangeError.Create('FineResampleSmaller: New dimensions must be smaller or equal ('+IntToStr(bmp.Width)+'x'+IntToStr(bmp.Height)+'->'+IntToStr(newWidth)+'x'+IntToStr(newHeight)+')');\n  Result := bmp.NewBitmap(NewWidth, NewHeight);\n  if (newWidth = 0) or (newHeight = 0) or (bmp.Width = 0) or (bmp.Height = 0) then\n    exit;\n\n  bmp.LoadFromBitmapIfNeeded;\n\n  if bmp.lineOrder = riloTopToBottom then\n    lineDelta := bmp.Width\n  else\n    lineDelta := -bmp.Width;\n\n  yfactor := bmp.Height / newHeight;\n  xfactor := bmp.Width / newWidth;\n  for yb := 0 to newHeight - 1 do\n  begin\n    pdest  := Result.Scanline[yb];\n    ysrc1  := yb * yfactor;\n    ysrc2  := (yb + 1) * yfactor;\n    iysrc1 := trunc(ysrc1);\n    if (int(ysrc2) = int(ysrc1)) or (ysrc2 = iysrc1 + 1) then\n    begin\n      iysrc2    := iysrc1;\n      factVert1 := 1;\n      factVert2 := 0;\n    end\n    else\n    begin\n      iysrc2    := trunc(ysrc2);\n      factVert1 := 1 - frac(ysrc1);\n      factVert2 := frac(ysrc2);\n    end;\n    for xb := 0 to newWidth - 1 do\n    begin\n      xsrc1  := xb * xfactor;\n      xsrc2  := (xb + 1) * xfactor;\n      ixsrc1 := trunc(xsrc1);\n      if (int(xsrc2) = int(xsrc1)) or (xsrc2 = ixsrc1 + 1) then\n      begin\n        ixsrc2     := ixsrc1;\n        factHoriz1 := 1;\n        factHoriz2 := 0;\n      end\n      else\n      begin\n        ixsrc2     := trunc(xsrc2);\n        factHoriz1 := 1 - frac(xsrc1);\n        factHoriz2 := frac(xsrc2);\n      end;\n\n      cUpLeft   := bmp.GetPixel(ixsrc1, iysrc1);\n      cUpRight  := bmp.GetPixel(ixsrc2, iysrc1);\n      cLowLeft  := bmp.GetPixel(ixsrc1, iysrc2);\n      cLowRight := bmp.GetPixel(ixsrc2, iysrc2);\n\n      fUpLeft   := factHoriz1 * factVert1;\n      fUpRight  := factHoriz2 * factVert1;\n      fLowLeft  := factHoriz1 * factVert2;\n      fLowRight := factHoriz2 * factVert2;\n\n      faUpLeft   := fUpLeft * cUpLeft.alpha;\n      faUpRight  := fUpRight * cUpRight.alpha;\n      faLowLeft  := fLowLeft * cLowLeft.alpha;\n      faLowRight := fLowRight * cLowRight.alpha;\n\n      Sum  := fUpLeft + fUpRight + fLowLeft + fLowRight;\n      rSum := cUpLeft.red * faUpLeft + cUpRight.red * faUpRight +\n        cLowLeft.red * faLowLeft + cLowRight.red * faLowRight;\n      gSum := cUpLeft.green * faUpLeft + cUpRight.green * faUpRight +\n        cLowLeft.green * faLowLeft + cLowRight.green * faLowRight;\n      bSum := cUpLeft.blue * faUpLeft + cUpRight.blue * faUpRight +\n        cLowLeft.blue * faLowLeft + cLowRight.blue * faLowRight;\n      aSum := cUpLeft.alpha * fUpLeft + cUpRight.alpha * fUpRight +\n        cLowLeft.alpha * fLowLeft + cLowRight.alpha * fLowRight;\n\n      ixsrc1p1 := ixsrc1 + 1;\n      ixsrc2m1 := ixsrc2 - 1;\n      iysrc1p1 := iysrc1 + 1;\n      iysrc2m1 := iysrc2 - 1;\n\n      if ixsrc2m1 >= ixsrc1p1 then\n      begin\n        psrc := bmp.scanline[iysrc1] + ixsrc1p1;\n        for xb2 := ixsrc1p1 to ixsrc2m1 do\n        begin\n          cBorder := psrc^;\n          Inc(psrc);\n          IncF(rSum, cBorder.red * cBorder.alpha * factVert1);\n          IncF(gSum, cBorder.green * cBorder.alpha * factVert1);\n          IncF(bSum, cBorder.blue * cBorder.alpha * factVert1);\n          IncF(aSum, cBorder.alpha * factVert1);\n          IncF(Sum, factVert1);\n        end;\n\n        if (factVert2 <> 0) and (iysrc2 < bmp.Height) then\n        begin\n          psrc := bmp.scanline[iysrc2] + ixsrc1p1;\n          for xb2 := ixsrc1p1 to ixsrc2m1 do\n          begin\n            cBorder := psrc^;\n            Inc(psrc);\n            IncF(rSum, cBorder.red * cBorder.alpha * factVert2);\n            IncF(gSum, cBorder.green * cBorder.alpha * factVert2);\n            IncF(bSum, cBorder.blue * cBorder.alpha * factVert2);\n            IncF(aSum, cBorder.alpha * factVert2);\n            IncF(Sum, factVert2);\n          end;\n        end;\n      end;\n\n      if iysrc2m1 >= iysrc1p1 then\n      begin\n        psrc := bmp.scanline[iysrc1p1] + ixsrc1;\n        for yb2 := iysrc1p1 to iysrc2m1 do\n        begin\n          cBorder := psrc^;\n          Inc(psrc, lineDelta);\n          IncF(rSum, cBorder.red * cBorder.alpha * factHoriz1);\n          IncF(gSum, cBorder.green * cBorder.alpha * factHoriz1);\n          IncF(bSum, cBorder.blue * cBorder.alpha * factHoriz1);\n          IncF(aSum, cBorder.alpha * factHoriz1);\n          IncF(Sum, factHoriz1);\n        end;\n\n        if (factHoriz2 <> 0) and (ixsrc2 < bmp.Width) then\n        begin\n          psrc := bmp.scanline[iysrc1p1] + ixsrc2;\n          for yb2 := iysrc1p1 to iysrc2m1 do\n          begin\n            cBorder := psrc^;\n            Inc(psrc, lineDelta);\n            IncF(rSum, cBorder.red * cBorder.alpha * factHoriz2);\n            IncF(gSum, cBorder.green * cBorder.alpha * factHoriz2);\n            IncF(bSum, cBorder.blue * cBorder.alpha * factHoriz2);\n            IncF(aSum, cBorder.alpha * factHoriz2);\n            IncF(Sum, factHoriz2);\n          end;\n        end;\n      end;\n\n      if (ixsrc2m1 >= ixsrc1p1) and (iysrc2m1 >= iysrc1p1) then\n      begin\n        delta := lineDelta - (ixsrc2m1 - ixsrc1p1 + 1);\n        psrc  := bmp.scanline[iysrc1p1] + ixsrc1p1;\n        for yb2 := iysrc1p1 to iysrc2m1 do\n        begin\n          for xb2 := ixsrc1p1 to ixsrc2m1 do\n          begin\n            cFull := psrc^;\n            IncF(rSum, cFull.red * cFull.alpha);\n            IncF(gSum, cFull.green * cFull.alpha);\n            IncF(bSum, cFull.blue * cFull.alpha);\n            IncF(aSum, cFull.alpha);\n            IncF(Sum, 1);\n            Inc(psrc);\n          end;\n          Inc(psrc, delta);\n        end;\n      end;\n\n      if aSum = 0 then\n        pdest^ := BGRAPixelTransparent\n      else\n        pdest^ := BGRA(round(rSum / aSum), round(gSum / aSum),\n          round(bSum / aSum), round(aSum / Sum));\n      Inc(pdest);\n\n    end;\n  end;\nend;\n\nfunction CreateInterpolator(style: TSplineStyle): TWideKernelFilter;\nbegin\n  case Style of\n    ssInside, ssInsideWithEnds: result := TCubicKernel.Create;\n    ssCrossing, ssCrossingWithEnds: result := TMitchellKernel.Create;\n    ssOutside: result := TSplineKernel.Create(0.5);\n    ssRoundOutside: result := TSplineKernel.Create(0.75);\n    ssVertexToSide: result := TSplineKernel.Create(1);\n    ssEasyBezier: raise Exception.Create('EasyBezier does not have an interpolator');\n  else\n    raise Exception.Create('Unknown spline style');\n  end;\nend;\n\nfunction FineResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: integer; ResampleFilter: TResampleFilter;\n  ACopyProperties: boolean): TBGRACustomBitmap;\nvar\n  temp, newtemp: TBGRACustomBitmap;\n  tempFilter1,tempFilter2: TWideKernelFilter;\nbegin\n  if (NewWidth = bmp.Width) and (NewHeight = bmp.Height) then\n  begin\n    Result := bmp.Duplicate(ACopyProperties);\n    exit;\n  end;\n  case ResampleFilter of\n    rfBicubic: //blur\n    begin\n      tempFilter1 := TCubicKernel.Create;\n      result := WideKernelResample(bmp,NewWidth,NewHeight,tempFilter1,tempFilter1);\n      tempFilter1.Free;\n      AdaptResolution(bmp, result);\n      if ACopyProperties then bmp.CopyPropertiesTo(result);\n      exit;\n    end;\n    rfMitchell:\n    begin\n      tempFilter1 := TMitchellKernel.Create;\n      result := WideKernelResample(bmp,NewWidth,NewHeight,tempFilter1,tempFilter1);\n      tempFilter1.Free;\n      AdaptResolution(bmp, result);\n      if ACopyProperties then bmp.CopyPropertiesTo(result);\n      exit;\n    end;\n    rfSpline:\n    begin\n      tempFilter1 := TSplineKernel.Create;\n      result := WideKernelResample(bmp,NewWidth,NewHeight,tempFilter1,tempFilter1);\n      tempFilter1.Free;\n      AdaptResolution(bmp, result);\n      if ACopyProperties then bmp.CopyPropertiesTo(result);\n      exit;\n    end;\n    rfLanczos2,rfLanczos3,rfLanczos4:\n    begin\n      tempFilter1 := TLanczosKernel.Create(ord(ResampleFilter)-ord(rfLanczos2)+2);\n      result := WideKernelResample(bmp,NewWidth,NewHeight,tempFilter1,tempFilter1);\n      tempFilter1.Free;\n      AdaptResolution(bmp, result);\n      if ACopyProperties then bmp.CopyPropertiesTo(result);\n      exit;\n    end;\n    rfBestQuality:\n    begin\n      tempFilter1 := TSplineKernel.Create;\n      tempFilter2 := TMitchellKernel.Create;\n      result := WideKernelResample(bmp,NewWidth,NewHeight,tempFilter2,tempFilter1);\n      tempFilter1.Free;\n      tempFilter2.Free;\n      AdaptResolution(bmp, result);\n      if ACopyProperties then bmp.CopyPropertiesTo(result);\n      exit;\n    end;\n  end;\n\n  if (NewWidth >= bmp.Width) and (NewHeight >= bmp.Height) then\n    Result := FineResampleLarger(bmp, NewWidth, NewHeight, ResampleFilter)\n  else\n  if (NewWidth <= bmp.Width) and (NewHeight <= bmp.Height) then\n    Result := FineResampleSmaller(bmp, NewWidth, NewHeight)\n  else\n  begin\n    temp := bmp;\n\n    if NewWidth < bmp.Width then\n    begin\n      newtemp := FineResampleSmaller(temp, NewWidth, temp.Height);\n      if (temp <> bmp) then\n        temp.Free;\n      temp := newtemp;\n    end;\n\n    if NewHeight < bmp.Height then\n    begin\n      newtemp := FineResampleSmaller(temp, temp.Width, NewHeight);\n      if (temp <> bmp) then\n        temp.Free;\n      temp := newtemp;\n    end;\n\n    if NewWidth > bmp.Width then\n    begin\n      newtemp := FineResampleLarger(temp, NewWidth, temp.Height, ResampleFilter);\n      if (temp <> bmp) then\n        temp.Free;\n      temp := newtemp;\n    end;\n\n    if NewHeight > bmp.Height then\n    begin\n      newtemp := FineResampleLarger(temp, temp.Width, NewHeight, ResampleFilter);\n      if (temp <> bmp) then\n        temp.Free;\n      temp := newtemp;\n    end;\n\n    if temp <> bmp then\n      Result := temp\n    else\n      Result := bmp.Duplicate;\n  end;\n  AdaptResolution(bmp, result);\n  if ACopyProperties then bmp.CopyPropertiesTo(result);\nend;\n\nfunction FineResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: Single; ASizeUnit: TCSSUnit;\n  ResampleFilter: TResampleFilter; ACopyProperties: boolean): TBGRACustomBitmap;\nbegin\n  if ASizeUnit = cuPercent then\n  begin\n    NewWidth := bmp.Width * NewWidth / 100;\n    NewHeight := bmp.Height * NewHeight / 100;\n  end else\n    PhysicalSizeToPixels(NewWidth, NewHeight, bmp.ResolutionInfo, ASizeUnit);\n\n  Result:= FineResample(bmp, HalfUp(NewWidth), HalfUp(NewHeight), ResampleFilter, ACopyProperties);\nend;\n\n\n{------------------------ Wide kernel filtering adapted from Graphics32 ---------------------------}\n\nfunction Constrain(const Value, Lo, Hi: Integer): Integer;\nbegin\n  if Value < Lo then\n  \tResult := Lo\n  else if Value > Hi then\n  \tResult := Hi\n  else\n  \tResult := Value;\nend;\n\ntype\n  TPointRec = record\n    Pos: Integer;\n    Weight: Single;\n  end;\n\n  TCluster = array of TPointRec;\n  TMappingTable = array of TCluster;\n\n{$warnings off}\nfunction BuildMappingTable(\n  DstLo, DstHi: Integer;\n  ClipLo, ClipHi: Integer;\n  SrcLo, SrcHi: Integer;\n  KernelSmaller,KernelLarger: TWideKernelFilter): TMappingTable;\nConst FullEdge = false;\nvar\n  SrcW, DstW, ClipW: Integer;\n  FilterWidth: Single;\n  Scale, OldScale: Single;\n  Center: Single;\n  Left, Right: Integer;\n  I, J, K: Integer;\n  Weight: Single;\nbegin\n  SrcW := SrcHi - SrcLo;\n  DstW := DstHi - DstLo;\n  ClipW := ClipHi - ClipLo;\n  if SrcW = 0 then\n  begin\n    Result := nil;\n    Exit;\n  end\n  else if SrcW = 1 then\n  begin\n    SetLength(Result, ClipW);\n    for I := 0 to ClipW - 1 do\n    begin\n      SetLength(Result[I], 1);\n      Result[I][0].Pos := 0;\n      Result[I][0].Weight := 1;\n    end;\n    Exit;\n  end;\n  SetLength(Result, ClipW);\n  if ClipW = 0 then Exit;\n\n  if FullEdge then Scale := DstW / SrcW\n  else Scale := (DstW - 1) / (SrcW - 1);\n\n  K := 0;\n\n  if Scale = 0 then\n  begin\n    SetLength(Result[0], 1);\n    Result[0][0].Pos := (SrcLo + SrcHi) div 2;\n    Result[0][0].Weight := 1;\n  end\n  else if Scale < 1 then\n  begin\n    FilterWidth := KernelSmaller.KernelWidth;\n    OldScale := Scale;\n    Scale := 1 / Scale;\n    FilterWidth := FilterWidth * Scale;\n    for I := 0 to ClipW - 1 do\n    begin\n      if FullEdge then\n        Center := SrcLo - 0.5 + (I - DstLo + ClipLo + 0.5) * Scale\n      else\n        Center := SrcLo + (I - DstLo + ClipLo) * Scale;\n      Left := Floor(Center - FilterWidth);\n      Right := Ceil(Center + FilterWidth);\n      for J := Left to Right do\n      begin\n        Weight := KernelSmaller.Interpolation((Center - J) * OldScale) * OldScale;\n        if Weight <> 0 then\n        begin\n          K := Length(Result[I]);\n          SetLength(Result[I], K + 1);\n          Result[I][K].Pos := Constrain(J, SrcLo, SrcHi - 1);\n          Result[I][K].Weight := Weight;\n        end;\n      end;\n      if Length(Result[I]) = 0 then\n      begin\n        SetLength(Result[I], 1);\n        Result[I][0].Pos := Floor(Center);\n        Result[I][0].Weight := 1;\n      end;\n    end;\n  end\n  else // scale > 1\n  begin\n    FilterWidth := KernelLarger.KernelWidth;\n    Scale := 1 / Scale;\n    for I := 0 to ClipW - 1 do\n    begin\n      if FullEdge then\n        Center := SrcLo - 0.5 + (I - DstLo + ClipLo + 0.5) * Scale\n      else\n        Center := SrcLo + (I - DstLo + ClipLo) * Scale;\n      Left := Floor(Center - FilterWidth);\n      Right := Ceil(Center + FilterWidth);\n      for J := Left to Right do\n      begin\n        Weight := KernelLarger.Interpolation(Center - j);\n        if Weight <> 0 then\n        begin\n          K := Length(Result[I]);\n          SetLength(Result[I], k + 1);\n          Result[I][K].Pos := Constrain(j, SrcLo, SrcHi - 1);\n          Result[I][K].Weight := Weight;\n        end;\n      end;\n    end;\n  end;\nend;\n{$warnings on}\n\nfunction WideKernelResample(bmp: TBGRACustomBitmap;\n  NewWidth, NewHeight: integer; ResampleFilterSmaller, ResampleFilterLarger: TWideKernelFilter): TBGRACustomBitmap;\ntype\n  TSum = record\n    sumR,sumG,sumB,sumA: single;\n  end;\n\nvar\n  mapX,mapY: TMappingTable;\n  xb,yb,xc,yc,MapXLoPos,MapXHiPos: integer;\n  clusterX,clusterY: TCluster;\n  verticalSum: array of TSum;\n  scanlinesSrc: array of PBGRAPixel;\n  sum: TSum;\n  c: TBGRAPixel;\n  w,wa: single;\n  pdest: PBGRAPixel;\nbegin\n  result := bmp.NewBitmap(NewWidth,NewHeight);\n  if (NewWidth=0) or (NewHeight=0) then exit;\n  mapX := BuildMappingTable(0,NewWidth,0,NewWidth,0,bmp.Width,ResampleFilterSmaller,ResampleFilterLarger);\n  mapY := BuildMappingTable(0,NewHeight,0,NewHeight,0,bmp.Height,ResampleFilterSmaller,ResampleFilterLarger);\n\n  MapXLoPos := MapX[0][0].Pos;\n  MapXHiPos := MapX[NewWidth - 1][High(MapX[NewWidth - 1])].Pos;\n\n  setlength(verticalSum, MapXHiPos-MapXLoPos+1);\n\n  setlength(scanlinesSrc, bmp.Height);\n  for yb := 0 to bmp.Height-1 do\n    scanlinesSrc[yb] := bmp.ScanLine[yb];\n\n  for yb := 0 to NewHeight-1 do\n  begin\n    clusterY := mapY[yb];\n\n    for xb := MapXLoPos to MapXHiPos do\n    begin\n      fillchar(verticalSum[xb - MapXLoPos],sizeof(verticalSum[xb - MapXLoPos]),0);\n      for yc := 0 to high(clusterY) do\n      with verticalSum[xb - MapXLoPos] do\n      begin\n        c := (scanlinesSrc[clusterY[yc].Pos]+xb)^;\n        w := clusterY[yc].Weight;\n        wa := w * c.alpha;\n        IncF(sumA, wa);\n        IncF(sumR, c.red * wa);\n        IncF(sumG, c.green * wa);\n        IncF(sumB, c.blue * wa);\n      end;\n    end;\n\n    pdest := result.Scanline[yb];\n\n    for xb := 0 to NewWidth-1 do\n    begin\n      clusterX := mapX[xb];\n      {$hints off}\n      fillchar(sum,sizeof(sum),0);\n      {$hints on}\n      for xc := 0 to high(clusterX) do\n      begin\n        w := clusterX[xc].Weight;\n        with verticalSum[ClusterX[xc].Pos - MapXLoPos] do\n        begin\n          IncF(sum.sumA, sumA*w);\n          IncF(sum.sumR, sumR*w);\n          IncF(sum.sumG, sumG*w);\n          IncF(sum.sumB, sumB*w);\n        end;\n      end;\n\n      if sum.sumA < 0.5 then\n        pdest^ := BGRAPixelTransparent else\n      begin\n        c.red := constrain(round(sum.sumR/sum.sumA),0,255);\n        c.green := constrain(round(sum.sumG/sum.sumA),0,255);\n        c.blue := constrain(round(sum.sumB/sum.sumA),0,255);\n        if sum.sumA > 255 then\n          c.alpha := 255 else\n          c.alpha := round(sum.sumA);\n        pdest^ := c;\n      end;\n      inc(pdest);\n    end;\n  end;\n\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrascanner.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  TBGRACustomBitmap = class;\n\n{=== IBGRAScanner ===}\n  {* Interface for a scanner. A scanner is like an image, but its content\n     has no limit and it can be calculated on the fly. It is like a\n     infinite readonly image.\n   *\n   * Note: it must not implement reference counting even if it is an interface\n   *\n   * TBGRACustomBitmap implements this interface and the content is repeated\n     horizontally and vertically. There are also various classes\n     in BGRAGradientScanner unit that generate gradients on the fly and\n     in BGRATransform unit that provide geometrical transformations of images }\n  IBGRAScanner = interface\n    {** Move to the position (_X_, _Y_) for the next call to _ScanNextPixel_ }\n    procedure ScanMoveTo(X,Y: Integer);\n    {** Scan the pixel at the current location and increments _X_ }\n    function ScanNextPixel: TBGRAPixel;\n    function ScanNextExpandedPixel: TExpandedPixel;\n    {** Scan at any location using floating point coordinates }\n    function ScanAt(X,Y: Single): TBGRAPixel;\n    function ScanAtExpanded(X,Y: Single): TExpandedPixel;\n    {** Scan at any location using integer coordinates }\n    function ScanAtInteger(X,Y: integer): TBGRAPixel;\n    function ScanAtIntegerExpanded(X,Y: integer): TExpandedPixel;\n    {** Copy a row of pixels from _X_ to _X_ + _count_ - 1 to a specified destination\n        _pdest_. _mode_ indicates how to combine with existing data }\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode);\n    procedure ScanSkipPixels(ACount: integer);\n    {** Returns True if the function _ScanPutPixels_ is available. Otherwise\n        you need to call _ScanNextPixel_ and combine pixels for example\n        with _SetPixel_ }\n    function IsScanPutPixelsDefined: boolean;\n    {** Returns the corresponding OpenGL texture. The value is **nil** if no texture is associated. **}\n    function GetTextureGL: IUnknown;\n    function GetImageBoundsWithin(const ARect: TRect; Channel: TChannel = cAlpha; ANothingValue: Byte = 0): TRect; overload;\n    function GetImageBoundsWithin(const ARect: TRect; Channels: TChannels; ANothingValue: Byte = 0): TRect; overload;\n    function ProvidesScanline(ARect: TRect): boolean;\n    function GetScanlineAt(X,Y: integer): PBGRAPixel;\n    function GetScanCustomColorspace: TColorspaceAny;\n    procedure ScanNextCustomChunk(var ACount: integer; out APixels: Pointer);\n    procedure ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer);\n    function ScanAtIntegerMask(X,Y: integer): TByteMask;\n    function ScanAtMask(X,Y: Single): TByteMask;\n  end;\n\n  {** A type of function of a scanner that returns the content at floating point coordinates }\n  TScanAtFunction = function (X,Y: Single): TBGRAPixel of object;\n  {** A type of function of a scanner that returns the content at integer coordinates }\n  TScanAtIntegerFunction = function (X,Y: Integer): TBGRAPixel of object;\n  {** A type of function of a scanner that returns the next pixel }\n  TScanNextPixelFunction = function: TBGRAPixel of object;\n\n  {* Base class for implementing IBGRAScanner interface }\n  TBGRACustomScanner = class(IBGRAScanner)\n  private\n    FCurX,FCurY: integer;\n    FOwnCur: boolean;\n    FChunk: packed array[0..3] of TExpandedPixel;\n  public\n    function ScanAtInteger(X,Y: integer): TBGRAPixel; virtual;\n    function ScanAtIntegerExpanded(X,Y: integer): TExpandedPixel; virtual;\n    procedure ScanMoveTo(X,Y: Integer); virtual;\n    function ScanNextPixel: TBGRAPixel; virtual;\n    function ScanNextExpandedPixel: TExpandedPixel; virtual;\n    function ScanAt(X,Y: Single): TBGRAPixel; virtual; abstract;\n    function ScanAtExpanded(X,Y: Single): TExpandedPixel; virtual;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); virtual;\n    procedure ScanSkipPixels(ACount: integer); virtual;\n    function IsScanPutPixelsDefined: boolean; virtual;\n    function GetTextureGL: IUnknown; virtual;\n    function GetImageBoundsWithin(const ARect: TRect; Channel: TChannel = cAlpha; ANothingValue: Byte = 0): TRect; overload; virtual;\n    function GetImageBoundsWithin(const ARect: TRect; Channels: TChannels; ANothingValue: Byte = 0): TRect; overload; virtual;\n    function ProvidesScanline({%H-}ARect: TRect): boolean; virtual;\n    function GetScanlineAt({%H-}X,{%H-}Y: integer): PBGRAPixel; virtual;\n    function GetScanCustomColorspace: TColorspaceAny; virtual;\n    procedure ScanNextCustomChunk(var ACount: integer; out APixels: Pointer); virtual;\n    procedure ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer); virtual;\n    function ScanAtIntegerMask(X,Y: integer): TByteMask; virtual;\n    function ScanAtMask(X,Y: Single): TByteMask; virtual;\n  protected\n    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n  end;\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n{ TBGRACustomScanner }\n{ The abstract class record the position so that a derived class\n  need only to redefine ScanAt }\n\nfunction TBGRACustomScanner.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  result := ScanAt(X,Y);\nend;\n\nfunction TBGRACustomScanner.ScanAtIntegerExpanded(X, Y: integer\n  ): TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanAtInteger(X,Y));\nend;\n\nprocedure TBGRACustomScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FCurX := X;\n  FCurY := Y;\n  FOwnCur := true;\nend;\n\n{ Call ScanAt to determine pixel value }\nfunction TBGRACustomScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  result := ScanAt(FCurX,FCurY);\n  Inc(FCurX);\nend;\n\nfunction TBGRACustomScanner.ScanNextExpandedPixel: TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanNextPixel);\nend;\n\nfunction TBGRACustomScanner.ScanAtExpanded(X, Y: Single): TExpandedPixel;\nbegin\n  result := GammaExpansion(ScanAt(X,Y));\nend;\n\n{$hints off}\nprocedure TBGRACustomScanner.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nbegin\n  //do nothing\nend;\n\nprocedure TBGRACustomScanner.ScanSkipPixels(ACount: integer);\nbegin\n  if FOwnCur then inc(FCurX, ACount)\n  else\n  begin\n    while ACount > 0 do\n    begin\n      ScanNextPixel;\n      dec(ACount);\n    end;\n  end;\nend;\n\n{$hints on}\n\nfunction TBGRACustomScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRACustomScanner.GetTextureGL: IUnknown;\nbegin\n  result := nil;\nend;\n\nfunction TBGRACustomScanner.GetImageBoundsWithin(const ARect: TRect;\n  Channel: TChannel; ANothingValue: Byte): TRect;\nbegin\n  result := InternalGetImageBoundsWithin(nil,self,ARect,[Channel],ANothingValue);\nend;\n\nfunction TBGRACustomScanner.GetImageBoundsWithin(const ARect: TRect;\n  Channels: TChannels; ANothingValue: Byte): TRect;\nbegin\n  result := InternalGetImageBoundsWithin(nil,self,ARect,Channels,ANothingValue);\nend;\n\nfunction TBGRACustomScanner.ProvidesScanline(ARect: TRect): boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRACustomScanner.GetScanlineAt(X, Y: integer): PBGRAPixel;\nbegin\n  result := nil;\nend;\n\nfunction TBGRACustomScanner.GetScanCustomColorspace: TColorspaceAny;\nbegin\n  result := TExpandedPixelColorspace;\nend;\n\nprocedure TBGRACustomScanner.ScanNextCustomChunk(var ACount: integer; out\n  APixels: Pointer);\nvar\n  i: Integer;\n  p: PExpandedPixel;\nbegin\n  if ACount > length(FChunk) then ACount := length(FChunk);\n  p := @FChunk[low(FChunk)];\n  APixels := p;\n  for i := ACount-1 downto 0 do\n  begin\n    p^ := ScanNextExpandedPixel;\n    inc(p);\n  end;\nend;\n\nprocedure TBGRACustomScanner.ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer);\nvar\n  cs: TColorspaceAny;\n  pPixels: Pointer;\nbegin\n  cs := GetScanCustomColorspace;\n  if cs = TBGRAPixelColorspace then\n  begin\n    ScanNextCustomChunk(ACount, pPixels);\n    AMask := @PBGRAPixel(pPixels)^.green;\n    AStride := sizeof(TBGRAPixel);\n  end else\n  if cs = TByteMaskColorspace then\n  begin\n    ScanNextCustomChunk(ACount, pPixels);\n    AMask := PByteMask(pPixels);\n    AStride := sizeof(TByteMask);\n  end else\n    raise exception.Create('This scanner does not provide a mask.');\nend;\n\nfunction TBGRACustomScanner.ScanAtIntegerMask(X,Y: integer): TByteMask;\nbegin\n  if GetScanCustomColorspace = TBGRAPixelColorspace then\n    result.gray := ScanAtInteger(X,Y).green\n  else\n    result := ScanAtMask(X,Y);\nend;\n\nfunction TBGRACustomScanner.ScanAtMask(X,Y: Single): TByteMask;\nbegin\n  if GetScanCustomColorspace = TBGRAPixelColorspace then\n    result.gray := ScanAt(X,Y).green\n  else\n    raise exception.Create('This scanner does not provide a mask.');\nend;\n\n{ Interface gateway }\nfunction TBGRACustomScanner.QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  if GetInterface(iid, obj) then\n    Result := S_OK\n  else\n    Result := longint(E_NOINTERFACE);\nend;\n\n{ There is no automatic reference counting, but it is compulsory to define these functions }\nfunction TBGRACustomScanner._AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nfunction TBGRACustomScanner._Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/bgrascene3d.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Definition of a 3D scene }\nunit BGRAScene3D;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRAColorInt,\n  BGRASSE, BGRAMatrix3D,\n  BGRASceneTypes, BGRARenderer3D;\n\ntype\n  TProjection3D = BGRAMatrix3D.TProjection3D;\n  TLightingNormal3D = BGRASceneTypes.TLightingNormal3D;\n  TLightingInterpolation3D = BGRASceneTypes.TLightingInterpolation3D;\n  TAntialiasingMode3D = BGRASceneTypes.TAntialiasingMode3D;\n  TPerspectiveMode3D = BGRASceneTypes.TPerspectiveMode3D;\n  TRenderingOptions = BGRASceneTypes.TRenderingOptions;\n\n  IBGRAVertex3D = BGRASceneTypes.IBGRAVertex3D;\n  IBGRANormal3D = BGRASceneTypes.IBGRANormal3D;\n  IBGRALight3D = BGRASceneTypes.IBGRALight3D;\n  IBGRADirectionalLight3D = BGRASceneTypes.IBGRADirectionalLight3D;\n  IBGRAPointLight3D = BGRASceneTypes.IBGRAPointLight3D;\n  IBGRAMaterial3D = BGRASceneTypes.IBGRAMaterial3D;\n  IBGRAFace3D = BGRASceneTypes.IBGRAFace3D;\n  IBGRAPart3D = BGRASceneTypes.IBGRAPart3D;\n  IBGRAObject3D = BGRASceneTypes.IBGRAObject3D;\n\n  arrayOfIBGRAVertex3D = BGRASceneTypes.arrayOfIBGRAVertex3D;\n\nconst\n  lnNone = BGRASceneTypes.lnNone;\n  lnFace = BGRASceneTypes.lnFace;\n  lnVertex = BGRASceneTypes.lnVertex;\n  lnFaceVertexMix = BGRASceneTypes.lnFaceVertexMix;\n\n  liLowQuality = BGRASceneTypes.liLowQuality;\n  liSpecularHighQuality = BGRASceneTypes.liSpecularHighQuality;\n  liAlwaysHighQuality = BGRASceneTypes.liAlwaysHighQuality;\n\n  am3dNone = BGRASceneTypes.am3dNone;\n  am3dMultishape = BGRASceneTypes.am3dMultishape;\n  am3dResample = BGRASceneTypes.am3dResample;\n\n  pmLinearMapping = BGRASceneTypes.pmLinearMapping;\n  pmPerspectiveMapping = BGRASceneTypes.pmPerspectiveMapping;\n  pmZBuffer = BGRASceneTypes.pmZBuffer;\n\ntype\n  { Camera for a 3D scene }\n  TCamera3D = class\n  private\n    procedure ComputeMatrix;\n    function GetLookWhere: TPoint3D;\n    function GetMatrix: TMatrix3D;\n    function GetViewPoint: TPoint3D;\n    procedure SetMatrix(AValue: TMatrix3D);\n    procedure SetViewPoint(AValue: TPoint3D);\n  protected\n    FMatrix: TMatrix3D;\n    FMatrixComputed: boolean;\n    FViewPoint: TPoint3D_128;\n    FLookWhere, FTopDir: TPoint3D_128;\n  public\n    procedure LookAt(AWhere: TPoint3D; ATopDir: TPoint3D);\n    procedure LookDown(angleDeg: single);\n    procedure LookLeft(angleDeg: single);\n    procedure LookRight(angleDeg: single);\n    procedure LookUp(angleDeg: single);\n    property ViewPoint: TPoint3D read GetViewPoint write SetViewPoint;\n    property LookWhere: TPoint3D read GetLookWhere;\n    property Matrix: TMatrix3D read GetMatrix write SetMatrix;\n  end;\n\n  { 3D scene }\n  TBGRAScene3D = class\n  private\n    FSurface: TBGRACustomBitmap; //destination of software renderer\n    FViewCenter: TPointF;        //where origin is drawn\n    FAutoViewCenter: boolean;    //use middle of the screen\n    FZoom: TPointF;              //how much the drawing is zoomed\n    FAutoZoom: Boolean;          //display 1 as 80% of surface size\n    FProjection: TProjection3D;  //current projection\n    FRenderedFaceCount: integer; //current counter of rendered faces\n\n    FCamera: TCamera3D;\n\n    FObjects: array of IBGRAObject3D;\n    FObjectCount: integer;\n    FMaterials: array of IBGRAMaterial3D;\n    FMaterialCount: integer;\n    FDefaultMaterial : IBGRAMaterial3D;\n\n    FAmbiantLightColorF: TColorF;        //lightness without light sources\n    FLights: TList;                      //individual light sources\n\n    function GetAmbiantLightColorF: TColorF;\n    function GetAmbiantLightness: single;\n    function GetAmbiantLightColor: TBGRAPixel;\n    function GetFaceCount: integer;\n    function GetLight(AIndex: integer): IBGRALight3D;\n    function GetLightCount: integer;\n    function GetMaterial(AIndex: integer): IBGRAMaterial3D;\n    function GetNormalCount: integer;\n    function GetObject(AIndex: integer): IBGRAObject3D;\n    function GetVertexCount: integer;\n    function GetViewCenter: TPointF;\n    function GetViewPoint: TPoint3D;\n    function GetZoom: TPointF;\n    procedure SetAmbiantLightColorF(const AValue: TColorF);\n    procedure SetAmbiantLightness(const AValue: single);\n    procedure SetAmbiantLightColor(const AValue: TBGRAPixel);\n    procedure SetAutoViewCenter(const AValue: boolean);\n    procedure SetAutoZoom(const AValue: boolean);\n    procedure SetViewCenter(const AValue: TPointF);\n    procedure SetViewPoint(const AValue: TPoint3D);\n    procedure ComputeView(ScaleX,ScaleY: single);\n    function ComputeCoordinate(AViewCoord: TPoint3D_128): TPointF;\n    procedure AddObject(AObj: IBGRAObject3D);\n    procedure AddLight(ALight: TObject);\n    procedure AddMaterial(AMaterial: IBGRAMaterial3D);\n    procedure Init;\n\n  protected\n    FRenderer: TCustomRenderer3D;\n    FMaterialLibrariesFetched: array of string;\n    FTexturesFetched: array of record\n        Name: string;\n        Bitmap: TBGRACustomBitmap;\n      end;\n    procedure UseMaterial(AMaterialName: string; AFace: IBGRAFace3D); virtual;\n    function LoadBitmapFromFileUTF8(AFilenameUTF8: string): TBGRACustomBitmap; virtual;\n    function FetchTexture(AName: string; out texSize: TPointF): IBGRAScanner; virtual;\n    procedure HandleFetchException(AException: Exception); virtual;\n    procedure DoRender; virtual;\n    procedure DoClear; virtual;\n    function GetRenderWidth: integer;\n    function GetRenderHeight: integer;\n    procedure OnMaterialTextureChanged({%H-}ASender: TObject); virtual;\n    procedure SetDefaultMaterial(AValue: IBGRAMaterial3D);\n    procedure InvalidateMaterial;\n\n  public\n    DefaultLightingNormal: TLightingNormal3D;\n    RenderingOptions: TRenderingOptions;\n    UnknownColor: TBGRAPixel;\n    FetchDirectory: string;\n    FetchThrowsException: boolean;\n\n    constructor Create; overload;\n    constructor Create(ASurface: TBGRACustomBitmap); overload;\n    destructor Destroy; override;\n    procedure Clear; virtual;\n    function FetchObject(AName: string; SwapFacesOrientation: boolean = true): IBGRAObject3D;\n    procedure FetchMaterials(ALibraryName: string); virtual;\n    function LoadObjectFromFile(AFilename: string; SwapFacesOrientation: boolean = true): IBGRAObject3D;\n    function LoadObjectFromFileUTF8(AFilename: string; SwapFacesOrientation: boolean = true): IBGRAObject3D;\n    function LoadObjectFromStream(AStream: TStream; SwapFacesOrientation: boolean = true): IBGRAObject3D;\n    procedure LoadMaterialsFromFile(AFilename: string);\n    procedure LoadMaterialsFromFileUTF8(AFilename: string);\n    procedure LoadMaterialsFromStream(AStream: TStream);\n    procedure LookAt(AWhere: TPoint3D; ATopDir: TPoint3D);\n    procedure LookLeft(angleDeg: single);\n    procedure LookRight(angleDeg: single);\n    procedure LookUp(angleDeg: single);\n    procedure LookDown(angleDeg: single);\n    procedure Render;  overload; virtual;\n    procedure Render(ARenderer: TCustomRenderer3D); overload;\n    function CreateObject: IBGRAObject3D; overload;\n    function CreateObject(ATexture: IBGRAScanner): IBGRAObject3D; overload;\n    function CreateObject(AColor: TBGRAPixel): IBGRAObject3D; overload;\n    function CreateSphere(ARadius: Single; AHorizPrecision: integer = 8; AVerticalPrecision : integer = 6): IBGRAObject3D; overload;\n    function CreateSphere(ARadius: Single; AColor: TBGRAPixel; AHorizPrecision: integer = 8; AVerticalPrecision : integer = 6): IBGRAObject3D; overload;\n    function CreateHalfSphere(ARadius: Single; AHorizPrecision: integer = 6; AVerticalPrecision : integer = 6): IBGRAObject3D; overload;\n    function CreateHalfSphere(ARadius: Single; AColor: TBGRAPixel; AHorizPrecision: integer = 6; AVerticalPrecision : integer = 6): IBGRAObject3D; overload;\n    procedure RemoveObject(AObject: IBGRAObject3D);\n    function AddDirectionalLight(ADirection: TPoint3D; ALightness: single = 1; AMinIntensity : single = 0): IBGRADirectionalLight3D; overload;\n    function AddDirectionalLight(ADirection: TPoint3D; AColor: TBGRAPixel; AMinIntensity: single = 0): IBGRADirectionalLight3D; overload;\n    function AddPointLight(AVertex: IBGRAVertex3D; AOptimalDistance: single; ALightness: single = 1; AMinIntensity : single = 0): IBGRAPointLight3D; overload;\n    function AddPointLight(AVertex: IBGRAVertex3D; AOptimalDistance: single; AColor: TBGRAPixel; AMinIntensity: single = 0): IBGRAPointLight3D; overload;\n    procedure RemoveLight(ALight: IBGRALight3D);\n    procedure SetZoom(value: Single); overload;\n    procedure SetZoom(value: TPointF); overload;\n    function CreateMaterial: IBGRAMaterial3D; overload;\n    function CreateMaterial(ASpecularIndex: integer): IBGRAMaterial3D; overload;\n    function GetMaterialByName(AName: string): IBGRAMaterial3D;\n    procedure UpdateMaterials; virtual;\n    procedure UpdateMaterial(AMaterialName: string); virtual;\n    procedure ForEachVertex(ACallback: TVertex3DCallback);\n    procedure ForEachFace(ACallback: TFace3DCallback);\n    function MakeLightList: TList;\n\n    property ViewCenter: TPointF read GetViewCenter write SetViewCenter;\n    property AutoViewCenter: boolean read FAutoViewCenter write SetAutoViewCenter;\n    property AutoZoom: boolean read FAutoZoom write SetAutoZoom;\n    property Surface: TBGRACustomBitmap read FSurface write FSurface;\n    property Object3D[AIndex: integer]: IBGRAObject3D read GetObject;\n    property Object3DCount: integer read FObjectCount;\n    property VertexCount: integer read GetVertexCount;\n    property NormalCount: integer read GetNormalCount;\n    property FaceCount: integer read GetFaceCount;\n    property Zoom: TPointF read GetZoom write SetZoom;\n    property AmbiantLightness: single read GetAmbiantLightness write SetAmbiantLightness;\n    property AmbiantLightColor: TBGRAPixel read GetAmbiantLightColor write SetAmbiantLightColor;\n    property AmbiantLightColorF: TColorF read GetAmbiantLightColorF write SetAmbiantLightColorF;\n    property LightCount: integer read GetLightCount;\n    property Light[AIndex: integer]: IBGRALight3D read GetLight;\n    property ViewPoint: TPoint3D read GetViewPoint write SetViewPoint;\n    property RenderedFaceCount : integer read FRenderedFaceCount;\n    property Material[AIndex: integer] : IBGRAMaterial3D read GetMaterial;\n    property MaterialCount: integer read FMaterialCount;\n    property Camera: TCamera3D read FCamera;\n    property DefaultMaterial: IBGRAMaterial3D read FDefaultMaterial write SetDefaultMaterial;\n  end;\n\nimplementation\n\nuses BGRACoordPool3D, BGRAUTF8;\n\n{$i lightingclasses3d.inc}\n{$i vertex3d.inc}\n{$i face3d.inc}\n{$i part3d.inc}\n{$i object3d.inc}\n{$i shapes3d.inc}\n\n{ TCamera3D }\n\nfunction TCamera3D.GetLookWhere: TPoint3D;\nbegin\n  result := Point3D(FLookWhere);\nend;\n\nfunction TCamera3D.GetMatrix: TMatrix3D;\nbegin\n  if not FMatrixComputed then\n  begin\n    ComputeMatrix;\n    FMatrixComputed := true;\n  end;\n  result := FMatrix;\nend;\n\nfunction TCamera3D.GetViewPoint: TPoint3D;\nbegin\n  result := Point3D(FViewPoint);\nend;\n\nprocedure TCamera3D.SetMatrix(AValue: TMatrix3D);\nbegin\n  FMatrix := AValue;\n  FMatrixComputed:= true;\n  FViewPoint := Point3D_128(FMatrix[1,4],FMatrix[2,4],FMatrix[3,4]);\nend;\n\nprocedure TCamera3D.SetViewPoint(AValue: TPoint3D);\nbegin\n  FViewPoint := Point3D_128(AValue);\n  FMatrix[1,4] := FViewPoint.x;\n  FMatrix[2,4] := FViewPoint.y;\n  FMatrix[3,4] := FViewPoint.z;\n  FMatrixComputed := false;\nend;\n\nprocedure TCamera3D.ComputeMatrix;\nvar ZDir, XDir, YDir: TPoint3D_128;\nbegin\n  if IsPoint3D_128_Zero(FTopDir) then exit;\n  YDir := -FTopDir;\n  Normalize3D_128(YDir);\n\n  ZDir := FLookWhere-FViewPoint;\n  if IsPoint3D_128_Zero(ZDir) then exit;\n  Normalize3D_128(ZDir);\n\n  VectProduct3D_128(YDir,ZDir,XDir);\n  VectProduct3D_128(ZDir,XDir,YDir); //correct Y dir\n  Normalize3D_128(XDir);\n  Normalize3D_128(YDir);\n\n  FMatrix := Matrix3D(XDir,YDir,ZDir,FViewPoint);\n  FMatrix := MatrixInverse3D(FMatrix);\nend;\n\nprocedure TCamera3D.LookAt(AWhere: TPoint3D; ATopDir: TPoint3D);\nbegin\n  FLookWhere := Point3D_128(AWhere);\n  FTopDir := Point3D_128(ATopDir);\n  FMatrixComputed := false;\nend;\n\nprocedure TCamera3D.LookLeft(angleDeg: single);\nvar m,inv: TMatrix3D;\nbegin\n  inv := MatrixInverse3D(Matrix);\n  m := MatrixRotateY(angleDeg*Pi/180);\n  FLookWhere := inv*m*Matrix*FLookWhere;\n  FMatrixComputed := false;\nend;\n\nprocedure TCamera3D.LookRight(angleDeg: single);\nbegin\n  LookLeft(-angleDeg);\nend;\n\nprocedure TCamera3D.LookUp(angleDeg: single);\nvar m,inv: TMatrix3D;\nbegin\n  inv := MatrixInverse3D(Matrix);\n  m := MatrixRotateX(-angleDeg*Pi/180);\n  FLookWhere := inv*m*Matrix*FLookWhere;\n  FMatrixComputed := false;\nend;\n\nprocedure TCamera3D.LookDown(angleDeg: single);\nbegin\n  LookUp(-angleDeg);\nend;\n\n\n{ TBGRAScene3D }\n\nfunction TBGRAScene3D.GetViewCenter: TPointF;\nbegin\n  if FAutoViewCenter then\n  begin\n    result := PointF((GetRenderWidth-1)/2,(GetRenderHeight-1)/2)\n  end\n  else\n    result := FViewCenter;\nend;\n\nfunction TBGRAScene3D.GetViewPoint: TPoint3D;\nbegin\n  result := Camera.ViewPoint;\nend;\n\nfunction TBGRAScene3D.GetZoom: TPointF;\nvar size: single;\nbegin\n  if FAutoZoom then\n  begin\n    Size := sqrt(GetRenderWidth*GetRenderHeight)*0.8;\n    if Size = 0 then\n      result := PointF(1,1)\n    else\n      result := PointF(size,size);\n  end else\n    result := FZoom;\nend;\n\nprocedure TBGRAScene3D.SetAmbiantLightColorF(const AValue: TColorF);\nbegin\n  FAmbiantLightColorF := AValue;\nend;\n\nprocedure TBGRAScene3D.SetAmbiantLightness(const AValue: single);\nbegin\n  FAmbiantLightColorF := ColorF(AValue, AValue, AValue, 1);\nend;\n\nprocedure TBGRAScene3D.SetAmbiantLightColor(const AValue: TBGRAPixel);\nbegin\n  FAmbiantLightColorF := ColorInt65536ToColorF(BGRAToColorInt(AValue,True));\nend;\n\nfunction TBGRAScene3D.GetObject(AIndex: integer): IBGRAObject3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FObjectCount) then\n    raise exception.Create('Index out of bounds');\n  result := FObjects[AIndex];\nend;\n\nfunction TBGRAScene3D.GetVertexCount: integer;\nvar i: integer;\nbegin\n  result := 0;\n  for i := 0 to Object3DCount-1 do\n    inc(result, Object3D[i].TotalVertexCount);\nend;\n\nfunction TBGRAScene3D.GetAmbiantLightColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(ColorFToColorInt65536(FAmbiantLightColorF),True);\nend;\n\nfunction TBGRAScene3D.GetFaceCount: integer;\nvar i: integer;\nbegin\n  result := 0;\n  for i := 0 to Object3DCount-1 do\n    inc(result, Object3D[i].FaceCount);\nend;\n\nfunction TBGRAScene3D.GetLight(AIndex: integer): IBGRALight3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FLights.Count) then\n    result := nil\n  else\n    result := TBGRALight3D(FLights[AIndex]);\nend;\n\nfunction TBGRAScene3D.GetLightCount: integer;\nbegin\n  result := FLights.Count;\nend;\n\nfunction TBGRAScene3D.GetMaterial(AIndex: integer): IBGRAMaterial3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FMaterialCount) then\n    raise exception.Create('Index out of bounds');\n  result := FMaterials[AIndex];\nend;\n\nfunction TBGRAScene3D.GetNormalCount: integer;\nvar i: integer;\nbegin\n  result := 0;\n  for i := 0 to Object3DCount-1 do\n    inc(result, Object3D[i].TotalNormalCount);\nend;\n\nfunction TBGRAScene3D.GetAmbiantLightness: single;\nbegin\n  result := (FAmbiantLightColorF[1]+FAmbiantLightColorF[2]+FAmbiantLightColorF[3])/3;\nend;\n\nfunction TBGRAScene3D.GetAmbiantLightColorF: TColorF;\nbegin\n  result := FAmbiantLightColorF;\nend;\n\nprocedure TBGRAScene3D.SetAutoViewCenter(const AValue: boolean);\nbegin\n  if FAutoViewCenter=AValue then exit;\n  if not AValue then\n    FViewCenter := ViewCenter;\n  FAutoViewCenter:=AValue;\nend;\n\nprocedure TBGRAScene3D.SetAutoZoom(const AValue: boolean);\nbegin\n  if FAutoZoom=AValue then exit;\n  if not AValue then\n    FZoom := Zoom;\n  FAutoZoom:=AValue;\nend;\n\nprocedure TBGRAScene3D.SetDefaultMaterial(AValue: IBGRAMaterial3D);\nbegin\n  if FDefaultMaterial=AValue then Exit;\n  FDefaultMaterial:=AValue;\n  InvalidateMaterial;\nend;\n\nprocedure TBGRAScene3D.SetViewCenter(const AValue: TPointF);\nbegin\n  FViewCenter := AValue;\n  FAutoViewCenter:= False;\nend;\n\nprocedure TBGRAScene3D.SetViewPoint(const AValue: TPoint3D);\nbegin\n  Camera.ViewPoint := AValue;\nend;\n\nprocedure TBGRAScene3D.AddObject(AObj: IBGRAObject3D);\nbegin\n  if FObjectCount = length(FObjects) then\n    setlength(FObjects, FObjectCount*2+1);\n  FObjects[FObjectCount] := AObj;\n  inc(FObjectCount);\nend;\n\nprocedure TBGRAScene3D.AddLight(ALight: TObject);\nbegin\n  FLights.Add(ALight);\n  IBGRALight3D(TBGRALight3D(ALight))._AddRef;\nend;\n\nprocedure TBGRAScene3D.AddMaterial(AMaterial: IBGRAMaterial3D);\nbegin\n  if FMaterialCount = length(FMaterials) then\n    setlength(FMaterials, FMaterialCount*2+1);\n  FMaterials[FMaterialCount] := AMaterial;\n  inc(FMaterialCount);\nend;\n\nprocedure TBGRAScene3D.Init;\nbegin\n  UnknownColor := BGRA(0,128,255);\n  FAutoZoom := True;\n  FAutoViewCenter := True;\n\n  FCamera := TCamera3D.Create;\n  Camera.ViewPoint := Point3D(0,0,-100);\n  Camera.LookAt(Point3D(0,0,0), Point3D(0,-1,0));\n  with RenderingOptions do\n  begin\n    TextureInterpolation := False;\n    PerspectiveMode := pmPerspectiveMapping;\n    LightingInterpolation := liSpecularHighQuality;\n    AntialiasingMode := am3dNone;\n    AntialiasingResampleLevel := 2;\n  end;\n  AmbiantLightness := 1;\n  AmbiantLightColor := BGRAWhite;\n  DefaultLightingNormal := lnFaceVertexMix;\n  FLights := TList.Create;\n  FRenderedFaceCount:= 0;\n  FMaterialCount := 0;\n  FObjectCount := 0;\n  DefaultMaterial := CreateMaterial;\n  RenderingOptions.MinZ := 1;\nend;\n\nconstructor TBGRAScene3D.Create;\nbegin\n  Init;\nend;\n\nconstructor TBGRAScene3D.Create(ASurface: TBGRACustomBitmap);\nbegin\n  FSurface := ASurface;\n  Init;\nend;\n\ndestructor TBGRAScene3D.Destroy;\nvar\n  i: Integer;\nbegin\n  DoClear;\n  FreeAndNil(FLights);\n  FreeAndNil(FCamera);\n  for i := 0 to high(FTexturesFetched) do\n    FTexturesFetched[i].Bitmap.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRAScene3D.Clear;\nbegin\n  DoClear;\n  DefaultMaterial := CreateMaterial;\nend;\n\nfunction TBGRAScene3D.FetchObject(AName: string; SwapFacesOrientation: boolean\n  ): IBGRAObject3D;\nbegin\n  if FetchDirectory = '' then raise exception.Create('Please define first the FetchDirectory');\n  try\n    result := LoadObjectFromFileUTF8(ConcatPaths([FetchDirectory,AName]), SwapFacesOrientation);\n  except\n    on ex:Exception do\n      HandleFetchException(ex);\n  end;\nend;\n\nprocedure TBGRAScene3D.UseMaterial(AMaterialName: string; AFace: IBGRAFace3D);\n\n  function ParseColor(text: string): TBGRAPixel;\n  var\n    color,tempColor: TBGRAPixel;\n  begin\n    color := UnknownColor;\n\n    if copy(text,1,2) = 'dk' then\n    begin\n      tempcolor := ParseColor(copy(text,3,length(text)-2));\n      tempcolor := MergeBGRA(tempcolor,3,BGRABlack,1);\n      color := StrToBGRA('dark'+copy(text,3,length(text)-2),tempcolor);\n    end;\n    if copy(text,1,2) = 'lt' then\n    begin\n      tempcolor := ParseColor(copy(text,3,length(text)-2));\n      tempcolor := MergeBGRA(tempcolor,3,BGRAWhite,1);\n      color := StrToBGRA('light'+copy(text,3,length(text)-2),tempcolor);\n    end;\n    Color := StrToBGRA(StringReplace(text,'deep','dark',[]),Color);\n    Color := StrToBGRA(StringReplace(text,'dark','deep',[]),Color);\n    Color := StrToBGRA(text,Color);\n    result := color;\n  end;\n\nvar\n  mat: IBGRAMaterial3D;\n  c: TBGRAPixel;\nbegin\n  mat := GetMaterialByName(AMaterialName);\n  if mat = nil then\n  begin\n    mat := CreateMaterial;\n    mat.Name := AMaterialName;\n    c := ParseColor(AMaterialName);\n    mat.AmbiantColor := c;\n    mat.DiffuseColor := c;\n  end;\n  AFace.Material := mat;\nend;\n\nfunction TBGRAScene3D.LoadBitmapFromFileUTF8(AFilenameUTF8: string): TBGRACustomBitmap;\nbegin\n  result := BGRABitmapFactory.Create(AfileNameUTF8,True);\nend;\n\nfunction TBGRAScene3D.FetchTexture(AName: string; out texSize: TPointF): IBGRAScanner;\nvar\n  i: Integer;\n  bmp: TBGRACustomBitmap;\nbegin\n  bmp := nil;\n  for i := 0 to high(FTexturesFetched) do\n    if FTexturesFetched[i].Name = AName then\n    begin\n      bmp := FTexturesFetched[i].Bitmap;\n      result := bmp;\n      texSize := PointF(bmp.Width,bmp.Height);\n      exit;\n    end;\n  if FetchDirectory <> '' then\n  begin\n    try\n      bmp := LoadBitmapFromFileUTF8(ConcatPaths([FetchDirectory,AName]));\n    except\n      on ex:Exception do\n        HandleFetchException(ex);\n    end;\n  end;\n  if bmp = nil then\n  begin\n    result := nil;\n    texSize := PointF(1,1);\n  end else\n  begin\n    setlength(FTexturesFetched, length(FTexturesFetched)+1);\n    FTexturesFetched[high(FTexturesFetched)].Name := AName;\n    FTexturesFetched[high(FTexturesFetched)].Bitmap := bmp;\n    result := bmp;\n    texSize := PointF(bmp.Width,bmp.Height);\n  end;\nend;\n\nprocedure TBGRAScene3D.FetchMaterials(ALibraryName: string);\nvar\n  i: Integer;\nbegin\n  if FetchDirectory <> '' then\n  begin\n    for i := 0 to high(FMaterialLibrariesFetched) do\n      if FMaterialLibrariesFetched[i]=ALibraryName then exit;\n    setlength(FMaterialLibrariesFetched,length(FMaterialLibrariesFetched)+1);\n    FMaterialLibrariesFetched[high(FMaterialLibrariesFetched)] := ALibraryName;\n    try\n      LoadMaterialsFromFile(ConcatPaths([FetchDirectory,ALibraryName]));\n    except\n      on ex:Exception do\n        HandleFetchException(ex);\n    end;\n  end;\nend;\n\nprocedure TBGRAScene3D.HandleFetchException(AException: Exception);\nbegin\n  if FetchThrowsException then\n    raise AException;\nend;\n\nprocedure TBGRAScene3D.DoClear;\nvar i: integer;\nbegin\n  for i := 0 to FLights.Count-1 do\n    TBGRALight3D(FLights[i]).ReleaseInterface;\n  FLights.Clear;\n\n  for i := 0 to FObjectCount-1 do\n  begin\n    FObjects[i].Clear;\n    FObjects[i] := nil;\n  end;\n  FObjects := nil;\n  FObjectCount := 0;\n\n  FMaterials := nil;\n  FMaterialCount := 0;\n  DefaultMaterial := nil;\nend;\n\nfunction TBGRAScene3D.GetRenderWidth: integer;\nbegin\n  if Assigned(FRenderer) then\n    result := FRenderer.SurfaceWidth\n  else\n  if Assigned(FSurface) then\n    result := FSurface.Width\n  else\n    result := 0;\nend;\n\nfunction TBGRAScene3D.GetRenderHeight: integer;\nbegin\n  if Assigned(FRenderer) then\n    result := FRenderer.SurfaceHeight\n  else\n  if Assigned(FSurface) then\n    result := FSurface.Height\n  else\n    result := 0;\nend;\n\nprocedure TBGRAScene3D.OnMaterialTextureChanged(ASender: TObject);\nbegin\n  InvalidateMaterial;\nend;\n\nprocedure TBGRAScene3D.InvalidateMaterial;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FObjectCount-1 do\n    FObjects[i].InvalidateMaterial;\nend;\n\nfunction TBGRAScene3D.LoadObjectFromFile(AFilename: string; SwapFacesOrientation: boolean): IBGRAObject3D;\nbegin\n  result := LoadObjectFromFileUTF8(SysToUTF8(AFilename), SwapFacesOrientation);\nend;\n\nfunction TBGRAScene3D.LoadObjectFromFileUTF8(AFilename: string;\n  SwapFacesOrientation: boolean): IBGRAObject3D;\nvar source: TFileStreamUTF8;\nbegin\n  source := TFileStreamUTF8.Create(AFilename,fmOpenRead,fmShareDenyWrite);\n  try\n    result := LoadObjectFromStream(source,SwapFacesOrientation);\n  finally\n    source.free;\n  end;\nend;\n\nfunction TBGRAScene3D.LoadObjectFromStream(AStream: TStream;\n  SwapFacesOrientation: boolean): IBGRAObject3D;\nvar s: string;\n  secondValue,thirdValue: string;\n\n  function GetNextToken: string;\n  var idxStart,idxEnd,idxSlash: integer;\n  begin\n    idxStart := 1;\n    while (idxStart <= length(s)) and (s[idxStart]in[' ',#9]) do inc(idxStart);\n    if idxStart > length(s) then\n    begin\n      result := '';\n      exit;\n    end;\n    idxEnd := idxStart;\n    while (idxEnd < length(s)) and not (s[idxEnd+1]in[' ',#9]) do inc(idxEnd);\n    result := copy(s,idxStart, idxEnd-idxStart+1);\n    delete(s,1,idxEnd);\n    idxSlash := pos('/',result);\n    if idxSlash <> 0 then\n    begin\n      secondValue:= copy(result,idxSlash+1,length(result)-idxSlash);\n      result := copy(result,1,idxSlash-1);\n      idxSlash:= pos('/',secondValue);\n      if idxSlash <> 0 then\n      begin\n        thirdValue:= copy(secondValue,idxSlash+1,length(secondValue)-idxSlash);\n        secondValue:= copy(secondValue,1,idxSlash-1);\n      end else\n        thirdValue:= '';\n    end else\n    begin\n      secondValue:= '';\n      thirdValue:= '';\n    end;\n  end;\n\ntype\n  TFaceVertexExtra = record\n    normal: IBGRANormal3D;\n    texCoord: TPointF;\n  end;\n\nvar lineType : string;\n    x,y,z : single;\n    code : integer;\n    faceVertices: array of IBGRAVertex3D;\n    faceExtra: array of TFaceVertexExtra;\n    NbFaceVertices,v,v2,v3,i: integer;\n    tempV: IBGRAVertex3D;\n    tempN: TFaceVertexExtra;\n    materialname: string;\n    face: IBGRAFace3D;\n    lines: TStringList;\n    lineIndex: integer;\n    texCoords: array of TPointF;\n    nbTexCoords: integer;\n\nbegin\n  lines := TStringList.Create;\n  lines.LoadFromStream(AStream);\n  result := CreateObject;\n  faceVertices := nil;\n  faceExtra := nil;\n  NbFaceVertices:= 0;\n  materialname := 'default';\n  lineIndex := 0;\n  texCoords := nil;\n  nbTexCoords:= 0;\n  while lineIndex < lines.Count do\n  begin\n    s := lines[lineIndex];\n    if pos('#',s) <> 0 then\n      s := copy(s,1,pos('#',s)-1);\n    inc(lineIndex);\n    lineType := GetNextToken;\n    if lineType = 'v' then\n    begin\n      val(GetNextToken,x,code);\n      val(GetNextToken,y,code);\n      val(GetNextToken,z,code);\n      result.MainPart.Add(x,y,z);\n    end else\n    if lineType = 'vt' then\n    begin\n      val(GetNextToken,x,code);\n      val(GetNextToken,y,code);\n      if nbTexCoords >= length(texCoords) then\n        setlength(texCoords, length(texCoords)*2+1);\n      texCoords[nbTexCoords] := PointF(x,y);\n      inc(nbTexCoords);\n    end else\n    if lineType = 'vn' then\n    begin\n      val(GetNextToken,x,code);\n      val(GetNextToken,y,code);\n      val(GetNextToken,z,code);\n      result.MainPart.AddNormal(x,y,z);\n      result.LightingNormal := lnVertex;\n    end else\n    if lineType = 'mtllib' then\n      FetchMaterials(trim(s))\n    else\n    if lineType = 'usemtl' then\n      materialname := trim(s)\n    else\n    if lineType = 'f' then\n    begin\n      NbFaceVertices:= 0;\n      repeat\n        val(GetNextToken,v,code);\n        if (code = 0) and (v < 0) then v := result.MainPart.VertexCount+1+v;\n        if (code = 0) and (v >= 1) and (v <= result.MainPart.VertexCount) then\n        begin\n          if length(faceVertices) = NbFaceVertices then\n          begin\n            setlength(faceVertices, length(faceVertices)*2+1);\n            setlength(faceExtra, length(faceExtra)*2+1);\n          end;\n          faceVertices[NbFaceVertices] := result.MainPart.Vertex[v-1];\n          val(secondValue,v2,code);\n          if (code = 0) and (v2 < 0) then v2 := nbTexCoords+1+v2;\n          if (code = 0) and (v2 >= 1) and (v2-1 < nbTexCoords) then\n            faceExtra[NbFaceVertices].texCoord := texCoords[v2-1]\n          else if nbTexCoords > v-1 then\n            faceExtra[NbFaceVertices].texCoord := texCoords[v-1]\n          else\n            faceExtra[NbFaceVertices].texCoord := PointF(0,0);\n          val(thirdValue,v3,code);\n          if (code = 0) and (v3 < 0) then v3 := result.MainPart.NormalCount+1+v3;\n          if code = 0 then\n            faceExtra[NbFaceVertices].normal := result.MainPart.Normal[v3-1]\n          else if result.MainPart.NormalCount > v-1 then\n            faceExtra[NbFaceVertices].normal := result.MainPart.Normal[v-1]\n          else\n            faceExtra[NbFaceVertices].normal := nil;\n          inc(NbFaceVertices);\n        end else break;\n      until false;\n      if NbFaceVertices > 2 then\n      begin\n        if SwapFacesOrientation then\n          for i := 0 to NbFaceVertices div 2-1 do\n          begin\n            tempV := faceVertices[i];\n            faceVertices[i] := faceVertices[NbFaceVertices-1-i];\n            faceVertices[NbFaceVertices-1-i] := tempV;\n            tempN := faceExtra[i];\n            faceExtra[i] := faceExtra[NbFaceVertices-1-i];\n            faceExtra[NbFaceVertices-1-i] := tempN;\n          end;\n        face := result.AddFace(slice(faceVertices,NbFaceVertices));\n        for i := 0 to NbFaceVertices-1 do\n        begin\n          face.SetNormal(i, faceExtra[i].normal);\n          face.SetTexCoord(i, faceExtra[i].texCoord);\n        end;\n        face.MaterialName := materialname;\n      end;\n    end;\n  end;\n  lines.Free;\nend;\n\nprocedure TBGRAScene3D.LoadMaterialsFromFile(AFilename: string);\nvar source: TFileStreamUTF8;\nbegin\n  source := TFileStreamUTF8.Create(SysToUTF8(AFilename),fmOpenRead,fmShareDenyWrite);\n  try\n    LoadMaterialsFromStream(source);\n  finally\n    source.free;\n  end;\nend;\n\nprocedure TBGRAScene3D.LoadMaterialsFromFileUTF8(AFilename: string);\nvar source: TFileStreamUTF8;\nbegin\n  source := TFileStreamUTF8.Create(AFilename,fmOpenRead,fmShareDenyWrite);\n  try\n    LoadMaterialsFromStream(source);\n  finally\n    source.free;\n  end;\nend;\n\nprocedure TBGRAScene3D.LoadMaterialsFromStream(AStream: TStream);\nvar\n  s: String;\n\n  function GetNextToken: string;\n  var idxStart,idxEnd: integer;\n  begin\n    idxStart := 1;\n    while (idxStart <= length(s)) and (s[idxStart]in[#9,' ']) do inc(idxStart);\n    if idxStart > length(s) then\n    begin\n      result := '';\n      exit;\n    end;\n    idxEnd := idxStart;\n    while (idxEnd < length(s)) and not (s[idxEnd+1]in[#9,' ']) do inc(idxEnd);\n    result := copy(s,idxStart, idxEnd-idxStart+1);\n    delete(s,1,idxEnd);\n  end;\n\n  function GetSingle: single;\n  var {%H-}code: integer;\n  begin\n    val(GetNextToken,result,{%H-}code);\n  end;\n\n  function GetColorF: TColorF;\n  var r,g,b: single;\n    {%H-}code: integer;\n  begin\n    val(GetNextToken,r,{%H-}code);\n    val(GetNextToken,g,{%H-}code);\n    val(GetNextToken,b,{%H-}code);\n    result := ColorF(r,g,b,1);\n  end;\n\nvar\n  lines: TStringList;\n  lineIndex: integer;\n  lineType: String;\n  currentMaterial: IBGRAMaterial3D;\n  materialName: string;\n  texZoom: TPointF;\n  v: single;\n\nbegin\n  lines := TStringList.Create;\n  lines.LoadFromStream(AStream);\n  lineIndex := 0;\n  while lineIndex < lines.Count do\n  begin\n    s := lines[lineIndex];\n    if pos('#',s) <> 0 then\n      s := copy(s,1,pos('#',s)-1);\n    inc(lineIndex);\n    lineType := GetNextToken;\n    if lineType = 'newmtl' then\n    begin\n      materialName := trim(s);\n      currentMaterial := GetMaterialByName(materialName);\n      if currentMaterial = nil then\n      begin\n        currentMaterial := CreateMaterial;\n        currentMaterial.Name := materialName;\n      end;\n    end else\n    if currentMaterial <> nil then\n    begin\n      if lineType = 'Ka' then currentMaterial.AmbiantColorF := GetColorF else\n      if lineType = 'Kd' then currentMaterial.DiffuseColorF := GetColorF else\n      if lineType = 'Ks' then currentMaterial.SpecularColorF := GetColorF else\n      if (lineType = 'map_Ka') or (lineType = 'map_Kd') then\n      begin\n        currentMaterial.Texture := FetchTexture(trim(s),texZoom);\n        texZoom.y := -texZoom.y;\n        currentMaterial.TextureZoom := texZoom;\n      end else\n      if lineType = 'Ns' then currentMaterial.SpecularIndex := round(GetSingle) else\n      if lineType = 'd' then\n      begin\n        v := GetSingle;\n        if v > 1 then\n          currentMaterial.SimpleAlpha := 255\n        else if v < 0 then\n          currentMaterial.SimpleAlpha := 0\n        else\n          currentMaterial.SimpleAlpha := round(v*255);\n      end;\n    end;\n  end;\n  lines.Free;\nend;\n\nprocedure TBGRAScene3D.LookAt(AWhere: TPoint3D; ATopDir: TPoint3D);\nbegin\n  Camera.LookAt(AWhere,ATopDir);\nend;\n\nprocedure TBGRAScene3D.LookLeft(angleDeg: single);\nbegin\n  Camera.LookLeft(angleDeg);\nend;\n\nprocedure TBGRAScene3D.LookRight(angleDeg: single);\nbegin\n  Camera.LookRight(angleDeg);\nend;\n\nprocedure TBGRAScene3D.LookUp(angleDeg: single);\nbegin\n  Camera.LookUp(angleDeg);\nend;\n\nprocedure TBGRAScene3D.LookDown(angleDeg: single);\nbegin\n  Camera.LookDown(angleDeg);\nend;\n\nprocedure TBGRAScene3D.Render;\nbegin\n  FRenderer := TBGRARenderer3D.Create(FSurface, RenderingOptions,\n    FAmbiantLightColorF,\n    FLights);\n  DoRender;\n  FreeAndNil(FRenderer);\nend;\n\nprocedure TBGRAScene3D.Render(ARenderer: TCustomRenderer3D);\nbegin\n  FRenderer := ARenderer;\n  DoRender;\n  FRenderer := nil;\nend;\n\nprocedure TBGRAScene3D.ComputeView(ScaleX,ScaleY: single);\nvar\n  i: Integer;\nbegin\n  FProjection.Zoom := Zoom;\n  FProjection.Zoom.X := FProjection.Zoom.X * ScaleX;\n  FProjection.Zoom.Y := FProjection.Zoom.Y * ScaleY;\n  FProjection.Center := ViewCenter;\n  FProjection.Center.X := FProjection.Center.X * ScaleX;\n  FProjection.Center.Y := FProjection.Center.Y * ScaleY;\n  for i := 0 to FObjectCount-1 do\n    FObjects[i].ComputeWithMatrix(Camera.Matrix, FProjection);\nend;\n\nfunction TBGRAScene3D.ComputeCoordinate(AViewCoord: TPoint3D_128): TPointF;\nvar InvZ: single;\nbegin\n  if AViewCoord.z > 0 then\n  begin\n    InvZ := 1/AViewCoord.z;\n    result := PointF(AViewCoord.x*InvZ*FProjection.Zoom.x + FProjection.Center.x,\n                     AViewCoord.y*InvZ*FProjection.Zoom.Y + FProjection.Center.y);\n  end else\n    result := PointF(0,0);\nend;\n\ntype\n  arrayOfTBGRAFace3D = array of TBGRAFace3D;\n\nprocedure InsertionSortFaces(var a: arrayOfTBGRAFace3D);\nvar i,j: integer;\n    temp: TBGRAFace3D;\nbegin\n  for i := 1 to high(a) do\n  begin\n    Temp := a[i];\n    j := i;\n    while (j>0) and (a[j-1].ViewCenterZ > Temp.ViewCenterZ) do\n    begin\n      a[j] := a[j-1];\n      dec(j);\n    end;\n    a[j] := Temp;\n  end;\nend;\n\nfunction PartitionFaces(var a: arrayOfTBGRAFace3D; left,right: integer): integer;\n\n  procedure Swap(idx1,idx2: integer); inline;\n  var temp: TBGRAFace3D;\n  begin\n    temp := a[idx1];\n    a[idx1] := a[idx2];\n    a[idx2] := temp;\n  end;\n\nvar pivotIndex: integer;\n    pivotValue: TBGRAFace3D;\n    storeIndex: integer;\n    i: integer;\n\nbegin\n  pivotIndex := left + random(right-left+1);\n  pivotValue := a[pivotIndex];\n  swap(pivotIndex,right);\n  storeIndex := left;\n  for i := left to right-1 do\n    if a[i].ViewCenterZ <= pivotValue.ViewCenterZ then\n    begin\n      swap(i,storeIndex);\n      inc(storeIndex);\n    end;\n  swap(storeIndex,right);\n  result := storeIndex;\nend;\n\nprocedure QuickSortFaces(var a: arrayOfTBGRAFace3D; left,right: integer);\nvar pivotNewIndex: integer;\nbegin\n  if right > left+9 then\n  begin\n    pivotNewIndex := PartitionFaces(a,left,right);\n    QuickSortFaces(a,left,pivotNewIndex-1);\n    QuickSortFaces(a,pivotNewIndex+1,right);\n  end;\nend;\n\nprocedure SortFaces(var a: arrayOfTBGRAFace3D);\nbegin\n  if length(a) < 10 then InsertionSortFaces(a) else\n  begin\n    QuickSortFaces(a,0,high(a));\n    InsertionSortFaces(a);\n  end;\nend;\n\nfunction IsPolyVisible(const p : array of TPointF; ori: integer = 1) : boolean;\nvar i: integer;\nbegin\n  i := 0;\n  while i<=high(p)-2 do\n  begin\n    if ori*\n    ( (p[i+1].x-p[i].x)*(p[i+2].y-p[i].y) -\n      (p[i+1].y-p[i].y)*(p[i+2].x-p[i].x)) > 0 then\n    begin\n        result := true;\n        exit;\n    end;\n    inc(i);\n  end;\n  result := false;\nend;\n\nprocedure TBGRAScene3D.DoRender;\nvar\n  LFaces: array of TBGRAFace3D;\n  LFaceOpaque: array of boolean;\n  LFaceCount: integer;\n\n  procedure PrepareFaces;\n  var i,j, LFaceIndex: integer;\n      obj: IBGRAObject3D;\n  begin\n    LFaces := nil;\n    LFaceCount := 0;\n    for i := 0 to FObjectCount-1 do\n    begin\n      obj := FObjects[i];\n      inc(LFaceCount, obj.GetFaceCount);\n      obj.Update;\n    end;\n    setlength(LFaces, LFaceCount);\n    LFaceIndex := 0;\n    for i := 0 to FObjectCount-1 do\n      with FObjects[i] do\n      begin\n        for j := 0 to GetFaceCount-1 do\n        begin\n          LFaces[LFaceIndex] := TBGRAFace3D(GetFace(j).GetAsObject);\n          inc(LFaceIndex);\n        end;\n      end;\n  end;\n\nvar\n  faceDesc: TFaceRenderingDescription;\n  LVertices: array of TBGRAVertex3D;\n\n  procedure DrawFace(numFace: integer);\n  var\n    j,k: Integer;\n    VCount,NewVCount: integer;\n    NegNormals: boolean;\n    LastVisibleVertex: integer;\n\n    procedure AddZIntermediate(n1,n2: integer);\n    var t: single;\n        v1,v2: TBGRAVertex3D;\n    begin\n       v1 := LVertices[n1];\n       v2 := LVertices[n2];\n       t := (RenderingOptions.MinZ - v1.ViewCoord.z)/(v2.ViewCoord.z - v1.ViewCoord.z);\n       LVertices[NewVCount] := nil; //computed\n\n       faceDesc.Colors[NewVCount] := MergeBGRA(faceDesc.Colors[n1],round((1-t)*65536),faceDesc.Colors[n2],round(t*65536));\n       faceDesc.TexCoords[NewVCount] := faceDesc.TexCoords[n1]*(1-t) + faceDesc.TexCoords[n2]*t;\n       faceDesc.Positions3D[NewVCount] := faceDesc.Positions3D[n1]*(1-t) + faceDesc.Positions3D[n2]*t;\n       faceDesc.Normals3D[NewVCount] := faceDesc.Normals3D[n1]*(1-t) + faceDesc.Normals3D[n2]*t;\n       faceDesc.Projections[NewVCount] := ComputeCoordinate(faceDesc.Positions3D[NewVCount]);\n       inc(NewVCount);\n    end;\n\n    procedure LoadVertex(idxL: integer; idxV: integer);\n    var vertexDesc: PBGRAFaceVertexDescription;\n        tempV: TBGRAVertex3D;\n    begin\n      with LFaces[numFace] do\n      begin\n        vertexDesc := VertexDescription[idxV];\n        with vertexDesc^ do\n        begin\n          tempV := TBGRAVertex3D(vertex.GetAsObject);\n          LVertices[idxL] := tempV;\n\n          faceDesc.Colors[idxL] := ActualColor;\n          faceDesc.TexCoords[idxL] := ActualTexCoord;\n\n          with tempV.CoordData^ do\n          begin\n            faceDesc.Positions3D[idxL] := viewCoord;\n            facedesc.Normals3D[idxL] := viewNormal;\n            faceDesc.Projections[idxL] := projectedCoord;\n          end;\n          if Normal <> nil then\n            facedesc.Normals3D[idxL] := Normal.ViewNormal_128;\n          Normalize3D_128(facedesc.Normals3D[idxL]);\n        end;\n      end;\n    end;\n\n  begin\n     with LFaces[numFace] do\n     begin\n       VCount := VertexCount;\n       if VCount < 3 then exit;\n\n       faceDesc.NormalsMode := Object3D.LightingNormal;\n\n       faceDesc.Material := ActualMaterial;\n       if faceDesc.Material = nil then exit;\n       faceDesc.Texture := ActualTexture;\n\n       if length(LVertices) < VCount+3 then  //keep margin for z-clip\n       begin\n         setlength(LVertices, (VCount+3)*2);\n         setlength(faceDesc.Colors, length(LVertices));\n         setlength(faceDesc.TexCoords, length(LVertices));\n         setlength(faceDesc.Projections, length(LVertices));\n         setlength(faceDesc.Positions3D, length(LVertices));\n         setlength(faceDesc.Normals3D, length(LVertices));\n       end;\n\n       if FRenderer.HandlesNearClipping then\n       begin\n         for j := 0 to VCount-1 do\n           LoadVertex(j,j);\n       end else\n       begin\n         NewVCount := 0;\n         LastVisibleVertex := -1;\n         for k := VCount-1 downto 0 do\n           if Vertex[k].ViewCoordZ >= RenderingOptions.MinZ then\n           begin\n             LastVisibleVertex := k;\n             break;\n           end;\n         if LastVisibleVertex = -1 then exit;\n\n         k := VCount-1;\n         for j := 0 to VCount-1 do\n         begin\n           if Vertex[j].ViewCoordZ >= RenderingOptions.MinZ then\n           begin\n             if k <> LastVisibleVertex then   //one or more vertices is out\n             begin\n               LoadVertex(NewVCount+1, LastVisibleVertex);\n               LoadVertex(NewVCount+2, (LastVisibleVertex+1) mod VertexCount);\n               AddZIntermediate(NewVCount+1,NewVCount+2);\n\n               LoadVertex(NewVCount+1, j);\n               LoadVertex(NewVCount+2, k);\n\n               AddZIntermediate(NewVCount+1,NewVCount+2);\n               inc(NewVCount);\n             end else\n             begin\n               LoadVertex(NewVCount, j);\n               inc(NewVCount);\n             end;\n             LastVisibleVertex := j;\n           end;\n           k := j;\n         end;\n         VCount := NewVCount;\n         if VCount < 3 then exit; //after z-clipping\n       end;\n\n       if not FRenderer.HandlesFaceCulling then\n       begin\n         if not IsPolyVisible(slice(faceDesc.Projections,VCount)) then\n         begin\n           if not Biface then exit;\n           NegNormals := True;\n         end else\n         begin\n           NegNormals := False;\n         end;\n       end else\n         NegNormals := false;\n\n       //compute normals\n       case faceDesc.NormalsMode of\n         lnFace: for j := 0 to VCount-1 do\n                   faceDesc.Normals3D[j] := ViewNormal_128;\n         lnFaceVertexMix:\n             for j := 0 to VCount-1 do\n             begin\n               faceDesc.Normals3D[j].Offset(ViewNormal_128);\n               Normalize3D_128(faceDesc.Normals3D[j]);\n             end;\n       end;\n       if NegNormals then\n         for j := 0 to VCount-1 do\n           faceDesc.Normals3D[j] := -faceDesc.Normals3D[j];\n\n       if LightThroughFactorOverride then\n         faceDesc.LightThroughFactor := LightThroughFactor\n       else\n         faceDesc.LightThroughFactor := faceDesc.Material.GetLightThroughFactor;\n\n       faceDesc.NbVertices:= VCount;\n       faceDesc.Biface := Biface;\n\n       if FRenderer.RenderFace(faceDesc, @ComputeCoordinate) then\n         inc(FRenderedFaceCount);\n     end;\n  end;\n\nvar i,j: integer;\n\nbegin\n  FRenderedFaceCount:= 0;\n\n  PrepareFaces;\n  ComputeView(FRenderer.GlobalScale,FRenderer.GlobalScale);\n  FRenderer.Projection := FProjection;\n\n  SortFaces(LFaces);\n  LVertices := nil;\n\n  //if there is a Z-Buffer, it is possible to avoid drawing things that\n  //are hidden by opaque faces by drawing first all opaque faces\n  if FRenderer.HasZBuffer then\n  begin\n    setlength(LFaceOpaque, length(LFaces));\n    for i := 0 to High(LFaces) do\n    begin\n      if (LFaces[i].Texture = nil) then\n      begin\n        LFaceOpaque[i] := true;\n        with LFaces[i] do\n          for j := 0 to VertexCount-1 do\n            if VertexColor[j].alpha <> 255 then\n            begin\n              LFaceOpaque[i] := false;\n              break;\n            end;\n      end else\n        LFaceOpaque[i] := true;\n    end;\n\n    //draw near opaque faces first\n    for i := 0 to High(LFaces) do\n      if LFaceOpaque[i] then DrawFace(i);\n\n    //draw other faces\n    for i := High(LFaces) downto 0 do\n      if not LFaceOpaque[i] then DrawFace(i);\n  end else\n  begin\n    for i := High(LFaces) downto 0 do\n      DrawFace(i);\n  end;\nend;\n\nfunction TBGRAScene3D.CreateObject: IBGRAObject3D;\nbegin\n  result := TBGRAObject3D.Create(self);\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateObject(ATexture: IBGRAScanner): IBGRAObject3D;\nbegin\n  result := TBGRAObject3D.Create(self);\n  result.Texture := ATexture;\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateObject(AColor: TBGRAPixel): IBGRAObject3D;\nbegin\n  result := TBGRAObject3D.Create(self);\n  result.Color := AColor;\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateSphere(ARadius: Single; AHorizPrecision: integer; AVerticalPrecision : integer): IBGRAObject3D;\nbegin\n  result := TBGRASphere3D.Create(self, ARadius, AHorizPrecision, AVerticalPrecision);\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateSphere(ARadius: Single; AColor: TBGRAPixel; AHorizPrecision: integer; AVerticalPrecision : integer): IBGRAObject3D;\nbegin\n  result := TBGRASphere3D.Create(self, ARadius, AHorizPrecision, AVerticalPrecision);\n  result.Color := AColor;\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateHalfSphere(ARadius: Single;\n  AHorizPrecision: integer; AVerticalPrecision: integer): IBGRAObject3D;\nbegin\n  result := TBGRASphere3D.Create(self, ARadius, AHorizPrecision, AVerticalPrecision, True);\n  AddObject(result);\nend;\n\nfunction TBGRAScene3D.CreateHalfSphere(ARadius: Single; AColor: TBGRAPixel;\n  AHorizPrecision: integer; AVerticalPrecision: integer): IBGRAObject3D;\nbegin\n  result := TBGRASphere3D.Create(self, ARadius, AHorizPrecision, AVerticalPrecision, True);\n  result.Color := AColor;\n  AddObject(result);\nend;\n\nprocedure TBGRAScene3D.RemoveObject(AObject: IBGRAObject3D);\nvar\n  i,j: Integer;\nbegin\n  for i := FObjectCount-1 downto 0 do\n    if FObjects[i] = AObject then\n    begin\n      dec(FObjectCount);\n      FObjects[i] := nil;\n      for j := i to FObjectCount-1 do\n        FObjects[j] := FObjects[j+1];\n    end;\nend;\n\nfunction TBGRAScene3D.AddDirectionalLight(ADirection: TPoint3D;\n  ALightness: single; AMinIntensity: single): IBGRADirectionalLight3D;\nvar lightObj: TBGRADirectionalLight3D;\nbegin\n  lightObj := TBGRADirectionalLight3D.Create(ADirection);\n  result := lightObj;\n  result.ColorF := ColorF(ALightness,ALightness,ALightness,1);\n  result.MinIntensity := AMinIntensity;\n  AddLight(lightObj);\nend;\n\nfunction TBGRAScene3D.AddPointLight(AVertex: IBGRAVertex3D;\n  AOptimalDistance: single; ALightness: single; AMinIntensity: single\n  ): IBGRAPointLight3D;\nvar lightObj: TBGRAPointLight3D;\nbegin\n  lightObj := TBGRAPointLight3D.Create(AVertex, ALightness*sqr(AOptimalDistance));\n  result := lightObj;\n  result.MinIntensity := AMinIntensity;\n  AddLight(lightObj);\nend;\n\nfunction TBGRAScene3D.AddDirectionalLight(ADirection: TPoint3D;\n  AColor: TBGRAPixel; AMinIntensity: single): IBGRADirectionalLight3D;\nvar lightObj: TBGRADirectionalLight3D;\nbegin\n  lightObj := TBGRADirectionalLight3D.Create(ADirection);\n  result := lightObj;\n  result.MinIntensity := AMinIntensity;\n  result.Color := AColor;\n  AddLight(lightObj);\nend;\n\nfunction TBGRAScene3D.AddPointLight(AVertex: IBGRAVertex3D;\n  AOptimalDistance: single; AColor: TBGRAPixel; AMinIntensity: single\n  ): IBGRAPointLight3D;\nvar lightObj: TBGRAPointLight3D;\nbegin\n  lightObj := TBGRAPointLight3D.Create(AVertex,sqr(AOptimalDistance));\n  result := lightObj;\n  result.Color := AColor;\n  result.MinIntensity := AMinIntensity;\n  AddLight(lightObj);\nend;\n\nprocedure TBGRAScene3D.RemoveLight(ALight: IBGRALight3D);\nvar idx: integer;\nbegin\n  idx := FLights.IndexOf(ALight.GetAsObject);\n  if idx <> -1 then\n  begin\n    ALight._Release;\n    FLights.Delete(Idx);\n  end;\nend;\n\nprocedure TBGRAScene3D.SetZoom(value: Single);\nbegin\n  SetZoom(PointF(value,value));\nend;\n\nprocedure TBGRAScene3D.SetZoom(value: TPointF);\nbegin\n  FZoom := value;\n  FAutoZoom := false;\nend;\n\nfunction TBGRAScene3D.CreateMaterial: IBGRAMaterial3D;\nvar m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D.Create;\n  m.OnTextureChanged := @OnMaterialTextureChanged;\n  result := m;\n  AddMaterial(result);\nend;\n\nfunction TBGRAScene3D.CreateMaterial(ASpecularIndex: integer): IBGRAMaterial3D;\nvar m: TBGRAMaterial3D;\nbegin\n  m := TBGRAMaterial3D.Create;\n  m.SetSpecularIndex(ASpecularIndex);\n  m.SetSpecularColor(BGRAWhite);\n  m.OnTextureChanged := @OnMaterialTextureChanged;\n  result := m;\n  AddMaterial(result);\nend;\n\nfunction TBGRAScene3D.GetMaterialByName(AName: string): IBGRAMaterial3D;\nvar i: integer;\nbegin\n  for i := 0 to MaterialCount-1 do\n    if AName = Material[i].Name then\n    begin\n      result := Material[i];\n      exit;\n    end;\n  result := nil;\nend;\n\nprocedure TBGRAScene3D.UpdateMaterials;\nvar i,j: integer;\n  obj: IBGRAObject3D;\n  face: IBGRAFace3D;\nbegin\n  for i := 0 to Object3DCount-1 do\n  begin\n    obj := Object3D[i];\n    for j := 0 to obj.FaceCount-1 do\n    begin\n      face := obj.Face[j];\n      if face.MaterialName <> '' then\n        UseMaterial(face.MaterialName,face);\n    end;\n  end;\nend;\n\nprocedure TBGRAScene3D.UpdateMaterial(AMaterialName: string);\nvar i,j: integer;\n  obj: IBGRAObject3D;\n  face: IBGRAFace3D;\nbegin\n  for i := 0 to Object3DCount-1 do\n  begin\n    obj := Object3D[i];\n    for j := 0 to obj.FaceCount-1 do\n    begin\n      face := obj.Face[j];\n      if face.MaterialName = AMaterialName then\n        UseMaterial(face.MaterialName,face);\n    end;\n  end;\nend;\n\nprocedure TBGRAScene3D.ForEachVertex(ACallback: TVertex3DCallback);\nvar i: integer;\nbegin\n  for i := 0 to Object3DCount-1 do\n    Object3D[i].ForEachVertex(ACallback);\nend;\n\nprocedure TBGRAScene3D.ForEachFace(ACallback: TFace3DCallback);\nvar i: integer;\nbegin\n  for i := 0 to Object3DCount-1 do\n    Object3D[i].ForEachFace(ACallback);\nend;\n\nfunction TBGRAScene3D.MakeLightList: TList;\nvar i: integer;\nbegin\n  result := TList.Create;\n  for i := 0 to FLights.Count-1 do\n    result.Add(FLights[i]);\nend;\n\ninitialization\n\n  Randomize;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrascenetypes.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Types for 3D scenes }\nunit BGRASceneTypes;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses BGRABitmapTypes, BGRASSE, BGRAMatrix3D, BGRAColorInt;\n\ntype\n  TLightingNormal3D = (lnNone, lnFace, lnVertex, lnFaceVertexMix);\n  TLightingInterpolation3D = (liLowQuality, liSpecularHighQuality, liAlwaysHighQuality);\n  TAntialiasingMode3D = (am3dNone, am3dMultishape, am3dResample);\n  TPerspectiveMode3D = (pmLinearMapping, pmPerspectiveMapping, pmZBuffer);\n\n  { Options when rendering a 3D scene }\n  TRenderingOptions = record\n    LightingInterpolation: TLightingInterpolation3D;\n    AntialiasingMode: TAntialiasingMode3D;\n    AntialiasingResampleLevel: integer;\n    PerspectiveMode: TPerspectiveMode3D;\n    TextureInterpolation: boolean;\n    MinZ: single;\n  end;\n\n  PSceneLightingContext = ^TSceneLightingContext;\n  { Context when computing lighting }\n  TSceneLightingContext = packed record\n    basic: TBasicLightingContext;\n    {128} diffuseColor, {144} specularColor: TColorInt65536;\n    {160} vL, {176} dummy: TPoint3D_128;\n    {192} vH: TPoint3D_128;\n    {208} lightness: integer;\n    {212} material : TObject;\n    LightThroughFactor: single;\n    LightThrough: LongBool;\n    SaturationLow: integer;\n    SaturationLowF: single;\n    SaturationHigh: integer;\n    SaturationHighF: single;\n  end;\n\n  { Bounds of a 3D box }\n  TBox3D = record\n    min,max: TPoint3D;\n  end;\n\n  IBGRAVertex3D = interface;\n\n  { Interface of a light for a 3D scene }\n  IBGRALight3D = interface ['{85C683B6-07AC-4B8D-9324-06BC22882433}']\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext);\n    procedure ComputeDiffuseColor(Context: PSceneLightingContext);\n    procedure ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext);\n\n    function GetColor: TBGRAPixel;\n    function GetColoredLight: boolean;\n    function GetColorF: TColorF;\n    function GetColorInt: TColorInt65536;\n    function GetLightnessF: single;\n    function GetAsObject: TObject;\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetColorF(const AValue: TColorF);\n    procedure SetColorInt(const AValue: TColorInt65536);\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property ColorF: TColorF read GetColorF write SetColorF;\n    property ColorInt: TColorInt65536 read GetColorInt write SetColorInt;\n    property LightnessF: single read GetLightnessF;\n    property ColoredLight: boolean read GetColoredLight;\n\n    function GetMinIntensity: single;\n    procedure SetMinIntensity(const AValue: single);\n    property MinIntensity: single read GetMinIntensity write SetMinIntensity;\n    function IsDirectional: boolean;\n  end;\n\n  { Interface of point light for 3D scene }\n  IBGRAPointLight3D = interface(IBGRALight3D) ['{C939900D-DDD6-49F0-B1E9-E29F94FDB4C8}']\n    function GetVertex: IBGRAVertex3D;\n    procedure SetVertex(const AValue: IBGRAVertex3D);\n    property Vertex: IBGRAVertex3D read GetVertex write SetVertex;\n  end;\n\n  { Interface of directional light for 3D scene }\n  IBGRADirectionalLight3D = interface(IBGRALight3D) ['{8D575CEE-8DD2-46FB-9BCC-17DE3DAAF53D}']\n    function GetDirection: TPoint3D;\n    procedure SetDirection(const AValue: TPoint3D);\n    property Direction: TPoint3D read GetDirection write SetDirection;\n  end;\n\n  { Interface of material for the surface of a 3D object }\n  IBGRAMaterial3D = interface\n    function GetAmbiantAlpha: byte;\n    function GetAutoAmbiantColor: boolean;\n    function GetAutoDiffuseColor: boolean;\n    function GetAutoSimpleColor: boolean;\n    function GetAutoSpecularColor: boolean;\n    function GetAmbiantColor: TBGRAPixel;\n    function GetAmbiantColorF: TColorF;\n    function GetAmbiantColorInt: TColorInt65536;\n    function GetDiffuseAlpha: byte;\n    function GetDiffuseColor: TBGRAPixel;\n    function GetDiffuseColorF: TColorF;\n    function GetDiffuseColorInt: TColorInt65536;\n    function GetLightThroughFactor: single;\n    function GetName: string;\n    function GetSaturationHigh: single;\n    function GetSaturationLow: single;\n    function GetSimpleAlpha: byte;\n    function GetSimpleColor: TBGRAPixel;\n    function GetSimpleColorF: TColorF;\n    function GetSimpleColorInt: TColorInt65536;\n    function GetSpecularColor: TBGRAPixel;\n    function GetSpecularColorF: TColorF;\n    function GetSpecularColorInt: TColorInt65536;\n    function GetSpecularIndex: integer;\n    function GetSpecularOn: boolean;\n    function GetTexture: IBGRAScanner;\n    function GetTextureZoom: TPointF;\n    function GetAsObject: TObject;\n\n    procedure SetAmbiantAlpha(AValue: byte);\n    procedure SetAutoDiffuseColor(const AValue: boolean);\n    procedure SetAutoSpecularColor(const AValue: boolean);\n    procedure SetAmbiantColor(const AValue: TBGRAPixel);\n    procedure SetAmbiantColorF(const AValue: TColorF);\n    procedure SetAmbiantColorInt(const AValue: TColorInt65536);\n    procedure SetDiffuseAlpha(AValue: byte);\n    procedure SetDiffuseColor(const AValue: TBGRAPixel);\n    procedure SetDiffuseColorF(const AValue: TColorF);\n    procedure SetDiffuseColorInt(const AValue: TColorInt65536);\n    procedure SetLightThroughFactor(const AValue: single);\n    procedure SetName(const AValue: string);\n    procedure SetSaturationHigh(const AValue: single);\n    procedure SetSaturationLow(const AValue: single);\n    procedure SetSimpleAlpha(AValue: byte);\n    procedure SetSimpleColor(AValue: TBGRAPixel);\n    procedure SetSimpleColorF(AValue: TColorF);\n    procedure SetSimpleColorInt(AValue: TColorInt65536);\n    procedure SetSpecularColor(const AValue: TBGRAPixel);\n    procedure SetSpecularColorF(const AValue: TColorF);\n    procedure SetSpecularColorInt(const AValue: TColorInt65536);\n    procedure SetSpecularIndex(const AValue: integer);\n    procedure SetTexture(AValue: IBGRAScanner);\n    procedure SetTextureZoom(AValue: TPointF);\n\n    property AutoSimpleColor: boolean read GetAutoSimpleColor;\n    property SimpleColor: TBGRAPixel read GetSimpleColor write SetSimpleColor;\n    property SimpleColorF: TColorF read GetSimpleColorF write SetSimpleColorF;\n    property SimpleColorInt: TColorInt65536 read GetSimpleColorInt write SetSimpleColorInt;\n    property SimpleAlpha: byte read GetSimpleAlpha write SetSimpleAlpha;\n\n    property AmbiantColor: TBGRAPixel read GetAmbiantColor write SetAmbiantColor;\n    property AmbiantColorF: TColorF read GetAmbiantColorF write SetAmbiantColorF;\n    property AmbiantColorInt: TColorInt65536 read GetAmbiantColorInt write SetAmbiantColorInt;\n    property AutoAmbiantColor: boolean read GetAutoAmbiantColor;\n    property AmbiantAlpha: byte read GetAmbiantAlpha write SetAmbiantAlpha;\n    property Texture: IBGRAScanner read GetTexture write SetTexture;\n    property TextureZoom: TPointF read GetTextureZoom write SetTextureZoom;\n\n    property DiffuseColor: TBGRAPixel read GetDiffuseColor write SetDiffuseColor;\n    property DiffuseColorF: TColorF read GetDiffuseColorF write SetDiffuseColorF;\n    property DiffuseColorInt: TColorInt65536 read GetDiffuseColorInt write SetDiffuseColorInt;\n    property AutoDiffuseColor: boolean read GetAutoDiffuseColor write SetAutoDiffuseColor;\n    property DiffuseAlpha: byte read GetDiffuseAlpha write SetDiffuseAlpha;\n    property SaturationLow: single read GetSaturationLow write SetSaturationLow;\n    property SaturationHigh: single read GetSaturationHigh write SetSaturationHigh;\n\n    property SpecularColor: TBGRAPixel read GetSpecularColor write SetSpecularColor;\n    property SpecularColorF: TColorF read GetSpecularColorF write SetSpecularColorF;\n    property SpecularColorInt: TColorInt65536 read GetSpecularColorInt write SetSpecularColorInt;\n    property AutoSpecularColor: boolean read GetAutoSpecularColor write SetAutoSpecularColor;\n    property SpecularIndex: integer read GetSpecularIndex write SetSpecularIndex;\n    property SpecularOn: boolean read GetSpecularOn;\n\n    property LightThroughFactor: single read GetLightThroughFactor write SetLightThroughFactor;\n    property Name: string read GetName write SetName;\n  end;\n\n  { Interface of a normal of a 3D surface }\n  IBGRANormal3D = interface\n    function GetCustomNormal: TPoint3D;\n    function GetCustomNormal_128: TPoint3D_128;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    procedure SetCustomNormal(AValue: TPoint3D);\n    procedure SetCustomNormal_128(AValue: TPoint3D_128);\n    procedure SetViewNormal(AValue: TPoint3D);\n    procedure SetViewNormal_128(AValue: TPoint3D_128);\n    property ViewNormal: TPoint3D read GetViewNormal write SetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128 write SetViewNormal_128;\n    property CustomNormal: TPoint3D read GetCustomNormal write SetCustomNormal;\n    property CustomNormal_128: TPoint3D_128 read GetCustomNormal_128 write SetCustomNormal_128;\n  end;\n\n  { Interface for a vertex of a 3D object }\n  IBGRAVertex3D = interface\n    function GetColor: TBGRAPixel;\n    function GetCustomFlags: LongWord;\n    function GetCustomNormal: TPoint3D;\n    function GetCustomNormal_128: TPoint3D_128;\n    function GetLight: Single;\n    function GetProjectedCoord: TPointF;\n    function GetUsage: integer;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    function GetParentColor: Boolean;\n    function GetSceneCoord: TPoint3D;\n    function GetSceneCoord_128: TPoint3D_128;\n    function GetTexCoord: TPointF;\n    function GetViewCoord: TPoint3D;\n    function GetViewCoord_128: TPoint3D_128;\n    procedure ComputeCoordinateAndClearNormal(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\n    function GetViewCoordZ: single;\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetCustomFlags(AValue: LongWord);\n    procedure SetCustomNormal(AValue: TPoint3D);\n    procedure SetCustomNormal_128(AValue: TPoint3D_128);\n    procedure SetLight(const AValue: Single);\n    procedure SetProjectedCoord(const AValue: TPointF);\n    procedure SetViewNormal(const AValue: TPoint3D);\n    procedure SetViewNormal_128(const AValue: TPoint3D_128);\n    procedure SetParentColor(const AValue: Boolean);\n    procedure SetSceneCoord(const AValue: TPoint3D);\n    procedure SetSceneCoord_128(const AValue: TPoint3D_128);\n    procedure SetTexCoord(const AValue: TPointF);\n    procedure SetViewCoord(const AValue: TPoint3D);\n    procedure SetViewCoord_128(const AValue: TPoint3D_128);\n    procedure NormalizeViewNormal;\n    procedure AddViewNormal(const AValue: TPoint3D_128);\n    property SceneCoord: TPoint3D read GetSceneCoord write SetSceneCoord;\n    property SceneCoord_128: TPoint3D_128 read GetSceneCoord_128 write SetSceneCoord_128;\n    property ViewCoord: TPoint3D read GetViewCoord write SetViewCoord;\n    property ViewCoord_128: TPoint3D_128 read GetViewCoord_128 write SetViewCoord_128;\n    property ViewCoordZ: single read GetViewCoordZ;\n    property ProjectedCoord: TPointF read GetProjectedCoord write SetProjectedCoord;\n    property TexCoord: TPointF read GetTexCoord write SetTexCoord;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property ParentColor: Boolean read GetParentColor write SetParentColor;\n    property Light: Single read GetLight write SetLight;\n    property ViewNormal: TPoint3D read GetViewNormal write SetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128 write SetViewNormal_128;\n    property CustomNormal: TPoint3D read GetCustomNormal write SetCustomNormal;\n    property CustomNormal_128: TPoint3D_128 read GetCustomNormal_128 write SetCustomNormal_128;\n    property Usage: integer read GetUsage;\n    property CustomFlags: LongWord read GetCustomFlags write SetCustomFlags;\n    function GetAsObject: TObject;\n  end;\n\n  arrayOfIBGRAVertex3D = array of IBGRAVertex3D;\n  TVertex3DCallback = procedure(AVertex: IBGRAVertex3D) of object;\n\n  { Interface of a part of a 3D object, that can be moved independently of other parts. }\n  IBGRAPart3D = interface\n    procedure Clear(ARecursive: boolean);\n    function Add(x,y,z: single): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D; normal: TPoint3D): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D_128): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D_128; normal: TPoint3D_128): IBGRAVertex3D; overload;\n    function AddNormal(x,y,z: single): IBGRANormal3D; overload;\n    function AddNormal(pt: TPoint3D): IBGRANormal3D; overload;\n    function AddNormal(pt: TPoint3D_128): IBGRANormal3D; overload;\n    function Add(const coords: array of single): arrayOfIBGRAVertex3D; overload;\n    function Add(const pts: array of TPoint3D): arrayOfIBGRAVertex3D; overload;\n    function Add(const pts_128: array of TPoint3D_128): arrayOfIBGRAVertex3D; overload;\n    procedure Add(const pts: array of IBGRAVertex3D); overload;\n    procedure Add(AVertex: IBGRAVertex3D); overload;\n    function GetTotalNormalCount: integer;\n    function IndexOf(AVertex: IBGRAVertex3D): integer;\n    procedure RemoveVertex(Index: integer);\n    procedure RemoveNormal(Index: integer);\n    function GetBoundingBox: TBox3D;\n    function GetMatrix: TMatrix3D;\n    function GetPart(AIndex: Integer): IBGRAPart3D;\n    function GetPartCount: integer;\n    function GetRadius: single;\n    function GetVertex(AIndex: Integer): IBGRAVertex3D;\n    function GetVertexCount: integer;\n    function GetNormal(AIndex: Integer): IBGRANormal3D;\n    function GetNormalCount: integer;\n    function GetTotalVertexCount: integer;\n    function GetContainer: IBGRAPart3D;\n    procedure ResetTransform;\n    procedure Scale(size: single; Before: boolean = true); overload;\n    procedure Scale(x,y,z: single; Before: boolean = true); overload;\n    procedure Scale(size: TPoint3D; Before: boolean = true); overload;\n    procedure SetMatrix(const AValue: TMatrix3D);\n    procedure SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\n    procedure SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\n    procedure Translate(x,y,z: single; Before: boolean = true); overload;\n    procedure Translate(ofs: TPoint3D; Before: boolean = true); overload;\n    procedure RotateXDeg(angle: single; Before: boolean = true);\n    procedure RotateYDeg(angle: single; Before: boolean = true);\n    procedure RotateZDeg(angle: single; Before: boolean = true);\n    procedure RotateXRad(angle: single; Before: boolean = true);\n    procedure RotateYRad(angle: single; Before: boolean = true);\n    procedure RotateZRad(angle: single; Before: boolean = true);\n    procedure ComputeWithMatrix(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\n    function ComputeCoordinate(var ASceneCoord: TPoint3D_128; const AProjection: TProjection3D): TPointF;\n    procedure NormalizeViewNormal;\n    procedure LookAt(AWhere: TPoint3D; ATopDir: TPoint3D);\n    procedure RemoveUnusedVertices;\n    function CreatePart: IBGRAPart3D;\n    procedure ForEachVertex(ACallback: TVertex3DCallback);\n    property VertexCount: integer read GetVertexCount;\n    property NormalCount: integer read GetNormalCount;\n    property Vertex[AIndex: Integer]: IBGRAVertex3D read GetVertex write SetVertex;\n    property Normal[AIndex: Integer]: IBGRANormal3D read GetNormal write SetNormal;\n    property Matrix: TMatrix3D read GetMatrix write SetMatrix;\n    property PartCount: integer read GetPartCount;\n    property Part[AIndex: Integer]: IBGRAPart3D read GetPart;\n    property Radius: single read GetRadius;\n    property BoundingBox: TBox3D read GetBoundingBox;\n    property TotalVertexCount: integer read GetTotalVertexCount;\n    property TotalNormalCount: integer read GetTotalNormalCount;\n    property Container: IBGRAPart3D read GetContainer;\n  end;\n\n  IBGRAObject3D = interface;\n\n  { Interface for a face in a 3D object }\n  IBGRAFace3D = interface\n    procedure FlipFace;\n    function AddVertex(AVertex: IBGRAVertex3D): integer;\n    function GetBiface: boolean;\n    function GetCustomFlags: LongWord;\n    function GetLightThroughFactorOverride: boolean;\n    function GetMaterial: IBGRAMaterial3D;\n    function GetMaterialName: string;\n    function GetObject3D: IBGRAObject3D;\n    function GetParentTexture: boolean;\n    function GetTexCoord(AIndex: Integer): TPointF;\n    function GetTexCoordOverride(AIndex: Integer): boolean;\n    function GetTexture: IBGRAScanner;\n    function GetVertex(AIndex: Integer): IBGRAVertex3D;\n    function GetNormal(AIndex: Integer): IBGRANormal3D;\n    function GetVertexColor(AIndex: Integer): TBGRAPixel;\n    function GetVertexColorOverride(AIndex: Integer): boolean;\n    function GetVertexCount: integer;\n    function GetViewCenter: TPoint3D;\n    function GetViewCenter_128: TPoint3D_128;\n    function GetViewCenterZ: single;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    function GetLightThroughFactor: single;\n    procedure SetCustomFlags(AValue: LongWord);\n    procedure SetLightThroughFactor(const AValue: single);\n    procedure SetBiface(const AValue: boolean);\n    procedure SetLightThroughFactorOverride(const AValue: boolean);\n    procedure SetMaterial(const AValue: IBGRAMaterial3D);\n    procedure SetMaterialName(const AValue: string);\n    procedure SetParentTexture(const AValue: boolean);\n    procedure SetTexCoord(AIndex: Integer; const AValue: TPointF);\n    procedure SetTexCoordOverride(AIndex: Integer; const AValue: boolean);\n    procedure SetTexture(const AValue: IBGRAScanner);\n    procedure SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\n    procedure SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\n    procedure SetVertexColor(AIndex: Integer; const AValue: TBGRAPixel);\n    procedure SetVertexColorOverride(AIndex: Integer; const AValue: boolean);\n    procedure ComputeViewNormalAndCenter;\n    procedure ComputeVertexColors;\n    procedure UpdateMaterial;\n    procedure SetColor(AColor: TBGRAPixel);\n    property Texture: IBGRAScanner read GetTexture write SetTexture;\n    property ParentTexture: boolean read GetParentTexture write SetParentTexture;\n    property VertexCount: integer read GetVertexCount;\n    property Vertex[AIndex: Integer]: IBGRAVertex3D read GetVertex write SetVertex;\n    property VertexColor[AIndex: Integer]: TBGRAPixel read GetVertexColor write SetVertexColor;\n    property VertexColorOverride[AIndex: Integer]: boolean read GetVertexColorOverride write SetVertexColorOverride;\n    property TexCoord[AIndex: Integer]: TPointF read GetTexCoord write SetTexCoord;\n    property TexCoordOverride[AIndex: Integer]: boolean read GetTexCoordOverride write SetTexCoordOverride;\n    property ViewNormal: TPoint3D read GetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128;\n    property ViewCenter: TPoint3D read GetViewCenter;\n    property ViewCenter_128: TPoint3D_128 read GetViewCenter_128;\n    property ViewCenterZ: single read GetViewCenterZ;\n    property Object3D: IBGRAObject3D read GetObject3D;\n    property Biface: boolean read GetBiface write SetBiface;\n    property LightThroughFactor: single read GetLightThroughFactor write SetLightThroughFactor;\n    property LightThroughFactorOverride: boolean read GetLightThroughFactorOverride write SetLightThroughFactorOverride;\n    property Material: IBGRAMaterial3D read GetMaterial write SetMaterial;\n    property MaterialName: string read GetMaterialName write SetMaterialName;\n    function GetAsObject: TObject;\n    property CustomFlags: LongWord read GetCustomFlags write SetCustomFlags;\n  end;\n\n  TFace3DCallback = procedure(AFace: IBGRAFace3D) of object;\n\n  { Interface of an object in a 3D scene }\n  IBGRAObject3D = interface\n    procedure Clear;\n    function GetColor: TBGRAPixel;\n    function GetFace(AIndex: integer): IBGRAFace3D;\n    function GetFaceCount: integer;\n    function GetMaterial: IBGRAMaterial3D;\n    function GetRefCount: integer;\n    function GetTotalNormalCount: integer;\n    function GetTotalVertexCount: integer;\n    function GetLight: Single;\n    function GetLightingNormal: TLightingNormal3D;\n    function GetParentLighting: boolean;\n    function GetTexture: IBGRAScanner;\n    function GetMainPart: IBGRAPart3D;\n    function GetScene: TObject;\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetLight(const AValue: Single);\n    procedure SetLightingNormal(const AValue: TLightingNormal3D);\n    procedure SetMaterial(const AValue: IBGRAMaterial3D);\n    procedure SetParentLighting(const AValue: boolean);\n    procedure SetTexture(const AValue: IBGRAScanner);\n    procedure ComputeWithMatrix(constref AMatrix: TMatrix3D; constref AProjection: TProjection3D);\n    procedure RemoveUnusedVertices;\n    procedure InvalidateColor;\n    procedure InvalidateMaterial;\n    procedure ForEachVertex(ACallback: TVertex3DCallback);\n    procedure ForEachFace(ACallback: TFace3DCallback);\n    function AddFaceReversed(const AVertices: array of IBGRAVertex3D): IBGRAFace3D;\n    function AddFace(const AVertices: array of IBGRAVertex3D): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; ABiface: boolean): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; ATexture: IBGRAScanner): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; AColor: TBGRAPixel): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; AColors: array of TBGRAPixel): IBGRAFace3D; overload;\n    procedure Update;\n    procedure SetBiface(AValue : boolean);\n    procedure SeparatePart(APart: IBGRAPart3D);\n    property MainPart: IBGRAPart3D read GetMainPart;\n    property Texture: IBGRAScanner read GetTexture write SetTexture;\n    property Light: Single read GetLight write SetLight;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property Face[AIndex: integer]: IBGRAFace3D read GetFace;\n    property FaceCount: integer read GetFaceCount;\n    property LightingNormal: TLightingNormal3D read GetLightingNormal write SetLightingNormal;\n    property ParentLighting: boolean read GetParentLighting write SetParentLighting;\n    property TotalVertexCount: integer read GetTotalVertexCount;\n    property TotalNormalCount: integer read GetTotalNormalCount;\n    property Material: IBGRAMaterial3D read GetMaterial write SetMaterial;\n    property Scene: TObject read GetScene;\n    property RefCount: integer read GetRefCount;\n  end;\n\n  TBGRAMaterialTextureChangedEvent = procedure(ASender: TObject) of object;\n\n  { Material for the surface of a 3D object }\n  TBGRAMaterial3D = class(TInterfacedObject, IBGRAMaterial3D)\n  private\n    FName: string;\n    FAutoSimpleColor,FAutoAmbiantColor,FAutoDiffuseColor,FAutoSpecularColor: boolean;\n    FSimpleColorInt, FAmbiantColorInt, FDiffuseColorInt: TColorInt65536;\n    FDiffuseLightness: integer;\n\n    FSpecularColorInt: TColorInt65536;\n    FSpecularIndex: integer;\n    FSpecularOn: boolean;\n\n    FSaturationLowF: single;\n    FSaturationHighF: single;\n    FLightThroughFactor: single;\n\n    FTexture: IBGRAScanner;\n    FTextureZoom: TPointF;\n    FOnTextureChanged: TBGRAMaterialTextureChangedEvent;\n\n    //phong precalc\n    FPowerTable: array of single;\n    FPowerTableSize, FPowerTableExp2: integer;\n    FPowerTableSizeF: single;\n\n    procedure UpdateSpecular;\n    procedure UpdateSimpleColor;\n    procedure ComputePowerTable;\n  public\n    constructor Create;\n    destructor Destroy; override;\n\n    function GetAutoAmbiantColor: boolean;\n    function GetAutoDiffuseColor: boolean;\n    function GetAutoSpecularColor: boolean;\n    function GetAutoSimpleColor: boolean;\n    function GetAmbiantAlpha: byte;\n    function GetAmbiantColor: TBGRAPixel;\n    function GetAmbiantColorF: TColorF;\n    function GetAmbiantColorInt: TColorInt65536;\n    function GetDiffuseAlpha: byte;\n    function GetDiffuseColor: TBGRAPixel;\n    function GetDiffuseColorF: TColorF;\n    function GetDiffuseColorInt: TColorInt65536;\n    function GetLightThroughFactor: single;\n    function GetSpecularColor: TBGRAPixel;\n    function GetSpecularColorF: TColorF;\n    function GetSpecularColorInt: TColorInt65536;\n    function GetSpecularIndex: integer;\n    function GetSaturationHigh: single;\n    function GetSaturationLow: single;\n    function GetSimpleAlpha: byte;\n    function GetSimpleColor: TBGRAPixel;\n    function GetSimpleColorF: TColorF;\n    function GetSimpleColorInt: TColorInt65536;\n    function GetTextureZoom: TPointF;\n    function GetSpecularOn: boolean;\n    function GetAsObject: TObject;\n    function GetName: string;\n\n    procedure SetAutoAmbiantColor(const AValue: boolean);\n    procedure SetAutoDiffuseColor(const AValue: boolean);\n    procedure SetAutoSpecularColor(const AValue: boolean);\n    procedure SetAmbiantAlpha(AValue: byte);\n    procedure SetAmbiantColor(const AValue: TBGRAPixel);\n    procedure SetAmbiantColorF(const AValue: TColorF);\n    procedure SetAmbiantColorInt(const AValue: TColorInt65536);\n    procedure SetDiffuseAlpha(AValue: byte);\n    procedure SetDiffuseColor(const AValue: TBGRAPixel);\n    procedure SetDiffuseColorF(const AValue: TColorF);\n    procedure SetDiffuseColorInt(const AValue: TColorInt65536);\n    procedure SetLightThroughFactor(const AValue: single);\n    procedure SetSpecularColor(const AValue: TBGRAPixel);\n    procedure SetSpecularColorF(const AValue: TColorF);\n    procedure SetSpecularColorInt(const AValue: TColorInt65536);\n    procedure SetSpecularIndex(const AValue: integer); virtual;\n    procedure SetSaturationHigh(const AValue: single);\n    procedure SetSaturationLow(const AValue: single);\n    procedure SetSimpleAlpha(AValue: byte);\n    procedure SetSimpleColor(AValue: TBGRAPixel);\n    procedure SetSimpleColorF(AValue: TColorF);\n    procedure SetSimpleColorInt(AValue: TColorInt65536);\n    procedure SetTextureZoom(AValue: TPointF);\n    procedure SetName(const AValue: string);\n\n    function GetTexture: IBGRAScanner;\n    procedure SetTexture(AValue: IBGRAScanner);\n\n    procedure ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext; DiffuseIntensity, SpecularIntensity, SpecularCosine: single; const ALightColor: TColorInt65536);\n    procedure ComputeDiffuseColor(Context: PSceneLightingContext; const DiffuseIntensity: single; const ALightColor: TColorInt65536);\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext; DiffuseLightnessTerm32768: integer; ALightLightness: integer);\n\n    property OnTextureChanged: TBGRAMaterialTextureChangedEvent read FOnTextureChanged write FOnTextureChanged;\n\n  end;\n\n  { Information about a face to render }\n  TFaceRenderingDescription = record\n    NormalsMode: TLightingNormal3D;\n\n    Material: TBGRAMaterial3D;\n    Texture: IBGRAScanner;\n    LightThroughFactor: single;\n    Biface: boolean;\n\n    NbVertices: Integer;\n    Projections: array of TPointF;\n    Colors: array of TBGRAPixel;\n    Positions3D, Normals3D: array of TPoint3D_128;\n    TexCoords: array of TPointF;\n  end;\n\n  { Abstract class for 3D rendering }\n  TCustomRenderer3D = class\n  private\n    FProjection: TProjection3D;\n    FProjectionDefined: boolean;\n    function GetProjectionDefined: boolean;\n  protected\n    function GetGlobalScale: single; virtual; abstract;\n    function GetHasZBuffer: boolean; virtual; abstract;\n    function GetHandlesNearClipping: boolean; virtual; abstract;\n    function GetHandlesFaceCulling: boolean; virtual; abstract;\n    function GetSurfaceWidth: integer; virtual; abstract;\n    function GetSurfaceHeight: integer; virtual; abstract;\n    procedure SetProjection(const AValue: TProjection3D); virtual;\n  public\n    function RenderFace(var ADescription: TFaceRenderingDescription;\n      AComputeCoordinate: TComputeProjectionFunc): boolean; virtual; abstract;\n    property GlobalScale: single read GetGlobalScale;\n    property HasZBuffer: boolean read GetHasZBuffer;\n    property SurfaceWidth: integer read GetSurfaceWidth;\n    property SurfaceHeight: integer read GetSurfaceHeight;\n    property Projection: TProjection3D read FProjection write SetProjection;\n    property ProjectionDefined: boolean read GetProjectionDefined;\n    property HandlesNearClipping: boolean read GetHandlesNearClipping;\n    property HandlesFaceCulling: boolean read GetHandlesFaceCulling;\n  end;\n\n  { Light for a 3D scene }\n  TBGRALight3D = class(TInterfacedObject,IBGRALight3D)\n  protected\n    FMinIntensity: single;\n    FColorInt: TColorInt65536;\n    FViewVector : TPoint3D_128;\n    FLightness: integer;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure ReleaseInterface;\n\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext); virtual; abstract;\n    procedure ComputeDiffuseColor(Context: PSceneLightingContext); virtual; abstract;\n    procedure ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext); virtual; abstract;\n\n    function GetLightnessF: single;\n    function GetColor: TBGRAPixel;\n    function GetColorF: TColorF;\n    function GetColorInt: TColorInt65536;\n    function GetAsObject: TObject;\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetColorF(const AValue: TColorF);\n    procedure SetColorInt(const AValue: TColorInt65536);\n    function GetColoredLight: boolean;\n\n    function GetMinIntensity: single;\n    procedure SetMinIntensity(const AValue: single);\n    function IsDirectional: boolean; virtual; abstract;\n\n    function GetIntensity: single; virtual;\n    function GetPosition: TPoint3D; virtual;\n    function GetDirection: TPoint3D; virtual;\n  end;\n\nimplementation\n\n{ TCustomRenderer3D }\n\nfunction TCustomRenderer3D.GetProjectionDefined: boolean;\nbegin\n  result := FProjectionDefined;\nend;\n\n{$PUSH}{$OPTIMIZATION OFF} // avoids internal error 2012090607\nprocedure TCustomRenderer3D.SetProjection(const AValue: TProjection3D);\nbegin\n  FProjection := AValue;\n  FProjectionDefined := true;\nend;\n{$POP}\n\n{ TBGRAMaterial3D }\n\nprocedure TBGRAMaterial3D.UpdateSpecular;\nbegin\n  FAutoSpecularColor := (FSpecularColorInt.r = 65536) and (FSpecularColorInt.g = 65536) and (FSpecularColorInt.b = 65536) and (FSpecularColorInt.a = 65536);\n  FSpecularOn := (FSpecularIndex > 0) and ((FSpecularColorInt.r <> 0) or (FSpecularColorInt.g <> 0) or (FSpecularColorInt.b <> 0) or\n                                            FAutoSpecularColor);\nend;\n\nprocedure TBGRAMaterial3D.UpdateSimpleColor;\nbegin\n  FSimpleColorInt := (FAmbiantColorInt+FDiffuseColorInt)*32768;\n  FAutoSimpleColor := (FSimpleColorInt.r = 65536) and (FSimpleColorInt.g = 65536) and (FSimpleColorInt.b = 65536) and (FSimpleColorInt.a = 65536);\nend;\n\nprocedure TBGRAMaterial3D.ComputePowerTable;\nvar i: integer;\n    Exponent: single;\nbegin\n  //exponent computed by squares\n  Exponent := 1;\n  FPowerTableExp2 := 0;\n  While Exponent*FPowerTableSize/16 < FSpecularIndex do\n  begin\n    Exponent := Exponent * 2;\n    Inc(FPowerTableExp2);\n  end;\n\n  //remaining exponent\n  setlength(FPowerTable,FPowerTableSize+3);\n  FPowerTable[0] := 0; //out of bound\n  FPowerTable[1] := 0; //image of zero\n  for i := 1 to FPowerTableSize do // ]0;1]\n    FPowerTable[i+1] := Exp(ln(i/(FPowerTableSize-1))*FSpecularIndex/Exponent);\n  FPowerTable[FPowerTableSize+2] := 1; //out of bound\nend;\n\nconstructor TBGRAMaterial3D.Create;\nbegin\n  SetAmbiantColorInt(ColorInt65536(65536,65536,65536));\n  SetDiffuseColorInt(ColorInt65536(65536,65536,65536));\n  FSpecularIndex := 10;\n  SetSpecularColorInt(ColorInt65536(0,0,0));\n  FLightThroughFactor:= 0;\n  SetSaturationLow(2);\n  SetSaturationHigh(3);\n\n  FTexture := nil;\n  FTextureZoom := PointF(1,1);\n\n  FPowerTableSize := 128;\n  FPowerTableSizeF := FPowerTableSize;\n  FPowerTable := nil;\nend;\n\ndestructor TBGRAMaterial3D.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nfunction TBGRAMaterial3D.GetAutoAmbiantColor: boolean;\nbegin\n  result := FAutoAmbiantColor;\nend;\n\nprocedure TBGRAMaterial3D.SetDiffuseAlpha(AValue: byte);\nbegin\n  if AValue = 0 then\n    FDiffuseColorInt.a := 0\n  else\n    FDiffuseColorInt.a := AValue*257+1;\n  UpdateSimpleColor;\nend;\n\nfunction TBGRAMaterial3D.GetAutoDiffuseColor: boolean;\nbegin\n  result := FAutoDiffuseColor;\nend;\n\nfunction TBGRAMaterial3D.GetAutoSpecularColor: boolean;\nbegin\n  result := FAutoSpecularColor;\nend;\n\nfunction TBGRAMaterial3D.GetAutoSimpleColor: boolean;\nbegin\n  result := FAutoSimpleColor;\nend;\n\nfunction TBGRAMaterial3D.GetAmbiantAlpha: byte;\nvar v: integer;\nbegin\n  if FAmbiantColorInt.a < 128 then\n    result := 0\n  else\n  begin\n    v := (FAmbiantColorInt.a-128) shr 8;\n    if v > 255 then v := 255;\n    result := v;\n  end;\nend;\n\nfunction TBGRAMaterial3D.GetAmbiantColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(FAmbiantColorInt,True);\nend;\n\nfunction TBGRAMaterial3D.GetAmbiantColorF: TColorF;\nbegin\n  result := ColorInt65536ToColorF(FAmbiantColorInt);\nend;\n\nfunction TBGRAMaterial3D.GetAmbiantColorInt: TColorInt65536;\nbegin\n  result := FAmbiantColorInt;\nend;\n\nfunction TBGRAMaterial3D.GetDiffuseAlpha: byte;\nvar v: integer;\nbegin\n  if FDiffuseColorInt.a < 128 then\n    result := 0\n  else\n  begin\n    v := (FDiffuseColorInt.a-128) shr 8;\n    if v > 255 then v := 255;\n    result := v;\n  end;\nend;\n\nfunction TBGRAMaterial3D.GetDiffuseColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(FDiffuseColorInt,True);\nend;\n\nfunction TBGRAMaterial3D.GetDiffuseColorF: TColorF;\nbegin\n  result := ColorInt65536ToColorF(FDiffuseColorInt);\nend;\n\nfunction TBGRAMaterial3D.GetDiffuseColorInt: TColorInt65536;\nbegin\n  result := FDiffuseColorInt;\nend;\n\nfunction TBGRAMaterial3D.GetLightThroughFactor: single;\nbegin\n  result := FLightThroughFactor;\nend;\n\nfunction TBGRAMaterial3D.GetSpecularColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(FSpecularColorInt,True);\nend;\n\nfunction TBGRAMaterial3D.GetSpecularColorF: TColorF;\nbegin\n  result := ColorInt65536ToColorF(FSpecularColorInt);\nend;\n\nfunction TBGRAMaterial3D.GetSpecularColorInt: TColorInt65536;\nbegin\n  result := FSpecularColorInt;\nend;\n\nfunction TBGRAMaterial3D.GetSpecularIndex: integer;\nbegin\n  result := FSpecularIndex;\nend;\n\nfunction TBGRAMaterial3D.GetSaturationHigh: single;\nbegin\n  result := FSaturationHighF;\nend;\n\nfunction TBGRAMaterial3D.GetSaturationLow: single;\nbegin\n  result := FSaturationLowF;\nend;\n\nfunction TBGRAMaterial3D.GetSimpleAlpha: byte;\nbegin\n  result := (GetAmbiantAlpha + GetDiffuseAlpha) shr 1;\nend;\n\nfunction TBGRAMaterial3D.GetSimpleColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(GetSimpleColorInt,True);\nend;\n\nfunction TBGRAMaterial3D.GetSimpleColorF: TColorF;\nbegin\n  result := ColorInt65536ToColorF(GetSimpleColorInt);\nend;\n\nfunction TBGRAMaterial3D.GetSimpleColorInt: TColorInt65536;\nbegin\n  result := (GetAmbiantColorInt + GetDiffuseColorInt)*32768;\nend;\n\nfunction TBGRAMaterial3D.GetTexture: IBGRAScanner;\nbegin\n  result := FTexture;\nend;\n\nfunction TBGRAMaterial3D.GetTextureZoom: TPointF;\nbegin\n  result := FTextureZoom;\nend;\n\nprocedure TBGRAMaterial3D.SetAutoAmbiantColor(const AValue: boolean);\nbegin\n  If AValue then\n    SetAmbiantColorInt(ColorInt65536(65536,65536,65536));\nend;\n\nprocedure TBGRAMaterial3D.SetAutoDiffuseColor(const AValue: boolean);\nbegin\n  If AValue then\n    SetDiffuseColorInt(ColorInt65536(65536,65536,65536));\nend;\n\nprocedure TBGRAMaterial3D.SetAutoSpecularColor(const AValue: boolean);\nbegin\n  If AValue then\n    SetSpecularColorInt(ColorInt65536(65536,65536,65536));\nend;\n\nprocedure TBGRAMaterial3D.SetAmbiantAlpha(AValue: byte);\nbegin\n  if AValue = 0 then\n    FAmbiantColorInt.a := 0\n  else\n    FAmbiantColorInt.a := AValue*257+1;\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetAmbiantColor(const AValue: TBGRAPixel);\nbegin\n  FAmbiantColorInt := BGRAToColorInt(AValue,True);\n  FAutoAmbiantColor := (FAmbiantColorInt.r = 65536) and (FAmbiantColorInt.g = 65536) and (FAmbiantColorInt.b = 65536) and (FAmbiantColorInt.a = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetAmbiantColorF(const AValue: TColorF);\nbegin\n  FAmbiantColorInt := ColorFToColorInt65536(AValue);\n  FAutoAmbiantColor := (FAmbiantColorInt.r = 65536) and (FAmbiantColorInt.g = 65536) and (FAmbiantColorInt.b = 65536) and (FAmbiantColorInt.a = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetAmbiantColorInt(const AValue: TColorInt65536);\nbegin\n  FAmbiantColorInt := AValue;\n  FAutoAmbiantColor := (FAmbiantColorInt.r = 65536) and (FAmbiantColorInt.g = 65536) and (FAmbiantColorInt.b = 65536) and (FAmbiantColorInt.a = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetDiffuseColor(const AValue: TBGRAPixel);\nbegin\n  FDiffuseColorInt := BGRAToColorInt(AValue,True);\n  FDiffuseLightness := (FDiffuseColorInt.r + FDiffuseColorInt.g + FDiffuseColorInt.b) div 6;\n  FAutoDiffuseColor:= (FDiffuseColorInt.r = 65536) and (FDiffuseColorInt.g = 65536) and (FDiffuseColorInt.b = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetDiffuseColorF(const AValue: TColorF);\nbegin\n  FDiffuseColorInt := ColorFToColorInt65536(AValue);\n  FDiffuseLightness := (FDiffuseColorInt.r + FDiffuseColorInt.g + FDiffuseColorInt.b) div 6;\n  FAutoDiffuseColor:= (FDiffuseColorInt.r = 65536) and (FDiffuseColorInt.g = 65536) and (FDiffuseColorInt.b = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetDiffuseColorInt(const AValue: TColorInt65536);\nbegin\n  FDiffuseColorInt := AValue;\n  FDiffuseLightness := (FDiffuseColorInt.r + FDiffuseColorInt.g + FDiffuseColorInt.b) div 6;\n  FAutoDiffuseColor:= (FDiffuseColorInt.r = 65536) and (FDiffuseColorInt.g = 65536) and (FDiffuseColorInt.b = 65536);\n  UpdateSimpleColor;\nend;\n\nprocedure TBGRAMaterial3D.SetLightThroughFactor(const AValue: single);\nbegin\n  FLightThroughFactor:= AValue;\nend;\n\nprocedure TBGRAMaterial3D.SetSpecularColor(const AValue: TBGRAPixel);\nbegin\n  FSpecularColorInt := BGRAToColorInt(AValue,True);\n  UpdateSpecular;\nend;\n\nprocedure TBGRAMaterial3D.SetSpecularColorF(const AValue: TColorF);\nbegin\n  FSpecularColorInt := ColorFToColorInt65536(AValue);\n  UpdateSpecular;\nend;\n\nprocedure TBGRAMaterial3D.SetSpecularColorInt(const AValue: TColorInt65536);\nbegin\n  FSpecularColorInt := AValue;\n  UpdateSpecular;\nend;\n\nprocedure TBGRAMaterial3D.SetSpecularIndex(const AValue: integer);\nbegin\n  FSpecularIndex := AValue;\n  UpdateSpecular;\n\n  FPowerTable := nil;\nend;\n\nprocedure TBGRAMaterial3D.SetSaturationHigh(const AValue: single);\nbegin\n  FSaturationHighF:= AValue;\nend;\n\nprocedure TBGRAMaterial3D.SetSaturationLow(const AValue: single);\nbegin\n  FSaturationLowF:= AValue;\nend;\n\nprocedure TBGRAMaterial3D.SetSimpleAlpha(AValue: byte);\nbegin\n  SetAmbiantAlpha(AValue);\n  SetDiffuseAlpha(AValue);\nend;\n\nprocedure TBGRAMaterial3D.SetSimpleColor(AValue: TBGRAPixel);\nbegin\n  SetAmbiantColor(AValue);\n  SetDiffuseColor(AValue);\nend;\n\nprocedure TBGRAMaterial3D.SetSimpleColorF(AValue: TColorF);\nbegin\n  SetAmbiantColorF(AValue);\n  SetDiffuseColorF(AValue);\nend;\n\nprocedure TBGRAMaterial3D.SetSimpleColorInt(AValue: TColorInt65536);\nbegin\n  SetAmbiantColorInt(AValue);\n  SetDiffuseColorInt(AValue);\nend;\n\nprocedure TBGRAMaterial3D.SetTexture(AValue: IBGRAScanner);\nbegin\n  If AValue <> FTexture then\n  begin\n    FTexture := AValue;\n    if Assigned(FOnTextureChanged) then\n      FOnTextureChanged(self);\n  end;\nend;\n\nprocedure TBGRAMaterial3D.SetTextureZoom(AValue: TPointF);\nbegin\n  if AValue <> FTextureZoom then\n  begin\n    FTextureZoom := AValue;\n    if Assigned(FOnTextureChanged) then\n      FOnTextureChanged(self);\n  end;\nend;\n\nfunction TBGRAMaterial3D.GetName: string;\nbegin\n  result := FName;\nend;\n\nprocedure TBGRAMaterial3D.SetName(const AValue: string);\nbegin\n  FName := AValue;\nend;\n\nfunction TBGRAMaterial3D.GetSpecularOn: boolean;\nbegin\n  result := FSpecularOn;\nend;\n\nfunction TBGRAMaterial3D.GetAsObject: TObject;\nbegin\n  result := self;\nend;\n\nprocedure TBGRAMaterial3D.ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext; DiffuseIntensity, SpecularIntensity, SpecularCosine: single; const ALightColor: TColorInt65536);\nvar\n  NH,PowerTablePos: single; //keep first for asm\n\n  NnH: single;\n  PowerTableFPos: single;\n  PowerTableIPos,i: Int32or64;\nbegin\n  if SpecularCosine <= 0 then\n    NnH := 0\n  else\n  if SpecularCosine >= 1 then\n    NnH := 1 else\n  begin\n    NH := SpecularCosine;\n    if FPowerTable = nil then ComputePowerTable;\n    {$IFDEF CPUI386} {$asmmode intel}\n    i := FPowerTableExp2;\n    if i > 0 then\n    begin\n      PowerTablePos := FPowerTableSize;\n      asm\n        db $d9,$45,$f0  //flds NH\n        mov ecx,i\n      @loop:\n        db $dc,$c8      //fmul st,st(0)\n        dec ecx\n        jnz @loop\n        db $d8,$4d,$ec  //fmuls PowerTablePos\n        db $d9,$5d,$ec  //fstps PowerTablePos\n      end;\n    end\n    else\n      PowerTablePos := NH*FPowerTableSize;\n    {$ELSE}\n    PowerTablePos := NH;\n    for i := FPowerTableExp2-1 downto 0 do\n      PowerTablePos := PowerTablePos*PowerTablePos;\n    PowerTablePos := PowerTablePos * FPowerTableSize;\n    {$ENDIF}\n    PowerTableIPos := round(PowerTablePos+0.5);\n    PowerTableFPos := PowerTablePos-PowerTableIPos;\n    NnH := FPowerTable[PowerTableIPos]*(1-PowerTableFPos)+FPowerTable[PowerTableIPos+1]*PowerTableFPos;\n  end; //faster than NnH := exp(FSpecularIndex*ln(NH)); !\n\n  if FAutoDiffuseColor then\n    Context^.diffuseColor := Context^.diffuseColor + ALightColor*round(DiffuseIntensity*65536)\n  else\n    Context^.diffuseColor := Context^.diffuseColor + ALightColor*FDiffuseColorInt*round(DiffuseIntensity*65536);\n\n  if FAutoSpecularColor then\n    Context^.specularColor := Context^.specularColor + ALightColor*round(SpecularIntensity* NnH*65536)\n  else\n    Context^.specularColor := Context^.specularColor + ALightColor*FSpecularColorInt*round(SpecularIntensity* NnH*65536);\nend;\n\nprocedure TBGRAMaterial3D.ComputeDiffuseColor(Context: PSceneLightingContext;\n  const DiffuseIntensity: single; const ALightColor: TColorInt65536);\nbegin\n  if FAutoDiffuseColor then\n    Context^.diffuseColor := Context^.diffuseColor + ALightColor*round(DiffuseIntensity*65536)\n  else\n    Context^.diffuseColor := Context^.diffuseColor + ALightColor*FDiffuseColorInt*round(DiffuseIntensity*65536);\nend;\n\nprocedure TBGRAMaterial3D.ComputeDiffuseLightness(\n  Context: PSceneLightingContext; DiffuseLightnessTerm32768: integer; ALightLightness: integer);\nbegin\n  if FAutoDiffuseColor then\n  begin\n    if ALightLightness <> 32768 then\n      inc(Context^.lightness, CombineLightness(DiffuseLightnessTerm32768,ALightLightness) )\n    else\n      inc(Context^.lightness, DiffuseLightnessTerm32768 );\n  end else\n  begin\n    if FDiffuseLightness <> 32768 then\n      inc(Context^.lightness, CombineLightness(DiffuseLightnessTerm32768,CombineLightness(FDiffuseLightness,ALightLightness)) )\n    else\n      inc(Context^.lightness, CombineLightness(DiffuseLightnessTerm32768,ALightLightness) );\n  end;\nend;\n\n{ TBGRALight3D }\n\nconstructor TBGRALight3D.Create;\nbegin\n  SetColorF(ColorF(1,1,1,1));\n  FViewVector := Point3D_128(0,0,-1);\n  FMinIntensity:= 0;\nend;\n\ndestructor TBGRALight3D.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TBGRALight3D.ReleaseInterface;\nbegin\n  _Release;\nend;\n\nfunction TBGRALight3D.GetLightnessF: single;\nbegin\n  result := FLightness/32768;\nend;\n\nfunction TBGRALight3D.GetColor: TBGRAPixel;\nbegin\n  result := ColorIntToBGRA(FColorInt,True);\nend;\n\nfunction TBGRALight3D.GetColorF: TColorF;\nbegin\n  result := ColorInt65536ToColorF(FColorInt);\nend;\n\nfunction TBGRALight3D.GetColorInt: TColorInt65536;\nbegin\n  result := FColorInt;\nend;\n\nfunction TBGRALight3D.GetAsObject: TObject;\nbegin\n  result := self;\nend;\n\nprocedure TBGRALight3D.SetColor(const AValue: TBGRAPixel);\nbegin\n  SetColorInt(BGRAToColorInt(AValue,True));\nend;\n\nprocedure TBGRALight3D.SetColorF(const AValue: TColorF);\nbegin\n  SetColorInt(ColorFToColorInt65536(AValue));\nend;\n\nprocedure TBGRALight3D.SetColorInt(const AValue: TColorInt65536);\nbegin\n  FColorInt := AValue;\n  FLightness:= (AValue.r+AValue.g+AValue.b) div 6;\nend;\n\nfunction TBGRALight3D.GetColoredLight: boolean;\nbegin\n  result := (FColorInt.r <> FColorInt.g) or (FColorInt.g <> FColorInt.b);\nend;\n\nfunction TBGRALight3D.GetMinIntensity: single;\nbegin\n  result := FMinIntensity;\nend;\n\nprocedure TBGRALight3D.SetMinIntensity(const AValue: single);\nbegin\n  FMinIntensity := AValue;\nend;\n\nfunction TBGRALight3D.GetIntensity: single;\nbegin\n  result := 1;\nend;\n\nfunction TBGRALight3D.GetPosition: TPoint3D;\nbegin\n  result := Point3D(0,0,0);\nend;\n\nfunction TBGRALight3D.GetDirection: TPoint3D;\nbegin\n  result := Point3D(0,0,0);\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgraslicescaling.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Computation of slice scaling of images (to extended bitmap prototypes) }\nunit BGRASliceScaling;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmap, BGRABitmapTypes, IniFiles;\n\ntype\n  { Margins where the bitmap is not stretched }\n  TMargins = record\n    top, right, bottom, left: integer;\n  end;\n  TSlicePosition = (spTopLeft, spTop, spTopRight, spLeft, spMiddle, spRight,\n    spBottomLeft, spBottom, spBottomRight);\n  TSliceBitmapArray = array[TSlicePosition] of TBGRABitmap;\n  TSliceRectArray = array[TSlicePosition] of TRect;\n  TSliceRepeatPosition = (srpTop, srpLeft, srpMiddleHorizontal,\n    srpMiddleVertical, srpRight, srpBottom);\n  TSliceRepeatArray = array[TSliceRepeatPosition] of boolean;\n\nconst\n  SliceRepeatPositionStr : array[TSliceRepeatPosition] of string =\n      ('Top','Left','MiddleHorizontal','MiddleVertical','Right','Bottom');\n\nfunction Margins(ATop, ARight, ABottom, ALeft: integer): TMargins;\n\ntype\n  { Class to configure and render slice scaling of a bitmap }\n  TBGRASliceScaling = class\n  private\n    FSliceRectArray: TSliceRectArray;\n    FSliceBitmapArray: TSliceBitmapArray;\n    FSliceRepeat: TSliceRepeatArray;\n    FBitmap: TBGRABitmap;\n    FBitmapOwned: boolean;\n    FBitmapSourceRect: TRect;\n    FMargins: TMargins;\n    FDrawMode: TDrawMode;\n    FResampleMode: TResampleMode;\n    FResampleFilter: TResampleFilter;\n    function GetBitmapHeight: integer;\n    function GetBitmapWidth: integer;\n    function GetSlice(APosition: TSlicePosition): TBGRABitmap;\n    function GetSliceRepeat(Aposition: TSliceRepeatPosition): boolean;\n    function GetSliceRepeatAsString: string;\n    procedure SetBitmap(AValue: TBGRABitmap);\n    procedure SetBitmapSourceRect(AValue: TRect);\n    procedure SetDrawMode(AValue: TDrawMode);\n    procedure SetResampleFilter(AValue: TResampleFilter);\n    procedure SetResampleMode(AValue: TResampleMode);\n    procedure SetSliceRepeat(Aposition: TSliceRepeatPosition; AValue: boolean);\n    procedure SetSliceRepeatAsString(AValue: string);\n  protected\n    // Stuff\n    procedure UpdateSliceRectArray;\n    function ComputeSliceRectArray(ARect: TRect): TSliceRectArray;\n    procedure SliceScalingDraw(ADest: TBGRABitmap; ADestRect: TRect;\n      DrawGrid: boolean = False);\n    procedure Init;\n    procedure ClearBitmapArray;\n  public\n    // Create an instance and stores the bitmap, either as a reference to a TBGRABitmap from the caller,\n    // or as a local owned copy in other cases\n    constructor Create(ABitmap: TBGRABitmap;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer; ABitmapOwner: boolean = false); overload;\n    constructor Create(ABitmap: TBitmap;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer); overload;\n    constructor Create(AFilename: string;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer); overload;\n    constructor Create(AFilename: string; AIsUtf8: boolean;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer); overload;\n    constructor Create(AStream: TStream;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer); overload;\n    constructor Create(ABitmap: TBGRABitmap; ABitmapOwner: boolean = false); overload;\n    constructor Create(ABitmap: TBitmap); overload;\n    constructor Create(AFilename: string); overload;\n    constructor Create(AFilename: string; AIsUtf8: boolean); overload;\n    constructor Create(AStream: TStream); overload;\n    constructor Create; overload;\n    procedure SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer); overload;\n    procedure SetMargins(AMargins: TMargins); overload;\n    destructor Destroy; override;\n  public\n    procedure NotifyBitmapChanged; //to notify the source bitmap has changed\n    //so new bitmaps should be used\n    // Draw\n    procedure Draw(ABitmap: TBGRABitmap; ARect: TRect; DrawGrid: boolean = False); overload;\n    procedure Draw(ABitmap: TBGRABitmap; ALeft, ATop, AWidth, AHeight: integer;\n      DrawGrid: boolean = False); overload;\n    procedure AutodetectRepeat;\n  public\n    // Property\n    property DrawMode: TDrawMode read FDrawMode write SetDrawMode;\n    property ResampleMode: TResampleMode read FResampleMode write SetResampleMode;\n    property ResampleFilter: TResampleFilter read FResampleFilter\n      write SetResampleFilter;\n    property BitmapWidth: integer read GetBitmapWidth;\n    property BitmapHeight: integer read GetBitmapHeight;\n    property BitmapSource: TBGRABitmap read FBitmap write SetBitmap;\n    property BitmapSourceRect: TRect read FBitmapSourceRect write SetBitmapSourceRect;\n    property Margins: TMargins read FMargins write SetMargins;\n    property SliceBitmap[APosition: TSlicePosition]: TBGRABitmap read GetSlice;\n    property SliceRepeat[Aposition: TSliceRepeatPosition]: boolean\n      read GetSliceRepeat write SetSliceRepeat;\n    property SliceRepeatAsString: string read GetSliceRepeatAsString write SetSliceRepeatAsString;\n  end;\n\n  TSliceScalingArray = array of TBGRASliceScaling;\n  TSliceScalingDirection = (sdHorizontal, sdVertical);\n  TBGRABitmapArray = array of TBGRABitmap;\n\n  { Slice scaling of multiple bitmaps }\n  TBGRAMultiSliceScaling = class\n  private\n    FSliceScalingArray: TSliceScalingArray;\n    FBitmapOwned: boolean;\n    FBitmap: TBGRABitmap;\n    function GetCount: integer;\n    procedure SetFSliceScalingArray(AValue: TSliceScalingArray);\n  public\n    constructor Create(ABitmap: TBGRABitmap;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n      Direction: TSliceScalingDirection; ABitmapOwner: boolean = false); overload;\n    constructor Create(ABitmap: TBitmap;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n      Direction: TSliceScalingDirection); overload;\n    constructor Create(ABitmapFilename: string;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n      Direction: TSliceScalingDirection); overload;\n    constructor Create(ABitmapFilename: string; AIsUtf8: boolean;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n      Direction: TSliceScalingDirection); overload;\n    constructor Create(AStream: TStream;\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n      Direction: TSliceScalingDirection); overload;\n    destructor Destroy; override;\n    constructor Create(AIniFilename, ASection: string; AIsUtf8Filename: boolean= false); overload;\n  public\n    procedure Draw(ItemNumber: integer; ABitmap: TBGRABitmap;\n      ARect: TRect; DrawGrid: boolean = False); overload;\n    procedure Draw(ItemNumber: integer; ABitmap: TBGRABitmap;\n      ALeft, ATop, AWidth, AHeight: integer; DrawGrid: boolean = False); overload;\n  public\n    property Count: integer read GetCount;\n    property SliceScalingArray: TSliceScalingArray\n      read FSliceScalingArray write SetFSliceScalingArray;\n  end;\n\nimplementation\n\nuses BGRAUTF8;\n\nfunction Margins(ATop, ARight, ABottom, ALeft: integer): TMargins;\nbegin\n  Result.top := atop;\n  Result.right := aright;\n  Result.bottom := abottom;\n  Result.left := aleft;\nend;\n\n{ TBGRAMultiSliceScaling }\n\nprocedure TBGRAMultiSliceScaling.SetFSliceScalingArray(AValue: TSliceScalingArray);\nbegin\n  if FSliceScalingArray = AValue then\n    Exit;\n  FSliceScalingArray := AValue;\nend;\n\nfunction TBGRAMultiSliceScaling.GetCount: integer;\nbegin\n  result := length(FSliceScalingArray);\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(ABitmap: TBGRABitmap;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n  Direction: TSliceScalingDirection; ABitmapOwner: boolean = false);\nvar\n  i: integer;\n  ItemWidth,ItemHeight,ItemStepX,ItemStepY: integer;\nbegin\n  FBitmap := ABitmap;\n  FBitmapOwned := ABitmapOwner;\n  ItemWidth := ABitmap.Width;\n  ItemHeight := ABitmap.Height;\n  ItemStepX := 0;\n  ItemStepY := 0;\n  case Direction of\n    sdVertical: begin\n                  ItemHeight:= ABitmap.Height div NumberOfItems;\n                  ItemStepY := ItemHeight;\n                end;\n    sdHorizontal:\n                begin\n                  ItemWidth:= ABitmap.Width div NumberOfItems;\n                  ItemStepX := ItemWidth;\n                end;\n  end;\n\n  SetLength(FSliceScalingArray, NumberOfItems);\n  for i := Low(FSliceScalingArray) to High(FSliceScalingArray) do\n  begin\n    FSliceScalingArray[i] := TBGRASliceScaling.Create(ABitmap,\n      AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\n    FSliceScalingArray[i].BitmapSourceRect := rect(ItemStepX*i,ItemStepY*i,ItemStepX*i+ItemWidth,ItemStepY*i+ItemHeight);\n  end;\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(ABitmap: TBitmap;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n  Direction: TSliceScalingDirection);\nbegin\n  Create(TBGRABitmap.Create(ABitmap), AMarginTop, AMarginRight, AMarginBottom, AMarginLeft,\n    NumberOfItems, Direction, True);\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(ABitmapFilename: string;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n  Direction: TSliceScalingDirection);\nbegin\n  Create(TBGRABitmap.Create(ABitmapFilename), AMarginTop, AMarginRight, AMarginBottom, AMarginLeft,\n    NumberOfItems, Direction, True);\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(ABitmapFilename: string; AIsUtf8: boolean;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n  Direction: TSliceScalingDirection);\nbegin\n  Create(TBGRABitmap.Create(ABitmapFilename,AIsUtf8), AMarginTop, AMarginRight, AMarginBottom, AMarginLeft,\n    NumberOfItems, Direction, True);\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(AStream: TStream;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft, NumberOfItems: integer;\n  Direction: TSliceScalingDirection);\nbegin\n  Create(TBGRABitmap.Create(AStream), AMarginTop, AMarginRight, AMarginBottom, AMarginLeft,\n    NumberOfItems, Direction, True);\nend;\n\ndestructor TBGRAMultiSliceScaling.Destroy;\nvar\n  i: integer;\nbegin\n  for i := Low(FSliceScalingArray) to High(FSliceScalingArray) do\n    FSliceScalingArray[i].Free;\n  if FBitmapOwned then FBitmap.Free;\n\n  inherited Destroy;\nend;\n\nconstructor TBGRAMultiSliceScaling.Create(AIniFilename, ASection: string;\n  AIsUtf8Filename: boolean);\nvar\n  i: integer;\n  temp: TMemIniFile;\n  Direction: TSliceScalingDirection;\n  defaultRepeat: string;\n  IniPathUTF8,BitmapFilename: string;\nbegin\n  if AIsUtf8Filename then\n  begin\n    if not FileExistsUTF8(AIniFilename) then exit;\n    temp := TMemIniFile.Create(UTF8ToSys(AIniFilename));\n    IniPathUTF8 := ExtractFilePath(AIniFilename);\n  end else\n  begin\n    if not FileExists(AIniFilename) then exit;\n    temp := TMemIniFile.Create(AIniFilename);\n    IniPathUTF8 := SysToUTF8(ExtractFilePath(AIniFilename));\n  end;\n\n  if temp.ReadBool(ASection, 'HorizontalDirection', False) then\n    Direction := sdHorizontal\n  else\n    Direction := sdVertical;\n\n  BitmapFilename := temp.ReadString(ASection, 'Bitmap', '');\n  if (copy(BitmapFilename,1,2) = '.\\') or (copy(BitmapFilename,1,2) = './') then\n    BitmapFilename := IniPathUTF8+SysToUTF8(copy(BitmapFilename,3,Length(BitmapFilename)-2));\n  Create(\n    BitmapFilename,True,\n    temp.ReadInteger(ASection, 'MarginTop', 0),\n    temp.ReadInteger(ASection, 'MarginRight', 0),\n    temp.ReadInteger(ASection, 'MarginBottom', 0),\n    temp.ReadInteger(ASection, 'MarginLeft', 0),\n    temp.ReadInteger(ASection, 'NumberOfItems', 1),\n    Direction);\n\n  defaultRepeat := temp.ReadString(ASection, 'Repeat', 'Auto');\n  for i := 0 to High(FSliceScalingArray) do\n    FSliceScalingArray[i].SliceRepeatAsString := temp.ReadString(ASection, 'Repeat'+IntToStr(i+1), defaultRepeat);\n\n  temp.Free;\nend;\n\nprocedure TBGRAMultiSliceScaling.Draw(ItemNumber: integer; ABitmap: TBGRABitmap;\n  ARect: TRect; DrawGrid: boolean);\nbegin\n  if (ItemNumber < 0) or (ItemNumber >= Count) then exit;\n  FSliceScalingArray[ItemNumber].Draw(ABitmap, ARect, DrawGrid);\nend;\n\nprocedure TBGRAMultiSliceScaling.Draw(ItemNumber: integer; ABitmap: TBGRABitmap;\n  ALeft, ATop, AWidth, AHeight: integer; DrawGrid: boolean);\nbegin\n  if (ItemNumber < 0) or (ItemNumber >= Count) then exit;\n  FSliceScalingArray[ItemNumber].Draw(ABitmap, ALeft, ATop, AWidth, AHeight, DrawGrid);\nend;\n\n{ TBGRASliceScaling }\n\nprocedure TBGRASliceScaling.SetDrawMode(AValue: TDrawMode);\nbegin\n  if FDrawMode = AValue then\n    Exit;\n  FDrawMode := AValue;\nend;\n\nprocedure TBGRASliceScaling.SetBitmap(AValue: TBGRABitmap);\nbegin\n  if FBitmap = AValue then\n    Exit;\n  if FBitmapOwned then\n    FBitmap.Free;\n  FBitmap := AValue;\n  FBitmapOwned := False;\n  UpdateSliceRectArray;\nend;\n\nprocedure TBGRASliceScaling.SetBitmapSourceRect(AValue: TRect);\nbegin\n  if (FBitmapSourceRect.Left=AValue.Left) and\n     (FBitmapSourceRect.Right=AValue.Right) and\n     (FBitmapSourceRect.Top=AValue.Top) and\n     (FBitmapSourceRect.Bottom=AValue.Bottom) then Exit;\n  FBitmapSourceRect:=AValue;\n  UpdateSliceRectArray;\nend;\n\nfunction TBGRASliceScaling.GetSlice(APosition: TSlicePosition): TBGRABitmap;\nbegin\n  if FSliceBitmapArray[APosition] = nil then\n    with FSliceRectArray[APosition] do\n    begin\n      FSliceBitmapArray[APosition] := TBGRABitmap.Create(right - left, bottom - top);\n      FSliceBitmapArray[APosition].PutImage(-left, -top, FBitmap, dmSet);\n    end;\n  Result := FSliceBitmapArray[APosition];\nend;\n\nfunction TBGRASliceScaling.GetBitmapHeight: integer;\nbegin\n  result := FBitmapSourceRect.Bottom - FBitmapSourceRect.Top;\nend;\n\nfunction TBGRASliceScaling.GetBitmapWidth: integer;\nbegin\n  result := FBitmapSourceRect.Right - FBitmapSourceRect.Left;\nend;\n\nfunction TBGRASliceScaling.GetSliceRepeat(Aposition: TSliceRepeatPosition): boolean;\nbegin\n  Result := FSliceRepeat[Aposition];\nend;\n\nfunction TBGRASliceScaling.GetSliceRepeatAsString: string;\nvar p: TSliceRepeatPosition;\nbegin\n  result := '';\n  for p := low(TSliceRepeatPosition) to high(TSliceRepeatPosition) do\n    if SliceRepeat[p] then\n    begin\n      if result <> '' then AppendStr(result, '+');\n      AppendStr(result, SliceRepeatPositionStr[p]);\n    end;\nend;\n\nprocedure TBGRASliceScaling.SetResampleFilter(AValue: TResampleFilter);\nbegin\n  if FResampleFilter = AValue then\n    Exit;\n  FResampleFilter := AValue;\nend;\n\nprocedure TBGRASliceScaling.SetResampleMode(AValue: TResampleMode);\nbegin\n  if FResampleMode = AValue then\n    Exit;\n  FResampleMode := AValue;\nend;\n\nprocedure TBGRASliceScaling.SetSliceRepeat(Aposition: TSliceRepeatPosition;\n  AValue: boolean);\nbegin\n  FSliceRepeat[Aposition] := AValue;\nend;\n\nprocedure TBGRASliceScaling.SetSliceRepeatAsString(AValue: string);\nvar p: TSliceRepeatPosition;\n  attr: string;\n  idx: integer;\nbegin\n  AValue := trim(AValue);\n  if compareText(AValue,'All')=0 then\n  begin\n    for p := low(TSliceRepeatPosition) to high(TSliceRepeatPosition) do\n      SliceRepeat[p] := true;\n    exit;\n  end;\n  for p := low(TSliceRepeatPosition) to high(TSliceRepeatPosition) do\n    SliceRepeat[p] := false;\n  if compareText(AValue,'None')=0 then exit;\n\n  while AValue <> '' do\n  begin\n    idx := pos('+',AValue);\n    if idx <> 0 then\n    begin\n      attr := copy(AValue,1,idx-1);\n      delete(AValue,1,idx);\n    end else\n    begin\n      attr := AValue;\n      AValue := '';\n    end;\n    for p := low(TSliceRepeatPosition) to high(TSliceRepeatPosition) do\n      if CompareText(SliceRepeatPositionStr[p],attr)=0 then\n      begin\n        SliceRepeat[p] := true;\n        attr := '';\n        break;\n      end;\n    if compareText(attr,'Auto')=0 then AutodetectRepeat else\n      if attr <> '' then\n        raise exception.Create('Unknown slice repeat attribute ('+attr+')');\n  end;\nend;\n\nprocedure TBGRASliceScaling.UpdateSliceRectArray;\nbegin\n  ClearBitmapArray;\n  if FBitmap = nil then exit;\n  FSliceRectArray := ComputeSliceRectArray(FBitmapSourceRect);\nend;\n\nfunction TBGRASliceScaling.ComputeSliceRectArray(ARect: TRect): TSliceRectArray;\nvar\n  Width, Height: integer;\n  pos: TSlicePosition;\n  lMargins: TMargins;\n  ratio: single;\nbegin\n  Width := ARect.Right - ARect.Left;\n  Height := ARect.Bottom - ARect.Top;\n  if (Width <= 0) or (Height <= 0) then\n    raise Exception.Create('Empty rectangle');\n\n  lMargins := FMargins;\n  if lMargins.top < 0 then\n    lMargins.top := 0;\n  if lMargins.right < 0 then\n    lMargins.right := 0;\n  if lMargins.bottom < 0 then\n    lMargins.bottom := 0;\n  if lMargins.left < 0 then\n    lMargins.left := 0;\n  if lmargins.left + lMargins.right >= Width then\n  begin\n    ratio := Width / (lmargins.left + lMargins.right + 1);\n    lMargins.left := trunc(lMargins.left * ratio);\n    lMargins.right := trunc(lMargins.right * ratio);\n  end;\n  if lmargins.top + lMargins.bottom >= Height then\n  begin\n    ratio := Height / (lmargins.top + lMargins.bottom + 1);\n    lMargins.top := trunc(lMargins.top * ratio);\n    lMargins.bottom := trunc(lMargins.bottom * ratio);\n  end;\n  with lMargins do\n  begin\n    Result[spTopLeft] := rect(0, 0, Left, Top);\n    Result[spTop] := rect(Left, 0, Width - Right, Top);\n    Result[spTopRight] := rect(Width - Right, 0, Width, Top);\n    Result[spLeft] := rect(0, Top, Left, Height - Bottom);\n    Result[spMiddle] := rect(Left, Top, Width - Right, Height - Bottom);\n    Result[spRight] := rect(Width - Right, Top, Width, Height - Bottom);\n    Result[spBottomLeft] := rect(0, Height - Bottom, Left, Height);\n    Result[spBottom] := rect(Left, Height - Bottom, Width - Right, Height);\n    Result[spBottomRight] := rect(Width - Right, Height - Bottom, Width, Height);\n  end;\n  for pos := low(TSlicePosition) to high(TSlicePosition) do\n    Result[pos].Offset(ARect.Left, ARect.Top);\nend;\n\nprocedure TBGRASliceScaling.SliceScalingDraw(ADest: TBGRABitmap;\n  ADestRect: TRect; DrawGrid: boolean);\nvar\n  pos: TSlicePosition;\n  tempBGRA: TBGRABitmap;\n  DestSliceRect: TSliceRectArray;\n  repeatSlice: boolean;\nbegin\n  if (ADestRect.Right <= ADestRect.Left) or (ADestRect.Bottom <= ADestRect.Top) then\n    exit;\n  DestSliceRect := ComputeSliceRectArray(ADestRect);\n  for pos := Low(TSlicePosition) to High(TSlicePosition) do\n  begin\n    with DestSliceRect[pos] do\n    begin\n      if (right > left) and (bottom > top) then\n      begin\n        case pos of\n          spTop: repeatSlice := SliceRepeat[srpTop];\n          spRight: repeatSlice := SliceRepeat[srpRight];\n          spBottom: repeatSlice := SliceRepeat[srpBottom];\n          spLeft: repeatSlice := SliceRepeat[srpLeft];\n          spMiddle: repeatSlice :=\n              SliceRepeat[srpMiddleHorizontal] and SliceRepeat[srpMiddleVertical];\n          else\n            repeatSlice := False;\n        end;\n        //simple copy\n        if (right - left = FSliceRectArray[pos].right - FSliceRectArray[pos].left) and\n          (bottom - top = FSliceRectArray[pos].bottom - FSliceRectArray[pos].top) then\n        begin\n          FBitmap.ScanOffset :=\n            point(FSliceRectArray[pos].left - left, FSliceRectArray[pos].top - top);\n          ADest.FillRect(left, top, right, bottom, FBitmap, FDrawMode);\n        end\n        else\n        //repeat in both direction\n        if repeatSlice then\n        begin\n          tempBGRA := SliceBitmap[pos];\n          tempBGRA.ScanOffset := point(-left, -top);\n          ADest.FillRect(left, top, right, bottom, tempBGRA, FDrawMode);\n        end\n        else\n        //resample in both directions (or in one direction if the other direction has the same size)\n        if (pos <> spMiddle) or (not SliceRepeat[srpMiddleHorizontal] and\n          not SliceRepeat[srpMiddleVertical]) then\n        begin\n          SliceBitmap[pos].ResampleFilter := ResampleFilter;\n          tempBGRA := SliceBitmap[pos].Resample(right - left, bottom - top, FResampleMode);\n          ADest.PutImage(left, top, tempBGRA, FDrawMode);\n          tempBGRA.Free;\n        end\n        else //one dimension resample, other dimension resample\n        begin\n          SliceBitmap[pos].ResampleFilter := ResampleFilter;\n          if not SliceRepeat[srpMiddleHorizontal] then\n            tempBGRA := SliceBitmap[pos].Resample(\n              right - left, SliceBitmap[pos].Height, FResampleMode)\n          else\n            tempBGRA := SliceBitmap[pos].Resample(\n              SliceBitmap[pos].Width, bottom - top, FResampleMode);\n          tempBGRA.ScanOffset := point(-left, -top);\n          ADest.FillRect(left, top, right, bottom, tempBGRA, FDrawMode);\n          tempBGRA.Free;\n        end;\n      end;\n    end;\n  end;\n  if DrawGrid then\n  begin\n    ADest.DrawLineAntialias(DestSliceRect[spTop].left, DestSliceRect[spTop].top,\n      DestSliceRect[spBottom].left, DestSliceRect[spBottom].bottom,\n      BGRA(255, 0, 0, 255), BGRAPixelTransparent, 1, False);\n    ADest.DrawLineAntialias(DestSliceRect[spTop].right - 1, DestSliceRect[spTop].top,\n      DestSliceRect[spBottom].right - 1, DestSliceRect[spBottom].bottom,\n      BGRA(255, 0, 0, 255), BGRAPixelTransparent, 1, False);\n    ADest.DrawLineAntialias(DestSliceRect[spLeft].left, DestSliceRect[spLeft].top,\n      DestSliceRect[spRight].right, DestSliceRect[spRight].top,\n      BGRA(255, 0, 0, 255), BGRAPixelTransparent, 1, False);\n    ADest.DrawLineAntialias(DestSliceRect[spLeft].left, DestSliceRect[spLeft].bottom - 1,\n      DestSliceRect[spRight].right, DestSliceRect[spRight].bottom - 1,\n      BGRA(255, 0, 0, 255), BGRAPixelTransparent, 1, False);\n  end;\nend;\n\nprocedure TBGRASliceScaling.Init;\nvar\n  pos: TSliceRepeatPosition;\nbegin\n  FBitmap := nil;\n  FBitmapOwned := False;\n  for pos := low(TSliceRepeatPosition) to high(TSliceRepeatPosition) do\n    FSliceRepeat[pos] := False;\n  SetMargins(0, 0, 0, 0);\n  FBitmapSourceRect := rect(0,0,0,0);\n  DrawMode := dmDrawWithTransparency;\n  ResampleMode := rmFineResample;\n  ResampleFilter := rfHalfCosine;\nend;\n\nprocedure TBGRASliceScaling.ClearBitmapArray;\nvar\n  pos: TSlicePosition;\nbegin\n  for pos := low(TSlicePosition) to high(TSlicePosition) do\n    FreeAndNil(FSliceBitmapArray[pos]);\nend;\n\nconstructor TBGRASliceScaling.Create(ABitmap: TBGRABitmap;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer; ABitmapOwner: boolean = false);\nbegin\n  Create(ABitmap, ABitmapOwner);\n  SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\nend;\n\nconstructor TBGRASliceScaling.Create(ABitmap: TBitmap;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer);\nbegin\n  Create(ABitmap);\n  SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\nend;\n\nconstructor TBGRASliceScaling.Create(AFilename: string;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer);\nbegin\n  Create(AFilename);\n  SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\nend;\n\nconstructor TBGRASliceScaling.Create(AFilename: string; AIsUtf8: boolean;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer);\nbegin\n  Create(AFilename, AIsUtf8);\n  SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\nend;\n\nconstructor TBGRASliceScaling.Create(AStream: TStream;\n  AMarginTop, AMarginRight, AMarginBottom, AMarginLeft: integer);\nbegin\n  Create(AStream);\n  SetMargins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft);\nend;\n\nconstructor TBGRASliceScaling.Create(ABitmap: TBGRABitmap; ABitmapOwner: boolean = false);\nbegin\n  Init;\n  FBitmap := ABitmap;\n  FBitmapOwned := ABitmapOwner;\n  FBitmapSourceRect := rect(0,0,FBitmap.Width,FBitmap.Height);\nend;\n\nconstructor TBGRASliceScaling.Create(ABitmap: TBitmap);\nbegin\n  Init;\n  FBitmap := TBGRABitmap.Create(ABitmap);\n  FBitmapOwned := True;\n  FBitmapSourceRect := rect(0,0,FBitmap.Width,FBitmap.Height);\nend;\n\nconstructor TBGRASliceScaling.Create(AFilename: string);\nbegin\n  Init;\n  FBitmap := TBGRABitmap.Create(AFilename);\n  FBitmapOwned := True;\n  FBitmapSourceRect := rect(0,0,FBitmap.Width,FBitmap.Height);\nend;\n\nconstructor TBGRASliceScaling.Create(AFilename: string; AIsUtf8: boolean);\nbegin\n  Init;\n  FBitmap := TBGRABitmap.Create(AFilename,AIsUtf8);\n  FBitmapOwned := True;\n  FBitmapSourceRect := rect(0,0,FBitmap.Width,FBitmap.Height);\nend;\n\nconstructor TBGRASliceScaling.Create(AStream: TStream);\nbegin\n  Init;\n  FBitmap := TBGRABitmap.Create(AStream);\n  FBitmapOwned := True;\n  FBitmapSourceRect := rect(0,0,FBitmap.Width,FBitmap.Height);\nend;\n\nconstructor TBGRASliceScaling.Create;\nbegin\n  Init;\nend;\n\nprocedure TBGRASliceScaling.SetMargins(AMarginTop, AMarginRight,\n  AMarginBottom, AMarginLeft: integer);\nbegin\n  SetMargins(BGRASliceScaling.Margins(AMarginTop, AMarginRight, AMarginBottom, AMarginLeft));\nend;\n\nprocedure TBGRASliceScaling.SetMargins(AMargins: TMargins);\nbegin\n  if (AMargins.top <> FMargins.top) or (AMargins.right <> FMargins.right) or\n    (AMargins.bottom <> FMargins.bottom) or (AMargins.left <> FMargins.left) then\n  begin\n    FMargins := AMargins;\n    UpdateSliceRectArray;\n  end;\nend;\n\ndestructor TBGRASliceScaling.Destroy;\nbegin\n  ClearBitmapArray;\n  if FBitmapOwned then\n    FreeAndNil(FBitmap);\n  inherited Destroy;\nend;\n\nprocedure TBGRASliceScaling.NotifyBitmapChanged;\nbegin\n  ClearBitmapArray;\nend;\n\nprocedure TBGRASliceScaling.Draw(ABitmap: TBGRABitmap; ARect: TRect; DrawGrid: boolean);\nbegin\n  SliceScalingDraw(ABitmap, ARect, DrawGrid);\nend;\n\nprocedure TBGRASliceScaling.Draw(ABitmap: TBGRABitmap;\n  ALeft, ATop, AWidth, AHeight: integer; DrawGrid: boolean);\nbegin\n  Draw(ABitmap, rect(ALeft, ATop, ALeft + AWidth, ATop + AHeight), DrawGrid);\nend;\n\nprocedure TBGRASliceScaling.AutodetectRepeat;\nvar\n  middleSlice: TBGRABitmap;\n  x, y: integer;\n  p: PBGRAPixel;\n  c0: TBGRAPixel;\n  isRepeating: boolean;\nbegin\n  middleSlice := SliceBitmap[spMiddle];\n  isRepeating := True;\n  for y := 0 to middleSlice.Height - 1 do\n  begin\n    p := middleSlice.ScanLine[y];\n    c0 := p^;\n    for x := middleSlice.Width - 1 downto 0 do\n    begin\n      if p^ <> c0 then\n      begin\n        isRepeating := False;\n        break;\n      end;\n      Inc(p);\n    end;\n    if not isRepeating then\n      break;\n  end;\n  if isRepeating then\n    SliceRepeat[srpMiddleHorizontal] := True;\n\n  isRepeating := True;\n  for x := 0 to middleSlice.Width - 1 do\n  begin\n    c0 := middleSlice.GetPixel(x, 0);\n    for y := middleSlice.Height - 1 downto 1 do\n    begin\n      if middleSlice.GetPixel(x, y) <> c0 then\n      begin\n        isRepeating := False;\n        break;\n      end;\n    end;\n    if not isRepeating then\n      break;\n  end;\n  if isRepeating then\n    SliceRepeat[srpMiddleVertical] := True;\nend;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgraspritegl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Sprites to be rendered with OpenGL }\nunit BGRASpriteGL;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAOpenGLType,\n  BGRABitmapTypes;\n\ntype\n  { Abstract class for a sprite with OpenGL }\n  TBGLCustomSprite = class\n  protected\n    FHandle: Pointer;\n    FTexture: IBGLTexture;\n    FFrameLoopStart: integer;\n    FFrameLoopEnd : integer;\n    procedure SetFrameLoopEnd(AValue: integer);\n    procedure SetFrameLoopStart(AValue: integer);\n    function GetHorizontalAlign: TAlignment; virtual; abstract;\n    function GetVerticalAlign: TTextLayout; virtual; abstract;\n    procedure SetHorizontalAlign(AValue: TAlignment); virtual; abstract;\n    procedure SetVerticalAlign(AValue: TTextLayout); virtual; abstract;\n    function GetAlpha: Integer; virtual; abstract;\n    function GetAngle: Single; virtual; abstract;\n    function GetColor: TBGRAPixel; virtual; abstract;\n    function GetActualFrame: Single; virtual; abstract;\n    function GetFrame: Single;\n    function GetH: Single; virtual; abstract;\n    function GetLayer: Integer; virtual; abstract;\n    function GetLocation: TPointF; virtual;\n    function GetVisible: Boolean; virtual;\n    function GetW: Single; virtual; abstract;\n    function GetX: Single; virtual; abstract;\n    function GetY: Single; virtual; abstract;\n    function GetTexture: IBGLTexture; virtual;\n    function GetHandle: Pointer; virtual;\n    procedure SetAlpha(AValue: Integer); virtual; abstract;\n    procedure SetAngle(AValue: Single); virtual; abstract;\n    procedure SetColor(AValue: TBGRAPixel); virtual; abstract;\n    procedure SetFrame(AValue: Single);\n    procedure SetActualFrame(AValue: Single); virtual; abstract;\n    procedure SetH(AValue: Single); virtual; abstract;\n    procedure SetLayer(AValue: Integer); virtual; abstract;\n    procedure SetLocation(AValue: TPointF); virtual;\n    procedure SetW(AValue: Single); virtual; abstract;\n    procedure SetVisible({%H-}AValue: boolean); virtual;\n    procedure SetX(AValue: Single); virtual; abstract;\n    procedure SetY(AValue: Single); virtual; abstract;\n    procedure CreateHandle({%H-}ATexture: IBGLTexture; {%H-}ALayer: Integer); virtual;\n    procedure OnInit; virtual;\n  public\n    constructor Create(ATexture: IBGLTexture; ALayer: integer);\n    destructor Destroy; override;\n    procedure OnDraw; virtual;\n    procedure OnElapse({%H-}AElapsedMs: integer); virtual;\n    procedure OnTimer; virtual;\n    procedure QueryDestroy; virtual; abstract;\n    property Layer   : Integer read GetLayer write SetLayer;\n    property Location: TPointF read GetLocation write SetLocation;\n    property X       : Single read GetX write SetX;\n    property Y       : Single read GetY write SetY;\n    property W       : Single read GetW write SetW;\n    property H       : Single read GetH write SetH;\n    property Angle   : Single read GetAngle write SetAngle;\n    property Frame   : Single read GetFrame write SetFrame;\n    property FrameLoopStart : integer read FFrameLoopStart write SetFrameLoopStart;\n    property FrameLoopEnd : integer read FFrameLoopEnd write SetFrameLoopEnd;\n    property Alpha   : Integer read GetAlpha write SetAlpha;\n    property Color   : TBGRAPixel read GetColor write SetColor;\n    property HorizontalAlign: TAlignment read GetHorizontalAlign write SetHorizontalAlign;\n    property VerticalAlign: TTextLayout read GetVerticalAlign write SetVerticalAlign;\n    property Visible : Boolean read GetVisible write SetVisible;\n    property Texture : IBGLTexture read GetTexture;\n    property Handle  : Pointer read GetHandle;\n  end;\n\n  { Default implementation for sprites with OpenGL }\n  TBGLDefaultSprite = class(TBGLCustomSprite)\n  protected\n    FColor  : TBGRAPixel;\n    FLocation,FSize: TPointF;\n    FAngle,FFrame  : single;\n    FHorizontalAlign: TAlignment;\n    FVerticalAlign: TTextLayout;\n    FQueryDestroy: boolean;\n    FLayer: integer;\n    FHidden: boolean;\n    function GetHorizontalAlign: TAlignment; override;\n    function GetVerticalAlign: TTextLayout; override;\n    procedure SetHorizontalAlign(AValue: TAlignment); override;\n    procedure SetVerticalAlign(AValue: TTextLayout); override;\n    function GetAlpha: Integer; override;\n    function GetAngle: Single; override;\n    function GetColor: TBGRAPixel; override;\n    function GetDestroy: Boolean;\n    function GetActualFrame: Single; override;\n    function GetH: Single; override;\n    function GetLayer: Integer; override;\n    function GetVisible: Boolean; override;\n    function GetW: Single; override;\n    function GetX: Single; override;\n    function GetY: Single; override;\n    procedure SetAlpha(AValue: Integer); override;\n    procedure SetAngle(AValue: Single); override;\n    procedure SetColor(AValue: TBGRAPixel); override;\n    procedure SetDestroy(AValue: Boolean);\n    procedure SetActualFrame(AValue: Single); override;\n    procedure SetH(AValue: Single); override;\n    procedure SetLayer(AValue: Integer); override;\n    procedure SetVisible(AValue: boolean); override;\n    procedure SetW(AValue: Single); override;\n    procedure SetX(AValue: Single); override;\n    procedure SetY(AValue: Single); override;\n    procedure CreateHandle({%H-}ATexture: IBGLTexture; {%H-}ALayer: Integer); override;\n  public\n    procedure QueryDestroy; override;\n  end;\n\n  { Abstract class for a sprite engine }\n  TBGLCustomSpriteEngine = class\n  protected\n    function GetSprite(AIndex: integer): TBGLCustomSprite; virtual; abstract;\n    function GetCount: integer; virtual; abstract;\n  public\n    procedure Add(ASprite: TBGLCustomSprite); virtual; abstract;\n    procedure Remove(ASprite: TBGLCustomSprite); virtual; abstract;\n    procedure OnDraw; virtual; abstract;\n    procedure OnTimer; virtual; abstract;\n    procedure OnElapse(AElapsedMs: integer); virtual; abstract;\n    procedure Clear; virtual; abstract;\n    procedure Delete(AIndex: integer); virtual; abstract;\n    property Count: Integer read GetCount;\n    property Sprite[AIndex: integer]: TBGLCustomSprite read GetSprite;\n  end;\n\n  { Default implementation for a sprite rendering engine with OpenGL }\n  TBGLDefaultSpriteEngine = class(TBGLCustomSpriteEngine)\n  protected\n    FSpriteRemoved: TBGLCustomSprite;\n    FSprites: array of TBGLDefaultSprite;\n    FSpritesCount: integer;\n    function GetSprite(AIndex: integer): TBGLCustomSprite; override;\n    function GetCount: integer; override;\n  public\n    constructor Create;\n    procedure Add(ASprite: TBGLCustomSprite); override;\n    procedure Remove(ASprite: TBGLCustomSprite); override;\n    procedure OnDraw; override;\n    procedure OnTimer; override;\n    procedure OnElapse(AElapsedMs: integer); override;\n    procedure Clear; override;\n    procedure Delete(AIndex: integer); override;\n  end;\n\nvar\n  BGLSpriteEngine  : TBGLCustomSpriteEngine;\n\nimplementation\n\n{ TBGLDefaultSpriteEngine }\n\nfunction TBGLDefaultSpriteEngine.GetSprite(AIndex: integer): TBGLCustomSprite;\nbegin\n  if (AIndex < 0) or (Aindex >= Count) then\n    raise ERangeError.Create('Index out of bounds');\n  result := FSprites[AIndex];\nend;\n\nfunction TBGLDefaultSpriteEngine.GetCount: integer;\nbegin\n  result := FSpritesCount;\nend;\n\nconstructor TBGLDefaultSpriteEngine.Create;\nbegin\n  FSpritesCount := 0;\nend;\n\nprocedure TBGLDefaultSpriteEngine.Add(ASprite: TBGLCustomSprite);\nvar\n  i: Integer;\nbegin\n  if ASprite = nil then exit;\n  if not (ASprite is TBGLDefaultSprite) then\n    raise exception.Create('Invalid class');\n  for i := 0 to Count-1 do\n    if FSprites[i] = ASprite then exit;\n  if Count = length(FSprites) then\n    setlength(FSprites, length(FSprites)*2 + 1);\n  FSprites[Count] := TBGLDefaultSprite(ASprite);\n  Inc(FSpritesCount);\nend;\n\nprocedure TBGLDefaultSpriteEngine.Remove(ASprite: TBGLCustomSprite);\nvar\n  i: Integer;\nbegin\n  if ASprite = FSpriteRemoved then exit;\n  for i := 0 to Count-1 do\n    if FSprites[i] = ASprite then\n    begin\n      Delete(i);\n      exit;\n    end;\nend;\n\nprocedure TBGLDefaultSpriteEngine.OnDraw;\nvar i: integer;\nbegin\n  for i := 0 to Count-1 do\n    FSprites[i].OnDraw;\nend;\n\nprocedure TBGLDefaultSpriteEngine.OnTimer;\nvar i,j,k: integer;\n    temp: TBGLDefaultSprite;\nbegin\n  for i := 0 to Count-1 do\n    FSprites[i].OnTimer;\n  for i := Count-1 downto 0 do\n    if FSprites[i].FQueryDestroy then\n      Delete(i);\n  for i := 1 to Count-1 do\n  begin\n    j := i;\n    while (j > 0) and (FSprites[j-1].Layer > FSprites[i].Layer) do dec(j);\n    if j <> i then\n      begin\n        temp := FSprites[i];\n        for k := i downto j+1 do\n          FSprites[k] := FSprites[k-1];\n        FSprites[j] := temp;\n      end;\n  end;\nend;\n\nprocedure TBGLDefaultSpriteEngine.OnElapse(AElapsedMs: integer);\nvar i,j,k: integer;\n    temp: TBGLDefaultSprite;\nbegin\n  for i := 0 to Count-1 do\n    FSprites[i].OnElapse(AElapsedMs);\n  for i := Count-1 downto 0 do\n    if FSprites[i].FQueryDestroy then\n      Delete(i);\n  for i := 1 to Count-1 do\n  begin\n    j := i;\n    while (j > 0) and (FSprites[j-1].Layer > FSprites[i].Layer) do dec(j);\n    if j <> i then\n      begin\n        temp := FSprites[i];\n        for k := i downto j+1 do\n          FSprites[k] := FSprites[k-1];\n        FSprites[j] := temp;\n      end;\n  end;\nend;\n\nprocedure TBGLDefaultSpriteEngine.Clear;\nvar i: integer;\nbegin\n  for i := 0 to Count-1 do\n  begin\n    FSpriteRemoved := FSprites[i];\n    FSpriteRemoved.Free;\n    FSpriteRemoved := nil;\n  end;\n  FSprites := nil;\n  FSpritesCount := 0;\nend;\n\nprocedure TBGLDefaultSpriteEngine.Delete(AIndex: integer);\nvar i: integer;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then exit;\n  FSpriteRemoved := FSprites[AIndex];\n  for i := AIndex to Count-1 do\n    FSprites[i] := FSprites[i+1];\n  dec(FSpritesCount);\n  if FSpritesCount <= length(FSprites) div 2 then\n    setlength(FSprites,FSpritesCount);\n  FSpriteRemoved.Free;\n  FSpriteRemoved := nil;\nend;\n\n{ TBGLDefaultSprite }\n\nfunction TBGLDefaultSprite.GetHorizontalAlign: TAlignment;\nbegin\n  result := FHorizontalAlign;\nend;\n\nfunction TBGLDefaultSprite.GetVerticalAlign: TTextLayout;\nbegin\n  result := FVerticalAlign;\nend;\n\nprocedure TBGLDefaultSprite.SetHorizontalAlign(AValue: TAlignment);\nbegin\n  FHorizontalAlign:= AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetVerticalAlign(AValue: TTextLayout);\nbegin\n  FVerticalAlign := AValue;\nend;\n\nfunction TBGLDefaultSprite.GetAlpha: Integer;\nbegin\n  result := FColor.alpha;\nend;\n\nfunction TBGLDefaultSprite.GetAngle: Single;\nbegin\n  result := FAngle;\nend;\n\nfunction TBGLDefaultSprite.GetColor: TBGRAPixel;\nbegin\n  result := FColor;\nend;\n\nfunction TBGLDefaultSprite.GetDestroy: Boolean;\nbegin\n  result := FQueryDestroy;\nend;\n\nfunction TBGLDefaultSprite.GetActualFrame: Single;\nbegin\n  result := FFrame;\nend;\n\nfunction TBGLDefaultSprite.GetH: Single;\nbegin\n  result := FSize.Y;\nend;\n\nfunction TBGLDefaultSprite.GetLayer: Integer;\nbegin\n  result := FLayer;\nend;\n\nfunction TBGLDefaultSprite.GetVisible: Boolean;\nbegin\n  Result:= not FHidden;\nend;\n\nfunction TBGLDefaultSprite.GetW: Single;\nbegin\n  result := FSize.X;\nend;\n\nfunction TBGLDefaultSprite.GetX: Single;\nbegin\n  result := FLocation.X;\nend;\n\nfunction TBGLDefaultSprite.GetY: Single;\nbegin\n  result := FLocation.Y;\nend;\n\nprocedure TBGLDefaultSprite.SetAlpha(AValue: Integer);\nbegin\n  FColor.Alpha := AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetAngle(AValue: Single);\nbegin\n  FAngle:= AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetColor(AValue: TBGRAPixel);\nbegin\n  FColor := AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetDestroy(AValue: Boolean);\nbegin\n  FQueryDestroy:= AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetActualFrame(AValue: Single);\nbegin\n  FFrame:= AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetH(AValue: Single);\nbegin\n  FSize.Y := AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetLayer(AValue: Integer);\nbegin\n  FLayer:= AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetVisible(AValue: boolean);\nbegin\n  FHidden := not AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetW(AValue: Single);\nbegin\n  FSize.X := AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetX(AValue: Single);\nbegin\n  FLocation.X := AValue;\nend;\n\nprocedure TBGLDefaultSprite.SetY(AValue: Single);\nbegin\n  FLocation.Y := AValue;\nend;\n\nprocedure TBGLDefaultSprite.CreateHandle(ATexture: IBGLTexture; ALayer: Integer);\nbegin\n  inherited CreateHandle(ATexture, ALayer);\n  FQueryDestroy := false;\n  FLayer:= ALayer;\nend;\n\nprocedure TBGLDefaultSprite.QueryDestroy;\nbegin\n  SetDestroy(True);\nend;\n\n{ TBGLCustomSprite }\n\nfunction TBGLCustomSprite.GetTexture: IBGLTexture;\nbegin\n  result := FTexture;\nend;\n\nfunction TBGLCustomSprite.GetHandle: Pointer;\nbegin\n  result := FHandle;\nend;\n\nprocedure TBGLCustomSprite.SetFrame(AValue: Single);\nvar loopLength: integer;\nbegin\n  if (FrameLoopEnd <> 0) and (FrameLoopStart <> 0) then\n    begin\n      loopLength := FrameLoopEnd-FrameLoopStart+1;\n      if AValue >= FrameLoopEnd+0.49 then\n        begin\n          if loopLength <= 1 then\n            AValue := FrameLoopEnd+0.49\n          else\n          begin\n            DecF(AValue, Trunc((AValue-(FrameLoopStart-0.5))/loopLength)*loopLength);\n            if AValue > FrameLoopEnd+0.49 then AValue := FrameLoopStart-0.49;\n            if AValue < FrameLoopStart-0.49 then AValue := FrameLoopStart-0.49;\n          end;\n        end else\n      if AValue < FrameLoopStart-0.49 then\n        begin\n          if loopLength <= 1 then\n            AValue := FrameLoopStart-0.49\n          else\n          begin\n            IncF(AValue, Trunc((FrameLoopEnd+0.5-AValue)/loopLength)*loopLength);\n            if AValue > FrameLoopEnd+0.49 then AValue := FrameLoopEnd+0.49;\n            if AValue < FrameLoopStart-0.49 then AValue := FrameLoopEnd+0.49;\n          end;\n        end;\n    end;\n  SetActualFrame(AValue);\nend;\n\nprocedure TBGLCustomSprite.SetFrameLoopEnd(AValue: integer);\nbegin\n  FFrameLoopEnd := AValue;\n  if FFrameLoopEnd < FFrameLoopStart then\n    FFrameLoopStart := FFrameLoopEnd;\nend;\n\nprocedure TBGLCustomSprite.SetFrameLoopStart(AValue: integer);\nbegin\n  FFrameLoopStart := AValue;\n  if FFrameLoopStart > FFrameLoopEnd then\n    FFrameLoopEnd := FFrameLoopStart;\nend;\n\nfunction TBGLCustomSprite.GetFrame: Single;\nbegin\n  result := GetActualFrame;\nend;\n\nfunction TBGLCustomSprite.GetLocation: TPointF;\nbegin\n  result := PointF(X,Y);\nend;\n\nfunction TBGLCustomSprite.GetVisible: Boolean;\nbegin\n  result := true;\nend;\n\nprocedure TBGLCustomSprite.SetLocation(AValue: TPointF);\nbegin\n  X := AValue.X;\n  Y := AValue.Y;\nend;\n\nprocedure TBGLCustomSprite.SetVisible(AValue: boolean);\nbegin\n  raise ENotImplemented.Create('Not implemented in base class');\nend;\n\nprocedure TBGLCustomSprite.CreateHandle(ATexture: IBGLTexture; ALayer: Integer);\nbegin\n  FHandle := nil;\nend;\n\nprocedure TBGLCustomSprite.OnInit;\nbegin\n  //nothing\nend;\n\nconstructor TBGLCustomSprite.Create(ATexture: IBGLTexture; ALayer: integer);\nbegin\n  CreateHandle(ATexture,ALayer);\n  FTexture := ATexture;\n  Layer := ALayer;\n  if ATexture = nil then\n    begin\n      W := 0;\n      H := 0;\n    end else\n    begin\n      W := ATexture.FrameWidth;\n      H := ATexture.FrameHeight;\n    end;\n  HorizontalAlign := taLeftJustify;\n  VerticalAlign:= tlTop;\n  Color := BGRAWhite;\n  FrameLoopStart := 1;\n  FrameLoopEnd := 0;\n  OnInit;\n  BGLSpriteEngine.Add(self);\nend;\n\ndestructor TBGLCustomSprite.Destroy;\nbegin\n  if Assigned(BGLSpriteEngine) then\n    BGLSpriteEngine.Remove(self);\n  inherited Destroy;\nend;\n\nprocedure TBGLCustomSprite.OnDraw;\nvar NumFrame: integer;\nbegin\n  if Visible and (Texture <> nil) then\n    begin\n      NumFrame := Trunc(Frame+0.5);\n      if Angle <> 0 then\n        Texture.Frame[NumFrame].StretchDrawAngle(X,Y,W,H,Angle,HorizontalAlign,VerticalAlign, Color)\n      else\n        Texture.Frame[NumFrame].StretchDraw(X,Y,W,H,HorizontalAlign,VerticalAlign, Color)\n    end;\nend;\n\nprocedure TBGLCustomSprite.OnElapse(AElapsedMs: integer);\nbegin\n  //override if you want to handle time as continuous flow. It is recommended to use floating point positions in this case.\nend;\n\nprocedure TBGLCustomSprite.OnTimer;\nbegin\n  //override if you want to handle time as discrete frames with fixed time interval\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrasse.inc",
    "content": "{$IFDEF SSE_LOADV}\n  {$UNDEF SSE_LOADV}\n  {$ifdef cpux86_64}\n  mov rax,v\n  movups xmm1,[rax]\n  {$else}\n  mov eax,v\n  movups xmm1,[eax]\n  {$endif}\n{$ELSE}\n  {$IFDEF SSE_SAVEV}\n    {$UNDEF SSE_SAVEV}\n    {$ifdef cpux86_64}\n    mov rax,v\n    movups [rax],xmm1\n    {$else}\n    mov eax,v\n    movups [eax],xmm1\n    {$endif}  \n  {$ELSE}\n    {$IFDEF CPUI386}\n      {$DEFINE BGRASSE_AVAILABLE}\n    {$ENDIF}\n    {$IFDEF cpux86_64}\n      {$DEFINE BGRASSE_AVAILABLE}\n    {$ENDIF}\n  {$ENDIF}\n{$ENDIF}"
  },
  {
    "path": "bgrabitmap/bgrasse.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of SSE acceleration }\nunit BGRASSE;\n\n{$mode objfpc}{$H+}\n\n{$i bgrasse.inc}\n{$modeswitch advancedrecords}\n\ninterface\n\n{begin  //param: eax, edx, ecx  //float: eax ecx edx\n  //flds $d9\n  //fadds $d8\n  //fstps $d9 +$18\n  //fmuls $d8 +$08\n  //fsubrs $d8 +$28\n  //offset +$40 $..}\nuses\n  BGRABitmapTypes {$ifdef CPUI386}, cpu, mmx{$endif};\n\nconst FLAG_ENABLED_SSE = true;\n\nvar UseSSE, UseSSE2, UseSSE3 : boolean;\n\n{$ifdef CPUI386}\n  {$asmmode intel}\n{$ENDIF}\n{$ifdef cpux86_64}\n  {$asmmode intel}\n{$ENDIF}\n\n{$ifdef BGRASSE_AVAILABLE}\n  //SSE rotate singles\n  const Shift231 = 1 + 8;\n        Shift312 = 2 + 16;\n{$endif}\n\ntype\n  { Point in 3D / 4D }\n  TPoint3D_128 = packed record\n                   x,y,z,t: single;\n                   procedure Offset(const point3D_128: TPoint3D_128);\n                   procedure Scale(AScale: single);\n                 end;\n  PPoint3D_128 = ^TPoint3D_128;\n\n  function Point3D(const point3D_128: TPoint3D_128): TPoint3D; inline; overload;\n  function Point3D_128(const point3D: TPoint3D): TPoint3D_128; inline; overload;\n  function Point3D_128(const pointF: TPointF): TPoint3D_128; inline; overload;\n  function Point3D_128(x,y,z: single): TPoint3D_128; inline; overload;\n  function Point3D_128(x,y,z,t: single): TPoint3D_128; inline; overload;\n  procedure Normalize3D_128_SqLen(var v: TPoint3D_128; out SqLen: single);\n  operator * (const v1: TPoint3D_128; const factor: single): TPoint3D_128;\n  operator + (constref v1,v2: TPoint3D_128): TPoint3D_128;\n  operator - (const v1,v2: TPoint3D_128): TPoint3D_128;\n  operator - (const v: TPoint3D_128): TPoint3D_128; inline;\n  operator = (const v1,v2: TPoint3D_128): boolean; inline;\n  procedure ClearPoint3D_128(out v: TPoint3D_128);\n  {$IFDEF BGRASSE_AVAILABLE}\n  procedure ClearPoint3D_128_AlignedSSE(out v: TPoint3D_128);\n  {$ENDIF}\n  function IsPoint3D_128_Zero(const v: TPoint3D_128): boolean; inline;\n\nvar\n  Add3D_Aligned : procedure (var dest: TPoint3D_128; constref src: TPoint3D_128);\n  Normalize3D_128 : procedure (var v: TPoint3D_128);\n  VectProduct3D_128 : procedure (const u,v: TPoint3D_128; out w: TPoint3D_128);\n  DotProduct3D_128 : function (constref v1,v2: TPoint3D_128): single;\n\nconst\n  Point3D_128_Zero : TPoint3D_128 = (x:0; y:0; z:0; t:0);\n\ntype\n  { Class to allocate memory that is aligned to 128 bits boundaries }\n  TMemoryBlockAlign128 = class\n  private\n    FContainer: Pointer;\n    FData: Pointer;\n  public\n    constructor Create(size: integer);\n    destructor Destroy; override;\n    property Data: pointer read FData;\n  end;\n\n  PBasicLightingContext = ^TBasicLightingContext;\n  { Base context necessary to compute lighting (can be aligned for SSE) }\n  TBasicLightingContext = packed record\n    {0} Position, {16} Normal: TPoint3D_128;\n    {32} PositionInvZ, {48} NormalInvZ: TPoint3D_128;\n    {64} PositionStepInvZ, {80} NormalStepInvZ: TPoint3D_128;\n    {96} dummy4: single;\n    {100} dummy3: LongBool;\n    {104} dummy1: LongWord;\n    {108} dummy2: LongWord;\n    {112} dummy: packed array[0..15]of byte;\n  end; {128}\n\nconst ExtendedLightingContextSize = 128;\n\nimplementation\n\n{ TPoint3D_128 }\n\nprocedure TPoint3D_128.Offset(const point3D_128: TPoint3D_128);\nbegin\n  self.x := self.x + point3D_128.x;\n  self.y := self.y + point3D_128.y;\n  self.z := self.z + point3D_128.z;\nend;\n\nprocedure TPoint3D_128.Scale(AScale: single);\nbegin\n  self.x := self.x * AScale;\n  self.y := self.y * AScale;\n  self.z := self.z * AScale;\nend;\n\nfunction Point3D(const point3D_128: TPoint3D_128): TPoint3D; inline; overload;\nbegin\n  result.x := point3D_128.x;\n  result.y := point3D_128.y;\n  result.z := point3D_128.z;\nend;\n\nfunction Point3D_128(const point3D: TPoint3D): TPoint3D_128; inline; overload;\nbegin\n  result.x := point3D.x;\n  result.y := point3D.y;\n  result.z := point3D.z;\n  result.t := 0;\nend;\n\nfunction Point3D_128(const pointF: TPointF): TPoint3D_128;\nbegin\n   result.x := pointF.x;\n   result.y := pointF.y;\n   result.z := 0;\n   result.t := 0;\nend;\n\nfunction Point3D_128(x,y,z: single): TPoint3D_128; inline; overload;\nbegin\n  result.x := x;\n  result.y := y;\n  result.z := z;\n  result.t := 0;\nend;\n\nfunction Point3D_128(x,y,z,t: single): TPoint3D_128; inline; overload;\nbegin\n  result.x := x;\n  result.y := y;\n  result.z := z;\n  result.t := t;\nend;\n\noperator + (constref v1,v2: TPoint3D_128): TPoint3D_128;\n{$ifdef CPUI386} assembler;\nasm\n  db $d9, $00 //flds [eax]\n  db $d8, $02 //fadds [edx]\n  db $d9, $19 //fstps [ecx]\n\n  db $d9, $40, $04 //flds [eax+4]\n  db $d8, $42, $04 //fadds [edx+4]\n  db $d9, $59, $04 //fstps [ecx+4]\n\n  db $d9, $40, $08 //flds [eax+8]\n  db $d8, $42, $08 //fadds [edx+8]\n  db $d9, $59, $08 //fstps [ecx+8]\n\n  xor eax,eax\n  mov [ecx+12],eax\nend;\n{$else}\nbegin\n  result.x := v1.x+v2.x;\n  result.y := v1.y+v2.y;\n  result.z := v1.z+v2.z;\n  result.t := 0;\nend;\n{$endif}\n\n{$ifdef BGRASSE_AVAILABLE}\nprocedure Add3D_AlignedSSE(var dest: TPoint3D_128; constref src: TPoint3D_128); assembler;\nasm\n  movaps xmm0, [dest]\n  movups xmm1, [src]\n  addps xmm0, xmm1\n  movaps [dest], xmm0\nend;\n{$endif}\n\nprocedure Add3D_NoSSE(var dest: TPoint3D_128; constref src: TPoint3D_128);\n{$ifdef CPUI386} assembler;\nasm\n  db $d9, $00 //flds [eax]\n  db $d8, $02 //fadds [edx]\n  db $d9, $18 //fstps [eax]\n\n  db $d9, $40, $04 //flds [eax+4]\n  db $d8, $42, $04 //fadds [edx+4]\n  db $d9, $58, $04 //fstps [eax+4]\n\n  db $d9, $40, $08 //flds [eax+8]\n  db $d8, $42, $08 //fadds [edx+8]\n  db $d9, $58, $08 //fstps [eax+8]\nend;\n{$else}\nbegin\n  dest.x := dest.x + src.x;\n  dest.y := dest.y + src.y;\n  dest.z := dest.z + src.z;\nend;\n{$endif}\n\noperator - (const v1,v2: TPoint3D_128): TPoint3D_128;\n{$ifdef CPUI386} assembler;\nasm\n  db $d9, $02 //flds [edx]\n  db $d8, $28 //fsubrs [eax]\n  db $d9, $19 //fstps [ecx]\n\n  db $d9, $42, $04 //flds [edx+4]\n  db $d8, $68, $04 //fsubrs [eax+4]\n  db $d9, $59, $04 //fstps [ecx+4]\n\n  db $d9, $42, $08 //flds [edx+8]\n  db $d8, $68, $08 //fsubrs [eax+8]\n  db $d9, $59, $08 //fstps [ecx+8]\n\n  xor eax,eax\n  mov [ecx+12],eax\nend;\n{$else}\nbegin\n  result.x := v1.x-v2.x;\n  result.y := v1.y-v2.y;\n  result.z := v1.z-v2.z;\n  result.t := 0;\nend;\n{$endif}\n\noperator-(const v: TPoint3D_128): TPoint3D_128; inline;\nbegin\n  result.x := -v.x;\n  result.y := -v.y;\n  result.z := -v.z;\n  result.t := 0;\nend;\n\noperator=(const v1, v2: TPoint3D_128): boolean; inline;\nbegin\n result := (v1.x=v2.x) and (v1.y=v2.y) and (v1.z=v2.z);\nend;\n\nprocedure ClearPoint3D_128(out v: TPoint3D_128);\n{$ifdef cpux86_64} assembler;\nasm\n  push rbx\n  mov rax,v\n  xor rbx,rbx\n  mov [rax],rbx\n  mov [rax+8],rbx\n  pop rbx\nend;\n{$else}\n  {$ifdef CPUI386} assembler;\n  asm\n    push ebx\n    mov eax,v\n    xor ebx,ebx\n    mov [eax],ebx\n    mov [eax+4],ebx\n    mov [eax+8],ebx\n    pop ebx\n  end;\n  {$else}\n  var p: PLongWord;\n  begin\n    p := @v;\n    p^ := 0;\n    inc(p);\n    p^ := 0;\n    inc(p);\n    p^ := 0;\n  end;\n  {$endif}\n{$endif}\n\nprocedure ClearPoint3D_128_AlignedSSE(out v: TPoint3D_128);\n{$ifdef BGRASSE_AVAILABLE} assembler;\n asm\n  xorps xmm0,xmm0\n  {$ifdef cpux86_64}\n  mov rax,v\n  movaps [rax],xmm0\n  {$else}\n  mov eax,v\n  movaps [eax],xmm0\n  {$endif}\n end;\n{$else}\nvar p: PLongWord;\nbegin\n  p := @v;\n  p^ := 0;\n  inc(p);\n  p^ := 0;\n  inc(p);\n  p^ := 0;\nend;\n{$endif}\n\nfunction IsPoint3D_128_Zero(const v: TPoint3D_128): boolean;\nbegin\n  result := (v.x=0) and (v.y=0) and (v.z=0);\nend;\n\noperator * (const v1: TPoint3D_128; const factor: single): TPoint3D_128;\n{$ifdef CPUI386} assembler;\nasm\n  db $d9, $00 //flds [eax]\n  db $d8, $4d, $08 //fmuls [ebp+8]\n  db $d9, $1a //fstps [edx]\n\n  db $d9, $40, $04 //flds [eax+4]\n  db $d8, $4d, $08 //fmuls [ebp+8]\n  db $d9, $5a, $04 //fstps [edx+4]\n\n  db $d9, $40, $08 //flds [eax+8]\n  db $d8, $4d, $08 //fmuls [ebp+8]\n  db $d9, $5a, $08 //fstps [edx+8]\n\n  xor eax,eax\n  mov [edx+12],eax\nend;\n{$else}\nbegin\n  result.x := v1.x*factor;\n  result.y := v1.y*factor;\n  result.z := v1.z*factor;\n  result.t := 0;\nend;\n{$endif}\n\n{$ifdef BGRASSE_AVAILABLE}\nfunction DotProduct3D_128_SSE3(constref v1,v2: TPoint3D_128): single; assembler;\nasm\n  movups xmm0, [v1]\n  movups xmm1, [v2]\n  mulps xmm0, xmm1\n\n  haddps xmm0,xmm0\n  haddps xmm0,xmm0\n  movss [result], xmm0\nend;\n{$endif}\n\nfunction DotProduct3D_128_NoSSE(constref v1,v2: TPoint3D_128): single;\nbegin\n  result := v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;\nend;\n\nprocedure Normalize3D_128_NoSSE(var v: TPoint3D_128);\nvar len2: single;\nbegin\n  len2 := DotProduct3D_128_NoSSE(v,v);\n  if len2 = 0 then exit;\n  v.Scale( 1/sqrt(len2) );\nend;\n\n{$ifdef BGRASSE_AVAILABLE}\nprocedure Normalize3D_128_SSE1(var v: TPoint3D_128);\nvar len2: single;\nbegin\n  asm\n    {$DEFINE SSE_LOADV}{$i bgrasse.inc}\n    movaps xmm2, xmm1\n    mulps xmm2, xmm2\n\n    //mix1\n    movaps xmm7, xmm2\n    shufps xmm7, xmm7, $4e\n    addps xmm2, xmm7\n    //mix2\n    movaps xmm7, xmm2\n    shufps xmm7, xmm7, $11\n    addps xmm2, xmm7\n\n    movss len2, xmm2\n  end;\n  if (len2 = 0) then exit;\n  if len2 < 1e-6 then //out of bounds for SSE instruction\n  begin\n     v.Scale( 1/sqrt(len2) );\n  end else\n  asm\n    rsqrtps xmm2, xmm2\n    mulps xmm1, xmm2  //apply\n    {$DEFINE SSE_SAVEV}{$i bgrasse.inc}\n  end;\nend;\n{$endif}\n\n{$ifdef BGRASSE_AVAILABLE}\nprocedure Normalize3D_128_SSE3(var v: TPoint3D_128);\nvar len2: single;\nbegin\n  asm\n    {$DEFINE SSE_LOADV}{$i bgrasse.inc}\n    movaps xmm2, xmm1\n    mulps xmm2, xmm2\n\n    haddps xmm2,xmm2\n    haddps xmm2,xmm2\n\n    movss len2, xmm2\n  end;\n  if (len2 = 0) then exit;\n  if len2 < 1e-6 then //out of bounds for SSE instruction\n  begin\n     v.Scale( 1/sqrt(len2) );\n  end else\n  asm\n    rsqrtps xmm2, xmm2\n    mulps xmm1, xmm2  //apply\n    {$DEFINE SSE_SAVEV}{$i bgrasse.inc}\n  end;\nend;\n{$endif}\n\nprocedure Normalize3D_128_SqLen(var v: TPoint3D_128; out SqLen: single);\nbegin\n  {$ifdef BGRASSE_AVAILABLE}\n    if UseSSE then\n    begin\n      asm\n        {$DEFINE SSE_LOADV}{$i bgrasse.inc}\n        movaps xmm2, xmm1\n        mulps xmm2, xmm2\n      end;\n      if UseSSE3 then\n      asm\n        haddps xmm2,xmm2\n        haddps xmm2,xmm2\n        {$ifdef cpux86_64}\n        mov rax, SqLen\n        movss [rax], xmm2\n        {$else}\n        mov eax, SqLen\n        movss [eax], xmm2\n        {$endif}\n      end else\n      asm\n        //mix1\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $4e\n        addps xmm2, xmm7\n        //mix2\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $11\n        addps xmm2, xmm7\n        {$ifdef cpux86_64}\n        mov rax, SqLen\n        movss [rax], xmm2\n        {$else}\n        mov eax, SqLen\n        movss [eax], xmm2\n        {$endif}\n      end;\n      if SqLen = 0 then exit;\n      if SqLen < 1e-6 then //out of bounds for SSE instruction\n      begin\n         v.Scale( 1/sqrt(SqLen) );\n      end else\n      asm\n        rsqrtps xmm2, xmm2\n        mulps xmm1, xmm2  //apply\n        {$DEFINE SSE_SAVEV}{$i bgrasse.inc}\n      end;\n    end\n    else\n{$endif}\n    begin\n      SqLen := DotProduct3D_128_NoSSE(v,v);\n      if SqLen = 0 then exit;\n      v.Scale( 1/sqrt(SqLen) );\n    end;\nend;\n\nprocedure VectProduct3D_128_NoSSE(const u,v: TPoint3D_128; out w: TPoint3D_128);\nbegin\n  w.x := u.y*v.z-u.z*v.y;\n  w.y := u.z*v.x-u.x*v.z;\n  w.z := u.x*v.Y-u.y*v.x;\n  w.t := 0;\nend;\n\n{$ifdef BGRASSE_AVAILABLE}\nprocedure VectProduct3D_128_SSE(constref u,v: TPoint3D_128; out w: TPoint3D_128); assembler;\nasm\n  {$ifdef cpux86_64}\n  mov rax,u\n  movups xmm6,[rax]\n  {$else}\n  mov eax,u\n  movups xmm6,[eax]\n  {$endif}\n  movaps xmm4, xmm6\n  shufps xmm6, xmm6, Shift231\n\n  {$ifdef cpux86_64}\n  mov rax,v\n  movups xmm7,[rax]\n  {$else}\n  mov eax,v\n  movups xmm7,[eax]\n  {$endif}\n  movaps xmm5,xmm7\n  shufps xmm7, xmm7, Shift312\n\n  movaps xmm3,xmm6\n  mulps xmm3,xmm7\n\n  shufps xmm4, xmm4, Shift312\n  shufps xmm5, xmm5, Shift231\n\n  mulps xmm4,xmm5\n  subps xmm3,xmm4\n\n  {$ifdef cpux86_64}\n  mov rax,w\n  movups [rax],xmm3\n  {$else}\n  mov eax,w\n  movups [eax],xmm3\n  {$endif}\nend;\n\n{$endif}\n\n{ TMemoryBlockAlign128 }\n\n{$hints off}\nconstructor TMemoryBlockAlign128.Create(size: integer);\n{$IFDEF BGRASSE_AVAILABLE}\nvar\n  delta: PtrUInt;\nbegin\n  getmem(FContainer, size+15);\n  delta := PtrUInt(FContainer) and 15;\n  if delta <> 0 then delta := 16-delta;\n  FData := pbyte(FContainer)+delta;\nend;\n{$ELSE}\nbegin\n  getmem(FContainer, size);\n  FData := FContainer;\nend;\n{$ENDIF}\n{$hints on}\n\ndestructor TMemoryBlockAlign128.Destroy;\nbegin\n  freemem(FContainer);\n  inherited Destroy;\nend;\n\n{$ifdef BGRASSE_AVAILABLE}\nfunction sse3_support : boolean;\n\n  var\n     _ecx : longint;\n\n  begin\n    {$IFDEF CPUI386}\n     if cpuid_support then\n       begin\n          asm\n             push ebx\n             mov eax,1\n             cpuid\n             mov _ecx,ecx\n             pop ebx\n          end;\n          sse3_support:=(_ecx and 1)<>0;\n       end\n     else\n       sse3_support:=false;\n    {$ELSE}\n    asm\n       push rbx\n       mov eax,1\n       cpuid\n       mov _ecx,ecx\n       pop rbx\n    end;\n    sse3_support:=(_ecx and 1)<>0;\n    {$ENDIF}\n  end;\n{$endif}\n\ninitialization\n\n  {$ifdef CPUI386}\n  UseSSE := is_sse_cpu and FLAG_ENABLED_SSE;\n  {$else}\n    {$ifdef cpux86_64}\n    UseSSE := FLAG_ENABLED_SSE;\n    {$else}\n    UseSSE := false;\n    {$endif}\n  {$endif}\n\n  {$IFDEF BGRASSE_AVAILABLE}\n  if UseSSE then\n  begin\n    {$ifdef cpux86_64}\n    UseSSE2 := true;\n    {$else}\n    UseSSE2 := is_sse2_cpu;\n    {$endif}\n    UseSSE3 := sse3_support;\n\n    Add3D_Aligned := @Add3D_AlignedSSE;\n    VectProduct3D_128 := @VectProduct3D_128_NoSSE; //VectProduct3D_128_SSE is slower (due to access penalty?)\n    if UseSSE3 then\n    begin\n      Normalize3D_128 := @Normalize3D_128_SSE3;\n      DotProduct3D_128 := @DotProduct3D_128_NoSSE; //DotProduct3D_128_SSE3 is slower (due to access penalty?)\n    end\n    else\n    begin\n      Normalize3D_128 := @Normalize3D_128_SSE1;\n      DotProduct3D_128 := @DotProduct3D_128_NoSSE;\n    end;\n  end\n  else\n  {$ENDIF}\n  begin\n    UseSSE := false;\n    UseSSE2 := false;\n    UseSSE3 := false;\n\n    Add3D_Aligned := @Add3D_NoSSE;\n    Normalize3D_128 := @Normalize3D_128_NoSSE;\n    VectProduct3D_128 := @VectProduct3D_128_NoSSE;\n    DotProduct3D_128 := @DotProduct3D_128_NoSSE;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrastreamlayers.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Routines to stream layers }\nunit BGRAStreamLayers;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALayers, BGRABitmap, BGRALzpCommon, BGRAMemDirectory;\n\nfunction CheckStreamForLayers(AStream: TStream): boolean;\nfunction LoadLayersFromStream(AStream: TStream; out ASelectedLayerIndex: integer; ALoadLayerUniqueIds: boolean = false;\n         ADestination: TBGRALayeredBitmap = nil; AProgress: boolean = false): TBGRALayeredBitmap;\nprocedure SaveLayersToStream(AStream: TStream; ALayers: TBGRACustomLayeredBitmap; ASelectedLayerIndex: integer;\n         ACompression: TLzpCompression = lzpZStream; AProgress: boolean = false);\nprocedure SaveLayerBitmapToStream(AStream: TStream; ABitmap: TBGRABitmap; ACaption: string; ACompression: TLzpCompression = lzpZStream);\nfunction LoadLayerBitmapFromStream(AStream: TStream; ACompression: TLzpCompression = lzpZStream) : TBGRABitmap;\nprocedure RegisterStreamLayers;\n\nimplementation\n\nuses BGRABitmapTypes, BGRACompressableBitmap, zstream, BGRAReadLzp, BGRAWriteLzp,\n     BGRAUTF8, Math;\n\ntype\n  PLayerHeader = ^TLayerHeader;\n\n  { TLayerHeader }\n\n  TLayerHeader = packed record\n    LayerOption, BlendOp,\n    LayerOfsX, LayerOfsY,\n    LayerUniqueId, LayerOpacity: Longint;\n    LayerBitmapSize: int64;\n    OriginalGuid: TGuid;\n    OriginalMatrix: TAffineMatrix;\n    procedure FixEndian;\n  end;\n\n{ TLayerHeader }\n\nprocedure TLayerHeader.FixEndian;\nbegin\n  LayerOption := NtoLE(LayerOption);\n  BlendOp := NtoLE(BlendOp);\n  LayerOfsX := NtoLE(LayerOfsX);\n  LayerOfsY := NtoLE(LayerOfsY);\n  LayerUniqueId := NtoLE(LayerUniqueId);\n  LayerOpacity := NtoLE(LayerOpacity);\n  LayerBitmapSize := NtoLE(LayerBitmapSize);\n  OriginalGuid.D1 := NtoBE(OriginalGuid.D1);\n  OriginalGuid.D2 := NtoBE(OriginalGuid.D2);\n  OriginalGuid.D3 := NtoBE(OriginalGuid.D3);\n  LongWord(OriginalMatrix[1,1]) := NtoLE(LongWord(OriginalMatrix[1,1]));\n  LongWord(OriginalMatrix[2,1]) := NtoLE(LongWord(OriginalMatrix[2,1]));\n  LongWord(OriginalMatrix[1,2]) := NtoLE(LongWord(OriginalMatrix[1,2]));\n  LongWord(OriginalMatrix[2,2]) := NtoLE(LongWord(OriginalMatrix[2,2]));\n  LongWord(OriginalMatrix[1,3]) := NtoLE(LongWord(OriginalMatrix[1,3]));\n  LongWord(OriginalMatrix[2,3]) := NtoLE(LongWord(OriginalMatrix[2,3]));\nend;\n\nprocedure SaveLayeredBitmapToStream(AStream: TStream; ALayers: TBGRACustomLayeredBitmap);\nbegin\n  SaveLayersToStream(AStream,ALayers,-1);\nend;\n\nprocedure LoadLayeredBitmapFromStream(AStream: TStream; ALayers: TBGRACustomLayeredBitmap);\nvar selectedIndex: integer;\nbegin\n  if not CheckStreamForLayers(AStream) then\n  begin\n    if Assigned(ALayers) then ALayers.Clear;\n  end\n  else\n    LoadLayersFromStream(AStream,selectedIndex,false,ALayers as TBGRALayeredBitmap);\nend;\n\nconst\n  StreamHeader = 'TBGRALayeredBitmap'#26#0;\n  StreamMaxLayerCount = 4096;\n  StreamMaxHeaderSize = 256;\n\nfunction CheckStreamForLayers(AStream: TStream): boolean;\nvar\n  OldPosition: Int64;\n  HeaderFound: string;\nbegin\n  result := false;\n  OldPosition:= AStream.Position;\n  try\n    SetLength(HeaderFound, length(StreamHeader));\n    SetLength(HeaderFound, AStream.Read(HeaderFound[1], length(HeaderFound)));\n    if HeaderFound = StreamHeader then\n      result := true;\n  except\n    on ex: exception do\n    begin\n      //nothing\n    end;\n  end;\n  AStream.Position:= OldPosition;\nend;\n\nprocedure RenameLayersToUniqueId(ALayers: TBGRACustomLayeredBitmap);\nvar\n  layerDir: TMemDirectory;\n  i: Integer;\nbegin\n  layerDir := ALayers.MemDirectory.FindPath('layers');\n  if Assigned(layerDir) then\n  begin\n    for i := 0 to ALayers.NbLayers-1 do\n      layerDir.Rename('layer'+inttostr(i+1), '', inttostr(ALayers.LayerUniqueId[i]));\n  end;\nend;\n\nprocedure RenameLayersToIndex(ALayers: TBGRACustomLayeredBitmap);\nvar\n  layerDir: TMemDirectory;\n  i: Integer;\nbegin\n  layerDir := ALayers.MemDirectory.FindPath('layers');\n  if Assigned(layerDir) then\n  begin\n    for i := 0 to ALayers.NbLayers-1 do\n      layerDir.Rename(inttostr(ALayers.LayerUniqueId[i]), '', 'layer'+inttostr(i+1));\n  end;\nend;\n\nfunction LoadLayersFromStream(AStream: TStream; out ASelectedLayerIndex: integer; ALoadLayerUniqueIds: boolean;\n         ADestination: TBGRALayeredBitmap; AProgress: boolean): TBGRALayeredBitmap;\nvar\n  OldPosition: Int64;\n  HeaderFound: string;\n  NbLayers, canvasWidth, canvasHeight: LongInt;\n  HeaderSize, LayerHeaderSize: LongInt;\n  LayerStackStartPosition, LayerHeaderPosition,\n  LayerBitmapPosition, LayerEndPosition, MemDirPos: Int64;\n  StackOption: LongInt;\n  Layer: TBGRABitmap;\n  i,LayerIndex: integer;\n  LayerName: string;\n  Compression: TLzpCompression;\n  LayerBlendOp: TBlendOperation;\n  LayerIdFound: boolean;\n  h: TLayerHeader;\nbegin\n  if Assigned(ADestination) then\n  begin\n    result := ADestination;\n    result.Clear;\n  end else\n    result := TBGRALayeredBitmap.Create;\n  OldPosition:= AStream.Position;\n  SetLength(HeaderFound, length(StreamHeader));\n  try\n    //format identifier\n    SetLength(HeaderFound, AStream.Read(HeaderFound[1], length(HeaderFound)));\n    if HeaderFound <> StreamHeader then\n      raise exception.Create('Invalid header');\n\n    //header size\n    HeaderSize:= LEReadLongint(AStream);\n    if (HeaderSize < 12) or (HeaderSize > StreamMaxHeaderSize) then\n      raise exception.Create('Invalid header size');\n    LayerStackStartPosition := AStream.Position + HeaderSize;\n\n    NbLayers:= LEReadLongint(AStream);\n    if (NbLayers < 0) or (NbLayers > StreamMaxLayerCount) then\n      raise exception.Create('Invalid layer count');\n\n    ASelectedLayerIndex:= LEReadLongint(AStream);\n    if (ASelectedLayerIndex < -1) or (ASelectedLayerIndex >= NbLayers) then\n      raise exception.Create('Selected layer out of bounds');\n\n    StackOption := LEReadLongint(AStream);\n    result.LinearBlend := (StackOption and 1) = 1;\n    if (StackOption and 2) = 2 then Compression := lzpRLE else Compression:= lzpZStream;\n\n    if headerSize >= 20 then\n    begin\n      canvasWidth := LEReadLongint(AStream);\n      canvasHeight := LEReadLongint(AStream);\n      result.SetSize(canvasWidth,canvasHeight);\n    end;\n\n    if headerSize >= 28 then\n    begin\n      MemDirPos := LEReadInt64(AStream);\n    end else MemDirPos := 0;\n    //end of header\n\n    if MemDirPos <> 0 then\n    begin\n      AStream.Position:= MemDirPos+OldPosition;\n      result.MemDirectory.LoadFromStream(AStream);\n    end else\n      result.MemDirectory.Clear;\n\n    AStream.Position:= LayerStackStartPosition;\n    for i := 0 to NbLayers-1 do\n    begin\n      if AProgress then OnLayeredBitmapLoadProgress(round(i*100/NbLayers));\n      LayerHeaderSize:= LEReadLongint(AStream);\n\n      LayerHeaderPosition := AStream.Position;\n      LayerBitmapPosition := LayerHeaderPosition + LayerHeaderSize;\n      LayerEndPosition := -1;\n\n      fillchar({%H-}h, sizeof(h), 0);\n      h.LayerOption := 1; //visible\n      h.BlendOp:= integer(result.DefaultBlendingOperation);\n      h.LayerOpacity := 65535; //opaque\n      h.LayerUniqueId:= maxLongint;\n      h.FixEndian;\n\n      AStream.ReadBuffer(h, min(LayerHeaderSize, sizeof(h)));\n      h.FixEndian;\n\n      if h.BlendOp > ord(high(TBlendOperation)) then\n        LayerBlendOp := result.DefaultBlendingOperation\n      else\n        LayerBlendOp:= TBlendOperation(h.BlendOp);\n\n      LayerIdFound := h.LayerUniqueId <> maxLongint;\n\n      if h.LayerBitmapSize > 0 then\n        LayerEndPosition:= LayerBitmapPosition+h.LayerBitmapSize;\n\n      AStream.Position:= LayerBitmapPosition;\n      Layer := LoadLayerBitmapFromStream(AStream, Compression);\n      LayerName := Layer.Caption;\n      LayerIndex := result.AddOwnedLayer(Layer);\n      Layer := nil;\n\n      result.LayerName[LayerIndex] := LayerName;\n      result.LayerVisible[LayerIndex] := (h.LayerOption and 1) = 1;\n      result.BlendOperation[LayerIndex]:= LayerBlendOp;\n      result.LayerOffset[LayerIndex] := Point(h.LayerOfsX,h.LayerOfsY);\n      if ALoadLayerUniqueIds and LayerIdFound then\n        result.LayerUniqueId[LayerIndex] := h.LayerUniqueId;\n      result.LayerOpacity[LayerIndex] := h.LayerOpacity shr 8;\n      result.LayerOriginalGuid[LayerIndex] := h.OriginalGuid;\n      result.LayerOriginalMatrix[LayerIndex] := h.OriginalMatrix;\n      result.LayerOriginalRenderStatus[layerIndex] := orsProof;\n\n      if LayerEndPosition <> -1 then AStream.Position := LayerEndPosition;\n    end;\n    if AProgress then OnLayeredBitmapLoadProgress(100);\n\n    RenameLayersToUniqueId(result);\n    result.NotifyLoaded;\n  except\n    on ex: Exception do\n    begin\n      AStream.Position := OldPosition;\n      if not Assigned(ADestination) then result.Free;\n      raise ex;\n    end;\n  end;\nend;\n\nprocedure SaveLayersToStream(AStream: TStream; ALayers: TBGRACustomLayeredBitmap;\n         ASelectedLayerIndex: integer; ACompression: TLzpCompression; AProgress: boolean);\nvar\n  StackOption: longint;\n  i: integer;\n  DirectoryOffsetPos, EndPos: int64;\n  LayerHeaderPosition: int64;\n  LayerBitmapPosition,BitmapSize, startPos: int64;\n  bitmap: TBGRABitmap;\n  h: TLayerHeader;\nbegin\n  if (ASelectedLayerIndex < -1) or (ASelectedLayerIndex >= ALayers.NbLayers) then\n    raise exception.Create('Selected layer out of bounds');\n\n  ALayers.NotifySaving;\n\n  startPos := AStream.Position;\n  AStream.Write(StreamHeader[1], length(StreamHeader));\n  LEWriteLongint(AStream, 28); //header size\n  LEWriteLongint(AStream, ALayers.NbLayers);\n  LEWriteLongint(AStream, ASelectedLayerIndex);\n  StackOption := 0;\n  if ALayers.LinearBlend then StackOption := StackOption or 1;\n  if ACompression = lzpRLE then StackOption:= StackOption or 2;\n  LEWriteLongint(AStream, StackOption);\n  LEWriteLongint(AStream, ALayers.Width);\n  LEWriteLongint(AStream, ALayers.Height);\n  DirectoryOffsetPos := AStream.Position;\n  LEWriteInt64(AStream, 0);\n  //end of header\n\n  for i := 0 to ALayers.NbLayers-1 do\n  begin\n    if AProgress then OnLayeredBitmapSaveProgress(round(i*100/ALayers.NbLayers));\n    LEWriteLongint(AStream, sizeof(h));\n    LayerHeaderPosition := AStream.Position;\n\n    bitmap := ALayers.GetLayerBitmapDirectly(i); //do it before to ensure update from original\n\n    h.LayerOption:= 0;\n    if ALayers.LayerVisible[i] then h.LayerOption:= h.LayerOption or 1;\n    h.BlendOp:= Longint(ALayers.BlendOperation[i]);\n    h.LayerOfsX:= ALayers.LayerOffset[i].x;\n    h.LayerOfsY:= ALayers.LayerOffset[i].y;\n    h.LayerUniqueId:= ALayers.LayerUniqueId[i];\n    h.LayerOpacity:= integer(ALayers.LayerOpacity[i])*$101;\n    h.LayerBitmapSize := 0;\n    h.OriginalGuid := ALayers.LayerOriginalGuid[i];\n    h.OriginalMatrix := ALayers.LayerOriginalMatrix[i];\n    h.FixEndian;\n    AStream.WriteBuffer(h, sizeof(h));\n    //end of layer header\n\n    LayerBitmapPosition:=AStream.Position;\n    if bitmap <> nil then\n      SaveLayerBitmapToStream(AStream, bitmap, ALayers.LayerName[i], ACompression)\n    else\n    begin\n      bitmap := ALayers.GetLayerBitmapCopy(i);\n      SaveLayerBitmapToStream(AStream, bitmap, ALayers.LayerName[i], ACompression);\n      bitmap.free;\n    end;\n\n    BitmapSize := AStream.Position - LayerBitmapPosition;\n\n    //store back the bitmap size\n    AStream.Position:= LayerHeaderPosition + (PByte(@PLayerHeader(nil)^.LayerBitmapSize)-PByte(nil));\n    LEWriteInt64(AStream, BitmapSize);\n\n    AStream.Position:= LayerBitmapPosition+BitmapSize;\n  end;\n  if AProgress then OnLayeredBitmapSaveProgress(100);\n\n  EndPos:= AStream.Position;\n  if ALayers.HasMemFiles then\n  begin\n    AStream.Position := DirectoryOffsetPos;\n    LEWriteInt64(AStream,EndPos-startPos);\n    AStream.Position:= EndPos;\n    RenameLayersToIndex(ALayers);\n    ALayers.MemDirectory.SaveToStream(AStream);\n    RenameLayersToUniqueId(ALayers);\n  end;\nend;\n\nprocedure SaveLayerBitmapToStream(AStream: TStream; ABitmap: TBGRABitmap; ACaption: string; ACompression: TLzpCompression);\nvar Compressed: TBGRACompressableBitmap;\nbegin\n  if ACompression = lzpZStream then\n  begin\n    Compressed := TBGRACompressableBitmap.Create(ABitmap);\n    Compressed.Caption := ACaption;\n    Compressed.CompressionLevel:= cldefault;\n    Compressed.WriteToStream(AStream);\n    Compressed.Free;\n  end else\n    TBGRAWriterLazPaint.WriteRLEImage(AStream, ABitmap, ACaption);\nend;\n\nfunction LoadLayerBitmapFromStream(AStream: TStream; ACompression: TLzpCompression): TBGRABitmap;\nvar Compressed: TBGRACompressableBitmap;\n  captionFound: string;\nbegin\n  if ACompression = lzpZStream then\n  begin\n    Compressed := TBGRACompressableBitmap.Create;\n    Compressed.ReadFromStream(AStream);\n    result := Compressed.GetBitmap;\n    Compressed.Free;\n  end else\n  begin\n    result := TBGRABitmap.Create;\n    TBGRAReaderLazPaint.LoadRLEImage(AStream, result, captionFound);\n    result.Caption := captionFound;\n  end;\nend;\n\nprocedure RegisterStreamLayers;\nbegin\n  LayeredBitmapSaveToStreamProc := @SaveLayeredBitmapToStream;\n  LayeredBitmapLoadFromStreamProc := @LoadLayeredBitmapFromStream;\n  LayeredBitmapCheckStreamProc := @CheckStreamForLayers;\nend;\n\ninitialization\n\n  RegisterStreamLayers;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrasvg.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ SVG format implementation }\nunit BGRASVG;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, DOM, BGRAUnits, BGRASVGShapes,\n  BGRACanvas2D, BGRASVGType, FPimage;\n\n{ An SVG file has a width and height which describe the viewport size. It is not however really\n  the size of the content. The latter is defined as a rectangle called viewbox. There are thus\n  various ways of drawing an SVG file. If the viewbox is not specified, then it is a rectangle\n  with origin (0,0) and with the same size as the viewport. In this case, a pixel in the viewbox\n  corresponds to a pixel in the viewport. Otherwise, viewbox is scaled to fit the viewport.\n\n  ------ Different DPIs -----------------\n\n  The default DPI of the SVG file is the DPI used to convert between pixel units and other units\n  like centimeters or inches. In general, this should not be used to scale the image, because it\n  can make the SVG measures inconsistent. It should rather be set to the DPI which was used\n  internally and which should be 96 according to CSS specifications. Some programs however\n  use a different DPI so it can be useful to change it according to the source program.\n\n  The destination DPI that can be specified when drawing can be used to scale the SVG. For example\n  you can prepare your SVG to be at the correct size for 96 DPI display and then draw them\n  on a display for which the apparent DPI is different (this can be set systemwide on Windows and\n  Linux).\n\n  ------ Various ways of scaling --------\n\n  There are various functions to draw and also to get the presentation matrix. The latter is\n  a matrix, not including the translation to x and y, that contains all transforms to apply\n  to the viewbox coordinates. The drawing functions are Draw and StretchDraw and to get the\n  presentation matrix the functions are GetPresentationMatrix and GetStretchPresentationMatrix\n  respectively.\n\n  Drawing in user coordinates, i.e. without taking account of the viewbox or viewport size. One\n  can achieve this by calling the Draw function with an x and y coordinates and a destination\n  unit/DPI. You would do that only if you want to make use of the viewbox offset or\n  if you already have applied all necessary transforms. The corresponding presentation matrix\n  is the identity.\n\n  Drawing with a specific alignment in user coordinates. This can be done by calling Draw\n  with horizontal and vertical alignment, x and y coordinates to align to, a destination unit/DPI\n  and Scaled set to False.\n\n  Drawing with a specific alignment, scaled to view port units. This will draw the SVG at its\n  expected size but apply the alignment you want. This is what you would want to do if you\n  want to customize the alignment. One can achieve this as above but by specifying the Scaled\n  parameter to True.\n\n  Drawing inside a specified rectangle, not preserving the aspect ratio. In this case, you\n  want a certain size and the original size does not matter much. The viewbox of the SVG is\n  stretched to fit the rectangle. One can achieve this by calling StretchDraw with the\n  specified rectangle and the UseSvgAspectRatio to False.\n\n  Drawing inside a rectangle, using the parameter of the SVG about the aspect ratio. In this case,\n  the SVG may either be stretched as before, scaled to fit the rectangle or scaled to cover it.\n  Also the SVG may be set with a certain horizontal and vertical alignment within the rectangle.\n  One can draw this way by calling StretchDraw with the UseSvgAspectRatio set to True.\n  You would typically use this method to show the SVG as it was intended to look like but in\n  a custom container by suppling WidthAsPixel and HeightAsPixel for the rectangle size.\n\n  Drawing inside a rectangle, preserving the aspect ratio. In this case, you call StretchDraw with\n  a horizontal and vertical alignment, the rectangle and the Slice parameter. When Slice is set\n  to False, the viewbox will fit the rectangle. If Slice is to True then the viewbox may overflow\n  the rectangle so that it covers the whole surface. Using this function, one can have control\n  over the way the SVG is scaled. Slice is useful for background.\n\n  Drawing inside a rectangle of the size defined by the SVG. That will draw the SVG as it is\n  supposed to look like. One can do that by calling StretchDraw with a unit parameter. You would\n  typically use pixel units and this will draw to the size WidthAsPixel by HeightAsPixel.\n\n  }\n\ntype\n  TCSSUnit = BGRAUnits.TCSSUnit;\n\nconst\n  cuCustom = BGRAUnits.cuCustom;\n  cuPixel = BGRAUnits.cuPixel;\n  cuCentimeter = BGRAUnits.cuCentimeter;\n  cuMillimeter = BGRAUnits.cuMillimeter;\n  cuInch = BGRAUnits.cuInch;\n  cuPica = BGRAUnits.cuPica;\n  cuPoint = BGRAUnits.cuPoint;\n  cuFontEmHeight = BGRAUnits.cuFontEmHeight;\n  cuFontXHeight = BGRAUnits.cuFontXHeight;\n  cuPercent = BGRAUnits.cuPercent;\n\ntype\n\n  { Converter for units within an SVG document or group }\n  TSVGUnits = class(TCSSUnitConverter)\n  private\n    FOnRecompute: TSVGRecomputeEvent;\n    procedure Recompute;\n    procedure SetOnRecompute(AValue: TSVGRecomputeEvent);\n  protected\n    FSvg: TDOMElement;\n    FContainerHeight: TFloatWithCSSUnit;\n    FContainerWidth: TFloatWithCSSUnit;\n    FDefaultDpi: PSingle;\n\n    //fetched or computed\n    FViewBox: TSVGViewBox;\n    FPreserveAspectRatio: TSVGPreserveAspectRatio;\n    FViewPortSize, FProportionalViewSize, FStretchedViewSize: TSVGSize;\n\n    procedure SetContainerHeight(AValue: TFloatWithCSSUnit);\n    procedure SetContainerWidth(AValue: TFloatWithCSSUnit);\n    function GetDpiX: single; override;\n    function GetDpiY: single; override;\n    function GetCustomOrigin: TPointF;\n    procedure SetCustomOrigin(AValue: TPointF);\n    procedure SetViewBox(AValue: TSVGViewBox);\n  public\n    procedure SetDefaultDpiAndOrigin;\n    constructor Create(ASvg: TDOMElement; ADefaultDpi: PSingle);\n    function GetStretchRectF(AViewPort: TRectF; const par: TSVGPreserveAspectRatio): TRectF;\n    property ViewBox: TSVGViewBox read FViewBox write SetViewBox;\n    property ViewPortSize: TSVGSize read FViewPortSize;\n    property ProportionalViewSize: TSVGSize read FProportionalViewSize;\n    property PreserveAspectRatio: TSVGPreserveAspectRatio read FPreserveAspectRatio;\n    property StretchedViewSize: TSVGSize read FStretchedViewSize;\n    property CustomOrigin: TPointF read GetCustomOrigin write SetCustomOrigin;\n    property ContainerWidth: TFloatWithCSSUnit read FContainerWidth write SetContainerWidth;\n    property ContainerHeight: TFloatWithCSSUnit read FContainerHeight write SetContainerHeight;\n    property OnRecompute: TSVGRecomputeEvent read FOnRecompute write SetOnRecompute;\n  end;\n\n  { @abstract(Reading, writing and rendering for an SVG document.)\n\n**Example of reading and displaying SVG images:**\n\n@image(../doc/img/svg_example.png)\n\n```pascal\nuses ..., BGRABitmapTypes, BGRASVG;\n\nprocedure DrawSVGImages(ctx: TBGRACanvas2D);\nvar svg: TBGRASVG;\nbegin\n  svg := TBGRASVG.Create;\n  svg.LoadFromFile('Amsterdammertje-icoon.svg');\n  svg.StretchDraw(ctx, taCenter,tlCenter, 0,0,ctx.Width/3,ctx.Height);\n\n  svg.LoadFromFile('BespectacledMaleUser.svg');\n  svg.StretchDraw(ctx, ctx.Width/3,0,ctx.Width*2/3,ctx.Height/2);\n\n  ctx.save;\n  ctx.beginPath;\n  ctx.rect(ctx.Width/3,ctx.Height/2,ctx.Width*2/3,ctx.Height/2);\n  ctx.clip;\n  svg.LoadFromFile('Blue_gyroelongated_pentagonal_pyramid.svg');\n  svg.Draw(ctx, taCenter,tlCenter, ctx.Width*2/3,ctx.Height*3/4);\n  ctx.restore;\n\n  svg.Free;\n\n  ctx.beginPath;\n  ctx.lineWidth:= 1;\n  ctx.strokeStyle(BGRABlack);\n  ctx.moveTo(ctx.Width/3,0);\n  ctx.lineTo(ctx.Width/3,ctx.Height);\n  ctx.moveTo(ctx.Width/3,ctx.Height/2);\n  ctx.lineTo(ctx.Width,ctx.Height/2);\n  ctx.stroke;\nend;\n```}\n  TBGRASVG = class(TSVGCustomElement)\n  private\n    function GetColor: TBGRAPixel;\n    function GetComputedHeight: TFloatWithCSSUnit;\n    function GetComputedWidth: TFloatWithCSSUnit;\n    function GetContainerHeight: TFloatWithCSSUnit;\n    function GetContainerHeightAsPixel: single;\n    function GetContainerWidth: TFloatWithCSSUnit;\n    function GetContainerWidthAsPixel: single;\n    function GetFontSize: TFloatWithCSSUnit;\n    function GetHeight: TFloatWithCSSUnit;\n    function GetHeightAsCm: single;\n    function GetHeightAsInch: single;\n    function GetHeightAsPixel: single;\n    function GetLayer(AIndex: integer): TSVGGroup;\n    function GetLayerCount: integer;\n    function GetPreserveAspectRatio: TSVGPreserveAspectRatio;\n    function GetUnits: TSVGUnits;\n    function GetUTF8String: utf8string;\n    function GetViewBox: TSVGViewBox; overload;\n    function GetViewBox(AUnit: TCSSUnit): TSVGViewBox; overload;\n    procedure GetViewBoxIndirect(AUnit: TCSSUnit; out AViewBox: TSVGViewBox);\n    function GetViewMin(AUnit: TCSSUnit): TPointF;\n    function GetViewSize(AUnit: TCSSUnit): TPointF;\n    function GetVisualHeight: TFloatWithCSSUnit;\n    function GetVisualHeightAsPixel: single;\n    function GetVisualWidth: TFloatWithCSSUnit;\n    function GetVisualWidthAsPixel: single;\n    function GetWidth: TFloatWithCSSUnit;\n    function GetWidthAsCm: single;\n    function GetWidthAsInch: single;\n    function GetWidthAsPixel: single;\n    function GetZoomable: boolean;\n    procedure SetColor(AValue: TBGRAPixel);\n    procedure SetContainerHeight(AValue: TFloatWithCSSUnit);\n    procedure SetContainerHeightAsPixel(AValue: single);\n    procedure SetContainerWidth(AValue: TFloatWithCSSUnit);\n    procedure SetContainerWidthAsPixel(AValue: single);\n    procedure SetDefaultDpi(AValue: single);\n    procedure SetFontSize(AValue: TFloatWithCSSUnit);\n    procedure SetHeight(AValue: TFloatWithCSSUnit);\n    procedure SetHeightAsCm(AValue: single);\n    procedure SetHeightAsInch(AValue: single);\n    procedure SetHeightAsPixel(AValue: single);\n    procedure SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\n    procedure SetUTF8String(AValue: utf8string);\n    procedure SetViewBox(AValue: TSVGViewBox);\n    procedure SetWidth(AValue: TFloatWithCSSUnit);\n    procedure SetWidthAsCm(AValue: single);\n    procedure SetWidthAsInch(AValue: single);\n    procedure SetWidthAsPixel(AValue: single);\n    procedure SetZoomable(AValue: boolean);\n  protected\n    FXml: TXMLDocument;\n    FDefaultDpi: single;\n    FContent: TSVGContent;\n    FDataLink: TSVGDataLink;\n    procedure Init(ACreateEmpty: boolean);\n    function GetViewBoxAlignment(AHorizAlign: TAlignment; AVertAlign: TTextLayout; AUnit: TCSSUnit): TPointF;\n    function GetViewBoxScale: TPointF;\n    procedure UnitsRecompute(Sender: TObject);\n    procedure SetAttribute(AName: string; AValue: string); override;\n  public\n    constructor Create; overload;\n    constructor Create(AWidth,AHeight: single; AUnit: TCSSUnit); overload;\n    constructor Create(AFilenameUTF8: string); overload;\n    constructor Create(AStream: TStream); overload;\n    constructor CreateFromString(AUTF8String: string);\n    destructor Destroy; override;\n    function Duplicate: TBGRASVG;\n    procedure CropToViewBox(AScale: single = 1);\n    procedure LoadFromFile(AFilenameUTF8: string);\n    procedure LoadFromStream(AStream: TStream; AURI: UnicodeString = 'stream:');\n    procedure LoadFromResource(AFilename: string);\n    procedure SaveToFile(AFilenameUTF8: string);\n    procedure SaveToStream(AStream: TStream);\n    procedure Draw(ACanvas2d: TBGRACanvas2D; x,y: single; AUnit: TCSSUnit = cuPixel); overload;\n    procedure Draw(ACanvas2d: TBGRACanvas2D; x,y: single; destDpi: single); overload;\n    procedure Draw(ACanvas2d: TBGRACanvas2D; x,y: single; destDpi: TPointF); overload;\n    procedure Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment; AVertAlign: TTextLayout; x,y: single; AUnit: TCSSUnit = cuPixel; AScale: boolean = true); overload;\n    procedure Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment; AVertAlign: TTextLayout; x,y: single; destDpi: single; AScale: boolean = true); overload;\n    procedure Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment; AVertAlign: TTextLayout; x,y: single; destDpi: TPointF; AScale: boolean = true); overload;\n    procedure StretchDraw(ACanvas2d: TBGRACanvas2D; x,y,w,h: single; useSvgAspectRatio: boolean = false); overload;\n    procedure StretchDraw(ACanvas2d: TBGRACanvas2D; r: TRectF; useSvgAspectRatio: boolean = false); overload;\n    procedure StretchDraw(ACanvas2d: TBGRACanvas2D; x, y: single; AUnit: TCSSUnit); overload;\n    procedure StretchDraw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment;\n      AVertAlign: TTextLayout; x,y,w,h: single; ASlice: boolean = false); overload;\n    procedure StretchDraw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment;\n      AVertAlign: TTextLayout; r: TRectF; ASlice: boolean = false); overload;\n    function GetStretchRectF(AHorizAlign: TAlignment; AVertAlign: TTextLayout; x,y,w,h: single; ASlice: boolean = false): TRectF; overload;\n    function GetStretchRectF(x,y,w,h: single): TRectF; overload;\n    function GetPresentationMatrix(AHorizAlign: TAlignment; AVertAlign: TTextLayout;\n      AUnit: TCSSUnit; AScale: boolean): TAffineMatrix;\n    function GetStretchPresentationMatrix(w,h: single; useSvgAspectRatio: boolean = false): TAffineMatrix; overload;\n    function GetStretchPresentationMatrix(AHorizAlign: TAlignment; AVertAlign: TTextLayout; w,h: single; ASlice: boolean = false): TAffineMatrix; overload;\n    function GetStretchPresentationMatrix(AUnit: TCSSUnit): TAffineMatrix; overload;\n    function FindElementById(AID: string): TSVGElement; overload;\n    function FindElementById(AID: string; AClass: TSVGFactory): TSVGElement; overload;\n    procedure IterateElements(ACallback: TIterateElementCallback; AData: pointer;\n      ARecursive: boolean); override;\n    procedure ConvertToUnit(AUnit: TCSSUnit); override; //except Width, Height, ContainerWidth, ContainerHeight\n    property AsUTF8String: utf8string read GetUTF8String write SetUTF8String;\n    property Units: TSVGUnits read GetUnits;\n    property FontSize: TFloatWithCSSUnit read GetFontSize write SetFontSize;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property Width: TFloatWithCSSUnit read GetWidth write SetWidth;\n    property Height: TFloatWithCSSUnit read GetHeight write SetHeight;\n    property ComputedWidth: TFloatWithCSSUnit read GetComputedWidth;\n    property ComputedHeight: TFloatWithCSSUnit read GetComputedHeight;\n    property WidthAsPixel: single read GetWidthAsPixel write SetWidthAsPixel;\n    property HeightAsPixel: single read GetHeightAsPixel write SetHeightAsPixel;\n    property WidthAsCm: single read GetWidthAsCm write SetWidthAsCm;\n    property HeightAsCm: single read GetHeightAsCm write SetHeightAsCm;\n    property WidthAsInch: single read GetWidthAsInch write SetWidthAsInch;\n    property HeightAsInch: single read GetHeightAsInch write SetHeightAsInch;\n    property ContainerWidth: TFloatWithCSSUnit read GetContainerWidth write SetContainerWidth;\n    property ContainerWidthAsPixel: single read GetContainerWidthAsPixel write SetContainerWidthAsPixel;\n    property ContainerHeight: TFloatWithCSSUnit read GetContainerHeight write SetContainerHeight;\n    property ContainerHeightAsPixel: single read GetContainerHeightAsPixel write SetContainerHeightAsPixel;\n    property Zoomable: boolean read GetZoomable write SetZoomable;\n    property ViewBox: TSVGViewBox read GetViewBox write SetViewBox;\n    property ViewBoxInUnit[AUnit: TCSSUnit]: TSVGViewBox read GetViewBox;\n    property ViewMinInUnit[AUnit: TCSSUnit]: TPointF read GetViewMin;\n    property ViewSizeInUnit[AUnit: TCSSUnit]: TPointF read GetViewSize;\n    property VisualWidth: TFloatWithCSSUnit read GetVisualWidth;\n    property VisualHeight: TFloatWithCSSUnit read GetVisualHeight;\n    property VisualWidthAsPixel: single read GetVisualWidthAsPixel;\n    property VisualHeightAsPixel: single read GetVisualHeightAsPixel;\n    property Attribute[AName: string]: string read GetAttribute write SetAttribute;\n    property AttributeDef[AName: string; ADefault: string]: string read GetAttribute;\n    property DefaultDpi: single read FDefaultDpi write SetDefaultDpi; //this is not saved in the SVG file\n    property Content: TSVGContent read FContent;\n    property DataLink: TSVGDataLink read FDataLink;//(for test or internal info)\n    property preserveAspectRatio: TSVGPreserveAspectRatio read GetPreserveAspectRatio write SetPreserveAspectRatio;\n    property Layer[AIndex: integer]: TSVGGroup read GetLayer;\n    property LayerCount: integer read GetLayerCount;\n  end;\n\n  { Reader for SVG image format }\n  TFPReaderSVG = class(TBGRAImageReader)\n    private\n      FRenderDpi: single;\n      FWidth,FHeight: integer;\n      FScale: single;\n    protected\n      function InternalCheck(Stream: TStream): boolean; override;\n      procedure InternalRead(Stream: TStream; Img: TFPCustomImage); override;\n    public\n      constructor Create; override;\n      function GetQuickInfo(AStream: TStream): TQuickImageInfo; override;\n      function GetBitmapDraft(AStream: TStream; AMaxWidth, AMaxHeight: integer; out AOriginalWidth,AOriginalHeight: integer): TBGRACustomBitmap; override;\n      property RenderDpi: single read FRenderDpi write FRenderDpi;\n      property Width: integer read FWidth;\n      property Height: integer read FHeight;\n      property Scale: single read FScale write FScale;\n  end;\n\nprocedure RegisterSvgFormat;\n\nimplementation\n\nuses XMLRead, XMLWrite, BGRAUTF8, math, xmltextreader, URIParser, BGRATransform;\n\nconst SvgNamespace = 'http://www.w3.org/2000/svg';\nconst FPCTypeName = 'Scalable Vector Graphic';\nconst Extension = 'svg';\n\n{ TFPReaderSVG }\n\nfunction TFPReaderSVG.InternalCheck(Stream: TStream): boolean;\nvar\n  magic: array[1..6] of char;\n  prevPos: int64;\n  count: LongInt;\nbegin\n  prevPos := Stream.Position;\n  count := Stream.Read({%H-}magic, sizeof(magic));\n  Stream.Position:= prevPos;\n  result:= (count = sizeof(magic)) and ((magic = '<?xml ') or (copy(magic,1,5)='<svg '));\nend;\n\nprocedure TFPReaderSVG.InternalRead(Stream: TStream; Img: TFPCustomImage);\nvar\n  svg: TBGRASVG;\n  vsize: TPointF;\n  bgra: TBGRACustomBitmap;\n  c2d: TBGRACanvas2D;\n  y, x: Integer;\n  p: PBGRAPixel;\nbegin\n  svg := TBGRASVG.Create(Stream);\n  bgra := nil;\n  try\n    svg.DefaultDpi:= RenderDpi;\n    if Img is TBGRACustomBitmap then\n      bgra := TBGRACustomBitmap(Img)\n    else\n      bgra := BGRABitmapFactory.Create;\n    if svg.preserveAspectRatio.Preserve then\n      vsize := svg.GetViewSize(cuPixel)\n      else vsize := PointF(svg.WidthAsPixel, svg.HeightAsPixel);\n    bgra.SetSize(ceil(vsize.x*scale),ceil(vsize.y*scale));\n    bgra.FillTransparent;\n    c2d := TBGRACanvas2D.Create(bgra);\n    svg.StretchDraw(c2d, 0,0,bgra.Width,bgra.Height, true);\n    c2d.Free;\n    if bgra<>Img then\n    begin\n      Img.SetSize(bgra.Width,bgra.Height);\n      for y := 0 to bgra.Height-1 do\n      begin\n        p := bgra.ScanLine[y];\n        for x := 0 to bgra.Width-1 do\n        begin\n          Img.Colors[x,y] := BGRAToFPColor(p^);\n          inc(p);\n        end;\n      end;\n    end;\n    FWidth:= bgra.Width;\n    FHeight:= bgra.Height;\n  finally\n    if bgra<>Img then bgra.Free;\n    svg.Free;\n  end;\nend;\n\nconstructor TFPReaderSVG.Create;\nbegin\n  inherited Create;\n  FRenderDpi:= 96;\n  FScale := 1;\nend;\n\nfunction TFPReaderSVG.GetQuickInfo(AStream: TStream): TQuickImageInfo;\nvar\n  svg: TBGRASVG;\n  vsize: TPointF;\nbegin\n  svg := TBGRASVG.Create(AStream);\n  svg.DefaultDpi:= RenderDpi;\n  vsize := svg.GetViewSize(cuPixel);\n  svg.Free;\n  result.Width:= ceil(vsize.x);\n  result.Height:= ceil(vsize.y);\n  result.AlphaDepth:= 8;\n  result.ColorDepth:= 24;\nend;\n\nfunction TFPReaderSVG.GetBitmapDraft(AStream: TStream; AMaxWidth,\n  AMaxHeight: integer; out AOriginalWidth, AOriginalHeight: integer): TBGRACustomBitmap;\nvar\n  svg: TBGRASVG;\n  vsize: TPointF;\n  c2d: TBGRACanvas2D;\n  ratio: Single;\nbegin\n  svg := TBGRASVG.Create(AStream);\n  result := nil;\n  try\n    svg.DefaultDpi:= RenderDpi;\n    if svg.preserveAspectRatio.Preserve then\n      vsize := svg.GetViewSize(cuPixel)\n      else vsize := PointF(svg.WidthAsPixel, svg.HeightAsPixel);\n    AOriginalWidth:= ceil(vsize.x);\n    AOriginalHeight:= ceil(vsize.y);\n    if (vsize.x = 0) or (vsize.y = 0) then exit;\n    ratio := min(AMaxWidth/vsize.x, AMaxHeight/vsize.y);\n    result := BGRABitmapFactory.Create(ceil(vsize.x*ratio),ceil(vsize.y*ratio));\n    if ratio <> 0 then\n    begin\n      c2d := TBGRACanvas2D.Create(result);\n      svg.StretchDraw(c2d, 0,0,result.width,result.height);\n      c2d.Free;\n    end;\n  finally\n    svg.Free;\n  end;\nend;\n\nvar AlreadyRegistered: boolean;\n\nprocedure RegisterSvgFormat;\nbegin\n  if AlreadyRegistered then exit;\n\n  // register FPC handler\n  BGRARegisterImageReader(ifSvg, TFPReaderSVG, True, FPCTypeName, Extension);\n\n  AlreadyRegistered:= True;\nend;\n\nfunction TSVGUnits.GetCustomOrigin: TPointF;\nbegin\n  result := FViewBox.min;\nend;\n\nprocedure TSVGUnits.SetCustomOrigin(AValue: TPointF);\nvar newViewBox: TSVGViewBox;\nbegin\n  newViewBox := ViewBox;\n  newViewBox.min := AValue;\n  ViewBox := newViewBox;\nend;\n\nprocedure TSVGUnits.Recompute;\nbegin\n  FViewBox:= TSVGViewBox.Parse( string(FSvg.GetAttribute('viewBox')) );\n  FPreserveAspectRatio := TSVGPreserveAspectRatio.Parse( string(FSvg.GetAttribute('preserveAspectRatio')) );\n  FViewPortSize.width := parseValue(string(FSvg.GetAttribute('width')), FloatWithCSSUnit(FViewBox.size.x, cuPixel));\n  FViewPortSize.height := parseValue(string(FSvg.GetAttribute('height')), FloatWithCSSUnit(FViewBox.size.y, cuPixel));\n\n  //view port defined as percentage of container\n  if FViewPortSize.width.CSSUnit = cuPercent then\n  begin\n    FViewPortSize.width.value := FViewPortSize.width.value/100*FContainerWidth.value;\n    FViewPortSize.width.CSSUnit := FContainerWidth.CSSUnit;\n  end;\n  if FViewPortSize.height.CSSUnit = cuPercent then\n  begin\n    FViewPortSize.height.value := FViewPortSize.height.value/100*FContainerHeight.value;\n    FViewPortSize.height.CSSUnit := FContainerHeight.CSSUnit;\n  end;\n\n  //ensure same unit for width and height\n  if FViewPortSize.width.CSSUnit <> FViewPortSize.height.CSSUnit then\n    FViewPortSize.height := ConvertHeight(FViewPortSize.height, FViewPortSize.width.CSSUnit, 0);\n\n  //if not viewbox is specified, it is equal to the viewport\n  if (FViewBox.size.x <= 0) and (FViewBox.size.y <= 0) then\n  begin\n    FViewBox.min := PointF(0, 0);\n    FViewBox.size.x := ConvertWidth(FViewPortSize.width, cuPixel, 0).value;\n    FViewBox.size.y := ConvertHeight(FViewPortSize.height, cuPixel, 0).value;\n  end;\n\n  //compute stretching for default SVG aspect ratio (meet)\n  FProportionalViewSize := FViewPortSize;\n  with GetStretchRectF(RectF(0,0,FViewPortSize.width.value,FViewPortSize.height.value),\n       TSVGPreserveAspectRatio.DefaultValue) do\n  begin\n    FProportionalViewSize.width.value := Width;\n    FProportionalViewSize.height.value := Height;\n  end;\n\n  //compute stretching according to specified SVG aspect ratio (can be slice or none)\n  FStretchedViewSize := FViewPortSize;\n  with GetStretchRectF(RectF(0,0,FViewPortSize.width.value,FViewPortSize.height.value),\n       PreserveAspectRatio) do\n  begin\n    FStretchedViewSize.width.value := Width;\n    FStretchedViewSize.height.value := Height;\n  end;\n\n  ViewBoxWidth := FloatWithCSSUnit(FViewBox.size.x, cuPixel);\n  ViewBoxHeight := FloatWithCSSUnit(FViewBox.size.y, cuPixel);\n\n  if Assigned(FOnRecompute) then FOnRecompute(self);\nend;\n\nprocedure TSVGUnits.SetOnRecompute(AValue: TSVGRecomputeEvent);\nbegin\n  if FOnRecompute=AValue then Exit;\n  FOnRecompute:=AValue;\nend;\n\nprocedure TSVGUnits.SetContainerHeight(AValue: TFloatWithCSSUnit);\nbegin\n  if CompareMem(@FContainerHeight,@AValue,sizeof(TFloatWithCSSUnit)) then Exit;\n  FContainerHeight:=AValue;\n  Recompute;\nend;\n\nprocedure TSVGUnits.SetContainerWidth(AValue: TFloatWithCSSUnit);\nbegin\n  if CompareMem(@FContainerWidth,@AValue,sizeof(TFloatWithCSSUnit)) then Exit;\n  FContainerWidth:=AValue;\n  Recompute;\nend;\n\nprocedure TSVGUnits.SetDefaultDpiAndOrigin;\nbegin\n  FSvg.RemoveAttribute('viewBox');\n  Recompute;\nend;\n\nprocedure TSVGUnits.SetViewBox(AValue: TSVGViewBox);\nbegin\n  FSvg.SetAttribute('viewBox', DOMString(formatValue(AValue.min.x)+' '+\n    formatValue(AValue.min.y)+' '+\n    formatValue(AValue.size.x)+' '+\n    formatValue(AValue.size.y)));\n  Recompute;\nend;\n\nfunction TSVGUnits.GetDpiX: single;\nbegin\n  result := FDefaultDpi^;\nend;\n\nfunction TSVGUnits.GetDpiY: single;\nbegin\n  result := FDefaultDpi^;\nend;\n\nconstructor TSVGUnits.Create(ASvg: TDOMElement; ADefaultDpi: PSingle);\nbegin\n  FSvg := ASvg;\n  FDefaultDpi := ADefaultDpi;\n  FContainerWidth := FloatWithCSSUnit(640,cuPixel);\n  FContainerHeight := FloatWithCSSUnit(480,cuPixel);\n  Recompute;\nend;\n\nfunction TSVGUnits.GetStretchRectF(AViewPort: TRectF; const par: TSVGPreserveAspectRatio): TRectF;\nvar w0,h0,w,h: single;\nbegin\n  result := AViewPort;\n  w0 := AViewPort.Width;\n  h0 := AViewPort.Height;\n\n  if par.Preserve and\n     (FViewBox.size.x > 0) and (FViewBox.size.y > 0) and\n     (w0 > 0) and (h0 > 0) then\n  begin\n    w := w0;\n    h := h0;\n\n    //viewBox wider than viewSize\n    if (FViewBox.size.x/FViewBox.size.y > w/h) xor par.Slice then\n    begin\n      h := w * FViewBox.size.y / FViewBox.size.x;\n      result.Bottom := result.Top+h;\n    end else\n    begin\n      w := h * FViewBox.size.x / FViewBox.size.y;\n      result.Right := result.Left+w;\n    end;\n    case par.HorizAlign of\n      taCenter: result.Offset((w0-w)/2, 0);\n      taRightJustify: result.Offset(w0-w, 0);\n    end;\n    case par.VertAlign of\n      tlCenter: result.Offset(0, (h0-h)/2);\n      tlBottom: result.Offset(0, h0-h);\n    end;\n  end;\nend;\n\n{ TBGRASVG }\n\nfunction TBGRASVG.GetColor: TBGRAPixel;\nbegin\n  result := StrToBGRA(GetAttributeOrStyle('color', 'black'));\nend;\n\nfunction TBGRASVG.GetComputedHeight: TFloatWithCSSUnit;\nbegin\n  result := Units.ViewPortSize.height;\nend;\n\nfunction TBGRASVG.GetComputedWidth: TFloatWithCSSUnit;\nbegin\n  result := Units.ViewPortSize.width;\nend;\n\nfunction TBGRASVG.GetVisualHeight: TFloatWithCSSUnit;\nbegin\n  result := Units.StretchedViewSize.height;\nend;\n\nfunction TBGRASVG.GetVisualHeightAsPixel: single;\nbegin\n  result := Units.ConvertHeight(VisualHeight, cuPixel).value;\nend;\n\nfunction TBGRASVG.GetVisualWidth: TFloatWithCSSUnit;\nbegin\n  result := Units.StretchedViewSize.width;\nend;\n\nfunction TBGRASVG.GetContainerHeight: TFloatWithCSSUnit;\nbegin\n  result := Units.ContainerHeight;\nend;\n\nfunction TBGRASVG.GetContainerHeightAsPixel: single;\nbegin\n  result := Units.ConvertHeight(Units.ContainerHeight, cuPixel).value;\nend;\n\nfunction TBGRASVG.GetContainerWidth: TFloatWithCSSUnit;\nbegin\n  result := Units.ContainerWidth;\nend;\n\nfunction TBGRASVG.GetContainerWidthAsPixel: single;\nbegin\n  result := Units.ConvertWidth(Units.ContainerWidth, cuPixel).value;\nend;\n\nfunction TBGRASVG.GetFontSize: TFloatWithCSSUnit;\nbegin\n  result:= GetVerticalAttributeOrStyleWithUnit('font-size',Units.CurrentFontEmHeight,false);\nend;\n\nfunction TBGRASVG.GetHeight: TFloatWithCSSUnit;\nbegin\n  result := TCSSUnitConverter.parseValue(Attribute['height'],FloatWithCSSUnit(Units.ViewBox.size.y,cuCustom));\n  if result.CSSUnit = cuCustom then result.CSSUnit:= cuPixel;\nend;\n\nfunction TBGRASVG.GetHeightAsCm: single;\nbegin\n  result := FUnits.ConvertHeight(ComputedHeight,cuCentimeter).value;\nend;\n\nfunction TBGRASVG.GetHeightAsInch: single;\nbegin\n  result := FUnits.ConvertHeight(ComputedHeight,cuInch).value;\nend;\n\nfunction TBGRASVG.GetHeightAsPixel: single;\nbegin\n  result := FUnits.ConvertHeight(ComputedHeight,cuPixel).value;\nend;\n\nfunction TBGRASVG.GetLayer(AIndex: integer): TSVGGroup;\nvar\n  i: Integer;\nbegin\n  result := nil;\n  for i := 0 to Content.ElementCount-1 do\n  begin\n    if (Content.ElementObject[i] is TSVGGroup) and\n       TSVGGroup(Content.Element[i]).IsLayer then\n    begin\n      if AIndex = 0 then exit(TSVGGroup(Content.Element[i]));\n      dec(AIndex);\n    end;\n  end;\nend;\n\nfunction TBGRASVG.GetLayerCount: integer;\nvar\n  i: Integer;\nbegin\n  result := 0;\n  for i := 0 to Content.ElementCount-1 do\n  begin\n    if (Content.ElementObject[i] is TSVGGroup) and\n       TSVGGroup(Content.Element[i]).IsLayer then\n      inc(result);\n  end;\nend;\n\nfunction TBGRASVG.GetPreserveAspectRatio: TSVGPreserveAspectRatio;\nbegin\n  result := Units.PreserveAspectRatio;\nend;\n\nfunction TBGRASVG.GetStretchPresentationMatrix(AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; w, h: single; ASlice: boolean): TAffineMatrix;\nvar\n  rF: TRectF;\nbegin\n  with GetViewBoxAlignment(taLeftJustify, tlTop, cuPixel) do\n    result := AffineMatrixTranslation(x, y);\n  rF := GetStretchRectF(AHorizAlign, AVertAlign, 0, 0, w, h, ASlice);\n  with Units.ViewBox do\n  begin\n    if size.x > 0 then result := AffineMatrixScale(rF.Width/size.x, 1) * result;\n    if size.y > 0 then result := AffineMatrixScale(1, rF.Height/size.y) * result;\n  end;\n  result := AffineMatrixTranslation(rF.Left, rF.Top) * result;\nend;\n\nfunction TBGRASVG.GetStretchPresentationMatrix(AUnit: TCSSUnit): TAffineMatrix;\nvar\n  w, h: TFloatWithCSSUnit;\nbegin\n  w := ComputedWidth;\n  h := ComputedHeight;\n  result := GetStretchPresentationMatrix(Units.ConvertWidth(w, AUnit).value,\n    Units.ConvertHeight(h, AUnit).value, true);\nend;\n\nfunction TBGRASVG.GetUnits: TSVGUnits;\nbegin\n  result := TSVGUnits(FUnits);\nend;\n\nfunction TBGRASVG.GetUTF8String: utf8string;\nvar str: TMemoryStream;\nbegin\n  str := TMemoryStream.Create;\n  SaveToStream(str);\n  setlength(result, str.Size);\n  str.Position := 0;\n  str.Read(result[1], length(result));\n  str.Free;\nend;\n\nfunction TBGRASVG.GetViewBox: TSVGViewBox;\nbegin\n  result := Units.ViewBox;\nend;\n\nfunction TBGRASVG.GetViewBox(AUnit: TCSSUnit): TSVGViewBox;\nbegin\n  GetViewBoxIndirect(AUnit,result);\nend;\n\nprocedure TBGRASVG.GetViewBoxIndirect(AUnit: TCSSUnit; out AViewBox: TSVGViewBox);\nbegin\n  with Units.ViewBox do\n  begin\n    AViewBox.min := FUnits.ConvertCoord(min,cuCustom,AUnit);\n    AViewBox.size := FUnits.ConvertCoord(size,cuCustom,AUnit);\n  end;\nend;\n\nfunction TBGRASVG.GetViewMin(AUnit: TCSSUnit): TPointF;\nvar\n  vb: TSVGViewBox;\nbegin\n  GetViewBoxIndirect(AUnit,vb);\n  result:= vb.min;\nend;\n\nfunction TBGRASVG.GetViewSize(AUnit: TCSSUnit): TPointF;\nvar\n  vb: TSVGViewBox;\nbegin\n  GetViewBoxIndirect(AUnit,vb);\n  result:= vb.size;\nend;\n\nfunction TBGRASVG.GetVisualWidthAsPixel: single;\nbegin\n  result := Units.ConvertWidth(VisualWidth, cuPixel).value;\nend;\n\nfunction TBGRASVG.GetWidth: TFloatWithCSSUnit;\nbegin\n  result := TCSSUnitConverter.parseValue(Attribute['width'],FloatWithCSSUnit(Units.ViewBox.size.x,cuCustom));\n  if result.CSSUnit = cuCustom then result.CSSUnit := cuPixel;\nend;\n\nfunction TBGRASVG.GetWidthAsCm: single;\nbegin\n  result := FUnits.ConvertWidth(ComputedWidth,cuCentimeter).value;\nend;\n\nfunction TBGRASVG.GetWidthAsInch: single;\nbegin\n  result := FUnits.ConvertWidth(ComputedWidth,cuInch).value;\nend;\n\nfunction TBGRASVG.GetWidthAsPixel: single;\nbegin\n  result := FUnits.ConvertWidth(ComputedWidth,cuPixel).value;\nend;\n\nfunction TBGRASVG.GetZoomable: boolean;\nbegin\n  result := AttributeDef['zoomAndPan','magnify']<>'disable';\nend;\n\nprocedure TBGRASVG.SetColor(AValue: TBGRAPixel);\nbegin\n  SetAttribute('color', LowerCase(BGRAToStr(AValue, CSSColors, 0, true, true)));\n  RemoveStyle('color');\nend;\n\nprocedure TBGRASVG.SetContainerHeight(AValue: TFloatWithCSSUnit);\nbegin\n  if AValue.CSSUnit = cuPercent then raise exception.Create('Container width cannot be expressed as percentage');\n  Units.ContainerHeight := AValue;\nend;\n\nprocedure TBGRASVG.SetContainerHeightAsPixel(AValue: single);\nbegin\n  ContainerHeight := FloatWithCSSUnit(AValue, cuPixel);\nend;\n\nprocedure TBGRASVG.SetContainerWidth(AValue: TFloatWithCSSUnit);\nbegin\n  if AValue.CSSUnit = cuPercent then raise exception.Create('Container width cannot be expressed as percentage');\n  Units.ContainerWidth := AValue;\nend;\n\nprocedure TBGRASVG.SetContainerWidthAsPixel(AValue: single);\nbegin\n  ContainerWidth := FloatWithCSSUnit(AValue, cuPixel);\nend;\n\nprocedure TBGRASVG.SetAttribute(AName: string; AValue: string);\nbegin\n  AName := trim(AName);\n  if compareText(AName,'viewBox')= 0 then AName := 'viewBox' else\n  if compareText(AName,'width')=0 then AName := 'width' else\n  if compareText(AName,'height')=0 then AName := 'height';\n  inherited SetAttribute(AName,AValue);\n  if (AName = 'viewBox') or (AName = 'width') or (AName = 'height') then\n    Units.Recompute;\nend;\n\nprocedure TBGRASVG.SetDefaultDpi(AValue: single);\nbegin\n  if FDefaultDpi=AValue then Exit;\n  FDefaultDpi:=AValue;\n  Units.Recompute;\nend;\n\nprocedure TBGRASVG.SetFontSize(AValue: TFloatWithCSSUnit);\nbegin\n  SetVerticalAttributeWithUnit('font-size', AValue);\n  RemoveStyle('font-size');\nend;\n\nprocedure TBGRASVG.SetHeight(AValue: TFloatWithCSSUnit);\nbegin\n  if AValue.CSSUnit = cuPixel then AValue.CSSUnit := cuCustom;\n  Attribute['height'] := TCSSUnitConverter.formatValue(AValue);\n  Units.Recompute;\nend;\n\nprocedure TBGRASVG.SetHeightAsCm(AValue: single);\nbegin\n  Height := FloatWithCSSUnit(AValue,cuCentimeter);\nend;\n\nprocedure TBGRASVG.SetHeightAsInch(AValue: single);\nbegin\n  Height := FloatWithCSSUnit(AValue,cuInch);\nend;\n\nprocedure TBGRASVG.SetHeightAsPixel(AValue: single);\nbegin\n  Height := FloatWithCSSUnit(AValue,cuPixel);\nend;\n\nprocedure TBGRASVG.SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\nbegin\n  Attribute['preserveAspectRatio'] := AValue.ToString;\n  Units.Recompute;\nend;\n\nprocedure TBGRASVG.SetUTF8String(AValue: utf8string);\nvar str: TMemoryStream;\nbegin\n  str:= TMemoryStream.Create;\n  str.Write(AValue[1],length(AValue));\n  str.Position:= 0;\n  LoadFromStream(str);\n  str.Free;\nend;\n\n{$PUSH}{$OPTIMIZATION OFF} //avoids Internal error 2012090607\nprocedure TBGRASVG.SetViewBox(AValue: TSVGViewBox);\nbegin\n  Units.ViewBox := AValue;\nend;\n{$POP}\n\nprocedure TBGRASVG.SetWidth(AValue: TFloatWithCSSUnit);\nbegin\n  if AValue.CSSUnit = cuPixel then AValue.CSSUnit := cuCustom;\n  Attribute['width'] := TCSSUnitConverter.formatValue(AValue);\n  Units.Recompute;\nend;\n\nprocedure TBGRASVG.SetWidthAsCm(AValue: single);\nbegin\n  Width := FloatWithCSSUnit(AValue,cuCentimeter);\nend;\n\nprocedure TBGRASVG.SetWidthAsInch(AValue: single);\nbegin\n  Width := FloatWithCSSUnit(AValue,cuInch);\nend;\n\nprocedure TBGRASVG.SetWidthAsPixel(AValue: single);\nbegin\n  Width := FloatWithCSSUnit(AValue,cuPixel);\nend;\n\nprocedure TBGRASVG.SetZoomable(AValue: boolean);\nbegin\n  if AValue then\n    Attribute['zoomAndPan'] := 'magnify'\n  else\n    Attribute['zoomAndPan'] := 'disable';\nend;\n\nprocedure TBGRASVG.Init(ACreateEmpty: boolean);\nbegin\n  FDefaultDpi := 96; //web browser default\n  if ACreateEmpty then\n  begin\n    FXml := TXMLDocument.Create;\n    FDomElem := FXml.CreateElement('svg');\n    FUnits := TSVGUnits.Create(FDomElem,@FDefaultDpi);\n    Units.OnRecompute:= @UnitsRecompute;\n    FDataLink := TSVGDataLink.Create(nil);\n    FContent := TSVGContent.Create(FDomElem,FUnits,FDataLink);\n    FXml.AppendChild(FDomElem);\n  end;\nend;\n\nfunction TBGRASVG.GetViewBoxAlignment(AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; AUnit: TCSSUnit): TPointF;\nvar vb: TSVGViewBox;\nbegin\n  GetViewBoxIndirect(AUnit, vb);\n  with vb do\n  begin\n    case AHorizAlign of\n      taCenter: result.x := -(min.x+size.x*0.5);\n      taRightJustify: result.x := -(min.x+size.x);\n    else\n      {taLeftJustify:} result.x := -min.x;\n    end;\n    case AVertAlign of\n      tlCenter: result.y := -(min.y+size.y*0.5);\n      tlBottom: result.y := -(min.y+size.y);\n    else\n      {tlTop:} result.y := -min.y;\n    end;\n  end;\nend;\n\nfunction TBGRASVG.GetViewBoxScale: TPointF;\nvar\n  svs: TSVGSize;\n  vb: TSVGViewBox;\nbegin\n  svs := Units.StretchedViewSize;\n  vb := ViewBox;\n  if vb.size.x <> 0 then\n    result.x := Units.ConvertWidth(svs.width, cuPixel).value / vb.size.x\n    else result.x := 1;\n  if vb.size.y <> 0 then\n    result.y := Units.ConvertHeight(svs.Height, cuPixel).value / vb.size.y\n    else result.y := 1;\nend;\n\nprocedure TBGRASVG.UnitsRecompute(Sender: TObject);\nbegin\n  FContent.Recompute;\nend;\n\nconstructor TBGRASVG.Create;\nbegin\n  Init(True);\nend;\n\nconstructor TBGRASVG.Create(AWidth, AHeight: single; AUnit: TCSSUnit);\nbegin\n  Init(True);\n  Width := FloatWithCSSUnit(AWidth,AUnit);\n  Height := FloatWithCSSUnit(AHeight,AUnit);\nend;\n\nconstructor TBGRASVG.Create(AFilenameUTF8: string);\nbegin\n  Init(False);\n  LoadFromFile(AFilenameUTF8);\nend;\n\nconstructor TBGRASVG.Create(AStream: TStream);\nbegin\n  Init(False);\n  LoadFromStream(AStream);\nend;\n\nconstructor TBGRASVG.CreateFromString(AUTF8String: string);\nbegin\n  Init(False);\n  AsUTF8String:= AUTF8String;\nend;\n\ndestructor TBGRASVG.Destroy;\nbegin\n  FreeAndNil(FContent);\n  FreeAndNil(FDataLink);\n  FreeAndNil(FUnits);\n  FDomElem:= nil;\n  FreeAndNil(FXml);\n  inherited Destroy;\nend;\n\nfunction TBGRASVG.Duplicate: TBGRASVG;\nvar\n  stream: TMemoryStream;\n  svg: TBGRASVG;\nbegin\n  stream := TMemoryStream.Create;\n  svg := nil;\n  try\n    SaveToStream(stream);\n    stream.Position:= 0;\n    svg := TBGRASVG.Create;\n    svg.DefaultDpi:= DefaultDpi;\n    svg.LoadFromStream(stream);\n    result := svg;\n    svg := nil;\n  finally\n    svg.Free;\n    stream.Free\n  end;\nend;\n\nprocedure TBGRASVG.CropToViewBox(AScale: single);\nvar w,h: single;\nbegin\n  w:= VisualWidthAsPixel * AScale;\n  h:= VisualHeightAsPixel * AScale;\n  ViewBox := Units.ViewBox;   // make sure viewbox is explicit\n  WidthAsPixel:= w;\n  HeightAsPixel:= h;\nend;\n\nprocedure TBGRASVG.LoadFromFile(AFilenameUTF8: string);\nvar stream: TStream;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead or fmShareDenyWrite);\n  try\n    LoadFromStream(stream, UTF8ToUTF16(FilenameToURI(AFilenameUTF8)));\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRASVG.LoadFromStream(AStream: TStream; AURI: UnicodeString);\nvar xml: TXMLDocument;\n  root: TDOMNode;\n  byteOrderMark: packed array[1..3] of byte;\n  startPos: int64;\n  parser: TDOMParser;\n  source: TXMLInputSource;\nbegin\n  //skip utf8 byte order mark\n  startPos:= AStream.Position;\n  if AStream.Read({%H-}byteOrderMark,sizeof(byteOrderMark)) = 3 then\n  begin\n    if (byteOrderMark[1] = $ef) and (byteOrderMark[2] = $bb) and (byteOrderMark[3] = $bf) then\n      inc(startPos, 3);\n  end;\n  AStream.Position:= startPos;\n  source := TXMLInputSource.Create(AStream);\n  source.BaseURI:= AURI;\n  parser := TDOMParser.Create;\n  parser.Options.PreserveWhitespace:= true;\n  try\n    parser.Parse(source, xml);\n  finally\n    parser.Free;\n    source.Free;\n  end;\n  root := xml.FirstChild;\n  while (root <> nil) and not (root is TDOMElement) do root := root.NextSibling;\n  if root = nil then\n  begin\n    xml.Free;\n    raise exception.Create('Root node not found');\n  end;\n  FreeAndNil(FContent);\n  FreeAndNil(FDataLink);\n  FreeAndNil(FUnits);\n  FreeAndNil(FXml);\n  FXml := xml;\n  FDomElem := root as TDOMElement;\n  FUnits := TSVGUnits.Create(FDomElem,@FDefaultDpi);\n  Units.OnRecompute:= @UnitsRecompute;\n  FDataLink := TSVGDataLink.Create(nil);\n  FContent := TSVGContent.Create(FDomElem,FUnits,FDataLink);\nend;\n\nprocedure TBGRASVG.LoadFromResource(AFilename: string);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    LoadFromStream(stream);\n  finally\n    stream.Free;\n  end;\nend;\n\nprocedure TBGRASVG.SaveToFile(AFilenameUTF8: string);\nvar stream: TFileStreamUTF8;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8,fmCreate);\n  try\n    SaveToStream(stream);\n  finally\n    stream.free;\n  end;\nend;\n\nprocedure TBGRASVG.SaveToStream(AStream: TStream);\nbegin\n  if Attribute['xmlns'] = '' then Attribute['xmlns'] := SvgNamespace;\n  if (NamespaceURI['xlink'] = '') and NeedNamespace('xlink') then\n    NamespaceURI['xlink'] := 'http://www.w3.org/1999/xlink';\n  WriteXMLFile(FXml, AStream);\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; x, y: single; AUnit: TCSSUnit; AScale: boolean);\nvar prevMatrix: TAffineMatrix;\nbegin\n  prevMatrix := ACanvas2d.matrix;\n  ACanvas2d.translate(x,y);\n  if AScale then\n    with GetViewBoxScale do ACanvas2d.scale(x, y);\n  with GetViewBoxAlignment(AHorizAlign,AVertAlign,cuPixel) do ACanvas2d.translate(x,y);\n  Draw(ACanvas2d, 0,0, AUnit);\n  ACanvas2d.matrix := prevMatrix;\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; x, y: single; destDpi: single; AScale: boolean);\nbegin\n  Draw(ACanvas2d, AHorizAlign,AVertAlign, x,y, PointF(destDpi,destDpi), AScale);\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; x, y: single; destDpi: TPointF; AScale: boolean);\nbegin\n  ACanvas2d.save;\n  ACanvas2d.translate(x,y);\n  ACanvas2d.scale(destDpi.x/Units.DpiX,destDpi.y/Units.DpiY);\n  if AScale then\n    with GetViewBoxScale do ACanvas2d.scale(x, y);\n  with GetViewBoxAlignment(AHorizAlign,AVertAlign, cuPixel) do ACanvas2d.translate(x,y);\n  Draw(ACanvas2d, 0,0, cuPixel);\n  ACanvas2d.restore;\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; x, y: single; AUnit: TCSSUnit);\nvar prevLinearBlend: boolean;\n  prevFontSize: TFloatWithCSSUnit;\nbegin\n  prevLinearBlend:= ACanvas2d.linearBlend;\n  acanvas2d.linearBlend := true;\n  ACanvas2d.save;\n  ACanvas2d.translate(x,y);\n  ACanvas2d.strokeMatrix := ACanvas2d.matrix;\n  prevFontSize := EnterFontSize(true);\n  Content.Draw(ACanvas2d,AUnit);\n  ExitFontSize(prevFontSize);\n  ACanvas2d.restore;\n  ACanvas2d.linearBlend := prevLinearBlend;\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; x, y: single; destDpi: single);\nbegin\n  Draw(ACanvas2d, x,y, PointF(destDpi,destDpi));\nend;\n\nprocedure TBGRASVG.Draw(ACanvas2d: TBGRACanvas2D; x, y: single; destDpi: TPointF);\nbegin\n  ACanvas2d.save;\n  ACanvas2d.translate(x,y);\n  ACanvas2d.scale(destDpi.x/Units.DpiX,destDpi.y/Units.DpiY);\n  Draw(ACanvas2d, 0,0, cuPixel);\n  ACanvas2d.restore;\nend;\n\nprocedure TBGRASVG.StretchDraw(ACanvas2d: TBGRACanvas2D; x, y, w, h: single; useSvgAspectRatio: boolean);\nvar vb: TSVGViewBox;\nbegin\n  if useSvgAspectRatio then\n  begin\n    with preserveAspectRatio do\n      StretchDraw(ACanvas2d, HorizAlign, VertAlign, x,y,w,h, Slice);\n    exit;\n  end;\n  ACanvas2d.save;\n  ACanvas2d.translate(x,y);\n  ACanvas2d.strokeResetTransform;\n  GetViewBoxIndirect(cuPixel,vb);\n  with vb do\n  begin\n    if size.x <> 0 then\n      ACanvas2d.scale(w/size.x,1);\n    if size.y <> 0 then\n      ACanvas2d.scale(1,h/size.y);\n    ACanvas2d.translate(-min.x,-min.y);\n  end;\n  Draw(ACanvas2d, 0,0, cuPixel);\n  ACanvas2d.restore;\nend;\n\nprocedure TBGRASVG.StretchDraw(ACanvas2d: TBGRACanvas2D; r: TRectF; useSvgAspectRatio: boolean);\nbegin\n  StretchDraw(ACanvas2d, r.Left, r.Top, r.Width, r.Height, useSvgAspectRatio);\nend;\n\nprocedure TBGRASVG.StretchDraw(ACanvas2d: TBGRACanvas2D; x, y: single; AUnit: TCSSUnit);\nvar\n  w, h: TFloatWithCSSUnit;\nbegin\n  w := ComputedWidth;\n  h := ComputedHeight;\n  StretchDraw(ACanvas2d, x, y, Units.ConvertWidth(w, AUnit).value,\n    Units.ConvertHeight(h, AUnit).value, true);\nend;\n\nprocedure TBGRASVG.StretchDraw(ACanvas2d: TBGRACanvas2D;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; x, y, w, h: single;\n  ASlice: boolean);\nvar r: TRectF;\nbegin\n  r := GetStretchRectF(AHorizAlign,AVertAlign, x, y, w, h, ASlice);\n  StretchDraw(ACanvas2d, r);\nend;\n\nprocedure TBGRASVG.StretchDraw(ACanvas2d: TBGRACanvas2D;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; r: TRectF; ASlice: boolean);\nbegin\n  StretchDraw(ACanvas2d, AHorizAlign, AVertAlign, r.Left, r.Top, r.Width, r.Height, ASlice);\nend;\n\nfunction TBGRASVG.GetStretchRectF(x,y,w,h: single): TRectF;\nbegin\n  result := Units.GetStretchRectF(RectWithSizeF(x,y,w,h), preserveAspectRatio);\nend;\n\nfunction TBGRASVG.GetPresentationMatrix(AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; AUnit: TCSSUnit; AScale: boolean): TAffineMatrix;\nbegin\n  with GetViewBoxAlignment(AHorizAlign, AVertAlign, AUnit) do\n    result := AffineMatrixTranslation(x, y);\n  if AScale then\n    with GetViewBoxScale do\n      result := AffineMatrixScale(x, y) * result;\nend;\n\nfunction TBGRASVG.GetStretchPresentationMatrix(w, h: single;\n  useSvgAspectRatio: boolean): TAffineMatrix;\nvar\n  rF: TRectF;\nbegin\n  if not useSvgAspectRatio then\n  begin\n    with GetViewBoxAlignment(taLeftJustify, tlTop, cuPixel) do\n      result := AffineMatrixTranslation(x, y);\n    with Units.ViewBox do\n    begin\n      if size.x > 0 then result := AffineMatrixScale(w/size.x, 1) * result;\n      if size.y > 0 then result := AffineMatrixScale(1, h/size.y) * result;\n    end;\n  end else\n  begin\n    with GetViewBoxAlignment(taLeftJustify, tlTop, cuPixel) do\n      result := AffineMatrixTranslation(x, y);\n    rF := GetStretchRectF(0,0,w,h);\n    with Units.ViewBox do\n    begin\n      if size.x > 0 then result := AffineMatrixScale(rF.Width/size.x, 1) * result;\n      if size.y > 0 then result := AffineMatrixScale(1, rF.Height/size.y) * result;\n    end;\n    result := AffineMatrixTranslation(rF.Left, rF.Top) * result;\n  end;\nend;\n\nfunction TBGRASVG.GetStretchRectF(AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; x, y, w, h: single; ASlice: boolean): TRectF;\nvar\n  aspect: TSVGPreserveAspectRatio;\nbegin\n  aspect.HorizAlign:= AHorizAlign;\n  aspect.VertAlign:= AVertAlign;\n  aspect.Preserve:= true;\n  aspect.Slice:= ASlice;\n  result := Units.GetStretchRectF(RectWithSizeF(x, y, w, h), aspect);\nend;\n\nfunction TBGRASVG.FindElementById(AID: string): TSVGElement;\nbegin\n  result := DataLink.FindElementById(AId, TSVGElement);\nend;\n\nfunction TBGRASVG.FindElementById(AID: string; AClass: TSVGFactory): TSVGElement;\nbegin\n  result := DataLink.FindElementById(AId, AClass);\nend;\n\nprocedure TBGRASVG.IterateElements(ACallback: TIterateElementCallback;\n  AData: pointer; ARecursive: boolean);\nbegin\n  Content.IterateElements(ACallback, AData, ARecursive);\nend;\n\nprocedure TBGRASVG.ConvertToUnit(AUnit: TCSSUnit);\nvar\n  prevFontSize: TFloatWithCSSUnit;\nbegin\n  prevFontSize := Units.CurrentFontEmHeight;\n  Units.CurrentFontEmHeight := Units.RootFontEmHeight;\n  if HasAttribute('font-size') then\n    SetVerticalAttributeWithUnit('font-size', Units.ConvertHeight(GetVerticalAttributeWithUnit('font-size'), AUnit));\n  Units.CurrentFontEmHeight := prevFontSize;\n\n  prevFontSize := EnterFontSize(true);\n  inherited ConvertToUnit(AUnit);\n  Content.ConvertToUnit(AUnit);\n  ExitFontSize(prevFontSize);\nend;\n\ninitialization\n  BGRARegisterImageReader(ifSvg, TFPReaderSVG, False, FPCTypeName, Extension);\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrasvgoriginal.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Storage of SVG as an original in a layered bitmap }\nunit BGRASVGOriginal;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRABitmap, BGRASVG, BGRATransform,\n  BGRALayerOriginal, BGRAUnits, BGRALayers;\n\ntype\n  TBGRALayerSVGOriginal = class;\n\n  { Difference of SVG original }\n  TBGRASVGOriginalDiff = class(TBGRAOriginalDiff)\n  protected\n    FContentVersionBefore,FContentVersionAfter: integer;\n    FSvgStreamBefore,FSvgStreamAfter: TMemoryStream;\n    FDpiBefore, FDpiAfter: single;\n  public\n    constructor Create(AFromOriginal: TBGRALayerSVGOriginal);\n    procedure ComputeDiff(AToOriginal: TBGRALayerSVGOriginal);\n    procedure Apply(AOriginal: TBGRALayerCustomOriginal); override;\n    procedure Unapply(AOriginal: TBGRALayerCustomOriginal); override;\n    function CanAppend(ADiff: TBGRAOriginalDiff): boolean; override;\n    procedure Append(ADiff: TBGRAOriginalDiff); override;\n    function IsIdentity: boolean; override;\n    destructor Destroy; override;\n  end;\n\n  { Original for an SVG layer in a layered image }\n  TBGRALayerSVGOriginal = class(TBGRALayerCustomOriginal)\n  private\n    function GetDPI: single;\n    function GetSvgHeight: single;\n    function GetSvgWidth: single;\n    procedure SetDPI(AValue: single);\n  protected\n    FSVG: TBGRASVG;\n    FPresentationMatrix: TAffineMatrix;\n    FDiff: TBGRASVGOriginalDiff;\n    FContentVersion: integer;\n    procedure BeginUpdate;\n    procedure EndUpdate;\n    procedure ComputePresentation(AContainerWidth, AContainerHeight: integer; AScaleDPI: single);\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n    procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;\n    function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix): TRect; override;\n    procedure LoadFromStorage(AStorage: TBGRACustomOriginalStorage); override;\n    procedure SaveToStorage(AStorage: TBGRACustomOriginalStorage); override;\n    procedure LoadFromStream(AStream: TStream); override;\n    procedure SaveSVGToStream(AStream: TStream);\n    procedure SetSVG(ASVG: TBGRASVG; AContainerWidth: integer = 640;\n      AContainerHeight: integer = 480; AScaleDPI: single = 1);\n    procedure LoadSVGFromStream(AStream: TStream; AContainerWidth: integer = 640;\n      AContainerHeight: integer = 480; AScaleDPI: single = 1);\n    function GetSVGCopy: TBGRASVG;\n    class function StorageClassName: RawByteString; override;\n    class function CanConvertToSVG: boolean; override;\n    function ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TBGRASVG; override;\n    property Width: single read GetSvgWidth;\n    property Height: single read GetSvgHeight;\n    property DPI: single read GetDPI write SetDPI;\n    property PresentationMatrix: TAffineMatrix read FPresentationMatrix;\n  end;\n\n  { @abstract(Layered SVG.)\n\n    A layered SVG is a regular SVG divided in groups representing layers. }\n  TBGRALayeredSVG = class(TBGRALayeredBitmap)\n    protected\n      function GetMimeType: string; override;\n      procedure InternalLoadFromStream(AStream: TStream);\n      procedure InternalSaveToStream(AStream: TStream);\n    public\n      ContainerWidth, ContainerHeight, DefaultSvgDPI, DPI: integer;\n      DefaultLayerName: string;\n      constructor Create; overload; override;\n      constructor Create(AWidth, AHeight: integer); overload; override;\n      procedure LoadFromStream(AStream: TStream); override;\n      procedure LoadFromFile(const filenameUTF8: string); override;\n      procedure SaveToStream(AStream: TStream); override;\n      procedure SaveToFile(const filenameUTF8: string); override;\n  end;\n\nimplementation\n\nuses BGRACanvas2D, BGRAMemDirectory, BGRAUTF8, BGRASVGShapes, math, BGRASVGType,\n  BGRAVectorize, DOM;\n\n{ TBGRASVGOriginalDiff }\n\nconstructor TBGRASVGOriginalDiff.Create(AFromOriginal: TBGRALayerSVGOriginal);\nbegin\n  if Assigned(AFromOriginal.FSVG) then\n  begin\n    FSvgStreamBefore := TMemoryStream.Create;\n    AFromOriginal.FSVG.SaveToStream(FSvgStreamBefore);\n  end;\n  FContentVersionBefore:= AFromOriginal.FContentVersion;\n  FDpiBefore:= AFromOriginal.DPI;\nend;\n\nprocedure TBGRASVGOriginalDiff.ComputeDiff(AToOriginal: TBGRALayerSVGOriginal);\nbegin\n  FreeAndNil(FSvgStreamAfter);\n  if Assigned(AToOriginal.FSVG) then\n  begin\n    FSvgStreamAfter := TMemoryStream.Create;\n    AToOriginal.FSVG.SaveToStream(FSvgStreamAfter);\n  end;\n  FContentVersionAfter:= AToOriginal.FContentVersion;\n  FDpiAfter:= AToOriginal.DPI;\nend;\n\nprocedure TBGRASVGOriginalDiff.Apply(AOriginal: TBGRALayerCustomOriginal);\nvar\n  orig: TBGRALayerSVGOriginal;\nbegin\n  orig := AOriginal as TBGRALayerSVGOriginal;\n  if Assigned(FSvgStreamAfter) then\n  begin\n    FSvgStreamAfter.Position:= 0;\n    orig.FSVG.LoadFromStream(FSvgStreamAfter);\n  end else\n    orig.FSVG.Content.Clear;\n  orig.FContentVersion := FContentVersionAfter;\nend;\n\nprocedure TBGRASVGOriginalDiff.Unapply(AOriginal: TBGRALayerCustomOriginal);\nvar\n  orig: TBGRALayerSVGOriginal;\nbegin\n  orig := AOriginal as TBGRALayerSVGOriginal;\n  if Assigned(FSvgStreamBefore) then\n  begin\n    FSvgStreamBefore.Position:= 0;\n    orig.FSVG.LoadFromStream(FSvgStreamBefore);\n  end else\n    orig.FSVG.Content.Clear;\n  orig.FContentVersion := FContentVersionBefore;\nend;\n\nfunction TBGRASVGOriginalDiff.CanAppend(ADiff: TBGRAOriginalDiff): boolean;\nbegin\n  result := (ADiff is TBGRASVGOriginalDiff) and\n    (TBGRASVGOriginalDiff(ADiff).FContentVersionAfter >= FContentVersionAfter);\nend;\n\nprocedure TBGRASVGOriginalDiff.Append(ADiff: TBGRAOriginalDiff);\nvar\n  next: TBGRASVGOriginalDiff;\nbegin\n  next := ADiff as TBGRASVGOriginalDiff;\n  if next.FContentVersionAfter < FContentVersionAfter then\n    raise exception.Create('Cannot append diff made before this one.');\n  FDpiAfter:= next.FDpiAfter;\n  FreeAndNil(FSvgStreamAfter);\n  if Assigned(next.FSvgStreamAfter) then\n  begin\n    FSvgStreamAfter := TMemoryStream.Create;\n    next.FSvgStreamAfter.Position:= 0;\n    FSvgStreamAfter.CopyFrom(next.FSvgStreamAfter, next.FSvgStreamAfter.Size);\n  end;\n  FContentVersionAfter:= next.FContentVersionAfter;\nend;\n\nfunction TBGRASVGOriginalDiff.IsIdentity: boolean;\nbegin\n  result := (FDpiBefore = FDpiAfter) and\n    ( ((FSvgStreamBefore=nil) and (FSvgStreamAfter=nil)) or\n      (Assigned(FSvgStreamBefore) and Assigned(FSvgStreamAfter) and\n       (FSvgStreamBefore.Size = FSvgStreamAfter.Size) and\n       CompareMem(FSvgStreamBefore.Memory,FSvgStreamAfter.Memory,FSvgStreamBefore.Size)) );\nend;\n\ndestructor TBGRASVGOriginalDiff.Destroy;\nbegin\n  FSvgStreamBefore.Free;\n  inherited Destroy;\nend;\n\n{ TBGRALayerSVGOriginal }\n\nfunction TBGRALayerSVGOriginal.GetDPI: single;\nbegin\n  result := FSVG.DefaultDpi;\nend;\n\nfunction TBGRALayerSVGOriginal.GetSvgHeight: single;\nbegin\n  result := FSVG.HeightAsPixel;\nend;\n\nfunction TBGRALayerSVGOriginal.GetSvgWidth: single;\nbegin\n  result := FSVG.WidthAsPixel;\nend;\n\nprocedure TBGRALayerSVGOriginal.SetDPI(AValue: single);\nbegin\n  BeginUpdate;\n  FSVG.DefaultDpi:= AValue;\n  EndUpdate;\nend;\n\nprocedure TBGRALayerSVGOriginal.BeginUpdate;\nbegin\n  if DiffExpected and (FDiff=nil) then\n    FDiff := TBGRASVGOriginalDiff.Create(self);\nend;\n\nprocedure TBGRALayerSVGOriginal.EndUpdate;\nbegin\n  if Assigned(FDiff) then FDiff.ComputeDiff(self);\n  NotifyChange(FDiff);\n  FDiff := nil;\nend;\n\nprocedure TBGRALayerSVGOriginal.ComputePresentation(AContainerWidth, AContainerHeight: integer;\n  AScaleDPI: single);\nvar\n  compWidth, compHeight: single;\nbegin\n  FSVG.Units.ContainerWidth := FloatWithCSSUnit(AContainerWidth / AScaleDPI, cuPixel);\n  FSVG.Units.ContainerHeight := FloatWithCSSUnit(AContainerHeight / AScaleDPI, cuPixel);\n  compWidth := FSVG.WidthAsPixel;\n  compHeight := FSVG.HeightAsPixel;\n  FSVG.WidthAsPixel := compWidth * AScaleDPI;\n  FSVG.HeightAsPixel := compHeight * AScaleDPI;\n  FPresentationMatrix := FSVG.GetStretchPresentationMatrix(cuPixel);\nend;\n\nconstructor TBGRALayerSVGOriginal.Create;\nbegin\n  inherited Create;\n  FSVG := TBGRASVG.Create;\n  FContentVersion := 0;\nend;\n\ndestructor TBGRALayerSVGOriginal.Destroy;\nbegin\n  FSVG.Free;\n  FDiff.Free;\n  inherited Destroy;\nend;\n\nprocedure TBGRALayerSVGOriginal.Render(ADest: TBGRABitmap;\n  AMatrix: TAffineMatrix; ADraft: boolean);\nvar\n  c2D: TBGRACanvas2D;\nbegin\n  if Assigned(FSVG) then\n  begin\n    c2D := TBGRACanvas2D.Create(ADest);\n    c2D.transform(AMatrix*FPresentationMatrix);\n    c2D.fontRenderer := TBGRAVectorizedFontRenderer.Create;\n    if ADraft then c2D.antialiasing := false;\n    FSVG.Draw(c2D, 0, 0, cuPixel);\n    c2D.Free;\n  end;\nend;\n\nfunction TBGRALayerSVGOriginal.GetRenderBounds(ADestRect: TRect;\n  AMatrix: TAffineMatrix): TRect;\nvar\n  aff: TAffineBox;\n  r: TRectF;\nbegin\n  if Assigned(FSVG) then\n  begin\n    with FSVG.ViewBox do\n      r := RectWithSizeF(min.x, min.y, size.x, size.y);\n    aff := AMatrix * FPresentationMatrix * TAffineBox.AffineBox(r);\n    result := aff.RectBounds;\n  end else\n    result := EmptyRect;\nend;\n\nprocedure TBGRALayerSVGOriginal.LoadFromStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar svgStream: TMemoryStream;\n  valDpi: Single;\nbegin\n  svgStream := TMemoryStream.Create;\n  try\n    if AStorage.ReadFile('content.svg', svgStream) then\n    begin\n      if not Assigned(FSVG) then FSVG := TBGRASVG.Create;\n      svgStream.Position:= 0;\n      FSVG.LoadFromStream(svgStream);\n    end else\n    begin\n      FreeAndNil(FSVG);\n      FSVG := TBGRASVG.Create;\n    end;\n    FPresentationMatrix := FSVG.GetStretchPresentationMatrix(cuPixel);\n    FContentVersion:= AStorage.Int['content-version'];\n  finally\n    svgStream.Free;\n  end;\n  valDpi := AStorage.Float['dpi'];\n  if valDpi <> EmptySingle then\n    FSVG.DefaultDpi:= valDpi;\nend;\n\nprocedure TBGRALayerSVGOriginal.SaveToStorage(\n  AStorage: TBGRACustomOriginalStorage);\nvar svgStream: TMemoryStream;\nbegin\n  if Assigned(FSVG) then\n  begin\n    if FContentVersion > AStorage.Int['content-version'] then\n    begin\n      svgStream := TMemoryStream.Create;\n      try\n        FSVG.SaveToStream(svgStream);\n        AStorage.WriteFile('content.svg', svgStream, true, true);\n        svgStream := nil;\n        AStorage.Int['content-version'] := FContentVersion;\n      finally\n        svgStream.Free;\n      end;\n    end;\n    AStorage.Float['dpi'] := FSVG.DefaultDpi;\n  end;\nend;\n\nprocedure TBGRALayerSVGOriginal.LoadFromStream(AStream: TStream);\nbegin\n  if TMemDirectory.CheckHeader(AStream) then\n    inherited LoadFromStream(AStream)\n  else\n    LoadSVGFromStream(AStream);\nend;\n\nprocedure TBGRALayerSVGOriginal.SaveSVGToStream(AStream: TStream);\nbegin\n  FSVG.SaveToStream(AStream);\nend;\n\nprocedure TBGRALayerSVGOriginal.SetSVG(ASVG: TBGRASVG; AContainerWidth: integer;\n      AContainerHeight: integer; AScaleDPI: single);\nbegin\n  BeginUpdate;\n  FSVG.Free;\n  FSVG := ASVG;\n  ComputePresentation(AContainerWidth, AContainerHeight, AScaleDPI);\n  Inc(FContentVersion);\n  EndUpdate;\nend;\n\nprocedure TBGRALayerSVGOriginal.LoadSVGFromStream(AStream: TStream; AContainerWidth: integer;\n      AContainerHeight: integer; AScaleDPI: single);\nbegin\n  BeginUpdate;\n  FSVG.LoadFromStream(AStream);\n  ComputePresentation(AContainerWidth, AContainerHeight, AScaleDPI);\n  Inc(FContentVersion);\n  EndUpdate;\nend;\n\nfunction TBGRALayerSVGOriginal.GetSVGCopy: TBGRASVG;\nbegin\n  result := FSVG.Duplicate;\nend;\n\nclass function TBGRALayerSVGOriginal.StorageClassName: RawByteString;\nbegin\n  result := 'svg';\nend;\n\nclass function TBGRALayerSVGOriginal.CanConvertToSVG: boolean;\nbegin\n  Result:= true;\nend;\n\nfunction TBGRALayerSVGOriginal.ConvertToSVG(const AMatrix: TAffineMatrix; out AOffset: TPoint): TBGRASVG;\nbegin\n  if not IsAffineMatrixIdentity(AMatrix) then\n    raise exception.Create('Matrix not valid for SVG original');\n  AOffset := Point(0,0);\n  Result:= GetSVGCopy;\nend;\n\n{ TBGRALayeredSVG }\n\nfunction TBGRALayeredSVG.GetMimeType: string;\nbegin\n  Result:= 'image/svg+xml';\nend;\n\nprocedure TBGRALayeredSVG.InternalLoadFromStream(AStream: TStream);\nvar\n  svg, svgLayer: TBGRASVG;\n  visualWidth, visualHeight: single;\n  svgOrig: TBGRALayerSVGOriginal;\n  idx, i, j: Integer;\n  layer: TSVGGroup;\n  prefix: String;\n  originalViewBox: TSVGViewBox;\n  m: TAffineMatrix;\nbegin\n  svg := TBGRASVG.Create;\n  try\n    svg.DefaultDpi := DefaultSvgDPI;\n    svg.LoadFromStream(AStream);\n    svg.Units.ContainerWidth := FloatWithCSSUnit(ContainerWidth / DPI * svg.DefaultDpi, cuPixel);\n    svg.Units.ContainerHeight := FloatWithCSSUnit(ContainerHeight / DPI * svg.DefaultDpi, cuPixel);\n    svg.CropToViewBox(DPI / svg.DefaultDpi);\n    visualWidth := svg.WidthAsPixel;\n    visualHeight := svg.HeightAsPixel;\n    Clear;\n    SetSize(floor(visualWidth + 0.95),floor(visualHeight + 0.95));\n    if svg.LayerCount > 0 then\n    begin\n      for i := 0 to svg.LayerCount-1 do\n      begin\n        layer := svg.Layer[i];\n        svgLayer := TBGRASVG.Create;\n        svgLayer.DefaultDpi:= svg.DefaultDpi;\n        svgLayer.WidthAsPixel := visualWidth;\n        svgLayer.HeightAsPixel := visualHeight;\n        for j := 0 to svg.NamespaceCount-1 do\n        begin\n          prefix := svg.NamespacePrefix[j];\n          svgLayer.NamespaceURI[prefix] := svg.NamespaceURI[prefix];\n        end;\n        try\n          svgLayer.ViewBox := svg.ViewBox;\n          if layer.DOMElement.hasAttribute('bgra:originalViewBox') then\n          begin\n            originalViewBox := TSVGViewBox.Parse( string(layer.DOMElement.GetAttribute('bgra:originalViewBox')) );\n            svgLayer.WidthAsPixel := originalViewBox.size.x;\n            svgLayer.HeightAsPixel := originalViewBox.size.y;\n            svgLayer.ViewBox := originalViewBox;\n            m := layer.matrix[cuPixel] * AffineMatrixTranslation(originalViewBox.min.x, originalViewBox.min.y);\n          end else\n            m := layer.matrix[cuPixel];\n          for j := 0 to svg.Content.IndexOfElement(layer)-1 do\n            if svg.Content.ElementObject[j] is TSVGDefine then\n              svgLayer.Content.CopyElement(svg.Content.ElementObject[j]);\n          for j := 0 to layer.Content.ElementCount-1 do\n            svgLayer.Content.CopyElement(layer.Content.ElementObject[j]);\n          svgOrig := TBGRALayerSVGOriginal.Create;\n          svgOrig.SetSVG(svgLayer);\n          svgLayer := nil;\n          idx := AddLayerFromOwnedOriginal(svgOrig);\n          LayerName[idx] := layer.Name;\n          LayerVisible[idx] := layer.Visible;\n          LayerOpacity[idx] := min(255,max(0,round(layer.opacity*255)));\n          BlendOperation[idx] := layer.mixBlendMode;\n          LayerOriginalMatrix[idx] := m;\n          RenderLayerFromOriginal(idx);\n        finally\n          svgLayer.Free;\n        end;\n      end;\n    end else\n    begin\n      svgOrig := TBGRALayerSVGOriginal.Create;\n      svgOrig.SetSVG(svg);\n      svg := nil;\n      idx := AddLayerFromOwnedOriginal(svgOrig);\n      LayerName[idx] := DefaultLayerName+'1';\n      RenderLayerFromOriginal(idx);\n    end;\n  finally\n    svg.Free;\n  end;\nend;\n\nprocedure TBGRALayeredSVG.InternalSaveToStream(AStream: TStream);\n\n  procedure StoreLayerBitmap(ABitmap: TBGRABitmap; AOwned: boolean; const AMatrix: TAffineMatrix;\n        ADestElem: TSVGCustomElement; AContent: TSVGContent);\n  var\n    img: TSVGImage;\n    ab: TAffineBox;\n    vb: TSVGViewBox;\n  begin\n    ab := AMatrix * TAffineBox.AffineBox(PointF(0, 0), PointF(ABitmap.Width, 0), PointF(0, ABitmap.Height));\n\n    img := AContent.AppendImage(AMatrix[1,3], AMatrix[2, 3], ABitmap.Width, ABitmap.Height, ABitmap, AOwned);\n    img.matrix[cuCustom] := AffineMatrixLinear(AMatrix);\n\n    if ADestElem is TSVGGroup then\n    with TSVGGroup(ADestElem) do\n    begin\n      with ab.RectBounds do\n      begin\n        vb.min := PointF(Left, Top);\n        vb.size := PointF(Width, Height);\n      end;\n      DOMElement.SetAttribute('xmlns:bgra', 'https://wiki.freepascal.org/LazPaint_SVG_format');\n      DOMElement.SetAttribute('bgra:originalViewBox', DOMString(vb.ToString));\n    end;\n  end;\n\n  procedure StoreLayer(ALayerIndex: integer; ASVG: TBGRASVG; ADestElem: TSVGCustomElement;\n        ADest: TSVGContent; out AMatrix: TAffineMatrix);\n  var\n    c: TBGRALayerOriginalAny;\n    bmp, part: TBGRABitmap;\n    layerSvg: TBGRASVG;\n    i: Integer;\n    prefix: String;\n    origViewBox: TSVGViewBox;\n    wantedOfs: TPoint;\n    r: TRect;\n  begin\n    AMatrix := AffineMatrixIdentity;\n    if LayerOriginalKnown[ALayerIndex] then\n      c:= LayerOriginalClass[ALayerIndex]\n      else c := nil;\n\n    if Assigned(c) and c.CanConvertToSVG then\n    begin\n      if LayerOriginal[ALayerIndex].IsInfiniteSurface then\n      begin\n        layerSvg := LayerOriginal[ALayerIndex].ConvertToSVG(LayerOriginalMatrix[ALayerIndex],\n          wantedOfs) as TBGRASVG;\n        layerSvg.WidthAsPixel:= Self.Width;\n        layerSvg.HeightAsPixel:= Self.Height;\n        AMatrix := AffineMatrixTranslation(wantedOfs.X, wantedOfs.Y);\n      end else\n      begin\n        layerSvg := LayerOriginal[ALayerIndex].ConvertToSVG(AffineMatrixIdentity,\n          wantedOfs) as TBGRASVG;\n        AMatrix:= LayerOriginalMatrix[ALayerIndex]\n          * AffineMatrixTranslation(wantedOfs.X, wantedOfs.Y)\n          * layerSvg.GetStretchPresentationMatrix(cuPixel);\n      end;\n      origViewBox := layerSvg.ViewBox;\n      try\n        layerSvg.ConvertToUnit(cuCustom);\n        if ADestElem is TSVGGroup then\n        with TSVGGroup(ADestElem) do\n        begin\n          DOMElement.SetAttribute('xmlns:bgra', 'https://wiki.freepascal.org/LazPaint_SVG_format');\n          DOMElement.SetAttribute('bgra:originalViewBox', DOMString(origViewBox.ToString));\n        end;\n        for i := 0 to layerSvg.Content.ElementCount-1 do\n          ADest.CopyElement(layerSvg.Content.ElementObject[i]);\n        for i := 0 to layerSvg.NamespaceCount-1 do\n        begin\n          prefix := layerSvg.NamespacePrefix[i];\n          ASVG.NamespaceURI[prefix] := layerSvg.NamespaceURI[prefix];\n        end;\n      finally\n        layerSvg.Free;\n      end;\n    end else\n    begin\n      r := LayerBitmap[ALayerIndex].GetImageBounds;\n      if (r.Left = 0) and (r.Top = 0) and (r.Width = LayerBitmap[ALayerIndex].Width) and\n        (r.Height = LayerBitmap[ALayerIndex].Height) then\n        StoreLayerBitmap(LayerBitmap[ALayerIndex], false,\n          AffineMatrixTranslation(LayerOffset[ALayerIndex].X, LayerOffset[ALayerIndex].Y), ADestElem, ADest)\n      else\n      begin\n        part := LayerBitmap[ALayerIndex].GetPart(r);\n        StoreLayerBitmap(part, true,\n          AffineMatrixTranslation(LayerOffset[ALayerIndex].X + r.Left,\n          LayerOffset[ALayerIndex].Y + r.Top), ADestElem, ADest)\n      end;\n    end;\n  end;\n\nvar\n  svg: TBGRASVG;\n  vb : TSVGViewBox;\n  i,j: Integer;\n  g: TSVGGroup;\n  m: TAffineMatrix;\n  identifiers, newIdentifiers: TStringList;\nbegin\n  svg := TBGRASVG.Create;\n  identifiers := nil;\n  newIdentifiers := nil;\n  try\n    svg.WidthAsPixel := Width;\n    svg.HeightAsPixel := Height;\n    vb.min := PointF(0, 0);\n    vb.size := PointF(Width, Height);\n    svg.ViewBox := vb;\n    if (NbLayers = 1) and (LayerOpacity[0] = 255) and LayerVisible[0] and\n       (LayerOriginalGuid[0] = GUID_NULL) then\n    begin\n      StoreLayer(0, svg, svg, svg.Content, m);\n    end else\n    begin\n      svg.NamespaceURI['inkscape'] := 'http://www.inkscape.org/namespaces/inkscape';\n      identifiers := TStringList.Create;\n      newIdentifiers := TStringList.Create;\n      for i := 0 to NbLayers-1 do\n      begin\n        g := svg.Content.AppendGroup;\n        g.IsLayer := true;\n        g.Name:= LayerName[i];\n        g.opacity:= LayerOpacity[i]/255;\n        g.Visible:= LayerVisible[i];\n        g.mixBlendMode:= BlendOperation[i];\n        StoreLayer(i, svg, g, g.Content, m);\n        g.matrix[cuPixel] := m;\n        identifiers.Clear;\n        g.ListIdentifiers(identifiers);\n        newIdentifiers.Clear;\n        for j := 0 to identifiers.Count-1 do\n          newIdentifiers.Add('layer'+inttostr(i+1)+'-'+identifiers[j]);\n        g.RenameIdentifiers(identifiers, newIdentifiers);\n      end;\n    end;\n    svg.SaveToStream(AStream);\n  finally\n    newIdentifiers.Free;\n    identifiers.Free;\n    svg.Free;\n  end;\nend;\n\nconstructor TBGRALayeredSVG.Create;\nbegin\n  inherited Create;\n  ContainerWidth:= 640;\n  ContainerHeight:= 480;\n  DefaultLayerName := 'Layer';\n  DPI := 96;\n  DefaultSvgDPI:= 96;\nend;\n\nconstructor TBGRALayeredSVG.Create(AWidth, AHeight: integer);\nbegin\n  inherited Create(AWidth, AHeight);\n  ContainerWidth:= 640;\n  ContainerHeight:= 480;\n  DefaultLayerName := 'Layer';\nend;\n\nprocedure TBGRALayeredSVG.LoadFromStream(AStream: TStream);\nbegin\n  OnLayeredBitmapLoadFromStreamStart;\n  try\n    InternalLoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n  end;\nend;\n\nprocedure TBGRALayeredSVG.LoadFromFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmOpenRead or fmShareDenyWrite);\n  OnLayeredBitmapLoadStart(filenameUTF8);\n  try\n    LoadFromStream(AStream);\n  finally\n    OnLayeredBitmapLoaded;\n    AStream.Free;\n  end;\nend;\n\nprocedure TBGRALayeredSVG.SaveToStream(AStream: TStream);\nbegin\n  OnLayeredBitmapSaveToStreamStart;\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n  end;\nend;\n\nprocedure TBGRALayeredSVG.SaveToFile(const filenameUTF8: string);\nvar AStream: TFileStreamUTF8;\nbegin\n  AStream := TFileStreamUTF8.Create(filenameUTF8,fmCreate);\n  OnLayeredBitmapSaveStart(filenameUTF8);\n  try\n    InternalSaveToStream(AStream);\n  finally\n    OnLayeredBitmapSaved;\n    AStream.Free;\n  end;\nend;\n\nprocedure RegisterLayeredSvgFormat;\nbegin\n  RegisterLayeredBitmapReader('svg', TBGRALayeredSVG);\n  RegisterLayeredBitmapWriter('svg', TBGRALayeredSVG);\nend;\n\ninitialization\n\n  RegisterLayerOriginal(TBGRALayerSVGOriginal);\n  RegisterLayeredSvgFormat;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrasvgshapes.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of various SVG shapes }\nunit BGRASVGShapes;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAUnits, DOM, BGRAPath, BGRABitmapTypes,\n  BGRACanvas2D, BGRASVGType, BGRAGraphics;\n\ntype\n  TSVGContent = class;\n\n  { Any SVG element containing subelements }\n  TSVGElementWithContent = class(TSVGElement)\n  protected\n    FContent: TSVGContent;\n    FSubDatalink: TSVGDataLink;\n    class function OwnDatalink: boolean; virtual;\n    procedure SetDatalink(AValue: TSVGDataLink); override;\n  public\n    constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n    constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n    procedure IterateElements(ACallback: TIterateElementCallback; AData: pointer;\n      ARecursive: boolean); override;\n    procedure ListIdentifiers(AResult: TStringList); override;\n    procedure RenameIdentifiers(AFrom, ATo: TStringList); override;\n    procedure ConvertToUnit(AUnit: TCSSUnit); override;\n    destructor Destroy; override;\n    procedure Recompute; override;\n    property Content: TSVGContent read FContent;\n  end;\n\n  TSVGGradient = class;\n  \n  { Any SVG element that is filled with a gradient }\n  TSVGElementWithGradient = class(TSVGElement)\n    private\n      FFillGradientElement, FStrokeGradientElement: TSVGGradient;\n      FGradientElementsDefined, FRegisteredToDatalink: boolean;\n      FFillCanvasGradient, FStrokeCanvasGradient: IBGRACanvasGradient2D;\n      FResettingGradient: boolean;\n      procedure DatalinkOnLink(Sender: TObject; AElement: TSVGElement;\n        ALink: boolean);\n      function EvaluatePercentage(fu: TFloatWithCSSUnit): single; { fu is a percentage of a number [0.0..1.0] }\n      function GetFillGradientElement: TSVGGradient;\n      function GetStrokeGradientElement: TSVGGradient;\n      procedure ResetGradients;\n      procedure FindGradientElements;\n    protected\n      procedure Initialize; override;\n      procedure AddStopElements(ASVGGradient: TSVGGradient; canvas: IBGRACanvasGradient2D);\n      function CreateCanvasLinearGradient(ACanvas2d: TBGRACanvas2D; ASVGGradient: TSVGGradient;\n        const origin: TPointF; const w,h: single; AUnit: TCSSUnit): IBGRACanvasGradient2D;\n      function CreateCanvasRadialGradient(ACanvas2d: TBGRACanvas2D; ASVGGradient: TSVGGradient;\n        const origin: TPointF; const w,h: single; AUnit: TCSSUnit): IBGRACanvasGradient2D;\n      procedure ApplyFillStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure ApplyStrokeStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure SetDatalink(AValue: TSVGDataLink); override;\n      procedure SetFill(AValue: string); override;\n      procedure SetStroke(AValue: string); override;\n    public\n      destructor Destroy; override;\n      procedure InitializeGradient(ACanvas2d: TBGRACanvas2D;\n                const origin: TPointF; const w,h: single; AUnit: TCSSUnit);\n      property FillGradientElement: TSVGGradient read GetFillGradientElement;\n      property StrokeGradientElement: TSVGGradient read GetStrokeGradientElement;\n  end;       \n\n  { SVG line object }\n  TSVGLine = class(TSVGElement)\n    private\n      function GetX1: TFloatWithCSSUnit;\n      function GetX2: TFloatWithCSSUnit;\n      function GetY1: TFloatWithCSSUnit;\n      function GetY2: TFloatWithCSSUnit;\n      procedure SetX1(AValue: TFloatWithCSSUnit);\n      procedure SetX2(AValue: TFloatWithCSSUnit);\n      procedure SetY1(AValue: TFloatWithCSSUnit);\n      procedure SetY2(AValue: TFloatWithCSSUnit);\n    protected\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property x1: TFloatWithCSSUnit read GetX1 write SetX1;\n      property y1: TFloatWithCSSUnit read GetY1 write SetY1;\n      property x2: TFloatWithCSSUnit read GetX2 write SetX2;\n      property y2: TFloatWithCSSUnit read GetY2 write SetY2;\n  end;\n\n  { SVG rectangle object }\n  TSVGRectangle = class(TSVGElementWithGradient)\n    private\n      function GetX: TFloatWithCSSUnit;\n      function GetY: TFloatWithCSSUnit;\n      function GetWidth: TFloatWithCSSUnit;\n      function GetHeight: TFloatWithCSSUnit;\n      function GetRX: TFloatWithCSSUnit;\n      function GetRY: TFloatWithCSSUnit;\n      procedure SetX(AValue: TFloatWithCSSUnit);\n      procedure SetY(AValue: TFloatWithCSSUnit);\n      procedure SetWidth(AValue: TFloatWithCSSUnit);\n      procedure SetHeight(AValue: TFloatWithCSSUnit);\n      procedure SetRX(AValue: TFloatWithCSSUnit);\n      procedure SetRY(AValue: TFloatWithCSSUnit);\n    protected\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property x: TFloatWithCSSUnit read GetX write SetX;\n      property y: TFloatWithCSSUnit read GetY write SetY;\n      property width: TFloatWithCSSUnit read GetWidth write SetWidth;\n      property height: TFloatWithCSSUnit read GetHeight write SetHeight;\n      property rx: TFloatWithCSSUnit read GetRX write SetRX;\n      property ry: TFloatWithCSSUnit read GetRY write SetRY;\n  end;\n\n  { SVG circle object }\n  TSVGCircle = class(TSVGElementWithGradient)\n    private\n      function GetCX: TFloatWithCSSUnit;\n      function GetCY: TFloatWithCSSUnit;\n      function GetR: TFloatWithCSSUnit;\n      procedure SetCX(AValue: TFloatWithCSSUnit);\n      procedure SetCY(AValue: TFloatWithCSSUnit);\n      procedure SetR(AValue: TFloatWithCSSUnit);\n    protected\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property cx: TFloatWithCSSUnit read GetCX write SetCX;\n      property cy: TFloatWithCSSUnit read GetCY write SetCY;\n      property r: TFloatWithCSSUnit read GetR write SetR;\n  end;\n\n  { SVG ellipse object }\n  TSVGEllipse = class(TSVGElementWithGradient)\n    private\n      function GetCX: TFloatWithCSSUnit;\n      function GetCY: TFloatWithCSSUnit;\n      function GetRX: TFloatWithCSSUnit;\n      function GetRY: TFloatWithCSSUnit;\n      procedure SetCX(AValue: TFloatWithCSSUnit);\n      procedure SetCY(AValue: TFloatWithCSSUnit);\n      procedure SetRX(AValue: TFloatWithCSSUnit);\n      procedure SetRY(AValue: TFloatWithCSSUnit);\n    protected\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property cx: TFloatWithCSSUnit read GetCX write SetCX;\n      property cy: TFloatWithCSSUnit read GetCY write SetCY;\n      property rx: TFloatWithCSSUnit read GetRX write SetRX;\n      property ry: TFloatWithCSSUnit read GetRY write SetRY;\n  end;\n\n  { SVG path object }\n  TSVGPath = class(TSVGElementWithGradient)\n    private\n      FPath: TBGRAPath;\n      FBoundingBox: TRectF;\n      FBoundingBoxComputed: boolean;\n      function GetBoundingBoxF: TRectF;\n      function GetPath: TBGRAPath;\n      function GetPathLength: TFloatWithCSSUnit;\n      function GetData: string;\n      procedure SetPathLength(AValue: TFloatWithCSSUnit);\n      procedure SetData(AValue: string);\n    protected\n      function GetDOMElement: TDOMElement; override;\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n      constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n      destructor Destroy; override;\n      property d: string read GetData write SetData;\n      property path: TBGRAPath read GetPath;\n      property pathLength: TFloatWithCSSUnit read GetPathLength write SetPathLength;\n      property boundingBoxF: TRectF read GetBoundingBoxF;\n  end;\n\n  { SVG polyline object }\n  TSVGPolypoints = class(TSVGElementWithGradient)\n    private\n      FBoundingBox: TRectF;\n      FBoundingBoxComputed: boolean;\n      function GetBoundingBoxF: TRectF;\n      function GetClosed: boolean;\n      function GetPoints: string;\n      function GetPointsF: ArrayOfTPointF;\n      procedure SetPoints(AValue: string);\n      procedure SetPointsF(AValue: ArrayOfTPointF);\n      procedure ComputeBoundingBox(APoints: ArrayOfTPointF);\n    protected\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; AClosed: boolean; ADataLink: TSVGDataLink); overload;\n      destructor Destroy; override;\n      property points: string read GetPoints write SetPoints;\n      property pointsF: ArrayOfTPointF read GetPointsF write SetPointsF;\n      property closed: boolean read GetClosed;\n      property boundingBoxF: TRectF read GetBoundingBoxF;\n  end;\n\n  { Any SVG text object or subelement }\n  TSVGTextElement = class(TSVGElementWithGradient);\n\n  { Any SVG text element with subelements }\n  TSVGTextElementWithContent = class(TSVGTextElement)\n    protected\n      FContent: TSVGContent;\n    public\n      constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n      constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); override;\n      destructor Destroy; override;\n      procedure IterateElements(ACallback: TIterateElementCallback; AData: pointer;\n        ARecursive: boolean); override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property Content: TSVGContent read FContent;\n  end;\n\n  { Any SVG element with position of subelements }\n  TSVGTextPositioning = class(TSVGTextElementWithContent)\n    private\n      function GetX: ArrayOfTFloatWithCSSUnit;\n      function GetY: ArrayOfTFloatWithCSSUnit;\n      function GetDX: ArrayOfTFloatWithCSSUnit;\n      function GetDY: ArrayOfTFloatWithCSSUnit;\n      function GetRotate: ArrayOfTSVGNumber;\n      procedure SetX(AValue: ArrayOfTFloatWithCSSUnit);\n      procedure SetY(AValue: ArrayOfTFloatWithCSSUnit);\n      procedure SetDX(AValue: ArrayOfTFloatWithCSSUnit);\n      procedure SetDY(AValue: ArrayOfTFloatWithCSSUnit);\n      procedure SetRotate(AValue: ArrayOfTSVGNumber);\n    public\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property x: ArrayOfTFloatWithCSSUnit read GetX write SetX;\n      property y: ArrayOfTFloatWithCSSUnit read GetY write SetY;\n      property dx: ArrayOfTFloatWithCSSUnit read GetDX write SetDX;\n      property dy: ArrayOfTFloatWithCSSUnit read GetDY write SetDY;\n      property rotate: ArrayOfTSVGNumber read GetRotate write SetRotate;\n  end;\n\n  { Hypertext reference in SVG text }\n  TSVGTRef = class(TSVGTextElement)\n    private\n      function GetXlinkHref: string;\n      procedure SetXlinkHref(AValue: string);\n    public\n      class function GetDOMTag: string; override;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n  end;\n\n  ArrayOfTextParts = array of record\n    Level: integer;\n    BaseElement: TSVGElement;\n    Text: string;\n    SplitPos: integer;\n    AbsoluteCoord: TPointF;\n    PartStartCoord, PartEndCoord: TPointF;\n    Bounds: TRectF;\n    PosUnicode: integer;\n    InheritedRotation: single;\n  end;\n\n  { SVG text object }\n  TSVGText = class(TSVGTextPositioning)\n    private\n      FInGetSimpleText: boolean;\n      function GetFontBold: boolean;\n      function GetFontFamily: string;\n      function GetFontFamilyList: ArrayOfString;\n      function GetFontItalic: boolean;\n      function GetFontSize: TFloatWithCSSUnit;\n      function GetFontStyle: string;\n      function GetFontStyleLCL: TFontStyles;\n      function GetFontWeight: string;\n      function GetSimpleText: string;\n      function GetTextAnchor: TSVGTextAnchor;\n      function GetTextDirection: TSVGTextDirection;\n      function GetTextDecoration: string;\n      function GetTextLength: TFloatWithCSSUnit;\n      function GetLengthAdjust: TSVGLengthAdjust;\n      procedure SetFontBold(AValue: boolean);\n      procedure SetFontFamily(AValue: string);\n      procedure SetFontFamilyList(AValue: ArrayOfString);\n      procedure SetFontItalic(AValue: boolean);\n      procedure SetFontSize(AValue: TFloatWithCSSUnit);\n      procedure SetFontStyle(AValue: string);\n      procedure SetFontStyleLCL(AValue: TFontStyles);\n      procedure SetFontWeight(AValue: string);\n      procedure SetSimpleText(AValue: string);\n      procedure SetTextAnchor(AValue: TSVGTextAnchor);\n      procedure SetTextDirection(AValue: TSVGTextDirection);\n      procedure SetTextDecoration(AValue: string);\n      procedure SetTextLength(AValue: TFloatWithCSSUnit);\n      procedure SetLengthAdjust(AValue: TSVGLengthAdjust);\n    protected\n      procedure InternalDrawOrCompute(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit;\n                                      ADraw: boolean; AAllTextBounds: TRectF;\n                                      var APosition: TPointF;\n                                      var ATextParts: ArrayOfTextParts); overload;\n      procedure InternalDrawOrCompute(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit;\n                                      ADraw: boolean; AAllTextBounds: TRectF;\n                                      var APosition: TPointF;\n                                      var ATextParts: ArrayOfTextParts; ALevel: integer;\n                                      AStartPart, AEndPart: integer); overload;\n      procedure InternalDrawOrComputePart(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit;\n                              AText: string; APosUnicode: integer; AInheritedRotation: single;\n                              ADraw: boolean; AAllTextBounds: TRectF;\n                              var APosition: TPointF; out ABounds: TRectF);\n      procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n      procedure CleanText(var ATextParts: ArrayOfTextParts);\n      function GetTRefContent(AElement: TSVGTRef): string;\n      function GetAllText(AInheritedRotation: single): ArrayOfTextParts;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property textLength: TFloatWithCSSUnit read GetTextLength write SetTextLength;\n      property lengthAdjust: TSVGLengthAdjust read GetLengthAdjust write SetLengthAdjust;\n      property SimpleText: string read GetSimpleText write SetSimpleText;\n      property fontSize: TFloatWithCSSUnit read GetFontSize write SetFontSize;\n      property fontFamily: string read GetFontFamily write SetFontFamily;\n      property fontFamilyList: ArrayOfString read GetFontFamilyList write SetFontFamilyList;\n      property fontWeight: string read GetFontWeight write SetFontWeight;\n      property fontStyle: string read GetFontStyle write SetFontStyle;\n      property fontStyleLCL: TFontStyles read GetFontStyleLCL write SetFontStyleLCL;\n      property textDecoration: string read GetTextDecoration write SetTextDecoration;\n      property fontBold: boolean read GetFontBold write SetFontBold;\n      property fontItalic: boolean read GetFontItalic write SetFontItalic;\n      property textAnchor: TSVGTextAnchor read GetTextAnchor write SetTextAnchor;\n      property textDirection: TSVGTextDirection read GetTextDirection write SetTextDirection;\n  end;\n\n  { SVG span of text }\n  TSVGTSpan = class(TSVGText)\n    public\n      class function GetDOMTag: string; override;\n  end;\n\n  { SVG text on path }\n  TSVGTextPath = class(TSVGTextElementWithContent)\n    private\n      function GetStartOffset: TFloatWithCSSUnit;\n      function GetMethod: TSVGTextPathMethod;\n      function GetSpacing: TSVGTextPathSpacing;\n      function GetXlinkHref: string;\n      procedure SetStartOffset(AValue: TFloatWithCSSUnit);\n      procedure SetMethod(AValue: TSVGTextPathMethod);\n      procedure SetSpacing(AValue: TSVGTextPathSpacing);\n      procedure SetXlinkHref(AValue: string);\n    protected\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property startOffset: TFloatWithCSSUnit read GetStartOffset write SetStartOffset;\n      property method: TSVGTextPathMethod read GetMethod write SetMethod;\n      property spacing: TSVGTextPathSpacing read GetSpacing write SetSpacing;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n  end;\n\n  { SVG alternate glyph (deprecated) }\n  TSVGAltGlyph = class(TSVGTextElementWithContent)\n    private\n      function GetGlyphRef: string;\n      function GetFormat: string;\n      function GetXlinkHref: string;\n      procedure SetGlyphRef(AValue: string);\n      procedure SetFormat(AValue: string);\n      procedure SetXlinkHref(AValue: string);\n    protected\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      property glyphRef: string read GetGlyphRef write SetGlyphRef;\n      property format: string read GetFormat write SetFormat;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n  end;\n\n  { SVG collection of alternate glyph definitions (deprecated) }\n  TSVGAltGlyphDef = class(TSVGTextElementWithContent)\n    public\n      class function GetDOMTag: string; override;\n  end;\n\n  { SVG alternate definition for a glyph (deprecated) }\n  TSVGAltGlyphItem = class(TSVGTextElementWithContent)\n    public\n      class function GetDOMTag: string; override;\n  end;\n\n  { SVG single glyph for an alternate definition (deprecated) }\n  TSVGGlyphRef = class(TSVGTextElement)\n    private\n      function GetX: TSVGNumber;\n      function GetY: TSVGNumber;\n      function GetDx: TSVGNumber;\n      function GetDy: TSVGNumber;\n      function GetGlyphRef: string;\n      function GetFormat: string;\n      function GetXlinkHref: string;\n      procedure SetX(AValue: TSVGNumber);\n      procedure SetY(AValue: TSVGNumber);\n      procedure SetDx(AValue: TSVGNumber);\n      procedure SetDy(AValue: TSVGNumber);\n      procedure SetGlyphRef(AValue: string);\n      procedure SetFormat(AValue: string);\n      procedure SetXlinkHref(AValue: string);\n    protected\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      property x: TSVGNumber read GetX write SetX;\n      property y: TSVGNumber read GetY write SetY;\n      property dx: TSVGNumber read GetDx write SetDx;\n      property dy: TSVGNumber read GetDy write SetDy;\n      property glyphRef: string read GetGlyphRef write SetGlyphRef;\n      property format: string read GetFormat write SetFormat;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n  end;\n  \n  { SVG clipping path }\n  TSVGClipPath = class(TSVGElementWithContent)\n    private\n      function GetExternalResourcesRequired: boolean;\n      function GetClipPathUnits: TSVGObjectUnits;\n      procedure SetExternalResourcesRequired(AValue: boolean);\n      procedure SetClipPathUnits(AValue: TSVGObjectUnits);\n    protected\n      procedure InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    public\n      procedure ApplyClipTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\n      class function GetDOMTag: string; override;\n      property externalResourcesRequired: boolean\n       read GetExternalResourcesRequired write SetExternalResourcesRequired;\n      property clipPathUnits: TSVGObjectUnits read GetClipPathUnits write SetClipPathUnits;\n  end;   \n  \n  { SVG color profile for images (deprecated) }\n  TSVGColorProfile = class(TSVGElement)\n    private\n      function GetLocal: string;\n      function GetName: string;\n      function GetRenderingIntent: TSVGRenderingIntent;\n      function GetXlinkHref: string;\n      procedure SetLocal(AValue: string);\n      procedure SetName(AValue: string);\n      procedure SetRenderingIntent(AValue: TSVGRenderingIntent);\n      procedure SetXlinkHref(AValue: string);\n    public\n      class function GetDOMTag: string; override;\n      property local: string read GetLocal write SetLocal;\n      property name: string read GetName write SetName;\n      property renderingIntent: TSVGRenderingIntent read GetRenderingIntent write SetRenderingIntent;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n  end;  \n  \n  { SVG image object }\n  TSVGImage = class(TSVGElement)\n    private\n      function GetBitmap: TBGRACustomBitmap;\n      function GetExternalResourcesRequired: boolean;\n      function GetImageRendering: TSVGImageRendering;\n      function GetX: TFloatWithCSSUnit;\n      function GetY: TFloatWithCSSUnit;\n      function GetWidth: TFloatWithCSSUnit;\n      function GetHeight: TFloatWithCSSUnit;\n      function GetPreserveAspectRatio: TSVGPreserveAspectRatio;\n      function GetXlinkHref: string;\n      procedure SetExternalResourcesRequired(AValue: boolean);\n      procedure SetImageRendering(AValue: TSVGImageRendering);\n      procedure SetX(AValue: TFloatWithCSSUnit);\n      procedure SetY(AValue: TFloatWithCSSUnit);\n      procedure SetWidth(AValue: TFloatWithCSSUnit);\n      procedure SetHeight(AValue: TFloatWithCSSUnit);\n      procedure SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\n      procedure SetXlinkHref(AValue: string);\n    protected\n      FBitmap: TBGRACustomBitmap;\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter;\n        ADataLink: TSVGDataLink); overload; override;\n      constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter;\n        ADataLink: TSVGDataLink); overload; override;\n      destructor Destroy; override;\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      procedure SetBitmap(AValue: TBGRACustomBitmap; AOwned: boolean); overload;\n      procedure SetBitmap(AStream: TStream; AMimeType: string); overload;\n      property externalResourcesRequired: boolean\n       read GetExternalResourcesRequired write SetExternalResourcesRequired;\n      property x: TFloatWithCSSUnit read GetX write SetX;\n      property y: TFloatWithCSSUnit read GetY write SetY;\n      property width: TFloatWithCSSUnit read GetWidth write SetWidth;\n      property height: TFloatWithCSSUnit read GetHeight write SetHeight;\n      property imageRendering: TSVGImageRendering read GetImageRendering write SetImageRendering;\n      property preserveAspectRatio: TSVGPreserveAspectRatio\n       read GetPreserveAspectRatio write SetPreserveAspectRatio;\n      property xlinkHref: string read GetXlinkHref write SetXlinkHref;\n      property Bitmap: TBGRACustomBitmap read GetBitmap;\n  end;   \n  \n  { SVG pattern (for filling) }\n  TSVGPattern = class(TSVGImage)\n    private\n      function GetPatternUnits: TSVGObjectUnits;\n      function GetPatternContentUnits: TSVGObjectUnits;\n      function GetPatternTransform: string;\n      function GetViewBox: TSVGViewBox;\n      procedure SetPatternUnits(AValue: TSVGObjectUnits);\n      procedure SetPatternContentUnits(AValue: TSVGObjectUnits);\n      procedure SetPatternTransform(AValue: string);\n      procedure SetViewBox(AValue: TSVGViewBox);\n    protected\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      property patternUnits: TSVGObjectUnits read GetPatternUnits write SetPatternUnits;\n      property patternContentUnits: TSVGObjectUnits\n       read GetPatternContentUnits write SetPatternContentUnits;\n      property patternTransform: string read GetPatternTransform write SetPatternTransform;\n      property viewBox: TSVGViewBox read GetViewBox write SetViewBox;\n  end;\n  \n  { SVG marker (for chart) }\n  TSVGMarker = class(TSVGElement)\n    private\n      function GetExternalResourcesRequired: boolean;\n      function GetViewBox: TSVGViewBox;\n      function GetPreserveAspectRatio: TSVGPreserveAspectRatio;\n      function GetRefX: TFloatWithCSSUnit;\n      function GetRefY: TFloatWithCSSUnit;\n      function GetMarkerWidth: TFloatWithCSSUnit;\n      function GetMarkerHeight: TFloatWithCSSUnit;\n      function GetMarkerUnits: TSVGMarkerUnits;\n      function GetOrient: TSVGOrient;\n      procedure SetExternalResourcesRequired(AValue: boolean);\n      procedure SetViewBox(AValue: TSVGViewBox);\n      procedure SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\n      procedure SetRefX(AValue: TFloatWithCSSUnit);\n      procedure SetRefY(AValue: TFloatWithCSSUnit);\n      procedure SetMarkerWidth(AValue: TFloatWithCSSUnit);\n      procedure SetMarkerHeight(AValue: TFloatWithCSSUnit);\n      procedure SetMarkerUnits(AValue: TSVGMarkerUnits);\n      procedure SetOrient(AValue: TSVGOrient);\n    protected\n      procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); override;\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property externalResourcesRequired: boolean\n       read GetExternalResourcesRequired write SetExternalResourcesRequired;\n      property viewBox: TSVGViewBox read GetViewBox write SetViewBox;\n      property preserveAspectRatio: TSVGPreserveAspectRatio\n       read GetPreserveAspectRatio write SetPreserveAspectRatio;\n      property refX: TFloatWithCSSUnit read GetRefX write SetRefX;\n      property refY: TFloatWithCSSUnit read GetRefY write SetRefY;\n      property markerWidth: TFloatWithCSSUnit read GetMarkerWidth write SetMarkerWidth;\n      property markerHeight: TFloatWithCSSUnit read GetMarkerHeight write SetMarkerHeight;\n      property markerUnits: TSVGMarkerUnits read GetMarkerUnits write SetMarkerUnits;\n      property orient: TSVGOrient read GetOrient write SetOrient;\n  end;\n  \n  { SVG mask (alpha) }\n  TSVGMask = class(TSVGElementWithContent)\n    private\n      function GetExternalResourcesRequired: boolean;\n      function GetX: TFloatWithCSSUnit;\n      function GetY: TFloatWithCSSUnit;\n      function GetWidth: TFloatWithCSSUnit;\n      function GetHeight: TFloatWithCSSUnit;\n      function GetMaskUnits: TSVGObjectUnits;\n      function GetMaskContentUnits: TSVGObjectUnits;\n      procedure SetExternalResourcesRequired(AValue: boolean);\n      procedure SetX(AValue: TFloatWithCSSUnit);\n      procedure SetY(AValue: TFloatWithCSSUnit);\n      procedure SetWidth(AValue: TFloatWithCSSUnit);\n      procedure SetHeight(AValue: TFloatWithCSSUnit);\n      procedure SetMaskUnits(AValue: TSVGObjectUnits);\n      procedure SetMaskContentUnits(AValue: TSVGObjectUnits);\n    public\n      procedure ApplyMaskTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property externalResourcesRequired: boolean\n       read GetExternalResourcesRequired write SetExternalResourcesRequired;\n      property x: TFloatWithCSSUnit read GetX write SetX;\n      property y: TFloatWithCSSUnit read GetY write SetY;\n      property width: TFloatWithCSSUnit read GetWidth write SetWidth;\n      property height: TFloatWithCSSUnit read GetHeight write SetHeight;\n      property maskUnits: TSVGObjectUnits read GetMaskUnits write SetMaskUnits;\n      property maskContentUnits: TSVGObjectUnits\n       read GetMaskContentUnits write SetMaskContentUnits;\n  end;      \n  \n  TConvMethod = (cmNone,cmHoriz,cmVertical,cmOrtho);\n  \n  { SVG gradient }\n  TSVGGradient = class(TSVGElementWithContent)\n    private\n      function GetColorInterpolation: TSVGColorInterpolation;\n      function GetGradientMatrix(AUnit: TCSSUnit): TAffineMatrix;\n      function GetGradientTransform: string;\n      function GetGradientUnits: TSVGObjectUnits;\n      function GetHRef: string;\n      function GetSpreadMethod: TSVGSpreadMethod;\n      procedure SetColorInterpolation(AValue: TSVGColorInterpolation);\n      procedure SetGradientMatrix(AUnit: TCSSUnit; AValue: TAffineMatrix);\n      procedure SetGradientTransform(AValue: string);\n      procedure SetGradientUnits(AValue: TSVGObjectUnits);\n      procedure SetHRef(AValue: string);\n      procedure SetSpreadMethod(AValue: TSVGSpreadMethod);\n    protected\n      InheritedGradients: TSVGElementList;//(for HRef)\n      procedure Initialize; override;\n      function GetInheritedAttribute(AValue: string;\n        AConvMethod: TConvMethod; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    public\n      destructor Destroy; override;\n      procedure ScanInheritedGradients(const forceScan: boolean = false);\n      property hRef: string read GetHRef write SetHRef;\n      property gradientUnits: TSVGObjectUnits read GetGradientUnits write SetGradientUnits;\n      property gradientTransform: string read GetGradientTransform write SetGradientTransform;\n      property gradientMatrix[AUnit: TCSSUnit]: TAffineMatrix read GetGradientMatrix write SetGradientMatrix;\n      property spreadMethod: TSVGSpreadMethod read GetSpreadMethod write SetSpreadMethod;\n      property colorInterpolation: TSVGColorInterpolation read GetColorInterpolation write SetColorInterpolation;\n  end;        \n\n  { SVG linear gradient }\n  TSVGLinearGradient = class(TSVGGradient)\n    private\n      function GetX1: TFloatWithCSSUnit;\n      function GetX2: TFloatWithCSSUnit;\n      function GetY1: TFloatWithCSSUnit;\n      function GetY2: TFloatWithCSSUnit;\n      procedure SetX1(AValue: TFloatWithCSSUnit);\n      procedure SetX2(AValue: TFloatWithCSSUnit);\n      procedure SetY1(AValue: TFloatWithCSSUnit);\n      procedure SetY2(AValue: TFloatWithCSSUnit);\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property x1: TFloatWithCSSUnit read GetX1 write SetX1;\n      property y1: TFloatWithCSSUnit read GetY1 write SetY1;\n      property x2: TFloatWithCSSUnit read GetX2 write SetX2;\n      property y2: TFloatWithCSSUnit read GetY2 write SetY2;\n  end;\n\n  { SVG radial gradient }\n  TSVGRadialGradient = class(TSVGGradient)\n    private\n      function GetCX: TFloatWithCSSUnit;\n      function GetCY: TFloatWithCSSUnit;\n      function GetR: TFloatWithCSSUnit;\n      function GetFX: TFloatWithCSSUnit;\n      function GetFY: TFloatWithCSSUnit;\n      function GetFR: TFloatWithCSSUnit;\n      procedure SetCX(AValue: TFloatWithCSSUnit);\n      procedure SetCY(AValue: TFloatWithCSSUnit);\n      procedure SetR(AValue: TFloatWithCSSUnit);\n      procedure SetFX(AValue: TFloatWithCSSUnit);\n      procedure SetFY(AValue: TFloatWithCSSUnit);\n      procedure SetFR(AValue: TFloatWithCSSUnit);\n    public\n      class function GetDOMTag: string; override;\n      procedure ConvertToUnit(AUnit: TCSSUnit); override;\n      property cx: TFloatWithCSSUnit read GetCX write SetCX;\n      property cy: TFloatWithCSSUnit read GetCY write SetCY;\n      property r: TFloatWithCSSUnit read GetR write SetR;\n      property fx: TFloatWithCSSUnit read GetFX write SetFX;\n      property fy: TFloatWithCSSUnit read GetFY write SetFY;\n      property fr: TFloatWithCSSUnit read GetFR write SetFR;\n  end;\n\n  { SVG gradient color-stop }\n  TSVGStopGradient = class(TSVGElement)\n    private\n      function GetOffset: TFloatWithCSSUnit;\n      function GetStopColor: TBGRAPixel;\n      function GetStopOpacity: single;\n      procedure SetOffset(AValue: TFloatWithCSSUnit);\n      procedure SetStopColor(AValue: TBGRAPixel);\n      procedure SetStopOpacity(AValue: single);\n    public\n      class function GetDOMTag: string; override;\n      property offset: TFloatWithCSSUnit read GetOffset write SetOffset;\n      property stopColor: TBGRAPixel read GetStopColor write SetStopColor;\n      property stopOpacity: single read GetStopOpacity write SetStopOpacity;\n  end;\n\n  { SVG definitions }\n  TSVGDefine = class(TSVGElementWithContent)\n    public\n    class function GetDOMTag: string; override;\n  end; \n\n  { SVG group }\n  TSVGGroup = class(TSVGElementWithContent)\n  private\n    function GetFontSize: TFloatWithCSSUnit;\n    function GetIsLayer: boolean;\n    function GetName: string;\n    procedure SetFontSize(AValue: TFloatWithCSSUnit);\n    procedure SetIsLayer(AValue: boolean);\n    procedure SetName(AValue: string);\n  protected\n    procedure InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); override;\n    class function OwnDatalink: boolean; override;\n    property fontSize: TFloatWithCSSUnit read GetFontSize write SetFontSize;\n  public\n    class function GetDOMTag: string; override;\n    procedure ConvertToUnit(AUnit: TCSSUnit); override;\n    property IsLayer: boolean read GetIsLayer write SetIsLayer;\n    property Name: string read GetName write SetName;\n  end;\n\n  { SVG link (for browsing) }\n  TSVGLink = class(TSVGGroup)\n  private\n    function GetTarget: string;\n    function GetXlinkHref: string;\n    function GetXlinkTitle: string;\n    procedure SetTarget(AValue: string);\n    procedure SetXlinkHref(AValue: string);\n    procedure SetXlinkTitle(AValue: string);\n  public\n    class function GetDOMTag: string; override;\n    property XlinkHref: string read GetXlinkHref write SetXlinkHref;\n    property XlinkTitle: string read GetXlinkTitle write SetXlinkTitle;\n    property Target: string read GetTarget write SetTarget;\n  end;\n\n  { Set of rules for a selector in CSS }\n  TSVGRuleset = record\n    selector,\n    declarations: string;\n  end;\n  ArrayOfTSVGStyleItem = packed array of TSVGRuleset;\n\n  { SVG style definition (CSS) }\n  TSVGStyle = class(TSVGElement)\n   private\n     FRulesets: ArrayOfTSVGStyleItem;\n     function GetRulesetCount: integer;\n     procedure Parse(const s: String);\n     function IsValidRulesetIndex(const AIndex: integer): boolean;\n     function GetRuleset(const AIndex: integer): TSVGRuleset;\n     procedure SetRuleset(const AIndex: integer; sr: TSVGRuleset);\n     function Find(ARuleset: TSVGRuleset): integer; overload;\n   protected\n     procedure Initialize; override;\n   public\n     class function GetDOMTag: string; override;\n     constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); overload; override;\n     destructor Destroy; override;\n     procedure ConvertToUnit(AUnit: TCSSUnit); override;\n     function Count: Integer;\n     function Find(const AName: string): integer; overload;\n     function Add(ARuleset: TSVGRuleset): integer;\n     procedure Remove(ARuleset: TSVGRuleset);\n     procedure Clear;\n     procedure ReParse;\n     property Ruleset[AIndex: integer]: TSVGRuleset read GetRuleset write SetRuleset;\n     property RulesetCount: integer read GetRulesetCount;\n  end;                  \n\n  { @abstract(Content for an SVG element.)\n\n  It can be used to browse or add elements.\n\n**Example creating an SVG file:**\n\n@image(../doc/img/content.svg)\n\n```pascal\nuses BGRABitmapTypes, BGRASVG, BGRAUnits;\nvar svg: TBGRASVG;\nbegin\n  //it is recommended to initialise the SVG with size and unit\n  //otherwise, the size is kind of undefined\n\n  svg := TBGRASVG.Create(10,6,cuCentimeter);\n  svg.Content.AppendPath('M1,1 L9,1 9,5 1,5 z', cuCentimeter).fillColor := CSSGreen;\n  svg.Content.AppendRect(2,2,6,2, cuCentimeter).fillColor:= BGRA(255,255,0,192);\n  with svg.Content.AppendRect(0,0,svg.Units.ConvertWidth(1,cuCentimeter,cuPixel),\n  svg.Units.ConvertHeight(1,cuCentimeter,cuPixel), cuPixel) do\n  begin\n    fillColor := CSSBlue;\n    fillOpacity:= 0.2;\n  end;\n  svg.Content.AppendRoundRect(3,3,4,1, 0.3,0.3, cuCentimeter).fillColor := CSSOrange;\n  with svg.Content.AppendLine(30,140,250,30, cuPoint) do\n  begin\n    strokeColor := BGRABlack;\n    strokeOpacity:= 0.8;\n  end;\n  svg.Content.AppendLine(svg.ViewBox.min,svg.ViewBox.min+svg.ViewBox.size).strokeColor := CSSRed;\n  with svg.Content.AppendCircle(5,3,2.8,cuCentimeter) do\n  begin\n    strokeColor := CSSRed;\n    strokeWidth := FloatWithCSSUnit(2,cuPoint);\n    fillNone;\n  end;\n\n  //SVG can be saved in a file that can be viewed in\n  //a web browser or in InkScape for example\n  svg.SaveToFile('content.svg');\n  svg.Free;\nend.\n```}\n  TSVGContent = class\n    protected\n      FDataLink: TSVGDataLink;\n      FDomElem: TDOMElement;\n      FDoc: TDOMDocument;\n      FElements: TFPList;\n      FUnits: TCSSUnitConverter;\n      function GetDOMNode(AElement: TObject): TDOMNode;\n      function GetElementDOMNode(AIndex: integer): TDOMNode;\n      procedure AppendElement(AElement: TObject); overload;\n      function ExtractElementAt(AIndex: integer): TObject;\n      procedure InsertElementBefore(AElement: TSVGElement; ASuccessor: TSVGElement);\n      function GetElement(AIndex: integer): TSVGElement;\n      function GetElementObject(AIndex: integer): TObject;\n      function GetIsSVGElement(AIndex: integer): boolean;\n      function GetElementCount: integer;\n      function GetUnits: TCSSUnitConverter;\n      function TryCreateElementFromNode(ANode: TDOMNode): TObject; virtual;\n    public\n      constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter;\n        ADataLink: TSVGDataLink);\n      destructor Destroy; override;\n      procedure Clear;\n      procedure ConvertToUnit(AUnit: TCSSUnit);\n      procedure IterateElements(ACallback: TIterateElementCallback; AData: pointer; ARecursive: boolean);\n      procedure Recompute;\n      procedure Draw(ACanvas2d: TBGRACanvas2D; x,y: single; AUnit: TCSSUnit); overload;\n      procedure Draw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); overload;\n      procedure CopyPathTo(ACanvas2d: TBGRACanvas2D; x,y: single; AUnit: TCSSUnit); overload;\n      procedure CopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit); overload;\n      function AppendElement(ASVGType: TSVGFactory): TSVGElement; overload;\n      procedure BringElement(AElement: TObject; AFromContent: TSVGContent); overload;\n      procedure CopyElement(AElement: TObject);\n      procedure RemoveElement(AElement: TObject);\n      function AppendDOMText(AText: string): TDOMText;\n      function AppendDefine: TSVGDefine;\n      function AppendLinearGradient(x1,y1,x2,y2: single; AIsPercent: boolean): TSVGLinearGradient; overload;\n      function AppendLinearGradient(x1,y1,x2,y2: single; AUnit: TCSSUnit): TSVGLinearGradient; overload;\n      function AppendRadialGradient(cx,cy,r,fx,fy,fr: single; AIsPercent: boolean): TSVGRadialGradient; overload;\n      function AppendRadialGradient(cx,cy,r,fx,fy,fr: single; AUnit: TCSSUnit): TSVGRadialGradient; overload;\n      function AppendStop(AColor: TBGRAPixel; AOffset: single; AIsPercent: boolean): TSVGStopGradient;\n      function AppendLine(x1,y1,x2,y2: single; AUnit: TCSSUnit = cuCustom): TSVGLine; overload;\n      function AppendLine(p1,p2: TPointF; AUnit: TCSSUnit = cuCustom): TSVGLine; overload;\n      function AppendCircle(cx,cy,r: single; AUnit: TCSSUnit = cuCustom): TSVGCircle; overload;\n      function AppendCircle(c: TPointF; r: single; AUnit: TCSSUnit = cuCustom): TSVGCircle; overload;\n      function AppendEllipse(cx,cy,rx,ry: single; AUnit: TCSSUnit = cuCustom): TSVGEllipse; overload;\n      function AppendEllipse(c,r: TPointF; AUnit: TCSSUnit = cuCustom): TSVGEllipse; overload;\n      function AppendPath(data: string; AUnit: TCSSUnit = cuCustom): TSVGPath; overload;\n      function AppendPath(path: TBGRAPath; AUnit: TCSSUnit = cuCustom): TSVGPath; overload;\n      function AppendPolygon(const points: array of single; AUnit: TCSSUnit = cuCustom): TSVGPolypoints; overload;\n      function AppendPolygon(const points: array of TPointF; AUnit: TCSSUnit = cuCustom): TSVGPolypoints; overload;\n      function AppendRect(x,y,width,height: single; AUnit: TCSSUnit = cuCustom): TSVGRectangle; overload;\n      function AppendRect(origin,size: TPointF; AUnit: TCSSUnit = cuCustom): TSVGRectangle; overload;\n      function AppendImage(x,y,width,height: single; ABitmap: TBGRACustomBitmap; ABitmapOwned: boolean; AUnit: TCSSUnit = cuCustom): TSVGImage; overload;\n      function AppendImage(origin,size: TPointF; ABitmap: TBGRACustomBitmap; ABitmapOwned: boolean; AUnit: TCSSUnit = cuCustom): TSVGImage; overload;\n      function AppendImage(x,y,width,height: single; ABitmapStream: TStream; AMimeType: string; AUnit: TCSSUnit = cuCustom): TSVGImage; overload;\n      function AppendImage(origin,size: TPointF; ABitmapStream: TStream; AMimeType: string; AUnit: TCSSUnit = cuCustom): TSVGImage; overload;\n      function AppendText(x,y: single; AText: string; AUnit: TCSSUnit = cuCustom): TSVGText; overload;\n      function AppendText(origin: TPointF; AText: string; AUnit: TCSSUnit = cuCustom): TSVGText; overload;\n      function AppendTextSpan(AText: string): TSVGTSpan;\n      function AppendRoundRect(x,y,width,height,rx,ry: single; AUnit: TCSSUnit = cuCustom): TSVGRectangle; overload;\n      function AppendRoundRect(origin,size,radius: TPointF; AUnit: TCSSUnit = cuCustom): TSVGRectangle; overload;\n      function AppendGroup: TSVGGroup;\n      function IndexOfElement(AElement: TObject): integer;\n      property ElementCount: integer read GetElementCount;\n      property Element[AIndex: integer]: TSVGElement read GetElement;\n      property ElementObject[AIndex: integer]: TObject read GetElementObject;\n      property ElementDOMNode[AIndex: integer]: TDOMNode read GetElementDOMNode;\n      property IsSVGElement[AIndex: integer]: boolean read GetIsSVGElement;\n      property Units: TCSSUnitConverter read GetUnits;\n  end;\n\nfunction GetSVGFactory(ATagName: string): TSVGFactory;\nfunction CreateSVGElementFromNode(AElement: TDOMElement; AUnits: TCSSUnitConverter;\n  ADataLink: TSVGDataLink): TSVGElement;\n\nimplementation\n\nuses BGRATransform, BGRAUTF8, base64, BGRAGradientScanner;\n\nfunction GetSVGFactory(ATagName: string): TSVGFactory;\nvar tag: string;\nbegin\n  tag := LowerCase(ATagName);\n  if tag='line' then\n    result := TSVGLine else\n  if tag='rect' then\n    result := TSVGRectangle else\n  if tag='circle' then\n    result := TSVGCircle else\n  if tag='ellipse' then\n    result := TSVGEllipse else\n  if tag='path' then\n    result := TSVGPath else\n  if (tag='polygon') or (tag='polyline') then\n    result := TSVGPolypoints else\n  if tag='text' then\n    result := TSVGText else\n  if tag='tspan' then\n    result := TSVGTSpan else\n  if tag='tref' then\n    result := TSVGTRef else\n  if tag='textpath' then\n    result := TSVGTextPath else\n  if tag='altglyph' then\n    result := TSVGAltGlyph else\n  if tag='altglyphdef' then\n    result := TSVGAltGlyphDef else\n  if tag='altglyphitem' then\n    result := TSVGAltGlyphItem else\n  if tag='glyphref' then\n    result := TSVGGlyphRef else\n  if tag='clippath' then\n    result := TSVGClipPath else\n  if tag='colorprofile' then\n    result := TSVGColorProfile else\n  if tag='image' then\n    result := TSVGImage else\n  if tag='pattern' then\n    result := TSVGPattern else\n  if tag='marker' then\n    result := TSVGMarker else\n  if tag='mask' then\n    result := TSVGMask else\n  if tag='lineargradient' then\n    result := TSVGLinearGradient else\n  if tag='radialgradient' then\n    result := TSVGRadialGradient else\n  if tag='stop' then\n    result := TSVGStopGradient else\n  if tag='defs' then\n    result := TSVGDefine else \n  if tag='g' then\n    result := TSVGGroup else\n  if tag='a' then\n    result := TSVGLink else\n  if tag='style' then \n    result := TSVGStyle else\n    result := TSVGElement;\nend;\n\nfunction CreateSVGElementFromNode(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink): TSVGElement;\nvar\n  factory: TSVGFactory;\nbegin\n  factory := GetSVGFactory(string(AElement.TagName));\n  result := factory.Create(AElement,AUnits,ADataLink);\nend;\n\n{ TSVGDefine }\n\nclass function TSVGDefine.GetDOMTag: string;\nbegin\n  Result:= 'defs';\nend;\n\n{ TSVGLink }\n\nfunction TSVGLink.GetTarget: string;\nbegin\n  result := Attribute['target'];\nend;\n\nfunction TSVGLink.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nfunction TSVGLink.GetXlinkTitle: string;\nbegin\n  result := Attribute['xlink:title'];\nend;\n\nprocedure TSVGLink.SetTarget(AValue: string);\nbegin\n  Attribute['target'] := AValue;\nend;\n\nprocedure TSVGLink.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nprocedure TSVGLink.SetXlinkTitle(AValue: string);\nbegin\n  Attribute['xlink:title'] := AValue;\nend;\n\nclass function TSVGLink.GetDOMTag: string;\nbegin\n  Result:= 'a';\nend;\n\n{ TSVGElementWithContent }\n\nclass function TSVGElementWithContent.OwnDatalink: boolean;\nbegin\n  result := false;\nend;\n\nprocedure TSVGElementWithContent.SetDatalink(AValue: TSVGDataLink);\nvar\n  i: Integer;\nbegin\n  inherited SetDatalink(AValue);\n  if not OwnDatalink then\n  begin\n    for i := 0 to FContent.ElementCount-1 do\n      if FContent.IsSVGElement[i] then\n        FContent.Element[i].DataLink := AValue;\n    FContent.FDataLink := AValue;\n  end else\n    FSubDatalink.Parent := AValue;\nend;\n\nconstructor TSVGElementWithContent.Create(ADocument: TDOMDocument;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(ADocument, AUnits, ADataLink);\n  if OwnDatalink then\n    FSubDataLink := TSVGDataLink.Create(ADataLink)\n    else FSubDatalink := ADataLink;\n  FContent := TSVGContent.Create(FDomElem,AUnits,FSubDataLink);\nend;\n\nconstructor TSVGElementWithContent.Create(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(AElement, AUnits, ADataLink);\n  if OwnDatalink then\n    FSubDataLink := TSVGDataLink.Create(ADataLink)\n    else FSubDatalink := ADataLink;\n  FContent := TSVGContent.Create(AElement,AUnits,FSubDataLink);\nend;\n\nprocedure TSVGElementWithContent.IterateElements(\n  ACallback: TIterateElementCallback; AData: pointer; ARecursive: boolean);\nbegin\n  Content.IterateElements(ACallback, AData, ARecursive);\nend;\n\nprocedure TSVGElementWithContent.ListIdentifiers(AResult: TStringList);\nvar\n  i: Integer;\nbegin\n  inherited ListIdentifiers(AResult);\n  for i := 0 to Content.ElementCount-1 do\n    if Content.IsSVGElement[i] then\n      Content.Element[i].ListIdentifiers(AResult);\nend;\n\nprocedure TSVGElementWithContent.RenameIdentifiers(AFrom, ATo: TStringList);\nvar\n  i: Integer;\nbegin\n  inherited RenameIdentifiers(AFrom, ATo);\n  for i := 0 to Content.ElementCount-1 do\n    if Content.IsSVGElement[i] then\n       Content.Element[i].RenameIdentifiers(AFrom, ATo);\nend;\n\nprocedure TSVGElementWithContent.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  Content.ConvertToUnit(AUnit);\nend;\n\ndestructor TSVGElementWithContent.Destroy;\nbegin\n  FreeAndNil(FContent);\n  if OwnDatalink then FreeAndNil(FSubDatalink);\n  inherited Destroy;\nend;\n\nprocedure TSVGElementWithContent.Recompute;\nbegin\n  FContent.Recompute;\n  inherited Recompute;\nend;\n\n{ TSVGElementWithGradient }\n\nprocedure TSVGElementWithGradient.Initialize;\nbegin\n  inherited Initialize;\n  FRegisteredToDatalink:= false;\n  FGradientElementsDefined:= false;\n  FResettingGradient := false;\n  ResetGradients;\nend;\n\nprocedure TSVGElementWithGradient.ResetGradients;\nbegin\n  if FResettingGradient then exit;\n  if FGradientElementsDefined then\n  begin\n    if Assigned(DataLink) and FRegisteredToDatalink then\n    begin\n      FResettingGradient := true;\n      DataLink.RegisterLinkListener(@DatalinkOnLink, false);\n      FRegisteredToDatalink := false;\n      FResettingGradient := false;\n    end;\n    FGradientElementsDefined := false;\n  end;\n  FFillGradientElement     := nil;\n  FStrokeGradientElement   := nil;\n  FFillCanvasGradient      := nil;\n  FStrokeCanvasGradient    := nil;\nend;\n\nprocedure TSVGElementWithGradient.FindGradientElements;\nvar\n  fillNotFound, strokeNotFound: boolean;\nbegin\n  if Assigned(FDataLink) then\n  begin\n    if FRegisteredToDatalink then\n    begin\n      FDataLink.RegisterLinkListener(@DatalinkOnLink, false);\n      FRegisteredToDatalink := false;\n    end;\n    FFillGradientElement := TSVGGradient(FDataLink.FindElementByRef(fill, true, TSVGGradient, fillNotFound));\n    FStrokeGradientElement := TSVGGradient(FDataLink.FindElementByRef(stroke, true, TSVGGradient, strokeNotFound));\n    if Assigned(FFillGradientElement) or fillNotFound or\n       Assigned(FStrokeGradientElement) or strokeNotFound then\n    begin\n      FDatalink.RegisterLinkListener(@DatalinkOnLink, true);\n      FRegisteredToDatalink := true;\n    end;\n  end else\n  begin\n    FFillGradientElement := nil;\n    FStrokeGradientElement := nil;\n  end;\n  if FFillGradientElement <> nil then\n    FFillGradientElement.ScanInheritedGradients;\n  if FStrokeGradientElement <> nil then\n    FStrokeGradientElement.ScanInheritedGradients;\n  FGradientElementsDefined:= true;\nend;\n\nfunction TSVGElementWithGradient.EvaluatePercentage(fu: TFloatWithCSSUnit): single;\nbegin\n  Result:= fu.value;\n  if fu.CSSUnit <> cuPercent then\n  begin\n    if Result < 0 then\n      Result:= 0\n    else if Result > 1 then\n      Result:= 1;\n    Result:= Result * 100;\n  end;\nend;\n\nprocedure TSVGElementWithGradient.DatalinkOnLink(Sender: TObject;\n  AElement: TSVGElement; ALink: boolean);\nbegin\n  if not ALink then\n  begin\n    if (AElement = FFillGradientElement) or (AElement = FStrokeGradientElement) then\n      ResetGradients;\n  end else\n  if ALink then\n    if FGradientElementsDefined and ((FFillGradientElement = nil) or (FStrokeGradientElement = nil)) then\n      ResetGradients;\nend;\n\nfunction TSVGElementWithGradient.GetFillGradientElement: TSVGGradient;\nbegin\n  if not FGradientElementsDefined then\n    FindGradientElements;\n  result := FFillGradientElement;\nend;\n\nfunction TSVGElementWithGradient.GetStrokeGradientElement: TSVGGradient;\nbegin\n  if not FGradientElementsDefined then\n    FindGradientElements;\n  result := FStrokeGradientElement;\nend;\n\nprocedure TSVGElementWithGradient.AddStopElements(ASVGGradient: TSVGGradient; canvas: IBGRACanvasGradient2D);\n\n  function AddStopElementFrom(el: TSVGElement): integer;\n  var\n    i: integer;\n  begin\n    if el is TSVGGradient then\n    begin\n      if el.HasAttribute('color-interpolation') then\n        canvas.gammaCorrection:= TSVGGradient(el).colorInterpolation = sciLinearRGB;\n      if el.HasAttribute('spreadMethod') then\n        case TSVGGradient(el).spreadMethod of\n          ssmReflect: canvas.repetition := grReflect;\n          ssmRepeat: canvas.repetition := grRepeat;\n          else canvas.repetition:= grPad;\n        end;\n    end;\n    result:= 0;\n    with (el as TSVGGradient).Content do\n      for i:= 0 to ElementCount-1 do\n        if IsSVGElement[i] and (Element[i] is TSVGStopGradient) then\n          with TSVGStopGradient(Element[i]) do\n          begin\n            canvas.addColorStop(EvaluatePercentage(offset)/100, stopColor);\n            Inc(result);\n          end;\n  end;\n\nvar\n  i: integer;\nbegin\n  if not Assigned(ASVGGradient) then exit;\n  with ASVGGradient.InheritedGradients do\n    for i:= 0 to Count-1 do\n      AddStopElementFrom(Items[i]);\nend;\n\nfunction TSVGElementWithGradient.CreateCanvasLinearGradient(\n  ACanvas2d: TBGRACanvas2D; ASVGGradient: TSVGGradient;\n  const origin: TPointF; const w,h: single; AUnit: TCSSUnit): IBGRACanvasGradient2D;\nvar p1,p2: TPointF;\n  g: TSVGLinearGradient;\n  m: TAffineMatrix;\nbegin\n  g := ASVGGradient as TSVGLinearGradient;\n  if g.gradientUnits = souObjectBoundingBox then\n  begin\n    p1.x:= EvaluatePercentage(g.x1)/100;\n    p1.y:= EvaluatePercentage(g.y1)/100;\n    p2.x:= EvaluatePercentage(g.x2)/100;\n    p2.y:= EvaluatePercentage(g.y2)/100;\n    m := ACanvas2d.matrix;\n    ACanvas2d.translate(origin.x,origin.y);\n    ACanvas2d.scale(w,h);\n    ACanvas2d.transform(g.gradientMatrix[cuCustom]);\n    result:= ACanvas2d.createLinearGradient(p1,p2);\n    ACanvas2d.matrix := m;\n  end else\n  begin\n    p1.x:= Units.ConvertWidth(g.x1,AUnit,w).value;\n    p1.y:= Units.ConvertHeight(g.y1,AUnit,h).value;\n    p2.x:= Units.ConvertWidth(g.x2,AUnit,w).value;\n    p2.y:= Units.ConvertHeight(g.y2,AUnit,h).value;\n    m := ACanvas2d.matrix;\n    ACanvas2d.transform(g.gradientMatrix[AUnit]);\n    result:= ACanvas2d.createLinearGradient(p1,p2);\n    ACanvas2d.matrix := m;\n  end;\n\n  AddStopElements(ASVGGradient, result);\nend;\n\nfunction TSVGElementWithGradient.CreateCanvasRadialGradient(\n  ACanvas2d: TBGRACanvas2D; ASVGGradient: TSVGGradient; const origin: TPointF;\n  const w, h: single; AUnit: TCSSUnit): IBGRACanvasGradient2D;\nvar c,f: TPointF;\n  r,fr: single;\n  g: TSVGRadialGradient;\n  m: TAffineMatrix;\n\n  procedure CheckFocalAndCreate(c: TPointF; r: single; f: TPointF; fr: single);\n  var u: TPointF;\n    d: single;\n  begin\n    u := f-c;\n    d := VectLen(u);\n    if d >= r then\n    begin\n      u.Scale( (r/d)*0.99999 );\n      f := c+u;\n    end;\n    result:= ACanvas2d.createRadialGradient(c,r,f,fr,true);\n    AddStopElements(ASVGGradient, result);\n  end;\n\nbegin\n  result := nil;\n  g := ASVGGradient as TSVGRadialGradient;\n  if g.gradientUnits = souObjectBoundingBox then\n  begin\n    c.x:= EvaluatePercentage(g.cx)/100;\n    c.y:= EvaluatePercentage(g.cy)/100;\n    r:= abs(EvaluatePercentage(g.r))/100;\n    f.x:= EvaluatePercentage(g.fx)/100;\n    f.y:= EvaluatePercentage(g.fy)/100;\n    fr:= abs(EvaluatePercentage(g.fr))/100;\n\n    m := ACanvas2d.matrix;\n    ACanvas2d.translate(origin.x,origin.y);\n    ACanvas2d.scale(w,h);\n    ACanvas2d.transform(g.gradientMatrix[cuCustom]);\n    CheckFocalAndCreate(c,r,f,fr);\n    ACanvas2d.matrix := m;\n  end else\n  begin\n    c.x:= Units.ConvertWidth(g.cx, AUnit, w).value;\n    c.y:= Units.ConvertHeight(g.cy, AUnit, h).value;\n    r:= abs(Units.ConvertOrtho(g.r, AUnit, w, h).value);\n    f.x:= Units.ConvertWidth(g.fx, AUnit, w).value;\n    f.y:= Units.ConvertHeight(g.fy, AUnit, h).value;\n    fr:= abs(Units.ConvertOrtho(g.fr, AUnit, w, h).value);\n\n    m := ACanvas2d.matrix;\n    ACanvas2d.transform(g.gradientMatrix[AUnit]);\n    CheckFocalAndCreate(c,r,f,fr);\n    ACanvas2d.matrix := m;\n  end;\nend;\n\nprocedure TSVGElementWithGradient.InitializeGradient(ACanvas2d: TBGRACanvas2D;\n  const origin: TPointF; const w,h: single; AUnit: TCSSUnit);\nbegin\n  if FillGradientElement <> nil then\n  begin\n    if FillGradientElement is TSVGLinearGradient then\n      FFillCanvasGradient := CreateCanvasLinearGradient(ACanvas2d, FillGradientElement, origin, w,h, AUnit)\n    else if FillGradientElement is TSVGRadialGradient then\n      FFillCanvasGradient := CreateCanvasRadialGradient(ACanvas2d, FillGradientElement, origin, w,h, AUnit);\n  end;\n  if StrokeGradientElement <> nil then\n  begin\n    if StrokeGradientElement is TSVGLinearGradient then\n      FStrokeCanvasGradient := CreateCanvasLinearGradient(ACanvas2d, StrokeGradientElement, origin, w,h, AUnit)\n    else if StrokeGradientElement is TSVGRadialGradient then\n      FStrokeCanvasGradient := CreateCanvasRadialGradient(ACanvas2d, StrokeGradientElement, origin, w,h, AUnit);\n  end;\nend; \n\nprocedure TSVGElementWithGradient.ApplyFillStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  inherited ApplyFillStyle(ACanvas2D,AUnit);\n  if Assigned(FFillCanvasGradient) then\n    ACanvas2D.fillStyle(FFillCanvasGradient);\nend;\n\nprocedure TSVGElementWithGradient.ApplyStrokeStyle(ACanvas2D: TBGRACanvas2D;\n  AUnit: TCSSUnit);\nbegin\n  inherited ApplyStrokeStyle(ACanvas2D,AUnit);\n  if Assigned(FStrokeCanvasGradient) then\n    ACanvas2D.strokeStyle(FStrokeCanvasGradient);\nend;\n\nprocedure TSVGElementWithGradient.SetDatalink(AValue: TSVGDataLink);\nbegin\n  ResetGradients;\n  inherited SetDatalink(AValue);\nend;\n\nprocedure TSVGElementWithGradient.SetFill(AValue: string);\nbegin\n  ResetGradients;\n  inherited SetFill(AValue);\nend;\n\nprocedure TSVGElementWithGradient.SetStroke(AValue: string);\nbegin\n  ResetGradients;\n  inherited SetStroke(AValue);\nend;\n\ndestructor TSVGElementWithGradient.Destroy;\nbegin\n  ResetGradients;\n  inherited Destroy;\nend;\n\n{ TSVGTextElementWithContent }\n\nconstructor TSVGTextElementWithContent.Create(ADocument: TDOMDocument;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(ADocument, AUnits, ADataLink);\n  FContent := TSVGContent.Create(FDomElem,AUnits,ADataLink);\nend;\n\nconstructor TSVGTextElementWithContent.Create(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(AElement, AUnits, ADataLink);\n  FContent := TSVGContent.Create(AElement,AUnits,ADataLink);\nend;\n\ndestructor TSVGTextElementWithContent.Destroy;\nbegin\n  FreeAndNil(FContent);\n  inherited Destroy;\nend;\n\nprocedure TSVGTextElementWithContent.IterateElements(\n  ACallback: TIterateElementCallback; AData: pointer; ARecursive: boolean);\nbegin\n  Content.IterateElements(ACallback, AData, ARecursive);\nend;\n\nprocedure TSVGTextElementWithContent.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  Content.ConvertToUnit(AUnit);\nend;\n\n{ TSVGTextPositioning }\n\nfunction TSVGTextPositioning.GetX: ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ArrayOfHorizAttributeWithUnitInherit['x',False];\nend;\n\nfunction TSVGTextPositioning.GetY: ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ArrayOfVerticalAttributeWithUnitInherit['y',False];\nend;\n\nfunction TSVGTextPositioning.GetDx: ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ArrayOfHorizAttributeWithUnitInherit['dx',False];\nend;\n\nfunction TSVGTextPositioning.GetDy: ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ArrayOfVerticalAttributeWithUnitInherit['dy',False];\nend;\n\nfunction TSVGTextPositioning.GetRotate: ArrayOfTSVGNumber;\nbegin\n  result := ArrayOfAttributeNumberInherit['rotate',False];\nend;\n\nprocedure TSVGTextPositioning.SetX(AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  ArrayOfHorizAttributeWithUnit['x'] := AValue;\nend;\n\nprocedure TSVGTextPositioning.SetY(AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  ArrayOfVerticalAttributeWithUnit['y'] := AValue;\nend;\n\nprocedure TSVGTextPositioning.SetDx(AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  ArrayOfHorizAttributeWithUnit['dx'] := AValue;\nend;\n\nprocedure TSVGTextPositioning.SetDy(AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  ArrayOfVerticalAttributeWithUnit['dy'] := AValue;\nend;\n\nprocedure TSVGTextPositioning.SetRotate(AValue: ArrayOfTSVGNumber);\nbegin\n  ArrayOfAttributeNumber['rotate'] := AValue;\nend;\n\nprocedure TSVGTextPositioning.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('x') then x := Units.ConvertWidth(x, AUnit);\n  if HasAttribute('y') then y := Units.ConvertHeight(y, AUnit);\n  if HasAttribute('dx') then dx := Units.ConvertWidth(dx, AUnit);\n  if HasAttribute('dy') then dy := Units.ConvertHeight(dy, AUnit);\nend;\n\n{ TSVGText }\n\nfunction TSVGText.GetFontBold: boolean;\nvar valueText: string;\nbegin\n  valueText := trim(fontWeight);\n  result := (valueText = 'bold') or (valueText = 'bolder') or\n  (valueText = '600') or (valueText = '700') or (valueText = '800') or\n   (valueText = '900');\nend;\n\nfunction TSVGText.GetFontFamily: string;\nbegin\n  result := AttributeOrStyleDef['font-family', 'sans-serif'];\nend;\n\nfunction TSVGText.GetFontFamilyList: ArrayOfString;\nbegin\n  result := TBGRACanvas2D.StrToFontNameList(AttributeOrStyle['font-family']);\nend;\n\nfunction TSVGText.GetFontItalic: boolean;\nvar valueText: string;\nbegin\n  valueText := trim(fontStyle);\n  result := (valueText = 'oblique') or (valueText = 'italic');\nend;\n\nfunction TSVGText.GetFontSize: TFloatWithCSSUnit;\nbegin\n  result:= GetVerticalAttributeOrStyleWithUnit('font-size',Units.CurrentFontEmHeight,false);\nend;\n\nfunction TSVGText.GetFontStyle: string;\nbegin\n  result := AttributeOrStyleDef['font-style','normal'];\nend;\n\nfunction TSVGText.GetFontStyleLCL: TFontStyles;\nvar\n  s: String;\nbegin\n  result := [];\n  if fontBold then include(result, fsBold);\n  if fontItalic then include(result, fsItalic);\n  s := ' '+textDecoration+' ';\n  if pos('underline',s) <> 0 then include(result, fsUnderline);\n  if pos('line-through',s) <> 0 then include(result, fsStrikeOut);\nend;\n\nfunction TSVGText.GetFontWeight: string;\nbegin\n  result := AttributeOrStyleDef['font-weight','normal'];\nend;\n\nfunction TSVGText.GetSimpleText: string;\nvar\n  i: Integer;\nbegin\n  if FInGetSimpleText then exit(''); //avoid reentrance\n  FInGetSimpleText := true;\n  result := '';\n  for i := 0 to FContent.ElementCount-1 do\n    if FContent.IsSVGElement[i] then\n    begin\n      if FContent.Element[i] is TSVGTRef then\n        AppendStr(result, GetTRefContent(TSVGTRef(FContent.Element[i])) )\n      else\n      if FContent.Element[i] is TSVGText then\n        AppendStr(result, TSVGText(FContent.Element[i]).SimpleText);\n    end else\n    begin\n      if FContent.ElementDOMNode[i] is TDOMText then\n        AppendStr(result, UTF16ToUTF8(TDOMText(FContent.ElementDOMNode[i]).Data));\n    end;\n  FInGetSimpleText := false;\nend;\n\nfunction TSVGText.GetTextAnchor: TSVGTextAnchor;\nbegin\n  case AttributeOrStyleDef['text-anchor','start'] of\n   'middle': result := staMiddle;\n   'end': result := staEnd;\n   else result := staStart;\n  end;\nend;\n\nfunction TSVGText.GetTextDirection: TSVGTextDirection;\nbegin\n  if AttributeOrStyle['direction'] = 'rtl' then\n    result := stdRtl\n  else\n    result := stdLtr;\nend;\n\nfunction TSVGText.GetTextDecoration: string;\nbegin\n  result := AttributeOrStyleDef['text-decoration','none'];\nend;\n\nfunction TSVGText.GetTextLength: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnitDef['textLength'];\nend;\n\nfunction TSVGText.GetLengthAdjust: TSVGLengthAdjust;\nvar\n  valueText: string;\nbegin\n  valueText := trim(Attribute['lengthAdjust','spacing']);\n  if valueText = 'spacing' then\n    result := slaSpacing\n  else\n    result := slaSpacingAndGlyphs;\nend;\n\nprocedure TSVGText.SetFontBold(AValue: boolean);\nbegin\n  if AValue then fontWeight:= 'bold' else fontWeight:= 'normal';\nend;\n\nprocedure TSVGText.SetFontFamily(AValue: string);\nbegin\n  Attribute['font-family'] := AValue;\n  RemoveStyle('font-family');\nend;\n\nprocedure TSVGText.SetFontFamilyList(AValue: ArrayOfString);\nbegin\n  fontFamily := TBGRACanvas2D.FontNameListToStr(AValue);\nend;\n\nprocedure TSVGText.SetFontItalic(AValue: boolean);\nbegin\n  if AValue then fontStyle:= 'italic' else fontStyle:= 'normal';\nend;\n\nprocedure TSVGText.SetFontSize(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['font-size'] := AValue;\nend;\n\nprocedure TSVGText.SetFontStyle(AValue: string);\nbegin\n  Attribute['font-style'] := AValue;\n  RemoveStyle('font-style');\nend;\n\nprocedure TSVGText.SetFontStyleLCL(AValue: TFontStyles);\nvar\n  s: String;\nbegin\n  fontItalic:= fsItalic in AValue;\n  fontBold:= fsBold in AValue;\n  s := '';\n  if fsUnderline in AValue then AppendStr(s, 'underline ');\n  if fsStrikeOut in AValue then AppendStr(s, 'line-through ');\n  textDecoration:= trim(s);\nend;\n\nprocedure TSVGText.SetFontWeight(AValue: string);\nbegin\n  Attribute['font-weight'] := AValue;\n  RemoveStyle('font-weight');\nend;\n\nprocedure TSVGText.SetTextAnchor(AValue: TSVGTextAnchor);\nbegin\n  case AValue of\n   staMiddle: Attribute['text-anchor'] := 'middle';\n   staEnd: Attribute['text-anchor'] := 'end';\n  else {staStart} Attribute['text-anchor'] := 'start';\n  end;\nend;\n\nprocedure TSVGText.SetTextDirection(AValue: TSVGTextDirection);\nbegin\n  if AValue = stdLtr then\n    Attribute['direction'] := 'ltr'\n  else\n    Attribute['direction'] := 'rtl';\nend;  \n\nprocedure TSVGText.SetSimpleText(AValue: string);\nbegin\n  Content.Clear;\n  if AValue = '' then exit;\n  Content.appendDOMText(AValue);\nend;\n\nprocedure TSVGText.SetTextDecoration(AValue: string);\nbegin\n  Attribute['text-decoration'] := AValue;\n  RemoveStyle('text-decoration');\nend;\n\nprocedure TSVGText.SetTextLength(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['textLength'] := AValue;\n  RemoveStyle('textLength');\nend;\n\nprocedure TSVGText.SetLengthAdjust(AValue: TSVGLengthAdjust);\nbegin\n  if AValue = slaSpacing then\n    Attribute['lengthAdjust'] := 'spacing'\n  else\n    Attribute['lengthAdjust'] := 'spacingAndGlyphs';\n  RemoveStyle('lengthAdjust');\nend;\n\nprocedure TSVGText.InternalDrawOrCompute(ACanvas2d: TBGRACanvas2D;\n  AUnit: TCSSUnit; ADraw: boolean; AAllTextBounds: TRectF;\n  var APosition: TPointF; var ATextParts: ArrayOfTextParts);\nbegin\n  if not ADraw then ATextParts[0].AbsoluteCoord := APosition;\n  InternalDrawOrCompute(ACanvas2d, AUnit, ADraw, AAllTextBounds, APosition, ATextParts, 0,0,high(ATextParts));\nend;\n\nprocedure TSVGText.InternalDrawOrCompute(ACanvas2d: TBGRACanvas2D;\n  AUnit: TCSSUnit; ADraw: boolean; AAllTextBounds: TRectF;\n  var APosition: TPointF; var ATextParts: ArrayOfTextParts;\n  ALevel: integer; AStartPart, AEndPart: integer);\nvar\n  prevFontSize: TFloatWithCSSUnit;\n  ax, ay, adx, ady: ArrayOfTFloatWithCSSUnit;\n  i, subStartPart, subEndPart, subLevel: integer;\n  subElem: TSVGText;\n  partBounds: TRectF;\nbegin\n  if AStartPart > AEndPart then exit;\n\n  prevFontSize := EnterFontSize;\n\n  if not ADraw then\n  begin\n    ax := Units.ConvertWidth(x,AUnit);\n    ay := Units.ConvertHeight(y,AUnit);\n    if length(ax)>0 then APosition.x := ax[0].value;\n    if length(ay)>0 then APosition.y := ay[0].value;\n    if (length(ax)>0) or (length(ay)>0) then\n      ATextParts[AStartPart].AbsoluteCoord := APosition;\n  end else\n    APosition := ATextParts[AStartPart].AbsoluteCoord;\n\n  adx := Units.ConvertWidth(dx,AUnit);\n  ady := Units.ConvertHeight(dy,AUnit);\n  if length(adx)>0 then IncF(APosition.x, adx[0].value);\n  if length(ady)>0 then IncF(APosition.y, ady[0].value);\n\n  i := AStartPart;\n  while i <= AEndPart do\n  begin\n    if ATextParts[i].Level > ALevel then\n    begin\n      subStartPart := i;\n      subEndPart := i;\n      subElem := TSVGText(ATextParts[subStartPart].BaseElement);\n      subLevel := ATextParts[subStartPart].Level;\n      while (subEndPart < AEndPart) and\n            ( ((ATextParts[subEndPart+1].Level = subLevel) and (ATextParts[subEndPart+1].BaseElement = subElem)) or\n              (ATextParts[subEndPart+1].Level > subLevel) ) do\n        inc(subEndPart);\n      subElem.InternalDrawOrCompute(\n        ACanvas2d, AUnit, ADraw, AAllTextBounds, APosition,\n        ATextParts, subLevel, subStartPart, subEndPart);\n      i := subEndPart+1;\n    end\n    else\n    begin\n      if not ADraw then\n        ATextParts[i].PartStartCoord := APosition\n      else\n        APosition := ATextParts[i].PartStartCoord;\n\n      if ATextParts[i].Text <>'' then\n        InternalDrawOrComputePart(ACanvas2d, AUnit, ATextParts[i].Text, ATextParts[i].PosUnicode,\n          ATextParts[i].InheritedRotation, ADraw, AAllTextBounds, APosition, partBounds)\n      else\n        partBounds := EmptyRectF;\n\n      if not ADraw then\n      begin\n        ATextParts[i].PartEndCoord := APosition;\n        ATextParts[i].Bounds := partBounds;\n      end\n      else\n        APosition := ATextParts[i].PartEndCoord;\n\n      inc(i);\n    end;\n  end;\n\n  ExitFontSize(prevFontSize);\nend;\n\nprocedure TSVGText.InternalDrawOrComputePart(ACanvas2d: TBGRACanvas2D;\n  AUnit: TCSSUnit; AText: string; APosUnicode: integer; AInheritedRotation: single;\n  ADraw: boolean; AAllTextBounds: TRectF; var APosition: TPointF; out ABounds: TRectF);\nvar\n  ts: TCanvas2dTextSize;\n  fs: TFontStyles;\n  dir: TSVGTextDirection;\n  deco: String;\n  fh: TFloatWithCSSUnit;\n  rotations: ArrayOfTSVGNumber;\n  glyphSizes: array of single;\n  glyphByGlyph: Boolean;\n  cursor: TGlyphCursorUtf8;\n  glyph: TGlyphUtf8;\n  posGlyph: integer;\n  curPos: TPointF;\n  curRotation, firstRotation: single;\n  posUnicode, i: integer;\n  adx, ady, ax, ay: ArrayOfTFloatWithCSSUnit;\nbegin\n  fh := Units.CurrentFontEmHeight;\n  ACanvas2d.fontEmHeight := Units.ConvertHeight(fh, AUnit).value;\n  ACanvas2d.fontName := fontFamily;\n  fs := [];\n  if fontBold then include(fs, fsBold);\n  if fontItalic then include(fs, fsItalic);\n  deco := ' '+textDecoration+' ';\n  if pos(' line-through ',deco)<>0 then include(fs, fsStrikeOut);\n  if pos(' underline ',deco)<>0 then include(fs, fsUnderline);\n  ACanvas2d.fontStyle := fs;\n  dir := textDirection;\n  case dir of\n   stdRtl: ACanvas2d.direction:= fbmRightToLeft;\n   else {stdLtr} ACanvas2d.direction:= fbmLeftToRight;\n  end;\n  ACanvas2d.textBaseline:= 'alphabetic';\n\n  rotations := rotate;\n  if (length(rotations) <> 0) and\n     (APosUnicode >= length(rotations)) then\n  begin\n    firstRotation := rotations[high(rotations)];\n    glyphByGlyph:= true;\n  end else\n  begin\n    firstRotation:= AInheritedRotation;\n    glyphByGlyph:= firstRotation <> 0;\n  end;\n  for i := APosUnicode to APosUnicode + UTF8Length(AText) - 1 do\n    if i >= length(rotations) then break else\n    if rotations[i] <> 0 then glyphByGlyph := true;\n  ax := x;\n  ay := y;\n  adx := dx;\n  ady := dy;\n  for i := APosUnicode + 1 to APosUnicode + UTF8Length(AText) - 1 do\n  begin\n    if (i < length(ax)) or (i < length(ay)) then glyphByGlyph:= true;\n    if (i < length(adx)) and (adx[i].value <> 0) then glyphByGlyph := true;\n    if (i < length(ady)) and (ady[i].value <> 0) then glyphByGlyph := true;\n  end;\n\n  if glyphByGlyph then\n  begin\n    ts.width:= 0;\n    ts.height := 0;\n    cursor := TGlyphCursorUtf8.New(AText, ACanvas2d.direction);\n    setlength(glyphSizes, length(AText)); //more than enough\n    posGlyph := 0;\n    repeat\n      glyph := cursor.GetNextGlyph;\n      if glyph.Empty then break;\n      with ACanvas2d.measureText(glyph.GlyphUtf8) do\n      begin\n        incF(ts.Width, width);\n        if height > ts.Height then ts.Height := height;\n        glyphSizes[posGlyph] := width;\n      end;\n      inc(posGlyph);\n    until false;\n  end else\n  begin\n    ts := ACanvas2d.measureText(AText);\n    glyphSizes := nil;\n  end;\n\n  if dir = stdRtl then DecF(APosition.x, ts.width);\n\n  ABounds := RectF(APosition.x,APosition.y,APosition.x+ts.width,APosition.y+ts.height);\n  if ADraw then\n  begin\n    ACanvas2d.beginPath;\n    InitializeGradient(ACanvas2d, AAllTextBounds.TopLeft, AAllTextBounds.Width,AAllTextBounds.Height,AUnit);\n    if glyphByGlyph then\n    begin\n      curPos := APosition;\n      curRotation := firstRotation;\n      posGlyph := 0;\n      cursor := TGlyphCursorUtf8.New(AText, ACanvas2d.direction);\n      repeat\n        glyph := cursor.GetNextGlyph;\n        if glyph.Empty then break;\n        posUnicode := APosUnicode + UTF8Length(copy(AText, 1, glyph.ByteOffset));\n        if posUnicode < length(rotations) then\n          curRotation := rotations[posUnicode];\n        ACanvas2d.save;\n        ACanvas2d.translate(curPos.x, curPos.y);\n        ACanvas2d.rotate(curRotation*Pi/180);\n        if glyph.Mirrored then\n        begin\n          if glyph.MirroredGlyphUtf8 <> '' then\n            ACanvas2d.text(glyph.GlyphUtf8, 0, 0) else\n          begin\n            ACanvas2d.translate(glyphSizes[posGlyph], 0);\n            ACanvas2d.scale(-1,0);\n            ACanvas2d.text(glyph.GlyphUtf8, 0, 0);\n          end;\n        end else\n          ACanvas2d.text(glyph.GlyphUtf8, 0, 0);\n        ACanvas2d.restore;\n        IncF(curPos.x, glyphSizes[posGlyph]);\n        for i := 1 to UTF8Length(copy(AText, glyph.ByteOffset+1, glyph.ByteSize)) do\n        begin\n          if posUnicode + i < length(ax) then curPos.x := Units.ConvertWidth(ax[posUnicode + i], AUnit).value;\n          if posUnicode + i < length(ay) then curPos.y := Units.ConvertHeight(ay[posUnicode + i], AUnit).value;\n          if posUnicode + i < length(adx) then incF(curPos.x, Units.ConvertWidth(adx[posUnicode + i], AUnit).value);\n          if posUnicode + i < length(ady) then incF(curPos.y, Units.ConvertHeight(ady[posUnicode + i], AUnit).value);\n        end;\n        inc(posGlyph);\n      until false;\n    end else\n      ACanvas2d.text(AText,APosition.x,APosition.y);\n    Paint(ACanvas2D, AUnit);\n  end;\n\n  if dir = stdLtr then IncF(APosition.x, ts.width);\nend;\n\nprocedure TSVGText.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  allTextBounds: TRectF;\n  textParts: ArrayOfTextParts;\n  anchor: TSVGTextAnchor;\n\n  procedure DoAlignText(AStartPart,AEndPart: integer);\n  var\n    advance,ofs: single;\n    j: Integer;\n  begin\n    advance := textParts[AEndPart].PartEndCoord.x - textParts[AStartPart].AbsoluteCoord.x;\n    ofs := 0;\n\n    case anchor of\n    staMiddle: ofs := (-1/2)*advance;\n    staEnd: ofs := -advance;\n    else ofs := 0;\n    end;\n\n    for j := AStartPart to AEndPart do\n    begin\n      if not isEmptyPointF(textParts[j].AbsoluteCoord) then IncF(textParts[j].AbsoluteCoord.x, ofs);\n      if not isEmptyPointF(textParts[j].PartStartCoord) then IncF(textParts[j].PartStartCoord.x, ofs);\n      if not isEmptyPointF(textParts[j].PartEndCoord) then IncF(textParts[j].PartEndCoord.x, ofs);\n      if not IsEmptyRectF(textParts[j].Bounds) then textParts[j].Bounds.Offset(ofs,0);\n    end;\n  end;\n\nvar\n  i, absStartIndex: Integer;\n  pos: TPointF;\nbegin\n  textParts := GetAllText(0);\n  CleanText(textParts);\n  if length(textParts)>0 then\n  begin\n    pos := PointF(0,0);\n    InternalDrawOrCompute(ACanvas2d, AUnit, False, EmptyRectF, pos, textParts);\n\n    anchor := textAnchor;\n\n    absStartIndex := -1;\n    for i := 0 to high(textParts) do\n    begin\n      if not IsEmptyPointF(textParts[i].AbsoluteCoord) then\n      begin\n        if absStartIndex <> -1 then DoAlignText(absStartIndex,i-1);\n        absStartIndex := i;\n      end;\n    end;\n    if absStartIndex <> -1 then DoAlignText(absStartIndex,high(textParts));\n\n    allTextBounds := EmptyRectF;\n    for i := 0 to high(textParts) do\n      allTextBounds := allTextBounds.Union(textParts[i].Bounds);\n\n    pos := PointF(0,0);\n    InternalDrawOrCompute(ACanvas2d, AUnit, True, allTextBounds, pos, textParts);\n  end;\nend;\n\nprocedure TSVGText.CleanText(var ATextParts: ArrayOfTextParts);\nvar wasSpace: boolean;\n  wasSpaceBeforePartIdx: integer;\n  i,j: integer;\n  k,l, startPos, endPosP1: integer;\n  fullText, cleanedText: string;\nbegin\n  wasSpace := false;\n  wasSpaceBeforePartIdx:= -1;\n  fullText := '';\n  for k := 0 to high(ATextParts) do\n    AppendStr(fullText, ATextParts[k].Text);\n\n  setlength(cleanedText, length(fullText));\n  j := 0;\n  k := 0;\n  for i := 1 to length(fullText) do\n  begin\n    if not (fullText[i] in[#0..#32]) and wasSpace and (j>0) then\n    begin\n      inc(j);\n      cleanedText[j] := ' ';\n      if wasSpaceBeforePartIdx <> -1 then\n        for l := wasSpaceBeforePartIdx to k-1 do\n          inc(ATextParts[l].SplitPos);\n      wasSpace:= false;\n    end;\n    while (k < length(ATextParts)) and (i = ATextParts[k].SplitPos) do\n    begin\n      if wasSpace and (wasSpaceBeforePartIdx = -1) then\n        wasSpaceBeforePartIdx:= k;\n      ATextParts[k].SplitPos := j+1;\n      inc(k);\n    end;\n    if fullText[i] in[#0..#32] then\n      wasSpace := true\n    else\n    begin\n      inc(j);\n      cleanedText[j] := fullText[i];\n      wasSpace := false;\n      wasSpaceBeforePartIdx := -1;\n    end;\n  end;\n  while k < length(ATextParts) do\n  begin\n    ATextParts[k].SplitPos := j+1;\n    inc(k);\n  end;\n  setlength(cleanedText, j);\n\n  for k := 0 to high(ATextParts) do\n  begin\n    startPos := ATextParts[k].SplitPos;\n    if k = high(ATextParts) then endPosP1 := j+1 else\n      endPosP1 := ATextParts[k+1].SplitPos;\n    ATextParts[k].Text:= copy(cleanedText, startPos, endPosP1 - startPos);\n  end;\nend;\n\nfunction TSVGText.GetTRefContent(AElement: TSVGTRef): string;\nvar\n  refText: TSVGText;\nbegin\n  if Assigned(FDataLink) then\n    refText := TSVGText(FDataLink.FindElementByRef(AElement.xlinkHref, TSVGText))\n    else refText := nil;\n  if Assigned(refText) then result := refText.SimpleText else result := '';\nend;\n\nfunction TSVGText.GetAllText(AInheritedRotation: single): ArrayOfTextParts;\nvar\n  idxOut,curLen: Integer;\n  posUnicode: integer;\n\n  procedure AppendPart(AText: string);\n  begin\n    if (idxOut > 0) and (result[idxOut-1].Text = '')\n      and (result[idxOut-1].BaseElement = self) then dec(idxOut);\n    result[idxOut].Level := 0;\n    result[idxOut].BaseElement:= self;\n    result[idxOut].Text := AText;\n    result[idxOut].SplitPos:= curLen+1;\n    result[idxOut].AbsoluteCoord := EmptyPointF;\n    result[idxOut].PartStartCoord := EmptyPointF;\n    result[idxOut].Bounds := EmptyRectF;\n    result[idxOut].PosUnicode := posUnicode;\n    result[idxOut].InheritedRotation:= AInheritedRotation;\n    inc(curLen, length(AText));\n    inc(idxOut);\n    inc(posUnicode, UTF8Length(AText));\n  end;\n\nvar\n  i,j: integer;\n  svgElem: TSVGElement;\n  subParts: ArrayOfTextParts;\n  node: TDOMNode;\n  rotations: ArrayOfTSVGNumber;\n  inheritedRotation: TSVGNumber;\n\nbegin\n  setlength(result, Content.ElementCount+1);\n  idxOut := 0;\n  curLen := 0;\n  posUnicode := 0;\n  AppendPart(''); //needed when there is a sub part to know the base element\n  for i := 0 to Content.ElementCount-1 do\n  begin\n    if Content.IsSVGElement[i] then\n    begin\n      svgElem := Content.Element[i];\n      if svgElem is TSVGTRef then\n        AppendPart(GetTRefContent(TSVGTRef(svgElem)))\n      else\n      if svgElem is TSVGText then\n      begin\n        rotations := rotate;\n        if posUnicode = 0 then inheritedRotation:= AInheritedRotation else\n        if posUnicode-1 >= length(rotations) then\n        begin\n          if rotations <> nil then\n            inheritedRotation:= rotations[high(rotations)]\n            else inheritedRotation := 0;\n        end else\n          inheritedRotation := rotations[posUnicode-1];\n        subParts := TSVGText(svgElem).GetAllText(inheritedRotation);\n        if length(subParts) > 0 then\n        begin\n          setlength(result, length(result)+length(subParts)-1);\n          for j := 0 to high(subParts) do\n          begin\n            result[idxOut] := subParts[j];\n            inc(result[idxOut].Level);\n            result[idxOut].SplitPos:= curLen+1;\n            inc(curLen, length(result[idxOut].Text));\n            inc(idxOut);\n          end;\n        end else\n          AppendPart('');\n      end;\n    end else\n    begin\n      node := Content.ElementDOMNode[i];\n      if node is TDOMText then\n        AppendPart(UTF16ToUTF8(TDOMText(node).Data));\n    end;\n  end;\n  setlength(result, idxOut);\nend;\n\nclass function TSVGText.GetDOMTag: string;\nbegin\n  Result:= 'text';\nend;\n\nprocedure TSVGText.ConvertToUnit(AUnit: TCSSUnit);\nvar\n  prevFontSize: TFloatWithCSSUnit;\nbegin\n  prevFontSize := EnterFontSize;\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('textLength') then textLength := Units.ConvertWidth(textLength, AUnit);\n  if HasAttribute('font-size') then\n    SetVerticalAttributeWithUnit('font-size', Units.ConvertHeight(GetVerticalAttributeWithUnit('font-size'), AUnit));\n  ExitFontSize(prevFontSize);\nend;\n\n{ TSVGTSpan }\n\nclass function TSVGTSpan.GetDOMTag: string;\nbegin\n  Result:= 'tspan';\nend;\n\n{ TSVGTRef }\n\nfunction TSVGTRef.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGTRef.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nclass function TSVGTRef.GetDOMTag: string;\nbegin\n  Result:= 'tref';\nend;\n\n{ TSVGTextPath }\n\nfunction TSVGTextPath.GetStartOffset: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnitDef['startOffset'];\nend;\n\nfunction TSVGTextPath.GetMethod: TSVGTextPathMethod;\nvar\n  valueText: string;\nbegin\n  valueText := trim(Attribute['method','align']);\n  if valueText = 'align' then\n    result := stpmAlign\n  else\n    result := stpmStretch;\nend;\n\nfunction TSVGTextPath.GetSpacing: TSVGTextPathSpacing;\nvar\n  valueText: string;\nbegin\n  valueText := trim(Attribute['spacing','exact']);\n  if valueText = 'exact' then\n    result := stpsExact\n  else\n    result := stpsAuto;\nend;\n\nfunction TSVGTextPath.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGTextPath.SetStartOffset(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['startOffset'] := AValue;\n  RemoveStyle('startOffset');\nend;\n\nprocedure TSVGTextPath.SetMethod(AValue: TSVGTextPathMethod);\nbegin\n if AValue = stpmAlign then\n   Attribute['method'] := 'align'\n else\n   Attribute['method'] := 'stretch';\n RemoveStyle('method');\nend;\n\nprocedure TSVGTextPath.SetSpacing(AValue: TSVGTextPathSpacing);\nbegin\n if AValue = stpsExact then\n   Attribute['spacing'] := 'exact'\n else\n   Attribute['spacing'] := 'auto';\n RemoveStyle('spacing');\nend;\n\nprocedure TSVGTextPath.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nprocedure TSVGTextPath.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  //todo\nend;\n\nclass function TSVGTextPath.GetDOMTag: string;\nbegin\n  Result:= 'textpath';\nend;\n\nprocedure TSVGTextPath.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('startOffset') then startOffset := Units.ConvertWidth(startOffset, AUnit);\nend;\n\n{ TSVGAltGlyph }\n\nfunction TSVGAltGlyph.GetGlyphRef: string;\nbegin\n  result := Attribute['glyphRef',''];\nend;\n\nfunction TSVGAltGlyph.GetFormat: string;\nbegin\n  result := Attribute['format',''];\nend;\n\nfunction TSVGAltGlyph.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGAltGlyph.SetGlyphRef(AValue: string);\nbegin\n  Attribute['glyphRef'] := AValue;\nend;\n\nprocedure TSVGAltGlyph.SetFormat(AValue: string);\nbegin\n  Attribute['format'] := AValue;\nend;\n\nprocedure TSVGAltGlyph.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nprocedure TSVGAltGlyph.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  // deprecated\nend;\n\nclass function TSVGAltGlyph.GetDOMTag: string;\nbegin\n  Result:= 'altglyph';\nend;\n\n{ TSVGAltGlyphDef }\n\nclass function TSVGAltGlyphDef.GetDOMTag: string;\nbegin\n  Result:= 'altglyphdef';\nend;\n\n{ TSVGAltGlyphItem }\n\nclass function TSVGAltGlyphItem.GetDOMTag: string;\nbegin\n  Result:= 'altglyphitem';\nend;\n\n{ TSVGGlyphRef }\n\nfunction TSVGGlyphRef.GetX: TSVGNumber;\nbegin\n  result := HorizAttribute['x'];\nend;\n\nfunction TSVGGlyphRef.GetY: TSVGNumber;\nbegin\n  result := VerticalAttribute['y'];\nend;\n\nfunction TSVGGlyphRef.GetDx: TSVGNumber;\nbegin\n  result := HorizAttribute['dx'];\nend;\n\nfunction TSVGGlyphRef.GetDy: TSVGNumber;\nbegin\n  result := VerticalAttribute['dy'];\nend;\n\nfunction TSVGGlyphRef.GetGlyphRef: string;\nbegin\n  result := Attribute['glyphRef',''];\nend;\n\nfunction TSVGGlyphRef.GetFormat: string;\nbegin\n  result := Attribute['format',''];\nend;\n\nfunction TSVGGlyphRef.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGGlyphRef.SetX(AValue: TSVGNumber);\nbegin\n  HorizAttribute['x'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetY(AValue: TSVGNumber);\nbegin\n  VerticalAttribute['y'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetDx(AValue: TSVGNumber);\nbegin\n  HorizAttribute['dx'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetDy(AValue: TSVGNumber);\nbegin\n  HorizAttribute['dy'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetGlyphRef(AValue: string);\nbegin\n  Attribute['glyphRef'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetFormat(AValue: string);\nbegin\n  Attribute['format'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nprocedure TSVGGlyphRef.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  //deprecated\nend;\n\nclass function TSVGGlyphRef.GetDOMTag: string;\nbegin\n  Result:= 'glyphref';\nend;\n\n{ TSVGClipPath }\n\nfunction TSVGClipPath.GetExternalResourcesRequired: boolean;\nbegin\n  if Attribute['externalResourcesRequired'] = 'true' then\n    result := true\n  else\n    result := false;\nend;\n\nfunction TSVGClipPath.GetClipPathUnits: TSVGObjectUnits;\nbegin\n  if Attribute['clipPathUnits'] = 'objectBoundingBox' then\n    result := souObjectBoundingBox\n  else\n    result := souUserSpaceOnUse;\nend;\n\nprocedure TSVGClipPath.SetExternalResourcesRequired(AValue: boolean);\nbegin\n  if AValue then\n    Attribute['ExternalResourcesRequired'] := 'true'\n  else\n    Attribute['ExternalResourcesRequired'] := 'false';\nend;\n\nprocedure TSVGClipPath.SetClipPathUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['clipPathUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['clipPathUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGClipPath.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  Content.CopyPathTo(ACanvas2d, AUnit);\nend;\n\nprocedure TSVGClipPath.ApplyClipTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  ACanvas2d.beginPath;\n  CopyPathTo(ACanvas2d, AUnit);\n  ACanvas2d.clip;\nend;\n\nclass function TSVGClipPath.GetDOMTag: string;\nbegin\n  Result:= 'clippath';\nend;\n\n{ TSVGColorProfile }\n\nfunction TSVGColorProfile.GetLocal: string;\nbegin\n  result := Attribute['local'];\nend;\n\nfunction TSVGColorProfile.GetName: string;\nbegin\n  result := Attribute['name'];\nend;\n\nfunction TSVGColorProfile.GetRenderingIntent: TSVGRenderingIntent;\nvar\n  s: string;\nbegin\n  s := Attribute['rendering-intent','auto'];\n  if s = 'auto' then\n    result := sriAuto\n  else if s = 'perceptual' then\n    result :=  sriPerceptual\n  else if s = 'relative-colorimetric' then\n    result := sriRelativeColorimetric\n  else if s = 'saturation' then\n    result := sriSaturation\n  else { 'absolute-colorimetric' }\n    result := sriAbsoluteColorimetric;\nend;\n\nfunction TSVGColorProfile.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGColorProfile.SetLocal(AValue: string);\nbegin\n  Attribute['local'] := AValue;\nend;\n\nprocedure TSVGColorProfile.SetName(AValue: string);\nbegin\n  Attribute['name'] := AValue;\nend;\n\nprocedure TSVGColorProfile.SetRenderingIntent(AValue: TSVGRenderingIntent);\nbegin\n  if AValue = sriAuto then\n    Attribute['rendering-intent'] := 'auto'\n  else if AValue = sriPerceptual then\n    Attribute['rendering-intent'] := 'perceptual'\n  else if AValue = sriRelativeColorimetric then\n    Attribute['rendering-intent'] := 'relative-colorimetric'\n  else if AValue = sriSaturation then\n    Attribute['rendering-intent'] := 'saturation'\n  else { sriAbsoluteColorimetric }\n    Attribute['rendering-intent'] := 'absolute-colorimetric'\nend;\n\nprocedure TSVGColorProfile.SetXlinkHref(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nclass function TSVGColorProfile.GetDOMTag: string;\nbegin\n  Result:= 'colorprofile';\nend;\n\n{ TSVGImage }\n\nfunction TSVGImage.GetBitmap: TBGRACustomBitmap;\nvar\n  s: String;\n  posDelim: SizeInt;\n  stream64: TStringStream;\n  decoder: TBase64DecodingStream;\n  byteStream: TMemoryStream;\nbegin\n  if FBitmap = nil then\n  begin\n    FBitmap := BGRABitmapFactory.Create;\n    s := xlinkHref;\n    if copy(s,1,5) = 'data:' then\n    begin\n      posDelim := pos(';', s);\n      if posDelim > 0 then\n      begin\n        if copy(s, posDelim+1, 7) = 'base64,' then\n        begin\n          byteStream := TMemoryStream.Create;\n          try\n            stream64 := TStringStream.Create(s);\n            try\n              stream64.Position:= posDelim+7;\n              decoder := TBase64DecodingStream.Create(stream64, bdmMIME);\n              try\n                byteStream.CopyFrom(decoder, decoder.Size);\n                byteStream.Position:= 0;\n              finally\n                decoder.Free;\n              end;\n            finally\n              stream64.Free;\n            end;\n            try\n              FBitmap.LoadFromStream(byteStream);\n            except\n              on ex: exception do\n              begin\n                //image discarded if error\n                FBitmap.SetSize(0, 0);\n              end;\n            end;\n          finally\n            byteStream.Free;\n          end;\n        end;\n      end;\n    end;\n  end;\n  result := FBitmap;\nend;\n\nfunction TSVGImage.GetExternalResourcesRequired: boolean;\nbegin\n  if Attribute['externalResourcesRequired'] = 'true' then\n    result := true\n  else\n    result := false;\nend;\n\nfunction TSVGImage.GetImageRendering: TSVGImageRendering;\nvar s: string;\nbegin\n  s := AttributeOrStyle['image-rendering'];\n  if (s = 'smooth') or (s = 'optimizeQuality') then result := sirSmooth\n  else if s = 'high-quality' then result := sirHighQuality\n  else if s = 'crisp-edges' then result := sirCrispEdges\n  else if (s = 'pixelated') or (s = 'optimizeSpeed') then result := sirPixelated\n  else result := sirAuto;\nend;\n\nfunction TSVGImage.GetX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['x'];\nend;\n\nfunction TSVGImage.GetY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['y'];\nend;\n\nfunction TSVGImage.GetWidth: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['width'];\nend;\n\nfunction TSVGImage.GetHeight: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['height'];\nend;\n\nfunction TSVGImage.GetPreserveAspectRatio: TSVGPreserveAspectRatio;\nbegin\n  result := TSVGPreserveAspectRatio.Parse(Attribute['preserveAspectRatio','xMidYMid']);\nend;\n\nfunction TSVGImage.GetXlinkHref: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nprocedure TSVGImage.SetBitmap(AValue: TBGRACustomBitmap; AOwned: boolean);\nvar\n  byteStream: TMemoryStream;\nbegin\n  if AValue = FBitmap then exit;\n  FreeAndNil(FBitmap);\n  if AOwned then\n    FBitmap := AValue\n    else FBitmap := AValue.Duplicate;\n  if FBitmap = nil then\n  begin\n    FDomElem.RemoveAttribute('xlink:href');\n    FDomElem.RemoveAttribute('href');\n    exit;\n  end;\n  byteStream := TMemoryStream.Create;\n  try\n    FBitmap.SaveToStreamAsPng(byteStream);\n    SetBitmap(byteStream, 'image/png');\n  finally\n    byteStream.Free;\n  end;\nend;\n\nprocedure TSVGImage.SetBitmap(AStream: TStream; AMimeType: string);\nvar\n  s: TStringStream;\n  encoder: TBase64EncodingStream;\nbegin\n  s := TStringStream.Create('data:'+AMimeType+';base64,');\n  encoder := nil;\n  try\n    encoder := TBase64EncodingStream.Create(s);\n    s.Position:= s.Size;\n    AStream.Position := 0;\n    encoder.CopyFrom(AStream, AStream.Size);\n    encoder.Flush;\n    xlinkHref:= s.DataString;\n  finally\n    encoder.Free;\n    s.Free;\n  end;\nend;\n\nprocedure TSVGImage.SetExternalResourcesRequired(AValue: boolean);\nbegin\n  if AValue then\n    Attribute['ExternalResourcesRequired'] := 'true'\n  else\n    Attribute['ExternalResourcesRequired'] := 'false';\nend;\n\nprocedure TSVGImage.SetImageRendering(AValue: TSVGImageRendering);\nvar s: string;\nbegin\n  case AValue of\n  sirSmooth: s := 'smooth';\n  sirHighQuality: s := 'high-quality';\n  sirCrispEdges: s := 'crisp-edges';\n  sirPixelated: s := 'pixelated';\n  else {sirAuto} s := 'auto';\n  end;\nend;\n\nprocedure TSVGImage.SetX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['x'] := AValue;\nend;\n\nprocedure TSVGImage.SetY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['y'] := AValue;\nend;\n\nprocedure TSVGImage.SetWidth(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['width'] := AValue;\nend;\n\nprocedure TSVGImage.SetHeight(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['height'] := AValue;\nend;\n\nprocedure TSVGImage.SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\nbegin\n  Attribute['preserveAspectRatio'] := AValue.ToString;\nend;\n\nprocedure TSVGImage.SetXlinkHref(AValue: string);\nbegin\n  if xlinkHref = AValue then exit;\n  Attribute['xlink:href'] := AValue;\n  FreeAndNil(FBitmap);\nend;\n\nprocedure TSVGImage.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  aspect: TSVGPreserveAspectRatio;\n  coord: TPointF;\n  w, h: single;\n  ratioBitmap: single;\n  ratioPresentation: Single;\n  visualW, visualH: single;\n  filter: TResampleFilter;\nbegin\n  coord := PointF(Units.ConvertWidth(x, AUnit).value,\n                  Units.ConvertHeight(y, AUnit).value);\n  w := Units.ConvertWidth(width, AUnit).value;\n  h := Units.ConvertHeight(height, AUnit).value;\n  if (w = 0) or (h = 0) or Bitmap.Empty then exit;\n  case imageRendering of\n  sirAuto, sirCrispEdges: filter := rfHalfCosine;\n  sirPixelated: filter := rfBox;\n  else filter := rfLinear;\n  end;\n  aspect := preserveAspectRatio;\n  if not aspect.Preserve then\n    ACanvas2d.drawImage(Bitmap, coord.x, coord.y, w, h, filter)\n  else\n  begin\n    ratioBitmap := Bitmap.Width/Bitmap.Height;\n    ratioPresentation := w/h;\n    if (ratioBitmap >= ratioPresentation) xor aspect.Slice then\n    begin\n      visualW := w;\n      visualH := visualW / ratioBitmap;\n    end else\n    begin\n      visualH := h;\n      visualW := visualH * ratioBitmap;\n    end;\n    case aspect.HorizAlign of\n    taRightJustify: IncF(coord.x, w - visualW);\n    taCenter: IncF(coord.x, (w - visualW)/2);\n    end;\n    case aspect.VertAlign of\n    tlBottom: IncF(coord.y, h - visualH);\n    tlCenter: IncF(coord.y, (h - visualH)/2);\n    end;\n    ACanvas2d.drawImage(FBitmap, coord.x, coord.y, visualW, visualH, filter);\n  end;\nend;\n\nconstructor TSVGImage.Create(ADocument: TDOMDocument;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(ADocument, AUnits, ADataLink);\n  FBitmap:= nil;\nend;\n\nconstructor TSVGImage.Create(AElement: TDOMElement; AUnits: TCSSUnitConverter;\n  ADataLink: TSVGDataLink);\nbegin\n  inherited Create(AElement, AUnits, ADataLink);\n  FBitmap:= nil;\nend;\n\ndestructor TSVGImage.Destroy;\nbegin\n  FBitmap.Free;\n  inherited Destroy;\nend;\n\nclass function TSVGImage.GetDOMTag: string;\nbegin\n  Result:= 'image';\nend;\n\nprocedure TSVGImage.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('x') then x := Units.ConvertWidth(x, AUnit);\n  if HasAttribute('y') then y := Units.ConvertHeight(y, AUnit);\n  if HasAttribute('width') then width := Units.ConvertWidth(width, AUnit);\n  if HasAttribute('height') then height := Units.ConvertHeight(height, AUnit);\nend;\n\n{ TSVGPattern }\n\nfunction TSVGPattern.GetPatternUnits: TSVGObjectUnits;\nbegin\n  if Attribute['patternUnits'] = 'userSpaceOnUse' then\n    result := souUserSpaceOnUse\n  else\n    result := souObjectBoundingBox;\nend;\n\nfunction TSVGPattern.GetPatternContentUnits: TSVGObjectUnits;\nbegin\n  if Attribute['patternContentUnits'] = 'objectBoundingBox' then\n    result := souObjectBoundingBox\n  else\n    result := souUserSpaceOnUse;\nend;\n\nfunction TSVGPattern.GetPatternTransform: string;\nbegin\n  result := Attribute['patternTransform'];\nend;\n\nfunction TSVGPattern.GetViewBox: TSVGViewBox;\nbegin\n  result := TSVGViewBox.Parse(Attribute['viewBox']);\nend;\n\nprocedure TSVGPattern.SetPatternUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['patternUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['patternUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGPattern.SetPatternContentUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['patternContentUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['patternContentUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGPattern.SetPatternTransform(AValue: string);\nbegin\n  Attribute['patternTransform'] := AValue;\nend;\n\nprocedure TSVGPattern.SetViewBox(AValue: TSVGViewBox);\nbegin\n  Attribute['viewBox'] := AValue.ToString;\nend;\n\nprocedure TSVGPattern.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  //todo\nend;\n\nclass function TSVGPattern.GetDOMTag: string;\nbegin\n  Result:= 'pattern';\nend;\n\n{ TSVGMarker }\n\nfunction TSVGMarker.GetExternalResourcesRequired: boolean;\nbegin\n  if Attribute['externalResourcesRequired'] = 'true' then\n    result := true\n  else\n    result := false;\nend;\n\nfunction TSVGMarker.GetViewBox: TSVGViewBox;\nbegin\n  result := TSVGViewBox.Parse(Attribute['viewBox']);\nend;\n\nfunction TSVGMarker.GetPreserveAspectRatio: TSVGPreserveAspectRatio;\nbegin\n  result := TSVGPreserveAspectRatio.Parse(Attribute['preserveAspectRatio','xMidYMid']);\nend;\n\nfunction TSVGMarker.GetRefX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['refX'];\nend;\n\nfunction TSVGMarker.GetRefY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['refY'];\nend;\n\nfunction TSVGMarker.GetMarkerWidth: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['markerWidth'];\nend;\n\nfunction TSVGMarker.GetMarkerHeight: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['markerHeight'];\nend;  \n\nfunction TSVGMarker.GetMarkerUnits: TSVGMarkerUnits;\nbegin\n  if Attribute['markerUnits','strokeWidth'] = 'strokeWidth' then\n    result := smuStrokeWidth\n  else\n    result := smuUserSpaceOnUse;\nend;\n\nfunction TSVGMarker.GetOrient: TSVGOrient;\nvar\n  err: integer;\n  s: string;\nbegin\n  s := Attribute['orient','0'];\n  result.angle := 0;\n  if s = 'auto' then\n    result.auto := soaAuto\n  else if s = 'auto-start-reverse' then\n    result.auto := soaAutoReverse\n  else\n  begin\n    result.auto := soaNone;\n    Val(s, result.angle, err);\n    if err <> 0 then\n      raise Exception('conversion error: '+IntToStr(err)+#13+'\"'+s+'\"');\n  end;\nend;\n\nprocedure TSVGMarker.SetExternalResourcesRequired(AValue: boolean);\nbegin\n  if AValue then\n    Attribute['ExternalResourcesRequired'] := 'true'\n  else\n    Attribute['ExternalResourcesRequired'] := 'false';\nend;\n\nprocedure TSVGMarker.SetViewBox(AValue: TSVGViewBox);\nbegin\n  Attribute['viewBox'] := AValue.ToString;\nend;\n\nprocedure TSVGMarker.SetPreserveAspectRatio(AValue: TSVGPreserveAspectRatio);\nbegin\n  Attribute['preserveAspectRatio'] := AValue.ToString;\nend;\n\nprocedure TSVGMarker.SetRefX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['refX'] := AValue;\nend;\n\nprocedure TSVGMarker.SetRefY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['refY'] := AValue;\nend;\n\nprocedure TSVGMarker.SetMarkerWidth(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['markerWidth'] := AValue;\nend;\n\nprocedure TSVGMarker.SetMarkerHeight(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['markerHeight'] := AValue;\nend;      \n\nprocedure TSVGMarker.SetMarkerUnits(AValue: TSVGMarkerUnits);\nbegin\n  if AValue = smuStrokeWidth then\n    Attribute['markerUnits'] := 'strokeWidth'\n  else\n    Attribute['markerUnits'] := 'useSpaceOnUse';\nend;\n\nprocedure TSVGMarker.SetOrient(AValue: TSVGOrient);\nvar\n  s: string;\nbegin\n  if AValue.auto = soaAuto then\n    s := 'auto'\n  else if AValue.auto = soaAutoReverse then\n    s := 'auto-start-reverse'\n  else\n    s := FloatToStr(AValue.angle);\n  Attribute['orient'] := s;\nend;\n\nprocedure TSVGMarker.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  //todo\nend;\n\nclass function TSVGMarker.GetDOMTag: string;\nbegin\n  Result:= 'marker';\nend;\n\nprocedure TSVGMarker.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('refX') then refX := Units.ConvertWidth(refX, AUnit);\n  if HasAttribute('refY') then refY := Units.ConvertHeight(refY, AUnit);\n  if HasAttribute('markerWidth') then markerWidth := Units.ConvertWidth(markerWidth, AUnit);\n  if HasAttribute('markerHeight') then markerHeight := Units.ConvertHeight(markerHeight, AUnit);\nend;\n\n{ TSVGMask }\n\nfunction TSVGMask.GetExternalResourcesRequired: boolean;\nbegin\n  if Attribute['externalResourcesRequired'] = 'true' then\n    result := true\n  else\n    result := false;\nend;\n\nfunction TSVGMask.GetX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['x', FloatWithCSSUnit(0, cuPercent)];\nend;\n\nfunction TSVGMask.GetY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['y', FloatWithCSSUnit(0, cuPercent)];\nend;\n\nfunction TSVGMask.GetWidth: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnitDef['width', FloatWithCSSUnit(100, cuPercent)];\nend;\n\nfunction TSVGMask.GetHeight: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['height', FloatWithCSSUnit(100, cuPercent)];\nend;\n\nfunction TSVGMask.GetMaskUnits: TSVGObjectUnits;\nbegin\n  if Attribute['maskUnits'] = 'objectBoundingBox' then\n    result := souObjectBoundingBox\n  else\n    result := souUserSpaceOnUse;\nend;\n\nfunction TSVGMask.GetMaskContentUnits: TSVGObjectUnits;\nbegin\n  if Attribute['maskContentUnits'] = 'objectBoundingBox' then\n    result := souObjectBoundingBox\n  else\n    result := souUserSpaceOnUse;\nend;\n\nprocedure TSVGMask.SetExternalResourcesRequired(AValue: boolean);\nbegin\n  if AValue then\n    Attribute['ExternalResourcesRequired'] := 'true'\n  else\n    Attribute['ExternalResourcesRequired'] := 'false';\nend;\n\nprocedure TSVGMask.SetX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['x'] := AValue;\nend;\n\nprocedure TSVGMask.SetY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['y'] := AValue;\nend;\n\nprocedure TSVGMask.SetWidth(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['width'] := AValue;\nend;\n\nprocedure TSVGMask.SetHeight(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['height'] := AValue;\nend;\n\nprocedure TSVGMask.SetMaskUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['maskUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['maskUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGMask.SetMaskContentUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['maskContentUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['maskContentUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGMask.ApplyMaskTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar maskSurface: TBGRACustomBitmap;\n  maskContext: TBGRACanvas2D;\n  oldMatrix: TAffineMatrix;\n  vx,vy,vw,vh: single;\nbegin\n  maskSurface := BGRABitmapFactory.Create(ACanvas2d.Width, ACanvas2d.Height, BGRABlack);\n  maskContext := TBGRACanvas2D.Create(maskSurface);\n  maskContext.copyStateFrom(ACanvas2D);\n  If HasAttribute('x') or HasAttribute('y') or\n    HasAttribute('width') or HasAttribute('height') then\n  begin\n    vx:= Units.ConvertWidth(x,AUnit).value;\n    vy:= Units.ConvertHeight(y,AUnit).value;\n    vw:= Units.ConvertWidth(width,AUnit).value;\n    vh:= Units.ConvertHeight(height,AUnit).value;\n    maskContext.beginPath;\n    maskContext.rect(vx, vy, vw, vh);\n    maskContext.clip;\n  end;\n  Content.Draw(maskContext, AUnit);\n  oldMatrix := ACanvas2d.matrix;\n  ACanvas2d.resetTransform;\n  ACanvas2d.mask(maskSurface, 0, 0);\n  ACanvas2d.matrix := oldMatrix;\n  maskContext.Free;\n  maskSurface.Free;\nend;\n\nclass function TSVGMask.GetDOMTag: string;\nbegin\n  Result:= 'mask';\nend;\n\nprocedure TSVGMask.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('x') then x := Units.ConvertWidth(x, AUnit);\n  if HasAttribute('y') then y := Units.ConvertHeight(y, AUnit);\n  if HasAttribute('width') then width := Units.ConvertWidth(width, AUnit);\n  if HasAttribute('height') then height := Units.ConvertHeight(height, AUnit);\nend;\n\n{ TSVGGroup }\n\nfunction TSVGGroup.GetFontSize: TFloatWithCSSUnit;\nbegin\n  result:= GetVerticalAttributeOrStyleWithUnit('font-size',Units.CurrentFontEmHeight,false);\nend;\n\nfunction TSVGGroup.GetIsLayer: boolean;\nbegin\n  result := (Attribute['inkscape:groupmode'] = 'layer')\nend;\n\nfunction TSVGGroup.GetName: string;\nbegin\n  result := Attribute['inkscape:label'];\nend;\n\nprocedure TSVGGroup.SetFontSize(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['font-size'] := AValue;\nend;\n\nprocedure TSVGGroup.SetIsLayer(AValue: boolean);\nbegin\n  if AValue = GetIsLayer then exit;\n  if AValue then\n    Attribute['inkscape:groupmode'] := 'layer'\n    else Attribute['inkscape:groupmode'] := '';\nend;\n\nprocedure TSVGGroup.SetName(AValue: string);\nbegin\n  Attribute['inkscape:label'] := AValue;\nend;\n\nprocedure TSVGGroup.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  prevFontSize: TFloatWithCSSUnit;\nbegin\n  prevFontSize := EnterFontSize;\n  FContent.Draw(ACanvas2d, AUnit);\n  ExitFontSize(prevFontSize);\nend;\n\nclass function TSVGGroup.OwnDatalink: boolean;\nbegin\n  Result:= true;\nend;\n\nclass function TSVGGroup.GetDOMTag: string;\nbegin\n  Result:= 'g';\nend;\n\nprocedure TSVGGroup.ConvertToUnit(AUnit: TCSSUnit);\nvar\n  prevFontSize: TFloatWithCSSUnit;\nbegin\n  if HasAttribute('font-size') then\n    SetVerticalAttributeWithUnit('font-size', Units.ConvertHeight(GetVerticalAttributeWithUnit('font-size'), AUnit));\n  prevFontSize := EnterFontSize;\n  inherited ConvertToUnit(AUnit);\n  ExitFontSize(prevFontSize);\nend;\n\n{ TSVGStyle }  \n\nconstructor TSVGStyle.Create(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(AElement, AUnits, ADataLink);\n  Parse(string(AElement.TextContent));\nend;\n\nprocedure TSVGStyle.Initialize;\nbegin\n  inherited Initialize;\n  Clear;\nend;\n\nclass function TSVGStyle.GetDOMTag: string;\nbegin\n  Result:= 'style';\nend;\n\ndestructor TSVGStyle.Destroy;\nbegin\n  Clear;\n  inherited Destroy;\nend;\n\nprocedure TSVGStyle.ConvertToUnit(AUnit: TCSSUnit);\nvar\n  declarations: String;\n\n  function GetPropertyValue(AName: string; out AValue: TFloatWithCSSUnit): boolean;\n  var valueStr: string;\n  begin\n    valueStr := GetPropertyFromStyleDeclarationBlock(declarations, AName, '');\n    if valueStr <> '' then\n    begin\n      AValue := Units.parseValue(valueStr, FloatWithCSSUnit(0, cuCustom));\n      result := true;\n    end else\n    begin\n      AValue := FloatWithCSSUnit(0, cuCustom);\n      result := false;\n    end;\n  end;\n\n  procedure SetPropertyValue(AName: string; AValue: TFloatWithCSSUnit);\n  begin\n    UpdateStyleDeclarationBlock(declarations, AName, Units.formatValue(AValue));\n  end;\n\nvar\n  i: Integer;\n  value: TFloatWithCSSUnit;\nbegin\n  inherited ConvertToUnit(AUnit);\n  for i := 0 to RulesetCount-1 do\n  begin\n    declarations := Ruleset[i].declarations;\n    if GetPropertyValue('stroke-width', value) then\n      SetPropertyValue('stroke-width', Units.ConvertOrtho(value, AUnit));\n    if GetPropertyValue('stroke-dash-offset', value) then\n      SetPropertyValue('stroke-dash-offset', Units.ConvertOrtho(value, AUnit));\n    if GetPropertyValue('font-size', value) then\n      SetPropertyValue('font-size', Units.ConvertHeight(value, AUnit));\n    FRulesets[i].declarations := declarations;\n  end;\nend;\n\nprocedure TSVGStyle.Parse(const s: String);\n\n  function IsValidDeclarationBlock(const sa: string): boolean;\n  var\n    i: integer;\n  begin\n    //(for case example \"{ ; ;}\")\n    for i:= 1 to Length(sa) do\n     if not (sa[i] in [' ',';']) then\n      exit(true);\n    result:= false;\n  end;\n\nconst\n  EmptyRuleset: TSVGRuleset = (selector: ''; declarations: '');\nvar\n  i,l,pg: integer;\n  st: String;\n  rec: TSVGRuleset;\nbegin\n  (*\n    Example of internal style block\n    circle {..}         \n    circle.type1 {..}   \n    .pic1 {..}          \n  *)\n  Clear;\n  l:= 0;\n  pg:= 0;\n  st:= '';\n  rec:= EmptyRuleset;\n  for i:= 1 to Length(s) do\n  begin\n    if s[i] = '{' then\n    begin\n      Inc(pg);\n      if (pg = 1) and (Length(st) <> 0) then\n      begin\n       rec.selector:= Trim(st);\n       st:= '';\n      end;\n    end\n    else if s[i] = '}' then\n    begin\n      Dec(pg);\n      if (pg = 0) and (Length(st) <> 0) then\n      begin\n        if IsValidDeclarationBlock(st) then\n        begin\n          rec.declarations:= Trim(st);\n          Inc(l);\n          SetLength(FRulesets,l);\n          FRulesets[l-1]:= rec;\n          rec:= EmptyRuleset;\n        end;\n        st:= '';\n      end;\n    end\n    else\n      st:= st + s[i];\n  end;\nend;\n\nfunction TSVGStyle.GetRulesetCount: integer;\nbegin\n  result := Length(FRulesets);\nend;\n\nfunction TSVGStyle.IsValidRulesetIndex(const AIndex: integer): boolean;\nbegin\n  result:= (AIndex >= 0) and (AIndex < Length(FRulesets));\nend;\n\nfunction TSVGStyle.GetRuleset(const AIndex: integer): TSVGRuleset;\nbegin\n  if IsValidRulesetIndex(AIndex) then\n    result:= FRulesets[AIndex]\n  else\n    raise exception.Create(rsInvalidIndex);\nend;\n\nprocedure TSVGStyle.SetRuleset(const AIndex: integer; sr: TSVGRuleset);\nbegin\n  if IsValidRulesetIndex(AIndex) then\n    FRulesets[AIndex]:= sr\n  else\n    raise exception.Create(rsInvalidIndex);\nend;\n\nfunction TSVGStyle.Count: Integer;\nbegin\n  result:= Length(FRulesets);\nend;\n\nfunction TSVGStyle.Find(ARuleset: TSVGRuleset): integer;\nvar\n  i: integer;\nbegin\n  for i:= 0 to Length(FRulesets)-1 do\n    with FRulesets[i] do\n      if (selector = ARuleset.selector) and\n         (declarations = ARuleset.declarations) then\n      begin\n        result:= i;\n        Exit;\n      end;\n  result:= -1;\nend;\n\nfunction TSVGStyle.Find(const AName: string): integer;\nvar\n  i: integer;\nbegin\n  for i:= 0 to Length(FRulesets)-1 do\n    with FRulesets[i] do\n      if selector = AName then\n      begin\n        result:= i;\n        Exit;\n      end;\n  result:= -1;\nend;\n\nfunction TSVGStyle.Add(ARuleset: TSVGRuleset): integer;\nvar\n  l: integer;\nbegin\n  l:= Length(FRulesets);\n  SetLength(FRulesets,l+1);\n  FRulesets[l]:= ARuleset;\n  result:= l;\nend;\n\nprocedure TSVGStyle.Remove(ARuleset: TSVGRuleset);\nvar\n  l,p: integer;\nbegin\n  p:= Find(ARuleset);\n  l:= Length(FRulesets);\n  if p <> -1 then\n  begin\n    Finalize(FRulesets[p]);\n    System.Move(FRulesets[p+1], FRulesets[p], (l-p)*SizeOf(TSVGRuleset));\n    SetLength(FRulesets,l-1);\n  end;\nend;\n\nprocedure TSVGStyle.Clear;\nbegin\n  SetLength(FRulesets,0);\nend;\n\nprocedure TSVGStyle.ReParse;\nbegin\n Parse(string(FDomElem.TextContent));\nend;           \n\n{ TSVGRectangle }\n\nfunction TSVGRectangle.GetX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['x'];\nend;\n\nfunction TSVGRectangle.GetY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['y'];\nend;\n\nfunction TSVGRectangle.GetWidth: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['width'];\nend;\n\nfunction TSVGRectangle.GetHeight: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['height'];\nend;\n\nfunction TSVGRectangle.GetRX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['rx'];\nend;\n\nfunction TSVGRectangle.GetRY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['ry'];\nend;\n\nprocedure TSVGRectangle.SetX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['x'] := AValue;\nend;\n\nprocedure TSVGRectangle.SetY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['y'] := AValue;\nend;\n\nprocedure TSVGRectangle.SetWidth(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['width'] := AValue;\nend;\n\nprocedure TSVGRectangle.SetHeight(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['height'] := AValue;\nend;\n\nprocedure TSVGRectangle.SetRX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['rx'] := AValue;\nend;\n\nprocedure TSVGRectangle.SetRY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['ry'] := AValue;\nend;\n\nclass function TSVGRectangle.GetDOMTag: string;\nbegin\n  Result:= 'rect';\nend;\n\nprocedure TSVGRectangle.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('x') then x := Units.ConvertWidth(x, AUnit);\n  if HasAttribute('y') then y := Units.ConvertHeight(y, AUnit);\n  if HasAttribute('rx') then rx := Units.ConvertWidth(rx, AUnit);\n  if HasAttribute('ry') then ry := Units.ConvertHeight(ry, AUnit);\n  if HasAttribute('width') then width := Units.ConvertWidth(width, AUnit);\n  if HasAttribute('height') then height := Units.ConvertHeight(height, AUnit);\nend;\n\nprocedure TSVGRectangle.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  vx,vy,vw,vh: Single;\nbegin\n  if not isStrokeNone or not isFillNone then\n  begin\n    vx:= Units.ConvertWidth(x,AUnit).value;\n    vy:= Units.ConvertHeight(y,AUnit).value;\n    vw:= Units.ConvertWidth(width,AUnit).value;\n    vh:= Units.ConvertHeight(height,AUnit).value;\n    ACanvas2d.beginPath;\n    ACanvas2d.roundRect(vx,vy, vw,vh,\n       Units.ConvertWidth(rx,AUnit).value,Units.ConvertHeight(ry,AUnit).value);\n    InitializeGradient(ACanvas2d, PointF(vx,vy),vw,vh,AUnit);\n    Paint(ACanvas2D,AUnit);\n  end;\nend;\n\nprocedure TSVGRectangle.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  vx,vy,vw,vh: Single;\nbegin\n  vx:= Units.ConvertWidth(x,AUnit).value;\n  vy:= Units.ConvertHeight(y,AUnit).value;\n  vw:= Units.ConvertWidth(width,AUnit).value;\n  vh:= Units.ConvertHeight(height,AUnit).value;\n  ACanvas2d.roundRect(vx,vy, vw,vh,\n     Units.ConvertWidth(rx,AUnit).value,Units.ConvertHeight(ry,AUnit).value);\nend;\n\n{ TSVGPolypoints }\n\nfunction TSVGPolypoints.GetClosed: boolean;\nbegin\n  result := FDomElem.TagName = 'polygon';\nend;\n\nfunction TSVGPolypoints.GetBoundingBoxF: TRectF;\nbegin\n  if not FBoundingBoxComputed then\n    ComputeBoundingBox(pointsF);\n  result := FBoundingBox;\nend;\n\nfunction TSVGPolypoints.GetPoints: string;\nbegin\n  result := Attribute['points'];\nend;\n\nfunction TSVGPolypoints.GetPointsF: ArrayOfTPointF;\nvar parser: TSVGParser;\n  nbcoord,i: integer;\nbegin\n  parser:=TSVGParser.Create(points);\n  nbcoord := 0;\n  repeat\n    parser.ParseFloat;\n    if not parser.NumberError then\n      inc(nbcoord);\n  until parser.NumberError or parser.Done;\n  parser.ClearError;\n  setlength(Result,nbcoord div 2);\n  parser.Position := 1;\n  for i := 0 to high(result) do\n  begin\n    result[i].x := parser.ParseFloat;\n    result[i].y := parser.ParseFloat;\n  end;\n  parser.Free;\nend;\n\nprocedure TSVGPolypoints.SetPoints(AValue: string);\nbegin\n  Attribute['points'] := AValue;\nend;\n\nprocedure TSVGPolypoints.SetPointsF(AValue: ArrayOfTPointF);\nvar s: string;\n  i: integer;\nbegin\n  s:= '';\n  for i := 0 to high(AValue) do\n  begin\n    if s <> '' then AppendStr(s, ' ');\n    with AValue[i] do\n      AppendStr(s, TCSSUnitConverter.formatValue(x)+' '+TCSSUnitConverter.formatValue(y));\n  end;\n  points := s;\n  ComputeBoundingBox(AValue);\nend;\n\nprocedure TSVGPolypoints.ComputeBoundingBox(APoints: ArrayOfTPointF);\nvar\n  i: Integer;\nbegin\n  if length(APoints) > 1 then\n  begin\n    with APoints[0] do\n      FBoundingBox:= RectF(x,y,x,y);\n    for i:= 1 to high(APoints) do\n      with APoints[i] do\n      begin\n        if x < FBoundingBox.Left then\n         FBoundingBox.Left:= x\n        else if x > FBoundingBox.Right then\n         FBoundingBox.Right:= x;\n        if y < FBoundingBox.Top then\n         FBoundingBox.Top:= y\n        else if y > FBoundingBox.Bottom then\n         FBoundingBox.Bottom:= y;\n      end;\n    FBoundingBoxComputed := true;\n  end else\n  begin\n    FBoundingBox := RectF(0,0,0,0);\n    FBoundingBoxComputed := true;\n  end;\nend;\n\nconstructor TSVGPolypoints.Create(ADocument: TDOMDocument;\n  AUnits: TCSSUnitConverter; AClosed: boolean; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(ADocument, AUnits, ADataLink);\n  if AClosed then\n    Init(ADocument, 'polygon', AUnits)\n  else\n    Init(ADocument, 'polyline', AUnits);\nend;\n\ndestructor TSVGPolypoints.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TSVGPolypoints.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  prevMatrix: TAffineMatrix;\n  pts: ArrayOfTPointF;\nbegin\n  if isFillNone and isStrokeNone then exit;\n  if AUnit <> cuCustom then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.scale(Units.ConvertWidth(1,cuCustom,AUnit),\n      Units.ConvertHeight(1,cuCustom,AUnit));\n    InternalDraw(ACanvas2d, cuCustom);\n    ACanvas2d.matrix:= prevMatrix;\n  end else\n  begin\n    ACanvas2d.beginPath;\n    pts := pointsF;\n    ACanvas2d.polylineTo(pts);\n    if closed then ACanvas2d.closePath;\n    \n    with boundingBoxF do\n      InitializeGradient(ACanvas2d,\n        PointF(Left,Top),abs(Right-Left),abs(Bottom-Top),AUnit);\n    Paint(ACanvas2D, AUnit);\n  end;\nend;\n\nprocedure TSVGPolypoints.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D;\n  AUnit: TCSSUnit);\nvar\n  prevMatrix: TAffineMatrix;\n  pts: ArrayOfTPointF;\nbegin\n  if AUnit <> cuCustom then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.scale(Units.ConvertWidth(1,cuCustom,AUnit),\n      Units.ConvertHeight(1,cuCustom,AUnit));\n    InternalCopyPathTo(ACanvas2d, cuCustom);\n    ACanvas2d.matrix:= prevMatrix;\n  end else\n  begin\n    pts := pointsF;\n    if length(pts) = 0 then exit;\n    ACanvas2d.moveTo(pts[0]);\n    ACanvas2d.polylineTo(pts);\n  end;\nend;\n\n{ TSVGPath }\n\nfunction TSVGPath.GetPathLength: TFloatWithCSSUnit;\nbegin\n  result := OrthoAttributeWithUnit['pathLength'];\nend;\n\nfunction TSVGPath.GetPath: TBGRAPath;\nbegin\n  if FPath = nil then\n    FPath := TBGRAPath.Create(Attribute['d']);\n  result := FPath;\nend;\n\nfunction TSVGPath.GetBoundingBoxF: TRectF;\nbegin\n  if not FBoundingBoxComputed then\n  begin\n    FBoundingBox := path.GetBounds;\n    FBoundingBoxComputed := true;\n  end;\n  result := FBoundingBox;\nend;\n\nfunction TSVGPath.GetData: string;\nbegin\n  if FPath = nil then\n    result := Attribute['d']\n  else\n    result := FPath.SvgString;\nend;\n\nprocedure TSVGPath.SetPathLength(AValue: TFloatWithCSSUnit);\nbegin\n  OrthoAttributeWithUnit['pathLength'] := AValue;\nend;\n\nprocedure TSVGPath.SetData(AValue: string);\nbegin\n  if FPath = nil then\n    Attribute['d'] := AValue\n  else\n    FPath.SvgString := AValue;\n  FBoundingBoxComputed := false;\nend;\n\nfunction TSVGPath.GetDOMElement: TDOMElement;\nbegin\n  if FPath <> nil then Attribute['d'] := FPath.SvgString;\n  Result:=inherited GetDOMElement;\nend;\n\nconstructor TSVGPath.Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(ADocument, AUnits, ADataLink);\n  FPath := nil;\n  FBoundingBoxComputed := false;\n  FBoundingBox := rectF(0,0,0,0);\nend;\n\nconstructor TSVGPath.Create(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  inherited Create(AElement, AUnits, ADataLink);\n  FPath := nil;\n  FBoundingBoxComputed := false;\n  FBoundingBox := rectF(0,0,0,0);\nend;\n\ndestructor TSVGPath.Destroy;\nbegin\n  FreeAndNil(FPath);\n  inherited Destroy;\nend;\n\nprocedure TSVGPath.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  prevMatrix: TAffineMatrix;\nbegin\n  if isFillNone and isStrokeNone then exit;\n  if AUnit <> cuCustom then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.scale(Units.ConvertWidth(1,cuCustom,AUnit),\n      Units.ConvertHeight(1,cuCustom,AUnit));\n    InternalDraw(ACanvas2d, cuCustom);\n    ACanvas2d.matrix:= prevMatrix;\n  end else\n  begin\n    ACanvas2d.path(path);\n    if Assigned(FillGradientElement) or Assigned(StrokeGradientElement) then\n      with boundingBoxF do\n        InitializeGradient(ACanvas2d,\n          PointF(Left,Top),abs(Right-Left),abs(Bottom-Top),AUnit);\n    Paint(ACanvas2D, AUnit);\n  end;\nend;\n\nprocedure TSVGPath.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  prevMatrix: TAffineMatrix;\nbegin\n  if AUnit <> cuCustom then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.scale(Units.ConvertWidth(1,cuCustom,AUnit),\n      Units.ConvertHeight(1,cuCustom,AUnit));\n    InternalCopyPathTo(ACanvas2d, cuCustom);\n    ACanvas2d.matrix:= prevMatrix;\n  end else\n    ACanvas2d.addPath(path);\nend;\n\nclass function TSVGPath.GetDOMTag: string;\nbegin\n  Result:= 'path';\nend;\n\n{ TSVGEllipse }\n\nfunction TSVGEllipse.GetCX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['cx'];\nend;\n\nfunction TSVGEllipse.GetCY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['cy'];\nend;\n\nfunction TSVGEllipse.GetRX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['rx'];\nend;\n\nfunction TSVGEllipse.GetRY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['ry'];\nend;\n\nprocedure TSVGEllipse.SetCX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['cx'] := AValue;\nend;\n\nprocedure TSVGEllipse.SetCY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['cy'] := AValue;\nend;\n\nprocedure TSVGEllipse.SetRX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['rx'] := AValue;\nend;\n\nprocedure TSVGEllipse.SetRY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['ry'] := AValue;\nend;\n\nprocedure TSVGEllipse.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  vcx,vcy,vrx,vry: Single;\nbegin\n  if not isFillNone or not isStrokeNone then\n  begin\n    vcx:= Units.ConvertWidth(cx,AUnit).value;\n    vcy:= Units.ConvertHeight(cy,AUnit).value;\n    vrx:= Units.ConvertWidth(rx,AUnit).value;\n    vry:= Units.ConvertHeight(ry,AUnit).value;\n    ACanvas2d.beginPath;\n    ACanvas2d.ellipse(vcx,vcy,vrx,vry);\n    InitializeGradient(ACanvas2d, PointF(vcx-vrx,vcy-vry),vrx*2,vry*2,AUnit);\n    Paint(ACanvas2D, AUnit);\n  end;\nend;\n\nprocedure TSVGEllipse.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D;\n  AUnit: TCSSUnit);\nvar\n  vcx,vcy,vrx,vry: Single;\nbegin\n  vcx:= Units.ConvertWidth(cx,AUnit).value;\n  vcy:= Units.ConvertHeight(cy,AUnit).value;\n  vrx:= Units.ConvertWidth(rx,AUnit).value;\n  vry:= Units.ConvertHeight(ry,AUnit).value;\n  ACanvas2d.ellipse(vcx,vcy,vrx,vry);\nend;\n\nclass function TSVGEllipse.GetDOMTag: string;\nbegin\n  Result:= 'ellipse';\nend;\n\nprocedure TSVGEllipse.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('cx') then cx := Units.ConvertWidth(cx, AUnit);\n  if HasAttribute('cy') then cy := Units.ConvertHeight(cy, AUnit);\n  if HasAttribute('rx') then rx := Units.ConvertWidth(rx, AUnit);\n  if HasAttribute('ry') then ry := Units.ConvertHeight(ry, AUnit);\nend;\n\n{ TSVGCircle }\n\nfunction TSVGCircle.GetCX: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['cx'];\nend;\n\nfunction TSVGCircle.GetCY: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['cy'];\nend;\n\nfunction TSVGCircle.GetR: TFloatWithCSSUnit;\nbegin\n  result := OrthoAttributeWithUnit['r'];\nend;\n\nprocedure TSVGCircle.SetCX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['cx'] := AValue;\nend;\n\nprocedure TSVGCircle.SetCY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['cy'] := AValue;\nend;\n\nprocedure TSVGCircle.SetR(AValue: TFloatWithCSSUnit);\nbegin\n  OrthoAttributeWithUnit['r'] := AValue;\nend;\n\nprocedure TSVGCircle.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  vcx,vcy,vr: Single;\nbegin\n  if not isFillNone or not isStrokeNone then\n  begin\n    vcx:= Units.ConvertWidth(cx,AUnit).value;\n    vcy:= Units.ConvertHeight(cy,AUnit).value;\n    vr:= Units.ConvertOrtho(r,AUnit).value;\n    ACanvas2d.beginPath;\n    ACanvas2d.circle(vcx,vcy,vr);\n    InitializeGradient(ACanvas2d, PointF(vcx-vr,vcy-vr),vr*2,vr*2,AUnit);\n    Paint(ACanvas2d, AUnit);\n  end;\nend;\n\nprocedure TSVGCircle.InternalCopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  vcx,vcy,vr: Single;\nbegin\n  vcx:= Units.ConvertWidth(cx,AUnit).value;\n  vcy:= Units.ConvertHeight(cy,AUnit).value;\n  vr:= Units.ConvertOrtho(r,AUnit).value;\n  ACanvas2d.circle(vcx,vcy,vr);\nend;\n\nclass function TSVGCircle.GetDOMTag: string;\nbegin\n  Result:= 'circle';\nend;\n\nprocedure TSVGCircle.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('cx') then cx := Units.ConvertWidth(cx, AUnit);\n  if HasAttribute('cy') then cy := Units.ConvertHeight(cy, AUnit);\n  if HasAttribute('r') then r := Units.ConvertOrtho(r, AUnit);\nend;\n\n{ TSVGLine }\n\nfunction TSVGLine.GetX1: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['x1'];\nend;\n\nfunction TSVGLine.GetX2: TFloatWithCSSUnit;\nbegin\n  result := HorizAttributeWithUnit['x2'];\nend;\n\nfunction TSVGLine.GetY1: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['y1'];\nend;\n\nfunction TSVGLine.GetY2: TFloatWithCSSUnit;\nbegin\n  result := VerticalAttributeWithUnit['y2'];\nend;\n\nprocedure TSVGLine.SetX1(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['x1'] := AValue;\nend;\n\nprocedure TSVGLine.SetX2(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['x2'] := AValue;\nend;\n\nprocedure TSVGLine.SetY1(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['y1'] := AValue;\nend;\n\nprocedure TSVGLine.SetY2(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['y2'] := AValue;\nend;\n\nprocedure TSVGLine.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  aaBefore: Boolean;\nbegin\n  if not isStrokeNone then\n  begin\n    ApplyStrokeStyle(ACanvas2D,AUnit);\n    ACanvas2d.beginPath;\n    ACanvas2d.moveTo(Units.ConvertWidth(x1,AUnit).value,Units.ConvertHeight(y1,AUnit).value);\n    ACanvas2d.lineTo(Units.ConvertWidth(x2,AUnit).value,Units.ConvertHeight(y2,AUnit).value);\n    aaBefore := ACanvas2d.antialiasing;\n    ACanvas2d.antialiasing:= antialiasing;\n    ACanvas2d.stroke;\n    ACanvas2D.antialiasing := aaBefore;\n  end;\nend;\n\nclass function TSVGLine.GetDOMTag: string;\nbegin\n  Result:= 'line';\nend;\n\nprocedure TSVGLine.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if HasAttribute('x1') then x1 := Units.ConvertWidth(x1, AUnit);\n  if HasAttribute('y1') then y1 := Units.ConvertHeight(y1, AUnit);\n  if HasAttribute('x2') then x2 := Units.ConvertWidth(x2, AUnit);\n  if HasAttribute('y2') then y2 := Units.ConvertHeight(y2, AUnit);\nend;\n\n{ TSVGGradient } //##\n\nfunction TSVGGradient.GetHRef: string;\nbegin\n  result := Attribute['xlink:href'];\nend;\n\nfunction TSVGGradient.GetSpreadMethod: TSVGSpreadMethod;\nvar\n  s: String;\nbegin\n  s := Attribute['spreadMethod'];\n  if s = 'reflect' then result := ssmReflect\n  else if s = 'repeat' then result := ssmRepeat\n  else result := ssmPad;\nend;\n\nprocedure TSVGGradient.SetColorInterpolation(AValue: TSVGColorInterpolation);\nbegin\n  if AValue = sciLinearRGB then\n    Attribute['color-interpolation'] := 'linearRGB'\n    else Attribute['color-interpolation'] := 'sRGB';\nend;\n\nprocedure TSVGGradient.SetGradientMatrix(AUnit: TCSSUnit; AValue: TAffineMatrix);\nbegin\n  if not IsAffineMatrixIdentity(AValue) then\n    gradientTransform := MatrixToTransform(AValue, AUnit)\n    else FDomElem.RemoveAttribute('gradientTransform');\nend;\n\nprocedure TSVGGradient.SetGradientTransform(AValue: string);\nbegin\n  Attribute['gradientTransform'] := AValue;\nend;\n\nfunction TSVGGradient.GetGradientUnits: TSVGObjectUnits;\nbegin\n  if Attribute['gradientUnits','objectBoundingBox'] = 'userSpaceOnUse' then\n    result := souUserSpaceOnUse\n  else\n    result := souObjectBoundingBox;\nend;\n\nfunction TSVGGradient.GetGradientTransform: string;\nbegin\n  result := Attribute['gradientTransform'];\nend;\n\nfunction TSVGGradient.GetColorInterpolation: TSVGColorInterpolation;\nbegin\n  if Attribute['color-interpolation'] = 'linearRGB' then\n    result := sciLinearRGB\n    else result := sciStdRGB;\nend;\n\nfunction TSVGGradient.GetGradientMatrix(AUnit: TCSSUnit): TAffineMatrix;\nbegin\n  result := TransformToMatrix(gradientTransform, AUnit);\nend;\n\nprocedure TSVGGradient.SetGradientUnits(AValue: TSVGObjectUnits);\nbegin\n  if AValue = souUserSpaceOnUse then\n    Attribute['gradientUnits'] := 'userSpaceOnUse'\n  else\n    Attribute['gradientUnits'] := 'objectBoundingBox';\nend;\n\nprocedure TSVGGradient.SetHRef(AValue: string);\nbegin\n  Attribute['xlink:href'] := AValue;\nend;\n\nprocedure TSVGGradient.SetSpreadMethod(AValue: TSVGSpreadMethod);\nvar\n  s: String;\nbegin\n  case AValue of\n    ssmReflect: s := 'reflect';\n    ssmRepeat: s := 'repeat';\n    else s := 'pad';\n  end;\n  Attribute['spreadMethod'] := s;\nend;\n\nprocedure TSVGGradient.Initialize;\nbegin\n  inherited;\n  InheritedGradients:= TSVGElementList.Create;\nend;\n\nfunction TSVGGradient.GetInheritedAttribute(AValue: string;\n  AConvMethod: TConvMethod; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nvar\n  i: integer;\n  el: TSVGGradient;\n  invalidDef: TFloatWithCSSUnit;\nbegin\n  invalidDef:= FloatWithCSSUnit(EmptySingle,cuPercent);\n  //find valid inherited Attribute (start from \"self\": item[0])\n  for i:= 0 to InheritedGradients.Count-1 do\n  begin\n    el:= TSVGGradient( InheritedGradients[i] );\n    with el do\n    begin\n      if AConvMethod = cmHoriz then\n        result:= HorizAttributeWithUnitDef[AValue,invalidDef]\n      else if AConvMethod = cmVertical then\n        result:= VerticalAttributeWithUnitDef[AValue,invalidDef]\n      else if AConvMethod = cmOrtho then\n        result:= OrthoAttributeWithUnitDef[AValue,invalidDef]\n      else\n        result:= AttributeWithUnitDef[AValue,invalidDef];\n\n      if (result.value <> invalidDef.value) or\n         (result.CSSUnit <> invalidDef.CSSUnit) then\n        exit;\n    end;\n  end;\n  result:= ADefault;\nend;\n\ndestructor TSVGGradient.Destroy;\nbegin\n  FreeAndNil(InheritedGradients);\n  inherited Destroy;\nend;\n\nprocedure TSVGGradient.ScanInheritedGradients(const forceScan: boolean = false);\nvar\n  el: TSVGGradient;\nbegin\n  //(if list empty = not scan)\n  if (InheritedGradients.Count <> 0) and (not forceScan) then\n    exit;\n\n  InheritedGradients.Clear;\n  InheritedGradients.Add(Self);//(important)\n  if FDataLink = nil then exit;\n  el:= Self;\n  while el.hRef <> '' do\n  begin\n    el := TSVGGradient(FDataLink.FindElementByRef(el.hRef, TSVGGradient));\n    if Assigned(el) then InheritedGradients.Add(el);\n  end;\nend;        \n\n{ TSVGLinearGradient }\n\nfunction TSVGLinearGradient.GetX1: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('x1',cmNone,FloatWithCSSUnit(0,cuPercent));\nend;\n\nfunction TSVGLinearGradient.GetX2: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('x2',cmNone,FloatWithCSSUnit(100,cuPercent));\nend;\n\nfunction TSVGLinearGradient.GetY1: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('y1',cmNone,FloatWithCSSUnit(0,cuPercent));\nend;\n\nfunction TSVGLinearGradient.GetY2: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('y2',cmNone,FloatWithCSSUnit(0,cuPercent));\nend; \n\nprocedure TSVGLinearGradient.SetX1(AValue: TFloatWithCSSUnit);\nbegin\n  AttributeWithUnit['x1']:= AValue;\nend;\n\nprocedure TSVGLinearGradient.SetX2(AValue: TFloatWithCSSUnit);\nbegin\n  AttributeWithUnit['x2']:= AValue;\nend;\n\nprocedure TSVGLinearGradient.SetY1(AValue: TFloatWithCSSUnit);\nbegin\n  AttributeWithUnit['y1']:= AValue;\nend;\n\nprocedure TSVGLinearGradient.SetY2(AValue: TFloatWithCSSUnit);\nbegin\n  AttributeWithUnit['y2']:= AValue;\nend;\n\nclass function TSVGLinearGradient.GetDOMTag: string;\nbegin\n  Result:= 'linearGradient';\nend;\n\nprocedure TSVGLinearGradient.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if gradientUnits = souUserSpaceOnUse then\n  begin\n    if HasAttribute('x1') then x1 := Units.ConvertWidth(HorizAttributeWithUnit['x1'], AUnit);\n    if HasAttribute('y1') then y1 := Units.ConvertHeight(VerticalAttributeWithUnit['y1'], AUnit);\n    if HasAttribute('x2') then x2 := Units.ConvertWidth(HorizAttributeWithUnit['x2'], AUnit);\n    if HasAttribute('y2') then y2 := Units.ConvertHeight(VerticalAttributeWithUnit['y2'], AUnit);\n  end;\nend;\n\n{ TSVGRadialGradient }\n\nfunction TSVGRadialGradient.GetCX: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('cx',cmHoriz,FloatWithCSSUnit(50,cuPercent));\nend;\n\nfunction TSVGRadialGradient.GetCY: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('cy',cmVertical,FloatWithCSSUnit(50,cuPercent));\nend;\n\nfunction TSVGRadialGradient.GetR: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('r',cmOrtho,FloatWithCSSUnit(50,cuPercent));\nend;\n\nfunction TSVGRadialGradient.GetFX: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('fx',cmHoriz,cx);\nend;\n\nfunction TSVGRadialGradient.GetFY: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('fy',cmVertical,cy);\nend;         \n\nfunction TSVGRadialGradient.GetFR: TFloatWithCSSUnit;\nbegin\n  result := GetInheritedAttribute('fr',cmHoriz,FloatWithCSSUnit(0,cuPercent));\nend;\n\nprocedure TSVGRadialGradient.SetCX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['cx'] := AValue;\nend;\n\nprocedure TSVGRadialGradient.SetCY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['cy'] := AValue;\nend;\n\nprocedure TSVGRadialGradient.SetR(AValue: TFloatWithCSSUnit);\nbegin\n  OrthoAttributeWithUnit['r'] := AValue;\nend;\n\nprocedure TSVGRadialGradient.SetFX(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['fx'] := AValue;\nend;\n\nprocedure TSVGRadialGradient.SetFY(AValue: TFloatWithCSSUnit);\nbegin\n  VerticalAttributeWithUnit['fy'] := AValue;\nend;\n\nprocedure TSVGRadialGradient.SetFR(AValue: TFloatWithCSSUnit);\nbegin\n  OrthoAttributeWithUnit['fr'] := AValue;\nend;\n\nclass function TSVGRadialGradient.GetDOMTag: string;\nbegin\n  Result:= 'radialGradient';\nend;\n\nprocedure TSVGRadialGradient.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  inherited ConvertToUnit(AUnit);\n  if gradientUnits = souUserSpaceOnUse then\n  begin\n    if HasAttribute('cx') then cx := Units.ConvertWidth(HorizAttributeWithUnit['cx'], AUnit);\n    if HasAttribute('cy') then cy := Units.ConvertHeight(VerticalAttributeWithUnit['cy'], AUnit);\n    if HasAttribute('fx') then fx := Units.ConvertWidth(HorizAttributeWithUnit['fx'], AUnit);\n    if HasAttribute('fy') then fy := Units.ConvertHeight(VerticalAttributeWithUnit['fy'], AUnit);\n    if HasAttribute('r') then r := Units.ConvertOrtho(OrthoAttributeWithUnit['r'], AUnit);\n    if HasAttribute('fr') then fr := Units.ConvertOrtho(OrthoAttributeWithUnit['fr'], AUnit);\n  end;\nend;\n\n{ TSVGStopGradient }\n\nfunction TSVGStopGradient.GetOffset: TFloatWithCSSUnit;\nbegin\n  result := AttributeWithUnit['offset'];\nend;\n\nfunction TSVGStopGradient.GetStopColor: TBGRAPixel;\nbegin\n  result := StrToBGRA(AttributeOrStyleDef['stop-color','black']);\n  result.alpha := round(result.alpha*stopOpacity);\nend;\n\nfunction TSVGStopGradient.GetStopOpacity: single;\nvar errPos: integer;\nbegin\n  val(AttributeOrStyleDef['stop-opacity','1'], result, errPos);\n  if errPos <> 0 then result := 1 else\n    if result < 0 then result := 0 else\n      if result > 1 then result := 1;\nend;\n\nprocedure TSVGStopGradient.SetOffset(AValue: TFloatWithCSSUnit);\nbegin\n  AttributeWithUnit['offset'] := AValue;\nend;\n\nprocedure TSVGStopGradient.SetStopColor(AValue: TBGRAPixel);\nbegin\n  stopOpacity:= AValue.alpha/255;\n  AValue.alpha:= 255;\n  Attribute['stop-color'] := Lowercase(BGRAToStr(AValue, CSSColors, 0, true, true));\n  RemoveStyle('stop-color');\nend;\n\nprocedure TSVGStopGradient.SetStopOpacity(AValue: single);\nbegin\n  Attribute['stop-opacity'] := Units.formatValue(AValue);\n  RemoveStyle('stop-opacity');\nend;\n\nclass function TSVGStopGradient.GetDOMTag: string;\nbegin\n  Result:= 'stop';\nend;\n\n{ TSVGContent }\n\nfunction TSVGContent.GetElement(AIndex: integer): TSVGElement;\nbegin\n  result := TObject(FElements.Items[AIndex]) as TSVGElement;\nend;\n\nfunction TSVGContent.GetElementObject(AIndex: integer): TObject;\nbegin\n  result := TObject(FElements.Items[AIndex]);\nend;\n\nfunction TSVGContent.GetElementCount: integer;\nbegin\n  result := FElements.Count;\nend;\n\nfunction TSVGContent.GetUnits: TCSSUnitConverter;\nbegin\n  result := FUnits;\nend;\n\nfunction TSVGContent.TryCreateElementFromNode(ANode: TDOMNode): TObject;\nbegin\n  if ANode is TDOMElement then\n    result := CreateSVGElementFromNode(TDOMElement(ANode),FUnits,FDataLink)\n  else\n    result := ANode;\nend;\n\nfunction TSVGContent.GetIsSVGElement(AIndex: integer): boolean;\nbegin\n  result := TObject(FElements[AIndex]) is TSVGElement;\nend;\n\nfunction TSVGContent.GetElementDOMNode(AIndex: integer): TDOMNode;\nbegin\n  result := GetDOMNode(TObject(FElements[AIndex]));\nend;\n\nfunction TSVGContent.GetDOMNode(AElement: TObject): TDOMNode;\nbegin\n  if AElement is TDOMNode then\n    result := TDOMNode(AElement)\n  else if AElement is TSVGElement then\n    result := TSVGElement(AElement).DOMElement\n  else\n    raise exception.Create('Unexpected element type');\nend;\n\nprocedure TSVGContent.AppendElement(AElement: TObject);\nbegin\n  FDomElem.AppendChild(GetDOMNode(AElement));\n  FElements.Add(AElement);\n  if AElement is TSVGElement then\n    TSVGElement(AElement).DataLink := FDataLink;\nend;\n\nfunction TSVGContent.ExtractElementAt(AIndex: integer): TObject;\nbegin\n  result := ElementObject[AIndex];\n  if result is TSVGElement then\n  begin\n    TSVGElement(result).DataLink := nil;\n    FElements.Delete(AIndex);\n    FDomElem.RemoveChild(TSVGElement(result).DOMElement);\n  end else\n  if result is TDOMNode then\n    FDomElem.RemoveChild(TDOMNode(result))\n  else\n    raise exception.Create('Unexpected element type');\nend;\n\nprocedure TSVGContent.InsertElementBefore(AElement: TSVGElement;\n  ASuccessor: TSVGElement);\nvar idx: integer;\nbegin\n  idx := FElements.IndexOf(ASuccessor);\n  if idx <> -1 then\n  begin\n    FElements.Insert(idx,AElement);\n    FDomElem.InsertBefore(GetDOMNode(AElement), GetDOMNode(ASuccessor));\n    AElement.DataLink := FDataLink;\n  end\n  else\n    AppendElement(AElement);\nend;\n\nconstructor TSVGContent.Create(AElement: TDOMElement; AUnits: TCSSUnitConverter;\n  ADataLink: TSVGDataLink);\nvar cur: TDOMNode;\n  elem: TObject;\nbegin\n  FDoc := AElement.OwnerDocument;\n  FDomElem := AElement;\n  FDataLink := ADataLink;\n  FElements := TFPList.Create;\n  FUnits := AUnits;\n  cur := FDomElem.FirstChild;\n  while cur <> nil do\n  begin\n    elem := TryCreateElementFromNode(cur);\n    if Assigned(elem) then FElements.Add(elem);\n    cur := cur.NextSibling;\n  end;\nend;\n\ndestructor TSVGContent.Destroy;\nvar i:integer;\nbegin\n  for i := ElementCount-1 downto 0 do\n    if not (ElementObject[i] is TDOMNode) then\n      ElementObject[i].Free;\n  FreeAndNil(FElements);\n  inherited Destroy;\nend;\n\nprocedure TSVGContent.Clear;\nvar\n  i: Integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then Element[i].Free;\n  FElements.Clear;\n  while Assigned(FDomElem.FirstChild) do\n    FDomElem.RemoveChild(FDomElem.FirstChild);\nend;\n\nprocedure TSVGContent.ConvertToUnit(AUnit: TCSSUnit);\nvar i: integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then\n      Element[i].ConvertToUnit(AUnit);\nend;\n\nprocedure TSVGContent.IterateElements(ACallback: TIterateElementCallback;\n  AData: pointer; ARecursive: boolean);\nvar rec: boolean;\n  i: Integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then\n    begin\n      rec := ARecursive;\n      ACallback(Element[i], AData, rec);\n      if rec then Element[i].IterateElements(ACallback, AData, true);\n    end;\nend;\n\nprocedure TSVGContent.Recompute;\nvar\n  i: Integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then\n      Element[i].Recompute;\nend;\n\nprocedure TSVGContent.Draw(ACanvas2d: TBGRACanvas2D; x, y: single; AUnit: TCSSUnit);\nvar prevMatrix: TAffineMatrix;\nbegin\n  if (x<>0) or (y<>0) then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.translate(x,y);\n    Draw(ACanvas2d, AUnit);\n    ACanvas2d.matrix := prevMatrix;\n  end else\n    Draw(ACanvas2d, AUnit);\nend;\n\nprocedure TSVGContent.Draw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar i: integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then\n      Element[i].Draw(ACanvas2d, AUnit);\nend;\n\nprocedure TSVGContent.CopyPathTo(ACanvas2d: TBGRACanvas2D; x, y: single;\n  AUnit: TCSSUnit);\nvar prevMatrix: TAffineMatrix;\nbegin\n  if (x<>0) or (y<>0) then\n  begin\n    prevMatrix := ACanvas2d.matrix;\n    ACanvas2d.translate(x,y);\n    CopyPathTo(ACanvas2d, AUnit);\n    ACanvas2d.matrix := prevMatrix;\n  end else\n    CopyPathTo(ACanvas2d, AUnit);\nend;\n\nprocedure TSVGContent.CopyPathTo(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar i: integer;\nbegin\n  for i := 0 to ElementCount-1 do\n    if IsSVGElement[i] then\n      Element[i].CopyPathTo(ACanvas2d, AUnit);\nend;\n\nfunction TSVGContent.AppendElement(ASVGType: TSVGFactory): TSVGElement;\nbegin\n  result := ASVGType.Create(FDoc,Units,FDataLink);\n  AppendElement(result);\nend;\n\nprocedure TSVGContent.BringElement(AElement: TObject;\n  AFromContent: TSVGContent);\nvar\n  idx: Integer;\nbegin\n  idx := AFromContent.IndexOfElement(AElement);\n  if idx = -1 then raise exception.Create('Cannot find element in content');\n  AFromContent.ExtractElementAt(idx);\n  AppendElement(AElement);\nend;\n\nprocedure TSVGContent.CopyElement(AElement: TObject);\nvar\n  nodeCopy: TDOMNode;\n  objCopy: TObject;\nbegin\n  if AElement is TSVGElement then\n    nodeCopy := TSVGElement(AElement).DOMElement.CloneNode(true, FDoc)\n  else if AElement is TDOMNode then\n    nodeCopy := TDOMNode(AElement).CloneNode(true, FDoc)\n  else\n    raise exception.Create('Unexpected element type');\n\n  FDomElem.AppendChild(nodeCopy);\n  objCopy := TryCreateElementFromNode(nodeCopy);\n  if Assigned(objCopy) then FElements.Add(objCopy);\nend;\n\nprocedure TSVGContent.RemoveElement(AElement: TObject);\nvar\n  idx: Integer;\nbegin\n  idx := IndexOfElement(AElement);\n  if idx = -1 then exit;\n  if AElement is TSVGElement then\n  begin\n    ExtractElementAt(idx);\n    TSVGElement(AElement).DOMElement.Free;\n    AElement.Free;\n  end else\n  if AElement is TDOMNode then\n  begin\n    ExtractElementAt(idx);\n    TDOMNode(AElement).Free;\n  end else\n    raise exception.Create('Unexpected element type');\nend;\n\nfunction TSVGContent.AppendDOMText(AText: string): TDOMText;\nbegin\n  result := TDOMText.Create(FDomElem.OwnerDocument);\n  result.Data:= DOMString(AText);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendDefine: TSVGDefine;\nbegin\n  result := TSVGDefine.Create(FDoc,Units,FDataLink);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendLinearGradient(x1, y1, x2, y2: single; AIsPercent: boolean): TSVGLinearGradient;\nvar\n  u: TCSSUnit;\nbegin\n  result := TSVGLinearGradient.Create(FDoc,Units,FDataLink);\n  result.gradientUnits:= souObjectBoundingBox;\n  if AIsPercent then u := cuPercent else u := cuCustom;\n  result.x1 := FloatWithCSSUnit(x1, u);\n  result.x2 := FloatWithCSSUnit(x2, u);\n  result.y1 := FloatWithCSSUnit(y1, u);\n  result.y2 := FloatWithCSSUnit(y2, u);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendLinearGradient(x1, y1, x2, y2: single;\n  AUnit: TCSSUnit): TSVGLinearGradient;\nbegin\n  result := TSVGLinearGradient.Create(FDoc,Units,FDataLink);\n  result.gradientUnits:= souUserSpaceOnUse;\n  result.x1 := FloatWithCSSUnit(x1, AUnit);\n  result.x2 := FloatWithCSSUnit(x2, AUnit);\n  result.y1 := FloatWithCSSUnit(y1, AUnit);\n  result.y2 := FloatWithCSSUnit(y2, AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRadialGradient(cx, cy, r, fx, fy, fr: single;\n  AIsPercent: boolean): TSVGRadialGradient;\nvar\n  u: TCSSUnit;\nbegin\n  result := TSVGRadialGradient.Create(FDoc,Units,FDataLink);\n  result.gradientUnits:= souObjectBoundingBox;\n  if AIsPercent then u := cuPercent else u := cuCustom;\n  result.cx := FloatWithCSSUnit(cx, u);\n  result.cy := FloatWithCSSUnit(cy, u);\n  result.r := FloatWithCSSUnit(r, u);\n  result.fx := FloatWithCSSUnit(fx, u);\n  result.fy := FloatWithCSSUnit(fy, u);\n  result.fr := FloatWithCSSUnit(fr, u);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRadialGradient(cx, cy, r, fx, fy, fr: single;\n  AUnit: TCSSUnit): TSVGRadialGradient;\nbegin\n  result := TSVGRadialGradient.Create(FDoc,Units,FDataLink);\n  result.gradientUnits:= souUserSpaceOnUse;\n  result.cx := FloatWithCSSUnit(cx, AUnit);\n  result.cy := FloatWithCSSUnit(cy, AUnit);\n  result.r := FloatWithCSSUnit(r, AUnit);\n  result.fx := FloatWithCSSUnit(fx, AUnit);\n  result.fy := FloatWithCSSUnit(fy, AUnit);\n  result.fr := FloatWithCSSUnit(fr, AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendStop(AColor: TBGRAPixel; AOffset: single;\n  AIsPercent: boolean): TSVGStopGradient;\nbegin\n  result := TSVGStopGradient.Create(FDoc,Units,FDataLink);\n  if AIsPercent then\n    result.Offset := FloatWithCSSUnit(AOffset, cuPercent)\n    else result.Offset := FloatWithCSSUnit(AOffset, cuCustom);\n  result.stopColor := AColor;\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendLine(x1, y1, x2, y2: single; AUnit: TCSSUnit\n  ): TSVGLine;\nbegin\n  result := TSVGLine.Create(FDoc,Units,FDataLink);\n  result.x1 := FloatWithCSSUnit(x1,AUnit);\n  result.y1 := FloatWithCSSUnit(y1,AUnit);\n  result.x2 := FloatWithCSSUnit(x2,AUnit);\n  result.y2 := FloatWithCSSUnit(y2,AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendLine(p1, p2: TPointF; AUnit: TCSSUnit): TSVGLine;\nbegin\n  result := AppendLine(p1.x,p1.y,p2.x,p2.y,AUnit);\nend;\n\nfunction TSVGContent.AppendCircle(cx, cy, r: single; AUnit: TCSSUnit\n  ): TSVGCircle;\nbegin\n  result := TSVGCircle.Create(FDoc,Units,FDataLink);\n  result.cx := FloatWithCSSUnit(cx,AUnit);\n  result.cy := FloatWithCSSUnit(cy,AUnit);\n  result.r := FloatWithCSSUnit(r,AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendCircle(c: TPointF; r: single; AUnit: TCSSUnit\n  ): TSVGCircle;\nbegin\n  result := AppendCircle(c.x,c.y,r,AUnit);\nend;\n\nfunction TSVGContent.AppendEllipse(cx, cy, rx, ry: single; AUnit: TCSSUnit\n  ): TSVGEllipse;\nbegin\n  result := TSVGEllipse.Create(FDoc,Units,FDataLink);\n  result.cx := FloatWithCSSUnit(cx,AUnit);\n  result.cy := FloatWithCSSUnit(cy,AUnit);\n  result.rx := FloatWithCSSUnit(rx,AUnit);\n  result.ry := FloatWithCSSUnit(ry,AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendEllipse(c, r: TPointF; AUnit: TCSSUnit): TSVGEllipse;\nbegin\n  result := AppendEllipse(c.x,c.y,r.x,r.y,AUnit);\nend;\n\nfunction TSVGContent.AppendPath(data: string; AUnit: TCSSUnit): TSVGPath;\nvar tempPath: TBGRAPath;\nbegin\n  if AUnit <> cuCustom then\n  begin\n    tempPath := TBGRAPath.Create(data);\n    result := AppendPath(tempPath, AUnit);\n    tempPath.Free;\n  end else\n  begin\n    result := TSVGPath.Create(FDoc,Units,FDataLink);\n    result.d := data;\n    AppendElement(result);\n  end;\nend;\n\nfunction TSVGContent.AppendPath(path: TBGRAPath; AUnit: TCSSUnit): TSVGPath;\nbegin\n  result := TSVGPath.Create(FDoc,Units,FDataLink);\n  result.path.scale(Units.ConvertWidth(1,AUnit,cuCustom));\n  path.copyTo(result.path);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendPolygon(const points: array of single;\n  AUnit: TCSSUnit): TSVGPolypoints;\nvar\n  pts: ArrayOfTPointF;\n  i: integer;\nbegin\n  result := TSVGPolypoints.Create(FDoc,FUnits,true,FDataLink);\n  setlength(pts, length(points) div 2);\n  for i := 0 to high(pts) do\n    pts[i] := Units.ConvertCoord(PointF(points[i shl 1],points[(i shl 1)+1]),AUnit,cuCustom);\n  result.pointsF := pts;\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendPolygon(const points: array of TPointF;\n  AUnit: TCSSUnit): TSVGPolypoints;\nvar\n  pts: ArrayOfTPointF;\n  i: integer;\nbegin\n  result := TSVGPolypoints.Create(FDoc,FUnits,true,FDataLink);\n  setlength(pts, length(points));\n  for i := 0 to high(pts) do\n    pts[i] := Units.ConvertCoord(points[i],AUnit,cuCustom);\n  result.pointsF := pts;\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRect(x, y, width, height: single; AUnit: TCSSUnit\n  ): TSVGRectangle;\nbegin\n  result := TSVGRectangle.Create(FDoc,Units,FDataLink);\n  result.x := FloatWithCSSUnit(x,AUnit);\n  result.y := FloatWithCSSUnit(y,AUnit);\n  result.width := FloatWithCSSUnit(width,AUnit);\n  result.height := FloatWithCSSUnit(height,AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRect(origin, size: TPointF; AUnit: TCSSUnit\n  ): TSVGRectangle;\nbegin\n  result := AppendRect(origin.x,origin.y,size.x,size.y,AUnit);\nend;\n\nfunction TSVGContent.AppendImage(x, y, width, height: single; ABitmap: TBGRACustomBitmap;\n  ABitmapOwned: boolean; AUnit: TCSSUnit): TSVGImage;\nbegin\n  result := TSVGImage.Create(FDoc,Units,FDataLink);\n  result.x := FloatWithCSSUnit(x, AUnit);\n  result.y := FloatWithCSSUnit(y, AUnit);\n  result.width := FloatWithCSSUnit(width, AUnit);\n  result.height := FloatWithCSSUnit(height, AUnit);\n  result.SetBitmap(ABitmap, ABitmapOwned);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendImage(origin, size: TPointF; ABitmap: TBGRACustomBitmap;\n  ABitmapOwned: boolean; AUnit: TCSSUnit): TSVGImage;\nbegin\n  result := AppendImage(origin.x,origin.y,size.x,size.y,ABitmap,ABitmapOwned,AUnit);\nend;\n\nfunction TSVGContent.AppendImage(x, y, width, height: single;\n  ABitmapStream: TStream; AMimeType: string; AUnit: TCSSUnit): TSVGImage;\nbegin\n  result := TSVGImage.Create(FDoc,Units,FDataLink);\n  result.x := FloatWithCSSUnit(x, AUnit);\n  result.y := FloatWithCSSUnit(y, AUnit);\n  result.width := FloatWithCSSUnit(width, AUnit);\n  result.height := FloatWithCSSUnit(height, AUnit);\n  result.SetBitmap(ABitmapStream, AMimeType);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendImage(origin, size: TPointF; ABitmapStream: TStream;\n  AMimeType: string; AUnit: TCSSUnit): TSVGImage;\nbegin\n  result := AppendImage(origin.x,origin.y,size.x,size.y,ABitmapStream,AMimeType,AUnit);\nend;\n\nfunction TSVGContent.AppendText(x, y: single; AText: string; AUnit: TCSSUnit\n  ): TSVGText;\nvar\n  a: ArrayOfTFloatWithCSSUnit;\nbegin\n  result := TSVGText.Create(FDoc,Units,FDataLink);\n  setlength(a,1);\n  try\n    a[0] := FloatWithCSSUnit(x,AUnit);\n    result.x := a;\n    a[0] := FloatWithCSSUnit(y,AUnit);\n    result.y := a;\n  finally\n    setlength(a,0);\n  end;\n  if AText <> '' then\n    result.SimpleText:= AText;\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendText(origin: TPointF; AText: string; AUnit: TCSSUnit\n  ): TSVGText;\nbegin\n  result := AppendText(origin.x,origin.y,AText,AUnit);\nend;\n\nfunction TSVGContent.AppendTextSpan(AText: string): TSVGTSpan;\nbegin\n  result := TSVGTSpan.Create(FDoc,Units,FDataLink);\n  result.SimpleText:= AText;\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRoundRect(x, y, width, height, rx, ry: single;\n  AUnit: TCSSUnit): TSVGRectangle;\nbegin\n  result := TSVGRectangle.Create(FDoc,Units,FDataLink);\n  result.x := FloatWithCSSUnit(x,AUnit);\n  result.y := FloatWithCSSUnit(y,AUnit);\n  result.width := FloatWithCSSUnit(width,AUnit);\n  result.height := FloatWithCSSUnit(height,AUnit);\n  result.rx := FloatWithCSSUnit(rx,AUnit);\n  result.ry := FloatWithCSSUnit(ry,AUnit);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.AppendRoundRect(origin, size, radius: TPointF;\n  AUnit: TCSSUnit): TSVGRectangle;\nbegin\n  result := AppendRoundRect(origin.x,origin.y,size.x,size.y,radius.x,radius.y,AUnit);\nend;\n\nfunction TSVGContent.AppendGroup: TSVGGroup;\nbegin\n  result := TSVGGroup.Create(FDoc, Units, FDataLink);\n  AppendElement(result);\nend;\n\nfunction TSVGContent.IndexOfElement(AElement: TObject): integer;\nbegin\n  result := FElements.IndexOf(AElement);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrasvgtype.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Base type definitions and implementation for SVG }\nunit BGRASVGType;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRATransform, BGRABitmapTypes, BGRAUnits,\n  DOM, BGRACanvas2D, fgl, BGRAGraphics;\n\ntype\n  ArrayOfFloat = array of single;\n  ArrayOfString = array of string;\n  \n  TSVGElement = class;\n  TSVGElementList = specialize TFPGList<TSVGElement>;\n  TSVGElementDictionary = specialize TFPGMap<string,TSVGElement>;\n  TSVGFactory = class of TSVGElement;\n  TIterateElementCallback = procedure(AElement: TSVGElement; AData: pointer; var ARecursive: boolean) of object;\n  \n  TSVGFillMode = (\n     sfmEvenOdd = Ord(fmAlternate),\n     sfmNonZero = Ord(fmWinding)\n   );\n\n  TSVGPaintOrder = (\n     spoFillStrokeMarkers,\n     spoFillMarkersStroke,\n     spoStrokeFillMarkers,\n     spoStrokeMarkersFill,\n     spoMarkersFillStroke,\n     spoMarkersStrokeFill\n  );\n\n  TSVGLengthAdjust = (\n     slaSpacing,\n     slaSpacingAndGlyphs\n   );\n\n  TSVGTextPathMethod = (\n     stpmAlign,\n     stpmStretch\n   );\n\n  TSVGTextPathSpacing = (\n     stpsAuto,\n     stpsExact\n   );\n\n  TSVGTextAnchor = (\n     staStart,\n     staMiddle,\n     staEnd\n   );\n   \n  TSVGTextDirection = (  \n     stdLtr,\n     stdRtl\n   );\n   \n  TSVGObjectUnits = (\n     souUserSpaceOnUse,\n     souObjectBoundingBox\n   );\n\n  TSVGSpreadMethod = (\n     ssmPad,\n     ssmReflect,\n     ssmRepeat\n  );\n\n  TSVGColorInterpolation = (\n     sciStdRGB,\n     sciLinearRGB\n  );\n\n  TSVGImageRendering = (\n    sirAuto,\n    sirSmooth,\n    sirHighQuality,\n    sirCrispEdges,\n    sirPixelated\n  );\n\n  TSVGRenderingIntent = (\n     sriAuto,\n     sriPerceptual,\n     sriRelativeColorimetric,\n     sriSaturation,\n     sriAbsoluteColorimetric\n   );\n\n  TSVGMarkerUnits = (\n     smuStrokeWidth,\n     smuUserSpaceOnUse\n   );\n\n  TSVGOrientAuto = (soaNone,soaAuto,soaAutoReverse);\n  { Orientation to use for a marker relative to path }\n  TSVGOrient = record\n    auto: TSVGOrientAuto;\n    angle: TSVGNumber;\n  end;\n\n  TFindStyleState = (fssNotSearched,\n                     fssNotFound,\n                     fssFound);\n  { One or more CSS attributes }\n  TStyleAttribute = record\n     attr  : string;\n     pos   : integer;\n  end;\n  ArrayOfTStyleAttribute = array of TStyleAttribute;\n  \n  { SVG bounding box for coordinates }\n  TSVGViewBox = record\n    min, size: TPointF;\n    function ToString: string;\n    class function Parse(AValue: string): TSVGViewBox; static;\n    class function DefaultValue: TSVGViewBox; static;\n  end;\n  { Size defined in CSS units }\n  TSVGSize = record\n    width, height: TFloatWithCSSUnit;\n  end;\n\n  { SVG parameter to specify aspect ratio and alignment }\n  TSVGPreserveAspectRatio = record\n     Preserve, Slice: boolean;\n     HorizAlign: TAlignment;\n     VertAlign: TTextLayout;\n     function ToString: string;\n     class function Parse(AValue: string): TSVGPreserveAspectRatio; static;\n     class function DefaultValue: TSVGPreserveAspectRatio; static;\n  end;\n\n  TSVGRecomputeEvent = procedure(Sender: TObject) of object;\n  TSVGLinkEvent = procedure(Sender: TObject; AElement: TSVGElement; ALink: boolean) of object;\n\n  { Listeners on link changes between SVG elements }\n  TSVGLinkListeners = class(specialize TFPGList<TSVGLinkEvent>)\n    {$IF FPC_FULLVERSION >= 30301}\n    private\n      type PT = ^TSVGLinkEvent;\n    public\n    {$ENDIF}\n    function IndexOf(const Item: TSVGLinkEvent): Integer;\n    function Remove(const Item: TSVGLinkEvent): Integer;\n  end;\n  \n  { Class to listen to link changes between SVG elements }\n  TSVGDataLink = class\n   private\n     FElements: TSVGElementDictionary;\n     FStyles: TSVGElementList;\n     FParent: TSVGDataLink;\n     FChildren: TList;\n     FLinkListeners: TSVGLinkListeners;\n     function GetElement(AIndex: integer): TSVGElement;\n     function GetStyle(AIndex: integer): TSVGElement;\n     function IsValidIndex(const AIndex: integer; list: TSVGElementList): boolean;\n     function FindTo(el: TSVGElement; list: TSVGElementList): integer;\n     procedure NotifyLink(AElement: TSVGElement; ALink: boolean);\n     procedure SetParent(AValue: TSVGDataLink);\n   public\n     constructor Create(AParent: TSVGDataLink);\n     destructor Destroy; override;\n\n     function ElementCount: integer;\n     function StyleCount: integer;\n     function FindElement(el: TSVGElement): integer;\n     function FindElementById(AID: string; AClass: TSVGFactory): TSVGElement;\n     function FindElementByRef(ARef: string; AClass: TSVGFactory): TSVGElement;\n     function FindElementByRef(ARef: string; ANeedUrl: boolean; AClass: TSVGFactory; out ANotFound: boolean): TSVGElement;\n     function FindStyle(el: TSVGElement): integer;\n     function IsLinkElement(el: TSVGElement): boolean;\n     function IsLinkStyle(el: TSVGElement): boolean;\n     function IsLink(el: TSVGElement): boolean;\n     function Link(el: TSVGElement): integer;\n     procedure Unlink(el: TSVGElement);\n     procedure UnlinkAll;\n     procedure RegisterLinkListener(AHandler: TSVGLinkEvent; ARegister: boolean);\n\n     property Styles[ID: integer]: TSVGElement read GetStyle;\n     property Elements[AIndex: integer]: TSVGElement read GetElement;\n     property Parent: TSVGDataLink read FParent write SetParent;\n   end;\n\n  { Abstract SVG element }\n  TSVGCustomElement = class\n  protected\n    FDomElem: TDOMElement;\n    FUnits: TCSSUnitConverter;\n    function GetDOMElement: TDOMElement; virtual;\n\n    function GetAttributeFromElement(ANode: TDOMElement; AName: string; ACanInherit: boolean): string;\n    function GetAttribute(AName: string; ADefault: string; ACanInherit: boolean): string; overload;\n    function GetAttribute(AName: string; ADefault: string): string; overload;\n    function GetAttribute(AName: string): string; overload;\n    function GetAttributeNumber(AName: string; ADefault: TSVGNumber): TSVGNumber; overload;\n    function GetArrayOfAttributeNumber(AName: string): ArrayOfTSVGNumber;\n    function GetArrayOfAttributeNumber(AName: string; ACanInherit: boolean): ArrayOfTSVGNumber;\n    function GetAttributeWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit; overload;\n    function GetAttributeWithUnit(AName: string): TFloatWithCSSUnit; overload;\n    function GetArrayOfAttributeWithUnit(AName: string; ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\n    function GetArrayOfAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n\n    function GetHorizAttribute(AName: string; ADefault: TSVGNumber): TSVGNumber;\n    function GetHorizAttribute(AName: string): TSVGNumber;\n    function GetHorizAttributeWithUnit(AName: string;\n      ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    function GetHorizAttributeWithUnit(AName: string): TFloatWithCSSUnit;\n    function GetArrayOfHorizAttributeWithUnit(AName: string;\n      ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\n    function GetArrayOfHorizAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n\n    function GetVerticalAttribute(AName: string; ADefault: TSVGNumber): TSVGNumber;\n    function GetVerticalAttribute(AName: string): TSVGNumber;\n    function GetVerticalAttributeWithUnit(AName: string;\n      ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    function GetVerticalAttributeWithUnit(AName: string): TFloatWithCSSUnit;\n    function GetArrayOfVerticalAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n    function GetArrayOfVerticalAttributeWithUnit(AName: string; ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\n\n    function GetOrthoAttributeWithUnit(AName: string;\n      ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    function GetOrthoAttributeWithUnit(AName: string): TFloatWithCSSUnit;\n    function GetArrayOfOrthoAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n    function GetArrayOfOrthoAttributeWithUnit(AName: string; ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\n\n    function GetAttributeOrStyle(AName,ADefault: string; ACanInherit: boolean): string; overload;\n    function GetAttributeOrStyle(AName,ADefault: string): string; overload;\n    function GetAttributeOrStyle(AName: string): string; overload;\n    function GetHorizAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    function GetArrayOfHorizAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n    function GetOrthoAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\n    function GetArrayOfOrthoAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n    function GetAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit; ACanInherit: boolean): TFloatWithCSSUnit; overload;\n    function GetAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit; overload;\n    function GetAttributeOrStyleWithUnit(AName: string): TFloatWithCSSUnit; overload;\n    function GetArrayOfAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n    function GetVerticalAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit; ACanInherit: boolean): TFloatWithCSSUnit; overload;\n    function GetVerticalAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit; overload;\n    function GetArrayOfVerticalAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\n\n    function GetNamespaceCount: integer;\n    function GetNamespacePrefix(AIndex: integer): string;\n    function GetNamespaceURI(APrefix: string): string;\n\n    class function GetPropertyFromStyleDeclarationBlock(ABlock: string;\n      AProperty: string; ADefault: string): string;\n    class procedure LocateStyleDeclaration(AText: string; AProperty: string;\n      out AStartPos, AColonPos, AValueLength: integer);\n    class procedure UpdateStyleDeclarationBlock(var ABlock: string; AProperty: string; AValue: string);\n    class function RemovePropertyFromDeclarationBlock(var ABlock: string; AProperty: string): boolean;\n    function GetInlineStyle(const AName,ADefault: string): string;\n    function GetInlineStyleWithUnit(const AName: string): TFloatWithCSSUnit; overload;\n    function GetInlineStyleWithUnit(const AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit; overload;\n    function GetStyleFromStyleSheet(const {%H-}AName,ADefault: string): string; virtual;\n    function GetStyle(const AName,ADefault: string): string; overload;\n    function GetStyle(const AName: string): string; overload;\n\n    procedure SetAttribute(AName: string; AValue: TSVGNumber); virtual; overload;\n    procedure SetAttribute(AName: string; AValue: string); virtual; overload;\n    procedure SetAttributeWithUnit(AName: string; AValue: TFloatWithCSSUnit);\n    procedure SetArrayOfAttributeWithUnit(AName: string; const AValue: ArrayOfTFloatWithCSSUnit);\n\n    procedure SetHorizAttribute(AName: string; AValue: TSVGNumber);\n    procedure SetHorizAttributeWithUnit(AName: string; AValue: TFloatWithCSSUnit);\n    procedure SetArrayOfHorizAttributeWithUnit(AName: string;\n      AValue: ArrayOfTFloatWithCSSUnit);\n\n    procedure SetVerticalAttribute(AName: string; AValue: TSVGNumber);\n    procedure SetArrayOfAttributeNumber(AName: string; AValue: ArrayOfTSVGNumber);\n    procedure SetVerticalAttributeWithUnit(AName: string; AValue: TFloatWithCSSUnit);\n    procedure SetArrayOfVerticalAttributeWithUnit(AName: string; AValue: ArrayOfTFloatWithCSSUnit);\n\n    procedure SetOrthoAttributeWithUnit(AName: string; AValue: TFloatWithCSSUnit);\n    procedure SetArrayOfOrthoAttributeWithUnit(AName: string; AValue: ArrayOfTFloatWithCSSUnit);\n\n    procedure SetNamespaceURI(APrefix: string; AValue: string);\n\n    procedure SetInlineStyle(AName: string; AValue: string); overload;\n    procedure SetInlineStyle(AName: string; AValue: TFloatWithCSSUnit); overload;\n  public\n    procedure RemoveStyle(const AName: string);\n    function HasAttribute(AName: string): boolean;\n    function HasInlineStyle(AName: string): boolean;\n\n    procedure IterateElements(ACallback: TIterateElementCallback; AData: pointer; ARecursive: boolean); virtual;\n    procedure ConvertToUnit(AUnit: TCSSUnit); virtual;\n    function EnterFontSize(AIsRoot: boolean = false): TFloatWithCSSUnit; virtual;\n    procedure ExitFontSize(APrevFontSize: TFloatWithCSSUnit); virtual;\n\n    function MatrixToTransform(m: TAffineMatrix; AFromUnit: TCSSUnit): string;\n    function TransformToMatrix(ATransform: string; AToUnit: TCSSUnit): TAffineMatrix;\n\n    procedure RemoveNamespace(APrefix: string);\n    function NeedNamespace(APrefix: string): boolean;\n    property NamespaceURI[APrefix: string]: string read GetNamespaceURI write SetNamespaceURI;\n    property NamespacePrefix[AIndex: integer]: string read GetNamespacePrefix;\n    property NamespaceCount: integer read GetNamespaceCount;\n\n    property Style[AName: string]: string read GetStyle write SetInlineStyle;\n    property StyleDef[AName,ADefault: string]: string read GetStyle;\n  end;\n\n  { SVG element on any type }\n  TSVGElement = class(TSVGCustomElement)\n  private\n    FImportStyleState: TFindStyleState;\n    FImportedStyles: ArrayOfTStyleAttribute;\n    function GetClipPath: string;\n    function GetFill: string;\n    function GetFillColor: TBGRAPixel;\n    function GetFillOpacity: single;\n    function GetFillRule: string;\n    function GetIsFillNone: boolean;\n    function GetIsStrokeNone: boolean;\n    function GetMask: string;\n    function GetMatrix(AUnit: TCSSUnit): TAffineMatrix;\n    function GetMixBlendMode: TBlendOperation;\n    function GetOpacity: single;\n    function GetPaintOrder: TSVGPaintOrder;\n    function GetShapeRendering: string;\n    function GetStroke: string;\n    function GetStrokeColor: TBGRAPixel;\n    function GetStrokeLineCap: string;\n    function GetStrokeLineCapLCL: TPenEndCap;\n    function GetStrokeLineJoin: string;\n    function GetStrokeLineJoinLCL: TPenJoinStyle;\n    function GetStrokeMiterLimit: single;\n    function GetStrokeOpacity: single;\n    function GetStrokeWidth: TFloatWithCSSUnit;\n    function GetStrokeDashArray: string;\n    function GetStrokeDashArrayF: ArrayOfFloat;\n    function GetStrokeDashOffset: TFloatWithCSSUnit;\n    function GetTransform: string;\n    function GetID: string;\n    function GetClassAttr: string;\n    function GetVisible: boolean;\n    procedure SetClipPath(AValue: string);\n    procedure SetFillColor(AValue: TBGRAPixel);\n    procedure SetFillOpacity(AValue: single);\n    procedure SetFillRule(AValue: string);\n    procedure SetMask(AValue: string);\n    procedure SetMatrix(AUnit: TCSSUnit; const AValue: TAffineMatrix);\n    procedure SetMixBlendMode(AValue: TBlendOperation);\n    procedure SetOpacity(AValue: single);\n    procedure SetPaintOrder(AValue: TSVGPaintOrder);\n    procedure SetStrokeColor(AValue: TBGRAPixel);\n    procedure SetStrokeLineCap(AValue: string);\n    procedure SetStrokeLineCapLCL(AValue: TPenEndCap);\n    procedure SetStrokeLineJoin(AValue: string);\n    procedure SetStrokeLineJoinLCL(AValue: TPenJoinStyle);\n    procedure SetStrokeMiterLimit(AValue: single);\n    procedure SetStrokeOpacity(AValue: single);\n    procedure SetStrokeWidth(AValue: TFloatWithCSSUnit);\n    procedure SetStrokeDashArray(AValue: string);\n    procedure SetStrokeDashArrayF(AValue: ArrayOfFloat);\n    procedure SetStrokeDashOffset(AValue: TFloatWithCSSUnit);\n    procedure SetTransform(AValue: string);\n    procedure SetID(AValue: string);\n    procedure SetClassAttr(AValue: string);\n    function FindStyleElementInternal(const classStr: string;\n      out attributesStr: string): integer;\n    procedure ImportStyles;\n    procedure SetVisible(AValue: boolean);\n  protected\n    FDataLink: TSVGDataLink;\n    procedure Init(ADocument: TDOMDocument; ATag: string; AUnits: TCSSUnitConverter); overload;\n    procedure Init(AElement: TDOMElement; AUnits: TCSSUnitConverter); overload;\n    procedure InternalDraw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); virtual;\n    procedure InternalCopyPathTo({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); virtual;\n    function GetStyleFromStyleSheet(const AName,ADefault: string): string; override;\n    procedure ApplyFillStyle(ACanvas2D: TBGRACanvas2D; {%H-}AUnit: TCSSUnit); virtual;\n    procedure ApplyStrokeStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit); virtual;\n    procedure SetDatalink(AValue: TSVGDataLink); virtual;\n    procedure SetFill(AValue: string); virtual;\n    procedure SetShapeRendering(AValue: string); virtual;\n    procedure SetStroke(AValue: string); virtual;\n    procedure Initialize; virtual;\n    procedure Paint(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\n  public\n    constructor Create(AElement: TDOMElement; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); overload; virtual;\n    constructor Create(ADocument: TDOMDocument; AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink); overload; virtual;\n    class function GetDOMTag: string; virtual;\n    destructor Destroy; override;\n    procedure ListIdentifiers(AResult: TStringList); virtual;\n    procedure RenameIdentifiers(AFrom, ATo: TStringList); virtual;\n    procedure ConvertToUnit(AUnit: TCSSUnit); override;\n    procedure Recompute; virtual;\n    procedure Draw({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit);\n    procedure CopyPathTo({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit);\n    procedure fillNone;\n    procedure strokeNone;\n    procedure strokeDashArrayNone;\n    procedure transformNone;\n    function antialiasing: boolean;\n    function fillMode: TSVGFillMode;\n    property DataLink: TSVGDataLink read FDataLink write SetDataLink;\n    property DOMElement: TDOMElement read GetDOMElement;\n    property Units: TCSSUnitConverter read FUnits;\n    property ID: string read GetID write SetID;\n    property classAttr: string read GetClassAttr write SetClassAttr;\n    property transform: string read GetTransform write SetTransform;\n    property matrix[AUnit: TCSSUnit]: TAffineMatrix read GetMatrix write SetMatrix;\n    property isFillNone: boolean read GetIsFillNone;\n    property isStrokeNone: boolean read GetIsStrokeNone;\n    property shapeRendering: string read GetShapeRendering write SetShapeRendering;\n    property stroke: string read GetStroke write SetStroke;\n    property strokeWidth: TFloatWithCSSUnit read GetStrokeWidth write SetStrokeWidth;\n    property strokeColor: TBGRAPixel read GetStrokeColor write SetStrokeColor;\n    property strokeOpacity: single read GetStrokeOpacity write SetStrokeOpacity;\n    property strokeMiterLimit: single read GetStrokeMiterLimit write SetStrokeMiterLimit;\n    property strokeLineJoin: string read GetStrokeLineJoin write SetStrokeLineJoin;\n    property strokeLineJoinLCL: TPenJoinStyle read GetStrokeLineJoinLCL write SetStrokeLineJoinLCL;\n    property strokeLineCap: string read GetStrokeLineCap write SetStrokeLineCap;\n    property strokeLineCapLCL: TPenEndCap read GetStrokeLineCapLCL write SetStrokeLineCapLCL;\n    property strokeDashArray: string read GetStrokeDashArray write SetStrokeDashArray;\n    property strokeDashArrayF: ArrayOfFloat read GetStrokeDashArrayF write SetStrokeDashArrayF;\n    property strokeDashOffset: TFloatWithCSSUnit read GetStrokeDashOffset write SetStrokeDashOffset;\n    property fill: string read GetFill write SetFill;\n    property fillColor: TBGRAPixel read GetFillColor write SetFillColor;\n    property fillOpacity: single read GetFillOpacity write SetFillOpacity;\n    property fillRule: string read GetFillRule write SetFillRule;\n    property paintOrder: TSVGPaintOrder read GetPaintOrder write SetPaintOrder;\n    property mixBlendMode: TBlendOperation read GetMixBlendMode write SetMixBlendMode;\n    property opacity: single read GetOpacity write SetOpacity;\n    property clipPath: string read GetClipPath write SetClipPath;\n    property mask: string read GetMask write SetMask;\n    property Visible: boolean read GetVisible write SetVisible;\n\n    property Attribute[AName: string]: string read GetAttribute write SetAttribute;\n    property AttributeDef[AName,ADefault: string]: string read GetAttribute;\n    property AttributeOrStyleDef[AName,ADefault: string]: string read GetAttributeOrStyle;\n    property AttributeOrStyle[AName: string]: string read GetAttributeOrStyle;\n    property AttributeWithUnitDef[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetAttributeWithUnit;\n    property AttributeWithUnit[AName: string]: TFloatWithCSSUnit read GetAttributeWithUnit write SetAttributeWithUnit;\n    property ArrayOfAttributeWithUnitInherit[AName: string; ACanInherit: boolean]: ArrayOfTFloatWithCSSUnit read GetArrayOfAttributeWithUnit;\n    property ArrayOfAttributeWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfAttributeWithUnit write SetArrayOfAttributeWithUnit;\n\n    property ArrayOfAttributeNumberInherit[AName: string; ACanInherit: boolean]: ArrayOfTSVGNumber read GetArrayOfAttributeNumber;\n    property ArrayOfAttributeNumber[AName: string]: ArrayOfTSVGNumber read GetArrayOfAttributeNumber write SetArrayOfAttributeNumber;\n\n    property HorizAttributeDef[AName: string; ADefault: TSVGNumber]: TSVGNumber read GetHorizAttribute;\n    property HorizAttribute[AName: string]: TSVGNumber read GetHorizAttribute write SetHorizAttribute;\n    property HorizAttributeWithUnitDef[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetHorizAttributeWithUnit;\n    property HorizAttributeWithUnit[AName: string]: TFloatWithCSSUnit read GetHorizAttributeWithUnit write SetHorizAttributeWithUnit;\n    property HorizAttributeOrStyleWithUnit[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetHorizAttributeOrStyleWithUnit;\n    property ArrayOfHorizAttributeWithUnitInherit[AName: string; ACanInherit: boolean]: ArrayOfTFloatWithCSSUnit read GetArrayOfHorizAttributeWithUnit;\n    property ArrayOfHorizAttributeWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfHorizAttributeWithUnit write SetArrayOfHorizAttributeWithUnit;\n    property ArrayOfHorizAttributeOrStyleWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfHorizAttributeOrStyleWithUnit;\n\n    property VerticalAttributeDef[AName: string; ADefault: TSVGNumber]: TSVGNumber read GetVerticalAttribute;\n    property VerticalAttribute[AName: string]: TSVGNumber read GetVerticalAttribute write SetVerticalAttribute;\n    property VerticalAttributeWithUnitDef[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetVerticalAttributeWithUnit;\n    property VerticalAttributeWithUnit[AName: string]: TFloatWithCSSUnit read GetVerticalAttributeWithUnit write SetVerticalAttributeWithUnit;\n    property VerticalAttributeOrStyleWithUnit[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetVerticalAttributeOrStyleWithUnit;\n    property ArrayOfVerticalAttributeWithUnitInherit[AName: string; ACanInherit: boolean]: ArrayOfTFloatWithCSSUnit read GetArrayOfVerticalAttributeWithUnit;\n    property ArrayOfVerticalAttributeWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfVerticalAttributeWithUnit write SetArrayOfVerticalAttributeWithUnit;\n    property ArrayOfVerticalAttributeOrStyleWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfVerticalAttributeOrStyleWithUnit;\n\n    property OrthoAttributeWithUnitDef[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetOrthoAttributeWithUnit;\n    property OrthoAttributeWithUnit[AName: string]: TFloatWithCSSUnit read GetOrthoAttributeWithUnit write SetOrthoAttributeWithUnit;\n    property OrthoAttributeOrStyleWithUnit[AName: string; ADefault: TFloatWithCSSUnit]: TFloatWithCSSUnit read GetOrthoAttributeOrStyleWithUnit;\n    property ArrayOfOrthoAttributeWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfOrthoAttributeWithUnit write SetArrayOfOrthoAttributeWithUnit;\n    property ArrayOfOrthoAttributeOrStyleWithUnit[AName: string]: ArrayOfTFloatWithCSSUnit read GetArrayOfOrthoAttributeOrStyleWithUnit;\n  end;\n\n  { Parser for SVG attributes }\n  TSVGParser = class\n  private\n    function GetDone: boolean;\n  protected\n    FPos: integer;\n    FNumberError: boolean;\n    FText: string;\n  public\n    constructor Create(AText: string);\n    function ParseFloat: single;\n    function ParseId: string;\n    function ParseSymbol: char;\n    function ParseTransform: TAffineMatrix;\n    procedure SkipSymbol(ASymbol: char);\n    procedure SkipUpToSymbol(ASymbol:char);\n    procedure ClearError;\n    property Position: integer read FPos write FPos;\n    property NumberError: boolean read FNumberError;\n    property Text: string read FText;\n    property Done: boolean read GetDone;\n  end;\n  \n  resourcestring\n    rsInvalidIndex = 'Invalid index';\n\nimplementation\n\nuses BGRASVGShapes;\n\n{ TSVGLinkListeners }\n\nfunction TSVGLinkListeners.IndexOf(const Item: TSVGLinkEvent): Integer;\nbegin\n  Result := 0;\n  while (Result < FCount) and not\n        ((TMethod(PT(FList)[Result]).Code = TMethod(Item).Code)\n        and (TMethod(PT(FList)[Result]).Data = TMethod(Item).Data)) do\n    Inc(Result);\n  if Result = FCount then\n    Result := -1;\nend;\n\nfunction TSVGLinkListeners.Remove(const Item: TSVGLinkEvent): Integer;\nbegin\n  Result := IndexOf(Item);\n  if Result >= 0 then\n    Delete(Result);\nend;\n\n{ TSVGCustomElement }\n\nfunction TSVGCustomElement.GetNamespaceCount: integer;\nvar\n  i: Integer;\n  name: string;\nbegin\n  result := 0;\n  for i := 0 to FDomElem.Attributes.Length-1 do\n  begin\n    name := string(FDomElem.Attributes.Item[i].NodeName);\n    if name.StartsWith('xmlns:') then inc(result);\n  end;\nend;\n\nfunction TSVGCustomElement.GetNamespacePrefix(AIndex: integer): string;\nvar\n  i: Integer;\n  name: string;\nbegin\n  if AIndex < 0 then exit('');\n  result := '';\n  for i := 0 to FDomElem.Attributes.Length-1 do\n  begin\n    name := string(FDomElem.Attributes.Item[i].NodeName);\n    if name.StartsWith('xmlns:') then\n    begin\n      if AIndex > 0 then dec(AIndex)\n      else exit(name.Substring(6));\n    end;\n  end;\nend;\n\nfunction TSVGCustomElement.GetNamespaceURI(APrefix: string): string;\nbegin\n  result := GetAttribute('xmlns:' + APrefix);\nend;\n\nprocedure TSVGCustomElement.SetNamespaceURI(APrefix: string; AValue: string);\nbegin\n  if AValue = '' then FDomElem.RemoveAttribute(DOMString('xmlns:' + APrefix))\n  else SetAttribute('xmlns:' + APrefix, AValue);\nend;\n\nfunction TSVGCustomElement.GetDOMElement: TDOMElement;\nbegin\n  result := FDomElem;\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyle(AName, ADefault: string;\n  ACanInherit: boolean): string;\nvar\n  curNode: TDOMElement;\n  styleDecl: DOMString;\nbegin\n  result := GetInlineStyle(AName,'');\n  if result = '' then\n  begin\n    result := GetStyleFromStyleSheet(AName,'');\n    if result = '' then\n    begin\n      result := GetAttributeFromElement(FDomElem, AName, false);\n      if (result = 'currentColor') and (AName <> 'color') then\n      begin\n        AName := 'color';\n        result := GetAttributeFromElement(FDomElem, AName, false);\n      end;\n\n      if result = '' then\n      begin\n        if ACanInherit then\n        begin\n          curNode := FDomElem;\n          while true do\n          begin\n            if curNode.ParentNode is TDOMElement then\n              curNode := TDOMElement(curNode.ParentNode)\n            else break;\n\n            styleDecl := curNode.GetAttribute('style');\n            result := GetPropertyFromStyleDeclarationBlock(string(styleDecl), AName, '');\n            if result <> '' then exit;\n            result := GetAttributeFromElement(curNode, AName, false);\n            if (result = 'currentColor') and (AName <> 'color') then\n            begin\n              curNode := FDomElem;\n              AName := 'color';\n              continue;\n            end;\n            if result <> '' then exit;\n          end;\n        end;\n        result := ADefault;\n      end;\n    end;\n  end;\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyle(AName, ADefault: string): string;\nbegin\n  result := GetAttributeOrStyle(AName, ADefault, true);\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyle(AName: string): string;\nbegin\n  result:= GetAttributeOrStyle(AName,'');\nend;\n\nfunction TSVGCustomElement.GetHorizAttributeOrStyleWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeOrStyleWithUnit(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetArrayOfHorizAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeOrStyleWithUnit(AName);\nend;\n\nfunction TSVGCustomElement.GetOrthoAttributeOrStyleWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeOrStyleWithUnit(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetArrayOfOrthoAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeOrStyleWithUnit(AName);\nend;\n\nclass procedure TSVGCustomElement.LocateStyleDeclaration(AText: string; AProperty: string; out AStartPos,\n  AColonPos, AValueLength: integer);\nvar i: integer;\n    curStart,curColon,curValueLength: integer;\n\n    function CheckShouldReturnResult: boolean;\n    begin\n      if Trim(Copy(AText,curStart,curColon-curStart)) = AProperty then\n      begin\n        AStartPos:= curStart;\n        AColonPos:= curColon;\n        AValueLength:= curValueLength;\n        result := true\n      end\n      else\n        result := false\n    end;\n\nbegin\n  AProperty := Trim(AProperty);\n  AStartPos := -1;\n  AColonPos := -1;\n  AValueLength:= -1;\n  curStart := -1;\n  curColon := -1;\n  curValueLength := -1;\n  for i := 1 to length(AText) do\n  begin\n    if curStart = -1 then\n    begin\n      if AText[i] in['-','_','a'..'z','A'..'Z','\\'] then\n      begin\n        curStart := i;\n        curColon := -1;\n      end;\n    end else\n    if curColon = -1 then\n    begin\n      if AText[i] = ':' then\n      begin\n        curColon := i;\n        curValueLength:= -1;\n      end;\n    end else\n    if AText[i] = ';' then\n    begin\n      curValueLength := i-(curColon+1);\n      if CheckShouldReturnResult then exit;\n      curStart := -1;\n      curColon := -1;\n      curValueLength:= -1;\n    end;\n  end;\n  if curColon <> -1 then\n  begin\n    curValueLength:= length(AText)-(curColon+1)+1;\n    if CheckShouldReturnResult then exit;\n  end;\nend;\n\nclass procedure TSVGCustomElement.UpdateStyleDeclarationBlock(var ABlock: string;\n  AProperty: string; AValue: string);\nvar\n  startPos, colonPos, valueLength: integer;\nbegin\n  if pos(';',AValue)<>0 then\n    raise exception.Create('Invalid character in value');\n  if pos(':',AProperty)<>0 then\n    raise exception.Create('Invalid character in name');\n  LocateStyleDeclaration(ABlock, AProperty, startPos,colonPos, valueLength);\n  if valueLength <> -1 then\n  begin\n    delete(ABlock, colonPos+1, valueLength);\n    insert(' '+Trim(AValue), ABlock, colonPos+1);\n  end else\n  begin\n    while (length(ABlock) > 0) and (ABlock[length(ABlock)] in[' ',#9,#10,#12,#13]) do\n      delete(ABlock, length(ABlock), 1);\n    if length(ABlock)>0 then\n    begin\n      if ABlock[length(ABlock)] <> ';' then AppendStr(ABlock, '; ');\n    end;\n    AppendStr(ABlock, AProperty+': '+AValue);\n  end;\nend;\n\nclass function TSVGCustomElement.RemovePropertyFromDeclarationBlock(\n  var ABlock: string; AProperty: string): boolean;\nvar\n  startPos, colonPos, valueLength: integer;\nbegin\n  LocateStyleDeclaration(ABlock, AProperty, startPos,colonPos, valueLength);\n  if valueLength <> -1 then\n  begin\n    delete(ABlock, startPos, colonPos+valueLength-startPos+1);\n    while (length(ABlock)>=startPos) and (ABlock[startPos] in[' ',#9,#10,#12,#13]) do delete(ABlock,startPos,1);\n    if (length(ABlock)>=startPos) and (ABlock[startPos] = ';') then delete(ABlock,startPos,1);\n    result := true;\n  end else\n    result := false;\nend;\n\nclass function TSVGCustomElement.GetPropertyFromStyleDeclarationBlock(ABlock: string;\n  AProperty: string; ADefault: string): string;\nvar\n  startPos, colonPos, valueLength: integer;\nbegin\n  LocateStyleDeclaration(ABlock, AProperty, startPos,colonPos, valueLength);\n  if valueLength <> -1 then\n    result := trim(copy(ABlock, colonPos+1, valueLength))\n  else\n    result := ADefault;\nend;\n\nfunction TSVGCustomElement.GetInlineStyle(const AName, ADefault: string\n  ): string;\nvar\n  styleDecl: String;\nbegin\n  styleDecl := GetAttribute('style','',False);\n  result := GetPropertyFromStyleDeclarationBlock(styleDecl, AName, ADefault);\nend;\n\nfunction TSVGCustomElement.GetInlineStyleWithUnit(const AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetInlineStyleWithUnit(AName, FloatWithCSSUnit(0, cuCustom));\nend;\n\nfunction TSVGCustomElement.GetInlineStyleWithUnit(const AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := TCSSUnitConverter.parseValue(GetInlineStyle(AName, ''), ADefault);\nend;\n\nfunction TSVGCustomElement.GetStyleFromStyleSheet(const AName, ADefault: string): string;\nbegin\n  result := ADefault;\nend;\n\nfunction TSVGCustomElement.GetStyle(const AName, ADefault: string): string;\nvar\n  curNode: TDOMElement;\n  styleDecl: DOMString;\nbegin\n  result:= GetInlineStyle(AName,'');\n  if result <> '' then exit;\n\n  result := GetStyleFromStyleSheet(AName,'');\n  if result <> '' then exit;\n\n  curNode := FDomElem;\n  while true do\n  begin\n    if curNode.ParentNode is TDOMElement then\n      curNode := TDOMElement(curNode.ParentNode)\n    else break;\n\n    styleDecl := curNode.GetAttribute('style');\n    result := GetPropertyFromStyleDeclarationBlock(string(styleDecl), AName, '');\n    if result <> '' then exit;\n  end;\n\n  result := ADefault;\nend;\n\nfunction TSVGCustomElement.GetStyle(const AName: string): string;\nbegin\n  result:= GetStyle(AName,'');\nend;\n\nfunction TSVGCustomElement.GetAttributeFromElement(ANode: TDOMElement;\n  AName: string; ACanInherit: boolean): string;\nbegin\n  repeat\n    if ((AName = 'xlink:href') or (AName = 'xlink:title')) and\n       not ANode.hasAttribute(DOMString(AName)) and ANode.hasAttribute(DOMString(AName.Substring(6))) then\n      result := string(Trim(ANode.GetAttribute(DOMString(AName.Substring(6)))))\n      else result := string(Trim(ANode.GetAttribute(DOMString(AName))));\n\n    if result = 'inherit' then result := '';\n    if (result = '') and ACanInherit and\n      (ANode.ParentNode is TDOMElement) then\n      ANode := ANode.ParentNode as TDOMElement\n    else\n      ANode := nil;\n  until ANode = nil;\nend;\n\nfunction TSVGCustomElement.GetAttribute(AName: string; ADefault: string;\n  ACanInherit: boolean): string;\nbegin\n  result := GetAttributeFromElement(FDomElem, AName, ACanInherit);\n  if result = '' then result := ADefault else\n  if (result = 'currentColor') and (AName <> 'color') then\n    result := GetAttribute('color', ADefault, ACanInherit);\nend;\n\nfunction TSVGCustomElement.GetAttribute(AName: string; ADefault: string): string;\nbegin\n  result := GetAttribute(AName, ADefault, False);\nend;\n\nfunction TSVGCustomElement.GetAttribute(AName: string): string;\nbegin\n  result:= GetAttribute(AName,'');\nend;\n\nfunction TSVGCustomElement.GetAttributeNumber(AName: string; ADefault: TSVGNumber): TSVGNumber;\nbegin\n  result := TCSSUnitConverter.parseValue(GetAttribute(AName),ADefault);\nend;\n\nfunction TSVGCustomElement.GetAttributeWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := TCSSUnitConverter.parseValue(GetAttribute(AName),ADefault);\nend;\n\nfunction TSVGCustomElement.GetAttributeWithUnit(AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeWithUnit(AName,FloatWithCSSUnit(0,cuCustom));\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyleWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit; ACanInherit: boolean): TFloatWithCSSUnit;\nvar\n  valueText: string;\nbegin\n  valueText := GetAttributeOrStyle(AName, '', ACanInherit);\n  result := TCSSUnitConverter.parseValue(valueText,ADefault);\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyleWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeOrStyleWithUnit(AName, ADefault, True);\nend;\n\nfunction TSVGCustomElement.GetAttributeOrStyleWithUnit(AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeOrStyleWithUnit(AName,FloatWithCSSUnit(0,cuCustom));\nend;\n\nfunction TSVGCustomElement.GetVerticalAttributeOrStyleWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit; ACanInherit: boolean): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeOrStyleWithUnit(AName,ADefault,ACanInherit);\nend;\n\nfunction TSVGCustomElement.GetVerticalAttributeOrStyleWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetVerticalAttributeOrStyleWithUnit(AName,ADefault,true);\nend;\n\nfunction TSVGCustomElement.GetArrayOfVerticalAttributeOrStyleWithUnit(\n  AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeOrStyleWithUnit(AName);\nend;\n\nprocedure TSVGCustomElement.SetInlineStyle(AName: string; AValue: string);\nvar\n  declarationBlock: string;\nbegin\n  declarationBlock := GetAttribute('style','',false);\n  UpdateStyleDeclarationBlock(declarationBlock, AName, AValue);\n  SetAttribute('style', declarationBlock);\nend;\n\nprocedure TSVGCustomElement.SetInlineStyle(AName: string;\n  AValue: TFloatWithCSSUnit);\nbegin\n  SetInlineStyle(AName, FUnits.formatValue(AValue));\nend;\n\nfunction TSVGCustomElement.GetOrthoAttributeWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeWithUnit(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetOrthoAttributeWithUnit(AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetOrthoAttributeWithUnit(AName,FloatWithCSSUnit(0,cuCustom));\nend;\n\nfunction TSVGCustomElement.GetHorizAttribute(AName: string;\n  ADefault: TSVGNumber): TSVGNumber;\nvar value: TFloatWithCSSUnit;\nbegin\n  value.value := GetAttributeNumber(AName,ADefault);\n  value.CSSUnit := cuPixel;\n  result := value.value;\nend;\n\nfunction TSVGCustomElement.GetHorizAttribute(AName: string): TSVGNumber;\nbegin\n  result := GetHorizAttribute(AName,0);\nend;\n\nfunction TSVGCustomElement.GetHorizAttributeWithUnit(AName: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeWithUnit(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetHorizAttributeWithUnit(AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetHorizAttributeWithUnit(AName,FloatWithCSSUnit(0,cuCustom));\nend;\n\nfunction TSVGCustomElement.GetArrayOfAttributeNumber(AName: string): ArrayOfTSVGNumber;\nbegin\n  result := GetArrayOfAttributeNumber(AName,true);\nend;\n\nfunction TSVGCustomElement.GetArrayOfAttributeWithUnit(AName: string; ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := TCSSUnitConverter.parseArrayOfValuesWithUnit(GetAttribute(AName,'',ACanInherit));\nend;\n\nfunction TSVGCustomElement.GetArrayOfAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeWithUnit(AName,true);\nend;\n\nfunction TSVGCustomElement.GetArrayOfAttributeOrStyleWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nvar\n  valueText: string;\nbegin\n  valueText := GetAttributeOrStyle(AName);\n  result := TCSSUnitConverter.parseArrayOfValuesWithUnit(valueText);\nend;\n\nfunction TSVGCustomElement.GetArrayOfOrthoAttributeWithUnit(AName: string;\n  ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeWithUnit(AName, ACanInherit);\nend;\n\nfunction TSVGCustomElement.GetArrayOfOrthoAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfOrthoAttributeWithUnit(AName, true);\nend;\n\nfunction TSVGCustomElement.GetArrayOfHorizAttributeWithUnit(AName: string; ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeWithUnit(AName,ACanInherit);\nend;\n\nfunction TSVGCustomElement.GetArrayOfHorizAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfHorizAttributeWithUnit(AName,true);\nend;\n\nfunction TSVGCustomElement.GetArrayOfVerticalAttributeWithUnit(AName: string;\n  ACanInherit: boolean): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfAttributeWithUnit(AName,ACanInherit);\nend;\n\nfunction TSVGCustomElement.GetArrayOfAttributeNumber(AName: string;\n  ACanInherit: boolean): ArrayOfTSVGNumber;\nbegin\n  result := TCSSUnitConverter.parseArrayOfNumbers(GetAttribute(AName,'',ACanInherit));\nend;\n\nfunction TSVGCustomElement.GetVerticalAttribute(AName: string; ADefault: TSVGNumber): TSVGNumber;\nbegin\n  result := GetAttributeNumber(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetVerticalAttribute(AName: string): TSVGNumber;\nbegin\n  result := GetVerticalAttribute(AName,0);\nend;\n\nfunction TSVGCustomElement.GetVerticalAttributeWithUnit(AName: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := GetAttributeWithUnit(AName,ADefault);\nend;\n\nfunction TSVGCustomElement.GetVerticalAttributeWithUnit(AName: string): TFloatWithCSSUnit;\nbegin\n  result := GetVerticalAttributeWithUnit(AName,FloatWithCSSUnit(0,cuCustom));\nend;\n\nfunction TSVGCustomElement.GetArrayOfVerticalAttributeWithUnit(AName: string): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := GetArrayOfVerticalAttributeWithUnit(AName, True);\nend;\n\nprocedure TSVGCustomElement.SetAttribute(AName: string; AValue: TSVGNumber);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetAttribute(AName: string; AValue: string);\nbegin\n  if ((AName = 'xlink:href') or (AName = 'xlink:title')) and\n     not FDomElem.hasAttribute(DOMString(AName)) and FDomElem.hasAttribute(DOMString(AName.Substring(6))) then\n    FDomElem.SetAttribute(DOMString(AName.Substring(6)), DOMString(AValue))\n  else\n    FDomElem.SetAttribute(DOMString(AName), DOMString(AValue));\nend;\n\nprocedure TSVGCustomElement.SetAttributeWithUnit(AName: string;\n  AValue: TFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetHorizAttribute(AName: string;\n  AValue: TSVGNumber);\nbegin\n  SetAttribute(AName, AValue);\nend;\n\nprocedure TSVGCustomElement.SetHorizAttributeWithUnit(AName: string;\n  AValue: TFloatWithCSSUnit);\nbegin\n  SetAttributeWithUnit(AName, AValue);\nend;\n\nprocedure TSVGCustomElement.SetArrayOfHorizAttributeWithUnit(AName: string;\n  AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetVerticalAttribute(AName: string;\n  AValue: TSVGNumber);\nbegin\n  SetAttribute(AName, AValue)\nend;\n\nprocedure TSVGCustomElement.SetArrayOfAttributeNumber(AName: string;\n  AValue: ArrayOfTSVGNumber);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetArrayOfAttributeWithUnit(AName: string;\n  const AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetVerticalAttributeWithUnit(AName: string;\n  AValue: TFloatWithCSSUnit);\nbegin\n  SetAttributeWithUnit(AName, AValue);\nend;\n\nprocedure TSVGCustomElement.SetArrayOfVerticalAttributeWithUnit(AName: string;\n  AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetOrthoAttributeWithUnit(AName: string;\n  AValue: TFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.SetArrayOfOrthoAttributeWithUnit(AName: string;\n  AValue: ArrayOfTFloatWithCSSUnit);\nbegin\n  SetAttribute(AName, TCSSUnitConverter.formatValue(AValue));\nend;\n\nprocedure TSVGCustomElement.RemoveStyle(const AName: string);\nvar\n  declarationBlock: string;\nbegin\n  declarationBlock := GetAttribute('style','',false);\n  if RemovePropertyFromDeclarationBlock(declarationBlock, AName) then\n    SetAttribute('style', declarationBlock);\nend;\n\nfunction TSVGCustomElement.HasAttribute(AName: string): boolean;\nbegin\n  result := FDomElem.hasAttribute(DOMString(AName));\nend;\n\nfunction TSVGCustomElement.HasInlineStyle(AName: string): boolean;\nbegin\n  result := trim(GetInlineStyle(AName, '')) <> '';  //an empty declaration is illegal\nend;\n\nprocedure TSVGCustomElement.IterateElements(ACallback: TIterateElementCallback;\n  AData: pointer; ARecursive: boolean);\nbegin\n  // no content by default\nend;\n\nprocedure TSVGCustomElement.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n  if HasInlineStyle('stroke-width') then\n    SetInlineStyle('stroke-width', FUnits.ConvertWidth(GetInlineStyleWithUnit('stroke-width'), AUnit));\n  if HasInlineStyle('stroke-dash-offset') then\n    SetInlineStyle('stroke-dash-offset', FUnits.ConvertWidth(GetInlineStyleWithUnit('stroke-dash-offset'), AUnit));\n  if HasInlineStyle('font-size') then\n    SetInlineStyle('font-size', FUnits.ConvertHeight(GetInlineStyleWithUnit('font-size'), AUnit));\nend;\n\nfunction TSVGCustomElement.EnterFontSize(AIsRoot: boolean): TFloatWithCSSUnit;\nvar\n  fs: TFloatWithCSSUnit;\nbegin\n  result := FUnits.CurrentFontEmHeight;\n  if AIsRoot then FUnits.CurrentFontEmHeight := FUnits.RootFontEmHeight;\n  fs := GetAttributeOrStyleWithUnit('font-size', FUnits.CurrentFontEmHeight, false);\n  if fs.CSSUnit in [cuFontEmHeight,cuFontXHeight] then\n    fs := FUnits.ConvertHeight(fs, cuCustom);\n  FUnits.CurrentFontEmHeight:= fs;\nend;\n\nprocedure TSVGCustomElement.ExitFontSize(APrevFontSize: TFloatWithCSSUnit);\nbegin\n  FUnits.CurrentFontEmHeight := APrevFontSize;\nend;\n\nprocedure TSVGCustomElement.RemoveNamespace(APrefix: string);\nbegin\n  NamespaceURI['APrefix'] := '';\nend;\n\nfunction TSVGCustomElement.NeedNamespace(APrefix: string): boolean;\nvar\n  prefixColon: DOMString;\n\n  function NeedNamespaceRec(ANode: TDOMElement): boolean;\n  var\n    i: Integer;\n  begin\n    for i := 0 to ANode.Attributes.Length-1 do\n      if copy(ANode.Attributes[i].NodeName, 1, length(prefixColon)) = prefixColon then\n        exit(true);\n\n    for i := 0 to ANode.ChildNodes.Length-1 do\n      if (ANode.ChildNodes[i] is TDOMElement) and\n         NeedNamespaceRec(ANode.ChildNodes[i] as TDOMElement) then\n        exit(true);\n\n    result := false;\n  end;\n\nbegin\n  prefixColon := DOMString(APrefix)+':';\n  result := NeedNamespaceRec(FDomElem);\nend;\n\nfunction TSVGCustomElement.MatrixToTransform(m: TAffineMatrix;\n  AFromUnit: TCSSUnit): string;\nvar s: string;\n    translateStr: string;\nbegin\n  translateStr := 'translate('+FUnits.formatValue(FUnits.ConvertWidth(m[1,3],AFromUnit,cuCustom))+' '+\n      FUnits.formatValue(FUnits.ConvertHeight(m[2,3],AFromUnit,cuCustom))+')';\n  if IsAffineMatrixTranslation(m) then\n  begin\n    if IsAffineMatrixIdentity(m) then\n      result := ''\n      else result := translateStr;\n  end else\n  begin\n    if (m[1,3] <> 0) or (m[2,3] <> 0) then\n    begin\n      s := translateStr;\n      m[1,3] := 0;\n      m[2,3] := 0;\n    end else\n      s := '';\n    if IsAffineMatrixScale(m) then\n      result := trim(s+' scale('+FUnits.formatValue(m[1,1])+' '+FUnits.formatValue(m[2,2])+')')\n    else\n      result := trim(s+' matrix('+FUnits.formatValue(m[1,1])+' '+FUnits.formatValue(m[2,1])+' '+\n                     FUnits.formatValue(m[1,2])+' '+FUnits.formatValue(m[2,2])+' ' +\n                     FUnits.formatValue(m[1,3])+' '+FUnits.formatValue(m[2,3])+')');\n  end;\nend;\n\nfunction TSVGCustomElement.TransformToMatrix(ATransform: string;\n  AToUnit: TCSSUnit): TAffineMatrix;\nvar parser: TSVGParser;\nbegin\n  if Trim(ATransform) = '' then\n  begin\n    result := AffineMatrixIdentity;\n    exit;\n  end;\n  parser := TSVGParser.Create(ATransform);\n  result := parser.ParseTransform;\n  result[1,3] := FUnits.ConvertWidth(result[1,3], cuCustom, AToUnit);\n  result[2,3] := FUnits.ConvertHeight(result[2,3], cuCustom, AToUnit);\n  parser.Free;\nend;\n\n{ TSVGViewBox }\n\nfunction TSVGViewBox.ToString: string;\nbegin\n  result :=\n    TCSSUnitConverter.formatValue(min.x)+' '+\n    TCSSUnitConverter.formatValue(min.y)+' '+\n    TCSSUnitConverter.formatValue(size.x)+' '+\n    TCSSUnitConverter.formatValue(size.y);\nend;\n\nclass function TSVGViewBox.Parse(AValue: string): TSVGViewBox;\n\n  function parseNextFloat: single;\n  var\n    idxSpace,{%H-}errPos: integer;\n  begin\n    idxSpace:= pos(' ',AValue);\n    if idxSpace <> 0 then\n      val(copy(AValue,1,idxSpace-1),result,errPos)\n    else\n      result := 0;\n    delete(AValue,1,idxSpace);\n    while (AValue <> '') and (AValue[1] = ' ') do delete(AValue,1,1);\n  end;\n\nbegin\n  AValue := trim(AValue)+' ';\n  with result do\n  begin\n    min.x := parseNextFloat;\n    min.y := parseNextFloat;\n    size.x := parseNextFloat;\n    size.y := parseNextFloat;\n  end;\nend;\n\nclass function TSVGViewBox.DefaultValue: TSVGViewBox;\nbegin\n with result do\n begin\n   min.x := 0;\n   min.y := 0;\n   size.x := 0;\n   size.y := 0;\n end;\nend;     \n\n{ TSVGPreserveAspectRatio }\n\nfunction TSVGPreserveAspectRatio.ToString: string;\nbegin\n  if not Preserve then result := 'none' else\n  begin\n    result := '';\n    case HorizAlign of\n    taCenter: AppendStr(result, 'xMid');\n    taRightJustify: AppendStr(result, 'xMax');\n    else AppendStr(result, 'xMin');\n    end;\n    case VertAlign of\n    tlCenter: AppendStr(result, 'YMid');\n    tlBottom: AppendStr(result, 'YMax');\n    else AppendStr(result, 'YMin');\n    end;\n    if Slice then AppendStr(result, ' slice')\n    else AppendStr(result, ' meet');\n  end;\nend;\n\nclass function TSVGPreserveAspectRatio.Parse(AValue: string\n  ): TSVGPreserveAspectRatio;\nvar p: TSVGParser;\n  id: string;\nbegin\n  p := TSVGParser.Create(AValue);\n  result := DefaultValue;\n  repeat\n    id := p.ParseId;\n    if id = 'none' then\n    begin\n      result.Preserve := false;\n      //set other parameters for intermediate value of ViewSize (before stretching non-proportionaly)\n      result.Slice := false;\n      result.HorizAlign := taCenter;\n      result.VertAlign := tlCenter;\n      exit;\n    end else\n    if id = 'slice' then result.Slice := true\n    else if (length(id)=8) and (id[1] = 'x') and (id[5] = 'Y') then\n    begin\n      case copy(id,2,3) of\n      'Min': result.HorizAlign := taLeftJustify;\n      'Mid': result.HorizAlign := taCenter;\n      'Max': result.HorizAlign := taRightJustify;\n      end;\n      case copy(id,6,3) of\n      'Min': result.VertAlign := tlTop;\n      'Mid': result.VertAlign := tlCenter;\n      'Max': result.VertAlign := tlBottom;\n      end;\n    end;\n  until id = '';\n  p.Free;\nend;\n\nclass function TSVGPreserveAspectRatio.DefaultValue: TSVGPreserveAspectRatio;\nbegin\n  result.Preserve := true;\n  result.Slice := false;\n  result.HorizAlign := taCenter;\n  result.VertAlign := tlCenter;\nend;\n\n{ TSVGParser }\n\nfunction TSVGParser.GetDone: boolean;\nbegin\n  result := FPos>length(FText)\nend;\n\nconstructor TSVGParser.Create(AText: string);\nbegin\n  FNumberError:= false;\n  FPos := 1;\n  FText := AText;\nend;\n\nfunction TSVGParser.ParseFloat: single;\nvar numberStart: integer;\n    errPos: integer;\nbegin\n  while (FPos <= length(FText)) and (FText[FPos] in[#0..#32,',']) do inc(FPos);\n  numberStart:= FPos;\n  if (FPos <= length(FText)) and (FText[FPos] in['+','-']) then inc(FPos);\n  while (FPos <= length(FText)) and (FText[FPos] in['0'..'9']) do inc(FPos);\n  if (FPos <= length(FText)) and (FText[FPos] = '.') then inc(FPos);\n  while (FPos <= length(FText)) and (FText[FPos] in['0'..'9']) do inc(FPos);\n  if (FPos <= length(FText)) and (FText[FPos] in['e','E']) then\n  begin\n    inc(FPos);\n    if (FPos <= length(FText)) and (FText[FPos] in['+','-']) then inc(FPos);\n    while (FPos <= length(FText)) and (FText[FPos] in['0'..'9']) do inc(FPos);\n  end;\n  if FPos = numberStart then\n  begin\n    FNumberError := true;\n    result := 0;\n  end\n  else\n  begin\n    val(copy(FText,numberStart,FPos-numberStart),result,errPos);\n    if errPos <> 0 then FNumberError := true;\n  end;\nend;\n\nfunction TSVGParser.ParseId: string;\nvar idStart: integer;\nbegin\n  while (FPos <= length(FText)) and (FText[FPos] in[#0..#32,',']) do inc(FPos);\n  idStart:= FPos;\n  if (FPos <= length(FText)) and (FText[FPos] in['A'..'Z','a'..'z']) then inc(FPos);\n  while (FPos <= length(FText)) and (FText[FPos] in['0'..'9','A'..'Z','a'..'z','_']) do inc(FPos);\n  result := copy(FText,idStart,FPos-idStart);\nend;\n\nfunction TSVGParser.ParseSymbol: char;\nbegin\n  while (FPos <= length(FText)) and (FText[FPos] in[#0..#32,',']) do inc(FPos);\n  if (FPos <= length(FText)) and not (FText[FPos] in['A'..'Z','a'..'z','0'..'9']) then\n  begin\n    result := FText[FPos];\n    inc(FPos);\n  end else\n    result := #0;\nend;\n\nfunction TSVGParser.ParseTransform: TAffineMatrix;\nvar\n  kind: String;\n  m : TAffineMatrix;\n  angle,tx,ty: single;\nbegin\n  result := AffineMatrixIdentity;\n  while not Done do\n  begin\n    kind := ParseId;\n    if kind = '' then break;\n    if ParseSymbol <> '(' then break;\n    if compareText(kind,'matrix')=0 then\n    begin\n      m[1,1] := ParseFloat;\n      SkipSymbol(',');\n      m[2,1] := ParseFloat;\n      SkipSymbol(',');\n      m[1,2] := ParseFloat;\n      SkipSymbol(',');\n      m[2,2] := ParseFloat;\n      SkipSymbol(',');\n      m[1,3] := ParseFloat;\n      SkipSymbol(',');\n      m[2,3] := ParseFloat;\n      result := result * m;\n    end else\n    if compareText(kind,'translate')=0 then\n    begin\n      tx := ParseFloat;\n      SkipSymbol(',');\n      ty := ParseFloat;\n      result := result * AffineMatrixTranslation(tx,ty);\n    end else\n    if compareText(kind,'scale')=0 then\n    begin\n      tx := ParseFloat;\n      SkipSymbol(',');\n      ClearError;\n      ty := ParseFloat;\n      if NumberError then ty := tx;\n      result := result * AffineMatrixScale(tx,ty);\n    end else\n    if compareText(kind,'rotate')=0 then\n    begin\n      angle := ParseFloat;\n      SkipSymbol(',');\n      tx := ParseFloat;\n      SkipSymbol(',');\n      ty := ParseFloat;\n      result := result * AffineMatrixTranslation(tx,ty)*\n                AffineMatrixRotationDeg(angle)*\n                AffineMatrixTranslation(-tx,-ty);\n    end else\n    if compareText(kind,'skewx')=0 then\n    begin\n      angle := ParseFloat;\n      result := result * AffineMatrixSkewXDeg(angle);\n    end else\n    if compareText(kind,'skewy')=0 then\n    begin\n      angle := ParseFloat;\n      result := result * AffineMatrixSkewYDeg(angle);\n    end;\n    SkipUpToSymbol(')');\n  end;\nend;\n\nprocedure TSVGParser.SkipSymbol(ASymbol: char);\nbegin\n  while (FPos <= length(FText)) and (FText[FPos] in[#0..#32,',']) do inc(FPos);\n  if (FPos <= length(FText)) and (FText[FPos] = ASymbol) then inc(FPos);\nend;\n\nprocedure TSVGParser.SkipUpToSymbol(ASymbol: char);\nbegin\n  while (FPos <= length(FText)) and (FText[FPos]<>ASymbol) do inc(FPos);\n  if (FPos <= length(FText)) and (FText[FPos]=ASymbol) then inc(FPos);\nend;\n\nprocedure TSVGParser.ClearError;\nbegin\n  FNumberError:= false;\nend;\n\n{ TSVGDataLink }\n\nconstructor TSVGDataLink.Create(AParent: TSVGDataLink);\nbegin\n  FElements:= TSVGElementDictionary.Create;\n  FElements.Sorted := true;\n  FStyles:= TSVGElementList.Create;\n  FParent := AParent;\n  if Assigned(FParent) then FParent.FChildren.Add(self);\n  FLinkListeners := TSVGLinkListeners.Create;\n  FChildren := TList.Create;\nend;\n\ndestructor TSVGDataLink.Destroy;\nvar\n  i: Integer;\nbegin\n  for i := FChildren.Count-1 downto 0 do\n    TSVGDatalink(FChildren[i]).Parent := nil;\n  Parent := nil;\n  FreeAndNil(FChildren);\n  FreeAndNil(FLinkListeners);\n  FreeAndNil(FElements);\n  FreeAndNil(FStyles);\n  inherited Destroy;\nend;\n\nfunction TSVGDataLink.GetElement(AIndex: integer): TSVGElement;\nbegin\n  if (AIndex < 0) or (AIndex > FElements.Count) then\n   raise exception.Create(rsInvalidIndex);\n  result:= FElements.Data[AIndex];\nend;\n\nfunction TSVGDataLink.GetStyle(AIndex: integer): TSVGElement;\nbegin\n  if not IsValidIndex(AIndex,FStyles) then\n   raise exception.Create(rsInvalidIndex);\n  result:= FStyles[AIndex];\nend;\n\nfunction TSVGDataLink.IsValidIndex(const AIndex: integer; list: TSVGElementList): boolean;\nbegin\n  result:= (AIndex >= 0) and (AIndex < list.Count);\nend;\n\nfunction TSVGDataLink.FindTo(el: TSVGElement; list: TSVGElementList): integer;\nbegin\n  result := list.IndexOf(el);\nend;\n\nprocedure TSVGDataLink.NotifyLink(AElement: TSVGElement; ALink: boolean);\nvar\n  i: Integer;\n  temp: array of TSVGLinkEvent;\nbegin\n  // make copy because listeners might change the list\n  SetLength(temp, FLinkListeners.Count);\n  for i:= 0 to high(temp) do\n    temp[i] := FLinkListeners.Items[i];\n  for i := 0 to high(temp) do\n  begin\n    if FLinkListeners.IndexOf(temp[i]) <> -1 then\n      temp[i](self, AElement, ALink);\n  end;\n  // children datalinks may use the element\n  for i := FChildren.Count-1 downto 0 do\n    TSVGDataLink(FChildren[i]).NotifyLink(AElement, ALink);\nend;\n\nprocedure TSVGDataLink.SetParent(AValue: TSVGDataLink);\n  // notify link change for all elements and parent elements\n  procedure NotifyLinkRec(ADatalink: TSVGDataLink; ALink: boolean);\n  var\n    i: Integer;\n  begin\n    if ADatalink = nil then exit;\n    for i := 0 to ADatalink.ElementCount-1 do\n      NotifyLink(ADatalink.Elements[i], ALink);\n    NotifyLinkRec(ADatalink.Parent, ALink);\n  end;\nbegin\n  if FParent=AValue then Exit;\n  NotifyLinkRec(FParent, False);\n  if Assigned(FParent) then FParent.FChildren.Remove(self);\n  FParent:=AValue;\n  if Assigned(FParent) then FParent.FChildren.Add(self);\n  NotifyLinkRec(FParent, True);\nend;\n\nfunction TSVGDataLink.FindElement(el: TSVGElement): integer;\nbegin\n  result:= FElements.IndexOfData(el);\nend;\n\nfunction TSVGDataLink.FindStyle(el: TSVGElement): integer;\nbegin\n  result:= FindTo(el,FStyles);\nend;\n\nfunction TSVGDataLink.ElementCount: integer;\nbegin\n  result:= FElements.Count;\nend;\n\nfunction TSVGDataLink.StyleCount: integer;\nbegin\n  result:= FStyles.Count;\nend;\n\nfunction TSVGDataLink.IsLinkElement(el: TSVGElement): boolean;\nbegin\n  result:= FindElement(el) <> -1;\nend;\n\nfunction TSVGDataLink.IsLinkStyle(el: TSVGElement): boolean;\nbegin\n  result:= FindStyle(el) <> -1;\nend;\n\nfunction TSVGDataLink.IsLink(el: TSVGElement): boolean;\nbegin\n  result:= IsLinkStyle(el) or IsLinkElement(el);\nend;\n\nfunction TSVGDataLink.Link(el: TSVGElement): integer;\nbegin\n  if el.ID <> '' then\n  begin\n    if FElements.IndexOf(el.ID)<>-1 then exit(-1);\n    result := FElements.Add(el.ID, el);\n  end else\n    result := -1;\n\n  if el is TSVGStyle then\n    FStyles.Add(el);\n\n  NotifyLink(el, true);\nend;\n\nprocedure TSVGDataLink.Unlink(el: TSVGElement);\nvar\n  index: integer;\nbegin\n  index:= FindElement(el);\n  if index = -1 then exit;\n\n  if el is TSVGStyle then\n    FStyles.Remove(el);\n\n  FElements.Delete(index);\n  NotifyLink(el, false);\nend;\n\nprocedure TSVGDataLink.UnlinkAll;\nbegin\n  FStyles.Clear;\n  FElements.Clear;\nend;\n\nprocedure TSVGDataLink.RegisterLinkListener(AHandler: TSVGLinkEvent;\n  ARegister: boolean);\nbegin\n  if ARegister then\n    FLinkListeners.Add(AHandler)\n    else FLinkListeners.Remove(AHandler);\nend;\n\nfunction TSVGDataLink.FindElementById(AID: string; AClass: TSVGFactory): TSVGElement;\nvar\n  index: Integer;\nbegin\n index := FElements.IndexOf(AId);\n if index = -1 then\n begin\n   if Assigned(Parent) then\n     result := Parent.FindElementById(AID, AClass)\n     else result := nil\n end\n else\n begin\n   result := FElements.Data[index];\n   if not (result is AClass) then result := nil;\n end;\nend;\n\nfunction StringStartsWith(AText, AStart: string): boolean;\nbegin\n  Result:= (AStart<>'') and (StrLComp(PChar(AStart),PChar(AText),length(AStart))=0);\nend;\n\nfunction TSVGDataLink.FindElementByRef(ARef: string; AClass: TSVGFactory): TSVGElement;\nvar\n  notFound: boolean;\nbegin\n  result := FindElementByRef(ARef, false, AClass, notFound);\nend;\n\nfunction TSVGDataLink.FindElementByRef(ARef: string; ANeedUrl: boolean; AClass: TSVGFactory;\n  out ANotFound: boolean): TSVGElement;\nbegin\n  if StringStartsWith(ARef,'url(#') then\n  begin\n    result := FindElementById(System.Copy(ARef,6,Length(ARef)-6), AClass);\n    ANotFound := (result = nil);\n  end\n  else if not ANeedUrl and StringStartsWith(ARef,'#') then\n  begin\n    result := FindElementById(System.Copy(ARef,2,Length(ARef)-1), AClass);\n    ANotFound := (result = nil);\n  end\n  else\n  begin\n    ANotFound := false;\n    exit(nil);\n  end;\nend;\n\n{ TSVGElement }\n\nfunction TSVGElement.GetClipPath: string;\nbegin\n  result := GetAttributeOrStyle('clip-path', '', false);\nend;\n\nfunction TSVGElement.GetFill: string;\nbegin\n  result := AttributeOrStyleDef['fill','black'];\nend;\n\nfunction TSVGElement.GetFillColor: TBGRAPixel;\nbegin\n  result := StrToBGRA(fill,BGRABlack);\n  result.alpha := round(result.alpha*fillOpacity*opacity);\n  if result.alpha = 0 then result := BGRAPixelTransparent;\nend;\n\nfunction TSVGElement.GetFillOpacity: single;\nvar errPos: integer;\nbegin\n  val(AttributeOrStyleDef['fill-opacity','1'], result, errPos);\n  if errPos <> 0 then result := 1 else\n    if result < 0 then result := 0 else\n      if result > 1 then result := 1;\nend;\n\nfunction TSVGElement.GetFillRule: string;\nbegin\n  result := AttributeOrStyleDef['fill-rule','nonzero'];\nend; \n\nfunction TSVGElement.GetIsFillNone: boolean;\nbegin\n  result := compareText(trim(fill),'none')=0;\nend;\n\nfunction TSVGElement.GetIsStrokeNone: boolean;\nvar strokeStr: string;\nbegin\n  strokeStr := stroke;\n  result := (trim(strokeStr)='') or (compareText(trim(strokeStr),'none')=0);\nend;\n\nfunction TSVGElement.GetMask: string;\nbegin\n  result := GetAttributeOrStyle('mask', '', false);\nend;\n\nfunction TSVGElement.GetMatrix(AUnit: TCSSUnit): TAffineMatrix;\nbegin\n result := TransformToMatrix(transform, AUnit);\nend;\n\nfunction TSVGElement.GetMixBlendMode: TBlendOperation;\nvar\n  opstr: String;\nbegin\n  opstr := AttributeOrStyle['mix-blend-mode'];\n  if opstr = 'lighten' then\n    result := boLighten else\n  if opstr = 'screen' then\n    result := boScreen else\n  if opstr = 'color-dodge' then\n    result := boColorDodge else\n  if opstr = 'color-burn' then\n    result := boColorBurn else\n  if opstr = 'darken' then\n    result := boDarken else\n  if (opstr = 'plus') or (opstr = 'add') then\n    result := boLinearAdd else\n  if opstr = 'multiply' then\n    result := boMultiply else\n  if opstr = 'overlay' then\n    result := boOverlay else\n  if opstr = 'soft-light' then\n    result := boSvgSoftLight else\n  if opstr = 'hard-light' then\n    result := boHardLight else\n  if opstr = 'difference' then\n    result := boLinearDifference else\n  if opstr = 'difference' then\n    result := boLinearDifference else\n  if opstr = 'exclusion' then\n    result := boLinearExclusion else\n  if opstr = 'hue' then\n    result := boCorrectedHue else\n  if opstr = 'color' then\n    result := boCorrectedColor else\n  if opstr = 'luminosity' then\n    result := boCorrectedLightness else\n  if opstr = 'saturation' then\n    result := boCorrectedSaturation\n  else\n    result := boTransparent;\nend;\n\nfunction TSVGElement.GetOpacity: single;\nvar errPos: integer;\nbegin\n  val(AttributeOrStyleDef['opacity','1'], result, errPos);\n  if errPos <> 0 then result := 1 else\n    if result < 0 then result := 0 else\n      if result > 1 then result := 1;\nend;\n\nfunction TSVGElement.GetPaintOrder: TSVGPaintOrder;\nvar\n  parser: TSVGParser;\n\n  function GetNext: integer;\n  var\n    id: String;\n  begin\n    id := parser.ParseId;\n    if id = 'fill' then exit(0)\n    else if id = 'stroke' then exit(1)\n    else if id = 'markers' then exit(2)\n    else if id = '' then exit(-1)\n    else result := GetNext();\n  end;\n\nvar\n  s: string;\nbegin\n  s := AttributeOrStyle['paint-order', 'normal'];\n  if s = 'normal' then exit(spoFillStrokeMarkers);\n  parser := TSVGParser.Create(s);\n  case GetNext of\n  0: case GetNext of\n     2: result := spoFillMarkersStroke;\n     else result := spoFillStrokeMarkers;\n     end;\n  1: case GetNext of\n     2: result := spoStrokeMarkersFill;\n     else result := spoStrokeFillMarkers;\n     end;\n  2: case GetNext of\n     1: result := spoMarkersStrokeFill;\n     else result := spoMarkersFillStroke;\n     end;\n  else\n    result := spoFillStrokeMarkers;\n  end;\n  parser.Free;\nend;\n\nfunction TSVGElement.GetShapeRendering: string;\nbegin\n  result := GetAttributeOrStyle('shape-rendering','auto', false);\nend;\n\nfunction TSVGElement.GetStroke: string;\nbegin\n  result := AttributeOrStyleDef['stroke','none'];\nend;\n\nfunction TSVGElement.GetStrokeColor: TBGRAPixel;\nbegin\n  result := StrToBGRA(stroke);\n  result.alpha := round(result.alpha*strokeOpacity*opacity);\n  if result.alpha = 0 then result := BGRAPixelTransparent;\nend;\n\nfunction TSVGElement.GetStrokeLineCap: string;\nbegin\n  result := AttributeOrStyleDef['stroke-linecap','butt'];\nend;\n\nfunction TSVGElement.GetStrokeLineCapLCL: TPenEndCap;\nvar\n  s: String;\nbegin\n  s := strokeLineCap;\n  if s = 'round' then result := pecRound\n  else if s = 'square' then result := pecSquare\n  else result := pecFlat;\nend;\n\nfunction TSVGElement.GetStrokeLineJoin: string;\nbegin\n  result := AttributeOrStyleDef['stroke-linejoin','miter'];\nend;\n\nfunction TSVGElement.GetStrokeLineJoinLCL: TPenJoinStyle;\nvar\n  s: String;\nbegin\n  s := strokeLineJoin;\n  if s = 'bevel' then result := pjsBevel\n  else if s = 'miter' then result := pjsMiter\n  else result := pjsRound;\nend;\n\nfunction TSVGElement.GetStrokeMiterLimit: single;\nvar errPos: integer;\nbegin\n  val(AttributeOrStyleDef['stroke-miterlimit','4'], result, errPos);\n  if errPos <> 0 then result := 4 else\n    if result < 1 then result := 1;\nend;\n\nfunction TSVGElement.GetStrokeOpacity: single;\nvar errPos: integer;\nbegin\n  val(AttributeOrStyleDef['stroke-opacity','1'], result, errPos);\n  if errPos <> 0 then result := 1 else\n    if result < 0 then result := 0 else\n      if result > 1 then result := 1;\nend;\n\nfunction TSVGElement.GetStrokeWidth: TFloatWithCSSUnit;\nbegin\n  result := OrthoAttributeOrStyleWithUnit['stroke-width',FloatWithCSSUnit(1,cuCustom)];\nend;\n\nfunction TSVGElement.GetStrokeDashArray: string;\nbegin\n  result := AttributeOrStyleDef['stroke-dasharray','none']; \nend;\n\nfunction TSVGElement.GetStrokeDashArrayF: ArrayOfFloat;\nvar \n  parser: TSVGParser;\n  nvalue,i: integer;\n  s_array: String;\nbegin\n  s_array:= strokeDashArray;\n  if s_array = 'none' then\n  begin\n    result := nil;\n    exit;\n  end;\n  parser:=TSVGParser.Create(s_array);\n  nvalue := 0;\n  repeat\n    parser.ParseFloat;\n    if not parser.NumberError then\n      inc(nvalue);\n  until parser.NumberError or parser.Done;\n  parser.ClearError;\n  setlength(Result,nvalue);\n  parser.Position := 1;\n  for i := 0 to high(result) do\n    result[i] := parser.ParseFloat;\n  parser.Free;\nend;\n\nfunction TSVGElement.GetStrokeDashOffset: TFloatWithCSSUnit;\nbegin\n  result := OrthoAttributeOrStyleWithUnit['stroke-dashoffset',\n              FloatWithCSSUnit(0,cuCustom)];\nend;\n\nfunction TSVGElement.GetStyleFromStyleSheet(const AName, ADefault: string): string;\nvar\n  i: Integer;\nbegin\n  if FImportStyleState = fssNotSearched then ImportStyles;\n  if FImportStyleState <> fssNotFound then\n    for i:= Length(FImportedStyles)-1 downto 0 do\n    begin\n      result:= GetPropertyFromStyleDeclarationBlock(FImportedStyles[i].attr, AName, '');\n      if result <> '' then exit;\n    end;\n  result := inherited GetStyleFromStyleSheet(AName, ADefault);\nend;\n\nfunction TSVGElement.GetTransform: string;\nbegin\n  result := Attribute['transform'];\nend;\n\nfunction TSVGElement.GetID: string;\nbegin\n  result := Attribute['xml:id'];\n  if result = '' then result := Attribute['id'];\nend; \n\nfunction TSVGElement.GetClassAttr: string;\nbegin\n  result := Attribute['class'];\nend;\n\nfunction TSVGElement.GetVisible: boolean;\nbegin\n  result := (AttributeOrStyle['display'] <> 'none');\nend;\n\nprocedure TSVGElement.SetDatalink(AValue: TSVGDataLink);\nbegin\n  if Assigned(FDataLink) then FDataLink.Unlink(self);\n  FDataLink := AValue;\n  if Assigned(FDataLink) then FDataLink.Link(self);\nend;\n\nprocedure TSVGElement.SetClipPath(AValue: string);\nbegin\n  Attribute['clip-path'] := AValue;\n  RemoveStyle('clip-path');\nend;\n\nprocedure TSVGElement.SetFill(AValue: string);\nbegin\n  Attribute['fill'] := AValue;\n  RemoveStyle('fill');\nend;\n\nprocedure TSVGElement.SetFillColor(AValue: TBGRAPixel);\nbegin\n  fillOpacity:= AValue.alpha/255;\n  AValue.alpha:= 255;\n  fill := LowerCase(BGRAToStr(AValue, CSSColors, 0, true, true));\nend;\n\nprocedure TSVGElement.SetFillOpacity(AValue: single);\nbegin\n  Attribute['fill-opacity'] := Units.formatValue(AValue);\n  RemoveStyle('fill-opacity');\nend;\n\nprocedure TSVGElement.SetFillRule(AValue: string);\nbegin\n  Attribute['fill-rule'] := AValue;\n  RemoveStyle('fill-rule');\nend;\n\nprocedure TSVGElement.SetMask(AValue: string);\nbegin\n  Attribute['mask'] := AValue;\n  RemoveStyle('mask');\nend;\n\nprocedure TSVGElement.SetMatrix(AUnit: TCSSUnit; const AValue: TAffineMatrix);\nbegin\n  if not IsAffineMatrixIdentity(AValue) then\n    transform := MatrixToTransform(AValue, AUnit)\n    else transformNone;\nend;\n\nprocedure TSVGElement.SetMixBlendMode(AValue: TBlendOperation);\nvar\n  opstr: String;\nbegin\n  case AValue of\n  boLighten: opstr := 'lighten';\n  boScreen: opstr := 'screen';\n  boColorDodge: opstr := 'color-dodge';\n  boColorBurn: opstr := 'color-burn';\n  boDarken: opstr := 'darken';\n  boLinearAdd: opstr := 'add';\n  boMultiply: opstr := 'multiply';\n  boOverlay: opstr := 'overlay';\n  boSvgSoftLight: opstr := 'soft-light';\n  boHardLight: opstr := 'hard-light';\n  boLinearDifference: opstr := 'difference';\n  boLinearExclusion: opstr := 'exclusion';\n  boCorrectedHue: opstr := 'hue';\n  boCorrectedColor: opstr := 'color';\n  boCorrectedLightness: opstr := 'luminosity';\n  boCorrectedSaturation: opstr := 'saturation';\n  else {boTransparent}\n    begin\n      RemoveStyle('mix-blend-mode');\n      FDomElem.RemoveAttribute('mix-blend-mode');\n      exit;\n    end;\n  end;\n  Style['mix-blend-mode'] := opstr;\n  FDomElem.RemoveAttribute('mix-blend-mode');\nend;\n\nprocedure TSVGElement.SetOpacity(AValue: single);\nbegin\n  Attribute['opacity'] := Units.formatValue(AValue);\n  RemoveStyle('opacity');\nend;\n\nprocedure TSVGElement.SetPaintOrder(AValue: TSVGPaintOrder);\nvar\n  s: String;\nbegin\n  case AValue of\n    spoFillStrokeMarkers: s := 'normal';\n    spoFillMarkersStroke: s := 'fill markers';\n    spoStrokeFillMarkers: s := 'stroke';\n    spoStrokeMarkersFill: s := 'stroke markers';\n    spoMarkersFillStroke: s := 'markers';\n    spoMarkersStrokeFill: s := 'markers stroke';\n  else\n    raise exception.Create('Unknown paint order');\n  end;\n  Attribute['paint-order'] := s;\n  RemoveStyle('paint-order');\nend;\n\nprocedure TSVGElement.SetShapeRendering(AValue: string);\nbegin\n  Attribute['shape-rendering'] := AValue;\n  RemoveStyle('shape-rendering');\nend;\n\nprocedure TSVGElement.SetStroke(AValue: string);\nbegin\n  Attribute['stroke'] := AValue;\n  RemoveStyle('stroke');\nend;\n\nprocedure TSVGElement.SetStrokeColor(AValue: TBGRAPixel);\nbegin\n  strokeOpacity:= AValue.alpha/255;\n  AValue.alpha:= 255;\n  stroke := Lowercase(BGRAToStr(AValue, CSSColors, 0, true, true));\nend;\n\nprocedure TSVGElement.SetStrokeLineCap(AValue: string);\nbegin\n  Attribute['stroke-linecap'] := AValue;\n  RemoveStyle('stroke-linecap');\nend;\n\nprocedure TSVGElement.SetStrokeLineCapLCL(AValue: TPenEndCap);\nbegin\n  case AValue of\n  pecRound: strokeLineCap:= 'round';\n  pecSquare: strokeLineCap:= 'square';\n  else strokeLineCap:= 'butt';\n  end;\nend;\n\nprocedure TSVGElement.SetStrokeLineJoin(AValue: string);\nbegin\n  Attribute['stroke-linejoin'] := AValue;\n  RemoveStyle('stroke-linejoin');\nend;\n\nprocedure TSVGElement.SetStrokeLineJoinLCL(AValue: TPenJoinStyle);\nbegin\n case AValue of\n pjsBevel: strokeLineJoin:= 'bevel';\n pjsMiter: strokeLineJoin:= 'miter';\n else strokeLineJoin:= 'round';\n end;\nend;\n\nprocedure TSVGElement.SetStrokeMiterLimit(AValue: single);\nbegin\n  if AValue < 1 then AValue := 1;\n  Attribute['stroke-miterlimit'] := Units.formatValue(AValue);\n  RemoveStyle('stroke-miterlimit');\nend;\n\nprocedure TSVGElement.SetStrokeOpacity(AValue: single);\nbegin\n  Attribute['stroke-opacity'] := Units.formatValue(AValue);\n  RemoveStyle('stroke-opacity');\nend;\n\nprocedure TSVGElement.SetStrokeWidth(AValue: TFloatWithCSSUnit);\nbegin\n  HorizAttributeWithUnit['stroke-width'] := AValue;\n  RemoveStyle('stroke-width');\nend;\n\nprocedure TSVGElement.SetStrokeDashArray(AValue: string);\nbegin\n  Attribute['stroke-dasharray'] := AValue;\n  RemoveStyle('stroke-dasharray');\nend;\n\nprocedure TSVGElement.SetStrokeDashArrayF(AValue: ArrayOfFloat);\nvar \n  s: string;\n  i: integer;\nbegin\n  if length(AValue) = 0 then\n  begin\n    strokeDashArrayNone;\n    exit;\n  end;\n  s:= '';\n  for i := 0 to high(AValue) do\n  begin\n    if s <> '' then AppendStr(s, ' ');\n    AppendStr(s, TCSSUnitConverter.formatValue(AValue[i])+' ');\n  end;\n  strokeDashArray := s;\nend;\n\nprocedure TSVGElement.SetStrokeDashOffset(AValue: TFloatWithCSSUnit);\nbegin\n  OrthoAttributeWithUnit['stroke-dashoffset'] := AValue;\n  RemoveStyle('stroke-dashoffset');\nend;      \n\nprocedure TSVGElement.SetTransform(AValue: string);\nbegin\n  Attribute['transform'] := AValue;\nend;\n\nprocedure TSVGElement.SetID(AValue: string);\nbegin\n  if AValue = ID then exit;\n  if Assigned(DataLink) then DataLink.Unlink(self);\n  if Attribute['xml:id']<>'' then\n    Attribute['xml:id'] := AValue\n  else\n    Attribute['id'] := AValue;\n  if Assigned(DataLink) then DataLink.Link(self);\nend;\n\nprocedure TSVGElement.SetClassAttr(AValue: string);\nbegin\n  Attribute['class'] := AValue;\nend; \n\nprocedure TSVGElement.Init(ADocument: TDOMDocument; ATag: string;\n  AUnits: TCSSUnitConverter);\nbegin\n  if ATag='' then\n    raise exception.Create('Cannot create a generic element');\n\n  FDomElem := ADocument.CreateElement(DOMString(ATag));\n  FUnits := AUnits;\n  if Assigned(FDataLink) then FDataLink.Link(self);\nend;\n\nprocedure TSVGElement.Init(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter);\nbegin\n  FDomElem := AElement;\n  FUnits := AUnits;\n  if Assigned(FDataLink) then FDataLink.Link(self);\nend;\n\nprocedure TSVGElement.InternalDraw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  //nothing\nend;\n\nprocedure TSVGElement.InternalCopyPathTo({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit);\nbegin\n //nothing\nend;\n\nprocedure TSVGElement.ApplyFillStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit);\nbegin\n  ACanvas2D.fillStyle(fillColor);\n\n  ACanvas2D.fillMode := TFillMode(fillMode);\nend;    \n\nprocedure TSVGElement.ApplyStrokeStyle(ACanvas2D: TBGRACanvas2D; AUnit: TCSSUnit);\nvar\n  a: ArrayOfFloat;\n  lw: single;\n  i: Integer;\nbegin\n  ACanvas2d.strokeStyle(strokeColor);\n  lw := Units.ConvertWidth(strokeWidth,AUnit).value;\n  ACanvas2d.lineWidth := lw;\n  ACanvas2d.lineCap := strokeLineCap;\n  ACanvas2d.lineJoin := strokeLineJoin;\n  ACanvas2d.miterLimit := strokeMiterLimit;\n  \n  a:= strokeDashArrayF;\n  if (Length(a) <> 0) and (lw > 0) then\n  begin\n    for i := 0 to high(a) do\n      a[i] := a[i] / lw;\n    ACanvas2d.lineStyle(a);\n  end\n  else\n    ACanvas2d.lineStyle(psSolid);\nend;\n\nprocedure TSVGElement.Initialize;\nbegin\n  SetLength(FImportedStyles,0);\n  FImportStyleState   := fssNotSearched;\nend;\n\nprocedure TSVGElement.Paint(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\n  procedure DoFill;\n  begin\n    if not isFillNone then\n    begin\n      ApplyFillStyle(ACanvas2D,AUnit);\n      ACanvas2d.fill;\n    end;\n  end;\n  procedure DoStroke;\n  begin\n    if not isStrokeNone then\n    begin\n      ApplyStrokeStyle(ACanvas2D,AUnit);\n      ACanvas2d.stroke;\n    end;\n  end;\nvar\n  aaBefore: Boolean;\nbegin\n  aaBefore := ACanvas2d.antialiasing;\n  ACanvas2d.antialiasing:= antialiasing;\n  if paintOrder in [spoFillStrokeMarkers, spoFillMarkersStroke, spoMarkersFillStroke] then\n  begin\n    DoFill;\n    DoStroke;\n  end else\n  begin\n    DoStroke;\n    DoFill;\n  end;\n  ACanvas2d.antialiasing:= aaBefore;\nend;\n\nconstructor TSVGElement.Create(AElement: TDOMElement;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  FDataLink:= ADataLink;\n  Initialize;\n  Init(AElement,AUnits);\nend;\n\nconstructor TSVGElement.Create(ADocument: TDOMDocument;\n  AUnits: TCSSUnitConverter; ADataLink: TSVGDataLink);\nbegin\n  FDataLink:= ADataLink;\n  Initialize;\n  Init(ADocument, GetDOMTag, AUnits);\nend;\n\nclass function TSVGElement.GetDOMTag: string;\nbegin\n  result := '';\nend;\n\ndestructor TSVGElement.Destroy;\nbegin\n  SetLength(FImportedStyles,0);\n  if Assigned(FDataLink) then FDataLink.Unlink(self);\n  inherited Destroy;\nend;\n\nprocedure TSVGElement.ListIdentifiers(AResult: TStringList);\nvar\n  myId: String;\nbegin\n  myId := Id;\n  if (myId <> '') and (AResult.IndexOf(myId) = -1) then\n    AResult.Add(myId);\nend;\n\nprocedure TSVGElement.RenameIdentifiers(AFrom, ATo: TStringList);\nvar\n  idx: Integer;\n  strokeDone, fillDone, clipDone, maskDone, HrefDone: boolean;\n  before, after: String;\nbegin\n  if AFrom.Count <> ATo.Count then raise exception.Create('Identifier list size mismatch');\n  idx := AFrom.IndexOf(Id);\n  if idx <> -1 then Id := ATo[idx];\n  strokeDone := false;\n  fillDone:= false;\n  clipDone:= false;\n  maskDone:= false;\n  HrefDone:= false;\n  for idx := 0 to AFrom.Count-1 do\n  begin\n    before := 'url(#' + AFrom[idx] + ')';\n    after := 'url(#' + ATo[idx] + ')';\n    if not strokeDone and (stroke = before) then\n    begin stroke := after; strokeDone := true; end;\n    if not fillDone and (fill = before) then\n    begin fill := after; fillDone := true; end;\n    if not clipDone and (clipPath = before) then\n    begin clipPath := after; clipDone := true; end;\n    if not maskDone and (mask = before) then\n    begin mask := after; maskDone := true; end;\n    if not hrefDone and (Attribute['xlink:href'] = before) then\n    begin Attribute['xlink:href'] := after; hrefDone := true; end;\n  end;\nend;\n\nprocedure TSVGElement.ConvertToUnit(AUnit: TCSSUnit);\nbegin\n inherited ConvertToUnit(AUnit);\n FImportStyleState:= fssNotSearched;\n if HasAttribute('stroke-width') then\n   SetAttributeWithUnit('stroke-width', Units.ConvertWidth(GetAttributeWithUnit('stroke-width'), AUnit));\n if HasAttribute('stroke-dash-offset') then\n   SetAttributeWithUnit('stroke-dash-offset', Units.ConvertWidth(GetAttributeWithUnit('stroke-dash-offset'), AUnit));\nend;\n\nprocedure TSVGElement.Recompute;\nbegin\n\nend;\n\nprocedure TSVGElement.Draw(ACanvas2d: TBGRACanvas2D; AUnit: TCSSUnit);\nvar prevMatrix: TAffineMatrix;\n  clipUrl, maskUrl: string;\n  clipElem: TSVGClipPath;\n  maskElem: TSVGMask;\n  elementNotFound, stateChange: boolean;\nbegin\n  if not Visible then exit;\n  prevMatrix := ACanvas2d.matrix;\n  ACanvas2d.transform(matrix[AUnit]);\n  stateChange := false;\n  clipUrl := clipPath;\n  if clipUrl <> '' then\n  begin\n    clipElem := TSVGClipPath(DataLink.FindElementByRef(clipUrl, true, TSVGClipPath, elementNotFound));\n    if Assigned(clipElem) then\n    begin\n      if not stateChange then\n      begin\n        ACanvas2d.save;\n        stateChange:= true;\n      end;\n      clipElem.ApplyClipTo(ACanvas2d, AUnit);\n    end;\n  end;\n  maskUrl := mask;\n  if maskUrl <> '' then\n  begin\n    maskElem := TSVGMask(DataLink.FindElementByRef(maskUrl, true, TSVGMask, elementNotFound));\n    if Assigned(maskElem) then\n    begin\n      if not stateChange then\n      begin\n        ACanvas2d.save;\n        stateChange:= true;\n      end;\n      maskElem.ApplyMaskTo(ACanvas2d, AUnit);\n    end;\n  end;\n  InternalDraw(ACanvas2d,AUnit);\n  if stateChange then ACanvas2d.restore;\n  ACanvas2d.matrix := prevMatrix;\nend;\n\nprocedure TSVGElement.CopyPathTo({%H-}ACanvas2d: TBGRACanvas2D; {%H-}AUnit: TCSSUnit);\nvar prevMatrix: TAffineMatrix;\nbegin\n  if not Visible then exit;\n  prevMatrix := ACanvas2d.matrix;\n  ACanvas2d.transform(matrix[AUnit]);\n  InternalCopyPathTo(ACanvas2d,AUnit);\n  ACanvas2d.matrix := prevMatrix;\nend;\n\nprocedure TSVGElement.fillNone;\nbegin\n  fill := 'none';\nend;\n\nprocedure TSVGElement.strokeNone;\nbegin\n  stroke := 'none';\nend;\n\nprocedure TSVGElement.strokeDashArrayNone;\nbegin\n  strokeDashArray := 'none';\nend;\n\nprocedure TSVGElement.transformNone;\nbegin\n  FDomElem.RemoveAttribute('transform');\nend;\n\nfunction TSVGElement.antialiasing: boolean;\nbegin\n  case shapeRendering of\n  'optimizeSpeed', 'crispEdges': result := false;\n  'geometricPrecision': result := true;\n  else {'auto'} result := true;\n  end;\nend;\n\nfunction TSVGElement.fillMode: TSVGFillMode;\nbegin\n  if fillRule = 'evenodd' then\n    result := sfmEvenOdd\n  else\n    result := sfmNonZero;\nend;\n\nfunction TSVGElement.FindStyleElementInternal(const classStr: string;\n  out attributesStr: string): integer;\nvar\n  i: integer;\n  data: TSVGDataLink;\nbegin\n  attributesStr:= '';\n  data := FDataLink;\n  while data <> nil do\n  begin\n    with data do\n      for i:= 0 to StyleCount-1 do\n      begin\n        result:= (Styles[i] as TSVGStyle).Find(classStr);\n        if result <> -1 then\n        begin\n          attributesStr:= (Styles[i] as TSVGStyle).Ruleset[result].declarations;\n          Exit;\n        end;\n      end;\n    data := data.Parent;\n  end;\n  result:= -1;\nend;\n\nprocedure TSVGElement.ImportStyles;\n\n  procedure AddStyle(const s: string; const id: integer);\n  var\n    l: integer;\n  begin\n    FImportStyleState:= fssFound;\n    l:= Length(FImportedStyles);\n    SetLength(FImportedStyles,l+1);\n    with FImportedStyles[l] do\n    begin\n     attr:= s;\n     pos:= id;\n    end;\n  end;\n\nvar\n  fid: integer;\n  tag,styleC,s,c: string;\nbegin\n  FImportStyleState:= fssNotFound;\n  SetLength(FImportedStyles,0);\n  tag:= string(FDomElem.TagName);\n  (*\n    if style element is:\n    <style>\n     circle.test{fill:red; fill-opacity: 0.8;}\n     circle{fill:blue; fill-opacity: 0.4;}\n     circle.style1{fill:yellow;}\n    </style>\n    and circle declare:\n    <circle class = \"style1\" cx=\"160\" cy=\"160\" r=\"35\" stroke=\"black\" />\n\n    FImportedStyles[0] = 'fill:blue; fill-opacity: 0.4;'\n    FImportedStyles[1] = 'fill:yellow;'\n\n    fill-opacity for \"style1\" = 0.4 not default 1!\n  *)\n\n  //Find as: \"[tag]\" example \"circle\"\n  fid:= FindStyleElementInternal(tag,s);\n  if fid <> -1 then\n    AddStyle(s,fid);\n  styleC:= classAttr.Trim;\n  if styleC <> '' then\n  for c in styleC.Trim.Split([' ']) do\n  begin\n    //Find as: \"[tag].[class]\" example \"circle.style1\"\n    fid:= FindStyleElementInternal(tag+'.'+c,s);\n    if fid <> -1 then\n      AddStyle(s,fid)\n    else\n    begin\n      //Find as: \".[class]\" example \".style1\"\n      fid:= FindStyleElementInternal('.'+c,s);\n      if fid <> -1 then\n        AddStyle(s,fid);\n    end;\n  end;\nend;\n\nprocedure TSVGElement.SetVisible(AValue: boolean);\nbegin\n  if AValue <> Visible then\n    Style['display'] := BoolToStr(AValue, 'inline', 'none');\n  FDomElem.RemoveAttribute('display');\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgratext.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Base implementation of system text rendering.)\n\n  This unit provides basic text rendering functions using system renderer\n  (LCL or MSEgui).\n\n  Text functions use a temporary bitmap where the operating system text drawing\n  is used. Then it is scaled down (if antialiasing is activated) and colored.\n\n  These routines are rather slow, so you may use other font renderers\n  like TBGRATextEffectFontRenderer in BGRATextFX if you want to use LCL fonts,\n  or, if you have TrueType fonts files, you may use TBGRAFreeTypeFontRenderer\n  in BGRAFreeType.\n\n  **Font rendering units** : BGRAText, BGRATextFX, BGRAVectorize, BGRAFreeType\n}\nunit BGRAText;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\n{$IFDEF LINUX}\n  {$DEFINE SYSTEM_RENDERER_IS_FINE}\n  {$DEFINE SYSTEM_CLEARTYPE_RENDERER_IS_FINE}\n  {$DEFINE RENDER_TEXT_ON_TBITMAP}\n{$ENDIF}\n{$IFDEF FREEBSD}\n  {$DEFINE SYSTEM_RENDERER_IS_FINE}\n  {$DEFINE SYSTEM_CLEARTYPE_RENDERER_IS_FINE}\n{$ENDIF}\n{$IFDEF DARWIN}\n  {$DEFINE SYSTEM_RENDERER_IS_FINE}\n  {$DEFINE RENDER_TEXT_ON_TBITMAP}\n{$ENDIF}\n{$IFDEF WINDOWS}\n  {$IFNDEF LEGACY_FONT_VERTICAL_OFFSET}\n    {$DEFINE FIX_FONT_VERTICAL_OFFSET}\n  {$ENDIF}\n  {$IFDEF LCL}\n    {$DEFINE TEXTOUT_KERNING_PATCH}\n  {$ENDIF}\n{$ENDIF}\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  {$DEFINE RENDER_TEXT_ON_TBITMAP}\n{$ENDIF}\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, BGRAPen, BGRAGrayscaleMask\n  {$IFDEF LCL},InterfaceBase, LCLVersion{$ENDIF};\n\n{$IF defined(LCLCOCOA) and (lcl_fullversion < 3030000)}\n  {$DEFINE TEXT_ANGLE_PATCH}\n{$ENDIF}\n\nconst\n  RenderTextOnBitmap = {$IFDEF RENDER_TEXT_ON_TBITMAP}true{$ELSE}false{$ENDIF};\n\ntype\n  TWordBreakHandler = BGRABitmapTypes.TWordBreakHandler;\n\n  { Font renderer using system rendering (LCL, mseGUI). }\n  TBGRASystemFontRenderer = class(TBGRACustomFontRenderer)\n  protected\n    FFont: TFont;             //font parameters\n    FWordBreakHandler: TWordBreakHandler;\n    FOwnUnderline: boolean;\n    procedure UpdateFont; virtual;\n    function InternalTextSize(sUTF8: string; AShowPrefix: boolean): TSize;\n    function InternalTextSizeAngle(sUTF8: string; AShowPrefix: boolean; AOrientation: integer): TSize; virtual;\n    function InternalTextSizeStyle(sUTF8: string; AStyle: TTextStyle; AMaxWidth: integer): TSize; virtual;\n    procedure InternalTextWordBreak(ADest: TBGRACustomBitmap; ATextUTF8: string;\n                                    x, y, AMaxWidth: integer; AColor: TBGRAPixel; ATexture: IBGRAScanner;\n                                    AHorizAlign: TAlignment; AVertAlign: TTextLayout; ARightToLeft: boolean);\n    procedure InternalTextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; c: TBGRAPixel; ATexture: IBGRAScanner);\n    procedure InternalTextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n                              align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false);\n    {$IFDEF TEXT_ANGLE_PATCH}procedure InternalTextOutAnglePatch(ADest: TBGRACustomBitmap; x, y: single; orientation: integer;\n                                s: string; c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment;\n                                AShowPrefix: boolean = false; ARightToLeft: boolean = false);{$ENDIF}\n    procedure InternalTextOutAngle(ADest: TBGRACustomBitmap; x, y: single; AOrientation: integer; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n                              align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false); virtual;\n    procedure InternalTextOutEllipse(ADest: TBGRACustomBitmap; x, y, availableWidth: single; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n                              align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false);\n    procedure InternalSplitText(var ATextUTF8: string; AMaxWidth: integer; out ARemainsUTF8: string; out ALineEndingBreak: boolean;\n                                AWordBreak: TWordBreakHandler); overload;\n    procedure InternalSplitText(var ATextUTF8: string; AMaxWidth: integer; out ARemainsUTF8: string;\n                                AWordBreak: TWordBreakHandler); overload;\n    function InternalGetFontPixelMetric: TFontPixelMetric;\n    procedure DefaultWorkBreakHandler(var ABeforeUTF8, AAfterUTF8: string);\n  public\n    OverrideUnderlineDecoration: boolean; // draw unerline according to computed font pixel metric instead of using system rendering of underline\n    procedure SplitText(var ATextUTF8: string; AMaxWidth: integer; out ARemainsUTF8: string);\n    function GetFontPixelMetric: TFontPixelMetric; override;\n    function FontExists(AName: string): boolean; override;\n    class function PatchSystemFontName(AName: string): string;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer; sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; c: TBGRAPixel); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; texture: IBGRAScanner); overload; override;\n    procedure TextWordBreak(ADest: TBGRACustomBitmap; AText: string; x, y, AMaxWidth: integer; AColor: TBGRAPixel; AHorizAlign: TAlignment; AVertAlign: TTextLayout; ARightToLeft: boolean = false); overload;\n    procedure TextWordBreak(ADest: TBGRACustomBitmap; AText: string; x, y, AMaxWidth: integer; ATexture: IBGRAScanner; AHorizAlign: TAlignment; AVertAlign: TTextLayout; ARightToLeft: boolean = false); overload;\n    function TextSize(sUTF8: string): TSize; overload; override;\n    function TextSizeAngle(sUTF8: string; orientationTenthDegCCW: integer): TSize; override;\n    function TextSize(sUTF8: string; AMaxWidth: integer; {%H-}ARightToLeft: boolean): TSize; overload; override;\n    function TextFitInfo(sUTF8: string; AMaxWidth: integer): integer; override;\n    constructor Create;\n    destructor Destroy; override;\n    property OnWordBreak: TWordBreakHandler read FWordBreakHandler write FWordBreakHandler;\n  end;\n\n{$IFDEF BGRABITMAP_USE_MSEGUI}\n  { Font renderer using MSE calls to the operating system }\n  TMSEFontRenderer = class(TBGRASystemFontRenderer);\n{$ELSE}\n  { Font renderer using LCL calls to the operating system }\n  TLCLFontRenderer = class(TBGRASystemFontRenderer);\n{$ENDIF}\n\nfunction CleanTextOutString(s: string): string; //this works with UTF8 strings as well\nfunction RemoveLineEnding(var s: string; indexByte: integer): boolean; //this works with UTF8 strings however the index is the byte index\nfunction RemoveLineEndingUTF8(var sUTF8: string; indexUTF8: integer): boolean;\n\nprocedure BGRATextOut(bmp: TBGRACustomBitmap; Font: TFont; Quality: TBGRAFontQuality; xf, yf: single; sUTF8: string;\n  c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment; CustomAntialiasingLevel: Integer = 0);\n\nprocedure BGRATextOutAngle(bmp: TBGRACustomBitmap; Font: TFont; Quality: TBGRAFontQuality; xf, yf: single; orientationTenthDegCCW: integer;\n  sUTF8: string; c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment; CustomAntialiasingLevel: Integer = 0);\n\nprocedure BGRATextRect(bmp: TBGRACustomBitmap; Font: TFont; Quality: TBGRAFontQuality; ARect: TRect; xf, yf: single;\n  sUTF8: string; style: TTextStyle; c: TBGRAPixel; tex: IBGRAScanner; CustomAntialiasingLevel: Integer = 0);\n\nfunction BGRATextSize(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nfunction BGRATextSizeAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nfunction BGRATextFitInfo(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer; AMaxWidth: integer): integer;\nfunction BGRATextFitInfoAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer; AMaxWidth: integer): integer;\nfunction BGRATextSizeStyle(Font: TFont; Quality: TBGRAFontQuality;\n  sUTF8: string; AStyle: TTextStyle; CustomAntialiasingLevel: integer;\n  AMaxWidth: integer): TSize;\n\nfunction BGRAOriginalTextSize(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: integer): TSize;\nfunction BGRAOriginalTextSizeAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nfunction BGRAOriginalTextSizeEx(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer;\n                                out actualAntialiasingLevel: integer; out extraVerticalMarginDueToRotation: integer): TSize;\nfunction BGRAOriginalTextSizeExAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer;\n                                out actualAntialiasingLevel: integer; out extraVerticalMarginDueToRotation: integer): TSize;\nfunction BGRAOriginalTextSizeStyle(\n  Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; AStyle: TTextStyle;\n  CustomAntialiasingLevel: Integer; AMaxWidth: integer): TSize;\n\nfunction BGRATextUnderline(ATopLeft: TPointF; AWidth: Single; AMetrics: TFontPixelMetric): ArrayOfTPointF; overload;\nfunction BGRATextUnderline(ATopLeft: TPointF; AWidth: Single; ABaseline, AEmHeight: single): ArrayOfTPointF; overload;\nfunction BGRATextStrikeOut(ATopLeft: TPointF; AWidth: Single; AMetrics: TFontPixelMetric): ArrayOfTPointF; overload;\nfunction BGRATextStrikeOut(ATopLeft: TPointF; AWidth: Single; ABaseline, AEmHeight, AXHeight: single): ArrayOfTPointF; overload;\n\nfunction GetFontHeightSign: integer;\nfunction FontEmHeightSign: integer;\nfunction FontFullHeightSign: integer;\nfunction SystemFontAvailable: boolean;\nfunction GetFineClearTypeAuto: TBGRAFontQuality;\nfunction FixSystemFontFullHeight({%H-}AFontName: string; AFontHeight: integer): integer;\n\n{$IFDEF LCL}\nfunction LCLFontAvailable: boolean;\nfunction FixLCLFontFullHeight(AFontName: string; AFontHeight: integer): integer;\n{$ENDIF}\n\nprocedure BGRAFillClearTypeGrayscaleMask(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; mask: TGrayscaleMask; color: TBGRAPixel; texture: IBGRAScanner = nil; RGBOrder: boolean=true);\nprocedure BGRAFillClearTypeMask(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner = nil; RGBOrder: boolean=true);\nprocedure BGRAFillClearTypeRGBMask(dest: TBGRACustomBitmap; x,y: integer; mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner = nil; KeepRGBOrder: boolean=true);\n\nconst FontAntialiasingLevel = {$IFDEF SYSTEM_RENDERER_IS_FINE}3{$ELSE}6{$ENDIF};\nconst FontDefaultQuality = fqAntialiased;\nconst IsLclFontRendererFine = {$IFDEF SYSTEM_RENDERER_IS_FINE}true{$ELSE}false{$ENDIF};\n\nfunction GetLCLFontPixelMetric(AFont: TFont): TFontPixelMetric;\n\nvar\n  BGRATextOutImproveReadabilityProc : procedure (bmp: TBGRACustomBitmap; AFont: TFont; xf,yf: single; text: string; color: TBGRAPixel; tex: IBGRAScanner; align: TAlignment; mode : TBGRATextOutImproveReadabilityMode);\n\nprocedure BitmapTextOut(ABitmap: TBitmap; ACoord: TPoint; AText: string);\nprocedure BitmapTextOutAngle(ABitmap: TBitmap; ACoord: TPoint; AText: string; AOrientation: integer);\nprocedure BitmapTextRect(ABitmap: TBitmap; ARect: TRect; ACoord: TPoint; \n  AText: string; const AStyle: TTextStyle);\nfunction BitmapTextExtent(ABitmap: TBitmap; AText: string): TSize;\nfunction BitmapTextExtentStyle(ABitmap: TBitmap; AText: string; AMaxWidth: integer;\n  const AStyle: TTextStyle): TSize;\nfunction BitmapTextExtentAngle(ABitmap: TBitmap; AText: string; AOrientation: integer): TSize;\nfunction BitmapTextFitInfo(ABitmap: TBitmap; AText: string; AMaxWidth: integer): integer;\nfunction BitmapTextFitInfoAngle(ABitmap: TBitmap; AText: string; AMaxWidth: integer; AOrientation: integer): integer;\nprocedure BitmapFillRect(ABitmap: TBitmap; ARect: TRect; AColor: TColor);\n\nimplementation\n\nuses Math, BGRATransform, BGRABlend, BGRAUTF8, BGRAUnicode, BGRATextBidi\n     {$IFDEF LCL}, Forms, LCLIntf, LCLType{$IF lcl_fullversion >= 1070000}, lclplatformdef{$ENDIF}{$ENDIF};\n\nconst MaxPixelMetricCount = 100;\n\nvar\n  SystemFontDisabledValue: boolean;\n  fqFineClearTypeComputed: boolean;\n  fqFineClearTypeValue: TBGRAFontQuality;\n  FontHeightSignComputed: boolean;\n  FontHeightSignValue: integer;\n  FontPixelMetricArray: array[0..MaxPixelMetricCount-1] of record\n                          usage: integer;\n                          name: string;\n                          height: integer;\n                          italic: boolean;\n                          bold: boolean;\n                          metric: TFontPixelMetric;\n                        end;\n  FontPixelMetricCount: integer;\n\nfunction RemovePrefix(sUTF8: string): string;\nvar i,resLen: integer;\nbegin\n  setlength(result, length(sUTF8));\n  resLen := 0;\n  i := 1;\n  while i <= length(sUTF8) do\n  begin\n    if sUTF8[i] = '&' then\n    begin // double ('&&') indicate single char '&'\n      if (i < length(sUTF8)) and (sUTF8[i+1] = '&') then\n      begin\n        inc(resLen);\n        result[resLen] := '&';\n        inc(i,2);\n      end else\n        // single indicate underline\n        inc(i);\n    end else\n    begin\n      inc(resLen);\n      result[resLen] := sUTF8[i];\n      inc(i);\n    end;\n  end;\n  setlength(result,resLen);\nend;\n\nprocedure SplitByPrefix(sUTF8: string; AParts: TStrings);\nvar i, j: integer;\n  temp: string;\n  tempLen, charLen: integer;\n  underline: boolean;\n\n  procedure FlushUnderline;\n  begin\n    if underline and (tempLen > 0) then\n    begin\n      AParts.Add(copy(temp, 1, tempLen));\n      underline := false;\n      tempLen := 0;\n    end;\n  end;\n\nbegin\n  setlength(temp, length(sUTF8));\n  tempLen := 0;\n  underline := false;\n  i := 1;\n  while i <= length(sUTF8) do\n  begin\n    if sUTF8[i] = '&' then\n    begin // double ('&&') indicate single char '&'\n      if (i < length(sUTF8)) and (sUTF8[i+1] = '&') then\n      begin\n        FlushUnderline;\n        inc(tempLen);\n        temp[tempLen] := '&';\n        inc(i,2);\n      end else\n        // single indicate underline\n        AParts.Add(copy(temp, 1, tempLen));\n        underline := true;\n        tempLen := 0;\n        inc(i);\n    end else\n    begin\n      if GetBidiClassUTF8(@sUTF8[i]) <> ubcNonSpacingMark then\n        FlushUnderline;\n      charLen := UTF8CharacterLength(@sUTF8[i]);\n      for j := 1 to charLen do\n      begin\n        inc(tempLen);\n        temp[tempLen] := sUTF8[i];\n        inc(i);\n      end;\n    end;\n  end;\n  AParts.Add(copy(temp, 1, tempLen));\nend;\n\n{$IF defined(BGRABITMAP_USE_MSEGUI)}\n{$i bgramsegui_text.inc}\n{$ELSEIF defined(BGRABITMAP_USE_LCL)}\nprocedure BitmapTextOut(ABitmap: TBitmap; ACoord: TPoint; AText: string);\nbegin\n  ABitmap.Canvas.Brush.Style := bsClear;\n  ABitmap.Canvas.TextOut(ACoord.X, ACoord.Y, AText);\nend;\n\nprocedure BitmapTextOutAngle(ABitmap: TBitmap; ACoord: TPoint; AText: string; AOrientation: integer);\nbegin\n  ABitmap.Canvas.Font.Orientation := AOrientation;\n  BitmapTextOut(ABitmap, ACoord, AText);\nend;\n\nprocedure BitmapTextRect(ABitmap: TBitmap; ARect: TRect; ACoord: TPoint; \n  AText: string; const AStyle: TTextStyle);\nbegin\n  ABitmap.Canvas.Brush.Style := bsClear;\n  {$IFDEF DARWIN}\n  if AStyle.RightToLeft then AText := UTF8EmbedDirection(AText, true);\n  {$ENDIF}\n  ABitmap.Canvas.TextRect(ARect, ACoord.X, ACoord.Y, AText, AStyle);\nend;\n\nfunction BitmapTextExtent(ABitmap: TBitmap; AText: string): TSize;\nbegin\n  {$IFDEF DARWIN}\n  AText := StringReplace(AText, ' ', UTF8_NO_BREAK_SPACE, [rfReplaceAll]);\n  {$ENDIF}\n  result := ABitmap.Canvas.TextExtent(AText);\nend;\n\nfunction BitmapTextExtentStyle(ABitmap: TBitmap; AText: string; AMaxWidth: integer;\n  const AStyle: TTextStyle): TSize;\nvar bounds: TRect;\n  flags: Cardinal;\nbegin\n  bounds := Rect(0, 0, AMaxWidth, MaxInt);\n  flags := DT_CALCRECT;\n  if AStyle.SingleLine then flags := flags OR DT_SINGLELINE;\n  if AStyle.EndEllipsis then flags := flags or DT_END_ELLIPSIS;\n  if AStyle.ExpandTabs then flags := flags OR DT_EXPANDTABS;\n  if AStyle.Wordbreak then flags := flags OR DT_WORDBREAK;\n  if AStyle.RightToLeft then flags := flags or DT_RTLREADING;\n  if not AStyle.ShowPrefix then flags := flags OR DT_NOPREFIX;\n  LCLIntf.DrawText(ABitmap.Canvas.Handle, PChar(AText), Length(AText),\n    bounds, flags);\n  Result := Size(bounds.Width, bounds.Height);\nend;\n\nfunction BitmapTextExtentAngle(ABitmap: TBitmap; AText: string; AOrientation: integer): TSize;\nbegin\n  ABitmap.Canvas.Font.Orientation := AOrientation;\n  result := BitmapTextExtent(ABitmap, AText);\nend;\n\nfunction BitmapTextFitInfo(ABitmap: TBitmap; AText: string; AMaxWidth: integer): integer;\nbegin\n  {$IFDEF DARWIN}\n  AText := StringReplace(AText, ' ', UTF8_NO_BREAK_SPACE, [rfReplaceAll]);\n  {$ENDIF}\n  result := ABitmap.Canvas.TextFitInfo(AText, AMaxWidth);\nend;\n\nfunction BitmapTextFitInfoAngle(ABitmap: TBitmap; AText: string; AMaxWidth: integer; AOrientation: integer): integer;\nbegin\n  ABitmap.Canvas.Font.Orientation := AOrientation;\n  result := BitmapTextFitInfo(ABitmap, AText, AMaxWidth);\nend;\n\nprocedure BitmapFillRect(ABitmap: TBitmap; ARect: TRect; AColor: TColor);\nbegin\n  ABitmap.Canvas.Brush.Style := bsSolid;\n  ABitmap.Canvas.Brush.Color := AColor;\n  ABitmap.Canvas.Pen.Style := psClear;\n  ABitmap.Canvas.FillRect(ARect);\nend;\n{$ELSE}\nprocedure BitmapTextOut(ABitmap: TBitmap; ACoord: TPoint; AText: string);\nbegin raise exception.Create('Not implemented') end;\n\nprocedure BitmapTextOutAngle(ABitmap: TBitmap; ACoord: TPoint; AText: string; AOrientation: integer);\nbegin raise exception.Create('Not implemented') end;\n\nprocedure BitmapTextRect(ABitmap: TBitmap; ARect: TRect; ACoord: TPoint;\n  AText: string; const AStyle: TTextStyle);\nbegin raise exception.Create('Not implemented') end;\n\nfunction BitmapTextExtent(ABitmap: TBitmap; AText: string): TSize;\nbegin raise exception.Create('Not implemented') end;\n\nfunction BitmapTextExtentStyle(ABitmap: TBitmap; AText: string; AMaxWidth: integer;\n  const AStyle: TTextStyle): TSize;\nbegin raise exception.Create('Not implemented') end;\n\nfunction BitmapTextExtentAngle(ABitmap: TBitmap; AText: string; AOrientation: integer): TSize;\nbegin raise exception.Create('Not implemented') end;\n\nfunction BitmapTextFitInfo(ABitmap: TBitmap; AText: string; AMaxWidth: integer): integer;\nbegin raise exception.Create('Not implemented') end;\n\nfunction BitmapTextFitInfoAngle(ABitmap: TBitmap; AText: string; AMaxWidth: integer; AOrientation: integer): integer;\nbegin raise exception.Create('Not implemented') end;\n\nprocedure BitmapFillRect(ABitmap: TBitmap; ARect: TRect; AColor: TColor);\nbegin raise exception.Create('Not implemented') end;\n{$ENDIF}\n\nprocedure ComputeFontVerticalBounds(text: string; font: TFont; out top, bottom, totalHeight: integer);\nvar\n  xb,yb: integer;\n  pmask: PBGRAPixel;\n  nbPix: array of integer;\n  nbCur: integer;\n  mean: integer;\n  mask: TBGRACustomBitmap;\n  size: TSize;\nbegin\n  if not SystemFontAvailable then\n  begin\n    top := 0;\n    bottom := 0;\n    totalHeight := 0;\n    exit;\n  end;\n  size := BGRAOriginalTextSize(font,fqSystem,text,FontAntialiasingLevel);\n  mask := BGRABitmapFactory.Create(size.cx,size.cy,BGRABlack);\n  mask.Canvas.Font := font;\n  mask.Canvas.Font.Quality := fqAntialiased;\n  mask.Canvas.Font.Color := clWhite;\n  mask.Canvas.Font.Style := font.style * [fsBold,fsItalic];\n  BitmapTextOut(mask.Bitmap, Point(0,0), text);\n  top := -1;\n  bottom := -1;\n  totalHeight:= mask.Height;\n\n  mean := 0;\n  setlength(nbPix, mask.Height);\n  for yb := 0 to mask.Height-1 do\n  begin\n    pmask := mask.scanline[yb];\n    nbCur := 0;\n    for xb := 0 to mask.Width-1 do\n    begin\n      if (pmask^.green > 0) then inc(nbCur);\n      inc(pmask);\n    end;\n    nbPix[yb] := nbCur;\n    inc(mean,nbCur);\n  end;\n  mean := (mean+ (mask.Height div 2)) div mask.Height;\n\n  for yb := 0 to high(nbPix) do\n  begin\n    if nbPix[yb]> mean div 3 then\n    begin\n      if top = -1 then top := yb\n      else bottom := yb+1;\n    end;\n  end;\n  mask.Free;\nend;\n\nfunction ComputeFontPixelMetric(AFont: TFont): TFontPixelMetric;\nbegin\n  ComputeFontVerticalBounds('acemu',AFont,result.xLine,result.Baseline,result.Lineheight);\n  ComputeFontVerticalBounds('gDjSO',AFont,result.CapLine,result.DescentLine,result.Lineheight);\n  if result.xLine = -1 then result.xLine := result.CapLine else\n  if result.CapLine = -1 then result.CapLine := result.xLine;\n  if result.DescentLine = -1 then result.DescentLine := result.Baseline else\n  if result.Baseline = -1 then result.Baseline := result.DescentLine;\n  result.Defined := (result.xLine <> -1) and (result.CapLine <> -1) and (result.Baseline <> -1) and (result.DescentLine <> -1) and\n     (result.Lineheight <> -1);\nend;\n\nfunction ComparePixelMetric(index: integer; font: TFont): integer;\nbegin\n  if (index < 0) or (index >= FontPixelMetricCount) then\n    result := 0\n  else\n  begin\n    with FontPixelMetricArray[index] do\n      if (name = font.Name) and (height = font.Height) then\n        result := 0 else\n      if (height > font.Height) then\n        result := 1 else\n      if (height < font.Height) then\n        result := -1 else\n      if name > font.Name then\n        result := 1 else\n      if name < font.Name then\n        result := -1\n      else result := 0;\n  end;\nend;\n\nprocedure FindPixelMetricPos(AFont: TFont; out startPos,endPos: integer);\nvar middle,iStart,iEnd: integer;\nbegin\n  if FontPixelMetricCount = 0 then\n  begin\n    startPos := 0;\n    endPos := 0;\n  end;\n  iStart:= 0;\n  iEnd:= FontPixelMetricCount;\n  while iStart < iEnd do\n  begin\n    middle := (iStart+iEnd) div 2;\n    if ComparePixelMetric(middle,AFont) >= 0 then\n      iEnd := middle\n    else\n      iStart := middle+1;\n  end;\n  startPos := iStart;\n\n  iStart:= startPos;\n  iEnd:= FontPixelMetricCount;\n  while iStart < iEnd do\n  begin\n    middle := (iStart+iEnd) div 2;\n    if ComparePixelMetric(middle,AFont) <= 0 then\n      iStart := middle+1\n    else\n      iEnd := middle;\n  end;\n  endPos := iEnd;\nend;\n\nprocedure RemoveOldPixelMetric;\nvar sum,nb,i: integer;\nbegin\n  if FontPixelMetricCount = 0 then exit;\n  sum := 0;\n  for i := 0 to FontPixelMetricCount-1 do\n    inc(sum, FontPixelMetricArray[i].usage);\n  sum := sum div FontPixelMetricCount;\n  nb := 0;\n  for i := 0 to FontPixelMetricCount-1 do\n  begin\n    if FontPixelMetricArray[i].usage > sum then\n    begin\n      FontPixelMetricArray[nb] := FontPixelMetricArray[i];\n      inc(nb);\n    end;\n  end;\n  FontPixelMetricCount := nb;\nend;\n\nfunction GetLCLFontPixelMetric(AFont: TFont): TFontPixelMetric;\nvar i,startPos,endPos: integer;\n  prevHeight,fixHeight: integer;\nbegin\n  if (AFont.Height < -200) or (AFont.Height > 150) then\n  begin\n    prevHeight := AFont.Height;\n    if AFont.Height < 0 then\n      fixHeight := -200\n    else\n      fixHeight := 150;\n    AFont.Height := fixHeight;\n    result := GetLCLFontPixelMetric(AFont);\n    AFont.Height := prevHeight;\n\n    result.Baseline := round(result.Baseline/fixHeight*prevHeight);\n    result.CapLine := round(result.CapLine/fixHeight*prevHeight);\n    result.DescentLine := round(result.DescentLine/fixHeight*prevHeight);\n    result.Lineheight := round(result.Lineheight/fixHeight*prevHeight);\n    result.xLine := round(result.xLine/fixHeight*prevHeight);\n    exit;\n  end;\n\n  FindPixelMetricPos(AFont,startPos,endPos);\n  for i := startPos to endPos-1 do\n    if (FontPixelMetricArray[i].bold = AFont.bold) and\n      (FontPixelMetricArray[i].italic = AFont.Italic) then\n    begin\n      result := FontPixelMetricArray[i].metric;\n      inc(FontPixelMetricArray[i].usage);\n      exit;\n    end;\n  if FontPixelMetricCount = MaxPixelMetricCount then RemoveOldPixelMetric;\n  for i := FontPixelMetricCount downto endPos+1 do\n    FontPixelMetricArray[i] := FontPixelMetricArray[i-1];\n  inc(FontPixelMetricCount);\n  with FontPixelMetricArray[endPos]do\n  begin\n    italic := AFont.Italic;\n    bold := AFont.Bold;\n    usage := 1;\n    name := AFont.Name;\n    height:= AFont.Height;\n    metric := ComputeFontPixelMetric(AFont);\n    result := metric;\n  end;\nend;\n\nconst DefaultFontHeightSign = -1;\n\nfunction BGRATextUnderline(ATopLeft: TPointF;\n  AWidth: Single; AMetrics: TFontPixelMetric): ArrayOfTPointF;\nbegin\n  result := BGRATextUnderline(ATopLeft, AWidth, AMetrics.Baseline,AMetrics.Baseline-AMetrics.CapLine);\nend;\n\nfunction BGRATextUnderline(ATopLeft: TPointF;\n  AWidth: Single; ABaseline, AEmHeight: single): ArrayOfTPointF;\nvar height,y: single;\nbegin\n  height := AEmHeight*0.080;\n  y := ATopLeft.y+ABaseline+1.6*height;\n  result := ComputeWidePolylinePoints([PointF(ATopLeft.x,y),\n                   PointF(ATopLeft.x+AWidth,y)],height,BGRABlack,pecFlat,pjsMiter,\n                   SolidPenStyle, []);\nend;\n\nfunction BGRATextStrikeOut(ATopLeft: TPointF; AWidth: Single;\n  AMetrics: TFontPixelMetric): ArrayOfTPointF;\nbegin\n  result := BGRATextStrikeOut(ATopLeft, AWidth, AMetrics.Baseline,AMetrics.Baseline-AMetrics.CapLine,AMetrics.Baseline-AMetrics.xLine);\nend;\n\nfunction BGRATextStrikeOut(ATopLeft: TPointF; AWidth: Single; ABaseline,\n  AEmHeight, AXHeight: single): ArrayOfTPointF;\nvar height,y: single;\nbegin\n  height := AEmHeight*0.075;\n  y := ATopLeft.y+ABaseline-AXHeight*0.5;\n  result := ComputeWidePolylinePoints([PointF(ATopLeft.x,y),\n                   PointF(ATopLeft.x+AWidth,y)],height,BGRABlack,pecFlat,pjsMiter,\n                   SolidPenStyle, []);\nend;\n\nfunction GetFontHeightSign: integer;\nvar\n  HeightP1, HeightM1: integer;\n  tempBmp: TBitmap;\nbegin\n  if SystemFontDisabledValue then\n  begin\n    result := DefaultFontHeightSign;\n    exit;\n  end;\n\n  if FontHeightSignComputed then\n  begin\n    result := FontHeightSignValue;\n    exit;\n  end;\n\n  if {$IFDEF LCL}WidgetSet.LCLPlatform = lpNoGUI{$ELSE}False{$ENDIF} then\n  begin\n    SystemFontDisabledValue:= True;\n    result := -1;\n    exit;\n  end;\n\n  tempBmp := nil;\n  try\n    tempBmp := TBitmap.Create;\n    tempBmp.Width := 30;\n    tempBmp.Height := 30;\n    tempBmp.Canvas.Font.Name := 'Arial';\n    tempBmp.Canvas.Font.Style := [];\n    tempBmp.Canvas.Font.Height := 20;\n    HeightP1  := BitmapTextExtent(tempBmp, 'Hg').cy;\n    tempBmp.Canvas.Font.Height := -20;\n    HeightM1  := BitmapTextExtent(tempBmp, 'Hg').cy;\n\n    if HeightP1 > HeightM1 then\n      FontHeightSignValue := 1\n    else\n      FontHeightSignValue := -1;\n\n    FontHeightSignComputed := true;\n    result := FontHeightSignValue;\n  except\n    on ex: Exception do\n    begin\n      SystemFontDisabledValue := True;\n      result := -1;\n    end;\n  end;\n  tempBmp.Free;\nend;\n\nfunction GetFineClearTypeAuto: TBGRAFontQuality;\nvar\n  lclBmp: TBitmap;\n  bgra: TBGRACustomBitmap;\n  x,y: integer;\nbegin\n  if fqFineClearTypeComputed then\n  begin\n    result:= fqFineClearTypeValue;\n    exit;\n  end;\n  result := fqFineAntialiasing;\n  if not SystemFontDisabledValue and not ({$IFDEF LCL}WidgetSet.LCLPlatform = lpNoGUI{$ELSE}False{$ENDIF}) then\n  begin\n    lclBmp := TBitmap.Create;\n    lclBmp.Width := 1;\n    lclBmp.Height := 1;\n    lclBmp.Canvas.Font.Height := -50;\n    lclBmp.Canvas.Font.Quality := fqCleartype;\n    lclBmp.Canvas.Font.Color := clBlack;\n    with BitmapTextExtent(lclBmp, '/') do\n    begin\n      lclBmp.Width := cx;\n      lclBmp.Height := cy;\n    end;\n    BitmapFillRect(lclBmp, rect(0,0,lclBmp.Width,lclBmp.Height), clWhite);\n    BitmapTextOut(lclBmp, Point(0,0), '/');\n    bgra:= BGRABitmapFactory.Create(lclBmp);\n    x:= bgra.Width div 2;\n    for y := 0 to bgra.Height-1 do\n      with bgra.GetPixel(x,y) do\n        if (red<>blue) then\n        begin\n          if blue < red then\n            result:= fqFineClearTypeRGB\n          else\n            result:= fqFineClearTypeBGR;\n          break;\n        end else\n        if (green = 0) then break;\n\tbgra.Free;\n    lclBmp.Free;\n  end;\n  fqFineClearTypeValue := result;\n  fqFineClearTypeComputed:= true;\nend;\n\n{$IFNDEF WINDOWS}\nvar LCLFontFullHeightRatio : array of record\n                          FontName: string;\n                          Ratio: single;\n                        end;\n{$ENDIF}\n\nfunction FixSystemFontFullHeight(AFontName: string; AFontHeight: integer): integer;\n{$IFNDEF WINDOWS}\nconst TestHeight = 200;\nvar\n  i: Integer;\n  ratio : single;\n  f: TFont;\n  h: LongInt;\nbegin\n  if (AFontHeight = 0) or\n    (AFontHeight*FontEmHeightSign > 0) then\n      result := AFontHeight\n  else\n  begin\n    ratio := EmptySingle;\n    for i := 0 to high(LCLFontFullHeightRatio) do\n      if CompareText(AFontName, LCLFontFullHeightRatio[i].FontName)=0 then\n      begin\n        ratio := LCLFontFullHeightRatio[i].Ratio;\n        break;\n      end;\n    if ratio = EmptySingle then\n    begin\n      f := TFont.Create;\n      f.Quality := fqDefault;\n      f.Name := AFontName;\n      f.Height := FontFullHeightSign*TestHeight;\n      h := BGRATextSize(f, fqSystem, 'Hg', 1).cy;\n      f.Free;\n      if h = 0 then ratio := 1\n      else ratio := TestHeight/h;\n\n      setlength(LCLFontFullHeightRatio, length(LCLFontFullHeightRatio)+1);\n      LCLFontFullHeightRatio[high(LCLFontFullHeightRatio)].FontName:= AFontName;\n      LCLFontFullHeightRatio[high(LCLFontFullHeightRatio)].Ratio:= ratio;\n    end;\n    result := round(AFontHeight*ratio);\n  end;\nend;\n{$ELSE}\nbegin\n  result := AFontHeight;\nend;\n{$ENDIF}\n\n{$IFDEF LCL}\nfunction LCLFontAvailable: boolean;\nbegin\n  result := SystemFontAvailable;\nend;\n\nfunction FixLCLFontFullHeight(AFontName: string; AFontHeight: integer): integer;\nbegin\n  result := FixSystemFontFullHeight(AFontName, AFontHeight);\nend;\n{$ENDIF}\n\nfunction FontEmHeightSign: integer;\nbegin\n  result := GetFontHeightSign;\nend;\n\nfunction FontFullHeightSign: integer;\nbegin\n  result := -FontEmHeightSign;\nend;\n\nfunction SystemFontAvailable: boolean;\nbegin\n  if not FontHeightSignComputed then GetFontHeightSign;\n  result := not SystemFontDisabledValue;\nend;\n\nprocedure BGRAFillClearTypeGrayscaleMask(dest: TBGRACustomBitmap; x,\n  y: integer; xThird: integer; mask: TGrayscaleMask; color: TBGRAPixel;\n  texture: IBGRAScanner; RGBOrder: boolean);\nbegin\n  BGRAGrayscaleMask.BGRAFillClearTypeGrayscaleMask(dest,x,y,xThird,mask,color,texture,RGBOrder);\nend;\n\nprocedure BGRAFillClearTypeMask(dest: TBGRACustomBitmap; x,y: integer; xThird: integer; mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner; RGBOrder: boolean);\nbegin\n  BGRABlend.BGRAFillClearTypeMask(dest,x,y,xThird,mask,color,texture,RGBOrder);\nend;\n\nprocedure BGRAFillClearTypeRGBMask(dest: TBGRACustomBitmap; x, y: integer;\n  mask: TBGRACustomBitmap; color: TBGRAPixel; texture: IBGRAScanner;\n  KeepRGBOrder: boolean);\nbegin\n  BGRABlend.BGRAFillClearTypeRGBMask(dest,x,y,mask,color,texture,KeepRGBOrder);\nend;\n\nfunction BGRAOriginalTextSizeEx(Font: TFont; Quality: TBGRAFontQuality;\n  sUTF8: string; CustomAntialiasingLevel: Integer; \n  out actualAntialiasingLevel: integer; \n  out extraVerticalMarginDueToRotation: integer): TSize;\nbegin\n  result := BGRAOriginalTextSizeExAngle(Font, Font.Orientation, Quality, sUTF8,\n    CustomAntialiasingLevel, actualAntialiasingLevel, extraVerticalMarginDueToRotation);  \nend;                               \n\nfunction BGRAOriginalTextSizeExAngle(Font: TFont; AOrientation: integer; \n  Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer;\n  out actualAntialiasingLevel: integer; \n  out extraVerticalMarginDueToRotation: integer): TSize;\nvar\n  tempBmp: TBitmap;\nbegin\n  actualAntialiasingLevel:= CustomAntialiasingLevel;\n  extraVerticalMarginDueToRotation := 0;\n  if not SystemFontAvailable then\n    result := Size(0,0)\n  else\n  begin\n    tempBmp := nil;\n    try\n      tempBmp := TBitmap.Create;\n      {$IFDEF BGRABITMAP_USE_MSEGUI}\n      tempBmp.Width := 1;\n      tempBmp.Height := 1;\n      {$ENDIF}\n      tempBmp.Canvas.Font := Font;\n      if Quality in[fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing] then\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height*CustomAntialiasingLevel;\n      end else\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height;\n        actualAntialiasingLevel:= 1;\n      end;\n      result := BitmapTextExtentAngle(tempBmp, sUTF8, AOrientation);\n      if Font.Orientation <> 0 then\n      begin\n        tempBmp.Canvas.Font.Orientation:= 0;\n        extraVerticalMarginDueToRotation := result.cy - \n          BitmapTextExtentAngle(tempBmp, sUTF8, AOrientation).cy;\n      end;\n    except\n      on ex: exception do\n      begin\n        result := Size(0,0);\n        SystemFontDisabledValue := True;\n      end;\n    end;\n    tempBmp.Free;\n  end;\nend;\n\nfunction BGRADefaultTextOutStyle(ARightToLeft: boolean; AShowPrefix: boolean): TTextStyle;\nbegin\n  fillchar({%H-}result, sizeof(result), 0);\n  result.SingleLine := true;\n  result.Alignment := taLeftJustify;\n  result.Layout := tlTop;\n  result.RightToLeft := ARightToLeft;\n  result.ShowPrefix := AShowPrefix;\nend;\n\nfunction BGRAOriginalTextSizeStyle(Font: TFont; Quality: TBGRAFontQuality;\n  sUTF8: string; AStyle: TTextStyle; CustomAntialiasingLevel: Integer;\n  AMaxWidth: integer): TSize;\nvar\n  tempBmp: TBitmap;\nbegin\n  if not SystemFontAvailable then\n    result := Size(0,0)\n  else\n  begin\n    tempBmp := nil;\n    try\n      tempBmp := TBitmap.Create;\n      {$IFDEF BGRABITMAP_USE_MSEGUI}\n      tempBmp.Width := 1;\n      tempBmp.Height := 1;\n      {$ENDIF}\n      tempBmp.Canvas.Font := Font;\n      if Quality in[fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing] then\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height*CustomAntialiasingLevel;\n      end else\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height;\n      end;\n      result := BitmapTextExtentStyle(tempBmp, sUTF8, AMaxWidth, AStyle);\n    except\n      on ex: exception do\n      begin\n        result := Size(0,0);\n        SystemFontDisabledValue := True;\n      end;\n    end;\n    tempBmp.Free;\n  end;\nend;\n\nfunction BGRATextFitInfo(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; \n  CustomAntialiasingLevel: Integer; AMaxWidth: integer): integer;\nbegin\n  result := BGRATextFitInfoAngle(Font, Font.Orientation, Quality, sUTF8,\n    CustomAntialiasingLevel, AMaxWidth);\nend;\n\nfunction BGRATextFitInfoAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string;\n  CustomAntialiasingLevel: Integer; AMaxWidth: integer): integer;\nvar\n  actualAntialiasingLevel{$IFDEF LCL}{$IF lcl_fullversion < 1070000}, len1{$ENDIF}{$ENDIF}: Integer;\n  tempBmp: TBitmap;\nbegin\n  if (AMaxWidth = 0) or (length(sUTF8)=0) then exit(0);\n  actualAntialiasingLevel:= CustomAntialiasingLevel;\n  if not SystemFontAvailable then\n    result := 0\n  else\n  begin\n    tempBmp := nil;\n    try\n      tempBmp := TBitmap.Create;\n      tempBmp.Canvas.Font := Font;\n      if Quality in[fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing] then\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height*CustomAntialiasingLevel;\n      end else\n      begin\n        tempBmp.Canvas.Font.Height := Font.Height;\n        actualAntialiasingLevel:= 1;\n      end;\n      {$IFDEF LCL}{$IF lcl_fullversion < 1070000}\n      len1 := BitmapTextExtentAngle(tempBmp, \n                copy(sUTF8,1,UTF8CharacterLength(@sUTF8[1])),\n                AOrientation).cx;\n      if len1 > AMaxWidth*actualAntialiasingLevel then exit(0);\n      {$ENDIF}{$ENDIF}\n      result := BitmapTextFitInfoAngle(tempBmp, sUTF8, \n        AMaxWidth*actualAntialiasingLevel, AOrientation);\n    except\n      on ex: exception do\n      begin\n        result := 0;\n        SystemFontDisabledValue := True;\n      end;\n    end;\n    tempBmp.Free;\n  end;\nend;\n\nfunction BGRATextSizeStyle(Font: TFont; Quality: TBGRAFontQuality;\n  sUTF8: string; AStyle: TTextStyle;\n  CustomAntialiasingLevel: integer; AMaxWidth: integer): TSize;\nbegin\n  {$IFDEF SYSTEM_RENDERER_IS_FINE}\n  if Quality = fqFineAntialiasing then Quality:= fqSystem;\n  {$ENDIF}\n  result := BGRAOriginalTextSizeStyle(Font, Quality, sUTF8,\n    AStyle, CustomAntialiasingLevel, AMaxWidth);\n  if Quality in[fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing] then\n  begin\n    result.cx := ceil(Result.cx/CustomAntialiasingLevel);\n    result.cy := ceil(Result.cy/CustomAntialiasingLevel);\n  end;\nend;\n\nfunction BGRAOriginalTextSize(Font: TFont; Quality: TBGRAFontQuality; \n  sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nbegin\n  result := BGRAOriginalTextSizeAngle(Font, Font.Orientation, Quality, sUTF8, \n                                      CustomAntialiasingLevel);\nend;\n\nfunction BGRAOriginalTextSizeAngle(Font: TFont; AOrientation: integer;\n  Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nvar actualAntialiasingLevel, extraMargin: integer;\nbegin\n  result := BGRAOriginalTextSizeExAngle(Font, AOrientation, Quality, sUTF8, \n    CustomAntialiasingLevel, actualAntialiasingLevel, extraMargin);\n  {$IFDEF FIX_FONT_VERTICAL_OFFSET}\n  if extraMargin > 0 then dec(result.cy, extraMargin);\n  {$ENDIF}\nend;\n\nfunction BGRATextSize(Font: TFont; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nbegin\n  result := BGRATextSizeAngle(Font, Font.Orientation, Quality, sUTF8, CustomAntialiasingLevel);\nend;\n\nfunction BGRATextSizeAngle(Font: TFont; AOrientation: integer; Quality: TBGRAFontQuality; sUTF8: string; CustomAntialiasingLevel: Integer): TSize;\nbegin\n  {$IFDEF SYSTEM_RENDERER_IS_FINE}\n  if Quality = fqFineAntialiasing then Quality:= fqSystem;\n  {$ENDIF}\n  result := BGRAOriginalTextSizeAngle(Font, AOrientation, Quality, sUTF8, CustomAntialiasingLevel);\n  if Quality in[fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing] then\n  begin\n    result.cx := ceil(Result.cx/CustomAntialiasingLevel);\n    result.cy := ceil(Result.cy/CustomAntialiasingLevel);\n  end;\nend;\n\nprocedure FilterOriginalText(Quality: TBGRAFontQuality; CustomAntialiasingLevel: Integer; var temp: TBGRACustomBitmap;\n  out grayscaleMask: TGrayscaleMask);\nvar\n  n: integer;\n  maxAlpha: UInt32or64;\n  pb: PByte;\n  multiplyX: integer;\n  resampled: TBGRACustomBitmap;\nbegin\n  grayscaleMask := nil;\n  case Quality of\n  fqFineClearTypeBGR,fqFineClearTypeRGB,fqFineAntialiasing:\n    begin\n      if Quality in [fqFineClearTypeBGR,fqFineClearTypeRGB] then multiplyX:= 3 else multiplyX:= 1;\n      if (temp.Height < CustomAntialiasingLevel*8) and (temp.Height >= CustomAntialiasingLevel*3) then\n      begin\n        temp.ResampleFilter := rfSpline;\n        resampled := temp.Resample(round(temp.width/CustomAntialiasingLevel*multiplyX),round(temp.Height/CustomAntialiasingLevel),rmFineResample);\n        grayscaleMask := TGrayscaleMask.Create(resampled,cGreen);\n        FreeAndNil(resampled);\n      end else\n        grayscaleMask := TGrayscaleMask.CreateDownSample(temp, round(temp.width/CustomAntialiasingLevel*multiplyX),round(temp.Height/CustomAntialiasingLevel));\n      FreeAndNil(temp);\n\n      maxAlpha := 0;\n      pb := grayscaleMask.Data;\n      for n := grayscaleMask.NbPixels - 1 downto 0 do\n      begin\n        if Pb^ > maxAlpha then maxAlpha := Pb^;\n        Inc(pb);\n      end;\n      if (maxAlpha <> 0) and (maxAlpha <> 255) then\n      begin\n        pb := grayscaleMask.Data;\n        for n := grayscaleMask.NbPixels - 1 downto 0 do\n        begin\n          pb^:= pb^ * 255 div maxAlpha;\n          Inc(pb);\n        end;\n      end;\n    end;\n  fqSystem:\n    begin\n      grayscaleMask := TGrayscaleMask.Create(temp, cGreen);\n      FreeAndNil(temp);\n      {$IFNDEF LINUX}\n      pb := grayscaleMask.Data;\n      for n := grayscaleMask.NbPixels - 1 downto 0 do\n      begin\n        pb^:= GammaExpansionTab[pb^] shr 8;\n        Inc(pb);\n      end;\n      {$ENDIF}\n    end;\n  end;\nend;\n\nfunction CleanTextOutString(s: string): string;\nbegin\n  result := BGRABitmapTypes.CleanTextOutString(s);\nend;\n\nfunction RemoveLineEnding(var s: string; indexByte: integer): boolean;\nbegin\n  result := BGRABitmapTypes.RemoveLineEnding(s, indexByte);\nend;\n\nfunction RemoveLineEndingUTF8(var sUTF8: string; indexUTF8: integer): boolean;\nbegin\n  result := BGRABitmapTypes.RemoveLineEndingUTF8(sUTF8,indexUTF8);\nend;\n\nprocedure BGRAInternalRenderText(dest: TBGRACustomBitmap; Quality: TBGRAFontQuality; grayscale: TGrayscaleMask; temp: TBGRACustomBitmap;\n  x,y,xThird: integer; c: TBGRAPixel; tex: IBGRAScanner);\nbegin\n  if Quality in [fqFineClearTypeBGR,fqFineClearTypeRGB,fqSystemClearType] then\n  begin\n    if grayscale <> nil then\n      BGRAFillClearTypeGrayscaleMask(dest,x,y,xThird, grayscale,c,tex,Quality=fqFineClearTypeRGB)\n    else if temp <> nil then\n      BGRAFillClearTypeRGBMask(dest,x,y, temp,c,tex);\n  end\n  else\n  begin\n    if grayscale <> nil then\n    begin\n      if tex <> nil then\n        grayscale.DrawAsAlpha(dest, x, y, tex) else\n        grayscale.DrawAsAlpha(dest, x, y, c);\n    end\n    else if temp <> nil then\n      dest.PutImage(x, y, temp, dmDrawWithTransparency);\n  end;\nend;\n\nprocedure BGRATextOut(bmp: TBGRACustomBitmap; Font: TFont;\n  Quality: TBGRAFontQuality; xf, yf: single; sUTF8: string;\n  c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment;\n  CustomAntialiasingLevel: Integer = 0);\nvar\n  textSize, iMargin, sizeWithMargin: TSize;\n  sizeFactor, extraVerticalMargin, iLeft, iTop: integer;\n  xMarginF: single;\n  temp: TBGRACustomBitmap;\n  grayscale: TGrayscaleMask;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL: TBitmap;\n  {$ENDIF}\nbegin\n  if not SystemFontAvailable then exit;\n\n  if CustomAntialiasingLevel = 0 then\n    CustomAntialiasingLevel:= FontAntialiasingLevel;\n\n  if Font.Orientation mod 3600 <> 0 then\n  begin\n    BGRATextOutAngle(bmp,Font,Quality,xf,yf,Font.Orientation,sUTF8,c,tex,align);\n    exit;\n  end;\n\n  {$IFDEF SYSTEM_RENDERER_IS_FINE}\n  if (Quality in [fqFineAntialiasing, fqFineClearTypeRGB, fqFineClearTypeBGR]) and\n     (BGRATextSize(Font, fqSystem, 'Hg', 1).cy >= 13) then\n  begin\n    if Quality = fqFineAntialiasing then Quality := fqSystem;\n    {$IFDEF SYSTEM_CLEARTYPE_RENDERER_IS_FINE}\n    if Quality = GetFineClearTypeAuto then Quality := fqSystemClearType;\n    {$ENDIF}\n  end;\n  {$ENDIF}\n\n  textSize := BGRAOriginalTextSizeEx(Font,Quality,sUTF8,CustomAntialiasingLevel,\n            sizeFactor, extraVerticalMargin);\n  if (textSize.cx = 0) or (textSize.cy = 0) then\n    exit;\n\n  if (textSize.cy >= 144) and (Quality in[fqFineAntialiasing,fqFineClearTypeBGR,fqFineClearTypeRGB]) and (CustomAntialiasingLevel > 4) then\n  begin\n    CustomAntialiasingLevel:= 4;\n    textSize := BGRAOriginalTextSizeEx(Font,Quality,sUTF8,CustomAntialiasingLevel,\n              sizeFactor, extraVerticalMargin);\n  end;\n\n  case align of\n    taLeftJustify: ;\n    taCenter: DecF(xf, textSize.cx/2/sizeFactor);\n    taRightJustify: DecF(xf, textSize.cx/sizeFactor);\n  end;\n\n  xMarginF := textSize.cy/sizeFactor;\n  iMargin := size(ceil(xMarginF) * sizeFactor, sizeFactor);\n  sizeWithMargin := size(textSize.cx + iMargin.cx, textSize.cy + iMargin.cy);\n  if frac(xMarginF) > 0 then inc(sizeWithMargin.cx);\n  iLeft := floor(xF) - (iMargin.cx div sizeFactor);\n  iTop := floor(yF) - (iMargin.cy div sizeFactor);\n\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL := TBitmap.Create;\n  tempLCL.Width := sizeWithMargin.cx;\n  tempLCL.Height := sizeWithMargin.cy;\n  BitmapFillRect(tempLCL, Rect(0,0,tempLCL.Width,tempLCL.Height), clBlack);\n  with tempLCL do begin\n  {$ELSE}\n  temp := BGRABitmapFactory.Create(sizeWithMargin.cx, sizeWithMargin.cy, BGRABlack);\n  with temp do begin\n  {$ENDIF}\n    Canvas.Font := Font;\n    Canvas.Font.Orientation := 0;\n    Canvas.Font.Height := Font.Height * sizeFactor;\n    Canvas.Font.Color := clWhite;\n    BitmapTextOut({$IFDEF RENDER_TEXT_ON_TBITMAP}tempLCL{$ELSE}temp.Bitmap{$ENDIF},\n         Point(HalfUp((xf - floor(xf)) * sizeFactor) + iMargin.cx,\n           HalfUp((yf - floor(yf)) * sizeFactor) + iMargin.cy),\n         sUTF8);\n  end;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  temp := BGRABitmapFactory.create(tempLCL,False);\n  tempLCL.Free;\n  {$ENDIF}\n\n  FilterOriginalText(Quality, CustomAntialiasingLevel, temp, grayscale);\n  BGRAInternalRenderText(bmp, Quality, grayscale,temp, iLeft, iTop, 0, c,tex);\n  temp.Free;\n  grayscale.Free;\nend;\n\nprocedure BGRATextOutAngle(bmp: TBGRACustomBitmap; Font: TFont;\n  Quality: TBGRAFontQuality; xf, yf: single; orientationTenthDegCCW: integer;\n  sUTF8: string; c: TBGRAPixel; tex: IBGRAScanner; align: TAlignment;\n  CustomAntialiasingLevel: Integer = 0);\nvar\n  posF: TPointF;\n  x,y: integer;\n  deltaX,deltaY: integer;\n  size: TSize;\n  temp: TBGRACustomBitmap;\n  TopLeft,TopRight,BottomRight,BottomLeft: TPointF;\n  Top,dy: Single;\n  Left: Single;\n  cosA,sinA: single;\n  rotBounds: TRect;\n  sizeFactor, extraVerticalMargin: integer;\n  TempFont: TFont;\n  oldOrientation: integer;\n  grayscale:TGrayscaleMask;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL: TBitmap;\n  {$ENDIF}\n\n  procedure rotBoundsAdd(pt: TPointF);\n  begin\n    if pt.x < Left then Left := pt.x;\n    if pt.y < Top then Top := pt.y;\n    if floor(pt.X) < rotBounds.Left then rotBounds.Left := floor(pt.X/sizeFactor)*sizeFactor;\n    if floor(pt.Y) < rotBounds.Top then rotBounds.Top := floor(pt.Y/sizeFactor)*sizeFactor;\n    if ceil(pt.X) > rotBounds.Right then rotBounds.Right := ceil(pt.X/sizeFactor)*sizeFactor;\n    if ceil(pt.Y) > rotBounds.Bottom then rotBounds.Bottom := ceil(pt.Y/sizeFactor)*sizeFactor;\n  end;\n\nbegin\n  if not SystemFontAvailable or ((c.alpha = 0) and (tex = nil)) then exit;\n\n  if CustomAntialiasingLevel = 0 then\n    CustomAntialiasingLevel:= FontAntialiasingLevel;\n\n  if orientationTenthDegCCW mod 3600 = 0 then\n  begin\n    oldOrientation := Font.Orientation;\n    Font.Orientation := 0;\n    BGRATextOut(bmp,Font,Quality,xf,yf,sUTF8,c,tex,align);\n    Font.Orientation := oldOrientation;\n    exit;\n  end;\n  TempFont := TFont.Create;\n  TempFont.Assign(Font);\n  TempFont.Height := Font.Height;\n  size := BGRAOriginalTextSizeExAngle(TempFont,orientationTenthDegCCW,Quality,sUTF8,CustomAntialiasingLevel,sizeFactor, extraVerticalMargin);\n  if (size.cx = 0) or (size.cy = 0) then\n  begin\n    tempFont.Free;\n    exit;\n  end;\n  {$IFDEF FIX_FONT_VERTICAL_OFFSET}\n  if extraVerticalMargin > 0 then\n    dy := -extraVerticalMargin*0.5 -1\n  else\n    dy := 0;\n  {$ELSE}\n  dy := 0;\n  {$ENDIF}\n  tempFont.Free;\n\n  cosA := cos(orientationTenthDegCCW*Pi/1800);\n  sinA := sin(orientationTenthDegCCW*Pi/1800);\n  TopLeft := PointF(sinA*dy,cosA*dy);\n  posF := PointF(xf,yf);\n  posF.Offset( TopLeft * (1/sizeFactor) );\n  TopRight := TopLeft + PointF(cosA*size.cx,-sinA*size.cx);\n  BottomRight := TopRight + PointF(sinA*size.cy,cosA*size.cy);\n  BottomLeft := TopLeft + PointF(sinA*size.cy,cosA*size.cy);\n  rotBounds := rect(0,0,0,0);\n  Top := 0;\n  Left := 0;\n  rotBoundsAdd(TopRight);\n  rotBoundsAdd(BottomRight);\n  rotBoundsAdd(BottomLeft);\n  inc(rotBounds.Right);\n  inc(rotBounds.Bottom);\n\n  posF.Offset( Left/sizeFactor, Top/sizeFactor );\n  case align of\n    taLeftJustify: ;\n    taCenter:\n      posF.Offset( -TopRight*(1/(2*sizeFactor)) );\n    taRightJustify:\n      posF.Offset( -TopRight*(1/sizeFactor) );\n  end;\n  x := floor(posF.x);\n  deltaX := HalfUp((posF.x - x)*sizeFactor);\n  y := floor(posF.y);\n  deltaY := HalfUp((posF.y - y)*sizeFactor);\n  if deltaX <> 0 then inc(rotBounds.Right, sizeFactor);\n  if deltaY <> 0 then inc(rotBounds.Bottom, sizeFactor);\n\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL := TBitmap.Create;\n  tempLCL.Width := rotBounds.Right-rotBounds.Left;\n  tempLCL.Height := rotBounds.Bottom-rotBounds.Top;\n  BitmapFillRect(tempLCL, Rect(0,0,tempLCL.Width,tempLCL.Height), clBlack);\n  with tempLCL do begin\n  {$ELSE}\n  temp := BGRABitmapFactory.Create(rotBounds.Right-rotBounds.Left,rotBounds.Bottom-rotBounds.Top, BGRABlack);\n  with temp do begin\n  {$ENDIF}\n    Canvas.Font := Font;\n    Canvas.Font.Color := clWhite;\n    Canvas.Font.Height := Font.Height*sizeFactor;\n    BitmapTextOutAngle({$IFDEF RENDER_TEXT_ON_TBITMAP}tempLCL{$ELSE}temp.Bitmap{$ENDIF},\n      Point(-rotBounds.Left+deltaX, -rotBounds.Top+deltaY), sUTF8,\n      orientationTenthDegCCW);\n  end;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  temp := BGRABitmapFactory.create(tempLCL,False);\n  tempLCL.Free;\n  {$ENDIF}\n\n  FilterOriginalText(Quality,CustomAntialiasingLevel,temp,grayscale);\n  BGRAInternalRenderText(bmp, Quality, grayscale,temp, x,y,0, c,tex);\n  temp.Free;\n  grayscale.Free;\nend;\n\nprocedure BGRATextRect(bmp: TBGRACustomBitmap; Font: TFont; Quality: TBGRAFontQuality; ARect: TRect; xf, yf: single;\n  sUTF8: string; style: TTextStyle; c: TBGRAPixel; tex: IBGRAScanner; CustomAntialiasingLevel: Integer = 0);\nvar\n  lim: TRect;\n  tx, ty: integer;\n  temp:   TBGRACustomBitmap;\n  sizeFactor: integer;\n  cr: TRect;\n  grayscale:TGrayscaleMask;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL: TBitmap;\n  {$ENDIF}\nbegin\n  if not SystemFontAvailable or ((c.alpha = 0) and (tex = nil)) then exit;\n\n  if CustomAntialiasingLevel = 0 then\n    CustomAntialiasingLevel:= FontAntialiasingLevel;\n\n  cr := bmp.ClipRect;\n  if ARect.Left < cr.Left then\n    lim.Left := cr.Left else lim.Left := ARect.Left;\n  if ARect.Top < cr.Top then\n    lim.Top := cr.Top else lim.Top := ARect.Top;\n  if ARect.Right > cr.Right then\n    lim.Right := cr.Right else lim.Right := ARect.Right;\n  if ARect.Bottom > cr.Bottom then\n    lim.Bottom := cr.Bottom else lim.Bottom := ARect.Bottom;\n\n  tx := lim.Right - lim.Left;\n  ty := lim.Bottom - lim.Top;\n  if (tx <= 0) or (ty <= 0) then\n    exit;\n\n  {$IFDEF SYSTEM_RENDERER_IS_FINE}\n  if (Quality in [fqFineAntialiasing, fqFineClearTypeRGB, fqFineClearTypeBGR]) and\n     (BGRATextSize(Font, fqSystem, 'Hg', 1).cy >= 13) then\n  begin\n    if Quality = fqFineAntialiasing then Quality := fqSystem;\n    {$IFDEF SYSTEM_CLEARTYPE_RENDERER_IS_FINE}\n    if Quality = GetFineClearTypeAuto then Quality := fqSystemClearType;\n    {$ENDIF}\n  end;\n  {$ENDIF}\n\n  if Quality in[fqFineAntialiasing,fqFineClearTypeBGR,fqFineClearTypeRGB] then\n    sizeFactor := CustomAntialiasingLevel\n  else\n    sizeFactor := 1;\n\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  tempLCL := TBitmap.Create;\n  tempLCL.Width := tx*sizeFactor;\n  tempLCL.Height := ty*sizeFactor;\n  BitmapFillRect(tempLCL, Rect(0,0,tempLCL.Width,tempLCL.Height), clBlack);\n  with tempLCL do begin\n  {$ELSE}\n  temp := BGRABitmapFactory.Create(tx*sizeFactor, ty*sizeFactor, BGRABlack);\n  with temp do begin\n  {$ENDIF}\n    Canvas.Font := Font;\n    Canvas.Font.Orientation := 0;\n    Canvas.Font.Height := Font.Height * sizeFactor;\n    Canvas.Font.Color := clWhite;\n    BitmapTextRect({$IFDEF RENDER_TEXT_ON_TBITMAP}tempLCL{$ELSE}temp.Bitmap{$ENDIF}, rect(lim.Left-ARect.Left, lim.Top-ARect.Top,\n         (ARect.Right-ARect.Left)*sizeFactor, (ARect.Bottom-ARect.Top)*sizeFactor),\n         Point(HalfUp((xf - lim.Left)*sizeFactor), HalfUp((yf - lim.Top)*sizeFactor)),\n         sUTF8, style);\n  end;\n  {$IFDEF RENDER_TEXT_ON_TBITMAP}\n  temp := BGRABitmapFactory.create(tempLCL,False);\n  tempLCL.Free;\n  {$ENDIF}\n\n  FilterOriginalText(Quality,CustomAntialiasingLevel,temp,grayscale);\n  BGRAInternalRenderText(bmp, Quality, grayscale,temp, lim.left,lim.top,0, c,tex);\n  temp.Free;\n  grayscale.Free;\nend;\n\n{ TBGRASystemFontRenderer }\n\n{ Update font properties to internal TFont object }\nprocedure TBGRASystemFontRenderer.UpdateFont;\nvar fixedHeight: integer;\n  fs: TFontStyles;\n  patchedName: String;\nbegin\n  patchedName := PatchSystemFontName(FontName);\n  if FFont.Name <> patchedName then\n    FFont.Name := patchedName;\n  fs := FontStyle;\n  if (OverrideUnderlineDecoration or (CompareText(Trim(patchedName),'FreeSans')=0) or\n     (CompareText(Trim(patchedName),'FreeMono')=0) or (CompareText(Trim(patchedName),'FreeSerif')=0))\n     and (fsUnderline in fs) then\n  begin\n    Exclude(fs, fsUnderline);\n    FOwnUnderline := true;\n  end else\n    FOwnUnderline := false;\n  if FFont.Style <> fs then\n    FFont.Style := fs;\n  if FontEmHeight < 0 then\n    fixedHeight := FixSystemFontFullHeight(patchedName, FontEmHeight * FontEmHeightSign)\n  else\n    fixedHeight := FontEmHeight * FontEmHeightSign;\n  if FFont.Height <> fixedHeight then\n    FFont.Height := fixedHeight;\n  if FontQuality = fqSystemClearType then\n    FFont.Quality := fqCleartype\n  else\n    FFont.Quality := FontDefaultQuality;\nend;\n\nfunction TBGRASystemFontRenderer.InternalTextSize(sUTF8: string; \n  AShowPrefix: boolean): TSize;\nbegin\n  result := InternalTextSizeAngle(sUTF8, AShowPrefix, FontOrientation);\nend;\n\nfunction TBGRASystemFontRenderer.InternalTextSizeAngle(sUTF8: string; \n  AShowPrefix: boolean; AOrientation: integer): TSize;\nbegin\n  {$IFDEF TEXTOUT_KERNING_PATCH}\n  if AOrientation mod 3600 = 0 then\n    exit(InternalTextSizeStyle(sUTF8,\n           BGRADefaultTextOutStyle(False, AShowPrefix), MaxLongint));\n  {$ENDIF}\n  if AShowPrefix then sUTF8 := RemovePrefix(sUTF8);\n  result := BGRAText.BGRATextSizeAngle(FFont, AOrientation, FontQuality,\n                                       sUTF8, FontAntialiasingLevel);\n  if (result.cy >= 24) \n   and (FontQuality in[fqFineAntialiasing,fqFineClearTypeBGR,fqFineClearTypeRGB]) \n   and (FontAntialiasingLevel > 4) then\n    result := BGRAText.BGRATextSizeAngle(FFont, AOrientation, FontQuality,\n                                         sUTF8, 4);\nend;\n\nfunction TBGRASystemFontRenderer.InternalTextSizeStyle(sUTF8: string;\n  AStyle: TTextStyle; AMaxWidth: integer): TSize;\nbegin\n  result := BGRAText.BGRATextSizeStyle(FFont, FontQuality, sUTF8,\n    AStyle, FontAntialiasingLevel, AMaxWidth);\nend;\n\nprocedure TBGRASystemFontRenderer.SplitText(var ATextUTF8: string;\n  AMaxWidth: integer; out ARemainsUTF8: string);\nvar WordBreakHandler: TWordBreakHandler;\nbegin\n  UpdateFont;\n  if Assigned(FWordBreakHandler) then\n    WordBreakHandler := FWordBreakHandler\n  else\n    WordBreakHandler := @DefaultWorkBreakHandler;\n\n  InternalSplitText(ATextUTF8, AMaxWidth, ARemainsUTF8, WordBreakHandler);\nend;\n\nfunction TBGRASystemFontRenderer.GetFontPixelMetric: TFontPixelMetric;\nbegin\n  UpdateFont;\n  result := InternalGetFontPixelMetric;\nend;\n\nfunction TBGRASystemFontRenderer.FontExists(AName: string): boolean;\n{$IFDEF LCL}\nvar\n  i: Integer;\n{$ENDIF}\nbegin\n  {$IFDEF LCL}\n  for i := 0 to Screen.Fonts.Count-1 do\n    if CompareText(Screen.Fonts[i], AName) = 0 then exit(true);\n  result := false;\n  {$ELSE}\n  result := true;\n  {$ENDIF}\nend;\n\nclass function TBGRASystemFontRenderer.PatchSystemFontName(AName: string): string;\nbegin\n  if AName = 'serif' then\n    result := {$IFDEF DARWIN}'Times'{$ELSE}'serif'{$ENDIF}\n  else if AName = 'monospace' then\n    result := {$IFDEF DARWIN}'Courier'{$ELSE}{$IFDEF LINUX}'DejaVu Sans Mono'{$ELSE}'monospace'{$ENDIF}{$ENDIF}\n  else result := AName;\nend;\n\nprocedure TBGRASystemFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer;\n  sUTF8: string; c: TBGRAPixel; align: TAlignment);\nbegin\n  UpdateFont;\n  InternalTextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,c,nil,align,false,false);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientationTenthDegCCW: integer; sUTF8: string; c: TBGRAPixel;\n  align: TAlignment; ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,c,nil,align,false,ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientationTenthDegCCW: integer;\n  sUTF8: string; texture: IBGRAScanner; align: TAlignment);\nbegin\n  UpdateFont;\n  InternalTextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,BGRAPixelTransparent,texture,align,false,false);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientationTenthDegCCW: integer; sUTF8: string;\n  texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextOutAngle(ADest,x,y,orientationTenthDegCCW,sUTF8,BGRAPixelTransparent,texture,align,false,ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string;\n  texture: IBGRAScanner; align: TAlignment);\nbegin\n  UpdateFont;\n  InternalTextOut(ADest, x,y, sUTF8, BGRAPixelTransparent,texture, align);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOut(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; c: TBGRAPixel;\n  align: TAlignment);\nbegin\n  UpdateFont;\n  InternalTextOut(ADest, x,y, sUTF8, c,nil, align);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; sUTF8: string; texture: IBGRAScanner; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextOut(ADest, x,y, sUTF8, BGRAPixelTransparent,texture, align,\n                False, ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; sUTF8: string; c: TBGRAPixel; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextOut(ADest, x,y, sUTF8, c,nil, align, false, ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string;\n  style: TTextStyle; c: TBGRAPixel);\nbegin\n  UpdateFont;\n  InternalTextRect(ADest,ARect,x,y,sUTF8,style,c,nil);\nend;\n\nprocedure TBGRASystemFontRenderer.TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string;\n  style: TTextStyle; texture: IBGRAScanner);\nbegin\n  UpdateFont;\n  InternalTextRect(ADest,ARect,x,y,sUTF8,style,BGRAPixelTransparent,texture);\nend;\n\nprocedure TBGRASystemFontRenderer.TextWordBreak(ADest: TBGRACustomBitmap;\n  AText: string; x, y, AMaxWidth: integer; AColor: TBGRAPixel;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextWordBreak(ADest,AText,x,y,AMaxWidth,AColor,nil,AHorizAlign,AVertAlign,ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.TextWordBreak(ADest: TBGRACustomBitmap;\n  AText: string; x, y, AMaxWidth: integer; ATexture: IBGRAScanner;\n  AHorizAlign: TAlignment; AVertAlign: TTextLayout; ARightToLeft: boolean);\nbegin\n  UpdateFont;\n  InternalTextWordBreak(ADest,AText,x,y,AMaxWidth,BGRAPixelTransparent,ATexture,AHorizAlign,AVertAlign,ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.InternalTextWordBreak(\n  ADest: TBGRACustomBitmap; ATextUTF8: string; x, y, AMaxWidth: integer;\n  AColor: TBGRAPixel; ATexture: IBGRAScanner; AHorizAlign: TAlignment;\n  AVertAlign: TTextLayout; ARightToLeft: boolean);\nvar remains, part, curText,nextText: string;\n  stepX,stepY: integer;\n  lines: TStringList;\n  i: integer;\n  lineShift: single;\n  WordBreakHandler: TWordBreakHandler;\n  lineEndingBreak: boolean;\n  bidiLayout: TBidiTextLayout;\n  bidiAlign: TBidiTextAlignment;\nbegin\n  if (ATextUTF8 = '') or (AMaxWidth <= 0) then exit;\n\n  if Assigned(FWordBreakHandler) then\n    WordBreakHandler := FWordBreakHandler\n  else\n    WordBreakHandler := @DefaultWorkBreakHandler;\n\n  if ContainsBidiIsolateOrFormattingUTF8(ATextUTF8) or\n    (pos(UTF8_LINE_SEPARATOR, ATextUTF8) <> 0) then\n  begin\n    bidiLayout := TBidiTextLayout.Create(self, ATextUTF8, ARightToLeft);\n    bidiLayout.WordBreakHandler:= WordBreakHandler;\n    bidiLayout.AvailableWidth := AMaxWidth;\n    case AHorizAlign of\n      taLeftJustify: bidiAlign:= btaLeftJustify;\n      taRightJustify: begin\n        bidiAlign:= btaRightJustify;\n        dec(x, AMaxWidth);\n      end\n      else\n      begin\n        bidiAlign:= btaCenter;\n        dec(x, AMaxWidth div 2);\n      end;\n    end;\n    for i := 0 to bidiLayout.ParagraphCount-1 do\n      bidiLayout.ParagraphAlignment[i] := bidiAlign;\n    case AVertAlign of\n      tlBottom: bidiLayout.TopLeft := PointF(x, y - bidiLayout.TotalTextHeight);\n      tlCenter: bidiLayout.TopLeft := PointF(x, y - bidiLayout.TotalTextHeight/2);\n    end;\n    if ATexture <> nil then bidiLayout.DrawText(ADest, ATexture)\n    else bidiLayout.DrawText(ADest, AColor);\n    bidiLayout.Free;\n    exit;\n  end;\n\n  stepX := 0;\n  stepY := TextSize('Hg').cy;\n\n  lines := TStringList.Create;\n  curText := ATextUTF8;\n  repeat\n    InternalSplitText(curText, AMaxWidth, remains, lineEndingBreak, WordBreakHandler);\n    part := curText;\n    if not lineEndingBreak then\n      // append following direction to part\n      case GetFirstStrongBidiClassUTF8(remains) of\n        ubcLeftToRight: if ARightToLeft then AppendStr(part, UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_MARK));\n        ubcRightToLeft,ubcArabicLetter: if not ARightToLeft then AppendStr(part, UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_MARK));\n      end;\n    lines.Add(part);\n    // prefix next part with previous direction\n    nextText := remains;\n    if not lineEndingBreak then\n      case GetLastStrongBidiClassUTF8(curText) of\n        ubcLeftToRight: if ARightToLeft then nextText := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_MARK) + nextText;\n        ubcRightToLeft,ubcArabicLetter: if not ARightToLeft then nextText := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_MARK) + nextText;\n      end;\n    curText := nextText;\n  until remains = '';\n  if AVertAlign = tlCenter then lineShift := lines.Count/2\n  else if AVertAlign = tlBottom then lineShift := lines.Count\n  else lineShift := 0;\n\n  dec(X, HalfUp(stepX*lineShift));\n  dec(Y, HalfUp(stepY*lineShift));\n  for i := 0 to lines.Count-1 do\n  begin\n    InternalTextOut(ADest,x,y,lines[i],AColor,ATexture,AHorizAlign,false,ARightToLeft);\n    inc(X, stepX);\n    inc(Y, stepY);\n  end;\n  lines.Free;\nend;\n\nprocedure TBGRASystemFontRenderer.InternalTextRect(ADest: TBGRACustomBitmap;\n  ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; c: TBGRAPixel;\n  ATexture: IBGRAScanner);\nvar\n  oldOrientation: integer;\n  previousClip, intersected: TRect;\n  lines: TStringList;\n  iStart,i,h: integer;\n  availableWidth: integer;\nbegin\n  if sUTF8='' then exit;\n  previousClip := ADest.ClipRect;\n  if style.Clipping then\n  begin\n    intersected := TRect.Intersect(previousClip, ARect);\n    if intersected.IsEmpty then exit;\n    ADest.ClipRect := intersected;\n  end;\n  if style.SystemFont then FFont.Name := 'default';\n\n  if not (style.Alignment in[taCenter,taRightJustify]) then ARect.Left := x;\n  if not (style.Layout in[tlCenter,tlBottom]) then ARect.top := y;\n  if (ARect.Right <= ARect.Left) and style.Clipping then\n  begin\n    ADest.ClipRect := previousClip;\n    exit;\n  end;\n  if style.Layout = tlCenter then Y := (ARect.Top+ARect.Bottom) div 2 else\n  if style.Layout = tlBottom then Y := ARect.Bottom else\n    Y := ARect.Top;\n  if style.Alignment = taCenter then X := (ARect.Left+ARect.Right) div 2 else\n  if style.Alignment = taRightJustify then X := ARect.Right else\n    X := ARect.Left;\n  oldOrientation := FontOrientation;\n  FontOrientation := 0;\n  if style.Wordbreak then\n  begin\n    if style.ShowPrefix then sUTF8 := RemovePrefix(sUTF8); //prefix not handled\n    InternalTextWordBreak(ADest,sUTF8,X,Y,ARect.Right-ARect.Left,c,ATexture,\n        style.Alignment,style.Layout,style.RightToLeft);\n  end\n  else\n  begin\n    lines := nil;\n    iStart := 1;\n\n    if not style.SingleLine then\n    begin\n      i := iStart;\n      while i <= length(sUTF8) do\n      begin\n        if sUTF8[i] in[#13,#10] then\n        begin\n          if not assigned(lines) then lines := TStringList.Create;\n          lines.add(copy(sUTF8,iStart,i-iStart));\n          if (sUTF8[i]=#13) and (i < length(sUTF8)) and (sUTF8[i+1]=#10) then inc(i);\n          iStart := i+1\n        end;\n        inc(i);\n      end;\n    end;\n\n    if style.Alignment = taLeftJustify then\n      availableWidth := ARect.Right-X\n    else\n      availableWidth := ARect.Right-ARect.Left;\n    if availableWidth < 0 then availableWidth:= 0;\n\n    if lines = nil then //only one line\n    begin\n      if style.Layout = tlCenter then dec(Y, InternalTextSize(sUTF8,style.ShowPrefix).cy div 2);\n      if style.Layout = tlBottom then dec(Y, InternalTextSize(sUTF8,style.ShowPrefix).cy);\n      if style.EndEllipsis then\n        InternalTextOutEllipse(ADest,X,Y,availableWidth,sUTF8,c,ATexture,style.Alignment,\n                        style.ShowPrefix,style.RightToLeft)\n      else\n        InternalTextOut(ADest,X,Y,sUTF8,c,ATexture,style.Alignment,\n                        style.ShowPrefix,style.RightToLeft);\n    end else\n    begin    //multiple lines\n      lines.add(copy(sUTF8, iStart, length(sUTF8)-iStart+1));\n      h := InternalTextSize('Hg',False).cy;\n      if style.Layout = tlCenter then dec(Y, h*lines.Count div 2);\n      if style.Layout = tlBottom then dec(Y, h*lines.Count);\n      for i := 0 to lines.Count-1 do\n      begin\n        if style.EndEllipsis then\n          InternalTextOutEllipse(ADest,X,Y,availableWidth,lines[i],c,ATexture,style.Alignment,\n                          style.ShowPrefix,style.RightToLeft)\n        else\n          InternalTextOut(ADest,X,Y,lines[i],c,ATexture,style.Alignment,\n                          style.ShowPrefix,style.RightToLeft);\n        inc(Y,h);\n      end;\n      lines.Free;\n    end;\n\n  end;\n\n  FontOrientation := oldOrientation;\n  if style.Clipping then\n    ADest.ClipRect := previousClip;\nend;\n\nprocedure TBGRASystemFontRenderer.InternalTextOut(ADest: TBGRACustomBitmap; x,\n  y: single; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n  align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false);\nbegin\n  InternalTextOutAngle(ADest, x,y, FontOrientation, sUTF8, c, texture,\n    align, ASHowPrefix, ARightToLeft);\nend;\n\n{$IFDEF TEXT_ANGLE_PATCH}procedure TBGRASystemFontRenderer.InternalTextOutAnglePatch(ADest: TBGRACustomBitmap;\n  x, y: single; orientation: integer; s: string; c: TBGRAPixel;\n  tex: IBGRAScanner; align: TAlignment; AShowPrefix: boolean; ARightToLeft: boolean);\nconst orientationToDeg = -0.1;\nvar\n  temp: TBGRACustomBitmap;\n  coord: TPointF;\n  angleDeg: single;\n  OldOrientation: integer;\n  filter: TResampleFilter;\nbegin\n  OldOrientation := FontOrientation;\n  FontOrientation:= 0;\n  UpdateFont;\n\n  temp := BGRABitmapFactory.Create;\n  with InternalTextSize(s, AShowPrefix) do\n    temp.SetSize(cx, cy);\n  temp.FillTransparent;\n  InternalTextOut(temp, 0, 0, s, c, tex, taLeftJustify, AShowPrefix, ARightToLeft);\n\n  orientation:= orientation mod 3600;\n  if orientation < 0 then inc(orientation, 3600);\n\n  angleDeg := orientation * orientationToDeg;\n  coord := PointF(x,y);\n  case align of\n  taRightJustify: coord.Offset( AffineMatrixRotationDeg(angleDeg)*PointF(-temp.Width,0) );\n  taCenter: coord.Offset( AffineMatrixRotationDeg(angleDeg)*PointF(-0.5*temp.Width,0) );\n  end;\n  case orientation of\n  0,900,1800,2700: filter := rfBox;\n  else filter := rfCosine;\n  end;\n  ADest.PutImageAngle(coord.x,coord.y, temp, angleDeg, filter);\n  temp.Free;\n\n  FontOrientation:= OldOrientation;\nend;{$ENDIF}\n\nprocedure TBGRASystemFontRenderer.InternalTextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; AOrientation: integer; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n  align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false);\nvar mode : TBGRATextOutImproveReadabilityMode;\n  s: TSize;\n  textSizeComputed: boolean;\n  pts: ArrayOfTPointF;\n  m: TAffineMatrix;\n  i: Integer;\n  ofsX: single;\nbegin\n  if sUTF8='' then exit;\n  {$IFDEF TEXT_ANGLE_PATCH}\n  if AOrientation <> 0 then\n  begin\n    InternalTextOutAnglePatch(ADest, x, y, AOrientation, sUTF8, c, texture, align, AShowPrefix, ARightToLeft);\n    exit;\n  end;\n  {$ENDIF}\n  {$IF defined(LINUX) or defined(DARWIN)}\n  //help LCL detect the correct direction\n  case GetFirstStrongBidiClassUTF8(sUTF8) of\n    ubcRightToLeft, ubcArabicLetter: if not ARightToLeft then sUTF8 := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_MARK) + sUTF8;\n    else\n      begin //suppose left-to-right\n        if ARightToLeft then sUTF8 := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_MARK) + sUTF8;\n      end;\n  end;\n  {$ENDIF}\n  s := Size(0, 0);\n  textSizeComputed:= false;\n  if Assigned(BGRATextOutImproveReadabilityProc) and \n   (FontQuality in[{$IFNDEF SYSTEM_RENDERER_IS_FINE}fqFineAntialiasing,{$ENDIF}\n                   fqFineClearTypeBGR,fqFineClearTypeRGB]) and \n   (AOrientation mod 3600 = 0) then\n  begin\n    case FontQuality of\n      fqFineClearTypeBGR: mode := irClearTypeBGR;\n      fqFineClearTypeRGB: mode := irClearTypeRGB;\n    else\n      mode := irNormal;\n    end;\n    if AShowPrefix then sUTF8 := RemovePrefix(sUTF8); //prefix not handled\n    BGRATextOutImproveReadabilityProc(ADest,FFont,x,y,sUTF8,c,texture,align,mode);\n  end else\n  begin\n    if AOrientation mod 3600 = 0 then\n    begin\n      {$IFNDEF TEXTOUT_KERNING_PATCH}\n      if not AShowPrefix and not ARightToLeft then\n        BGRAText.BGRATextOut(ADest,FFont,FontQuality,x,y,sUTF8,c,texture,align,\n          0) else\n      {$ENDIF}\n      begin\n        s := InternalTextSizeStyle(sUTF8,\n                 BGRADefaultTextOutStyle(ARightToLeft, AShowPrefix),\n                 MaxLongint);\n        textSizeComputed:= true;\n        case align of\n          taCenter: ofsX := s.cx / 2;\n          taRightJustify: ofsX := s.cx;\n          else ofsX := 0;\n        end;\n        BGRAText.BGRATextRect(ADest,FFont,FontQuality,\n          rect(floor(x - ofsX),floor(y), ceil(x - ofsX) + s.cx, ceil(y) + s.cy),\n          x - ofsX, y, sUTF8,\n          BGRADefaultTextOutStyle(ARightToLeft,AShowPrefix),c,texture);\n      end;\n    end\n    else\n    begin\n      if AShowPrefix then sUTF8 := RemovePrefix(sUTF8); //prefix not handled\n      BGRAText.BGRATextOutAngle(ADest,FFont,FontQuality,x,y,AOrientation,\n        sUTF8,c,texture,align,0);\n    end;\n  end;\n  if FOwnUnderline then\n  begin\n    if not textSizeComputed then\n      s := InternalTextSizeAngle(sUTF8, AShowPrefix, AOrientation);\n\n    pts := BGRATextUnderline(PointF(x,y),s.cx,InternalGetFontPixelMetric);\n    if AOrientation mod 3600 <> 0 then\n    begin\n      m := AffineMatrixTranslation(x,y)*\n           AffineMatrixRotationDeg(-AOrientation/10)*\n           AffineMatrixTranslation(-x,-y);\n      for i := 0 to high(pts) do\n        pts[i] := m*pts[i];\n    end;\n    if texture<>nil then\n      ADest.FillPolyAntialias(pts, texture, false)\n    else\n      ADest.FillPolyAntialias(pts, c, false);\n  end;\nend;\n\nprocedure TBGRASystemFontRenderer.InternalTextOutEllipse(\n  ADest: TBGRACustomBitmap; x, y, availableWidth: single; sUTF8: string;\n  c: TBGRAPixel; texture: IBGRAScanner; align: TAlignment;\n  AShowPrefix: boolean; ARightToLeft: boolean);\nvar remain: string;\nbegin\n  if sUTF8='' then exit;\n  if InternalTextSize(sUTF8,AShowPrefix).cx > availableWidth then\n  begin\n    InternalSplitText(sUTF8, HalfUp(availableWidth - InternalTextSize('...',AShowPrefix).cx), remain, nil);\n    AppendStr(sUTF8, '...');\n  end;\n  InternalTextOut(ADest,x,y,sUTF8,c,texture,align,AShowPrefix,ARightToLeft);\nend;\n\nprocedure TBGRASystemFontRenderer.InternalSplitText(var ATextUTF8: string;\n  AMaxWidth: integer; out ARemainsUTF8: string; out ALineEndingBreak: boolean; AWordBreak: TWordBreakHandler);\nvar p,skipCount, charLen: integer;\n  zeroWidth: boolean;\n  u: LongWord;\nbegin\n  ALineEndingBreak:= false;\n  if ATextUTF8= '' then\n  begin\n    ARemainsUTF8 := '';\n    exit;\n  end;\n  if RemoveLineEnding(ATextUTF8,1) then\n  begin\n    ARemainsUTF8:= ATextUTF8;\n    ATextUTF8 := '';\n    ALineEndingBreak:= true;\n    exit;\n  end;\n  if InternalTextSize(ATextUTF8, false).cx <= AMaxWidth then\n  begin\n    for p := 1 to length(ATextUTF8) do\n    begin\n      if RemoveLineEnding(ATextUTF8,p) then\n      begin\n        ARemainsUTF8:= copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n        ATextUTF8 := copy(ATextUTF8,1,p-1);\n        ALineEndingBreak:= true;\n        exit;\n      end;\n    end;\n    ARemainsUTF8 := '';\n    exit;\n  end;\n\n  if AMaxWidth <= 0 then\n    skipCount := 0\n  else\n    skipCount := BGRATextFitInfo(FFont, FontQuality, ATextUTF8, FontAntialiasingLevel, AMaxWidth);\n\n  if skipCount <= 0 then skipCount := 1;\n\n  p := 1;\n  zeroWidth := true;\n  repeat\n    charLen := UTF8CharacterLength(@ATextUTF8[p]);\n    u := UTF8CodepointToUnicode(@ATextUTF8[p], charLen);\n    if not IsZeroWidthUnicode(u) then\n      zeroWidth:= false;\n    inc(p, charLen); //UTF8 chars may be more than 1 byte long\n    dec(skipCount);\n\n    if RemoveLineEnding(ATextUTF8,p) then\n    begin\n      ARemainsUTF8:= copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n      ATextUTF8 := copy(ATextUTF8,1,p-1);\n      ALineEndingBreak:= true;\n      exit;\n    end;\n  until ((skipCount <= 0) and not zeroWidth) or (p >= length(ATextUTF8)+1);\n\n  ARemainsUTF8:= copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n  ATextUTF8 := copy(ATextUTF8,1,p-1); //this includes the whole last UTF8 char\n  if Assigned(AWordBreak) then AWordBreak(ATextUTF8,ARemainsUTF8);\nend;\n\nprocedure TBGRASystemFontRenderer.InternalSplitText(var ATextUTF8: string;\n  AMaxWidth: integer; out ARemainsUTF8: string; AWordBreak: TWordBreakHandler);\nvar lineEndingBreak: boolean;\nbegin\n  InternalSplitText(ATextUTF8,AMaxWidth,ARemainsUTF8,lineEndingBreak,AWordBreak);\nend;\n\nfunction TBGRASystemFontRenderer.InternalGetFontPixelMetric: TFontPixelMetric;\nvar fxFont: TFont;\nbegin\n  if FontQuality in[fqSystem,fqSystemClearType] then\n    result := GetLCLFontPixelMetric(FFont)\n  else\n  begin\n    FxFont := TFont.Create;\n    FxFont.Assign(FFont);\n    FxFont.Height := fxFont.Height*FontAntialiasingLevel;\n    Result:= GetLCLFontPixelMetric(FxFont);\n    if Result.Baseline <> -1 then Result.Baseline:= HalfUp((Result.Baseline-1)/FontAntialiasingLevel);\n    if Result.CapLine <> -1 then Result.CapLine:= HalfUp(Result.CapLine/FontAntialiasingLevel);\n    if Result.DescentLine <> -1 then Result.DescentLine:= HalfUp((Result.DescentLine-1)/FontAntialiasingLevel);\n    if Result.Lineheight <> -1 then Result.Lineheight:= HalfUp(Result.Lineheight/FontAntialiasingLevel);\n    if Result.xLine <> -1 then Result.xLine:= HalfUp(Result.xLine/FontAntialiasingLevel);\n    FxFont.Free;\n  end;\nend;\n\nprocedure TBGRASystemFontRenderer.DefaultWorkBreakHandler(var ABeforeUTF8,\n  AAfterUTF8: string);\nbegin\n  BGRADefaultWordBreakHandler(ABeforeUTF8,AAfterUTF8);\nend;\n\nfunction TBGRASystemFontRenderer.TextSize(sUTF8: string): TSize;\nvar oldOrientation: integer;\nbegin\n  oldOrientation:= FontOrientation;\n  FontOrientation:= 0;\n  UpdateFont;\n  result := InternalTextSize(sUTF8,False);\n  FontOrientation:= oldOrientation;\nend;\n\nfunction TBGRASystemFontRenderer.TextSizeAngle(sUTF8: string;\n  orientationTenthDegCCW: integer): TSize;\n{$IFDEF TEXT_ANGLE_PATCH}\nbegin\n  result := TextSize(sUTF8);\nend;\n{$ELSE}\nvar oldOrientation: integer;\nbegin\n  oldOrientation:= FontOrientation;\n  FontOrientation:= orientationTenthDegCCW;\n  UpdateFont;\n  result := InternalTextSize(sUTF8,False);\n  FontOrientation:= oldOrientation;\nend;\n{$ENDIF}\n\nfunction TBGRASystemFontRenderer.TextSize(sUTF8: string;\n  AMaxWidth: integer; ARightToLeft: boolean): TSize;\nvar\n  remains: string;\n  h, i, w: integer;\n  WordBreakHandler: TWordBreakHandler;\n  layout: TBidiTextLayout;\nbegin\n  UpdateFont;\n\n  if Assigned(FWordBreakHandler) then\n    WordBreakHandler := FWordBreakHandler\n  else\n    WordBreakHandler := @DefaultWorkBreakHandler;\n\n  if ContainsBidiIsolateOrFormattingUTF8(sUTF8) then\n  begin\n    layout := TBidiTextLayout.Create(self, sUTF8, ARightToLeft);\n    layout.WordBreakHandler:= WordBreakHandler;\n    layout.AvailableWidth := AMaxWidth;\n    for i := 0 to layout.ParagraphCount-1 do\n      layout.ParagraphAlignment[i] := btaLeftJustify;\n    result.cx := 0;\n    for i := 0 to layout.PartCount-1 do\n    begin\n      w := ceil(layout.PartRectF[i].Right);\n      if w > result.cx then result.cx := w;\n    end;\n    result.cy := ceil(layout.TotalTextHeight);\n    layout.Free;\n  end else\n  begin\n    result.cx := 0;\n    result.cy := 0;\n    h := InternalTextSize('Hg',False).cy;\n    repeat\n      InternalSplitText(sUTF8, AMaxWidth, remains, WordBreakHandler);\n      with InternalTextSize(sUTF8, false) do\n        if cx > result.cx then result.cx := cx;\n      inc(result.cy, h);\n      sUTF8 := remains;\n    until remains = '';\n  end;\nend;\n\nfunction TBGRASystemFontRenderer.TextFitInfo(sUTF8: string; AMaxWidth: integer\n  ): integer;\nbegin\n  UpdateFont;\n  result := BGRATextFitInfo(FFont, FontQuality, sUTF8, FontAntialiasingLevel, AMaxWidth);\nend;\n\nconstructor TBGRASystemFontRenderer.Create;\nbegin\n  FFont := TFont.Create;\nend;\n\ndestructor TBGRASystemFontRenderer.Destroy;\nbegin\n  FFont.Free;\n  inherited Destroy;\nend;\n\ninitialization\n\n  fqFineClearType := @GetFineClearTypeAuto;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgratextbidi.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of bidirectional text layout }\nunit BGRATextBidi;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRAUTF8, BGRAUnicode, BGRATransform,\n  BGRAUnicodeText;\n\ntype\n  TBrokenLinesChangedEvent = procedure(ASender: TObject; AParagraphIndex: integer;\n    ASubBrokenStart, ASubBrokenChangedCountBefore, ASubBrokenChangedCountAfter: integer;\n    ASubBrokenTotalCountBefore, ASubBrokenTotalCountAfter: integer) of object;\n  TParagraphLayoutSplitEvent = procedure(ASender: TObject; AParagraphIndex: integer;\n      ASubBrokenIndex, ACharIndex: integer) of object;\n\n  { Position of carte in bidirectional text }\n  TBidiCaretPos = record\n    PartIndex: integer;\n\n    Top, Bottom: TPointF;\n    RightToLeft: boolean;\n\n    PreviousTop, PreviousBottom: TPointF;\n    PreviousRightToLeft: boolean;\n\n    procedure Transform(AMatrix: TAffineMatrix);\n  end;\n\n  PPartInfo = ^TPartInfo;\n\n  { Information about a part of text (having same lavel and direction) }\n\n  TPartInfo = record\n         brokenLineIndex: integer;\n         startIndex, endIndex: integer;\n         bidiLevel: byte;\n         modified: bytebool;\n         rectF: TRectF;\n         posCorrection: TPointF;\n         function IsRightToLeft: boolean;\n       end;\n\n  PBrokenLineInfo = ^TBrokenLineInfo;\n\n  { Information about a broken line (limited by layout with or a separator) }\n  TBrokenLineInfo = record\n                unbrokenLineIndex: integer;\n                startIndex, endIndex: integer;\n                bidiLevel: byte;\n                rectF: TRectF;\n                usedWidth: single;\n                firstPartIndex: integer;\n                parts: array of TPartInfo;\n                partCount: integer;\n                function IsRightToLeft: boolean;\n              end;\n\n  PParagraphInfo = ^TParagraphInfo;\n  { Information about a paragraph }\n  TParagraphInfo = record\n    alignment: TBidiTextAlignment;\n    layoutComputed, overflow: boolean;\n    rectF: TRectF;\n    firstBrokenLineIndex: integer;\n    firstPartIndex: integer;\n    brokenLines: array of TBrokenLineInfo;\n    brokenLineCount: integer;\n  end;\n\n  TBidiTextLayout = class;\n\n  { Enumerator for text parts }\n  TPartEnumerator = record\n  private\n    FJustCreated: boolean;\n    FParagraphIndex: integer;\n    FBrokenLineIndex: integer;\n    FPartIndex: integer;\n    FLayout: TBidiTextLayout;\n    FSubBrokenIndex: integer;\n    FSubBrokenCount: integer;\n    FCurBroken: PBrokenLineInfo;\n    FSubPartIndex: integer;\n    FSubPartCount: integer;\n    FEndPartIndex: integer;\n    function GetPartInfo: PPartInfo;\n    procedure Update;\n  public\n    class function New(ALayout: TBidiTextLayout; AParagraphIndex: integer;\n      ASubBrokenIndex: integer; ASubPartIndex: integer; AEndPartIndex: integer): TPartEnumerator; static;\n    function GetNext: boolean;\n    property Layout: TBidiTextLayout read FLayout;\n    property ParagraphIndex: integer read FParagraphIndex;\n    property BrokenLineIndex: integer read FBrokenLineIndex;\n    property PartIndex: integer read FPartIndex;\n    property PartInfo: PPartInfo read GetPartInfo;\n    property BrokenLineInfo: PBrokenLineInfo read FCurBroken;\n  end;\n\n  { Computes, updates, and render text using Unicode bidirectional algorithm }\n  TBidiTextLayout = class\n  private\n    FAvailableHeight: single;\n    FAvailableWidth: single;\n    FClipMargin: integer;\n    FOnBrokenLinesChanged: TBrokenLinesChangedEvent;\n    FOnParagraphChanged: TParagraphEvent;\n    FOnParagraphDeleted: TParagraphEvent;\n    FOnParagraphMergedWithNext: TParagraphEvent;\n    FOnParagraphSplit: TParagraphLayoutSplitEvent;\n    FOnParagraphVerticalTrimChanged: TParagraphEvent;\n    FParagraphSpacingAbove: single;\n    FParagraphSpacingBelow: single;\n    FTopLeft: TPointF;\n    FMatrix, FMatrixInverse: TAffineMatrix;\n    FTabSize: Single;\n    FWordBreakHandler: TWordBreakHandler;\n    function GetBrokenLineAffineBox(AIndex: integer): TAffineBox;\n    function GetBrokenLineCount: integer;\n    function GetBrokenLineEndCaret(AIndex: integer): TBidiCaretPos;\n    function GetBrokenLineEndPart(AIndex: integer): integer;\n    function GetBrokenLineStartPart(AIndex: integer): integer;\n    function GetBrokenLineUntransformedEndCaret(AIndex: integer): TBidiCaretPos;\n    function GetBrokenLineEndIndex(AIndex: integer): integer;\n    function GetBrokenLineParagraphIndex(AIndex: integer): integer;\n    function GetBrokenLineUnbrokenIndex(AIndex: integer): integer;\n    function GetBrokenLineInfo(AIndex: integer): PBrokenLineInfo;\n    function GetBrokenLineRectF(AIndex: integer): TRectF;\n    function GetBrokenLineRightToLeft(AIndex: integer): boolean;\n    function GetBrokenLineStartCaret(AIndex: integer): TBidiCaretPos;\n    function GetBrokenLineUntransformedStartCaret(AIndex: integer): TBidiCaretPos;\n    function GetBrokenLineStartIndex(AIndex: integer): integer;\n    function GetBrokenLineUsedWidth(AIndex: integer): single;\n    function GetCharCount: integer;\n    function GetFontBidiMode: TFontBidiMode;\n    function GetLayoutComputed: boolean;\n    function GetLineHeight: single;\n    function GetMatrix: TAffineMatrix;\n    function GetMatrixInverse: TAffineMatrix;\n    function GetParagraphAffineBox(AIndex: integer): TAffineBox;\n    function GetParagraphAlignment(AIndex: integer): TBidiTextAlignment;\n    function GetParagraphCount: integer;\n    function GetParagraphEndBrokenLine(AIndex: integer): integer;\n    function GetParagraphEndIndex(AIndex: integer): integer;\n    function GetParagraphEndIndexBeforeParagraphSeparator(AIndex: integer): integer;\n    function GetParagraphEndPart(AIndex: integer): integer;\n    function GetParagraphInfo(AIndex: integer): PParagraphInfo;\n    function GetParagraphRectF(AIndex: integer): TRectF;\n    function GetParagraphRightToLeft(AIndex: integer): boolean;\n    function GetParagraphStartBrokenLine(AIndex: integer): integer;\n    function GetParagraphStartIndex(AIndex: integer): integer;\n    function GetParagraphStartPart(AIndex: integer): integer;\n    function GetPartAffineBox(AIndex: integer): TAffineBox;\n    function GetPartBrokenLineIndex(AIndex: integer): integer;\n    function GetPartCount: integer;\n    function GetPartEnumerator(AFirstPart: integer): TPartEnumerator;\n    function GetPartEnumerator(AFirstPart, ALastPartPlus1: integer): TPartEnumerator;\n    function GetPartInfo(AIndex: integer): PPartInfo;\n    function GetPartEndIndex(AIndex: integer): integer;\n    function GetPartRectF(AIndex: integer): TRectF;\n    function GetPartRightToLeft(AIndex: integer): boolean;\n    function GetPartStartIndex(AIndex: integer): integer;\n    function GetText: string;\n    function GetTotalTextHeight: single;\n    function GetUnicodeChar(APosition0: integer): LongWord;\n    function GetUsedWidth: single;\n    function GetUTF8Char(APosition0: integer): string4;\n    procedure SetAvailableHeight(AValue: single);\n    procedure SetAvailableWidth(AValue: single);\n    procedure SetFontBidiMode(AValue: TFontBidiMode);\n    procedure SetFontRenderer(AValue: TBGRACustomFontRenderer);\n    procedure SetParagraphAlignment(AIndex: integer; AValue: TBidiTextAlignment);\n    procedure SetParagraphSpacingAbove(AValue: single);\n    procedure SetParagraphSpacingBelow(AValue: single);\n    procedure SetTabSize(AValue: single);\n    procedure SetTopLeft(AValue: TPointF);\n    procedure ComputeMatrix;\n  protected\n    FAnalysis: TUnicodeAnalysis;\n    FRenderer: TBGRACustomFontRenderer;\n    FLineHeight: single;\n\n    FParagraph: array of TParagraphInfo;\n    FComputedBrokenLineCount: integer;\n    FComputedPartCount: integer;\n\n    FColor: TBGRAPixel;\n    FTexture: IBGRAScanner;\n\n    function TextSizeBidiOverride(sUTF8: string; ARightToLeft: boolean): TPointF;\n    function TextSizeBidiOverrideSplit(AStartIndex, AEndIndex: integer; ARightToLeft: boolean; ASplitIndex: integer): TPointF;\n    function TextFitInfoBidiOverride(sUTF8: string; AWidth: single; ARightToLeft: boolean): integer;\n    function GetFontFullHeight: single;\n    function GetFontBaseline: single;\n    function GetFontOrientation: single;\n    procedure TextOutBidiOverride(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string; ARightToLeft: boolean);\n    procedure TextPathBidiOverride(ADest: IBGRAPath; x, y: single; sUTF8: string; ARightToLeft: boolean);\n\n    procedure AddPart(AStartIndex, AEndIndex: integer; ABidiLevel: byte; ARectF: TRectF; APosCorrection: TPointF; ABrokenLineIndex: integer; ABrokenLine: PBrokenLineInfo);\n    function GetPartStartCaret(APartIndex: integer): TBidiCaretPos;\n    function GetPartEndCaret(APartIndex: integer): TBidiCaretPos;\n    function GetUntransformedPartStartCaret(APartIndex: integer): TBidiCaretPos;\n    function GetUntransformedPartStartCaret(APartIndex: integer; APrevPart, APart: PPartInfo): TBidiCaretPos;\n    function GetUntransformedPartEndCaret(APartIndex: integer): TBidiCaretPos;\n    function GetUntransformedPartEndCaret(APartIndex: integer; APart: PPartInfo): TBidiCaretPos;\n    function GetUntransformedParagraphAt(APosition: TPointF): integer; overload;\n\n    function GetSameLevelString(startIndex,endIndex: integer): string; overload;\n    function GetSameLevelString(startIndex,endIndex: integer; out nonDiscardedCount: integer): string; overload;\n    function ComputeBidiTree(AMaxWidth: single; startIndex, endIndex: integer; bidiLevel: byte): TBidiTree;\n    procedure AddPartsFromTree(APos: TPointF; ATree: TBidiTree; fullHeight, baseLine: single; ABrokenLineIndex: integer; ABrokenLine: PBrokenLineInfo);\n    procedure Init(ATextUTF8: string; ABidiMode: TFontBidiMode); virtual;\n    procedure ComputeLayout; virtual;\n    procedure CheckTextLayout;\n    procedure NeedLayout;\n    procedure InvalidateParagraphLayout(AParagraphIndex: integer);\n    procedure InternalInvalidateParagraphLayout(AParagraphIndex: integer);\n    procedure OffsetParagraph(AParagraphIndex: integer; ADeltaY: single; ADeltaBroken, ADeltaPart: integer);\n    procedure OffsetParagraphCharIndex(AParagraphIndex: integer; ADeltaChar: integer);\n    procedure TrimParagraphLayoutVertically(AParagraphIndex: integer);\n    procedure InternalDrawText(ADest: TBGRACustomBitmap);\n    procedure InternalPathText(ADest: IBGRAPath); overload;\n    procedure InternalPathText(ADest: IBGRAPath; AClipRect: TRect); overload;\n    procedure InternalDrawTextParts(ADest: TBGRACustomBitmap; AFirstPart, ALastPartPlus1: integer);\n    procedure InternalPathTextParts(ADest: IBGRAPath; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure InternalPathTextParts(ADest: IBGRAPath; AClipRect: TRect; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure InternalRangeError;\n\n    //unicode analysis events\n    procedure BidiModeChanged({%H-}ASender: TObject);\n    procedure CharDeleted({%H-}ASender: TObject; AParagraphIndex: integer; {%H-}ACharStart, {%H-}ACharCount: integer);\n    procedure CharInserted({%H-}ASender: TObject; AParagraphIndex: integer; {%H-}ACharStart, {%H-}ACharCount: integer);\n    procedure AnalysisChanged({%H-}ASender: TObject; AParagraphIndex: integer; {%H-}ACharStart, {%H-}ACharCount: integer);\n    procedure ParagraphDeleted({%H-}ASender: TObject; AParagraphIndex: integer);\n    procedure ParagraphMergedWithNext({%H-}ASender: TObject; AParagraphIndex: integer);\n    procedure ParagraphSplit({%H-}ASender: TObject; AParagraphIndex: integer; {%H-}ACharIndex: integer);\n    procedure InternalParagraphDeleted(AParagraphIndex: integer);\n    property LayoutComputed: boolean read GetLayoutComputed;\n  public\n    constructor Create(AFontRenderer: TBGRACustomFontRenderer; sUTF8: string); overload;\n    constructor Create(AFontRenderer: TBGRACustomFontRenderer; sUTF8: string; ARightToLeft: boolean); overload;\n    constructor Create(AFontRenderer: TBGRACustomFontRenderer; sUTF8: string; AFontBidiMode: TFontBidiMode); overload;\n    destructor Destroy; override;\n    procedure SetLayout(ARect: TRectF);\n    procedure InvalidateLayout;\n    procedure ComputeLayoutIfNeeded;\n    function AddOverrideIfNecessary(var sUTF8: string; ARightToLeft: boolean): boolean;\n    function GetTextPart(APartIndex: integer; AAddOverrideIfNecessary: boolean): string;\n\n    procedure DrawText(ADest: TBGRACustomBitmap); overload;\n    procedure DrawText(ADest: TBGRACustomBitmap; AColor: TBGRAPixel); overload;\n    procedure DrawText(ADest: TBGRACustomBitmap; ATexture: IBGRAScanner); overload;\n    procedure PathText(ADest: IBGRAPath);\n    procedure PathText(ADest: IBGRAPath; AClipRect: TRect);\n    procedure DrawTextParts(ADest: TBGRACustomBitmap; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure DrawTextParts(ADest: TBGRACustomBitmap; AColor: TBGRAPixel; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure DrawTextParts(ADest: TBGRACustomBitmap; ATexture: IBGRAScanner; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure PathTextParts(ADest: IBGRAPath; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure PathTextParts(ADest: IBGRAPath; AClipRect: TRect; AFirstPart, ALastPartPlus1: integer); overload;\n    procedure DrawParagraphs(ADest: TBGRACustomBitmap; AFirstPara, ALastParaPlus1: integer); overload;\n    procedure DrawParagraphs(ADest: TBGRACustomBitmap; AColor: TBGRAPixel; AFirstPara, ALastParaPlus1: integer); overload;\n    procedure DrawParagraphs(ADest: TBGRACustomBitmap; ATexture: IBGRAScanner; AFirstPara, ALastParaPlus1: integer); overload;\n    procedure PathParagraphs(ADest: IBGRAPath; AFirstPara, ALastParaPlus1: integer); overload;\n    procedure PathParagraphs(ADest: IBGRAPath; AClipRect: TRect; AFirstPara, ALastParaPlus1: integer); overload;\n    procedure DrawBrokenLines(ADest: TBGRACustomBitmap; AFirstBroken, ALastBrokenPlus1: integer); overload;\n    procedure DrawBrokenLines(ADest: TBGRACustomBitmap; AColor: TBGRAPixel; AFirstBroken, ALastBrokenPlus1: integer); overload;\n    procedure DrawBrokenLines(ADest: TBGRACustomBitmap; ATexture: IBGRAScanner; AFirstBroken, ALastBrokenPlus1: integer); overload;\n    procedure PathBrokenLines(ADest: IBGRAPath; AFirstBroken, ALastBrokenPlus1: integer); overload;\n    procedure PathBrokenLines(ADest: IBGRAPath; AClipRect: TRect; AFirstBroken, ALastBrokenPlus1: integer); overload;\n\n    procedure DrawCaret(ADest: TBGRACustomBitmap; ACharIndex: integer; AMainColor, ASecondaryColor: TBGRAPixel);\n    procedure DrawSelection(ADest: TBGRACustomBitmap; AStartIndex, AEndIndex: integer;\n                            AFillColor: TBGRAPixel; ABorderColor: TBGRAPixel; APenWidth: single); overload;\n    procedure DrawSelection(ADest: TBGRACustomBitmap; AStartIndex, AEndIndex: integer;\n                            AFillColor: TBGRAPixel); overload;\n\n    function GetCaret(ACharIndex: integer): TBidiCaretPos;\n    function GetUntransformedCaret(ACharIndex: integer): TBidiCaretPos;\n    function GetCharIndexAt(APosition: TPointF; ABetweenGlyphs: boolean = true): integer;\n    function GetTextEnveloppe(AStartIndex, AEndIndex: integer; APixelCenteredCoordinates: boolean = true; AMergeBoxes: boolean = true; AVerticalClip: boolean = false): ArrayOfTPointF;\n    function GetUntransformedTextEnveloppe(AStartIndex, AEndIndex: integer; APixelCenteredCoordinates: boolean = true; AMergeBoxes: boolean = true; AVerticalClip: boolean = false): ArrayOfTPointF;\n    function GetParagraphAt(ACharIndex: Integer): integer; overload;\n    function GetParagraphAt(APosition: TPointF): integer; overload;\n    function GetBrokenLineAt(ACharIndex: integer): integer;\n\n    function InsertText(ATextUTF8: string; APosition: integer): integer;\n    function InsertLineSeparator(APosition: integer): integer;\n    function DeleteText(APosition, ACount: integer): integer;\n    function DeleteTextBefore(APosition, ACount: integer): integer;\n    function CopyText(APosition, ACount: integer): string;\n    function CopyTextBefore(APosition, ACount: integer): string;\n    function IncludeNonSpacingChars(APosition, ACount: integer; AIncludeCombiningMarks: boolean = true): integer;\n    function IncludeNonSpacingCharsBefore(APosition, ACount: integer; AIncludeCombiningMarks: boolean = true): integer;\n    function FindTextAbove(AFromPosition: integer): integer;\n    function FindTextBelow(AFromPosition: integer): integer;\n\n    property CharCount: integer read GetCharCount;\n    property UTF8Char[APosition0: integer]: string4 read GetUTF8Char;\n    property UnicodeChar[APosition0: integer]: LongWord read GetUnicodeChar;\n\n    property BrokenLineCount: integer read GetBrokenLineCount;\n    property BrokenLineParagraphIndex[AIndex: integer]: integer read GetBrokenLineParagraphIndex;\n    property BrokenLineUnbrokenIndex[AIndex: integer]: integer read GetBrokenLineUnbrokenIndex;\n    property BrokenLineStartIndex[AIndex: integer]: integer read GetBrokenLineStartIndex;\n    property BrokenLineEndIndex[AIndex: integer]: integer read GetBrokenLineEndIndex;\n    property BrokenLineStartPart[AIndex: integer]: integer read GetBrokenLineStartPart;\n    property BrokenLineEndPart[AIndex: integer]: integer read GetBrokenLineEndPart;\n    property BrokenLineRectF[AIndex: integer]: TRectF read GetBrokenLineRectF;\n    property BrokenLineUsedWidth[AIndex: integer]: single read GetBrokenLineUsedWidth;\n    property BrokenLineAffineBox[AIndex: integer]: TAffineBox read GetBrokenLineAffineBox;\n    property BrokenLineRightToLeft[AIndex: integer]: boolean read GetBrokenLineRightToLeft;\n    property BrokenLineStartCaret[AIndex: integer]: TBidiCaretPos read GetBrokenLineStartCaret;\n    property BrokenLineEndCaret[AIndex: integer]: TBidiCaretPos read GetBrokenLineEndCaret;\n    property OnBrokenLinesChanged: TBrokenLinesChangedEvent read FOnBrokenLinesChanged write FOnBrokenLinesChanged;\n\n    property PartCount: integer read GetPartCount;\n    property PartStartIndex[AIndex: integer]: integer read GetPartStartIndex;\n    property PartEndIndex[AIndex: integer]: integer read GetPartEndIndex;\n    property PartBrokenLineIndex[AIndex: integer]: integer read GetPartBrokenLineIndex;\n    property PartStartCaret[AIndex: integer]: TBidiCaretPos read GetPartStartCaret;\n    property PartEndCaret[AIndex: integer]: TBidiCaretPos read GetPartEndCaret;\n    property PartRectF[AIndex: integer]: TRectF read GetPartRectF;\n    property PartAffineBox[AIndex: integer]: TAffineBox read GetPartAffineBox;\n    property PartRightToLeft[AIndex: integer]: boolean read GetPartRightToLeft;\n\n    property TopLeft: TPointF read FTopLeft write SetTopLeft;\n    property AvailableWidth: single read FAvailableWidth write SetAvailableWidth;\n    property AvailableHeight: single read FAvailableHeight write SetAvailableHeight;\n    property TabSize: single read FTabSize write SetTabSize;\n    property ParagraphSpacingAbove: single read FParagraphSpacingAbove write SetParagraphSpacingAbove;\n    property ParagraphSpacingBelow: single read FParagraphSpacingBelow write SetParagraphSpacingBelow;\n    property ParagraphRectF[AIndex: integer]: TRectF read GetParagraphRectF;\n    property ParagraphAffineBox[AIndex: integer]: TAffineBox read GetParagraphAffineBox;\n    property ParagraphAlignment[AIndex: integer]: TBidiTextAlignment read GetParagraphAlignment write SetParagraphAlignment;\n    property ParagraphStartIndex[AIndex: integer]: integer read GetParagraphStartIndex;\n    property ParagraphEndIndex[AIndex: integer]: integer read GetParagraphEndIndex;\n    property ParagraphEndIndexBeforeParagraphSeparator[AIndex: integer]: integer read GetParagraphEndIndexBeforeParagraphSeparator;\n    property ParagraphRightToLeft[AIndex: integer]: boolean read GetParagraphRightToLeft;\n    property ParagraphStartPart[AIndex: integer]: integer read GetParagraphStartPart;\n    property ParagraphEndPart[AIndex: integer]: integer read GetParagraphEndPart;\n    property ParagraphStartBrokenLine[AIndex: integer]: integer read GetParagraphStartBrokenLine;\n    property ParagraphEndBrokenLine[AIndex: integer]: integer read GetParagraphEndBrokenLine;\n    property ParagraphCount: integer read GetParagraphCount;\n    property OnParagraphDeleted : TParagraphEvent read FOnParagraphDeleted write FOnParagraphDeleted;\n    property OnParagraphMergedWithNext: TParagraphEvent read FOnParagraphMergedWithNext write FOnParagraphMergedWithNext;\n    property OnParagraphSplit: TParagraphLayoutSplitEvent read FOnParagraphSplit write FOnParagraphSplit;\n    property OnParagraphChanged: TParagraphEvent read FOnParagraphChanged write FOnParagraphChanged;\n    property OnParagraphVerticalTrimChanged: TParagraphEvent read FOnParagraphVerticalTrimChanged write FOnParagraphVerticalTrimChanged;\n\n    property UsedWidth: single read GetUsedWidth;\n    property TotalTextHeight: single read GetTotalTextHeight;\n    property LineHeight: single read GetLineHeight;\n\n    property Matrix: TAffineMatrix read GetMatrix;\n    property MatrixInverse: TAffineMatrix read GetMatrixInverse;\n    property TextUTF8: string read GetText;\n    property WordBreakHandler: TWordBreakHandler read FWordBreakHandler write FWordBreakHandler;\n    property ClipMargin: integer read FClipMargin write FClipMargin; // how many pixels can the text go outside of its box\n\n    property FontRenderer: TBGRACustomFontRenderer read FRenderer write SetFontRenderer;\n    property FontBidiMode: TFontBidiMode read GetFontBidiMode write SetFontBidiMode;\n  end;\n\n  { Tree of bidirectional text with actual size computation }\n  TBidiLayoutTree = class(TBidiTree)\n  private\n    FBidiPos: single;\n    FSize: TPointF;\n    FTextUTF8: string;\n    FNonDiscardedCount: integer;\n    FLayout: TBidiTextLayout;\n    FMaxWidth: single;\n    function GetCumulatedBidiPos: single;\n    function GetHeight: single;\n    function GetLayout: TBidiTextLayout;\n    function GetMaxWidth: single;\n    function GetWidth: single;\n    procedure UpdateBranchSize;\n  public\n    constructor Create(AData: pointer; AStartIndex, AEndIndex: integer; ABidiLevel: byte; AIsLeaf: boolean); override;\n    procedure AddBranch(ABranch: TBidiTree); override;\n    procedure Shorten(AEndIndex: integer); override;\n    procedure AfterFinish; override;\n    function TrySplit: boolean; override;\n    property Layout: TBidiTextLayout read GetLayout;\n    property MaxWidth: single read GetMaxWidth;\n    property BidiPos: single read FBidiPos;\n    property CumulatedBidiPos: single read GetCumulatedBidiPos;\n    property Width: single read GetWidth;\n    property Height: single read GetHeight;\n  end;\n\n  { Parameters for TBidiLayoutTree }\n  TBidiLayoutTreeData = record\n    Layout: TBidiTextLayout;\n    MaxWidth: single;\n  end;\n\nimplementation\n\nuses math;\n\n{ TPartEnumerator }\n\nfunction TPartEnumerator.GetPartInfo: PPartInfo;\nbegin\n  if FSubPartIndex < FSubPartCount then\n    result := @FCurBroken^.parts[FSubPartIndex]\n  else\n    result := nil;\nend;\n\nprocedure TPartEnumerator.Update;\nbegin\n  with FLayout.FParagraph[FParagraphIndex] do\n  begin\n    FSubBrokenCount:= brokenLineCount;\n    FBrokenLineIndex:= FSubBrokenIndex + firstBrokenLineIndex;\n    if FSubBrokenIndex < brokenLineCount then\n    begin\n      FCurBroken := @brokenLines[FSubBrokenIndex];\n      with FCurBroken^ do\n      begin\n        FSubPartCount:= partCount;\n        FPartIndex:= FSubPartIndex + firstPartIndex;\n      end;\n    end else\n    begin\n      FCurBroken := nil;\n      FSubPartCount:= 0;\n      if brokenLineCount > 0 then\n        FPartIndex := brokenLines[brokenLineCount-1].firstPartIndex +\n                      brokenLines[brokenLineCount-1].partCount\n      else\n        FPartIndex := firstPartIndex;\n    end;\n  end;\nend;\n\nclass function TPartEnumerator.New(ALayout: TBidiTextLayout;\n  AParagraphIndex: integer; ASubBrokenIndex: integer; ASubPartIndex: integer;\n  AEndPartIndex: integer): TPartEnumerator;\nbegin\n  result.FLayout := ALayout;\n  result.FParagraphIndex:= AParagraphIndex;\n  result.FSubBrokenIndex:= ASubBrokenIndex;\n  result.FSubPartIndex:= ASubPartIndex;\n  result.Update;\n  result.FJustCreated:= true;\n  result.FEndPartIndex:= AEndPartIndex;\nend;\n\nfunction TPartEnumerator.GetNext: boolean;\nbegin\n  if FPartIndex >= FEndPartIndex then exit(false);\n  if FJustCreated then\n  begin\n    FJustCreated := false;\n    result := (FSubPartIndex < FSubPartCount) and (FPartIndex < FEndPartIndex);\n    exit;\n  end;\n  if FSubPartIndex + 1 >= FSubPartCount then\n  begin\n    if FSubBrokenIndex + 1 >= FSubBrokenCount then\n    begin\n      if (FParagraphIndex + 1 >= FLayout.ParagraphCount) or\n         (FLayout.FParagraph[FParagraphIndex + 1].brokenLineCount = 0) then\n        exit(false) else\n      begin\n        inc(FPartIndex);\n        inc(FParagraphIndex);\n        FSubBrokenIndex:= 0;\n        FSubPartIndex:= 0;\n        Update;\n      end;\n    end else\n    begin\n      inc(FPartIndex);\n      inc(FSubBrokenIndex);\n      inc(FBrokenLineIndex);\n      FSubPartIndex:= 0;\n      with FLayout.FParagraph[FParagraphIndex] do\n      begin\n        FCurBroken := @brokenLines[FSubBrokenIndex];\n        with FCurBroken^ do\n        begin\n          FSubPartCount:= partCount;\n          FPartIndex:= FSubPartIndex + firstPartIndex;\n        end;\n      end;\n    end;\n  end else\n  begin\n    inc(FPartIndex);\n    inc(FSubPartIndex);\n  end;\n  result := FPartIndex < FEndPartIndex;\nend;\n\n{ TPartInfo }\n\nfunction TPartInfo.IsRightToLeft: boolean;\nbegin\n  result := odd(bidiLevel);\nend;\n\n{ TBrokenLineInfo }\n\nfunction TBrokenLineInfo.IsRightToLeft: boolean;\nbegin\n  result := odd(bidiLevel);\nend;\n\n{ TBidiLayoutTree }\n\nfunction TBidiLayoutTree.GetLayout: TBidiTextLayout;\nbegin\n  result := FLayout;\nend;\n\nfunction TBidiLayoutTree.GetHeight: single;\nbegin\n  result := FSize.y;\nend;\n\nfunction TBidiLayoutTree.GetCumulatedBidiPos: single;\nbegin\n  result := BidiPos;\n  if Assigned(Parent) then\n    IncF(result, TBidiLayoutTree(Parent).CumulatedBidiPos);\nend;\n\nfunction TBidiLayoutTree.GetMaxWidth: single;\nbegin\n  result := FMaxWidth;\nend;\n\nfunction TBidiLayoutTree.GetWidth: single;\nbegin\n  result := FSize.x;\nend;\n\nprocedure TBidiLayoutTree.UpdateBranchSize;\nvar\n  i: Integer;\n  last: TBidiLayoutTree;\nbegin\n  if not IsLeaf then\n  begin\n    //write('Update branch size from ', round(FSize.x));\n    if Count = 0 then\n    begin\n      FSize := PointF(0,0)\n    end\n    else\n    begin\n      last := TBidiLayoutTree(Branch[Count-1]);\n      FSize.x := last.BidiPos + last.Width;\n      FSize.y := 0;\n      for i := 0 to Count-1 do\n        FSize.y := max(FSize.y, TBidiLayoutTree(Branch[i]).Height);\n    end;\n    //writeln(' to ', round(FSize.x), ' (',inttostr(Count),')');\n  end;\nend;\n\nconstructor TBidiLayoutTree.Create(AData: pointer; AStartIndex,\n  AEndIndex: integer; ABidiLevel: byte; AIsLeaf: boolean);\nbegin\n  inherited Create(AData, AStartIndex, AEndIndex, ABidiLevel, AIsLeaf);\n  FLayout := TBidiLayoutTreeData(AData^).Layout;\n  FMaxWidth := TBidiLayoutTreeData(AData^).MaxWidth;\n  if IsLeaf then\n  begin\n    FTextUTF8:= Layout.GetSameLevelString(StartIndex,EndIndex, FNonDiscardedCount);\n    FSize := Layout.TextSizeBidiOverride(FTextUTF8, IsRightToLeft);\n    //writeln('Created leaf ', round(FSize.x), ' of level ',BidiLevel);\n  end\n  else\n  begin\n    //writeln('Created branch of level ',BidiLevel);\n    FTextUTF8:= '';\n    FNonDiscardedCount:= 0;\n    FSize := PointF(0,0);\n  end;\nend;\n\nprocedure TBidiLayoutTree.AddBranch(ABranch: TBidiTree);\nvar\n  prev: TBidiLayoutTree;\nbegin\n  inherited AddBranch(ABranch);\n  if Count > 1 then\n  begin\n    prev := TBidiLayoutTree(Branch[Count-2]);\n    TBidiLayoutTree(ABranch).FBidiPos:= prev.BidiPos + prev.Width;\n  end;\n  if (TBidiLayoutTree(ABranch).Width <> 0) or\n     (TBidiLayoutTree(ABranch).Height <> 0) then\n    UpdateBranchSize;\nend;\n\nprocedure TBidiLayoutTree.Shorten(AEndIndex: integer);\nbegin\n  inherited Shorten(AEndIndex);\n  if IsLeaf then\n  begin\n    FTextUTF8:= Layout.GetSameLevelString(StartIndex,EndIndex, FNonDiscardedCount);\n    FSize := Layout.TextSizeBidiOverride(FTextUTF8, IsRightToLeft);\n    //writeln('Shortened leaf ', round(FSize.x));\n  end else\n    UpdateBranchSize;\nend;\n\nprocedure TBidiLayoutTree.AfterFinish;\nbegin\n  if Assigned(Parent) then\n    TBidiLayoutTree(Parent).UpdateBranchSize;\nend;\n\nfunction TBidiLayoutTree.TrySplit: boolean;\nvar\n  fitInfo, splitIndex: Integer;\n  a: TUnicodeAnalysis;\n  remain: Single;\nbegin\n  if not IsLeaf then exit(false);\n  if MaxWidth = EmptySingle then exit(false);\n  remain := MaxWidth - CumulatedBidiPos;\n  if Width > remain then\n  begin\n    fitInfo := Layout.TextFitInfoBidiOverride(FTextUTF8, remain, IsRightToLeft);\n    if fitInfo < FNonDiscardedCount then\n    begin\n      //writeln('Splitting leaf ',round(Width), ' (max ',round(remain),')');\n      splitIndex:= StartIndex;\n      a:= Layout.FAnalysis;\n      while fitInfo > 0 do\n      begin\n        while (splitIndex < EndIndex) and a.BidiInfo[splitIndex].IsDiscardable do\n          Inc(splitIndex);\n        if splitIndex < EndIndex then inc(splitIndex);\n        dec(fitInfo);\n      end;\n      Shorten(splitIndex);\n      TBidiLayoutTree(Parent).UpdateBranchSize;\n      exit(true);\n    end;\n  end;\n  exit(false);\nend;\n\n{ TBidiCaretPos }\n\nprocedure TBidiCaretPos.Transform(AMatrix: TAffineMatrix);\nbegin\n  Top := AMatrix*Top;\n  Bottom := AMatrix*Bottom;\n  PreviousTop := AMatrix*PreviousTop;\n  PreviousBottom := AMatrix*PreviousBottom;\nend;\n\n{ TBidiTextLayout }\n\nfunction TBidiTextLayout.GetBrokenLineAffineBox(AIndex: integer): TAffineBox;\nbegin\n  result := Matrix*TAffineBox.AffineBox(BrokenLineRectF[AIndex]);\nend;\n\nfunction TBidiTextLayout.GetBrokenLineCount: integer;\nbegin\n  NeedLayout;\n  result := FComputedBrokenLineCount;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineEndCaret(AIndex: integer): TBidiCaretPos;\nbegin\n  result := GetBrokenLineUntransformedEndCaret(AIndex);\n  result.Transform(Matrix);\nend;\n\nfunction TBidiTextLayout.GetBrokenLineEndPart(AIndex: integer): integer;\nbegin\n  with GetBrokenLineInfo(AIndex)^ do\n    result := firstPartIndex + partCount;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineStartPart(AIndex: integer): integer;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.firstPartIndex;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineUntransformedEndCaret(AIndex: integer): TBidiCaretPos;\nbegin\n  with GetBrokenLineInfo(AIndex)^ do\n  begin\n    result.Top.y := rectF.Top;\n    if BrokenLineRightToLeft[AIndex] then\n      result.Top.x := rectF.Left\n    else\n      result.Top.x := rectF.Right;\n    result.Bottom.y := rectF.Bottom;\n    result.Bottom.x := result.Top.x;\n    result.RightToLeft := IsRightToLeft;\n    result.PartIndex:= -1;\n    result.PreviousTop := EmptyPointF;\n    result.PreviousBottom := EmptyPointF;\n    result.PreviousRightToLeft := result.RightToLeft;\n  end;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineEndIndex(AIndex: integer): integer;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.endIndex;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineParagraphIndex(AIndex: integer): integer;\nvar\n  ub: Integer;\nbegin\n  ub := GetBrokenLineInfo(AIndex)^.unbrokenLineIndex;\n  result := FAnalysis.UnbrokenLineParagraphIndex[ub];\nend;\n\nfunction TBidiTextLayout.GetBrokenLineUnbrokenIndex(AIndex: integer): integer;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.unbrokenLineIndex;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineInfo(AIndex: integer): PBrokenLineInfo;\nvar\n  minParaIndex, maxParaIndex, midParaIndex: integer;\nbegin\n  NeedLayout;\n  if (AIndex < 0) or (AIndex >= FComputedBrokenLineCount) then\n    raise ERangeError.Create('Invalid index');\n  minParaIndex := 0;\n  maxParaIndex := ParagraphCount-1;\n  result := nil;\n  repeat\n    if minParaIndex > maxParaIndex then\n      InternalRangeError else\n    if minParaIndex = maxParaIndex then\n    begin\n      result := @FParagraph[minParaIndex].brokenLines\n                  [AIndex - FParagraph[minParaIndex].firstBrokenLineIndex];\n      exit;\n    end else\n    begin\n      midParaIndex := (minParaIndex + maxParaIndex + 1) shr 1;\n      if AIndex < FParagraph[midParaIndex].firstBrokenLineIndex then\n        maxParaIndex := midParaIndex-1\n      else\n        minParaIndex := midParaIndex;\n    end;\n  until false;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineRectF(AIndex: integer): TRectF;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.rectF;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineRightToLeft(AIndex: integer): boolean;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.IsRightToLeft;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineStartCaret(AIndex: integer): TBidiCaretPos;\nbegin\n  result := GetBrokenLineUntransformedStartCaret(AIndex);\n  result.Transform(Matrix);\nend;\n\nfunction TBidiTextLayout.GetBrokenLineUntransformedStartCaret(AIndex: integer): TBidiCaretPos;\nbegin\n  NeedLayout;\n  with GetBrokenLineInfo(AIndex)^ do\n  begin\n    result.Top.y := rectF.Top;\n    if BrokenLineRightToLeft[AIndex] then\n      result.Top.x := rectF.Right\n    else\n      result.Top.x := rectF.Left;\n    result.Bottom.y := rectF.Bottom;\n    result.Bottom.x := result.Top.x;\n    result.RightToLeft := IsRightToLeft;\n    result.PartIndex:= -1;\n    result.PreviousTop := EmptyPointF;\n    result.PreviousBottom := EmptyPointF;\n    result.PreviousRightToLeft := result.RightToLeft;\n  end;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineStartIndex(AIndex: integer): integer;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.startIndex;\nend;\n\nfunction TBidiTextLayout.GetBrokenLineUsedWidth(AIndex: integer): single;\nbegin\n  result := GetBrokenLineInfo(AIndex)^.usedWidth;\nend;\n\nfunction TBidiTextLayout.GetCharCount: integer;\nbegin\n  result := FAnalysis.CharCount;\nend;\n\nfunction TBidiTextLayout.GetFontBidiMode: TFontBidiMode;\nbegin\n  result := FAnalysis.BidiMode;\nend;\n\nfunction TBidiTextLayout.GetLayoutComputed: boolean;\nvar\n  i: Integer;\nbegin\n  for i := 0 to ParagraphCount-1 do\n    if not FParagraph[i].layoutComputed then exit(false);\n  result := true;\nend;\n\nfunction TBidiTextLayout.GetLineHeight: single;\nbegin\n  NeedLayout;\n  result := FLineHeight;\nend;\n\nfunction TBidiTextLayout.GetMatrix: TAffineMatrix;\nbegin\n  NeedLayout;\n  result := FMatrix;\nend;\n\nfunction TBidiTextLayout.GetMatrixInverse: TAffineMatrix;\nbegin\n  NeedLayout;\n  result := FMatrixInverse;\nend;\n\nfunction TBidiTextLayout.GetParagraphAffineBox(AIndex: integer): TAffineBox;\nbegin\n  result := Matrix*TAffineBox.AffineBox(ParagraphRectF[AIndex]);\nend;\n\nfunction TBidiTextLayout.GetParagraphAlignment(AIndex: integer): TBidiTextAlignment;\nbegin\n  //layout not needed\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then\n    raise ERangeError.Create('Invalid index');\n  result := FParagraph[AIndex].alignment;\nend;\n\nfunction TBidiTextLayout.GetParagraphCount: integer;\nbegin\n  result := FAnalysis.ParagraphCount;\nend;\n\nfunction TBidiTextLayout.GetParagraphEndBrokenLine(AIndex: integer): integer;\nbegin\n  if AIndex = ParagraphCount-1 then\n    result := BrokenLineCount\n  else\n    result := GetParagraphInfo(AIndex+1)^.firstBrokenLineIndex;\nend;\n\nfunction TBidiTextLayout.GetParagraphEndIndex(AIndex: integer): integer;\nbegin\n  result := FAnalysis.ParagraphEndIndex[AIndex];\nend;\n\nfunction TBidiTextLayout.GetParagraphEndIndexBeforeParagraphSeparator(AIndex: integer): integer;\nbegin\n  result := FAnalysis.ParagraphEndIndexBeforeParagraphSeparator[AIndex];\nend;\n\nfunction TBidiTextLayout.GetParagraphEndPart(AIndex: integer): integer;\nbegin\n  if AIndex = ParagraphCount-1 then\n    result := PartCount\n  else\n    result := GetParagraphInfo(AIndex+1)^.firstPartIndex;\nend;\n\nfunction TBidiTextLayout.GetParagraphInfo(AIndex: integer): PParagraphInfo;\nbegin\n  NeedLayout;\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n  result := @FParagraph[AIndex];\nend;\n\nfunction TBidiTextLayout.GetParagraphRectF(AIndex: integer): TRectF;\nbegin\n  result := GetParagraphInfo(AIndex)^.rectF;\nend;\n\nfunction TBidiTextLayout.GetParagraphRightToLeft(AIndex: integer): boolean;\nbegin\n  result := FAnalysis.ParagraphRightToLeft[AIndex];\nend;\n\nfunction TBidiTextLayout.GetParagraphStartBrokenLine(AIndex: integer): integer;\nbegin\n  result := GetParagraphInfo(AIndex)^.firstBrokenLineIndex;\nend;\n\nfunction TBidiTextLayout.GetParagraphStartIndex(AIndex: integer): integer;\nbegin\n  result := FAnalysis.ParagraphStartIndex[AIndex];\nend;\n\nfunction TBidiTextLayout.GetParagraphStartPart(AIndex: integer): integer;\nbegin\n  result := GetParagraphInfo(AIndex)^.firstPartIndex;\nend;\n\nfunction TBidiTextLayout.GetPartAffineBox(AIndex: integer): TAffineBox;\nbegin\n  result := Matrix*TAffineBox.AffineBox(PartRectF[AIndex]);\nend;\n\nfunction TBidiTextLayout.GetPartBrokenLineIndex(AIndex: integer): integer;\nbegin\n  result := GetPartInfo(AIndex)^.brokenLineIndex;\nend;\n\nfunction TBidiTextLayout.GetPartCount: integer;\nbegin\n  NeedLayout;\n  result := FComputedPartCount;\nend;\n\nfunction TBidiTextLayout.GetPartEnumerator(AFirstPart: integer): TPartEnumerator;\nbegin\n  result := GetPartEnumerator(AFirstPart, FComputedPartCount);\nend;\n\nfunction TBidiTextLayout.GetPartEnumerator(AFirstPart, ALastPartPlus1: integer): TPartEnumerator;\nvar\n  minParaIndex,maxParaIndex,midParaIndex: integer;\n  minBrokenIndex, maxBrokenIndex, midBrokenIndex: Integer;\nbegin\n  if (AFirstPart < 0) or (AFirstPart > FComputedPartCount) or\n     (ALastPartPlus1 < 0) or (ALastPartPlus1 > FComputedPartCount)  then\n    raise ERangeError.Create('Invalid start index');\n  minParaIndex:= 0;\n  maxParaIndex:= ParagraphCount - 1;\n  repeat\n    if minParaIndex > maxParaIndex then\n      InternalRangeError else\n    if minParaIndex = maxParaIndex then\n    with FParagraph[minParaIndex] do\n    begin\n      if brokenLineCount = 0 then\n      begin\n        result := TPartEnumerator.New(self, minParaIndex, 0, 0, ALastPartPlus1);\n        exit;\n      end;\n      minBrokenIndex := 0;\n      maxBrokenIndex := brokenLineCount-1;\n      repeat\n        if minBrokenIndex > maxBrokenIndex then\n          InternalRangeError else\n        if minBrokenIndex = maxBrokenIndex then\n        begin\n          result := TPartEnumerator.New(self, minParaIndex, minBrokenIndex,\n                      AFirstPart - brokenLines[minBrokenIndex].firstPartIndex,\n                      ALastPartPlus1);\n          exit;\n        end else\n        begin\n          midBrokenIndex := (minBrokenIndex + maxBrokenIndex + 1) shr 1;\n          if AFirstPart < brokenLines[midBrokenIndex].firstPartIndex then\n            maxBrokenIndex := midBrokenIndex-1\n          else\n            minBrokenIndex := midBrokenIndex;\n        end;\n      until false;\n    end else\n    begin\n      midParaIndex := (minParaIndex + maxParaIndex + 1) shr 1;\n      if AFirstPart < FParagraph[midParaIndex].firstPartIndex then\n        maxParaIndex := midParaIndex-1\n      else\n        minParaIndex := midParaIndex;\n    end;\n  until false;\nend;\n\n\nfunction TBidiTextLayout.GetPartInfo(AIndex: integer): PPartInfo;\nvar\n  partEnum: TPartEnumerator;\nbegin\n  partEnum := GetPartEnumerator(AIndex);\n  if not partEnum.GetNext then raise ERangeError.Create('Invalid index');\n  result := partEnum.PartInfo;\nend;\n\nfunction TBidiTextLayout.GetPartEndIndex(AIndex: integer): integer;\nbegin\n  result := GetPartInfo(AIndex)^.endIndex;\nend;\n\nfunction TBidiTextLayout.GetPartRectF(AIndex: integer): TRectF;\nbegin\n  result := GetPartInfo(AIndex)^.rectF;\nend;\n\nfunction TBidiTextLayout.GetPartRightToLeft(AIndex: integer): boolean;\nbegin\n  result := GetPartInfo(AIndex)^.IsRightToLeft;\nend;\n\nfunction TBidiTextLayout.GetPartStartIndex(AIndex: integer): integer;\nbegin\n  result := GetPartInfo(AIndex)^.startIndex;\nend;\n\nfunction TBidiTextLayout.GetText: string;\nbegin\n  result := FAnalysis.TextUTF8;\nend;\n\nfunction TBidiTextLayout.GetTotalTextHeight: single;\nbegin\n  NeedLayout;\n  result := FParagraph[ParagraphCount-1].rectF.Bottom - FParagraph[0].rectF.Top;\nend;\n\nfunction TBidiTextLayout.GetUnicodeChar(APosition0: integer): LongWord;\nbegin\n  result := FAnalysis.UnicodeChar[APosition0];\nend;\n\nfunction TBidiTextLayout.GetUsedWidth: single;\nvar\n  i: Integer;\nbegin\n  result := 0;\n  for i := 0 to BrokenLineCount-1 do\n    result := max(result, BrokenLineUsedWidth[i]);\nend;\n\nfunction TBidiTextLayout.GetUTF8Char(APosition0: integer): string4;\nbegin\n  result := FAnalysis.UTF8Char[APosition0];\nend;\n\nprocedure TBidiTextLayout.SetAvailableHeight(AValue: single);\nvar\n  i: Integer;\nbegin\n  if FAvailableHeight=AValue then Exit;\n  FAvailableHeight:=AValue;\n  for i := 0 to ParagraphCount-1 do\n    TrimParagraphLayoutVertically(i);\nend;\n\nprocedure TBidiTextLayout.SetAvailableWidth(AValue: single);\nbegin\n  if FAvailableWidth=AValue then Exit;\n  FAvailableWidth:=AValue;\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.SetFontBidiMode(AValue: TFontBidiMode);\nbegin\n  FAnalysis.BidiMode := AValue;\nend;\n\nprocedure TBidiTextLayout.SetFontRenderer(AValue: TBGRACustomFontRenderer);\nbegin\n  if FRenderer=AValue then Exit;\n  FRenderer:=AValue;\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.SetParagraphAlignment(AIndex: integer;\n  AValue: TBidiTextAlignment);\nvar\n  brokenCount: Integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n  FParagraph[AIndex].alignment := AValue;\n  InvalidateParagraphLayout(AIndex);\n  if Assigned(FOnBrokenLinesChanged) then\n  begin\n    brokenCount := FParagraph[AIndex].brokenLineCount;\n    FOnBrokenLinesChanged(self, AIndex, 0, brokenCount, brokenCount,\n      brokenCount, brokenCount);\n  end;\nend;\n\nprocedure TBidiTextLayout.SetParagraphSpacingAbove(AValue: single);\nbegin\n  if FParagraphSpacingAbove=AValue then Exit;\n  FParagraphSpacingAbove:=AValue;\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.SetParagraphSpacingBelow(AValue: single);\nbegin\n  if FParagraphSpacingBelow=AValue then Exit;\n  FParagraphSpacingBelow:=AValue;\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.SetTabSize(AValue: single);\nbegin\n  if FTabSize=AValue then Exit;\n  FTabSize:=AValue;\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.SetTopLeft(AValue: TPointF);\nbegin\n  if FTopLeft=AValue then Exit;\n  FTopLeft:=AValue;\n  if LayoutComputed then ComputeMatrix;\nend;\n\nprocedure TBidiTextLayout.ComputeMatrix;\nbegin\n  FMatrix := AffineMatrixTranslation(FTopLeft.x, FTopLeft.y)*AffineMatrixRotationDeg(-GetFontOrientation);\n  FMatrixInverse := AffineMatrixInverse(FMatrix);\nend;\n\nprocedure TBidiTextLayout.BidiModeChanged(ASender: TObject);\nbegin\n  InvalidateLayout;\nend;\n\nprocedure TBidiTextLayout.CharDeleted(ASender: TObject;\n  AParagraphIndex: integer; ACharStart, ACharCount: integer);\nvar\n  i, charEnd, j, partIndex: Integer;\n  curPart: PPartInfo;\nbegin\n  InvalidateParagraphLayout(AParagraphIndex);\n  charEnd := ACharStart + ACharCount;\n  with FParagraph[AParagraphIndex] do\n  begin\n    for j := 0 to brokenLineCount-1 do\n    with brokenLines[j] do\n    begin\n      // is broken line affected ?\n      if (startIndex < charEnd) and (endIndex > ACharStart) then\n      begin\n        for partIndex := 0 to partCount-1 do\n        begin\n          curPart := @parts[partIndex];\n          // is part affected ?\n          if (curPart^.startIndex < charEnd)\n            or (curPart^.endIndex > ACharStart) then\n          begin\n            curPart^.modified := true;\n            // is part completely deleted ?\n            if (curPart^.startIndex >= ACharStart) and\n               (curPart^.endIndex <= charEnd) then\n            begin\n              curPart^.startIndex := ACharStart;\n              curPart^.endIndex := ACharStart;\n            end else\n            begin\n              // part partially deleted\n              if curPart^.startIndex < ACharStart then\n                curPart^.endIndex := ACharStart\n              else if curPart^.endIndex > charEnd then\n              begin\n                curPart^.startIndex := charEnd - ACharCount;\n                dec(curPart^.endIndex, ACharCount);\n              end;\n            end;\n          end else\n          if curPart^.startIndex >= charEnd then // part located after deletion\n          begin\n            dec(curPart^.startIndex, ACharCount);\n            dec(curPart^.endIndex, ACharCount);\n          end;\n        end;\n        dec(endIndex, ACharCount);\n      end else\n      if startIndex >= charEnd then // broken line located after deletion\n      begin\n        dec(startIndex, ACharCount);\n        dec(endIndex, ACharCount);\n        for partIndex := 0 to partCount-1 do\n        begin\n          curPart := @parts[partIndex];\n          dec(curPart^.startIndex, ACharCount);\n          dec(curPart^.endIndex, ACharCount);\n        end;\n      end;\n    end;\n  end;\n  for i := AParagraphIndex + 1 to high(FParagraph) do\n    OffsetParagraphCharIndex(i, -ACharCount);\nend;\n\nfunction TBidiTextLayout.TextSizeBidiOverride(sUTF8: string;\n  ARightToLeft: boolean): TPointF;\nbegin\n  AddOverrideIfNecessary(sUTF8, ARightToLeft);\n  result := FRenderer.TextSizeAngleF(sUTF8, FRenderer.FontOrientation);\nend;\n\nprocedure TBidiTextLayout.ParagraphSplit(ASender: TObject;\n  AParagraphIndex: integer; ACharIndex: integer);\nvar\n  i, j, subBrokenIndex, brokenMoveCount: Integer;\n  curPara, nextPara: PParagraphInfo;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex > high(FParagraph)) then\n    raise exception.Create('Paragrah index out of bounds (0 <= '+inttostr(AParagraphIndex)+' <= '+inttostr(high(FParagraph))+')');\n\n  setlength(FParagraph, length(FParagraph)+1);\n  for i := high(FParagraph) downto AParagraphIndex+2 do\n    FParagraph[i] := FParagraph[i-1];\n\n  curPara := @FParagraph[AParagraphIndex];\n  nextPara := @FParagraph[AParagraphIndex+1];\n\n  subBrokenIndex := curPara^.brokenLineCount;\n  for j := 0 to curPara^.brokenLineCount-1 do\n    if (curPara^.brokenLines[j].startIndex <= ACharIndex) and\n       (curPara^.brokenLines[j].endIndex > ACharIndex) then\n    begin\n      subBrokenIndex := j;\n      break;\n    end else\n    if (curPara^.brokenLines[j].startIndex > ACharIndex) then\n    begin\n      subBrokenIndex := max(j-1, 0);\n      break;\n    end;\n  brokenMoveCount := curPara^.brokenLineCount - (subBrokenIndex + 1);\n  if brokenMoveCount < 0 then brokenMoveCount := 0;\n\n  nextPara^.alignment := curPara^.alignment;\n  nextPara^.layoutComputed := false;\n  nextPara^.overflow := curPara^.overflow;\n  nextPara^.rectF := EmptyRectF;\n  nextPara^.firstBrokenLineIndex:= curPara^.firstBrokenLineIndex + curPara^.brokenLineCount - brokenMoveCount;\n  if brokenMoveCount > 0 then\n    nextPara^.firstPartIndex := curPara^.brokenLines[curPara^.brokenLineCount - brokenMoveCount].firstPartIndex\n  else\n  begin\n    if curPara^.brokenLineCount > 0 then\n      with curPara^.brokenLines[curPara^.brokenLineCount - 1] do\n        nextPara^.firstPartIndex := firstPartIndex + partCount\n        else nextPara^.firstPartIndex := curPara^.firstPartIndex;\n  end;\n  nextPara^.brokenLineCount:= brokenMoveCount;\n  setlength(nextPara^.brokenLines, brokenMoveCount);\n  for j := 0 to brokenMoveCount - 1 do\n    nextPara^.brokenLines[j] := curPara^.brokenLines[curPara^.brokenLineCount - brokenMoveCount + j];\n  dec(curPara^.brokenLineCount, brokenMoveCount);\n  InternalInvalidateParagraphLayout(AParagraphIndex);\n  InternalInvalidateParagraphLayout(AParagraphIndex+1);\n  if Assigned(FOnParagraphSplit) then\n    FOnParagraphSplit(self, AParagraphIndex, subBrokenIndex, ACharIndex);\nend;\n\nprocedure TBidiTextLayout.InternalParagraphDeleted(AParagraphIndex: integer);\nvar\n  i, deltaBroken, deltaPart: Integer;\n  deltaY: Single;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= ParagraphCount) then exit;\n  deltaY := -FParagraph[AParagraphIndex].rectF.Height;\n  deltaBroken := -FParagraph[AParagraphIndex].brokenLineCount;\n  deltaPart := 0;\n  for i := 0 to FParagraph[AParagraphIndex].brokenLineCount-1 do\n    dec(deltaPart, FParagraph[AParagraphIndex].brokenLines[i].partCount);\n\n  for i := AParagraphIndex to high(FParagraph)-1 do\n  begin\n    FParagraph[i] := FParagraph[i+1];\n    OffsetParagraph(i, deltaY, deltaBroken, deltaPart);\n  end;\n  setlength(FParagraph, length(FParagraph)-1);\n  inc(FComputedBrokenLineCount, deltaBroken);\n  inc(FComputedPartCount, deltaPart);\nend;\n\nprocedure TBidiTextLayout.CharInserted(ASender: TObject;\n  AParagraphIndex: integer; ACharStart, ACharCount: integer);\nvar\n  i, j, partIndex: Integer;\nbegin\n  InvalidateParagraphLayout(AParagraphIndex);\n  with FParagraph[AParagraphIndex] do\n  begin\n    for j := 0 to brokenLineCount-1 do\n    with brokenLines[j] do\n    begin\n      // is broken line affected\n      if (ACharStart >= startIndex) and (ACharStart < endIndex) then\n      begin\n        for partIndex := 0 to partCount-1 do\n          with parts[partIndex] do\n          begin\n            // is part affected\n            if (ACharStart > startIndex) and (ACharStart < endIndex) then\n            begin\n              modified := true;\n              inc(endIndex, ACharCount);\n            end else\n            if (ACharStart <= startIndex) then // part located after insertion\n            begin\n              inc(startIndex, ACharCount);\n              inc(endIndex, ACharCount);\n            end;\n          end;\n        inc(endIndex, ACharCount);\n      end else\n      if (ACharStart <= StartIndex) then // broken line located after insertion\n      begin\n        inc(startIndex, ACharCount);\n        inc(endIndex, ACharCount);\n        for partIndex := 0 to partCount-1 do\n          with parts[partIndex] do\n          begin\n            inc(startIndex, ACharCount);\n            inc(endIndex, ACharCount);\n          end;\n      end;\n    end;\n  end;\n  for i := AParagraphIndex + 1 to high(FParagraph) do\n    OffsetParagraphCharIndex(i, ACharCount);\nend;\n\nprocedure TBidiTextLayout.AnalysisChanged(ASender: TObject;\n  AParagraphIndex: integer; ACharStart, ACharCount: integer);\nbegin\n  InvalidateParagraphLayout(AParagraphIndex);\nend;\n\nprocedure TBidiTextLayout.ParagraphMergedWithNext(ASender: TObject;\n  AParagraphIndex: integer);\nvar\n  i, mergedBrokenLineCount, prevBrokenLineCount: Integer;\n  curPara: PParagraphInfo;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= high(FParagraph)) then\n    InternalRangeError;\n  curPara := @FParagraph[AParagraphIndex];\n  prevBrokenLineCount := curPara^.brokenLineCount;\n  mergedBrokenLineCount := prevBrokenLineCount + FParagraph[AParagraphIndex+1].brokenLineCount;\n  if length(curPara^.brokenLines) < mergedBrokenLineCount then\n    setlength(curPara^.brokenLines, mergedBrokenLineCount);\n  for i := 0 to FParagraph[AParagraphIndex+1].brokenLineCount-1 do\n    curPara^.brokenLines[prevBrokenLineCount + i] :=\n      FParagraph[AParagraphIndex+1].brokenLines[i];\n  curPara^.brokenLineCount := mergedBrokenLineCount;\n  curPara^.rectF.Bottom:= FParagraph[AParagraphIndex+1].rectF.Bottom;\n  curPara^.overflow := curPara^.overflow or FParagraph[AParagraphIndex+1].overflow;\n  for i := AParagraphIndex + 1 to high(FParagraph)-1 do\n    FParagraph[i] := FParagraph[i+1];\n  setlength(FParagraph, length(FParagraph) - 1);\n  InternalInvalidateParagraphLayout(AParagraphIndex);\n  if Assigned(FOnParagraphMergedWithNext) then\n    FOnParagraphMergedWithNext(self, AParagraphIndex);\nend;\n\nprocedure TBidiTextLayout.ParagraphDeleted(ASender: TObject;\n  AParagraphIndex: integer);\nbegin\n  InternalParagraphDeleted(AParagraphIndex);\n  If Assigned(FOnParagraphDeleted) then\n    FOnParagraphDeleted(self, AParagraphIndex);\nend;\n\nfunction TBidiTextLayout.TextSizeBidiOverrideSplit(AStartIndex, AEndIndex: integer;\n  ARightToLeft: boolean; ASplitIndex: integer): TPointF;\nvar checkIndex: integer;\n  s: String;\nbegin\n  if ASplitIndex <= AStartIndex then\n  begin\n    s := FAnalysis.CopyTextUTF8(AStartIndex, AEndIndex-AStartIndex);\n    result := TextSizeBidiOverride(s, ARightToLeft);\n    result.x := 0;\n    exit;\n  end;\n\n  s := FAnalysis.CopyTextUTF8(AStartIndex, ASplitIndex-AStartIndex);\n  checkIndex := ASplitIndex-1;\n  while (checkIndex > AStartIndex) and\n    FAnalysis.BidiInfo[checkIndex].IsLigatureTransparent do dec(checkIndex);\n  if (ARightToLeft and FAnalysis.BidiInfo[checkIndex].HasLigatureLeft) or\n     (not ARightToLeft and FAnalysis.BidiInfo[checkIndex].HasLigatureRight) then\n    s := s+UnicodeCharToUTF8(UNICODE_ZERO_WIDTH_JOINER);\n  result := TextSizeBidiOverride(s, ARightToLeft);\nend;\n\nfunction TBidiTextLayout.TextFitInfoBidiOverride(sUTF8: string; AWidth: single;\n  ARightToLeft: boolean): integer;\nvar\n  over: Boolean;\n  i: Integer;\n  p, pStart, pEnd: PChar;\n  u: LongWord;\nbegin\n  if sUTF8 = '' then exit(0);\n  over := AddOverrideIfNecessary(sUTF8, ARightToLeft);\n\n  result := FRenderer.TextFitInfoF(sUTF8, AWidth);\n  if over then dec(result);\n\n  //check that position is not a combining mark\n  pEnd := @sUTF8[length(sUTF8)];\n  pStart := @sUTF8[1];\n  if over then inc(pStart, UTF8CharacterLength(pStart));\n  p := @sUTF8[1];\n  for i := 1 to result do\n  begin\n    inc(p, UTF8CharacterLength(p));\n    if p > pEnd then break;\n  end;\n  if p <= pEnd then\n  begin\n    while (result > 0) and (p > pStart) do\n    begin\n      u := UTF8CodepointToUnicode(p, UTF8CharacterLength(p));\n      if GetUnicodeBidiClassEx(u) = ubcCombiningLeftToRight then\n      begin\n        dec(p);\n        while (p >= pStart) and (p^ in[#$80..#$BF]) do dec(p);\n        dec(result);\n      end else\n        break;\n    end;\n  end;\nend;\n\nfunction TBidiTextLayout.GetFontFullHeight: single;\nbegin\n  result := FRenderer.TextSizeAngleF('Hg', FRenderer.FontOrientation).y;\nend;\n\nfunction TBidiTextLayout.GetFontBaseline: single;\nbegin\n  result := FRenderer.GetFontPixelMetric.Baseline;\nend;\n\nfunction TBidiTextLayout.GetFontOrientation: single;\nbegin\n  result := FRenderer.FontOrientation*0.1;\nend;\n\nprocedure TBidiTextLayout.TextOutBidiOverride(ADest: TBGRACustomBitmap; x, y: single; sUTF8: string;  ARightToLeft: boolean);\nbegin\n  if sUTF8 = #9 then exit;\n  AddOverrideIfNecessary(sUTF8, ARightToLeft);\n\n  if FTexture <> nil then\n    FRenderer.TextOut(ADest, x,y, sUTF8, FTexture, taLeftJustify, ARightToLeft)\n  else\n    FRenderer.TextOut(ADest, x,y, sUTF8, FColor, taLeftJustify, ARightToLeft);\nend;\n\nprocedure TBidiTextLayout.TextPathBidiOverride(ADest: IBGRAPath; x,\n  y: single; sUTF8: string; ARightToLeft: boolean);\nbegin\n  if sUTF8 = #9 then exit;\n  AddOverrideIfNecessary(sUTF8, ARightToLeft);\n\n  FRenderer.CopyTextPathTo(ADest, x,y, sUTF8, taLeftJustify, ARightToLeft)\nend;\n\nfunction TBidiTextLayout.AddOverrideIfNecessary(var sUTF8: string;\n  ARightToLeft: boolean): boolean;\nvar\n  p: PChar;\n  pEnd: Pointer;\n  add, hasStrong: boolean;\n  charLen: Integer;\n  u: LongWord;\n  curBidi: TUnicodeBidiClass;\n  isSpacing: boolean;\nbegin\n  if sUTF8 = '' then exit(false);\n  isSpacing:= true;\n  p := @sUTF8[1];\n  pEnd := p + length(sUTF8);\n  add := false;\n  hasStrong := false;\n  while p < pEnd do\n  begin\n    charLen := UTF8CharacterLength(p);\n    if (charLen = 0) or (p+charLen > pEnd) then break;\n    u := UTF8CodepointToUnicode(p, charLen);\n    curBidi := GetUnicodeBidiClass(u);\n    if curBidi <> ubcWhiteSpace then isSpacing:= false;\n    if curBidi in[ubcLeftToRight,ubcRightToLeft,ubcArabicLetter] then\n      hasStrong := true;\n    if (curBidi = ubcLeftToRight) and ARightToLeft then\n    begin\n      add := true;\n      break;\n    end else\n    if (curBidi in[ubcRightToLeft,ubcArabicLetter]) and not ARightToLeft then\n    begin\n      add := true;\n      break;\n    end;\n    inc(p,charLen);\n  end;\n  if not hasStrong and ARightToLeft and not isSpacing then add := true;\n  if add then\n  begin\n    if ARightToLeft then\n      sUTF8 := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_OVERRIDE)+ sUTF8\n    else\n      sUTF8 := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_OVERRIDE)+ sUTF8;\n    exit(true);\n  end\n  else exit(false);\nend;\n\nfunction TBidiTextLayout.GetTextPart(APartIndex: integer;\n  AAddOverrideIfNecessary: boolean): string;\nbegin\n  result := FAnalysis.CopyTextUTF8(PartStartIndex[APartIndex],\n    PartEndIndex[APartIndex] - PartStartIndex[APartIndex]);\n  if AAddOverrideIfNecessary then\n    AddOverrideIfNecessary(result, PartRightToLeft[APartIndex]);\nend;\n\nprocedure TBidiTextLayout.AddPart(AStartIndex, AEndIndex: integer;\n  ABidiLevel: byte; ARectF: TRectF; APosCorrection: TPointF;\n  ABrokenLineIndex: integer; ABrokenLine: PBrokenLineInfo);\nbegin\n  if ABrokenLine^.partCount >= length(ABrokenLine^.parts) then\n    setlength(ABrokenLine^.parts, length(ABrokenLine^.parts)*2+8);\n\n  with ABrokenLine^.parts[ABrokenLine^.partCount] do\n  begin\n    startIndex:= AStartIndex;\n    endIndex:= AEndIndex;\n    bidiLevel := ABidiLevel;\n    rectF := ARectF;\n    posCorrection := APosCorrection;\n    brokenLineIndex:= ABrokenLineIndex;\n    modified := false;\n  end;\n  inc(ABrokenLine^.partCount)\nend;\n\nfunction TBidiTextLayout.GetSameLevelString(startIndex, endIndex: integer): string;\nvar\n  nonDiscardedCount: integer;\nbegin\n  result := GetSameLevelString(startIndex,endIndex,nonDiscardedCount);\nend;\n\nfunction TBidiTextLayout.GetSameLevelString(startIndex, endIndex: integer; out nonDiscardedCount: integer): string;\nbegin\n  result := FAnalysis.CopyTextUTF8DiscardChars(startIndex, endIndex, nonDiscardedCount);\nend;\n\nfunction TBidiTextLayout.ComputeBidiTree(AMaxWidth: single; startIndex,\n  endIndex: integer; bidiLevel: byte): TBidiTree;\nvar\n  data: TBidiLayoutTreeData;\nbegin\n  data.MaxWidth := AMaxWidth;\n  data.Layout := self;\n  result := FAnalysis.CreateBidiTree(TBidiLayoutTree, @data, startIndex, endIndex, bidiLevel);\nend;\n\nconstructor TBidiTextLayout.Create(AFontRenderer: TBGRACustomFontRenderer; sUTF8: string);\nbegin\n  Init(sUTF8, fbmAuto);\n  FRenderer := AFontRenderer;\nend;\n\nconstructor TBidiTextLayout.Create(AFontRenderer: TBGRACustomFontRenderer; sUTF8: string; ARightToLeft: boolean);\nbegin\n  if ARightToLeft then\n    Init(sUTF8, fbmRightToLeft)\n  else\n    Init(sUTF8, fbmLeftToRight);\n  FRenderer := AFontRenderer;\nend;\n\nconstructor TBidiTextLayout.Create(AFontRenderer: TBGRACustomFontRenderer;\n  sUTF8: string; AFontBidiMode: TFontBidiMode);\nbegin\n  Init(sUTF8, AFontBidiMode);\n  FRenderer := AFontRenderer;\nend;\n\ndestructor TBidiTextLayout.Destroy;\nbegin\n  FAnalysis.Free;\n  inherited Destroy;\nend;\n\nprocedure TBidiTextLayout.SetLayout(ARect: TRectF);\nbegin\n  TopLeft := ARect.TopLeft;\n  AvailableWidth:= ARect.Width;\n  AvailableHeight:= ARect.Height;\nend;\n\nprocedure TBidiTextLayout.InvalidateLayout;\nvar\n  i: Integer;\nbegin\n  for i := 0 to ParagraphCount-1 do\n    InvalidateParagraphLayout(i);\nend;\n\nprocedure TBidiTextLayout.ComputeLayoutIfNeeded;\nbegin\n  if not LayoutComputed then ComputeLayout;\nend;\n\nprocedure TBidiTextLayout.InvalidateParagraphLayout(AParagraphIndex: integer);\nbegin\n  InternalInvalidateParagraphLayout(AParagraphIndex);\n  if Assigned(FOnParagraphChanged) then\n    FOnParagraphChanged(self, AParagraphIndex);\nend;\n\nprocedure TBidiTextLayout.InternalInvalidateParagraphLayout(\n  AParagraphIndex: integer);\nbegin\n  if (AParagraphIndex >= 0) and (AParagraphIndex <= high(FParagraph)) then\n    FParagraph[AParagraphIndex].layoutComputed := false;\nend;\n\nprocedure TBidiTextLayout.OffsetParagraph(AParagraphIndex: integer;\n  ADeltaY: single; ADeltaBroken, ADeltaPart: integer);\nvar subBrokenIndex: integer;\n  curBroken: PBrokenLineInfo;\n  partIndex: integer;\nbegin\n  if (ADeltaY = 0) and (ADeltaBroken = 0) and (ADeltaPart = 0) then exit;\n  with FParagraph[AParagraphIndex] do\n  begin\n    rectF.Offset(0, ADeltaY);\n    inc(firstBrokenLineIndex, ADeltaBroken);\n    inc(firstPartIndex, ADeltaPart);\n    for subBrokenIndex := 0 to brokenLineCount-1 do\n    begin\n      curBroken := @brokenLines[subBrokenIndex];\n      curBroken^.rectF.Offset(0, ADeltaY);\n      inc(curBroken^.firstPartIndex, ADeltaPart);\n      for partIndex := 0 to curBroken^.partCount-1 do\n      with curBroken^.parts[partIndex] do\n      begin\n        inc(brokenLineIndex, ADeltaBroken);\n        rectF.Offset(0, ADeltaY);\n      end;\n    end;\n    if ADeltaY <> 0 then\n      TrimParagraphLayoutVertically(AParagraphIndex);\n  end;\nend;\n\nprocedure TBidiTextLayout.OffsetParagraphCharIndex(AParagraphIndex: integer;\n  ADeltaChar: integer);\nvar\n  j, k: Integer;\nbegin\n  with FParagraph[AParagraphIndex] do\n  begin\n    for j := 0 to brokenLineCount-1 do\n    with brokenLines[j] do\n    begin\n      inc(startIndex, ADeltaChar);\n      inc(endIndex, ADeltaChar);\n      for k := 0 to partCount-1 do\n      begin\n        inc(parts[k].startIndex, ADeltaChar);\n        inc(parts[k].endIndex, ADeltaChar);\n      end;\n    end;\n  end;\nend;\n\nprocedure TBidiTextLayout.TrimParagraphLayoutVertically(AParagraphIndex: integer);\nvar\n  subBrokenIndex, nextDeltaBroken, nextDeltaPart, i: Integer;\nbegin\n  if (AvailableHeight = EmptySingle) or (AParagraphIndex < 0) or\n    (AParagraphIndex > high(FParagraph)) then exit;\n  with FParagraph[AParagraphIndex] do\n  begin\n    if not layoutComputed then exit;\n    if overflow and (rectF.Bottom < AvailableHeight) then\n    begin\n      layoutComputed:= false;\n      if Assigned(FOnParagraphVerticalTrimChanged) then\n        FOnParagraphVerticalTrimChanged(self, AParagraphIndex);\n    end else\n    if (rectF.Bottom > AvailableHeight) then\n    begin\n      for subBrokenIndex := 0 to brokenLineCount-1 do\n      begin\n        //there must be at least one broken line in the text\n        if (AParagraphIndex = 0) and (subBrokenIndex = 0) then continue;\n        if brokenLines[subBrokenIndex].rectF.Top >= AvailableHeight then\n        begin\n          nextDeltaBroken := 0;\n          nextDeltaPart := 0;\n          for i := subBrokenIndex to brokenLineCount-1 do\n          begin\n            dec(nextDeltaBroken);\n            dec(nextDeltaPart, brokenLines[i].partCount);\n          end;\n          brokenLineCount := subBrokenIndex;\n          for i := AParagraphIndex+1 to ParagraphCount-1 do\n            OffsetParagraph(i, 0, nextDeltaBroken, nextDeltaPart);\n          inc(FComputedPartCount, nextDeltaPart);\n          inc(FComputedBrokenLineCount, nextDeltaBroken);\n          overflow := true;\n          if subBrokenIndex > 0 then\n            rectF.Bottom := brokenLines[subBrokenIndex-1].rectF.Bottom + ParagraphSpacingBelow*FLineHeight\n            else rectF.Bottom := rectF.Top + ParagraphSpacingAbove*FLineHeight;\n          if Assigned(FOnParagraphVerticalTrimChanged) then\n            FOnParagraphVerticalTrimChanged(self, AParagraphIndex);\n          break;\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBidiTextLayout.DrawText(ADest: TBGRACustomBitmap);\nbegin\n  DrawText(ADest, BGRABlack);\nend;\n\nprocedure TBidiTextLayout.DrawText(ADest: TBGRACustomBitmap; AColor: TBGRAPixel);\nbegin\n  FColor := AColor;\n  InternalDrawText(ADest);\nend;\n\nprocedure TBidiTextLayout.DrawText(ADest: TBGRACustomBitmap;\n  ATexture: IBGRAScanner);\nbegin\n  FColor := BGRAWhite;\n  FTexture := ATexture;\n  InternalDrawText(ADest);\n  FTexture := nil;\nend;\n\nprocedure TBidiTextLayout.PathText(ADest: IBGRAPath);\nbegin\n  InternalPathText(ADest);\nend;\n\nprocedure TBidiTextLayout.PathText(ADest: IBGRAPath; AClipRect: TRect);\nbegin\n  InternalPathText(ADest, AClipRect);\nend;\n\nprocedure TBidiTextLayout.DrawTextParts(ADest: TBGRACustomBitmap; AFirstPart,\n  ALastPartPlus1: integer);\nbegin\n  DrawTextParts(ADest, BGRABlack, AFirstPart, ALastPartPlus1);\nend;\n\nprocedure TBidiTextLayout.DrawTextParts(ADest: TBGRACustomBitmap;\n  AColor: TBGRAPixel; AFirstPart, ALastPartPlus1: integer);\nbegin\n  FColor := AColor;\n  InternalDrawTextParts(ADest, AFirstPart, ALastPartPlus1);\nend;\n\nprocedure TBidiTextLayout.DrawTextParts(ADest: TBGRACustomBitmap;\n  ATexture: IBGRAScanner; AFirstPart, ALastPartPlus1: integer);\nbegin\n  FColor := BGRAWhite;\n  FTexture := ATexture;\n  InternalDrawTextParts(ADest, AFirstPart, ALastPartPlus1);\n  FTexture := nil;\nend;\n\nprocedure TBidiTextLayout.PathTextParts(ADest: IBGRAPath; AFirstPart,\n  ALastPartPlus1: integer);\nbegin\n  InternalPathTextParts(ADest, AFirstPart, ALastPartPlus1);\nend;\n\nprocedure TBidiTextLayout.PathTextParts(ADest: IBGRAPath; AClipRect: TRect;\n  AFirstPart, ALastPartPlus1: integer);\nbegin\n  InternalPathTextParts(ADest, AClipRect, AFirstPart, ALastPartPlus1);\nend;\n\nprocedure TBidiTextLayout.DrawParagraphs(ADest: TBGRACustomBitmap;\n  AFirstPara, ALastParaPlus1: integer);\nbegin\n  if ALastParaPlus1 <= AFirstPara then exit;\n  DrawTextParts(ADest, ParagraphStartPart[AFirstPara], ParagraphEndPart[ALastParaPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.DrawParagraphs(ADest: TBGRACustomBitmap;\n  AColor: TBGRAPixel; AFirstPara, ALastParaPlus1: integer);\nbegin\n  if ALastParaPlus1 <= AFirstPara then exit;\n  DrawTextParts(ADest, AColor, ParagraphStartPart[AFirstPara], ParagraphEndPart[ALastParaPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.DrawParagraphs(ADest: TBGRACustomBitmap;\n  ATexture: IBGRAScanner; AFirstPara, ALastParaPlus1: integer);\nbegin\n  if ALastParaPlus1 <= AFirstPara then exit;\n  DrawTextParts(ADest, ATexture, ParagraphStartPart[AFirstPara], ParagraphEndPart[ALastParaPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.PathParagraphs(ADest: IBGRAPath; AFirstPara,\n  ALastParaPlus1: integer);\nbegin\n  if ALastParaPlus1 <= AFirstPara then exit;\n  PathTextParts(ADest, ParagraphStartPart[AFirstPara], ParagraphEndPart[ALastParaPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.PathParagraphs(ADest: IBGRAPath; AClipRect: TRect;\n  AFirstPara, ALastParaPlus1: integer);\nbegin\n  if ALastParaPlus1 <= AFirstPara then exit;\n  PathTextParts(ADest, AClipRect, ParagraphStartPart[AFirstPara], ParagraphEndPart[ALastParaPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.DrawBrokenLines(ADest: TBGRACustomBitmap;\n  AFirstBroken, ALastBrokenPlus1: integer);\nbegin\n  if ALastBrokenPlus1 <= AFirstBroken then exit;\n  DrawTextParts(ADest, BrokenLineStartPart[AFirstBroken], BrokenLineEndPart[ALastBrokenPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.DrawBrokenLines(ADest: TBGRACustomBitmap;\n  AColor: TBGRAPixel; AFirstBroken, ALastBrokenPlus1: integer);\nbegin\n  if ALastBrokenPlus1 <= AFirstBroken then exit;\n  DrawTextParts(ADest, AColor, BrokenLineStartPart[AFirstBroken], BrokenLineEndPart[ALastBrokenPlus1-1]);\n\nend;\n\nprocedure TBidiTextLayout.DrawBrokenLines(ADest: TBGRACustomBitmap;\n  ATexture: IBGRAScanner; AFirstBroken, ALastBrokenPlus1: integer);\nbegin\n  if ALastBrokenPlus1 <= AFirstBroken then exit;\n  DrawTextParts(ADest, ATexture, BrokenLineStartPart[AFirstBroken], BrokenLineEndPart[ALastBrokenPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.PathBrokenLines(ADest: IBGRAPath; AFirstBroken,\n  ALastBrokenPlus1: integer);\nbegin\n  if ALastBrokenPlus1 <= AFirstBroken then exit;\n  PathTextParts(ADest, BrokenLineStartPart[AFirstBroken], BrokenLineEndPart[ALastBrokenPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.PathBrokenLines(ADest: IBGRAPath; AClipRect: TRect;\n  AFirstBroken, ALastBrokenPlus1: integer);\nbegin\n  if ALastBrokenPlus1 <= AFirstBroken then exit;\n  PathTextParts(ADest, AClipRect, BrokenLineStartPart[AFirstBroken], BrokenLineEndPart[ALastBrokenPlus1-1]);\nend;\n\nprocedure TBidiTextLayout.ComputeLayout;\nvar curLineHeight, baseLine, tabPixelSize: single;\n  paraIndex, ubIndex, i,j, nextTabIndex, splitIndex: Integer;\n  curPara: PParagraphInfo;\n  brokenIndex, partIndex: integer;\n  curBroken: PBrokenLineInfo;\n  lineStart, subStart, lineEnd: integer;\n  paraSpacingAbove, paraSpacingBelow, correctedBaseLine: single;\n  paraRTL, needNewLine: boolean;\n  partStr, remainStr: string;\n  pos: TPointF;\n  curBidiPos,endBidiPos,nextTabBidiPos, availWidth0, remainWidth: single;\n  tabSectionStart, tabSectionCount: integer;\n  tabSection: array of record\n                startIndex, endIndex: integer;\n                bidiPos: single;\n                tree: TBidiLayoutTree;\n              end;\n  alignment: TAlignment;\n  paraBidiLevel: Byte;\n  r: TRectF;\n  u: LongWord;\n  nextTree: TBidiLayoutTree;\n  oldBrokenLines: array of TBrokenLineInfo;\n  oldBrokenLineCount: integer;\n\n  procedure AddTabSection(startIndex,endIndex: integer; tree: TBidiLayoutTree);\n  begin\n    if tabSectionCount >= length(tabSection) then setlength(tabSection, length(tabSection)*2+4);\n    tabSection[tabSectionCount].startIndex:= startIndex;\n    tabSection[tabSectionCount].endIndex:= endIndex;\n    tabSection[tabSectionCount].bidiPos:= curBidiPos;\n    tabSection[tabSectionCount].tree := tree;\n    inc(tabSectionCount);\n  end;\n\n  procedure StartBrokenLine(ACharStart: integer; ACharEnd: integer; ABidiLevel: byte; AWidth, AHeight: single);\n  begin\n    if curPara^.brokenLineCount >= length(curPara^.brokenLines) then\n      setlength(curPara^.brokenLines, length(curPara^.brokenLines)*2+4);\n\n    curBroken := @curPara^.brokenLines[curPara^.brokenLineCount];\n    curBroken^.unbrokenLineIndex := ubIndex;\n    curBroken^.startIndex:= ACharStart;\n    curBroken^.endIndex:= ACharEnd;\n    curBroken^.bidiLevel := ABidiLevel;\n    curBroken^.firstPartIndex:= partIndex+1;\n    curBroken^.usedWidth:= AWidth;\n\n    if FAvailableWidth <> EmptySingle then\n      curBroken^.rectF := RectF(0,pos.y,FAvailableWidth,pos.y+AHeight)\n    else\n    begin\n      case alignment of\n      taRightJustify: curBroken^.rectF := RectF(-AWidth,pos.y,0,pos.y+AHeight);\n      taCenter: curBroken^.rectF := RectF(-AWidth*0.5,pos.y,AWidth*0.5,pos.y+AHeight);\n      else {taLeftJustify}\n        curBroken^.rectF := RectF(0,pos.y,AWidth,pos.y+AHeight);\n      end;\n    end;\n\n    if FAvailableWidth = EmptySingle then\n    begin\n      if FParagraph[paraIndex].rectF.Left = EmptySingle then\n      begin\n        FParagraph[paraIndex].rectF.Left := curBroken^.rectF.left;\n        FParagraph[paraIndex].rectF.Right := curBroken^.rectF.Right;\n      end else\n      begin\n        if FParagraph[paraIndex].rectF.Left < curBroken^.rectF.left then\n          FParagraph[paraIndex].rectF.Left := curBroken^.rectF.left;\n        if FParagraph[paraIndex].rectF.Right > curBroken^.rectF.Right then\n          FParagraph[paraIndex].rectF.Right := curBroken^.rectF.Right;\n      end;\n    end;\n\n    inc(curPara^.brokenLineCount);\n    inc(brokenIndex);\n  end;\n\n  procedure DoneBrokenLine;\n  begin\n    inc(partIndex, curBroken^.partCount);\n    IncF(pos.y, curBroken^.rectF.Height);\n  end;\n\n  procedure ClearTabSections;\n  var\n    i: Integer;\n  begin\n    tabSectionCount := 0;\n    for i := 0 to high(tabSection) do\n      FreeAndNil(tabSection[i].tree);\n  end;\n\n  procedure UpdateQuickSearch;\n  begin\n    FComputedPartCount:= partIndex + 1;\n    FComputedBrokenLineCount:= brokenIndex + 1;\n  end;\n\n  procedure Finished;\n  begin\n    ClearTabSections;\n    UpdateQuickSearch;\n    CheckTextLayout;\n  end;\n\n  procedure StartParagraph(AParagraphIndex: integer);\n  begin\n    curPara := @FParagraph[AParagraphIndex];\n    curPara^.overflow := false;\n    curPara^.firstBrokenLineIndex:= brokenIndex + 1;\n    curPara^.firstPartIndex := partIndex + 1;\n\n    oldBrokenLineCount:= curPara^.brokenLineCount;\n    oldBrokenLines:= curPara^.brokenLines;\n    curPara^.brokenLines := nil;\n    curPara^.brokenLineCount:= 0;\n\n    curPara^.rectF.Top := pos.y;\n    curPara^.rectF.Bottom := pos.y;\n    if FAvailableWidth <> EmptySingle then\n    begin\n      curPara^.rectF.Left := 0;\n      curPara^.rectF.Right := FAvailableWidth;\n    end else\n    begin\n      curPara^.rectF.Left := EmptySingle;\n      curPara^.rectF.Right := EmptySingle;\n    end;\n    paraRTL := ParagraphRightToLeft[AParagraphIndex];\n    if FAvailableWidth <> EmptySingle then\n      alignment := BidiTextAlignmentToAlignment(curPara^.alignment, paraRTL)\n    else\n      alignment := taLeftJustify;\n  end;\n\n  procedure DoneParagraph(AParagraphIndex: integer);\n  var\n    firstBrokenIndex, lastBrokenIndexFromEnd: Integer;\n    newBroken, oldBroken: PBrokenLineInfo;\n\n    function BrokenDifferent: boolean;\n    var\n      i: integer;\n      oldPart, newPart: PPartInfo;\n    begin\n      if (oldBroken^.startIndex <> newBroken^.startIndex) or\n         (oldBroken^.endIndex <> newBroken^.endIndex) or\n         (oldBroken^.bidiLevel <> newBroken^.bidiLevel) or\n         (oldBroken^.partCount <> newBroken^.partCount) then exit(true);\n      for i := 0 to oldBroken^.partCount-1 do\n      begin\n        oldPart := @oldBroken^.parts[i];\n        newPart := @newBroken^.parts[i];\n        if oldPart^.modified then exit(true);\n        if (oldPart^.startIndex <> newPart^.startIndex) or\n           (oldPart^.endIndex <> newPart^.endIndex) or\n           (oldPart^.bidiLevel <> newPart^.bidiLevel) then exit(true);\n      end;\n      result := false;\n    end;\n  begin\n    curPara^.layoutComputed := true;\n    if Assigned(FOnBrokenLinesChanged) then\n    begin\n      firstBrokenIndex := 0;\n      while (firstBrokenIndex < oldBrokenLineCount) and\n        (firstBrokenIndex < curPara^.brokenLineCount) do\n      begin\n        oldBroken := @oldBrokenLines[firstBrokenIndex];\n        newBroken := @curPara^.brokenLines[firstBrokenIndex];\n        if BrokenDifferent then break;\n        inc(firstBrokenIndex);\n      end;\n      lastBrokenIndexFromEnd := 0;\n      while (oldBrokenLineCount - lastBrokenIndexFromEnd - 1 > firstBrokenIndex) and\n            (curPara^.brokenLineCount - lastBrokenIndexFromEnd - 1 > firstBrokenIndex) do\n      begin\n        oldBroken := @oldBrokenLines[oldBrokenLineCount - lastBrokenIndexFromEnd - 1];\n        newBroken := @curPara^.brokenLines[curPara^.brokenLineCount - lastBrokenIndexFromEnd - 1];\n        if BrokenDifferent then break;\n        inc(lastBrokenIndexFromEnd);\n      end;\n      if Assigned(FOnBrokenLinesChanged) and\n        ((curPara^.brokenLineCount <> oldBrokenLineCount) or\n        (firstBrokenIndex < oldBrokenLineCount)) then\n      begin\n        FOnBrokenLinesChanged(self, AParagraphIndex, firstBrokenIndex,\n          oldBrokenLineCount - lastBrokenIndexFromEnd - firstBrokenIndex,\n          curPara^.brokenLineCount - lastBrokenIndexFromEnd - firstBrokenIndex,\n          oldBrokenLineCount, curPara^.brokenLineCount);\n      end;\n    end;\n  end;\n\nbegin\n  FLineHeight:= GetFontFullHeight;\n  baseLine := GetFontBaseline;\n  ComputeMatrix;\n\n  paraSpacingAbove := ParagraphSpacingAbove * FLineHeight;\n  paraSpacingBelow := ParagraphSpacingBelow * FLineHeight;\n  if FAvailableWidth <> EmptySingle then\n    availWidth0 := FAvailableWidth\n  else\n    availWidth0:= 0;\n\n  tabPixelSize := TabSize*TextSizeBidiOverride(' ',False).x;\n  tabSection := nil;\n  pos := PointF(0,0);\n  brokenIndex := -1;\n  curBroken:= nil;\n  partIndex := -1;\n\n  for paraIndex := 0 to ParagraphCount-1 do\n  begin\n    curPara := @FParagraph[paraIndex];\n    if curPara^.layoutComputed then\n    begin\n      OffsetParagraph(paraIndex, pos.y - curPara^.rectF.Top,\n                          brokenIndex+1 - curPara^.firstBrokenLineIndex,\n                          partIndex+1 - curPara^.firstPartIndex);\n      if curPara^.layoutComputed then\n      begin\n        pos.y := FParagraph[paraIndex].rectF.Bottom;\n        inc(brokenIndex, curPara^.brokenLineCount);\n        for i := 0 to curPara^.brokenLineCount-1 do\n          inc(partIndex, curPara^.brokenLines[i].partCount);\n        continue;\n      end;\n    end;\n\n    StartParagraph(paraIndex);\n    IncF(pos.y, paraSpacingAbove);\n    curPara^.rectF.Bottom:= pos.y;\n\n    for ubIndex := FAnalysis.ParagraphFirstUnbrokenLine[paraIndex] to FAnalysis.ParagraphLastUnbrokenLinePlusOne[paraIndex]-1 do\n    begin\n      if (FAvailableHeight <> EmptySingle) and (pos.y >= FAvailableHeight) and\n         (ubIndex <> 0) {there must be at least one broken line} then\n      begin\n        curPara^.overflow:= true;\n        curPara^.rectF.Bottom := pos.y;\n        DoneParagraph(paraIndex);\n        for i := paraIndex+1 to high(FParagraph) do\n        begin\n          StartParagraph(i);\n          curPara^.overflow:= true;\n          DoneParagraph(i);\n        end;\n        Finished;\n        exit;\n      end;\n\n      lineStart := FAnalysis.UnbrokenLineStartIndex[ubIndex];\n      lineEnd := FAnalysis.UnbrokenLineEndIndex[ubIndex];\n      if lineStart < lineEnd then\n        paraBidiLevel := FAnalysis.BidiInfo[lineStart].ParagraphBidiLevel\n      else\n        paraBidiLevel := 0;\n\n      if lineEnd > lineStart then\n      begin\n        u := UnicodeChar[lineEnd-1];\n        case u of\n        UNICODE_LINE_SEPARATOR, UNICODE_PARAGRAPH_SEPARATOR, UNICODE_NEXT_LINE: dec(lineEnd);\n        13,10:\n          begin\n            dec(lineEnd);\n            if lineEnd > lineStart then\n            begin\n              u := UnicodeChar[lineEnd-1];\n              if (u = 13) or (u = 10) then dec(lineEnd);\n            end;\n          end;\n        end;\n      end;\n\n      subStart := lineStart;\n\n      //empty paragraph\n      if subStart = lineEnd then\n      begin\n        StartBrokenLine(subStart, lineEnd, paraBidiLevel, 0, FLineHeight);\n\n        case alignment of\n        taRightJustify: pos.x := availWidth0;\n        taCenter: pos.x := availWidth0*0.5;\n        else {taLeftJustify}\n          pos.x := 0;\n        end;\n        AddPart(subStart, lineEnd, paraBidiLevel,\n                RectF(pos.x, curBroken^.rectF.Top,\n                      pos.x, curBroken^.rectF.Bottom),\n                PointF(0,0), brokenIndex, curBroken);\n\n        DoneBrokenLine;\n      end else\n      //break lines\n      while subStart < lineEnd do\n      begin\n        //split into sections according to tabs\n        ClearTabSections;\n        curBidiPos := 0;\n        tabSectionStart := subStart;\n        tabSectionCount := 0;\n        curLineHeight := FLineHeight;\n\n        while tabSectionStart < lineEnd do\n        begin\n          needNewLine := false;\n          while (tabSectionStart < lineEnd) and (FAnalysis.UnicodeChar[tabSectionStart] = 9) do\n          begin\n            if tabPixelSize = 0 then inc(tabSectionStart)\n            else\n            begin\n              nextTabBidiPos := tabPixelSize* (floor(curBidiPos / tabPixelSize + 1e-6)+1);\n              if (FAvailableWidth = EmptySingle) or (nextTabBidiPos <= FAvailableWidth) or (tabSectionStart = subStart) then\n              begin\n                AddTabSection(tabSectionStart, tabSectionStart+1, nil);\n                inc(tabSectionStart);\n                curBidiPos := nextTabBidiPos;\n              end else\n              begin\n                //if tab is last char then go to the end of the line\n                if tabSectionStart = lineEnd-1 then\n                begin\n                  AddTabSection(tabSectionStart, lineEnd, nil);\n                  inc(tabSectionStart);\n                  curBidiPos := FAvailableWidth;\n                  needNewLine := true;\n                  break;\n                end\n                else //otherwise a new line is needed before the tab\n                begin\n                  needNewLine := true;\n                  break;\n                end;\n              end;\n            end;\n          end;\n          if needNewLine then\n          begin\n            splitIndex:= tabSectionStart;\n            break;\n          end;\n\n          nextTabIndex := tabSectionStart;\n          while (nextTabIndex < lineEnd) and (FAnalysis.UnicodeChar[nextTabIndex] <> 9) do inc(nextTabIndex);\n          if FAvailableWidth = EmptySingle then\n            remainWidth := EmptySingle\n          else\n            remainWidth := FAvailableWidth - curBidiPos;\n          nextTree := TBidiLayoutTree(ComputeBidiTree(remainWidth, tabSectionStart, nextTabIndex, paraBidiLevel));\n          splitIndex := nextTree.EndIndex;\n\n          AddTabSection(tabSectionStart, splitIndex, nextTree);\n\n          if splitIndex < nextTabIndex then\n          begin\n            if (tabSectionCount = 1) and (splitIndex = tabSectionStart) then\n            begin\n              inc(splitIndex);\n              while (splitIndex < nextTabIndex) and not FAnalysis.BidiInfo[splitIndex].IsMulticharStart do inc(splitIndex);\n            end;\n            partStr := FAnalysis.CopyTextUTF8(tabSectionStart, splitIndex-tabSectionStart);\n            remainStr := FAnalysis.CopyTextUTF8(splitIndex, nextTabIndex-splitIndex);\n            if tabSectionCount > 1 then partStr := ' '+partStr;\n            if Assigned(FWordBreakHandler) then\n              FWordBreakHandler(partStr, remainStr)\n            else\n              BGRADefaultWordBreakHandler(partStr, remainStr);\n            if tabSectionCount > 1 then delete(partStr,1,1);\n\n            splitIndex:= tabSectionStart + UTF8Length(partStr);\n\n            //section is deleted\n            if splitIndex = tabSectionStart then\n            begin\n              dec(tabSectionCount);\n              //tabSectionStart stay the same\n            end\n            else\n            begin\n              //section is extended\n              if splitIndex > nextTree.EndIndex then\n              begin\n                nextTree := TBidiLayoutTree(ComputeBidiTree(EmptySingle, tabSectionStart, splitIndex, paraBidiLevel));\n                tabSection[tabSectionCount-1].tree.Free;\n                tabSection[tabSectionCount-1].tree := nextTree;\n              end\n              else\n              begin //otherwise the section is split\n                nextTree.Shorten(splitIndex);\n                tabSection[tabSectionCount-1].endIndex:= splitIndex;\n              end;\n\n              IncF(curBidiPos, nextTree.Width);\n              if nextTree.Height > curLineHeight then curLineHeight := nextTree.Height;\n\n              tabSectionStart := splitIndex;\n              while (tabSectionStart < nextTabIndex) and IsUnicodeSpace(FAnalysis.UnicodeChar[tabSectionStart]) do inc(tabSectionStart);\n            end;\n            break;\n          end else\n          begin\n            IncF(curBidiPos, nextTree.Width);\n            if nextTree.Height > curLineHeight then curLineHeight := nextTree.Height;\n            tabSectionStart := splitIndex;\n          end;\n        end;\n\n        // add broken line info\n        StartBrokenLine(subStart, splitIndex, paraBidiLevel, curBidiPos, curLineHeight);\n\n        subStart := tabSectionStart;\n\n        case alignment of\n        taRightJustify:\n          if paraRTL then\n            pos.x := availWidth0\n          else\n            pos.x := availWidth0 - curBidiPos;\n        taCenter:\n          if paraRTL then\n            pos.x := (availWidth0 + curBidiPos)*0.5\n          else\n            pos.x := (availWidth0 - curBidiPos)*0.5;\n        else {taLeftJustify}\n          if paraRTL then\n            pos.x := curBidiPos\n          else\n            pos.x := 0;\n        end;\n\n        if FLineHeight <> 0 then\n          correctedBaseLine := baseLine*curLineHeight/FLineHeight\n        else\n          correctedBaseLine:= 0;\n\n        for j := 0 to tabSectionCount-1 do\n        begin\n          if not Assigned(tabSection[j].tree) then\n          begin\n            if j = tabSectionCount-1 then\n              endBidiPos:= curBidiPos\n            else\n              endBidiPos:= tabSection[j+1].bidiPos;\n\n            if paraRTL then\n              r := RectF(pos.x-endBidiPos, pos.y, pos.x-tabSection[j].bidiPos, pos.y+curLineHeight)\n            else\n              r := RectF(pos.x+tabSection[j].bidiPos, pos.y, pos.x+endBidiPos, pos.y+curLineHeight);\n\n            AddPart(tabSection[j].startIndex, tabSection[j].endIndex, paraBidiLevel, r, PointF(0,0), brokenIndex, curBroken);\n          end\n          else\n          begin\n            if paraRTL then\n              AddPartsFromTree(pos - PointF(tabSection[j].bidiPos,0), tabSection[j].tree, curLineHeight, correctedBaseLine, brokenIndex, curBroken)\n            else\n              AddPartsFromTree(pos + PointF(tabSection[j].bidiPos,0), tabSection[j].tree, curLineHeight, correctedBaseLine, brokenIndex, curBroken)\n          end;\n        end;\n\n        DoneBrokenLine;\n        if (FAvailableHeight <> EmptySingle) and (pos.y >= FAvailableHeight) then\n        begin\n          curPara^.overflow := true;\n          break;\n        end;\n      end;\n    end;\n    IncF(pos.y, paraSpacingBelow);\n    curPara^.rectF.Bottom := pos.y;\n    DoneParagraph(paraIndex);\n  end;\n  Finished;\nend;\n\nprocedure TBidiTextLayout.CheckTextLayout;\nvar\n  i, charIndex, partIndex, j, k, curBrokenLineEndIndex: Integer;\nbegin\n  charIndex := 0;\n  partIndex := 0;\n  if length(FParagraph) <> ParagraphCount then\n    raise exception.Create('Number of paragraph mismatch ' + inttostr(length(FParagraph)) +\n    '/' + inttostr(ParagraphCount));\n  for i := 0 to ParagraphCount-1 do\n  begin\n    if not FParagraph[i].layoutComputed then\n      raise exception.Create('Layout not computed for paragraph ' + inttostr(i));\n    if i > 0 then\n    begin\n      if FParagraph[i].firstBrokenLineIndex < FParagraph[i-1].firstBrokenLineIndex then\n        raise exception.Create('Broken index is not ascending');\n      if FParagraph[i].firstBrokenLineIndex <> FParagraph[i-1].firstBrokenLineIndex\n         + FParagraph[i-1].brokenLineCount then\n        raise exception.Create('Expecting at least one broken line');\n      if FParagraph[i].firstPartIndex < FParagraph[i-1].firstPartIndex then\n        raise exception.Create('Part index is not ascending');\n      if FParagraph[i].firstPartIndex <> partIndex then\n        raise exception.Create('Part index is not consistent between paragraphs');\n    end else\n    begin\n      if FParagraph[i].firstPartIndex <> 0 then\n        raise exception.Create('First part index is expected to be 0');\n      if FParagraph[i].firstBrokenLineIndex <> 0 then\n        raise exception.Create('First broken index is expected to be 0');\n      if (FParagraph[i].brokenLineCount > 0) and\n         (FParagraph[i].brokenLines[0].firstPartIndex <> FParagraph[i].firstPartIndex) then\n        raise exception.Create('Inconsistent part index between paragraph and first broken line');\n    end;\n    with FParagraph[i] do\n      for j := 0 to brokenLineCount-1 do\n      begin\n        if brokenLines[j].firstPartIndex <> partIndex then\n          raise exception.Create('Inconsistent first part index of broken line (' +\n           inttostr(brokenLines[j].firstPartIndex) + ' expecting ' +\n           inttostr(partIndex) + ' for broken line ' +\n           inttostr(firstBrokenLineIndex + j) + ')');\n        inc(partIndex, brokenLines[j].partCount);\n        if brokenLines[j].startIndex < charIndex then\n          raise exception.Create('Inconsistent first char index of broken line (' +\n           inttostr(brokenLines[j].startIndex) + ' expecting at least ' +\n           inttostr(charIndex) + ' for broken line ' +\n           inttostr(firstBrokenLineIndex + j) + ' and paragraph ' + inttostr(i) + ')');\n        with brokenLines[j] do\n        begin\n          curBrokenLineEndIndex := endIndex;\n          for k := 0 to partCount-1 do\n          with parts[k] do\n          begin\n            if startIndex < charIndex then\n              raise exception.Create('Inconsistent first char index of part');\n            if endIndex > curBrokenLineEndIndex then\n              raise exception.Create('Last char index of part out of broken line range');\n            charIndex := endIndex;\n          end;\n        end;\n        charIndex := brokenLines[j].endIndex;\n      end;\n  end;\n  if charIndex > CharCount then\n    raise exception.Create('Last char index of broken line out of bounds (' +\n      inttostr(charIndex)+' > '+inttostr(CharCount) + ')');\nend;\n\nprocedure TBidiTextLayout.NeedLayout;\nbegin\n  if not LayoutComputed then ComputeLayout;\nend;\n\nprocedure TBidiTextLayout.InternalDrawText(ADest: TBGRACustomBitmap);\nbegin\n  InternalDrawTextParts(ADest, 0, PartCount);\nend;\n\nprocedure TBidiTextLayout.InternalPathText(ADest: IBGRAPath);\nbegin\n  InternalPathTextParts(ADest, 0, PartCount);\nend;\n\nprocedure TBidiTextLayout.InternalPathText(ADest: IBGRAPath; AClipRect: TRect);\nbegin\n  InternalPathTextParts(ADest, AClipRect, 0, PartCount);\nend;\n\nprocedure TBidiTextLayout.InternalDrawTextParts(ADest: TBGRACustomBitmap;\n  AFirstPart, ALastPartPlus1: integer);\nvar\n  part: PPartInfo;\n  enumPart: TPartEnumerator;\n  r: TRectF;\n  b: TRect;\n  pos: TPointF;\nbegin\n  NeedLayout;\n  enumPart := GetPartEnumerator(AFirstPart, ALastPartPlus1);\n  while enumPart.GetNext do begin\n    part := enumPart.PartInfo;\n    r := part^.rectF;\n    DecF(r.Left, LineHeight/2 + FClipMargin);\n    DecF(r.Top, FClipMargin);\n    IncF(r.Right, LineHeight/2 + FClipMargin);\n    IncF(r.Bottom, FClipMargin);\n    b := (Matrix*TAffineBox.AffineBox(r)).RectBounds;\n    if not b.IntersectsWith(ADest.ClipRect) then continue;\n    pos := Matrix*(part^.rectF.TopLeft + part^.posCorrection);\n    TextOutBidiOverride(ADest, pos.x, pos.y,\n      FAnalysis.CopyTextUTF8(part^.startIndex, part^.endIndex - part^.startIndex),\n      part^.IsRightToLeft);\n  end;\nend;\n\nprocedure TBidiTextLayout.InternalPathTextParts(ADest: IBGRAPath; AFirstPart,\n  ALastPartPlus1: integer);\nvar\n  part: PPartInfo;\n  pos: TPointF;\n  enumPart: TPartEnumerator;\nbegin\n  NeedLayout;\n  enumPart := GetPartEnumerator(AFirstPart, ALastPartPlus1);\n  while enumPart.GetNext do begin\n    part := enumPart.PartInfo;\n    pos := Matrix*(part^.rectF.TopLeft + part^.posCorrection);\n    TextPathBidiOverride(ADest, pos.x, pos.y,\n    FAnalysis.CopyTextUTF8(part^.startIndex, part^.endIndex - part^.startIndex),\n    part^.IsRightToLeft);\n  end;\nend;\n\nprocedure TBidiTextLayout.InternalPathTextParts(ADest: IBGRAPath;\n  AClipRect: TRect; AFirstPart, ALastPartPlus1: integer);\nvar\n  part: PPartInfo;\n  enumPart: TPartEnumerator;\n  r: TRectF;\n  b: TRect;\n  pos: TPointF;\nbegin\n  NeedLayout;\n  enumPart := GetPartEnumerator(AFirstPart, ALastPartPlus1);\n  while enumPart.GetNext do begin\n    part := enumPart.PartInfo;\n    r := part^.rectF;\n    DecF(r.Left, LineHeight/2 + FClipMargin);\n    DecF(r.Top, FClipMargin);\n    IncF(r.Right, LineHeight/2 + FClipMargin);\n    IncF(r.Bottom, FClipMargin);\n    b := (Matrix*TAffineBox.AffineBox(r)).RectBounds;\n    if not b.IntersectsWith(AClipRect) then continue;\n    pos := Matrix*(part^.rectF.TopLeft + part^.posCorrection);\n    TextPathBidiOverride(ADest, pos.x, pos.y,\n    FAnalysis.CopyTextUTF8(part^.startIndex, part^.endIndex - part^.startIndex),\n    part^.IsRightToLeft);\n  end;\nend;\n\nprocedure TBidiTextLayout.InternalRangeError;\nbegin\n  raise ERangeError.Create('Internal error');\nend;\n\nprocedure TBidiTextLayout.DrawCaret(ADest: TBGRACustomBitmap;\n  ACharIndex: integer; AMainColor, ASecondaryColor: TBGRAPixel);\n\n  procedure DrawSingleCaret(ATop,ABottom: TPointF; ARightToLeft, AShowDir: boolean; AColor: TBGRAPixel);\n  var u,v: TPointF;\n    triSize,len: single;\n  begin\n    //hinting depending on orientation\n    if abs(ATop.x - ABottom.x) < abs(ATop.y - ABottom.y) then\n    begin\n      ATop.x := round(ATop.x);\n      ABottom.x := round(ABottom.x);\n    end\n    else\n    begin\n      ATop.y := round(ATop.y);\n      ABottom.y := round(ABottom.y);\n    end;\n    u := ABottom-ATop;\n    len := VectLen(u);\n    if len > 0 then\n    begin\n      u := (1/len)*u;\n      v := PointF(u.y,-u.x);\n      if AShowDir then\n      begin\n        triSize := len*0.2;\n        if ARightToLeft then\n          ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop - triSize*v, ATop - v + triSize*u, ABottom - v]), AColor, false)\n        else\n          ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop + triSize*v, ATop + triSize*u + v, ABottom + v]), AColor, False)\n      end\n      else\n      begin\n        if len > 10 then\n        begin\n          if ARightToLeft then\n            ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop - 2*v, ABottom - 2*v]), AColor, False)\n          else\n            ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop + 2*v, ABottom + 2*v]), AColor, False)\n        end\n        else\n        begin\n          if ARightToLeft then\n            ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop - v, ABottom - v]), AColor, False)\n          else\n            ADest.FillPolyAntialias(PointsF([ABottom, ATop, ATop + v, ABottom + v]), AColor, False)\n        end;\n      end;\n    end else\n      ADest.DrawPixel(round(ATop.x),round(ATop.y), AColor);\n  end;\n\nvar\n  caret: TBidiCaretPos;\n  showDir: Boolean;\nbegin\n  NeedLayout;\n\n  caret := GetCaret(ACharIndex);\n  showDir := not isEmptyPointF(caret.PreviousTop) and (caret.RightToLeft <> caret.PreviousRightToLeft);\n  if not isEmptyPointF(caret.Top) then DrawSingleCaret(caret.Top, caret.Bottom, caret.RightToLeft, showDir, AMainColor);\n  if not isEmptyPointF(caret.PreviousTop) then DrawSingleCaret(caret.PreviousTop, caret.PreviousBottom, caret.PreviousRightToLeft, showDir, ASecondaryColor);\nend;\n\nprocedure TBidiTextLayout.DrawSelection(ADest: TBGRACustomBitmap; AStartIndex,\n  AEndIndex: integer; AFillColor: TBGRAPixel; ABorderColor: TBGRAPixel; APenWidth: single);\nvar\n  env: ArrayOfTPointF;\nbegin\n  NeedLayout;\n\n  if AStartIndex = AEndIndex then exit;\n  env := GetTextEnveloppe(AStartIndex,AEndIndex, False, True);\n  ADest.FillPolyAntialias(env, AFillColor, False);\n  if (ABorderColor.alpha <> 0) and (APenWidth > 0) then\n    ADest.DrawPolygonAntialias(env, ABorderColor, APenWidth);\nend;\n\nprocedure TBidiTextLayout.DrawSelection(ADest: TBGRACustomBitmap; AStartIndex,\n  AEndIndex: integer; AFillColor: TBGRAPixel);\nbegin\n  DrawSelection(ADest, AStartIndex,AEndIndex, AFillColor, BGRAPixelTransparent, 0);\nend;\n\nfunction TBidiTextLayout.GetCaret(ACharIndex: integer): TBidiCaretPos;\nbegin\n  result := GetUntransformedCaret(ACharIndex);\n  result.Transform(Matrix);\nend;\n\nfunction TBidiTextLayout.GetUntransformedCaret(ACharIndex: integer): TBidiCaretPos;\nvar\n  i, blIndex, lastPartIndex: Integer;\n  w: Single;\n  bl: PBrokenLineInfo;\n  part: PPartInfo;\nbegin\n  NeedLayout;\n\n  if (ACharIndex < 0) or (ACharIndex > CharCount) then\n    raise ERangeError.Create('Invalid index');\n\n  if (PartCount > 0) and (ACharIndex >= PartEndIndex[PartCount-1]) then\n  begin\n    result := GetUntransformedPartEndCaret(PartCount-1);\n    exit;\n  end;\n\n  result.PartIndex := -1;\n  result.Top := EmptyPointF;\n  result.Bottom := EmptyPointF;\n  result.RightToLeft := false;\n  result.PreviousTop := EmptyPointF;\n  result.PreviousBottom := EmptyPointF;\n  result.PreviousRightToLeft := false;\n\n  blIndex := GetBrokenLineAt(ACharIndex);\n  bl := GetBrokenLineInfo(blIndex);\n  if blIndex <> -1 then\n  begin\n    lastPartIndex := bl^.firstPartIndex + bl^.partCount - 1;\n    for i := bl^.firstPartIndex to lastPartIndex do\n    begin\n      part := @bl^.parts[i - bl^.firstPartIndex];\n      if ACharIndex <= part^.startIndex then\n      begin\n        result := GetUntransformedPartStartCaret(i);\n        exit;\n      end else\n      if (ACharIndex > part^.startIndex) and (ACharIndex <= part^.endIndex) then\n      begin\n        if (i < FComputedPartCount-1) and (ACharIndex = part^.startIndex) then\n        begin\n          result := GetUntransformedPartStartCaret(i+1);\n          exit;\n        end else\n        begin\n          if ACharIndex = part^.endIndex then\n          begin\n            result := GetUntransformedPartEndCaret(i);\n            exit;\n          end else\n          begin\n            w := TextSizeBidiOverrideSplit(part^.startIndex, part^.endIndex, part^.IsRightToLeft, ACharIndex).x;\n\n            if part^.IsRightToLeft then\n              result.Top := PointF(part^.rectF.Right - w, part^.rectF.Top)\n            else result.Top := PointF(part^.rectF.Left + w, part^.rectF.Top);\n            result.Bottom := result.Top + PointF(0, part^.rectF.Height);\n\n            result.RightToLeft := part^.IsRightToLeft;\n            result.PreviousRightToLeft := result.RightToLeft;\n            result.PartIndex := i;\n          end;\n          exit;\n        end;\n      end else\n      if i = lastPartIndex then\n      begin\n        result := GetUntransformedPartEndCaret(i);\n        exit;\n      end;\n    end;\n  end;\n\n  if ACharIndex = 0 then\n  begin\n    result.Top := PointF(0,0);\n    result.Bottom := PointF(0,FLineHeight);\n    result.RightToLeft := false;\n    result.PreviousTop := EmptyPointF;\n    result.PreviousBottom := EmptyPointF;\n    result.PreviousRightToLeft := false;\n    result.PartIndex := 0;\n  end;\nend;\n\nfunction TBidiTextLayout.GetCharIndexAt(APosition: TPointF; ABetweenGlyphs: boolean): integer;\nvar\n  brokenIndex,j, fit: Integer;\n  u,u2: LongWord;\n  axis, origin: TPointF;\n  len, w, curW, newW: Single;\n  str: String;\n  curIndex, newIndex, paraIndex: integer;\n  untransformedPos: TPointF;\n  para: PParagraphInfo;\n  curBroken: PBrokenLineInfo;\n  part: PPartInfo;\n  ab: TAffineBox;\nbegin\n  NeedLayout;\n  untransformedPos := FMatrixInverse*APosition;\n  paraIndex := GetUntransformedParagraphAt(untransformedPos);\n  para := @FParagraph[paraIndex];\n\n  if untransformedPos.Y < para^.rectF.Top then\n    exit(ParagraphStartIndex[paraIndex]);\n\n  if untransformedPos.Y >= para^.rectF.Bottom then\n    exit(ParagraphEndIndex[paraIndex]);\n\n  for brokenIndex := 0 to para^.brokenLineCount-1 do\n  begin\n    curBroken := @para^.brokenLines[brokenIndex];\n    if untransformedPos.Y < curBroken^.rectF.Bottom then\n    begin\n      if untransformedPos.Y < curBroken^.rectF.Top then\n        exit(curBroken^.startIndex);\n\n      //before part\n      if curBroken^.partCount > 0 then\n      begin\n        if (curBroken^.IsRightToLeft and (untransformedPos.x >= curBroken^.parts[0].rectF.Right)) or\n           (not curBroken^.IsRightToLeft and (untransformedPos.x < curBroken^.parts[0].rectF.Left)) then\n          exit(curBroken^.startIndex)\n      end;\n\n      for j := 0 to curBroken^.partCount-1 do\n      begin\n        part := @curBroken^.parts[j];\n        ab := Matrix*TAffineBox.AffineBox(part^.rectF);\n        if ab.Contains(APosition) then\n        begin\n          if part^.IsRightToLeft then\n          begin\n            axis := ab.TopLeft - ab.TopRight;\n            origin := ab.TopRight;\n          end else\n          begin\n            axis := ab.TopRight - ab.TopLeft;\n            origin := ab.TopLeft;\n          end;\n          len := VectLen(axis);\n          if len > 0 then\n          begin\n            w := ((APosition-origin)**axis)/len;\n            //if there is just one char, it is the whole part\n            if part^.endIndex = part^.startIndex + 1 then\n            begin\n              if ABetweenGlyphs then\n              begin\n                if w > 0.5*len then\n                  exit(part^.endIndex)\n                else\n                  exit(part^.startIndex);\n              end else\n                exit(part^.startIndex);\n            end;\n\n            str := FAnalysis.CopyTextUTF8(part^.startIndex, part^.endIndex - part^.startIndex);\n            fit := TextFitInfoBidiOverride(str, w, part^.IsRightToLeft);\n            curIndex := part^.startIndex+fit;\n            if curIndex > part^.endIndex then curIndex:= part^.endIndex;\n            if curIndex = 0 then curW := 0\n            else curW := TextSizeBidiOverrideSplit(part^.startIndex, part^.endIndex, part^.IsRightToLeft, curIndex).x;\n            while (curW < w) and (curIndex < part^.endIndex) do\n            begin\n              newIndex := curIndex+1;\n              while (newIndex < part^.endIndex) and not FAnalysis.BidiInfo[newIndex].IsMulticharStart do inc(newIndex);\n              newW := TextSizeBidiOverrideSplit(part^.startIndex, part^.endIndex, part^.IsRightToLeft, newIndex).x;\n              if newW >= w then\n              begin\n                if ABetweenGlyphs and ((curW+newW)*0.5 + 1 < w) then curIndex := newIndex;\n                break;\n              end else\n              begin\n                curW := newW;\n                curIndex := newIndex;\n              end;\n            end;\n            exit(curIndex);\n          end;\n          exit(part^.startIndex);\n        end;\n      end;\n\n      //after part\n      result := curBroken^.endIndex;\n      if result > curBroken^.startIndex then\n      begin\n        u := GetUnicodeChar(result-1);\n        if IsUnicodeParagraphSeparator(u) or (u = UNICODE_LINE_SEPARATOR) then\n        begin\n          dec(result);\n          if (result > curBroken^.startIndex) and (u = 13) or (u = 10) then\n          begin\n            u2 := GetUnicodeChar(result-1);\n            if (u2 <> u) and ((u2 = 13) or (u2 = 10)) then dec(result);\n          end;\n        end;\n      end;\n      exit;\n    end;\n  end;\n\n  exit(ParagraphEndIndexBeforeParagraphSeparator[paraIndex]);\nend;\n\nfunction TBidiTextLayout.GetTextEnveloppe(AStartIndex, AEndIndex: integer; APixelCenteredCoordinates: boolean; AMergeBoxes: boolean; AVerticalClip: boolean): ArrayOfTPointF;\nvar\n  i: Integer;\n  m: TAffineMatrix;\nbegin\n  result := GetUntransformedTextEnveloppe(AStartIndex,AEndIndex,false,AMergeBoxes,AVerticalClip);\n  if APixelCenteredCoordinates then m := AffineMatrixTranslation(-0.5,0.5)*Matrix else m := Matrix;\n  for i := 0 to high(result) do\n    result[i] := m*result[i];\nend;\n\nfunction TBidiTextLayout.GetUntransformedTextEnveloppe(AStartIndex,\n  AEndIndex: integer; APixelCenteredCoordinates: boolean; AMergeBoxes: boolean; AVerticalClip: boolean): ArrayOfTPointF;\nvar\n  startCaret, endCaret: TBidiCaretPos;\n  vertResult: array of record\n                box: TAffineBox;\n                joinPrevious: boolean;\n              end;\n\n  procedure AppendVertResult(ABox: TAffineBox; ARightToLeft: boolean);\n  begin\n    if AVerticalClip and (AvailableHeight <> EmptySingle) then\n    begin\n      if (ABox.TopLeft.y >= AvailableHeight) or (ABox.TopRight.y >= AvailableHeight) then exit;\n      if ABox.BottomLeft.y > AvailableHeight then ABox.BottomLeft.y := AvailableHeight;\n    end;\n\n    if ARightToLeft then\n      ABox := TAffineBox.AffineBox(ABox.TopRight,ABox.TopLeft,ABox.BottomRight);\n\n    if AMergeBoxes and (vertResult <> nil) and (ABox.TopLeft = vertResult[high(vertResult)].box.BottomLeft) and\n       (ABox.TopRight = vertResult[high(vertResult)].box.BottomRight) then\n       vertResult[high(vertResult)].box :=\n         TAffineBox.AffineBox(vertResult[high(vertResult)].box.TopLeft, vertResult[high(vertResult)].box.TopRight, ABox.BottomLeft)\n    else\n    begin\n      setlength(vertResult, length(vertResult)+1);\n      vertResult[high(vertResult)].box := ABox;\n      if high(vertResult)>0 then\n        vertResult[high(vertResult)].joinPrevious:= AMergeBoxes and ((VectLen(ABox.TopLeft-vertResult[high(vertResult)-1].box.BottomLeft)<1e-3) or\n                                                    (VectLen(ABox.TopRight-vertResult[high(vertResult)-1].box.BottomRight)<1e-3))\n      else\n        vertResult[high(vertResult)].joinPrevious:= false;\n    end;\n  end;\n\n  procedure AppendComplexSelection;\n  var\n    horizResult: array of TAffineBox;\n\n    procedure AppendHorizResult(AStartTop, AEndTop, AEndBottom, AStartBottom: TPointF; ARightToLeft: boolean);\n    var\n      temp: TPointF;\n\n      procedure TryMergeBefore;\n      begin\n        while length(horizResult)>=2 do\n        begin\n          if (horizResult[high(horizResult)].TopRight = horizResult[high(horizResult)-1].TopLeft) and\n             (horizResult[high(horizResult)].BottomRight = horizResult[high(horizResult)-1].BottomLeft) then\n          begin\n            horizResult[high(horizResult)-1] := TAffineBox.AffineBox(horizResult[high(horizResult)].TopLeft,\n                                                                     horizResult[high(horizResult)-1].TopRight,\n                                                                     horizResult[high(horizResult)].BottomLeft);\n            setlength(horizResult, length(horizResult)-1);\n          end else\n          if (horizResult[high(horizResult)].TopLeft = horizResult[high(horizResult)-1].TopRight) and\n             (horizResult[high(horizResult)].BottomLeft = horizResult[high(horizResult)-1].BottomRight) then\n          begin\n            horizResult[high(horizResult)-1] := TAffineBox.AffineBox(horizResult[high(horizResult)-1].TopLeft,\n                                                                     horizResult[high(horizResult)].TopRight,\n                                                                     horizResult[high(horizResult)-1].BottomLeft);\n            setlength(horizResult, length(horizResult)-1);\n          end else\n            break;\n        end;\n      end;\n\n    begin\n      if ARightToLeft then\n      begin\n        temp := AStartTop;\n        AStartTop := AEndTop;\n        AEndTop := temp;\n\n        temp := AStartBottom;\n        AStartBottom := AEndBottom;\n        AEndBottom := temp;\n      end;\n\n      if AMergeBoxes and (horizResult <> nil) and (AStartTop = horizResult[high(horizResult)].TopRight)\n         and (AStartBottom = horizResult[high(horizResult)].BottomRight) then\n      begin\n        horizResult[high(horizResult)] := TAffineBox.AffineBox(horizResult[high(horizResult)].TopLeft,AEndTop,horizResult[high(horizResult)].BottomLeft);\n        TryMergeBefore;\n      end\n      else\n      if AMergeBoxes and (horizResult <> nil) and (AEndTop = horizResult[high(horizResult)].TopLeft)\n         and (AEndBottom = horizResult[high(horizResult)].BottomLeft) then\n      begin\n        horizResult[high(horizResult)] := TAffineBox.AffineBox(AStartTop,horizResult[high(horizResult)].TopRight,AStartBottom);\n        TryMergeBefore;\n      end\n      else\n      begin\n        setlength(horizResult, length(horizResult)+1);\n        horizResult[high(horizResult)] := TAffineBox.AffineBox(AStartTop, AEndTop, AStartBottom);\n      end;\n    end;\n\n    procedure FlushHorizResult;\n    var\n      idx, j: Integer;\n    begin\n      if horizResult <> nil then\n      begin\n        AppendVertResult(horizResult[0], false);\n        if length(horizResult)>1 then //additional boxes are added without vertical join\n        begin\n          idx := length(vertResult);\n          setlength(vertResult, length(vertResult)+length(horizResult)-1);\n          for j := 1 to high(horizResult) do\n          begin\n            vertResult[idx+j-1].box := horizResult[j];\n            vertResult[idx+j-1].joinPrevious := false;\n          end;\n        end;\n        horizResult := nil;\n      end;\n    end;\n\n  var\n    curPartStartCaret, curPartEndCaret,\n    lineStartCaret, lineEndCaret, curPartCaret: TBidiCaretPos;\n    curBrokenIndex, curParaIndex, prevParaIndex, j,\n      brokenLineLastPartIndexPlus1, curPartIndex: integer;\n    r: TRectF;\n    partEnum: TPartEnumerator;\n    prevPart, curPart: PPartInfo;\n    curBroken: PBrokenLineInfo;\n\n  begin\n    horizResult := nil;\n    partEnum := GetPartEnumerator(startCaret.PartIndex, endCaret.PartIndex + 1);\n    curPart := nil;\n    curParaIndex := -1;\n\n    if partEnum.GetNext then\n    while true do\n    begin\n      prevParaIndex := curParaIndex;\n      prevPart := curPart;\n      curParaIndex := partEnum.ParagraphIndex;\n      curPart := partEnum.PartInfo;\n      curPartIndex := partEnum.PartIndex;\n      curBroken := partEnum.BrokenLineInfo;\n      curBrokenIndex := partEnum.BrokenLineIndex;\n\n      //space between paragraph\n      if (curPartIndex > startCaret.PartIndex) and (ParagraphSpacingAbove+ParagraphSpacingBelow <> 0) then\n      begin\n        if (curParaIndex > 0) and (prevParaIndex = curParaIndex-1) then\n        begin\n          FlushHorizResult;\n\n          r := RectF(ParagraphRectF[curParaIndex-1].Left, ParagraphRectF[curParaIndex-1].Bottom - ParagraphSpacingBelow*FLineHeight,\n                       ParagraphRectF[curParaIndex-1].Right, ParagraphRectF[curParaIndex-1].Bottom);\n          AppendVertResult(TAffineBox.AffineBox(r), False);\n\n          r := RectF(ParagraphRectF[curParaIndex].Left, ParagraphRectF[curParaIndex].Top,\n                       ParagraphRectF[curParaIndex].Right, ParagraphRectF[curParaIndex].Top + ParagraphSpacingAbove*FLineHeight);\n          AppendVertResult(TAffineBox.AffineBox(r), False);\n        end;\n      end;\n\n      //whole broken line selected\n      brokenLineLastPartIndexPlus1 := curBroken^.firstPartIndex + curBroken^.partCount;\n      if (curPartIndex = curBroken^.firstPartIndex) and\n         ((curPartIndex > startCaret.PartIndex) or (AStartIndex = curPart^.startIndex)) and\n         (endCaret.PartIndex >= brokenLineLastPartIndexPlus1) then\n      begin\n        FlushHorizResult;\n\n        lineStartCaret := GetBrokenLineUntransformedStartCaret(curBrokenIndex);\n        lineEndCaret := GetBrokenLineUntransformedEndCaret(curBrokenIndex);\n        AppendVertResult(TAffineBox.AffineBox(lineStartCaret.Top,lineEndCaret.Top,lineStartCaret.Bottom), BrokenLineRightToLeft[curBrokenIndex]);\n\n        //skip broken line\n        for j := curPartIndex to brokenLineLastPartIndexPlus1-2 do\n          partEnum.GetNext;\n        if not partEnum.GetNext then break;\n      end else\n      begin\n        if curPartIndex > startCaret.PartIndex then\n          curPartStartCaret := GetUntransformedPartStartCaret(curPartIndex, prevPart, curPart)\n          else curPartStartCaret := startCaret;\n\n        if curPartIndex < endCaret.PartIndex then\n          curPartEndCaret := GetUntransformedPartEndCaret(curPartIndex, curPart)\n          else curPartEndCaret := endCaret;\n\n        //start of lines\n        if (curPartIndex > startCaret.PartIndex) and (prevPart^.brokenLineIndex <> curBrokenIndex) then\n        begin\n          FlushHorizResult;\n\n          lineStartCaret := GetBrokenLineUntransformedStartCaret(curBrokenIndex);\n          if curBroken^.IsRightToLeft = curPart^.IsRightToLeft then\n            AppendHorizResult(lineStartCaret.Top, curPartStartCaret.Top,\n                          curPartStartCaret.Bottom, lineStartCaret.Bottom,\n                          BrokenLineRightToLeft[curBrokenIndex])\n          else\n            AppendHorizResult(lineStartCaret.Top, curPartEndCaret.Top,\n                          curPartEndCaret.Bottom, lineStartCaret.Bottom,\n                          curBroken^.IsRightToLeft);\n        end;\n\n        //text parts\n        AppendHorizResult(curPartStartCaret.Top, curPartEndCaret.Top,\n                          curPartEndCaret.Bottom, curPartStartCaret.Bottom,\n                          curPart^.IsRightToLeft);\n\n        //end of lines\n        if not partEnum.GetNext then break;\n\n        if (partEnum.BrokenLineIndex <> curBrokenIndex) then\n        begin\n          lineEndCaret := GetBrokenLineUntransformedEndCaret(curBrokenIndex);\n          if curBroken^.IsRightToLeft = curPart^.IsRightToLeft then\n            curPartCaret := GetUntransformedPartEndCaret(curPartIndex)\n          else\n            curPartCaret := GetUntransformedPartStartCaret(curPartIndex);\n          AppendHorizResult(curPartCaret.Top, lineEndCaret.Top,\n            lineEndCaret.Bottom, curPartCaret.Bottom, curBroken^.IsRightToLeft)\n        end;\n      end;\n\n    end;\n\n    FlushHorizResult;\n  end;\n\nvar\n  temp: integer;\n  i,j, idxOut, k: integer;\n\nbegin\n  NeedLayout;\n\n  vertResult := nil;\n\n  if AStartIndex > AEndIndex then\n  begin\n    temp := AStartIndex;\n    AStartIndex:= AEndIndex;\n    AEndIndex:= temp;\n  end;\n  startCaret := GetUntransformedCaret(AStartIndex);\n  endCaret := GetUntransformedCaret(AEndIndex);\n  if not isEmptyPointF(endCaret.PreviousTop) then\n  begin\n    endCaret.Top := endCaret.PreviousTop;        endCaret.PreviousTop := EmptyPointF;\n    endCaret.Bottom := endCaret.PreviousBottom;  endCaret.PreviousBottom := EmptyPointF;\n    endCaret.RightToLeft := endCaret.PreviousRightToLeft;\n    if endCaret.PartIndex <> -1 then dec(endCaret.PartIndex);\n  end;\n\n  if startCaret.PartIndex = endCaret.PartIndex then\n  begin\n    if not isEmptyPointF(startCaret.Top) and not isEmptyPointF(endCaret.Top) then\n      AppendVertResult(TAffineBox.AffineBox(startCaret.Top,endCaret.Top,startCaret.Bottom), startCaret.RightToLeft);\n  end else\n    AppendComplexSelection;\n\n  if APixelCenteredCoordinates then\n    for i := 0 to high(vertResult) do\n      vertResult[i].box.Offset(-0.5, -0.5);\n\n  if vertResult <> nil then\n  begin\n    setlength(result, length(vertResult)*5 - 1); //maximum point count\n    idxOut := 0;\n    i := 0;\n    while i <= high(vertResult) do\n    begin\n      if i > 0 then\n      begin\n        result[idxOut] := EmptyPointF;\n        inc(idxOut);\n      end;\n      result[idxOut] := vertResult[i].box.TopLeft; inc(idxOut);\n      result[idxOut] := vertResult[i].box.TopRight; inc(idxOut);\n      result[idxOut] := vertResult[i].box.BottomRight; inc(idxOut);\n      j := i;\n      while (j<high(vertResult)) and vertResult[j+1].joinPrevious do\n      begin\n        inc(j);\n        result[idxOut] := vertResult[j].box.TopRight; inc(idxOut);\n        result[idxOut] := vertResult[j].box.BottomRight; inc(idxOut);\n      end;\n      for k := j downto i+1 do\n      begin\n        result[idxOut] := vertResult[k].box.BottomLeft; inc(idxOut);\n        result[idxOut] := vertResult[k].box.TopLeft; inc(idxOut);\n      end;\n      result[idxOut] := vertResult[i].box.BottomLeft; inc(idxOut);\n      i := j+1;\n    end;\n    setlength(result, idxOut);\n  end else\n    result := nil;\nend;\n\nfunction TBidiTextLayout.GetParagraphAt(ACharIndex: Integer): integer;\nbegin\n  result := FAnalysis.GetParagraphAt(ACharIndex);\nend;\n\nfunction TBidiTextLayout.GetParagraphAt(APosition: TPointF): integer;\nbegin\n  result := GetParagraphAt(FMatrixInverse*APosition);\nend;\n\nfunction TBidiTextLayout.GetBrokenLineAt(ACharIndex: integer): integer;\nvar\n  paraMinIndex, paraMaxIndex, paraMidIndex, brokenMinIndex,\n    brokenMaxIndex, brokenMidIndex: Integer;\nbegin\n  if (ACharIndex < 0) or (ACharIndex > CharCount) then raise exception.Create('Position out of bounds');\n  paraMinIndex := 0;\n  paraMaxIndex := ParagraphCount-1;\n  repeat\n    if paraMinIndex > paraMaxIndex then\n      InternalRangeError else\n    if paraMinIndex = paraMaxIndex then\n    with FParagraph[paraMinIndex] do\n    begin\n      brokenMinIndex := 0;\n      brokenMaxIndex := brokenLineCount-1;\n      repeat\n        if brokenMinIndex > brokenMaxIndex then InternalRangeError else\n        if brokenMinIndex = brokenMaxIndex then\n        begin\n          result := brokenMinIndex + firstBrokenLineIndex;\n          exit;\n        end else\n        begin\n          brokenMidIndex := (brokenMinIndex + brokenMaxIndex + 1) shr 1;\n          if ACharIndex < brokenLines[brokenMidIndex].startIndex then\n            brokenMaxIndex := brokenMidIndex-1\n            else brokenMinIndex := brokenMidIndex;\n        end;\n      until false;\n    end else\n    begin\n      paraMidIndex := (paraMinIndex + paraMaxIndex + 1) shr 1;\n      if ACharIndex < ParagraphStartIndex[paraMidIndex] then\n        paraMaxIndex := paraMidIndex-1\n        else paraMinIndex := paraMidIndex;\n    end;\n  until false;\nend;\n\nfunction TBidiTextLayout.InsertText(ATextUTF8: string; APosition: integer): integer;\nbegin\n  result := FAnalysis.InsertText(ATextUTF8,APosition);\nend;\n\nfunction TBidiTextLayout.InsertLineSeparator(APosition: integer): integer;\nbegin\n  result := InsertText(UnicodeCharToUTF8(UNICODE_LINE_SEPARATOR), APosition);\nend;\n\nfunction TBidiTextLayout.DeleteText(APosition, ACount: integer): integer;\nbegin\n  result := FAnalysis.DeleteText(APosition, ACount);\nend;\n\nfunction TBidiTextLayout.DeleteTextBefore(APosition, ACount: integer): integer;\nbegin\n  result := FAnalysis.DeleteTextBefore(APosition, ACount);\nend;\n\nfunction TBidiTextLayout.CopyText(APosition, ACount: integer): string;\nbegin\n  ACount := IncludeNonSpacingChars(APosition, ACount);\n  result := FAnalysis.CopyTextUTF8(APosition, ACount);\nend;\n\nfunction TBidiTextLayout.CopyTextBefore(APosition, ACount: integer): string;\nbegin\n  ACount := IncludeNonSpacingCharsBefore(APosition, ACount);\n  result := FAnalysis.CopyTextUTF8(APosition-ACount, ACount);\nend;\n\nfunction TBidiTextLayout.IncludeNonSpacingChars(APosition, ACount: integer; AIncludeCombiningMarks: boolean): integer;\nbegin\n  result := FAnalysis.IncludeNonSpacingChars(APosition,ACount,AIncludeCombiningMarks);\nend;\n\nfunction TBidiTextLayout.IncludeNonSpacingCharsBefore(APosition, ACount: integer; AIncludeCombiningMarks: boolean): integer;\nbegin\n  result := FAnalysis.IncludeNonSpacingCharsBefore(APosition,ACount,AIncludeCombiningMarks);\nend;\n\nfunction TBidiTextLayout.FindTextAbove(AFromPosition: integer): integer;\nvar\n  curPos: TBidiCaretPos;\n  bIndex: LongInt;\n  pt: TPointF;\nbegin\n  curPos := GetUntransformedCaret(AFromPosition);\n  bIndex := PartBrokenLineIndex[curPos.PartIndex];\n  if (bIndex > 0) and not isEmptyPointF(curPos.Top) then\n  begin\n    dec(bIndex);\n    pt := PointF(curPos.Top.x, (BrokenLineRectF[bIndex].Top+BrokenLineRectF[bIndex].Bottom)*0.5);\n    result := GetCharIndexAt(Matrix*pt);\n  end else\n    exit(-1);\nend;\n\nfunction TBidiTextLayout.FindTextBelow(AFromPosition: integer): integer;\nvar\n  curPos: TBidiCaretPos;\n  bIndex: LongInt;\n  pt: TPointF;\nbegin\n  curPos := GetUntransformedCaret(AFromPosition);\n  bIndex := PartBrokenLineIndex[curPos.PartIndex];\n  if (bIndex < BrokenLineCount-1) and not isEmptyPointF(curPos.Top) then\n  begin\n    inc(bIndex);\n    pt := PointF(curPos.Top.x, (BrokenLineRectF[bIndex].Top+BrokenLineRectF[bIndex].Bottom)*0.5);\n    result := GetCharIndexAt(Matrix*pt);\n  end else\n    exit(-1);\nend;\n\nfunction TBidiTextLayout.GetPartStartCaret(APartIndex: integer): TBidiCaretPos;\nbegin\n  result := GetUntransformedPartStartCaret(APartIndex);\n  result.Transform(Matrix)\nend;\n\nfunction TBidiTextLayout.GetPartEndCaret(APartIndex: integer): TBidiCaretPos;\nbegin\n  result := GetUntransformedPartEndCaret(APartIndex);\n  result.Transform(Matrix);\nend;\n\nfunction TBidiTextLayout.GetUntransformedPartStartCaret(APartIndex: integer): TBidiCaretPos;\nvar\n  prevPart, part: PPartInfo;\n  partEnum: TPartEnumerator;\nbegin\n  if (APartIndex < 0) or (APartIndex > PartCount) then\n    raise ERangeError.Create('Invalid index');\n\n  if APartIndex > 0 then\n  begin\n    partEnum := GetPartEnumerator(APartIndex - 1);\n    if not partEnum.GetNext then InternalRangeError;\n    prevPart := partEnum.PartInfo;\n    if not partEnum.GetNext then InternalRangeError;\n    part := partEnum.PartInfo;\n  end else\n  begin\n    prevPart := nil;\n    part := GetPartInfo(APartIndex);\n  end;\n\n  result := GetUntransformedPartStartCaret(APartIndex, prevPart, part);\nend;\n\nfunction TBidiTextLayout.GetUntransformedPartStartCaret(APartIndex: integer;\n  APrevPart, APart: PPartInfo): TBidiCaretPos;\nbegin\n  result.PartIndex := APartIndex;\n\n  if APart^.IsRightToLeft then\n    result.Top := PointF(APart^.rectF.Right, APart^.rectF.Top)\n  else\n    result.Top := PointF(APart^.rectF.Left, APart^.rectF.Top);\n  result.Bottom := result.Top + PointF(0, APart^.rectF.Height);\n\n  result.RightToLeft := APart^.IsRightToLeft;\n\n  if (APartIndex > 0) and (APrevPart^.endIndex = APart^.startIndex) and\n    (BrokenLineUnbrokenIndex[APrevPart^.brokenLineIndex] =\n     BrokenLineUnbrokenIndex[APart^.brokenLineIndex]) then\n  begin\n    if APrevPart^.IsRightToLeft then\n      result.PreviousTop := PointF(APrevPart^.rectF.Left, APrevPart^.rectF.Top)\n    else\n      result.PreviousTop := PointF(APrevPart^.rectF.Right, APrevPart^.rectF.Top);\n    result.PreviousBottom := result.PreviousTop + PointF(0, APrevPart^.rectF.Height);\n    result.PreviousRightToLeft := APrevPart^.IsRightToLeft;\n  end else\n  begin\n    result.PreviousTop := EmptyPointF;\n    result.PreviousBottom := EmptyPointF;\n    result.PreviousRightToLeft := result.RightToLeft;\n  end;\nend;\n\nfunction TBidiTextLayout.GetUntransformedPartEndCaret(APartIndex: integer): TBidiCaretPos;\nvar\n  part: PPartInfo;\nbegin\n  part := GetPartInfo(APartIndex);\n  result := GetUntransformedPartEndCaret(APartIndex, part);\nend;\n\nfunction TBidiTextLayout.GetUntransformedPartEndCaret(APartIndex: integer;\n  APart: PPartInfo): TBidiCaretPos;\nbegin\n  result.PartIndex := APartIndex;\n\n  if APart^.IsRightToLeft then\n    result.Top := PointF(APart^.rectF.Left, APart^.rectF.Top)\n  else\n    result.Top := PointF(APart^.rectF.Right, APart^.rectF.Top);\n  result.Bottom := result.Top + PointF(0, APart^.rectF.Height);\n  result.RightToLeft := APart^.IsRightToLeft;\n\n  result.PreviousTop := EmptyPointF;\n  result.PreviousBottom := EmptyPointF;\n  result.PreviousRightToLeft := result.RightToLeft;\nend;\n\nfunction TBidiTextLayout.GetUntransformedParagraphAt(APosition: TPointF): integer;\n\n  procedure FindRec(AFirstParaIndex, ALastParaIndex: integer);\n  var\n    midIndex: Integer;\n  begin\n    midIndex := (AFirstParaIndex + ALastParaIndex) shr 1;\n    if APosition.y < FParagraph[midIndex].rectF.Top then\n    begin\n      if midIndex <= AFirstParaIndex then\n      begin\n        result := AFirstParaIndex;\n        exit;\n      end;\n      FindRec(AFirstParaIndex, midIndex-1);\n    end\n    else if APosition.y >= FParagraph[midIndex].rectF.Bottom then\n    begin\n      if midIndex >= ALastParaIndex then\n      begin\n        result := ALastParaIndex;\n        exit;\n      end;\n      FindRec(midIndex+1, ALastParaIndex);\n    end\n    else\n    begin\n      result := midIndex;\n      exit;\n    end;\n  end;\n\nbegin\n  NeedLayout;\n  result := 0;\n  FindRec(0, ParagraphCount-1);\nend;\n\nprocedure TBidiTextLayout.AddPartsFromTree(APos: TPointF; ATree: TBidiTree;\n  fullHeight, baseLine: single; ABrokenLineIndex: integer; ABrokenLine: PBrokenLineInfo);\nvar\n  i: Integer;\n  root, branch: TBidiLayoutTree;\n  dy: Single;\nbegin\n  root := TBidiLayoutTree(ATree);\n  if root.IsLeaf then\n  begin\n    if (root.Height <> fullHeight) and (fullHeight <> 0) then\n    begin\n      dy := baseLine * (1 - root.Height/fullHeight);\n    end else\n      dy := 0;\n    if odd(root.BidiLevel) then\n    begin\n      DecF(APos.x, root.Width);\n      AddPart(root.StartIndex, root.EndIndex, root.BidiLevel,\n              RectF(APos.x, APos.y, APos.x+root.Width, APos.y+fullHeight), PointF(0,dy), ABrokenLineIndex, ABrokenLine);\n    end else\n    begin\n      AddPart(root.StartIndex, root.EndIndex, root.BidiLevel,\n              RectF(APos.x, APos.y, APos.x+root.Width, APos.y+fullHeight), PointF(0,dy), ABrokenLineIndex, ABrokenLine);\n      IncF(APos.x, root.Width);\n    end;\n  end else\n  begin\n    for i := 0 to root.Count-1 do\n    begin\n      branch := TBidiLayoutTree(root.Branch[i]);\n      if odd(root.BidiLevel) then\n      begin\n        if odd(branch.BidiLevel) then\n        begin\n          AddPartsFromTree(APos, branch, fullHeight, baseLine, ABrokenLineIndex, ABrokenLine);\n          DecF(APos.x, branch.Width);\n        end else\n        begin\n          DecF(APos.x, branch.Width);\n          AddPartsFromTree(APos, branch, fullHeight, baseLine, ABrokenLineIndex, ABrokenLine);\n        end;\n      end else\n      begin\n        if odd(branch.BidiLevel) then\n        begin\n          IncF(APos.x, branch.Width);\n          AddPartsFromTree(APos, branch, fullHeight, baseLine, ABrokenLineIndex, ABrokenLine);\n        end else\n        begin\n          AddPartsFromTree(APos, branch, fullHeight, baseLine, ABrokenLineIndex, ABrokenLine);\n          IncF(APos.x, branch.Width);\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBidiTextLayout.Init(ATextUTF8: string; ABidiMode: TFontBidiMode);\nvar\n  i: Integer;\nbegin\n  FComputedBrokenLineCount:= 0;\n  FComputedPartCount:= 0;\n  FTopLeft := PointF(0,0);\n  FAvailableWidth:= EmptySingle;\n  FAvailableHeight:= EmptySingle;\n  FTabSize := 8;\n  FParagraphSpacingAbove:= 0;\n  FParagraphSpacingBelow:= 0;\n  FMatrix := AffineMatrixIdentity;\n  FClipMargin := 0;\n  FColor := BGRABlack;\n  FTexture := nil;\n  FWordBreakHandler:= nil;\n  FAnalysis := TUnicodeAnalysis.Create(ATextUTF8, ABidiMode);\n  FAnalysis.OnBidiModeChanged:= @BidiModeChanged;\n  FAnalysis.OnCharDeleted:= @CharDeleted;\n  FAnalysis.OnParagraphDeleted:=@ParagraphDeleted;\n  FAnalysis.OnParagraphMergedWithNext:=@ParagraphMergedWithNext;\n  FAnalysis.OnCharInserted:=@CharInserted;\n  FAnalysis.OnParagraphSplit:=@ParagraphSplit;\n  FAnalysis.OnAnalysisChanged:= @AnalysisChanged;\n  SetLength(FParagraph, FAnalysis.ParagraphCount);\n  for i := 0 to high(FParagraph) do\n  begin\n    FParagraph[i].rectF := EmptyRectF;\n    FParagraph[i].alignment:= btaNatural;\n    FParagraph[i].layoutComputed := false;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgratextfx.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Text effects using system text rendering.)\n\n  The simplest way to render effects is to use TBGRATextEffectFontRenderer class.\n\n  You may need TBGRATextEffect if you want to have more control over text effects, especially\n  if you always draw the same text. Keeping the same TBGRATextEffect object will avoid creating the text\n  mask over and over again.\n\n  **Font rendering units** : BGRAText, BGRATextFX, BGRAVectorize, BGRAFreeType\n}\nunit BGRATextFX;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, BGRAPhongTypes, BGRAText,\n  BGRACustomTextFX, BGRAVectorize;\n\ntype\n  TBGRATextEffect = class;\n\n  { @abstract(Font renderer with shadow and outline effects.)\n\n    To use it, create an instance of this class and assign it to a TBGRABitmap.FontRenderer property. Now functions\n    to draw text like TBGRABitmap.TextOut will use the chosen renderer. To set the effects, keep a variable containing\n    the TBGRATextEffectFontRenderer instance and modify ShadowVisible and other effects parameters.\n\n    The TBGRATextEffectFontRenderer class makes use of other classes depending on the situation. For example,\n    TBGRATextEffect, which is also in this unit, provides effects on a text mask. But the renderer also uses\n    BGRAVectorize unit in order to have wide outlines, big texts or to rotate them at will.\n }\n  TBGRATextEffectFontRenderer = class(TBGRASystemFontRenderer)\n  private\n    function GetShaderLightPosition: TPoint;\n    function GetShaderLightPositionF: TPointF;\n    function GetVectorizedRenderer: TBGRAVectorizedFontRenderer;\n    procedure SetShaderLightPosition(const AValue: TPoint);\n    procedure SetShaderLightPositionF(const AValue: TPointF);\n  protected\n    FShaderOwner: boolean;\n    FShader: TCustomPhongShading;\n    FVectorizedRenderer: TBGRAVectorizedFontRenderer;\n    function ShadowActuallyVisible :boolean;\n    function ShaderActuallyActive: boolean;\n    function OutlineActuallyVisible: boolean;\n    procedure Init;\n    function VectorizedFontNeeded(AOrientation: integer): boolean;\n    procedure InternalTextOutAngle(ADest: TBGRACustomBitmap; x, y: single; AOrientation: integer; sUTF8: string; c: TBGRAPixel; texture: IBGRAScanner;\n                              align: TAlignment; AShowPrefix: boolean = false; ARightToLeft: boolean = false); override;\n  public\n    ShaderActive: boolean;\n\n    ShadowVisible: boolean;\n    ShadowColor: TBGRAPixel;\n    ShadowRadius: integer;\n    ShadowOffset: TPoint;\n    ShadowQuality: TRadialBlurType;\n\n    OutlineColor: TBGRAPixel;\n    OutlineWidth: single;\n    OutlineVisible,OuterOutlineOnly: boolean;\n    OutlineJoin: TPenJoinStyle;\n    OutlineTexture: IBGRAScanner;\n    constructor Create; overload;\n    constructor Create(AShader: TCustomPhongShading; AShaderOwner: boolean); overload;\n    destructor Destroy; override;\n    function TextVisible(const AColor: TBGRAPixel): boolean; override;\n    function TextSize(sUTF8: string): TSize; overload; override;\n    function TextSizeAngle(sUTF8: string; orientationTenthDegCCW: integer): TSize; override;\n    function TextSize(sUTF8: string; AMaxWidth: integer; {%H-}ARightToLeft: boolean): TSize; overload; override;\n    function TextFitInfo(sUTF8: string; AMaxWidth: integer): integer; override;\n    property Shader: TCustomPhongShading read FShader;\n    property ShaderLightPosition: TPoint read GetShaderLightPosition write SetShaderLightPosition;\n    property ShaderLightPositionF: TPointF read GetShaderLightPositionF write SetShaderLightPositionF;\n    property VectorizedFontRenderer: TBGRAVectorizedFontRenderer read GetVectorizedRenderer;\n  end;\n\n  { @abstract(Implementation of text effects using system rendering.) }\n  TBGRATextEffect = class(TBGRACustomTextEffect)\n  protected\n    procedure InitImproveReadability(AText: string; Font: TFont; SubOffsetX,SubOffsetY: single);\n    procedure Init(AText: string; Font: TFont; Antialiasing: boolean; SubOffsetX,SubOffsetY: single; GrainX, GrainY: Integer);\n    procedure InitWithFontName(AText: string; AFontName: string; AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean; SubOffsetX,SubOffsetY: single);\n  public\n    constructor Create(AText: string; Font: TFont; Antialiasing: boolean); overload;\n    constructor Create(AText: string; Font: TFont; Antialiasing: boolean; SubOffsetX,SubOffsetY: single); overload;\n    constructor Create(AText: string; Font: TFont; Antialiasing: boolean; SubOffsetX,SubOffsetY: single; GrainX, GrainY: Integer); overload;\n    constructor Create(AText: string; AFontName: string; AFullHeight: integer; Antialiasing: boolean); overload;\n    constructor Create(AText: string; AFontName: string; AFullHeight: integer; Antialiasing: boolean; SubOffsetX,SubOffsetY: single); overload;\n    constructor Create(AText: string; AFontName: string; AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean); overload;\n    constructor Create(AText: string; AFontName: string; AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean; SubOffsetX,SubOffsetY: single); overload;\n  end;\n\n\n{ Compute an image containing a text with shadow }\nfunction TextShadow(AWidth,AHeight: Integer; AText: String; AFontHeight: Integer; ATextColor,AShadowColor: TBGRAPixel;\n    AOffSetX,AOffSetY: Integer; ARadius: Integer = 0; AFontStyle: TFontStyles = []; AFontName: String = 'Default'; AShowText: Boolean = True; AFontQuality: TBGRAFontQuality = fqFineAntialiasing): TBGRACustomBitmap;\n\nprocedure BGRATextOutImproveReadability(bmp: TBGRACustomBitmap; AFont: TFont; xf,yf: single; text: string; color: TBGRAPixel; tex: IBGRAScanner; align: TAlignment; mode : TBGRATextOutImproveReadabilityMode);\n\nimplementation\n\nuses BGRAGradientScanner, Math, BGRAGrayscaleMask, BGRAPath, BGRATransform,\n  BGRAPolygon, BGRAPen, BGRAFilterBlur;\n\nprocedure BGRATextOutImproveReadability(bmp: TBGRACustomBitmap; AFont: TFont; xf,yf: single; text: string; color: TBGRAPixel; tex: IBGRAScanner; align: TAlignment; mode : TBGRATextOutImproveReadabilityMode);\nvar\n  useClearType,clearTypeRGBOrder: boolean;\n  metric: TFontPixelMetric;\n  deltaX: single;\n  x,y,yb,cury,fromy: integer;\n  toAdd: integer;\n  lines: array[0..3] of integer;\n  parts: array[0..3] of TGrayscaleMask;\n  n,nbLines: integer;\n  alphaMax: UInt32or64;\n  pmask: PByte;\n  fx: TBGRATextEffect;\n  FxFont: TFont;\n  prevCenter, newCenter, diffCenter: single;\n  xThird: integer;\n\nbegin\n  useClearType:= mode in[irClearTypeRGB,irClearTypeBGR];\n  clearTypeRGBOrder := mode <> irClearTypeBGR;\n  deltaX := xf-floor(xf);\n  x := floor(xf);\n\n  FxFont := TFont.Create;\n  FxFont.Assign(AFont);\n  FxFont.Height := fxFont.Height*FontAntialiasingLevel;\n  metric := GetLCLFontPixelMetric(FxFont);\n  if not metric.Defined or (metric.Lineheight < 8*FontAntialiasingLevel) or (metric.Lineheight >= 24*FontAntialiasingLevel) then\n  begin\n    fxFont.Free;\n    if useClearType then\n    begin\n      if ClearTypeRGBOrder then\n        BGRATextOut(bmp, AFont, fqFineClearTypeRGB, xf,yf, text, color, tex, align)\n      else\n        BGRATextOut(bmp, AFont, fqFineClearTypeBGR, xf,yf, text, color, tex, align)\n    end else\n      BGRATextOut(bmp, AFont, fqFineAntialiasing, xf,yf, text, color, tex, align);\n    exit;\n  end;\n\n  if (metric.Baseline-metric.xLine) mod FontAntialiasingLevel >= FontAntialiasingLevel div 3 then\n  begin\n    toAdd := FontAntialiasingLevel- ((metric.Baseline-metric.xLine) mod FontAntialiasingLevel);\n    for yb := 1 to toAdd div 2 do\n    begin\n      if metric.xLine > 0 then dec(metric.xLine);\n      if metric.Baseline < metric.Lineheight then inc(metric.Baseline);\n    end;\n  end;\n  if metric.CapLine >= metric.xLine then metric.CapLine := -1 else\n  begin\n    if (metric.xLine-metric.CapLine) mod FontAntialiasingLevel >= FontAntialiasingLevel div 2 then\n    begin\n      toAdd := FontAntialiasingLevel - (metric.xLine-metric.CapLine) mod FontAntialiasingLevel;\n      dec(metric.CapLine, toAdd);\n      if metric.CapLine <= 0 then metric.CapLine := -1;\n    end;\n  end;\n\n  nbLines := 0;\n  lines[nbLines] := metric.CapLine+1;\n  inc(nbLines);\n  lines[nbLines] := metric.xLine+1;\n  inc(nbLines);\n  lines[nbLines] := metric.Baseline+1;\n  inc(nbLines);\n  lines[nbLines] := metric.Lineheight+1;\n  inc(nbLines);\n\n  if not useClearType then\n    fx := TBGRATextEffect.Create(text,FxFont,False,deltaX*FontAntialiasingLevel,0,FontAntialiasingLevel,FontAntialiasingLevel) else\n    fx := TBGRATextEffect.Create(text,FxFont,False,0,0,3,0);\n\n  if fx.TextMask = nil then\n  begin\n    fx.Free;\n    FxFont.Free;\n    exit;\n  end;\n  alphaMax := 0;\n  prevCenter := 0;\n  newCenter := 0;\n  for yb := 0 to nbLines-1 do\n  begin\n    if yb= 0 then fromy := 0\n     else fromy := lines[yb-1];\n\n    if lines[yb] > fromy then\n    begin\n      if useClearType then\n        parts[yb] := TGrayscaleMask.CreateDownSample(fx.TextMask,\n                       HalfUp(fx.TextMask.Width / FontAntialiasingLevel * 3),\n                       HalfUp((lines[yb] - fromy) / FontAntialiasingLevel),\n                       rect(0, fromy, fx.TextMask.Width, lines[yb]) )\n      else\n        parts[yb] := TGrayscaleMask.CreateDownSample(fx.TextMask,\n                       HalfUp(fx.TextMask.Width / FontAntialiasingLevel),\n                       HalfUp((lines[yb] - fromy) / FontAntialiasingLevel),\n                       rect(0, fromy, fx.TextMask.Width, lines[yb]) );\n\n      if alphaMax < 255 then\n      begin\n        pmask := parts[yb].Data;\n        for n := parts[yb].NbPixels-1 downto 0 do\n        begin\n          if pmask^ > alphaMax then alphaMax := pmask^;\n          inc(pmask);\n        end;\n      end;\n\n      if yb < 2 then\n      begin\n        IncF(newCenter, parts[yb].Height);\n        IncF(prevCenter, lines[yb]-fromy);\n      end else\n      if yb = 2 then\n      begin\n        IncF(newCenter, parts[yb].Height/2);\n        IncF(prevCenter, (lines[yb]-fromy)/2);\n      end;\n    end else\n      parts[yb] := nil;\n  end;\n\n  prevCenter := prevCenter / FontAntialiasingLevel;\n  diffCenter := prevCenter-newCenter;\n  y := HalfUp( yf + diffCenter );\n\n  xThird := 0;\n  if useClearType then\n  begin\n    case align of\n    taCenter: xThird:= xThird+HalfUp(((fx.TextMaskOffset.x-fx.TextWidth/2)/FontAntialiasingLevel+deltaX)*3);\n    taRightJustify: xThird:= xThird+HalfUp(((fx.TextMaskOffset.x-fx.TextWidth)/FontAntialiasingLevel+deltaX)*3);\n    else xThird:= xThird+HalfUp((fx.TextMaskOffset.x/FontAntialiasingLevel+deltaX)*3);\n    end;\n  end else\n  begin\n    case align of\n    taCenter: x:= x+HalfUp((fx.TextMaskOffset.x-fx.TextWidth/2)/FontAntialiasingLevel);\n    taRightJustify: x:= x+HalfUp((fx.TextMaskOffset.x-fx.TextWidth)/FontAntialiasingLevel);\n    else x:= x+HalfUp(fx.TextMaskOffset.x/FontAntialiasingLevel);\n    end;\n  end;\n  cury := y+HalfUp(fx.TextMaskOffset.y/FontAntialiasingLevel);\n  for yb := 0 to nbLines-1 do\n  if parts[yb] <> nil then\n  begin\n    if (alphaMax > 0) and (alphaMax < 255) then\n    begin\n      pmask := parts[yb].data;\n      for n := parts[yb].NbPixels-1 downto 0 do\n      begin\n        pmask^ := pmask^*255 div alphaMax;\n        inc(pmask);\n      end;\n    end;\n    if useClearType then\n      BGRAFillClearTypeGrayscaleMask(bmp,x,cury,xThird,parts[yb],color,tex,ClearTypeRGBOrder)\n    else if mode = irMask then\n      parts[yb].Draw(bmp,x,cury)\n    else\n    begin\n      if tex <> nil then\n        parts[yb].DrawAsAlpha(bmp,x,cury,tex) else\n        parts[yb].DrawAsAlpha(bmp,x,cury,color);\n    end;\n    inc(cury,parts[yb].Height);\n    parts[yb].Free;\n  end;\n\n  fx.Free;\n  FxFont.Free;\nend;\n\nprocedure BGRAReplace(var Destination: TBGRACustomBitmap; Temp: TObject);\nbegin\n  Destination.Free;\n  Destination := Temp as TBGRACustomBitmap;\nend;\n\nfunction TextShadow(AWidth,AHeight: Integer; AText: String; AFontHeight: Integer; ATextColor,AShadowColor: TBGRAPixel;\n  AOffsetX,AOffsetY: Integer; ARadius: Integer = 0; AFontStyle: TFontStyles = []; AFontName: String = 'Default'; AShowText: Boolean = True;\n  AFontQuality: TBGRAFontQuality = fqFineAntialiasing): TBGRACustomBitmap;\nvar\n  bmpOut,bmpSdw: TBGRACustomBitmap; OutTxtSize: TSize; OutX,OutY: Integer;\nbegin\n  bmpOut:= BGRABitmapFactory.Create(AWidth,AHeight);\n  bmpOut.FontAntialias:= True;\n  bmpOut.FontHeight:= AFontHeight;\n  bmpOut.FontStyle:= AFontStyle;\n  bmpOut.FontName:= AFontName;\n  bmpOut.FontQuality:= AFontQuality;\n\n  OutTxtSize:= bmpOut.TextSize(AText);\n  OutX:= HalfUp(AWidth/2 - OutTxtSize.cx/2);\n  OutY:= HalfUp(AHeight/2 - OutTxtSize.cy/2);\n\n  bmpSdw:= BGRABitmapFactory.Create(OutTxtSize.cx+2*ARadius,OutTxtSize.cy+2*ARadius);\n  bmpSdw.FontAntialias:= True;\n  bmpSdw.FontHeight:= AFontHeight;\n  bmpSdw.FontStyle:= AFontStyle;\n  bmpSdw.FontName:= AFontName;\n  bmpSdw.FontQuality:= AFontQuality;\n\n  bmpSdw.TextOut(ARadius,ARadius,AText,AShadowColor);\n  BGRAReplace(bmpSdw, BGRAFilterBlur.FilterBlurRadial(bmpSdw, ARadius, ARadius, rbFast));\n  bmpOut.PutImage(OutX+AOffsetX-ARadius,OutY+AOffsetY-ARadius,bmpSdw,dmDrawWithTransparency);\n  bmpSdw.Free;\n\n  if AShowText = True then bmpOut.TextOut(OutX,OutY,AText,ATextColor);\n\n  Result:= bmpOut;\nend;\n\n{ TBGRATextEffectFontRenderer }\n\nfunction TBGRATextEffectFontRenderer.GetShaderLightPosition: TPoint;\nbegin\n  if FShader = nil then\n    result := point(0,0)\n  else\n    result := FShader.LightPosition;\nend;\n\nfunction TBGRATextEffectFontRenderer.GetShaderLightPositionF: TPointF;\nbegin\n  if FShader = nil then\n    result := pointF(0,0)\n  else\n    result := FShader.LightPositionF;\nend;\n\nfunction TBGRATextEffectFontRenderer.GetVectorizedRenderer: TBGRAVectorizedFontRenderer;\nbegin\n  FVectorizedRenderer.FontEmHeight := FontEmHeight;\n  FVectorizedRenderer.FontName := FontName;\n  FVectorizedRenderer.FontOrientation:= FontOrientation;\n  FVectorizedRenderer.FontQuality := FontQuality;\n  FVectorizedRenderer.FontStyle:= FontStyle;\n\n  FVectorizedRenderer.ShadowColor := ShadowColor;\n  FVectorizedRenderer.ShadowVisible := ShadowVisible;\n  FVectorizedRenderer.ShadowOffset := ShadowOffset;\n  FVectorizedRenderer.ShadowRadius := ShadowRadius;\n\n  FVectorizedRenderer.OutlineColor := OutlineColor;\n  FVectorizedRenderer.OutlineVisible := OutlineVisible;\n  FVectorizedRenderer.OutlineWidth := OutlineWidth;\n  FVectorizedRenderer.OutlineTexture := OutlineTexture;\n  FVectorizedRenderer.OuterOutlineOnly := OuterOutlineOnly;\n  FVectorizedRenderer.OutlineJoin := OutlineJoin;\n  result := FVectorizedRenderer;\nend;\n\nprocedure TBGRATextEffectFontRenderer.SetShaderLightPosition(const AValue: TPoint);\nbegin\n  if FShader <> nil then\n    FShader.LightPosition := AValue;\nend;\n\nprocedure TBGRATextEffectFontRenderer.SetShaderLightPositionF(const AValue: TPointF);\nbegin\n  if FShader <> nil then\n    FShader.LightPositionF := AValue;\nend;\n\nfunction TBGRATextEffectFontRenderer.ShadowActuallyVisible: boolean;\nbegin\n  result := ShadowVisible and (ShadowColor.alpha <> 0);\nend;\n\nfunction TBGRATextEffectFontRenderer.ShaderActuallyActive: boolean;\nbegin\n  result := (FShader <> nil) and ShaderActive;\nend;\n\nfunction TBGRATextEffectFontRenderer.OutlineActuallyVisible: boolean;\nbegin\n  result := (OutlineWidth <> 0) and ((OutlineTexture <> nil) or (OutlineColor.alpha <> 0)) and OutlineVisible;\nend;\n\nprocedure TBGRATextEffectFontRenderer.Init;\nbegin\n  ShaderActive := true;\n\n  ShadowColor := BGRABlack;\n  ShadowVisible := false;\n  ShadowOffset := Point(5,5);\n  ShadowRadius := 5;\n  ShadowQuality:= rbFast;\n\n  OutlineColor := BGRAPixelTransparent;\n  OutlineVisible := True;\n  OutlineWidth:= DefaultOutlineWidth;\n  OuterOutlineOnly:= false;\n  OutlineJoin := pjsMiter;\n  FVectorizedRenderer := TBGRAVectorizedFontRenderer.Create;\nend;\n\nfunction TBGRATextEffectFontRenderer.VectorizedFontNeeded(AOrientation: integer): boolean;\n  function IsBigFont: boolean;\n  var textsz: TSize;\n  begin\n    textsz := inherited InternalTextSize('Hg',False);\n    result := (not OutlineActuallyVisible and (textsz.cy >= 24)) or\n       (OutlineActuallyVisible and (textsz.cy > 42));\n  end;\nvar bAntialiasing, bSpecialOutline, bOriented, bEffectVectorizedSupported: boolean;\nbegin\n  bAntialiasing := FontQuality in [fqFineAntialiasing,fqFineClearTypeRGB,fqFineClearTypeBGR];\n  bSpecialOutline:= OutlineActuallyVisible and (abs(OutlineWidth) <> DefaultOutlineWidth);\n  bOriented := AOrientation <> 0;\n  bEffectVectorizedSupported := OutlineActuallyVisible or ShadowActuallyVisible or ShaderActuallyActive;\n  result := bSpecialOutline or\n            (bAntialiasing and IsBigFont) or\n            (bOriented and bEffectVectorizedSupported);\nend;\n\nprocedure TBGRATextEffectFontRenderer.InternalTextOutAngle(\n  ADest: TBGRACustomBitmap; x, y: single; AOrientation: integer; sUTF8: string; \n  c: TBGRAPixel; texture: IBGRAScanner; align: TAlignment;  \n  AShowPrefix: boolean = false; ARightToLeft: boolean = false);\n\n  procedure DrawFX(fx: TBGRATextEffect; x,y: single; outline: boolean);\n    procedure DoOutline;\n    begin\n      if OutlineActuallyVisible then\n      begin\n        if OutlineTexture <> nil then\n          fx.DrawOutline(ADest,HalfUp(x),HalfUp(y), OutlineTexture, align)\n        else\n          fx.DrawOutline(ADest,HalfUp(x),HalfUp(y), OutlineColor, align);\n      end;\n    end;\n  begin\n    if ShadowActuallyVisible then\n    begin\n      fx.ShadowQuality := ShadowQuality;\n      fx.DrawShadow(ADest,HalfUp(x)+ShadowOffset.X,HalfUp(y)+ShadowOffset.Y,ShadowRadius,ShadowColor, align);\n    end;\n    if outline and OuterOutlineOnly then DoOutline;\n    if texture <> nil then\n    begin\n      if ShaderActuallyActive then\n        fx.DrawShaded(ADest,HalfUp(x),HalfUp(y), Shader, HalfUp(fx.TextSize.cy*0.05), texture, align)\n      else\n        fx.Draw(ADest,HalfUp(x),HalfUp(y), texture, align);\n    end else\n    begin\n      if ShaderActuallyActive then\n        fx.DrawShaded(ADest,HalfUp(x),HalfUp(y), Shader, HalfUp(fx.TextSize.cy*0.05), c, align)\n      else\n        fx.Draw(ADest,HalfUp(x),HalfUp(y), c, align);\n    end;\n    if outline and not OuterOutlineOnly then DoOutline;\n  end;\n\n  procedure ComplexVectorized;\n  var\n    p: TBGRAPath;\n    w: single;\n    f: TBGRAMultishapeFiller;\n    s: TBGRAPenStroker;\n    mask, shaded: TBGRACustomBitmap;\n    boundsF: TRectF;\n    b: TRect;\n    fx: TBGRATextEffect;\n    oldShaderLightPos: TPoint;\n    h: integer;\n  begin\n    p := TBGRAPath.Create;\n    try\n      p.translate(x-0.5,y-0.5);\n      p.rotateDeg(-AOrientation/10);\n      VectorizedFontRenderer.CopyTextPathTo(p,0,0,sUTF8,align,ARightToLeft);\n      if abs(OutlineWidth) < 3 then\n        w := abs(OutlineWidth)*2/3\n      else\n        w := abs(OutlineWidth)-1;\n      if p.IsEmpty then\n        boundsF := EmptyRectF\n      else\n      begin\n        boundsF := p.GetBounds;\n        DecF(boundsF.Left, 1);\n        DecF(boundsF.Top, 1);\n        IncF(boundsF.Right, 1);\n        IncF(boundsF.Bottom, 1);\n        if ShadowActuallyVisible then\n        begin\n          DecF(boundsF.Left, ShadowRadius);\n          DecF(boundsF.Top, ShadowRadius);\n          IncF(boundsF.Right, ShadowRadius);\n          IncF(boundsF.Bottom, ShadowRadius);\n        end;\n        boundsF := TRectF.Intersect(boundsF, RectF(0,0,ADest.Width,ADest.Height));\n      end;\n      if not boundsF.IsEmpty then\n      begin\n        with boundsF do\n          b := rect(floor(left),floor(top),ceil(right),ceil(bottom));\n        shaded := nil;\n        try\n          if ShaderActuallyActive or ShadowActuallyVisible then\n          begin\n            mask := BGRABitmapFactory.Create(b.Width,b.Height,BGRABlack);\n            try\n              mask.LinearAntialiasing:= true;\n              mask.FillPath(p, AffineMatrixTranslation(-b.Left,-b.Top), BGRAWhite);\n              fx := TBGRATextEffect.Create(mask, false, mask.Width,mask.Height, Point(0,0));\n              if ShaderActuallyActive then\n              begin\n                shaded := ADest.NewBitmap(mask.Width,mask.Height);\n                oldShaderLightPos := Shader.LightPosition;\n                Shader.LightPosition := Point(Shader.LightPosition.X - b.Left,\n                                              Shader.LightPosition.Y - b.Top); \n                h := VectorizedFontRenderer.TextSize('Hg').cy;\n                if texture <> nil then\n                  fx.DrawShaded(shaded, 0,0, Shader, HalfUp(h*0.05), texture, taLeftJustify)\n                else\n                  fx.DrawShaded(shaded, 0,0, Shader, HalfUp(h*0.05), c, taLeftJustify);\n                Shader.LightPosition := oldShaderLightPos;\n                shaded.AlphaFill(255);\n                shaded.ScanOffset := Point(-b.Left,-b.Top);\n              end;\n              if ShadowActuallyVisible then\n              begin\n                fx.ShadowQuality := ShadowQuality;\n                fx.DrawShadow(ADest,b.Left+ShadowOffset.X,b.Top+ShadowOffset.Y,ShadowRadius,ShadowColor, taLeftJustify);\n              end;\n              fx.Free;\n            finally\n              mask.Free;\n            end;\n          end;\n          s := nil;\n          f := TBGRAMultishapeFiller.Create;\n          if shaded<>nil then\n            f.AddPathFill(p, shaded) else\n          if texture<>nil then\n            f.AddPathFill(p, texture)\n          else\n            f.AddPathFill(p, c);\n          if OutlineActuallyVisible then\n          begin\n            s := TBGRAPenStroker.Create;\n            f.AddPathStroke(p, OutlineColor, w, s);\n          end;\n          if OuterOutlineOnly then\n            f.PolygonOrder:= poFirstOnTop\n          else\n            f.PolygonOrder:= poLastOnTop;\n          if ADest.LinearAntialiasing then\n            f.Draw(ADest, dmLinearBlend)\n          else\n            f.Draw(ADest, dmDrawWithTransparency);\n          f.Free;\n          s.Free;\n        finally\n          shaded.Free;\n        end;\n      end;\n    finally\n      p.Free;\n    end;\n  end;\n\nvar fx: TBGRATextEffect;\nbegin\n  if VectorizedFontNeeded(AOrientation) then\n  begin\n    if ShaderActuallyActive or ShadowActuallyVisible then\n      ComplexVectorized else\n    begin\n      if texture<>nil then\n        VectorizedFontRenderer.TextOutAngle(ADest,x,y,AOrientation,sUTF8,texture,align,ARightToLeft)\n      else\n        VectorizedFontRenderer.TextOutAngle(ADest,x,y,AOrientation,sUTF8,c,align,ARightToLeft);\n    end;\n  end else\n  if (AOrientation = 0) and (ShaderActuallyActive or ShadowActuallyVisible or OutlineActuallyVisible) then\n  begin\n    fx := TBGRATextEffect.Create(sUTF8, FFont, \n       FontQuality in[fqFineAntialiasing,fqFineClearTypeBGR,fqFineClearTypeRGB], \n       x-floor(x), y-floor(y));\n    DrawFX(fx, x,y, true);\n    fx.Free;\n  end else\n    inherited InternalTextOutAngle(ADest,x,y,AOrientation,sUTF8,c,texture,align,AShowPrefix,ARightToLeft);\nend;\n\nconstructor TBGRATextEffectFontRenderer.Create;\nbegin\n  inherited Create;\n  FShader := nil;\n  FShaderOwner:= false;\n  Init;\nend;\n\nconstructor TBGRATextEffectFontRenderer.Create(AShader: TCustomPhongShading;\n  AShaderOwner: boolean);\nbegin\n  inherited Create;\n  Init;\n  FShader := AShader;\n  FShaderOwner := AShaderOwner;\nend;\n\ndestructor TBGRATextEffectFontRenderer.Destroy;\nbegin\n  if FShaderOwner then FShader.Free;\n  FVectorizedRenderer.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRATextEffectFontRenderer.TextVisible(const AColor: TBGRAPixel): boolean;\nbegin\n  Result:= inherited TextVisible(AColor) or OutlineActuallyVisible\n    or ShadowActuallyVisible;\nend;\n\nfunction TBGRATextEffectFontRenderer.TextSize(sUTF8: string): TSize;\nbegin\n  if VectorizedFontNeeded(0) then\n    result := VectorizedFontRenderer.TextSize(sUTF8)\n  else\n    result := inherited TextSize(sUTF8);\nend;\n\nfunction TBGRATextEffectFontRenderer.TextSizeAngle(sUTF8: string; \n  orientationTenthDegCCW: integer): TSize; \nbegin\n  if VectorizedFontNeeded(orientationTenthDegCCW) then\n    result := VectorizedFontRenderer.TextSizeAngle(sUTF8, orientationTenthDegCCW)\n  else\n    result := inherited TextSizeAngle(sUTF8, orientationTenthDegCCW); \nend;\n\nfunction TBGRATextEffectFontRenderer.TextSize(sUTF8: string;\n  AMaxWidth: integer; ARightToLeft: boolean): TSize;\nbegin\n  if VectorizedFontNeeded(FontOrientation) then\n    result := VectorizedFontRenderer.TextSize(sUTF8, AMaxWidth, ARightToLeft)\n  else\n    result := inherited TextSize(sUTF8, AMaxWidth, ARightToLeft);\nend;\n\nfunction TBGRATextEffectFontRenderer.TextFitInfo(sUTF8: string;\n  AMaxWidth: integer): integer;\nbegin\n  if VectorizedFontNeeded(FontOrientation) then\n    result := VectorizedFontRenderer.TextFitInfo(sUTF8, AMaxWidth)\n  else\n    result := inherited TextFitInfo(sUTF8, AMaxWidth)\nend;\n\n{ TBGRATextEffect }\n\nprocedure TBGRATextEffect.InitImproveReadability(AText: string; Font: TFont;\n  SubOffsetX, SubOffsetY: single);\nvar size: TSize;\n  overhang: integer;\n  temp: TBGRACustomBitmap;\nbegin\n  FShadowQuality:= rbFast;\n  if SubOffsetX < 0 then SubOffsetX := 0;\n  if SubOffsetY < 0 then SubOffsetY := 0;\n  size := BGRATextSize(Font, fqFineAntialiasing, AText, FontAntialiasingLevel);\n  FTextSize := size;\n  if size.cy = 0 then FTextSize.cy := BGRATextSize(Font, fqFineAntialiasing, 'Hg', FontAntialiasingLevel).cy;\n  overhang := size.cy div 2;\n  inc(size.cx, 2*overhang + ceil(SubOffsetX) );\n  inc(size.cy, 2 + ceil(SubOffsetY) );\n\n  FOffset := Point(-overhang,-1); //include overhang\n  temp := BGRABitmapFactory.Create(size.cx, size.cy, BGRABlack);\n  BGRATextOutImproveReadability(temp, Font, overhang+SubOffsetX,1+SubOffsetY, AText, BGRAWhite, nil, taLeftJustify, irMask);\n  FTextMask := TGrayscaleMask.Create;\n  FTextMask.CopyFrom(temp, cGreen);\n  temp.Free;\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; Font: TFont;\n  Antialiasing: boolean; SubOffsetX,SubOffsetY: single);\nbegin\n  Init(AText, Font, Antialiasing, SubOffsetX, SubOffsetY, 0,0);\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; Font: TFont;\n  Antialiasing: boolean; SubOffsetX, SubOffsetY: single; GrainX, GrainY: Integer\n  );\nbegin\n  Init(AText, Font, Antialiasing, SubOffsetX, SubOffsetY, GrainX, GrainY);\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; AFontName: string;\n  AFullHeight: integer; Antialiasing: boolean);\nbegin\n  InitWithFontName(AText, AFontName, AFullHeight, [], Antialiasing, 0, 0);\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; AFontName: string;\n  AFullHeight: integer; Antialiasing: boolean; SubOffsetX, SubOffsetY: single);\nbegin\n  InitWithFontName(AText, AFontName, AFullHeight, [], Antialiasing, SubOffsetX, SubOffsetY);\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; AFontName: string;\n  AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean);\nbegin\n  InitWithFontName(AText, AFontName, AFullHeight, AStyle, Antialiasing, 0, 0);\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; AFontName: string;\n  AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean; SubOffsetX,\n  SubOffsetY: single);\nbegin\n  InitWithFontName(AText, AFontName, AFullHeight, AStyle, Antialiasing, SubOffsetX, SubOffsetY);\nend;\n\nprocedure TBGRATextEffect.Init(AText: string; Font: TFont; Antialiasing: boolean; SubOffsetX,SubOffsetY: single; GrainX, GrainY: Integer);\nconst FXAntialiasingLevel = FontAntialiasingLevel;\nvar temp: TBGRACustomBitmap;\n\ttempBmp: TBitmap;\n    size: TSize;\n    p: PByte;\n    n,maxAlpha: integer;\n    alpha: byte;\n    sizeX,sizeY: integer;\n    onePixel: integer;\n    quality: TBGRAFontQuality;\n    iSubX,iSubY: integer;\nbegin\n  if IsLclFontRendererFine then Antialiasing := false;\n  FShadowQuality := rbFast;\n  if Antialiasing and Assigned(BGRATextOutImproveReadabilityProc) then\n  begin\n    InitImproveReadability(AText, Font, SubOffsetX,SubOffsetY);\n    exit;\n  end;\n  if Antialiasing and not IsLclFontRendererFine then\n    quality := fqFineAntialiasing\n  else\n    quality := fqSystem;\n  size := BGRAOriginalTextSize(Font,quality,AText,FXAntialiasingLevel);\n  if (size.cx = 0) or (size.cy = 0) then\n  begin\n    size := BGRATextSize(Font,quality,'Hg',FXAntialiasingLevel);\n    FTextSize.cx := 0;\n    FTextSize.cy := size.cy;\n    FOffset := Point(0,0);\n    exit;\n  end;\n  FTextSize := size;\n\n  sizeX := size.cx+size.cy;\n  sizeY := size.cy;\n\n  iSubX := 0;\n  iSubY := 0;\n  if SubOffsetX < 0 then SubOffsetX := 0;\n  if SubOffsetY < 0 then SubOffsetY := 0;\n\n  if Antialiasing then\n  begin\n    inc(sizeX, FXAntialiasingLevel-1);\n    dec(sizeX, sizeX mod FXAntialiasingLevel);\n\n    inc(sizeY, FXAntialiasingLevel-1);\n    dec(sizeY, sizeY mod FXAntialiasingLevel);\n\n    if SubOffsetX <> 0 then\n    begin\n      inc(sizeX, ceil(SubOffsetX*FXAntialiasingLevel) );\n      iSubX := HalfUp(SubOffsetX*FXAntialiasingLevel);\n    end;\n    if SubOffsetY <> 0 then\n    begin\n      inc(sizeY, ceil(SubOffsetY*FXAntialiasingLevel) );\n      iSubY := HalfUp(SubOffsetY*FXAntialiasingLevel);\n    end;\n\n    OnePixel := FXAntialiasingLevel;\n  end else\n  begin\n    OnePixel := 1;\n\n    if SubOffsetX <> 0 then\n    begin\n      iSubX := HalfUp(SubOffsetX);\n      inc(sizeX, iSubX);\n    end;\n    if SubOffsetY <> 0 then\n    begin\n      iSubY := HalfUp(SubOffsetY);\n      inc(sizeY, iSubY);\n    end;\n  end;\n  FOffset := Point(-size.cy div 2,-OnePixel); //include overhang\n\n  if GrainX > 0 then\n  begin\n    inc(SizeX, GrainX-1);\n    dec(SizeX, SizeX mod GrainX);\n  end;\n  if GrainY > 0 then\n  begin\n    inc(SizeY, GrainY-1);\n    dec(SizeY, SizeY mod GrainY);\n  end;\n  if RenderTextOnBitmap then\n  begin\n    tempBmp := TBitmap.Create;\n    tempBmp.Width := sizeX;\n    tempBmp.Height := sizeY+2*OnePixel;\n    BitmapFillRect(tempBmp, rect(0,0,tempBmp.Width,tempBmp.Height), clBlack);\n    tempBmp.Canvas.Font := Font;\n    tempBmp.Canvas.Font.Orientation := 0;\n    tempBmp.Canvas.Font.Height := Font.Height*OnePixel;\n    tempBmp.Canvas.Font.Color := clWhite;\n    tempBmp.Canvas.Font.Quality := FontDefaultQuality;\n    BitmapTextOut(tempBmp, Point(-FOffset.X+iSubX, -FOffset.Y+iSubY), AText);\n    temp := BGRABitmapFactory.Create(tempBmp);\n    tempBmp.Free;\n  end else\n  begin\n    temp := BGRABitmapFactory.Create(sizeX, sizeY+2*OnePixel,clBlack);\n    temp.Canvas.Font := Font;\n    temp.Canvas.Font.Orientation := 0;\n    temp.Canvas.Font.Height := Font.Height*OnePixel;\n    temp.Canvas.Font.Color := clWhite;\n    temp.Canvas.Font.Quality := FontDefaultQuality;\n    BitmapTextOut(temp.Bitmap, Point(-FOffset.X+iSubX, -FOffset.Y+iSubY), AText);\n  end;\n\n  if Antialiasing then\n  begin\n    FTextSize.cx := HalfUp(FTextSize.cx/FXAntialiasingLevel);\n    FTextSize.cy := HalfUp(FTextSize.cy/FXAntialiasingLevel);\n    FOffset := Point(HalfUp(FOffset.X/FXAntialiasingLevel),HalfUp(FOffset.Y/FXAntialiasingLevel));\n\n    FTextMask := TGrayscaleMask.CreateDownSample(temp, HalfUp(temp.width/FXAntialiasingLevel),\n                   HalfUp(temp.Height/FXAntialiasingLevel));\n    temp.Free;\n\n    maxAlpha := 0;\n    p := FTextMask.Data;\n    for n := FTextMask.NbPixels - 1 downto 0 do\n    begin\n      alpha    := P^;\n      if alpha > maxAlpha then maxAlpha := alpha;\n      Inc(p);\n    end;\n    if maxAlpha <> 0 then\n    begin\n      p := FTextMask.Data;\n      for n := FTextMask.NbPixels - 1 downto 0 do\n      begin\n        p^:= integer(p^ * 255) div maxAlpha;\n        Inc(p);\n      end;\n    end;\n  end\n  else\n  begin\n    FTextMask := TGrayscaleMask.Create(temp, cGreen);\n    temp.Free;\n\n    p := FTextMask.data;\n    for n := FTextMask.NbPixels-1 downto 0 do\n      p^ := GammaExpansionTab[p^] shr 8;\n  end;\nend;\n\nprocedure TBGRATextEffect.InitWithFontName(AText: string; AFontName: string;\n  AFullHeight: integer; AStyle: TFontStyles; Antialiasing: boolean; SubOffsetX, SubOffsetY: single);\nvar lFont: TFont;\nbegin\n  lFont := TFont.Create;\n  lFont.Name := AFontName;\n  lFont.Height := AFullHeight * FontFullHeightSign;\n  lFont.Style := AStyle;\n  Init(AText, lFont, Antialiasing, SubOffsetX, SubOffsetY, 0,0);\n  lFont.Free;\nend;\n\nconstructor TBGRATextEffect.Create(AText: string; Font: TFont;\n  Antialiasing: boolean);\nbegin\n  Init(AText, Font, Antialiasing, 0,0,0,0);\nend;\n\ninitialization\n\n  BGRATextOutImproveReadabilityProc := @BGRATextOutImproveReadability;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrathumbnail.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Computation of thumbnails for all image formats }\nunit BGRAThumbnail;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmap, BGRABitmapTypes, FPimage;\n\nfunction GetBitmapThumbnail(ABitmap: TBGRACustomBitmap; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil; AVerticalShrink: single = 1; AHorizShrink: single = 1): TBGRABitmap; overload;\nfunction GetBitmapThumbnail(ABitmap: TBGRACustomBitmap; AFormat: TBGRAImageFormat; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil; AVerticalShrink: single = 1; AHorizShrink: single = 1): TBGRABitmap; overload;\nfunction GetFileThumbnail(AFilenameUTF8: string; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetStreamThumbnail(AStream: TStream; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ASuggestedExtensionUTF8: string = ''; ADest: TBGRABitmap= nil): TBGRABitmap; overload;\nfunction GetStreamThumbnail(AStream: TStream; AReader: TFPCustomImageReader; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap; overload;\n\nfunction GetOpenRasterThumbnail(AStream: TStream; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetLazPaintThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetPhoxoThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetJpegThumbnail(AStream: TStream; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetPsdThumbnail(AStream: TStream; AWidth,AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetPngThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetPaintDotNetThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetBmpThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetIcoThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetCurThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\n\nfunction GetPcxThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetTargaThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetTiffThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetGifThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetXwdThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetXPixMapThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nfunction GetBmpMioMapThumbnail(AStream: TStream; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\n\nprocedure DrawThumbnailCheckers(bmp: TBGRABitmap; ARect: TRect; AIconCheckers: boolean = false);\nprocedure DrawThumbnailCheckers(bmp: TBGRABitmap; ARect: TRect; AIconCheckers: boolean; AScale: single);\n\nvar\n  ImageCheckersColor1,ImageCheckersColor2  : TBGRAPixel;\n  IconCheckersColor1,IconCheckersColor2  : TBGRAPixel;\n  CheckersScale: single = 1;\n\nimplementation\n\nuses base64, BGRAUTF8,\n     DOM, XMLRead, BGRAReadJPEG, BGRAReadPng, BGRAReadGif, BGRAReadBMP,\n     BGRAReadPSD, BGRAReadIco, UnzipperExt, BGRAReadLzp;\n\nprocedure DrawThumbnailCheckers(bmp: TBGRABitmap; ARect: TRect;\n  AIconCheckers: boolean);\nbegin\n  DrawThumbnailCheckers(bmp, ARect,  AIconCheckers, CheckersScale);\nend;\n\nprocedure DrawThumbnailCheckers(bmp: TBGRABitmap; ARect: TRect; AIconCheckers: boolean; AScale: single);\nbegin\n  if AIconCheckers then\n    bmp.DrawCheckers(ARect, IconCheckersColor1, IconCheckersColor2, round(8*AScale), round(8*AScale))\n  else\n    bmp.DrawCheckers(ARect, ImageCheckersColor1, ImageCheckersColor2, round(8*AScale), round(8*AScale));\nend;\n\nfunction InternalGetBitmapThumbnail(ABitmap: TBGRACustomBitmap; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean;\n  ADest: TBGRABitmap; AVerticalShrink: single = 1; AHorizShrink: single = 1; AShowHotSpot: boolean = false; ADarkCheckers: boolean = false): TBGRABitmap;\nvar\n  factorX, factorY, factor: single;\n  xIcon,yIcon,wIcon,hIcon: Integer;\n  hotspot: TPoint;\nbegin\n  result := nil;\n  try\n    if (ABitmap <> nil) and (ABitmap.Width <> 0) and (ABitmap.Height <> 0) then\n    begin\n      If Assigned(ADest) then\n      begin\n        result := ADest;\n        result.SetSize(AWidth,AHeight);\n        result.Fill(ABackColor);\n      end else\n        result := TBGRABitmap.Create(AWidth,AHeight,ABackColor);\n      factorX := result.Width/(ABitmap.Width*AHorizShrink);\n      factorY := result.Height/(ABitmap.Height*AVerticalShrink);\n      if factorX < factorY then factor := factorX else factor := factorY;\n      wIcon := round(ABitmap.Width*AHorizShrink*factor);\n      if wIcon = 0 then wIcon := 1;\n      hIcon := round(ABitmap.Height*AVerticalShrink*factor);\n      if hIcon = 0 then hIcon := 1;\n      xIcon:= (result.Width-wIcon) div 2;\n      yIcon:= (result.Height-hIcon) div 2;\n      if ACheckers then DrawThumbnailCheckers(result,Rect(xIcon,yIcon,xIcon+wIcon,yIcon+hIcon),ADarkCheckers,CheckersScale);\n      if AShowHotSpot and (wIcon > 0) and (hIcon > 0) then\n      begin\n        hotspot := Point(xIcon+ABitmap.HotSpot.X*wIcon div ABitmap.Width,yIcon+ABitmap.HotSpot.Y*hIcon div ABitmap.Height);\n        result.HorizLine(xIcon,hotspot.y-1,xIcon+wIcon-1,CSSLime,dmDrawWithTransparency);\n        result.HorizLine(xIcon,hotspot.y,xIcon+wIcon-1,CSSLime,dmDrawWithTransparency);\n        result.HorizLine(xIcon,hotspot.y+1,xIcon+wIcon-1,CSSLime,dmDrawWithTransparency);\n        result.VertLine(hotspot.x-1,yIcon,yIcon+hIcon-1,CSSLime,dmDrawWithTransparency);\n        result.VertLine(hotspot.x,yIcon,yIcon+hIcon-1,CSSLime,dmDrawWithTransparency);\n        result.VertLine(hotspot.x+1,yIcon,yIcon+hIcon-1,CSSLime,dmDrawWithTransparency);\n      end;\n      if (ABackColor.alpha <> 0) or ACheckers then\n        result.StretchPutImage(Rect(xIcon,yIcon,xIcon+wIcon,yIcon+hIcon),ABitmap,dmDrawWithTransparency) else\n        result.StretchPutImage(Rect(xIcon,yIcon,xIcon+wIcon,yIcon+hIcon),ABitmap,dmSet);\n      if AShowHotSpot and (wIcon > 0) and (hIcon > 0) then\n      begin\n        result.HorizLine(xIcon,yIcon+ABitmap.HotSpot.Y*hIcon div ABitmap.Height,xIcon+wIcon-1,BGRA(255,0,255,96),dmDrawWithTransparency);\n        result.VertLine(xIcon+ABitmap.HotSpot.X*wIcon div ABitmap.Width,yIcon,yIcon+hIcon-1,BGRA(255,0,255,96),dmDrawWithTransparency);\n      end;\n    end;\n  except\n  end;\nend;\n\nfunction GetBitmapThumbnail(ABitmap: TBGRACustomBitmap; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap = nil;\n  AVerticalShrink: single = 1; AHorizShrink: single = 1): TBGRABitmap;\nbegin\n  result := InternalGetBitmapThumbnail(ABitmap,AWidth,AHeight,ABackColor,ACheckers,ADest,AVerticalShrink,AHorizShrink,\n                                       false,false);\nend;\n\nfunction GetBitmapThumbnail(ABitmap: TBGRACustomBitmap; AFormat: TBGRAImageFormat; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap = nil; AVerticalShrink: single = 1; AHorizShrink: single = 1): TBGRABitmap;\nbegin\n  result := InternalGetBitmapThumbnail(ABitmap,AWidth,AHeight,ABackColor,ACheckers,ADest,AVerticalShrink,AHorizShrink,\n                                       AFormat = ifCur, AFormat in[ifCur,ifIco]);\n\nend;\n\nfunction GetFileThumbnail(AFilenameUTF8: string; AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar stream: TFileStreamUTF8;\nbegin\n  result := nil;\n  try\n    stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead or fmShareDenyWrite);\n  except\n    exit;\n  end;\n  try\n    result := GetStreamThumbnail(stream, AWidth,AHeight,ABackColor,ACheckers,ExtractFileExt(AFilenameUTF8),ADest);\n  finally\n    stream.free;\n  end;\nend;\n\nfunction GetStreamThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ASuggestedExtensionUTF8: string;\n  ADest: TBGRABitmap): TBGRABitmap;\nvar\n  ff: TBGRAImageFormat;\n  reader: TFPCustomImageReader;\nbegin\n  ff := DetectFileFormat(AStream,ASuggestedExtensionUTF8);\n  case ff of\n    ifJpeg: result := GetJpegThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifIco: result := GetIcoThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifCur: result := GetCurThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifPaintDotNet: result := GetPaintDotNetThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifLazPaint: result := GetLazPaintThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifOpenRaster: result := GetOpenRasterThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifPhoxo: result := GetPhoxoThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    ifPsd: result := GetPsdThumbnail(AStream, AWidth,AHeight, ABackColor, ACheckers, ADest);\n    else\n    begin\n      if (ff = ifUnknown) or (DefaultBGRAImageReader[ff] = nil) then\n        result := nil\n      else\n      begin\n        result := nil;\n        reader := nil;\n        try\n          reader := CreateBGRAImageReader(ff);\n          if reader is TBGRAReaderBMP then\n            TBGRAReaderBMP(reader).TransparencyOption:= toAuto;\n          result := GetStreamThumbnail(AStream, reader, AWidth, AHeight, ABackColor, ACheckers, ADest);\n        finally\n          reader.Free;\n        end;\n      end;\n    end;\n  end;\nend;\n\nfunction GetStreamThumbnail(AStream: TStream; AReader: TFPCustomImageReader;\n  AWidth, AHeight: integer; ABackColor: TBGRAPixel; ACheckers: boolean;\n  ADest: TBGRABitmap): TBGRABitmap;\nvar\n  bmp: TBGRACustomBitmap;\n  AOriginalWidth, AOriginalHeight: integer;\nbegin\n  if AReader is TBGRAImageReader then\n  begin\n    bmp := nil;\n    try\n      bmp := TBGRAImageReader(AReader).GetBitmapDraft(AStream, AWidth,AHeight, AOriginalWidth,AOriginalHeight);\n      if Assigned(bmp) and (bmp.Height <> 0) and (bmp.Width <> 0) then\n        result := GetBitmapThumbnail(bmp, AWidth, AHeight, ABackColor, ACheckers, ADest,\n                    AOriginalHeight/bmp.Height, AOriginalWidth/bmp.Width);\n    except\n      result := nil;\n    end;\n    bmp.free;\n    exit;\n  end;\n\n  bmp := TBGRABitmap.Create;\n  try\n    bmp.LoadFromStream(AStream, AReader);\n  except\n    FreeAndNil(bmp);\n  end;\n  if bmp = nil then\n    result := nil\n  else\n  begin\n    result := GetBitmapThumbnail(bmp, AWidth, AHeight, ABackColor, ACheckers, ADest);\n    bmp.Free;\n  end;\nend;\n\nfunction GetOpenRasterThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  unzip: TUnzipperStreamUtf8;\n  png: TMemoryStream;\nbegin\n  result := nil;\n  unzip := TUnzipperStreamUtf8.Create;\n  try\n    unzip.InputStream := AStream;\n    png := TMemoryStream.Create;\n    try\n      if unzip.UnzipFileToStream('Thumbnails\\thumbnail.png', png, False) then\n      begin\n        png.Position:= 0;\n        result := GetPngThumbnail(png,AWidth,AHeight,ABackColor,ACheckers,ADest);\n      end else\n      begin\n        png.Clear;\n        if unzip.UnzipFileToStream('mergedimage.png', png, False) then\n        begin\n          png.Position:= 0;\n          result := GetPngThumbnail(png,AWidth,AHeight,ABackColor,ACheckers,ADest);\n        end;\n      end;\n    finally\n      png.Free;\n    end;\n  except\n  end;\n  unzip.Free;\nend;\n\nfunction GetLazPaintThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TBGRAReaderLazPaint;\nbegin\n  reader:= TBGRAReaderLazPaint.Create;\n  reader.WantThumbnail := true;\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers,ADest);\n  reader.Free;\nend;\n\nfunction GetPhoxoThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  if DefaultBGRAImageReader[ifPhoxo] = nil then\n    result := nil\n  else\n  begin\n    reader := CreateBGRAImageReader(ifPhoxo);\n    result := GetStreamThumbnail(AStream, reader, AWidth,AHeight,ABackColor,ACheckers,ADest);\n    reader.Free;\n  end;\nend;\n\nfunction GetJpegThumbnail(AStream: TStream; AWidth, AHeight: integer\n  ; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  jpeg: TBGRAReaderJpeg;\nbegin\n  jpeg := TBGRAReaderJpeg.Create;\n  jpeg.Performance := jpBestSpeed;\n  jpeg.MinWidth := AWidth;\n  jpeg.MinHeight := AHeight;\n  result := GetStreamThumbnail(AStream, jpeg, AWidth,AHeight,ABackColor,ACheckers,ADest);\n  jpeg.Free;\nend;\n\nfunction GetPsdThumbnail(AStream: TStream; AWidth, AHeight: integer\n  ; ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  psd: TBGRAReaderPSD;\n  bmp: TBGRABitmap;\nbegin\n  psd:= TBGRAReaderPSD.Create;\n  psd.MinifyHeight:= AHeight;\n  bmp := TBGRABitmap.Create;\n  try\n    bmp.LoadFromStream(AStream, psd);\n  except\n    FreeAndNil(bmp);\n  end;\n  if bmp = nil then\n    result := nil\n  else\n  begin\n    result := GetBitmapThumbnail(bmp, AWidth, AHeight, ABackColor, ACheckers, ADest, psd.Height/bmp.Height);\n    bmp.Free;\n  end;\n  psd.Free;\nend;\n\nfunction GetPngThumbnail(AStream: TStream; AWidth, AHeight: integer;\n    ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap= nil): TBGRABitmap;\nvar\n  pngFormat: TBGRAReaderPNG;\nbegin\n  pngFormat:= TBGRAReaderPNG.Create;\n  result:= GetStreamThumbnail(AStream, pngFormat, AWidth,AHeight, ABackColor, ACheckers, ADest);\n  pngFormat.Free;\nend;\n\nfunction GetPaintDotNetThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  {%H-}magic: packed array[0..6] of byte;\n  xmlHeader: TMemoryStream;\n  xmlHeaderSize: longint;\n  doc: TXMLDocument;\n  custom,thumb,pngNode: TDOMNode;\n  png64: TStringStream;\n  decode64: TBase64DecodingStream;\nbegin\n  result := nil;\n  if AStream.Read({%H-}magic,sizeof(magic)) <> sizeof(magic) then exit;\n  if chr(magic[0])+chr(magic[1])+chr(magic[2])+chr(magic[3]) <> 'PDN3' then exit;\n  xmlHeaderSize := magic[4] + (magic[5] shl 8) + (magic[6] shl 16);\n  if xmlHeaderSize >= 10*1024*1024 then exit;\n  xmlHeader:= TMemoryStream.Create;\n  try\n    if xmlHeader.CopyFrom(AStream,xmlHeaderSize) <> xmlHeaderSize then\n    begin\n      xmlHeader.Free;\n      exit;\n    end;\n  except\n    xmlHeader.Free;\n    exit;\n  end;\n  xmlHeader.Position := 0;\n  try\n    XMLRead.ReadXMLFile(doc, xmlHeader);\n  except\n    xmlHeader.Free;\n    exit;\n  end;\n  xmlHeader.Free;\n  try\n    custom := doc.DocumentElement.FindNode('custom');\n    if Assigned(custom) then\n    begin\n      thumb := custom.FindNode('thumb');\n      if Assigned(thumb) then\n      begin\n        pngNode := thumb.Attributes.GetNamedItem('png');\n        if Assigned(pngNode) then\n        begin\n          png64 := TStringStream.Create(string(pngNode.NodeValue));\n          try\n            png64.Position := 0;\n            decode64 := TBase64DecodingStream.Create(png64);\n            try\n              result := GetPngThumbnail(decode64,AWidth,AHeight,ABackColor,ACheckers, ADest);\n            finally\n              decode64.Free;\n            end;\n          finally\n            png64.free;\n          end;\n        end;\n      end;\n    end;\n  except\n  end;\n  doc.Free;\nend;\n\nfunction GetBmpThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  bmpFormat: TBGRAReaderBMP;\nbegin\n  bmpFormat:= TBGRAReaderBMP.Create;\n  result:= GetStreamThumbnail(AStream, bmpFormat, AWidth,AHeight, ABackColor, ACheckers, ADest);\n  bmpFormat.Free;\nend;\n\nfunction GetIcoThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TBGRAReaderIco;\n  icoBmp: TBGRABitmap;\nbegin\n  result := nil;\n  reader := TBGRAReaderIco.Create;\n  reader.WantedWidth:= AWidth;\n  reader.WantedHeight:= AHeight;\n  icoBmp := TBGRABitmap.Create;\n  try\n    icoBmp.LoadFromStream(AStream, reader);\n    result := GetBitmapThumbnail(icoBmp, ifIco, AWidth, AHeight, ABackColor, ACheckers, ADest);\n  except\n  end;\n  icoBmp.Free;\n  reader.Free;\nend;\n\nfunction GetCurThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TBGRAReaderCur;\n  icoBmp: TBGRABitmap;\nbegin\n  result := nil;\n  reader := TBGRAReaderCur.Create;\n  reader.WantedWidth:= AWidth;\n  reader.WantedHeight:= AHeight;\n  icoBmp := TBGRABitmap.Create;\n  try\n    icoBmp.LoadFromStream(AStream, reader);\n    result := GetBitmapThumbnail(icoBmp, ifCur, AWidth, AHeight, ABackColor, ACheckers, ADest);\n  except\n  end;\n  icoBmp.Free;\n  reader.Free;\nend;\n\nfunction GetPcxThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifPcx);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers,ADest);\n  reader.Free;\nend;\n\nfunction GetTargaThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifTarga);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers, ADest);\n  reader.Free;\nend;\n\nfunction GetTiffThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifTiff);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers,ADest);\n  reader.Free;\nend;\n\nfunction GetGifThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifGif);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers, ADest);\n  reader.Free;\nend;\n\nfunction GetXwdThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifXwd);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers, ADest);\n  reader.Free;\nend;\n\nfunction GetXPixMapThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifXPixMap);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers,ADest);\n  reader.Free;\nend;\n\nfunction GetBmpMioMapThumbnail(AStream: TStream; AWidth, AHeight: integer;\n  ABackColor: TBGRAPixel; ACheckers: boolean; ADest: TBGRABitmap): TBGRABitmap;\nvar\n  reader: TFPCustomImageReader;\nbegin\n  reader:= CreateBGRAImageReader(ifBmpMioMap);\n  result := GetStreamThumbnail(AStream,reader,AWidth,AHeight,ABackColor,ACheckers,ADest);\n  reader.Free;\nend;\n\ninitialization\n\n  IconCheckersColor1 := BGRA(140,180,180);\n  IconCheckersColor2 := BGRA(80,140,140);\n\n  ImageCheckersColor1 := BGRA(255,255,255);\n  ImageCheckersColor2 := BGRA(220,220,220);\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgratransform.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Affine and bitmap transformations }\nunit BGRATransform;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes;\n\ntype\n  { Contains an affine matrix, i.e. a matrix to transform linearly and translate TPointF coordinates }\n  TAffineMatrix = BGRABitmapTypes.TAffineMatrix;\n  { Contains an affine base and information on the resulting box }\n  TAffineBox = BGRABitmapTypes.TAffineBox;\n\n  { Scanner that transforms any other scanner. To use it,\n    create this object with a scanner as parameter, call transformation\n    procedures, and finally, use the newly created object as a scanner.\n\n    You can transform a gradient or a bitmap. See TBGRAAffineBitmapTransform\n    for bitmap specific transformation.\n\n**Example drawing an oblique radial gradient:**\n\n@image(../doc/img/tbgraaffinescannertransform.png)\n\n```pascal\nuses BGRAGradientScanner, BGRATransform;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar image: TBGRABitmap;\n    grad: TBGRAGradientScanner;\n    affine: TBGRAAffineScannerTransform;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  grad := TBGRAGradientScanner.Create(BGRA(0,0,255),BGRAWhite,gtRadial,PointF(0,0),PointF(1,0),True,True);\n\n  affine := TBGRAAffineScannerTransform.Create(grad);\n  affine.Scale(150,80);\n  affine.RotateDeg(-30);\n  affine.Translate(ClientWidth/2, ClientHeight/2);\n\n  image.Fill(affine);\n\n  affine.free;\n  grad.free;\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```\n}\n  TBGRAAffineScannerTransform = class(TBGRACustomScanner)\n  protected\n    FScanner: IBGRAScanner;\n    FScanAtFunc: TScanAtFunction;\n    FCur: TPointF;\n    FEmptyMatrix: Boolean;\n    FMatrix: TAffineMatrix;\n    procedure SetMatrix(AMatrix: TAffineMatrix);\n    function InternalScanCurrentPixel: TBGRAPixel; virtual;\n    function GetViewMatrix: TAffineMatrix;\n    procedure SetViewMatrix(AValue: TAffineMatrix);\n  public\n    GlobalOpacity: Byte;\n    constructor Create(AScanner: IBGRAScanner);\n    procedure Reset;\n    procedure Invert;\n    procedure Translate(OfsX,OfsY: Single);\n    procedure RotateDeg(AngleCW: Single);\n    procedure RotateRad(AngleCCW: Single);\n    procedure MultiplyBy(AMatrix: TAffineMatrix);\n    procedure Fit(Origin,HAxis,VAxis: TPointF); virtual;\n    procedure Scale(sx,sy: single); overload;\n    procedure Scale(factor: single); overload;\n    function GetScanCustomColorspace: TColorspaceAny; override;\n    procedure ScanMoveTo(X, Y: Integer); override;\n    procedure ScanMoveToF(X, Y: single); inline;\n    function ScanNextPixel: TBGRAPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    property Matrix: TAffineMatrix read FMatrix write SetMatrix;\n    property ViewMatrix: TAffineMatrix read GetViewMatrix write SetViewMatrix;\n  end;\n\n  { @abstract(Scanners that applies an affine transform to a bitmap.)\n\n    It is usedful if you don't want the bitmap to repeats itself, or want to specify the\n    resample filter, or want to fit easily the bitmap on axes.\n\n**Example filling with a rotated image:**\n\n@image(../doc/img/tbgraffinebitmaptransform.png)\n\n```pascal\nuses BGRABitmap, BGRABitmapTypes, BGRATransform;\n\nprocedure TForm1.PaintImage;\nvar image: TBGRABitmap;\n    tex: TBGRABitmap;\n    affine: TBGRAAffineBitmapTransform;\n\nbegin\n  //black background\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  tex:= TBGRABitmap.Create('image.png'); //load a bitmap\n\n  //create a rotation of 45°\n  affine := TBGRAAffineBitmapTransform.Create(tex,True);\n  affine.RotateDeg(45);\n\n  //use this transformation as parameter instead of tex\n  image.FillPolyAntialias( [PointF(110,10), PointF(250,10), PointF(350,160), PointF(10,160)], affine);\n\n  affine.Free;\n  tex.Free;\n\n  image.Draw(Canvas,0,0,True); //draw on the screen\n  image.free;\nend;\n```}\n  TBGRAAffineBitmapTransform = class(TBGRAAffineScannerTransform)\n  protected\n    FBitmap: TBGRACustomBitmap;\n    FRepeatImageX,FRepeatImageY: boolean;\n    FResampleFilter : TResampleFilter;\n    FBuffer: PBGRAPixel;\n    FBufferSize: Int32or64;\n    FIncludeEdges: boolean;\n    procedure Init(ABitmap: TBGRACustomBitmap; ARepeatImageX: Boolean= false; ARepeatImageY: Boolean= false; AResampleFilter: TResampleFilter = rfLinear; AIncludeEdges: boolean = false);\n  public\n    constructor Create(ABitmap: TBGRACustomBitmap; ARepeatImage: Boolean= false; AResampleFilter: TResampleFilter = rfLinear; AIncludeEdges: boolean = false); overload;\n    constructor Create(ABitmap: TBGRACustomBitmap; ARepeatImageX: Boolean; ARepeatImageY: Boolean; AResampleFilter: TResampleFilter = rfLinear; AIncludeEdges: boolean = false); overload;\n    destructor Destroy; override;\n    function InternalScanCurrentPixel: TBGRAPixel; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure Fit(Origin, HAxis, VAxis: TPointF); override;\n  end;\n\n  { Scanner for a texture mapped to a quadrilateral shape }\n  TBGRAQuadLinearScanner = class(TBGRACustomScanner)\n  private\n    FPadding: boolean;\n    FPoints,FVectors: array[0..3] of TPointF;\n    FInvLengths,FDets: array[0..3] of single;\n    FCoeffs: array[0..3] of TPointF;\n    aa,bb0,cc0,inv2aa: double;\n    FSource: IBGRAScanner;\n    FSourceMatrix: TAffineMatrix;\n    FUVVector: TPointF;\n\n    ScanParaBB, ScanParaCC, ScanParaBBInv: double;\n\n    ScanVertV0,ScanVertVStep0,ScanVertDenom0,ScanVertDenomStep0: double;\n\n    FHasC1, FHasC2: boolean;\n    FShowC1, FShowC2: boolean;\n    FScanFunc: TScanNextPixelFunction;\n    FCurXF,FCurYF: single;\n    FBuffer: PBGRAPixel;\n    FBufferSize: Int32or64;\n    FTextureInterpolation: Boolean;\n    function GetCulling: TFaceCulling;\n    function ScanNone: TBGRAPixel;\n    function ScanGeneral: TBGRAPixel;\n    procedure PrepareScanVert0;\n    function ScanVert0: TBGRAPixel;\n    procedure PrepareScanPara;\n    function ScanPara: TBGRAPixel;\n    procedure GetTexColorAt(u,v: Single; out AColor: TBGRAPixel; out AIsPadding: boolean); inline;\n    function GetTexColorAt(u,v: Single; detNeg: boolean): TBGRAPixel; inline;\n    procedure ScanMoveToF(X,Y: single); inline;\n    procedure SetCulling(AValue: TFaceCulling);\n    procedure Init(ASource: IBGRAScanner; const APoints: array of TPointF;\n         ATextureInterpolation: boolean);\n  public\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanMoveTo(X, Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    constructor Create(ASource: IBGRAScanner;\n      ASourceMatrix: TAffineMatrix; const APoints: array of TPointF;\n      ATextureInterpolation: boolean = true); overload;\n    constructor Create(ASource: IBGRAScanner;\n      const ATexCoords: array of TPointF; const APoints: array of TPointF;\n      ATextureInterpolation: boolean = true); overload;\n    destructor Destroy; override;\n    property Culling: TFaceCulling read GetCulling write SetCulling;\n    property Padding: boolean read FPadding write FPadding;\n  end;\n\n  { Simple scanner for a bitmap }\n  TBGRABitmapScanner = class(TBGRACustomScanner)\n  protected\n    FSource: TBGRACustomBitmap;\n    FRepeatX,FRepeatY: boolean;\n    FScanline: PBGRAPixel;\n    FCurX: integer;\n    FOrigin: TPoint;\n  public\n    constructor Create(ASource: TBGRACustomBitmap; ARepeatX,ARepeatY: boolean; AOrigin: TPoint);\n    procedure ScanMoveTo(X, Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n  end;\n\n  { @abstract(Scanner that restricts the source to a rectangular area and pad the rest.)\n\n    The rest is padded using the color at the borders. }\n\n  TBGRAExtendedBorderScanner = class(TBGRACustomScanner)\n  protected\n    FSource: IBGRAScanner;\n    FBounds: TRect;\n  public\n    constructor Create(ASource: IBGRAScanner; ABounds: TRect);\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n  end;\n\n  { Scanner that adds an offset }\n  TBGRAScannerOffset = class(TBGRACustomScanner)\n  protected\n    FSource: IBGRAScanner;\n    FOffset: TPoint;\n  public\n    constructor Create(ASource: IBGRAScanner; AOffset: TPoint);\n    destructor Destroy; override;\n    procedure ScanMoveTo(X, Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    function IsScanPutPixelsDefined: boolean; override;\n    procedure ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode); override;\n    procedure ScanSkipPixels(ACount: integer); override;\n  end;\n\n\n{---------------------- Affine matrix functions -------------------}\n//fill a matrix\nfunction AffineMatrix(m11,m12,m13,m21,m22,m23: single): TAffineMatrix; overload;\nfunction AffineMatrix(AU,AV: TPointF; ATranslation: TPointF): TAffineMatrix; overload;\n\n//matrix multiplication\noperator *(M,N: TAffineMatrix): TAffineMatrix;\noperator =(M,N: TAffineMatrix): boolean;\n\n//matrix multiplication by a vector (apply transformation to that vector)\noperator *(M: TAffineMatrix; V: TPointF): TPointF;\noperator *(M: TAffineMatrix; A: array of TPointF): ArrayOfTPointF;\noperator *(M: TAffineMatrix; ab: TAffineBox): TAffineBox;\n\n//check if matrix is inversible\nfunction IsAffineMatrixInversible(M: TAffineMatrix): boolean;\n\n//check if the matrix is a translation (including the identity)\nfunction IsAffineMatrixTranslation(M: TAffineMatrix): boolean;\n\n//check if the matrix is a scaling (including a projection i.e. with factor 0)\nfunction IsAffineMatrixScale(M: TAffineMatrix): boolean;\n\n//check if the matrix is the identity\nfunction IsAffineMatrixIdentity(M: TAffineMatrix): boolean;\n\n//compute inverse (check if inversible before)\nfunction AffineMatrixInverse(M: TAffineMatrix): TAffineMatrix;\n\n//define a translation matrix\nfunction AffineMatrixTranslation(OfsX,OfsY: Single): TAffineMatrix;\n\n//define a scaling matrix\nfunction AffineMatrixScale(sx,sy: single): TAffineMatrix;\nfunction AffineMatrixScaledRotation(ASourceVector, ATargetVector: TPointF): TAffineMatrix;\nfunction AffineMatrixScaledRotation(ASourcePoint, ATargetPoint, AOrigin: TPointF): TAffineMatrix;\n\nfunction AffineMatrixSkewXDeg(AngleCW: single): TAffineMatrix;\nfunction AffineMatrixSkewYDeg(AngleCW: single): TAffineMatrix;\nfunction AffineMatrixSkewXRad(AngleCCW: single): TAffineMatrix;\nfunction AffineMatrixSkewYRad(AngleCCW: single): TAffineMatrix;\n\n//define a linear matrix\nfunction AffineMatrixLinear(v1,v2: TPointF): TAffineMatrix; overload;\nfunction AffineMatrixLinear(const AMatrix: TAffineMatrix): TAffineMatrix; overload;\n\n//define a rotation matrix (positive radians are counter-clockwise)\n//(assuming the y-axis is pointing down)\nfunction AffineMatrixRotationRad(AngleCCW: Single): TAffineMatrix;\n\n//Positive degrees are clockwise\n//(assuming the y-axis is pointing down)\nfunction AffineMatrixRotationDeg(AngleCW: Single): TAffineMatrix;\n\n//define the identity matrix (that do nothing)\nfunction AffineMatrixIdentity: TAffineMatrix;\n\nfunction IsAffineMatrixOrthogonal(M: TAffineMatrix): boolean;\nfunction IsAffineMatrixScaledRotation(M: TAffineMatrix): boolean;\n\ntype\n  { Scanner that provides an optimized transformation for linear texture mapping\n    on triangles }\n  TBGRATriangleLinearMapping = class(TBGRACustomScanner)\n  protected\n    FScanner: IBGRAScanner;\n    FMatrix: TAffineMatrix;\n    FTexCoord1,FDiff2,FDiff3,FStep: TPointF;\n    FCurTexCoord: TPointF;\n    FScanAtFunc: TScanAtFunction;\n  public\n    constructor Create(AScanner: IBGRAScanner; pt1,pt2,pt3: TPointF; tex1,tex2,tex3: TPointF);\n    procedure ScanMoveTo(X,Y: Integer); override;\n    procedure ScanMoveToF(X,Y: Single);\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    function ScanNextPixel: TBGRAPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n  end;\n\ntype\n  TPerspectiveTransform = class;\n\n  { Scanner that performs a perspective transform (3D) }\n  TBGRAPerspectiveScannerTransform = class(TBGRACustomScanner)\n  private\n    FTexture: IBGRAScanner;\n    FMatrix: TPerspectiveTransform;\n    FScanAtProc: TScanAtFunction;\n    function GetIncludeOppositePlane: boolean;\n    procedure SetIncludeOppositePlane(AValue: boolean);\n  public\n    constructor Create(texture: IBGRAScanner; texCoord1,texCoord2: TPointF; const quad: array of TPointF); overload;\n    constructor Create(texture: IBGRAScanner; const texCoordsQuad: array of TPointF; const quad: array of TPointF); overload;\n    constructor Create(texture: IBGRAScanner; transform: TPerspectiveTransform; transformOwned: boolean);\n    destructor Destroy; override;\n    procedure ScanMoveTo(X, Y: Integer); override;\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    function ScanNextPixel: TBGRAPixel; override;\n    procedure ScanSkipPixels(ACount: integer); override;\n    property IncludeOppositePlane: boolean read GetIncludeOppositePlane write SetIncludeOppositePlane;\n  end;\n\n  { Computes a perspective transform (3D) of coordinates }\n  TPerspectiveTransform = class\n  private\n    sx ,shy ,w0 ,shx ,sy ,w1 ,tx ,ty ,w2 : single;\n    scanDenom,scanNumX,scanNumY: single;\n    FOutsideValue: TPointF;\n    FIncludeOppositePlane: boolean;\n    procedure Init;\n  public\n    constructor Create; overload;\n    constructor Create(x1,y1,x2,y2: single; const quad: array of TPointF); overload;\n    constructor Create(const quad: array of TPointF; x1,y1,x2,y2: single); overload;\n    constructor Create(const srcQuad,destQuad: array of TPointF); overload;\n    function MapQuadToQuad(const srcQuad,destQuad: array of TPointF): boolean;\n    function MapRectToQuad(x1,y1,x2,y2: single; const quad: array of TPointF): boolean;\n    function MapQuadToRect(const quad: array of TPointF; x1,y1,x2,y2: single): boolean;\n    function MapSquareToQuad(const quad: array of TPointF): boolean;\n    function MapQuadToSquare(const quad: array of TPointF): boolean;\n    procedure AssignIdentity;\n    function Invert: boolean;\n    procedure Translate(dx,dy: single);\n    procedure MultiplyBy(a: TPerspectiveTransform);\n    procedure PremultiplyBy(b: TPerspectiveTransform);\n    function Duplicate: TPerspectiveTransform;\n    function Apply(pt: TPointF): TPointF;\n    procedure ScanMoveTo(x,y:single);\n    function ScanNext: TPointF;\n    procedure ScanSkip(ACount: integer);\n    property OutsideValue: TPointF read FOutsideValue write FOutsideValue;\n    property IncludeOppositePlane: boolean read FIncludeOppositePlane write FIncludeOppositePlane;\n  end;\n\ntype\n  { @abstract(Scanner that applies a twirl transformation.)\n\n    Note : this scanner handles integer coordinates only, so\n    any further transformation applied after this one may not\n    render correctly.\n\n**Example drawing a radial gradient transformed with a twirl:**\n\n@image(../doc/img/tbgratwirlscanner.png)\n\n```pascal\nvar image: TBGRABitmap;\n    grad: TBGRAGradientScanner;\n    affine: TBGRAAffineScannerTransform;\n    twirl: TBGRATwirlScanner;\nbegin\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  grad := TBGRAGradientScanner.Create(BGRA(0,0,255),BGRAWhite,gtRadial,PointF(0,0),PointF(1,0),True,True);\n\n  affine := TBGRAAffineScannerTransform.Create(grad);\n  affine.Scale(150,80);\n  affine.RotateDeg(-30);\n  affine.Translate(ClientWidth/2, ClientHeight/2);\n\n  twirl := TBGRATwirlScanner.Create(affine,Point(ClientWidth div 2, ClientHeight div 2),100);\n  image.Fill(twirl);\n  twirl.Free;\n\n  affine.free;\n  grad.free;\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```}\n  TBGRATwirlScanner = Class(TBGRACustomScanner)\n  protected\n    FScanner: IBGRAScanner;\n    FScanAtFunc: TScanAtFunction;\n    FCenter: TPoint;\n    FTurn, FRadius, FExponent: Single;\n  public\n    constructor Create(AScanner: IBGRAScanner; ACenter: TPoint; ARadius: single; ATurn: single = 1; AExponent: single = 3);\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    property Radius: Single read FRadius;\n    property Center: TPoint read FCenter;\n    property Exponent: Single read FExponent;\n  end;\n\n  { Scanners that distorts as a shere shape }\n  TBGRASphereDeformationScanner = Class(TBGRACustomScanner)\n  protected\n    FScanner: IBGRAScanner;\n    FScanAtFunc: TScanAtFunction;\n    FCenter: TPointF;\n    FRadiusX, FRadiusY: Single;\n  public\n    constructor Create(AScanner: IBGRAScanner; ACenter: TPointF; ARadiusX,ARadiusY: single);\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    property RadiusX: Single read FRadiusX;\n    property RadiusY: Single read FRadiusY;\n  end;\n\n  { Scanners that distorts as a cylinder shape }\n  TBGRAVerticalCylinderDeformationScanner = Class(TBGRACustomScanner)\n  protected\n    FScanner: IBGRAScanner;\n    FScanAtFunc: TScanAtFunction;\n    FCenterX: single;\n    FRadiusX: Single;\n  public\n    constructor Create(AScanner: IBGRAScanner; ACenterX: single; ARadiusX: single);\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n    property RadiusX: Single read FRadiusX;\n  end;\n\n\nimplementation\n\nuses BGRABlend, Math;\n\nfunction AffineMatrix(m11, m12, m13, m21, m22, m23: single): TAffineMatrix;\nbegin\n  result[1,1] := m11;\n  result[1,2] := m12;\n  result[1,3] := m13;\n  result[2,1] := m21;\n  result[2,2] := m22;\n  result[2,3] := m23;\nend;\n\nfunction AffineMatrix(AU, AV: TPointF; ATranslation: TPointF): TAffineMatrix;\nbegin\n  result:= AffineMatrix(AU.x, AV.x, ATranslation.x,\n                        AU.y, AV.y, ATranslation.y);\nend;\n\noperator *(M, N: TAffineMatrix): TAffineMatrix;\nbegin\n  result[1,1] := M[1,1]*N[1,1] + M[1,2]*N[2,1];\n  result[1,2] := M[1,1]*N[1,2] + M[1,2]*N[2,2];\n  result[1,3] := M[1,1]*N[1,3] + M[1,2]*N[2,3] + M[1,3];\n\n  result[2,1] := M[2,1]*N[1,1] + M[2,2]*N[2,1];\n  result[2,2] := M[2,1]*N[1,2] + M[2,2]*N[2,2];\n  result[2,3] := M[2,1]*N[1,3] + M[2,2]*N[2,3] + M[2,3];\nend;\n\noperator=(M, N: TAffineMatrix): boolean;\nbegin\n  result := CompareMem(@M,@N,SizeOf(TAffineMatrix));\nend;\n\noperator*(M: TAffineMatrix; V: TPointF): TPointF;\nbegin\n  if isEmptyPointF(V) then\n    result := EmptyPointF\n  else\n  begin\n    result.X := V.X*M[1,1]+V.Y*M[1,2]+M[1,3];\n    result.Y := V.X*M[2,1]+V.Y*M[2,2]+M[2,3];\n  end;\nend;\n\noperator*(M: TAffineMatrix; A: array of TPointF): ArrayOfTPointF;\nvar\n  i: Int32or64;\n  ofs: TPointF;\nbegin\n  setlength(result, length(A));\n  if IsAffineMatrixTranslation(M) then\n  begin\n    ofs := PointF(M[1,3],M[2,3]);\n    for i := 0 to high(A) do\n      result[i] := A[i]+ofs;\n  end else\n    for i := 0 to high(A) do\n      result[i] := M*A[i];\nend;\n\noperator*(M: TAffineMatrix; ab: TAffineBox): TAffineBox;\nbegin\n  result.TopLeft := M*ab.TopLeft;\n  result.TopRight := M*ab.TopRight;\n  result.BottomLeft := M*ab.BottomLeft;\nend;\n\nfunction IsAffineMatrixInversible(M: TAffineMatrix): boolean;\nbegin\n  result := M[1,1]*M[2,2]-M[1,2]*M[2,1] <> 0;\nend;\n\nfunction IsAffineMatrixTranslation(M: TAffineMatrix): boolean;\nbegin\n  result := (m[1,1]=1) and (m[1,2]=0) and (m[2,1] = 0) and (m[2,2]=1);\nend;\n\nfunction IsAffineMatrixScale(M: TAffineMatrix): boolean;\nbegin\n  result := (M[1,3]=0) and (M[2,3]=0) and\n            (M[1,2]=0) and (M[2,1]=0);\nend;\n\nfunction IsAffineMatrixIdentity(M: TAffineMatrix): boolean;\nbegin\n  result := IsAffineMatrixTranslation(M) and (M[1,3]=0) and (M[2,3]=0);\nend;\n\nfunction AffineMatrixInverse(M: TAffineMatrix): TAffineMatrix;\nvar det,f: single;\n    linearInverse: TAffineMatrix;\nbegin\n  det := M[1,1]*M[2,2]-M[1,2]*M[2,1];\n  if det = 0 then\n    raise Exception.Create('Not inversible');\n  f := 1/det;\n  linearInverse := AffineMatrix(M[2,2]*f,-M[1,2]*f,0,\n                         -M[2,1]*f,M[1,1]*f,0);\n  result := linearInverse * AffineMatrixTranslation(-M[1,3],-M[2,3]);\nend;\n\nfunction AffineMatrixTranslation(OfsX, OfsY: Single): TAffineMatrix;\nbegin\n  result := AffineMatrix(1, 0, OfsX,\n                         0, 1, OfsY);\nend;\n\nfunction AffineMatrixScale(sx, sy: single): TAffineMatrix;\nbegin\n  result := AffineMatrix(sx, 0,   0,\n                         0,  sy,  0);\nend;\n\nfunction AffineMatrixScaledRotation(ASourceVector, ATargetVector: TPointF): TAffineMatrix;\nvar\n  prevScale, newScale, scale: Single;\n  u1,v1,u2,v2,w: TPointF;\nbegin\n  prevScale := VectLen(ASourceVector);\n  newScale := VectLen(ATargetVector);\n  if (prevScale = 0) or (newScale = 0) then\n    result := AffineMatrixIdentity\n  else\n  begin\n    scale := newScale/prevScale;\n    u1 := ASourceVector*(1/prevScale);\n    v1 := PointF(-u1.y,u1.x);\n    w := ATargetVector*(1/newScale);\n    u2 := PointF(w**u1, w**v1);\n    v2 := PointF(-u2.y,u2.x);\n    result := AffineMatrix(scale*u2,scale*v2,PointF(0,0));\n  end;\nend;\n\nfunction AffineMatrixScaledRotation(ASourcePoint, ATargetPoint, AOrigin: TPointF): TAffineMatrix;\nbegin\n  result := AffineMatrixTranslation(AOrigin.x,AOrigin.y)*\n         AffineMatrixScaledRotation(ASourcePoint-AOrigin, ATargetPoint-AOrigin)*\n         AffineMatrixTranslation(-AOrigin.x,-AOrigin.y);\nend;\n\nfunction AffineMatrixSkewXDeg(AngleCW: single): TAffineMatrix;\nbegin\n  result := AffineMatrix(1,tan(AngleCW*Pi/180),0,\n                         0,        1,          0);\nend;\n\nfunction AffineMatrixSkewYDeg(AngleCW: single): TAffineMatrix;\nbegin\n  result := AffineMatrix(1,           0, 0,\n                 tan(AngleCW*Pi/180), 1, 0)\nend;\n\nfunction AffineMatrixSkewXRad(AngleCCW: single): TAffineMatrix;\nbegin\n\n  result := AffineMatrix(1,tan(-AngleCCW),0,\n                         0,      1,       0);\nend;\n\nfunction AffineMatrixSkewYRad(AngleCCW: single): TAffineMatrix;\nbegin\n  result := AffineMatrix(1,          0, 0,\n                    tan(-angleCCW),  1, 0)\nend;\n\nfunction AffineMatrixLinear(v1,v2: TPointF): TAffineMatrix;\nbegin\n  result := AffineMatrix(v1.x, v2.x, 0,\n                         v1.y, v2.y, 0);\nend;\n\nfunction AffineMatrixLinear(const AMatrix: TAffineMatrix): TAffineMatrix;\nbegin\n  result := AffineMatrix(AMatrix[1,1],AMatrix[1,2],0,\n                         AMatrix[2,1],AMatrix[2,2],0);\nend;\n\nfunction AffineMatrixRotationRad(AngleCCW: Single): TAffineMatrix;\nbegin\n  result := AffineMatrix(cos(AngleCCW),  sin(AngleCCW), 0,\n                         -sin(AngleCCW), cos(AngleCCW), 0);\nend;\n\nfunction AffineMatrixRotationDeg(AngleCW: Single): TAffineMatrix;\nconst DegToRad = -Pi/180;\nbegin\n  result := AffineMatrixRotationRad(AngleCW*DegToRad);\nend;\n\nfunction AffineMatrixIdentity: TAffineMatrix;\nbegin\n  result := AffineMatrix(1, 0, 0,\n                         0, 1, 0);\nend;\n\nfunction IsAffineMatrixOrthogonal(M: TAffineMatrix): boolean;\nbegin\n  result := PointF(M[1,1],M[2,1])**PointF(M[1,2],M[2,2]) = 0;\nend;\n\nfunction IsAffineMatrixScaledRotation(M: TAffineMatrix): boolean;\nbegin\n  result := IsAffineMatrixOrthogonal(M) and\n           (VectLen(PointF(M[1,1],M[2,1]))=VectLen(PointF(M[1,2],M[2,2])));\nend;\n\n{ TBGRAVerticalCylinderDeformationScanner }\n\nconstructor TBGRAVerticalCylinderDeformationScanner.Create(\n  AScanner: IBGRAScanner; ACenterX: single; ARadiusX: single);\nbegin\n  FScanner := AScanner;\n  FScanAtFunc := @FScanner.ScanAt;\n  FCenterX := ACenterX;\n  FRadiusX := ARadiusX;\nend;\n\nfunction TBGRAVerticalCylinderDeformationScanner.ScanAt(X, Y: Single): TBGRAPixel;\nvar\n  xn,len,fact: Single;\nbegin\n  xn   := (x - FCenterX) / FRadiusX;\n  len := abs(xn);\n  if (len <= 1) then\n  begin\n    if (len > 0) then\n    begin\n      fact := 1 / len * arcsin(len) / (Pi / 2);\n      xn := xn * fact;\n    end;\n    result := FScanAtFunc(xn * FRadiusX + FCenterX, y);\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\n{ TBGRASphereDeformationScanner }\n\nconstructor TBGRASphereDeformationScanner.Create(AScanner: IBGRAScanner;\n  ACenter: TPointF; ARadiusX, ARadiusY: single);\nbegin\n  FScanner := AScanner;\n  FScanAtFunc := @FScanner.ScanAt;\n  FCenter := ACenter;\n  FRadiusX := ARadiusX;\n  FRadiusY := ARadiusY;\nend;\n\nfunction TBGRASphereDeformationScanner.ScanAt(X, Y: Single): TBGRAPixel;\nvar\n  xn, yn, len,fact: Single;\nbegin\n  xn   := (x - FCenter.X) / FRadiusX;\n  yn   := (y - FCenter.Y) / FRadiusY;\n  len := sqrt(sqr(xn) + sqr(yn));\n  if (len <= 1) then\n  begin\n    if (len > 0) then\n    begin\n      fact := 1 / len * arcsin(len) / (Pi / 2);\n      xn := xn * fact;\n      yn := yn * fact;\n    end;\n    result := FScanAtFunc(xn * FRadiusX + FCenter.X, yn * FRadiusY + FCenter.Y);\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\n{ TBGRAExtendedBorderScanner }\n\nconstructor TBGRAExtendedBorderScanner.Create(ASource: IBGRAScanner;\n  ABounds: TRect);\nbegin\n  FSource := ASource;\n  FBounds := ABounds;\nend;\n\nfunction TBGRAExtendedBorderScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  if x < FBounds.Left then x := FBounds.Left;\n  if y < FBounds.Top then y := FBounds.Top;\n  if x > FBounds.Right-1 then x := FBounds.Right-1;\n  if y > FBounds.Bottom-1 then y := FBounds.Bottom-1;\n  result := FSource.ScanAt(X,Y);\nend;\n\n{ TBGRAScannerOffset }\n\nconstructor TBGRAScannerOffset.Create(ASource: IBGRAScanner; AOffset: TPoint);\nbegin\n  FSource := ASource;\n  FOffset := AOffset;\nend;\n\ndestructor TBGRAScannerOffset.Destroy;\nbegin\n  fillchar(FSource,sizeof(FSource),0);\n  inherited Destroy;\nend;\n\nprocedure TBGRAScannerOffset.ScanMoveTo(X, Y: Integer);\nbegin\n  FSource.ScanMoveTo(X-FOffset.X,Y-FOffset.Y);\nend;\n\nfunction TBGRAScannerOffset.ScanNextPixel: TBGRAPixel;\nbegin\n  Result:=FSource.ScanNextPixel;\nend;\n\nfunction TBGRAScannerOffset.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  Result:=FSource.ScanAt(X - FOffset.X, Y - FOffset.Y);\nend;\n\nfunction TBGRAScannerOffset.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:=FSource.IsScanPutPixelsDefined;\nend;\n\nprocedure TBGRAScannerOffset.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nbegin\n  FSource.ScanPutPixels(pdest, count, mode);\nend;\n\nprocedure TBGRAScannerOffset.ScanSkipPixels(ACount: integer);\nbegin\n  FSource.ScanSkipPixels(ACount);\nend;\n\n{ TBGRABitmapScanner }\n\nconstructor TBGRABitmapScanner.Create(ASource: TBGRACustomBitmap; ARepeatX,\n  ARepeatY: boolean; AOrigin: TPoint);\nbegin\n  FSource := ASource;\n  FRepeatX := ARepeatX;\n  FRepeatY := ARepeatY;\n  FScanline := nil;\n  FOrigin := AOrigin;\nend;\n\nprocedure TBGRABitmapScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  if (FSource.NbPixels = 0) then\n  begin\n    FScanline := nil;\n    exit;\n  end;\n  Inc(Y,FOrigin.Y);\n  if FRepeatY then Y := PositiveMod(Y,FSource.Height);\n  if (Y < 0) or (Y >= FSource.Height) then\n  begin\n    FScanline := nil;\n    exit;\n  end;\n  FScanline := FSource.Scanline[Y];\n  FCurX := X+FOrigin.X;\n  if FRepeatX then FCurX := PositiveMod(FCurX, FSource.Width);\nend;\n\nfunction TBGRABitmapScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  if (FScanline = nil) then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  if FRepeatX then\n  begin\n    result := (FScanline+FCurX)^;\n    inc(FCurX);\n    if FCurX = FSource.Width then FCurX := 0;\n  end else\n  begin\n    if (FCurX >= FSource.Width) then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    if FCurX < 0 then\n      result := BGRAPixelTransparent\n    else\n      result := (FScanline+FCurX)^;\n    inc(FCurX);\n  end;\nend;\n\nfunction TBGRABitmapScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  Result := FSource.GetPixelCycle(X+FOrigin.X,Y+FOrigin.Y,rfLinear,FRepeatX,FRepeatY);\nend;\n\nprocedure TBGRABitmapScanner.ScanSkipPixels(ACount: integer);\nbegin\n  if FScanLine <> nil then\n  begin\n    inc(FCurX, ACount);\n    if FCurX > FSource.Width then FCurX := PositiveMod(FCurX, FSource.Width);\n  end;\nend;\n\n{ TBGRATriangleLinearMapping }\n\nconstructor TBGRATriangleLinearMapping.Create(AScanner: IBGRAScanner; pt1, pt2,\n  pt3: TPointF; tex1, tex2, tex3: TPointF);\nbegin\n  FScanner := AScanner;\n  FScanAtFunc := @FScanner.ScanAt;\n\n  FMatrix := AffineMatrix(pt2.X-pt1.X, pt3.X-pt1.X, 0,\n                          pt2.Y-pt1.Y, pt3.Y-pt1.Y, 0);\n  if not IsAffineMatrixInversible(FMatrix) then\n    FMatrix := AffineMatrix(0,0,0,0,0,0)\n  else\n    FMatrix := AffineMatrixInverse(FMatrix) * AffineMatrixTranslation(-pt1.x,-pt1.y);\n\n  FTexCoord1 := tex1;\n  FDiff2 := tex2-tex1;\n  FDiff3 := tex3-tex1;\n  FStep := FDiff2*FMatrix[1,1]+FDiff3*FMatrix[2,1];\nend;\n\nprocedure TBGRATriangleLinearMapping.ScanMoveTo(X, Y: Integer);\nbegin\n  ScanMoveToF(X, Y);\nend;\n\nprocedure TBGRATriangleLinearMapping.ScanMoveToF(X, Y: Single);\nvar\n  Cur: TPointF;\nbegin\n  Cur := FMatrix*PointF(X,Y);\n  FCurTexCoord := FTexCoord1+FDiff2*Cur.X+FDiff3*Cur.Y;\nend;\n\nfunction TBGRATriangleLinearMapping.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  ScanMoveToF(X,Y);\n  result := ScanNextPixel;\nend;\n\nfunction TBGRATriangleLinearMapping.ScanNextPixel: TBGRAPixel;\nbegin\n  result := FScanAtFunc(FCurTexCoord.X,FCurTexCoord.Y);\n  FCurTexCoord.Offset(FStep);\nend;\n\nprocedure TBGRATriangleLinearMapping.ScanSkipPixels(ACount: integer);\nbegin\n  FCurTexCoord.Offset(FStep*ACount);\nend;\n\n{ TBGRAAffineScannerTransform }\n\nconstructor TBGRAAffineScannerTransform.Create(AScanner: IBGRAScanner);\nbegin\n  FScanner := AScanner;\n  FScanAtFunc := @FScanner.ScanAt;\n  GlobalOpacity := 255;\n  Reset;\nend;\n\nprocedure TBGRAAffineScannerTransform.Reset;\nbegin\n  FMatrix := AffineMatrixIdentity;\n  FEmptyMatrix := False;\nend;\n\nprocedure TBGRAAffineScannerTransform.Invert;\nbegin\n  if not FEmptyMatrix and IsAffineMatrixInversible(FMatrix) then\n    FMatrix := AffineMatrixInverse(FMatrix) else\n      FEmptyMatrix := True;\nend;\n\nfunction TBGRAAffineScannerTransform.GetViewMatrix: TAffineMatrix;\nbegin\n  if FEmptyMatrix then\n    result := AffineMatrixIdentity\n  else\n    result := AffineMatrixInverse(FMatrix);\nend;\n\nprocedure TBGRAAffineScannerTransform.SetViewMatrix(AValue: TAffineMatrix);\nbegin\n  Matrix := AValue;\n  Invert;\nend;\n\nprocedure TBGRAAffineScannerTransform.SetMatrix(AMatrix: TAffineMatrix);\nbegin\n  FEmptyMatrix := False;\n  FMatrix := AMatrix;\nend;\n\n//transformations are inverted because the effect on the resulting image\n//is the inverse of the transformation. This is due to the fact\n//that the matrix is applied to source coordinates, not destination coordinates\nprocedure TBGRAAffineScannerTransform.Translate(OfsX, OfsY: Single);\nbegin\n  MultiplyBy(AffineMatrixTranslation(-OfsX,-OfsY));\nend;\n\nprocedure TBGRAAffineScannerTransform.RotateDeg(AngleCW: Single);\nbegin\n  MultiplyBy(AffineMatrixRotationDeg(-AngleCW));\nend;\n\nprocedure TBGRAAffineScannerTransform.RotateRad(AngleCCW: Single);\nbegin\n  MultiplyBy(AffineMatrixRotationRad(-AngleCCW));\nend;\n\nprocedure TBGRAAffineScannerTransform.MultiplyBy(AMatrix: TAffineMatrix);\nbegin\n  FMatrix := FMatrix * AMatrix;\nend;\n\nprocedure TBGRAAffineScannerTransform.Fit(Origin, HAxis, VAxis: TPointF);\nbegin\n  SetMatrix(AffineMatrix(HAxis.X-Origin.X, VAxis.X-Origin.X, 0,\n                         HAxis.Y-Origin.Y, VAxis.Y-Origin.Y, 0));\n  Invert;\n  Translate(Origin.X,Origin.Y);\nend;\n\nprocedure TBGRAAffineScannerTransform.Scale(sx, sy: single);\nbegin\n  if (sx=0) or (sy=0) then\n  begin\n    FEmptyMatrix := True;\n    exit;\n  end;\n\n  MultiplyBy(AffineMatrixScale(1/sx,1/sy));\nend;\n\nprocedure TBGRAAffineScannerTransform.Scale(factor: single);\nbegin\n  Scale(factor,factor);\nend;\n\nfunction TBGRAAffineScannerTransform.GetScanCustomColorspace: TColorspaceAny;\nbegin\n  Result:= TBGRAPixelColorspace;\nend;\n\nprocedure TBGRAAffineScannerTransform.ScanMoveTo(X, Y: Integer);\nbegin\n  ScanMoveToF(X,Y);\nend;\n\nprocedure TBGRAAffineScannerTransform.ScanMoveToF(X, Y: single);\nbegin\n  FCur := FMatrix * PointF(X,Y);\nend;\n\nfunction TBGRAAffineScannerTransform.InternalScanCurrentPixel: TBGRAPixel;\nbegin\n  if FEmptyMatrix then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  result := FScanAtFunc(FCur.X,FCur.Y);\nend;\n\nfunction TBGRAAffineScannerTransform.ScanNextPixel: TBGRAPixel;\nbegin\n  result := InternalScanCurrentPixel;\n  FCur.Offset(FMatrix[1,1], FMatrix[2,1]);\n  if GlobalOpacity <> 255 then result.alpha := ApplyOpacity(result.alpha,GlobalOpacity);\nend;\n\nprocedure TBGRAAffineScannerTransform.ScanSkipPixels(ACount: integer);\nbegin\n  FCur.Offset(FMatrix[1,1]*ACount, FMatrix[2,1]*ACount);\nend;\n\nfunction TBGRAAffineScannerTransform.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  ScanMoveToF(X,Y);\n  result := InternalScanCurrentPixel;\n  if GlobalOpacity <> 255 then result.alpha := ApplyOpacity(result.alpha,GlobalOpacity);\nend;\n\n{ TBGRAQuadLinearScanner }\n\nfunction TBGRAQuadLinearScanner.GetTexColorAt(u, v: Single; detNeg: boolean\n  ): TBGRAPixel;\nvar isPadding: boolean;\nbegin\n  if detNeg then\n  begin\n    if not FShowC2 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n  end else\n    if not FShowC1 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n  GetTexColorAt(u,v,result,isPadding);\nend;\n\nprocedure TBGRAQuadLinearScanner.ScanMoveToF(X, Y: single);\nbegin\n  if not (FHasC1 and FShowC1) and not (FHasC2 and FShowC2) then\n  begin\n    FScanFunc := @ScanNone;\n    exit;\n  end;\n  FCurXF := X;\n  FCurYF := Y;\n  if (FVectors[0].x = 0) and (FVectors[2].x = 0) then\n  begin\n    PrepareScanVert0;\n    FScanFunc := @ScanVert0;\n  end else\n  if aa = 0 then\n  begin\n    PrepareScanPara;\n    FScanFunc := @ScanPara\n  end\n  else\n    FScanFunc := @ScanGeneral;\nend;\n\nprocedure TBGRAQuadLinearScanner.SetCulling(AValue: TFaceCulling);\nbegin\n  FShowC1 := AValue in [fcKeepCW,fcNone];\n  FShowC2 := AValue in [fcKeepCCW,fcNone];\nend;\n\nprocedure TBGRAQuadLinearScanner.Init(ASource: IBGRAScanner;\n  const APoints: array of TPointF; ATextureInterpolation: boolean);\nvar\n  i: Int32or64;\n  v: TPointF;\n  len: single;\nbegin\n  if length(APoints)<>4 then\n    raise exception.Create('Expecting 4 points');\n  FTextureInterpolation:= ATextureInterpolation;\n  FSource := ASource;\n  FSourceMatrix := AffineMatrixIdentity;\n  FUVVector := PointF(0,0);\n  for i := 0 to 3 do\n  begin\n    FPoints[i] := APoints[i];\n    v := APoints[(i+1) mod 4] - APoints[i];\n    len := VectLen(v);\n    if len > 0 then FInvLengths[i] := 1/len\n      else FInvLengths[i] := 0;\n    FVectors[i] := v*FInvLengths[i];\n  end;\n\n  FCoeffs[0] := FPoints[0];\n  FCoeffs[1] := FPoints[1]-FPoints[0];\n  FCoeffs[2] := FPoints[3]-FPoints[0];\n  FCoeffs[3] := FPoints[0]+FPoints[2]-FPoints[1]-FPoints[3];\n\n  aa := VectDet(FCoeffs[3],FCoeffs[2]);\n  bb0 := VectDet(FCoeffs[3],FCoeffs[0]) + VectDet(FCoeffs[1],FCoeffs[2]);\n  cc0 := VectDet(FCoeffs[1],FCoeffs[0]);\n  for i := 0 to 3 do\n    FDets[i] := VectDet(FVectors[i],FVectors[(i+1) mod 4]);\n  if aa <> 0 then inv2aa := 1/(2*aa) else inv2aa := 1;\n\n  FShowC1 := true;\n  FShowC2 := true;\n\n  FHasC1 := false;\n  FHasC2 := false;\n  for i := 0 to 3 do\n    if FDets[i] > 0 then FHasC1 := true\n    else if FDets[i] < 0 then FHasC2 := true;\n\n  FBuffer := nil;\n  FBufferSize := 0;\n\n  ScanMoveToF(0,0);\nend;\n\nfunction TBGRAQuadLinearScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  ScanMoveToF(X,Y);\n  Result:= FScanFunc();\nend;\n\nprocedure TBGRAQuadLinearScanner.ScanPutPixels(pdest: PBGRAPixel; count: integer;\n  mode: TDrawMode);\nvar\n  n: Int32or64;\n  p: PBGRAPixel;\nbegin\n  if mode = dmSet then\n    p := pdest\n  else\n  begin\n    if count > FBufferSize then\n    begin\n      FBufferSize := count;\n      ReAllocMem(FBuffer, FBufferSize*sizeof(TBGRAPixel));\n    end;\n    p := FBuffer;\n  end;\n  for n := count-1 downto 0 do\n  begin\n    p^ := FScanFunc();\n    inc(p);\n  end;\n  if mode <> dmSet then PutPixels(pdest,FBuffer,count,mode,255);\nend;\n\nfunction TBGRAQuadLinearScanner.IsScanPutPixelsDefined: boolean;\nbegin\n  result := true;\nend;\n\nprocedure TBGRAQuadLinearScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  ScanMoveToF(X,Y);\nend;\n\nfunction TBGRAQuadLinearScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  Result:= FScanFunc();\nend;\n\nprocedure TBGRAQuadLinearScanner.ScanSkipPixels(ACount: integer);\nbegin\n  ScanMoveToF(FCurXF+ACount,FCurYF);\nend;\n\nfunction TBGRAQuadLinearScanner.ScanGeneral: TBGRAPixel;\nvar u1,u2,v1,v2,x,y: double;\n  bb,cc,det,delta,denom: double;\n  mergeC1,mergeC2: boolean;\n  isPad1,isPad2: boolean;\n  c1,c2: TBGRAPixel;\nbegin\n  x := FCurXF;\n  y := FCurYF;\n  IncF(FCurXF, 1);\n  if (Y = FPoints[0].y) and (FVectors[0].y = 0) then\n  begin\n    if FVectors[0].x = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    u1 := (X - FPoints[0].x)/(FPoints[1].x-FPoints[0].x);\n    result := GetTexColorAt(u1,0,FDets[0]<0);\n    exit;\n  end;\n  if (X = FPoints[1].x) and (FVectors[1].x = 0) then\n  begin\n    if FVectors[1].y = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    v1 := (Y - FPoints[1].y)/(FPoints[2].y-FPoints[1].y);\n    result := GetTexColorAt(0,v1,FDets[1]<0);\n  end;\n  if (Y = FPoints[2].y) and (FVectors[2].y = 0) then\n  begin\n    if FVectors[2].x = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    u1 := (X - FPoints[3].x)/(FPoints[2].x-FPoints[3].x);\n    result := GetTexColorAt(u1,1,FDets[2]<0);\n  end;\n  if (X = FPoints[3].x) and (FVectors[3].x = 0) then\n  begin\n    if FVectors[3].y = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    v1 := (Y - FPoints[0].y)/(FPoints[3].y-FPoints[0].y);\n    result := GetTexColorAt(0,v1,FDets[3]<0);\n  end;\n\n  bb := bb0 + x*FCoeffs[3].y - y*FCoeffs[3].x;\n  cc := cc0 + x*FCoeffs[1].y - y*FCoeffs[1].x;\n  if cc = 0 then\n  begin\n    v1 := -bb*2*inv2aa;\n    denom := FCoeffs[1].x+FCoeffs[3].x*v1;\n    if denom = 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end\n    else\n      u1 := (x-FCoeffs[0].x-FCoeffs[2].x*v1)/denom;\n\n    result := GetTexColorAt(u1,v1,bb<0);\n  end else\n  begin\n    delta := bb*bb - 4*aa*cc;\n\n    if delta < 0 then\n    begin\n      result := BGRAPixelTransparent;\n      exit;\n    end;\n    det := sqrt(delta);\n\n    if FHasC1 and FShowC1 then\n    begin\n      mergeC1 := true;\n      v1 := (-bb+det)*inv2aa;\n      if v1 = 0 then\n        u1 := (FVectors[0]*FInvLengths[0])**(PointF(x,y)-FPoints[0])\n      else if v1 = 1 then\n        u1 := 1 - (FVectors[2]*FInvLengths[2])**(PointF(x,y)-FPoints[2])\n      else\n      begin\n        denom := FCoeffs[1].x+FCoeffs[3].x*v1;\n        if abs(denom)<1e-6 then\n        begin\n          u1 := (bb+det)*inv2aa;\n          denom := FCoeffs[1].y+FCoeffs[3].y*u1;\n          if denom = 0 then mergeC1 := false\n          else v1 := (y-FCoeffs[0].y-FCoeffs[2].y*u1)/denom;\n        end\n        else u1 := (x-FCoeffs[0].x-FCoeffs[2].x*v1)/denom;\n      end;\n    end else\n    begin\n      u1 := 0;\n      v1 := 0;\n      mergeC1 := false;\n    end;\n\n    if FHasC2 and FShowC2 then\n    begin\n      mergeC2 := true;\n      v2 := (-bb-det)*inv2aa;\n      if v2 = 0 then\n        u2 := (FVectors[0]*FInvLengths[0])**(PointF(x,y)-FPoints[0])\n      else if v2 = 1 then\n        u2 := 1 - (FVectors[2]*FInvLengths[2])**(PointF(x,y)-FPoints[2])\n      else\n      begin\n        denom := FCoeffs[1].x+FCoeffs[3].x*v2;\n        if abs(denom)<1e-6 then\n        begin\n          u2 := (bb-det)*inv2aa;\n          denom := FCoeffs[1].y+FCoeffs[3].y*u2;\n          if denom = 0 then mergeC2 := false\n          else v2 := (y-FCoeffs[0].y-FCoeffs[2].y*u2)/denom;\n        end\n        else u2 := (x-FCoeffs[0].x-FCoeffs[2].x*v2)/denom;\n      end;\n    end else\n    begin\n      u2 := 0;\n      v2 := 0;\n      mergeC2 := false;\n    end;\n\n    if mergeC1 then\n    begin\n      if mergeC2 then\n      begin\n        GetTexColorAt(u1,v1,c1,isPad1);\n        GetTexColorAt(u2,v2,c2,isPad2);\n        if isPad1 then\n        begin\n          if isPad2 then result := MergeBGRA(c1,c2)\n          else result := c2;\n        end else\n        begin\n          if isPad2 then result := c1\n          else result := MergeBGRA(c1,c2);\n        end;\n      end\n      else GetTexColorAt(u1,v1,result,isPad1);\n    end\n    else\n    if mergeC2 then\n      GetTexColorAt(u2,v2,result,isPad2)\n    else result := BGRAPixelTransparent;\n  end;\nend;\n\nfunction TBGRAQuadLinearScanner.GetCulling: TFaceCulling;\nbegin\n  if FShowC1 and FShowC2 then\n    result := fcNone\n  else if FShowC1 then\n    result := fcKeepCW\n  else\n    result := fcKeepCCW;\nend;\n\nfunction TBGRAQuadLinearScanner.ScanNone: TBGRAPixel;\nbegin\n  result := BGRAPixelTransparent;\nend;\n\nprocedure TBGRAQuadLinearScanner.PrepareScanVert0;\nbegin\n  if (FVectors[1].x <> 0) then\n  begin\n    ScanVertVStep0 := 1/(FPoints[2].x-FPoints[1].x);\n    ScanVertV0 := (FCurXF-FPoints[1].x)*ScanVertVStep0;\n    ScanVertDenom0 := (FPoints[1].y-FPoints[0].y)*(1-ScanVertV0) + (FPoints[2].y-FPoints[3].y)*ScanVertV0;\n    ScanVertDenomStep0 := (FPoints[2].y-FPoints[3].y-FPoints[1].y+FPoints[0].y)*ScanVertVStep0;\n  end\n  else\n  begin\n    ScanVertV0 := 0;\n    ScanVertVStep0 := EmptySingle;\n  end;\nend;\n\nfunction TBGRAQuadLinearScanner.ScanVert0: TBGRAPixel;\nvar u: single;\n  isPad: boolean;\nbegin\n  IncF(FCurXF, 1);\n  if ScanVertVStep0 = EmptySingle then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  if ScanVertDenom0 = 0 then\n    result := BGRAPixelTransparent\n  else\n  begin\n    u := (FCurYF-(FPoints[0].y*(1-ScanVertV0) + FPoints[3].y*ScanVertV0))/ScanVertDenom0;\n    GetTexColorAt(u,ScanVertV0,result,isPad);\n  end;\n  IncF(ScanVertV0, ScanVertVStep0);\n  IncF(ScanVertDenom0, ScanVertDenomStep0);\nend;\n\nprocedure TBGRAQuadLinearScanner.PrepareScanPara;\nbegin\n  ScanParaBB := bb0 + FCurXF*FCoeffs[3].y - FCurYF*FCoeffs[3].x;\n  ScanParaCC := cc0 + FCurXF*FCoeffs[1].y - FCurYF*FCoeffs[1].x;\n  if ScanParaBB <> 0 then\n    ScanParaBBInv := 1/ScanParaBB\n  else\n    ScanParaBBInv := 1;\nend;\n\nfunction TBGRAQuadLinearScanner.ScanPara: TBGRAPixel;\nvar\n  u,v,denom: Single;\n  isPad: boolean;\nbegin\n  IncF(FCurXF, 1);\n\n  if ScanParaBB = 0 then\n    result := BGRAPixelTransparent\n  else\n  begin\n    v := -ScanParaCC*ScanParaBBInv;\n    denom := FCoeffs[1].x+FCoeffs[3].x*v;\n    if denom = 0 then\n      result := BGRAPixelTransparent\n    else\n    begin\n      u := (FCurXF-1-FCoeffs[0].x-FCoeffs[2].x*v)/denom;\n      GetTexColorAt(u,v,result,isPad);\n    end;\n  end;\n\n  if FCoeffs[3].y <> 0 then\n  begin\n    IncF(ScanParaBB, FCoeffs[3].y);\n    if ScanParaBB <> 0 then\n      ScanParaBBInv := 1/ScanParaBB\n    else\n      ScanParaBBInv := 1;\n  end;\n  IncF(ScanParaCC, FCoeffs[1].y);\nend;\n\nprocedure TBGRAQuadLinearScanner.GetTexColorAt(u,v: Single; out AColor: TBGRAPixel; out AIsPadding: boolean);\nbegin\n  AIsPadding:= false;\n  if u < 0 then begin if Padding then begin u := 0; AIsPadding := true end else begin AColor := BGRAPixelTransparent; exit end end;\n  if u > 1 then begin if Padding then begin u := 1; AIsPadding := true end else begin AColor := BGRAPixelTransparent; exit end end;\n  if v < 0 then begin if Padding then begin v := 0; AIsPadding := true end else begin AColor := BGRAPixelTransparent; exit end end;\n  if v > 1 then begin if Padding then begin v := 1; AIsPadding := true end else begin AColor := BGRAPixelTransparent; exit end end;\n  with (FSourceMatrix * PointF(u,v) + FUVVector*(u*v)) do\n    if FTextureInterpolation then\n      AColor := FSource.ScanAt(x,y)\n    else\n      AColor := FSource.ScanAtInteger(System.round(x),System.round(y));\nend;\n\nconstructor TBGRAQuadLinearScanner.Create(ASource: IBGRAScanner;\n  ASourceMatrix: TAffineMatrix; const APoints: array of TPointF;\n  ATextureInterpolation: boolean);\nbegin\n  Init(ASource, APoints, ATextureInterpolation);\n  FSourceMatrix := ASourceMatrix;\nend;\n\nconstructor TBGRAQuadLinearScanner.Create(ASource: IBGRAScanner;\n  const ATexCoords: array of TPointF; const APoints: array of TPointF;\n  ATextureInterpolation: boolean);\nbegin\n  Init(ASource, APoints, ATextureInterpolation);\n  FSourceMatrix := AffineMatrixTranslation(ATexCoords[0].x,ATexCoords[0].y)*\n                AffineMatrixLinear(ATexCoords[1]-ATexCoords[0],ATexCoords[3]-ATexCoords[0]);\n  FUVVector := ATexCoords[2] - (ATexCoords[1]+ATexCoords[3]-ATexCoords[0]);\nend;\n\ndestructor TBGRAQuadLinearScanner.Destroy;\nbegin\n  freemem(FBuffer);\n  inherited Destroy;\nend;\n\n{ TBGRAAffineBitmapTransform }\n\nprocedure TBGRAAffineBitmapTransform.Init(ABitmap: TBGRACustomBitmap;\n  ARepeatImageX: Boolean; ARepeatImageY: Boolean;\n  AResampleFilter: TResampleFilter; AIncludeEdges: boolean = false);\nbegin\n  if (ABitmap.Width = 0) or (ABitmap.Height = 0) then\n    raise Exception.Create('Empty image');\n  inherited Create(ABitmap);\n  FBitmap := ABitmap;\n  FRepeatImageX := ARepeatImageX;\n  FRepeatImageY := ARepeatImageY;\n  FResampleFilter:= AResampleFilter;\n  FBuffer := nil;\n  FBufferSize:= 0;\n  FIncludeEdges := AIncludeEdges;\nend;\n\nconstructor TBGRAAffineBitmapTransform.Create(ABitmap: TBGRACustomBitmap;\n  ARepeatImage: Boolean; AResampleFilter: TResampleFilter = rfLinear; AIncludeEdges: boolean = false);\nbegin\n  Init(ABitmap,ARepeatImage,ARepeatImage,AResampleFilter,AIncludeEdges);\nend;\n\nconstructor TBGRAAffineBitmapTransform.Create(ABitmap: TBGRACustomBitmap;\n  ARepeatImageX: Boolean; ARepeatImageY: Boolean;\n  AResampleFilter: TResampleFilter; AIncludeEdges: boolean = false);\nbegin\n  Init(ABitmap,ARepeatImageX,ARepeatImageY,AResampleFilter,AIncludeEdges);\nend;\n\ndestructor TBGRAAffineBitmapTransform.Destroy;\nbegin\n  FreeMem(FBuffer);\nend;\n\nfunction TBGRAAffineBitmapTransform.InternalScanCurrentPixel: TBGRAPixel;\nbegin\n  if FEmptyMatrix then\n  begin\n    result := BGRAPixelTransparent;\n    exit;\n  end;\n  result := FBitmap.GetPixelCycle(FCur.X,FCur.Y,FResampleFilter,FRepeatImageX,FRepeatImageY);\nend;\n\nprocedure TBGRAAffineBitmapTransform.ScanPutPixels(pdest: PBGRAPixel;\n  count: integer; mode: TDrawMode);\nconst PrecisionShift = {$IFDEF CPU64}24{$ELSE}12{$ENDIF};\n      Precision = 1 shl PrecisionShift;\nvar p: PBGRAPixel;\n  n: integer;\n  posXPrecision, posYPrecision: Int32or64;\n  deltaXPrecision,deltaYPrecision: Int32or64;\n  ix,iy,shrMask,w,h: Int32or64;\n  py0: PByte;\n  deltaRow: Int32or64;\nbegin\n  w := FBitmap.Width;\n  h := FBitmap.Height;\n  if (w = 0) or (h = 0) then exit;\n\n  if GlobalOpacity = 0 then\n  begin\n    if mode = dmSet then\n      FillDWord(pdest^, count, LongWord(BGRAPixelTransparent));\n    FCur.Offset(FMatrix[1,1]*count, FMatrix[2,1]*count);\n    exit;\n  end;\n\n  posXPrecision := round(FCur.X*Precision);\n  deltaXPrecision:= round(FMatrix[1,1]*Precision);\n  posYPrecision := round(FCur.Y*Precision);\n  deltaYPrecision:= round(FMatrix[2,1]*Precision);\n  shrMask := -1;\n  shrMask := shrMask shr PrecisionShift;\n  shrMask := not shrMask;\n\n  if mode = dmSet then\n    p := pdest\n  else\n  begin\n    if count > FBufferSize then\n    begin\n      FBufferSize := count;\n      ReAllocMem(FBuffer, FBufferSize*sizeof(TBGRAPixel));\n    end;\n    p := FBuffer;\n  end;\n\n  if FResampleFilter = rfBox then\n  begin\n    inc(posXPrecision, Precision shr 1);\n    inc(posYPrecision, Precision shr 1);\n    py0 := PByte(FBitmap.ScanLine[0]);\n    if FBitmap.LineOrder = riloTopToBottom then\n      deltaRow := FBitmap.Width*sizeof(TBGRAPixel) else\n      deltaRow := -FBitmap.Width*sizeof(TBGRAPixel);\n    if FRepeatImageX or FRepeatImageY then\n    begin\n      for n := count-1 downto 0 do\n      begin\n        if posXPrecision < 0 then ix := (posXPrecision shr PrecisionShift) or shrMask else ix := posXPrecision shr PrecisionShift;\n        if posYPrecision < 0 then iy := (posYPrecision shr PrecisionShift) or shrMask else iy := posYPrecision shr PrecisionShift;\n        if FRepeatImageX then ix := PositiveMod(ix,w);\n        if FRepeatImageY then iy := PositiveMod(iy,h);\n        if (ix < 0) or (iy < 0) or (ix >= w) or (iy >= h) then\n          p^ := BGRAPixelTransparent\n        else\n          p^ := (PBGRAPixel(py0 + iy*deltaRow)+ix)^;\n        inc(p);\n        inc(posXPrecision, deltaXPrecision);\n        inc(posYPrecision, deltaYPrecision);\n      end;\n    end else\n    begin\n     for n := count-1 downto 0 do\n     begin\n       if posXPrecision < 0 then ix := (posXPrecision shr PrecisionShift) or shrMask else ix := posXPrecision shr PrecisionShift;\n       if posYPrecision < 0 then iy := (posYPrecision shr PrecisionShift) or shrMask else iy := posYPrecision shr PrecisionShift;\n       if (ix < 0) or (iy < 0) or (ix >= w) or (iy >= h) then\n         p^ := BGRAPixelTransparent\n       else\n         p^ := (PBGRAPixel(py0 + iy*deltaRow)+ix)^;\n       inc(p);\n       inc(posXPrecision, deltaXPrecision);\n       inc(posYPrecision, deltaYPrecision);\n     end;\n    end;\n  end else\n  begin\n   if FRepeatImageX and FRepeatImageY then\n   begin\n     for n := count-1 downto 0 do\n     begin\n       if posXPrecision < 0 then ix := (posXPrecision shr PrecisionShift) or shrMask else ix := posXPrecision shr PrecisionShift;\n       if posYPrecision < 0 then iy := (posYPrecision shr PrecisionShift) or shrMask else iy := posYPrecision shr PrecisionShift;\n       p^ := FBitmap.GetPixelCycle256(ix,iy, (posXPrecision shr (PrecisionShift-8)) and 255, (posYPrecision shr (PrecisionShift-8)) and 255,FResampleFilter);\n       inc(p);\n       inc(posXPrecision, deltaXPrecision);\n       inc(posYPrecision, deltaYPrecision);\n     end;\n   end else\n   if FRepeatImageX or FRepeatImageY then\n   begin\n     for n := count-1 downto 0 do\n     begin\n       if posXPrecision < 0 then ix := (posXPrecision shr PrecisionShift) or shrMask else ix := posXPrecision shr PrecisionShift;\n       if posYPrecision < 0 then iy := (posYPrecision shr PrecisionShift) or shrMask else iy := posYPrecision shr PrecisionShift;\n       p^ := FBitmap.GetPixelCycle256(ix,iy, (posXPrecision shr (PrecisionShift-8)) and 255, (posYPrecision shr (PrecisionShift-8)) and 255,FResampleFilter, FRepeatImageX,FRepeatImageY);\n       inc(p);\n       inc(posXPrecision, deltaXPrecision);\n       inc(posYPrecision, deltaYPrecision);\n     end;\n   end else\n   begin\n    for n := count-1 downto 0 do\n    begin\n      if posXPrecision < 0 then ix := (posXPrecision shr PrecisionShift) or shrMask else ix := posXPrecision shr PrecisionShift;\n      if posYPrecision < 0 then iy := (posYPrecision shr PrecisionShift) or shrMask else iy := posYPrecision shr PrecisionShift;\n      p^ := FBitmap.GetPixel256(ix,iy, (posXPrecision shr (PrecisionShift-8)) and 255, (posYPrecision shr (PrecisionShift-8)) and 255,FResampleFilter);\n      inc(p);\n      inc(posXPrecision, deltaXPrecision);\n      inc(posYPrecision, deltaYPrecision);\n    end;\n   end;\n  end;\n\n  if GlobalOpacity < 255 then\n  begin\n    if mode = dmSet then\n      p := pdest\n    else\n      p := FBuffer;\n    for n := count-1 downto 0 do\n    begin\n      p^.alpha := ApplyOpacity(p^.alpha,GlobalOpacity);\n      if p^.alpha = 0 then p^ := BGRAPixelTransparent;\n      inc(p);\n    end;\n  end;\n\n  if mode <> dmSet then PutPixels(pdest,FBuffer,count,mode,255);\n  FCur.Offset(FMatrix[1,1]*count, FMatrix[2,1]*count);\nend;\n\nfunction TBGRAAffineBitmapTransform.IsScanPutPixelsDefined: boolean;\nbegin\n  Result:=true;\nend;\n\nprocedure TBGRAAffineBitmapTransform.Fit(Origin, HAxis, VAxis: TPointF);\nbegin\n  if (FBitmap.Width = 0) or (FBitmap.Height = 0) then exit;\n  Matrix := AffineMatrix(HAxis.X-Origin.X, VAxis.X-Origin.X, Origin.X,\n                         HAxis.Y-Origin.Y, VAxis.Y-Origin.Y, Origin.Y);\n  Invert;\n  if FIncludeEdges then\n  begin\n    Matrix := AffineMatrixTranslation(-0.5,-0.5)*AffineMatrixScale(FBitmap.Width,FBitmap.Height)*Matrix;\n  end else\n    Matrix := AffineMatrixScale(FBitmap.Width-1,FBitmap.Height-1)*Matrix;\nend;\n\n{ TBGRAPerspectiveScannerTransform }\n\nfunction TBGRAPerspectiveScannerTransform.GetIncludeOppositePlane: boolean;\nbegin\n  if FMatrix = nil then\n    result := false\n  else\n    result := FMatrix.IncludeOppositePlane;\nend;\n\nprocedure TBGRAPerspectiveScannerTransform.SetIncludeOppositePlane(\n  AValue: boolean);\nbegin\n  if FMatrix <> nil then\n    FMatrix.IncludeOppositePlane := AValue;\nend;\n\nconstructor TBGRAPerspectiveScannerTransform.Create(texture: IBGRAScanner; texCoord1,texCoord2: TPointF; const quad: array of TPointF);\nbegin\n  if DoesQuadIntersect(quad[0],quad[1],quad[2],quad[3]) or not IsConvex(quad,False) or (texCoord1.x = texCoord2.x) or (texCoord1.y = texCoord2.y) then\n    FMatrix := nil\n  else\n  begin\n    FMatrix := TPerspectiveTransform.Create(quad,texCoord1.x,texCoord1.y,texCoord2.x,texCoord2.y);\n    FMatrix.OutsideValue := EmptyPointF;\n  end;\n  FTexture := texture;\n  FScanAtProc:= @FTexture.ScanAt;\nend;\n\nconstructor TBGRAPerspectiveScannerTransform.Create(texture: IBGRAScanner;\n  const texCoordsQuad: array of TPointF; const quad: array of TPointF);\nbegin\n  if DoesQuadIntersect(quad[0],quad[1],quad[2],quad[3]) or not IsConvex(quad,False) or\n     DoesQuadIntersect(texCoordsQuad[0],texCoordsQuad[1],texCoordsQuad[2],texCoordsQuad[3]) or not IsConvex(texCoordsQuad,False) then\n    FMatrix := nil\n  else\n  begin\n    FMatrix := TPerspectiveTransform.Create(quad,texCoordsQuad);\n    FMatrix.OutsideValue := EmptyPointF;\n  end;\n  FTexture := texture;\n  FScanAtProc:= @FTexture.ScanAt;\nend;\n\nconstructor TBGRAPerspectiveScannerTransform.Create(texture: IBGRAScanner;\n  transform: TPerspectiveTransform; transformOwned: boolean);\nbegin\n  if transformOwned then\n    FMatrix := transform\n  else\n    FMatrix := transform.Duplicate;\n  FTexture := texture;\n  FScanAtProc:= @FTexture.ScanAt;\nend;\n\ndestructor TBGRAPerspectiveScannerTransform.Destroy;\nbegin\n  FMatrix.free;\n  inherited Destroy;\nend;\n\nprocedure TBGRAPerspectiveScannerTransform.ScanMoveTo(X, Y: Integer);\nbegin\n  if FMatrix = nil then exit;\n  FMatrix.ScanMoveTo(X,Y);\nend;\n\nfunction TBGRAPerspectiveScannerTransform.ScanAt(X, Y: Single): TBGRAPixel;\nvar ptSource: TPointF;\nbegin\n  if FMatrix = nil then\n    result := BGRAPixelTransparent else\n  begin\n    ptSource := FMatrix.Apply(PointF(X,Y));\n    if ptSource.x = EmptySingle then\n      result := BGRAPixelTransparent\n    else\n      Result:= FScanAtProc(ptSource.X, ptSource.Y);\n  end;\nend;\n\nfunction TBGRAPerspectiveScannerTransform.ScanNextPixel: TBGRAPixel;\nvar ptSource: TPointF;\nbegin\n  if FMatrix = nil then\n    result := BGRAPixelTransparent else\n  begin\n    ptSource := FMatrix.ScanNext;\n    if ptSource.x = EmptySingle then\n      result := BGRAPixelTransparent\n    else\n      Result:= FScanAtProc(ptSource.X, ptSource.Y);\n  end;\nend;\n\nprocedure TBGRAPerspectiveScannerTransform.ScanSkipPixels(ACount: integer);\nbegin\n  if FMatrix<>nil then FMatrix.ScanSkip(ACount);\nend;\n\n{ TPerspectiveTransform }\n\nprocedure TPerspectiveTransform.Init;\nbegin\n  FOutsideValue := PointF(0,0);\n  FIncludeOppositePlane:= True;\nend;\n\nconstructor TPerspectiveTransform.Create;\nbegin\n  Init;\n  AssignIdentity;\nend;\n\nconstructor TPerspectiveTransform.Create(x1, y1, x2, y2: single;\n  const quad: array of TPointF);\nbegin\n  Init;\n  MapRectToQuad(x1 ,y1 ,x2 ,y2 ,quad );\nend;\n\nconstructor TPerspectiveTransform.Create(const quad: array of TPointF; x1, y1,\n  x2, y2: single);\nbegin\n  Init;\n  MapQuadToRect(quad, x1,y1,x2,y2);\nend;\n\nconstructor TPerspectiveTransform.Create(const srcQuad,\n  destQuad: array of TPointF);\nbegin\n  Init;\n  MapQuadToQuad(srcQuad,destQuad);\nend;\n\n{ Map a quad to quad. First compute quad to square, and then square to quad. }\nfunction TPerspectiveTransform.MapQuadToQuad(const srcQuad,\n  destQuad: array of TPointF): boolean;\nvar\n  p : TPerspectiveTransform;\nbegin\n  if not MapQuadToSquare(srcQuad ) then\n  begin\n    result:=false;\n    exit;\n  end;\n\n  p := TPerspectiveTransform.Create;\n  if not p.MapSquareToQuad(destQuad) then\n  begin\n    p.Free;\n    result:=false;\n    exit;\n  end;\n\n  //combine both transformations\n  MultiplyBy(p);\n  p.Free;\n  result:=true;\nend;\n\n//Map a rectangle to a quad. Make a polygon for the rectangle, and map it.\nfunction TPerspectiveTransform.MapRectToQuad(x1, y1, x2, y2: single;\n  const quad: array of TPointF): boolean;\nbegin\n  result := MapQuadToQuad([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)], quad);\nend;\n\n//Map a quad to a rectangle. Make a polygon for the rectangle, and map the quad into it.\nfunction TPerspectiveTransform.MapQuadToRect(const quad: array of TPointF; x1,\n  y1, x2, y2: single): boolean;\nbegin\n result := MapQuadToQuad(quad, [PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)]);\nend;\n\n//Map a square to a quad\nfunction TPerspectiveTransform.MapSquareToQuad(const quad: array of TPointF): boolean;\nvar\n d,d1,d2: TPointF;\n den ,u ,v : double;\n\nbegin\n d := quad[0]-quad[1]+quad[2]-quad[3];\n\n  if (d.x = 0.0 ) and\n    (d.y = 0.0 ) then\n  begin\n  // Affine case (parallelogram)\n   sx :=quad[1].x - quad[0].x;\n   shy:=quad[1].y - quad[0].y;\n   w0 :=0.0;\n   shx:=quad[2].x - quad[1].x;\n   sy :=quad[2].y - quad[1].y;\n   w1 :=0.0;\n   tx :=quad[0].x;\n   ty :=quad[0].y;\n   w2 :=1.0;\n\n  end\n else\n  begin\n   d1 := quad[1]-quad[2];\n   d2 := quad[3]-quad[2];\n   den:=d1.x * d2.y - d2.x * d1.y;\n\n   if den = 0.0 then\n   begin\n    // Singular case\n     sx :=0.0;\n     shy:=0.0;\n     w0 :=0.0;\n     shx:=0.0;\n     sy :=0.0;\n     w1 :=0.0;\n     tx :=0.0;\n     ty :=0.0;\n     w2 :=0.0;\n     result:=false;\n     exit;\n   end;\n\n  // General case\n   u:=(d.x * d2.y - d.y * d2.x ) / den;\n   v:=(d.y * d1.x - d.x * d1.y ) / den;\n\n   sx :=quad[1].x - quad[0].x + u * quad[1].x;\n   shy:=quad[1].y - quad[0].y + u * quad[1].y;\n   w0 :=u;\n   shx:=quad[3].x - quad[0].x + v * quad[3].x;\n   sy :=quad[3].y - quad[0].y + v * quad[3].y;\n   w1 :=v;\n   tx :=quad[0].x;\n   ty :=quad[0].y;\n   w2 :=1.0;\n\n  end;\n\n result:=true;\n\nend;\n\n//Map a quad to a square. Compute mapping from square to quad, then invert.\nfunction TPerspectiveTransform.MapQuadToSquare(const quad: array of TPointF): boolean;\nbegin\n if not MapSquareToQuad(quad ) then\n   result:=false\n else\n  result := Invert;\nend;\n\nprocedure TPerspectiveTransform.AssignIdentity;\nbegin\n sx :=1;\n shy:=0;\n w0 :=0;\n shx:=0;\n sy :=1;\n w1 :=0;\n tx :=0;\n ty :=0;\n w2 :=1;\nend;\n\nfunction TPerspectiveTransform.Invert: boolean;\nvar\n d0, d1, d2, d : double;\n copy : TPerspectiveTransform;\n\nbegin\n d0:= sy  * w2 - w1  * ty;\n d1:= w0  * ty - shy * w2;\n d2:= shy * w1 - w0  * sy;\n d := sx  * d0 + shx * d1 + tx * d2;\n\n if d = 0.0 then\n begin\n   sx := 0.0;\n   shy:= 0.0;\n   w0 := 0.0;\n   shx:= 0.0;\n   sy := 0.0;\n   w1 := 0.0;\n   tx := 0.0;\n   ty := 0.0;\n   w2 := 0.0;\n   result:= false;\n   exit;\n end;\n\n d:= 1.0 / d;\n\n copy := Duplicate;\n\n sx :=d * d0;\n shy:=d * d1;\n w0 :=d * d2;\n shx:=d * (copy.w1  * copy.tx  - copy.shx * copy.w2 );\n sy :=d * (copy.sx  * copy.w2  - copy.w0  * copy.tx );\n w1 :=d * (copy.w0  * copy.shx - copy.sx  * copy.w1 );\n tx :=d * (copy.shx * copy.ty  - copy.sy  * copy.tx );\n ty :=d * (copy.shy * copy.tx  - copy.sx  * copy.ty );\n w2 :=d * (copy.sx  * copy.sy  - copy.shy * copy.shx );\n\n copy.free;\n\n result:=true;\nend;\n\nprocedure TPerspectiveTransform.Translate(dx, dy: single);\nbegin\n tx:=tx + dx;\n ty:=ty + dy;\nend;\n\nprocedure TPerspectiveTransform.MultiplyBy(a: TPerspectiveTransform);\nvar b: TPerspectiveTransform;\nbegin\n  b := Duplicate;\n  sx :=a.sx  * b.sx  + a.shx * b.shy + a.tx * b.w0;\n  shx:=a.sx  * b.shx + a.shx * b.sy  + a.tx * b.w1;\n  tx :=a.sx  * b.tx  + a.shx * b.ty  + a.tx * b.w2;\n  shy:=a.shy * b.sx  + a.sy  * b.shy + a.ty * b.w0;\n  sy :=a.shy * b.shx + a.sy  * b.sy  + a.ty * b.w1;\n  ty :=a.shy * b.tx  + a.sy  * b.ty  + a.ty * b.w2;\n  w0 :=a.w0  * b.sx  + a.w1  * b.shy + a.w2 * b.w0;\n  w1 :=a.w0  * b.shx + a.w1  * b.sy  + a.w2 * b.w1;\n  w2 :=a.w0  * b.tx  + a.w1  * b.ty  + a.w2 * b.w2;\n  b.Free;\nend;\n\nprocedure TPerspectiveTransform.PremultiplyBy(b: TPerspectiveTransform);\nvar\n  a : TPerspectiveTransform;\n begin\n  a := Duplicate;\n  sx :=a.sx  * b.sx  + a.shx * b.shy + a.tx * b.w0;\n  shx:=a.sx  * b.shx + a.shx * b.sy  + a.tx * b.w1;\n  tx :=a.sx  * b.tx  + a.shx * b.ty  + a.tx * b.w2;\n  shy:=a.shy * b.sx  + a.sy  * b.shy + a.ty * b.w0;\n  sy :=a.shy * b.shx + a.sy  * b.sy  + a.ty * b.w1;\n  ty :=a.shy * b.tx  + a.sy  * b.ty  + a.ty * b.w2;\n  w0 :=a.w0  * b.sx  + a.w1  * b.shy + a.w2 * b.w0;\n  w1 :=a.w0  * b.shx + a.w1  * b.sy  + a.w2 * b.w1;\n  w2 :=a.w0  * b.tx  + a.w1  * b.ty  + a.w2 * b.w2;\n  a.Free;\nend;\n\nfunction TPerspectiveTransform.Duplicate: TPerspectiveTransform;\nbegin\n  result := TPerspectiveTransform.Create;\n  result.sx :=sx;\n  result.shy:=shy;\n  result.w0 :=w0;\n  result.shx:=shx;\n  result.sy :=sy;\n  result.w1 :=w1;\n  result.tx :=tx;\n  result.ty :=ty;\n  result.w2 :=w2;\nend;\n\nfunction TPerspectiveTransform.Apply(pt: TPointF): TPointF;\nvar\n  m : single;\nbegin\n  m:= pt.x * w0 + pt.y * w1 + w2;\n  if (m=0) or (not FIncludeOppositePlane and (m < 0)) then\n    result := FOutsideValue\n  else\n  begin\n   m := 1/m;\n   result.x := m * (pt.x * sx  + pt.y * shx + tx );\n   result.y := m * (pt.x * shy + pt.y * sy  + ty );\n  end;\nend;\n\nprocedure TPerspectiveTransform.ScanMoveTo(x, y: single);\nbegin\n  ScanDenom := x * w0 + y * w1 + w2;\n  ScanNumX := x * sx  + y * shx + tx;\n  scanNumY := x * shy + y * sy  + ty;\nend;\n\nfunction TPerspectiveTransform.ScanNext: TPointF;\nvar m: single;\nbegin\n  if (ScanDenom = 0) or (not FIncludeOppositePlane and (ScanDenom < 0)) then\n    result := FOutsideValue\n  else\n  begin\n   m := 1/scanDenom;\n   result.x := m * ScanNumX;\n   result.y := m * scanNumY;\n  end;\n  IncF(ScanDenom, w0);\n  IncF(ScanNumX, sx);\n  IncF(scanNumY, shy);\nend;\n\nprocedure TPerspectiveTransform.ScanSkip(ACount: integer);\nbegin\n  IncF(ScanDenom, w0*ACount);\n  IncF(ScanNumX, sx*ACount);\n  IncF(scanNumY, shy*ACount);\nend;\n\n{ TBGRATwirlScanner }\n\nconstructor TBGRATwirlScanner.Create(AScanner: IBGRAScanner; ACenter: TPoint; ARadius: single; ATurn: single = 1; AExponent: single = 3);\nbegin\n  FScanner := AScanner;\n  FScanAtFunc := @FScanner.ScanAt;\n  FCenter := ACenter;\n  FTurn := ATurn;\n  FRadius := ARadius;\n  FExponent := AExponent;\nend;\n\nfunction TBGRATwirlScanner.ScanAt(X, Y: Single): TBGRAPixel;\nvar p: TPoint;\n    d: single;\n    a,cosa,sina: integer;\nbegin\n  p := Point(Round(X)-FCenter.X,Round(Y)-FCenter.Y);\n  if (abs(p.x) < FRadius) and (abs(p.Y) < FRadius) then\n  begin\n    d := sqrt(p.x*p.x+p.y*p.y);\n    if d < FRadius then\n    begin\n      d := (FRadius-d)/FRadius;\n      if FExponent <> 1 then d := exp(ln(d)*FExponent);\n      a := round(d*FTurn*65536);\n      cosa := Cos65536(a)-32768;\n      sina := Sin65536(a)-32768;\n      result := FScanner.ScanAt((p.x*cosa+p.y*sina)/32768 + FCenter.X,\n                                (-p.x*sina+p.y*cosa)/32768 + FCenter.Y);\n      exit;\n    end;\n  end;\n  result := FScanAtFunc(X,Y);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgratypewriter.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Cached vectorial font renderer with affine transform }\nunit BGRATypewriter;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, Avl_Tree, BGRABitmapTypes, BGRACanvas2D, BGRATransform;\n\ntype\n  { Array of boxes for each glyph in text }\n  TGlyphBoxes = array of record\n    Glyph: string;\n    Box: TAffineBox;\n  end;\n\n  { Abstract class for a glyph }\n  TBGRAGlyph = class\n  protected\n    FIdentifier: string;\n    procedure WriteHeader(AStream: TStream; AName: string; AContentSize: longint);\n    class procedure ReadHeader(AStream: TStream; out AName: string; out AContentSize: longint); static;\n    function ContentSize: integer; virtual;\n    function HeaderName: string; virtual;\n    procedure WriteContent(AStream: TStream); virtual;\n    procedure ReadContent(AStream: TStream); virtual;\n  public\n    Width,Height: single;\n    constructor Create(AIdentifier: string); virtual;\n    constructor Create(AStream: TStream); virtual;\n    procedure Path({%H-}ADest: IBGRAPath; {%H-}AMatrix: TAffineMatrix; {%H-}AReverse: boolean= false); virtual;\n    property Identifier: string read FIdentifier;\n    procedure SaveToStream(AStream: TStream);\n    class function LoadFromStream(AStream: TStream): TBGRAGlyph; static;\n  end;\n\n  TGlyphPointCurveMode= TEasyBezierCurveMode;\n\nconst\n  cmAuto = TEasyBezierCurveMode.cmAuto;\n  cmCurve = TEasyBezierCurveMode.cmCurve;\n  cmAngle = TEasyBezierCurveMode.cmAngle;\n\ntype\n  { Polygonal or curved glyph }\n  TBGRAPolygonalGlyph = class(TBGRAGlyph)\n  private\n    function GetClosed: boolean;\n    function GetMinimumDotProduct: single;\n    function GetPoint(AIndex: integer): TPointF;\n    function GetPointCount: integer;\n    procedure SetClosed(AValue: boolean);\n    procedure SetMinimumDotProduct(AValue: single);\n    procedure SetPoint(AIndex: integer; AValue: TPointF);\n    procedure SetQuadraticCurves(AValue: boolean);\n  protected\n    FQuadraticCurves: boolean;\n    FEasyBezier: TEasyBezierCurve;\n    function ContentSize: integer; override;\n    function HeaderName: string; override;\n    procedure WriteContent(AStream: TStream); override;\n    procedure ReadContent(AStream: TStream); override;\n    function PointTransformMatrix(APoint: PPointF; AData: pointer): TPointF;\n    procedure Init;\n  public\n    Offset: TPointF;\n    constructor Create(AIdentifier: string); override;\n    constructor Create(AStream: TStream); override;\n    constructor Create(AStream: TStream; AQuadratic: boolean);\n    procedure SetPoints(const APoints: array of TPointF); overload;\n    procedure SetPoints(const APoints: array of TPointF; const ACurveMode: array of TGlyphPointCurveMode); overload;\n    procedure Path(ADest: IBGRAPath; AMatrix: TAffineMatrix; AReverse: boolean = false); override;\n    property QuadraticCurves: boolean read FQuadraticCurves write SetQuadraticCurves;\n    property Closed: boolean read GetClosed write SetClosed;\n    property MinimumDotProduct: single read GetMinimumDotProduct write SetMinimumDotProduct;\n    property Point[AIndex: integer]: TPointF read GetPoint write SetPoint;\n    property PointCount: integer read GetPointCount;\n  end;\n\n  { Header of typewriter stream }\n  TBGRACustomTypeWriterHeader = record\n    HeaderName: String;\n    NbGlyphs: integer;\n  end;\n\n  { Information on how to display a glyph }\n  TBGRAGlyphDisplayInfo = record\n    Glyph: TBGRAGlyph;\n    Matrix: TAffineMatrix;\n    Mirrored, RTL: WordBool;\n  end;\n\n  { Information on how to display text }\n  TBGRATextDisplayInfo = array of TBGRAGlyphDisplayInfo;\n\n  TBrowseGlyphCallbackFlag = (gcfMirrored, gcfMerged, gcfRightToLeft, gcfKerning);\n  TBrowseGlyphCallbackFlags = set of TBrowseGlyphCallbackFlag;\n  TBrowseGlyphCallback = procedure(ATextUTF8: string; AGlyph: TBGRAGlyph;\n    AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean) of object;\n\n  { Abstract class for font rendering using cached glyphs }\n  TBGRACustomTypeWriter = class\n  private\n    FBidiMode: TFontBidiMode;\n    FGlyphs: TAVLTree;\n    FKerningInfos: TAVLTree;\n    procedure GlyphCallbackForDisplayInfo({%H-}ATextUTF8: string;\n      AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out\n      AContinue: boolean);\n    procedure GlyphCallbackForTextFitInfoBeforeTransform(ATextUTF8: string;\n      AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean);\n    procedure SetBidiMode(AValue: TFontBidiMode);\n    procedure GlyphCallbackForTextSizeBeforeTransform({%H-}ATextUTF8: string;\n      AGlyph: TBGRAGlyph; {%H-}AFlags: TBrowseGlyphCallbackFlags; AData: pointer; out AContinue: boolean);\n  protected\n    TypeWriterMatrix: TAffineMatrix;\n    function FindGlyph(AIdentifier: string): TAVLTreeNode;\n    function GetGlyph(AIdentifier: string): TBGRAGlyph; virtual;\n    procedure SetGlyph(AIdentifier: string; AValue: TBGRAGlyph);\n    function GetDisplayInfo(ATextUTF8: string; X,Y: Single;\n                  AAlign: TBGRATypeWriterAlignment): TBGRATextDisplayInfo;\n    procedure GlyphPath(ADest: TBGRACanvas2D; AIdentifier: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft; AMirrored: boolean = false);\n    procedure DrawLastPath(ADest: TBGRACanvas2D);\n    procedure ClearGlyphs;\n    procedure RemoveGlyph(AIdentifier: string);\n    procedure AddGlyph(AGlyph: TBGRAGlyph);\n    function GetGlyphMatrix(AGlyph: TBGRAGlyph; X,Y: Single; AAlign: TBGRATypeWriterAlignment): TAffineMatrix;\n    function GetTextMatrix(ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment): TAffineMatrix;\n    property Glyph[AIdentifier: string]: TBGRAGlyph read GetGlyph write SetGlyph;\n    function CustomHeaderSize: integer; virtual;\n    procedure WriteCustomHeader(AStream: TStream); virtual;\n    function ReadCustomTypeWriterHeader(AStream: TStream): TBGRACustomTypeWriterHeader;\n    procedure ReadAdditionalHeader({%H-}AStream: TStream); virtual;\n    function HeaderName: string; virtual;\n    procedure BrowseGlyphs(ATextUTF8: string; ACallback: TBrowseGlyphCallback; AData: pointer; ADisplayOrder: boolean);\n    procedure BrowseAllGlyphs(ACallback: TBrowseGlyphCallback; AData: pointer);\n    function FindKerning(AIdLeft, AIdRight: string): TAVLTreeNode;\n    function GetKerningOffset(AIdBefore, AIdAfter: string; ARightToLeft: boolean): single; virtual;\n    function ComputeKerning({%H-}AIdLeft, {%H-}AIdRight: string): single; virtual;\n    procedure ReadKerning(AStream: TStream); virtual;\n    procedure WriteKerning(AStream: TStream); virtual;\n  public\n    OutlineMode: TBGRATypeWriterOutlineMode;\n    DrawGlyphsSimultaneously : boolean;\n    SubstituteBidiBracket: boolean;\n    LigatureWithF: boolean;\n    constructor Create;\n    function GetTextSizeBeforeTransform(ATextUTF8 :string): TPointF;\n    procedure TextFitInfoBeforeTransform(ATextUTF8: string; AMaxWidth: single; out ACharCount, AByteCount: integer; out AUsedWidth: single);\n    procedure SaveGlyphsToFile(AFilenameUTF8: string; AWithKerning: boolean = true);\n    procedure SaveGlyphsToStream(AStream: TStream; AWithKerning: boolean = true);\n    procedure LoadGlyphsFromFile(AFilenameUTF8: string; AWithKerning: boolean = true);\n    procedure LoadGlyphsFromStream(AStream: TStream; AWithKerning: boolean = true);\n    procedure DrawGlyph(ADest: TBGRACanvas2D; AIdentifier: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft; AMirrored: boolean = false);\n    procedure DrawText(ADest: TBGRACanvas2D; ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft); virtual;\n    procedure CopyTextPathTo(ADest: IBGRAPath; ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft); virtual;\n    function GetGlyphBox(AIdentifier: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft): TAffineBox;\n    function GetTextBox(ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft): TAffineBox;\n    function GetTextGlyphBoxes(ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft): TGlyphBoxes;\n    procedure NeedGlyphRange(AUnicodeFrom, AUnicodeTo: LongWord; AComputeKerning: boolean = false);\n    procedure NeedGlyphAnsiRange(AComputeKerning: boolean = false);\n    procedure NeedAsciiRange(AComputeKerning: boolean = false);\n    destructor Destroy; override;\n    property BidiMode: TFontBidiMode read FBidiMode write SetBidiMode;\n  end;\n\nfunction ComputeEasyBezier(APoints: array of TPointF; AClosed: boolean; AMinimumDotProduct: single = 0.707): ArrayOfTPointF; overload;\nfunction ComputeEasyBezier(APoints: array of TPointF; ACurveMode: array of TGlyphPointCurveMode; AClosed: boolean; AMinimumDotProduct: single = 0.707): ArrayOfTPointF; overload;\n\nimplementation\n\nuses BGRAUTF8, BGRAUnicode, math;\n\ntype\n  TDisplayInfoCallbackData = record\n    Align: TBGRATypeWriterAlignment;\n    Matrix: TAffineMatrix;\n    Info: TBGRATextDisplayInfo;\n    InfoIndex: integer;\n    PrevGlyphId: string;\n  end;\n\n  TTextSizeCallbackData = record\n    Size: TPointF;\n    PrevGlyphId: string;\n  end;\n\n  TTextFitInfoCallbackData = record\n    WidthAccumulator, MaxWidth: single;\n    CharCount: integer;\n    ByteCount: integer;\n    PrevGlyphId: string;\n  end;\n\n  { Kerning info between two glyphs }\n\n  { TKerningInfo }\n\n  TKerningInfo = class\n    IdLeft, IdRight: string;\n    KerningOffset: single;\n    procedure SaveToStream(AStream: TStream);\n    procedure LoadFromStream(AStream: TStream);\n    function IsDefault: boolean;\n  end;\n\nprocedure LEWritePointF(Stream: TStream; AValue: TPointF);\nbegin\n  LEWriteSingle(Stream,AValue.x);\n  LEWriteSingle(Stream,AValue.y);\nend;\n\nfunction LEReadPointF(Stream: TStream): TPointF;\nbegin\n  result.x := LEReadSingle(Stream);\n  result.y := LEReadSingle(Stream);\nend;\n\nprocedure LEWriteString(Stream: TStream; AValue: string);\nbegin\n  LEWriteLongint(Stream, length(AValue));\n  Stream.WriteBuffer(AValue[1], length(AValue));\nend;\n\nfunction LEReadString(Stream: TStream): string;\nvar\n  len: LongInt;\nbegin\n  len := LEReadLongint(Stream);\n  setlength(result, len);\n  Stream.ReadBuffer(result[1], len);\nend;\n\nprocedure LEWriteShortString(Stream: TStream; AValue: string);\nbegin\n  if length(AValue) > 255 then raise Exception.Create('String too long');\n  LEWriteByte(Stream, length(AValue));\n  Stream.WriteBuffer(AValue[1], length(AValue));\nend;\n\nfunction LEReadShortString(Stream: TStream): string;\nvar\n  len: byte;\nbegin\n  result := '';\n  len := 0;\n  Stream.Read(len, 1);\n  if len > 0 then\n  begin\n    setlength(result, len);\n    Stream.Read(result[1], len);\n  end;\nend;\n\nfunction ComputeEasyBezier(APoints: array of TPointF; AClosed: boolean; AMinimumDotProduct: single = 0.707): ArrayOfTPointF;\nvar\n  glyph: TBGRAPolygonalGlyph;\n  canvas2D: TBGRACanvas2D;\n  i: integer;\nbegin\n  if length(APoints) <= 2 then\n  begin\n    setlength(result, length(APoints));\n    for i := 0 to high(result) do\n      result[i] := APoints[i];\n    exit;\n  end;\n  glyph := TBGRAPolygonalGlyph.Create('');\n  glyph.QuadraticCurves := true;\n  glyph.Closed:= AClosed;\n  glyph.MinimumDotProduct := AMinimumDotProduct;\n  glyph.SetPoints(APoints);\n  canvas2D := TBGRACanvas2D.Create(nil);\n  canvas2D.pixelCenteredCoordinates := true;\n  glyph.Path(canvas2D,AffineMatrixIdentity);\n  glyph.Free;\n  result := canvas2D.currentPath;\n  canvas2D.free;\nend;\n\nfunction ComputeEasyBezier(APoints: array of TPointF;\n  ACurveMode: array of TGlyphPointCurveMode; AClosed: boolean;\n  AMinimumDotProduct: single): ArrayOfTPointF;\nvar\n  glyph: TBGRAPolygonalGlyph;\n  canvas2D: TBGRACanvas2D;\n  i: integer;\nbegin\n  if length(APoints) <= 2 then\n  begin\n    setlength(result, length(APoints));\n    for i := 0 to high(result) do\n      result[i] := APoints[i];\n    exit;\n  end;\n  glyph := TBGRAPolygonalGlyph.Create('');\n  glyph.QuadraticCurves := true;\n  glyph.Closed:= AClosed;\n  glyph.MinimumDotProduct := AMinimumDotProduct;\n  glyph.SetPoints(APoints, ACurveMode);\n  canvas2D := TBGRACanvas2D.Create(nil);\n  canvas2D.pixelCenteredCoordinates := true;\n  glyph.Path(canvas2D,AffineMatrixIdentity);\n  glyph.Free;\n  result := canvas2D.currentPath;\n  canvas2D.free;\nend;\n\n{ TKerningInfo }\n\nprocedure TKerningInfo.SaveToStream(AStream: TStream);\nvar\n  combinedLen: Byte;\nbegin\n  if (length(IdLeft) <= 14) and (length(IdRight) <= 14) then\n  begin\n    combinedLen := length(IdLeft) + (length(IdRight) shl 4);\n    LEWriteByte(AStream, combinedLen);\n    if length(IdLeft) > 0 then AStream.WriteBuffer(IdLeft[1], length(IdLeft));\n    if length(IdRight) > 0 then AStream.WriteBuffer(IdRight[1], length(IdRight));\n  end else\n  begin\n    LEWriteByte(AStream, 255);\n    LEWriteString(AStream, IdLeft);\n    LEWriteString(AStream, IdRight);\n  end;\n  LEWriteSingle(AStream, KerningOffset);\nend;\n\nprocedure TKerningInfo.LoadFromStream(AStream: TStream);\nvar\n  combinedLen: Byte;\nbegin\n  combinedLen := LEReadByte(AStream);\n  if combinedLen < 255 then\n  begin\n    setLength(IdLeft, combinedLen and $f);\n    if length(IdLeft) > 0 then AStream.ReadBuffer(IdLeft[1], length(IdLeft));\n    setLength(IdRight, combinedLen shr 4);\n    if length(IdRight) > 0 then AStream.ReadBuffer(IdRight[1], length(IdRight));\n  end else\n  begin\n    IdLeft := LEReadString(AStream);\n    IdRight := LEReadString(AStream);\n  end;\n  KerningOffset := LEReadSingle(AStream);\nend;\n\nfunction TKerningInfo.IsDefault: boolean;\nbegin\n  result := KerningOffset = 0;\nend;\n\n{ TBGRAPolygonalGlyph }\n\nfunction TBGRAPolygonalGlyph.GetClosed: boolean;\nbegin\n  result := FEasyBezier.Closed;\nend;\n\nfunction TBGRAPolygonalGlyph.GetMinimumDotProduct: single;\nbegin\n  result := FEasyBezier.MinimumDotProduct;\nend;\n\nfunction TBGRAPolygonalGlyph.GetPoint(AIndex: integer): TPointF;\nbegin\n  result := FEasyBezier.Point[AIndex];\nend;\n\nfunction TBGRAPolygonalGlyph.GetPointCount: integer;\nbegin\n  result := FEasyBezier.PointCount;\nend;\n\nprocedure TBGRAPolygonalGlyph.SetClosed(AValue: boolean);\nbegin\n  FEasyBezier.Closed := AValue;\nend;\n\nprocedure TBGRAPolygonalGlyph.SetMinimumDotProduct(AValue: single);\nbegin\n  FEasyBezier.MinimumDotProduct := AValue;\nend;\n\nprocedure TBGRAPolygonalGlyph.SetPoint(AIndex: integer; AValue: TPointF);\nbegin\n  FEasyBezier.Point[AIndex] := AValue;\nend;\n\nprocedure TBGRAPolygonalGlyph.SetQuadraticCurves(AValue: boolean);\nbegin\n  if FQuadraticCurves=AValue then Exit;\n  FQuadraticCurves:=AValue;\nend;\n\nfunction TBGRAPolygonalGlyph.ContentSize: integer;\nbegin\n  Result:= (inherited ContentSize) + sizeof(single)*2 + 4 + sizeof(single)*2*PointCount;\nend;\n\nfunction TBGRAPolygonalGlyph.HeaderName: string;\nbegin\n  if FQuadraticCurves then\n    Result:='TBGRAEasyBezierGlyph'\n  else\n    Result:='TBGRAPolygonalGlyph'\nend;\n\nprocedure TBGRAPolygonalGlyph.WriteContent(AStream: TStream);\nvar i: integer;\nbegin\n  inherited WriteContent(AStream);\n  LEWritePointF(AStream, Offset);\n  LEWriteLongint(AStream,PointCount);\n  for i := 0 to PointCount-1 do\n    LEWritePointF(AStream, FEasyBezier.Point[i]);\n  if FQuadraticCurves then\n    for i := 0 to PointCount-1 do\n      LEWriteLongint(AStream, ord(FEasyBezier.CurveMode[i]));\nend;\n\nprocedure TBGRAPolygonalGlyph.ReadContent(AStream: TStream);\nvar i: integer;\n  tempPts: array of TPointF;\n  flags: LongInt;\nbegin\n  inherited ReadContent(AStream);\n  Offset := LEReadPointF(AStream);\n  SetLength(tempPts, LEReadLongint(AStream));\n  for i := 0 to high(tempPts) do\n    tempPts[i] := LEReadPointF(AStream);\n  SetPoints(tempPts);\n  if FQuadraticCurves then\n  begin\n    for i := 0 to high(tempPts) do\n    begin\n      flags := LEReadLongint(AStream);\n      FEasyBezier.CurveMode[i] := TEasyBezierCurveMode(flags and 255);\n    end;\n  end;\nend;\n\nfunction TBGRAPolygonalGlyph.PointTransformMatrix(APoint: PPointF;\n  AData: pointer): TPointF;\nbegin\n  result := TAffineMatrix(AData^) * APoint^;\nend;\n\nprocedure TBGRAPolygonalGlyph.Init;\nbegin\n  FEasyBezier.Init;\n  Closed := True;\n  Offset := PointF(0,0);\n  FQuadraticCurves:= False;\nend;\n\nconstructor TBGRAPolygonalGlyph.Create(AIdentifier: string);\nbegin\n  Init;\n  inherited Create(AIdentifier);\nend;\n\nconstructor TBGRAPolygonalGlyph.Create(AStream: TStream);\nbegin\n  Init;\n  inherited Create(AStream);\nend;\n\nconstructor TBGRAPolygonalGlyph.Create(AStream: TStream; AQuadratic: boolean);\nbegin\n  Init;\n  FQuadraticCurves:= AQuadratic;\n  inherited Create(AStream);\nend;\n\nprocedure TBGRAPolygonalGlyph.SetPoints(const APoints: array of TPointF);\nbegin\n  FEasyBezier.SetPoints(APoints, cmAuto);\nend;\n\nprocedure TBGRAPolygonalGlyph.SetPoints(const APoints: array of TPointF;\n  const ACurveMode: array of TGlyphPointCurveMode);\nbegin\n  if length(APoints) <> length(ACurveMode) then\n    raise exception.Create('Dimension mismatch');\n  FEasyBezier.SetPoints(APoints, ACurveMode);\nend;\n\nprocedure TBGRAPolygonalGlyph.Path(ADest: IBGRAPath; AMatrix: TAffineMatrix;\n  AReverse: boolean);\nvar\n  nextMove: boolean;\n\n  procedure DoPoint(AIndex: integer);\n  begin\n    if isEmptyPointF(Point[AIndex]) then\n    begin\n      if not nextMove and Closed then ADest.closePath;\n      nextMove := true;\n    end else\n    begin\n      if nextMove then\n      begin\n        ADest.moveTo(AMatrix*Point[AIndex]);\n        nextMove := false;\n      end else\n        ADest.lineTo(AMatrix*Point[AIndex]);\n    end;\n  end;\n\nvar\n  i: integer;\nbegin\n  AMatrix := AMatrix*AffineMatrixTranslation(Offset.X,Offset.Y);\n  if not FQuadraticCurves then\n  begin\n    nextMove := true;\n    if AReverse then\n    begin\n      for i := PointCount-1 downto 0 do\n        DoPoint(i);\n    end else\n      for i := 0 to PointCount-1 do\n        DoPoint(i);\n    if not nextmove and Closed then ADest.closePath;\n  end else\n    FEasyBezier.CopyToPath(ADest, @PointTransformMatrix, @AMatrix, AReverse);\nend;\n\n{ TBGRAGlyph }\n\nprocedure TBGRAGlyph.WriteHeader(AStream: TStream; AName: string;\n  AContentSize: longint);\nbegin\n  LEWriteShortString(AStream, AName);\n  LEWriteLongint(AStream, AContentSize);\nend;\n\nclass procedure TBGRAGlyph.ReadHeader(AStream: TStream; out AName: string; out\n  AContentSize: longint);\nbegin\n  AName := LEReadShortString(AStream);\n  AContentSize := LEReadLongint(AStream);\nend;\n\nfunction TBGRAGlyph.ContentSize: integer;\nbegin\n  result := 4+length(FIdentifier)+sizeof(single)*2;\nend;\n\nfunction TBGRAGlyph.HeaderName: string;\nbegin\n  result := 'TBGRAGlyph';\nend;\n\nprocedure TBGRAGlyph.WriteContent(AStream: TStream);\nbegin\n  LEWriteString(AStream, FIdentifier);\n  LEWriteSingle(AStream, Width);\n  LEWriteSingle(AStream, Height);\nend;\n\nprocedure TBGRAGlyph.ReadContent(AStream: TStream);\nbegin\n  FIdentifier := LEReadString(AStream);\n  Width := LEReadSingle(AStream);\n  Height := LEReadSingle(AStream);\nend;\n\nconstructor TBGRAGlyph.Create(AIdentifier: string);\nbegin\n  FIdentifier:= AIdentifier;\nend;\n\nconstructor TBGRAGlyph.Create(AStream: TStream);\nbegin\n  ReadContent(AStream);\nend;\n\nprocedure TBGRAGlyph.Path(ADest: IBGRAPath; AMatrix: TAffineMatrix;\n  AReverse: boolean);\nbegin\n  //nothing\nend;\n\nprocedure TBGRAGlyph.SaveToStream(AStream: TStream);\nbegin\n  WriteHeader(AStream, HeaderName, ContentSize);\n  WriteContent(AStream);\nend;\n\nclass function TBGRAGlyph.LoadFromStream(AStream: TStream) : TBGRAGlyph;\nvar lName: string;\n  lContentSize: integer;\n  EndPosition: Int64;\nbegin\n  ReadHeader(AStream,lName,lContentSize);\n  EndPosition := AStream.Position + lContentSize;\n  if lName = 'TBGRAPolygonalGlyph' then\n    result := TBGRAPolygonalGlyph.Create(AStream)\n  else if lName = 'TBGRAEasyBezierGlyph' then\n    result := TBGRAPolygonalGlyph.Create(AStream, true)\n  else if lName = 'TBGRAGlyph' then\n    result := TBGRAGlyph.Create(AStream)\n  else\n    raise exception.Create('Unknown glyph type (' + lName + ')');\n  AStream.Position:= EndPosition;\nend;\n\nfunction CompareGlyphNode(Data1, Data2: Pointer): integer;\nbegin\n  result := CompareStr(TBGRAGlyph(Data1).Identifier,TBGRAGlyph(Data2).Identifier);\nend;\n\nfunction CompareKerningInfo(Data1, Data2: Pointer): integer;\nbegin\n  result := CompareStr(TKerningInfo(Data1).IdLeft, TKerningInfo(Data2).IdLeft);\n  if result = 0 then\n    result := CompareStr(TKerningInfo(Data1).IdRight, TKerningInfo(Data2).IdRight);\nend;\n\n{ TBGRACustomTypeWriter }\n\nfunction TBGRACustomTypeWriter.GetGlyph(AIdentifier: string): TBGRAGlyph;\nvar Node: TAVLTreeNode;\nbegin\n  Node := FindGlyph(AIdentifier);\n  if Node = nil then\n    result := nil\n  else\n    result := TBGRAGlyph(Node.Data);\nend;\n\nprocedure TBGRACustomTypeWriter.SetGlyph(AIdentifier: string; AValue: TBGRAGlyph);\nvar Node: TAVLTreeNode;\nbegin\n  if AValue.Identifier <> AIdentifier then\n    raise exception.Create('Identifier mismatch');\n  Node := FindGlyph(AIdentifier);\n  if Node <> nil then\n  begin\n    if pointer(AValue) <> Node.Data then\n      TBGRAGlyph(Node.Data).Free;\n    Node.Data := AValue;\n  end else\n    FGlyphs.Add(pointer(AValue));\nend;\n\nprocedure TBGRACustomTypeWriter.SetBidiMode(AValue: TFontBidiMode);\nbegin\n  if FBidiMode=AValue then Exit;\n  FBidiMode:=AValue;\nend;\n\nprocedure TBGRACustomTypeWriter.GlyphCallbackForTextFitInfoBeforeTransform(\n  ATextUTF8: string; AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags;\n  AData: Pointer; out AContinue: boolean);\nvar\n  newWidth: Single;\n  partialCharCount, charLen: Integer;\n  p,pEnd: PChar;\nbegin\n  AContinue := true;\n  with TTextFitInfoCallbackData(AData^) do\n  begin\n    newWidth := WidthAccumulator+AGlyph.Width;\n    if gcfKerning in AFlags then\n      IncF(newWidth, GetKerningOffset(PrevGlyphId, AGlyph.Identifier, gcfRightToLeft in AFlags));\n    if newWidth < MaxWidth then\n    begin\n      WidthAccumulator := newWidth;\n      inc(ByteCount, length(ATextUTF8));\n      inc(CharCount, UTF8Length(ATextUTF8));\n    end else\n    begin\n      AContinue := false;\n      if gcfMerged in AFlags then\n      begin\n        partialCharCount := Trunc(UTF8Length(ATextUTF8)*(MaxWidth-WidthAccumulator)/AGlyph.Width);\n        p := @ATextUTF8[1];\n        pEnd := p+length(ATextUTF8);\n        while (p<pEnd) and (partialCharCount > 0) do\n        begin\n          charLen := UTF8CharacterLength(p);\n          inc(p, charLen);\n          inc(ByteCount, charLen);\n          inc(CharCount);\n          dec(partialCharCount);\n        end;\n      end;\n    end;\n    PrevGlyphId:= AGlyph.Identifier;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.GlyphCallbackForDisplayInfo(ATextUTF8: string;\n  AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean);\nvar\n  m2: TAffineMatrix;\n  kerning: Single;\nbegin\n  with TDisplayInfoCallbackData(AData^) do\n  begin\n    if gcfKerning in AFlags then\n    begin\n      if gcfRightToLeft in AFlags then\n        kerning := GetKerningOffset(AGlyph.Identifier, PrevGlyphId, gcfRightToLeft in AFlags)\n        else kerning := GetKerningOffset(PrevGlyphId, AGlyph.Identifier, gcfRightToLeft in AFlags);\n      Matrix := Matrix*AffineMatrixTranslation(kerning,0);\n    end;\n\n    if Align in [twaLeft,twaMiddle,twaRight] then\n      m2 := Matrix*AffineMatrixTranslation(0,-AGlyph.Height/2) else\n    if Align in [twaBottomLeft,twaBottom,twaBottomRight] then\n      m2 := Matrix*AffineMatrixTranslation(0,-AGlyph.Height)\n    else\n      m2 := Matrix;\n\n    if gcfMirrored in AFlags then\n      m2 := m2*AffineMatrixTranslation(AGlyph.Width,0)*AffineMatrixScale(-1,1);\n\n    Info[InfoIndex].Glyph := AGlyph;\n    Info[InfoIndex].Mirrored:= gcfMirrored in AFlags;\n    Info[InfoIndex].RTL := gcfRightToLeft in AFlags;\n    Info[InfoIndex].Matrix := m2;\n\n    Matrix := Matrix*AffineMatrixTranslation(AGlyph.Width,0);\n    inc(InfoIndex);\n    PrevGlyphId := AGlyph.Identifier;\n  end;\n  AContinue:= true;\nend;\n\nfunction TBGRACustomTypeWriter.FindGlyph(AIdentifier: string): TAVLTreeNode;\nvar Comp: integer;\n  Node: TAVLTreeNode;\nbegin\n  Node:=FGlyphs.Root;\n  while (Node<>nil) do begin\n    Comp:=CompareStr(AIdentifier,TBGRAGlyph(Node.Data).Identifier);\n    if Comp=0 then break;\n    if Comp<0 then begin\n      Node:=Node.Left\n    end else begin\n      Node:=Node.Right\n    end;\n  end;\n  result := Node;\nend;\n\nconstructor TBGRACustomTypeWriter.Create;\nbegin\n  FGlyphs := TAVLTree.Create(@CompareGlyphNode);\n  TypeWriterMatrix := AffineMatrixIdentity;\n  OutlineMode:= twoFill;\n  DrawGlyphsSimultaneously := false;\n  FKerningInfos := nil;\nend;\n\nfunction TBGRACustomTypeWriter.GetTextSizeBeforeTransform(ATextUTF8: string): TPointF;\nvar data: TTextSizeCallbackData;\nbegin\n  data.Size := PointF(0,0);\n  data.PrevGlyphId:= '';\n  BrowseGlyphs(ATextUTF8, @GlyphCallbackForTextSizeBeforeTransform, @data, false);\n  result := data.Size;\nend;\n\nprocedure TBGRACustomTypeWriter.TextFitInfoBeforeTransform(ATextUTF8: string; AMaxWidth: single;\n  out ACharCount, AByteCount: integer; out AUsedWidth: single);\nvar\n  data: TTextFitInfoCallbackData;\nbegin\n  data.WidthAccumulator:= 0;\n  data.MaxWidth := AMaxWidth;\n  data.CharCount:= 0;\n  data.ByteCount:= 0;\n  data.PrevGlyphId:= '';\n  BrowseGlyphs(ATextUTF8, @GlyphCallbackForTextFitInfoBeforeTransform, @data, false);\n  ACharCount:= data.CharCount;\n  AByteCount:= data.ByteCount;\n  AUsedWidth:= data.WidthAccumulator;\nend;\n\nprocedure TBGRACustomTypeWriter.DrawGlyph(ADest: TBGRACanvas2D;\n  AIdentifier: string; X, Y: Single; AAlign: TBGRATypeWriterAlignment; AMirrored: boolean);\nbegin\n  GlyphPath(ADest, AIdentifier, X,Y, AAlign, AMirrored);\n  DrawLastPath(ADest);\nend;\n\nprocedure TBGRACustomTypeWriter.DrawText(ADest: TBGRACanvas2D; ATextUTF8: string;\n  X, Y: Single; AAlign: TBGRATypeWriterAlignment);\nvar\n  di: TBGRATextDisplayInfo;\n  i: Integer;\nbegin\n  di := GetDisplayInfo(ATextUTF8,x,y,AAlign);\n\n  if (OutlineMode <> twoPath) and not DrawGlyphsSimultaneously then\n  begin\n    //draw each glyph\n    for i := 0 to high(di) do\n    begin\n      ADest.beginPath;\n      di[i].Glyph.Path(ADest, di[i].Matrix, di[i].Mirrored);\n      DrawLastPath(ADest);\n    end;\n  end else\n  begin\n    ADest.beginPath;\n    for i := 0 to high(di) do\n      di[i].Glyph.Path(ADest, di[i].Matrix, di[i].Mirrored);\n    DrawLastPath(ADest);\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.CopyTextPathTo(ADest: IBGRAPath; ATextUTF8: string; X,Y: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft);\nvar\n  i: integer;\n  di: TBGRATextDisplayInfo;\nbegin\n  di := GetDisplayInfo(ATextUTF8,x,y,AAlign);\n  for i := 0 to high(di) do\n    di[i].Glyph.Path(ADest, di[i].Matrix, di[i].Mirrored);\nend;\n\nfunction TBGRACustomTypeWriter.GetGlyphBox(AIdentifier: string; X, Y: Single;\n  AAlign: TBGRATypeWriterAlignment): TAffineBox;\nvar g: TBGRAGlyph;\n  m: TAffineMatrix;\nbegin\n  g := GetGlyph(AIdentifier);\n  if g = nil then result := TAffineBox.EmptyBox else\n  begin\n    m := GetGlyphMatrix(g,X,Y,AAlign);\n    result := TAffineBox.AffineBox(m*PointF(0,0),m*PointF(g.Width,0),m*PointF(0,g.Height));\n  end;\nend;\n\nfunction TBGRACustomTypeWriter.GetTextBox(ATextUTF8: string; X, Y: Single;\n  AAlign: TBGRATypeWriterAlignment): TAffineBox;\nvar\n  m: TAffineMatrix;\n  size: TPointF;\nbegin\n  if ATextUTF8 = '' then result := TAffineBox.EmptyBox else\n  begin\n    size := GetTextSizeBeforeTransform(ATextUTF8);\n    m := AffineMatrixTranslation(X,Y)*TypeWriterMatrix;\n    if AAlign in[twaTop,twaMiddle,twaBottom] then m := m*AffineMatrixTranslation(-size.x/2,0) else\n    if AAlign in[twaTopRight, twaRight, twaBottomRight] then m := m*AffineMatrixTranslation(-size.x,0);\n    if AAlign in [twaLeft,twaMiddle,twaRight] then m := m*AffineMatrixTranslation(0,-size.y/2) else\n    if AAlign in [twaBottomLeft,twaBottom,twaBottomRight] then m := m*AffineMatrixTranslation(0,-size.y);\n    result := TAffineBox.AffineBox(m*PointF(0,0),m*PointF(size.x,0),m*PointF(0,size.y));\n  end;\nend;\n\nfunction TBGRACustomTypeWriter.GetTextGlyphBoxes(ATextUTF8: string; X, Y: Single;\n  AAlign: TBGRATypeWriterAlignment): TGlyphBoxes;\nvar\n  di: TBGRATextDisplayInfo;\n  i: Integer;\nbegin\n  di := GetDisplayInfo(ATextUTF8, X,Y, AAlign);\n  setlength(result, length(di));\n  for i := 0 to high(result) do\n  with di[i] do\n  begin\n    result[i].Glyph := Glyph.Identifier;\n    result[i].Box := TAffineBox.AffineBox(Matrix*PointF(0,0),Matrix*PointF(Glyph.Width,0),Matrix*PointF(0,Glyph.Height));\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.NeedGlyphRange(AUnicodeFrom, AUnicodeTo: LongWord;\n  AComputeKerning: boolean);\nvar c, c2: LongWord;\n  glyphStr: string4;\nbegin\n  for c := AUnicodeFrom to AUnicodeTo do\n  begin\n    glyphStr := UnicodeCharToUTF8(c);\n    GetGlyph(glyphStr);\n    if AComputeKerning then\n    begin\n      for c2 := AUnicodeFrom to AUnicodeTo do\n      begin\n        GetKerningOffset(glyphStr, UnicodeCharToUTF8(c2), false);\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.NeedGlyphAnsiRange(AComputeKerning: boolean);\nvar i, j: integer;\n  glyphStr: RawByteString;\nbegin\n  for i := 0 to 255 do\n  begin\n    glyphStr := AnsiToUtf8(chr(i));\n    GetGlyph(glyphStr);\n    if AComputeKerning then\n    begin\n      for j := 0 to 255 do\n      begin\n        GetKerningOffset(glyphStr, AnsiToUtf8(chr(j)), false);\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.NeedAsciiRange(AComputeKerning: boolean);\nbegin\n  NeedGlyphRange($20, $7e, AComputeKerning);\nend;\n\nfunction TBGRACustomTypeWriter.GetDisplayInfo(ATextUTF8: string; X,\n  Y: Single; AAlign: TBGRATypeWriterAlignment): TBGRATextDisplayInfo;\nvar\n  data: TDisplayInfoCallbackData;\nbegin\n  data.Align := AAlign;\n  data.Matrix := GetTextMatrix(ATextUTF8, X,Y,AAlign);\n  setlength(data.Info, UTF8Length(ATextUTF8));\n  data.InfoIndex := 0;\n  data.PrevGlyphId:= '';\n  BrowseGlyphs(ATextUTF8, @GlyphCallbackForDisplayInfo, @data, true);\n  setlength(data.Info, data.InfoIndex);\n  result := data.Info;\nend;\n\nprocedure TBGRACustomTypeWriter.GlyphPath(ADest: TBGRACanvas2D; AIdentifier: string;\n  X, Y: Single; AAlign: TBGRATypeWriterAlignment; AMirrored: boolean);\nvar g: TBGRAGlyph;\nbegin\n  ADest.beginPath;\n  g := GetGlyph(AIdentifier);\n  if g = nil then exit;\n  if AMirrored then\n    g.Path(ADest, GetGlyphMatrix(g,X,Y,AAlign), AMirrored)\n  else\n    g.Path(ADest, GetGlyphMatrix(g,X,Y,AAlign)*AffineMatrixTranslation(g.Width,0)*AffineMatrixScale(-1,1), AMirrored);\nend;\n\nprocedure TBGRACustomTypeWriter.DrawLastPath(ADest: TBGRACanvas2D);\nbegin\n  case OutlineMode of\n  twoPath: ;\n  twoFill: ADest.fill;\n  twoStroke: ADest.stroke;\n  twoFillOverStroke: ADest.fillOverStroke;\n  twoStrokeOverFill: ADest.strokeOverFill;\n  twoFillThenStroke: begin ADest.fill; ADest.stroke; end;\n  twoStrokeThenFill: begin ADest.stroke; ADest.fill; end;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.ClearGlyphs;\nbegin\n  FGlyphs.FreeAndClear;\n  if Assigned(FKerningInfos) then\n    FKerningInfos.FreeAndClear;\nend;\n\nprocedure TBGRACustomTypeWriter.RemoveGlyph(AIdentifier: string);\nvar Node: TAVLTreeNode;\nbegin\n  Node := FindGlyph(AIdentifier);\n  if Node <> nil then FGlyphs.FreeAndDelete(Node);\nend;\n\nprocedure TBGRACustomTypeWriter.AddGlyph(AGlyph: TBGRAGlyph);\nbegin\n  Glyph[AGlyph.Identifier] := AGlyph;\nend;\n\nprocedure TBGRACustomTypeWriter.SaveGlyphsToStream(AStream: TStream; AWithKerning: boolean);\nvar\n  Enumerator: TAVLTreeNodeEnumerator;\nbegin\n  LEWriteLongint(AStream,CustomHeaderSize);\n  WriteCustomHeader(AStream);\n\n  Enumerator := FGlyphs.GetEnumerator;\n  while Enumerator.MoveNext do\n    TBGRAGlyph(Enumerator.Current.Data).SaveToStream(AStream);\n  Enumerator.Free;\n\n  if AWithKerning then WriteKerning(AStream);\nend;\n\nprocedure TBGRACustomTypeWriter.LoadGlyphsFromFile(AFilenameUTF8: string; AWithKerning: boolean);\nvar Stream: TFileStreamUTF8;\nbegin\n  Stream := nil;\n  try\n    Stream := TFileStreamUTF8.Create(AFilenameUTF8, fmOpenRead);\n    LoadGlyphsFromStream(Stream);\n  finally\n    Stream.Free;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.LoadGlyphsFromStream(AStream: TStream; AWithKerning: boolean);\nvar Header: TBGRACustomTypeWriterHeader;\n  i: integer;\n  g: TBGRAGlyph;\n  HeaderSize: integer;\n  GlyphStartPosition: Int64;\nbegin\n  HeaderSize := LEReadLongint(AStream);\n  GlyphStartPosition:= AStream.Position+HeaderSize;\n  Header := ReadCustomTypeWriterHeader(AStream);\n  if header.HeaderName <> HeaderName then\n    raise exception.Create('Invalid file format (\"'+header.HeaderName+'\" should be \"'+HeaderName+'\")');\n  ReadAdditionalHeader(AStream);\n  AStream.Position:= GlyphStartPosition;\n  for i := 0 to Header.NbGlyphs-1 do\n  begin\n    g := TBGRAGlyph.LoadFromStream(AStream);\n    AddGlyph(g);\n  end;\n  ReadKerning(AStream);\nend;\n\nprocedure TBGRACustomTypeWriter.SaveGlyphsToFile(AFilenameUTF8: string; AWithKerning: boolean);\nvar Stream: TFileStreamUTF8;\nbegin\n  Stream := nil;\n  try\n    Stream := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate or fmOpenWrite);\n    SaveGlyphsToStream(Stream);\n  finally\n    Stream.Free;\n  end;\nend;\n\nfunction TBGRACustomTypeWriter.GetGlyphMatrix(AGlyph: TBGRAGlyph; X, Y: Single;\n  AAlign: TBGRATypeWriterAlignment): TAffineMatrix;\nvar tGlyph: TPointF;\nbegin\n  if AGlyph = nil then\n  begin\n    result := AffineMatrixIdentity;\n    exit;\n  end;\n  tGlyph := PointF(0,0);\n  if AAlign in [twaTop,twaMiddle,twaBottom] then DecF(tGlyph.X, AGlyph.Width/2);\n  if AAlign in [twaTopRight,twaRight,twaBottomRight] then DecF(tGlyph.X, AGlyph.Width);\n  if AAlign in [twaLeft,twaMiddle,twaRight] then DecF(tGlyph.Y, AGlyph.Height/2);\n  if AAlign in [twaBottomLeft,twaBottom,twaBottomRight] then DecF(tGlyph.Y, AGlyph.Height);\n  result := AffineMatrixTranslation(X,Y)*TypeWriterMatrix*AffineMatrixTranslation(tGlyph.X,tGlyph.Y);\nend;\n\nfunction TBGRACustomTypeWriter.GetTextMatrix(ATextUTF8: string; X, Y: Single;\n  AAlign: TBGRATypeWriterAlignment): TAffineMatrix;\nvar\n  tGlyph, size: TPointF;\nbegin\n  tGlyph := PointF(0,0);\n  if not (AAlign in [twaLeft,twaTopLeft,twaBottomLeft]) then\n  begin\n    size := GetTextSizeBeforeTransform(ATextUTF8);\n    if AAlign in[twaTop,twaMiddle,twaBottom] then tGlyph.X := -size.x/2 else\n    if AAlign in[twaTopRight, twaRight, twaBottomRight] then tGlyph.X := -size.x;\n  end;\n  result := AffineMatrixTranslation(X,Y)*TypeWriterMatrix*AffineMatrixTranslation(tGlyph.X,tGlyph.Y);\nend;\n\nfunction TBGRACustomTypeWriter.CustomHeaderSize: integer;\nbegin\n  result := 1+length(HeaderName)+4;\nend;\n\nprocedure TBGRACustomTypeWriter.WriteCustomHeader(AStream: TStream);\nbegin\n  LEWriteShortString(AStream, HeaderName);\n  LEWriteLongint(AStream,FGlyphs.Count);\nend;\n\nfunction TBGRACustomTypeWriter.ReadCustomTypeWriterHeader(AStream: TStream\n  ): TBGRACustomTypeWriterHeader;\nbegin\n  result.HeaderName := LEReadShortString(AStream);\n  result.NbGlyphs:= LEReadLongint(AStream);\nend;\n\nprocedure TBGRACustomTypeWriter.ReadAdditionalHeader(AStream: TStream);\nbegin\n  //nothing\nend;\n\nfunction TBGRACustomTypeWriter.HeaderName: string;\nbegin\n  result := 'TBGRACustomTypeWriter';\nend;\n\nprocedure TBGRACustomTypeWriter.BrowseGlyphs(ATextUTF8: string;\n  ACallback: TBrowseGlyphCallback; AData: pointer; ADisplayOrder: boolean);\ntype\n  TCharInfo = record\n    charStart, charEnd: integer;\n    bidiInfo: PUnicodeBidiInfo;\n  end;\n  function CharEquals(const info: TCharInfo; text: string): boolean;\n  var\n    i: Integer;\n  begin\n    if info.charEnd-info.charStart >= length(text) then\n    begin\n      for i := 1 to length(text) do\n        if ATextUTF8[info.charStart+i-1] <> text[i] then exit(false);\n      result := true;\n    end else\n      result := false;\n  end;\nvar\n  bidiArray: TBidiUTF8Array;\n  charInfo: array of TCharInfo;\n\n  procedure OrderedCharInfo;\n  var\n    displayOrder: TUnicodeDisplayOrder;\n    bidiIdx, orderIndex, nb: integer;\n  begin\n    displayOrder := GetUTF8DisplayOrder(bidiArray);\n    orderIndex := 0;\n    nb := 0;\n    for orderIndex := 0 to high(displayOrder) do\n      if bidiArray[displayOrder[orderIndex]].BidiInfo.IsMulticharStart then inc(nb);\n    setlength(charInfo, nb);\n    nb := 0;\n    for orderIndex := 0 to high(displayOrder) do\n    if bidiArray[displayOrder[orderIndex]].BidiInfo.IsMulticharStart then\n    begin\n      bidiIdx := displayOrder[orderIndex];\n      charInfo[nb].charStart := bidiArray[bidiIdx].Offset+1;\n      charInfo[nb].bidiInfo := @bidiArray[bidiIdx].BidiInfo;\n      while (bidiIdx < high(bidiArray)) and\n        not bidiArray[bidiIdx+1].BidiInfo.IsMulticharStart do inc(bidiIdx);\n      if bidiIdx < high(bidiArray) then charInfo[nb].charEnd := bidiArray[bidiIdx+1].Offset+1\n      else charInfo[nb].charEnd := length(ATextUTF8)+1;\n      inc(nb);\n    end;\n  end;\n\n  procedure UnorderedCharInfo;\n  var\n    i,nb: Integer;\n  begin\n    nb := 0;\n    i := 0;\n    while i <= high(bidiArray) do\n    begin\n      if not bidiArray[i].BidiInfo.IsRemoved then\n      begin\n        inc(nb);\n        while (i < high(bidiArray)) and not bidiArray[i+1].BidiInfo.IsMulticharStart do inc(i);\n      end;\n      inc(i);\n    end;\n    setlength(charInfo,nb);\n    nb := 0;\n    i := 0;\n    while i <= high(bidiArray) do\n    begin\n      if not bidiArray[i].BidiInfo.IsRemoved then\n      begin\n        charInfo[nb].charStart := bidiArray[i].Offset+1;\n        charInfo[nb].bidiInfo:= @bidiArray[i].BidiInfo;\n        while (i < high(bidiArray)) and not bidiArray[i+1].BidiInfo.IsMulticharStart do inc(i);\n        if i < high(bidiArray) then charInfo[nb].charEnd := bidiArray[i+1].Offset+1\n        else charInfo[nb].charEnd := length(ATextUTF8)+1;\n        inc(nb);\n      end;\n      inc(i);\n    end;\n  end;\n\nvar\n  cur,curStart: integer;\n  curRTL,curRTLScript,curLigatureLeft,curLigatureRight,merged: boolean;\n\n  procedure TryMerge(const AChars: array of string);\n  var\n    i: Integer;\n    match: Boolean;\n  begin\n    if merged or (cur-1+length(AChars) > length(charInfo)) then exit;\n    if length(AChars)<=1 then raise exception.Create('Expecting several characters');\n    match := true;\n    if not ADisplayOrder and curRTL then\n    begin\n      for i := 0 to high(AChars) do\n        if not CharEquals(charInfo[cur-1+high(AChars)-i], AChars[i]) then match := false;\n    end else\n      for i := 0 to high(AChars) do\n        if not CharEquals(charInfo[cur-1+i], AChars[i]) then match := false;\n    if match then\n    begin\n      inc(cur, length(AChars)-1);\n      if not ADisplayOrder and curRTL then\n        curLigatureLeft:= charInfo[cur-1].bidiInfo^.HasLigatureLeft\n      else\n        curLigatureRight:= charInfo[cur-1].bidiInfo^.HasLigatureRight;\n      merged := true;\n    end;\n  end;\n\nvar\n  nextchar,glyphId: string;\n  g: TBGRAGlyph;\n  u: LongWord;\n  shouldContinue: boolean;\n  flags: TBrowseGlyphCallbackFlags;\n  i,charDestPos,charLen: integer;\n  prevGlyphId: string;\n  prevRTL: boolean;\n  bracketInfo: TUnicodeBracketInfo;\nbegin\n  if ATextUTF8 = '' then exit;\n\n  bidiArray := AnalyzeBidiUTF8(ATextUTF8, BidiMode);\n  if ADisplayOrder then OrderedCharInfo else UnorderedCharInfo;\n\n  cur := 0;\n  prevGlyphId:= '';\n  prevRTL := false;\n  while cur < length(charInfo) do\n  begin\n    curStart := cur;\n    curRTL:= charInfo[cur].bidiInfo^.IsRightToLeft;\n    curRTLScript := charInfo[cur].bidiInfo^.IsRightToLeftScript;\n    curLigatureLeft:= charInfo[cur].bidiInfo^.HasLigatureLeft;\n    curLigatureRight:= charInfo[cur].bidiInfo^.HasLigatureRight;\n    merged := false;\n    inc(cur);\n    TryMerge(['f','f','i']);\n    TryMerge(['f','f','l']);\n    TryMerge(['f','f']);\n    TryMerge(['f','i']);\n    TryMerge(['f','l']);\n    TryMerge([UTF8_ARABIC_ALEPH,UTF8_ARABIC_LAM]);\n    TryMerge([UTF8_ARABIC_ALEPH_HAMZA_ABOVE,UTF8_ARABIC_LAM]);\n    TryMerge([UTF8_ARABIC_ALEPH_HAMZA_BELOW,UTF8_ARABIC_LAM]);\n    TryMerge([UTF8_ARABIC_ALEPH_MADDA_ABOVE,UTF8_ARABIC_LAM]);\n    //text extract correspond to the unordered actual sequence of characters\n    setlength(nextchar, max(charInfo[curStart].charEnd, charInfo[cur-1].charEnd)\n                       -min(charInfo[curStart].charStart, charInfo[cur-1].charStart));\n    move(ATextUTF8[min(charInfo[curStart].charStart, charInfo[cur-1].charStart)], nextchar[1], length(nextchar));\n    //glyph direction corresponds to script direction\n    if (curRTL and not ADisplayOrder) <> curRTLScript then\n    begin\n      setlength(glyphId, length(nextChar));\n      charDestPos := 1;\n      for i := cur-1 downto curStart do\n      begin\n        charLen := charInfo[i].charEnd-charInfo[i].charStart;\n        move(ATextUTF8[charInfo[i].charStart], glyphId[charDestPos], charLen);\n        inc(charDestPos, charLen);\n      end;\n    end else\n    begin\n      setlength(glyphId, length(nextChar));\n      charDestPos := 1;\n      for i := curStart to cur-1 do\n      begin\n        charLen := charInfo[i].charEnd-charInfo[i].charStart;\n        move(ATextUTF8[charInfo[i].charStart], glyphId[charDestPos], charLen);\n        inc(charDestPos, charLen);\n      end;\n    end;\n    glyphId := UTF8Ligature(glyphId, curRTLScript, curLigatureLeft, curLigatureRight);\n    flags := [];\n    if merged then include(flags, gcfMerged);\n    if curRTL then include(flags, gcfRightToLeft);\n    if curRTL and charInfo[curStart].bidiInfo^.IsMirrored and (UTF8Length(glyphId)=1) then\n    begin\n      u := UTF8CodepointToUnicode(pchar(glyphId), length(glyphId));\n      if SubstituteBidiBracket then\n      begin\n        bracketInfo := GetUnicodeBracketInfo(u);\n        if bracketInfo.OpeningBracket = u then\n          glyphId := UnicodeCharToUTF8(bracketInfo.ClosingBracket)\n        else if bracketInfo.ClosingBracket = u then\n          glyphId := UnicodeCharToUTF8(bracketInfo.OpeningBracket)\n        else\n          include(flags, gcfMirrored);\n      end else\n        include(flags, gcfMirrored);\n    end;\n    g := GetGlyph(glyphId);\n    if g <> nil then\n    begin\n      if (prevGlyphId <> '') and (curRTL = prevRTL) then include(flags, gcfKerning);\n      ACallback(nextchar, g, flags, AData, shouldContinue);\n      prevGlyphId := glyphId;\n      prevRTL := curRTL;\n      if not shouldContinue then break;\n    end;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.BrowseAllGlyphs(\n  ACallback: TBrowseGlyphCallback; AData: pointer);\nvar\n  g: TAVLTreeNode;\n  shouldContinue: boolean;\nbegin\n  g := FGlyphs.FindLowest;\n  shouldContinue:= true;\n  while Assigned(g) and shouldContinue do\n  begin\n    ACallback(TBGRAGlyph(g.Data).Identifier, TBGRAGlyph(g.Data), [],\n      AData, shouldContinue);\n    g := g.Right;\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.GlyphCallbackForTextSizeBeforeTransform(\n  ATextUTF8: string; AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags;\n  AData: pointer; out AContinue: boolean);\nvar\n  gSizeY: Single;\nbegin\n  with TTextSizeCallbackData(AData^) do\n  begin\n    if gcfKerning in AFlags then\n      incF(size.x, GetKerningOffset(PrevGlyphId, AGlyph.Identifier, gcfRightToLeft in AFlags) );\n    IncF(Size.x, AGlyph.Width);\n    gSizeY := AGlyph.Height;\n    if gSizeY > Size.y then Size.y := gSizeY;\n    PrevGlyphId:= AGlyph.Identifier;\n  end;\n  AContinue:= true;\nend;\n\nfunction TBGRACustomTypeWriter.FindKerning(AIdLeft, AIdRight: string): TAVLTreeNode;\nvar Comp: integer;\n  Node: TAVLTreeNode;\nbegin\n  if not Assigned(FKerningInfos) then exit(nil);\n  Node:=FKerningInfos.Root;\n  while (Node<>nil) do begin\n    Comp:=CompareStr(AIdLeft,TKerningInfo(Node.Data).IdLeft);\n    if Comp=0 then\n      Comp:=CompareStr(AIdRight,TKerningInfo(Node.Data).IdRight);\n    if Comp=0 then break;\n    if Comp<0 then begin\n      Node:=Node.Left\n    end else begin\n      Node:=Node.Right\n    end;\n  end;\n  result := Node;\nend;\n\nfunction TBGRACustomTypeWriter.GetKerningOffset(AIdBefore, AIdAfter: string; ARightToLeft: boolean): single;\nvar\n  temp: String;\n  node: TAVLTreeNode;\n  info: TKerningInfo;\nbegin\n  if ARightToLeft then\n  begin\n    temp := AIdBefore;\n    AIdBefore := AIdAfter;\n    AIdAfter := temp;\n  end;\n  if FKerningInfos = nil then\n    FKerningInfos := TAVLTree.Create(@CompareKerningInfo);\n  node := FindKerning(AIdBefore, AIdAfter);\n  if Assigned(node) then\n    result := TKerningInfo(node.Data).KerningOffset\n  else\n  begin\n    result := ComputeKerning(AIdBefore, AIdAfter);\n    info := TKerningInfo.Create;\n    info.IdLeft:= AIdBefore;\n    info.IdRight:= AIdAfter;\n    info.KerningOffset:= result;\n    FKerningInfos.Add(Pointer(info));\n  end;\nend;\n\nfunction TBGRACustomTypeWriter.ComputeKerning(AIdLeft, AIdRight: string): single;\nbegin\n  result := 0;\nend;\n\nprocedure TBGRACustomTypeWriter.ReadKerning(AStream: TStream);\nvar\n  prevPos: Int64;\n  kerningHeader: String;\n  nbKernings: LongInt;\n  kerning: TKerningInfo;\n  existingKerning: TAVLTreeNode;\n  i: Integer;\nbegin\n  prevPos := AStream.Position;\n  kerningHeader := LEReadShortString(AStream);\n  if kerningHeader <> 'TKerning[]' then\n  begin\n    AStream.Position := prevPos;\n    exit;\n  end;\n\n  if FKerningInfos = nil then\n    FKerningInfos := TAVLTree.Create(@CompareKerningInfo);\n  nbKernings := LEReadLongint(AStream);\n  for i := 0 to nbKernings - 1 do\n  begin\n    kerning := TKerningInfo.Create;\n    kerning.LoadFromStream(AStream);\n    existingKerning := FindKerning(kerning.IdLeft, kerning.IdRight);\n    if Assigned(existingKerning) then\n    begin\n      TObject(existingKerning.Data).Free;\n      existingKerning.Data := kerning;\n    end else\n      FKerningInfos.Add(Pointer(kerning));\n  end;\nend;\n\nprocedure TBGRACustomTypeWriter.WriteKerning(AStream: TStream);\nvar\n  enumerator: TAVLTreeNodeEnumerator;\n  nbKernings: integer;\nbegin\n  nbKernings:= 0;\n  enumerator := FKerningInfos.GetEnumerator;\n  while enumerator.MoveNext do\n    if not TKerningInfo(enumerator.Current.Data).IsDefault then inc(nbKernings);\n  enumerator.Free;\n\n  if nbKernings > 0 then\n  begin\n    LEWriteShortString(AStream, 'TKerning[]');\n    LEWriteLongint(AStream, nbKernings);\n    enumerator := FKerningInfos.GetEnumerator;\n    while enumerator.MoveNext do\n      with TKerningInfo(enumerator.Current.Data) do\n        if not IsDefault then SaveToStream(AStream);\n    enumerator.Free;\n  end;\nend;\n\ndestructor TBGRACustomTypeWriter.Destroy;\nbegin\n  if Assigned(FKerningInfos) then\n  begin\n    FKerningInfos.FreeAndClear;\n    FKerningInfos.Free;\n  end;\n  FGlyphs.FreeAndClear;\n  FGlyphs.Free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraunicode.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of Unicode bidirectional algorithm }\nunit BGRAUnicode;\n{ Author: circular }\n\n{$mode objfpc}{$H+}\n{$modeswitch advancedrecords}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils;\n\ntype\n  TUnicodeBidiClass = (ubcBoundaryNeutral, ubcSegmentSeparator, ubcParagraphSeparator, ubcWhiteSpace, ubcOtherNeutrals,\n                      ubcCommonSeparator, ubcNonSpacingMark,\n                      ubcLeftToRight, ubcEuropeanNumber, ubcEuropeanNumberSeparator, ubcEuropeanNumberTerminator,\n                      ubcRightToLeft, ubcArabicLetter, ubcArabicNumber,\n                      ubcUnknown,\n                      ubcCombiningLeftToRight,   //ubcLeftToRight in Mc category\n                      ubcMirroredNeutral);       //ubcOtherNeutrals with Mirrored property\n  TUnicodeJoiningType = (ujtNonJoining{U}, ujtTransparent{T}, ujtRightJoining{R}, ujtLeftJoining{L},\n                         ujtDualJoining{D}, ujtJoinCausing{C});\n  {* Bidi-mode preference (right-to-left or left-to-right) }\n  TFontBidiMode = (\n    {** Automatic bidi-mode, depending on first letter type }\n    fbmAuto,\n    {** Always left-to-right (but can embed another direction) }\n    fbmLeftToRight,\n    {** Always right-to-left (but can embed another direction) }\n    fbmRightToLeft);\n\nconst\n  ubcNeutral = [ubcSegmentSeparator, ubcParagraphSeparator, ubcWhiteSpace, ubcOtherNeutrals];\n\n  BIDI_FLAG_REMOVED = 1;                   //RLE, LRE, RLO, LRO, PDF and BN are supposed to be removed\n  BIDI_FLAG_IMPLICIT_END_OF_PARAGRAPH = 2; //implicit end of paragraph (paragraph spacing below due to end of text)\n  BIDI_FLAG_EXPLICIT_END_OF_PARAGRAPH = 4; //explicit end of paragraph (paragraph spacing below due to paragraph split)\n  BIDI_FLAG_END_OF_LINE = 8;               //line break <br>\n  BIDI_FLAG_LIGATURE_RIGHT = 16;           //joins to the letter on the right (possible for joining type R and D)\n  BIDI_FLAG_LIGATURE_LEFT = 32;            //joins to the letter on the left (possible for joining type L and D)\n  BIDI_FLAG_LIGATURE_BOUNDARY = 64;        //zero-width joiner or non-joiner\n  BIDI_FLAG_LIGATURE_TRANSPARENT = 128;    //does not affect ligature\n  BIDI_FLAG_RTL_SCRIPT = 256;              //script is written from right to left (arabic, N'Ko...)\n  BIDI_FLAG_NON_SPACING_MARK = 512;        //it is a non-spacing mark\n  BIDI_FLAG_COMBINING_LEFT = 1024;         //this letter is to be combined to the left of previous letter\n  BIDI_FLAG_COMBINING_RIGHT = 2048;        //this letter is to be combined to the right of previous letter\n  BIDI_FLAG_MULTICHAR_START = 4096;        //start of a multichar (letter + non spacing marks, non spacing marks)\n  BIDI_FLAG_MIRRORED = 8192;               //the glyph is mirrored when in RTL text\n\ntype\n  PUnicodeBidiInfo = ^TUnicodeBidiInfo;\n\n  { Bidirectional layout information for one Unicode character }\n  TUnicodeBidiInfo = packed record\n  private\n    function GetDiscardable: boolean;\n    function GetEndOfLine: boolean;\n    function GetEndOfParagraph: boolean;\n    function GetExplicitEndOfParagraph: boolean;\n    function GetHasLigatureLeft: boolean;\n    function GetHasLigatureRight: boolean;\n    function GetImplicitEndOfParagraph: boolean;\n    function GetIsCombiningLeft: boolean;\n    function GetIsCombiningRight: boolean;\n    function GetIsMirrored: boolean;\n    function GetLigatureBoundary: boolean;\n    function GetLigatureTransparent: boolean;\n    function GetMulticharStart: boolean;\n    function GetNonSpacingMark: boolean;\n    function GetRemoved: boolean;\n    function GetRightToLeft: boolean;\n    function GetParagraphRightToLeft: boolean;\n    function GetRightToLeftScript: boolean;\n  public\n    ParagraphBidiLevel, BidiLevel: byte;\n    Flags: Word;\n    class operator =(const AInfo1, AInfo2: TUnicodeBidiInfo): boolean;\n    property IsRemoved: boolean read GetRemoved;\n    property IsRightToLeft: boolean read GetRightToLeft;\n    property IsParagraphRightToLeft: boolean read GetParagraphRightToLeft;\n    property IsEndOfLine: boolean read GetEndOfLine;\n    property IsEndOfParagraph: boolean read GetEndOfParagraph;\n    property IsExplicitEndOfParagraph: boolean read GetExplicitEndOfParagraph;\n    property IsImplicitEndOfParagraph: boolean read GetImplicitEndOfParagraph;\n    property HasLigatureRight: boolean read GetHasLigatureRight;\n    property HasLigatureLeft: boolean read GetHasLigatureLeft;\n    property IsLigatureBoundary: boolean read GetLigatureBoundary;\n    property IsLigatureTransparent: boolean read GetLigatureTransparent;\n    property IsDiscardable: boolean read GetDiscardable;\n    property IsRightToLeftScript: boolean read GetRightToLeftScript;\n    property IsNonSpacingMark: boolean read GetNonSpacingMark;\n    property IsCombiningLeft: boolean read GetIsCombiningLeft;\n    property IsCombiningRight: boolean read GetIsCombiningRight;\n    property IsMulticharStart: boolean read GetMulticharStart;\n    property IsMirrored: boolean read GetIsMirrored;\n  end;\n\n  TUnicodeBidiArray = packed array of TUnicodeBidiInfo;\n  TUnicodeDisplayOrder = array of integer;\n\nconst\n  //maximum nesting level of isolates and bidi-formatting blocks (char bidi level can actually be higher due to char properties)\n  UNICODE_MAX_BIDI_DEPTH = 125;\n\n  UNICODE_NO_BREAK_SPACE = $A0;\n  UNICODE_LINE_SEPARATOR = $2028;      //equivalent of <br>\n  UNICODE_PARAGRAPH_SEPARATOR = $2029; //equivalent of </p>\n  UNICODE_NEXT_LINE = $0085;           //equivalent of CRLF\n\n  //characters that split lines into top-level bidi blocks\n  UNICODE_LEFT_TO_RIGHT_ISOLATE = $2066;\n  UNICODE_RIGHT_TO_LEFT_ISOLATE = $2067;\n  UNICODE_FIRST_STRONG_ISOLATE = $2068;\n  UNICODE_POP_DIRECTIONAL_ISOLATE = $2069;\n\n  //characters that split into bidi sub-blocks (called \"formatting\")\n  UNICODE_LEFT_TO_RIGHT_EMBEDDING = $202A;\n  UNICODE_RIGHT_TO_LEFT_EMBEDDING = $202B;\n  UNICODE_LEFT_TO_RIGHT_OVERRIDE = $202D;\n  UNICODE_RIGHT_TO_LEFT_OVERRIDE = $202E;\n  UNICODE_POP_DIRECTIONAL_FORMATTING = $202C;\n\n  //characters that mark direction without splitting the bidi block\n  UNICODE_LEFT_TO_RIGHT_MARK = $200E;\n  UNICODE_RIGHT_TO_LEFT_MARK = $200F;\n  UNICODE_ARABIC_LETTER_MARK = $061C;\n\n  //data separators\n  UNICODE_INFORMATION_SEPARATOR_FOUR = $001C;   //end-of-file\n  UNICODE_INFORMATION_SEPARATOR_THREE = $001D;  //section separator\n  UNICODE_INFORMATION_SEPARATOR_TWO = $001E;    //record separator, kind of equivalent to paragraph separator\n  UNICODE_INFORMATION_SEPARATOR_ONE = $001F;    //field separator, kind of equivalent to Tab\n\n  //zero-width\n  UNICODE_ZERO_WIDTH_SPACE = $200B;\n  UNICODE_ZERO_WIDTH_NON_JOINER = $200C;\n  UNICODE_ZERO_WIDTH_NO_BREAK_SPACE = $FEFF;   //byte order mark\n  UNICODE_ZERO_WIDTH_JOINER = $200D;\n  UNICODE_COMBINING_GRAPHEME_JOINER = $034F;\n\n  //arabic letters\n  UNICODE_ARABIC_TATWEEL = $0640;    //horizontal line that makes a ligature with most letters\n\n  //ideographic punctuation\n  UNICODE_IDEOGRAPHIC_COMMA = $3001;\n  UNICODE_IDEOGRAPHIC_FULL_STOP = $3002;\n  UNICODE_FULLWIDTH_COMMA = $FF0C;\n  UNICODE_HORIZONTAL_ELLIPSIS = $2026;\n\n  //bracket equivalence\n  UNICODE_RIGHT_POINTING_ANGLE_BRACKET = $232A;\n  UNICODE_RIGHT_ANGLE_BRACKET = $3009;\n\ntype\n  { Pair of matching brackets }\n  TUnicodeBracketInfo = record\n    IsBracket: boolean;\n    OpeningBracket,ClosingBracket: LongWord;\n  end;\n\n{ Returns the Bidi class as defined by Unicode used to determine text direction }\nfunction GetUnicodeBidiClass(u: LongWord): TUnicodeBidiClass;\n{ Same as above but returns additional classes: ubcCombiningLeftToRight and ubcMirroredNeutral }\nfunction GetUnicodeBidiClassEx(u: LongWord): TUnicodeBidiClass;\nfunction GetUnicodeBracketInfo(u: LongWord): TUnicodeBracketInfo;\n{ Returns how the letter can be joined to the surrounding letters (for example in arabic) }\nfunction GetUnicodeJoiningType(u: LongWord): TUnicodeJoiningType;\n{ Returns the Combining class defined by unicode for non-spacing marks and combining marks\n  or 255 if the character is not to be combined }\nfunction GetUnicodeCombiningClass(u: LongWord): byte;\nfunction IsZeroWidthUnicode(u: LongWord): boolean;\n{ Returns if the symbol can be mirrored horizontally for right-to-left text }\nfunction IsUnicodeMirrored(u: LongWord): boolean;\nfunction IsUnicodeParagraphSeparator(u: LongWord): boolean;\nfunction IsUnicodeCrLf(u: LongWord): boolean;\nfunction IsUnicodeSpace(u: LongWord): boolean;\nfunction IsUnicodeIsolateOrFormatting(u: LongWord): boolean;\nfunction IsModifierCombiningMark(u: LongWord): boolean;\n\n{ Analyze unicode and return bidi levels for each character.\n  baseDirection can be either UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE or UNICODE_FIRST_STRONG_ISOLATE }\nfunction AnalyzeBidiUnicode(u: PLongWord; ALength: integer; baseDirection: LongWord): TUnicodeBidiArray;\nfunction AnalyzeBidiUnicode(u: PLongWord; ALength: integer; ABidiMode: TFontBidiMode): TUnicodeBidiArray;\n\n{ Determine diplay order, provided the display surface is horizontally infinite }\nfunction GetUnicodeDisplayOrder(const AInfo: TUnicodeBidiArray): TUnicodeDisplayOrder; overload;\nfunction GetUnicodeDisplayOrder(ALevels: PByte; ACount: integer): TUnicodeDisplayOrder; overload;\nfunction GetUnicodeDisplayOrder(ABidiInfo: PUnicodeBidiInfo; AStride, ACount: integer): TUnicodeDisplayOrder; overload;\n\nimplementation\n\n{$i generatedunicode.inc}\n\nfunction GetUnicodeCombiningClass(u: LongWord): byte;\nvar\n  minIndex, maxIndex, midIndex: Integer;\n  compU: LongWord;\nbegin\n  minIndex := 0;\n  maxIndex := high(UnicodeCombiningInfos);\n  repeat\n    midIndex := (minIndex+maxIndex) shr 1;\n    compU := UnicodeCombiningInfos[midIndex].u;\n    if u = compU then exit(UnicodeCombiningInfos[midIndex].c) else\n    if u < compU then maxIndex := midIndex-1\n    else minIndex := midIndex+1;\n  until maxIndex < minIndex;\n  result := 255; //not combining\nend;\n\nfunction GetUnicodeBidiClass(u: LongWord): TUnicodeBidiClass;\nbegin\n  result := GetUnicodeBidiClassEx(u);\n  if result = ubcMirroredNeutral then result := ubcOtherNeutrals\n  else if result = ubcCombiningLeftToRight then result := ubcLeftToRight;\nend;\n\nfunction IsUnicodeMirrored(u: LongWord): boolean;\nbegin\n  result := GetUnicodeBidiClassEx(u) = ubcMirroredNeutral;\nend;\n\nfunction IsZeroWidthUnicode(u: LongWord): boolean;\nbegin\n  case u of\n  UNICODE_ZERO_WIDTH_SPACE, UNICODE_ZERO_WIDTH_NON_JOINER,\n  UNICODE_ZERO_WIDTH_JOINER, UNICODE_ZERO_WIDTH_NO_BREAK_SPACE,\n  UNICODE_LEFT_TO_RIGHT_MARK,UNICODE_RIGHT_TO_LEFT_MARK,\n  UNICODE_ARABIC_LETTER_MARK: result := true;\n  else result := false;\n  end;\nend;\n\nfunction IsUnicodeParagraphSeparator(u: LongWord): boolean;\nbegin\n  case u of\n  $0A, $0D, UNICODE_NEXT_LINE, UNICODE_PARAGRAPH_SEPARATOR,\n  UNICODE_INFORMATION_SEPARATOR_FOUR, UNICODE_INFORMATION_SEPARATOR_THREE, UNICODE_INFORMATION_SEPARATOR_TWO: result := true;\n  else result := false;\n  end;\nend;\n\nfunction IsUnicodeCrLf(u: LongWord): boolean;\nbegin\n  result := (u=10) or (u=13);\nend;\n\nfunction IsUnicodeSpace(u: LongWord): boolean;\nbegin\n  result := GetUnicodeBidiClass(u) = ubcWhiteSpace;\nend;\n\nfunction IsUnicodeIsolateOrFormatting(u: LongWord): boolean;\nbegin\n  case u of\n  UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE, UNICODE_FIRST_STRONG_ISOLATE,\n  UNICODE_LEFT_TO_RIGHT_EMBEDDING, UNICODE_RIGHT_TO_LEFT_EMBEDDING,\n  UNICODE_LEFT_TO_RIGHT_OVERRIDE, UNICODE_RIGHT_TO_LEFT_OVERRIDE: exit(true)\n  else exit(false);\n  end;\nend;\n\nfunction IsModifierCombiningMark(u: LongWord): boolean;\nbegin\n  case u of\n  $0654,$0655,$0658,$06DC,$06E3,$06E7,$06E8,$08D3,$08F3: exit(true);\n  else exit(false);\n  end;\nend;\n\n{ TUnicodeBidiInfo }\n\nfunction TUnicodeBidiInfo.GetDiscardable: boolean;\nbegin\n  result := IsRemoved and not IsLigatureBoundary;\nend;\n\nfunction TUnicodeBidiInfo.GetEndOfLine: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_END_OF_LINE) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetEndOfParagraph: boolean;\nbegin\n  result := (Flags and (BIDI_FLAG_EXPLICIT_END_OF_PARAGRAPH or BIDI_FLAG_IMPLICIT_END_OF_PARAGRAPH)) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetExplicitEndOfParagraph: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_EXPLICIT_END_OF_PARAGRAPH) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetHasLigatureLeft: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_LIGATURE_LEFT) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetHasLigatureRight: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_LIGATURE_RIGHT) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetImplicitEndOfParagraph: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_IMPLICIT_END_OF_PARAGRAPH) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetIsCombiningLeft: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_COMBINING_LEFT) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetIsCombiningRight: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_COMBINING_RIGHT) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetIsMirrored: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_MIRRORED) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetLigatureBoundary: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_LIGATURE_BOUNDARY) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetLigatureTransparent: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_LIGATURE_TRANSPARENT) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetMulticharStart: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_MULTICHAR_START) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetNonSpacingMark: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_NON_SPACING_MARK) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetRemoved: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_REMOVED) <> 0;\nend;\n\nfunction TUnicodeBidiInfo.GetRightToLeft: boolean;\nbegin\n  result := Odd(BidiLevel);\nend;\n\nfunction TUnicodeBidiInfo.GetParagraphRightToLeft: boolean;\nbegin\n  result := Odd(ParagraphBidiLevel);\nend;\n\nfunction TUnicodeBidiInfo.GetRightToLeftScript: boolean;\nbegin\n  result := (Flags and BIDI_FLAG_RTL_SCRIPT) <> 0;\nend;\n\nclass operator TUnicodeBidiInfo.=(const AInfo1, AInfo2: TUnicodeBidiInfo\n  ): boolean;\nbegin\n  result := (AInfo1.BidiLevel = AInfo2.BidiLevel) and\n    (AInfo1.Flags = AInfo2.Flags) and\n    (AInfo1.ParagraphBidiLevel = AInfo2.ParagraphBidiLevel);\nend;\n\nfunction AnalyzeBidiUnicode(u: PLongWord; ALength: integer; baseDirection: LongWord): TUnicodeBidiArray;\ntype\n  TUnicodeAnalysisElement = record\n    bidiClass: TUnicodeBidiClass;\n    prevInIsolate, nextInIsolate: integer; //next index in current isolate\n  end;\n  TUnicodeAnalysisArray = array of TUnicodeAnalysisElement;\n\nvar\n  a: TUnicodeAnalysisArray;\n\n  procedure ResolveWeakTypes(startIndex, afterEndIndex: integer; startOfSequence, {%H-}endOfSequence: TUnicodeBidiClass);\n  var\n    curIndex,backIndex: Integer;\n    latestStrongClass, prevClass: TUnicodeBidiClass;\n  begin\n    //rules W1 and W2\n    prevClass := startOfSequence;\n    latestStrongClass:= prevClass;\n    curIndex := startIndex;\n    while curIndex <> afterEndIndex do\n    begin\n      if not result[curIndex].IsRemoved then\n      begin\n        case a[curIndex].bidiClass of\n          ubcNonSpacingMark: a[curIndex].bidiClass:= prevClass;\n          ubcEuropeanNumber: if latestStrongClass = ubcArabicLetter then a[curIndex].bidiClass:= ubcArabicNumber;\n        end;\n        case u[curIndex] of\n        UNICODE_LEFT_TO_RIGHT_ISOLATE,\n        UNICODE_RIGHT_TO_LEFT_ISOLATE,\n        UNICODE_FIRST_STRONG_ISOLATE,\n        UNICODE_POP_DIRECTIONAL_ISOLATE: prevClass := ubcOtherNeutrals;\n        else prevClass := a[curIndex].bidiClass;\n        end;\n        if prevClass in [ubcLeftToRight,ubcRightToLeft,ubcArabicLetter] then latestStrongClass:= prevClass;\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n\n    // rule W4 and W5\n    prevClass := startOfSequence;\n    curIndex := startIndex;\n    while curIndex <> afterEndIndex do\n    begin\n      if not result[curIndex].IsRemoved then\n      begin\n        case a[curIndex].bidiClass of\n          ubcArabicLetter: a[curIndex].bidiClass := ubcRightToLeft;\n          ubcEuropeanNumber:\n            begin\n              backIndex := curIndex;\n              while backIndex > startIndex do\n              begin\n                dec(backIndex);\n                if result[backIndex].IsRemoved then continue;\n                if a[backIndex].bidiClass = ubcEuropeanNumberTerminator then\n                  a[backIndex].bidiClass := ubcEuropeanNumber\n                else break;\n              end;\n            end;\n          ubcEuropeanNumberSeparator:\n            if (prevClass = ubcEuropeanNumber) and (a[curIndex].nextInIsolate <> afterEndIndex) and\n              (a[a[curIndex].nextInIsolate].bidiClass = ubcEuropeanNumber) then\n                a[curIndex].bidiClass:= ubcEuropeanNumber;\n          ubcCommonSeparator:\n            if (prevClass in[ubcEuropeanNumber,ubcArabicNumber]) and (a[curIndex].nextInIsolate <> afterEndIndex) and\n              (a[a[curIndex].nextInIsolate].bidiClass = prevClass) then\n                a[curIndex].bidiClass:= prevClass;\n          ubcEuropeanNumberTerminator:\n            if prevClass = ubcEuropeanNumber then\n              a[curIndex].bidiClass:= ubcEuropeanNumber;\n        end;\n        prevClass := a[curIndex].bidiClass;\n      end;\n\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n\n    // rule W6 and W7\n    curIndex := startIndex;\n    latestStrongClass := startOfSequence;\n    while curIndex <> afterEndIndex do\n    begin\n      if not result[curIndex].IsRemoved then\n      begin\n        case a[curIndex].bidiClass of\n          ubcEuropeanNumberSeparator,ubcEuropeanNumberTerminator,ubcCommonSeparator: a[curIndex].bidiClass := ubcOtherNeutrals;\n          ubcLeftToRight,ubcRightToLeft,ubcArabicLetter: latestStrongClass:= a[curIndex].bidiClass;\n          ubcEuropeanNumber: if latestStrongClass = ubcLeftToRight then a[curIndex].bidiClass := ubcLeftToRight;\n        end;\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  procedure ResolveNeutrals(startIndex, afterEndIndex: integer; startOfSequence, endOfSequence: TUnicodeBidiClass);\n  var\n    curIndex,prevIndex,previewIndex: Integer;\n    curRTL, include, rightToLeftEmbedding: Boolean;\n    bidiClass: TUnicodeBidiClass;\n  begin\n    rightToLeftEmbedding := odd(result[startIndex].BidiLevel);\n    curIndex := startIndex;\n    curRTL := startOfSequence in [ubcRightToLeft,ubcArabicLetter];\n    while curIndex <> afterEndIndex do\n    begin\n      case a[curIndex].bidiClass of\n        ubcLeftToRight: curRTL := false;\n        ubcRightToLeft,ubcArabicLetter,ubcArabicNumber,ubcEuropeanNumber: curRTL := true;\n      else\n        if curRTL <> rightToLeftEmbedding then\n        begin\n          //determine whether following neutral chars are included in reverse direction\n          prevIndex := curIndex;\n          previewIndex := a[curIndex].nextInIsolate;\n          include := false;\n          while previewIndex <> afterEndIndex do //uses endOfSequence for overflow\n          begin\n            if previewIndex = afterEndIndex then\n              bidiClass:= endOfSequence\n            else\n              bidiClass:= a[previewIndex].bidiClass;\n            case bidiClass of\n              ubcLeftToRight:\n                begin\n                  include := not curRTL;\n                  break;\n                end;\n              ubcRightToLeft,ubcArabicLetter,ubcArabicNumber,ubcEuropeanNumber:\n                begin\n                  include := curRTL;\n                  break;\n                end;\n            end;\n            prevIndex := previewIndex;\n            previewIndex := a[previewIndex].nextInIsolate;\n          end;\n          if previewIndex = afterEndIndex then previewIndex := prevIndex;\n          if include then\n          begin\n            while curIndex <> previewIndex do\n            begin\n              if a[curIndex].bidiClass = ubcBoundaryNeutral then\n                result[curIndex].Flags := result[curIndex].Flags OR BIDI_FLAG_REMOVED; //supposed to be removed for rendering\n\n              if a[curIndex].bidiClass in (ubcNeutral+[ubcBoundaryNeutral,ubcUnknown]) then\n              begin\n                if curRTL then a[curIndex].bidiClass := ubcRightToLeft\n                else a[curIndex].bidiClass := ubcLeftToRight;\n              end;\n\n              curIndex := a[curIndex].nextInIsolate;\n            end;\n          end else\n            curRTL := rightToLeftEmbedding;\n        end;\n      end;\n\n      if a[curIndex].bidiClass = ubcBoundaryNeutral then\n        result[curIndex].Flags := result[curIndex].Flags OR BIDI_FLAG_REMOVED; //supposed to be removed for rendering\n\n      if a[curIndex].bidiClass in (ubcNeutral+[ubcBoundaryNeutral,ubcUnknown]) then\n      begin\n        if curRTL then a[curIndex].bidiClass := ubcRightToLeft\n        else a[curIndex].bidiClass := ubcLeftToRight;\n      end;\n\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  procedure ResolveBrackets(startIndex, afterEndIndex: integer; startOfSequence, {%H-}endOfSequence: TUnicodeBidiClass);\n  type TBracketPair = record\n                  openIndex,closeIndex: integer;\n                end;\n  var\n    bracketPairs: array of TBracketPair;\n    bracketPairCount: integer;\n    rightToLeft: boolean;\n\n    procedure SortBracketPairs;\n    var\n      i,j,k: Integer;\n      temp: TBracketPair;\n    begin\n      for i := 1 to bracketPairCount-1 do\n      begin\n        for j := 0 to i-1 do\n          if bracketPairs[j].openIndex > bracketPairs[i].openIndex then\n          begin\n            temp := bracketPairs[i];\n            for k := i downto j+1 do\n              bracketPairs[k] := bracketPairs[k-1];\n            bracketPairs[j] := temp;\n          end;\n      end;\n    end;\n\n    procedure FindBrackets; // rule BD16\n    const MAX_BRACKET_STACK = 63;\n    var\n      bracketStack: array[0..MAX_BRACKET_STACK-1] of record\n          bracketCharInfo: TUnicodeBracketInfo;\n          index: integer;\n        end;\n      bracketStackPos,peekPos: integer;\n      curIndex: integer;\n      curBracket: TUnicodeBracketInfo;\n    begin\n      bracketPairCount := 0;\n      bracketStackPos := 0;\n      bracketStack[0].index := -1; //avoid warning\n      curIndex := startIndex;\n      while curIndex <> afterEndIndex do\n      begin\n        if a[curIndex].bidiClass = ubcOtherNeutrals then\n        begin\n          curBracket := GetUnicodeBracketInfo(u[curIndex]);\n          if curBracket.IsBracket then\n          begin\n            // found opening bracket\n            if curBracket.OpeningBracket = u[curIndex] then\n            begin\n              if bracketStackPos <= high(bracketStack) then\n              begin\n                bracketStack[bracketStackPos].bracketCharInfo := curBracket;\n                bracketStack[bracketStackPos].index := curIndex;\n                inc(bracketStackPos);\n              end else\n                break;\n            end else\n            begin\n              for peekPos := bracketStackPos-1 downto 0 do\n                if (bracketStack[peekPos].bracketCharInfo.ClosingBracket = u[curIndex]) or\n                  ((bracketStack[peekPos].bracketCharInfo.ClosingBracket = UNICODE_RIGHT_ANGLE_BRACKET) and (u[curIndex] = UNICODE_RIGHT_POINTING_ANGLE_BRACKET)) or\n                  ((bracketStack[peekPos].bracketCharInfo.ClosingBracket = UNICODE_RIGHT_POINTING_ANGLE_BRACKET) and (u[curIndex] = UNICODE_RIGHT_ANGLE_BRACKET)) then\n                begin\n                  bracketStackPos := peekPos;\n                  if bracketPairCount >= length(bracketPairs) then\n                    setlength(bracketPairs, bracketPairCount*2 + 8);\n                  bracketPairs[bracketPairCount].openIndex := bracketStack[peekPos].index;\n                  bracketPairs[bracketPairCount].closeIndex := curIndex;\n                  inc(bracketPairCount);\n                  break;\n                end;\n            end;\n          end;\n        end;\n        curIndex := a[curIndex].nextInIsolate;\n      end;\n    end;\n\n    procedure SetCharClass(index: integer; newClass: TUnicodeBidiClass);\n    begin\n      a[index].bidiClass:= newClass;\n      index := a[index].nextInIsolate;\n      while (index <> afterEndIndex) and (GetUnicodeBidiClass(u[index]) = ubcNonSpacingMark) do\n      begin\n        a[index].bidiClass := newClass;\n        index := a[index].nextInIsolate;\n      end;\n    end;\n\n    procedure ResolveBrackets; // rule N0\n    var\n      i, curIndex: Integer;\n      sameDirection, oppositeDirection, oppositeContext: boolean;\n    begin\n      for i := 0 to bracketPairCount-1 do\n      begin\n        curIndex := bracketPairs[i].openIndex+1;\n        sameDirection:= false;\n        oppositeDirection:= false;\n        while curIndex <> bracketPairs[i].closeIndex do\n        begin\n          Assert((curIndex >= startIndex) and (curIndex < length(a)), 'Expecting valid index');\n          case a[curIndex].bidiClass of\n          ubcLeftToRight:\n            if not rightToLeft then\n            begin\n              sameDirection := true;\n              break;\n            end else oppositeDirection:= true;\n          ubcRightToLeft,ubcArabicLetter,ubcEuropeanNumber,ubcArabicNumber:\n            if rightToLeft then\n            begin\n              sameDirection := true;\n              break;\n            end else oppositeDirection:= true;\n          end;\n          curIndex := a[curIndex].nextInIsolate;\n        end;\n        if sameDirection then\n        begin\n          if rightToLeft then\n          begin\n            SetCharClass(bracketPairs[i].openIndex, ubcRightToLeft);\n            SetCharClass(bracketPairs[i].closeIndex, ubcRightToLeft);\n          end else\n          begin\n            SetCharClass(bracketPairs[i].openIndex, ubcLeftToRight);\n            SetCharClass(bracketPairs[i].closeIndex, ubcLeftToRight);\n          end;\n        end else\n        if oppositeDirection then\n        begin\n          curIndex := a[bracketPairs[i].openIndex].prevInIsolate;\n          oppositeContext := false;\n          while curIndex >= startIndex do\n          begin\n            case a[curIndex].bidiClass of\n            ubcRightToLeft,ubcArabicLetter,ubcEuropeanNumber,ubcArabicNumber:\n              begin\n                oppositeContext := not rightToLeft;\n                break;\n              end;\n            ubcLeftToRight:\n              begin\n                oppositeContext := rightToLeft;\n                break;\n              end;\n            end;\n            curIndex := a[curIndex].prevInIsolate;\n          end;\n          if rightToLeft xor oppositeContext then\n          begin\n            SetCharClass(bracketPairs[i].openIndex, ubcRightToLeft);\n            SetCharClass(bracketPairs[i].closeIndex, ubcRightToLeft);\n          end else\n          begin\n            SetCharClass(bracketPairs[i].openIndex, ubcLeftToRight);\n            SetCharClass(bracketPairs[i].closeIndex, ubcLeftToRight);\n          end;\n        end;\n      end;\n    end;\n\n  begin\n    rightToLeft:= startOfSequence in[ubcRightToLeft,ubcArabicLetter];\n    FindBrackets;\n    SortBracketPairs;\n    ResolveBrackets;\n  end;\n\n  procedure ResolveLigature(startIndex: integer);\n  var\n    prevJoiningType, joiningType: TUnicodeJoiningType;\n    prevJoiningTypeBidilevel: byte;\n    prevJoiningTypeIndex: integer;\n    curIndex: Integer;\n  begin\n    prevJoiningType := ujtNonJoining;\n    prevJoiningTypeIndex := -1;\n    prevJoiningTypeBidilevel:= 0;\n    curIndex := startIndex;\n    while curIndex <> -1 do\n    begin\n      if prevJoiningTypeBidilevel <> result[curIndex].BidiLevel then\n        prevJoiningType := ujtNonJoining;\n      if result[curIndex].IsNonSpacingMark then\n        joiningType := ujtTransparent //NSM are always joining-transparent\n        else joiningType := GetUnicodeJoiningType(u[curIndex]);\n      if joiningType = ujtTransparent then\n        result[curIndex].Flags:= result[curIndex].Flags or BIDI_FLAG_LIGATURE_TRANSPARENT;\n      if result[curIndex].IsRightToLeft then\n      begin\n        if (joiningType in[ujtRightJoining,ujtDualJoining])\n          and (prevJoiningType in[ujtLeftJoining,ujtDualJoining,ujtJoinCausing]) then\n          result[curIndex].Flags:= result[curIndex].Flags or BIDI_FLAG_LIGATURE_RIGHT;\n        if (prevJoiningType in[ujtLeftJoining,ujtDualJoining]) and (prevJoiningTypeIndex <> -1) and\n          (joiningType in[ujtRightJoining,ujtDualJoining,ujtJoinCausing]) then\n          result[prevJoiningTypeIndex].Flags:= result[prevJoiningTypeIndex].Flags or BIDI_FLAG_LIGATURE_LEFT;\n      end else\n      begin\n        if (joiningType in[ujtLeftJoining,ujtDualJoining])\n          and (prevJoiningType in[ujtRightJoining,ujtDualJoining,ujtJoinCausing]) then\n          result[curIndex].Flags:= result[curIndex].Flags or BIDI_FLAG_LIGATURE_LEFT;\n        if (prevJoiningType in[ujtRightJoining,ujtDualJoining]) and (prevJoiningTypeIndex <> -1) and\n          (joiningType in[ujtLeftJoining,ujtDualJoining,ujtJoinCausing]) then\n          result[prevJoiningTypeIndex].Flags:= result[prevJoiningTypeIndex].Flags or BIDI_FLAG_LIGATURE_RIGHT;\n      end;\n      if joiningType <> ujtTransparent then\n      begin\n        prevJoiningType := joiningType;\n        prevJoiningTypeIndex:= curIndex;\n        prevJoiningTypeBidilevel:= result[curIndex].BidiLevel;\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  procedure AnalyzeSequence(startIndex, afterEndIndex: integer; sos, eos: TUnicodeBidiClass);\n  begin\n    if afterEndIndex = startIndex then exit;\n    ResolveWeakTypes(startIndex, afterEndIndex, sos, eos);\n    ResolveBrackets(startIndex, afterEndIndex, sos, eos);\n    ResolveNeutrals(startIndex, afterEndIndex, sos, eos);\n  end;\n\n  procedure SameLevelRuns(startIndex: integer);\n  var\n    curBidiLevel: byte;\n    latestIndex,curIndex, curStartIndex: Integer;\n    curSos,eos: TUnicodeBidiClass;\n  begin\n    curIndex := startIndex;\n    while (curIndex<>-1) and result[curIndex].IsRemoved do\n      curIndex := a[curIndex].nextInIsolate;\n    if curIndex = -1 then exit;\n\n    curStartIndex:= curIndex;\n    curBidiLevel := result[curIndex].bidiLevel;\n    if odd(curBidiLevel) then curSos := ubcRightToLeft else curSos := ubcLeftToRight;\n    latestIndex := -1;\n    while curIndex <> -1 do\n    begin\n      if not result[curIndex].IsRemoved then\n      begin\n        if (latestIndex <> -1) and (result[curIndex].bidiLevel <> curBidiLevel) then\n        begin\n          if result[curIndex].bidiLevel > curBidiLevel then\n          begin\n            if odd(result[curIndex].bidiLevel) then eos := ubcRightToLeft else eos := ubcLeftToRight;\n          end else\n          begin\n            if odd(curBidiLevel) then eos := ubcRightToLeft else eos := ubcLeftToRight;\n          end;\n\n          AnalyzeSequence(curStartIndex, a[latestIndex].nextInIsolate, curSos, eos);\n\n          curSos := eos;\n          curBidiLevel:= result[curIndex].bidiLevel;\n          curStartIndex:= curIndex;\n        end;\n        latestIndex := curIndex;\n      end;\n\n      if (a[curIndex].nextInIsolate = -1) and (latestIndex<>-1) then\n      begin\n        if odd(result[latestIndex].bidiLevel) then eos := ubcRightToLeft else eos := ubcLeftToRight;\n        AnalyzeSequence(curStartIndex, a[latestIndex].nextInIsolate, curSos, eos);\n        break;\n      end;\n\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  //analyse bidi formatting of an embedding or an override block\n  procedure AnalyzeFormattingBlocks(startIndex, lastIndex: integer; minBidiLevel: byte; formattingCode: LongWord);\n  var curIndex, nextIndex, levelIncrease: integer;\n    subFormatBeforeStart, subFormatStart, formatNesting: integer;\n    subFormatCode: LongWord;\n  begin\n    case formattingCode of\n    UNICODE_LEFT_TO_RIGHT_OVERRIDE,UNICODE_LEFT_TO_RIGHT_EMBEDDING:\n      if odd(minBidiLevel) then inc(minBidiLevel);\n    UNICODE_RIGHT_TO_LEFT_OVERRIDE,UNICODE_RIGHT_TO_LEFT_EMBEDDING:\n      if not odd(minBidiLevel) then inc(minBidiLevel);\n    end;\n    nextIndex := startIndex;\n    repeat\n      Assert(nextIndex >= 0, 'Expecting valid index');\n      curIndex := nextIndex;\n      nextIndex := a[curIndex].nextInIsolate;\n      result[curIndex].bidiLevel := minBidiLevel;\n\n      //apply override\n      if formattingCode = UNICODE_LEFT_TO_RIGHT_OVERRIDE then a[curIndex].bidiClass := ubcLeftToRight\n      else if formattingCode = UNICODE_RIGHT_TO_LEFT_OVERRIDE then a[curIndex].bidiClass := ubcRightToLeft;\n\n      case u[curIndex] of\n      UNICODE_LEFT_TO_RIGHT_EMBEDDING, UNICODE_RIGHT_TO_LEFT_EMBEDDING,\n      UNICODE_LEFT_TO_RIGHT_OVERRIDE, UNICODE_RIGHT_TO_LEFT_OVERRIDE:\n        begin\n          result[curIndex].Flags := result[curIndex].Flags OR BIDI_FLAG_REMOVED;\n          case u[curIndex] of\n            UNICODE_LEFT_TO_RIGHT_OVERRIDE,UNICODE_LEFT_TO_RIGHT_EMBEDDING:\n              if odd(minBidiLevel) then levelIncrease := 1\n              else levelIncrease := 2;\n            UNICODE_RIGHT_TO_LEFT_OVERRIDE,UNICODE_RIGHT_TO_LEFT_EMBEDDING:\n              if odd(minBidiLevel) then levelIncrease := 2\n              else levelIncrease := 1;\n          else levelIncrease:= 2;\n          end;\n          if minBidiLevel <= UNICODE_MAX_BIDI_DEPTH-levelIncrease-1 then\n          begin\n            subFormatCode:= u[curIndex];\n            subFormatBeforeStart := curIndex;\n            subFormatStart := nextIndex;\n            formatNesting:= 1;\n            while formatNesting > 0 do\n            begin\n              //sub-format ends because no more chars\n              if curIndex = lastIndex then\n              begin\n                if curIndex <> subFormatBeforeStart then\n                  AnalyzeFormattingBlocks(subFormatStart, curIndex, minBidiLevel+levelIncrease, subFormatCode);\n                break;\n              end;\n\n              Assert(nextIndex >= 0, 'Expecting valid index');\n              case u[nextIndex] of\n              UNICODE_LEFT_TO_RIGHT_EMBEDDING, UNICODE_RIGHT_TO_LEFT_EMBEDDING,\n              UNICODE_LEFT_TO_RIGHT_OVERRIDE, UNICODE_RIGHT_TO_LEFT_OVERRIDE: inc(formatNesting);\n              UNICODE_POP_DIRECTIONAL_FORMATTING:\n                begin\n                  dec(formatNesting);\n                  if formatNesting = 0 then\n                  begin\n                    //sub-format ends because enough matching pop chars found\n                    if curIndex <> subFormatBeforeStart then\n                      AnalyzeFormattingBlocks(subFormatStart, curIndex, minBidiLevel+levelIncrease, subFormatCode);\n\n                    curIndex := nextIndex;\n                    nextIndex := a[curIndex].nextInIsolate;\n                    result[curIndex].Flags := result[curIndex].Flags OR BIDI_FLAG_REMOVED;\n                    break;\n                  end;\n                end;\n              end;\n\n              curIndex := nextIndex;\n              nextIndex := a[curIndex].nextInIsolate;\n            end;\n          end;\n        end;\n      UNICODE_POP_DIRECTIONAL_FORMATTING: //ignored when no matching formatting code\n        begin\n          result[curIndex].Flags := result[curIndex].Flags OR BIDI_FLAG_REMOVED;\n        end;\n      end;\n    until curIndex = lastIndex;\n  end;\n\n  procedure ResolveImplicitLevels(startIndex: integer); // rule I1 and I2\n  var\n    curIndex: Integer;\n  begin\n    curIndex := startIndex;\n    while curIndex <> -1 do\n    begin\n      case a[curIndex].bidiClass of\n      ubcRightToLeft,ubcArabicLetter:\n        if not Odd(result[curIndex].bidiLevel) then inc(result[curIndex].bidiLevel);\n      ubcEuropeanNumber,ubcArabicNumber:\n        if Odd(result[curIndex].bidiLevel) then inc(result[curIndex].bidiLevel)\n        else inc(result[curIndex].bidiLevel, 2);\n      ubcLeftToRight: if Odd(result[curIndex].bidiLevel) then inc(result[curIndex].bidiLevel);\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  procedure ResetEndOfParagraphLevels(startIndex: integer);  // rule L1\n  var\n    prevIndex,curIndex: Integer;\n\n    procedure TweakWhiteSpaceBefore(index: integer);\n    var\n      isWhiteSpaceOrIsolate: boolean;\n    begin\n      while index <> -1 do\n      begin\n        case u[index] of\n        UNICODE_FIRST_STRONG_ISOLATE, UNICODE_POP_DIRECTIONAL_ISOLATE,\n        UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE:\n          isWhiteSpaceOrIsolate:= true;\n        else\n          isWhiteSpaceOrIsolate:= GetUnicodeBidiClass(u[index]) = ubcWhiteSpace;\n        end;\n        if isWhiteSpaceOrIsolate then\n          result[index].bidiLevel := result[index].ParagraphBidiLevel\n        else\n          break;\n        index := a[index].prevInIsolate;\n      end;\n    end;\n\n  begin\n    prevIndex := -1;\n    curIndex := startIndex;\n    while curIndex <> -1 do\n    begin\n      case GetUnicodeBidiClass(u[curIndex]) of\n        ubcSegmentSeparator, ubcParagraphSeparator:\n        begin\n          result[curIndex].bidiLevel := result[curIndex].ParagraphBidiLevel;\n          TweakWhiteSpaceBefore(prevIndex);\n        end;\n      end;\n      prevIndex := curIndex;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n    TweakWhiteSpaceBefore(prevIndex);\n  end;\n\n  function DetermineIsolateDirectionFromFirstStrongClass(startIndex: integer): LongWord;\n  var\n    curIndex: Integer;\n  begin\n    curIndex := startIndex;\n    while curIndex <> -1 do\n    begin\n      Assert(curIndex >= 0, 'Expecting valid index');\n      case a[curIndex].bidiClass of\n        ubcLeftToRight: exit(UNICODE_LEFT_TO_RIGHT_ISOLATE);\n        ubcRightToLeft,ubcArabicLetter: exit(UNICODE_RIGHT_TO_LEFT_ISOLATE);\n      end;\n      case u[curIndex] of\n        UNICODE_LEFT_TO_RIGHT_OVERRIDE: exit(UNICODE_LEFT_TO_RIGHT_ISOLATE);\n        UNICODE_RIGHT_TO_LEFT_OVERRIDE: exit(UNICODE_RIGHT_TO_LEFT_ISOLATE);\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n    result := UNICODE_LEFT_TO_RIGHT_ISOLATE;\n  end;\n\n  procedure LinkCharsInIsolate(startIndex: integer; charCount: integer; out endIndex : integer);\n  var\n    curIndex,isolateStackPos,\n    prevIndex: Integer;\n  begin\n    a[startIndex].prevInIsolate := -1;\n    prevIndex := -1;\n    curIndex := startIndex;\n    isolateStackPos:= 0;\n    while curIndex < startIndex+charCount do\n    begin\n      if u[curIndex] = UNICODE_POP_DIRECTIONAL_ISOLATE then\n        if isolateStackPos > 0 then dec(isolateStackPos);\n\n      if isolateStackPos = 0 then\n      begin\n        if prevIndex<>-1 then a[prevIndex].nextInIsolate := curIndex;\n        a[curIndex].prevInIsolate := prevIndex;\n\n        prevIndex := curIndex;\n      end;\n\n      case u[curIndex] of\n      UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE, UNICODE_FIRST_STRONG_ISOLATE: inc(isolateStackPos);\n      end;\n      inc(curIndex);\n    end;\n    a[prevIndex].nextInIsolate := -1;\n    endIndex := prevIndex;\n  end;\n\n  //split isolates in order to format them independently\n  procedure AnalyzeIsolates(startIndex: integer; charCount: integer; isolateDirection: LongWord; minBidiLevel: byte = 0;\n                            isParagraph: boolean = false);\n  var curIndex, endIndex: integer;\n    nextIndex: integer;\n    subBidiLevel, levelIncrease: byte;\n    subIsolateStart: integer;\n    subIsolateDirection: LongWord;\n  begin\n    if charCount = 0 then exit;\n    Assert(startIndex>=0, 'Invalid start index');\n\n    LinkCharsInIsolate(startIndex, charCount, endIndex);\n\n    if isolateDirection = UNICODE_FIRST_STRONG_ISOLATE then\n      isolateDirection := DetermineIsolateDirectionFromFirstStrongClass(startIndex);\n\n    case isolateDirection of\n    UNICODE_LEFT_TO_RIGHT_ISOLATE: if Odd(minBidiLevel) then inc(minBidiLevel);\n    UNICODE_RIGHT_TO_LEFT_ISOLATE: if not Odd(minBidiLevel) then inc(minBidiLevel);\n    else\n      raise EInvalidOperation.Create('Unknown isolate direction');\n    end;\n\n    if isParagraph then\n    begin\n      curIndex := startIndex;\n      while curIndex <> -1 do\n      begin\n        result[curIndex].ParagraphBidiLevel := minBidiLevel;\n        curIndex := a[curIndex].nextInIsolate;\n      end;\n    end;\n\n    case isolateDirection of\n    UNICODE_LEFT_TO_RIGHT_ISOLATE: AnalyzeFormattingBlocks(startIndex, endIndex, minBidiLevel, UNICODE_LEFT_TO_RIGHT_EMBEDDING);\n    UNICODE_RIGHT_TO_LEFT_ISOLATE: AnalyzeFormattingBlocks(startIndex, endIndex, minBidiLevel, UNICODE_RIGHT_TO_LEFT_EMBEDDING);\n    end;\n\n    SameLevelRuns(startIndex);\n    ResolveImplicitLevels(startIndex);\n    ResolveLigature(startIndex);\n\n    if isParagraph then\n      ResetEndOfParagraphLevels(startIndex);\n\n    //analyse sub-isolates\n    curIndex := startIndex;\n    while curIndex <> -1 do\n    begin\n      Assert(curIndex >= 0, 'Expecting valid index');\n      case u[curIndex] of\n      UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE, UNICODE_FIRST_STRONG_ISOLATE:\n        begin\n          subBidiLevel := result[curIndex].bidiLevel;\n          nextIndex := a[curIndex].nextInIsolate;\n          if nextIndex <> -1 then\n          begin\n            if result[nextIndex].bidiLevel > subBidiLevel then\n              subBidiLevel:= result[nextIndex].bidiLevel;\n          end;\n          if ((isolateDirection = UNICODE_LEFT_TO_RIGHT_ISOLATE) and\n             (u[curIndex] = UNICODE_RIGHT_TO_LEFT_ISOLATE)) or\n             ((isolateDirection = UNICODE_LEFT_TO_RIGHT_ISOLATE) and\n             (u[curIndex] = UNICODE_RIGHT_TO_LEFT_ISOLATE)) then\n            levelIncrease := 1\n          else\n            levelIncrease:= 2;\n          if subBidiLevel+levelIncrease <= UNICODE_MAX_BIDI_DEPTH-1 then\n          begin\n            subIsolateDirection := u[curIndex];\n            subIsolateStart:= curIndex+1;\n            curIndex := nextIndex;\n\n            //sub-isolates ends because no more chars\n            if curIndex = -1 then\n            begin\n              AnalyzeIsolates(subIsolateStart, startIndex+charCount-subIsolateStart, subIsolateDirection, subBidiLevel+1);\n              break;\n            end else\n            begin\n              AnalyzeIsolates(subIsolateStart, curIndex-subIsolateStart, subIsolateDirection, subBidiLevel+1);\n              continue;\n            end;\n          end;\n        end;\n      end;\n      curIndex := a[curIndex].nextInIsolate;\n    end;\n  end;\n\n  //split UTF8 string into paragraphs\n  procedure SplitParagraphs;\n  var\n    lineStartIndex, curIndex: integer;\n  begin\n    curIndex := 0;\n    lineStartIndex := curIndex;\n    while curIndex < ALength do\n    begin\n      if a[curIndex].bidiClass = ubcParagraphSeparator then\n      begin\n        //skip second CRLF char\n        if IsUnicodeCrLf(u[curIndex]) and (curIndex+1 < ALength) and\n           IsUnicodeCrLf(u[curIndex+1]) and (u[curIndex+1] <> u[curIndex]) then\n        begin\n          inc(curIndex);\n          result[curIndex].Flags := result[curIndex].Flags and not BIDI_FLAG_MULTICHAR_START;\n        end;\n\n        result[curIndex].Flags := result[curIndex].Flags or BIDI_FLAG_EXPLICIT_END_OF_PARAGRAPH;\n\n        AnalyzeIsolates(lineStartIndex, curIndex+1-lineStartIndex, baseDirection, 0, true);\n        lineStartIndex := curIndex+1;\n      end;\n      inc(curIndex);\n    end;\n    if curIndex > lineStartIndex then\n    begin\n      result[curIndex-1].Flags := result[curIndex-1].Flags or BIDI_FLAG_IMPLICIT_END_OF_PARAGRAPH;\n      AnalyzeIsolates(lineStartIndex, curIndex-lineStartIndex, baseDirection, 0, true);\n    end;\n  end;\n\nvar i: integer;\n  classEx: TUnicodeBidiClass;\nbegin\n  setlength(a, ALength);\n  setlength(result, ALength);\n  if ALength > 0 then\n  begin\n    for i := 0 to high(a) do\n    begin\n      classEx := GetUnicodeBidiClassEx(u[i]);\n      case classEx of\n      ubcMirroredNeutral:\n        begin\n          result[i].Flags := result[i].Flags or BIDI_FLAG_MIRRORED;\n          a[i].bidiClass := ubcOtherNeutrals;\n        end;\n      ubcCombiningLeftToRight:\n        begin\n          case GetUnicodeCombiningClass(u[i]) of\n          208, 224: result[i].Flags := result[i].Flags OR BIDI_FLAG_COMBINING_LEFT;\n          210, 226, 9: result[i].Flags := result[i].Flags OR BIDI_FLAG_COMBINING_RIGHT;\n          0: result[i].Flags := result[i].Flags OR BIDI_FLAG_COMBINING_LEFT OR BIDI_FLAG_COMBINING_RIGHT;\n          end;\n          a[i].bidiClass := ubcLeftToRight;\n        end;\n      otherwise\n        a[i].bidiClass := classEx;\n      end;\n      case u[i] of\n      UNICODE_LINE_SEPARATOR: //line separator within paragraph\n        result[i].Flags := result[i].Flags or BIDI_FLAG_END_OF_LINE;\n      UNICODE_ZERO_WIDTH_JOINER, UNICODE_ZERO_WIDTH_NON_JOINER:\n        result[i].Flags := result[i].Flags OR BIDI_FLAG_LIGATURE_BOUNDARY;\n      end;\n      case a[i].bidiClass of\n      ubcArabicLetter,ubcArabicNumber,ubcRightToLeft:\n        result[i].Flags := result[i].Flags OR BIDI_FLAG_RTL_SCRIPT;\n      ubcNonSpacingMark: result[i].Flags := result[i].Flags OR BIDI_FLAG_NON_SPACING_MARK;\n      end;\n      if (result[i].Flags and (BIDI_FLAG_NON_SPACING_MARK or BIDI_FLAG_COMBINING_LEFT\n                               or BIDI_FLAG_COMBINING_RIGHT) = 0) or\n        (i = 0) or (a[i-1].bidiClass in [ubcSegmentSeparator, ubcParagraphSeparator]) then\n        result[i].Flags := result[i].Flags OR BIDI_FLAG_MULTICHAR_START;\n    end;\n    SplitParagraphs;\n  end;\nend;\n\nfunction AnalyzeBidiUnicode(u: PLongWord; ALength: integer;\n  ABidiMode: TFontBidiMode): TUnicodeBidiArray;\nbegin\n  case ABidiMode of\n    fbmLeftToRight: result := AnalyzeBidiUnicode(u, ALength, UNICODE_LEFT_TO_RIGHT_ISOLATE);\n    fbmRightToLeft: result := AnalyzeBidiUnicode(u, ALength, UNICODE_RIGHT_TO_LEFT_ISOLATE);\n  else\n    {fbmAuto} result := AnalyzeBidiUnicode(u, ALength, UNICODE_FIRST_STRONG_ISOLATE);\n  end;\nend;\n\nfunction GetUnicodeDisplayOrder(const AInfo: TUnicodeBidiArray): TUnicodeDisplayOrder;\nbegin\n  if length(AInfo)=0 then\n    result := nil\n  else\n    result := GetUnicodeDisplayOrder(@AInfo[0], sizeof(TUnicodeBidiInfo), length(AInfo));\nend;\n\nfunction GetUnicodeDisplayOrder(ALevels: PByte; ACount: integer): TUnicodeDisplayOrder;\n\n  procedure DetermineDisplayOrderRec(AOffset: integer; AStartIndex, ABlockCount: integer; AEmbeddingLevel: byte);\n  var minLevel: byte;\n    blockIndex,subStartIndex,subCount, subOffset: integer;\n  begin\n    //writeln('DetermineDisplayOrderRec('+inttostr(AOffset)+'/'+inttostr(ACount)+',' + inttostr(AStartIndex) +',*' +inttostr(ABlockCount)+','+inttostr(AEmbeddingLevel)+')');\n    blockIndex := 0;\n    subStartIndex := 0; //avoid warning\n    while blockIndex < ABlockCount do\n    begin\n      Assert(AOffset < ACount, 'Offset out of bounds');\n      if ALevels[AOffset] = AEmbeddingLevel then\n      begin\n        if odd(AEmbeddingLevel) then\n          result[AStartIndex+ABlockCount-1-blockIndex] := AOffset\n        else\n          result[AStartIndex+blockIndex] := AOffset;\n        inc(AOffset);\n        inc(blockIndex);\n      end else\n      begin\n        if not odd(AEmbeddingLevel) then\n          subStartIndex := AStartIndex+blockIndex;\n        subOffset := AOffset;\n        minLevel := ALevels[AOffset];\n        inc(AOffset);\n        inc(blockIndex);\n        subCount := 1;\n        while true do\n        begin\n          if (blockIndex < ABlockCount) and (ALevels[AOffset] > AEmbeddingLevel) then\n          begin\n            Assert(AOffset < ACount, 'Offset out of bounds');\n            if ALevels[AOffset] < minLevel then\n              minLevel:= ALevels[AOffset];\n            inc(AOffset);\n            inc(blockIndex);\n            inc(subCount);\n          end else\n          begin\n            if odd(AEmbeddingLevel) then\n              subStartIndex := AStartIndex+ABlockCount-1-(blockIndex-1);\n            DetermineDisplayOrderRec(subOffset, subStartIndex, subCount, minLevel);\n            break;\n          end;\n        end;\n      end;\n    end;\n  end;\n\nbegin\n  setlength(result, ACount);\n  DetermineDisplayOrderRec(0, 0, ACount, 0);\nend;\n\nfunction GetUnicodeDisplayOrder(ABidiInfo: PUnicodeBidiInfo; AStride, ACount: integer): TUnicodeDisplayOrder;\nvar\n  levels: packed array of byte;\n  originalIndices: array of integer;\n  index,len, i: integer;\n  p: PByte;\nbegin\n  len := 0;\n  p := PByte(ABidiInfo);\n  for i := 0 to ACount-1 do\n  begin\n    if not PUnicodeBidiInfo(p)^.IsRemoved then inc(len);\n    inc(p, AStride);\n  end;\n  if len = 0 then\n    result := nil\n  else\n  begin\n    setlength(levels, len);\n    setlength(originalIndices, len);\n    p := PByte(ABidiInfo);\n    index := 0;\n    for i := 0 to ACount-1 do\n    begin\n      if not PUnicodeBidiInfo(p)^.IsRemoved then\n      begin\n        levels[index] := PUnicodeBidiInfo(p)^.BidiLevel;\n        originalIndices[index] := i;\n        inc(index);\n      end;\n      inc(p, AStride);\n    end;\n    result := GetUnicodeDisplayOrder(@levels[0], len);\n    for i := 0 to len-1 do\n      result[i] := originalIndices[result[i]];\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraunicodetext.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Bidirectional Unicode text analysis }\nunit BGRAUnicodeText;\n\n{$mode objfpc}{$H+}\n{ $DEFINE DEBUG}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, BGRAUnicode, BGRAUTF8;\n\ntype\n  TDeleteCharEvent = procedure(ASender: TObject; AParagraphIndex: integer; ACharStart, ACharCount: integer) of object;\n  TInsertCharEvent = procedure(ASender: TObject; AParagraphIndex: integer; ACharStart, ACharCount: integer) of object;\n  TParagraphEvent = procedure(ASender: TObject; AParagraphIndex: integer) of object;\n  TParagraphSplitEvent = procedure(ASender: TObject; AParagraphIndex: integer; ACharIndex: integer) of object;\n  TAnalysisChangedEvent = procedure(ASender: TObject; AParagraphIndex: integer; ACharStart, ACharCount: integer) of object;\n\n  { @abstract(Tree of Unicode bidirectional text.)\n\n    Runs can be embedded in each other up to a certain level. }\n  TBidiTree = class\n  private\n    FParent: TBidiTree;\n    FData: pointer;\n    FStartIndex, FEndIndex: integer;\n    FBidiLevel: byte;\n    FBranches: TList;\n    FIsLeaf: boolean;\n    function GetBranch(AIndex: integer): TBidiTree;\n    function GetCount: integer;\n    function GetIsRightToLeft: boolean;\n  public\n    constructor Create(AData: pointer; AStartIndex, AEndIndex: integer; ABidiLevel: byte; AIsLeaf: boolean); virtual;\n    destructor Destroy; override;\n    procedure AfterFinish; virtual;\n    procedure AddBranch(ABranch: TBidiTree); virtual;\n    procedure Shorten(AEndIndex: integer); virtual;\n    function TrySplit: boolean; virtual;\n    property StartIndex: integer read FStartIndex;\n    property EndIndex: integer read FEndIndex;\n    property BidiLevel: byte read FBidiLevel;\n    property IsRightToLeft: boolean read GetIsRightToLeft;\n    property Parent: TBidiTree read FParent;\n    property IsLeaf: boolean read FIsLeaf;\n    property Count: integer read GetCount;\n    property Branch[AIndex: integer]: TBidiTree read GetBranch;\n    property Data: pointer read FData;\n  end;\n\n  TBidiTreeAny = class of TBidiTree;\n\n  { Analyze Unicode text to build a tree }\n  TUnicodeAnalysis = class\n  private\n    FOnAnalysisChanged: TAnalysisChangedEvent;\n    FOnBidiModeChanged: TNotifyEvent;\n    FOnCharDeleted: TDeleteCharEvent;\n    FOnCharInserted: TInsertCharEvent;\n    FOnParagraphMergedWithNext: TParagraphEvent;\n    FOnParagraphDeleted: TParagraphEvent;\n    FOnParagraphSplit: TParagraphSplitEvent;\n    function GetParagraphRightToLeft(AIndex: integer): boolean;\n  protected\n    FText: string;\n    FCharCount: integer;\n    FBidi: TBidiUTF8Array;\n    FParagraph: array of record\n      firstUnbrokenLineIndex: integer;\n    end;\n    FParagraphCount: integer;\n\n    FUnbrokenLine: array of record\n      startIndex: integer;\n      paragraphIndex: integer;\n    end;\n    FUnbrokenLineCount: integer;\n\n    FBidiMode: TFontBidiMode;\n    procedure Analyze;\n    procedure CheckTextAnalysis;\n    function GetUnbrokenLineParagraphIndex(AIndex: integer): integer;\n    function GetUnbrokenLineStartIndex(AIndex: integer): integer;\n    function GetUnbrokenLineEndIndex(AIndex: integer): integer;\n    function GetParagraphEndIndex(AIndex: integer): integer;\n    function GetParagraphEndIndexBeforeParagraphSeparator(AIndex: integer): integer;\n    function GetParagraphFirstUnbrokenLine(AIndex: integer): integer;\n    function GetParagraphLastUnbrokenLinePlusOne(AIndex: integer): integer;\n    function GetParagraphStartIndex(AIndex: integer): integer;\n    function GetUnicodeChar(APosition0: integer): LongWord;\n    function GetUTF8Char(APosition0: integer): string4;\n    function GetBidiInfo(APosition0: integer): TUnicodeBidiInfo;\n    procedure SetBidiMode(AValue: TFontBidiMode);\n\n    procedure InternalDeleteBidiAndUTF8(ABidiStart, ABidiCount: integer);\n    procedure InternalDeleteParagraph(AParagraphIndex: integer);\n    procedure InternalDeleteText(APosition, ACount: integer);\n    procedure InternalDeleteWithinParagraph(AParagraphIndex: integer;\n      APosition, ACount: integer; AUpdateBidi: boolean);\n    function InternalInsertText(APosition: integer;\n      const ANewBidi: TBidiUTF8Array; ANewTextUTF8: string): integer;\n    procedure InternalMergeParagraphWithNext(AParagraphIndex: integer);\n    procedure InternalSplitParagraph(AParagraphIndex: integer);\n    procedure InternalUpdateBidiIsolate(AParagraphIndex: integer; ABidiStart, ABidiCount: integer);\n    procedure InternalUpdateUnbrokenLines(AParagraphIndex: integer);\n    procedure CreateBidiTreeRec(ABidiTreeFactory: TBidiTreeAny; AData: pointer; ABidiTree: TBidiTree);\n    procedure CheckCharRange(AStartIndex, AEndIndex: integer; AMinIndex, AMaxIndex: integer);\n  public\n    constructor Create(ATextUTF8: string; ABidiMode: TFontBidiMode);\n    function GetParagraphAt(ACharIndex: integer): integer;\n    function CopyTextUTF8(AStartIndex, ACount: integer): string;\n    function CopyTextUTF8DiscardChars(AStartIndex,AEndIndex: integer; out ANonDiscardedCount: integer): string;\n    function InsertText(ATextUTF8: string; APosition: integer): integer;\n    function DeleteText(APosition, ACount: integer): integer;\n    function DeleteTextBefore(APosition, ACount: integer): integer;\n    function IncludeNonSpacingChars(APosition, ACount: integer; AIncludeCombiningMarks: boolean = true): integer;\n    function IncludeNonSpacingCharsBefore(APosition, ACount: integer; AIncludeCombiningMarks: boolean = true): integer;\n    function CreateBidiTree(ABidiTreeFactory: TBidiTreeAny; AData: pointer; AStartIndex, AEndIndex: integer;\n                            AEmbeddingBidiLevel: integer): TBidiTree;\n\n    property TextUTF8: string read FText;\n    property UTF8Char[APosition0: integer]: string4 read GetUTF8Char;\n    property UnicodeChar[APosition0: integer]: LongWord read GetUnicodeChar;\n    property BidiInfo[APosition0: integer]: TUnicodeBidiInfo read GetBidiInfo;\n    property CharCount: integer read FCharCount;\n    property UnbrokenLineCount: integer read FUnbrokenLineCount;\n    property UnbrokenLineStartIndex[AIndex: integer]: integer read GetUnbrokenLineStartIndex;\n    property UnbrokenLineEndIndex[AIndex: integer]: integer read GetUnbrokenLineEndIndex;\n    property UnbrokenLineParagraphIndex[AIndex: integer]: integer read GetUnbrokenLineParagraphIndex;\n    property ParagraphCount: integer read FParagraphCount;\n    property ParagraphFirstUnbrokenLine[AIndex:integer] : integer read GetParagraphFirstUnbrokenLine;\n    property ParagraphLastUnbrokenLinePlusOne[AIndex:integer] : integer read GetParagraphLastUnbrokenLinePlusOne;\n    property ParagraphStartIndex[AIndex: integer]: integer read GetParagraphStartIndex;\n    property ParagraphEndIndex[AIndex: integer]: integer read GetParagraphEndIndex;\n    property ParagraphEndIndexBeforeParagraphSeparator[AIndex: integer]: integer read GetParagraphEndIndexBeforeParagraphSeparator;\n    property ParagraphRightToLeft[AIndex: integer]: boolean read GetParagraphRightToLeft;\n    property BidiMode: TFontBidiMode read FBidiMode write SetBidiMode;\n    property OnBidiModeChanged: TNotifyEvent read FOnBidiModeChanged write FOnBidiModeChanged;\n    property OnCharDeleted: TDeleteCharEvent read FOnCharDeleted write FOnCharDeleted;\n    property OnCharInserted: TInsertCharEvent read FOnCharInserted write FOnCharInserted;\n    property OnParagraphDeleted: TParagraphEvent read FOnParagraphDeleted write FOnParagraphDeleted;\n    property OnParagraphMergedWithNext: TParagraphEvent read FOnParagraphMergedWithNext write FOnParagraphMergedWithNext;\n    property OnParagraphSplit: TParagraphSplitEvent read FOnParagraphSplit write FOnParagraphSplit;\n    property OnAnalysisChanged: TAnalysisChangedEvent read FOnAnalysisChanged write FOnAnalysisChanged;\n  end;\n\nimplementation\n\nuses math;\n\n{ TBidiTree }\n\nfunction TBidiTree.GetCount: integer;\nbegin\n  if Assigned(FBranches) then\n    result:= FBranches.Count\n  else\n    result := 0;\nend;\n\nfunction TBidiTree.GetIsRightToLeft: boolean;\nbegin\n  result := odd(BidiLevel);\nend;\n\nfunction TBidiTree.GetBranch(AIndex: integer): TBidiTree;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then raise exception.Create('Branch index out of bounds');\n  result := TBidiTree(FBranches[AIndex]);\nend;\n\nconstructor TBidiTree.Create(AData: pointer; AStartIndex, AEndIndex: integer; ABidiLevel: byte; AIsLeaf: boolean);\nbegin\n  FData := AData;\n  FParent := nil;\n  FStartIndex:= AStartIndex;\n  FEndIndex:= AEndIndex;\n  FBidiLevel:= ABidiLevel;\n  FBranches:= nil;\n  FIsLeaf:= AIsLeaf;\nend;\n\ndestructor TBidiTree.Destroy;\nvar\n  i: Integer;\nbegin\n  if Assigned(FBranches) then\n  begin\n    for i := 0 to FBranches.Count-1 do\n      TBidiTree(FBranches[i]).Free;\n    FBranches.Free;\n  end;\n  inherited Destroy;\nend;\n\nprocedure TBidiTree.AfterFinish;\nbegin\n  //\nend;\n\nprocedure TBidiTree.AddBranch(ABranch: TBidiTree);\nbegin\n  if IsLeaf then raise exception.Create('A leaf cannot have branches');\n  if Assigned(ABranch.Parent) then raise exception.Create('Branch already has a parent');\n  ABranch.FParent := self;\n  if FBranches = nil then FBranches := TList.Create;\n  FBranches.Add(ABranch);\nend;\n\nprocedure TBidiTree.Shorten(AEndIndex: integer);\nvar\n  i: Integer;\nbegin\n  if AEndIndex = EndIndex then exit;\n  if AEndIndex > EndIndex then raise exception.Create('Cannot extend the branch');\n  if AEndIndex < StartIndex then raise exception.Create('End index before start');\n  for i := Count-1 downto 0 do\n    if AEndIndex <= Branch[i].StartIndex then\n    begin\n      Branch[i].Free;\n      FBranches.Delete(i);\n    end else\n    if AEndIndex < Branch[i].EndIndex then\n      Branch[i].Shorten(AEndIndex);\n  FEndIndex:= AEndIndex;\nend;\n\nfunction TBidiTree.TrySplit: boolean;\nbegin\n  result := false;\nend;\n\n{ TUnicodeAnalysis }\n\nfunction TUnicodeAnalysis.GetParagraphFirstUnbrokenLine(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then raise ERangeError.Create('Paragraph index out of bounds');\n  result := FParagraph[AIndex].firstUnbrokenLineIndex;\nend;\n\nprocedure TUnicodeAnalysis.SetBidiMode(AValue: TFontBidiMode);\nvar\n  i, bidiStart, bidiCount: LongInt;\nbegin\n  if FBidiMode=AValue then Exit;\n  FBidiMode:=AValue;\n  for i := 0 to ParagraphCount-1 do\n  begin\n    bidiStart := ParagraphStartIndex[i];\n    bidiCount := ParagraphEndIndex[i]-bidiStart;\n    InternalUpdateBidiIsolate(i, bidiStart, bidiCount);\n  end;\n  if Assigned(FOnBidiModeChanged) then FOnBidiModeChanged(self);\nend;\n\nfunction TUnicodeAnalysis.GetParagraphEndIndex(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then raise ERangeError.Create('Paragraph index out of bounds');\n  result := FUnbrokenLine[FParagraph[AIndex+1].firstUnbrokenLineIndex].startIndex;\n\nend;\n\nfunction TUnicodeAnalysis.GetParagraphEndIndexBeforeParagraphSeparator(\n  AIndex: integer): integer;\nvar\n  u: LongWord;\nbegin\n  result := GetParagraphEndIndex(AIndex);\n  if (result > 0) and (AIndex < ParagraphCount) then // last paragraph separator would be temporary before split\n  begin\n    u := UnicodeChar[result-1];\n    if (result>0) and IsUnicodeParagraphSeparator(u) then\n    begin\n      dec(result);\n      if IsUnicodeCrLf(u) and (result>0) and IsUnicodeCrLf(UnicodeChar[result-1]) and\n        (UnicodeChar[result-1] <> u) then dec(result);\n    end;\n  end;\nend;\n\nfunction TUnicodeAnalysis.GetParagraphStartIndex(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then raise ERangeError.Create('Paragraph index out of bounds');\n  result := FUnbrokenLine[FParagraph[AIndex].firstUnbrokenLineIndex].startIndex;\nend;\n\nfunction TUnicodeAnalysis.GetUnbrokenLineParagraphIndex(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= UnbrokenLineCount) then raise exception.Create('Unbroken line index out of bounds');\n  result := FUnbrokenLine[AIndex].paragraphIndex;\nend;\n\nfunction TUnicodeAnalysis.GetBidiInfo(APosition0: integer): TUnicodeBidiInfo;\nbegin\n  if (APosition0 < 0) or (APosition0 >= CharCount) then raise ERangeError.Create('Char position out of bounds');\n  result := FBidi[APosition0].BidiInfo;\nend;\n\nfunction TUnicodeAnalysis.GetUnbrokenLineStartIndex(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= UnbrokenLineCount) then raise exception.Create('Unbroken line index out of bounds');\n  result := FUnbrokenLine[AIndex].startIndex;\nend;\n\nfunction TUnicodeAnalysis.GetParagraphLastUnbrokenLinePlusOne(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then raise ERangeError.Create('Paragraph index out of bounds');\n  result := FParagraph[AIndex+1].firstUnbrokenLineIndex;\nend;\n\nfunction TUnicodeAnalysis.GetUnbrokenLineEndIndex(AIndex: integer): integer;\nbegin\n  if (AIndex < 0) or (AIndex >= UnbrokenLineCount) then raise exception.Create('Unbroken line index out of bounds');\n  result := FUnbrokenLine[AIndex+1].startIndex;\nend;\n\nfunction TUnicodeAnalysis.GetParagraphRightToLeft(AIndex: integer): boolean;\nvar\n  firstUnbroken, startIndex: Integer;\nbegin\n  if (AIndex < 0) or (AIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n\n  firstUnbroken := ParagraphFirstUnbrokenLine[AIndex];\n  startIndex := UnbrokenLineStartIndex[firstUnbroken];\n  if startIndex < CharCount then\n    result := odd(BidiInfo[startIndex].ParagraphBidiLevel)\n  else\n    result := BidiMode = fbmRightToLeft;\nend;\n\nprocedure TUnicodeAnalysis.Analyze;\nvar\n  lineIndex, i: Integer;\n  curParaIndex: integer;\nbegin\n  FBidi:= AnalyzeBidiUTF8(FText, FBidiMode);\n  FCharCount := length(FBidi);\n\n  FUnbrokenLineCount := 1;\n  FParagraphCount := 1;\n  for i := 0 to high(FBidi) do\n  begin\n    if FBidi[i].BidiInfo.IsEndOfLine or FBidi[i].BidiInfo.IsExplicitEndOfParagraph then\n    begin\n      if FBidi[i].BidiInfo.IsExplicitEndOfParagraph then inc(FParagraphCount);\n      inc(FUnbrokenLineCount);\n    end;\n  end;\n\n  curParaIndex := 0;\n  lineIndex := 0;\n  setlength(FParagraph, FParagraphCount+1);\n  FParagraph[curParaIndex].firstUnbrokenLineIndex:= lineIndex;\n  setlength(FUnbrokenLine, FUnbrokenLineCount+1);\n  FUnbrokenLine[lineIndex].startIndex := 0;\n  FUnbrokenLine[lineIndex].paragraphIndex := curParaIndex;\n  inc(lineIndex);\n  for i := 0 to high(FBidi) do\n  begin\n    if FBidi[i].BidiInfo.IsEndOfLine or FBidi[i].BidiInfo.IsExplicitEndOfParagraph then\n    begin\n      if FBidi[i].BidiInfo.IsExplicitEndOfParagraph then\n      begin\n        inc(curParaIndex);\n        FParagraph[curParaIndex].firstUnbrokenLineIndex:= lineIndex;\n      end;\n      FUnbrokenLine[lineIndex].startIndex := i+1;\n      FUnbrokenLine[lineIndex].paragraphIndex := curParaIndex;\n      inc(lineIndex);\n    end;\n  end;\n  FParagraph[curParaIndex+1].firstUnbrokenLineIndex:= lineIndex;\n  FUnbrokenLine[lineIndex].startIndex := length(FBidi);\n  FUnbrokenLine[lineIndex].paragraphIndex:= curParaIndex+1;\n\n  setlength(FBidi, length(FBidi)+1);\n  FBidi[High(FBidi)].Offset := length(FText);\nend;\n\nconstructor TUnicodeAnalysis.Create(ATextUTF8: string; ABidiMode: TFontBidiMode);\nbegin\n  FText:= ATextUTF8;\n  FBidiMode:= ABidiMode;\n  Analyze;\nend;\n\nfunction TUnicodeAnalysis.GetParagraphAt(ACharIndex: integer): integer;\n  procedure FindRec(AFirstParagraphIndex, ALastParagraphIndex: integer);\n  var\n    midIndex: Integer;\n  begin\n    if ALastParagraphIndex<AFirstParagraphIndex then\n      raise exception.Create('Cannot find paragraph');\n    midIndex := (AFirstParagraphIndex+ALastParagraphIndex) shr 1;\n    if (ACharIndex < ParagraphStartIndex[midIndex]) then\n      FindRec(AFirstParagraphIndex, midIndex-1)\n    else if (midIndex < ParagraphCount-1) and (ACharIndex >= ParagraphStartIndex[midIndex+1]) then\n      FindRec(midIndex+1, ALastParagraphIndex)\n    else\n    begin\n      result := midIndex;\n      exit;\n    end;\n  end;\n\nbegin\n  if (ACharIndex < 0) or (ACharIndex > CharCount) then raise exception.Create('Position out of bounds');\n  FindRec(0, ParagraphCount-1);\nend;\n\nfunction TUnicodeAnalysis.CopyTextUTF8(AStartIndex, ACount: integer): string;\nbegin\n  if (AStartIndex < 0) or (AStartIndex+ACount > CharCount) then\n    raise exception.Create('Char range out of bounds [' + inttostr(AStartIndex) + '..' +\n            inttostr(AStartIndex+ACount) + '] out of [0..' + inttostr(CharCount) + ']');\n  result := copy(FText, FBidi[AStartIndex].Offset+1, FBidi[AStartIndex+ACount].Offset-FBidi[AStartIndex].Offset)\nend;\n\nfunction TUnicodeAnalysis.CopyTextUTF8DiscardChars(AStartIndex,\n  AEndIndex: integer; out ANonDiscardedCount: integer): string;\nvar i, len, charLen: integer;\nbegin\n  CheckCharRange(AStartIndex, AEndIndex, 0, CharCount);\n\n  ANonDiscardedCount:= 0;\n  len := 0;\n  for i := AStartIndex to AEndIndex-1 do\n    if not FBidi[i].BidiInfo.IsDiscardable then\n    begin\n      inc(len, FBidi[i+1].Offset - FBidi[i].Offset);\n      inc(ANonDiscardedCount);\n    end;\n\n  setlength(result, len);\n  len := 0;\n  for i := AStartIndex to AEndIndex-1 do\n    if not FBidi[i].BidiInfo.IsDiscardable then\n    begin\n      charLen := FBidi[i+1].Offset - FBidi[i].Offset;\n      move(FText[FBidi[i].Offset+1], result[len+1], charLen);\n      inc(len, charLen);\n    end;\nend;\n\nfunction TUnicodeAnalysis.InsertText(ATextUTF8: string; APosition: integer): integer;\nvar\n  newBidi: TBidiUTF8Array;\nbegin\n  if (APosition < 0) or (APosition > CharCount) then raise exception.Create('Position out of bounds');\n  if length(ATextUTF8)=0 then exit(0);\n\n  newBidi:= AnalyzeBidiUTF8(ATextUTF8, FBidiMode);\n  result:= InternalInsertText(APosition, newBidi, ATextUTF8);\nend;\n\nfunction TUnicodeAnalysis.DeleteText(APosition, ACount: integer): integer;\nbegin\n  ACount := IncludeNonSpacingChars(APosition, ACount);\n  if ACount = 0 then exit(0);\n  InternalDeleteText(APosition, ACount);\n  result := ACount;\nend;\n\nfunction TUnicodeAnalysis.DeleteTextBefore(APosition, ACount: integer): integer;\nbegin\n  ACount := IncludeNonSpacingCharsBefore(APosition, ACount, False);\n  if ACount = 0 then exit(0);\n  InternalDeleteText(APosition-ACount, ACount);\n  result := ACount;\nend;\n\nfunction TUnicodeAnalysis.IncludeNonSpacingChars(APosition, ACount: integer; AIncludeCombiningMarks: boolean): integer;\nbegin\n  if (APosition < 0) or (APosition > CharCount) then raise exception.Create('Position out of bounds');\n  if APosition+ACount > CharCount then raise exception.Create('Exceed end of text');\n\n  //keep Cr/Lf pair together and non spacing marks after last char together\n  while (APosition+ACount < CharCount) and\n    not (BidiInfo[APosition+ACount].IsMulticharStart\n         or (not AIncludeCombiningMarks and\n               (BidiInfo[APosition+ACount].IsCombiningLeft\n                or BidiInfo[APosition+ACount].IsCombiningRight)\n            )\n        ) do inc(ACount);\n\n  result := ACount;\nend;\n\nfunction TUnicodeAnalysis.IncludeNonSpacingCharsBefore(APosition, ACount: integer; AIncludeCombiningMarks: boolean): integer;\nbegin\n  if (APosition < 0) or (APosition > CharCount) then raise exception.Create('Position out of bounds');\n  if APosition-ACount < 0 then raise exception.Create('Exceed start of text');\n  if ACount = 0 then exit(0);\n\n  //keep before non spacing marks until real char together\n  while (APosition-ACount > 0) and\n    not (BidiInfo[APosition-ACount].IsMulticharStart\n         or (not AIncludeCombiningMarks and\n               (BidiInfo[APosition-ACount].IsCombiningLeft\n                or BidiInfo[APosition-ACount].IsCombiningRight)\n            )\n        ) do inc(ACount);\n\n  result := ACount;\nend;\n\nfunction TUnicodeAnalysis.CreateBidiTree(ABidiTreeFactory: TBidiTreeAny;\n  AData: pointer; AStartIndex, AEndIndex: integer; AEmbeddingBidiLevel: integer): TBidiTree;\nbegin\n  result := ABidiTreeFactory.Create(AData, AStartIndex, AEndIndex, AEmbeddingBidiLevel, false);\n  CreateBidiTreeRec(ABidiTreeFactory, AData, result);\nend;\n\nprocedure TUnicodeAnalysis.CreateBidiTreeRec(ABidiTreeFactory: TBidiTreeAny; AData: pointer; ABidiTree: TBidiTree);\nvar\n  startIndex, endIndex, i: integer;\n  subLevel: byte;\n  subStart: integer;\n  subTree: TBidiTree;\nbegin\n  startIndex := ABidiTree.StartIndex;\n  endIndex:= ABidiTree.EndIndex;\n\n  while (startIndex < endIndex) and FBidi[startIndex].BidiInfo.IsDiscardable do inc(startIndex);\n  while (startIndex < endIndex) and FBidi[endIndex-1].BidiInfo.IsDiscardable do dec(endIndex);\n  if endIndex = startIndex then exit;\n\n  i := startIndex;\n  while i < endIndex do\n  begin\n    if not FBidi[i].BidiInfo.IsDiscardable then\n    begin\n      if FBidi[i].BidiInfo.BidiLevel > ABidiTree.BidiLevel then\n      begin\n        subStart := i;\n        subLevel := FBidi[i].BidiInfo.BidiLevel;\n        inc(i);\n        while (i < endIndex) and (FBidi[i].BidiInfo.BidiLevel > ABidiTree.BidiLevel) do\n        begin\n          if FBidi[i].BidiInfo.BidiLevel < subLevel then\n            subLevel := FBidi[i].BidiInfo.BidiLevel;\n          inc(i);\n        end;\n\n        subTree := ABidiTreeFactory.Create(AData, subStart, i, subLevel, false);\n        ABidiTree.AddBranch(subTree);\n        CreateBidiTreeRec(ABidiTreeFactory, AData, subTree);\n        subTree.AfterFinish;\n        if subTree.EndIndex < i then\n        begin\n          ABidiTree.Shorten(subTree.EndIndex);\n          exit;\n        end;\n      end else\n      begin\n        subStart:= i;\n        inc(i);\n        while (i < endIndex) and (FBidi[i].BidiInfo.BidiLevel = ABidiTree.BidiLevel) do inc(i);\n\n        subTree := ABidiTreeFactory.Create(AData, subStart, i, ABidiTree.BidiLevel, true);\n        ABidiTree.AddBranch(subTree);\n        if subTree.TrySplit then\n        begin\n          ABidiTree.Shorten(subTree.EndIndex);\n          exit;\n        end;\n      end;\n\n    end else\n      inc(i);\n  end;\nend;\n\nprocedure TUnicodeAnalysis.CheckCharRange(AStartIndex, AEndIndex: integer;\n  AMinIndex, AMaxIndex: integer);\nbegin\n  if AEndIndex<AStartIndex then raise exception.Create('Invalid char range');\n  if (AStartIndex < AMinIndex) or (AEndIndex > AMaxIndex) then\n    raise exception.Create('Char range out of bounds ['+inttostr(AStartIndex)+','+IntToStr(AEndIndex)+'] > ['+inttostr(AMinIndex)+','+IntToStr(AMaxIndex)+']');\nend;\n\nprocedure TUnicodeAnalysis.CheckTextAnalysis;\nvar\n  i: Integer;\nbegin\n  for i := 1 to high(FBidi)-1 do\n    if (FBidi[i].Offset <= 0) or (FBidi[i].Offset > length(FText)-1) then\n      raise exception.Create('UTF8 offset out of range for char '+inttostr(i));\n  if (length(FBidi)>0) and ((FBidi[0].Offset <> 0) or (FBidi[high(FBidi)].Offset <> length(FText))) then\n    raise exception.Create('Unexpected UTF8 offset');\n  for i := 0 to high(FUnbrokenLine) do\n  begin\n    if (i > 0) and (FUnbrokenLine[i].startIndex < FUnbrokenLine[i-1].startIndex) then\n      raise exception.Create('Unbroken line position must be increasing');\n    if (i > 0) and (FUnbrokenLine[i].paragraphIndex < FUnbrokenLine[i-1].paragraphIndex) then\n      raise exception.Create('Unbroken line paragraph must be increasing');\n    if (i > 0) and (FUnbrokenLine[i].paragraphIndex > FUnbrokenLine[i-1].paragraphIndex+1) then\n      raise exception.Create('Unbroken line must not skip paragraph');\n  end;\n  if (length(FUnbrokenLine)>0) and ((FUnbrokenLine[0].paragraphIndex <> 0)\n     or (FUnbrokenLine[High(FUnbrokenLine)].paragraphIndex <> high(FParagraph))) then\n    raise exception.Create('Unexpected paragraph index');\n  for i := 0 to high(FParagraph) do\n  begin\n    if (i > 0) and (FParagraph[i].firstUnbrokenLineIndex <= FParagraph[i-1].firstUnbrokenLineIndex) then\n      raise exception.Create('Paragraph unbroken line index must be strictly increasing');\n  end;\n  if (length(FParagraph)>0) and ((FParagraph[0].firstUnbrokenLineIndex <> 0) or\n    (FParagraph[high(FParagraph)].firstUnbrokenLineIndex <> high(FUnbrokenLine))) then\n    raise exception.Create('Unexpected paragraph unbroken line index');\nend;\n\nfunction TUnicodeAnalysis.GetUnicodeChar(APosition0: integer): LongWord;\nvar p : PChar;\n  charLen, startOfs: Integer;\nbegin\n  if (APosition0 < 0) or (APosition0 >= CharCount) then raise ERangeError.Create('Char position out of bounds');\n  startOfs := FBidi[APosition0].Offset;\n  p := @FText[startOfs+1];\n  charLen := FBidi[APosition0+1].Offset - startOfs;\n  result := UTF8CodepointToUnicode(p, charLen);\nend;\n\nfunction TUnicodeAnalysis.GetUTF8Char(APosition0: integer): string4;\nbegin\n  if (APosition0 < 0) or (APosition0 >= CharCount) then raise ERangeError.Create('Char position out of bounds');\n  result := copy(FText, FBidi[APosition0].Offset+1, FBidi[APosition0+1].Offset-FBidi[APosition0].Offset);\nend;\n\nprocedure TUnicodeAnalysis.InternalDeleteText(APosition, ACount: integer);\nvar\n  i, delStart: Integer;\n  hasParaSep: Boolean;\n  indexBeforeSep: LongInt;\nbegin\n  for i := ParagraphCount-1 downto 0 do\n  if (APosition < ParagraphEndIndex[i]) and (APosition+ACount > ParagraphStartIndex[i]) then\n  begin\n    indexBeforeSep := ParagraphEndIndexBeforeParagraphSeparator[i];\n    hasParaSep := indexBeforeSep<>ParagraphEndIndex[i];\n\n    if (i < ParagraphCount-1) and hasParaSep and (APosition+ACount > indexBeforeSep) then //paragraph separator removed\n    begin\n      if APosition <= ParagraphStartIndex[i] then\n        InternalDeleteParagraph(i)\n      else\n      begin\n        delStart := max(APosition,ParagraphStartIndex[i]);\n        InternalDeleteWithinParagraph(i, delStart, min(APosition+ACount,indexBeforeSep)-delStart, False);\n        InternalMergeParagraphWithNext(i);\n      end;\n    end else\n    begin\n      delStart := max(APosition,ParagraphStartIndex[i]);\n      InternalDeleteWithinParagraph(i, delStart, min(APosition+ACount,ParagraphEndIndex[i])-delStart, True);\n    end;\n  end;\n  {$IFDEF DEBUG}CheckTextAnalysis;{$ENDIF}\nend;\n\nprocedure TUnicodeAnalysis.InternalDeleteParagraph(AParagraphIndex: integer);\nvar\n  unbrokenStart, unbrokenEnd, unbrokenCount: Integer;\n  bidiStart, bidiCount, i: LongInt;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n\n  unbrokenStart := FParagraph[AParagraphIndex].firstUnbrokenLineIndex;\n  unbrokenEnd := FParagraph[AParagraphIndex+1].firstUnbrokenLineIndex;\n  unbrokenCount := unbrokenEnd-unbrokenStart;\n\n  bidiStart := ParagraphStartIndex[AParagraphIndex];\n  bidiCount := ParagraphEndIndex[AParagraphIndex]-bidiStart;\n  InternalDeleteBidiAndUTF8(bidiStart, bidiCount);\n\n  for i := unbrokenStart to high(FUnbrokenLine)-unbrokenCount do\n  begin\n    FUnbrokenLine[i] := FUnbrokenLine[i+unbrokenCount];\n    dec(FUnbrokenLine[i].paragraphIndex);\n    dec(FUnbrokenLine[i].startIndex, bidiCount);\n  end;\n  setlength(FUnbrokenLine, length(FUnbrokenLine)-unbrokenCount);\n  dec(FUnbrokenLineCount, unbrokenCount);\n\n  for i := AParagraphIndex+1 to ParagraphCount do\n    dec(FParagraph[i].firstUnbrokenLineIndex, unbrokenCount);\n  if Assigned(FOnCharDeleted) then FOnCharDeleted(self, AParagraphIndex, bidiStart, bidiCount);\n\n  for i := AParagraphIndex to ParagraphCount-1 do\n    FParagraph[i] := FParagraph[i+1];\n  dec(FParagraphCount);\n  setlength(FParagraph, FParagraphCount+1);\n  if Assigned(FOnParagraphDeleted) then FOnParagraphDeleted(self, AParagraphIndex);\nend;\n\nprocedure TUnicodeAnalysis.InternalDeleteWithinParagraph(\n  AParagraphIndex: integer; APosition, ACount: integer; AUpdateBidi: boolean);\nvar\n  unbrokenEnd: Integer;\n  bidiStart, bidiCount: LongInt;\n  i: integer;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n\n  InternalDeleteBidiAndUTF8(APosition, ACount);\n\n  unbrokenEnd := FParagraph[AParagraphIndex+1].firstUnbrokenLineIndex;\n  for i := unbrokenEnd to high(FUnbrokenLine) do\n    dec(FUnbrokenLine[i].startIndex, ACount);\n\n  bidiStart := ParagraphStartIndex[AParagraphIndex];\n  bidiCount := ParagraphEndIndex[AParagraphIndex]-bidiStart;\n\n  if AUpdateBidi then InternalUpdateBidiIsolate(AParagraphIndex, bidiStart, bidiCount);\n  InternalUpdateUnbrokenLines(AParagraphIndex);\n\n  if Assigned(FOnCharDeleted) then FOnCharDeleted(self, AParagraphIndex, APosition, ACount);\nend;\n\nprocedure TUnicodeAnalysis.InternalMergeParagraphWithNext(AParagraphIndex: integer);\nvar\n  indexBeforeSep, bidiStart, bidiCount, i: LongInt;\n  hasParaSep: Boolean;\n  unbrokenEnd: Integer;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= ParagraphCount-1) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n\n  indexBeforeSep := ParagraphEndIndexBeforeParagraphSeparator[AParagraphIndex];\n  hasParaSep := indexBeforeSep<>ParagraphEndIndex[AParagraphIndex];\n  if not hasParaSep then exit;\n\n  bidiStart := indexBeforeSep;\n  bidiCount := ParagraphEndIndex[AParagraphIndex]-bidiStart;\n  InternalDeleteBidiAndUTF8(bidiStart, bidiCount);\n  if Assigned(FOnCharDeleted) then\n    FOnCharDeleted(self, AParagraphIndex, bidiStart, bidiCount);\n\n  unbrokenEnd := FParagraph[AParagraphIndex+1].firstUnbrokenLineIndex;\n  for i := unbrokenEnd to high(FUnbrokenLine)-1 do\n  begin\n    FUnbrokenLine[i] := FUnbrokenLine[i+1];\n    dec(FUnbrokenLine[i].paragraphIndex);\n    dec(FUnbrokenLine[i].startIndex, bidiCount);\n  end;\n  setlength(FUnbrokenLine, length(FUnbrokenLine)-1);\n  dec(FUnbrokenLineCount);\n\n  for i := AParagraphIndex+1 to high(FParagraph)-1 do\n  begin\n    FParagraph[i] := FParagraph[i+1];\n    dec(FParagraph[i].firstUnbrokenLineIndex);\n  end;\n  setlength(FParagraph, length(FParagraph)-1);\n  dec(FParagraphCount);\n\n  bidiStart := ParagraphStartIndex[AParagraphIndex];\n  bidiCount := ParagraphEndIndex[AParagraphIndex]-bidiStart;\n  InternalUpdateBidiIsolate(AParagraphIndex, bidiStart, bidiCount);\n\n  if Assigned(FOnParagraphMergedWithNext) then\n    FOnParagraphMergedWithNext(self, AParagraphIndex);\nend;\n\nprocedure TUnicodeAnalysis.InternalDeleteBidiAndUTF8(ABidiStart,\n  ABidiCount: integer);\nvar\n  utf8Start, utf8Count, bidiEnd, i: Integer;\nbegin\n  if ABidiCount = 0 then exit;\n  if ABidiCount < 0 then raise exception.Create('Bidi count must be positive');\n  bidiEnd := ABidiStart+ABidiCount;\n  CheckCharRange(ABidiStart, bidiEnd, 0, CharCount);\n\n  utf8Start := FBidi[ABidiStart].Offset+1;\n  if bidiEnd >= CharCount then\n    utf8Count := length(FText) - (utf8Start-1)\n  else\n    utf8Count := FBidi[bidiEnd].Offset - (utf8Start-1);\n  delete(FText, utf8Start, utf8Count);\n\n  for i := ABidiStart to high(FBidi)-ABidiCount do\n  begin\n    FBidi[i] := FBidi[i+ABidiCount];\n    dec(FBidi[i].Offset, utf8Count);\n  end;\n  setlength(FBidi, length(FBidi)-ABidiCount);\n  dec(FCharCount, ABidiCount);\nend;\n\nprocedure TUnicodeAnalysis.InternalUpdateBidiIsolate(AParagraphIndex: integer; ABidiStart, ABidiCount: integer);\nvar\n  utf8Start, utf8Count, bidiEnd, i: Integer;\n  newBidi: TBidiUTF8Array;\n  startDiff,endDiff: integer;\nbegin\n  if ABidiCount = 0 then exit;\n  if ABidiCount < 0 then raise exception.Create('Bidi count must be positive');\n  bidiEnd := ABidiStart+ABidiCount;\n  CheckCharRange(ABidiStart, bidiEnd, 0, CharCount);\n\n  utf8Start := FBidi[ABidiStart].Offset+1;\n  if bidiEnd >= CharCount then\n    utf8Count := length(FText) - (utf8Start-1)\n  else\n    utf8Count := FBidi[bidiEnd].Offset - (utf8Start-1);\n\n  newBidi:= AnalyzeBidiUTF8(copy(FText, utf8Start, utf8Count), FBidiMode);\n\n  startDiff := maxLongint;\n  endDiff := -maxLongint;\n  for i := 0 to min(ABidiCount, length(newBidi))-1 do\n  if FBidi[ABidiStart+i].BidiInfo <> newBidi[i].BidiInfo then\n  begin\n    if i < startDiff then startDiff := i;\n    if i > endDiff then endDiff := i;\n    FBidi[ABidiStart+i] := newBidi[i];\n    inc(FBidi[ABidiStart+i].Offset, utf8Start-1);\n  end;\n  if Assigned(OnAnalysisChanged) and (endDiff >= startDiff) then\n    OnAnalysisChanged(self, AParagraphIndex, startDiff, endDiff);\nend;\n\nprocedure TUnicodeAnalysis.InternalUpdateUnbrokenLines(AParagraphIndex: integer);\nvar\n  newUnbrokenCount, unbrokenStart, unbrokenEnd, unbrokenCount,\n  unbrokenDelta, curUnbrokenIndex: Integer;\n  bidiStart, bidiEnd, i: LongInt;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex >= ParagraphCount) then\n    raise ERangeError.Create('Paragraph index out of bounds');\n\n  bidiStart := ParagraphStartIndex[AParagraphIndex];\n  if AParagraphIndex = ParagraphCount-1 then\n    bidiEnd := ParagraphEndIndex[AParagraphIndex]\n  else\n    bidiEnd := ParagraphEndIndexBeforeParagraphSeparator[AParagraphIndex];\n  unbrokenStart := FParagraph[AParagraphIndex].firstUnbrokenLineIndex;\n  unbrokenEnd := FParagraph[AParagraphIndex+1].firstUnbrokenLineIndex;\n  unbrokenCount := unbrokenEnd-unbrokenStart;\n\n  newUnbrokenCount := 1;\n  for i := bidiStart to bidiEnd-1 do\n    if FBidi[i].BidiInfo.IsEndOfLine or\n       FBidi[i].BidiInfo.IsExplicitEndOfParagraph then inc(newUnbrokenCount);\n\n  if newUnbrokenCount < unbrokenCount then\n  begin\n    unbrokenDelta := unbrokenCount-newUnbrokenCount;\n    for i := unbrokenEnd-unbrokenDelta to high(FUnbrokenLine)-unbrokenDelta do\n      FUnbrokenLine[i] := FUnbrokenLine[i+unbrokenDelta];\n    setlength(FUnbrokenLine, length(FUnbrokenLine)-unbrokenDelta);\n    dec(FUnbrokenLineCount, unbrokenDelta);\n  end else\n  if newUnbrokenCount > unbrokenCount then\n  begin\n    unbrokenDelta := newUnbrokenCount-unbrokenCount;\n    setlength(FUnbrokenLine, length(FUnbrokenLine)+unbrokenDelta);\n    inc(FUnbrokenLineCount, unbrokenDelta);\n    for i := high(FUnbrokenLine) downto unbrokenEnd+unbrokenDelta do\n      FUnbrokenLine[i] := FUnbrokenLine[i-unbrokenDelta];\n  end;\n  for i := AParagraphIndex+1 to high(FParagraph) do\n    inc(FParagraph[i].firstUnbrokenLineIndex, newUnbrokenCount-unbrokenCount);\n\n  curUnbrokenIndex := unbrokenStart;\n  FUnbrokenLine[curUnbrokenIndex].startIndex:= bidiStart;\n  FUnbrokenLine[curUnbrokenIndex].paragraphIndex:= AParagraphIndex;\n  for i := bidiStart to bidiEnd-1 do\n  begin\n    if FBidi[i].BidiInfo.IsEndOfLine or\n       FBidi[i].BidiInfo.IsExplicitEndOfParagraph then // paragraph separator before split\n    begin\n      inc(curUnbrokenIndex);\n      FUnbrokenLine[curUnbrokenIndex].startIndex := i+1;\n      FUnbrokenLine[curUnbrokenIndex].paragraphIndex:= AParagraphIndex;\n    end;\n  end;\nend;\n\nfunction TUnicodeAnalysis.InternalInsertText(APosition: integer;\n  const ANewBidi: TBidiUTF8Array; ANewTextUTF8: string): integer;\nvar\n  utf8Start, utf8Count,\n  prevCharCount, bidiCount, paraBidiStart, paraBidiCount,\n  i, unbrokenEnd, paraIndex: integer;\nbegin\n  if (APosition < 0) or (APosition>CharCount) then\n    raise exception.Create('Position out of bounds');\n  if length(ANewBidi)=0 then exit(0);\n\n  prevCharCount:= CharCount;\n  paraIndex := GetParagraphAt(APosition);\n  bidiCount := length(ANewBidi);\n\n  utf8Start := FBidi[APosition].Offset+1;\n  utf8Count := length(ANewTextUTF8);\n  Insert(ANewTextUTF8, FText, utf8Start);\n\n  setlength(FBidi, length(FBidi)+bidiCount);\n  for i := high(FBidi) downto APosition+bidiCount do\n  begin\n    FBidi[i] := FBidi[i-bidiCount];\n    inc(FBidi[i].Offset, utf8Count);\n  end;\n  for i := 0 to high(ANewBidi) do\n  begin\n    FBidi[APosition+i] := ANewBidi[i];\n    inc(FBidi[APosition+i].Offset, utf8Start-1);\n  end;\n  inc(FCharCount, bidiCount);\n\n  unbrokenEnd := FParagraph[paraIndex+1].firstUnbrokenLineIndex;\n  for i := unbrokenEnd to high(FUnbrokenLine) do\n    inc(FUnbrokenLine[i].startIndex, bidiCount);\n\n  paraBidiStart := ParagraphStartIndex[paraIndex];\n  paraBidiCount := ParagraphEndIndex[paraIndex]-paraBidiStart;\n  InternalUpdateBidiIsolate(paraIndex, paraBidiStart, paraBidiCount);\n\n  InternalUpdateUnbrokenLines(paraIndex);\n  if Assigned(FOnCharInserted) then\n    FOnCharInserted(self, paraIndex, APosition, bidiCount);\n\n  InternalSplitParagraph(paraIndex);\n  {$IFDEF DEBUG}CheckTextAnalysis;{$ENDIF}\n  result := CharCount-prevCharCount;\nend;\n\nprocedure TUnicodeAnalysis.InternalSplitParagraph(AParagraphIndex: integer);\nvar\n  i, unbrokenStart, unbrokenEndIncl, j, paraIndex: integer;\nbegin\n  unbrokenStart := FParagraph[AParagraphIndex].firstUnbrokenLineIndex;\n  unbrokenEndIncl := FParagraph[AParagraphIndex+1].firstUnbrokenLineIndex-1;\n  for i := unbrokenStart+1 to unbrokenEndIncl do\n  begin\n    if (FUnbrokenLine[i].startIndex > 0) and\n      FBidi[FUnbrokenLine[i].startIndex-1].BidiInfo.IsExplicitEndOfParagraph then\n    begin\n      paraIndex := FUnbrokenLine[i].paragraphIndex;\n      setlength(FParagraph, length(FParagraph)+1);\n      inc(FParagraphCount);\n      for j := high(FParagraph) downto paraIndex+2 do\n        FParagraph[j] := FParagraph[j-1];\n      FParagraph[paraIndex+1].firstUnbrokenLineIndex:= i;\n      for j := i to high(FUnbrokenLine) do\n        inc(FUnbrokenLine[j].paragraphIndex);\n\n      if Assigned(OnParagraphSplit) then\n        OnParagraphSplit(self, paraIndex, FUnbrokenLine[i].startIndex);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgraunits.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Definition of units of measure (distances) used in CSS }\nunit BGRAUnits;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  SysUtils, BGRABitmapTypes;\n\ntype\n  TSVGNumber = single;//double\n  ArrayOfTSVGNumber = array of TSVGNumber;\n\n  TCSSUnit = BGRABitmapTypes.TCSSUnit;\n\nconst\n  cuCustom = BGRABitmapTypes.cuCustom;\n  cuPixel = BGRABitmapTypes.cuPixel;\n  cuCentimeter = BGRABitmapTypes.cuCentimeter;\n  cuMillimeter = BGRABitmapTypes.cuMillimeter;\n  cuInch = BGRABitmapTypes.cuInch;\n  cuPica = BGRABitmapTypes.cuPica;\n  cuPoint = BGRABitmapTypes.cuPoint;\n  cuFontEmHeight = BGRABitmapTypes.cuFontEmHeight;\n  cuFontXHeight = BGRABitmapTypes.cuFontXHeight;\n  cuPercent = BGRABitmapTypes.cuPercent;\n\ntype\n  { Floating-point value expressed in a CSS unit }\n  TFloatWithCSSUnit = record\n    value: single;\n    CSSUnit: TCSSUnit;\n  end;\n\n  ArrayOfTFloatWithCSSUnit = array of TFloatWithCSSUnit;\n\n\nfunction FloatWithCSSUnit(AValue: single; AUnit: TCSSUnit): TFloatWithCSSUnit;\n\nconst\n  CSSUnitShortName: array[TCSSUnit] of string =\n        ('','px',\n         'cm','mm',\n         'in','pc','pt',\n         'em','ex','%');\n\ntype\n  { Converter for CSS units }\n  TCSSUnitConverter = class\n  protected\n    FViewBoxHeight: TFloatWithCSSUnit;\n    FViewBoxWidth: TFloatWithCSSUnit;\n    FViewBoxHeightInUnit: array[TCSSUnit] of single;\n    FViewBoxWidthInUnit: array[TCSSUnit] of single;\n    FCurrentFontEmHeight: TFloatWithCSSUnit;\n    function GetRootFontEmHeight: TFloatWithCSSUnit;\n    function GetDefaultUnitHeight: TFloatWithCSSUnit; virtual;\n    function GetDefaultUnitWidth: TFloatWithCSSUnit; virtual;\n    function GetDpiX: single; virtual;\n    function GetDpiY: single; virtual;\n    function GetFontEmHeight: TFloatWithCSSUnit; virtual;\n    function GetFontXHeight: TFloatWithCSSUnit; virtual;\n    procedure SetViewBoxHeight(AValue: TFloatWithCSSUnit);\n    procedure SetViewBoxWidth(AValue: TFloatWithCSSUnit);\n    procedure SetFontEmHeight(AValue: TFloatWithCSSUnit); virtual;\n    property FontEmHeight: TFloatWithCSSUnit read GetFontEmHeight;\n    property FontXHeight: TFloatWithCSSUnit read GetFontXHeight;\n    property DefaultUnitWidth: TFloatWithCSSUnit read GetDefaultUnitWidth;\n    property DefaultUnitHeight: TFloatWithCSSUnit read GetDefaultUnitHeight;\n  public\n    constructor Create;\n    function ConvertOrtho(xy: single; sourceUnit, destUnit: TCSSUnit): single; overload;\n    function ConvertOrtho(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit): TFloatWithCSSUnit; overload;\n    function ConvertWidth(x: single; sourceUnit, destUnit: TCSSUnit): single; overload;\n    function ConvertHeight(y: single; sourceUnit, destUnit: TCSSUnit): single; overload;\n    function ConvertWidth(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit): TFloatWithCSSUnit; overload;\n    function ConvertHeight(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit): TFloatWithCSSUnit; overload;\n    function ConvertWidth(AValue: ArrayOfTFloatWithCSSUnit; destUnit: TCSSUnit): ArrayOfTFloatWithCSSUnit; overload;\n    function ConvertHeight(AValue: ArrayOfTFloatWithCSSUnit; destUnit: TCSSUnit): ArrayOfTFloatWithCSSUnit; overload;\n    function ConvertCoord(pt: TPointF; sourceUnit, destUnit: TCSSUnit): TPointF; overload;\n    function GetConversionMatrix(AFromUnit, AToUnit: TCSSUnit): TAffineMatrix; overload;\n    function Convert(xy: single; sourceUnit, destUnit: TCSSUnit; dpi: single; containerSize: single = 0): single;\n    function ConvertOrtho(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit; containerWidth: single; containerHeight: single): TFloatWithCSSUnit; overload;\n    function ConvertWidth(x: single; sourceUnit, destUnit: TCSSUnit; containerWidth: single): single; overload;\n    function ConvertHeight(y: single; sourceUnit, destUnit: TCSSUnit; containerHeight: single): single; overload;\n    function ConvertWidth(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit; containerWidth: single): TFloatWithCSSUnit; overload;\n    function ConvertHeight(AValue: TFloatWithCSSUnit; destUnit: TCSSUnit; containerHeight: single): TFloatWithCSSUnit; overload;\n    function ConvertWidth(AValue: ArrayOfTFloatWithCSSUnit; destUnit: TCSSUnit; containerWidth: single): ArrayOfTFloatWithCSSUnit; overload;\n    function ConvertHeight(AValue: ArrayOfTFloatWithCSSUnit; destUnit: TCSSUnit; containerHeight: single): ArrayOfTFloatWithCSSUnit; overload;\n    function ConvertCoord(pt: TPointF; sourceUnit, destUnit: TCSSUnit; containerWidth: single; containerHeight: single): TPointF; overload;\n    function GetConversionMatrix(AFromUnit, AToUnit: TCSSUnit; containerWidth: single; containerHeight: single): TAffineMatrix; overload;\n    class function parseValue(AValue: string; ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit; overload; static;\n    class function parseValue(AValue: string; ADefault: single): single; overload; static;\n    class function parseArrayOfNumbers(AValue: string): ArrayOfTSVGNumber; overload; static;\n    class function parseArrayOfValuesWithUnit(AValue: string): ArrayOfTFloatWithCSSUnit; overload; static;\n    class function formatValue(AValue: TFloatWithCSSUnit; APrecision: integer = 7): string; overload; static;\n    class function formatValue(AValue: single; APrecision: integer = 7): string; overload; static;\n    class function formatValue(AValue: ArrayOfTSVGNumber; APrecision: integer = 7): string; overload; static;\n    class function formatValue(AValue: ArrayOfTFloatWithCSSUnit; APrecision: integer = 7): string; overload; static;\n    property ViewBoxWidth: TFloatWithCSSUnit read FViewBoxWidth write SetViewBoxWidth;\n    property ViewBoxHeight: TFloatWithCSSUnit read FViewBoxHeight write SetViewBoxHeight;\n    property DpiX: single read GetDpiX;\n    property DpiY: single read GetDpiY;\n    property CurrentFontEmHeight: TFloatWithCSSUnit read GetFontEmHeight write SetFontEmHeight;\n    property RootFontEmHeight: TFloatWithCSSUnit read GetRootFontEmHeight;\n  end;\n\n  { Converter for physical units of an image. The resolution and viewbox is taken from the image. }\n  TBGRAImageUnitConverter = class(TCSSUnitConverter)\n  protected\n    FBitmap: TCustomUniversalBitmap;\n    FDpiX, FDpiY: single;\n    function GetDpiX: single; override;\n    function GetDpiY: single; override;\n    function GetFontEmHeight: TFloatWithCSSUnit; override;\n    function GetFontXHeight: TFloatWithCSSUnit; override;\n    procedure SetFontEmHeight(AValue: TFloatWithCSSUnit); override;\n  public\n    constructor Create(ABitmap: TCustomUniversalBitmap);\n  end;\n\n{** Convert physical size to pixels according to image resolution.\n    If _ASourceUnit_ is set to cuCustom, _ASize_ is supposed to be in the denominator\n    of the resolution unit (for example cm for pixels/cm).\n    If resolution is ill-defined, it is assumed to be 96 DPI. }\nfunction PhysicalSizeToPixels(APhysicalSize: Single;\n                              AResolutionUnit: TResolutionUnit=ruPixelsPerInch;\n                              AResolution: Single = 96;\n                              ASourceUnit: TCSSUnit = cuCustom): Single; overload;\nprocedure PhysicalSizeToPixels(var SizeX,SizeY: Single;\n                               const AResolution: TImageResolutionInfo;\n                               ASourceUnit: TCSSUnit = cuCustom); overload;\n\n{** Convert pixels to physical size according to image resolution.\n    If _ASourceUnit_ is set to cuCustom, _ASize_ is supposed to be in the denominator\n    of the resolution unit (for example cm for pixels/cm).\n    If resolution is ill-defined, it is assumed to be 96 DPI. }\nfunction PixelsToPhysicalSize(ASizeInPixels: Single;\n                              AResolutionUnit: TResolutionUnit=ruPixelsPerInch;\n                              AResolution: Single = 96;\n                              ATargetUnit: TCSSUnit = cuCustom): Single; overload;\nprocedure PixelsToPhysicalSize(var SizeX,SizeY: Single;\n                               const AResolution: TImageResolutionInfo;\n                               ATargetUnit: TCSSUnit = cuCustom); overload;\n\nimplementation\n\nuses BGRATransform;\n\nvar\n  formats: TFormatSettings;\n\nconst InchFactor: array[TCSSUnit] of integer =\n      (9600, 9600,\n       254, 2540,\n       100, 600, 7200,\n       0, 0, 0);\n\nfunction FloatWithCSSUnit(AValue: single; AUnit: TCSSUnit): TFloatWithCSSUnit;\nbegin\n  result.value:= AValue;\n  result.CSSUnit:= AUnit;\nend;\n\nfunction PhysicalSizeToPixels(APhysicalSize: Single;\n                              AResolutionUnit: TResolutionUnit=ruPixelsPerInch;\n                              AResolution: Single = 96;\n                              ASourceUnit: TCSSUnit = cuCustom): Single;\nvar resolutionDenom: TCSSUnit;\nbegin\n  // already in pixels\n  if ASourceUnit = cuPixel then exit(APhysicalSize);\n\n  // checks if resolution is ill-defined\n  if (AResolution = 0) or (AResolutionUnit = ruNone) then\n  begin\n    // assume legacy 96 DPI\n    AResolution := 96;\n    AResolutionUnit := ruPixelsPerInch;\n  end;\n\n  resolutionDenom := ResolutionDenominatorUnit[AResolutionUnit];\n  // already in expected unit\n  if ASourceUnit = resolutionDenom then exit(APhysicalSize * AResolution);\n\n  if InchFactor[ASourceUnit] = 0 then raise exception.Create('Unhandled conversion');\n  Result:= APhysicalSize * (InchFactor[resolutionDenom] / InchFactor[ASourceUnit]) * AResolution;\nend;\n\nprocedure PhysicalSizeToPixels(var SizeX, SizeY: Single;\n                               const AResolution: TImageResolutionInfo;\n                               ASourceUnit: TCSSUnit = cuCustom);\nvar\n  res: TImageResolutionInfo;\nbegin\n  res := FixImageResolutionInfo(AResolution);\n  SizeX := PhysicalSizeToPixels(SizeX, res.ResolutionUnit, res.ResolutionX, ASourceUnit);\n  SizeY := PhysicalSizeToPixels(SizeY, res.ResolutionUnit, res.ResolutionY, ASourceUnit);\nend;\n\nfunction PixelsToPhysicalSize(ASizeInPixels: Single;\n                              AResolutionUnit: TResolutionUnit=ruPixelsPerInch;\n                              AResolution: Single = 96;\n                              ATargetUnit: TCSSUnit = cuCustom): Single;\nvar\n  resolutionDenom: TCSSUnit;\nbegin\n  // already in expected unit\n  if ATargetUnit = cuPixel then exit(ASizeInPixels);\n\n  // checks if resolution is ill-defined\n  if (AResolution = 0) or (AResolutionUnit = ruNone) then\n  begin\n    // assume legacy 96 DPI\n    AResolution := 96;\n    AResolutionUnit := ruPixelsPerInch;\n  end;\n\n  resolutionDenom := ResolutionDenominatorUnit[AResolutionUnit];\n  // already in expected unit\n  if ATargetUnit = resolutionDenom then exit(ASizeInPixels / AResolution);\n\n  if InchFactor[ATargetUnit] = 0 then raise exception.Create('Unhandled conversion');\n  Result:= ASizeInPixels / AResolution * (InchFactor[ATargetUnit] / InchFactor[resolutionDenom]);\nend;\n\nprocedure PixelsToPhysicalSize(var SizeX, SizeY: Single;\n                               const AResolution: TImageResolutionInfo;\n                               ATargetUnit: TCSSUnit = cuCustom);\nvar\n  res: TImageResolutionInfo;\nbegin\n  res := FixImageResolutionInfo(AResolution);\n  SizeX := PixelsToPhysicalSize(SizeX, res.ResolutionUnit, res.ResolutionX, ATargetUnit);\n  SizeY := PixelsToPhysicalSize(SizeY, res.ResolutionUnit, res.ResolutionY, ATargetUnit);\nend;\n\n{ TCSSUnitConverter }\n\nprocedure TCSSUnitConverter.SetViewBoxHeight(AValue: TFloatWithCSSUnit);\nvar\n  u: TCSSUnit;\nbegin\n  if (FViewBoxHeight.value=AValue.value) and\n    (FViewBoxHeight.CSSUnit=AValue.CSSUnit) then Exit;\n  FViewBoxHeight:=AValue;\n  for u := low(TCSSUnit) to high(TCSSUnit) do\n    FViewBoxHeightInUnit[u] := ConvertHeight(FViewBoxHeight, u, 0).value;\nend;\n\nprocedure TCSSUnitConverter.SetViewBoxWidth(AValue: TFloatWithCSSUnit);\nvar\n  u: TCSSUnit;\nbegin\n  if (FViewBoxWidth.value=AValue.value) and\n    (FViewBoxWidth.CSSUnit=AValue.CSSUnit) then Exit;\n  FViewBoxWidth:=AValue;\n  for u := low(TCSSUnit) to high(TCSSUnit) do\n    FViewBoxWidthInUnit[u] := ConvertWidth(FViewBoxWidth, u, 0).value;\nend;\n\nprocedure TCSSUnitConverter.SetFontEmHeight(AValue: TFloatWithCSSUnit);\nbegin\n  FCurrentFontEmHeight := AValue;\nend;\n\nfunction TCSSUnitConverter.GetRootFontEmHeight: TFloatWithCSSUnit;\nbegin\n  result := FloatWithCSSUnit(12, cuPoint);\nend; \n\nfunction TCSSUnitConverter.GetFontEmHeight: TFloatWithCSSUnit;\nbegin\n  result := FCurrentFontEmHeight;\nend;\n\nfunction TCSSUnitConverter.GetFontXHeight: TFloatWithCSSUnit;\nbegin\n  result := FontEmHeight;\n  result.value := result.value * 0.5; //approximation\nend;\n\nfunction TCSSUnitConverter.GetDefaultUnitHeight: TFloatWithCSSUnit;\nbegin\n  result := FloatWithCSSUnit(1,cuPixel);\nend;\n\nfunction TCSSUnitConverter.GetDefaultUnitWidth: TFloatWithCSSUnit;\nbegin\n  result := FloatWithCSSUnit(1,cuPixel);\nend;\n\nfunction TCSSUnitConverter.GetDpiX: single;\nbegin\n  result := 96;\nend;\n\nfunction TCSSUnitConverter.GetDpiY: single;\nbegin\n  result := 96;\nend;\n\nfunction TCSSUnitConverter.Convert(xy: single; sourceUnit, destUnit: TCSSUnit;\n  dpi: single; containerSize: single): single;\nvar sourceFactor, destFactor: integer;\nbegin\n  //fallback values for cuCustom as pixels\n  if sourceUnit = cuCustom then sourceUnit := cuPixel;\n  if destUnit = cuCustom then destUnit := cuPixel;\n  if (sourceUnit = destUnit) then\n    result := xy\n  else\n  if sourceUnit = cuPercent then\n  begin\n    result := xy/100*containerSize;\n  end else\n  if sourceUnit = cuFontEmHeight then\n  begin\n    with FontEmHeight do result := Convert(xy*value,CSSUnit, destUnit, dpi);\n  end else\n  if sourceUnit = cuFontXHeight then\n  begin\n    with FontXHeight do result := Convert(xy*value,CSSUnit, destUnit, dpi);\n  end else\n  if destUnit = cuFontEmHeight then\n  begin\n    with ConvertHeight(FontEmHeight, sourceUnit) do\n      if value = 0 then result := 0 else result := xy/value;\n  end else\n  if destUnit = cuFontXHeight then\n  begin\n    with ConvertHeight(FontXHeight, sourceUnit) do\n      if value = 0 then result := 0 else result := xy/value;\n  end else\n  if sourceUnit = cuPixel then\n  begin\n    if dpi = 0 then result := 0\n    else result := xy*(InchFactor[destUnit]/(dpi*100));\n  end else\n  if destUnit = cuPixel then\n  begin\n    if dpi = 0 then result := 0\n    else result := xy*((dpi*100)/InchFactor[sourceUnit]);\n  end else\n  begin\n    sourceFactor := InchFactor[sourceUnit];\n    destFactor := InchFactor[destUnit];\n    if (sourceFactor = 0) or (destFactor = 0) then\n      result := 0\n    else\n      result := xy*(destFactor/sourceFactor);\n  end;\nend;\n\nfunction TCSSUnitConverter.ConvertOrtho(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit; containerWidth: single; containerHeight: single): TFloatWithCSSUnit;\nbegin\n  result.value := (ConvertWidth(AValue.value, AValue.CSSUnit, destUnit, containerWidth) +\n                   ConvertHeight(AValue.value, AValue.CSSUnit, destUnit, containerHeight)) / 2;\n  result.CSSUnit:= destUnit;\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(x: single; sourceUnit,\n  destUnit: TCSSUnit; containerWidth: single): single;\nbegin\n  if sourceUnit = destUnit then\n    result := x\n  else if sourceUnit = cuCustom then\n  with DefaultUnitWidth do\n  begin\n    result := x*ConvertWidth(value,CSSUnit, destUnit, containerWidth)\n  end\n  else if sourceUnit = cuPercent then\n  begin\n    result := x/100*containerWidth;\n  end\n  else if destUnit = cuCustom then\n  with ConvertWidth(DefaultUnitWidth,sourceUnit) do\n  begin\n    if value = 0 then\n      result := 0\n    else\n      result := x/value;\n  end else\n    result := Convert(x, sourceUnit, destUnit, DpiX, containerWidth);\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(y: single; sourceUnit,\n  destUnit: TCSSUnit; containerHeight: single): single;\nbegin\n  if sourceUnit = destUnit then\n    result := y\n  else if sourceUnit = cuCustom then\n  with DefaultUnitHeight do\n  begin\n    result := y*ConvertHeight(value,CSSUnit, destUnit, containerHeight)\n  end\n  else if sourceUnit = cuPercent then\n  begin\n    result := y/100*containerHeight;\n  end\n  else if destUnit = cuCustom then\n  with ConvertHeight(DefaultUnitHeight,sourceUnit) do\n  begin\n    if value = 0 then\n      result := 0\n    else\n      result := y/value;\n  end else\n    result := Convert(y, sourceUnit, destUnit, DpiY, containerHeight);\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit; containerWidth: single): TFloatWithCSSUnit;\nbegin\n  result.CSSUnit := destUnit;\n  result.value:= ConvertWidth(AValue.value,AValue.CSSUnit,destUnit,containerWidth);\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit; containerHeight: single): TFloatWithCSSUnit;\nbegin\n  result.CSSUnit := destUnit;\n  result.value:= ConvertHeight(AValue.value,AValue.CSSUnit,destUnit,containerHeight);\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(AValue: ArrayOfTFloatWithCSSUnit;\n  destUnit: TCSSUnit; containerWidth: single): ArrayOfTFloatWithCSSUnit;\nvar\n  i: integer;\nbegin\n  for i := low(AValue) to high(AValue) do\n   AValue[i]:= ConvertWidth(AValue[i],destUnit,containerWidth);\n  result := AValue;\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(AValue: ArrayOfTFloatWithCSSUnit;\n  destUnit: TCSSUnit; containerHeight: single): ArrayOfTFloatWithCSSUnit;\nvar\n  i: integer;\nbegin\n  for i := low(AValue) to high(AValue) do\n   AValue[i]:= ConvertHeight(AValue[i],destUnit,containerHeight);\n  result := AValue;\nend;\n\nfunction TCSSUnitConverter.ConvertCoord(pt: TPointF; sourceUnit,\n  destUnit: TCSSUnit; containerWidth: single; containerHeight: single): TPointF;\nbegin\n  result.x := ConvertWidth(pt.x, sourceUnit, destUnit, containerWidth);\n  result.y := ConvertHeight(pt.y, sourceUnit, destUnit, containerHeight);\nend;\n\nfunction TCSSUnitConverter.GetConversionMatrix(AFromUnit, AToUnit: TCSSUnit;\n  containerWidth: single; containerHeight: single): TAffineMatrix;\nvar\n  ptUnit: TPointF;\nbegin\n  ptUnit := ConvertCoord(PointF(1, 1), AFromUnit, AToUnit, containerWidth, containerHeight);\n  result := AffineMatrixScale(ptUnit.x, ptUnit.y);\nend;\n\nclass function TCSSUnitConverter.parseValue(AValue: string;\n  ADefault: TFloatWithCSSUnit): TFloatWithCSSUnit;\nvar cssUnit: TCSSUnit;\n  errPos: integer;\nbegin\n  AValue := trim(AValue);\n  result.CSSUnit:= cuCustom;\n  for cssUnit := succ(cuCustom) to high(cssUnit) do\n    if (length(AValue)>=length(CSSUnitShortName[cssUnit])) and\n     (CompareText(copy(AValue,length(AValue)-length(CSSUnitShortName[cssUnit])+1,length(CSSUnitShortName[cssUnit])),\n        CSSUnitShortName[cssUnit])=0) then\n    begin\n      AValue := copy(AValue,1,length(AValue)-length(CSSUnitShortName[cssUnit]));\n      result.CSSUnit := cssUnit;\n      break;\n    end;\n  val(AValue,result.value,errPos);\n  if errPos <> 0 then\n    result := ADefault;\nend;\n\nclass function TCSSUnitConverter.parseValue(AValue: string; ADefault: single): single;\nvar\n  errPos: integer;\nbegin\n  AValue := trim(AValue);\n  val(AValue,result,errPos);\n  if errPos <> 0 then\n    result := ADefault;\nend;\n\nclass function TCSSUnitConverter.parseArrayOfNumbers(AValue: string): ArrayOfTSVGNumber;\nvar\n  i, l,p: integer;\n\n  procedure CanAddToArray;\n  var\n    len: integer;\n  begin\n    if l <> 0 then\n    begin\n      len := length(result);\n      setlength(result,len+1);\n      result[len] := parseValue( copy(AValue,p,l), 0);\n    end;\n  end;\n\nbegin\n  AValue := trim(AValue);\n  if AValue = '' then exit(nil);\n\n  setlength(result,0);\n  p:= 1;\n  l:= 0;\n  for i := 1 to length(AValue) do\n  begin\n    if AValue[i] in [#9,#10,#13,#32,#44] then\n    begin\n      CanAddToArray;\n      p:= i+1;\n      l:= 0;\n    end\n    else\n      Inc(l);\n  end;\n  CanAddToArray;\nend;\n\nclass function TCSSUnitConverter.parseArrayOfValuesWithUnit(AValue: string): ArrayOfTFloatWithCSSUnit;\nvar\n  i, l,p: integer;\n  def: TFloatWithCSSUnit;\n\n  procedure CanAddToArray;\n  var\n    len: integer;\n  begin\n    if l <> 0 then\n    begin\n      len := length(result);\n      setlength(result,len+1);\n      result[len] := parseValue( copy(AValue,p,l), def);\n    end;\n  end;\n\nbegin\n  AValue := trim(AValue);\n  if AValue = '' then exit(nil);\n\n  def := FloatWithCSSUnit(0, cuCustom);\n  setlength(result,0);\n  p:= 1;\n  l:= 0;\n  for i := 1 to length(AValue) do\n  begin\n    if AValue[i] in [#9,#10,#13,#32,#44] then\n    begin\n      CanAddToArray;\n      p:= i+1;\n      l:= 0;\n    end\n    else\n      Inc(l);\n  end;\n  CanAddToArray;\nend;\n\nclass function TCSSUnitConverter.formatValue(AValue: TFloatWithCSSUnit; APrecision: integer = 7): string;\nbegin\n  result := FloatToStrF(AValue.value,ffGeneral,APrecision,0,formats)+CSSUnitShortName[AValue.CSSUnit];\nend;\n\nclass function TCSSUnitConverter.formatValue(AValue: single; APrecision: integer\n  ): string;\nbegin\n  result := FloatToStrF(AValue,ffGeneral,APrecision,0,formats);\nend;\n\nclass function TCSSUnitConverter.formatValue(AValue: ArrayOfTSVGNumber; APrecision: integer = 7): string;\nvar\n  i, len: integer;\nbegin\n  len:= length(AValue);\n  if len = 0 then\n    result:= ''\n  else if len = 1 then\n    result:= formatValue(AValue[0], APrecision)\n  else\n  begin\n    result:= '';\n    for i := 0 to len-1 do\n    begin\n      result:= result + formatValue(AValue[i], APrecision);\n      if i <> (len-1) then\n       result:= result + ', ';\n    end;\n  end;\nend;\n\nclass function TCSSUnitConverter.formatValue(AValue: ArrayOfTFloatWithCSSUnit; APrecision: integer = 7): string;\nvar\n  i, len: integer;\nbegin\n  len:= length(AValue);\n  if len = 0 then\n    result:= ''\n  else if len = 1 then\n    result:= formatValue(AValue[0], APrecision)\n  else\n  begin\n    result:= '';\n    for i := 0 to len-1 do\n    begin\n      result:= result + formatValue(AValue[i], APrecision);\n      if i <> (len-1) then\n       result:= result + ', ';\n    end;\n  end;\nend;\n\nconstructor TCSSUnitConverter.Create;\nbegin\n  inherited;\n  FCurrentFontEmHeight:= GetRootFontEmHeight;\n  ViewBoxWidth := FloatWithCSSUnit(0, cuPixel);\n  ViewBoxHeight := FloatWithCSSUnit(0, cuPixel);\nend;\n\nfunction TCSSUnitConverter.ConvertOrtho(xy: single; sourceUnit,\n  destUnit: TCSSUnit): single;\nbegin\n  result := (ConvertWidth(xy, sourceUnit, destUnit) +\n    ConvertHeight(xy, sourceUnit, destUnit)) / 2;\nend;\n\nfunction TCSSUnitConverter.ConvertOrtho(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit): TFloatWithCSSUnit;\nbegin\n  result.value := (ConvertWidth(AValue.value, AValue.CSSUnit, destUnit) +\n                   ConvertHeight(AValue.value, AValue.CSSUnit, destUnit)) / 2;\n  result.CSSUnit:= destUnit;\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(x: single; sourceUnit,\n  destUnit: TCSSUnit): single;\nbegin\n  result := ConvertWidth(x, sourceUnit, destUnit, FViewBoxWidthInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(y: single; sourceUnit,\n  destUnit: TCSSUnit): single;\nbegin\n  result := ConvertHeight(y, sourceUnit, destUnit, FViewBoxHeightInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := ConvertWidth(AValue, destUnit, FViewBoxWidthInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(AValue: TFloatWithCSSUnit;\n  destUnit: TCSSUnit): TFloatWithCSSUnit;\nbegin\n  result := ConvertHeight(AValue, destUnit, FViewBoxHeightInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertWidth(AValue: ArrayOfTFloatWithCSSUnit;\n  destUnit: TCSSUnit): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ConvertWidth(AValue, destUnit, FViewBoxWidthInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertHeight(AValue: ArrayOfTFloatWithCSSUnit;\n  destUnit: TCSSUnit): ArrayOfTFloatWithCSSUnit;\nbegin\n  result := ConvertHeight(AValue, destUnit, FViewBoxHeightInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.ConvertCoord(pt: TPointF; sourceUnit,\n  destUnit: TCSSUnit): TPointF;\nbegin\n  result := ConvertCoord(pt, sourceUnit, destUnit,\n    FViewBoxWidthInUnit[destUnit], FViewBoxHeightInUnit[destUnit]);\nend;\n\nfunction TCSSUnitConverter.GetConversionMatrix(AFromUnit, AToUnit: TCSSUnit): TAffineMatrix;\nbegin\n  result := GetConversionMatrix(AFromUnit, AToUnit,\n    FViewBoxWidthInUnit[AToUnit], FViewBoxHeightInUnit[AToUnit]);\nend;\n\n{ TBGRAImageUnitConverter }\n\nfunction TBGRAImageUnitConverter.GetDpiX: single;\nbegin\n  result := FDpiX;\nend;\n\nfunction TBGRAImageUnitConverter.GetDpiY: single;\nbegin\n  result := FDpiY;\nend;\n\nfunction TBGRAImageUnitConverter.GetFontEmHeight: TFloatWithCSSUnit;\nbegin\n  if FBitmap is TBGRACustomBitmap then\n    result := FloatWithCSSUnit(TBGRACustomBitmap(FBitmap).FontHeight, cuPixel)\n  else\n    result := inherited GetFontEmHeight;\nend;\n\nfunction TBGRAImageUnitConverter.GetFontXHeight: TFloatWithCSSUnit;\nbegin\n  if FBitmap is TBGRACustomBitmap then\n    result := FloatWithCSSUnit(TBGRACustomBitmap(FBitmap).TextSize('x').Width, cuPixel)\n  else\n    result := inherited GetFontXHeight;\nend;\n\nprocedure TBGRAImageUnitConverter.SetFontEmHeight(AValue: TFloatWithCSSUnit);\nbegin\n  raise EInvalidOpException.Create('Font size cannot be changed from the unit converter');\nend;\n\nconstructor TBGRAImageUnitConverter.Create(ABitmap: TCustomUniversalBitmap);\nvar\n  resolution: TImageResolutionInfo;\nbegin\n  inherited Create;\n  FBitmap := ABitmap;\n  resolution := FixImageResolutionInfo(ABitmap.ResolutionInfo);\n  FDpiX := ConvertResolution(resolution.ResolutionX, resolution.ResolutionUnit, ruPixelsPerInch);\n  FDpiY := ConvertResolution(resolution.ResolutionY, resolution.ResolutionUnit, ruPixelsPerInch);\n  ViewBoxWidth := FloatWithCSSUnit(ABitmap.Width, cuPixel);\n  ViewBoxHeight := FloatWithCSSUnit(ABitmap.Height, cuPixel);\nend;\n\ninitialization\n\n  formats := DefaultFormatSettings;\n  formats.DecimalSeparator := '.';\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrautf8.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ UTF8 related functions }\nunit BGRAUTF8;\n\n{$mode objfpc}{$H+}\n{$i bgrabitmap.inc}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, math, BGRAUnicode\n  {$IFDEF BGRABITMAP_USE_LCL}, {$if FPC_FULLVERSION > 030200}classes\n  {$ELSE}LazUTF8Classes{$ENDIF}\n  {$ENDIF};\n\nconst\n  UTF8_ARABIC_ALEPH = 'ا';\n  UTF8_ARABIC_ALEPH_HAMZA_BELOW = 'إ';\n  UTF8_ARABIC_ALEPH_HAMZA_ABOVE = 'أ';\n  UTF8_ARABIC_ALEPH_MADDA_ABOVE = 'آ';\n  UTF8_ARABIC_LAM = 'ل';\n  UTF8_NO_BREAK_SPACE = ' ';\n  UTF8_ZERO_WIDTH_NON_JOINER = '‌';\n  UTF8_ZERO_WIDTH_JOINER = '‍';\n  UTF8_LINE_SEPARATOR = #$E2#$80#$A8;       //equivalent of <br>\n  UTF8_PARAGRAPH_SEPARATOR = #$E2#$80#$A9;  //equivalent of </p>\n  UTF8_NEXT_LINE = #$C2#$85;                //equivalent of CRLF\n\n{$IFDEF BGRABITMAP_USE_LCL}\ntype\n  { File stream supporting UTF8 filenames }\n  TFileStreamUTF8 = {$if FPC_FULLVERSION > 030200}TFileStream{$ELSE}LazUTF8Classes.TFileStreamUTF8{$ENDIF};\n  { String list supporting UTF8 filenames }\n  TStringListUTF8 = {$if FPC_FULLVERSION > 030200}TStringList{$ELSE}LazUTF8Classes.TStringListUTF8{$ENDIF};\n{$ELSE}\ntype\n  { File stream supporting UTF8 filenames }\n  TFileStreamUTF8 = class(THandleStream)\n  private\n    FFileName: utf8string;\n  public\n    constructor Create(const AFileName: utf8string; Mode: Word); overload;\n    constructor Create(const AFileName: utf8string; Mode: Word; Rights: LongWord); overload;\n    destructor Destroy; override;\n    property FileName: utf8string Read FFilename;\n  end;\n\n  { String list supporting UTF8 filenames }\n  TStringListUTF8 = class(TStringList)\n  protected\n    function DoCompareText(const s1,s2 : string) : PtrInt; override;\n  public\n    procedure LoadFromFile(const FileName: string); override;\n    procedure SaveToFile(const FileName: string); override;\n  end;\n{$ENDIF}\n\nprocedure LoadStringsFromFileUTF8(List: TStrings; const FileName: string);\nprocedure SaveStringsToFileUTF8(List: TStrings; const FileName: string);\n\nfunction UTF8ToSys(const s: string): string;\nfunction SysToUTF8(const s: string): string;\n\nfunction UTF8LowerCase(const s: string): string;\nfunction UTF8UpperCase(const s: string): string;\n\nfunction UTF8CompareStr(const S1, S2: string): Integer;\nfunction UTF8CompareText(const S1, S2: string): Integer;\n\nfunction UTF8CharStart(UTF8Str: PChar; Len, CharIndex: PtrInt): PChar;\n\nfunction FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle;\nfunction FileCreateUTF8(Const FileName : string) : THandle; overload;\nfunction FileCreateUTF8(Const FileName : string; Rights: LongWord) : THandle; overload;\nfunction FileExistsUTF8(Const FileName : string): boolean;\nfunction DeleteFileUTF8(Const FileName : string): boolean;\nfunction FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint;\nfunction FindNextUTF8(var Rslt: TSearchRec): Longint;\nprocedure FindCloseUTF8(var F: TSearchrec);\n\ntype\n  string4 = string[4];\n  TUnicodeArray = packed array of LongWord;\n  TIntegerArray = array of integer;\n\nfunction UTF8CharacterLength(p: PChar): integer;\nfunction UTF8Length(const s: string): PtrInt; overload;\nfunction UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt; overload;\nfunction UnicodeCharToUTF8(u: LongWord): string4;\nfunction UTF8ReverseString(const s: string): string;\nfunction UTF8CodepointToUnicode(p: PChar; ACodePointLen: integer): LongWord;\nfunction UTF8ToUTF16(const S: AnsiString): UnicodeString;\nfunction UTF16ToUTF8(const S: UnicodeString): AnsiString;\nprocedure UTF8ToUnicodeArray(const sUTF8: string; out u: TUnicodeArray; out ofs: TIntegerArray);\n\ntype\n  { Unicode layout information along with offset for each UTF8 character }\n  TBidiUTF8Info = packed record\n    Offset: Integer;\n    BidiInfo: TUnicodeBidiInfo;\n  end;\n  { Array of unicode layout for UTF8 text }\n  TBidiUTF8Array = packed array of TBidiUTF8Info;\n  TUnicodeDisplayOrder = BGRAUnicode.TUnicodeDisplayOrder;\n  TUnicodeBidiInfo = BGRAUnicode.TUnicodeBidiInfo;\n\nfunction GetBidiClassUTF8(P: PChar): TUnicodeBidiClass;\nfunction GetFirstStrongBidiClassUTF8(const sUTF8: string): TUnicodeBidiClass;\nfunction GetLastStrongBidiClassUTF8(const sUTF8: string): TUnicodeBidiClass;\nfunction IsRightToLeftUTF8(const sUTF8: string): boolean;\nfunction IsZeroWidthUTF8(const sUTF8: string): boolean;\nfunction AddParagraphBidiUTF8(s: string; ARightToLeft: boolean): string;\n{ Returns an array with bidirectional analysis with automatic text direction. }\nfunction AnalyzeBidiUTF8(const sUTF8: string): TBidiUTF8Array; overload;\n{ Returns an array with bidirectional analysis with specified text direction. }\nfunction AnalyzeBidiUTF8(const sUTF8: string; ABidiMode: TFontBidiMode): TBidiUTF8Array; overload;\n{ Returns an array with bidirectional analysis with specified text direction. }\nfunction AnalyzeBidiUTF8(const sUTF8: string; ARightToLeft: boolean): TBidiUTF8Array; overload;\n\n{ @abstract(Display order of characters.)\n\nFor example, a text in hebrew will be displayed from right to left.\nThis function doesn't take into account word wrap. In this case, it is a bit more complicated\nand there is BGRATextBidi unit to handle text layout.)\n}\nfunction GetUTF8DisplayOrder(const ABidi: TBidiUTF8Array): TUnicodeDisplayOrder;\nfunction ContainsBidiIsolateOrFormattingUTF8(const sUTF8: string): boolean;\n{ Adds special unicode characters around the text to change it's direction.\n  For example \"hello\" from right to left would be displayed as \"olleh\". }\nfunction UTF8OverrideDirection(const sUTF8: string; ARightToLeft: boolean): string;\n{ Adds special unicode characters to make it a quote in a specific direction.\n  For example you can add a quote in arabic that will be right to left inside a text\n  in latin alphabet. This is useful for example if there is punctiation at the end of the quote,\n  so that it will be displayed on the correct side of the text. }\nfunction UTF8EmbedDirection(const sUTF8: string; ARightToLeft: boolean): string;\nfunction UTF8Ligature(const sUTF8: string; ARightToLeft: boolean; ALigatureLeft, ALigatureRight: boolean): string;\n\ntype\n\n  { Information about one glyph in a UTF8 text }\n  TGlyphUtf8 = record\n  private\n    function GetEmpty: boolean;\n  public\n    GlyphUtf8, MirroredGlyphUtf8: string;\n    RightToLeft, Mirrored, Merged: boolean;\n    ByteOffset, ByteSize: integer;\n    property Empty: boolean read GetEmpty;\n  end;\n\n  { @abstract(Cursor to go through a UTF8 text glyph by glyph.)\n\n  A glyph is a graphical unit to be displayed. It can be formed\n  by one or more Unicode codepoints.\n\nExample drawing wavy text using TGlyphCursorUtf8 on a TBGRACanvas2D:\n```pascal\nuses ..., BGRAUTF8, BGRAClasses, BGRACanvas2D;\n\nprocedure WavyText(ctx: TBGRACanvas2D; AText: string; X,Y,\n  AWavePosDeg, AWaveStepDeg, AWaveSize: single);\nvar cursor : TGlyphCursorUtf8;\n  glyph: TGlyphUtf8;\n  glyphText: string;\nbegin\n  cursor := TGlyphCursorUtf8.New(AText, fbmAuto);\n  while not cursor.EndOfString do\n  begin\n    glyph := cursor.GetNextGlyph;\n    if glyph.MirroredGlyphUtf8 <> '' then\n      glyphText := glyph.MirroredGlyphUtf8\n    else\n      glyphText := glyph.GlyphUtf8;\n    ctx.fillText(glyphText, x,y + AWaveSize*Sin(AWavePosDeg*Pi/180));\n    IncF(x, ctx.measureText(glyphText).width);\n    IncF(AWavePosDeg, AWaveStepDeg);\n  end;\nend;\n```}\n  TGlyphCursorUtf8 = record\n  private\n    sUTF8: string;\n    currentChar: string;\n    currentOffset: integer;\n    currentBidiInfo: TUnicodeBidiInfo;\n    bidiArray: TBidiUTF8Array;\n    displayOrder: TUnicodeDisplayOrder;\n    displayIndex: Integer;\n    procedure NextMultichar;\n    procedure PeekMultichar;\n  public\n    { Initialize a record with the given parameters }\n    class function New(const textUTF8: string; ABidiMode: TFontBidiMode): TGlyphCursorUtf8; static;\n    { Advance and retrieve the next glyph }\n    function GetNextGlyph: TGlyphUtf8;\n    { Start all over again from the first character }\n    procedure Rewind;\n    { Indicate whether the end of the string has bee reached }\n    function EndOfString: boolean;\n  end;\n\n//little endian stream functions\nfunction LEReadInt64(Stream: TStream): int64;\nprocedure LEWriteInt64(Stream: TStream; AValue: int64);\nfunction LEReadLongint(Stream: TStream): longint;\nprocedure LEWriteLongint(Stream: TStream; AValue: LongInt);\nfunction LEReadByte(Stream: TStream): byte;\nprocedure LEWriteByte(Stream: TStream; AValue: Byte);\nfunction LEReadSingle(Stream: TStream): single;\nprocedure LEWriteSingle(Stream: TStream; AValue: single);\n\nimplementation\n\n{$IFDEF BGRABITMAP_USE_LCL}\nuses LazFileUtils, LazUtf8;\n\nprocedure LoadStringsFromFileUTF8(List: TStrings; const FileName: string);\nbegin\n  List.LoadFromFile(FileName);\nend;\n\nprocedure SaveStringsToFileUTF8(List: TStrings; const FileName: string);\nbegin\n  List.SaveToFile(Filename);\nend;\n\nfunction UTF8ToSys(const s: string): string;\nbegin\n  result := LazUtf8.UTF8ToSys(s);\nend;\n\nfunction SysToUTF8(const s: string): string;\nbegin\n  result := LazUtf8.SysToUTF8(s);\nend;\n\nfunction UTF8LowerCase(const s: string): string;\nbegin\n  result := LazUtf8.UTF8LowerCase(s);\nend;\n\nfunction UTF8UpperCase(const s: string): string;\nbegin\n  result := LazUtf8.UTF8UpperCase(s);\nend;\n\nfunction UTF8CompareStr(const S1, S2: string): Integer;\nbegin\n  result := LazUtf8.UTF8CompareStr(S1,S2);\nend;\n\nfunction UTF8CompareText(const S1, S2: string): Integer;\nbegin\n  result := LazUtf8.UTF8CompareText(S1,S2);\nend;\n\nfunction FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle;\nbegin\n  result := LazFileUtils.FileOpenUTF8(FileName, Mode);\nend;\n\nfunction FileCreateUTF8(Const FileName : string) : THandle; overload;\nbegin\n  result := LazFileUtils.FileCreateUTF8(FileName);\nend;\n\nfunction FileCreateUTF8(Const FileName : string; Rights: LongWord) : THandle; overload;\nbegin\n  result := LazFileUtils.FileCreateUTF8(FileName, Rights);\nend;\n\nfunction FileExistsUTF8(Const FileName : string): boolean;\nbegin\n  result := LazFileUtils.FileExistsUTF8(FileName);\nend;\n\nfunction DeleteFileUTF8(const FileName: string): boolean;\nbegin\n  result := LazFileUtils.DeleteFileUTF8(FileName);\nend;\n\nfunction FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec\n  ): Longint;\nbegin\n  result := LazFileUtils.FindFirstUTF8(Path,Attr,Rslt);\nend;\n\nfunction FindNextUTF8(var Rslt: TSearchRec): Longint;\nbegin\n  result := LazFileUtils.FindNextUTF8(Rslt);\nend;\n\nprocedure FindCloseUTF8(var F: TSearchrec);\nbegin\n  LazFileUtils.FindCloseUTF8(F);\nend;\n\nfunction UTF8CharacterLength(p: PChar): integer;\nbegin\n  result := LazUtf8.{$IF FPC_FULLVERSION>030004}UTF8CodepointSize{$ELSE}\n    UTF8CharacterLength{$ENDIF}(p);\nend;\n\nfunction UTF8Length(const s: string): PtrInt;\nbegin\n  result := LazUtf8.UTF8Length(s);\nend;\n\nfunction UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt;\nbegin\n  result := LazUtf8.UTF8Length(p, ByteCount);\nend;\n\nfunction UnicodeCharToUTF8(u: LongWord): string4;\nbegin\n  result := LazUtf8.UnicodeToUTF8(u);\nend;\n\nfunction UTF8ToUTF16(const S: AnsiString): UnicodeString;\nbegin\n  result := LazUTf8.UTF8ToUTF16(s);\nend;\n\nfunction UTF16ToUTF8(const S: UnicodeString): AnsiString;\nbegin\n  result := LazUTf8.UTF16ToUTF8(s);\nend;\n\n{$ELSE}\n\nprocedure LoadStringsFromFileUTF8(List: TStrings; const FileName: string);\nvar\n  uList: TStringListUTF8;\nbegin\n  if List is TStringListUTF8 then\n  begin\n    List.LoadFromFile(FileName);\n    exit;\n  end;\n  uList:=TStringListUTF8.Create;\n  try\n    uList.LoadFromFile(FileName);\n    List.Assign(uList);\n  finally\n    uList.Free;\n  end;\nend;\n\nprocedure SaveStringsToFileUTF8(List: TStrings; const FileName: string);\nvar\n  uList: TStringListUTF8;\nbegin\n  if List is TStringListUTF8 then\n  begin\n    List.SaveToFile(FileName);\n    exit;\n  end;\n  uList:=TStringListUTF8.Create;\n  try\n    uList.Assign(List);\n    uList.SaveToFile(FileName);\n  finally\n    uList.Free;\n  end;\nend;\n\nfunction UTF8LowerCase(const s: string): string;\nbegin\n  result := UTF8Encode(UnicodeLowerCase(UTF8Decode(s)));\nend;\n\nfunction UTF8UpperCase(const s: string): string;\nbegin\n  result := UTF8Encode(UnicodeUpperCase(UTF8Decode(s)));\nend;\n\nfunction UTF8CompareStr(const S1, S2: string): Integer;\nbegin\n  Result := SysUtils.CompareStr(S1, S2);\nend;\n\nfunction UTF8CompareText(const S1, S2: string): Integer;\nbegin\n  Result := UnicodeCompareText(UTF8Decode(S1), UTF8Decode(S2));\nend;\n\nfunction FileOpenUTF8(const FileName: string; Mode: Integer): THandle;\nbegin\n  result := FileOpen(UTF8ToSys(FileName),Mode);\nend;\n\nfunction FileCreateUTF8(const FileName: string): THandle;\nbegin\n  result := FileCreate(UTF8ToSys(FileName));\nend;\n\nfunction FileCreateUTF8(const FileName: string; Rights: LongWord): THandle;\nbegin\n  result := FileCreate(UTF8ToSys(FileName),Rights);\nend;\n\nfunction FileExistsUTF8(const FileName: string): boolean;\nbegin\n  result := FileExists(UTF8ToSys(FileName));\nend;\n\nfunction DeleteFileUTF8(const FileName: string): boolean;\nbegin\n  result := DeleteFile(UTF8ToSys(FileName));\nend;\n\nfunction FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec\n  ): Longint;\nbegin\n  result := FindFirst(UTF8ToSys(Path),Attr,Rslt);\n  Rslt.Name := SysToUTF8(Rslt.Name);\nend;\n\nfunction FindNextUTF8(var Rslt: TSearchRec): Longint;\nbegin\n  result := FindNext(Rslt);\n  if result = 0 then\n    Rslt.Name := SysToUTF8(Rslt.Name);\nend;\n\nprocedure FindCloseUTF8(var F: TSearchrec);\nbegin\n  FindClose(F);\nend;\n\nfunction UTF8ToSys(const s: string): string;\nbegin\n  result := Utf8ToAnsi(s);\nend;\n\nfunction SysToUTF8(const s: string): string;\nbegin\n  result := AnsiToUtf8(s);\nend;\n\nfunction UTF8CharacterLength(p: PChar): integer;\nbegin\n  if p<>nil then begin\n    if ord(p^)<%11000000 then begin\n      // regular single byte character (#0 is a character, this is pascal ;)\n      Result:=1;\n    end\n    else begin\n      // multi byte\n      if ((ord(p^) and %11100000) = %11000000) then begin\n        // could be 2 byte character\n        if (ord(p[1]) and %11000000) = %10000000 then\n          Result:=2\n        else\n          Result:=1;\n      end\n      else if ((ord(p^) and %11110000) = %11100000) then begin\n        // could be 3 byte character\n        if ((ord(p[1]) and %11000000) = %10000000)\n        and ((ord(p[2]) and %11000000) = %10000000) then\n          Result:=3\n        else\n          Result:=1;\n      end\n      else if ((ord(p^) and %11111000) = %11110000) then begin\n        // could be 4 byte character\n        if ((ord(p[1]) and %11000000) = %10000000)\n        and ((ord(p[2]) and %11000000) = %10000000)\n        and ((ord(p[3]) and %11000000) = %10000000) then\n          Result:=4\n        else\n          Result:=1;\n      end\n      else\n        Result:=1;\n    end;\n  end else\n    Result:=0;\nend;\n\nfunction UTF8Length(const s: string): PtrInt;\nbegin\n  Result:=UTF8Length(PChar(s),length(s));\nend;\n\nfunction UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt;\nvar\n  CharLen: LongInt;\nbegin\n  Result:=0;\n  while (ByteCount>0) do begin\n    inc(Result);\n    CharLen:=UTF8CharacterLength(p);\n    inc(p,CharLen);\n    dec(ByteCount,CharLen);\n  end;\nend;\n\nfunction UnicodeToUTF8Inline(CodePoint: LongWord; Buf: PChar): integer;\nbegin\n  case CodePoint of\n    0..$7f:\n      begin\n        Result:=1;\n        Buf[0]:=char(byte(CodePoint));\n      end;\n    $80..$7ff:\n      begin\n        Result:=2;\n        Buf[0]:=char(byte($c0 or (CodePoint shr 6)));\n        Buf[1]:=char(byte($80 or (CodePoint and $3f)));\n      end;\n    $800..$ffff:\n      begin\n        Result:=3;\n        Buf[0]:=char(byte($e0 or (CodePoint shr 12)));\n        Buf[1]:=char(byte((CodePoint shr 6) and $3f) or $80);\n        Buf[2]:=char(byte(CodePoint and $3f) or $80);\n      end;\n    $10000..$10ffff:\n      begin\n        Result:=4;\n        Buf[0]:=char(byte($f0 or (CodePoint shr 18)));\n        Buf[1]:=char(byte((CodePoint shr 12) and $3f) or $80);\n        Buf[2]:=char(byte((CodePoint shr 6) and $3f) or $80);\n        Buf[3]:=char(byte(CodePoint and $3f) or $80);\n      end;\n  else\n    Result:=0;\n  end;\nend;\n\nfunction UnicodeCharToUTF8(u: LongWord): string4;\nbegin\n  result[0] := chr(UnicodeToUTF8Inline(u,@result[1]));\nend;\n\nconstructor TFileStreamUTF8.Create(const AFileName: utf8string; Mode: Word);\nvar\n  lHandle: THandle;\nbegin\n  FFileName:= AFileName;\n  if Mode = fmcreate then\n    lHandle:= FileCreateUTF8(AFileName)\n  else\n    lHandle:= FileOpenUTF8(AFileName, Mode);\n\n  If (THandle(lHandle)=feInvalidHandle) then\n  begin\n    if Mode = fmCreate then\n      raise EFCreateError.createfmt({SFCreateError}'Unable to create file \"%s\"', [AFileName])\n    else\n      raise EFOpenError.Createfmt({SFOpenError}'Unable to open file \"%s\"', [AFilename]);\n  end\n  else\n    inherited Create(lHandle);\nend;\n\nconstructor TFileStreamUTF8.Create(const AFileName: utf8string; Mode: Word; Rights: LongWord);\nvar\n  lHandle: THandle;\nbegin\n  FFileName:=AFileName;\n  if Mode=fmcreate then\n    lHandle:=FileCreateUTF8(AFileName,Rights)\n  else\n    lHandle:=FileOpenUTF8(AFileName,Mode);\n\n  if (THandle(lHandle)=feInvalidHandle) then\n  begin\n    if Mode=fmcreate then\n      raise EFCreateError.createfmt({SFCreateError}'Unable to create file \"%s\"',[AFileName])\n    else\n      raise EFOpenError.Createfmt({SFOpenError}'Unable to open file \"%s\"',[AFilename]);\n  end\n  else\n    inherited Create(lHandle);\nend;\n\ndestructor TFileStreamUTF8.Destroy;\nbegin\n  FileClose(Handle);\nend;\n\nfunction TStringListUTF8.DoCompareText(const s1, s2: string): PtrInt;\nbegin\n  if CaseSensitive then\n    Result:= UTF8CompareStr(s1,s2)\n  else\n    Result:= UTF8CompareText(s1,s2);\nend;\n\nprocedure TStringListUTF8.LoadFromFile(const FileName: string);\nvar\n  TheStream: TFileStreamUTF8;\nbegin\n  TheStream:= TFileStreamUTF8.Create(FileName, fmOpenRead or fmShareDenyWrite);\n  try\n    LoadFromStream(TheStream);\n  finally\n    TheStream.Free;\n  end;\nend;\n\nprocedure TStringListUTF8.SaveToFile(const FileName: string);\nvar\n  TheStream: TFileStreamUTF8;\nbegin\n  TheStream:=TFileStreamUTF8.Create(FileName,fmCreate);\n  try\n    SaveToStream(TheStream);\n  finally\n    TheStream.Free;\n  end;\nend;\n\n{copied from LazUTF8\n ------------------------------------------------------------------------------}\ntype\n  TConvertResult = (trNoError, trNullSrc, trNullDest, trDestExhausted,\n    trInvalidChar, trUnfinishedChar);\n\n  TConvertOption = (toInvalidCharError, toInvalidCharToSymbol,\n    toUnfinishedCharError, toUnfinishedCharToSymbol);\n  TConvertOptions = set of TConvertOption;\n\n{ ------------------------------------------------------------------------------\n  Name:    ConvertUTF8ToUTF16\n  Params:  Dest                - Pointer to destination string\n           DestWideCharCount   - Wide char count allocated in destination string\n           Src                 - Pointer to source string\n           SrcCharCount        - Char count allocated in source string\n           Options             - Conversion options, if none is set, both\n             invalid and unfinished source chars are skipped\n\n             toInvalidCharError       - Stop on invalid source char and report\n                                      error\n             toInvalidCharToSymbol    - Replace invalid source chars with '?'\n             toUnfinishedCharError    - Stop on unfinished source char and\n                                      report error\n             toUnfinishedCharToSymbol - Replace unfinished source char with '?'\n\n           ActualWideCharCount - Actual wide char count converted from source\n                               string to destination string\n  Returns:\n    trNoError        - The string was successfully converted without\n                     any error\n    trNullSrc        - Pointer to source string is nil\n    trNullDest       - Pointer to destination string is nil\n    trDestExhausted  - Destination buffer size is not big enough to hold\n                     converted string\n    trInvalidChar    - Invalid source char has occurred\n    trUnfinishedChar - Unfinished source char has occurred\n\n  Converts the specified UTF-8 encoded string to UTF-16 encoded (system endian)\n ------------------------------------------------------------------------------}\nfunction ConvertUTF8ToUTF16(Dest: PWideChar; DestWideCharCount: SizeUInt;\n  Src: PChar; SrcCharCount: SizeUInt; Options: TConvertOptions;\n  out ActualWideCharCount: SizeUInt): TConvertResult;\nvar\n  DestI, SrcI: SizeUInt;\n  B1, B2, B3, B4: Byte;\n  W: Word;\n  C: LongWord;\n\n  function UnfinishedCharError: Boolean;\n  begin\n    if toUnfinishedCharToSymbol in Options then\n    begin\n      Dest[DestI] := System.WideChar('?');\n      Inc(DestI);\n      Result := False;\n    end\n    else\n      if toUnfinishedCharError in Options then\n      begin\n        ConvertUTF8ToUTF16 := trUnfinishedChar;\n        Result := True;\n      end\n      else Result := False;\n  end;\n\n  function InvalidCharError(Count: SizeUInt): Boolean; inline;\n  begin\n    if not (toInvalidCharError in Options) then\n    begin\n      if toInvalidCharToSymbol in Options then\n      begin\n        Dest[DestI] := System.WideChar('?');\n        Inc(DestI);\n      end;\n\n      Dec(SrcI, Count);\n\n      // skip trailing UTF-8 char bytes\n      while (Count > 0) do\n      begin\n        if (Byte(Src[SrcI]) and %11000000) <> %10000000 then Break;\n        Inc(SrcI);\n        Dec(Count);\n      end;\n\n      Result := False;\n    end\n    else\n      if toInvalidCharError in Options then\n      begin\n        ConvertUTF8ToUTF16 := trUnfinishedChar;\n        Result := True;\n      end;\n  end;\n\nbegin\n  ActualWideCharCount := 0;\n\n  if not Assigned(Src) then\n  begin\n    Result := trNullSrc;\n    Exit;\n  end;\n\n  if not Assigned(Dest) then\n  begin\n    Result := trNullDest;\n    Exit;\n  end;\n  SrcI := 0;\n  DestI := 0;\n\n  while (DestI < DestWideCharCount) and (SrcI < SrcCharCount) do\n  begin\n    B1 := Byte(Src[SrcI]);\n    Inc(SrcI);\n\n    if B1 < 128 then // single byte UTF-8 char\n    begin\n      Dest[DestI] := System.WideChar(B1);\n      Inc(DestI);\n    end\n    else\n    begin\n      if SrcI >= SrcCharCount then\n        if UnfinishedCharError then Exit(trInvalidChar)\n        else Break;\n\n      B2 := Byte(Src[SrcI]);\n      Inc(SrcI);\n\n      if (B1 and %11100000) = %11000000 then // double byte UTF-8 char\n      begin\n        if (B2 and %11000000) = %10000000 then\n        begin\n          Dest[DestI] := System.WideChar(((B1 and %00011111) shl 6) or (B2 and %00111111));\n          Inc(DestI);\n        end\n        else // invalid character, assume single byte UTF-8 char\n          if InvalidCharError(1) then Exit(trInvalidChar);\n      end\n      else\n      begin\n        if SrcI >= SrcCharCount then\n          if UnfinishedCharError then Exit(trInvalidChar)\n          else Break;\n\n        B3 := Byte(Src[SrcI]);\n        Inc(SrcI);\n\n        if (B1 and %11110000) = %11100000 then // triple byte UTF-8 char\n        begin\n          if ((B2 and %11000000) = %10000000) and ((B3 and %11000000) = %10000000) then\n          begin\n            W := ((B1 and %00011111) shl 12) or ((B2 and %00111111) shl 6) or (B3 and %00111111);\n            if (W < $D800) or (W > $DFFF) then // to single wide char UTF-16 char\n            begin\n              Dest[DestI] := System.WideChar(W);\n              Inc(DestI);\n            end\n            else // invalid UTF-16 character, assume double byte UTF-8 char\n              if InvalidCharError(2) then Exit(trInvalidChar);\n          end\n          else // invalid character, assume double byte UTF-8 char\n            if InvalidCharError(2) then Exit(trInvalidChar);\n        end\n        else\n        begin\n          if SrcI >= SrcCharCount then\n            if UnfinishedCharError then Exit(trInvalidChar)\n            else Break;\n\n          B4 := Byte(Src[SrcI]);\n          Inc(SrcI);\n\n          if ((B1 and %11111000) = %11110000) and ((B2 and %11000000) = %10000000)\n            and ((B3 and %11000000) = %10000000) and ((B4 and %11000000) = %10000000) then\n          begin // 4 byte UTF-8 char\n            C := ((B1 and %00011111) shl 18) or ((B2 and %00111111) shl 12)\n              or ((B3 and %00111111) shl 6)  or (B4 and %00111111);\n            // to double wide char UTF-16 char\n            Dest[DestI] := System.WideChar($D800 or ((C - $10000) shr 10));\n            Inc(DestI);\n            if DestI >= DestWideCharCount then Break;\n            Dest[DestI] := System.WideChar($DC00 or ((C - $10000) and %0000001111111111));\n            Inc(DestI);\n          end\n          else // invalid character, assume triple byte UTF-8 char\n            if InvalidCharError(3) then Exit(trInvalidChar);\n        end;\n      end;\n    end;\n  end;\n\n  if DestI >= DestWideCharCount then\n  begin\n    DestI := DestWideCharCount - 1;\n    Result := trDestExhausted;\n  end\n  else\n    Result := trNoError;\n\n  Dest[DestI] := #0;\n  ActualWideCharCount := DestI + 1;\nend;\n\nfunction UTF8ToUTF16(const P: PChar; ByteCnt: SizeUInt): UnicodeString;\nvar\n  L: SizeUInt;\nbegin\n  if ByteCnt=0 then\n    exit('');\n  SetLength(Result, ByteCnt);\n  // wide chars of UTF-16 <= bytes of UTF-8 string\n  if ConvertUTF8ToUTF16(PWideChar(Result), Length(Result) + 1, P, ByteCnt,\n    [toInvalidCharToSymbol], L) = trNoError\n  then SetLength(Result, L - 1)\n  else Result := '';\nend;\n\n{------------------------------------------------------------------------------\n  Name:    UTF8ToUTF16\n  Params:  S - Source UTF-8 string\n  Returns: UTF-16 encoded string\n\n  Converts the specified UTF-8 encoded string to UTF-16 encoded (system endian)\n  Avoid copying the result string since on windows a widestring requires a full\n  copy\n ------------------------------------------------------------------------------}\nfunction UTF8ToUTF16(const S: AnsiString): UnicodeString;\nbegin\n  Result:=UTF8ToUTF16(PChar(S),length(S));\nend;\n\n{------------------------------------------------------------------------------\n  Name:    ConvertUTF16ToUTF8\n  Params:  Dest             - Pointer to destination string\n           DestCharCount    - Char count allocated in destination string\n           Src              - Pointer to source string\n           SrcWideCharCount - Wide char count allocated in source string\n           Options          - Conversion options, if none is set, both\n             invalid and unfinished source chars are skipped.\n             See ConvertUTF8ToUTF16 for details.\n\n           ActualCharCount  - Actual char count converted from source\n                            string to destination string\n  Returns: See ConvertUTF8ToUTF16\n\n  Converts the specified UTF-16 encoded string (system endian) to UTF-8 encoded\n ------------------------------------------------------------------------------}\nfunction ConvertUTF16ToUTF8(Dest: PChar; DestCharCount: SizeUInt;\n  Src: PWideChar; SrcWideCharCount: SizeUInt; Options: TConvertOptions;\n  out ActualCharCount: SizeUInt): TConvertResult;\nvar\n  DestI, SrcI: SizeUInt;\n  W1, W2: Word;\n  C: LongWord;\n\n  function UnfinishedCharError: Boolean;\n  begin\n    if toUnfinishedCharToSymbol in Options then\n    begin\n      Dest[DestI] := Char('?');\n      Inc(DestI);\n      Result := False;\n    end\n    else\n      if toUnfinishedCharError in Options then\n      begin\n        ConvertUTF16ToUTF8 := trUnfinishedChar;\n        Result := True;\n      end\n      else Result := False;\n  end;\n\n  function InvalidCharError(Count: SizeUInt): Boolean; inline;\n  begin\n    if not (toInvalidCharError in Options) then\n    begin\n      if toInvalidCharToSymbol in Options then\n      begin\n        Dest[DestI] := Char('?');\n        Inc(DestI);\n      end;\n\n      Dec(SrcI, Count);\n      // skip trailing UTF-16 wide char\n      if (Word(Src[SrcI]) and $FC00) = $DC00 then Inc(SrcI);\n\n      Result := False;\n    end\n    else\n      if toInvalidCharError in Options then\n      begin\n        ConvertUTF16ToUTF8 := trUnfinishedChar;\n        Result := True;\n      end;\n  end;\n\nbegin\n  ActualCharCount := 0;\n\n  if not Assigned(Src) then\n  begin\n    Result := trNullSrc;\n    Exit;\n  end;\n\n  if not Assigned(Dest) then\n  begin\n    Result := trNullDest;\n    Exit;\n  end;\n  SrcI := 0;\n  DestI := 0;\n\n  while (DestI < DestCharCount) and (SrcI < SrcWideCharCount) do\n  begin\n    W1 := Word(Src[SrcI]);\n    Inc(SrcI);\n\n    if (W1 < $D800) or (W1 > $DFFF) then // single wide char UTF-16 char\n    begin\n      if W1 < $0080 then // to single byte UTF-8 char\n      begin\n        Dest[DestI] := Char(W1);\n        Inc(DestI);\n      end\n      else\n        if W1 < $0800 then // to double byte UTF-8 char\n        begin\n          Dest[DestI] := Char(%11000000 or ((W1 and %11111000000) shr 6));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or (W1 and %111111));\n          Inc(DestI);\n        end\n        else\n        begin // to triple byte UTF-8 char\n          Dest[DestI] := Char(%11100000 or ((W1 and %1111000000000000) shr 12));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or ((W1 and %111111000000) shr 6));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or (W1 and %111111));\n          Inc(DestI);\n        end;\n    end\n    else\n    begin\n      if SrcI >= SrcWideCharCount then\n        if UnfinishedCharError then Exit(trInvalidChar)\n        else Break;\n\n      W2 := Word(Src[SrcI]);\n      Inc(SrcI);\n\n      if (W1 and $F800) = $D800 then // double wide char UTF-16 char\n      begin\n        if (W2 and $FC00) = $DC00 then\n        begin\n          C := (W1 - $D800) shl 10 + (W2 - $DC00) + $10000;\n\n          // to 4 byte UTF-8 char\n          Dest[DestI] := Char(%11110000 or (C shr 18));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or ((C and $3F000) shr 12));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or ((C and %111111000000) shr 6));\n          Inc(DestI);\n          if DestI >= DestCharCount then Break;\n          Dest[DestI] := Char(%10000000 or (C and %111111));\n          Inc(DestI);\n        end\n        else // invalid character, assume single wide char UTF-16 char\n          if InvalidCharError(1) then Exit(trInvalidChar);\n      end\n      else // invalid character, assume single wide char UTF-16 char\n        if InvalidCharError(1) then Exit(trInvalidChar);\n    end;\n  end;\n\n  if DestI >= DestCharCount then\n  begin\n    DestI := DestCharCount - 1;\n    Result := trDestExhausted;\n  end\n  else\n    Result := trNoError;\n\n  Dest[DestI] := #0;\n  ActualCharCount := DestI + 1;\nend;\n\nfunction UTF16ToUTF8(const P: PWideChar; WideCnt: SizeUInt): AnsiString;\nvar\n  L: SizeUInt;\nbegin\n  if WideCnt=0 then\n    exit('');\n\n  SetLength(Result, WideCnt * 3);\n  // bytes of UTF-8 <= 3 * wide chars of UTF-16 string\n  // e.g. %11100000 10100000 10000000 (UTF-8) is $0800 (UTF-16)\n  if ConvertUTF16ToUTF8(PChar(Result), Length(Result) + 1, P, WideCnt,\n    [toInvalidCharToSymbol], L) = trNoError then\n  begin\n    SetLength(Result, L - 1);\n  end else\n    Result := '';\nend;\n\n{------------------------------------------------------------------------------\n  Name:    UTF16ToUTF8\n  Params:  S - Source UTF-16 string (system endian)\n  Returns: UTF-8 encoded string\n\n  Converts the specified UTF-16 encoded string (system endian) to UTF-8 encoded\n ------------------------------------------------------------------------------}\nfunction UTF16ToUTF8(const S: UnicodeString): AnsiString;\nbegin\n  Result := UTF16ToUTF8(PWideChar(S),length(S));\nend;\n\n{end of copy from LazUTF8\n ------------------------------------------------------------------------------}\n\n{$ENDIF}\n\nfunction UTF8ReverseString(const s: string): string;\nvar\n  pSrc,pDest,pEnd: PChar;\n  charLen: Integer;\nbegin\n  if s = '' then\n  begin\n    result := '';\n    exit;\n  end;\n  setlength(result, length(s));\n  pDest := @result[1] + length(result);\n  pSrc := @s[1];\n  pEnd := pSrc+length(s);\n  while pSrc < pEnd do\n  begin\n    charLen := UTF8CharacterLength(pSrc);\n    if (charLen = 0) or (pSrc+charLen > pEnd) then break;\n    dec(pDest, charLen);\n    move(pSrc^, pDest^, charLen);\n    inc(pSrc, charLen);\n  end;\nend;\n\nfunction UTF8CodepointToUnicode(p: PChar; ACodePointLen: integer): LongWord;\nbegin\n  case ACodePointLen of\n    0: result := 0;\n    1: result := ord(p^);\n    2: result := ((ord(p^) and %00011111) shl 6) or (ord(p[1]) and %00111111);\n    3: result := ((ord(p^) and %00011111) shl 12) or ((ord(p[1]) and %00111111) shl 6)\n                or (ord(p[2]) and %00111111);\n    4: result := ((ord(p^) and %00001111) shl 18) or ((ord(p[1]) and %00111111) shl 12)\n                or ((ord(p[2]) and %00111111) shl 6) or (ord(p[3]) and %00111111);\n    else\n      raise exception.Create('Invalid code point length');\n  end;\nend;\n\nfunction UTF8CharStart(UTF8Str: PChar; Len, CharIndex: PtrInt): PChar;\nvar\n  CharLen: LongInt;\nbegin\n  Result:=UTF8Str;\n  if Result<>nil then begin\n    while (CharIndex>0) and (Len>0) do begin\n      CharLen:=UTF8CharacterLength(Result);\n      dec(Len,CharLen);\n      dec(CharIndex);\n      inc(Result,CharLen);\n    end;\n    if (CharIndex<>0) or (Len<0) then\n      Result:=nil;\n  end;\nend;\n\nfunction GetBidiClassUTF8(P: PChar): TUnicodeBidiClass;\nbegin\n  result := GetUnicodeBidiClass(UTF8CodepointToUnicode(P, UTF8CharacterLength(p)));\nend;\n\nfunction GetFirstStrongBidiClassUTF8(const sUTF8: string): TUnicodeBidiClass;\nvar\n  p,pEnd: PChar;\n  charLen: Integer;\n  u: LongWord;\n  curBidi: TUnicodeBidiClass;\n  isolateNesting: integer;\nbegin\n  if sUTF8 = '' then exit(ubcUnknown);\n  p := @sUTF8[1];\n  pEnd := p + length(sUTF8);\n  isolateNesting:= 0;\n  while p < pEnd do\n  begin\n    charLen := UTF8CharacterLength(p);\n    if (charLen = 0) or (p+charLen > pEnd) then break;\n    u := UTF8CodepointToUnicode(p, charLen);\n    case u of\n      UNICODE_POP_DIRECTIONAL_ISOLATE: if isolateNesting > 0 then dec(isolateNesting);\n      UNICODE_LEFT_TO_RIGHT_OVERRIDE: exit(ubcLeftToRight);\n      UNICODE_RIGHT_TO_LEFT_OVERRIDE: exit(ubcRightToLeft);\n    end;\n    curBidi := GetUnicodeBidiClass(u);\n    if isolateNesting = 0 then\n    begin\n      if curBidi in[ubcLeftToRight,ubcRightToLeft,ubcArabicLetter] then\n        exit(curBidi);\n    end;\n    case u of\n      UNICODE_FIRST_STRONG_ISOLATE, UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE: inc(isolateNesting);\n    end;\n    if curBidi = ubcParagraphSeparator then isolateNesting:= 0;\n    inc(p,charLen);\n  end;\n  exit(ubcUnknown);\nend;\n\nfunction GetLastStrongBidiClassUTF8(const sUTF8: string): TUnicodeBidiClass;\nvar\n  p,pEnd: PChar;\n  charLen: Integer;\n  u: LongWord;\n  curBidi: TUnicodeBidiClass;\n  isolateNesting: integer;\nbegin\n  if sUTF8 = '' then exit(ubcUnknown);\n  p := @sUTF8[1];\n  pEnd := p + length(sUTF8);\n  isolateNesting:= 0;\n  result := ubcUnknown;\n  while p < pEnd do\n  begin\n    charLen := UTF8CharacterLength(p);\n    if (charLen = 0) or (p+charLen > pEnd) then break;\n    u := UTF8CodepointToUnicode(p, charLen);\n    case u of\n      UNICODE_POP_DIRECTIONAL_ISOLATE: if isolateNesting > 0 then dec(isolateNesting);\n    end;\n    curBidi := GetUnicodeBidiClass(u);\n    if isolateNesting = 0 then\n    begin\n      if curBidi in[ubcLeftToRight,ubcRightToLeft,ubcArabicLetter] then\n        result := curBidi;\n    end;\n    case u of\n      UNICODE_FIRST_STRONG_ISOLATE, UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE: inc(isolateNesting);\n    end;\n    if curBidi = ubcParagraphSeparator then isolateNesting:= 0;\n    inc(p,charLen);\n  end;\nend;\n\nfunction IsRightToLeftUTF8(const sUTF8: string): boolean;\nbegin\n  result := GetFirstStrongBidiClassUTF8(sUTF8) in[ubcRightToLeft,ubcArabicLetter];\nend;\n\nfunction IsZeroWidthUTF8(const sUTF8: string): boolean;\nvar\n  p,pEnd: PChar;\n  charLen: Integer;\n  u: LongWord;\nbegin\n  if sUTF8 = '' then exit(true);\n  p := @sUTF8[1];\n  pEnd := p + length(sUTF8);\n  while p < pEnd do\n  begin\n    charLen := UTF8CharacterLength(p);\n    if (charLen = 0) or (p+charLen > pEnd) then break;\n    u := UTF8CodepointToUnicode(p, charLen);\n    if not IsZeroWidthUnicode(u) then exit(false);\n    inc(p,charLen);\n  end;\n  exit(true);\nend;\n\nfunction AddParagraphBidiUTF8(s: string; ARightToLeft: boolean): string;\nvar\n  i,curParaStart: Integer;\n\n  procedure CheckParagraph;\n  var\n    para,newPara: string;\n    paraRTL: boolean;\n  begin\n    if i > curParaStart then\n    begin\n      para := copy(s,curParaStart,i-curParaStart);\n      paraRTL := GetFirstStrongBidiClassUTF8(para) in[ubcRightToLeft,ubcArabicLetter];\n      //detected paragraph does not match overall RTL option\n      if paraRTL <> ARightToLeft then\n      begin\n        if not paraRTL then\n          newPara := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_MARK)+para+UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_MARK)\n        else\n          newPara := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_MARK)+para+UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_MARK);\n        inc(i, length(newPara)-length(para));\n        delete(s, curParaStart, length(para));\n        insert(newPara, s, curParaStart);\n      end;\n    end;\n  end;\n\nvar\n  charLen: integer;\n  u: LongWord;\n\nbegin\n  i := 1;\n  curParaStart := 1;\n  while i <= length(s) do\n  begin\n    charLen := UTF8CharacterLength(@s[i]);\n    u := UTF8CodepointToUnicode(@s[i], charLen);\n    if IsUnicodeParagraphSeparator(u) then\n    begin\n      CheckParagraph;\n      //skip end of line\n      inc(i);\n      //skip second CRLF\n      if ((u = 10) or (u = 13)) and (i <= length(s)) and (s[i] in[#13,#10]) and (s[i]<>s[i-1]) then inc(i);\n      curParaStart := i;\n    end else\n      inc(i);\n  end;\n  CheckParagraph;\n  result := s;\nend;\n\nprocedure UTF8ToUnicodeArray(const sUTF8: string; out u: TUnicodeArray; out ofs: TIntegerArray);\nvar\n  index,len,charLen: integer;\n  p,pStart,pEnd: PChar;\nbegin\n  if sUTF8 = '' then\n  begin\n    u := nil;\n    ofs := nil;\n  end\n  else\n  begin\n    pStart := @sUTF8[1];\n    pEnd := pStart + length(sUTF8);\n    p := pStart;\n    len := 0;\n    while p < pEnd do\n    begin\n      charLen := UTF8CharacterLength(p);\n      inc(len);\n      inc(p,charLen);\n    end;\n\n    setlength(u, len);\n    setlength(ofs, len);\n    p := pStart;\n    index := 0;\n    while p < pEnd do\n    begin\n      charLen := UTF8CharacterLength(p);\n      u[index] := UTF8CodepointToUnicode(p, charLen);\n      ofs[index] := p - pStart;\n      inc(index);\n      inc(p,charLen);\n    end;\n  end;\nend;\n\nfunction AnalyzeBidiUTF8(const sUTF8: string; ABidiMode: TFontBidiMode): TBidiUTF8Array;\nvar\n  u: TUnicodeArray;\n  ofs: TIntegerArray;\n  a: TUnicodeBidiArray;\n  i: Integer;\nbegin\n  if sUTF8 = '' then\n    result := nil\n  else\n  begin\n    UTF8ToUnicodeArray(sUTF8, u, ofs);\n    a := AnalyzeBidiUnicode(@u[0], length(u), ABidiMode);\n    setlength(result, length(u));\n    for i := 0 to high(result) do\n    begin\n      result[i].Offset:= ofs[i];\n      result[i].BidiInfo := a[i];\n    end;\n  end;\nend;\n\nfunction AnalyzeBidiUTF8(const sUTF8: string; ARightToLeft: boolean): TBidiUTF8Array;\nbegin\n  if ARightToLeft then\n    result := AnalyzeBidiUTF8(sUTF8, fbmRightToLeft)\n    else result := AnalyzeBidiUTF8(sUTF8, fbmLeftToRight);\nend;\n\nfunction AnalyzeBidiUTF8(const sUTF8: string): TBidiUTF8Array;\nbegin\n  result := AnalyzeBidiUTF8(sUTF8, fbmAuto)\nend;\n\nfunction GetUTF8DisplayOrder(const ABidi: TBidiUTF8Array): TUnicodeDisplayOrder;\nbegin\n  if length(ABidi) = 0 then\n    result := nil\n  else\n    result := GetUnicodeDisplayOrder(@ABidi[0].BidiInfo, sizeof(TBidiUTF8Info), length(ABidi));\nend;\n\nfunction ContainsBidiIsolateOrFormattingUTF8(const sUTF8: string): boolean;\nvar\n  p,pEnd: PChar;\n  charLen: Integer;\n  u: LongWord;\nbegin\n  if sUTF8 = '' then exit(false);\n  p := @sUTF8[1];\n  pEnd := p + length(sUTF8);\n  while p < pEnd do\n  begin\n    charLen := UTF8CharacterLength(p);\n    if (charLen = 0) or (p+charLen > pEnd) then break;\n    u := UTF8CodepointToUnicode(p, charLen);\n    case u of\n      UNICODE_LEFT_TO_RIGHT_ISOLATE, UNICODE_RIGHT_TO_LEFT_ISOLATE, UNICODE_FIRST_STRONG_ISOLATE,\n      UNICODE_LEFT_TO_RIGHT_EMBEDDING, UNICODE_RIGHT_TO_LEFT_EMBEDDING,\n      UNICODE_LEFT_TO_RIGHT_OVERRIDE, UNICODE_RIGHT_TO_LEFT_OVERRIDE: exit(true);\n    end;\n    inc(p,charLen);\n  end;\n  exit(false);\nend;\n\nfunction UTF8OverrideDirection(const sUTF8: string; ARightToLeft: boolean): string;\nbegin\n  if ARightToLeft then\n    result := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_OVERRIDE) + sUTF8 + UnicodeCharToUTF8(UNICODE_POP_DIRECTIONAL_FORMATTING)\n  else\n    result := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_OVERRIDE) + sUTF8 + UnicodeCharToUTF8(UNICODE_POP_DIRECTIONAL_FORMATTING);\nend;\n\nfunction UTF8EmbedDirection(const sUTF8: string; ARightToLeft: boolean): string;\nbegin\n  if ARightToLeft then\n    result := UnicodeCharToUTF8(UNICODE_RIGHT_TO_LEFT_EMBEDDING) + sUTF8 + UnicodeCharToUTF8(UNICODE_POP_DIRECTIONAL_FORMATTING)\n  else\n    result := UnicodeCharToUTF8(UNICODE_LEFT_TO_RIGHT_EMBEDDING) + sUTF8 + UnicodeCharToUTF8(UNICODE_POP_DIRECTIONAL_FORMATTING);\nend;\n\nfunction UTF8Ligature(const sUTF8: string; ARightToLeft: boolean;\n  ALigatureLeft, ALigatureRight: boolean): string;\nbegin\n  result := sUTF8;\n  if (ALigatureRight and ARightToLeft) or\n     (ALigatureLeft and not ARightToLeft) then\n     result := UTF8_ZERO_WIDTH_JOINER + result;\n  if (ALigatureLeft and ARightToLeft) or\n     (ALigatureRight and not ARightToLeft) then\n     result := result + UTF8_ZERO_WIDTH_JOINER;\nend;\n\n//little endian stream functions\nfunction LEReadInt64(Stream: TStream): int64;\nbegin\n  Result := 0;\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nprocedure LEWriteInt64(Stream: TStream; AValue: int64);\nbegin\n  AValue := NtoLE(AValue);\n  stream.Write(AValue, sizeof(AValue));\nend;\n\nfunction LEReadLongint(Stream: TStream): longint;\nbegin\n  Result := 0;\n  stream.Read(Result, sizeof(Result));\n  Result := LEtoN(Result);\nend;\n\nprocedure LEWriteLongint(Stream: TStream; AValue: LongInt);\nbegin\n  AValue := NtoLE(AValue);\n  stream.Write(AValue, sizeof(AValue));\nend;\n\nfunction LEReadByte(Stream: TStream): byte;\nbegin\n  Result := 0;\n  stream.Read(Result, sizeof(Result));\nend;\n\nprocedure LEWriteByte(Stream: TStream; AValue: Byte);\nbegin\n  stream.Write(AValue, sizeof(AValue));\nend;\n\nfunction LEReadSingle(Stream: TStream): single;\nvar\n  ResultAsDWord : LongWord absolute result;\nbegin\n  ResultAsDWord := 0;\n  stream.Read(ResultAsDWord, sizeof(Result));\n  ResultAsDWord := LEtoN(ResultAsDWord);\nend;\n\nprocedure LEWriteSingle(Stream: TStream; AValue: single);\nvar\n  ValueAsDWord : LongWord absolute AValue;\nbegin\n  ValueAsDWord := NtoLE(ValueAsDWord);\n  stream.Write(ValueAsDWord, sizeof(AValue));\nend;\n\n{ TGlyphUtf8 }\n\nfunction TGlyphUtf8.GetEmpty: boolean;\nbegin\n  result := GlyphUtf8 = '';\nend;\n\n{ TGlyphCursorUtf8 }\n\nclass function TGlyphCursorUtf8.New(const textUTF8: string; ABidiMode: TFontBidiMode): TGlyphCursorUtf8;\nbegin\n  result.sUTF8 := textUTF8;\n  result.bidiArray := AnalyzeBidiUTF8(result.sUTF8, ABidiMode);\n  result.displayOrder := GetUTF8DisplayOrder(result.bidiArray);\n  result.Rewind;\nend;\n\nfunction TGlyphCursorUtf8.GetNextGlyph: TGlyphUtf8;\nvar\n  rtlScript, ligatureLeft, ligatureRight: Boolean;\n  u: LongWord;\n  bracketInfo: TUnicodeBracketInfo;\nbegin\n  if EndOfString then\n  begin\n    result.GlyphUtf8:= '';\n    result.RightToLeft:= false;\n    result.Mirrored:= false;\n    result.MirroredGlyphUtf8:= '';\n    exit;\n  end;\n  PeekMultichar;\n  NextMultichar;\n  result.GlyphUtf8 := currentChar;\n  result.RightToLeft := currentBidiInfo.IsRightToLeft;\n  result.Mirrored := currentBidiInfo.IsMirrored;\n  result.MirroredGlyphUtf8:= '';\n  result.ByteOffset := currentOffset;\n  result.ByteSize := length(currentChar);\n  result.Merged:= false;\n  if result.Mirrored then\n  begin\n    u := UTF8CodepointToUnicode(pchar(currentChar),\n      min(UTF8CharacterLength(pchar(currentChar)), length(currentChar)));\n    bracketInfo := GetUnicodeBracketInfo(u);\n    if bracketInfo.OpeningBracket = u then\n      result.MirroredGlyphUtf8 := UnicodeCharToUTF8(bracketInfo.ClosingBracket)\n    else if bracketInfo.ClosingBracket = u then\n      result.MirroredGlyphUtf8 := UnicodeCharToUTF8(bracketInfo.OpeningBracket);\n  end else\n  begin\n    rtlScript := currentBidiInfo.IsRightToLeftScript;\n    ligatureRight := currentBidiInfo.HasLigatureRight;\n    ligatureLeft := currentBidiInfo.HasLigatureLeft;\n    if (currentChar.StartsWith(UTF8_ARABIC_ALEPH) or\n       currentChar.StartsWith(UTF8_ARABIC_ALEPH_HAMZA_BELOW) or\n       currentChar.StartsWith(UTF8_ARABIC_ALEPH_HAMZA_ABOVE) or\n       currentChar.StartsWith(UTF8_ARABIC_ALEPH_MADDA_ABOVE)) and\n      not EndOfString then\n    begin\n      PeekMultichar;\n      if currentChar.StartsWith(UTF8_ARABIC_LAM) then\n      begin\n        result.GlyphUtf8 := currentChar + result.GlyphUtf8;\n        result.ByteOffset:= Min(result.ByteOffset, currentOffset);\n        inc(result.ByteSize, length(currentChar));\n        result.Merged := true;\n        ligatureRight := currentBidiInfo.HasLigatureRight;\n        NextMultichar;\n      end;\n    end;\n    result.GlyphUtf8 := UTF8Ligature(result.GlyphUtf8, rtlScript, ligatureLeft, ligatureRight);\n  end;\nend;\n\nprocedure TGlyphCursorUtf8.Rewind;\nbegin\n  displayIndex := 0;\n  while (displayIndex < length(displayOrder))\n    and not bidiArray[displayOrder[displayIndex]].BidiInfo.IsMulticharStart do\n      inc(displayIndex);\nend;\n\nprocedure TGlyphCursorUtf8.NextMultichar;\nbegin\n  inc(displayIndex);\n  while (displayIndex < length(displayOrder))\n    and not bidiArray[displayOrder[displayIndex]].BidiInfo.IsMulticharStart do\n      inc(displayIndex);\nend;\n\nprocedure TGlyphCursorUtf8.PeekMultichar;\nvar\n  startIndex, nextIndex, charLen, startOffset: Integer;\nbegin\n  startIndex := displayOrder[displayIndex];\n  startOffset := bidiArray[startIndex].Offset;\n  currentBidiInfo := bidiArray[startIndex].BidiInfo;\n  nextIndex := startIndex+1;\n  while (nextIndex < length(bidiArray))\n    and not bidiArray[nextIndex].BidiInfo.IsMulticharStart do\n      inc(nextIndex);\n  if nextIndex >= length(bidiArray) then\n    charLen := length(sUTF8) - startOffset\n  else\n    charLen := bidiArray[nextIndex].Offset - startOffset;\n  setlength(currentChar, charLen);\n  if charLen > 0 then move(sUTF8[startOffset+1], currentChar[1], charLen);\n  currentOffset := startOffset;\nend;\n\nfunction TGlyphCursorUtf8.EndOfString: boolean;\nbegin\n  result := displayIndex >= length(displayOrder);\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgravectorize.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(This unit provides vectorizers for black'n'white images and text.)\n\n  The TBGRAVectorizedFontRenderer class can be provided as a renderer to TBGRABitmap.\n\n  **Font rendering units** : BGRAText, BGRATextFX, BGRAVectorize, BGRAFreeType\n}\nunit BGRAVectorize;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAGraphics, BGRABitmapTypes, BGRATypewriter,\n  BGRATransform, BGRACanvas2D, BGRAText;\n\n{ Vectorize a monochrome bitmap (actually checking the green channel) }\nfunction VectorizeMonochrome(ASource: TBGRACustomBitmap; AZoom: single; APixelCenteredCoordinates: boolean;\n  AWhiteBackground: boolean = true; ADiagonalFillPercent: single = 66; AIntermediateDiagonals: boolean = true): ArrayOfTPointF;\n{ Vectorize a rectangular area in a monochrome bitmap (actually checking the green channel) }\nfunction VectorizeMonochrome(ASource: TBGRACustomBitmap; ARect: TRect; AZoom: single; APixelCenteredCoordinates: boolean;\n  AWhiteBackground: boolean = true; ADiagonalFillPercent: single = 66; AIntermediateDiagonals: boolean = true): ArrayOfTPointF;\n\ntype\n  TBGRAVectorizedFont = class;\n\n  { @abstract(Font renderer using vectorized fonts and with effects.)\n\n    TBGRAVectorizedFontRenderer class works like other font renderers, i.e., it can\n    be assigned to the FontRenderer property. You can use it in two different modes :\n    - if you supply a directory, it will look for *.glyphs files in it to load fonts\n    - if you don't supply a directory, fonts will be vectorized from the system\n\n    If provides effect like TBGRATextEffectFontRenderer (outline and shadow) but that difference\n    is that the font is always vectorized whereas TBGRATextEffectFontRenderer will use bitmap\n    rendering when possible.\n  }\n  TBGRAVectorizedFontRenderer = class(TBGRACustomFontRenderer)\n  protected\n    FVectorizedFontArray: array of record\n        FontName: string;\n        FontStyle: TFontStyles;\n        VectorizedFont: TBGRAVectorizedFont;\n      end;\n    FVectorizedFont: TBGRAVectorizedFont;\n    FCanvas2D: TBGRACanvas2D;\n    FDirectoryUTF8: string;\n    function OutlineActuallyVisible: boolean;\n    procedure UpdateFont;\n    function GetCanvas2D(ASurface: TBGRACustomBitmap): TBGRACanvas2D;\n    procedure InternalTextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string; style: TTextStyle; c: TBGRAPixel; texture: IBGRAScanner);\n    procedure InternalCopyTextPathTo(ADest: IBGRAPath; x, y: single; s: string; align: TAlignment; ABidiMode: TFontBidiMode);\n    procedure InternalTextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; c: TBGRAPixel; texture: IBGRAScanner; align: TAlignment; ABidiMode: TFontBidiMode);\n    procedure Init;\n  public\n    MinFontResolution, MaxFontResolution: integer;\n    QuadraticCurves: boolean;\n\n    OutlineVisible: boolean;\n    OutlineWidth: single;\n    OutlineColor: TBGRAPixel;\n    OutlineTexture: IBGRAScanner;\n    OuterOutlineOnly: boolean;\n    OutlineJoin: TPenJoinStyle;\n\n    ShadowVisible: boolean;\n    ShadowColor: TBGRAPixel;\n    ShadowRadius: integer;\n    ShadowOffset: TPoint;\n\n    constructor Create; overload;\n    constructor Create(ADirectoryUTF8: string); overload;\n    function GetFontPixelMetric: TFontPixelMetric; override;\n    function GetFontPixelMetricF: TFontPixelMetricF; override;\n    function FontExists(AName: string): boolean; override;\n    function TextVisible(const AColor: TBGRAPixel): boolean; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOutAngle(ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; texture: IBGRAScanner; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; texture: IBGRAScanner; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; c: TBGRAPixel; align: TAlignment); overload; override;\n    procedure TextOut(ADest: TBGRACustomBitmap; x, y: single; s: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; s: string; style: TTextStyle; c: TBGRAPixel); overload; override;\n    procedure TextRect(ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; s: string; style: TTextStyle; texture: IBGRAScanner); overload; override;\n    procedure CopyTextPathTo(ADest: IBGRAPath; x, y: single; s: string; align: TAlignment); override;\n    procedure CopyTextPathTo(ADest: IBGRAPath; x, y: single; s: string; align: TAlignment; ARightToLeft: boolean); override;\n    function HandlesTextPath: boolean; override;\n    function TextSize(sUTF8: string): TSize; overload; override;\n    function TextSizeF(sUTF8: string): TPointF; overload; override;\n    function TextSize(sUTF8: string; AMaxWidth: integer; {%H-}ARightToLeft: boolean): TSize; overload; override;\n    function TextSizeF(sUTF8: string; AMaxWidthF: single; {%H-}ARightToLeft: boolean): TPointF; overload; override;\n    function TextFitInfo(sUTF8: string; AMaxWidth: integer): integer; override;\n    function TextFitInfoF(sUTF8: string; AMaxWidthF: single): integer; override;\n    destructor Destroy; override;\n  end;\n\n  { Size of glyphs in text }\n  TGlyphSizes = array of record\n    Text, Glyph: String;\n    Width,Height: single;\n  end;\n\n  { Header of a serialized vectorized font }\n  TBGRAVectorizedFontHeader = record\n    Name: string;\n    Style: TFontStyles;\n    EmHeightRatio: single;\n    Resolution: integer;\n    PixelMetric: TFontPixelMetric;\n  end;\n  { General information on glyph stream }\n  TBGRAGlyphsInfo = record\n    Name: string;\n    Style: TFontStyles;\n    NbGlyphs: integer;\n  end;\n\n  { Allows to vectorize and to load vectorized font and draw them }\n  TBGRAVectorizedFont = class(TBGRACustomTypeWriter)\n  private\n    FName : string;\n    FStyle: TFontStyles;\n    FResolution: integer;\n    FVectorizeLCL: boolean;\n    FBuffer: TBGRACustomBitmap;\n    FFullHeight: single;\n    FFontMatrix: TAffineMatrix;\n    FOrientation: single;\n    FQuadraticCurves: boolean;\n    FItalicSlope: single;\n    FWordBreakHandler: TWordBreakHandler;\n    FDirectory: string;\n    FDirectoryContent: array of record\n      Filename: string;\n      FontName: string;\n      FontStyle: TFontStyles;\n    end;\n    FFontEmHeightRatioComputed: boolean;\n    FFontEmHeightRatio: single;\n    FFontPixelMetric: TFontPixelMetric;\n    FFontPixelMetricComputed: boolean;\n    FFontFound: boolean;\n    function GetEmHeight: single;\n    function GetFontPixelMetric: TFontPixelMetric;\n    function GetLCLHeight: single;\n    procedure SetEmHeight(AValue: single);\n    procedure SetItalicSlope(AValue: single);\n    procedure SetLCLHeight(AValue: single);\n    procedure SetOrientation(AValue: single);\n    procedure SetQuadraticCurves(AValue: boolean);\n    procedure SetResolution(AValue: integer);\n    procedure SetFontMatrix(AValue: TAffineMatrix);\n    procedure SetFullHeight(AValue: single);\n    procedure SetName(AValue: string);\n    procedure SetStyle(AValue: TFontStyles);\n    function GetFontEmHeightRatio: single;\n    procedure SetVectorizeLCL(AValue: boolean);\n    procedure GlyphCallbackForGlyphSizes(ATextUTF8: string; AGlyph: TBGRAGlyph;\n      {%H-}AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean);\n    procedure UpdateQuadraticCallback({%H-}ATextUTF8: string; AGlyph: TBGRAGlyph;\n      {%H-}AFlags: TBrowseGlyphCallbackFlags; {%H-}AData: Pointer; out AContinue: boolean);\n  protected\n    procedure UpdateFont;\n    procedure UpdateMatrix;\n    procedure NeedBuffer;\n    function GetGlyph(AIdentifier: string): TBGRAGlyph; override;\n    procedure DefaultWordBreakHandler(var ABefore, AAfter: string);\n    procedure Init(AVectorizeLCL: boolean);\n    function CustomHeaderSize: integer; override;\n    procedure WriteCustomHeader(AStream: TStream); override;\n    procedure ReadAdditionalHeader(AStream: TStream); override;\n    function ReadVectorizedFontHeader(AStream: TStream): TBGRAVectorizedFontHeader;\n    function HeaderName: string; override;\n    procedure SetDirectory(const AValue: string);\n    function ComputeKerning(AIdLeft, AIdRight: string): single; override;\n  public\n    UnderlineDecoration,StrikeOutDecoration: boolean;\n    constructor Create; overload;\n    constructor Create(AVectorizeLCL: boolean); overload;\n    destructor Destroy; override;\n    function GetGlyphSize(AIdentifier:string): TPointF;\n    function GetTextGlyphSizes(ATextUTF8:string): TGlyphSizes;\n    function GetTextSize(ATextUTF8:string): TPointF;\n    function TextFitInfo(ATextUTF8: string; AMaxWidth: single): integer;\n    procedure SplitText(var ATextUTF8: string; AMaxWidth: single; out ARemainsUTF8: string);\n    procedure DrawText(ADest: TBGRACanvas2D; ATextUTF8: string; X, Y: Single; AAlign: TBGRATypeWriterAlignment=twaTopLeft); override;\n    procedure CopyTextPathTo(ADest: IBGRAPath; ATextUTF8: string; X, Y: Single;\n      AAlign: TBGRATypeWriterAlignment=twaTopLeft); override;\n    procedure DrawTextWordBreak(ADest: TBGRACanvas2D; ATextUTF8: string; X, Y, MaxWidth: Single; AAlign: TBGRATypeWriterAlignment=twaTopLeft);\n    procedure DrawTextRect(ADest: TBGRACanvas2D; ATextUTF8: string; X1,Y1,X2,Y2: Single; AAlign: TBGRATypeWriterAlignment=twaTopLeft); overload;\n    procedure DrawTextRect(ADest: TBGRACanvas2D; ATextUTF8: string; ATopLeft,ABottomRight: TPointF; AAlign: TBGRATypeWriterAlignment=twaTopLeft); overload;\n    function GetTextWordBreakGlyphBoxes(ATextUTF8: string; X,Y, MaxWidth: Single; AAlign: TBGRATypeWriterAlignment = twaTopLeft): TGlyphBoxes;\n    function GetTextRectGlyphBoxes(ATextUTF8: string; X1,Y1,X2,Y2: Single; AAlign: TBGRATypeWriterAlignment=twaTopLeft): TGlyphBoxes; overload;\n    function GetTextRectGlyphBoxes(ATextUTF8: string; ATopLeft,ABottomRight: TPointF; AAlign: TBGRATypeWriterAlignment=twaTopLeft): TGlyphBoxes; overload;\n    procedure UpdateDirectory;\n    function LoadGlyphsInfo(AFilenameUTF8: string): TBGRAGlyphsInfo;\n\n    property Resolution: integer read FResolution write SetResolution;\n    property Style: TFontStyles read FStyle write SetStyle;\n    property Name: string read FName write SetName;\n    property LCLHeight: single read GetLCLHeight write SetLCLHeight;\n    property EmHeight: single read GetEmHeight write SetEmHeight;\n    property FullHeight: single read FFullHeight write SetFullHeight;\n    property FontMatrix: TAffineMatrix read FFontMatrix write SetFontMatrix;\n    property Orientation: single read FOrientation write SetOrientation;\n    property QuadraticCurves: boolean read FQuadraticCurves write SetQuadraticCurves;\n    property ItalicSlope: single read FItalicSlope write SetItalicSlope;\n    property OnWordBreak: TWordBreakHandler read FWordBreakHandler write FWordBreakHandler;\n    property Directory: string read FDirectory write SetDirectory;\n    property FontEmHeightRatio: single read GetFontEmHeightRatio;\n    property FontPixelMetric: TFontPixelMetric read GetFontPixelMetric;\n    property FontFound: boolean read FFontFound;\n    property VectorizeLCL: boolean read FVectorizeLCL write SetVectorizeLCL;\n  end;\n\nimplementation\n\nuses BGRAUTF8{$IFDEF LCL}, Forms{$ENDIF};\n\ntype\n  TGlyphSizesCallbackData = record\n    Sizes: TGlyphSizes;\n    Count: integer;\n  end;\n\nfunction VectorizeMonochrome(ASource: TBGRACustomBitmap; ARect: TRect; AZoom: single; APixelCenteredCoordinates: boolean;\n  AWhiteBackground: boolean; ADiagonalFillPercent: single; AIntermediateDiagonals: boolean): ArrayOfTPointF;\nconst unitShift = 6;\n      iHalf = 1 shl (unitShift-1);\n      iUnit = 1 shl unitShift;\nvar\n  iDiag,iOut: integer;\n  n: integer;\n  factor: single;\n  offset: single;\n  p,pprev,pnext : PBGRAPixel;\n  x,y,ix,iy: integer;\n  points: array of record\n            coord: tpoint;\n            prev,next: integer;\n            drawn,{shouldRemove,}removed,done: boolean;\n          end;\n  nbPoints:integer;\n  PointsPreviousLineStart,PointsCurrentLineStart: integer;\n  cur: packed array[1..9] of boolean;\n  ortho: array of array of boolean;\n\n  polygonF: array of TPointF;\n\n  function CheckPixel(const APixel: TBGRAPixel): boolean; inline;\n  begin\n    result := (APixel.green <= 128) xor not AWhiteBackground;\n  end;\n\n  function AddPoint(x,y,APrev,ANext: integer): integer;\n  begin\n    if nbpoints = length(points) then\n      setlength(points, nbpoints*2+1);\n    result := nbpoints;\n    with points[result] do\n    begin\n      coord := point(x,y);\n      prev := APrev;\n      next := ANext;\n      drawn := false;\n      removed := false;\n//      shouldRemove := false;\n    end;\n    inc(nbpoints);\n  end;\n\n  function InsertPoint(x,y,APrev,ANext: integer): integer;\n  begin\n    if nbpoints = length(points) then\n      setlength(points, nbpoints*2+1);\n    result := nbpoints;\n    with points[result] do\n    begin\n      coord := point(x,y);\n      prev := APrev;\n      next := ANext;\n      drawn := false;\n      removed := false;\n//      shouldRemove := false;\n    end;\n    if APrev<>-1 then points[APrev].next := result;\n    if ANext<>-1 then points[ANext].prev := result;\n    inc(nbpoints);\n  end;\n\n  procedure RemovePoint(idx: integer);\n  begin\n    points[idx].removed:= true;\n    if points[idx].prev <> -1 then points[points[idx].prev].next := points[idx].next;\n    if points[idx].next <> -1 then points[points[idx].next].prev := points[idx].prev;\n  end;\n\n  procedure AddLine(x1,y1,x2,y2: integer); overload;\n  var i,j,k: integer;\n  begin\n    for i := PointsPreviousLineStart to nbpoints-1 do\n      if (points[i].coord.x = x2) and (points[i].coord.y = y2) and (points[i].prev = -1) then\n      begin\n        for j := i+1 to nbpoints-1 do\n          if (points[j].coord.x = x1) and (points[j].coord.y = y1) and (points[j].next = -1) then\n          begin\n            points[j].next := i;\n            points[i].prev := j;\n            exit;\n          end;\n        k := addpoint(x1,y1,-1,i);\n        points[i].prev := k;\n        exit;\n      end else\n      if (points[i].coord.x = x1) and (points[i].coord.y = y1) and (points[i].next = -1) then\n      begin\n        for j := i+1 to nbpoints-1 do\n          if (points[j].coord.x = x2) and (points[j].coord.y = y2) and (points[j].prev = -1) then\n          begin\n            points[j].prev := i;\n            points[i].next := j;\n            exit;\n          end;\n        k := addpoint(x2,y2,i,-1);\n        points[i].next := k;\n        exit;\n      end;\n    k := addpoint(x1,y1,-1,-1);\n    points[k].next := addpoint(x2,y2,k,-1);\n  end;\n  procedure AddLine(x1,y1,x2,y2,x3,y3: integer); overload;\n  begin\n    AddLine(x1,y1,x2,y2);\n    AddLine(x2,y2,x3,y3);\n  end;\n  procedure AddLine(x1,y1,x2,y2,x3,y3,x4,y4: integer); overload;\n  begin\n    AddLine(x1,y1,x2,y2);\n    AddLine(x2,y2,x3,y3);\n    AddLine(x3,y3,x4,y4);\n  end;\n  procedure AddLine(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5: integer); overload;\n  begin\n    AddLine(x1,y1,x2,y2);\n    AddLine(x2,y2,x3,y3);\n    AddLine(x3,y3,x4,y4);\n    AddLine(x4,y4,x5,y5);\n  end;\n\n  procedure AddPolygon(nStart: integer);\n\n    procedure Rewind(out cycle: boolean);\n    var cur: integer;\n    begin\n      cur := nStart;\n      cycle := false;\n      while (points[cur].prev <> -1) do\n      begin\n        cur := points[cur].prev;\n        if cur = nStart then\n        begin\n          cycle := true; //identify cycle\n          break;\n        end;\n      end;\n      nStart := cur;\n    end;\n\n    function aligned(start1,end1,start2,end2: integer): boolean;\n    var\n      u,v: TPointF;\n      lu,lv: single;\n    begin\n      if (start1=-1) or (end1=-1) or (start2=-1) or (end2=-1) then\n      begin\n        result :=false;\n        exit;\n      end;\n      u := pointF(points[end1].coord.x - points[start1].coord.x, points[end1].coord.y - points[start1].coord.y);\n      lu := VectLen(u);\n      if lu <> 0 then u.Scale(1/lu);\n      v := pointF(points[end2].coord.x - points[start2].coord.x, points[end2].coord.y - points[start2].coord.y);\n      lv := VectLen(v);\n      if lv <> 0 then v.Scale(1/lv);\n\n      result := u**v > 0.999;\n    end;\n\n    function angle45(prev,cur,next: integer): boolean;\n    var\n      u,v: TPointF;\n      lu,lv,dp: single;\n    begin\n      if (prev=-1) or (cur=-1) or (next=-1) then\n      begin\n        result :=false;\n        exit;\n      end;\n      u := pointF(points[next].coord.x - points[cur].coord.x, points[next].coord.y - points[cur].coord.y);\n      lu := VectLen(u);\n      if lu <> 0 then u.Scale(1/lu);\n      v := pointF(points[cur].coord.x - points[prev].coord.x, points[cur].coord.y - points[prev].coord.y);\n      lv := VectLen(v);\n      if lv <> 0 then v.Scale(1/lv);\n\n      dp := u**v;\n      result := (dp > 0.70) and (dp < 0.72);\n    end;\n\n    procedure RemoveAligned;\n    var cur,prev,next: integer;\n    begin\n      cur := nStart;\n      prev := -1;\n      while not points[cur].removed do\n      begin\n        next := points[cur].next;\n        //remove aligned points\n        if (prev <> -1) and aligned(prev,cur,cur,next) then\n          RemovePoint(cur)\n        else\n          prev := cur;\n        cur := next;\n\n        if next = nStart then\n        begin\n          next := points[cur].next;\n          if (prev <> -1) and (next <> prev) then\n            if aligned(prev,cur,cur,next) then\n            begin\n              RemovePoint(cur);\n              nStart := next;\n            end;\n          break; //cycle\n        end;\n      end;\n    end;\n\n    procedure MakePolygon(cycle: boolean);\n    var ptsF: array of TPointF;\n        nbPtsF: integer;\n        nb,nb2,cur,i: integer;\n    begin\n      cur := nStart;\n      nb := 0;\n      nb2 := 0;\n      repeat\n        if not points[cur].removed then inc(nb);\n        inc(nb2);\n        cur := points[cur].next;\n      until (cur = -1) or (cur = nStart) or (nb2 > nbPoints);\n      if (nb2 > nbPoints) or (nb <= 2) then exit;\n\n      setlength(ptsF,nb);\n      cur := nStart;\n      nbPtsF := 0;\n      repeat\n        with points[cur] do\n          if not removed then\n          begin\n            ptsF[nbPtsF] := pointf(coord.x*factor+offset,coord.y*factor+offset);\n            points[cur].drawn := true;\n            inc(nbPtsF);\n          end;\n        cur := points[cur].next;\n      until (cur = -1) or (cur = nStart);\n\n      if cycle then\n      begin\n        if polygonF = nil then\n          polygonF := ptsF else\n        begin\n          cur := length(polygonF);\n          setlength(polygonF, length(polygonF)+length(ptsF)+1);\n          polygonF[cur] := EmptyPointF;\n          for i := 0 to high(ptsF) do\n          begin\n            inc(cur);\n            polygonF[cur] := ptsF[i];\n          end;\n        end;\n      end;\n      ptsF := nil;\n      //Bitmap.DrawPolyLineAntialias(ptsF,BGRABlack,1);\n    end;\n\n    function segabslength(cur,next: integer): integer;\n    var\n      tx,ty: integer;\n    begin\n      if (cur = -1) or (next = -1) then result := 0\n      else\n      begin\n        tx := abs(points[next].coord.x - points[cur].coord.x);\n        ty := abs(points[next].coord.y - points[cur].coord.y);\n        if tx > ty then result := tx else result := ty;\n      end;\n    end;\n\n    function getnext(cur: integer): integer;\n    begin\n      result := cur;\n      if result <> -1 then\n      begin\n        repeat\n          result := points[result].next;\n          if result = cur then result := -1;\n        until (result = -1) or not points[result].removed;\n      end;\n    end;\n\n    function getprev(cur: integer): integer;\n    begin\n      result := cur;\n      if result <> -1 then\n      begin\n        repeat\n          result := points[result].prev;\n          if result = cur then result := -1;\n        until (result = -1) or not points[result].removed;\n      end;\n    end;\n\n    procedure NiceLines;\n    var cur2, next,next2, startIdx, endIdx: integer;\n      nb: integer;\n      u: TPoint;\n\n      function SameDirection(p1,p2: integer): boolean;\n      var\n        v: TPoint;\n      begin\n        v := Point(points[p2].coord.x-points[p1].coord.x,\n             points[p2].coord.y-points[p1].coord.y);\n        result := (v.x*u.y - v.y*u.x = 0) and (v.x*u.x + v.y*u.y > 0);\n      end;\n\n      function GetSide(p1,p2: integer): integer;\n      var\n        v: TPoint;\n      begin\n        v := Point(points[p2].coord.x-points[p1].coord.x,\n             points[p2].coord.y-points[p1].coord.y);\n        result := v.x*u.y - v.y*u.x;\n        if result < 0 then result := -1 else if result > 0 then result := 1;\n      end;\n\n      procedure DoNiceLines(DoDiag: boolean);\n      var cur, nbSegs, i: integer;\n        isDiag: Boolean;\n        segs: array of record\n          p1,p2: TPoint;\n          abslen: integer;\n        end;\n\n      begin\n        for cur := 0 to nb-1 do\n        if not points[cur].removed and not points[cur].done then\n        begin\n          next := getnext(cur);\n          isDiag := (points[next].coord.x <> points[cur].coord.x) and\n                    (points[next].coord.y <> points[cur].coord.y);\n          if (segabslength(cur,next) > iUnit) and (DoDiag xor (not isDiag)) then\n          begin\n            startIdx := cur;\n            endIdx := next;\n            u := Point(points[next].coord.x-points[cur].coord.x,\n                       points[next].coord.y-points[cur].coord.y);\n            nbsegs := 1;\n\n            if (u.x <> 0) or (u.y <> 0) then\n            begin\n              repeat\n                next := getnext(endIdx);\n                next2 := getnext(next);\n                if (next<>startIdx) and (next2<>startIdx) and angle45(getprev(endIdx),endIdx,next) and\n                  (segabslength(endIdx,next) < 2*iUnit) and SameDirection(next,next2) then\n                begin\n                  endIdx := next2;\n                  inc(nbsegs);\n                end\n                else\n                  break;\n              until false;\n\n              repeat\n                next := getprev(startIdx);\n                next2 := getprev(next);\n                if (next<>endIdx) and (next2<>endIdx) and angle45(getnext(startIdx),startIdx,next) and\n                  (segabslength(startIdx,next) < 2*iUnit) and SameDirection(next2,next) then\n                begin\n                  startIdx := next2;\n                  inc(nbsegs);\n                end\n                else\n                  break;\n              until false;\n\n              setlength(segs, nbSegs);\n              cur2 := startIdx;\n              for i := 0 to nbSegs-1 do\n              begin\n                next := getnext(cur2);\n                segs[i].p1 := points[cur2].coord;\n                segs[i].p2 := points[next].coord;\n                segs[i].abslen := segabslength(cur2,next);\n                points[cur2].done := true;\n                points[next].done := true;\n                if cur2 <> startIdx then RemovePoint(cur2);\n\n                if next = endIdx then break\n                else\n                begin\n                  cur2 := getnext(next);\n                  RemovePoint(next);\n                end;\n              end;\n\n              cur2 := startIdx;\n              for i := 0 to nbSegs-2 do\n              begin\n                if i <> 0 then\n                  cur2 := InsertPoint( (segs[i].p1.x+segs[i].p2.x) div 2,\n                               (segs[i].p1.y+segs[i].p2.y) div 2,\n                               cur2, endIdx);\n                if abs(segs[i].abslen-segs[i+1].abslen) > iHalf then\n                  cur2 := InsertPoint( (segs[i].p2.x+segs[i+1].p1.x) div 2,\n                               (segs[i].p2.y+segs[i+1].p1.y) div 2,\n                               cur2, endIdx);\n              end;\n            end;\n          end;\n        end;\n      end;\n\n      procedure Init;\n      var cur: integer;\n      begin\n        u := Point(0,0);\n        nb := nbPoints;\n        for cur := 0 to nb-1 do\n          points[cur].done := false;\n      end;\n\n    begin\n      Init;\n      DoNiceLines(false);\n      DoNiceLines(true);\n    end;\n\n  var cycle: boolean;\n  begin\n    //rewind\n    Rewind(cycle);\n    RemoveAligned;\n    if AIntermediateDiagonals then NiceLines;\n    MakePolygon(cycle);\n  end;\n\n  function GetBoundsWithin: TRect;\n  var p: PBGRAPixel;\n    yb, xb, xb2, maxx, maxy, minx, miny: LongInt;\n  begin\n    maxx := ARect.Left-1;\n    maxy := ARect.Top-1;\n    minx := ARect.Right;\n    miny := ARect.Bottom;\n    for yb := ARect.Top to ARect.Bottom-1 do\n    begin\n      p := ASource.ScanLine[yb] + ARect.Left;\n      for xb := ARect.Left to ARect.Right - 1 do\n      begin\n        if CheckPixel(p^) then\n        begin\n          if xb < minx then minx := xb;\n          if yb < miny then miny := yb;\n          if xb > maxx then maxx := xb;\n          if yb > maxy then maxy := yb;\n\n          inc(p, ARect.Right-1-xb);\n          for xb2 := ARect.Right-1 downto xb+1 do\n          begin\n            if CheckPixel(p^) then\n            begin\n              if xb2 > maxx then maxx := xb2;\n              break;\n            end;\n            dec(p);\n          end;\n          break;\n        end;\n        Inc(p);\n      end;\n    end;\n    if minx > maxx then Result := EmptyRect\n    else\n    begin\n      Result.left   := minx;\n      Result.top    := miny;\n      Result.right  := maxx + 1;\n      Result.bottom := maxy + 1;\n    end;\n  end;\n\n  function IsRectFull: boolean;\n  var\n    yb, xb: LongInt;\n    p: PBGRAPixel;\n  begin\n    for yb := ARect.Top to ARect.Bottom-1 do\n    begin\n      p := ASource.ScanLine[yb] + ARect.Left;\n      for xb := ARect.Left to ARect.Right - 1 do\n      begin\n        if not CheckPixel(p^) then exit(false);\n        inc(p);\n      end;\n    end;\n    result := true;\n  end;\n\nbegin\n  ARect.Intersect( rect(0,0,ASource.Width,ASource.Height) );\n  if ARect.IsEmpty then exit(nil);\n  ARect := GetBoundsWithin;\n  if ARect.IsEmpty then exit(nil);\n\n  factor := AZoom;\n  offset := AZoom*0.5;\n  if APixelCenteredCoordinates then DecF(Offset, 0.5);\n\n  if IsRectFull then\n  begin\n    result := PointsF([PointF((ARect.Left-0.5)*factor+offset, (ARect.Top-0.5)*factor+offset),\n                       PointF((ARect.Left-0.5)*factor+offset, (ARect.Bottom-0.5)*factor+offset),\n                       PointF((ARect.Right-0.5)*factor+offset, (ARect.Bottom-0.5)*factor+offset),\n                       PointF((ARect.Right-0.5)*factor+offset, (ARect.Top-0.5)*factor+offset)]);\n    exit;\n  end;\n\n  iDiag := round((ADiagonalFillPercent-50)/100 * iHalf)*2; //even rounding to keep alignment with iOut\n  iOut := (iHalf-iDiag) div 2;\n\n  nbpoints := 0;\n  points := nil;\n  polygonF := nil;\n\n  setlength(ortho,ARect.Height,ARect.Width);\n  for y := 0 to ARect.Height-1 do\n  begin\n    if y = 0 then\n      pprev := nil\n    else\n      pprev := ASource.ScanLine[ARect.Top+y-1]+ARect.Left;\n    p := ASource.ScanLine[ARect.Top+y]+ARect.Left;\n    if y = ARect.Height-1 then\n      pnext := nil\n    else\n      pnext := ASource.ScanLine[ARect.Top+y+1]+ARect.Left;\n\n    {$hints off}\n    fillchar(cur,sizeof(cur),0);\n    {$hints on}\n    cur[6] := CheckPixel(p^); inc(p);\n    if pprev <> nil then begin cur[9] := CheckPixel(pprev^); inc(pprev); end;\n    if pnext <> nil then begin cur[3] := CheckPixel(pnext^); inc(pnext); end;\n    for x := 0 to ARect.Width-1 do\n    begin\n      cur[1] := cur[2];\n      cur[2] := cur[3];\n      cur[4] := cur[5];\n      cur[5] := cur[6];\n      cur[7] := cur[8];\n      cur[8] := cur[9];\n\n      if x = ARect.Width-1 then\n      begin\n        cur[6]:= false;\n        cur[9]:= false;\n        cur[3]:= false;\n      end else\n      begin\n        cur[6] := CheckPixel(p^); inc(p);\n        if pprev <> nil then begin cur[9] := CheckPixel(pprev^); inc(pprev); end;\n        if pnext <> nil then begin cur[3] := CheckPixel(pnext^); inc(pnext); end;\n      end;\n\n      ortho[y,x] := (cur[5] and not cur[7] and not cur[9] and not cur[3] and not cur[1]);\n      if (not cur[5] and (cur[4] xor cur[6]) and (cur[8] xor cur[2]) and\n          (ord(cur[1])+ord(cur[3])+ord(cur[7])+ord(cur[9]) = 3)) then\n      begin\n        if (not cur[6] and not cur[9] and not cur[8] and (CheckPixel(ASource.getPixel(x-1,y-2)) or CheckPixel(ASource.getPixel(x+2,y+1).green)) ) or\n          (not cur[8] and not cur[7] and not cur[4] and (CheckPixel(ASource.getPixel(x-2,y+1)) or CheckPixel(ASource.getPixel(x+1,y-2).green)) ) or\n          (not cur[4] and not cur[1] and not cur[2] and (CheckPixel(ASource.getPixel(x+1,y+2)) or CheckPixel(ASource.getPixel(x-2,y-1).green)) ) or\n          (not cur[2] and not cur[3] and not cur[6] and (CheckPixel(ASource.getPixel(x-1,y+2)) or CheckPixel(ASource.getPixel(x+2,y-1).green)) ) then\n            ortho[y,x] := true;\n      end;\n      { or\n        (cur[5] and cur[4] and cur[6] and cur[2] and cur[8] and (Ord(cur[1])+ord(cur[3])+ord(cur[7])+ord(cur[9]) = 3))};\n      //if ortho[y,x] then AddPoint(x shl unitShift,y shl unitShift,-1,-1);\n    end;\n  end;\n\n  PointsCurrentLineStart := nbPoints;\n  for y := 0 to ARect.Height-1 do\n  begin\n    iy := (y+ARect.Top) shl unitShift;\n\n    PointsPreviousLineStart := PointsCurrentLineStart;\n    PointsCurrentLineStart := nbPoints;\n    if y = 0 then\n      pprev := nil\n    else\n      pprev := ASource.ScanLine[ARect.Top+y-1]+ARect.Left;\n    p := ASource.ScanLine[ARect.Top+y]+ARect.Left;\n    if y = ARect.Height-1 then\n      pnext := nil\n    else\n      pnext := ASource.ScanLine[ARect.Top+y+1]+ARect.Left;\n\n    {$hints off}\n    fillchar(cur,sizeof(cur),0);\n    {$hints on}\n    cur[6] := CheckPixel(p^); inc(p);\n    if pprev <> nil then begin cur[9] := CheckPixel(pprev^); inc(pprev); end;\n    if pnext <> nil then begin cur[3] := CheckPixel(pnext^); inc(pnext); end;\n    ix := ARect.Left shl unitShift;\n    for x := 0 to ARect.Width-1 do\n    begin\n      cur[1] := cur[2];\n      cur[2] := cur[3];\n      cur[4] := cur[5];\n      cur[5] := cur[6];\n      cur[7] := cur[8];\n      cur[8] := cur[9];\n\n      if x = ARect.Width-1 then\n      begin\n        cur[6]:= false;\n        cur[9]:= false;\n        cur[3]:= false;\n      end else\n      begin\n        cur[6] := CheckPixel(p^); inc(p);\n        if pprev <> nil then begin cur[9] := CheckPixel(pprev^); inc(pprev); end;\n        if pnext <> nil then begin cur[3] := CheckPixel(pnext^); inc(pnext); end;\n      end;\n\n      if cur[5] then\n      begin\n        if not cur[1] and not cur[2] and not cur[3] and not cur[4] and not cur[6] and not cur[7] and not cur[8] and not cur[9] then\n        begin\n          if iDiag > 0 then\n          begin\n            AddLine(ix-iHalf,iy-iDiag,ix-iDiag,iy-iHalf,ix+iDiag,iy-iHalf,ix+iHalf,iy-iDiag,ix+iHalf,iy+iDiag);\n            AddLine(ix+iHalf,iy+iDiag,ix+iDiag,iy+iHalf,ix-iDiag,iy+iHalf,ix-iHalf,iy+iDiag,ix-iHalf,iy-iDiag);\n          end else\n          begin\n            AddLine(ix-iHalf,iy,ix,iy-iHalf,ix+iHalf,iy);\n            AddLine(ix+iHalf,iy,ix,iy+iHalf,ix-iHalf,iy);\n          end;\n        end else\n        if cur[6] and not cur[9] and not cur[8] then\n        begin\n          if cur[7] then\n          begin\n            if not ortho[y-1,x] then\n            begin\n              if ortho[y,x-1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n                AddLine(ix+iHalf,iy-iHalf,ix+iDiag,iy-iHalf,ix-iOut,iy-iUnit+iOut);\n            end;\n          end else\n          if cur[4] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n          if cur[1] then AddLine(ix+iHalf,iy-iHalf,ix-iDiag,iy-iHalf,ix-iUnit+iOut,iy+iOut) else\n          if cur[2] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n          if cur[3] then\n          begin\n            if ortho[y,x+1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n              AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iDiag,ix+iOut,iy+iUnit-iOut)\n          end else\n            AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf);\n        end;\n        if cur[8] and not cur[7] and not cur[4] then\n        begin\n          if cur[1] then\n          begin\n            if not ortho[y,x-1] then\n            begin\n              if ortho[y+1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n                AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy-iDiag,ix-iUnit+iOut,iy+iOut);\n            end;\n          end else\n          if cur[2] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n          if cur[3] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iDiag,ix+iOut,iy+iUnit-iOut) else\n          if cur[6] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n          if cur[9] then\n          begin\n            if ortho[y-1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n              AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iDiag,iy+iHalf,ix+iUnit-iOut,iy-iOut)\n          end else\n            AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf);\n        end;\n        if cur[4] and not cur[1] and not cur[2] then\n        begin\n          if cur[3] then\n          begin\n            if not ortho[y+1,x] then\n            begin\n              if ortho[y,x+1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n                AddLine(ix-iHalf,iy+iHalf,ix-iDiag,iy+iHalf,ix+iOut,iy+iUnit-iOut);\n            end;\n          end else\n          if cur[6] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n          if cur[9] then AddLine(ix-iHalf,iy+iHalf,ix+iDiag,iy+iHalf,ix+iUnit-iOut,iy-iOut) else\n          if cur[8] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n          if cur[7] then\n          begin\n            if ortho[y,x-1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n              AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iDiag,ix-iOut,iy-iUnit+iOut)\n          end else\n            AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf);\n        end;\n        if cur[2] and not cur[3] and not cur[6] then\n        begin\n          if cur[9] then\n          begin\n            if not ortho[y,x+1] then\n            begin\n              if ortho[y-1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n                AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy+iDiag,ix+iUnit-iOut,iy-iOut);\n            end;\n          end else\n          if cur[8] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n          if cur[7] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iDiag,ix-iOut,iy-iUnit+iOut) else\n          if cur[4] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n          if cur[1] then\n          begin\n            if ortho[y+1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix-iHalf,iy+iHalf) else\n              AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iDiag,iy-iHalf,ix-iUnit+iOut,iy+iOut)\n          end else\n            AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf);\n        end;\n\n        if cur[3] and not cur[6] then\n        begin\n          if cur[9] then\n          begin\n            if ortho[y+1,x] and ortho[y-1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n            if ortho[y+1,x] and not ortho[y-1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy+iDiag,ix+iUnit-iOut,iy-iOut) else\n            if not ortho[y+1,x] and ortho[y-1,x] then AddLine(ix+iUnit-iOut,iy+iOut,ix+iHalf,iy-iDiag,ix+iHalf,iy-iHalf) else\n              AddLine(ix+iUnit-iOut,iy+iOut,ix+iUnit-iOut*2,iy,ix+iUnit-iOut,iy-iOut);\n          end else\n          if cur[8] then\n          begin\n            if not ortho[y,x+1] then\n            if ortho[y+1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n              AddLine(ix+iUnit-iOut,iy+iOut,ix+iHalf,iy-iDiag,ix+iHalf,iy-iHalf)\n          end else\n          if cur[7] then\n          begin\n            if ortho[y+1,x] and ortho[y,x-1] then\n              AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n            if ortho[y+1,x] and not ortho[y,x-1] then\n              AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iDiag,ix-iOut,iy-iUnit+iOut) else\n            if not ortho[y+1,x] and ortho[y,x-1] then\n              AddLine(ix+iUnit-iOut,iy+iOut, ix+iDiag,iy-iHalf, ix-iHalf,iy-iHalf) else\n              AddLine(ix+iUnit-iOut,iy+iOut,ix-iOut,iy-iUnit+iOut)\n          end else\n          if cur[4] then AddLine(ix+iUnit-iOut,iy+iOut,ix+iDiag,iy-iHalf,ix-iHalf,iy-iHalf) else\n          if cur[1] then\n          begin\n            if ortho[y+1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n              AddLine(ix+iUnit-iOut,iy+iOut,ix+iDiag,iy-iHalf,ix-iDiag,iy-iHalf,ix-iUnit+iOut,iy+iOut);\n          end else\n          if cur[2] then\n          begin\n            if ortho[y+1,x] then AddLine(ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n              AddLine(ix+iUnit-iOut,iy+iOut,ix+iDiag,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf);\n          end else\n            AddLine(ix+iUnit-iOut,iy+iOut,ix+iDiag,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iDiag,ix+iOut,iy+iUnit-iOut);\n        end;\n\n        if cur[9] and not cur[8] then\n        begin\n          if cur[7] then\n          begin\n            if ortho[y,x+1] and ortho[y,x-1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n            if ortho[y,x+1] and not ortho[y,x-1] then AddLine(ix+iHalf,iy-iHalf,ix+iDiag,iy-iHalf,ix-iOut,iy-iUnit+iOut) else\n            if not ortho[y,x+1] and ortho[y,x-1] then AddLine(ix+iOut,iy-iUnit+iOut,ix-iDiag,iy-iHalf,ix-iHalf,iy-iHalf) else\n              AddLine(ix+iOut,iy-iUnit+iOut,ix,iy-iUnit+iOut*2,ix-iOut,iy-iUnit+iOut);\n          end else\n          if cur[4] then\n          begin\n            if not ortho[y-1,x] then\n            if ortho[y,x+1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n              AddLine(ix+iOut,iy-iUnit+iOut,ix-iDiag,iy-iHalf,ix-iHalf,iy-iHalf)\n          end else\n          if cur[1] then\n          begin\n            if ortho[y,x+1] and ortho[y+1,x] then\n              AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n            if ortho[y,x+1] and not ortho[y+1,x] then\n              AddLine(ix+iHalf,iy-iHalf,ix-iDiag,iy-iHalf,ix-iUnit+iOut,iy+iOut) else\n            if not ortho[y,x+1] and ortho[y+1,x] then\n              AddLine(ix+iOut,iy-iUnit+iOut, ix-iHalf,iy-iDiag, ix-iHalf,iy+iHalf) else\n              AddLine(ix+iOut,iy-iUnit+iOut,ix-iUnit+iOut,iy+iOut)\n          end else\n          if cur[2] then AddLine(ix+iOut,iy-iUnit+iOut,ix-iHalf,iy-iDiag,ix-iHalf,iy+iHalf) else\n          if cur[3] then\n          begin\n            if ortho[y,x+1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n              AddLine(ix+iOut,iy-iUnit+iOut,ix-iHalf,iy-iDiag,ix-iHalf,iy+iDiag,ix+iOut,iy+iUnit-iOut);\n          end else\n          if cur[6] then\n          begin\n            if ortho[y,x+1] then AddLine(ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n              AddLine(ix+iOut,iy-iUnit+iOut,ix-iHalf,iy-iDiag,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf);\n          end else\n            AddLine(ix+iOut,iy-iUnit+iOut,ix-iHalf,iy-iDiag,ix-iHalf,iy+iHalf,ix+iDiag,iy+iHalf,ix+iUnit-iOut,iy-iOut);\n        end;\n\n        if cur[7] and not cur[4] then\n        begin\n          if cur[1] then\n          begin\n            if ortho[y-1,x] and ortho[y+1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n            if ortho[y-1,x] and not ortho[y+1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy-iDiag,ix-iUnit+iOut,iy+iOut) else\n            if not ortho[y-1,x] and ortho[y+1,x] then AddLine(ix-iUnit+iOut,iy-iOut,ix-iHalf,iy+iDiag,ix-iHalf,iy+iHalf) else\n              AddLine(ix-iUnit+iOut,iy-iOut,ix-iUnit+iOut*2,iy,ix-iUnit+iOut,iy+iOut);\n          end else\n          if cur[2] then\n          begin\n            if not ortho[y,x-1] then\n            if ortho[y-1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf) else\n              AddLine(ix-iUnit+iOut,iy-iOut,ix-iHalf,iy+iDiag,ix-iHalf,iy+iHalf)\n          end else\n          if cur[3] then\n          begin\n            if ortho[y-1,x] and ortho[y,x+1] then\n              AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n            if ortho[y-1,x] and not ortho[y,x+1] then\n              AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iDiag,ix+iOut,iy+iUnit-iOut) else\n            if not ortho[y-1,x] and ortho[y,x+1] then\n              AddLine(ix-iUnit+iOut,iy-iOut, ix-iDiag,iy+iHalf, ix+iHalf,iy+iHalf) else\n              AddLine(ix-iUnit+iOut,iy-iOut,ix+iOut,iy+iUnit-iOut)\n          end else\n          if cur[6] then AddLine(ix-iUnit+iOut,iy-iOut,ix-iDiag,iy+iHalf,ix+iHalf,iy+iHalf) else\n          if cur[9] then\n          begin\n            if ortho[y-1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n              AddLine(ix-iUnit+iOut,iy-iOut,ix-iDiag,iy+iHalf,ix+iDiag,iy+iHalf,ix+iUnit-iOut,iy-iOut);\n          end else\n          if cur[8] then\n          begin\n            if ortho[y-1,x] then AddLine(ix-iHalf,iy-iHalf,ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n              AddLine(ix-iUnit+iOut,iy-iOut,ix-iDiag,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf);\n          end else\n            AddLine(ix-iUnit+iOut,iy-iOut,ix-iDiag,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iDiag,ix-iOut,iy-iUnit+iOut);\n        end;\n\n        if cur[1] and not cur[2] then\n        begin\n          if cur[3] then\n          begin\n            if ortho[y,x-1] and ortho[y,x+1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n            if ortho[y,x-1] and not ortho[y,x+1] then AddLine(ix-iHalf,iy+iHalf,ix-iDiag,iy+iHalf,ix+iOut,iy+iUnit-iOut) else\n            if not ortho[y,x-1] and ortho[y,x+1] then AddLine(ix-iOut,iy+iUnit-iOut,ix+iDiag,iy+iHalf,ix+iHalf,iy+iHalf) else\n              AddLine(ix-iOut,iy+iUnit-iOut,ix,iy+iUnit-iOut*2,ix+iOut,iy+iUnit-iOut);\n          end else\n          if cur[6] then\n          begin\n            if not ortho[y+1,x] then\n            if ortho[y,x-1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf) else\n              AddLine(ix-iOut,iy+iUnit-iOut,ix+iDiag,iy+iHalf,ix+iHalf,iy+iHalf)\n          end else\n          if cur[9] then\n          begin\n            if ortho[y,x-1] and ortho[y-1,x] then\n              AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf) else\n            if ortho[y,x-1] and not ortho[y-1,x] then\n              AddLine(ix-iHalf,iy+iHalf,ix+iDiag,iy+iHalf,ix+iUnit-iOut,iy-iOut) else\n            if not ortho[y,x-1] and ortho[y-1,x] then\n              AddLine(ix-iOut,iy+iUnit-iOut, ix+iHalf,iy+iDiag, ix+iHalf,iy-iHalf) else\n              AddLine(ix-iOut,iy+iUnit-iOut,ix+iUnit-iOut,iy-iOut)\n          end else\n          if cur[8] then AddLine(ix-iOut,iy+iUnit-iOut,ix+iHalf,iy+iDiag,ix+iHalf,iy-iHalf) else\n          if cur[7] then\n          begin\n            if ortho[y,x-1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n              AddLine(ix-iOut,iy+iUnit-iOut,ix+iHalf,iy+iDiag,ix+iHalf,iy-iDiag,ix-iOut,iy-iUnit+iOut);\n          end else\n          if cur[4] then\n          begin\n            if ortho[y,x-1] then AddLine(ix-iHalf,iy+iHalf,ix+iHalf,iy+iHalf,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf) else\n              AddLine(ix-iOut,iy+iUnit-iOut,ix+iHalf,iy+iDiag,ix+iHalf,iy-iHalf,ix-iHalf,iy-iHalf);\n          end else\n            AddLine(ix-iOut,iy+iUnit-iOut,ix+iHalf,iy+iDiag,ix+iHalf,iy-iHalf,ix-iDiag,iy-iHalf,ix-iUnit+iOut,iy+iOut);\n        end;\n      end else\n      if ortho[y,x] then\n      begin\n        if not cur[9] then AddLine(ix+iHalf,iy+iHalf,ix-iHalf,iy+iHalf,ix-iHalf,iy-iHalf) else\n        if not cur[7] then AddLine(ix+iHalf,iy-iHalf,ix+iHalf,iy+iHalf,ix-iHalf,iy+iHalf) else\n        if not cur[1] then AddLine(ix-iHalf,iy-iHalf,ix+iHalf,iy-iHalf,ix+iHalf,iy+iHalf) else\n        if not cur[3] then AddLine(ix-iHalf,iy+iHalf,ix-iHalf,iy-iHalf,ix+iHalf,iy-iHalf);\n      end;\n      inc(ix,iUnit);\n    end;\n  end;\n\n  factor := factor / iUnit;\n\n  for n := 0 to nbPoints-1 do\n    with points[n] do\n    if not drawn and not removed then\n      AddPolygon(n);\n\n  result := polygonF;\nend;\n\nfunction VectorizeMonochrome(ASource: TBGRACustomBitmap;\n  AZoom: single; APixelCenteredCoordinates: boolean; AWhiteBackground: boolean;\n  ADiagonalFillPercent: single; AIntermediateDiagonals: boolean): ArrayOfTPointF;\nbegin\n  result := VectorizeMonochrome(ASource, rect(0,0,ASource.Width,ASource.Height), AZoom, APixelCenteredCoordinates,\n    AWhiteBackground, ADiagonalFillPercent, AIntermediateDiagonals);\nend;\n\n{ TBGRAVectorizedFontRenderer }\n\nfunction TBGRAVectorizedFontRenderer.OutlineActuallyVisible: boolean;\nbegin\n  result := OutlineVisible and (abs(OutlineWidth) > 0) and (OutlineColor.Alpha <> 0) or (OutlineTexture <> nil);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.UpdateFont;\nvar i,neededResolution: integer;\nbegin\n  FVectorizedFont := nil;\n  FontName := Trim(FontName);\n  for i := 0 to high(FVectorizedFontArray) do\n    if (CompareText(FVectorizedFontArray[i].FontName,FontName)=0) and\n      (FVectorizedFontArray[i].FontStyle = FontStyle) then\n    begin\n      FVectorizedFont := FVectorizedFontArray[i].VectorizedFont;\n      break;\n    end;\n\n  if FVectorizedFont = nil then\n  begin\n    FVectorizedFont:= TBGRAVectorizedFont.Create(False);\n    FVectorizedFont.Name := FontName;\n    FVectorizedFont.Style := FontStyle - [fsUnderline];\n    FVectorizedFont.UnderlineDecoration := fsUnderline in FontStyle;\n    FVectorizedFont.Directory := FDirectoryUTF8;\n    if not FVectorizedFont.FontFound and SystemFontAvailable then\n    begin\n      FVectorizedFont.VectorizeLCL := True;\n      FVectorizedFont.Name := TBGRASystemFontRenderer.PatchSystemFontName(FontName);\n    end;\n    Setlength(FVectorizedFontArray,length(FVectorizedFontArray)+1);\n    FVectorizedFontArray[high(FVectorizedFontArray)].FontName := FontName;\n    FVectorizedFontArray[high(FVectorizedFontArray)].FontStyle := FontStyle;\n    FVectorizedFontArray[high(FVectorizedFontArray)].VectorizedFont := FVectorizedFont;\n  end;\n  if FontEmHeightF > 0 then\n    FVectorizedFont.EmHeight := FontEmHeightF\n  else\n    FVectorizedFont.FullHeight:= -FontEmHeightF;\n  if OutlineActuallyVisible then\n  begin\n    if OuterOutlineOnly then\n      FVectorizedFont.OutlineMode := twoFillOverStroke\n    else\n      FVectorizedFont.OutlineMode := twoStrokeOverFill;\n  end\n  else FVectorizedFont.OutlineMode := twoFill;\n  FVectorizedFont.QuadraticCurves := (FVectorizedFont.FullHeight > FVectorizedFont.Resolution*1.2) and QuadraticCurves;\n  if FVectorizedFont.VectorizeLCL then\n  begin\n    neededResolution := trunc((FVectorizedFont.FullHeight+80)/50)*50;\n    if neededResolution < MinFontResolution then neededResolution := MinFontResolution;\n    if neededResolution > MaxFontResolution then neededResolution := MaxFontResolution;\n    if FVectorizedFont.Resolution < neededResolution then FVectorizedFont.Resolution:= neededResolution;\n  end;\nend;\n\nfunction TBGRAVectorizedFontRenderer.GetCanvas2D(ASurface: TBGRACustomBitmap\n  ): TBGRACanvas2D;\nbegin\n  if (FCanvas2D = nil) or (FCanvas2D.surface <> ASurface) then\n  begin\n    FCanvas2D.Free;\n    FCanvas2D := TBGRACanvas2D.Create(ASurface);\n  end;\n  result := FCanvas2D;\n  FCanvas2D.antialiasing:= FontQuality in[fqFineAntialiasing,fqFineClearTypeBGR,fqFineClearTypeRGB];\n  FCanvas2D.lineJoinLCL := OutlineJoin;\n  if OutlineTexture <> nil then\n    FCanvas2D.strokeStyle(OutlineTexture)\n  else\n    FCanvas2D.strokeStyle(OutlineColor);\n  if abs(OutlineWidth) < 3 then\n    FCanvas2D.lineWidth := abs(OutlineWidth)*2/3\n  else\n    FCanvas2D.lineWidth := abs(OutlineWidth)-1;\n  if not ShadowVisible then\n    FCanvas2D.shadowColor(BGRAPixelTransparent)\n  else\n  begin\n    FCanvas2D.shadowColor(ShadowColor);\n    FCanvas2D.shadowBlur:= ShadowRadius;\n    FCanvas2D.shadowOffset := PointF(ShadowOffset.X,ShadowOffset.Y);\n  end;\nend;\n\nprocedure TBGRAVectorizedFontRenderer.InternalTextRect(\n  ADest: TBGRACustomBitmap; ARect: TRect; x, y: integer; sUTF8: string;\n  style: TTextStyle; c: TBGRAPixel; texture: IBGRAScanner);\nvar\n  twAlign : TBGRATypeWriterAlignment;\n  c2D: TBGRACanvas2D;\n  intersectedClip,previousClip: TRect;\nbegin\n  previousClip := ADest.ClipRect;\n  if style.Clipping then\n  begin\n    intersectedClip := TRect.Intersect(previousClip, ARect);\n    if intersectedClip.IsEmpty then exit;\n    ADest.ClipRect := intersectedClip;\n  end;\n  UpdateFont;\n  if style.RightToLeft then\n    FVectorizedFont.BidiMode := fbmRightToLeft\n  else\n    FVectorizedFont.BidiMode := fbmLeftToRight;\n  FVectorizedFont.Orientation := 0;\n  case style.Alignment of\n    taCenter: case style.Layout of\n              tlCenter: twAlign := twaMiddle;\n              tlBottom: twAlign := twaBottom;\n              else twAlign:= twaTop;\n              end;\n    taRightJustify:\n              case style.Layout of\n              tlCenter: twAlign := twaRight;\n              tlBottom: twAlign := twaBottomRight;\n              else twAlign := twaTopRight;\n              end;\n    else\n              case style.Layout of\n              tlCenter: twAlign := twaLeft;\n              tlBottom: twAlign := twaBottomLeft;\n              else twAlign:= twaTopLeft;\n              end;\n  end;\n  c2D := GetCanvas2D(ADest);\n  if texture = nil then\n    c2D.fillStyle(c)\n  else\n    c2D.fillStyle(texture);\n  if style.Wordbreak then\n    FVectorizedFont.DrawTextRect(c2D, sUTF8, x-0.5,y-0.5,ARect.Right-0.5,ARect.Bottom-0.5, twAlign)\n  else\n  begin\n    case style.Layout of\n    tlCenter: y := (ARect.Top+ARect.Bottom) div 2;\n    tlBottom: y := ARect.Bottom;\n    end;\n    case style.Alignment of\n    taCenter: FVectorizedFont.DrawText(c2D, sUTF8, (ARect.Left+ARect.Right-1)/2,y-0.5, twAlign);\n    taRightJustify: FVectorizedFont.DrawText(c2D, sUTF8, ARect.Right-0.5,y-0.5, twAlign);\n    else\n      FVectorizedFont.DrawText(c2D, sUTF8, x-0.5,y-0.5, twAlign);\n    end;\n  end;\n  if style.Clipping then\n    ADest.ClipRect := previousClip;\nend;\n\nprocedure TBGRAVectorizedFontRenderer.InternalCopyTextPathTo(ADest: IBGRAPath;\n  x, y: single; s: string; align: TAlignment; ABidiMode: TFontBidiMode);\nvar\n  twAlign : TBGRATypeWriterAlignment;\n  ofs: TPointF;\nbegin\n  UpdateFont;\n  FVectorizedFont.BidiMode := ABidiMode;\n  FVectorizedFont.Orientation := 0;\n  case align of\n    taCenter: twAlign:= twaMiddle;\n    taRightJustify: twAlign := twaRight;\n    else twAlign:= twaLeft;\n  end;\n  ofs := PointF(x,y);\n  ofs.Offset(0, FVectorizedFont.FullHeight*0.5);\n  FVectorizedFont.CopyTextPathTo(ADest, s, ofs.x,ofs.y, twAlign);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.InternalTextOutAngle(\n  ADest: TBGRACustomBitmap; x, y: single; orientation: integer; s: string;\n  c: TBGRAPixel; texture: IBGRAScanner; align: TAlignment;\n  ABidiMode: TFontBidiMode);\nvar\n  twAlign : TBGRATypeWriterAlignment;\n  c2D: TBGRACanvas2D;\n  ofs: TPointF;\nbegin\n  UpdateFont;\n  FVectorizedFont.Orientation := orientation;\n  FVectorizedFont.BidiMode := ABidiMode;\n  case align of\n    taCenter: twAlign:= twaMiddle;\n    taRightJustify: twAlign := twaRight;\n    else twAlign:= twaLeft;\n  end;\n  c2D := GetCanvas2D(ADest);\n  if Assigned(texture) then\n    c2D.fillStyle(texture)\n  else\n    c2D.fillStyle(c);\n  ofs := PointF(x,y);\n  ofs.Offset( AffineMatrixRotationDeg(-orientation*0.1)*PointF(0,FVectorizedFont.FullHeight*0.5) );\n  FVectorizedFont.DrawText(c2D, s, ofs.x,ofs.y, twAlign);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.Init;\nbegin\n  FVectorizedFontArray := nil;\n  FDirectoryUTF8 := '';\n\n  OutlineVisible:= True;\n  OutlineColor := BGRAPixelTransparent;\n  OuterOutlineOnly := false;\n  OutlineJoin := pjsMiter;\n\n  ShadowColor := BGRABlack;\n  ShadowVisible := false;\n  ShadowOffset := Point(5,5);\n  ShadowRadius := 5;\n\n  MaxFontResolution := 300;\nend;\n\nconstructor TBGRAVectorizedFontRenderer.Create;\nbegin\n  Init;\nend;\n\nconstructor TBGRAVectorizedFontRenderer.Create(ADirectoryUTF8: string);\nbegin\n  Init;\n  FDirectoryUTF8 := ADirectoryUTF8;\nend;\n\nfunction TBGRAVectorizedFontRenderer.GetFontPixelMetric: TFontPixelMetric;\nvar factor: single;\nbegin\n  UpdateFont;\n  result := FVectorizedFont.FontPixelMetric;\n  if FVectorizedFont.Resolution > 0 then\n  begin\n    factor := FVectorizedFont.FullHeight/FVectorizedFont.Resolution;\n    result.Baseline := round(result.Baseline*factor);\n    result.CapLine := round(result.CapLine*factor);\n    result.Lineheight := round(result.Lineheight*factor);\n    result.DescentLine := round(result.DescentLine*factor);\n    result.xLine := round(result.xLine*factor);\n  end;\nend;\n\nfunction TBGRAVectorizedFontRenderer.GetFontPixelMetricF: TFontPixelMetricF;\nvar factor: single;\n  fpm: TFontPixelMetric;\nbegin\n  UpdateFont;\n  fpm := FVectorizedFont.FontPixelMetric;\n  result.Defined := fpm.Defined;\n  if FVectorizedFont.Resolution > 0 then\n    factor := FVectorizedFont.FullHeight/FVectorizedFont.Resolution\n  else factor := 1;\n  result.Baseline := fpm.Baseline*factor;\n  result.CapLine := fpm.CapLine*factor;\n  result.Lineheight := fpm.Lineheight*factor;\n  result.DescentLine := fpm.DescentLine*factor;\n  result.xLine := fpm.xLine*factor;\nend;\n\nfunction TBGRAVectorizedFontRenderer.FontExists(AName: string): boolean;\nvar\n  i: Integer;\nbegin\n  {$IFDEF LCL}\n  for i := 0 to Screen.Fonts.Count-1 do\n    if CompareText(Screen.Fonts[i], AName) = 0 then exit(true);\n  result := false;\n  {$ELSE}\n  result := true;\n  {$ENDIF}\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextVisible(const AColor: TBGRAPixel): boolean;\nbegin\n  Result:=inherited TextVisible(AColor) or OutlineActuallyVisible;\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment);\nbegin\n  InternalTextOutAngle(ADest,x,y,orientation,s,c,nil,align,fbmAuto);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; c: TBGRAPixel; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  if ARightToLeft then\n    InternalTextOutAngle(ADest,x,y,orientation,s,c,nil,align,fbmRightToLeft)\n  else\n    InternalTextOutAngle(ADest,x,y,orientation,s,c,nil,align,fbmLeftToRight);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; texture: IBGRAScanner;\n  align: TAlignment);\nbegin\n  InternalTextOutAngle(ADest,x,y,orientation,s,BGRAPixelTransparent,texture,align,fbmAuto);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOutAngle(ADest: TBGRACustomBitmap; x,\n  y: single; orientation: integer; s: string; texture: IBGRAScanner;\n  align: TAlignment; ARightToLeft: boolean);\nbegin\n  if ARightToLeft then\n    InternalTextOutAngle(ADest,x,y,orientation,s,BGRAPixelTransparent,texture,align,fbmRightToLeft)\n  else\n    InternalTextOutAngle(ADest,x,y,orientation,s,BGRAPixelTransparent,texture,align,fbmLeftToRight);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; texture: IBGRAScanner; align: TAlignment);\nbegin\n  TextOutAngle(ADest,x,y,FontOrientation,s,texture,align);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; texture: IBGRAScanner; align: TAlignment;\n  ARightToLeft: boolean);\nbegin\n  TextOutAngle(ADest,x,y,FontOrientation,s,texture,align,ARightToLeft);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; c: TBGRAPixel; align: TAlignment);\nbegin\n  TextOutAngle(ADest,x,y,FontOrientation,s,c,align);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextOut(ADest: TBGRACustomBitmap; x,\n  y: single; s: string; c: TBGRAPixel; align: TAlignment; ARightToLeft: boolean);\nbegin\n  TextOutAngle(ADest,x,y,FontOrientation,s,c,align,ARightToLeft);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextRect(ADest: TBGRACustomBitmap;\n  ARect: TRect; x, y: integer; s: string; style: TTextStyle; c: TBGRAPixel);\nbegin\n  InternalTextRect(ADest,ARect,x,y,s,style,c,nil);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.TextRect(ADest: TBGRACustomBitmap;\n  ARect: TRect; x, y: integer; s: string; style: TTextStyle;\n  texture: IBGRAScanner);\nbegin\n  InternalTextRect(ADest,ARect,x,y,s,style,BGRAPixelTransparent,texture);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.CopyTextPathTo(ADest: IBGRAPath; x, y: single; s: string; align: TAlignment);\nbegin\n  InternalCopyTextPathTo(ADest, x,y, s, align, fbmAuto);\nend;\n\nprocedure TBGRAVectorizedFontRenderer.CopyTextPathTo(ADest: IBGRAPath; x,\n  y: single; s: string; align: TAlignment; ARightToLeft: boolean);\nbegin\n  if ARightToLeft then\n    InternalCopyTextPathTo(ADest, x,y, s, align, fbmRightToLeft)\n  else\n    InternalCopyTextPathTo(ADest, x,y, s, align, fbmLeftToRight);\nend;\n\nfunction TBGRAVectorizedFontRenderer.HandlesTextPath: boolean;\nbegin\n  Result:= true;\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextSize(sUTF8: string): TSize;\nvar sizeF: TPointF;\nbegin\n  sizeF := TextSizeF(sUTF8);\n  result.cx := round(sizeF.x);\n  result.cy := round(sizeF.y);\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextSizeF(sUTF8: string): TPointF;\nbegin\n  UpdateFont;\n  FVectorizedFont.BidiMode := fbmAuto;\n  result := FVectorizedFont.GetTextSize(sUTF8);\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextSize(sUTF8: string;\n  AMaxWidth: integer; ARightToLeft: boolean): TSize;\nbegin\n  with TextSizeF(sUTF8, AMaxWidth, ARightToLeft) do\n    result := Size(system.Round(x),system.Round(y));\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextSizeF(sUTF8: string;\n  AMaxWidthF: single; ARightToLeft: boolean): TPointF;\nvar\n  remains: string;\n  w,h: single;\nbegin\n  UpdateFont;\n  FVectorizedFont.BidiMode := fbmAuto;\n  result.x := 0;\n  result.y := 0;\n  h := FVectorizedFont.FullHeight;\n  repeat\n    FVectorizedFont.SplitText(sUTF8, AMaxWidthF, remains);\n    w := FVectorizedFont.GetTextSize(sUTF8).x;\n    if w > result.x then result.x := w;\n    IncF(result.y, h);\n    sUTF8 := remains;\n  until remains = '';\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextFitInfo(sUTF8: string;\n  AMaxWidth: integer): integer;\nbegin\n  UpdateFont;\n  FVectorizedFont.BidiMode := fbmAuto;\n  result := FVectorizedFont.TextFitInfo(sUTF8, AMaxWidth);\nend;\n\nfunction TBGRAVectorizedFontRenderer.TextFitInfoF(sUTF8: string;\n  AMaxWidthF: single): integer;\nbegin\n  UpdateFont;\n  FVectorizedFont.BidiMode := fbmAuto;\n  result := FVectorizedFont.TextFitInfo(sUTF8, AMaxWidthF);\nend;\n\ndestructor TBGRAVectorizedFontRenderer.Destroy;\nvar i: integer;\nbegin\n  FCanvas2D.Free;\n  for i := 0 to high(FVectorizedFontArray) do\n    FVectorizedFontArray[i].VectorizedFont.Free;\n  FVectorizedFontArray := nil;\n  inherited Destroy;\nend;\n\n{ TBGRAVectorizedFont }\n\nprocedure TBGRAVectorizedFont.SetResolution(AValue: integer);\nbegin\n  if FResolution=AValue then Exit;\n  FResolution:=AValue;\n  UpdateFont;\nend;\n\nprocedure TBGRAVectorizedFont.SetOrientation(AValue: single);\nbegin\n  if FOrientation=AValue then Exit;\n  FOrientation:=AValue;\n  UpdateMatrix;\nend;\n\nprocedure TBGRAVectorizedFont.SetItalicSlope(AValue: single);\nbegin\n  if FItalicSlope=AValue then Exit;\n  FItalicSlope:=AValue;\n  UpdateMatrix;\nend;\n\nprocedure TBGRAVectorizedFont.SetLCLHeight(AValue: single);\nbegin\n  if (AValue > 0) xor (FontEmHeightSign < 0) then\n    EmHeight := abs(AValue)\n  else\n    FullHeight := abs(AValue);\nend;\n\nfunction TBGRAVectorizedFont.GetEmHeight: single;\nbegin\n  result := FullHeight * FontEmHeightRatio;\nend;\n\nfunction TBGRAVectorizedFont.GetFontPixelMetric: TFontPixelMetric;\nbegin\n  if not FFontPixelMetricComputed and FVectorizeLCL then\n  begin\n    NeedBuffer;\n    FFontPixelMetric := FBuffer.FontPixelMetric;\n    FFontPixelMetricComputed := true;\n  end;\n  result := FFontPixelMetric;\nend;\n\nfunction TBGRAVectorizedFont.GetLCLHeight: single;\nbegin\n  result := FullHeight * FontFullHeightSign;\nend;\n\nprocedure TBGRAVectorizedFont.GlyphCallbackForGlyphSizes(ATextUTF8: string; AGlyph: TBGRAGlyph;\n  AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean);\nbegin\n  with TGlyphSizesCallbackData(AData^) do\n  begin\n    if Count = length(Sizes) then\n      setlength(Sizes, 2*Count+1);\n    Sizes[Count].Text := ATextUTF8;\n    if AGlyph<>nil then\n    begin\n      Sizes[Count].Glyph:= AGlyph.Identifier;\n      Sizes[Count].Width:= AGlyph.Width*FullHeight;\n      Sizes[Count].Height:= AGlyph.Height*FullHeight;\n    end else\n    begin\n      Sizes[Count].Glyph:= '';\n      Sizes[Count].Width:= 0;\n      Sizes[Count].Height:= 0;\n    end;\n    inc(Count);\n  end;\n  AContinue:= true;\nend;\n\nprocedure TBGRAVectorizedFont.UpdateQuadraticCallback(ATextUTF8: string;\n  AGlyph: TBGRAGlyph; AFlags: TBrowseGlyphCallbackFlags; AData: Pointer; out AContinue: boolean);\nbegin\n  if AGlyph is TBGRAPolygonalGlyph then\n    TBGRAPolygonalGlyph(AGlyph).QuadraticCurves:= FQuadraticCurves;\n  AContinue := true;\nend;\n\nprocedure TBGRAVectorizedFont.SetEmHeight(AValue: single);\nbegin\n  if FontEmHeightRatio > 0 then\n    FullHeight := AValue / FontEmHeightRatio;\nend;\n\nprocedure TBGRAVectorizedFont.SetQuadraticCurves(AValue: boolean);\nbegin\n  if FQuadraticCurves=AValue then Exit;\n  FQuadraticCurves:=AValue;\n  BrowseAllGlyphs(@UpdateQuadraticCallback, nil);\nend;\n\nprocedure TBGRAVectorizedFont.SetFontMatrix(AValue: TAffineMatrix);\nbegin\n  FFontMatrix:=AValue;\n  UpdateMatrix;\nend;\n\nprocedure TBGRAVectorizedFont.SetFullHeight(AValue: single);\nbegin\n  if FFullHeight=AValue then Exit;\n  FFullHeight:=AValue;\n  UpdateMatrix;\nend;\n\nprocedure TBGRAVectorizedFont.SetName(AValue: string);\nbegin\n  if FName=AValue then Exit;\n  FName:=AValue;\n  UpdateFont;\nend;\n\nprocedure TBGRAVectorizedFont.SetStyle(AValue: TFontStyles);\nbegin\n  if FStyle=AValue then Exit;\n  FStyle:=AValue;\n  UpdateFont;\n  SubstituteBidiBracket:= fsItalic in AValue;\nend;\n\nfunction TBGRAVectorizedFont.GetFontEmHeightRatio: single;\nvar\n  lEmHeight, lFullHeight: single;\nbegin\n  if not FFontEmHeightRatioComputed then\n  begin\n    if FVectorizeLCL then\n    begin\n      NeedBuffer;\n      FBuffer.FontHeight := 100;\n      lEmHeight := FBuffer.TextSize('Hg').cy;\n      FBuffer.FontFullHeight := 100;\n      lFullHeight := FBuffer.TextSize('Hg').cy;\n      if lEmHeight = 0 then\n        FFontEmHeightRatio := 1\n      else\n        FFontEmHeightRatio := lFullHeight/lEmHeight;\n      FFontEmHeightRatioComputed := true;\n    end else\n    begin\n      result := 1;\n      exit;\n    end;\n  end;\n  result := FFontEmHeightRatio;\nend;\n\nprocedure TBGRAVectorizedFont.SetVectorizeLCL(AValue: boolean);\nbegin\n  if AValue = FVectorizeLCL then exit;\n  FVectorizeLCL := AValue;\n  UpdateFont;\nend;\n\nprocedure TBGRAVectorizedFont.UpdateFont;\nvar i: integer;\n  bestIndex, bestDistance: integer;\n  distance: integer;\nbegin\n  if FVectorizeLCL then\n  begin\n    ClearGlyphs;\n    FFontEmHeightRatio := 1;\n    FFontEmHeightRatioComputed := false;\n    fillchar(FFontPixelMetric,sizeof(FFontPixelMetric),0);\n    FFontPixelMetricComputed := false;\n    FFontFound := True;\n  end else\n  begin\n    bestIndex := -1;\n    bestDistance := 1000;\n    for i := 0 to high(FDirectoryContent) do\n    begin\n      if CompareText(FDirectoryContent[i].FontName,FName) = 0 then\n      begin\n        distance := 0;\n        if (fsBold in FDirectoryContent[i].FontStyle) xor (fsBold in FStyle) then inc(distance, 10);\n        if (fsItalic in FDirectoryContent[i].FontStyle) xor (fsItalic in FStyle) then inc(distance, 5);\n        if (fsStrikeOut in FDirectoryContent[i].FontStyle) xor (fsStrikeOut in FStyle) then inc(distance, 1);\n        if (fsUnderline in FDirectoryContent[i].FontStyle) xor (fsUnderline in FStyle) then inc(distance, 1);\n        if (bestIndex = -1) or (distance < bestDistance) then\n        begin\n          bestIndex := i;\n          bestDistance := distance;\n          if FDirectoryContent[i].FontStyle = FStyle then break;\n        end;\n      end;\n    end;\n    if bestIndex <> -1 then\n    begin\n      if not (fsItalic in FDirectoryContent[bestIndex].FontStyle) and (fsItalic in FStyle) then\n        ItalicSlope := 0.25\n      else if (fsItalic in FDirectoryContent[bestIndex].FontStyle) and not (fsItalic in FStyle) then\n        ItalicSlope := -0.25\n      else\n        ItalicSlope := 0;\n\n      UnderlineDecoration := not (fsUnderline in FDirectoryContent[bestIndex].FontStyle) and (fsUnderline in FStyle);\n      StrikeOutDecoration := not (fsStrikeOut in FDirectoryContent[bestIndex].FontStyle) and (fsStrikeOut in FStyle);\n\n      ClearGlyphs;\n      LoadGlyphsFromFile(FDirectoryContent[bestIndex].Filename);\n      FFontFound := True;\n    end else\n      FFontFound := false;\n  end;\nend;\n\nprocedure TBGRAVectorizedFont.UpdateMatrix;\nbegin\n  TypeWriterMatrix := FFontMatrix*AffineMatrixRotationDeg(-Orientation*0.1)*AffineMatrixScale(FFullHeight,FFullHeight)*AffineMatrixLinear(PointF(1,0),PointF(-FItalicSlope,1));\nend;\n\nprocedure TBGRAVectorizedFont.NeedBuffer;\nbegin\n  if not Assigned(FBuffer) then\n  begin\n    FBuffer := BGRABitmapFactory.Create;\n    FBuffer.FontRenderer := TBGRASystemFontRenderer.Create;\n  end;\n  FBuffer.FontName := Name;\n  FBuffer.FontStyle := Style;\n  FBuffer.FontFullHeight := Resolution;\n  FBuffer.FontQuality := fqSystem;\nend;\n\nconstructor TBGRAVectorizedFont.Create;\nbegin\n  inherited Create;\n  Init(True);\nend;\n\nconstructor TBGRAVectorizedFont.Create(AVectorizeLCL: boolean);\nbegin\n  inherited Create;\n  Init(AVectorizeLCL);\nend;\n\ndestructor TBGRAVectorizedFont.Destroy;\nbegin\n  FBuffer.Free;\n  inherited Destroy;\nend;\n\nfunction TBGRAVectorizedFont.GetGlyphSize(AIdentifier: string): TPointF;\nvar g: TBGRAGlyph;\nbegin\n  g := GetGlyph(AIdentifier);\n  if g = nil then result := EmptyPointF else\n    result := PointF(g.Width*FullHeight,g.Height*FullHeight);\nend;\n\nfunction TBGRAVectorizedFont.GetTextGlyphSizes(ATextUTF8: string): TGlyphSizes;\nvar\n  data: TGlyphSizesCallbackData;\nbegin\n  data.Count:= 0;\n  setlength(data.Sizes, UTF8Length(ATextUTF8));\n  BrowseGlyphs(ATextUTF8, @GlyphCallbackForGlyphSizes, @data, false);\n  setlength(data.Sizes, data.Count);\n  result := data.Sizes;\nend;\n\nfunction TBGRAVectorizedFont.GetTextSize(ATextUTF8: string): TPointF;\nbegin\n  result := GetTextSizeBeforeTransform(ATextUTF8)*FullHeight;\nend;\n\nfunction TBGRAVectorizedFont.TextFitInfo(ATextUTF8: string; AMaxWidth: single): integer;\nvar\n  charCount, byteCount: integer;\n  usedWidth: single;\nbegin\n  if FullHeight=0 then result := UTF8Length(ATextUTF8) else\n  begin\n    TextFitInfoBeforeTransform(ATextUTF8, AMaxWidth/FullHeight, charCount, byteCount, usedWidth);\n    result := charCount;\n  end;\nend;\n\nprocedure TBGRAVectorizedFont.SplitText(var ATextUTF8: string; AMaxWidth: single;\n  out ARemainsUTF8: string);\nvar\n  pstr: pchar;\n  p,left,charlen: integer;\n  totalWidth: single;\n  firstChar: boolean;\n  nextchar: string;\n  g: TBGRAGlyph;\nbegin\n  totalWidth := 0;\n  if ATextUTF8 = '' then\n  begin\n    ARemainsUTF8 := '';\n    exit;\n  end else\n  begin\n    p := 1;\n    pstr := @ATextUTF8[1];\n    left := length(ATextUTF8);\n    firstChar := true;\n    while left > 0 do\n    begin\n      if RemoveLineEnding(ATextUTF8,p) then\n      begin\n        ARemainsUTF8 := copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n        ATextUTF8 := copy(ATextUTF8,1,p-1);\n        exit;\n      end;\n\n      charlen := UTF8CharacterLength(pstr);\n      setlength(nextchar, charlen);\n      move(pstr^, nextchar[1], charlen);\n      inc(pstr,charlen);\n\n      g := GetGlyph(nextchar);\n      if g <> nil then\n      begin\n        IncF(totalWidth, g.Width*FullHeight);\n        if not firstChar and (totalWidth > AMaxWidth) then\n        begin\n          ARemainsUTF8:= copy(ATextUTF8,p,length(ATextUTF8)-p+1);\n          ATextUTF8 := copy(ATextUTF8,1,p-1);\n          if Assigned(FWordBreakHandler) then\n            FWordBreakHandler(ATextUTF8,ARemainsUTF8) else\n              DefaultWordBreakHandler(ATextUTF8,ARemainsUTF8);\n          exit;\n        end;\n      end;\n\n      dec(left,charlen);\n      inc(p,charlen);\n      firstChar := false;\n    end;\n  end;\n  ARemainsUTF8 := ''; //no split\nend;\n\nprocedure TBGRAVectorizedFont.DrawText(ADest: TBGRACanvas2D; ATextUTF8: string; X,\n  Y: Single; AAlign: TBGRATypeWriterAlignment);\nvar underlinePoly: ArrayOfTPointF;\n  m: TAffineMatrix;\n  i: integer;\n  deltaY: single;\nbegin\n  inherited DrawText(ADest, ATextUTF8, X, Y, AAlign);\n  if AAlign in [twaBottom,twaBottomLeft,twaBottomRight] then deltaY := -1 else\n  if AAlign in [twaLeft,twaMiddle,twaRight] then deltaY := -0.5 else\n    deltaY := 0;\n  if UnderlineDecoration and (Resolution > 0) then\n  begin\n    underlinePoly := BGRATextUnderline(PointF(0,deltaY), GetTextSize(ATextUTF8).x/FullHeight, FontPixelMetric.Baseline/Resolution,\n      (FontPixelMetric.Baseline-FontPixelMetric.CapLine)/Resolution);\n    if underlinePoly <> nil then\n    begin\n      m := GetTextMatrix(ATextUTF8, X,Y,AAlign);\n      for i := 0 to high(underlinePoly) do\n        underlinePoly[i] := m*underlinePoly[i];\n      if OutlineMode <> twoPath then ADest.beginPath;\n      ADest.moveTo(m*underlinePoly[high(underlinePoly)]);\n      for i := high(underlinePoly)-1 downto 0 do\n        ADest.lineTo(m*underlinePoly[i]);\n      DrawLastPath(ADest);\n    end;\n  end;\n  if StrikeOutDecoration and (Resolution > 0) then\n  begin\n    underlinePoly := BGRATextStrikeOut(PointF(0,deltaY), GetTextSize(ATextUTF8).x/FullHeight, FontPixelMetric.Baseline/Resolution,\n      (FontPixelMetric.Baseline-FontPixelMetric.CapLine)/Resolution, (FontPixelMetric.Baseline-FontPixelMetric.xLine)/Resolution);\n    if underlinePoly <> nil then\n    begin\n      m := GetTextMatrix(ATextUTF8, X,Y,AAlign);\n      for i := 0 to high(underlinePoly) do\n        underlinePoly[i] := m*underlinePoly[i];\n      if OutlineMode <> twoPath then ADest.beginPath;\n      ADest.moveTo(m*underlinePoly[high(underlinePoly)]);\n      for i := high(underlinePoly)-1 downto 0 do\n        ADest.lineTo(m*underlinePoly[i]);\n      DrawLastPath(ADest);\n    end;\n  end;\nend;\n\nprocedure TBGRAVectorizedFont.CopyTextPathTo(ADest: IBGRAPath;\n  ATextUTF8: string; X, Y: Single; AAlign: TBGRATypeWriterAlignment);\nvar underlinePoly: ArrayOfTPointF;\n  m: TAffineMatrix;\n  i: integer;\n  deltaY: single;\nbegin\n  inherited CopyTextPathTo(ADest,ATextUTF8, X, Y, AAlign);\n  if AAlign in [twaBottom,twaBottomLeft,twaBottomRight] then deltaY := -1 else\n  if AAlign in [twaLeft,twaMiddle,twaRight] then deltaY := -0.5 else\n    deltaY := 0;\n  if UnderlineDecoration and (Resolution > 0) then\n  begin\n    underlinePoly := BGRATextUnderline(PointF(0,deltaY), GetTextSize(ATextUTF8).x/FullHeight, FontPixelMetric.Baseline/Resolution,\n      (FontPixelMetric.Baseline-FontPixelMetric.CapLine)/Resolution);\n    if underlinePoly <> nil then\n    begin\n      m := GetTextMatrix(ATextUTF8, X,Y,AAlign);\n      ADest.moveTo(m*underlinePoly[high(underlinePoly)]);\n      for i := high(underlinePoly)-1 downto 0 do\n        ADest.lineTo(m*underlinePoly[i]);\n      ADest.closePath;\n    end;\n  end;\n  if StrikeOutDecoration and (Resolution > 0) then\n  begin\n    underlinePoly := BGRATextStrikeOut(PointF(0,deltaY), GetTextSize(ATextUTF8).x/FullHeight, FontPixelMetric.Baseline/Resolution,\n      (FontPixelMetric.Baseline-FontPixelMetric.CapLine)/Resolution, (FontPixelMetric.Baseline-FontPixelMetric.xLine)/Resolution);\n    if underlinePoly <> nil then\n    begin\n      m := GetTextMatrix(ATextUTF8, X,Y,AAlign);\n      ADest.moveTo(m*underlinePoly[high(underlinePoly)]);\n      for i := high(underlinePoly)-1 downto 0 do\n        ADest.lineTo(m*underlinePoly[i]);\n      ADest.closePath;\n    end;\n  end;\nend;\n\nprocedure TBGRAVectorizedFont.DrawTextWordBreak(ADest: TBGRACanvas2D;\n  ATextUTF8: string; X, Y, MaxWidth: Single; AAlign: TBGRATypeWriterAlignment);\nvar ARemains: string;\n  pos,step: TPointF;\n  lines: TStringList;\n  i: integer;\n  lineShift: single;\n  oldItalicSlope: single;\n  lineAlignment: TBGRATypeWriterAlignment;\nbegin\n  if (ATextUTF8 = '') or (MaxWidth <= 0) then exit;\n\n  oldItalicSlope:= ItalicSlope;\n  ItalicSlope := 0;\n  pos := PointF(X,Y);\n  step := TypeWriterMatrix*PointF(0,1);\n  ItalicSlope := oldItalicSlope;\n\n  if AAlign in[twaTop,twaMiddle,twaBottom] then\n    lineAlignment := twaMiddle\n  else if AAlign in[twaTopLeft,twaLeft,twaBottomLeft] then\n  begin\n    if ItalicSlope < 0 then\n      lineAlignment:= twaTopLeft\n    else\n      lineAlignment := twaBottomLeft;\n  end else\n  begin\n    if ItalicSlope < 0 then\n      lineAlignment := twaBottomRight\n    else\n      lineAlignment := twaTopRight;\n  end;\n\n  if AAlign in[twaTopLeft,twaTop,twaTopRight] then\n  begin\n    case lineAlignment of\n    twaMiddle: lineShift := 0.5;\n    twaBottomLeft,twaBottomRight: lineShift := 1;\n    else {twaTopRight,twaTopLeft} lineShift := 0;\n    end;\n    pos.Offset(step*lineShift);\n    repeat\n      SplitText(ATextUTF8, MaxWidth, ARemains);\n      DrawText(ADest,ATextUTF8,pos.X,pos.Y,lineAlignment);\n      ATextUTF8 := ARemains;\n      pos.Offset(step);\n    until ARemains = '';\n  end else\n  begin\n    lines := TStringList.Create;\n    repeat\n      SplitText(ATextUTF8, MaxWidth, ARemains);\n      lines.Add(ATextUTF8);\n      ATextUTF8 := ARemains;\n    until ARemains = '';\n    if AAlign in[twaLeft,twaMiddle,twaRight] then lineShift := lines.Count/2-0.5\n    else if AAlign in[twaBottomLeft,twaBottom,twaBottomRight] then lineShift := lines.Count-0.5\n    else lineShift := -0.5;\n\n    case lineAlignment of\n    twaMiddle: ;\n    twaBottomLeft,twaBottomRight: DecF(lineShift, 0.5);\n    twaTopRight,twaTopLeft : IncF(lineShift, 0.5);\n    end;\n\n    pos.Offset(step*(-lineShift));\n    for i := 0 to lines.Count-1 do\n    begin\n      DrawText(ADest,lines[i],pos.X,pos.Y,lineAlignment);\n      pos.Offset(step);\n    end;\n    lines.Free;\n  end;\nend;\n\nprocedure TBGRAVectorizedFont.DrawTextRect(ADest: TBGRACanvas2D; ATextUTF8: string;\n  X1, Y1, X2, Y2: Single; AAlign: TBGRATypeWriterAlignment);\nvar X,Y: single;\n  oldOrientation: single;\nbegin\n  if X2 <= X1 then exit;\n  if AAlign in[twaTopLeft,twaTop,twaTopRight] then Y := Y1 else\n  if AAlign in[twaLeft,twaMiddle,twaRight] then Y := (Y1+Y2)/2 else\n  {twaBottomLeft,twaBottom,twaBottomRight} Y := Y2;\n  if AAlign in[twaLeft,twaTopLeft,twaBottomLeft] then X := X1 else\n  if AAlign in[twaTop,twaMiddle,twaBottom] then X := (X1+X2)/2 else\n  {twaRight,twaTopRight,twaBottomRight} X := X2;\n  oldOrientation:= Orientation;\n  Orientation:= 0;\n  DrawTextWordBreak(ADest,ATextUTF8,X,Y,X2-X1,AAlign);\n  Orientation:= oldOrientation;\nend;\n\nprocedure TBGRAVectorizedFont.DrawTextRect(ADest: TBGRACanvas2D; ATextUTF8: string;\n  ATopLeft, ABottomRight: TPointF; AAlign: TBGRATypeWriterAlignment);\nbegin\n  DrawTextRect(ADest,ATextUTF8,ATopLeft.X,ATopLeft.Y,ABottomRight.X,ABottomRight.Y,AAlign);\nend;\n\nfunction TBGRAVectorizedFont.GetTextWordBreakGlyphBoxes(ATextUTF8: string; X, Y,\n  MaxWidth: Single; AAlign: TBGRATypeWriterAlignment): TGlyphBoxes;\nvar ARemains: string;\n  pos,step: TPointF;\n  lines: TStringList;\n  i: integer;\n  lineShift: single;\n  oldItalicSlope: single;\n  tempArray: array of TGlyphBoxes;\n  tempPos,j: integer;\n  lineAlignment: TBGRATypeWriterAlignment;\nbegin\n  result := nil;\n  if ATextUTF8 = '' then exit;\n\n  oldItalicSlope:= ItalicSlope;\n  ItalicSlope := 0;\n  pos := PointF(X,Y);\n  step := TypeWriterMatrix*PointF(0,1);\n  ItalicSlope := oldItalicSlope;\n\n  if AAlign in[twaTop,twaMiddle,twaBottom] then\n    lineAlignment := twaMiddle\n  else if AAlign in[twaTopLeft,twaLeft,twaBottomLeft] then\n  begin\n    if ItalicSlope < 0 then\n      lineAlignment:= twaTopLeft\n    else\n      lineAlignment := twaBottomLeft;\n  end else\n  begin\n    if ItalicSlope < 0 then\n      lineAlignment := twaBottomRight\n    else\n      lineAlignment := twaTopRight;\n  end;\n\n  lines := TStringList.Create;\n  repeat\n    SplitText(ATextUTF8, MaxWidth, ARemains);\n    lines.Add(ATextUTF8);\n    ATextUTF8 := ARemains;\n  until ARemains = '';\n\n  if AAlign in[twaLeft,twaMiddle,twaRight] then lineShift := lines.Count/2-0.5\n  else if AAlign in[twaBottomLeft,twaBottom,twaBottomRight] then lineShift := lines.Count-0.5\n  else lineShift := -0.5;\n\n  case lineAlignment of\n  twaMiddle: ;\n  twaBottomLeft, twaBottomRight: DecF(lineShift, 0.5);\n  twaTopRight,twaTopLeft : IncF(lineShift, 0.5);\n  end;\n\n  pos.Offset(step*(-lineShift));\n  setlength(tempArray, lines.Count);\n  tempPos := 0;\n  for i := 0 to lines.Count-1 do\n  begin\n    tempArray[i] := GetTextGlyphBoxes(lines[i],pos.X,pos.Y,lineAlignment);\n    inc(tempPos, length(tempArray[i]));\n    pos.Offset(step);\n  end;\n  lines.Free;\n  setlength(result, tempPos);\n  tempPos := 0;\n  for i := 0 to high(tempArray) do\n    for j := 0 to high(tempArray[i]) do\n    begin\n      result[tempPos] := tempArray[i][j];\n      inc(tempPos);\n    end;\nend;\n\nfunction TBGRAVectorizedFont.GetTextRectGlyphBoxes(ATextUTF8: string; X1, Y1, X2,\n  Y2: Single; AAlign: TBGRATypeWriterAlignment): TGlyphBoxes;\nvar X,Y,oldOrientation: single;\nbegin\n  if X2 <= X1 then\n  begin\n    result := nil;\n    exit;\n  end;\n  if AAlign in[twaTopLeft,twaTop,twaTopRight] then Y := Y1 else\n  if AAlign in[twaLeft,twaMiddle,twaRight] then Y := (Y1+Y2)/2 else\n  {twaBottomLeft,twaBottom,twaBottomRight} Y := Y2;\n  if AAlign in[twaLeft,twaTopLeft,twaBottomLeft] then X := X1 else\n  if AAlign in[twaTop,twaMiddle,twaBottom] then X := (X1+X2)/2 else\n  {twaRight,twaTopRight,twaBottomRight} X := X2;\n  oldOrientation:= Orientation;\n  Orientation:= 0;\n  result := GetTextWordBreakGlyphBoxes(ATextUTF8,X,Y,X2-X1,AAlign);\n  Orientation:= oldOrientation;\nend;\n\nfunction TBGRAVectorizedFont.GetTextRectGlyphBoxes(ATextUTF8: string; ATopLeft,\n  ABottomRight: TPointF; AAlign: TBGRATypeWriterAlignment): TGlyphBoxes;\nbegin\n  result := GetTextRectGlyphBoxes(ATextUTF8,ATopLeft.X,ATopLeft.Y,ABottomRight.X,ABottomRight.Y,AAlign);\nend;\n\nprocedure TBGRAVectorizedFont.UpdateDirectory;\nvar\n  NbFiles: integer;\n  SearchRec: TSearchRec;\n  Info: TBGRAGlyphsInfo;\n  Fullname: string;\nbegin\n  NbFiles := 0;\n  FDirectoryContent := nil;\n  if FDirectory = '' then exit;\n  if (length(FDirectory) > 0) and not (FDirectory[length(FDirectory)] in AllowDirectorySeparators) then\n    AppendStr(FDirectory, DirectorySeparator);\n  if FindFirstUTF8(FDirectory +'*.glyphs', faAnyFile, SearchRec) = 0 then\n  repeat\n    {$PUSH}{$WARNINGS OFF}\n    if (faDirectory or faVolumeId or faSysFile) and SearchRec.Attr = 0 then\n    {$POP}\n    begin\n      Fullname := FDirectory+SearchRec.Name;\n      Info := LoadGlyphsInfo(Fullname);\n      if (info.Name <> '') and (info.NbGlyphs > 0) then\n      begin\n        if NbFiles = length(FDirectoryContent) then\n          setlength(FDirectoryContent,2*NbFiles+1);\n        FDirectoryContent[NbFiles].Filename:= Fullname;\n        FDirectoryContent[NbFiles].FontName:= info.Name;\n        FDirectoryContent[NbFiles].FontStyle:= info.Style;\n        inc(NbFiles);\n      end;\n    end;\n  until FindNext(SearchRec) <> 0;\n  FindClose(SearchRec);\n  SetLength(FDirectoryContent,NbFiles);\nend;\n\nfunction TBGRAVectorizedFont.LoadGlyphsInfo(AFilenameUTF8: string): TBGRAGlyphsInfo;\nvar Stream: TFileStreamUTF8;\n  twHeader: TBGRACustomTypeWriterHeader;\n  vfHeader: TBGRAVectorizedFontHeader;\nbegin\n  result.Name := '';\n  result.NbGlyphs := 0;\n  result.Style := [];\n  Stream := nil;\n  try\n    Stream := TFileStreamUTF8.Create(AFilenameUTF8,fmOpenRead);\n    Stream.Position := 4;\n    twHeader := ReadCustomTypeWriterHeader(Stream);\n    result.NbGlyphs := twHeader.NbGlyphs;\n    if twHeader.HeaderName = HeaderName then\n    begin\n      vfHeader := ReadVectorizedFontHeader(Stream);\n      result.Name := vfHeader.Name;\n      result.Style:= vfHeader.Style;\n    end;\n  except\n    on ex:exception do\n    begin\n\n    end;\n  end;\n  Stream.Free;\nend;\n\nfunction TBGRAVectorizedFont.GetGlyph(AIdentifier: string): TBGRAGlyph;\nvar size: TSize;\n  g: TBGRAPolygonalGlyph;\n  pts: array of TPointF;\n  dx,dy: Integer;\nbegin\n  Result:=inherited GetGlyph(AIdentifier);\n  if (result = nil) and (FResolution > 0) and FVectorizeLCL then\n  begin\n    g := TBGRAPolygonalGlyph.Create(AIdentifier);\n    dx := FResolution div 2;\n    dy := FResolution div 2;\n    NeedBuffer;\n    size := FBuffer.TextSize(AIdentifier);\n    FBuffer.SetSize(size.cx+2*dx,FResolution+2*dy);\n    FBuffer.Fill(BGRAWhite);\n    FBuffer.TextOut(dx,dy, AIdentifier, BGRABlack);\n    pts := VectorizeMonochrome(FBuffer,1/FResolution,False,true,50);\n    g.SetPoints(pts);\n    g.QuadraticCurves := FQuadraticCurves;\n    g.Width := size.cx/FResolution;\n    g.Height := 1;\n    g.Offset := PointF(-dx/FResolution,-dy/FResolution);\n    SetGlyph(AIdentifier,g);\n    result := g;\n  end else\n  if (result <> nil) and (result is TBGRAPolygonalGlyph) then\n    TBGRAPolygonalGlyph(result).QuadraticCurves := FQuadraticCurves;\nend;\n\nprocedure TBGRAVectorizedFont.DefaultWordBreakHandler(var ABefore,AAfter: string);\nbegin\n  BGRADefaultWordBreakHandler(ABefore,AAfter);\nend;\n\nprocedure TBGRAVectorizedFont.Init(AVectorizeLCL: boolean);\nbegin\n  FName := 'Arial';\n  FStyle := [];\n  FFontMatrix := AffineMatrixIdentity;\n  FOrientation := 0;\n  FResolution := 100;\n  FFontEmHeightRatio := 1;\n  FFontEmHeightRatioComputed := false;\n  FVectorizeLCL:= AVectorizeLCL;\n  if BGRABitmapFactory = nil then\n    raise Exception.Create('No bitmap factory available');\n  FBuffer := nil;\n  FFullHeight := 20;\n  FItalicSlope := 0;\n  LigatureWithF := true;\n  UpdateFont;\n  UpdateMatrix;\n  FWordBreakHandler:= nil;\nend;\n\nfunction TBGRAVectorizedFont.CustomHeaderSize: integer;\nbegin\n  Result:= (inherited CustomHeaderSize) + 4+length(FName)+4 + sizeof(single) + 4 + 5*4;\nend;\n\nconst\n  FS_BOLD = 1;\n  FS_ITALIC = 2;\n  FS_UNDERLINE = 4;\n  FS_STRIKE_OUT = 8;\n\nfunction IntToFontStyles(AFlags: integer): TFontStyles;\nbegin\n  Result:= [];\n  if (AFlags and FS_BOLD)<>0 then Include(Result, fsBold);\n  if (AFlags and FS_ITALIC)<>0 then Include(Result, fsItalic);\n  if (AFlags and FS_UNDERLINE)<>0 then Include(Result, fsUnderline);\n  if (AFlags and FS_STRIKE_OUT)<>0 then Include(Result, fsStrikeOut);\nend;\n\nfunction FontStylesToInt(AStyles: TFontStyles): Integer;\nbegin\n  Result := 0;\n  If fsBold in AStyles then Inc(Result, FS_BOLD);\n  If fsItalic in AStyles then Inc(Result, FS_ITALIC);\n  If fsUnderline in AStyles then Inc(Result, FS_UNDERLINE);\n  If fsStrikeOut in AStyles then Inc(Result, FS_STRIKE_OUT);\nend;\n\nprocedure TBGRAVectorizedFont.WriteCustomHeader(AStream: TStream);\nvar metric: TFontPixelMetric;\nbegin\n  inherited WriteCustomHeader(AStream);\n  LEWriteLongint(AStream, length(FName));\n  AStream.Write(FName[1],length(FName));\n  LEWriteLongint(AStream, FontStylesToInt(FStyle));\n  LEWriteSingle(AStream, FontEmHeightRatio);\n  LEWriteLongint(AStream, Resolution);\n  metric := FontPixelMetric;\n  LEWriteLongint(AStream, metric.Baseline);\n  LEWriteLongint(AStream, metric.xLine);\n  LEWriteLongint(AStream, metric.CapLine);\n  LEWriteLongint(AStream, metric.DescentLine);\n  LEWriteLongint(AStream, metric.Lineheight);\nend;\n\nprocedure TBGRAVectorizedFont.ReadAdditionalHeader(AStream: TStream);\nvar Header: TBGRAVectorizedFontHeader;\nbegin\n  inherited ReadAdditionalHeader(AStream);\n  Header := ReadVectorizedFontHeader(AStream);\n  FName := Header.Name;\n  FStyle := Header.Style;\n  if header.EmHeightRatio <> 0 then\n  begin\n    FFontEmHeightRatio := Header.EmHeightRatio;\n    FFontEmHeightRatioComputed := true;\n  end else\n  begin\n    FFontEmHeightRatio := 1;\n    FFontEmHeightRatioComputed := false;\n  end;\n  FFontPixelMetric := Header.PixelMetric;\n  FFontPixelMetricComputed := True;\n  if not FVectorizeLCL then\n    FResolution := Header.Resolution;\nend;\n\nfunction TBGRAVectorizedFont.ReadVectorizedFontHeader(AStream: TStream): TBGRAVectorizedFontHeader;\nvar lNameLength: integer;\nbegin\n  lNameLength := LEReadLongint(AStream);\n  setlength(result.Name, lNameLength);\n  AStream.Read(result.Name[1],length(result.Name));\n  result.Style := IntToFontStyles(LEReadLongint(AStream));\n  result.EmHeightRatio:= LEReadSingle(AStream);\n  result.Resolution := LEReadLongint(AStream);\n  result.PixelMetric.Baseline := LEReadLongint(AStream);\n  result.PixelMetric.xLine := LEReadLongint(AStream);\n  result.PixelMetric.CapLine := LEReadLongint(AStream);\n  result.PixelMetric.DescentLine := LEReadLongint(AStream);\n  result.PixelMetric.Lineheight := LEReadLongint(AStream);\n  result.PixelMetric.Defined := result.PixelMetric.Lineheight > 0;\nend;\n\nfunction TBGRAVectorizedFont.HeaderName: string;\nbegin\n  Result:= 'TBGRAVectorizedFont';\nend;\n\nprocedure TBGRAVectorizedFont.SetDirectory(const AValue: string);\nbegin\n  if Trim(AValue) = Trim(FDirectory) then exit;\n  FDirectory := Trim(AValue);\n  UpdateDirectory;\n  UpdateFont;\nend;\n\nfunction TBGRAVectorizedFont.ComputeKerning(AIdLeft, AIdRight: string): single;\nvar\n  together: String;\nbegin\n  if (Resolution = 0) or not VectorizeLCL then exit(0);\n  if IsRightToLeftUTF8(AIdLeft) then\n  begin\n    if IsRightToLeftUTF8(AIdRight) then\n      together := AIdRight + AIdLeft\n    else\n      together := UTF8OverrideDirection(AIdRight + AIdLeft, true);\n  end else\n    together := AIdLeft + AIdRight;\n  NeedBuffer;\n  result := FBuffer.TextSize(together).cx/Resolution\n            - Glyph[AIdLeft].Width - Glyph[AIdRight].Width;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrawinbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of BGRABitmap for Windows.\n  Notably, it provides direct access to bitmap data. }\nunit BGRAWinBitmap;\n{ This unit should NOT be added to the **uses** clause. }\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRALCLBitmap, Windows, Graphics, GraphType;\n\ntype\n  { Implementation of BGRABitmap for Windows }\n  TBGRAWinBitmap = class(TBGRALCLBitmap)\n  private\n    procedure AlphaCorrectionNeeded;\n  protected\n    DIB_SectionHandle: HBITMAP;\n    FReversed: boolean;\n    function DIBitmapInfo(AWidth, AHeight: integer): TBitmapInfo;\n\n    procedure ReallocData; override;\n    procedure FreeData; override;\n\n    procedure RebuildBitmap; override;\n    procedure FreeBitmap; override;\n\n    procedure Init; override;\n    function GetBitmap: TBitmap; override;\n\n  public\n    procedure LoadFromBitmapIfNeeded; override;\n    procedure Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean=True); overload; override;\n    procedure Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean = True); overload; override;\n    procedure DataDrawOpaque(ACanvas: TCanvas; ARect: TRect; AData: Pointer;\n      ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer); override;\n    procedure GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer); override;\n  end;\n\nimplementation\n\nuses BGRADefaultBitmap, BGRABitmapTypes;\n\ntype\n  { Tracker for changes in the bitmap }\n  TWinBitmapTracker = class(TBitmap)\n  protected\n    FUser: TBGRAWinBitmap;\n    procedure Changed(Sender: TObject); override;\n  public\n    constructor Create(AUser: TBGRAWinBitmap); overload;\n    property User: TBGRAWinBitmap read FUser write FUser;\n  end;\n\nprocedure TWinBitmapTracker.Changed(Sender: TObject);\nbegin\n  if FUser <> nil then\n    FUser.AlphaCorrectionNeeded;\n  inherited Changed(Sender);\nend;\n\nconstructor TWinBitmapTracker.Create(AUser: TBGRAWinBitmap);\nbegin\n  FUser := AUser;\n  inherited Create;\nend;\n\n{ TBGRAWinBitmap }\n\nprocedure TBGRAWinBitmap.FreeData;\nbegin\n  if DIB_SectionHandle <> 0 then\n  begin\n    FreeBitmap;\n    DeleteObject(DIB_SectionHandle);\n    FDataByte := nil;\n    DIB_SectionHandle := 0;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.RebuildBitmap;\nbegin\n  FreeBitmap;\n\n  FBitmap := TWinBitmapTracker.Create(nil);\n  FBitmap.Handle := DIB_SectionHandle;\n  TWinBitmapTracker(FBitmap).User := self;\nend;\n\nprocedure TBGRAWinBitmap.FreeBitmap;\nbegin\n  if FBitmap <> nil then\n  begin\n    TWinBitmapTracker(FBitmap).User := nil;\n    FBitmap.ReleaseHandle;\n    FBitmap.Free;\n    FBitmap := nil;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.Init;\nbegin\n  inherited Init;\n  FLineOrder := riloBottomToTop;\nend;\n\nfunction TBGRAWinBitmap.GetBitmap: TBitmap;\nbegin\n  Result:=inherited GetBitmap;\n  if (LineOrder = riloTopToBottom) and not FReversed then\n  begin\n    VerticalFlip;\n    FReversed:= true;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.LoadFromBitmapIfNeeded;\nbegin\n  if FReversed then\n  begin\n    FReversed := false;\n    VerticalFlip;\n  end;\n  if FAlphaCorrectionNeeded then\n  begin\n    DoAlphaCorrection;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.Draw(ACanvas: TCanvas; x, y: integer; Opaque: boolean);\nbegin\n  if self = nil then exit;\n  Draw(ACanvas, BGRAClasses.Rect(x,y,x+Width,y+Height), Opaque);\nend;\n\nprocedure TBGRAWinBitmap.Draw(ACanvas: TCanvas; Rect: TRect; Opaque: boolean);\nvar\n  info:      TBITMAPINFO;\nbegin\n  if (self = nil) or (Width = 0) or (Height = 0) then exit;\n  if TBGRAPixel_RGBAOrder then SwapRedBlue;\n  if Opaque then\n  begin\n    info := DIBitmapInfo(Width, Height);\n    if LineOrder = riloTopToBottom then\n      StretchDIBits(ACanvas.Handle, Rect.Left, Rect.Bottom, Rect.Right -\n        Rect.Left, Rect.Top - Rect.Bottom,\n        0, 0, Width, Height, Data, info, DIB_RGB_COLORS, SRCCOPY)\n    else\n      StretchDIBits(ACanvas.Handle, Rect.Left, Rect.Top, Rect.Right -\n        Rect.Left, Rect.Bottom - Rect.Top,\n        0, 0, Width, Height, Data, info, DIB_RGB_COLORS, SRCCOPY);\n  end\n  else\n  begin\n    if Empty then exit;\n    if LineOrder = riloTopToBottom then VerticalFlip;\n    LoadFromBitmapIfNeeded;\n    ACanvas.StretchDraw(Rect, Bitmap);\n    if LineOrder = riloTopToBottom then VerticalFlip;\n  end;\n  if TBGRAPixel_RGBAOrder then SwapRedBlue;\nend;\n\nprocedure TBGRAWinBitmap.DataDrawOpaque(ACanvas: TCanvas; ARect: TRect;\n  AData: Pointer; ALineOrder: TRawImageLineOrder; AWidth, AHeight: integer);\nvar\n  info:      TBITMAPINFO;\n  IsFlipped: boolean;\n  Temp:      TBGRAPtrBitmap;\nbegin\n  Temp      := nil;\n  IsFlipped := False;\n  if ALineOrder = riloTopToBottom then\n  begin\n    Temp := TBGRAPtrBitmap.Create(AWidth, AHeight, AData);\n    Temp.VerticalFlip;\n    IsFlipped := True;\n  end;\n  if TBGRAPixel_RGBAOrder then\n  begin\n    if Temp = nil then\n      Temp := TBGRAPtrBitmap.Create(AWidth, AHeight, AData);\n    Temp.SwapRedBlue;\n  end;\n\n  info := DIBitmapInfo(AWidth, AHeight);\n  StretchDIBits(ACanvas.Handle, ARect.Left, ARect.Top, ARect.Right -\n    ARect.Left, ARect.Bottom - ARect.Top,\n    0, 0, AWidth, AHeight, AData, info, DIB_RGB_COLORS, SRCCOPY);\n\n  if Temp <> nil then\n  begin\n    if TBGRAPixel_RGBAOrder then Temp.SwapRedBlue;\n    if IsFlipped then\n      Temp.VerticalFlip;\n    Temp.Free;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.AlphaCorrectionNeeded;\nbegin\n  FAlphaCorrectionNeeded := True;\nend;\n\nfunction TBGRAWinBitmap.DIBitmapInfo(AWidth, AHeight: integer): TBitmapInfo;\nbegin\n  with {%H-}Result.bmiHeader do\n  begin\n    biSize      := sizeof(Result.bmiHeader);\n    biWidth     := AWidth;\n    biHeight    := AHeight;\n    biPlanes    := 1;\n    biBitCount  := 32;\n    biCompression := BI_RGB;\n    biSizeImage := 0;\n    biXPelsPerMeter := 0;\n    biYPelsPerMeter := 0;\n    biClrUsed   := 0;\n    biClrImportant := 0;\n  end;\nend;\n\nprocedure TBGRAWinBitmap.ReallocData;\nvar\n  ScreenDC: HDC;\n  info:     TBitmapInfo;\nbegin\n  FreeData;\n  if (Width <> 0) and (Height <> 0) then\n  begin\n    ScreenDC := GetDC(0);\n    try\n      info     := DIBitmapInfo(Width, Height);\n      DIB_SectionHandle := CreateDIBSection(ScreenDC, info, DIB_RGB_COLORS, FDataByte, 0, 0);\n\n      if (NbPixels > 0) and (FDataByte = nil) then\n        SysUtils.OutOfMemoryError;\n    finally\n      ReleaseDC(0, ScreenDC);\n    end;\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TBGRAWinBitmap.GetImageFromCanvas(CanvasSource: TCanvas; x, y: integer);\nbegin\n  self.Canvas.CopyRect(BGRAClasses.rect(0, 0, Width, Height), CanvasSource,\n    BGRAClasses.rect(X, Y, X + Width, Y + Height));\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrawinresource.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implementation of Windows resource file format (RES) }\nunit BGRAWinResource;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRAMultiFileType, BGRABitmapTypes, BGRAReadBMP;\n\nconst\n  RT_CURSOR = 1;\n  RT_BITMAP = 2;\n  RT_ICON = 3;\n\n  RT_MENU = 4;\n  RT_DIALOG = 5;\n  RT_STRING = 6;\n  RT_FONTDIR = 7;\n  RT_FONT = 8;\n  RT_ACCELERATOR = 9;\n  RT_RCDATA = 10;\n  RT_MESSAGETABLE = 11;\n\n  RT_GROUP = 11;\n  RT_GROUP_CURSOR = RT_GROUP + RT_CURSOR;\n  RT_GROUP_ICON = RT_GROUP + RT_ICON;\n\n  RT_VERSION = 16;\n  RT_ANICURSOR = 21;\n  RT_ANIICON = 22;\n  RT_HTML = 23;\n  RT_MANIFEST = 24;\n\n  ICON_OR_CURSOR_FILE_ICON_TYPE = 1;\n  ICON_OR_CURSOR_FILE_CURSOR_TYPE = 2;\n\ntype\n  { Contain a name or integer identifier for a resource }\n  TNameOrId = record\n    Id: integer;\n    Name: utf8string;\n  end;\n\n  { Information about resource entry }\n  TResourceInfo = object\n    DataVersion: LongWord;\n    MemoryFlags: Word;\n    LanguageId: Word;\n    Version: LongWord;\n    Characteristics: LongWord;\n    procedure SwapIfNecessary;\n  end;\n\n  TWinResourceContainer = class;\n\n  { Abstract resource entry }\n  TCustomResourceEntry = class(TMultiFileEntry)\n  private\n    class function GetNextEntry(AContainer: TMultiFileContainer; AStream: TStream): TCustomResourceEntry; static;\n    procedure Serialize(ADestination: TStream);\n  protected\n    FTypeNameOrId: TNameOrId;\n    FEntryNameOrId: TNameOrId;\n    FResourceInfo: TResourceInfo;\n    FReferenceCount: integer;\n    function GetName: utf8string; override;\n    procedure SetName(AValue: utf8string); override;\n    function GetId: integer;\n    procedure SetId(AValue: integer);\n    function GetTypeId: integer;\n    function GetTypeName: utf8string;\n    procedure IncrementReferences; virtual;\n    procedure DecrementReferences; virtual;\n    procedure SerializeHeader(ADestination: TStream); virtual;\n    procedure SerializeData(ADestination: TStream); virtual; abstract;\n    function GetDataSize: integer; virtual; abstract;\n    function GetLanguageId: integer;\n    procedure SetLanguageId(AValue: integer);\n  public\n    constructor Create(AContainer: TMultiFileContainer; ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\n    function GetStream: TStream; override;\n    property Id: integer read GetId write SetId;\n    property TypeName: utf8string read GetTypeName;\n    property TypeId: integer read GetTypeId;\n    property LanguageId: integer read GetLanguageId write SetLanguageId;\n  end;\n\n  { Resource entry without formatting }\n  TUnformattedResourceEntry = class(TCustomResourceEntry)\n  protected\n    FDataStream: TStream;\n    function GetFileSize: int64; override;\n    function GetDataSize: integer; override;\n    procedure SerializeData(ADestination: TStream); override;\n    function GetExtension: utf8string; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo; ADataStream: TStream);\n    destructor Destroy; override;\n    function CopyTo(ADestination: TStream): int64; override;\n    function GetStream: TStream; override;\n  end;\n\n  { BMP resource entry }\n  TBitmapResourceEntry = class(TUnformattedResourceEntry)\n  protected\n    function GetFileSize: int64; override;\n    function GetExtension: utf8string; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo; ADataStream: TStream);\n    function CopyTo(ADestination: TStream): int64; override;\n    procedure CopyFrom(ASource: TStream);\n  end;\n\n  { Icon header (group of images) }\n  TGroupIconHeader = object\n    Reserved, ResourceType, ImageCount: Word;\n    procedure SwapIfNecessary;\n  end;\n  { Icon image entry in resource }\n  TGroupIconDirEntry = packed record\n    Width, Height, Colors, Reserved: byte;\n    //stored in little endian\n    case byte of\n    0: (Variable: LongWord; ImageSize: LongWord; ImageId: Word);\n    1: (Planes, BitsPerPixel: Word);\n    2: (HotSpotX, HotSpotY: Word);\n  end;\n  { Icon image entry in stream }\n  TIconFileDirEntry = packed record\n    Width, Height, Colors, Reserved: byte;\n    //stored in little endian\n    case byte of\n    0: (Variable: LongWord; ImageSize: LongWord; ImageOffset: LongWord);\n    1: (Planes, BitsPerPixel: Word);\n    2: (HotSpotX, HotSpotY: Word);\n  end;\n\n  { Entry for an icon or cursor (group of images) }\n  TGroupIconOrCursorEntry = class(TCustomResourceEntry)\n  private\n    function GetNbIcons: integer;\n  protected\n    FGroupIconHeader: TGroupIconHeader;\n    FDirectory: packed array of TGroupIconDirEntry;\n    function GetFileSize: int64; override;\n    function GetDataSize: integer; override;\n    procedure SerializeData(ADestination: TStream); override;\n    procedure IncrementReferences; override;\n    procedure DecrementReferences; override;\n    function ExpectedResourceType: word; virtual; abstract;\n  public\n    constructor Create(AContainer: TMultiFileContainer; ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo; ADataStream: TStream);\n    constructor Create(AContainer: TMultiFileContainer; ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\n    procedure Clear;\n    function CopyTo(ADestination: TStream): int64; override;\n    procedure CopyFrom(ASource: TStream);\n    property NbIcons: integer read GetNbIcons;\n  end;\n\n  { Entry for an icon (group of images) }\n  TGroupIconEntry = class(TGroupIconOrCursorEntry)\n  protected\n    function GetExtension: utf8string; override;\n    function ExpectedResourceType: word; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo; ADataStream: TStream);\n    constructor Create(AContainer: TMultiFileContainer; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\n  end;\n\n  { Entry for an cursor (group of images) }\n  TGroupCursorEntry = class(TGroupIconOrCursorEntry)\n  protected\n    function GetExtension: utf8string; override;\n    function ExpectedResourceType: word; override;\n  public\n    constructor Create(AContainer: TMultiFileContainer; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo; ADataStream: TStream);\n    constructor Create(AContainer: TMultiFileContainer; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\n  end;\n\n  { @abstract(Container for Windows resources.)\n\n**Example of modifying an existing RES file:**\n\n```pascal\nuses BGRAClasses, BGRABitmapTypes, BGRAWinResource;\nvar\n  res: TMultiFileContainer;\n  filestream: TStream;\nbegin\n  res := TWinResourceContainer.Create('container.res'); //load the content of an existing RES file\n  res.Delete('MAINICON','ico'); //delete current MAINICON entry\n  filestream := TFileStream.Create('someicon.ico',fmOpenRead);\n  res.Add('MAINICON','ico', filestream); //replace it with another icon\n  filestream := TFileStream.Create('somecursor.cur', fmOpenRead);\n  res.Add('SOMECURSOR','cur', filestream); //add a cursor entry called SOMECURSOR\n  res.SaveToFile('container.res');\n  res.Free;\nend.\n```}\n  TWinResourceContainer = class(TMultiFileContainer)\n  private\n    function InternalFind(const AEntry: TNameOrId; const AType: TNameOrId; ALanguageId: integer = 0): TCustomResourceEntry;\n    procedure AddHidden(AEntry: TCustomResourceEntry);\n    function GetMaxId(AType: TNameOrId): integer;\n    procedure IncrementReferenceOf(ANameId, ATypeId: integer);\n    procedure DecrementReferenceOf(ANameId, ATypeId: integer);\n  protected\n    FHiddenEntries: TMultiFileEntryList;\n    procedure Init; override;\n    procedure ClearHiddenEntries;\n    procedure RemoveHidden(AEntry: TCustomResourceEntry);\n    function CreateEntry(AName: utf8string; AExtension: utf8string; AContent: TStream; ALanguageId: integer): TMultiFileEntry; overload;\n    function CreateEntry(AName: utf8string; AExtension: utf8string; AContent: TStream): TMultiFileEntry; override;\n  public\n    procedure Clear; override;\n    destructor Destroy; override;\n    procedure Delete(AIndex: integer); override;\n    procedure LoadFromStream(AStream: TStream); override;\n    function IndexOf(AName: utf8string; AExtenstion: utf8string; ACaseSensitive: boolean = True): integer; override;\n    function IndexOf(AName: utf8string; AExtenstion: utf8string; ALanguageId: integer; ACaseSensitive: boolean = True): integer; overload;\n    procedure SaveToStream(ADestination: TStream); override;\n  end;\n\nimplementation\n\nuses Math, BGRAUTF8;\n\noperator =(const ANameOrId1, ANameOrId2: TNameOrId): boolean;\nbegin\n  if (ANameOrId1.Id < 0) then\n    result := (ANameOrId2.Id < 0) and (ANameOrId2.Name = ANameOrId1.Name)\n  else\n    result := ANameOrId2.Id = ANameOrId1.Id;\nend;\n\nfunction NameOrId(AName: string): TNameOrId; overload;\nbegin\n  result.Id := -1;\n  result.Name := AName;\nend;\n\nfunction NameOrId(AId: integer): TNameOrId; overload;\nbegin\n  result.Id := AId;\n  result.Name := IntToStr(AId);\nend;\n\n{ TGroupCursorEntry }\n\nfunction TGroupCursorEntry.GetExtension: utf8string;\nbegin\n  Result:= 'cur';\nend;\n\nfunction TGroupCursorEntry.ExpectedResourceType: word;\nbegin\n  result := ICON_OR_CURSOR_FILE_CURSOR_TYPE;\nend;\n\nconstructor TGroupCursorEntry.Create(AContainer: TMultiFileContainer;\n  AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo;\n  ADataStream: TStream);\nbegin\n  inherited Create(AContainer,NameOrId(RT_GROUP_CURSOR),AEntryNameOrId,AResourceInfo,ADataStream);\nend;\n\nconstructor TGroupCursorEntry.Create(AContainer: TMultiFileContainer;\n  AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\nbegin\n  inherited Create(AContainer,NameOrId(RT_GROUP_CURSOR),AEntryNameOrId,AResourceInfo);\nend;\n\n{ TGroupIconEntry }\n\nfunction TGroupIconEntry.GetExtension: utf8string;\nbegin\n  Result:= 'ico';\nend;\n\nfunction TGroupIconEntry.ExpectedResourceType: word;\nbegin\n  result := ICON_OR_CURSOR_FILE_ICON_TYPE;\nend;\n\nconstructor TGroupIconEntry.Create(AContainer: TMultiFileContainer;\n  AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo;\n  ADataStream: TStream);\nbegin\n  inherited Create(AContainer,NameOrId(RT_GROUP_ICON),AEntryNameOrId,AResourceInfo,ADataStream);\nend;\n\nconstructor TGroupIconEntry.Create(AContainer: TMultiFileContainer;\n  AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo);\nbegin\n  inherited Create(AContainer,NameOrId(RT_GROUP_ICON),AEntryNameOrId,AResourceInfo);\nend;\n\n{ TGroupIconHeader }\n\nprocedure TGroupIconHeader.SwapIfNecessary;\nbegin\n  Reserved := LEtoN(Reserved);\n  ResourceType := LEtoN(ResourceType);\n  ImageCount := LEtoN(ImageCount);\nend;\n\n{ TGroupIconOrCursorEntry }\n\nfunction TGroupIconOrCursorEntry.GetNbIcons: integer;\nbegin\n  result := FGroupIconHeader.ImageCount;\nend;\n\nfunction TGroupIconOrCursorEntry.GetFileSize: int64;\nvar\n  i: Integer;\nbegin\n  Result:= sizeof(FGroupIconHeader) + sizeof(TIconFileDirEntry)*NbIcons;\n  for i := 0 to NbIcons-1 do\n    inc(Result, LEtoN(FDirectory[i].ImageSize) );\nend;\n\nfunction TGroupIconOrCursorEntry.GetDataSize: integer;\nbegin\n  result := sizeof(FGroupIconHeader) + sizeof(TGroupIconDirEntry)*NbIcons;\nend;\n\nprocedure TGroupIconOrCursorEntry.SerializeData(ADestination: TStream);\nbegin\n  FGroupIconHeader.SwapIfNecessary;\n  try\n    ADestination.WriteBuffer(FGroupIconHeader, sizeof(FGroupIconHeader));\n  finally\n    FGroupIconHeader.SwapIfNecessary;\n  end;\n  ADestination.WriteBuffer(FDirectory[0], sizeof(TGroupIconDirEntry)*NbIcons);\nend;\n\nprocedure TGroupIconOrCursorEntry.IncrementReferences;\nvar\n  i: Integer;\nbegin\n  for i := 0 to NbIcons-1 do\n    TWinResourceContainer(Container).IncrementReferenceOf(LEtoN(FDirectory[i].ImageId), TypeId - RT_GROUP);\nend;\n\nprocedure TGroupIconOrCursorEntry.DecrementReferences;\nvar\n  i: Integer;\nbegin\n  for i := 0 to NbIcons-1 do\n    TWinResourceContainer(Container).DecrementReferenceOf(LEtoN(FDirectory[i].ImageId), TypeId - RT_GROUP);\nend;\n\nconstructor TGroupIconOrCursorEntry.Create(AContainer: TMultiFileContainer;\n  ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo;\n  ADataStream: TStream);\nbegin\n  inherited Create(AContainer,ATypeNameOrId,AEntryNameOrId,AResourceInfo);\n\n  ADataStream.ReadBuffer(FGroupIconHeader, sizeof(FGroupIconHeader));\n  FGroupIconHeader.SwapIfNecessary;\n  if FGroupIconHeader.ResourceType <> ExpectedResourceType then\n    raise exception.Create('Unexpected group type');\n\n  if ADataStream.Position + NbIcons*sizeof(TGroupIconDirEntry) > ADataStream.Size then\n    raise exception.Create('Directory dimension mismatch');\n  setlength(FDirectory, NbIcons);\n  ADataStream.ReadBuffer(FDirectory[0], NbIcons*sizeof(TGroupIconDirEntry));\n  ADataStream.Free;\nend;\n\nconstructor TGroupIconOrCursorEntry.Create(AContainer: TMultiFileContainer;\n  ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId;\n  const AResourceInfo: TResourceInfo);\nbegin\n  inherited Create(AContainer,ATypeNameOrId,AEntryNameOrId,AResourceInfo);\n\n  FGroupIconHeader.Reserved := 0;\n  FGroupIconHeader.ResourceType := ExpectedResourceType;\n  FGroupIconHeader.ImageCount := 0;\nend;\n\nprocedure TGroupIconOrCursorEntry.Clear;\nbegin\n  DecrementReferences;\n  FDirectory := nil;\n  FGroupIconHeader.ImageCount := 0;\nend;\n\nfunction TGroupIconOrCursorEntry.CopyTo(ADestination: TStream): int64;\nvar\n  fileDir: packed array of TIconFileDirEntry;\n  offset, written, i: integer;\n  iconEntry: TCustomResourceEntry;\n  iconEntrySize: LongWord;\n  iconData: TMemoryStream;\n  copyCount: Int64;\n  subType: TNameOrId;\n\n  procedure FillZero(ACount: integer);\n  var\n    Zero: packed array[0..255] of byte;\n  begin\n    if ACount <= 0 then exit;\n    FillChar({%H-}Zero, Sizeof(Zero), 0);\n    while ACount > 0 do\n    begin\n      ADestination.WriteBuffer(Zero, Min(ACount, sizeof(Zero)));\n      Dec(ACount, Min(ACount, sizeof(Zero)));\n    end;\n  end;\n\nbegin\n  result:= 0;\n  FGroupIconHeader.SwapIfNecessary;\n  try\n    ADestination.WriteBuffer(FGroupIconHeader, sizeof(FGroupIconHeader));\n  finally\n    FGroupIconHeader.SwapIfNecessary;\n  end;\n  Inc(result, sizeof(FGroupIconHeader));\n\n  offset := result+sizeof(TIconFileDirEntry)*NbIcons;\n  setlength(fileDir, NbIcons);\n  for i := 0 to NbIcons-1 do\n  begin\n    move(FDirectory[i], fileDir[i], 12);\n    fileDir[i].ImageOffset := NtoLE(offset);\n    inc(offset, fileDir[i].ImageSize);\n  end;\n\n  ADestination.WriteBuffer(fileDir[0], sizeof(TIconFileDirEntry)*NbIcons);\n  inc(result, sizeof(TIconFileDirEntry)*NbIcons);\n\n  subType := NameOrId(TypeId - RT_GROUP);\n  for i := 0 to NbIcons-1 do\n  begin\n    iconEntry := (Container as TWinResourceContainer).InternalFind(NameOrId(LEtoN(FDirectory[i].ImageId)),subType); //no language for icons\n    iconEntrySize := LEtoN(FDirectory[i].ImageSize);\n    if iconEntry = nil then\n      FillZero(iconEntrySize) else\n    begin\n      iconData := TMemoryStream.Create;\n      try\n        iconEntry.CopyTo(IconData);\n        iconData.Position:= 0;\n        copyCount := Min(IconData.Size, iconEntrySize);\n        if copyCount > 0 then written := ADestination.CopyFrom(IconData, copyCount)\n        else written := 0;\n        FillZero(iconEntrySize-written);\n      finally\n        IconData.Free;\n      end;\n    end;\n    inc(result, iconEntrySize);\n  end;\nend;\n\nprocedure TGroupIconOrCursorEntry.CopyFrom(ASource: TStream);\nvar\n  tempGroup: TGroupIconHeader;\n  fileDir: packed array of TIconFileDirEntry;\n  iconStream: array of TMemoryStream;\n  startPos: int64;\n  maxId, i: integer;\n  iconEntry: TUnformattedResourceEntry;\n  resourceInfo: TResourceInfo;\n  subType: TNameOrId;\nbegin\n  startPos := ASource.Position;\n  ASource.ReadBuffer({%H-}tempGroup, sizeof(tempGroup));\n  tempGroup.SwapIfNecessary;\n  if tempGroup.ResourceType <> ExpectedResourceType then\n    raise exception.Create('Unexpected resource type');\n\n  if ASource.Position + sizeof(TIconFileDirEntry)*tempGroup.ImageCount > ASource.Size then\n    raise exception.Create('Directory dimension mismatch');\n\n  setlength(fileDir, tempGroup.ImageCount);\n  ASource.ReadBuffer(fileDir[0], sizeof(TIconFileDirEntry)*tempGroup.ImageCount);\n\n  try\n    setlength(iconStream, tempGroup.ImageCount);\n    for i := 0 to tempGroup.ImageCount-1 do\n    begin\n      ASource.Position:= startPos + LEtoN(fileDir[i].ImageOffset);\n      iconStream[i] := TMemoryStream.Create;\n      iconStream[i].CopyFrom(ASource, LEtoN(fileDir[i].ImageSize));\n    end;\n\n    subType := NameOrId(self.TypeId - RT_GROUP);\n    maxId := TWinResourceContainer(Container).GetMaxId(subType);\n\n    Clear;\n    FGroupIconHeader.ImageCount := tempGroup.ImageCount;\n    setlength(FDirectory, tempGroup.ImageCount);\n    fillchar({%H-}resourceInfo,sizeof(resourceInfo),0);\n    for i := 0 to tempGroup.ImageCount-1 do\n    begin\n      move(fileDir[i], FDirectory[i], 12);\n      inc(maxId);\n      FDirectory[i].ImageId := maxId;\n      iconEntry := TUnformattedResourceEntry.Create(Container, subType, NameOrId(maxId), resourceInfo, iconStream[i]);\n      iconStream[i] := nil;\n      TWinResourceContainer(Container).AddHidden(iconEntry);\n    end;\n\n  finally\n    for i := 0 to high(iconStream) do\n      iconStream[i].Free;\n    iconStream := nil;\n  end;\nend;\n\n{ TBitmapResourceEntry }\n\nfunction TBitmapResourceEntry.GetFileSize: int64;\nbegin\n  result := sizeof(TBitMapFileHeader)+FDataStream.Size;\nend;\n\nfunction TBitmapResourceEntry.GetExtension: utf8string;\nbegin\n  Result:= 'bmp';\nend;\n\nconstructor TBitmapResourceEntry.Create(AContainer: TMultiFileContainer;\n  AEntryNameOrId: TNameOrId; const AResourceInfo: TResourceInfo;\n  ADataStream: TStream);\nbegin\n  inherited Create(AContainer, NameOrId(RT_BITMAP), AEntryNameOrId, AResourceInfo, ADataStream);\nend;\n\nfunction TBitmapResourceEntry.CopyTo(ADestination: TStream): int64;\nvar fileHeader: TBitMapFileHeader;\nbegin\n  result := 0;\n  FDataStream.Position := 0;\n  fileHeader := MakeBitmapFileHeader(FDataStream);\n  ADestination.WriteBuffer(fileHeader, sizeof(fileHeader));\n  inc(result, sizeof(fileHeader) );\n  FDataStream.Position := 0;\n  inc(result, ADestination.CopyFrom(FDataStream, FDataStream.Size) );\nend;\n\nprocedure TBitmapResourceEntry.CopyFrom(ASource: TStream);\nvar\n  fileHeader: TBitMapFileHeader;\n  dataSize: integer;\nbegin\n  ASource.ReadBuffer({%H-}fileHeader, sizeof(fileHeader));\n  if fileHeader.bfType <> Word('BM') then\n    raise exception.Create('Invalid file header');\n  dataSize := LEtoN(fileHeader.bfSize) - sizeof(fileHeader);\n  if ASource.Position + dataSize > ASource.Size then\n    raise exception.Create('Invalid file size');\n\n  FDataStream.Free;\n  FDataStream := TMemoryStream.Create;\n  FDataStream.CopyFrom(ASource, dataSize);\nend;\n\n{ TUnformattedResourceEntry }\n\nfunction TUnformattedResourceEntry.GetFileSize: int64;\nbegin\n  Result:= FDataStream.Size;\nend;\n\nfunction TUnformattedResourceEntry.GetDataSize: integer;\nbegin\n  result := FDataStream.Size;\nend;\n\nprocedure TUnformattedResourceEntry.SerializeData(ADestination: TStream);\nbegin\n  if FDataStream.Size > 0 then\n  begin\n    FDataStream.Position := 0;\n    ADestination.CopyFrom(FDataStream, FDataStream.Size);\n  end;\nend;\n\nfunction TUnformattedResourceEntry.GetExtension: utf8string;\nvar format: TBGRAImageFormat;\nbegin\n  case TypeId of\n  RT_MANIFEST: result := 'manifest';\n  RT_HTML: result := 'html';\n  RT_RCDATA:\n  begin\n    FDataStream.Position:= 0;\n    format := DetectFileFormat(FDataStream);\n    if format = ifUnknown then\n      result := 'dat'\n    else\n      result := SuggestImageExtension(format);\n  end;\n  RT_ANICURSOR: result := 'ani';\n  else\n    if TypeName = 'ANICURSOR' then\n      result := 'ani'\n    else\n      result := '';\n  end;\nend;\n\nconstructor TUnformattedResourceEntry.Create(AContainer: TMultiFileContainer;\n  ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId;\n  const AResourceInfo: TResourceInfo; ADataStream: TStream);\nbegin\n  inherited Create(AContainer,ATypeNameOrId,AEntryNameOrId,AResourceInfo);\n  FDataStream := ADataStream;\nend;\n\ndestructor TUnformattedResourceEntry.Destroy;\nbegin\n  FreeAndNil(FDataStream);\n  inherited Destroy;\nend;\n\nfunction TUnformattedResourceEntry.CopyTo(ADestination: TStream): int64;\nbegin\n  if FDataStream.Size > 0 then\n  begin\n    FDataStream.Position := 0;\n    result := ADestination.CopyFrom(FDataStream, FDataStream.Size)\n  end\n  else\n    result := 0;\nend;\n\nfunction TUnformattedResourceEntry.GetStream: TStream;\nbegin\n  Result:= FDataStream;\nend;\n\n{ TResourceInfo }\n\nprocedure TResourceInfo.SwapIfNecessary;\nbegin\n  DataVersion := LEtoN(DataVersion);\n  MemoryFlags := LEtoN(MemoryFlags);\n  LanguageId := LEtoN(LanguageId);\n  Version := LEtoN(Version);\n  Characteristics := LEtoN(Characteristics);\nend;\n\n{ TCustomResourceEntry }\n\nfunction TCustomResourceEntry.GetId: integer;\nbegin\n  result := FEntryNameOrId.Id;\nend;\n\nfunction TCustomResourceEntry.GetTypeId: integer;\nbegin\n  result := FTypeNameOrId.Id;\nend;\n\nfunction GetDWord(var ASource: PByte; var ARemainingBytes: Integer): LongWord;\nbegin\n  if ARemainingBytes >= 4 then\n  begin\n    result := LEtoN(PLongWord(ASource)^);\n    inc(ASource, 4);\n    dec(ARemainingBytes, 4);\n  end else\n  begin\n    result := 0;\n    inc(ASource, ARemainingBytes);\n    ARemainingBytes:= 0;\n  end;\nend;\n\nfunction GetWord(var ASource: PByte; var ARemainingBytes: Integer): Word;\nbegin\n  if ARemainingBytes >= 2 then\n  begin\n    result := LEtoN(PWord(ASource)^);\n    inc(ASource, 2);\n    dec(ARemainingBytes, 2);\n  end else\n  begin\n    result := 0;\n    inc(ASource, ARemainingBytes);\n    ARemainingBytes:= 0;\n  end;\nend;\n\nfunction GetNameOrId(var ASource: PByte; var ARemainingBytes: Integer): TNameOrId;\nvar curChar: Word;\n  pstart: PByte;\nbegin\n  pstart := ASource;\n  curChar := GetWord(ASource,ARemainingBytes);\n  if curChar = $ffff then\n  begin\n    result.Id := GetWord(ASource,ARemainingBytes);\n    result.Name := IntToStr(result.Id);\n  end else\n  begin\n    while curChar <> 0 do\n      curChar := GetWord(ASource,ARemainingBytes);\n    result.Id := -1;\n    result.Name := UTF8Encode(WideCharLenToString(PWideChar(pstart), (ASource-pstart) div 2 -1));\n  end;\nend;\n\nfunction TCustomResourceEntry.GetLanguageId: integer;\nbegin\n  result := FResourceInfo.LanguageId;\nend;\n\nclass function TCustomResourceEntry.GetNextEntry(AContainer: TMultiFileContainer; AStream: TStream): TCustomResourceEntry;\nvar\n  entrySize, headerSize, remaining, padding: Integer;\n  headerData: Pointer;\n  pHeaderData: PByte;\n  typeNameOrId: TNameOrId;\n  entryNameOrId: TNameOrId;\n  info: TResourceInfo;\n  dataStream: TMemoryStream;\n  dummy: LongWord;\nbegin\n  result := nil;\n  if AStream.Position + 16 < AStream.Size then\n  begin\n    entrySize := LEtoN(AStream.ReadDWord);\n    headerSize := LEtoN(AStream.ReadDWord);\n    if headerSize < 16 then\n      raise exception.Create('Header too small');\n    remaining := ((headerSize-8) + 3) and not 3;\n    if AStream.Position + remaining + entrySize > AStream.Size then\n      raise exception.Create('Data would be outside of stream');\n\n    GetMem(headerData, remaining);\n    try\n      AStream.ReadBuffer(headerData^, remaining);\n      pHeaderData := PByte(headerData);\n      typeNameOrId := GetNameOrId(pHeaderData, remaining);\n      entryNameOrId := GetNameOrId(pHeaderData, remaining);\n      padding := (4 - (PtrUInt(pHeaderData-PByte(headerData)) and 3)) and 3;\n      inc(pHeaderData, padding);\n      dec(remaining, padding);\n\n      FillChar({%H-}info, SizeOf(info), 0);\n      Move(pHeaderData^, info, Min(Sizeof(info), remaining));\n      info.SwapIfNecessary;\n\n      dataStream := TMemoryStream.Create;\n      if entrySize > 0 then dataStream.CopyFrom(AStream, entrySize);\n      padding := ((entrySize+3) and not 3) - entrySize;\n      if padding > 0 then AStream.Read({%H-}dummy, padding);\n    finally\n      FreeMem(headerData);\n    end;\n\n    dataStream.Position := 0;\n    case typeNameOrId.Id of\n    RT_BITMAP: result := TBitmapResourceEntry.Create(AContainer,entryNameOrId,info,dataStream);\n    RT_GROUP_ICON: result := TGroupIconEntry.Create(AContainer,entryNameOrId,info,dataStream);\n    RT_GROUP_CURSOR: result := TGroupCursorEntry.Create(AContainer,entryNameOrId,info,dataStream);\n    else\n      result := TUnformattedResourceEntry.Create(AContainer,typeNameOrId,entryNameOrId,info,dataStream);\n    end;\n  end;\nend;\n\nprocedure WriteNameOrId(ADestination: TStream; ANameOrId: TNameOrId);\nvar buffer: PUnicodeChar;\n  maxLen,actualLen: integer;\nbegin\n  if ANameOrId.Id < 0 then\n  begin\n    maxLen := length(ANameOrId.Name)*2 + 1;\n    getmem(buffer, maxLen*sizeof(UnicodeChar));\n    try\n      fillchar(buffer^, maxLen*sizeof(UnicodeChar), 0);\n      actualLen := Utf8ToUnicode(buffer, maxLen, @ANameOrId.Name[1], length(ANameOrId.Name));\n      ADestination.WriteBuffer(buffer^, actualLen*sizeof(UnicodeChar));\n    finally\n      freemem(buffer);\n    end;\n  end else\n  begin\n    ADestination.WriteWord($ffff);\n    ADestination.WriteWord(NtoLE(Word(ANameOrId.Id)));\n  end;\nend;\n\nprocedure TCustomResourceEntry.Serialize(ADestination: TStream);\nvar zero: LongWord;\n  padding: integer;\nbegin\n  SerializeHeader(ADestination);\n  SerializeData(ADestination);\n  padding := (4-(GetDataSize and 3)) and 3;\n  if padding > 0 then\n  begin\n    zero := 0;\n    ADestination.WriteBuffer(zero, padding);\n  end;\nend;\n\nprocedure TCustomResourceEntry.SetLanguageId(AValue: integer);\nbegin\n  if (AValue >= 0) and (AValue <= 65535) then\n  begin\n    if AValue = LanguageId then exit;\n    if FTypeNameOrId.Id >= 0 then\n    begin\n      if TWinResourceContainer(Container).InternalFind(FEntryNameOrId, FTypeNameOrId, AValue) <> nil then\n        raise exception.Create('Language id already used for this resource');\n    end else\n      raise exception.Create('Language id cannot be specified for custom types');\n    FEntryNameOrId.Id := AValue;\n    FEntryNameOrId.Name := IntToStr(AValue);\n  end\n  else\n    raise ERangeError.Create('Id out of bounds');\nend;\n\nprocedure TCustomResourceEntry.SerializeHeader(ADestination: TStream);\nvar\n  entryHeader: record\n    EntrySize: integer;\n    HeaderSize: integer;\n  end;\n  headerStream: TMemoryStream;\nbegin\n  entryHeader.EntrySize := LEtoN(GetDataSize);\n  headerStream := TMemoryStream.Create;\n  try\n    WriteNameOrId(headerStream,FTypeNameOrId);\n    WriteNameOrId(headerStream,FEntryNameOrId);\n    if headerStream.Position and 3 = 2 then headerStream.WriteWord(0);\n    FResourceInfo.SwapIfNecessary;\n    try\n      headerStream.WriteBuffer(FResourceInfo, sizeof(FResourceInfo));\n    finally\n      FResourceInfo.SwapIfNecessary;\n    end;\n    entryHeader.HeaderSize := LEtoN(integer(headerStream.Size+8));\n    headerStream.Position:= 0;\n    ADestination.WriteBuffer(entryHeader, sizeof(entryHeader));\n    ADestination.CopyFrom(headerStream, headerStream.Size);\n    if headerStream.Size and 3 = 2 then ADestination.WriteWord(0);\n  finally\n    headerStream.Free;\n  end;\nend;\n\nconstructor TCustomResourceEntry.Create(AContainer: TMultiFileContainer;\n  ATypeNameOrId: TNameOrId; AEntryNameOrId: TNameOrId;\n  const AResourceInfo: TResourceInfo);\nbegin\n  inherited Create(AContainer);\n  FTypeNameOrId := ATypeNameOrId;\n  FEntryNameOrId := AEntryNameOrId;\n  FResourceInfo := AResourceInfo;\nend;\n\nfunction TCustomResourceEntry.GetStream: TStream;\nbegin\n  result := nil;\n  raise exception.Create('Stream not available');\nend;\n\nprocedure TCustomResourceEntry.SetId(AValue: integer);\nbegin\n  if (AValue >= 0) and (AValue <= 65535) then\n  begin\n    if AValue = FEntryNameOrId.Id then exit;\n    if TWinResourceContainer(Container).InternalFind(NameOrId(AValue), FTypeNameOrId, LanguageId) <> nil then\n      raise exception.Create('Id already used for this resource type');\n    FEntryNameOrId.Id := AValue;\n    FEntryNameOrId.Name := IntToStr(AValue);\n  end\n  else\n    raise ERangeError.Create('Id out of bounds');\nend;\n\nfunction TCustomResourceEntry.GetName: utf8string;\nbegin\n  Result:= FEntryNameOrId.Name;\nend;\n\nprocedure TCustomResourceEntry.SetName(AValue: utf8string);\nbegin\n  if FEntryNameOrId = NameOrId(AValue) then exit;\n  if TWinResourceContainer(Container).InternalFind(NameOrId(AValue), FTypeNameOrId, LanguageId) <> nil then\n      raise exception.Create('Name already used for this resource type');\n  FEntryNameOrId.Name := AValue;\n  FEntryNameOrId.Id := -1;\nend;\n\nfunction TCustomResourceEntry.GetTypeName: utf8string;\nbegin\n  result := FTypeNameOrId.Name;\nend;\n\nprocedure TCustomResourceEntry.IncrementReferences;\nbegin\n  //nothing\nend;\n\nprocedure TCustomResourceEntry.DecrementReferences;\nbegin\n  //nothing\nend;\n\n{ TWinResourceContainer }\n\nprocedure TWinResourceContainer.LoadFromStream(AStream: TStream);\nvar curEntry: TCustomResourceEntry;\n  i: Integer;\nbegin\n  Clear;\n  repeat\n    curEntry := TCustomResourceEntry.GetNextEntry(self, AStream);\n    if curEntry <> nil then\n    begin\n      if curEntry.TypeId in [RT_ICON,RT_CURSOR] then\n        FHiddenEntries.Add(curEntry)\n      else\n        AddEntry(curEntry);\n    end;\n  until curEntry = nil;\n  for i := 0 to Count-1 do\n    TCustomResourceEntry(Entry[i]).IncrementReferences;\nend;\n\nfunction TWinResourceContainer.IndexOf(AName: utf8string; AExtenstion: utf8string; ACaseSensitive: boolean): integer;\nbegin\n  result := IndexOf(AName, AExtenstion, 0, ACaseSensitive);\nend;\n\nfunction TWinResourceContainer.IndexOf(AName: utf8string; AExtenstion: utf8string;\n  ALanguageId: integer; ACaseSensitive: boolean): integer;\nvar\n  i: Integer;\n  entryId, errPos: integer;\nbegin\n  if AExtenstion = '' then\n  begin\n    result := -1;\n    exit;\n  end;\n  if ACaseSensitive then\n  begin\n    for i := 0 to Count-1 do\n      if (TCustomResourceEntry(Entry[i]).FEntryNameOrId.Id < 0) and\n         (TCustomResourceEntry(Entry[i]).FEntryNameOrId.Name = AName) and\n         (UTF8CompareText(Entry[i].Extension,AExtenstion) = 0) and\n         (TCustomResourceEntry(Entry[i]).LanguageId = ALanguageId) then\n      begin\n        result := i;\n        exit;\n      end;\n  end else\n    for i := 0 to Count-1 do\n      if (TCustomResourceEntry(Entry[i]).FEntryNameOrId.Id < 0) and\n         (UTF8CompareText(TCustomResourceEntry(Entry[i]).FEntryNameOrId.Name,AName) = 0) and\n         (UTF8CompareText(Entry[i].Extension,AExtenstion) = 0) and\n         (TCustomResourceEntry(Entry[i]).LanguageId = ALanguageId) then\n      begin\n        result := i;\n        exit;\n      end;\n  val(AName, entryId, errPos);\n  if (errPos = 0) and (entryId >= 0) then\n  begin\n    for i := 0 to Count-1 do\n      if (TCustomResourceEntry(Entry[i]).FEntryNameOrId.Id = entryId) and\n         (UTF8CompareText(Entry[i].Extension,AExtenstion) = 0) and\n         (TCustomResourceEntry(Entry[i]).LanguageId = ALanguageId) then\n      begin\n        result := i;\n        exit;\n      end;\n  end;\n  result := -1;\nend;\n\nprocedure TWinResourceContainer.Init;\nbegin\n  inherited Init;\n  FHiddenEntries := TMultiFileEntryList.Create;\nend;\n\nprocedure TWinResourceContainer.ClearHiddenEntries;\nvar i: integer;\nbegin\n  if Assigned(FHiddenEntries) then\n  begin\n    for i := 0 to FHiddenEntries.Count-1 do\n      FHiddenEntries[i].Free;\n    FHiddenEntries.Clear;\n  end;\nend;\n\nprocedure TWinResourceContainer.RemoveHidden(AEntry: TCustomResourceEntry);\nvar\n  index: LongInt;\nbegin\n  if Assigned(FHiddenEntries) then\n  begin\n    index := FHiddenEntries.IndexOf(AEntry);\n    if index <> -1 then\n    begin\n      AEntry.Free;\n      FHiddenEntries.Delete(index);\n    end;\n  end;\nend;\n\nfunction TWinResourceContainer.CreateEntry(AName: utf8string; AExtension: utf8string;\n  AContent: TStream; ALanguageId: integer): TMultiFileEntry;\nvar\n  resourceInfo: TResourceInfo;\n  entryName: TNameOrId;\n  errPos: integer;\nbegin\n  FillChar({%H-}resourceInfo, sizeof(resourceInfo), 0);\n  resourceInfo.LanguageId := ALanguageId;\n  val(AName, entryName.Id, errPos);\n  if (errPos = 0) and (entryName.Id >= 0) then\n    entryName.Name := IntToStr(entryName.Id)\n  else\n  begin\n    entryName.Id := -1;\n    entryName.Name := AName;\n  end;\n\n  case UTF8LowerCase(AExtension) of\n  'ico': begin\n           result := TGroupIconEntry.Create(self, entryName, resourceInfo);\n           AContent.Position:= 0;\n           TGroupIconEntry(result).CopyFrom(AContent);\n           AContent.Free;\n         end;\n  'cur': begin\n           result := TGroupCursorEntry.Create(self, entryName, resourceInfo);\n           AContent.Position:= 0;\n           TGroupCursorEntry(result).CopyFrom(AContent);\n           AContent.Free;\n         end;\n  'bmp': begin\n           result := TBitmapResourceEntry.Create(self, entryName, resourceInfo, AContent);\n           AContent.Position:= 0;\n           TBitmapResourceEntry(result).CopyFrom(AContent);\n           AContent.Free;\n         end;\n  'dat': result := TUnformattedResourceEntry.Create(self, NameOrId(RT_RCDATA), entryName, resourceInfo, AContent);\n  'html','htm': result := TUnformattedResourceEntry.Create(self, NameOrId(RT_HTML), entryName, resourceInfo, AContent);\n  'manifest': result := TUnformattedResourceEntry.Create(self, NameOrId(RT_MANIFEST), entryName, resourceInfo, AContent);\n  'ani': result := TUnformattedResourceEntry.Create(self, NameOrId(RT_ANICURSOR), entryName, resourceInfo, AContent);\n  else\n    case SuggestImageFormat('.'+AExtension) of\n    ifUnknown: raise exception.Create('Unhandled file extension');\n    else\n      result := TUnformattedResourceEntry.Create(self, NameOrId(RT_RCDATA), entryName, resourceInfo, AContent);\n    end;\n  end;\nend;\n\nfunction TWinResourceContainer.CreateEntry(AName: utf8string; AExtension: utf8string;\n  AContent: TStream): TMultiFileEntry;\nbegin\n  result := CreateEntry(AName, AExtension, AContent, 0);\nend;\n\nprocedure TWinResourceContainer.Clear;\nbegin\n  ClearHiddenEntries;\n  inherited Clear;\nend;\n\ndestructor TWinResourceContainer.Destroy;\nbegin\n  ClearHiddenEntries;\n  FreeAndNil(FHiddenEntries);\n  inherited Destroy;\nend;\n\nprocedure TWinResourceContainer.Delete(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < Count) then\n    TCustomResourceEntry(Entry[AIndex]).DecrementReferences;\n  inherited Delete(AIndex);\nend;\n\nprocedure TWinResourceContainer.SaveToStream(ADestination: TStream);\nvar\n  i: Integer;\nbegin\n  for i := 0 to Count-1 do\n    TCustomResourceEntry(Entry[i]).Serialize(ADestination);\n  for i := 0 to FHiddenEntries.Count-1 do\n    TCustomResourceEntry(FHiddenEntries.Items[i]).Serialize(ADestination);\nend;\n\nfunction TWinResourceContainer.InternalFind(const AEntry: TNameOrId;\n  const AType: TNameOrId; ALanguageId: integer): TCustomResourceEntry;\nvar i: integer;\nbegin\n  if Assigned(FHiddenEntries) and (ALanguageId = 0) and (AType.Id >= 0) then\n  begin\n    for i := 0 to FHiddenEntries.Count-1 do\n      if (TCustomResourceEntry(FHiddenEntries.Items[i]).FEntryNameOrId = AEntry) and\n         (TCustomResourceEntry(FHiddenEntries.Items[i]).FTypeNameOrId = AType) then\n      begin\n        result := TCustomResourceEntry(FHiddenEntries.Items[i]);\n        exit;\n      end;\n  end;\n  for i := 0 to Count-1 do\n    if (TCustomResourceEntry(Entry[i]).FEntryNameOrId = AEntry) and\n       (TCustomResourceEntry(Entry[i]).FTypeNameOrId = AType) and\n       (TCustomResourceEntry(Entry[i]).LanguageId = ALanguageId) then\n    begin\n      result := TCustomResourceEntry(Entry[i]);\n      exit;\n    end;\n  result := nil;\nend;\n\nprocedure TWinResourceContainer.AddHidden(AEntry: TCustomResourceEntry);\nbegin\n  FHiddenEntries.Add(AEntry);\nend;\n\nfunction TWinResourceContainer.GetMaxId(AType: TNameOrId): integer;\nvar i: integer;\nbegin\n  result := 0;\n  if Assigned(FHiddenEntries) and (AType.Id >= 0) then\n  begin\n    for i := 0 to FHiddenEntries.Count-1 do\n      if (TCustomResourceEntry(FHiddenEntries.Items[i]).FTypeNameOrId = AType) then\n      begin\n        if TCustomResourceEntry(FHiddenEntries.Items[i]).Id > result then result := TCustomResourceEntry(FHiddenEntries.Items[i]).Id;\n      end;\n  end;\n  for i := 0 to Count-1 do\n    if (TCustomResourceEntry(Entry[i]).FTypeNameOrId = AType) then\n    begin\n      if TCustomResourceEntry(Entry[i]).Id > result then result := TCustomResourceEntry(Entry[i]).Id;\n    end;\nend;\n\nprocedure TWinResourceContainer.IncrementReferenceOf(ANameId, ATypeId: integer);\nvar\n  item: TCustomResourceEntry;\nbegin\n  item := InternalFind(NameOrId(ANameId), NameOrId(ATypeId));\n  if Assigned(item) then inc(item.FReferenceCount);\nend;\n\nprocedure TWinResourceContainer.DecrementReferenceOf(ANameId, ATypeId: integer);\nvar\n  item: TCustomResourceEntry;\nbegin\n  item := InternalFind(NameOrId(ANameId), NameOrId(ATypeId));\n  if Assigned(item) then\n  begin\n    if item.FReferenceCount > 1 then\n      dec(item.FReferenceCount)\n    else\n      RemoveHidden(item);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrawriteavif.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implements the writer for the AVIF format (relies on external libavif library) }\nunit BGRAWriteAvif;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, avifbgra;\n\ntype\n  {* Extends the TFPCustomImageWriter to write the AVIF image format }\n  TBGRAWriterAvif = class(TFPCustomImageWriter)\n  protected\n    FLossless: boolean;\n    FQualityPercent: Single;\n    FQualityAlphaPercent: Single;\n    FCodec: avifCodecChoice;\n    FSpeed: integer;\n    FPixelFormat:avifPixelFormat;\n    FIgnoreAlpha:boolean;\n    procedure InternalWrite(Stream: TStream; Img: TFPCustomImage); override;\n  public\n    constructor Create; override;\n    property QualityPercent: single read FQualityPercent write FQualityPercent;\n    { If Lossless is set to True, the QualityPercent property is ignored }\n    property Lossless: boolean read FLossless write FLossless;\n    property Speed: integer read FSpeed write FSpeed;\n    property PixelFormat: avifPixelFormat read FPixelFormat write FPixelFormat;\n    property IgnoreAlpha: boolean read FIgnoreAlpha write FIgnoreAlpha;\n    property QualityAlphaPercent: Single read FQualityAlphaPercent write FQualityAlphaPercent;\n    property Codec: avifCodecChoice read FCodec write FCodec;\n  end;\n\nimplementation\n\nuses libavif, BGRABitmapTypes, BGRABitmap;\n\nvar\n  MyLibAvifLoaded: boolean;\n\nprocedure NeedLibAvif;\nbegin\n  if not MyLibAvifLoaded then\n  begin\n    if not LibAvifLoad then\n      raise exception.Create('Cannot find libavif library ('+LibAvifFilename+')');\n    MyLibAvifLoaded:= true;\n  end;\nend;\n\n{ TBGRAWriterAvif }\n\nprocedure TBGRAWriterAvif.InternalWrite(Stream: TStream; Img: TFPCustomImage);\nvar\n  saveFrom: TBGRACustomBitmap;\n  outSize: LongWord;\n  quality:integer;\n  qualityAlpha:integer;\nbegin\n  NeedLibAvif;\n  saveFrom := BGRABitmapFactory.Create(Img);\n  try\n    quality:=Trunc(QualityPercent);\n    qualityAlpha:=Trunc(QualityAlphaPercent);\n    if LossLess then\n    begin\n      quality:=100;\n      qualityAlpha:=100;\n    end;\n    if (FCodec<>AVIF_CODEC_CHOICE_AUTO) or (qualityAlpha <> 100) then\n      outsize:=avifSaveToStream(TBGRABitmap(saveFrom),Stream,IgnoreAlpha,quality,qualityAlpha,PixelFormat,FCodec,Speed)\n    else\n      outsize:=avifSaveToStream(TBGRABitmap(saveFrom),Stream,quality,Speed,PixelFormat,IgnoreAlpha);\n    if outSize = 0 then\n      raise exception.Create('Error encoding Avif');\n  finally\n    saveFrom.Free;\n  end;\nend;\n\nconstructor TBGRAWriterAvif.Create;\nbegin\n  inherited Create;\n  FQualityPercent := 100;\n  FQualityAlphaPercent := 100;\n  FLossless:= True;\n  FSpeed:=AVIF_SPEED_DEFAULT;\n  FPixelFormat:=AVIF_PIXEL_FORMAT_YUV420;\n  FIgnoreAlpha:=false;\n  FCodec := AVIF_CODEC_CHOICE_AUTO;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifAvif, TBGRAWriterAvif, True, 'AVIF Still Image Format', 'avif');\n\nfinalization\n\n  if MyLibAvifLoaded then\n  begin\n    LibAvifUnload;\n    MyLibAvifLoaded:= false;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrawritebmp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano added Resolution support\n  2025-03  - Massimo Magnano added GrayScale and Palette Conversion\n}\n{*****************************************************************************}\n{ Imports the writer for the BMP image format }\nunit BGRAWriteBMP;\n{$mode objfpc}\n{$h+}\n\ninterface\n\nuses SysUtils, Classes, FPImage, FPWriteBMP, BGRABitmapTypes;\n\nconst\n   BMP_BitsValidValues: array[0..6] of byte = (1,4,8,15,16,24,32);\n\ntype\n  { TBGRAWriterBMP }\n\n  TBGRAWriterBMP = class (TFPWriterBMP)\n  protected\n    FGrayScale: boolean;\n\n    procedure SetGrayScale(AValue: boolean); virtual;\n\n    function SaveHeader(Stream:TStream; Img: TFPCustomImage):boolean; override;\n    procedure InternalWrite(Stream:TStream; Img: TFPCustomImage); override;\n\n  public\n    constructor Create; override;\n\n  published\n    property GrayScale: boolean read FGrayscale write SetGrayScale;\n    property BitsPerPixel;  //: byte rw [1,4,8,15,16,24,32];\n    property RLECompress;   //: boolean rw;\n  end;\n\n\nimplementation\n\nuses BGRAFilters, BGRABitmap, BGRAColorQuantization;\n\nprocedure TBGRAWriterBMP.SetGrayScale(AValue: boolean);\nbegin\n  if FGrayscale=AValue then Exit;\n  FGrayscale:=AValue;\n  BitsPerPixel:= 8;\nend;\n\nfunction TBGRAWriterBMP.SaveHeader(Stream:TStream; Img : TFPCustomImage):boolean;\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  begin\n    ResolutionUnit :=ruPixelsPerCentimeter;\n    Self.XPelsPerMeter :=Trunc(ResolutionX*100);\n    Self.YPelsPerMeter :=Trunc(ResolutionY*100);\n  end;\n  {$ENDIF}\n\n  Result:= inherited SaveHeader(Stream, Img);\nend;\n\nprocedure TBGRAWriterBMP.InternalWrite(Stream: TStream; Img: TFPCustomImage);\nvar\n   aImg: TBGRABitmap;\n   quant: TBGRAColorQuantizer;\n\nbegin\n  if (BitsPerPixel <= 8) then\n  begin\n    try\n       quant:= nil;\n       aImg:= TBGRABitmap.Create(Img);\n\n       if FGrayscale\n       then aImg.ConvertToPaletteGrayscale\n       else begin\n              aImg.UsePalette:=True;\n              quant := TBGRAColorQuantizer.Create(aImg, acIgnore);\n\n              Case BitsPerPixel of\n              1: quant.ReductionColorCount:= 2;\n              4: quant.ReductionColorCount:= 16;\n              8: quant.ReductionColorCount:= 256;\n              end;\n\n              quant.ApplyDitheringInplace(daFloydSteinberg, aImg);\n              quant.ReducedPalette.AssignTo(aImg.Palette);\n            end;\n\n       inherited InternalWrite(Stream, aImg);\n\n    finally\n       if (quant <> nil) then quant.Free;\n       aImg.Free;\n    end;\n   end\n  else inherited InternalWrite(Stream, Img);\nend;\n\nconstructor TBGRAWriterBMP.Create;\nbegin\n  inherited Create;\n\n  FGrayScale:= False;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifBMP, TBGRAWriterBMP, True, 'BMP Format', 'bmp');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritebmpmiomap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implements the writer for BMP MioMap (iGO) image format }\nunit BGRAWriteBmpMioMap;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, BGRABitmapTypes, BGRAReadBmpMioMap;\n\ntype\n  {* Extends the TFPCustomImageWriter to write the BMP MioMap (iGO) image format }\n  TBGRAWriterBmpMioMap = class (TFPCustomImageWriter)\n  protected\n    FHeader: TMioHeader;\n    FPalette: packed array of record\n        ColorValue: Word;\n        AlphaValue: Byte;\n        Padding: Byte;\n      end;\n    FPaletteIndexes: packed array[0..65535] of Int32or64;\n    FPaletteOffset: Int32or64;\n    FPaletteAlpha: boolean;\n    FChunks: array of TMemoryStream;\n    FCurrentChunk: TMemoryStream;\n    FMaxChunkSize: Word;\n    function IndexOfColor(const AColor: TBGRAPixel): Int32or64;\n    procedure InitHeader(Img: TFPCustomImage);\n    procedure InitPalette;\n    procedure InitChunks;\n    procedure FlushChunk;\n    procedure FreeChunks;\n    procedure NeedChunk;\n    procedure AppendToChunks(const Buffer; Count: integer);\n    procedure BuildPaletteAndChunks(Img: TFPCustomImage);\n    procedure WriteHeader(Str: TStream);\n    procedure WritePalette(Str: TStream);\n    procedure WriteChunks(Str: TStream);\n    procedure ReadScanline(Img: TFPCustomImage; Y: integer; ADest: PBGRAPixel);\n    procedure InternalWrite(Str: TStream; Img: TFPCustomImage); override;\n  public\n    {** Creates the writer }\n    constructor Create; override;\n    {** Maximum size for data chunks (by default 254 but this can be increased) }\n    property MaxChunkSize: Word read FMaxChunkSize write FMaxChunkSize;\n  end;\n\nimplementation\n\n{ TBGRAWriterBmpMioMap }\n\nfunction TBGRAWriterBmpMioMap.IndexOfColor(const AColor: TBGRAPixel): Int32or64;\nvar searchedColorValue: Word;\n  searchedAlphaValue: Byte;\n  i,startSearch,endSearch: Int32or64;\nbegin\n  searchedColorValue:= BGRAToMioMap(AColor);\n  searchedAlphaValue:= AlphaToMioMap(AColor.alpha);\n  if length(FPalette)>0 then\n  begin\n    with FPalette[0] do\n    begin\n      if (ColorValue = searchedColorValue) and\n        (AlphaValue = searchedAlphaValue) then\n      begin\n        result := 0;\n        exit;\n      end;\n    end;\n  end;\n\n  startSearch:= FPaletteOffset+1;\n  endSearch:= FPaletteOffset+$FC;\n  if endSearch >= FHeader.nbColors then\n    endSearch:= FHeader.nbColors-1;\n  for i := startSearch to endSearch do\n  with FPalette[i] do\n  begin\n    if (ColorValue = searchedColorValue)\n    and (AlphaValue = searchedAlphaValue) then\n    begin\n      result := i;\n      exit;\n    end;\n  end;\n\n  result := FPaletteIndexes[searchedColorValue];\n  if (result <> -1) and (FPalette[result].AlphaValue <> searchedAlphaValue) then\n    result := -1;\n\n  if result = -1 then\n  begin\n    if fheader.nbColors = 65535 then\n      raise exception.Create('Too many colors');\n    result := fheader.nbColors;\n    inc(FHeader.nbColors);\n    if length(FPalette) <= result then\n      setlength(FPalette, length(FPalette)*2 + 128);\n    with FPalette[result] do\n    begin\n      ColorValue := searchedColorValue;\n      AlphaValue := searchedAlphaValue;\n    end;\n    FPaletteIndexes[searchedColorValue] := result;\n    if (searchedAlphaValue > 0) and (searchedAlphaValue < 32) then\n      FPaletteAlpha := true;\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.InitHeader(Img: TFPCustomImage);\nbegin\n  if (Img.Width > 65535) or (Img.Height > 65535) then\n    raise exception.Create('Image too big to be saved in Bmp MioMap format');\n  FHeader.magic := MioMapMagicValue;\n  fheader.format:= 0;\n  FHeader.width := Img.Width;\n  FHeader.height := img.Height;\n  FHeader.nbColors := 0;\n  FHeader.nbChunks := 0;\nend;\n\nprocedure TBGRAWriterBmpMioMap.InitPalette;\nvar i: Int32or64;\nbegin\n  for i := 0 to high(FPaletteIndexes) do\n    FPaletteIndexes[i] := -1;\n  FPaletteOffset := 0;\n  FPaletteAlpha := false;\n  IndexOfColor(BGRAPixelTransparent); //define transparent color as zero\nend;\n\nprocedure TBGRAWriterBmpMioMap.InitChunks;\nbegin\n  FCurrentChunk := nil;\nend;\n\nprocedure TBGRAWriterBmpMioMap.FlushChunk;\nbegin\n  if FCurrentChunk <> nil then\n  begin\n    setlength(FChunks, length(FChunks)+1);\n    FChunks[high(FChunks)] := FCurrentChunk;\n    FCurrentChunk := nil;\n    inc(FHeader.nbChunks);\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.FreeChunks;\nvar\n  i: Integer;\nbegin\n  FreeAndNil(FCurrentChunk);\n  for i := 0 to high(FChunks) do\n    FChunks[i].Free;\n  FChunks := nil;\nend;\n\nprocedure TBGRAWriterBmpMioMap.NeedChunk;\nbegin\n  if FCurrentChunk = nil then\n  begin\n    if FHeader.nbChunks = 65535 then\n      raise exception.Create('Too many chunks');\n    FCurrentChunk := TMemoryStream.Create;\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.AppendToChunks(const Buffer; Count: integer);\nbegin\n  if Count > 65535 then\n    raise exception.Create('Buffer too big');\n  NeedChunk;\n  if FCurrentChunk.Size + Count > MaxChunkSize then\n  begin\n    FlushChunk;\n    NeedChunk;\n  end;\n  FCurrentChunk.WriteBuffer(Buffer,Count);\nend;\n\nprocedure TBGRAWriterBmpMioMap.BuildPaletteAndChunks(Img: TFPCustomImage);\nvar y,w: Int32or64;\n  PData,PDataEnd: PBGRAPixel;\n  p: PBGRAPixel;\n  currentColorIndex,\n  nextColorIndex,\n  repCount: Int32or64;\n  b: byte;\n  changeOfsRec: packed record\n      valFD: byte;\n      valLo: byte;\n      valHi: byte;\n  end;\n  repRec: packed record\n      valFE: byte;\n      relativeColorIndex: byte;\n      count: byte;\n  end;\n  repZeroRec: packed record\n        valFF: byte;\n        count: byte;\n    end;\n\nbegin\n  w := Img.Width;\n  getmem(PData, w*sizeof(TBGRAPixel));\n  try\n    PDataEnd := PData+w;\n    for y := 0 to Img.Height-1 do\n    begin\n      ReadScanline(Img,Y,PData);\n      p := PData;\n      while p < PDataEnd do\n      begin\n        currentColorIndex:= IndexOfColor(p^);\n        nextColorIndex := currentColorIndex;\n        repCount:= 1;\n        inc(p);\n        while p < PDataEnd do\n        begin\n          nextColorIndex:= IndexOfColor(p^);\n          if nextColorIndex = currentColorIndex then\n          begin\n            inc(p);\n            inc(repCount);\n            if repCount = 255 then break;\n          end\n          else\n            break;\n        end;\n        if currentColorIndex = 0 then\n        begin\n          if repCount = 1 then\n          begin\n            b := 0;\n            AppendToChunks(b,1);\n          end else\n          begin\n            repZeroRec.valFF := $ff;\n            repZeroRec.count := repCount;\n            AppendToChunks(repZeroRec, sizeof(repZeroRec));\n          end;\n        end else\n        begin\n          if (currentColorIndex < FPaletteOffset+1)\n            or (currentColorIndex > FPaletteOffset+$FC) then\n          begin\n            if (abs(nextColorIndex-currentColorIndex) < $FC) then\n            begin\n              FPaletteOffset := (nextColorIndex+currentColorIndex) div 2 - 126;\n            end else\n              FPaletteOffset := currentColorIndex-126;\n            if FPaletteOffset < 0 then FPaletteOffset := 0;\n            changeOfsRec.valFD := $fd;\n            changeOfsRec.valLo := FPaletteOffset and 255;\n            changeOfsRec.valHi := FPaletteOffset shr 8;\n            AppendToChunks(changeOfsRec,sizeof(changeOfsRec));\n          end;\n          if (currentColorIndex < FPaletteOffset+1)\n            or (currentColorIndex > FPaletteOffset+$FC) then\n              raise exception.Create('Index out of range');\n          if repCount = 1 then\n          begin\n            b := currentColorIndex-FPaletteOffset;\n            AppendToChunks(b,1);\n          end else\n          if repCount = 2 then\n          begin\n            b := currentColorIndex-FPaletteOffset;\n            AppendToChunks(b,1);\n            AppendToChunks(b,1);\n          end else\n          begin\n            repRec.valFE:= $FE;\n            repRec.count := repCount;\n            repRec.relativeColorIndex := currentColorIndex-FPaletteOffset;\n            AppendToChunks(repRec, sizeof(repRec));\n          end;\n        end;\n      end;\n      FlushChunk;\n    end;\n  finally\n    freemem(PData);\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.WriteChunks(Str: TStream);\nvar\n  bigChunkDef: packed record\n      val255: byte;\n      valHi: byte;\n      valLo: byte;\n  end;\n  i: Int32or64;\nbegin\n  for i := 0 to high(FChunks) do\n  begin\n    if FChunks[i].Size > 254 then\n    begin\n      bigChunkDef.val255 := 255;\n      bigChunkDef.valHi := FChunks[i].Size shr 8;\n      bigChunkDef.valLo := FChunks[i].Size and 255;\n      Str.WriteBuffer(bigChunkDef, sizeof(bigChunkDef));\n    end else\n      Str.WriteByte(FChunks[i].Size);\n  end;\n  for i := 0 to high(FChunks) do\n  begin\n    FChunks[i].Position := 0;\n    if Str.CopyFrom(FChunks[i],FChunks[i].Size) <> FChunks[i].Size then\n      raise exception.Create('Unable to write chunk');\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.WriteHeader(Str: TStream);\nvar header: TMioHeader;\nbegin\n  if FPaletteAlpha then FHeader.format := 1;\n  FlushChunk;\n\n  header := FHeader;\n  header.format:= NtoLE(header.format);\n  header.width:= NtoLE(header.width);\n  header.height:= NtoLE(header.height);\n  header.nbColors:= NtoLE(header.nbColors);\n  header.nbChunks:= NtoLE(header.nbChunks);\n  Str.WriteBuffer(header, sizeof(header));\nend;\n\nprocedure TBGRAWriterBmpMioMap.WritePalette(Str: TStream);\nvar\n  colors: packed array of Word;\n  alphas: packed array of byte;\n  i: Int32or64;\nbegin\n  setlength(Colors, FHeader.nbColors);\n  for i := 0 to FHeader.nbColors-1 do\n    colors[i] := NtoLE(FPalette[i].ColorValue);\n  Str.WriteBuffer(colors[0], length(Colors)*sizeof(word));\n  if FPaletteAlpha then\n  begin\n    setlength(alphas, FHeader.nbColors);\n    for i := 0 to FHeader.nbColors-1 do\n      alphas[i] := FPalette[i].AlphaValue;\n    Str.WriteBuffer(alphas[0], length(alphas)*sizeof(byte));\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.ReadScanline(Img: TFPCustomImage; Y: integer;\n  ADest: PBGRAPixel);\nvar\n  i: Int32or64;\nbegin\n  if Img is TBGRACustomBitmap then\n    Move(TBGRACustomBitmap(Img).ScanLine[Y]^, ADest^, Img.Width*sizeof(TBGRAPixel))\n  else\n  begin\n    for i := 0 to Img.Width-1 do\n      (ADest+i)^ := FPColorToBGRA(Img.Colors[y,i]);\n  end;\nend;\n\nprocedure TBGRAWriterBmpMioMap.InternalWrite(Str: TStream; Img: TFPCustomImage);\nbegin\n  try\n    InitHeader(Img);\n    InitPalette;\n    InitChunks;\n    BuildPaletteAndChunks(Img);\n    WriteHeader(Str);\n    WritePalette(Str);\n    WriteChunks(Str);\n  finally\n    FreeChunks;\n  end;\nend;\n\nconstructor TBGRAWriterBmpMioMap.Create;\nbegin\n  inherited Create;\n  MaxChunkSize := 254;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifBmpMioMap, TBGRAWriterBmpMioMap, True, 'iGO Bitmap Format', 'bmp');\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/bgrawritejpeg.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n{ Imports the writer for the JPEG image format }\nunit BGRAWriteJpeg;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FPImage, FPReadJPEG, FPWriteJPEG\n\n  {$IF FPC_FULLVERSION<30203}, JPEGLib, JcAPIstd, JcAPImin, JDataDst, JcParam, JError{$ENDIF};\n\ntype\n  TFPJPEGCompressionQuality = 1..100;   // 100 = best quality, 25 = pretty awful\n\n  {* Extends the TFPWriterJPEG to save resolution }\n  TBGRAWriterJPEG = class(TFPWriterJPEG)\n  protected\n    {$IF FPC_FULLVERSION<30203}\n    ACompressInfo: jpeg_compress_struct;\n    FError: jpeg_error_mgr;\n    FProgressMgr: TFPJPEGProgressManager;\n\n    procedure WriteResolutionValues(Img: TFPCustomImage); virtual;\n    procedure InternalWrite(Str: TStream; Img: TFPCustomImage); override;\n    {$ENDIF}\n\n  published\n    //property CompressInfo : jpeg_compress_struct; rw\n    property CompressionQuality;  //: TFPJPEGCompressionQuality; rw\n    property ProgressiveEncoding; //: boolean; rw\n    property GrayScale;           //: boolean; rw\n  end;\n\nimplementation\n\nuses BGRABitmapTypes;\n\n{$IF FPC_FULLVERSION<30203}\nfunction ResolutionUnitTodensity_unit(AResolutionUnit: TResolutionUnit): UINT8;\nbegin\n  Case AResolutionUnit of\n  ruPixelsPerInch: Result :=1;\n  ruPixelsPerCentimeter: Result :=2;\n  else Result :=0;\n  end;\nend;\n\nprocedure JPEGError(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\n  {$ifdef FPC_Debug_Image}\n  writeln('JPEGError ',CurInfo^.err^.msg_code,' ');\n  {$endif}\n  raise Exception.CreateFmt('JPEG error',[CurInfo^.err^.msg_code]);\nend;\n\nprocedure EmitMessage(CurInfo: j_common_ptr; msg_level: Integer);\nbegin\n  if CurInfo=nil then exit;\n  if msg_level=0 then ;\nend;\n\nprocedure OutputMessage(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\nend;\n\nprocedure FormatMessage(CurInfo: j_common_ptr; var buffer: string);\nbegin\n  if CurInfo=nil then exit;\n  {$ifdef FPC_Debug_Image}\n  writeln('FormatMessage ',buffer);\n  {$endif}\nend;\n\nprocedure ResetErrorMgr(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\n  CurInfo^.err^.num_warnings := 0;\n  CurInfo^.err^.msg_code := 0;\nend;\n\nvar\n  jpeg_std_error: jpeg_error_mgr;\n\nprocedure ProgressCallback(CurInfo: j_common_ptr);\nbegin\n  if CurInfo=nil then exit;\n  // ToDo\nend;\n\n{ TBGRAWriterJPEG }\n\nprocedure TBGRAWriterJPEG.WriteResolutionValues(Img: TFPCustomImage);\nbegin\n  if (Img is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(Img) do\n  begin\n    ACompressInfo.density_unit :=ResolutionUnitTodensity_unit(ResolutionUnit);\n    ACompressInfo.X_density :=Round(ResolutionX);\n    ACompressInfo.Y_density :=Round(ResolutionY);\n  end;\nend;\n\nprocedure TBGRAWriterJPEG.InternalWrite(Str: TStream; Img: TFPCustomImage);\nvar\n  MemStream: TMemoryStream;\n  Continue: Boolean;\n\n  procedure InitWriting;\n  begin\n    FError := jpeg_std_error;\n    ACompressInfo := Default(jpeg_compress_struct);\n    jpeg_create_compress(@ACompressInfo);\n    ACompressInfo.err := jerror.jpeg_std_error(FError);\n    ACompressInfo.progress := @FProgressMgr.pub;\n    FProgressMgr.pub.progress_monitor := @ProgressCallback;\n    FProgressMgr.instance := Self;\n  end;\n\n  procedure SetDestination;\n  begin\n    if Str is TMemoryStream then\n      MemStream:=TMemoryStream(Str)\n    else\n      MemStream := TMemoryStream.Create;\n    jpeg_stdio_dest(@ACompressInfo, @MemStream);\n  end;\n\n  procedure WriteHeader;\n  begin\n    ACompressInfo.image_width := Img.Width;\n    ACompressInfo.image_height := Img.Height;\n    if Grayscale then\n    begin\n      ACompressInfo.input_components := 1;\n      ACompressInfo.in_color_space := JCS_GRAYSCALE;\n    end\n    else\n    begin\n      ACompressInfo.input_components := 3; // RGB has 3 components\n      ACompressInfo.in_color_space := JCS_RGB;\n    end;\n\n    jpeg_set_defaults(@ACompressInfo);\n\n    jpeg_set_quality(@ACompressInfo, CompressionQuality, True);\n\n    if ProgressiveEncoding then\n      jpeg_simple_progression(@ACompressInfo);\n\n    WriteResolutionValues(Img);\n  end;\n\n  procedure WritePixels;\n  var\n    LinesWritten: Cardinal;\n    SampArray: JSAMPARRAY;\n    SampRow: JSAMPROW;\n    Color: TFPColor;\n    x: Integer;\n    y: Integer;\n  begin\n    Progress(psStarting, 0, False, Rect(0,0,0,0), '', Continue);\n    if not Continue then exit;\n    jpeg_start_compress(@ACompressInfo, True);\n\n    // write one line per call\n    GetMem(SampArray,SizeOf(JSAMPROW));\n    GetMem(SampRow,ACompressInfo.image_width*ACompressInfo.input_components);\n    SampArray^[0]:=SampRow;\n    try\n      y:=0;\n      while (ACompressInfo.next_scanline < ACompressInfo.image_height) do begin\n        if Grayscale then\n        for x:=0 to ACompressInfo.image_width-1 do\n          SampRow^[x]:=CalculateGray(Img.Colors[x,y]) shr 8\n        else\n        for x:=0 to ACompressInfo.image_width-1 do begin\n          Color:=Img.Colors[x,y];\n          SampRow^[x*3+0]:=Color.Red shr 8;\n          SampRow^[x*3+1]:=Color.Green shr 8;\n          SampRow^[x*3+2]:=Color.Blue shr 8;\n        end;\n        LinesWritten := jpeg_write_scanlines(@ACompressInfo, SampArray, 1);\n        if LinesWritten<1 then break;\n        inc(y);\n      end;\n    finally\n      FreeMem(SampRow);\n      FreeMem(SampArray);\n    end;\n\n    jpeg_finish_compress(@ACompressInfo);\n    Progress(psEnding, 100, False, Rect(0,0,0,0), '', Continue);\n  end;\n\n  procedure EndWriting;\n  begin\n    jpeg_destroy_compress(@ACompressInfo);\n  end;\n\n\nbegin\n  Continue := true;\n  MemStream:=nil;\n  try\n    InitWriting;\n    SetDestination;\n    WriteHeader;\n    WritePixels;\n    if MemStream<>Str then begin\n      MemStream.Position:=0;\n      Str.CopyFrom(MemStream,MemStream.Size);\n    end;\n  finally\n    EndWriting;\n    if MemStream<>Str then\n      MemStream.Free;\n  end;\nend;\n{$ENDIF}\n\ninitialization\n  {$IF FPC_FULLVERSION<30203}\n  with jpeg_std_error do begin\n    error_exit:=@JPEGError;\n    emit_message:=@EmitMessage;\n    output_message:=@OutputMessage;\n    format_message:=@FormatMessage;\n    reset_error_mgr:=@ResetErrorMgr;\n  end;\n  {$ENDIF}\n\n  BGRARegisterImageWriter(ifJpeg, TBGRAWriterJPEG, True, 'JPEG Graphics', 'jpg;jpeg');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritelzp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implements the writer for LazPaint image format }\nunit BGRAWriteLzp;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage, BGRALzpCommon, BGRABitmapTypes, BGRABitmap;\n\ntype\n  {* Extends the TFPCustomImageWriter to write LazPaint image format }\n  TBGRAWriterLazPaint = class(TFPCustomImageWriter)\n  protected\n    { Flags for the compression options }\n    CompressionMode: LongWord;\n    {** Caption to store in the file }\n    FCaption: string;\n\n    function GetCompression: TLzpCompression;\n    function GetIncludeThumbnail: boolean;\n    procedure SetCompression(AValue: TLzpCompression);\n    procedure SetIncludeThumbnail(AValue: boolean);\n    function WriteThumbnail(Str: TStream; Img: TFPCustomImage): boolean;\n    procedure InternalWrite(Str: TStream; Img: TFPCustomImage); override;\n    function InternalWriteLayers({%H-}Str: TStream; {%H-}Img: TFPCustomImage): boolean; virtual;\n    function GetNbLayers: integer; virtual;\n  public\n    {** Create the writer }\n    constructor Create; override;\n    {** Static function to write LazPaint RLE image data into a stream }\n    class procedure WriteRLEImage(Str: TStream; Img: TFPCustomImage; ACaption: string= ''); static;\n\n  published\n    property Caption: string read FCaption write FCaption;\n    {** Property to specify the compression to use }\n    property Compression: TLzpCompression read GetCompression write SetCompression;\n    {** Specify to include a thumbnail or not }\n    property IncludeThumbnail: boolean read GetIncludeThumbnail write SetIncludeThumbnail;\n  end;\n\nimplementation\n\nuses BGRACompressableBitmap;\n\n{ TBGRAWriterLazPaint }\n\nfunction TBGRAWriterLazPaint.WriteThumbnail(Str: TStream; Img: TFPCustomImage): boolean;\nvar w,h: integer;\n  thumbStream: TStream;\n  OldResampleFilter: TResampleFilter;\n  thumbnail: TBGRACustomBitmap;\nbegin\n  result := false;\n  if not (Img is TBGRACustomBitmap) then exit;\n  if (Img.Width > LazpaintThumbMaxWidth) or\n   (Img.Height > LazpaintThumbMaxHeight) then\n  begin\n    if Img.Width > LazpaintThumbMaxWidth then\n    begin\n      w := LazpaintThumbMaxWidth;\n      h := round(Img.Height* (w/Img.Width));\n    end else\n    begin\n      w := Img.Width;\n      h := Img.Height;\n    end;\n    if h > LazpaintThumbMaxHeight then\n    begin\n      h := LazpaintThumbMaxHeight;\n      w := round(Img.Width* (h/Img.Height));\n    end;\n    OldResampleFilter:= TBGRACustomBitmap(Img).ResampleFilter;\n    TBGRACustomBitmap(Img).ResampleFilter:= rfMitchell;\n    thumbnail := TBGRACustomBitmap(Img).Resample(w,h,rmFineResample);\n    TBGRACustomBitmap(Img).ResampleFilter := OldResampleFilter;\n\n    try\n      thumbStream := TMemoryStream.Create;\n      try\n        thumbnail.SaveToStreamAsPng(thumbStream);\n        thumbStream.Position:= 0;\n        Str.CopyFrom(thumbStream, thumbStream.Size);\n        result := true;\n      finally\n        thumbStream.Free;\n      end;\n    finally\n      thumbnail.Free;\n    end;\n  end else\n  begin\n    thumbStream := TMemoryStream.Create;\n    try\n      TBGRACustomBitmap(Img).SaveToStreamAsPng(thumbStream);\n      thumbStream.Position:= 0;\n      Str.CopyFrom(thumbStream, thumbStream.Size);\n      result := true;\n    finally\n      thumbStream.Free;\n    end;\n  end;\nend;\n\nfunction TBGRAWriterLazPaint.GetCompression: TLzpCompression;\nbegin\n  result:= LzpGetCompression(CompressionMode);\nend;\n\nfunction TBGRAWriterLazPaint.GetIncludeThumbnail: boolean;\nbegin\n  result:= LzpGetIncludeThumbnail(CompressionMode);\nend;\n\nprocedure TBGRAWriterLazPaint.SetCompression(AValue: TLzpCompression);\nbegin\n  LzpSetCompression(CompressionMode, AValue);\nend;\n\nprocedure TBGRAWriterLazPaint.SetIncludeThumbnail(AValue: boolean);\nbegin\n  LzpSetIncludeThumbnail(CompressionMode, AValue);\nend;\n\nprocedure TBGRAWriterLazPaint.InternalWrite(Str: TStream; Img: TFPCustomImage);\nvar {%H-}header: TLazPaintImageHeader;\n  compBmp: TBGRACompressableBitmap;\n  startPos, endPos: int64;\nbegin\n  startPos := str.Position;\n  fillchar({%H-}header,sizeof(header),0);\n  header.magic := LAZPAINT_MAGIC_HEADER;\n  header.zero1 := 0;\n  header.headerSize:= sizeof(header);\n  header.width := Img.Width;\n  header.height := img.Height;\n  header.nbLayers:= GetNbLayers;\n  header.previewOffset:= 0;\n  header.zero2 := 0;\n  header.compressionMode:= CompressionMode;\n  header.reserved1:= 0;\n  header.layersOffset:= 0;\n  LazPaintImageHeader_SwapEndianIfNeeded(header);\n  str.WriteBuffer(header,sizeof(header));\n  LazPaintImageHeader_SwapEndianIfNeeded(header);\n\n  if IncludeThumbnail then\n    if not WriteThumbnail(Str, Img) then\n    begin\n      IncludeThumbnail := false;\n      header.compressionMode:= CompressionMode; //update field for thumbnail\n    end;\n\n  header.previewOffset:= Str.Position - startPos;\n  if Compression = lzpRLE then\n    WriteRLEImage(Str, Img, FCaption)\n  else\n  begin\n    compBmp := TBGRACompressableBitmap.Create(Img as TBGRABitmap);\n    compBmp.Caption := FCaption;\n    compBmp.WriteToStream(Str);\n    compBmp.Free;\n  end;\n\n  endPos := str.Position;\n  if InternalWriteLayers(Str, Img) then\n  begin\n    header.layersOffset := endPos - startPos;\n    endPos := str.Position;\n  end;\n\n  str.Position:= startPos;\n  LazPaintImageHeader_SwapEndianIfNeeded(header);\n  str.WriteBuffer(header,sizeof(header));\n  str.Position:= endPos;\nend;\n\nfunction TBGRAWriterLazPaint.InternalWriteLayers(Str: TStream;\n  Img: TFPCustomImage): boolean;\nbegin\n  result := false;\nend;\n\nfunction TBGRAWriterLazPaint.GetNbLayers: integer;\nbegin\n  result := 1;\nend;\n\nconstructor TBGRAWriterLazPaint.Create;\nbegin\n  inherited Create;\n  CompressionMode:= LAZPAINT_COMPRESSION_MODE_RLE;\nend;\n\nclass procedure TBGRAWriterLazPaint.WriteRLEImage(Str: TStream;\n  Img: TFPCustomImage; ACaption: string);\nconst PossiblePlanes = 4;\nvar\n  PPlane,PPlaneCur: array[0..PossiblePlanes-1] of PByte;\n  CompressedPlane: array[0..PossiblePlanes-1] of TMemoryStream;\n  NbPixels, NbNonTranspPixels, NbOpaquePixels: integer;\n  Colors: array[0..255] of Int32or64;\n  ColorCount: Int32or64;\n  CompressedRGB: array[0..3] of TMemoryStream;\n  ColorTab: packed array[0..256*3-1] of byte;\n  Indexed: PByte;\n  NonRGBSize,RGBSize: int64;\n\n  procedure OutputPlane(AIndex: integer);\n  begin\n    str.WriteDWord(NtoLE(LongWord(CompressedPlane[AIndex].Size)));\n    CompressedPlane[AIndex].Position:= 0;\n    str.CopyFrom(CompressedPlane[AIndex],CompressedPlane[AIndex].Size);\n  end;\n\n  procedure OutputRGB(AIndex: integer);\n  begin\n    str.WriteDWord(NtoLE(LongWord(CompressedRGB[AIndex].Size)));\n    CompressedRGB[AIndex].Position:= 0;\n    str.CopyFrom(CompressedRGB[AIndex],CompressedRGB[AIndex].Size);\n  end;\n\n  function BuildPalette: boolean;\n  var n,i: Int32or64;\n    lastColor,color,colorIndex: Int32or64;\n    found: boolean;\n  begin\n    ColorCount := 0;\n    ColorIndex := 0;\n    lastColor := -1;\n    GetMem(Indexed, NbNonTranspPixels);\n    for n := 0 to NbNonTranspPixels-1 do\n    begin\n      color := (PPlane[0]+n)^+ ((PPlane[1]+n)^ shl 8)+ ((PPlane[2]+n)^ shl 16);\n      if color = lastColor then\n      begin\n        (Indexed+n)^ := ColorIndex;\n        continue;\n      end;\n      found := false;\n      for i := 0 to ColorCount-1 do\n      begin\n        if colors[i] = color then\n        begin\n          found := true;\n          ColorIndex := i;\n          break;\n        end;\n      end;\n      if not found then\n      begin\n        inc(ColorCount);\n        if ColorCount > 256 then\n        begin\n          result := false;\n          ReAllocMem(Indexed,0);\n          exit;\n        end;\n        colors[colorCount-1] := color;\n        ColorIndex := ColorCount-1;\n      end;\n      (Indexed+n)^ := ColorIndex;\n      lastColor := color;\n    end;\n    result := true;\n  end;\n\nvar\n  i,x,y: integer;\n  PlaneFlags: Byte;\n  a: Int32or64;\n  psrc: PBGRAPixel;\n\nbegin\n  NbPixels := Img.Width*img.Height;\n\n  for i := 0 to PossiblePlanes-1 do\n  begin\n    getmem(PPlane[i],NbPixels);\n    PPlaneCur[i] := PPlane[i];\n    CompressedPlane[i] := nil;\n  end;\n\n  NbNonTranspPixels := 0;\n  NbOpaquePixels:= 0;\n  if img is TBGRACustomBitmap then\n  begin\n    for y := 0 to img.Height-1 do\n    begin\n      psrc := TBGRACustomBitmap(img).ScanLine[y];\n      for x := img.Width-1 downto 0 do\n      begin\n        with psrc^ do\n        begin\n          PPlaneCur[3]^ := alpha;\n          inc(PPlaneCur[3]);\n          if alpha = 0 then begin inc(psrc); continue; end;\n          if alpha = 255 then inc(NbOpaquePixels);\n\n          inc(NbNonTranspPixels);\n          PPlaneCur[0]^ := red;\n          PPlaneCur[1]^ := green;\n          PPlaneCur[2]^ := blue;\n          inc(PPlaneCur[0]);\n          inc(PPlaneCur[1]);\n          inc(PPlaneCur[2]);\n        end;\n        inc(psrc);\n      end;\n    end;\n  end else\n    for y := 0 to img.Height-1 do\n      for x := 0 to img.Width-1 do\n      begin\n        with img.Colors[x,y] do\n        begin\n          a := alpha shr 8;\n          PPlaneCur[3]^ := a;\n          inc(PPlaneCur[3]);\n          if a = 0 then continue;\n          if a = 255 then inc(NbOpaquePixels);\n\n          inc(NbNonTranspPixels);\n          PPlaneCur[0]^ := red shr 8;\n          PPlaneCur[1]^ := green shr 8;\n          PPlaneCur[2]^ := blue shr 8;\n          inc(PPlaneCur[0]);\n          inc(PPlaneCur[1]);\n          inc(PPlaneCur[2]);\n        end;\n      end;\n\n  PlaneFlags := 0;\n  if NbOpaquePixels = NbPixels then PlaneFlags := PlaneFlags or LazpaintChannelNoAlpha;\n  if CompareMem(PPlane[1],PPlane[0],NbNonTranspPixels) then PlaneFlags := PlaneFlags or LazpaintChannelGreenFromRed;\n  if CompareMem(PPlane[2],PPlane[0],NbNonTranspPixels) then PlaneFlags := PlaneFlags or LazpaintChannelBlueFromRed else\n  if CompareMem(PPlane[2],PPlane[1],NbNonTranspPixels) then PlaneFlags := PlaneFlags or LazpaintChannelBlueFromGreen;\n\n  //if we cannot reduce to one plane, maybe we will have more luck with a palette\n  for i := 0 to 3 do CompressedRGB[i] := nil;\n  Indexed := nil;\n  RGBSize := 0;\n  if ((PlaneFlags and LazpaintChannelGreenFromRed) = 0) or\n     ((PlaneFlags and (LazpaintChannelBlueFromRed or LazpaintChannelBlueFromGreen)) = 0) and (NbNonTranspPixels > 0) then\n  begin\n    if BuildPalette then\n    begin\n      if ColorCount shl 1 < NbNonTranspPixels then\n      begin\n        fillchar({%H-}ColorTab, sizeof(ColorTab), 0);\n        for i := 0 to ColorCount-1 do\n        begin\n          colorTab[i] := Colors[i] and 255;\n          colorTab[i+256] := (Colors[i] shr 8) and 255;\n          colorTab[i+512] := (Colors[i] shr 16) and 255;\n        end;\n        CompressedRGB[0] := TMemoryStream.Create;\n        EncodeLazRLE(colorTab[0], ColorCount, CompressedRGB[0]);\n        if (PlaneFlags and LazpaintChannelGreenFromRed) = 0 then\n        begin\n          CompressedRGB[1] := TMemoryStream.Create;\n          EncodeLazRLE(colorTab[256], ColorCount, CompressedRGB[1]);\n        end;\n        if (PlaneFlags and (LazpaintChannelBlueFromRed or LazpaintChannelBlueFromGreen)) = 0 then\n        begin\n          CompressedRGB[2] := TMemoryStream.Create;\n          EncodeLazRLE(colorTab[512], ColorCount, CompressedRGB[2]);\n        end;\n        CompressedRGB[3] := TMemoryStream.Create;\n        EncodeLazRLE(Indexed^,NbNonTranspPixels,CompressedRGB[3]);\n\n        for i := 0 to 3 do\n          if CompressedRGB[i] <> nil then\n            inc(RGBSize,CompressedRGB[i].Size);\n      end;\n      ReAllocMem(Indexed,0);\n    end;\n  end;\n\n  if (PlaneFlags and LazpaintChannelGreenFromRed) <> 0 then ReAllocMem(PPlane[1],0);\n  if (PlaneFlags and (LazpaintChannelBlueFromRed or LazpaintChannelBlueFromGreen)) <> 0 then ReAllocMem(PPlane[2],0);\n\n  NonRGBSize := 0;\n  for i := 0 to PossiblePlanes-1 do\n    if PPlane[i] <> nil then\n    begin\n      CompressedPlane[i] := TMemoryStream.Create;\n      if i = 3 then\n        EncodeLazRLE(PPlane[i]^, NbPixels,CompressedPlane[i])\n      else\n        EncodeLazRLE(PPlane[i]^, NbNonTranspPixels,CompressedPlane[i]);\n      inc(NonRGBSize, CompressedPlane[i].Size);\n    end;\n\n  if (CompressedRGB[3] <> nil) and (NonRGBSize > RGBSize) then\n    PlaneFlags:= PlaneFlags or LazpaintPalettedRGB;\n\n  str.WriteDWord(NtoLE(LongWord(img.width)));\n  str.WriteDWord(NtoLE(LongWord(img.Height)));\n  str.WriteDWord(NtoLE(LongWord(length(ACaption))));\n  if length(ACaption)>0 then str.WriteBuffer(ACaption[1],length(ACaption));\n  str.WriteByte(PlaneFlags);\n\n  if (PlaneFlags and LazpaintChannelNoAlpha) = 0 then OutputPlane(3);\n  if (PlaneFlags and LazpaintPalettedRGB) <> 0 then\n  begin\n    for i := 0 to 3 do\n      if CompressedRGB[i] <> nil then\n        OutputRGB(i);\n  end else\n  begin\n    OutputPlane(0);\n    if (PlaneFlags and LazpaintChannelGreenFromRed) = 0 then OutputPlane(1);\n    if (PlaneFlags and (LazpaintChannelBlueFromRed or LazpaintChannelBlueFromGreen)) = 0 then OutputPlane(2);\n  end;\n\n  for i := 0 to PossiblePlanes-1 do\n  begin\n    freemem(PPlane[i]);\n    CompressedPlane[i].Free;\n  end;\n  for i := 0 to 3 do\n    CompressedRGB[i].Free;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifLazPaint, TBGRAWriterLazPaint, True, 'LazPaint Image Format', 'lzp');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritepcx.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n{ Imports the writer for the PCX image format }\nunit BGRAWritePCX;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses Classes, SysUtils, FPImage, FPWritePCX, BGRABitmapTypes;\n\ntype\n  {* Extends the TFPWriterPCX to save resolution }\n  TBGRAWriterPCX = class(TFPWriterPCX)\n  protected\n    {$IF FPC_FULLVERSION<30203}\n    function SaveHeader(Stream: TStream; Img: TFPCustomImage): boolean; override;\n    {$ENDIF}\n\n  published\n    // MaxM: TO-DO TFPWriterPCX alway write at 8 BitsPerPixel\n    //             It might be useful to write the other modes\n    //property GrayScale: Boolean\n    //property BitsPerPixel: byte // [1, 4, 8, 24]\n    property Compressed;  //: boolean rw;\n  end;\n\nimplementation\n\n{$IF FPC_FULLVERSION<30203}\nuses pcxcomn;\n\nfunction TBGRAWriterPCX.SaveHeader(Stream: TStream; Img: TFPCustomImage): boolean;\nvar\n  Header: TPCXHeader;\nbegin\n  //Code copied from FPWriterPCX because FillChar may not be done\n  Result := False;\n  FillChar(Header, SizeOf(Header), 0);\n  with Header do\n  begin\n    FileID  := $0a;\n    Version := 5;\n    if Compressed then\n      Encoding := 1\n    else\n      Encoding := 0;\n    BitsPerPixel := 8;\n    XMin := 0;\n    YMin := 0;\n    XMax := Img.Width - 1;\n    YMax := Img.Height - 1;\n\n    //Resolution\n    if (Img is TCustomUniversalBitmap)\n    then with TCustomUniversalBitmap(Img) do\n         begin\n           ResolutionUnit :=ruPixelsPerInch;\n           HRes :=Trunc(ResolutionX);\n           VRes :=Trunc(ResolutionY);\n         end\n    else begin\n           HRes := 300;\n           VRes := 300;\n         end;\n\n    ColorPlanes := 3;\n    BytesPerLine := Img.Width;\n    PaletteType := 1;\n  end;\n  Stream.WriteBuffer(Header, SizeOf(Header));\n  Result := True;\nend;\n{$ENDIF}\n\ninitialization\n  BGRARegisterImageWriter(ifPcx, TBGRAWriterPCX, True, 'PCX Format', 'pcx');\n\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritepng.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{\n    The original file is part of the Free Pascal run time library.\n    Copyright (c) 2003 by the Free Pascal development team\n\n    PNG writer class modified by circular.\n\n **********************************************************************\n\n Fix for images with grayscale and alpha,\n and for images with transparent pixels\n }\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n\n{ Implements the writer for the PNG image format }\nunit BGRAWritePNG;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses sysutils, BGRAClasses, FPImage, FPImgCmn, BGRAPNGComn, ZStream, BGRABitmapTypes;\n\ntype\n  { Information about frame to write in PNG }\n  TPNGFrameToWrite = record\n    FrameControl: TFrameControlChunk;\n    Image: TFPCustomImage;\n  end;\n  TPNGArrayOfFrameToWrite = array of TPNGFrameToWrite;\n\n  TGetPixelFunc = function (x,y : LongWord) : TColorData of object;\n  TGetPixelBGRAFunc = function (p: PBGRAPixel) : TColorData of object;\n\n  TColorFormatFunction = function (color:TFPColor) : TColorData of object;\n\n  {* Extends the TFPCustomImageWriter to write the PNG image format }\n  TBGRAWriterPNG = class (TBGRACustomWriterPNG)\n    private\n      FCompressedText, FWordSized, FIndexed,\n      FUseAlpha, FGrayScale : boolean;\n      FCustomPalette: TFPPalette;\n\n      FSourceImage: TFPCustomImage;\n      FAnimation: array of TPNGFrameToWrite;\n      FAnimationChunkCount: Longword;\n      FRepeatCount: integer;\n\n      FUsetRNS: boolean;\n      FByteWidth : byte;\n      FChunk : TChunk;\n      CFmt : TColorFormat; // format of the colors to convert from\n      FFmtColor : TColorFormatFunction;\n      FTransparentColor : TFPColor;\n      FTransparentColorOk: boolean;\n      FSwitchLine, FCurrentLine, FPreviousLine : pByteArray;\n      FPalette : TFPPalette;\n      OwnsPalette : boolean;\n      FHeader : THeaderChunk;\n      FGetPixel : TGetPixelFunc;\n      FGetPixelBGRA : TGetPixelBGRAFunc;\n      FDatalineLength : LongWord;\n      ZData : TMemoryStream;  // holds uncompressed data until all blocks are written\n      Compressor : TCompressionStream; // compresses the data\n      FCompressionLevel : TCompressionLevel;\n      procedure WriteChunk;\n      function GetColorPixel (x,y:LongWord) : TColorData;\n      function GetPalettePixel (x,y:LongWord) : TColorData;\n      function GetColPalPixel (x,y:LongWord) : TColorData;\n      function GetColorPixelBGRA (p: PBGRAPixel) : TColorData;\n      function GetPalettePixelBGRA (p: PBGRAPixel) : TColorData;\n      function GetColPalPixelBGRA (p: PBGRAPixel) : TColorData;\n      procedure InitWriteImageData;\n      procedure GatherData;\n      procedure WriteCompressedData(AImageDataChunkCode: TChunkCode);\n      procedure FinalWriteImageData;\n    protected\n      property Header : THeaderChunk read FHeader;\n      procedure InternalWrite ({%H-}Str:TStream; {%H-}Img:TFPCustomImage); override;\n      function GetUseAlpha: boolean; override;\n      procedure SetUseAlpha(AValue: boolean); override;\n      procedure WriteIHDR; virtual;\n      procedure WritePLTE; virtual;\n      procedure WriteResolutionValues; virtual;\n      procedure WritetRNS; virtual;\n      procedure WriteImageData(AImage: TFPCustomImage; AImageDataChunkCode: TChunkCode); virtual;\n      procedure WriteIDAT; virtual;\n      procedure WritefdAT(AIndex: integer); virtual;\n      procedure WriteTexts; virtual;\n      procedure WriteacTL; virtual;\n      procedure WritefcTL(AIndex: integer); virtual;\n      procedure WriteIEND; virtual;\n      function CurrentLine (x:LongWord) : byte; inline;\n      function PrevSample (x:LongWord): byte; inline;\n      function PreviousLine (x:LongWord) : byte; inline;\n      function PrevLinePrevSample (x:LongWord): byte; inline;\n      function  DoFilter (LineFilter:byte;index:LongWord; b:byte) : byte; virtual;\n      procedure SetChunkLength (aValue : LongWord);\n      procedure SetChunkType (ct : TChunkTypes); overload;\n      procedure SetChunkType (ct : TChunkCode); overload;\n      function DecideGetPixel : TGetPixelFunc; virtual;\n      function DecideGetPixelBGRA : TGetPixelBGRAFunc; virtual;\n      procedure DetermineHeader (var AHeader : THeaderChunk); virtual;\n      function DetermineFilter ({%H-}Current, {%H-}Previous:PByteArray; {%H-}linelength:LongWord):byte; virtual;\n      procedure FillScanLine (y : integer; ScanLine : pByteArray); virtual;\n      function ColorDataGrayB(color:TFPColor) : TColorData;\n      function ColorDataColorB(color:TFPColor) : TColorData;\n      function ColorDataGrayW(color:TFPColor) : TColorData;\n      function ColorDataColorW(color:TFPColor) : TColorData;\n      function ColorDataGrayAB(color:TFPColor) : TColorData;\n      function ColorDataColorAB(color:TFPColor) : TColorData;\n      function ColorDataGrayAW(color:TFPColor) : TColorData;\n      function ColorDataColorAW(color:TFPColor) : TColorData;\n      property ChunkDataBuffer : pByteArray read FChunk.data;\n      property UsetRNS : boolean read FUsetRNS;\n      property SingleTransparentColor : TFPColor read FTransparentColor;\n      property SingleTransparentColorOk : boolean read FTransparentColorOk;\n      property ThePalette : TFPPalette read FPalette;\n      property ColorFormat : TColorformat read CFmt;\n      property ColorFormatFunc : TColorFormatFunction read FFmtColor;\n      property byteWidth : byte read FByteWidth;\n      property DatalineLength : LongWord read FDatalineLength;\n    public\n      constructor Create; override;\n      destructor Destroy; override;\n      procedure AnimationWrite(AStream: TStream;\n        AImage:TFPCustomImage;  // default image (may be as well in the animation)\n        AAnimation: TPNGArrayOfFrameToWrite;\n        ARepeatCount: integer = 0); // loop count (0 for infinite loop)\n      property Indexed : boolean read FIndexed write FIndexed;\n      property CustomPalette: TFPPalette read FCustomPalette write FCustomPalette;\n      property CompressedText : boolean read FCompressedText write FCompressedText;\n\n    published\n      property GrayScale : boolean read FGrayscale write FGrayScale;\n      property WordSized : boolean read FWordSized write FWordSized;\n      property CompressionLevel : TCompressionLevel read FCompressionLevel write FCompressionLevel;\n  end;\n\nimplementation\n\nuses BGRAReadPNG;\n\nconstructor TBGRAWriterPNG.Create;\nbegin\n  inherited;\n  Fchunk.acapacity := 0;\n  Fchunk.data := nil;\n  FGrayScale := False;\n  FIndexed := False;\n  FCustomPalette := nil;\n  FAnimation := nil;\n  FRepeatCount := -1;\n  FCompressedText := True;\n  FWordSized := False;\n  FUseAlpha := True;\n  FCompressionLevel:=clDefault;\nend;\n\ndestructor TBGRAWriterPNG.Destroy;\nbegin\n  if OwnsPalette then FreeAndNil(FPalette);\n  with Fchunk do\n    if acapacity > 0 then\n      freemem (data);\n  inherited;\nend;\n\nprocedure TBGRAWriterPNG.AnimationWrite(AStream: TStream;\n  AImage: TFPCustomImage; AAnimation: TPNGArrayOfFrameToWrite;\n  ARepeatCount: integer);\nbegin\n  if Indexed and not Assigned(FCustomPalette) then\n    raise FPImageException.Create('Palette must be specified for indexed color');\n  if ARepeatCount < 0 then\n    raise FPImageException.Create('Repeat count must be positive');\n  FAnimation := AAnimation;\n  FRepeatCount:= ARepeatCount;\n  try\n    ImageWrite(AStream, AImage);\n  finally\n    FAnimation := nil;\n    FRepeatCount:= -1;\n  end;\nend;\n\nprocedure TBGRAWriterPNG.WriteChunk;\nvar chead : TChunkHeader;\n    c : LongWord;\nbegin\n  with FChunk do\n    begin\n    {$IFDEF ENDIAN_LITTLE}\n    chead.CLength := swap (alength);\n    {$ELSE}\n    chead.CLength := alength;\n    {$ENDIF}\n\tif (ReadType = '') then\n      if atype <> ctUnknown then\n        chead.CType := GetChunkCode(aType)\n      else\n        raise PNGImageException.create ('Doesn''t have a chunktype to write')\n    else\n      chead.CType := ReadType;\n    c := CalculateChunkCRC (ReadType, data, alength);\n    {$IFDEF ENDIAN_LITTLE}\n    crc := swap(c);\n    {$ENDIF}\n    with TheStream do\n      begin\n      Write (chead, sizeof(chead));\n      if alength > 0 then\n        Write (data^[0], alength);\n      Write (crc, sizeof(crc));\n      end;\n    end;\nend;\n\nprocedure TBGRAWriterPNG.SetChunkLength(aValue : LongWord);\nbegin\n  with Fchunk do\n    begin\n    alength := aValue;\n    if aValue > acapacity then\n      begin\n      if acapacity > 0 then\n        freemem (data);\n      GetMem (data, alength);\n      acapacity := alength;\n      end;\n    end;\nend;\n\nprocedure TBGRAWriterPNG.SetChunkType (ct : TChunkTypes);\nbegin\n  with Fchunk do\n    begin\n    aType := ct;\n    ReadType := GetChunkCode(ct);\n    end;\nend;\n\nprocedure TBGRAWriterPNG.SetChunkType (ct : TChunkCode);\nbegin\n  with FChunk do\n    begin\n    ReadType := ct;\n    aType := GetChunkType(ct);\n    end;\nend;\n\nfunction TBGRAWriterPNG.CurrentLine(x:LongWord):byte;\nbegin\n  result := FCurrentLine^[x];\nend;\n\nfunction TBGRAWriterPNG.PrevSample (x:LongWord): byte;\nbegin\n  if x < byteWidth then\n    result := 0\n  else\n    result := FCurrentLine^[x - bytewidth];\nend;\n\nfunction TBGRAWriterPNG.PreviousLine (x:LongWord) : byte;\nbegin\n  result := FPreviousline^[x];\nend;\n\nfunction TBGRAWriterPNG.PrevLinePrevSample (x:LongWord): byte;\nbegin\n  if x < byteWidth then\n    result := 0\n  else\n    result := FPreviousLine^[x - bytewidth];\nend;\n\nfunction TBGRAWriterPNG.DoFilter(LineFilter:byte;index:LongWord; b:byte) : byte;\nvar diff : byte;\n  procedure FilterSub;\n  begin\n    diff := PrevSample(index);\n  end;\n  procedure FilterUp;\n  begin\n    diff := PreviousLine(index);\n  end;\n  procedure FilterAverage;\n  var l, p : word;\n  begin\n    l := PrevSample(index);\n    p := PreviousLine(index);\n    Diff := (l + p) div 2;\n  end;\n  procedure FilterPath;\n  var dl, dp, dlp : word; // index for previous and distances for:\n      l, p, lp : byte;  // r:predictor, Left, Previous, LeftPrevious\n      r : integer;\n  begin\n    l := PrevSample(index);\n    lp := PrevLinePrevSample(index);\n    p := PreviousLine(index);\n    r := Int32or64(l) + Int32or64(p) - Int32or64(lp);\n    dl := abs (r - l);\n    dlp := abs (r - lp);\n    dp := abs (r - p);\n    if (dl <= dp) and (dl <= dlp) then\n      diff := l\n    else if dp <= dlp then\n      diff := p\n    else\n      diff := lp;\n  end;\nbegin\n  diff := 0;\n  case LineFilter of\n    1 : FilterSub;\n    2 : FilterUp;\n    3 : FilterAverage;\n    4 : FilterPath;\n  end;\n  if diff > b then\n    result := (b + $100 - diff)\n  else\n    result := b - diff;\nend;\n\nprocedure TBGRAWriterPNG.DetermineHeader (var AHeader : THeaderChunk);\nvar c : integer;\n\n  function ReducedColorEquals(const c1,c2: TFPColor): boolean;\n  var g1,g2: word;\n  begin\n    if FGrayScale then\n      begin\n        g1 := CalculateGray(c1);\n        g2 := CalculateGray(c2);\n        if fwordsized then\n          result := (g1 = g2)\n        else\n          result := (g1 shr 8 = g2 shr 8);\n      end else\n      begin\n        if FWordSized then\n          result := (c1.red = c2.red) and (c1.green = c2.green) and (c1.blue = c2.blue)\n        else\n          result := (c1.red shr 8 = c2.red shr 8) and (c1.green shr 8 = c2.green shr 8) and (c1.blue shr 8 = c2.blue shr 8);\n      end;\n  end;\n\n  function CountAlphas : integer;\n  var none, half : boolean;\n      maxTransparentAlpha: word;\n\n    procedure CountFromPalettedImage(AImage: TFPCustomImage);\n    var\n      p : integer;\n      a : word;\n      c : TFPColor;\n    begin\n      with AImage.Palette do\n        begin\n        p := count-1;\n        FTransparentColor.alpha := alphaOpaque;\n        while (p >= 0) do\n          begin\n          c := color[p];\n          a := c.Alpha;\n          if a < FTransparentColor.alpha then //we're looking for the most transparent color\n            FTransparentColor := c;\n          if a <= maxTransparentAlpha then none := true\n          else if a <> alphaOpaque then half := true;\n          dec (p);\n          end;\n\n        //check transparent color is used consistently\n        p := count-1;\n        while (p >= 0) do\n          begin\n          c := color[p];\n          if c.alpha > maxTransparentAlpha then\n          begin\n            if ReducedColorEquals(c, FTransparentColor) then\n              begin\n              FTransparentColorOk := false;\n              break;\n              end;\n          end\n          else\n          begin\n            if not ReducedColorEquals(c, FTransparentColor) then\n              begin\n              FTransparentColorOk := false;\n              break;\n              end;\n          end;\n          dec(p);\n          end;\n        end;\n    end;\n\n    procedure CountFromRGBImage(AImage: TFPCustomImage);\n    var\n      a : word;\n      c : TFPColor;\n      x,y : longint;  // checks on < 0\n    begin\n      with AImage do\n        begin\n        x := width-1;\n        y := height-1;\n        FTransparentColor.alpha := alphaOpaque;\n        while (y >= 0) and not half do //we stop if we already need a full alpha\n          begin\n          c := colors[x,y];\n          a := c.Alpha;\n          if a < FTransparentColor.alpha then //we're looking for the most transparent color\n            FTransparentColor := c;\n          if a <= maxTransparentAlpha then none := true\n          else if a <> alphaOpaque then half := true;\n          dec (x);\n          if (x < 0) then\n            begin\n            dec (y);\n            x := width-1;\n            end;\n          end;\n\n        //check transparent color is used consistently\n        x := width-1;\n        y := height-1;\n        while (y >= 0) do\n          begin\n          c := colors[x,y];\n          if c.alpha > maxTransparentAlpha then\n          begin\n            if ReducedColorEquals(c, FTransparentColor) then\n              begin\n              FTransparentColorOk := false;\n              break;\n              end;\n          end\n          else\n          begin\n            if not ReducedColorEquals(c, FTransparentColor) then\n              begin\n              FTransparentColorOk := false;\n              break;\n              end;\n          end;\n          dec (x);\n          if (x < 0) then\n            begin\n            dec (y);\n            x := width-1;\n            end;\n          end;\n        end;\n    end;\n\n  var i: integer;\n  begin\n    FTransparentColorOk := true;\n    if FWordSized then maxTransparentAlpha := 0\n    else maxTransparentAlpha := $00ff;\n    half := false;\n    none := false;\n    if TheImage.UsePalette then\n      CountFromPalettedImage(TheImage)\n    else\n      CountFromRGBImage(TheImage);\n\n    for i := 0 to high(FAnimation) do\n    begin\n      if FAnimation[i].Image <> TheImage then\n      begin\n        if FAnimation[i].Image.UsePalette then\n          CountFromPalettedImage(FAnimation[i].Image)\n        else\n          CountFromRGBImage(FAnimation[i].Image);\n      end;\n    end;\n\n    if half then\n      result := 3\n    else\n    if none then\n      begin\n      if FTransparentColorOk then\n        result := 2\n      else\n        result := 3;\n      end\n    else\n      result := 1;\n  end;\n  procedure DetermineColorFormat;\n  begin\n    with AHeader do\n      case colortype of\n        0 : if FWordSized then\n              begin\n              FFmtColor := @ColorDataGrayW;\n              FByteWidth := 2;\n              //CFmt := cfGray16\n              end\n            else\n              begin\n              FFmtColor := @ColorDataGrayB;\n              FByteWidth := 1;\n              //CFmt := cfGray8;\n              end;\n        2 : if FWordSized then\n              begin\n              FFmtColor := @ColorDataColorW;\n              FByteWidth := 6;\n              //CFmt := cfBGR48\n              end\n            else\n              begin\n              FFmtColor := @ColorDataColorB;\n              FByteWidth := 3;\n              //CFmt := cfBGR24;\n              end;\n        4 : if FWordSized then\n              begin\n              FFmtColor := @ColorDataGrayAW;\n              FByteWidth := 4;\n              //CFmt := cfGrayA32\n              end\n            else\n              begin\n              FFmtColor := @ColorDataGrayAB;\n              FByteWidth := 2;\n              //CFmt := cfGrayA16;\n              end;\n        6 : if FWordSized then\n              begin\n              FFmtColor := @ColorDataColorAW;\n              FByteWidth := 8;\n              //CFmt := cfABGR64\n              end\n            else\n              begin\n              FFmtColor := @ColorDataColorAB;\n              FByteWidth := 4;\n              //CFmt := cfABGR32;\n              end;\n      end;\n  end;\nbegin\n  with AHeader do\n    begin\n    {$IFDEF ENDIAN_LITTLE}\n    // problem: TheImage has integer width, PNG header LongWord width.\n    //          Integer Swap can give negative value\n    Width := swap (LongWord(TheImage.Width));\n    height := swap (LongWord(TheImage.Height));\n    {$ELSE}\n    Width := TheImage.Width;\n    height := TheImage.Height;\n    {$ENDIF}\n    if FUseAlpha then\n      c := CountAlphas\n    else\n      c := 0;\n    if FIndexed then\n      begin\n      if OwnsPalette then FreeAndNil(FPalette);\n      if Assigned(FCustomPalette) then\n      begin\n        OwnsPalette:= false;\n        FPalette := FCustomPalette;\n      end else\n      begin\n        if Assigned(FAnimation) then\n          raise FPImageException.Create('Palette must be specified for indexed color');\n        OwnsPalette := not TheImage.UsePalette;\n        if OwnsPalette then\n          begin\n          FPalette := TFPPalette.Create (16);\n          FPalette.Build (TheImage);\n          end\n        else\n          FPalette := TheImage.Palette;\n      end;\n      if ThePalette.count > 256 then\n        raise PNGImageException.Create ('Too many colors to use indexed PNG color type');\n      ColorType := 3;\n      FUsetRNS := C > 1;\n      BitDepth := 8;\n      FByteWidth := 1;\n      end\n    else\n      begin\n      if c = 3 then\n        ColorType := 4;\n      FUsetRNS := (c = 2);\n      if not FGrayScale then\n        ColorType := ColorType + 2;\n      if FWordSized then\n        BitDepth := 16\n      else\n        BitDepth := 8;\n      DetermineColorFormat;\n      end;\n    Compression := 0;\n    Filter := 0;\n    Interlace := 0;\n    end;\nend;\n\nprocedure TBGRAWriterPNG.WriteIHDR;\nvar signature: TPNGSignature;\nbegin\n  // signature for PNG\n  signature := GetSignature;\n  TheStream.writeBuffer(signature, sizeof(signature));\n  // Determine all settings for filling the header\n  fillchar(fheader,sizeof(fheader),#0);\n  DetermineHeader (FHeader);\n  // write the header chunk\n  SetChunkLength (sizeof(FHeader));\n  move (FHeader, ChunkDataBuffer^, sizeof(FHeader));\n  SetChunkType (ctIHDR);\n  WriteChunk;\nend;\n\n{ Color convertions }\n\nfunction TBGRAWriterPNG.ColorDataGrayB(color:TFPColor) : TColorData;\nvar t : word;\nbegin\n  t := CalculateGray (color);\n  result := hi(t);\nend;\n\nfunction TBGRAWriterPNG.ColorDataGrayW(color:TFPColor) : TColorData;\nbegin\n  result := CalculateGray (color);\nend;\n\nfunction TBGRAWriterPNG.ColorDataGrayAB(color:TFPColor) : TColorData;\nbegin\n  result := ColorDataGrayB (color);\n  result := (color.Alpha and $ff00) or result;\nend;\n\nfunction TBGRAWriterPNG.ColorDataGrayAW(color:TFPColor) : TColorData;\nbegin\n  result := ColorDataGrayW (color);\n  result := (color.Alpha shl 16) or result;\nend;\n\nfunction TBGRAWriterPNG.ColorDataColorB(color:TFPColor) : TColorData;\nbegin\n  {$PUSH}{$HINTS OFF}\n  with color do\n    result := hi(red) + (green and $FF00) + (hi(blue) shl 16);\n  {$POP}\nend;\n\nfunction TBGRAWriterPNG.ColorDataColorW(color:TFPColor) : TColorData;\nbegin\n  {$PUSH}{$HINTS OFF}\n  with color do\n    result := red + (green shl 16) + (qword(blue) shl 32);\n  {$POP}\nend;\n\nfunction TBGRAWriterPNG.ColorDataColorAB(color:TFPColor) : TColorData;\nbegin\n  {$PUSH}{$HINTS OFF}\n  with color do\n    result := hi(red) + (green and $FF00) + (hi(blue) shl 16) + (hi(alpha) shl 24);\n  {$POP}\nend;\n\nfunction TBGRAWriterPNG.ColorDataColorAW(color:TFPColor) : TColorData;\nbegin\n  {$PUSH}{$HINTS OFF}\n  with color do\n    result := red + (green shl 16) + (qword(blue) shl 32) + (qword(alpha) shl 48);\n  {$POP}\nend;\n\n{ Data making routines }\n\nfunction TBGRAWriterPNG.GetColorPixel (x,y:LongWord) : TColorData;\nbegin\n  result := FFmtColor (FSourceImage[x,y]);\nend;\n\nfunction TBGRAWriterPNG.GetPalettePixel (x,y:LongWord) : TColorData;\nbegin\n  result := FSourceImage.Pixels[x,y];\nend;\n\nfunction TBGRAWriterPNG.GetColPalPixel (x,y:LongWord) : TColorData;\nbegin\n  result := ThePalette.IndexOf (FSourceImage.Colors[x,y]);\nend;\n\nfunction TBGRAWriterPNG.GetColorPixelBGRA(p: PBGRAPixel): TColorData;\nbegin\n  result := FFmtColor(p^.ToFPColor);\nend;\n\nfunction TBGRAWriterPNG.GetPalettePixelBGRA(p: PBGRAPixel): TColorData;\nbegin\n  result := FSourceImage.Palette.IndexOf(p^.ToFPColor);\nend;\n\nfunction TBGRAWriterPNG.GetColPalPixelBGRA(p: PBGRAPixel): TColorData;\nbegin\n  result := ThePalette.IndexOf(p^.ToFPColor);\nend;\n\nfunction TBGRAWriterPNG.DecideGetPixel : TGetPixelFunc;\nbegin\n  case Fheader.colortype of\n    3 : if (FAnimation = nil) and TheImage.UsePalette then\n          result := @GetPalettePixel\n          else result := @GetColPalPixel;\n    else  result := @GetColorPixel;\n  end;\nend;\n\nfunction TBGRAWriterPNG.DecideGetPixelBGRA: TGetPixelBGRAFunc;\nbegin\n  case Fheader.colortype of\n    3 : if (FAnimation = nil) and TheImage.UsePalette then\n          result := @GetPalettePixelBGRA\n          else result := @GetColPalPixelBGRA;\n    else  result := @GetColorPixelBGRA;\n  end;\nend;\n\nprocedure TBGRAWriterPNG.WritePLTE;\nvar r,t : integer;\n    c : TFPColor;\nbegin\n  with ThePalette do\n    begin\n    SetChunkLength (count*3);\n    SetChunkType (ctPLTE);\n    t := 0;\n    For r := 0 to count-1 do\n      begin\n      c := Color[r];\n      ChunkdataBuffer^[t] := c.red div 256;\n      inc (t);\n      ChunkdataBuffer^[t] := c.green div 256;\n      inc (t);\n      ChunkdataBuffer^[t] := c.blue div 256;\n      inc (t);\n      end;\n    end;\n  WriteChunk;\nend;\n\nprocedure TBGRAWriterPNG.WriteResolutionValues;\nbegin\n  {$IF FPC_FULLVERSION<30203}\n  if (TheImage is TCustomUniversalBitmap) then\n  with TCustomUniversalBitmap(TheImage) do\n  {$ELSE}\n  with TheImage do\n  {$ENDIF}\n  begin\n     if (ResolutionX = 0) or (ResolutionY = 0) then exit;\n     SetChunkLength(sizeof(TPNGPhysicalDimensions));\n     SetChunkType(ctpHYs);\n\n     with PPNGPhysicalDimensions(ChunkDataBuffer)^ do\n     begin\n       if (ResolutionUnit=ruPixelsPerInch)\n       then ResolutionUnit :=ruPixelsPerCentimeter;\n       if (ResolutionUnit=ruPixelsPerCentimeter)\n       then begin\n              Unit_Specifier:=1;\n              X_Pixels :=Trunc(ResolutionX*100);\n              Y_Pixels :=Trunc(ResolutionY*100);\n            end\n       else begin //ruNone\n              Unit_Specifier:=0;\n              X_Pixels :=Trunc(ResolutionX);\n              Y_Pixels :=Trunc(ResolutionY);\n          end;\n\n       {$IFDEF ENDIAN_LITTLE}\n       X_Pixels :=swap(X_Pixels);\n       Y_Pixels :=swap(Y_Pixels);\n       {$ENDIF}\n     end;\n\n     WriteChunk;\n  end;\nend;\n\nprocedure TBGRAWriterPNG.InitWriteImageData;\nbegin\n  FDatalineLength := FSourceImage.Width*ByteWidth;\n  GetMem (FPreviousLine, FDatalineLength);\n  GetMem (FCurrentLine, FDatalineLength);\n  fillchar (FCurrentLine^,FDatalineLength,0);\n  ZData := TMemoryStream.Create;\n  Compressor := TCompressionStream.Create (FCompressionLevel,ZData);\n  FGetPixel := DecideGetPixel;\n  FGetPixelBGRA := DecideGetPixelBGRA;\nend;\n\nprocedure TBGRAWriterPNG.FinalWriteImageData;\nbegin\n  ZData.Free;\n  FreeMem (FPreviousLine);\n  FreeMem (FCurrentLine);\nend;\n\nfunction TBGRAWriterPNG.DetermineFilter (Current, Previous:PByteArray; linelength:LongWord) : byte;\nbegin\n  result := 0;\nend;\n\nprocedure TBGRAWriterPNG.FillScanLine (y : integer; ScanLine : pByteArray);\nvar x : integer;\n    cd : TColorData;\n    r, index : LongWord;\n    b : byte;\n    p : PBGRAPixel;\nbegin\n  index := 0;\n  if FSourceImage is TBGRACustomBitmap then\n  begin\n    p := TBGRACustomBitmap(FSourceImage).ScanLine[y];\n    if FHeader.BitDepth <> 16 then\n      case FByteWidth of\n        1: for x := pred(FSourceImage.Width) downto 0 do\n           begin\n             cd := FGetPixelBGRA(p);\n             ScanLine^[index] := cd;\n             inc (index);\n             inc(p);\n           end;\n        2: for x := pred(FSourceImage.Width) downto 0 do\n           begin\n             cd := FGetPixelBGRA(p);\n             ScanLine^[index] := cd and $ff;\n             ScanLine^[index+1] := cd shr 8;\n             inc (index,2);\n             inc(p);\n           end;\n        3: for x := pred(FSourceImage.Width) downto 0 do\n           begin\n             ScanLine^[index] := p^.red;\n             ScanLine^[index+1] := p^.green;\n             ScanLine^[index+2] := p^.blue;\n             inc (index,3);\n             inc(p);\n           end;\n        4: for x := pred(FSourceImage.Width) downto 0 do\n           begin\n             ScanLine^[index] := p^.red;\n             ScanLine^[index+1] := p^.green;\n             ScanLine^[index+2] := p^.blue;\n             ScanLine^[index+3] := p^.alpha;\n             inc (index,4);\n             inc(p);\n           end;\n        else raise exception.Create('Unexpected byte width');\n      end else\n      for x := pred(FSourceImage.Width) downto 0 do\n      begin\n        cd := FGetPixelBGRA(p);\n        {$IFDEF ENDIAN_BIG}\n        cd:=swap(cd);\n        {$ENDIF}\n        move (cd, ScanLine^[index], FBytewidth);\n        if WordSized then\n        begin\n          r := 0;\n          while (r+1 < FByteWidth) do\n            begin\n            b := Scanline^[index+r+1];\n            Scanline^[index+r+1] := Scanline^[index+r];\n            Scanline^[index+r] := b;\n            inc (r,2);\n            end;\n        end;\n        inc (index, FByteWidth);\n        inc(p);\n      end;\n  end\n  else\n  for x := 0 to pred(FSourceImage.Width) do\n    begin\n    cd := FGetPixel (x,y);\n    {$IFDEF ENDIAN_BIG}\n    cd:=swap(cd);\n    {$ENDIF}\n    move (cd, ScanLine^[index], FBytewidth);\n    if WordSized then\n      begin\n      r := 0;\n      while (r+1 < FByteWidth) do\n        begin\n        b := Scanline^[index+r+1];\n        Scanline^[index+r+1] := Scanline^[index+r];\n        Scanline^[index+r] := b;\n        inc (r,2);\n        end;\n      end;\n    inc (index, FByteWidth);\n    end;\nend;\n\nprocedure TBGRAWriterPNG.Gatherdata;\nvar x,y : integer;\n    lf : byte;\nbegin\n  for y := 0 to pred(FSourceImage.height) do\n    begin\n    FSwitchLine := FCurrentLine;\n    FCurrentLine := FPreviousLine;\n    FPreviousLine := FSwitchLine;\n    FillScanLine (y, FCurrentLine);\n    lf := DetermineFilter (FCurrentLine, FpreviousLine, FDataLineLength);\n    if lf <> 0 then\n      for x := 0 to FDatalineLength-1 do\n        FCurrentLine^[x] := DoFilter (lf, x, FCurrentLine^[x]);\n    Compressor.Write (lf, sizeof(lf));\n    Compressor.Write (FCurrentLine^, FDataLineLength);\n    end;\nend;\n\nprocedure TBGRAWriterPNG.WriteCompressedData(AImageDataChunkCode: TChunkCode);\nvar l : LongWord;\nbegin\n  Compressor.Free;  // Close compression and finish the writing in ZData\n  l := ZData.position;\n  ZData.position := 0;\n  SetChunkLength(l);\n  SetChunkType (AImageDataChunkCode);\n  ZData.Read (ChunkdataBuffer^, l);\n  WriteChunk;\nend;\n\nprocedure TBGRAWriterPNG.WriteImageData(AImage: TFPCustomImage;\n  AImageDataChunkCode: TChunkCode);\nvar sequenceNumber: DWord;\nbegin\n  FSourceImage := AImage;\n  InitWriteImageData;\n  if AImageDataChunkCode = AnimatedChunkTypes[ctfdAT] then\n  begin\n    sequenceNumber := NtoBE(FAnimationChunkCount);\n    inc(FAnimationChunkCount);\n    ZData.WriteBuffer(sequenceNumber, sizeOf(sequenceNumber));\n  end;\n  GatherData;\n  WriteCompressedData(AImageDataChunkCode);\n  FinalWriteImageData;\n  FSourceImage := nil;\nend;\n\nprocedure TBGRAWriterPNG.WriteIDAT;\nbegin\n  WriteImageData(TheImage, GetChunkCode(ctIDAT));\nend;\n\nprocedure TBGRAWriterPNG.WritefdAT(AIndex: integer);\nbegin\n  WriteImageData(FAnimation[AIndex].Image, AnimatedChunkTypes[ctfdAT]);\nend;\n\nprocedure TBGRAWriterPNG.WritetRNS;\n  procedure PaletteAlpha;\n  var r : integer;\n  begin\n    with ThePalette do\n      begin\n      // search last palette entry with transparency\n      r := count;\n      repeat\n        dec (r);\n      until (r < 0) or (color[r].alpha <> alphaOpaque);\n      if r >= 0 then // there is at least 1 transparent color\n        begin\n        // from this color we go to the first palette entry\n        SetChunkLength (r+1);\n        repeat\n          chunkdatabuffer^[r] := (color[r].alpha shr 8);\n          dec (r);\n        until (r < 0);\n        end;\n      writechunk;\n      end;\n  end;\n  procedure GrayAlpha;\n  var g : word;\n  begin\n    SetChunkLength(2);\n    if WordSized then\n      g := CalculateGray (SingleTransparentColor)\n    else\n      g := hi (CalculateGray(SingleTransparentColor));\n    {$IFDEF ENDIAN_LITTLE}\n    g := swap (g);\n    {$ENDIF}\n    move (g,ChunkDataBuffer^[0],2);\n    WriteChunk;\n  end;\n  procedure ColorAlpha;\n  var g : TFPColor;\n  begin\n    SetChunkLength(6);\n    g := SingleTransparentColor;\n    with g do\n      if WordSized then\n        begin\n        {$IFDEF ENDIAN_LITTLE}\n        red := swap (red);\n        green := swap (green);\n        blue := swap (blue);\n        {$ENDIF}\n        move (g, ChunkDatabuffer^[0], 6);\n        end\n      else\n        begin\n        ChunkDataBuffer^[0] := 0;\n        ChunkDataBuffer^[1] := red shr 8;\n        ChunkDataBuffer^[2] := 0;\n        ChunkDataBuffer^[3] := green shr 8;\n        ChunkDataBuffer^[4] := 0;\n        ChunkDataBuffer^[5] := blue shr 8;\n        end;\n    WriteChunk;\n  end;\nbegin\n  SetChunkType (cttRNS);\n  case fheader.colortype of\n    6,4 : raise PNGImageException.create ('tRNS chunk forbidden for full alpha channels');\n    3 : PaletteAlpha;\n    2 : ColorAlpha;\n    0 : GrayAlpha;\n  end;\nend;\n\nprocedure TBGRAWriterPNG.WriteTexts;\nbegin\nend;\n\nprocedure TBGRAWriterPNG.WriteacTL;\nvar animControl: TAnimationControlChunk;\nbegin\n  animControl.FrameCount := NtoBE(longword(length(FAnimation)));\n  if FRepeatCount >= 0 then\n    animControl.RepeatCount := NtoBE(longword(FRepeatCount))\n  else\n    animControl.RepeatCount := 0;\n  SetChunkType(AnimatedChunkTypes[ctacTL]);\n  SetChunkLength(sizeof(TAnimationControlChunk));\n  move (animControl, ChunkDataBuffer^, sizeof(TAnimationControlChunk));\n  WriteChunk;\nend;\n\nprocedure TBGRAWriterPNG.WritefcTL(AIndex: integer);\nvar\n  frameControl: TFrameControlChunk;\nbegin\n  frameControl := FAnimation[AIndex].FrameControl;\n  frameControl.SequenceNumber:= NtoBE(FAnimationChunkCount);\n  inc(FAnimationChunkCount);\n  frameControl.Width:= NtoBE(frameControl.Width);\n  frameControl.Height:= NtoBE(frameControl.Height);\n  frameControl.OffsetX:= NtoBE(frameControl.OffsetX);\n  frameControl.OffsetY:= NtoBE(frameControl.OffsetY);\n  frameControl.DelayNum:= NtoBE(frameControl.DelayNum);\n  frameControl.DelayDenom:= NtoBE(frameControl.DelayDenom);\n  SetChunkType(AnimatedChunkTypes[ctfcTL]);\n  SetChunkLength(sizeof(TFrameControlChunk));\n  move (frameControl, ChunkDataBuffer^, sizeof(TFrameControlChunk));\n  WriteChunk;\nend;\n\nprocedure TBGRAWriterPNG.WriteIEND;\nbegin\n  SetChunkLength(0);\n  SetChunkType (ctIEND);\n  WriteChunk;\nend;\n\nprocedure TBGRAWriterPNG.InternalWrite (Str:TStream; Img:TFPCustomImage);\nvar mainImageIndex, i: integer;\nbegin\n  WriteIHDR;\n  if Fheader.colorType = 3 then\n    WritePLTE;\n  if FUsetRNS then\n    WritetRNS;\n  WriteResolutionValues;\n  WriteTexts;\n\n  FAnimationChunkCount := 0;\n  mainImageIndex := -1;\n  for i := 0 to high(FAnimation) do\n    if FAnimation[i].Image = Img then\n      mainImageIndex := i;\n\n  if length(FAnimation) > 0 then\n    WriteacTL;\n\n  if mainImageIndex = -1 then\n    WriteIDAT;\n\n  if length(FAnimation) > 0 then\n  begin\n    for i := 0 to high(FAnimation) do\n    begin\n      WritefcTL(i);\n      if i = mainImageIndex then\n        WriteIDAT\n      else\n        WritefdAT(i)\n    end;\n  end;\n  WriteIEND;\nend;\n\nfunction TBGRAWriterPNG.GetUseAlpha: boolean;\nbegin\n  result := FUseAlpha;\nend;\n\nprocedure TBGRAWriterPNG.SetUseAlpha(AValue: boolean);\nbegin\n  FUseAlpha := AValue;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifPng, TBGRAWriterPNG, True, 'Portable Network Graphics', 'png');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritetiff.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{\n    The original file FPReadTiff is part of the Free Pascal run time library.\n    Copyright (c) 2012 by the Free Pascal development team\n\n    Tiff writer for fpImage modified by circular.\n\n **********************************************************************\n\n Working:\n   Grayscale 8,16bit (optional alpha),\n   RGB 8,16bit (optional alpha),\n   Orientation,\n   multiple images, pages\n   thumbnail\n   Compression: deflate\n\n ToDo:\n   Compression: LZW, packbits, jpeg, ...\n   Planar\n   ColorMap\n   separate mask\n   fillorder - not needed by baseline tiff reader\n   bigtiff 64bit offsets\n   endian - currently using system endianess\n   orientation with rotation\n}\n{*****************************************************************************}\n{\n  2023-06  - Massimo Magnano\n           - added Resolution support\n}\n{*****************************************************************************}\n\n{ Implements the writer for the TIFF image format }\nunit BGRAWriteTiff;\n\n{$mode objfpc}{$H+}\n\n{$i bgrabitmap.inc}\n\n{$IFNDEF BGRABITMAP_EXTENDED_COLORSPACE}{$STOP This unit need extended colorspaces}{$ENDIF}\n\ninterface\n\nuses\n  Math, SysUtils, BGRAClasses, BGRABitmapTypes, zbase, zdeflate,\n  FPimage, FPTiffCmn;\n\ntype\n  { Entry in a TIFF file }\n  TTiffWriterEntry = class\n  public\n    Tag: Word;\n    EntryType: Word;\n    Count: LongWord;\n    Data: Pointer;\n    DataPos: LongWord;\n    Bytes: LongWord;\n    destructor Destroy; override;\n  end;\n\n  {* Extends the TFPCustomImageWriter to write the TIFF image format }\n\n  { TBGRAWriterTiff }\n\n  TBGRAWriterTiff = class(TFPCustomImageWriter)\n  protected\n    FCompression: boolean;\n    FPremultiplyRGB: boolean;\n    FSaveCMYKAsRGB: boolean;\n    fStartPos: Int64;\n    FEntries: TFPList; // list of TFPList of TTiffWriterEntry\n    fStream: TStream;\n    fPosition: LongWord;\n\n    procedure ClearEntries;\n    procedure WriteTiff;\n    procedure WriteHeader;\n    procedure WriteIFDs;\n    procedure WriteEntry(Entry: TTiffWriterEntry);\n    procedure WriteData;\n    procedure WriteEntryData(Entry: TTiffWriterEntry);\n    procedure WriteBuf(var Buf; Count: LongWord);\n    procedure WriteWord(w: Word);\n    procedure WriteDWord(d: LongWord);\n\n    procedure SetImgExtrasFromProperties(Img: TFPCustomImage); virtual;\n\n    procedure InternalWrite(Stream: TStream; Img: TFPCustomImage); override;\n    procedure AddEntryString(Tag: word; const s: string);\n    procedure AddEntryShort(Tag: word; Value: Word);\n    procedure AddEntryLong(Tag: word; Value: LongWord);\n    procedure AddEntryShortOrLong(Tag: word; Value: LongWord);\n    procedure AddEntryRational(Tag: word; const Value: TTiffRational);\n    procedure AddEntry(Tag: Word; EntryType: Word; EntryCount: LongWord;\n                       Data: Pointer; Bytes: LongWord;\n                       CopyData: boolean = true);\n    procedure AddEntry(Entry: TTiffWriterEntry);\n    procedure TiffError(Msg: string);\n    procedure EncodeDeflate(var Buffer: Pointer; var Count: LongWord);\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n    procedure Clear;\n    procedure AddImage(Img: TFPCustomImage);\n    procedure SaveToStream(Stream: TStream);\n\n  published\n    property Compression: boolean read FCompression write FCompression; //MaxM: at this time only None or ZLib, maybe a enum\n    property SaveCMYKAsRGB: boolean read FSaveCMYKAsRGB write FSaveCMYKAsRGB;\n    property PremultiplyRGB: boolean read FPremultiplyRGB write FPremultiplyRGB;\n  end;\n\nfunction CompareTiffWriteEntries(Entry1, Entry2: Pointer): integer;\n\nfunction CompressDeflate(InputData: PByte; InputCount: LongWord;\n  out Compressed: PByte; var CompressedCount: LongWord;\n  ErrorMsg: PAnsiString = nil): boolean;\n\nimplementation\n\nuses BGRAReadTiff;\n\ntype\n  TTiffWriterChunk = record\n    Data: Pointer;\n    Bytes: LongWord;\n  end;\n  PTiffWriterChunk = ^TTiffWriterChunk;\n\n  TTiffWriterChunkOffsets = class(TTiffWriterEntry)\n  public\n    Chunks: PTiffWriterChunk;\n    ChunkByteCounts: TTiffWriterEntry;\n    constructor Create(ChunkType: TTiffChunkType);\n    destructor Destroy; override;\n    procedure SetCount(NewCount: LongWord);\n  end;\n\nfunction CompareTiffWriteEntries(Entry1, Entry2: Pointer): integer;\nbegin\n  Result:=integer(TTiffWriterEntry(Entry1).Tag)-integer(TTiffWriterEntry(Entry2).Tag);\nend;\n\nfunction CompressDeflate(InputData: PByte; InputCount: LongWord; out\n  Compressed: PByte; var CompressedCount: LongWord; ErrorMsg: PAnsiString\n  ): boolean;\nvar\n  stream : z_stream;\n  err : integer;\nbegin\n  Result:=false;\n  //writeln('CompressDeflate START');\n  Compressed:=nil;\n  if InputCount=0 then begin\n    CompressedCount:=0;\n    exit(true);\n  end;\n\n  err := deflateInit(stream{%H-}, Z_DEFAULT_COMPRESSION);\n  if err <> Z_OK then begin\n    if ErrorMsg<>nil then\n      ErrorMsg^:='deflateInit failed';\n    exit;\n  end;\n\n  // set input = InputData data\n  stream.avail_in := InputCount;\n  stream.next_in  := InputData;\n\n  // set output = compressed data\n  if CompressedCount=0 then\n    CompressedCount:=InputCount;\n  GetMem(Compressed,CompressedCount);\n  stream.avail_out := CompressedCount;\n  stream.next_out := Compressed;\n\n  err := deflate(stream, Z_NO_FLUSH);\n  if err<>Z_OK then begin\n    if ErrorMsg<>nil then\n      ErrorMsg^:='deflate failed';\n    exit;\n  end;\n\n  while TRUE do begin\n    //writeln('run: total_in=',stream.total_in,' avail_in=',stream.avail_in,' total_out=',stream.total_out,' avail_out=',stream.avail_out);\n    if (stream.avail_out=0) then begin\n      // need more space\n      if CompressedCount<128 then\n        CompressedCount:=CompressedCount+128\n      else if CompressedCount>High(CompressedCount)-1024 then begin\n        if ErrorMsg<>nil then\n          ErrorMsg^:='deflate compression failed, because not enough space';\n        exit;\n      end else\n        CompressedCount:=CompressedCount+1024;\n      ReAllocMem(Compressed,CompressedCount);\n      stream.next_out:=Compressed+stream.total_out;\n      stream.avail_out:=CompressedCount-stream.total_out;\n    end;\n    err := deflate(stream, Z_FINISH);\n    if err = Z_STREAM_END then\n      break;\n    if err<>Z_OK then begin\n      if ErrorMsg<>nil then\n        ErrorMsg^:='deflate finish failed';\n      exit;\n    end;\n  end;\n\n  //writeln('compressed: total_in=',stream.total_in,' total_out=',stream.total_out);\n  CompressedCount:=stream.total_out;\n  ReAllocMem(Compressed,CompressedCount);\n\n  err := deflateEnd(stream);\n  if err<>Z_OK then begin\n    if ErrorMsg<>nil then\n      ErrorMsg^:='deflateEnd failed';\n    exit;\n  end;\n  Result:=true;\nend;\n\n{ TBGRAWriterTiff }\n\nprocedure TBGRAWriterTiff.WriteWord(w: Word);\nbegin\n  if fStream<>nil then\n    fStream.WriteWord(w);\n  inc(fPosition,2);\nend;\n\nprocedure TBGRAWriterTiff.WriteDWord(d: LongWord);\nbegin\n  if fStream<>nil then\n    fStream.WriteDWord(d);\n  inc(fPosition,4);\nend;\n\nprocedure TBGRAWriterTiff.SetImgExtrasFromProperties(Img: TFPCustomImage);\nbegin\n  if FCompression\n  then Img.Extra[TiffCompression]:= IntToStr(TiffCompressionDeflateZLib)\n  else Img.Extra[TiffCompression]:= IntToStr(TiffCompressionNone);\nend;\n\nprocedure TBGRAWriterTiff.ClearEntries;\nvar\n  i: Integer;\n  List: TFPList;\n  j: Integer;\nbegin\n  for i:=FEntries.Count-1 downto 0 do begin\n    List:=TFPList(FEntries[i]);\n    for j:=List.Count-1 downto 0 do\n      TObject(List[j]).Free;\n    List.Free;\n  end;\n  FEntries.Clear;\nend;\n\nprocedure TBGRAWriterTiff.WriteTiff;\nbegin\n  {$IFDEF FPC_Debug_Image}\n  writeln('TBGRAWriterTiff.WriteTiff fStream=',fStream<>nil);\n  {$ENDIF}\n  fPosition:=0;\n  WriteHeader;\n  WriteIFDs;\n  WriteData;\nend;\n\nprocedure TBGRAWriterTiff.WriteHeader;\nvar\n  EndianMark: String;\nbegin\n  EndianMark:={$IFDEF FPC_BIG_ENDIAN}'MM'{$ELSE}'II'{$ENDIF};\n  WriteBuf(EndianMark[1],2);\n  WriteWord(42);\n  WriteDWord(8);\nend;\n\nprocedure TBGRAWriterTiff.WriteIFDs;\nvar\n  i: Integer;\n  List: TFPList;\n  j: Integer;\n  Entry: TTiffWriterEntry;\n  NextIFDPos: LongWord;\nbegin\n  for i:=0 to FEntries.Count-1 do begin\n    List:=TFPList(FEntries[i]);\n    // write count\n    {$IFDEF FPC_Debug_Image}\n    writeln('TBGRAWriterTiff.WriteIFDs List=',i,' Count=',List.Count);\n    {$ENDIF}\n    WriteWord(List.Count);\n    // write array of entries\n    for j:=0 to List.Count-1 do begin\n      Entry:=TTiffWriterEntry(List[j]);\n      WriteEntry(Entry);\n    end;\n    // write position of next IFD\n    if i<FEntries.Count-1 then\n      NextIFDPos:=fPosition+4\n    else\n      NextIFDPos:=0;\n    WriteDWord(NextIFDPos);\n  end;\nend;\n\nprocedure TBGRAWriterTiff.WriteEntry(Entry: TTiffWriterEntry);\nvar\n  PadBytes: LongWord;\nbegin\n  {$IFDEF FPC_Debug_Image}\n  //writeln('TBGRAWriterTiff.WriteEntry Tag=',Entry.Tag,' Type=',Entry.EntryType,' Count=',Entry.Count,' Bytes=',Entry.Bytes);\n  {$ENDIF}\n  WriteWord(Entry.Tag);\n  WriteWord(Entry.EntryType);\n  WriteDWord(Entry.Count);\n  if Entry.Bytes<=4 then begin\n    if Entry.Bytes>0 then\n      WriteBuf(Entry.Data^,Entry.Bytes);\n    PadBytes:=0;\n    WriteBuf(PadBytes,4-Entry.Bytes);\n  end else begin\n    WriteDWord(Entry.DataPos);\n  end;\nend;\n\nprocedure TBGRAWriterTiff.WriteData;\nvar\n  i: Integer;\n  List: TFPList;\n  j: Integer;\n  Entry: TTiffWriterEntry;\n  Chunks: TTiffWriterChunkOffsets;\n  k: Integer;\n  Bytes: LongWord;\nbegin\n  for i:=0 to FEntries.Count-1 do begin\n    List:=TFPList(FEntries[i]);\n    // write entry data\n    for j:=0 to List.Count-1 do begin\n      Entry:=TTiffWriterEntry(List[j]);\n      WriteEntryData(Entry);\n    end;\n    // write Chunks\n    for j:=0 to List.Count-1 do begin\n      Entry:=TTiffWriterEntry(List[j]);\n      if Entry is TTiffWriterChunkOffsets then begin\n        Chunks:=TTiffWriterChunkOffsets(Entry);\n        // write Chunks\n        for k:=0 to Chunks.Count-1 do begin\n          PLongWord(Chunks.Data)[k]:=fPosition;\n          Bytes:=Chunks.Chunks[k].Bytes;\n          PLongWord(Chunks.ChunkByteCounts.Data)[k]:=Bytes;\n          {$IFDEF FPC_Debug_Image}\n          //writeln('TBGRAWriterTiff.WriteData Chunk fPosition=',fPosition,' Bytes=',Bytes);\n          {$ENDIF}\n          if Bytes>0 then\n            WriteBuf(Chunks.Chunks[k].Data^,Bytes);\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TBGRAWriterTiff.WriteEntryData(Entry: TTiffWriterEntry);\nbegin\n  if Entry.Bytes>4 then begin\n    Entry.DataPos:=fPosition;\n    WriteBuf(Entry.Data^,Entry.Bytes);\n  end;\nend;\n\nprocedure TBGRAWriterTiff.WriteBuf(var Buf; Count: LongWord);\nbegin\n  if Count=0 then exit;\n  if (fStream<>nil) then\n    fStream.Write(Buf,Count);\n  inc(fPosition,Count);\nend;\n\nprocedure TBGRAWriterTiff.AddImage(Img: TFPCustomImage);\n\n  function ClampInt(Value, Min,Max: integer): integer;\n  begin\n    If Value<Min then result := Min\n    else if Value>Max then result := Max\n    else result := Value;\n  end;\n\n  procedure WriteValue(var Run: PByte; Value: Word; BitDepth: byte);\n  begin\n    if BitDepth=8 then begin\n      Run^:= (Value+128) div 257;\n      inc(Run);\n    end else if BitDepth=16 then begin\n      PWord(Run)^:= Value;\n      inc(Run,2);\n    end;\n  end;\n\n  procedure WriteValueUnscaled(var Run: PByte; Value: LongWord; BitDepth: byte);\n  begin\n    if BitDepth=8 then begin\n      Run^:= Value;\n      inc(Run);\n    end else if BitDepth=16 then begin\n      PWord(Run)^:= Value;\n      inc(Run,2);\n    end;\n  end;\n\nvar\n  IFD: TTiffIFD;\n  GrayBits, RedBits, GreenBits, BlueBits, AlphaBits: Word;\n  ImgWidth, ImgHeight: LongWord;\n  curCompression: Word;\n  BitsPerSample: array[0..3] of Word;\n  SamplesPerPixel: Integer;\n  ExtraSample, defaultColorBits: Word;\n  BitsPerPixel: LongWord;\n  i: Integer;\n  OrientedWidth, OrientedHeight: LongWord;\n  BytesPerLine: LongWord;\n  ChunkType: TTiffChunkType;\n  ChunkCount: LongWord;\n  ChunkOffsets: TTiffWriterChunkOffsets;\n  ChunkIndex: LongWord;\n  ChunkBytes: LongWord;\n  Chunk: PByte;\n  ChunkLeft, ChunkTop, ChunkWidth, ChunkHeight: LongWord;\n  TilesAcross, TilesDown: LongWord;\n  Run: PByte;\n  Value: Integer;\n  CurEntries: TFPList;\n  Shorts: array[0..3] of Word;\n  NewSubFileType: LongWord;\n  cx,cy,x,y,sx,sy: LongWord;\n  dx1,dy1,dx2,dy2: integer;\n  ChunkBytesPerLine: LongWord;\n  labArray: array of TLabA;\n  ConvertToLab: Boolean;\n  ConversionToLab: TBridgedConversion;\n  sourceStride: PtrInt;\n\n  function GetDefaultAlphaBits: Word;\n  var\n    alphaIndex: Integer;\n  begin\n    if Img is TCustomUniversalBitmap then\n    begin\n      if not TCustomUniversalBitmap(Img).HasTransparentPixels then\n        result := 0\n      else\n      begin\n        alphaIndex := TCustomUniversalBitmap(Img).Colorspace.IndexOfAlphaChannel;\n        if (alphaIndex <> -1) and (TCustomUniversalBitmap(Img).Colorspace.GetChannelBitDepth(alphaIndex)>8) then\n          result := 16\n        else\n          result := 8;\n      end;\n    end else\n      result := 8;\n  end;\n\n  function GetDefaultColorBits: Word;\n  var\n    i, alphaIndex: Integer;\n  begin\n    if Img is TCustomUniversalBitmap then\n    begin\n      result := 0;\n      alphaIndex := TCustomUniversalBitmap(Img).Colorspace.IndexOfAlphaChannel;\n      for i := 0 to TCustomUniversalBitmap(Img).Colorspace.GetChannelCount-1 do\n        if i <> alphaIndex then\n          result := max(result, TCustomUniversalBitmap(Img).Colorspace.GetChannelBitDepth(i));\n\n      if result > 8 then\n        result := 16\n      else\n        result := 8;\n    end else\n      result := 8;\n  end;\n\n  procedure WriteNextLabPixel(const AColor: TLabA);\n  begin\n    case IFD.PhotoMetricInterpretation of\n    8:\n      begin\n        WriteValue(Run, ClampInt(round(AColor.L*(65535/100)),0,65535), GreenBits);\n        case RedBits of\n        8: WriteValueUnscaled(Run, ClampInt(round(AColor.a),-128,127), RedBits);\n        16: WriteValueUnscaled(Run, ClampInt(round(AColor.a*256),-32768,32767), RedBits);\n        end;\n        case BlueBits of\n        8: WriteValueUnscaled(Run, ClampInt(round(AColor.b),-128,127), BlueBits);\n        16: WriteValueUnscaled(Run, ClampInt(round(AColor.b*256),-32768,32767), BlueBits);\n        end;\n        WriteValue(Run, ClampInt(round(AColor.alpha*65535),0,65535), AlphaBits);\n      end;\n    9:\n      begin\n        case GreenBits of\n        8: WriteValueUnscaled(Run, ClampInt(round(AColor.L*(255/100)),0,255), GreenBits);\n        16: WriteValueUnscaled(Run, ClampInt(round(AColor.L*(65280/100)),0,65280), GreenBits);\n        end;\n        case RedBits of\n        8: WriteValueUnscaled(Run, ClampInt(round(AColor.a)+128,0,255), RedBits);\n        16: WriteValueUnscaled(Run, ClampInt(round(AColor.a*256)+32768,0,65535), RedBits);\n        end;\n        case BlueBits of\n        8: WriteValueUnscaled(Run, ClampInt(round(AColor.b)+128,0,255), BlueBits);\n        16: WriteValueUnscaled(Run, ClampInt(round(AColor.b*256)+32768,0,65535), BlueBits);\n        end;\n        WriteValue(Run, ClampInt(round(AColor.alpha*65535),0,65535), AlphaBits);\n      end;\n    else raise exception.Create('Photometric interpretation not handled');\n    end;\n  end;\n\n  procedure WriteNextPixel(const AColor: TFPColor);\n  begin\n    if IFD.PhotoMetricInterpretation >= 8 then\n    begin\n      WriteNextLabPixel(AColor);\n      exit;\n    end;\n\n    case IFD.PhotoMetricInterpretation of\n    0,1: // grayscale\n      begin\n        Value:=(LongWord(AColor.red)+AColor.green+AColor.blue) div 3;\n        if ExtraSample=1 then Value := Value*AColor.alpha div 65535;\n        if IFD.PhotoMetricInterpretation=0 then Value:=$ffff-Value;// 0 is white\n        WriteValue(Run, Value, GrayBits);\n        WriteValue(Run, AColor.alpha, AlphaBits);\n      end;\n    2:  // RGB\n      begin\n        Value := AColor.red;\n        if ExtraSample=1 then Value := Value*AColor.alpha div 65535;\n        WriteValue(Run, Value, RedBits);\n        Value := AColor.green;\n        if ExtraSample=1 then Value := Value*AColor.alpha div 65535;\n        WriteValue(Run, Value, GreenBits);\n        Value := AColor.blue;\n        if ExtraSample=1 then Value := Value*AColor.alpha div 65535;\n        WriteValue(Run, Value, BlueBits);\n        WriteValue(Run, AColor.alpha, AlphaBits);\n      end;\n    else raise exception.Create('Photometric interpretation not handled');\n    end;\n  end;\n\n  procedure WriteResolutionValues;\n  begin\n    {$IF FPC_FULLVERSION<30203}\n    if (Img is TCustomUniversalBitmap) then\n    with TCustomUniversalBitmap(Img) do\n    {$ELSE}\n    with Img do\n    {$ENDIF}\n    begin\n        IFD.ResolutionUnit :=ResolutionUnitToTifResolutionUnit(ResolutionUnit);\n        IFD.XResolution.Numerator :=Trunc(ResolutionX*1000);\n        IFD.XResolution.Denominator :=1000;\n        IFD.YResolution.Numerator :=Trunc(ResolutionY*1000);\n        IFD.YResolution.Denominator :=1000;\n     end;\n\n    Img.Extra[TiffResolutionUnit]:=IntToStr(IFD.ResolutionUnit);\n    Img.Extra[TiffXResolution]:=TiffRationalToStr(IFD.XResolution);\n    Img.Extra[TiffYResolution]:=TiffRationalToStr(IFD.YResolution);\n  end;\n\n\nbegin\n  ChunkOffsets:=nil;\n  Chunk:=nil;\n  IFD:=TTiffIFD.Create;\n  try\n    // add new list of entries\n    CurEntries:=TFPList.Create;\n    FEntries.Add(CurEntries);\n\n    SetImgExtrasFromProperties(Img);\n\n    IFD.ReadFPImgExtras(Img);\n\n    if SaveCMYKAsRGB and (IFD.PhotoMetricInterpretation=5) then\n      IFD.PhotoMetricInterpretation:=2;\n    if (Img.Extra[TiffPhotoMetric]='') and (Img is TCustomUniversalBitmap) then\n    begin\n      if cfHasImaginaryColors in TCustomUniversalBitmap(Img).Colorspace.GetFlags then\n        IFD.PhotoMetricInterpretation := 8;\n    end;\n\n//    if Img.Extra[TiffCompression]='' then\n//      IFD.Compression:= TiffCompressionDeflateZLib;\n\n    if not (IFD.PhotoMetricInterpretation in [0,1,2,8,9]) then\n      TiffError('PhotoMetricInterpretation=\"'+Img.Extra[TiffPhotoMetric]+'\" not supported');\n\n    //Resolution\n    WriteResolutionValues;\n\n    GrayBits:=0;\n    RedBits:=0;\n    GreenBits:=0;\n    BlueBits:=0;\n    AlphaBits:=0;\n    ExtraSample:=0;\n    defaultColorBits := GetDefaultColorBits;\n    case IFD.PhotoMetricInterpretation of\n    0,1:\n      begin\n        GrayBits:=StrToIntDef(Img.Extra[TiffGrayBits], defaultColorBits);\n        BitsPerSample[0]:=GrayBits;\n        SamplesPerPixel:=1;\n      end;\n    2:\n      begin\n        RedBits:=StrToIntDef(Img.Extra[TiffRedBits], defaultColorBits);\n        GreenBits:=StrToIntDef(Img.Extra[TiffGreenBits], defaultColorBits);\n        BlueBits:=StrToIntDef(Img.Extra[TiffBlueBits], defaultColorBits);\n        BitsPerSample[0]:=RedBits;\n        BitsPerSample[1]:=GreenBits;\n        BitsPerSample[2]:=BlueBits;\n        SamplesPerPixel:=3;\n      end;\n    8,9:\n      begin\n        RedBits:=StrToIntDef(Img.Extra[TiffRedBits], defaultColorBits);\n        GreenBits:=StrToIntDef(Img.Extra[TiffGreenBits], defaultColorBits);\n        BlueBits:=StrToIntDef(Img.Extra[TiffBlueBits], defaultColorBits);\n        BitsPerSample[0]:=GreenBits;\n        if (RedBits=0) and (BlueBits=0) then SamplesPerPixel := 1\n        else\n        begin\n          SamplesPerPixel:= 3;\n          if RedBits=0 then RedBits := BlueBits else\n          if BlueBits=0 then BlueBits := RedBits;\n          BitsPerSample[1]:= RedBits;\n          BitsPerSample[2]:= BlueBits;\n        end;\n      end;\n    end;\n    AlphaBits:= StrToIntDef(Img.Extra[TiffAlphaBits],GetDefaultAlphaBits);\n    if AlphaBits>0 then begin\n      BitsPerSample[SamplesPerPixel]:=AlphaBits;\n      inc(SamplesPerPixel);\n      if PremultiplyRGB and (IFD.PhotoMetricInterpretation<=2) then\n        ExtraSample := 1\n      else\n        ExtraSample := 2;\n    end;\n\n    ImgWidth:=Img.Width;\n    ImgHeight:=Img.Height;\n    curCompression:=IFD.Compression;\n    case curCompression of\n    TiffCompressionNone,\n    TiffCompressionDeflateZLib: ;\n    else\n      {$ifdef FPC_DEBUG_IMAGE}\n      writeln('TBGRAWriterTiff.AddImage unsupported compression '+TiffCompressionName(Compression)+', using deflate instead.');\n      {$endif}\n      curCompression:=TiffCompressionDeflateZLib;\n    end;\n\n    if IFD.Orientation in [1..4] then begin\n      OrientedWidth:=ImgWidth;\n      OrientedHeight:=ImgHeight;\n    end else begin\n      // rotated\n      OrientedWidth:=ImgHeight;\n      OrientedHeight:=ImgWidth;\n    end;\n\n    {$IFDEF FPC_Debug_Image}\n    writeln('TBGRAWriterTiff.AddImage PhotoMetricInterpretation=',IFD.PhotoMetricInterpretation);\n    writeln('TBGRAWriterTiff.AddImage ImageWidth=',ImgWidth,' ImageHeight=',ImgHeight);\n    writeln('TBGRAWriterTiff.AddImage Orientation=',IFD.Orientation);\n    writeln('TBGRAWriterTiff.AddImage ResolutionUnit=',IFD.ResolutionUnit);\n    writeln('TBGRAWriterTiff.AddImage XResolution=',TiffRationalToStr(IFD.XResolution));\n    writeln('TBGRAWriterTiff.AddImage YResolution=',TiffRationalToStr(IFD.YResolution));\n    writeln('TBGRAWriterTiff.AddImage GrayBits=',GrayBits,' RedBits=',RedBits,' GreenBits=',GreenBits,' BlueBits=',BlueBits,' AlphaBits=',AlphaBits);\n    writeln('TBGRAWriterTiff.AddImage Compression=',TiffCompressionName(Compression));\n    writeln('TBGRAWriterTiff.AddImage Page=',IFD.PageNumber,'/',IFD.PageCount);\n    {$ENDIF}\n\n    // required meta entries\n    AddEntryShortOrLong(256,ImgWidth);\n    AddEntryShortOrLong(257,ImgHeight);\n    AddEntryShort(259,curCompression);\n    AddEntryShort(262,IFD.PhotoMetricInterpretation);\n    AddEntryShort(274,IFD.Orientation);\n    AddEntryShort(296,IFD.ResolutionUnit);\n    AddEntryRational(282,IFD.XResolution);\n    AddEntryRational(283,IFD.YResolution);\n    // BitsPerSample (required)\n    AddEntry(258,3,SamplesPerPixel,@BitsPerSample[0],SamplesPerPixel*2);\n    AddEntryShort(277,SamplesPerPixel);\n    if ExtraSample<>0 then AddEntryShort(338, ExtraSample);\n\n    // BitsPerPixel, BytesPerLine\n    BitsPerPixel:=0;\n    for i:=0 to SamplesPerPixel-1 do\n      inc(BitsPerPixel,BitsPerSample[i]);\n    BytesPerLine:=(BitsPerPixel*OrientedWidth+7) div 8;\n\n    // optional entries\n    NewSubFileType:=0;\n    if IFD.ImageIsThumbNail then inc(NewSubFileType,1);\n    if IFD.ImageIsPage then inc(NewSubFileType,2);\n    if IFD.ImageIsMask then inc(NewSubFileType,4);\n    if NewSubFileType>0 then\n      AddEntryLong(254,NewSubFileType);\n    if IFD.DocumentName<>'' then\n      AddEntryString(269,IFD.DocumentName);\n    if IFD.ImageDescription<>'' then\n      AddEntryString(270,IFD.ImageDescription);\n    if IFD.Make_ScannerManufacturer<>'' then\n      AddEntryString(271,IFD.Make_ScannerManufacturer);\n    if IFD.Model_Scanner<>'' then\n      AddEntryString(272,IFD.Model_Scanner);\n    if IFD.Software<>'' then\n      AddEntryString(305,IFD.Software);\n    if IFD.DateAndTime<>'' then\n      AddEntryString(306,IFD.DateAndTime);\n    if IFD.Artist<>'' then\n      AddEntryString(315,IFD.Artist);\n    if IFD.HostComputer<>'' then\n      AddEntryString(316,IFD.HostComputer);\n    if IFD.PageCount>0 then begin\n      Shorts[0]:=IFD.PageNumber;\n      Shorts[1]:=IFD.PageCount;\n      AddEntry(297,3,2,@Shorts[0],2*SizeOf(Word));\n    end;\n    if IFD.PageName<>'' then\n      AddEntryString(285,IFD.PageName);\n    if IFD.Copyright<>'' then\n      AddEntryString(33432,IFD.Copyright);\n\n    // chunks\n    ChunkType:=tctStrip;\n    if IFD.TileWidth>0 then begin\n      AddEntryShortOrLong(322,IFD.TileWidth);\n      AddEntryShortOrLong(323,IFD.TileLength);\n      ChunkType:=tctTile;\n    end else begin\n      // RowsPerStrip (required)\n      if OrientedWidth=0 then\n        IFD.RowsPerStrip:=8\n      else\n        IFD.RowsPerStrip:=8192 div BytesPerLine;\n      if IFD.RowsPerStrip<1 then\n        IFD.RowsPerStrip:=1;\n      {$IFDEF FPC_Debug_Image}\n      writeln('TBGRAWriterTiff.AddImage BitsPerPixel=',BitsPerPixel,' OrientedWidth=',OrientedWidth,' BytesPerLine=',BytesPerLine,' RowsPerStrip=',IFD.RowsPerStrip);\n      {$ENDIF}\n      AddEntryShortOrLong(278,IFD.RowsPerStrip);\n    end;\n\n    // tags for Offsets and ByteCounts\n    ChunkOffsets:=TTiffWriterChunkOffsets.Create(ChunkType);\n    AddEntry(ChunkOffsets);\n    AddEntry(ChunkOffsets.ChunkByteCounts);\n\n    labArray := nil;\n    if (Img is TCustomUniversalBitmap) and\n       (IFD.PhotoMetricInterpretation >= 8) then\n    begin\n      ConvertToLab := true;\n      ConversionToLab := TCustomUniversalBitmap(Img).Colorspace.GetBridgedConversion(TLabAColorspace);\n    end else\n      ConvertToLab := false;\n\n    if (OrientedHeight>0) and (OrientedWidth>0) then begin\n      if ChunkType=tctTile then begin\n        TilesAcross:=(OrientedWidth+IFD.TileWidth{%H-}-1) div IFD.TileWidth;\n        TilesDown:=(OrientedHeight+IFD.TileLength{%H-}-1) div IFD.TileLength;\n        ChunkCount:=TilesAcross*TilesDown;\n        {$IFDEF FPC_Debug_Image}\n        writeln('TBGRAWriterTiff.AddImage BitsPerPixel=',BitsPerPixel,' OrientedWidth=',OrientedWidth,' OrientedHeight=',OrientedHeight,' TileWidth=',IFD.TileWidth,' TileLength=',IFD.TileLength,' TilesAcross=',TilesAcross,' TilesDown=',TilesDown,' ChunkCount=',ChunkCount);\n        {$ENDIF}\n      end else begin\n        ChunkCount:=(OrientedHeight+IFD.RowsPerStrip{%H-}-1) div IFD.RowsPerStrip;\n      end;\n      ChunkOffsets.SetCount(ChunkCount);\n      // create chunks\n      for ChunkIndex:=0 to ChunkCount-1 do begin\n        if ChunkType=tctTile then begin\n          ChunkLeft:=(ChunkIndex mod TilesAcross)*IFD.TileWidth;\n          ChunkTop:=(ChunkIndex div TilesAcross)*IFD.TileLength;\n          ChunkWidth:=Min(IFD.TileWidth,OrientedWidth-ChunkLeft);\n          ChunkHeight:=Min(IFD.TileLength,OrientedHeight-ChunkTop);\n          // boundary tiles are padded to a full tile\n          // the padding is filled with 0 and compression will get rid of it\n          ChunkBytesPerLine:=(BitsPerPixel*IFD.TileWidth+7) div 8;\n          ChunkBytes:=ChunkBytesPerLine*IFD.TileLength;\n        end else begin\n          ChunkLeft:=0;\n          ChunkTop:=IFD.RowsPerStrip*ChunkIndex;\n          ChunkWidth:=OrientedWidth;\n          ChunkHeight:=Min(IFD.RowsPerStrip,OrientedHeight-ChunkTop);\n          ChunkBytesPerLine:=BytesPerLine;\n          ChunkBytes:=ChunkBytesPerLine*ChunkHeight;\n        end;\n        GetMem(Chunk,ChunkBytes);\n        FillByte(Chunk^,ChunkBytes,0); // fill unused bytes with 0 to help compression\n\n        // Orientation\n        if IFD.Orientation in [1..4] then begin\n          sx:=ChunkLeft; sy:=ChunkTop;\n          dy1 := 0; dx2 := 0;\n          case IFD.Orientation of\n          1: begin dx1:=1; dy2:=1; end;// 0,0 is left, top\n          2: begin sx:=OrientedWidth-sx-1; dx1:=-1; dy2:=1; end;// 0,0 is right, top\n          3: begin sx:=OrientedWidth-sx-1; dx1:=-1; sy:=OrientedHeight-sy-1; dy2:=-1; end;// 0,0 is right, bottom\n          4: begin dx1:=1; sy:=OrientedHeight-sy-1; dy2:=-1; end;// 0,0 is left, bottom\n          end;\n        end else begin\n          // rotated\n          sx:=ChunkTop; sy:=ChunkLeft;\n          dx1 := 0; dy2 := 0;\n          case IFD.Orientation of\n          5: begin dx2:=1; dy1:=1; end;// 0,0 is top, left (rotated)\n          6: begin dx2:=1; sy:=OrientedWidth-sy-1; dy1:=-1; end;// 0,0 is top, right (rotated)\n          7: begin sx:=OrientedHeight-sx-1; dx2:=-1; sy:=OrientedWidth-sy-1; dy1:=-1; end;// 0,0 is bottom, right (rotated)\n          8: begin sx:=OrientedHeight-sx-1; dx2:=-1; dy1:=1; end;// 0,0 is bottom, left (rotated)\n          end;\n        end;\n        //writeln('TBGRAWriterTiff.AddImage Chunk=',ChunkIndex,'/',ChunkCount,' ChunkBytes=',ChunkBytes,' ChunkRect=',ChunkLeft,',',ChunkTop,',',ChunkWidth,'x',ChunkHeight,' x=',x,' y=',y,' dx=',dx,' dy=',dy);\n        for cy:=0 to ChunkHeight-1 do begin\n          Run:=Chunk+cy*ChunkBytesPerLine;\n\n          if ConvertToLab then\n          begin\n            if ChunkWidth > Length(labArray) then setlength(labArray, ChunkWidth);\n            sourceStride := TCustomUniversalBitmap(Img).RowSize*dy1;\n            if TCustomUniversalBitmap(Img).LineOrder = riloBottomToTop then\n              sourceStride := -sourceStride;\n            inc(sourceStride, dx1*PtrInt(TCustomUniversalBitmap(Img).Colorspace.GetSize) );\n            ConversionToLab.Convert( TCustomUniversalBitmap(Img).GetPixelAddress(sx,sy),\n                                     @labArray[0], ChunkWidth, sourceStride, sizeof(TLabA), nil);\n            for cx := 0 to ChunkWidth-1 do\n              WriteNextLabPixel(labArray[cx]);\n          end else\n          begin\n            x := sx;\n            y := sy;\n            for cx:=0 to ChunkWidth-1 do begin\n              WriteNextPixel(Img.Colors[x,y]);\n              inc(x,dx1);\n              inc(y,dy1);\n            end;\n          end;\n\n          inc(sx,dx2);\n          inc(sy,dy2);\n        end;\n\n        // compress\n        case curCompression of\n        TiffCompressionDeflateZLib: EncodeDeflate(Chunk,ChunkBytes);\n        end;\n\n        ChunkOffsets.Chunks[ChunkIndex].Data:=Chunk;\n        ChunkOffsets.Chunks[ChunkIndex].Bytes:=ChunkBytes;\n        // next chunk\n      end;\n      // created chunks\n    end;\n\n    CurEntries.Sort(@CompareTiffWriteEntries);\n  finally\n    IFD.Free;\n  end;\nend;\n\nprocedure TBGRAWriterTiff.SaveToStream(Stream: TStream);\nbegin\n  fStartPos:=Stream.Position;\n  // simulate write to compute offsets\n  fStream:=nil;\n  WriteTiff;\n  // write to stream\n  fStream:=Stream;\n  WriteTiff;\n  fStream:=nil;\nend;\n\nprocedure TBGRAWriterTiff.InternalWrite(Stream: TStream; Img: TFPCustomImage);\nbegin\n  AddImage(Img);\n  SaveToStream(Stream);\nend;\n\nprocedure TBGRAWriterTiff.AddEntryString(Tag: word; const s: string);\nbegin\n  if s<>'' then\n    AddEntry(Tag,2,length(s)+1,@s[1],length(s)+1)\n  else\n    AddEntry(Tag,2,0,nil,0);\nend;\n\nprocedure TBGRAWriterTiff.AddEntryShort(Tag: word; Value: Word);\nbegin\n  AddEntry(Tag,3,1,@Value,2);\nend;\n\nprocedure TBGRAWriterTiff.AddEntryLong(Tag: word; Value: LongWord);\nbegin\n  AddEntry(Tag,4,1,@Value,4);\nend;\n\nprocedure TBGRAWriterTiff.AddEntryShortOrLong(Tag: word; Value: LongWord);\nbegin\n  if Value<=High(Word) then\n    AddEntryShort(Tag,Value)\n  else\n    AddEntryLong(Tag,Value);\nend;\n\nprocedure TBGRAWriterTiff.AddEntryRational(Tag: word; const Value: TTiffRational\n  );\nbegin\n  AddEntry(Tag,5,1,@Value,8);\nend;\n\nprocedure TBGRAWriterTiff.AddEntry(Tag: Word; EntryType: Word; EntryCount: LongWord;\n  Data: Pointer; Bytes: LongWord; CopyData: boolean);\nvar\n  Entry: TTiffWriterEntry;\nbegin\n  Entry:=TTiffWriterEntry.Create;\n  Entry.Tag:=Tag;\n  Entry.EntryType:=EntryType;\n  Entry.Count:=EntryCount;\n  if CopyData then begin\n    if Bytes>0 then begin\n      GetMem(Entry.Data,Bytes);\n      System.Move(Data^,Entry.Data^,Bytes);\n    end else begin\n      Entry.Data:=nil;\n    end;\n  end else\n    Entry.Data:=Data;\n  Entry.Bytes:=Bytes;\n  AddEntry(Entry);\nend;\n\nprocedure TBGRAWriterTiff.AddEntry(Entry: TTiffWriterEntry);\nvar\n  List: TFPList;\nbegin\n  List:=TFPList(FEntries[FEntries.Count-1]);\n  List.Add(Entry);\nend;\n\nprocedure TBGRAWriterTiff.TiffError(Msg: string);\nbegin\n  raise Exception.Create('TBGRAWriterTiff.TiffError: '+Msg);\nend;\n\nprocedure TBGRAWriterTiff.EncodeDeflate(var Buffer: Pointer; var Count: LongWord);\nvar\n  NewBuffer: PByte;\n  NewCount: LongWord;\n  ErrorMsg: String;\nbegin\n  ErrorMsg:='';\n  NewBuffer:=nil;\n  try\n    NewCount:=Count;\n    if not CompressDeflate(Buffer,Count,NewBuffer,NewCount,@ErrorMsg) then\n      TiffError(ErrorMsg);\n    FreeMem(Buffer);\n    Buffer:=NewBuffer;\n    Count:=NewCount;\n    NewBuffer:=nil;\n  finally\n    ReAllocMem(NewBuffer,0);\n  end;\nend;\n\nconstructor TBGRAWriterTiff.Create;\nbegin\n  inherited Create;\n  FEntries:=TFPList.Create;\n  FCompression:= true;\n  FSaveCMYKAsRGB:= true;\n  FPremultiplyRGB:= false;\nend;\n\ndestructor TBGRAWriterTiff.Destroy;\nbegin\n  Clear;\n  FreeAndNil(FEntries);\n  inherited Destroy;\nend;\n\nprocedure TBGRAWriterTiff.Clear;\nbegin\n  ClearEntries;\nend;\n\n{ TTiffWriterEntry }\n\ndestructor TTiffWriterEntry.Destroy;\nbegin\n  ReAllocMem(Data,0);\n  inherited Destroy;\nend;\n\n{ TTiffWriterChunkOffsets }\n\nconstructor TTiffWriterChunkOffsets.Create(ChunkType: TTiffChunkType);\nbegin\n  EntryType:=4; // long\n  ChunkByteCounts:=TTiffWriterEntry.Create;\n  ChunkByteCounts.EntryType:=4; // long\n  if ChunkType=tctTile then begin\n    Tag:=324; // TileOffsets\n    ChunkByteCounts.Tag:=325; // TileByteCounts\n  end else begin\n    Tag:=273; // StripOffsets\n    ChunkByteCounts.Tag:=279; // StripByteCounts\n  end;\nend;\n\ndestructor TTiffWriterChunkOffsets.Destroy;\nvar\n  i: Integer;\nbegin\n  if Chunks<>nil then begin\n    for i:=0 to Count-1 do\n      ReAllocMem(Chunks[i].Data,0);\n    ReAllocMem(Chunks,0);\n  end;\n  inherited Destroy;\nend;\n\nprocedure TTiffWriterChunkOffsets.SetCount(NewCount: LongWord);\nvar\n  Size: LongWord;\nbegin\n  {$IFDEF FPC_Debug_Image}\n  writeln('TTiffWriteStripOffsets.SetCount OldCount=',Count,' NewCount=',NewCount);\n  {$ENDIF}\n  Count:=NewCount;\n  Size:=Count*SizeOf(TTiffWriterChunk);\n  ReAllocMem(Chunks,Size);\n  if Size>0 then FillByte(Chunks^,Size,0);\n  Size:=Count*SizeOf(LongWord);\n  // Offsets\n  ReAllocMem(Data,Size);\n  if Size>0 then FillByte(Data^,Size,0);\n  Bytes:=Size;\n  // ByteCounts\n  ReAllocMem(ChunkByteCounts.Data,Size);\n  if Size>0 then FillByte(ChunkByteCounts.Data^,Size,0);\n  ChunkByteCounts.Count:=Count;\n  ChunkByteCounts.Bytes:=Size;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifTiff, TBGRAWriterTiff, True, TiffHandlerName, 'tif;tiff');\n\nend.\n"
  },
  {
    "path": "bgrabitmap/bgrawritewebp.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Implements the writer for the WebP format (relies on external libwebp library) }\nunit BGRAWriteWebP;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPimage;\n\ntype\n  {* Extends the TFPCustomImageWriter to write the WebP image format }\n  TBGRAWriterWebP = class(TFPCustomImageWriter)\n  protected\n    FLossless: boolean;\n    FQualityPercent: Single;\n    procedure InternalWrite(Stream: TStream; Img: TFPCustomImage); override;\n\n  public\n    constructor Create; override;\n\n  published\n    {** Defines the quality when saving the file, 100 being the maximum but not\n        necessarily lossless }\n    property QualityPercent: single read FQualityPercent write FQualityPercent;\n    {** If Lossless is set to True, the _QualityPercent_ property is ignored }\n    property Lossless: boolean read FLossless write FLossless;\n  end;\n\nimplementation\n\nuses libwebp, BGRABitmapTypes;\n\nvar\n  MyLibWebPLoaded: boolean;\n\nprocedure NeedLibWebP;\nbegin\n  if not MyLibWebPLoaded then\n  begin\n    if not LibWebPLoad then\n      raise exception.Create('Cannot find libwebp library ('+LibWebPFilename+')');\n    MyLibWebPLoaded:= true;\n  end;\nend;\n\n{ TBGRAWriterWebP }\n\nprocedure TBGRAWriterWebP.InternalWrite(Stream: TStream; Img: TFPCustomImage);\nconst\n  CopySize = 65536;\nvar\n  saveFrom: TBGRACustomBitmap;\n  outSize, remain, toWrite: LongWord;\n  outData, p: PByte;\nbegin\n  NeedLibWebP;\n  saveFrom := BGRABitmapFactory.Create(Img);\n  outData := nil;\n  try\n    if saveFrom.LineOrder = riloBottomToTop then\n      saveFrom.VerticalFlip;\n\n    {$PUSH}{$WARNINGS OFF}\n    if Lossless then\n    begin\n      if TBGRAPixel_RGBAOrder then\n        outSize := WebPEncodeLosslessRGBA(saveFrom.DataByte, saveFrom.Width, saveFrom.Height,\n                saveFrom.RowSize, outData{%H-})\n      else\n        outSize := WebPEncodeLosslessBGRA(saveFrom.DataByte, saveFrom.Width, saveFrom.Height,\n                saveFrom.RowSize, outData{%H-});\n    end else\n    begin\n      if TBGRAPixel_RGBAOrder then\n        outSize := WebPEncodeRGBA(saveFrom.DataByte, saveFrom.Width, saveFrom.Height,\n                saveFrom.RowSize, QualityPercent, outData{%H-})\n      else\n        outSize := WebPEncodeBGRA(saveFrom.DataByte, saveFrom.Width, saveFrom.Height,\n                saveFrom.RowSize, QualityPercent, outData{%H-});\n    end;\n    {$POP}\n    if outSize = 0 then\n      raise exception.Create('Error encoding WebP');\n\n    remain := outSize;\n    p := outData;\n    while remain > 0 do\n    begin\n      if remain > CopySize then toWrite := CopySize\n      else toWrite := remain;\n      Stream.WriteBuffer(p^, toWrite);\n      inc(p, toWrite);\n      dec(remain, toWrite);\n    end;\n  finally\n    if Assigned(outData) then WebPFree(outData);\n    saveFrom.Free;\n  end;\nend;\n\nconstructor TBGRAWriterWebP.Create;\nbegin\n  inherited Create;\n  FQualityPercent := 100;\n  FLossless:= True;\nend;\n\ninitialization\n  BGRARegisterImageWriter(ifWebP, TBGRAWriterWebP, True, 'WebP Image Format', 'webp');\n\nfinalization\n\n  if MyLibWebPLoaded then\n  begin\n    LibWebPUnload;\n    MyLibWebPLoaded:= false;\n  end;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/blendpixelinline.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nfunction ByteLinearMultiplyInline(a, b: byte): byte;\nbegin\n  if b = 255 then exit(a) else\n  begin\n    if b >= 128 then inc(b);\n    Result := (a * b) shr 8;\n  end;\nend;\n\nprocedure LinearMultiplyPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearMultiplyInline(dest^.red, c.red);\n    dest^.green := ByteLinearMultiplyInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearMultiplyInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearMultiplyInline(dest^.red, c.red) *\n      destalpha + c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearMultiplyInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearMultiplyInline(dest^.blue, c.blue) *\n      destalpha + c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ByteAddInline(a, b: byte): byte;\nvar\n  temp: LongWord;\nbegin\n  temp := LongWord(GammaExpansionTab[a]) + LongWord(GammaExpansionTab[b]);\n  if temp > 65535 then\n    temp := 65535;\n  Result := GammaCompressionTab[temp];\nend;\n{$hints on}\n\nfunction ByteLinearAddInline(a, b: byte): byte;\nvar\n  temp: integer;\nbegin\n  temp := integer(a) + integer(b);\n  if temp > 255 then\n    temp := 255;\n  Result := temp;\nend;\n\nprocedure AddPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteAddInline(dest^.red, c.red);\n    dest^.green := ByteAddInline(dest^.green, c.green);\n    dest^.blue  := ByteAddInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := ByteAddInline(dest^.red * destalpha shr 8, c.red);\n    dest^.green := ByteAddInline(dest^.green * destalpha shr 8, c.green);\n    dest^.blue  := ByteAddInline(dest^.blue * destalpha shr 8, c.blue);\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure LinearAddPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearAddInline(dest^.red, c.red);\n    dest^.green := ByteLinearAddInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearAddInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := ByteLinearAddInline(dest^.red * destalpha shr 8, c.red);\n    dest^.green := ByteLinearAddInline(dest^.green * destalpha shr 8, c.green);\n    dest^.blue  := ByteLinearAddInline(dest^.blue * destalpha shr 8, c.blue);\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteBurnInline(a, b: byte): byte; inline;\nvar\n  temp: integer;\nbegin\n  if b = 0 then\n    Result := 0\n  else\n  begin\n    temp := 255 - (((255 - a) shl 8) div b);\n    if temp < 0 then\n      Result := 0\n    else\n      Result := temp;\n  end;\nend;\n\nprocedure ColorBurnPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteBurnInline(dest^.red, c.red);\n    dest^.green := ByteBurnInline(dest^.green, c.green);\n    dest^.blue  := ByteBurnInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteBurnInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteBurnInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteBurnInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ByteDodgeInline(a, b: byte): byte; inline;\nvar\n  temp: integer;\nbegin\n  if b = 255 then\n    Result := 255\n  else\n  begin\n    temp := (a shl 8) div (not b);\n    if temp > 255 then\n      Result := 255\n    else\n      Result := temp;\n  end;\nend;\n{$hints on}\n\nprocedure ColorDodgePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteDodgeInline(dest^.red, c.red);\n    dest^.green := ByteDodgeInline(dest^.green, c.green);\n    dest^.blue  := ByteDodgeInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteDodgeInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteDodgeInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteDodgeInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ByteDivideInline(a, b: byte): byte; inline;\nvar\n  temp: integer;\nbegin\n  if b = 0 then\n    Result := 255\n  else if b = 255 then\n    exit(a)\n  else\n  begin\n    if b >= 128 then inc(b);\n    temp := ((a shl 8) + (b shr 1)) div b;\n    if temp > 255 then\n      Result := 255\n    else\n      Result := temp;\n  end;\nend;\n{$hints on}\n\nprocedure DividePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteDivideInline(dest^.red, c.red);\n    dest^.green := ByteDivideInline(dest^.green, c.green);\n    dest^.blue  := ByteDivideInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteDivideInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteDivideInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteDivideInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ByteNonLinearReflectInline(a, b: byte): byte; inline;\nvar\n  temp: LongWord;\n  wa,wb: word;\nbegin\n  if b = 255 then\n    Result := 255\n  else\n  begin\n    wa := GammaExpansionTab[a];\n    wb := GammaExpansionTab[b];\n    temp := wa * wa div (not wb);\n    if temp >= 65535 then\n      Result := 255\n    else\n      Result := GammaCompressionTab[ temp ];\n  end;\nend;\n\nfunction ByteReflectInline(a, b: byte): byte; inline;\nvar\n  temp: integer;\nbegin\n  if b = 255 then\n    Result := 255\n  else\n  begin\n    temp := a * a div (not b);\n    if temp > 255 then\n      Result := 255\n    else\n      Result := temp;\n  end;\nend;\n{$hints on}\n\nprocedure ReflectPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteReflectInline(dest^.red, c.red);\n    dest^.green := ByteReflectInline(dest^.green, c.green);\n    dest^.blue  := ByteReflectInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteReflectInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteReflectInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteReflectInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure GlowPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteReflectInline(c.red, dest^.red);\n    dest^.green := ByteReflectInline(c.green, dest^.green);\n    dest^.blue  := ByteReflectInline(c.blue, dest^.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteReflectInline(c.red, dest^.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteReflectInline(c.green, dest^.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteReflectInline(c.blue, dest^.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure NiceGlowPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteReflectInline(c.red, dest^.red);\n    dest^.green := ByteReflectInline(c.green, dest^.green);\n    dest^.blue  := ByteReflectInline(c.blue, dest^.blue);\n  end else\n  begin\n    dest^.red   := (ByteReflectInline(c.red, dest^.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteReflectInline(c.green, dest^.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteReflectInline(c.blue, dest^.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n  end;\n\n  if (c.red > c.green) and (c.red > c.blue) then\n    dest^.alpha := c.red else\n  if (c.green > c.blue) then\n    dest^.alpha := c.green else\n    dest^.alpha := c.blue;\n  dest^.alpha := ApplyOpacity(GammaExpansionTab[dest^.alpha] shr 8,c.alpha);\nend;\n\nprocedure NonLinearReflectPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteNonLinearReflectInline(dest^.red, c.red);\n    dest^.green := ByteNonLinearReflectInline(dest^.green, c.green);\n    dest^.blue  := ByteNonLinearReflectInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteNonLinearReflectInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteNonLinearReflectInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteNonLinearReflectInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ByteOverlayInline(a, b: byte): byte; inline;\nvar wa,wb: word;\nbegin\n  wa := GammaExpansionTab[a];\n  wb := GammaExpansionTab[b];\n  if wa < 32768 then\n    Result := GammaCompressionTab[ (wa * wb) shr 15 ]\n  else\n    Result := GammaCompressionTab[ 65535 - ((not wa) * (not wb) shr 15) ];\nend;\n{$hints on}\n\nfunction ByteLinearOverlayInline(a, b: byte): byte; inline;\nbegin\n  if a < 128 then\n    Result := (a * b) shr 7\n  else\n    Result := 255 - ((not a) * (not b) shr 7);\nend;\n\nprocedure OverlayPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteOverlayInline(dest^.red, c.red);\n    dest^.green := ByteOverlayInline(dest^.green, c.green);\n    dest^.blue  := ByteOverlayInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteOverlayInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteOverlayInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteOverlayInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure LinearOverlayPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearOverlayInline(dest^.red, c.red);\n    dest^.green := ByteLinearOverlayInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearOverlayInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearOverlayInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearOverlayInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearOverlayInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteDifferenceInline(a, b: byte): byte; inline;\nbegin\n  Result := GammaCompressionTab[abs(integer(GammaExpansionTab[a]) -\n    integer(GammaExpansionTab[b]))];\nend;\n\nprocedure DifferencePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteDifferenceInline(dest^.red, c.red);\n    dest^.green := ByteDifferenceInline(dest^.green, c.green);\n    dest^.blue  := ByteDifferenceInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteDifferenceInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteDifferenceInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteDifferenceInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteLinearDifferenceInline(a, b: byte): byte; inline;\nbegin\n  Result := abs(a - b);\nend;\n\nprocedure LinearDifferencePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearDifferenceInline(dest^.red, c.red);\n    dest^.green := ByteLinearDifferenceInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearDifferenceInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearDifferenceInline(dest^.red, c.red) *\n      destalpha + c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearDifferenceInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearDifferenceInline(dest^.blue, c.blue) *\n      destalpha + c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteExclusionInline(a, b: byte): byte; inline;\nvar aw,bw: word;\nbegin\n  aw := GammaExpansionTab[a];\n  bw := GammaExpansionTab[b];\n  {$HINTS OFF}\n  Result := GammaCompressionTab[aw+bw-(LongWord(aw)*LongWord(bw) shr 15)];\n  {$HINTS ON}\nend;\n\nprocedure ExclusionPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteExclusionInline(dest^.red, c.red);\n    dest^.green := ByteExclusionInline(dest^.green, c.green);\n    dest^.blue  := ByteExclusionInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteExclusionInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteExclusionInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteExclusionInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteLinearExclusionInline(a, b: byte): byte; inline;\nbegin\n  {$HINTS OFF}\n  Result := a+b-(a*b shr 7);\n  {$HINTS ON}\nend;\n\nprocedure LinearExclusionPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearExclusionInline(dest^.red, c.red);\n    dest^.green := ByteLinearExclusionInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearExclusionInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearExclusionInline(dest^.red, c.red) *\n      destalpha + c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearExclusionInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearExclusionInline(dest^.blue, c.blue) *\n      destalpha + c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteLinearSubtractInline(a, b: byte): byte; inline;\nbegin\n  if b >= a then\n    result := 0\n  else\n    result := a-b;\nend;\n\nprocedure LinearSubtractPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearSubtractInline(dest^.red, c.red);\n    dest^.green := ByteLinearSubtractInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearSubtractInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearSubtractInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearSubtractInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearSubtractInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure LinearSubtractInversePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearSubtractInline(dest^.red, not c.red);\n    dest^.green := ByteLinearSubtractInline(dest^.green, not c.green);\n    dest^.blue  := ByteLinearSubtractInline(dest^.blue, not c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearSubtractInline(dest^.red, not c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearSubtractInline(dest^.green, not c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearSubtractInline(dest^.blue, not c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteSubtractInline(a, b: byte): byte; inline;\nbegin\n  if b >= a then\n    result := 0\n  else\n    result := GammaCompressionTab[integer(GammaExpansionTab[a]) -\n       integer(GammaExpansionTab[b])];\nend;\n\nprocedure SubtractPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteSubtractInline(dest^.red, c.red);\n    dest^.green := ByteSubtractInline(dest^.green, c.green);\n    dest^.blue  := ByteSubtractInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteSubtractInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteSubtractInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteSubtractInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteSubtractInverseInline(a, b: byte): byte; inline;\nvar aw,bw: word;\nbegin\n  aw := GammaExpansionTab[a];\n  bw := not GammaExpansionTab[b];\n  if bw >= aw then\n    result := 0\n  else\n    result := GammaCompressionTab[aw-bw];\nend;\n\nprocedure SubtractInversePixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteSubtractInverseInline(dest^.red, c.red);\n    dest^.green := ByteSubtractInverseInline(dest^.green, c.green);\n    dest^.blue  := ByteSubtractInverseInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteSubtractInverseInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteSubtractInverseInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteSubtractInverseInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteNegationInline(a, b: byte): byte; inline;\nvar\n  sum: integer;\nbegin\n  sum := integer(GammaExpansionTab[a]) + integer(GammaExpansionTab[b]);\n  if sum > 65535 then\n    sum  := 131071 - sum;\n  Result := GammaCompressionTab[sum];\nend;\n\nfunction ByteLinearNegationInline(a, b: byte): byte; inline;\nvar\n  sum: integer;\nbegin\n  sum := integer(a) + integer(b);\n  if sum > 255 then\n    Result := 511 - sum\n  else\n    Result := sum;\nend;\n\nprocedure NegationPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteNegationInline(dest^.red, c.red);\n    dest^.green := ByteNegationInline(dest^.green, c.green);\n    dest^.blue  := ByteNegationInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteNegationInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteNegationInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteNegationInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure LinearNegationPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLinearNegationInline(dest^.red, c.red);\n    dest^.green := ByteLinearNegationInline(dest^.green, c.green);\n    dest^.blue  := ByteLinearNegationInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLinearNegationInline(dest^.red, c.red) *\n      destalpha + c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLinearNegationInline(dest^.green, c.green) *\n      destalpha + c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLinearNegationInline(dest^.blue, c.blue) *\n      destalpha + c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteLightenInline(a, b: byte): byte; inline;\nbegin\n  if a > b then\n    Result := a\n  else\n    Result := b;\nend;\n\nprocedure LightenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteLightenInline(dest^.red, c.red);\n    dest^.green := ByteLightenInline(dest^.green, c.green);\n    dest^.blue  := ByteLightenInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteLightenInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteLightenInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteLightenInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteDarkenInline(a, b: byte): byte; inline;\nbegin\n  if a < b then\n    Result := a\n  else\n    Result := b;\nend;\n\nprocedure DarkenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteDarkenInline(dest^.red, c.red);\n    dest^.green := ByteDarkenInline(dest^.green, c.green);\n    dest^.blue  := ByteDarkenInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteDarkenInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteDarkenInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteDarkenInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\n{$hints off}\nfunction ScreenByteInline(a, b: byte): byte;\nbegin\n  Result := 255 - ((not a) * (not b) shr 8);\nend;\n{$hints on}\n\nprocedure ScreenPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ScreenByteInline(dest^.red, c.red);\n    dest^.green := ScreenByteInline(dest^.green, c.green);\n    dest^.blue  := ScreenByteInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ScreenByteInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ScreenByteInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ScreenByteInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteSoftLightInline(a,b: byte): byte; inline;\nbegin\n  result := ((not a)*b shr 7 + a)*a div 255;\nend;\n\nprocedure SoftLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteSoftLightInline(dest^.red, c.red);\n    dest^.green := ByteSoftLightInline(dest^.green, c.green);\n    dest^.blue  := ByteSoftLightInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteSoftLightInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteSoftLightInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteSoftLightInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteSvgSoftLightInline(a,b: byte): byte; inline;\nbegin\n  if b <= 128 then\n    result := a - (((256 - b-b)*a shr 8)*(not a) shr 8)\n  else\n  begin\n    dec(b, 128);\n    if a <= 64 then\n      result := a + ((b+b)   * UInt32or64(a*7 - ((a shl 2)*(a shl 2 + 256)*UInt32or64(256 - a) shr 16)) shr 8)\n    else\n      result := a + ((b+b+1) * UInt32or64(ByteSqrt(a)-a) shr 8);\n  end;\nend;\n\nprocedure SvgSoftLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteSvgSoftLightInline(dest^.red, c.red);\n    dest^.green := ByteSvgSoftLightInline(dest^.green, c.green);\n    dest^.blue  := ByteSvgSoftLightInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteSvgSoftLightInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteSvgSoftLightInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteSvgSoftLightInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nfunction ByteHardLightInline(a,b: byte): byte; inline;\nbegin\n  if b <= 128 then\n    result := a*b shr 7\n  else\n    result := 255 - ((not a)*(not b) shr 7);\nend;\n\nprocedure HardLightPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := ByteHardLightInline(dest^.red, c.red);\n    dest^.green := ByteHardLightInline(dest^.green, c.green);\n    dest^.blue  := ByteHardLightInline(dest^.blue, c.blue);\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := (ByteHardLightInline(dest^.red, c.red) * destalpha +\n      c.red * (not destalpha)) shr 8;\n    dest^.green := (ByteHardLightInline(dest^.green, c.green) * destalpha +\n      c.green * (not destalpha)) shr 8;\n    dest^.blue  := (ByteHardLightInline(dest^.blue, c.blue) * destalpha +\n      c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure BlendXorPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  if destalpha = 255 then\n  begin\n    dest^.red := dest^.red xor c.red;\n    dest^.green := dest^.green xor c.green;\n    dest^.blue  := dest^.blue xor c.blue;\n    dest^.alpha := c.alpha;\n  end else\n  begin\n    dest^.red   := ((dest^.red xor c.red) * destalpha + c.red * (not destalpha)) shr 8;\n    dest^.green := ((dest^.green xor c.green) * destalpha + c.green *\n      (not destalpha)) shr 8;\n    dest^.blue  := ((dest^.blue xor c.blue) * destalpha + c.blue * (not destalpha)) shr 8;\n    dest^.alpha := c.alpha;\n  end;\nend;\n\nprocedure BlendMaskPixelInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nconst alphaMax = 255*7;\nvar alpha: byte;\nbegin\n  alpha := (c.green shl 2) + (c.red shl 1) + c.blue;\n  alpha := alpha*c.alpha + (255*7)*(not c.alpha);\n  alpha := (alpha + (alphaMax shr 1)) div alphaMax;\n  if alpha = 0 then dest^ := BGRAPixelTransparent\n  else dest^.alpha := alpha;\nend;\n\nfunction ByteLinearMultiplySaturationInline(a,b,l: byte): byte; inline;\nbegin\n  if b = 255 then\n    result := a\n  else if b = 0 then\n    result := l\n  else\n    result := (a-l)*b div 255 + l;\nend;\n\nprocedure LinearMultiplySaturationInline(dest: PBGRAPixel; c: TBGRAPixel); inline;\nvar\n  destalpha: byte;\n  mini,maxi,l: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    mini := dest^.red; maxi := dest^.red;\n    if dest^.green < mini then mini := dest^.green else\n    if dest^.green > maxi then maxi := dest^.green;\n    if dest^.blue < mini then mini := dest^.blue else\n    if dest^.blue > maxi then maxi := dest^.blue;\n    l := (mini+maxi) div 2;\n\n    if destalpha = 255 then\n    begin\n      dest^.red := ByteLinearMultiplySaturationInline(dest^.red, c.red, l);\n      dest^.green := ByteLinearMultiplySaturationInline(dest^.green, c.green, l);\n      dest^.blue  := ByteLinearMultiplySaturationInline(dest^.blue, c.blue, l);\n      dest^.alpha := c.alpha;\n    end else\n    begin\n      dest^.red   := (ByteLinearMultiplySaturationInline(dest^.red, c.red, l) * destalpha +\n        c.red * (not destalpha)) shr 8;\n      dest^.green := (ByteLinearMultiplySaturationInline(dest^.green, c.green, l) * destalpha +\n        c.green * (not destalpha)) shr 8;\n      dest^.blue  := (ByteLinearMultiplySaturationInline(dest^.blue, c.blue, l) * destalpha +\n        c.blue * (not destalpha)) shr 8;\n      dest^.alpha := c.alpha;\n    end;\n  end;\nend;\n\nprocedure LinearHueInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha,\n  sextant, position, saturation, value, discard1, discard2: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    RGBToByteStdHSV(c.red, c.green, c.blue, sextant, position, discard1, discard2);\n    RGBToByteStdHSV(dest^.red, dest^.green, dest^.blue, discard1, discard2, saturation, value);\n    ByteStdHSVToRGB(sextant, position, saturation, value, dest^.red, dest^.green, dest^.blue);\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure LinearColorInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha,\n  sextant, position, saturation, lightness, discard1: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    RGBToByteStdHSL(c.red, c.green, c.blue, sextant, position, saturation, discard1);\n    lightness := GetByteStdLightness(dest^.red, dest^.green, dest^.blue);\n    ByteStdHSLToRGB(sextant, position, saturation, lightness, dest^.red, dest^.green, dest^.blue);\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure LinearLightnessInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha,\n  sextant, position, saturation, lightness, discard1: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    RGBToByteStdHSL(dest^.red, dest^.green, dest^.blue, sextant, position, saturation, discard1);\n    lightness := GetByteStdLightness(c.red, c.green, c.blue);\n    ByteStdHSLToRGB(sextant, position, saturation, lightness, dest^.red, dest^.green, dest^.blue);\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure LinearSaturationInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha,\n  sextant, position, saturation, lightness,\n  discard1, discard2, discard3: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    RGBToByteStdHSL(dest^.red, dest^.green, dest^.blue, sextant, position, saturation, lightness);\n    if saturation <> 0 then\n    begin\n      RGBToByteStdHSL(c.red, c.green, c.blue, discard1, discard2, saturation, discard3);\n      ByteStdHSLToRGB(sextant, position, saturation, lightness, dest^.red, dest^.green, dest^.blue);\n    end;\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure CorrectedHueInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha: byte;\n  srcGSBA, destGSBA: TGSBAPixel;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    srcGSBA := c.ToGSBAPixel;\n    destGSBA := dest^.ToGSBAPixel;\n    destGSBA.hue := srcGSBA.hue;\n    destGSBA.alpha:= srcGSBA.alpha;\n    dest^ := destGSBA;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure CorrectedColorInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    dest^ := SetLightness(c, dest^.Lightness);\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure CorrectedLightnessInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha: byte;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    dest^ := SetLightness(dest^, c.Lightness);\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n\nprocedure CorrectedSaturationInline(dest: PBGRAPixel; c: TBGRAPixel);\nvar\n  destalpha: byte;\n  destGSBA: TGSBAPixel;\nbegin\n  destalpha   := dest^.alpha;\n  if destalpha = 0 then\n  begin\n    dest^ := c\n  end else\n  begin\n    destGSBA := dest^.ToGSBAPixel;\n    if destGSBA.saturation <> 0 then\n    begin\n      destGSBA.saturation:= c.ToGSBAPixel.saturation;\n      dest^ := destGSBA;\n    end;\n    dest^.alpha := c.alpha;\n\n    if destalpha <> 255 then\n    begin\n      dest^.red   := (dest^.red * destalpha + c.red * (not destalpha)) shr 8;\n      dest^.green := (dest^.green * destalpha + c.green * (not destalpha)) shr 8;\n      dest^.blue  := (dest^.blue * destalpha + c.blue * (not destalpha)) shr 8;\n    end;\n  end;\nend;\n"
  },
  {
    "path": "bgrabitmap/blendpixels.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nprocedure FastBlendPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n      begin\n        FastBlendPixelInline(pdest, psrc^);\n        Inc(pdest);\n        Inc(psrc);\n        Dec(Count);\n      end;\nend;\n\nprocedure DrawTransparentPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          DrawPixelInlineWithAlphaCheck(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplyPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearMultiplyPixelInline(pdest, psrc^);  //same look with non linear\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure AddPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          AddPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearAddPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearAddPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ColorBurnPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n      begin\n        ColorBurnPixelInline(pdest, psrc^);\n        Inc(pdest);\n        Inc(psrc);\n        Dec(Count);\n      end;\nend;\n\nprocedure ColorDodgePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          ColorDodgePixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DividePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n      begin\n        DividePixelInline(pdest, psrc^);\n        Inc(pdest);\n        Inc(psrc);\n        Dec(Count);\n      end;\nend;\n\nprocedure ReflectPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          ReflectPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure GlowPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          GlowPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NiceGlowPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          NiceGlowPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure OverlayPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          OverlayPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearOverlayPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearOverlayPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DifferencePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          DifferencePixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearDifferencePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearDifferencePixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ExclusionPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n      begin\n        ExclusionPixelInline(pdest, psrc^);\n        Inc(pdest);\n        Inc(psrc);\n        Dec(Count);\n      end;\nend;\n\nprocedure LinearExclusionPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearExclusionPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearSubtractPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractInversePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearSubtractInversePixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          SubtractPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractInversePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          SubtractInversePixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NegationPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          NegationPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearNegationPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearNegationPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LightenPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LightenPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DarkenPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          DarkenPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ScreenPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n      begin\n        ScreenPixelInline(pdest, psrc^);\n        Inc(pdest);\n        Inc(psrc);\n        Dec(Count);\n      end;\nend;\n\nprocedure SoftLightPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          SoftLightPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SvgSoftLightPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          SvgSoftLightPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure HardLightPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          HardLightPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure BlendXorPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          BlendXorPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure BlendMaskPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          BlendMaskPixelInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplySaturationPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearMultiplySaturationInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearHuePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearHueInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearColorPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearColorInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearLightnessPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearLightnessInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSaturationPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          LinearSaturationInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedHuePixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          CorrectedHueInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedColorPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          CorrectedColorInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedLightnessPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          CorrectedLightnessInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedSaturationPixels(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\nbegin\n  while Count > 0 do\n        begin\n          CorrectedSaturationInline(pdest, psrc^);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\ntype\n  TBlendPixelsProc = procedure(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer);\n\nconst\n  BlendPixelsProc: array[TBlendOperation] of TBlendPixelsProc =\n    ( @FastBlendPixels, @DrawTransparentPixels,\n      @LightenPixels, @ScreenPixels, @AddPixels, @LinearAddPixels, @ColorDodgePixels, @DividePixels, @NiceGlowPixels, @SoftLightPixels, @HardLightPixels,\n      @GlowPixels, @ReflectPixels, @LinearOverlayPixels, @OverlayPixels, @DarkenPixels, @LinearMultiplyPixels, @ColorBurnPixels,\n      @DifferencePixels, @LinearDifferencePixels, @ExclusionPixels, @LinearExclusionPixels, @SubtractPixels, @LinearSubtractPixels,\n      @SubtractInversePixels, @LinearSubtractInversePixels, @NegationPixels, @LinearNegationPixels, @BlendXorPixels, @SvgSoftLightPixels,\n      @BlendMaskPixels, @LinearMultiplySaturationPixels, @LinearHuePixels, @LinearColorPixels, @LinearLightnessPixels, @LinearSaturationPixels,\n      @CorrectedHuePixels, @CorrectedColorPixels, @CorrectedLightnessPixels, @CorrectedSaturationPixels);\n\nprocedure BlendPixels(pdest: PBGRAPixel; psrc: PBGRAPixel;\n  blendOp: TBlendOperation; Count: integer; excludeChannels: TChannels = []);\nconst BufSize = 8;\nvar\n  destBuf: array[0..BufSize-1] of TBGRAPixel;\n  i: PtrInt;\nbegin\n  if (excludeChannels = [cRed,cGreen,cBlue,cAlpha]) or\n     ((blendOp = boMask) and (cAlpha in excludeChannels)) then exit;\n\n  if excludeChannels = [] then\n    BlendPixelsProc[blendOp](pdest, psrc, count) else\n  begin\n    while Count >= BufSize do\n    begin\n      move(pdest^, {%H-}destBuf, sizeof(destBuf));\n      BlendPixelsProc[blendOp](@destBuf, psrc, BufSize);\n      for i := 0 to BufSize-1 do\n      begin\n        if not (cRed in excludeChannels) then pdest^.red := destBuf[i].red;\n        if not (cGreen in excludeChannels) then pdest^.green := destBuf[i].green;\n        if not (cBlue in excludeChannels) then pdest^.blue := destBuf[i].blue;\n        if not (cAlpha in excludeChannels) then pdest^.alpha := destBuf[i].alpha;\n        inc(pdest);\n      end;\n      dec(count, BufSize);\n    end;\n    if count > 0 then\n    begin\n      move(pdest^, {%H-}destBuf, count*sizeof(TBGRAPixel));\n      BlendPixelsProc[blendOp](@destBuf, psrc, count);\n      for i := 0 to count-1 do\n      begin\n        if not (cRed in excludeChannels) then pdest^.red := destBuf[i].red;\n        if not (cGreen in excludeChannels) then pdest^.green := destBuf[i].green;\n        if not (cBlue in excludeChannels) then pdest^.blue := destBuf[i].blue;\n        if not (cAlpha in excludeChannels) then pdest^.alpha := destBuf[i].alpha;\n        inc(pdest);\n      end;\n    end;\n  end;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/blendpixelsover.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{************************* blend over ***************************}\n\nprocedure FastBlendPixelsWithOpacity(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nbegin\n  while Count > 0 do\n        begin\n          FastBlendPixelInline(pdest, psrc^, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DrawPixelsWithOpacity(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nbegin\n  while Count > 0 do\n        begin\n          DrawPixelInlineWithAlphaCheck(pdest, psrc^, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplyPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearMultiplyPixelInline(@temp, psrc^);  //same look with non linear\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplyPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearMultiplyPixelInline(@temp, psrc^);  //same look with non linear\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure AddPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          AddPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure AddPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          AddPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearAddPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearAddPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearAddPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearAddPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ColorBurnPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ColorBurnPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ColorBurnPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ColorBurnPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ColorDodgePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ColorDodgePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ColorDodgePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ColorDodgePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DividePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DividePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DividePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DividePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ReflectPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ReflectPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ReflectPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ReflectPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure GlowPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          GlowPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure GlowPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          GlowPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NiceGlowPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          NiceGlowPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NiceGlowPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          NiceGlowPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure OverlayPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          OverlayPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure OverlayPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          OverlayPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearOverlayPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearOverlayPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearOverlayPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearOverlayPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DifferencePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DifferencePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DifferencePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DifferencePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearDifferencePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearDifferencePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearDifferencePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearDifferencePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ExclusionPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ExclusionPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ExclusionPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ExclusionPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearExclusionPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearExclusionPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearExclusionPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearExclusionPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSubtractPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSubtractPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractInversePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSubtractInversePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSubtractInversePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSubtractInversePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SubtractPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SubtractPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractInversePixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SubtractInversePixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SubtractInversePixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SubtractInversePixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NegationPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          NegationPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure NegationPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          NegationPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearNegationPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearNegationPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearNegationPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearNegationPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LightenPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LightenPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LightenPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LightenPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DarkenPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DarkenPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure DarkenPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          DarkenPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ScreenPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ScreenPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure ScreenPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          ScreenPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SoftLightPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SoftLightPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SvgSoftLightPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SvgSoftLightPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SoftLightPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SoftLightPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure SvgSoftLightPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          SvgSoftLightPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure HardLightPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          HardLightPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure HardLightPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          HardLightPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure BlendXorPixelsLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          BlendXorPixelInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure BlendXorPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          BlendXorPixelInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure MaskPixelsDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nconst alphaMax = 255*7*255;\nvar\n  alpha, opacity256: UInt32or64;\n  newAlpha: byte;\nbegin\n  if Opacity >= 128 then opacity256 := Opacity+1 else opacity256 := Opacity;\n  while Count > 0 do\n        begin\n          if pdest^.alpha > 0 then\n          begin\n            alpha := (psrc^.green shl 2) + (psrc^.red shl 1) + psrc^.blue;\n            alpha := alpha*psrc^.alpha + (255*7)*(not psrc^.alpha);\n            newAlpha := (pdest^.alpha * alpha + (alphaMax shr 1)) div alphaMax;\n            pdest^.alpha := (pdest^.alpha*UInt32or64(256 - opacity256) + newAlpha*opacity256) shr 8;\n            if pdest^.alpha = 0 then pdest^ := BGRAPixelTransparent;\n          end;\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplySaturationLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearMultiplySaturationInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearHueLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearHueInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearColorLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearColorInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearLightnessLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearLightnessInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSaturationLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSaturationInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedHueLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedHueInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedColorLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedColorInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedLightnessLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedLightnessInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedSaturationLinearOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedSaturationInline(@temp, psrc^);\n          FastBlendPixelInline(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearMultiplySaturationDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearMultiplySaturationInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearHueDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearHueInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearColorDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearColorInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearLightnessDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearLightnessInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure LinearSaturationDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          LinearSaturationInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedHueDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedHueInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedColorDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedColorInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedLightnessDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedLightnessInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\nprocedure CorrectedSaturationDrawOver(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\nvar temp: TBGRAPixel;\nbegin\n  while Count > 0 do\n        begin\n          temp := pdest^;\n          CorrectedSaturationInline(@temp, psrc^);\n          DrawPixelInlineWithAlphaCheck(pdest, temp, opacity);\n          Inc(pdest);\n          Inc(psrc);\n          Dec(Count);\n        end;\nend;\n\n{************************** table ****************************************}\n\ntype\n  TBlendPixelsOverProc = procedure(pdest: PBGRAPixel; psrc: PBGRAPixel; Count: integer; Opacity: byte);\n\nconst\n  BlendPixelsOverProc: array[Boolean, TBlendOperation] of TBlendPixelsOverProc =\n    ( (@FastBlendPixelsWithOpacity, @DrawPixelsWithOpacity,\n      @LightenPixelsDrawOver, @ScreenPixelsDrawOver, @AddPixelsDrawOver, @LinearAddPixelsDrawOver, @ColorDodgePixelsDrawOver, @DividePixelsDrawOver, @NiceGlowPixelsDrawOver, @SoftLightPixelsDrawOver, @HardLightPixelsDrawOver,\n      @GlowPixelsDrawOver, @ReflectPixelsDrawOver, @LinearOverlayPixelsDrawOver, @OverlayPixelsDrawOver, @DarkenPixelsDrawOver, @LinearMultiplyPixelsDrawOver, @ColorBurnPixelsDrawOver,\n      @DifferencePixelsDrawOver, @LinearDifferencePixelsDrawOver, @ExclusionPixelsDrawOver, @LinearExclusionPixelsDrawOver, @SubtractPixelsDrawOver, @LinearSubtractPixelsDrawOver,\n      @SubtractInversePixelsDrawOver, @LinearSubtractInversePixelsDrawOver, @NegationPixelsDrawOver, @LinearNegationPixelsDrawOver, @BlendXorPixelsDrawOver, @SvgSoftLightPixelsDrawOver,\n      @MaskPixelsDrawOver, @LinearMultiplySaturationDrawOver, @LinearHueDrawOver, @LinearColorDrawOver, @LinearLightnessDrawOver, @LinearSaturationDrawOver,\n      @CorrectedHueDrawOver, @CorrectedColorDrawOver, @CorrectedLightnessDrawOver, @CorrectedSaturationDrawOver),\n      (@FastBlendPixelsWithOpacity, @FastBlendPixelsWithOpacity,\n      @LightenPixelsLinearOver, @ScreenPixelsLinearOver, @AddPixelsLinearOver, @LinearAddPixelsLinearOver, @ColorDodgePixelsLinearOver, @DividePixelsLinearOver, @NiceGlowPixelsLinearOver, @SoftLightPixelsLinearOver, @HardLightPixelsLinearOver,\n      @GlowPixelsLinearOver, @ReflectPixelsLinearOver, @LinearOverlayPixelsLinearOver, @OverlayPixelsLinearOver, @DarkenPixelsLinearOver, @LinearMultiplyPixelsLinearOver, @ColorBurnPixelsLinearOver,\n      @DifferencePixelsLinearOver, @LinearDifferencePixelsLinearOver, @ExclusionPixelsLinearOver, @LinearExclusionPixelsLinearOver, @SubtractPixelsLinearOver, @LinearSubtractPixelsLinearOver,\n      @SubtractInversePixelsLinearOver, @LinearSubtractInversePixelsLinearOver, @NegationPixelsLinearOver, @LinearNegationPixelsLinearOver, @BlendXorPixelsLinearOver, @SvgSoftLightPixelsLinearOver,\n      @MaskPixelsDrawOver, @LinearMultiplySaturationLinearOver, @CorrectedHueLinearOver, @LinearColorLinearOver, @LinearLightnessLinearOver, @LinearSaturationLinearOver,\n      @CorrectedHueLinearOver, @CorrectedColorLinearOver, @CorrectedLightnessLinearOver, @CorrectedSaturationLinearOver));\n\n{************************* calling procedure ***************************}\n\nprocedure BlendPixelsOver(pdest: PBGRAPixel; psrc: PBGRAPixel;\n  blendOp: TBlendOperation; Count: integer; opacity: byte; linearBlend: boolean; excludeChannels: TChannels = []);\nconst BufSize = 8;\nvar\n  destBuf: array[0..BufSize-1] of TBGRAPixel;\n  i: PtrInt;\n  blendProc: TBlendPixelsOverProc;\nbegin\n  if (excludeChannels = [cRed,cGreen,cBlue,cAlpha]) or\n     ((blendOp = boMask) and (cAlpha in excludeChannels)) or\n     (opacity = 0) then exit;\n\n  blendProc := BlendPixelsOverProc[linearblend, blendOp];\n  if excludeChannels = [] then\n    blendProc(pdest, psrc, count, opacity) else\n  begin\n    while Count >= BufSize do\n    begin\n      move(pdest^, {%H-}destBuf, sizeof(destBuf));\n      blendProc(@destBuf, psrc, BufSize, opacity);\n      for i := 0 to BufSize-1 do\n      begin\n        if not (cRed in excludeChannels) then pdest^.red := destBuf[i].red;\n        if not (cGreen in excludeChannels) then pdest^.green := destBuf[i].green;\n        if not (cBlue in excludeChannels) then pdest^.blue := destBuf[i].blue;\n        if not (cAlpha in excludeChannels) then pdest^.alpha := destBuf[i].alpha;\n        inc(pdest);\n      end;\n      dec(count, BufSize);\n    end;\n    if count > 0 then\n    begin\n      move(pdest^, {%H-}destBuf, count*sizeof(TBGRAPixel));\n      blendProc(@destBuf, psrc, count, opacity);\n      for i := 0 to count-1 do\n      begin\n        if not (cRed in excludeChannels) then pdest^.red := destBuf[i].red;\n        if not (cGreen in excludeChannels) then pdest^.green := destBuf[i].green;\n        if not (cBlue in excludeChannels) then pdest^.blue := destBuf[i].blue;\n        if not (cAlpha in excludeChannels) then pdest^.alpha := destBuf[i].alpha;\n        inc(pdest);\n      end;\n    end;\n  end;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/blurbox.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nprocedure IncAcc(var ADest: TAccumulator; ADelta: TAccumulator); inline;\nbegin\n  {$IFDEF PARAM_USE_INC64}\n  inc64(ADest, ADelta);\n  {$ELSE}\n  inc(ADest, ADelta);\n  {$ENDIF}\nend;\nprocedure DecAcc(var ADest: TAccumulator; ADelta: TAccumulator); inline;\nbegin\n  {$IFDEF PARAM_USE_INC64}\n  dec64(ADest, ADelta);\n  {$ELSE}\n  dec(ADest, ADelta);\n  {$ENDIF}\nend;\n\ntype\n  TVertical = record red,green,blue,alpha,count: TAccumulator; end;\n  PVertical = ^TVertical;\nvar\n  verticals: PVertical;\n  left,right,width,height: Int32or64;\n  iRadiusX,iRadiusY: Int32or64;\n  factExtraX,factExtraY: UInt32or64;\n\n  procedure PrepareVerticals;\n  var\n    xb,yb: Int32or64;\n    psrc,p: PByte;\n    pvert : PVertical;\n    {%H-}a2: UInt32or64;\n    delta: PtrInt;\n    srcPixSize: Integer;\n  begin\n    delta := ASource.RowSize;\n    if ASource.LineOrder = riloBottomToTop then delta := -delta;\n    srcPixSize := ASource.Colorspace.GetSize;\n\n    fillchar(verticals^, width*sizeof(TVertical), 0);\n    psrc := ASource.GetPixelAddress(left,ABounds.Top);\n    pvert := verticals;\n    if factExtraY = 0 then\n    begin\n      for xb := left to right-1 do\n      begin\n        p := psrc;\n        for yb := 0 to iRadiusY-1 do\n        begin\n          if yb = height then break;\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, p^);\n          IncAcc(pvert^.alpha, 1);\n          {$ELSE}\n          with PBGRAPixel(p)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha;\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * a2);\n            IncAcc(pvert^.green, green * a2);\n            IncAcc(pvert^.blue, blue * a2);\n            IncAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count);\n          inc(p, delta);\n        end;\n        inc(pvert);\n        inc(psrc, srcPixSize);\n      end;\n    end else\n    begin\n      for xb := left to right-1 do\n      begin\n        p := psrc;\n        for yb := 0 to iRadiusY-1 do\n        begin\n          if yb = height then break;\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, p^ * factMainY);\n          IncAcc(pvert^.alpha, factMainY);\n          {$ELSE}\n          with PBGRAPixel(p)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha * factMainY;\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * a2);\n            IncAcc(pvert^.green, green * a2);\n            IncAcc(pvert^.blue, blue * a2);\n            IncAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count, factMainY);\n          inc(p, delta);\n        end;\n        if iRadiusY < height then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, p^ * factExtraY);\n          IncAcc(pvert^.alpha, factExtraY);\n          {$ELSE}\n          with PBGRAPixel(p)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha * factExtraY;\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * a2);\n            IncAcc(pvert^.green, green * a2);\n            IncAcc(pvert^.blue, blue * a2);\n            IncAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count, factExtraY);\n        end;\n        inc(pvert);\n        inc(psrc, srcPixSize);\n      end;\n    end;\n  end;\n\n  procedure NextVerticals(y: integer);\n  var\n    psrc0,psrc1,psrc2,psrc3: PByte;\n    pvert : PVertical;\n    xb: Int32or64;\n    {%H-}a2: UInt32or64;\n    srcPixSize: Integer;\n  begin\n    pvert := verticals;\n    if y-iRadiusY-1 >= ABounds.Top then\n      psrc1 := ASource.GetPixelAddress(left, y-iRadiusY-1)\n    else\n      psrc1 := nil;\n    if y+iRadiusY < ABounds.Bottom then\n      psrc2 := ASource.GetPixelAddress(left, y+iRadiusY)\n    else\n      psrc2 := nil;\n    srcPixSize := ASource.Colorspace.GetSize;\n    if factExtraY = 0 then\n    begin\n      for xb := width-1 downto 0 do\n      begin\n        if psrc1 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          DecAcc(pvert^.green, psrc1^);\n          DecAcc(pvert^.alpha, 1);\n          {$ELSE}\n          with PBGRAPixel(psrc1)^ do\n          if alpha <> 0 then\n          begin\n            {$HINTS OFF}\n            DecAcc(pvert^.red, red * alpha);\n            DecAcc(pvert^.green, green * alpha);\n            DecAcc(pvert^.blue, blue * alpha);\n            DecAcc(pvert^.alpha, alpha);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          dec(pvert^.count);\n          inc(psrc1,srcPixSize);\n        end;\n        if psrc2 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, psrc2^);\n          IncAcc(pvert^.alpha, 1);\n          {$ELSE}\n          with PBGRAPixel(psrc2)^ do\n          if alpha <> 0 then\n          begin\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * alpha);\n            IncAcc(pvert^.green, green * alpha);\n            IncAcc(pvert^.blue, blue * alpha);\n            IncAcc(pvert^.alpha, alpha);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count);\n          inc(psrc2,srcPixSize);\n        end;\n        inc(pvert);\n      end;\n    end else\n    begin\n      if y-iRadiusY-2 >= ABounds.Top then\n        psrc0 := ASource.GetPixelAddress(left,y-iRadiusY-2)\n      else\n        psrc0 := nil;\n      if y+iRadiusY+1 < ABounds.Bottom then\n        psrc3 := ASource.GetPixelAddress(left,y+iRadiusY+1)\n      else\n        psrc3 := nil;\n      for xb := width-1 downto 0 do\n      begin\n        if psrc0 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          DecAcc(pvert^.green, psrc0^*factExtraY);\n          DecAcc(pvert^.alpha, factExtraY);\n          {$ELSE}\n          with PBGRAPixel(psrc0)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha*factExtraY;\n            {$HINTS OFF}\n            DecAcc(pvert^.red, red * a2);\n            DecAcc(pvert^.green, green * a2);\n            DecAcc(pvert^.blue, blue * a2);\n            DecAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          dec(pvert^.count,factExtraY);\n          inc(psrc0,srcPixSize);\n        end;\n        if psrc1 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          DecAcc(pvert^.green, psrc1^*(factMainY - factExtraY));\n          DecAcc(pvert^.alpha, (factMainY - factExtraY));\n          {$ELSE}\n          with PBGRAPixel(psrc1)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha*(factMainY - factExtraY);\n            {$HINTS OFF}\n            DecAcc(pvert^.red, red * a2);\n            DecAcc(pvert^.green, green * a2);\n            DecAcc(pvert^.blue, blue * a2);\n            DecAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          dec(pvert^.count, factMainY - factExtraY);\n          inc(psrc1,srcPixSize);\n        end;\n        if psrc2 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, psrc2^*(factMainY - factExtraY));\n          IncAcc(pvert^.alpha, (factMainY - factExtraY));\n          {$ELSE}\n          with PBGRAPixel(psrc2)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha*(factMainY - factExtraY);\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * a2);\n            IncAcc(pvert^.green, green * a2);\n            IncAcc(pvert^.blue, blue * a2);\n            IncAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count, factMainY - factExtraY);\n          inc(psrc2,srcPixSize);\n        end;\n        if psrc3 <> nil then\n        begin\n          {$IFDEF PARAM_BYTEMASK}\n          IncAcc(pvert^.green, psrc3^*factExtraY);\n          IncAcc(pvert^.alpha, factExtraY);\n          {$ELSE}\n          with PBGRAPixel(psrc3)^ do\n          if alpha <> 0 then\n          begin\n            a2 := alpha*factExtraY;\n            {$HINTS OFF}\n            IncAcc(pvert^.red, red * a2);\n            IncAcc(pvert^.green, green * a2);\n            IncAcc(pvert^.blue, blue * a2);\n            IncAcc(pvert^.alpha, a2);\n            {$HINTS ON}\n          end;\n          {$ENDIF}\n          inc(pvert^.count,factExtraY);\n          inc(psrc3,srcPixSize);\n        end;\n        inc(pvert);\n      end;\n    end;\n  end;\n\n  procedure MainLoop;\n  var\n    xb,yb,xdest: Int32or64;\n    pdest: PByte;\n    pvert : PVertical;\n    sumRed,sumGreen,sumBlue,sumAlpha,sumCount,\n    sumRed2,sumGreen2,sumBlue2,sumAlpha2,sumCount2,\n    {%H-}sumRed3,sumGreen3,{%H-}sumBlue3,sumAlpha3,{%H-}sumCount3: TAccumulator;\n    destPixSize: Integer;\n  begin\n    destPixSize := ADestination.Colorspace.GetSize;\n    for yb := ABounds.Top to ABounds.Bottom-1 do\n    begin\n      NextVerticals(yb);\n      if Assigned(ACheckShouldStop) and ACheckShouldStop(yb) then exit;\n      pdest := ADestination.GetPixelAddress(left,yb);\n      sumRed := 0;\n      sumGreen := 0;\n      sumBlue := 0;\n      sumAlpha := 0;\n      sumCount := 0;\n      pvert := verticals;\n      for xb := 0 to iRadiusX-1 do\n      begin\n        if xb = width then break;\n        IncAcc(sumRed, pvert^.red);\n        IncAcc(sumGreen, pvert^.green);\n        IncAcc(sumBlue, pvert^.blue);\n        IncAcc(sumAlpha, pvert^.alpha);\n        IncAcc(sumCount, pvert^.count);\n        inc(pvert);\n      end;\n      if factExtraX <> 0 then\n      begin\n        for xdest := 0 to width-1 do\n        begin\n          sumRed2 := 0;\n          sumGreen2 := 0;\n          sumBlue2 := 0;\n          sumAlpha2 := 0;\n          sumCount2 := 0;\n          if xdest-iRadiusX-1 >= 0 then\n          begin\n            pvert := verticals+(xdest-iRadiusX-1);\n            DecAcc(sumRed, pvert^.red);\n            DecAcc(sumGreen, pvert^.green);\n            DecAcc(sumBlue, pvert^.blue);\n            DecAcc(sumAlpha, pvert^.alpha);\n            DecAcc(sumCount, pvert^.count);\n\n            IncAcc(sumRed2, pvert^.red);\n            IncAcc(sumGreen2, pvert^.green);\n            IncAcc(sumBlue2, pvert^.blue);\n            IncAcc(sumAlpha2, pvert^.alpha);\n            IncAcc(sumCount2, pvert^.count);\n          end;\n          if xdest+iRadiusX < width then\n          begin\n            pvert := verticals+(xdest+iRadiusX);\n            IncAcc(sumRed, pvert^.red);\n            IncAcc(sumGreen, pvert^.green);\n            IncAcc(sumBlue, pvert^.blue);\n            IncAcc(sumAlpha, pvert^.alpha);\n            IncAcc(sumCount, pvert^.count);\n          end;\n          if xdest+iRadiusX+1 < width then\n          begin\n            pvert := verticals+(xdest+iRadiusX+1);\n            IncAcc(sumRed2, pvert^.red);\n            IncAcc(sumGreen2, pvert^.green);\n            IncAcc(sumBlue2, pvert^.blue);\n            IncAcc(sumAlpha2, pvert^.alpha);\n            IncAcc(sumCount2, pvert^.count);\n          end;\n          sumAlpha3 := sumAlpha*factMainX + sumAlpha2*factExtraX;\n          {$IFDEF PARAM_BYTEMASK}\n          if sumAlpha3 > 0 then\n          begin\n            sumGreen3 := sumGreen*factMainX + sumGreen2*factExtraX;\n            pdest^ := (sumGreen3+(sumAlpha3 shr 1)) div sumAlpha3;\n          end else pdest^ := 0;\n          {$ELSE}\n          begin\n            sumCount3 := sumCount*factMainX + sumCount2*factExtraX;\n            if (sumAlpha3 >= (sumCount3+1) shr 1) and (sumCount3 > 0) then\n            with PBGRAPixel(pdest)^ do\n            begin\n              sumRed3 := sumRed*factMainX + sumRed2*factExtraX;\n              sumGreen3 := sumGreen*factMainX + sumGreen2*factExtraX;\n              sumBlue3 := sumBlue*factMainX + sumBlue2*factExtraX;\n              red := (sumRed3+(sumAlpha3 shr 1)) div sumAlpha3;\n              green := (sumGreen3+(sumAlpha3 shr 1)) div sumAlpha3;\n              blue := (sumBlue3+(sumAlpha3 shr 1)) div sumAlpha3;\n              alpha := (sumAlpha3+(sumCount3 shr 1)) div sumCount3;\n            end else\n              PBGRAPixel(pdest)^ := BGRAPixelTransparent;\n          end;\n          {$ENDIF}\n          inc(pdest, destPixSize);\n        end;\n      end else\n      begin\n        for xdest := 0 to width-1 do\n        begin\n          if xdest-iRadiusX-1 >= 0 then\n          begin\n            pvert := verticals+(xdest-iRadiusX-1);\n            DecAcc(sumRed, pvert^.red);\n            DecAcc(sumGreen, pvert^.green);\n            DecAcc(sumBlue, pvert^.blue);\n            DecAcc(sumAlpha, pvert^.alpha);\n            DecAcc(sumCount, pvert^.count);\n          end;\n          if xdest+iRadiusX < width then\n          begin\n            pvert := verticals+(xdest+iRadiusX);\n            IncAcc(sumRed, pvert^.red);\n            IncAcc(sumGreen, pvert^.green);\n            IncAcc(sumBlue, pvert^.blue);\n            IncAcc(sumAlpha, pvert^.alpha);\n            IncAcc(sumCount, pvert^.count);\n          end;\n          {$IFDEF PARAM_BYTEMASK}\n          if sumAlpha > 0 then\n            pdest^ := (sumGreen+(sumAlpha shr 1)) div sumAlpha\n            else pdest^ := 0;\n          {$ELSE}\n          if (sumAlpha >= (sumCount+1) shr 1) then\n          with PBGRAPixel(pdest)^ do\n          begin\n            red := (sumRed+(sumAlpha shr 1)) div sumAlpha;\n            green := (sumGreen+(sumAlpha shr 1)) div sumAlpha;\n            blue := (sumBlue+(sumAlpha shr 1)) div sumAlpha;\n            alpha := (sumAlpha+(sumCount shr 1)) div sumCount;\n          end else\n            PBGRAPixel(pdest)^ := BGRAPixelTransparent;\n          {$ENDIF}\n          inc(pdest, destPixSize);\n        end;\n      end;\n    end;\n  end;\n\nbegin\n  if (ABounds.Right <= ABounds.Left) or (ABounds.Bottom <= ABounds.Top) then exit;\n  iRadiusX := floor(ARadiusX+0.5/factMainX);\n  iRadiusY := floor(ARadiusY+0.5/factMainY);\n  factExtraX := trunc(frac(ARadiusX+0.5/factMainX)*factMainX);\n  factExtraY := trunc(frac(ARadiusY+0.5/factMainY)*factMainY);\n\n  if (iRadiusX <= 0) and (iRadiusY <= 0) and (factExtraX <= 0) and (factExtraY <= 0) then\n  begin\n    oldClip := ADestination.IntersectClip(ABounds);\n    ADestination.PutImage(0,0,ASource,dmSet);\n    ADestination.ClipRect := oldClip;\n    exit;\n  end;\n  left := ABounds.left;\n  right := ABounds.right;\n  width := right-left;\n  height := ABounds.bottom-ABounds.top;\n  ASource.LoadFromBitmapIfNeeded;\n\n  getmem(verticals, width*sizeof(TVertical));\n  try\n    PrepareVerticals;\n    MainLoop;\n  finally\n    freemem(verticals);\n  end;\nend;\n{$UNDEF PARAM_BYTEMASK}\n{$UNDEF PARAM_USE_INC64}\n"
  },
  {
    "path": "bgrabitmap/blurfast.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\nvar\n  blurRowY,blurRowX: packed array of UInt32or64;\n  iRadiusX,iRadiusY: Int32or64;\n  weightFactor: UInt32or64;\n\n  { Compute weights of pixels in a row }\n  procedure ComputeBlurRow;\n  var\n    i: Int32or64;\n    ofs: single;\n  begin\n    SetLength(blurRowX, 2*iRadiusX+1);\n    if frac(radiusX)=0 then ofs := 1 else ofs := frac(radiusX);\n    for i := 0 to iRadiusX do\n    begin\n      blurRowX[i] := round((i+ofs)*weightFactor);\n      blurRowX[high(blurRowX)-i] := blurRowX[i];\n    end;\n    SetLength(blurRowY, 2*iRadiusY+1);\n    if frac(radiusY)=0 then ofs := 1 else ofs := frac(radiusY);\n    for i := 0 to iRadiusY do\n    begin\n      blurRowY[i] := round((i+ofs)*weightFactor);\n      blurRowY[high(blurRowY)-i] := blurRowY[i];\n    end;\n  end;\n\n\nvar\n  srcDelta,srcPixSize,\n  verticalWeightShift, horizontalWeightShift: Int32or64;\n  ys1,ys2: Int32or64;\n\n  { Compute blur result in a vertical direction }\n  procedure ComputeVerticalRow(psrc: PByte; var sums: TRowSum; pw: PNativeUInt; count: Int32or64);\n  begin\n    while count > 0 do\n    with sums do\n    begin\n      dec(count);\n      AccumulatePixel(psrc, pw^, sums, verticalWeightShift);\n      inc(pw);\n      inc(psrc,srcDelta);\n    end;\n  end;\n\nvar\n  psum, psumEnd: PRowSum;\n  sums: packed array of TRowSum;\n  sumStartIndex: Int32or64;\n  total: TRowSum;\n  extendedTotal: TExtendedRowSum;\n  yb,xb,xs,x,xEnd: Int32or64;\n  pw: PNativeUInt;\n  psrc, pdest: PByte;\n  bmpWidth,bmpHeight : Int32or64;\n  accumulationFactor: double;\n  bounds: TRect;\n  highSum: Int32or64;\n  tempDest: TCustomUniversalBitmap;\n  destPixSize: Integer;\n\nbegin\n  radiusX := round(radiusX*10)*0.1;\n  radiusY := round(radiusY*10)*0.1;\n  if (radiusX <= 0) and (radiusY <= 0) then\n  begin\n    ADestination.PutImage(0,0,bmp,dmSet);\n    exit;\n  end;\n  iRadiusX := ceil(radiusX);\n  iRadiusY := ceil(radiusY);\n  if (frac(radiusX)=0) and (frac(radiusY)=0) then\n    weightFactor:= 1\n  else\n    weightFactor:= 10;\n  bmpWidth := bmp.Width;\n  bmpHeight := bmp.Height;\n  //create output\n  if (ADestination.Width <> bmp.Width) or (ADestination.Height <> bmp.Height) then\n    raise exception.Create('Dimension mismatch');\n  bounds := bmp.GetImageBounds;\n  if bounds.IsEmpty then exit;\n  bounds.Left   := max(0, bounds.Left - iRadiusX);\n  bounds.Top    := max(0, bounds.Top - iRadiusY);\n  bounds.Right  := min(bmp.Width, bounds.Right + iRadiusX);\n  bounds.Bottom := min(bmp.Height, bounds.Bottom + iRadiusY);\n  bounds.Intersect(ABounds);\n  if bounds.IsEmpty then exit;\n\n  if radiusX*radiusY >= 100 then\n  begin\n    tempDest := ADestination.NewBitmap;\n    tempDest.SetSize(ADestination.Width,ADestination.Height);\n    FilterBlurBox(bmp,bounds,radiusX/3.2,radiusY/3.2,tempDest);\n    FilterBlurBox(tempDest,bounds,radiusX/2.9,radiusY/2.9,ADestination);\n    FilterBlurBox(ADestination,bounds,radiusX/3.2,radiusY/3.2,tempDest);\n    FilterBlurBox(tempDest,bounds,radiusX/2.3,radiusY/2.3,ADestination, ACheckShouldStop);\n    tempDest.Free;\n    exit;\n  end;\n\n  accumulationFactor := (iRadiusY+2)*(iRadiusY+1) div 2 + (iRadiusY+1)*iRadiusY div 2;\n  accumulationFactor := accumulationFactor * sqr(weightFactor);\n  verticalWeightShift := 0;\n  while accumulationFactor > (high(TRegularRowValue) shr BitMargin) + 1 do\n  begin\n    inc(verticalWeightShift);\n    accumulationFactor := accumulationFactor * 0.5;\n  end;\n  horizontalWeightShift:= 0;\n  accumulationFactor := accumulationFactor *\n         ((iRadiusX+2)*(iRadiusX+1) div 2 + (iRadiusX+1)*iRadiusX div 2) *\n         sqr(weightFactor);\n  while accumulationFactor > (high(TRegularRowValue) shr BitMargin) + 1 do\n  begin\n    inc(horizontalWeightShift);\n    accumulationFactor := accumulationFactor * 0.5;\n  end;\n  ComputeBlurRow;\n  //current vertical sums\n  setlength(sums, 2*iRadiusX+1);\n  highSum := high(Sums);\n  psumEnd := @sums[highSum];\n  inc(psumEnd);\n  if bmp.LineOrder = riloTopToBottom then\n    srcDelta := bmp.RowSize else srcDelta := -bmp.RowSize;\n  srcPixSize := bmp.Colorspace.GetSize;\n  destPixSize := ADestination.Colorspace.GetSize;\n  bmp.LoadFromBitmapIfNeeded;\n\n  xEnd := bounds.left-iRadiusX+highSum;\n  if xEnd >= bmpWidth then xEnd := bmpWidth-1;\n  //loop through destination bitmap\n  for yb := bounds.top to bounds.bottom-1 do\n  begin\n    if (ACheckShouldStop <> nil) and ACheckShouldStop(yb) then break;\n    //evalute available vertical range\n    if yb - iRadiusY < 0 then\n      ys1 := iRadiusY - yb\n    else\n      ys1 := 0;\n    if yb + iRadiusY >= bmpHeight then\n      ys2 := bmpHeight-1 - yb + iRadiusY\n    else\n      ys2 := 2*iRadiusY;\n\n    { initial vertical rows are computed here. Later,\n      for each pixel, vertical sums are shifted, so there\n      is only one vertical sum to calculate }\n    fillchar(sums[0],sizeof(TRowSum)*length(sums),0);\n    x := bounds.left-iRadiusX;\n    if x < 0 then\n    begin\n      xs := -x;\n      x := 0;\n    end else\n      xs := 0;\n    psrc := bmp.GetPixelAddress(x, yb-iRadiusY+ys1);\n    psum := @sums[xs];\n    pw := @blurRowY[ys1];\n    while true do\n    begin\n      ComputeVerticalRow(psrc,psum^,pw,ys2-ys1+1);\n      inc(x);\n      inc(psrc, srcPixSize);\n      if x > xEnd then break;\n      inc(psum);\n    end;\n    sumStartIndex := 0;\n\n    pdest := ADestination.GetPixelAddress(bounds.Left, yb);\n    for xb := bounds.left to bounds.right-1 do\n    begin\n      //add vertical rows\n      pw := @blurRowX[0];\n      psum := @sums[sumStartIndex];\n      if horizontalWeightShift > 4 then\n      begin //we don't want to loose too much precision\n        fillchar({%H-}extendedTotal,sizeof(extendedTotal),0);\n        for xs := highSum downto 0 do\n        begin\n          AccumulateExtended(extendedTotal, psum, pw^);\n          inc(pw);\n          inc(psum);\n          if psum >= psumEnd then pSum := @sums[0];\n        end;\n        ComputeExtendedAverage(extendedTotal, pdest);\n      end else\n      if horizontalWeightShift > 0 then\n      begin //lossy but efficient way\n        fillchar({%H-}total,sizeof(total),0);\n        for xs := highSum downto 0 do\n        begin\n          AccumulateShr(total, psum, pw^, horizontalWeightShift);\n          inc(pw);\n          inc(psum);\n          if psum >= psumEnd then pSum := @sums[0];\n        end;\n        ComputeClampedAverage(total, pdest);\n      end else\n      begin //normal way\n        {$hints off}\n        fillchar(total,sizeof(total),0);\n        {$hints on}\n        for xs := highSum downto 0 do\n        begin\n          AccumulateNormal(total, psum, pw^);\n          inc(pw);\n          inc(psum);\n          if psum >= psumEnd then pSum := @sums[0];\n        end;\n        ComputeAverage(total, pdest)\n      end;\n      inc(pdest, destPixSize);\n      //shift vertical rows\n      psum := @sums[sumStartIndex];\n      fillchar(psum^,sizeof(TRowSum),0);\n      if x < bmpWidth then\n      begin\n        ComputeVerticalRow(psrc,psum^,@blurRowY[ys1],ys2-ys1+1);\n        inc(x);\n        inc(psrc, srcPixSize);\n      end;\n      inc(sumStartIndex);\n      if sumStartIndex > highSum then sumStartIndex := 0;\n    end;\n  end;\n  ADestination.InvalidateBitmap;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/blurnormal.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  PWeightedPixel = ^TWeightedPixel;\n  TWeightedPixel = packed record\n    Coord: TPoint;\n    Weight: Int32or64;\n    PtrOfs: Int32or64;\n  end;\n\nvar\n  maskWidth,maskHeight: integer;\n  blurOfs: TPoint;\n  ppixel: PWeightedPixel;\n  Pixel: array of TWeightedPixel;\n  PixelArrayLineStart: array of integer;\n  DiffPixel: array of TWeightedPixel;\n  DiffPixelArrayLineStart: array of integer;\n\n  bmpWidth,bmpHeight: Int32or64;\n\n  procedure LoadMask(out ABlurOfs: TPoint);\n  var x,y,n: Int32or64;\n      tempWeight: Int32or64;\n      diffMask: array of packed array of Int32or64;\n      p: PByteMask;\n      qty,pStride: integer;\n      srcLineDelta, srcPixSize, srcLineOfs: PtrInt;\n  begin\n    ABlurOfs := point(blurMask.Width shr 1, blurMask.Height shr 1);\n\n    //count number of non empty pixels\n    maskWidth := blurMask.Width;\n    maskHeight := blurMask.Height;\n    n := 0;\n    for y:= 0 to maskHeight-1 do\n    begin\n      blurMask.ScanMoveTo(0,Y);\n      x := maskWidth;\n      while x > 0 do\n      begin\n        qty := x;\n        blurMask.ScanNextMaskChunk(qty, p, pStride);\n        dec(x, qty);\n        while qty > 0 do\n        begin\n          if p^.gray <> 0 then inc(n);\n          inc(p, pStride);\n          dec(qty);\n        end;\n      end;\n    end;\n\n    //initialize arrays\n    setlength(diffMask, maskHeight, maskWidth+1);\n    for y := 0 to maskHeight - 1 do\n      fillchar(diffMask[y,0], (maskWidth+1)*sizeof(Int32or64), 0);\n\n    if bmp.LineOrder = riloTopToBottom then\n      srcLineDelta := bmp.RowSize else\n      srcLineDelta := -bmp.RowSize;\n    srcPixSize := bmp.Colorspace.GetSize;\n\n    setlength(Pixel, n);\n    setlength(PixelArrayLineStart, maskHeight+1);  //stores the first pixel of each line\n    n := 0;\n    //compute mask variations and initial mask pixel list\n    srcLineOfs := (0-ABlurOfs.Y)*srcLineDelta;\n    for y := 0 to maskHeight - 1 do\n    begin\n      PixelArrayLineStart[y] := n;\n      blurMask.ScanMoveTo(0,Y);\n      x := 0;\n      while x < maskWidth do\n      begin\n        qty := maskWidth - x;\n        blurMask.ScanNextMaskChunk(qty, p, pStride);\n        while qty > 0 do\n        begin\n          tempWeight := p^.gray;\n          dec(diffMask[y,x], tempWeight);\n          inc(diffMask[y,x+1], tempWeight);\n\n          if tempWeight <> 0 then\n          begin\n            Pixel[n].Weight := tempWeight;\n            Pixel[n].Coord := Point(x,y);\n            Pixel[n].PtrOfs := srcLineOfs + (x-ABlurOfs.X)*srcPixSize;\n            Inc(n);\n          end;\n          inc(x);\n          inc(p, pStride);\n          dec(qty);\n        end;\n      end;\n      inc(srcLineOfs, srcLineDelta);\n    end;\n    PixelArrayLineStart[maskHeight] := n;\n\n    //count number of diff pixels\n    n := 0;\n    for y := 0 to maskHeight - 1 do\n      for x := 0 to maskWidth do\n        if diffMask[y,x] <> 0 then Inc(n);\n\n    //initialize arrays\n    setlength(DiffPixel, n);\n    setlength(DiffPixelArrayLineStart, maskHeight+1);  //stores the first pixel of each diff line\n    n := 0;\n    //compute diff pixel list\n    srcLineOfs := (0-ABlurOfs.Y)*srcLineDelta;\n    for y := 0 to maskHeight - 1 do\n    begin\n      DiffPixelArrayLineStart[y] := n;\n      for x := 0 to maskWidth do\n      begin\n        tempWeight := diffMask[y,x];\n        if tempWeight <> 0 then\n        begin\n          DiffPixel[n].Weight := tempWeight;\n          DiffPixel[n].Coord := Point(x-1,y);\n          DiffPixel[n].PtrOfs := srcLineOfs + (x-ABlurOfs.X-1)*srcPixSize;\n          Inc(n);\n        end;\n      end;\n      inc(srcLineOfs, srcLineDelta);\n    end;\n    DiffPixelArrayLineStart[maskHeight] := n;\n  end;\n\n  function PrepareScan(AWantedBounds: TRect; out AClippedBounds: TRect): boolean;\n  begin\n    //evaluate required bounds taking blur radius into acount\n    AClippedBounds := bmp.GetImageBounds;\n    if AClippedBounds.IsEmpty then\n    begin\n      result := false;\n      exit;\n    end;\n    AClippedBounds.Left   := max(0, AClippedBounds.Left - blurOfs.X);\n    AClippedBounds.Top    := max(0, AClippedBounds.Top - blurOfs.Y);\n    AClippedBounds.Right  := min(bmpWidth, AClippedBounds.Right + maskWidth - 1 - blurOfs.X);\n    AClippedBounds.Bottom := min(bmpHeight, AClippedBounds.Bottom + maskHeight - 1 - blurOfs.Y);\n    AClippedBounds.Intersect(AWantedBounds);\n\n    if AClippedBounds.IsEmpty then\n    begin\n      result := false;\n      exit;\n    end;\n\n    result := true;\n  end;\n\nvar\n  bounds: TRect;\n  yb, xb: Int32or64;\n  mindy, maxdy, n, nStart, nCount, nDiffStart, nDiffCount: Int32or64;\n  bmpX,bmpXBase,bmpYBase: Int32or64;\n  pdest : PByte;\n  psrc : PByte;\n  srcPixSize,destPixSize: integer;\n\nbegin\n  bmpWidth := bmp.Width;\n  bmpHeight:= bmp.Height;\n  bmp.LoadFromBitmapIfNeeded;\n\n  if (ADestination.Width <> bmpWidth) or (ADestination.Height <> bmpHeight) then\n    raise exception.Create('Dimension mismatch');\n\n  LoadMask(blurOfs);\n  if not PrepareScan(ABounds, bounds) then exit; //nothing to do\n\n  bmpYBase := bounds.Top - blurOfs.Y;\n  srcPixSize := bmp.Colorspace.GetSize;\n  destPixSize := ADestination.Colorspace.GetSize;\n\n  //loop through destination\n  for yb := bounds.Top to bounds.Bottom - 1 do\n  begin\n    if (ACheckShouldStop <> nil) and ACheckShouldStop(yb) then break;\n    psrc := bmp.GetPixelAddress(bounds.Left, yb);\n    pdest := ADestination.GetPixelAddress(bounds.Left, yb);\n    //compute vertical range\n    mindy := max(-blurOfs.Y, -yb);\n    maxdy := min(blurMask.Height - 1 - blurOfs.Y, bmpHeight - 1 - yb);\n\n    AClearSum(AData);\n\n    bmpXBase := bounds.Left-blurOfs.X;\n    nStart := PixelArrayLineStart[mindy+blurOfs.Y];\n    nCount  := PixelArrayLineStart[maxdy+blurOfs.Y+1]-nStart;\n    ppixel:= @Pixel[nStart];\n    //go through pixel list of the current vertical range\n    for n := nCount-1 downto 0 do\n    begin\n      bmpX := bmpXBase+ppixel^.Coord.x;\n      //check horizontal range\n      if (bmpX >= 0) and (bmpX < bmpWidth) then\n        AAccumulate(AData, psrc + ppixel^.PtrOfs, ppixel^.Weight);\n      inc(ppixel);\n    end;\n    AComputeAverage(AData, pdest);\n\n    nDiffStart := DiffPixelArrayLineStart[mindy+blurOfs.Y];\n    nDiffCount := DiffPixelArrayLineStart[maxdy+blurOfs.Y+1]-nDiffStart;\n\n    if nDiffCount < nCount then\n    begin\n      for xb := bounds.Left+1 to Bounds.Right - 1 do\n      begin\n        Inc(pdest, destPixSize);\n        inc(bmpXBase);\n        inc(psrc, srcPixSize);\n\n        ppixel:= @DiffPixel[nDiffStart];\n        for n := nDiffCount-1 downto 0 do\n        begin\n          bmpX := bmpXBase+ppixel^.Coord.x;\n          if (bmpX >= 0) and (bmpX < bmpWidth) then\n            AAccumulate(AData, psrc + ppixel^.PtrOfs, ppixel^.Weight);\n          inc(ppixel);\n        end;\n        AComputeAverage(AData, pDest);\n      end;\n    end else\n    begin\n      for xb := bounds.Left+1 to Bounds.Right - 1 do\n      begin\n        Inc(pdest, destPixSize);\n        inc(bmpXBase);\n        inc(psrc, srcPixSize);\n\n        AClearSum(AData);\n\n        ppixel:= @Pixel[nStart];\n        for n := nCount-1 downto 0 do\n        begin\n          bmpX := bmpXBase+ppixel^.Coord.x;\n          //check horizontal range\n          if (bmpX >= 0) and (bmpX < bmpWidth) then\n            AAccumulate(AData, psrc + ppixel^.PtrOfs, ppixel^.Weight);\n          inc(ppixel);\n        end;\n        AComputeAverage(AData, pdest);\n      end;\n    end;\n\n    inc(bmpYBase);\n  end;\n  ADestination.InvalidateBitmap;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/csscolorconst.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{=== Color definitions ===}\n\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\nvar\n  {* This is the value used for transparent pixels. In theory, any\n     color with alpha = 0 is transparent, however it is recommended to\n     use all other channels to zero as well. }\n  BGRAPixelTransparent: TBGRAPixel;\n  ExpandedPixelTransparent: TExpandedPixel;\n\n  {* [#FFFFFF] White opaque }\n  BGRAWhite: TBGRAPixel;\n  {* [#000000] Black opaque }\n  BGRABlack: TBGRAPixel;\n\nconst\n  {* This color [#000001] looks just like black. It is needed for drawing black\n     shapes using the _Canvas_ property of TBGRABitmap. This is a standard\n     TCanvas and when drawing with pure black (_clBlack_), there is no way to know if\n     something has been drawn or if it is transparent }\n  clBlackOpaque = TColor($010000);\n\nvar\n  //VGA colors\n  VGABlack,VGAGray,VGASilver,VGAWhite,\n  VGAMaroon,VGARed,VGAPurple,VGAFuchsia,\n  VGAGreen,VGALime,VGAOlive,VGAYellow,\n  VGANavy,VGABlue,VGATeal,VGAAqua: TBGRAPixel;\n\n  //Red colors\n  CSSIndianRed,CSSLightCoral,CSSSalmon,CSSDarkSalmon,\n  CSSRed,CSSCrimson,CSSFireBrick,CSSDarkRed: TBGRAPixel;\n  //Pink colors\n  CSSPink,CSSLightPink,CSSHotPink,CSSDeepPink,\n  CSSMediumVioletRed,CSSPaleVioletRed: TBGRAPixel;\n  //Orange colors\n  CSSLightSalmon,CSSCoral,CSSTomato,CSSOrangeRed,\n  CSSDarkOrange,CSSOrange: TBGRAPixel;\n  //Yellow colors\n  CSSGold,CSSYellow,CSSLightYellow,CSSLemonChiffon,\n  CSSLightGoldenrodYellow,CSSPapayaWhip,CSSMoccasin,CSSPeachPuff,\n  CSSPaleGoldenrod,CSSKhaki,CSSDarkKhaki: TBGRAPixel;\n  //Purple colors\n  CSSLavender,CSSThistle,CSSPlum,CSSViolet,\n  CSSOrchid,CSSFuchsia,CSSMagenta,CSSMediumOrchid,\n  CSSMediumPurple,CSSBlueViolet,CSSDarkViolet,CSSDarkOrchid,\n  CSSDarkMagenta,CSSPurple,CSSIndigo,CSSDarkSlateBlue,\n  CSSSlateBlue,CSSMediumSlateBlue: TBGRAPixel;\n  //Green colors\n  CSSGreenYellow,CSSChartreuse,CSSLawnGreen,CSSLime,\n  CSSLimeGreen,CSSPaleGreen,CSSLightGreen,CSSMediumSpringGreen,\n  CSSSpringGreen,CSSMediumSeaGreen,CSSSeaGreen,CSSForestGreen,\n  CSSGreen,CSSDarkGreen,CSSYellowGreen,CSSOliveDrab,\n  CSSOlive,CSSDarkOliveGreen,CSSMediumAquamarine,CSSDarkSeaGreen,\n  CSSLightSeaGreen,CSSDarkCyan,CSSTeal: TBGRAPixel;\n  //Blue/Cyan colors\n  CSSAqua,CSSCyan,CSSLightCyan,CSSPaleTurquoise,\n  CSSAquamarine,CSSTurquoise,CSSMediumTurquoise,CSSDarkTurquoise,\n  CSSCadetBlue,CSSSteelBlue,CSSLightSteelBlue,CSSPowderBlue,\n  CSSLightBlue,CSSSkyBlue,CSSLightSkyBlue,CSSDeepSkyBlue,\n  CSSDodgerBlue,CSSCornflowerBlue,CSSRoyalBlue,CSSBlue,\n  CSSMediumBlue,CSSDarkBlue,CSSNavy,CSSMidnightBlue: TBGRAPixel;\n  //Brown colors\n  CSSCornsilk, CSSBlanchedAlmond, CSSBisque, CSSNavajoWhite,\n  CSSWheat, CSSBurlyWood, CSSTan, CSSRosyBrown,\n  CSSSandyBrown, CSSGoldenrod, CSSDarkGoldenrod, CSSPeru,\n  CSSChocolate, CSSSaddleBrown, CSSSienna, CSSBrown,\n  CSSMaroon: TBGRAPixel;\n  //White colors\n  CSSWhite, CSSSnow, CSSHoneydew, CSSMintCream,\n  CSSAzure, CSSAliceBlue, CSSGhostWhite, CSSWhiteSmoke,\n  CSSSeashell, CSSBeige, CSSOldLace, CSSFloralWhite,\n  CSSIvory, CSSAntiqueWhite, CSSLinen, CSSLavenderBlush,\n  CSSMistyRose: TBGRAPixel;\n  //Gray colors\n  CSSGainsboro, CSSLightGray, CSSSilver, CSSDarkGray,\n  CSSGray, CSSDimGray, CSSLightSlateGray, CSSSlateGray,\n  CSSDarkSlateGray, CSSBlack: TBGRAPixel;\n\ntype\n  {* Definition of a single color in RGB colorspace }\n  TBGRAColorDefinition = record\n    Name: string;\n    Color: TBGRAPixel;\n  end;\n\n  {* Contains a fixed list of colors }\n  TBGRAColorList = class\n  protected\n    FFinished: boolean;\n    FNbColors: integer;\n    FColors: array of TBGRAColorDefinition;\n    function GetByIndex(Index: integer): TBGRAPixel;\n    function GetByName(Name: string): TBGRAPixel;\n    function GetName(Index: integer): string;\n    procedure Add(Name: string; out Color: TBGRAPixel; red,green,blue: byte); overload;\n  public\n    {** Creates an empty color list }\n    constructor Create;\n    {** Add a color to the list }\n    procedure Add(Name: string; const Color: TBGRAPixel); overload;\n    {** Ends the color list and prevents further modifications }\n    procedure Finished;\n    {** Returns the index of a color with a given name }\n    function IndexOf(Name: string): integer;\n    {** Returns the index of a color. Colors are considered to match if\n        the difference is less than or equal to _AMaxDiff_ }\n    function IndexOfColor(const AColor: TBGRAPixel; AMaxDiff: Word = 0): integer;\n\n    {** Gets the color associated with a color name }\n    property ByName[Name: string]: TBGRAPixel read GetByName;\n    {** Gets the color at the specified index }\n    property ByIndex[Index: integer]: TBGRAPixel read GetByIndex; default;\n    {** Gets the name of the color at the specified index }\n    property Name[Index: integer]: string read GetName;\n    {** Gets the number of colors }\n    property Count: integer read FNbColors;\n  end;\n\nvar\n  {* List of VGA colors:\n\n     [#000000] Black, [#808080] Gray, [#C0C0C0] Silver, [#FFFFFF] White,\n     [#800000] Maroon, [#FF0000] Red,  [#800080] Purple, [#FF00FF] Fuchsia,\n     [#008000] Green,  [#00FF00] Lime, [#808000] Olive,  [#FFFF00] Yellow,\n     [#000080] Navy,   [#0000FF] Blue, [#008080] Teal,   [#00FFFF] Aqua.\n\n     Shortcut constants are provided: [#000000] _VGABlack_, [#808080] _VGAGray_... }\n  VGAColors: TBGRAColorList;\n  {* List of [https://www.w3schools.com/cssref/css_colors.asp web colors].\n\n  Shortcut constants are provided: [#000000] _CSSBlack_, [#FF0000] _CSSRed_... }\n  CSSColors: TBGRAColorList;\n\n{------------------- string conversion ------------------------}\n\n{* Converts a TBGRAPixel value into a string, using color names provided in _AColorList_, and\n   considering that a color matches in the color list if its difference is within _AMaxDiff_ }\nfunction BGRAToStr(c: TBGRAPixel; AColorList: TBGRAColorList = nil;\n  AMaxDiff: Word= 0; AOptionalAlpha: boolean = false; AHashTagPrefix: boolean = false): string;\n{* Converts a fully defined string into a TBGRAPixel value. Color names from _VGAColors_ and _CSSColors_\n   are used if there is an exact match }\nfunction StrToBGRA(str: string): TBGRAPixel; overload;\n{* Converts a string into a TBGRAPixel value. If the value is not fully defined or that\n   there is an error, _DefaultColor_ is returned.\n   Color names from _VGAColors_ and _CSSColors_ are used if there is an exact match. }\nfunction StrToBGRA(str: string; const DefaultColor: TBGRAPixel): TBGRAPixel; overload;\n{* Converts a string into a TBGRAPixel value. If the value is not fully defined, missing channels (expressed with '?')\n   are filled with fallbackValues. You can check if there was an error with the provided boolean.\n   Color names from _VGAColors_ and _CSSColors_ are used if there is an exact match. }\nfunction PartialStrToBGRA(str: string; const fallbackValues: TBGRAPixel; out error: boolean): TBGRAPixel;\n{* Converts a string into a TBGRAPixel value into _parsedValue_. _parsedValue_ is not changed if\n   some channels are missing (expressed with '?'). You can check if there was an error with the provided boolean.\n   Color names from _VGAColors_ and _CSSColors_ are used if there is an exact match. }\nprocedure TryStrToBGRA(str: string; var parsedValue: TBGRAPixel; out missingValues: boolean; out error: boolean);\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n{ TBGRAColorList }\n\nfunction TBGRAColorList.GetByIndex(Index: integer): TBGRAPixel;\nbegin\n  if (Index < 0) or (Index >= FNbColors) then\n    result := BGRAPixelTransparent\n  else\n    result := FColors[Index].Color;\nend;\n\nfunction TBGRAColorList.GetByName(Name: string): TBGRAPixel;\nvar i: integer;\nbegin\n  i := IndexOf(Name);\n  if i = -1 then\n    result := BGRAPixelTransparent\n  else\n    result := FColors[i].Color;\nend;\n\nfunction TBGRAColorList.GetName(Index: integer): string;\nbegin\n  if (Index < 0) or (Index >= FNbColors) then\n    result := ''\n  else\n    result := FColors[Index].Name;\nend;\n\nprocedure TBGRAColorList.Add(Name: string; out Color: TBGRAPixel; red, green,\n  blue: byte);\nbegin\n  Color := BGRA(red,green,blue);\n  Add(Name,Color);\nend;\n\nconstructor TBGRAColorList.Create;\nbegin\n  FNbColors:= 0;\n  FColors := nil;\n  FFinished:= false;\nend;\n\nprocedure TBGRAColorList.Add(Name: string; const Color: TBGRAPixel);\nbegin\n  if FFinished then\n    raise Exception.Create('This list is already finished');\n  if length(FColors) = FNbColors then\n    SetLength(FColors, FNbColors*2+1);\n  FColors[FNbColors].Name := Name;\n  FColors[FNbColors].Color := Color;\n  inc(FNbColors);\nend;\n\nprocedure TBGRAColorList.Finished;\nbegin\n  if FFinished then exit;\n  FFinished := true;\n  SetLength(FColors, FNbColors);\nend;\n\nfunction TBGRAColorList.IndexOf(Name: string): integer;\nvar i: integer;\nbegin\n  for i := 0 to FNbColors-1 do\n    if CompareText(Name, FColors[i].Name) = 0 then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1;\nend;\n\nfunction TBGRAColorList.IndexOfColor(const AColor: TBGRAPixel; AMaxDiff: Word = 0): integer;\nvar i: integer;\n  MinDiff,CurDiff: Word;\nbegin\n  if AMaxDiff = 0 then\n  begin\n    for i := 0 to FNbColors-1 do\n      if AColor = FColors[i].Color then\n      begin\n        result := i;\n        exit;\n      end;\n    result := -1;\n  end else\n  begin\n    MinDiff := AMaxDiff;\n    result := -1;\n    for i := 0 to FNbColors-1 do\n    begin\n      CurDiff := BGRAWordDiff(AColor,FColors[i].Color);\n      if CurDiff <= MinDiff then\n      begin\n        result := i;\n        MinDiff := CurDiff;\n        if MinDiff = 0 then exit;\n      end;\n    end;\n  end;\nend;\n\n{------------------- string conversion ---------------------------------}\n\n{ Write a color in hexadecimal format RRGGBBAA or using the name in a color list }\nfunction BGRAToStr(c: TBGRAPixel; AColorList: TBGRAColorList;\n  AMaxDiff: Word; AOptionalAlpha: boolean; AHashTagPrefix: boolean): string;\nvar idx: integer;\nbegin\n  if Assigned(AColorList) then\n  begin\n    idx := AColorList.IndexOfColor(c, AMaxDiff);\n    if idx<> -1 then\n    begin\n      result := AColorList.Name[idx];\n      exit;\n    end;\n  end;\n  if AOptionalAlpha and (c.alpha = 255) then\n    result := IntToHex(c.red,2)+IntToHex(c.green,2)+IntToHex(c.Blue,2)\n  else\n    result := IntToHex(c.red,2)+IntToHex(c.green,2)+IntToHex(c.Blue,2)+IntToHex(c.Alpha,2);\n  if AHashTagPrefix then result := '#' + result;\nend;\n\ntype\n    arrayOfString = array of string;\n\nfunction SimpleParseFuncParam(str: string; var flagError: boolean): arrayOfString;\nvar idxOpen,start,cur: integer;\nbegin\n    result := nil;\n    idxOpen := pos('(',str);\n    if idxOpen = 0 then\n    begin\n      start := 1;\n      //find first space\n      while (start <= length(str)) and (str[start]<>' ') do inc(start);\n    end else\n      start := idxOpen+1;\n    cur := start;\n    while cur <= length(str) do\n    begin\n       if str[cur] in[',',')'] then\n       begin\n         setlength(result,length(result)+1);\n         result[high(result)] := trim(copy(str,start,cur-start));\n         start := cur+1;\n         if str[cur] = ')' then exit;\n       end;\n       inc(cur);\n    end;\n    if idxOpen <> 0 then flagError := true; //should exit on ')'\n    if start <= length(str) then\n    begin\n      setlength(result,length(result)+1);\n      result[high(result)] := copy(str,start,length(str)-start+1);\n    end;\nend;\n\nfunction ParseColorValue(str: string; var flagError: boolean): byte;\nvar pourcent,unclipped,{%H-}errPos: integer;\n  pourcentF: single;\n  pourcentStr: string;\nbegin\n  if str = '' then result := 0 else\n  begin\n    if str[length(str)]='%' then\n    begin\n      pourcentStr := copy(str,1,length(str)-1);\n      val(pourcentStr,pourcent,errPos);\n      if errPos <> 0 then\n      begin\n        val(pourcentStr,pourcentF,errPos);\n        if errPos <> 0 then\n        begin\n          flagError := true;\n          result := 0;\n        end\n        else\n        begin\n          if pourcentF < 0 then result := 0 else\n          if pourcentF > 100 then result := 255 else\n           result := round(pourcentF*255 / 100);\n        end;\n      end else\n      begin\n         if pourcent < 0 then result := 0 else\n         if pourcent > 100 then result := 255 else\n           result := pourcent*255 div 100;\n      end;\n    end else\n    begin\n      val(str,unclipped,errPos);\n      if errPos <> 0 then flagError := true;\n      if unclipped < 0 then result := 0 else\n      if unclipped > 255 then result := 255 else\n        result := unclipped;\n    end;\n  end;\nend;\n\n//this function returns the parsed value only if it contains no error nor missing values, otherwise\n//it returns BGRAPixelTransparent\nfunction StrToBGRA(str: string): TBGRAPixel;\nvar missingValues, error: boolean;\nbegin\n  result := BGRABlack;\n  TryStrToBGRA(str, result, missingValues, error);\n  if missingValues or error then result := BGRAPixelTransparent;\nend;\n\n//this function changes the content of parsedValue depending on available and parsable information.\n//set parsedValue to the fallback values before calling this function.\n//missing values are expressed by empty string or by '?', for example 'rgb(255,?,?,?)' will change only the red value.\n//note that if alpha is not expressed by the string format, it will be opaque. So 'rgb(255,?,?)' will change the red value and the alpha value.\n//the last parameter of rgba() is a floating point number where 1 is opaque and 0 is transparent.\nprocedure TryStrToBGRA(str: string; var parsedValue: TBGRAPixel; out missingValues: boolean; out error: boolean);\nvar errPos: integer;\n    values: array of string;\n    alphaF: single;\n    idx: integer;\nbegin\n  str := Trim(str);\n  error := false;\n  if (str = '') or (str = '?') then\n  begin\n    missingValues := true;\n    exit;\n  end else\n    missingValues := false;\n  str := StringReplace(lowerCase(str),'grey','gray',[]);\n\n  //VGA color names\n  idx := VGAColors.IndexOf(str);\n  if idx <> -1 then\n  begin\n    parsedValue := VGAColors[idx];\n    exit;\n  end;\n  if str='transparent' then parsedValue := BGRAPixelTransparent else\n  begin\n    //check CSS color\n    idx := CSSColors.IndexOf(str);\n    if idx <> -1 then\n    begin\n      parsedValue := CSSColors[idx];\n      exit;\n    end;\n\n    //CSS RGB notation\n    if (copy(str,1,4)='rgb(') or (copy(str,1,5)='rgba(') or\n      (copy(str,1,4)='rgb ') or (copy(str,1,5)='rgba ') then\n    begin\n      values := SimpleParseFuncParam(str,error);\n      if (length(values)=3) or (length(values)=4) then\n      begin\n        if (values[0] <> '') and (values[0] <> '?') then\n           parsedValue.red := ParseColorValue(values[0], error)\n        else\n           missingValues := true;\n        if (values[1] <> '') and (values[1] <> '?') then\n           parsedValue.green := ParseColorValue(values[1], error)\n        else\n           missingValues := true;\n        if (values[2] <> '') and (values[2] <> '?') then\n           parsedValue.blue := ParseColorValue(values[2], error)\n        else\n           missingValues := true;\n        if length(values)=4 then\n        begin\n          if (values[3] <> '') and (values[3] <> '?') then\n          begin\n            val(values[3],alphaF,errPos);\n            if errPos <> 0 then\n            begin\n               parsedValue.alpha := 255;\n               error := true;\n            end\n            else\n            begin\n              if alphaF < 0 then\n                parsedValue.alpha := 0 else\n              if alphaF > 1 then\n                parsedValue.alpha := 255\n              else\n                parsedValue.alpha := round(alphaF*255);\n            end;\n          end else\n            missingValues := true;\n        end else\n          parsedValue.alpha := 255;\n      end else\n        error := true;\n      exit;\n    end;\n\n    //remove HTML notation header\n    if str[1]='#' then delete(str,1,1);\n\n    //add alpha if missing (if you want an undefined alpha use '??' or '?')\n    if length(str)=6 then AppendStr(str, 'FF')\n    else if length(str)=3 then AppendStr(str, 'F');\n\n    //hex notation\n    if length(str)=8 then\n    begin\n      if copy(str,1,2) <> '??' then\n      begin\n        val('$'+copy(str,1,2),parsedValue.red,errPos);\n        if errPos <> 0 then error := true;\n      end else missingValues := true;\n      if copy(str,3,2) <> '??' then\n      begin\n        val('$'+copy(str,3,2),parsedValue.green,errPos);\n        if errPos <> 0 then error := true;\n      end else missingValues := true;\n      if copy(str,5,2) <> '??' then\n      begin\n        val('$'+copy(str,5,2),parsedValue.blue,errPos);\n        if errPos <> 0 then error := true;\n      end else missingValues := true;\n      if copy(str,7,2) <> '??' then\n      begin\n        val('$'+copy(str,7,2),parsedValue.alpha,errPos);\n        if errPos <> 0 then\n        begin\n          error := true;\n          parsedValue.alpha := 255;\n        end;\n      end else missingValues := true;\n    end else\n    if length(str)=4 then\n    begin\n      if str[1] <> '?' then\n      begin\n        val('$'+str[1],parsedValue.red,errPos);\n        if errPos <> 0 then error := true;\n        parsedValue.red := parsedValue.red * $11;\n      end else missingValues := true;\n      if str[2] <> '?' then\n      begin\n        val('$'+str[2],parsedValue.green,errPos);\n        if errPos <> 0 then error := true;\n        parsedValue.green := parsedValue.green * $11;\n      end else missingValues := true;\n      if str[3] <> '?' then\n      begin\n        val('$'+str[3],parsedValue.blue,errPos);\n        if errPos <> 0 then error := true;\n        parsedValue.blue := parsedValue.blue * $11;\n      end else missingValues := true;\n      if str[4] <> '?' then\n      begin\n        val('$'+str[4],parsedValue.alpha,errPos);\n        if errPos <> 0 then\n        begin\n          error := true;\n          parsedValue.alpha := 255;\n        end else\n          parsedValue.alpha := parsedValue.alpha * $11;\n      end else missingValues := true;\n    end else\n      error := true; //string format not recognised\n  end;\n\nend;\n\n//this function returns the values that can be read from the string, otherwise\n//it fills the gaps with the fallback values. The error boolean is True only\n//if there was invalid values, it is not set to True if there was missing values.\nfunction PartialStrToBGRA(str: string; const fallbackValues: TBGRAPixel; out\n  error: boolean): TBGRAPixel;\nvar missingValues: boolean;\nbegin\n  result := fallbackValues;\n  TryStrToBGRA(str, result, missingValues, error);\nend;\n\n{ Read a color, for example in hexadecimal format RRGGBB(AA) or RGB(A). Partial colors are not accepted by this function. }\nfunction StrToBGRA(str: string; const DefaultColor: TBGRAPixel): TBGRAPixel;\nvar missingValues, error: boolean;\nbegin\n  result := BGRABlack;\n  TryStrToBGRA(str, result, missingValues, error);\n  if missingValues or error then result := DefaultColor;\nend;\n\nfunction BlueGreenRedToBGRA(blue,green,red: byte): TBGRAPixel;\nbegin\n  result := BGRA(red,green,blue);\nend;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_INIT}\n{$UNDEF INCLUDE_INIT}\n  BGRAPixelTransparent := BGRA(0,0,0,0);\n  ExpandedPixelTransparent := BGRAPixelTransparent.ToExpanded;\n  BGRAWhite := BGRA(255,255,255);\n  BGRABlack := BGRA(0,0,0);\n\n  VGAColors := TBGRAColorList.Create;\n  VGAColors.Add('Black',VGABlack,0,0,0);\n  VGAColors.Add('Gray',VGAGray,128,128,128);\n  VGAColors.Add('Silver',VGASilver,192,192,192);\n  VGAColors.Add('White',VGAWhite,255,255,255);\n  VGAColors.Add('Maroon',VGAMaroon,128,0,0);\n  VGAColors.Add('Red',VGARed,255,0,0);\n  VGAColors.Add('Purple',VGAPurple,128,0,128);\n  VGAColors.Add('Fuchsia',VGAFuchsia,255,0,255);\n  VGAColors.Add('Green',VGAGreen,0,128,0);\n  VGAColors.Add('Lime',VGALime,0,255,0);\n  VGAColors.Add('Olive',VGAOlive,128,128,0);\n  VGAColors.Add('Yellow',VGAYellow,255,255,0);\n  VGAColors.Add('Navy',VGANavy,0,0,128);\n  VGAColors.Add('Blue',VGABlue,0,0,255);\n  VGAColors.Add('Teal',VGATeal,0,128,128);\n  VGAColors.Add('Aqua',VGAAqua,0,255,255);\n  VGAColors.Finished;\n\n  //Red colors\n  CSSIndianRed:= BlueGreenRedToBGRA(92, 92, 205);\n  CSSLightCoral:= BlueGreenRedToBGRA(128, 128, 240);\n  CSSSalmon:= BlueGreenRedToBGRA(114, 128, 250);\n  CSSDarkSalmon:= BlueGreenRedToBGRA(122, 150, 233);\n  CSSRed:= BlueGreenRedToBGRA(0, 0, 255);\n  CSSCrimson:= BlueGreenRedToBGRA(60, 20, 220);\n  CSSFireBrick:= BlueGreenRedToBGRA(34, 34, 178);\n  CSSDarkRed:= BlueGreenRedToBGRA(0, 0, 139);\n\n  //Pink colors\n  CSSPink:= BlueGreenRedToBGRA(203, 192, 255);\n  CSSLightPink:= BlueGreenRedToBGRA(193, 182, 255);\n  CSSHotPink:= BlueGreenRedToBGRA(180, 105, 255);\n  CSSDeepPink:= BlueGreenRedToBGRA(147, 20, 255);\n  CSSMediumVioletRed:= BlueGreenRedToBGRA(133, 21, 199);\n  CSSPaleVioletRed:= BlueGreenRedToBGRA(147, 112, 219);\n\n  //Orange colors\n  CSSLightSalmon:= BlueGreenRedToBGRA(122, 160, 255);\n  CSSCoral:= BlueGreenRedToBGRA(80, 127, 255);\n  CSSTomato:= BlueGreenRedToBGRA(71, 99, 255);\n  CSSOrangeRed:= BlueGreenRedToBGRA(0, 69, 255);\n  CSSDarkOrange:= BlueGreenRedToBGRA(0, 140, 255);\n  CSSOrange:= BlueGreenRedToBGRA(0, 165, 255);\n\n  //Yellow colors\n  CSSGold:= BlueGreenRedToBGRA(0, 215, 255);\n  CSSYellow:= BlueGreenRedToBGRA(0, 255, 255);\n  CSSLightYellow:= BlueGreenRedToBGRA(224, 255, 255);\n  CSSLemonChiffon:= BlueGreenRedToBGRA(205, 250, 255);\n  CSSLightGoldenrodYellow:= BlueGreenRedToBGRA(210, 250, 250);\n  CSSPapayaWhip:= BlueGreenRedToBGRA(213, 239, 255);\n  CSSMoccasin:= BlueGreenRedToBGRA(181, 228, 255);\n  CSSPeachPuff:= BlueGreenRedToBGRA(185, 218, 255);\n  CSSPaleGoldenrod:= BlueGreenRedToBGRA(170, 232, 238);\n  CSSKhaki:= BlueGreenRedToBGRA(140, 230, 240);\n  CSSDarkKhaki:= BlueGreenRedToBGRA(107, 183, 189);\n\n  //Purple colors\n  CSSLavender:= BlueGreenRedToBGRA(250, 230, 230);\n  CSSThistle:= BlueGreenRedToBGRA(216, 191, 216);\n  CSSPlum:= BlueGreenRedToBGRA(221, 160, 221);\n  CSSViolet:= BlueGreenRedToBGRA(238, 130, 238);\n  CSSOrchid:= BlueGreenRedToBGRA(214, 112, 218);\n  CSSFuchsia:= BlueGreenRedToBGRA(255, 0, 255);\n  CSSMagenta:= BlueGreenRedToBGRA(255, 0, 255);\n  CSSMediumOrchid:= BlueGreenRedToBGRA(211, 85, 186);\n  CSSMediumPurple:= BlueGreenRedToBGRA(219, 112, 147);\n  CSSBlueViolet:= BlueGreenRedToBGRA(226, 43, 138);\n  CSSDarkViolet:= BlueGreenRedToBGRA(211, 0, 148);\n  CSSDarkOrchid:= BlueGreenRedToBGRA(204, 50, 153);\n  CSSDarkMagenta:= BlueGreenRedToBGRA(139, 0, 139);\n  CSSPurple:= BlueGreenRedToBGRA(128, 0, 128);\n  CSSIndigo:= BlueGreenRedToBGRA(130, 0, 75);\n  CSSDarkSlateBlue:= BlueGreenRedToBGRA(139, 61, 72);\n  CSSSlateBlue:= BlueGreenRedToBGRA(205, 90, 106);\n  CSSMediumSlateBlue:= BlueGreenRedToBGRA(238, 104, 123);\n\n  //Green colors\n  CSSGreenYellow:= BlueGreenRedToBGRA(47, 255, 173);\n  CSSChartreuse:= BlueGreenRedToBGRA(0, 255, 127);\n  CSSLawnGreen:= BlueGreenRedToBGRA(0, 252, 124);\n  CSSLime:= BlueGreenRedToBGRA(0, 255, 0);\n  CSSLimeGreen:= BlueGreenRedToBGRA(50, 205, 50);\n  CSSPaleGreen:= BlueGreenRedToBGRA(152, 251, 152);\n  CSSLightGreen:= BlueGreenRedToBGRA(144, 238, 144);\n  CSSMediumSpringGreen:= BlueGreenRedToBGRA(154, 250, 0);\n  CSSSpringGreen:= BlueGreenRedToBGRA(127, 255, 0);\n  CSSMediumSeaGreen:= BlueGreenRedToBGRA(113, 179, 60);\n  CSSSeaGreen:= BlueGreenRedToBGRA(87, 139, 46);\n  CSSForestGreen:= BlueGreenRedToBGRA(34, 139, 34);\n  CSSGreen:= BlueGreenRedToBGRA(0, 128, 0);\n  CSSDarkGreen:= BlueGreenRedToBGRA(0, 100, 0);\n  CSSYellowGreen:= BlueGreenRedToBGRA(50, 205, 154);\n  CSSOliveDrab:= BlueGreenRedToBGRA(35, 142, 107);\n  CSSOlive:= BlueGreenRedToBGRA(0, 128, 128);\n  CSSDarkOliveGreen:= BlueGreenRedToBGRA(47, 107, 85);\n  CSSMediumAquamarine:= BlueGreenRedToBGRA(170, 205, 102);\n  CSSDarkSeaGreen:= BlueGreenRedToBGRA(143, 188, 143);\n  CSSLightSeaGreen:= BlueGreenRedToBGRA(170, 178, 32);\n  CSSDarkCyan:= BlueGreenRedToBGRA(139, 139, 0);\n  CSSTeal:= BlueGreenRedToBGRA(128, 128, 0);\n\n  //Blue/Cyan colors\n  CSSAqua:= BlueGreenRedToBGRA(255, 255, 0);\n  CSSCyan:= BlueGreenRedToBGRA(255, 255, 0);\n  CSSLightCyan:= BlueGreenRedToBGRA(255, 255, 224);\n  CSSPaleTurquoise:= BlueGreenRedToBGRA(238, 238, 175);\n  CSSAquamarine:= BlueGreenRedToBGRA(212, 255, 127);\n  CSSTurquoise:= BlueGreenRedToBGRA(208, 224, 64);\n  CSSMediumTurquoise:= BlueGreenRedToBGRA(204, 209, 72);\n  CSSDarkTurquoise:= BlueGreenRedToBGRA(209, 206, 0);\n  CSSCadetBlue:= BlueGreenRedToBGRA(160, 158, 95);\n  CSSSteelBlue:= BlueGreenRedToBGRA(180, 130, 70);\n  CSSLightSteelBlue:= BlueGreenRedToBGRA(222, 196, 176);\n  CSSPowderBlue:= BlueGreenRedToBGRA(230, 224, 176);\n  CSSLightBlue:= BlueGreenRedToBGRA(230, 216, 173);\n  CSSSkyBlue:= BlueGreenRedToBGRA(235, 206, 135);\n  CSSLightSkyBlue:= BlueGreenRedToBGRA(250, 206, 135);\n  CSSDeepSkyBlue:= BlueGreenRedToBGRA(255, 191, 0);\n  CSSDodgerBlue:= BlueGreenRedToBGRA(255, 144, 30);\n  CSSCornflowerBlue:= BlueGreenRedToBGRA(237, 149, 100);\n  CSSRoyalBlue:= BlueGreenRedToBGRA(255, 105, 65);\n  CSSBlue:= BlueGreenRedToBGRA(255, 0, 0);\n  CSSMediumBlue:= BlueGreenRedToBGRA(205, 0, 0);\n  CSSDarkBlue:= BlueGreenRedToBGRA(139, 0, 0);\n  CSSNavy:= BlueGreenRedToBGRA(128, 0, 0);\n  CSSMidnightBlue:= BlueGreenRedToBGRA(112, 25, 25);\n\n  //Brown colors\n  CSSCornsilk:= BlueGreenRedToBGRA(220, 248, 255);\n  CSSBlanchedAlmond:= BlueGreenRedToBGRA(205, 235, 255);\n  CSSBisque:= BlueGreenRedToBGRA(196, 228, 255);\n  CSSNavajoWhite:= BlueGreenRedToBGRA(173, 222, 255);\n  CSSWheat:= BlueGreenRedToBGRA(179, 222, 245);\n  CSSBurlyWood:= BlueGreenRedToBGRA(135, 184, 222);\n  CSSTan:= BlueGreenRedToBGRA(140, 180, 210);\n  CSSRosyBrown:= BlueGreenRedToBGRA(143, 143, 188);\n  CSSSandyBrown:= BlueGreenRedToBGRA(96, 164, 244);\n  CSSGoldenrod:= BlueGreenRedToBGRA(32, 165, 218);\n  CSSDarkGoldenrod:= BlueGreenRedToBGRA(11, 134, 184);\n  CSSPeru:= BlueGreenRedToBGRA(63, 133, 205);\n  CSSChocolate:= BlueGreenRedToBGRA(30, 105, 210);\n  CSSSaddleBrown:= BlueGreenRedToBGRA(19, 69, 139);\n  CSSSienna:= BlueGreenRedToBGRA(45, 82, 160);\n  CSSBrown:= BlueGreenRedToBGRA(42, 42, 165);\n  CSSMaroon:= BlueGreenRedToBGRA(0, 0, 128);\n\n  //White colors\n  CSSWhite:= BlueGreenRedToBGRA(255, 255, 255);\n  CSSSnow:= BlueGreenRedToBGRA(250, 250, 255);\n  CSSHoneydew:= BlueGreenRedToBGRA(240, 255, 250);\n  CSSMintCream:= BlueGreenRedToBGRA(250, 255, 245);\n  CSSAzure:= BlueGreenRedToBGRA(255, 255, 240);\n  CSSAliceBlue:= BlueGreenRedToBGRA(255, 248, 240);\n  CSSGhostWhite:= BlueGreenRedToBGRA(255, 248, 248);\n  CSSWhiteSmoke:= BlueGreenRedToBGRA(245, 245, 245);\n  CSSSeashell:= BlueGreenRedToBGRA(255, 245, 238);\n  CSSBeige:= BlueGreenRedToBGRA(220, 245, 245);\n  CSSOldLace:= BlueGreenRedToBGRA(230, 245, 253);\n  CSSFloralWhite:= BlueGreenRedToBGRA(240, 250, 255);\n  CSSIvory:= BlueGreenRedToBGRA(240, 255, 255);\n  CSSAntiqueWhite:= BlueGreenRedToBGRA(215, 235, 250);\n  CSSLinen:= BlueGreenRedToBGRA(230, 240, 250);\n  CSSLavenderBlush:= BlueGreenRedToBGRA(245, 240, 255);\n  CSSMistyRose:= BlueGreenRedToBGRA(255, 228, 255);\n\n  //Gray colors\n  CSSGainsboro:= BlueGreenRedToBGRA(220, 220, 220);\n  CSSLightGray:= BlueGreenRedToBGRA(211, 211, 211);\n  CSSSilver:= BlueGreenRedToBGRA(192, 192, 192);\n  CSSDarkGray:= BlueGreenRedToBGRA(169, 169, 169);\n  CSSGray:= BlueGreenRedToBGRA(128, 128, 128);\n  CSSDimGray:= BlueGreenRedToBGRA(105, 105, 105);\n  CSSLightSlateGray:= BlueGreenRedToBGRA(153, 136, 119);\n  CSSSlateGray:= BlueGreenRedToBGRA(144, 128, 112);\n  CSSDarkSlateGray:= BlueGreenRedToBGRA(79, 79, 47);\n  CSSBlack:= BlueGreenRedToBGRA(0, 0, 0);\n\n  CSSColors := TBGRAColorList.Create;\n  CSSColors.Add('AliceBlue',CSSAliceBlue);\n  CSSColors.Add('AntiqueWhite',CSSAntiqueWhite);\n  CSSColors.Add('Aqua',CSSAqua);\n  CSSColors.Add('Aquamarine',CSSAquamarine);\n  CSSColors.Add('Azure',CSSAzure);\n  CSSColors.Add('Beige',CSSBeige);\n  CSSColors.Add('Bisque',CSSBisque);\n  CSSColors.Add('Black',CSSBlack);\n  CSSColors.Add('BlanchedAlmond',CSSBlanchedAlmond);\n  CSSColors.Add('Blue',CSSBlue);\n  CSSColors.Add('BlueViolet',CSSBlueViolet);\n  CSSColors.Add('Brown',CSSBrown);\n  CSSColors.Add('BurlyWood',CSSBurlyWood);\n  CSSColors.Add('CadetBlue',CSSCadetBlue);\n  CSSColors.Add('Chartreuse',CSSChartreuse);\n  CSSColors.Add('Chocolate',CSSChocolate);\n  CSSColors.Add('Coral',CSSCoral);\n  CSSColors.Add('CornflowerBlue',CSSCornflowerBlue);\n  CSSColors.Add('Cornsilk',CSSCornsilk);\n  CSSColors.Add('Crimson',CSSCrimson);\n  CSSColors.Add('Cyan',CSSCyan);\n  CSSColors.Add('DarkBlue',CSSDarkBlue);\n  CSSColors.Add('DarkCyan',CSSDarkCyan);\n  CSSColors.Add('DarkGoldenrod',CSSDarkGoldenrod);\n  CSSColors.Add('DarkGray',CSSDarkGray);\n  CSSColors.Add('DarkGreen',CSSDarkGreen);\n  CSSColors.Add('DarkKhaki',CSSDarkKhaki);\n  CSSColors.Add('DarkMagenta',CSSDarkMagenta);\n  CSSColors.Add('DarkOliveGreen',CSSDarkOliveGreen);\n  CSSColors.Add('DarkOrange',CSSDarkOrange);\n  CSSColors.Add('DarkOrchid',CSSDarkOrchid);\n  CSSColors.Add('DarkRed',CSSDarkRed);\n  CSSColors.Add('DarkSalmon',CSSDarkSalmon);\n  CSSColors.Add('DarkSeaGreen',CSSDarkSeaGreen);\n  CSSColors.Add('DarkSlateBlue',CSSDarkSlateBlue);\n  CSSColors.Add('DarkSlateGray',CSSDarkSlateGray);\n  CSSColors.Add('DarkTurquoise',CSSDarkTurquoise);\n  CSSColors.Add('DarkViolet',CSSDarkViolet);\n  CSSColors.Add('DeepPink',CSSDeepPink);\n  CSSColors.Add('DeepSkyBlue',CSSDeepSkyBlue);\n  CSSColors.Add('DimGray',CSSDimGray);\n  CSSColors.Add('DodgerBlue',CSSDodgerBlue);\n  CSSColors.Add('FireBrick',CSSFireBrick);\n  CSSColors.Add('FloralWhite',CSSFloralWhite);\n  CSSColors.Add('ForestGreen',CSSForestGreen);\n  CSSColors.Add('Fuchsia',CSSFuchsia);\n  CSSColors.Add('Gainsboro',CSSGainsboro);\n  CSSColors.Add('GhostWhite',CSSGhostWhite);\n  CSSColors.Add('Gold',CSSGold);\n  CSSColors.Add('Goldenrod',CSSGoldenrod);\n  CSSColors.Add('Gray',CSSGray);\n  CSSColors.Add('Green',CSSGreen);\n  CSSColors.Add('GreenYellow',CSSGreenYellow);\n  CSSColors.Add('Honeydew',CSSHoneydew);\n  CSSColors.Add('HotPink',CSSHotPink);\n  CSSColors.Add('IndianRed',CSSIndianRed);\n  CSSColors.Add('Indigo',CSSIndigo);\n  CSSColors.Add('Ivory',CSSIvory);\n  CSSColors.Add('Khaki',CSSKhaki);\n  CSSColors.Add('Lavender',CSSLavender);\n  CSSColors.Add('LavenderBlush',CSSLavenderBlush);\n  CSSColors.Add('LawnGreen',CSSLawnGreen);\n  CSSColors.Add('LemonChiffon',CSSLemonChiffon);\n  CSSColors.Add('LightBlue',CSSLightBlue);\n  CSSColors.Add('LightCoral',CSSLightCoral);\n  CSSColors.Add('LightCyan',CSSLightCyan);\n  CSSColors.Add('LightGoldenrodYellow',CSSLightGoldenrodYellow);\n  CSSColors.Add('LightGray',CSSLightGray);\n  CSSColors.Add('LightGreen',CSSLightGreen);\n  CSSColors.Add('LightPink',CSSLightPink);\n  CSSColors.Add('LightSalmon',CSSLightSalmon);\n  CSSColors.Add('LightSeaGreen',CSSLightSeaGreen);\n  CSSColors.Add('LightSkyBlue',CSSLightSkyBlue);\n  CSSColors.Add('LightSlateGray',CSSLightSlateGray);\n  CSSColors.Add('LightSteelBlue',CSSLightSteelBlue);\n  CSSColors.Add('LightYellow',CSSLightYellow);\n  CSSColors.Add('Lime',CSSLime);\n  CSSColors.Add('LimeGreen',CSSLimeGreen);\n  CSSColors.Add('Linen',CSSLinen);\n  CSSColors.Add('Magenta',CSSMagenta);\n  CSSColors.Add('Maroon',CSSMaroon);\n  CSSColors.Add('MediumAquamarine',CSSMediumAquamarine);\n  CSSColors.Add('MediumBlue',CSSMediumBlue);\n  CSSColors.Add('MediumOrchid',CSSMediumOrchid);\n  CSSColors.Add('MediumPurple',CSSMediumPurple);\n  CSSColors.Add('MediumSeaGreen',CSSMediumSeaGreen);\n  CSSColors.Add('MediumSlateBlue',CSSMediumSlateBlue);\n  CSSColors.Add('MediumSpringGreen',CSSMediumSpringGreen);\n  CSSColors.Add('MediumTurquoise',CSSMediumTurquoise);\n  CSSColors.Add('MediumVioletRed',CSSMediumVioletRed);\n  CSSColors.Add('MidnightBlue',CSSMidnightBlue);\n  CSSColors.Add('MintCream',CSSMintCream);\n  CSSColors.Add('MistyRose',CSSMistyRose);\n  CSSColors.Add('Moccasin',CSSMoccasin);\n  CSSColors.Add('NavajoWhite',CSSNavajoWhite);\n  CSSColors.Add('Navy',CSSNavy);\n  CSSColors.Add('OldLace',CSSOldLace);\n  CSSColors.Add('Olive',CSSOlive);\n  CSSColors.Add('OliveDrab',CSSOliveDrab);\n  CSSColors.Add('Orange',CSSOrange);\n  CSSColors.Add('OrangeRed',CSSOrangeRed);\n  CSSColors.Add('Orchid',CSSOrchid);\n  CSSColors.Add('PaleGoldenrod',CSSPaleGoldenrod);\n  CSSColors.Add('PaleGreen',CSSPaleGreen);\n  CSSColors.Add('PaleTurquoise',CSSPaleTurquoise);\n  CSSColors.Add('PaleVioletRed',CSSPaleVioletRed);\n  CSSColors.Add('PapayaWhip',CSSPapayaWhip);\n  CSSColors.Add('PeachPuff',CSSPeachPuff);\n  CSSColors.Add('Peru',CSSPeru);\n  CSSColors.Add('Pink',CSSPink);\n  CSSColors.Add('Plum',CSSPlum);\n  CSSColors.Add('PowderBlue',CSSPowderBlue);\n  CSSColors.Add('Purple',CSSPurple);\n  CSSColors.Add('Red',CSSRed);\n  CSSColors.Add('RosyBrown',CSSRosyBrown);\n  CSSColors.Add('RoyalBlue',CSSRoyalBlue);\n  CSSColors.Add('SaddleBrown',CSSSaddleBrown);\n  CSSColors.Add('Salmon',CSSSalmon);\n  CSSColors.Add('SandyBrown',CSSSandyBrown);\n  CSSColors.Add('SeaGreen',CSSSeaGreen);\n  CSSColors.Add('Seashell',CSSSeashell);\n  CSSColors.Add('Sienna',CSSSienna);\n  CSSColors.Add('Silver',CSSSilver);\n  CSSColors.Add('SkyBlue',CSSSkyBlue);\n  CSSColors.Add('SlateBlue',CSSSlateBlue);\n  CSSColors.Add('SlateGray',CSSSlateGray);\n  CSSColors.Add('Snow',CSSSnow);\n  CSSColors.Add('SpringGreen',CSSSpringGreen);\n  CSSColors.Add('SteelBlue',CSSSteelBlue);\n  CSSColors.Add('Tan',CSSTan);\n  CSSColors.Add('Teal',CSSTeal);\n  CSSColors.Add('Thistle',CSSThistle);\n  CSSColors.Add('Tomato',CSSTomato);\n  CSSColors.Add('Turquoise',CSSTurquoise);\n  CSSColors.Add('Violet',CSSViolet);\n  CSSColors.Add('Wheat',CSSWheat);\n  CSSColors.Add('White',CSSWhite);\n  CSSColors.Add('WhiteSmoke',CSSWhiteSmoke);\n  CSSColors.Add('Yellow',CSSYellow);\n  CSSColors.Add('YellowGreen',CSSYellowGreen);\n  CSSColors.Finished;\n{$ENDIF}\n\n{$IFDEF INCLUDE_FINAL}\n{$UNDEF INCLUDE_FINAL}\n  CSSColors.Free;\n  VGAColors.Free;\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/darwinlib.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Search for libraries on MacOS.)\n\n  This unit allows to find the latest implementation of a library.\n  Note that between different versions, there may be incompatibilities\n  (in the signature of the functions or the record types). So make sure\n  the functions you are calling are stable or check the version of the\n  library once its loaded using one of its functions.\n}\nunit darwinlib;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils;\n\nfunction FindDarwinLibrary(AName: string; AMinimumVersion: integer = 0): string;\n\nimplementation\n\nfunction FindDarwinLibrary(AName: string; AMinimumVersion: integer): string;\nconst\n  BinPaths: array[0..2] of string = ('~/lib', '/usr/local/lib', '/usr/lib');\nvar i, version, errPos: integer;\n  searchRec: TRawByteSearchRec;\n  path, withoutDyLib, versionStr: RawByteString;\nbegin\n  if ExtractFileExt(AName)='.dylib' then AName := ChangeFileExt(AName,'');\n  versionStr := copy(ExtractFileExt(AName), 2);\n  val(versionStr, version, errPos);\n  if errPos = 0 then\n  begin\n    if AMinimumVersion = 0 then AMinimumVersion := version;\n    AName := ChangeFileExt(AName,'');\n  end;\n  result := '';\n  for i := 0 to high(BinPaths) do\n  begin\n    path := BinPaths[i]+PathDelim;\n    if FindFirst(path+AName+'.*.dylib', faAnyFile, searchRec)=0 then\n    repeat\n      withoutDyLib := ChangeFileExt(searchRec.Name, '');\n      versionStr := copy(ExtractFileExt(withoutDyLib), 2, 99);\n      val(versionStr, version, errPos);\n      if (errPos = 0) and ((version > AMinimumVersion) or ((version = AMinimumVersion) and (result = ''))) then\n      begin\n        result := path+searchRec.Name;\n        AMinimumVersion := version;\n      end;\n    until FindNext(searchRec)<>0;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/density256.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_FILLDENSITY}\n{$UNDEF INCLUDE_FILLDENSITY}\n\n\t{$IFNDEF PARAM_SINGLESEGMENT}\n\tbegin\n\t  { this loops fill one scanline of densities by adding 256 for full horizontal pixels }\n\n\t  for i := 0 to nbinter div 2 - 1 do\n\t  begin\n\t\tx1 := inter[i + i].interX;\n\t\tx2 := inter[i + i + 1].interX;\n\t{$ENDIF}\n\n\t\tif (x1 <> x2) and (x1 < maxx + 1) and (x2 >= minx) then\n\t\tbegin\n\t\t  if x1 < minx then\n\t\t\tx1 := minx;\n\t\t  if x2 >= maxx + 1 then\n\t\t\tx2 := maxx + 1;\n\t\t  ix1  := floor(x1);\n\t\t  ix2  := floor(x2);\n\n\t\t  //here it may go one pixel further if x2 is an integer\n\t\t  if ix1 < densMinx then densMinx := ix1;\n\t\t  if ix2 > densMaxx then densMaxx := ix2;\n\n\t\t  if ix1 = ix2 then\n\t\t\tinc( (density + (ix1 - minx))^, round((x2-ix2)*256) - round((x1-ix1)*256) )\n\t\t  else\n\t\t  begin\n\t\t\tinc( (density + (ix1 - minx))^, 256 - round((x1 - ix1)*256) );\n\t\t\tif (ix2 <= maxx) then\n\t\t\t  inc( (density + (ix2 - minx))^, round((x2 - ix2)*256) );\n\t\t  end;\n\t\t  if ix2 > ix1 + 1 then\n\t\t  begin\n\t\t\tAddDensity(density, ix1+1 - minx, ix2-(ix1+1), 256);\n\t\t  end;\n\t\tend;\n\t\n\t{$IFNDEF PARAM_SINGLESEGMENT}\n\t  end;\n\tend;\n\t{$ENDIF}\n\t\n{$UNDEF PARAM_SINGLESEGMENT}\n{$ENDIF}\n\n{$IFDEF INCLUDE_RENDERDENSITY}\n{$UNDEF INCLUDE_RENDERDENSITY}\n  begin\n    if densMinX <= densMaxX then\n    begin\n      if densMinX < minx then densMinX := minx;\n      if densMaxX > maxx then densMaxX := maxx;\n      xb := densMinX;\n      pdens := density + (densMinX-minx);\n      pDest := bmp.GetPixelAddress(densMinX,yb);\n      brush.MoveTo(@ctx, pDest,xb,yb);\n      while xb<=densMaxX do\n      begin\n        tempDensity:= pDens^;\n        inc(pDens);\n        inc(xb);\n        drawCount := 1;\n        if tempDensity>=256{$ifdef PARAM_ANTIALIASINGFACTOR} shl AntialiasPrecisionShift{$endif} then\n        begin\n          while (xb<=densMaxX) and (pDens^ >= 256{$ifdef PARAM_ANTIALIASINGFACTOR} shl AntialiasPrecisionShift{$endif}) do\n          begin\n            inc(xb);\n            inc(pDens);\n            inc(drawCount);\n          end;\n          brush.PutNextPixels(@ctx, 65535, drawCount);\n        end else\n        begin\n          while (xb<=densMaxX) and (pDens^ = tempDensity) do\n          begin\n            inc(xb);\n            inc(pDens);\n            inc(drawCount);\n          end;\n          if tempDensity = 0 then\n            brush.PutNextPixels(@ctx, 0, drawCount )\n          else\n          begin\n            dec(tempDensity);\n            brush.PutNextPixels(@ctx, (tempDensity shl (8{$ifdef PARAM_ANTIALIASINGFACTOR}-AntialiasPrecisionShift{$endif}))\n                              + (tempDensity{$ifdef PARAM_ANTIALIASINGFACTOR} shr (2*AntialiasPrecisionShift){$endif}), drawCount );\n          end;\n        end;\n      end;\n    end;\n  end\n  \n{$undef PARAM_ANTIALIASINGFACTOR}\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/expandedbitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Supplies a bitmap in linear RGB with word values (16-bit per channel) and transparency.)\n\n  Pixels are in TExpandedPixel format, based on linear RGB colorspace (TExpandedPixelColorspace).\n\n  This allows more accurate computation of colors, while still being rather fast. It uses a bit\n  more memory (8 bytes per pixel) compared to a TBGRABitmap (4 bytes per pixel).\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit ExpandedBitmap;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, UniversalDrawer;\n\ntype\n  {* Bitmap with TExpandedPixel format, linear RGB\n     with word values (16-bit per channel). }\n  TExpandedBitmap = class(specialize TGenericUniversalBitmap<TExpandedPixel,TExpandedPixelColorspace>)\n  protected\n    function InternalNew: TCustomUniversalBitmap; override;\n    procedure AssignTransparentPixel(out ADest); override;\n  public\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TExpandedPixel; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                              AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n  end;\n\nconst\n  ExpandedPixelTransparent : TExpandedPixel = (red:0; green:0; blue:0; alpha:0);\n\noperator = (const c1, c2: TExpandedPixel): boolean; inline;\n\nimplementation\n\noperator = (const c1, c2: TExpandedPixel): boolean;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    Result := True\n  else\n    Result := (c1.alpha = c2.alpha) and (c1.red = c2.red) and\n      (c1.green = c2.green) and (c1.blue = c2.blue);\nend;\n\nprocedure ExpandedSolidBrushSkipPixels({%H-}AFixedData: Pointer;\n    AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PExpandedPixel(AContextData^.Dest), ACount);\nend;\n\nprocedure ExpandedChunkSetPixels(\n    ASource: PExpandedPixel; ADest: PExpandedPixel;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + ((ASource^.alpha*alphaOver+32768) shr 16);\n      if finalAlpha <= 0 then ADest^ := ExpandedPixelTransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.alpha:= finalAlpha;\n        ADest^.red := (ADest^.red*residualAlpha +\n                     ASource^.red*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.green := (ADest^.green*residualAlpha +\n                     ASource^.green*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.blue := (ADest^.blue*residualAlpha +\n                     ASource^.blue*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure ExpandedSolidBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\nbegin\n  pDest := PExpandedPixel(AContextData^.Dest);\n  ExpandedChunkSetPixels( PExpandedPixel(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure ExpandedChunkDrawPixels(\n    ASource: PExpandedPixel; ADest: PExpandedPixel;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver, srcAlphaOver, finalAlpha, finalAlphaDiv2, residualAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha >= 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n  while ACount > 0 do\n  begin\n    srcAlphaOver := (ASource^.alpha*alphaOver+32768) shr 16;\n    if srcAlphaOver >= 65535 then\n      ADest^ := ASource^\n    else\n    begin\n      if srcAlphaOver >= 32768 then inc(srcAlphaOver);\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-srcAlphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + srcAlphaOver;\n      if finalAlpha <= 0 then ADest^ := ExpandedPixelTransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        ADest^.alpha:= finalAlpha;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.red := (ADest^.red*residualAlpha +\n                     ASource^.red*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n        ADest^.green := (ADest^.green*residualAlpha +\n                     ASource^.green*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n        ADest^.blue := (ADest^.blue*residualAlpha +\n                     ASource^.blue*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n      end;\n    end;\n    inc(ADest);\n    dec(ACount);\n    inc(PByte(ASource), ASourceStride);\n  end;\nend;\n\nprocedure ExpandedSolidBrushDrawPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\nbegin\n  pDest := PExpandedPixel(AContextData^.Dest);\n  ExpandedChunkDrawPixels( PExpandedPixel(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure ExpandedChunkXorPixels(\n    ASource: PExpandedPixel; ADest: PExpandedPixel;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\n  xored: TExpandedPixel;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      PQWord(ADest)^ := PQWord(ADest)^ xor PQWord(ASource)^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      PQWord(@xored)^ := PQWord(ADest)^ xor PQWord(ASource)^;\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + ((xored.alpha*alphaOver+32768) shr 16);\n      if finalAlpha <= 0 then ADest^ := ExpandedPixelTransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.alpha:= finalAlpha;\n        ADest^.red := (ADest^.red*residualAlpha +\n                     xored.red*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.green := (ADest^.green*residualAlpha +\n                     xored.green*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.blue := (ADest^.blue*residualAlpha +\n                     xored.blue*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure ExpandedSolidBrushXorPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\nbegin\n  pDest := PExpandedPixel(AContextData^.Dest);\n  ExpandedChunkXorPixels( PExpandedPixel(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\ntype\n  PExpandedPixelScannerBrushFixedData = ^TExpandedScannerBrushFixedData;\n  TExpandedScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    Conversion: TBridgedConversion;\n  end;\n\nprocedure ExpandedScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure ExpandedScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PExpandedPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TExpandedPixel), nil);\n      ExpandedChunkSetPixels(@buf, pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerChunkBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PExpandedPixel;\n  qty: Integer;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ExpandedChunkSetPixels(PExpandedPixel(psrc), pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedChunkSetPixelsExceptTransparent(\n    ASource: PExpandedPixel; ADest: PExpandedPixel;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      if ASource^.alpha = 65535 then ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      if ASource^.alpha = 65535 then\n      begin\n        residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n        finalAlpha := residualAlpha + AAlpha;\n        if finalAlpha <= 0 then ADest^ := ExpandedPixelTransparent else\n        begin\n          if finalAlpha > 65535 then finalAlpha := 65535;\n          finalAlphaDiv2 := finalAlpha shr 1;\n          ADest^.alpha:= finalAlpha;\n          ADest^.red := (ADest^.red*residualAlpha +\n                       ASource^.red*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n          ADest^.green := (ADest^.green*residualAlpha +\n                       ASource^.green*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n          ADest^.blue := (ADest^.blue*residualAlpha +\n                       ASource^.blue*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        end;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure ExpandedScannerChunkBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\n  qty: Integer;\n  psrc: Pointer;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ExpandedChunkSetPixelsExceptTransparent(PExpandedPixel(psrc), pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerConvertBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PExpandedPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TExpandedPixel), nil);\n      ExpandedChunkSetPixelsExceptTransparent(@buf, pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerChunkBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ExpandedChunkDrawPixels(PExpandedPixel(psrc), pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerConvertBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PExpandedPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TExpandedPixel), nil);\n      ExpandedChunkDrawPixels(@buf, pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerChunkBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      ExpandedChunkXorPixels(PExpandedPixel(psrc), pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedScannerConvertBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PExpandedPixel;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TExpandedPixel;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TExpandedPixel), nil);\n      ExpandedChunkXorPixels(@buf, pDest, AAlpha, qty, sizeof(TExpandedPixel) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure ExpandedMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\n  factor: UInt32or64;\nbegin\n  with PExpandedPixelScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PExpandedPixel(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PExpandedPixel(AContextData^.Dest);\n    if AAlpha = 65535 then\n    begin\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          if pMask^.gray >= 128 then\n            pDest^.alpha := (pDest^.alpha*(pMask^.gray+1)) shr 8\n          else pDest^.alpha := pDest^.alpha*pMask^.gray shr 8;\n          if pDest^.alpha = 0 then pDest^ := ExpandedPixelTransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end else\n    begin\n      factor := AAlpha + (AAlpha shr 8) + (AAlpha shr 14);\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.alpha := (pDest^.alpha*((factor*pMask^.gray+128) shr 8)) shr 16;\n          if pDest^.alpha = 0 then pDest^ := ExpandedPixelTransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end;\n    PExpandedPixel(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure ExpandedAlphaBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\n  alphaOver, residualAlpha, finalAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PExpandedPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PExpandedPixel(AContextData^.Dest);\n  if AAlpha=65535 then\n  begin\n    finalAlpha := PWord(AFixedData)^;\n    while ACount > 0 do\n    begin\n      pDest^.alpha := finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end else\n  begin\n    if AAlpha >= 32768 then alphaOver := AAlpha+1\n    else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      residualAlpha := (pDest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + (PWord(AFixedData)^*alphaOver+32768) shr 16;\n      if finalAlpha > 65535 then finalAlpha := 65535;\n      pDest^.alpha:= finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PExpandedPixel(AContextData^.Dest) := pDest;\nend;\n\nprocedure ExpandedAlphaBrushErasePixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PExpandedPixel;\n  alphaMul, finalAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PExpandedPixel(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PExpandedPixel(AContextData^.Dest);\n  if AAlpha<>65535 then\n    alphaMul := 65535-((PWord(AFixedData)^*AAlpha+32767) div 65535)\n  else\n    alphaMul := 65535-PWord(AFixedData)^;\n  if alphaMul >= 32768 then inc(alphaMul);\n  while ACount > 0 do\n  begin\n    finalAlpha := (pDest^.alpha*alphaMul+32768) shr 16;\n    if finalAlpha <= 0 then pDest^ := ExpandedPixelTransparent else\n      pDest^.alpha:= finalAlpha;\n    inc(pDest);\n    dec(ACount);\n  end;\n  PExpandedPixel(AContextData^.Dest) := pDest;\nend;\n\n{ TExpandedBitmap }\n\nfunction TExpandedBitmap.InternalNew: TCustomUniversalBitmap;\nbegin\n  Result:= TExpandedBitmap.Create;\nend;\n\nprocedure TExpandedBitmap.AssignTransparentPixel(out ADest);\nbegin\n  TExpandedPixel(ADest) := ExpandedPixelTransparent;\nend;\n\nclass procedure TExpandedBitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TExpandedPixel; ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace:= TExpandedPixelColorspace;\n  PExpandedPixel(@ABrush.FixedData)^ := AColor;\n  case ADrawMode of\n    dmSet: ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSetPixels;\n\n    dmSetExceptTransparent:\n      if AColor.alpha < 65535 then\n        ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSkipPixels\n      else\n      begin\n        ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSetPixels;\n        ABrush.DoesNothing := true;\n      end;\n\n    dmDrawWithTransparency,dmLinearBlend:\n      if AColor.alpha<=0 then\n      begin\n        ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end\n      else if AColor.alpha>=1 then\n        ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSetPixels\n      else\n        ABrush.InternalPutNextPixels:= @ExpandedSolidBrushDrawPixels;\n\n    dmXor: if PQWord(@AColor)^ = 0 then\n           begin\n             ABrush.InternalPutNextPixels:= @ExpandedSolidBrushSkipPixels;\n             ABrush.DoesNothing := true;\n           end else\n             ABrush.InternalPutNextPixels:= @ExpandedSolidBrushXorPixels;\n  end;\nend;\n\nclass procedure TExpandedBitmap.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer; AOffsetY: integer);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TExpandedPixelColorspace;\n  with PExpandedPixelScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @ExpandedScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if sourceSpace = TExpandedPixelColorspace then\n  begin\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @ExpandedScannerChunkBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @ExpandedScannerChunkBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @ExpandedScannerChunkBrushDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @ExpandedScannerChunkBrushXorPixels;\n    end;\n  end else\n  begin\n    with PExpandedPixelScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TExpandedPixelColorspace);\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @ExpandedScannerConvertBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @ExpandedScannerConvertBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @ExpandedScannerConvertBrushDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @ExpandedScannerConvertBrushXorPixels;\n    end;\n  end;\nend;\n\nclass procedure TExpandedBitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TExpandedPixelColorspace;\n  with PExpandedPixelScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @ExpandedScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @ExpandedMaskBrushApply;\nend;\n\nclass procedure TExpandedBitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, ExpandedPixelTransparent, dmDrawWithTransparency);\n    exit;\n  end;\n  ABrush.Colorspace:= TExpandedPixelColorspace;\n  PWord(@ABrush.FixedData)^ := AAlpha;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @ExpandedAlphaBrushErasePixels;\nend;\n\nclass procedure TExpandedBitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, ExpandedPixelTransparent, dmSet);\n    exit;\n  end;\n  ABrush.Colorspace:= TExpandedPixelColorspace;\n  PWord(@ABrush.FixedData)^ := AAlpha;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @ExpandedAlphaBrushSetPixels;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/extendedcolorspace.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\ntype\n  {* Definition of a point on the spectral locus in XYZ colorspace }\n  TSpectralLocusPoint = record\n    {** Wavelength }\n    W: Single;\n    {** Coordinates in XYZ colorspace }\n    X,Y,Z: Single;\n  end;\n  {* Definition of the illuminant lightness for a wavelength }\n  TIlluminantSpectrumPoint = record\n    {** Wavelength }\n    W: Single;\n    {** Y coordinate }\n    Y: Single;\n  end;\n  {* YCbCr colorspaces based on sRGB colorspace\n     (with some minor variations in the definition of the primary colors) }\n  TYCbCrStdColorspace = (ITUR601, ITUR601JPEG, ITUR709, ITUR709JPEG, SMPTE240M);\n  {* Parameters for a YCbCr colorspace }\n  TYCbCrStdParameters = packed record\n    LumaRed, LumaGreen, LumaBlue, MinY, ScaleY, MidC, ScaleC: single;\n  end;\n\n{$I spectraldata.inc}\n{$ENDIF}\n\ntype\n  {* Pointer to a reference white }\n  PXYZReferenceWhite = ^TXYZReferenceWhite;\n  {* Definition of a reference white }\n  TXYZReferenceWhite = packed record\n    {** Coordinates in XYZ colorspace (CIE 1931) }\n    X, Y, Z: single;\n    {** Viewing angle }\n    ObserverAngle: integer;\n    {** Name of illuminant }\n    Illuminant: string;\n    {** Coordinates in LMS colorspace (cone responses) }\n    L,M,S: single;\n  end;\n\n  {* Function signature to convert from one colorspace to another }\n  TColorspaceConvertArrayProc = procedure(ASource: pointer; ADest: Pointer; ACount: integer;\n                  ASourceStride:integer; ADestStride:integer; AReferenceWhite: PXYZReferenceWhite);\n\n  {* Color conversion involving two steps }\n  TBridgedConversion = record\n    ConvertToBridge,FinalConvert: TColorspaceConvertArrayProc;\n    procedure Convert(ASource: pointer; ADest: Pointer; ACount: integer;\n              ASourceStride:integer; ADestStride:integer; AReferenceWhite: PXYZReferenceWhite); inline;\n  end;\n\n  {* Color transparency }\n  TColorTransparency = (\n    {** Fully transparent }\n    ctFullyTransparent,\n    {** Semi-transparent (neither fully transparent nor opaque) }\n    ctSemiTransparent,\n    {** Fully opaque }\n    ctFullyOpaque);\n\n  {* Flag about a colorspace }\n  TColorspaceFlag = (\n    {** Reference white is fixed (relative to a certain illuminant).\n        Example: sRGB and AdobeRGB are fixed at D65 }\n    cfFixedReferenceWhite,\n    {** Reference white is not fixed, it can be changed. Example: XYZ }\n    cfMovableReferenceWhite,\n    {** Independent from reference white, it expresses subjective perception.\n        Example: L*a*b*, LCh }\n    cfReferenceWhiteIndependent,\n    {** Whether imaginary colors can be expressed (colors that cannot be\n        perceived in normal viewing conditions).\n        Example: XYZ, L*a*b*, LCh }\n    cfHasImaginaryColors);\n\n  {* Set of flags about a colorspace }\n  TColorspaceFlags = set of TColorspaceFlag;\n\n  TCustomColorspace = class;\n  {* Any colorspace class }\n  TColorspaceAny = class of TCustomColorspace;\n\n  {* Base class for a colorspace }\n  TCustomColorspace = class\n    class function GetChannelName(AIndex: integer): string; virtual; abstract;\n    class function GetChannelCount: integer; virtual; abstract;\n    class function IndexOfChannel(AName: string): integer;\n    class function IndexOfAlphaChannel: integer; virtual; abstract;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; virtual; abstract;\n    class function GetMaxValue(AIndex: integer): single; virtual; abstract;\n    class function GetMinValue(AIndex: integer): single; virtual; abstract;\n    class function GetChannelBitDepth(AIndex: integer): byte; virtual; abstract;\n    class function GetName: string; virtual; abstract;\n    class function GetSize: integer; virtual; abstract;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; virtual; abstract;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); virtual; abstract;\n    class procedure Convert(const ASource; out ADest; ADestColorspace: TColorspaceAny;\n                            ACount: integer = 1; AReferenceWhite: PXYZReferenceWhite = nil);\n    class function GetDirectConversion(ADestColorspace: TColorspaceAny): TColorspaceConvertArrayProc;\n    class function GetBridgedConversion(ADestColorspace: TColorspaceAny): TBridgedConversion;\n    class function GetFlags: TColorspaceFlags; virtual; abstract;\n  end;\n\n  {* @abstract(The collection of all colorspaces and conversions between them.)\n\n     Colorspaces are derived from TCustomColorspace type. Conversions are of TColorspaceConvertArrayProc type.\n\n     There may not be a direct conversion between two colorspaces. In this case, the conversion\n     is bridged with an intermediate colorspace.\n}\n  ColorspaceCollection = class\n  private\n    class var FColorspaces : array of TColorspaceAny;\n    class var FColorspaceCount: integer;\n    class var FColorspaceConversions: array of array of TColorspaceConvertArrayProc;\n  public\n    class function GetCount: integer; static;\n    class function GetItem(AIndex: integer): TColorspaceAny; static;\n    class function IndexOf(AColorspace: TColorspaceAny): integer; static;\n    class procedure Add(AColorspace: TColorspaceAny); static;\n    class procedure AddConversion(ASource: TColorspaceAny; ADest: TColorspaceAny; AConversion: TColorspaceConvertArrayProc); static;\n    class function GetDirectConversion(ASource: TColorspaceAny; ADest: TColorspaceAny): TColorspaceConvertArrayProc; static;\n    class function GetBridgedConversion(ASource: TColorspaceAny; ADest: TColorspaceAny): TBridgedConversion; static;\n  end;\n\ntype {* How to handle overflow when converting from XYZ }\n  TColorspaceOverflow =\n    {** Colors outside of target colorspace are converted to transparent }\n    (xroClipToTarget,\n    {** Each color channel is saturated independently (hue may be lost) }\n    xroSaturateEachChannel,\n    {** Hue is preserved by reducing intensity or saturation }\n    xroPreserveHue);\n\nvar\n  {** How to handle overflow when values are below the minimum values in RGB colorspace }\n  XYZToRGBOverflowMin : TColorspaceOverflow = xroSaturateEachChannel;\n  {** How to handle overflow when values are above the maximum values in RGB colorspace }\n  XYZToRGBOverflowMax : TColorspaceOverflow = xroSaturateEachChannel;\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I generatedcolorspace.inc}\n\n{ Converts a color from TBGRAPixel to TByteMask (grayscale) taking into account gamma correction }\nfunction BGRAToMask(const ABGRAPixel: TBGRAPixel): TByteMask;\n{ Converts a TExpandedPixel color to a TByteMask (grayscale) }\nfunction ExpandedPixelToByteMask(const AExpandedPixel: TExpandedPixel): TByteMask;\n{ Converts a TByteMask to a TBGRAPixel using the specified alpha value }\nfunction MaskToBGRA(const AMask: TByteMask; AAlpha: byte = 255): TBGRAPixel;\n{ Converts a TByteMask to a TExpandedPixel using the specified 8-bit alpha value }\nfunction ByteMaskToExpandedPixel(const AMask: TByteMask; AAlpha: byte = 255): TExpandedPixel;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{ Converts a TStdRGBA color to a TBGRAPixel (clamped to 0..255) }\nfunction StdRGBAToBGRAPixel(const AStdRGBA: TStdRGBA): TBGRAPixel;\n{ Converts a TStdRGBA color to a TFPColor (clamped to 0..65535) }\nfunction StdRGBAToFPColor(const AStdRGBA: TStdRGBA): TFPColor;\n{ Converts a TBGRAPixel color to a TSTdRGBA }\nfunction BGRAPixelToStdRGBA(const ABGRAPixel: TBGRAPixel): TStdRGBA;\n{ Converts a TFPColor color to a TStdRGBA }\nfunction FPColorToStdRGBA(const AFPColor: TFPColor): TStdRGBA;\n\n{ Handle overflow by bringing values to the range 0 to 1. The luma parameters indicate\n  the brightness of each RGB channel (typically green is brighter) }\nprocedure HandleLinearRGBAOverflow(var result: TLinearRGBA; LumaRed, LumaGreen, LumaBlue: single); inline;\n{ Converts a TLinearRGBA into a TExpandedPixel (clamped to 0..65535) }\nfunction LinearRGBAToExpandedPixel(const ALinearRGBA: TLinearRGBA): TExpandedPixel;\n{ Converts a TExpandedPixel to a TLinearRGBA }\nfunction ExpandedPixelToLinearRGBA(const AExpandedPixel: TExpandedPixel): TLinearRGBA;\n\n{ Converts a TExpandedPixel to a TStdRGBA (applying gamma compression) }\nfunction ExpandedPixelToStdRGBA(const AExpandedPixel: TExpandedPixel): TStdRGBA;\n{ Computes gamma compression of a 16-bit integer (linear value)\n  into a float value (non linear value) }\nfunction GammaCompressionWF(AValue: Word): single;\n{ Converts a TStdRGBA to a TExpandedPixel (applying gamma expansion) }\nfunction StdRGBAToExpandedPixel(const AStdRGBA: TStdRGBA): TExpandedPixel;\n{ Computes gamma expansion of a float (non linear value)\n  into a 16-bit integer (linear value) }\nfunction GammaExpansionFW(AValue: single): word;\n\nfunction LinearRGBAToXYZA(const ALinearRGBA: TLinearRGBA): TXYZA; overload;\nfunction LinearRGBAToXYZA(const ALinearRGBA: TLinearRGBA; const AReferenceWhite: TXYZReferenceWhite): TXYZA; overload;\nfunction XYZAToLinearRGBA(const AXYZA: TXYZA): TLinearRGBA; overload;\nfunction XYZAToLinearRGBA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA; overload;\nfunction ExpandedPixelToWordXYZA(const AExpandedPixel: TExpandedPixel): TWordXYZA; overload;\nfunction ExpandedPixelToWordXYZA(const AExpandedPixel: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite): TWordXYZA; overload;\nfunction XYZAToWordXYZA(const AXYZA: TXYZA): TWordXYZA;\nfunction WordXYZAToXYZA(const AWordXYZA: TWordXYZA): TXYZA;\nfunction WordXYZAToExpandedPixel(const AXYZA: TWordXYZA): TExpandedPixel; overload;\nfunction WordXYZAToExpandedPixel(const AXYZA: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel; overload;\nfunction XYZAToLabA(const AXYZA: TXYZA): TLabA; overload;\nfunction XYZAToLabA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TLabA; overload;\nfunction LabAToXYZA(const ALabA: TLabA): TXYZA; overload;\nfunction LabAToXYZA(const ALabA: TLabA; const AReferenceWhite: TXYZReferenceWhite): TXYZA; overload;\nfunction StdRGBAToLinearRGBA(const AStdRGBA: TStdRGBA): TLinearRGBA;\nfunction LinearRGBAToStdRGBA(const ALinearRGBA: TLinearRGBA): TStdRGBA;\nfunction StdRGBAToStdHSLA(const AStdRGBA: TStdRGBA): TStdHSLA;\nfunction StdHSLAToStdRGBA(const AStdHSLA: TStdHSLA): TStdRGBA;\nfunction StdRGBAToStdHSVA(const AStdRGBA: TStdRGBA): TStdHSVA;\nfunction StdHSVAToStdRGBA(const AStdHSVA: TStdHSVA): TStdRGBA;\nfunction StdHSLAToStdHSVA(const AStdHSLA: TStdHSLA): TStdHSVA;\nfunction StdHSVAToStdHSLA(const AStdHSVA: TStdHSVA): TStdHSLA;\nfunction StdRGBAToStdCMYK(const AStdRGBA: TStdRGBA): TStdCMYK;\nfunction StdCMYKToStdRGBA(const AStdCMYK: TStdCMYK; AAlpha: Single = 1): TStdRGBA;\nprocedure StdRGBToYCbCr(const R, G, B: single; const AParameters: TYCbCrStdParameters; out Y, Cb, Cr: Single); inline;\nprocedure YCbCrToStdRGB(const Y, Cb, Cr: Single; const AParameters: TYCbCrStdParameters; out R, G, B: Single); inline;\nfunction StdRGBAToYCbCr601(const AStdRGBA: TStdRGBA): TYCbCr601;\nfunction YCbCr601ToStdRGBA(const AYCbCr: TYCbCr601; AAlpha: Single = 1): TStdRGBA; overload;\nfunction YCbCr601ToStdRGBA(const AYCbCr: TYCbCr601; ALumaRed, ALumaGreen, ALumaBlue, AAlpha: Single): TStdRGBA; overload;\nfunction StdRGBAToYCbCr709(const AStdRGBA: TStdRGBA): TYCbCr709;\nfunction YCbCr709ToStdRGBA(const AYCbCr: TYCbCr709; AAlpha: Single = 1): TStdRGBA;\nfunction StdRGBAToYCbCr601JPEG(const AStdRGBA: TStdRGBA): TYCbCr601JPEG;\nfunction YCbCr601JPEGToStdRGBA(const AYCbCr: TYCbCr601JPEG; AAlpha: Single = 1): TStdRGBA;\nfunction StdRGBAToYCbCr709JPEG(const AStdRGBA: TStdRGBA): TYCbCr709JPEG;\nfunction YCbCr709JPEGToStdRGBA(const AYCbCr: TYCbCr709JPEG; AAlpha: Single = 1): TStdRGBA;\n\n{ Converts color from TLabA to TLChA }\nfunction LabAToLChA(const ALabA: TLabA): TLChA;\n{ Converts color from TLChA to TLabA }\nfunction LChAToLabA(const ALChA: TLChA): TLabA;\n\n{ Converts color from TAdobeRGBA to TXYZA using current reference white }\nfunction AdobeRGBAToXYZA(const ASource: TAdobeRGBA): TXYZA; overload;\n{ Converts color from TAdobeRGBA to TXYZA with specifed reference white }\nfunction AdobeRGBAToXYZA(const ASource: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite): TXYZA; overload;\n{ Converts color from TXYZA to TAdobeRGBA using current reference white }\nfunction XYZAToAdobeRGBA(const AXYZA: TXYZA): TAdobeRGBA; overload;\n{ Converts color from TXYZA to TAdobeRGBA using specifed reference white }\nfunction XYZAToAdobeRGBA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA; overload;\n\n{ Computes reflected color in XYZ for a given wavelength range }\nfunction SpectrumRangeReflectToXYZA(reflectance,wavelen1,wavelen2,alpha: single): TXYZA;\n{$ENDIF}\n\n{ Determines cone stimulations (_L_, _M_, _S_) from XYZ coordinates }\nprocedure XYZToLMS(const X,Y,Z: Single; out L,M,S: single);\n{ Determines XYZ coordinates from cone stimulations (_L_, _M_, _S_) }\nprocedure LMSToXYZ(const L,M,S: Single; out X,Y,Z: single);\n{ Perform chromatic adaptation from one reference white to another (floating point channels) }\nprocedure ChromaticAdaptXYZ(var X,Y,Z: single; const AFrom, ATo: TXYZReferenceWhite); inline;\n{ Perform chromatic adaptation from one reference white to another (16-bit integer channels) }\nprocedure ChromaticAdaptWordXYZ(var X,Y,Z: word; const AFrom, ATo: TXYZReferenceWhite); inline;\n\n{* Use the reference white, specified by viewing angle and illumant, when converting colors }\nprocedure SetReferenceWhite(AObserverAngle: integer; AIlluminant: string); overload;\n{* Use the specified reference white parameters when converting colors }\nprocedure SetReferenceWhite(AReferenceWhite: TXYZReferenceWhite); overload;\n{* Retrieves a copy of the current reference white used for color conversions }\nfunction GetReferenceWhite: TXYZReferenceWhite; overload;\n{* Gets a pointer to the current reference white used for color conversions }\nfunction GetReferenceWhiteIndirect: PXYZReferenceWhite; overload;\n{* Gets the reference white parameters by its viewing angle and illuminant }\nfunction GetReferenceWhite(AObserverAngle: integer; AIlluminant: string): TXYZReferenceWhite; overload;\n{* Gets a pointer to the reference white parameters by its viewing angle and illuminant }\nfunction GetReferenceWhiteIndirect(AObserverAngle: integer; AIlluminant: string): PXYZReferenceWhite; overload;\n\n{* Add a new referene white given the description }\nprocedure AddReferenceWhite(const AReferenceWhite: TXYZReferenceWhite); overload;\n{* Add a new referene white color for the given viewing angle and illuminant }\nprocedure AddReferenceWhite(AObserverAngle: integer; AIlluminant: string; AX, AY, AZ: single); overload;\n{* Returns the number of reference white that have been defined }\nfunction GetReferenceWhiteCount: integer;\n{* Gets the reference white by its index }\nfunction GetReferenceWhiteByIndex(AIndex: integer): TXYZReferenceWhite;\n\nvar\n  ReferenceWhite2D50, ReferenceWhite2D65, ReferenceWhite2E: TXYZReferenceWhite;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION} \n\n{ TBridgedConversion }\n\nprocedure TBridgedConversion.Convert(ASource: pointer; ADest: Pointer;\n  ACount: integer; ASourceStride: integer; ADestStride: integer;\n  AReferenceWhite: PXYZReferenceWhite);\nconst\n  bufSize = 512;\n  bufCount = 512 div sizeof(TExpandedPixel);\nvar\n  buf: array[0..bufSize-1] of byte;\n  psrc, pdest: PByte;\nbegin\n  if Assigned(ConvertToBridge) then\n  begin\n    psrc := PByte(ASource);\n    pdest := PByte(ADest);\n    while ACount > 0 do\n    begin\n      if ACount > bufCount then\n      begin\n        ConvertToBridge(psrc, @buf, bufCount, ASourceStride, sizeof(TExpandedPixel), AReferenceWhite);\n        FinalConvert(@buf, pdest, bufCount, sizeof(TExpandedPixel), ADestStride, AReferenceWhite);\n        inc(psrc, ASourceStride*bufCount);\n        inc(pdest, ADestStride*bufCount);\n        dec(ACount,bufCount);\n      end\n      else\n      begin\n        ConvertToBridge(psrc, @buf, ACount, ASourceStride, sizeof(TExpandedPixel), AReferenceWhite);\n        FinalConvert(@buf, pdest, ACount, sizeof(TExpandedPixel), ADestStride, AReferenceWhite);\n        break;\n      end;\n    end;\n  end else\n    FinalConvert(ASource,ADest,ACount,ASourceStride,ADestStride,AReferenceWhite);\nend;\n\n{ TCustomColorspace }\n\nclass function TCustomColorspace.IndexOfChannel(AName: string): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to GetChannelCount-1 do\n    if GetChannelName(i) = AName then exit(i);\n  exit(-1);\nend;\n\nclass procedure TCustomColorspace.Convert(const ASource;\n  out ADest; ADestColorspace: TColorspaceAny;\n  ACount: integer; AReferenceWhite: PXYZReferenceWhite);\nvar\n  conv: TBridgedConversion;\nbegin\n  if self = TCustomColorspace then\n    raise exception.Create('Cannot convert from abstract colorspace');\n  if self = ADestColorspace then\n    move(ASource, {%H-}ADest, self.GetSize * ACount)\n  else\n  begin\n    conv := ColorspaceCollection.GetBridgedConversion(self, ADestColorspace);\n    conv.Convert(@ASource,@ADest,ACount,self.GetSize,ADestColorspace.GetSize,AReferenceWhite);\n  end;\nend;\n\nclass function TCustomColorspace.GetDirectConversion(ADestColorspace: TColorspaceAny): TColorspaceConvertArrayProc;\nbegin\n  result := ColorspaceCollection.GetDirectConversion(self, ADestColorspace);\nend;\n\nclass function TCustomColorspace.GetBridgedConversion(\n  ADestColorspace: TColorspaceAny): TBridgedConversion;\nbegin\n  result := ColorspaceCollection.GetBridgedConversion(self, ADestColorspace);\nend;\n\n{ ColorspaceCollection }\n\nclass function ColorspaceCollection.GetCount: integer;\nbegin\n  result := FColorspaceCount;\nend;\n\nclass function ColorspaceCollection.GetItem(AIndex: integer): TColorspaceAny;\nbegin\n  if (AIndex < 0) or (AIndex >= FColorspaceCount) then\n    raise ERangeError.Create('Index out of bounds');\n  result := FColorspaces[AIndex];\nend;\n\nclass function ColorspaceCollection.IndexOf(AColorspace: TColorspaceAny): integer;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FColorspaceCount-1 do\n    if FColorspaces[i] = AColorspace then exit(i);\n  result := -1;\nend;\n\nclass procedure ColorspaceCollection.Add(AColorspace: TColorspaceAny);\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(FColorspaces) do\n    if FColorspaces[i] = AColorspace then exit;\n\n  if FColorspaceCount >= length(FColorspaces) then\n    setlength(FColorspaces, FColorspaceCount*2+8);\n  FColorspaces[FColorspaceCount] := AColorspace;\n  inc(FColorspaceCount);\nend;\n\nclass procedure ColorspaceCollection.AddConversion(ASource: TColorspaceAny;\n  ADest: TColorspaceAny; AConversion: TColorspaceConvertArrayProc);\nvar\n  idxSource, idxDest: Integer;\nbegin\n  idxSource := IndexOf(ASource);\n  if idxSource = -1 then raise exception.Create('Colorspace not registered');\n  idxDest := IndexOf(ADest);\n  if idxDest = -1 then raise exception.Create('Colorspace not registered');\n  if idxSource >= length(FColorspaceConversions) then\n    setlength(FColorspaceConversions, FColorspaceCount+4);\n  if idxDest >= length(FColorspaceConversions[idxSource]) then\n  setlength(FColorspaceConversions[idxSource], FColorspaceCount+4);\n  FColorspaceConversions[idxSource][idxDest] := AConversion;\nend;\n\nprocedure CopyColorsAny(ASource: pointer; ADest: Pointer; ACount: integer;\n         {%H-}ASourceStride:integer; ADestStride:integer; {%H-}AReferenceWhite: PXYZReferenceWhite);\nbegin\n  move(ASource^, ADest^, ADestStride * ACount);\nend;\n\nclass function ColorspaceCollection.GetDirectConversion(ASource: TColorspaceAny;\n  ADest: TColorspaceAny): TColorspaceConvertArrayProc;\nvar\n  idxSource, idxDest: Integer;\nbegin\n  if ASource = ADest then\n    exit(@CopyColorsAny);\n\n  idxSource := IndexOf(ASource);\n  if idxSource = -1 then raise exception.Create('Colorspace not registered');\n  idxDest := IndexOf(ADest);\n  if idxDest = -1 then raise exception.Create('Colorspace not registered');\n\n  if (idxSource < length(FColorspaceConversions)) and\n     (idxDest < length(FColorspaceConversions[idxSource])) then\n    result := FColorspaceConversions[idxSource][idxDest]\n  else\n    result := nil;\nend;\n\nclass function ColorspaceCollection.GetBridgedConversion(\n  ASource: TColorspaceAny; ADest: TColorspaceAny): TBridgedConversion;\nbegin\n  result.FinalConvert:= GetDirectConversion(ASource,ADest);\n  if result.FinalConvert<>nil then\n  begin // direct conversion so no bridge needed\n    result.ConvertToBridge:= nil;\n  end else\n  begin\n    result.ConvertToBridge:= GetDirectConversion(ASource,TExpandedPixelColorspace);\n    if result.ConvertToBridge=nil then raise exception.Create('Cannot convert '+ASource.GetName+' to bridge');\n    result.FinalConvert:= GetDirectConversion(TExpandedPixelColorspace,ADest);\n    if result.FinalConvert=nil then raise exception.Create('Cannot convert '+ADest.GetName+' from bridge');\n  end;\nend;\n\nvar\n  CurrentReferenceWhite: TXYZReferenceWhite;\n  ReferenceWhiteArray: array of TXYZReferenceWhite;\n\nfunction Clamp(const V, Min, Max: single): single;\nbegin\n  Result := V;\n  if Result < Min then\n    Result := Min\n  else if Result > Max then\n    Result := Max\n  else Result := V;\nend;\n\nfunction ClampInt(V, Min, Max: integer): integer;\nbegin\n  Result := V;\n  if Result < Min then\n    Result := Min\n  else if Result > Max then\n    Result := Max\n  else Result := V;\nend;\n\nfunction PositiveModSingle(x, cycle: single): single;\nbegin\n  if (x < 0) or (x >= cycle) then\n    Result := x - cycle * floor(x / cycle)\n  else\n    result := x;\nend;\n\nprocedure PrepareReferenceWhiteArray;\nbegin\n  //Source:http://www.easyrgb.com/index.php?X=MATH&H=15#text15\n  //domestic, tungsten-filament lighting\n  AddReferenceWhite(2, 'A', 1.09850, 1.00, 0.35585);\n  AddReferenceWhite(10, 'A', 1.11144, 1.00, 0.35200);\n  //deprecated daylight\n  AddReferenceWhite(2, 'C', 0.98074, 1.00, 1.18232);\n  AddReferenceWhite(10, 'C', 0.97285, 1.00, 1.16145);\n  //daylight\n  AddReferenceWhite(2, 'D50', 0.96422, 1.00, 0.82521);\n  AddReferenceWhite(10, 'D50', 0.96720, 1.00, 0.81427);\n  AddReferenceWhite(2, 'D55', 0.95682, 1.00, 0.92149);\n  AddReferenceWhite(10, 'D55', 0.95799, 1.00, 0.90926);\n  AddReferenceWhite(2, 'D65', 0.95047, 1.00, 1.08883);\n  AddReferenceWhite(10, 'D65', 0.94811, 1.00, 1.07304);\n  AddReferenceWhite(2, 'D75', 0.94972, 1.00, 1.22638);\n  AddReferenceWhite(10, 'D75', 0.94416, 1.00, 1.20641);\n  //equal energy\n  AddReferenceWhite(2, 'E', 1,1,1);\n  AddReferenceWhite(10, 'E', 1,1,1);\n  //fluorescent light\n  AddReferenceWhite(2, 'F2', 0.99187, 1.00, 0.67395);\n  AddReferenceWhite(10, 'F2', 1.03280, 1.00, 0.69026);\n  AddReferenceWhite(2, 'F7', 0.95044, 1.00, 1.08755);\n  AddReferenceWhite(10, 'F7', 0.95792, 1.00, 1.07687);\n  AddReferenceWhite(2, 'F11', 1.00966, 1.00, 0.64370);\n  AddReferenceWhite(10, 'F11', 1.03866, 1.00, 0.65627);\nend;\n\nprocedure SetReferenceWhite(AObserverAngle: integer; AIlluminant: string);\nvar\n  rp: TXYZReferenceWhite;\n  i: integer;\nbegin\n  for i := 0 to Length(ReferenceWhiteArray) - 1 do\n  begin\n    rp := ReferenceWhiteArray[i];\n    if (rp.ObserverAngle = AObserverAngle) and (rp.Illuminant = AIlluminant) then\n    begin\n      CurrentReferenceWhite := rp;\n      Break;\n    end;\n  end;\nend;\n\nprocedure SetReferenceWhite(AReferenceWhite: TXYZReferenceWhite);\nbegin\n  CurrentReferenceWhite := AReferenceWhite;\nend;\n\nfunction GetReferenceWhite: TXYZReferenceWhite;\nbegin\n  Result := CurrentReferenceWhite;\nend;\n\nfunction GetReferenceWhiteIndirect: PXYZReferenceWhite;\nbegin\n  result := @CurrentReferenceWhite;\nend;\n\nfunction GetReferenceWhite(AObserverAngle: integer; AIlluminant: string): TXYZReferenceWhite;\nvar\n  p: PXYZReferenceWhite;\nbegin\n  p := GetReferenceWhiteIndirect(AObserverAngle, AIlluminant);\n  if p = nil then raise exception.Create('Reference white not found');\n  result := p^;\nend;\n\nfunction GetReferenceWhiteIndirect(AObserverAngle: integer; AIlluminant: string): PXYZReferenceWhite;\nvar\n  rp: PXYZReferenceWhite;\n  i: integer;\nbegin\n  for i := 0 to Length(ReferenceWhiteArray) - 1 do\n  begin\n    rp := @ReferenceWhiteArray[i];\n    if (rp^.ObserverAngle = AObserverAngle) and (rp^.Illuminant = AIlluminant) then\n    begin\n      result := rp;\n      exit;\n    end;\n  end;\n  result := nil;\nend;\n\nprocedure AddReferenceWhite(const AReferenceWhite: TXYZReferenceWhite);\nbegin\n  if GetReferenceWhiteIndirect(AReferenceWhite.ObserverAngle, AReferenceWhite.Illuminant)<>nil then\n    raise exception.Create('Reference white already defined');\n  SetLength(ReferenceWhiteArray, Length(ReferenceWhiteArray) + 1);\n  ReferenceWhiteArray[Length(ReferenceWhiteArray) - 1] := AReferenceWhite;\n  with ReferenceWhiteArray[Length(ReferenceWhiteArray) - 1] do\n    XYZToLMS(X,Y,Z, L,M,S);\nend;\n\nprocedure AddReferenceWhite(AObserverAngle: integer; AIlluminant: string; AX, AY, AZ: single);\nvar\n  rp: TXYZReferenceWhite;\nbegin\n  rp.Illuminant := AIlluminant;\n  rp.ObserverAngle := AObserverAngle;\n  rp.X := AX;\n  rp.Y := AY;\n  rp.Z := AZ;\n  AddReferenceWhite(rp);\nend;\n\nfunction GetReferenceWhiteCount: integer;\nbegin\n  result := length(ReferenceWhiteArray);\nend;\n\nfunction GetReferenceWhiteByIndex(AIndex: integer): TXYZReferenceWhite;\nbegin\n  if (AIndex < 0) or (AIndex >= length(ReferenceWhiteArray)) then\n    raise ERangeError.Create('Index out of bounds');\n  result := ReferenceWhiteArray[AIndex];\nend;\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I generatedcolorspace.inc}\n\nfunction BGRAToMask(const ABGRAPixel: TBGRAPixel): TByteMask;\nvar\n  ec: TExpandedPixel;\nbegin\n  ec    := GammaExpansion(ABGRAPixel);\n  result.gray:= (ec.red * redWeightShl10 + ec.green * greenWeightShl10 +\n    ec.blue * blueWeightShl10 + (1 shl 9)) shr 18;\nend;\n\nfunction ExpandedPixelToByteMask(const AExpandedPixel: TExpandedPixel): TByteMask;\nbegin\n  result.gray:= (AExpandedPixel.red * redWeightShl10 + AExpandedPixel.green * greenWeightShl10 +\n    AExpandedPixel.blue * blueWeightShl10 + (1 shl 9)) shr 18;\nend;\n\nfunction MaskToBGRA(const AMask: TByteMask; AAlpha: byte): TBGRAPixel;\nbegin\n  result.red := GammaCompressionTab[AMask.gray+(AMask.gray shl 8)];\n  result.green := result.red;\n  result.blue := result.red;\n  result.alpha := AAlpha;\nend;\n\nfunction ByteMaskToExpandedPixel(const AMask: TByteMask; AAlpha: byte = 255): TExpandedPixel;\nbegin\n  result.red := AMask.gray+(AMask.gray shl 8);\n  result.green := result.red;\n  result.blue := result.red;\n  result.alpha := AAlpha;\nend;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction StdRGBAToBGRAPixel(const AStdRGBA: TStdRGBA): TBGRAPixel;\nbegin\n  with AStdRGBA do\n  begin\n    result.red := ClampInt(round(red * 255), 0, 255);\n    result.green := ClampInt(round(green * 255), 0, 255);\n    result.blue := ClampInt(round(blue * 255), 0, 255);\n    result.alpha := ClampInt(round(alpha * 255), 0, 255);\n  end;\nend;\n\nfunction StdRGBAToFPColor(const AStdRGBA: TStdRGBA): TFPColor;\nbegin\n  with AStdRGBA do\n  begin\n    result.red := ClampInt(round(red * 65535), 0, 65535);\n    result.green := ClampInt(round(green * 65535), 0, 65535);\n    result.blue := ClampInt(round(blue * 65535), 0, 65535);\n    result.alpha := ClampInt(round(alpha * 65535), 0, 65535);\n  end;\nend;\n\nfunction BGRAPixelToStdRGBA(const ABGRAPixel: TBGRAPixel): TStdRGBA;\nconst oneOver255 = 1/255;\nbegin\n  with ABGRAPixel do\n  begin\n    result.red := red * oneOver255;\n    result.green := green * oneOver255;\n    result.blue := blue * oneOver255;\n    result.alpha := alpha * oneOver255;\n  end;\nend;\n\nfunction FPColorToStdRGBA(const AFPColor: TFPColor): TStdRGBA;\nconst oneOver65535 = 1/65535;\nbegin\n  with AFPColor do\n  begin\n    result.red := red * oneOver65535;\n    result.green := green * oneOver65535;\n    result.blue := blue * oneOver65535;\n    result.alpha := alpha * oneOver65535;\n  end;\nend;\n\nfunction LinearRGBAToExpandedPixel(const ALinearRGBA: TLinearRGBA): TExpandedPixel;\nbegin\n  with ALinearRGBA do\n  begin\n    result.red := ClampInt(round(red * 65535), 0, 65535);\n    result.green := ClampInt(round(green * 65535), 0, 65535);\n    result.blue := ClampInt(round(blue * 65535), 0, 65535);\n    result.alpha := ClampInt(round(alpha * 65535), 0, 65535);\n  end;\nend;\n\nfunction ExpandedPixelToLinearRGBA(const AExpandedPixel: TExpandedPixel): TLinearRGBA;\nbegin\n  with AExpandedPixel do\n  begin\n    result.red := red / 65535;\n    result.green := green / 65535;\n    result.blue := blue / 65535;\n    result.alpha := alpha / 65535;\n  end;\nend;\n\nfunction GammaCompressionWF(AValue: Word): single;\nconst\n  oneOver255 = 1/255;\nvar\n  compByte: Byte;\n  reExp, reExp2: Word;\nbegin\n  if AValue=0 then exit(0) else\n  if AValue=65535 then exit(1) else\n  begin\n    compByte := GammaCompressionTab[AValue];\n    reExp := GammaExpansionTab[compByte];\n    if reExp = AValue then\n      result := compByte * oneOver255\n    else\n    if reExp < AValue then\n    begin\n      reExp2 := GammaExpansionTabHalf[compByte];\n      if reExp2<>reExp then\n        result := (compByte + (AValue-reExp)/(reExp2-reExp)*0.5)*oneOver255;\n    end else\n    begin\n      reExp2 := GammaExpansionTabHalf[compByte-1];\n      if reExp2<>reExp then\n        result := (compByte - (reExp-AValue)/(reExp-reExp2)*0.5)*oneOver255;\n    end;\n  end;\nend;\n\nfunction ExpandedPixelToStdRGBA(const AExpandedPixel: TExpandedPixel): TStdRGBA;\nbegin\n  result.red := GammaCompressionWF(AExpandedPixel.red);\n  result.green := GammaCompressionWF(AExpandedPixel.green);\n  result.blue := GammaCompressionWF(AExpandedPixel.blue);\n  result.alpha := AExpandedPixel.alpha/65535;\nend;\n\nfunction GammaExpansionFW(AValue: single): word;\nconst\n  fracShift = 10;\n  intRange = 255 shl fracShift;\n  fracAnd = (1 shl fracShift)-1;\n  fracHalf = 1 shl (fracShift-1);\n  fracQuarter = 1 shl (fracShift-2);\nvar\n  valInt, byteVal, fracPart: integer;\n  half: Word;\nbegin\n  if AValue <= 0 then exit(0)\n  else if AValue >= 1 then exit(65535);\n\n  valInt := round(AValue*intRange);\n  byteVal := valInt shr fracShift;\n  fracPart := valInt and fracAnd;\n  if fracPart >= fracHalf then\n  begin\n    result := GammaExpansionTab[byteVal+1];\n    half := GammaExpansionTabHalf[byteVal];\n    dec(result, ((result-half)*((1 shl fracShift)-fracPart)+fracQuarter) shr (fracShift-1));\n  end\n  else\n  begin\n    result := GammaExpansionTab[byteVal];\n    if fracPart > 0 then\n    begin\n      half := GammaExpansionTabHalf[byteVal];\n      inc(result, ((half-result)*fracPart+fracQuarter) shr (fracShift-1));\n    end;\n  end;\nend;\n\nfunction StdRGBAToExpandedPixel(const AStdRGBA: TStdRGBA): TExpandedPixel;\nbegin\n  result.red := GammaExpansionFW(AStdRGBA.red);\n  result.green := GammaExpansionFW(AStdRGBA.green);\n  result.blue := GammaExpansionFW(AStdRGBA.blue);\n  result.alpha:= round(AStdRGBA.alpha*65535);\nend;\n\nfunction LinearRGBAToXYZA(const ALinearRGBA: TLinearRGBA): TXYZA;\nbegin\n  result := LinearRGBAToXYZA(ALinearRGBA, GetReferenceWhiteIndirect^);\nend;\n\nfunction LinearRGBAToXYZA(const ALinearRGBA: TLinearRGBA;\n  const AReferenceWhite: TXYZReferenceWhite): TXYZA;\nbegin\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    with ALinearRGBA do\n    begin\n      result.X := red * 0.4360746 + green * 0.3850649 + blue * 0.1430804;\n      result.Y := red * 0.2225045 + green * 0.7168786 + blue * 0.0606169;\n      result.Z := red * 0.0139322 + green * 0.0971045 + blue * 0.7141733;\n    end;\n    ChromaticAdaptXYZ(result.X,result.Y,result.Z, ReferenceWhite2D50, AReferenceWhite);\n  end else\n  begin\n    with ALinearRGBA do\n    begin\n      result.X := red * 0.4124564 + green * 0.3575761 + blue * 0.1804375;\n      result.Y := red * 0.2126729 + green * 0.7151522 + blue * 0.0721750;\n      result.Z := red * 0.0193339 + green * 0.1191920 + blue * 0.9503041;\n    end;\n    ChromaticAdaptXYZ(result.X,result.Y,result.Z, ReferenceWhite2D65, AReferenceWhite);\n  end;\n  Result.alpha := ALinearRGBA.alpha;\nend;\n\nfunction XYZAToLinearRGBA(const AXYZA: TXYZA): TLinearRGBA;\nbegin\n  result := XYZAToLinearRGBA(AXYZA, GetReferenceWhiteIndirect^);\nend;\n\nfunction XYZAToLinearRGBA(const AXYZA: TXYZA;\n  const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA;\nvar\n  ad: TXYZA;\nbegin\n  ad := AXYZA;\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    ChromaticAdaptXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D50);\n    with ad do\n    begin\n      result.red := X * 3.1338561 + Y * (-1.6168667) + Z * (-0.4906146);\n      result.green := X * (-0.9787684) + Y * 1.9161415 + Z * 0.0334540;\n      result.blue := X * 0.0719453 + Y * (-0.2289914) + Z * 1.4052427;\n    end;\n  end else\n  begin\n    ChromaticAdaptXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D65);\n    with ad do\n    begin\n      result.red := X * 3.2404542 + Y * (-1.5371385) + Z * (-0.4985314);\n      result.green := X * (-0.9692660) + Y * 1.8760108 + Z * 0.0415560;\n      result.blue := X * 0.0556434 + Y * (-0.2040259) + Z * 1.0572252;\n    end;\n  end;\n  Result.alpha := AXYZA.alpha;\n  HandleLinearRGBAOverflow(result, 0.299, 0.587, 0.114);\nend;\n\nprocedure HandleLinearRGBAOverflow(var result: TLinearRGBA; LumaRed, LumaGreen, LumaBlue: single); inline;\nvar\n  minVal, lightVal, maxVal: single;\nbegin\n  if ( (XYZToRGBOverflowMin = xroClipToTarget) and ((result.red < 0) or\n       (result.green < 0) or (result.blue < 0)) ) or\n     ( (XYZToRGBOverflowMax = xroClipToTarget) and ((result.red > 1) or\n       (result.green > 1) or (result.blue > 1)) ) then\n  begin\n    result.red := 0;\n    result.green := 0;\n    result.blue := 0;\n    result.alpha := 0;\n    exit;\n  end;\n  case XYZToRGBOverflowMin of\n    xroPreserveHue: begin\n        minVal := min(min(result.red,result.green),result.blue);\n        if minVal<0 then\n        begin\n          lightVal := result.red*LumaRed+result.green*LumaGreen+result.blue*LumaBlue;\n          if lightVal <= 0 then\n          begin\n            result.red := 0;\n            result.green := 0;\n            result.blue := 0;\n          end else\n          begin\n            result.red := (result.red-minVal)*lightVal/(lightVal-minVal);\n            result.green := (result.green-minVal)*lightVal/(lightVal-minVal);\n            result.blue := (result.blue-minVal)*lightVal/(lightVal-minVal);\n          end;\n        end;\n      end;\n  end;\n  case XYZToRGBOverflowMax of\n    xroPreserveHue:\n      begin\n        maxVal := max(max(result.red,result.green),result.blue);\n        if maxVal > 1 then\n        begin\n          result.red := result.red/maxVal;\n          result.green := result.green/maxVal;\n          result.blue := result.blue/maxVal;\n        end;\n      end;\n    xroSaturateEachChannel:\n      begin\n        if result.red > 1 then result.red := 1;\n        if result.green > 1 then result.green := 1;\n        if result.blue > 1 then result.blue := 1;\n      end;\n  end;\n  if XYZToRGBOverflowMin = xroSaturateEachChannel then\n  begin\n    if result.red < 0 then result.red := 0;\n    if result.green < 0 then result.green := 0;\n    if result.blue < 0 then result.blue := 0;\n  end;\nend;\n\nfunction ExpandedPixelToWordXYZA(const AExpandedPixel: TExpandedPixel): TWordXYZA; overload;\nbegin\n  result := ExpandedPixelToWordXYZA(AExpandedPixel, GetReferenceWhiteIndirect^);\nend;\n\nfunction ExpandedPixelToWordXYZA(const AExpandedPixel: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite): TWordXYZA; overload;\nbegin\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    with AExpandedPixel do\n    begin\n      result.X := ClampInt(round((red * 0.4360746 + green * 0.3850649 + blue * 0.1430804)*(50000/65535)),0,65535);\n      result.Y := ClampInt(round((red * 0.2225045 + green * 0.7168786 + blue * 0.0606169)*(50000/65535)),0,65535);\n      result.Z := ClampInt(round((red * 0.0139322 + green * 0.0971045 + blue * 0.7141733)*(50000/65535)),0,65535);\n    end;\n    ChromaticAdaptWordXYZ(result.X,result.Y,result.Z, ReferenceWhite2D50, AReferenceWhite);\n  end else\n  begin\n    with AExpandedPixel do\n    begin\n      result.X := ClampInt(round((red * 0.4124564 + green * 0.3575761 + blue * 0.1804375)*(50000/65535)),0,65535);\n      result.Y := ClampInt(round((red * 0.2126729 + green * 0.7151522 + blue * 0.0721750)*(50000/65535)),0,65535);\n      result.Z := ClampInt(round((red * 0.0193339 + green * 0.1191920 + blue * 0.9503041)*(50000/65535)),0,65535);\n    end;\n    ChromaticAdaptWordXYZ(result.X,result.Y,result.Z, ReferenceWhite2D65, AReferenceWhite);\n  end;\n  Result.alpha := AExpandedPixel.alpha;\nend;\n\nfunction WordXYZAToExpandedPixel(const AXYZA: TWordXYZA): TExpandedPixel; overload;\nbegin\n  result := WordXYZAToExpandedPixel(AXYZA, GetReferenceWhiteIndirect^);\nend;\n\nfunction WordXYZAToExpandedPixel(const AXYZA: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel; overload;\nvar\n  minVal, lightVal, maxVal,\n  r,g,b, valRangeDiv2: Int32or64;\n  ad: TWordXYZA;\nbegin\n  ad := AXYZA;\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    ChromaticAdaptWordXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D50);\n    with ad do\n    begin\n      r := round((X * 3.1338561 + Y * (-1.6168667) + Z * (-0.4906146))*(65535/50000));\n      g := round((X * (-0.9787684) + Y * 1.9161415 + Z * 0.0334540)*(65535/50000));\n      b := round((X * 0.0719453 + Y * (-0.2289914) + Z * 1.4052427)*(65535/50000));\n    end;\n  end else\n  begin\n      ChromaticAdaptWordXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D65);\n    with ad do\n    begin\n      r := round((X * 3.2404542 + Y * (-1.5371385) + Z * (-0.4985314))*(65535/50000));\n      g := round((X * (-0.9692660) + Y * 1.8760108 + Z * 0.0415560)*(65535/50000));\n      b := round((X * 0.0556434 + Y * (-0.2040259) + Z * 1.0572252)*(65535/50000));\n    end;\n  end;\n  if ( (XYZToRGBOverflowMin = xroClipToTarget) and ((r < 0) or\n       (g < 0) or (b < 0)) ) or\n     ( (XYZToRGBOverflowMax = xroClipToTarget) and ((r > 65535) or\n       (g > 65535) or (b > 65535)) ) then\n  begin\n    result.red := 0;\n    result.green := 0;\n    result.blue := 0;\n    result.alpha := 0;\n    exit;\n  end;\n  case XYZToRGBOverflowMin of\n    xroPreserveHue: begin\n        minVal := min(min(r,g),b);\n        if minVal<0 then\n        begin\n          lightVal := r*redWeightShl10 + g*greenWeightShl10\n                    + b*blueWeightShl10;\n          if lightVal <= 0 then\n          begin\n            result.red := 0;\n            result.green := 0;\n            result.blue := 0;\n            Result.alpha := AXYZA.alpha;\n            exit;\n          end else\n          begin\n            lightVal := (lightVal+512) shr 10;\n            valRangeDiv2 := (lightVal-minVal) shr 1;\n            r := (int64(r-minVal)*lightVal+valRangeDiv2) div (lightVal-minVal);\n            g := (int64(g-minVal)*lightVal+valRangeDiv2) div (lightVal-minVal);\n            b := (int64(b-minVal)*lightVal+valRangeDiv2) div (lightVal-minVal);\n          end;\n        end;\n      end;\n  end;\n  case XYZToRGBOverflowMax of\n    xroPreserveHue:\n      begin\n        maxVal := max(max(r,g),b);\n        if maxVal > 65535 then\n        begin\n          r := (int64(r)*65535+(maxVal shr 1)) div maxVal;\n          g := (int64(g)*65535+(maxVal shr 1)) div maxVal;\n          b := (int64(b)*65535+(maxVal shr 1)) div maxVal;\n        end;\n      end;\n    xroSaturateEachChannel:\n      begin\n        if r > 65535 then r := 65535;\n        if g > 65535 then g := 65535;\n        if b > 65535 then b := 65535;\n      end;\n  end;\n  if XYZToRGBOverflowMin = xroSaturateEachChannel then\n  begin\n    if r < 0 then r := 0;\n    if g < 0 then g := 0;\n    if b < 0 then b := 0;\n  end;\n  result.red := r;\n  result.green := g;\n  result.blue := b;\n  Result.alpha := AXYZA.alpha;\nend;\n\nfunction XYZAToWordXYZA(const AXYZA: TXYZA): TWordXYZA;\nbegin\n  result.X := ClampInt(round(AXYZA.X*50000),0,65535);\n  result.Y := ClampInt(round(AXYZA.Y*50000),0,65535);\n  result.Z := ClampInt(round(AXYZA.Z*50000),0,65535);\n  result.alpha := round(AXYZA.alpha*65535);\nend;\n\nfunction WordXYZAToXYZA(const AWordXYZA: TWordXYZA): TXYZA;\nconst oneOver50000 = 1/50000;\nbegin\n  result.X := AWordXYZA.X*oneOver50000;\n  result.Y := AWordXYZA.Y*oneOver50000;\n  result.Z := AWordXYZA.Z*oneOver50000;\n  result.alpha:= AWordXYZA.alpha*(1/65535);\nend;\n\nfunction XYZAToLabA(const AXYZA: TXYZA): TLabA;\nbegin\n  Result := XYZAToLabA(AXYZA, GetReferenceWhiteIndirect^);\nend;\n\nfunction XYZAToLabA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TLabA;\nvar\n  xp, yp, zp: double;\nbegin\n  xp := AXYZA.X / AReferenceWhite.X;\n  yp := AXYZA.Y / AReferenceWhite.Y;\n  zp := AXYZA.Z / AReferenceWhite.Z;\n  if xp > 0.008856 then\n    xp := Power(xp, 1 / 3)\n  else\n    xp := (7.787 * xp) + 0.138;\n  if yp > 0.008856 then\n    yp := Power(yp, 1 / 3)\n  else\n    yp := (7.787 * yp) + 0.138;\n  if zp > 0.008856 then\n    zp := Power(zp, 1 / 3)\n  else\n    zp := (7.787 * zp) + 0.138;\n\n  result.L := Clamp((116 * yp) - 16, 0, 100);\n  result.a := 500 * (xp - yp);\n  result.b := 200 * (yp - zp);\n  Result.Alpha := AXYZA.alpha;\nend;\n\nfunction LabAToXYZA(const ALabA: TLabA): TXYZA;\nbegin\n  Result := LabAToXYZA(ALabA, GetReferenceWhiteIndirect^);\nend;\n\nfunction LabAToXYZA(const ALabA: TLabA; const AReferenceWhite: TXYZReferenceWhite): TXYZA;\nvar\n  xp, yp, zp: double;\nbegin\n  yp := (ALabA.L + 16) / 116;\n  xp := ALabA.a / 500 + yp;\n  zp := yp - ALabA.b / 200;\n  if yp > 0.2069 then\n    yp := IntPower(yp, 3)\n  else\n    yp := (yp - 0.138) / 7.787;\n  if xp > 0.2069 then\n    xp := IntPower(xp, 3)\n  else\n    xp := (xp - 0.138) / 7.787;\n  if zp > 0.2069 then\n    zp := IntPower(zp, 3)\n  else\n    zp := (zp - 0.138) / 7.787;\n  Result.X := AReferenceWhite.X * xp;\n  Result.Y := AReferenceWhite.Y * yp;\n  Result.Z := AReferenceWhite.Z * zp;\n  Result.alpha := ALabA.Alpha;\nend;\n\nfunction StdRGBAToStdHSVA(const AStdRGBA: TStdRGBA): TStdHSVA;\nvar\n  Delta, mini: single;\nbegin\n  with AStdRGBA do\n  begin\n    result.value := max(max(red, green), blue);\n    mini := min(min(red, green), blue);\n    Delta := result.value - mini;\n\n    if result.value = 0.0 then\n      result.saturation := 0\n    else\n      result.saturation := Delta / result.value;\n\n    if result.saturation = 0.0 then\n      result.hue := 0\n    else\n    begin\n      if red = result.value then\n        result.hue := 60.0 * (green - blue) / Delta\n      else\n      if green = result.value then\n        result.hue := 120.0 + 60.0 * (blue - red) / Delta\n      else\n      {if blue = result.value then}\n        result.hue := 240.0 + 60.0 * (red - green) / Delta;\n\n      if result.hue < 0.0 then\n        IncF(result.hue, 360.0);\n    end;\n    result.alpha := alpha;\n  end;\nend;\n\nfunction StdHSVAToStdRGBA(const AStdHSVA: TStdHSVA): TStdRGBA;\nvar\n  C, X, M, rp, gp, bp, sp, vp: single;\n  h360: single;\nbegin\n  vp := AStdHSVA.value;\n  sp := AStdHSVA.saturation;\n  C := Vp * sp;\n  h360 := PositiveModSingle(AStdHSVA.hue, 360);\n  X := C * (1 - abs(PositiveModSingle(h360 / 60, 2) - 1));\n  m := vp - c;\n  rp := 0;\n  gp := 0;\n  bp := 0;\n  case floor(h360) of\n    -1..59:\n    begin\n      rp := C;\n      gp := X;\n      bp := 0;\n    end;\n    60..119:\n    begin\n      rp := X;\n      gp := C;\n      bp := 0;\n    end;\n    120..179:\n    begin\n      rp := 0;\n      gp := C;\n      bp := X;\n    end;\n    180..239:\n    begin\n      rp := 0;\n      gp := X;\n      bp := C;\n    end;\n    240..299:\n    begin\n      rp := X;\n      gp := 0;\n      bp := C;\n    end;\n    300..359:\n    begin\n      rp := C;\n      gp := 0;\n      bp := X;\n    end;\n  end;\n  result.red := rp + m;\n  result.green := gp + m;\n  result.blue := bp + m;\n  result.alpha := AStdHSVA.alpha;\nend;\n\nfunction StdHSLAToStdHSVA(const AStdHSLA: TStdHSLA): TStdHSVA;\nvar\n  s, l, v: single;\nbegin\n  Result.hue := AStdHSLA.hue;\n  s := AStdHSLA.saturation;\n  l := AStdHSLA.lightness;\n  v := (2 * l + s * (1 - abs(2 * l - 1))) / 2;\n  if v <> 0 then\n    Result.saturation := 2 * (v - l) / v\n  else\n    Result.saturation := 0;\n  Result.value := v;\nend;\n\nfunction StdHSVAToStdHSLA(const AStdHSVA: TStdHSVA): TStdHSLA;\nvar\n  s, v, l: single;\nbegin\n  Result.hue := AStdHSVA.hue;\n  s := AStdHSVA.saturation;\n  v := AStdHSVA.value;\n  l := 0.5 * v * (2 - s);\n  if l <> 0 then\n    Result.saturation := v * s / (1 - abs(2 * l - 1))\n  else\n    Result.saturation := 0;\n  Result.lightness := l;\nend;\n\nfunction StdRGBAToStdCMYK(const AStdRGBA: TStdRGBA): TStdCMYK;\nbegin\n  with AStdRGBA do\n  begin\n    result.K := 1 - max(max(red, green), blue);\n    if result.K >= 1 then\n    begin\n      result.C := 0;\n      result.M := 0;\n      result.Y := 0;\n    end\n    else\n    begin\n      result.C := 1 - red / (1 - result.K);\n      result.M := 1 - green / (1 - result.K);\n      result.Y := 1 - blue / (1 - result.K);\n    end;\n  end;\nend;\n\nfunction StdCMYKToStdRGBA(const AStdCMYK: TStdCMYK; AAlpha: Single = 1): TStdRGBA;\nbegin\n  with AStdCMYK do\n  begin\n    result.red := (1 - C) * (1 - K);\n    result.green := (1 - M) * (1 - K);\n    result.blue := (1 - Y) * (1 - K);\n    result.alpha := AAlpha;\n  end;\nend;\n\nprocedure StdRGBToYCbCr(const R, G, B: single;\n  const AParameters: TYCbCrStdParameters; out Y, Cb, Cr: Single);\nvar UnscaledY: Single;\nbegin\n  with AParameters do\n  begin\n    UnscaledY := LumaRed * R + LumaGreen * G + LumaBlue * B;\n    Cb := MidC + (B - UnscaledY) / (1 - LumaBlue) * ScaleC;\n    Cr := MidC + (R - UnscaledY) / (1 - LumaRed) * ScaleC;\n    Y := MinY + UnscaledY * ScaleY;\n  end;\nend;\n\nprocedure YCbCrToStdRGB(const Y, Cb, Cr: Single;\n  const AParameters: TYCbCrStdParameters; out R, G, B: Single);\nvar UnscaledY, PbLuma, PrLuma: Single;\nbegin\n  with AParameters do\n  begin\n    UnscaledY := (Y - MinY) / ScaleY;\n    PbLuma := (Cb - MidC) / ScaleC * (1 - LumaBlue);\n    PrLuma := (Cr - MidC) / ScaleC * (1 - LumaRed);\n    B := UnscaledY + PbLuma;\n    R := UnscaledY + PrLuma;\n    G := UnscaledY - (LumaBlue * PbLuma + LumaRed * PrLuma) / LumaGreen;\n  end;\nend;\n\nfunction StdRGBAToYCbCr601(const AStdRGBA: TStdRGBA): TYCbCr601;\nbegin\n  With AStdRGBA, result do StdRGBToYCbCr(red, green, blue, YCbCrStdParameters[ITUR601], Y, Cb, Cr);\nend;\n\nfunction YCbCr601ToStdRGBA(const AYCbCr: TYCbCr601; AAlpha: Single): TStdRGBA;\nbegin\n  With AYCbCr, result do\n  begin\n    YCbCrToStdRGB(Y, Cb, Cr, YCbCrStdParameters[ITUR601], red, green, blue);\n    alpha:= AAlpha;\n    with YCbCrStdParameters[ITUR601] do\n      HandleLinearRGBAOverflow(PLinearRGBA(@result)^, LumaRed, LumaGreen, LumaBlue);\n  end;\nend;\n\nfunction YCbCr601ToStdRGBA(const AYCbCr: TYCbCr601; ALumaRed, ALumaGreen, ALumaBlue, AAlpha: Single): TStdRGBA;\nvar\n   userParams :TYCbCrStdParameters;\n\nbegin\n  userParams :=YCbCrStdParameters[ITUR601];\n  userParams.LumaRed:=ALumaRed;\n  userParams.LumaGreen:=ALumaGreen;\n  userParams.LumaBlue:=ALumaBlue;\n\n  With AYCbCr, result do\n  begin\n    YCbCrToStdRGB(Y, Cb, Cr, userParams, red, green, blue);\n    alpha:= AAlpha;\n    with YCbCrStdParameters[ITUR601] do\n      HandleLinearRGBAOverflow(PLinearRGBA(@result)^, LumaRed, LumaGreen, LumaBlue);\n  end;\nend;\n\nfunction StdRGBAToYCbCr709(const AStdRGBA: TStdRGBA): TYCbCr709;\nbegin\n  With AStdRGBA, result do StdRGBToYCbCr(red, green, blue, YCbCrStdParameters[ITUR709], Y, Cb, Cr);\nend;\n\nfunction YCbCr709ToStdRGBA(const AYCbCr: TYCbCr709; AAlpha: Single): TStdRGBA;\nbegin\n  With AYCbCr, result do\n  begin\n    YCbCrToStdRGB(Y, Cb, Cr, YCbCrStdParameters[ITUR709], red, green, blue);\n    alpha:= AAlpha;\n    with YCbCrStdParameters[ITUR709] do\n      HandleLinearRGBAOverflow(PLinearRGBA(@result)^, LumaRed, LumaGreen, LumaBlue);\n  end;\nend;\n\nfunction StdRGBAToYCbCr601JPEG(const AStdRGBA: TStdRGBA): TYCbCr601JPEG;\nbegin\n  With AStdRGBA, result do StdRGBToYCbCr(red, green, blue, YCbCrStdParameters[ITUR601JPEG], Y, Cb, Cr);\nend;\n\nfunction YCbCr601JPEGToStdRGBA(const AYCbCr: TYCbCr601JPEG; AAlpha: Single): TStdRGBA;\nbegin\n  With AYCbCr, result do\n  begin\n    YCbCrToStdRGB(Y, Cb, Cr, YCbCrStdParameters[ITUR601JPEG], red, green, blue);\n    alpha:= AAlpha;\n    with YCbCrStdParameters[ITUR601JPEG] do\n      HandleLinearRGBAOverflow(PLinearRGBA(@result)^, LumaRed, LumaGreen, LumaBlue);\n  end;\nend;\n\nfunction StdRGBAToYCbCr709JPEG(const AStdRGBA: TStdRGBA): TYCbCr709JPEG;\nbegin\n  With AStdRGBA, result do StdRGBToYCbCr(red, green, blue, YCbCrStdParameters[ITUR709JPEG], Y, Cb, Cr);\nend;\n\nfunction YCbCr709JPEGToStdRGBA(const AYCbCr: TYCbCr709JPEG; AAlpha: Single): TStdRGBA;\nbegin\n  With AYCbCr, result do\n  begin\n    YCbCrToStdRGB(Y, Cb, Cr, YCbCrStdParameters[ITUR709JPEG], red, green, blue);\n    alpha:= AAlpha;\n    with YCbCrStdParameters[ITUR709JPEG] do\n      HandleLinearRGBAOverflow(PLinearRGBA(@result)^, LumaRed, LumaGreen, LumaBlue);\n  end;\nend;\n\nfunction LabAToLChA(const ALabA: TLabA): TLChA;\nvar\n  a, b, HRad: single;\nbegin\n  a := ALabA.a;\n  b := ALabA.b;\n  HRad := ArcTan2(b, a);\n  if HRad >= 0 then\n    result.H := (HRad / PI) * 180\n  else\n    result.H := 360 - (ABS(HRad) / PI) * 180;\n  result.L := ALabA.L;\n  result.C := SQRT(a*a + b*b);\n  result.alpha := ALabA.Alpha;\nend;\n\nfunction LChAToLabA(const ALChA: TLChA): TLabA;\nbegin\n  result.L := ALChA.L;\n  result.a := cos(DegToRad(ALChA.h)) * ALChA.C;\n  result.b := sin(DegToRad(ALChA.h)) * ALChA.C;\n  result.Alpha:= ALChA.alpha;\nend;\n\nfunction AdobeRGBAToXYZA(const ASource: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite): TXYZA;\nvar R,G,B: single;\nbegin\n  R := GammaExpansionTab[ASource.red]/65535;\n  G := GammaExpansionTab[ASource.green]/65535;\n  B := GammaExpansionTab[ASource.blue]/65535;\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    result.X := R*0.6097559 + G*0.2052401 + B*0.1492240;\n    result.Y := R*0.3111242 + G*0.6256560 + B*0.0632197;\n    result.Z := R*0.0194811 + G*0.0608902 + B*0.7448387;\n    ChromaticAdaptXYZ(result.X,result.Y,result.Z, ReferenceWhite2D50, AReferenceWhite);\n  end else\n  begin\n    result.X := R*0.5767309 + G*0.1855540 + B*0.1881852;\n    result.Y := R*0.2973769 + G*0.6273491 + B*0.0752741;\n    result.Z := R*0.0270343 + G*0.0706872 + B*0.9911085;\n    ChromaticAdaptXYZ(result.X,result.Y,result.Z, ReferenceWhite2D65, AReferenceWhite);\n  end;\n  result.alpha := ASource.alpha/255;\nend;\n\nfunction AdobeRGBAToXYZA(const ASource: TAdobeRGBA): TXYZA;\nbegin\n  result := AdobeRGBAToXYZA(ASource, GetReferenceWhiteIndirect^);\nend;\n\nfunction XYZAToAdobeRGBA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;\nvar R,G,B: single;\n  ad: TXYZA;\nbegin\n  ad := AXYZA;\n  if AReferenceWhite.Illuminant = 'D50' then\n  begin\n    ChromaticAdaptXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D50);\n    with ad do\n    begin\n      R := Clamp(1.9624274*X - 0.6105343*Y - 0.3413404*Z,0,1);\n      G := Clamp(-0.9787684*X + 1.9161415*Y + 0.0334540*Z,0,1);\n      B := Clamp(0.0286869*X - 0.1406752*Y + 1.3487655*Z,0,1);\n    end;\n  end else\n  begin\n    ChromaticAdaptXYZ(ad.X,ad.Y,ad.Z, AReferenceWhite, ReferenceWhite2D65);\n    with ad do\n    begin\n      R := Clamp(2.0413690*X - 0.5649464*Y - 0.3446944*Z,0,1);\n      G := Clamp(-0.9692660*X + 1.8760108*Y + 0.0415560*Z,0,1);\n      B := Clamp(0.0134474*X - 0.1183897*Y + 1.0154096*Z,0,1);\n    end;\n  end;\n  result.red := GammaCompressionTab[round(R*65535)];\n  result.green := GammaCompressionTab[round(G*65535)];\n  result.blue := GammaCompressionTab[round(B*65535)];\n  result.alpha := ClampInt(round(AXYZA.alpha*255),0,255);\nend;\n\nfunction XYZAToAdobeRGBA(const AXYZA: TXYZA): TAdobeRGBA;\nbegin\n  result := XYZAToAdobeRGBA(AXYZA, GetReferenceWhiteIndirect^);\nend;\n\nfunction StdRGBAToLinearRGBA(const AStdRGBA: TStdRGBA): TLinearRGBA;\nvar\n  ec: TExpandedPixel;\nbegin\n  ec := StdRGBAToExpandedPixel(AStdRGBA);\n  result := ExpandedPixelToLinearRGBA(ec);\n  result.alpha := AStdRGBA.alpha;\nend;\n\nfunction LinearRGBAToStdRGBA(const ALinearRGBA: TLinearRGBA): TStdRGBA;\nvar\n  ec: TExpandedPixel;\nbegin\n  ec := LinearRGBAToExpandedPixel(ALinearRGBA);\n  result := ExpandedPixelToStdRGBA(ec);\n  result.alpha := ALinearRGBA.alpha;\nend;\n\nfunction StdRGBAToStdHSLA(const AStdRGBA: TStdRGBA): TStdHSLA;\nvar\n  d, cmax, cmin: double;\nbegin\n  with AStdRGBA do\n  begin\n    cmax := Max(red, Max(green, blue));\n    cmin := Min(red, Min(green, blue));\n    result.lightness := (cmax + cmin) / 2;\n\n    if cmax = cmin then\n    begin\n      result.hue := 0;\n      result.saturation := 0;\n    end\n    else\n    begin\n      d := cmax - cmin;\n      if result.lightness < 0.5 then\n        result.saturation := d / (cmax + cmin)\n      else\n        result.saturation := d / (2 - cmax - cmin);\n\n      if red = cmax then\n        result.hue := (green - blue) / d\n      else\n      if green = cmax then\n        result.hue := 2 + (blue - red) / d\n      else\n        result.hue := 4 + (red - green) / d;\n      if result.hue < 0 then IncF(result.hue, 6);\n      result.hue := result.hue * 60;\n    end;\n    result.alpha := alpha;\n  end;\nend;\n\nfunction StdHSLAToStdRGBA(const AStdHSLA: TStdHSLA): TStdRGBA;\nvar\n  C, X, M, rp, gp, bp, sp, lp, h360: single;\nbegin\n  lp := AStdHSLA.lightness;\n  sp := AStdHSLA.saturation;\n  C := (1 - abs(2 * Lp - 1)) * Sp;\n  h360 := PositiveModSingle(AStdHSLA.hue, 360);\n  X := C * (1 - abs(PositiveModSingle(h360 / 60, 2) - 1));\n  m := Lp - C / 2;\n  rp := 0;\n  gp := 0;\n  bp := 0;\n  case floor(h360) of\n    -1..59:\n    begin\n      rp := C;\n      gp := X;\n      bp := 0;\n    end;\n    60..119:\n    begin\n      rp := X;\n      gp := C;\n      bp := 0;\n    end;\n    120..179:\n    begin\n      rp := 0;\n      gp := C;\n      bp := X;\n    end;\n    180..239:\n    begin\n      rp := 0;\n      gp := X;\n      bp := C;\n    end;\n    240..299:\n    begin\n      rp := X;\n      gp := 0;\n      bp := C;\n    end;\n    300..359:\n    begin\n      rp := C;\n      gp := 0;\n      bp := X;\n    end;\n  end;\n  result.red := rp + m;\n  result.green := gp + m;\n  result.blue := bp + m;\n  result.alpha := AStdHSLA.alpha;\nend;\n\nfunction SpectrumRangeReflectToXYZA(reflectance,wavelen1,wavelen2,alpha: single): TXYZA;\nvar isEqualEnergy: boolean;\n  fromRefWhite: PXYZReferenceWhite;\n\n  function GetIlluminantSpectrum(AIndex: integer): single;\n  begin\n    if isEqualEnergy then result := 1 else\n      result := IlluminantSpectrumD65[AIndex].Y;\n  end;\n\n  procedure IncludeWavelength(fromWavelen, toWavelen: single);\n  var i: integer;\n    factor, ill: single;\n  begin\n    for i := 0 to high(SpectralLocus) do\n      if (SpectralLocus[i].W+2.5 >= fromWavelen) and\n         (SpectralLocus[i].W-2.5 < toWavelen) then\n      begin\n        factor := 1;\n        if SpectralLocus[i].W-2.5 < fromWavelen then\n          DecF(factor, (fromWavelen - (SpectralLocus[i].W-2.5))/5);\n        if SpectralLocus[i].W+2.5 > toWavelen then\n          DecF(factor, ((SpectralLocus[i].W+2.5) - toWavelen)/5);\n        if factor > 0 then\n        begin\n          ill := GetIlluminantSpectrum(i);\n          IncF(result.X, SpectralLocus[i].X*factor*ill);\n          IncF(result.Y, SpectralLocus[i].Y*factor*ill);\n          IncF(result.Z, SpectralLocus[i].Z*factor*ill);\n        end;\n      end;\n  end;\n\nvar\n  minWavelen, maxWavelen, ill: single;\n  totalXYZ: TXYZA;\n  i: Integer;\nbegin\n  result.X := 0;\n  result.Y := 0;\n  result.Z := 0;\n  result.alpha:= alpha;\n\n  with GetReferenceWhiteIndirect^ do\n    isEqualEnergy := (X = 1) and (Y = 1) and (Z = 1);\n  if isEqualEnergy then fromRefWhite := @ReferenceWhite2E\n  else fromRefWhite := @ReferenceWhite2D65;\n\n  totalXYZ := BGRABlack;\n  for i := 0 to high(SpectralLocus) do\n  begin\n    ill := GetIlluminantSpectrum(i);\n    IncF(totalXYZ.X, SpectralLocus[i].X*ill);\n    IncF(totalXYZ.Y, SpectralLocus[i].Y*ill);\n    IncF(totalXYZ.Z, SpectralLocus[i].Z*ill);\n  end;\n\n  minWavelen := SpectralLocus[0].W;\n  maxWavelen := SpectralLocus[high(SpectralLocus)].W;\n\n  if wavelen1 <= minWavelen then wavelen1 := minWavelen-2.5;\n  if wavelen2 >= maxWavelen then wavelen2 := maxWavelen+2.5;\n\n  if wavelen2 > wavelen1 then\n    IncludeWavelength(wavelen1, wavelen2)\n  else\n  begin\n    IncludeWavelength(wavelen1, maxWavelen+2.5);\n    IncludeWavelength(minWavelen-2.5, wavelen2);\n  end;\n\n  result.X := result.X * fromRefWhite^.X/totalXYZ.X * reflectance;\n  result.Y := result.Y * fromRefWhite^.Y/totalXYZ.Y * reflectance;\n  result.Z := result.Z * fromRefWhite^.Z/totalXYZ.Z * reflectance;\n  ChromaticAdaptXYZ(result.X,result.Y,result.Z, fromRefWhite^, GetReferenceWhiteIndirect^);\nend;\n{$ENDIF}\n\nprocedure XYZToLMS(const X,Y,Z: Single; out L,M,S: single);\nbegin\n  L := max(0.8951*X+0.2664*Y-0.1615*Z, 0);\n  M := max(-0.7502*X+1.7135*Y+0.0367*Z, 0);\n  S := max(0.0389*X-0.0685*Y+1.0296*Z, 0);\nend;\n\nprocedure LMSToXYZ(const L,M,S: Single; out X,Y,Z: single);\nbegin\n  X := 0.98699*L-0.14705*M+0.16006*S;\n  Y := 0.43230*L+0.51836*M+0.04933*S;\n  Z := -0.00853*L+0.04004*M+0.96849*S;\nend;\n\nprocedure ChromaticAdaptXYZ(var X,Y,Z: Single; const AFrom, ATo: TXYZReferenceWhite);\nvar\n  L, M, S: single;\nbegin\n  if (AFrom.L=ATo.L) and (AFrom.M=ATo.M) and (AFrom.S=ATo.S) then exit;\n  XYZToLMS(X,Y,Z, L,M,S);\n  L := L * ATo.L/AFrom.L;\n  M := M * ATo.M/AFrom.M;\n  S := S * ATo.S/AFrom.S;\n  LMSToXYZ(L,M,S, X,Y,Z);\nend;\n\nprocedure ChromaticAdaptWordXYZ(var X,Y,Z: Word; const AFrom, ATo: TXYZReferenceWhite);\nconst oneOver50000 = 1/50000;\nvar Xf,Yf,Zf: Single;\nbegin\n  Xf := X*oneOver50000;\n  Yf := Y*oneOver50000;\n  Zf := Z*oneOver50000;\n  ChromaticAdaptXYZ(Xf,Yf,Zf, AFrom,ATo);\n  X := min(round(Xf*50000),65535);\n  Y := min(round(Yf*50000),65535);\n  Z := min(round(Zf*50000),65535);\nend;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_INITIALIZATION}\n{$UNDEF INCLUDE_INITIALIZATION} \n\n  PrepareReferenceWhiteArray;\n  ReferenceWhite2D50 := GetReferenceWhite(2, 'D50');\n  ReferenceWhite2D65 := GetReferenceWhite(2, 'D65');\n  ReferenceWhite2E := GetReferenceWhite(2, 'E');\n  SetReferenceWhite(ReferenceWhite2D50);\n\n  {$DEFINE INCLUDE_INITIALIZATION}\n  {$I generatedcolorspace.inc}\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/face3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  PBGRAFaceVertexDescription = ^TBGRAFaceVertexDescription;\n  TBGRAFaceVertexDescription = record\n       Vertex: IBGRAVertex3D;\n       Normal: IBGRANormal3D;\n       Color: TBGRAPixel;\n       TexCoord: TPointF;\n       ColorOverride: boolean;\n       TexCoordOverride: boolean;\n       ActualColor: TBGRAPixel;\n       ActualTexCoord: TPointF;\n     end;\n\n  { Face in a 3D object }\n  TBGRAFace3D = class(TInterfacedObject,IBGRAFace3D)\n  private\n    FVertices: packed array of TBGRAFaceVertexDescription;\n    FVertexCount: integer;\n    FTexture, FActualTexture: IBGRAScanner;\n    FMaterial: IBGRAMaterial3D;\n    FActualMaterial: TBGRAMaterial3D;\n    FMaterialName: string;\n    FParentTexture: boolean;\n    FViewNormal: TPoint3D_128;\n    FViewCenter: TPoint3D_128;\n    FObject3D : IBGRAObject3D;\n    FBiface: boolean;\n    FLightThroughFactor: single;\n    FLightThroughFactorOverride: boolean;\n    FCustomFlags: LongWord;\n    function GetCustomFlags: LongWord;\n    function GetVertexDescription(AIndex : integer): PBGRAFaceVertexDescription;\n    procedure SetCustomFlags(AValue: LongWord);\n    procedure ComputeActualVertexColor(AIndex: integer);\n    procedure ComputeActualTexCoord(AMinIndex, AMaxIndex: integer);\n    procedure UpdateTexture;\n  public\n    function GetObject3D: IBGRAObject3D;\n    constructor Create(AObject3D: IBGRAObject3D; AVertices: array of IBGRAVertex3D);\n    destructor Destroy; override;\n    procedure ComputeVertexColors;\n    procedure UpdateMaterial;\n    procedure FlipFace;\n    function AddVertex(AVertex: IBGRAVertex3D): integer;\n    function GetParentTexture: boolean;\n    function GetTexture: IBGRAScanner;\n    function GetVertex(AIndex: Integer): IBGRAVertex3D;\n    function GetVertexColor(AIndex: Integer): TBGRAPixel;\n    function GetVertexColorOverride(AIndex: Integer): boolean;\n    function GetVertexCount: integer;\n    function GetNormal(AIndex: Integer): IBGRANormal3D;\n    function GetMaterial: IBGRAMaterial3D;\n    function GetMaterialName: string;\n    function GetTexCoord(AIndex: Integer): TPointF;\n    function GetTexCoordOverride(AIndex: Integer): boolean;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    function GetViewCenter: TPoint3D;\n    function GetViewCenter_128: TPoint3D_128;\n    function GetViewCenterZ: single;\n    function GetBiface: boolean;\n    function GetLightThroughFactor: single;\n    function GetLightThroughFactorOverride: boolean;\n    procedure SetParentTexture(const AValue: boolean);\n    procedure SetTexture(const AValue: IBGRAScanner);\n    procedure SetColor(AColor: TBGRAPixel);\n    procedure SetVertexColor(AIndex: Integer; const AValue: TBGRAPixel);\n    procedure SetVertexColorOverride(AIndex: Integer; const AValue: boolean);\n    procedure SetTexCoord(AIndex: Integer; const AValue: TPointF);\n    procedure SetTexCoordOverride(AIndex: Integer; const AValue: boolean);\n    procedure SetBiface(const AValue: boolean);\n    procedure SetLightThroughFactor(const AValue: single);\n    procedure SetLightThroughFactorOverride(const AValue: boolean);\n    procedure SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\n    procedure SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\n    procedure ComputeViewNormalAndCenter;\n    procedure SetMaterial(const AValue: IBGRAMaterial3D);\n    procedure SetMaterialName(const AValue: string);\n    function GetAsObject: TObject;\n    property Texture: IBGRAScanner read GetTexture write SetTexture;\n    property ParentTexture: boolean read GetParentTexture write SetParentTexture;\n    property VertexCount: integer read GetVertexCount;\n    property Vertex[AIndex: Integer]: IBGRAVertex3D read GetVertex write SetVertex;\n    property Normal[AIndex: Integer]: IBGRANormal3D read GetNormal write SetNormal;\n    property VertexColor[AIndex: Integer]: TBGRAPixel read GetVertexColor write SetVertexColor;\n    property VertexColorOverride[AIndex: Integer]: boolean read GetVertexColorOverride write SetVertexColorOverride;\n    property TexCoord[AIndex: Integer]: TPointF read GetTexCoord write SetTexCoord;\n    property TexCoordOverride[AIndex: Integer]: boolean read GetTexCoordOverride write SetTexCoordOverride;\n    property ViewNormal: TPoint3D read GetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128;\n    property ViewCenter: TPoint3D read GetViewCenter;\n    property ViewCenter_128: TPoint3D_128 read GetViewCenter_128;\n    property ViewCenterZ: single read GetViewCenterZ;\n    property Object3D: IBGRAObject3D read GetObject3D;\n    property Biface: boolean read GetBiface write SetBiface;\n    property LightThroughFactor: single read GetLightThroughFactor write SetLightThroughFactor;\n    property LightThroughFactorOverride: boolean read GetLightThroughFactorOverride write SetLightThroughFactorOverride;\n    property Material: IBGRAMaterial3D read GetMaterial write SetMaterial;\n    property ActualMaterial: TBGRAMaterial3D read FActualMaterial;\n    property ActualTexture: IBGRAScanner read FActualTexture;\n    property VertexDescription[AIndex : integer]: PBGRAFaceVertexDescription read GetVertexDescription;\n    property CustomFlags: LongWord read GetCustomFlags write SetCustomFlags;\n  end;\n\n{ TBGRAFace3D }\n\nfunction TBGRAFace3D.GetVertexDescription(AIndex : integer\n  ): PBGRAFaceVertexDescription;\nbegin\n  result := @FVertices[AIndex];\nend;\n\nfunction TBGRAFace3D.GetCustomFlags: LongWord;\nbegin\n  result := FCustomFlags;\nend;\n\nfunction TBGRAFace3D.GetNormal(AIndex: Integer): IBGRANormal3D;\nbegin\n  result := FVertices[AIndex].Normal;\nend;\n\nprocedure TBGRAFace3D.SetCustomFlags(AValue: LongWord);\nbegin\n  FCustomFlags:= AValue;\nend;\n\nprocedure TBGRAFace3D.ComputeActualVertexColor(AIndex: integer);\nbegin\n  with FVertices[AIndex] do\n  begin\n    if ColorOverride then\n      ActualColor := Color\n    else\n    if Vertex.ParentColor then\n      ActualColor := FObject3D.Color\n    else\n      ActualColor := Vertex.Color;\n  end;\nend;\n\nprocedure TBGRAFace3D.ComputeActualTexCoord(AMinIndex, AMaxIndex: integer);\nvar\n  i: Integer;\n  zoom: TPointF;\n  m: IBGRAMaterial3D;\nbegin\n  m := ActualMaterial;\n  if m <> nil then zoom := m.TextureZoom\n  else zoom := PointF(1,1);\n  for i := AMinIndex to AMaxIndex do\n    with FVertices[i] do\n    begin\n      if TexCoordOverride then\n        ActualTexCoord := TexCoord\n      else\n        ActualTexCoord := Vertex.TexCoord;\n      ActualTexCoord.x := ActualTexCoord.x * zoom.x;\n      ActualTexCoord.y := ActualTexCoord.y * zoom.y;\n    end;\nend;\n\nprocedure TBGRAFace3D.UpdateTexture;\nbegin\n  if FParentTexture then\n  begin\n    FActualTexture := nil;\n    if FActualMaterial <> nil then\n      FActualTexture := FActualMaterial.GetTexture;\n    if FActualTexture = nil then\n      FActualTexture := FObject3D.Texture\n  end\n  else\n    FActualTexture := FTexture;\nend;\n\nprocedure TBGRAFace3D.SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\nbegin\n  FVertices[AIndex].Normal := AValue;\nend;\n\nfunction TBGRAFace3D.GetObject3D: IBGRAObject3D;\nbegin\n  result := FObject3D;\nend;\n\nconstructor TBGRAFace3D.Create(AObject3D: IBGRAObject3D;\n  AVertices: array of IBGRAVertex3D);\nvar\n  i: Integer;\nbegin\n  FObject3D := AObject3D;\n  FBiface := false;\n  FParentTexture := True;\n  FLightThroughFactor:= 0;\n  FLightThroughFactorOverride:= false;\n\n  UpdateMaterial;\n\n  SetLength(FVertices, length(AVertices));\n  for i:= 0 to high(AVertices) do\n    AddVertex(AVertices[i]);\nend;\n\ndestructor TBGRAFace3D.Destroy;\nbegin\n  FMaterial := nil;\n  fillchar(FTexture,sizeof(FTexture),0);\n  fillchar(FActualTexture,sizeof(FActualTexture),0);\n  inherited Destroy;\nend;\n\nprocedure TBGRAFace3D.ComputeVertexColors;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FVertexCount-1 do\n    ComputeActualVertexColor(i);\nend;\n\nprocedure TBGRAFace3D.UpdateMaterial;\nbegin\n  if Material <> nil then\n    FActualMaterial := TBGRAMaterial3D(Material.GetAsObject)\n  else if FObject3D.Material <> nil then\n    FActualMaterial := TBGRAMaterial3D(FObject3D.Material.GetAsObject)\n  else if TBGRAScene3D(FObject3D.Scene).DefaultMaterial <> nil then\n    FActualMaterial := TBGRAMaterial3D(TBGRAScene3D(FObject3D.Scene).DefaultMaterial.GetAsObject);\n\n  UpdateTexture;\n\n  ComputeActualTexCoord(0,FVertexCount-1);\nend;\n\nprocedure TBGRAFace3D.FlipFace;\nvar i: integer;\n  temp: TBGRAFaceVertexDescription;\nbegin\n  for i := 0 to (VertexCount div 2)-1 do\n  begin\n    temp := FVertices[i];\n    FVertices[i] := FVertices[VertexCount-1-i];\n    FVertices[VertexCount-1-i] := temp;\n  end;\nend;\n\nfunction TBGRAFace3D.AddVertex(AVertex: IBGRAVertex3D): integer;\nbegin\n  if FVertexCount = length(FVertices) then\n    setlength(FVertices, FVertexCount*2+3);\n  result := FVertexCount;\n  with FVertices[result] do\n  begin\n    Color := BGRAWhite;\n    ColorOverride := false;\n    TexCoord := PointF(0,0);\n    TexCoordOverride := false;\n    Vertex := AVertex;\n    Normal := nil;\n  end;\n  ComputeActualVertexColor(result);\n  ComputeActualTexCoord(result,result);\n  inc(FVertexCount);\nend;\n\nfunction TBGRAFace3D.GetParentTexture: boolean;\nbegin\n  result := FParentTexture;\nend;\n\nfunction TBGRAFace3D.GetTexture: IBGRAScanner;\nbegin\n  result := FTexture;\nend;\n\nfunction TBGRAFace3D.GetVertex(AIndex: Integer): IBGRAVertex3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FVertices[AIndex].Vertex;\nend;\n\nprocedure TBGRAFace3D.SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  FVertices[AIndex].Vertex := AValue;\n  ComputeActualVertexColor(AIndex);\nend;\n\nfunction TBGRAFace3D.GetVertexColor(AIndex: Integer): TBGRAPixel;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FVertices[AIndex].ActualColor;\nend;\n\nfunction TBGRAFace3D.GetVertexColorOverride(AIndex: Integer): boolean;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FVertices[AIndex].ColorOverride;\nend;\n\nfunction TBGRAFace3D.GetVertexCount: integer;\nbegin\n  result := FVertexCount;\nend;\n\nfunction TBGRAFace3D.GetMaterial: IBGRAMaterial3D;\nbegin\n  result := FMaterial;\nend;\n\nfunction TBGRAFace3D.GetMaterialName: string;\nbegin\n  result := FMaterialName;\nend;\n\nprocedure TBGRAFace3D.SetParentTexture(const AValue: boolean);\nbegin\n  FParentTexture := AValue;\n  UpdateTexture;\nend;\n\nprocedure TBGRAFace3D.SetTexture(const AValue: IBGRAScanner);\nbegin\n  FTexture := AValue;\n  FParentTexture := false;\n  UpdateTexture;\nend;\n\nprocedure TBGRAFace3D.SetColor(AColor: TBGRAPixel);\nvar i: integer;\nbegin\n  for i := 0 to GetVertexCount-1 do\n    SetVertexColor(i,AColor);\nend;\n\nprocedure TBGRAFace3D.SetVertexColor(AIndex: Integer; const AValue: TBGRAPixel\n  );\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  with FVertices[AIndex] do\n  begin\n    Color := AValue;\n    ColorOverride := true;\n  end;\n  ComputeActualVertexColor(AIndex);\nend;\n\nprocedure TBGRAFace3D.SetVertexColorOverride(AIndex: Integer;\n  const AValue: boolean);\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  FVertices[AIndex].ColorOverride := AValue;\n  ComputeActualVertexColor(AIndex);\nend;\n\nfunction TBGRAFace3D.GetTexCoord(AIndex: Integer): TPointF;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FVertices[AIndex].TexCoord;\nend;\n\nfunction TBGRAFace3D.GetTexCoordOverride(AIndex: Integer): boolean;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FVertices[AIndex].TexCoordOverride;\nend;\n\nprocedure TBGRAFace3D.SetTexCoord(AIndex: Integer; const AValue: TPointF);\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  FVertices[AIndex].TexCoord := AValue;\n  FVertices[AIndex].TexCoordOverride := true;\n  ComputeActualTexCoord(AIndex, AIndex);\nend;\n\nprocedure TBGRAFace3D.SetTexCoordOverride(AIndex: Integer; const AValue: boolean\n  );\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise Exception.Create('Index out of bounds');\n  FVertices[AIndex].TexCoordOverride := AValue;\nend;\n\nfunction TBGRAFace3D.GetViewNormal: TPoint3D;\nbegin\n  result := Point3D(FViewNormal);\nend;\n\nfunction TBGRAFace3D.GetViewNormal_128: TPoint3D_128;\nbegin\n  result := FViewNormal;\nend;\n\nfunction TBGRAFace3D.GetViewCenter: TPoint3D;\nbegin\n  result := Point3D(FViewCenter);\nend;\n\nfunction TBGRAFace3D.GetViewCenter_128: TPoint3D_128;\nbegin\n  result := FViewCenter;\nend;\n\nfunction TBGRAFace3D.GetViewCenterZ: single;\nbegin\n  result := FViewCenter.Z;\nend;\n\nfunction TBGRAFace3D.GetBiface: boolean;\nbegin\n  result := FBiface;\nend;\n\nprocedure TBGRAFace3D.SetBiface(const AValue: boolean);\nbegin\n  FBiface := AValue;\nend;\n\nfunction TBGRAFace3D.GetLightThroughFactor: single;\nbegin\n  result := FLightThroughFactor;\nend;\n\nfunction TBGRAFace3D.GetLightThroughFactorOverride: boolean;\nbegin\n  result := FLightThroughFactorOverride;\nend;\n\nprocedure TBGRAFace3D.SetLightThroughFactor(const AValue: single);\nbegin\n  if AValue < 0 then\n    FLightThroughFactor := 0\n  else\n    FLightThroughFactor:= AValue;\n  FLightThroughFactorOverride := true;\nend;\n\nprocedure TBGRAFace3D.SetLightThroughFactorOverride(const AValue: boolean);\nbegin\n  FLightThroughFactorOverride := AValue;\nend;\n\nprocedure TBGRAFace3D.ComputeViewNormalAndCenter;\nvar v1,v2: TPoint3D_128;\n  i: Integer;\n  p0,p1,p2: IBGRAVertex3D;\nbegin\n  if FVertexCount < 3 then\n    ClearPoint3D_128(FViewNormal)\n  else\n  begin\n    p0 := FVertices[0].Vertex;\n    p1 := FVertices[1].Vertex;\n    p2 := FVertices[2].Vertex;\n    v1 := p1.ViewCoord_128 - p0.ViewCoord_128;\n    v2 := p2.ViewCoord_128 - p1.ViewCoord_128;\n    VectProduct3D_128(v2,v1,FViewNormal);\n    Normalize3D_128(FViewNormal);\n    for i := 0 to FVertexCount-1 do\n      FVertices[i].Vertex.AddViewNormal(FViewNormal);\n  end;\n  ClearPoint3D_128(FViewCenter);\n  if FVertexCount > 0 then\n  begin\n    for i := 0 to FVertexCount-1 do\n      FViewCenter.Offset(FVertices[i].Vertex.ViewCoord_128);\n    FViewCenter.Scale(1/FVertexCount);\n  end;\nend;\n\nprocedure TBGRAFace3D.SetMaterial(const AValue: IBGRAMaterial3D);\nbegin\n  if AValue <> FMaterial then\n  begin\n    FMaterial := AValue;\n    UpdateMaterial;\n  end;\nend;\n\nprocedure TBGRAFace3D.SetMaterialName(const AValue: string);\nbegin\n  if AValue <> FMaterialName then\n  begin\n    FMaterialName := AValue;\n    TBGRAScene3D(FObject3D.Scene).UseMaterial(FMaterialName, self);\n  end;\nend;\n\nfunction TBGRAFace3D.GetAsObject: TObject;\nbegin\n  result := self;\nend;\n\n\n"
  },
  {
    "path": "bgrabitmap/generatedcolorspace.inc",
    "content": "{ This file is generated by dev/colorspace/UnitMaker program }\n\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{$ENDIF}\n  { Pointer to TByteMask color }\n  PByteMask = ^TByteMask;\n  { Grayscale color (8-bit channels) }\n\n  TByteMask = packed record\n    gray: byte;\n    class function New(const AGray:byte): TByteMask;static;\n  end;\n\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n  { Pointer to TStdRGBA color }\n  PStdRGBA = ^TStdRGBA;\n  { StdRGB color (32-bit floating point channels) }\n\n  TStdRGBA = packed record\n    red,green,blue,alpha: single;\n    class function New(const ARed,AGreen,ABlue,AAlpha:single): TStdRGBA;overload;static;\n    class function New(const ARed,AGreen,ABlue:single): TStdRGBA;overload;static;\n  end;\n\n  { Pointer to TAdobeRGBA color }\n  PAdobeRGBA = ^TAdobeRGBA;\n  { AdobeRGB color (8-bit channels) }\n\n  TAdobeRGBA = packed record\n    red,green,blue,alpha: byte;\n    class function New(const ARed,AGreen,ABlue,AAlpha:byte): TAdobeRGBA;overload;static;\n    class function New(const ARed,AGreen,ABlue:byte): TAdobeRGBA;overload;static;\n  end;\n\n  { Pointer to TStdHSLA color }\n  PStdHSLA = ^TStdHSLA;\n  { StdHSL color (32-bit floating point channels) }\n\n  TStdHSLA = packed record\n    hue,saturation,lightness,alpha: single;\n    class function New(const AHue,ASaturation,ALightness,AAlpha:single): TStdHSLA;overload;static;\n    class function New(const AHue,ASaturation,ALightness:single): TStdHSLA;overload;static;\n  end;\n\n  { Pointer to TStdHSVA color }\n  PStdHSVA = ^TStdHSVA;\n  { StdHSV color (32-bit floating point channels) }\n\n  TStdHSVA = packed record\n    hue,saturation,value,alpha: single;\n    class function New(const AHue,ASaturation,AValue,AAlpha:single): TStdHSVA;overload;static;\n    class function New(const AHue,ASaturation,AValue:single): TStdHSVA;overload;static;\n  end;\n\n  { Pointer to TStdCMYK color }\n  PStdCMYK = ^TStdCMYK;\n  { StdCMYK color (32-bit floating point channels) }\n\n  TStdCMYK = packed record\n    C,M,Y,K: single;\n    class function New(const ACyan,AMagenta,AYellow,ABlack:single): TStdCMYK;static;\n  end;\n\n  { Pointer to TLinearRGBA color }\n  PLinearRGBA = ^TLinearRGBA;\n  { LinearRGB color (32-bit floating point channels) }\n\n  TLinearRGBA = packed record\n    red,green,blue,alpha: single;\n    class function New(const ARed,AGreen,ABlue,AAlpha:single): TLinearRGBA;overload;static;\n    class function New(const ARed,AGreen,ABlue:single): TLinearRGBA;overload;static;\n  end;\n\n  { Pointer to TYCbCr601 color }\n  PYCbCr601 = ^TYCbCr601;\n  { YCbCr BT.601 color (32-bit floating point channels) }\n\n  TYCbCr601 = packed record\n    Y,Cb,Cr: single;\n    class function New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr601;static;\n  end;\n\n  { Pointer to TYCbCr601JPEG color }\n  PYCbCr601JPEG = ^TYCbCr601JPEG;\n  { YCbCr BT.601 JPEG color (32-bit floating point channels) }\n\n  TYCbCr601JPEG = packed record\n    Y,Cb,Cr: single;\n    class function New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr601JPEG;static;\n  end;\n\n  { Pointer to TYCbCr709 color }\n  PYCbCr709 = ^TYCbCr709;\n  { YCbCr BT.709 color (32-bit floating point channels) }\n\n  TYCbCr709 = packed record\n    Y,Cb,Cr: single;\n    class function New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr709;static;\n  end;\n\n  { Pointer to TYCbCr709JPEG color }\n  PYCbCr709JPEG = ^TYCbCr709JPEG;\n  { YCbCr BT.709 JPEG color (32-bit floating point channels) }\n\n  TYCbCr709JPEG = packed record\n    Y,Cb,Cr: single;\n    class function New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr709JPEG;static;\n  end;\n\n  { Pointer to TXYZA color }\n  PXYZA = ^TXYZA;\n  { CIE XYZ color (32-bit floating point channels) }\n\n  TXYZA = packed record\n    X,Y,Z,alpha: single;\n    class function New(const AX,AY,AZ,AAlpha:single): TXYZA;overload;static;\n    class function New(const AX,AY,AZ:single): TXYZA;overload;static;\n  end;\n\n  { Pointer to TWordXYZA color }\n  PWordXYZA = ^TWordXYZA;\n  { CIE XYZ color (16-bit channels) }\n\n  TWordXYZA = packed record\n    X,Y,Z,alpha: word;\n    class function New(const AX,AY,AZ,AAlpha:word): TWordXYZA;overload;static;\n    class function New(const AX,AY,AZ:word): TWordXYZA;overload;static;\n  end;\n\n  { Pointer to TLabA color }\n  PLabA = ^TLabA;\n  { CIE Lab color (32-bit floating point channels) }\n\n  TLabA = packed record\n    L,a,b,alpha: single;\n    class function New(const ALightness,Aa,Ab,AAlpha:single): TLabA;overload;static;\n    class function New(const ALightness,Aa,Ab:single): TLabA;overload;static;\n  end;\n\n  { Pointer to TLChA color }\n  PLChA = ^TLChA;\n  { CIE LCh color (32-bit floating point channels) }\n\n  TLChA = packed record\n    L,C,h,alpha: single;\n    class function New(const ALightness,AChroma,AHue,AAlpha:single): TLChA;overload;static;\n    class function New(const ALightness,AChroma,AHue:single): TLChA;overload;static;\n  end;\n\n  {$ENDIF}\n  { StdRGB colorspace (8-bit channels) }\n\n  TColorColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { StdRGB colorspace (8-bit channels) }\n\n  TBGRAPixelColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { StdRGB colorspace (16-bit channels) }\n\n  TFPColorColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { Grayscale colorspace (8-bit channels) }\n\n  TByteMaskColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { LinearRGB colorspace (16-bit channels) }\n\n  TExpandedPixelColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n  { StdRGB colorspace (32-bit floating point channels) }\n\n  TStdRGBAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { AdobeRGB colorspace (8-bit channels) }\n\n  TAdobeRGBAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { StdHSL colorspace (32-bit floating point channels) }\n\n  TStdHSLAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { StdHSV colorspace (32-bit floating point channels) }\n\n  TStdHSVAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { StdCMYK colorspace (32-bit floating point channels) }\n\n  TStdCMYKColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { LinearRGB colorspace (32-bit floating point channels) }\n\n  TLinearRGBAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { HSL colorspace (16-bit channels) }\n\n  THSLAPixelColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { GSB colorspace (16-bit channels) }\n\n  TGSBAPixelColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { YCbCr BT.601 colorspace (32-bit floating point channels) }\n\n  TYCbCr601Colorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { YCbCr BT.601 JPEG colorspace (32-bit floating point channels) }\n\n  TYCbCr601JPEGColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { YCbCr BT.709 colorspace (32-bit floating point channels) }\n\n  TYCbCr709Colorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { YCbCr BT.709 JPEG colorspace (32-bit floating point channels) }\n\n  TYCbCr709JPEGColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { CIE XYZ colorspace (32-bit floating point channels) }\n\n  TXYZAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { CIE XYZ colorspace (16-bit channels) }\n\n  TWordXYZAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { CIE Lab colorspace (32-bit floating point channels) }\n\n  TLabAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  { CIE LCh colorspace (32-bit floating point channels) }\n\n  TLChAColorspace = class(TCustomColorspace)\n    class function GetChannelName(AIndex: integer): string; override;\n    class function GetChannelCount: integer; override;\n    class function IndexOfAlphaChannel: integer; override;\n    class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;\n    class function GetMaxValue(AIndex: integer): single; override;\n    class function GetMinValue(AIndex: integer): single; override;\n    class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;\n    class function GetName: string; override;\n    class function GetSize: integer; override;\n    class function GetChannel(AColor: Pointer; AIndex: integer): single; override;\n    class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;\n    class function GetFlags: TColorspaceFlags; override;\n  end;\n\n  {$ENDIF}\n  { Helper for TColor color }\n\n  TColorHelper = type helper for TColor\n    class function New(const ARed,AGreen,ABlue:byte): TColor;static;\n    class function Colorspace: TColorspaceAny; static;\n  private\n    function GetRed: byte;\n    function GetGreen: byte;\n    function GetBlue: byte;\n    procedure SetRed(AValue: byte);\n    procedure SetGreen(AValue: byte);\n    procedure SetBlue(AValue: byte);\n  public\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n    property red: byte read GetRed write SetRed;\n    property green: byte read GetGreen write SetGreen;\n    property blue: byte read GetBlue write SetBlue;\n  end;\n\n  { Helper for TBGRAPixel color }\n\n  TBGRAPixelHelper = record helper(TBGRAPixelBasicHelper) for TBGRAPixel\n    class function Colorspace: TColorspaceAny; static;\n    function ToByteMask: TByteMask;\n    procedure FromByteMask(AValue: TByteMask);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TFPColor color }\n\n  TFPColorHelper = record helper(TFPColorBasicHelper) for TFPColor\n    class function New(const ARed,AGreen,ABlue,AAlpha:word): TFPColor;overload;static;\n    class function New(const ARed,AGreen,ABlue:word): TFPColor;overload;static;\n    class function Colorspace: TColorspaceAny; static;\n    function ToByteMask: TByteMask;\n    procedure FromByteMask(AValue: TByteMask);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TByteMask color }\n\n  TByteMaskHelper = record helper for TByteMask\n    class function Colorspace: TColorspaceAny; static;\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TExpandedPixel color }\n\n  TExpandedPixelHelper = record helper(TExpandedPixelBasicHelper) for TExpandedPixel\n    class function Colorspace: TColorspaceAny; static;\n    function ToByteMask: TByteMask;\n    procedure FromByteMask(AValue: TByteMask);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n  { Helper for TStdRGBA color }\n\n  TStdRGBAHelper = record helper for TStdRGBA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TAdobeRGBA color }\n\n  TAdobeRGBAHelper = record helper for TAdobeRGBA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TStdHSLA color }\n\n  TStdHSLAHelper = record helper for TStdHSLA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TStdHSVA color }\n\n  TStdHSVAHelper = record helper for TStdHSVA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TStdCMYK color }\n\n  TStdCMYKHelper = record helper for TStdCMYK\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TLinearRGBA color }\n\n  TLinearRGBAHelper = record helper for TLinearRGBA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for THSLAPixel color }\n\n  THSLAPixelHelper = record helper(THSLAPixelBasicHelper) for THSLAPixel\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToByteMask: TByteMask;\n    procedure FromByteMask(AValue: TByteMask);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TGSBAPixel color }\n\n  TGSBAPixelHelper = record helper(TGSBAPixelBasicHelper) for TGSBAPixel\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToByteMask: TByteMask;\n    procedure FromByteMask(AValue: TByteMask);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TYCbCr601 color }\n\n  TYCbCr601Helper = record helper for TYCbCr601\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TYCbCr601JPEG color }\n\n  TYCbCr601JPEGHelper = record helper for TYCbCr601JPEG\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TYCbCr709 color }\n\n  TYCbCr709Helper = record helper for TYCbCr709\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TYCbCr709JPEG color }\n\n  TYCbCr709JPEGHelper = record helper for TYCbCr709JPEG\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(AAlpha: word): TFPColor;overload;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(AAlpha: single): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(AAlpha: single): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(AAlpha: single): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(AAlpha: single): TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(AAlpha: word): TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;overload;\n    function ToLabA(AAlpha: single): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(AAlpha: single): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TXYZA color }\n\n  TXYZAHelper = record helper for TXYZA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    procedure ChromaticAdapt(const AFrom, ATo: TXYZReferenceWhite);\n    function ToColor: TColor;overload;\n    function ToColor(const AReferenceWhite: TXYZReferenceWhite): TColor;overload;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(const AReferenceWhite: TXYZReferenceWhite): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(const AReferenceWhite: TXYZReferenceWhite): TFPColor;overload;\n    function ToByteMask: TByteMask;overload;\n    function ToByteMask(const AReferenceWhite: TXYZReferenceWhite): TByteMask;overload;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(const AReferenceWhite: TXYZReferenceWhite): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(const AReferenceWhite: TXYZReferenceWhite): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor); overload;\n    procedure FromColor(AValue: TColor; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromBGRAPixel(AValue: TBGRAPixel); overload;\n    procedure FromBGRAPixel(AValue: TBGRAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromFPColor(AValue: TFPColor); overload;\n    procedure FromFPColor(AValue: TFPColor; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromByteMask(AValue: TByteMask); overload;\n    procedure FromByteMask(AValue: TByteMask; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromExpandedPixel(AValue: TExpandedPixel); overload;\n    procedure FromExpandedPixel(AValue: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromHSLAPixel(AValue: THSLAPixel); overload;\n    procedure FromHSLAPixel(AValue: THSLAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromGSBAPixel(AValue: TGSBAPixel); overload;\n    procedure FromGSBAPixel(AValue: TGSBAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(const AReferenceWhite: TXYZReferenceWhite): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(const AReferenceWhite: TXYZReferenceWhite): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(const AReferenceWhite: TXYZReferenceWhite): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;overload;\n    function ToStdCMYK(const AReferenceWhite: TXYZReferenceWhite): TStdCMYK;overload;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;overload;\n    function ToYCbCr601(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601;overload;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;overload;\n    function ToYCbCr601JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601JPEG;overload;\n    function ToYCbCr709: TYCbCr709;overload;\n    function ToYCbCr709(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709;overload;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;overload;\n    function ToYCbCr709JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709JPEG;overload;\n    function ToWordXYZA: TWordXYZA;\n    function ToLabA: TLabA;overload;\n    function ToLabA(const AReferenceWhite: TXYZReferenceWhite): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA); overload;\n    procedure FromStdRGBA(AValue: TStdRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA); overload;\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdHSLA(AValue: TStdHSLA); overload;\n    procedure FromStdHSLA(AValue: TStdHSLA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdHSVA(AValue: TStdHSVA); overload;\n    procedure FromStdHSVA(AValue: TStdHSVA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdCMYK(AValue: TStdCMYK); overload;\n    procedure FromStdCMYK(AValue: TStdCMYK; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLinearRGBA(AValue: TLinearRGBA); overload;\n    procedure FromLinearRGBA(AValue: TLinearRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr601(AValue: TYCbCr601); overload;\n    procedure FromYCbCr601(AValue: TYCbCr601; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG); overload;\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr709(AValue: TYCbCr709); overload;\n    procedure FromYCbCr709(AValue: TYCbCr709; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG); overload;\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA);\n    procedure FromLabA(AValue: TLabA); overload;\n    procedure FromLabA(AValue: TLabA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLChA(AValue: TLChA); overload;\n    procedure FromLChA(AValue: TLChA; const AReferenceWhite: TXYZReferenceWhite); overload;\n  {$ENDIF}\n  end;\n\n  { Helper for TWordXYZA color }\n\n  TWordXYZAHelper = record helper for TWordXYZA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    procedure ChromaticAdapt(const AFrom, ATo: TXYZReferenceWhite);\n    function ToColor: TColor;overload;\n    function ToColor(const AReferenceWhite: TXYZReferenceWhite): TColor;overload;\n    function ToBGRAPixel: TBGRAPixel;overload;\n    function ToBGRAPixel(const AReferenceWhite: TXYZReferenceWhite): TBGRAPixel;overload;\n    function ToFPColor: TFPColor;overload;\n    function ToFPColor(const AReferenceWhite: TXYZReferenceWhite): TFPColor;overload;\n    function ToByteMask: TByteMask;overload;\n    function ToByteMask(const AReferenceWhite: TXYZReferenceWhite): TByteMask;overload;\n    function ToExpandedPixel: TExpandedPixel;overload;\n    function ToExpandedPixel(const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel;overload;\n    function ToHSLAPixel: THSLAPixel;overload;\n    function ToHSLAPixel(const AReferenceWhite: TXYZReferenceWhite): THSLAPixel;overload;\n    function ToGSBAPixel: TGSBAPixel;overload;\n    function ToGSBAPixel(const AReferenceWhite: TXYZReferenceWhite): TGSBAPixel;overload;\n    procedure FromColor(AValue: TColor); overload;\n    procedure FromColor(AValue: TColor; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromBGRAPixel(AValue: TBGRAPixel); overload;\n    procedure FromBGRAPixel(AValue: TBGRAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromFPColor(AValue: TFPColor); overload;\n    procedure FromFPColor(AValue: TFPColor; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromByteMask(AValue: TByteMask); overload;\n    procedure FromByteMask(AValue: TByteMask; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromExpandedPixel(AValue: TExpandedPixel); overload;\n    procedure FromExpandedPixel(AValue: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromHSLAPixel(AValue: THSLAPixel); overload;\n    procedure FromHSLAPixel(AValue: THSLAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromGSBAPixel(AValue: TGSBAPixel); overload;\n    procedure FromGSBAPixel(AValue: TGSBAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;overload;\n    function ToStdRGBA(const AReferenceWhite: TXYZReferenceWhite): TStdRGBA;overload;\n    function ToAdobeRGBA: TAdobeRGBA;overload;\n    function ToAdobeRGBA(const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;overload;\n    function ToStdHSLA: TStdHSLA;overload;\n    function ToStdHSLA(const AReferenceWhite: TXYZReferenceWhite): TStdHSLA;overload;\n    function ToStdHSVA: TStdHSVA;overload;\n    function ToStdHSVA(const AReferenceWhite: TXYZReferenceWhite): TStdHSVA;overload;\n    function ToStdCMYK: TStdCMYK;overload;\n    function ToStdCMYK(const AReferenceWhite: TXYZReferenceWhite): TStdCMYK;overload;\n    function ToLinearRGBA: TLinearRGBA;overload;\n    function ToLinearRGBA(const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA;overload;\n    function ToYCbCr601: TYCbCr601;overload;\n    function ToYCbCr601(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601;overload;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;overload;\n    function ToYCbCr601JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601JPEG;overload;\n    function ToYCbCr709: TYCbCr709;overload;\n    function ToYCbCr709(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709;overload;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;overload;\n    function ToYCbCr709JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709JPEG;overload;\n    function ToXYZA: TXYZA;\n    function ToLabA: TLabA;overload;\n    function ToLabA(const AReferenceWhite: TXYZReferenceWhite): TLabA;overload;\n    function ToLChA: TLChA;overload;\n    function ToLChA(const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\n    procedure FromStdRGBA(AValue: TStdRGBA); overload;\n    procedure FromStdRGBA(AValue: TStdRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA); overload;\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdHSLA(AValue: TStdHSLA); overload;\n    procedure FromStdHSLA(AValue: TStdHSLA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdHSVA(AValue: TStdHSVA); overload;\n    procedure FromStdHSVA(AValue: TStdHSVA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromStdCMYK(AValue: TStdCMYK); overload;\n    procedure FromStdCMYK(AValue: TStdCMYK; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLinearRGBA(AValue: TLinearRGBA); overload;\n    procedure FromLinearRGBA(AValue: TLinearRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr601(AValue: TYCbCr601); overload;\n    procedure FromYCbCr601(AValue: TYCbCr601; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG); overload;\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr709(AValue: TYCbCr709); overload;\n    procedure FromYCbCr709(AValue: TYCbCr709; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG); overload;\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromXYZA(AValue: TXYZA);\n    procedure FromLabA(AValue: TLabA); overload;\n    procedure FromLabA(AValue: TLabA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLChA(AValue: TLChA); overload;\n    procedure FromLChA(AValue: TLChA; const AReferenceWhite: TXYZReferenceWhite); overload;\n  {$ENDIF}\n  end;\n\n  { Helper for TLabA color }\n\n  TLabAHelper = record helper for TLabA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLChA: TLChA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLChA(AValue: TLChA);\n  {$ENDIF}\n  end;\n\n  { Helper for TLChA color }\n\n  TLChAHelper = record helper for TLChA\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    class function Colorspace: TColorspaceAny; static;\n  {$ENDIF}\n    function ToColor: TColor;\n    function ToBGRAPixel: TBGRAPixel;\n    function ToFPColor: TFPColor;\n    function ToByteMask: TByteMask;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    procedure FromColor(AValue: TColor);\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromFPColor(AValue: TFPColor);\n    procedure FromByteMask(AValue: TByteMask);\n    procedure FromExpandedPixel(AValue: TExpandedPixel);\n    procedure FromHSLAPixel(AValue: THSLAPixel);\n    procedure FromGSBAPixel(AValue: TGSBAPixel);\n  {$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n    function ToStdRGBA: TStdRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToYCbCr601: TYCbCr601;\n    function ToYCbCr601JPEG: TYCbCr601JPEG;\n    function ToYCbCr709: TYCbCr709;\n    function ToYCbCr709JPEG: TYCbCr709JPEG;\n    function ToXYZA: TXYZA;overload;\n    function ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\n    function ToWordXYZA: TWordXYZA;overload;\n    function ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\n    function ToLabA: TLabA;\n    procedure FromStdRGBA(AValue: TStdRGBA);\n    procedure FromAdobeRGBA(AValue: TAdobeRGBA);\n    procedure FromStdHSLA(AValue: TStdHSLA);\n    procedure FromStdHSVA(AValue: TStdHSVA);\n    procedure FromStdCMYK(AValue: TStdCMYK);\n    procedure FromLinearRGBA(AValue: TLinearRGBA);\n    procedure FromYCbCr601(AValue: TYCbCr601);\n    procedure FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\n    procedure FromYCbCr709(AValue: TYCbCr709);\n    procedure FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\n    procedure FromXYZA(AValue: TXYZA); overload;\n    procedure FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA); overload;\n    procedure FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\n    procedure FromLabA(AValue: TLabA);\n  {$ENDIF}\n  end;\n\n  {$ENDIF}\n{ Implicit conversion of a color from TColor to TByteMask }\noperator := (const AValue: TColor): TByteMask;\n{ Implicit conversion of a color from TBGRAPixel to TByteMask }\noperator := (const AValue: TBGRAPixel): TByteMask;\n{ Implicit conversion of a color from TFPColor to TByteMask }\noperator := (const AValue: TFPColor): TByteMask;\n{ Implicit conversion of a color from TByteMask to TColor }\noperator := (const AValue: TByteMask): TColor;\n{ Implicit conversion of a color from TByteMask to TBGRAPixel }\noperator := (const AValue: TByteMask): TBGRAPixel;\n{ Implicit conversion of a color from TByteMask to TFPColor }\noperator := (const AValue: TByteMask): TFPColor;\n{ Implicit conversion of a color from TByteMask to TExpandedPixel }\noperator := (const AValue: TByteMask): TExpandedPixel;\n{ Implicit conversion of a color from TExpandedPixel to TByteMask }\noperator := (const AValue: TExpandedPixel): TByteMask;\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{ Implicit conversion of a color from TColor to TStdRGBA }\noperator := (const AValue: TColor): TStdRGBA;\n{ Implicit conversion of a color from TColor to TAdobeRGBA }\noperator := (const AValue: TColor): TAdobeRGBA;\n{ Implicit conversion of a color from TColor to TStdHSLA }\noperator := (const AValue: TColor): TStdHSLA;\n{ Implicit conversion of a color from TColor to TStdHSVA }\noperator := (const AValue: TColor): TStdHSVA;\n{ Implicit conversion of a color from TColor to TStdCMYK }\noperator := (const AValue: TColor): TStdCMYK;\n{ Implicit conversion of a color from TColor to TLinearRGBA }\noperator := (const AValue: TColor): TLinearRGBA;\n{ Implicit conversion of a color from TColor to TYCbCr601 }\noperator := (const AValue: TColor): TYCbCr601;\n{ Implicit conversion of a color from TColor to TYCbCr601JPEG }\noperator := (const AValue: TColor): TYCbCr601JPEG;\n{ Implicit conversion of a color from TColor to TYCbCr709 }\noperator := (const AValue: TColor): TYCbCr709;\n{ Implicit conversion of a color from TColor to TYCbCr709JPEG }\noperator := (const AValue: TColor): TYCbCr709JPEG;\n{ Implicit conversion of a color from TColor to TXYZA }\noperator := (const AValue: TColor): TXYZA;\n{ Implicit conversion of a color from TColor to TWordXYZA }\noperator := (const AValue: TColor): TWordXYZA;\n{ Implicit conversion of a color from TColor to TLabA }\noperator := (const AValue: TColor): TLabA;\n{ Implicit conversion of a color from TColor to TLChA }\noperator := (const AValue: TColor): TLChA;\n{ Implicit conversion of a color from TBGRAPixel to TStdRGBA }\noperator := (const AValue: TBGRAPixel): TStdRGBA;\n{ Implicit conversion of a color from TBGRAPixel to TAdobeRGBA }\noperator := (const AValue: TBGRAPixel): TAdobeRGBA;\n{ Implicit conversion of a color from TBGRAPixel to TStdHSLA }\noperator := (const AValue: TBGRAPixel): TStdHSLA;\n{ Implicit conversion of a color from TBGRAPixel to TStdHSVA }\noperator := (const AValue: TBGRAPixel): TStdHSVA;\n{ Implicit conversion of a color from TBGRAPixel to TStdCMYK }\noperator := (const AValue: TBGRAPixel): TStdCMYK;\n{ Implicit conversion of a color from TBGRAPixel to TLinearRGBA }\noperator := (const AValue: TBGRAPixel): TLinearRGBA;\n{ Implicit conversion of a color from TBGRAPixel to TYCbCr601 }\noperator := (const AValue: TBGRAPixel): TYCbCr601;\n{ Implicit conversion of a color from TBGRAPixel to TYCbCr601JPEG }\noperator := (const AValue: TBGRAPixel): TYCbCr601JPEG;\n{ Implicit conversion of a color from TBGRAPixel to TYCbCr709 }\noperator := (const AValue: TBGRAPixel): TYCbCr709;\n{ Implicit conversion of a color from TBGRAPixel to TYCbCr709JPEG }\noperator := (const AValue: TBGRAPixel): TYCbCr709JPEG;\n{ Implicit conversion of a color from TBGRAPixel to TXYZA }\noperator := (const AValue: TBGRAPixel): TXYZA;\n{ Implicit conversion of a color from TBGRAPixel to TWordXYZA }\noperator := (const AValue: TBGRAPixel): TWordXYZA;\n{ Implicit conversion of a color from TBGRAPixel to TLabA }\noperator := (const AValue: TBGRAPixel): TLabA;\n{ Implicit conversion of a color from TBGRAPixel to TLChA }\noperator := (const AValue: TBGRAPixel): TLChA;\n{ Implicit conversion of a color from TFPColor to TStdRGBA }\noperator := (const AValue: TFPColor): TStdRGBA;\n{ Implicit conversion of a color from TFPColor to TAdobeRGBA }\noperator := (const AValue: TFPColor): TAdobeRGBA;\n{ Implicit conversion of a color from TFPColor to TStdHSLA }\noperator := (const AValue: TFPColor): TStdHSLA;\n{ Implicit conversion of a color from TFPColor to TStdHSVA }\noperator := (const AValue: TFPColor): TStdHSVA;\n{ Implicit conversion of a color from TFPColor to TStdCMYK }\noperator := (const AValue: TFPColor): TStdCMYK;\n{ Implicit conversion of a color from TFPColor to TLinearRGBA }\noperator := (const AValue: TFPColor): TLinearRGBA;\n{ Implicit conversion of a color from TFPColor to TYCbCr601 }\noperator := (const AValue: TFPColor): TYCbCr601;\n{ Implicit conversion of a color from TFPColor to TYCbCr601JPEG }\noperator := (const AValue: TFPColor): TYCbCr601JPEG;\n{ Implicit conversion of a color from TFPColor to TYCbCr709 }\noperator := (const AValue: TFPColor): TYCbCr709;\n{ Implicit conversion of a color from TFPColor to TYCbCr709JPEG }\noperator := (const AValue: TFPColor): TYCbCr709JPEG;\n{ Implicit conversion of a color from TFPColor to TXYZA }\noperator := (const AValue: TFPColor): TXYZA;\n{ Implicit conversion of a color from TFPColor to TWordXYZA }\noperator := (const AValue: TFPColor): TWordXYZA;\n{ Implicit conversion of a color from TFPColor to TLabA }\noperator := (const AValue: TFPColor): TLabA;\n{ Implicit conversion of a color from TFPColor to TLChA }\noperator := (const AValue: TFPColor): TLChA;\n{ Implicit conversion of a color from TStdRGBA to TColor }\noperator := (const AValue: TStdRGBA): TColor;\n{ Implicit conversion of a color from TStdRGBA to TBGRAPixel }\noperator := (const AValue: TStdRGBA): TBGRAPixel;\n{ Implicit conversion of a color from TStdRGBA to TFPColor }\noperator := (const AValue: TStdRGBA): TFPColor;\n{ Implicit conversion of a color from TStdRGBA to TAdobeRGBA }\noperator := (const AValue: TStdRGBA): TAdobeRGBA;\n{ Implicit conversion of a color from TStdRGBA to TStdHSLA }\noperator := (const AValue: TStdRGBA): TStdHSLA;\n{ Implicit conversion of a color from TStdRGBA to TStdHSVA }\noperator := (const AValue: TStdRGBA): TStdHSVA;\n{ Implicit conversion of a color from TStdRGBA to TStdCMYK }\noperator := (const AValue: TStdRGBA): TStdCMYK;\n{ Implicit conversion of a color from TStdRGBA to TByteMask }\noperator := (const AValue: TStdRGBA): TByteMask;\n{ Implicit conversion of a color from TStdRGBA to TExpandedPixel }\noperator := (const AValue: TStdRGBA): TExpandedPixel;\n{ Implicit conversion of a color from TStdRGBA to TLinearRGBA }\noperator := (const AValue: TStdRGBA): TLinearRGBA;\n{ Implicit conversion of a color from TStdRGBA to THSLAPixel }\noperator := (const AValue: TStdRGBA): THSLAPixel;\n{ Implicit conversion of a color from TStdRGBA to TGSBAPixel }\noperator := (const AValue: TStdRGBA): TGSBAPixel;\n{ Implicit conversion of a color from TStdRGBA to TYCbCr601 }\noperator := (const AValue: TStdRGBA): TYCbCr601;\n{ Implicit conversion of a color from TStdRGBA to TYCbCr601JPEG }\noperator := (const AValue: TStdRGBA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TStdRGBA to TYCbCr709 }\noperator := (const AValue: TStdRGBA): TYCbCr709;\n{ Implicit conversion of a color from TStdRGBA to TYCbCr709JPEG }\noperator := (const AValue: TStdRGBA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TStdRGBA to TXYZA }\noperator := (const AValue: TStdRGBA): TXYZA;\n{ Implicit conversion of a color from TStdRGBA to TWordXYZA }\noperator := (const AValue: TStdRGBA): TWordXYZA;\n{ Implicit conversion of a color from TStdRGBA to TLabA }\noperator := (const AValue: TStdRGBA): TLabA;\n{ Implicit conversion of a color from TStdRGBA to TLChA }\noperator := (const AValue: TStdRGBA): TLChA;\n{ Implicit conversion of a color from TAdobeRGBA to TColor }\noperator := (const AValue: TAdobeRGBA): TColor;\n{ Implicit conversion of a color from TAdobeRGBA to TBGRAPixel }\noperator := (const AValue: TAdobeRGBA): TBGRAPixel;\n{ Implicit conversion of a color from TAdobeRGBA to TFPColor }\noperator := (const AValue: TAdobeRGBA): TFPColor;\n{ Implicit conversion of a color from TAdobeRGBA to TStdRGBA }\noperator := (const AValue: TAdobeRGBA): TStdRGBA;\n{ Implicit conversion of a color from TAdobeRGBA to TStdHSLA }\noperator := (const AValue: TAdobeRGBA): TStdHSLA;\n{ Implicit conversion of a color from TAdobeRGBA to TStdHSVA }\noperator := (const AValue: TAdobeRGBA): TStdHSVA;\n{ Implicit conversion of a color from TAdobeRGBA to TStdCMYK }\noperator := (const AValue: TAdobeRGBA): TStdCMYK;\n{ Implicit conversion of a color from TAdobeRGBA to TByteMask }\noperator := (const AValue: TAdobeRGBA): TByteMask;\n{ Implicit conversion of a color from TAdobeRGBA to TExpandedPixel }\noperator := (const AValue: TAdobeRGBA): TExpandedPixel;\n{ Implicit conversion of a color from TAdobeRGBA to TLinearRGBA }\noperator := (const AValue: TAdobeRGBA): TLinearRGBA;\n{ Implicit conversion of a color from TAdobeRGBA to THSLAPixel }\noperator := (const AValue: TAdobeRGBA): THSLAPixel;\n{ Implicit conversion of a color from TAdobeRGBA to TGSBAPixel }\noperator := (const AValue: TAdobeRGBA): TGSBAPixel;\n{ Implicit conversion of a color from TAdobeRGBA to TYCbCr601 }\noperator := (const AValue: TAdobeRGBA): TYCbCr601;\n{ Implicit conversion of a color from TAdobeRGBA to TYCbCr601JPEG }\noperator := (const AValue: TAdobeRGBA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TAdobeRGBA to TYCbCr709 }\noperator := (const AValue: TAdobeRGBA): TYCbCr709;\n{ Implicit conversion of a color from TAdobeRGBA to TYCbCr709JPEG }\noperator := (const AValue: TAdobeRGBA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TAdobeRGBA to TXYZA }\noperator := (const AValue: TAdobeRGBA): TXYZA;\n{ Implicit conversion of a color from TAdobeRGBA to TWordXYZA }\noperator := (const AValue: TAdobeRGBA): TWordXYZA;\n{ Implicit conversion of a color from TAdobeRGBA to TLabA }\noperator := (const AValue: TAdobeRGBA): TLabA;\n{ Implicit conversion of a color from TAdobeRGBA to TLChA }\noperator := (const AValue: TAdobeRGBA): TLChA;\n{ Implicit conversion of a color from TStdHSLA to TColor }\noperator := (const AValue: TStdHSLA): TColor;\n{ Implicit conversion of a color from TStdHSLA to TBGRAPixel }\noperator := (const AValue: TStdHSLA): TBGRAPixel;\n{ Implicit conversion of a color from TStdHSLA to TFPColor }\noperator := (const AValue: TStdHSLA): TFPColor;\n{ Implicit conversion of a color from TStdHSLA to TStdRGBA }\noperator := (const AValue: TStdHSLA): TStdRGBA;\n{ Implicit conversion of a color from TStdHSLA to TAdobeRGBA }\noperator := (const AValue: TStdHSLA): TAdobeRGBA;\n{ Implicit conversion of a color from TStdHSLA to TStdHSVA }\noperator := (const AValue: TStdHSLA): TStdHSVA;\n{ Implicit conversion of a color from TStdHSLA to TStdCMYK }\noperator := (const AValue: TStdHSLA): TStdCMYK;\n{ Implicit conversion of a color from TStdHSLA to TByteMask }\noperator := (const AValue: TStdHSLA): TByteMask;\n{ Implicit conversion of a color from TStdHSLA to TExpandedPixel }\noperator := (const AValue: TStdHSLA): TExpandedPixel;\n{ Implicit conversion of a color from TStdHSLA to TLinearRGBA }\noperator := (const AValue: TStdHSLA): TLinearRGBA;\n{ Implicit conversion of a color from TStdHSLA to THSLAPixel }\noperator := (const AValue: TStdHSLA): THSLAPixel;\n{ Implicit conversion of a color from TStdHSLA to TGSBAPixel }\noperator := (const AValue: TStdHSLA): TGSBAPixel;\n{ Implicit conversion of a color from TStdHSLA to TYCbCr601 }\noperator := (const AValue: TStdHSLA): TYCbCr601;\n{ Implicit conversion of a color from TStdHSLA to TYCbCr601JPEG }\noperator := (const AValue: TStdHSLA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TStdHSLA to TYCbCr709 }\noperator := (const AValue: TStdHSLA): TYCbCr709;\n{ Implicit conversion of a color from TStdHSLA to TYCbCr709JPEG }\noperator := (const AValue: TStdHSLA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TStdHSLA to TXYZA }\noperator := (const AValue: TStdHSLA): TXYZA;\n{ Implicit conversion of a color from TStdHSLA to TWordXYZA }\noperator := (const AValue: TStdHSLA): TWordXYZA;\n{ Implicit conversion of a color from TStdHSLA to TLabA }\noperator := (const AValue: TStdHSLA): TLabA;\n{ Implicit conversion of a color from TStdHSLA to TLChA }\noperator := (const AValue: TStdHSLA): TLChA;\n{ Implicit conversion of a color from TStdHSVA to TColor }\noperator := (const AValue: TStdHSVA): TColor;\n{ Implicit conversion of a color from TStdHSVA to TBGRAPixel }\noperator := (const AValue: TStdHSVA): TBGRAPixel;\n{ Implicit conversion of a color from TStdHSVA to TFPColor }\noperator := (const AValue: TStdHSVA): TFPColor;\n{ Implicit conversion of a color from TStdHSVA to TStdRGBA }\noperator := (const AValue: TStdHSVA): TStdRGBA;\n{ Implicit conversion of a color from TStdHSVA to TAdobeRGBA }\noperator := (const AValue: TStdHSVA): TAdobeRGBA;\n{ Implicit conversion of a color from TStdHSVA to TStdHSLA }\noperator := (const AValue: TStdHSVA): TStdHSLA;\n{ Implicit conversion of a color from TStdHSVA to TStdCMYK }\noperator := (const AValue: TStdHSVA): TStdCMYK;\n{ Implicit conversion of a color from TStdHSVA to TByteMask }\noperator := (const AValue: TStdHSVA): TByteMask;\n{ Implicit conversion of a color from TStdHSVA to TExpandedPixel }\noperator := (const AValue: TStdHSVA): TExpandedPixel;\n{ Implicit conversion of a color from TStdHSVA to TLinearRGBA }\noperator := (const AValue: TStdHSVA): TLinearRGBA;\n{ Implicit conversion of a color from TStdHSVA to THSLAPixel }\noperator := (const AValue: TStdHSVA): THSLAPixel;\n{ Implicit conversion of a color from TStdHSVA to TGSBAPixel }\noperator := (const AValue: TStdHSVA): TGSBAPixel;\n{ Implicit conversion of a color from TStdHSVA to TYCbCr601 }\noperator := (const AValue: TStdHSVA): TYCbCr601;\n{ Implicit conversion of a color from TStdHSVA to TYCbCr601JPEG }\noperator := (const AValue: TStdHSVA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TStdHSVA to TYCbCr709 }\noperator := (const AValue: TStdHSVA): TYCbCr709;\n{ Implicit conversion of a color from TStdHSVA to TYCbCr709JPEG }\noperator := (const AValue: TStdHSVA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TStdHSVA to TXYZA }\noperator := (const AValue: TStdHSVA): TXYZA;\n{ Implicit conversion of a color from TStdHSVA to TWordXYZA }\noperator := (const AValue: TStdHSVA): TWordXYZA;\n{ Implicit conversion of a color from TStdHSVA to TLabA }\noperator := (const AValue: TStdHSVA): TLabA;\n{ Implicit conversion of a color from TStdHSVA to TLChA }\noperator := (const AValue: TStdHSVA): TLChA;\n{ Implicit conversion of a color from TStdCMYK to TColor }\noperator := (const AValue: TStdCMYK): TColor;\n{ Implicit conversion of a color from TStdCMYK to TBGRAPixel }\noperator := (const AValue: TStdCMYK): TBGRAPixel;\n{ Implicit conversion of a color from TStdCMYK to TFPColor }\noperator := (const AValue: TStdCMYK): TFPColor;\n{ Implicit conversion of a color from TStdCMYK to TStdRGBA }\noperator := (const AValue: TStdCMYK): TStdRGBA;\n{ Implicit conversion of a color from TStdCMYK to TAdobeRGBA }\noperator := (const AValue: TStdCMYK): TAdobeRGBA;\n{ Implicit conversion of a color from TStdCMYK to TStdHSLA }\noperator := (const AValue: TStdCMYK): TStdHSLA;\n{ Implicit conversion of a color from TStdCMYK to TStdHSVA }\noperator := (const AValue: TStdCMYK): TStdHSVA;\n{ Implicit conversion of a color from TStdCMYK to TByteMask }\noperator := (const AValue: TStdCMYK): TByteMask;\n{ Implicit conversion of a color from TStdCMYK to TExpandedPixel }\noperator := (const AValue: TStdCMYK): TExpandedPixel;\n{ Implicit conversion of a color from TStdCMYK to TLinearRGBA }\noperator := (const AValue: TStdCMYK): TLinearRGBA;\n{ Implicit conversion of a color from TStdCMYK to THSLAPixel }\noperator := (const AValue: TStdCMYK): THSLAPixel;\n{ Implicit conversion of a color from TStdCMYK to TGSBAPixel }\noperator := (const AValue: TStdCMYK): TGSBAPixel;\n{ Implicit conversion of a color from TStdCMYK to TYCbCr601 }\noperator := (const AValue: TStdCMYK): TYCbCr601;\n{ Implicit conversion of a color from TStdCMYK to TYCbCr601JPEG }\noperator := (const AValue: TStdCMYK): TYCbCr601JPEG;\n{ Implicit conversion of a color from TStdCMYK to TYCbCr709 }\noperator := (const AValue: TStdCMYK): TYCbCr709;\n{ Implicit conversion of a color from TStdCMYK to TYCbCr709JPEG }\noperator := (const AValue: TStdCMYK): TYCbCr709JPEG;\n{ Implicit conversion of a color from TStdCMYK to TXYZA }\noperator := (const AValue: TStdCMYK): TXYZA;\n{ Implicit conversion of a color from TStdCMYK to TWordXYZA }\noperator := (const AValue: TStdCMYK): TWordXYZA;\n{ Implicit conversion of a color from TStdCMYK to TLabA }\noperator := (const AValue: TStdCMYK): TLabA;\n{ Implicit conversion of a color from TStdCMYK to TLChA }\noperator := (const AValue: TStdCMYK): TLChA;\n{ Implicit conversion of a color from TByteMask to TStdRGBA }\noperator := (const AValue: TByteMask): TStdRGBA;\n{ Implicit conversion of a color from TByteMask to TAdobeRGBA }\noperator := (const AValue: TByteMask): TAdobeRGBA;\n{ Implicit conversion of a color from TByteMask to TStdHSLA }\noperator := (const AValue: TByteMask): TStdHSLA;\n{ Implicit conversion of a color from TByteMask to TStdHSVA }\noperator := (const AValue: TByteMask): TStdHSVA;\n{ Implicit conversion of a color from TByteMask to TStdCMYK }\noperator := (const AValue: TByteMask): TStdCMYK;\n{ Implicit conversion of a color from TByteMask to TLinearRGBA }\noperator := (const AValue: TByteMask): TLinearRGBA;\n{ Implicit conversion of a color from TByteMask to THSLAPixel }\noperator := (const AValue: TByteMask): THSLAPixel;\n{ Implicit conversion of a color from TByteMask to TGSBAPixel }\noperator := (const AValue: TByteMask): TGSBAPixel;\n{ Implicit conversion of a color from TByteMask to TYCbCr601 }\noperator := (const AValue: TByteMask): TYCbCr601;\n{ Implicit conversion of a color from TByteMask to TYCbCr601JPEG }\noperator := (const AValue: TByteMask): TYCbCr601JPEG;\n{ Implicit conversion of a color from TByteMask to TYCbCr709 }\noperator := (const AValue: TByteMask): TYCbCr709;\n{ Implicit conversion of a color from TByteMask to TYCbCr709JPEG }\noperator := (const AValue: TByteMask): TYCbCr709JPEG;\n{ Implicit conversion of a color from TByteMask to TXYZA }\noperator := (const AValue: TByteMask): TXYZA;\n{ Implicit conversion of a color from TByteMask to TWordXYZA }\noperator := (const AValue: TByteMask): TWordXYZA;\n{ Implicit conversion of a color from TByteMask to TLabA }\noperator := (const AValue: TByteMask): TLabA;\n{ Implicit conversion of a color from TByteMask to TLChA }\noperator := (const AValue: TByteMask): TLChA;\n{ Implicit conversion of a color from TExpandedPixel to TStdRGBA }\noperator := (const AValue: TExpandedPixel): TStdRGBA;\n{ Implicit conversion of a color from TExpandedPixel to TAdobeRGBA }\noperator := (const AValue: TExpandedPixel): TAdobeRGBA;\n{ Implicit conversion of a color from TExpandedPixel to TStdHSLA }\noperator := (const AValue: TExpandedPixel): TStdHSLA;\n{ Implicit conversion of a color from TExpandedPixel to TStdHSVA }\noperator := (const AValue: TExpandedPixel): TStdHSVA;\n{ Implicit conversion of a color from TExpandedPixel to TStdCMYK }\noperator := (const AValue: TExpandedPixel): TStdCMYK;\n{ Implicit conversion of a color from TExpandedPixel to TLinearRGBA }\noperator := (const AValue: TExpandedPixel): TLinearRGBA;\n{ Implicit conversion of a color from TExpandedPixel to TYCbCr601 }\noperator := (const AValue: TExpandedPixel): TYCbCr601;\n{ Implicit conversion of a color from TExpandedPixel to TYCbCr601JPEG }\noperator := (const AValue: TExpandedPixel): TYCbCr601JPEG;\n{ Implicit conversion of a color from TExpandedPixel to TYCbCr709 }\noperator := (const AValue: TExpandedPixel): TYCbCr709;\n{ Implicit conversion of a color from TExpandedPixel to TYCbCr709JPEG }\noperator := (const AValue: TExpandedPixel): TYCbCr709JPEG;\n{ Implicit conversion of a color from TExpandedPixel to TXYZA }\noperator := (const AValue: TExpandedPixel): TXYZA;\n{ Implicit conversion of a color from TExpandedPixel to TWordXYZA }\noperator := (const AValue: TExpandedPixel): TWordXYZA;\n{ Implicit conversion of a color from TExpandedPixel to TLabA }\noperator := (const AValue: TExpandedPixel): TLabA;\n{ Implicit conversion of a color from TExpandedPixel to TLChA }\noperator := (const AValue: TExpandedPixel): TLChA;\n{ Implicit conversion of a color from TLinearRGBA to TColor }\noperator := (const AValue: TLinearRGBA): TColor;\n{ Implicit conversion of a color from TLinearRGBA to TBGRAPixel }\noperator := (const AValue: TLinearRGBA): TBGRAPixel;\n{ Implicit conversion of a color from TLinearRGBA to TFPColor }\noperator := (const AValue: TLinearRGBA): TFPColor;\n{ Implicit conversion of a color from TLinearRGBA to TStdRGBA }\noperator := (const AValue: TLinearRGBA): TStdRGBA;\n{ Implicit conversion of a color from TLinearRGBA to TAdobeRGBA }\noperator := (const AValue: TLinearRGBA): TAdobeRGBA;\n{ Implicit conversion of a color from TLinearRGBA to TStdHSLA }\noperator := (const AValue: TLinearRGBA): TStdHSLA;\n{ Implicit conversion of a color from TLinearRGBA to TStdHSVA }\noperator := (const AValue: TLinearRGBA): TStdHSVA;\n{ Implicit conversion of a color from TLinearRGBA to TStdCMYK }\noperator := (const AValue: TLinearRGBA): TStdCMYK;\n{ Implicit conversion of a color from TLinearRGBA to TByteMask }\noperator := (const AValue: TLinearRGBA): TByteMask;\n{ Implicit conversion of a color from TLinearRGBA to TExpandedPixel }\noperator := (const AValue: TLinearRGBA): TExpandedPixel;\n{ Implicit conversion of a color from TLinearRGBA to THSLAPixel }\noperator := (const AValue: TLinearRGBA): THSLAPixel;\n{ Implicit conversion of a color from TLinearRGBA to TGSBAPixel }\noperator := (const AValue: TLinearRGBA): TGSBAPixel;\n{ Implicit conversion of a color from TLinearRGBA to TYCbCr601 }\noperator := (const AValue: TLinearRGBA): TYCbCr601;\n{ Implicit conversion of a color from TLinearRGBA to TYCbCr601JPEG }\noperator := (const AValue: TLinearRGBA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TLinearRGBA to TYCbCr709 }\noperator := (const AValue: TLinearRGBA): TYCbCr709;\n{ Implicit conversion of a color from TLinearRGBA to TYCbCr709JPEG }\noperator := (const AValue: TLinearRGBA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TLinearRGBA to TXYZA }\noperator := (const AValue: TLinearRGBA): TXYZA;\n{ Implicit conversion of a color from TLinearRGBA to TWordXYZA }\noperator := (const AValue: TLinearRGBA): TWordXYZA;\n{ Implicit conversion of a color from TLinearRGBA to TLabA }\noperator := (const AValue: TLinearRGBA): TLabA;\n{ Implicit conversion of a color from TLinearRGBA to TLChA }\noperator := (const AValue: TLinearRGBA): TLChA;\n{ Implicit conversion of a color from THSLAPixel to TStdRGBA }\noperator := (const AValue: THSLAPixel): TStdRGBA;\n{ Implicit conversion of a color from THSLAPixel to TAdobeRGBA }\noperator := (const AValue: THSLAPixel): TAdobeRGBA;\n{ Implicit conversion of a color from THSLAPixel to TStdHSLA }\noperator := (const AValue: THSLAPixel): TStdHSLA;\n{ Implicit conversion of a color from THSLAPixel to TStdHSVA }\noperator := (const AValue: THSLAPixel): TStdHSVA;\n{ Implicit conversion of a color from THSLAPixel to TStdCMYK }\noperator := (const AValue: THSLAPixel): TStdCMYK;\n{ Implicit conversion of a color from THSLAPixel to TByteMask }\noperator := (const AValue: THSLAPixel): TByteMask;\n{ Implicit conversion of a color from THSLAPixel to TLinearRGBA }\noperator := (const AValue: THSLAPixel): TLinearRGBA;\n{ Implicit conversion of a color from THSLAPixel to TYCbCr601 }\noperator := (const AValue: THSLAPixel): TYCbCr601;\n{ Implicit conversion of a color from THSLAPixel to TYCbCr601JPEG }\noperator := (const AValue: THSLAPixel): TYCbCr601JPEG;\n{ Implicit conversion of a color from THSLAPixel to TYCbCr709 }\noperator := (const AValue: THSLAPixel): TYCbCr709;\n{ Implicit conversion of a color from THSLAPixel to TYCbCr709JPEG }\noperator := (const AValue: THSLAPixel): TYCbCr709JPEG;\n{ Implicit conversion of a color from THSLAPixel to TXYZA }\noperator := (const AValue: THSLAPixel): TXYZA;\n{ Implicit conversion of a color from THSLAPixel to TWordXYZA }\noperator := (const AValue: THSLAPixel): TWordXYZA;\n{ Implicit conversion of a color from THSLAPixel to TLabA }\noperator := (const AValue: THSLAPixel): TLabA;\n{ Implicit conversion of a color from THSLAPixel to TLChA }\noperator := (const AValue: THSLAPixel): TLChA;\n{ Implicit conversion of a color from TGSBAPixel to TStdRGBA }\noperator := (const AValue: TGSBAPixel): TStdRGBA;\n{ Implicit conversion of a color from TGSBAPixel to TAdobeRGBA }\noperator := (const AValue: TGSBAPixel): TAdobeRGBA;\n{ Implicit conversion of a color from TGSBAPixel to TStdHSLA }\noperator := (const AValue: TGSBAPixel): TStdHSLA;\n{ Implicit conversion of a color from TGSBAPixel to TStdHSVA }\noperator := (const AValue: TGSBAPixel): TStdHSVA;\n{ Implicit conversion of a color from TGSBAPixel to TStdCMYK }\noperator := (const AValue: TGSBAPixel): TStdCMYK;\n{ Implicit conversion of a color from TGSBAPixel to TByteMask }\noperator := (const AValue: TGSBAPixel): TByteMask;\n{ Implicit conversion of a color from TGSBAPixel to TLinearRGBA }\noperator := (const AValue: TGSBAPixel): TLinearRGBA;\n{ Implicit conversion of a color from TGSBAPixel to TYCbCr601 }\noperator := (const AValue: TGSBAPixel): TYCbCr601;\n{ Implicit conversion of a color from TGSBAPixel to TYCbCr601JPEG }\noperator := (const AValue: TGSBAPixel): TYCbCr601JPEG;\n{ Implicit conversion of a color from TGSBAPixel to TYCbCr709 }\noperator := (const AValue: TGSBAPixel): TYCbCr709;\n{ Implicit conversion of a color from TGSBAPixel to TYCbCr709JPEG }\noperator := (const AValue: TGSBAPixel): TYCbCr709JPEG;\n{ Implicit conversion of a color from TGSBAPixel to TXYZA }\noperator := (const AValue: TGSBAPixel): TXYZA;\n{ Implicit conversion of a color from TGSBAPixel to TWordXYZA }\noperator := (const AValue: TGSBAPixel): TWordXYZA;\n{ Implicit conversion of a color from TGSBAPixel to TLabA }\noperator := (const AValue: TGSBAPixel): TLabA;\n{ Implicit conversion of a color from TGSBAPixel to TLChA }\noperator := (const AValue: TGSBAPixel): TLChA;\n{ Implicit conversion of a color from TYCbCr601 to TColor }\noperator := (const AValue: TYCbCr601): TColor;\n{ Implicit conversion of a color from TYCbCr601 to TBGRAPixel }\noperator := (const AValue: TYCbCr601): TBGRAPixel;\n{ Implicit conversion of a color from TYCbCr601 to TFPColor }\noperator := (const AValue: TYCbCr601): TFPColor;\n{ Implicit conversion of a color from TYCbCr601 to TStdRGBA }\noperator := (const AValue: TYCbCr601): TStdRGBA;\n{ Implicit conversion of a color from TYCbCr601 to TAdobeRGBA }\noperator := (const AValue: TYCbCr601): TAdobeRGBA;\n{ Implicit conversion of a color from TYCbCr601 to TStdHSLA }\noperator := (const AValue: TYCbCr601): TStdHSLA;\n{ Implicit conversion of a color from TYCbCr601 to TStdHSVA }\noperator := (const AValue: TYCbCr601): TStdHSVA;\n{ Implicit conversion of a color from TYCbCr601 to TStdCMYK }\noperator := (const AValue: TYCbCr601): TStdCMYK;\n{ Implicit conversion of a color from TYCbCr601 to TByteMask }\noperator := (const AValue: TYCbCr601): TByteMask;\n{ Implicit conversion of a color from TYCbCr601 to TExpandedPixel }\noperator := (const AValue: TYCbCr601): TExpandedPixel;\n{ Implicit conversion of a color from TYCbCr601 to TLinearRGBA }\noperator := (const AValue: TYCbCr601): TLinearRGBA;\n{ Implicit conversion of a color from TYCbCr601 to THSLAPixel }\noperator := (const AValue: TYCbCr601): THSLAPixel;\n{ Implicit conversion of a color from TYCbCr601 to TGSBAPixel }\noperator := (const AValue: TYCbCr601): TGSBAPixel;\n{ Implicit conversion of a color from TYCbCr601 to TYCbCr601JPEG }\noperator := (const AValue: TYCbCr601): TYCbCr601JPEG;\n{ Implicit conversion of a color from TYCbCr601 to TYCbCr709 }\noperator := (const AValue: TYCbCr601): TYCbCr709;\n{ Implicit conversion of a color from TYCbCr601 to TYCbCr709JPEG }\noperator := (const AValue: TYCbCr601): TYCbCr709JPEG;\n{ Implicit conversion of a color from TYCbCr601 to TXYZA }\noperator := (const AValue: TYCbCr601): TXYZA;\n{ Implicit conversion of a color from TYCbCr601 to TWordXYZA }\noperator := (const AValue: TYCbCr601): TWordXYZA;\n{ Implicit conversion of a color from TYCbCr601 to TLabA }\noperator := (const AValue: TYCbCr601): TLabA;\n{ Implicit conversion of a color from TYCbCr601 to TLChA }\noperator := (const AValue: TYCbCr601): TLChA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TColor }\noperator := (const AValue: TYCbCr601JPEG): TColor;\n{ Implicit conversion of a color from TYCbCr601JPEG to TBGRAPixel }\noperator := (const AValue: TYCbCr601JPEG): TBGRAPixel;\n{ Implicit conversion of a color from TYCbCr601JPEG to TFPColor }\noperator := (const AValue: TYCbCr601JPEG): TFPColor;\n{ Implicit conversion of a color from TYCbCr601JPEG to TStdRGBA }\noperator := (const AValue: TYCbCr601JPEG): TStdRGBA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TAdobeRGBA }\noperator := (const AValue: TYCbCr601JPEG): TAdobeRGBA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TStdHSLA }\noperator := (const AValue: TYCbCr601JPEG): TStdHSLA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TStdHSVA }\noperator := (const AValue: TYCbCr601JPEG): TStdHSVA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TStdCMYK }\noperator := (const AValue: TYCbCr601JPEG): TStdCMYK;\n{ Implicit conversion of a color from TYCbCr601JPEG to TByteMask }\noperator := (const AValue: TYCbCr601JPEG): TByteMask;\n{ Implicit conversion of a color from TYCbCr601JPEG to TExpandedPixel }\noperator := (const AValue: TYCbCr601JPEG): TExpandedPixel;\n{ Implicit conversion of a color from TYCbCr601JPEG to TLinearRGBA }\noperator := (const AValue: TYCbCr601JPEG): TLinearRGBA;\n{ Implicit conversion of a color from TYCbCr601JPEG to THSLAPixel }\noperator := (const AValue: TYCbCr601JPEG): THSLAPixel;\n{ Implicit conversion of a color from TYCbCr601JPEG to TGSBAPixel }\noperator := (const AValue: TYCbCr601JPEG): TGSBAPixel;\n{ Implicit conversion of a color from TYCbCr601JPEG to TYCbCr601 }\noperator := (const AValue: TYCbCr601JPEG): TYCbCr601;\n{ Implicit conversion of a color from TYCbCr601JPEG to TYCbCr709 }\noperator := (const AValue: TYCbCr601JPEG): TYCbCr709;\n{ Implicit conversion of a color from TYCbCr601JPEG to TYCbCr709JPEG }\noperator := (const AValue: TYCbCr601JPEG): TYCbCr709JPEG;\n{ Implicit conversion of a color from TYCbCr601JPEG to TXYZA }\noperator := (const AValue: TYCbCr601JPEG): TXYZA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TWordXYZA }\noperator := (const AValue: TYCbCr601JPEG): TWordXYZA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TLabA }\noperator := (const AValue: TYCbCr601JPEG): TLabA;\n{ Implicit conversion of a color from TYCbCr601JPEG to TLChA }\noperator := (const AValue: TYCbCr601JPEG): TLChA;\n{ Implicit conversion of a color from TYCbCr709 to TColor }\noperator := (const AValue: TYCbCr709): TColor;\n{ Implicit conversion of a color from TYCbCr709 to TBGRAPixel }\noperator := (const AValue: TYCbCr709): TBGRAPixel;\n{ Implicit conversion of a color from TYCbCr709 to TFPColor }\noperator := (const AValue: TYCbCr709): TFPColor;\n{ Implicit conversion of a color from TYCbCr709 to TStdRGBA }\noperator := (const AValue: TYCbCr709): TStdRGBA;\n{ Implicit conversion of a color from TYCbCr709 to TAdobeRGBA }\noperator := (const AValue: TYCbCr709): TAdobeRGBA;\n{ Implicit conversion of a color from TYCbCr709 to TStdHSLA }\noperator := (const AValue: TYCbCr709): TStdHSLA;\n{ Implicit conversion of a color from TYCbCr709 to TStdHSVA }\noperator := (const AValue: TYCbCr709): TStdHSVA;\n{ Implicit conversion of a color from TYCbCr709 to TStdCMYK }\noperator := (const AValue: TYCbCr709): TStdCMYK;\n{ Implicit conversion of a color from TYCbCr709 to TByteMask }\noperator := (const AValue: TYCbCr709): TByteMask;\n{ Implicit conversion of a color from TYCbCr709 to TExpandedPixel }\noperator := (const AValue: TYCbCr709): TExpandedPixel;\n{ Implicit conversion of a color from TYCbCr709 to TLinearRGBA }\noperator := (const AValue: TYCbCr709): TLinearRGBA;\n{ Implicit conversion of a color from TYCbCr709 to THSLAPixel }\noperator := (const AValue: TYCbCr709): THSLAPixel;\n{ Implicit conversion of a color from TYCbCr709 to TGSBAPixel }\noperator := (const AValue: TYCbCr709): TGSBAPixel;\n{ Implicit conversion of a color from TYCbCr709 to TYCbCr601 }\noperator := (const AValue: TYCbCr709): TYCbCr601;\n{ Implicit conversion of a color from TYCbCr709 to TYCbCr601JPEG }\noperator := (const AValue: TYCbCr709): TYCbCr601JPEG;\n{ Implicit conversion of a color from TYCbCr709 to TYCbCr709JPEG }\noperator := (const AValue: TYCbCr709): TYCbCr709JPEG;\n{ Implicit conversion of a color from TYCbCr709 to TXYZA }\noperator := (const AValue: TYCbCr709): TXYZA;\n{ Implicit conversion of a color from TYCbCr709 to TWordXYZA }\noperator := (const AValue: TYCbCr709): TWordXYZA;\n{ Implicit conversion of a color from TYCbCr709 to TLabA }\noperator := (const AValue: TYCbCr709): TLabA;\n{ Implicit conversion of a color from TYCbCr709 to TLChA }\noperator := (const AValue: TYCbCr709): TLChA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TColor }\noperator := (const AValue: TYCbCr709JPEG): TColor;\n{ Implicit conversion of a color from TYCbCr709JPEG to TBGRAPixel }\noperator := (const AValue: TYCbCr709JPEG): TBGRAPixel;\n{ Implicit conversion of a color from TYCbCr709JPEG to TFPColor }\noperator := (const AValue: TYCbCr709JPEG): TFPColor;\n{ Implicit conversion of a color from TYCbCr709JPEG to TStdRGBA }\noperator := (const AValue: TYCbCr709JPEG): TStdRGBA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TAdobeRGBA }\noperator := (const AValue: TYCbCr709JPEG): TAdobeRGBA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TStdHSLA }\noperator := (const AValue: TYCbCr709JPEG): TStdHSLA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TStdHSVA }\noperator := (const AValue: TYCbCr709JPEG): TStdHSVA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TStdCMYK }\noperator := (const AValue: TYCbCr709JPEG): TStdCMYK;\n{ Implicit conversion of a color from TYCbCr709JPEG to TByteMask }\noperator := (const AValue: TYCbCr709JPEG): TByteMask;\n{ Implicit conversion of a color from TYCbCr709JPEG to TExpandedPixel }\noperator := (const AValue: TYCbCr709JPEG): TExpandedPixel;\n{ Implicit conversion of a color from TYCbCr709JPEG to TLinearRGBA }\noperator := (const AValue: TYCbCr709JPEG): TLinearRGBA;\n{ Implicit conversion of a color from TYCbCr709JPEG to THSLAPixel }\noperator := (const AValue: TYCbCr709JPEG): THSLAPixel;\n{ Implicit conversion of a color from TYCbCr709JPEG to TGSBAPixel }\noperator := (const AValue: TYCbCr709JPEG): TGSBAPixel;\n{ Implicit conversion of a color from TYCbCr709JPEG to TYCbCr601 }\noperator := (const AValue: TYCbCr709JPEG): TYCbCr601;\n{ Implicit conversion of a color from TYCbCr709JPEG to TYCbCr601JPEG }\noperator := (const AValue: TYCbCr709JPEG): TYCbCr601JPEG;\n{ Implicit conversion of a color from TYCbCr709JPEG to TYCbCr709 }\noperator := (const AValue: TYCbCr709JPEG): TYCbCr709;\n{ Implicit conversion of a color from TYCbCr709JPEG to TXYZA }\noperator := (const AValue: TYCbCr709JPEG): TXYZA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TWordXYZA }\noperator := (const AValue: TYCbCr709JPEG): TWordXYZA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TLabA }\noperator := (const AValue: TYCbCr709JPEG): TLabA;\n{ Implicit conversion of a color from TYCbCr709JPEG to TLChA }\noperator := (const AValue: TYCbCr709JPEG): TLChA;\n{ Implicit conversion of a color from TXYZA to TColor }\noperator := (const AValue: TXYZA): TColor;\n{ Implicit conversion of a color from TXYZA to TBGRAPixel }\noperator := (const AValue: TXYZA): TBGRAPixel;\n{ Implicit conversion of a color from TXYZA to TFPColor }\noperator := (const AValue: TXYZA): TFPColor;\n{ Implicit conversion of a color from TXYZA to TStdRGBA }\noperator := (const AValue: TXYZA): TStdRGBA;\n{ Implicit conversion of a color from TXYZA to TAdobeRGBA }\noperator := (const AValue: TXYZA): TAdobeRGBA;\n{ Implicit conversion of a color from TXYZA to TStdHSLA }\noperator := (const AValue: TXYZA): TStdHSLA;\n{ Implicit conversion of a color from TXYZA to TStdHSVA }\noperator := (const AValue: TXYZA): TStdHSVA;\n{ Implicit conversion of a color from TXYZA to TStdCMYK }\noperator := (const AValue: TXYZA): TStdCMYK;\n{ Implicit conversion of a color from TXYZA to TByteMask }\noperator := (const AValue: TXYZA): TByteMask;\n{ Implicit conversion of a color from TXYZA to TExpandedPixel }\noperator := (const AValue: TXYZA): TExpandedPixel;\n{ Implicit conversion of a color from TXYZA to TLinearRGBA }\noperator := (const AValue: TXYZA): TLinearRGBA;\n{ Implicit conversion of a color from TXYZA to THSLAPixel }\noperator := (const AValue: TXYZA): THSLAPixel;\n{ Implicit conversion of a color from TXYZA to TGSBAPixel }\noperator := (const AValue: TXYZA): TGSBAPixel;\n{ Implicit conversion of a color from TXYZA to TYCbCr601 }\noperator := (const AValue: TXYZA): TYCbCr601;\n{ Implicit conversion of a color from TXYZA to TYCbCr601JPEG }\noperator := (const AValue: TXYZA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TXYZA to TYCbCr709 }\noperator := (const AValue: TXYZA): TYCbCr709;\n{ Implicit conversion of a color from TXYZA to TYCbCr709JPEG }\noperator := (const AValue: TXYZA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TXYZA to TWordXYZA }\noperator := (const AValue: TXYZA): TWordXYZA;\n{ Implicit conversion of a color from TXYZA to TLabA }\noperator := (const AValue: TXYZA): TLabA;\n{ Implicit conversion of a color from TXYZA to TLChA }\noperator := (const AValue: TXYZA): TLChA;\n{ Implicit conversion of a color from TWordXYZA to TColor }\noperator := (const AValue: TWordXYZA): TColor;\n{ Implicit conversion of a color from TWordXYZA to TBGRAPixel }\noperator := (const AValue: TWordXYZA): TBGRAPixel;\n{ Implicit conversion of a color from TWordXYZA to TFPColor }\noperator := (const AValue: TWordXYZA): TFPColor;\n{ Implicit conversion of a color from TWordXYZA to TStdRGBA }\noperator := (const AValue: TWordXYZA): TStdRGBA;\n{ Implicit conversion of a color from TWordXYZA to TAdobeRGBA }\noperator := (const AValue: TWordXYZA): TAdobeRGBA;\n{ Implicit conversion of a color from TWordXYZA to TStdHSLA }\noperator := (const AValue: TWordXYZA): TStdHSLA;\n{ Implicit conversion of a color from TWordXYZA to TStdHSVA }\noperator := (const AValue: TWordXYZA): TStdHSVA;\n{ Implicit conversion of a color from TWordXYZA to TStdCMYK }\noperator := (const AValue: TWordXYZA): TStdCMYK;\n{ Implicit conversion of a color from TWordXYZA to TByteMask }\noperator := (const AValue: TWordXYZA): TByteMask;\n{ Implicit conversion of a color from TWordXYZA to TExpandedPixel }\noperator := (const AValue: TWordXYZA): TExpandedPixel;\n{ Implicit conversion of a color from TWordXYZA to TLinearRGBA }\noperator := (const AValue: TWordXYZA): TLinearRGBA;\n{ Implicit conversion of a color from TWordXYZA to THSLAPixel }\noperator := (const AValue: TWordXYZA): THSLAPixel;\n{ Implicit conversion of a color from TWordXYZA to TGSBAPixel }\noperator := (const AValue: TWordXYZA): TGSBAPixel;\n{ Implicit conversion of a color from TWordXYZA to TYCbCr601 }\noperator := (const AValue: TWordXYZA): TYCbCr601;\n{ Implicit conversion of a color from TWordXYZA to TYCbCr601JPEG }\noperator := (const AValue: TWordXYZA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TWordXYZA to TYCbCr709 }\noperator := (const AValue: TWordXYZA): TYCbCr709;\n{ Implicit conversion of a color from TWordXYZA to TYCbCr709JPEG }\noperator := (const AValue: TWordXYZA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TWordXYZA to TXYZA }\noperator := (const AValue: TWordXYZA): TXYZA;\n{ Implicit conversion of a color from TWordXYZA to TLabA }\noperator := (const AValue: TWordXYZA): TLabA;\n{ Implicit conversion of a color from TWordXYZA to TLChA }\noperator := (const AValue: TWordXYZA): TLChA;\n{ Implicit conversion of a color from TLabA to TColor }\noperator := (const AValue: TLabA): TColor;\n{ Implicit conversion of a color from TLabA to TBGRAPixel }\noperator := (const AValue: TLabA): TBGRAPixel;\n{ Implicit conversion of a color from TLabA to TFPColor }\noperator := (const AValue: TLabA): TFPColor;\n{ Implicit conversion of a color from TLabA to TStdRGBA }\noperator := (const AValue: TLabA): TStdRGBA;\n{ Implicit conversion of a color from TLabA to TAdobeRGBA }\noperator := (const AValue: TLabA): TAdobeRGBA;\n{ Implicit conversion of a color from TLabA to TStdHSLA }\noperator := (const AValue: TLabA): TStdHSLA;\n{ Implicit conversion of a color from TLabA to TStdHSVA }\noperator := (const AValue: TLabA): TStdHSVA;\n{ Implicit conversion of a color from TLabA to TStdCMYK }\noperator := (const AValue: TLabA): TStdCMYK;\n{ Implicit conversion of a color from TLabA to TByteMask }\noperator := (const AValue: TLabA): TByteMask;\n{ Implicit conversion of a color from TLabA to TExpandedPixel }\noperator := (const AValue: TLabA): TExpandedPixel;\n{ Implicit conversion of a color from TLabA to TLinearRGBA }\noperator := (const AValue: TLabA): TLinearRGBA;\n{ Implicit conversion of a color from TLabA to THSLAPixel }\noperator := (const AValue: TLabA): THSLAPixel;\n{ Implicit conversion of a color from TLabA to TGSBAPixel }\noperator := (const AValue: TLabA): TGSBAPixel;\n{ Implicit conversion of a color from TLabA to TYCbCr601 }\noperator := (const AValue: TLabA): TYCbCr601;\n{ Implicit conversion of a color from TLabA to TYCbCr601JPEG }\noperator := (const AValue: TLabA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TLabA to TYCbCr709 }\noperator := (const AValue: TLabA): TYCbCr709;\n{ Implicit conversion of a color from TLabA to TYCbCr709JPEG }\noperator := (const AValue: TLabA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TLabA to TXYZA }\noperator := (const AValue: TLabA): TXYZA;\n{ Implicit conversion of a color from TLabA to TWordXYZA }\noperator := (const AValue: TLabA): TWordXYZA;\n{ Implicit conversion of a color from TLabA to TLChA }\noperator := (const AValue: TLabA): TLChA;\n{ Implicit conversion of a color from TLChA to TColor }\noperator := (const AValue: TLChA): TColor;\n{ Implicit conversion of a color from TLChA to TBGRAPixel }\noperator := (const AValue: TLChA): TBGRAPixel;\n{ Implicit conversion of a color from TLChA to TFPColor }\noperator := (const AValue: TLChA): TFPColor;\n{ Implicit conversion of a color from TLChA to TStdRGBA }\noperator := (const AValue: TLChA): TStdRGBA;\n{ Implicit conversion of a color from TLChA to TAdobeRGBA }\noperator := (const AValue: TLChA): TAdobeRGBA;\n{ Implicit conversion of a color from TLChA to TStdHSLA }\noperator := (const AValue: TLChA): TStdHSLA;\n{ Implicit conversion of a color from TLChA to TStdHSVA }\noperator := (const AValue: TLChA): TStdHSVA;\n{ Implicit conversion of a color from TLChA to TStdCMYK }\noperator := (const AValue: TLChA): TStdCMYK;\n{ Implicit conversion of a color from TLChA to TByteMask }\noperator := (const AValue: TLChA): TByteMask;\n{ Implicit conversion of a color from TLChA to TExpandedPixel }\noperator := (const AValue: TLChA): TExpandedPixel;\n{ Implicit conversion of a color from TLChA to TLinearRGBA }\noperator := (const AValue: TLChA): TLinearRGBA;\n{ Implicit conversion of a color from TLChA to THSLAPixel }\noperator := (const AValue: TLChA): THSLAPixel;\n{ Implicit conversion of a color from TLChA to TGSBAPixel }\noperator := (const AValue: TLChA): TGSBAPixel;\n{ Implicit conversion of a color from TLChA to TYCbCr601 }\noperator := (const AValue: TLChA): TYCbCr601;\n{ Implicit conversion of a color from TLChA to TYCbCr601JPEG }\noperator := (const AValue: TLChA): TYCbCr601JPEG;\n{ Implicit conversion of a color from TLChA to TYCbCr709 }\noperator := (const AValue: TLChA): TYCbCr709;\n{ Implicit conversion of a color from TLChA to TYCbCr709JPEG }\noperator := (const AValue: TLChA): TYCbCr709JPEG;\n{ Implicit conversion of a color from TLChA to TXYZA }\noperator := (const AValue: TLChA): TXYZA;\n{ Implicit conversion of a color from TLChA to TWordXYZA }\noperator := (const AValue: TLChA): TWordXYZA;\n{ Implicit conversion of a color from TLChA to TLabA }\noperator := (const AValue: TLChA): TLabA;\n{$ENDIF}\n{$ENDIF}\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{$ENDIF}\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{Converters}\n\nprocedure ConvertColorArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := ColorToBGRA(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToFPColor(const AColor: TColor;const AAlpha: word=65535): TFPColor;\nbegin Result := BGRAToFPColor(ColorToBGRA(AColor));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertColorArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := ColorToFPColor(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToByteMask(const AColor: TColor): TByteMask;\nbegin Result := BGRAToMask(ColorToBGRA(AColor)) end;\n\nprocedure ConvertColorArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := ColorToByteMask(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToExpandedPixel(const AColor: TColor;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := GammaExpansion(ColorToBGRA(AColor));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertColorArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := ColorToExpandedPixel(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertBGRAPixelArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := BGRAToColor(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertBGRAPixelArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := BGRAToFPColor(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertBGRAPixelArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := BGRAToMask(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertBGRAPixelArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := GammaExpansion(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToColor(const AFPColor: TFPColor): TColor;\nbegin Result := BGRAToColor(FPColorToBGRA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := FPColorToColor(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertFPColorArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := FPColorToBGRA(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToByteMask(const AFPColor: TFPColor): TByteMask;\nbegin Result := BGRAToMask(FPColorToBGRA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := FPColorToByteMask(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertFPColorArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := FPColorToExpanded(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToColor(const AByteMask: TByteMask): TColor;\nbegin Result := BGRAToColor(MaskToBGRA(AByteMask)) end;\n\nprocedure ConvertByteMaskArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := ByteMaskToColor(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertByteMaskArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := MaskToBGRA(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToFPColor(const AByteMask: TByteMask;const AAlpha: word=65535): TFPColor;\nbegin Result := BGRAToFPColor(MaskToBGRA(AByteMask));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertByteMaskArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := ByteMaskToFPColor(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertByteMaskArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := ByteMaskToExpandedPixel(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToColor(const AExpandedPixel: TExpandedPixel): TColor;\nbegin Result := BGRAToColor(GammaCompression(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := ExpandedPixelToColor(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := GammaCompression(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := ExpandedToFPColor(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := ExpandedPixelToByteMask(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction ColorToStdRGBA(const AColor: TColor;const AAlpha: single=1): TStdRGBA;\nbegin Result := BGRAPixelToStdRGBA(ColorToBGRA(AColor));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertColorArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := ColorToStdRGBA(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToStdHSLA(const AColor: TColor;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(BGRAPixelToStdRGBA(ColorToBGRA(AColor)));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertColorArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := ColorToStdHSLA(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToStdHSVA(const AColor: TColor;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(BGRAPixelToStdRGBA(ColorToBGRA(AColor)));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertColorArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := ColorToStdHSVA(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToStdCMYK(const AColor: TColor): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(BGRAPixelToStdRGBA(ColorToBGRA(AColor))) end;\n\nprocedure ConvertColorArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := ColorToStdCMYK(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToYCbCr601(const AColor: TColor): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(BGRAPixelToStdRGBA(ColorToBGRA(AColor))) end;\n\nprocedure ConvertColorArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := ColorToYCbCr601(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToYCbCr601JPEG(const AColor: TColor): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(BGRAPixelToStdRGBA(ColorToBGRA(AColor))) end;\n\nprocedure ConvertColorArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := ColorToYCbCr601JPEG(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToYCbCr709(const AColor: TColor): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(BGRAPixelToStdRGBA(ColorToBGRA(AColor))) end;\n\nprocedure ConvertColorArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := ColorToYCbCr709(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ColorToYCbCr709JPEG(const AColor: TColor): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(BGRAPixelToStdRGBA(ColorToBGRA(AColor))) end;\n\nprocedure ConvertColorArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TColor); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := ColorToYCbCr709JPEG(TColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertBGRAPixelArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := BGRAPixelToStdRGBA(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToStdHSLA(const ABGRAPixel: TBGRAPixel): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := BGRAPixelToStdHSLA(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToStdHSVA(const ABGRAPixel: TBGRAPixel): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := BGRAPixelToStdHSVA(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToStdCMYK(const ABGRAPixel: TBGRAPixel): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := BGRAPixelToStdCMYK(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToYCbCr601(const ABGRAPixel: TBGRAPixel): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := BGRAPixelToYCbCr601(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToYCbCr601JPEG(const ABGRAPixel: TBGRAPixel): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := BGRAPixelToYCbCr601JPEG(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToYCbCr709(const ABGRAPixel: TBGRAPixel): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := BGRAPixelToYCbCr709(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction BGRAPixelToYCbCr709JPEG(const ABGRAPixel: TBGRAPixel): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(BGRAPixelToStdRGBA(ABGRAPixel)) end;\n\nprocedure ConvertBGRAPixelArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TBGRAPixel); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := BGRAPixelToYCbCr709JPEG(TBGRAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertFPColorArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := FPColorToStdRGBA(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToStdHSLA(const AFPColor: TFPColor): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := FPColorToStdHSLA(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToStdHSVA(const AFPColor: TFPColor): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := FPColorToStdHSVA(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToStdCMYK(const AFPColor: TFPColor): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := FPColorToStdCMYK(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToYCbCr601(const AFPColor: TFPColor): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := FPColorToYCbCr601(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToYCbCr601JPEG(const AFPColor: TFPColor): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := FPColorToYCbCr601JPEG(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToYCbCr709(const AFPColor: TFPColor): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := FPColorToYCbCr709(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction FPColorToYCbCr709JPEG(const AFPColor: TFPColor): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(FPColorToStdRGBA(AFPColor)) end;\n\nprocedure ConvertFPColorArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TFPColor); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := FPColorToYCbCr709JPEG(TFPColor(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdRGBAToColor(const AStdRGBA: TStdRGBA): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(AStdRGBA)) end;\n\nprocedure ConvertStdRGBAArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := StdRGBAToColor(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := StdRGBAToBGRAPixel(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := StdRGBAToFPColor(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := StdRGBAToStdHSLA(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := StdRGBAToStdHSVA(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := StdRGBAToStdCMYK(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdRGBAToByteMask(const AStdRGBA: TStdRGBA): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(AStdRGBA)) end;\n\nprocedure ConvertStdRGBAArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := StdRGBAToByteMask(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := StdRGBAToExpandedPixel(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := StdRGBAToYCbCr601(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := StdRGBAToYCbCr601JPEG(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := StdRGBAToYCbCr709(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdRGBAArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdRGBA); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := StdRGBAToYCbCr709JPEG(TStdRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction AdobeRGBAToExpandedPixel(const AAdobeRGBA: TAdobeRGBA): TExpandedPixel;\nbegin Result := LinearRGBAToExpandedPixel(XYZAToLinearRGBA(AdobeRGBAToXYZA(AAdobeRGBA))) end;\n\nprocedure ConvertAdobeRGBAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := AdobeRGBAToExpandedPixel(TAdobeRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction AdobeRGBAToLinearRGBA(const AAdobeRGBA: TAdobeRGBA): TLinearRGBA;\nbegin Result := XYZAToLinearRGBA(AdobeRGBAToXYZA(AAdobeRGBA)) end;\n\nprocedure ConvertAdobeRGBAArrayToLinearRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TLinearRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLinearRGBA(ADest^) := AdobeRGBAToLinearRGBA(TAdobeRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertAdobeRGBAArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TXYZA(ADest^) := AdobeRGBAToXYZA(TAdobeRGBA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction AdobeRGBAToWordXYZA(const AAdobeRGBA: TAdobeRGBA): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(AdobeRGBAToXYZA(AAdobeRGBA)) end;\n\nfunction AdobeRGBAToWordXYZA(const AAdobeRGBA: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(AdobeRGBAToXYZA(AAdobeRGBA,AReferenceWhite)) end;\n\nprocedure ConvertAdobeRGBAArrayToWordXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TWordXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TWordXYZA(ADest^) := AdobeRGBAToWordXYZA(TAdobeRGBA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction AdobeRGBAToLabA(const AAdobeRGBA: TAdobeRGBA): TLabA;\nbegin Result := XYZAToLabA(AdobeRGBAToXYZA(AAdobeRGBA)) end;\n\nprocedure ConvertAdobeRGBAArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLabA(ADest^) := AdobeRGBAToLabA(TAdobeRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction AdobeRGBAToLChA(const AAdobeRGBA: TAdobeRGBA): TLChA;\nbegin Result := LabAToLChA(XYZAToLabA(AdobeRGBAToXYZA(AAdobeRGBA))) end;\n\nprocedure ConvertAdobeRGBAArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TAdobeRGBA); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLChA(ADest^) := AdobeRGBAToLChA(TAdobeRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToColor(const AStdHSLA: TStdHSLA): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(StdHSLAToStdRGBA(AStdHSLA))) end;\n\nprocedure ConvertStdHSLAArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := StdHSLAToColor(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToBGRAPixel(const AStdHSLA: TStdHSLA): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := StdHSLAToBGRAPixel(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToFPColor(const AStdHSLA: TStdHSLA): TFPColor;\nbegin Result := StdRGBAToFPColor(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := StdHSLAToFPColor(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdHSLAArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := StdHSLAToStdRGBA(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdHSLAArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := StdHSLAToStdHSVA(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToStdCMYK(const AStdHSLA: TStdHSLA): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := StdHSLAToStdCMYK(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToByteMask(const AStdHSLA: TStdHSLA): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(StdHSLAToStdRGBA(AStdHSLA))) end;\n\nprocedure ConvertStdHSLAArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := StdHSLAToByteMask(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToExpandedPixel(const AStdHSLA: TStdHSLA): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := StdHSLAToExpandedPixel(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToYCbCr601(const AStdHSLA: TStdHSLA): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := StdHSLAToYCbCr601(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToYCbCr601JPEG(const AStdHSLA: TStdHSLA): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := StdHSLAToYCbCr601JPEG(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToYCbCr709(const AStdHSLA: TStdHSLA): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := StdHSLAToYCbCr709(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSLAToYCbCr709JPEG(const AStdHSLA: TStdHSLA): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(StdHSLAToStdRGBA(AStdHSLA)) end;\n\nprocedure ConvertStdHSLAArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSLA); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := StdHSLAToYCbCr709JPEG(TStdHSLA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToColor(const AStdHSVA: TStdHSVA): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(StdHSVAToStdRGBA(AStdHSVA))) end;\n\nprocedure ConvertStdHSVAArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := StdHSVAToColor(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToBGRAPixel(const AStdHSVA: TStdHSVA): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := StdHSVAToBGRAPixel(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToFPColor(const AStdHSVA: TStdHSVA): TFPColor;\nbegin Result := StdRGBAToFPColor(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := StdHSVAToFPColor(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdHSVAArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := StdHSVAToStdRGBA(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdHSVAArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := StdHSVAToStdHSLA(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToStdCMYK(const AStdHSVA: TStdHSVA): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := StdHSVAToStdCMYK(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToByteMask(const AStdHSVA: TStdHSVA): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(StdHSVAToStdRGBA(AStdHSVA))) end;\n\nprocedure ConvertStdHSVAArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := StdHSVAToByteMask(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToExpandedPixel(const AStdHSVA: TStdHSVA): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := StdHSVAToExpandedPixel(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToYCbCr601(const AStdHSVA: TStdHSVA): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := StdHSVAToYCbCr601(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToYCbCr601JPEG(const AStdHSVA: TStdHSVA): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := StdHSVAToYCbCr601JPEG(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToYCbCr709(const AStdHSVA: TStdHSVA): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := StdHSVAToYCbCr709(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdHSVAToYCbCr709JPEG(const AStdHSVA: TStdHSVA): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(StdHSVAToStdRGBA(AStdHSVA)) end;\n\nprocedure ConvertStdHSVAArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdHSVA); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := StdHSVAToYCbCr709JPEG(TStdHSVA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToColor(const AStdCMYK: TStdCMYK): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(StdCMYKToStdRGBA(AStdCMYK))) end;\n\nprocedure ConvertStdCMYKArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := StdCMYKToColor(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToBGRAPixel(const AStdCMYK: TStdCMYK;const AAlpha: byte=255): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(StdCMYKToStdRGBA(AStdCMYK));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertStdCMYKArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := StdCMYKToBGRAPixel(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToFPColor(const AStdCMYK: TStdCMYK;const AAlpha: word=65535): TFPColor;\nbegin Result := StdRGBAToFPColor(StdCMYKToStdRGBA(AStdCMYK));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertStdCMYKArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := StdCMYKToFPColor(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertStdCMYKArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := StdCMYKToStdRGBA(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToStdHSLA(const AStdCMYK: TStdCMYK;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(StdCMYKToStdRGBA(AStdCMYK));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertStdCMYKArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := StdCMYKToStdHSLA(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToStdHSVA(const AStdCMYK: TStdCMYK;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(StdCMYKToStdRGBA(AStdCMYK));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertStdCMYKArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := StdCMYKToStdHSVA(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToByteMask(const AStdCMYK: TStdCMYK): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(StdCMYKToStdRGBA(AStdCMYK))) end;\n\nprocedure ConvertStdCMYKArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := StdCMYKToByteMask(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToExpandedPixel(const AStdCMYK: TStdCMYK;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(StdCMYKToStdRGBA(AStdCMYK));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertStdCMYKArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := StdCMYKToExpandedPixel(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToYCbCr601(const AStdCMYK: TStdCMYK): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(StdCMYKToStdRGBA(AStdCMYK)) end;\n\nprocedure ConvertStdCMYKArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := StdCMYKToYCbCr601(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToYCbCr601JPEG(const AStdCMYK: TStdCMYK): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(StdCMYKToStdRGBA(AStdCMYK)) end;\n\nprocedure ConvertStdCMYKArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := StdCMYKToYCbCr601JPEG(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToYCbCr709(const AStdCMYK: TStdCMYK): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(StdCMYKToStdRGBA(AStdCMYK)) end;\n\nprocedure ConvertStdCMYKArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := StdCMYKToYCbCr709(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction StdCMYKToYCbCr709JPEG(const AStdCMYK: TStdCMYK): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(StdCMYKToStdRGBA(AStdCMYK)) end;\n\nprocedure ConvertStdCMYKArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TStdCMYK); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := StdCMYKToYCbCr709JPEG(TStdCMYK(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToStdRGBA(const AByteMask: TByteMask;const AAlpha: single=1): TStdRGBA;\nbegin Result := BGRAPixelToStdRGBA(MaskToBGRA(AByteMask));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertByteMaskArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := ByteMaskToStdRGBA(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToStdHSLA(const AByteMask: TByteMask;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask)));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertByteMaskArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := ByteMaskToStdHSLA(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToStdHSVA(const AByteMask: TByteMask;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask)));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertByteMaskArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := ByteMaskToStdHSVA(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToStdCMYK(const AByteMask: TByteMask): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask))) end;\n\nprocedure ConvertByteMaskArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := ByteMaskToStdCMYK(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToYCbCr601(const AByteMask: TByteMask): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask))) end;\n\nprocedure ConvertByteMaskArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := ByteMaskToYCbCr601(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToYCbCr601JPEG(const AByteMask: TByteMask): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask))) end;\n\nprocedure ConvertByteMaskArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := ByteMaskToYCbCr601JPEG(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToYCbCr709(const AByteMask: TByteMask): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask))) end;\n\nprocedure ConvertByteMaskArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := ByteMaskToYCbCr709(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ByteMaskToYCbCr709JPEG(const AByteMask: TByteMask): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(BGRAPixelToStdRGBA(MaskToBGRA(AByteMask))) end;\n\nprocedure ConvertByteMaskArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TByteMask); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := ByteMaskToYCbCr709JPEG(TByteMask(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := ExpandedPixelToStdRGBA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToAdobeRGBA(const AExpandedPixel: TExpandedPixel): TAdobeRGBA;\nbegin Result := XYZAToAdobeRGBA(LinearRGBAToXYZA(ExpandedPixelToLinearRGBA(AExpandedPixel))) end;\n\nprocedure ConvertExpandedPixelArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := ExpandedPixelToAdobeRGBA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToStdHSLA(const AExpandedPixel: TExpandedPixel): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := ExpandedPixelToStdHSLA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToStdHSVA(const AExpandedPixel: TExpandedPixel): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := ExpandedPixelToStdHSVA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToStdCMYK(const AExpandedPixel: TExpandedPixel): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := ExpandedPixelToStdCMYK(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToLinearRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TLinearRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLinearRGBA(ADest^) := ExpandedPixelToLinearRGBA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToHSLAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(THSLAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    THSLAPixel(ADest^) := ExpandedToHSLA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToGSBAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TGSBAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TGSBAPixel(ADest^) := ExpandedToGSBA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToYCbCr601(const AExpandedPixel: TExpandedPixel): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := ExpandedPixelToYCbCr601(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToYCbCr601JPEG(const AExpandedPixel: TExpandedPixel): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := ExpandedPixelToYCbCr601JPEG(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToYCbCr709(const AExpandedPixel: TExpandedPixel): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := ExpandedPixelToYCbCr709(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToYCbCr709JPEG(const AExpandedPixel: TExpandedPixel): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(ExpandedPixelToStdRGBA(AExpandedPixel)) end;\n\nprocedure ConvertExpandedPixelArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := ExpandedPixelToYCbCr709JPEG(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToXYZA(const AExpandedPixel: TExpandedPixel): TXYZA;overload;\nbegin Result := LinearRGBAToXYZA(ExpandedPixelToLinearRGBA(AExpandedPixel)) end;\n\nfunction ExpandedPixelToXYZA(const AExpandedPixel: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := LinearRGBAToXYZA(ExpandedPixelToLinearRGBA(AExpandedPixel),AReferenceWhite) end;\n\nprocedure ConvertExpandedPixelArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TXYZA(ADest^) := ExpandedPixelToXYZA(TExpandedPixel(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertExpandedPixelArrayToWordXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TWordXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TWordXYZA(ADest^) := ExpandedPixelToWordXYZA(TExpandedPixel(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToLabA(const AExpandedPixel: TExpandedPixel): TLabA;\nbegin Result := XYZAToLabA(LinearRGBAToXYZA(ExpandedPixelToLinearRGBA(AExpandedPixel))) end;\n\nprocedure ConvertExpandedPixelArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLabA(ADest^) := ExpandedPixelToLabA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction ExpandedPixelToLChA(const AExpandedPixel: TExpandedPixel): TLChA;\nbegin Result := LabAToLChA(XYZAToLabA(LinearRGBAToXYZA(ExpandedPixelToLinearRGBA(AExpandedPixel)))) end;\n\nprocedure ConvertExpandedPixelArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TExpandedPixel); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLChA(ADest^) := ExpandedPixelToLChA(TExpandedPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LinearRGBAToAdobeRGBA(const ALinearRGBA: TLinearRGBA): TAdobeRGBA;\nbegin Result := XYZAToAdobeRGBA(LinearRGBAToXYZA(ALinearRGBA)) end;\n\nprocedure ConvertLinearRGBAArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLinearRGBA); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := LinearRGBAToAdobeRGBA(TLinearRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertLinearRGBAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLinearRGBA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := LinearRGBAToExpandedPixel(TLinearRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertLinearRGBAArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLinearRGBA); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TXYZA(ADest^) := LinearRGBAToXYZA(TLinearRGBA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LinearRGBAToLabA(const ALinearRGBA: TLinearRGBA): TLabA;\nbegin Result := XYZAToLabA(LinearRGBAToXYZA(ALinearRGBA)) end;\n\nprocedure ConvertLinearRGBAArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLinearRGBA); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLabA(ADest^) := LinearRGBAToLabA(TLinearRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LinearRGBAToLChA(const ALinearRGBA: TLinearRGBA): TLChA;\nbegin Result := LabAToLChA(XYZAToLabA(LinearRGBAToXYZA(ALinearRGBA))) end;\n\nprocedure ConvertLinearRGBAArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLinearRGBA); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLChA(ADest^) := LinearRGBAToLChA(TLinearRGBA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertHSLAPixelArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(THSLAPixel); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := HSLAToExpanded(THSLAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertHSLAPixelArrayToGSBAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(THSLAPixel); ADestStride:integer=sizeOf(TGSBAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TGSBAPixel(ADest^) := HSLAToGSBA(THSLAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertGSBAPixelArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TGSBAPixel); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := GSBAToExpanded(TGSBAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertGSBAPixelArrayToHSLAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TGSBAPixel); ADestStride:integer=sizeOf(THSLAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    THSLAPixel(ADest^) := GSBAToHSLA(TGSBAPixel(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToColor(const AYCbCr601: TYCbCr601): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(YCbCr601ToStdRGBA(AYCbCr601))) end;\n\nprocedure ConvertYCbCr601ArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := YCbCr601ToColor(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToBGRAPixel(const AYCbCr601: TYCbCr601;const AAlpha: byte=255): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(YCbCr601ToStdRGBA(AYCbCr601));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601ArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := YCbCr601ToBGRAPixel(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToFPColor(const AYCbCr601: TYCbCr601;const AAlpha: word=65535): TFPColor;\nbegin Result := StdRGBAToFPColor(YCbCr601ToStdRGBA(AYCbCr601));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601ArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := YCbCr601ToFPColor(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertYCbCr601ArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := YCbCr601ToStdRGBA(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToStdHSLA(const AYCbCr601: TYCbCr601;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(YCbCr601ToStdRGBA(AYCbCr601));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601ArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := YCbCr601ToStdHSLA(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToStdHSVA(const AYCbCr601: TYCbCr601;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(YCbCr601ToStdRGBA(AYCbCr601));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601ArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := YCbCr601ToStdHSVA(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToStdCMYK(const AYCbCr601: TYCbCr601): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(YCbCr601ToStdRGBA(AYCbCr601)) end;\n\nprocedure ConvertYCbCr601ArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := YCbCr601ToStdCMYK(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToByteMask(const AYCbCr601: TYCbCr601): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(YCbCr601ToStdRGBA(AYCbCr601))) end;\n\nprocedure ConvertYCbCr601ArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := YCbCr601ToByteMask(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToExpandedPixel(const AYCbCr601: TYCbCr601;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(YCbCr601ToStdRGBA(AYCbCr601));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601ArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := YCbCr601ToExpandedPixel(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToYCbCr601JPEG(const AYCbCr601: TYCbCr601): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(YCbCr601ToStdRGBA(AYCbCr601)) end;\n\nprocedure ConvertYCbCr601ArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := YCbCr601ToYCbCr601JPEG(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToYCbCr709(const AYCbCr601: TYCbCr601): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(YCbCr601ToStdRGBA(AYCbCr601)) end;\n\nprocedure ConvertYCbCr601ArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := YCbCr601ToYCbCr709(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601ToYCbCr709JPEG(const AYCbCr601: TYCbCr601): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(YCbCr601ToStdRGBA(AYCbCr601)) end;\n\nprocedure ConvertYCbCr601ArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := YCbCr601ToYCbCr709JPEG(TYCbCr601(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToColor(const AYCbCr601JPEG: TYCbCr601JPEG): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG))) end;\n\nprocedure ConvertYCbCr601JPEGArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := YCbCr601JPEGToColor(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToBGRAPixel(const AYCbCr601JPEG: TYCbCr601JPEG;const AAlpha: byte=255): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601JPEGArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := YCbCr601JPEGToBGRAPixel(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToFPColor(const AYCbCr601JPEG: TYCbCr601JPEG;const AAlpha: word=65535): TFPColor;\nbegin Result := StdRGBAToFPColor(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601JPEGArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := YCbCr601JPEGToFPColor(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertYCbCr601JPEGArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := YCbCr601JPEGToStdRGBA(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToStdHSLA(const AYCbCr601JPEG: TYCbCr601JPEG;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601JPEGArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := YCbCr601JPEGToStdHSLA(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToStdHSVA(const AYCbCr601JPEG: TYCbCr601JPEG;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601JPEGArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := YCbCr601JPEGToStdHSVA(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToStdCMYK(const AYCbCr601JPEG: TYCbCr601JPEG): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG)) end;\n\nprocedure ConvertYCbCr601JPEGArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := YCbCr601JPEGToStdCMYK(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToByteMask(const AYCbCr601JPEG: TYCbCr601JPEG): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG))) end;\n\nprocedure ConvertYCbCr601JPEGArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := YCbCr601JPEGToByteMask(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToExpandedPixel(const AYCbCr601JPEG: TYCbCr601JPEG;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr601JPEGArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := YCbCr601JPEGToExpandedPixel(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToYCbCr601(const AYCbCr601JPEG: TYCbCr601JPEG): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG)) end;\n\nprocedure ConvertYCbCr601JPEGArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := YCbCr601JPEGToYCbCr601(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToYCbCr709(const AYCbCr601JPEG: TYCbCr601JPEG): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG)) end;\n\nprocedure ConvertYCbCr601JPEGArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := YCbCr601JPEGToYCbCr709(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr601JPEGToYCbCr709JPEG(const AYCbCr601JPEG: TYCbCr601JPEG): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(YCbCr601JPEGToStdRGBA(AYCbCr601JPEG)) end;\n\nprocedure ConvertYCbCr601JPEGArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr601JPEG); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := YCbCr601JPEGToYCbCr709JPEG(TYCbCr601JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToColor(const AYCbCr709: TYCbCr709): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(YCbCr709ToStdRGBA(AYCbCr709))) end;\n\nprocedure ConvertYCbCr709ArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := YCbCr709ToColor(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToBGRAPixel(const AYCbCr709: TYCbCr709;const AAlpha: byte=255): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(YCbCr709ToStdRGBA(AYCbCr709));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709ArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := YCbCr709ToBGRAPixel(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToFPColor(const AYCbCr709: TYCbCr709;const AAlpha: word=65535): TFPColor;\nbegin Result := StdRGBAToFPColor(YCbCr709ToStdRGBA(AYCbCr709));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709ArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := YCbCr709ToFPColor(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertYCbCr709ArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := YCbCr709ToStdRGBA(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToStdHSLA(const AYCbCr709: TYCbCr709;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(YCbCr709ToStdRGBA(AYCbCr709));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709ArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := YCbCr709ToStdHSLA(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToStdHSVA(const AYCbCr709: TYCbCr709;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(YCbCr709ToStdRGBA(AYCbCr709));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709ArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := YCbCr709ToStdHSVA(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToStdCMYK(const AYCbCr709: TYCbCr709): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(YCbCr709ToStdRGBA(AYCbCr709)) end;\n\nprocedure ConvertYCbCr709ArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := YCbCr709ToStdCMYK(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToByteMask(const AYCbCr709: TYCbCr709): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(YCbCr709ToStdRGBA(AYCbCr709))) end;\n\nprocedure ConvertYCbCr709ArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := YCbCr709ToByteMask(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToExpandedPixel(const AYCbCr709: TYCbCr709;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(YCbCr709ToStdRGBA(AYCbCr709));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709ArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := YCbCr709ToExpandedPixel(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToYCbCr601(const AYCbCr709: TYCbCr709): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(YCbCr709ToStdRGBA(AYCbCr709)) end;\n\nprocedure ConvertYCbCr709ArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := YCbCr709ToYCbCr601(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToYCbCr601JPEG(const AYCbCr709: TYCbCr709): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(YCbCr709ToStdRGBA(AYCbCr709)) end;\n\nprocedure ConvertYCbCr709ArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := YCbCr709ToYCbCr601JPEG(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709ToYCbCr709JPEG(const AYCbCr709: TYCbCr709): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(YCbCr709ToStdRGBA(AYCbCr709)) end;\n\nprocedure ConvertYCbCr709ArrayToYCbCr709JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709); ADestStride:integer=sizeOf(TYCbCr709JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709JPEG(ADest^) := YCbCr709ToYCbCr709JPEG(TYCbCr709(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToColor(const AYCbCr709JPEG: TYCbCr709JPEG): TColor;\nbegin Result := BGRAToColor(StdRGBAToBGRAPixel(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG))) end;\n\nprocedure ConvertYCbCr709JPEGArrayToColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TColor(ADest^) := YCbCr709JPEGToColor(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToBGRAPixel(const AYCbCr709JPEG: TYCbCr709JPEG;const AAlpha: byte=255): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709JPEGArrayToBGRAPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TBGRAPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TBGRAPixel(ADest^) := YCbCr709JPEGToBGRAPixel(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToFPColor(const AYCbCr709JPEG: TYCbCr709JPEG;const AAlpha: word=65535): TFPColor;\nbegin Result := StdRGBAToFPColor(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709JPEGArrayToFPColorArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TFPColor); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TFPColor(ADest^) := YCbCr709JPEGToFPColor(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertYCbCr709JPEGArrayToStdRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TStdRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdRGBA(ADest^) := YCbCr709JPEGToStdRGBA(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToStdHSLA(const AYCbCr709JPEG: TYCbCr709JPEG;const AAlpha: single=1): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709JPEGArrayToStdHSLAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TStdHSLA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSLA(ADest^) := YCbCr709JPEGToStdHSLA(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToStdHSVA(const AYCbCr709JPEG: TYCbCr709JPEG;const AAlpha: single=1): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709JPEGArrayToStdHSVAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TStdHSVA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdHSVA(ADest^) := YCbCr709JPEGToStdHSVA(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToStdCMYK(const AYCbCr709JPEG: TYCbCr709JPEG): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG)) end;\n\nprocedure ConvertYCbCr709JPEGArrayToStdCMYKArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TStdCMYK); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TStdCMYK(ADest^) := YCbCr709JPEGToStdCMYK(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToByteMask(const AYCbCr709JPEG: TYCbCr709JPEG): TByteMask;\nbegin Result := BGRAToMask(StdRGBAToBGRAPixel(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG))) end;\n\nprocedure ConvertYCbCr709JPEGArrayToByteMaskArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TByteMask); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TByteMask(ADest^) := YCbCr709JPEGToByteMask(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToExpandedPixel(const AYCbCr709JPEG: TYCbCr709JPEG;const AAlpha: word=65535): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG));\n  if Result.alpha <> 0 then Result.alpha := AAlpha end;\n\nprocedure ConvertYCbCr709JPEGArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := YCbCr709JPEGToExpandedPixel(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToYCbCr601(const AYCbCr709JPEG: TYCbCr709JPEG): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG)) end;\n\nprocedure ConvertYCbCr709JPEGArrayToYCbCr601Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TYCbCr601); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601(ADest^) := YCbCr709JPEGToYCbCr601(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToYCbCr601JPEG(const AYCbCr709JPEG: TYCbCr709JPEG): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG)) end;\n\nprocedure ConvertYCbCr709JPEGArrayToYCbCr601JPEGArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TYCbCr601JPEG); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr601JPEG(ADest^) := YCbCr709JPEGToYCbCr601JPEG(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction YCbCr709JPEGToYCbCr709(const AYCbCr709JPEG: TYCbCr709JPEG): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(YCbCr709JPEGToStdRGBA(AYCbCr709JPEG)) end;\n\nprocedure ConvertYCbCr709JPEGArrayToYCbCr709Array(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TYCbCr709JPEG); ADestStride:integer=sizeOf(TYCbCr709); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TYCbCr709(ADest^) := YCbCr709JPEGToYCbCr709(TYCbCr709JPEG(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertXYZAArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := XYZAToAdobeRGBA(TXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction XYZAToExpandedPixel(const AXYZA: TXYZA): TExpandedPixel;overload;\nbegin Result := LinearRGBAToExpandedPixel(XYZAToLinearRGBA(AXYZA)) end;\n\nfunction XYZAToExpandedPixel(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel;overload;\nbegin Result := LinearRGBAToExpandedPixel(XYZAToLinearRGBA(AXYZA,AReferenceWhite)) end;\n\nprocedure ConvertXYZAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := XYZAToExpandedPixel(TXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertXYZAArrayToLinearRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TLinearRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TLinearRGBA(ADest^) := XYZAToLinearRGBA(TXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertXYZAArrayToWordXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TWordXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TWordXYZA(ADest^) := XYZAToWordXYZA(TXYZA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertXYZAArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TLabA(ADest^) := XYZAToLabA(TXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction XYZAToLChA(const AXYZA: TXYZA): TLChA;overload;\nbegin Result := LabAToLChA(XYZAToLabA(AXYZA)) end;\n\nfunction XYZAToLChA(const AXYZA: TXYZA; const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\nbegin Result := LabAToLChA(XYZAToLabA(AXYZA,AReferenceWhite)) end;\n\nprocedure ConvertXYZAArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TXYZA); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TLChA(ADest^) := XYZAToLChA(TXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction WordXYZAToAdobeRGBA(const AWordXYZA: TWordXYZA): TAdobeRGBA;overload;\nbegin Result := XYZAToAdobeRGBA(WordXYZAToXYZA(AWordXYZA)) end;\n\nfunction WordXYZAToAdobeRGBA(const AWordXYZA: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;overload;\nbegin Result := XYZAToAdobeRGBA(WordXYZAToXYZA(AWordXYZA),AReferenceWhite) end;\n\nprocedure ConvertWordXYZAArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TWordXYZA); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := WordXYZAToAdobeRGBA(TWordXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertWordXYZAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TWordXYZA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := WordXYZAToExpandedPixel(TWordXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertWordXYZAArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TWordXYZA); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TXYZA(ADest^) := WordXYZAToXYZA(TWordXYZA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction WordXYZAToLabA(const AWordXYZA: TWordXYZA): TLabA;overload;\nbegin Result := XYZAToLabA(WordXYZAToXYZA(AWordXYZA)) end;\n\nfunction WordXYZAToLabA(const AWordXYZA: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite): TLabA;overload;\nbegin Result := XYZAToLabA(WordXYZAToXYZA(AWordXYZA),AReferenceWhite) end;\n\nprocedure ConvertWordXYZAArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TWordXYZA); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TLabA(ADest^) := WordXYZAToLabA(TWordXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction WordXYZAToLChA(const AWordXYZA: TWordXYZA): TLChA;overload;\nbegin Result := LabAToLChA(XYZAToLabA(WordXYZAToXYZA(AWordXYZA))) end;\n\nfunction WordXYZAToLChA(const AWordXYZA: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\nbegin Result := LabAToLChA(XYZAToLabA(WordXYZAToXYZA(AWordXYZA),AReferenceWhite)) end;\n\nprocedure ConvertWordXYZAArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TWordXYZA); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TLChA(ADest^) := WordXYZAToLChA(TWordXYZA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LabAToAdobeRGBA(const ALabA: TLabA): TAdobeRGBA;\nbegin Result := XYZAToAdobeRGBA(LabAToXYZA(ALabA)) end;\n\nprocedure ConvertLabAArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := LabAToAdobeRGBA(TLabA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LabAToExpandedPixel(const ALabA: TLabA): TExpandedPixel;\nbegin Result := LinearRGBAToExpandedPixel(XYZAToLinearRGBA(LabAToXYZA(ALabA))) end;\n\nprocedure ConvertLabAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := LabAToExpandedPixel(TLabA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LabAToLinearRGBA(const ALabA: TLabA): TLinearRGBA;\nbegin Result := XYZAToLinearRGBA(LabAToXYZA(ALabA)) end;\n\nprocedure ConvertLabAArrayToLinearRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TLinearRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLinearRGBA(ADest^) := LabAToLinearRGBA(TLabA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertLabAArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TXYZA(ADest^) := LabAToXYZA(TLabA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LabAToWordXYZA(const ALabA: TLabA): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(LabAToXYZA(ALabA)) end;\n\nfunction LabAToWordXYZA(const ALabA: TLabA; const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(LabAToXYZA(ALabA,AReferenceWhite)) end;\n\nprocedure ConvertLabAArrayToWordXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TWordXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TWordXYZA(ADest^) := LabAToWordXYZA(TLabA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertLabAArrayToLChAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLabA); ADestStride:integer=sizeOf(TLChA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLChA(ADest^) := LabAToLChA(TLabA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LChAToAdobeRGBA(const ALChA: TLChA): TAdobeRGBA;\nbegin Result := XYZAToAdobeRGBA(LabAToXYZA(LChAToLabA(ALChA))) end;\n\nprocedure ConvertLChAArrayToAdobeRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TAdobeRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TAdobeRGBA(ADest^) := LChAToAdobeRGBA(TLChA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LChAToExpandedPixel(const ALChA: TLChA): TExpandedPixel;\nbegin Result := LinearRGBAToExpandedPixel(XYZAToLinearRGBA(LabAToXYZA(LChAToLabA(ALChA)))) end;\n\nprocedure ConvertLChAArrayToExpandedPixelArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TExpandedPixel); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TExpandedPixel(ADest^) := LChAToExpandedPixel(TLChA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LChAToLinearRGBA(const ALChA: TLChA): TLinearRGBA;\nbegin Result := XYZAToLinearRGBA(LabAToXYZA(LChAToLabA(ALChA))) end;\n\nprocedure ConvertLChAArrayToLinearRGBAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TLinearRGBA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLinearRGBA(ADest^) := LChAToLinearRGBA(TLChA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LChAToXYZA(const ALChA: TLChA): TXYZA;overload;\nbegin Result := LabAToXYZA(LChAToLabA(ALChA)) end;\n\nfunction LChAToXYZA(const ALChA: TLChA; const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := LabAToXYZA(LChAToLabA(ALChA),AReferenceWhite) end;\n\nprocedure ConvertLChAArrayToXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TXYZA(ADest^) := LChAToXYZA(TLChA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nfunction LChAToWordXYZA(const ALChA: TLChA): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(LabAToXYZA(LChAToLabA(ALChA))) end;\n\nfunction LChAToWordXYZA(const ALChA: TLChA; const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := XYZAToWordXYZA(LabAToXYZA(LChAToLabA(ALChA),AReferenceWhite)) end;\n\nprocedure ConvertLChAArrayToWordXYZAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TWordXYZA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;\n  while ACount > 0 do begin\n    TWordXYZA(ADest^) := LChAToWordXYZA(TLChA(ASource^), AReferenceWhite^);\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\nprocedure ConvertLChAArrayToLabAArray(ASource: pointer; ADest: Pointer; ACount: integer; ASourceStride:integer=sizeOf(TLChA); ADestStride:integer=sizeOf(TLabA); {%H-}AReferenceWhite: PXYZReferenceWhite=nil);\nbegin\n  while ACount > 0 do begin\n    TLabA(ADest^) := LChAToLabA(TLChA(ASource^));\n    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;\nend;\n\n{$ENDIF}\n{ TByteMask }\n\nclass function TByteMask.New(const AGray:byte): TByteMask;\nbegin\n  Result.gray := AGray;\nend;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{ TStdRGBA }\n\nclass function TStdRGBA.New(const ARed,AGreen,ABlue,AAlpha:single): TStdRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TStdRGBA.New(const ARed,AGreen,ABlue:single): TStdRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 1;\nend;\n\n{ TAdobeRGBA }\n\nclass function TAdobeRGBA.New(const ARed,AGreen,ABlue,AAlpha:byte): TAdobeRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TAdobeRGBA.New(const ARed,AGreen,ABlue:byte): TAdobeRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 255;\nend;\n\n{ TStdHSLA }\n\nclass function TStdHSLA.New(const AHue,ASaturation,ALightness,AAlpha:single): TStdHSLA;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ALightness;\n  Result.alpha := AAlpha;\nend;\n\nclass function TStdHSLA.New(const AHue,ASaturation,ALightness:single): TStdHSLA;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.lightness := ALightness;\n  Result.alpha := 1;\nend;\n\n{ TStdHSVA }\n\nclass function TStdHSVA.New(const AHue,ASaturation,AValue,AAlpha:single): TStdHSVA;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.value := AValue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TStdHSVA.New(const AHue,ASaturation,AValue:single): TStdHSVA;overload;\nbegin\n  Result.hue := AHue;\n  Result.saturation := ASaturation;\n  Result.value := AValue;\n  Result.alpha := 1;\nend;\n\n{ TStdCMYK }\n\nclass function TStdCMYK.New(const ACyan,AMagenta,AYellow,ABlack:single): TStdCMYK;\nbegin\n  Result.C := ACyan;\n  Result.M := AMagenta;\n  Result.Y := AYellow;\n  Result.K := ABlack;\nend;\n\n{ TLinearRGBA }\n\nclass function TLinearRGBA.New(const ARed,AGreen,ABlue,AAlpha:single): TLinearRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TLinearRGBA.New(const ARed,AGreen,ABlue:single): TLinearRGBA;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 1;\nend;\n\n{ TYCbCr601 }\n\nclass function TYCbCr601.New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr601;\nbegin\n  Result.Y := ALuma;\n  Result.Cb := ABlueDiff;\n  Result.Cr := ARedDiff;\nend;\n\n{ TYCbCr601JPEG }\n\nclass function TYCbCr601JPEG.New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr601JPEG;\nbegin\n  Result.Y := ALuma;\n  Result.Cb := ABlueDiff;\n  Result.Cr := ARedDiff;\nend;\n\n{ TYCbCr709 }\n\nclass function TYCbCr709.New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr709;\nbegin\n  Result.Y := ALuma;\n  Result.Cb := ABlueDiff;\n  Result.Cr := ARedDiff;\nend;\n\n{ TYCbCr709JPEG }\n\nclass function TYCbCr709JPEG.New(const ALuma,ABlueDiff,ARedDiff:single): TYCbCr709JPEG;\nbegin\n  Result.Y := ALuma;\n  Result.Cb := ABlueDiff;\n  Result.Cr := ARedDiff;\nend;\n\n{ TXYZA }\n\nclass function TXYZA.New(const AX,AY,AZ,AAlpha:single): TXYZA;overload;\nbegin\n  Result.X := AX;\n  Result.Y := AY;\n  Result.Z := AZ;\n  Result.alpha := AAlpha;\nend;\n\nclass function TXYZA.New(const AX,AY,AZ:single): TXYZA;overload;\nbegin\n  Result.X := AX;\n  Result.Y := AY;\n  Result.Z := AZ;\n  Result.alpha := 1;\nend;\n\n{ TWordXYZA }\n\nclass function TWordXYZA.New(const AX,AY,AZ,AAlpha:word): TWordXYZA;overload;\nbegin\n  Result.X := AX;\n  Result.Y := AY;\n  Result.Z := AZ;\n  Result.alpha := AAlpha;\nend;\n\nclass function TWordXYZA.New(const AX,AY,AZ:word): TWordXYZA;overload;\nbegin\n  Result.X := AX;\n  Result.Y := AY;\n  Result.Z := AZ;\n  Result.alpha := 65535;\nend;\n\n{ TLabA }\n\nclass function TLabA.New(const ALightness,Aa,Ab,AAlpha:single): TLabA;overload;\nbegin\n  Result.L := ALightness;\n  Result.a := Aa;\n  Result.b := Ab;\n  Result.alpha := AAlpha;\nend;\n\nclass function TLabA.New(const ALightness,Aa,Ab:single): TLabA;overload;\nbegin\n  Result.L := ALightness;\n  Result.a := Aa;\n  Result.b := Ab;\n  Result.alpha := 1;\nend;\n\n{ TLChA }\n\nclass function TLChA.New(const ALightness,AChroma,AHue,AAlpha:single): TLChA;overload;\nbegin\n  Result.L := ALightness;\n  Result.C := AChroma;\n  Result.h := AHue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TLChA.New(const ALightness,AChroma,AHue:single): TLChA;overload;\nbegin\n  Result.L := ALightness;\n  Result.C := AChroma;\n  Result.h := AHue;\n  Result.alpha := 1;\nend;\n\n{$ENDIF}\n{ TColorColorspace }\n\nclass function TColorColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TColorColorspace.GetChannelCount: integer;\nbegin result := 3 end;\n\nclass function TColorColorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TColorColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TColorColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  1: result := 255;\n  2: result := 255;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TColorColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TColorColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 8 end;\n\nclass function TColorColorspace.GetName: string;\nbegin result := 'Color' end;\n\nclass function TColorColorspace.GetSize: integer;\nbegin result := sizeof(TColor) end;\n\nclass function TColorColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}(TColor(AColor^) shr 16) and $ff{$ELSE}TColor(AColor^) and $ff{$ENDIF};\n  1: result := (TColor(AColor^) shr 8) and $ff;\n  2: result := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}TColor(AColor^) and $ff{$ELSE}(TColor(AColor^) shr 16) and $ff{$ENDIF};\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TColorColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TColor(AColor^) := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord(TColor(AColor^) and $00ffff) or (Byte(Round(Clamp(AValue,0,255))) shl 16){$ELSE}LongWord(TColor(AColor^) and $ffff00) or Byte(Round(Clamp(AValue,0,255))){$ENDIF};\n  1: TColor(AColor^) := LongWord(TColor(AColor^) and $ff00ff) or (Byte(Round(Clamp(AValue,0,255))) shl 8);\n  2: TColor(AColor^) := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord(TColor(AColor^) and $ffff00) or Byte(Round(Clamp(AValue,0,255))){$ELSE}LongWord(TColor(AColor^) and $00ffff) or (Byte(Round(Clamp(AValue,0,255))) shl 16){$ENDIF};\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TColorColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TBGRAPixelColorspace }\n\nclass function TBGRAPixelColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TBGRAPixelColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TBGRAPixelColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TBGRAPixelColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TBGRAPixel(AColor^).alpha >= 255 then exit(ctFullyOpaque) else\n  if TBGRAPixel(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TBGRAPixelColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  1: result := 255;\n  2: result := 255;\n  3: result := 255;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TBGRAPixelColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TBGRAPixelColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 8 end;\n\nclass function TBGRAPixelColorspace.GetName: string;\nbegin result := 'BGRAPixel' end;\n\nclass function TBGRAPixelColorspace.GetSize: integer;\nbegin result := sizeof(TBGRAPixel) end;\n\nclass function TBGRAPixelColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TBGRAPixel(AColor^).red;\n  1: result := TBGRAPixel(AColor^).green;\n  2: result := TBGRAPixel(AColor^).blue;\n  3: result := TBGRAPixel(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TBGRAPixelColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TBGRAPixel(AColor^).red := Round(Clamp(AValue,0,255));\n  1: TBGRAPixel(AColor^).green := Round(Clamp(AValue,0,255));\n  2: TBGRAPixel(AColor^).blue := Round(Clamp(AValue,0,255));\n  3: TBGRAPixel(AColor^).alpha := Round(Clamp(AValue,0,255));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TBGRAPixelColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TFPColorColorspace }\n\nclass function TFPColorColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TFPColorColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TFPColorColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TFPColorColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TFPColor(AColor^).alpha >= 65535 then exit(ctFullyOpaque) else\n  if TFPColor(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TFPColorColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 65535;\n  1: result := 65535;\n  2: result := 65535;\n  3: result := 65535;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TFPColorColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TFPColorColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 16 end;\n\nclass function TFPColorColorspace.GetName: string;\nbegin result := 'FPColor' end;\n\nclass function TFPColorColorspace.GetSize: integer;\nbegin result := sizeof(TFPColor) end;\n\nclass function TFPColorColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TFPColor(AColor^).red;\n  1: result := TFPColor(AColor^).green;\n  2: result := TFPColor(AColor^).blue;\n  3: result := TFPColor(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TFPColorColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TFPColor(AColor^).red := Round(Clamp(AValue,0,65535));\n  1: TFPColor(AColor^).green := Round(Clamp(AValue,0,65535));\n  2: TFPColor(AColor^).blue := Round(Clamp(AValue,0,65535));\n  3: TFPColor(AColor^).alpha := Round(Clamp(AValue,0,65535));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TFPColorColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TByteMaskColorspace }\n\nclass function TByteMaskColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Gray';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TByteMaskColorspace.GetChannelCount: integer;\nbegin result := 1 end;\n\nclass function TByteMaskColorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TByteMaskColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TByteMaskColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TByteMaskColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TByteMaskColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 8 end;\n\nclass function TByteMaskColorspace.GetName: string;\nbegin result := 'ByteMask' end;\n\nclass function TByteMaskColorspace.GetSize: integer;\nbegin result := sizeof(TByteMask) end;\n\nclass function TByteMaskColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TByteMask(AColor^).gray;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TByteMaskColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TByteMask(AColor^).gray := Round(Clamp(AValue,0,255));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TByteMaskColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TExpandedPixelColorspace }\n\nclass function TExpandedPixelColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TExpandedPixelColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TExpandedPixelColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TExpandedPixelColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TExpandedPixel(AColor^).alpha >= 65535 then exit(ctFullyOpaque) else\n  if TExpandedPixel(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TExpandedPixelColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 65535;\n  1: result := 65535;\n  2: result := 65535;\n  3: result := 65535;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TExpandedPixelColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TExpandedPixelColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 16 end;\n\nclass function TExpandedPixelColorspace.GetName: string;\nbegin result := 'ExpandedPixel' end;\n\nclass function TExpandedPixelColorspace.GetSize: integer;\nbegin result := sizeof(TExpandedPixel) end;\n\nclass function TExpandedPixelColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TExpandedPixel(AColor^).red;\n  1: result := TExpandedPixel(AColor^).green;\n  2: result := TExpandedPixel(AColor^).blue;\n  3: result := TExpandedPixel(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TExpandedPixelColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TExpandedPixel(AColor^).red := Round(Clamp(AValue,0,65535));\n  1: TExpandedPixel(AColor^).green := Round(Clamp(AValue,0,65535));\n  2: TExpandedPixel(AColor^).blue := Round(Clamp(AValue,0,65535));\n  3: TExpandedPixel(AColor^).alpha := Round(Clamp(AValue,0,65535));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TExpandedPixelColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{ TStdRGBAColorspace }\n\nclass function TStdRGBAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdRGBAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TStdRGBAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TStdRGBAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TStdRGBA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TStdRGBA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TStdRGBAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 1;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdRGBAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdRGBAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TStdRGBAColorspace.GetName: string;\nbegin result := 'StdRGBA' end;\n\nclass function TStdRGBAColorspace.GetSize: integer;\nbegin result := sizeof(TStdRGBA) end;\n\nclass function TStdRGBAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TStdRGBA(AColor^).red;\n  1: result := TStdRGBA(AColor^).green;\n  2: result := TStdRGBA(AColor^).blue;\n  3: result := TStdRGBA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TStdRGBAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TStdRGBA(AColor^).red := AValue;\n  1: TStdRGBA(AColor^).green := AValue;\n  2: TStdRGBA(AColor^).blue := AValue;\n  3: TStdRGBA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdRGBAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TAdobeRGBAColorspace }\n\nclass function TAdobeRGBAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TAdobeRGBAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TAdobeRGBAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TAdobeRGBAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TAdobeRGBA(AColor^).alpha >= 255 then exit(ctFullyOpaque) else\n  if TAdobeRGBA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TAdobeRGBAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  1: result := 255;\n  2: result := 255;\n  3: result := 255;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TAdobeRGBAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TAdobeRGBAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 8 end;\n\nclass function TAdobeRGBAColorspace.GetName: string;\nbegin result := 'AdobeRGBA' end;\n\nclass function TAdobeRGBAColorspace.GetSize: integer;\nbegin result := sizeof(TAdobeRGBA) end;\n\nclass function TAdobeRGBAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TAdobeRGBA(AColor^).red;\n  1: result := TAdobeRGBA(AColor^).green;\n  2: result := TAdobeRGBA(AColor^).blue;\n  3: result := TAdobeRGBA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TAdobeRGBAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TAdobeRGBA(AColor^).red := Round(Clamp(AValue,0,255));\n  1: TAdobeRGBA(AColor^).green := Round(Clamp(AValue,0,255));\n  2: TAdobeRGBA(AColor^).blue := Round(Clamp(AValue,0,255));\n  3: TAdobeRGBA(AColor^).alpha := Round(Clamp(AValue,0,255));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TAdobeRGBAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TStdHSLAColorspace }\n\nclass function TStdHSLAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Hue';\n  1: result := 'Saturation';\n  2: result := 'Lightness';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSLAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TStdHSLAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TStdHSLAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TStdHSLA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TStdHSLA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TStdHSLAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 360;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSLAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSLAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TStdHSLAColorspace.GetName: string;\nbegin result := 'StdHSLA' end;\n\nclass function TStdHSLAColorspace.GetSize: integer;\nbegin result := sizeof(TStdHSLA) end;\n\nclass function TStdHSLAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TStdHSLA(AColor^).hue;\n  1: result := TStdHSLA(AColor^).saturation;\n  2: result := TStdHSLA(AColor^).lightness;\n  3: result := TStdHSLA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TStdHSLAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TStdHSLA(AColor^).hue := AValue;\n  1: TStdHSLA(AColor^).saturation := AValue;\n  2: TStdHSLA(AColor^).lightness := AValue;\n  3: TStdHSLA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSLAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TStdHSVAColorspace }\n\nclass function TStdHSVAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Hue';\n  1: result := 'Saturation';\n  2: result := 'Value';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSVAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TStdHSVAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TStdHSVAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TStdHSVA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TStdHSVA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TStdHSVAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 360;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSVAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSVAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TStdHSVAColorspace.GetName: string;\nbegin result := 'StdHSVA' end;\n\nclass function TStdHSVAColorspace.GetSize: integer;\nbegin result := sizeof(TStdHSVA) end;\n\nclass function TStdHSVAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TStdHSVA(AColor^).hue;\n  1: result := TStdHSVA(AColor^).saturation;\n  2: result := TStdHSVA(AColor^).value;\n  3: result := TStdHSVA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TStdHSVAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TStdHSVA(AColor^).hue := AValue;\n  1: TStdHSVA(AColor^).saturation := AValue;\n  2: TStdHSVA(AColor^).value := AValue;\n  3: TStdHSVA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdHSVAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TStdCMYKColorspace }\n\nclass function TStdCMYKColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Cyan';\n  1: result := 'Magenta';\n  2: result := 'Yellow';\n  3: result := 'Black';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdCMYKColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TStdCMYKColorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TStdCMYKColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TStdCMYKColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 1;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdCMYKColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdCMYKColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TStdCMYKColorspace.GetName: string;\nbegin result := 'StdCMYK' end;\n\nclass function TStdCMYKColorspace.GetSize: integer;\nbegin result := sizeof(TStdCMYK) end;\n\nclass function TStdCMYKColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TStdCMYK(AColor^).C;\n  1: result := TStdCMYK(AColor^).M;\n  2: result := TStdCMYK(AColor^).Y;\n  3: result := TStdCMYK(AColor^).K;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TStdCMYKColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TStdCMYK(AColor^).C := AValue;\n  1: TStdCMYK(AColor^).M := AValue;\n  2: TStdCMYK(AColor^).Y := AValue;\n  3: TStdCMYK(AColor^).K := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TStdCMYKColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TLinearRGBAColorspace }\n\nclass function TLinearRGBAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Red';\n  1: result := 'Green';\n  2: result := 'Blue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLinearRGBAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TLinearRGBAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TLinearRGBAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TLinearRGBA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TLinearRGBA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TLinearRGBAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 1;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLinearRGBAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLinearRGBAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TLinearRGBAColorspace.GetName: string;\nbegin result := 'LinearRGBA' end;\n\nclass function TLinearRGBAColorspace.GetSize: integer;\nbegin result := sizeof(TLinearRGBA) end;\n\nclass function TLinearRGBAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TLinearRGBA(AColor^).red;\n  1: result := TLinearRGBA(AColor^).green;\n  2: result := TLinearRGBA(AColor^).blue;\n  3: result := TLinearRGBA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TLinearRGBAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TLinearRGBA(AColor^).red := AValue;\n  1: TLinearRGBA(AColor^).green := AValue;\n  2: TLinearRGBA(AColor^).blue := AValue;\n  3: TLinearRGBA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLinearRGBAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ THSLAPixelColorspace }\n\nclass function THSLAPixelColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Hue';\n  1: result := 'Saturation';\n  2: result := 'Lightness';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function THSLAPixelColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function THSLAPixelColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function THSLAPixelColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if THSLAPixel(AColor^).alpha >= 65535 then exit(ctFullyOpaque) else\n  if THSLAPixel(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function THSLAPixelColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 65535;\n  1: result := 65535;\n  2: result := 65535;\n  3: result := 65535;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function THSLAPixelColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function THSLAPixelColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 16 end;\n\nclass function THSLAPixelColorspace.GetName: string;\nbegin result := 'HSLAPixel' end;\n\nclass function THSLAPixelColorspace.GetSize: integer;\nbegin result := sizeof(THSLAPixel) end;\n\nclass function THSLAPixelColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := THSLAPixel(AColor^).hue;\n  1: result := THSLAPixel(AColor^).saturation;\n  2: result := THSLAPixel(AColor^).lightness;\n  3: result := THSLAPixel(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure THSLAPixelColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: THSLAPixel(AColor^).hue := Round(Clamp(AValue,0,65535));\n  1: THSLAPixel(AColor^).saturation := Round(Clamp(AValue,0,65535));\n  2: THSLAPixel(AColor^).lightness := Round(Clamp(AValue,0,65535));\n  3: THSLAPixel(AColor^).alpha := Round(Clamp(AValue,0,65535));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function THSLAPixelColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TGSBAPixelColorspace }\n\nclass function TGSBAPixelColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Hue';\n  1: result := 'Saturation';\n  2: result := 'Brightness';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TGSBAPixelColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TGSBAPixelColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TGSBAPixelColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TGSBAPixel(AColor^).alpha >= 65535 then exit(ctFullyOpaque) else\n  if TGSBAPixel(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TGSBAPixelColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 65535;\n  1: result := 65535;\n  2: result := 65535;\n  3: result := 65535;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TGSBAPixelColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TGSBAPixelColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 16 end;\n\nclass function TGSBAPixelColorspace.GetName: string;\nbegin result := 'GSBAPixel' end;\n\nclass function TGSBAPixelColorspace.GetSize: integer;\nbegin result := sizeof(TGSBAPixel) end;\n\nclass function TGSBAPixelColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TGSBAPixel(AColor^).hue;\n  1: result := TGSBAPixel(AColor^).saturation;\n  2: result := TGSBAPixel(AColor^).lightness;\n  3: result := TGSBAPixel(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TGSBAPixelColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TGSBAPixel(AColor^).hue := Round(Clamp(AValue,0,65535));\n  1: TGSBAPixel(AColor^).saturation := Round(Clamp(AValue,0,65535));\n  2: TGSBAPixel(AColor^).lightness := Round(Clamp(AValue,0,65535));\n  3: TGSBAPixel(AColor^).alpha := Round(Clamp(AValue,0,65535));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TGSBAPixelColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite] end;\n\n\n{ TYCbCr601Colorspace }\n\nclass function TYCbCr601Colorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Luma';\n  1: result := 'BlueDiff';\n  2: result := 'RedDiff';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601Colorspace.GetChannelCount: integer;\nbegin result := 3 end;\n\nclass function TYCbCr601Colorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TYCbCr601Colorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TYCbCr601Colorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 235;\n  1: result := 240;\n  2: result := 240;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601Colorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 16;\n  1: result := 16;\n  2: result := 16;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601Colorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TYCbCr601Colorspace.GetName: string;\nbegin result := 'YCbCr601' end;\n\nclass function TYCbCr601Colorspace.GetSize: integer;\nbegin result := sizeof(TYCbCr601) end;\n\nclass function TYCbCr601Colorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TYCbCr601(AColor^).Y;\n  1: result := TYCbCr601(AColor^).Cb;\n  2: result := TYCbCr601(AColor^).Cr;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TYCbCr601Colorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TYCbCr601(AColor^).Y := AValue;\n  1: TYCbCr601(AColor^).Cb := AValue;\n  2: TYCbCr601(AColor^).Cr := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601Colorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TYCbCr601JPEGColorspace }\n\nclass function TYCbCr601JPEGColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Luma';\n  1: result := 'BlueDiff';\n  2: result := 'RedDiff';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601JPEGColorspace.GetChannelCount: integer;\nbegin result := 3 end;\n\nclass function TYCbCr601JPEGColorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TYCbCr601JPEGColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TYCbCr601JPEGColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  1: result := 255.5;\n  2: result := 255.5;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601JPEGColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0.5;\n  2: result := 0.5;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601JPEGColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TYCbCr601JPEGColorspace.GetName: string;\nbegin result := 'YCbCr601JPEG' end;\n\nclass function TYCbCr601JPEGColorspace.GetSize: integer;\nbegin result := sizeof(TYCbCr601JPEG) end;\n\nclass function TYCbCr601JPEGColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TYCbCr601JPEG(AColor^).Y;\n  1: result := TYCbCr601JPEG(AColor^).Cb;\n  2: result := TYCbCr601JPEG(AColor^).Cr;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TYCbCr601JPEGColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TYCbCr601JPEG(AColor^).Y := AValue;\n  1: TYCbCr601JPEG(AColor^).Cb := AValue;\n  2: TYCbCr601JPEG(AColor^).Cr := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr601JPEGColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TYCbCr709Colorspace }\n\nclass function TYCbCr709Colorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Luma';\n  1: result := 'BlueDiff';\n  2: result := 'RedDiff';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709Colorspace.GetChannelCount: integer;\nbegin result := 3 end;\n\nclass function TYCbCr709Colorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TYCbCr709Colorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TYCbCr709Colorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 235;\n  1: result := 240;\n  2: result := 240;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709Colorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 16;\n  1: result := 16;\n  2: result := 16;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709Colorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TYCbCr709Colorspace.GetName: string;\nbegin result := 'YCbCr709' end;\n\nclass function TYCbCr709Colorspace.GetSize: integer;\nbegin result := sizeof(TYCbCr709) end;\n\nclass function TYCbCr709Colorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TYCbCr709(AColor^).Y;\n  1: result := TYCbCr709(AColor^).Cb;\n  2: result := TYCbCr709(AColor^).Cr;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TYCbCr709Colorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TYCbCr709(AColor^).Y := AValue;\n  1: TYCbCr709(AColor^).Cb := AValue;\n  2: TYCbCr709(AColor^).Cr := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709Colorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TYCbCr709JPEGColorspace }\n\nclass function TYCbCr709JPEGColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Luma';\n  1: result := 'BlueDiff';\n  2: result := 'RedDiff';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709JPEGColorspace.GetChannelCount: integer;\nbegin result := 3 end;\n\nclass function TYCbCr709JPEGColorspace.IndexOfAlphaChannel: integer;\nbegin result := -1 end;\n\nclass function TYCbCr709JPEGColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin result := ctFullyOpaque end;\n\nclass function TYCbCr709JPEGColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 255;\n  1: result := 255.5;\n  2: result := 255.5;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709JPEGColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0.5;\n  2: result := 0.5;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709JPEGColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TYCbCr709JPEGColorspace.GetName: string;\nbegin result := 'YCbCr709JPEG' end;\n\nclass function TYCbCr709JPEGColorspace.GetSize: integer;\nbegin result := sizeof(TYCbCr709JPEG) end;\n\nclass function TYCbCr709JPEGColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TYCbCr709JPEG(AColor^).Y;\n  1: result := TYCbCr709JPEG(AColor^).Cb;\n  2: result := TYCbCr709JPEG(AColor^).Cr;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TYCbCr709JPEGColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TYCbCr709JPEG(AColor^).Y := AValue;\n  1: TYCbCr709JPEG(AColor^).Cb := AValue;\n  2: TYCbCr709JPEG(AColor^).Cr := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TYCbCr709JPEGColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfFixedReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TXYZAColorspace }\n\nclass function TXYZAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'X';\n  1: result := 'Y';\n  2: result := 'Z';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TXYZAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TXYZAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TXYZAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TXYZA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TXYZA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TXYZAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 1;\n  1: result := 1;\n  2: result := 1;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TXYZAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TXYZAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TXYZAColorspace.GetName: string;\nbegin result := 'XYZA' end;\n\nclass function TXYZAColorspace.GetSize: integer;\nbegin result := sizeof(TXYZA) end;\n\nclass function TXYZAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TXYZA(AColor^).X;\n  1: result := TXYZA(AColor^).Y;\n  2: result := TXYZA(AColor^).Z;\n  3: result := TXYZA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TXYZAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TXYZA(AColor^).X := AValue;\n  1: TXYZA(AColor^).Y := AValue;\n  2: TXYZA(AColor^).Z := AValue;\n  3: TXYZA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TXYZAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfMovableReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TWordXYZAColorspace }\n\nclass function TWordXYZAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'X';\n  1: result := 'Y';\n  2: result := 'Z';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TWordXYZAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TWordXYZAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TWordXYZAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TWordXYZA(AColor^).alpha >= 65535 then exit(ctFullyOpaque) else\n  if TWordXYZA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TWordXYZAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 50000;\n  1: result := 50000;\n  2: result := 50000;\n  3: result := 65535;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TWordXYZAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TWordXYZAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 16 end;\n\nclass function TWordXYZAColorspace.GetName: string;\nbegin result := 'WordXYZA' end;\n\nclass function TWordXYZAColorspace.GetSize: integer;\nbegin result := sizeof(TWordXYZA) end;\n\nclass function TWordXYZAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TWordXYZA(AColor^).X;\n  1: result := TWordXYZA(AColor^).Y;\n  2: result := TWordXYZA(AColor^).Z;\n  3: result := TWordXYZA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TWordXYZAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TWordXYZA(AColor^).X := Round(Clamp(AValue,0,50000));\n  1: TWordXYZA(AColor^).Y := Round(Clamp(AValue,0,50000));\n  2: TWordXYZA(AColor^).Z := Round(Clamp(AValue,0,50000));\n  3: TWordXYZA(AColor^).alpha := Round(Clamp(AValue,0,65535));\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TWordXYZAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfMovableReferenceWhite,cfHasImaginaryColors] end;\n\n\n{ TLabAColorspace }\n\nclass function TLabAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Lightness';\n  1: result := 'a';\n  2: result := 'b';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLabAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TLabAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TLabAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TLabA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TLabA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TLabAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 100;\n  1: result := 142;\n  2: result := 147;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLabAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := -166;\n  2: result := -132;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLabAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TLabAColorspace.GetName: string;\nbegin result := 'LabA' end;\n\nclass function TLabAColorspace.GetSize: integer;\nbegin result := sizeof(TLabA) end;\n\nclass function TLabAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TLabA(AColor^).L;\n  1: result := TLabA(AColor^).a;\n  2: result := TLabA(AColor^).b;\n  3: result := TLabA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TLabAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TLabA(AColor^).L := AValue;\n  1: TLabA(AColor^).a := AValue;\n  2: TLabA(AColor^).b := AValue;\n  3: TLabA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLabAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfReferenceWhiteIndependent,cfHasImaginaryColors] end;\n\n\n{ TLChAColorspace }\n\nclass function TLChAColorspace.GetChannelName(AIndex: integer): string;\nbegin\n  case AIndex of\n  0: result := 'Lightness';\n  1: result := 'Chroma';\n  2: result := 'Hue';\n  3: result := 'Alpha';\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLChAColorspace.GetChannelCount: integer;\nbegin result := 4 end;\n\nclass function TLChAColorspace.IndexOfAlphaChannel: integer;\nbegin result := 3 end;\n\nclass function TLChAColorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;\nbegin\n  if TLChA(AColor^).alpha >= 1 then exit(ctFullyOpaque) else\n  if TLChA(AColor^).alpha <= 0 then exit(ctFullyTransparent) else\n  exit(ctSemiTransparent)\nend;\n\nclass function TLChAColorspace.GetMaxValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 100;\n  1: result := 192;\n  2: result := 360;\n  3: result := 1;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLChAColorspace.GetMinValue(AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := 0;\n  1: result := 0;\n  2: result := 0;\n  3: result := 0;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLChAColorspace.GetChannelBitDepth(AIndex: integer): byte;\nbegin result := 28 end;\n\nclass function TLChAColorspace.GetName: string;\nbegin result := 'LChA' end;\n\nclass function TLChAColorspace.GetSize: integer;\nbegin result := sizeof(TLChA) end;\n\nclass function TLChAColorspace.GetChannel(AColor: Pointer; AIndex: integer): single;\nbegin\n  case AIndex of\n  0: result := TLChA(AColor^).L;\n  1: result := TLChA(AColor^).C;\n  2: result := TLChA(AColor^).h;\n  3: result := TLChA(AColor^).alpha;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass procedure TLChAColorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);\nbegin\n  case AIndex of\n  0: TLChA(AColor^).L := AValue;\n  1: TLChA(AColor^).C := AValue;\n  2: TLChA(AColor^).h := AValue;\n  3: TLChA(AColor^).alpha := AValue;\n  else raise ERangeError.Create('Index out of bounds');\n  end;\nend;\n\nclass function TLChAColorspace.GetFlags: TColorspaceFlags;\nbegin result := [cfReferenceWhiteIndependent,cfHasImaginaryColors] end;\n\n\n{$ENDIF}\n{ TColorHelper }\n\nclass function TColorHelper.New(const ARed,AGreen,ABlue:byte): TColor;\nbegin Result := BGRAGraphics.RGBToColor(ARed,AGreen,ABlue) end;\n\nclass function TColorHelper.Colorspace: TColorspaceAny; static;\nbegin result := TColorColorspace end;\n\nfunction TColorHelper.GetRed: byte;\nbegin result := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}(self shr 16) and $ff{$ELSE}self and $ff{$ENDIF} end;\n\nfunction TColorHelper.GetGreen: byte;\nbegin result := (self shr 8) and $ff end;\n\nfunction TColorHelper.GetBlue: byte;\nbegin result := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}self and $ff{$ELSE}(self shr 16) and $ff{$ENDIF} end;\n\nprocedure TColorHelper.SetRed(AValue: byte);\nbegin self := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord(self and $00ffff) or (AValue shl 16){$ELSE}LongWord(self and $ffff00) or AValue{$ENDIF} end;\n\nprocedure TColorHelper.SetGreen(AValue: byte);\nbegin self := LongWord(self and $ff00ff) or (AValue shl 8) end;\n\nprocedure TColorHelper.SetBlue(AValue: byte);\nbegin self := {$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord(self and $ffff00) or AValue{$ELSE}LongWord(self and $00ffff) or (AValue shl 16){$ENDIF} end;\n\nfunction TColorHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := ColorToBGRA(Self) end;\n\nfunction TColorHelper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := ColorToBGRA(Self, AAlpha) end;\n\nfunction TColorHelper.ToFPColor: TFPColor;overload;\nbegin Result := ColorToFPColor(Self) end;\n\nfunction TColorHelper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := ColorToFPColor(Self, AAlpha) end;\n\nfunction TColorHelper.ToByteMask: TByteMask;\nbegin Result := ColorToByteMask(Self) end;\n\nfunction TColorHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := ColorToExpandedPixel(Self) end;\n\nfunction TColorHelper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := ColorToExpandedPixel(Self, AAlpha) end;\n\nfunction TColorHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TColorHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAToColor(AValue) end;\n\nprocedure TColorHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToColor(AValue) end;\n\nprocedure TColorHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToColor(AValue) end;\n\nprocedure TColorHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToColor(AValue) end;\n\nprocedure TColorHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToColor(HSLAToExpanded(AValue)) end;\n\nprocedure TColorHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToColor(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TColorHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := ColorToStdRGBA(Self) end;\n\nfunction TColorHelper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := ColorToStdRGBA(Self, AAlpha) end;\n\nfunction TColorHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := ColorToStdHSLA(Self) end;\n\nfunction TColorHelper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := ColorToStdHSLA(Self, AAlpha) end;\n\nfunction TColorHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := ColorToStdHSVA(Self) end;\n\nfunction TColorHelper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := ColorToStdHSVA(Self, AAlpha) end;\n\nfunction TColorHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ColorToStdCMYK(Self) end;\n\nfunction TColorHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ColorToYCbCr601(Self) end;\n\nfunction TColorHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ColorToYCbCr601JPEG(Self) end;\n\nfunction TColorHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ColorToYCbCr709(Self) end;\n\nfunction TColorHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ColorToYCbCr709JPEG(Self) end;\n\nfunction TColorHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(ColorToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TColorHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(ColorToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TColorHelper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TColorHelper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(ColorToExpandedPixel(Self)) end;\n\nfunction TColorHelper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(ColorToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TColorHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToColor(AValue) end;\n\nprocedure TColorHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToColor(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TColorHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToColor(AValue) end;\n\nprocedure TColorHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToColor(AValue) end;\n\nprocedure TColorHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToColor(AValue) end;\n\nprocedure TColorHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToColor(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TColorHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToColor(AValue) end;\n\nprocedure TColorHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToColor(AValue) end;\n\nprocedure TColorHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToColor(AValue) end;\n\nprocedure TColorHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToColor(AValue) end;\n\nprocedure TColorHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToColor(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TColorHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToColor(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TColorHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToColor(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TColorHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToColor(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TColorHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToColor(LabAToExpandedPixel(AValue)) end;\n\nprocedure TColorHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToColor(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TBGRAPixelHelper }\n\nclass function TBGRAPixelHelper.Colorspace: TColorspaceAny; static;\nbegin result := TBGRAPixelColorspace end;\n\nfunction TBGRAPixelHelper.ToByteMask: TByteMask;\nbegin Result := BGRAToMask(Self) end;\n\nprocedure TBGRAPixelHelper.FromByteMask(AValue: TByteMask);\nbegin Self := MaskToBGRA(AValue) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TBGRAPixelHelper.ToStdRGBA: TStdRGBA;\nbegin Result := BGRAPixelToStdRGBA(Self) end;\n\nfunction TBGRAPixelHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(GammaExpansion(Self)) end;\n\nfunction TBGRAPixelHelper.ToStdHSLA: TStdHSLA;\nbegin Result := BGRAPixelToStdHSLA(Self) end;\n\nfunction TBGRAPixelHelper.ToStdHSVA: TStdHSVA;\nbegin Result := BGRAPixelToStdHSVA(Self) end;\n\nfunction TBGRAPixelHelper.ToStdCMYK: TStdCMYK;\nbegin Result := BGRAPixelToStdCMYK(Self) end;\n\nfunction TBGRAPixelHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(GammaExpansion(Self)) end;\n\nfunction TBGRAPixelHelper.ToYCbCr601: TYCbCr601;\nbegin Result := BGRAPixelToYCbCr601(Self) end;\n\nfunction TBGRAPixelHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := BGRAPixelToYCbCr601JPEG(Self) end;\n\nfunction TBGRAPixelHelper.ToYCbCr709: TYCbCr709;\nbegin Result := BGRAPixelToYCbCr709(Self) end;\n\nfunction TBGRAPixelHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := BGRAPixelToYCbCr709JPEG(Self) end;\n\nfunction TBGRAPixelHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(GammaExpansion(Self)) end;\n\nfunction TBGRAPixelHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(GammaExpansion(Self),AReferenceWhite) end;\n\nfunction TBGRAPixelHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(GammaExpansion(Self)) end;\n\nfunction TBGRAPixelHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(GammaExpansion(Self),AReferenceWhite) end;\n\nfunction TBGRAPixelHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(GammaExpansion(Self)) end;\n\nfunction TBGRAPixelHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(GammaExpansion(Self)) end;\n\nprocedure TBGRAPixelHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := GammaCompression(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TBGRAPixelHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := GammaCompression(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TBGRAPixelHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToBGRAPixel(AValue) end;\n\nprocedure TBGRAPixelHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := GammaCompression(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TBGRAPixelHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := GammaCompression(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TBGRAPixelHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := GammaCompression(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TBGRAPixelHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := GammaCompression(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TBGRAPixelHelper.FromLabA(AValue: TLabA);\nbegin Self := GammaCompression(LabAToExpandedPixel(AValue)) end;\n\nprocedure TBGRAPixelHelper.FromLChA(AValue: TLChA);\nbegin Self := GammaCompression(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TFPColorHelper }\n\nclass function TFPColorHelper.New(const ARed,AGreen,ABlue,AAlpha:word): TFPColor;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := AAlpha;\nend;\n\nclass function TFPColorHelper.New(const ARed,AGreen,ABlue:word): TFPColor;overload;\nbegin\n  Result.red := ARed;\n  Result.green := AGreen;\n  Result.blue := ABlue;\n  Result.alpha := 65535;\nend;\n\nclass function TFPColorHelper.Colorspace: TColorspaceAny; static;\nbegin result := TFPColorColorspace end;\n\nfunction TFPColorHelper.ToByteMask: TByteMask;\nbegin Result := FPColorToByteMask(Self) end;\n\nprocedure TFPColorHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToFPColor(AValue) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TFPColorHelper.ToStdRGBA: TStdRGBA;\nbegin Result := FPColorToStdRGBA(Self) end;\n\nfunction TFPColorHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(FPColorToExpanded(Self)) end;\n\nfunction TFPColorHelper.ToStdHSLA: TStdHSLA;\nbegin Result := FPColorToStdHSLA(Self) end;\n\nfunction TFPColorHelper.ToStdHSVA: TStdHSVA;\nbegin Result := FPColorToStdHSVA(Self) end;\n\nfunction TFPColorHelper.ToStdCMYK: TStdCMYK;\nbegin Result := FPColorToStdCMYK(Self) end;\n\nfunction TFPColorHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(FPColorToExpanded(Self)) end;\n\nfunction TFPColorHelper.ToYCbCr601: TYCbCr601;\nbegin Result := FPColorToYCbCr601(Self) end;\n\nfunction TFPColorHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := FPColorToYCbCr601JPEG(Self) end;\n\nfunction TFPColorHelper.ToYCbCr709: TYCbCr709;\nbegin Result := FPColorToYCbCr709(Self) end;\n\nfunction TFPColorHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := FPColorToYCbCr709JPEG(Self) end;\n\nfunction TFPColorHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(FPColorToExpanded(Self)) end;\n\nfunction TFPColorHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(FPColorToExpanded(Self),AReferenceWhite) end;\n\nfunction TFPColorHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(FPColorToExpanded(Self)) end;\n\nfunction TFPColorHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(FPColorToExpanded(Self),AReferenceWhite) end;\n\nfunction TFPColorHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(FPColorToExpanded(Self)) end;\n\nfunction TFPColorHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(FPColorToExpanded(Self)) end;\n\nprocedure TFPColorHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedToFPColor(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TFPColorHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedToFPColor(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TFPColorHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToFPColor(AValue) end;\n\nprocedure TFPColorHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedToFPColor(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TFPColorHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToFPColor(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TFPColorHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedToFPColor(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TFPColorHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToFPColor(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TFPColorHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedToFPColor(LabAToExpandedPixel(AValue)) end;\n\nprocedure TFPColorHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedToFPColor(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TByteMaskHelper }\n\nclass function TByteMaskHelper.Colorspace: TColorspaceAny; static;\nbegin result := TByteMaskColorspace end;\n\nfunction TByteMaskHelper.ToColor: TColor;\nbegin Result := ByteMaskToColor(Self) end;\n\nfunction TByteMaskHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := MaskToBGRA(Self) end;\n\nfunction TByteMaskHelper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := MaskToBGRA(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToFPColor: TFPColor;overload;\nbegin Result := ByteMaskToFPColor(Self) end;\n\nfunction TByteMaskHelper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := ByteMaskToFPColor(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := ByteMaskToExpandedPixel(Self) end;\n\nfunction TByteMaskHelper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := ByteMaskToExpandedPixel(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TByteMaskHelper.FromColor(AValue: TColor);\nbegin Self := ColorToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAToMask(AValue) end;\n\nprocedure TByteMaskHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToByteMask(HSLAToExpanded(AValue)) end;\n\nprocedure TByteMaskHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToByteMask(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TByteMaskHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := ByteMaskToStdRGBA(Self) end;\n\nfunction TByteMaskHelper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := ByteMaskToStdRGBA(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := ByteMaskToStdHSLA(Self) end;\n\nfunction TByteMaskHelper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := ByteMaskToStdHSLA(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := ByteMaskToStdHSVA(Self) end;\n\nfunction TByteMaskHelper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := ByteMaskToStdHSVA(Self, AAlpha) end;\n\nfunction TByteMaskHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ByteMaskToStdCMYK(Self) end;\n\nfunction TByteMaskHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ByteMaskToYCbCr601(Self) end;\n\nfunction TByteMaskHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ByteMaskToYCbCr601JPEG(Self) end;\n\nfunction TByteMaskHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ByteMaskToYCbCr709(Self) end;\n\nfunction TByteMaskHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ByteMaskToYCbCr709JPEG(Self) end;\n\nfunction TByteMaskHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TByteMaskHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TByteMaskHelper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TByteMaskHelper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(ByteMaskToExpandedPixel(Self)) end;\n\nfunction TByteMaskHelper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(ByteMaskToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TByteMaskHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToByteMask(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TByteMaskHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToByteMask(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TByteMaskHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToByteMask(AValue) end;\n\nprocedure TByteMaskHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToByteMask(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TByteMaskHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToByteMask(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TByteMaskHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToByteMask(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TByteMaskHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToByteMask(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TByteMaskHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToByteMask(LabAToExpandedPixel(AValue)) end;\n\nprocedure TByteMaskHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToByteMask(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TExpandedPixelHelper }\n\nclass function TExpandedPixelHelper.Colorspace: TColorspaceAny; static;\nbegin result := TExpandedPixelColorspace end;\n\nfunction TExpandedPixelHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(Self) end;\n\nprocedure TExpandedPixelHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToExpandedPixel(AValue) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TExpandedPixelHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(Self) end;\n\nfunction TExpandedPixelHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(Self) end;\n\nfunction TExpandedPixelHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(Self) end;\n\nfunction TExpandedPixelHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(Self) end;\n\nfunction TExpandedPixelHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(Self) end;\n\nfunction TExpandedPixelHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(Self) end;\n\nfunction TExpandedPixelHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(Self) end;\n\nfunction TExpandedPixelHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(Self) end;\n\nfunction TExpandedPixelHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(Self) end;\n\nfunction TExpandedPixelHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(Self) end;\n\nfunction TExpandedPixelHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(Self) end;\n\nfunction TExpandedPixelHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(Self,AReferenceWhite) end;\n\nfunction TExpandedPixelHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(Self) end;\n\nfunction TExpandedPixelHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(Self,AReferenceWhite) end;\n\nfunction TExpandedPixelHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(Self) end;\n\nfunction TExpandedPixelHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(Self) end;\n\nprocedure TExpandedPixelHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := AdobeRGBAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := LinearRGBAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := XYZAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := XYZAToExpandedPixel(AValue,AReferenceWhite) end;\n\nprocedure TExpandedPixelHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := WordXYZAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := WordXYZAToExpandedPixel(AValue,AReferenceWhite) end;\n\nprocedure TExpandedPixelHelper.FromLabA(AValue: TLabA);\nbegin Self := LabAToExpandedPixel(AValue) end;\n\nprocedure TExpandedPixelHelper.FromLChA(AValue: TLChA);\nbegin Self := LChAToExpandedPixel(AValue) end;\n\n{$ENDIF}\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n{ TStdRGBAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TStdRGBAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TStdRGBAColorspace end;\n\n{$ENDIF}\nfunction TStdRGBAHelper.ToColor: TColor;\nbegin Result := StdRGBAToColor(Self) end;\n\nfunction TStdRGBAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(Self) end;\n\nfunction TStdRGBAHelper.ToFPColor: TFPColor;\nbegin Result := StdRGBAToFPColor(Self) end;\n\nfunction TStdRGBAHelper.ToByteMask: TByteMask;\nbegin Result := StdRGBAToByteMask(Self) end;\n\nfunction TStdRGBAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(Self) end;\n\nfunction TStdRGBAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdRGBAToExpandedPixel(Self)) end;\n\nprocedure TStdRGBAHelper.FromColor(AValue: TColor);\nbegin Self := ColorToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToStdRGBA(HSLAToExpanded(AValue)) end;\n\nprocedure TStdRGBAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToStdRGBA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TStdRGBAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(Self) end;\n\nfunction TStdRGBAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(Self) end;\n\nfunction TStdRGBAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(Self) end;\n\nfunction TStdRGBAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(Self) end;\n\nfunction TStdRGBAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(Self) end;\n\nfunction TStdRGBAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(Self) end;\n\nfunction TStdRGBAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(Self) end;\n\nfunction TStdRGBAHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdRGBAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdRGBAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdRGBAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdRGBAHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(StdRGBAToExpandedPixel(Self)) end;\n\nfunction TStdRGBAHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(StdRGBAToExpandedPixel(Self)) end;\n\nprocedure TStdRGBAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToStdRGBA(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdRGBAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToStdRGBA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdRGBAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToStdRGBA(AValue) end;\n\nprocedure TStdRGBAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToStdRGBA(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdRGBAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdRGBA(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdRGBAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToStdRGBA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdRGBAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdRGBA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdRGBAHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToStdRGBA(LabAToExpandedPixel(AValue)) end;\n\nprocedure TStdRGBAHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToStdRGBA(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TAdobeRGBAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TAdobeRGBAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TAdobeRGBAColorspace end;\n\n{$ENDIF}\nfunction TAdobeRGBAHelper.ToColor: TColor;\nbegin Result := ExpandedPixelToColor(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := GammaCompression(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToFPColor: TFPColor;\nbegin Result := ExpandedToFPColor(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := AdobeRGBAToExpandedPixel(Self) end;\n\nfunction TAdobeRGBAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(AdobeRGBAToExpandedPixel(Self)) end;\n\nprocedure TAdobeRGBAHelper.FromColor(AValue: TColor);\nbegin Self := ExpandedPixelToAdobeRGBA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := ExpandedPixelToAdobeRGBA(GammaExpansion(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := ExpandedPixelToAdobeRGBA(FPColorToExpanded(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedPixelToAdobeRGBA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToAdobeRGBA(AValue) end;\n\nprocedure TAdobeRGBAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToAdobeRGBA(HSLAToExpanded(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToAdobeRGBA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TAdobeRGBAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := AdobeRGBAToLinearRGBA(Self) end;\n\nfunction TAdobeRGBAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(AdobeRGBAToExpandedPixel(Self)) end;\n\nfunction TAdobeRGBAHelper.ToXYZA: TXYZA;overload;\nbegin Result := AdobeRGBAToXYZA(Self) end;\n\nfunction TAdobeRGBAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := AdobeRGBAToXYZA(Self,AReferenceWhite) end;\n\nfunction TAdobeRGBAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := AdobeRGBAToWordXYZA(Self) end;\n\nfunction TAdobeRGBAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := AdobeRGBAToWordXYZA(Self,AReferenceWhite) end;\n\nfunction TAdobeRGBAHelper.ToLabA: TLabA;\nbegin Result := AdobeRGBAToLabA(Self) end;\n\nfunction TAdobeRGBAHelper.ToLChA: TLChA;\nbegin Result := AdobeRGBAToLChA(Self) end;\n\nprocedure TAdobeRGBAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedPixelToAdobeRGBA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedPixelToAdobeRGBA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedPixelToAdobeRGBA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedPixelToAdobeRGBA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := LinearRGBAToAdobeRGBA(AValue) end;\n\nprocedure TAdobeRGBAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedPixelToAdobeRGBA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedPixelToAdobeRGBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedPixelToAdobeRGBA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedPixelToAdobeRGBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TAdobeRGBAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := XYZAToAdobeRGBA(AValue) end;\n\nprocedure TAdobeRGBAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := XYZAToAdobeRGBA(AValue,AReferenceWhite) end;\n\nprocedure TAdobeRGBAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := WordXYZAToAdobeRGBA(AValue) end;\n\nprocedure TAdobeRGBAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := WordXYZAToAdobeRGBA(AValue,AReferenceWhite) end;\n\nprocedure TAdobeRGBAHelper.FromLabA(AValue: TLabA);\nbegin Self := LabAToAdobeRGBA(AValue) end;\n\nprocedure TAdobeRGBAHelper.FromLChA(AValue: TLChA);\nbegin Self := LChAToAdobeRGBA(AValue) end;\n\n{$ENDIF}\n{ TStdHSLAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TStdHSLAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TStdHSLAColorspace end;\n\n{$ENDIF}\nfunction TStdHSLAHelper.ToColor: TColor;\nbegin Result := StdHSLAToColor(Self) end;\n\nfunction TStdHSLAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := StdHSLAToBGRAPixel(Self) end;\n\nfunction TStdHSLAHelper.ToFPColor: TFPColor;\nbegin Result := StdHSLAToFPColor(Self) end;\n\nfunction TStdHSLAHelper.ToByteMask: TByteMask;\nbegin Result := StdHSLAToByteMask(Self) end;\n\nfunction TStdHSLAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := StdHSLAToExpandedPixel(Self) end;\n\nfunction TStdHSLAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdHSLAToExpandedPixel(Self)) end;\n\nprocedure TStdHSLAHelper.FromColor(AValue: TColor);\nbegin Self := ColorToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToStdHSLA(HSLAToExpanded(AValue)) end;\n\nprocedure TStdHSLAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToStdHSLA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TStdHSLAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := StdHSLAToStdRGBA(Self) end;\n\nfunction TStdHSLAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := StdHSLAToStdHSVA(Self) end;\n\nfunction TStdHSLAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := StdHSLAToStdCMYK(Self) end;\n\nfunction TStdHSLAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := StdHSLAToYCbCr601(Self) end;\n\nfunction TStdHSLAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := StdHSLAToYCbCr601JPEG(Self) end;\n\nfunction TStdHSLAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := StdHSLAToYCbCr709(Self) end;\n\nfunction TStdHSLAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := StdHSLAToYCbCr709JPEG(Self) end;\n\nfunction TStdHSLAHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdHSLAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdHSLAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdHSLAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdHSLAHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(StdHSLAToExpandedPixel(Self)) end;\n\nfunction TStdHSLAHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(StdHSLAToExpandedPixel(Self)) end;\n\nprocedure TStdHSLAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToStdHSLA(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSLAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToStdHSLA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSLAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToStdHSLA(AValue) end;\n\nprocedure TStdHSLAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToStdHSLA(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSLAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdHSLA(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdHSLAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToStdHSLA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSLAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdHSLA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdHSLAHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToStdHSLA(LabAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSLAHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToStdHSLA(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TStdHSVAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TStdHSVAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TStdHSVAColorspace end;\n\n{$ENDIF}\nfunction TStdHSVAHelper.ToColor: TColor;\nbegin Result := StdHSVAToColor(Self) end;\n\nfunction TStdHSVAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := StdHSVAToBGRAPixel(Self) end;\n\nfunction TStdHSVAHelper.ToFPColor: TFPColor;\nbegin Result := StdHSVAToFPColor(Self) end;\n\nfunction TStdHSVAHelper.ToByteMask: TByteMask;\nbegin Result := StdHSVAToByteMask(Self) end;\n\nfunction TStdHSVAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := StdHSVAToExpandedPixel(Self) end;\n\nfunction TStdHSVAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdHSVAToExpandedPixel(Self)) end;\n\nprocedure TStdHSVAHelper.FromColor(AValue: TColor);\nbegin Self := ColorToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToStdHSVA(HSLAToExpanded(AValue)) end;\n\nprocedure TStdHSVAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToStdHSVA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TStdHSVAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := StdHSVAToStdRGBA(Self) end;\n\nfunction TStdHSVAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := StdHSVAToStdHSLA(Self) end;\n\nfunction TStdHSVAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := StdHSVAToStdCMYK(Self) end;\n\nfunction TStdHSVAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := StdHSVAToYCbCr601(Self) end;\n\nfunction TStdHSVAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := StdHSVAToYCbCr601JPEG(Self) end;\n\nfunction TStdHSVAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := StdHSVAToYCbCr709(Self) end;\n\nfunction TStdHSVAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := StdHSVAToYCbCr709JPEG(Self) end;\n\nfunction TStdHSVAHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdHSVAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdHSVAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdHSVAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdHSVAHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(StdHSVAToExpandedPixel(Self)) end;\n\nfunction TStdHSVAHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(StdHSVAToExpandedPixel(Self)) end;\n\nprocedure TStdHSVAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToStdHSVA(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSVAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToStdHSVA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSVAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToStdHSVA(AValue) end;\n\nprocedure TStdHSVAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToStdHSVA(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSVAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdHSVA(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdHSVAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToStdHSVA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSVAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdHSVA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdHSVAHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToStdHSVA(LabAToExpandedPixel(AValue)) end;\n\nprocedure TStdHSVAHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToStdHSVA(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TStdCMYKHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TStdCMYKHelper.Colorspace: TColorspaceAny; static;\nbegin result := TStdCMYKColorspace end;\n\n{$ENDIF}\nfunction TStdCMYKHelper.ToColor: TColor;\nbegin Result := StdCMYKToColor(Self) end;\n\nfunction TStdCMYKHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := StdCMYKToBGRAPixel(Self) end;\n\nfunction TStdCMYKHelper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := StdCMYKToBGRAPixel(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToFPColor: TFPColor;overload;\nbegin Result := StdCMYKToFPColor(Self) end;\n\nfunction TStdCMYKHelper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := StdCMYKToFPColor(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToByteMask: TByteMask;\nbegin Result := StdCMYKToByteMask(Self) end;\n\nfunction TStdCMYKHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := StdCMYKToExpandedPixel(Self) end;\n\nfunction TStdCMYKHelper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := StdCMYKToExpandedPixel(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TStdCMYKHelper.FromColor(AValue: TColor);\nbegin Self := ColorToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToStdCMYK(HSLAToExpanded(AValue)) end;\n\nprocedure TStdCMYKHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToStdCMYK(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TStdCMYKHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := StdCMYKToStdRGBA(Self) end;\n\nfunction TStdCMYKHelper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := StdCMYKToStdRGBA(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := StdCMYKToStdHSLA(Self) end;\n\nfunction TStdCMYKHelper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := StdCMYKToStdHSLA(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := StdCMYKToStdHSVA(Self) end;\n\nfunction TStdCMYKHelper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := StdCMYKToStdHSVA(Self, AAlpha) end;\n\nfunction TStdCMYKHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToYCbCr601: TYCbCr601;\nbegin Result := StdCMYKToYCbCr601(Self) end;\n\nfunction TStdCMYKHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := StdCMYKToYCbCr601JPEG(Self) end;\n\nfunction TStdCMYKHelper.ToYCbCr709: TYCbCr709;\nbegin Result := StdCMYKToYCbCr709(Self) end;\n\nfunction TStdCMYKHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := StdCMYKToYCbCr709JPEG(Self) end;\n\nfunction TStdCMYKHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdCMYKHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TStdCMYKHelper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TStdCMYKHelper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(StdCMYKToExpandedPixel(Self)) end;\n\nfunction TStdCMYKHelper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(StdCMYKToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TStdCMYKHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToStdCMYK(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdCMYKHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToStdCMYK(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TStdCMYKHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToStdCMYK(AValue) end;\n\nprocedure TStdCMYKHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToStdCMYK(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdCMYKHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdCMYK(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdCMYKHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToStdCMYK(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TStdCMYKHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToStdCMYK(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TStdCMYKHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToStdCMYK(LabAToExpandedPixel(AValue)) end;\n\nprocedure TStdCMYKHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToStdCMYK(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TLinearRGBAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TLinearRGBAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TLinearRGBAColorspace end;\n\n{$ENDIF}\nfunction TLinearRGBAHelper.ToColor: TColor;\nbegin Result := ExpandedPixelToColor(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := GammaCompression(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToFPColor: TFPColor;\nbegin Result := ExpandedToFPColor(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := LinearRGBAToExpandedPixel(Self) end;\n\nfunction TLinearRGBAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(LinearRGBAToExpandedPixel(Self)) end;\n\nprocedure TLinearRGBAHelper.FromColor(AValue: TColor);\nbegin Self := ExpandedPixelToLinearRGBA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := ExpandedPixelToLinearRGBA(GammaExpansion(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := ExpandedPixelToLinearRGBA(FPColorToExpanded(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedPixelToLinearRGBA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToLinearRGBA(AValue) end;\n\nprocedure TLinearRGBAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToLinearRGBA(HSLAToExpanded(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToLinearRGBA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TLinearRGBAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := LinearRGBAToAdobeRGBA(Self) end;\n\nfunction TLinearRGBAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToXYZA: TXYZA;overload;\nbegin Result := LinearRGBAToXYZA(Self) end;\n\nfunction TLinearRGBAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := LinearRGBAToXYZA(Self,AReferenceWhite) end;\n\nfunction TLinearRGBAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(LinearRGBAToExpandedPixel(Self)) end;\n\nfunction TLinearRGBAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(LinearRGBAToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TLinearRGBAHelper.ToLabA: TLabA;\nbegin Result := LinearRGBAToLabA(Self) end;\n\nfunction TLinearRGBAHelper.ToLChA: TLChA;\nbegin Result := LinearRGBAToLChA(Self) end;\n\nprocedure TLinearRGBAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedPixelToLinearRGBA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := AdobeRGBAToLinearRGBA(AValue) end;\n\nprocedure TLinearRGBAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedPixelToLinearRGBA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedPixelToLinearRGBA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedPixelToLinearRGBA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedPixelToLinearRGBA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedPixelToLinearRGBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedPixelToLinearRGBA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedPixelToLinearRGBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := XYZAToLinearRGBA(AValue) end;\n\nprocedure TLinearRGBAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := XYZAToLinearRGBA(AValue,AReferenceWhite) end;\n\nprocedure TLinearRGBAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToLinearRGBA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TLinearRGBAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToLinearRGBA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TLinearRGBAHelper.FromLabA(AValue: TLabA);\nbegin Self := LabAToLinearRGBA(AValue) end;\n\nprocedure TLinearRGBAHelper.FromLChA(AValue: TLChA);\nbegin Self := LChAToLinearRGBA(AValue) end;\n\n{$ENDIF}\n{ THSLAPixelHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function THSLAPixelHelper.Colorspace: TColorspaceAny; static;\nbegin result := THSLAPixelColorspace end;\n\n{$ENDIF}\nfunction THSLAPixelHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(HSLAToExpanded(Self)) end;\n\nprocedure THSLAPixelHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedToHSLA(ByteMaskToExpandedPixel(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction THSLAPixelHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(HSLAToExpanded(Self),AReferenceWhite) end;\n\nfunction THSLAPixelHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(HSLAToExpanded(Self),AReferenceWhite) end;\n\nfunction THSLAPixelHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(HSLAToExpanded(Self)) end;\n\nfunction THSLAPixelHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(HSLAToExpanded(Self)) end;\n\nprocedure THSLAPixelHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedToHSLA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedToHSLA(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedToHSLA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedToHSLA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedToHSLA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedToHSLA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedToHSLA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedToHSLA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedToHSLA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedToHSLA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedToHSLA(XYZAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToHSLA(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure THSLAPixelHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedToHSLA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToHSLA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure THSLAPixelHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedToHSLA(LabAToExpandedPixel(AValue)) end;\n\nprocedure THSLAPixelHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedToHSLA(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TGSBAPixelHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TGSBAPixelHelper.Colorspace: TColorspaceAny; static;\nbegin result := TGSBAPixelColorspace end;\n\n{$ENDIF}\nfunction TGSBAPixelHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(GSBAToExpanded(Self)) end;\n\nprocedure TGSBAPixelHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedToGSBA(ByteMaskToExpandedPixel(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TGSBAPixelHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(GSBAToExpanded(Self),AReferenceWhite) end;\n\nfunction TGSBAPixelHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(GSBAToExpanded(Self),AReferenceWhite) end;\n\nfunction TGSBAPixelHelper.ToLabA: TLabA;\nbegin Result := ExpandedPixelToLabA(GSBAToExpanded(Self)) end;\n\nfunction TGSBAPixelHelper.ToLChA: TLChA;\nbegin Result := ExpandedPixelToLChA(GSBAToExpanded(Self)) end;\n\nprocedure TGSBAPixelHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedToGSBA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedToGSBA(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedToGSBA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedToGSBA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedToGSBA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedToGSBA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedToGSBA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedToGSBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedToGSBA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedToGSBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedToGSBA(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToGSBA(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TGSBAPixelHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedToGSBA(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedToGSBA(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TGSBAPixelHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedToGSBA(LabAToExpandedPixel(AValue)) end;\n\nprocedure TGSBAPixelHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedToGSBA(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TYCbCr601Helper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TYCbCr601Helper.Colorspace: TColorspaceAny; static;\nbegin result := TYCbCr601Colorspace end;\n\n{$ENDIF}\nfunction TYCbCr601Helper.ToColor: TColor;\nbegin Result := YCbCr601ToColor(Self) end;\n\nfunction TYCbCr601Helper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := YCbCr601ToBGRAPixel(Self) end;\n\nfunction TYCbCr601Helper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := YCbCr601ToBGRAPixel(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToFPColor: TFPColor;overload;\nbegin Result := YCbCr601ToFPColor(Self) end;\n\nfunction TYCbCr601Helper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := YCbCr601ToFPColor(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToByteMask: TByteMask;\nbegin Result := YCbCr601ToByteMask(Self) end;\n\nfunction TYCbCr601Helper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := YCbCr601ToExpandedPixel(Self) end;\n\nfunction TYCbCr601Helper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := YCbCr601ToExpandedPixel(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr601Helper.FromColor(AValue: TColor);\nbegin Self := ColorToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToYCbCr601(HSLAToExpanded(AValue)) end;\n\nprocedure TYCbCr601Helper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToYCbCr601(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TYCbCr601Helper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := YCbCr601ToStdRGBA(Self) end;\n\nfunction TYCbCr601Helper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := YCbCr601ToStdRGBA(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := YCbCr601ToStdHSLA(Self) end;\n\nfunction TYCbCr601Helper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := YCbCr601ToStdHSLA(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := YCbCr601ToStdHSVA(Self) end;\n\nfunction TYCbCr601Helper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := YCbCr601ToStdHSVA(Self, AAlpha) end;\n\nfunction TYCbCr601Helper.ToStdCMYK: TStdCMYK;\nbegin Result := YCbCr601ToStdCMYK(Self) end;\n\nfunction TYCbCr601Helper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := YCbCr601ToYCbCr601JPEG(Self) end;\n\nfunction TYCbCr601Helper.ToYCbCr709: TYCbCr709;\nbegin Result := YCbCr601ToYCbCr709(Self) end;\n\nfunction TYCbCr601Helper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := YCbCr601ToYCbCr709JPEG(Self) end;\n\nfunction TYCbCr601Helper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr601Helper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr601Helper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601Helper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(YCbCr601ToExpandedPixel(Self)) end;\n\nfunction TYCbCr601Helper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(YCbCr601ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr601Helper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToYCbCr601(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601Helper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToYCbCr601(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601Helper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToYCbCr601(AValue) end;\n\nprocedure TYCbCr601Helper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr601(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601Helper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr601(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr601Helper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr601(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601Helper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr601(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr601Helper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToYCbCr601(LabAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601Helper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToYCbCr601(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TYCbCr601JPEGHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TYCbCr601JPEGHelper.Colorspace: TColorspaceAny; static;\nbegin result := TYCbCr601JPEGColorspace end;\n\n{$ENDIF}\nfunction TYCbCr601JPEGHelper.ToColor: TColor;\nbegin Result := YCbCr601JPEGToColor(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := YCbCr601JPEGToBGRAPixel(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := YCbCr601JPEGToBGRAPixel(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToFPColor: TFPColor;overload;\nbegin Result := YCbCr601JPEGToFPColor(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := YCbCr601JPEGToFPColor(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToByteMask: TByteMask;\nbegin Result := YCbCr601JPEGToByteMask(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := YCbCr601JPEGToExpandedPixel(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := YCbCr601JPEGToExpandedPixel(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr601JPEGHelper.FromColor(AValue: TColor);\nbegin Self := ColorToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToYCbCr601JPEG(HSLAToExpanded(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToYCbCr601JPEG(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TYCbCr601JPEGHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := YCbCr601JPEGToStdRGBA(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := YCbCr601JPEGToStdRGBA(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := YCbCr601JPEGToStdHSLA(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := YCbCr601JPEGToStdHSLA(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := YCbCr601JPEGToStdHSVA(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := YCbCr601JPEGToStdHSVA(Self, AAlpha) end;\n\nfunction TYCbCr601JPEGHelper.ToStdCMYK: TStdCMYK;\nbegin Result := YCbCr601JPEGToStdCMYK(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToYCbCr601: TYCbCr601;\nbegin Result := YCbCr601JPEGToYCbCr601(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToYCbCr709: TYCbCr709;\nbegin Result := YCbCr601JPEGToYCbCr709(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := YCbCr601JPEGToYCbCr709JPEG(Self) end;\n\nfunction TYCbCr601JPEGHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr601JPEGHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr601JPEGHelper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr601JPEGHelper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(YCbCr601JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr601JPEGHelper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(YCbCr601JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr601JPEGHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToYCbCr601JPEG(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToYCbCr601JPEG(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToYCbCr601JPEG(AValue) end;\n\nprocedure TYCbCr601JPEGHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr601JPEG(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr601JPEG(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr601JPEGHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr601JPEG(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr601JPEG(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr601JPEGHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToYCbCr601JPEG(LabAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr601JPEGHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToYCbCr601JPEG(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TYCbCr709Helper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TYCbCr709Helper.Colorspace: TColorspaceAny; static;\nbegin result := TYCbCr709Colorspace end;\n\n{$ENDIF}\nfunction TYCbCr709Helper.ToColor: TColor;\nbegin Result := YCbCr709ToColor(Self) end;\n\nfunction TYCbCr709Helper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := YCbCr709ToBGRAPixel(Self) end;\n\nfunction TYCbCr709Helper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := YCbCr709ToBGRAPixel(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToFPColor: TFPColor;overload;\nbegin Result := YCbCr709ToFPColor(Self) end;\n\nfunction TYCbCr709Helper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := YCbCr709ToFPColor(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToByteMask: TByteMask;\nbegin Result := YCbCr709ToByteMask(Self) end;\n\nfunction TYCbCr709Helper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := YCbCr709ToExpandedPixel(Self) end;\n\nfunction TYCbCr709Helper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := YCbCr709ToExpandedPixel(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr709Helper.FromColor(AValue: TColor);\nbegin Self := ColorToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToYCbCr709(HSLAToExpanded(AValue)) end;\n\nprocedure TYCbCr709Helper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToYCbCr709(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TYCbCr709Helper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := YCbCr709ToStdRGBA(Self) end;\n\nfunction TYCbCr709Helper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := YCbCr709ToStdRGBA(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := YCbCr709ToStdHSLA(Self) end;\n\nfunction TYCbCr709Helper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := YCbCr709ToStdHSLA(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := YCbCr709ToStdHSVA(Self) end;\n\nfunction TYCbCr709Helper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := YCbCr709ToStdHSVA(Self, AAlpha) end;\n\nfunction TYCbCr709Helper.ToStdCMYK: TStdCMYK;\nbegin Result := YCbCr709ToStdCMYK(Self) end;\n\nfunction TYCbCr709Helper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToYCbCr601: TYCbCr601;\nbegin Result := YCbCr709ToYCbCr601(Self) end;\n\nfunction TYCbCr709Helper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := YCbCr709ToYCbCr601JPEG(Self) end;\n\nfunction TYCbCr709Helper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := YCbCr709ToYCbCr709JPEG(Self) end;\n\nfunction TYCbCr709Helper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr709Helper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr709Helper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709Helper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(YCbCr709ToExpandedPixel(Self)) end;\n\nfunction TYCbCr709Helper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(YCbCr709ToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr709Helper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToYCbCr709(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709Helper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToYCbCr709(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709Helper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := YCbCr709JPEGToYCbCr709(AValue) end;\n\nprocedure TYCbCr709Helper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr709(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709Helper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr709(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr709Helper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr709(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709Helper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr709(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr709Helper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToYCbCr709(LabAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709Helper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToYCbCr709(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TYCbCr709JPEGHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TYCbCr709JPEGHelper.Colorspace: TColorspaceAny; static;\nbegin result := TYCbCr709JPEGColorspace end;\n\n{$ENDIF}\nfunction TYCbCr709JPEGHelper.ToColor: TColor;\nbegin Result := YCbCr709JPEGToColor(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := YCbCr709JPEGToBGRAPixel(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToBGRAPixel(AAlpha: byte): TBGRAPixel;overload;\nbegin result := YCbCr709JPEGToBGRAPixel(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToFPColor: TFPColor;overload;\nbegin Result := YCbCr709JPEGToFPColor(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToFPColor(AAlpha: word): TFPColor;overload;\nbegin result := YCbCr709JPEGToFPColor(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToByteMask: TByteMask;\nbegin Result := YCbCr709JPEGToByteMask(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := YCbCr709JPEGToExpandedPixel(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToExpandedPixel(AAlpha: word): TExpandedPixel;overload;\nbegin result := YCbCr709JPEGToExpandedPixel(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToHSLAPixel(AAlpha: word): THSLAPixel;overload;\nbegin\n  Result := ExpandedToHSLA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToGSBAPixel(AAlpha: word): TGSBAPixel;overload;\nbegin\n  Result := ExpandedToGSBA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr709JPEGHelper.FromColor(AValue: TColor);\nbegin Self := ColorToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := BGRAPixelToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromFPColor(AValue: TFPColor);\nbegin Self := FPColorToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ByteMaskToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToYCbCr709JPEG(HSLAToExpanded(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToYCbCr709JPEG(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TYCbCr709JPEGHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := YCbCr709JPEGToStdRGBA(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToStdRGBA(AAlpha: single): TStdRGBA;overload;\nbegin result := YCbCr709JPEGToStdRGBA(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToAdobeRGBA(AAlpha: byte): TAdobeRGBA;overload;\nbegin\n  Result := ExpandedPixelToAdobeRGBA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := YCbCr709JPEGToStdHSLA(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToStdHSLA(AAlpha: single): TStdHSLA;overload;\nbegin result := YCbCr709JPEGToStdHSLA(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := YCbCr709JPEGToStdHSVA(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToStdHSVA(AAlpha: single): TStdHSVA;overload;\nbegin result := YCbCr709JPEGToStdHSVA(Self, AAlpha) end;\n\nfunction TYCbCr709JPEGHelper.ToStdCMYK: TStdCMYK;\nbegin Result := YCbCr709JPEGToStdCMYK(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToLinearRGBA(AAlpha: single): TLinearRGBA;overload;\nbegin\n  Result := ExpandedPixelToLinearRGBA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToYCbCr601: TYCbCr601;\nbegin Result := YCbCr709JPEGToYCbCr601(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := YCbCr709JPEGToYCbCr601JPEG(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToYCbCr709: TYCbCr709;\nbegin Result := YCbCr709JPEGToYCbCr709(Self) end;\n\nfunction TYCbCr709JPEGHelper.ToXYZA: TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToXYZA(AAlpha: single): TXYZA;overload;\nbegin\n  Result := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr709JPEGHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToWordXYZA(AAlpha: word): TWordXYZA;overload;\nbegin\n  Result := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(Self),AReferenceWhite) end;\n\nfunction TYCbCr709JPEGHelper.ToLabA: TLabA;overload;\nbegin Result := ExpandedPixelToLabA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToLabA(AAlpha: single): TLabA;overload;\nbegin\n  Result := ExpandedPixelToLabA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nfunction TYCbCr709JPEGHelper.ToLChA: TLChA;overload;\nbegin Result := ExpandedPixelToLChA(YCbCr709JPEGToExpandedPixel(Self)) end;\n\nfunction TYCbCr709JPEGHelper.ToLChA(AAlpha: single): TLChA;overload;\nbegin\n  Result := ExpandedPixelToLChA(YCbCr709JPEGToExpandedPixel(Self));\n  if result.alpha <> 0 then result.alpha := AAlpha;\nend;\n\nprocedure TYCbCr709JPEGHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := StdRGBAToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := ExpandedPixelToYCbCr709JPEG(AdobeRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := StdHSLAToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := StdHSVAToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := StdCMYKToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := ExpandedPixelToYCbCr709JPEG(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := YCbCr601ToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := YCbCr601JPEGToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := YCbCr709ToYCbCr709JPEG(AValue) end;\n\nprocedure TYCbCr709JPEGHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr709JPEG(XYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr709JPEG(XYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr709JPEGHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := ExpandedPixelToYCbCr709JPEG(WordXYZAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToYCbCr709JPEG(WordXYZAToExpandedPixel(AValue,AReferenceWhite)) end;\n\nprocedure TYCbCr709JPEGHelper.FromLabA(AValue: TLabA);\nbegin Self := ExpandedPixelToYCbCr709JPEG(LabAToExpandedPixel(AValue)) end;\n\nprocedure TYCbCr709JPEGHelper.FromLChA(AValue: TLChA);\nbegin Self := ExpandedPixelToYCbCr709JPEG(LChAToExpandedPixel(AValue)) end;\n\n{$ENDIF}\n{ TXYZAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TXYZAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TXYZAColorspace end;\n\n{$ENDIF}\nprocedure TXYZAHelper.ChromaticAdapt(const AFrom, ATo: TXYZReferenceWhite);\nbegin ChromaticAdaptXYZ(self.X,self.Y,self.Z, AFrom,ATo) end;\n\nfunction TXYZAHelper.ToColor: TColor;overload;\nbegin Result := ExpandedPixelToColor(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToColor(const AReferenceWhite: TXYZReferenceWhite): TColor;overload;\nbegin Result := ExpandedPixelToColor(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := GammaCompression(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToBGRAPixel(const AReferenceWhite: TXYZReferenceWhite): TBGRAPixel;overload;\nbegin Result := GammaCompression(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToFPColor: TFPColor;overload;\nbegin Result := ExpandedToFPColor(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToFPColor(const AReferenceWhite: TXYZReferenceWhite): TFPColor;overload;\nbegin Result := ExpandedToFPColor(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToByteMask: TByteMask;overload;\nbegin Result := ExpandedPixelToByteMask(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToByteMask(const AReferenceWhite: TXYZReferenceWhite): TByteMask;overload;\nbegin Result := ExpandedPixelToByteMask(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := XYZAToExpandedPixel(Self) end;\n\nfunction TXYZAHelper.ToExpandedPixel(const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel;overload;\nbegin Result := XYZAToExpandedPixel(Self,AReferenceWhite) end;\n\nfunction TXYZAHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToHSLAPixel(const AReferenceWhite: TXYZReferenceWhite): THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToGSBAPixel(const AReferenceWhite: TXYZReferenceWhite): TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nprocedure TXYZAHelper.FromColor(AValue: TColor); overload;\nbegin Self := ExpandedPixelToXYZA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromColor(AValue: TColor; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(ColorToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromBGRAPixel(AValue: TBGRAPixel); overload;\nbegin Self := ExpandedPixelToXYZA(GammaExpansion(AValue)) end;\n\nprocedure TXYZAHelper.FromBGRAPixel(AValue: TBGRAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(GammaExpansion(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromFPColor(AValue: TFPColor); overload;\nbegin Self := ExpandedPixelToXYZA(FPColorToExpanded(AValue)) end;\n\nprocedure TXYZAHelper.FromFPColor(AValue: TFPColor; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(FPColorToExpanded(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromByteMask(AValue: TByteMask); overload;\nbegin Self := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromByteMask(AValue: TByteMask; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromExpandedPixel(AValue: TExpandedPixel); overload;\nbegin Self := ExpandedPixelToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromExpandedPixel(AValue: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(AValue,AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromHSLAPixel(AValue: THSLAPixel); overload;\nbegin Self := ExpandedPixelToXYZA(HSLAToExpanded(AValue)) end;\n\nprocedure TXYZAHelper.FromHSLAPixel(AValue: THSLAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(HSLAToExpanded(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromGSBAPixel(AValue: TGSBAPixel); overload;\nbegin Self := ExpandedPixelToXYZA(GSBAToExpanded(AValue)) end;\n\nprocedure TXYZAHelper.FromGSBAPixel(AValue: TGSBAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(GSBAToExpanded(AValue),AReferenceWhite) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TXYZAHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := ExpandedPixelToStdRGBA(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToStdRGBA(const AReferenceWhite: TXYZReferenceWhite): TStdRGBA;overload;\nbegin Result := ExpandedPixelToStdRGBA(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := XYZAToAdobeRGBA(Self) end;\n\nfunction TXYZAHelper.ToAdobeRGBA(const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;overload;\nbegin Result := XYZAToAdobeRGBA(Self,AReferenceWhite) end;\n\nfunction TXYZAHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := ExpandedPixelToStdHSLA(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToStdHSLA(const AReferenceWhite: TXYZReferenceWhite): TStdHSLA;overload;\nbegin Result := ExpandedPixelToStdHSLA(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := ExpandedPixelToStdHSVA(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToStdHSVA(const AReferenceWhite: TXYZReferenceWhite): TStdHSVA;overload;\nbegin Result := ExpandedPixelToStdHSVA(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToStdCMYK: TStdCMYK;overload;\nbegin Result := ExpandedPixelToStdCMYK(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToStdCMYK(const AReferenceWhite: TXYZReferenceWhite): TStdCMYK;overload;\nbegin Result := ExpandedPixelToStdCMYK(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := XYZAToLinearRGBA(Self) end;\n\nfunction TXYZAHelper.ToLinearRGBA(const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA;overload;\nbegin Result := XYZAToLinearRGBA(Self,AReferenceWhite) end;\n\nfunction TXYZAHelper.ToYCbCr601: TYCbCr601;overload;\nbegin Result := ExpandedPixelToYCbCr601(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToYCbCr601(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601;overload;\nbegin Result := ExpandedPixelToYCbCr601(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr601JPEG(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToYCbCr601JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr601JPEG(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToYCbCr709: TYCbCr709;overload;\nbegin Result := ExpandedPixelToYCbCr709(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToYCbCr709(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709;overload;\nbegin Result := ExpandedPixelToYCbCr709(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr709JPEG(XYZAToExpandedPixel(Self)) end;\n\nfunction TXYZAHelper.ToYCbCr709JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr709JPEG(XYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TXYZAHelper.ToWordXYZA: TWordXYZA;\nbegin Result := XYZAToWordXYZA(Self) end;\n\nfunction TXYZAHelper.ToLabA: TLabA;overload;\nbegin Result := XYZAToLabA(Self) end;\n\nfunction TXYZAHelper.ToLabA(const AReferenceWhite: TXYZReferenceWhite): TLabA;overload;\nbegin Result := XYZAToLabA(Self,AReferenceWhite) end;\n\nfunction TXYZAHelper.ToLChA: TLChA;overload;\nbegin Result := XYZAToLChA(Self) end;\n\nfunction TXYZAHelper.ToLChA(const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\nbegin Result := XYZAToLChA(Self,AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromStdRGBA(AValue: TStdRGBA); overload;\nbegin Self := ExpandedPixelToXYZA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromStdRGBA(AValue: TStdRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(StdRGBAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromAdobeRGBA(AValue: TAdobeRGBA); overload;\nbegin Self := AdobeRGBAToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromAdobeRGBA(AValue: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := AdobeRGBAToXYZA(AValue,AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromStdHSLA(AValue: TStdHSLA); overload;\nbegin Self := ExpandedPixelToXYZA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromStdHSLA(AValue: TStdHSLA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(StdHSLAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromStdHSVA(AValue: TStdHSVA); overload;\nbegin Self := ExpandedPixelToXYZA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromStdHSVA(AValue: TStdHSVA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(StdHSVAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromStdCMYK(AValue: TStdCMYK); overload;\nbegin Self := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromStdCMYK(AValue: TStdCMYK; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromLinearRGBA(AValue: TLinearRGBA); overload;\nbegin Self := LinearRGBAToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromLinearRGBA(AValue: TLinearRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := LinearRGBAToXYZA(AValue,AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromYCbCr601(AValue: TYCbCr601); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromYCbCr601(AValue: TYCbCr601; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromYCbCr709(AValue: TYCbCr709); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromYCbCr709(AValue: TYCbCr709; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TXYZAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromWordXYZA(AValue: TWordXYZA);\nbegin Self := WordXYZAToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromLabA(AValue: TLabA); overload;\nbegin Self := LabAToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromLabA(AValue: TLabA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := LabAToXYZA(AValue,AReferenceWhite) end;\n\nprocedure TXYZAHelper.FromLChA(AValue: TLChA); overload;\nbegin Self := LChAToXYZA(AValue) end;\n\nprocedure TXYZAHelper.FromLChA(AValue: TLChA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := LChAToXYZA(AValue,AReferenceWhite) end;\n\n{$ENDIF}\n{ TWordXYZAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TWordXYZAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TWordXYZAColorspace end;\n\n{$ENDIF}\nprocedure TWordXYZAHelper.ChromaticAdapt(const AFrom, ATo: TXYZReferenceWhite);\nbegin ChromaticAdaptWordXYZ(self.X,self.Y,self.Z, AFrom,ATo) end;\n\nfunction TWordXYZAHelper.ToColor: TColor;overload;\nbegin Result := ExpandedPixelToColor(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToColor(const AReferenceWhite: TXYZReferenceWhite): TColor;overload;\nbegin Result := ExpandedPixelToColor(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToBGRAPixel: TBGRAPixel;overload;\nbegin Result := GammaCompression(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToBGRAPixel(const AReferenceWhite: TXYZReferenceWhite): TBGRAPixel;overload;\nbegin Result := GammaCompression(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToFPColor: TFPColor;overload;\nbegin Result := ExpandedToFPColor(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToFPColor(const AReferenceWhite: TXYZReferenceWhite): TFPColor;overload;\nbegin Result := ExpandedToFPColor(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToByteMask: TByteMask;overload;\nbegin Result := ExpandedPixelToByteMask(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToByteMask(const AReferenceWhite: TXYZReferenceWhite): TByteMask;overload;\nbegin Result := ExpandedPixelToByteMask(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToExpandedPixel: TExpandedPixel;overload;\nbegin Result := WordXYZAToExpandedPixel(Self) end;\n\nfunction TWordXYZAHelper.ToExpandedPixel(const AReferenceWhite: TXYZReferenceWhite): TExpandedPixel;overload;\nbegin Result := WordXYZAToExpandedPixel(Self,AReferenceWhite) end;\n\nfunction TWordXYZAHelper.ToHSLAPixel: THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToHSLAPixel(const AReferenceWhite: TXYZReferenceWhite): THSLAPixel;overload;\nbegin Result := ExpandedToHSLA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToGSBAPixel: TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToGSBAPixel(const AReferenceWhite: TXYZReferenceWhite): TGSBAPixel;overload;\nbegin Result := ExpandedToGSBA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nprocedure TWordXYZAHelper.FromColor(AValue: TColor); overload;\nbegin Self := ExpandedPixelToWordXYZA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromColor(AValue: TColor; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(ColorToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromBGRAPixel(AValue: TBGRAPixel); overload;\nbegin Self := ExpandedPixelToWordXYZA(GammaExpansion(AValue)) end;\n\nprocedure TWordXYZAHelper.FromBGRAPixel(AValue: TBGRAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(GammaExpansion(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromFPColor(AValue: TFPColor); overload;\nbegin Self := ExpandedPixelToWordXYZA(FPColorToExpanded(AValue)) end;\n\nprocedure TWordXYZAHelper.FromFPColor(AValue: TFPColor; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(FPColorToExpanded(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromByteMask(AValue: TByteMask); overload;\nbegin Self := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromByteMask(AValue: TByteMask; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromExpandedPixel(AValue: TExpandedPixel); overload;\nbegin Self := ExpandedPixelToWordXYZA(AValue) end;\n\nprocedure TWordXYZAHelper.FromExpandedPixel(AValue: TExpandedPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(AValue,AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromHSLAPixel(AValue: THSLAPixel); overload;\nbegin Self := ExpandedPixelToWordXYZA(HSLAToExpanded(AValue)) end;\n\nprocedure TWordXYZAHelper.FromHSLAPixel(AValue: THSLAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(HSLAToExpanded(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromGSBAPixel(AValue: TGSBAPixel); overload;\nbegin Self := ExpandedPixelToWordXYZA(GSBAToExpanded(AValue)) end;\n\nprocedure TWordXYZAHelper.FromGSBAPixel(AValue: TGSBAPixel; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(GSBAToExpanded(AValue),AReferenceWhite) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TWordXYZAHelper.ToStdRGBA: TStdRGBA;overload;\nbegin Result := ExpandedPixelToStdRGBA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToStdRGBA(const AReferenceWhite: TXYZReferenceWhite): TStdRGBA;overload;\nbegin Result := ExpandedPixelToStdRGBA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToAdobeRGBA: TAdobeRGBA;overload;\nbegin Result := WordXYZAToAdobeRGBA(Self) end;\n\nfunction TWordXYZAHelper.ToAdobeRGBA(const AReferenceWhite: TXYZReferenceWhite): TAdobeRGBA;overload;\nbegin Result := WordXYZAToAdobeRGBA(Self,AReferenceWhite) end;\n\nfunction TWordXYZAHelper.ToStdHSLA: TStdHSLA;overload;\nbegin Result := ExpandedPixelToStdHSLA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToStdHSLA(const AReferenceWhite: TXYZReferenceWhite): TStdHSLA;overload;\nbegin Result := ExpandedPixelToStdHSLA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToStdHSVA: TStdHSVA;overload;\nbegin Result := ExpandedPixelToStdHSVA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToStdHSVA(const AReferenceWhite: TXYZReferenceWhite): TStdHSVA;overload;\nbegin Result := ExpandedPixelToStdHSVA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToStdCMYK: TStdCMYK;overload;\nbegin Result := ExpandedPixelToStdCMYK(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToStdCMYK(const AReferenceWhite: TXYZReferenceWhite): TStdCMYK;overload;\nbegin Result := ExpandedPixelToStdCMYK(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToLinearRGBA: TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToLinearRGBA(const AReferenceWhite: TXYZReferenceWhite): TLinearRGBA;overload;\nbegin Result := ExpandedPixelToLinearRGBA(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToYCbCr601: TYCbCr601;overload;\nbegin Result := ExpandedPixelToYCbCr601(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToYCbCr601(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601;overload;\nbegin Result := ExpandedPixelToYCbCr601(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr601JPEG(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToYCbCr601JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr601JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr601JPEG(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToYCbCr709: TYCbCr709;overload;\nbegin Result := ExpandedPixelToYCbCr709(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToYCbCr709(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709;overload;\nbegin Result := ExpandedPixelToYCbCr709(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr709JPEG(WordXYZAToExpandedPixel(Self)) end;\n\nfunction TWordXYZAHelper.ToYCbCr709JPEG(const AReferenceWhite: TXYZReferenceWhite): TYCbCr709JPEG;overload;\nbegin Result := ExpandedPixelToYCbCr709JPEG(WordXYZAToExpandedPixel(Self,AReferenceWhite)) end;\n\nfunction TWordXYZAHelper.ToXYZA: TXYZA;\nbegin Result := WordXYZAToXYZA(Self) end;\n\nfunction TWordXYZAHelper.ToLabA: TLabA;overload;\nbegin Result := WordXYZAToLabA(Self) end;\n\nfunction TWordXYZAHelper.ToLabA(const AReferenceWhite: TXYZReferenceWhite): TLabA;overload;\nbegin Result := WordXYZAToLabA(Self,AReferenceWhite) end;\n\nfunction TWordXYZAHelper.ToLChA: TLChA;overload;\nbegin Result := WordXYZAToLChA(Self) end;\n\nfunction TWordXYZAHelper.ToLChA(const AReferenceWhite: TXYZReferenceWhite): TLChA;overload;\nbegin Result := WordXYZAToLChA(Self,AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromStdRGBA(AValue: TStdRGBA); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromStdRGBA(AValue: TStdRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdRGBAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromAdobeRGBA(AValue: TAdobeRGBA); overload;\nbegin Self := AdobeRGBAToWordXYZA(AValue) end;\n\nprocedure TWordXYZAHelper.FromAdobeRGBA(AValue: TAdobeRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := AdobeRGBAToWordXYZA(AValue,AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromStdHSLA(AValue: TStdHSLA); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromStdHSLA(AValue: TStdHSLA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdHSLAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromStdHSVA(AValue: TStdHSVA); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromStdHSVA(AValue: TStdHSVA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdHSVAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromStdCMYK(AValue: TStdCMYK); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromStdCMYK(AValue: TStdCMYK; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromLinearRGBA(AValue: TLinearRGBA); overload;\nbegin Self := ExpandedPixelToWordXYZA(LinearRGBAToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromLinearRGBA(AValue: TLinearRGBA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(LinearRGBAToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromYCbCr601(AValue: TYCbCr601); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromYCbCr601(AValue: TYCbCr601; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromYCbCr709(AValue: TYCbCr709); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromYCbCr709(AValue: TYCbCr709; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TWordXYZAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(AValue),AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromXYZA(AValue: TXYZA);\nbegin Self := XYZAToWordXYZA(AValue) end;\n\nprocedure TWordXYZAHelper.FromLabA(AValue: TLabA); overload;\nbegin Self := LabAToWordXYZA(AValue) end;\n\nprocedure TWordXYZAHelper.FromLabA(AValue: TLabA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := LabAToWordXYZA(AValue,AReferenceWhite) end;\n\nprocedure TWordXYZAHelper.FromLChA(AValue: TLChA); overload;\nbegin Self := LChAToWordXYZA(AValue) end;\n\nprocedure TWordXYZAHelper.FromLChA(AValue: TLChA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := LChAToWordXYZA(AValue,AReferenceWhite) end;\n\n{$ENDIF}\n{ TLabAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TLabAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TLabAColorspace end;\n\n{$ENDIF}\nfunction TLabAHelper.ToColor: TColor;\nbegin Result := ExpandedPixelToColor(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := GammaCompression(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToFPColor: TFPColor;\nbegin Result := ExpandedToFPColor(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := LabAToExpandedPixel(Self) end;\n\nfunction TLabAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(LabAToExpandedPixel(Self)) end;\n\nprocedure TLabAHelper.FromColor(AValue: TColor);\nbegin Self := ExpandedPixelToLabA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := ExpandedPixelToLabA(GammaExpansion(AValue)) end;\n\nprocedure TLabAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := ExpandedPixelToLabA(FPColorToExpanded(AValue)) end;\n\nprocedure TLabAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedPixelToLabA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToLabA(AValue) end;\n\nprocedure TLabAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToLabA(HSLAToExpanded(AValue)) end;\n\nprocedure TLabAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToLabA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TLabAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := LabAToAdobeRGBA(Self) end;\n\nfunction TLabAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := LabAToLinearRGBA(Self) end;\n\nfunction TLabAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LabAToExpandedPixel(Self)) end;\n\nfunction TLabAHelper.ToXYZA: TXYZA;overload;\nbegin Result := LabAToXYZA(Self) end;\n\nfunction TLabAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := LabAToXYZA(Self,AReferenceWhite) end;\n\nfunction TLabAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := LabAToWordXYZA(Self) end;\n\nfunction TLabAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := LabAToWordXYZA(Self,AReferenceWhite) end;\n\nfunction TLabAHelper.ToLChA: TLChA;\nbegin Result := LabAToLChA(Self) end;\n\nprocedure TLabAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedPixelToLabA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := AdobeRGBAToLabA(AValue) end;\n\nprocedure TLabAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedPixelToLabA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedPixelToLabA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedPixelToLabA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := LinearRGBAToLabA(AValue) end;\n\nprocedure TLabAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedPixelToLabA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedPixelToLabA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedPixelToLabA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedPixelToLabA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLabAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := XYZAToLabA(AValue) end;\n\nprocedure TLabAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := XYZAToLabA(AValue,AReferenceWhite) end;\n\nprocedure TLabAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := WordXYZAToLabA(AValue) end;\n\nprocedure TLabAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := WordXYZAToLabA(AValue,AReferenceWhite) end;\n\nprocedure TLabAHelper.FromLChA(AValue: TLChA);\nbegin Self := LChAToLabA(AValue) end;\n\n{$ENDIF}\n{ TLChAHelper }\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nclass function TLChAHelper.Colorspace: TColorspaceAny; static;\nbegin result := TLChAColorspace end;\n\n{$ENDIF}\nfunction TLChAHelper.ToColor: TColor;\nbegin Result := ExpandedPixelToColor(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToBGRAPixel: TBGRAPixel;\nbegin Result := GammaCompression(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToFPColor: TFPColor;\nbegin Result := ExpandedToFPColor(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToByteMask: TByteMask;\nbegin Result := ExpandedPixelToByteMask(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToExpandedPixel: TExpandedPixel;\nbegin Result := LChAToExpandedPixel(Self) end;\n\nfunction TLChAHelper.ToHSLAPixel: THSLAPixel;\nbegin Result := ExpandedToHSLA(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToGSBAPixel: TGSBAPixel;\nbegin Result := ExpandedToGSBA(LChAToExpandedPixel(Self)) end;\n\nprocedure TLChAHelper.FromColor(AValue: TColor);\nbegin Self := ExpandedPixelToLChA(ColorToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromBGRAPixel(AValue: TBGRAPixel);\nbegin Self := ExpandedPixelToLChA(GammaExpansion(AValue)) end;\n\nprocedure TLChAHelper.FromFPColor(AValue: TFPColor);\nbegin Self := ExpandedPixelToLChA(FPColorToExpanded(AValue)) end;\n\nprocedure TLChAHelper.FromByteMask(AValue: TByteMask);\nbegin Self := ExpandedPixelToLChA(ByteMaskToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromExpandedPixel(AValue: TExpandedPixel);\nbegin Self := ExpandedPixelToLChA(AValue) end;\n\nprocedure TLChAHelper.FromHSLAPixel(AValue: THSLAPixel);\nbegin Self := ExpandedPixelToLChA(HSLAToExpanded(AValue)) end;\n\nprocedure TLChAHelper.FromGSBAPixel(AValue: TGSBAPixel);\nbegin Self := ExpandedPixelToLChA(GSBAToExpanded(AValue)) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\nfunction TLChAHelper.ToStdRGBA: TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToAdobeRGBA: TAdobeRGBA;\nbegin Result := LChAToAdobeRGBA(Self) end;\n\nfunction TLChAHelper.ToStdHSLA: TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToStdHSVA: TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToStdCMYK: TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToLinearRGBA: TLinearRGBA;\nbegin Result := LChAToLinearRGBA(Self) end;\n\nfunction TLChAHelper.ToYCbCr601: TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToYCbCr601JPEG: TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToYCbCr709: TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToYCbCr709JPEG: TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LChAToExpandedPixel(Self)) end;\n\nfunction TLChAHelper.ToXYZA: TXYZA;overload;\nbegin Result := LChAToXYZA(Self) end;\n\nfunction TLChAHelper.ToXYZA(const AReferenceWhite: TXYZReferenceWhite): TXYZA;overload;\nbegin Result := LChAToXYZA(Self,AReferenceWhite) end;\n\nfunction TLChAHelper.ToWordXYZA: TWordXYZA;overload;\nbegin Result := LChAToWordXYZA(Self) end;\n\nfunction TLChAHelper.ToWordXYZA(const AReferenceWhite: TXYZReferenceWhite): TWordXYZA;overload;\nbegin Result := LChAToWordXYZA(Self,AReferenceWhite) end;\n\nfunction TLChAHelper.ToLabA: TLabA;\nbegin Result := LChAToLabA(Self) end;\n\nprocedure TLChAHelper.FromStdRGBA(AValue: TStdRGBA);\nbegin Self := ExpandedPixelToLChA(StdRGBAToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromAdobeRGBA(AValue: TAdobeRGBA);\nbegin Self := AdobeRGBAToLChA(AValue) end;\n\nprocedure TLChAHelper.FromStdHSLA(AValue: TStdHSLA);\nbegin Self := ExpandedPixelToLChA(StdHSLAToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromStdHSVA(AValue: TStdHSVA);\nbegin Self := ExpandedPixelToLChA(StdHSVAToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromStdCMYK(AValue: TStdCMYK);\nbegin Self := ExpandedPixelToLChA(StdCMYKToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromLinearRGBA(AValue: TLinearRGBA);\nbegin Self := LinearRGBAToLChA(AValue) end;\n\nprocedure TLChAHelper.FromYCbCr601(AValue: TYCbCr601);\nbegin Self := ExpandedPixelToLChA(YCbCr601ToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromYCbCr601JPEG(AValue: TYCbCr601JPEG);\nbegin Self := ExpandedPixelToLChA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromYCbCr709(AValue: TYCbCr709);\nbegin Self := ExpandedPixelToLChA(YCbCr709ToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromYCbCr709JPEG(AValue: TYCbCr709JPEG);\nbegin Self := ExpandedPixelToLChA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\nprocedure TLChAHelper.FromXYZA(AValue: TXYZA); overload;\nbegin Self := XYZAToLChA(AValue) end;\n\nprocedure TLChAHelper.FromXYZA(AValue: TXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := XYZAToLChA(AValue,AReferenceWhite) end;\n\nprocedure TLChAHelper.FromWordXYZA(AValue: TWordXYZA); overload;\nbegin Self := WordXYZAToLChA(AValue) end;\n\nprocedure TLChAHelper.FromWordXYZA(AValue: TWordXYZA; const AReferenceWhite: TXYZReferenceWhite); overload;\nbegin Self := WordXYZAToLChA(AValue,AReferenceWhite) end;\n\nprocedure TLChAHelper.FromLabA(AValue: TLabA);\nbegin Self := LabAToLChA(AValue) end;\n\n{$ENDIF}\n{$ENDIF}\n{Operators}\n\noperator := (const AValue: TColor): TByteMask;\nbegin Result := ColorToByteMask(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TByteMask;\nbegin Result := BGRAToMask(AValue) end;\n\noperator := (const AValue: TFPColor): TByteMask;\nbegin Result := FPColorToByteMask(AValue) end;\n\noperator := (const AValue: TByteMask): TColor;\nbegin Result := ByteMaskToColor(AValue) end;\n\noperator := (const AValue: TByteMask): TBGRAPixel;\nbegin Result := MaskToBGRA(AValue) end;\n\noperator := (const AValue: TByteMask): TFPColor;\nbegin Result := ByteMaskToFPColor(AValue) end;\n\noperator := (const AValue: TByteMask): TExpandedPixel;\nbegin Result := ByteMaskToExpandedPixel(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TByteMask;\nbegin Result := ExpandedPixelToByteMask(AValue) end;\n\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\noperator := (const AValue: TColor): TStdRGBA;\nbegin Result := ColorToStdRGBA(AValue) end;\n\noperator := (const AValue: TColor): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TColor): TStdHSLA;\nbegin Result := ColorToStdHSLA(AValue) end;\n\noperator := (const AValue: TColor): TStdHSVA;\nbegin Result := ColorToStdHSVA(AValue) end;\n\noperator := (const AValue: TColor): TStdCMYK;\nbegin Result := ColorToStdCMYK(AValue) end;\n\noperator := (const AValue: TColor): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TColor): TYCbCr601;\nbegin Result := ColorToYCbCr601(AValue) end;\n\noperator := (const AValue: TColor): TYCbCr601JPEG;\nbegin Result := ColorToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TColor): TYCbCr709;\nbegin Result := ColorToYCbCr709(AValue) end;\n\noperator := (const AValue: TColor): TYCbCr709JPEG;\nbegin Result := ColorToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TColor): TXYZA;\nbegin Result := ExpandedPixelToXYZA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TColor): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TColor): TLabA;\nbegin Result := ExpandedPixelToLabA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TColor): TLChA;\nbegin Result := ExpandedPixelToLChA(ColorToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TStdRGBA;\nbegin Result := BGRAPixelToStdRGBA(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TStdHSLA;\nbegin Result := BGRAPixelToStdHSLA(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TStdHSVA;\nbegin Result := BGRAPixelToStdHSVA(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TStdCMYK;\nbegin Result := BGRAPixelToStdCMYK(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TYCbCr601;\nbegin Result := BGRAPixelToYCbCr601(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TYCbCr601JPEG;\nbegin Result := BGRAPixelToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TYCbCr709;\nbegin Result := BGRAPixelToYCbCr709(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TYCbCr709JPEG;\nbegin Result := BGRAPixelToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TBGRAPixel): TXYZA;\nbegin Result := ExpandedPixelToXYZA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TLabA;\nbegin Result := ExpandedPixelToLabA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TBGRAPixel): TLChA;\nbegin Result := ExpandedPixelToLChA(GammaExpansion(AValue)) end;\n\noperator := (const AValue: TFPColor): TStdRGBA;\nbegin Result := FPColorToStdRGBA(AValue) end;\n\noperator := (const AValue: TFPColor): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TFPColor): TStdHSLA;\nbegin Result := FPColorToStdHSLA(AValue) end;\n\noperator := (const AValue: TFPColor): TStdHSVA;\nbegin Result := FPColorToStdHSVA(AValue) end;\n\noperator := (const AValue: TFPColor): TStdCMYK;\nbegin Result := FPColorToStdCMYK(AValue) end;\n\noperator := (const AValue: TFPColor): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TFPColor): TYCbCr601;\nbegin Result := FPColorToYCbCr601(AValue) end;\n\noperator := (const AValue: TFPColor): TYCbCr601JPEG;\nbegin Result := FPColorToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TFPColor): TYCbCr709;\nbegin Result := FPColorToYCbCr709(AValue) end;\n\noperator := (const AValue: TFPColor): TYCbCr709JPEG;\nbegin Result := FPColorToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TFPColor): TXYZA;\nbegin Result := ExpandedPixelToXYZA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TFPColor): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TFPColor): TLabA;\nbegin Result := ExpandedPixelToLabA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TFPColor): TLChA;\nbegin Result := ExpandedPixelToLChA(FPColorToExpanded(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TColor;\nbegin Result := StdRGBAToColor(AValue) end;\n\noperator := (const AValue: TStdRGBA): TBGRAPixel;\nbegin Result := StdRGBAToBGRAPixel(AValue) end;\n\noperator := (const AValue: TStdRGBA): TFPColor;\nbegin Result := StdRGBAToFPColor(AValue) end;\n\noperator := (const AValue: TStdRGBA): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TStdHSLA;\nbegin Result := StdRGBAToStdHSLA(AValue) end;\n\noperator := (const AValue: TStdRGBA): TStdHSVA;\nbegin Result := StdRGBAToStdHSVA(AValue) end;\n\noperator := (const AValue: TStdRGBA): TStdCMYK;\nbegin Result := StdRGBAToStdCMYK(AValue) end;\n\noperator := (const AValue: TStdRGBA): TByteMask;\nbegin Result := StdRGBAToByteMask(AValue) end;\n\noperator := (const AValue: TStdRGBA): TExpandedPixel;\nbegin Result := StdRGBAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TStdRGBA): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): THSLAPixel;\nbegin Result := ExpandedToHSLA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TYCbCr601;\nbegin Result := StdRGBAToYCbCr601(AValue) end;\n\noperator := (const AValue: TStdRGBA): TYCbCr601JPEG;\nbegin Result := StdRGBAToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TStdRGBA): TYCbCr709;\nbegin Result := StdRGBAToYCbCr709(AValue) end;\n\noperator := (const AValue: TStdRGBA): TYCbCr709JPEG;\nbegin Result := StdRGBAToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TStdRGBA): TXYZA;\nbegin Result := ExpandedPixelToXYZA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TLabA;\nbegin Result := ExpandedPixelToLabA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdRGBA): TLChA;\nbegin Result := ExpandedPixelToLChA(StdRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TColor;\nbegin Result := ExpandedPixelToColor(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TBGRAPixel;\nbegin Result := GammaCompression(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TFPColor;\nbegin Result := ExpandedToFPColor(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TExpandedPixel;\nbegin Result := AdobeRGBAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TAdobeRGBA): TLinearRGBA;\nbegin Result := AdobeRGBAToLinearRGBA(AValue) end;\n\noperator := (const AValue: TAdobeRGBA): THSLAPixel;\nbegin Result := ExpandedToHSLA(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(AdobeRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TAdobeRGBA): TXYZA;\nbegin Result := AdobeRGBAToXYZA(AValue) end;\n\noperator := (const AValue: TAdobeRGBA): TWordXYZA;\nbegin Result := AdobeRGBAToWordXYZA(AValue) end;\n\noperator := (const AValue: TAdobeRGBA): TLabA;\nbegin Result := AdobeRGBAToLabA(AValue) end;\n\noperator := (const AValue: TAdobeRGBA): TLChA;\nbegin Result := AdobeRGBAToLChA(AValue) end;\n\noperator := (const AValue: TStdHSLA): TColor;\nbegin Result := StdHSLAToColor(AValue) end;\n\noperator := (const AValue: TStdHSLA): TBGRAPixel;\nbegin Result := StdHSLAToBGRAPixel(AValue) end;\n\noperator := (const AValue: TStdHSLA): TFPColor;\nbegin Result := StdHSLAToFPColor(AValue) end;\n\noperator := (const AValue: TStdHSLA): TStdRGBA;\nbegin Result := StdHSLAToStdRGBA(AValue) end;\n\noperator := (const AValue: TStdHSLA): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TStdHSVA;\nbegin Result := StdHSLAToStdHSVA(AValue) end;\n\noperator := (const AValue: TStdHSLA): TStdCMYK;\nbegin Result := StdHSLAToStdCMYK(AValue) end;\n\noperator := (const AValue: TStdHSLA): TByteMask;\nbegin Result := StdHSLAToByteMask(AValue) end;\n\noperator := (const AValue: TStdHSLA): TExpandedPixel;\nbegin Result := StdHSLAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TStdHSLA): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): THSLAPixel;\nbegin Result := ExpandedToHSLA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TYCbCr601;\nbegin Result := StdHSLAToYCbCr601(AValue) end;\n\noperator := (const AValue: TStdHSLA): TYCbCr601JPEG;\nbegin Result := StdHSLAToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TStdHSLA): TYCbCr709;\nbegin Result := StdHSLAToYCbCr709(AValue) end;\n\noperator := (const AValue: TStdHSLA): TYCbCr709JPEG;\nbegin Result := StdHSLAToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TStdHSLA): TXYZA;\nbegin Result := ExpandedPixelToXYZA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TLabA;\nbegin Result := ExpandedPixelToLabA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSLA): TLChA;\nbegin Result := ExpandedPixelToLChA(StdHSLAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TColor;\nbegin Result := StdHSVAToColor(AValue) end;\n\noperator := (const AValue: TStdHSVA): TBGRAPixel;\nbegin Result := StdHSVAToBGRAPixel(AValue) end;\n\noperator := (const AValue: TStdHSVA): TFPColor;\nbegin Result := StdHSVAToFPColor(AValue) end;\n\noperator := (const AValue: TStdHSVA): TStdRGBA;\nbegin Result := StdHSVAToStdRGBA(AValue) end;\n\noperator := (const AValue: TStdHSVA): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TStdHSLA;\nbegin Result := StdHSVAToStdHSLA(AValue) end;\n\noperator := (const AValue: TStdHSVA): TStdCMYK;\nbegin Result := StdHSVAToStdCMYK(AValue) end;\n\noperator := (const AValue: TStdHSVA): TByteMask;\nbegin Result := StdHSVAToByteMask(AValue) end;\n\noperator := (const AValue: TStdHSVA): TExpandedPixel;\nbegin Result := StdHSVAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TStdHSVA): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): THSLAPixel;\nbegin Result := ExpandedToHSLA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TYCbCr601;\nbegin Result := StdHSVAToYCbCr601(AValue) end;\n\noperator := (const AValue: TStdHSVA): TYCbCr601JPEG;\nbegin Result := StdHSVAToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TStdHSVA): TYCbCr709;\nbegin Result := StdHSVAToYCbCr709(AValue) end;\n\noperator := (const AValue: TStdHSVA): TYCbCr709JPEG;\nbegin Result := StdHSVAToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TStdHSVA): TXYZA;\nbegin Result := ExpandedPixelToXYZA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TLabA;\nbegin Result := ExpandedPixelToLabA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdHSVA): TLChA;\nbegin Result := ExpandedPixelToLChA(StdHSVAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TColor;\nbegin Result := StdCMYKToColor(AValue) end;\n\noperator := (const AValue: TStdCMYK): TBGRAPixel;\nbegin Result := StdCMYKToBGRAPixel(AValue) end;\n\noperator := (const AValue: TStdCMYK): TFPColor;\nbegin Result := StdCMYKToFPColor(AValue) end;\n\noperator := (const AValue: TStdCMYK): TStdRGBA;\nbegin Result := StdCMYKToStdRGBA(AValue) end;\n\noperator := (const AValue: TStdCMYK): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TStdHSLA;\nbegin Result := StdCMYKToStdHSLA(AValue) end;\n\noperator := (const AValue: TStdCMYK): TStdHSVA;\nbegin Result := StdCMYKToStdHSVA(AValue) end;\n\noperator := (const AValue: TStdCMYK): TByteMask;\nbegin Result := StdCMYKToByteMask(AValue) end;\n\noperator := (const AValue: TStdCMYK): TExpandedPixel;\nbegin Result := StdCMYKToExpandedPixel(AValue) end;\n\noperator := (const AValue: TStdCMYK): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): THSLAPixel;\nbegin Result := ExpandedToHSLA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TGSBAPixel;\nbegin Result := ExpandedToGSBA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TYCbCr601;\nbegin Result := StdCMYKToYCbCr601(AValue) end;\n\noperator := (const AValue: TStdCMYK): TYCbCr601JPEG;\nbegin Result := StdCMYKToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TStdCMYK): TYCbCr709;\nbegin Result := StdCMYKToYCbCr709(AValue) end;\n\noperator := (const AValue: TStdCMYK): TYCbCr709JPEG;\nbegin Result := StdCMYKToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TStdCMYK): TXYZA;\nbegin Result := ExpandedPixelToXYZA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TLabA;\nbegin Result := ExpandedPixelToLabA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TStdCMYK): TLChA;\nbegin Result := ExpandedPixelToLChA(StdCMYKToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TStdRGBA;\nbegin Result := ByteMaskToStdRGBA(AValue) end;\n\noperator := (const AValue: TByteMask): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TStdHSLA;\nbegin Result := ByteMaskToStdHSLA(AValue) end;\n\noperator := (const AValue: TByteMask): TStdHSVA;\nbegin Result := ByteMaskToStdHSVA(AValue) end;\n\noperator := (const AValue: TByteMask): TStdCMYK;\nbegin Result := ByteMaskToStdCMYK(AValue) end;\n\noperator := (const AValue: TByteMask): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): THSLAPixel;\nbegin Result := ExpandedToHSLA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TGSBAPixel;\nbegin Result := ExpandedToGSBA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TYCbCr601;\nbegin Result := ByteMaskToYCbCr601(AValue) end;\n\noperator := (const AValue: TByteMask): TYCbCr601JPEG;\nbegin Result := ByteMaskToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TByteMask): TYCbCr709;\nbegin Result := ByteMaskToYCbCr709(AValue) end;\n\noperator := (const AValue: TByteMask): TYCbCr709JPEG;\nbegin Result := ByteMaskToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TByteMask): TXYZA;\nbegin Result := ExpandedPixelToXYZA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TLabA;\nbegin Result := ExpandedPixelToLabA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TByteMask): TLChA;\nbegin Result := ExpandedPixelToLChA(ByteMaskToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TExpandedPixel): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TXYZA;\nbegin Result := ExpandedPixelToXYZA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TLabA;\nbegin Result := ExpandedPixelToLabA(AValue) end;\n\noperator := (const AValue: TExpandedPixel): TLChA;\nbegin Result := ExpandedPixelToLChA(AValue) end;\n\noperator := (const AValue: TLinearRGBA): TColor;\nbegin Result := ExpandedPixelToColor(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TBGRAPixel;\nbegin Result := GammaCompression(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TFPColor;\nbegin Result := ExpandedToFPColor(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TAdobeRGBA;\nbegin Result := LinearRGBAToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TLinearRGBA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TExpandedPixel;\nbegin Result := LinearRGBAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TLinearRGBA): THSLAPixel;\nbegin Result := ExpandedToHSLA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TXYZA;\nbegin Result := LinearRGBAToXYZA(AValue) end;\n\noperator := (const AValue: TLinearRGBA): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(LinearRGBAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLinearRGBA): TLabA;\nbegin Result := LinearRGBAToLabA(AValue) end;\n\noperator := (const AValue: TLinearRGBA): TLChA;\nbegin Result := LinearRGBAToLChA(AValue) end;\n\noperator := (const AValue: THSLAPixel): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TByteMask;\nbegin Result := ExpandedPixelToByteMask(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TXYZA;\nbegin Result := ExpandedPixelToXYZA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TLabA;\nbegin Result := ExpandedPixelToLabA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: THSLAPixel): TLChA;\nbegin Result := ExpandedPixelToLChA(HSLAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TByteMask;\nbegin Result := ExpandedPixelToByteMask(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TXYZA;\nbegin Result := ExpandedPixelToXYZA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TLabA;\nbegin Result := ExpandedPixelToLabA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TGSBAPixel): TLChA;\nbegin Result := ExpandedPixelToLChA(GSBAToExpanded(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TColor;\nbegin Result := YCbCr601ToColor(AValue) end;\n\noperator := (const AValue: TYCbCr601): TBGRAPixel;\nbegin Result := YCbCr601ToBGRAPixel(AValue) end;\n\noperator := (const AValue: TYCbCr601): TFPColor;\nbegin Result := YCbCr601ToFPColor(AValue) end;\n\noperator := (const AValue: TYCbCr601): TStdRGBA;\nbegin Result := YCbCr601ToStdRGBA(AValue) end;\n\noperator := (const AValue: TYCbCr601): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TStdHSLA;\nbegin Result := YCbCr601ToStdHSLA(AValue) end;\n\noperator := (const AValue: TYCbCr601): TStdHSVA;\nbegin Result := YCbCr601ToStdHSVA(AValue) end;\n\noperator := (const AValue: TYCbCr601): TStdCMYK;\nbegin Result := YCbCr601ToStdCMYK(AValue) end;\n\noperator := (const AValue: TYCbCr601): TByteMask;\nbegin Result := YCbCr601ToByteMask(AValue) end;\n\noperator := (const AValue: TYCbCr601): TExpandedPixel;\nbegin Result := YCbCr601ToExpandedPixel(AValue) end;\n\noperator := (const AValue: TYCbCr601): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): THSLAPixel;\nbegin Result := ExpandedToHSLA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TGSBAPixel;\nbegin Result := ExpandedToGSBA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TYCbCr601JPEG;\nbegin Result := YCbCr601ToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr601): TYCbCr709;\nbegin Result := YCbCr601ToYCbCr709(AValue) end;\n\noperator := (const AValue: TYCbCr601): TYCbCr709JPEG;\nbegin Result := YCbCr601ToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr601): TXYZA;\nbegin Result := ExpandedPixelToXYZA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TLabA;\nbegin Result := ExpandedPixelToLabA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601): TLChA;\nbegin Result := ExpandedPixelToLChA(YCbCr601ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TColor;\nbegin Result := YCbCr601JPEGToColor(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TBGRAPixel;\nbegin Result := YCbCr601JPEGToBGRAPixel(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TFPColor;\nbegin Result := YCbCr601JPEGToFPColor(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TStdRGBA;\nbegin Result := YCbCr601JPEGToStdRGBA(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TStdHSLA;\nbegin Result := YCbCr601JPEGToStdHSLA(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TStdHSVA;\nbegin Result := YCbCr601JPEGToStdHSVA(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TStdCMYK;\nbegin Result := YCbCr601JPEGToStdCMYK(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TByteMask;\nbegin Result := YCbCr601JPEGToByteMask(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TExpandedPixel;\nbegin Result := YCbCr601JPEGToExpandedPixel(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): THSLAPixel;\nbegin Result := ExpandedToHSLA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TGSBAPixel;\nbegin Result := ExpandedToGSBA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TYCbCr601;\nbegin Result := YCbCr601JPEGToYCbCr601(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TYCbCr709;\nbegin Result := YCbCr601JPEGToYCbCr709(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TYCbCr709JPEG;\nbegin Result := YCbCr601JPEGToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr601JPEG): TXYZA;\nbegin Result := ExpandedPixelToXYZA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TLabA;\nbegin Result := ExpandedPixelToLabA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr601JPEG): TLChA;\nbegin Result := ExpandedPixelToLChA(YCbCr601JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TColor;\nbegin Result := YCbCr709ToColor(AValue) end;\n\noperator := (const AValue: TYCbCr709): TBGRAPixel;\nbegin Result := YCbCr709ToBGRAPixel(AValue) end;\n\noperator := (const AValue: TYCbCr709): TFPColor;\nbegin Result := YCbCr709ToFPColor(AValue) end;\n\noperator := (const AValue: TYCbCr709): TStdRGBA;\nbegin Result := YCbCr709ToStdRGBA(AValue) end;\n\noperator := (const AValue: TYCbCr709): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TStdHSLA;\nbegin Result := YCbCr709ToStdHSLA(AValue) end;\n\noperator := (const AValue: TYCbCr709): TStdHSVA;\nbegin Result := YCbCr709ToStdHSVA(AValue) end;\n\noperator := (const AValue: TYCbCr709): TStdCMYK;\nbegin Result := YCbCr709ToStdCMYK(AValue) end;\n\noperator := (const AValue: TYCbCr709): TByteMask;\nbegin Result := YCbCr709ToByteMask(AValue) end;\n\noperator := (const AValue: TYCbCr709): TExpandedPixel;\nbegin Result := YCbCr709ToExpandedPixel(AValue) end;\n\noperator := (const AValue: TYCbCr709): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): THSLAPixel;\nbegin Result := ExpandedToHSLA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TGSBAPixel;\nbegin Result := ExpandedToGSBA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TYCbCr601;\nbegin Result := YCbCr709ToYCbCr601(AValue) end;\n\noperator := (const AValue: TYCbCr709): TYCbCr601JPEG;\nbegin Result := YCbCr709ToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr709): TYCbCr709JPEG;\nbegin Result := YCbCr709ToYCbCr709JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr709): TXYZA;\nbegin Result := ExpandedPixelToXYZA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TLabA;\nbegin Result := ExpandedPixelToLabA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709): TLChA;\nbegin Result := ExpandedPixelToLChA(YCbCr709ToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TColor;\nbegin Result := YCbCr709JPEGToColor(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TBGRAPixel;\nbegin Result := YCbCr709JPEGToBGRAPixel(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TFPColor;\nbegin Result := YCbCr709JPEGToFPColor(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TStdRGBA;\nbegin Result := YCbCr709JPEGToStdRGBA(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TAdobeRGBA;\nbegin Result := ExpandedPixelToAdobeRGBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TStdHSLA;\nbegin Result := YCbCr709JPEGToStdHSLA(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TStdHSVA;\nbegin Result := YCbCr709JPEGToStdHSVA(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TStdCMYK;\nbegin Result := YCbCr709JPEGToStdCMYK(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TByteMask;\nbegin Result := YCbCr709JPEGToByteMask(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TExpandedPixel;\nbegin Result := YCbCr709JPEGToExpandedPixel(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): THSLAPixel;\nbegin Result := ExpandedToHSLA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TGSBAPixel;\nbegin Result := ExpandedToGSBA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TYCbCr601;\nbegin Result := YCbCr709JPEGToYCbCr601(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TYCbCr601JPEG;\nbegin Result := YCbCr709JPEGToYCbCr601JPEG(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TYCbCr709;\nbegin Result := YCbCr709JPEGToYCbCr709(AValue) end;\n\noperator := (const AValue: TYCbCr709JPEG): TXYZA;\nbegin Result := ExpandedPixelToXYZA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TWordXYZA;\nbegin Result := ExpandedPixelToWordXYZA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TLabA;\nbegin Result := ExpandedPixelToLabA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TYCbCr709JPEG): TLChA;\nbegin Result := ExpandedPixelToLChA(YCbCr709JPEGToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TColor;\nbegin Result := ExpandedPixelToColor(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TBGRAPixel;\nbegin Result := GammaCompression(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TFPColor;\nbegin Result := ExpandedToFPColor(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TAdobeRGBA;\nbegin Result := XYZAToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TXYZA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TExpandedPixel;\nbegin Result := XYZAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TXYZA): TLinearRGBA;\nbegin Result := XYZAToLinearRGBA(AValue) end;\n\noperator := (const AValue: TXYZA): THSLAPixel;\nbegin Result := ExpandedToHSLA(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(XYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TXYZA): TWordXYZA;\nbegin Result := XYZAToWordXYZA(AValue) end;\n\noperator := (const AValue: TXYZA): TLabA;\nbegin Result := XYZAToLabA(AValue) end;\n\noperator := (const AValue: TXYZA): TLChA;\nbegin Result := XYZAToLChA(AValue) end;\n\noperator := (const AValue: TWordXYZA): TColor;\nbegin Result := ExpandedPixelToColor(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TBGRAPixel;\nbegin Result := GammaCompression(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TFPColor;\nbegin Result := ExpandedToFPColor(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TAdobeRGBA;\nbegin Result := WordXYZAToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TWordXYZA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TExpandedPixel;\nbegin Result := WordXYZAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TWordXYZA): TLinearRGBA;\nbegin Result := ExpandedPixelToLinearRGBA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): THSLAPixel;\nbegin Result := ExpandedToHSLA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(WordXYZAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TWordXYZA): TXYZA;\nbegin Result := WordXYZAToXYZA(AValue) end;\n\noperator := (const AValue: TWordXYZA): TLabA;\nbegin Result := WordXYZAToLabA(AValue) end;\n\noperator := (const AValue: TWordXYZA): TLChA;\nbegin Result := WordXYZAToLChA(AValue) end;\n\noperator := (const AValue: TLabA): TColor;\nbegin Result := ExpandedPixelToColor(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TBGRAPixel;\nbegin Result := GammaCompression(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TFPColor;\nbegin Result := ExpandedToFPColor(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TAdobeRGBA;\nbegin Result := LabAToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TLabA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TExpandedPixel;\nbegin Result := LabAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TLabA): TLinearRGBA;\nbegin Result := LabAToLinearRGBA(AValue) end;\n\noperator := (const AValue: TLabA): THSLAPixel;\nbegin Result := ExpandedToHSLA(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LabAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLabA): TXYZA;\nbegin Result := LabAToXYZA(AValue) end;\n\noperator := (const AValue: TLabA): TWordXYZA;\nbegin Result := LabAToWordXYZA(AValue) end;\n\noperator := (const AValue: TLabA): TLChA;\nbegin Result := LabAToLChA(AValue) end;\n\noperator := (const AValue: TLChA): TColor;\nbegin Result := ExpandedPixelToColor(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TBGRAPixel;\nbegin Result := GammaCompression(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TFPColor;\nbegin Result := ExpandedToFPColor(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TStdRGBA;\nbegin Result := ExpandedPixelToStdRGBA(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TAdobeRGBA;\nbegin Result := LChAToAdobeRGBA(AValue) end;\n\noperator := (const AValue: TLChA): TStdHSLA;\nbegin Result := ExpandedPixelToStdHSLA(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TStdHSVA;\nbegin Result := ExpandedPixelToStdHSVA(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TStdCMYK;\nbegin Result := ExpandedPixelToStdCMYK(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TByteMask;\nbegin Result := ExpandedPixelToByteMask(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TExpandedPixel;\nbegin Result := LChAToExpandedPixel(AValue) end;\n\noperator := (const AValue: TLChA): TLinearRGBA;\nbegin Result := LChAToLinearRGBA(AValue) end;\n\noperator := (const AValue: TLChA): THSLAPixel;\nbegin Result := ExpandedToHSLA(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TGSBAPixel;\nbegin Result := ExpandedToGSBA(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TYCbCr601;\nbegin Result := ExpandedPixelToYCbCr601(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TYCbCr601JPEG;\nbegin Result := ExpandedPixelToYCbCr601JPEG(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TYCbCr709;\nbegin Result := ExpandedPixelToYCbCr709(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TYCbCr709JPEG;\nbegin Result := ExpandedPixelToYCbCr709JPEG(LChAToExpandedPixel(AValue)) end;\n\noperator := (const AValue: TLChA): TXYZA;\nbegin Result := LChAToXYZA(AValue) end;\n\noperator := (const AValue: TLChA): TWordXYZA;\nbegin Result := LChAToWordXYZA(AValue) end;\n\noperator := (const AValue: TLChA): TLabA;\nbegin Result := LChAToLabA(AValue) end;\n\n{$ENDIF}\n{$ENDIF}\n{$IFDEF INCLUDE_INITIALIZATION}\n{$UNDEF INCLUDE_INITIALIZATION}\n  ColorspaceCollection.Add(TColorColorspace);\n  ColorspaceCollection.Add(TBGRAPixelColorspace);\n  ColorspaceCollection.Add(TFPColorColorspace);\n  ColorspaceCollection.Add(TByteMaskColorspace);\n  ColorspaceCollection.Add(TExpandedPixelColorspace);\n  ColorspaceCollection.AddConversion(TColorColorspace, TBGRAPixelColorspace, @ConvertColorArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TFPColorColorspace, @ConvertColorArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TByteMaskColorspace, @ConvertColorArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TExpandedPixelColorspace, @ConvertColorArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TColorColorspace, @ConvertBGRAPixelArrayToColorArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TFPColorColorspace, @ConvertBGRAPixelArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TByteMaskColorspace, @ConvertBGRAPixelArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TExpandedPixelColorspace, @ConvertBGRAPixelArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TColorColorspace, @ConvertFPColorArrayToColorArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TBGRAPixelColorspace, @ConvertFPColorArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TByteMaskColorspace, @ConvertFPColorArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TExpandedPixelColorspace, @ConvertFPColorArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TColorColorspace, @ConvertByteMaskArrayToColorArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TBGRAPixelColorspace, @ConvertByteMaskArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TFPColorColorspace, @ConvertByteMaskArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TExpandedPixelColorspace, @ConvertByteMaskArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TColorColorspace, @ConvertExpandedPixelArrayToColorArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TBGRAPixelColorspace, @ConvertExpandedPixelArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TFPColorColorspace, @ConvertExpandedPixelArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TByteMaskColorspace, @ConvertExpandedPixelArrayToByteMaskArray);\n{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}\n  ColorspaceCollection.Add(TStdRGBAColorspace);\n  ColorspaceCollection.Add(TAdobeRGBAColorspace);\n  ColorspaceCollection.Add(TStdHSLAColorspace);\n  ColorspaceCollection.Add(TStdHSVAColorspace);\n  ColorspaceCollection.Add(TStdCMYKColorspace);\n  ColorspaceCollection.Add(TLinearRGBAColorspace);\n  ColorspaceCollection.Add(THSLAPixelColorspace);\n  ColorspaceCollection.Add(TGSBAPixelColorspace);\n  ColorspaceCollection.Add(TYCbCr601Colorspace);\n  ColorspaceCollection.Add(TYCbCr601JPEGColorspace);\n  ColorspaceCollection.Add(TYCbCr709Colorspace);\n  ColorspaceCollection.Add(TYCbCr709JPEGColorspace);\n  ColorspaceCollection.Add(TXYZAColorspace);\n  ColorspaceCollection.Add(TWordXYZAColorspace);\n  ColorspaceCollection.Add(TLabAColorspace);\n  ColorspaceCollection.Add(TLChAColorspace);\n  ColorspaceCollection.AddConversion(TColorColorspace, TStdRGBAColorspace, @ConvertColorArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TStdHSLAColorspace, @ConvertColorArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TStdHSVAColorspace, @ConvertColorArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TStdCMYKColorspace, @ConvertColorArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TYCbCr601Colorspace, @ConvertColorArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TColorColorspace, TYCbCr601JPEGColorspace, @ConvertColorArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TColorColorspace, TYCbCr709Colorspace, @ConvertColorArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TColorColorspace, TYCbCr709JPEGColorspace, @ConvertColorArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TStdRGBAColorspace, @ConvertBGRAPixelArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TStdHSLAColorspace, @ConvertBGRAPixelArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TStdHSVAColorspace, @ConvertBGRAPixelArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TStdCMYKColorspace, @ConvertBGRAPixelArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TYCbCr601Colorspace, @ConvertBGRAPixelArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TYCbCr601JPEGColorspace, @ConvertBGRAPixelArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TYCbCr709Colorspace, @ConvertBGRAPixelArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TBGRAPixelColorspace, TYCbCr709JPEGColorspace, @ConvertBGRAPixelArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TStdRGBAColorspace, @ConvertFPColorArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TStdHSLAColorspace, @ConvertFPColorArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TStdHSVAColorspace, @ConvertFPColorArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TStdCMYKColorspace, @ConvertFPColorArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TYCbCr601Colorspace, @ConvertFPColorArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TYCbCr601JPEGColorspace, @ConvertFPColorArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TYCbCr709Colorspace, @ConvertFPColorArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TFPColorColorspace, TYCbCr709JPEGColorspace, @ConvertFPColorArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TColorColorspace, @ConvertStdRGBAArrayToColorArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TBGRAPixelColorspace, @ConvertStdRGBAArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TFPColorColorspace, @ConvertStdRGBAArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TStdHSLAColorspace, @ConvertStdRGBAArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TStdHSVAColorspace, @ConvertStdRGBAArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TStdCMYKColorspace, @ConvertStdRGBAArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TByteMaskColorspace, @ConvertStdRGBAArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TExpandedPixelColorspace, @ConvertStdRGBAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TYCbCr601Colorspace, @ConvertStdRGBAArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TYCbCr601JPEGColorspace, @ConvertStdRGBAArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TYCbCr709Colorspace, @ConvertStdRGBAArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TStdRGBAColorspace, TYCbCr709JPEGColorspace, @ConvertStdRGBAArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TExpandedPixelColorspace, @ConvertAdobeRGBAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TLinearRGBAColorspace, @ConvertAdobeRGBAArrayToLinearRGBAArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TXYZAColorspace, @ConvertAdobeRGBAArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TWordXYZAColorspace, @ConvertAdobeRGBAArrayToWordXYZAArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TLabAColorspace, @ConvertAdobeRGBAArrayToLabAArray);\n  ColorspaceCollection.AddConversion(TAdobeRGBAColorspace, TLChAColorspace, @ConvertAdobeRGBAArrayToLChAArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TColorColorspace, @ConvertStdHSLAArrayToColorArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TBGRAPixelColorspace, @ConvertStdHSLAArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TFPColorColorspace, @ConvertStdHSLAArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TStdRGBAColorspace, @ConvertStdHSLAArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TStdHSVAColorspace, @ConvertStdHSLAArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TStdCMYKColorspace, @ConvertStdHSLAArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TByteMaskColorspace, @ConvertStdHSLAArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TExpandedPixelColorspace, @ConvertStdHSLAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TYCbCr601Colorspace, @ConvertStdHSLAArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TYCbCr601JPEGColorspace, @ConvertStdHSLAArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TYCbCr709Colorspace, @ConvertStdHSLAArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TStdHSLAColorspace, TYCbCr709JPEGColorspace, @ConvertStdHSLAArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TColorColorspace, @ConvertStdHSVAArrayToColorArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TBGRAPixelColorspace, @ConvertStdHSVAArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TFPColorColorspace, @ConvertStdHSVAArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TStdRGBAColorspace, @ConvertStdHSVAArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TStdHSLAColorspace, @ConvertStdHSVAArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TStdCMYKColorspace, @ConvertStdHSVAArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TByteMaskColorspace, @ConvertStdHSVAArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TExpandedPixelColorspace, @ConvertStdHSVAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TYCbCr601Colorspace, @ConvertStdHSVAArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TYCbCr601JPEGColorspace, @ConvertStdHSVAArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TYCbCr709Colorspace, @ConvertStdHSVAArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TStdHSVAColorspace, TYCbCr709JPEGColorspace, @ConvertStdHSVAArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TColorColorspace, @ConvertStdCMYKArrayToColorArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TBGRAPixelColorspace, @ConvertStdCMYKArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TFPColorColorspace, @ConvertStdCMYKArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TStdRGBAColorspace, @ConvertStdCMYKArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TStdHSLAColorspace, @ConvertStdCMYKArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TStdHSVAColorspace, @ConvertStdCMYKArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TByteMaskColorspace, @ConvertStdCMYKArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TExpandedPixelColorspace, @ConvertStdCMYKArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TYCbCr601Colorspace, @ConvertStdCMYKArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TYCbCr601JPEGColorspace, @ConvertStdCMYKArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TYCbCr709Colorspace, @ConvertStdCMYKArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TStdCMYKColorspace, TYCbCr709JPEGColorspace, @ConvertStdCMYKArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TStdRGBAColorspace, @ConvertByteMaskArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TStdHSLAColorspace, @ConvertByteMaskArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TStdHSVAColorspace, @ConvertByteMaskArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TStdCMYKColorspace, @ConvertByteMaskArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TYCbCr601Colorspace, @ConvertByteMaskArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TYCbCr601JPEGColorspace, @ConvertByteMaskArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TYCbCr709Colorspace, @ConvertByteMaskArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TByteMaskColorspace, TYCbCr709JPEGColorspace, @ConvertByteMaskArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TStdRGBAColorspace, @ConvertExpandedPixelArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TAdobeRGBAColorspace, @ConvertExpandedPixelArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TStdHSLAColorspace, @ConvertExpandedPixelArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TStdHSVAColorspace, @ConvertExpandedPixelArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TStdCMYKColorspace, @ConvertExpandedPixelArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TLinearRGBAColorspace, @ConvertExpandedPixelArrayToLinearRGBAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, THSLAPixelColorspace, @ConvertExpandedPixelArrayToHSLAPixelArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TGSBAPixelColorspace, @ConvertExpandedPixelArrayToGSBAPixelArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TYCbCr601Colorspace, @ConvertExpandedPixelArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TYCbCr601JPEGColorspace, @ConvertExpandedPixelArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TYCbCr709Colorspace, @ConvertExpandedPixelArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TYCbCr709JPEGColorspace, @ConvertExpandedPixelArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TXYZAColorspace, @ConvertExpandedPixelArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TWordXYZAColorspace, @ConvertExpandedPixelArrayToWordXYZAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TLabAColorspace, @ConvertExpandedPixelArrayToLabAArray);\n  ColorspaceCollection.AddConversion(TExpandedPixelColorspace, TLChAColorspace, @ConvertExpandedPixelArrayToLChAArray);\n  ColorspaceCollection.AddConversion(TLinearRGBAColorspace, TAdobeRGBAColorspace, @ConvertLinearRGBAArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TLinearRGBAColorspace, TExpandedPixelColorspace, @ConvertLinearRGBAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TLinearRGBAColorspace, TXYZAColorspace, @ConvertLinearRGBAArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TLinearRGBAColorspace, TLabAColorspace, @ConvertLinearRGBAArrayToLabAArray);\n  ColorspaceCollection.AddConversion(TLinearRGBAColorspace, TLChAColorspace, @ConvertLinearRGBAArrayToLChAArray);\n  ColorspaceCollection.AddConversion(THSLAPixelColorspace, TExpandedPixelColorspace, @ConvertHSLAPixelArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(THSLAPixelColorspace, TGSBAPixelColorspace, @ConvertHSLAPixelArrayToGSBAPixelArray);\n  ColorspaceCollection.AddConversion(TGSBAPixelColorspace, TExpandedPixelColorspace, @ConvertGSBAPixelArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TGSBAPixelColorspace, THSLAPixelColorspace, @ConvertGSBAPixelArrayToHSLAPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TColorColorspace, @ConvertYCbCr601ArrayToColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TBGRAPixelColorspace, @ConvertYCbCr601ArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TFPColorColorspace, @ConvertYCbCr601ArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TStdRGBAColorspace, @ConvertYCbCr601ArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TStdHSLAColorspace, @ConvertYCbCr601ArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TStdHSVAColorspace, @ConvertYCbCr601ArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TStdCMYKColorspace, @ConvertYCbCr601ArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TByteMaskColorspace, @ConvertYCbCr601ArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TExpandedPixelColorspace, @ConvertYCbCr601ArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TYCbCr601JPEGColorspace, @ConvertYCbCr601ArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TYCbCr709Colorspace, @ConvertYCbCr601ArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TYCbCr601Colorspace, TYCbCr709JPEGColorspace, @ConvertYCbCr601ArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TColorColorspace, @ConvertYCbCr601JPEGArrayToColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TBGRAPixelColorspace, @ConvertYCbCr601JPEGArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TFPColorColorspace, @ConvertYCbCr601JPEGArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TStdRGBAColorspace, @ConvertYCbCr601JPEGArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TStdHSLAColorspace, @ConvertYCbCr601JPEGArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TStdHSVAColorspace, @ConvertYCbCr601JPEGArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TStdCMYKColorspace, @ConvertYCbCr601JPEGArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TByteMaskColorspace, @ConvertYCbCr601JPEGArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TExpandedPixelColorspace, @ConvertYCbCr601JPEGArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TYCbCr601Colorspace, @ConvertYCbCr601JPEGArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TYCbCr709Colorspace, @ConvertYCbCr601JPEGArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TYCbCr601JPEGColorspace, TYCbCr709JPEGColorspace, @ConvertYCbCr601JPEGArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TColorColorspace, @ConvertYCbCr709ArrayToColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TBGRAPixelColorspace, @ConvertYCbCr709ArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TFPColorColorspace, @ConvertYCbCr709ArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TStdRGBAColorspace, @ConvertYCbCr709ArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TStdHSLAColorspace, @ConvertYCbCr709ArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TStdHSVAColorspace, @ConvertYCbCr709ArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TStdCMYKColorspace, @ConvertYCbCr709ArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TByteMaskColorspace, @ConvertYCbCr709ArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TExpandedPixelColorspace, @ConvertYCbCr709ArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TYCbCr601Colorspace, @ConvertYCbCr709ArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TYCbCr601JPEGColorspace, @ConvertYCbCr709ArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr709Colorspace, TYCbCr709JPEGColorspace, @ConvertYCbCr709ArrayToYCbCr709JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TColorColorspace, @ConvertYCbCr709JPEGArrayToColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TBGRAPixelColorspace, @ConvertYCbCr709JPEGArrayToBGRAPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TFPColorColorspace, @ConvertYCbCr709JPEGArrayToFPColorArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TStdRGBAColorspace, @ConvertYCbCr709JPEGArrayToStdRGBAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TStdHSLAColorspace, @ConvertYCbCr709JPEGArrayToStdHSLAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TStdHSVAColorspace, @ConvertYCbCr709JPEGArrayToStdHSVAArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TStdCMYKColorspace, @ConvertYCbCr709JPEGArrayToStdCMYKArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TByteMaskColorspace, @ConvertYCbCr709JPEGArrayToByteMaskArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TExpandedPixelColorspace, @ConvertYCbCr709JPEGArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TYCbCr601Colorspace, @ConvertYCbCr709JPEGArrayToYCbCr601Array);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TYCbCr601JPEGColorspace, @ConvertYCbCr709JPEGArrayToYCbCr601JPEGArray);\n  ColorspaceCollection.AddConversion(TYCbCr709JPEGColorspace, TYCbCr709Colorspace, @ConvertYCbCr709JPEGArrayToYCbCr709Array);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TAdobeRGBAColorspace, @ConvertXYZAArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TExpandedPixelColorspace, @ConvertXYZAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TLinearRGBAColorspace, @ConvertXYZAArrayToLinearRGBAArray);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TWordXYZAColorspace, @ConvertXYZAArrayToWordXYZAArray);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TLabAColorspace, @ConvertXYZAArrayToLabAArray);\n  ColorspaceCollection.AddConversion(TXYZAColorspace, TLChAColorspace, @ConvertXYZAArrayToLChAArray);\n  ColorspaceCollection.AddConversion(TWordXYZAColorspace, TAdobeRGBAColorspace, @ConvertWordXYZAArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TWordXYZAColorspace, TExpandedPixelColorspace, @ConvertWordXYZAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TWordXYZAColorspace, TXYZAColorspace, @ConvertWordXYZAArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TWordXYZAColorspace, TLabAColorspace, @ConvertWordXYZAArrayToLabAArray);\n  ColorspaceCollection.AddConversion(TWordXYZAColorspace, TLChAColorspace, @ConvertWordXYZAArrayToLChAArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TAdobeRGBAColorspace, @ConvertLabAArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TExpandedPixelColorspace, @ConvertLabAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TLinearRGBAColorspace, @ConvertLabAArrayToLinearRGBAArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TXYZAColorspace, @ConvertLabAArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TWordXYZAColorspace, @ConvertLabAArrayToWordXYZAArray);\n  ColorspaceCollection.AddConversion(TLabAColorspace, TLChAColorspace, @ConvertLabAArrayToLChAArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TAdobeRGBAColorspace, @ConvertLChAArrayToAdobeRGBAArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TExpandedPixelColorspace, @ConvertLChAArrayToExpandedPixelArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TLinearRGBAColorspace, @ConvertLChAArrayToLinearRGBAArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TXYZAColorspace, @ConvertLChAArrayToXYZAArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TWordXYZAColorspace, @ConvertLChAArrayToWordXYZAArray);\n  ColorspaceCollection.AddConversion(TLChAColorspace, TLabAColorspace, @ConvertLChAArrayToLabAArray);\n{$ENDIF}\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/generatedunicode.inc",
    "content": "{ This file is generated by dev/parseunicode/parseunicodeclasses program }\n\nfunction GetUnicodeBidiClassEx(u: LongWord): TUnicodeBidiClass;\nbegin\n  case u of\n  $00000..$07FFF:\n    case u of\n    $00000..$003FF:\n      case u of\n        $00..$08, $0E..$1B, $7F..$84, $86..$9F, $AD: result := ubcBoundaryNeutral;\n        $09, $0B, $1F: result := ubcSegmentSeparator;\n        $0A, $0D, $1C..$1E, $85: result := ubcParagraphSeparator;\n        $0C, $20: result := ubcWhiteSpace;\n        $41..$5A, $61..$7A, $AA, $B5, $BA, $C0..$D6, $D8..$F6, $F8..$2B8, $2BB..$2C1, $2D0, $2D1, \n        $2E0..$2E4, $2EE, $370..$373, $376, $377, $37A..$37D, $37F, $386, $388..$38A, $38C, $38E..$3A1, \n        $3A3..$3F5, $3F7: result := ubcLeftToRight;\n        $3F8..$3FF: result := ubcLeftToRight;\n        $30..$39, $B2, $B3, $B9: result := ubcEuropeanNumber;\n        $2B, $2D: result := ubcEuropeanNumberSeparator;\n        $23..$25, $A2..$A5, $B0, $B1: result := ubcEuropeanNumberTerminator;\n        $2C, $2E, $2F, $3A, $A0: result := ubcCommonSeparator;\n        $300..$36F: result := ubcNonSpacingMark;\n        $21, $22, $26, $27, $2A, $3B, $3D, $3F, $40, $5C, $5E..$60, $7C, $7E, $A1, $A6..$A9, $AC, \n        $AE, $AF, $B4, $B6..$B8, $BC..$BF, $D7, $F7, $2B9, $2BA, $2C2..$2CF, $2D2: result := ubcOtherNeutrals;\n        $2D3..$2DF, $2E5..$2ED, $2EF..$2FF, $374, $375, $37E, $384, $385, $387, $3F6: result := ubcOtherNeutrals;\n        $28, $29, $3C, $3E, $5B, $5D, $7B, $7D, $AB, $BB: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    $00400..$007FF:\n      case u of\n        $400..$482, $48A..$52F, $531..$556, $559..$589: result := ubcLeftToRight;\n        $5BE, $5C0, $5C3, $5C6, $5D0..$5EA, $5EF..$5F4, $7C0..$7EA, $7F4, $7F5, $7FA, $7FE, $7FF: result := ubcRightToLeft;\n        $608, $60B, $60D, $61B, $61C, $61E..$64A, $66D..$66F, $671..$6D5, $6E5, $6E6, $6EE, $6EF, \n        $6FA..$70D, $70F, $710, $712..$72F, $74D..$7A5, $7B1: result := ubcArabicLetter;\n        $6F0..$6F9: result := ubcEuropeanNumber;\n        $58F, $609, $60A, $66A: result := ubcEuropeanNumberTerminator;\n        $600..$605, $660..$669, $66B, $66C, $6DD: result := ubcArabicNumber;\n        $60C: result := ubcCommonSeparator;\n        $483..$489, $591..$5BD, $5BF, $5C1, $5C2, $5C4, $5C5, $5C7, $610..$61A, $64B..$65F, $670, \n        $6D6..$6DC, $6DF..$6E4, $6E7, $6E8, $6EA..$6ED, $711, $730..$74A, $7A6..$7B0, $7EB..$7F3, \n        $7FD: result := ubcNonSpacingMark;\n        $58A, $58D, $58E, $606, $607, $60E, $60F, $6DE, $6E9, $7F6..$7F9: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $00800..$00BFF:\n      case u of\n        $904..$939, $93D, $950, $958..$961, $964..$980, $985..$98C, $98F, $990, $993..$9A8, $9AA..$9B0, \n        $9B2, $9B6..$9B9, $9BD, $9CE, $9DC, $9DD, $9DF..$9E1, $9E6..$9F1, $9F4..$9FA, $9FC, $9FD, \n        $A05..$A0A, $A0F, $A10, $A13..$A28, $A2A: result := ubcLeftToRight;\n        $A2B..$A30, $A32, $A33, $A35, $A36, $A38, $A39, $A59..$A5C, $A5E, $A66..$A6F, $A72..$A74, \n        $A76, $A85..$A8D, $A8F..$A91, $A93..$AA8, $AAA..$AB0, $AB2, $AB3, $AB5..$AB9, $ABD, $AD0, \n        $AE0, $AE1, $AE6..$AF0, $AF9, $B05..$B0C, $B0F: result := ubcLeftToRight;\n        $903, $93B, $93E..$940, $949..$94C, $94E, $94F, $982, $983, $9BE..$9C0, $9C7, $9C8, $9CB, \n        $9CC, $9D7, $A03, $A3E..$A40, $A83, $ABE..$AC0, $AC9, $ACB, $ACC, $B02, $B03, $B3E, $B40, \n        $B47, $B48, $B4B, $B4C, $B57: result := ubcCombiningLeftToRight;\n        $B10, $B13..$B28, $B2A..$B30, $B32, $B33, $B35..$B39, $B3D, $B5C, $B5D, $B5F..$B61, $B66..$B77, \n        $B83, $B85..$B8A, $B8E..$B90, $B92..$B95, $B99, $B9A, $B9C, $B9E, $B9F, $BA3, $BA4, $BA8..$BAA, \n        $BAE..$BB9, $BD0, $BE6..$BF2: result := ubcLeftToRight;\n        $800..$815, $81A, $824, $828, $830..$83E, $840..$858, $85E: result := ubcRightToLeft;\n        $860..$86A, $8A0..$8B4, $8B6..$8C7: result := ubcArabicLetter;\n        $BBE, $BBF, $BC1, $BC2, $BC6..$BC8, $BCA..$BCC, $BD7: result := ubcCombiningLeftToRight;\n        $9F2, $9F3, $9FB, $AF1, $BF9: result := ubcEuropeanNumberTerminator;\n        $8E2: result := ubcArabicNumber;\n        $816..$819, $81B..$823, $825..$827, $829..$82D, $859..$85B, $8D3..$8E1, $8E3..$902, $93A, \n        $93C, $941..$948, $94D, $951..$957, $962, $963, $981, $9BC, $9C1..$9C4, $9CD, $9E2, $9E3, \n        $9FE, $A01, $A02, $A3C, $A41: result := ubcNonSpacingMark;\n        $A42, $A47, $A48, $A4B..$A4D, $A51, $A70, $A71, $A75, $A81, $A82, $ABC, $AC1..$AC5, $AC7, \n        $AC8, $ACD, $AE2, $AE3, $AFA..$AFF, $B01, $B3C, $B3F, $B41..$B44, $B4D, $B55, $B56, $B62, \n        $B63, $B82, $BC0: result := ubcNonSpacingMark;\n        $BCD: result := ubcNonSpacingMark;\n        $BF3..$BF8, $BFA: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $00C00..$00FFF:\n      case u of\n        $C05..$C0C, $C0E..$C10, $C12..$C28, $C2A..$C39, $C3D, $C58..$C5A, $C60, $C61, $C66..$C6F, \n        $C77, $C7F, $C80, $C84..$C8C, $C8E..$C90, $C92..$CA8, $CAA..$CB3, $CB5..$CB9, $CBD, $CBF, \n        $CC6, $CDE, $CE0, $CE1, $CE6..$CEF, $CF1: result := ubcLeftToRight;\n        $CF2, $D04..$D0C, $D0E..$D10, $D12..$D3A, $D3D, $D4E, $D4F, $D54..$D56, $D58..$D61, $D66..$D7F, \n        $D85..$D96, $D9A..$DB1, $DB3..$DBB, $DBD, $DC0..$DC6, $DE6..$DEF, $DF4, $E01..$E30, $E32, \n        $E33, $E40..$E46, $E4F..$E5B, $E81, $E82, $E84: result := ubcLeftToRight;\n        $E86..$E8A, $E8C..$EA3, $EA5, $EA7..$EB0, $EB2, $EB3, $EBD, $EC0..$EC4, $EC6, $ED0..$ED9, \n        $EDC..$EDF, $F00..$F17, $F1A..$F34, $F36, $F38, $F40..$F47, $F49..$F6C, $F85, $F88..$F8C, \n        $FBE..$FC5, $FC7..$FCC, $FCE..$FDA: result := ubcLeftToRight;\n        $C01..$C03, $C41..$C44, $C82, $C83, $CBE, $CC0..$CC4, $CC7, $CC8, $CCA, $CCB, $CD5, $CD6, \n        $D02, $D03, $D3E..$D40, $D46..$D48, $D4A..$D4C, $D57, $D82, $D83, $DCF..$DD1, $DD8..$DDF, \n        $DF2, $DF3, $F3E, $F3F, $F7F: result := ubcCombiningLeftToRight;\n        $E3F: result := ubcEuropeanNumberTerminator;\n        $C00, $C04, $C3E..$C40, $C46..$C48, $C4A..$C4D, $C55, $C56, $C62, $C63, $C81, $CBC, $CCC, \n        $CCD, $CE2, $CE3, $D00, $D01, $D3B, $D3C, $D41..$D44, $D4D, $D62, $D63, $D81, $DCA, $DD2..$DD4, \n        $DD6, $E31, $E34: result := ubcNonSpacingMark;\n        $E35..$E3A, $E47..$E4E, $EB1, $EB4..$EBC, $EC8..$ECD, $F18, $F19, $F35, $F37, $F39, $F71..$F7E, \n        $F80..$F84, $F86, $F87, $F8D..$F97, $F99..$FBC, $FC6: result := ubcNonSpacingMark;\n        $C78..$C7E: result := ubcOtherNeutrals;\n        $F3A..$F3D: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    $01000..$017FF:\n      case u of\n        $1680: result := ubcWhiteSpace;\n        $1000..$102A, $103F..$1055, $105A..$105D, $1061, $1065, $1066, $106E..$1070, $1075..$1081, \n        $108E, $1090..$1099, $109E..$10C5, $10C7, $10CD, $10D0..$1248, $124A..$124D, $1250..$1256, \n        $1258, $125A..$125D, $1260..$1288, $128A..$128D, $1290..$12B0, $12B2..$12B5, $12B8: result := ubcLeftToRight;\n        $12B9..$12BE, $12C0, $12C2..$12C5, $12C8..$12D6, $12D8..$1310, $1312..$1315, $1318..$135A, \n        $1360..$137C, $1380..$138F, $13A0..$13F5, $13F8..$13FD, $1401..$167F, $1681..$169A, $16A0..$16F8, \n        $1700..$170C, $170E..$1711, $1720..$1731, $1735, $1736, $1740..$1751, $1760..$176C, $176E..$1770, \n        $1780: result := ubcLeftToRight;\n        $1781..$17B3, $17D4..$17DA, $17DC, $17E0..$17E9: result := ubcLeftToRight;\n        $102B, $102C, $1031, $1038, $103B, $103C, $1056, $1057, $1062..$1064, $1067..$106D, $1083, \n        $1084, $1087..$108C, $108F, $109A..$109C, $17B6, $17BE..$17C5, $17C7, $17C8: result := ubcCombiningLeftToRight;\n        $17DB: result := ubcEuropeanNumberTerminator;\n        $102D..$1030, $1032..$1037, $1039, $103A, $103D, $103E, $1058, $1059, $105E..$1060, $1071..$1074, \n        $1082, $1085, $1086, $108D, $109D, $135D..$135F, $1712..$1714, $1732..$1734, $1752, $1753, \n        $1772, $1773, $17B4, $17B5, $17B7..$17BD, $17C6, $17C9..$17D3, $17DD: result := ubcNonSpacingMark;\n        $1390..$1399, $1400, $17F0..$17F9: result := ubcOtherNeutrals;\n        $169B, $169C: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    $01800..$01FFF:\n      case u of\n        $180E: result := ubcBoundaryNeutral;\n        $1810..$1819, $1820..$1878, $1880..$1884, $1887..$18A8, $18AA, $18B0..$18F5, $1900..$191E, \n        $1946..$196D, $1970..$1974, $1980..$19AB, $19B0..$19C9, $19D0..$19DA, $1A00..$1A16, $1A1E..$1A54, \n        $1A80..$1A89, $1A90..$1A99, $1AA0..$1AAD, $1B05..$1B33, $1B45..$1B4B, $1B50..$1B6A, $1B74..$1B7C, \n        $1B83: result := ubcLeftToRight;\n        $1923..$1926, $1929..$192B, $1930, $1931, $1933..$1938, $1A19, $1A1A, $1A55, $1A57, $1A61, \n        $1A63, $1A64, $1A6D..$1A72, $1B04, $1B35, $1B3B, $1B3D..$1B41, $1B43, $1B44, $1B82, $1BA1, \n        $1BA6, $1BA7, $1BAA, $1BE7, $1BEA..$1BEC, $1BEE: result := ubcCombiningLeftToRight;\n        $1B84..$1BA0, $1BAE..$1BE5, $1BFC..$1C23, $1C3B..$1C49, $1C4D..$1C88, $1C90..$1CBA, $1CBD..$1CC7, \n        $1CD3, $1CE9..$1CEC, $1CEE..$1CF3, $1CF5, $1CF6, $1CFA, $1D00..$1DBF, $1E00..$1F15, $1F18..$1F1D, \n        $1F20..$1F45, $1F48..$1F4D, $1F50..$1F57, $1F59, $1F5B, $1F5D, $1F5F: result := ubcLeftToRight;\n        $1F60..$1F7D, $1F80..$1FB4, $1FB6..$1FBC, $1FBE, $1FC2..$1FC4, $1FC6..$1FCC, $1FD0..$1FD3, \n        $1FD6..$1FDB, $1FE0..$1FEC, $1FF2..$1FF4, $1FF6..$1FFC: result := ubcLeftToRight;\n        $1BF2, $1BF3, $1C24..$1C2B, $1C34, $1C35, $1CE1, $1CF7: result := ubcCombiningLeftToRight;\n        $180B..$180D, $1885, $1886, $18A9, $1920..$1922, $1927, $1928, $1932, $1939..$193B, $1A17, \n        $1A18, $1A1B, $1A56, $1A58..$1A5E, $1A60, $1A62, $1A65..$1A6C, $1A73..$1A7C, $1A7F, $1AB0..$1AC0, \n        $1B00..$1B03, $1B34, $1B36..$1B3A, $1B3C, $1B42: result := ubcNonSpacingMark;\n        $1B6B..$1B73, $1B80, $1B81, $1BA2..$1BA5, $1BA8, $1BA9, $1BAB..$1BAD, $1BE6, $1BE8, $1BE9, \n        $1BED, $1BEF..$1BF1, $1C2C..$1C33, $1C36, $1C37, $1CD0..$1CD2, $1CD4..$1CE0, $1CE2..$1CE8, \n        $1CED, $1CF4, $1CF8, $1CF9, $1DC0..$1DF9, $1DFB..$1DFF: result := ubcNonSpacingMark;\n        $1800..$180A, $1940, $1944, $1945, $19DE..$19FF, $1FBD, $1FBF..$1FC1, $1FCD..$1FCF, $1FDD..$1FDF, \n        $1FED..$1FEF, $1FFD, $1FFE: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $02000..$02FFF:\n      case u of\n        $200B..$200D, $2060..$2064, $206A..$206F: result := ubcBoundaryNeutral;\n        $2029: result := ubcParagraphSeparator;\n        $2000..$200A, $2028, $205F: result := ubcWhiteSpace;\n        $200E, $2071, $207F, $2090..$209C, $2102, $2107, $210A..$2113, $2115, $2119..$211D, $2124, \n        $2126, $2128, $212A..$212D, $212F..$2139, $213C..$213F, $2145..$2149, $214E, $214F, $2160..$2188, \n        $2336..$237A, $2395, $249C..$24E9, $26AC: result := ubcLeftToRight;\n        $2800..$28FF, $2C00..$2C2E, $2C30..$2C5E, $2C60..$2CE4, $2CEB..$2CEE, $2CF2, $2CF3, $2D00..$2D25, \n        $2D27, $2D2D, $2D30..$2D67, $2D6F, $2D70, $2D80..$2D96, $2DA0..$2DA6, $2DA8..$2DAE, $2DB0..$2DB6, \n        $2DB8..$2DBE, $2DC0..$2DC6, $2DC8..$2DCE, $2DD0..$2DD6, $2DD8..$2DDE: result := ubcLeftToRight;\n        $200F: result := ubcRightToLeft;\n        $2070, $2074..$2079, $2080..$2089, $2488..$249B: result := ubcEuropeanNumber;\n        $207A, $207B, $208A, $208B, $2212: result := ubcEuropeanNumberSeparator;\n        $2030..$2034, $20A0..$20BF, $212E, $2213: result := ubcEuropeanNumberTerminator;\n        $202F, $2044: result := ubcCommonSeparator;\n        $20D0..$20F0, $2CEF..$2CF1, $2D7F, $2DE0..$2DFF: result := ubcNonSpacingMark;\n        $2010..$2027, $2035..$2038, $203B..$2043, $2047..$205E, $207C, $208C, $2100, $2101, $2103..$2106, \n        $2108, $2109, $2114, $2116..$2118, $211E..$2123, $2125, $2127, $2129, $213A, $213B, $2141..$2144, \n        $214A..$214D, $2150..$215F, $2189..$218B, $2190..$2200, $2205: result := ubcOtherNeutrals;\n        $2039, $203A, $2045, $2046, $207D, $207E, $208D, $208E, $2140, $2201..$2204, $2208..$220D, \n        $2211, $2215, $2216, $221A..$221D, $221F..$2222, $2224, $2226, $222B..$2233, $2239, $223B..$224C, \n        $2252..$2255, $225F, $2260, $2262, $2264..$226B, $226E..$228C, $228F: result := ubcMirroredNeutral;\n        $2206, $2207, $220E..$2210, $2214, $2217..$2219, $221E, $2223, $2225, $2227..$222A, $2234..$2238, \n        $223A, $224D..$2251, $2256..$225E, $2261, $2263, $226C, $226D, $228D, $228E, $2293..$2297, \n        $2299..$22A1, $22A4, $22A5, $22B9..$22BD, $22C0..$22C8, $22CE: result := ubcOtherNeutrals;\n        $22CF, $22D2..$22D5, $22EE, $22EF, $2300..$2307, $230C..$231F, $2322..$2328, $232B..$2335, \n        $237B..$2394, $2396..$2426, $2440..$244A, $2460..$2487, $24EA..$26AB, $26AD..$2767, $2776..$27BF, \n        $27C1, $27C2, $27C7, $27CA, $27CE..$27D2, $27D7..$27DB, $27DF..$27E1, $27F0..$27FF, $2900: result := ubcOtherNeutrals;\n        $2290..$2292, $2298, $22A2, $22A3, $22A6..$22B8, $22BE, $22BF, $22C9..$22CD, $22D0, $22D1, \n        $22D6..$22ED, $22F0..$22FF, $2308..$230B, $2320, $2321, $2329, $232A, $2768..$2775, $27C0, \n        $27C3..$27C6, $27C8, $27C9, $27CB..$27CD, $27D3..$27D6, $27DC..$27DE, $27E2..$27EF, $2983..$2998, \n        $299B: result := ubcMirroredNeutral;\n        $2901..$2982, $2999, $299A, $29A1, $29B0..$29B7, $29B9..$29BF, $29C6..$29C8, $29CA..$29CD, \n        $29D3, $29D6, $29D7, $29DD..$29E0, $29E2, $29E6, $29E7, $29EA..$29F3, $29FA, $29FB, $29FE..$2A09, \n        $2A1D, $2A22, $2A23, $2A25, $2A27, $2A28, $2A2A, $2A2F..$2A33, $2A36: result := ubcOtherNeutrals;\n        $299C..$29A0, $29A2..$29AF, $29B8, $29C0..$29C5, $29C9, $29CE..$29D2, $29D4, $29D5, $29D8..$29DC, \n        $29E1, $29E3..$29E5, $29E8, $29E9, $29F4..$29F9, $29FC, $29FD, $2A0A..$2A1C, $2A1E..$2A21, \n        $2A24, $2A26, $2A29, $2A2B..$2A2E, $2A34, $2A35, $2A3C..$2A3E, $2A57: result := ubcMirroredNeutral;\n        $2A37..$2A3B, $2A3F..$2A56, $2A59..$2A63, $2A66..$2A69, $2A6E, $2A71, $2A72, $2A75..$2A78, \n        $2AA4, $2AA5, $2AAE, $2AD7..$2ADB, $2ADD, $2ADF..$2AE1, $2AE7..$2AEB, $2AEF..$2AF2, $2AF4..$2AF6, \n        $2AFC, $2AFE..$2B73, $2B76..$2B95, $2B97..$2BFD, $2BFF, $2CE5..$2CEA, $2CF9: result := ubcOtherNeutrals;\n        $2CFA..$2CFF, $2E00, $2E01, $2E06..$2E08, $2E0B, $2E0E..$2E1B, $2E1E, $2E1F, $2E2A..$2E52, \n        $2E80..$2E99, $2E9B..$2EF3, $2F00..$2FD5, $2FF0..$2FFB: result := ubcOtherNeutrals;\n        $2A58, $2A64, $2A65, $2A6A..$2A6D, $2A6F, $2A70, $2A73, $2A74, $2A79..$2AA3, $2AA6..$2AAD, \n        $2AAF..$2AD6, $2ADC, $2ADE, $2AE2..$2AE6, $2AEC..$2AEE, $2AF3, $2AF7..$2AFB, $2AFD, $2BFE, \n        $2E02..$2E05, $2E09, $2E0A, $2E0C, $2E0D, $2E1C, $2E1D, $2E20..$2E29: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    else\n      case u of\n        $3000: result := ubcWhiteSpace;\n        $3005..$3007, $3021..$3029, $3031..$3035, $3038..$303C, $3041..$3096, $309D..$309F, $30A1..$30FA, \n        $30FC..$30FF, $3105..$312F, $3131..$318E, $3190..$31BF, $31F0..$321C, $3220..$324F, $3260..$327B, \n        $327F..$32B0, $32C0..$32CB, $32D0..$3376, $337B..$33DD, $33E0..$33FE, $3400, $4DBF, $4E00: result := ubcLeftToRight;\n        $302E, $302F: result := ubcCombiningLeftToRight;\n        $302A..$302D, $3099, $309A: result := ubcNonSpacingMark;\n        $3001..$3004, $3012, $3013, $301C..$3020, $3030, $3036, $3037, $303D..$303F, $309B, $309C, \n        $30A0, $30FB, $31C0..$31E3, $321D, $321E, $3250..$325F, $327C..$327E, $32B1..$32BF, $32CC..$32CF, \n        $3377..$337A, $33DE, $33DF, $33FF, $4DC0..$4DFF: result := ubcOtherNeutrals;\n        $3008..$3011, $3014..$301B: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    end;\n  $08000..$0BFFF:\n      case u of\n        $9FFC, $A000..$A48C, $A4D0..$A60C, $A610..$A62B, $A640..$A66E, $A680..$A69D, $A6A0..$A6EF, \n        $A6F2..$A6F7, $A722..$A787, $A789..$A7BF, $A7C2..$A7CA, $A7F5..$A801, $A803..$A805, $A807..$A80A, \n        $A80C..$A822, $A830..$A837, $A840..$A873, $A882..$A8B3, $A8CE..$A8D9, $A8F2..$A8FE, $A900..$A925, \n        $A92E: result := ubcLeftToRight;\n        $A92F..$A946, $A95F..$A97C, $A984..$A9B2, $A9C1..$A9CD, $A9CF..$A9D9, $A9DE..$A9E4, $A9E6..$A9FE, \n        $AA00..$AA28, $AA40..$AA42, $AA44..$AA4B, $AA50..$AA59, $AA5C..$AA7A, $AA7E..$AAAF, $AAB1, \n        $AAB5, $AAB6, $AAB9..$AABD, $AAC0, $AAC2, $AADB..$AAEA, $AAF0..$AAF4, $AB01..$AB06, $AB09: result := ubcLeftToRight;\n        $AB0A..$AB0E, $AB11..$AB16, $AB20..$AB26, $AB28..$AB2E, $AB30..$AB69, $AB70..$ABE2, $ABEB, \n        $ABF0..$ABF9, $AC00: result := ubcLeftToRight;\n        $A823, $A824, $A827, $A880, $A881, $A8B4..$A8C3, $A952, $A953, $A983, $A9B4, $A9B5, $A9BA, \n        $A9BB, $A9BE..$A9C0, $AA2F, $AA30, $AA33, $AA34, $AA4D, $AA7B, $AA7D, $AAEB, $AAEE, $AAEF, \n        $AAF5, $ABE3, $ABE4, $ABE6, $ABE7, $ABE9, $ABEA, $ABEC: result := ubcCombiningLeftToRight;\n        $A838, $A839: result := ubcEuropeanNumberTerminator;\n        $A66F..$A672, $A674..$A67D, $A69E, $A69F, $A6F0, $A6F1, $A802, $A806, $A80B, $A825, $A826, \n        $A82C, $A8C4, $A8C5, $A8E0..$A8F1, $A8FF, $A926..$A92D, $A947..$A951, $A980..$A982, $A9B3, \n        $A9B6..$A9B9, $A9BC, $A9BD, $A9E5, $AA29..$AA2E, $AA31, $AA32, $AA35: result := ubcNonSpacingMark;\n        $AA36, $AA43, $AA4C, $AA7C, $AAB0, $AAB2..$AAB4, $AAB7, $AAB8, $AABE, $AABF, $AAC1, $AAEC, \n        $AAED, $AAF6, $ABE5, $ABE8, $ABED: result := ubcNonSpacingMark;\n        $A490..$A4C6, $A60D..$A60F, $A673, $A67E, $A67F, $A700..$A721, $A788, $A828..$A82B, $A874..$A877, \n        $AB6A, $AB6B: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n  $0C000..$0FFFF:\n      case u of\n        $FEFF: result := ubcBoundaryNeutral;\n        $D7A3, $D7B0..$D7C6, $D7CB..$D7FB, $D800, $DB7F, $DB80, $DBFF, $DC00, $DFFF, $E000, $F8FF..$FA6D, \n        $FA70..$FAD9, $FB00..$FB06, $FB13..$FB17, $FF21..$FF3A, $FF41..$FF5A, $FF66..$FFBE, $FFC2..$FFC7, \n        $FFCA..$FFCF, $FFD2..$FFD7, $FFDA..$FFDC: result := ubcLeftToRight;\n        $FB1D, $FB1F..$FB28, $FB2A..$FB36, $FB38..$FB3C, $FB3E, $FB40, $FB41, $FB43, $FB44, $FB46..$FB4F: result := ubcRightToLeft;\n        $FB50..$FBC1, $FBD3..$FD3D, $FD50..$FD8F, $FD92..$FDC7, $FDF0..$FDFC, $FE70..$FE74, $FE76..$FEFC: result := ubcArabicLetter;\n        $FF10..$FF19: result := ubcEuropeanNumber;\n        $FB29, $FE62, $FE63, $FF0B, $FF0D: result := ubcEuropeanNumberSeparator;\n        $FE5F, $FE69, $FE6A, $FF03..$FF05, $FFE0, $FFE1, $FFE5, $FFE6: result := ubcEuropeanNumberTerminator;\n        $FE50, $FE52, $FE55, $FF0C, $FF0E, $FF0F, $FF1A: result := ubcCommonSeparator;\n        $FB1E, $FE00..$FE0F, $FE20..$FE2F: result := ubcNonSpacingMark;\n        $FD3E, $FD3F, $FDFD, $FE10..$FE19, $FE30..$FE4F, $FE51, $FE54, $FE56..$FE58, $FE60, $FE61, \n        $FE66, $FE68, $FE6B, $FF01, $FF02, $FF06, $FF07, $FF0A, $FF1B, $FF1D, $FF1F, $FF20, $FF3C, \n        $FF3E..$FF40, $FF5C, $FF5E, $FF61: result := ubcOtherNeutrals;\n        $FF64, $FF65, $FFE2..$FFE4, $FFE8..$FFEE, $FFF9..$FFFD: result := ubcOtherNeutrals;\n        $FE59..$FE5E, $FE64, $FE65, $FF08, $FF09, $FF1C, $FF1E, $FF3B, $FF3D, $FF5B, $FF5D, $FF5F, \n        $FF60, $FF62, $FF63: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n  else\n    case u of\n    $10000..$107FF:\n      case u of\n        $10000..$1000B, $1000D..$10026, $10028..$1003A, $1003C, $1003D, $1003F..$1004D, $10050..$1005D, \n        $10080..$100FA, $10100, $10102, $10107..$10133, $10137..$1013F, $1018D, $1018E, $101D0..$101FC, \n        $10280..$1029C, $102A0..$102D0, $10300..$10323, $1032D..$1034A, $10350..$10375, $10380..$1039D, \n        $1039F..$103C3, $103C8..$103D5, $10400: result := ubcLeftToRight;\n        $10401..$1049D, $104A0..$104A9, $104B0..$104D3, $104D8..$104FB, $10500..$10527, $10530..$10563, \n        $1056F, $10600..$10736, $10740..$10755, $10760..$10767: result := ubcLeftToRight;\n        $102E1..$102FB: result := ubcEuropeanNumber;\n        $101FD, $102E0, $10376..$1037A: result := ubcNonSpacingMark;\n        $10101, $10140..$1018C, $10190..$1019C, $101A0: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $10800..$10FFF:\n      case u of\n        $10800..$10805, $10808, $1080A..$10835, $10837, $10838, $1083C, $1083F..$10855, $10857..$1089E, \n        $108A7..$108AF, $108E0..$108F2, $108F4, $108F5, $108FB..$1091B, $10920..$10939, $1093F, \n        $10980..$109B7, $109BC..$109CF, $109D2..$10A00, $10A10..$10A13, $10A15..$10A17, $10A19..$10A35, \n        $10A40..$10A48, $10A50..$10A58, $10A60: result := ubcRightToLeft;\n        $10A61..$10A9F, $10AC0..$10AE4, $10AEB..$10AF6, $10B00..$10B35, $10B40..$10B55, $10B58..$10B72, \n        $10B78..$10B91, $10B99..$10B9C, $10BA9..$10BAF, $10C00..$10C48, $10C80..$10CB2, $10CC0..$10CF2, \n        $10CFA..$10CFF, $10E80..$10EA9, $10EAD, $10EB0, $10EB1, $10F00..$10F27, $10FB0..$10FCB, \n        $10FE0..$10FF6: result := ubcRightToLeft;\n        $10D00..$10D23, $10F30..$10F45, $10F51..$10F59: result := ubcArabicLetter;\n        $10D30..$10D39, $10E60..$10E7E: result := ubcArabicNumber;\n        $10A01..$10A03, $10A05, $10A06, $10A0C..$10A0F, $10A38..$10A3A, $10A3F, $10AE5, $10AE6, \n        $10D24..$10D27, $10EAB, $10EAC, $10F46..$10F50: result := ubcNonSpacingMark;\n        $1091F, $10B39..$10B3F: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $11000..$117FF:\n      case u of\n        $11003..$11037, $11047..$1104D, $11066..$1106F, $11083..$110AF, $110BB..$110C1, $110CD, \n        $110D0..$110E8, $110F0..$110F9, $11103..$11126, $11136..$11144, $11147, $11150..$11172, \n        $11174..$11176, $11183..$111B2, $111C1..$111C8, $111CD, $111D0..$111DF, $111E1..$111F4, \n        $11200..$11211, $11213..$1122B, $11238..$1123D, $11280: result := ubcLeftToRight;\n        $11000, $11002, $11082, $110B0..$110B2, $110B7, $110B8, $1112C, $11145, $11146, $11182, \n        $111B3..$111B5, $111BF, $111C0, $111CE, $1122C..$1122E, $11232, $11233, $11235, $112E0..$112E2, \n        $11302, $11303, $1133E, $1133F, $11341..$11344, $11347, $11348, $1134B..$1134D, $11357, \n        $11362: result := ubcCombiningLeftToRight;\n        $11281..$11286, $11288, $1128A..$1128D, $1128F..$1129D, $1129F..$112A9, $112B0..$112DE, \n        $112F0..$112F9, $11305..$1130C, $1130F, $11310, $11313..$11328, $1132A..$11330, $11332, \n        $11333, $11335..$11339, $1133D, $11350, $1135D..$11361, $11400..$11434, $11447..$1145B, \n        $1145D, $1145F..$11461, $11480..$114AF, $114C4: result := ubcLeftToRight;\n        $114C5..$114C7, $114D0..$114D9, $11580..$115AE, $115C1..$115DB, $11600..$1162F, $11641..$11644, \n        $11650..$11659, $11680..$116AA, $116B8, $116C0..$116C9, $11700..$1171A, $11730..$1173F: result := ubcLeftToRight;\n        $11363, $11435..$11437, $11440, $11441, $11445, $114B0..$114B2, $114B9, $114BB..$114BE, \n        $114C1, $115AF..$115B1, $115B8..$115BB, $115BE, $11630..$11632, $1163B, $1163C, $1163E, \n        $116AC, $116AE, $116AF, $116B6, $11720, $11721, $11726: result := ubcCombiningLeftToRight;\n        $11001, $11038..$11046, $1107F..$11081, $110B3..$110B6, $110B9, $110BA, $11100..$11102, \n        $11127..$1112B, $1112D..$11134, $11173, $11180, $11181, $111B6..$111BE, $111C9..$111CC, \n        $111CF, $1122F..$11231, $11234, $11236, $11237, $1123E, $112DF, $112E3..$112EA, $11300, \n        $11301, $1133B, $1133C, $11340: result := ubcNonSpacingMark;\n        $11366..$1136C, $11370..$11374, $11438..$1143F, $11442..$11444, $11446, $1145E, $114B3..$114B8, \n        $114BA, $114BF, $114C0, $114C2, $114C3, $115B2..$115B5, $115BC, $115BD, $115BF, $115C0, \n        $115DC, $115DD, $11633..$1163A, $1163D, $1163F, $11640, $116AB, $116AD, $116B0..$116B5, \n        $116B7, $1171D: result := ubcNonSpacingMark;\n        $1171E, $1171F, $11722..$11725, $11727..$1172B: result := ubcNonSpacingMark;\n        $11052..$11065, $11660..$1166C: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $11800..$17FFF:\n      case u of\n        $11800..$1182B, $1183B, $118A0..$118F2, $118FF..$11906, $11909, $1190C..$11913, $11915, \n        $11916, $11918..$1192F, $1193F, $11941, $11944..$11946, $11950..$11959, $119A0..$119A7, \n        $119AA..$119D0, $119E1..$119E3, $11A00, $11A07, $11A08, $11A0B..$11A32, $11A3A, $11A3F..$11A46, \n        $11A50, $11A5C: result := ubcLeftToRight;\n        $1182C..$1182E, $11838, $11930..$11935, $11937, $11938, $1193D, $11940, $11942, $119D1..$119D3, \n        $119DC..$119DF, $119E4, $11A39, $11A57, $11A58, $11A97, $11C2F, $11C3E, $11CA9, $11CB1, \n        $11CB4, $11D8A..$11D8E, $11D93, $11D94, $11D96, $11EF5: result := ubcCombiningLeftToRight;\n        $11A5D..$11A89, $11A9A..$11AA2, $11AC0..$11AF8, $11C00..$11C08, $11C0A..$11C2E, $11C3F..$11C45, \n        $11C50..$11C6C, $11C70..$11C8F, $11D00..$11D06, $11D08, $11D09, $11D0B..$11D30, $11D46, \n        $11D50..$11D59, $11D60..$11D65, $11D67, $11D68, $11D6A..$11D89, $11D98, $11DA0..$11DA9, \n        $11EE0..$11EF2, $11EF7, $11EF8, $11FB0, $11FC0: result := ubcLeftToRight;\n        $11FC1..$11FD4, $11FFF..$12399, $12400..$1246E, $12470..$12474, $12480..$12543, $13000..$1342E, \n        $13430..$13438, $14400..$14646, $16800..$16A38, $16A40..$16A5E, $16A60..$16A69, $16A6E, \n        $16A6F, $16AD0..$16AED, $16AF5, $16B00..$16B2F, $16B37..$16B45, $16B50..$16B59, $16B5B..$16B61, \n        $16B63..$16B77, $16B7D..$16B8F, $16E40..$16E9A, $16F00: result := ubcLeftToRight;\n        $16F01..$16F4A, $16F50, $16F93..$16F9F, $16FE0, $16FE1, $16FE3, $17000: result := ubcLeftToRight;\n        $11EF6, $16F51..$16F87, $16FF0, $16FF1: result := ubcCombiningLeftToRight;\n        $11FDD..$11FE0: result := ubcEuropeanNumberTerminator;\n        $1182F..$11837, $11839, $1183A, $1193B, $1193C, $1193E, $11943, $119D4..$119D7, $119DA, \n        $119DB, $119E0, $11A01..$11A06, $11A09, $11A0A, $11A33..$11A38, $11A3B..$11A3E, $11A47, \n        $11A51..$11A56, $11A59..$11A5B, $11A8A..$11A96, $11A98, $11A99, $11C30..$11C36, $11C38..$11C3D, \n        $11C92..$11CA7, $11CAA..$11CB0, $11CB2: result := ubcNonSpacingMark;\n        $11CB3, $11CB5, $11CB6, $11D31..$11D36, $11D3A, $11D3C, $11D3D, $11D3F..$11D45, $11D47, \n        $11D90, $11D91, $11D95, $11D97, $11EF3, $11EF4, $16AF0..$16AF4, $16B30..$16B36, $16F4F, \n        $16F8F..$16F92, $16FE4: result := ubcNonSpacingMark;\n        $11FD5..$11FDC, $11FE1..$11FF1, $16FE2: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    $18000..$1DFFF:\n      case u of\n        $1BCA0..$1BCA3, $1D173..$1D17A: result := ubcBoundaryNeutral;\n        $187F7, $18800..$18CD5, $18D00, $18D08, $1B000..$1B11E, $1B150..$1B152, $1B164..$1B167, \n        $1B170..$1B2FB, $1BC00..$1BC6A, $1BC70..$1BC7C, $1BC80..$1BC88, $1BC90..$1BC99, $1BC9C, \n        $1BC9F, $1D000..$1D0F5, $1D100..$1D126, $1D129..$1D164, $1D16A..$1D16C, $1D183, $1D184, \n        $1D18C..$1D1A9, $1D1AE..$1D1E8, $1D2E0: result := ubcLeftToRight;\n        $1D2E1..$1D2F3, $1D360..$1D378, $1D400..$1D454, $1D456..$1D49C, $1D49E, $1D49F, $1D4A2, \n        $1D4A5, $1D4A6, $1D4A9..$1D4AC, $1D4AE..$1D4B9, $1D4BB, $1D4BD..$1D4C3, $1D4C5..$1D505, \n        $1D507..$1D50A, $1D50D..$1D514, $1D516..$1D51C, $1D51E..$1D539, $1D53B..$1D53E, $1D540..$1D544, \n        $1D546, $1D54A..$1D550, $1D552..$1D6A5, $1D6A8: result := ubcLeftToRight;\n        $1D6A9..$1D6DA, $1D6DC..$1D714, $1D716..$1D74E, $1D750..$1D788, $1D78A..$1D7C2, $1D7C4..$1D7CB, \n        $1D800..$1D9FF, $1DA37..$1DA3A, $1DA6D..$1DA74, $1DA76..$1DA83, $1DA85..$1DA8B: result := ubcLeftToRight;\n        $1D165, $1D166, $1D16D..$1D172: result := ubcCombiningLeftToRight;\n        $1D7CE..$1D7FF: result := ubcEuropeanNumber;\n        $1BC9D, $1BC9E, $1D167..$1D169, $1D17B..$1D182, $1D185..$1D18B, $1D1AA..$1D1AD, $1D242..$1D244, \n        $1DA00..$1DA36, $1DA3B..$1DA6C, $1DA75, $1DA84, $1DA9B..$1DA9F, $1DAA1..$1DAAF: result := ubcNonSpacingMark;\n        $1D200..$1D241, $1D245, $1D300..$1D356: result := ubcOtherNeutrals;\n        $1D6DB, $1D715, $1D74F, $1D789, $1D7C3: result := ubcMirroredNeutral;\n      else result := ubcUnknown;\n      end;\n    $1E000..$FFFFF:\n      case u of\n        $E0001, $E0020..$E007F: result := ubcBoundaryNeutral;\n        $1EC71..$1ECB4, $1ED01..$1ED3D, $1EE00..$1EE03, $1EE05..$1EE1F, $1EE21, $1EE22, $1EE24, \n        $1EE27, $1EE29..$1EE32, $1EE34..$1EE37, $1EE39, $1EE3B, $1EE42, $1EE47, $1EE49, $1EE4B, \n        $1EE4D..$1EE4F, $1EE51, $1EE52, $1EE54, $1EE57, $1EE59, $1EE5B, $1EE5D: result := ubcArabicLetter;\n        $1E100..$1E12C, $1E137..$1E13D, $1E140..$1E149, $1E14E, $1E14F, $1E2C0..$1E2EB, $1E2F0..$1E2F9, \n        $1F110..$1F12E, $1F130..$1F169, $1F170..$1F1AC, $1F1E6..$1F202, $1F210..$1F23B, $1F240..$1F248, \n        $1F250, $1F251, $20000, $2A6DD, $2A700, $2B734, $2B740, $2B81D, $2B820, $2CEA1, $2CEB0: result := ubcLeftToRight;\n        $2EBE0, $2F800..$2FA1D, $30000, $3134A, $F0000, $FFFFD: result := ubcLeftToRight;\n        $1E800..$1E8C4, $1E8C7..$1E8CF, $1E900..$1E943, $1E94B, $1E950..$1E959, $1E95E, $1E95F: result := ubcRightToLeft;\n        $1EE5F, $1EE61, $1EE62, $1EE64, $1EE67..$1EE6A, $1EE6C..$1EE72, $1EE74..$1EE77, $1EE79..$1EE7C, \n        $1EE7E, $1EE80..$1EE89, $1EE8B..$1EE9B, $1EEA1..$1EEA3, $1EEA5..$1EEA9, $1EEAB..$1EEBB: result := ubcArabicLetter;\n        $1F100..$1F10A, $1FBF0..$1FBF9: result := ubcEuropeanNumber;\n        $1E2FF: result := ubcEuropeanNumberTerminator;\n        $1E000..$1E006, $1E008..$1E018, $1E01B..$1E021, $1E023, $1E024, $1E026..$1E02A, $1E130..$1E136, \n        $1E2EC..$1E2EF, $1E8D0..$1E8D6, $1E944..$1E94A, $E0100..$E01EF: result := ubcNonSpacingMark;\n        $1EEF0, $1EEF1, $1F000..$1F02B, $1F030..$1F093, $1F0A0..$1F0AE, $1F0B1..$1F0BF, $1F0C1..$1F0CF, \n        $1F0D1..$1F0F5, $1F10B..$1F10F, $1F12F, $1F16A..$1F16F, $1F1AD, $1F260..$1F265, $1F300..$1F6D7, \n        $1F6E0..$1F6EC, $1F6F0..$1F6FC, $1F700..$1F773, $1F780..$1F7D8, $1F7E0..$1F7EB, $1F800..$1F80B, \n        $1F810..$1F847, $1F850..$1F859, $1F860: result := ubcOtherNeutrals;\n        $1F861..$1F887, $1F890..$1F8AD, $1F8B0, $1F8B1, $1F900..$1F978, $1F97A..$1F9CB, $1F9CD..$1FA53, \n        $1FA60..$1FA6D, $1FA70..$1FA74, $1FA78..$1FA7A, $1FA80..$1FA86, $1FA90..$1FAA8, $1FAB0..$1FAB6, \n        $1FAC0..$1FAC2, $1FAD0..$1FAD6, $1FB00..$1FB92, $1FB94..$1FBCA: result := ubcOtherNeutrals;\n      else result := ubcUnknown;\n      end;\n    else result := ubcUnknown;\n    end\n  end\nend;\n\nfunction GetUnicodeBracketInfo(u: LongWord): TUnicodeBracketInfo;\n  procedure Bracket(AOpening,AClosing: LongWord);\n  begin\n    result.IsBracket := true;\n    result.OpeningBracket := AOpening;\n    result.ClosingBracket := AClosing;\n  end;\nbegin\n  case u of\n  $0028, $0029: Bracket($0028, $0029);\n  $005B, $005D: Bracket($005B, $005D);\n  $007B, $007D: Bracket($007B, $007D);\n  $0F3A, $0F3B: Bracket($0F3A, $0F3B);\n  $0F3C, $0F3D: Bracket($0F3C, $0F3D);\n  $169B, $169C: Bracket($169B, $169C);\n  $2045, $2046: Bracket($2045, $2046);\n  $207D, $207E: Bracket($207D, $207E);\n  $208D, $208E: Bracket($208D, $208E);\n  $2308, $2309: Bracket($2308, $2309);\n  $230A, $230B: Bracket($230A, $230B);\n  $2329, $232A: Bracket($2329, $232A);\n  $2768, $2769: Bracket($2768, $2769);\n  $276A, $276B: Bracket($276A, $276B);\n  $276C, $276D: Bracket($276C, $276D);\n  $276E, $276F: Bracket($276E, $276F);\n  $2770, $2771: Bracket($2770, $2771);\n  $2772, $2773: Bracket($2772, $2773);\n  $2774, $2775: Bracket($2774, $2775);\n  $27C5, $27C6: Bracket($27C5, $27C6);\n  $27E6, $27E7: Bracket($27E6, $27E7);\n  $27E8, $27E9: Bracket($27E8, $27E9);\n  $27EA, $27EB: Bracket($27EA, $27EB);\n  $27EC, $27ED: Bracket($27EC, $27ED);\n  $27EE, $27EF: Bracket($27EE, $27EF);\n  $2983, $2984: Bracket($2983, $2984);\n  $2985, $2986: Bracket($2985, $2986);\n  $2987, $2988: Bracket($2987, $2988);\n  $2989, $298A: Bracket($2989, $298A);\n  $298B, $298C: Bracket($298B, $298C);\n  $298D, $2990: Bracket($298D, $2990);\n  $298F, $298E: Bracket($298F, $298E);\n  $2991, $2992: Bracket($2991, $2992);\n  $2993, $2994: Bracket($2993, $2994);\n  $2995, $2996: Bracket($2995, $2996);\n  $2997, $2998: Bracket($2997, $2998);\n  $29D8, $29D9: Bracket($29D8, $29D9);\n  $29DA, $29DB: Bracket($29DA, $29DB);\n  $29FC, $29FD: Bracket($29FC, $29FD);\n  $2E22, $2E23: Bracket($2E22, $2E23);\n  $2E24, $2E25: Bracket($2E24, $2E25);\n  $2E26, $2E27: Bracket($2E26, $2E27);\n  $2E28, $2E29: Bracket($2E28, $2E29);\n  $3008, $3009: Bracket($3008, $3009);\n  $300A, $300B: Bracket($300A, $300B);\n  $300C, $300D: Bracket($300C, $300D);\n  $300E, $300F: Bracket($300E, $300F);\n  $3010, $3011: Bracket($3010, $3011);\n  $3014, $3015: Bracket($3014, $3015);\n  $3016, $3017: Bracket($3016, $3017);\n  $3018, $3019: Bracket($3018, $3019);\n  $301A, $301B: Bracket($301A, $301B);\n  $FE59, $FE5A: Bracket($FE59, $FE5A);\n  $FE5B, $FE5C: Bracket($FE5B, $FE5C);\n  $FE5D, $FE5E: Bracket($FE5D, $FE5E);\n  $FF08, $FF09: Bracket($FF08, $FF09);\n  $FF3B, $FF3D: Bracket($FF3B, $FF3D);\n  $FF5B, $FF5D: Bracket($FF5B, $FF5D);\n  $FF5F, $FF60: Bracket($FF5F, $FF60);\n  $FF62, $FF63: Bracket($FF62, $FF63);\n  else\n    begin\n      result.IsBracket := false;\n      result.OpeningBracket := 0;\n      result.ClosingBracket := 0;\n    end;\n  end;\nend;\n\nfunction GetUnicodeJoiningType(u: LongWord): TUnicodeJoiningType;\nbegin\n  result := ujtNonJoining;\n  if u <= $001BE8 then begin\n    if u <= $0009CD then begin\n      if u <= $00072C then begin\n        if u <= $00069A then\n          case u of\n            $AD, $300..$36F, $483..$489, $591..$5BD, $5BF, $5C1, $5C2, $5C4, $5C5, $5C7, $610..$61A, \n            $61C, $64B..$65F, $670: result := ujtTransparent;\n            $622..$625, $627, $629, $62F..$632, $648, $671..$673, $675..$677, $688..$699: result := ujtRightJoining;\n            $620, $626, $628, $62A..$62E, $633..$63F, $641..$647, $649, $64A, $66E, $66F, $678..$687, \n            $69A: result := ujtDualJoining;\n            $640: result := ujtJoinCausing;\n          end\n        else\n          case u of\n            $6D6..$6DC, $6DF..$6E4, $6E7, $6E8, $6EA..$6ED, $70F, $711: result := ujtTransparent;\n            $6C0, $6C3..$6CB, $6CD, $6CF, $6D2, $6D3, $6D5, $6EE, $6EF, $710, $715..$719, $71E, \n            $728, $72A, $72C: result := ujtRightJoining;\n            $69B..$6BF, $6C1, $6C2, $6CC, $6CE, $6D0, $6D1, $6FA..$6FC, $6FF, $712..$714, $71A..$71D, \n            $71F..$727, $729, $72B: result := ujtDualJoining;\n          end\n      end else begin\n        if u <= $00084A then\n          case u of\n            $730..$74A, $7A6..$7B0, $7EB..$7F3, $7FD, $816..$819, $81B..$823, $825..$827, $829..$82D: result := ujtTransparent;\n            $72F, $74D, $759..$75B, $76B, $76C, $771, $773, $774, $778, $779, $840, $846, $847, \n            $849: result := ujtRightJoining;\n            $72D, $72E, $74E..$758, $75C..$76A, $76D..$770, $772, $775..$777, $77A..$77F, $7CA..$7EA, \n            $841..$845, $848, $84A: result := ujtDualJoining;\n            $7FA: result := ujtJoinCausing;\n          end\n        else\n          case u of\n            $859..$85B, $8D3..$8E1, $8E3..$902, $93A, $93C, $941..$948, $94D, $951..$957, $962, \n            $963, $981, $9BC, $9C1..$9C4, $9CD: result := ujtTransparent;\n            $854, $856..$858, $867, $869, $86A, $8AA..$8AC, $8AE, $8B1, $8B2, $8B9: result := ujtRightJoining;\n            $84B..$853, $855, $860, $862..$865, $868, $8A0..$8A9, $8AF, $8B0, $8B3, $8B4, $8B6..$8B8, \n            $8BA..$8C7: result := ujtDualJoining;\n          end\n      end\n    end else begin\n      if u <= $000F71 then begin\n        if u <= $000C3E then\n          case u of\n            $9E2, $9E3, $9FE, $A01, $A02, $A3C, $A41, $A42, $A47, $A48, $A4B..$A4D, $A51, $A70, \n            $A71, $A75, $A81, $A82, $ABC, $AC1..$AC5, $AC7, $AC8, $ACD, $AE2, $AE3, $AFA..$AFF, \n            $B01, $B3C, $B3F, $B41..$B44, $B4D, $B55, $B56, $B62, $B63, $B82, $BC0, $BCD, $C00, \n            $C04, $C3E: result := ujtTransparent;\n          end\n        else\n          case u of\n            $C3F, $C40, $C46..$C48, $C4A..$C4D, $C55, $C56, $C62, $C63, $C81, $CBC, $CBF, $CC6, \n            $CCC, $CCD, $CE2, $CE3, $D00, $D01, $D3B, $D3C, $D41..$D44, $D4D, $D62, $D63, $D81, \n            $DCA, $DD2..$DD4, $DD6, $E31, $E34..$E3A, $E47..$E4E, $EB1, $EB4..$EBC, $EC8..$ECD, \n            $F18, $F19, $F35, $F37, $F39, $F71: result := ujtTransparent;\n          end\n      end else begin\n        if u <= $001820 then\n          case u of\n            $F72..$F7E, $F80..$F84, $F86, $F87, $F8D..$F97, $F99..$FBC, $FC6, $102D..$1030, $1032..$1037, \n            $1039, $103A, $103D, $103E, $1058, $1059, $105E..$1060, $1071..$1074, $1082, $1085, \n            $1086, $108D, $109D, $135D..$135F, $1712..$1714, $1732..$1734, $1752, $1753, $1772, \n            $1773, $17B4, $17B5, $17B7..$17BD, $17C6, $17C9..$17D3, $17DD, $180B..$180D: result := ujtTransparent;\n            $1807, $1820: result := ujtDualJoining;\n            $180A: result := ujtJoinCausing;\n          end\n        else\n          case u of\n            $1885, $1886, $18A9, $1920..$1922, $1927, $1928, $1932, $1939..$193B, $1A17, $1A18, \n            $1A1B, $1A56, $1A58..$1A5E, $1A60, $1A62, $1A65..$1A6C, $1A73..$1A7C, $1A7F, $1AB0..$1AC0, \n            $1B00..$1B03, $1B34, $1B36..$1B3A, $1B3C, $1B42, $1B6B..$1B73, $1B80, $1B81, $1BA2..$1BA5, \n            $1BA8, $1BA9, $1BAB..$1BAD, $1BE6, $1BE8: result := ujtTransparent;\n            $1821..$1878, $1887..$18A8, $18AA: result := ujtDualJoining;\n          end\n      end\n    end\n  end else begin\n    if u <= $010FB8 then begin\n      if u <= $00ABE8 then begin\n        if u <= $00A806 then\n          case u of\n            $1BE9, $1BED, $1BEF..$1BF1, $1C2C..$1C33, $1C36, $1C37, $1CD0..$1CD2, $1CD4..$1CE0, \n            $1CE2..$1CE8, $1CED, $1CF4, $1CF8, $1CF9, $1DC0..$1DF9, $1DFB..$1DFF, $200B, $200E, \n            $200F, $202A..$202E, $2060..$2064, $206A..$206F, $20D0..$20F0, $2CEF..$2CF1, $2D7F, \n            $2DE0..$2DFF, $302A..$302D, $3099, $309A, $A66F..$A672, $A674..$A67D, $A69E, $A69F, \n            $A6F0, $A6F1, $A802, $A806: result := ujtTransparent;\n            $200D: result := ujtJoinCausing;\n          end\n        else\n          case u of\n            $A80B, $A825, $A826, $A82C, $A8C4, $A8C5, $A8E0..$A8F1, $A8FF, $A926..$A92D, $A947..$A951, \n            $A980..$A982, $A9B3, $A9B6..$A9B9, $A9BC, $A9BD, $A9E5, $AA29..$AA2E, $AA31, $AA32, \n            $AA35, $AA36, $AA43, $AA4C, $AA7C, $AAB0, $AAB2..$AAB4, $AAB7, $AAB8, $AABE, $AABF, \n            $AAC1, $AAEC, $AAED, $AAF6, $ABE5, $ABE8: result := ujtTransparent;\n            $A872: result := ujtLeftJoining;\n            $A840..$A871: result := ujtDualJoining;\n          end\n      end else begin\n        if u <= $010AEF then\n          case u of\n            $ABED, $FB1E, $FE00..$FE0F, $FE20..$FE2F, $FEFF, $FFF9..$FFFB, $101FD, $102E0, $10376..$1037A, \n            $10A01..$10A03, $10A05, $10A06, $10A0C..$10A0F, $10A38..$10A3A, $10A3F, $10AE5, $10AE6: result := ujtTransparent;\n            $10AC5, $10AC7, $10AC9, $10ACA, $10ACE..$10AD2, $10ADD, $10AE1, $10AE4, $10AEF: result := ujtRightJoining;\n            $10ACD, $10AD7: result := ujtLeftJoining;\n            $10AC0..$10AC4, $10AD3..$10AD6, $10AD8..$10ADC, $10ADE..$10AE0, $10AEB..$10AEE: result := ujtDualJoining;\n          end\n        else\n          case u of\n            $10D24..$10D27, $10EAB, $10EAC, $10F46..$10F50: result := ujtTransparent;\n            $10B81, $10B83..$10B85, $10B89, $10B8C, $10B8E, $10B8F, $10B91, $10BA9..$10BAC, $10D22, \n            $10F33, $10F54, $10FB4..$10FB6: result := ujtRightJoining;\n            $10D00: result := ujtLeftJoining;\n            $10B80, $10B82, $10B86..$10B88, $10B8A, $10B8B, $10B8D, $10B90, $10BAD, $10BAE, $10D01..$10D21, \n            $10D23, $10F30..$10F32, $10F34..$10F44, $10F51..$10F53, $10FB0, $10FB2, $10FB3, $10FB8: result := ujtDualJoining;\n          end\n      end\n    end else begin\n      if u <= $01193E then begin\n        if u <= $011300 then\n          case u of\n            $11001, $11038..$11046, $1107F..$11081, $110B3..$110B6, $110B9, $110BA, $11100..$11102, \n            $11127..$1112B, $1112D..$11134, $11173, $11180, $11181, $111B6..$111BE, $111C9..$111CC, \n            $111CF, $1122F..$11231, $11234, $11236, $11237, $1123E, $112DF, $112E3..$112EA, $11300: result := ujtTransparent;\n            $10FB9, $10FBA, $10FBD, $10FC2, $10FC3, $10FC9: result := ujtRightJoining;\n            $10FCB: result := ujtLeftJoining;\n            $10FBB, $10FBC, $10FBE, $10FBF, $10FC1, $10FC4, $10FCA: result := ujtDualJoining;\n          end\n        else\n          case u of\n            $11301, $1133B, $1133C, $11340, $11366..$1136C, $11370..$11374, $11438..$1143F, $11442..$11444, \n            $11446, $1145E, $114B3..$114B8, $114BA, $114BF, $114C0, $114C2, $114C3, $115B2..$115B5, \n            $115BC, $115BD, $115BF, $115C0, $115DC, $115DD, $11633..$1163A, $1163D, $1163F, $11640, \n            $116AB, $116AD, $116B0..$116B5, $116B7, $1171D..$1171F, $11722..$11725, $11727..$1172B, \n            $1182F..$11837, $11839, $1183A, $1193B, $1193C, $1193E: result := ujtTransparent;\n          end\n      end else begin\n        if u <= $016AF0 then\n          case u of\n            $11943, $119D4..$119D7, $119DA, $119DB, $119E0, $11A01..$11A0A, $11A33..$11A38, $11A3B..$11A3E, \n            $11A47, $11A51..$11A56, $11A59..$11A5B, $11A8A..$11A96, $11A98, $11A99, $11C30..$11C36, \n            $11C38..$11C3D, $11C3F, $11C92..$11CA7, $11CAA..$11CB0, $11CB2, $11CB3, $11CB5, $11CB6, \n            $11D31..$11D36, $11D3A, $11D3C, $11D3D, $11D3F..$11D45, $11D47, $11D90, $11D91, $11D95, \n            $11D97, $11EF3, $11EF4, $13430..$13438, $16AF0: result := ujtTransparent;\n          end\n        else\n          case u of\n            $16AF1..$16AF4, $16B30..$16B36, $16F4F, $16F8F..$16F92, $16FE4, $1BC9D, $1BC9E, $1BCA0..$1BCA3, \n            $1D167..$1D169, $1D173..$1D182, $1D185..$1D18B, $1D1AA..$1D1AD, $1D242..$1D244, $1DA00..$1DA36, \n            $1DA3B..$1DA6C, $1DA75, $1DA84, $1DA9B..$1DA9F, $1DAA1..$1DAAF, $1E000..$1E006, $1E008..$1E018, \n            $1E01B..$1E021, $1E023, $1E024, $1E026..$1E02A, $1E130..$1E136, $1E2EC..$1E2EF, $1E8D0..$1E8D6, \n            $1E944..$1E94B, $E0001, $E0020..$E007F, $E0100..$E01EF: result := ujtTransparent;\n            $1E900..$1E943: result := ujtDualJoining;\n          end\n      end\n    end\n  end\nend;\n\ntype\n  TUnicodeCombiningInfo = record\n    u: LongWord;\n    c: Byte;\n  end;\nconst\n  UnicodeCombiningInfos: array[0..2289] of TUnicodeCombiningInfo =\n  ( (u:$300; c:230), (u:$301; c:230), (u:$302; c:230), (u:$303; c:230),\n    (u:$304; c:230), (u:$305; c:230), (u:$306; c:230), (u:$307; c:230),\n    (u:$308; c:230), (u:$309; c:230), (u:$30A; c:230), (u:$30B; c:230),\n    (u:$30C; c:230), (u:$30D; c:230), (u:$30E; c:230), (u:$30F; c:230),\n    (u:$310; c:230), (u:$311; c:230), (u:$312; c:230), (u:$313; c:230),\n    (u:$314; c:230), (u:$315; c:232), (u:$316; c:220), (u:$317; c:220),\n    (u:$318; c:220), (u:$319; c:220), (u:$31A; c:232), (u:$31B; c:216),\n    (u:$31C; c:220), (u:$31D; c:220), (u:$31E; c:220), (u:$31F; c:220),\n    (u:$320; c:220), (u:$321; c:202), (u:$322; c:202), (u:$323; c:220),\n    (u:$324; c:220), (u:$325; c:220), (u:$326; c:220), (u:$327; c:202),\n    (u:$328; c:202), (u:$329; c:220), (u:$32A; c:220), (u:$32B; c:220),\n    (u:$32C; c:220), (u:$32D; c:220), (u:$32E; c:220), (u:$32F; c:220),\n    (u:$330; c:220), (u:$331; c:220), (u:$332; c:220), (u:$333; c:220),\n    (u:$334; c:1), (u:$335; c:1), (u:$336; c:1), (u:$337; c:1), (u:$338; c:1),\n    (u:$339; c:220), (u:$33A; c:220), (u:$33B; c:220), (u:$33C; c:220),\n    (u:$33D; c:230), (u:$33E; c:230), (u:$33F; c:230), (u:$340; c:230),\n    (u:$341; c:230), (u:$342; c:230), (u:$343; c:230), (u:$344; c:230),\n    (u:$345; c:240), (u:$346; c:230), (u:$347; c:220), (u:$348; c:220),\n    (u:$349; c:220), (u:$34A; c:230), (u:$34B; c:230), (u:$34C; c:230),\n    (u:$34D; c:220), (u:$34E; c:220), (u:$34F; c:0), (u:$350; c:230),\n    (u:$351; c:230), (u:$352; c:230), (u:$353; c:220), (u:$354; c:220),\n    (u:$355; c:220), (u:$356; c:220), (u:$357; c:230), (u:$358; c:232),\n    (u:$359; c:220), (u:$35A; c:220), (u:$35B; c:230), (u:$35C; c:233),\n    (u:$35D; c:234), (u:$35E; c:234), (u:$35F; c:233), (u:$360; c:234),\n    (u:$361; c:234), (u:$362; c:233), (u:$363; c:230), (u:$364; c:230),\n    (u:$365; c:230), (u:$366; c:230), (u:$367; c:230), (u:$368; c:230),\n    (u:$369; c:230), (u:$36A; c:230), (u:$36B; c:230), (u:$36C; c:230),\n    (u:$36D; c:230), (u:$36E; c:230), (u:$36F; c:230), (u:$483; c:230),\n    (u:$484; c:230), (u:$485; c:230), (u:$486; c:230), (u:$487; c:230),\n    (u:$488; c:0), (u:$489; c:0), (u:$591; c:220), (u:$592; c:230),\n    (u:$593; c:230), (u:$594; c:230), (u:$595; c:230), (u:$596; c:220),\n    (u:$597; c:230), (u:$598; c:230), (u:$599; c:230), (u:$59A; c:222),\n    (u:$59B; c:220), (u:$59C; c:230), (u:$59D; c:230), (u:$59E; c:230),\n    (u:$59F; c:230), (u:$5A0; c:230), (u:$5A1; c:230), (u:$5A2; c:220),\n    (u:$5A3; c:220), (u:$5A4; c:220), (u:$5A5; c:220), (u:$5A6; c:220),\n    (u:$5A7; c:220), (u:$5A8; c:230), (u:$5A9; c:230), (u:$5AA; c:220),\n    (u:$5AB; c:230), (u:$5AC; c:230), (u:$5AD; c:222), (u:$5AE; c:228),\n    (u:$5AF; c:230), (u:$5B0; c:10), (u:$5B1; c:11), (u:$5B2; c:12),\n    (u:$5B3; c:13), (u:$5B4; c:14), (u:$5B5; c:15), (u:$5B6; c:16),\n    (u:$5B7; c:17), (u:$5B8; c:18), (u:$5B9; c:19), (u:$5BA; c:19),\n    (u:$5BB; c:20), (u:$5BC; c:21), (u:$5BD; c:22), (u:$5BF; c:23),\n    (u:$5C1; c:24), (u:$5C2; c:25), (u:$5C4; c:230), (u:$5C5; c:220),\n    (u:$5C7; c:18), (u:$610; c:230), (u:$611; c:230), (u:$612; c:230),\n    (u:$613; c:230), (u:$614; c:230), (u:$615; c:230), (u:$616; c:230),\n    (u:$617; c:230), (u:$618; c:30), (u:$619; c:31), (u:$61A; c:32),\n    (u:$64B; c:27), (u:$64C; c:28), (u:$64D; c:29), (u:$64E; c:30),\n    (u:$64F; c:31), (u:$650; c:32), (u:$651; c:33), (u:$652; c:34),\n    (u:$653; c:230), (u:$654; c:230), (u:$655; c:220), (u:$656; c:220),\n    (u:$657; c:230), (u:$658; c:230), (u:$659; c:230), (u:$65A; c:230),\n    (u:$65B; c:230), (u:$65C; c:220), (u:$65D; c:230), (u:$65E; c:230),\n    (u:$65F; c:220), (u:$670; c:35), (u:$6D6; c:230), (u:$6D7; c:230),\n    (u:$6D8; c:230), (u:$6D9; c:230), (u:$6DA; c:230), (u:$6DB; c:230),\n    (u:$6DC; c:230), (u:$6DF; c:230), (u:$6E0; c:230), (u:$6E1; c:230),\n    (u:$6E2; c:230), (u:$6E3; c:220), (u:$6E4; c:230), (u:$6E7; c:230),\n    (u:$6E8; c:230), (u:$6EA; c:220), (u:$6EB; c:230), (u:$6EC; c:230),\n    (u:$6ED; c:220), (u:$711; c:36), (u:$730; c:230), (u:$731; c:220),\n    (u:$732; c:230), (u:$733; c:230), (u:$734; c:220), (u:$735; c:230),\n    (u:$736; c:230), (u:$737; c:220), (u:$738; c:220), (u:$739; c:220),\n    (u:$73A; c:230), (u:$73B; c:220), (u:$73C; c:220), (u:$73D; c:230),\n    (u:$73E; c:220), (u:$73F; c:230), (u:$740; c:230), (u:$741; c:230),\n    (u:$742; c:220), (u:$743; c:230), (u:$744; c:220), (u:$745; c:230),\n    (u:$746; c:220), (u:$747; c:230), (u:$748; c:220), (u:$749; c:230),\n    (u:$74A; c:230), (u:$7A6; c:0), (u:$7A7; c:0), (u:$7A8; c:0), (u:$7A9; c:0),\n    (u:$7AA; c:0), (u:$7AB; c:0), (u:$7AC; c:0), (u:$7AD; c:0), (u:$7AE; c:0),\n    (u:$7AF; c:0), (u:$7B0; c:0), (u:$7EB; c:230), (u:$7EC; c:230),\n    (u:$7ED; c:230), (u:$7EE; c:230), (u:$7EF; c:230), (u:$7F0; c:230),\n    (u:$7F1; c:230), (u:$7F2; c:220), (u:$7F3; c:230), (u:$7FD; c:220),\n    (u:$816; c:230), (u:$817; c:230), (u:$818; c:230), (u:$819; c:230),\n    (u:$81B; c:230), (u:$81C; c:230), (u:$81D; c:230), (u:$81E; c:230),\n    (u:$81F; c:230), (u:$820; c:230), (u:$821; c:230), (u:$822; c:230),\n    (u:$823; c:230), (u:$825; c:230), (u:$826; c:230), (u:$827; c:230),\n    (u:$829; c:230), (u:$82A; c:230), (u:$82B; c:230), (u:$82C; c:230),\n    (u:$82D; c:230), (u:$859; c:220), (u:$85A; c:220), (u:$85B; c:220),\n    (u:$8D3; c:220), (u:$8D4; c:230), (u:$8D5; c:230), (u:$8D6; c:230),\n    (u:$8D7; c:230), (u:$8D8; c:230), (u:$8D9; c:230), (u:$8DA; c:230),\n    (u:$8DB; c:230), (u:$8DC; c:230), (u:$8DD; c:230), (u:$8DE; c:230),\n    (u:$8DF; c:230), (u:$8E0; c:230), (u:$8E1; c:230), (u:$8E3; c:220),\n    (u:$8E4; c:230), (u:$8E5; c:230), (u:$8E6; c:220), (u:$8E7; c:230),\n    (u:$8E8; c:230), (u:$8E9; c:220), (u:$8EA; c:230), (u:$8EB; c:230),\n    (u:$8EC; c:230), (u:$8ED; c:220), (u:$8EE; c:220), (u:$8EF; c:220),\n    (u:$8F0; c:27), (u:$8F1; c:28), (u:$8F2; c:29), (u:$8F3; c:230),\n    (u:$8F4; c:230), (u:$8F5; c:230), (u:$8F6; c:220), (u:$8F7; c:230),\n    (u:$8F8; c:230), (u:$8F9; c:220), (u:$8FA; c:220), (u:$8FB; c:230),\n    (u:$8FC; c:230), (u:$8FD; c:230), (u:$8FE; c:230), (u:$8FF; c:230),\n    (u:$900; c:0), (u:$901; c:0), (u:$902; c:0), (u:$903; c:210), (u:$93A; c:0),\n    (u:$93B; c:210), (u:$93C; c:7), (u:$93E; c:210), (u:$93F; c:208),\n    (u:$940; c:210), (u:$941; c:0), (u:$942; c:0), (u:$943; c:0), (u:$944; c:0),\n    (u:$945; c:0), (u:$946; c:0), (u:$947; c:0), (u:$948; c:0), (u:$949; c:210),\n    (u:$94A; c:210), (u:$94B; c:210), (u:$94C; c:210), (u:$94D; c:9),\n    (u:$94E; c:208), (u:$94F; c:210), (u:$951; c:230), (u:$952; c:220),\n    (u:$953; c:230), (u:$954; c:230), (u:$955; c:0), (u:$956; c:0),\n    (u:$957; c:0), (u:$962; c:0), (u:$963; c:0), (u:$981; c:0), (u:$982; c:210),\n    (u:$983; c:210), (u:$9BC; c:7), (u:$9BE; c:210), (u:$9BF; c:208),\n    (u:$9C0; c:210), (u:$9C1; c:0), (u:$9C2; c:0), (u:$9C3; c:0), (u:$9C4; c:0),\n    (u:$9C7; c:208), (u:$9C8; c:208), (u:$9CB; c:0), (u:$9CC; c:0),\n    (u:$9CD; c:9), (u:$9D7; c:210), (u:$9E2; c:0), (u:$9E3; c:0),\n    (u:$9FE; c:230), (u:$A01; c:0), (u:$A02; c:0), (u:$A03; c:210),\n    (u:$A3C; c:7), (u:$A3E; c:210), (u:$A3F; c:208), (u:$A40; c:210),\n    (u:$A41; c:0), (u:$A42; c:0), (u:$A47; c:0), (u:$A48; c:0), (u:$A4B; c:0),\n    (u:$A4C; c:0), (u:$A4D; c:9), (u:$A51; c:0), (u:$A70; c:0), (u:$A71; c:0),\n    (u:$A75; c:0), (u:$A81; c:0), (u:$A82; c:0), (u:$A83; c:210), (u:$ABC; c:7),\n    (u:$ABE; c:210), (u:$ABF; c:208), (u:$AC0; c:210), (u:$AC1; c:0),\n    (u:$AC2; c:0), (u:$AC3; c:0), (u:$AC4; c:0), (u:$AC5; c:0), (u:$AC7; c:0),\n    (u:$AC8; c:0), (u:$AC9; c:210), (u:$ACB; c:210), (u:$ACC; c:210),\n    (u:$ACD; c:9), (u:$AE2; c:0), (u:$AE3; c:0), (u:$AFA; c:0), (u:$AFB; c:0),\n    (u:$AFC; c:0), (u:$AFD; c:0), (u:$AFE; c:0), (u:$AFF; c:0), (u:$B01; c:0),\n    (u:$B02; c:210), (u:$B03; c:210), (u:$B3C; c:7), (u:$B3E; c:210),\n    (u:$B3F; c:0), (u:$B40; c:210), (u:$B41; c:0), (u:$B42; c:0), (u:$B43; c:0),\n    (u:$B44; c:0), (u:$B47; c:208), (u:$B48; c:208), (u:$B4B; c:208),\n    (u:$B4C; c:208), (u:$B4D; c:9), (u:$B55; c:0), (u:$B56; c:0),\n    (u:$B57; c:210), (u:$B62; c:0), (u:$B63; c:0), (u:$B82; c:0),\n    (u:$BBE; c:210), (u:$BBF; c:210), (u:$BC0; c:0), (u:$BC1; c:210),\n    (u:$BC2; c:210), (u:$BC6; c:208), (u:$BC7; c:208), (u:$BC8; c:208),\n    (u:$BCA; c:0), (u:$BCB; c:0), (u:$BCC; c:0), (u:$BCD; c:9), (u:$BD7; c:210),\n    (u:$C00; c:0), (u:$C01; c:210), (u:$C02; c:210), (u:$C03; c:210),\n    (u:$C04; c:0), (u:$C3E; c:0), (u:$C3F; c:0), (u:$C40; c:0), (u:$C41; c:210),\n    (u:$C42; c:210), (u:$C43; c:210), (u:$C44; c:210), (u:$C46; c:0),\n    (u:$C47; c:0), (u:$C48; c:0), (u:$C4A; c:0), (u:$C4B; c:0), (u:$C4C; c:0),\n    (u:$C4D; c:9), (u:$C55; c:84), (u:$C56; c:91), (u:$C62; c:0), (u:$C63; c:0),\n    (u:$C81; c:0), (u:$C82; c:210), (u:$C83; c:210), (u:$CBC; c:7),\n    (u:$CBE; c:210), (u:$CC0; c:210), (u:$CC1; c:210), (u:$CC2; c:210),\n    (u:$CC3; c:210), (u:$CC4; c:210), (u:$CC7; c:210), (u:$CC8; c:210),\n    (u:$CCA; c:210), (u:$CCB; c:210), (u:$CCC; c:0), (u:$CCD; c:9),\n    (u:$CD5; c:210), (u:$CD6; c:210), (u:$CE2; c:0), (u:$CE3; c:0),\n    (u:$D00; c:0), (u:$D01; c:0), (u:$D02; c:210), (u:$D03; c:210),\n    (u:$D3B; c:9), (u:$D3C; c:9), (u:$D3E; c:210), (u:$D3F; c:210),\n    (u:$D40; c:210), (u:$D41; c:0), (u:$D42; c:0), (u:$D43; c:0), (u:$D44; c:0),\n    (u:$D46; c:208), (u:$D47; c:208), (u:$D48; c:208), (u:$D4A; c:0),\n    (u:$D4B; c:0), (u:$D4C; c:0), (u:$D4D; c:9), (u:$D57; c:210), (u:$D62; c:0),\n    (u:$D63; c:0), (u:$D81; c:0), (u:$D82; c:210), (u:$D83; c:210),\n    (u:$DCA; c:9), (u:$DCF; c:210), (u:$DD0; c:210), (u:$DD1; c:210),\n    (u:$DD2; c:0), (u:$DD3; c:0), (u:$DD4; c:0), (u:$DD6; c:0), (u:$DD8; c:210),\n    (u:$DD9; c:208), (u:$DDA; c:208), (u:$DDB; c:208), (u:$DDC; c:208),\n    (u:$DDD; c:208), (u:$DDE; c:208), (u:$DDF; c:210), (u:$DF2; c:210),\n    (u:$DF3; c:210), (u:$E31; c:0), (u:$E34; c:0), (u:$E35; c:0), (u:$E36; c:0),\n    (u:$E37; c:0), (u:$E38; c:103), (u:$E39; c:103), (u:$E3A; c:9),\n    (u:$E47; c:0), (u:$E48; c:107), (u:$E49; c:107), (u:$E4A; c:107),\n    (u:$E4B; c:107), (u:$E4C; c:0), (u:$E4D; c:0), (u:$E4E; c:0), (u:$EB1; c:0),\n    (u:$EB4; c:0), (u:$EB5; c:0), (u:$EB6; c:0), (u:$EB7; c:0), (u:$EB8; c:118),\n    (u:$EB9; c:118), (u:$EBA; c:9), (u:$EBB; c:0), (u:$EBC; c:0),\n    (u:$EC8; c:122), (u:$EC9; c:122), (u:$ECA; c:122), (u:$ECB; c:122),\n    (u:$ECC; c:0), (u:$ECD; c:0), (u:$F18; c:220), (u:$F19; c:220),\n    (u:$F35; c:220), (u:$F37; c:220), (u:$F39; c:216), (u:$F3E; c:210),\n    (u:$F3F; c:210), (u:$F71; c:129), (u:$F72; c:130), (u:$F73; c:0),\n    (u:$F74; c:132), (u:$F75; c:0), (u:$F76; c:0), (u:$F77; c:0), (u:$F78; c:0),\n    (u:$F79; c:0), (u:$F7A; c:130), (u:$F7B; c:130), (u:$F7C; c:130),\n    (u:$F7D; c:130), (u:$F7E; c:0), (u:$F7F; c:210), (u:$F80; c:130),\n    (u:$F81; c:0), (u:$F82; c:230), (u:$F83; c:230), (u:$F84; c:9),\n    (u:$F86; c:230), (u:$F87; c:230), (u:$F8D; c:0), (u:$F8E; c:0),\n    (u:$F8F; c:0), (u:$F90; c:0), (u:$F91; c:0), (u:$F92; c:0), (u:$F93; c:0),\n    (u:$F94; c:0), (u:$F95; c:0), (u:$F96; c:0), (u:$F97; c:0), (u:$F99; c:0),\n    (u:$F9A; c:0), (u:$F9B; c:0), (u:$F9C; c:0), (u:$F9D; c:0), (u:$F9E; c:0),\n    (u:$F9F; c:0), (u:$FA0; c:0), (u:$FA1; c:0), (u:$FA2; c:0), (u:$FA3; c:0),\n    (u:$FA4; c:0), (u:$FA5; c:0), (u:$FA6; c:0), (u:$FA7; c:0), (u:$FA8; c:0),\n    (u:$FA9; c:0), (u:$FAA; c:0), (u:$FAB; c:0), (u:$FAC; c:0), (u:$FAD; c:0),\n    (u:$FAE; c:0), (u:$FAF; c:0), (u:$FB0; c:0), (u:$FB1; c:0), (u:$FB2; c:0),\n    (u:$FB3; c:0), (u:$FB4; c:0), (u:$FB5; c:0), (u:$FB6; c:0), (u:$FB7; c:0),\n    (u:$FB8; c:0), (u:$FB9; c:0), (u:$FBA; c:0), (u:$FBB; c:0), (u:$FBC; c:0),\n    (u:$FC6; c:220), (u:$102B; c:210), (u:$102C; c:210), (u:$102D; c:0),\n    (u:$102E; c:0), (u:$102F; c:0), (u:$1030; c:0), (u:$1031; c:208),\n    (u:$1032; c:0), (u:$1033; c:0), (u:$1034; c:0), (u:$1035; c:0),\n    (u:$1036; c:0), (u:$1037; c:7), (u:$1038; c:210), (u:$1039; c:9),\n    (u:$103A; c:9), (u:$103B; c:210), (u:$103C; c:208), (u:$103D; c:0),\n    (u:$103E; c:0), (u:$1056; c:210), (u:$1057; c:210), (u:$1058; c:0),\n    (u:$1059; c:0), (u:$105E; c:0), (u:$105F; c:0), (u:$1060; c:0),\n    (u:$1062; c:210), (u:$1063; c:210), (u:$1064; c:210), (u:$1067; c:210),\n    (u:$1068; c:210), (u:$1069; c:210), (u:$106A; c:210), (u:$106B; c:210),\n    (u:$106C; c:210), (u:$106D; c:210), (u:$1071; c:0), (u:$1072; c:0),\n    (u:$1073; c:0), (u:$1074; c:0), (u:$1082; c:0), (u:$1083; c:210),\n    (u:$1084; c:208), (u:$1085; c:0), (u:$1086; c:0), (u:$1087; c:210),\n    (u:$1088; c:210), (u:$1089; c:210), (u:$108A; c:210), (u:$108B; c:210),\n    (u:$108C; c:210), (u:$108D; c:220), (u:$108F; c:210), (u:$109A; c:210),\n    (u:$109B; c:210), (u:$109C; c:210), (u:$109D; c:0), (u:$135D; c:230),\n    (u:$135E; c:230), (u:$135F; c:230), (u:$1712; c:0), (u:$1713; c:0),\n    (u:$1714; c:9), (u:$1732; c:0), (u:$1733; c:0), (u:$1734; c:9),\n    (u:$1752; c:0), (u:$1753; c:0), (u:$1772; c:0), (u:$1773; c:0),\n    (u:$17B4; c:0), (u:$17B5; c:0), (u:$17B6; c:210), (u:$17B7; c:0),\n    (u:$17B8; c:0), (u:$17B9; c:0), (u:$17BA; c:0), (u:$17BB; c:0),\n    (u:$17BC; c:0), (u:$17BD; c:0), (u:$17BE; c:208), (u:$17BF; c:0),\n    (u:$17C0; c:0), (u:$17C1; c:208), (u:$17C2; c:208), (u:$17C3; c:208),\n    (u:$17C4; c:0), (u:$17C5; c:0), (u:$17C6; c:0), (u:$17C7; c:210),\n    (u:$17C8; c:210), (u:$17C9; c:0), (u:$17CA; c:0), (u:$17CB; c:0),\n    (u:$17CC; c:0), (u:$17CD; c:0), (u:$17CE; c:0), (u:$17CF; c:0),\n    (u:$17D0; c:0), (u:$17D1; c:0), (u:$17D2; c:9), (u:$17D3; c:0),\n    (u:$17DD; c:230), (u:$180B; c:0), (u:$180C; c:0), (u:$180D; c:0),\n    (u:$1885; c:0), (u:$1886; c:0), (u:$18A9; c:228), (u:$1920; c:0),\n    (u:$1921; c:0), (u:$1922; c:0), (u:$1923; c:210), (u:$1924; c:210),\n    (u:$1925; c:210), (u:$1926; c:210), (u:$1927; c:0), (u:$1928; c:0),\n    (u:$1929; c:210), (u:$192A; c:210), (u:$192B; c:210), (u:$1930; c:210),\n    (u:$1931; c:210), (u:$1932; c:0), (u:$1933; c:210), (u:$1934; c:210),\n    (u:$1935; c:210), (u:$1936; c:210), (u:$1937; c:210), (u:$1938; c:210),\n    (u:$1939; c:222), (u:$193A; c:230), (u:$193B; c:220), (u:$1A17; c:230),\n    (u:$1A18; c:220), (u:$1A19; c:208), (u:$1A1A; c:210), (u:$1A1B; c:0),\n    (u:$1A55; c:210), (u:$1A56; c:0), (u:$1A57; c:210), (u:$1A58; c:0),\n    (u:$1A59; c:0), (u:$1A5A; c:0), (u:$1A5B; c:0), (u:$1A5C; c:0),\n    (u:$1A5D; c:0), (u:$1A5E; c:0), (u:$1A60; c:9), (u:$1A61; c:210),\n    (u:$1A62; c:0), (u:$1A63; c:210), (u:$1A64; c:210), (u:$1A65; c:0),\n    (u:$1A66; c:0), (u:$1A67; c:0), (u:$1A68; c:0), (u:$1A69; c:0),\n    (u:$1A6A; c:0), (u:$1A6B; c:0), (u:$1A6C; c:0), (u:$1A6D; c:210),\n    (u:$1A6E; c:210), (u:$1A6F; c:210), (u:$1A70; c:210), (u:$1A71; c:210),\n    (u:$1A72; c:210), (u:$1A73; c:0), (u:$1A74; c:0), (u:$1A75; c:230),\n    (u:$1A76; c:230), (u:$1A77; c:230), (u:$1A78; c:230), (u:$1A79; c:230),\n    (u:$1A7A; c:230), (u:$1A7B; c:230), (u:$1A7C; c:230), (u:$1A7F; c:220),\n    (u:$1AB0; c:230), (u:$1AB1; c:230), (u:$1AB2; c:230), (u:$1AB3; c:230),\n    (u:$1AB4; c:230), (u:$1AB5; c:220), (u:$1AB6; c:220), (u:$1AB7; c:220),\n    (u:$1AB8; c:220), (u:$1AB9; c:220), (u:$1ABA; c:220), (u:$1ABB; c:230),\n    (u:$1ABC; c:230), (u:$1ABD; c:220), (u:$1ABE; c:0), (u:$1ABF; c:220),\n    (u:$1AC0; c:220), (u:$1B00; c:0), (u:$1B01; c:0), (u:$1B02; c:0),\n    (u:$1B03; c:0), (u:$1B04; c:210), (u:$1B34; c:7), (u:$1B35; c:210),\n    (u:$1B36; c:0), (u:$1B37; c:0), (u:$1B38; c:0), (u:$1B39; c:0),\n    (u:$1B3A; c:0), (u:$1B3B; c:210), (u:$1B3C; c:0), (u:$1B3D; c:0),\n    (u:$1B3E; c:208), (u:$1B3F; c:208), (u:$1B40; c:0), (u:$1B41; c:0),\n    (u:$1B42; c:0), (u:$1B43; c:210), (u:$1B44; c:9), (u:$1B6B; c:230),\n    (u:$1B6C; c:220), (u:$1B6D; c:230), (u:$1B6E; c:230), (u:$1B6F; c:230),\n    (u:$1B70; c:230), (u:$1B71; c:230), (u:$1B72; c:230), (u:$1B73; c:230),\n    (u:$1B80; c:0), (u:$1B81; c:0), (u:$1B82; c:210), (u:$1BA1; c:210),\n    (u:$1BA2; c:0), (u:$1BA3; c:0), (u:$1BA4; c:0), (u:$1BA5; c:0),\n    (u:$1BA6; c:210), (u:$1BA7; c:210), (u:$1BA8; c:0), (u:$1BA9; c:0),\n    (u:$1BAA; c:9), (u:$1BAB; c:9), (u:$1BAC; c:0), (u:$1BAD; c:0),\n    (u:$1BE6; c:7), (u:$1BE7; c:210), (u:$1BE8; c:0), (u:$1BE9; c:0),\n    (u:$1BEA; c:210), (u:$1BEB; c:210), (u:$1BEC; c:210), (u:$1BED; c:0),\n    (u:$1BEE; c:210), (u:$1BEF; c:0), (u:$1BF0; c:0), (u:$1BF1; c:0),\n    (u:$1BF2; c:9), (u:$1BF3; c:9), (u:$1C24; c:210), (u:$1C25; c:210),\n    (u:$1C26; c:210), (u:$1C27; c:210), (u:$1C28; c:210), (u:$1C29; c:210),\n    (u:$1C2A; c:210), (u:$1C2B; c:210), (u:$1C2C; c:0), (u:$1C2D; c:0),\n    (u:$1C2E; c:0), (u:$1C2F; c:0), (u:$1C30; c:0), (u:$1C31; c:0),\n    (u:$1C32; c:0), (u:$1C33; c:0), (u:$1C34; c:210), (u:$1C35; c:210),\n    (u:$1C36; c:0), (u:$1C37; c:7), (u:$1CD0; c:230), (u:$1CD1; c:230),\n    (u:$1CD2; c:230), (u:$1CD4; c:1), (u:$1CD5; c:220), (u:$1CD6; c:220),\n    (u:$1CD7; c:220), (u:$1CD8; c:220), (u:$1CD9; c:220), (u:$1CDA; c:230),\n    (u:$1CDB; c:230), (u:$1CDC; c:220), (u:$1CDD; c:220), (u:$1CDE; c:220),\n    (u:$1CDF; c:220), (u:$1CE0; c:230), (u:$1CE1; c:210), (u:$1CE2; c:1),\n    (u:$1CE3; c:1), (u:$1CE4; c:1), (u:$1CE5; c:1), (u:$1CE6; c:1),\n    (u:$1CE7; c:1), (u:$1CE8; c:1), (u:$1CED; c:220), (u:$1CF4; c:230),\n    (u:$1CF7; c:210), (u:$1CF8; c:230), (u:$1CF9; c:230), (u:$1DC0; c:230),\n    (u:$1DC1; c:230), (u:$1DC2; c:220), (u:$1DC3; c:230), (u:$1DC4; c:230),\n    (u:$1DC5; c:230), (u:$1DC6; c:230), (u:$1DC7; c:230), (u:$1DC8; c:230),\n    (u:$1DC9; c:230), (u:$1DCA; c:220), (u:$1DCB; c:230), (u:$1DCC; c:230),\n    (u:$1DCD; c:234), (u:$1DCE; c:214), (u:$1DCF; c:220), (u:$1DD0; c:202),\n    (u:$1DD1; c:230), (u:$1DD2; c:230), (u:$1DD3; c:230), (u:$1DD4; c:230),\n    (u:$1DD5; c:230), (u:$1DD6; c:230), (u:$1DD7; c:230), (u:$1DD8; c:230),\n    (u:$1DD9; c:230), (u:$1DDA; c:230), (u:$1DDB; c:230), (u:$1DDC; c:230),\n    (u:$1DDD; c:230), (u:$1DDE; c:230), (u:$1DDF; c:230), (u:$1DE0; c:230),\n    (u:$1DE1; c:230), (u:$1DE2; c:230), (u:$1DE3; c:230), (u:$1DE4; c:230),\n    (u:$1DE5; c:230), (u:$1DE6; c:230), (u:$1DE7; c:230), (u:$1DE8; c:230),\n    (u:$1DE9; c:230), (u:$1DEA; c:230), (u:$1DEB; c:230), (u:$1DEC; c:230),\n    (u:$1DED; c:230), (u:$1DEE; c:230), (u:$1DEF; c:230), (u:$1DF0; c:230),\n    (u:$1DF1; c:230), (u:$1DF2; c:230), (u:$1DF3; c:230), (u:$1DF4; c:230),\n    (u:$1DF5; c:230), (u:$1DF6; c:232), (u:$1DF7; c:228), (u:$1DF8; c:228),\n    (u:$1DF9; c:220), (u:$1DFB; c:230), (u:$1DFC; c:233), (u:$1DFD; c:220),\n    (u:$1DFE; c:230), (u:$1DFF; c:220), (u:$20D0; c:230), (u:$20D1; c:230),\n    (u:$20D2; c:1), (u:$20D3; c:1), (u:$20D4; c:230), (u:$20D5; c:230),\n    (u:$20D6; c:230), (u:$20D7; c:230), (u:$20D8; c:1), (u:$20D9; c:1),\n    (u:$20DA; c:1), (u:$20DB; c:230), (u:$20DC; c:230), (u:$20DD; c:0),\n    (u:$20DE; c:0), (u:$20DF; c:0), (u:$20E0; c:0), (u:$20E1; c:230),\n    (u:$20E2; c:0), (u:$20E3; c:0), (u:$20E4; c:0), (u:$20E5; c:1),\n    (u:$20E6; c:1), (u:$20E7; c:230), (u:$20E8; c:220), (u:$20E9; c:230),\n    (u:$20EA; c:1), (u:$20EB; c:1), (u:$20EC; c:220), (u:$20ED; c:220),\n    (u:$20EE; c:220), (u:$20EF; c:220), (u:$20F0; c:230), (u:$2CEF; c:230),\n    (u:$2CF0; c:230), (u:$2CF1; c:230), (u:$2D7F; c:9), (u:$2DE0; c:230),\n    (u:$2DE1; c:230), (u:$2DE2; c:230), (u:$2DE3; c:230), (u:$2DE4; c:230),\n    (u:$2DE5; c:230), (u:$2DE6; c:230), (u:$2DE7; c:230), (u:$2DE8; c:230),\n    (u:$2DE9; c:230), (u:$2DEA; c:230), (u:$2DEB; c:230), (u:$2DEC; c:230),\n    (u:$2DED; c:230), (u:$2DEE; c:230), (u:$2DEF; c:230), (u:$2DF0; c:230),\n    (u:$2DF1; c:230), (u:$2DF2; c:230), (u:$2DF3; c:230), (u:$2DF4; c:230),\n    (u:$2DF5; c:230), (u:$2DF6; c:230), (u:$2DF7; c:230), (u:$2DF8; c:230),\n    (u:$2DF9; c:230), (u:$2DFA; c:230), (u:$2DFB; c:230), (u:$2DFC; c:230),\n    (u:$2DFD; c:230), (u:$2DFE; c:230), (u:$2DFF; c:230), (u:$302A; c:218),\n    (u:$302B; c:228), (u:$302C; c:232), (u:$302D; c:222), (u:$302E; c:224),\n    (u:$302F; c:224), (u:$3099; c:8), (u:$309A; c:8), (u:$A66F; c:230),\n    (u:$A670; c:0), (u:$A671; c:0), (u:$A672; c:0), (u:$A674; c:230),\n    (u:$A675; c:230), (u:$A676; c:230), (u:$A677; c:230), (u:$A678; c:230),\n    (u:$A679; c:230), (u:$A67A; c:230), (u:$A67B; c:230), (u:$A67C; c:230),\n    (u:$A67D; c:230), (u:$A69E; c:230), (u:$A69F; c:230), (u:$A6F0; c:230),\n    (u:$A6F1; c:230), (u:$A802; c:0), (u:$A806; c:9), (u:$A80B; c:0),\n    (u:$A823; c:210), (u:$A824; c:210), (u:$A825; c:0), (u:$A826; c:0),\n    (u:$A827; c:210), (u:$A82C; c:9), (u:$A880; c:210), (u:$A881; c:210),\n    (u:$A8B4; c:210), (u:$A8B5; c:210), (u:$A8B6; c:210), (u:$A8B7; c:210),\n    (u:$A8B8; c:210), (u:$A8B9; c:210), (u:$A8BA; c:210), (u:$A8BB; c:210),\n    (u:$A8BC; c:210), (u:$A8BD; c:210), (u:$A8BE; c:210), (u:$A8BF; c:210),\n    (u:$A8C0; c:210), (u:$A8C1; c:210), (u:$A8C2; c:210), (u:$A8C3; c:210),\n    (u:$A8C4; c:9), (u:$A8C5; c:0), (u:$A8E0; c:230), (u:$A8E1; c:230),\n    (u:$A8E2; c:230), (u:$A8E3; c:230), (u:$A8E4; c:230), (u:$A8E5; c:230),\n    (u:$A8E6; c:230), (u:$A8E7; c:230), (u:$A8E8; c:230), (u:$A8E9; c:230),\n    (u:$A8EA; c:230), (u:$A8EB; c:230), (u:$A8EC; c:230), (u:$A8ED; c:230),\n    (u:$A8EE; c:230), (u:$A8EF; c:230), (u:$A8F0; c:230), (u:$A8F1; c:230),\n    (u:$A8FF; c:0), (u:$A926; c:0), (u:$A927; c:0), (u:$A928; c:0),\n    (u:$A929; c:0), (u:$A92A; c:0), (u:$A92B; c:220), (u:$A92C; c:220),\n    (u:$A92D; c:220), (u:$A947; c:0), (u:$A948; c:0), (u:$A949; c:0),\n    (u:$A94A; c:0), (u:$A94B; c:0), (u:$A94C; c:0), (u:$A94D; c:0),\n    (u:$A94E; c:0), (u:$A94F; c:0), (u:$A950; c:0), (u:$A951; c:0),\n    (u:$A952; c:210), (u:$A953; c:9), (u:$A980; c:0), (u:$A981; c:0),\n    (u:$A982; c:0), (u:$A983; c:210), (u:$A9B3; c:7), (u:$A9B4; c:210),\n    (u:$A9B5; c:210), (u:$A9B6; c:0), (u:$A9B7; c:0), (u:$A9B8; c:0),\n    (u:$A9B9; c:0), (u:$A9BA; c:208), (u:$A9BB; c:208), (u:$A9BC; c:0),\n    (u:$A9BD; c:0), (u:$A9BE; c:210), (u:$A9BF; c:208), (u:$A9C0; c:9),\n    (u:$A9E5; c:0), (u:$AA29; c:0), (u:$AA2A; c:0), (u:$AA2B; c:0),\n    (u:$AA2C; c:0), (u:$AA2D; c:0), (u:$AA2E; c:0), (u:$AA2F; c:208),\n    (u:$AA30; c:208), (u:$AA31; c:0), (u:$AA32; c:0), (u:$AA33; c:210),\n    (u:$AA34; c:208), (u:$AA35; c:0), (u:$AA36; c:0), (u:$AA43; c:0),\n    (u:$AA4C; c:0), (u:$AA4D; c:210), (u:$AA7B; c:210), (u:$AA7C; c:0),\n    (u:$AA7D; c:210), (u:$AAB0; c:230), (u:$AAB2; c:230), (u:$AAB3; c:230),\n    (u:$AAB4; c:220), (u:$AAB7; c:230), (u:$AAB8; c:230), (u:$AABE; c:230),\n    (u:$AABF; c:230), (u:$AAC1; c:230), (u:$AAEB; c:210), (u:$AAEC; c:0),\n    (u:$AAED; c:0), (u:$AAEE; c:210), (u:$AAEF; c:210), (u:$AAF5; c:210),\n    (u:$AAF6; c:9), (u:$ABE3; c:210), (u:$ABE4; c:210), (u:$ABE5; c:0),\n    (u:$ABE6; c:210), (u:$ABE7; c:210), (u:$ABE8; c:0), (u:$ABE9; c:210),\n    (u:$ABEA; c:210), (u:$ABEC; c:210), (u:$ABED; c:9), (u:$FB1E; c:26),\n    (u:$FE00; c:0), (u:$FE01; c:0), (u:$FE02; c:0), (u:$FE03; c:0),\n    (u:$FE04; c:0), (u:$FE05; c:0), (u:$FE06; c:0), (u:$FE07; c:0),\n    (u:$FE08; c:0), (u:$FE09; c:0), (u:$FE0A; c:0), (u:$FE0B; c:0),\n    (u:$FE0C; c:0), (u:$FE0D; c:0), (u:$FE0E; c:0), (u:$FE0F; c:0),\n    (u:$FE20; c:230), (u:$FE21; c:230), (u:$FE22; c:230), (u:$FE23; c:230),\n    (u:$FE24; c:230), (u:$FE25; c:230), (u:$FE26; c:230), (u:$FE27; c:220),\n    (u:$FE28; c:220), (u:$FE29; c:220), (u:$FE2A; c:220), (u:$FE2B; c:220),\n    (u:$FE2C; c:220), (u:$FE2D; c:220), (u:$FE2E; c:230), (u:$FE2F; c:230),\n    (u:$101FD; c:220), (u:$102E0; c:220), (u:$10376; c:230), (u:$10377; c:230),\n    (u:$10378; c:230), (u:$10379; c:230), (u:$1037A; c:230), (u:$10A01; c:0),\n    (u:$10A02; c:0), (u:$10A03; c:0), (u:$10A05; c:0), (u:$10A06; c:0),\n    (u:$10A0C; c:0), (u:$10A0D; c:220), (u:$10A0E; c:0), (u:$10A0F; c:230),\n    (u:$10A38; c:230), (u:$10A39; c:1), (u:$10A3A; c:220), (u:$10A3F; c:9),\n    (u:$10AE5; c:230), (u:$10AE6; c:220), (u:$10D24; c:230), (u:$10D25; c:230),\n    (u:$10D26; c:230), (u:$10D27; c:230), (u:$10EAB; c:230), (u:$10EAC; c:230),\n    (u:$10F46; c:220), (u:$10F47; c:220), (u:$10F48; c:230), (u:$10F49; c:230),\n    (u:$10F4A; c:230), (u:$10F4B; c:220), (u:$10F4C; c:230), (u:$10F4D; c:220),\n    (u:$10F4E; c:220), (u:$10F4F; c:220), (u:$10F50; c:220), (u:$11000; c:210),\n    (u:$11001; c:0), (u:$11002; c:210), (u:$11038; c:0), (u:$11039; c:0),\n    (u:$1103A; c:0), (u:$1103B; c:0), (u:$1103C; c:0), (u:$1103D; c:0),\n    (u:$1103E; c:0), (u:$1103F; c:0), (u:$11040; c:0), (u:$11041; c:0),\n    (u:$11042; c:0), (u:$11043; c:0), (u:$11044; c:0), (u:$11045; c:0),\n    (u:$11046; c:9), (u:$1107F; c:9), (u:$11080; c:0), (u:$11081; c:0),\n    (u:$11082; c:210), (u:$110B0; c:210), (u:$110B1; c:210), (u:$110B2; c:210),\n    (u:$110B3; c:0), (u:$110B4; c:0), (u:$110B5; c:0), (u:$110B6; c:0),\n    (u:$110B7; c:210), (u:$110B8; c:210), (u:$110B9; c:9), (u:$110BA; c:7),\n    (u:$11100; c:230), (u:$11101; c:230), (u:$11102; c:230), (u:$11127; c:0),\n    (u:$11128; c:0), (u:$11129; c:0), (u:$1112A; c:0), (u:$1112B; c:0),\n    (u:$1112C; c:210), (u:$1112D; c:0), (u:$1112E; c:0), (u:$1112F; c:0),\n    (u:$11130; c:0), (u:$11131; c:0), (u:$11132; c:0), (u:$11133; c:9),\n    (u:$11134; c:9), (u:$11145; c:210), (u:$11146; c:210), (u:$11173; c:7),\n    (u:$11180; c:0), (u:$11181; c:0), (u:$11182; c:210), (u:$111B3; c:210),\n    (u:$111B4; c:210), (u:$111B5; c:210), (u:$111B6; c:0), (u:$111B7; c:0),\n    (u:$111B8; c:0), (u:$111B9; c:0), (u:$111BA; c:0), (u:$111BB; c:0),\n    (u:$111BC; c:0), (u:$111BD; c:0), (u:$111BE; c:0), (u:$111BF; c:210),\n    (u:$111C0; c:9), (u:$111C9; c:0), (u:$111CA; c:7), (u:$111CB; c:0),\n    (u:$111CC; c:0), (u:$111CE; c:210), (u:$111CF; c:0), (u:$1122C; c:210),\n    (u:$1122D; c:210), (u:$1122E; c:210), (u:$1122F; c:0), (u:$11230; c:0),\n    (u:$11231; c:0), (u:$11232; c:210), (u:$11233; c:210), (u:$11234; c:0),\n    (u:$11235; c:9), (u:$11236; c:7), (u:$11237; c:0), (u:$1123E; c:0),\n    (u:$112DF; c:0), (u:$112E0; c:210), (u:$112E1; c:210), (u:$112E2; c:210),\n    (u:$112E3; c:0), (u:$112E4; c:0), (u:$112E5; c:0), (u:$112E6; c:0),\n    (u:$112E7; c:0), (u:$112E8; c:0), (u:$112E9; c:7), (u:$112EA; c:9),\n    (u:$11300; c:0), (u:$11301; c:0), (u:$11302; c:210), (u:$11303; c:210),\n    (u:$1133B; c:7), (u:$1133C; c:7), (u:$1133E; c:210), (u:$1133F; c:210),\n    (u:$11340; c:0), (u:$11341; c:210), (u:$11342; c:210), (u:$11343; c:210),\n    (u:$11344; c:210), (u:$11347; c:210), (u:$11348; c:210), (u:$1134B; c:210),\n    (u:$1134C; c:210), (u:$1134D; c:9), (u:$11357; c:210), (u:$11362; c:210),\n    (u:$11363; c:210), (u:$11366; c:230), (u:$11367; c:230), (u:$11368; c:230),\n    (u:$11369; c:230), (u:$1136A; c:230), (u:$1136B; c:230), (u:$1136C; c:230),\n    (u:$11370; c:230), (u:$11371; c:230), (u:$11372; c:230), (u:$11373; c:230),\n    (u:$11374; c:230), (u:$11435; c:210), (u:$11436; c:210), (u:$11437; c:210),\n    (u:$11438; c:0), (u:$11439; c:0), (u:$1143A; c:0), (u:$1143B; c:0),\n    (u:$1143C; c:0), (u:$1143D; c:0), (u:$1143E; c:0), (u:$1143F; c:0),\n    (u:$11440; c:210), (u:$11441; c:210), (u:$11442; c:9), (u:$11443; c:0),\n    (u:$11444; c:0), (u:$11445; c:210), (u:$11446; c:7), (u:$1145E; c:230),\n    (u:$114B0; c:210), (u:$114B1; c:210), (u:$114B2; c:210), (u:$114B3; c:0),\n    (u:$114B4; c:0), (u:$114B5; c:0), (u:$114B6; c:0), (u:$114B7; c:0),\n    (u:$114B8; c:0), (u:$114B9; c:210), (u:$114BA; c:0), (u:$114BB; c:210),\n    (u:$114BC; c:210), (u:$114BD; c:210), (u:$114BE; c:210), (u:$114BF; c:0),\n    (u:$114C0; c:0), (u:$114C1; c:210), (u:$114C2; c:9), (u:$114C3; c:7),\n    (u:$115AF; c:210), (u:$115B0; c:210), (u:$115B1; c:210), (u:$115B2; c:0),\n    (u:$115B3; c:0), (u:$115B4; c:0), (u:$115B5; c:0), (u:$115B8; c:210),\n    (u:$115B9; c:210), (u:$115BA; c:210), (u:$115BB; c:210), (u:$115BC; c:0),\n    (u:$115BD; c:0), (u:$115BE; c:210), (u:$115BF; c:9), (u:$115C0; c:7),\n    (u:$115DC; c:0), (u:$115DD; c:0), (u:$11630; c:210), (u:$11631; c:210),\n    (u:$11632; c:210), (u:$11633; c:0), (u:$11634; c:0), (u:$11635; c:0),\n    (u:$11636; c:0), (u:$11637; c:0), (u:$11638; c:0), (u:$11639; c:0),\n    (u:$1163A; c:0), (u:$1163B; c:210), (u:$1163C; c:210), (u:$1163D; c:0),\n    (u:$1163E; c:210), (u:$1163F; c:9), (u:$11640; c:0), (u:$116AB; c:0),\n    (u:$116AC; c:210), (u:$116AD; c:0), (u:$116AE; c:210), (u:$116AF; c:210),\n    (u:$116B0; c:0), (u:$116B1; c:0), (u:$116B2; c:0), (u:$116B3; c:0),\n    (u:$116B4; c:0), (u:$116B5; c:0), (u:$116B6; c:9), (u:$116B7; c:7),\n    (u:$1171D; c:0), (u:$1171E; c:0), (u:$1171F; c:0), (u:$11720; c:210),\n    (u:$11721; c:210), (u:$11722; c:0), (u:$11723; c:0), (u:$11724; c:0),\n    (u:$11725; c:0), (u:$11726; c:210), (u:$11727; c:0), (u:$11728; c:0),\n    (u:$11729; c:0), (u:$1172A; c:0), (u:$1172B; c:9), (u:$1182C; c:210),\n    (u:$1182D; c:210), (u:$1182E; c:210), (u:$1182F; c:0), (u:$11830; c:0),\n    (u:$11831; c:0), (u:$11832; c:0), (u:$11833; c:0), (u:$11834; c:0),\n    (u:$11835; c:0), (u:$11836; c:0), (u:$11837; c:0), (u:$11838; c:210),\n    (u:$11839; c:9), (u:$1183A; c:7), (u:$11930; c:210), (u:$11931; c:210),\n    (u:$11932; c:210), (u:$11933; c:210), (u:$11934; c:210), (u:$11935; c:210),\n    (u:$11937; c:210), (u:$11938; c:210), (u:$1193B; c:0), (u:$1193C; c:0),\n    (u:$1193D; c:9), (u:$1193E; c:9), (u:$11940; c:210), (u:$11942; c:210),\n    (u:$11943; c:7), (u:$119D1; c:210), (u:$119D2; c:210), (u:$119D3; c:210),\n    (u:$119D4; c:0), (u:$119D5; c:0), (u:$119D6; c:0), (u:$119D7; c:0),\n    (u:$119DA; c:0), (u:$119DB; c:0), (u:$119DC; c:210), (u:$119DD; c:210),\n    (u:$119DE; c:210), (u:$119DF; c:210), (u:$119E0; c:9), (u:$119E4; c:210),\n    (u:$11A01; c:0), (u:$11A02; c:0), (u:$11A03; c:0), (u:$11A04; c:0),\n    (u:$11A05; c:0), (u:$11A06; c:0), (u:$11A09; c:0), (u:$11A0A; c:0),\n    (u:$11A33; c:0), (u:$11A34; c:9), (u:$11A35; c:0), (u:$11A36; c:0),\n    (u:$11A37; c:0), (u:$11A38; c:0), (u:$11A39; c:210), (u:$11A3B; c:0),\n    (u:$11A3C; c:0), (u:$11A3D; c:0), (u:$11A3E; c:0), (u:$11A47; c:9),\n    (u:$11A51; c:0), (u:$11A52; c:0), (u:$11A53; c:0), (u:$11A54; c:0),\n    (u:$11A55; c:0), (u:$11A56; c:0), (u:$11A57; c:210), (u:$11A58; c:210),\n    (u:$11A59; c:0), (u:$11A5A; c:0), (u:$11A5B; c:0), (u:$11A8A; c:0),\n    (u:$11A8B; c:0), (u:$11A8C; c:0), (u:$11A8D; c:0), (u:$11A8E; c:0),\n    (u:$11A8F; c:0), (u:$11A90; c:0), (u:$11A91; c:0), (u:$11A92; c:0),\n    (u:$11A93; c:0), (u:$11A94; c:0), (u:$11A95; c:0), (u:$11A96; c:0),\n    (u:$11A97; c:210), (u:$11A98; c:0), (u:$11A99; c:9), (u:$11C2F; c:210),\n    (u:$11C30; c:0), (u:$11C31; c:0), (u:$11C32; c:0), (u:$11C33; c:0),\n    (u:$11C34; c:0), (u:$11C35; c:0), (u:$11C36; c:0), (u:$11C38; c:0),\n    (u:$11C39; c:0), (u:$11C3A; c:0), (u:$11C3B; c:0), (u:$11C3C; c:0),\n    (u:$11C3D; c:0), (u:$11C3E; c:210), (u:$11C92; c:0), (u:$11C93; c:0),\n    (u:$11C94; c:0), (u:$11C95; c:0), (u:$11C96; c:0), (u:$11C97; c:0),\n    (u:$11C98; c:0), (u:$11C99; c:0), (u:$11C9A; c:0), (u:$11C9B; c:0),\n    (u:$11C9C; c:0), (u:$11C9D; c:0), (u:$11C9E; c:0), (u:$11C9F; c:0),\n    (u:$11CA0; c:0), (u:$11CA1; c:0), (u:$11CA2; c:0), (u:$11CA3; c:0),\n    (u:$11CA4; c:0), (u:$11CA5; c:0), (u:$11CA6; c:0), (u:$11CA7; c:0),\n    (u:$11CA9; c:210), (u:$11CAA; c:0), (u:$11CAB; c:0), (u:$11CAC; c:0),\n    (u:$11CAD; c:0), (u:$11CAE; c:0), (u:$11CAF; c:0), (u:$11CB0; c:0),\n    (u:$11CB1; c:210), (u:$11CB2; c:0), (u:$11CB3; c:0), (u:$11CB4; c:210),\n    (u:$11CB5; c:0), (u:$11CB6; c:0), (u:$11D31; c:0), (u:$11D32; c:0),\n    (u:$11D33; c:0), (u:$11D34; c:0), (u:$11D35; c:0), (u:$11D36; c:0),\n    (u:$11D3A; c:0), (u:$11D3C; c:0), (u:$11D3D; c:0), (u:$11D3F; c:0),\n    (u:$11D40; c:0), (u:$11D41; c:0), (u:$11D42; c:7), (u:$11D43; c:0),\n    (u:$11D44; c:9), (u:$11D45; c:9), (u:$11D47; c:0), (u:$11D8A; c:210),\n    (u:$11D8B; c:210), (u:$11D8C; c:210), (u:$11D8D; c:210), (u:$11D8E; c:210),\n    (u:$11D90; c:0), (u:$11D91; c:0), (u:$11D93; c:210), (u:$11D94; c:210),\n    (u:$11D95; c:0), (u:$11D96; c:210), (u:$11D97; c:9), (u:$11EF3; c:0),\n    (u:$11EF4; c:0), (u:$11EF5; c:210), (u:$11EF6; c:210), (u:$16AF0; c:1),\n    (u:$16AF1; c:1), (u:$16AF2; c:1), (u:$16AF3; c:1), (u:$16AF4; c:1),\n    (u:$16B30; c:230), (u:$16B31; c:230), (u:$16B32; c:230), (u:$16B33; c:230),\n    (u:$16B34; c:230), (u:$16B35; c:230), (u:$16B36; c:230), (u:$16F4F; c:0),\n    (u:$16F51; c:210), (u:$16F52; c:210), (u:$16F53; c:210), (u:$16F54; c:210),\n    (u:$16F55; c:210), (u:$16F56; c:210), (u:$16F57; c:210), (u:$16F58; c:210),\n    (u:$16F59; c:210), (u:$16F5A; c:210), (u:$16F5B; c:210), (u:$16F5C; c:210),\n    (u:$16F5D; c:210), (u:$16F5E; c:210), (u:$16F5F; c:210), (u:$16F60; c:210),\n    (u:$16F61; c:210), (u:$16F62; c:210), (u:$16F63; c:210), (u:$16F64; c:210),\n    (u:$16F65; c:210), (u:$16F66; c:210), (u:$16F67; c:210), (u:$16F68; c:210),\n    (u:$16F69; c:210), (u:$16F6A; c:210), (u:$16F6B; c:210), (u:$16F6C; c:210),\n    (u:$16F6D; c:210), (u:$16F6E; c:210), (u:$16F6F; c:210), (u:$16F70; c:210),\n    (u:$16F71; c:210), (u:$16F72; c:210), (u:$16F73; c:210), (u:$16F74; c:210),\n    (u:$16F75; c:210), (u:$16F76; c:210), (u:$16F77; c:210), (u:$16F78; c:210),\n    (u:$16F79; c:210), (u:$16F7A; c:210), (u:$16F7B; c:210), (u:$16F7C; c:210),\n    (u:$16F7D; c:210), (u:$16F7E; c:210), (u:$16F7F; c:210), (u:$16F80; c:210),\n    (u:$16F81; c:210), (u:$16F82; c:210), (u:$16F83; c:210), (u:$16F84; c:210),\n    (u:$16F85; c:210), (u:$16F86; c:210), (u:$16F87; c:210), (u:$16F8F; c:0),\n    (u:$16F90; c:0), (u:$16F91; c:0), (u:$16F92; c:0), (u:$16FE4; c:0),\n    (u:$16FF0; c:6), (u:$16FF1; c:6), (u:$1BC9D; c:0), (u:$1BC9E; c:1),\n    (u:$1D165; c:216), (u:$1D166; c:216), (u:$1D167; c:1), (u:$1D168; c:1),\n    (u:$1D169; c:1), (u:$1D16D; c:226), (u:$1D16E; c:216), (u:$1D16F; c:216),\n    (u:$1D170; c:216), (u:$1D171; c:216), (u:$1D172; c:216), (u:$1D17B; c:220),\n    (u:$1D17C; c:220), (u:$1D17D; c:220), (u:$1D17E; c:220), (u:$1D17F; c:220),\n    (u:$1D180; c:220), (u:$1D181; c:220), (u:$1D182; c:220), (u:$1D185; c:230),\n    (u:$1D186; c:230), (u:$1D187; c:230), (u:$1D188; c:230), (u:$1D189; c:230),\n    (u:$1D18A; c:220), (u:$1D18B; c:220), (u:$1D1AA; c:230), (u:$1D1AB; c:230),\n    (u:$1D1AC; c:230), (u:$1D1AD; c:230), (u:$1D242; c:230), (u:$1D243; c:230),\n    (u:$1D244; c:230), (u:$1DA00; c:0), (u:$1DA01; c:0), (u:$1DA02; c:0),\n    (u:$1DA03; c:0), (u:$1DA04; c:0), (u:$1DA05; c:0), (u:$1DA06; c:0),\n    (u:$1DA07; c:0), (u:$1DA08; c:0), (u:$1DA09; c:0), (u:$1DA0A; c:0),\n    (u:$1DA0B; c:0), (u:$1DA0C; c:0), (u:$1DA0D; c:0), (u:$1DA0E; c:0),\n    (u:$1DA0F; c:0), (u:$1DA10; c:0), (u:$1DA11; c:0), (u:$1DA12; c:0),\n    (u:$1DA13; c:0), (u:$1DA14; c:0), (u:$1DA15; c:0), (u:$1DA16; c:0),\n    (u:$1DA17; c:0), (u:$1DA18; c:0), (u:$1DA19; c:0), (u:$1DA1A; c:0),\n    (u:$1DA1B; c:0), (u:$1DA1C; c:0), (u:$1DA1D; c:0), (u:$1DA1E; c:0),\n    (u:$1DA1F; c:0), (u:$1DA20; c:0), (u:$1DA21; c:0), (u:$1DA22; c:0),\n    (u:$1DA23; c:0), (u:$1DA24; c:0), (u:$1DA25; c:0), (u:$1DA26; c:0),\n    (u:$1DA27; c:0), (u:$1DA28; c:0), (u:$1DA29; c:0), (u:$1DA2A; c:0),\n    (u:$1DA2B; c:0), (u:$1DA2C; c:0), (u:$1DA2D; c:0), (u:$1DA2E; c:0),\n    (u:$1DA2F; c:0), (u:$1DA30; c:0), (u:$1DA31; c:0), (u:$1DA32; c:0),\n    (u:$1DA33; c:0), (u:$1DA34; c:0), (u:$1DA35; c:0), (u:$1DA36; c:0),\n    (u:$1DA3B; c:0), (u:$1DA3C; c:0), (u:$1DA3D; c:0), (u:$1DA3E; c:0),\n    (u:$1DA3F; c:0), (u:$1DA40; c:0), (u:$1DA41; c:0), (u:$1DA42; c:0),\n    (u:$1DA43; c:0), (u:$1DA44; c:0), (u:$1DA45; c:0), (u:$1DA46; c:0),\n    (u:$1DA47; c:0), (u:$1DA48; c:0), (u:$1DA49; c:0), (u:$1DA4A; c:0),\n    (u:$1DA4B; c:0), (u:$1DA4C; c:0), (u:$1DA4D; c:0), (u:$1DA4E; c:0),\n    (u:$1DA4F; c:0), (u:$1DA50; c:0), (u:$1DA51; c:0), (u:$1DA52; c:0),\n    (u:$1DA53; c:0), (u:$1DA54; c:0), (u:$1DA55; c:0), (u:$1DA56; c:0),\n    (u:$1DA57; c:0), (u:$1DA58; c:0), (u:$1DA59; c:0), (u:$1DA5A; c:0),\n    (u:$1DA5B; c:0), (u:$1DA5C; c:0), (u:$1DA5D; c:0), (u:$1DA5E; c:0),\n    (u:$1DA5F; c:0), (u:$1DA60; c:0), (u:$1DA61; c:0), (u:$1DA62; c:0),\n    (u:$1DA63; c:0), (u:$1DA64; c:0), (u:$1DA65; c:0), (u:$1DA66; c:0),\n    (u:$1DA67; c:0), (u:$1DA68; c:0), (u:$1DA69; c:0), (u:$1DA6A; c:0),\n    (u:$1DA6B; c:0), (u:$1DA6C; c:0), (u:$1DA75; c:0), (u:$1DA84; c:0),\n    (u:$1DA9B; c:0), (u:$1DA9C; c:0), (u:$1DA9D; c:0), (u:$1DA9E; c:0),\n    (u:$1DA9F; c:0), (u:$1DAA1; c:0), (u:$1DAA2; c:0), (u:$1DAA3; c:0),\n    (u:$1DAA4; c:0), (u:$1DAA5; c:0), (u:$1DAA6; c:0), (u:$1DAA7; c:0),\n    (u:$1DAA8; c:0), (u:$1DAA9; c:0), (u:$1DAAA; c:0), (u:$1DAAB; c:0),\n    (u:$1DAAC; c:0), (u:$1DAAD; c:0), (u:$1DAAE; c:0), (u:$1DAAF; c:0),\n    (u:$1E000; c:230), (u:$1E001; c:230), (u:$1E002; c:230), (u:$1E003; c:230),\n    (u:$1E004; c:230), (u:$1E005; c:230), (u:$1E006; c:230), (u:$1E008; c:230),\n    (u:$1E009; c:230), (u:$1E00A; c:230), (u:$1E00B; c:230), (u:$1E00C; c:230),\n    (u:$1E00D; c:230), (u:$1E00E; c:230), (u:$1E00F; c:230), (u:$1E010; c:230),\n    (u:$1E011; c:230), (u:$1E012; c:230), (u:$1E013; c:230), (u:$1E014; c:230),\n    (u:$1E015; c:230), (u:$1E016; c:230), (u:$1E017; c:230), (u:$1E018; c:230),\n    (u:$1E01B; c:230), (u:$1E01C; c:230), (u:$1E01D; c:230), (u:$1E01E; c:230),\n    (u:$1E01F; c:230), (u:$1E020; c:230), (u:$1E021; c:230), (u:$1E023; c:230),\n    (u:$1E024; c:230), (u:$1E026; c:230), (u:$1E027; c:230), (u:$1E028; c:230),\n    (u:$1E029; c:230), (u:$1E02A; c:230), (u:$1E130; c:230), (u:$1E131; c:230),\n    (u:$1E132; c:230), (u:$1E133; c:230), (u:$1E134; c:230), (u:$1E135; c:230),\n    (u:$1E136; c:230), (u:$1E2EC; c:230), (u:$1E2ED; c:230), (u:$1E2EE; c:230),\n    (u:$1E2EF; c:230), (u:$1E8D0; c:220), (u:$1E8D1; c:220), (u:$1E8D2; c:220),\n    (u:$1E8D3; c:220), (u:$1E8D4; c:220), (u:$1E8D5; c:220), (u:$1E8D6; c:220),\n    (u:$1E944; c:230), (u:$1E945; c:230), (u:$1E946; c:230), (u:$1E947; c:230),\n    (u:$1E948; c:230), (u:$1E949; c:230), (u:$1E94A; c:7), (u:$E0100; c:0),\n    (u:$E0101; c:0), (u:$E0102; c:0), (u:$E0103; c:0), (u:$E0104; c:0),\n    (u:$E0105; c:0), (u:$E0106; c:0), (u:$E0107; c:0), (u:$E0108; c:0),\n    (u:$E0109; c:0), (u:$E010A; c:0), (u:$E010B; c:0), (u:$E010C; c:0),\n    (u:$E010D; c:0), (u:$E010E; c:0), (u:$E010F; c:0), (u:$E0110; c:0),\n    (u:$E0111; c:0), (u:$E0112; c:0), (u:$E0113; c:0), (u:$E0114; c:0),\n    (u:$E0115; c:0), (u:$E0116; c:0), (u:$E0117; c:0), (u:$E0118; c:0),\n    (u:$E0119; c:0), (u:$E011A; c:0), (u:$E011B; c:0), (u:$E011C; c:0),\n    (u:$E011D; c:0), (u:$E011E; c:0), (u:$E011F; c:0), (u:$E0120; c:0),\n    (u:$E0121; c:0), (u:$E0122; c:0), (u:$E0123; c:0), (u:$E0124; c:0),\n    (u:$E0125; c:0), (u:$E0126; c:0), (u:$E0127; c:0), (u:$E0128; c:0),\n    (u:$E0129; c:0), (u:$E012A; c:0), (u:$E012B; c:0), (u:$E012C; c:0),\n    (u:$E012D; c:0), (u:$E012E; c:0), (u:$E012F; c:0), (u:$E0130; c:0),\n    (u:$E0131; c:0), (u:$E0132; c:0), (u:$E0133; c:0), (u:$E0134; c:0),\n    (u:$E0135; c:0), (u:$E0136; c:0), (u:$E0137; c:0), (u:$E0138; c:0),\n    (u:$E0139; c:0), (u:$E013A; c:0), (u:$E013B; c:0), (u:$E013C; c:0),\n    (u:$E013D; c:0), (u:$E013E; c:0), (u:$E013F; c:0), (u:$E0140; c:0),\n    (u:$E0141; c:0), (u:$E0142; c:0), (u:$E0143; c:0), (u:$E0144; c:0),\n    (u:$E0145; c:0), (u:$E0146; c:0), (u:$E0147; c:0), (u:$E0148; c:0),\n    (u:$E0149; c:0), (u:$E014A; c:0), (u:$E014B; c:0), (u:$E014C; c:0),\n    (u:$E014D; c:0), (u:$E014E; c:0), (u:$E014F; c:0), (u:$E0150; c:0),\n    (u:$E0151; c:0), (u:$E0152; c:0), (u:$E0153; c:0), (u:$E0154; c:0),\n    (u:$E0155; c:0), (u:$E0156; c:0), (u:$E0157; c:0), (u:$E0158; c:0),\n    (u:$E0159; c:0), (u:$E015A; c:0), (u:$E015B; c:0), (u:$E015C; c:0),\n    (u:$E015D; c:0), (u:$E015E; c:0), (u:$E015F; c:0), (u:$E0160; c:0),\n    (u:$E0161; c:0), (u:$E0162; c:0), (u:$E0163; c:0), (u:$E0164; c:0),\n    (u:$E0165; c:0), (u:$E0166; c:0), (u:$E0167; c:0), (u:$E0168; c:0),\n    (u:$E0169; c:0), (u:$E016A; c:0), (u:$E016B; c:0), (u:$E016C; c:0),\n    (u:$E016D; c:0), (u:$E016E; c:0), (u:$E016F; c:0), (u:$E0170; c:0),\n    (u:$E0171; c:0), (u:$E0172; c:0), (u:$E0173; c:0), (u:$E0174; c:0),\n    (u:$E0175; c:0), (u:$E0176; c:0), (u:$E0177; c:0), (u:$E0178; c:0),\n    (u:$E0179; c:0), (u:$E017A; c:0), (u:$E017B; c:0), (u:$E017C; c:0),\n    (u:$E017D; c:0), (u:$E017E; c:0), (u:$E017F; c:0), (u:$E0180; c:0),\n    (u:$E0181; c:0), (u:$E0182; c:0), (u:$E0183; c:0), (u:$E0184; c:0),\n    (u:$E0185; c:0), (u:$E0186; c:0), (u:$E0187; c:0), (u:$E0188; c:0),\n    (u:$E0189; c:0), (u:$E018A; c:0), (u:$E018B; c:0), (u:$E018C; c:0),\n    (u:$E018D; c:0), (u:$E018E; c:0), (u:$E018F; c:0), (u:$E0190; c:0),\n    (u:$E0191; c:0), (u:$E0192; c:0), (u:$E0193; c:0), (u:$E0194; c:0),\n    (u:$E0195; c:0), (u:$E0196; c:0), (u:$E0197; c:0), (u:$E0198; c:0),\n    (u:$E0199; c:0), (u:$E019A; c:0), (u:$E019B; c:0), (u:$E019C; c:0),\n    (u:$E019D; c:0), (u:$E019E; c:0), (u:$E019F; c:0), (u:$E01A0; c:0),\n    (u:$E01A1; c:0), (u:$E01A2; c:0), (u:$E01A3; c:0), (u:$E01A4; c:0),\n    (u:$E01A5; c:0), (u:$E01A6; c:0), (u:$E01A7; c:0), (u:$E01A8; c:0),\n    (u:$E01A9; c:0), (u:$E01AA; c:0), (u:$E01AB; c:0), (u:$E01AC; c:0),\n    (u:$E01AD; c:0), (u:$E01AE; c:0), (u:$E01AF; c:0), (u:$E01B0; c:0),\n    (u:$E01B1; c:0), (u:$E01B2; c:0), (u:$E01B3; c:0), (u:$E01B4; c:0),\n    (u:$E01B5; c:0), (u:$E01B6; c:0), (u:$E01B7; c:0), (u:$E01B8; c:0),\n    (u:$E01B9; c:0), (u:$E01BA; c:0), (u:$E01BB; c:0), (u:$E01BC; c:0),\n    (u:$E01BD; c:0), (u:$E01BE; c:0), (u:$E01BF; c:0), (u:$E01C0; c:0),\n    (u:$E01C1; c:0), (u:$E01C2; c:0), (u:$E01C3; c:0), (u:$E01C4; c:0),\n    (u:$E01C5; c:0), (u:$E01C6; c:0), (u:$E01C7; c:0), (u:$E01C8; c:0),\n    (u:$E01C9; c:0), (u:$E01CA; c:0), (u:$E01CB; c:0), (u:$E01CC; c:0),\n    (u:$E01CD; c:0), (u:$E01CE; c:0), (u:$E01CF; c:0), (u:$E01D0; c:0),\n    (u:$E01D1; c:0), (u:$E01D2; c:0), (u:$E01D3; c:0), (u:$E01D4; c:0),\n    (u:$E01D5; c:0), (u:$E01D6; c:0), (u:$E01D7; c:0), (u:$E01D8; c:0),\n    (u:$E01D9; c:0), (u:$E01DA; c:0), (u:$E01DB; c:0), (u:$E01DC; c:0),\n    (u:$E01DD; c:0), (u:$E01DE; c:0), (u:$E01DF; c:0), (u:$E01E0; c:0),\n    (u:$E01E1; c:0), (u:$E01E2; c:0), (u:$E01E3; c:0), (u:$E01E4; c:0),\n    (u:$E01E5; c:0), (u:$E01E6; c:0), (u:$E01E7; c:0), (u:$E01E8; c:0),\n    (u:$E01E9; c:0), (u:$E01EA; c:0), (u:$E01EB; c:0), (u:$E01EC; c:0),\n    (u:$E01ED; c:0), (u:$E01EE; c:0), (u:$E01EF; c:0)\n  );\n\n"
  },
  {
    "path": "bgrabitmap/generatedutf8.inc",
    "content": "{ This file is generated by dev/parseunicode/parseunicodeclasses program }\ntype\n  TArabicJoin = (arNone, arInitial, arMedial, arFinal, arIsolated);\n  TUTF8Decomposition = record\n    de, re: string; //decomposed, recomposed UTF8\n    join: TArabicJoin;\n  end;\nconst\n  UTF8Decomposition : array[0..1219] of TUTF8Decomposition = (\n  (de:'≮'; re:'≮'; join:arNone),\n  (de:'≠'; re:'≠'; join:arNone),\n  (de:'≯'; re:'≯'; join:arNone),\n  (de:'À'; re:'À'; join:arNone),\n  (de:'Á'; re:'Á'; join:arNone),\n  (de:'Â'; re:'Â'; join:arNone),\n  (de:'Ã'; re:'Ã'; join:arNone),\n  (de:'Ā'; re:'Ā'; join:arNone),\n  (de:'Ă'; re:'Ă'; join:arNone),\n  (de:'Ȧ'; re:'Ȧ'; join:arNone),\n  (de:'Ä'; re:'Ä'; join:arNone),\n  (de:'Ả'; re:'Ả'; join:arNone),\n  (de:'Å'; re:'Å'; join:arNone),\n  (de:'Ǎ'; re:'Ǎ'; join:arNone),\n  (de:'Ȁ'; re:'Ȁ'; join:arNone),\n  (de:'Ȃ'; re:'Ȃ'; join:arNone),\n  (de:'Ạ'; re:'Ạ'; join:arNone),\n  (de:'Ḁ'; re:'Ḁ'; join:arNone),\n  (de:'Ą'; re:'Ą'; join:arNone),\n  (de:'Ḃ'; re:'Ḃ'; join:arNone),\n  (de:'Ḅ'; re:'Ḅ'; join:arNone),\n  (de:'Ḇ'; re:'Ḇ'; join:arNone),\n  (de:'Ć'; re:'Ć'; join:arNone),\n  (de:'Ĉ'; re:'Ĉ'; join:arNone),\n  (de:'Ċ'; re:'Ċ'; join:arNone),\n  (de:'Č'; re:'Č'; join:arNone),\n  (de:'Ç'; re:'Ç'; join:arNone),\n  (de:'Ḋ'; re:'Ḋ'; join:arNone),\n  (de:'Ď'; re:'Ď'; join:arNone),\n  (de:'Ḍ'; re:'Ḍ'; join:arNone),\n  (de:'Ḑ'; re:'Ḑ'; join:arNone),\n  (de:'Ḓ'; re:'Ḓ'; join:arNone),\n  (de:'Ḏ'; re:'Ḏ'; join:arNone),\n  (de:'È'; re:'È'; join:arNone),\n  (de:'É'; re:'É'; join:arNone),\n  (de:'Ê'; re:'Ê'; join:arNone),\n  (de:'Ẽ'; re:'Ẽ'; join:arNone),\n  (de:'Ē'; re:'Ē'; join:arNone),\n  (de:'Ĕ'; re:'Ĕ'; join:arNone),\n  (de:'Ė'; re:'Ė'; join:arNone),\n  (de:'Ë'; re:'Ë'; join:arNone),\n  (de:'Ẻ'; re:'Ẻ'; join:arNone),\n  (de:'Ě'; re:'Ě'; join:arNone),\n  (de:'Ȅ'; re:'Ȅ'; join:arNone),\n  (de:'Ȇ'; re:'Ȇ'; join:arNone),\n  (de:'Ẹ'; re:'Ẹ'; join:arNone),\n  (de:'Ȩ'; re:'Ȩ'; join:arNone),\n  (de:'Ę'; re:'Ę'; join:arNone),\n  (de:'Ḙ'; re:'Ḙ'; join:arNone),\n  (de:'Ḛ'; re:'Ḛ'; join:arNone),\n  (de:'Ḟ'; re:'Ḟ'; join:arNone),\n  (de:'Ǵ'; re:'Ǵ'; join:arNone),\n  (de:'Ĝ'; re:'Ĝ'; join:arNone),\n  (de:'Ḡ'; re:'Ḡ'; join:arNone),\n  (de:'Ğ'; re:'Ğ'; join:arNone),\n  (de:'Ġ'; re:'Ġ'; join:arNone),\n  (de:'Ǧ'; re:'Ǧ'; join:arNone),\n  (de:'Ģ'; re:'Ģ'; join:arNone),\n  (de:'Ĥ'; re:'Ĥ'; join:arNone),\n  (de:'Ḣ'; re:'Ḣ'; join:arNone),\n  (de:'Ḧ'; re:'Ḧ'; join:arNone),\n  (de:'Ȟ'; re:'Ȟ'; join:arNone),\n  (de:'Ḥ'; re:'Ḥ'; join:arNone),\n  (de:'Ḩ'; re:'Ḩ'; join:arNone),\n  (de:'Ḫ'; re:'Ḫ'; join:arNone),\n  (de:'Ì'; re:'Ì'; join:arNone),\n  (de:'Í'; re:'Í'; join:arNone),\n  (de:'Î'; re:'Î'; join:arNone),\n  (de:'Ĩ'; re:'Ĩ'; join:arNone),\n  (de:'Ī'; re:'Ī'; join:arNone),\n  (de:'Ĭ'; re:'Ĭ'; join:arNone),\n  (de:'İ'; re:'İ'; join:arNone),\n  (de:'Ï'; re:'Ï'; join:arNone),\n  (de:'Ỉ'; re:'Ỉ'; join:arNone),\n  (de:'Ǐ'; re:'Ǐ'; join:arNone),\n  (de:'Ȉ'; re:'Ȉ'; join:arNone),\n  (de:'Ȋ'; re:'Ȋ'; join:arNone),\n  (de:'Ị'; re:'Ị'; join:arNone),\n  (de:'Į'; re:'Į'; join:arNone),\n  (de:'Ḭ'; re:'Ḭ'; join:arNone),\n  (de:'Ĵ'; re:'Ĵ'; join:arNone),\n  (de:'Ḱ'; re:'Ḱ'; join:arNone),\n  (de:'Ǩ'; re:'Ǩ'; join:arNone),\n  (de:'Ḳ'; re:'Ḳ'; join:arNone),\n  (de:'Ķ'; re:'Ķ'; join:arNone),\n  (de:'Ḵ'; re:'Ḵ'; join:arNone),\n  (de:'Ĺ'; re:'Ĺ'; join:arNone),\n  (de:'Ľ'; re:'Ľ'; join:arNone),\n  (de:'Ḷ'; re:'Ḷ'; join:arNone),\n  (de:'Ļ'; re:'Ļ'; join:arNone),\n  (de:'Ḽ'; re:'Ḽ'; join:arNone),\n  (de:'Ḻ'; re:'Ḻ'; join:arNone),\n  (de:'Ḿ'; re:'Ḿ'; join:arNone),\n  (de:'Ṁ'; re:'Ṁ'; join:arNone),\n  (de:'Ṃ'; re:'Ṃ'; join:arNone),\n  (de:'Ǹ'; re:'Ǹ'; join:arNone),\n  (de:'Ń'; re:'Ń'; join:arNone),\n  (de:'Ñ'; re:'Ñ'; join:arNone),\n  (de:'Ṅ'; re:'Ṅ'; join:arNone),\n  (de:'Ň'; re:'Ň'; join:arNone),\n  (de:'Ṇ'; re:'Ṇ'; join:arNone),\n  (de:'Ņ'; re:'Ņ'; join:arNone),\n  (de:'Ṋ'; re:'Ṋ'; join:arNone),\n  (de:'Ṉ'; re:'Ṉ'; join:arNone),\n  (de:'Ò'; re:'Ò'; join:arNone),\n  (de:'Ó'; re:'Ó'; join:arNone),\n  (de:'Ô'; re:'Ô'; join:arNone),\n  (de:'Õ'; re:'Õ'; join:arNone),\n  (de:'Ō'; re:'Ō'; join:arNone),\n  (de:'Ŏ'; re:'Ŏ'; join:arNone),\n  (de:'Ȯ'; re:'Ȯ'; join:arNone),\n  (de:'Ö'; re:'Ö'; join:arNone),\n  (de:'Ỏ'; re:'Ỏ'; join:arNone),\n  (de:'Ő'; re:'Ő'; join:arNone),\n  (de:'Ǒ'; re:'Ǒ'; join:arNone),\n  (de:'Ȍ'; re:'Ȍ'; join:arNone),\n  (de:'Ȏ'; re:'Ȏ'; join:arNone),\n  (de:'Ơ'; re:'Ơ'; join:arNone),\n  (de:'Ọ'; re:'Ọ'; join:arNone),\n  (de:'Ǫ'; re:'Ǫ'; join:arNone),\n  (de:'Ṕ'; re:'Ṕ'; join:arNone),\n  (de:'Ṗ'; re:'Ṗ'; join:arNone),\n  (de:'Ŕ'; re:'Ŕ'; join:arNone),\n  (de:'Ṙ'; re:'Ṙ'; join:arNone),\n  (de:'Ř'; re:'Ř'; join:arNone),\n  (de:'Ȑ'; re:'Ȑ'; join:arNone),\n  (de:'Ȓ'; re:'Ȓ'; join:arNone),\n  (de:'Ṛ'; re:'Ṛ'; join:arNone),\n  (de:'Ŗ'; re:'Ŗ'; join:arNone),\n  (de:'Ṟ'; re:'Ṟ'; join:arNone),\n  (de:'Ś'; re:'Ś'; join:arNone),\n  (de:'Ŝ'; re:'Ŝ'; join:arNone),\n  (de:'Ṡ'; re:'Ṡ'; join:arNone),\n  (de:'Š'; re:'Š'; join:arNone),\n  (de:'Ṣ'; re:'Ṣ'; join:arNone),\n  (de:'Ș'; re:'Ș'; join:arNone),\n  (de:'Ş'; re:'Ş'; join:arNone),\n  (de:'Ṫ'; re:'Ṫ'; join:arNone),\n  (de:'Ť'; re:'Ť'; join:arNone),\n  (de:'Ṭ'; re:'Ṭ'; join:arNone),\n  (de:'Ț'; re:'Ț'; join:arNone),\n  (de:'Ţ'; re:'Ţ'; join:arNone),\n  (de:'Ṱ'; re:'Ṱ'; join:arNone),\n  (de:'Ṯ'; re:'Ṯ'; join:arNone),\n  (de:'Ù'; re:'Ù'; join:arNone),\n  (de:'Ú'; re:'Ú'; join:arNone),\n  (de:'Û'; re:'Û'; join:arNone),\n  (de:'Ũ'; re:'Ũ'; join:arNone),\n  (de:'Ū'; re:'Ū'; join:arNone),\n  (de:'Ŭ'; re:'Ŭ'; join:arNone),\n  (de:'Ü'; re:'Ü'; join:arNone),\n  (de:'Ủ'; re:'Ủ'; join:arNone),\n  (de:'Ů'; re:'Ů'; join:arNone),\n  (de:'Ű'; re:'Ű'; join:arNone),\n  (de:'Ǔ'; re:'Ǔ'; join:arNone),\n  (de:'Ȕ'; re:'Ȕ'; join:arNone),\n  (de:'Ȗ'; re:'Ȗ'; join:arNone),\n  (de:'Ư'; re:'Ư'; join:arNone),\n  (de:'Ụ'; re:'Ụ'; join:arNone),\n  (de:'Ṳ'; re:'Ṳ'; join:arNone),\n  (de:'Ų'; re:'Ų'; join:arNone),\n  (de:'Ṷ'; re:'Ṷ'; join:arNone),\n  (de:'Ṵ'; re:'Ṵ'; join:arNone),\n  (de:'Ṽ'; re:'Ṽ'; join:arNone),\n  (de:'Ṿ'; re:'Ṿ'; join:arNone),\n  (de:'Ẁ'; re:'Ẁ'; join:arNone),\n  (de:'Ẃ'; re:'Ẃ'; join:arNone),\n  (de:'Ŵ'; re:'Ŵ'; join:arNone),\n  (de:'Ẇ'; re:'Ẇ'; join:arNone),\n  (de:'Ẅ'; re:'Ẅ'; join:arNone),\n  (de:'Ẉ'; re:'Ẉ'; join:arNone),\n  (de:'Ẋ'; re:'Ẋ'; join:arNone),\n  (de:'Ẍ'; re:'Ẍ'; join:arNone),\n  (de:'Ỳ'; re:'Ỳ'; join:arNone),\n  (de:'Ý'; re:'Ý'; join:arNone),\n  (de:'Ŷ'; re:'Ŷ'; join:arNone),\n  (de:'Ỹ'; re:'Ỹ'; join:arNone),\n  (de:'Ȳ'; re:'Ȳ'; join:arNone),\n  (de:'Ẏ'; re:'Ẏ'; join:arNone),\n  (de:'Ÿ'; re:'Ÿ'; join:arNone),\n  (de:'Ỷ'; re:'Ỷ'; join:arNone),\n  (de:'Ỵ'; re:'Ỵ'; join:arNone),\n  (de:'Ź'; re:'Ź'; join:arNone),\n  (de:'Ẑ'; re:'Ẑ'; join:arNone),\n  (de:'Ż'; re:'Ż'; join:arNone),\n  (de:'Ž'; re:'Ž'; join:arNone),\n  (de:'Ẓ'; re:'Ẓ'; join:arNone),\n  (de:'Ẕ'; re:'Ẕ'; join:arNone),\n  (de:'à'; re:'à'; join:arNone),\n  (de:'á'; re:'á'; join:arNone),\n  (de:'â'; re:'â'; join:arNone),\n  (de:'ã'; re:'ã'; join:arNone),\n  (de:'ā'; re:'ā'; join:arNone),\n  (de:'ă'; re:'ă'; join:arNone),\n  (de:'ȧ'; re:'ȧ'; join:arNone),\n  (de:'ä'; re:'ä'; join:arNone),\n  (de:'ả'; re:'ả'; join:arNone),\n  (de:'å'; re:'å'; join:arNone),\n  (de:'ǎ'; re:'ǎ'; join:arNone),\n  (de:'ȁ'; re:'ȁ'; join:arNone),\n  (de:'ȃ'; re:'ȃ'; join:arNone),\n  (de:'ạ'; re:'ạ'; join:arNone),\n  (de:'ḁ'; re:'ḁ'; join:arNone),\n  (de:'ą'; re:'ą'; join:arNone),\n  (de:'ḃ'; re:'ḃ'; join:arNone),\n  (de:'ḅ'; re:'ḅ'; join:arNone),\n  (de:'ḇ'; re:'ḇ'; join:arNone),\n  (de:'ć'; re:'ć'; join:arNone),\n  (de:'ĉ'; re:'ĉ'; join:arNone),\n  (de:'ċ'; re:'ċ'; join:arNone),\n  (de:'č'; re:'č'; join:arNone),\n  (de:'ç'; re:'ç'; join:arNone),\n  (de:'ḋ'; re:'ḋ'; join:arNone),\n  (de:'ď'; re:'ď'; join:arNone),\n  (de:'ḍ'; re:'ḍ'; join:arNone),\n  (de:'ḑ'; re:'ḑ'; join:arNone),\n  (de:'ḓ'; re:'ḓ'; join:arNone),\n  (de:'ḏ'; re:'ḏ'; join:arNone),\n  (de:'è'; re:'è'; join:arNone),\n  (de:'é'; re:'é'; join:arNone),\n  (de:'ê'; re:'ê'; join:arNone),\n  (de:'ẽ'; re:'ẽ'; join:arNone),\n  (de:'ē'; re:'ē'; join:arNone),\n  (de:'ĕ'; re:'ĕ'; join:arNone),\n  (de:'ė'; re:'ė'; join:arNone),\n  (de:'ë'; re:'ë'; join:arNone),\n  (de:'ẻ'; re:'ẻ'; join:arNone),\n  (de:'ě'; re:'ě'; join:arNone),\n  (de:'ȅ'; re:'ȅ'; join:arNone),\n  (de:'ȇ'; re:'ȇ'; join:arNone),\n  (de:'ẹ'; re:'ẹ'; join:arNone),\n  (de:'ȩ'; re:'ȩ'; join:arNone),\n  (de:'ę'; re:'ę'; join:arNone),\n  (de:'ḙ'; re:'ḙ'; join:arNone),\n  (de:'ḛ'; re:'ḛ'; join:arNone),\n  (de:'ff'; re:'ﬀ'; join:arNone),\n  (de:'ffi'; re:'ﬃ'; join:arNone),\n  (de:'ffl'; re:'ﬄ'; join:arNone),\n  (de:'fi'; re:'ﬁ'; join:arNone),\n  (de:'fl'; re:'ﬂ'; join:arNone),\n  (de:'ḟ'; re:'ḟ'; join:arNone),\n  (de:'ǵ'; re:'ǵ'; join:arNone),\n  (de:'ĝ'; re:'ĝ'; join:arNone),\n  (de:'ḡ'; re:'ḡ'; join:arNone),\n  (de:'ğ'; re:'ğ'; join:arNone),\n  (de:'ġ'; re:'ġ'; join:arNone),\n  (de:'ǧ'; re:'ǧ'; join:arNone),\n  (de:'ģ'; re:'ģ'; join:arNone),\n  (de:'ĥ'; re:'ĥ'; join:arNone),\n  (de:'ḣ'; re:'ḣ'; join:arNone),\n  (de:'ḧ'; re:'ḧ'; join:arNone),\n  (de:'ȟ'; re:'ȟ'; join:arNone),\n  (de:'ḥ'; re:'ḥ'; join:arNone),\n  (de:'ḩ'; re:'ḩ'; join:arNone),\n  (de:'ḫ'; re:'ḫ'; join:arNone),\n  (de:'ẖ'; re:'ẖ'; join:arNone),\n  (de:'ì'; re:'ì'; join:arNone),\n  (de:'í'; re:'í'; join:arNone),\n  (de:'î'; re:'î'; join:arNone),\n  (de:'ĩ'; re:'ĩ'; join:arNone),\n  (de:'ī'; re:'ī'; join:arNone),\n  (de:'ĭ'; re:'ĭ'; join:arNone),\n  (de:'ï'; re:'ï'; join:arNone),\n  (de:'ỉ'; re:'ỉ'; join:arNone),\n  (de:'ǐ'; re:'ǐ'; join:arNone),\n  (de:'ȉ'; re:'ȉ'; join:arNone),\n  (de:'ȋ'; re:'ȋ'; join:arNone),\n  (de:'ị'; re:'ị'; join:arNone),\n  (de:'į'; re:'į'; join:arNone),\n  (de:'ḭ'; re:'ḭ'; join:arNone),\n  (de:'ĵ'; re:'ĵ'; join:arNone),\n  (de:'ǰ'; re:'ǰ'; join:arNone),\n  (de:'ḱ'; re:'ḱ'; join:arNone),\n  (de:'ǩ'; re:'ǩ'; join:arNone),\n  (de:'ḳ'; re:'ḳ'; join:arNone),\n  (de:'ķ'; re:'ķ'; join:arNone),\n  (de:'ḵ'; re:'ḵ'; join:arNone),\n  (de:'ĺ'; re:'ĺ'; join:arNone),\n  (de:'ľ'; re:'ľ'; join:arNone),\n  (de:'ḷ'; re:'ḷ'; join:arNone),\n  (de:'ļ'; re:'ļ'; join:arNone),\n  (de:'ḽ'; re:'ḽ'; join:arNone),\n  (de:'ḻ'; re:'ḻ'; join:arNone),\n  (de:'ḿ'; re:'ḿ'; join:arNone),\n  (de:'ṁ'; re:'ṁ'; join:arNone),\n  (de:'ṃ'; re:'ṃ'; join:arNone),\n  (de:'ǹ'; re:'ǹ'; join:arNone),\n  (de:'ń'; re:'ń'; join:arNone),\n  (de:'ñ'; re:'ñ'; join:arNone),\n  (de:'ṅ'; re:'ṅ'; join:arNone),\n  (de:'ň'; re:'ň'; join:arNone),\n  (de:'ṇ'; re:'ṇ'; join:arNone),\n  (de:'ņ'; re:'ņ'; join:arNone),\n  (de:'ṋ'; re:'ṋ'; join:arNone),\n  (de:'ṉ'; re:'ṉ'; join:arNone),\n  (de:'ò'; re:'ò'; join:arNone),\n  (de:'ó'; re:'ó'; join:arNone),\n  (de:'ô'; re:'ô'; join:arNone),\n  (de:'õ'; re:'õ'; join:arNone),\n  (de:'ō'; re:'ō'; join:arNone),\n  (de:'ŏ'; re:'ŏ'; join:arNone),\n  (de:'ȯ'; re:'ȯ'; join:arNone),\n  (de:'ö'; re:'ö'; join:arNone),\n  (de:'ỏ'; re:'ỏ'; join:arNone),\n  (de:'ő'; re:'ő'; join:arNone),\n  (de:'ǒ'; re:'ǒ'; join:arNone),\n  (de:'ȍ'; re:'ȍ'; join:arNone),\n  (de:'ȏ'; re:'ȏ'; join:arNone),\n  (de:'ơ'; re:'ơ'; join:arNone),\n  (de:'ọ'; re:'ọ'; join:arNone),\n  (de:'ǫ'; re:'ǫ'; join:arNone),\n  (de:'ṕ'; re:'ṕ'; join:arNone),\n  (de:'ṗ'; re:'ṗ'; join:arNone),\n  (de:'ŕ'; re:'ŕ'; join:arNone),\n  (de:'ṙ'; re:'ṙ'; join:arNone),\n  (de:'ř'; re:'ř'; join:arNone),\n  (de:'ȑ'; re:'ȑ'; join:arNone),\n  (de:'ȓ'; re:'ȓ'; join:arNone),\n  (de:'ṛ'; re:'ṛ'; join:arNone),\n  (de:'ŗ'; re:'ŗ'; join:arNone),\n  (de:'ṟ'; re:'ṟ'; join:arNone),\n  (de:'ś'; re:'ś'; join:arNone),\n  (de:'ŝ'; re:'ŝ'; join:arNone),\n  (de:'ṡ'; re:'ṡ'; join:arNone),\n  (de:'š'; re:'š'; join:arNone),\n  (de:'ṣ'; re:'ṣ'; join:arNone),\n  (de:'ș'; re:'ș'; join:arNone),\n  (de:'ş'; re:'ş'; join:arNone),\n  (de:'ṫ'; re:'ṫ'; join:arNone),\n  (de:'ẗ'; re:'ẗ'; join:arNone),\n  (de:'ť'; re:'ť'; join:arNone),\n  (de:'ṭ'; re:'ṭ'; join:arNone),\n  (de:'ț'; re:'ț'; join:arNone),\n  (de:'ţ'; re:'ţ'; join:arNone),\n  (de:'ṱ'; re:'ṱ'; join:arNone),\n  (de:'ṯ'; re:'ṯ'; join:arNone),\n  (de:'ù'; re:'ù'; join:arNone),\n  (de:'ú'; re:'ú'; join:arNone),\n  (de:'û'; re:'û'; join:arNone),\n  (de:'ũ'; re:'ũ'; join:arNone),\n  (de:'ū'; re:'ū'; join:arNone),\n  (de:'ŭ'; re:'ŭ'; join:arNone),\n  (de:'ü'; re:'ü'; join:arNone),\n  (de:'ủ'; re:'ủ'; join:arNone),\n  (de:'ů'; re:'ů'; join:arNone),\n  (de:'ű'; re:'ű'; join:arNone),\n  (de:'ǔ'; re:'ǔ'; join:arNone),\n  (de:'ȕ'; re:'ȕ'; join:arNone),\n  (de:'ȗ'; re:'ȗ'; join:arNone),\n  (de:'ư'; re:'ư'; join:arNone),\n  (de:'ụ'; re:'ụ'; join:arNone),\n  (de:'ṳ'; re:'ṳ'; join:arNone),\n  (de:'ų'; re:'ų'; join:arNone),\n  (de:'ṷ'; re:'ṷ'; join:arNone),\n  (de:'ṵ'; re:'ṵ'; join:arNone),\n  (de:'ṽ'; re:'ṽ'; join:arNone),\n  (de:'ṿ'; re:'ṿ'; join:arNone),\n  (de:'ẁ'; re:'ẁ'; join:arNone),\n  (de:'ẃ'; re:'ẃ'; join:arNone),\n  (de:'ŵ'; re:'ŵ'; join:arNone),\n  (de:'ẇ'; re:'ẇ'; join:arNone),\n  (de:'ẅ'; re:'ẅ'; join:arNone),\n  (de:'ẘ'; re:'ẘ'; join:arNone),\n  (de:'ẉ'; re:'ẉ'; join:arNone),\n  (de:'ẋ'; re:'ẋ'; join:arNone),\n  (de:'ẍ'; re:'ẍ'; join:arNone),\n  (de:'ỳ'; re:'ỳ'; join:arNone),\n  (de:'ý'; re:'ý'; join:arNone),\n  (de:'ŷ'; re:'ŷ'; join:arNone),\n  (de:'ỹ'; re:'ỹ'; join:arNone),\n  (de:'ȳ'; re:'ȳ'; join:arNone),\n  (de:'ẏ'; re:'ẏ'; join:arNone),\n  (de:'ÿ'; re:'ÿ'; join:arNone),\n  (de:'ỷ'; re:'ỷ'; join:arNone),\n  (de:'ẙ'; re:'ẙ'; join:arNone),\n  (de:'ỵ'; re:'ỵ'; join:arNone),\n  (de:'ź'; re:'ź'; join:arNone),\n  (de:'ẑ'; re:'ẑ'; join:arNone),\n  (de:'ż'; re:'ż'; join:arNone),\n  (de:'ž'; re:'ž'; join:arNone),\n  (de:'ẓ'; re:'ẓ'; join:arNone),\n  (de:'ẕ'; re:'ẕ'; join:arNone),\n  (de:'῭'; re:'῭'; join:arNone),\n  (de:'΅'; re:'΅'; join:arNone),\n  (de:'῁'; re:'῁'; join:arNone),\n  (de:'Ầ'; re:'Ầ'; join:arNone),\n  (de:'Ấ'; re:'Ấ'; join:arNone),\n  (de:'Ẫ'; re:'Ẫ'; join:arNone),\n  (de:'Ẩ'; re:'Ẩ'; join:arNone),\n  (de:'Ǟ'; re:'Ǟ'; join:arNone),\n  (de:'Ǻ'; re:'Ǻ'; join:arNone),\n  (de:'Ǽ'; re:'Ǽ'; join:arNone),\n  (de:'Ǣ'; re:'Ǣ'; join:arNone),\n  (de:'Ḉ'; re:'Ḉ'; join:arNone),\n  (de:'Ề'; re:'Ề'; join:arNone),\n  (de:'Ế'; re:'Ế'; join:arNone),\n  (de:'Ễ'; re:'Ễ'; join:arNone),\n  (de:'Ể'; re:'Ể'; join:arNone),\n  (de:'Ḯ'; re:'Ḯ'; join:arNone),\n  (de:'Ồ'; re:'Ồ'; join:arNone),\n  (de:'Ố'; re:'Ố'; join:arNone),\n  (de:'Ỗ'; re:'Ỗ'; join:arNone),\n  (de:'Ổ'; re:'Ổ'; join:arNone),\n  (de:'Ṍ'; re:'Ṍ'; join:arNone),\n  (de:'Ȭ'; re:'Ȭ'; join:arNone),\n  (de:'Ṏ'; re:'Ṏ'; join:arNone),\n  (de:'Ȫ'; re:'Ȫ'; join:arNone),\n  (de:'Ǿ'; re:'Ǿ'; join:arNone),\n  (de:'Ǜ'; re:'Ǜ'; join:arNone),\n  (de:'Ǘ'; re:'Ǘ'; join:arNone),\n  (de:'Ǖ'; re:'Ǖ'; join:arNone),\n  (de:'Ǚ'; re:'Ǚ'; join:arNone),\n  (de:'ầ'; re:'ầ'; join:arNone),\n  (de:'ấ'; re:'ấ'; join:arNone),\n  (de:'ẫ'; re:'ẫ'; join:arNone),\n  (de:'ẩ'; re:'ẩ'; join:arNone),\n  (de:'ǟ'; re:'ǟ'; join:arNone),\n  (de:'ǻ'; re:'ǻ'; join:arNone),\n  (de:'ǽ'; re:'ǽ'; join:arNone),\n  (de:'ǣ'; re:'ǣ'; join:arNone),\n  (de:'ḉ'; re:'ḉ'; join:arNone),\n  (de:'ề'; re:'ề'; join:arNone),\n  (de:'ế'; re:'ế'; join:arNone),\n  (de:'ễ'; re:'ễ'; join:arNone),\n  (de:'ể'; re:'ể'; join:arNone),\n  (de:'ḯ'; re:'ḯ'; join:arNone),\n  (de:'ồ'; re:'ồ'; join:arNone),\n  (de:'ố'; re:'ố'; join:arNone),\n  (de:'ỗ'; re:'ỗ'; join:arNone),\n  (de:'ổ'; re:'ổ'; join:arNone),\n  (de:'ṍ'; re:'ṍ'; join:arNone),\n  (de:'ȭ'; re:'ȭ'; join:arNone),\n  (de:'ṏ'; re:'ṏ'; join:arNone),\n  (de:'ȫ'; re:'ȫ'; join:arNone),\n  (de:'ǿ'; re:'ǿ'; join:arNone),\n  (de:'ǜ'; re:'ǜ'; join:arNone),\n  (de:'ǘ'; re:'ǘ'; join:arNone),\n  (de:'ǖ'; re:'ǖ'; join:arNone),\n  (de:'ǚ'; re:'ǚ'; join:arNone),\n  (de:'Ằ'; re:'Ằ'; join:arNone),\n  (de:'Ắ'; re:'Ắ'; join:arNone),\n  (de:'Ẵ'; re:'Ẵ'; join:arNone),\n  (de:'Ẳ'; re:'Ẳ'; join:arNone),\n  (de:'ằ'; re:'ằ'; join:arNone),\n  (de:'ắ'; re:'ắ'; join:arNone),\n  (de:'ẵ'; re:'ẵ'; join:arNone),\n  (de:'ẳ'; re:'ẳ'; join:arNone),\n  (de:'Ḕ'; re:'Ḕ'; join:arNone),\n  (de:'Ḗ'; re:'Ḗ'; join:arNone),\n  (de:'ḕ'; re:'ḕ'; join:arNone),\n  (de:'ḗ'; re:'ḗ'; join:arNone),\n  (de:'Ṑ'; re:'Ṑ'; join:arNone),\n  (de:'Ṓ'; re:'Ṓ'; join:arNone),\n  (de:'ṑ'; re:'ṑ'; join:arNone),\n  (de:'ṓ'; re:'ṓ'; join:arNone),\n  (de:'Ṥ'; re:'Ṥ'; join:arNone),\n  (de:'ṥ'; re:'ṥ'; join:arNone),\n  (de:'Ṧ'; re:'Ṧ'; join:arNone),\n  (de:'ṧ'; re:'ṧ'; join:arNone),\n  (de:'Ṹ'; re:'Ṹ'; join:arNone),\n  (de:'ṹ'; re:'ṹ'; join:arNone),\n  (de:'Ṻ'; re:'Ṻ'; join:arNone),\n  (de:'ṻ'; re:'ṻ'; join:arNone),\n  (de:'ẛ'; re:'ẛ'; join:arNone),\n  (de:'Ờ'; re:'Ờ'; join:arNone),\n  (de:'Ớ'; re:'Ớ'; join:arNone),\n  (de:'Ỡ'; re:'Ỡ'; join:arNone),\n  (de:'Ở'; re:'Ở'; join:arNone),\n  (de:'Ợ'; re:'Ợ'; join:arNone),\n  (de:'ờ'; re:'ờ'; join:arNone),\n  (de:'ớ'; re:'ớ'; join:arNone),\n  (de:'ỡ'; re:'ỡ'; join:arNone),\n  (de:'ở'; re:'ở'; join:arNone),\n  (de:'ợ'; re:'ợ'; join:arNone),\n  (de:'Ừ'; re:'Ừ'; join:arNone),\n  (de:'Ứ'; re:'Ứ'; join:arNone),\n  (de:'Ữ'; re:'Ữ'; join:arNone),\n  (de:'Ử'; re:'Ử'; join:arNone),\n  (de:'Ự'; re:'Ự'; join:arNone),\n  (de:'ừ'; re:'ừ'; join:arNone),\n  (de:'ứ'; re:'ứ'; join:arNone),\n  (de:'ữ'; re:'ữ'; join:arNone),\n  (de:'ử'; re:'ử'; join:arNone),\n  (de:'ự'; re:'ự'; join:arNone),\n  (de:'Ǯ'; re:'Ǯ'; join:arNone),\n  (de:'Ǭ'; re:'Ǭ'; join:arNone),\n  (de:'ǭ'; re:'ǭ'; join:arNone),\n  (de:'Ǡ'; re:'Ǡ'; join:arNone),\n  (de:'ǡ'; re:'ǡ'; join:arNone),\n  (de:'Ḝ'; re:'Ḝ'; join:arNone),\n  (de:'ḝ'; re:'ḝ'; join:arNone),\n  (de:'Ȱ'; re:'Ȱ'; join:arNone),\n  (de:'ȱ'; re:'ȱ'; join:arNone),\n  (de:'ǯ'; re:'ǯ'; join:arNone),\n  (de:'Ὰ'; re:'Ὰ'; join:arNone),\n  (de:'Ά'; re:'Ά'; join:arNone),\n  (de:'Ᾱ'; re:'Ᾱ'; join:arNone),\n  (de:'Ᾰ'; re:'Ᾰ'; join:arNone),\n  (de:'Ἀ'; re:'Ἀ'; join:arNone),\n  (de:'Ἁ'; re:'Ἁ'; join:arNone),\n  (de:'ᾼ'; re:'ᾼ'; join:arNone),\n  (de:'Ὲ'; re:'Ὲ'; join:arNone),\n  (de:'Έ'; re:'Έ'; join:arNone),\n  (de:'Ἐ'; re:'Ἐ'; join:arNone),\n  (de:'Ἑ'; re:'Ἑ'; join:arNone),\n  (de:'Ὴ'; re:'Ὴ'; join:arNone),\n  (de:'Ή'; re:'Ή'; join:arNone),\n  (de:'Ἠ'; re:'Ἠ'; join:arNone),\n  (de:'Ἡ'; re:'Ἡ'; join:arNone),\n  (de:'ῌ'; re:'ῌ'; join:arNone),\n  (de:'Ὶ'; re:'Ὶ'; join:arNone),\n  (de:'Ί'; re:'Ί'; join:arNone),\n  (de:'Ῑ'; re:'Ῑ'; join:arNone),\n  (de:'Ῐ'; re:'Ῐ'; join:arNone),\n  (de:'Ϊ'; re:'Ϊ'; join:arNone),\n  (de:'Ἰ'; re:'Ἰ'; join:arNone),\n  (de:'Ἱ'; re:'Ἱ'; join:arNone),\n  (de:'Ὸ'; re:'Ὸ'; join:arNone),\n  (de:'Ό'; re:'Ό'; join:arNone),\n  (de:'Ὀ'; re:'Ὀ'; join:arNone),\n  (de:'Ὁ'; re:'Ὁ'; join:arNone),\n  (de:'Ῥ'; re:'Ῥ'; join:arNone),\n  (de:'Ὺ'; re:'Ὺ'; join:arNone),\n  (de:'Ύ'; re:'Ύ'; join:arNone),\n  (de:'Ῡ'; re:'Ῡ'; join:arNone),\n  (de:'Ῠ'; re:'Ῠ'; join:arNone),\n  (de:'Ϋ'; re:'Ϋ'; join:arNone),\n  (de:'Ὑ'; re:'Ὑ'; join:arNone),\n  (de:'Ὼ'; re:'Ὼ'; join:arNone),\n  (de:'Ώ'; re:'Ώ'; join:arNone),\n  (de:'Ὠ'; re:'Ὠ'; join:arNone),\n  (de:'Ὡ'; re:'Ὡ'; join:arNone),\n  (de:'ῼ'; re:'ῼ'; join:arNone),\n  (de:'ᾴ'; re:'ᾴ'; join:arNone),\n  (de:'ῄ'; re:'ῄ'; join:arNone),\n  (de:'ὰ'; re:'ὰ'; join:arNone),\n  (de:'ά'; re:'ά'; join:arNone),\n  (de:'ᾱ'; re:'ᾱ'; join:arNone),\n  (de:'ᾰ'; re:'ᾰ'; join:arNone),\n  (de:'ἀ'; re:'ἀ'; join:arNone),\n  (de:'ἁ'; re:'ἁ'; join:arNone),\n  (de:'ᾶ'; re:'ᾶ'; join:arNone),\n  (de:'ᾳ'; re:'ᾳ'; join:arNone),\n  (de:'ὲ'; re:'ὲ'; join:arNone),\n  (de:'έ'; re:'έ'; join:arNone),\n  (de:'ἐ'; re:'ἐ'; join:arNone),\n  (de:'ἑ'; re:'ἑ'; join:arNone),\n  (de:'ὴ'; re:'ὴ'; join:arNone),\n  (de:'ή'; re:'ή'; join:arNone),\n  (de:'ἠ'; re:'ἠ'; join:arNone),\n  (de:'ἡ'; re:'ἡ'; join:arNone),\n  (de:'ῆ'; re:'ῆ'; join:arNone),\n  (de:'ῃ'; re:'ῃ'; join:arNone),\n  (de:'ὶ'; re:'ὶ'; join:arNone),\n  (de:'ί'; re:'ί'; join:arNone),\n  (de:'ῑ'; re:'ῑ'; join:arNone),\n  (de:'ῐ'; re:'ῐ'; join:arNone),\n  (de:'ϊ'; re:'ϊ'; join:arNone),\n  (de:'ἰ'; re:'ἰ'; join:arNone),\n  (de:'ἱ'; re:'ἱ'; join:arNone),\n  (de:'ῖ'; re:'ῖ'; join:arNone),\n  (de:'ὸ'; re:'ὸ'; join:arNone),\n  (de:'ό'; re:'ό'; join:arNone),\n  (de:'ὀ'; re:'ὀ'; join:arNone),\n  (de:'ὁ'; re:'ὁ'; join:arNone),\n  (de:'ῤ'; re:'ῤ'; join:arNone),\n  (de:'ῥ'; re:'ῥ'; join:arNone),\n  (de:'ὺ'; re:'ὺ'; join:arNone),\n  (de:'ύ'; re:'ύ'; join:arNone),\n  (de:'ῡ'; re:'ῡ'; join:arNone),\n  (de:'ῠ'; re:'ῠ'; join:arNone),\n  (de:'ϋ'; re:'ϋ'; join:arNone),\n  (de:'ὐ'; re:'ὐ'; join:arNone),\n  (de:'ὑ'; re:'ὑ'; join:arNone),\n  (de:'ῦ'; re:'ῦ'; join:arNone),\n  (de:'ὼ'; re:'ὼ'; join:arNone),\n  (de:'ώ'; re:'ώ'; join:arNone),\n  (de:'ὠ'; re:'ὠ'; join:arNone),\n  (de:'ὡ'; re:'ὡ'; join:arNone),\n  (de:'ῶ'; re:'ῶ'; join:arNone),\n  (de:'ῳ'; re:'ῳ'; join:arNone),\n  (de:'ῒ'; re:'ῒ'; join:arNone),\n  (de:'ΐ'; re:'ΐ'; join:arNone),\n  (de:'ῗ'; re:'ῗ'; join:arNone),\n  (de:'ῢ'; re:'ῢ'; join:arNone),\n  (de:'ΰ'; re:'ΰ'; join:arNone),\n  (de:'ῧ'; re:'ῧ'; join:arNone),\n  (de:'ῴ'; re:'ῴ'; join:arNone),\n  (de:'ϓ'; re:'ϓ'; join:arNone),\n  (de:'ϔ'; re:'ϔ'; join:arNone),\n  (de:'Ї'; re:'Ї'; join:arNone),\n  (de:'Ӑ'; re:'Ӑ'; join:arNone),\n  (de:'Ӓ'; re:'Ӓ'; join:arNone),\n  (de:'Ѓ'; re:'Ѓ'; join:arNone),\n  (de:'Ѐ'; re:'Ѐ'; join:arNone),\n  (de:'Ӗ'; re:'Ӗ'; join:arNone),\n  (de:'Ё'; re:'Ё'; join:arNone),\n  (de:'Ӂ'; re:'Ӂ'; join:arNone),\n  (de:'Ӝ'; re:'Ӝ'; join:arNone),\n  (de:'Ӟ'; re:'Ӟ'; join:arNone),\n  (de:'Ѝ'; re:'Ѝ'; join:arNone),\n  (de:'Ӣ'; re:'Ӣ'; join:arNone),\n  (de:'Й'; re:'Й'; join:arNone),\n  (de:'Ӥ'; re:'Ӥ'; join:arNone),\n  (de:'Ќ'; re:'Ќ'; join:arNone),\n  (de:'Ӧ'; re:'Ӧ'; join:arNone),\n  (de:'Ӯ'; re:'Ӯ'; join:arNone),\n  (de:'Ў'; re:'Ў'; join:arNone),\n  (de:'Ӱ'; re:'Ӱ'; join:arNone),\n  (de:'Ӳ'; re:'Ӳ'; join:arNone),\n  (de:'Ӵ'; re:'Ӵ'; join:arNone),\n  (de:'Ӹ'; re:'Ӹ'; join:arNone),\n  (de:'Ӭ'; re:'Ӭ'; join:arNone),\n  (de:'ӑ'; re:'ӑ'; join:arNone),\n  (de:'ӓ'; re:'ӓ'; join:arNone),\n  (de:'ѓ'; re:'ѓ'; join:arNone),\n  (de:'ѐ'; re:'ѐ'; join:arNone),\n  (de:'ӗ'; re:'ӗ'; join:arNone),\n  (de:'ё'; re:'ё'; join:arNone),\n  (de:'ӂ'; re:'ӂ'; join:arNone),\n  (de:'ӝ'; re:'ӝ'; join:arNone),\n  (de:'ӟ'; re:'ӟ'; join:arNone),\n  (de:'ѝ'; re:'ѝ'; join:arNone),\n  (de:'ӣ'; re:'ӣ'; join:arNone),\n  (de:'й'; re:'й'; join:arNone),\n  (de:'ӥ'; re:'ӥ'; join:arNone),\n  (de:'ќ'; re:'ќ'; join:arNone),\n  (de:'ӧ'; re:'ӧ'; join:arNone),\n  (de:'ӯ'; re:'ӯ'; join:arNone),\n  (de:'ў'; re:'ў'; join:arNone),\n  (de:'ӱ'; re:'ӱ'; join:arNone),\n  (de:'ӳ'; re:'ӳ'; join:arNone),\n  (de:'ӵ'; re:'ӵ'; join:arNone),\n  (de:'ӹ'; re:'ӹ'; join:arNone),\n  (de:'ӭ'; re:'ӭ'; join:arNone),\n  (de:'ї'; re:'ї'; join:arNone),\n  (de:'Ѷ'; re:'Ѷ'; join:arNone),\n  (de:'ѷ'; re:'ѷ'; join:arNone),\n  (de:'Ӛ'; re:'Ӛ'; join:arNone),\n  (de:'ӛ'; re:'ӛ'; join:arNone),\n  (de:'Ӫ'; re:'Ӫ'; join:arNone),\n  (de:'ӫ'; re:'ӫ'; join:arNone),\n  (de:'אַ'; re:'אַ'; join:arNone),\n  (de:'אָ'; re:'אָ'; join:arNone),\n  (de:'אּ'; re:'אּ'; join:arNone),\n  (de:'בּ'; re:'בּ'; join:arNone),\n  (de:'בֿ'; re:'בֿ'; join:arNone),\n  (de:'גּ'; re:'גּ'; join:arNone),\n  (de:'דּ'; re:'דּ'; join:arNone),\n  (de:'הּ'; re:'הּ'; join:arNone),\n  (de:'וֹ'; re:'וֹ'; join:arNone),\n  (de:'וּ'; re:'וּ'; join:arNone),\n  (de:'זּ'; re:'זּ'; join:arNone),\n  (de:'טּ'; re:'טּ'; join:arNone),\n  (de:'יִ'; re:'יִ'; join:arNone),\n  (de:'יּ'; re:'יּ'; join:arNone),\n  (de:'ךּ'; re:'ךּ'; join:arNone),\n  (de:'כּ'; re:'כּ'; join:arNone),\n  (de:'כֿ'; re:'כֿ'; join:arNone),\n  (de:'לּ'; re:'לּ'; join:arNone),\n  (de:'מּ'; re:'מּ'; join:arNone),\n  (de:'נּ'; re:'נּ'; join:arNone),\n  (de:'סּ'; re:'סּ'; join:arNone),\n  (de:'ףּ'; re:'ףּ'; join:arNone),\n  (de:'פּ'; re:'פּ'; join:arNone),\n  (de:'פֿ'; re:'פֿ'; join:arNone),\n  (de:'צּ'; re:'צּ'; join:arNone),\n  (de:'קּ'; re:'קּ'; join:arNone),\n  (de:'רּ'; re:'רּ'; join:arNone),\n  (de:'שּ'; re:'שּ'; join:arNone),\n  (de:'שׁ'; re:'שׁ'; join:arNone),\n  (de:'שׂ'; re:'שׂ'; join:arNone),\n  (de:'תּ'; re:'תּ'; join:arNone),\n  (de:'ײַ'; re:'ײַ'; join:arNone),\n  (de:'ء'; re:'ﺀ'; join:arIsolated),\n  (de:'آ'; re:'ﺁ'; join:arIsolated),\n  (de:'آ'; re:'ﺂ'; join:arFinal),\n  (de:'أ'; re:'ﺃ'; join:arIsolated),\n  (de:'أ'; re:'ﺄ'; join:arFinal),\n  (de:'ؤ'; re:'ﺅ'; join:arIsolated),\n  (de:'ؤ'; re:'ﺆ'; join:arFinal),\n  (de:'إ'; re:'ﺇ'; join:arIsolated),\n  (de:'إ'; re:'ﺈ'; join:arFinal),\n  (de:'ئ'; re:'ﺉ'; join:arIsolated),\n  (de:'ئ'; re:'ﺊ'; join:arFinal),\n  (de:'ئ'; re:'ﺋ'; join:arInitial),\n  (de:'ئ'; re:'ﺌ'; join:arMedial),\n  (de:'ا'; re:'ﺍ'; join:arIsolated),\n  (de:'ا'; re:'ﺎ'; join:arFinal),\n  (de:'آ'; re:'آ'; join:arNone),\n  (de:'أ'; re:'أ'; join:arNone),\n  (de:'إ'; re:'إ'; join:arNone),\n  (de:'ب'; re:'ﺏ'; join:arIsolated),\n  (de:'ب'; re:'ﺐ'; join:arFinal),\n  (de:'ب'; re:'ﺑ'; join:arInitial),\n  (de:'ب'; re:'ﺒ'; join:arMedial),\n  (de:'ة'; re:'ﺓ'; join:arIsolated),\n  (de:'ة'; re:'ﺔ'; join:arFinal),\n  (de:'ت'; re:'ﺕ'; join:arIsolated),\n  (de:'ت'; re:'ﺖ'; join:arFinal),\n  (de:'ت'; re:'ﺗ'; join:arInitial),\n  (de:'ت'; re:'ﺘ'; join:arMedial),\n  (de:'ث'; re:'ﺙ'; join:arIsolated),\n  (de:'ث'; re:'ﺚ'; join:arFinal),\n  (de:'ث'; re:'ﺛ'; join:arInitial),\n  (de:'ث'; re:'ﺜ'; join:arMedial),\n  (de:'ج'; re:'ﺝ'; join:arIsolated),\n  (de:'ج'; re:'ﺞ'; join:arFinal),\n  (de:'ج'; re:'ﺟ'; join:arInitial),\n  (de:'ج'; re:'ﺠ'; join:arMedial),\n  (de:'ح'; re:'ﺡ'; join:arIsolated),\n  (de:'ح'; re:'ﺢ'; join:arFinal),\n  (de:'ح'; re:'ﺣ'; join:arInitial),\n  (de:'ح'; re:'ﺤ'; join:arMedial),\n  (de:'خ'; re:'ﺥ'; join:arIsolated),\n  (de:'خ'; re:'ﺦ'; join:arFinal),\n  (de:'خ'; re:'ﺧ'; join:arInitial),\n  (de:'خ'; re:'ﺨ'; join:arMedial),\n  (de:'د'; re:'ﺩ'; join:arIsolated),\n  (de:'د'; re:'ﺪ'; join:arFinal),\n  (de:'ذ'; re:'ﺫ'; join:arIsolated),\n  (de:'ذ'; re:'ﺬ'; join:arFinal),\n  (de:'ر'; re:'ﺭ'; join:arIsolated),\n  (de:'ر'; re:'ﺮ'; join:arFinal),\n  (de:'ز'; re:'ﺯ'; join:arIsolated),\n  (de:'ز'; re:'ﺰ'; join:arFinal),\n  (de:'س'; re:'ﺱ'; join:arIsolated),\n  (de:'س'; re:'ﺲ'; join:arFinal),\n  (de:'س'; re:'ﺳ'; join:arInitial),\n  (de:'س'; re:'ﺴ'; join:arMedial),\n  (de:'ش'; re:'ﺵ'; join:arIsolated),\n  (de:'ش'; re:'ﺶ'; join:arFinal),\n  (de:'ش'; re:'ﺷ'; join:arInitial),\n  (de:'ش'; re:'ﺸ'; join:arMedial),\n  (de:'ص'; re:'ﺹ'; join:arIsolated),\n  (de:'ص'; re:'ﺺ'; join:arFinal),\n  (de:'ص'; re:'ﺻ'; join:arInitial),\n  (de:'ص'; re:'ﺼ'; join:arMedial),\n  (de:'ض'; re:'ﺽ'; join:arIsolated),\n  (de:'ض'; re:'ﺾ'; join:arFinal),\n  (de:'ض'; re:'ﺿ'; join:arInitial),\n  (de:'ض'; re:'ﻀ'; join:arMedial),\n  (de:'ط'; re:'ﻁ'; join:arIsolated),\n  (de:'ط'; re:'ﻂ'; join:arFinal),\n  (de:'ط'; re:'ﻃ'; join:arInitial),\n  (de:'ط'; re:'ﻄ'; join:arMedial),\n  (de:'ظ'; re:'ﻅ'; join:arIsolated),\n  (de:'ظ'; re:'ﻆ'; join:arFinal),\n  (de:'ظ'; re:'ﻇ'; join:arInitial),\n  (de:'ظ'; re:'ﻈ'; join:arMedial),\n  (de:'ع'; re:'ﻉ'; join:arIsolated),\n  (de:'ع'; re:'ﻊ'; join:arFinal),\n  (de:'ع'; re:'ﻋ'; join:arInitial),\n  (de:'ع'; re:'ﻌ'; join:arMedial),\n  (de:'غ'; re:'ﻍ'; join:arIsolated),\n  (de:'غ'; re:'ﻎ'; join:arFinal),\n  (de:'غ'; re:'ﻏ'; join:arInitial),\n  (de:'غ'; re:'ﻐ'; join:arMedial),\n  (de:'ف'; re:'ﻑ'; join:arIsolated),\n  (de:'ف'; re:'ﻒ'; join:arFinal),\n  (de:'ف'; re:'ﻓ'; join:arInitial),\n  (de:'ف'; re:'ﻔ'; join:arMedial),\n  (de:'ق'; re:'ﻕ'; join:arIsolated),\n  (de:'ق'; re:'ﻖ'; join:arFinal),\n  (de:'ق'; re:'ﻗ'; join:arInitial),\n  (de:'ق'; re:'ﻘ'; join:arMedial),\n  (de:'ك'; re:'ﻙ'; join:arIsolated),\n  (de:'ك'; re:'ﻚ'; join:arFinal),\n  (de:'ك'; re:'ﻛ'; join:arInitial),\n  (de:'ك'; re:'ﻜ'; join:arMedial),\n  (de:'ل'; re:'ﻝ'; join:arIsolated),\n  (de:'ل'; re:'ﻞ'; join:arFinal),\n  (de:'ل'; re:'ﻟ'; join:arInitial),\n  (de:'ل'; re:'ﻠ'; join:arMedial),\n  (de:'لآ'; re:'ﻵ'; join:arIsolated),\n  (de:'لآ'; re:'ﻶ'; join:arFinal),\n  (de:'لأ'; re:'ﻷ'; join:arIsolated),\n  (de:'لأ'; re:'ﻸ'; join:arFinal),\n  (de:'لإ'; re:'ﻹ'; join:arIsolated),\n  (de:'لإ'; re:'ﻺ'; join:arFinal),\n  (de:'لا'; re:'ﻻ'; join:arIsolated),\n  (de:'لا'; re:'ﻼ'; join:arFinal),\n  (de:'م'; re:'ﻡ'; join:arIsolated),\n  (de:'م'; re:'ﻢ'; join:arFinal),\n  (de:'م'; re:'ﻣ'; join:arInitial),\n  (de:'م'; re:'ﻤ'; join:arMedial),\n  (de:'ن'; re:'ﻥ'; join:arIsolated),\n  (de:'ن'; re:'ﻦ'; join:arFinal),\n  (de:'ن'; re:'ﻧ'; join:arInitial),\n  (de:'ن'; re:'ﻨ'; join:arMedial),\n  (de:'ه'; re:'ﻩ'; join:arIsolated),\n  (de:'ه'; re:'ﻪ'; join:arFinal),\n  (de:'ه'; re:'ﻫ'; join:arInitial),\n  (de:'ه'; re:'ﻬ'; join:arMedial),\n  (de:'و'; re:'ﻭ'; join:arIsolated),\n  (de:'و'; re:'ﻮ'; join:arFinal),\n  (de:'ؤ'; re:'ؤ'; join:arNone),\n  (de:'ى'; re:'ﯨ'; join:arInitial),\n  (de:'ى'; re:'ﯩ'; join:arMedial),\n  (de:'ى'; re:'ﻯ'; join:arIsolated),\n  (de:'ى'; re:'ﻰ'; join:arFinal),\n  (de:'ي'; re:'ﻱ'; join:arIsolated),\n  (de:'ي'; re:'ﻲ'; join:arFinal),\n  (de:'ي'; re:'ﻳ'; join:arInitial),\n  (de:'ي'; re:'ﻴ'; join:arMedial),\n  (de:'ئ'; re:'ئ'; join:arNone),\n  (de:'ٱ'; re:'ﭐ'; join:arIsolated),\n  (de:'ٱ'; re:'ﭑ'; join:arFinal),\n  (de:'ٷ'; re:'ﯝ'; join:arIsolated),\n  (de:'ٹ'; re:'ﭦ'; join:arIsolated),\n  (de:'ٹ'; re:'ﭧ'; join:arFinal),\n  (de:'ٹ'; re:'ﭨ'; join:arInitial),\n  (de:'ٹ'; re:'ﭩ'; join:arMedial),\n  (de:'ٺ'; re:'ﭞ'; join:arIsolated),\n  (de:'ٺ'; re:'ﭟ'; join:arFinal),\n  (de:'ٺ'; re:'ﭠ'; join:arInitial),\n  (de:'ٺ'; re:'ﭡ'; join:arMedial),\n  (de:'ٻ'; re:'ﭒ'; join:arIsolated),\n  (de:'ٻ'; re:'ﭓ'; join:arFinal),\n  (de:'ٻ'; re:'ﭔ'; join:arInitial),\n  (de:'ٻ'; re:'ﭕ'; join:arMedial),\n  (de:'پ'; re:'ﭖ'; join:arIsolated),\n  (de:'پ'; re:'ﭗ'; join:arFinal),\n  (de:'پ'; re:'ﭘ'; join:arInitial),\n  (de:'پ'; re:'ﭙ'; join:arMedial),\n  (de:'ٿ'; re:'ﭢ'; join:arIsolated),\n  (de:'ٿ'; re:'ﭣ'; join:arFinal),\n  (de:'ٿ'; re:'ﭤ'; join:arInitial),\n  (de:'ٿ'; re:'ﭥ'; join:arMedial),\n  (de:'ڀ'; re:'ﭚ'; join:arIsolated),\n  (de:'ڀ'; re:'ﭛ'; join:arFinal),\n  (de:'ڀ'; re:'ﭜ'; join:arInitial),\n  (de:'ڀ'; re:'ﭝ'; join:arMedial),\n  (de:'ڃ'; re:'ﭶ'; join:arIsolated),\n  (de:'ڃ'; re:'ﭷ'; join:arFinal),\n  (de:'ڃ'; re:'ﭸ'; join:arInitial),\n  (de:'ڃ'; re:'ﭹ'; join:arMedial),\n  (de:'ڄ'; re:'ﭲ'; join:arIsolated),\n  (de:'ڄ'; re:'ﭳ'; join:arFinal),\n  (de:'ڄ'; re:'ﭴ'; join:arInitial),\n  (de:'ڄ'; re:'ﭵ'; join:arMedial),\n  (de:'چ'; re:'ﭺ'; join:arIsolated),\n  (de:'چ'; re:'ﭻ'; join:arFinal),\n  (de:'چ'; re:'ﭼ'; join:arInitial),\n  (de:'چ'; re:'ﭽ'; join:arMedial),\n  (de:'ڇ'; re:'ﭾ'; join:arIsolated),\n  (de:'ڇ'; re:'ﭿ'; join:arFinal),\n  (de:'ڇ'; re:'ﮀ'; join:arInitial),\n  (de:'ڇ'; re:'ﮁ'; join:arMedial),\n  (de:'ڈ'; re:'ﮈ'; join:arIsolated),\n  (de:'ڈ'; re:'ﮉ'; join:arFinal),\n  (de:'ڌ'; re:'ﮄ'; join:arIsolated),\n  (de:'ڌ'; re:'ﮅ'; join:arFinal),\n  (de:'ڍ'; re:'ﮂ'; join:arIsolated),\n  (de:'ڍ'; re:'ﮃ'; join:arFinal),\n  (de:'ڎ'; re:'ﮆ'; join:arIsolated),\n  (de:'ڎ'; re:'ﮇ'; join:arFinal),\n  (de:'ڑ'; re:'ﮌ'; join:arIsolated),\n  (de:'ڑ'; re:'ﮍ'; join:arFinal),\n  (de:'ژ'; re:'ﮊ'; join:arIsolated),\n  (de:'ژ'; re:'ﮋ'; join:arFinal),\n  (de:'ڤ'; re:'ﭪ'; join:arIsolated),\n  (de:'ڤ'; re:'ﭫ'; join:arFinal),\n  (de:'ڤ'; re:'ﭬ'; join:arInitial),\n  (de:'ڤ'; re:'ﭭ'; join:arMedial),\n  (de:'ڦ'; re:'ﭮ'; join:arIsolated),\n  (de:'ڦ'; re:'ﭯ'; join:arFinal),\n  (de:'ڦ'; re:'ﭰ'; join:arInitial),\n  (de:'ڦ'; re:'ﭱ'; join:arMedial),\n  (de:'ک'; re:'ﮎ'; join:arIsolated),\n  (de:'ک'; re:'ﮏ'; join:arFinal),\n  (de:'ک'; re:'ﮐ'; join:arInitial),\n  (de:'ک'; re:'ﮑ'; join:arMedial),\n  (de:'ڭ'; re:'ﯓ'; join:arIsolated),\n  (de:'ڭ'; re:'ﯔ'; join:arFinal),\n  (de:'ڭ'; re:'ﯕ'; join:arInitial),\n  (de:'ڭ'; re:'ﯖ'; join:arMedial),\n  (de:'گ'; re:'ﮒ'; join:arIsolated),\n  (de:'گ'; re:'ﮓ'; join:arFinal),\n  (de:'گ'; re:'ﮔ'; join:arInitial),\n  (de:'گ'; re:'ﮕ'; join:arMedial),\n  (de:'ڱ'; re:'ﮚ'; join:arIsolated),\n  (de:'ڱ'; re:'ﮛ'; join:arFinal),\n  (de:'ڱ'; re:'ﮜ'; join:arInitial),\n  (de:'ڱ'; re:'ﮝ'; join:arMedial),\n  (de:'ڳ'; re:'ﮖ'; join:arIsolated),\n  (de:'ڳ'; re:'ﮗ'; join:arFinal),\n  (de:'ڳ'; re:'ﮘ'; join:arInitial),\n  (de:'ڳ'; re:'ﮙ'; join:arMedial),\n  (de:'ں'; re:'ﮞ'; join:arIsolated),\n  (de:'ں'; re:'ﮟ'; join:arFinal),\n  (de:'ڻ'; re:'ﮠ'; join:arIsolated),\n  (de:'ڻ'; re:'ﮡ'; join:arFinal),\n  (de:'ڻ'; re:'ﮢ'; join:arInitial),\n  (de:'ڻ'; re:'ﮣ'; join:arMedial),\n  (de:'ھ'; re:'ﮪ'; join:arIsolated),\n  (de:'ھ'; re:'ﮫ'; join:arFinal),\n  (de:'ھ'; re:'ﮬ'; join:arInitial),\n  (de:'ھ'; re:'ﮭ'; join:arMedial),\n  (de:'ۀ'; re:'ﮤ'; join:arIsolated),\n  (de:'ۀ'; re:'ﮥ'; join:arFinal),\n  (de:'ہ'; re:'ﮦ'; join:arIsolated),\n  (de:'ہ'; re:'ﮧ'; join:arFinal),\n  (de:'ہ'; re:'ﮨ'; join:arInitial),\n  (de:'ہ'; re:'ﮩ'; join:arMedial),\n  (de:'ۂ'; re:'ۂ'; join:arNone),\n  (de:'ۅ'; re:'ﯠ'; join:arIsolated),\n  (de:'ۅ'; re:'ﯡ'; join:arFinal),\n  (de:'ۆ'; re:'ﯙ'; join:arIsolated),\n  (de:'ۆ'; re:'ﯚ'; join:arFinal),\n  (de:'ۇ'; re:'ﯗ'; join:arIsolated),\n  (de:'ۇ'; re:'ﯘ'; join:arFinal),\n  (de:'ۈ'; re:'ﯛ'; join:arIsolated),\n  (de:'ۈ'; re:'ﯜ'; join:arFinal),\n  (de:'ۉ'; re:'ﯢ'; join:arIsolated),\n  (de:'ۉ'; re:'ﯣ'; join:arFinal),\n  (de:'ۋ'; re:'ﯞ'; join:arIsolated),\n  (de:'ۋ'; re:'ﯟ'; join:arFinal),\n  (de:'ی'; re:'ﯼ'; join:arIsolated),\n  (de:'ی'; re:'ﯽ'; join:arFinal),\n  (de:'ی'; re:'ﯾ'; join:arInitial),\n  (de:'ی'; re:'ﯿ'; join:arMedial),\n  (de:'ې'; re:'ﯤ'; join:arIsolated),\n  (de:'ې'; re:'ﯥ'; join:arFinal),\n  (de:'ې'; re:'ﯦ'; join:arInitial),\n  (de:'ې'; re:'ﯧ'; join:arMedial),\n  (de:'ے'; re:'ﮮ'; join:arIsolated),\n  (de:'ے'; re:'ﮯ'; join:arFinal),\n  (de:'ۓ'; re:'ۓ'; join:arNone),\n  (de:'ۓ'; re:'ﮰ'; join:arIsolated),\n  (de:'ۓ'; re:'ﮱ'; join:arFinal),\n  (de:'ۀ'; re:'ۀ'; join:arNone),\n  (de:'क़'; re:'क़'; join:arNone),\n  (de:'ख़'; re:'ख़'; join:arNone),\n  (de:'ग़'; re:'ग़'; join:arNone),\n  (de:'ज़'; re:'ज़'; join:arNone),\n  (de:'ड़'; re:'ड़'; join:arNone),\n  (de:'ढ़'; re:'ढ़'; join:arNone),\n  (de:'ऩ'; re:'ऩ'; join:arNone),\n  (de:'फ़'; re:'फ़'; join:arNone),\n  (de:'य़'; re:'य़'; join:arNone),\n  (de:'ऱ'; re:'ऱ'; join:arNone),\n  (de:'ऴ'; re:'ऴ'; join:arNone),\n  (de:'ড়'; re:'ড়'; join:arNone),\n  (de:'ঢ়'; re:'ঢ়'; join:arNone),\n  (de:'য়'; re:'য়'; join:arNone),\n  (de:'ਖ਼'; re:'ਖ਼'; join:arNone),\n  (de:'ਗ਼'; re:'ਗ਼'; join:arNone),\n  (de:'ਜ਼'; re:'ਜ਼'; join:arNone),\n  (de:'ਫ਼'; re:'ਫ਼'; join:arNone),\n  (de:'ਲ਼'; re:'ਲ਼'; join:arNone),\n  (de:'ਸ਼'; re:'ਸ਼'; join:arNone),\n  (de:'ଡ଼'; re:'ଡ଼'; join:arNone),\n  (de:'ଢ଼'; re:'ଢ଼'; join:arNone),\n  (de:'ୈ'; re:'ୈ'; join:arNone),\n  (de:'ේ'; re:'ේ'; join:arNone),\n  (de:'ෝ'; re:'ෝ'; join:arNone),\n  (de:'ཀྵ'; re:'ཀྵ'; join:arNone),\n  (de:'གྷ'; re:'གྷ'; join:arNone),\n  (de:'ཌྷ'; re:'ཌྷ'; join:arNone),\n  (de:'དྷ'; re:'དྷ'; join:arNone),\n  (de:'བྷ'; re:'བྷ'; join:arNone),\n  (de:'ཛྷ'; re:'ཛྷ'; join:arNone),\n  (de:'ဦ'; re:'ဦ'; join:arNone),\n  (de:'ᬻ'; re:'ᬻ'; join:arNone),\n  (de:'ᬽ'; re:'ᬽ'; join:arNone),\n  (de:'ᭃ'; re:'ᭃ'; join:arNone),\n  (de:'Ḹ'; re:'Ḹ'; join:arNone),\n  (de:'ḹ'; re:'ḹ'; join:arNone),\n  (de:'Ṝ'; re:'Ṝ'; join:arNone),\n  (de:'ṝ'; re:'ṝ'; join:arNone),\n  (de:'Ṩ'; re:'Ṩ'; join:arNone),\n  (de:'ṩ'; re:'ṩ'; join:arNone),\n  (de:'Ậ'; re:'Ậ'; join:arNone),\n  (de:'Ặ'; re:'Ặ'; join:arNone),\n  (de:'ậ'; re:'ậ'; join:arNone),\n  (de:'ặ'; re:'ặ'; join:arNone),\n  (de:'Ệ'; re:'Ệ'; join:arNone),\n  (de:'ệ'; re:'ệ'; join:arNone),\n  (de:'Ộ'; re:'Ộ'; join:arNone),\n  (de:'ộ'; re:'ộ'; join:arNone),\n  (de:'ἂ'; re:'ἂ'; join:arNone),\n  (de:'ἄ'; re:'ἄ'; join:arNone),\n  (de:'ἆ'; re:'ἆ'; join:arNone),\n  (de:'ᾀ'; re:'ᾀ'; join:arNone),\n  (de:'ἃ'; re:'ἃ'; join:arNone),\n  (de:'ἅ'; re:'ἅ'; join:arNone),\n  (de:'ἇ'; re:'ἇ'; join:arNone),\n  (de:'ᾁ'; re:'ᾁ'; join:arNone),\n  (de:'ᾂ'; re:'ᾂ'; join:arNone),\n  (de:'ᾃ'; re:'ᾃ'; join:arNone),\n  (de:'ᾄ'; re:'ᾄ'; join:arNone),\n  (de:'ᾅ'; re:'ᾅ'; join:arNone),\n  (de:'ᾆ'; re:'ᾆ'; join:arNone),\n  (de:'ᾇ'; re:'ᾇ'; join:arNone),\n  (de:'Ἂ'; re:'Ἂ'; join:arNone),\n  (de:'Ἄ'; re:'Ἄ'; join:arNone),\n  (de:'Ἆ'; re:'Ἆ'; join:arNone),\n  (de:'ᾈ'; re:'ᾈ'; join:arNone),\n  (de:'Ἃ'; re:'Ἃ'; join:arNone),\n  (de:'Ἅ'; re:'Ἅ'; join:arNone),\n  (de:'Ἇ'; re:'Ἇ'; join:arNone),\n  (de:'ᾉ'; re:'ᾉ'; join:arNone),\n  (de:'ᾊ'; re:'ᾊ'; join:arNone),\n  (de:'ᾋ'; re:'ᾋ'; join:arNone),\n  (de:'ᾌ'; re:'ᾌ'; join:arNone),\n  (de:'ᾍ'; re:'ᾍ'; join:arNone),\n  (de:'ᾎ'; re:'ᾎ'; join:arNone),\n  (de:'ᾏ'; re:'ᾏ'; join:arNone),\n  (de:'ἒ'; re:'ἒ'; join:arNone),\n  (de:'ἔ'; re:'ἔ'; join:arNone),\n  (de:'ἓ'; re:'ἓ'; join:arNone),\n  (de:'ἕ'; re:'ἕ'; join:arNone),\n  (de:'Ἒ'; re:'Ἒ'; join:arNone),\n  (de:'Ἔ'; re:'Ἔ'; join:arNone),\n  (de:'Ἓ'; re:'Ἓ'; join:arNone),\n  (de:'Ἕ'; re:'Ἕ'; join:arNone),\n  (de:'ἢ'; re:'ἢ'; join:arNone),\n  (de:'ἤ'; re:'ἤ'; join:arNone),\n  (de:'ἦ'; re:'ἦ'; join:arNone),\n  (de:'ᾐ'; re:'ᾐ'; join:arNone),\n  (de:'ἣ'; re:'ἣ'; join:arNone),\n  (de:'ἥ'; re:'ἥ'; join:arNone),\n  (de:'ἧ'; re:'ἧ'; join:arNone),\n  (de:'ᾑ'; re:'ᾑ'; join:arNone),\n  (de:'ᾒ'; re:'ᾒ'; join:arNone),\n  (de:'ᾓ'; re:'ᾓ'; join:arNone),\n  (de:'ᾔ'; re:'ᾔ'; join:arNone),\n  (de:'ᾕ'; re:'ᾕ'; join:arNone),\n  (de:'ᾖ'; re:'ᾖ'; join:arNone),\n  (de:'ᾗ'; re:'ᾗ'; join:arNone),\n  (de:'Ἢ'; re:'Ἢ'; join:arNone),\n  (de:'Ἤ'; re:'Ἤ'; join:arNone),\n  (de:'Ἦ'; re:'Ἦ'; join:arNone),\n  (de:'ᾘ'; re:'ᾘ'; join:arNone),\n  (de:'Ἣ'; re:'Ἣ'; join:arNone),\n  (de:'Ἥ'; re:'Ἥ'; join:arNone),\n  (de:'Ἧ'; re:'Ἧ'; join:arNone),\n  (de:'ᾙ'; re:'ᾙ'; join:arNone),\n  (de:'ᾚ'; re:'ᾚ'; join:arNone),\n  (de:'ᾛ'; re:'ᾛ'; join:arNone),\n  (de:'ᾜ'; re:'ᾜ'; join:arNone),\n  (de:'ᾝ'; re:'ᾝ'; join:arNone),\n  (de:'ᾞ'; re:'ᾞ'; join:arNone),\n  (de:'ᾟ'; re:'ᾟ'; join:arNone),\n  (de:'ἲ'; re:'ἲ'; join:arNone),\n  (de:'ἴ'; re:'ἴ'; join:arNone),\n  (de:'ἶ'; re:'ἶ'; join:arNone),\n  (de:'ἳ'; re:'ἳ'; join:arNone),\n  (de:'ἵ'; re:'ἵ'; join:arNone),\n  (de:'ἷ'; re:'ἷ'; join:arNone),\n  (de:'Ἲ'; re:'Ἲ'; join:arNone),\n  (de:'Ἴ'; re:'Ἴ'; join:arNone),\n  (de:'Ἶ'; re:'Ἶ'; join:arNone),\n  (de:'Ἳ'; re:'Ἳ'; join:arNone),\n  (de:'Ἵ'; re:'Ἵ'; join:arNone),\n  (de:'Ἷ'; re:'Ἷ'; join:arNone),\n  (de:'ὂ'; re:'ὂ'; join:arNone),\n  (de:'ὄ'; re:'ὄ'; join:arNone),\n  (de:'ὃ'; re:'ὃ'; join:arNone),\n  (de:'ὅ'; re:'ὅ'; join:arNone),\n  (de:'Ὂ'; re:'Ὂ'; join:arNone),\n  (de:'Ὄ'; re:'Ὄ'; join:arNone),\n  (de:'Ὃ'; re:'Ὃ'; join:arNone),\n  (de:'Ὅ'; re:'Ὅ'; join:arNone),\n  (de:'ὒ'; re:'ὒ'; join:arNone),\n  (de:'ὔ'; re:'ὔ'; join:arNone),\n  (de:'ὖ'; re:'ὖ'; join:arNone),\n  (de:'ὓ'; re:'ὓ'; join:arNone),\n  (de:'ὕ'; re:'ὕ'; join:arNone),\n  (de:'ὗ'; re:'ὗ'; join:arNone),\n  (de:'Ὓ'; re:'Ὓ'; join:arNone),\n  (de:'Ὕ'; re:'Ὕ'; join:arNone),\n  (de:'Ὗ'; re:'Ὗ'; join:arNone),\n  (de:'ὢ'; re:'ὢ'; join:arNone),\n  (de:'ὤ'; re:'ὤ'; join:arNone),\n  (de:'ὦ'; re:'ὦ'; join:arNone),\n  (de:'ᾠ'; re:'ᾠ'; join:arNone),\n  (de:'ὣ'; re:'ὣ'; join:arNone),\n  (de:'ὥ'; re:'ὥ'; join:arNone),\n  (de:'ὧ'; re:'ὧ'; join:arNone),\n  (de:'ᾡ'; re:'ᾡ'; join:arNone),\n  (de:'ᾢ'; re:'ᾢ'; join:arNone),\n  (de:'ᾣ'; re:'ᾣ'; join:arNone),\n  (de:'ᾤ'; re:'ᾤ'; join:arNone),\n  (de:'ᾥ'; re:'ᾥ'; join:arNone),\n  (de:'ᾦ'; re:'ᾦ'; join:arNone),\n  (de:'ᾧ'; re:'ᾧ'; join:arNone),\n  (de:'Ὢ'; re:'Ὢ'; join:arNone),\n  (de:'Ὤ'; re:'Ὤ'; join:arNone),\n  (de:'Ὦ'; re:'Ὦ'; join:arNone),\n  (de:'ᾨ'; re:'ᾨ'; join:arNone),\n  (de:'Ὣ'; re:'Ὣ'; join:arNone),\n  (de:'Ὥ'; re:'Ὥ'; join:arNone),\n  (de:'Ὧ'; re:'Ὧ'; join:arNone),\n  (de:'ᾩ'; re:'ᾩ'; join:arNone),\n  (de:'ᾪ'; re:'ᾪ'; join:arNone),\n  (de:'ᾫ'; re:'ᾫ'; join:arNone),\n  (de:'ᾬ'; re:'ᾬ'; join:arNone),\n  (de:'ᾭ'; re:'ᾭ'; join:arNone),\n  (de:'ᾮ'; re:'ᾮ'; join:arNone),\n  (de:'ᾯ'; re:'ᾯ'; join:arNone),\n  (de:'ᾲ'; re:'ᾲ'; join:arNone),\n  (de:'ῂ'; re:'ῂ'; join:arNone),\n  (de:'ῲ'; re:'ῲ'; join:arNone),\n  (de:'ᾷ'; re:'ᾷ'; join:arNone),\n  (de:'῍'; re:'῍'; join:arNone),\n  (de:'῎'; re:'῎'; join:arNone),\n  (de:'῏'; re:'῏'; join:arNone),\n  (de:'ῇ'; re:'ῇ'; join:arNone),\n  (de:'ῷ'; re:'ῷ'; join:arNone),\n  (de:'῝'; re:'῝'; join:arNone),\n  (de:'῞'; re:'῞'; join:arNone),\n  (de:'῟'; re:'῟'; join:arNone),\n  (de:'↚'; re:'↚'; join:arNone),\n  (de:'↛'; re:'↛'; join:arNone),\n  (de:'↮'; re:'↮'; join:arNone),\n  (de:'⇍'; re:'⇍'; join:arNone),\n  (de:'⇏'; re:'⇏'; join:arNone),\n  (de:'⇎'; re:'⇎'; join:arNone),\n  (de:'∄'; re:'∄'; join:arNone),\n  (de:'∉'; re:'∉'; join:arNone),\n  (de:'∌'; re:'∌'; join:arNone),\n  (de:'∤'; re:'∤'; join:arNone),\n  (de:'∦'; re:'∦'; join:arNone),\n  (de:'≁'; re:'≁'; join:arNone),\n  (de:'≄'; re:'≄'; join:arNone),\n  (de:'≇'; re:'≇'; join:arNone),\n  (de:'≉'; re:'≉'; join:arNone),\n  (de:'≭'; re:'≭'; join:arNone),\n  (de:'≢'; re:'≢'; join:arNone),\n  (de:'≰'; re:'≰'; join:arNone),\n  (de:'≱'; re:'≱'; join:arNone),\n  (de:'≴'; re:'≴'; join:arNone),\n  (de:'≵'; re:'≵'; join:arNone),\n  (de:'≸'; re:'≸'; join:arNone),\n  (de:'≹'; re:'≹'; join:arNone),\n  (de:'⊀'; re:'⊀'; join:arNone),\n  (de:'⊁'; re:'⊁'; join:arNone),\n  (de:'⋠'; re:'⋠'; join:arNone),\n  (de:'⋡'; re:'⋡'; join:arNone),\n  (de:'⊄'; re:'⊄'; join:arNone),\n  (de:'⊅'; re:'⊅'; join:arNone),\n  (de:'⊈'; re:'⊈'; join:arNone),\n  (de:'⊉'; re:'⊉'; join:arNone),\n  (de:'⋢'; re:'⋢'; join:arNone),\n  (de:'⋣'; re:'⋣'; join:arNone),\n  (de:'⊬'; re:'⊬'; join:arNone),\n  (de:'⊭'; re:'⊭'; join:arNone),\n  (de:'⊮'; re:'⊮'; join:arNone),\n  (de:'⊯'; re:'⊯'; join:arNone),\n  (de:'⋪'; re:'⋪'; join:arNone),\n  (de:'⋫'; re:'⋫'; join:arNone),\n  (de:'⋬'; re:'⋬'; join:arNone),\n  (de:'⋭'; re:'⋭'; join:arNone),\n  (de:'⫝̸'; re:'⫝̸'; join:arNone),\n  (de:'ゔ'; re:'ゔ'; join:arNone),\n  (de:'が'; re:'が'; join:arNone),\n  (de:'ぎ'; re:'ぎ'; join:arNone),\n  (de:'ぐ'; re:'ぐ'; join:arNone),\n  (de:'げ'; re:'げ'; join:arNone),\n  (de:'ご'; re:'ご'; join:arNone),\n  (de:'ざ'; re:'ざ'; join:arNone),\n  (de:'じ'; re:'じ'; join:arNone),\n  (de:'ず'; re:'ず'; join:arNone),\n  (de:'ぜ'; re:'ぜ'; join:arNone),\n  (de:'ぞ'; re:'ぞ'; join:arNone),\n  (de:'だ'; re:'だ'; join:arNone),\n  (de:'ぢ'; re:'ぢ'; join:arNone),\n  (de:'づ'; re:'づ'; join:arNone),\n  (de:'で'; re:'で'; join:arNone),\n  (de:'ど'; re:'ど'; join:arNone),\n  (de:'ば'; re:'ば'; join:arNone),\n  (de:'ぱ'; re:'ぱ'; join:arNone),\n  (de:'び'; re:'び'; join:arNone),\n  (de:'ぴ'; re:'ぴ'; join:arNone),\n  (de:'ぶ'; re:'ぶ'; join:arNone),\n  (de:'ぷ'; re:'ぷ'; join:arNone),\n  (de:'べ'; re:'べ'; join:arNone),\n  (de:'ぺ'; re:'ぺ'; join:arNone),\n  (de:'ぼ'; re:'ぼ'; join:arNone),\n  (de:'ぽ'; re:'ぽ'; join:arNone),\n  (de:'ゞ'; re:'ゞ'; join:arNone),\n  (de:'ヴ'; re:'ヴ'; join:arNone),\n  (de:'ガ'; re:'ガ'; join:arNone),\n  (de:'ギ'; re:'ギ'; join:arNone),\n  (de:'グ'; re:'グ'; join:arNone),\n  (de:'ゲ'; re:'ゲ'; join:arNone),\n  (de:'ゴ'; re:'ゴ'; join:arNone),\n  (de:'ザ'; re:'ザ'; join:arNone),\n  (de:'ジ'; re:'ジ'; join:arNone),\n  (de:'ズ'; re:'ズ'; join:arNone),\n  (de:'ゼ'; re:'ゼ'; join:arNone),\n  (de:'ゾ'; re:'ゾ'; join:arNone),\n  (de:'ダ'; re:'ダ'; join:arNone),\n  (de:'ヂ'; re:'ヂ'; join:arNone),\n  (de:'ヅ'; re:'ヅ'; join:arNone),\n  (de:'デ'; re:'デ'; join:arNone),\n  (de:'ド'; re:'ド'; join:arNone),\n  (de:'バ'; re:'バ'; join:arNone),\n  (de:'パ'; re:'パ'; join:arNone),\n  (de:'ビ'; re:'ビ'; join:arNone),\n  (de:'ピ'; re:'ピ'; join:arNone),\n  (de:'ブ'; re:'ブ'; join:arNone),\n  (de:'プ'; re:'プ'; join:arNone),\n  (de:'ベ'; re:'ベ'; join:arNone),\n  (de:'ペ'; re:'ペ'; join:arNone),\n  (de:'ボ'; re:'ボ'; join:arNone),\n  (de:'ポ'; re:'ポ'; join:arNone),\n  (de:'ヷ'; re:'ヷ'; join:arNone),\n  (de:'ヸ'; re:'ヸ'; join:arNone),\n  (de:'ヹ'; re:'ヹ'; join:arNone),\n  (de:'ヺ'; re:'ヺ'; join:arNone),\n  (de:'ヾ'; re:'ヾ'; join:arNone),\n  (de:'שּׁ'; re:'שּׁ'; join:arNone),\n  (de:'שּׂ'; re:'שּׂ'; join:arNone),\n  (de:'𑂚'; re:'𑂚'; join:arNone),\n  (de:'𑂜'; re:'𑂜'; join:arNone),\n  (de:'𑂫'; re:'𑂫'; join:arNone),\n  (de:'𑒻'; re:'𑒻'; join:arNone)\n  );\n\n"
  },
  {
    "path": "bgrabitmap/geometrytypes.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{=== Geometry types ===}{}\n\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\ntype\n  TPoint = BGRAClasses.TPoint;\n\n  {** A constant representing an empty point (with minimum possible integer values for X and Y)\n  that can be used as a separator in a list of TPoint }\n  const EmptyPoint : TPoint = (X: -2147483648; Y: -2147483648);\n\n{** Checks if the given point is equivalent to EmptyPoint }\nfunction IsEmptyPoint(const APoint: TPoint): boolean;\n\n  {* Value indicating that there is nothing in the single-precision floating point value.\n     It is also used as a separator in lists }\n  const EmptySingle = single(-3.402823e38);\n\ntype\n  {* Pointer to a TPointF structure }\n  PPointF = ^BGRAClasses.TPointF;\n  TPointF = BGRAClasses.TPointF;\n\n  {** Value indicating that there is an empty TPointF structure.\n      It is also used as a separator in lists of points }\n  const EmptyPointF: TPointF = (x: -3.402823e38; y: -3.402823e38);\n\n  {----------------- Operators for TPointF --------------------}\n  {** Creates a new structure with values _x_ and _y_ }\n  function PointF(x, y: single): TPointF; overload;\n  {** Creates a new structure converting integer values to single-precision floating-point coordinates }\n  function PointF(pt: TPoint): TPointF; overload;\n  {** Checks if the structure is empty (equal to EmptyPointF) }\n  function isEmptyPointF(const pt: TPointF): boolean;\n  {** Checks if both _x_ and _y_ are equal }\n  operator = (const pt1, pt2: TPointF): boolean; inline;\n  {** Adds _x_ and _y_ components separately. It is like adding vectors }\n  operator + (const pt1, pt2: TPointF): TPointF; inline;\n  {** Subtract _x_ and _y_ components separately. It is like subtracting vectors }\n  operator - (const pt1, pt2: TPointF): TPointF; inline;\n  {** Returns a point with opposite values for _x_ and _y_ components }\n  operator - (const pt2: TPointF): TPointF; inline;\n  {$if FPC_FULLVERSION < 30203}\n  {** Scalar product (deprecated): multiplies _x_ and _y_ components and returns the sum }\n  operator * (const pt1, pt2: TPointF): single; inline;\n  {** Scalar product: multiplies _x_ and _y_ components and returns the sum }\n  operator ** (const pt1, pt2: TPointF): single; inline;\n  {$endif}\n  {** Multiplies both _x_ and _y_ by _factor_. It scales the vector represented by (_x_, _y_) }\n  operator * (const pt1: TPointF; factor: single): TPointF; inline;\n  {** Multiplies both _x_ and _y_ by _factor_. It scales the vector represented by (_x_, _y_) }\n  operator * (factor: single; const pt1: TPointF): TPointF; inline;\n  {** Returns the length of the vector (_dx_, _dy_) }\n  function VectLen(const dx,dy: single): single; overload; inline;\n  {** Returns the length of the vector represented by (_x_, _y_) }\n  function VectLen(const v: TPointF): single; overload;\n  {** Computes the determinant of the two vectors (equal to the determinant of the square matrix\n      with those vectors as columns) }\n  function VectDet(const v1,v2: TPointF): double; inline;\n\ntype\n  { TPointFHelper }\n\n  {* Helper for TPointF structure providing additional functionality for point manipulation }\n  TPointFHelper = record helper for TPointF\n    {** Offsets the point by another point (TPointF) }\n    procedure Offset(const apt: TPointF); overload;\n    {** Offsets the point by another point (TPoint) }\n    procedure Offset(const apt: TPoint); overload;\n    {** Offsets the point by specified distances in the X (_dx_) and Y (_dy_) directions (integer values) }\n    procedure Offset(dx, dy: longint); overload;\n    {** Offsets the point by specified distances in the X (_dx_) and Y (_dy_) directions (single values) }\n    procedure Offset(dx, dy: single); overload;\n    {** Scales the point as a vector from the origin) by a specified factor }\n    procedure Scale(AScale: single);\n    {** Normalizes the point (modifies it to a unit length) }\n    procedure Normalize;\n\n    {** Rounds the coordinates of the point to the nearest integer towards positive infinity }\n    function Ceiling: TPoint;\n    {** Truncates the coordinates of the point, discarding fractional part }\n    function Truncate: TPoint;\n    {** Rounds the coordinates of the point to the nearest integer towards negative infinity }\n    function Floor: TPoint;\n    {** Rounds the coordinates of the point to the nearest integer }\n    function Round: TPoint;\n    {** Calculates the length (magnitude) of the point from the origin }\n    function Length: Single;\n    {** Determines if the point is empty (has special coordinates EmptyPointF) }\n    function IsEmpty: boolean;\n  end;\n\n  {* Contains an array of points with single-precision floating point coordinates }\n  ArrayOfTPointF = array of TPointF;\n\n  {** Creates an array of TPointF }\n  function PointsF(const pts: array of TPointF): ArrayOfTPointF;\n  {** Concatenates arrays of TPointF }\n  function ConcatPointsF(const APolylines: array of ArrayOfTPointF; AInsertEmptyPointInBetween: boolean = false): ArrayOfTPointF;\n  {** Compute the length of the polyline contained in the array.\n      _AClosed_ specifies if the last point is to be joined to the first one }\n  function PolylineLen(const pts: array of TPointF; AClosed: boolean = false): single;\n\ntype\n  {* An affine matrix contains three 2D vectors: the image of x, the image of y and the translation }\n  TAffineMatrix = array[1..2,1..3] of single;\n\n  TRectF = BGRAClasses.TRectF;\n\n  {** A constant representing an empty rectangle with all coordinates set to 0 }\n  const EmptyRectF : TRectF = (left:0; top:0; right:0; bottom: 0);\n\n  {** Creates a TRectF structure with specified left, top, right, and bottom coordinates }\n  function RectF(Left, Top, Right, Bottom: Single): TRectF;\n\n  {** Creates a TRectF structure from two TPointF points representing the top-left and bottom-right corners }\n  function RectF(const ATopLeft,ABottomRight: TPointF): TRectF;\n\n  {** Creates a TRectF structure from a TRect structure (integer coordinates converted to single precision) }\n  function RectF(const ARect: TRect): TRectF;\n\n  {** Creates a TRectF structure with a specified position (left, top) and size (width, height) }\n  function RectWithSizeF(left,top,width,height: Single): TRectF;\n\n  {** Checks if the given TRectF structure is empty (of zero size) }\n  function IsEmptyRectF(const ARect:TRectF): boolean;\n\n  {** A value for an empty rectangle with integer coordinates }\n  const EmptyRect : TRect = (left:0; top:0; right:0; bottom: 0);\n\n  {** Checks if a point is in a rectangle with integer coordinates.\n      This follows usual convention that _r.Right_ and _r.Bottom_ are not considered\n      to be included in the rectangle. }\n  function PtInRect(const pt: TPoint; r: TRect): boolean; overload;\n\n  {** Creates a rectangle with integer coordinates with the specified _width_ and _height_ }\n  function RectWithSize(left,top,width,height: integer): TRect;\n\n{$if FPC_FULLVERSION<030001}\n  {$define BGRA_DEFINE_TRECTHELPER}\ntype\n  {* Helper for TRect structure providing additional functionality to manipulate rectangles }\n  TRectHelper = record helper for TRect\n  private\n    {** Gets the height of the rectangle }\n    function GetHeight: integer;\n    {** Determines if the rectangle is empty (of zero size) }\n    function GetIsEmpty: boolean;\n    {** Gets the width of the rectangle }\n    function GetWidth: integer;\n    {** Sets the height of the rectangle }\n    procedure SetHeight(AValue: integer);\n    {** Sets the width of the rectangle }\n    procedure SetWidth(AValue: integer);\n  public\n    {** Creates a rectangle with specified origin, width, and height }\n    constructor Create(Origin: TPoint; AWidth, AHeight: Longint); overload;\n    {** Creates a rectangle with specified left, top, right, and bottom coordinates }\n    constructor Create(ALeft, ATop, ARight, ABottom: Longint); overload;\n    {** Modifies the rectangle to be the intersection of itself and another rectangle }\n    procedure Intersect(R: TRect);\n    {** Returns the intersection of two given rectangles }\n    class function Intersect(R1: TRect; R2: TRect): TRect; static;\n    {** Checks if the rectangle intersects with another rectangle }\n    function IntersectsWith(R: TRect): Boolean;\n    {** Returns the smallest rectangle that contains both of the given rectangles }\n    class function Union(R1, R2: TRect): TRect; static;\n    {** Modifies the rectangle to be the union of itself and another rectangle }\n    procedure Union(R: TRect);\n    {** Offsets the rectangle by the given distances in the X and Y directions }\n    procedure Offset(DX, DY: Longint);\n    {** Expands or contracts the rectangle by the specified amounts in both directions }\n    procedure Inflate(DX, DY: Longint);\n    {** Checks if the rectangle contains a specified point }\n    function Contains(const APoint: TPoint): boolean; overload;\n    {** Checks if the rectangle completely contains another rectangle }\n    function Contains(const ARect: TRect): boolean; overload;\n    {** Property to get or set the width of the rectangle }\n    property Width: integer read GetWidth write SetWidth;\n    {** Property to get or set the height of the rectangle }\n    property Height: integer read GetHeight write SetHeight;\n    {** Property to check if the rectangle is empty }\n    property IsEmpty: boolean read GetIsEmpty;\n  end;\n\n{ Check if two rectangles are equal (all coordinates are equal) }\noperator=(const ARect1,ARect2: TRect): boolean;\n{$endif}\n\ntype\n  TSize = BGRAClasses.TSize;\n\n{$if (FPC_FULLVERSION<030001) or defined(BGRABITMAP_USE_MSEGUI)}\n  {$define BGRA_DEFINE_TSIZEHELPER}\n\n  {* Helper to access a size }\n  TSizeHelper = record helper for TSize\n  private\n    {** Gets the height of the size }\n    function GetHeight: integer;\n    {** Gets the width of the size }\n    function GetWidth: integer;\n  public\n    {** Property to get the width }\n    property Width: integer read GetWidth;\n    {** Property to get the height }\n    property Height: integer read GetHeight;\n  end;\n{$ENDIF}\n\n{$IF FPC_FULLVERSION<30203}\n  {* Unit used to specify the resolution of a bitmap }\n  TResolutionUnit = (\n    {** No unit used, only aspect ratio specified }\n    ruNone,\n    {** Pixels per inch (DPI) }\n    ruPixelsPerInch,\n    {** Pixels per centimeters }\n    ruPixelsPerCentimeter);\n{$ELSE}\n   TResolutionUnit = FPImage.TResolutionUnit;\n\nconst\n  ruNone = FPImage.ruNone;\n  ruPixelsPerInch = FPImage.ruPixelsPerInch;\n  ruPixelsPerCentimeter = FPImage.ruPixelsPerCentimeter;\n{$ENDIF}\n\ntype\n   TImageResolutionInfo = record\n     ResolutionUnit: TResolutionUnit;\n     ResolutionX, ResolutionY: Single;\n   end;\n\n   function ImageResolutionInfo(AResolutionUnit: TResolutionUnit;\n     AResolutionX, AResolutionY: Single): TImageResolutionInfo;\n\n   {** Convert Resolution from/to dot per inch, dot per cm }\n   function ConvertResolution(AResolution: Single; ASourceUnit, ATargetUnit: TResolutionUnit): Single;\n\n   {** Guess resolution when not fully specified }\n   function FixImageResolutionInfo(const AResolution: TImageResolutionInfo): TImageResolutionInfo;\n\nconst {** Equivalence for the denominator unit of a resolution and the physical unit }\n ResolutionDenominatorUnit: array[TResolutionUnit] of TCSSUnit =\n       (cuCustom, cuInch, cuCentimeter);\n\ntype\n  {* Pointer to a TRectF structure }\n  PRectF = ^TRectF;\n\n  {* Helper for TRectF structure providing additional functionality for rectangle manipulation }\n  TRectFHelper = record helper for TRectF\n    {** Returns the intersection of two given rectangles }\n    class function Intersect(const R1: TRectF; const R2: TRectF): TRectF; overload; static;\n    {** Returns the union of two given rectangles }\n    class function Union(const R1: TRectF; const R2: TRectF): TRectF; overload; static;\n    {** Returns the union of two given rectangles, with an option to ignore empty rectangles }\n    class function Union(const R1: TRectF; const R2: TRectF; ADiscardEmpty: boolean): TRectF; overload; static;\n    {** Returns the union of itself and another rectangle }\n    function Union(const r: TRectF): TRectF; overload;\n    {** Returns the union of itself and another rectangle, with an option to ignore empty rectangles }\n    function Union(const r: TRectF; ADiscardEmpty: boolean): TRectF; overload;\n    {** Expands the rectangle to include a specified point (empty points are ignored) }\n    procedure Include(const APoint: TPointF);\n    {** Checks if the rectangle contains a specified point, with an option to include or exclude the bottom-right boundary }\n    function Contains(const APoint: TPointF; AIncludeBottomRight: boolean = false): boolean;\n    {** Checks if the rectangle intersects with another rectangle }\n    function IntersectsWith(const r: TRectF): boolean;\n    {** Determines if the rectangle is empty (of zero size) }\n    function IsEmpty: boolean;\n  end;\n\ntype\n  {* @abstract(Object representing an affine box.)\n\n     Box is defined by three corner points (top-left, top-tight, bottom-left). }\n  TAffineBox = object\n  private\n    {** Retrieves the affine box as an array of points (polygon representation) }\n    function GetAsPolygon: ArrayOfTPointF;\n    {** Gets the bottom-right corner of the affine box }\n    function GetBottomRight: TPointF;\n    {** Calculates the center point of the affine box }\n    function GetCenter: TPointF;\n    {** Calculates the height of the affine box }\n    function GetHeight: single;\n    {** Determines if the affine box is empty (one of the point being empty, not just of zero size) }\n    function GetIsEmpty: boolean;\n    {** Gets the bounding rectangle of the affine box as TRect }\n    function GetRectBounds: TRect;\n    {** Gets the bounding rectangle of the affine box as TRectF }\n    function GetRectBoundsF: TRectF;\n    {** Calculates the surface area of the affine box }\n    function GetSurface: single;\n    {** Calculates the width of the affine box }\n    function GetWidth: single;\n  public\n    {** Top-left corner of the affine box }\n    TopLeft,\n    {** Top-right corner of the affine box }\n    TopRight,\n    {** Bottom-left corner of the affine box }\n    BottomLeft: TPointF;\n\n    {** Creates an empty affine box }\n    class function EmptyBox: TAffineBox; static;\n    {** Creates an affine box defined by three corner points }\n    class function AffineBox(ATopLeft, ATopRight, ABottomLeft: TPointF): TAffineBox; overload; static;\n    {** Creates an affine box from a TRectF structure }\n    class function AffineBox(ARectF: TRectF): TAffineBox; overload; static;\n    {** Offsets the affine box by specified X and Y amounts }\n    procedure Offset(AOfsX, AOfsY: single); overload;\n    {** Offsets the affine box by a specified point }\n    procedure Offset(AOfs: TPointF); overload;\n    {** Inflates the affine box along its axes by specified horizontal and vertical amounts }\n    procedure Inflate(AHoriz, AVert: single);\n    {** Checks if a point is contained within the affine box }\n    function Contains(APoint: TPointF): boolean;\n\n    {** Bounding rectangle as TRect }\n    property RectBounds: TRect read GetRectBounds;\n    {** Bounding rectangle as TRectF }\n    property RectBoundsF: TRectF read GetRectBoundsF;\n    {** Bottom-right corner of the affine box }\n    property BottomRight: TPointF read GetBottomRight;\n    {** Check if the affine box is empty (containing empty points, not just of zero size) }\n    property IsEmpty: boolean read GetIsEmpty;\n    {** Affine box as an array of points (polygon) }\n    property AsPolygon: ArrayOfTPointF read GetAsPolygon;\n    {** Width of the affine box along its axes }\n    property Width: single read GetWidth;\n    {** Height of the affine box along its axes }\n    property Height: single read GetHeight;\n    {** Surface area of the affine box }\n    property Surface: single read GetSurface;\n    {** Center point of the affine box }\n    property Center: TPointF read GetCenter;\n  end;\n\ntype\n  {* Enumerates the modes of face culling in rendering. Face culling is a technique used to\n     determine which faces of a polygon are visible and should be rendered }\n  TFaceCulling = (\n    {** No face culling is applied. All faces of the polygon are rendered }\n    fcNone,\n    {** Keeps only the faces that are clockwise (CW) from the viewer's perspective.\n        Typically used to remove back faces when the convention is that CW is for front faces }\n    fcKeepCW,\n    {** Keeps only the faces that are counter-clockwise (CCW) from the viewer's perspective.\n        Typically used to remove back faces when the convention is that CCW is for front faces }\n    fcKeepCCW);\n\ntype\n  {* A pen style can be dashed, dotted, etc. It is defined as a list of floating point number.\n     The first number is the length of the first dash,\n     the second number is the length of the first gap,\n     the third number is the length of the second dash...\n     It must have an even number of values. This is used as a complement\n     to [[BGRABitmap Types imported from Graphics|TPenStyle]] }\n  TBGRAPenStyle = array Of Single;\n\n  {** Creates a pen style with the specified length for the dashes and the spaces }\n  function BGRAPenStyle(dash1, space1: single; dash2: single=0; space2: single = 0; dash3: single=0; space3: single = 0; dash4 : single = 0; space4 : single = 0): TBGRAPenStyle;\n\ntype\n  {* Different types of spline. A spline is a series of points that are used\n     as control points to draw a curve. The first point and last point may\n     or may not be the starting and ending point }\n  TSplineStyle = (\n    {** The curve is drawn inside the polygonal envelope without reaching the starting and ending points }\n    ssInside,\n    {** The curve is drawn inside the polygonal envelope and the starting and ending points are reached }\n    ssInsideWithEnds,\n    {** The curve crosses the polygonal envelope without reaching the starting and ending points }\n    ssCrossing,\n    {** The curve crosses the polygonal envelope and the starting and ending points are reached }\n    ssCrossingWithEnds,\n    {** The curve is outside the polygonal envelope (starting and ending points are reached) }\n    ssOutside,\n    {** The curve expands outside the polygonal envelope (starting and ending points are reached) }\n    ssRoundOutside,\n    {** The curve is outside the polygonal envelope and there is a tangeant at vertices (starting and ending points are reached) }\n    ssVertexToSide,\n    {** The curve is rounded using Bezier curves when the angle is less than or equal to 45° }\n    ssEasyBezier);\n\ntype\n  {* Pointer to an arc definition }\n  PArcDef = ^TArcDef;\n  {* Definition of an arc of an ellipse }\n  TArcDef = record\n    {** Center of the ellipse }\n    center: TPointF;\n    {** Horizontal and vertical of the ellipse before rotation }\n    radius: TPointF;\n    {** Rotation of the ellipse }\n    xAngleRadCW: single;\n    {** Start and end angle, in radian and clockwise. See angle convention in BGRAPath }\n    startAngleRadCW, endAngleRadCW: single;\n    {** Specifies if the arc goes anticlockwise }\n    anticlockwise: boolean\n  end;\n\n  {** Creates a structure for an arc definition }\n  function ArcDef(cx, cy, rx,ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single; anticlockwise: boolean) : TArcDef;\n\ntype\n  {* Possible options for drawing an arc of an ellipse (used in BGRACanvas) }\n  TArcOption = (\n    {** Close the path by joining the ending and starting point together }\n    aoClosePath,\n    {** Draw a pie shape by joining the ending and starting point to the center of the ellipse }\n    aoPie,\n    {** Fills the shape }\n    aoFillPath);\n    {** Set of options for drawing an arc }\n    TArcOptions = set of TArcOption;\n\n  {* Enumerates different styles of arrows that can be used in graphic rendering.\n     Each style represents a unique visual appearance for arrowheads or tails }\n  TBGRAArrowStyle = (\n    {** No arrow style. This option indicates that no arrowhead or tail is to be rendered }\n    asNone,\n    {** A normal arrow style, representing a standard arrowhead with an angle }\n    asNormal,\n    {** A cut arrow style, where the edge of the arrow are cut instead of using the pen end cap }\n    asCut,\n    {** A triangle arrow style, forming a simple triangular arrowhead }\n    asTriangle,\n    {** A hollow triangle arrow style, similar to _asTriangle_ but with an unfilled center }\n    asHollowTriangle,\n    {** A flipped arrow style, where the arrowhead points in the opposite direction to the normal style }\n    asFlipped,\n    {** A flipped cut arrow style, combining the aspects of _asFlipped_ and _asCut_ }\n    asFlippedCut,\n    {** A small tail, typically used to depict the starting point of an arrow }\n    asTail,\n    {** A tail repeat arrow style, depicting a series of repeated patterns typically used for the starting point of an arrow }\n    asTailRepeat);\n\n  {* @abstract(Generic class configuring and rendering an arrow.)\n\n**Example using different kind of arrows:**\n\n@image(../doc/img/arrows.png)\n\n```pascal\nuses BGRABitmap, BGRABitmapTypes;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp:TBGRABitmap;\n  w: single;\nbegin\n  bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRAWhite);\n  w := sqrt(ClientWidth*ClientHeight)/50;\n\n  // diagonal arrow\n  bmp.Arrow.StartAsTail;\n  bmp.Arrow.StartRepeatCount := 2;\n  bmp.Arrow.EndAsTriangle(0.25,False,True);\n  bmp.DrawPolyLineAntialias(\n    bmp.ComputeOpenedSpline([PointF(80,80),PointF(ClientWidth-160,ClientHeight div 2),PointF(ClientWidth-80,ClientHeight-20)],ssCrossingWithEnds),\n    BGRABlack,w);\n  bmp.Arrow.StartRepeatCount := 1; //restore default value\n\n  // top arrow\n  bmp.Arrow.StartAsClassic(True,True,3);\n  bmp.Arrow.StartOffsetX := -8;\n  bmp.Arrow.EndAsClassic(False,True);\n  bmp.DrawPolyLineAntialias(\n    bmp.ComputeOpenedSpline([PointF(40,60),PointF(ClientWidth div 3,20),PointF(ClientWidth-80,40)],ssCrossingWithEnds),\n    BGRABlack,w);\n  bmp.Arrow.StartOffsetX := 0; //restore default value\n\n  // left arrow\n  bmp.Arrow.StartAsClassic(True,True);\n  bmp.Arrow.StartSize := PointF(1,2);\n  bmp.Arrow.StartOffsetX := -5.5;\n  bmp.Arrow.StartRepeatCount := 3;\n  bmp.Arrow.EndAsTriangle(0.75);\n  bmp.DrawLineAntialias(20,90, 80,ClientHeight-40,\n    BGRABlack,w);\n  bmp.Arrow.StartSize := PointF(2,2); //restore default values\n  bmp.Arrow.StartOffsetX := 0;\n  bmp.Arrow.StartRepeatCount := 1;\n\n  // right arrow\n  bmp.Arrow.StartAsClassic;\n  bmp.Arrow.EndAsClassic(False,False,2);\n  bmp.DrawLineAntialias(ClientWidth-40,40,ClientWidth-40,ClientHeight-80,BGRABlack,w);\n\n  bmp.Draw(Canvas,0,0);\n  bmp.Free;\nend;\n```\n}\n  TBGRACustomArrow = class\n  protected\n    {** Retrieves the X-offset for the end of the arrow }\n    function GetEndOffsetX: single; virtual; abstract;\n    {** Retrieves the repeat count for the end symbol }\n    function GetEndRepeatCount: integer; virtual; abstract;\n    {** Retrieves the size factor for the end of the arrow }\n    function GetEndSizeFactor: TPointF; virtual; abstract;\n    {** Determines if the end of the arrow is defined }\n    function GetIsEndDefined: boolean; virtual; abstract;\n\n    {** Determines if the start of the arrow is defined }\n    function GetIsStartDefined: boolean; virtual; abstract;\n    {** Retrieves the X-offset for the start of the arrow }\n    function GetStartOffsetX: single; virtual; abstract;\n    {** Retrieves the repeat count for the start symbol}\n    function GetStartRepeatCount: integer; virtual; abstract;\n    {** Retrieves the size factor for the start of the arrow }\n    function GetStartSizeFactor: TPointF; virtual; abstract;\n\n    {** Sets the X-offset for the end of the arrow }\n    procedure SetEndOffsetX(AValue: single); virtual; abstract;\n    {** Sets the repeat count for the end symbol }\n    procedure SetEndRepeatCount(AValue: integer); virtual; abstract;\n    {** Sets the size factor for the end of the arrow }\n    procedure SetEndSizeFactor(AValue: TPointF); virtual; abstract;\n\n    {** Sets the X-offset for the start of the arrow }\n    procedure SetStartOffsetX(AValue: single); virtual; abstract;\n    {** Sets the repeat count for the start symbol }\n    procedure SetStartRepeatCount(AValue: integer); virtual; abstract;\n    {** Sets the size factor for the start of the arrow }\n    procedure SetStartSizeFactor(AValue: TPointF); virtual; abstract;\n\n    {** Retrieves the line cap style for the classic arrow }\n    function GetLineCap: TPenEndCap; virtual; abstract;\n    {** Sets the line cap style for the classic arrow }\n    procedure SetLineCap(AValue: TPenEndCap); virtual; abstract;\n  public\n    {** Computes the start of the arrow at a given position and direction }\n    function ComputeStartAt(const APosition, ADirection: TPointF; const AWidth, ACurrentPos: single): ArrayOfTPointF; virtual; abstract;\n    {** Computes the end of the arrow at a given position and direction }\n    function ComputeEndAt(const APosition, ADirection: TPointF; const AWidth, ACurrentPos: single): ArrayOfTPointF; virtual; abstract;\n\n    {** Sets the start of the arrow to no style }\n    procedure StartAsNone; virtual; abstract;\n    {** Sets the start of the arrow to a classic style }\n    procedure StartAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); virtual; abstract;\n    {** Sets the start of the arrow to a triangle style }\n    procedure StartAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); virtual; abstract;\n    {** Sets the start of the arrow to a tail style }\n    procedure StartAsTail; virtual; abstract;\n\n    {** Sets the end of the arrow to no style }\n    procedure EndAsNone; virtual; abstract;\n    {** Sets the end of the arrow to a classic style }\n    procedure EndAsClassic(AFlipped: boolean = false; ACut: boolean = false; ARelativePenWidth: single = 1); virtual; abstract;\n    {** Sets the end of the arrow to a triangle style }\n    procedure EndAsTriangle(ABackOffset: single = 0; ARounded: boolean = false; AHollow: boolean = false; AHollowPenWidth: single = 0.5); virtual; abstract;\n    {** Sets the end of the arrow to a tail style }\n    procedure EndAsTail; virtual; abstract;\n\n    {** Check if the start of the arrow is defined }\n    property IsStartDefined: boolean read GetIsStartDefined;\n    {** Check if the end of the arrow is defined }\n    property IsEndDefined: boolean read GetIsEndDefined;\n\n    {** X-offset for the start of the arrow }\n    property StartOffsetX: single read GetStartOffsetX write SetStartOffsetX;\n    {** X-offset for the end of the arrow }\n    property EndOffsetX: single read GetEndOffsetX write SetEndOffsetX;\n    {** Line cap style }\n    property LineCap: TPenEndCap read GetLineCap write SetLineCap;\n    {** Size factor for the start of the arrow }\n    property StartSize: TPointF read GetStartSizeFactor write SetStartSizeFactor;\n    {** Size factor for the end of the arrow }\n    property EndSize: TPointF read GetEndSizeFactor write SetEndSizeFactor;\n    {** Repeat count for the start symbol }\n    property StartRepeatCount: integer read GetStartRepeatCount write SetStartRepeatCount;\n    {** Repeat count for the end symbol }\n    property EndRepeatCount: integer read GetEndRepeatCount write SetEndRepeatCount;\n  end;\n\n  {* Generic class representing a pen stroker, used for drawing and styling lines with various attributes }\n  TBGRACustomPenStroker = class\n  protected\n    {** Retrieves the arrow style used at both ends of strokes }\n    function GetArrow: TBGRACustomArrow; virtual; abstract;\n    {** Determines if the arrow is owned (managed) by the pen stroker }\n    function GetArrowOwned: boolean; virtual; abstract;\n    {** Gets the custom pen style }\n    function GetCustomPenStyle: TBGRAPenStyle; virtual; abstract;\n    {** Retrieves the style of line joins (e.g., bevel, miter) }\n    function GetJoinStyle: TPenJoinStyle; virtual; abstract;\n    {** Retrieves the line cap style (e.g., butt, round) }\n    function GetLineCap: TPenEndCap; virtual; abstract;\n    {** Gets the miter limit for line joins }\n    function GetMiterLimit: single; virtual; abstract;\n    {** Retrieves the standard pen style }\n    function GetPenStyle: TPenStyle; virtual; abstract;\n    {** Gets the stroke transformation matrix (applied only to stroke and not to path points) }\n    function GetStrokeMatrix: TAffineMatrix; virtual; abstract;\n    {** Sets the arrow style used at both ends of strokes }\n    procedure SetArrow(AValue: TBGRACustomArrow); virtual; abstract;\n    {** Sets whether the arrow is owned by the pen stroker }\n    procedure SetArrowOwned(AValue: boolean); virtual; abstract;\n    {** Sets the custom pen style }\n    procedure SetCustomPenStyle(AValue: TBGRAPenStyle); virtual; abstract;\n    {** Sets the style of line joins }\n    procedure SetJoinStyle(AValue: TPenJoinStyle); virtual; abstract;\n    {** Sets the line cap style }\n    procedure SetLineCap(AValue: TPenEndCap); virtual; abstract;\n    {** Sets the miter limit for line joins }\n    procedure SetMiterLimit(AValue: single); virtual; abstract;\n    {** Sets the standard pen style }\n    procedure SetPenStyle(AValue: TPenStyle); virtual; abstract;\n    {** Sets the stroke transformation matrix (applied only to stroke and not to path points) }\n    procedure SetStrokeMatrix(const AValue: TAffineMatrix); virtual; abstract;\n\n  public\n    {** Computes a polyline with the given points and width, optionally closing the cap }\n    function ComputePolyline(const APoints: array of TPointF; AWidth: single; AClosedCap: boolean = true): ArrayOfTPointF; overload; virtual; abstract;\n    {** Computes a polyline with the given points, width, and pen color, optionally closing the cap }\n    function ComputePolyline(const APoints: array of TPointF; AWidth: single; APenColor: TBGRAPixel; AClosedCap: boolean = true): ArrayOfTPointF; overload; virtual; abstract;\n    {** Computes a polyline with automatic cycling of points and given width }\n    function ComputePolylineAutoCycle(const APoints: array of TPointF; AWidth: single): ArrayOfTPointF; virtual; abstract;\n    {** Computes a polygon with the given points and width }\n    function ComputePolygon(const APoints: array of TPointF; AWidth: single): ArrayOfTPointF; virtual; abstract;\n\n    {** Standard pen style }\n    property Style: TPenStyle read GetPenStyle write SetPenStyle;\n    {** Custom pen style (with given dash and gap lengths) }\n    property CustomPenStyle: TBGRAPenStyle read GetCustomPenStyle write SetCustomPenStyle;\n    {** Arrow style at both ends of strokes }\n    property Arrow: TBGRACustomArrow read GetArrow write SetArrow;\n    {** Is the arrow is owned by the pen stroker }\n    property ArrowOwned: boolean read GetArrowOwned write SetArrowOwned;\n    {** @abstract(Stroke transformation matrix.)\n\n    This matrix is applied only to stroke and not to path points.\n\n**Example of skew transform:**\n\n@image(../doc/img/pen_skew.png)\n\n```pascal\nuses BGRABitmapTypes, BGRATransform;\n\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  i: Integer;\nbegin\n  for i := 0 to 5 do\n  begin\n    Bitmap.Pen.StrokeMatrix := AffineMatrixSkewXDeg(-10*i);\n    Bitmap.Pen.LineCap := pecSquare;\n    Bitmap.DrawLineAntialias(40,40+i*80,Bitmap.Width div 2-40,40+i*80, BGRABlack,30);\n    Bitmap.Pen.LineCap := pecRound;\n    Bitmap.DrawLineAntialias(Bitmap.Width div 2+40,40+i*80,Bitmap.Width-40,40+i*80, BGRABlack,30);\n  end;\nend;\n```}\n    property StrokeMatrix: TAffineMatrix read GetStrokeMatrix write SetStrokeMatrix;\n    {** Line cap style }\n    property LineCap: TPenEndCap read GetLineCap write SetLineCap;\n    {** Join style of lines }\n    property JoinStyle: TPenJoinStyle read GetJoinStyle write SetJoinStyle;\n    {** Miter limit for line joins }\n    property MiterLimit: single read GetMiterLimit write SetMiterLimit;\n  end;\n\ntype\n  {* Pointer to a TPoint3D structure }\n  PPoint3D = ^TPoint3D;\n\n  {* Point in 3D with single-precision floating point coordinates }\n  TPoint3D = record\n    x,y,z: single;\n    {** Offsets the point by the given 3D vector }\n    procedure Offset(const point3D: TPoint3D);\n    {** Scale the point (as a vector from the origin) }\n    procedure Scale(AScale: single);\n  end;\n\n  {----------------- Operators for TPoint3D ---------------}\n  {** Creates a new structure with values (_x_, _y_, _z_) }\n  function Point3D(x,y,z: single): TPoint3D;\n  {** Checks if all components _x_, _y_ and _z_ are equal }\n  operator = (const v1,v2: TPoint3D): boolean; inline;\n  {** Adds components separately. It is like adding vectors }\n  operator + (const v1,v2: TPoint3D): TPoint3D; inline;\n  {** Subtract components separately. It is like subtracting vectors }\n  operator - (const v1,v2: TPoint3D): TPoint3D; inline;\n  {** Returns a point with opposite values for all components }\n  operator - (const v: TPoint3D): TPoint3D; inline;\n  {** Scalar product: multiplies components and returns the sum }\n  operator * (const v1,v2: TPoint3D): single; inline;\n  {** Multiplies components by _factor_. It scales the vector represented by (_x_, _y_, _z_) }\n  operator * (const v1: TPoint3D; const factor: single): TPoint3D; inline;\n  {** Multiplies components by _factor_. It scales the vector represented by (_x_, _y_, _z_) }\n  operator * (const factor: single; const v1: TPoint3D): TPoint3D; inline;\n  {** Computes the vectorial product _w_. It is perpendicular to both _u_ and _v_ }\n  procedure VectProduct3D(u,v: TPoint3D; out w: TPoint3D);\n  {** Normalize the vector, i.e. scale it so that its length be 1 }\n  procedure Normalize3D(var v: TPoint3D); inline;\n  {** Computes the length of the vector from the origin to the point }\n  function VectLen3D(const v: TPoint3D): single;\n\ntype\n  {* Defition of a line in the euclidian plane }\n  TLineDef = record\n    {** Some point in the line }\n    origin: TPointF;\n    {** Vector indicating the direction }\n    dir: TPointF;\n  end;\n\n  {----------- Line and polygon functions -----------}\n  {** Computes the intersection of two lines. If they are parallel, returns\n      the middle of the segment between the two origins }\n  function IntersectLine(line1, line2: TLineDef): TPointF; overload;\n  {** Computes the intersection of two lines. If they are parallel, returns\n      the middle of the segment between the two origins. The value _parallel_\n      is set to indicate if the lines were parallel }\n  function IntersectLine(line1, line2: TLineDef; out parallel: boolean): TPointF; overload;\n  {** Checks if the polygon formed by the given points is convex. _IgnoreAlign_\n      specifies that if the points are aligned, it should still be considered as convex }\n  function IsConvex(const pts: array of TPointF; IgnoreAlign: boolean = true): boolean;\n  {** Checks if the points follow a clockwise curve }\n  function IsClockwise(const pts: array of TPointF): boolean;\n  {** Checks if the curve is clockwise on the whole but accepting some counter-clockwise points }\n  function IsMostlyClockwise(const pts: array of TPointF): boolean;\n  {** Checks if the quad formed by the 4 given points intersects itself }\n  function DoesQuadIntersect(pt1,pt2,pt3,pt4: TPointF): boolean;\n  {** Checks if two segment intersect }\n  function DoesSegmentIntersect(pt1,pt2,pt3,pt4: TPointF): boolean;\n\ntype\n  TBGRACustomPathCursor = class;\n  {* Callback function when rendering a stroke }\n  TBGRAPathDrawProc = procedure(const APoints: array of TPointF; AClosed: boolean; AData: Pointer) of object;\n  {* Callback function when filling a shape }\n  TBGRAPathFillProc = procedure(const APoints: array of TPointF; AData: pointer) of object;\n\n  {* @abstract(Interface for path functions.)\n\n     A path is the ability to define a contour with _moveTo_, _lineTo_...\n\n     Even if it is an interface, it must not implement reference counting. }\n  IBGRAPath = interface\n    {** Closes the current path with a line to the starting point }\n    procedure closePath;\n    {** Moves to a location, disconnected from previous points }\n    procedure moveTo(constref pt: TPointF);\n    {** Adds a line from the current point }\n    procedure lineTo(constref pt: TPointF);\n    {** Adds a polyline from the current point }\n    procedure polylineTo(const pts: array of TPointF);\n    {** Adds a quadratic Bézier curve from the current point }\n    procedure quadraticCurveTo(constref cp,pt: TPointF);\n    {** Adds a cubic Bézier curve from the current point }\n    procedure bezierCurveTo(constref cp1,cp2,pt: TPointF);\n    {** Adds an arc. If there is a current point, it is connected to the beginning of the arc }\n    procedure arc(constref arcDef: TArcDef);\n    {** Adds an opened spline. If there is a current point, it is connected to the beginning of the spline }\n    procedure openedSpline(const pts: array of TPointF; style: TSplineStyle);\n    {** Adds an closed spline. If there is a current point, it is connected to the beginning of the spline }\n    procedure closedSpline(const pts: array of TPointF; style: TSplineStyle);\n    {** Copy the content of this path to the specified destination }\n    procedure copyTo(dest: IBGRAPath);\n    {** Returns the content of the path as an array of points }\n    function getPoints: ArrayOfTPointF; overload;\n    {** Returns the content of the path as an array of points with the transformation specified by _AMatrix_ }\n    function getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF; overload;\n    {** Calls a given draw procedure for each sub path with computed coordinates for rendering }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer); overload;\n    {** Calls a given draw procedure for each sub path with computed coordinates using given _AMatrix_ transformation }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AData: pointer); overload;\n    {** Calls a given fill procedure for each sub path with computed coordinates for rendering }\n    procedure fill(AFillProc: TBGRAPathFillProc; AData: pointer); overload;\n    {** Calls a given fill procedure for each sub path with computed coordinates using given _AMatrix_ transformation }\n    procedure fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix; AData: pointer); overload;\n    {** Returns a cursor to go through the path. The cursor must be freed by calling _Free_. }\n    function getCursor: TBGRACustomPathCursor;\n  end;\n\n  {* Generic class representing a path, providing methods for creation and exploration }\n  TBGRACustomPath = class(IBGRAPath)\n    {** Constructor to create a custom path. Must be overridden in subclasses }\n    constructor Create; virtual; abstract;\n\n    {** Begins a new path }\n    procedure beginPath; virtual; abstract;\n    {** Closes the current path }\n    procedure closePath; virtual; abstract;\n    {** Moves the current point to a specified location, starting a new sub-path }\n    procedure moveTo(constref pt: TPointF); virtual; abstract;\n    {** Adds a line from the current point to a specified point }\n    procedure lineTo(constref pt: TPointF); virtual; abstract;\n    {** Adds a series of lines to the path based on an array of points }\n    procedure polylineTo(const pts: array of TPointF); virtual; abstract;\n    {** Adds a quadratic Bézier curve to the path }\n    procedure quadraticCurveTo(constref cp, pt: TPointF); virtual; abstract;\n    {** Adds a cubic Bézier curve to the path }\n    procedure bezierCurveTo(constref cp1, cp2, pt: TPointF); virtual; abstract;\n    {** Adds an arc to the path based on an arc definition }\n    procedure arc(constref arcDef: TArcDef); virtual; abstract;\n    {** Adds an open spline to the path based on a series of points and a spline style }\n    procedure openedSpline(const pts: array of TPointF; style: TSplineStyle); virtual; abstract;\n    {** Adds a closed spline to the path based on a series of points and a spline style }\n    procedure closedSpline(const pts: array of TPointF; style: TSplineStyle); virtual; abstract;\n    {** Copies the path to another path object }\n    procedure copyTo(dest: IBGRAPath); virtual; abstract;\n\n  protected\n    {** Retrieves the points of the path }\n    function getPoints: ArrayOfTPointF; overload; virtual; abstract;\n    {** Retrieves the points of the path, transformed by a specified matrix }\n    function getPoints(AMatrix: TAffineMatrix): ArrayOfTPointF; overload; virtual; abstract;\n    {** Strokes the path with a specified drawing procedure }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; AData: pointer); overload; virtual; abstract;\n    {** Strokes the path with a specified drawing procedure and transformation matrix }\n    procedure stroke(ADrawProc: TBGRAPathDrawProc; const AMatrix: TAffineMatrix; AData: pointer); overload; virtual; abstract;\n    {** Fills the path with a specified filling procedure }\n    procedure fill(AFillProc: TBGRAPathFillProc; AData: pointer); overload; virtual; abstract;\n    {** Fills the path with a specified filling procedure and transformation matrix }\n    procedure fill(AFillProc: TBGRAPathFillProc; const AMatrix: TAffineMatrix; AData: pointer); overload; virtual; abstract;\n    {** Retrieves the length of the path }\n    function getLength: single; virtual; abstract;\n    {** Retrieves a cursor for navigating the path }\n    function getCursor: TBGRACustomPathCursor; virtual; abstract;\n  protected\n    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n  end;\n\n  {* Type for specifying any derived class of TBGRACustomPath }\n  TBGRAPathAny = class of TBGRACustomPath;\n\n  {* Class that contains a cursor to browse an existing path }\n  TBGRACustomPathCursor = class\n  protected\n    {** Retrieves the current position from the start }\n    function GetArcPos: single; virtual; abstract;\n    {** Returns the current coordinate in the path }\n    function GetCurrentCoord: TPointF; virtual; abstract;\n    {** Returns the tangent vector to the current position }\n    function GetCurrentTangent: TPointF; virtual; abstract;\n    {** Retrieves if the cursor loops when there is a closed shape }\n    function GetLoopClosedShapes: boolean; virtual; abstract;\n    {** Retrieves if the cursor loops at the end of the whole path }\n    function GetLoopPath: boolean; virtual; abstract;\n    {** Retreive the full arc length of the path }\n    function GetPathLength: single; virtual; abstract;\n    {** Compute the bounds of the path }\n    function GetBounds: TRectF; virtual; abstract;\n    {** Starting coordinate of the path }\n    function GetStartCoordinate: TPointF; virtual; abstract;\n    {** Sets the current position from the start }\n    procedure SetArcPos(AValue: single); virtual; abstract;\n    {** Sets if the cursor loops when there is a closed shape }\n    procedure SetLoopClosedShapes(AValue: boolean); virtual; abstract;\n    {** Sets if the cursor loops at the end of the whole path }\n    procedure SetLoopPath(AValue: boolean); virtual; abstract;\n  public\n    {** Go forward in the path, increasing the value of _Position_. If _ADistance_ is negative, then\n        it goes backward instead. _ACanJump_ specifies if the cursor can jump from one shape to another\n        without a line or an arc. Otherwise, the cursor is stuck, and the return value is less than\n        the value _ADistance_ provided.  If all the way has been travelled, the\n        return value is equal to _ADistance_ }\n    function MoveForward(ADistance: single; ACanJump: boolean = true): single; virtual; abstract;\n    {** Go backward, decreasing the value of _Position_. If _ADistance_ is negative, then it goes\n        forward instead. _ACanJump_ specifies if the cursor can jump from one shape to another\n        without a line or an arc. Otherwise, the cursor is stuck, and the return value is less than\n        the value _ADistance_ provided. If all the way has been travelled, the\n        return value is equal to _ADistance_ }\n    function MoveBackward(ADistance: single; ACanJump: boolean = true): single; virtual; abstract;\n    {** Returns the current coordinate in the path }\n    property CurrentCoordinate: TPointF read GetCurrentCoord;\n    {** Returns the tangent vector. It is a vector of length one that is parallel to the curve\n        at the current point. A normal vector is easily deduced as PointF(y,-x) }\n    property CurrentTangent: TPointF read GetCurrentTangent;\n    {** Current position in the path, as a distance along the arc from the starting point of the path }\n    property Position: single read GetArcPos write SetArcPos;\n    {** Full arc length of the path }\n    property PathLength: single read GetPathLength;\n    {** Starting coordinate of the path }\n    property StartCoordinate: TPointF read GetStartCoordinate;\n    {** Specifies if the cursor loops when there is a closed shape }\n    property LoopClosedShapes: boolean read GetLoopClosedShapes write SetLoopClosedShapes;\n    {** Specifies if the cursor loops at the end of the path. Note that if it needs to jump to go\n        to the beginning, it will be only possible if the parameter _ACanJump_ is set to True\n        when moving along the path }\n    property LoopPath: boolean read GetLoopPath write SetLoopPath;\n  end;\n\nvar\n  {* Factory provided to create a TBGRAPath object }\n  BGRAPathFactory: TBGRAPathAny;\n\n{$DEFINE INCLUDE_INTERFACE}\n{$I bezier.inc}\n\ntype\n  {* Possible options for a round rectangle }\n  TRoundRectangleOption = (\n    {** specify that a corner is a square (not rounded) }\n    rrTopLeftSquare,rrTopRightSquare,rrBottomRightSquare,rrBottomLeftSquare,\n    {** specify that a corner is a bevel (cut) }\n    rrTopLeftBevel,rrTopRightBevel,rrBottomRightBevel,rrBottomLeftBevel,\n    {** default option, does nothing particular }\n    rrDefault);\n    {** A set of options for a round rectangle }\n    TRoundRectangleOptions = set of TRoundRectangleOption;\n  {* Order of polygons when rendered using TBGRAMultiShapeFiller\n     (in unit BGRAPolygon) }\n  TPolygonOrder = (\n    {** No order, colors are mixed together }\n    poNone,\n    {** First polygon is on top }\n    poFirstOnTop,\n    {** Last polygon is on top }\n    poLastOnTop);\n\n  PIntersectionInfo = ^TIntersectionInfo;\n  {* Contains an intersection between an horizontal line and any shape. It\n     is used when filling shapes }\n  TIntersectionInfo = class\n    {** Horizontal position of the intersection }\n    interX: single;\n    {** Winding count }\n    winding: integer;\n    {** Number identifying the current segment where the intersection was found }\n    numSegment: integer;\n    {** Sets the position and other information about the intersection }\n    procedure SetValues(AInterX: Single; AWinding, ANumSegment: integer);\n  end;\n  {** An array of intersections between an horizontal line and any shape }\n  ArrayOfTIntersectionInfo = array of TIntersectionInfo;\n\n  {* Abstract class defining any shape that can be filled }\n  TBGRACustomFillInfo = class\n    public\n      {** Returns true if one segment number can represent a curve and\n          thus cannot be considered exactly straight }\n      function SegmentsCurved: boolean; virtual; abstract;\n\n      {** Returns integer bounds for the shape }\n      function GetBounds: TRect; virtual; abstract;\n\n      {** Check if the point is inside the shape }\n      function IsPointInside(x,y: single; windingMode: boolean): boolean; virtual; abstract;\n\n      {** Create an array that will contain computed intersections.\n          To augment that array, use CreateIntersectionInfo for new items }\n      function CreateIntersectionArray: ArrayOfTIntersectionInfo; virtual; abstract;\n      {** Create a structure to define one single intersection }\n      function CreateIntersectionInfo: TIntersectionInfo; virtual; abstract;\n      {** Free an array of intersections }\n      procedure FreeIntersectionArray(var inter: ArrayOfTIntersectionInfo); virtual; abstract;\n\n      {** Fill an array _inter_ with actual intersections with the shape at the y coordinate _cury_.\n          _nbInter_ receives the number of computed intersections. _windingMode_ specifies if\n          the winding method must be used to determine what is inside of the shape }\n      procedure ComputeAndSort(cury: single; var inter: ArrayOfTIntersectionInfo; out nbInter: integer; windingMode: boolean); virtual; abstract;\n\n      {** Returns the index of the current slice (horizontal stripe) }\n      function GetSliceIndex: integer; virtual; abstract;\n  end;\n\ntype\n  {* Shape of a gradient }\n  TGradientType = (\n    {** The color changes along a certain vector and does not change along its perpendicular direction }\n    gtLinear,\n    {** The color changes like in _gtLinear_ however it is symmetrical to a specified direction }\n    gtReflected,\n    {** The color changes along a diamond shape }\n    gtDiamond,\n    {** The color changes in a radial way from a given center }\n    gtRadial,\n    {** The color changes according to the angle relative to a given center }\n    gtAngular);\n\n  {** List of string to represent gradient types }\n  const GradientTypeStr : array[TGradientType] of string\n  = ('Linear','Reflected','Diamond','Radial','Angular');\n\n  {** Returns the gradient type represented by the given string }\n  function StrToGradientType(str: string): TGradientType;\n\ntype\n  {* Function type to get the the color at a given integer position }\n  TBGRAGradientGetColorAtFunc = function(position: integer): TBGRAPixel of object;\n  {* Function type to get the the color at a given single-precision floating type position }\n  TBGRAGradientGetColorAtFloatFunc = function(position: single): TBGRAPixel of object;\n  {* Function type to get the the expanded color at a given integer position }\n  TBGRAGradientGetExpandedColorAtFunc = function(position: integer): TExpandedPixel of object;\n  {* Function type to get the the expanded color at a given single-precision floating type position }\n  TBGRAGradientGetExpandedColorAtFloatFunc = function(position: single): TExpandedPixel of object;\n\n  {* Defines a gradient of color, not specifying its shape but only the\n     series of colors }\n  TBGRACustomGradient = class\n  public\n    {** Returns the color at a given _position_. The reference range is\n        from 0 to 65535, however values beyond are possible as well }\n    function GetColorAt(position: integer): TBGRAPixel; virtual; abstract;\n    {** Returns the expanded color at a given _position_. The reference range is\n        from 0 to 65535, however values beyond are possible as well }\n    function GetExpandedColorAt(position: integer): TExpandedPixel; virtual;\n    {** Returns the color at a given _position_. The reference range is\n        from 0 to 1, however values beyond are possible as well }\n    function GetColorAtF(position: single): TBGRAPixel; virtual;\n    {** Returns the expanded color at a given _position_. The reference range is\n        from 0 to 1, however values beyond are possible as well }\n    function GetExpandedColorAtF(position: single): TExpandedPixel; virtual;\n    {** Returns the average color of the gradient }\n    function GetAverageColor: TBGRAPixel; virtual; abstract;\n    {** Returns the average expanded color of the gradient }\n    function GetAverageExpandedColor: TExpandedPixel; virtual;\n    {** Returns whether the gradient has only one color }\n    function GetMonochrome: boolean; virtual; abstract;\n    {** If the gradient contains only one color and thus is not really a gradient }\n    property Monochrome: boolean read GetMonochrome;\n  end;\n\n{$ENDIF}\n\n////////////////////////////////////////////////////////////////////////////////\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{$IFDEF BGRA_DEFINE_TRECTHELPER}\n{ TRectHelper }\n\nfunction TRectHelper.GetHeight: integer;\nbegin\n  result := Bottom-Top;\nend;\n\nfunction TRectHelper.GetIsEmpty: boolean;\nbegin\n  result := (Width = 0) and (Height = 0)\nend;\n\nfunction TRectHelper.GetWidth: integer;\nbegin\n  result := Right-Left;\nend;\n\nprocedure TRectHelper.SetHeight(AValue: integer);\nbegin\n  Bottom := Top+AValue;\nend;\n\nprocedure TRectHelper.SetWidth(AValue: integer);\nbegin\n  Right := Left+AValue;\nend;\n\nconstructor TRectHelper.Create(Origin: TPoint; AWidth, AHeight: Longint);\nbegin\n  self.Left := Origin.X;\n  self.Top := Origin.Y;\n  self.Right := Origin.X+AWidth;\n  self.Bottom := Origin.Y+AHeight;\nend;\n\nconstructor TRectHelper.Create(ALeft, ATop, ARight, ABottom: Longint);\nbegin\n  self.Left := ALeft;\n  self.Top := ATop;\n  self.Right := ARight;\n  self.Bottom := ABottom;\nend;\n\nprocedure TRectHelper.Intersect(R: TRect);\nbegin\n  self := TRect.Intersect(self, R);\nend;\n\nclass function TRectHelper.Intersect(R1: TRect; R2: TRect): TRect;\nbegin\n  if R1.Left >= R2.Left then result.Left := R1.Left else result.Left := R2.Left;\n  if R1.Top >= R2.Top then result.Top := R1.Top else result.Top := R2.Top;\n  if R1.Right <= R2.Right then result.Right := R1.Right else result.Right := R2.Right;\n  if R1.Bottom <= R2.Bottom then result.Bottom := R1.Bottom else result.Bottom := R2.Bottom;\n  if result.IsEmpty then fillchar(result, sizeof(result), 0);\nend;\n\nfunction TRectHelper.IntersectsWith(R: TRect): Boolean;\nbegin\n  Result := (Left < R.Right) and (R.Left < Right) and (Top < R.Bottom) and (R.Top < Bottom);\nend;\n\nclass function TRectHelper.Union(R1, R2: TRect): TRect;\nbegin\n  if R1.Left <= R2.Left then result.Left := R1.Left else result.Left := R2.Left;\n  if R1.Top <= R2.Top then result.Top := R1.Top else result.Top := R2.Top;\n  if R1.Right >= R2.Right then result.Right := R1.Right else result.Right := R2.Right;\n  if R1.Bottom >= R2.Bottom then result.Bottom := R1.Bottom else result.Bottom := R2.Bottom;\n  if result.IsEmpty then fillchar(result, sizeof(result), 0);\nend;\n\nprocedure TRectHelper.Union(R: TRect);\nbegin\n  self := TRect.Union(self, R);\nend;\n\nprocedure TRectHelper.Offset(DX, DY: Longint);\nbegin\n  Inc(Left, DX);\n  Inc(Top, DY);\n  Inc(Right, DX);\n  Inc(Bottom, DY);\nend;\n\nprocedure TRectHelper.Inflate(DX, DY: Longint);\nbegin\n  Dec(Left, DX);\n  Dec(Top, DY);\n  Inc(Right, DX);\n  Inc(Bottom, DY);\nend;\n\nfunction TRectHelper.Contains(const APoint: TPoint): boolean;\nbegin\n  result := (APoint.X >= Left) and (APoint.X < Right) and\n    (APoint.Y >= Top) and (APoint.Y < Bottom);\nend;\n\nfunction TRectHelper.Contains(const ARect: TRect): boolean;\nbegin\n  Result := (Left <= ARect.Left) and (ARect.Right <= Right) and (Top <= ARect.Top) and (ARect.Bottom <= Bottom);\nend;\n\noperator =(const ARect1, ARect2: TRect): boolean;\nbegin\n  result:= (ARect1.Left = ARect2.Left) and (ARect1.Top = ARect2.Top) and\n           (ARect1.Right = ARect2.Right) and (ARect1.Bottom = ARect2.Bottom);\nend;\n{$ENDIF}\n\n{$ifdef BGRA_DEFINE_TSIZEHELPER}\n{ TSizeHelper }\n\nfunction TSizeHelper.GetHeight: integer;\nbegin\n  result := cy;\nend;\n\nfunction TSizeHelper.GetWidth: integer;\nbegin\n  result := cx;\nend;\n{$ENDIF}\n\nfunction IsEmptyPoint(const APoint: TPoint): boolean;\nbegin\n  result := (APoint.x = -2147483648) or (APoint.y = -2147483648);\nend;\n\nprocedure TPointFHelper.Offset(const apt: TPointF);\nbegin\n  if isEmptyPointF(self) then exit;\n  IncF(self.x, apt.x);\n  IncF(self.y, apt.y);\nend;\n\nprocedure TPointFHelper.Offset(const apt: TPoint);\nbegin\n  if isEmptyPointF(self) then exit;\n  IncF(self.x, apt.x);\n  IncF(self.y, apt.y);\nend;\n\nprocedure TPointFHelper.Offset(dx, dy: longint);\nbegin\n  if isEmptyPointF(self) then exit;\n  IncF(self.x, dx);\n  IncF(self.y, dy);\nend;\n\nprocedure TPointFHelper.Offset(dx, dy: single);\nbegin\n  if isEmptyPointF(self) then exit;\n  IncF(self.x, dx);\n  IncF(self.y, dy);\nend;\n\nprocedure TPointFHelper.Scale(AScale: single);\nbegin\n  if not isEmptyPointF(self) then\n  begin\n    self.x := self.x * AScale;\n    self.y := self.y * AScale;\n  end;\nend;\n\nprocedure TPointFHelper.Normalize;\nvar\n  len: Single;\nbegin\n  len := Length;\n  if len > 0 then self := self*(1/len);\nend;\n\nfunction TPointFHelper.Ceiling: TPoint;\nbegin\n  if isEmptyPointF(self) then\n    result := EmptyPoint\n  else\n  begin\n    result.x:=ceil(x);\n    result.y:=ceil(y);\n  end;\nend;\n\nfunction TPointFHelper.Truncate: TPoint;\nbegin\n  if isEmptyPointF(self) then\n    result := EmptyPoint\n  else\n  begin\n    result.x:=trunc(x);\n    result.y:=trunc(y);\n  end;\nend;\n\nfunction TPointFHelper.Floor: TPoint;\nbegin\n  if isEmptyPointF(self) then\n    result := EmptyPoint\n  else\n  begin\n    result.x:=Math.floor(x);\n    result.y:=Math.floor(y);\n  end;\nend;\n\nfunction TPointFHelper.Round: TPoint;\nbegin\n  if isEmptyPointF(self) then\n    result := EmptyPoint\n  else\n  begin\n    result.x:=System.round(x);\n    result.y:=System.round(y);\n  end;\nend;\n\nfunction TPointFHelper.Length: Single;\nbegin\n  result:= VectLen(self);\nend;\n\nfunction TPointFHelper.IsEmpty: boolean;\nbegin\n  result := isEmptyPointF(self);\nend;\n\nclass function TRectFHelper.Intersect(const R1: TRectF; const R2: TRectF): TRectF;\nbegin\n  result.left:=max(R1.left,R2.left);\n  result.top:=max(R1.top,R2.top);\n  result.right:=min(R1.right,R2.right);\n  result.bottom:=min(R1.bottom,R2.bottom);\n  if (result.left >= result.right) or (result.top >= result.bottom) then\n    result := EmptyRectF;\nend;\n\nclass function TRectFHelper.Union(const R1: TRectF; const R2: TRectF): TRectF;\nbegin\n  result.left:=min(R1.left,R2.left);\n  result.top:=min(R1.top,R2.top);\n  result.right:=max(R1.right,R2.right);\n  result.bottom:=max(R1.bottom,R2.bottom);\nend;\n\nclass function TRectFHelper.Union(const R1: TRectF; const R2: TRectF; ADiscardEmpty: boolean): TRectF;\nbegin\n  if ADiscardEmpty and IsEmptyRectF(R1) then result:= R2 else\n  if ADiscardEmpty and IsEmptyRectF(R2) then result:= R1 else\n    result := Union(R1,R2);\nend;\n\nfunction TRectFHelper.Union(const r: TRectF): TRectF;\nbegin\n  result := TRectF.Union(self, r);\nend;\n\nfunction TRectFHelper.Union(const r: TRectF; ADiscardEmpty: boolean): TRectF;\nbegin\n  result := TRectF.Union(self, r, ADiscardEmpty);\nend;\n\nprocedure TRectFHelper.Include(const APoint: TPointF);\nbegin\n  if APoint.x <> EmptySingle then\n  begin\n    if APoint.x < Left then Left := APoint.x else\n    if APoint.x > Right then Right := APoint.x;\n  end;\n  if APoint.y <> EmptySingle then\n  begin\n    if APoint.y < Top then Top := APoint.y else\n    if APoint.y > Bottom then Bottom := APoint.y;\n  end;\nend;\n\nfunction TRectFHelper.Contains(const APoint: TPointF;\n  AIncludeBottomRight: boolean): boolean;\nbegin\n  if isEmptyPointF(APoint) then result := false else\n  if (APoint.x < Left) or (APoint.y < Top) then result := false else\n  if AIncludeBottomRight and ((APoint.x > Right) or (APoint.y > Bottom)) then result := false else\n  if not AIncludeBottomRight and ((APoint.x >= Right) or (APoint.y >= Bottom)) then result := false\n  else result := true;\nend;\n\nfunction TRectFHelper.IntersectsWith(const r: TRectF): boolean;\nbegin\n  result:= not TRectF.Intersect(self, r).IsEmpty;\nend;\n\nfunction TRectFHelper.IsEmpty: boolean;\nbegin\n  result:= IsEmptyRectF(self);\nend;\n\n{ TAffineBox }\n\nfunction TAffineBox.GetAsPolygon: ArrayOfTPointF;\nbegin\n  result := PointsF([TopLeft,TopRight,BottomRight,BottomLeft]);\nend;\n\nfunction TAffineBox.GetBottomRight: TPointF;\nbegin\n  if IsEmpty then\n    result := EmptyPointF\n  else\n    result := TopRight + (BottomLeft-TopLeft);\nend;\n\nfunction TAffineBox.GetCenter: TPointF;\nbegin\n  result := (TopLeft + BottomRight)*0.5;\nend;\n\nfunction TAffineBox.GetHeight: single;\nbegin\n  if isEmptyPointF(TopLeft) or isEmptyPointF(BottomLeft) then\n    result := 0\n  else\n    result := VectLen(BottomLeft-TopLeft);\nend;\n\nfunction TAffineBox.GetIsEmpty: boolean;\nbegin\n  result := isEmptyPointF(TopRight) or isEmptyPointF(BottomLeft) or isEmptyPointF(TopLeft);\nend;\n\nfunction TAffineBox.GetRectBounds: TRect;\nbegin\n  with GetRectBoundsF do\n    result := Rect(floor(Left),floor(Top),ceil(Right),ceil(Bottom));\nend;\n\nfunction TAffineBox.GetRectBoundsF: TRectF;\nvar\n  x1,y1,x2,y2: single;\nbegin\n  x1 := TopLeft.x; x2 := x1;\n  y1 := TopLeft.y; y2 := y1;\n  if TopRight.x > x2 then x2 := TopRight.x;\n  if TopRight.x < x1 then x1 := TopRight.x;\n  if TopRight.y > y2 then y2 := TopRight.y;\n  if TopRight.y < y1 then y1 := TopRight.y;\n  if BottomLeft.x > x2 then x2 := BottomLeft.x;\n  if BottomLeft.x < x1 then x1 := BottomLeft.x;\n  if BottomLeft.y > y2 then y2 := BottomLeft.y;\n  if BottomLeft.y < y1 then y1 := BottomLeft.y;\n  if BottomRight.x > x2 then x2 := BottomRight.x;\n  if BottomRight.x < x1 then x1 := BottomRight.x;\n  if BottomRight.y > y2 then y2 := BottomRight.y;\n  if BottomRight.y < y1 then y1 := BottomRight.y;\n  result := RectF(x1,y1,x2,y2);\nend;\n\nfunction TAffineBox.GetSurface: single;\nvar\n  u, v: TPointF;\n  lenU, lenH: Single;\nbegin\n  u := TopRight-TopLeft;\n  lenU := VectLen(u);\n  if lenU = 0 then exit(0);\n  u.Scale(1/lenU);\n  v := BottomLeft-TopLeft;\n  lenH := PointF(-u.y,u.x)**v;\n  result := abs(lenU*lenH);\nend;\n\nfunction TAffineBox.GetWidth: single;\nbegin\n  if isEmptyPointF(TopLeft) or isEmptyPointF(TopRight) then\n    result := 0\n  else\n    result := VectLen(TopRight-TopLeft);\nend;\n\nclass function TAffineBox.EmptyBox: TAffineBox;\nbegin\n  result.TopLeft := EmptyPointF;\n  result.TopRight := EmptyPointF;\n  result.BottomLeft := EmptyPointF;\nend;\n\nclass function TAffineBox.AffineBox(ATopLeft, ATopRight, ABottomLeft: TPointF): TAffineBox;\nbegin\n  if isEmptyPointF(ATopLeft) or isEmptyPointF(ATopRight) or isEmptyPointF(ABottomLeft) then\n     raise exception.Create('Unexpected empty point');\n  result.TopLeft := ATopLeft;\n  result.TopRight := ATopRight;\n  result.BottomLeft := ABottomLeft;\nend;\n\nclass function TAffineBox.AffineBox(ARectF: TRectF): TAffineBox;\nbegin\n  if isEmptyPointF(ARectF.TopLeft) or isEmptyPointF(ARectF.BottomRight) then\n     raise exception.Create('Unexpected empty point');\n  result.TopLeft := ARectF.TopLeft;\n  result.TopRight := PointF(ARectF.Right, ARectF.Top);\n  result.BottomLeft := PointF(ARectF.Left, ARectF.Bottom);\nend;\n\nprocedure TAffineBox.Offset(AOfsX, AOfsY: single);\nbegin\n  TopLeft.Offset(AOfsX,AOfsY);\n  TopRight.Offset(AOfsX,AOfsY);\n  BottomLeft.Offset(AOfsX,AOfsY);\nend;\n\nprocedure TAffineBox.Offset(AOfs: TPointF);\nbegin\n  Offset(AOfs.X,AOfs.Y);\nend;\n\nprocedure TAffineBox.Inflate(AHoriz, AVert: single);\nvar\n  u, v, ofs_horiz, ofs_vert: TPointF;\n  lenU, lenV: Single;\nbegin\n  u := TopRight-TopLeft;\n  v := BottomLeft-TopLeft;\n  lenU := VectLen(u);\n  if lenU > 0 then u := u*(1/lenU);\n  lenV := VectLen(v);\n  if lenV > 0 then v := v*(1/lenV);\n  ofs_horiz := u*AHoriz;\n  ofs_vert := v*AVert;\n  TopLeft := TopLeft - ofs_horiz - ofs_vert;\n  TopRight := TopRight + ofs_horiz - ofs_vert;\n  BottomLeft := BottomLeft - ofs_horiz + ofs_vert;\nend;\n\nfunction TAffineBox.Contains(APoint: TPointF): boolean;\nvar\n  u,v,perpU,perpV: TPointF;\n  posV1, posV2, posU1, posU2: single;\nbegin\n  if IsEmpty then exit(false);\n\n  u := TopRight-TopLeft;\n  perpU := PointF(-u.y,u.x);\n  v := BottomLeft-TopLeft;\n  perpV := PointF(v.y,-v.x);\n\n  //reverse normal if not in the same direction as other side\n  if perpU**v < 0 then\n  begin\n    perpU := -perpU;\n    perpV := -perpV;\n  end;\n\n  //determine position along normals\n  posU1 := (APoint-TopLeft)**perpU;\n  posU2 := (APoint-BottomLeft)**perpU;\n  posV1 := (APoint-TopLeft)**perpV;\n  posV2 := (APoint-TopRight)**perpV;\n\n  result := (posU1 >= 0) and (posU2 < 0) and (posV1 >= 0) and (posV2 < 0);\nend;\n\nfunction StrToGradientType(str: string): TGradientType;\nvar gt: TGradientType;\nbegin\n  result := gtLinear;\n  str := LowerCase(str);\n  for gt := low(TGradientType) to high(TGradientType) do\n    if str = LowerCase(GradientTypeStr[gt]) then\n    begin\n      result := gt;\n      exit;\n    end;\nend;\n\n{ TBGRACustomGradient }\n\nfunction TBGRACustomGradient.GetExpandedColorAt(position: integer\n  ): TExpandedPixel;\nbegin\n  result := GammaExpansion(GetColorAt(position));\nend;\n\nfunction TBGRACustomGradient.GetColorAtF(position: single): TBGRAPixel;\nbegin\n  if position = EmptySingle then exit(BGRAPixelTransparent);\n  position := position * 65536;\n  if position < low(integer) then\n    result := GetColorAt(low(Integer))\n  else if position > high(integer) then\n    result := GetColorAt(high(Integer))\n  else\n    result := GetColorAt(round(position));\nend;\n\nfunction TBGRACustomGradient.GetExpandedColorAtF(position: single): TExpandedPixel;\nbegin\n  if position = EmptySingle then exit(BGRAPixelTransparent);\n  position := position * 65536;\n  if position < low(integer) then\n    result := GetExpandedColorAt(low(Integer))\n  else if position > high(integer) then\n    result := GetExpandedColorAt(high(Integer))\n  else\n    result := GetExpandedColorAt(round(position));\nend;\n\nfunction TBGRACustomGradient.GetAverageExpandedColor: TExpandedPixel;\nbegin\n  result := GammaExpansion(GetAverageColor);\nend;\n\n{ TIntersectionInfo }\n\nprocedure TIntersectionInfo.SetValues(AInterX: Single; AWinding,\n  ANumSegment: integer);\nbegin\n  interX := AInterX;\n  winding := AWinding;\n  numSegment := ANumSegment;\nend;\n\n{********************** TRect functions **************************}\n\nfunction PtInRect(const pt: TPoint; r: TRect): boolean;\nvar\n  temp: integer;\nbegin\n  if r.right < r.left then\n  begin\n    temp    := r.left;\n    r.left  := r.right;\n    r.Right := temp;\n  end;\n  if r.bottom < r.top then\n  begin\n    temp     := r.top;\n    r.top    := r.bottom;\n    r.bottom := temp;\n  end;\n  Result := (pt.X >= r.left) and (pt.Y >= r.top) and (pt.X < r.right) and\n    (pt.y < r.bottom);\nend;\n\nfunction RectWithSize(left, top, width, height: integer): TRect;\nbegin\n  result.left := left;\n  result.top := top;\n  result.right := left+width;\n  result.bottom := top+height;\nend;\n\n{********************** Size functions **************************}\n\nfunction ImageResolutionInfo(AResolutionUnit: TResolutionUnit; AResolutionX,\n  AResolutionY: Single): TImageResolutionInfo;\nbegin\n  result.ResolutionUnit:= AResolutionUnit;\n  result.ResolutionX:= AResolutionX;\n  result.ResolutionY:= AResolutionY;\nend;\n\nfunction ConvertResolution(AResolution: Single; ASourceUnit, ATargetUnit: TResolutionUnit): Single;\nbegin\n  if ASourceUnit = ATargetUnit then exit(AResolution);\n  if (ASourceUnit = ruNone) then raise EInvalidOpException.Create('Source resolution unit must be defined');\n  case ATargetUnit of\n    ruPixelsPerInch: result := AResolution*2.54;\n    ruPixelsPerCentimeter: result := AResolution/2.54;\n  else {ruNone}\n    raise EInvalidOpException.Create('Target resolution unit must be defined');\n  end;\nend;\n\nfunction FixImageResolutionInfo(const AResolution: TImageResolutionInfo): TImageResolutionInfo;\nvar\n  ratio: Single;\nbegin\n  if AResolution.ResolutionUnit = ruNone then\n  begin\n    result.ResolutionUnit := ruPixelsPerInch;\n    // if a ratio is specified\n    if (AResolution.ResolutionX <> 0) and (AResolution.ResolutionY <> 0) then\n    begin\n      // assume small resolution is legacy 96 DPI\n      ratio := 96 / min(AResolution.ResolutionX, AResolution.ResolutionY);\n      result.ResolutionX := AResolution.ResolutionX * ratio;\n      result.ResolutionY := AResolution.ResolutionY * ratio;\n    end else\n    begin\n      // assume legacy 96 DPI\n      result.ResolutionX := 96;\n      result.ResolutionY := 96;\n    end;\n  end else\n  begin\n    // keep specified resolution\n    result.ResolutionUnit := AResolution.ResolutionUnit;\n    // if no value is given for resolution\n    if (AResolution.ResolutionX = 0) and (AResolution.ResolutionY = 0) then\n    begin\n      // assume legacy 96 DPI\n      result.ResolutionX := ConvertResolution(96, ruPixelsPerInch, Result.ResolutionUnit);\n      result.ResolutionY := result.ResolutionX;\n    end else\n    begin\n      // if one resolution is missing, assume it is the same as the other one\n      if AResolution.ResolutionX = 0 then\n        result.ResolutionX := AResolution.ResolutionY\n      else\n        result.ResolutionX := AResolution.ResolutionX;\n      if AResolution.ResolutionY = 0 then\n        result.ResolutionY := AResolution.ResolutionX\n      else\n        result.ResolutionY := AResolution.ResolutionY;\n    end;\n  end;\nend;\n\n{ Make a pen style. Need an even number of values. See TBGRAPenStyle }\nfunction BGRAPenStyle(dash1, space1: single; dash2: single; space2: single;\n  dash3: single; space3: single; dash4: single; space4: single): TBGRAPenStyle;\nvar\n  i: Integer;\nbegin\n  if dash4 <> 0 then\n  begin\n    setlength(result,8);\n    result[6] := dash4;\n    result[7] := space4;\n    result[4] := dash3;\n    result[5] := space3;\n    result[2] := dash2;\n    result[3] := space2;\n  end else\n  if dash3 <> 0 then\n  begin\n    setlength(result,6);\n    result[4] := dash3;\n    result[5] := space3;\n    result[2] := dash2;\n    result[3] := space2;\n  end else\n  if dash2 <> 0 then\n  begin\n    setlength(result,4);\n    result[2] := dash2;\n    result[3] := space2;\n  end else\n  begin\n    setlength(result,2);\n  end;\n  result[0] := dash1;\n  result[1] := space1;\n  for i := 0 to high(result) do\n    if result[i]=0 then\n      raise exception.Create('Zero is not a valid value');\nend;\n\n{ TBGRACustomPath }\n\nfunction TBGRACustomPath.QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  if GetInterface(iid, obj) then\n    Result := S_OK\n  else\n    Result := longint(E_NOINTERFACE);\nend;\n\n{ There is no automatic reference counting, but it is compulsory to define these functions }\nfunction TBGRACustomPath._AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nfunction TBGRACustomPath._Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nfunction ArcDef(cx, cy, rx, ry, xAngleRadCW, startAngleRadCW, endAngleRadCW: single;\n  anticlockwise: boolean): TArcDef;\nbegin\n  result.center := PointF(cx,cy);\n  result.radius := PointF(rx,ry);\n  result.xAngleRadCW:= xAngleRadCW;\n  result.startAngleRadCW := startAngleRadCW;\n  result.endAngleRadCW:= endAngleRadCW;\n  result.anticlockwise:= anticlockwise;\nend;\n\n{----------------- Operators for TPoint3D ---------------}\noperator = (const v1, v2: TPoint3D): boolean; inline;\nbegin\n  result := (v1.x=v2.x) and (v1.y=v2.y) and (v1.z=v2.z);\nend;\n\noperator * (const v1,v2: TPoint3D): single; inline;\nbegin\n  result := v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;\nend;\n\noperator * (const v1: TPoint3D; const factor: single): TPoint3D; inline;\nbegin\n  result.x := v1.x*factor;\n  result.y := v1.y*factor;\n  result.z := v1.z*factor;\nend;\n\noperator - (const v1,v2: TPoint3D): TPoint3D; inline;\nbegin\n  result.x := v1.x-v2.x;\n  result.y := v1.y-v2.y;\n  result.z := v1.z-v2.z;\nend;\n\noperator -(const v: TPoint3D): TPoint3D; inline;\nbegin\n  result.x := -v.x;\n  result.y := -v.y;\n  result.z := -v.z;\nend;\n\noperator + (const v1,v2: TPoint3D): TPoint3D; inline;\nbegin\n  result.x := v1.x+v2.x;\n  result.y := v1.y+v2.y;\n  result.z := v1.z+v2.z;\nend;\n\noperator*(const factor: single; const v1: TPoint3D): TPoint3D;\nbegin\n  result.x := v1.x*factor;\n  result.y := v1.y*factor;\n  result.z := v1.z*factor;\nend;\n\n{ TPoint3D }\n\nprocedure TPoint3D.Offset(const point3D: TPoint3D);\nbegin\n  IncF(self.x, point3d.x);\n  IncF(self.y, point3d.y);\n  IncF(self.z, point3d.z);\nend;\n\nprocedure TPoint3D.Scale(AScale: single);\nbegin\n  self.x := self.x * AScale;\n  self.y := self.y * AScale;\n  self.z := self.z * AScale;\nend;\n\nfunction Point3D(x, y, z: single): TPoint3D;\nbegin\n  result.x := x;\n  result.y := y;\n  result.z := z;\nend;\n\nprocedure Normalize3D(var v: TPoint3D); inline;\nvar len: double;\nbegin\n  len := v*v;\n  if len = 0 then exit;\n  len := sqrt(len);\n  v.x := v.x / len;\n  v.y := v.y / len;\n  v.z := v.z / len;\nend;\n\nfunction VectLen3D(const v: TPoint3D): single;\nbegin\n  result := sqrt(v.x*v.x + v.y*v.y + v.z*v.z);\nend;\n\nprocedure VectProduct3D(u,v: TPoint3D; out w: TPoint3D);\nbegin\n  w.x := u.y*v.z-u.z*v.y;\n  w.y := u.z*v.x-u.x*v.z;\n  w.z := u.x*v.Y-u.y*v.x;\nend;\n\n{----------------- Operators for TPointF --------------------}\noperator =(const pt1, pt2: TPointF): boolean;\nbegin\n  result := (pt1.x = pt2.x) and (pt1.y = pt2.y);\nend;\n\noperator -(const pt1, pt2: TPointF): TPointF;\nbegin\n  result.x := pt1.x-pt2.x;\n  result.y := pt1.y-pt2.y;\nend;\n\noperator -(const pt2: TPointF): TPointF;\nbegin\n  result.x := -pt2.x;\n  result.y := -pt2.y;\nend;\n\noperator +(const pt1, pt2: TPointF): TPointF;\nbegin\n  result.x := pt1.x+pt2.x;\n  result.y := pt1.y+pt2.y;\nend;\n\n{$if FPC_FULLVERSION < 30203}\n// keep alias for backward compatibility\noperator *(const pt1, pt2: TPointF): single;\nbegin\n  result := pt1.x*pt2.x + pt1.y*pt2.y;\nend;\n\n// new operator for scalar product\noperator **(const pt1, pt2: TPointF): single;\nbegin\n  result := pt1.x*pt2.x + pt1.y*pt2.y;\nend;\n{$endif}\n\noperator *(const pt1: TPointF; factor: single): TPointF;\nbegin\n  result.x := pt1.x*factor;\n  result.y := pt1.y*factor;\nend;\n\noperator *(factor: single; const pt1: TPointF): TPointF;\nbegin\n  result.x := pt1.x*factor;\n  result.y := pt1.y*factor;\nend;\n\nfunction RectF(Left, Top, Right, Bottom: Single): TRectF;\nbegin\n  result.Left:= Left;\n  result.Top:= Top;\n  result.Right:= Right;\n  result.Bottom:= Bottom;\nend;\n\nfunction RectF(const ATopLeft, ABottomRight: TPointF): TRectF;\nbegin\n  result.TopLeft:= ATopLeft;\n  result.BottomRight:= ABottomRight;\nend;\n\nfunction RectF(const ARect: TRect): TRectF;\nbegin\n  result.Left := ARect.Left;\n  result.Top := ARect.Top;\n  result.Right := ARect.Right;\n  result.Bottom := ARect.Bottom;\nend;\n\nfunction RectWithSizeF(left, top, width, height: Single): TRectF;\nbegin\n  result.Left:= Left;\n  result.Top:= Top;\n  result.Right:= left+width;\n  result.Bottom:= top+height;\nend;\n\nfunction IsEmptyRectF(const ARect: TRectF): boolean;\nbegin\n  result:= (ARect.Width = 0) and (ARect.Height = 0);\nend;\n\nfunction PointF(x, y: single): TPointF;\nbegin\n  Result.x := x;\n  Result.y := y;\nend;\n\nfunction PointF(pt: TPoint): TPointF;\nbegin\n  if IsEmptyPoint(pt) then\n    result:= EmptyPointF\n  else\n  begin\n    Result.x := pt.x;\n    Result.y := pt.y;\n  end;\nend;\n\nfunction PointsF(const pts: array of TPointF): ArrayOfTPointF;\nvar\n  i: Integer;\nbegin\n  setlength(result, length(pts));\n  for i := 0 to high(pts) do result[i] := pts[i];\nend;\n\nfunction ConcatPointsF(const APolylines: array of ArrayOfTPointF;\n  AInsertEmptyPointInBetween: boolean): ArrayOfTPointF;\nvar\n  i,pos,count:integer;\n  j: Integer;\nbegin\n  count := 0;\n  for i := 0 to high(APolylines) do\n    inc(count,length(APolylines[i]));\n  if AInsertEmptyPointInBetween then inc(count, length(APolylines)-1);\n  setlength(result,count);\n  pos := 0;\n  for i := 0 to high(APolylines) do\n  begin\n    if AInsertEmptyPointInBetween and (i > 0) then\n    begin\n      result[pos] := EmptyPointF;\n      inc(pos);\n    end;\n    for j := 0 to high(APolylines[i]) do\n    begin\n      result[pos] := APolylines[i][j];\n      inc(pos);\n    end;\n  end;\nend;\n\nfunction VectLen(const v: TPointF): single;\nbegin\n  if isEmptyPointF(v) then\n    result := EmptySingle\n  else\n    result := sqrt(sqr(v.x) + sqr(v.y));\nend;\n\nfunction VectDet(const v1, v2: TPointF): double;\nbegin\n  result := v1.x*v2.y - v1.y*v2.x;\nend;\n\nfunction VectLen(const dx, dy: single): single;\nbegin\n  result := sqrt(dx*dx+dy*dy);\nend;\n\nfunction PolylineLen(const pts: array of TPointF; AClosed: boolean): single;\nvar\n  i: Int32or64;\nbegin\n  result := 0;\n  for i := 0 to high(pts)-1 do\n    IncF(result, VectLen(pts[i+1] - pts[i]) );\n  if AClosed then\n    incF(result, VectLen(pts[0] - pts[high(pts)]) );\nend;\n\n{ Check if a PointF structure is empty or should be treated as a list separator }\nfunction isEmptyPointF(const pt: TPointF): boolean;\nbegin\n  Result := (pt.x = EmptySingle) and (pt.y = EmptySingle);\nend;\n\n{----------- Line and polygon functions -----------}\n{$PUSH}{$OPTIMIZATION OFF}\nfunction IntersectLine(line1, line2: TLineDef): TPointF;\nvar parallel: boolean;\nbegin\n  result := IntersectLine(line1,line2,parallel);\nend;\n{$POP}\n\nfunction IntersectLine(line1, line2: TLineDef; out parallel: boolean): TPointF;\n  procedure SetParallel;\n  begin\n    parallel := true;\n    //return the center of the segment between line origins\n    result.x := (line1.origin.x+line2.origin.x)/2;\n    result.y := (line1.origin.y+line2.origin.y)/2;\n  end;\nvar pos, step: single;\n  n: TPointF;\nbegin\n  parallel := false;\n  n := PointF(-line2.dir.y, line2.dir.x);\n  step := line1.dir**n;\n  if step = 0 then begin SetParallel; exit; end;\n  pos := (line2.origin - line1.origin)**n;\n  result := line1.origin + line1.dir * (pos/step);\nend;\n\n{ Check if a polygon is convex, i.e. it always turns in the same direction }\nfunction IsConvex(const pts: array of TPointF; IgnoreAlign: boolean = true): boolean;\nvar\n  positive,negative,zero: boolean;\n  product: single;\n  i: Integer;\nbegin\n  positive := false;\n  negative := false;\n  zero := false;\n  for i := 0 to high(pts) do\n  begin\n    product := (pts[(i+1) mod length(pts)].x-pts[i].x)*(pts[(i+2) mod length(pts)].y-pts[i].y) -\n               (pts[(i+1) mod length(pts)].y-pts[i].y)*(pts[(i+2) mod length(pts)].x-pts[i].x);\n    if product > 0 then\n    begin\n      if negative then\n      begin\n        result := false;\n        exit;\n      end;\n      positive := true;\n    end else\n    if product < 0 then\n    begin\n      if positive then\n      begin\n        result := false;\n        exit;\n      end;\n      negative := true;\n    end else\n      zero := true;\n  end;\n  if not IgnoreAlign and zero then\n    result := false\n  else\n    result := true;\nend;\n\n{ Check if two segments intersect }\nfunction DoesSegmentIntersect(pt1,pt2,pt3,pt4: TPointF): boolean;\nvar\n  seg1: TLineDef;\n  seg1len: single;\n  seg2: TLineDef;\n  seg2len: single;\n  inter: TPointF;\n  pos1,pos2: single;\n  para: boolean;\n\nbegin\n  { Determine line definitions }\n  seg1.origin := pt1;\n  seg1.dir := pt2-pt1;\n  seg1len := VectLen(seg1.dir);\n  if seg1len = 0 then\n  begin\n    result := false;\n    exit;\n  end;\n  seg1.dir.Scale(1/seg1len);\n\n  seg2.origin := pt3;\n  seg2.dir := pt4-pt3;\n  seg2len := VectLen(seg2.dir);\n  if seg2len = 0 then\n  begin\n    result := false;\n    exit;\n  end;\n  seg2.dir.Scale(1/seg2len);\n\n  //obviously parallel\n  if seg1.dir = seg2.dir then\n    result := false\n  else\n  begin\n    //try to compute intersection\n    inter := IntersectLine(seg1,seg2,para);\n    if para then\n      result := false\n    else\n    begin\n      //check if intersections are inside the segments\n      pos1 := (inter-seg1.origin)**seg1.dir;\n      pos2 := (inter-seg2.origin)**seg2.dir;\n      if (pos1 >= 0) and (pos1 <= seg1len) and\n         (pos2 >= 0) and (pos2 <= seg2len) then\n        result := true\n      else\n        result := false;\n    end;\n  end;\nend;\n\nfunction IsClockwise(const pts: array of TPointF): boolean;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(pts) do\n  begin\n    if (pts[(i+1) mod length(pts)].x-pts[i].x)*(pts[(i+2) mod length(pts)].y-pts[i].y) -\n       (pts[(i+1) mod length(pts)].y-pts[i].y)*(pts[(i+2) mod length(pts)].x-pts[i].x) < 0 then\n    begin\n       result := false;\n       exit;\n    end;\n  end;\n  result := true;\nend;\n\nfunction IsMostlyClockwise(const pts: array of TPointF): boolean;\nvar\n  i: Integer;\n  sum: double;\nbegin\n  sum := 0;\n  for i := 0 to high(pts) do\n    IncF(sum, (pts[(i+1) mod length(pts)].x-pts[i].x)*(pts[(i+1) mod length(pts)].y+pts[i].y));\n  result := sum <= 0;\nend;\n\n{ Check if a quaduadrilateral intersects itself }\nfunction DoesQuadIntersect(pt1,pt2,pt3,pt4: TPointF): boolean;\nbegin\n  result := DoesSegmentIntersect(pt1,pt2,pt3,pt4) or DoesSegmentIntersect(pt2,pt3,pt4,pt1);\nend;\n\n{$DEFINE INCLUDE_IMPLEMENTATION}\n{$I bezier.inc}\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/libavif.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\r\n// Copyright 2019 Joe Drago. All rights reserved (originally as BSD-2-Clause)\r\n\r\n{ For the latest libavif visit https://github.com/AOMediaCodec/libavif  }\r\n{ Author: Domingo Galmes <dgalmesp at gmail.com>  01-11-2021            }\r\n\r\n{ FreePascal wrappper for libavif dynamic library                       }\r\nunit libavif;\r\n\r\n{$mode objfpc}\r\n\r\ninterface\r\n\r\nvar\r\n AVIF_VERSION, AVIF_VERSION_MAJOR, AVIF_VERSION_MINOR, AVIF_VERSION_PATCH : integer;\r\n\r\nconst\r\n  AVIF_VERSION_0_8_4 = 00080400;\r\n  AVIF_VERSION_0_9_2 = 00090200;\r\n  AVIF_VERSION_0_9_3 = 00090300;\r\n  AVIF_VERSION_0_10_0 = 00100000;\r\n  AVIF_VERSION_0_10_1 = 00100100;\r\n  AVIF_VERSION_0_11_0 = 00110000;\r\n  AVIF_VERSION_1_0_0 =  01000000;\r\n\r\n  // include functions not supported in prior versions.\r\n  {.$define ONLY_USE_VERSION_EQUAL_OR_GREATHER_THAN_1}\r\n\r\n{\r\n  For windows there are prebuild dlls in\r\n  https://packages.msys2.org/queue\r\n\r\n  Install gcc/msys2 from\r\n  https://www.msys2.org/\r\n  and install\r\n\r\n  // 32 BITS\r\n  pacman -S --needed base-devel mingw-w64-i686-toolchain\r\n  pacman -S --needed mingw-w64-i686-libavif\r\n  (note that has many dependencies).\r\n\r\n  // 64 BITS\r\n  pacman -S --needed base-devel mingw-w64-x86_64-toolchain\r\n  pacman -S --needed mingw-w64-x86_64-libavif\r\n\r\n  THE dlls are in the bin folder.\r\n  C:\\mingw64_32msys2\\mingw64\\bin\r\n\r\n}\r\n\r\n{$define LOAD_DYNAMICALLY}\r\n\r\n// if load_dynamically use () to call functions or procedures without parameters\r\n// wS:=avifVersion();  //ok  wS:=aviVersion;  //error.\r\n\r\n{$IFDEF LOAD_DYNAMICALLY}\r\n  {$DEFINE LD}\r\n{$ENDIF}\r\n\r\n//const APICALLTYPE=cdecl;    cdecl\r\n\r\n{\r\n  Partially converted by H2Pas 1.0.0 from avif.h\r\n  The following command line parameters were used:\r\n    -p\r\n    -D\r\n    -l\r\n    LIBAFIV\r\n    avif.h\r\n}\r\n\r\n    const\r\n      LibAvifFilename =\r\n      {$if defined(Win32)}\r\n        'libavif.dll'\r\n      {$elseif defined(Win64)}\r\n        'libavif.dll'\r\n      {$elseif defined(Darwin)}\r\n        'libavif.9.dylib'\r\n      {$elseif defined(Unix)}\r\n        'libavif.so.9'      // version 0.8.4 in Debian bullseye\r\n      {$else}\r\n        ''\r\n      {$endif};\r\n\r\n    type\r\n      size_type = NativeUInt;\r\n      PSize_type = ^size_type;\r\n      float = single;\r\n\r\n{$IFDEF FPC}\r\n{$PACKRECORDS C}\r\n//{$PACKENUM 4}\r\n\r\n{$ENDIF}\r\n\r\n\r\n{ C++ extern C conditionnal removed }\r\n  { --------------------------------------------------------------------------- }\r\n  { Export macros }\r\n  { AVIF_BUILDING_SHARED_LIBS should only be defined when libavif is being built }\r\n  { as a shared library. }\r\n  { AVIF_DLL should be defined if libavif is a shared library. If you are using }\r\n  { libavif as CMake dependency, through CMake package config file or through }\r\n  { pkg-config, this is defined automatically. }\r\n  { }\r\n  { Here's what AVIF_API will be defined as in shared build: }\r\n  { |       |        Windows        |                  Unix                  | }\r\n  { | Build | __declspec(dllexport) | __attribute__((visibility(\"default\"))) | }\r\n  { |  Use  | __declspec(dllimport) |                                        | }\r\n  { }\r\n  { For static build, AVIF_API is always defined as nothing. }\r\n\r\n  { --------------------------------------------------------------------------- }\r\n\r\n    type\r\n      PavifBool = ^avifBool;\r\n      avifBool = longint;\r\n\r\n    const\r\n      AVIF_TRUE = 1;      \r\n      AVIF_FALSE = 0;      \r\n      AVIF_DIAGNOSTICS_ERROR_BUFFER_SIZE = 256;      \r\n    { A reasonable default for maximum image size to avoid out-of-memory errors or integer overflow in }\r\n    { (32-bit) int or unsigned int arithmetic operations. }\r\n      AVIF_DEFAULT_IMAGE_SIZE_LIMIT = 16384*16384;\r\n    { A reasonable default for maximum image dimension (width or height). }\r\n      AVIF_DEFAULT_IMAGE_DIMENSION_LIMIT = 32768;\r\n    { a 12 hour AVIF image sequence, running at 60 fps (a basic sanity check as this is quite ridiculous) }\r\n      AVIF_DEFAULT_IMAGE_COUNT_LIMIT = (12*3600)*60;\r\n      AVIF_QUALITY_DEFAULT = -1;\r\n      AVIF_QUALITY_LOSSLESS = 100;\r\n      AVIF_QUALITY_WORST = 0;\r\n      AVIF_QUALITY_BEST = 100;\r\n\r\n      AVIF_QUANTIZER_LOSSLESS = 0;      \r\n      AVIF_QUANTIZER_BEST_QUALITY = 0;      \r\n      AVIF_QUANTIZER_WORST_QUALITY = 63;      \r\n      AVIF_PLANE_COUNT_YUV = 3;      \r\n      AVIF_SPEED_DEFAULT = -(1);      \r\n      AVIF_SPEED_SLOWEST = 0;      \r\n      AVIF_SPEED_FASTEST = 10;      \r\n\r\n    type\r\n      TAvifArrayOf256AnsiChar = array[0..255] of AnsiChar;\r\n      TAvifArrayOf8Float= array[0..7] of float;\r\n    const\r\n      // This value is used to indicate that an animated AVIF file has to be repeated infinitely.\r\n      AVIF_REPETITION_COUNT_INFINITE = -1;\r\n      // This value is used if an animated AVIF file does not have repetitions specified using an EditList box. Applications can choose\r\n      // to handle this case however they want.\r\n      AVIF_REPETITION_COUNT_UNKNOWN= -2;\r\n\r\n      // The number of spatial layers in AV1, with spatial_id = 0..3.\r\n      AVIF_MAX_AV1_LAYER_COUNT= 4;\r\n    type\r\n\r\n      PavifPlanesFlag = ^avifPlanesFlag;\r\n      avifPlanesFlag = (AVIF_PLANES_YUV := 1 shl 0,AVIF_PLANES_A := 1 shl 1,\r\n        AVIF_PLANES_ALL := $ff);\r\n\r\n      PavifPlanesFlags = ^avifPlanesFlags;\r\n      avifPlanesFlags = UInt32;\r\n    { rgbPlanes }\r\n    { yuvPlanes }\r\n    { These can be used as the index for the yuvPlanes and yuvRowBytes arrays in avifImage.}\r\n      avifChannelIndex = (AVIF_CHAN_Y := 0,\r\n        AVIF_CHAN_U := 1,AVIF_CHAN_V := 2,\r\n        // This may not be used in yuvPlanes and yuvRowBytes, but is available for use with avifImagePlane().\r\n        AVIF_CHAN_A = 3\r\n        );\r\n    { --------------------------------------------------------------------------- }\r\n    { Version }\r\n    {$IFDEF LD}var{$ELSE}function{$ENDIF} avifVersion{$IFDEF LD}: function{$ENDIF}:PAnsiChar;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    {$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifCodecVersions{$IFDEF LD}: procedure{$ENDIF}(var outBuffer:TAvifArrayOf256AnsiChar);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    {$IFDEF LD}var{$ELSE}function{$ENDIF} avifLibYUVVersion{$IFDEF LD}: function{$ENDIF}:cardinal;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF} // returns 0 if libavif wasn't compiled with libyuv support\r\n    { Memory management }\r\n    // NOTE: On memory allocation failure, the current implementation of avifAlloc() calls abort(),\r\n    // but in a future release it may return NULL. To be future-proof, callers should check for a NULL\r\n    // return value.\r\n    {$IFDEF LD}var{$ELSE}function{$ENDIF} avifAlloc{$IFDEF LD}: function{$ENDIF}(size:size_type):pointer;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    {$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifFree{$IFDEF LD}: procedure{$ENDIF}(p:Pointer);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    { --------------------------------------------------------------------------- }\r\n    { avifResult }\r\n    { the avifIO field of avifDecoder is not set }\r\n    { similar to EAGAIN/EWOULDBLOCK, this means the avifIO doesn't have necessary data available yet }\r\n    { an argument passed into this function is invalid }\r\n    { a requested code path is not (yet) implemented }\r\ntype\r\n      PavifResult = ^avifResult;\r\n      avifResult = (AVIF_RESULT_OK := 0,AVIF_RESULT_UNKNOWN_ERROR,\r\n        AVIF_RESULT_INVALID_FTYP,AVIF_RESULT_NO_CONTENT,\r\n        AVIF_RESULT_NO_YUV_FORMAT_SELECTED,\r\n        AVIF_RESULT_REFORMAT_FAILED,AVIF_RESULT_UNSUPPORTED_DEPTH,\r\n        AVIF_RESULT_ENCODE_COLOR_FAILED,AVIF_RESULT_ENCODE_ALPHA_FAILED,\r\n        AVIF_RESULT_BMFF_PARSE_FAILED,AVIF_RESULT_NO_AV1_ITEMS_FOUND,\r\n        AVIF_RESULT_DECODE_COLOR_FAILED,AVIF_RESULT_DECODE_ALPHA_FAILED,\r\n        AVIF_RESULT_COLOR_ALPHA_SIZE_MISMATCH,\r\n        AVIF_RESULT_ISPE_SIZE_MISMATCH,AVIF_RESULT_NO_CODEC_AVAILABLE,\r\n        AVIF_RESULT_NO_IMAGES_REMAINING,AVIF_RESULT_INVALID_EXIF_PAYLOAD,\r\n        AVIF_RESULT_INVALID_IMAGE_GRID,AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION,\r\n        AVIF_RESULT_TRUNCATED_DATA,AVIF_RESULT_IO_NOT_SET,\r\n        AVIF_RESULT_IO_ERROR,AVIF_RESULT_WAITING_ON_IO,\r\n        AVIF_RESULT_INVALID_ARGUMENT,AVIF_RESULT_NOT_IMPLEMENTED,\r\n        AVIF_RESULT_OUT_OF_MEMORY,\r\n        AVIF_RESULT_CANNOT_CHANGE_SETTING, // a setting that can't change is changed during encoding\r\n        AVIF_RESULT_INCOMPATIBLE_IMAGE     // the image is incompatible with already encoded images\r\n        // Kept for backward compatibility; please use the symbols above instead.\r\n        //AVIF_RESULT_NO_AV1_ITEMS_FOUND = AVIF_RESULT_MISSING_IMAGE_ITEM\r\n        );\r\n\r\n    {$IFDEF LD}var{$ELSE}function{$ENDIF} avifResultToString{$IFDEF LD}: function{$ENDIF}(AResult:avifResult):PAnsiChar;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    { --------------------------------------------------------------------------- }\r\n    { avifROData/avifRWData: Generic raw memory storage }\r\ntype\r\n      PavifROData = ^avifROData;\r\n      avifROData = record\r\n          data : PUInt8;\r\n          size : size_type;\r\n        end;\r\n    { Note: Use avifRWDataFree() if any avif*() function populates one of these. }\r\n\r\n      PavifRWData = ^avifRWData;\r\n      avifRWData = record\r\n          data : PUInt8;\r\n          size : size_type;\r\n        end;\r\n    { Initialize avifROData/avifRWData on the stack with this }\r\n\r\n//#define AVIF_DATA_EMPTY { NULL, 0 }\r\nconst AVIF_DATA_EMPTY:avifRWData=(data:nil;size:0);\r\n\r\n  { The avifRWData input must be zero-initialized before being manipulated with these functions. }\r\n  // If AVIF_RESULT_OUT_OF_MEMORY is returned, raw is left unchanged.\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifRWDataRealloc{$IFDEF LD}: function{$ENDIF}(raw:PavifRWData;newSize:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifRWDataSet{$IFDEF LD}: function{$ENDIF}(raw:PavifRWData; const data:PByte;len:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n  {$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifRWDataFree{$IFDEF LD}: procedure{$ENDIF}(raw:PavifRWData);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n  // Metadata\r\n\r\n{$ifdef ONLY_USE_VERSION_EQUAL_OR_GREATHER_THAN_1}\r\n  // Validates the first bytes of the Exif payload and finds the TIFF header offset (up to UINT32_MAX).\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifGetExifTiffHeaderOffset{$IFDEF LD}: function{$ENDIF}(exif:PUint8;exifSize:size_type;offset:PSize_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n  // Returns the offset to the Exif 8-bit orientation value and AVIF_RESULT_OK, or an error.\r\n  // If the offset is set to exifSize, there was no parsing error but no orientation tag was found.\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifGetExifOrientationOffset{$IFDEF LD}: function{$ENDIF}(exif:PUint8;exifSize:size_type;offset:PSize_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$endif}\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { avifPixelFormat }\r\n    //\r\n    // Note to libavif maintainers: The lookup tables in avifImageYUVToRGBLibYUV\r\n    // rely on the ordering of this enum values for their correctness. So changing\r\n    // the values in this enum will require auditing avifImageYUVToRGBLibYUV for\r\n    // correctness.\r\n    { No pixels are present }\r\ntype\r\n      PavifPixelFormat = ^avifPixelFormat;\r\n      avifPixelFormat = (AVIF_PIXEL_FORMAT_NONE := 0,AVIF_PIXEL_FORMAT_YUV444,\r\n        AVIF_PIXEL_FORMAT_YUV422,AVIF_PIXEL_FORMAT_YUV420,\r\n        AVIF_PIXEL_FORMAT_YUV400,AVIF_PIXEL_FORMAT_COUNT);\r\n\r\n    {$IFDEF LD}var{$ELSE}function{$ENDIF} avifPixelFormatToString{$IFDEF LD}: function{$ENDIF}(format:avifPixelFormat):PAnsiChar;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\ntype\r\n      PavifPixelFormatInfo = ^avifPixelFormatInfo;\r\n      avifPixelFormatInfo = record\r\n          monochrome : avifBool;\r\n          chromaShiftX : longint;\r\n          chromaShiftY : longint;\r\n        end;\r\n\r\n      // Returns the avifPixelFormatInfo depending on the avifPixelFormat.\r\n      // When monochrome is AVIF_TRUE, chromaShiftX and chromaShiftY are set to 1 according to the AV1 specification but they should be ignored.\r\n      //\r\n      // Note: This function implements the second table on page 119 of the AV1 specification version 1.0.0 with Errata 1.\r\n      // For monochrome 4:0:0, subsampling_x and subsampling are specified as 1 to allow\r\n      // an AV1 implementation that only supports profile 0 to hardcode subsampling_x and subsampling_y to 1.\r\n  {$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifGetPixelFormatInfo{$IFDEF LD}: procedure{$ENDIF}(format: avifPixelFormat;info:PavifPixelFormatInfo);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    { --------------------------------------------------------------------------- }\r\n    { avifChromaSamplePosition }\r\ntype\r\n      PavifChromaSamplePosition = ^avifChromaSamplePosition;\r\n      avifChromaSamplePosition = (AVIF_CHROMA_SAMPLE_POSITION_UNKNOWN := 0,\r\n        AVIF_CHROMA_SAMPLE_POSITION_VERTICAL := 1,\r\n        AVIF_CHROMA_SAMPLE_POSITION_COLOCATED := 2\r\n        );\r\n    { --------------------------------------------------------------------------- }\r\n    { avifRange }\r\n\r\n      PavifRange = ^avifRange;\r\n      avifRange = (AVIF_RANGE_LIMITED := 0,AVIF_RANGE_FULL := 1\r\n        );\r\n    { --------------------------------------------------------------------------- }\r\n    { // CICP enums - https://www.itu.int/rec/T-REC-H.273-201612-S/en }\r\n\r\n\r\n    { This is actually reserved, but libavif uses it as a sentinel value. }\r\nconst\r\n    AVIF_COLOR_PRIMARIES_UNKNOWN = 0;\r\n\r\n    AVIF_COLOR_PRIMARIES_BT709 = 1;\r\n    AVIF_COLOR_PRIMARIES_IEC61966_2_4 = 1;\r\n    AVIF_COLOR_PRIMARIES_UNSPECIFIED = 2;\r\n    AVIF_COLOR_PRIMARIES_BT470M = 4;\r\n    AVIF_COLOR_PRIMARIES_BT470BG = 5;\r\n    AVIF_COLOR_PRIMARIES_BT601 = 6;\r\n    AVIF_COLOR_PRIMARIES_SMPTE240 = 7;\r\n    AVIF_COLOR_PRIMARIES_GENERIC_FILM = 8;\r\n    AVIF_COLOR_PRIMARIES_BT2020 = 9;\r\n    AVIF_COLOR_PRIMARIES_XYZ = 10;\r\n    AVIF_COLOR_PRIMARIES_SMPTE431 = 11;\r\n    AVIF_COLOR_PRIMARIES_SMPTE432 = 12; // DCI P3\r\n    AVIF_COLOR_PRIMARIES_EBU3213 = 22;\r\ntype\r\n\r\n      PavifColorPrimaries = ^avifColorPrimaries;\r\n      avifColorPrimaries = UInt16;\r\n    { AVIF_COLOR_PRIMARIES_* }\r\n    { outPrimaries: rX, rY, gX, gY, bX, bY, wX, wY }\r\n\r\n  {$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifColorPrimariesGetValues{$IFDEF LD}: procedure{$ENDIF}(acp:avifColorPrimaries;var outPrimaries:TAvifArrayOf8Float);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifColorPrimariesFind{$IFDEF LD}: function{$ENDIF}(var inPrimaries:TAvifArrayOf8Float;outName:PPAnsiChar):avifColorPrimaries;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\nconst\r\n    // This is actually reserved, but libavif uses it as a sentinel value.\r\n    AVIF_TRANSFER_CHARACTERISTICS_UNKNOWN = 0;\r\n\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT709 = 1;\r\n    AVIF_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2;\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT470M = 4;  // 2.2 gamma\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT470BG = 5; // 2.8 gamma\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT601 = 6;\r\n    AVIF_TRANSFER_CHARACTERISTICS_SMPTE240 = 7;\r\n    AVIF_TRANSFER_CHARACTERISTICS_LINEAR = 8;\r\n    AVIF_TRANSFER_CHARACTERISTICS_LOG100 = 9;\r\n    AVIF_TRANSFER_CHARACTERISTICS_LOG100_SQRT10 = 10;\r\n    AVIF_TRANSFER_CHARACTERISTICS_IEC61966 = 11;\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT1361 = 12;\r\n    AVIF_TRANSFER_CHARACTERISTICS_SRGB = 13;\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT2020_10BIT = 14;\r\n    AVIF_TRANSFER_CHARACTERISTICS_BT2020_12BIT = 15;\r\n    AVIF_TRANSFER_CHARACTERISTICS_SMPTE2084 = 16; // PQ\r\n    AVIF_TRANSFER_CHARACTERISTICS_SMPTE428 = 17;\r\n    AVIF_TRANSFER_CHARACTERISTICS_HLG = 18;\r\n\r\ntype\r\n      PavifTransferCharacteristics = ^avifTransferCharacteristics;\r\n      avifTransferCharacteristics = UInt16;\r\n\r\n{$ifdef ONLY_USE_VERSION_EQUAL_OR_GREATHER_THAN_1}\r\n      // If the given transfer characteristics can be expressed with a simple gamma value, sets 'gamma'\r\n      // to that value and returns AVIF_RESULT_OK. Returns an error otherwise.\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifTransferCharacteristicsGetGamma{$IFDEF LD}: function{$ENDIF}(atc:avifTransferCharacteristics; gamma:PSingle):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n  {$IFDEF LD}var{$ELSE}function{$ENDIF} avifTransferCharacteristicsFindByGamma{$IFDEF LD}: function{$ENDIF}(gamma:single):avifTransferCharacteristics;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$endif}\r\n\r\n    { AVIF_TRANSFER_CHARACTERISTICS_* }\r\nconst \r\n    AVIF_MATRIX_COEFFICIENTS_IDENTITY = 0;\r\n    AVIF_MATRIX_COEFFICIENTS_BT709 = 1;\r\n    AVIF_MATRIX_COEFFICIENTS_UNSPECIFIED = 2;\r\n    AVIF_MATRIX_COEFFICIENTS_FCC = 4;\r\n    AVIF_MATRIX_COEFFICIENTS_BT470BG = 5;\r\n    AVIF_MATRIX_COEFFICIENTS_BT601 = 6;\r\n    AVIF_MATRIX_COEFFICIENTS_SMPTE240 = 7;\r\n    AVIF_MATRIX_COEFFICIENTS_YCGCO = 8;\r\n    AVIF_MATRIX_COEFFICIENTS_BT2020_NCL = 9;\r\n    AVIF_MATRIX_COEFFICIENTS_BT2020_CL = 10;\r\n    AVIF_MATRIX_COEFFICIENTS_SMPTE2085 = 11;\r\n    AVIF_MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL = 12;\r\n    AVIF_MATRIX_COEFFICIENTS_CHROMA_DERIVED_CL = 13;\r\n    AVIF_MATRIX_COEFFICIENTS_ICTCP = 14;\r\n//    #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R)\r\n        AVIF_MATRIX_COEFFICIENTS_YCGCO_RE = 15;\r\n        AVIF_MATRIX_COEFFICIENTS_YCGCO_RO = 16;\r\n//    #endif\r\n    AVIF_MATRIX_COEFFICIENTS_LAST =17;\r\n\r\ntype\r\n      PavifMatrixCoefficients = ^avifMatrixCoefficients;\r\n      avifMatrixCoefficients = UInt16; { AVIF_MATRIX_COEFFICIENTS_* }\r\n    \r\n    { --------------------------------------------------------------------------- }\r\n    { avifDiagnostics }\r\n    { Upon receiving an error from any non-const libavif API call, if the toplevel structure used }\r\n    { in the API call (avifDecoder, avifEncoder) contains a diag member, this buffer may be }\r\n    { populated with a NULL-terminated, freeform error string explaining the most recent error in }\r\n    { more detail. It will be cleared at the beginning of every non-const API call. }\r\n\r\n      PavifDiagnostics = ^avifDiagnostics;\r\n      avifDiagnostics = record\r\n          error : array[0..(AVIF_DIAGNOSTICS_ERROR_BUFFER_SIZE)-1] of char;\r\n        end;\r\n\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifDiagnosticsClearError{$IFDEF LD}: procedure{$ENDIF}(diag:PavifDiagnostics );cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    { --------------------------------------------------------------------------- }\r\ntype\r\n      // Fraction utility\r\n\r\n      avifFraction = record\r\n        n:Int32;\r\n        d:Int32;\r\n      end;\r\n\r\n    { Optional transformation structs }\r\n\r\n      PavifTransformFlag = ^avifTransformFlag;\r\n      avifTransformFlag = (AVIF_TRANSFORM_NONE := 0,AVIF_TRANSFORM_PASP := 1 shl 0,\r\n        AVIF_TRANSFORM_CLAP := 1 shl 1,AVIF_TRANSFORM_IROT := 1 shl 2,\r\n        AVIF_TRANSFORM_IMIR := 1 shl 3);\r\n\r\n      PavifTransformFlags = ^avifTransformFlags;\r\n      avifTransformFlags = UInt32;\r\n    { 'pasp' from ISO/IEC 14496-12:2015 12.1.4.3 }\r\n    { define the relative width and height of a pixel }\r\n\r\n      PavifPixelAspectRatioBox = ^avifPixelAspectRatioBox;\r\n      avifPixelAspectRatioBox = record\r\n          hSpacing : UInt32;\r\n          vSpacing : UInt32;\r\n        end;\r\n\r\n      PavifCleanApertureBox = ^avifCleanApertureBox;\r\n      avifCleanApertureBox = record\r\n    { 'clap' from ISO/IEC 14496-12:2015 12.1.4.3 }\r\n    { a fractional number which defines the exact clean aperture width, in counted pixels, of the video image }\t  \r\n          widthN : UInt32;\r\n          widthD : UInt32;\r\n    { a fractional number which defines the exact clean aperture height, in counted pixels, of the video image }\t\t  \r\n          heightN : UInt32;\r\n          heightD : UInt32;\r\n    { a fractional number which defines the horizontal offset of clean aperture centre minus (width-1)/2. Typically 0. }\t  \r\n          horizOffN : UInt32;\r\n          horizOffD : UInt32;\r\n    { a fractional number which defines the vertical offset of clean aperture centre minus (height-1)/2. Typically 0. } \r\n          vertOffN : UInt32;\r\n          vertOffD : UInt32;\r\n        end;\r\n\r\n      PavifImageRotation = ^avifImageRotation;\r\n      avifImageRotation = record\r\n    { 'irot' from ISO/IEC 23008-12:2017 6.5.10 }\r\n    { angle * 90 specifies the angle (in anti-clockwise direction) in units of degrees. } \r\n          angle : UInt8;      { legal values: [0-3] }\r\n        end;\r\n    { 'imir' from ISO/IEC 23008-12:2022 6.5.12: }\r\n    { }\r\n    {     'axis' specifies how the mirroring is performed: }\r\n    { }\r\n    {     0 indicates that the top and bottom parts of the image are exchanged; }\r\n    {     1 specifies that the left and right parts are exchanged. }\r\n    { }\r\n    {     NOTE In Exif, orientation tag can be used to signal mirroring operations. Exif }\r\n    {     orientation tag 4 corresponds to axis = 0 of ImageMirror, and Exif orientation tag 2 }\r\n    {     corresponds to axis = 1 accordingly. }\r\n    { }\r\n    { Legal values: [0, 1] }\r\n    { }\r\n\r\n      PavifImageMirror = ^avifImageMirror;\r\n      avifImageMirror = record\r\n          case boolean of\r\n          true: (axis : UInt8);\r\n          false: (mode : UInt8); // old field name changed in version 1.\r\n        end;\r\n    { --------------------------------------------------------------------------- }\r\n    { avifCropRect - Helper struct/functions to work with avifCleanApertureBox }\r\n\r\n      PavifCropRect = ^avifCropRect;\r\n      avifCropRect = record\r\n          x : UInt32;\r\n          y : UInt32;\r\n          width : UInt32;\r\n          height : UInt32;\r\n        end;\r\n    { These will return AVIF_FALSE if the resultant values violate any standards, and if so, the output }\r\n    { values are not guaranteed to be complete or correct and should not be used. }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifCropRectConvertCleanApertureBox{$IFDEF LD}: function{$ENDIF}(cropRect:PavifCropRect;\r\n                                                      clap:PavifCleanApertureBox;\r\n                                                      imageW:UInt32;\r\n                                                      imageH:UInt32;\r\n                                                      yuvFormat:avifPixelFormat;\r\n                                                      diag:PavifDiagnostics):avifBool;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifCleanApertureBoxConvertCropRect{$IFDEF LD}: function{$ENDIF}(clap:PavifCleanApertureBox;\r\n                                                      cropRect:PavifCropRect;\r\n                                                      imageW:UInt32; \r\n                                                      imageH:UInt32; \r\n                                                      yuvFormat:avifPixelFormat;\r\n                                                      diag:PavifDiagnostics):avifBool;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n// avifContentLightLevelInformationBox\r\ntype\r\n  avifContentLightLevelInformationBox=record\r\n\r\n    // 'clli' from ISO/IEC 23000-22:2019 (MIAF) 7.4.4.2.2. The SEI message semantics written above\r\n    //  each entry were originally described in ISO/IEC 23008-2.\r\n\r\n    // max_content_light_level, when not equal to 0, indicates an upper bound on the maximum light\r\n    // level among all individual samples in a 4:4:4 representation of red, green, and blue colour\r\n    // primary intensities (in the linear light domain) for the pictures of the CLVS, in units of\r\n    // candelas per square metre. When equal to 0, no such upper bound is indicated by\r\n    // max_content_light_level.\r\n    maxCLL:UInt16;\r\n\r\n    // max_pic_average_light_level, when not equal to 0, indicates an upper bound on the maximum\r\n    // average light level among the samples in a 4:4:4 representation of red, green, and blue\r\n    // colour primary intensities (in the linear light domain) for any individual picture of the\r\n    // CLVS, in units of candelas per square metre. When equal to 0, no such upper bound is\r\n    // indicated by max_pic_average_light_level.\r\n    maxPALL:UInt16;\r\n  end;\r\n\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { avifImage }\r\n    // NOTE: The avifImage struct may be extended in a future release. Code outside the libavif library\r\n    // must allocate avifImage by calling the avifImageCreate() or avifImageCreateEmpty() function.\r\n    PavifImage1_0_0 = ^avifImage1_0_0;\r\n    PPavifImage1_0_0 = ^PavifImage1_0_0;\r\n    avifImage1_0_0 = record\r\n  { Image information }\r\n        width : UInt32;\r\n        height : UInt32;\r\n        depth : UInt32;      { all planes must share this depth; if depth>8, all planes are UInt16 internally }\r\n        yuvFormat : avifPixelFormat;\r\n        yuvRange : avifRange;\r\n        yuvChromaSamplePosition : avifChromaSamplePosition;\r\n        yuvPlanes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of PUInt8;\r\n        yuvRowBytes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of UInt32;\r\n        imageOwnsYUVPlanes : avifBool;\r\n        alphaPlane : PUInt8;\r\n        alphaRowBytes : UInt32;\r\n        imageOwnsAlphaPlane : avifBool;\r\n        alphaPremultiplied : avifBool;\r\n  { ICC Profile }\r\n        icc : avifRWData;\r\n  { CICP information: }\r\n  { These are stored in the AV1 payload and used to signal YUV conversion. Additionally, if an }\r\n  { ICC profile is not specified, these will be stored in the AVIF container's `colr` box with }\r\n  { a type of `nclx`. If your system supports ICC profiles, be sure to check for the existence }\r\n  { of one (avifImage.icc) before relying on the values listed here! }\r\n\r\n        colorPrimaries : avifColorPrimaries;\r\n        transferCharacteristics : avifTransferCharacteristics;\r\n        matrixCoefficients : avifMatrixCoefficients;\r\n        // CLLI information:\r\n        // Content Light Level Information. Used to represent maximum and average light level of an\r\n        // image. Useful for tone mapping HDR images, especially when using transfer characteristics\r\n        // SMPTE2084 (PQ). The default value of (0, 0) means the content light level information is\r\n        // unknown or unavailable, and will cause libavif to avoid writing a clli box for it.\r\n        clli:avifContentLightLevelInformationBox;\r\n\r\n  { Transformations - These metadata values are encoded/decoded when transformFlags are set }\r\n  { appropriately, but do not impact/adjust the actual pixel buffers used (images won't be }\r\n  { pre-cropped or mirrored upon decode). Basic explanations from the standards are offered in }\r\n  { comments above, but for detailed explanations, please refer to the HEIF standard (ISO/IEC }\r\n  { 23008-12:2017) and the BMFF standard (ISO/IEC 14496-12:2015). }\r\n  { }\r\n  { To encode any of these boxes, set the values in the associated box, then enable the flag in }\r\n  { transformFlags. On decode, only honor the values in boxes with the associated transform flag set. }\r\n        transformFlags : avifTransformFlags;\r\n        pasp : avifPixelAspectRatioBox;\r\n        clap : avifCleanApertureBox;\r\n        irot : avifImageRotation;\r\n        imir : avifImageMirror;\r\n        { Metadata - set with avifImageSetMetadata*() before write, check .size>0 for existence after read }\r\n        exif : avifRWData;\r\n        xmp : avifRWData;\r\n       // Version 1.0.0 ends here. Add any new members after this line.\r\n\r\n      end;\r\n\r\n\r\n\r\n      PavifImage0_11_0 = ^avifImage0_11_0;\r\n      PPavifImage0_11_0 = ^PavifImage0_11_0;\r\n      avifImage0_11_0 = record\r\n    { Image information }\r\n          width : UInt32;\r\n          height : UInt32;\r\n          depth : UInt32;      { all planes must share this depth; if depth>8, all planes are UInt16 internally }\r\n          yuvFormat : avifPixelFormat;\r\n          yuvRange : avifRange;\r\n          yuvChromaSamplePosition : avifChromaSamplePosition;\r\n          yuvPlanes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of PUInt8;\r\n          yuvRowBytes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of UInt32;\r\n          imageOwnsYUVPlanes : avifBool;\r\n          alphaPlane : PUInt8;\r\n          alphaRowBytes : UInt32;\r\n          imageOwnsAlphaPlane : avifBool;\r\n          alphaPremultiplied : avifBool;\r\n    { ICC Profile }\r\n          icc : avifRWData;\r\n    { CICP information: }\r\n    { These are stored in the AV1 payload and used to signal YUV conversion. Additionally, if an }\r\n    { ICC profile is not specified, these will be stored in the AVIF container's `colr` box with }\r\n    { a type of `nclx`. If your system supports ICC profiles, be sure to check for the existence }\r\n    { of one (avifImage.icc) before relying on the values listed here! }\r\n\r\n          colorPrimaries : avifColorPrimaries;\r\n          transferCharacteristics : avifTransferCharacteristics;\r\n          matrixCoefficients : avifMatrixCoefficients;\r\n    { Transformations - These metadata values are encoded/decoded when transformFlags are set }\r\n    { appropriately, but do not impact/adjust the actual pixel buffers used (images won't be }\r\n    { pre-cropped or mirrored upon decode). Basic explanations from the standards are offered in }\r\n    { comments above, but for detailed explanations, please refer to the HEIF standard (ISO/IEC }\r\n    { 23008-12:2017) and the BMFF standard (ISO/IEC 14496-12:2015). }\r\n    { }\r\n    { To encode any of these boxes, set the values in the associated box, then enable the flag in }\r\n    { transformFlags. On decode, only honor the values in boxes with the associated transform flag set. }\r\n          transformFlags : avifTransformFlags;\r\n          pasp : avifPixelAspectRatioBox;\r\n          clap : avifCleanApertureBox;\r\n          irot : avifImageRotation;\r\n          imir : avifImageMirror;\r\n          { Metadata - set with avifImageSetMetadata*() before write, check .size>0 for existence after read }\r\n          exif : avifRWData;\r\n          xmp : avifRWData;\r\n        end;\r\n\r\n      PavifImage = Pointer;\r\n      PPavifImage = ^PavifImage;\r\n      PavifImage0_8_4= ^avifImage0_8_4;\r\n      PPavifImage0_8_4 = ^PavifImage0_8_4;\r\n      avifImage0_8_4 = record\r\n    { Image information }\t  \r\n          width : UInt32;\r\n          height : UInt32;\r\n          depth : UInt32;      { all planes must share this depth; if depth>8, all planes are UInt16 internally }\r\n          yuvFormat : avifPixelFormat;\r\n          yuvRange : avifRange;\r\n          yuvChromaSamplePosition : avifChromaSamplePosition;\r\n          yuvPlanes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of PUInt8;\r\n          yuvRowBytes : array[0..(AVIF_PLANE_COUNT_YUV)-1] of UInt32;\r\n          imageOwnsYUVPlanes : avifBool;\r\n          alphaRange : avifRange;\r\n          alphaPlane : PUInt8;\r\n          alphaRowBytes : UInt32;\r\n          imageOwnsAlphaPlane : avifBool;\r\n          alphaPremultiplied : avifBool;\r\n    { ICC Profile }\t\t  \r\n          icc : avifRWData;\r\n    { CICP information: }\r\n    { These are stored in the AV1 payload and used to signal YUV conversion. Additionally, if an }\r\n    { ICC profile is not specified, these will be stored in the AVIF container's `colr` box with }\r\n    { a type of `nclx`. If your system supports ICC profiles, be sure to check for the existence }\r\n    { of one (avifImage.icc) before relying on the values listed here! }\r\n\t\t  \r\n          colorPrimaries : avifColorPrimaries;\r\n          transferCharacteristics : avifTransferCharacteristics;\r\n          matrixCoefficients : avifMatrixCoefficients;\r\n    { Transformations - These metadata values are encoded/decoded when transformFlags are set }\r\n    { appropriately, but do not impact/adjust the actual pixel buffers used (images won't be }\r\n    { pre-cropped or mirrored upon decode). Basic explanations from the standards are offered in }\r\n    { comments above, but for detailed explanations, please refer to the HEIF standard (ISO/IEC }\r\n    { 23008-12:2017) and the BMFF standard (ISO/IEC 14496-12:2015). }\r\n    { }\r\n    { To encode any of these boxes, set the values in the associated box, then enable the flag in }\r\n    { transformFlags. On decode, only honor the values in boxes with the associated transform flag set. }\r\n          transformFlags : avifTransformFlags;\r\n          pasp : avifPixelAspectRatioBox;\r\n          clap : avifCleanApertureBox;\r\n          irot : avifImageRotation;\r\n          imir : avifImageMirror;\r\n          { Metadata - set with avifImageSetMetadata*() before write, check .size>0 for existence after read }\r\n          exif : avifRWData;\r\n          xmp : avifRWData;\r\n        end;\r\n\r\n// avifImageCreate() and avifImageCreateEmpty() return nil (NULL) if arguments are invalid or if a memory allocation failed.\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageCreate{$IFDEF LD}: function{$ENDIF}(width:uint32;height:uint32;depth:uint32;yuvFormat:avifPixelFormat):PavifImage;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageCreateEmpty{$IFDEF LD}: function{$ENDIF}:PavifImage;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF} // helper for making an image to decode into\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageCopy{$IFDEF LD}: function{$ENDIF}(dstImage:PavifImage;srcImage:PavifImage;planes:avifPlanesFlags):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF} // deep copy\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifImageDestroy{$IFDEF LD}: procedure{$ENDIF}(image:PavifImage);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageSetProfileICC{$IFDEF LD}: function{$ENDIF}(image:PavifImage;icc:PByte;iccSize:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{ Sets Exif metadata. Attempts to parse the Exif metadata for Exif orientation. Sets\r\nimage->transformFlags, image->irot and image->imir if the Exif metadata is parsed successfully,\r\notherwise leaves image->transformFlags, image->irot and image->imir unchanged.\r\nWarning: If the Exif payload is set and invalid, avifEncoderWrite() may return AVIF_RESULT_INVALID_EXIF_PAYLOAD. }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageSetMetadataExif{$IFDEF LD}: function{$ENDIF}(image:PavifImage;exif:PByte;exifSize:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{Sets XMP metadata. }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageSetMetadataXMP{$IFDEF LD}: function{$ENDIF}(image:PavifImage;xmp:PByte;xmpSize:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageAllocatePlanes{$IFDEF LD}: function{$ENDIF}(image:PavifImage;planes:avifPlanesFlags):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF} // Ignores any pre-existing planes\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifImageFreePlanes{$IFDEF LD}: procedure{$ENDIF}(image:PavifImage;planes:avifPlanesFlags);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}     // Ignores already-freed planes\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifImageStealPlanes{$IFDEF LD}: procedure{$ENDIF}(dstImage:PavifImage;srcImage:PavifImage;planes:avifPlanesFlags);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n    { --------------------------------------------------------------------------- }\r\n    { Understanding maxThreads }\r\n    { }\r\n    { libavif's structures and API use the setting 'maxThreads' in a few places. The intent of this }\r\n    { setting is to limit concurrent thread activity/usage, not necessarily to put a hard ceiling on }\r\n    { how many sleeping threads happen to exist behind the scenes. The goal of this setting is to }\r\n    { ensure that at any given point during libavif's encoding or decoding, no more than *maxThreads* }\r\n    { threads are simultaneously **active and taking CPU time**. }\r\n    { }\r\n    { As an important example, when encoding an image sequence that has an alpha channel, two }\r\n    { long-lived underlying AV1 encoders must simultaneously exist (one for color, one for alpha). For }\r\n    { each additional frame fed into libavif, its YUV planes are fed into one instance of the AV1 }\r\n    { encoder, and its alpha plane is fed into another. These operations happen serially, so only one }\r\n    { of these AV1 encoders is ever active at a time. However, the AV1 encoders might pre-create a }\r\n    { pool of worker threads upon initialization, so during this process, twice the amount of worker }\r\n    { threads actually simultaneously exist on the machine, but half of them are guaranteed to be }\r\n    { sleeping. }\r\n    { }\r\n    { This design ensures that AV1 implementations are given as many threads as possible to ensure a }\r\n    { speedy encode or decode, despite the complexities of occasionally needing two AV1 codec instances }\r\n    { (due to alpha payloads being separate from color payloads). If your system has a hard ceiling on }\r\n    { the number of threads that can ever be in flight at a given time, please account for this }\r\n    { accordingly. }\r\n    { --------------------------------------------------------------------------- }\r\n    { Optional YUV<->RGB support }\r\n    { To convert to/from RGB, create an avifRGBImage on the stack, call avifRGBImageSetDefaults() on }\r\n    { it, and then tweak the values inside of it accordingly. At a minimum, you should populate }\r\n    { ->pixels and ->rowBytes with an appropriately sized pixel buffer, which should be at least }\r\n    { (->rowBytes * ->height) bytes, where ->rowBytes is at least (->width * avifRGBImagePixelSize()). }\r\n    { If you don't want to supply your own pixel buffer, you can use the }\r\n    { avifRGBImageAllocatePixels()/avifRGBImageFreePixels() convenience functions. }\r\n    { avifImageRGBToYUV() and avifImageYUVToRGB() will perform depth rescaling and limited<->full range }\r\n    { conversion, if necessary. Pixels in an avifRGBImage buffer are always full range, and conversion }\r\n    { routines will fail if the width and height don't match the associated avifImage. }\r\n    { If libavif is built with a version of libyuv offering a fast conversion between RGB and YUV for }\r\n    { the given inputs, libavif will use it. See reformat_libyuv.c for the details. }\r\n    { libyuv is faster but may have slightly less precision than built-in conversion, so avoidLibYUV }\r\n    { can be set to AVIF_TRUE when AVIF_CHROMA_UPSAMPLING_BEST_QUALITY or }\r\n    { AVIF_CHROMA_DOWNSAMPLING_BEST_QUALITY is used, to get the most precise but slowest results. }\r\n\r\n    { Note to libavif maintainers: The lookup tables in avifImageYUVToRGBLibYUV }\r\n    { rely on the ordering of this enum values for their correctness. So changing }\r\n    { the values in this enum will require auditing avifImageYUVToRGBLibYUV for }\r\n    { correctness. }\r\ntype\r\n      PavifRGBFormat = ^avifRGBFormat;\r\n      avifRGBFormat = (AVIF_RGB_FORMAT_RGB := 0,AVIF_RGB_FORMAT_RGBA,\r\n        AVIF_RGB_FORMAT_ARGB,AVIF_RGB_FORMAT_BGR,\r\n        AVIF_RGB_FORMAT_BGRA,AVIF_RGB_FORMAT_ABGR,\r\n        // RGB_565 format uses five bits for the red and blue components and six\r\n        // bits for the green component. Each RGB pixel is 16 bits (2 bytes), which\r\n        // is packed as follows:\r\n        //   uint16_t: [r4 r3 r2 r1 r0 g5 g4 g3 g2 g1 g0 b4 b3 b2 b1 b0]\r\n        //   r4 and r0 are the MSB and LSB of the red component respectively.\r\n        //   g5 and g0 are the MSB and LSB of the green component respectively.\r\n        //   b4 and b0 are the MSB and LSB of the blue component respectively.\r\n        // This format is only supported for YUV -> RGB conversion and when\r\n        // avifRGBImage.depth is set to 8.\r\n        AVIF_RGB_FORMAT_RGB_565,\r\n        AVIF_RGB_FORMAT_COUNT\r\n      );\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBFormatChannelCount{$IFDEF LD}: function{$ENDIF}(format:avifRGBFormat):UInt32;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBFormatHasAlpha{$IFDEF LD}: function{$ENDIF}(format:avifRGBFormat):avifBool;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\ntype\r\n      PavifChromaUpsampling = ^avifChromaUpsampling;\r\n      avifChromaUpsampling = (\r\n        AVIF_CHROMA_UPSAMPLING_AUTOMATIC = 0,    // Chooses best trade off of speed/quality (uses BILINEAR libyuv if available,\r\n                                                 // or falls back to NEAREST libyuv if available, or falls back to BILINEAR built-in)\r\n        AVIF_CHROMA_UPSAMPLING_FASTEST = 1,      // Chooses speed over quality (same as NEAREST)\r\n        AVIF_CHROMA_UPSAMPLING_BEST_QUALITY = 2, // Chooses the best quality upsampling, given settings (same as BILINEAR)\r\n        AVIF_CHROMA_UPSAMPLING_NEAREST = 3,      // Uses nearest-neighbor filter\r\n        AVIF_CHROMA_UPSAMPLING_BILINEAR = 4      // Uses bilinear filter\r\n      );\r\n      avifChromaDownsampling = (\r\n        AVIF_CHROMA_DOWNSAMPLING_AUTOMATIC = 0,    // Chooses best trade off of speed/quality (same as AVERAGE)\r\n        AVIF_CHROMA_DOWNSAMPLING_FASTEST = 1,      // Chooses speed over quality (same as AVERAGE)\r\n        AVIF_CHROMA_DOWNSAMPLING_BEST_QUALITY = 2, // Chooses the best quality upsampling (same as AVERAGE)\r\n        AVIF_CHROMA_DOWNSAMPLING_AVERAGE = 3,      // Uses averaging filter\r\n        AVIF_CHROMA_DOWNSAMPLING_SHARP_YUV = 4     // Uses sharp yuv filter (libsharpyuv), available for 4:2:0 only, ignored for 4:2:2\r\n      );\r\n      // NOTE: avifRGBImage must be initialized with avifRGBImageSetDefaults() (preferred) or memset()\r\n      // before use.\r\n      PavifRGBImage = pointer;\r\n      PavifRGBImage0_8_4 = ^avifRGBImage0_8_4;\r\n      avifRGBImage0_8_4 = record\r\n          width : UInt32;      { must match associated avifImage }\r\n          height : UInt32;    { must match associated avifImage }\r\n          depth : UInt32;    { legal depths [8, 10, 12, 16]. if depth>8, pixels must be UInt16 internally }\r\n          format : avifRGBFormat;  { all channels are always full range }\r\n          chromaUpsampling : avifChromaUpsampling;     { Defaults to AVIF_CHROMA_UPSAMPLING_AUTOMATIC: How to upsample non-4:4:4 UV (ignored for 444) when converting to RGB. }\r\n    { Unused when converting to YUV. avifRGBImageSetDefaults() prefers quality over speed. }\r\n    { Used for XRGB formats, treats formats containing alpha (such as ARGB) as if they were }\r\n    { RGB, treating the alpha bits as if they were all 1. }\r\n          ignoreAlpha : avifBool;\r\n          alphaPremultiplied : avifBool;     { indicates if RGB value is pre-multiplied by alpha. Default: false }\r\n          pixels : PUInt8;\r\n          rowBytes : UInt32;\r\n        end;\r\n\r\n      PavifRGBImage0_10_0 = ^avifRGBImage0_10_0;\r\n      avifRGBImage0_10_0 = record\r\n          width : UInt32;      { must match associated avifImage }\r\n          height : UInt32;    { must match associated avifImage }\r\n          depth : UInt32;    { legal depths [8, 10, 12, 16]. if depth>8, pixels must be UInt16 internally }\r\n          format : avifRGBFormat;  { all channels are always full range }\r\n          chromaUpsampling : avifChromaUpsampling;     { Defaults to AVIF_CHROMA_UPSAMPLING_AUTOMATIC: How to upsample non-4:4:4 UV (ignored for 444) when converting to RGB. }\r\n    { Unused when converting to YUV. avifRGBImageSetDefaults() prefers quality over speed. }\r\n    { Used for XRGB formats, treats formats containing alpha (such as ARGB) as if they were }\r\n    { RGB, treating the alpha bits as if they were all 1. }\r\n          ignoreAlpha : avifBool;\r\n          alphaPremultiplied : avifBool;     { indicates if RGB value is pre-multiplied by alpha. Default: false }\r\n          isFloat : avifBool;\r\n          pixels : PUInt8;\r\n          rowBytes : UInt32;\r\n          padding: packed array[0..63] of byte;  // to prevent buffer overflow with future changes\r\n        end;\r\n\r\n      PavifRGBImage0_11_0 = ^avifRGBImage0_11_0;\r\n      avifRGBImage0_11_0 = record\r\n          width : UInt32;      { must match associated avifImage }\r\n          height : UInt32;    { must match associated avifImage }\r\n          depth : UInt32;    { legal depths [8, 10, 12, 16]. if depth>8, pixels must be UInt16 internally }\r\n          format : avifRGBFormat;  { all channels are always full range }\r\n          chromaUpsampling : avifChromaUpsampling; // How to upsample from 4:2:0 or 4:2:2 UV when converting to RGB (ignored for 4:4:4 and 4:0:0).\r\n                                             // Ignored when converting to YUV. Defaults to AVIF_CHROMA_UPSAMPLING_AUTOMATIC.\r\n          chromaDownsampling: avifChromaDownsampling; // How to downsample to 4:2:0 or 4:2:2 UV when converting from RGB (ignored for 4:4:4 and 4:0:0).\r\n                                                 // Ignored when converting to RGB. Defaults to AVIF_CHROMA_DOWNSAMPLING_AUTOMATIC.\r\n          avoidLibYUV: avifBool;   { If AVIF_FALSE and libyuv conversion between RGB and YUV (including upsampling or downsampling if any) }\r\n                            { is available for the avifImage/avifRGBImage combination, then libyuv is used. Default is AVIF_FALSE. }\r\n          ignoreAlpha : avifBool;  { Used for XRGB formats, treats formats containing alpha (such as ARGB) as if they were RGB, treating }\r\n                                   { the alpha bits as if they were all 1. }\r\n          alphaPremultiplied : avifBool;     { indicates if RGB value is pre-multiplied by alpha. Default: false }\r\n          isFloat : avifBool;    { indicates if RGBA values are in half float (f16) format. Valid only when depth == 16. Default: false  }\r\n          pixels : PUInt8;\r\n          rowBytes : UInt32;\r\n          padding: packed array[0..63] of byte;  // to prevent buffer overflow with future changes\r\n        end;\r\n\r\n      PavifRGBImage1_0_0 = ^avifRGBImage1_0_0;\r\n      avifRGBImage1_0_0 = record\r\n          width : UInt32;      { must match associated avifImage }\r\n          height : UInt32;    { must match associated avifImage }\r\n          depth : UInt32;    { legal depths [8, 10, 12, 16]. if depth>8, pixels must be UInt16 internally }\r\n          format : avifRGBFormat;  { all channels are always full range }\r\n          chromaUpsampling : avifChromaUpsampling; // How to upsample from 4:2:0 or 4:2:2 UV when converting to RGB (ignored for 4:4:4 and 4:0:0).\r\n                                             // Ignored when converting to YUV. Defaults to AVIF_CHROMA_UPSAMPLING_AUTOMATIC.\r\n          chromaDownsampling: avifChromaDownsampling; // How to downsample to 4:2:0 or 4:2:2 UV when converting from RGB (ignored for 4:4:4 and 4:0:0).\r\n                                                 // Ignored when converting to RGB. Defaults to AVIF_CHROMA_DOWNSAMPLING_AUTOMATIC.\r\n          avoidLibYUV: avifBool;   { If AVIF_FALSE and libyuv conversion between RGB and YUV (including upsampling or downsampling if any) }\r\n                            { is available for the avifImage/avifRGBImage combination, then libyuv is used. Default is AVIF_FALSE. }\r\n          ignoreAlpha : avifBool;  { Used for XRGB formats, treats formats containing alpha (such as ARGB) as if they were RGB, treating }\r\n                                   { the alpha bits as if they were all 1. }\r\n          alphaPremultiplied : avifBool;     { indicates if RGB value is pre-multiplied by alpha. Default: false }\r\n          isFloat : avifBool;    { indicates if RGBA values are in half float (f16) format. Valid only when depth == 16. Default: false  }\r\n          maxThreads:Integer; // Number of threads to be used for the YUV to RGB conversion. Note that this value is ignored for RGB to YUV\r\n                              // conversion. Setting this to zero has the same effect as setting it to one. Negative values are invalid.\r\n                              // Default: 1.\r\n\r\n          pixels : PUInt8;\r\n          rowBytes : UInt32;\r\n          padding: packed array[0..63] of byte;  // to prevent buffer overflow with future changes\r\n        end;\r\n\r\n    { Sets rgb->width, rgb->height, and rgb->depth to image->width, image->height, and image->depth. }\r\n    { Sets rgb->pixels to NULL and rgb->rowBytes to 0. Sets the other fields of 'rgb' to default }\r\n    { values. }\r\n\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifRGBImageSetDefaults{$IFDEF LD}: procedure{$ENDIF}(rgb:PavifRGBImage;image:PavifImage);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBImagePixelSize{$IFDEF LD}: function{$ENDIF}(rgb:PavifRGBImage):UInt32;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Convenience functions. If you supply your own pixels/rowBytes, you do not need to use these. }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBImageAllocatePixels{$IFDEF LD}: function{$ENDIF}(rgb:PavifRGBImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifRGBImageFreePixels{$IFDEF LD}: procedure{$ENDIF}(rgb:PavifRGBImage);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { The main conversion functions }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageRGBToYUV{$IFDEF LD}: function{$ENDIF}(image:PavifImage;rgb:PavifRGBImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageYUVToRGB{$IFDEF LD}: function{$ENDIF}(image:PavifImage;rgb:PavifRGBImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Premultiply handling functions. }\r\n    { (Un)premultiply is automatically done by the main conversion functions above, }\r\n    { so usually you don't need to call these. They are there for convenience. }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBImagePremultiplyAlpha{$IFDEF LD}: function{$ENDIF}(rgb:PavifRGBImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifRGBImageUnpremultiplyAlpha{$IFDEF LD}: function{$ENDIF}(rgb:PavifRGBImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { YUV Utils }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifFullToLimitedY{$IFDEF LD}: function{$ENDIF}(depth:UInt32;v:integer):integer;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifFullToLimitedUV{$IFDEF LD}: function{$ENDIF}(depth:UInt32;v:integer):integer;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifLimitedToFullY{$IFDEF LD}: function{$ENDIF}(depth:UInt32;v:integer):integer;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifLimitedToFullUV{$IFDEF LD}: function{$ENDIF}(depth:UInt32;v:integer):integer;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { Codec selection }\r\ntype\r\n    PavifCodecChoice = ^avifCodecChoice;\r\n    avifCodecChoice = (\r\n      AVIF_CODEC_CHOICE_AUTO := 0,\r\n      AVIF_CODEC_CHOICE_AOM,       { Encode and decode }\r\n      AVIF_CODEC_CHOICE_DAV1D,     { Decode only }\r\n      AVIF_CODEC_CHOICE_LIBGAV1,   { Decode only }\r\n      AVIF_CODEC_CHOICE_RAV1E,     { Encode only }\r\n      AVIF_CODEC_CHOICE_SVT,       { Encode only }\r\n      AVIF_CODEC_CHOICE_AVM        { Experimental (AV2) }\r\n    );\r\n\r\n    PavifCodecFlag = ^avifCodecFlag;\r\n    avifCodecFlag = (\r\n        AVIF_CODEC_FLAG_CAN_DECODE := 1 shl 0,\r\n        AVIF_CODEC_FLAG_CAN_ENCODE := 1 shl 1\r\n      );\r\n\r\n    PavifCodecFlags = ^avifCodecFlags;\r\n    avifCodecFlags = UInt32;\r\n\r\n{ If this returns NULL, the codec choice/flag combination is unavailable }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifCodecName{$IFDEF LD}: function{$ENDIF}(choice:avifCodecChoice;requiredFlags:avifCodecFlags):PAnsiChar;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifCodecChoiceFromName{$IFDEF LD}: function{$ENDIF}(name:PAnsiChar):avifCodecChoice;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\ntype\r\n    { avifIO }\r\n      PavifIO = ^avifIO;\r\n      //avifIO = record\r\n      //    {undefined structure}\r\n      //  end;\r\n\r\n    { Destroy must completely destroy all child structures *and* free the avifIO object itself. }\r\n    { This function pointer is optional, however, if the avifIO object isn't intended to be owned by }\r\n    { a libavif encoder/decoder. }\r\n\r\n      avifIODestroyFunc = procedure (io:PavifIO);cdecl;\r\n    { This function should return a block of memory that *must* remain valid until another read call to }\r\n    { this avifIO struct is made (reusing a read buffer is acceptable/expected). }\r\n    { }\r\n    { * If offset exceeds the size of the content (past EOF), return AVIF_RESULT_IO_ERROR. }\r\n    { * If offset is *exactly* at EOF, provide a 0-byte buffer and return AVIF_RESULT_OK. }\r\n    { * If (offset+size) exceeds the contents' size, it must truncate the range to provide all }\r\n    {   bytes from the offset to EOF. }\r\n    { * If the range is unavailable yet (due to network conditions or any other reason), }\r\n    {   return AVIF_RESULT_WAITING_ON_IO. }\r\n    { * Otherwise, provide the range and return AVIF_RESULT_OK. }\r\n\r\n      avifIOReadFunc = function (io:PavifIO; readFlags:UInt32; offset:UInt64; size:size_type; output:PavifROData):avifResult;cdecl;\r\n\r\n      avifIOWriteFunc = function (io:PavifIO; writeFlags:UInt32; offset:UInt64; data:PUInt8; size:size_type):avifResult;cdecl;\r\n\r\n//      PavifIO = ^avifIO;\r\n      avifIO = record\r\n          destroy : avifIODestroyFunc;\r\n          read : avifIOReadFunc;\r\n    { This is reserved for future use - but currently ignored. Set it to a null pointer. }\t\t  \r\n          write : avifIOWriteFunc;\r\n    { If non-zero, this is a hint to internal structures of the max size offered by the content }\r\n    { this avifIO structure is reading. If it is a static memory source, it should be the size of }\r\n    { the memory buffer; if it is a file, it should be the file's size. If this information cannot }\r\n    { be known (as it is streamed-in), set a reasonable upper boundary here (larger than the file }\r\n    { can possibly be for your environment, but within your environment's memory constraints). This }\r\n    { is used for sanity checks when allocating internal buffers to protect against }\r\n    { malformed/malicious files. }\t\t  \r\n          sizeHint : UInt64;\r\n    { If true, *all* memory regions returned from *all* calls to read are guaranteed to be }\r\n    { persistent and exist for the lifetime of the avifIO object. If false, libavif will make }\r\n    { in-memory copies of samples and metadata content, and a memory region returned from read must }\r\n    { only persist until the next call to read. }\t\t  \r\n          persistent : avifBool;\r\n    { The contents of this are defined by the avifIO implementation, and should be fully destroyed }\r\n    { by the implementation of the associated destroy function, unless it isn't owned by the avifIO }\r\n    { struct. It is not necessary to use this pointer in your implementation. }\t\t  \r\n          data : pointer;\r\n        end;\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifIOCreateMemoryReader{$IFDEF LD}: function{$ENDIF}(data:PByte;size:size_type): PavifIO;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifIOCreateFileReader{$IFDEF LD}: function{$ENDIF}(filename:PAnsiChar):PavifIO;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifIODestroy{$IFDEF LD}: procedure{$ENDIF}(io:PavifIO);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { avifDecoder }\r\n    { Some encoders (including very old versions of avifenc) do not implement the AVIF standard }\r\n    { perfectly, and thus create invalid files. However, these files are likely still recoverable / }\r\n    { decodable, if it wasn't for the strict requirements imposed by libavif's decoder. These flags }\r\n    { allow a user of avifDecoder to decide what level of strictness they want in their project. }\r\n\r\ntype\r\n\r\n      PavifStrictFlag = ^avifStrictFlag;\r\n      avifStrictFlag = (\r\n    { Disables all strict checks. }\t  \r\n\t  AVIF_STRICT_DISABLED := 0,\r\n    { Requires the PixelInformationProperty ('pixi') be present in AV1 image items. libheif v1.11.0 }\r\n    { or older does not add the 'pixi' item property to AV1 image items. If you need to decode AVIF }\r\n    { images encoded by libheif v1.11.0 or older, be sure to disable this bit. (This issue has been }\r\n    { corrected in libheif v1.12.0.) }\r\n\t  \r\n\t  AVIF_STRICT_PIXI_REQUIRED := 1 shl 0,\r\n    { This demands that the values surfaced in the clap box are valid, determined by attempting to }\r\n    { convert the clap box to a crop rect using avifCropRectConvertCleanApertureBox(). If this }\r\n    { function returns AVIF_FALSE and this strict flag is set, the decode will fail. }\r\n\t  \r\n        AVIF_STRICT_CLAP_VALID := 1 shl 1,\r\n    { Requires the ImageSpatialExtentsProperty ('ispe') be present in alpha auxiliary image items. }\r\n    { avif-serialize 0.7.3 or older does not add the 'ispe' item property to alpha auxiliary image }\r\n    { items. If you need to decode AVIF images encoded by the cavif encoder with avif-serialize }\r\n    { 0.7.3 or older, be sure to disable this bit. (This issue has been corrected in avif-serialize }\r\n    { 0.7.4.) See https://github.com/kornelski/avif-serialize/issues/3 and }\r\n    { https://crbug.com/1246678. }\r\n\t\t\r\n\t\tAVIF_STRICT_ALPHA_ISPE_REQUIRED := 1 shl 2,\r\n    { Maximum strictness; enables all bits above. This is avifDecoder's default. }\r\n\t\t\r\n        AVIF_STRICT_ENABLED := (AVIF_STRICT_PIXI_REQUIRED + AVIF_STRICT_CLAP_VALID) + AVIF_STRICT_ALPHA_ISPE_REQUIRED);\r\n\r\n      PavifStrictFlags = ^avifStrictFlags;\r\n      avifStrictFlags = UInt32;\r\n    { Useful stats related to a read/write }\r\n\r\n      PavifIOStats = ^avifIOStats;\r\n      avifIOStats = record\r\n          // Size in bytes of the AV1 image item or track data containing color samples.\r\n          colorOBUSize : size_type;\r\n          // Size in bytes of the AV1 image item or track data containing alpha samples.\r\n          alphaOBUSize : size_type;\r\n        end;\r\n      PavifDecoderData = ^avifDecoderData;\r\n      avifDecoderData = record\r\n          {undefined structure}\r\n        end;\r\n\r\n\r\n      PavifDecoderSource = ^avifDecoderSource;\r\n      avifDecoderSource = (\r\n    { Honor the major brand signaled in the beginning of the file to pick between an AVIF sequence }\r\n    { ('avis', tracks-based) or a single image ('avif', item-based). If the major brand is neither }\r\n    { of these, prefer the AVIF sequence ('avis', tracks-based), if present. } \r\n\t  AVIF_DECODER_SOURCE_AUTO := 0,\r\n    { Use the primary item and the aux (alpha) item in the avif(s). }\r\n    { This is where single-image avifs store their image. }\r\n\t  AVIF_DECODER_SOURCE_PRIMARY_ITEM,\r\n    { Use the chunks inside primary/aux tracks in the moov block. }\r\n    { This is where avifs image sequences store their images. }\r\n\t  \r\n        AVIF_DECODER_SOURCE_TRACKS\r\n    { Decode the thumbnail item. Currently unimplemented. }\r\n    { AVIF_DECODER_SOURCE_THUMBNAIL_ITEM }\r\n\t);\r\n\t\r\n    { Information about the timing of a single image in an image sequence }\r\n\r\n      PavifImageTiming = ^avifImageTiming;\r\n      avifImageTiming = record\r\n          timescale : UInt64;     { timescale of the media (Hz) }\r\n          pts : double;       { presentation timestamp in seconds (ptsInTimescales / timescale) }\r\n          ptsInTimescales : UInt64;      { presentation timestamp in \"timescales\" }\r\n          duration : double;        { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;       { duration in \"timescales\" }\r\n        end;\r\n\t\t\r\n\r\n      PavifProgressiveState = ^avifProgressiveState;\r\n      avifProgressiveState = (\r\n    { The current AVIF/Source does not offer a progressive image. This will always be the state }\r\n    { for an image sequence. }\r\n\t  AVIF_PROGRESSIVE_STATE_UNAVAILABLE := 0,\r\n     { The current AVIF/Source offers a progressive image, but avifDecoder.allowProgressive is not }\r\n    { enabled, so it will behave as if the image was not progressive and will simply decode the }\r\n    { best version of this item. }     \r\n\t  AVIF_PROGRESSIVE_STATE_AVAILABLE,\r\n    { The current AVIF/Source offers a progressive image, and avifDecoder.allowProgressive is true. }\r\n    { In this state, avifDecoder.imageCount will be the count of all of the available progressive }\r\n    { layers, and any specific layer can be decoded using avifDecoderNthImage() as if it was an }\r\n    { image sequence, or simply using repeated calls to avifDecoderNextImage() to decode better and }\r\n    { better versions of this image. }\r\n\t  \r\n\t  AVIF_PROGRESSIVE_STATE_ACTIVE\r\n        );\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifProgressiveStateToString{$IFDEF LD}: function{$ENDIF}( progressiveState:avifProgressiveState):PAnsiChar;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\ntype\r\n      // NOTE: The avifDecoder struct may be extended in a future release. Code outside the libavif\r\n      // library must allocate avifDecoder by calling the avifDecoderCreate() function.\r\n      PavifDecoder = pointer;\r\n      PavifDecoder0_8_4 = ^avifDecoder0_8_4;\r\n      avifDecoder0_8_4 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\r\n          codecChoice : avifCodecChoice;\r\n    { Defaults to 1. -- NOTE: Please see the \"Understanding maxThreads\" comment block above }\r\n          maxThreads : longint;\r\n    { avifs can have multiple sets of images in them. This specifies which to decode. }\r\n    { Set this via avifDecoderSetSource(). }\r\n          requestedSource : avifDecoderSource;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;      { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;    { duration in \"timescales\" }\r\n          alphaPresent : avifBool;\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n          { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n          { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n          { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n      end;\r\n\r\n      PavifDecoder0_9_2 = ^avifDecoder0_9_2;\r\n      avifDecoder0_9_2 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\r\n          codecChoice : avifCodecChoice;\r\n    { Defaults to 1. -- NOTE: Please see the \"Understanding maxThreads\" comment block above }\r\n          maxThreads : longint;\r\n    { avifs can have multiple sets of images in them. This specifies which to decode. }\r\n    { Set this via avifDecoderSetSource(). }\r\n          requestedSource : avifDecoderSource;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;      { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;    { duration in \"timescales\" }\r\n          alphaPresent : avifBool;\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n          imageCountLimit : UInt32;\r\n          strictFlags : avifStrictFlags;\r\n          { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n          { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n          { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n          { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n      end;\r\n\r\n      PavifDecoder0_9_3 = ^avifDecoder0_9_3;\r\n      avifDecoder0_9_3 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\r\n          codecChoice : avifCodecChoice;\r\n    { Defaults to 1. -- NOTE: Please see the \"Understanding maxThreads\" comment block above }\r\n          maxThreads : longint;\r\n    { avifs can have multiple sets of images in them. This specifies which to decode. }\r\n    { Set this via avifDecoderSetSource(). }\r\n          requestedSource : avifDecoderSource;\r\n    { If this is true and a progressive AVIF is decoded, avifDecoder will behave as if the AVIF is }\r\n    { an image sequence, in that it will set imageCount to the number of progressive frames }\r\n    { available, and avifDecoderNextImage()/avifDecoderNthImage() will allow for specific layers }\r\n    { of a progressive image to be decoded. To distinguish between a progressive AVIF and an AVIF }\r\n    { image sequence, inspect avifDecoder.progressiveState. }\r\n          allowProgressive : avifBool;\r\n    { Enable any of these to avoid reading and surfacing specific data to the decoded avifImage. }\r\n    { These can be useful if your avifIO implementation heavily uses AVIF_RESULT_WAITING_ON_IO for }\r\n    { streaming data, as some of these payloads are (unfortunately) packed at the end of the file, }\r\n    { which will cause avifDecoderParse() to return AVIF_RESULT_WAITING_ON_IO until it finds them. }\r\n    { If you don't actually leverage this data, it is best to ignore it here. }\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n    { This represents the maximum size of a image (in pixel count) that libavif and the underlying }\r\n    { AV1 decoder should attempt to decode. It defaults to AVIF_DEFAULT_IMAGE_SIZE_LIMIT, and can be }\r\n    { set to a smaller value. The value 0 is reserved. }\r\n    { Note: Only some underlying AV1 codecs support a configurable size limit (such as dav1d). }\r\n          imageSizeLimit : UInt32;\r\n    { This provides an upper bound on how many images the decoder is willing to attempt to decode, }\r\n    { to provide a bit of protection from malicious or malformed AVIFs citing millions upon }\r\n    { millions of frames, only to be invalid later. The default is AVIF_DEFAULT_IMAGE_COUNT_LIMIT }\r\n    { (see comment above), and setting this to 0 disables the limit. }\r\n          imageCountLimit : UInt32;\r\n    { Strict flags. Defaults to AVIF_STRICT_ENABLED. See avifStrictFlag definitions above. }\r\n          strictFlags : avifStrictFlags;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          progressiveState : avifProgressiveState;      { See avifProgressiveState declaration }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;      { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;    { duration in \"timescales\" }\r\n          alphaPresent : avifBool;\r\n    { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n    { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n        end;\r\n\r\n      PavifDecoder0_10_0 = ^avifDecoder0_10_0;\r\n      avifDecoder0_10_0 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n          codecChoice : avifCodecChoice;\r\n          maxThreads : longint;\r\n          requestedSource : avifDecoderSource;\r\n          allowProgressive : avifBool;\r\n    { If this is false, avifDecoderNextImage() will start decoding a frame only after there are     }\r\n    { enough input bytes to decode all of that frame. If this is true, avifDecoder will decode each }\r\n    { subimage or grid cell as soon as possible. The benefits are: grid images may be partially     }\r\n    { displayed before being entirely available, and the overall decoding may finish earlier.       }\r\n    { Must be set before calling avifDecoderNextImage() or avifDecoderNthImage(). }\r\n    { WARNING: Experimental feature. }\r\n          allowIncremental : avifBool;\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n          imageSizeLimit : UInt32;\r\n          imageCountLimit : UInt32;\r\n    { Strict flags. Defaults to AVIF_STRICT_ENABLED. See avifStrictFlag definitions above. }\r\n          strictFlags : avifStrictFlags;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          progressiveState : avifProgressiveState;      { See avifProgressiveState declaration }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;      { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;    { duration in \"timescales\" }\r\n          alphaPresent : avifBool;\r\n    { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n    { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n        end;\r\n\r\n      PavifDecoder0_11_0 = ^avifDecoder0_11_0;\r\n      avifDecoder0_11_0 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n          codecChoice : avifCodecChoice;\r\n          maxThreads : longint;\r\n          requestedSource : avifDecoderSource;\r\n          allowProgressive : avifBool;\r\n    { If this is false, avifDecoderNextImage() will start decoding a frame only after there are     }\r\n    { enough input bytes to decode all of that frame. If this is true, avifDecoder will decode each }\r\n    { subimage or grid cell as soon as possible. The benefits are: grid images may be partially     }\r\n    { displayed before being entirely available, and the overall decoding may finish earlier.       }\r\n    { Must be set before calling avifDecoderNextImage() or avifDecoderNthImage(). }\r\n    { WARNING: Experimental feature. }\r\n          allowIncremental : avifBool;\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n          // This represents the maximum size of an image (in pixel count) that libavif and the underlying\r\n          // AV1 decoder should attempt to decode. It defaults to AVIF_DEFAULT_IMAGE_SIZE_LIMIT, and can\r\n          // be set to a smaller value. The value 0 is reserved.\r\n          // Note: Only some underlying AV1 codecs support a configurable size limit (such as dav1d).\r\n          imageSizeLimit : UInt32;\r\n          // This represents the maximum dimension of an image (width or height) that libavif should\r\n          // attempt to decode. It defaults to AVIF_DEFAULT_IMAGE_DIMENSION_LIMIT. Set it to 0 to ignore\r\n          // the limit.\r\n          imageDimensionLimit: UInt32;\r\n          // This provides an upper bound on how many images the decoder is willing to attempt to decode,\r\n          // to provide a bit of protection from malicious or malformed AVIFs citing millions upon\r\n          // millions of frames, only to be invalid later. The default is AVIF_DEFAULT_IMAGE_COUNT_LIMIT\r\n          // (see comment above), and setting this to 0 disables the limit.\r\n          imageCountLimit : UInt32;\r\n    { Strict flags. Defaults to AVIF_STRICT_ENABLED. See avifStrictFlag definitions above. }\r\n          strictFlags : avifStrictFlags;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          progressiveState : avifProgressiveState;      { See avifProgressiveState declaration }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;      { in seconds (durationInTimescales / timescale) }\r\n          durationInTimescales : UInt64;    { duration in \"timescales\" }\r\n          alphaPresent : avifBool;\r\n    { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n    { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n        end;\r\n\r\n      PavifDecoder1_0_0 = ^avifDecoder1_0_0;\r\n      avifDecoder1_0_0 = record\r\n    { Inputs ------------------------------------------------------------------------------------- }\r\n          codecChoice : avifCodecChoice;\r\n          maxThreads : longint;\r\n          requestedSource : avifDecoderSource;\r\n          allowProgressive : avifBool;\r\n    { If this is false, avifDecoderNextImage() will start decoding a frame only after there are     }\r\n    { enough input bytes to decode all of that frame. If this is true, avifDecoder will decode each }\r\n    { subimage or grid cell as soon as possible. The benefits are: grid images may be partially     }\r\n    { displayed before being entirely available, and the overall decoding may finish earlier.       }\r\n    { Must be set before calling avifDecoderNextImage() or avifDecoderNthImage(). }\r\n    { WARNING: Experimental feature. }\r\n          allowIncremental : avifBool;\r\n          ignoreExif : avifBool;\r\n          ignoreXMP : avifBool;\r\n          // This represents the maximum size of an image (in pixel count) that libavif and the underlying\r\n          // AV1 decoder should attempt to decode. It defaults to AVIF_DEFAULT_IMAGE_SIZE_LIMIT, and can\r\n          // be set to a smaller value. The value 0 is reserved.\r\n          // Note: Only some underlying AV1 codecs support a configurable size limit (such as dav1d).\r\n          imageSizeLimit : UInt32;\r\n          // This represents the maximum dimension of an image (width or height) that libavif should\r\n          // attempt to decode. It defaults to AVIF_DEFAULT_IMAGE_DIMENSION_LIMIT. Set it to 0 to ignore\r\n          // the limit.\r\n          imageDimensionLimit: UInt32;\r\n          // This provides an upper bound on how many images the decoder is willing to attempt to decode,\r\n          // to provide a bit of protection from malicious or malformed AVIFs citing millions upon\r\n          // millions of frames, only to be invalid later. The default is AVIF_DEFAULT_IMAGE_COUNT_LIMIT\r\n          // (see comment above), and setting this to 0 disables the limit.\r\n          imageCountLimit : UInt32;\r\n    { Strict flags. Defaults to AVIF_STRICT_ENABLED. See avifStrictFlag definitions above. }\r\n          strictFlags : avifStrictFlags;\r\n    { Outputs ------------------------------------------------------------------------------------ }\r\n          image : PavifImage;\r\n    { Counts and timing for the current image in an image sequence. Uninteresting for single image files. }\r\n          imageIndex : longint;      { 0-based }\r\n          imageCount : longint;      { Always 1 for non-progressive, non-sequence AVIFs. }\r\n          progressiveState : avifProgressiveState;      { See avifProgressiveState declaration }\r\n          imageTiming : avifImageTiming;      { }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          duration : double;  // duration of a single playback of the image sequence in seconds\r\n                                           // (durationInTimescales / timescale)\r\n          durationInTimescales : UInt64;   // duration of a single playback of the image sequence in \"timescales\"\r\n          repetitionCount: integer;                   // number of times the sequence has to be repeated. This can also be one of\r\n                                                  // AVIF_REPETITION_COUNT_INFINITE or AVIF_REPETITION_COUNT_UNKNOWN. Essentially, if\r\n                                                  // repetitionCount is a non-negative integer `n`, then the image sequence should be\r\n                                                  // played back `n + 1` times.\r\n    // This is true when avifDecoderParse() detects an alpha plane. Use this to find out if alpha is\r\n    // present after a successful call to avifDecoderParse(), but prior to any call to\r\n    // avifDecoderNextImage() or avifDecoderNthImage(), as decoder->image->alphaPlane won't exist yet.\r\n          alphaPresent : avifBool;\r\n    { stats from the most recent read, possibly 0s if reading an image sequence }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Use one of the avifDecoderSetIO*() functions to set this }\r\n          io : PavifIO;\r\n    { Internals used by the decoder }\r\n          data : PavifDecoderData;\r\n\r\n    // Version 1.0.0 ends here. Add any new members after this line.\r\n        end;\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderCreate{$IFDEF LD}: function{$ENDIF}:PavifDecoder;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifDecoderDestroy{$IFDEF LD}: procedure{$ENDIF}(decoder:PavifDecoder);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Simple interfaces to decode a single image, independent of the decoder afterwards (decoder may be destroyed). }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderRead{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder;image:PavifImage):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF} // call avifDecoderSetIO*() first\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderReadMemory{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; image:PavifImage;data:PByte;size:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderReadFile{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder;image:PavifImage;filename:PAnsiChar):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Multi-function alternative to avifDecoderRead() for image sequences and gaining direct access }\r\n    { to the decoder's YUV buffers (for performance's sake). Data passed into avifDecoderParse() is NOT }\r\n    { copied, so it must continue to exist until the decoder is destroyed. }\r\n    { }\r\n    { Usage / function call order is: }\r\n    { * avifDecoderCreate() }\r\n    { * avifDecoderSetSource() - optional, the default (AVIF_DECODER_SOURCE_AUTO) is usually sufficient }\r\n    { * avifDecoderSetIO*() }\r\n    { * avifDecoderParse() }\r\n    { * avifDecoderNextImage() - in a loop, using decoder->image after each successful call }\r\n    { * avifDecoderDestroy() }\r\n    { }\r\n    { NOTE: Until avifDecoderParse() returns AVIF_RESULT_OK, no data in avifDecoder should }\r\n    {       be considered valid, and no queries (such as Keyframe/Timing/MaxExtent) should be made. }\r\n    { }\r\n    { You can use avifDecoderReset() any time after a successful call to avifDecoderParse() }\r\n    { to reset the internal decoder back to before the first frame. Calling either }\r\n    { avifDecoderSetSource() or avifDecoderParse() will automatically Reset the decoder. }\r\n    { }\r\n    { avifDecoderSetSource() allows you not only to choose whether to parse tracks or }\r\n    { items in a file containing both, but switch between sources without having to }\r\n    { Parse again. Normally AVIF_DECODER_SOURCE_AUTO is enough for the common path. }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderSetSource{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder;source:avifDecoderSource):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Note: When avifDecoderSetIO() is called, whether 'decoder' takes ownership of 'io' depends on }\r\n    { whether io->destroy is set. avifDecoderDestroy(decoder) calls avifIODestroy(io), which calls }\r\n    { io->destroy(io) if io->destroy is set. Therefore, if io->destroy is not set, then }\r\n    { avifDecoderDestroy(decoder) has no effects on 'io'. }\r\n\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifDecoderSetIO{$IFDEF LD}: procedure{$ENDIF}(decoder:PavifDecoder;io:PavifIO);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderSetIOMemory{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; data:PByte;size:size_type):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderSetIOFile{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder;filename:PAnsiChar):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderParse{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderNextImage{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderNthImage{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder;frameIndex: UInt32):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderReset{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { Keyframe information }\r\n    { frameIndex - 0-based, matching avifDecoder->imageIndex, bound by avifDecoder->imageCount }\r\n    { \"nearest\" keyframe means the keyframe prior to this frame index (returns frameIndex if it is a keyframe) }\r\n    { These functions may be used after a successful call (AVIF_RESULT_OK) to avifDecoderParse(). }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderIsKeyframe{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; frameindex:UInt32):avifBool;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderNearestKeyframe{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; frameIndex:UInt32):UInt32;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n \r\n    { Timing helper - This does not change the current image or invoke the codec (safe to call repeatedly) }\r\n    { This function may be used after a successful call (AVIF_RESULT_OK) to avifDecoderParse(). }\r\n \r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderNthImageTiming{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; frameIndex:UInt32;outTiming:PavifImageTiming):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n    { --------------------------------------------------------------------------- }\r\n    { avifExtent }\r\ntype\r\n      PavifExtent = ^avifExtent;\r\n      avifExtent = record\r\n          offset : UInt64;\r\n          size : size_type;\r\n        end;\r\n    { Streaming data helper - Use this to calculate the maximal AVIF data extent encompassing all AV1 }\r\n    { sample data needed to decode the Nth image. The offset will be the earliest offset of all }\r\n    { required AV1 extents for this frame, and the size will create a range including the last byte of }\r\n    { the last AV1 sample needed. Note that this extent may include non-sample data, as a frame's }\r\n    { sample data may be broken into multiple extents and interleaved with other data, or in }\r\n    { non-sequential order. This extent will also encompass all AV1 samples that this frame's sample }\r\n    { depends on to decode (such as samples for reference frames), from the nearest keyframe up to this }\r\n    { Nth frame. }\r\n    { }\r\n    { If avifDecoderNthImageMaxExtent() returns AVIF_RESULT_OK and the extent's size is 0 bytes, this }\r\n    { signals that libavif doesn't expect to call avifIO's Read for this frame's decode. This happens if }\r\n    { data for this frame was read as a part of avifDecoderParse() (typically in an idat box inside of }\r\n    { a meta box). }\r\n    { }\r\n    { This function may be used after a successful call (AVIF_RESULT_OK) to avifDecoderParse(). }\r\n\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifDecoderNthImageMaxExtent{$IFDEF LD}: function{$ENDIF}(decoder:PavifDecoder; frameIndex:UInt32;outExtend:PavifExtent):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\ntype\r\n    { --------------------------------------------------------------------------- }\r\n    { avifEncoder }\r\n      PavifEncoderData = ^avifEncoderData;\r\n      avifEncoderData = record\r\n          {undefined structure}\r\n        end;\r\n\r\n      PavifCodecSpecificOptions = ^avifCodecSpecificOptions;\r\n      avifCodecSpecificOptions = record\r\n          {undefined structure}\r\n        end;\r\n\r\n      avifScalingMode = record\r\n         horizontal:avifFraction;\r\n         vertical:avifFraction;\r\n      end;\r\n\r\n    { Notes: }\r\n    // * The avifEncoder struct may be extended in a future release. Code outside the libavif library\r\n    //   must allocate avifEncoder by calling the avifEncoderCreate() function.\r\n    { * If avifEncoderWrite() returns AVIF_RESULT_OK, output must be freed with avifRWDataFree() }\r\n    { * If (maxThreads < 2), multithreading is disabled }\r\n    {   * NOTE: Please see the \"Understanding maxThreads\" comment block above }\r\n    // * Quality range: [AVIF_QUALITY_WORST - AVIF_QUALITY_BEST]\r\n    // * Quantizer range: [AVIF_QUANTIZER_BEST_QUALITY - AVIF_QUANTIZER_WORST_QUALITY]\r\n    // * In older versions of libavif, the avifEncoder struct doesn't have the quality and qualityAlpha\r\n    //   fields. For backward compatibility, if the quality field is not set, the default value of\r\n    //   quality is based on the average of minQuantizer and maxQuantizer. Similarly the default value\r\n    //   of qualityAlpha is based on the average of minQuantizerAlpha and maxQuantizerAlpha. New code\r\n    //   should set quality and qualityAlpha and leave minQuantizer, maxQuantizer, minQuantizerAlpha,\r\n    //   and maxQuantizerAlpha initialized to their default values.\r\n    { * To enable tiling, set tileRowsLog2 > 0 and/or tileColsLog2 > 0. }\r\n    {   Tiling values range [0-6], where the value indicates a request for 2^n tiles in that dimension. }\r\n    {   If autoTiling is set to AVIF_TRUE, libavif ignores tileRowsLog2 and tileColsLog2 and }\r\n    {   automatically chooses suitable tiling values. }\r\n    { * Speed range: [AVIF_SPEED_SLOWEST - AVIF_SPEED_FASTEST]. Slower should make for a better quality }\r\n    {   image in less bytes. AVIF_SPEED_DEFAULT means \"Leave the AV1 codec to its default speed settings\"./ }\r\n    {   If avifEncoder uses rav1e, the speed value is directly passed through (0-10). If libaom is used, }\r\n    {   a combination of settings are tweaked to simulate this speed range. }\r\n    // * Extra layer count: [0 - (AVIF_MAX_AV1_LAYER_COUNT-1)]. Non-zero value indicates a layered\r\n    //   (progressive) image.\r\n    { * Some encoder settings can be changed after encoding starts. Changes will take effect in the next }\r\n    {   call to avifEncoderAddImage(). }\r\n      PavifEncoder = ^avifEncoder;\r\n      avifEncoder = record\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\t  \r\n          codecChoice : avifCodecChoice;\r\n    { settings (see Notes above) }\t\t  \r\n          maxThreads : longint;\r\n          minQuantizer : longint;\r\n          maxQuantizer : longint;\r\n          minQuantizerAlpha : longint;\r\n          maxQuantizerAlpha : longint;\r\n          tileRowsLog2 : longint;\r\n          tileColsLog2 : longint;\r\n          speed : longint;\r\n          keyframeInterval : longint;       { How many frames between automatic forced keyframes; 0 to disable (default). }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n    { stats from the most recent write }\t\t  \r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\t\t  \r\n          diag : avifDiagnostics;\r\n    { Internals used by the encoder }\t\t  \r\n          data : PavifEncoderData;\r\n          csOptions : PavifCodecSpecificOptions;\r\n        end;\r\n\r\n      PavifEncoder0_11_0 = ^avifEncoder0_11_0;\r\n      avifEncoder0_11_0 = record\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\r\n          codecChoice : avifCodecChoice;\r\n    { settings (see Notes above) }\r\n          maxThreads : longint;\r\n          speed : longint;\r\n          keyframeInterval : longint;       { How many frames between automatic forced keyframes; 0 to disable (default). }\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          // changeable encoder settings\r\n          minQuantizer : longint;\r\n          maxQuantizer : longint;\r\n          minQuantizerAlpha : longint;\r\n          maxQuantizerAlpha : longint;\r\n          tileRowsLog2 : longint;\r\n          tileColsLog2 : longint;\r\n          autoTiling : avifBool;\r\n    { stats from the most recent write }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Internals used by the encoder }\r\n          data : PavifEncoderData;\r\n          csOptions : PavifCodecSpecificOptions;\r\n        end;\r\n\r\n      PavifEncoder1_0_0 = ^avifEncoder1_0_0;\r\n      avifEncoder1_0_0 = record\r\n    { Defaults to AVIF_CODEC_CHOICE_AUTO: Preference determined by order in availableCodecs table (avif.c) }\r\n          codecChoice : avifCodecChoice;\r\n    { settings (see Notes above) }\r\n          maxThreads : longint;\r\n          speed : longint;\r\n          keyframeInterval : longint;     // Any set of |keyframeInterval| consecutive frames will have at least one keyframe. When it is 0,\r\n                              // there is no such r estriction.\r\n          timescale : UInt64;      { timescale of the media (Hz) }\r\n          repetitionCount: longint;      // Number of times the image sequence should be repeated. This can also be set to\r\n                                    // AVIF_REPETITION_COUNT_INFINITE for infinite repetitions.  Only applicable for image sequences.\r\n                                    // Essentially, if repetitionCount is a non-negative integer `n`, then the image sequence should be\r\n                                    // played back `n + 1` times. Defaults to AVIF_REPETITION_COUNT_INFINITE.\r\n          extraLayerCount:UInt32; // EXPERIMENTAL: Non-zero value encodes layered image.\r\n\r\n          // changeable encoder settings\r\n          quality: longint;\r\n          qualityAlpha: longint;\r\n          minQuantizer : longint;\r\n          maxQuantizer : longint;\r\n          minQuantizerAlpha : longint;\r\n          maxQuantizerAlpha : longint;\r\n          tileRowsLog2 : longint;\r\n          tileColsLog2 : longint;\r\n          autoTiling : avifBool;\r\n          scalingMode:avifScalingMode;\r\n    { stats from the most recent write }\r\n          ioStats : avifIOStats;\r\n    { Additional diagnostics (such as detailed error state) }\r\n          diag : avifDiagnostics;\r\n    { Internals used by the encoder }\r\n          data : PavifEncoderData;\r\n          csOptions : PavifCodecSpecificOptions;\r\n\r\n       // Version 1.0.0 ends here. Add any new members after this line.\r\n        end;\r\n\r\n// avifEncoderCreate() returns NULL if a memory allocation failed.\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderCreate{$IFDEF LD}: function{$ENDIF}:PavifEncoder;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderWrite{$IFDEF LD}: function{$ENDIF}(encoder:PavifEncoder;image:PavifImage;output:PavifRWData):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}procedure{$ENDIF} avifEncoderDestroy{$IFDEF LD}: procedure{$ENDIF}(encoder:PavifEncoder);cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\ntype\r\n    { Force this frame to be a keyframe (sync frame). }\r\n      // Use this flag when encoding a single frame, single layer image.\r\n      // Signals \"still_picture\" to AV1 encoders, which tweaks various compression rules.\r\n      // This is enabled automatically when using the avifEncoderWrite() single-image encode path.\r\n      PavifAddImageFlag = ^avifAddImageFlag;\r\n      avifAddImageFlag = (AVIF_ADD_IMAGE_FLAG_NONE := 0,AVIF_ADD_IMAGE_FLAG_FORCE_KEYFRAME := 1 shl 0,\r\n        AVIF_ADD_IMAGE_FLAG_SINGLE := 1 shl 1);\r\n\r\n      PavifAddImageFlags = ^avifAddImageFlags;\r\n      avifAddImageFlags = UInt32;\r\n{ Multi-function alternative to avifEncoderWrite() for advanced features. }\r\n{ }\r\n{ Usage / function call order is: }\r\n{ * avifEncoderCreate() }\r\n// - Still image:\r\n//   * avifEncoderAddImage() [exactly once]\r\n// - Still image grid:\r\n//   * avifEncoderAddImageGrid() [exactly once, AVIF_ADD_IMAGE_FLAG_SINGLE is assumed]\r\n// - Image sequence:\r\n//   * Set encoder->timescale (Hz) correctly\r\n//   * avifEncoderAddImage() ... [repeatedly; at least once]\r\n// - Still layered image:\r\n//   * Set encoder->extraLayerCount correctly\r\n//   * avifEncoderAddImage() ... [exactly encoder->extraLayerCount+1 times]\r\n// - Still layered grid:\r\n//   * Set encoder->extraLayerCount correctly\r\n//   * avifEncoderAddImageGrid() ... [exactly encoder->extraLayerCount+1 times]\r\n{ * avifEncoderDestroy() }\r\n\r\n// The image passed to avifEncoderAddImage() or avifEncoderAddImageGrid() is encoded during the\r\n// call (which may be slow) and can be freed after the function returns.\r\n\r\n// durationInTimescales is ignored if AVIF_ADD_IMAGE_FLAG_SINGLE is set in addImageFlags,\r\n// or if we are encoding a layered image.\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderAddImage{$IFDEF LD}: function{$ENDIF}(encoder:PavifEncoder; image:PavifImage;durationInTimescales:UInt64;addImageFlags:avifAddImageFlags):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderAddImageGrid{$IFDEF LD}: function{$ENDIF}(encoder:PavifEncoder;\r\n                                            gridCols:UInt32;\r\n                                            gridRows:UInt32;\r\n                                            cellImages:PPavifImage;\r\n                                            addImageFlags:avifAddImageFlags):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderFinish{$IFDEF LD}: function{$ENDIF}(encoder:PavifEncoder; output:PavifRWData):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n{ Codec-specific, optional \"advanced\" tuning settings, in the form of string key/value pairs, }\r\n{ to be consumed by the codec in the next avifEncoderAddImage() call. }\r\n{ See the codec documentation to know if a setting is persistent or applied only to the next frame. }\r\n{ key must be non-NULL, but passing a NULL value will delete the pending key, if it exists. }\r\n{ Setting an incorrect or unknown option for the current codec will cause errors of type }\r\n{ AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION from avifEncoderWrite() or avifEncoderAddImage(). }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifEncoderSetCodecSpecificOption{$IFDEF LD}: function{$ENDIF}(encoder:PavifEncoder;key:PAnsiChar;value:PAnsiChar):avifResult;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n{ Helpers }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifImageUsesU16{$IFDEF LD}: function{$ENDIF}(image:PavifImage):avifBool;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\n//TODO:\r\n{\r\nAVIF_API avifBool avifImageIsOpaque(const avifImage * image);\r\n// channel can be an avifChannelIndex.\r\nAVIF_API uint8_t * avifImagePlane(const avifImage * image, int channel);\r\nAVIF_API uint32_t avifImagePlaneRowBytes(const avifImage * image, int channel);\r\nAVIF_API uint32_t avifImagePlaneWidth(const avifImage * image, int channel);\r\nAVIF_API uint32_t avifImagePlaneHeight(const avifImage * image, int channel);\r\n}\r\n\r\n{ Returns AVIF_TRUE if input begins with a valid FileTypeBox (ftyp) that supports }\r\n{ either the brand 'avif' or 'avis' (or both), without performing any allocations. }\r\n{$IFDEF LD}var{$ELSE}function{$ENDIF} avifPeekCompatibleFileType{$IFDEF LD}: function{$ENDIF}(input:PavifROData):avifBool ;cdecl;{$IFNDEF LD}external LibAvifFilename;{$ENDIF}\r\n\r\nfunction LibAvifLoaded : boolean;\r\nFunction LibAvifLoad(const libfilename:string = ''): boolean; // load the lib\r\nProcedure LibAvifUnload; // unload and frees the lib from memory : do not forget to call it before close application.\r\n\r\nimplementation\r\n{$IFDEF LOAD_DYNAMICALLY}\r\n\r\nuses\r\n    SysUtils, Classes, DynLibs{$ifdef linux}, linuxlib{$endif}{$ifdef darwin}, darwinlib{$endif};\r\nvar\r\n  LibAvifHandle: TLibHandle = dynlibs.NilHandle; // this will hold our handle for the lib; it functions nicely as a mutli-lib prevention unit as well...\r\n  LibAvifRefCount : LongWord = 0;  // Reference counter\r\n\r\n\r\nfunction LibAvifLoaded: boolean;\r\nbegin\r\n  Result := (LibAvifHandle <> dynlibs.NilHandle);\r\nend;\r\n\r\nprocedure LibAvifRetreiveVersion;\r\nvar version: TStringList;\r\nbegin\r\n  version := TStringList.Create;\r\n  version.Delimiter:= '.';\r\n  version.DelimitedText:= string(avifVersion());\r\n  AVIF_VERSION_MAJOR := StrToInt(version[0]);\r\n  if version.Count >= 2 then AVIF_VERSION_MINOR := StrToInt(version[1]) else\r\n    AVIF_VERSION_MINOR := 0;\r\n  if version.Count >= 3 then AVIF_VERSION_PATCH := StrToInt(version[2]) else\r\n    AVIF_VERSION_PATCH := 0;\r\n  AVIF_VERSION := AVIF_VERSION_MAJOR * 1000000 + AVIF_VERSION_MINOR * 10000 + AVIF_VERSION_PATCH * 100;\r\n  version.Free;\r\nend;\r\n\r\nFunction LibAvifLoad (const libfilename:string) :boolean;\r\nvar\r\n  thelib: string;\r\nbegin\r\n  Result := False;\r\n  if LibAvifHandle<>0 then\r\n  begin\r\n   Inc(LibAvifRefCount);\r\n   result:=true {is it already there ?}\r\n  end else\r\n  begin {go & load the library}\r\n    if libfilename <> '' then\r\n    begin\r\n      thelib := libfilename;\r\n      if Pos(DirectorySeparator, thelib)=0 then\r\n        thelib := ExtractFilePath(ParamStr(0)) + DirectorySeparator + thelib;\r\n      LibAvifHandle := DynLibs.SafeLoadLibrary(libfilename); // obtain the handle we want\r\n    end else\r\n    begin\r\n      {$ifdef linux}thelib := FindLinuxLibrary(LibAvifFilename);{$else}\r\n      {$ifdef darwin}thelib := FindDarwinLibrary(LibAvifFilename);{$else}\r\n      thelib := ExtractFilePath(ParamStr(0)) + DirectorySeparator + LibAvifFilename;\r\n      {$endif}{$endif}\r\n      if thelib <> '' then\r\n        LibAvifHandle := DynLibs.SafeLoadLibrary(thelib); // obtain the handle we want\r\n    end;\r\n    if LibAvifHandle <> DynLibs.NilHandle then\r\n    begin {now we tie the functions to the VARs from above}\r\n      Pointer(avifAlloc):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifAlloc'));\r\n      Pointer(avifCleanApertureBoxConvertCropRect):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifCleanApertureBoxConvertCropRect'));\r\n      Pointer(avifCodecChoiceFromName):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifCodecChoiceFromName'));\r\n      Pointer(avifCodecName):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifCodecName'));\r\n      Pointer(avifCodecVersions):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifCodecVersions'));\r\n      Pointer(avifColorPrimariesFind):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifColorPrimariesFind'));\r\n      Pointer(avifColorPrimariesGetValues):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifColorPrimariesGetValues'));\r\n      Pointer(avifCropRectConvertCleanApertureBox):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifCropRectConvertCleanApertureBox'));\r\n      Pointer(avifDecoderCreate):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderCreate'));\r\n      Pointer(avifDecoderDestroy):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderDestroy'));\r\n      Pointer(avifDecoderIsKeyframe):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderIsKeyframe'));\r\n      Pointer(avifDecoderNearestKeyframe):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderNearestKeyframe'));\r\n      Pointer(avifDecoderNextImage):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderNextImage'));\r\n      Pointer(avifDecoderNthImage):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderNthImage'));\r\n      Pointer(avifDecoderNthImageMaxExtent):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderNthImageMaxExtent'));\r\n      Pointer(avifDecoderNthImageTiming):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderNthImageTiming'));\r\n      Pointer(avifDecoderParse):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderParse'));\r\n      Pointer(avifDecoderRead):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderRead'));\r\n      Pointer(avifDecoderReadFile):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderReadFile'));\r\n      Pointer(avifDecoderReadMemory):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderReadMemory'));\r\n      Pointer(avifDecoderReset):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderReset'));\r\n      Pointer(avifDecoderSetIO):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderSetIO'));\r\n      Pointer(avifDecoderSetIOFile):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderSetIOFile'));\r\n      Pointer(avifDecoderSetIOMemory):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderSetIOMemory'));\r\n      Pointer(avifDecoderSetSource):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDecoderSetSource'));\r\n      Pointer(avifDiagnosticsClearError):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifDiagnosticsClearError'));\r\n      Pointer(avifEncoderAddImage):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderAddImage'));\r\n      Pointer(avifEncoderAddImageGrid):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderAddImageGrid'));\r\n      Pointer(avifEncoderCreate):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderCreate'));\r\n      Pointer(avifEncoderDestroy):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderDestroy'));\r\n      Pointer(avifEncoderFinish):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderFinish'));\r\n      Pointer(avifEncoderSetCodecSpecificOption):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderSetCodecSpecificOption'));\r\n      Pointer(avifEncoderWrite):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifEncoderWrite'));\r\n      Pointer(avifFree):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifFree'));\r\n      Pointer(avifFullToLimitedUV):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifFullToLimitedUV'));\r\n      Pointer(avifFullToLimitedY):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifFullToLimitedY'));\r\n      Pointer(avifGetPixelFormatInfo):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifGetPixelFormatInfo'));\r\n      Pointer(avifImageAllocatePlanes):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageAllocatePlanes'));\r\n      Pointer(avifImageCopy):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageCopy'));\r\n      Pointer(avifImageCreate):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageCreate'));\r\n      Pointer(avifImageCreateEmpty):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageCreateEmpty'));\r\n      Pointer(avifImageDestroy):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageDestroy'));\r\n      Pointer(avifImageFreePlanes):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageFreePlanes'));\r\n      Pointer(avifImageRGBToYUV):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageRGBToYUV'));\r\n      Pointer(avifImageSetMetadataExif):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageSetMetadataExif'));\r\n      Pointer(avifImageSetMetadataXMP):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageSetMetadataXMP'));\r\n      Pointer(avifImageSetProfileICC):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageSetProfileICC'));\r\n      Pointer(avifImageStealPlanes):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageStealPlanes'));\r\n      Pointer(avifImageUsesU16):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageUsesU16'));\r\n      Pointer(avifImageYUVToRGB):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifImageYUVToRGB'));\r\n      Pointer(avifIOCreateFileReader):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifIOCreateFileReader'));\r\n      Pointer(avifIOCreateMemoryReader):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifIOCreateMemoryReader'));\r\n      Pointer(avifIODestroy):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifIODestroy'));\r\n      Pointer(avifLibYUVVersion):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifLibYUVVersion'));\r\n      Pointer(avifLimitedToFullUV):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifLimitedToFullUV'));\r\n      Pointer(avifLimitedToFullY):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifLimitedToFullY'));\r\n      Pointer(avifPeekCompatibleFileType):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifPeekCompatibleFileType'));\r\n      Pointer(avifPixelFormatToString):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifPixelFormatToString'));\r\n      Pointer(avifProgressiveStateToString):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifProgressiveStateToString'));\r\n      Pointer(avifResultToString):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifResultToString'));\r\n      Pointer(avifRGBFormatChannelCount):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBFormatChannelCount'));\r\n      Pointer(avifRGBFormatHasAlpha):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBFormatHasAlpha'));\r\n      Pointer(avifRGBImageAllocatePixels):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImageAllocatePixels'));\r\n      Pointer(avifRGBImageFreePixels):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImageFreePixels'));\r\n      Pointer(avifRGBImagePixelSize):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImagePixelSize'));\r\n      Pointer(avifRGBImagePremultiplyAlpha):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImagePremultiplyAlpha'));\r\n      Pointer(avifRGBImageSetDefaults):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImageSetDefaults'));\r\n      Pointer(avifRGBImageUnpremultiplyAlpha):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRGBImageUnpremultiplyAlpha'));\r\n      Pointer(avifRWDataFree):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRWDataFree'));\r\n      Pointer(avifRWDataRealloc):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRWDataRealloc'));\r\n      Pointer(avifRWDataSet):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifRWDataSet'));\r\n      Pointer(avifVersion):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifVersion'));\r\n      {$ifdef ONLY_USE_VERSION_EQUAL_OR_GREATHER_THAN_1}\r\n        Pointer(avifGetExifTiffHeaderOffset):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifGetExifTiffHeaderOffset'));\r\n        Pointer(avifGetExifOrientationOffset):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifGetExifOrientationOffset'));\r\n        Pointer(avifTransferCharacteristicsGetGamma):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifTransferCharacteristicsGetGamma'));\r\n        Pointer(avifTransferCharacteristicsFindByGamma):=DynLibs.GetProcedureAddress(LibAvifHandle,PAnsiChar('avifTransferCharacteristicsFindByGamma'));\r\n      {$endif}\r\n      LibAvifRetreiveVersion;\r\n    end;\r\n    Result := LibAvifLoaded;\r\n    LibAvifRefCount:=1;\r\n  end;\r\nend;\r\n\r\nProcedure LibAvifUnload;\r\nbegin\r\n  // < Reference counting\r\n  if LibAvifRefCount > 0 then\r\n    dec(LibAvifRefCount);\r\n  if LibAvifRefCount > 0 then\r\n    exit;\r\n  // >\r\n  if LibAvifLoaded then\r\n  begin\r\n    DynLibs.UnloadLibrary(LibAvifHandle);\r\n    LibAvifHandle:=DynLibs.NilHandle;\r\n  end;\r\nend;\r\n{$ELSE}\r\nfunction LibAvifLoaded: boolean;\r\nbegin\r\n  result:=true;\r\nend;\r\nfunction LibAvifLoad (const libfilename:string) :boolean;\r\nbegin\r\n  //do nothing\r\nend;\r\n\r\nprocedure LibAvifUnload;\r\nbegin\r\n  //do nothing\r\nend;\r\n{$ENDIF}\r\n\r\nend.\r\n"
  },
  {
    "path": "bgrabitmap/libwebp.pas",
    "content": "{ Dynamic loader for libwebp library that reads and writes the WebP format }\nunit libwebp;\n\n// Copyright 2010 Google Inc.\n//\n// This code is licensed under the same terms as WebM:\n//  Software License Agreement:  http://www.webmproject.org/license/software/\n//  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/\n//\n//  Delphi API by Henri Gourvest <hgourvest@gmail.com>\n// -----------------------------------------------------------------------------\n// This is the dynamic loader version of libwebp.pas by fredvs\n\n{$ALIGN ON}\n{$MINENUMSIZE 4}\n{$mode objfpc}\n\ninterface\n\nuses\n  dynlibs;\n\nvar\n  {$ifdef windows}\n  AlternateLibWebPFilename : string = 'libwebp.dll';\n  {$endif}\n  LibWebPFilename : string =\n  {$if defined(Win32)}\n    'libwebp32.dll'\n  {$elseif defined(Win64)}\n    'libwebp64.dll'\n  {$elseif defined(Darwin)}\n    'libwebp.6.dylib'\n  {$elseif defined(Unix)}\n    'libwebp.so.6'\n  {$else}\n    ''\n  {$endif};\n\n\n//-----------------------------------------------------------------------------\n\ntype\n// Output colorspaces\n  WEBP_CSP_MODE = (\n    MODE_RGB = 0,\n    MODE_RGBA = 1,\n    MODE_BGR = 2,\n    MODE_BGRA = 3,\n    MODE_YUV = 4);\n\n// Enumeration of the status codes\n  TVP8StatusCode = (\n    VP8_STATUS_OK = 0,\n    VP8_STATUS_OUT_OF_MEMORY,\n    VP8_STATUS_INVALID_PARAM,\n    VP8_STATUS_BITSTREAM_ERROR,\n    VP8_STATUS_UNSUPPORTED_FEATURE,\n    VP8_STATUS_SUSPENDED,\n    VP8_STATUS_USER_ABORT,\n    VP8_STATUS_NOT_ENOUGH_DATA\n  );\n\n  TDecState = (\n    STATE_HEADER = 0,\n    STATE_PARTS0 = 1,\n    STATE_DATA = 2,\n    STATE_DONE = 3,\n    STATE_ERROR = 4);\n\n  // Decoding output parameters.\n  PWebPDecParams = ^TWebPDecParams;\n  TWebPDecParams = record\n    output: PByte;              // rgb(a) or luma\n    u, v: PByte;                // chroma u/v\n    top_y, top_u, top_v: PByte; // cache for the fancy upscaler\n    stride: Integer;            // rgb(a) stride or luma stride\n    u_stride: Integer;          // chroma-u stride\n    v_stride: Integer;          // chroma-v stride\n    mode: WEBP_CSP_MODE;        // rgb(a) or yuv\n    last_y: Integer;            // coordinate of the line that was last output\n    output_size: Integer;       // size of 'output' buffer\n    output_u_size: Integer;     // size of 'u' buffer\n    output_v_size: Integer;     // size of 'v' buffer\n    external_buffer: Integer;   // If true, the output buffers are externally owned\n  end;\n\n  PWebPIDecoder = ^TWebPIDecoder;\n  TWebPIDecoder = record\n    state_: TDecState;         // current decoding state\n    w_, h_: integer;           // width and height\n    params_: TWebPDecParams;   // Params to store output info\n    dec_: Pointer;\n  end;\n\n  // Input / Output\n  PVP8Io = ^VP8Io;\n  VP8Io = record\n    // set by VP8GetHeaders()\n    width, height: Integer;    // picture dimensions, in pixels\n\n    // set before calling put()\n    mb_y: Integer;                  // position of the current rows (in pixels)\n    mb_h: Integer;                  // number of rows in the sample\n    y, u, v: PByte;                 // rows to copy (in yuv420 format)\n    y_stride: Integer;              // row stride for luma\n    uv_stride: Integer;             // row stride for chroma\n\n    opaque: Pointer;              // user data\n\n    // called when fresh samples are available. Currently, samples are in\n    // YUV420 format, and can be up to width x 24 in size (depending on the\n    // in-loop filtering level, e.g.). Should return false in case of error\n    // or abort request.\n    put: function(const io: PVP8Io): Integer; cdecl;\n\n    // called just before starting to decode the blocks.\n    // Should returns 0 in case of error.\n    setup: function(io: PVP8Io): Integer; cdecl;\n\n    // called just after block decoding is finished (or when an error occurred).\n    teardown: procedure(const io: PVP8Io); cdecl;\n\n    // this is a recommendation for the user-side yuv->rgb converter. This flag\n    // is set when calling setup() hook and can be overwritten by it. It then\n    // can be taken into consideration during the put() method.\n    fancy_upscaling: Integer;\n\n    // Input buffer.\n    data_size: LongWord;\n    data: PByte;\n\n    // If true, in-loop filtering will not be performed even if present in the\n    // bitstream. Switching off filtering may speed up decoding at the expense\n    // of more visible blocking. Note that output will also be non-compliant\n    // with the VP8 specifications.\n    bypass_filtering: Integer;\n  end;\n\n  // Main decoding object. This is an opaque structure.\n  PVP8Decoder = ^VP8Decoder;\n  VP8Decoder = record end;\n\n//-----------------------------------------------------------------------------\n// Coding parameters\n\n  PWebPConfig = ^TWebPConfig;\n  TWebPConfig = record\n    quality: Single;            // between 0 (smallest file) and 100 (biggest)\n    target_size: Integer;       // if non-zero, set the desired target size in bytes.\n                                // Takes precedence over the 'compression' parameter.\n    target_PSNR: Single;        // if non-zero, specifies the minimal distortion to\n                                // try to achieve. Takes precedence over target_size.\n    method: Integer;            // quality/speed trade-off (0=fast, 6=slower-better)\n    segments: Integer;          // maximum number of segments to use, in [1..4]\n    sns_strength: Integer;      // Spatial Noise Shaping. 0=off, 100=maximum.\n    filter_strength: Integer;   // range: [0 = off .. 100 = strongest]\n    filter_sharpness: Integer;  // range: [0 = off .. 7 = least sharp]\n    filter_type: Integer;       // filtering type: 0 = simple, 1 = strong\n                                // (only used if filter_strength > 0 or autofilter > 0)\n    autofilter: Integer;        // Auto adjust filter's strength [0 = off, 1 = on]\n    pass: Integer;              // number of entropy-analysis passes (in [1..10]).\n\n    show_compressed: Integer;   // if true, export the compressed picture back.\n                                // In-loop filtering is not applied.\n    preprocessing: Integer;     // preprocessing filter (0=none, 1=segment-smooth)\n    partitions: Integer;        // log2(number of token partitions) in [0..3]\n                                // Default is set to 0 for easier progressive decoding.\n  end;\n\n// Enumerate some predefined settings for WebPConfig, depending on the type\n// of source picture. These presets are used when calling WebPConfigPreset().\n  TWebPPreset = (\n    WEBP_PRESET_DEFAULT = 0,  // default preset.\n    WEBP_PRESET_PICTURE,      // digital picture, like portrait, inner shot\n    WEBP_PRESET_PHOTO,        // outdoor photograph, with natural lighting\n    WEBP_PRESET_DRAWING,      // hand or line drawing, with high-contrast details\n    WEBP_PRESET_ICON,         // small-sized colorful images\n    WEBP_PRESET_TEXT          // text-like\n  );\n\n  PWebPPicture = ^TWebPPicture;\n  //TWebPPicture = record end; // main structure for I/O\n\n  // non-essential structure for storing auxilliary statistics\n  PWebPAuxStats = ^TWebPAuxStats;\n  TWebPAuxStats = record\n    PSNR: array[0..3] of Single;                   // peak-signal-to-noise ratio for Y/U/V/All\n    coded_size: Integer;                           // final size\n    block_count: array[0..2] of Integer;           // number of intra4/intra16/skipped macroblocks\n    header_bytes: array[0..1] of Integer;          // approximative number of bytes spent for header\n                                                   // and mode-partition #0\n    residual_bytes: array[0..2, 0..3] of Integer;  // approximative number of bytes spent for\n                                                   // DC/AC/uv coefficients for each (0..3) segments.\n    segment_size: array[0..3] of Integer;          // number of macroblocks in each segments\n    segment_quant: array[0..3] of Integer;         // quantizer values for each segments\n    segment_level: array[0..3] of Integer;         // filtering strength for each segments [0..63]\n  end;\n\n  // Signature for output function. Should return 1 if writing was successful.\n  // data/data_size is the segment of data to write, and 'picture' is for\n  // reference (and so one can make use of picture->custom_ptr).\n  TWebPWriterFunction = function(const data: PByte; data_size: LongWord;\n    const picture: PWebPPicture): Integer; cdecl;\n\n  TWebPPicture = record\n    // input\n    colorspace: Integer;            // colorspace: should be 0 for now (=Y'CbCr).\n    width, height: Integer;         // dimensions.\n    y, u, v: PByte;                 // pointers to luma/chroma planes.\n    y_stride, uv_stride: Integer;   // luma/chroma strides.\n    a: PByte;                       // pointer to the alpha plane (unused for now).\n\n    // output\n    writer: TWebPWriterFunction ;   // can be NULL\n    custom_ptr: Pointer;            // can be used by the writer.\n\n    // map for extra information\n    extra_info_type: Integer;    // 1: intra type, 2: segment, 3: quant\n                                 // 4: intra-16 prediction mode,\n                                 // 5: chroma prediction mode,\n                                 // 6: bit cost, 7: distortion\n    extra_info: PByte;           // if not NULL, points to an array of size\n                                 // ((width + 15) / 16) * ((height + 15) / 16) that\n                                 // will be filled with a macroblock map, depending\n                                 // on extra_info_type.\n\n    // where to store statistics, if not NULL:\n    stats: PWebPAuxStats;\n  end;\n\n\n(******************************************************************************\n  decode.h\n  Main decoding functions for WEBP images.\n ******************************************************************************)\n // Dynamic load : Vars that will hold our dynamically loaded functions...\n\n\n// *************************** functions *******************************\nvar\n\n// Return the decoder's version number, packed in hexadecimal using 8bits for\n// each of major/minor/revision. E.g: v2.5.7 is 0x020507.\nWebPGetDecoderVersion: function(): Integer; cdecl;\n\n// Retrieve basic header information: width, height.\n// This function will also validate the header and return 0 in\n// case of formatting error.\n// Pointers *width/*height can be passed NULL if deemed irrelevant.\nWebPGetInfo: function(const data: PByte; data_size: LongWord;\n  width, height: PInteger): Integer; cdecl;\n\n// Decodes WEBP images pointed to by *data and returns RGB samples, along\n// with the dimensions in *width and *height.\n// The returned pointer should be deleted calling free().\n// Returns NULL in case of error.\nWebPDecodeRGB: function(const data: PByte; data_size: LongWord;\n  width, height: PInteger): PByte; cdecl;\n\n// Same as WebPDecodeRGB, but returning RGBA data.\nWebPDecodeRGBA: function(const data: PByte; data_size: LongWord;\n  width, height: PInteger): PByte; cdecl;\n\n// This variant decode to BGR instead of RGB.\nWebPDecodeBGR: function(const data: PByte; data_size: LongWord;\n  width, height: PInteger): PByte; cdecl;\n// This variant decodes to BGRA instead of RGBA.\nWebPDecodeBGRA: function(const data: PByte; data_size: LongWord;\n  width, height: PInteger): PByte; cdecl;\n\n// Decode WEBP images stored in *data in Y'UV format(*). The pointer returned is\n// the Y samples buffer. Upon return, *u and *v will point to the U and V\n// chroma data. These U and V buffers need NOT be free()'d, unlike the returned\n// Y luma one. The dimension of the U and V planes are both (*width + 1) / 2\n// and (*height + 1)/ 2.\n// Upon return, the Y buffer has a stride returned as '*stride', while U and V\n// have a common stride returned as '*uv_stride'.\n// Return NULL in case of error.\n// (*) Also named Y'CbCr. See: http://en.wikipedia.org/wiki/YCbCr\nWebPDecodeYUV: function(const data: PByte; data_size: LongWord; width, height: PInteger;\n  var u, v: PByte; stride, uv_stride: PInteger): PByte; cdecl;\n\n// Releases memory returned by the WebPDecode*() functions above.\nWebPFree: procedure(const data: PByte); cdecl;\n\n// These three functions are variants of the above ones, that decode the image\n// directly into a pre-allocated buffer 'output_buffer'. The maximum storage\n// available in this buffer is indicated by 'output_buffer_size'. If this\n// storage is not sufficient (or an error occurred), NULL is returned.\n// Otherwise, output_buffer is returned, for convenience.\n// The parameter 'output_stride' specifies the distance (in bytes)\n// between scanlines. Hence, output_buffer_size is expected to be at least\n// output_stride x picture-height.\nWebPDecodeRGBInto: function(const data: PByte; data_size: LongWord;\n  output_buffer: PByte; output_buffer_size, output_stride: Integer): PByte; cdecl;\n\nWebPDecodeRGBAInto: function(const data: PByte; data_size: LongWord;\n  output_buffer: PByte; output_buffer_size, output_stride: Integer): PByte; cdecl;\n\n// BGR variants\nWebPDecodeBGRInto: function(const data: PByte; data_size: LongWord;\n  output_buffer: PByte; output_buffer_size, output_stride: Integer): PByte; cdecl;\n\nWebPDecodeBGRAInto: function(const data: PByte; data_size: LongWord;\n  output_buffer: PByte; output_buffer_size, output_stride: Integer): PByte; cdecl;\n\n// WebPDecodeYUVInto() is a variant of WebPDecodeYUV() that operates directly\n// into pre-allocated luma/chroma plane buffers. This function requires the\n// strides to be passed: one for the luma plane and one for each of the\n// chroma ones. The size of each plane buffer is passed as 'luma_size',\n// 'u_size' and 'v_size' respectively.\n// Pointer to the luma plane ('*luma') is returned or NULL if an error occurred\n// during decoding (or because some buffers were found to be too small).\nWebPDecodeYUVInto: function(const data: PByte; data_size: LongWord;\n                           luma: PByte; luma_size, luma_stride: Integer;\n                           u: PByte; u_size, u_stride: Integer;\n                           v: PByte; v_size, v_stride: Integer): PByte; cdecl;\n\n//-----------------------------------------------------------------------------\n// Incremental decoding\n//\n//  This API allows streamlined decoding of partial data.\n//  Picture can be incrementally decoded as data become available thanks to the\n// WebPIDecoder object. This object can be left in a SUSPENDED state if the\n// picture is only partially decoded, pending additional input.\n// Code example:\n//\n//   WebPIDecoder* const idec = WebPINew(mode);\n//   while (has_more_data) {\n//     // ... (get additional data)\n//     status = WebPIAppend(idec, new_data, new_data_size);\n//     if (status != VP8_STATUS_SUSPENDED ||\n//       break;\n//     }\n//\n//     // The above call decodes the current available buffer.\n//     // Part of the image can now be refreshed by calling to\n//     // WebPIDecGetRGB()/WebPIDecGetYUV() etc.\n//   }\n//   WebPIDelete(idec);\n\n// Creates a WebPIDecoder object. Returns NULL in case of failure.\nWebPINew: function(mode: WEBP_CSP_MODE): PWebPIDecoder; cdecl;\n\n// This function allocates and initializes an incremental-decoder object, which\n// will output the r/g/b(/a) samples specified by 'mode' into a preallocated\n// buffer 'output_buffer'. The size of this buffer is at least\n// 'output_buffer_size' and the stride (distance in bytes between two scanlines)\n// is specified by 'output_stride'. Returns NULL if the allocation failed.\nWebPINewRGB: function(mode: WEBP_CSP_MODE; output_buffer: PByte;\n  output_buffer_size, output_stride: Integer): PWebPIDecoder; cdecl;\n\n// This function allocates and initializes an incremental-decoder object, which\n// will output the raw luma/chroma samples into a preallocated planes. The luma\n// plane is specified by its pointer 'luma', its size 'luma_size' and its stride\n// 'luma_stride'. Similarly, the chroma-u plane is specified by the 'u',\n// 'u_size' and 'u_stride' parameters, and the chroma-v plane by 'v', 'v_size'\n// and 'v_size'.\n// Returns NULL if the allocation failed.\nWebPINewYUV: function(luma: PByte; luma_size, luma_stride: Integer;\n                          u: PByte; u_size, u_stride: Integer;\n                          v: PByte; v_size, v_stride: Integer): PWebPIDecoder; cdecl;\n\n// Deletes the WebpBuffer object and associated memory. Must always be called\n// if WebPINew, WebPINewRGB or WebPINewYUV succeeded.\nWebPIDelete: procedure(const idec: PWebPIDecoder); cdecl;\n\n// Copies and decodes the next available data. Returns VP8_STATUS_OK when\n// the image is successfully decoded. Returns VP8_STATUS_SUSPENDED when more\n// data is expected. Returns error in other cases.\nWebPIAppend: function(const idec: PWebPIDecoder; const data: PByte;\n  data_size: LongWord): TVP8StatusCode; cdecl;\n\n// A variant of the above function to be used when data buffer contains\n// partial data from the beginning. In this case data buffer is not copied\n// to the internal memory.\n// Note that the value of the 'data' pointer can change between calls to\n// WebPIUpdate, for instance when the data buffer is resized to fit larger data.\nWebPIUpdate: function(const idec: PWebPIDecoder; const data: PByte;\n  data_size: LongWord): TVP8StatusCode; cdecl;\n\n// Returns the RGB image decoded so far. Returns NULL if output params are not\n// initialized yet. *last_y is the index of last decoded row in raster scan\n// order. Some pointers (*last_y, *width etc.) can be NULL if corresponding\n// information is not needed.\nWebPIDecGetRGB: function(const idec: PWebPIDecoder; last_y, width,\n  height, stride: PInteger): PByte; cdecl;\n\n// Same as above function to get YUV image. Returns pointer to the luma plane\n// or NULL in case of error.\nWebPIDecGetYUV: function(const idec: PWebPIDecoder; last_y: PInteger;\n  var u, v: PByte; width, height, stride, uv_stride: PInteger): PByte; cdecl;\n\n(******************************************************************************\n  WebP encoder: main interface\n ******************************************************************************)\n\n// Return the encoder's version number, packed in hexadecimal using 8bits for\n// each of major/minor/revision. E.g: v2.5.7 is 0x020507.\nWebPGetEncoderVersion: function(): Integer; cdecl;\n\n//-----------------------------------------------------------------------------\n// One-stop-shop call! No questions asked:\n\n// Returns the size of the compressed data (pointed to by *output), or 0 if\n// an error occurred. The compressed data must be released by the caller\n// using the call 'WebPFree(*output)'.\n// These functions compress using the lossy format, and the quality_factor\n// can go from 0 (smaller output, lower quality) to 100 (best quality,\n// larger output).\n\nWebPEncodeRGB: function(const rgb: PByte; width, height, stride: Integer;\n  quality_factor: single; var output: PByte): LongWord; cdecl;\n\nWebPEncodeBGR: function(const bgr: PByte; width, height, stride: Integer;\n  quality_factor: Single; var output: PByte): LongWord; cdecl;\n\nWebPEncodeRGBA: function(const rgba: PByte; width, height, stride: Integer;\n  quality_factor: Single; var output: PByte): LongWord; cdecl;\n\nWebPEncodeBGRA: function(const bgra: PByte; width, height, stride: Integer;\n  quality_factor: Single; var output: PByte): LongWord; cdecl;\n\n// These functions are the equivalent of the above, but compressing in a\n// lossless manner. Files are usually larger than lossy format, but will\n// not suffer any compression loss.\n// Note these functions, like the lossy versions, use the library's default\n// settings. For lossless this means 'exact' is disabled. RGB values in\n// transparent areas will be modified to improve compression. To avoid this,\n// use WebPEncode() and set WebPConfig::exact to 1.\n\nWebPEncodeLosslessRGB: function(const rgb: PByte; width, height, stride: Integer;\n  var output: PByte): LongWord; cdecl;\n\nWebPEncodeLosslessBGR: function(const bgr: PByte; width, height, stride: Integer;\n  var output: PByte): LongWord; cdecl;\n\nWebPEncodeLosslessRGBA: function(const rgba: PByte; width, height, stride: Integer;\n  var output: PByte): LongWord; cdecl;\n\nWebPEncodeLosslessBGRA: function(const bgra: PByte; width, height, stride: Integer;\n  var output: PByte): LongWord; cdecl;\n\n// Should always be called, to initialize a fresh WebPConfig structure before\n// modification. Returns 0 in case of version mismatch. WebPConfigInit() must\n// have succeeded before using the 'config' object.\nfunction WebPConfigInit(const config: PWebPConfig): Integer;\n\n// This function will initialize the configuration according to a predefined\n// set of parameters (referred to by 'preset') and a given quality factor.\n// This function can be called as a replacement to WebPConfigInit(). Will\n// return 0 in case of error.\nfunction WebPConfigPreset(const config: PWebPConfig; preset: TWebPPreset;\n  quality: Single): Integer;\n\nvar\n// Returns 1 if all parameters are in valid range and the configuration is OK.\nWebPValidateConfig: function(const config: PWebPConfig): Integer; cdecl;\n\n// Should always be called, to initialize the structure. Returns 0 in case of\n// version mismatch. WebPPictureInit() must have succeeded before using the\n// 'picture' object.\nfunction WebPPictureInit(const picture: PWebPPicture): Integer;\n\n//-----------------------------------------------------------------------------\n// WebPPicture utils\nvar\n// Convenience allocation / deallocation based on picture->width/height:\n// Allocate y/u/v buffers as per width/height specification.\n// Note! This function will free the previous buffer if needed.\n// Returns 0 in case of memory error.\nWebPPictureAlloc: function(const picture: PWebPPicture): Integer; cdecl;\n\n// Release memory allocated by WebPPictureAlloc() or WebPPictureImport*()\n// Note that this function does _not_ free the memory pointed to by 'picture'.\nWebPPictureFree: procedure(const picture: PWebPPicture); cdecl;\n\n// Copy the pixels of *src into *dst, using WebPPictureAlloc.\n// Returns 0 in case of memory allocation error.\nWebPPictureCopy: function(const src, dst: PWebPPicture): Integer; cdecl;\n\n// self-crops a picture to the rectangle defined by top/left/width/height.\n// Returns 0 in case of memory allocation error, or if the rectangle is\n// outside of the source picture.\nWebPPictureCrop: function(const picture: PWebPPicture;\n  left, top, width, height: Integer): Integer; cdecl;\n\n// Colorspace conversion function. Previous buffer will be free'd, if any.\n// *rgb buffer should have a size of at least height * rgb_stride.\n// Returns 0 in case of memory error.\nWebPPictureImportRGB: function(const picture: PWebPPicture;\n  const rgb: PByte; rgb_stride: Integer): Integer; cdecl;\n\n// Same, but for RGBA buffer. Alpha information is ignored.\nWebPPictureImportRGBA: function(const picture: PWebPPicture;\n  const rgba: PByte; rgba_stride: Integer): Integer; cdecl;\n\n// Variant of the above, but taking BGR input:\nWebPPictureImportBGR: function(const picture: PWebPPicture;\n  const bgr: PByte; bgr_stride: Integer): Integer; cdecl;\n\nWebPPictureImportBGRA: function(const picture: PWebPPicture;\n  const bgra: PByte; bgra_stride: Integer): Integer; cdecl;\n\n//-----------------------------------------------------------------------------\n// Main call\n\n// Main encoding call, after config and picture have been initialiazed.\n// 'picture' must be less than 16384x16384 in dimension, and the 'config' object\n// must be a valid one.\n// Returns false in case of error, true otherwise.\nWebPEncode: function(const config: PWebPConfig; const picture: PWebPPicture): Integer; cdecl;\n\nWebPConfigInitInternal: function(const conf: PWebPConfig; preset: TWebPPreset;\n  quality: single; version: Integer): Integer; cdecl;\n\n// Internal, version-checked, entry point\nWebPPictureInitInternal: function(const picture: PWebPPicture; version: Integer): Integer; cdecl;\n{Special methods for dynamic loading of lib ...}\n\nvar\n  LibWebPHandle: TLibHandle = dynlibs.NilHandle; // this will hold our handle for the lib; it functions nicely as a mutli-lib prevention unit as well...\n  LibWebPRefCount : LongWord = 0;  // Reference counter\n\nfunction LibWebPLoaded : boolean; inline;\nFunction LibWebPLoad(const libfilename:string = ''): boolean; // load the lib\nProcedure LibWebPUnload; // unload and frees the lib from memory : do not forget to call it before close application.\n\nimplementation\n\nuses sysutils{$ifdef linux}, linuxlib{$endif}{$ifdef darwin}, darwinlib{$endif};\n\n// Internal, version-checked, entry point\nconst\n  WEBP_ENCODER_ABI_VERSION = $0001;\n\nfunction WebPConfigInit(const config: PWebPConfig): Integer;\nbegin\n  Result := WebPConfigInitInternal(config, WEBP_PRESET_DEFAULT, 75.0,  WEBP_ENCODER_ABI_VERSION);\nend;\n\nfunction WebPConfigPreset(const config: PWebPConfig; preset: TWebPPreset;\n  quality: Single): Integer;\nbegin\n  Result := WebPConfigInitInternal(config, preset, quality, WEBP_ENCODER_ABI_VERSION);\nend;\n\nfunction WebPPictureInit(const picture: PWebPPicture): Integer;\nbegin\n  Result := WebPPictureInitInternal(picture, WEBP_ENCODER_ABI_VERSION);\nend;\n\nfunction LibWebPLoaded: boolean;\nbegin\n Result := (LibWebPHandle <> dynlibs.NilHandle);\nend;\n\nFunction LibWebPLoad (const libfilename:string) :boolean;\nvar\n  thelib: string;\nbegin\n  Result := False;\n  if LibWebPHandle<>0 then\n  begin\n   Inc(LibWebPRefCount);\n   result:=true {is it already there ?}\n  end else\n  begin {go & load the library}\n    if libfilename <> '' then\n    begin\n      thelib := libfilename;\n      if Pos(DirectorySeparator, thelib)=0 then\n        thelib := ExtractFilePath(ParamStr(0)) + DirectorySeparator + thelib;\n      LibWebPHandle := DynLibs.SafeLoadLibrary(libfilename); // obtain the handle we want\n    end else\n    begin\n      {$ifdef linux}thelib := FindLinuxLibrary(LibWebPFilename);{$else}\n      {$ifdef darwin}thelib := FindDarwinLibrary(LibWebPFilename);{$else}\n      thelib := ExtractFilePath(ParamStr(0)) + DirectorySeparator + LibWebPFilename;\n      {$endif}{$endif}\n      LibWebPHandle := DynLibs.SafeLoadLibrary(thelib); // obtain the handle we want\n      {$IFDEF WINDOWS}\n      // second try on Windows without 32/64 suffix\n      if LibWebPHandle = DynLibs.NilHandle then\n      begin\n        thelib := ExtractFilePath(ParamStr(0)) + DirectorySeparator + AlternateLibWebPFilename;\n        LibWebPHandle := DynLibs.SafeLoadLibrary(thelib); // obtain the handle we want\n      end;\n      {$ENDIF}\n    end;\n    if LibWebPHandle <> DynLibs.NilHandle then\n    begin {now we tie the functions to the VARs from above}\n\nPointer(WebPGetDecoderVersion):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPGetDecoderVersion'));\nPointer(WebPGetInfo):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPGetInfo'));\nPointer(WebPDecodeRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeRGB'));\nPointer(WebPDecodeRGBA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeRGBA'));\nPointer(WebPDecodeBGR):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeBGR'));\nPointer(WebPDecodeBGRA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeBGRA'));\nPointer(WebPDecodeYUV):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeYUV'));\nPointer(WebPFree):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPFree'));\nPointer(WebPDecodeRGBInto):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeRGBInto'));\nPointer(WebPDecodeRGBAInto):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeRGBAInto'));\nPointer(WebPDecodeBGRInto):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeBGRInto'));\nPointer(WebPDecodeBGRAInto):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeBGRAInto'));\nPointer(WebPDecodeYUVInto):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPDecodeYUVInto'));\nPointer(WebPINew):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPINew'));\nPointer(WebPINewRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPINewRGB'));\nPointer(WebPINewYUV):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPINewYUV'));\nPointer(WebPIDelete):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPIDelete'));\nPointer(WebPIAppend):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPIAppend'));\nPointer(WebPIUpdate):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPIUpdate'));\nPointer(WebPIDecGetRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPIDecGetRGB'));\nPointer(WebPIDecGetYUV):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPIDecGetYUV'));\nPointer(WebPGetEncoderVersion):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPGetEncoderVersion'));\nPointer(WebPEncodeRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeRGB'));\nPointer(WebPEncodeBGR):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeBGR'));\nPointer(WebPEncodeRGBA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeRGBA'));\nPointer(WebPEncodeBGRA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeBGRA'));\nPointer(WebPEncodeLosslessRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeLosslessRGB'));\nPointer(WebPEncodeLosslessBGR):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeLosslessBGR'));\nPointer(WebPEncodeLosslessRGBA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeLosslessRGBA'));\nPointer(WebPEncodeLosslessBGRA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncodeLosslessBGRA'));\n//Pointer(WebPConfigInit):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPConfigInit'));\n//Pointer(WebPConfigPreset):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPConfigPreset'));\n//Pointer(WebPPictureInit):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureInit'));\nPointer(WebPPictureAlloc):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureAlloc'));\nPointer(WebPPictureFree):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureFree'));\nPointer(WebPPictureCopy):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureCopy'));\nPointer(WebPPictureCrop):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureCrop'));\nPointer(WebPPictureImportRGB):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureImportRGB'));\nPointer(WebPPictureImportRGBA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureImportRGBA'));\nPointer(WebPPictureImportBGR):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureImportBGR'));\nPointer(WebPPictureImportBGRA):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureImportBGRA'));\nPointer(WebPEncode):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPEncode'));\nPointer(WebPConfigInitInternal):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPConfigInitInternal'));\nPointer(WebPPictureInitInternal):=DynLibs.GetProcedureAddress(LibWebPHandle,PChar('WebPPictureInitInternal'));\n\n    end;\n    Result := LibWebPLoaded;\n    LibWebPRefCount:=1;\n  end;\nend;\n\nProcedure LibWebPUnload;\nbegin\n  // < Reference counting\n  if LibWebPRefCount > 0 then\n    dec(LibWebPRefCount);\n  if LibWebPRefCount > 0 then\n    exit;\n  // >\n  if LibWebPLoaded then\n  begin\n    DynLibs.UnloadLibrary(LibWebPHandle);\n    LibWebPHandle:=DynLibs.NilHandle;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/lightingclasses3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  { Directional light for 3D scene }\n  TBGRADirectionalLight3D = class(TBGRALight3D,IBGRADirectionalLight3D)\n  protected\n    FDirection, FBetweenDirectionAndObserver: TPoint3D_128;\n  public\n    constructor Create(ADirection: TPoint3D);\n    function GetDirection: TPoint3D; override;\n    procedure SetDirection(const AValue: TPoint3D);\n\n    procedure ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext); override;\n    procedure ComputeDiffuseColor(Context: PSceneLightingContext); override;\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext); override;\n    function IsDirectional: boolean; override;\n  end;\n\n  { Point light for 3D scene }\n  TBGRAPointLight3D = class(TBGRALight3D,IBGRAPointLight3D)\n  protected\n    FVertex: IBGRAVertex3D;\n    FIntensity: single;\n  public\n    constructor Create(AVertex: IBGRAVertex3D; AIntensity: single);\n    function GetIntensity: single; override;\n    procedure SetIntensity(const AValue: single);\n\n    function GetVertex: IBGRAVertex3D;\n    procedure SetVertex(const AValue: IBGRAVertex3D);\n    function GetPosition: TPoint3D; override;\n\n    procedure ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext); override;\n    procedure ComputeDiffuseLightness(Context: PSceneLightingContext); override;\n    procedure ComputeDiffuseColor(Context: PSceneLightingContext); override;\n    function IsDirectional: boolean; override;\n  end;\n\n{ TBGRAPointLight3D }\n\nconstructor TBGRAPointLight3D.Create(AVertex: IBGRAVertex3D; AIntensity: single);\nbegin\n  inherited Create;\n  FVertex:= AVertex;\n  FIntensity := AIntensity;\nend;\n\nfunction TBGRAPointLight3D.GetIntensity: single;\nbegin\n  result := FIntensity;\nend;\n\nprocedure TBGRAPointLight3D.SetIntensity(const AValue: single);\nbegin\n  FIntensity:= AValue;\nend;\n\nfunction TBGRAPointLight3D.GetVertex: IBGRAVertex3D;\nbegin\n  result := FVertex;\nend;\n\nprocedure TBGRAPointLight3D.SetVertex(const AValue: IBGRAVertex3D);\nbegin\n  FVertex := AValue;\nend;\n\nfunction TBGRAPointLight3D.GetPosition: TPoint3D;\nbegin\n  Result:= FVertex.GetViewCoord;\nend;\n\nprocedure TBGRAPointLight3D.ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext);\n  {$DEFINE PARAM_POINTLIGHT}\n  {$i phonglight.inc}\n\nprocedure TBGRAPointLight3D.ComputeDiffuseLightness(Context: PSceneLightingContext);\nconst maxValue = 100*32768;\nvar\n  vect: TPoint3D_128;\n  dist2,intensity: single;\nbegin\n  vect := FVertex.ViewCoord_128 - Context^.basic.Position;\n  dist2 := DotProduct3D_128(vect,vect);\n  if dist2 = 0 then\n    TBGRAMaterial3D(Context^.material).ComputeDiffuseLightness(Context,maxValue,FLightness)\n  else\n  begin\n    intensity := DotProduct3D_128(vect, Context^.basic.Normal)/(dist2*sqrt(dist2))*FIntensity;\n    if Context^.LightThrough and (intensity < 0) then intensity := -intensity*Context^.LightThroughFactor;\n    if intensity > 100 then intensity := 100;\n    if intensity < FMinIntensity then intensity := FMinIntensity;\n    TBGRAMaterial3D(Context^.material).ComputeDiffuseLightness(Context,round(intensity*32768),FLightness);\n  end;\nend;\n\nprocedure TBGRAPointLight3D.ComputeDiffuseColor(Context: PSceneLightingContext);\nvar\n  vect: TPoint3D_128;\n  intensity,dist2: single;\nbegin\n  vect := FVertex.ViewCoord_128 - Context^.basic.Position;\n  dist2 := DotProduct3D_128(vect,vect);\n  if dist2 = 0 then\n    intensity := 100\n  else\n  begin\n    intensity := DotProduct3D_128(vect, Context^.basic.Normal)/(dist2*sqrt(dist2))*FIntensity;\n    if Context^.LightThrough and (intensity < 0) then intensity := -intensity*Context^.LightThroughFactor;\n    if intensity > 100 then intensity := 100;\n    if intensity < FMinIntensity then intensity := FMinIntensity;\n  end;\n\n  TBGRAMaterial3D(Context^.material).ComputeDiffuseColor(Context,intensity, FColorInt);\nend;\n\nfunction TBGRAPointLight3D.IsDirectional: boolean;\nbegin\n  result := false;\nend;\n\n{ TBGRADirectionalLight3D }\n\nconstructor TBGRADirectionalLight3D.Create(ADirection: TPoint3D);\nbegin\n  inherited Create;\n  SetDirection(ADirection);\nend;\n\nfunction TBGRADirectionalLight3D.GetDirection: TPoint3D;\nbegin\n  result := Point3D(-FDirection.x,-FDirection.y,-FDirection.z);\nend;\n\nprocedure TBGRADirectionalLight3D.SetDirection(const AValue: TPoint3D);\nbegin\n  FDirection := -Point3D_128(AValue.x,AValue.y,AValue.z);\n  Normalize3D_128(FDirection);\n  FBetweenDirectionAndObserver := FDirection + FViewVector;\n  Normalize3D_128(FBetweenDirectionAndObserver);\nend;\n\nprocedure TBGRADirectionalLight3D.ComputeDiffuseAndSpecularColor(Context: PSceneLightingContext);\n  {$i phonglight.inc}\n\nprocedure TBGRADirectionalLight3D.ComputeDiffuseColor(Context: PSceneLightingContext);\nvar\n  intensity: single;\nbegin\n  intensity:= DotProduct3D_128(Context^.basic.Normal, FDirection);\n  if Context^.LightThrough and (intensity < 0) then intensity := -intensity*Context^.LightThroughFactor;\n  if intensity < FMinIntensity then intensity := FMinIntensity;\n\n  TBGRAMaterial3D(Context^.material).ComputeDiffuseColor(Context,intensity,FColorInt);\nend;\n\nprocedure TBGRADirectionalLight3D.ComputeDiffuseLightness(\n  Context: PSceneLightingContext);\nvar\n  intensity: single;\nbegin\n  intensity:= DotProduct3D_128(Context^.basic.Normal, FDirection);\n  if Context^.LightThrough and (intensity < 0) then intensity := -intensity*Context^.LightThroughFactor;\n  if intensity < FMinIntensity then intensity := FMinIntensity;\n\n  TBGRAMaterial3D(Context^.material).ComputeDiffuseLightness(Context,round(intensity*32768),FLightness);\nend;\n\nfunction TBGRADirectionalLight3D.IsDirectional: boolean;\nbegin\n  result := true;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/linearrgbabitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Supplies a bitmap in linear RGB with floating-point values and transparency.)\n\n  Pixels are in TLinearRGBA format, based on linear RGB colorspace (TLinearRGBAColorspace).\n\n  This allows for even more precise computation than TExpandedBitmap but it is slower and\n  uses more memory (16 bytes per pixel).\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit LinearRGBABitmap;\n\n{$mode objfpc}{$H+}\n\n{$i bgrabitmap.inc}\n\n{$IFNDEF BGRABITMAP_EXTENDED_COLORSPACE}{$STOP This unit need extended colorspaces}{$ENDIF}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, UniversalDrawer;\n\ntype\n  {* Bitmap with TLinearRGBA pixel format (linear RGB\n     with floating point values). }\n  TLinearRGBABitmap = class(specialize TGenericUniversalBitmap<TLinearRGBA,TLinearRGBAColorspace>)\n  protected\n    function InternalNew: TCustomUniversalBitmap; override;\n    procedure AssignTransparentPixel(out ADest); override;\n  public\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TLinearRGBA; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                              AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n  end;\n\nconst\n  LinearRGBATransparent : TLinearRGBA = (red:0; green:0; blue:0; alpha:0);\n\noperator = (const c1, c2: TLinearRGBA): boolean; inline;\n\nimplementation\n\noperator = (const c1, c2: TLinearRGBA): boolean;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    Result := True\n  else\n    Result := (c1.alpha = c2.alpha) and (c1.red = c2.red) and\n      (c1.green = c2.green) and (c1.blue = c2.blue);\nend;\n\nprocedure LinearRGBASolidBrushSkipPixels({%H-}AFixedData: Pointer;\n    AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PLinearRGBA(AContextData^.Dest), ACount);\nend;\n\nprocedure LinearRGBAChunkSetPixels(\n    ASource: PLinearRGBA; ADest: PLinearRGBA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      residualAlpha := ADest^.alpha*(1-alphaOver);\n      finalAlpha := residualAlpha + ASource^.alpha*alphaOver;\n      if finalAlpha <= 0 then ADest^ := LinearRGBATransparent else\n      begin\n        ADest^.alpha:= finalAlpha;\n        finalAlphaInv := 1/finalAlpha;\n        ADest^.red := (ADest^.red*residualAlpha +\n                        ASource^.red*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        ADest^.green := (ADest^.green*residualAlpha +\n                         ASource^.green*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        ADest^.blue := (ADest^.blue*residualAlpha +\n                        ASource^.blue*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure LinearRGBASolidBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PLinearRGBA;\nbegin\n  pDest := PLinearRGBA(AContextData^.Dest);\n  LinearRGBAChunkSetPixels( PLinearRGBA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure LinearRGBAChunkDrawPixels(\n    ASource: PLinearRGBA; ADest: PLinearRGBA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, srcAlphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  alphaOver := AAlpha*single(oneOver65535);\n  while ACount > 0 do\n  begin\n    srcAlphaOver := ASource^.alpha*alphaOver;\n    if srcAlphaOver >= 1 then\n      ADest^ := ASource^\n    else\n    begin\n      residualAlpha := ADest^.alpha*(1-srcAlphaOver);\n      finalAlpha := residualAlpha + srcAlphaOver;\n      if finalAlpha <= 0 then ADest^ := LinearRGBATransparent else\n      begin\n        ADest^.alpha:= finalAlpha;\n        finalAlphaInv := 1/finalAlpha;\n        ADest^.red := (ADest^.red*residualAlpha +\n                        ASource^.red*srcAlphaOver ) * finalAlphaInv;\n        ADest^.green := (ADest^.green*residualAlpha +\n                         ASource^.green*srcAlphaOver ) * finalAlphaInv;\n        ADest^.blue := (ADest^.blue*residualAlpha +\n                        ASource^.blue*srcAlphaOver ) * finalAlphaInv;\n      end;\n    end;\n    inc(ADest);\n    dec(ACount);\n    inc(PByte(ASource), ASourceStride);\n  end;\nend;\n\nprocedure LinearRGBASolidBrushDrawPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PLinearRGBA;\nbegin\n  pDest := PLinearRGBA(AContextData^.Dest);\n  LinearRGBAChunkDrawPixels( PLinearRGBA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\ntype\n  PLinearRGBAScannerBrushFixedData = ^TLinearRGBAScannerBrushFixedData;\n  TLinearRGBAScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    Conversion: TBridgedConversion;\n  end;\n\nprocedure LinearRGBAScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure LinearRGBAScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PLinearRGBA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TLinearRGBA;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TLinearRGBA), nil);\n      LinearRGBAChunkSetPixels(@buf, pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAScannerChunkBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PLinearRGBA;\n  qty: Integer;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      LinearRGBAChunkSetPixels(PLinearRGBA(psrc), pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAChunkSetPixelsExceptTransparent(\n    ASource: PLinearRGBA; ADest: PLinearRGBA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      if ASource^.alpha >= 1 then\n        ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      if ASource^.alpha >= 1 then\n      begin\n        residualAlpha := ADest^.alpha*(1-alphaOver);\n        finalAlpha := residualAlpha + ASource^.alpha*alphaOver;\n        if finalAlpha <= 0 then ADest^ := LinearRGBATransparent else\n        begin\n          ADest^.alpha:= finalAlpha;\n          finalAlphaInv := 1/finalAlpha;\n          ADest^.red := (ADest^.red*residualAlpha +\n                          ASource^.red*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n          ADest^.green := (ADest^.green*residualAlpha +\n                           ASource^.green*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n          ADest^.blue := (ADest^.blue*residualAlpha +\n                          ASource^.blue*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        end;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure LinearRGBAScannerChunkBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PLinearRGBA;\n  qty: Integer;\n  psrc: Pointer;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      LinearRGBAChunkSetPixelsExceptTransparent(PLinearRGBA(psrc), pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAScannerConvertBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PLinearRGBA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TLinearRGBA;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TLinearRGBA), nil);\n      LinearRGBAChunkSetPixelsExceptTransparent(@buf, pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAScannerChunkBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PLinearRGBA;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      LinearRGBAChunkDrawPixels(PLinearRGBA(psrc), pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAScannerConvertBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PLinearRGBA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TLinearRGBA;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TLinearRGBA), nil);\n      LinearRGBAChunkDrawPixels(@buf, pDest, AAlpha, qty, sizeof(TLinearRGBA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure LinearRGBAMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PLinearRGBA;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\n  factor: single;\nbegin\n  with PLinearRGBAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PLinearRGBA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PLinearRGBA(AContextData^.Dest);\n    factor := AAlpha/(65535*255);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n      dec(ACount,qty);\n      while qty > 0 do\n      begin\n        pDest^.alpha := pDest^.alpha*pMask^.gray*factor;\n        if pDest^.alpha = 0 then pDest^ := LinearRGBATransparent;\n        inc(pDest);\n        inc(pMask, maskStride);\n        dec(qty);\n      end;\n    end;\n    PLinearRGBA(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure LinearRGBAAlphaBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nconst oneOver65535 = 1/65535;\nvar\n  pDest: PLinearRGBA;\n  alphaOver, residualAlpha, finalAlpha: single;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PLinearRGBA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PLinearRGBA(AContextData^.Dest);\n  if AAlpha=65535 then\n  begin\n    finalAlpha := PSingle(AFixedData)^;\n    while ACount > 0 do\n    begin\n      pDest^.alpha := finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      residualAlpha := pDest^.alpha*(1-alphaOver);\n      finalAlpha := residualAlpha + PSingle(AFixedData)^*alphaOver;\n      pDest^.alpha:= finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PLinearRGBA(AContextData^.Dest) := pDest;\nend;\n\nprocedure LinearRGBAAlphaBrushErasePixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nconst oneOver65535 = 1/65535;\nvar\n  pDest: PLinearRGBA;\n  alphaMul, finalAlpha: single;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PLinearRGBA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PLinearRGBA(AContextData^.Dest);\n  if AAlpha<>65535 then\n    alphaMul := 1-PSingle(AFixedData)^*AAlpha*single(oneOver65535)\n  else\n    alphaMul := 1-PSingle(AFixedData)^;\n  while ACount > 0 do\n  begin\n    finalAlpha := pDest^.alpha*alphaMul;\n    if finalAlpha <= 0 then pDest^ := LinearRGBATransparent else\n      pDest^.alpha:= finalAlpha;\n    inc(pDest);\n    dec(ACount);\n  end;\n  PLinearRGBA(AContextData^.Dest) := pDest;\nend;\n\n{ TLinearRGBABitmap }\n\nfunction TLinearRGBABitmap.InternalNew: TCustomUniversalBitmap;\nbegin\n  Result:= TLinearRGBABitmap.Create;\nend;\n\nprocedure TLinearRGBABitmap.AssignTransparentPixel(out ADest);\nbegin\n  TLinearRGBA(ADest) := LinearRGBATransparent;\nend;\n\nclass procedure TLinearRGBABitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TLinearRGBA; ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace:= TLinearRGBAColorspace;\n  PLinearRGBA(@ABrush.FixedData)^ := AColor;\n  case ADrawMode of\n    dmSet: ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushSetPixels;\n\n    dmSetExceptTransparent:\n      if AColor.alpha < 1 then\n        ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushSkipPixels\n      else\n      begin\n        ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushSetPixels;\n        ABrush.DoesNothing := true;\n      end;\n\n    dmDrawWithTransparency,dmLinearBlend:\n      if AColor.alpha<=0 then\n      begin\n        ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end\n      else if AColor.alpha>=1 then\n        ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushSetPixels\n      else\n        ABrush.InternalPutNextPixels:= @LinearRGBASolidBrushDrawPixels;\n\n    dmXor: raise exception.Create('Xor mode not available with floating point values');\n  end;\nend;\n\nclass procedure TLinearRGBABitmap.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer; AOffsetY: integer);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TLinearRGBAColorspace;\n  with PLinearRGBAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @LinearRGBAScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if sourceSpace = TLinearRGBAColorspace then\n  begin\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @LinearRGBAScannerChunkBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @LinearRGBAScannerChunkBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @LinearRGBAScannerChunkBrushDrawPixels;\n      dmXor: raise exception.Create('Xor mode not available with floating point values');\n    end;\n  end else\n  begin\n    with PLinearRGBAScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TLinearRGBAColorspace);\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @LinearRGBAScannerConvertBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @LinearRGBAScannerConvertBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @LinearRGBAScannerConvertBrushDrawPixels;\n      dmXor: raise exception.Create('Xor mode not available with floating point values');\n    end;\n  end;\nend;\n\nclass procedure TLinearRGBABitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TLinearRGBAColorspace;\n  with PLinearRGBAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @LinearRGBAScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @LinearRGBAMaskBrushApply;\nend;\n\nclass procedure TLinearRGBABitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, LinearRGBATransparent, dmDrawWithTransparency);\n    exit;\n  end;\n  ABrush.Colorspace:= TLinearRGBAColorspace;\n  PSingle(@ABrush.FixedData)^ := AAlpha/65535;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @LinearRGBAAlphaBrushErasePixels;\nend;\n\nclass procedure TLinearRGBABitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, LinearRGBATransparent, dmSet);\n    exit;\n  end;\n  ABrush.Colorspace:= TLinearRGBAColorspace;\n  PSingle(@ABrush.FixedData)^ := AAlpha/65535;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @LinearRGBAAlphaBrushSetPixels;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/lineartexscan.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$i bgrasse.inc}\n\n  var\n    xLen: single;       //horizontal length in pixels\n    t: single;          //initial horizontal position in [0..1]\n    texVect: TPointF;   //texture vector between start and end of line\n    texPos: TPointF;    //texture start position\n    texStep: TPointF;   //texture step\n    intTexPos: packed record\n          x,y: integer;\n        end;\n\n    //loop variables\n    pdest: PBGRAPixel;\n    i: LongInt;\n\n  {$IFDEF PARAM_USELIGHTING}\n    light,lightStep,lightDiff,lightAcc,lightMod: word;\n    lightLen: integer;\n\n    procedure NextLight; inline;\n    begin\n      light := (light+lightStep) and 65535;\n      inc(lightAcc,lightDiff);\n      if lightAcc >= lightMod then\n      begin\n        dec(lightAcc,lightMod);\n        light := (light + 1) and 65535;\n      end;\n    end;\n  {$ENDIF}\n\n  begin\n    xLen := info2.interX - info1.interX;\n    t := ((ix1+0.5)-info1.interX)/xLen;\n\n    texVect := info2.texCoord-info1.texCoord;\n    texPos := info1.texCoord + texVect*t;\n    texStep := texVect*(1/xLen);\n\n    pdest := bmp.ScanLine[yb]+ix1;\n\n  {$IFDEF PARAM_USELIGHTING}\n    if ix2 = ix1 then\n    begin\n      light := (info1.lightness+info2.lightness) div 2;\n      lightStep := 0;\n      lightDiff := 0;\n      lightMod := 1;\n    end\n    else\n    begin\n      light := info1.lightness;\n      lightLen := info2.lightness-info1.lightness;\n      if lightLen >= 0 then\n      begin\n        lightStep := lightLen div (ix2-ix1);\n        lightMod := ix2-ix1;\n        lightDiff := lightLen - lightStep*(ix2-ix1);\n      end else\n      begin\n        lightStep := (-lightLen+(ix2-ix1-1)) div (ix2-ix1);\n        lightMod := ix2-ix1;\n        lightDiff := lightLen + lightStep*(ix2-ix1);\n        lightStep := 65536 - lightStep;\n      end;\n    end;\n    lightAcc := lightDiff div 2;\n  {$ENDIF}\n\n    {$IFDEF BGRASSE_AVAILABLE}\n    if UseSSE then\n    begin\n      {$DEFINE PARAM_USESSE}\n      if UseSSE2 then\n      begin\n        {$DEFINE PARAM_USESSE2}\n        if WithInterpolation then\n        begin\n          {$DEFINE PARAM_USEINTERPOLATION}\n          {$i lineartexscan2.inc}\n          {$UNDEF PARAM_USEINTERPOLATION}\n        end else\n        begin\n          {$i lineartexscan2.inc}\n        end;\n        {$UNDEF PARAM_USESSE2}\n      end else\n      begin\n        if WithInterpolation then\n        begin\n          {$DEFINE PARAM_USEINTERPOLATION}\n          {$i lineartexscan2.inc}\n          {$UNDEF PARAM_USEINTERPOLATION}\n        end else\n        begin\n          {$i lineartexscan2.inc}\n        end;\n      end;\n      {$UNDEF PARAM_USESSE}\n    end else\n    {$ENDIF}\n    if WithInterpolation then\n    begin\n      {$DEFINE PARAM_USEINTERPOLATION}\n      {$i lineartexscan2.inc}\n      {$UNDEF PARAM_USEINTERPOLATION}\n    end else\n    begin\n      {$i lineartexscan2.inc}\n    end;\n  end;\n{$undef PARAM_USELIGHTING}\n"
  },
  {
    "path": "bgrabitmap/lineartexscan2.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n      {$IFDEF PARAM_USESSE} {$asmmode intel}\n      asm\n         xorps xmm4,xmm4\n         xorps xmm5,xmm5\n         movlps xmm4, texPos\n         movlps xmm5, texStep\n         {$IFNDEF PARAM_USEINTERPOLATION}\n           {$IFDEF PARAM_USESSE2}\n           cvtps2dq xmm3,xmm4\n           movlps intTexPos,xmm3\n           {$ENDIF}\n         {$ENDIF}\n      end;\n      {$ENDIF}\n\n      for i := ix1 to ix2 do\n      begin\n        DrawPixelInlineWithAlphaCheck(pdest,\n          {$IFDEF PARAM_USELIGHTING} ApplyLightnessFast( {$ENDIF}\n          {$IFDEF PARAM_USEINTERPOLATION}\n            scanAtFunc(texPos.x,texPos.y)\n          {$ELSE}\n            {$IFDEF PARAM_USESSE2}\n              scanAtIntegerFunc(intTexPos.x,intTexPos.y)\n            {$ELSE}\n              scanAtIntegerFunc(round(texPos.x),round(texPos.y))\n            {$ENDIF}\n          {$ENDIF}\n          {$IFDEF PARAM_USELIGHTING} ,light) {$ENDIF}\n          );\n        {$IFDEF PARAM_USESSE}\n        asm\n           addps xmm4,xmm5\n           {$IFNDEF PARAM_USEINTERPOLATION}\n             {$IFDEF PARAM_USESSE2}\n             cvtps2dq xmm3,xmm4\n             movlps intTexPos,xmm3\n             {$ELSE}\n             movlps texPos,xmm4\n             {$ENDIF}\n           {$ELSE}\n             movlps texPos,xmm4\n           {$ENDIF}\n        end;\n        {$ELSE}\n          texPos.Offset(texStep);\n        {$ENDIF}\n\n        {$IFDEF PARAM_USELIGHTING}\n          NextLight;\n        {$ENDIF}\n        inc(pdest);\n      end;\n"
  },
  {
    "path": "bgrabitmap/linuxlib.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ This unit allows to find the implementation of a library from its\n  \"linker name\" whatever its version. }\nunit linuxlib;\n\n{$mode objfpc}{$H+}\n\n{ Linker name\n  -----------\n  The linker name normally can only be used when compiling a program.\n  It ends up with .so and does not have any version number. There isn't\n  necessarily a file with this name though it may be provided in the\n  development package (ending with -dev).\n  - libwebp.so\n  - libportaudio.so\n  - libtiff.so\n  - libpython.so\n\n\n  Soname (qualified with a version number)\n  ----------------------------------------\n  The soname can be supplied to the LoadLibray function to load at runtime,\n  without specifying any path. It is the same as the linker name, but with\n  a version number. The file exists most of the time and it is generally\n  a symbolic link to the implementation (or \"real name\").\n  - libwebp.so.6\n  - libportaudio.so.2\n  - libtiff.so.5\n  - libpython2.7.so\n\n\n  Implementation or real name (with minor number)\n  -----------------------------------------------\n  The real name contains the implementation. It has a minor number and\n  an optional release number. Most of the time, you don't need to know this\n  name to use the library.\n  - libwebp.so.6.0.2\n  - libportaudio.so.2.0.0\n  - libtiff.so.5.3.0\n  - libpython2.7.so.1.0\n\n\n  See: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html }\n\ninterface\n\nuses\n  BGRAClasses, SysUtils;\n\n{* Retrieves the full path of a library on Linux.\n\n  Note that between different versions, there may be incompatibilities\n  (in the signature of the functions or the record types).\n  So make sure the functions you are calling are stable or\n  check the version of the library once its loaded using one of its functions. }\nfunction FindLinuxLibrary(ALinkerName: string; AMinimumVersion: integer = 0): string;\n\nimplementation\n\nuses process;\n\nfunction FindBinPath(AFilename: string): string;\nconst\n  BinPaths: array[0..5] of string =\n  ('/usr/local/sbin','/usr/local/bin','/usr/sbin','/usr/bin','/sbin','/bin');\nvar i: integer;\nbegin\n  for i := 0 to high(BinPaths) do\n    If FileExists(BinPaths[i] + '/' + AFilename) then\n      exit(BinPaths[i] + '/' + AFilename);\n  exit(AFilename);\nend;\n\nfunction FindLinuxLibrary(ALinkerName: string; AMinimumVersion: integer): string;\nconst\n  OpenBracket = ' (';\n  Arrow = ') => ';\nvar\n  dataText, s, fileName, flags, path, versionStr: string;\n  dataList, flagList: TStringList;\n  openBracketPos, arrowPos, posDot: SizeInt;\n  versionInt, errPos, i: integer;\n  maxVersionInt: integer;\nbegin\n  versionStr := copy(ExtractFileExt(ALinkerName), 2);\n  val(versionStr, versionInt, errPos);\n  if errPos = 0 then\n  begin\n    if AMinimumVersion = 0 then AMinimumVersion := versionInt;\n    ALinkerName := ChangeFileExt(ALinkerName,'');\n  end;\n  result := '';\n  maxVersionInt := AMinimumVersion-1;\n  RunCommand(FindBinPath('ldconfig'), ['-p'], dataText, []);\n  dataList := TStringList.Create;\n  dataList.Text := dataText;\n  flagList := TStringList.Create;\n  for i := 0 to dataList.Count-1 do\n  begin\n    s := dataList[i];\n    openBracketPos := pos(OpenBracket, s);\n    arrowPos := pos(Arrow,s);\n    if (openBracketPos <> 0) and (arrowPos <> 0) then\n    begin\n      fileName := trim(copy(s,1,openBracketPos-1));\n      if fileName.StartsWith(ALinkerName+'.') then\n      begin\n        versionStr := copy(fileName, length(ALinkerName)+2, length(fileName)-length(ALinkerName)-1);\n        posDot := pos('.', versionStr);\n        if posDot > 0 then versionStr := copy(versionStr, posDot-1);\n        val(versionStr, versionInt, errPos);\n        if errPos = 0 then\n        begin\n          flags := copy(s, openBracketPos+length(OpenBracket), arrowPos-openBracketPos-length(OpenBracket));\n          flagList.CommaText := flags;\n          if {$IFNDEF CPU64}not{$ENDIF} (flagList.IndexOf('x86-64') <> -1) then\n          begin\n            path := copy(s, arrowPos+length(Arrow), length(s)-arrowPos-length(Arrow)+1);\n            if versionInt > maxVersionInt then\n            begin\n              maxVersionInt := versionInt;\n              result := path;\n            end;\n          end;\n        end;\n      end;\n    end;\n  end;\n  flagList.Free;\n  dataList.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/multishapeline.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n      begin\n        for k := 0 to NbShapeRows-1 do\n        with shapeRow[shapeRowsList[k]],shapes[shapeRowsList[k]] do\n        if densMinx <= densMaxx then\n        begin\n          if densMinx < minx then densMinx := minx;\n          if densMaxx > maxx then densMaxx := maxx;\n\n          if texture <> nil then\n          begin\n            texture.ScanMoveTo(densMinx,yb);\n            ScanNextFunc := @texture.ScanNextPixel;\n            pdens := density+(densMinX-minx);\n            for xb := densMinx to densMaxx do\n            with sums[xb-minx] do\n            begin\n              if pdens^ <> 0 then\n              begin\n                ec := GammaExpansion(ScanNextFunc());\n                {$ifdef PARAM_ANTIALIASINGFACTOR}\n                  w := DivByAntialiasPrecision65536(pdens^ * ec.alpha);\n                {$else}\n                  w := (pdens^ * ec.alpha) shr 16;\n                {$endif}\n                if w <> 0 then\n                begin\n                  inc(sumR,ec.red*w);\n                  inc(sumG,ec.green*w);\n                  inc(sumB,ec.blue*w);\n                  inc(sumA,w);\n                end;\n              end else\n                ScanNextFunc();\n              inc(pdens);\n            end;\n          end else\n          begin\n            ec := color;\n            pdens := density+(densMinX-minx);\n            for xb := densMinx to densMaxx do\n             with sums[xb-minx] do\n             begin\n               if pdens^ <> 0 then\n               begin\n                 {$ifdef PARAM_ANTIALIASINGFACTOR}\n                   w := DivByAntialiasPrecision65536(pdens^ * ec.alpha);\n                 {$else}\n                   w := (pdens^ * ec.alpha) shr 16;\n                 {$endif}\n                 if w <> 0 then\n                 begin\n                   inc(sumR,ec.red*w);\n                   inc(sumG,ec.green*w);\n                   inc(sumB,ec.blue*w);\n                   inc(sumA,w);\n                 end;\n               end;\n               inc(pdens);\n             end;\n          end;\n        end;\n\n      end\n{$undef PARAM_ANTIALIASINGFACTOR}\n"
  },
  {
    "path": "bgrabitmap/object3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{ TBGRAObject3D }\n\nprocedure TBGRAObject3D.AddFace(AFace: IBGRAFace3D);\nbegin\n  if FFaceCount = length(FFaces) then\n     setlength(FFaces,FFaceCount*2+3);\n  FFaces[FFaceCount] := AFace;\n  inc(FFaceCount);\nend;\n\nconstructor TBGRAObject3D.Create(AScene: TBGRAScene3D);\nbegin\n  FColor := BGRAWhite;\n  FLight := 1;\n  FTexture := nil;\n  FMainPart := TBGRAPart3D.Create(self,nil);\n  FLightingNormal:= AScene.DefaultLightingNormal;\n  FParentLighting:= True;\n  FScene := AScene;\n  FFaceColorsInvalidated := true;\n  FMaterialInvalidated := false;\nend;\n\ndestructor TBGRAObject3D.Destroy;\nbegin\n  FMaterial := nil;\n  fillchar(FTexture,sizeof(FTexture),0);\n  inherited Destroy;\nend;\n\nprocedure TBGRAObject3D.Clear;\nbegin\n  FFaces := nil;\n  FFaceCount := 0;\n  FMainPart.Clear(True);\nend;\n\nprocedure TBGRAObject3D.InvalidateColor;\nbegin\n  FFaceColorsInvalidated := true;\nend;\n\nprocedure TBGRAObject3D.InvalidateMaterial;\nbegin\n  FMaterialInvalidated := true;\nend;\n\nfunction TBGRAObject3D.GetColor: TBGRAPixel;\nbegin\n  result := FColor;\nend;\n\nfunction TBGRAObject3D.GetLight: Single;\nbegin\n  result := FLight;\nend;\n\nfunction TBGRAObject3D.GetTexture: IBGRAScanner;\nbegin\n  result := FTexture;\nend;\n\nfunction TBGRAObject3D.GetMainPart: IBGRAPart3D;\nbegin\n  result := FMainPart;\nend;\n\nprocedure TBGRAObject3D.SetColor(const AValue: TBGRAPixel);\nbegin\n  FColor := AValue;\n  FTexture := nil;\n  InvalidateColor;\nend;\n\nprocedure TBGRAObject3D.SetLight(const AValue: Single);\nbegin\n  FLight := AValue;\nend;\n\nprocedure TBGRAObject3D.SetTexture(const AValue: IBGRAScanner);\nbegin\n  FTexture := AValue;\n  InvalidateMaterial;\nend;\n\nprocedure TBGRAObject3D.SetMaterial(const AValue: IBGRAMaterial3D);\nbegin\n  FMaterial := AValue;\n  InvalidateMaterial;\nend;\n\nprocedure TBGRAObject3D.RemoveUnusedVertices;\nbegin\n  GetMainPart.RemoveUnusedVertices;\nend;\n\nprocedure TBGRAObject3D.SeparatePart(APart: IBGRAPart3D);\nvar\n  vertexInfo: array of record\n       orig,dup: IBGRAVertex3D;\n     end;\n\n  i,j: integer;\n  inPart,outPart: boolean;\n  idxV: integer;\nbegin\n  setlength(vertexInfo, APart.VertexCount);\n  for i := 0 to high(vertexInfo) do\n    with vertexInfo[i] do\n    begin\n      orig := APart.Vertex[i];\n      dup := APart.Add(orig.SceneCoord_128);\n    end;\n\n  for i := 0 to GetFaceCount-1 do\n    with GetFace(i) do\n    begin\n      inPart := false;\n      outPart := false;\n      for j := 0 to VertexCount-1 do\n        if (APart.IndexOf(Vertex[j]) <> -1) then\n          inPart := true\n        else\n          outPart := true;\n\n      if inPart and not outPart then\n      begin\n        for j := 0 to VertexCount-1 do\n        begin\n          idxV := APart.IndexOf(Vertex[j]);\n          if idxV <> -1 then\n            Vertex[j] := vertexInfo[idxV].dup;\n        end;\n      end;\n    end;\n\n  for i := APart.VertexCount-1 downto 0 do\n    APart.RemoveVertex(i);\nend;\n\nfunction TBGRAObject3D.GetScene: TObject;\nbegin\n  result := FScene;\nend;\n\nfunction TBGRAObject3D.GetRefCount: integer;\nbegin\n  result := RefCount;\nend;\n\nprocedure TBGRAObject3D.SetBiface(AValue: boolean);\nvar i: integer;\nbegin\n  for i := 0 to GetFaceCount-1 do\n    GetFace(i).Biface := AValue;\nend;\n\nprocedure TBGRAObject3D.ForEachVertex(ACallback: TVertex3DCallback);\nbegin\n  FMainPart.ForEachVertex(ACallback);\nend;\n\nprocedure TBGRAObject3D.ForEachFace(ACallback: TFace3DCallback);\nvar i: integer;\nbegin\n  for i := 0 to GetFaceCount-1 do\n    ACallback(GetFace(i));\nend;\n\nprocedure TBGRAObject3D.Update;\nvar\n  i: Integer;\nbegin\n  if FParentLighting and (FLightingNormal <> FScene.DefaultLightingNormal) then\n    FLightingNormal := FScene.DefaultLightingNormal;\n\n  if FFaceColorsInvalidated then\n  begin\n    for i := 0 to FFaceCount-1 do\n      FFaces[i].ComputeVertexColors;\n    FFaceColorsInvalidated := false;\n  end;\n\n  if FMaterialInvalidated then\n  begin\n    for i := 0 to FFaceCount-1 do\n      FFaces[i].UpdateMaterial;\n    FMaterialInvalidated := false;\n  end;\nend;\n\nfunction TBGRAObject3D.GetLightingNormal: TLightingNormal3D;\nbegin\n  result := FLightingNormal;\nend;\n\nfunction TBGRAObject3D.GetParentLighting: boolean;\nbegin\n  result := FParentLighting;\nend;\n\nprocedure TBGRAObject3D.SetLightingNormal(const AValue: TLightingNormal3D);\nbegin\n  FLightingNormal := AValue;\n  FParentLighting:= False;\nend;\n\nprocedure TBGRAObject3D.SetParentLighting(const AValue: boolean);\nbegin\n  FParentLighting:= AValue;\nend;\n\nprocedure TBGRAObject3D.ComputeWithMatrix(constref AMatrix: TMatrix3D; constref AProjection: TProjection3D);\nvar\n  i: Integer;\nbegin\n  FMainPart.ComputeWithMatrix(AMatrix,AProjection);\n  for i := 0 to FFaceCount-1 do\n    FFaces[i].ComputeViewNormalAndCenter;\n  FMainPart.NormalizeViewNormal;\nend;\n\nfunction TBGRAObject3D.AddFaceReversed(const AVertices: array of IBGRAVertex3D\n  ): IBGRAFace3D;\nvar\n  tempVertices: array of IBGRAVertex3D;\n  i: Integer;\nbegin\n  setlength(tempVertices,length(AVertices));\n  for i := 0 to high(tempVertices) do\n    tempVertices[i] := AVertices[high(AVertices)-i];\n  result := AddFace(tempVertices);\nend;\n\nfunction TBGRAObject3D.AddFace(const AVertices: array of IBGRAVertex3D): IBGRAFace3D;\nbegin\n  result := TBGRAFace3D.Create(self,AVertices);\n  AddFace(result);\nend;\n\nfunction TBGRAObject3D.AddFace(const AVertices: array of IBGRAVertex3D;\n  ABiface: boolean): IBGRAFace3D;\nbegin\n  result := TBGRAFace3D.Create(self,AVertices);\n  result.Biface := ABiface;\n  AddFace(result);\nend;\n\nfunction TBGRAObject3D.AddFace(const AVertices: array of IBGRAVertex3D; ATexture: IBGRAScanner): IBGRAFace3D;\nvar Face: IBGRAFace3D;\nbegin\n  Face := TBGRAFace3D.Create(self,AVertices);\n  Face.Texture := ATexture;\n  AddFace(Face);\n  result := face;\nend;\n\nfunction TBGRAObject3D.AddFace(const AVertices: array of IBGRAVertex3D;\n  AColor: TBGRAPixel): IBGRAFace3D;\nvar Face: IBGRAFace3D;\nbegin\n  Face := TBGRAFace3D.Create(self,AVertices);\n  Face.SetColor(AColor);\n  Face.Texture := nil;\n  AddFace(Face);\n  result := face;\nend;\n\nfunction TBGRAObject3D.AddFace(const AVertices: array of IBGRAVertex3D;\n  AColors: array of TBGRAPixel): IBGRAFace3D;\nvar\n  i: Integer;\nbegin\n  if length(AColors) <> length(AVertices) then\n    raise Exception.Create('Dimension mismatch');\n  result := TBGRAFace3D.Create(self,AVertices);\n  for i := 0 to high(AColors) do\n    result.VertexColor[i] := AColors[i];\n  AddFace(result);\nend;\n\nfunction TBGRAObject3D.GetFace(AIndex: integer): IBGRAFace3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FFaceCount) then\n    raise Exception.Create('Index out of bounds');\n  result := FFaces[AIndex];\nend;\n\nfunction TBGRAObject3D.GetFaceCount: integer;\nbegin\n  result := FFaceCount;\nend;\n\nfunction TBGRAObject3D.GetTotalVertexCount: integer;\nbegin\n  result := GetMainPart.TotalVertexCount;\nend;\n\nfunction TBGRAObject3D.GetTotalNormalCount: integer;\nbegin\n  result := GetMainPart.TotalNormalCount;\nend;\n\nfunction TBGRAObject3D.GetMaterial: IBGRAMaterial3D;\nbegin\n  result := FMaterial;\nend;\n\n\n"
  },
  {
    "path": "bgrabitmap/paletteformats.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nvar\n  PaletteFormats : array of record\n    formatIndex: TBGRAPaletteFormat;\n    ext: string;\n    description: string;\n    reader: TPaletteReaderProc;\n    writer: TPaletteWriterProc;\n    checkFormat: TCheckPaletteFormatProc;\n  end;\n\nconst\n  GimpPaletteHeader : string = 'GIMP Palette';\n  KOfficePaletteHeader : string = 'KDE RGB Palette';\n  AdobeSwatchExchangeHeader : string = 'ASEF';\n  JascPaletteHeader : string = 'JASC-PAL';\n  PaintDotNetPaletteHeader : string = '; paint.net Palette File';\n  PaintDotNetPaletteHeaderUTF8 : string = #$EF#$BB#$BF + '; paint.net Palette File';\n\nprocedure SaveToStreamAsPaintDotNet(APalette: TBGRAPalette; AStream: TStream);\n\n  procedure WriteStr(s: string);\n  begin\n    AStream.WriteBuffer(s[1],length(S));\n  end;\n  procedure WriteStrLn(s: string);\n  begin\n    WriteStr(s+#$0D#$0A);\n  end;\n\nvar\n  i: Integer;\n\nbegin\n  WriteStrLn(PaintDotNetPaletteHeaderUTF8);\n  for i := 0 to APalette.Count-1 do\n  with APalette.Color[i] do\n    WriteStrLn(IntToHex(alpha,2)+IntToHex(red,2)+IntToHex(green,2)+IntToHex(blue,2));\nend;\n\nprocedure SaveToStreamAsGimp(APalette: TBGRAPalette; AStream: TStream);\n  procedure WriteStr(s: string);\n  begin\n    AStream.WriteBuffer(s[1],length(S));\n  end;\n  procedure WriteStrLn(s: string);\n  begin\n    WriteStr(s+#$0A);\n  end;\n\n  procedure WriteChannelValue(AValue: byte);\n  var s: string;\n  begin\n    s := IntToStr(AValue);\n    while length(s) < 3 do s := ' '+s;\n    WriteStr(s);\n  end;\n\nvar\n  i: Integer;\n\nbegin\n  WriteStrLn(GimpPaletteHeader);\n  WriteStrLn('Name: Palette');\n  WriteStrLn('Columns: 3');\n  WriteStrLn('#');\n  for i := 0 to APalette.Count-1 do\n  with APalette.Color[i] do\n  begin\n    WriteChannelValue(red);\n    WriteStr(' ');\n    WriteChannelValue(green);\n    WriteStr(' ');\n    WriteChannelValue(blue);\n    WriteStrLn(#$09+BGRAToStr(APalette.Color[i],CSSColors));\n  end;\nend;\n\nprocedure SaveToStreamAsAdobeSwatchExchange(APalette: TBGRAPalette; AStream: TStream);\n  procedure WriteStr(s: string);\n  begin\n    AStream.WriteBuffer(s[1],length(S));\n  end;\n  procedure WriteInt32(AValue: Int32);\n  begin\n    AValue := NtoBE(AValue);\n    AStream.WriteBuffer(AValue,sizeof(AValue));\n  end;\n  procedure WriteInt16(AValue: Int16);\n  begin\n    AValue := NtoBE(AValue);\n    AStream.WriteBuffer(AValue,sizeof(AValue));\n  end;\n  procedure WriteSingle(AValue: Single);\n  begin\n    LongWord(AValue) := BEtoN(LongWord(AValue));\n    AStream.WriteBuffer(AValue,sizeof(AValue));\n  end;\n  procedure WriteBlock(ABlockType: Int16; AContentLength: Int32); overload;\n  begin\n    WriteInt16(ABlockType);\n    WriteInt32(AContentLength);\n  end;\n\n  procedure WriteBlock(ABlockType: Int16; AName: string; AExtraContentLength: Int32); overload;\n  var contentLength: Int32;\n    wideName: UnicodeString;\n    nameBuf: array of byte;\n    i: Integer;\n  begin\n    wideName := UTF8Decode(AName);\n    setlength(nameBuf, (length(wideName)+1)*2);\n    contentLength:= AExtraContentLength + 2 + length(nameBuf);\n    WriteBlock(ABlockType, contentLength);\n    WriteInt16(length(nameBuf) shr 1);\n    for i := 1 to length(wideName) do\n    begin\n      nameBuf[((i-1) shl 1)] := ord(wideName[i]) shr 8;\n      nameBuf[((i-1) shl 1)+1] := ord(wideName[i]) and 255;\n    end;\n    AStream.WriteBuffer(nameBuf[0],length(namebuf));\n  end;\n\nvar\n  i: Integer;\n\nbegin\n  WriteStr(AdobeSwatchExchangeHeader+#$00#$01+#$00#$00);\n  WriteInt32(APalette.Count+2); //number of blocks\n  WriteBlock($1c0, 'Palette', 0); //group start\n  for i := 0 to APalette.Count-1 do\n  with APalette.Color[i] do\n  begin\n    WriteBlock(1, BGRAToStr(APalette.Color[i],CSSColors), 4+4*3+2);\n    WriteStr('RGB ');\n    WriteSingle(red/255);\n    WriteSingle(green/255);\n    WriteSingle(blue/255);\n    WriteInt16(2); //normal\n  end;\n  WriteBlock($2c0, 0); //group end\nend;\n\nprocedure SaveToStreamAsKOffice(APalette: TBGRAPalette; AStream: TStream);\n  procedure WriteStr(s: string);\n  begin\n    AStream.WriteBuffer(s[1],length(S));\n  end;\n  procedure WriteStrLn(s: string);\n  begin\n    WriteStr(s+#$0A);\n  end;\n\n  procedure WriteChannelValue(AValue: byte);\n  begin\n    WriteStr(IntToStr(AValue));\n  end;\n\nvar\n  i: Integer;\n\nbegin\n  WriteStrLn(KOfficePaletteHeader);\n  for i := 0 to APalette.Count-1 do\n  with APalette.Color[i] do\n  begin\n    WriteChannelValue(red);\n    WriteStr(' ');\n    WriteChannelValue(green);\n    WriteStr(' ');\n    WriteChannelValue(blue);\n    WriteStrLn(#$09+BGRAToStr(APalette.Color[i],CSSColors));\n  end;\nend;\n\nprocedure SaveToStreamAsJasc(APalette: TBGRAPalette; AStream: TStream);\n  procedure WriteStr(s: string);\n  begin\n    AStream.WriteBuffer(s[1],length(S));\n  end;\n  procedure WriteStrLn(s: string);\n  begin\n    WriteStr(s+#$0D#$0A);\n  end;\n\nvar\n  i: Integer;\n\nbegin\n  WriteStrLn(JascPaletteHeader);\n  WriteStrLn('0100');\n  WriteStrLn(IntToStr(APalette.Count));\n  for i := 0 to APalette.Count-1 do\n  with APalette.Color[i] do\n    WriteStrLn(IntToStr(red)+' '+IntToStr(green)+' '+IntToStr(blue));\nend;\n\nfunction LoadFromStreamAsPaintDotNet(APalette: TBGRAPalette; AStream: TStream): boolean;\nvar lines: TStringList;\n  header,s: string;\n  idxComment: integer;\n  code: integer;\n  hexArgb: int32;\n  i: Integer;\nbegin\n  result := false;\n  lines := TStringList.Create;\n  try\n    lines.LoadFromStream(AStream);\n    if lines.Count = 0 then\n    begin\n      lines.Free;\n      exit;\n    end;\n    header := lines[0];\n    if (header <> PaintDotNetPaletteHeader) and (header <> PaintDotNetPaletteHeaderUTF8) then\n    begin\n      lines.Free;\n      exit;\n    end;\n\n    for i := 0 to lines.Count-1 do\n    begin\n      s := lines[i];\n      idxComment := pos(';',s);\n      if idxComment<>0 then s := copy(s,1,idxComment-1);\n      s := trim(s);\n      if length(s)> 0 then\n      begin\n        val('$'+s, hexArgb, code);\n        if code = 0 then\n          APalette.AddColor(BGRA((hexArgb shr 16) and 255,\n                        (hexArgb shr 8) and 255,\n                        hexArgb and 255,\n                        (hexArgb shr 24) and 255));\n      end;\n    end;\n    result := true;\n  finally\n    lines.Free;\n  end;\nend;\n\nfunction LoadFromStreamAsGimp(APalette: TBGRAPalette; AStream: TStream): boolean;\nvar lines,line: TStringList;\n  s: string;\n  idxComment: integer;\n  code: integer;\n  c: TBGRAPixel;\n  i: Integer;\nbegin\n  result := false;\n  lines := TStringList.Create;\n  line := TStringList.Create;\n  try\n    lines.LoadFromStream(AStream);\n    if (lines.Count < 3) or (lines[0] <> GimpPaletteHeader) or\n      (copy(lines[1],1,6) <> 'Name: ') or\n      (copy(lines[2],1,9) <> 'Columns: ') then\n    begin\n      lines.Free;\n      line.Free;\n      exit;\n    end;\n    for i := 3 to lines.Count-1 do\n    begin\n      s := lines[i];\n      idxComment := pos('#',s);\n      if idxComment<>0 then s := copy(s,1,idxComment-1);\n      s := trim(s);\n      if length(s)> 0 then\n      begin\n        line.CommaText := s;\n        if line.Count >= 3 then\n        begin\n          c.alpha:= 255;\n          val(line[0],c.red,code);\n          if code <> 0 then continue;\n          val(line[1],c.green,code);\n          if code <> 0 then continue;\n          val(line[2],c.blue,code);\n          if code <> 0 then continue;\n          APalette.AddColor(c);\n        end;\n      end;\n    end;\n    result := true;\n  finally\n    lines.Free;\n    line.Free;\n  end;\nend;\n\nfunction clamp(AValue, AMax: integer): integer;\nbegin\n  if AValue < 0 then result := 0 else\n  if AValue > AMax then result := AMax else\n   result := AValue;;\nend;\n\nfunction LabToRGB(L,a,b: single): TBGRAPixel; overload;\nvar r,g,blue: single;\nbegin\n  if a < 0 then\n    r := L + a + 0.5*b\n  else\n    r := L + 0.75*a + 0.5*b;\n  g := L - 0.5*a;\n  blue := L - b;\n  Result.red:= clamp(round((r)*255),255);\n  Result.green:= clamp(round((g)*255),255);\n  Result.blue:= clamp(round((blue)*255),255);\n  result.alpha := 255;\nend;\n\nfunction LoadFromStreamAsAdobeSwatchExchange(APalette: TBGRAPalette; AStream: TStream): boolean;\n  function ReadInt16: int16;\n  begin\n    {$PUSH}{$HINTS OFF}\n    AStream.Read(result, sizeof(result));\n    {$POP}\n    result := BEtoN(result);\n  end;\n  function ReadInt32: int32;\n  begin\n    {$PUSH}{$HINTS OFF}\n    AStream.Read(result, sizeof(result));\n    {$POP}\n    result := BEtoN(result);\n  end;\n  function ReadStr(ALength: integer): string;\n  begin\n    setlength(result, ALength);\n    ALength := AStream.Read(result[1], ALength);\n    setlength(result, ALength);\n  end;\n  function ReadSingle: single;\n  begin\n    {$PUSH}{$HINTS OFF}\n    AStream.Read(Result, sizeof(result));\n    {$POP}\n    LongWord(Result) := BEtoN(LongWord(Result));\n  end;\n  function DblToByte(AValue: double): byte;\n  begin\n    if AValue < 0 then result := 0\n    else if AValue > 1 then result := 255 else\n      result := round(AValue*255);\n  end;\n\nvar header: string;\n  nbBlocks,blockSize: int32;\n  blockType,nameLength: int16;\n  nextPos: int64;\n  colorFormat: string;\n  colorF: TColorF;\n  i: Integer;\nbegin\n  result := false;\n  header := ReadStr(length(AdobeSwatchExchangeHeader)+4);\n  if header <> AdobeSwatchExchangeHeader+#$00#$01+#$00#$00 then exit;\n  nbBlocks := ReadInt32;\n  for i := 0 to nbBlocks-1 do\n  begin\n    blockType := ReadInt16;\n    blockSize := ReadInt32;\n    nextPos := AStream.Position + blockSize;\n    if blockType = 1 then\n    begin\n      nameLength := ReadInt16;\n      ReadStr(nameLength*2);\n      colorFormat := ReadStr(4);\n      if colorFormat = 'RGB ' then\n      begin\n        colorF[1] := ReadSingle;\n        colorF[2] := ReadSingle;\n        colorF[3] := ReadSingle;\n        colorF[4] := 1;\n        APalette.AddColor(BGRA(DblToByte(colorF[1]),DblToByte(colorF[2]),DblToByte(colorF[3])));\n        ReadInt16; //ignore color type\n      end else\n      if colorFormat = 'CMYK' then\n      begin\n        colorF[1] := ReadSingle;\n        colorF[2] := ReadSingle;\n        colorF[3] := ReadSingle;\n        colorF[4] := ReadSingle;\n\n        APalette.AddColor(BGRA(DblToByte(1 - colorF[1] + ColorF[2]/10 + ColorF[3]/10 - ColorF[4]),\n          DblToByte(1 - colorF[2] + ColorF[1]/10 + ColorF[3]/10 - ColorF[4]),\n          DblToByte(1 - colorF[3] + ColorF[1]/10 + ColorF[2]/10 - ColorF[4])));\n        ReadInt16; //ignore color type\n      end else\n      if colorFormat = 'LAB ' then\n      begin\n        colorF[1] := ReadSingle;\n        colorF[2] := ReadSingle;\n        colorF[3] := ReadSingle;\n        colorF[4] := 1;\n\n        APalette.AddColor(LabToRGB(colorF[1],colorF[2]/128,colorF[3]/128));\n        ReadInt16; //ignore color type\n      end else\n      if colorFormat = 'GRAY' then\n      begin\n        colorF[1] := ReadSingle;\n        colorF[2] := colorF[1];\n        colorF[3] := colorF[1];\n        colorF[4] := 1;\n        APalette.AddColor(BGRA(DblToByte(colorF[1]),DblToByte(colorF[2]),DblToByte(colorF[3])));\n        ReadInt16; //ignore color type\n      end;\n    end;\n    if AStream.Position<>nextPos then\n      AStream.Position:= nextPos;\n  end;\n  result := true;\nend;\n\nfunction LoadFromStreamAsKOffice(APalette: TBGRAPalette; AStream: TStream): boolean;\nvar lines,line: TStringList;\n  s: string;\n  idxComment: integer;\n  code: integer;\n  c: TBGRAPixel;\n  i: Integer;\nbegin\n  result := false;\n  lines := TStringList.Create;\n  line := TStringList.Create;\n  try\n    lines.LoadFromStream(AStream);\n    if (lines.Count < 1) or (lines[0] <> KOfficePaletteHeader) then\n    begin\n      lines.Free;\n      line.Free;\n      exit;\n    end;\n    for i := 3 to lines.Count-1 do\n    begin\n      s := lines[i];\n      idxComment := pos('#',s);\n      if idxComment<>0 then s := copy(s,1,idxComment-1);\n      s := trim(s);\n      if length(s)> 0 then\n      begin\n        line.CommaText := s;\n        if line.Count >= 3 then\n        begin\n          c.alpha:= 255;\n          val(line[0],c.red,code);\n          if code <> 0 then continue;\n          val(line[1],c.green,code);\n          if code <> 0 then continue;\n          val(line[2],c.blue,code);\n          if code <> 0 then continue;\n          APalette.AddColor(c);\n        end;\n      end;\n    end;\n    result := true;\n  finally\n    lines.Free;\n    line.Free;\n  end;\nend;\n\nfunction LoadFromStreamAsJasc(APalette: TBGRAPalette; AStream: TStream): boolean;\nvar lines,line: TStringList;\n  s: string;\n  idxComment: integer;\n  code: integer;\n  c: TBGRAPixel;\n  i: Integer;\nbegin\n  result := false;\n  lines := TStringList.Create;\n  line := TStringList.Create;\n  try\n    lines.LoadFromStream(AStream);\n    if (lines.Count < 2) or (lines[0] <> JascPaletteHeader) or\n     (lines[1] <> '0100') then\n    begin\n      lines.Free;\n      line.Free;\n      exit;\n    end;\n    for i := 2 to lines.Count-1 do\n    begin\n      s := lines[i];\n      idxComment := pos('#',s);\n      if idxComment<>0 then s := copy(s,1,idxComment-1);\n      s := trim(s);\n      if length(s)> 0 then\n      begin\n        line.CommaText := s;\n        if line.Count >= 3 then\n        begin\n          c.alpha:= 255;\n          val(line[0],c.red,code);\n          if code <> 0 then continue;\n          val(line[1],c.green,code);\n          if code <> 0 then continue;\n          val(line[2],c.blue,code);\n          if code <> 0 then continue;\n          APalette.AddColor(c);\n        end;\n      end;\n    end;\n    result := true;\n  finally\n    lines.Free;\n    line.Free;\n  end;\nend;\n\nfunction CheckPaletteFormatAsJasc(ABuf256: string): boolean;\nbegin\n  result := (copy(ABuf256,1,length(JascPaletteHeader)+1) = JascPaletteHeader+#$0A) or\n    (copy(ABuf256,1,length(JascPaletteHeader)+2) = JascPaletteHeader+#$0D#$0A);\nend;\n\nfunction CheckPaletteFormatAsGimp(ABuf256: string): boolean;\nbegin\n  result := (copy(ABuf256,1,length(GimpPaletteHeader)+1) = GimpPaletteHeader+#$0A) or\n    (copy(ABuf256,1,length(GimpPaletteHeader)+2) = GimpPaletteHeader+#$0D#$0A);\nend;\n\nfunction CheckPaletteFormatAsKOffice(ABuf256: string): boolean;\nbegin\n  result := (copy(ABuf256,1,length(KOfficePaletteHeader)+1) = KOfficePaletteHeader+#$0A) or\n    (copy(ABuf256,1,length(KOfficePaletteHeader)+2) = KOfficePaletteHeader+#$0D#$0A);\nend;\n\nfunction CheckPaletteFormatAsPaintDotNet(ABuf256: string): boolean;\nbegin\n  result := (copy(ABuf256,1,length(PaintDotNetPaletteHeader)+1) = PaintDotNetPaletteHeader+#$0A) or\n    (copy(ABuf256,1,length(PaintDotNetPaletteHeader)+2) = PaintDotNetPaletteHeader+#$0D#$0A) or\n    (copy(ABuf256,1,length(PaintDotNetPaletteHeaderUTF8)+1) = PaintDotNetPaletteHeaderUTF8+#$0A) or\n    (copy(ABuf256,1,length(PaintDotNetPaletteHeaderUTF8)+2) = PaintDotNetPaletteHeaderUTF8+#$0D#$0A);\nend;\n\nfunction CheckPaletteFormatAsAdobeSwatchExchange(ABuf256: string): boolean;\nbegin\n  result := copy(ABuf256,1,length(AdobeSwatchExchangeHeader)) = AdobeSwatchExchangeHeader;\nend;\n\n\nprocedure RegisterDefaultPaletteFormats; forward;\n\nprocedure BGRARegisterPaletteFormat(AFormatIndex: TBGRAPaletteFormat; AExtension: string;\n  ADescription: string; AReadProc: TPaletteReaderProc; AWriteProc: TPaletteWriterProc;\n  ACheckFormatProc: TCheckPaletteFormatProc);\nvar\n  i: Integer;\nbegin\n  RegisterDefaultPaletteFormats;\n  if AFormatIndex = palUnknown then\n    raise Exception.Create('Invalid format index');\n  for i := 0 to high(PaletteFormats) do\n    if PaletteFormats[i].formatIndex = AFormatIndex then\n    with PaletteFormats[i] do\n    begin\n      ext := AExtension;\n      description := ADescription;\n      reader := AReadProc;\n      writer := AWriteProc;\n      checkFormat := ACheckFormatProc;\n      exit;\n    end;\n  setlength(PaletteFormats,length(PaletteFormats)+1);\n  with PaletteFormats[high(PaletteFormats)] do\n  begin\n    formatIndex:= AFormatIndex;\n    ext := AExtension;\n    description := ADescription;\n    reader := AReadProc;\n    writer := AWriteProc;\n    checkFormat := ACheckFormatProc;\n  end;\nend;\n\nfunction BGRARegisteredPaletteFormatFilter(AAllSupportedDescription: string): string;\nvar allExt: TStringList;\n  allDesc: string;\n  i: Integer;\nbegin\n  result := '';\n  RegisterDefaultPaletteFormats;\n  allExt := TStringList.Create;\n  allExt.CaseSensitive := false;\n  for i := 0 to high(PaletteFormats) do\n  with PaletteFormats[i] do\n  begin\n    if allExt.IndexOf(ext) = -1 then allExt.Add(ext);\n    if length(result)>0 then AppendStr(result, '|');\n    AppendStr(result, description + ' (*'+ext+')|*'+ext);\n  end;\n  if allExt.Count > 0 then\n  begin\n    allDesc := AAllSupportedDescription + ' (';\n    for i := 0 to allExt.count-1 do\n    begin\n      if i > 0 then\n        AppendStr(allDesc, '; ');\n      AppendStr(allDesc, '*' + allExt[i]);\n    end;\n    AppendStr(allDesc, ')');\n    AppendStr(allDesc, '|');\n    for i := 0 to allExt.count-1 do\n    begin\n      if i > 0 then\n        AppendStr(allDesc, '; ');\n      AppendStr(allDesc, '*' + allExt[i]);\n    end;\n    result := allDesc + '|' + result;\n  end;\n  allExt.Free;\nend;\n\nvar DefaultPaletteFormatsRegistered: boolean;\n\nprocedure RegisterDefaultPaletteFormats;\nbegin\n  if DefaultPaletteFormatsRegistered then exit;\n  DefaultPaletteFormatsRegistered := true;\n  BGRARegisterPaletteFormat(palPaintDotNet, '.txt', 'Paint.NET',\n                            @LoadFromStreamAsPaintDotNet, @SaveToStreamAsPaintDotNet,\n                            @CheckPaletteFormatAsPaintDotNet);\n  BGRARegisterPaletteFormat(palGimp, '.gpl', 'GIMP',\n                            @LoadFromStreamAsGimp, @SaveToStreamAsGimp,\n                            @CheckPaletteFormatAsGimp);\n  BGRARegisterPaletteFormat(palAdobeSwatchExchange, '.ase', 'Adobe Swatch Exchange',\n                            @LoadFromStreamAsAdobeSwatchExchange, @SaveToStreamAsAdobeSwatchExchange,\n                            @CheckPaletteFormatAsAdobeSwatchExchange);\n  BGRARegisterPaletteFormat(palKOffice, '.colors', 'KOffice',\n                            @LoadFromStreamAsKOffice, @SaveToStreamAsKOffice,\n                            @CheckPaletteFormatAsKOffice);\n  BGRARegisterPaletteFormat(palJascPSP, '.pal', 'Jasc Paint Shop Pro',\n                            @LoadFromStreamAsJasc, @SaveToStreamAsJasc,\n                            @CheckPaletteFormatAsJasc);\nend;\n\n"
  },
  {
    "path": "bgrabitmap/part3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  { @abstract(Part of a 3D object, that can be moved independently of other parts.)\n\n    A part may be directly contained by an object or be included in another part. }\n\n  TBGRAPart3D = class(TInterfacedObject,IBGRAPart3D)\n  private\n    FVertices: array of IBGRAVertex3D;\n    FVertexCount: integer;\n    FNormals: array of IBGRANormal3D;\n    FNormalCount: integer;\n    FMatrix: TMatrix3D;\n    FParts: array of IBGRAPart3D;\n    FPartCount: integer;\n    FContainer: IBGRAPart3D;\n    FCoordPool: TBGRACoordPool3D;\n    FNormalPool: TBGRANormalPool3D;\n    FObject3D: TBGRAObject3D;\n  public\n    constructor Create(AObject3D: TBGRAObject3D; AContainer: IBGRAPart3D);\n    destructor Destroy; override;\n    procedure Clear(ARecursive: boolean);\n    function Add(x,y,z: single): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D; normal: TPoint3D): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D_128): IBGRAVertex3D; overload;\n    function Add(pt: TPoint3D_128; normal: TPoint3D_128): IBGRAVertex3D; overload;\n    function Add(const coords: array of single): arrayOfIBGRAVertex3D; overload;\n    function Add(const pts: array of TPoint3D): arrayOfIBGRAVertex3D; overload;\n    function Add(const pts: array of TPoint3D_128): arrayOfIBGRAVertex3D; overload;\n    procedure Add(const pts: array of IBGRAVertex3D); overload;\n    procedure Add(AVertex: IBGRAVertex3D); overload;\n    function AddNormal(x,y,z: single): IBGRANormal3D; overload;\n    function AddNormal(pt: TPoint3D): IBGRANormal3D; overload;\n    function AddNormal(pt: TPoint3D_128): IBGRANormal3D; overload;\n    procedure AddNormal(ANormal: IBGRANormal3D); overload;\n    procedure RemoveVertex(Index: integer);\n    procedure RemoveNormal(Index: integer);\n    function GetBoundingBox: TBox3D;\n    function GetRadius: single;\n    function GetMatrix: TMatrix3D;\n    function GetPart(AIndex: Integer): IBGRAPart3D;\n    function GetPartCount: integer;\n    function GetVertex(AIndex: Integer): IBGRAVertex3D;\n    function GetVertexCount: integer;\n    function GetNormal(AIndex: Integer): IBGRANormal3D;\n    function GetNormalCount: integer;\n    function GetTotalVertexCount: integer;\n    function GetTotalNormalCount: integer;\n    function GetContainer: IBGRAPart3D;\n    procedure SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\n    procedure SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\n    procedure ResetTransform;\n    procedure Translate(x,y,z: single; Before: boolean = true); overload;\n    procedure Translate(ofs: TPoint3D; Before: boolean = true); overload;\n    procedure Scale(size: single; Before: boolean = true); overload;\n    procedure Scale(x,y,z: single; Before: boolean = true); overload;\n    procedure Scale(size: TPoint3D; Before: boolean = true); overload;\n    procedure RotateXDeg(angle: single; Before: boolean = true);\n    procedure RotateYDeg(angle: single; Before: boolean = true);\n    procedure RotateZDeg(angle: single; Before: boolean = true);\n    procedure RotateXRad(angle: single; Before: boolean = true);\n    procedure RotateYRad(angle: single; Before: boolean = true);\n    procedure RotateZRad(angle: single; Before: boolean = true);\n    procedure SetMatrix(const AValue: TMatrix3D);\n    procedure ComputeWithMatrix(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\n    function ComputeCoordinate(var ASceneCoord: TPoint3D_128; const AProjection: TProjection3D): TPointF;\n    procedure NormalizeViewNormal;\n    function CreatePart: IBGRAPart3D;\n    procedure LookAt(ALookWhere,ATopDir: TPoint3D);\n    procedure RemoveUnusedVertices;\n    function IndexOf(AVertex: IBGRAVertex3D): integer;\n    procedure ForEachVertex(ACallback: TVertex3DCallback);\n  end;\n\n{ TBGRAPart3D }\n\nprocedure TBGRAPart3D.LookAt(ALookWhere,ATopDir: TPoint3D);\nvar ZDir, XDir, YDir: TPoint3D_128;\n    ViewPoint: TPoint3D_128;\n    CurPart: IBGRAPart3D;\n    ComposedMatrix: TMatrix3D;\nbegin\n  YDir := -Point3D_128(ATopDir);\n  if IsPoint3D_128_Zero(YDir) then exit;\n  Normalize3D_128(YDir);\n\n  ComposedMatrix := FMatrix;\n  CurPart := self.FContainer;\n  while CurPart <> nil do\n  begin\n    ComposedMatrix := CurPart.Matrix*ComposedMatrix;\n    CurPart := CurPart.Container;\n  end;\n  ViewPoint := ComposedMatrix*Point3D_128_Zero;\n\n  ZDir := Point3D_128(ALookWhere)-ViewPoint;\n  if IsPoint3D_128_Zero(ZDir) then exit;\n  Normalize3D_128(ZDir);\n\n  VectProduct3D_128(YDir,ZDir,XDir);\n  VectProduct3D_128(ZDir,XDir,YDir); //correct Y dir\n\n  FMatrix := Matrix3D(XDir,YDir,ZDir,ViewPoint);\n  ComposedMatrix := MatrixIdentity3D;\n  CurPart := self.FContainer;\n  while CurPart <> nil do\n  begin\n    ComposedMatrix := CurPart.Matrix*ComposedMatrix;\n    CurPart := CurPart.Container;\n  end;\n  FMatrix := MatrixInverse3D(ComposedMatrix)*FMatrix;\nend;\n\nprocedure TBGRAPart3D.RemoveUnusedVertices;\nvar\n  i: Integer;\nbegin\n  for i := FVertexCount-1 downto 0 do\n    if FVertices[i].Usage <= 2 then RemoveVertex(i);\n  for i := 0 to FPartCount-1 do\n    FParts[i].RemoveUnusedVertices;\nend;\n\nfunction TBGRAPart3D.IndexOf(AVertex: IBGRAVertex3D): integer;\nvar i: integer;\nbegin\n  for i := 0 to FVertexCount-1 do\n    if FVertices[i] = AVertex then\n    begin\n      result := i;\n      exit;\n    end;\n  result := -1;\nend;\n\nprocedure TBGRAPart3D.ForEachVertex(ACallback: TVertex3DCallback);\nvar i: integer;\nbegin\n  for i := 0 to FVertexCount-1 do\n    ACallback(FVertices[i]);\nend;\n\nprocedure TBGRAPart3D.Add(AVertex: IBGRAVertex3D);\nbegin\n  if FVertexCount = length(FVertices) then\n    setlength(FVertices, FVertexCount*2+3);\n  FVertices[FVertexCount] := AVertex;\n  inc(FVertexCount);\nend;\n\nfunction TBGRAPart3D.AddNormal(x, y, z: single): IBGRANormal3D;\nbegin\n  if not Assigned(FNormalPool) then FNormalPool := TBGRANormalPool3D.Create(4);\n  result := TBGRANormal3D.Create(FNormalPool,Point3D_128(x,y,z));\n  AddNormal(result);\nend;\n\nfunction TBGRAPart3D.AddNormal(pt: TPoint3D): IBGRANormal3D;\nbegin\n  if not Assigned(FNormalPool) then FNormalPool := TBGRANormalPool3D.Create(4);\n  result := TBGRANormal3D.Create(FNormalPool,pt);\n  AddNormal(result);\nend;\n\nfunction TBGRAPart3D.AddNormal(pt: TPoint3D_128): IBGRANormal3D;\nbegin\n  if not Assigned(FNormalPool) then FNormalPool := TBGRANormalPool3D.Create(4);\n  result := TBGRANormal3D.Create(FNormalPool,pt);\n  AddNormal(result);\nend;\n\nprocedure TBGRAPart3D.AddNormal(ANormal: IBGRANormal3D);\nbegin\n  if FNormalCount = length(FNormals) then\n    setlength(FNormals, FNormalCount*2+3);\n  FNormals[FNormalCount] := ANormal;\n  inc(FNormalCount);\nend;\n\nprocedure TBGRAPart3D.RemoveVertex(Index: integer);\nvar i: integer;\nbegin\n  if (Index >= 0) and (Index < FVertexCount) then\n  begin\n    for i := Index to FVertexCount-2 do\n      FVertices[i] := FVertices[i+1];\n    FVertices[FVertexCount-1] := nil;\n    dec(FVertexCount);\n  end;\nend;\n\nprocedure TBGRAPart3D.RemoveNormal(Index: integer);\nvar i: integer;\nbegin\n  if (Index >= 0) and (Index < FNormalCount) then\n  begin\n    for i := Index to FNormalCount-2 do\n      FNormals[i] := FNormals[i+1];\n    FNormals[FNormalCount-1] := nil;\n    dec(FNormalCount);\n  end;\nend;\n\nfunction TBGRAPart3D.GetRadius: single;\nvar i: integer;\n    pt: TPoint3D_128;\n    d: single;\nbegin\n  result := 0;\n  for i := 0 to GetVertexCount-1 do\n  begin\n    pt := GetVertex(i).SceneCoord_128;\n    d:= sqrt(DotProduct3D_128(pt,pt));\n    if d > result then result := d;\n  end;\nend;\n\nconstructor TBGRAPart3D.Create(AObject3D: TBGRAObject3D; AContainer: IBGRAPart3D);\nbegin\n  FObject3D := AObject3D;\n  FContainer := AContainer;\n  FMatrix := MatrixIdentity3D;\n  FCoordPool := TBGRACoordPool3D.Create(4);\n  FNormalPool := nil;\n  FNormalCount:= 0;\n  FVertexCount := 0;\nend;\n\ndestructor TBGRAPart3D.Destroy;\nbegin\n  FVertices := nil;\n  FVertexCount := 0;\n  if FCoordPool.UsedCapacity > 0 then\n    raise Exception.Create('Coordinate pool still used. Please set vertex references to nil before destroying the scene.');\n  FreeAndNil(FCoordPool);\n  if Assigned(FNormalPool) then\n  begin\n    if FNormalPool.UsedCapacity > 0 then\n      raise Exception.Create('Normal pool still used');\n    FreeAndNil(FNormalPool);\n  end;\n  inherited Destroy;\nend;\n\nprocedure TBGRAPart3D.Clear(ARecursive: boolean);\nvar i: integer;\nbegin\n  FVertices := nil;\n  FVertexCount := 0;\n  FNormals := nil;\n  FNormalCount := 0;\n  if ARecursive then\n  begin\n    for i := 0 to FPartCount-1 do\n      FParts[i].Clear(ARecursive);\n    FParts := nil;\n    FPartCount := 0;\n  end;\nend;\n\nfunction TBGRAPart3D.Add(x, y, z: single): IBGRAVertex3D;\nbegin\n  result := TBGRAVertex3D.Create(FObject3D,FCoordPool,Point3D(x,y,z));\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(pt: TPoint3D): IBGRAVertex3D;\nbegin\n  result := TBGRAVertex3D.Create(FObject3D,FCoordPool,pt);\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(pt: TPoint3D; normal: TPoint3D): IBGRAVertex3D;\nbegin\n  result := TBGRAVertex3D.Create(FObject3D,FCoordPool,pt);\n  result.CustomNormal := normal;\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(pt: TPoint3D_128): IBGRAVertex3D;\nbegin\n  result := TBGRAVertex3D.Create(FObject3D,FCoordPool,pt);\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(pt: TPoint3D_128; normal: TPoint3D_128): IBGRAVertex3D;\nbegin\n  result := TBGRAVertex3D.Create(FObject3D,FCoordPool,pt);\n  result.CustomNormal := Point3D(normal);\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(const coords: array of single\n  ): arrayOfIBGRAVertex3D;\nvar pts: array of TPoint3D;\n    CoordsIdx: integer;\n    i: Integer;\nbegin\n  if length(coords) mod 3 <> 0 then\n    raise exception.Create('Array size must be a multiple of 3');\n  setlength(pts, length(coords) div 3);\n  coordsIdx := 0;\n  for i := 0 to high(pts) do\n  begin\n    pts[i] := Point3D(coords[CoordsIdx],coords[CoordsIdx+1],coords[CoordsIdx+2]);\n    inc(coordsIdx,3);\n  end;\n  result := Add(pts);\nend;\n\nfunction TBGRAPart3D.Add(const pts: array of TPoint3D): arrayOfIBGRAVertex3D;\nvar\n  i: Integer;\nbegin\n  setlength(result, length(pts));\n  for i := 0 to high(pts) do\n    result[i] := TBGRAVertex3D.Create(FObject3D,FCoordPool,pts[i]);\n  Add(result);\nend;\n\nfunction TBGRAPart3D.Add(const pts: array of TPoint3D_128\n  ): arrayOfIBGRAVertex3D;\nvar\n  i: Integer;\nbegin\n  setlength(result, length(pts));\n  for i := 0 to high(pts) do\n    result[i] := TBGRAVertex3D.Create(FObject3D,FCoordPool,pts[i]);\n  Add(result);\nend;\n\nprocedure TBGRAPart3D.Add(const pts: array of IBGRAVertex3D);\nvar\n  i: Integer;\nbegin\n  if FVertexCount + length(pts) > length(FVertices) then\n    setlength(FVertices, (FVertexCount*2 + length(pts))+1);\n  for i := 0 to high(pts) do\n  begin\n    FVertices[FVertexCount] := pts[i];\n    inc(FVertexCount);\n  end;\nend;\n\nfunction TBGRAPart3D.GetBoundingBox: TBox3D;\nvar i: integer;\n    pt: TPoint3D_128;\nbegin\n  if GetVertexCount > 0 then\n  begin\n    result.min := GetVertex(0).SceneCoord;\n    result.max := result.min;\n  end else\n  begin\n    result.min := Point3D(0,0,0);\n    result.max := Point3D(0,0,0);\n    exit;\n  end;\n  for i := 1 to GetVertexCount-1 do\n  begin\n    pt := GetVertex(i).SceneCoord_128;\n    if pt.x < result.min.x then result.min.x := pt.x else\n    if pt.x > result.max.x then result.max.x := pt.x;\n    if pt.y < result.min.y then result.min.y := pt.y else\n    if pt.y > result.max.y then result.max.y := pt.y;\n    if pt.z < result.min.z then result.min.z := pt.z else\n    if pt.z > result.max.z then result.max.z := pt.z;\n  end;\nend;\n\nfunction TBGRAPart3D.GetMatrix: TMatrix3D;\nbegin\n  result := FMatrix;\nend;\n\nfunction TBGRAPart3D.GetPart(AIndex: Integer): IBGRAPart3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FPartCount) then\n    raise ERangeError.Create('Index of out bounds');\n  result := FParts[AIndex];\nend;\n\nfunction TBGRAPart3D.GetPartCount: integer;\nbegin\n  result := FPartCount;\nend;\n\nfunction TBGRAPart3D.GetVertex(AIndex: Integer): IBGRAVertex3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise ERangeError.Create('Index of out bounds');\n  result := FVertices[AIndex];\nend;\n\nfunction TBGRAPart3D.GetVertexCount: integer;\nbegin\n  result := FVertexCount;\nend;\n\nfunction TBGRAPart3D.GetNormal(AIndex: Integer): IBGRANormal3D;\nbegin\n  if (AIndex < 0) or (AIndex >= FNormalCount) then\n    raise ERangeError.Create('Index of out bounds');\n  result := FNormals[AIndex];\nend;\n\nfunction TBGRAPart3D.GetNormalCount: integer;\nbegin\n  result := FNormalCount;\nend;\n\nfunction TBGRAPart3D.GetTotalVertexCount: integer;\nvar i: integer;\nbegin\n  result := GetVertexCount;\n  for i := 0 to GetPartCount-1 do\n    inc(result, GetPart(i).GetTotalVertexCount);\nend;\n\nfunction TBGRAPart3D.GetTotalNormalCount: integer;\nvar i: integer;\nbegin\n  result := GetNormalCount;\n  for i := 0 to GetPartCount-1 do\n    inc(result, GetPart(i).GetTotalNormalCount);\nend;\n\nprocedure TBGRAPart3D.ResetTransform;\nbegin\n  FMatrix := MatrixIdentity3D;\nend;\n\nprocedure TBGRAPart3D.Scale(size: single; Before: boolean = true);\nbegin\n  Scale(size,size,size,Before);\nend;\n\nprocedure TBGRAPart3D.Scale(x, y, z: single; Before: boolean = true);\nbegin\n  Scale(Point3D(x,y,z),Before);\nend;\n\nprocedure TBGRAPart3D.Scale(size: TPoint3D; Before: boolean = true);\nbegin\n  if Before then\n    FMatrix := FMatrix * MatrixScale3D(size)\n  else\n    FMatrix := MatrixScale3D(size)*FMatrix;\nend;\n\nprocedure TBGRAPart3D.RotateXDeg(angle: single; Before: boolean = true);\nbegin\n  RotateXRad(-angle*Pi/180, Before);\nend;\n\nprocedure TBGRAPart3D.RotateYDeg(angle: single; Before: boolean = true);\nbegin\n  RotateYRad(-angle*Pi/180, Before);\nend;\n\nprocedure TBGRAPart3D.RotateZDeg(angle: single; Before: boolean = true);\nbegin\n  RotateZRad(-angle*Pi/180, Before);\nend;\n\nprocedure TBGRAPart3D.RotateXRad(angle: single; Before: boolean = true);\nbegin\n  if Before then\n    FMatrix := FMatrix * MatrixRotateX(angle)\n  else\n    FMatrix := MatrixRotateX(angle) * FMatrix;\nend;\n\nprocedure TBGRAPart3D.RotateYRad(angle: single; Before: boolean = true);\nbegin\n  if Before then\n    FMatrix := FMatrix * MatrixRotateY(angle)\n  else\n    FMatrix := MatrixRotateY(angle) * FMatrix;\nend;\n\nprocedure TBGRAPart3D.RotateZRad(angle: single; Before: boolean = true);\nbegin\n  if Before then\n    FMatrix := FMatrix * MatrixRotateZ(angle)\n  else\n    FMatrix := MatrixRotateZ(angle) * FMatrix;\nend;\n\nprocedure TBGRAPart3D.SetMatrix(const AValue: TMatrix3D);\nbegin\n  FMatrix := AValue;\nend;\n\n{$PUSH}{$OPTIMIZATION OFF} //avoids Internal error 2012090607\nprocedure TBGRAPart3D.ComputeWithMatrix(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\nvar\n  i: Integer;\n  Composed: TMatrix3D;\nbegin\n  Composed := AMatrix* self.FMatrix;\n  FCoordPool.ComputeWithMatrix(Composed, AProjection);\n  if Assigned(FNormalPool) then FNormalPool.ComputeWithMatrix(Composed);\n  for i := 0 to FPartCount-1 do\n    FParts[i].ComputeWithMatrix(Composed,AProjection);\nend;\n{$POP}\n\nfunction TBGRAPart3D.ComputeCoordinate(var ASceneCoord: TPoint3D_128; const AProjection: TProjection3D): TPointF;\nvar part: IBGRAPart3D;\n  newViewCoord: TPoint3D_128;\n  InvZ: single;\nbegin\n  newViewCoord := FMatrix * ASceneCoord;\n  part := FContainer;\n  while part <> nil do\n  begin\n    newViewCoord := part.Matrix * newViewCoord;\n    part := part.Container;\n  end;\n  if NewViewCoord.z > 0 then\n  begin\n    InvZ := 1/NewViewCoord.z;\n    result := PointF(NewViewCoord.x*InvZ*AProjection.Zoom.x + AProjection.Center.x,\n                     NewViewCoord.y*InvZ*AProjection.Zoom.Y + AProjection.Center.y);\n  end else\n    result := PointF(0,0);\nend;\n\nprocedure TBGRAPart3D.NormalizeViewNormal;\nvar\n  i: Integer;\nbegin\n  for i := 0 to FVertexCount-1 do\n    FVertices[i].NormalizeViewNormal;\n  for i := 0 to FPartCount-1 do\n    FParts[i].NormalizeViewNormal;\nend;\n\nprocedure TBGRAPart3D.Translate(x, y, z: single; Before: boolean = true);\nbegin\n  Translate(Point3D(x,y,z),Before);\nend;\n\nprocedure TBGRAPart3D.Translate(ofs: TPoint3D; Before: boolean = true);\nbegin\n  if Before then\n    FMatrix := FMatrix * MatrixTranslation3D(ofs)\n  else\n    FMatrix := MatrixTranslation3D(ofs)*FMatrix;\nend;\n\nfunction TBGRAPart3D.CreatePart: IBGRAPart3D;\nbegin\n  if FPartCount = length(FParts) then\n    setlength(FParts, FPartCount*2+1);\n  result := TBGRAPart3D.Create(FObject3D,self);\n  FParts[FPartCount] := result;\n  inc(FPartCount);\nend;\n\nfunction TBGRAPart3D.GetContainer: IBGRAPart3D;\nbegin\n  result := FContainer;\nend;\n\nprocedure TBGRAPart3D.SetVertex(AIndex: Integer; AValue: IBGRAVertex3D);\nbegin\n  if (AIndex < 0) or (AIndex >= FVertexCount) then\n    raise ERangeError.Create('Index of out bounds');\n  FVertices[AIndex] := AValue;\nend;\n\nprocedure TBGRAPart3D.SetNormal(AIndex: Integer; AValue: IBGRANormal3D);\nbegin\n  if (AIndex < 0) or (AIndex >= FNormalCount) then\n    raise ERangeError.Create('Index of out bounds');\n  FNormals[AIndex] := AValue;\nend;\n\n\n"
  },
  {
    "path": "bgrabitmap/perspectivecolorscan.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n    {$IFDEF PARAM_USESSE} {$asmmode intel}\n      minVal := 0;\n      maxVal := 65535;\n      asm\n        movss xmm6, invZ\n        shufps xmm6,xmm6,0  //xmm6 = invZ\n        movss xmm7, invZStep\n        shufps xmm7,xmm7,0 //xmm7 = invZStep\n        movups xmm4, colorPos\n        movups xmm5, colorStep\n\n        movss xmm2, minVal\n        shufps xmm2,xmm2,0 //xmm2 = minVal\n        movss xmm3, maxVal\n        shufps xmm3,xmm3,0 //xmm3 = maxVal\n      end;\n\n      for i := ix1 to ix2 do\n      begin\n        {$IFDEF PARAM_USEZBUFFER}\n        if invZ > zbufferpos^ then\n        {$ENDIF}\n        begin\n          {$IFDEF PARAM_USEZBUFFER}\n          zbufferpos^ := invz;\n          {$ENDIF}\n          asm\n            movaps xmm0,xmm6\n            rcpps xmm0,xmm0\n            mulps xmm0, xmm4\n            minps xmm0, xmm3\n            maxps xmm0, xmm2\n            {$IFDEF PARAM_USESSE2}\n            cvtps2dq xmm0,xmm0\n            movups cInt, xmm0\n            {$ELSE}\n            movups colorPosByZ, xmm0\n            {$ENDIF}\n          end;\n          {$IFDEF PARAM_USESSE2}\n          c.red := GammaCompressionTab[cInt.r];\n          c.green := GammaCompressionTab[cInt.g];\n          c.blue := GammaCompressionTab[cInt.b];\n          c.alpha := GammaCompressionTab[cInt.a];\n          DrawPixelInlineWithAlphaCheck(pdest, c);\n          {$ELSE}\n          ec.red := round(colorPosByZ[1]);\n          ec.green := round(colorPosByZ[2]);\n          ec.blue := round(colorPosByZ[3]);\n          ec.alpha := round(colorPosByZ[4]);\n          DrawPixelInlineWithAlphaCheck(pdest, GammaCompression(ec));\n          {$ENDIF}\n        end;\n        asm\n          addps xmm6,xmm7\n          addps xmm4,xmm5\n          {$IFDEF PARAM_USEZBUFFER}\n          movss invZ,xmm6\n          {$ENDIF}\n        end;\n        inc(pdest);\n        {$IFDEF PARAM_USEZBUFFER}\n        inc(zbufferpos);\n        {$ENDIF}\n      end;\n    {$ELSE}\n      for i := ix1 to ix2 do\n      begin\n        {$IFDEF PARAM_USEZBUFFER}\n        if invZ > zbufferpos^ then\n        {$ENDIF}\n        begin\n          {$IFDEF PARAM_USEZBUFFER}\n          zbufferpos^ := invz;\n          {$ENDIF}\n          z := 1/invZ;\n          r := round(z*colorPos[1]);\n          g := round(z*colorPos[2]);\n          b := round(z*colorPos[3]);\n          a := round(z*colorPos[4]);\n          if r < 0 then ec.red := 0 else\n          if r > 65535 then ec.red := 65535\n          else ec.red := r;\n          if g < 0 then ec.green := 0 else\n          if g > 65535 then ec.green := 65535\n          else ec.green := g;\n          if b < 0 then ec.blue := 0 else\n          if b > 65535 then ec.blue := 65535\n          else ec.blue := b;\n          if a < 0 then ec.alpha := 0 else\n          if a > 65535 then ec.alpha := 65535\n          else ec.alpha := a;\n          DrawPixelInlineWithAlphaCheck(pdest, GammaCompression(ec));\n        end;\n        colorPos := colorPos + colorStep;\n        IncF(invZ, invZStep);\n        inc(pdest);\n        {$IFDEF PARAM_USEZBUFFER}\n        inc(zbufferpos);\n        {$ENDIF}\n      end;\n    {$ENDIF}\n\n"
  },
  {
    "path": "bgrabitmap/perspectivescan.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$i bgrasse.inc}\n\n  var\n    //loop variables\n    pdest: PBGRAPixel;\n    i: LongInt;\n\n    InvXLen: single;    //inverse of horizontal length in pixels\n    t: single;          //initial horizontal position in [0..1]\n   {$IFNDEF PARAM_USESOLIDCOLOR}\n     texPosByZ: TPointF;\n     intTexPos: packed record\n       x,y: integer;\n     end;\n     texPos: TPoint3D_128;    //texture start position\n   {$ENDIF}\n   InvZPos: single;         //Z: depth start position\n\n   {$IFNDEF PARAM_USESOLIDCOLOR}\n     texStep: TPoint3D_128;   //texture step\n   {$ENDIF}\n   zStep: single;      //depth step\n\n  {$IFNDEF PARAM_USESOLIDCOLOR}\n    texVect: TPointF;   //texture vector between start and end of line\n  {$ENDIF}\n    zLen: single;       //depth difference\n  {$IFDEF PARAM_USESHADER}\n    tempVect3D: TPoint3D_128;\n  {$ENDIF}\n\n  {$IFNDEF PARAM_USESOLIDCOLOR}\n    {$DEFINE PARAM_USEZPOS}\n  {$ENDIF}\n  {$IFDEF PARAM_USESHADER}\n    {$DEFINE PARAM_USEZPOS}\n  {$ENDIF}\n\n  {$IFDEF PARAM_USEZPOS}\n    zPos: single;\n  {$ENDIF}\n\n  {$IFDEF PARAM_USEZBUFFER}\n    pzbuffer: PSingle;\n  {$ENDIF}\n\n  {$IFDEF PARAM_USELIGHTING}\n    light,lightStep,lightDiff,lightAcc,lightMod: word;\n    lightLen: integer;\n\n    procedure NextLight; inline;\n    begin\n      light := (light+lightStep) and 65535;\n      inc(lightAcc,lightDiff);\n      if lightAcc >= lightMod then\n      begin\n        dec(lightAcc,lightMod);\n        light := (light + 1) and 65535;\n      end;\n    end;\n  {$ENDIF}\n\n  begin\n    InvXLen := 1/(info2.interX - info1.interX);\n    t := ((ix1+0.5)-info1.interX)*InvXLen;\n\n  {$IFNDEF PARAM_USESOLIDCOLOR}\n    texVect := info2.texCoordDivByZ-info1.texCoordDivByZ;\n    texPos := Point3D_128(info1.texCoordDivByZ + texVect*t);\n    texStep := Point3D_128(texVect*InvXLen);\n  {$ENDIF}\n    zLen := info2.coordInvZ-info1.coordInvZ;\n    InvZPos := info1.coordInvZ+t*zLen;\n    zStep := zLen*InvXLen;\n\n  {$IFDEF PARAM_USESHADER}\n    tempVect3D := info2.Position3D - info1.Position3D;\n    ShaderContext^.PositionInvZ := info1.Position3D + tempVect3D*t;\n    ShaderContext^.PositionStepInvZ := tempVect3D*InvXLen;\n\n    tempVect3D := info2.Normal3D - info1.Normal3D;\n    ShaderContext^.NormalInvZ := info1.Normal3D + tempVect3D*t;\n    ShaderContext^.NormalStepInvZ := tempVect3D*InvXLen;\n  {$endif}\n\n    pdest := bmp.ScanLine[yb]+ix1;\n  {$IFDEF PARAM_USEZBUFFER}\n    pzbuffer := zbuffer + yb*bmp.Width + ix1;\n  {$ENDIF}\n\n  {$IFDEF PARAM_USELIGHTING}\n    if ix2 = ix1 then\n    begin\n      light := (info1.lightness+info2.lightness) div 2;\n      lightStep := 0;\n      lightDiff := 0;\n      lightMod := 1;\n    end\n    else\n    begin\n      light := info1.lightness;\n      lightLen := info2.lightness-info1.lightness;\n      if lightLen >= 0 then\n      begin\n        lightStep := lightLen div (ix2-ix1);\n        lightMod := ix2-ix1;\n        lightDiff := lightLen - lightStep*(ix2-ix1);\n      end else\n      begin\n        lightStep := (-lightLen+(ix2-ix1-1)) div (ix2-ix1);\n        lightMod := ix2-ix1;\n        lightDiff := lightLen + lightStep*(ix2-ix1);\n        lightStep := 65536 - lightStep;\n      end;\n    end;\n    lightAcc := lightDiff div 2;\n  {$ENDIF}\n\n  {$IFDEF BGRASSE_AVAILABLE}\n    if UseSSE then\n    begin\n      {$DEFINE PARAM_USESSE}\n      if UseSSE3 then\n      begin\n        {$DEFINE PARAM_USESSE3}\n        if WithInterpolation then\n        begin\n          {$DEFINE PARAM_USEINTERPOLATION}\n          {$i perspectivescan2.inc}\n          {$UNDEF PARAM_USEINTERPOLATION}\n        end else\n        begin\n          {$i perspectivescan2.inc}\n        end;\n        {$UNDEF PARAM_USESSE3}\n      end else\n      begin\n        if WithInterpolation then\n        begin\n          {$DEFINE PARAM_USEINTERPOLATION}\n          {$i perspectivescan2.inc}\n          {$UNDEF PARAM_USEINTERPOLATION}\n        end else\n        begin\n          {$i perspectivescan2.inc}\n        end;\n      end;\n      {$UNDEF PARAM_USESSE}\n    end else\n  {$ENDIF}\n    begin\n      if WithInterpolation then\n      begin\n        {$DEFINE PARAM_USEINTERPOLATION}\n        {$i perspectivescan2.inc}\n        {$UNDEF PARAM_USEINTERPOLATION}\n      end else\n      begin\n        {$i perspectivescan2.inc}\n      end;\n    end;\n  end;\n{$undef PARAM_USELIGHTING}\n{$undef PARAM_USESHADER}\n{$undef PARAM_USESOLIDCOLOR}\n{$undef PARAM_USEZBUFFER}\n{$undef PARAM_USEZPOS}\n"
  },
  {
    "path": "bgrabitmap/perspectivescan2.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$i bgrasse.inc}\n\n{$ifdef BGRASSE_AVAILABLE}{$asmmode intel}{$endif}\n    {$IFDEF PARAM_USESSE}\n      asm\n      {$IFDEF PARAM_USESHADER}\n         {$IFDEF cpux86_64}\n          mov rax, ShaderContext\n          movaps xmm2, [rax+32] //positionInvZ\n          movaps xmm3, [rax+48] //normalInvZ\n         {$ELSE}\n          mov eax, ShaderContext\n          movaps xmm2, [eax+32] //positionInvZ\n          movaps xmm3, [eax+48] //normalInvZ\n         {$ENDIF}\n      {$ENDIF}\n      {$IFNDEF PARAM_USESOLIDCOLOR}\n         xorps xmm5,xmm5\n         movlps xmm5, texPos\n      {$ENDIF}\n      end;\n    {$ENDIF}\n      for i := ix1 to ix2 do\n      begin\n    {$IFDEF PARAM_USESSE}\n      {$IFDEF PARAM_USEZBUFFER}\n        if InvZPos > pzbuffer^ then\n        begin\n          pzbuffer^ := InvZPos;\n      {$ENDIF}\n          asm\n             movss xmm4, InvZPos\n             rcpss xmm4,xmm4         //zPos\n             shufps xmm4,xmm4,0     //broadcast\n\n           {$IFDEF PARAM_USESHADER}\n             {$ifdef cpux86_64}\n             mov rax, ShaderContext\n             {$else}\n             mov eax, ShaderContext\n             {$endif}\n\n             mulps xmm2, xmm4       //positionInvZ*zPos (A)\n             mulps xmm3, xmm4       //normalInvZ*zPos\n             {$ifdef cpux86_64}\n             movaps [rax+0], xmm2   //(A) Position\n             {$else}\n             movaps [eax+0], xmm2   //(A) Position\n             {$endif}\n\n             //normalize\n             movaps xmm1, xmm3\n             mulps xmm3, xmm3\n\n             {$IFDEF PARAM_USESSE3}\n             haddps xmm3,xmm3\n             haddps xmm3,xmm3\n             {$ELSE}\n             //mix1\n             movaps xmm7, xmm3\n             shufps xmm7, xmm7, $4e\n             addps xmm3, xmm7\n             //mix2\n             movaps xmm7, xmm3\n             shufps xmm7, xmm7, $11\n             addps xmm3, xmm7\n             {$ENDIF}\n\n             xorps xmm7,xmm7\n             comiss xmm3,xmm7\n             jna @skipnormal\n\n             rsqrtps xmm3,xmm3\n             mulps xmm3, xmm1  //apply\n             @skipnormal:\n\n             {$ifdef cpux86_64}\n             movaps [rax+16], xmm3  //Normal\n             {$else}\n             movaps [eax+16], xmm3  //Normal\n             {$endif}\n           {$ENDIF}\n\n           {$IFNDEF PARAM_USESOLIDCOLOR}\n             mulps xmm5, xmm4\n             {$IFDEF PARAM_USEINTERPOLATION}\n               movlps texPosByZ, xmm5\n             {$ELSE}\n               cvtps2dq xmm1,xmm5\n               movlps intTexPos,xmm1\n             {$ENDIF}\n           {$ENDIF}\n          end;\n    {$ELSE}\n      {$IFDEF PARAM_USEZBUFFER}\n        if InvZPos > pzbuffer^ then\n        begin\n          pzbuffer^ := InvZPos;\n      {$ENDIF}\n        {$IFDEF PARAM_USESHADER}\n          zPos := 1/InvZPos;\n          with ShaderContext^ do\n          begin\n            Normal := NormalInvZ*zPos;\n            Normalize3D_128(Normal);\n            Position := PositionInvZ*zPos;\n          end;\n        {$ELSE}\n          {$IFNDEF PARAM_USESOLIDCOLOR}\n            zPos := 1/InvZPos;\n          {$ENDIF}\n        {$ENDIF}\n    {$ENDIF}\n          DrawPixelInlineWithAlphaCheck(pdest,\n            {$IFDEF PARAM_USESHADER} ShaderFunction(ShaderContext, {$ENDIF}\n            {$IFDEF PARAM_USELIGHTING} ApplyLightnessFast( {$ENDIF}\n              {$IFDEF PARAM_USESOLIDCOLOR}\n                solidColor\n              {$ELSE}\n                {$IFNDEF PARAM_USESSE}\n                  {$IFDEF PARAM_USEINTERPOLATION}\n                    scanAtFunc(texPos.x*zPos,texPos.y*zPos)\n                  {$ELSE}\n                    scanAtIntegerFunc(round(texPos.x*zPos),round(texPos.y*zPos))\n                  {$ENDIF}\n                {$ELSE}\n                  {$IFDEF PARAM_USEINTERPOLATION}\n                    scanAtFunc(texPosByZ.x,texPosByZ.y)\n                  {$ELSE}\n                    scanAtIntegerFunc(intTexPos.x,intTexPos.y)\n                  {$ENDIF}\n                {$ENDIF}\n              {$ENDIF}\n            {$IFDEF PARAM_USELIGHTING} ,light) {$ENDIF}\n            {$IFDEF PARAM_USESHADER} ) {$ENDIF}\n            );\n      {$IFDEF PARAM_USEZBUFFER}\n        end;\n        inc(pzbuffer);\n      {$ENDIF}\n\n      {$IFDEF PARAM_USESSE}\n        {$IFNDEF PARAM_USESOLIDCOLOR}\n        asm\n          movups xmm5, texPos\n          movups xmm1, texStep\n        end;\n        IncF(InvZPos, zStep);\n        asm\n          addps xmm5, xmm1\n          movlps texPos, xmm5\n        end;\n        {$ELSE}\n        IncF(InvZPos, zStep);\n        {$ENDIF}\n      {$ELSE}\n        {$IFNDEF PARAM_USESOLIDCOLOR}\n        IncF(texPos.x, texStep.x);\n        IncF(texPos.y, texStep.y);\n        {$ENDIF}\n        IncF(InvZPos, zStep);\n      {$ENDIF}\n\n      {$IFDEF PARAM_USESHADER}\n        {$IFDEF PARAM_USESSE}\n           {$ifdef cpux86_64}\n           asm\n             mov rax, ShaderContext\n             movaps xmm2, [rax+32] //PositionInvZ\n             movaps xmm1, [rax+64] //PositionStepInvZ\n             movaps xmm3, [rax+48] //NormalInvZ\n             movaps xmm0, [rax+80] //NormalStepInvZ\n             addps xmm2, xmm1\n             addps xmm3, xmm0\n             movaps [rax+32], xmm2\n             movaps [rax+48], xmm3\n           end;\n           {$else}\n            asm\n              mov eax, ShaderContext\n              movaps xmm2, [eax+32] //PositionInvZ\n              movaps xmm1, [eax+64] //PositionStepInvZ\n              movaps xmm3, [eax+48] //NormalInvZ\n              movaps xmm0, [eax+80] //NormalStepInvZ\n              addps xmm2, xmm1\n              addps xmm3, xmm0\n              movaps [eax+32], xmm2\n              movaps [eax+48], xmm3\n            end;\n           {$endif}\n        {$ELSE}\n          with ShaderContext^ do\n          begin\n            PositionInvZ.Offset(PositionStepInvZ);\n            NormalInvZ.Offset(NormalStepInvZ);\n          end;\n        {$ENDIF}\n      {$ENDIF}\n\n      {$IFDEF PARAM_USELIGHTING}\n        NextLight;\n      {$ENDIF}\n        inc(pdest);\n      end;\n"
  },
  {
    "path": "bgrabitmap/phongdraw.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$ifdef PARAM_PHONGSSE}\n  {$asmmode intel}\n  //SSE rotate singles\n  const Shift231 = 1 + 8;\n        Shift312 = 2 + 16;\n{$endif}\n\nvar\n  //Light source normal.\n  vL: TPoint3D_128;  {xmm0}\n  //Light source position.\n  vLS: TPoint3D_128; {xmm1}\n  //Vector H is the unit normal to the hypothetical surface oriented\n  //halfway between the light direction vector (L) and the viewing vector (V).\n  vH: TPoint3D_128;  {xmm2}\n\n  vN: TPoint3D_128;  {xmm3}        // surface normal\n  vP: TPoint3D_128;  {xmm4}        // position of lighted pixel\n  vV: TPoint3D_128;                // viewer direction\n{$ifdef PARAM_PHONGSSE}\n  LightDestFactor4: TPoint3D_128;  // for multiplication\n{$endif}\n\n  //Calculate LdotN and NnH\n  NH: Single;\n{$ifndef PARAM_PHONGSSE}\n  vD: TPoint3D_128;\n{$endif}\n\n  Iw, Ic: integer;    // Iw: specular intensity, Ic: ambient+diffuse intensity\n  sIw: single;        // floating point value for Iw\n\n  z, LdotN, NnH,\n  dist, distfactor, diffuseterm, specularterm: single;\n  eLight: TExpandedPixel;\n  mc,mcLeft,mcRight,mcTop,mcBottom: TBGRAPixel; ///map values\n\n{$ifdef PARAM_SIMPLECOLOR}\n  eColor: TExpandedPixel;\n{$else}\n  {$ifndef PARAM_SCANNER}\n    pcolormap: PBGRAPixel;\n  {$endif}\n{$endif}\n\n  {$hints off}\n  function ComputePixel(x,y: integer; DiffuseLight, SpecularLight: Word; Alpha: Byte): TBGRAPixel; inline;\n  var ec: TExpandedPixel;\n    {$ifndef PARAM_SIMPLECOLOR}\n      eColor: TExpandedPixel;\n    {$endif}\n  begin\n    {$ifndef PARAM_SIMPLECOLOR}\n      {$ifdef PARAM_SCANNER}\n        eColor := GammaExpansion(ColorScan.ScanNextPixel);\n      {$else}\n        eColor := GammaExpansion(pcolormap^);\n      {$endif}\n    {$endif}\n    Alpha := ApplyOpacity(Alpha, eColor.alpha shr 8);\n    ec.red := (eColor.Red*DiffuseLight+eLight.Red*SpecularLight+PhongLightPrecisionDiv2) shr PhongLightPrecisionSh;\n    ec.green := (eColor.Green*DiffuseLight+eLight.Green*SpecularLight+PhongLightPrecisionDiv2) shr PhongLightPrecisionSh;\n    ec.blue := (eColor.Blue*DiffuseLight+eLight.Blue*SpecularLight+PhongLightPrecisionDiv2) shr PhongLightPrecisionSh;\n    ec.alpha := Alpha shl 8+Alpha;\n    result := GammaCompression(ec);\n  end;\n  {$hints on}\n\nvar\n  minx,miny,maxx,maxy: integer;\n  pmap: PBGRAPixel;\n  pdest: PBGRAPixel;\n  x,y : integer;      // Coordinates of point in height map.\n  vS1,vS2: TPoint3D_128; // surface vectors (plane)\n  deltaDown: Int32or64;\n  IsLineUp,IsLineDown: boolean;\n\nbegin\n  if map = nil then exit;\n  {$ifndef PARAM_SIMPLECOLOR}\n    {$ifndef PARAM_SCANNER}\n      if (colorMap.Width < map.width) or (colorMap.Height < map.height) then\n        raise Exception.Create('Dimension mismatch');\n    {$endif}\n  {$endif}\n\n  if (map.width = 0) or (map.Height = 0) then exit;\n  if ofsX >= dest.ClipRect.Right then exit;\n  if ofsY >= dest.ClipRect.Bottom then exit;\n  if ofsX <= dest.ClipRect.Left-map.Width then exit;\n  if ofsY <= dest.ClipRect.Top-map.Height then exit;\n\n  minx := 0;\n  miny := 0;\n  maxx := map.Width-1;\n  maxy := map.Height-1;\n  if ofsX < dest.clipRect.Left then minx := dest.clipRect.Left-ofsX;\n  if ofsY < dest.clipRect.Top then miny := dest.clipRect.Top-ofsY;\n  if OfsX+maxx > dest.ClipRect.Right-1 then maxx := dest.ClipRect.Right-1-ofsX;\n  if OfsY+maxy > dest.ClipRect.Bottom-1 then maxy := dest.ClipRect.Bottom-1-ofsY;\n\n  eLight := GammaExpansion(LightColor);\n  {$ifdef PARAM_SIMPLECOLOR}\n    eColor := GammaExpansion(color);\n  {$endif}\n\n  //light origin\n  vLS := Point3D_128(FLightPosition3D.X-ofsX,\n                  FLightPosition3D.Y-ofsY,\n                  FLightPosition3D.Z);\n\n  //surface vectors\n  vS1 := Point3D_128(1,0,0);\n  vS2 := Point3D_128(0,1,0);\n\n  vV := Point3D_128(0,0,1);\n\n  dist := 0;\n  LdotN := 0;\n  NnH := 0;\n\n  {$ifdef PARAM_PHONGSSE}\n  LightDestFactor4 := Point3D_128(LightDestFactor,LightDestFactor,LightDestFactor,LightDestFactor);\n  {$endif}\n\n  if map.LineOrder = riloTopToBottom then\n    deltaDown := map.Width*sizeof(TBGRAPixel)\n  else\n    deltaDown := -map.Width*sizeof(TBGRAPixel);\n  for y := miny to maxy do\n  begin\n    //read map values\n    pmap := map.ScanLine[y]+minx;\n    mc := BGRAPixelTransparent;\n    mcRight := pmap^;\n    pdest := dest.ScanLine[y+ofsY]+ofsX+minx;\n    {$ifndef PARAM_SIMPLECOLOR}\n      {$ifdef PARAM_SCANNER}\n        ColorScan.ScanMoveTo(OfsX+minx,OfsY+Y);\n      {$else}\n        pcolormap := ColorMap.ScanLine[y];\n      {$endif}\n    {$endif}\n    IsLineUp := y > 0;\n    IsLineDown := y < map.Height-1;\n    mcTop := BGRAPixelTransparent;\n    mcBottom := BGRAPixelTransparent;\n    for x := minx to maxx do\n    begin\n      mcLeft := mc;\n      mc := mcRight;\n      if x < map.width-1 then\n        mcRight := (pmap+1)^ else\n        mcRight := BGRAPixelTransparent;\n      if mc.alpha = 0 then\n      begin\n        {$ifndef PARAM_SIMPLECOLOR}\n          {$ifdef PARAM_SCANNER}\n            ColorScan.ScanNextPixel;\n          {$else}\n            inc(pcolormap);\n          {$endif}\n        {$endif}\n        inc(pdest);\n        inc(pmap);\n        continue;\n      end;\n\n      //compute surface vectors\n      if IsLineUp then mcTop := pbgrapixel(pbyte(pmap)-deltaDown)^;\n      if IsLineDown then mcBottom := pbgrapixel(pbyte(pmap)+deltaDown)^;\n      inc(pmap);\n\n      z := MapHeight(mc)*mapAltitude;\n      if mcLeft.alpha = 0 then\n      begin\n        if mcRight.alpha = 0 then\n          vS1.z := 0\n        else\n          vS1.z := (MapHeight(mcRight)-MapHeight(mc))*mapAltitude*2;\n      end else\n      begin\n        if mcRight.alpha = 0 then\n          vS1.z := (MapHeight(mc)-MapHeight(mcLeft))*mapAltitude*2\n        else\n          vS1.z := (MapHeight(mcRight)-MapHeight(mcLeft))*mapAltitude;\n      end;\n      if mcTop.alpha = 0 then\n      begin\n        if mcBottom.alpha = 0 then\n          vS2.z := 0\n        else\n          vS2.z := (MapHeight(mcBottom)-MapHeight(mc))*mapAltitude*2;\n      end else\n      begin\n        if mcBottom.alpha = 0 then\n          vS2.z := (MapHeight(mc)-MapHeight(mcTop))*mapAltitude*2\n        else\n          vS2.z := (MapHeight(mcBottom)-MapHeight(mcTop))*mapAltitude;\n      end;\n\n      //position vector\n      vP := Point3D_128(x, y, z);\n      {$ifdef PARAM_PHONGSSE}\n      if UseSSE3 then\n      begin\n        {$DEFINE PARAM_USESSE3}\n        asm\n          movups xmm1, vLS\n        end;\n        {$i phongdrawsse.inc}\n        {$UNDEF PARAM_USESSE3}\n      end else\n      begin\n        asm\n          movups xmm1, vLS\n        end;\n        {$i phongdrawsse.inc}\n      end;\n      {$else}\n        vP := Point3D_128(x, y, z);\n        vL := vLS- vP*LightDestFactor;\n        Normalize3D_128(vL);\n\n        //compute bisector of angle between light and observer\n        vH := vL + vV;\n        Normalize3D_128(vH);\n\n        // compute normal vector to the surface\n        VectProduct3D_128(vS1,vS2,vN);\n        Normalize3D_128(vN);\n\n        //Calculate LdotN and NnH\n        LdotN := DotProduct3D_128(vN,vL);\n        vD := vLS-vP;\n        dist := sqrt(DotProduct3D_128(vD,vD));\n\n        NH := DotProduct3D_128(vH,vN);\n      {$endif}\n\n      if NH <= 0 then\n        NnH := 0\n      else\n        NnH := exp(SpecularIndex*ln(NH));  //to be optimized\n\n      distfactor := LightSourceIntensity / (dist*LightSourceDistanceFactor + LightSourceDistanceTerm);\n\n      if (LdotN <= 0) then //Point is not illuminated by light source.\n        //Use negative diffuse for contrast\n        diffuseterm := distfactor * NegativeDiffusionFactor * LdotN\n      else\n        diffuseterm := distfactor * DiffusionFactor * LdotN;\n      Ic := round((AmbientFactor + diffuseterm)*PhongLightPrecision);\n\n      //specular (reflection)\n      specularterm := distfactor * SpecularFactor * NnH;\n      sIw := specularterm*PhongLightPrecision;\n      if sIw > PhongLightPrecision then Iw := PhongLightPrecision else\n        Iw := round(sIw);\n\n      //intensity bounds (0..PhongLightPrecision)\n      If Ic < 0 then Ic := 0;\n      If Ic > PhongLightPrecision then\n      begin\n        If DiffuseSaturation then\n        begin\n          Iw := Iw+(Ic-PhongLightPrecision);\n          if Iw > PhongLightPrecision then Iw := PhongLightPrecision;\n        end;\n        Ic := PhongLightPrecision;\n      end;\n      Ic := Ic*(PhongLightPrecision-Iw) shr PhongLightPrecisionSh;\n\n      DrawPixelInlineWithAlphaCheck(pdest, ComputePixel(x,y,Ic,Iw,mc.alpha));\n      {$ifndef PARAM_SIMPLECOLOR}\n        {$ifndef PARAM_SCANNER}\n          inc(pcolormap);\n        {$endif}\n      {$endif}\n      inc(pdest); //go to next pixel\n    end;\n  end;\nend;\n\n{$undef PARAM_PHONGSSE}\n{$undef PARAM_SIMPLECOLOR}\n{$undef PARAM_SCANNER}\n\n"
  },
  {
    "path": "bgrabitmap/phongdrawsse.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nasm\n        //vL := vLS- vP*LightDestFactor;\n        movups xmm4, vP\n        movups xmm6,LightDestFactor4\n        mulps xmm6, xmm4   //keep xmm4 = vP\n        movaps xmm0, xmm1\n        subps xmm0, xmm6\n\n        movups xmm2, vV //preload xmm2 (A)\n\n        //normalize(vL);\n        movaps xmm6, xmm0   //save\n        mulps xmm0, xmm0\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm0,xmm0\n        haddps xmm0,xmm0\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm0\n        shufps xmm7, xmm7, $4e\n        addps xmm0, xmm7\n        //mix2\n        movaps xmm7, xmm0\n        shufps xmm7, xmm7, $11\n        addps xmm0, xmm7\n        {$ENDIF}\n\n        //1/sqrt\n        rsqrtps xmm0, xmm0\n        mulps xmm0, xmm6  //apply\n\n\n        //vH := vL + vV;  (A)\n        //xmm2 = vV\n        addps xmm2, xmm0\n\n\n\n        //vectproduct(vS1,vS2,vN);\n        movups xmm6, vS1\n        shufps xmm6, xmm6, Shift231\n\n        movups xmm7, vS2\n        shufps xmm7, xmm7, Shift312\n\n        movaps xmm3,xmm6\n        mulps xmm3,xmm7\n\n        movups xmm6, vS1\n        shufps xmm6, xmm6, Shift312\n\n        movups xmm7, vS2\n        shufps xmm7, xmm7, Shift231\n\n        mulps xmm7,xmm6\n        subps xmm3,xmm7\n        //end of vectproduct\n\n\n        //normalize(vH);\n        movaps xmm6, xmm2   //save\n        mulps xmm2, xmm2\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm2,xmm2\n        haddps xmm2,xmm2\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $4e\n        addps xmm2, xmm7\n        //mix2\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $11\n        addps xmm2, xmm7\n        {$ENDIF}\n\n        //1/sqrt\n        rsqrtps xmm2, xmm2\n        mulps xmm2, xmm6  //apply\n\n        //normalize(vN);\n        movaps xmm6, xmm3   //save\n        mulps xmm3, xmm3\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm3,xmm3\n        haddps xmm3,xmm3\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm3\n        shufps xmm7, xmm7, $4e\n        addps xmm3, xmm7\n        //mix2\n        movaps xmm7, xmm3\n        shufps xmm7, xmm7, $11\n        addps xmm3, xmm7\n        {$ENDIF}\n\n        //1/sqrt\n        rsqrtps xmm3, xmm3\n        mulps xmm3, xmm6  //apply\n\n        //LdotN := vN * vL;\n        movups xmm5, xmm3\n        mulps xmm5, xmm0\n        //mix1\n        movaps xmm7, xmm5\n        shufps xmm7, xmm7, $4e\n        addps xmm5, xmm7\n        //mix2\n        movaps xmm7, xmm5\n        shufps xmm7, xmm7, $11\n        addps xmm5, xmm7\n        //:=\n        movss LdotN, xmm5\n\n        //vD := vLS-vP;\n        movaps xmm5, xmm1\n        subps xmm5, xmm4\n\n        //dist := sqrt(vD*vD);\n        mulps xmm5, xmm5\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm5,xmm5\n        haddps xmm5,xmm5\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm5\n        shufps xmm7, xmm7, $4e\n        addps xmm5, xmm7\n        //mix2\n        movaps xmm7, xmm5\n        shufps xmm7, xmm7, $11\n        addps xmm5, xmm7\n        {$ENDIF}\n\n        //:= sqrt\n        sqrtss xmm5,xmm5\n        movss dist, xmm5\n\n        //NH := vH * vN;\n        movups xmm6, xmm2\n        mulps xmm6, xmm3\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm6,xmm6\n        haddps xmm6,xmm6\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm6\n        shufps xmm7, xmm7, $4e\n        addps xmm6, xmm7\n        //mix2\n        movaps xmm7, xmm6\n        shufps xmm7, xmm7, $11\n        addss xmm6, xmm7\n        {$ENDIF}\n        //:=\n        movss NH, xmm6\n      end;\n"
  },
  {
    "path": "bgrabitmap/phonglight.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$i bgrasse.inc}\nvar\n  {%H-}dist2,LdotN,NdotH,lightEnergy,diffuse : single;\nbegin\n  {$IFDEF BGRASSE_AVAILABLE}If UseSSE then\n  begin\n    with Context^ do\n    begin\n      {$IFDEF PARAM_POINTLIGHT}\n      vL := FVertex.ViewCoord_128;\n      vH := FViewVector;\n      {$ELSE}\n      vL := FDirection;\n      vH := FBetweenDirectionAndObserver;\n      {$ENDIF}\n    end;\n    if UseSSE3 then\n    begin\n      {$DEFINE PARAM_USESSE3}\n      {$i phonglightsse.inc}\n      {$UNDEF PARAM_USESSE3}\n    end else\n    begin\n      {$i phonglightsse.inc}\n    end;\n  end else\n  {$ENDIF}\n  with Context^ do\n  begin\n    {$IFDEF PARAM_POINTLIGHT}\n    vL := FVertex.ViewCoord_128 - basic.Position;\n    Normalize3D_128_SqLen(vL, dist2);\n    //compute bisector of angle between light and observer\n    vH := vL + FViewVector;\n    Normalize3D_128(vH);\n    //Calculate LdotN and NnH\n    LdotN := DotProduct3D_128(basic.Normal, vL);\n    NdotH := DotProduct3D_128(basic.Normal, vH);\n    {$ELSE}\n    LdotN := DotProduct3D_128(basic.Normal, FDirection);\n    NdotH := DotProduct3D_128(basic.Normal, FBetweenDirectionAndObserver);\n    {$ENDIF}\n  end;\n\n  {$IFDEF PARAM_POINTLIGHT}\n  if dist2 = 0 then\n    lightEnergy := 0\n  else\n    lightEnergy := FIntensity / dist2;\n  diffuse := LdotN*lightEnergy;\n  {$ELSE}\n  lightEnergy := 1;\n  diffuse := LdotN;\n  {$ENDIF}\n  if diffuse < FMinIntensity then diffuse:= FMinIntensity;\n\n  if Context^.LightThrough and (diffuse < 0) then diffuse := -diffuse*Context^.LightThroughFactor;\n  TBGRAMaterial3D(Context^.material).ComputeDiffuseAndSpecularColor(Context, diffuse, lightEnergy, NdotH, FColorInt);\nend;\n\n{$UNDEF PARAM_POINTLIGHT}\n"
  },
  {
    "path": "bgrabitmap/phonglightsse.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n    {$asmmode intel}\n    asm\n      {$ifdef cpux86_64}\n      mov rax, Context\n      movaps xmm0,[rax+160] //Context^.vL\n      movaps xmm2,[rax+192] //Context^.vH\n      movaps xmm1,[rax+16] //Context^.Normal\n      {$else}\n      mov eax, Context\n      movaps xmm0,[eax+160] //Context^.vL\n      movaps xmm2,[eax+192] //Context^.vH\n      movaps xmm1,[eax+16] //Context^.Normal\n      {$endif}\n\n      {$IFDEF PARAM_POINTLIGHT}\n        {$ifdef cpux86_64}\n        movaps xmm6,[rax+0]  //Context^.Position\n        {$else}\n        movaps xmm6,[eax+0]  //Context^.Position\n        {$endif}\n        subps xmm0,xmm6      //xmm0 = vL\n        movaps xmm6, xmm0\n        mulps xmm6, xmm6\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm6,xmm6\n        haddps xmm6,xmm6\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm6\n        shufps xmm7, xmm7, $4e\n        addps xmm6, xmm7\n        //mix2\n        movaps xmm7, xmm6\n        shufps xmm7, xmm7, $11\n        addps xmm6, xmm7\n        {$ENDIF}\n\n        movss dist2, xmm6  //dist2 := vL*vL;\n\n        rsqrtps xmm6, xmm6\n        mulps xmm0, xmm6  //xmm0 = normalized vL\n      {$ENDIF}\n\n      {$IFDEF PARAM_POINTLIGHT}\n        addps xmm2,xmm0  //vH += normalized vL\n        movaps xmm6, xmm2\n        mulps xmm2, xmm2\n\n        {$IFDEF PARAM_USESSE3}\n        haddps xmm2,xmm2\n        haddps xmm2,xmm2\n        {$ELSE}\n        //mix1\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $4e\n        addps xmm2, xmm7\n        //mix2\n        movaps xmm7, xmm2\n        shufps xmm7, xmm7, $11\n        addps xmm2, xmm7\n        {$ENDIF}\n\n        rsqrtps xmm2, xmm2\n        mulps xmm2, xmm6  //xmm2 = normalized vH\n      {$ENDIF}\n\n      //vL*Normal\n      mulps xmm0, xmm1\n      //vH*Normal\n      mulps xmm2, xmm1\n\n      {$IFDEF PARAM_USESSE3}\n      haddps xmm0,xmm0\n      haddps xmm0,xmm0\n      {$ELSE}\n      //mix1\n      movaps xmm7, xmm0\n      shufps xmm7, xmm7, $4e\n      addps xmm0, xmm7\n      //mix2\n      movaps xmm7, xmm0\n      shufps xmm7, xmm7, $11\n      addps xmm0, xmm7\n      {$ENDIF}\n\n      {$IFDEF PARAM_USESSE3}\n      haddps xmm2,xmm2\n      haddps xmm2,xmm2\n      {$ELSE}\n      //mix1\n      movaps xmm7, xmm2\n      shufps xmm7, xmm7, $4e\n      addps xmm2, xmm7\n      //mix2\n      movaps xmm7, xmm2\n      shufps xmm7, xmm7, $11\n      addps xmm2, xmm7\n      {$ENDIF}\n\n      movss LdotN, xmm0\n      movss NdotH, xmm2\n    end;\n\n"
  },
  {
    "path": "bgrabitmap/polyaliaspersp.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{*****************************************TEXTURE WITHOUT SHADING *********************************}\n{with shading: second part of this file}\n\n{ TPolygonPerspectiveTextureMappingInfo }\n\nprocedure TPolygonPerspectiveTextureMappingInfo.SetIntersectionValues(\n  AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer;\n  dy: single; AData: pointer);\nvar info: PPerspectiveTextureInfo;\nbegin\n  AInter.SetValues(AInterX,AWinding,ANumSegment);\n  info := PPerspectiveTextureInfo(AData);\n  TPerspectiveTextureMappingIntersectionInfo(AInter).coordInvZ := dy*info^.InvZSlope + info^.InvZ;\n  TPerspectiveTextureMappingIntersectionInfo(AInter).texCoordDivByZ := info^.TexCoordDivByZ + info^.TexCoordDivByZSlopes*dy;\n  if FLightnesses<>nil then\n    TPerspectiveTextureMappingIntersectionInfo(AInter).lightness := round(info^.lightness + info^.lightnessSlope*dy)\n  else\n    TPerspectiveTextureMappingIntersectionInfo(AInter).lightness := 32768;\nend;\n\nconstructor TPolygonPerspectiveTextureMappingInfo.Create(\n  const points: array of TPointF; const pointsZ: array of single;\n  const texCoords: array of TPointF);\nvar\n  i: Integer;\n  lPoints: array of TPointF;\n  nbP: integer;\nbegin\n  if (length(texCoords) <> length(points)) or (length(pointsZ) <> length(points)) then\n    raise Exception.Create('Dimensions mismatch');\n\n  setlength(lPoints, length(points));\n  SetLength(FTexCoords, length(points));\n  SetLength(FPointsZ, length(points));\n  nbP := 0;\n  for i := 0 to high(points) do\n  if (i=0) or (points[i].x<>points[i-1].X) or (points[i].y<>points[i-1].y) then\n  begin\n    lPoints[nbP] := points[i];\n    FTexCoords[nbP] := texCoords[i];\n    FPointsZ[nbP] := abs(pointsZ[i]);\n    inc(nbP);\n  end;\n  if (nbP>0) and (lPoints[nbP-1].X = lPoints[0].X) and (lPoints[nbP-1].Y = lPoints[0].Y) then dec(NbP);\n  setlength(lPoints, nbP);\n  SetLength(FTexCoords, nbP);\n  SetLength(FPointsZ, nbP);\n\n  inherited Create(lPoints);\nend;\n\nconstructor TPolygonPerspectiveTextureMappingInfo.Create(\n  const points: array of TPointF; const pointsZ: array of single;\n  const texCoords: array of TPointF; const lightnesses: array of word);\nvar\n  i: Integer;\n  lPoints: array of TPointF;\n  nbP: integer;\nbegin\n  if (length(texCoords) <> length(points)) or (length(pointsZ) <> length(points)) or\n     (length(lightnesses) <> length(points)) then\n    raise Exception.Create('Dimensions mismatch');\n\n  setlength(lPoints, length(points));\n  SetLength(FTexCoords, length(points));\n  SetLength(FPointsZ, length(points));\n  setLength(FLightnesses, length(points));\n  nbP := 0;\n  for i := 0 to high(points) do\n  if (i=0) or (points[i].x<>points[i-1].X) or (points[i].y<>points[i-1].y) then\n  begin\n    lPoints[nbP] := points[i];\n    FTexCoords[nbP] := texCoords[i];\n    FPointsZ[nbP] := abs(pointsZ[i]);\n    FLightnesses[nbP] := lightnesses[i];\n    inc(nbP);\n  end;\n  if (nbP>0) and (lPoints[nbP-1].X = lPoints[0].X) and (lPoints[nbP-1].Y = lPoints[0].Y) then dec(NbP);\n  setlength(lPoints, nbP);\n  SetLength(FTexCoords, nbP);\n  SetLength(FPointsZ, nbP);\n  SetLength(FLightnesses, nbP);\n\n  inherited Create(lPoints);\nend;\n\n{$hints off}\n\nfunction TPolygonPerspectiveTextureMappingInfo.CreateSegmentData(numPt, nextPt: integer;\n  ASeg: PCustomPointRecord): pointer;\nvar\n  info: PPerspectiveTextureInfo;\n  ty: single;\n  CurInvZ,NextInvZ: single;\n  CurTexCoordDivByZ: TPointF;\n  NextTexCoordDivByZ: TPointF;\nbegin\n  New(info);\n  ty := ASeg^.y2-ASeg^.y;\n  CurInvZ := 1/FPointsZ[numPt];\n  CurTexCoordDivByZ := FTexCoords[numPt]*CurInvZ;\n  NextInvZ := 1/FPointsZ[nextPt];\n  NextTexCoordDivByZ := FTexCoords[nextPt]*NextInvZ;\n  info^.TexCoordDivByZSlopes := (NextTexCoordDivByZ - CurTexCoordDivByZ)*(1/ty);\n  info^.TexCoordDivByZ := CurTexCoordDivByZ;\n  info^.InvZSlope := (NextInvZ-CurInvZ)/ty;\n  info^.InvZ := CurInvZ;\n  if FLightnesses <> nil then\n  begin\n    info^.lightnessSlope := (FLightnesses[nextPt] - FLightnesses[numPt])*(1/ty);\n    info^.lightness := FLightnesses[numPt];\n  end else\n  begin\n    info^.lightness := 32768;\n    info^.lightnessSlope := 0;\n  end;\n  Result:= info;\nend;\n{$hints on}\n\nfunction TPolygonPerspectiveTextureMappingInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  Result:= TPerspectiveTextureMappingIntersectionInfo.Create;\nend;\n\n{$hints off}\nprocedure PolygonPerspectiveTextureMappingAliased(bmp: TBGRACustomBitmap;\n  polyInfo: TPolygonPerspectiveTextureMappingInfo; texture: IBGRAScanner;\n  TextureInterpolation: Boolean; NonZeroWinding: boolean; zbuffer: psingle);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n\n  scanAtFunc: TScanAtFunction;\n  scanAtIntegerFunc: TScanAtIntegerFunction;\n\n  procedure DrawTextureLineWithoutLight(yb: integer; ix1: integer; ix2: integer;\n      info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n    {$i perspectivescan.inc}\n\n  procedure DrawTextureLineWithLight(yb: integer; ix1: integer; ix2: integer;\n      info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n    {$define PARAM_USELIGHTING}\n    {$i perspectivescan.inc}\n\n  procedure DrawTextureLineWithoutLightZBuffer(yb: integer; ix1: integer; ix2: integer;\n      info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n    {$define PARAM_USEZBUFFER}\n    {$i perspectivescan.inc}\n\n  procedure DrawTextureLineWithLightZBuffer(yb: integer; ix1: integer; ix2: integer;\n      info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n    {$define PARAM_USEZBUFFER}\n    {$define PARAM_USELIGHTING}\n    {$i perspectivescan.inc}\n\nvar\n  miny, maxy, minx, maxx: integer;\n\n  yb, i : integer;\n  x1, x2: single;\n\n  ix1, ix2: integer;\n\nbegin\n  If not BGRAShapeComputeMinMax(polyInfo,minx,miny,maxx,maxy,bmp) then exit;\n\n  inter := polyInfo.CreateIntersectionArray;\n  scanAtFunc := @texture.ScanAt;\n  scanAtIntegerFunc := @texture.ScanAtInteger;\n\n  if zbuffer = nil then\n  begin\n    //vertical scan\n    for yb := miny to maxy do\n    begin\n      //find intersections\n      polyInfo.ComputeAndSort(yb,inter,nbInter,NonZeroWinding);\n\n      for i := 0 to nbinter div 2 - 1 do\n      begin\n        x1 := inter[i + i].interX;\n        x2 := inter[i + i+ 1].interX;\n\n        if x1 <> x2 then\n        begin\n          ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n          if ix1 <= ix2 then\n          begin\n            if (TPerspectiveTextureMappingIntersectionInfo(inter[i+i]).lightness = 32768) and\n               (TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]).lightness = 32768) then\n              DrawTextureLineWithoutLight(yb,ix1,ix2,\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i]),\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]),\n                TextureInterpolation)\n            else\n              DrawTextureLineWithLight(yb,ix1,ix2,\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i]),\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]),\n                TextureInterpolation);\n          end;\n        end;\n      end;\n    end;\n  end else\n  begin\n    //vertical scan\n    for yb := miny to maxy do\n    begin\n      //find intersections\n      polyInfo.ComputeAndSort(yb,inter,nbInter,NonZeroWinding);\n\n      for i := 0 to nbinter div 2 - 1 do\n      begin\n        x1 := inter[i + i].interX;\n        x2 := inter[i + i+ 1].interX;\n\n        if x1 <> x2 then\n        begin\n          ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n          if ix1 <= ix2 then\n          begin\n            if (TPerspectiveTextureMappingIntersectionInfo(inter[i+i]).lightness = 32768) and\n               (TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]).lightness = 32768) then\n              DrawTextureLineWithoutLightZBuffer(yb,ix1,ix2,\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i]),\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]),\n                TextureInterpolation)\n            else\n              DrawTextureLineWithLightZBuffer(yb,ix1,ix2,\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i]),\n                TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]),\n                TextureInterpolation);\n          end;\n        end;\n      end;\n    end;\n  end;\n\n  polyInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\nend;\n{$hints on}\n\nprocedure PolygonPerspectiveTextureMappingAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; const pointsZ: array of single;\n  texture: IBGRAScanner; const texCoords: array of TPointF;\n  TextureInterpolation: Boolean; NonZeroWinding: boolean; zbuffer: psingle);\nvar polyInfo: TPolygonPerspectiveTextureMappingInfo;\nbegin\n  polyInfo := TPolygonPerspectiveTextureMappingInfo.Create(points,pointsZ,texCoords);\n  PolygonPerspectiveTextureMappingAliased(bmp,polyInfo,texture,TextureInterpolation, NonZeroWinding, zbuffer);\n  polyInfo.Free;\nend;\n\nprocedure PolygonPerspectiveTextureMappingAliasedWithLightness(\n  bmp: TBGRACustomBitmap; const points: array of TPointF;\n  const pointsZ: array of single; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean;\n  lightnesses: array of word; NonZeroWinding: boolean; zbuffer: psingle);\nvar polyInfo: TPolygonPerspectiveTextureMappingInfo;\nbegin\n  polyInfo := TPolygonPerspectiveTextureMappingInfo.Create(points,pointsZ,texCoords,lightnesses);\n  PolygonPerspectiveTextureMappingAliased(bmp,polyInfo,texture,TextureInterpolation, NonZeroWinding, zbuffer);\n  polyInfo.Free;\nend;\n\n{****************************************** WITH SHADING ******************************************}\n\n{$hints off}\nprocedure PolygonPerspectiveMappingShaderAliased_DrawTextureLine(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESHADER}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingShaderAliased_DrawSolidColorLine(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESOLIDCOLOR}\n  {$define PARAM_USESHADER}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingShaderAliased_DrawTextureLineZBuffer(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESHADER}\n  {$define PARAM_USEZBUFFER}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingShaderAliased_DrawSolidColorLineZBuffer(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESOLIDCOLOR}\n  {$define PARAM_USESHADER}\n  {$define PARAM_USEZBUFFER}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingAliased_DrawTextureLine(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingAliased_DrawSolidColorLine(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESOLIDCOLOR}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingAliased_DrawTextureLineZBuffer(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USEZBUFFER}\n  {$i perspectivescan.inc}\n\nprocedure PolygonPerspectiveMappingAliased_DrawSolidColorLineZBuffer(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n  {$define PARAM_USESOLIDCOLOR}\n  {$define PARAM_USEZBUFFER}\n  {$i perspectivescan.inc}\n{$hints on}\n\n{$hints off}\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap;\n  polyInfo: TPolygonPerspectiveMappingShaderInfo; texture: IBGRAScanner;\n  TextureInterpolation: Boolean; ShaderFunction: TShaderFunction3D;\n  NonZeroWinding: boolean; solidColor: TBGRAPixel; zbuffer: psingle; ShaderContext: PBasicLightingContext);\nvar\n  inter:    array of TIntersectionInfo;\n  nbInter:  integer;\n\n  scanAtFunc: TScanAtFunction;\n  scanAtIntegerFunc: TScanAtIntegerFunction;\n\n  drawFunc : procedure(bmp: TBGRACustomBitmap; ShaderFunction: TShaderFunction3D; ShaderContext: PBasicLightingContext;\n    solidColor: TBGRAPixel; scanAtFunc: TScanAtFunction; scanAtIntegerFunc: TScanAtIntegerFunction; zbuffer: psingle;\n    yb: integer; ix1: integer; ix2: integer;\n    info1, info2 : TPerspectiveTextureMappingIntersectionInfo; WithInterpolation: boolean);\n\nvar\n  miny, maxy, minx, maxx: integer;\n\n  yb, i : integer;\n  x1, x2: single;\n\n  ix1, ix2: integer;\n  shaderContextMem: TMemoryBlockAlign128;\n  shaderContextPtr: PBasicLightingContext;\n\n  inter1,inter2: TPerspectiveTextureMappingIntersectionInfo;\n\nbegin\n  If not BGRAShapeComputeMinMax(polyInfo,minx,miny,maxx,maxy,bmp) then exit;\n\n  inter := polyInfo.CreateIntersectionArray;\n\n  if texture <> nil then\n  begin\n    scanAtFunc := @texture.ScanAt;\n    scanAtIntegerFunc := @texture.ScanAtInteger;\n  end else\n  begin\n    scanAtFunc := nil;\n    scanAtIntegerFunc := nil;\n  end;\n\n  shaderContextMem := nil;\n  shaderContextPtr := nil;\n\n  if ShaderFunction <> nil then\n  begin\n    if ShaderContext = nil then\n    begin\n      shaderContextMem := TMemoryBlockAlign128.Create(sizeof(TBasicLightingContext));\n      shaderContextPtr := PBasicLightingContext( shaderContextMem.Data);\n    end\n    else\n      shaderContextPtr := shaderContext;\n    if texture <> nil then\n    begin\n      if zbuffer = nil then\n        drawFunc := @PolygonPerspectiveMappingShaderAliased_DrawTextureLine\n      else\n        drawFunc := @PolygonPerspectiveMappingShaderAliased_DrawTextureLineZBuffer;\n    end\n    else\n    begin\n      if zbuffer = nil then\n        drawFunc := @PolygonPerspectiveMappingShaderAliased_DrawSolidColorLine\n      else\n        drawFunc := @PolygonPerspectiveMappingShaderAliased_DrawSolidColorLineZBuffer;\n    end;\n  end else\n  begin\n    if texture <> nil then\n    begin\n      if zbuffer = nil then\n        drawFunc := @PolygonPerspectiveMappingAliased_DrawTextureLine\n      else\n        drawFunc := @PolygonPerspectiveMappingAliased_DrawTextureLineZBuffer;\n    end\n    else\n    begin\n      if zbuffer = nil then\n        drawFunc := @PolygonPerspectiveMappingAliased_DrawSolidColorLine\n      else\n        drawFunc := @PolygonPerspectiveMappingAliased_DrawSolidColorLineZBuffer;\n    end;\n  end;\n\n  //vertical scan\n  for yb := miny to maxy do\n  begin\n    //find intersections\n    polyInfo.ComputeAndSort(yb,inter,nbInter,NonZeroWinding);\n\n    for i := 0 to nbinter div 2 - 1 do\n    begin\n      inter1 := TPerspectiveTextureMappingIntersectionInfo(inter[i+i]);\n      inter2 := TPerspectiveTextureMappingIntersectionInfo(inter[i+i+1]);\n      x1 := inter1.interX;\n      x2 := inter2.interX;\n\n      if x1 <> x2 then\n      begin\n        ComputeAliasedRowBounds(x1,x2, minx,maxx, ix1,ix2);\n        if ix1 <= ix2 then\n        begin\n          drawFunc(bmp,ShaderFunction,shaderContextPtr,\n              solidColor,scanAtFunc,scanAtIntegerFunc,zbuffer,\n              yb,ix1,ix2,\n              inter1,inter2,TextureInterpolation);\n        end;\n      end;\n    end;\n  end;\n\n  polyInfo.FreeIntersectionArray(inter);\n  bmp.InvalidateBitmap;\n  shaderContextMem.Free;\nend;\n{$hints on}\n\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; const points3D: array of TPoint3D;\n  const normals: array of TPoint3D; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean;\n  ShaderFunction: TShaderFunction3D; NonZeroWinding: boolean; solidColor: TBGRAPixel; zbuffer: psingle; ShaderContext: PBasicLightingContext);\nvar polyInfo: TPolygonPerspectiveMappingShaderInfo;\nbegin\n  polyInfo := TPolygonPerspectiveMappingShaderInfo.Create(points,points3D,normals,texCoords);\n  PolygonPerspectiveMappingShaderAliased(bmp,polyInfo,texture,TextureInterpolation, ShaderFunction, NonZeroWinding, solidColor, zbuffer, ShaderContext);\n  polyInfo.Free;\nend;\n\nprocedure PolygonPerspectiveMappingShaderAliased(bmp: TBGRACustomBitmap;\n  const points: array of TPointF; const points3D: array of TPoint3D_128;\n  const normals: array of TPoint3D_128; texture: IBGRAScanner;\n  const texCoords: array of TPointF; TextureInterpolation: Boolean;\n  ShaderFunction: TShaderFunction3D; NonZeroWinding: boolean;\n  solidColor: TBGRAPixel; zbuffer: psingle; ShaderContext: PBasicLightingContext);\nvar polyInfo: TPolygonPerspectiveMappingShaderInfo;\nbegin\n  polyInfo := TPolygonPerspectiveMappingShaderInfo.Create(points,points3D,normals,texCoords);\n  PolygonPerspectiveMappingShaderAliased(bmp,polyInfo,texture,TextureInterpolation, ShaderFunction, NonZeroWinding, solidColor, zbuffer, ShaderContext);\n  polyInfo.Free;\nend;\n\n{ TPolygonPerspectiveMappingShaderInfo }\n\nprocedure TPolygonPerspectiveMappingShaderInfo.SetIntersectionValues(\n  AInter: TIntersectionInfo; AInterX: Single; AWinding, ANumSegment: integer;\n  dy: single; AData: pointer);\nvar info : PPerspectiveTextureInfo;\nbegin\n  AInter.SetValues(AInterX,AWinding,ANumSegment);\n  info := PPerspectiveTextureInfo(AData);\n  TPerspectiveTextureMappingIntersectionInfo(AInter).coordInvZ := dy*info^.InvZSlope + info^.InvZ;\n  TPerspectiveTextureMappingIntersectionInfo(AInter).texCoordDivByZ := info^.TexCoordDivByZ + info^.TexCoordDivByZSlopes*dy;\n  TPerspectiveTextureMappingIntersectionInfo(AInter).Position3D := info^.Position3D + info^.Position3DSlope*dy;\n  TPerspectiveTextureMappingIntersectionInfo(AInter).Normal3D := info^.Normal3D + info^.Normal3DSlope*dy;\nend;\n\nconstructor TPolygonPerspectiveMappingShaderInfo.Create(\n  const points: array of TPointF; const points3D: array of TPoint3D;\n  const normals: array of TPoint3D; const texCoords: array of TPointF);\nvar\n  i: Integer;\n  lPoints: array of TPointF;\n  nbP: integer;\nbegin\n  if (length(texCoords) <> length(points)) or (length(points3D) <> length(points)) or (length(normals) <> length(points)) then\n    raise Exception.Create('Dimensions mismatch');\n\n  setlength(lPoints, length(points));\n  SetLength(FTexCoords, length(points));\n  SetLength(FPositions3D, length(points));\n  SetLength(FNormals3D, length(points));\n  nbP := 0;\n  for i := 0 to high(points) do\n  if (i=0) or (points[i]<>points[i-1]) then\n  begin\n    lPoints[nbP] := points[i];\n    FTexCoords[nbP] := texCoords[i];\n    FPositions3D[nbP] := Point3D_128(points3D[i]);\n    FNormals3D[nbP] := Point3D_128(normals[i]);\n    inc(nbP);\n  end;\n  if (nbP>0) and (lPoints[nbP-1].X = lPoints[0].X) and (lPoints[nbP-1].Y = lPoints[0].Y) then dec(NbP);\n  setlength(lPoints, nbP);\n  SetLength(FTexCoords, nbP);\n  SetLength(FPositions3D, nbP);\n  SetLength(FNormals3D, nbP);\n\n  inherited Create(lPoints);\nend;\n\nconstructor TPolygonPerspectiveMappingShaderInfo.Create(\n  const points: array of TPointF; const points3D: array of TPoint3D_128;\n  const normals: array of TPoint3D_128; const texCoords: array of TPointF);\nvar\n  i: Integer;\n  lPoints: array of TPointF;\n  nbP: integer;\nbegin\n  if (length(texCoords) <> length(points)) or (length(points3D) <> length(points)) or (length(normals) <> length(points)) then\n    raise Exception.Create('Dimensions mismatch');\n\n  setlength(lPoints, length(points));\n  SetLength(FTexCoords, length(points));\n  SetLength(FPositions3D, length(points));\n  SetLength(FNormals3D, length(points));\n  nbP := 0;\n  for i := 0 to high(points) do\n  if (i=0) or (points[i]<>points[i-1]) then\n  begin\n    lPoints[nbP] := points[i];\n    FTexCoords[nbP] := texCoords[i];\n    FPositions3D[nbP] := points3D[i];\n    FNormals3D[nbP] := normals[i];\n    inc(nbP);\n  end;\n  if (nbP>0) and (lPoints[nbP-1].X = lPoints[0].X) and (lPoints[nbP-1].Y = lPoints[0].Y) then dec(NbP);\n  setlength(lPoints, nbP);\n  SetLength(FTexCoords, nbP);\n  SetLength(FPositions3D, nbP);\n  SetLength(FNormals3D, nbP);\n\n  inherited Create(lPoints);\nend;\n\n{$hints off}\nfunction TPolygonPerspectiveMappingShaderInfo.CreateSegmentData(numPt, nextPt: integer;\n    ASeg: PCustomPointRecord): pointer;\nvar\n  info: PPerspectiveTextureInfo;\n  ty: single;\n  CurInvZ,NextInvZ: single;\n  CurTexCoordDivByZ: TPointF;\n  NextTexCoordDivByZ: TPointF;\n\n  Cur3DDivByZ,Next3DDivByZ: TPoint3D_128;\nbegin\n  New(info);\n  ty := ASeg^.y2-ASeg^.y;\n  CurInvZ := FPositions3D[numPt].z;\n  if CurInvZ = 0 then CurInvZ := 1 else CurInvZ := 1/CurInvZ;\n  CurTexCoordDivByZ := FTexCoords[numPt]*CurInvZ;\n  NextInvZ := FPositions3D[nextPt].z;\n  if NextInvZ = 0 then NextInvZ := 1 else NextInvZ := 1/NextInvZ;\n  NextTexCoordDivByZ := FTexCoords[nextPt]*NextInvZ;\n  info^.TexCoordDivByZSlopes := (NextTexCoordDivByZ - CurTexCoordDivByZ)*(1/ty);\n  info^.TexCoordDivByZ := CurTexCoordDivByZ;\n  info^.InvZSlope := (NextInvZ-CurInvZ)/ty;\n  info^.InvZ := CurInvZ;\n\n  Cur3DDivByZ := FPositions3D[numPt]*CurInvZ;\n  Next3DDivByZ := FPositions3D[nextPt]*NextInvZ;\n  info^.Position3DSlope := (Next3DDivByZ - Cur3DDivByZ)*(1/ty);\n  info^.Position3D := Cur3DDivByZ;\n\n  Cur3DDivByZ := FNormals3D[numPt]*CurInvZ;\n  Next3DDivByZ := FNormals3D[nextPt]*NextInvZ;\n  info^.Normal3DSlope := (Next3DDivByZ - Cur3DDivByZ)*(1/ty);\n  info^.Normal3D := Cur3DDivByZ;\n\n  Result:= info;\nend;\n{$hints on}\n\nfunction TPolygonPerspectiveMappingShaderInfo.CreateIntersectionInfo: TIntersectionInfo;\nbegin\n  Result:= TPerspectiveTextureMappingIntersectionInfo.Create;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/readme.txt",
    "content": "BGRABitmap - Drawing routines with transparency and antialiasing with Lazarus. Offers also various transforms.\n\nThese routines allow to manipulate 32bit images in BGRA format or RGBA format (depending on the platform).\n\nThis code is under modified LGPL (see COPYING.modifiedLGPL.txt). This means that you can link this library inside your programs for any purpose. Only the included part of the code must remain LGPL.\n\nIf you make some improvements to this library, please notify here:\nhttp://www.lazarus.freepascal.org/index.php/topic,12037.0.html\n\nContact : circular at operamail.com"
  },
  {
    "path": "bgrabitmap/shapes3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  { Spherical object for a 3D scene }\n  TBGRASphere3D = class(TBGRAObject3D)\n    constructor Create(AScene: TBGRAScene3D; ARadius: single; HorizPrecision: integer = 8; VerticalPrecision : integer = 6; HalfSphere: boolean = false);\n  end;\n\n{ TBGRASphere3D }\n\nconstructor TBGRASphere3D.Create(AScene: TBGRAScene3D; ARadius: single; HorizPrecision: integer; VerticalPrecision : integer; HalfSphere: boolean);\nvar prevAlpha,prevBeta,alpha,beta,NbAlpha,NbBeta: integer;\n    sinBeta,cosBeta: single;\n    sinAlpha,cosAlpha: single;\n    v: IBGRAPart3D;\n    vTop,vBottom: IBGRAVertex3D;\n    alphaFactor: single;\n    startAlpha: integer;\nbegin\n  inherited Create(AScene);\n  NbAlpha := HorizPrecision;\n  if NbAlpha < 4 then NbAlpha := 4;\n  NbBeta := VerticalPrecision-1;\n  if NbBeta < 2 then NbBeta := 2;\n  v := GetMainPart;\n\n\n  if halfSphere then\n    alphaFactor := Pi/(NbAlpha-1)\n  else\n    alphaFactor := (2*Pi)/NbAlpha;\n\n  for beta := 1 to NbBeta-1 do\n  begin\n    sinBeta := sin(beta*Pi/NbBeta);\n    cosBeta := -cos(beta*Pi/NbBeta);\n    for alpha := 0 to NbAlpha-1 do\n    begin\n      sinAlpha := -sin(alpha*alphaFactor);\n      cosAlpha := -cos(alpha*alphaFactor);\n      v.Add( cosAlpha*sinBeta*ARadius, cosBeta*ARadius, sinAlpha*sinBeta*ARadius );\n    end;\n  end;\n\n  if halfSphere then\n    startAlpha := 1\n  else\n    startAlpha := 0;\n\n  vTop := v.Add(0,-ARadius,0);\n  prevAlpha := (startAlpha+NbAlpha-1) mod NbAlpha;\n  for alpha := startAlpha to NbAlpha-1 do\n  begin\n    AddFace( [v.Vertex[prevAlpha], vTop, v.Vertex[alpha]], HalfSphere );\n    prevAlpha := alpha;\n  end;\n\n  prevBeta := 0;\n  for beta := 1 to NbBeta-2 do\n  begin\n    prevAlpha := (startAlpha+NbAlpha-1) mod NbAlpha;\n    for alpha := startAlpha to NbAlpha-1 do\n    begin\n      AddFace( [v.Vertex[prevAlpha + prevBeta*NbAlpha], v.Vertex[alpha + prevBeta*NbAlpha],\n                v.Vertex[alpha + beta*NbAlpha], v.Vertex[prevAlpha + beta*NbAlpha]], HalfSphere );\n      prevAlpha := alpha;\n    end;\n    prevBeta := beta;\n  end;\n\n  vBottom := v.Add(0,ARadius,0);\n  prevAlpha := (startAlpha+NbAlpha-1) mod NbAlpha;\n  for alpha := startAlpha to NbAlpha-1 do\n  begin\n    AddFace( [v.Vertex[prevAlpha + prevBeta*NbAlpha], v.Vertex[alpha + prevBeta*NbAlpha], vBottom], HalfSphere );\n    prevAlpha := alpha;\n  end;\nend;\n"
  },
  {
    "path": "bgrabitmap/spectraldata.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\nconst\n  { Horseshoe shape of visible colors at 2° (illuminant E) }\n  SpectralLocus: array[0..94] of TSpectralLocusPoint =\n ((W:360; X:0.0001299; Y:0.000003917; Z:0.0006061),\n  (W:365; X:0.0002321; Y:0.000006965; Z:0.001086),\n  (W:370; X:0.0004149; Y:0.00001239; Z:0.001946),\n  (W:375; X:0.0007416; Y:0.00002202; Z:0.003486),\n  (W:380; X:0.001368; Y:0.000039; Z:0.006450001),\n  (W:385; X:0.002236; Y:0.000064; Z:0.01054999),\n  (W:390; X:0.004243; Y:0.00012; Z:0.02005001),\n  (W:395; X:0.00765; Y:0.000217; Z:0.03621),\n  (W:400; X:0.01431; Y:0.000396; Z:0.06785001),\n  (W:405; X:0.02319; Y:0.00064; Z:0.1102),\n  (W:410; X:0.04351; Y:0.00121; Z:0.2074),\n  (W:415; X:0.07763; Y:0.00218; Z:0.3713),\n  (W:420; X:0.13438; Y:0.004; Z:0.6456),\n  (W:425; X:0.21477; Y:0.0073; Z:1.0390501),\n  (W:430; X:0.2839; Y:0.0116; Z:1.3856),\n  (W:435; X:0.3285; Y:0.01684; Z:1.62296),\n  (W:440; X:0.34828; Y:0.023; Z:1.74706),\n  (W:445; X:0.34806; Y:0.0298; Z:1.7826),\n  (W:450; X:0.3362; Y:0.038; Z:1.77211),\n  (W:455; X:0.3187; Y:0.048; Z:1.7441),\n  (W:460; X:0.2908; Y:0.06; Z:1.6692),\n  (W:465; X:0.2511; Y:0.0739; Z:1.5281),\n  (W:470; X:0.19536; Y:0.09098; Z:1.28764),\n  (W:475; X:0.1421; Y:0.1126; Z:1.0419),\n  (W:480; X:0.09564; Y:0.13902; Z:0.8129501),\n  (W:485; X:0.05795001; Y:0.1693; Z:0.6162),\n  (W:490; X:0.03201; Y:0.20802; Z:0.46518),\n  (W:495; X:0.0147; Y:0.2586; Z:0.3533),\n  (W:500; X:0.0049; Y:0.323; Z:0.272),\n  (W:505; X:0.0024; Y:0.4073; Z:0.2123),\n  (W:510; X:0.0093; Y:0.503; Z:0.1582),\n  (W:515; X:0.0291; Y:0.6082; Z:0.1117),\n  (W:520; X:0.06327; Y:0.71; Z:0.07824999),\n  (W:525; X:0.1096; Y:0.7932; Z:0.05725001),\n  (W:530; X:0.1655; Y:0.862; Z:0.04216),\n  (W:535; X:0.2257499; Y:0.9148501; Z:0.02984),\n  (W:540; X:0.2904; Y:0.954; Z:0.0203),\n  (W:545; X:0.3597; Y:0.9803; Z:0.0134),\n  (W:550; X:0.4334499; Y:0.9949501; Z:0.008749999),\n  (W:555; X:0.5120501; Y:1; Z:0.005749999),\n  (W:560; X:0.5945; Y:0.995; Z:0.0039),\n  (W:565; X:0.6784; Y:0.9786; Z:0.002749999),\n  (W:570; X:0.7621; Y:0.952; Z:0.0021),\n  (W:575; X:0.8425; Y:0.9154; Z:0.0018),\n  (W:580; X:0.9163; Y:0.87; Z:0.001650001),\n  (W:585; X:0.9786; Y:0.8163; Z:0.0014),\n  (W:590; X:1.0263; Y:0.757; Z:0.0011),\n  (W:595; X:1.0567; Y:0.6949; Z:0.001),\n  (W:600; X:1.0622; Y:0.631; Z:0.0008),\n  (W:605; X:1.0456; Y:0.5668; Z:0.0006),\n  (W:610; X:1.0026; Y:0.503; Z:0.00034),\n  (W:615; X:0.9384; Y:0.4412; Z:0.00024),\n  (W:620; X:0.8544499; Y:0.381; Z:0.00019),\n  (W:625; X:0.7514; Y:0.321; Z:0.0001),\n  (W:630; X:0.6424; Y:0.265; Z:0.00005),\n  (W:635; X:0.5419; Y:0.217; Z:0.00003),\n  (W:640; X:0.4479; Y:0.175; Z:0.00002),\n  (W:645; X:0.3608; Y:0.1382; Z:0.00001),\n  (W:650; X:0.2835; Y:0.107; Z:0),\n  (W:655; X:0.2187; Y:0.0816; Z:0),\n  (W:660; X:0.1649; Y:0.061; Z:0),\n  (W:665; X:0.1212; Y:0.04458; Z:0),\n  (W:670; X:0.0874; Y:0.032; Z:0),\n  (W:675; X:0.0636; Y:0.0232; Z:0),\n  (W:680; X:0.04677; Y:0.017; Z:0),\n  (W:685; X:0.0329; Y:0.01192; Z:0),\n  (W:690; X:0.0227; Y:0.00821; Z:0),\n  (W:695; X:0.01584; Y:0.005723; Z:0),\n  (W:700; X:0.01135916; Y:0.004102; Z:0),\n  (W:705; X:0.008110916; Y:0.002929; Z:0),\n  (W:710; X:0.005790346; Y:0.002091; Z:0),\n  (W:715; X:0.004106457; Y:0.001484; Z:0),\n  (W:720; X:0.002899327; Y:0.001047; Z:0),\n  (W:725; X:0.00204919; Y:0.00074; Z:0),\n  (W:730; X:0.001439971; Y:0.00052; Z:0),\n  (W:735; X:0.0009999493; Y:0.0003611; Z:0),\n  (W:740; X:0.0006900786; Y:0.0002492; Z:0),\n  (W:745; X:0.0004760213; Y:0.0001719; Z:0),\n  (W:750; X:0.0003323011; Y:0.00012; Z:0),\n  (W:755; X:0.0002348261; Y:0.0000848; Z:0),\n  (W:760; X:0.0001661505; Y:0.00006; Z:0),\n  (W:765; X:0.000117413; Y:0.0000424; Z:0),\n  (W:770; X:8.307527E-05; Y:0.00003; Z:0),\n  (W:775; X:5.870652E-05; Y:0.0000212; Z:0),\n  (W:780; X:4.150994E-05; Y:0.00001499; Z:0),\n  (W:785; X:2.935326E-05; Y:0.0000106; Z:0),\n  (W:790; X:2.067383E-05; Y:7.4657E-06; Z:0),\n  (W:795; X:1.455977E-05; Y:5.2578E-06; Z:0),\n  (W:800; X:0.000010254; Y:3.7029E-06; Z:0),\n  (W:805; X:7.221456E-06; Y:2.6078E-06; Z:0),\n  (W:810; X:5.085868E-06; Y:1.8366E-06; Z:0),\n  (W:815; X:3.581652E-06; Y:1.2934E-06; Z:0),\n  (W:820; X:2.522525E-06; Y:9.1093E-07; Z:0),\n  (W:825; X:1.776509E-06; Y:6.4153E-07; Z:0),\n  (W:830; X:1.251141E-06; Y:4.5181E-07; Z:0));\n\nconst //D65 illumination per wavelength\n  IlluminantSpectrumD65: array[0..94] of TIlluminantSpectrumPoint =\n ((W:360; Y:46.6383),\n  (W:365; Y:49.3637),\n  (W:370; Y:52.0891),\n  (W:375; Y:51.0323),\n  (W:380; Y:49.9755),\n  (W:385; Y:52.3118),\n  (W:390; Y:54.6482),\n  (W:395; Y:68.7015),\n  (W:400; Y:82.7549),\n  (W:405; Y:87.1204),\n  (W:410; Y:91.486),\n  (W:415; Y:92.4589),\n  (W:420; Y:93.4318),\n  (W:425; Y:90.057),\n  (W:430; Y:86.6823),\n  (W:435; Y:95.7736),\n  (W:440; Y:104.865),\n  (W:445; Y:110.936),\n  (W:450; Y:117.008),\n  (W:455; Y:117.41),\n  (W:460; Y:117.812),\n  (W:465; Y:116.336),\n  (W:470; Y:114.861),\n  (W:475; Y:115.392),\n  (W:480; Y:115.923),\n  (W:485; Y:112.367),\n  (W:490; Y:108.811),\n  (W:495; Y:109.082),\n  (W:500; Y:109.354),\n  (W:505; Y:108.578),\n  (W:510; Y:107.802),\n  (W:515; Y:106.296),\n  (W:520; Y:104.79),\n  (W:525; Y:106.239),\n  (W:530; Y:107.689),\n  (W:535; Y:106.047),\n  (W:540; Y:104.405),\n  (W:545; Y:104.225),\n  (W:550; Y:104.046),\n  (W:555; Y:102.023),\n  (W:560; Y:100),\n  (W:565; Y:98.1671),\n  (W:570; Y:96.3342),\n  (W:575; Y:96.0611),\n  (W:580; Y:95.788),\n  (W:585; Y:92.2368),\n  (W:590; Y:88.6856),\n  (W:595; Y:89.3459),\n  (W:600; Y:90.0062),\n  (W:605; Y:89.8026),\n  (W:610; Y:89.5991),\n  (W:615; Y:88.6489),\n  (W:620; Y:87.6987),\n  (W:625; Y:85.4936),\n  (W:630; Y:83.2886),\n  (W:635; Y:83.4939),\n  (W:640; Y:83.6992),\n  (W:645; Y:81.863),\n  (W:650; Y:80.0268),\n  (W:655; Y:80.1207),\n  (W:660; Y:80.2146),\n  (W:665; Y:81.2462),\n  (W:670; Y:82.2778),\n  (W:675; Y:80.281),\n  (W:680; Y:78.2842),\n  (W:685; Y:74.0027),\n  (W:690; Y:69.7213),\n  (W:695; Y:70.6652),\n  (W:700; Y:71.6091),\n  (W:705; Y:72.979),\n  (W:710; Y:74.349),\n  (W:715; Y:67.9765),\n  (W:720; Y:61.604),\n  (W:725; Y:65.7448),\n  (W:730; Y:69.8856),\n  (W:735; Y:72.4863),\n  (W:740; Y:75.087),\n  (W:745; Y:69.3398),\n  (W:750; Y:63.5927),\n  (W:755; Y:55.0054),\n  (W:760; Y:46.4182),\n  (W:765; Y:56.6118),\n  (W:770; Y:66.8054),\n  (W:775; Y:65.0941),\n  (W:780; Y:63.3828),\n  (W:785; Y:63.8434),\n  (W:790; Y:64.304),\n  (W:795; Y:61.8779),\n  (W:800; Y:59.4519),\n  (W:805; Y:55.7054),\n  (W:810; Y:51.959),\n  (W:815; Y:54.6998),\n  (W:820; Y:57.4406),\n  (W:825; Y:58.8765),\n  (W:830; Y:60.3125));\n\nconst\n  //YCbCr parameters for conversion from and to sRGB\n  YCbCrStdParameters : array[TYCbCrStdColorspace] of TYCbCrStdParameters = (\n  (LumaRed:0.299; LumaGreen:0.587; LumaBlue:0.114; MinY: 16; ScaleY: 219; MidC: 128; ScaleC: 112),      //ITU-R BT.601\n  (LumaRed:0.299; LumaGreen:0.587; LumaBlue:0.114; MinY: 0; ScaleY: 255; MidC: 128; ScaleC: 127.5),     //ITU-R BT.601 adapted for JPEG\n  (LumaRed:0.2126; LumaGreen:0.7152; LumaBlue:0.0722; MinY: 16; ScaleY: 219; MidC: 128; ScaleC: 112),   //ITU-R BT.709\n  (LumaRed:0.2126; LumaGreen:0.7152; LumaBlue:0.0722; MinY: 0; ScaleY: 255; MidC: 128; ScaleC: 127.5),  //ITU-R BT.709 adapted for JPEG\n  (LumaRed:0.212; LumaGreen:0.701; LumaBlue:0.087; MinY: 16; ScaleY: 219; MidC: 128; ScaleC: 112)       //SMPTE 240M\n  );\n"
  },
  {
    "path": "bgrabitmap/unibitmap.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\n\ntype\n  {* Pointer to working area to be provided to a brush }\n  PUniBrushContext = ^TUniBrushContext;\n  {* Working area to be provided to a brush }\n  TUniBrushContext = record\n    Dest: Pointer;                    //target pixels\n    Ofs: TPoint;                      //offset within image (used with textured/gradient brush)\n    Custom: array[0..15] of byte;     //custom context information\n  end;\n\n  { Additional initialization of the brush context (optional) }\n  TUniBrushInitContextProc = procedure\n    (AFixedData: Pointer;             //address of brush fixed data\n     AContextData: PUniBrushContext); //address of brush contextual data\n\n  { Outputs pixels from current position defined in context }\n  TUniBrushPutNextPixelsProc = procedure\n    (AFixedData: Pointer;             //address of brush data\n     AContextData: PUniBrushContext;  //address of brush contextual data\n     AAlpha: Word;                    //global alpha modifier (0 to draw nothing,\n                                      // 65535 to draw without opacity adjustment)\n     ACount: integer);                //number of pixels to output\n\nconst\n  UniversalBrushFlag_DoNothing = 1;   //the brush does nothing at all and can be skipped\n  UniversalBrushFlag_Reserved1 = 2;\n  UniversalBrushFlag_Reserved2 = 4;\n  UniversalBrushFlag_Reserved3 = 8;\n  UniversalBrushFlag_Reserved4 = 16;\n  UniversalBrushFlag_Reserved5 = 32;\n  UniversalBrushFlag_Reserved6 = 64;\n  UniversalBrushFlag_Reserved7 = 128;\n  //you can define your custom flags from 256 on\n\ntype\n  {* Pointer to a universal brush }\n  PUniversalBrush = ^TUniversalBrush;\n  {* Unversal brush (can be initialized for any colorspace and mode) }\n  TUniversalBrush = record\n  private\n    FColorspace: TColorspaceAny;\n    function GetDoesNothing: boolean; inline;\n    procedure SetColorspace(AValue: TColorspaceAny);\n    procedure SetDoesNothing(AValue: boolean); inline;\n  public\n    FixedData: array[0..31] of byte;\n    InternalInitContext: TUniBrushInitContextProc;       //do not call directly\n    InternalPutNextPixels: TUniBrushPutNextPixelsProc;   //do not call directly\n    Flags: LongWord;\n    procedure MoveTo(AContext: PUniBrushContext; ADest: pointer; AOfsX,AOfsY: integer); inline;\n    procedure PutNextPixels(AContext: PUniBrushContext; AAlpha: Word; ACount: integer); inline;\n    property Colorspace: TColorspaceAny read FColorspace write SetColorspace;\n    property DoesNothing: boolean read GetDoesNothing write SetDoesNothing;\n  end;\n\ntype\n  {* Pointer to the default data structure for a solid brush }\n  PDefaultSolidBrushIndirectFixedData = ^TDefaultSolidBrushIndirectFixedData;\n  {* Default data structure for a solid brush }\n  TDefaultSolidBrushIndirectFixedData = packed record\n    PixelSize: integer;\n    Color: packed array[0..23] of byte;\n  end;\n\nprocedure DefaultSolidBrushIndirectSkipPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nprocedure DefaultSolidBrushIndirectSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\n\ntype\n  {* Data to be passed to the callback function of the path }\n  TPathCallbackData = record\n    BrushAddress: PUniversalBrush;\n    Alpha: Word;\n    Width: single;\n    PixelCenteredCoords: boolean;\n  end;\n\n  {* Base class for the universal bitmap (of any colorspace) }\n\n  { TCustomUniversalBitmap }\n\n  TCustomUniversalBitmap = class(TFPCustomImage, IBGRAScanner)\n  private\n    procedure PathStrokeAliasedCallback(const APoints: array of TPointF;\n      AClosed: boolean; AData: Pointer);\n    procedure PathStrokeAntialiasCallback(const APoints: array of TPointF;\n      AClosed: boolean; AData: Pointer);\n\n  protected\n    FRefCount: integer;\n    FColorspace: TColorspaceAny;\n    FReferenceWhite: PXYZReferenceWhite;\n    FWidth: integer;\n    FHeight: integer;\n    FNbPixels: integer;\n    FPixelSize: integer;\n    FRowSize: PtrInt;\n    FDataByte: PByte;\n    FLineOrder: TRawImageLineOrder;\n\n    //Scan\n    FScanWidth, FScanHeight: integer;    //possibility to reduce the zone being scanned\n    FScanPtr : PByte;                    //current scan address\n    FScanCurX,FScanCurY: integer;        //current scan coordinates\n\n    FClipRect: TRect;\n    FConvertToFPColor, FConvertFromFPColor,\n    FConvertToBGRA, FConvertFromBGRA,\n    FConvertToExpanded, FConvertFromExpanded: TBridgedConversion;\n    FPenStroker: TBGRACustomPenStroker;\n\n    {** Specifies if linear antialiasing must be used when drawing\n        antialiased shapes }\n    FAntialiasingDrawMode: TDrawMode;\n\n    {$IF FPC_FULLVERSION<30203}\n    //Resolution\n    FResolutionUnit: TResolutionUnit;\n    FResolutionX,\n    FResolutionY: Single;\n\n    procedure SetResolutionUnit(AResolutionUnit: TResolutionUnit);\n    function GetResolutionWidth: Single; virtual;\n    function GetResolutionHeight: Single; virtual;\n    {$ENDIF}\n\n    procedure SetResolutionInfo(AResolutionInfo: TImageResolutionInfo); virtual;\n    function GetResolutionInfo: TImageResolutionInfo; virtual;\n    function GetResolutionPhysicalUnit: TCSSUnit;\n\n    //ReadWriteConfig: TBGRAReadWriteConfig;\n\n    procedure Init; virtual;\n    procedure ReallocData; virtual;\n    procedure FreeData; virtual;\n\n    {TFPCustomImage}\n    procedure SetInternalColor(x, y: integer; const Value: TFPColor); override;\n    function GetInternalColor(x, y: integer): TFPColor; override;\n    procedure SetInternalPixel(x, y: integer; Value: integer); override;\n    function GetInternalPixel(x, y: integer): integer; override;\n\n    function CheckEmpty: boolean; virtual;\n    function CheckIsZero: boolean; virtual;\n    function GetClipRect: TRect; virtual;\n    function GetDataBytePtr: PByte; virtual;\n    function GetHasSemiTransparentPixels: boolean; virtual;\n    function GetHasTransparentPixels: boolean; virtual;\n    function GetHeight: integer; virtual;\n    function GetLineOrder: TRawImageLineOrder; virtual;\n    procedure SetLineOrder(AValue: TRawImageLineOrder); virtual;\n    function GetNbPixels: integer; virtual;\n    function GetRefCount: integer; virtual;\n    function GetScanLineByte(y: integer): PByte; virtual;\n    function GetWidth: integer; virtual;\n    procedure SetClipRect(const AValue: TRect); virtual;\n    procedure RaiseInvalidBrushColorspace; virtual;\n    procedure RaiseMissingUniDrawer; virtual;\n    function CheckHorizLineBounds(var x:int32or64; y: int32or64; var x2: int32or64): boolean; inline;\n    function CheckVertLineBounds(x: int32or64; var y, y2: int32or64): boolean; inline;\n    class function DefaultColorspace: TColorspaceAny; virtual;\n    function InternalDuplicate(ACopyProperties: boolean=false): TCustomUniversalBitmap; virtual;\n    function InternalNew: TCustomUniversalBitmap; virtual;\n    procedure InternalCopyPixels(ASource,ADest: PByte; ASourceStride,ADestStride: PtrInt; ACount: integer); virtual;\n    procedure InternalSwapPixels(ABuf1,ABuf2: PByte; AStride1,AStride2: PtrInt; ACount: integer); virtual;\n    procedure InternalSetPixels(ASource,ADest: PByte; ADestStride: PtrInt; ACount: integer); virtual;\n    procedure AssignTransparentPixel(out ADest); virtual;\n    function GetLinearAntialiasing: boolean; virtual;\n    procedure SetLinearAntialiasing(AValue: boolean); virtual;\n    procedure SetAntialiasingDrawMode(AValue: TDrawMode); virtual;\n\n  public\n\n    {** User defined caption. It does not appear on the image }\n    Caption:   string;\n\n    {** Method to use when filling polygons (winding or alternate).\n        See [[BGRABitmap Types imported from Graphics|BGRAGraphics]] }\n    FillMode:  TFillMode;\n\n    {** Creates an image of width and height equal to zero. In this case,\n        ''DataByte'' = '''nil''' }\n    constructor Create; overload;\n    constructor Create(AColorspace: TColorspaceAny; ALineOrder: TRawImageLineOrder); overload;\n    constructor Create(AColorspace: TColorspaceAny; AWidth, AHeight: integer;\n                       ALineOrder: TRawImageLineOrder); overload;\n\n    procedure Assign(Source: TPersistent); override;\n    procedure Assign(Source: TPersistent; ACopyProperties: Boolean); virtual; overload;\n\n    function NewBitmap: TCustomUniversalBitmap; overload; virtual;\n    function NewBitmap(AWidth, AHeight: integer): TCustomUniversalBitmap; overload; virtual;\n    function NewBitmap(AWidth, AHeight: integer; AColor: Pointer): TCustomUniversalBitmap; overload; virtual;\n\n    {** Adds a reference (this reference count is not the same as\n        the reference count of an interface, it changes only by\n        explicit calls) }\n    function NewReference: TCustomUniversalBitmap; virtual;\n    {** Free a reference. When the resulting reference count gets\n        to zero, the image is freed. The initial reference count\n        is equal to 1 }\n    procedure FreeReference;\n    {** Returns an object with a reference count equal to 1. Duplicate\n        this bitmap if necessary }\n    function GetUnique: TCustomUniversalBitmap; virtual;\n    function Duplicate(ACopyProperties: boolean=false): TCustomUniversalBitmap; virtual;\n    procedure CopyPropertiesTo(ABitmap: TCustomUniversalBitmap); virtual;\n    {** Get a part of the image with repetition in both directions. It means\n      that if the bounds are within the image, the result is just that part\n      of the image, but if the bounds are bigger than the image, the image\n      is tiled. }\n    function GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TCustomUniversalBitmap; virtual;\n\n    procedure InvalidateBitmap; virtual;         //call if you modify with Scanline\n    procedure LoadFromBitmapIfNeeded; virtual;   //call to ensure that data is up to date\n\n    {** Clear all channels of transparent pixels }\n    procedure ClearTransparentPixels; virtual;\n\n    {** Initializes a brush that erases (reduces the alpha channel) }\n    class procedure EraseBrush(out {%H-}ABrush: TUniversalBrush; {%H-}AAlpha: Word); virtual;\n    {** Initializes a brush that sets the alpha channel }\n    class procedure AlphaBrush(out {%H-}ABrush: TUniversalBrush; {%H-}AAlpha: Word); virtual;\n    procedure SolidBrushBGRA(out ABrush: TUniversalBrush; ARed,AGreen,ABlue,AAlpha: Byte; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual;\n    procedure SolidBrushBGRA(out ABrush: TUniversalBrush; AColor: TBGRAPixel; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual;\n    procedure SolidBrushExpanded(out ABrush: TUniversalBrush; ARed,AGreen,ABlue,AAlpha: Word; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual;\n    procedure SolidBrushExpanded(out ABrush: TUniversalBrush; AColor: TExpandedPixel; ADrawMode: TDrawMode = dmDrawWithTransparency); overload; virtual;\n    procedure SolidBrushIndirect(out ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode = dmDrawWithTransparency); virtual;\n    {** Initializes a brush that fills a texture from a scanner }\n    class procedure ScannerBrush(out {%H-}ABrush: TUniversalBrush; {%H-}AScanner: IBGRAScanner; {%H-}ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 {%H-}AOffsetX: integer = 0; {%H-}AOffsetY: integer = 0); virtual;\n    class procedure MaskBrush(out {%H-}ABrush: TUniversalBrush; {%H-}AScanner: IBGRAScanner;\n                              {%H-}AOffsetX: integer = 0; {%H-}AOffsetY: integer = 0); virtual;\n\n    {TFPCustomImage}\n    {** Creates a new bitmap, initialize properties and bitmap data }\n    constructor Create(AWidth, AHeight: integer); overload; override;\n    {** Sets the dimension of an existing bitmap /!\\ Data can be random }\n    procedure SetSize(AWidth, AHeight: integer); override;\n    destructor Destroy; override;\n\n    {==== Load and save files ====}\n\n    {** Stores the image in the stream without compression nor header }\n    procedure Serialize(AStream: TStream); virtual;\n    {** Reads the image in a stream that was previously serialized }\n    procedure Deserialize(AStream: TStream); virtual;\n    {** Stores an empty image (of size zero) }\n    class procedure SerializeEmpty(AStream: TStream); static;\n\n    //there are UTF8 functions that are different from standard function as those\n    //depend on TFPCustomImage that does not clearly handle UTF8\n\n    {** Load image from a file. ''filename'' is an ANSI string }\n    procedure LoadFromFile(const AFilename: string); overload; virtual;\n    procedure LoadFromFile(const AFilename: string; AOptions: TBGRALoadingOptions); overload; virtual;\n    {** Load image from a file with the specified image reader. ''filename'' is an ANSI string }\n    procedure LoadFromFile(const AFilename:String; AHandler:TFPCustomImageReader); overload; virtual;\n    procedure LoadFromFile(const AFilename:String; AHandler:TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; virtual;\n    {** Load image from a file. ''filename'' is an UTF8 string }\n    procedure LoadFromFileUTF8(const AFilenameUTF8: string; AOptions: TBGRALoadingOptions = []); overload; virtual;\n    {** Load image from a file with the specified image reader. ''filename'' is an UTF8 string }\n    procedure LoadFromFileUTF8(const AFilenameUTF8: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions = []); overload; virtual;\n    {** Load image from a stream. Format is detected automatically }\n    procedure LoadFromStream(AStream: TStream);overload; virtual;\n    procedure LoadFromStream(AStream: TStream; AOptions: TBGRALoadingOptions);overload; virtual;\n    {** Load image from a stream. The specified image reader is used }\n    procedure LoadFromStream(AStream: TStream; AHandler: TFPCustomImageReader);overload; virtual;\n    procedure LoadFromStream(AStream: TStream; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);overload; virtual;\n    {** Load image from an embedded Lazarus resource. Format is detected automatically }\n    procedure LoadFromResource(AFilename: string); overload; virtual;\n    procedure LoadFromResource(AFilename: string; AOptions: TBGRALoadingOptions); overload; virtual;\n    {** Load image from an embedded Lazarus resource. The specified image reader is used }\n    procedure LoadFromResource(AFilename: string; AHandler: TFPCustomImageReader); overload; virtual;\n    procedure LoadFromResource(AFilename: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; virtual;\n\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    procedure SaveToFile(const AFilename: string);overload; virtual;\n    {** Save image to a file with the specified image writer. ''filename'' is an ANSI string }\n    procedure SaveToFile(const AFilename: string; AHandler:TFPCustomImageWriter);overload; virtual;\n    {** Save image to a file in the specified image format }\n    procedure SaveToFile(const AFilename: string; AFormat: TBGRAImageFormat); overload; virtual;\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    procedure SaveToFileUTF8(const AFilenameUTF8: string);overload; virtual;\n    {** Save image to a file with the specified image writer. ''filename'' is an UTF8 string }\n    procedure SaveToFileUTF8(const AFilenameUTF8: string; AHandler:TFPCustomImageWriter);overload; virtual;\n    {** Save image to a file in the specified image format }\n    procedure SaveToFileUTF8(const AFilenameUTF8: string; AFormat: TBGRAImageFormat); overload; virtual;\n\n    {** Save image to a stream with the specified image writer }{inherited\n    procedure SaveToStream (Str:TStream; Handler:TFPCustomImageWriter);\n   }{** Save image to a stream in the specified image format }\n    procedure SaveToStreamAs(AStream: TStream; AFormat: TBGRAImageFormat); virtual;\n    {** Save image to a stream in PNG format }\n    procedure SaveToStreamAsPng(AStream: TStream); virtual;\n\n    {==== Clipping ====}\n\n    {** Stop clipping (clipping rectangle becomes the whole image) }\n    procedure NoClip; virtual;\n    {** Reduce the clipping region further by intersection and returns the previous clipping rectangle }\n    function IntersectClip(const ARect: TRect): TRect;\n    {** Checks if the specified point is in the clipping rectangle ''ClipRect'' }\n    function PtInClipRect(x, y: int32or64): boolean; inline;\n    {** Check if the bounds are within the clipping rectangle and adjust the coordinates to fit\n        (similar to IntersectRect but may flip the coordinates) }\n    function CheckClippedRectBounds(var x,y,x2,y2: integer): boolean;\n\n    {==== Basic drawing functions ====}\n\n    {** Fill the whole image regardless of clipping rect }\n    procedure Fill(const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure Fill(ATexture: IBGRAScanner; AMode: TDrawMode); overload; virtual;\n    procedure Fill(ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word); overload; virtual;\n    procedure FillTransparent; virtual;\n    procedure AlphaFill(alpha: byte); virtual;\n\n    {** Masking }\n    procedure ApplyMask(mask: TCustomUniversalBitmap; AAlpha: Word = 65535); overload;\n    procedure ApplyMask(mask: TCustomUniversalBitmap; ARect: TRect; AAlpha: Word = 65535); overload;\n    procedure ApplyMask(mask: TCustomUniversalBitmap; ARect: TRect; AMaskRectTopLeft: TPoint; AAlpha: Word = 65535); overload; virtual;\n    procedure ApplyGlobalOpacity(alpha: byte); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; const ABrush: TUniversalBrush); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; AMode: TDrawMode); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; AMode: TDrawMode; AScanOffset: TPoint); overload; virtual;\n\n    {** Fills completely a rectangle, without any border }\n    procedure FillRect(ALeft, ATop, ARight, ABottom: integer; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(const ARect: TRect; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(ALeft, ATop, ARight, ABottom: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(const ARect: TRect; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(ALeft, ATop, ARight, ABottom: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AScanOffset: TPoint; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(const ARect: TRect; ATexture: IBGRAScanner; AMode: TDrawMode; AScanOffset: TPoint; AAlpha: Word = 65535); overload; virtual;\n    procedure EraseRect(ALeft, ATop, ARight, ABottom: integer; alpha: byte); virtual;\n    procedure EraseRect(const ARect: TRect; alpha: byte); virtual;\n    procedure AlphaFillRect(ALeft, ATop, ARight, ABottom: integer; alpha: byte); virtual;\n    procedure AlphaFillRect(const ARect: TRect; alpha: byte); virtual;\n    procedure ApplyGlobalOpacity(ARect: TRect; alpha: byte); overload; virtual;\n    procedure DrawCheckers(ARect: TRect; const ABrushEven,ABrushOdd: TUniversalBrush; AGridWidth: integer = 8; AGridHeight: integer = 8); overload; virtual;\n\n    {** Returns the address of a pixel. /!\\ Does not check if the coordinates are valid. }\n    function GetPixelAddress(x,y: integer): PByte; virtual;\n    procedure SetPixelIndirect(x,y: int32or64; AColor: pointer); virtual;\n    procedure GetPixelIndirect(x,y: int32or64; AColor: pointer); virtual;\n    procedure GetPixelCycleIndirect(x,y: int32or64; AColor: pointer); virtual;\n    procedure DrawPixel(x,y: Int32or64; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawPixel(x,y: Int32or64; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawPixelF(x,y: single; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawPixelF(x,y: single; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    {** Erase the content of the pixel by reducing the value of the\n        alpha channel. ''alpha'' specifies how much to decrease.\n        If the resulting alpha reaches zero, the content\n        is replaced by the transparent pixel }\n    procedure ErasePixel(x, y: int32or64; alpha: byte); virtual;\n    procedure ErasePixelF(x, y: single; alpha: byte); virtual;\n    {** Sets the alpha value at (''x'',''y''). If ''alpha'' = 0, the\n        pixel is replaced by the transparent pixel }\n    procedure AlphaPixel(x, y: int32or64; alpha: byte); virtual;\n    procedure AlphaPixelF(x, y: single; alpha: byte); virtual;\n    procedure HorizLine(x, y, x2: int32or64; const ABrush: TUniversalBrush; AAlpha: Word = 65535); virtual;\n    {** Draws an horizontal line at line ''y'' and\n        at columns ''x'' to ''x2'' included, using specified scanner\n        and the specified ''AMode'' }\n    procedure HorizLine(x, y, x2: int32or64; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure EraseHorizLine(x,y,x2: int32or64; alpha: byte); virtual;\n    procedure AlphaHorizLine(x,y,x2: int32or64; alpha: byte); virtual;\n    procedure VertLine(x, y, y2: int32or64; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure VertLine(x, y, y2: int32or64; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure EraseVertLine(x, y, y2: int32or64; alpha: byte); virtual;\n    procedure AlphaVertLine(x, y, y2: int32or64; alpha: byte); virtual;\n\n    {** Draws an aliased line from (x1,y1) to (x2,y2) using Bresenham's algorithm.\n        ''DrawLastPixel'' specifies if (x2,y2) must be drawn. }\n    procedure DrawLine(x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLine(x1, y1, x2, y2: integer; ATexture: IBGRAScanner; AMode: TDrawMode; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    {** Draws an antialiased line from (x1,y1) to (x2,y2) using an improved version of Bresenham's algorithm\n        ''DrawLastPixel'' specifies if (x2,y2) must be drawn }\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; ATexture: IBGRAScanner; AMode: TDrawMode; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    {** Draws an antialiased line with two brushes as dashes of length ''ADashLen''.\n        ''ADashPos'' can be used to specify the start dash position and to retrieve the dash position at the end\n        of the line, in order to draw a polyline with consistent dashes }\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; var ADashPos: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n\n    {** Erases the line from (x1,y1) to (x2,y2) using Bresenham's algorithm.\n        ''alpha'' specifies how much to decrease. If ''alpha'' = 0, nothing\n        is changed and if ''alpha'' = 255, all pixels become transparent.\n        ''DrawListPixel'' specifies if (x2,y2) must be changed }\n    procedure EraseLine(x1, y1, x2, y2: integer; alpha: byte; DrawLastPixel: boolean); virtual;\n    {** Erases the line from (x1,y1) to (x2,y2) width antialiasing.\n        ''alpha'' specifies how much to decrease. If ''alpha'' = 0, nothing\n        is changed and if ''alpha'' = 255, all pixels become transparent.\n        ''DrawListPixel'' specifies if (x2,y2) must be changed }\n    procedure EraseLineAntialias(x1, y1, x2, y2: integer; alpha: byte; DrawLastPixel: boolean); virtual;\n    procedure AlphaLine(x1, y1, x2, y2: integer; alpha: byte; DrawLastPixel: boolean); virtual;\n    procedure AlphaLineAntialias(x1, y1, x2, y2: integer; alpha: byte; DrawLastPixel: boolean); virtual;\n\n    procedure DrawPolyLine(const points: array of TPoint; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535);\n    procedure DrawPolyLineAntialias(const points: array of TPoint; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload;\n    procedure DrawPolyLineAntialias(const points: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload;\n    procedure ErasePolyLine(const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\n    procedure ErasePolyLineAntialias(const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\n    procedure AlphaPolyLine(const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\n    procedure AlphaPolyLineAntialias(const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\n\n    procedure DrawPolygon(const points: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535);\n    procedure DrawPolygonAntialias(const points: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload;\n    procedure DrawPolygonAntialias(const points: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; AAlpha: Word = 65535); overload;\n    procedure ErasePolygonOutline(const points: array of TPoint; alpha: byte);\n    procedure ErasePolygonOutlineAntialias(const points: array of TPoint; alpha: byte);\n    procedure AlphaPolygonOutline(const points: array of TPoint; alpha: byte);\n    procedure AlphaPolygonOutlineAntialias(const points: array of TPoint; alpha: byte);\n\n    procedure DrawPathAliased(APath: IBGRAPath; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure DrawPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n\n    {==== Rectangles (integer coordinates) ====}\n    {* The integer coordinates of rectangles interpreted such that\n       that the bottom/right pixels are not drawn. The width is equal\n       to x2-x, and pixels are drawn from x to x2-1. If x = x2, then nothing\n       is drawn. See [[BGRABitmap tutorial 13|coordinate system]].\n     * These functions do not take into account current pen style/cap/join.\n       They draw a continuous 1-pixel width border }\n\n    {** Draw the border of a rectangle }\n    procedure Rectangle(x, y, x2, y2: integer; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(x, y, x2, y2: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(const ARect: TRect; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(const ARect: TRect; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    {** Draw a filled rectangle with a border }\n    procedure Rectangle(x, y, x2, y2: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(const ARect: TRect; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n\n    procedure RoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure RoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure RoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure EraseRoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; alpha: byte); virtual;\n    procedure AlphaFillRoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; alpha: byte); virtual;\n\n    procedure EllipseInRect(ARect: TRect; const ABorderBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure EllipseInRect(ARect: TRect; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure EllipseInRect(ARect: TRect; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillEllipseInRect(ARect: TRect; const AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual;\n    procedure FillEllipseInRect(ARect: TRect; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure EraseEllipseInRect(ARect: TRect; alpha: byte); virtual;\n    procedure AlphaFillEllipseInRect(ARect: TRect; alpha: byte); virtual;\n\n    procedure FillShape(AShape: TBGRACustomFillInfo; const ABrush: TUniversalBrush; AAlpha: Word = 65535); virtual;\n    procedure FillShape(AShape: TBGRACustomFillInfo; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word = 65535); virtual;\n    procedure EraseShape(AShape: TBGRACustomFillInfo; alpha: byte); virtual;\n    procedure AlphaFillShape(AShape: TBGRACustomFillInfo; alpha: byte); virtual;\n\n    procedure FillPoly(const APoints: array of TPointF; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload; virtual;\n    procedure FillPoly(const APoints: array of TPointF; ATexture: IBGRAScanner; AMode: TDrawMode; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload; virtual;\n    procedure ErasePoly(const APoints: array of TPointF; alpha: byte; APixelCenteredCoordinates: boolean = true); virtual;\n    procedure AlphaFillPoly(const APoints: array of TPointF; alpha: byte; APixelCenteredCoordinates: boolean = true); virtual;\n\n    procedure FillPathAliased(APath: IBGRAPath; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure FillPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure FillPathAliased(APath: IBGRAPath; ATexture: IBGRAScanner; AMode: TDrawMode; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure FillPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AMode: TDrawMode; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure ErasePathAliased(APath: IBGRAPath; alpha: byte; APixelCenteredCoordinates: boolean = true); overload;\n    procedure ErasePathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; alpha: byte; APixelCenteredCoordinates: boolean = true); overload;\n    procedure AlphaFillPathAliased(APath: IBGRAPath; alpha: byte; APixelCenteredCoordinates: boolean = true); overload;\n    procedure AlphaFillPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; alpha: byte; APixelCenteredCoordinates: boolean = true); overload;\n\n    property Colorspace: TColorspaceAny read FColorspace;\n\n    procedure VerticalFlip; overload; virtual;\n    procedure VerticalFlip(ARect: TRect); overload; virtual;\n    procedure HorizontalFlip; overload; virtual;\n    procedure HorizontalFlip(ARect: TRect); overload; virtual;\n    procedure RotateUDInplace; overload; virtual;\n    procedure RotateUDInplace(ARect: TRect); overload; virtual;\n\n    { Return a new bitmap rotated in a clock wise direction. }\n    function RotateCW(ACopyProperties: Boolean=False): TCustomUniversalBitmap; virtual;\n    { Return a new bitmap rotated in a counter clock wise direction. }\n    function RotateCCW(ACopyProperties: Boolean=False): TCustomUniversalBitmap; virtual;\n    { Return a new bitmap rotated 180° (upside down). }\n    function RotateUD(ACopyProperties: Boolean=False): TCustomUniversalBitmap; virtual;\n\n    {** Width of the image in pixels }\n    property Width: integer Read GetWidth;\n    {** Height of the image in pixels }\n    property Height: integer Read GetHeight;\n\n    {** Size in bytes of a row of pixels }\n    property RowSize: PtrInt read FRowSize;\n\n    {** Clipping rectangle for all drawing functions }\n    property ClipRect: TRect read GetClipRect write SetClipRect;\n\n    property LinearAntialiasing: boolean read GetLinearAntialiasing write SetLinearAntialiasing;\n    property AntialiasingDrawMode: TDrawMode read FAntialiasingDrawMode write SetAntialiasingDrawMode;\n\n    {** Total number of pixels. It is always true that ''NbPixels'' = ''Width'' * ''Height'' }\n    property NbPixels: integer Read GetNbPixels;\n\n    {** Returns the address of the left-most pixel of any line.\n        The parameter y ranges from 0 to Height-1 }\n    property ScanLineByte[y: integer]: PByte Read GetScanLineByte;\n\n    {** Indicates the order in which lines are stored in memory.\n        If it is equal to ''riloTopToBottom'', the first line is the top line.\n        If it is equal to ''riloBottomToTop'', the first line is the bottom line.\n        See [[BGRABitmap Miscellaneous types|miscellaneous types]] }\n    property LineOrder: TRawImageLineOrder Read GetLineOrder write SetLineOrder;\n\n    {** Provides a pointer to the first pixel in memory.\n        Depending on the ''LineOrder'' property, this can be the top-left pixel or the bottom-left pixel.\n        There is no padding between scanlines.\n        See [[BGRABitmap tutorial 4]] }\n    property DataByte: PByte Read GetDataBytePtr;\n\n    {** Number of references to this image. It is increased by the function\n        ''NewReference'' and decreased by the function ''FreeReference'' }\n    property RefCount: integer Read GetRefCount;\n\n    {** Returns True if the bitmap only contains transparent pixels or has a size of zero }\n    property Empty: boolean Read CheckEmpty;\n\n    {** Returns True if the bitmap is filled with zero values or has a size of zero }\n    property IsZero: boolean Read CheckIsZero;\n\n    {** Returns True if there are transparent and so if the image would\n        be stored at least with an alpha channel of 1 bit }\n    property HasTransparentPixels: boolean Read GetHasTransparentPixels;\n\n    {** Returns True if there are semitransparent pixels\n        and so if the image would be stored with an alpha channel of at least 8 bit }\n    property HasSemiTransparentPixels: boolean Read GetHasSemiTransparentPixels;\n\n    {** Current reference white used for color conversion }\n    property ReferenceWhite: PXYZReferenceWhite read FReferenceWhite write FReferenceWhite;\n\n    {$IF FPC_FULLVERSION<30203}\n    //Resolution\n    property ResolutionUnit: TResolutionUnit read FResolutionUnit write SetResolutionUnit;\n    property ResolutionX: Single read FResolutionX write FResolutionX;\n    property ResolutionY: Single read FResolutionY write FResolutionY;\n    property ResolutionWidth: Single read GetResolutionWidth;\n    property ResolutionHeight: Single read GetResolutionHeight;\n    {$ENDIF}\n    property ResolutionInfo: TImageResolutionInfo read GetResolutionInfo write SetResolutionInfo;\n    property ResolutionPhysicalUnit: TCSSUnit read GetResolutionPhysicalUnit;\n\n    {==== Pen style ====}\n  protected\n    function GetArrow: TBGRACustomArrow; virtual;\n    function GetLineCap: TPenEndCap; virtual;\n    function GetInternalPen: TBGRACustomPenStroker; virtual;\n    function GetPenStroker: TBGRACustomPenStroker; virtual;\n    procedure SetLineCap(AValue: TPenEndCap); virtual;\n\n  public\n     {** You can use this class set pen style and generate strokes polygonal representations }\n     property Pen: TBGRACustomPenStroker read GetPenStroker;\n     {** How to draw the ends of a line (applies to arrow as well) }\n     property LineCap: TPenEndCap read GetLineCap write SetLineCap;\n     {** Properties of arrow ends }\n     property Arrow: TBGRACustomArrow read GetArrow;\n\n     {==== Drawing lines and paths (floating point coordinates) ====}\n     {* These functions use the current pen style/cap/join. The parameter ''APenWidth''\n        specifies the width of the line and the base unit for dashes.\n        See [[BGRABitmap tutorial 13|coordinate system]].\n      * The coordinates are pixel-centered by default, so that when filling a rectangle,\n        if the supplied values are integers, the border will be half transparent.\n        If you want the border to be completely filled, you can subtract/add\n        0.5 to the coordinates to include the remaining thin border.\n        See [[BGRABitmap tutorial 13|coordinate system]]. }\n\n     {** Draws a line from (x1,y1) to (x2,y2) using current pen style/cap/join }\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; const ABrush: TUniversalBrush; APenWidth: single); overload; virtual;\n    {** Draws a line from (x1,y1) to (x2,y2) using current pen style/cap/join.\n        ''texture'' specifies the source color to use when filling the line }\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; ATexture: IBGRAScanner; APenWidth: single); overload; virtual;\n    {** Draws a line from (x1,y1) to (x2,y2) using current pen style/cap/join.\n        ''Closed'' specifies if the end of the line is roundly closed. If it is not closed,\n        a space is left so that the next line can fit }\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; const ABrush: TUniversalBrush; APenWidth: single; AClosedCap: boolean); overload; virtual;\n    {** Same as above with ''texture'' specifying the source color to use when filling the line }\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; ATexture: IBGRAScanner; APenWidth: single; AClosedCap: boolean); overload; virtual;\n    {** Erases a line from (x1,y1) to (x2,y2) using current pen style/cap/join }\n    procedure EraseLineAntialias(x1, y1, x2, y2: single; AAlpha: Byte; APenWidth: single); overload; virtual;\n    {** Erases a line from (x1,y1) to (x2,y2) using current pen style/cap/join.\n        ''Closed'' specifies if the end of the line is roundly closed. If it is not closed,\n        a space is left so that the next line can fit }\n    procedure EraseLineAntialias(x1, y1, x2, y2: single; AAlpha: Byte; APenWidth: single; AClosedCap: boolean); overload; virtual;\n\n    {** Draws a polyline using current pen style/cap/join }\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; const ABrush: TUniversalBrush; APenWidth: single); overload; virtual;\n    {** Draws a polyline using current pen style/cap/join.\n        ''texture'' specifies the source color to use when filling the line }\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single); overload; virtual;\n    {** Erases a polyline using current pen style/cap/join }\n    procedure ErasePolyLineAntialias(const APoints: array of TPointF; AAlpha: byte; APenWidth: single); overload; virtual;\n\n    {** Draws a polyline using current pen style/cap/join.\n        ''Closed'' specifies if the end of the line is roundly closed. If it is not closed,\n        a space is left so that the next line can fit }\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; const ABrush: TUniversalBrush; APenWidth: single; AClosedCap: boolean); overload; virtual;\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single; AClosedCap: boolean); overload; virtual;\n    procedure ErasePolyLineAntialias(const APoints: array of TPointF; AAlpha: byte; APenWidth: single; AClosedCap: boolean); overload; virtual;\n\n    {** Draws a polyline using current pen style/cap/join.\n        The last point considered as a join with the first point if it has\n        the same coordinate }\n    procedure DrawPolyLineAntialiasAutocycle(const APoints: array of TPointF; const ABrush: TUniversalBrush; APenWidth: single); overload; virtual;\n    {** Draws a polygon using current pen style/cap/join. Use a texture to fill the line.\n        The polygon is always closed. You don't need to set the last point\n        to be the same as the first point }\n    procedure DrawPolyLineAntialiasAutocycle(const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single); overload; virtual;\n    procedure ErasePolyLineAntialiasAutocycle(const APoints: array of TPointF; AAlpha: byte; APenWidth: single); overload; virtual;\n\n    {** Draws a polygon using current pen style/cap/join.\n        The polygon is always closed. You don't need to set the last point\n        to be the same as the first point }\n    procedure DrawPolygonAntialias(const APoints: array of TPointF; const ABrush: TUniversalBrush; APenWidth: single); overload; virtual;\n    procedure DrawPolygonAntialias(const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single); overload; virtual;\n    procedure ErasePolygonOutlineAntialias(const APoints: array of TPointF; AAlpha: byte; APenWidth: single); overload; virtual;\n\n    procedure RectangleAntialias(x, y, x2, y2: single; const ABrush: TUniversalBrush; AWidth: single); overload; virtual;\n    procedure RectangleAntialias(x, y, x2, y2: single; ATexture: IBGRAScanner; AWidth: single); overload; virtual;\n\n    {** Draws an ellipse without antialising. ''rx'' is the horizontal radius and\n        ''ry'' the vertical radius }\n    procedure Ellipse(x, y, rx, ry: single; const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word = 65535); overload; virtual;\n    procedure Ellipse(x, y, rx, ry: single; ATexture: IBGRAScanner; AWidth: single; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure Ellipse(const AOrigin, AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word = 65535); overload; virtual;\n    procedure Ellipse(const AOrigin, AXAxis, AYAxis: TPointF; ATexture: IBGRAScanner; AWidth: single; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    {** Draws an ellipse with antialising. ''rx'' is the horizontal radius and\n        ''ry'' the vertical radius }\n    procedure EllipseAntialias(x, y, rx, ry: single; const ABrush: TUniversalBrush; AWidth: single); overload; virtual;\n    procedure EllipseAntialias(x, y, rx, ry: single; ATexture: IBGRAScanner; AWidth: single); overload; virtual;\n    procedure EllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush; AWidth: single); overload; virtual;\n    procedure EllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; ATexture: IBGRAScanner; AWidth: single); overload; virtual;\n\n    procedure DrawPath(APath: IBGRAPath; const ABrush: TUniversalBrush; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure DrawPath(APath: IBGRAPath; ATexture: IBGRAScanner; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure DrawPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure DrawPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    {==== Antialias fill ====}\n    procedure FillShapeAntialias(AShape: TBGRACustomFillInfo; const ABrush: TUniversalBrush); overload; virtual;\n    procedure FillShapeAntialias(AShape: TBGRACustomFillInfo; ATexture: IBGRAScanner); overload; virtual;\n    procedure EraseShapeAntialias(AShape: TBGRACustomFillInfo; AAlpha: Byte); overload; virtual;\n    procedure FillPolyAntialias(const APoints: array of TPointF; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    {** @abstract(Fills a polygon with a texture and with antialiased borders.)\n\n    Texture will be repeated if smaller than output area.\n\n@image(../doc/img/fillpolyantialias_texture.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar image: TBGRABitmap;\n    tex: TBGRABitmap;\nbegin\n  //black background\n  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );\n\n  tex:= TBGRABitmap.Create('image.png'); //load a bitmap\n  image.FillPolyAntialias( [PointF(110,10), PointF(250,10), PointF(350,160), PointF(10,160)], tex);\n  tex.Free;\n\n  image.Draw(Canvas,0,0,True); //draw on the screen\n  image.free;\nend;\n```}\n    procedure FillPolyAntialias(const APoints: array of TPointF; ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure ErasePolyAntialias(const APoints: array of TPointF; AAlpha: Byte; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    {** Fills an ellipse which axes are parallel to X and Y axes }\n    procedure FillEllipseAntialias(x, y, rx, ry: single; const ABrush: TUniversalBrush); overload; virtual;\n    procedure FillEllipseAntialias(x, y, rx, ry: single; ATexture: IBGRAScanner); overload; virtual;\n    {** Erases the content of an ellipse which axes are parallel to X and Y axes }\n    procedure EraseEllipseAntialias(x, y, rx, ry: single; AAlpha: Byte); overload; virtual;\n    {** Fills an ellipse with any axes }\n    procedure FillEllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush); overload; virtual;\n    procedure FillEllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; ATexture: IBGRAScanner); overload; virtual;\n    {** Erases the content of an ellipse with any axes }\n    procedure EraseEllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; AAlpha: Byte); overload; virtual;\n    {** Fills a rectangle with antialiasing. Note that the pixel (x2,y2) is\n        included contrary to integer coordinates. For example (-0.5,-0.5,0.5,0.5)\n        with pixel-centered coords fills one pixel }\n    procedure FillRectAntialias(x, y, x2, y2: single; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRectAntialias(x, y, x2, y2: single; ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure EraseRectAntialias(x, y, x2, y2: single; AAlpha: Byte; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRectAntialias(const ARectF: TRectF; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRectAntialias(const ARectF: TRectF; ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure EraseRectAntialias(const ARectF: TRectF; AAlpha: Byte; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRoundRectAntialias(x, y, x2, y2, rx, ry: single; const ABrush: TUniversalBrush; AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRoundRectAntialias(x, y, x2, y2, rx, ry: single; ATexture: IBGRAScanner; AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure EraseRoundRectAntialias(x, y, x2, y2, rx, ry: single; AAlpha: Byte; AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure ErasePath(APath: IBGRAPath; AAlpha: Byte; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure ErasePath(APath: IBGRAPath; const AMatrix: TAffineMatrix; AAlpha: byte; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n  protected {==== 'IBGRAScanner'' interface ====}\n    function ProvidesScanline({%H-}ARect: TRect): boolean; virtual;\n    function GetScanlineAt({%H-}X, {%H-}Y: integer): PBGRAPixel; virtual;\n    function GetTextureGL: IUnknown; virtual;\n  public\n    {** Offset to apply when the image is scanned }\n    ScanOffset: TPoint;\n\n    function ScanAtInteger(X,Y: integer): TBGRAPixel; virtual;\n    function ScanAtIntegerExpanded(X, Y: integer): TExpandedPixel; virtual;\n    procedure ScanMoveTo(X,Y: Integer); virtual;\n    function ScanNextPixel: TBGRAPixel; virtual;\n    function ScanNextExpandedPixel: TExpandedPixel; virtual;\n    function ScanAt(X,Y: Single): TBGRAPixel; virtual;\n    function ScanAtExpanded(X, Y: Single): TExpandedPixel; virtual;\n    function IsScanPutPixelsDefined: boolean; virtual;\n    procedure ScanPutPixels({%H-}pdest: PBGRAPixel; {%H-}count: integer; {%H-}mode: TDrawMode); virtual;\n    procedure ScanSkipPixels(ACount: integer); virtual;\n    function GetImageBounds: TRect; overload; virtual;\n    function GetImageBounds(Channel: TChannel; ANothingValue: Byte = 0): TRect; overload;\n    function GetImageBounds(Channels: TChannels; ANothingValue: Byte = 0): TRect; overload;\n    function GetImageBoundsWithin(const ARect: TRect; Channel: TChannel = cAlpha; ANothingValue: Byte = 0): TRect; overload; virtual;\n    function GetImageBoundsWithin(const ARect: TRect; Channels: TChannels; ANothingValue: Byte = 0): TRect; overload; virtual;\n    function GetScanCustomColorspace: TColorspaceAny; virtual;\n    procedure ScanNextCustomChunk(var ACount: integer; out APixels: Pointer); virtual;\n    procedure ScanNextMaskChunk(var {%H-}ACount: integer; out {%H-}AMask: PByteMask; out {%H-}AStride: integer); virtual;\n    function ScanAtIntegerMask(X,Y: integer): TByteMask; virtual;\n    function ScanAtMask({%H-}X,{%H-}Y: Single): TByteMask; virtual;\n\n  protected\n    //interface\n    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n    function _Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\n\n  public\n    procedure PutImage(X, Y: integer; ASource: TCustomUniversalBitmap; AMode: TDrawMode; AOpacity: byte = 255); virtual;\n\n  public\n    {$IFNDEF BGRABITMAP_CORE}\n    //filters\n    function FilterBlurRadial(radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterBlurRadial(const ABounds: TRect; radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterBlurRadial(radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterBlurRadial(const ABounds: TRect; radiusX, radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterBlurMotion(distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterBlurMotion(const ABounds: TRect; distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    function FilterCustomBlur(const ABounds: TRect; mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TCustomUniversalBitmap; overload; virtual;\n    {$ENDIF}\n  end;\n\n  { Abstract class for a drawer on an universal bitmap }\n  TCustomUniversalDrawer = class\n\n    {==== Load and save files ====}\n\n    //there are UTF8 functions that are different from standard function as those\n    //depend on TFPCustomImage that does not clearly handle UTF8\n\n    {** Load image from a file. ''filename'' is an ANSI string }\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename: string); overload; virtual; abstract;\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename: string; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n    {** Load image from a file with the specified image reader. ''filename'' is an ANSI string }\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename:String; AHandler:TFPCustomImageReader); overload; virtual; abstract;\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename:String; AHandler:TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n    {** Load image from a file. ''filename'' is an UTF8 string }\n    class procedure LoadFromFileUTF8(ADest: TCustomUniversalBitmap; const AFilenameUTF8: string; AOptions: TBGRALoadingOptions = []); overload; virtual; abstract;\n    {** Load image from a file with the specified image reader. ''filename'' is an UTF8 string }\n    class procedure LoadFromFileUTF8(ADest: TCustomUniversalBitmap; const AFilenameUTF8: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions = []); overload; virtual; abstract;\n    {** Load image from a stream. Format is detected automatically }\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream);overload; virtual; abstract;\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AOptions: TBGRALoadingOptions);overload; virtual; abstract;\n    {** Load image from a stream. The specified image reader is used }\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AHandler: TFPCustomImageReader);overload; virtual; abstract;\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n    {** Load image from an embedded Lazarus resource. Format is detected automatically }\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string); overload; virtual; abstract;\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n    {** Load image from an embedded Lazarus resource. The specified image reader is used }\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AHandler: TFPCustomImageReader); overload; virtual; abstract;\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; virtual; abstract;\n\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string); overload; virtual; abstract;\n    {** Save image to a file with the specified image writer. ''filename'' is an ANSI string }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string; AHandler:TFPCustomImageWriter); overload; virtual; abstract;\n    {** Save image to a file in the specified image format }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string; AFormat: TBGRAImageFormat); overload; virtual; abstract;\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string); overload; virtual; abstract;\n    {** Save image to a file with the specified image writer. ''filename'' is an UTF8 string }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string; AHandler:TFPCustomImageWriter); overload; virtual; abstract;\n    {** Save image to a file in the specified image format }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string; AFormat: TBGRAImageFormat); overload; virtual; abstract;\n\n    {** Save image to a stream in the specified image format }\n    class procedure SaveToStreamAs(ASource: TCustomUniversalBitmap; AStream: TStream; AFormat: TBGRAImageFormat); virtual; abstract;\n    {** Save image to a stream in PNG format }\n    class procedure SaveToStreamAsPng(ASource: TCustomUniversalBitmap; AStream: TStream); virtual; abstract;\n\n    {==== Pixelwise drawing ====}\n\n    {** Draws an aliased line from (x1,y1) to (x2,y2) using Bresenham's algorithm.\n        ''DrawLastPixel'' specifies if (x2,y2) must be drawn. }\n    class procedure DrawLine(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); virtual; abstract;\n    {** Draws an antialiased line from (x1,y1) to (x2,y2) using an improved version of Bresenham's algorithm\n        ''DrawLastPixel'' specifies if (x2,y2) must be drawn }\n    class procedure DrawLineAntialias(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual; abstract;\n    {** Draws an antialiased line with two brushes as dashes of length ''ADashLen''.\n        ''ADashPos'' specifies the start dash position and allows to retrieve the dash position at the end\n        of the line, in order to draw a polyline with consistent dashes }\n    class procedure DrawLineAntialias(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; var DashPos: integer; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual; abstract;\n\n    class procedure DrawPolyLine(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535); virtual; abstract;\n    class procedure DrawPolyLineAntialias(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual; abstract;\n    class procedure DrawPolyLineAntialias(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual; abstract;\n\n    class procedure DrawPolygon(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535); virtual; abstract;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual; abstract;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; const APoints: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; AAlpha: Word = 65535); overload; virtual; abstract;\n\n    {** Draw the border of a rectangle }\n    class procedure Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual; abstract;\n    {** Draw a filled rectangle with a border }\n    class procedure Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual; abstract;\n\n    class procedure RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual; abstract;\n    class procedure RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush: TUniversalBrush; AAlpha: Word = 65535); overload; virtual; abstract;\n    class procedure FillRoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const AFillBrush: TUniversalBrush; AAlpha: Word = 65535); virtual; abstract;\n\n    class procedure FillShape(ADest: TCustomUniversalBitmap; AShape: TBGRACustomFillInfo; AFillMode: TFillMode; ABrush: TUniversalBrush; AAlpha: Word = 65535); virtual; abstract;\n    class procedure FillPoly(ADest: TCustomUniversalBitmap; const APoints: array of TPointF; AFillMode: TFillMode; ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); virtual; abstract;\n\n    {==== Using pen ====}\n    class function CreatePenStroker: TBGRACustomPenStroker; virtual; abstract;\n    class function CreateArrow: TBGRACustomArrow; virtual; abstract;\n\n    class procedure RectangleAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, x2, y2: single;\n                       const ABrush: TUniversalBrush; AWidth: single); virtual; abstract;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker;\n                       const APoints: array of TPointF; const ABrush: TUniversalBrush; AWidth: single); overload; virtual; abstract;\n\n    class procedure Ellipse(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, rx, ry: single;\n        const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word=65535); overload; virtual; abstract;\n    class procedure Ellipse(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; const AOrigin, AXAxis, AYAxis: TPointF;\n        const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word=65535); overload; virtual; abstract;\n    class procedure EllipseAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, rx, ry: single;\n        const ABrush: TUniversalBrush; AWidth: single); overload; virtual; abstract;\n    class procedure EllipseAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; const AOrigin, AXAxis, AYAxis: TPointF;\n        const ABrush: TUniversalBrush; AWidth: single); overload; virtual; abstract;\n\n    {==== Filling ====}\n    class procedure FillRectAntialias(ADest: TCustomUniversalBitmap;\n                    x, y, x2, y2: single; const ABrush: TUniversalBrush;\n                    APixelCenteredCoordinates: boolean = true); virtual; abstract;\n    class procedure FillRoundRectAntialias(ADest: TCustomUniversalBitmap;\n                    x,y,x2,y2, rx,ry: single; const ABrush: TUniversalBrush;\n                    AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); virtual; abstract;\n    class procedure FillShapeAntialias(ADest: TCustomUniversalBitmap;\n                    AShape: TBGRACustomFillInfo; AFillMode: TFillMode;\n                    ABrush: TUniversalBrush); virtual; abstract;\n    class procedure FillPolyAntialias(ADest: TCustomUniversalBitmap;\n                    const APoints: array of TPointF; AFillMode: TFillMode;\n                    ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean); virtual; abstract;\n    class procedure FillEllipseAntialias(ADest: TCustomUniversalBitmap;\n                    x, y, rx, ry: single; const ABrush: TUniversalBrush); overload; virtual; abstract;\n    class procedure FillEllipseAntialias(ADest: TCustomUniversalBitmap;\n                    const AOrigin, AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush); overload; virtual; abstract;\n\n    {$IFNDEF BGRABITMAP_CORE}\n    //filters\n    class procedure FilterBlurRadial(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              radiusX, radiusY: single; blurType: TRadialBlurType;\n                              ADest: TCustomUniversalBitmap); virtual; abstract;\n    class procedure FilterBlurMotion(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              distance: single; angle: single; oriented: boolean;\n                              ADest: TCustomUniversalBitmap); virtual; abstract;\n    class procedure FilterCustomBlur(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              mask: TCustomUniversalBitmap;\n                              ADest: TCustomUniversalBitmap); virtual; abstract;\n    {$ENDIF}\n\n  end;\n  TUniversalDrawerAny = class of TCustomUniversalDrawer;\n\nvar\n  UniDrawerClass: TUniversalDrawerAny;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{ TUniversalBrush }\n\nfunction TUniversalBrush.GetDoesNothing: boolean;\nbegin\n  result := (Flags and UniversalBrushFlag_DoNothing) <> 0;\nend;\n\nprocedure TUniversalBrush.SetColorspace(AValue: TColorspaceAny);\nbegin\n  FColorspace:=AValue;\n  InternalInitContext:= nil;\n  InternalPutNextPixels := nil;\n  Flags := 0;\nend;\n\nprocedure TUniversalBrush.SetDoesNothing(AValue: boolean);\nbegin\n  if AValue then Flags := Flags or UniversalBrushFlag_DoNothing\n  else Flags := Flags and not UniversalBrushFlag_DoNothing;\nend;\n\nprocedure TUniversalBrush.MoveTo(AContext: PUniBrushContext; ADest: pointer;\n  AOfsX, AOfsY: integer);\nbegin\n  with AContext^ do\n  begin\n    AContext^.Dest:= ADest;\n    AContext^.Ofs.X := AOfsX;\n    AContext^.Ofs.Y := AOfsY;\n  end;\n  if Assigned(InternalInitContext) then\n    InternalInitContext(@FixedData, AContext);\nend;\n\nprocedure TUniversalBrush.PutNextPixels(AContext: PUniBrushContext;\n  AAlpha: Word; ACount: integer);\nbegin\n  InternalPutNextPixels(@FixedData, AContext, AAlpha, ACount);\nend;\n\n{ TCustomUniversalBitmap }\n\nfunction TCustomUniversalBitmap.CheckEmpty: boolean;\nvar\n  alphaIdx, i: Integer;\n  p: PByte;\nbegin\n  alphaIdx := Colorspace.IndexOfAlphaChannel;\n  if (alphaIdx=-1) or (FDataByte=nil) then exit(false);\n  p := FDataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    if Colorspace.GetColorTransparency(p) <> ctFullyTransparent then exit(true);\n    inc(p, FPixelSize);\n  end;\n  exit(false);\nend;\n\nfunction TCustomUniversalBitmap.CheckIsZero: boolean;\nvar\n  i, dataSize: PtrInt;\n  p: PByte;\nbegin\n  p := DataByte;\n  if p = nil then exit(true);\n  dataSize := FNbPixels*IntPtr(FPixelSize);\n  for i := (dataSize shr 3) - 1 downto 0 do\n  begin\n    if PQWord(p)^ <> 0 then exit(false);\n    Inc(p,8);\n  end;\n  for i := (dataSize and 7) - 1 downto 0 do\n  begin\n    if PByte(p)^ <> 0 then exit(false);\n    inc(p);\n  end;\n  Result := True;\nend;\n\nfunction TCustomUniversalBitmap.GetClipRect: TRect;\nbegin\n  result := FClipRect;\nend;\n\nfunction TCustomUniversalBitmap.GetDataBytePtr: PByte;\nbegin\n  LoadFromBitmapIfNeeded;\n  result := FDataByte;\nend;\n\nfunction TCustomUniversalBitmap.GetHasSemiTransparentPixels: boolean;\nvar\n  alphaIdx, i: Integer;\n  p: PByte;\nbegin\n  alphaIdx := Colorspace.IndexOfAlphaChannel;\n  if (alphaIdx=-1) or (FDataByte=nil) then exit(false);\n  p := FDataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    if Colorspace.GetColorTransparency(p) = ctSemiTransparent then exit(true);\n    inc(p, FPixelSize);\n  end;\n  exit(false);\nend;\n\nfunction TCustomUniversalBitmap.GetHasTransparentPixels: boolean;\nvar\n  alphaIdx, i: Integer;\n  p: PByte;\nbegin\n  alphaIdx := Colorspace.IndexOfAlphaChannel;\n  if (alphaIdx=-1) or (FDataByte=nil) then exit(false);\n  p := FDataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    if Colorspace.GetColorTransparency(p) <> ctFullyOpaque then exit(true);\n    inc(p, FPixelSize);\n  end;\n  exit(false);\nend;\n\nfunction TCustomUniversalBitmap.GetHeight: integer;\nbegin\n  result := FHeight;\nend;\n\nfunction TCustomUniversalBitmap.GetLineOrder: TRawImageLineOrder;\nbegin\n  result := FLineOrder;\nend;\n\nfunction TCustomUniversalBitmap.GetNbPixels: integer;\nbegin\n  result := FNbPixels;\nend;\n\nfunction TCustomUniversalBitmap.GetRefCount: integer;\nbegin\n  result := FRefCount;\nend;\n\nfunction TCustomUniversalBitmap.GetPixelAddress(x,y: integer): PByte;\nbegin\n  Result := FDataByte;\n  if FLineOrder = riloBottomToTop then y := FHeight - 1 - y;\n  Inc(Result, FRowSize * y + IntPtr(FPixelSize)*x);\nend;\n\nfunction TCustomUniversalBitmap.GetScanLineByte(y: integer): PByte;\nbegin\n  if (y < 0) or (y >= FHeight) then\n    raise ERangeError.Create('Scanline: out of bounds')\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    if FLineOrder = riloBottomToTop then y := FHeight - 1 - y;\n    Result := FDataByte + FRowSize*y;\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetWidth: integer;\nbegin\n  result := FWidth;\nend;\n\nprocedure TCustomUniversalBitmap.SetClipRect(const AValue: TRect);\nbegin\n  FClipRect := TRect.Intersect(AValue, Rect(0,0,Width,Height));\nend;\n\nprocedure TCustomUniversalBitmap.RaiseInvalidBrushColorspace;\nbegin\n  raise exception.Create('Brush is not in '+Colorspace.GetName+' colorspace.');\nend;\n\nprocedure TCustomUniversalBitmap.RaiseMissingUniDrawer;\nbegin\n  raise exception.Create('Universal drawer not found. Add UniversalDrawer to the uses clause.');\nend;\n\nfunction TCustomUniversalBitmap.CheckHorizLineBounds(var x:int32or64; y: int32or64; var x2: int32or64): boolean;\nvar\n  temp: int32or64;\nbegin\n  if (y < FClipRect.Top) or (y >= FClipRect.Bottom) then exit(false);\n  if (x2 < x) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (x >= FClipRect.Right) or (x2 < FClipRect.Left) then exit(false);\n  if x < FClipRect.Left then x := FClipRect.Left;\n  if x2 >= FClipRect.Right then x2 := FClipRect.Right - 1;\n  result := true;\nend;\n\nfunction TCustomUniversalBitmap.CheckVertLineBounds(x: int32or64; var y,y2: int32or64): boolean; inline;\nvar\n  temp: int32or64;\nbegin\n  if (x < FClipRect.Left) or (x >= FClipRect.Right) then exit(false);\n  if (y2 < y) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n  if (y >= FClipRect.Bottom) or (y2 < FClipRect.Top) then exit(false);\n  if y < FClipRect.Top then y := FClipRect.Top;\n  if y2 >= FClipRect.Bottom then y2 := FClipRect.Bottom - 1;\n  result := true;\nend;\n\nclass function TCustomUniversalBitmap.DefaultColorspace: TColorspaceAny;\nbegin\n  result := TBGRAPixelColorspace;\nend;\n\nfunction TCustomUniversalBitmap.InternalDuplicate(ACopyProperties: boolean): TCustomUniversalBitmap;\nbegin\n  LoadFromBitmapIfNeeded;\n  result := InternalNew;\n  result.SetSize(FWidth,FHeight);\n  Move(FDataByte^, result.FDataByte^, FRowSize*FHeight);\n  result.InvalidateBitmap;\n  result.Caption := Caption;\n  if ACopyProperties then CopyPropertiesTo(result);\nend;\n\nfunction TCustomUniversalBitmap.InternalNew: TCustomUniversalBitmap;\nbegin\n  result := TCustomUniversalBitmap.Create(Colorspace, LineOrder);\nend;\n\nprocedure TCustomUniversalBitmap.ClearTransparentPixels;\nvar\n  alphaIdx, i: Integer;\n  p: PByte;\nbegin\n  alphaIdx := Colorspace.IndexOfAlphaChannel;\n  if (alphaIdx=-1) or (FDataByte=nil) then exit;\n  LoadFromBitmapIfNeeded;\n  p := FDataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    if Colorspace.GetColorTransparency(p) = ctFullyTransparent then\n      AssignTransparentPixel(p^);\n    inc(p, FPixelSize);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.InternalCopyPixels(ASource, ADest: PByte;\n  ASourceStride, ADestStride: PtrInt; ACount: integer);\nbegin\n  while ACount>0 do\n  begin\n    move(ASource^, ADest^, FPixelSize);\n    inc(ASource, ASourceStride);\n    inc(ADest, ADestStride);\n    dec(ACount);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.InternalSwapPixels(ABuf1, ABuf2: PByte;\n  AStride1, AStride2: PtrInt; ACount: integer);\nvar temp: array[0..31] of byte;\nbegin\n  while ACount>0 do\n  begin\n    move(ABuf1^, {%H-}temp, FPixelSize);\n    move(ABuf2^, ABuf1^, FPixelSize);\n    move(temp, ABuf2^, FPixelSize);\n    inc(ABuf1, AStride1);\n    inc(ABuf2, AStride2);\n    dec(ACount);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.InternalSetPixels(ASource, ADest: PByte;\n  ADestStride: PtrInt; ACount: integer);\nbegin\n  while ACount>0 do\n  begin\n    move(ASource^, ADest^, FPixelSize);\n    inc(ADest, ADestStride);\n    dec(ACount);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.AssignTransparentPixel(out ADest);\nbegin\n  FillByte({%H-}ADest, FPixelSize, 0);\nend;\n\nfunction TCustomUniversalBitmap.GetArrow: TBGRACustomArrow;\nvar\n  p: TBGRACustomPenStroker;\nbegin\n  p := GetInternalPen;\n  if p.Arrow = nil then\n  begin\n    if UniDrawerClass = nil then RaiseMissingUniDrawer;\n    p.Arrow := UniDrawerClass.CreateArrow;\n    p.Arrow.LineCap := LineCap;\n    p.ArrowOwned := true;\n  end;\n  result := p.Arrow;\nend;\n\nfunction TCustomUniversalBitmap.GetLinearAntialiasing: boolean;\nbegin\n  result := FAntialiasingDrawMode in[dmLinearBlend,dmXor];\nend;\n\nfunction TCustomUniversalBitmap.GetLineCap: TPenEndCap;\nbegin\n  result := GetInternalPen.LineCap;\nend;\n\nfunction TCustomUniversalBitmap.GetInternalPen: TBGRACustomPenStroker;\nbegin\n  if FPenStroker = nil then\n  begin\n    if UniDrawerClass = nil then RaiseMissingUniDrawer;\n    FPenStroker := UniDrawerClass.CreatePenStroker;\n  end;\n  result := FPenStroker;\nend;\n\nfunction TCustomUniversalBitmap.GetPenStroker: TBGRACustomPenStroker;\nbegin\n  result := GetInternalPen;\n  if result.Arrow = nil then GetArrow;\nend;\n\nfunction TCustomUniversalBitmap.GetResolutionPhysicalUnit: TCSSUnit;\nbegin\n  result := ResolutionDenominatorUnit[ResolutionUnit];\nend;\n\nprocedure TCustomUniversalBitmap.PathStrokeAliasedCallback(\n  const APoints: array of TPointF; AClosed: boolean; AData: Pointer);\nvar pts: array of TPoint;\n  i: Integer;\nbegin\n  with TPathCallbackData(AData^) do\n  begin\n    setlength(pts, length(APoints));\n    if PixelCenteredCoords then\n    begin\n      for i := 0 to high(pts) do\n        pts[i]:= APoints[i].Round;\n    end else\n    begin\n      for i := 0 to high(pts) do\n        pts[i]:= APoints[i].Floor;\n    end;\n    if AClosed then\n      UniDrawerClass.DrawPolygon(self, pts, BrushAddress^, Alpha)\n    else\n      UniDrawerClass.DrawPolyLine(self, pts, BrushAddress^, true, Alpha);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.PathStrokeAntialiasCallback(\n  const APoints: array of TPointF; AClosed: boolean; AData: Pointer);\nvar pts: array of TPointF;\nbegin\n  with TPathCallbackData(AData^) do\n  begin\n    if AClosed then\n      pts := GetInternalPen.ComputePolygon(APoints, Width)\n    else\n      pts := GetInternalPen.ComputePolyline(APoints, Width);\n    FillPolyAntialias(pts, BrushAddress^, PixelCenteredCoords);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.SetAntialiasingDrawMode(AValue: TDrawMode);\nbegin\n  if FAntialiasingDrawMode=AValue then Exit;\n  FAntialiasingDrawMode:=AValue;\nend;\n\nprocedure TCustomUniversalBitmap.SetLinearAntialiasing(AValue: boolean);\nbegin\n  if AValue then AntialiasingDrawMode:= dmLinearBlend\n  else AntialiasingDrawMode:= dmDrawWithTransparency;\nend;\n\nprocedure TCustomUniversalBitmap.SetLineCap(AValue: TPenEndCap);\nbegin\n  if AValue <> GetInternalPen.LineCap then\n  begin\n    GetInternalPen.LineCap := AValue;\n    if Assigned(GetInternalPen.Arrow) then\n      GetInternalPen.Arrow.LineCap := AValue;\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.FillPolyAntialias(\n  const APoints: array of TPointF; const ABrush: TUniversalBrush;\n  APixelCenteredCoordinates: boolean);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillPolyAntialias(self, APoints, FillMode,\n                  ABrush, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPolyAntialias(\n  const APoints: array of TPointF; ATexture: IBGRAScanner;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillPolyAntialias(APoints, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyAntialias(\n  const APoints: array of TPointF; AAlpha: Byte;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillPolyAntialias(APoints, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseAntialias(x, y, rx, ry: single;\n  const ABrush: TUniversalBrush);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillEllipseAntialias(self, x,y,rx,ry, ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseAntialias(x, y, rx, ry: single;\n  ATexture: IBGRAScanner);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillEllipseAntialias(x, y, rx, ry, b);\nend;\n\nprocedure TCustomUniversalBitmap.EraseEllipseAntialias(x, y, rx, ry: single;\n  AAlpha: Byte);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillEllipseAntialias(x, y, rx, ry, b);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; const ABrush: TUniversalBrush);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillEllipseAntialias(self, AOrigin, AXAxis, AYAxis, ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; ATexture: IBGRAScanner);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillEllipseAntialias(AOrigin, AXAxis, AYAxis, b);\nend;\n\nprocedure TCustomUniversalBitmap.EraseEllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; AAlpha: Byte);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillEllipseAntialias(AOrigin, AXAxis, AYAxis, b);\nend;\n\nprocedure TCustomUniversalBitmap.FillRectAntialias(x, y, x2, y2: single;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillRectAntialias(self, x,y,x2,y2, ABrush,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillRectAntialias(x, y, x2, y2: single;\n  ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AntialiasingDrawMode);\n  FillRectAntialias(x,y,x2,y2, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRectAntialias(x, y, x2, y2: single;\n  AAlpha: Byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillRectAntialias(x,y,x2,y2, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillRectAntialias(const ARectF: TRectF;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean);\nbegin\n  FillRectAntialias(ARectF.Left, ARectF.Top, ARectF.Right, ARectF.Bottom,\n     ABrush, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillRectAntialias(const ARectF: TRectF;\n  ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean);\nbegin\n  FillRectAntialias(ARectF.Left, ARectF.Top, ARectF.Right, ARectF.Bottom,\n     ATexture, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRectAntialias(const ARectF: TRectF;\n  AAlpha: Byte; APixelCenteredCoordinates: boolean);\nbegin\n  EraseRectAntialias(ARectF.Left, ARectF.Top, ARectF.Right, ARectF.Bottom,\n     AAlpha, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillRoundRectAntialias(x, y, x2, y2, rx,\n  ry: single; const ABrush: TUniversalBrush; AOptions: TRoundRectangleOptions;\n  APixelCenteredCoordinates: boolean);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillRoundRectAntialias(self, x,y,x2,y2, rx,ry, ABrush, AOptions, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillRoundRectAntialias(x, y, x2, y2, rx,\n  ry: single; ATexture: IBGRAScanner; AOptions: TRoundRectangleOptions;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AntialiasingDrawMode, 0, 0);\n  FillRoundRectAntialias(x,y,x2,y2, rx,ry, b, AOptions, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRoundRectAntialias(x, y, x2, y2, rx,\n  ry: single; AAlpha: Byte; AOptions: TRoundRectangleOptions;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillRoundRectAntialias(x,y,x2,y2, rx,ry, b, AOptions, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPath(APath: IBGRAPath;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean);\nbegin\n  FillPolyAntialias(APath.getPoints,ABrush,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPath(APath: IBGRAPath;\n  ATexture: IBGRAScanner; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillPath(APath, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush;\n  APixelCenteredCoordinates: boolean);\nbegin\n  FillPolyAntialias(APath.getPoints(AMatrix), ABrush,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; ATexture: IBGRAScanner;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillPath(APath,AMatrix, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePath(APath: IBGRAPath; AAlpha: Byte;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillPath(APath, b, APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; AAlpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillPath(APath,AMatrix, b, APixelCenteredCoordinates);\nend;\n\nfunction TCustomUniversalBitmap.ScanAtInteger(X, Y: integer): TBGRAPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n    FConvertToBGRA.Convert(GetPixelAddress(PositiveMod(X+ScanOffset.X, FScanWidth),\n                             PositiveMod(Y+ScanOffset.Y, FScanHeight)),\n                           @result, 1, FPixelSize, sizeof(TBGRAPixel), nil)\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction TCustomUniversalBitmap.ScanAtIntegerExpanded(X, Y: integer): TExpandedPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n    FConvertToExpanded.Convert(GetPixelAddress(PositiveMod(X+ScanOffset.X, FScanWidth),\n                                 PositiveMod(Y+ScanOffset.Y, FScanHeight)),\n                               @result, 1, FPixelSize, sizeof(TExpandedPixel), nil)\n  else\n    result := ExpandedPixelTransparent;\nend;\n\nprocedure TCustomUniversalBitmap.ScanMoveTo(X, Y: Integer);\nbegin\n  if (FScanWidth = 0) or (FScanHeight = 0) then exit;\n  LoadFromBitmapIfNeeded;\n  FScanCurX := PositiveMod(X+ScanOffset.X, FScanWidth);\n  FScanCurY := PositiveMod(Y+ScanOffset.Y, FScanHeight);\n  FScanPtr := GetPixelAddress(FScanCurX,FScanCurY);\nend;\n\nfunction TCustomUniversalBitmap.ScanNextPixel: TBGRAPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n  begin\n    FConvertToBGRA.Convert(FScanPtr, @result, 1, FPixelSize, sizeof(TBGRAPixel), nil);\n    inc(FScanCurX);\n    inc(FScanPtr, FPixelSize);\n    if FScanCurX = FScanWidth then //cycle\n    begin\n      FScanCurX := 0;\n      dec(FScanPtr, FRowSize);\n    end;\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction TCustomUniversalBitmap.ScanNextExpandedPixel: TExpandedPixel;\nbegin\n  if (FScanWidth <> 0) and (FScanHeight <> 0) then\n  begin\n    FConvertToExpanded.Convert(FScanPtr, @result, 1, FPixelSize, sizeof(TExpandedPixel), nil);\n    inc(FScanCurX);\n    inc(FScanPtr, FPixelSize);\n    if FScanCurX = FScanWidth then //cycle\n    begin\n      FScanCurX := 0;\n      dec(FScanPtr, FRowSize);\n    end;\n  end\n  else\n    result := BGRAPixelTransparent;\nend;\n\nfunction TCustomUniversalBitmap.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  result := ScanAtInteger(round(X),round(Y));\nend;\n\nfunction TCustomUniversalBitmap.ScanAtExpanded(X, Y: Single): TExpandedPixel;\nbegin\n  result := ScanAtIntegerExpanded(round(X),round(Y));\nend;\n\nfunction TCustomUniversalBitmap.IsScanPutPixelsDefined: boolean;\nbegin\n  result := False;\nend;\n\nprocedure TCustomUniversalBitmap.ScanPutPixels(pdest: PBGRAPixel;\n  count: integer; mode: TDrawMode);\nbegin\n  //do nothing\nend;\n\nprocedure TCustomUniversalBitmap.ScanSkipPixels(ACount: integer);\nvar\n  fit: Integer;\nbegin\n  if (FScanWidth <= 0) or (FScanHeight <= 0) then exit;\n  if ACount >= FScanWidth then ACount := PositiveMod(ACount, FScanWidth);\n  fit := FScanWidth-FScanCurX;\n  if ACount >= fit then\n  begin\n    dec(ACount, fit);\n    dec(FScanPtr, FScanCurX*PtrInt(FPixelSize));\n    FScanCurX := 0;\n  end;\n  inc(FScanCurX, ACount);\n  inc(FScanPtr, ACount*PtrInt(FPixelSize));\nend;\n\nfunction TCustomUniversalBitmap.GetImageBounds: TRect;\nbegin\n  result := GetImageBounds(cAlpha);\nend;\n\nfunction TCustomUniversalBitmap.GetImageBounds(Channel: TChannel;\n  ANothingValue: Byte): TRect;\nbegin\n  result := GetImageBoundsWithin(rect(0,0,Width,Height), Channel, ANothingValue);\nend;\n\nfunction TCustomUniversalBitmap.GetImageBounds(Channels: TChannels;\n  ANothingValue: Byte): TRect;\nbegin\n  result := GetImageBoundsWithin(rect(0,0,Width,Height), Channels, ANothingValue);\nend;\n\nfunction TCustomUniversalBitmap.ProvidesScanline(ARect: TRect): boolean;\nbegin\n  result := false;\nend;\n\nfunction TCustomUniversalBitmap.GetScanlineAt(X, Y: integer): PBGRAPixel;\nbegin\n  result := nil;\nend;\n\nfunction TCustomUniversalBitmap.GetTextureGL: IUnknown;\nbegin\n  result := nil;\nend;\n\nfunction TCustomUniversalBitmap.GetImageBoundsWithin(const ARect: TRect;\n  Channel: TChannel; ANothingValue: Byte): TRect;\nvar\n  idxChannel: Integer;\n  actualRect: TRect;\n  maxx, maxy, minx, miny, yb, xb, xb2: LongInt;\n  p: PByte;\n  minValueF, nothingValueF: Single;\nbegin\n  case Channel of\n  cAlpha: idxChannel := Colorspace.IndexOfAlphaChannel;\n  cRed: idxChannel := Colorspace.IndexOfChannel('Red');\n  cGreen: idxChannel := Colorspace.IndexOfChannel('Green');\n  cBlue: idxChannel := Colorspace.IndexOfChannel('Blue');\n  else raise exception.Create('Unexpected channel');\n  end;\n  if (idxChannel = -1) and (Channel in [cRed,cGreen,cBlue]) then\n    idxChannel := Colorspace.IndexOfChannel('Gray');\n  if idxChannel = -1 then raise exception.Create('Channel not found');\n  minValueF := Colorspace.GetMinValue(idxChannel);\n  nothingValueF := (ANothingValue - minValueF)/(Colorspace.GetMaxValue(idxChannel)-minValueF);\n  actualRect := TRect.Intersect(ARect, rect(0,0,Width,Height));\n  maxx := actualRect.Left-1;\n  maxy := actualRect.Top-1;\n  minx := actualRect.Right;\n  miny := actualRect.Bottom;\n  for yb := actualRect.Top to actualRect.Bottom-1 do\n  begin\n    p := GetPixelAddress(actualRect.Left,yb);\n    for xb := actualRect.Left to actualRect.Right - 1 do\n    begin\n      if Colorspace.GetChannel(p, idxChannel) <> nothingValueF then\n      begin\n        if xb < minx then\n          minx := xb;\n        if yb < miny then\n          miny := yb;\n        if xb > maxx then\n          maxx := xb;\n        if yb > maxy then\n          maxy := yb;\n\n        inc(p, (actualRect.Right-1-xb)*FPixelSize);\n        for xb2 := actualRect.Right-1 downto xb+1 do\n        begin\n          if Colorspace.GetChannel(p, idxChannel) <> nothingValueF then\n          begin\n            if xb2 > maxx then\n              maxx := xb2;\n            break;\n          end;\n          dec(p, FPixelSize);\n        end;\n        break;\n      end;\n      Inc(p, FPixelSize);\n    end;\n  end;\n  if minx > maxx then\n  begin\n    Result.left   := 0;\n    Result.top    := 0;\n    Result.right  := 0;\n    Result.bottom := 0;\n  end\n  else\n  begin\n    Result.left   := minx;\n    Result.top    := miny;\n    Result.right  := maxx + 1;\n    Result.bottom := maxy + 1;\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetImageBoundsWithin(const ARect: TRect;\n  Channels: TChannels; ANothingValue: Byte): TRect;\nvar\n  c: TChannel;\n  resultForChannel: TRect;\nbegin\n  result := EmptyRect;\n  for c := low(TChannel) to high(TChannel) do\n  begin\n    if c in Channels then\n    begin\n      resultForChannel := GetImageBoundsWithin(ARect, c, ANothingValue);\n      if result.IsEmpty then result := resultForChannel\n      else result.Union(resultForChannel);\n    end;\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetScanCustomColorspace: TColorspaceAny;\nbegin\n  result := Colorspace;\nend;\n\nprocedure TCustomUniversalBitmap.ScanNextCustomChunk(var ACount: integer; out\n  APixels: Pointer);\nvar\n  quantity: Integer;\nbegin\n  if (FScanWidth = 0) or (FScanHeight = 0) then raise exception.Create('Zero size scanner');\n  APixels := FScanPtr;\n  quantity := FScanWidth-FScanCurX;\n  if ACount <= quantity then\n    quantity := ACount\n    else ACount := quantity;\n  Inc(FScanPtr, quantity*PtrInt(FPixelSize));\n  inc(FScanCurX, quantity);\n  if FScanCurX = FWidth then\n  begin\n    FScanCurX := 0;\n    Dec(FScanPtr, RowSize);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.ScanNextMaskChunk(var ACount: integer; out AMask: PByteMask; out AStride: integer);\nbegin\n  raise exception.Create('This bitmap does not provide a mask.');\nend;\n\nfunction TCustomUniversalBitmap.ScanAtIntegerMask(X,Y: integer): TByteMask;\nbegin\n  result := ScanAtMask(X,Y);\nend;\n\nfunction TCustomUniversalBitmap.ScanAtMask(X,Y: Single): TByteMask;\nbegin\n  result.gray := 0;\n  raise exception.Create('This bitmap does not provide a mask.');\nend;\n\n{ Interface gateway }\nfunction TCustomUniversalBitmap.QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  if GetInterface(iid, obj) then\n    Result := S_OK\n  else\n    Result := longint(E_NOINTERFACE);\nend;\n\n{ There is no automatic reference counting, but it is compulsory to define these functions }\nfunction TCustomUniversalBitmap._AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nfunction TCustomUniversalBitmap._Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};\nbegin\n  result := 0;\nend;\n\nprocedure TCustomUniversalBitmap.PutImage(X, Y: integer;\n  ASource: TCustomUniversalBitmap; AMode: TDrawMode; AOpacity: byte);\nvar\n  oldOfs: TPoint;\nbegin\n  if (ASource = nil) or (AOpacity = 0) then exit;\n  oldOfs := ASource.ScanOffset;\n  ASource.ScanOffset := Point(-X,-Y);\n  FillRect(RectWithSize(X,Y,ASource.Width,ASource.Height), ASource, AMode, AOpacity + (AOpacity shl 8));\n  ASource.ScanOffset := oldOfs;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurRadial(radius: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  Result := FilterBlurRadial(rect(0,0,Width,Height), radius,radius, blurType, ACopyProperties);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurRadial(const ABounds: TRect;\n  radius: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  Result := FilterBlurRadial(ABounds, radius,radius, blurType, ACopyProperties);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurRadial(radiusX, radiusY: single;\n  blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  Result := FilterBlurRadial(rect(0,0,Width,Height), radiusX,radiusY, blurType, ACopyProperties);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurRadial(const ABounds: TRect; radiusX,\n  radiusY: single; blurType: TRadialBlurType; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  result := NewBitmap;\n  if ACopyProperties then CopyPropertiesTo(result);\n  result.SetSize(Width,Height); fillbyte(result.DataByte^, result.Height*result.RowSize, 0);\n  UniDrawerClass.FilterBlurRadial(self, ABounds, radiusX,radiusY, blurType, result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurMotion(distance: single;\n  angle: single; oriented: boolean; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  result := FilterBlurMotion(rect(0,0,Width,Height), distance, angle, oriented, ACopyProperties);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterBlurMotion(const ABounds: TRect;\n  distance: single; angle: single; oriented: boolean; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  result := NewBitmap;\n  if ACopyProperties then CopyPropertiesTo(result);\n  result.SetSize(Width,Height); fillbyte(result.DataByte^, result.Height*result.RowSize, 0);\n  UniDrawerClass.FilterBlurMotion(self, ABounds, distance, angle, oriented, result);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterCustomBlur(mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  result := FilterCustomBlur(rect(0,0,Width,Height), mask, ACopyProperties);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}function TCustomUniversalBitmap.FilterCustomBlur(const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  result := NewBitmap;\n  if ACopyProperties then CopyPropertiesTo(result);\n  result.SetSize(Width,Height); fillbyte(result.DataByte^, result.Height*result.RowSize, 0);\n  UniDrawerClass.FilterCustomBlur(self, ABounds, mask, result);\nend;{$ENDIF}\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  const ABrush: TUniversalBrush; APenWidth: single);\nbegin\n  FillPolyAntialias(GetInternalPen.ComputePolyline([PointF(x1,y1),PointF(x2,y2)],APenWidth), ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  ATexture: IBGRAScanner; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawLineAntialias(x1,y1,x2,y2, b,APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  const ABrush: TUniversalBrush; APenWidth: single; AClosedCap: boolean);\nbegin\n  FillPolyAntialias(GetInternalPen.ComputePolyline([PointF(x1,y1),PointF(x2,y2)],APenWidth,AClosedCap), ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  ATexture: IBGRAScanner; APenWidth: single; AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawLineAntialias(x1,y1,x2,y2, b,APenWidth, AClosedCap);\nend;\n\nprocedure TCustomUniversalBitmap.EraseLineAntialias(x1, y1, x2, y2: single;\n  AAlpha: Byte; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  DrawLineAntialias(x1,y1,x2,y2, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.EraseLineAntialias(x1, y1, x2, y2: single;\n  AAlpha: Byte; APenWidth: single; AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\n  p: TBGRACustomPenStroker;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  c := BGRA(0,0,0, AAlpha);\n  p := GetInternalPen;\n  FillPolyAntialias(p.ComputePolyline([PointF(x1,y1),PointF(x2,y2)],APenWidth,c,AClosedCap), b);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; const ABrush: TUniversalBrush;\n  APenWidth: single);\nbegin\n  FillPolyAntialias(GetInternalPen.ComputePolyline(APoints,APenWidth),ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPolyLineAntialias(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyLineAntialias(\n  const APoints: array of TPointF; AAlpha: byte; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  DrawPolyLineAntialias(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; const ABrush: TUniversalBrush;\n  APenWidth: single; AClosedCap: boolean);\nbegin\n  FillPolyAntialias(GetInternalPen.ComputePolyline(APoints,APenWidth,AClosedCap),ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single;\n  AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPolyLineAntialias(APoints, b, APenWidth, AClosedCap);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyLineAntialias(\n  const APoints: array of TPointF; AAlpha: byte; APenWidth: single;\n  AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  c := BGRA(0,0,0, AAlpha);\n  FillPolyAntialias(GetInternalPen.ComputePolyline(APoints,APenWidth,c,AClosedCap), b);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialiasAutocycle(\n  const APoints: array of TPointF; const ABrush: TUniversalBrush;\n  APenWidth: single);\nbegin\n   FillPolyAntialias(GetInternalPen.ComputePolylineAutoCycle(APoints,APenWidth),ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialiasAutocycle(\n  const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPolyLineAntialiasAutocycle(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyLineAntialiasAutocycle(\n  const APoints: array of TPointF; AAlpha: byte; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  DrawPolyLineAntialiasAutocycle(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolygonAntialias(\n  const APoints: array of TPointF; const ABrush: TUniversalBrush;\n  APenWidth: single);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolygonAntialias(self, GetInternalPen, APoints, ABrush, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolygonAntialias(\n  const APoints: array of TPointF; ATexture: IBGRAScanner; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPolygonAntialias(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolygonOutlineAntialias(\n  const APoints: array of TPointF; AAlpha: byte; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  DrawPolygonAntialias(APoints, b, APenWidth);\nend;\n\nprocedure TCustomUniversalBitmap.RectangleAntialias(x, y, x2, y2: single;\n  const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.RectangleAntialias(self, GetInternalPen, x, y, x2, y2, ABrush, AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.RectangleAntialias(x, y, x2, y2: single;\n  ATexture: IBGRAScanner; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AntialiasingDrawMode);\n  RectangleAntialias(x,y,x2,y2, b, AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.Ellipse(x, y, rx, ry: single;\n  const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.Ellipse(self, GetInternalPen, x,y,rx,ry, ABrush, AWidth, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Ellipse(x, y, rx, ry: single;\n  ATexture: IBGRAScanner; AWidth: single; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode);\n  Ellipse(x,y,rx,ry, b, AWidth, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Ellipse(const AOrigin, AXAxis, AYAxis: TPointF;\n  const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.Ellipse(self, GetInternalPen, AOrigin, AXAxis, AYAxis, ABrush, AWidth, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Ellipse(const AOrigin, AXAxis, AYAxis: TPointF;\n  ATexture: IBGRAScanner; AWidth: single; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode);\n  Ellipse(AOrigin, AXAxis, AYAxis, b,AWidth,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseAntialias(x, y, rx, ry: single;\n  const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.EllipseAntialias(self, GetInternalPen, x,y,rx,ry, ABrush, AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseAntialias(x, y, rx, ry: single;\n  ATexture: IBGRAScanner; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  EllipseAntialias(x,y,rx,ry, b, AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.EllipseAntialias(self, GetInternalPen, AOrigin, AXAxis, AYAxis, ABrush, AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; ATexture: IBGRAScanner; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  EllipseAntialias(AOrigin, AXAxis, AYAxis, b,AWidth);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPath(APath: IBGRAPath;\n  const ABrush: TUniversalBrush; AWidth: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  data: TPathCallbackData;\nbegin\n  if ABrush.DoesNothing then exit;\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  data.BrushAddress := @ABrush;\n  data.Alpha:= 65535;\n  data.Width:= AWidth;\n  data.PixelCenteredCoords := APixelCenteredCoordinates;\n  APath.stroke(@PathStrokeAntialiasCallback, @data);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPath(APath: IBGRAPath;\n  ATexture: IBGRAScanner; AWidth: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPath(APath, b,AWidth,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush; AWidth: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  data: TPathCallbackData;\nbegin\n  if ABrush.DoesNothing then exit;\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  data.BrushAddress := @ABrush;\n  data.Alpha:= 65535;\n  data.Width:= AWidth;\n  data.PixelCenteredCoords := APixelCenteredCoordinates;\n  APath.stroke(@PathStrokeAntialiasCallback, AMatrix, @data);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AWidth: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  DrawPath(APath,AMatrix, b,AWidth,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillShapeAntialias(\n  AShape: TBGRACustomFillInfo; const ABrush: TUniversalBrush);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillShapeAntialias(self, AShape, FillMode,\n                  ABrush);\nend;\n\nprocedure TCustomUniversalBitmap.FillShapeAntialias(\n  AShape: TBGRACustomFillInfo; ATexture: IBGRAScanner);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AntialiasingDrawMode);\n  FillShapeAntialias(AShape, b);\nend;\n\nprocedure TCustomUniversalBitmap.EraseShapeAntialias(\n  AShape: TBGRACustomFillInfo; AAlpha: Byte);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, AAlpha + (AAlpha shl 8));\n  FillShapeAntialias(AShape, b);\nend;\n\nprocedure TCustomUniversalBitmap.SetLineOrder(AValue: TRawImageLineOrder);\nbegin\n  FLineOrder:= AValue;\nend;\n\n{$IF FPC_FULLVERSION<30203}\nprocedure TCustomUniversalBitmap.SetResolutionUnit(AResolutionUnit: TResolutionUnit);\nbegin\n  if (AResolutionUnit<>FResolutionUnit) then\n  begin\n    if (AResolutionUnit <> ruNone) and (FResolutionUnit <> ruNone) then\n    begin\n      FResolutionX := ConvertResolution(FResolutionX, FResolutionUnit, AResolutionUnit);\n      FResolutionY := ConvertResolution(FResolutionY, FResolutionUnit, AResolutionUnit);\n    end;\n    FResolutionUnit :=AResolutionUnit;\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetResolutionWidth: Single;\nbegin\n  if (FResolutionUnit=ruNone)\n  then Result :=FWidth\n  else begin\n         Result :=0;\n         if (FResolutionX<>0)\n         then Result :=FWidth/FResolutionX;\n       end;\nend;\n\nfunction TCustomUniversalBitmap.GetResolutionHeight: Single;\nbegin\n  if (FResolutionUnit=ruNone)\n  then Result :=FHeight\n  else begin\n         Result :=0;\n         if (FResolutionY<>0)\n         then Result :=FHeight/FResolutionY;\n       end;\nend;\n{$ENDIF}\n\nprocedure TCustomUniversalBitmap.SetResolutionInfo(AResolutionInfo: TImageResolutionInfo);\nbegin\n  ResolutionUnit:= AResolutionInfo.ResolutionUnit;\n  ResolutionX := AResolutionInfo.ResolutionX;\n  ResolutionY := AResolutionInfo.ResolutionY;\nend;\n\nfunction TCustomUniversalBitmap.GetResolutionInfo: TImageResolutionInfo;\nbegin\n  result.ResolutionUnit:= ResolutionUnit;\n  result.ResolutionX:= ResolutionX;\n  result.ResolutionY:= ResolutionY;\nend;\n\nprocedure TCustomUniversalBitmap.Init;\nbegin\n  FRefCount := 1;\n  if FColorspace = nil then FColorspace := DefaultColorspace;\n  FPixelSize := FColorspace.GetSize;\n  FConvertToFPColor:= FColorspace.GetBridgedConversion(TFPColorColorspace);\n  FConvertFromFPColor:= TFPColorColorspace.GetBridgedConversion(FColorspace);\n  FConvertToBGRA := FColorspace.GetBridgedConversion(TBGRAPixelColorspace);\n  FConvertFromBGRA := TBGRAPixelColorspace.GetBridgedConversion(FColorspace);\n  FConvertToExpanded := FColorspace.GetBridgedConversion(TExpandedPixelColorspace);\n  FConvertFromExpanded := TExpandedPixelColorspace.GetBridgedConversion(FColorspace);\n  FReferenceWhite := nil;\n  FWidth := 0;\n  FHeight := 0;\n\n  FScanWidth := 0;\n  FScanHeight:= 0;\n  ScanOffset := Point(0,0);\n  FScanPtr := nil;\n  FScanCurX:= 0;\n  FScanCurY:= 0;\n\n  FNbPixels := 0;\n  FRowSize := 0;\n  FDataByte := nil;\n  FLineOrder := riloTopToBottom;\n  FClipRect := EmptyRect;\n  FillMode := fmWinding;\n  FAntialiasingDrawMode:= dmDrawWithTransparency;\n  FPenStroker := nil;\nend;\n\nprocedure TCustomUniversalBitmap.InvalidateBitmap;\nbegin\n  //not linked to a bitmap\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromBitmapIfNeeded;\nbegin\n  //not linked to a bitmap\nend;\n\nclass procedure TCustomUniversalBitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  raise exception.Create('Erase brush not implemented');\nend;\n\nclass procedure TCustomUniversalBitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  raise exception.Create('Alpha brush not implemented');\nend;\n\nprocedure TCustomUniversalBitmap.SolidBrushBGRA(out ABrush: TUniversalBrush;\n  ARed, AGreen, ABlue, AAlpha: Byte; ADrawMode: TDrawMode);\nvar c: TBGRAPixel;\n  c2: array[0..31] of byte;\nbegin\n  c.red := ARed; c.green := AGreen; c.blue := ABlue; c.alpha := AAlpha;\n  FConvertFromBGRA.Convert(@c,@c2,1,sizeof(c),FPixelSize,FReferenceWhite);\n  SolidBrushIndirect(ABrush, @c2, ADrawMode);\nend;\n\nprocedure TCustomUniversalBitmap.SolidBrushBGRA(out ABrush: TUniversalBrush;\n  AColor: TBGRAPixel; ADrawMode: TDrawMode);\nvar\n  c2: array[0..31] of byte;\nbegin\n  FConvertFromBGRA.Convert(@AColor,@c2,1,sizeof(AColor),FPixelSize,FReferenceWhite);\n  SolidBrushIndirect(ABrush, @c2, ADrawMode);\nend;\n\nprocedure TCustomUniversalBitmap.SolidBrushExpanded(out\n  ABrush: TUniversalBrush; ARed, AGreen, ABlue, AAlpha: Word;\n  ADrawMode: TDrawMode);\nvar c: TExpandedPixel;\n  c2: array[0..31] of byte;\nbegin\n  c.red := ARed; c.green := AGreen; c.blue := ABlue; c.alpha := AAlpha;\n  FConvertFromExpanded.Convert(@c,@c2,1,sizeof(c),FPixelSize,FReferenceWhite);\n  SolidBrushIndirect(ABrush, @c2, ADrawMode);\nend;\n\nprocedure TCustomUniversalBitmap.SolidBrushExpanded(out\n  ABrush: TUniversalBrush; AColor: TExpandedPixel; ADrawMode: TDrawMode);\nvar\n  c2: array[0..31] of byte;\nbegin\n  FConvertFromExpanded.Convert(@AColor,@c2,1,sizeof(AColor),FPixelSize,FReferenceWhite);\n  SolidBrushIndirect(ABrush, @c2, ADrawMode);\nend;\n\nprocedure DefaultSolidBrushIndirectSkipPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nbegin\n  inc(AContextData^.Dest, ACount*PtrInt(PDefaultSolidBrushIndirectFixedData(AFixedData)^.PixelSize));\nend;\n\nprocedure DefaultSolidBrushIndirectSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PByte;\nbegin\n  if AAlpha < 32768 then\n  begin\n    inc(AContextData^.Dest, ACount*PtrInt(PDefaultSolidBrushIndirectFixedData(AFixedData)^.PixelSize));\n    exit;\n  end;\n  pDest := AContextData^.Dest;\n  while ACount > 0 do\n  begin\n    with PDefaultSolidBrushIndirectFixedData(AFixedData)^ do\n    begin\n      move(Color, pDest^, PixelSize);\n      inc(pDest, PixelSize);\n    end;\n    dec(ACount);\n  end;\n  AContextData^.Dest := pDest;\nend;\n\nprocedure TCustomUniversalBitmap.SolidBrushIndirect(out ABrush: TUniversalBrush;\n  AColor: Pointer; ADrawMode: TDrawMode);\nvar\n  ct: TColorTransparency;\nbegin\n  if FPixelSize+4 > sizeof(ABrush.FixedData) then\n    raise exception.Create('Brush fixed data size too small');\n\n  ct := Colorspace.GetColorTransparency(AColor);\n  if (ADrawMode in[dmLinearBlend,dmDrawWithTransparency]) and\n   (ct = ctSemiTransparent) then\n     raise exception.Create('Semi-transparent drawing not handled by default brush')\n  else if ADrawMode = dmXor then\n     raise exception.Create('Xor mode not handled by default brush');\n\n  ABrush.Colorspace := Colorspace;\n  PDefaultSolidBrushIndirectFixedData(@ABrush.FixedData)^.PixelSize:= FPixelSize;\n\n  if (ADrawMode <> dmSet) and (ct <> ctFullyOpaque) then\n  begin\n    ABrush.InternalPutNextPixels:= @DefaultSolidBrushIndirectSkipPixels;\n    ABrush.DoesNothing:= true;\n  end\n  else\n  begin\n    move(AColor^, PDefaultSolidBrushIndirectFixedData(@ABrush.FixedData)^.Color, FPixelSize);\n    ABrush.InternalPutNextPixels:= @DefaultSolidBrushIndirectSetPixels\n  end;\nend;\n\nclass procedure TCustomUniversalBitmap.ScannerBrush(out\n  ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer = 0; AOffsetY: integer = 0);\nbegin\n  raise exception.Create('Scanner brush not implemented');\nend;\n\nclass procedure TCustomUniversalBitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  raise exception.Create('Mask brush not implemented');\nend;\n\nprocedure TCustomUniversalBitmap.ReallocData;\nbegin\n  ReAllocMem(FDataByte, FHeight * FRowSize);\n  if (FNbPixels > 0) and (FDataByte = nil) then\n    SysUtils.OutOfMemoryError;\n  InvalidateBitmap;\n  FScanPtr:= nil;\nend;\n\nprocedure TCustomUniversalBitmap.FreeData;\nbegin\n  Freemem(FDataByte);\n  FDataByte := nil;\n  FScanPtr:= nil;\nend;\n\nfunction TCustomUniversalBitmap.CheckClippedRectBounds(var x, y, x2, y2: integer): boolean;\nvar\n  temp: integer;\nbegin\n  if (x > x2) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (y > y2) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n  if (x >= FClipRect.Right) or (x2 <= FClipRect.Left) or (y >= FClipRect.Bottom) or (y2 <= FClipRect.Top) then\n  begin\n    result := false;\n    exit;\n  end;\n  if x < FClipRect.Left then\n    x := FClipRect.Left;\n  if x2 > FClipRect.Right then\n    x2 := FClipRect.Right;\n  if y < FClipRect.Top then\n    y := FClipRect.Top;\n  if y2 > FClipRect.Bottom then\n    y2 := FClipRect.Bottom;\n  if (x2 - x <= 0) or (y2 - y <= 0) then\n  begin\n    result := false;\n    exit;\n  end else\n    result := true;\nend;\n\nfunction TCustomUniversalBitmap.PtInClipRect(x, y: int32or64): boolean;\nbegin\n  result := (x >= FClipRect.Left) and (y >= FClipRect.Top) and (x < FClipRect.Right) and (y < FClipRect.Bottom);\nend;\n\nprocedure TCustomUniversalBitmap.SetInternalColor(x, y: integer; const Value: TFPColor);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  FConvertFromFPColor.Convert(@Value, GetPixelAddress(x,y),\n                      1, sizeof(TFPColor), FPixelSize, FReferenceWhite);\n  InvalidateBitmap;\nend;\n\nfunction TCustomUniversalBitmap.GetInternalColor(x, y: integer): TFPColor;\nbegin\n  if not PtInClipRect(x,y) then exit(colTransparent);\n  LoadFromBitmapIfNeeded;\n  FConvertToFPColor.Convert(GetPixelAddress(x,y), @result,\n                      1, FPixelSize, sizeof(TFPColor), FReferenceWhite);\nend;\n\nprocedure TCustomUniversalBitmap.SetInternalPixel(x, y: integer; Value: integer);\nbegin\n  SetInternalColor(x,y, Palette.Color[Value]);\nend;\n\nfunction TCustomUniversalBitmap.GetInternalPixel(x, y: integer): integer;\nbegin\n  result := Palette.IndexOf(GetInternalColor(x,y));\nend;\n\nconstructor TCustomUniversalBitmap.Create;\nbegin\n  Init;\n  inherited Create(0, 0);\nend;\n\nconstructor TCustomUniversalBitmap.Create(AColorspace: TColorspaceAny;\n  ALineOrder: TRawImageLineOrder);\nbegin\n  FColorspace := AColorspace;\n  Init;\n  FLineOrder:= ALineOrder;\n  inherited Create(0,0);\nend;\n\nconstructor TCustomUniversalBitmap.Create(AWidth, AHeight: integer);\nbegin\n  Init;\n  inherited Create(AWidth, AHeight);\n  if FDataByte<>nil then FillByte(FDataByte^, FHeight*FRowSize, 0);\nend;\n\nconstructor TCustomUniversalBitmap.Create(AColorspace: TColorspaceAny; AWidth,\n  AHeight: integer; ALineOrder: TRawImageLineOrder);\nbegin\n  FColorspace := AColorspace;\n  Init;\n  FLineOrder:= ALineOrder;\n  inherited Create(AWidth, AHeight);\n  if FDataByte<>nil then FillByte(FDataByte^, FHeight*FRowSize, 0);\nend;\n\nprocedure TCustomUniversalBitmap.Assign(Source: TPersistent);\nbegin\n  Assign(Source, False);\nend;\n\nprocedure TCustomUniversalBitmap.Assign(Source: TPersistent; ACopyProperties: Boolean);\nvar pdest: PByte;\n  x,y: Int32or64;\n  col: TFPColor;\nbegin\n  if Source is TCustomUniversalBitmap then\n  begin\n    SetSize(TCustomUniversalBitmap(Source).Width, TCustomUniversalBitmap(Source).Height);\n\n    if ACopyProperties then TCustomUniversalBitmap(Source).CopyPropertiesTo(Self);\n\n    PutImage(0, 0, TCustomUniversalBitmap(Source), dmSet);\n  end else\n  if Source is TFPCustomImage then\n  begin\n    SetSize(TFPCustomImage(Source).Width, TFPCustomImage(Source).Height);\n\n    if ACopyProperties then\n    begin\n      {$IF FPC_FULLVERSION>=30203}\n      //Resolution\n      ResolutionUnit:=TFPCustomImage(Source).ResolutionUnit;\n      ResolutionX:=TFPCustomImage(Source).ResolutionX;\n      ResolutionY:=TFPCustomImage(Source).ResolutionY;\n      {$ENDIF}\n      // Copy palette if needed.\n      UsePalette := TFPCustomImage(Source).UsePalette;\n      if UsePalette then\n      begin\n        Palette.Count:=0;\n        Palette.Merge(TFPCustomImage(Source).Palette);\n      end;\n    end;\n\n    for y := 0 to TFPCustomImage(Source).Height-1 do\n    begin\n      pdest := GetPixelAddress(0,y);\n      for x := 0 to TFPCustomImage(Source).Width-1 do\n      begin\n        col := TFPCustomImage(Source).Colors[x,y];\n        FConvertFromFPColor.Convert(@col, pdest, 1, sizeof(TFPColor), FPixelSize, nil);\n        inc(pdest);\n      end;\n    end;\n  end else\n    inherited Assign(Source);\nend;\n\nfunction TCustomUniversalBitmap.NewBitmap: TCustomUniversalBitmap;\nbegin\n  result := InternalNew;\nend;\n\nfunction TCustomUniversalBitmap.NewBitmap(AWidth, AHeight: integer): TCustomUniversalBitmap;\nvar\n  c: array[0..23] of byte;\nbegin\n  AssignTransparentPixel(c);\n  result := NewBitmap(AWidth, AHeight, @c);\nend;\n\nfunction TCustomUniversalBitmap.NewBitmap(AWidth, AHeight: integer;\n  AColor: Pointer): TCustomUniversalBitmap;\nvar\n  b: TUniversalBrush;\nbegin\n  result := InternalNew;\n  result.SetSize(AWidth,AHeight);\n  SolidBrushIndirect(b, AColor, dmSet);\n  result.Fill(b);\nend;\n\nfunction TCustomUniversalBitmap.NewReference: TCustomUniversalBitmap;\nbegin\n  if self <> nil then Inc(FRefCount);\n  Result := self;\nend;\n\nprocedure TCustomUniversalBitmap.FreeReference;\nbegin\n  if self = nil then\n    exit;\n\n  if FRefCount > 0 then\n  begin\n    Dec(FRefCount);\n    if FRefCount = 0 then\n    begin\n      self.Destroy;\n    end;\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetUnique: TCustomUniversalBitmap;\nbegin\n  if FRefCount > 1 then\n  begin\n    Dec(FRefCount);\n    Result := self.Duplicate;\n  end\n  else\n    Result := self;\nend;\n\nfunction TCustomUniversalBitmap.Duplicate(ACopyProperties: boolean): TCustomUniversalBitmap;\nbegin\n  result := InternalDuplicate(ACopyProperties);\nend;\n\nprocedure TCustomUniversalBitmap.CopyPropertiesTo(ABitmap: TCustomUniversalBitmap);\nbegin\n  ABitmap.FillMode := FillMode;\n  ABitmap.ClipRect := ClipRect;\n  ABitmap.ScanOffset := ScanOffset;\n  ABitmap.ResolutionUnit := ResolutionUnit;\n  ABitmap.ResolutionX := ResolutionX;\n  ABitmap.ResolutionY := ResolutionY;\n  { #todo 2 -oMaxM : In the future we will also copy the information about the original readed bitformat (Issue #231) }\n  // Copy palette if needed.\n  ABitmap.UsePalette := UsePalette;\n  if ABitmap.UsePalette then\n  begin\n    ABitmap.Palette.Count:=0;\n    ABitmap.Palette.Merge(Self.Palette);\n  end;\nend;\n\nfunction TCustomUniversalBitmap.GetPart(const ARect: TRect; ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nvar\n  sx, sy: integer;\n  xSrc0, ySrc, remainX, xSrc, yDest, copyCount, copyByte: integer;\n  pSrc, pDest, pSrcLine: PByte;\nbegin\n  sx := ARect.Width;\n  sy := ARect.Height;\n  if (sx = 0) or (sy = 0) then exit(nil);\n  result := InternalNew;\n  if ACopyProperties then CopyPropertiesTo(result);\n  result.SetSize(sx,sy);\n  if (FWidth = 0) or (FHeight = 0) then\n  begin\n    result.FillTransparent;\n    exit;\n  end;\n  LoadFromBitmapIfNeeded;\n  xSrc0 := PositiveMod(ARect.Left, FWidth);\n  ySrc := PositiveMod(ARect.Top, FHeight);\n  for yDest := 0 to sy-1 do\n  begin\n    xSrc := xSrc0;\n    pSrcLine := GetScanLineByte(ySrc);\n    pSrc := pSrcLine + xSrc*FPixelSize;\n    pDest := result.GetScanLineByte(yDest);\n    remainX := sx;\n    while remainX > 0 do\n    begin\n      if xSrc+remainX > FWidth then\n      begin\n        copyCount := FWidth-xSrc;\n        copyByte := copyCount*FPixelSize;\n        move(pSrc^, pDest^, copyByte);\n        inc(pDest, copyByte);\n        xSrc := 0;\n        pSrc := pSrcLine;\n        dec(remainX, copyCount);\n      end\n      else\n      begin\n        move(pSrc^, pDest^, remainX*FPixelSize);\n        break;\n      end;\n    end;\n    inc(ySrc);\n    if ySrc = FHeight then ySrc := 0;\n  end;\n  result.InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.SetSize(AWidth, AHeight: integer);\nvar\n  nbPixels64: Int64;\nbegin\n  if AWidth < 0 then AWidth := 0;\n  if AHeight < 0 then AHeight := 0;\n  if (AWidth = Width) and (AHeight = Height) then exit;\n  inherited SetSize(AWidth, AHeight);\n  FWidth    := AWidth;\n  FHeight   := AHeight;\n  FScanWidth := AWidth;\n  FScanHeight:= AHeight;\n  nbPixels64 := int64(AWidth) * int64(AHeight);\n  if nbPixels64 > maxLongint then\n  begin\n    // 2 gigapixels limit\n    raise EOutOfMemory.Create('Image too big');\n  end;\n  FNbPixels := nbPixels64;\n  FRowSize := PtrInt(FWidth)*FPixelSize;\n  ReallocData;\n  NoClip;\nend;\n\ndestructor TCustomUniversalBitmap.Destroy;\nbegin\n  FreeData;\n  FreeAndNil(FPenStroker);\n  inherited Destroy;\nend;\n\nprocedure TCustomUniversalBitmap.Serialize(AStream: TStream);\nvar lWidth,lHeight,y: integer;\nbegin\n  lWidth := NtoLE(Width);\n  lHeight := NtoLE(Height);\n  AStream.Write(lWidth,sizeof(lWidth));\n  AStream.Write(lHeight,sizeof(lHeight));\n  for y := 0 to Height-1 do\n    AStream.Write(GetPixelAddress(0,y)^, RowSize);\nend;\n\nprocedure TCustomUniversalBitmap.Deserialize(AStream: TStream);\nvar lWidth,lHeight,y: integer;\nbegin\n  lWidth := 0;\n  lHeight := 0;\n  AStream.Read(lWidth,sizeof(lWidth));\n  AStream.Read(lHeight,sizeof(lHeight));\n  lWidth := LEtoN(lWidth);\n  lHeight := LEtoN(lHeight);\n  SetSize(lWidth,lHeight);\n  for y := 0 to Height-1 do\n    AStream.Read(GetPixelAddress(0,y)^, RowSize);\n  InvalidateBitmap;\nend;\n\nclass procedure TCustomUniversalBitmap.SerializeEmpty(AStream: TStream);\nvar zero: integer;\nbegin\n  zero := 0;\n  AStream.Write(zero,sizeof(zero));\n  AStream.Write(zero,sizeof(zero));\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFile(const AFilename: string);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFile(self, AFilename);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFile(const AFilename: string;\n  AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFile(self, AFilename, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFile(const AFilename: String;\n  AHandler: TFPCustomImageReader);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFile(self, AFilename, AHandler);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFile(const AFilename: String;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFile(self, AFilename, AHandler, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFileUTF8(const AFilenameUTF8: string;\n  AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFileUTF8(self, AFilenameUTF8, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromFileUTF8(const AFilenameUTF8: string;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromFileUTF8(self, AFilenameUTF8, AHandler, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromStream(AStream: TStream);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromStream(self, AStream);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromStream(AStream: TStream;\n  AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromStream(self, AStream, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromStream(AStream: TStream;\n  AHandler: TFPCustomImageReader);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromStream(self, AStream, AHandler);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromStream(AStream: TStream;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromStream(self, AStream, AHandler, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromResource(AFilename: string);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromResource(self, AFilename);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromResource(AFilename: string;\n  AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromResource(self, AFilename, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromResource(AFilename: string;\n  AHandler: TFPCustomImageReader);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromResource(self, AFilename, AHandler);\nend;\n\nprocedure TCustomUniversalBitmap.LoadFromResource(AFilename: string;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.LoadFromResource(self, AFilename, AHandler, AOptions);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFile(const AFilename: string);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFile(self, AFilename);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFile(const AFilename: string;\n  AHandler: TFPCustomImageWriter);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFile(self, AFilename, AHandler);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFile(const AFilename: string; AFormat: TBGRAImageFormat);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFile(self, AFilename, AFormat);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFileUTF8(const AFilenameUTF8: string);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFileUTF8(self, AFilenameUTF8);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFileUTF8(const AFilenameUTF8: string;\n  AHandler: TFPCustomImageWriter);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFile(self, AFilenameUTF8, AHandler);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToFileUTF8(const AFilenameUTF8: string; AFormat: TBGRAImageFormat);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToFileUTF8(self, AFilenameUTF8, AFormat);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToStreamAs(AStream: TStream;\n  AFormat: TBGRAImageFormat);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToStreamAs(self, AStream, AFormat);\nend;\n\nprocedure TCustomUniversalBitmap.SaveToStreamAsPng(AStream: TStream);\nbegin\n  if UniDrawerClass = nil then RaiseMissingUniDrawer;\n  UniDrawerClass.SaveToStreamAsPng(self, AStream);\nend;\n\nprocedure TCustomUniversalBitmap.NoClip;\nbegin\n  FClipRect := rect(0,0,FWidth,FHeight);\nend;\n\nfunction TCustomUniversalBitmap.IntersectClip(const ARect: TRect): TRect;\nvar\n  remain: TRect;\nbegin\n  result := ClipRect;\n  remain := TRect.Intersect(ARect, result);\n  ClipRect := remain;\nend;\n\nprocedure TCustomUniversalBitmap.Fill(const ABrush: TUniversalBrush; AAlpha: Word = 65535);\nvar\n  pDest: PByte;\n  delta: PtrInt;\n  yb: Integer;\n  ctx: TUniBrushContext;\nbegin\n  if ABrush.DoesNothing or (NbPixels = 0) then exit;\n  LoadFromBitmapIfNeeded;\n  if LineOrder = riloBottomToTop then\n    delta := -RowSize\n  else\n    delta := RowSize;\n  pDest := GetPixelAddress(0,0);\n  for yb := 0 to Height-1 do\n  begin\n    ABrush.MoveTo(@ctx, pDest,0,yb);\n    ABrush.PutNextPixels(@ctx, AAlpha,Width);\n    inc(pDest, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.Fill(ATexture: IBGRAScanner; AMode: TDrawMode);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  Fill(b);\nend;\n\nprocedure TCustomUniversalBitmap.Fill(ATexture: IBGRAScanner; AMode: TDrawMode;\n  AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  Fill(b, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillTransparent;\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, 65535);\n  Fill(b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFill(alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  Fill(b);\nend;\n\nprocedure TCustomUniversalBitmap.ApplyMask(mask: TCustomUniversalBitmap; AAlpha: Word);\nbegin\n  ApplyMask(mask, Rect(0,0,Width,Height), Point(0,0), AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ApplyMask(mask: TCustomUniversalBitmap; ARect: TRect; AAlpha: Word);\nbegin\n  ApplyMask(mask, ARect, ARect.TopLeft, AAlpha);\nend;\n\n{ Apply a mask to the bitmap. It means that alpha channel is\n  changed according to grayscale values of the mask.\n\n  See : http://wiki.lazarus.freepascal.org/BGRABitmap_tutorial_5 }\nprocedure TCustomUniversalBitmap.ApplyMask(mask: TCustomUniversalBitmap;\n  ARect: TRect; AMaskRectTopLeft: TPoint; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  MaskBrush(b, mask, AMaskRectTopLeft.X-ARect.Left, AMaskRectTopLeft.Y-ARect.Top);\n  FillRect(ARect, b, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ApplyGlobalOpacity(alpha: byte);\nbegin\n  ApplyGlobalOpacity(ClipRect, alpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; const ABrush: TUniversalBrush);\nvar\n  yb, remain: integer;\n  pScan: PByte;\n  delta: PtrInt;\n  ctx: TUniBrushContext;\n  r: TRect;\n  chunkCount, maskStride: integer;\n  maskSrc: PByteMask;\n  curVal: byte;\n  brushCount: integer;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  r := RectWithSize(x,y,AMask.Width,AMask.Height);\n\n  if not CheckClippedRectBounds(r.Left,r.Top,r.Right,r.Bottom)\n    or ABrush.DoesNothing then exit;\n\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(r.Left, r.Top);\n  if LineOrder = riloBottomToTop then\n    delta := -RowSize\n    else delta := RowSize;\n\n  for yb := r.Top to r.Bottom-1 do\n  begin\n    ABrush.MoveTo(@ctx, pScan, r.Left, yb);\n    AMask.ScanMoveTo(r.Left - x, yb - y);\n    remain := r.Width;\n    while remain > 0 do\n    begin\n      chunkCount := remain;\n      AMask.ScanNextMaskChunk(chunkCount, maskSrc, maskStride);\n      dec(remain, chunkCount);\n      while chunkCount > 0 do\n      begin\n        curVal := maskSrc^.gray;\n        inc(maskSrc, maskStride);\n        dec(chunkCount);\n        brushCount := 1;\n        while (chunkCount > 0) and (maskSrc^.gray = curVal) do\n        begin\n          inc(maskSrc, maskStride);\n          dec(chunkCount);\n          inc(brushCount);\n        end;\n        ABrush.PutNextPixels(@ctx, curVal + (curVal shl 8), brushCount);\n      end;\n    end;\n    inc(pScan, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner);\nbegin\n  FillMask(x,y, AMask, ATexture, dmDrawWithTransparency);\nend;\n\nprocedure TCustomUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; AMode: TDrawMode);\nbegin\n  FillMask(x,y, AMask, ATexture, AMode, Point(0,0));\nend;\n\nprocedure TCustomUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; ATexture: IBGRAScanner; AMode: TDrawMode;\n  AScanOffset: TPoint);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode, AScanOffset.X, AScanOffset.Y);\n  FillMask(x,y, AMask, b);\nend;\n\nprocedure TCustomUniversalBitmap.ApplyGlobalOpacity(ARect: TRect; alpha: byte);\nbegin\n  EraseRect(ARect, 255-alpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawCheckers(ARect: TRect; const ABrushEven,\n  ABrushOdd: TUniversalBrush; AGridWidth: integer; AGridHeight: integer);\nvar xcount,patY,yb,w,n,patX,patX1,patX1b: Int32or64;\n    pdest: PByte;\n    delta: PtrInt;\n    actualRect: TRect;\n    ctxEven,ctxOdd: TUniBrushContext;\nbegin\n  actualRect := TRect.Intersect(ARect, ClipRect);\n  if actualRect.IsEmpty then exit;\n  w := actualRect.Right-actualRect.Left;\n  delta := self.RowSize;\n  if self.LineOrder = riloBottomToTop then delta := -delta;\n  pdest := self.GetPixelAddress(actualRect.left, actualRect.Top);\n  patY := (actualRect.Top - ARect.Top) mod (AGridHeight shl 1);\n  patX1 := (actualRect.Left - ARect.Left) mod (AGridWidth shl 1);\n  patX1b := (patX1+AGridWidth) mod (AGridWidth shl 1);\n  for yb := actualRect.Top to actualRect.Bottom-1 do\n  begin\n    if patY < AGridHeight then\n      patX := patX1\n      else patX := patX1b;\n    ABrushEven.MoveTo(@ctxEven, pdest, actualRect.Left,yb);\n    ABrushOdd.MoveTo(@ctxOdd, pdest, actualRect.Left,yb);\n    xcount := w;\n    if patX >= AGridWidth then\n    begin\n      n := (AGridWidth shl 1) - patX;\n      if n > xcount then n := xcount;\n      ABrushEven.PutNextPixels(@ctxEven, $ffff, n);\n      ABrushOdd.PutNextPixels(@ctxOdd, 0, n);\n      dec(xcount,n);\n      patX := 0;\n    end;\n    while xcount > 0 do\n    begin\n      n := AGridWidth - patX;\n      if n > xcount then n := xcount;\n      ABrushOdd.PutNextPixels(@ctxOdd, $ffff, n);\n      ABrushOdd.PutNextPixels(@ctxEven, 0, n);\n      dec(xcount, n);\n      patX := AGridWidth;\n\n      if xcount > 0 then\n      begin\n        n := (AGridWidth shl 1) - patX;\n        if n > xcount then n := xcount;\n        ABrushEven.PutNextPixels(@ctxEven, $ffff, n);\n        ABrushOdd.PutNextPixels(@ctxOdd, 0, n);\n        dec(xcount, n);\n        patX := 0;\n      end;\n    end;\n    inc(pbyte(pdest), delta);\n    inc(patY);\n    if patY = AGridHeight shl 1 then patY := 0;\n  end;\n  self.InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(ALeft, ATop, ARight, ABottom: integer;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  yb, sx: integer;\n  pScan: PByte;\n  delta: PtrInt;\n  ctx: TUniBrushContext;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  if not CheckClippedRectBounds({%H-}ALeft,{%H-}ATop,{%H-}ARight,{%H-}ABottom) or\n    (AAlpha = 0) or ABrush.DoesNothing then exit;\n\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(ALeft, ATop);\n  if LineOrder = riloBottomToTop then\n    delta := -RowSize\n  else\n    delta := RowSize;\n  sx := ARight - ALeft;\n\n  for yb := ATop to ABottom-1 do\n  begin\n    ABrush.MoveTo(@ctx, pScan,ALeft,yb);\n    ABrush.PutNextPixels(@ctx, AAlpha,sx);\n    inc(pScan, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(const ARect: TRect;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  FillRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, ABrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(ALeft, ATop, ARight,\n  ABottom: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  FillRect(ALeft, ATop, ARight, ABottom, b, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(const ARect: TRect;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nbegin\n  FillRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, ATexture, AMode, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(ALeft, ATop, ARight,\n  ABottom: integer; ATexture: IBGRAScanner; AMode: TDrawMode;\n  AScanOffset: TPoint; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode,AScanOffset.X,AScanOffset.Y);\n  FillRect(ALeft,ATop,ARight,ABottom, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRect(const ARect: TRect;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AScanOffset: TPoint; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode,AScanOffset.X,AScanOffset.Y);\n  FillRect(ARect, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRect(ALeft, ATop, ARight,\n  ABottom: integer; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillRect(ALeft, ATop, ARight, ABottom, b);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRect(const ARect: TRect; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillRect(ARect, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillRect(ALeft, ATop, ARight,\n  ABottom: integer; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillRect(ALeft, ATop, ARight, ABottom, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillRect(const ARect: TRect; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillRect(ARect, b);\nend;\n\nprocedure TCustomUniversalBitmap.SetPixelIndirect(x, y: int32or64; AColor: pointer);\nvar\n  pScan: PByte;\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  move(AColor^, pScan^, FPixelSize);\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.GetPixelIndirect(x, y: int32or64; AColor: pointer);\nvar\n  pScan: Pointer;\nbegin\n  if (x < 0) or (x >= FWidth) or (y < 0) or (y >= FHeight) then //it is possible to read pixels outside of the cliprect\n    AssignTransparentPixel(AColor^)\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    pScan := GetPixelAddress(x,y);\n    move(pScan^, AColor^, FPixelSize);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.GetPixelCycleIndirect(x, y: int32or64;\n  AColor: pointer);\nvar\n  pScan: PByte;\nbegin\n  if (FWidth=0) or (FHeight=0) then AssignTransparentPixel(AColor^)\n  else\n  begin\n    LoadFromBitmapIfNeeded;\n    pScan := GetPixelAddress(PositiveMod(x, Width), PositiveMod(y, Height));\n    move(pScan^, AColor^, FPixelSize);\n  end;\nend;\n\nprocedure TCustomUniversalBitmap.DrawPixel(x, y: Int32or64;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  pScan: Pointer;\n  ctx: TUniBrushContext;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  if not PtInClipRect(x,y) or (AAlpha = 0) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  ABrush.MoveTo(@ctx, pScan,x,y);\n  ABrush.PutNextPixels(@ctx, AAlpha,1);\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.DrawPixel(x, y: Int32or64;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  DrawPixel(x,y, b, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPixelF(x, y: single;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  ix, iy: integer;\n  fracX, fracY: longword;\n  aFracX, aFracY: word;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  ix := floor(x); fracX := round((x-ix)*65536);\n  if fracX = 65536 then begin fracX := 0; inc(ix); end;\n  iy := floor(y); fracY := round((y-iy)*65536);\n  if fracY = 65536 then begin fracY := 0; inc(iy); end;\n  if (ix >= Width) or (iy >= Height) then exit;\n  if (ix < -integer(fracX <> 0)) or (iy < -integer(fracy <> 0)) then exit;\n  aFracX := (AAlpha*fracX+32768) shr 16;\n  DrawPixel(ix,iy, ABrush, ((not aFracX)*longword(65536-fracY)+32768) shr 16);\n  DrawPixel(ix+1,iy, ABrush, (aFracX*longword(65536-fracY)+32768) shr 16);\n  DrawPixel(ix,iy+1, ABrush, ((not aFracX)*fracY+32768) shr 16);\n  DrawPixel(ix+1,iy+1, ABrush, (aFracX*fracY+32768) shr 16);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPixelF(x, y: single;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  DrawPixelF(x,y, b, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePixel(x, y: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  DrawPixel(x,y, b);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePixelF(x, y: single; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  DrawPixelF(x,y, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPixel(x, y: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  DrawPixel(x,y, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPixelF(x, y: single; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  DrawPixelF(x,y, b);\nend;\n\nprocedure TCustomUniversalBitmap.HorizLine(x, y, x2: int32or64;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  pScan: Pointer;\n  ctx: TUniBrushContext;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  ABrush.MoveTo(@ctx, pScan,x,y);\n  ABrush.PutNextPixels(@ctx, AAlpha,x2-x+1);\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.HorizLine(x, y, x2: int32or64;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  HorizLine(x,y,x2, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseHorizLine(x, y, x2: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  HorizLine(x,y,x2, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaHorizLine(x, y, x2: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  HorizLine(x,y,x2, b);\nend;\n\nprocedure TCustomUniversalBitmap.VertLine(x, y, y2: int32or64;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar\n  pScan: PByte;\n  delta: PtrInt;\n  yb: Int32or64;\n  ctx: TUniBrushContext;\nbegin\n  if ABrush.Colorspace <> Colorspace then RaiseInvalidBrushColorspace;\n  if not CheckVertLineBounds(x,y,y2) or ABrush.DoesNothing then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  if LineOrder = riloTopToBottom then delta := RowSize else delta := -rowSize;\n  for yb := y to y2 do\n  begin\n    ABrush.MoveTo(@ctx, pScan,x,y);\n    ABrush.PutNextPixels(@ctx, AAlpha,1);\n    inc(pScan, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.VertLine(x, y, y2: int32or64;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  VertLine(x,y,y2, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseVertLine(x, y, y2: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  VertLine(x,y,y2, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaVertLine(x, y, y2: int32or64; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  VertLine(x,y,y2, b);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLine(x1, y1, x2, y2: integer;\n  const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word = 65535);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawLine(self, x1,y1,x2,y2, ABrush, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLine(x1, y1, x2, y2: integer;\n  ATexture: IBGRAScanner; AMode: TDrawMode; ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  DrawLine(x1,y1,x2,y2, b,ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawLineAntialias(self, x1,y1,x2,y2, ABrush, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  ATexture: IBGRAScanner; AMode: TDrawMode; ADrawLastPixel: boolean;\n  AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  DrawLineAntialias(x1,y1,x2,y2, b,ADrawLastPixel,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer;\n  ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  dashPos: integer;\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  dashPos := 0;\n  UniDrawerClass.DrawLineAntialias(self, x1,y1,x2,y2, ABrush1,ABrush2, ADashLen, dashPos, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer;\n  var ADashPos: integer; ADrawLastPixel: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawLineAntialias(self, x1,y1,x2,y2, ABrush1,ABrush2, ADashLen, ADashPos, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseLine(x1, y1, x2, y2: integer;\n  alpha: byte; DrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  DrawLine(x1,y1,x2,y2,b,DrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.EraseLineAntialias(x1, y1, x2, y2: integer;\n  alpha: byte; DrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha+(alpha shl 8));\n  DrawLineAntialias(x1,y1,x2,y2,b,DrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaLine(x1, y1, x2, y2: integer;\n  alpha: byte; DrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  DrawLine(x1,y1,x2,y2,b,DrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaLineAntialias(x1, y1, x2, y2: integer;\n  alpha: byte; DrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha+(alpha shl 8));\n  DrawLineAntialias(x1,y1,x2,y2,b,DrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLine(const points: array of TPoint;\n  const ABrush: TUniversalBrush; ADrawLastPixel: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolyLine(self, points, ABrush, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const points: array of TPoint; const ABrush: TUniversalBrush;\n  ADrawLastPixel: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolyLineAntialias(self, points, ABrush, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolyLineAntialias(\n  const points: array of TPoint; const ABrush1, ABrush2: TUniversalBrush;\n  ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolyLineAntialias(self, points, ABrush1, ABrush2, ADashLen, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyLine(const points: array of TPoint;\n  alpha: byte; ADrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  DrawPolyLine(points, b, ADrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolyLineAntialias(\n  const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  DrawPolyLineAntialias(points, b, ADrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPolyLine(const points: array of TPoint;\n  alpha: byte; ADrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  DrawPolyLine(points, b, ADrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPolyLineAntialias(\n  const points: array of TPoint; alpha: byte; ADrawLastPixel: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  DrawPolyLineAntialias(points, b, ADrawLastPixel);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolygon(const points: array of TPoint;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolygon(self, points, ABrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolygonAntialias(\n  const points: array of TPoint;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolygonAntialias(self, points, ABrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPolygonAntialias(\n  const points: array of TPoint; const ABrush1,\n  ABrush2: TUniversalBrush; ADashLen: integer; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.DrawPolygonAntialias(self, points, ABrush1,ABrush2, ADashLen, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolygonOutline(const points: array of TPoint;\n  alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  DrawPolygon(points, b);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePolygonOutlineAntialias(\n  const points: array of TPoint; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  DrawPolygonAntialias(points, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPolygonOutline(const points: array of TPoint;\n  alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  DrawPolygon(points, b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaPolygonOutlineAntialias(\n  const points: array of TPoint; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  DrawPolygonAntialias(points, b);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPathAliased(APath: IBGRAPath;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  data: TPathCallbackData;\nbegin\n  if ABrush.DoesNothing then exit;\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  data.BrushAddress := @ABrush;\n  data.Alpha:= AAlpha;\n  data.PixelCenteredCoords := APixelCenteredCoordinates;\n  APath.stroke(@PathStrokeAliasedCallback, @data);\nend;\n\nprocedure TCustomUniversalBitmap.DrawPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  data: TPathCallbackData;\nbegin\n  if ABrush.DoesNothing then exit;\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  data.BrushAddress := @ABrush;\n  data.Alpha:= AAlpha;\n  data.PixelCenteredCoords := APixelCenteredCoordinates;\n  APath.stroke(@PathStrokeAliasedCallback, AMatrix, @data);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(x, y, x2, y2: integer;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.Rectangle(self, x,y,x2,y2, ABrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(x, y, x2, y2: integer;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  Rectangle(x,y,x2,y2, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(const ARect: TRect;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom, ABrush,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(const ARect: TRect;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nbegin\n  Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom, ATexture,AMode,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(x, y, x2, y2: integer; const ABorderBrush,\n  AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.Rectangle(self, x,y,x2,y2, ABorderBrush,AFillBrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.Rectangle(const ARect: TRect;\n  const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom, ABorderBrush,AFillBrush,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.RoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.RoundRect(self, X1,Y1,X2,Y2,DX,DY, ABorderBrush,AFillBrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.RoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const ABorderBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.RoundRect(self, X1,Y1,X2,Y2,DX,DY, ABorderBrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.RoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  RoundRect(X1,Y1,X2,Y2,DX,DY, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.RoundRect(self, X1,Y1,X2,Y2,DX,DY, AFillBrush, AFillBrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillRoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  FillRoundRect(X1,Y1,X2,Y2,DX,DY, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseRoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillRoundRect(X1,Y1,X2,Y2,DX,DY,b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillRoundRect(X1, Y1, X2, Y2: integer;\n  DX, DY: integer; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillRoundRect(X1,Y1,X2,Y2,DX,DY,b);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseInRect(ARect: TRect;\n  const ABorderBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  RoundRect(ARect.left,ARect.top,ARect.right,ARect.bottom,\n            abs(ARect.right-ARect.left),abs(ARect.bottom-ARect.top),\n            ABorderBrush,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseInRect(ARect: TRect;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  EllipseInRect(ARect, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EllipseInRect(ARect: TRect; const ABorderBrush,\n  AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  RoundRect(ARect.left,ARect.top,ARect.right,ARect.bottom,\n            abs(ARect.right-ARect.left),abs(ARect.bottom-ARect.top),\n            ABorderBrush,AFillBrush,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseInRect(ARect: TRect;\n  const AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  FillRoundRect(ARect.left,ARect.top,ARect.right,ARect.bottom,\n            abs(ARect.right-ARect.left),abs(ARect.bottom-ARect.top),\n            AFillBrush,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillEllipseInRect(ARect: TRect;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode);\n  FillEllipseInRect(ARect, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseEllipseInRect(ARect: TRect; alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillEllipseInRect(ARect,b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillEllipseInRect(ARect: TRect;\n  alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillEllipseInRect(ARect,b);\nend;\n\nprocedure TCustomUniversalBitmap.FillShape(AShape: TBGRACustomFillInfo;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillShape(self, AShape, FillMode, ABrush, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillShape(AShape: TBGRACustomFillInfo;\n  ATexture: IBGRAScanner; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture,AMode);\n  FillShape(AShape, b,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.EraseShape(AShape: TBGRACustomFillInfo;\n  alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillShape(AShape,b);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillShape(AShape: TBGRACustomFillInfo;\n  alpha: byte);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillShape(AShape,b);\nend;\n\nprocedure TCustomUniversalBitmap.FillPoly(const APoints: array of TPointF;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean;\n  AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  UniDrawerClass.FillPoly(self, APoints, FillMode, ABrush, APixelCenteredCoordinates, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillPoly(const APoints: array of TPointF;\n  ATexture: IBGRAScanner; AMode: TDrawMode; APixelCenteredCoordinates: boolean;\n  AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  FillPoly(APoints, b,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePoly(const APoints: array of TPointF;\n  alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillPoly(APoints,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillPoly(const APoints: array of TPointF;\n  alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillPoly(APoints,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean;\n  AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  FillPoly(APath.getPoints, ABrush, APixelCenteredCoordinates, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const ABrush: TUniversalBrush;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nbegin\n  if UniDrawerClass=nil then RaiseMissingUniDrawer;\n  FillPoly(APath.getPoints(AMatrix), ABrush, APixelCenteredCoordinates, AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  ATexture: IBGRAScanner; AMode: TDrawMode; APixelCenteredCoordinates: boolean;\n  AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  FillPathAliased(APath, b,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; ATexture: IBGRAScanner; AMode: TDrawMode;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  ScannerBrush(b, ATexture, AMode);\n  FillPathAliased(APath,AMatrix, b,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePathAliased(APath: IBGRAPath;\n  alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillPathAliased(APath,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.ErasePathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  if alpha = 0 then exit;\n  EraseBrush(b, alpha + (alpha shl 8));\n  FillPathAliased(APath,AMatrix,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillPathAliased(APath: IBGRAPath;\n  alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillPathAliased(APath,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.AlphaFillPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; alpha: byte; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  AlphaBrush(b, alpha + (alpha shl 8));\n  FillPathAliased(APath,AMatrix,b,APixelCenteredCoordinates);\nend;\n\nprocedure TCustomUniversalBitmap.VerticalFlip;\nbegin\n  VerticalFlip(rect(0,0,Width,Height));\nend;\n\nprocedure TCustomUniversalBitmap.VerticalFlip(ARect: TRect);\nvar\n  yb,h2: integer;\n  line: Pointer;\n  linesize, delta: PtrInt;\n  PStart,PEnd: Pointer;\nbegin\n  if (ARect.Right <= ARect.Left) or (ARect.Bottom <= ARect.Top) then exit;\n  ARect.Intersect(rect(0,0,Width,Height));\n  if ARect.IsEmpty then exit;\n  LoadFromBitmapIfNeeded;\n  linesize := (ARect.Right-ARect.Left) * FPixelSize;\n  line     := nil;\n  getmem(line, linesize);\n  PStart := GetPixelAddress(ARect.Left, ARect.Top);\n  PEnd   := GetPixelAddress(ARect.Left,ARect.Bottom-1);\n  h2 := (ARect.Bottom-ARect.Top) div 2;\n  if LineOrder = riloTopToBottom then delta := +RowSize else delta := -RowSize;\n  for yb := h2-1 downto 0 do\n  begin\n    move(PStart^, line^, linesize);\n    move(PEnd^, PStart^, linesize);\n    move(line^, PEnd^, linesize);\n    Inc(PStart, delta);\n    Dec(PEnd, delta);\n  end;\n  freemem(line);\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.HorizontalFlip;\nbegin\n  HorizontalFlip(rect(0,0,Width,Height));\nend;\n\nprocedure TCustomUniversalBitmap.HorizontalFlip(ARect: TRect);\nvar\n  yb, w: integer;\n  PStart: PByte;\n  PEnd:   PByte;\nbegin\n  if (ARect.Right <= ARect.Left) or (ARect.Bottom <= ARect.Top) then exit;\n  ARect.Intersect(rect(0,0,Width,Height));\n  if ARect.IsEmpty then exit;\n  w := ARect.Right-ARect.Left;\n  LoadFromBitmapIfNeeded;\n  for yb := ARect.Top to ARect.Bottom-1 do\n  begin\n    PStart := GetPixelAddress(ARect.Left,yb);\n    PEnd   := PStart + (w-1)*FPixelSize;\n    InternalSwapPixels(PStart, PEnd, FPixelSize, -FPixelSize, w shr 1);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TCustomUniversalBitmap.RotateUDInplace;\nbegin\n  RotateUDInplace(rect(0,0,Width,Height));\nend;\n\nprocedure TCustomUniversalBitmap.RotateUDInplace(ARect: TRect);\nvar\n  yb,h,h2:  integer;\n  line:   PByte;\n  linesize, delta: IntPtr;\n  PStart: PByte;\n  PEnd:   PByte;\n  w: integer;\nbegin\n  if (ARect.Right <= ARect.Left) or (ARect.Bottom <= ARect.Top) then exit;\n  ARect.Intersect(rect(0,0,Width,Height));\n  if ARect.IsEmpty then exit;\n  LoadFromBitmapIfNeeded;\n  w := ARect.Right-ARect.Left;\n  linesize := w * FPixelSize;\n  line     := nil;\n  getmem(line, linesize);\n  PStart := GetPixelAddress(ARect.Left, ARect.Top);\n  PEnd   := GetPixelAddress(ARect.Right-1, ARect.Bottom-1);\n  h := ARect.Bottom-ARect.Top;\n  h2 := h div 2;\n  if LineOrder = riloTopToBottom then delta := +RowSize else delta := -RowSize;\n  for yb := h2-1 downto 0 do\n  begin\n    InternalSwapPixels(PStart, PEnd, FPixelSize, -FPixelSize, w);\n    Inc(PStart, delta);\n    Dec(PEnd, delta);\n  end;\n  if odd(h) then\n    InternalSwapPixels(PStart, PEnd, FPixelSize, -FPixelSize, w shr 1);\n  freemem(line);\n  InvalidateBitmap;\nend;\n\nfunction TCustomUniversalBitmap.RotateCW(ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nvar\n  psrc, pdest: PByte;\n  yb: integer;\n  delta: PtrInt;\nbegin\n  LoadFromBitmapIfNeeded;\n  result := InternalNew;\n  if ACopyProperties then\n  begin\n    CopyPropertiesTo(result);\n    //Swap Resolution X and Y\n    result.ResolutionX :=Self.ResolutionY;\n    result.ResolutionY :=Self.ResolutionX;\n  end;\n  result.SetSize(Height, Width);\n  if Result.LineOrder = riloTopToBottom then\n    delta := Result.RowSize\n  else\n    delta := -Result.RowSize;\n  for yb := 0 to Height - 1 do\n  begin\n    psrc  := ScanLineByte[yb];\n    pdest := Result.GetPixelAddress(Height-1-yb, 0);\n    InternalCopyPixels(psrc, pdest, FPixelSize, delta, Width);\n  end;\nend;\n\nfunction TCustomUniversalBitmap.RotateCCW(ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nvar\n  psrc, pdest: PByte;\n  yb: integer;\n  delta: PtrInt;\nbegin\n  LoadFromBitmapIfNeeded;\n  result := InternalNew;\n  if ACopyProperties then\n  begin\n    CopyPropertiesTo(result);\n    //Swap Resolution X and Y\n    result.ResolutionX :=Self.ResolutionY;\n    result.ResolutionY :=Self.ResolutionX;\n  end;\n  result.SetSize(Height, Width);\n  if Result.LineOrder = riloTopToBottom then\n    delta := Result.RowSize\n  else\n    delta := -Result.RowSize;\n  for yb := 0 to Height - 1 do\n  begin\n    psrc  := ScanLineByte[yb];\n    pdest := Result.GetPixelAddress(yb, Width - 1);\n    InternalCopyPixels(psrc, pdest, FPixelSize,-delta, Width);\n  end;\nend;\n\nfunction TCustomUniversalBitmap.RotateUD(ACopyProperties: Boolean=False): TCustomUniversalBitmap;\nvar\n  yb: Integer;\n  psrc, pdest: PByte;\nbegin\n  LoadFromBitmapIfNeeded;\n  result := InternalNew;\n  if ACopyProperties then CopyPropertiesTo(result);\n  result.SetSize(Width, Height);\n  for yb := 0 to Height-1 do\n  begin\n    psrc  := ScanLineByte[yb];\n    pdest := result.GetPixelAddress(Width-1,Height-1-yb);\n    InternalCopyPixels(psrc, pdest, FPixelSize, -FPixelSize, Width);\n  end;\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/unibitmapgeneric.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n{$IFDEF INCLUDE_INTERFACE}\n{$UNDEF INCLUDE_INTERFACE}\n\ntype\n  { Abstract class for a bitmap in a specific colorspace }\n  generic TGenericUniversalBitmap<TPixel,TColorspace> = class(TCustomUniversalBitmap)\n  private\n    type PPixel = ^TPixel;\n    function GetDataPtr: PPixel; inline;\n    function GetScanLine(y: integer): PPixel; inline;\n  protected\n    class function DefaultColorspace: TColorspaceAny; override;\n    procedure Init; override; //ensure colorspace\n    function GetScanlineFast(y: integer): PPixel; inline; //typed function\n    procedure InternalCopyPixels(ASource,ADest: PByte; ASourceStride,ADestStride: PtrInt; ACount: integer); override;\n    procedure InternalSwapPixels(ABuf1,ABuf2: PByte; AStride1,AStride2: PtrInt; ACount: integer); override;\n    procedure InternalSetPixels(ASource,ADest: PByte; ADestStride: PtrInt; ACount: integer); override;\n  public\n    //typed functions\n\n    {** Creates an image of dimensions _AWidth_ and _AHeight_ and fills it with _Color_ }\n    constructor Create(AWidth, AHeight: integer; const AColor: TPixel); virtual;\n    function NewBitmap(AWidth, AHeight: integer; const AColor: TPixel): TCustomUniversalBitmap; overload; virtual;\n\n    function Equals(comp: TCustomUniversalBitmap): boolean; overload;\n    function Equals(const comp: TPixel): boolean; overload;\n    function GetDifferenceBounds(ABitmap: TCustomUniversalBitmap): TRect;\n\n    {** Initializes a brush with a solid color provided indirectly by a reference }\n    procedure SolidBrushIndirect(out ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    {** Initializes a brush that has no effect }\n    class procedure IdleBrush(out ABrush: TUniversalBrush); virtual;\n    {** Initializes a brush with a solid color }\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TPixel; ADrawMode: TDrawMode = dmDrawWithTransparency); virtual;\n\n    {** @abstract(Creates a brush texture with a specified style, pattern color, background color, dimensions, and pen width.)\n\n**Example using a diagonal cross texture to fill shapes on a form:**\n\n@image(../doc/img/createbrushtexture.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  image,tex: TBGRABitmap;\n  c: TBGRAPixel;\n  x,y,rx,ry: single;\n\nbegin\n    image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace)));\n    c := ColorToBGRA(ColorToRGB(clWindowText));\n\n    //ellipse coordinates\n    x := 150;\n    y := 100;\n    rx := 100;\n    ry := 50;\n\n    //loads a \"diagcross\" brush with white pattern and orange background\n    tex := image.CreateBrushTexture(bsDiagCross,BGRAWhite,BGRA(255,192,0)) as TBGRABitmap;\n\n    image.FillEllipseAntialias(x,y,rx-0.5,ry-0.5,tex);\n    image.EllipseAntialias(x,y,rx,ry,c,1); //draw outline\n\n    image.RoundRectAntialias(x-rx-10,y-ry-10,x+rx+10,y+ry+10,20,20,c,11);\n    image.RoundRectAntialias(x-rx-10,y-ry-10,x+rx+10,y+ry+10,20,20,tex,9);\n\n    tex.Free;\n\n    image.Draw(Canvas,0,0,True);\n    image.free;\nend;\n```}\n    function CreateBrushTexture(ABrushStyle: TBrushStyle; APatternColor, ABackgroundColor: TPixel;\n            AWidth: integer = 8; AHeight: integer = 8; APenWidth: single = 1): TCustomUniversalBitmap; virtual;\n\n    procedure SetPixel(x,y: int32or64; const AColor: TPixel); overload; virtual;\n    function GetPixel(x,y: int32or64): TPixel; inline;\n    function GetPixelCycle(x,y: int32or64): TPixel; inline;\n    {** Returns the address of the left-most pixel of any line.\n        The parameter y ranges from 0 to Height-1 }\n    property ScanLine[y: integer]: PPixel Read GetScanLine;\n    {** Line order can change, so if you access\n        directly to bitmap data, check LineOrder value\n        or use Scanline to compute position. }\n    property Data: PPixel read GetDataPtr;\n\n    procedure Fill(const AColor: TPixel); overload; virtual;\n    procedure Fill(const AColor: TPixel; AMode : TDrawMode; AAlpha : Word = 65535); overload; virtual;\n    procedure ReplaceColor(const ABefore, AAfter: TPixel); overload; virtual;\n    procedure ReplaceColor(ARect: TRect; const ABefore, AAfter: TPixel); overload; virtual;\n    procedure ReplaceTransparent(const AAfter: TPixel); overload; virtual;\n    procedure ReplaceTransparent(ARect: TRect; const AAfter: TPixel); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; const AColor: TPixel); overload; virtual;\n    procedure FillMask(x,y: integer; AMask: TCustomUniversalBitmap; const AColor: TPixel; ADrawMode: TDrawMode); overload; virtual;\n    procedure FillRect(ALeft, ATop, ARight, ABottom: integer; const AColor: TPixel; ADrawMode: TDrawMode = dmSet; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRect(const ARect: TRect; const AColor: TPixel; ADrawMode: TDrawMode = dmSet; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawCheckers(ARect: TRect; const AColorEven,AColorOdd: TPixel; AGridWidth: integer = 8; AGridHeight: integer = 8; ADrawMode: TDrawMode = dmSet); virtual;\n    {** Draws a pixel with gamma correction at (_x_, _y_). Pixel is supplied\n        in sRGB colorspace }\n    procedure DrawPixel(x,y: Int32or64; const AColor: TPixel); overload; virtual;\n    procedure DrawPixel(x,y: Int32or64; const AColor: TPixel; ADrawMode: TDrawMode); overload; virtual;\n    procedure DrawPixel(x,y: Int32or64; const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word); overload; virtual;\n    procedure DrawPixelF(x,y: single; const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    {** Replaces the content of the pixels at line _y_ and\n        at columns _x_ to _x2_ included, using specified color }\n    procedure SetHorizLine(x, y, x2: int32or64; const AColor: TPixel); virtual;\n    procedure HorizLine(x, y, x2: int32or64; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    {** Replaces a vertical line at column _x_ and at row _y_ to _y2_ }\n    procedure SetVertLine(x, y, y2: int32or64; const AColor: TPixel); virtual;\n    procedure VertLine(x, y, y2: int32or64; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLine(x1, y1, x2, y2: integer; const AColor: TPixel; ADrawLastPixel: boolean; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const AColor: TPixel; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const AColor1, AColor2: TPixel; ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: integer; const AColor1, AColor2: TPixel; ADashLen: integer; var ADashPos: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload; virtual;\n    procedure DrawPolyLine(const points: array of TPoint; const AColor: TPixel; ADrawLastPixel: boolean; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload;\n    procedure DrawPolyLineAntialias(const points: array of TPoint; const AColor: TPixel; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload;\n    procedure DrawPolyLineAntialias(const points: array of TPoint; const AColor1, AColor2: TPixel; ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word = 65535); overload;\n    procedure DrawPolygon(const points: array of TPoint; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload;\n    procedure DrawPolygonAntialias(const points: array of TPoint; const AColor: TPixel; AAlpha: Word = 65535); overload;\n    procedure DrawPolygonAntialias(const points: array of TPoint; const AColor1, AColor2: TPixel; ADashLen: integer; AAlpha: Word = 65535); overload;\n    procedure DrawPathAliased(APath: IBGRAPath; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure DrawPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure Rectangle(x, y, x2, y2: integer; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(x, y, x2, y2: integer; const ABorderColor, AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(const ARect: TRect; const AColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure Rectangle(const ARect: TRect; const ABorderColor, AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure RoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure RoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderColor, AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure FillRoundRect(X1, Y1, X2, Y2: integer; DX, DY: integer; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure EllipseInRect(ARect: TRect; const ABorderColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure EllipseInRect(ARect: TRect; const ABorderColor, AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure FillEllipseInRect(ARect: TRect; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure FillShape(AShape: TBGRACustomFillInfo; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; AAlpha: Word = 65535); overload; virtual;\n    procedure FillPoly(const APoints: array of TPointF; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload; virtual;\n    procedure FillPathAliased(APath: IBGRAPath; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n    procedure FillPathAliased(APath: IBGRAPath; const AMatrix: TAffineMatrix; const AFillColor: TPixel; AMode : TDrawMode = dmDrawWithTransparency; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); overload;\n\n    //optimized\n    procedure SetPixelIndirect(x,y: int32or64; AColor: pointer); override;\n    procedure GetPixelIndirect(x,y: int32or64; AColor: pointer); override;\n    procedure GetPixelCycleIndirect(x,y: int32or64; AColor: pointer); override;\n    function GetPixelAddress(x, y: integer): PByte; override;\n\n    {==== Drawing lines and paths (floating point coordinates) ====}\n    {* These functions use the current pen style/cap/join. The parameter _APenWidth_\n       specifies the width of the line and the base unit for dashes.\n       See [coordinate system](https://wiki.freepascal.org/BGRABitmap_tutorial_13).\n     * The coordinates are pixel-centered by default, so that when filling a rectangle,\n       if the supplied values are integers, the border will be half transparent.\n       If you want the border to be completely filled, you can subtract/add\n       0.5 to the coordinates to include the remaining thin border.\n       See [coordinate system](https://wiki.freepascal.org/BGRABitmap_tutorial_13). }\n\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; const AColor: TPixel; APenWidth: single); overload; virtual;\n    procedure DrawLineAntialias(x1, y1, x2, y2: single; const AColor: TPixel; APenWidth: single; AClosedCap: boolean); overload; virtual;\n\n    {** Draws a polyline using current pen style/cap/join }\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; const AColor: TPixel; APenWidth: single); overload; virtual;\n    {** Draws a polyline using current pen style/cap/join.\n        _Closed_ specifies if the end of the line is roundly closed. If it is not closed,\n        a space is left so that the next line can fit }\n    procedure DrawPolyLineAntialias(const APoints: array of TPointF; const AColor: TPixel; APenWidth: single; AClosedCap: boolean); overload; virtual;\n    {** Draws a polyline using current pen style/cap/join.\n        The last point considered as a join with the first point if it has\n        the same coordinate }\n    procedure DrawPolyLineAntialiasAutocycle(const APoints: array of TPointF; const AColor: TPixel; APenWidth: single); overload; virtual;\n    {** Draws a polygon using current pen style/cap/join.\n        The polygon is always closed. You don't need to set the last point\n        to be the same as the first point }\n    procedure DrawPolygonAntialias(const APoints: array of TPointF; const AColor: TPixel; APenWidth: single); overload; virtual;\n\n    { @abstract(Draw a rectangle using current pen with antialiasing.)\n\n**Example drawing a rectangle on a form:**\n\n@image(../doc/img/rectangleantialias.png)\n\n```pascal\nprocedure TForm1.FormPaint(Sender: TObject);\nvar image: TBGRABitmap;\n    c: TBGRAPixel;\nbegin\n  image := TBGRABitmap.Create(ClientWidth, ClientHeight, clBtnFace);\n  c := clWindowText;\n\n  image.RectangleAntialias(80,80,300,200, c, 50);\n\n  image.Draw(Canvas,0,0,True);\n  image.free;\nend;\n```}\n    procedure RectangleAntialias(x, y, x2, y2: single; const AColor: TPixel; AWidth: single); overload; virtual;\n\n    {** Draws an ellipse without antialising. _rx_ is the horizontal radius and\n        _ry_ the vertical radius }\n    procedure Ellipse(x, y, rx, ry: single; const AColor: TPixel; AWidth: single; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    procedure Ellipse(const AOrigin, AXAxis, AYAxis: TPointF; const AColor: TPixel; AWidth: single; AMode: TDrawMode; AAlpha: Word = 65535); overload; virtual;\n    {** Draws an ellipse with antialising. _rx_ is the horizontal radius and\n        _ry_ the vertical radius }\n    procedure EllipseAntialias(x, y, rx, ry: single; const AColor: TPixel; AWidth: single); overload; virtual;\n    procedure EllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; const AColor: TPixel; AWidth: single); overload; virtual;\n\n    procedure DrawPath(APath: IBGRAPath; const AColor: TPixel; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure DrawPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; const AColor: TPixel; AWidth: single; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    //-------------------------------- antialias fill ---------------------------------------------\n    procedure FillPolyAntialias(const APoints: array of TPointF; const AColor: TPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillEllipseAntialias(x, y, rx, ry: single; const AColor: TPixel); overload; virtual;\n    procedure FillEllipseAntialias(const AOrigin, AXAxis, AYAxis: TPointF; const AColor: TPixel); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; const AColor: TPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillPath(APath: IBGRAPath; const AMatrix: TAffineMatrix; const AColor: TPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRectAntialias(x, y, x2, y2: single; const AColor: TPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n    procedure FillRectAntialias(const ARectF: TRectF; const AColor: TPixel; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n    {** Fills a rounded rectangle with antialiasing. The corners have an\n        elliptical radius of _rx_ and _ry_. _options_ specifies how to\n        draw the corners. }\n    procedure FillRoundRectAntialias(x, y, x2, y2, rx, ry: single; const AColor: TPixel; AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); overload; virtual;\n\n  end;\n\n{$ENDIF}\n\n{$IFDEF INCLUDE_IMPLEMENTATION}\n{$UNDEF INCLUDE_IMPLEMENTATION}\n\n{ TGenericUniversalBitmap }\n\nfunction TGenericUniversalBitmap.GetDataPtr: PPixel;\nbegin\n  result := PPixel(GetDataBytePtr);\nend;\n\nfunction TGenericUniversalBitmap.GetScanLine(y: integer): PPixel;\nbegin\n  result := PPixel(GetScanLineByte(y));\nend;\n\nclass function TGenericUniversalBitmap.DefaultColorspace: TColorspaceAny;\nbegin\n  Result:= TColorspace;\nend;\n\nprocedure TGenericUniversalBitmap.Init;\nbegin\n  inherited Init;\n  if FColorspace <> DefaultColorspace then raise exception.Create('Unexpected colorspace');\nend;\n\n{ Get scanline without checking bounds nor updated from bitmap }\nfunction TGenericUniversalBitmap.GetScanlineFast(y: integer): PPixel;\nbegin\n  if FLineOrder = riloBottomToTop then y := FHeight - 1 - y;\n  result := PPixel(FDataByte+FRowSize*y);\nend;\n\nprocedure TGenericUniversalBitmap.InternalCopyPixels(ASource, ADest: PByte;\n  ASourceStride, ADestStride: PtrInt; ACount: integer);\nbegin\n  while ACount>0 do\n  begin\n    PPixel(ADest)^ := PPixel(ASource)^;\n    inc(ASource, ASourceStride);\n    inc(ADest, ADestStride);\n    dec(ACount);\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.InternalSwapPixels(ABuf1, ABuf2: PByte;\n  AStride1, AStride2: PtrInt; ACount: integer);\nvar temp: TPixel;\nbegin\n  while ACount>0 do\n  begin\n    temp := PPixel(ABuf1)^;\n    PPixel(ABuf1)^ := PPixel(ABuf2)^;\n    PPixel(ABuf2)^ := temp;\n    inc(ABuf1, AStride1);\n    inc(ABuf2, AStride2);\n    dec(ACount);\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.InternalSetPixels(ASource, ADest: PByte;\n  ADestStride: PtrInt; ACount: integer);\nbegin\n  while ACount>0 do\n  begin\n    PPixel(ADest)^ := PPixel(ASource)^;\n    inc(ADest, ADestStride);\n    dec(ACount);\n  end;\nend;\n\nconstructor TGenericUniversalBitmap.Create(AWidth, AHeight: integer;\n  const AColor: TPixel);\nvar\n  p: PByte;\n  i: Integer;\nbegin\n  inherited Create(0, 0);\n  SetSize(AWidth,AHeight);\n  p := DataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    PPixel(p)^ := AColor;\n    inc(p, sizeof(TPixel));\n  end;\nend;\n\nfunction TGenericUniversalBitmap.NewBitmap(AWidth, AHeight: integer;\n  const AColor: TPixel): TCustomUniversalBitmap;\nvar\n  b: TUniversalBrush;\nbegin\n  result := InternalNew;\n  result.SetSize(AWidth,AHeight);\n  SolidBrush(b, AColor, dmSet);\n  result.Fill(b);\nend;\n\nfunction TGenericUniversalBitmap.Equals(comp: TCustomUniversalBitmap): boolean;\nvar\n  p,pComp: PByte;\n  y, x: Integer;\n  delta, compDelta: PtrInt;\nbegin\n  if (comp.Colorspace<>Colorspace) or\n     (comp.Width <> Width) or (comp.Height <> Height) then exit(false);\n  p := GetPixelAddress(0,0);\n  if LineOrder = riloTopToBottom then delta := 0 else delta := -RowSize*2;\n  pComp := comp.GetPixelAddress(0,0);\n  if comp.LineOrder = riloTopToBottom then compDelta := 0 else compDelta := -comp.RowSize*2;\n  for y := 0 to Height-1 do\n  begin\n    for x := Width-1 downto 0 do\n    begin\n      if PPixel(p)^ <> PPixel(pComp)^ then exit(false);\n      inc(p, sizeof(TPixel));\n      inc(pComp, sizeof(TPixel));\n    end;\n    inc(p, delta);\n    inc(pComp, compDelta);\n  end;\n  result := true;\nend;\n\nfunction TGenericUniversalBitmap.Equals(const comp: TPixel): boolean;\nvar\n  p: PByte;\n  i: Integer;\nbegin\n  p := DataByte;\n  for i := NbPixels-1 downto 0 do\n  begin\n    if PPixel(p)^ <> comp then exit(false);\n    inc(p, sizeof(TPixel));\n  end;\n  result := true;\nend;\n\nfunction TGenericUniversalBitmap.GetDifferenceBounds(\n  ABitmap: TCustomUniversalBitmap): TRect;\nvar\n  minx, miny, maxx, maxy: integer;\n  xb, yb: integer;\n  p, p2:  PPixel;\nbegin\n  if (ABitmap.Width <> Width) or (ABitmap.Height <> Height)\n    or (ABitmap.Colorspace <> Colorspace) then\n  begin\n    result := rect(0,0,Width,Height);\n    if ABitmap.Width > result.Right then result.Right := ABitmap.Width;\n    if ABitmap.Height > result.bottom then result.bottom := ABitmap.Height;\n    exit;\n  end;\n  maxx := -1;\n  maxy := -1;\n  minx := self.Width;\n  miny := self.Height;\n  for yb := 0 to self.Height - 1 do\n  begin\n    p := self.ScanLine[yb];\n    p2 := PPixel(ABitmap.ScanLineByte[yb]);\n    for xb := 0 to self.Width - 1 do\n    begin\n      if p^ <> p2^ then\n      begin\n        if xb < minx then\n          minx := xb;\n        if yb < miny then\n          miny := yb;\n        if xb > maxx then\n          maxx := xb;\n        if yb > maxy then\n          maxy := yb;\n      end;\n      Inc(p);\n      Inc(p2);\n    end;\n  end;\n  if minx > maxx then\n  begin\n    Result.left   := 0;\n    Result.top    := 0;\n    Result.right  := 0;\n    Result.bottom := 0;\n  end\n  else\n  begin\n    Result.left   := minx;\n    Result.top    := miny;\n    Result.right  := maxx + 1;\n    Result.bottom := maxy + 1;\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.SolidBrushIndirect(out\n  ABrush: TUniversalBrush; AColor: Pointer; ADrawMode: TDrawMode);\nbegin\n  SolidBrush(ABrush, PPixel(AColor)^, ADrawMode);\nend;\n\nclass procedure TGenericUniversalBitmap.IdleBrush(out ABrush: TUniversalBrush);\nbegin\n  ABrush.Colorspace := TColorspace;\n  ABrush.InternalInitContext:= nil;\n  PDefaultSolidBrushIndirectFixedData(@ABrush.FixedData)^.PixelSize:= sizeof(TPixel);\n  ABrush.InternalPutNextPixels:= @DefaultSolidBrushIndirectSkipPixels;\n  ABrush.DoesNothing:= true;\nend;\n\nclass procedure TGenericUniversalBitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TPixel; ADrawMode: TDrawMode);\nvar\n  ct: TColorTransparency;\nbegin\n  ct := TColorspace.GetColorTransparency(@AColor);\n  if (ADrawMode in[dmLinearBlend,dmDrawWithTransparency]) and\n   (ct = ctSemiTransparent) then\n     raise exception.Create('Semi-transparent drawing not handled by default brush')\n  else if ADrawMode = dmXor then\n     raise exception.Create('Xor mode not handled by default brush');\n\n  ABrush.Colorspace := TColorspace;\n  ABrush.InternalInitContext:= nil;\n  PDefaultSolidBrushIndirectFixedData(@ABrush.FixedData)^.PixelSize:= sizeof(TPixel);\n\n  if (ADrawMode <> dmSet) and (ct <> ctFullyOpaque) then\n  begin\n    ABrush.InternalPutNextPixels:= @DefaultSolidBrushIndirectSkipPixels;\n    ABrush.DoesNothing:= true;\n  end\n  else\n  begin\n    PPixel(@PDefaultSolidBrushIndirectFixedData(@ABrush.FixedData)^.Color)^ := AColor;\n    ABrush.InternalPutNextPixels:= @DefaultSolidBrushIndirectSetPixels\n  end;\nend;\n\nfunction TGenericUniversalBitmap.CreateBrushTexture(ABrushStyle: TBrushStyle;\n  APatternColor, ABackgroundColor: TPixel; AWidth: integer; AHeight: integer;\n  APenWidth: single): TCustomUniversalBitmap;\nvar\n  b: TUniversalBrush;\nbegin\n  result := InternalNew;\n  result.SetSize(AWidth,AHeight);\n  if ABrushStyle=bsClear then\n    result.FillTransparent\n  else\n  begin\n    SolidBrush(b, ABackgroundColor, dmSet);\n    result.Fill(b);\n    SolidBrush(b, APatternColor,dmDrawWithTransparency);\n    if ABrushStyle in[bsDiagCross,bsBDiagonal] then\n    begin\n      result.DrawLineAntialias(-1,AHeight,AWidth,-1, b,APenWidth);\n      result.DrawLineAntialias(-1-APenWidth,0+APenWidth,0+APenWidth,-1-APenWidth, b,APenWidth);\n      result.DrawLineAntialias(AWidth-1-APenWidth,AHeight+APenWidth,AWidth+APenWidth,AHeight-1-APenWidth, b,APenWidth);\n    end;\n    if ABrushStyle in[bsDiagCross,bsFDiagonal] then\n    begin\n      result.DrawLineAntialias(-1,-1,AWidth,AHeight, b,APenWidth);\n      result.DrawLineAntialias(AWidth-1-APenWidth,-1-APenWidth,AWidth+APenWidth,0+APenWidth, b,APenWidth);\n      result.DrawLineAntialias(-1-APenWidth,AHeight-1-APenWidth,0+APenWidth,AHeight+APenWidth, b,APenWidth);\n    end;\n    if ABrushStyle in[bsHorizontal,bsCross] then\n      result.DrawLineAntialias(-1,AHeight div 2,AWidth,AHeight div 2, b,APenWidth);\n    if ABrushStyle in[bsVertical,bsCross] then\n      result.DrawLineAntialias(AWidth div 2,-1,AWidth div 2,AHeight, b,APenWidth);\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.SetPixelIndirect(x, y: int32or64;\n  AColor: pointer);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  (GetScanlineFast(y)+x)^ := PPixel(AColor)^;\n  InvalidateBitmap;\nend;\n\nprocedure TGenericUniversalBitmap.GetPixelIndirect(x, y: int32or64;\n  AColor: pointer);\nbegin\n  if (x < 0) or (x >= FWidth) or (y < 0) or (y >= FHeight) then //it is possible to read pixels outside of the cliprect\n    AssignTransparentPixel(AColor^) else\n  begin\n    LoadFromBitmapIfNeeded;\n    PPixel(AColor)^ := (GetScanlineFast(y)+x)^;\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.GetPixelCycleIndirect(x, y: int32or64;\n  AColor: pointer);\nbegin\n  if (Width = 0) or (Height = 0) then AssignTransparentPixel(AColor^) else\n  begin\n    LoadFromBitmapIfNeeded;\n    PPixel(AColor)^ := (GetScanlineFast(PositiveMod(y, Height)) + PositiveMod(x, Width))^;\n  end;\nend;\n\nprocedure TGenericUniversalBitmap.SetPixel(x, y: int32or64; const AColor: TPixel);\nbegin\n  if not PtInClipRect(x,y) then exit;\n  LoadFromBitmapIfNeeded;\n  (GetScanlineFast(y)+x)^ := AColor;\n  InvalidateBitmap;\nend;\n\nfunction TGenericUniversalBitmap.GetPixel(x, y: int32or64): TPixel;\nbegin\n  GetPixelIndirect(x,y, @result);\nend;\n\nfunction TGenericUniversalBitmap.GetPixelCycle(x, y: int32or64): TPixel;\nbegin\n  GetPixelCycleIndirect(x,y, @result);\nend;\n\nprocedure TGenericUniversalBitmap.Fill(const AColor: TPixel);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, dmSet);\n  Fill(b);\nend;\n\nprocedure TGenericUniversalBitmap.Fill(const AColor: TPixel; AMode : TDrawMode; AAlpha : Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  Fill(b, AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.ReplaceColor(const ABefore, AAfter: TPixel);\nvar\n  p: PPixel;\n  n: integer;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if p^ = ABefore then p^ := AAfter;\n    Inc(p);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TGenericUniversalBitmap.ReplaceColor(ARect: TRect;\n  const ABefore,AAfter: TPixel);\nvar\n  p: PPixel;\n  n,w,yb: integer;\nbegin\n  if not CheckClippedRectBounds(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom) then exit;\n  LoadFromBitmapIfNeeded;\n  w := ARect.Width-1;\n  for yb := ARect.Top to ARect.Bottom-1 do\n  begin\n    p := GetScanlineFast(yb)+ARect.Left;\n    for n := w downto 0 do\n    begin\n      if p^ = ABefore then p^ := AAfter;\n      Inc(p);\n    end;\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TGenericUniversalBitmap.ReplaceTransparent(const AAfter: TPixel);\nvar before: TPixel;\nbegin\n  AssignTransparentPixel(before);\n  ReplaceColor(before, AAfter);\nend;\n\nprocedure TGenericUniversalBitmap.ReplaceTransparent(ARect: TRect;\n  const AAfter: TPixel);\nvar before: TPixel;\nbegin\n  AssignTransparentPixel(before);\n  ReplaceColor(ARect, before, AAfter);\nend;\n\nprocedure TGenericUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; const AColor: TPixel);\nbegin\n  FillMask(x,y, AMask, AColor, dmDrawWithTransparency);\nend;\n\nprocedure TGenericUniversalBitmap.FillMask(x, y: integer;\n  AMask: TCustomUniversalBitmap; const AColor: TPixel; ADrawMode: TDrawMode);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  FillMask(x,y, AMask, b);\nend;\n\nprocedure TGenericUniversalBitmap.FillRect(ALeft, ATop, ARight,\n  ABottom: integer; const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  FillRect(ALeft,ATop,ARight,ABottom, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillRect(const ARect: TRect;\n  const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  FillRect(ARect, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawCheckers(ARect: TRect; const AColorEven,\n  AColorOdd: TPixel; AGridWidth: integer; AGridHeight: integer; ADrawMode: TDrawMode);\nvar\n  bEven, bOdd: TUniversalBrush;\nbegin\n  SolidBrush(bEven, AColorEven, ADrawMode);\n  SolidBrush(bOdd, AColorOdd, ADrawMode);\n  DrawCheckers(ARect, bEven, bOdd, AGridWidth, AGridHeight);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPixel(x, y: Int32or64;\n  const AColor: TPixel);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, dmDrawWithTransparency);\n  DrawPixel(x,y, b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPixel(x, y: Int32or64;\n  const AColor: TPixel; ADrawMode: TDrawMode);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  DrawPixel(x,y, b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPixel(x, y: Int32or64;\n  const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  DrawPixel(x,y, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPixelF(x, y: single;\n  const AColor: TPixel; ADrawMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, ADrawMode);\n  DrawPixelF(x,y, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.SetHorizLine(x, y, x2: int32or64;\n  const AColor: TPixel);\nvar\n  pScan: PByte;\nbegin\n  if not CheckHorizLineBounds(x,y,x2) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  InternalSetPixels(@AColor, pScan, sizeof(TPixel), x2-x+1);\n  InvalidateBitmap;\nend;\n\nprocedure TGenericUniversalBitmap.HorizLine(x, y, x2: int32or64;\n  const AColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  HorizLine(x,y,x2, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.SetVertLine(x, y, y2: int32or64;\n  const AColor: TPixel);\nvar\n  pScan: PByte;\n  delta: PtrInt;\n  yb: Int32or64;\nbegin\n  if not CheckVertLineBounds(x,y,y2) then exit;\n  LoadFromBitmapIfNeeded;\n  pScan := GetPixelAddress(x,y);\n  if LineOrder = riloTopToBottom then delta := RowSize else delta := -rowSize;\n  for yb := y to y2 do\n  begin\n    PPixel(pScan)^ := AColor;\n    inc(pScan, delta);\n  end;\n  InvalidateBitmap;\nend;\n\nprocedure TGenericUniversalBitmap.VertLine(x, y, y2: int32or64;\n  const AColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  VertLine(x,y,y2, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLine(x1, y1, x2, y2: integer;\n  const AColor: TPixel; ADrawLastPixel: boolean; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  DrawLine(x1,y1,x2,y2, b,ADrawLastPixel,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const AColor: TPixel; ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AntialiasingDrawMode);\n  DrawLineAntialias(x1,y1,x2,y2, b,ADrawLastPixel,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const AColor1, AColor2: TPixel; ADashLen: integer;\n  ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b1, b2: TUniversalBrush;\nbegin\n  SolidBrush(b1, AColor1, AntialiasingDrawMode);\n  SolidBrush(b2, AColor2, AntialiasingDrawMode);\n  DrawLineAntialias(x1,y1,x2,y2, b1,b2, ADashLen, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: integer;\n  const AColor1, AColor2: TPixel; ADashLen: integer;\n  var ADashPos: integer; ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b1, b2: TUniversalBrush;\nbegin\n  SolidBrush(b1, AColor1, AntialiasingDrawMode);\n  SolidBrush(b2, AColor2, AntialiasingDrawMode);\n  DrawLineAntialias(x1,y1,x2,y2, b1,b2, ADashLen,ADashPos, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLine(const points: array of TPoint;\n  const AColor: TPixel; ADrawLastPixel: boolean; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  DrawPolyLine(points, b, ADrawLastPixel, AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLineAntialias(\n  const points: array of TPoint; const AColor: TPixel;\n  ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AntialiasingDrawMode);\n  DrawPolyLineAntialias(points, b,ADrawLastPixel,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLineAntialias(\n  const points: array of TPoint; const AColor1, AColor2: TPixel;\n  ADashLen: integer; ADrawLastPixel: boolean; AAlpha: Word);\nvar\n  b1, b2: TUniversalBrush;\nbegin\n  SolidBrush(b1, AColor1, AntialiasingDrawMode);\n  SolidBrush(b2, AColor2, AntialiasingDrawMode);\n  DrawPolyLineAntialias(points, b1,b2,ADashLen, ADrawLastPixel,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolygon(const points: array of TPoint;\n  const AColor: TPixel; AMode : TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  DrawPolygon(points, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolygonAntialias(\n  const points: array of TPoint; const AColor: TPixel; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AntialiasingDrawMode);\n  DrawPolygonAntialias(points, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolygonAntialias(\n  const points: array of TPoint; const AColor1, AColor2: TPixel;\n  ADashLen: integer; AAlpha: Word);\nvar\n  b1, b2: TUniversalBrush;\nbegin\n  SolidBrush(b1, AColor1, AntialiasingDrawMode);\n  SolidBrush(b2, AColor2, AntialiasingDrawMode);\n  DrawPolygonAntialias(points, b1,b2,ADashLen, AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPathAliased(APath: IBGRAPath;\n  const AColor: TPixel; AMode: TDrawMode; APixelCenteredCoordinates: boolean;\n  AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor,AMode);\n  DrawPathAliased(APath, b,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const AColor: TPixel; AMode: TDrawMode;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor,AMode);\n  DrawPathAliased(APath,AMatrix, b,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.Rectangle(x, y, x2, y2: integer;\n  const AColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, AColor, AMode);\n  Rectangle(x,y,x2,y2, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.Rectangle(x, y, x2, y2: integer;\n  const ABorderColor, AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  bBorder,bFill: TUniversalBrush;\nbegin\n  SolidBrush(bBorder, ABorderColor, AMode);\n  SolidBrush(bFill, AFillColor, AMode);\n  Rectangle(x,y,x2,y2, bBorder,bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.Rectangle(const ARect: TRect;\n  const AColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nbegin\n  Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom, AColor,AMode,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.Rectangle(const ARect: TRect;\n  const ABorderColor, AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nbegin\n  Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom, ABorderColor,AFillColor,AMode,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.RoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const ABorderColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, ABorderColor,AMode);\n  RoundRect(X1,Y1,X2,Y2,DX,DY, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.RoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const ABorderColor, AFillColor: TPixel; AMode: TDrawMode;\n  AAlpha: Word);\nvar\n  bBorder, bFill: TUniversalBrush;\nbegin\n  SolidBrush(bBorder, ABorderColor,AMode);\n  SolidBrush(bFill, AFillColor,AMode);\n  RoundRect(X1,Y1,X2,Y2,DX,DY, bBorder,bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillRoundRect(X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillRoundRect(X1,Y1,X2,Y2,DX,DY, bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.EllipseInRect(ARect: TRect;\n  const ABorderColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b, ABorderColor,AMode);\n  EllipseInRect(ARect, b,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.EllipseInRect(ARect: TRect;\n  const ABorderColor, AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  bBorder, bFill: TUniversalBrush;\nbegin\n  SolidBrush(bBorder, ABorderColor,AMode);\n  SolidBrush(bFill, AFillColor,AMode);\n  EllipseInRect(ARect, bBorder,bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillEllipseInRect(ARect: TRect;\n  const AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillEllipseInRect(ARect, bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillShape(AShape: TBGRACustomFillInfo;\n  const AFillColor: TPixel; AMode: TDrawMode; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillShape(AShape, bFill,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillPoly(const APoints: array of TPointF;\n  const AFillColor: TPixel; AMode: TDrawMode;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillPoly(APoints,bFill,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  const AFillColor: TPixel; AMode: TDrawMode;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillPathAliased(APath,bFill,APixelCenteredCoordinates,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.FillPathAliased(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const AFillColor: TPixel; AMode: TDrawMode;\n  APixelCenteredCoordinates: boolean; AAlpha: Word);\nvar\n  bFill: TUniversalBrush;\nbegin\n  SolidBrush(bFill, AFillColor,AMode);\n  FillPathAliased(APath,AMatrix, bFill,APixelCenteredCoordinates,AAlpha);\nend;\n\nfunction TGenericUniversalBitmap.GetPixelAddress(x, y: integer): PByte;\nbegin\n  if FLineOrder = riloBottomToTop then y := FHeight - 1 - y;\n  result := FDataByte + FRowSize * y + IntPtr(x)*sizeof(TPixel);\nend;\n\nprocedure TGenericUniversalBitmap.FillPolyAntialias(\n  const APoints: array of TPointF; const AColor: TPixel;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillPolyAntialias(APoints, b, APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.FillEllipseAntialias(x, y, rx, ry: single;\n  const AColor: TPixel);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillEllipseAntialias(x,y,rx,ry, b);\nend;\n\nprocedure TGenericUniversalBitmap.FillEllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; const AColor: TPixel);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  {$PUSH}{$R-}\n  FillEllipseAntialias(AOrigin, AXAxis, AYAxis, b);\n  {$POP}\nend;\n\nprocedure TGenericUniversalBitmap.FillPath(APath: IBGRAPath;\n  const AColor: TPixel; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillPath(APath, b, APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.FillPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const AColor: TPixel;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillPath(APath,AMatrix, b, APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.FillRectAntialias(x, y, x2, y2: single;\n  const AColor: TPixel; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillRectAntialias(x,y,x2,y2,b,APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.FillRectAntialias(const ARectF: TRectF;\n  const AColor: TPixel; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillRectAntialias(ARectF,b,APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.FillRoundRectAntialias(x, y, x2, y2, rx,\n  ry: single; const AColor: TPixel; AOptions: TRoundRectangleOptions;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  FillRoundRectAntialias(x,y,x2,y2, rx,ry, b, AOptions, APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  const AColor: TPixel; APenWidth: single);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\n  p: TBGRACustomPenStroker;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  c := AColor;\n  p := GetInternalPen;\n  FillPolyAntialias(p.ComputePolyline([PointF(x1,y1),PointF(x2,y2)],APenWidth,c), b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawLineAntialias(x1, y1, x2, y2: single;\n  const AColor: TPixel; APenWidth: single; AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\n  p: TBGRACustomPenStroker;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  c := AColor;\n  p := GetInternalPen;\n  FillPolyAntialias(p.ComputePolyline([PointF(x1,y1),PointF(x2,y2)],APenWidth,c,AClosedCap), b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; const AColor: TPixel; APenWidth: single);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\n  p: TBGRACustomPenStroker;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  c := AColor;\n  p := GetInternalPen;\n  FillPolyAntialias(p.ComputePolyline(APoints,APenWidth,c),b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLineAntialias(\n  const APoints: array of TPointF; const AColor: TPixel; APenWidth: single;\n  AClosedCap: boolean);\nvar\n  b: TUniversalBrush;\n  c: TBGRAPixel;\n  p: TBGRACustomPenStroker;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  c := AColor;\n  p := GetInternalPen;\n  FillPolyAntialias(p.ComputePolyline(APoints,APenWidth,c,AClosedCap),b);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolyLineAntialiasAutocycle(\n  const APoints: array of TPointF; const AColor: TPixel; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  DrawPolyLineAntialiasAutocycle(APoints, b, APenWidth);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPolygonAntialias(\n  const APoints: array of TPointF; const AColor: TPixel; APenWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  DrawPolygonAntialias(APoints, b, APenWidth);\nend;\n\nprocedure TGenericUniversalBitmap.RectangleAntialias(x, y, x2, y2: single;\n  const AColor: TPixel; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  RectangleAntialias(x,y,x2,y2, b, AWidth);\nend;\n\nprocedure TGenericUniversalBitmap.Ellipse(x, y, rx, ry: single;\n  const AColor: TPixel; AWidth: single; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AMode);\n  Ellipse(x,y,rx,ry, b, AWidth,AAlpha);\nend;\n\nprocedure TGenericUniversalBitmap.Ellipse(const AOrigin, AXAxis, AYAxis: TPointF;\n  const AColor: TPixel; AWidth: single; AMode: TDrawMode; AAlpha: Word);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AMode);\n  {$PUSH}{$R-}\n  Ellipse(AOrigin, AXAxis, AYAxis, b, AWidth,AAlpha);\n  {$POP}\nend;\n\nprocedure TGenericUniversalBitmap.EllipseAntialias(x, y, rx, ry: single;\n  const AColor: TPixel; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  EllipseAntialias(x,y,rx,ry, b, AWidth);\nend;\n\nprocedure TGenericUniversalBitmap.EllipseAntialias(const AOrigin, AXAxis,\n  AYAxis: TPointF; const AColor: TPixel; AWidth: single);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  {$PUSH}{$R-}\n  EllipseAntialias(AOrigin, AXAxis, AYAxis, b, AWidth);\n  {$POP}\nend;\n\nprocedure TGenericUniversalBitmap.DrawPath(APath: IBGRAPath;\n  const AColor: TPixel; AWidth: single; APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  DrawPath(APath, b, AWidth, APixelCenteredCoordinates);\nend;\n\nprocedure TGenericUniversalBitmap.DrawPath(APath: IBGRAPath;\n  const AMatrix: TAffineMatrix; const AColor: TPixel; AWidth: single;\n  APixelCenteredCoordinates: boolean);\nvar\n  b: TUniversalBrush;\nbegin\n  SolidBrush(b,AColor,AntialiasingDrawMode);\n  DrawPath(APath,AMatrix, b, AWidth, APixelCenteredCoordinates);\nend;\n\n{$ENDIF}\n"
  },
  {
    "path": "bgrabitmap/universaldrawer.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Base implementation for drawing on a universal bitmap }\nunit UniversalDrawer;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, FPImage, BGRABitmapTypes, BGRAGraphics, BGRAPen, BGRAArrow;\n\ntype\n  {* Drawer implementation that is colorspace agnostic }\n\n  { TUniversalDrawer }\n\n  TUniversalDrawer = class(TCustomUniversalDrawer)\n\n    class function GetMaxColorChannelDepth(ADest: TCustomUniversalBitmap): byte;\n\n    class function CreateBGRAImageReader(ASource: TCustomUniversalBitmap;\n                                         const AFilenameUTF8: string;\n                                         var AFormat: TBGRAImageFormat): TFPCustomImageReader;\n\n    class function CreateBGRAImageWriter(ASource: TCustomUniversalBitmap;\n                                         const AFilenameUTF8: string;\n                                         var AFormat: TBGRAImageFormat): TFPCustomImageWriter; overload;\n    class function CreateBGRAImageWriter(ASource: TCustomUniversalBitmap;\n                                         AFormat: TBGRAImageFormat): TFPCustomImageWriter; overload;\n\n    {==== Load and save files ====}\n\n    //there are UTF8 functions that are different from standard function as those\n    //depend on TFPCustomImage that does not clearly handle UTF8\n\n    {** Load image from a file. ''filename'' is an ANSI string }\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename: string); overload; override;\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename: string; AOptions: TBGRALoadingOptions); overload; override;\n    {** Load image from a file with the specified image reader. ''filename'' is an ANSI string }\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename:String; AHandler:TFPCustomImageReader); overload; override;\n    class procedure LoadFromFile(ADest: TCustomUniversalBitmap; const AFilename:String; AHandler:TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; override;\n    {** Load image from a file. ''filename'' is an UTF8 string }\n    class procedure LoadFromFileUTF8(ADest: TCustomUniversalBitmap; const AFilenameUTF8: string; AOptions: TBGRALoadingOptions = []); overload; override;\n    {** Load image from a file with the specified image reader. ''filename'' is an UTF8 string }\n    class procedure LoadFromFileUTF8(ADest: TCustomUniversalBitmap; const AFilenameUTF8: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions = []); overload; override;\n    {** Load image from a stream. Format is detected automatically }\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream); overload; override;\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AOptions: TBGRALoadingOptions); overload; override;\n    {** Load image from a stream. The specified image reader is used }\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AHandler: TFPCustomImageReader); overload; override;\n    class procedure LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; override;\n    {** Load image from an embedded Lazarus resource. Format is detected automatically }\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string); overload; override;\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AOptions: TBGRALoadingOptions); overload; override;\n    {** Load image from an embedded Lazarus resource. The specified image reader is used }\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AHandler: TFPCustomImageReader); overload; override;\n    class procedure LoadFromResource(ADest: TCustomUniversalBitmap; AFilename: string; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions); overload; override;\n\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string); overload; override;\n    {** Save image to a file with the specified image writer. ''filename'' is an ANSI string }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string; AHandler:TFPCustomImageWriter); overload; override;\n    {** Save image to a file in the specified image format }\n    class procedure SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string; AFormat: TBGRAImageFormat); overload; override;\n    {** Save image to a file. The format is guessed from the file extension. ''filename'' is an ANSI string }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string); overload; override;\n    {** Save image to a file with the specified image writer. ''filename'' is an UTF8 string }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string; AHandler:TFPCustomImageWriter); overload; override;\n    {** Save image to a file in the specified image format }\n    class procedure SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string; AFormat: TBGRAImageFormat); overload; override;\n\n    {** Save image to a stream in the specified image format }\n    class procedure SaveToStreamAs(ASource: TCustomUniversalBitmap; AStream: TStream; AFormat: TBGRAImageFormat); override;\n    {** Save image to a stream in PNG format }\n    class procedure SaveToStreamAsPng(ASource: TCustomUniversalBitmap; AStream: TStream); override;\n\n    {==== Pixelwise drawing ====}\n\n    class function CheckRectBounds(var x,y,x2,y2: integer; minsize: integer): boolean;\n    class function CheckAntialiasRectBounds(var x, y, x2, y2: single; w: single): boolean;\n\n    {** Draws an aliased line from (x1,y1) to (x2,y2) using Bresenham's algorithm.\n        ''DrawLastPixel'' specifies if (x2,y2) must be drawn. }\n    class procedure DrawLine(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word = 65535); override;\n    {** Draws an antialiased line from (x1,y1) to (x2,y2) using an improved version of Bresenham's algorithm\n        ''c'' specifies the color. ''DrawLastPixel'' specifies if (x2,y2) must be drawn }\n    class procedure DrawLineAntialias(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; override;\n    {** Draws an antialiased line with two colors ''c1'' and ''c2'' as dashes of length ''dashLen''.\n        ''DashPos'' can be used to specify the start dash position and to retrieve the dash position at the end\n        of the line, in order to draw a polyline with consistent dashes }\n    class procedure DrawLineAntialias(ADest: TCustomUniversalBitmap; x1, y1, x2, y2: integer; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; var DashPos: integer; DrawLastPixel: boolean; AAlpha: Word = 65535); override;\n\n    class procedure DrawPolyLine(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word = 65535); override;\n    class procedure DrawPolyLineAntialias(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; override;\n    class procedure DrawPolyLineAntialias(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; DrawLastPixel: boolean; AAlpha: Word = 65535); overload; override;\n\n    class procedure DrawPolygon(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535); override;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; override;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush1, ABrush2: TUniversalBrush; ADashLen: integer; AAlpha: Word = 65535); overload; override;\n\n    {** Draw the border of a rectangle }\n    class procedure Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer; const ABrush: TUniversalBrush; AAlpha: Word = 65535); overload; override;\n    {** Draw a filled rectangle with a border }\n    class procedure Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; override;\n\n    {$IFNDEF BGRABITMAP_CORE}\n    class procedure RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word = 65535); overload; override;\n    class procedure RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const ABorderBrush: TUniversalBrush; AAlpha: Word = 65535); overload; override;\n    class procedure FillRoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer; const AFillBrush: TUniversalBrush; AAlpha: Word = 65535); override;\n    {$ENDIF}\n\n    class procedure FillShape(ADest: TCustomUniversalBitmap; AShape: TBGRACustomFillInfo; AFillMode: TFillMode; ABrush: TUniversalBrush; AAlpha: Word = 65535); override;\n    class procedure FillPoly(ADest: TCustomUniversalBitmap; const APoints: array of TPointF; AFillMode: TFillMode; ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean = true; AAlpha: Word = 65535); override;\n\n    {==== Using pen ====}\n    class function CreatePenStroker: TBGRACustomPenStroker; override;\n    class function CreateArrow: TBGRACustomArrow; override;\n\n    class procedure RectangleAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, x2, y2: single;\n                       const ABrush: TUniversalBrush; AWidth: single); override;\n    class procedure DrawPolygonAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker;\n                       const APoints: array of TPointF; const ABrush: TUniversalBrush; AWidth: single); overload; override;\n\n    class procedure Ellipse(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, rx, ry: single;\n        const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word=65535); overload; override;\n    class procedure Ellipse(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; const AOrigin, AXAxis, AYAxis: TPointF;\n        const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word=65535); overload; override;\n    class procedure EllipseAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, rx, ry: single;\n        const ABrush: TUniversalBrush; AWidth: single); overload; override;\n    class procedure EllipseAntialias(ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; const AOrigin, AXAxis, AYAxis: TPointF;\n        const ABrush: TUniversalBrush; AWidth: single); overload; override;\n\n    {==== Filling ====}\n    class procedure FillRectAntialias(ADest: TCustomUniversalBitmap;\n                    x, y, x2, y2: single; const ABrush: TUniversalBrush;\n                    APixelCenteredCoordinates: boolean = true); override;\n    class procedure FillRoundRectAntialias(ADest: TCustomUniversalBitmap;\n                    x,y,x2,y2, rx,ry: single; const ABrush: TUniversalBrush;\n                    AOptions: TRoundRectangleOptions = []; APixelCenteredCoordinates: boolean = true); override;\n    class procedure FillShapeAntialias(ADest: TCustomUniversalBitmap;\n                    AShape: TBGRACustomFillInfo; AFillMode: TFillMode;\n                    ABrush: TUniversalBrush); override;\n    class procedure FillPolyAntialias(ADest: TCustomUniversalBitmap;\n                    const APoints: array of TPointF; AFillMode: TFillMode;\n                    ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean); override;\n    class procedure FillEllipseAntialias(ADest: TCustomUniversalBitmap;\n                    x, y, rx, ry: single; const ABrush: TUniversalBrush); overload; override;\n    class procedure FillEllipseAntialias(ADest: TCustomUniversalBitmap;\n                    const AOrigin, AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush); overload; override;\n\n    {$IFNDEF BGRABITMAP_CORE}\n    //filters\n    class procedure FilterBlurRadial(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              radiusX, radiusY: single; blurType: TRadialBlurType;\n                              ADest: TCustomUniversalBitmap); override;\n    class procedure FilterBlurMotion(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              distance: single; angle: single; oriented: boolean;\n                              ADest: TCustomUniversalBitmap); override;\n    class procedure FilterCustomBlur(ASource: TCustomUniversalBitmap; const ABounds: TRect;\n                              mask: TCustomUniversalBitmap;\n                              ADest: TCustomUniversalBitmap); override;\n    {$ENDIF}\n  end;\n\nimplementation\n\nuses Math, BGRAPolygon, BGRAPath, BGRAFillInfo, BGRAUTF8, BGRAReadBMP, BGRAWritePNG, FPWritePNM\n  {$IFNDEF BGRABITMAP_CORE},\n  BGRAReadJpeg,BGRAPolygonAliased, BGRAFilterBlur\n  {$ENDIF};\n\n{ TUniversalDrawer }\n\nclass function TUniversalDrawer.GetMaxColorChannelDepth(ADest: TCustomUniversalBitmap): byte;\nvar\n  idxAlpha, i: Integer;\n  bits: Byte;\nbegin\n  result := 0;\n  idxAlpha := ADest.Colorspace.IndexOfAlphaChannel;\n  for i := 0 to ADest.Colorspace.GetChannelCount-1 do\n    if i <> idxAlpha then\n    begin\n      bits := ADest.Colorspace.GetChannelBitDepth(i);\n      if bits > result then result := bits;\n    end;\nend;\n\nclass function TUniversalDrawer.CreateBGRAImageReader(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  var AFormat: TBGRAImageFormat): TFPCustomImageReader;\nbegin\n  AFormat := DetectFileFormat(ExtractFileExt(AFilenameUTF8));\n  Result := BGRABitmapTypes.CreateBGRAImageReader(AFormat);\nend;\n\nclass function TUniversalDrawer.CreateBGRAImageWriter(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  var AFormat: TBGRAImageFormat): TFPCustomImageWriter;\nvar\n   ext: String;\n\nbegin\n  AFormat := SuggestImageFormat(AFilenameUTF8);\n  if (AFormat = ifXPixMap) and (ASource.NbPixels > 32768) then //xpm is slow so avoid big images\n    raise exception.Create('Image is too big to be saved as XPM');\n  Result := BGRABitmapTypes.CreateBGRAImageWriter(AFormat, ASource.HasTransparentPixels);\n  if Result is TBGRAWriterPNG then\n  begin\n     if GetMaxColorChannelDepth(ASource) > 8 then TBGRAWriterPNG(Result).WordSized := true;\n  end;\n  if Result is TFPWriterPNM then\n  begin\n    ext := LowerCase(ExtractFileExt(AFilenameUTF8));\n    if ext = '.pbm' then TFPWriterPNM(Result).ColorDepth:= pcdBlackWhite else\n    if ext = '.pgm' then TFPWriterPNM(Result).ColorDepth:= pcdGrayscale else\n    if ext = '.ppm' then TFPWriterPNM(Result).ColorDepth:= pcdRGB;\n  end;\nend;\n\nclass function TUniversalDrawer.CreateBGRAImageWriter(ASource: TCustomUniversalBitmap; AFormat: TBGRAImageFormat): TFPCustomImageWriter;\nbegin\n  if (AFormat = ifXPixMap) and (ASource.NbPixels > 32768) then //xpm is slow so avoid big images\n    raise exception.Create('Image is too big to be saved as XPM');\n  Result := BGRABitmapTypes.CreateBGRAImageWriter(AFormat, ASource.HasTransparentPixels);\n  if Result is TBGRAWriterPNG then\n  begin\n     if GetMaxColorChannelDepth(ASource) > 8 then TBGRAWriterPNG(Result).WordSized := true;\n  end;\nend;\n\nclass procedure TUniversalDrawer.LoadFromFile(ADest: TCustomUniversalBitmap;\n  const AFilename: string);\nbegin\n  LoadFromFileUTF8(ADest, SysToUtf8(AFilename));\nend;\n\nclass procedure TUniversalDrawer.LoadFromFile(ADest: TCustomUniversalBitmap;\n  const AFilename: string; AOptions: TBGRALoadingOptions);\nbegin\n  LoadFromFileUTF8(ADest, SysToUtf8(AFilename), AOptions);\nend;\n\nclass procedure TUniversalDrawer.LoadFromFile(ADest: TCustomUniversalBitmap;\n  const AFilename: String; AHandler: TFPCustomImageReader);\nbegin\n  LoadFromFileUTF8(ADest, SysToUtf8(AFilename), AHandler);\nend;\n\nclass procedure TUniversalDrawer.LoadFromFile(ADest: TCustomUniversalBitmap;\n  const AFilename: String; AHandler: TFPCustomImageReader;\n  AOptions: TBGRALoadingOptions);\nbegin\n  LoadFromFileUTF8(ADest, SysToUtf8(AFilename), AHandler, AOptions);\nend;\n\nclass procedure TUniversalDrawer.LoadFromFileUTF8(\n  ADest: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  AOptions: TBGRALoadingOptions);\nvar\n  stream: TStream;\n  format: TBGRAImageFormat;\n  reader: TFPCustomImageReader;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8, fmOpenRead or fmShareDenyWrite);\n  try\n    format := DetectFileFormat(Stream, ExtractFileExt(AFilenameUTF8));\n    reader := BGRABitmapTypes.CreateBGRAImageReader(format);\n    try\n      ADest.LoadFromStream(stream, reader, AOptions);\n    finally\n      reader.Free;\n    end;\n  finally\n    stream.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.LoadFromFileUTF8(\n  ADest: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nvar\n  stream: TStream;\nbegin\n  stream := TFileStreamUTF8.Create(AFilenameUTF8, fmOpenRead or fmShareDenyWrite);\n  try\n    ADest.LoadFromStream(stream, AHandler, AOptions);\n  finally\n    stream.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.LoadFromStream(ADest: TCustomUniversalBitmap;\n  AStream: TStream);\nbegin\n  ADest.LoadFromStream(AStream, [loKeepTransparentRGB]);\nend;\n\nclass procedure TUniversalDrawer.LoadFromStream(ADest: TCustomUniversalBitmap;\n  AStream: TStream; AOptions: TBGRALoadingOptions);\nvar\n  format: TBGRAImageFormat;\n  reader: TFPCustomImageReader;\nbegin\n  format := DetectFileFormat(AStream);\n  reader := BGRABitmapTypes.CreateBGRAImageReader(format);\n  try\n    ADest.LoadFromStream(AStream, reader, AOptions);\n  finally\n    reader.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.LoadFromStream(ADest: TCustomUniversalBitmap;\n  AStream: TStream; AHandler: TFPCustomImageReader);\nbegin\n  ADest.LoadFromStream(AStream, AHandler, [loKeepTransparentRGB]);\nend;\n\nclass procedure TUniversalDrawer.LoadFromStream(ADest: TCustomUniversalBitmap; AStream: TStream; AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nvar OldBmpOption: TBMPTransparencyOption;\n  {$IFNDEF BGRABITMAP_CORE}OldJpegPerf: TJPEGReadPerformance;{$ENDIF}\nbegin\n  if (loBmpAutoOpaque in AOptions) and (AHandler is TBGRAReaderBMP) then\n  begin\n    OldBmpOption := TBGRAReaderBMP(AHandler).TransparencyOption;\n    TBGRAReaderBMP(AHandler).TransparencyOption := toAuto;\n    TFPCustomImage(ADest).LoadFromStream(AStream, AHandler);\n    TBGRAReaderBMP(AHandler).TransparencyOption := OldBmpOption;\n  end else\n  if loJpegQuick in AOptions then\n  begin\n    {$IFDEF BGRABITMAP_CORE}\n    raise exception.Create('loJpegQuick not supported in core version. Create and configure the image reader.');\n    {$ELSE}\n    if AHandler is TBGRAReaderJpeg then\n    begin\n      OldJpegPerf := TBGRAReaderJpeg(AHandler).Performance;\n      TBGRAReaderJpeg(AHandler).Performance := jpBestSpeed;\n      TFPCustomImage(ADest).LoadFromStream(AStream, AHandler);\n      TBGRAReaderJpeg(AHandler).Performance := OldJpegPerf;\n    end;\n    {$ENDIF}\n  end else\n    TFPCustomImage(ADest).LoadFromStream(AStream, AHandler);\n  if not (loKeepTransparentRGB in AOptions) then\n    ADest.ClearTransparentPixels;\nend;\n\nclass procedure TUniversalDrawer.LoadFromResource(\n  ADest: TCustomUniversalBitmap; AFilename: string);\nbegin\n  LoadFromResource(ADest, AFilename, [loKeepTransparentRGB]);\nend;\n\nclass procedure TUniversalDrawer.LoadFromResource(\n  ADest: TCustomUniversalBitmap; AFilename: string;\n  AOptions: TBGRALoadingOptions);\nvar\n  stream: TStream;\n  format: TBGRAImageFormat;\n  reader: TFPCustomImageReader;\n  ext: String;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    ext := Uppercase(ExtractFileExt(AFilename));\n    if (ext = '.BMP') and BGRAResource.IsWinResource(AFilename) then\n    begin\n      reader := TBGRAReaderBMP.Create;\n      TBGRAReaderBMP(reader).Subformat := bsfHeaderless;\n    end else\n    begin\n      format := DetectFileFormat(stream, ext);\n      reader := BGRABitmapTypes.CreateBGRAImageReader(format);\n    end;\n    try\n      ADest.LoadFromStream(stream, reader, AOptions);\n    finally\n      reader.Free;\n    end;\n  finally\n    stream.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.LoadFromResource(\n  ADest: TCustomUniversalBitmap; AFilename: string;\n  AHandler: TFPCustomImageReader);\nbegin\n  LoadFromResource(ADest, AFilename, AHandler, [loKeepTransparentRGB]);\nend;\n\nclass procedure TUniversalDrawer.LoadFromResource(\n  ADest: TCustomUniversalBitmap; AFilename: string;\n  AHandler: TFPCustomImageReader; AOptions: TBGRALoadingOptions);\nvar\n  stream: TStream;\nbegin\n  stream := BGRAResource.GetResourceStream(AFilename);\n  try\n    ADest.LoadFromStream(stream, AHandler, AOptions);\n  finally\n    stream.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.SaveToFile(ASource: TCustomUniversalBitmap;\n  const AFilename: string);\nbegin\n  SaveToFileUTF8(ASource, SysToUtf8(AFilename));\nend;\n\nclass procedure TUniversalDrawer.SaveToFile(ASource: TCustomUniversalBitmap;\n  const AFilename: string; AHandler: TFPCustomImageWriter);\nbegin\n  SaveToFileUTF8(ASource, SysToUtf8(AFilename), AHandler);\nend;\n\nclass procedure TUniversalDrawer.SaveToFile(ASource: TCustomUniversalBitmap; const AFilename: string;\n  AFormat: TBGRAImageFormat);\nbegin\n  SaveToFileUTF8(ASource, SysToUtf8(AFilename), AFormat);\nend;\n\nclass procedure TUniversalDrawer.SaveToFileUTF8(\n  ASource: TCustomUniversalBitmap; const AFilenameUTF8: string);\nvar\n  writer: TFPCustomImageWriter;\n  format: TBGRAImageFormat;\nbegin\n  writer := CreateBGRAImageWriter(ASource, AFilenameUTF8, format);\n  try\n    SaveToFileUTF8(ASource, AFilenameUTF8, writer);\n  finally\n    writer.free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.SaveToFileUTF8(\n  ASource: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  AHandler: TFPCustomImageWriter);\nvar\n  stream: TFileStreamUTF8;\nbegin\n   stream := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate);\n   try\n     TFPCustomImage(ASource).SaveToStream(stream, AHandler);\n   finally\n     stream.Free;\n   end;\nend;\n\nclass procedure TUniversalDrawer.SaveToFileUTF8(ASource: TCustomUniversalBitmap; const AFilenameUTF8: string;\n  AFormat: TBGRAImageFormat);\nvar\n  stream: TFileStreamUTF8;\nbegin\n   stream := TFileStreamUTF8.Create(AFilenameUTF8, fmCreate);\n   try\n     SaveToStreamAs(ASource, stream, AFormat);\n   finally\n     stream.Free;\n   end;\nend;\n\nclass procedure TUniversalDrawer.SaveToStreamAs(ASource: TCustomUniversalBitmap; AStream: TStream; AFormat: TBGRAImageFormat);\nvar\n   writer: TFPCustomImageWriter;\nbegin\n  writer := CreateBGRAImageWriter(ASource, AFormat);\n  try\n    TFPCustomImage(ASource).SaveToStream(AStream, writer)\n  finally\n    writer.Free;\n  end;\nend;\n\nclass procedure TUniversalDrawer.SaveToStreamAsPng(\n  ASource: TCustomUniversalBitmap; AStream: TStream);\nbegin\n  SaveToStreamAs(ASource, AStream, ifPNG);\nend;\n\nclass function TUniversalDrawer.CheckRectBounds(\n  var x, y, x2, y2: integer; minsize: integer): boolean;\nvar\n  temp: integer;\nbegin\n  //swap coordinates if needed\n  if (x > x2) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (y > y2) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n  result := (x2 - x > minsize) and (y2 - y > minsize);\nend;\n\nclass function TUniversalDrawer.CheckAntialiasRectBounds(var x, y, x2,\n  y2: single; w: single): boolean;\nvar\n  temp: Single;\nbegin\n  if (x > x2) then\n  begin\n    temp := x;\n    x    := x2;\n    x2   := temp;\n  end;\n  if (y > y2) then\n  begin\n    temp := y;\n    y    := y2;\n    y2   := temp;\n  end;\n\n  result := (x2 - x > w) and (y2 - y > w);\nend;\n\nclass procedure TUniversalDrawer.DrawLine(ADest: TCustomUniversalBitmap; x1,\n  y1, x2, y2: integer; const ABrush: TUniversalBrush; DrawLastPixel: boolean;\n  AAlpha: Word);\ntype\n  TDrawPixelProc = procedure(x,y: Int32or64; const ABrush: TUniversalBrush; AAlpha: Word = 65535) of object;\nvar\n  Y, X: integer;\n  DX, DY, SX, SY, E: integer;\n  drawPixelProc: TDrawPixelProc;\n  skip: Boolean;\n  r: TRect;\n  E64: Int64;\nbegin\n  r := ADest.ClipRect;\n  skip := false;\n  if ABrush.DoesNothing or (AAlpha= 0) then skip := true;\n  if (x1 < r.Left) and (x2 < r.Left) then skip := true;\n  if (x1 >= r.Right) and (x2 >= r.Right) then skip := true;\n  if (y1 < r.Top) and (y2 < r.Top) then skip := true;\n  if (y1 >= r.Bottom) and (y2 >= r.Bottom) then skip := true;\n  if skip then exit;\n\n  if (Y1 = Y2) then\n  begin\n    if (X1 = X2) then\n    begin\n      if DrawLastPixel then ADest.DrawPixel(X1, Y1, ABrush, AAlpha);\n    end else\n    begin\n      if not DrawLastPixel then\n      begin\n        if X2 > X1 then dec(X2) else inc(X2);\n      end;\n      ADest.HorizLine(X1,Y1,X2, ABrush, AAlpha);\n    end;\n    Exit;\n  end else\n  if (X1 = X2) then\n  begin\n    if not DrawLastPixel then\n    begin\n      if Y2 > Y1 then dec(Y2) else inc(Y2);\n    end;\n    ADest.VertLine(X1,Y1,Y2, ABrush, AAlpha);\n    Exit;\n  end;\n\n  DX := X2 - X1;\n  DY := Y2 - Y1;\n\n  if DX < 0 then\n  begin\n    SX := -1;\n    DX := -DX;\n  end\n  else SX := 1;\n\n  if DY < 0 then\n  begin\n    SY := -1;\n    DY := -DY;\n  end\n  else SY := 1;\n\n  DX := DX shl 1;\n  DY := DY shl 1;\n\n  drawPixelProc := @ADest.DrawPixel;\n  X := X1;\n  Y := Y1;\n  if DX > DY then\n  begin\n    E := DY - DX shr 1;\n    if (X < r.Left) and (SX > 0) then\n    begin\n      E64 := E+int64(DY)*(r.Left-X)+DX;\n      E := (E64 mod DX)-DX;\n      Inc(Y, (E64 div DX)*SY);\n      X := r.Left;\n    end;\n    if (X >= r.Right) and (SX < 0) then\n    begin\n      E64 := E+int64(DY)*(X-(r.Right-1))+DX;\n      E := (E64 mod DX)-DX;\n      Inc(Y, (E64 div DX)*SY);\n      X := r.Right-1;\n    end;\n    if (X2 < r.Left-1) and (SX < 0) then X2 := r.Left-1;\n    if (X2 > r.Right) and (SX > 0) then X2 := r.Right;\n    while X <> X2 do\n    begin\n      drawPixelProc(X, Y, ABrush, AAlpha);\n      if E >= 0 then\n      begin\n        Inc(Y, SY);\n        Dec(E, DX);\n      end;\n      Inc(X, SX);\n      Inc(E, DY);\n    end;\n  end\n  else\n  begin\n    E := DX - DY shr 1;\n    if (Y < r.Top) and (SY > 0) then\n    begin\n      E64 := E+int64(DX)*(r.Top-Y)+DY;\n      E := (E64 mod DY)-DY;\n      Inc(X, (E64 div DY)*SX);\n      Y := r.Top;\n    end;\n    if (Y >= r.Bottom) and (SY < 0) then\n    begin\n      E64 := E+int64(DX)*(Y-(r.Bottom-1))+DY;\n      E := (E64 mod DY)-DY;\n      Inc(X, (E64 div DY)*SX);\n      Y := r.Bottom-1;\n    end;\n    if (Y2 < r.Top-1) and (SY < 0) then Y2 := r.Top-1;\n    if (Y2 > r.Bottom) and (SY > 0) then Y2 := r.Bottom;\n    while Y <> Y2 do\n    begin\n      drawPixelProc(X, Y, ABrush, AAlpha);\n      if E >= 0 then\n      begin\n        Inc(X, SX);\n        Dec(E, DY);\n      end;\n      Inc(Y, SY);\n      Inc(E, DX);\n    end;\n  end;\n\n  if DrawLastPixel then\n    drawPixelProc(X2, Y2, ABrush, AAlpha);\nend;\n\nclass procedure TUniversalDrawer.DrawLineAntialias(ADest: TCustomUniversalBitmap;\n  x1, y1, x2, y2: integer; const ABrush: TUniversalBrush;\n  DrawLastPixel: boolean; AAlpha: Word = 65535);\nvar\n  dashPos: integer;\nbegin\n  dashPos := 0;\n  DrawLineAntialias(ADest,x1,y1,x2,y2, ABrush,ABrush,$1000000,dashPos,DrawLastPixel,AAlpha);\nend;\n\nclass procedure TUniversalDrawer.DrawLineAntialias(ADest: TCustomUniversalBitmap;\n  x1, y1, x2, y2: integer; const ABrush1, ABrush2: TUniversalBrush;\n  ADashLen: integer; var DashPos: integer; DrawLastPixel: boolean;\n  AAlpha: Word = 65535);\nvar\n  curBrush: PUniversalBrush;\n\n  procedure SkipDash(ACount: integer);\n  begin\n    if ACount = 0 then exit;\n    DashPos := PositiveMod(DashPos+ACount, ADashLen+ADashLen);\n    if DashPos < ADashLen then curBrush := @ABrush1 else curBrush := @ABrush2;\n  end;\n\nvar\n  X, Y, DX, DY, SX, SY, E,count, skipAfter: integer;\n  curAlpha: Word;\n  skip: Boolean;\n  r: TRect;\n  E64: Int64;\nbegin\n  r := ADest.ClipRect;\n  skip := false;\n  if (ABrush1.DoesNothing and ABrush2.DoesNothing) or (AAlpha=0) then skip := true;\n  if (x1 < r.Left) and (x2 < r.Left) then skip := true;\n  if (x1 >= r.Right) and (x2 >= r.Right) then skip := true;\n  if (y1 < r.Top) and (y2 < r.Top) then skip := true;\n  if (y1 >= r.Bottom) and (y2 >= r.Bottom) then skip := true;\n\n  if ADashLen<=0 then ADashLen := 1;\n  if skip then\n  begin\n    count := max(abs(x2-x1),abs(y2-y1));\n    if DrawLastPixel then inc(count);\n    SkipDash(count);\n    exit;\n  end;\n\n  DashPos := PositiveMod(DashPos,ADashLen+ADashLen);\n  if DashPos < ADashLen then curBrush := @ABrush1 else curBrush := @ABrush2;\n\n  if (Y1 = Y2) and (X1 = X2) then\n  begin\n    if DrawLastPixel then\n    begin\n      ADest.DrawPixel(X1, Y1, curBrush^, AAlpha);\n      inc(DashPos);\n      if DashPos = ADashLen + ADashLen then DashPos := 0;\n    end;\n    Exit;\n  end;\n\n  DX := X2 - X1;\n  DY := Y2 - Y1;\n  if DX < 0 then\n  begin\n    SX := -1;\n    DX := -DX;\n  end else SX := 1;\n\n  if DY < 0 then\n  begin\n    SY := -1;\n    DY := -DY;\n  end else SY := 1;\n\n  DX := DX shl 1;\n  DY := DY shl 1;\n  X := X1;\n  Y := Y1;\n  if DX > DY then\n  begin\n    E := 0;\n    if (X < r.Left) and (SX > 0) then\n    begin\n      E64 := E+int64(DY)*(r.Left-X);\n      E := E64 mod DX;\n      Inc(Y, (E64 div DX)*SY);\n      SkipDash(r.Left-X);\n      X := r.Left;\n    end;\n    if (X >= r.Right) and (SX < 0) then\n    begin\n      E64 := E+int64(DY)*(X-(r.Right-1));\n      E := E64 mod DX;\n      Inc(Y, (E64 div DX)*SY);\n      SkipDash(X-(r.Right-1));\n      X := r.Right-1;\n    end;\n    if (X2 < r.Left-1) and (SX < 0) then\n    begin\n      skipAfter := (r.Left-1)-X2;\n      X2 := r.Left-1;\n    end else\n    if (X2 > r.Right) and (SX > 0) then\n    begin\n      skipAfter := X2-r.Right;\n      X2 := r.Right;\n    end else\n      skipAfter := 0;\n    while X <> X2 do\n    begin\n      curAlpha := AAlpha * E div DX;\n      ADest.DrawPixel(X, Y, curBrush^, AAlpha - curAlpha);\n      ADest.DrawPixel(X, Y + SY, curBrush^, curAlpha);\n      Inc(E, DY);\n      if E >= DX then\n      begin\n        Inc(Y, SY);\n        Dec(E, DX);\n      end;\n      Inc(X, SX);\n\n      Inc(DashPos);\n      if DashPos = ADashLen then\n        curBrush := @ABrush2\n      else\n      if DashPos = ADashLen + ADashLen then\n      begin\n        curBrush := @ABrush1;\n        DashPos := 0;\n      end;\n    end;\n  end\n  else\n  begin\n    E := 0;\n    if (Y < r.Top) and (SY > 0) then\n    begin\n      E64 := E+int64(DX)*(r.Top-Y);\n      E := E64 mod DY;\n      Inc(X, (E64 div DY)*SX);\n      SkipDash(r.Top-Y);\n      Y := r.Top;\n    end;\n    if (Y >= r.Bottom) and (SY < 0) then\n    begin\n      E64 := E+int64(DX)*(Y-(r.Bottom-1));\n      E := E64 mod DY;\n      Inc(X, (E64 div DY)*SX);\n      SkipDash(Y-(r.Bottom-1));\n      Y := r.Bottom-1;\n    end;\n    if (Y2 < r.Top-1) and (SY < 0) then\n    begin\n      skipAfter := (r.Top-1)-Y2;\n      Y2 := r.Top-1;\n    end else\n    if (Y2 > r.Bottom) and (SY > 0) then\n    begin\n      skipAfter := Y2-r.Bottom;\n      Y2 := r.Bottom;\n    end else\n      skipAfter := 0;\n    while Y <> Y2 do\n    begin\n      curAlpha := AAlpha * E div DY;\n      ADest.DrawPixel(X, Y, curBrush^, AAlpha - curAlpha);\n      ADest.DrawPixel(X + SX, Y, curBrush^, curAlpha);\n      Inc(E, DX);\n      if E >= DY then\n      begin\n        Inc(X, SX);\n        Dec(E, DY);\n      end;\n      Inc(Y, SY);\n\n      Inc(DashPos);\n      if DashPos = ADashLen then\n        curBrush := @ABrush2\n      else\n      if DashPos = ADashLen + ADashLen then\n      begin\n        curBrush := @ABrush1;\n        DashPos := 0;\n      end;\n    end;\n  end;\n  if DrawLastPixel then\n  begin\n    ADest.DrawPixel(X2, Y2, curBrush^, AAlpha);\n    inc(DashPos);\n    if DashPos = ADashLen + ADashLen then DashPos := 0;\n  end;\n  SkipDash(skipAfter);\nend;\n\nclass procedure TUniversalDrawer.DrawPolyLine(ADest: TCustomUniversalBitmap;\n  const points: array of TPoint; const ABrush: TUniversalBrush;\n  DrawLastPixel: boolean; AAlpha: Word);\nvar i,start: integer;\nbegin\n  if ABrush.DoesNothing then exit;\n  start := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if (i = start) and DrawLastPixel then ADest.DrawPixel(points[i].x,points[i].y, ABrush,AAlpha);\n    end else\n      DrawLine(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y, ABrush,\n        DrawLastPixel and ((i=high(points)-1) or IsEmptyPoint(points[i+2])), AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.DrawPolyLineAntialias(\n  ADest: TCustomUniversalBitmap; const points: array of TPoint;\n  const ABrush: TUniversalBrush; DrawLastPixel: boolean; AAlpha: Word);\nvar i,start: integer;\nbegin\n  if ABrush.DoesNothing then exit;\n  start := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if (i = start) and DrawLastPixel then ADest.DrawPixel(points[i].x,points[i].y, ABrush,AAlpha);\n    end else\n      DrawLineAntialias(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y, ABrush,\n        DrawLastPixel and ((i=high(points)-1) or IsEmptyPoint(points[i+2])), AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.DrawPolyLineAntialias(\n  ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush1,\n  ABrush2: TUniversalBrush; ADashLen: integer; DrawLastPixel: boolean;\n  AAlpha: Word);\nvar i,start, dashPos: integer;\nbegin\n  if ABrush1.DoesNothing and ABrush2.DoesNothing then exit;\n  start := 0;\n  dashPos := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if (i = start) and DrawLastPixel then\n      begin\n        if dashPos < ADashLen then\n          ADest.DrawPixel(points[i].x,points[i].y, ABrush1,AAlpha)\n        else\n          ADest.DrawPixel(points[i].x,points[i].y, ABrush2,AAlpha);\n        inc(dashPos);\n        if dashPos = ADashLen*2 then dashPos := 0;\n      end;\n    end else\n      DrawLineAntialias(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y,\n        ABrush1,ABrush2,ADashLen,dashPos,\n        DrawLastPixel and ((i=high(points)-1) or IsEmptyPoint(points[i+2])), AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.DrawPolygon(ADest: TCustomUniversalBitmap;\n  const points: array of TPoint; const ABrush: TUniversalBrush; AAlpha: Word);\nvar i,start: integer;\nbegin\n  if ABrush.DoesNothing then exit;\n  start := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if i = start then ADest.DrawPixel(points[i].x,points[i].y, ABrush,AAlpha)\n      else if (i > start) then\n        DrawLine(ADest, points[i].x,points[i].Y,points[start].x,points[start].y, ABrush, false, AAlpha);\n    end else\n      DrawLine(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y, ABrush, false, AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.DrawPolygonAntialias(\n  ADest: TCustomUniversalBitmap; const points: array of TPoint;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nvar i,start: integer;\nbegin\n  if ABrush.DoesNothing then exit;\n  start := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if i = start then ADest.DrawPixel(points[i].x,points[i].y, ABrush,AAlpha)\n      else if (i > start) then\n        DrawLineAntialias(ADest, points[i].x,points[i].Y,points[start].x,points[start].y, ABrush, false, AAlpha);\n    end else\n      DrawLineAntialias(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y, ABrush, false, AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.DrawPolygonAntialias(\n  ADest: TCustomUniversalBitmap; const points: array of TPoint; const ABrush1,\n  ABrush2: TUniversalBrush; ADashLen: integer; AAlpha: Word);\nvar i,start, dashPos: integer;\nbegin\n  if ABrush1.DoesNothing and ABrush2.DoesNothing then exit;\n  start := 0;\n  dashPos := 0;\n  for i := 0 to high(points) do\n  if IsEmptyPoint(points[i]) then start := i+1 else\n  begin\n    if (i = high(points)) or IsEmptyPoint(points[i+1]) then\n    begin\n      if i = start then\n      begin\n        if dashPos < ADashLen then\n          ADest.DrawPixel(points[i].x,points[i].y, ABrush1,AAlpha)\n        else\n          ADest.DrawPixel(points[i].x,points[i].y, ABrush2,AAlpha);\n        inc(dashPos);\n        if dashPos = ADashLen*2 then dashPos := 0;\n      end\n      else if (i > start) then\n        DrawLineAntialias(ADest, points[i].x,points[i].Y,points[start].x,points[start].y,\n                          ABrush1,ABrush2,ADashLen,dashPos, false, AAlpha);\n    end else\n      DrawLineAntialias(ADest, points[i].x,points[i].Y,points[i+1].x,points[i+1].y,\n                        ABrush1,ABrush2,ADashLen,dashPos, false, AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer;\n  const ABrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if not CheckRectBounds({%H-}x,{%H-}y,{%H-}x2,{%H-}y2,1) or ABrush.DoesNothing then exit;\n  ADest.HorizLine(x, y, x2-1, ABrush, AAlpha);\n  if y2-y > 2 then\n  begin\n    ADest.VertLine(x, y+1, y2-2, ABrush, AAlpha);\n    ADest.VertLine(x2-1, y+1, y2-2, ABrush, AAlpha);\n  end;\n  ADest.HorizLine(x, y2-1, x2-1, ABrush, AAlpha);\nend;\n\nclass procedure TUniversalDrawer.Rectangle(ADest: TCustomUniversalBitmap; x, y, x2, y2: integer;\n  const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  if not CheckRectBounds({%H-}x,{%H-}y,{%H-}x2,{%H-}y2,1) then exit;\n  Rectangle(ADest, x, y, x2, y2, ABorderBrush, AAlpha);\n  ADest.FillRect(x+1, y+1, x2-1, y2-1, AFillBrush, AAlpha);\nend;\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer;\n  const ABorderBrush, AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  BGRAPolygonAliased.BGRARoundRectAliased(ADest, X1,Y1,X2,Y2,DX,DY,ABorderBrush,AFillBrush,AAlpha);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.RoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX, DY: integer;\n  const ABorderBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  BGRAPolygonAliased.BGRARoundRectAliased(ADest, X1,Y1,X2,Y2,DX,DY,ABorderBrush,ABorderBrush,AAlpha,false,true);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.FillRoundRect(ADest: TCustomUniversalBitmap; X1, Y1, X2, Y2: integer; DX,\n  DY: integer; const AFillBrush: TUniversalBrush; AAlpha: Word);\nbegin\n  BGRAPolygonAliased.BGRARoundRectAliased(ADest, X1,Y1,X2,Y2,DX,DY,AFillBrush,AFillBrush,AAlpha);\nend;{$ENDIF}\n\nclass procedure TUniversalDrawer.FillShape(ADest: TCustomUniversalBitmap;\n  AShape: TBGRACustomFillInfo; AFillMode: TFillMode; ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  BGRAPolygon.FillShapeAliased(ADest, AShape, ABrush, AAlpha, AFillMode = fmWinding);\nend;\n\nclass procedure TUniversalDrawer.FillPoly(ADest: TCustomUniversalBitmap;\n  const APoints: array of TPointF; AFillMode: TFillMode;\n  ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean; AAlpha: Word);\nbegin\n  BGRAPolygon.FillPolyAliased(ADest, APoints, ABrush, AAlpha, AFillMode = fmWinding, APixelCenteredCoordinates);\nend;\n\nclass function TUniversalDrawer.CreatePenStroker: TBGRACustomPenStroker;\nbegin\n  result := TBGRAPenStroker.Create;\nend;\n\nclass function TUniversalDrawer.CreateArrow: TBGRACustomArrow;\nbegin\n  result := TBGRAArrow.Create;\nend;\n\nclass procedure TUniversalDrawer.RectangleAntialias(\n  ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; x, y, x2, y2: single;\n  const ABrush: TUniversalBrush; AWidth: single);\nvar\n  hw, bevel: Single;\nbegin\n  if (APen.Style = psClear) or (AWidth = 0) then exit;\n\n  if not CheckAntialiasRectBounds(x,y,x2,y2, AWidth) then\n  begin\n    hw := AWidth/2;\n    if APen.JoinStyle = pjsBevel then\n    begin\n      bevel := (2 - sqrt(2)) * hw;\n      FillRoundRectAntialias(ADest, x - hw, y - hw, x2 + hw, y2 + hw, bevel,bevel, ABrush,\n        [rrTopLeftBevel, rrTopRightBevel, rrBottomLeftBevel, rrBottomRightBevel]);\n    end else\n    if APen.JoinStyle = pjsRound then\n      FillRoundRectAntialias(ADest, x - hw, y - hw, x2 + hw, y2 + hw, hw,hw, ABrush)\n    else\n      FillRectAntialias(ADest, x - hw, y - hw, x2 + hw, y2 + hw, ABrush);\n  end else\n  if (APen.JoinStyle = pjsMiter) and (APen.Style = psSolid) and (APen.MiterLimit > 1.4142) then\n  begin\n    hw := AWidth/2;\n    FillPolyAntialias(ADest, [PointF(x-hw,y-hw),PointF(x2+hw,y-hw),PointF(x2+hw,y2+hw),PointF(x-hw,y2+hw),EmptyPointF,\n                PointF(x+hw,y2-hw),PointF(x2-hw,y2-hw),PointF(x2-hw,y+hw),PointF(x+hw,y+hw)],\n                fmWinding, ABrush, true);\n  end else\n    DrawPolygonAntialias(ADest, APen, [Pointf(x,y),Pointf(x2,y),Pointf(x2,y2),Pointf(x,y2)], ABrush, AWidth);\nend;\n\nclass procedure TUniversalDrawer.DrawPolygonAntialias(\n  ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker;\n  const APoints: array of TPointF; const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  FillPolyAntialias(ADest, APen.ComputePolygon(APoints, AWidth), ADest.FillMode, ABrush, true);\nend;\n\nclass procedure TUniversalDrawer.Ellipse(ADest: TCustomUniversalBitmap;\n  APen: TBGRACustomPenStroker; x, y,rx, ry: single;\n  const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word);\nbegin\n  if (APen.Style = psClear) or (AWidth = 0) then exit;\n  if (APen.Style = psSolid) then\n    BGRAPolygon.BorderEllipse(ADest, x, y, rx, ry, AWidth, ABrush, AAlpha)\n  else\n  begin\n    if ABrush.DoesNothing then exit;\n    FillPoly(ADest, APen.ComputePolygon(BGRAPath.ComputeEllipse(x,y,rx,ry),AWidth),\n             ADest.FillMode, ABrush, true, AAlpha);\n  end;\nend;\n\nclass procedure TUniversalDrawer.Ellipse(ADest: TCustomUniversalBitmap;\n  APen: TBGRACustomPenStroker; const AOrigin, AXAxis, AYAxis: TPointF;\n  const ABrush: TUniversalBrush; AWidth: single; AAlpha: Word);\nbegin\n  if (APen.Style = psClear) or (AWidth = 0) or ABrush.DoesNothing then exit;\n  FillPoly(ADest, APen.ComputePolygon(BGRAPath.ComputeEllipse(AOrigin, AXAxis, AYAxis), AWidth),\n           ADest.FillMode, ABrush, true, AAlpha);\nend;\n\nclass procedure TUniversalDrawer.EllipseAntialias(\n  ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker;\n  x, y, rx, ry: single; const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  if (APen.Style = psClear) or (AWidth = 0) then exit;\n  if (APen.Style = psSolid) then\n    BGRAPolygon.BorderEllipseAntialias(ADest, x, y, rx, ry, AWidth, ABrush)\n  else\n  begin\n    if ABrush.DoesNothing then exit;\n    FillPolyAntialias(ADest, APen.ComputePolygon(BGRAPath.ComputeEllipse(x,y,rx,ry),AWidth),\n             ADest.FillMode, ABrush, true);\n  end;\nend;\n\nclass procedure TUniversalDrawer.EllipseAntialias(\n  ADest: TCustomUniversalBitmap; APen: TBGRACustomPenStroker; const AOrigin,\n  AXAxis, AYAxis: TPointF; const ABrush: TUniversalBrush; AWidth: single);\nbegin\n  if (APen.Style = psClear) or (AWidth = 0) or ABrush.DoesNothing then exit;\n  FillPolyAntialias(ADest, APen.ComputePolygon(BGRAPath.ComputeEllipse(AOrigin, AXAxis, AYAxis), AWidth),\n           ADest.FillMode, ABrush, true);\nend;\n\nclass procedure TUniversalDrawer.FillRectAntialias(\n  ADest: TCustomUniversalBitmap; x, y, x2, y2: single;\n  const ABrush: TUniversalBrush; APixelCenteredCoordinates: boolean);\nvar\n  fi: TFillRectangleInfo;\nbegin\n  if ABrush.DoesNothing then exit;\n  fi := TFillRectangleInfo.Create(x,y,x2,y2,APixelCenteredCoordinates);\n  FillShapeAntialias(ADest, fi, fmAlternate, ABrush);\n  fi.Free;\nend;\n\nclass procedure TUniversalDrawer.FillRoundRectAntialias(\n  ADest: TCustomUniversalBitmap; x, y, x2, y2, rx, ry: single;\n  const ABrush: TUniversalBrush; AOptions: TRoundRectangleOptions;\n  APixelCenteredCoordinates: boolean);\nvar\n  fi: TFillRoundRectangleInfo;\nbegin\n  if ABrush.DoesNothing or (x = x2) or (y = y2) then exit;\n  fi := TFillRoundRectangleInfo.Create(x,y,x2,y2, rx,ry, AOptions, APixelCenteredCoordinates);\n  FillShapeAntialias(ADest, fi, fmAlternate, ABrush);\n  fi.Free;\nend;\n\nclass procedure TUniversalDrawer.FillShapeAntialias(\n  ADest: TCustomUniversalBitmap; AShape: TBGRACustomFillInfo;\n  AFillMode: TFillMode; ABrush: TUniversalBrush);\nbegin\n  BGRAPolygon.FillShapeAntialias(ADest, AShape, ABrush, AFillMode = fmWinding);\nend;\n\nclass procedure TUniversalDrawer.FillPolyAntialias(\n  ADest: TCustomUniversalBitmap; const APoints: array of TPointF;\n  AFillMode: TFillMode; ABrush: TUniversalBrush;\n  APixelCenteredCoordinates: boolean);\nbegin\n  BGRAPolygon.FillPolyAntialias(ADest, APoints, ABrush,\n    AFillMode = fmWinding, APixelCenteredCoordinates);\nend;\n\nclass procedure TUniversalDrawer.FillEllipseAntialias(\n  ADest: TCustomUniversalBitmap; x, y, rx, ry: single;\n  const ABrush: TUniversalBrush);\nbegin\n  BGRAPolygon.FillEllipseAntialias(ADest, x, y, rx, ry, ABrush);\nend;\n\nclass procedure TUniversalDrawer.FillEllipseAntialias(\n  ADest: TCustomUniversalBitmap; const AOrigin, AXAxis, AYAxis: TPointF;\n  const ABrush: TUniversalBrush);\nvar\n  pts: array of TPointF;\nbegin\n  if (AOrigin.y = AXAxis.y) and (AOrigin.x = AYAxis.x) then\n    FillEllipseAntialias(ADest, AOrigin.x,AOrigin.y,\n      abs(AXAxis.x-AOrigin.x),abs(AYAxis.y-AOrigin.y), ABrush)\n  else\n  if (AOrigin.x = AXAxis.x) and (AOrigin.y = AYAxis.y) then\n    FillEllipseAntialias(ADest, AOrigin.x,AOrigin.y,\n      abs(AYAxis.x-AOrigin.x),abs(AXAxis.y-AOrigin.y), ABrush)\n  else\n  begin\n    if ABrush.DoesNothing then exit;\n    pts := BGRAPath.ComputeEllipse(AOrigin,AXAxis,AYAxis);\n    FillPolyAntialias(ADest, pts, fmAlternate, ABrush, true);\n  end;\nend;\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.FilterBlurRadial(\n  ASource: TCustomUniversalBitmap; const ABounds: TRect; radiusX,\n  radiusY: single; blurType: TRadialBlurType; ADest: TCustomUniversalBitmap);\nbegin\n  BGRAFilterBlur.FilterBlurRadial(ASource, ABounds,\n                radiusX,radiusY, blurType, ADest, nil);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.FilterBlurMotion(\n  ASource: TCustomUniversalBitmap; const ABounds: TRect;\n  distance: single; angle: single; oriented: boolean;\n  ADest: TCustomUniversalBitmap);\nbegin\n  BGRAFilterBlur.FilterBlurMotion(ASource, ABounds,\n           distance, angle, oriented, ADest, nil);\nend;{$ENDIF}\n\n{$IFNDEF BGRABITMAP_CORE}class procedure TUniversalDrawer.FilterCustomBlur(\n  ASource: TCustomUniversalBitmap; const ABounds: TRect;\n  mask: TCustomUniversalBitmap; ADest: TCustomUniversalBitmap);\nbegin\n  BGRAFilterBlur.FilterBlurCustom(ASource, ABounds,\n      mask, ADest, nil);\nend;{$ENDIF}\n\ninitialization\n\n  UniDrawerClass := TUniversalDrawer;\n\nend.\n"
  },
  {
    "path": "bgrabitmap/unzipperext.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Proposes a class to unzip files from stream to stream }\nunit UnzipperExt;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, zipper;\n\ntype\n  {* Unzipping class with custom input stream that can extract a specific file }\n  TUnzipperStreamUtf8 = class(TUnZipper)\n    private\n      FCustomOutputStream: TStream;\n      FCustomInputStream: TStream;\n      { Sets the input stream }\n      procedure SetInputStream(AValue: TStream);\n    protected\n      { Callback method to open the ZIP input }\n      Procedure CustomOpenInput(Sender: TObject; var AStream: TStream);\n      { Callback method to close the ZIP input }\n      procedure CustomCloseInput(Sender: TObject; var AStream: TStream);\n      { Callback method to create the output for the content of the extracted item.\n        This function actually just supplies the chosen output stream. }\n      procedure CustomCreateOutput(Sender : TObject; var AStream : TStream; {%H-}AItem : TFullZipFileEntry);\n      { Callback method to close the output for the content of the extracted item }\n      procedure CustomCloseOutput(Sender : TObject; var AStream : TStream; {%H-}AItem : TFullZipFileEntry);\n    public\n      {** Creates the unzipper class. You need to set the _InputStream_  ou _Filename_ property afer that. }\n      constructor Create;\n      {** Unzips the specified item with the given filename into the given stream }\n      function UnzipFileToStream(AFilename: string; AStream: TStream; ACaseSensitive: boolean= true): boolean;\n      {** Unzips the specified item with the given filename and return it as a string }\n      function UnzipFileToString(AFilename:string): string;\n      {** Input stream to use when unzipping, otherwise will use the inherited _Filename_ property }\n      property InputStream: TStream read FCustomInputStream write SetInputStream;\n  end;\n\nimplementation\n\nuses BGRAUTF8;\n\n{ TUnzipperStreamUtf8 }\n\nprocedure TUnzipperStreamUtf8.SetInputStream(AValue: TStream);\nbegin\n  if FCustomInputStream=AValue then Exit;\n  FCustomInputStream:=AValue;\nend;\n\nprocedure TUnzipperStreamUtf8.CustomOpenInput(Sender: TObject; var AStream: TStream);\nbegin\n  if Assigned(FCustomInputStream) then\n    AStream := FCustomInputStream\n  else\n    AStream := TFileStreamUTF8.Create(FileName, fmOpenRead or fmShareDenyWrite);\nend;\n\nprocedure TUnzipperStreamUtf8.CustomCloseInput(Sender: TObject; var AStream: TStream);\nbegin\n  if AStream = FCustomInputStream then\n    AStream := nil\n  else\n    FreeAndNil(AStream);\nend;\n\nprocedure TUnzipperStreamUtf8.CustomCreateOutput(Sender: TObject;\n  var AStream: TStream; AItem: TFullZipFileEntry);\nbegin\n  AStream := FCustomOutputStream;\nend;\n\nprocedure TUnzipperStreamUtf8.CustomCloseOutput(Sender: TObject;\n  var AStream: TStream; AItem: TFullZipFileEntry);\nbegin\n  AStream := nil;\nend;\n\nfunction TUnzipperStreamUtf8.UnzipFileToStream(AFilename: string; AStream: TStream;\n  ACaseSensitive: boolean): boolean;\nvar\n  i: integer;\n  entryName: string;\nbegin\n  OpenInput;\n  AFilename := StringReplace(AFilename,'/','\\',[rfReplaceAll]);\n  Try\n    ReadZipDirectory;\n    for i := 0 to Entries.count-1 do\n    begin\n      entryName := Entries.FullEntries[i].ArchiveFileName;\n      entryName:= StringReplace(entryName,'/','\\',[rfReplaceAll]);\n      if (entryName = AFilename) or\n        (not ACaseSensitive and (CompareText(entryName,AFilename)=0)) then\n      begin\n        OnCreateStream := @CustomCreateOutput;\n        OnDoneStream := @CustomCloseOutput;\n        FCustomOutputStream := AStream;\n        UnZipOneFile(Entries.FullEntries[i]);\n        OnCreateStream := nil;\n        OnDoneStream := nil;\n        FCustomOutputStream := nil;\n        result := true;\n        exit;\n      end;\n    end;\n  Finally\n    CloseInput;\n  end;\n  result := false;\nend;\n\nfunction TUnzipperStreamUtf8.UnzipFileToString(AFilename: string): string;\nvar mem: TMemoryStream;\nbegin\n  mem := TMemoryStream.Create;\n  try\n    UnzipFileToStream(AFilename,mem);\n    setlength(result,mem.Size);\n    mem.Position:= 0;\n    mem.Read(result[1], length(result));\n  finally\n    mem.Free;\n  end;\nend;\n\nconstructor TUnzipperStreamUtf8.Create;\nbegin\n  inherited Create;\n  OnOpenInputStream := @CustomOpenInput;\n  OnCloseInputStream:= @CustomCloseInput;\nend;\n\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/uunittest.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ Some unit testing }\nunit UUnitTest;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes;\n\nimplementation\n\nprocedure Test(AExpression: boolean; ADescription: string);\nbegin\n  if not AExpression then\n    raise EAssertionFailed.Create('Assertion failed: '+ADescription);\nend;\n\nvar error: boolean;\n\ninitialization\n\n Test(StrToBGRA('red ')=CSSRed,'ignore spaces');\n Test(StrToBGRA('red@')=BGRAPixelTransparent,'error fallback to transparent');\n Test(StrToBGRA('red@',CSSYellow)=CSSYellow,'error fallback to transparent');\n Test(StrToBGRA('rgb(255,0,0)')=CSSRed,'rgb format');\n Test(StrToBGRA('rgb(255,0,0,0.502)')=BGRA(255,0,0,128),'rgba format');\n Test(StrToBGRA('rgb(255,0,?)')=BGRAPixelTransparent,'missing as an error');\n Test(StrToBGRA('rgb(255,0,?)',CSSYellow)=CSSYellow,'missing as an error');\n Test(PartialStrToBGRA('rgb(255,?,?,?)',BGRA(128,128,128,128),error)=BGRA(255,128,128,128),'missing values replacement');\n Test(not error, 'missing is not an error');\n Test(PartialStrToBGRA('rgb(255,?,?)',BGRA(128,128,128,128),error)=BGRA(255,128,128,255),'implicit rgb alpha');\n Test(not error, 'missing is not an error');\n Test(PartialStrToBGRA('rgb(255,abc,0)',BGRA(128,128,128,128),error)=BGRA(255,0,0,255),'error replaced by 0 for rgb');\n Test(error, 'non numeric error');\n Test(PartialStrToBGRA('#ff????',BGRA(128,128,128,128),error)=BGRA(255,128,128,255),'missing values replacement');\n Test(not error, 'missing is not an error');\n Test(PartialStrToBGRA('#f??',BGRA(128,128,128,128),error)=BGRA(255,128,128,255),'missing values replacement');\n Test(not error, 'missing is not an error');\n Test(PartialStrToBGRA('#12??3456',BGRA(128,128,128,128),error)=BGRA($12,128,$34,$56),'html color with missing values');\n Test(not error, 'missing is not an error');\n Test(BGRAToStr(VGARed)='FF0000FF','Default color format');\n Test(BGRAToStr(BGRA(255,0,0), VGAColors)='Red','VGA color names');\n Test(BGRAToStr(BGRA(255,255,0), CSSColors)='Yellow','CSS color names');\n Test(BGRAToStr(BGRA(250,128,114), CSSColors)='Salmon','CSS color names');\nend.\n\n"
  },
  {
    "path": "bgrabitmap/vertex3d.inc",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\ntype\n  { Object in a 3D scene }\n  TBGRAObject3D = class(TInterfacedObject,IBGRAObject3D)\n  private\n    FColor: TBGRAPixel;\n    FLight: Single;\n    FTexture: IBGRAScanner;\n    FMainPart: IBGRAPart3D;\n    FFaces: array of IBGRAFace3D;\n    FFaceCount: integer;\n    FLightingNormal : TLightingNormal3D;\n    FParentLighting: boolean;\n    FMaterial: IBGRAMaterial3D;\n    FScene: TBGRAScene3D;\n    FFaceColorsInvalidated,\n    FMaterialInvalidated: boolean;\n    procedure AddFace(AFace: IBGRAFace3D); overload;\n  public\n    constructor Create(AScene: TBGRAScene3D);\n    destructor Destroy; override;\n    procedure Clear;\n    procedure InvalidateColor;\n    procedure InvalidateMaterial;\n    function AddFace(const AVertices: array of IBGRAVertex3D): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; ABiface: boolean): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; ATexture: IBGRAScanner): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; AColor: TBGRAPixel): IBGRAFace3D; overload;\n    function AddFace(const AVertices: array of IBGRAVertex3D; AColors: array of TBGRAPixel): IBGRAFace3D; overload;\n    function AddFaceReversed(const AVertices: array of IBGRAVertex3D): IBGRAFace3D;\n    procedure ComputeWithMatrix(constref AMatrix: TMatrix3D; constref AProjection: TProjection3D);\n    function GetColor: TBGRAPixel;\n    function GetLight: Single;\n    function GetTexture: IBGRAScanner;\n    function GetMainPart: IBGRAPart3D;\n    function GetLightingNormal: TLightingNormal3D;\n    function GetParentLighting: boolean;\n    function GetFace(AIndex: integer): IBGRAFace3D;\n    function GetFaceCount: integer;\n    function GetTotalVertexCount: integer;\n    function GetTotalNormalCount: integer;\n    function GetMaterial: IBGRAMaterial3D;\n    procedure SetLightingNormal(const AValue: TLightingNormal3D);\n    procedure SetParentLighting(const AValue: boolean);\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetLight(const AValue: Single);\n    procedure SetTexture(const AValue: IBGRAScanner);\n    procedure SetMaterial(const AValue: IBGRAMaterial3D);\n    procedure RemoveUnusedVertices;\n    procedure SeparatePart(APart: IBGRAPart3D);\n    function GetScene: TObject;\n    function GetRefCount: integer;\n    procedure SetBiface(AValue : boolean);\n    procedure ForEachVertex(ACallback: TVertex3DCallback);\n    procedure ForEachFace(ACallback: TFace3DCallback);\n    procedure Update;\n  end;\n\n  { Vertex in a 3D object }\n  TBGRAVertex3D = class(TInterfacedObject,IBGRAVertex3D)\n  private\n    FColor: TBGRAPixel;\n    FParentColor: boolean;\n    FLight: Single;\n    FTexCoord: TPointF;\n    FCoordPool: TBGRACoordPool3D;\n    FCoordPoolIndex: integer;\n    FCustomFlags: LongWord;\n    FObject3D: TBGRAObject3D;\n    function GetCoordData: PBGRACoordData3D;\n    procedure Init(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D_128);\n  public\n    constructor Create(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D); overload;\n    constructor Create(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D_128); overload;\n    destructor Destroy; override;\n    function GetColor: TBGRAPixel;\n    function GetLight: Single;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    function GetCustomNormal: TPoint3D;\n    function GetCustomNormal_128: TPoint3D_128;\n    function GetSceneCoord: TPoint3D;\n    function GetSceneCoord_128: TPoint3D_128;\n    function GetTexCoord: TPointF;\n    function GetViewCoord: TPoint3D;\n    function GetViewCoord_128: TPoint3D_128;\n    function GetUsage: integer;\n    function GetCustomFlags: LongWord;\n    procedure SetColor(const AValue: TBGRAPixel);\n    procedure SetLight(const AValue: Single);\n    procedure SetViewNormal(const AValue: TPoint3D);\n    procedure SetViewNormal_128(const AValue: TPoint3D_128);\n    procedure SetCustomNormal(AValue: TPoint3D);\n    procedure SetCustomNormal_128(AValue: TPoint3D_128);\n    procedure NormalizeViewNormal;\n    procedure AddViewNormal(const AValue: TPoint3D_128);\n    procedure SetCustomFlags(AValue: LongWord);\n    procedure SetSceneCoord(const AValue: TPoint3D);\n    procedure SetSceneCoord_128(const AValue: TPoint3D_128);\n    procedure SetTexCoord(const AValue: TPointF);\n    procedure SetViewCoord(const AValue: TPoint3D);\n    procedure SetViewCoord_128(const AValue: TPoint3D_128);\n    function GetViewCoordZ: single;\n    function GetParentColor: Boolean;\n    procedure SetParentColor(const AValue: Boolean);\n    function GetProjectedCoord: TPointF;\n    procedure SetProjectedCoord(const AValue: TPointF);\n    procedure ComputeCoordinateAndClearNormal(const AMatrix: TMatrix3D; const AProjection: TProjection3D);\n    property SceneCoord: TPoint3D read GetSceneCoord write SetSceneCoord;\n    property SceneCoord_128: TPoint3D_128 read GetSceneCoord_128 write SetSceneCoord_128;\n    property ViewCoord: TPoint3D read GetViewCoord write SetViewCoord;\n    property ViewCoord_128: TPoint3D_128 read GetViewCoord_128 write SetViewCoord_128;\n    property ViewCoordZ: single read GetViewCoordZ;\n    property ProjectedCoord: TPointF read GetProjectedCoord write SetProjectedCoord;\n    property TexCoord: TPointF read GetTexCoord write SetTexCoord;\n    property Color: TBGRAPixel read GetColor write SetColor;\n    property ParentColor: Boolean read GetParentColor write SetParentColor;\n    property Light: Single read GetLight write SetLight;\n    property ViewNormal: TPoint3D read GetViewNormal write SetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128 write SetViewNormal_128;\n    property CustomNormal: TPoint3D read GetCustomNormal write SetCustomNormal;\n    property CustomNormal_128: TPoint3D_128 read GetCustomNormal_128 write SetCustomNormal_128;\n    property Usage: integer read GetUsage;\n    property CoordData: PBGRACoordData3D read GetCoordData;\n    function GetAsObject: TObject;\n  end;\n\n  { Normal of a 3D surface }\n  TBGRANormal3D = class(TInterfacedObject,IBGRANormal3D)\n  private\n    FPool: TBGRANormalPool3D;\n    FPoolIndex: integer;\n    function GetCustomNormal: TPoint3D;\n    function GetCustomNormal_128: TPoint3D_128;\n    function GetUsage: integer;\n    function GetViewNormal: TPoint3D;\n    function GetViewNormal_128: TPoint3D_128;\n    procedure SetCustomNormal(AValue: TPoint3D);\n    procedure SetCustomNormal_128(AValue: TPoint3D_128);\n    procedure SetViewNormal(AValue: TPoint3D);\n    procedure SetViewNormal_128(AValue: TPoint3D_128);\n  public\n    constructor Create(ANormalPool: TBGRANormalPool3D; ACustomNormal: TPoint3D); overload;\n    constructor Create(ANormalPool: TBGRANormalPool3D; ACustomNormal: TPoint3D_128); overload;\n    destructor Destroy; override;\n    property ViewNormal: TPoint3D read GetViewNormal write SetViewNormal;\n    property ViewNormal_128: TPoint3D_128 read GetViewNormal_128 write SetViewNormal_128;\n    property CustomNormal: TPoint3D read GetCustomNormal write SetCustomNormal;\n    property CustomNormal_128: TPoint3D_128 read GetCustomNormal_128 write SetCustomNormal_128;\n    property Usage: integer read GetUsage;\n  end;\n\n{ TBGRANormal3D }\n\nfunction TBGRANormal3D.GetCustomNormal: TPoint3D;\nbegin\n  result := Point3D((FPool.NormalData[FPoolIndex])^.customNormal);\nend;\n\nfunction TBGRANormal3D.GetCustomNormal_128: TPoint3D_128;\nbegin\n  result := (FPool.NormalData[FPoolIndex])^.customNormal;\nend;\n\nfunction TBGRANormal3D.GetUsage: integer;\nbegin\n  result := frefcount;\nend;\n\nfunction TBGRANormal3D.GetViewNormal: TPoint3D;\nbegin\n  result := Point3D((FPool.NormalData[FPoolIndex])^.viewNormal);\nend;\n\nfunction TBGRANormal3D.GetViewNormal_128: TPoint3D_128;\nbegin\n  result := (FPool.NormalData[FPoolIndex])^.viewNormal;\nend;\n\nprocedure TBGRANormal3D.SetCustomNormal(AValue: TPoint3D);\nbegin\n  (FPool.NormalData[FPoolIndex])^.customNormal := Point3D_128(AValue);\nend;\n\nprocedure TBGRANormal3D.SetCustomNormal_128(AValue: TPoint3D_128);\nbegin\n  (FPool.NormalData[FPoolIndex])^.customNormal := AValue;\nend;\n\nprocedure TBGRANormal3D.SetViewNormal(AValue: TPoint3D);\nbegin\n  (FPool.NormalData[FPoolIndex])^.viewNormal := Point3D_128(AValue);\nend;\n\nprocedure TBGRANormal3D.SetViewNormal_128(AValue: TPoint3D_128);\nbegin\n  (FPool.NormalData[FPoolIndex])^.viewNormal := AValue;\nend;\n\nconstructor TBGRANormal3D.Create(ANormalPool: TBGRANormalPool3D;\n  ACustomNormal: TPoint3D);\nbegin\n  FPool := ANormalPool;\n  FPoolIndex:= FPool.Add;\n  CustomNormal := ACustomNormal;\nend;\n\nconstructor TBGRANormal3D.Create(ANormalPool: TBGRANormalPool3D;\n  ACustomNormal: TPoint3D_128);\nbegin\n  FPool := ANormalPool;\n  FPoolIndex:= FPool.Add;\n  CustomNormal_128 := ACustomNormal;\nend;\n\ndestructor TBGRANormal3D.Destroy;\nbegin\n  FPool.Remove(FPoolIndex);\n  inherited Destroy;\nend;\n\n{ TBGRAVertex3D }\n\nprocedure TBGRAVertex3D.Init(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D_128);\nbegin\n  FObject3D := AObject3D;\n  FCoordPool := ACoordPool;\n  FCoordPoolIndex := FCoordPool.Add;\n  FColor := BGRAWhite;\n  FParentColor := True;\n  FLight := 1;\n  SceneCoord_128 := ASceneCoord;\nend;\n\nprocedure TBGRAVertex3D.SetCustomNormal(AValue: TPoint3D);\nbegin\n  with FCoordPool.CoordData[FCoordPoolIndex]^ do\n  begin\n    customNormal := Point3D_128(AValue);\n    customNormalUsed := not CompareMem(@customNormal,@Point3D_128_Zero,sizeof(Point3D_128_Zero));\n  end;\nend;\n\nprocedure TBGRAVertex3D.SetCustomNormal_128(AValue: TPoint3D_128);\nbegin\n  with FCoordPool.CoordData[FCoordPoolIndex]^ do\n  begin\n    customNormal := AValue;\n    customNormalUsed := not CompareMem(@customNormal,@Point3D_128_Zero,sizeof(Point3D_128_Zero));\n  end;\nend;\n\nfunction TBGRAVertex3D.GetCoordData: PBGRACoordData3D;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex];\nend;\n\nfunction TBGRAVertex3D.GetCustomNormal: TPoint3D;\nbegin\n  result := Point3D(FCoordPool.CoordData[FCoordPoolIndex]^.customNormal);\nend;\n\nfunction TBGRAVertex3D.GetCustomNormal_128: TPoint3D_128;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.customNormal;\nend;\n\nconstructor TBGRAVertex3D.Create(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D);\nbegin\n  Init(AObject3D, ACoordPool, Point3D_128(ASceneCoord));\nend;\n\nconstructor TBGRAVertex3D.Create(AObject3D: TBGRAObject3D; ACoordPool: TBGRACoordPool3D; ASceneCoord: TPoint3D_128);\nbegin\n  Init(AObject3D, ACoordPool, ASceneCoord);\nend;\n\ndestructor TBGRAVertex3D.Destroy;\nbegin\n  FCoordPool.Remove(FCoordPoolIndex);\n  inherited Destroy;\nend;\n\nfunction TBGRAVertex3D.GetColor: TBGRAPixel;\nbegin\n  result := FColor;\nend;\n\nfunction TBGRAVertex3D.GetLight: Single;\nbegin\n  result := FLight;\nend;\n\nfunction TBGRAVertex3D.GetViewNormal: TPoint3D;\nbegin\n  result := Point3D(FCoordPool.CoordData[FCoordPoolIndex]^.viewNormal);\nend;\n\nfunction TBGRAVertex3D.GetViewNormal_128: TPoint3D_128;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.viewNormal;\nend;\n\nfunction TBGRAVertex3D.GetSceneCoord: TPoint3D;\nbegin\n  result := Point3D(FCoordPool.CoordData[FCoordPoolIndex]^.sceneCoord);\nend;\n\nfunction TBGRAVertex3D.GetSceneCoord_128: TPoint3D_128;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.sceneCoord;\nend;\n\nfunction TBGRAVertex3D.GetTexCoord: TPointF;\nbegin\n  result := FTexCoord;\nend;\n\nfunction TBGRAVertex3D.GetViewCoord: TPoint3D;\nbegin\n  result := Point3D(FCoordPool.CoordData[FCoordPoolIndex]^.viewCoord);\nend;\n\nfunction TBGRAVertex3D.GetViewCoord_128: TPoint3D_128;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.viewCoord;\nend;\n\nfunction TBGRAVertex3D.GetUsage: integer;\nbegin\n  result := frefcount;\nend;\n\nfunction TBGRAVertex3D.GetCustomFlags: LongWord;\nbegin\n  result := FCustomFlags;\nend;\n\nprocedure TBGRAVertex3D.SetColor(const AValue: TBGRAPixel);\nbegin\n  FColor := AValue;\n  FParentColor := false;\n  FObject3D.InvalidateColor;\nend;\n\nprocedure TBGRAVertex3D.SetLight(const AValue: Single);\nbegin\n  FLight := AValue;\nend;\n\nprocedure TBGRAVertex3D.SetViewNormal(const AValue: TPoint3D);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.viewNormal := Point3D_128(AValue);\nend;\n\nprocedure TBGRAVertex3D.SetViewNormal_128(const AValue: TPoint3D_128);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.viewNormal := AValue;\nend;\n\nprocedure TBGRAVertex3D.SetSceneCoord(const AValue: TPoint3D);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.sceneCoord := Point3D_128(AValue);\nend;\n\nprocedure TBGRAVertex3D.SetSceneCoord_128(const AValue: TPoint3D_128);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.sceneCoord := AValue;\nend;\n\nprocedure TBGRAVertex3D.SetTexCoord(const AValue: TPointF);\nbegin\n  FTexCoord := AValue;\nend;\n\nprocedure TBGRAVertex3D.SetViewCoord(const AValue: TPoint3D);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.viewCoord := Point3D_128(AValue);\nend;\n\nprocedure TBGRAVertex3D.SetViewCoord_128(const AValue: TPoint3D_128);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.viewCoord := AValue;\nend;\n\nfunction TBGRAVertex3D.GetViewCoordZ: single;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.viewCoord.Z;\nend;\n\nfunction TBGRAVertex3D.GetParentColor: Boolean;\nbegin\n  result := FParentColor;\nend;\n\nprocedure TBGRAVertex3D.SetParentColor(const AValue: Boolean);\nbegin\n  FParentColor := AValue;\n  FObject3D.InvalidateColor;\nend;\n\nfunction TBGRAVertex3D.GetProjectedCoord: TPointF;\nbegin\n  result := FCoordPool.CoordData[FCoordPoolIndex]^.projectedCoord;\nend;\n\nprocedure TBGRAVertex3D.SetProjectedCoord(const AValue: TPointF);\nbegin\n  FCoordPool.CoordData[FCoordPoolIndex]^.projectedCoord := AValue;\nend;\n\nprocedure TBGRAVertex3D.ComputeCoordinateAndClearNormal(const AMatrix: TMatrix3D; const AProjection : TProjection3D);\nvar P: PBGRACoordData3D;\nbegin\n  P := FCoordPool.CoordData[FCoordPoolIndex];\n  with p^ do\n  begin\n    viewCoord := AMatrix*sceneCoord;\n    if customNormalUsed then\n      viewNormal := MultiplyVect3DWithoutTranslation(AMatrix,customNormal)\n    else\n      ClearPoint3D_128(viewNormal);\n    if viewCoord.z > 0 then\n    begin\n      InvZ := 1/viewCoord.z;\n      projectedCoord := PointF(viewCoord.x*InvZ*AProjection.Zoom.x + AProjection.Center.x,\n                               viewCoord.y*InvZ*AProjection.Zoom.Y + AProjection.Center.y);\n    end else\n      projectedCoord := PointF(0,0);\n  end;\nend;\n\nfunction TBGRAVertex3D.GetAsObject: TObject;\nbegin\n  result := self;\nend;\n\nprocedure TBGRAVertex3D.NormalizeViewNormal;\nbegin\n  Normalize3D_128(FCoordPool.CoordData[FCoordPoolIndex]^.viewNormal);\nend;\n\nprocedure TBGRAVertex3D.AddViewNormal(const AValue: TPoint3D_128);\nbegin\n  with FCoordPool.CoordData[FCoordPoolIndex]^ do\n    if not customNormalUsed then\n      Add3D_Aligned(viewNormal, AValue);\nend;\n\nprocedure TBGRAVertex3D.SetCustomFlags(AValue: LongWord);\nbegin\n  FCustomFlags:= AValue;\nend;\n\n"
  },
  {
    "path": "bgrabitmap/wordxyzabitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Supplies a bitmap in XYZ colorspace with word values (16-bit per channel)\n  and transparency.)\n\n  Pixels are in TWordXYZA format, based on\n  [CIE 1931 XYZ colorspace](https://en.wikipedia.org/wiki/CIE_1931_color_space) (TWordXYZAColorspace).\n\n  This format is generally used as an intermediary format.\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit WordXYZABitmap;\n\n{$mode objfpc}{$H+}\n\n{$i bgrabitmap.inc}\n\n{$IFNDEF BGRABITMAP_EXTENDED_COLORSPACE}{$STOP This unit need extended colorspaces}{$ENDIF}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, UniversalDrawer;\n\ntype\n  {* Bitmap with TWordXYZA pixel format, [CIE 1931 XYZ](https://en.wikipedia.org/wiki/CIE_1931_color_space)\n     with word values (16-bit per channel). }\n  TWordXYZABitmap = class(specialize TGenericUniversalBitmap<TWordXYZA,TWordXYZAColorspace>)\n  protected\n    function InternalNew: TCustomUniversalBitmap; override;\n    procedure AssignTransparentPixel(out ADest); override;\n  public\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TWordXYZA; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                              AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    {** Replaces imaginary colors by the _AAfter_ }\n    procedure ReplaceImaginary(const AAfter: TWordXYZA);\n  end;\n\nconst\n  WordXYZATransparent : TWordXYZA = (X:0; Y:0; Z:0; alpha:0);\n\noperator = (const c1, c2: TWordXYZA): boolean; inline;\n\nimplementation\n\nuses XYZABitmap;\n\noperator = (const c1, c2: TWordXYZA): boolean;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    Result := True\n  else\n    Result := (c1.alpha = c2.alpha) and (c1.X = c2.X) and\n      (c1.Y = c2.Y) and (c1.Z = c2.Z);\nend;\n\nprocedure WordXYZASolidBrushSkipPixels({%H-}AFixedData: Pointer;\n    AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PWordXYZA(AContextData^.Dest), ACount);\nend;\n\nprocedure WordXYZAChunkSetPixels(\n    ASource: PWordXYZA; ADest: PWordXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + ((ASource^.alpha*alphaOver+32768) shr 16);\n      if finalAlpha <= 0 then ADest^ := WordXYZATransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.alpha:= finalAlpha;\n        ADest^.X := (ADest^.X*residualAlpha +\n                     ASource^.X*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.Y := (ADest^.Y*residualAlpha +\n                     ASource^.Y*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.Z := (ADest^.Z*residualAlpha +\n                     ASource^.Z*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure WordXYZASolidBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\nbegin\n  pDest := PWordXYZA(AContextData^.Dest);\n  WordXYZAChunkSetPixels( PWordXYZA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure WordXYZAChunkDrawPixels(\n    ASource: PWordXYZA; ADest: PWordXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver, srcAlphaOver, finalAlpha, finalAlphaDiv2, residualAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha >= 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n  while ACount > 0 do\n  begin\n    srcAlphaOver := (ASource^.alpha*alphaOver+32768) shr 16;\n    if srcAlphaOver >= 65535 then\n      ADest^ := ASource^\n    else\n    begin\n      if srcAlphaOver >= 32768 then inc(srcAlphaOver);\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-srcAlphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + srcAlphaOver;\n      if finalAlpha <= 0 then ADest^ := WordXYZATransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        ADest^.alpha:= finalAlpha;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.X := (ADest^.X*residualAlpha +\n                     ASource^.X*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n        ADest^.Y := (ADest^.Y*residualAlpha +\n                     ASource^.Y*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n        ADest^.Z := (ADest^.Z*residualAlpha +\n                     ASource^.Z*srcAlphaOver + finalAlphaDiv2) div finalAlpha;\n      end;\n    end;\n    inc(ADest);\n    dec(ACount);\n    inc(PByte(ASource), ASourceStride);\n  end;\nend;\n\nprocedure WordXYZASolidBrushDrawPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\nbegin\n  pDest := PWordXYZA(AContextData^.Dest);\n  WordXYZAChunkDrawPixels( PWordXYZA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure WordXYZAChunkXorPixels(\n    ASource: PWordXYZA; ADest: PWordXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\n  xored: TWordXYZA;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      PQWord(ADest)^ := PQWord(ADest)^ xor PQWord(ASource)^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      PQWord(@xored)^ := PQWord(ADest)^ xor PQWord(ASource)^;\n      residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + ((xored.alpha*alphaOver+32768) shr 16);\n      if finalAlpha <= 0 then ADest^ := WordXYZATransparent else\n      begin\n        if finalAlpha > 65535 then finalAlpha := 65535;\n        finalAlphaDiv2 := finalAlpha shr 1;\n        ADest^.alpha:= finalAlpha;\n        ADest^.X := (ADest^.X*residualAlpha +\n                     xored.X*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.Y := (ADest^.Y*residualAlpha +\n                     xored.Y*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        ADest^.Z := (ADest^.Z*residualAlpha +\n                     xored.Z*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure WordXYZASolidBrushXorPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\nbegin\n  pDest := PWordXYZA(AContextData^.Dest);\n  WordXYZAChunkXorPixels( PWordXYZA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\ntype\n  PWordXYZAScannerBrushFixedData = ^TWordXYZAScannerBrushFixedData;\n  TWordXYZAScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    Conversion: TBridgedConversion;\n  end;\n\nprocedure WordXYZAScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure WordXYZAScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PWordXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TWordXYZA), nil);\n      WordXYZAChunkSetPixels(@buf, pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerChunkBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PWordXYZA;\n  qty: Integer;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      WordXYZAChunkSetPixels(PWordXYZA(psrc), pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAChunkSetPixelsExceptTransparent(\n    ASource: PWordXYZA; ADest: PWordXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nvar\n  alphaOver: UInt32or64;\n  finalAlpha, residualAlpha, finalAlphaDiv2: UInt32or64;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      if ASource^.alpha = 65535 then ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    if AAlpha > 32768 then alphaOver := AAlpha+1 else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      if ASource^.alpha = 65535 then\n      begin\n        residualAlpha := (ADest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n        finalAlpha := residualAlpha + AAlpha;\n        if finalAlpha <= 0 then ADest^ := WordXYZATransparent else\n        begin\n          if finalAlpha > 65535 then finalAlpha := 65535;\n          finalAlphaDiv2 := finalAlpha shr 1;\n          ADest^.alpha:= finalAlpha;\n          ADest^.X := (ADest^.X*residualAlpha +\n                       ASource^.X*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n          ADest^.Y := (ADest^.Y*residualAlpha +\n                       ASource^.Y*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n          ADest^.Z := (ADest^.Z*residualAlpha +\n                       ASource^.Z*UInt32or64(finalAlpha-residualAlpha) + finalAlphaDiv2) div finalAlpha;\n        end;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure WordXYZAScannerChunkBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\n  qty: Integer;\n  psrc: Pointer;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      WordXYZAChunkSetPixelsExceptTransparent(PWordXYZA(psrc), pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerConvertBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PWordXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TWordXYZA), nil);\n      WordXYZAChunkSetPixelsExceptTransparent(@buf, pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerChunkBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      WordXYZAChunkDrawPixels(PWordXYZA(psrc), pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerConvertBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PWordXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TWordXYZA), nil);\n      WordXYZAChunkDrawPixels(@buf, pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerChunkBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      WordXYZAChunkXorPixels(PWordXYZA(psrc), pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAScannerConvertBrushXorPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PWordXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TWordXYZA;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TWordXYZA), nil);\n      WordXYZAChunkXorPixels(@buf, pDest, AAlpha, qty, sizeof(TWordXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure WordXYZAMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\n  factor: UInt32or64;\nbegin\n  with PWordXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PWordXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PWordXYZA(AContextData^.Dest);\n    if AAlpha = 65535 then\n    begin\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          if pMask^.gray >= 128 then\n            pDest^.alpha := (pDest^.alpha*(pMask^.gray+1)) shr 8\n          else pDest^.alpha := pDest^.alpha*pMask^.gray shr 8;\n          if pDest^.alpha = 0 then pDest^ := WordXYZATransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end else\n    begin\n      factor := AAlpha + (AAlpha shr 8) + (AAlpha shr 14);\n      while ACount > 0 do\n      begin\n        qty := ACount;\n        IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n        dec(ACount,qty);\n        while qty > 0 do\n        begin\n          pDest^.alpha := (pDest^.alpha*((factor*pMask^.gray+128) shr 8)) shr 16;\n          if pDest^.alpha = 0 then pDest^ := WordXYZATransparent;\n          inc(pDest);\n          inc(pMask, maskStride);\n          dec(qty);\n        end;\n      end;\n    end;\n    PWordXYZA(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure WordXYZAAlphaBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\n  alphaOver, residualAlpha, finalAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PWordXYZA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PWordXYZA(AContextData^.Dest);\n  if AAlpha=65535 then\n  begin\n    finalAlpha := PWord(AFixedData)^;\n    while ACount > 0 do\n    begin\n      pDest^.alpha := finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end else\n  begin\n    if AAlpha >= 32768 then alphaOver := AAlpha+1\n    else alphaOver := AAlpha;\n    while ACount > 0 do\n    begin\n      residualAlpha := (pDest^.alpha*UInt32or64(65536-alphaOver)+32768) shr 16;\n      finalAlpha := residualAlpha + (PWord(AFixedData)^*alphaOver+32768) shr 16;\n      if finalAlpha > 65535 then finalAlpha := 65535;\n      pDest^.alpha:= finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PWordXYZA(AContextData^.Dest) := pDest;\nend;\n\nprocedure WordXYZAAlphaBrushErasePixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PWordXYZA;\n  alphaMul, finalAlpha: UInt32or64;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PWordXYZA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PWordXYZA(AContextData^.Dest);\n  if AAlpha<>65535 then\n    alphaMul := 65535-((PWord(AFixedData)^*AAlpha+32767) div 65535)\n  else\n    alphaMul := 65535-PWord(AFixedData)^;\n  if alphaMul >= 32768 then inc(alphaMul);\n  while ACount > 0 do\n  begin\n    finalAlpha := (pDest^.alpha*alphaMul+32768) shr 16;\n    if finalAlpha <= 0 then pDest^ := WordXYZATransparent else\n      pDest^.alpha:= finalAlpha;\n    inc(pDest);\n    dec(ACount);\n  end;\n  PWordXYZA(AContextData^.Dest) := pDest;\nend;\n\n{ TWordXYZABitmap }\n\nfunction TWordXYZABitmap.InternalNew: TCustomUniversalBitmap;\nbegin\n  Result:= TWordXYZABitmap.Create;\nend;\n\nprocedure TWordXYZABitmap.AssignTransparentPixel(out ADest);\nbegin\n  TWordXYZA(ADest) := WordXYZATransparent;\nend;\n\nclass procedure TWordXYZABitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TWordXYZA; ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace:= TWordXYZAColorspace;\n  PWordXYZA(@ABrush.FixedData)^ := AColor;\n  case ADrawMode of\n    dmSet: ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSetPixels;\n\n    dmSetExceptTransparent:\n      if AColor.alpha < 65535 then\n        ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSkipPixels\n      else\n      begin\n        ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSetPixels;\n        ABrush.DoesNothing := true;\n      end;\n\n    dmDrawWithTransparency,dmLinearBlend:\n      if AColor.alpha<=0 then\n      begin\n        ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end\n      else if AColor.alpha>=1 then\n        ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSetPixels\n      else\n        ABrush.InternalPutNextPixels:= @WordXYZASolidBrushDrawPixels;\n\n    dmXor: if PQWord(@AColor)^ = 0 then\n           begin\n             ABrush.InternalPutNextPixels:= @WordXYZASolidBrushSkipPixels;\n             ABrush.DoesNothing := true;\n           end else\n             ABrush.InternalPutNextPixels:= @WordXYZASolidBrushXorPixels;\n  end;\nend;\n\nclass procedure TWordXYZABitmap.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer; AOffsetY: integer);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TWordXYZAColorspace;\n  with PWordXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @WordXYZAScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if sourceSpace = TWordXYZAColorspace then\n  begin\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @WordXYZAScannerChunkBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @WordXYZAScannerChunkBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @WordXYZAScannerChunkBrushDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @WordXYZAScannerChunkBrushXorPixels;\n    end;\n  end else\n  begin\n    with PWordXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TWordXYZAColorspace);\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @WordXYZAScannerConvertBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @WordXYZAScannerConvertBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @WordXYZAScannerConvertBrushDrawPixels;\n      dmXor: ABrush.InternalPutNextPixels:= @WordXYZAScannerConvertBrushXorPixels;\n    end;\n  end;\nend;\n\nclass procedure TWordXYZABitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TWordXYZAColorspace;\n  with PWordXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @WordXYZAScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @WordXYZAMaskBrushApply;\nend;\n\nclass procedure TWordXYZABitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, WordXYZATransparent, dmDrawWithTransparency);\n    exit;\n  end;\n  ABrush.Colorspace:= TWordXYZAColorspace;\n  PWord(@ABrush.FixedData)^ := AAlpha;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @WordXYZAAlphaBrushErasePixels;\nend;\n\nclass procedure TWordXYZABitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, WordXYZATransparent, dmSet);\n    exit;\n  end;\n  ABrush.Colorspace:= TWordXYZAColorspace;\n  PWord(@ABrush.FixedData)^ := AAlpha;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @WordXYZAAlphaBrushSetPixels;\nend;\n\nprocedure TWordXYZABitmap.ReplaceImaginary(const AAfter: TWordXYZA);\nvar\n  p: PWordXYZA;\n  n: integer;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if (p^.alpha>0) and not IsRealColor(p^) then p^ := AAfter;\n    Inc(p);\n  end;\n  InvalidateBitmap;\nend;\n\nend.\n\n"
  },
  {
    "path": "bgrabitmap/xyzabitmap.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\n\n{ @abstract(Supplies a bitmap in XYZ colorspace with floating-point values (16-bit per channel)\n  and transparency.)\n\n  Pixels are in TXYZA format, based on\n  [CIE 1931 XYZ colorspace](https://en.wikipedia.org/wiki/CIE_1931_color_space) (TXYZAColorspace).\n\n  This format is generally used as an intermediary format.\n\n  **Bitmap units**: BGRABitmap, ExpandedBitmap, BGRAGrayscaleMask, LinearRGBABitmap, WordXYZABitmap, XYZABitmap.\n}\nunit XYZABitmap;\n\n{$mode objfpc}{$H+}\n\n{$i bgrabitmap.inc}\n\n{$IFNDEF BGRABITMAP_EXTENDED_COLORSPACE}{$STOP This unit need extended colorspaces}{$ENDIF}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, BGRABitmapTypes, UniversalDrawer;\n\ntype\n  {* Bitmap with TXYZA pixel format, [CIE 1931 XYZ](https://en.wikipedia.org/wiki/CIE_1931_color_space)\n     with floating point values. }\n  TXYZABitmap = class(specialize TGenericUniversalBitmap<TXYZA,TXYZAColorspace>)\n  protected\n    function InternalNew: TCustomUniversalBitmap; override;\n    procedure AssignTransparentPixel(out ADest); override;\n  public\n    class procedure SolidBrush(out ABrush: TUniversalBrush; const AColor: TXYZA; ADrawMode: TDrawMode = dmDrawWithTransparency); override;\n    class procedure ScannerBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner; ADrawMode: TDrawMode = dmDrawWithTransparency;\n                                 AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure MaskBrush(out ABrush: TUniversalBrush; AScanner: IBGRAScanner;\n                              AOffsetX: integer = 0; AOffsetY: integer = 0); override;\n    class procedure EraseBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    class procedure AlphaBrush(out ABrush: TUniversalBrush; AAlpha: Word); override;\n    {** Replaces imaginary colors by the _AAfter_ }\n    procedure ReplaceImaginary(const AAfter: TXYZA);\n  end;\n\nconst\n  XYZATransparent : TXYZA = (X:0; Y:0; Z:0; alpha:0);\n\noperator = (const c1, c2: TXYZA): boolean; inline;\n{ Checks that the color is real, meaning that it can be experienced. To be real a color\n  need to have positive values and be a possible stimulation of the cones. The latter\n  are not independant so for example the green cones cannot be stimulated alone. }\nfunction IsRealColor(xyza: TXYZA): boolean;\n\nimplementation\n\nuses BGRAFillInfo;\n\noperator = (const c1, c2: TXYZA): boolean;\nbegin\n  if (c1.alpha = 0) and (c2.alpha = 0) then\n    Result := True\n  else\n    Result := (c1.alpha = c2.alpha) and (c1.X = c2.X) and\n      (c1.Y = c2.Y) and (c1.Z = c2.Z);\nend;\n\nvar\n  xyHorseshoePolygon: TFillShapeInfo;\n\nprocedure MakeXYHorseshoePolygon;\nvar\n  pts: array of TPointF;\n  i: Integer;\n  n: Single;\nbegin\n  setlength(pts, length(SpectralLocus));\n  for i := 0 to high(pts) do\n  begin\n    n := SpectralLocus[i].X+SpectralLocus[i].Y+SpectralLocus[i].Z;\n    pts[i].x := SpectralLocus[i].X/n;\n    pts[i].y := SpectralLocus[i].Y/n;\n  end;\n  xyHorseshoePolygon := TFillPolyInfo.Create(pts, false);\n  pts := nil;\nend;\n\nfunction IsRealColor(xyza: TXYZA): boolean;\nconst dim = 0.015;\nvar\n  n: Single;\nbegin\n  xyza.ChromaticAdapt(GetReferenceWhiteIndirect^, ReferenceWhite2E);\n  if (xyza.Y < 0) or (xyza.Y > 1) or (xyza.X < 0) or (xyza.Z < 0) then exit(false);\n  if (xyza.Y = 0) then exit((xyza.X=0) and (xyza.Z=0));\n  if xyHorseshoePolygon = nil then MakeXYHorseshoePolygon;\n  n := xyza.X + xyza.Y + xyza.Z;\n  result := xyHorseshoePolygon.IsPointInside(xyza.X/n*(1-dim)+1/3*dim, xyza.Y/n*(1-dim)+1/3*dim, false);\nend;\n\nprocedure XYZASolidBrushSkipPixels({%H-}AFixedData: Pointer;\n    AContextData: PUniBrushContext; {%H-}AAlpha: Word; ACount: integer);\nbegin\n  inc(PXYZA(AContextData^.Dest), ACount);\nend;\n\nprocedure XYZAChunkSetPixels(\n    ASource: PXYZA; ADest: PXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      residualAlpha := ADest^.alpha*(1-alphaOver);\n      finalAlpha := residualAlpha + ASource^.alpha*alphaOver;\n      if finalAlpha <= 0 then ADest^ := XYZATransparent else\n      begin\n        if finalAlpha > 1 then finalAlpha := 1;\n        ADest^.alpha:= finalAlpha;\n        finalAlphaInv := 1/finalAlpha;\n        ADest^.X := (ADest^.X*residualAlpha +\n                     ASource^.X*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        ADest^.Y := (ADest^.Y*residualAlpha +\n                     ASource^.Y*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        ADest^.Z := (ADest^.Z*residualAlpha +\n                     ASource^.Z*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure XYZASolidBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PXYZA;\nbegin\n  pDest := PXYZA(AContextData^.Dest);\n  XYZAChunkSetPixels( PXYZA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\nprocedure XYZAChunkDrawPixels(\n    ASource: PXYZA; ADest: PXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, srcAlphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  alphaOver := AAlpha*single(oneOver65535);\n  while ACount > 0 do\n  begin\n    srcAlphaOver := ASource^.alpha*alphaOver;\n    if srcAlphaOver >= 1 then\n      ADest^ := ASource^\n    else\n    begin\n      residualAlpha := ADest^.alpha*(1-srcAlphaOver);\n      finalAlpha := residualAlpha + srcAlphaOver;\n      if finalAlpha <= 0 then ADest^ := XYZATransparent else\n      begin\n        if finalAlpha > 1 then finalAlpha := 1;\n        ADest^.alpha:= finalAlpha;\n        finalAlphaInv := 1/finalAlpha;\n        ADest^.X := (ADest^.X*residualAlpha +\n                     ASource^.X*srcAlphaOver ) * finalAlphaInv;\n        ADest^.Y := (ADest^.Y*residualAlpha +\n                     ASource^.Y*srcAlphaOver ) * finalAlphaInv;\n        ADest^.Z := (ADest^.Z*residualAlpha +\n                     ASource^.Z*srcAlphaOver ) * finalAlphaInv;\n      end;\n    end;\n    inc(ADest);\n    dec(ACount);\n    inc(PByte(ASource), ASourceStride);\n  end;\nend;\n\nprocedure XYZASolidBrushDrawPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PXYZA;\nbegin\n  pDest := PXYZA(AContextData^.Dest);\n  XYZAChunkDrawPixels( PXYZA(AFixedData), pDest, AAlpha, ACount, 0);\n  inc(pDest, ACount);\n  AContextData^.Dest := pDest;\nend;\n\ntype\n  PXYZAScannerBrushFixedData = ^TXYZAScannerBrushFixedData;\n  TXYZAScannerBrushFixedData = record\n    Scanner: Pointer; //avoid ref count by using pointer type\n    OffsetX, OffsetY: integer;\n    Conversion: TBridgedConversion;\n  end;\n\nprocedure XYZAScannerBrushInitContext(AFixedData: Pointer;\n  AContextData: PUniBrushContext);\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n    IBGRAScanner(Scanner).ScanMoveTo(AContextData^.Ofs.X + OffsetX,\n                                     AContextData^.Ofs.Y + OffsetY);\nend;\n\nprocedure XYZAScannerConvertBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TXYZA;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TXYZA), nil);\n      XYZAChunkSetPixels(@buf, pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAScannerChunkBrushSetPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PXYZA;\n  qty: Integer;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      XYZAChunkSetPixels(PXYZA(psrc), pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAChunkSetPixelsExceptTransparent(\n    ASource: PXYZA; ADest: PXYZA;\n    AAlpha: Word; ACount: integer; ASourceStride: integer); inline;\nconst oneOver65535 = 1/65535;\nvar\n  alphaOver, finalAlpha, finalAlphaInv, residualAlpha: single;\nbegin\n  if AAlpha=0 then exit;\n  if AAlpha=65535 then\n  begin\n    while ACount > 0 do\n    begin\n      if ASource^.alpha >= 1 then\n        ADest^ := ASource^;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      if ASource^.alpha >= 1 then\n      begin\n        residualAlpha := ADest^.alpha*(1-alphaOver);\n        finalAlpha := residualAlpha + alphaOver;\n        if finalAlpha <= 0 then ADest^ := XYZATransparent else\n        begin\n          ADest^.alpha:= finalAlpha;\n          finalAlphaInv := 1/finalAlpha;\n          ADest^.X := (ADest^.X*residualAlpha +\n                       ASource^.X*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n          ADest^.Y := (ADest^.Y*residualAlpha +\n                       ASource^.Y*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n          ADest^.Z := (ADest^.Z*residualAlpha +\n                       ASource^.Z*(finalAlpha-residualAlpha) ) * finalAlphaInv;\n        end;\n      end;\n      inc(ADest);\n      dec(ACount);\n      inc(PByte(ASource), ASourceStride);\n    end;\n  end;\nend;\n\nprocedure XYZAScannerChunkBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PXYZA;\n  qty: Integer;\n  psrc: Pointer;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      XYZAChunkSetPixelsExceptTransparent(PXYZA(psrc), pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAScannerConvertBrushSetPixelsExceptTransparent(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TXYZA;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TXYZA), nil);\n      XYZAChunkSetPixelsExceptTransparent(@buf, pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAScannerChunkBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  qty: Integer;\n  pDest: PXYZA;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      XYZAChunkDrawPixels(PXYZA(psrc), pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAScannerConvertBrushDrawPixels(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  psrc: Pointer;\n  pDest: PXYZA;\n  qty, pixSize: Integer;\n  buf: packed array[0..7] of TXYZA;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    pixSize := IBGRAScanner(Scanner).GetScanCustomColorspace.GetSize;\n    while ACount > 0 do\n    begin\n      if ACount > length(buf) then qty := length(buf) else qty := ACount;\n      IBGRAScanner(Scanner).ScanNextCustomChunk(qty, psrc);\n      Conversion.Convert(psrc, @buf, qty, pixSize, sizeof(TXYZA), nil);\n      XYZAChunkDrawPixels(@buf, pDest, AAlpha, qty, sizeof(TXYZA) );\n      inc(pDest, qty);\n      dec(ACount, qty);\n    end;\n    AContextData^.Dest := pDest;\n  end;\nend;\n\nprocedure XYZAMaskBrushApply(AFixedData: Pointer;\n  AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nvar\n  pDest: PXYZA;\n  qty, maskStride: Integer;\n  pMask: PByteMask;\n  factor: single;\nbegin\n  with PXYZAScannerBrushFixedData(AFixedData)^ do\n  begin\n    if AAlpha = 0 then\n    begin\n      inc(PXYZA(AContextData^.Dest), ACount);\n      IBGRAScanner(Scanner).ScanSkipPixels(ACount);\n      exit;\n    end;\n    pDest := PXYZA(AContextData^.Dest);\n    factor := AAlpha/(65535*255);\n    while ACount > 0 do\n    begin\n      qty := ACount;\n      IBGRAScanner(Scanner).ScanNextMaskChunk(qty, pMask, maskStride);\n      dec(ACount,qty);\n      while qty > 0 do\n      begin\n        pDest^.alpha := pDest^.alpha*pMask^.gray*factor;\n        if pDest^.alpha = 0 then pDest^ := XYZATransparent;\n        inc(pDest);\n        inc(pMask, maskStride);\n        dec(qty);\n      end;\n    end;\n    PXYZA(AContextData^.Dest) := pDest;\n  end;\nend;\n\nprocedure XYZAAlphaBrushSetPixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nconst oneOver65535 = 1/65535;\nvar\n  pDest: PXYZA;\n  alphaOver, residualAlpha, finalAlpha: single;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PXYZA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PXYZA(AContextData^.Dest);\n  if AAlpha=65535 then\n  begin\n    finalAlpha := PSingle(AFixedData)^;\n    while ACount > 0 do\n    begin\n      pDest^.alpha := finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end else\n  begin\n    alphaOver := AAlpha*single(oneOver65535);\n    while ACount > 0 do\n    begin\n      residualAlpha := pDest^.alpha*(1-alphaOver);\n      finalAlpha := residualAlpha + PSingle(AFixedData)^*alphaOver;\n      pDest^.alpha:= finalAlpha;\n      inc(pDest);\n      dec(ACount);\n    end;\n  end;\n  PXYZA(AContextData^.Dest) := pDest;\nend;\n\nprocedure XYZAAlphaBrushErasePixels(AFixedData: Pointer;\n    AContextData: PUniBrushContext; AAlpha: Word; ACount: integer);\nconst oneOver65535 = 1/65535;\nvar\n  pDest: PXYZA;\n  alphaMul, finalAlpha: single;\nbegin\n  if AAlpha=0 then\n  begin\n    inc(PXYZA(AContextData^.Dest), ACount);\n    exit;\n  end;\n  pDest := PXYZA(AContextData^.Dest);\n  if AAlpha<>65535 then\n    alphaMul := 1-PSingle(AFixedData)^*AAlpha*single(oneOver65535)\n  else\n    alphaMul := 1-PSingle(AFixedData)^;\n  while ACount > 0 do\n  begin\n    finalAlpha := pDest^.alpha*alphaMul;\n    if finalAlpha <= 0 then pDest^ := XYZATransparent else\n      pDest^.alpha:= finalAlpha;\n    inc(pDest);\n    dec(ACount);\n  end;\n  PXYZA(AContextData^.Dest) := pDest;\nend;\n\n{ TXYZABitmap }\n\nfunction TXYZABitmap.InternalNew: TCustomUniversalBitmap;\nbegin\n  Result:= TXYZABitmap.Create;\nend;\n\nprocedure TXYZABitmap.AssignTransparentPixel(out ADest);\nbegin\n  TXYZA(ADest) := XYZATransparent;\nend;\n\nclass procedure TXYZABitmap.SolidBrush(out ABrush: TUniversalBrush;\n  const AColor: TXYZA; ADrawMode: TDrawMode);\nbegin\n  ABrush.Colorspace:= TXYZAColorspace;\n  PXYZA(@ABrush.FixedData)^ := AColor;\n  case ADrawMode of\n    dmSet: ABrush.InternalPutNextPixels:= @XYZASolidBrushSetPixels;\n\n    dmSetExceptTransparent:\n      if AColor.alpha < 1 then\n        ABrush.InternalPutNextPixels:= @XYZASolidBrushSkipPixels\n      else\n      begin\n        ABrush.InternalPutNextPixels:= @XYZASolidBrushSetPixels;\n        ABrush.DoesNothing := true;\n      end;\n\n    dmDrawWithTransparency,dmLinearBlend:\n      if AColor.alpha<=0 then\n      begin\n        ABrush.InternalPutNextPixels:= @XYZASolidBrushSkipPixels;\n        ABrush.DoesNothing := true;\n      end\n      else if AColor.alpha>=1 then\n        ABrush.InternalPutNextPixels:= @XYZASolidBrushSetPixels\n      else\n        ABrush.InternalPutNextPixels:= @XYZASolidBrushDrawPixels;\n\n    dmXor: raise exception.Create('Xor mode not available with floating point values');\n  end;\nend;\n\nclass procedure TXYZABitmap.ScannerBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; ADrawMode: TDrawMode;\n  AOffsetX: integer; AOffsetY: integer);\nvar\n  sourceSpace: TColorspaceAny;\nbegin\n  ABrush.Colorspace:= TXYZAColorspace;\n  with PXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @XYZAScannerBrushInitContext;\n  sourceSpace := AScanner.GetScanCustomColorspace;\n  if sourceSpace = TXYZAColorspace then\n  begin\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @XYZAScannerChunkBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @XYZAScannerChunkBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @XYZAScannerChunkBrushDrawPixels;\n      dmXor: raise exception.Create('Xor mode not available with floating point values');\n    end;\n  end else\n  begin\n    with PXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n      Conversion := sourceSpace.GetBridgedConversion(TXYZAColorspace);\n    case ADrawMode of\n      dmSet: ABrush.InternalPutNextPixels:= @XYZAScannerConvertBrushSetPixels;\n      dmSetExceptTransparent: ABrush.InternalPutNextPixels:= @XYZAScannerConvertBrushSetPixelsExceptTransparent;\n      dmDrawWithTransparency,dmLinearBlend:\n        ABrush.InternalPutNextPixels:= @XYZAScannerConvertBrushDrawPixels;\n      dmXor: raise exception.Create('Xor mode not available with floating point values');\n    end;\n  end;\nend;\n\nclass procedure TXYZABitmap.MaskBrush(out ABrush: TUniversalBrush;\n  AScanner: IBGRAScanner; AOffsetX: integer; AOffsetY: integer);\nbegin\n  ABrush.Colorspace:= TXYZAColorspace;\n  with PXYZAScannerBrushFixedData(@ABrush.FixedData)^ do\n  begin\n    Scanner := Pointer(AScanner);\n    OffsetX := AOffsetX;\n    OffsetY := AOffsetY;\n  end;\n  ABrush.InternalInitContext:= @XYZAScannerBrushInitContext;\n  ABrush.InternalPutNextPixels:= @XYZAMaskBrushApply;\nend;\n\nclass procedure TXYZABitmap.EraseBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, XYZATransparent, dmDrawWithTransparency);\n    exit;\n  end;\n  ABrush.Colorspace:= TXYZAColorspace;\n  PSingle(@ABrush.FixedData)^ := AAlpha/65535;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @XYZAAlphaBrushErasePixels;\nend;\n\nclass procedure TXYZABitmap.AlphaBrush(out ABrush: TUniversalBrush;\n  AAlpha: Word);\nbegin\n  if AAlpha = 0 then\n  begin\n    SolidBrush(ABrush, XYZATransparent, dmSet);\n    exit;\n  end;\n  ABrush.Colorspace:= TXYZAColorspace;\n  PSingle(@ABrush.FixedData)^ := AAlpha/65535;\n  ABrush.InternalInitContext:= nil;\n  ABrush.InternalPutNextPixels:= @XYZAAlphaBrushSetPixels;\nend;\n\nprocedure TXYZABitmap.ReplaceImaginary(const AAfter: TXYZA);\nvar\n  p: PXYZA;\n  n: integer;\nbegin\n  p := Data;\n  for n := NbPixels - 1 downto 0 do\n  begin\n    if (p^.alpha>0) and not IsRealColor(p^) then p^ := AAfter;\n    Inc(p);\n  end;\n  InvalidateBitmap;\nend;\n\nfinalization\n\n  xyHorseshoePolygon.Free;\n\nend.\n\n"
  },
  {
    "path": "commit.sh",
    "content": "#!/bin/bash\n#git checkout HEAD~ -- <file to cancel>\ngit add .\ngit status\necho \"Type commit description (or press Enter to cancel):\"\nread commitdesc\nif test -z \"$commitdesc\"\nthen\n  git reset --\nelse\n  git commit -m \"$commitdesc\"\nfi\ncd ..\n"
  },
  {
    "path": "dev/assistant/builddata.py",
    "content": "# BGRABitmap Assistant: https://chat.openai.com/g/g-FO7aiutRx-bgrabitmap-assistant\n# This program extracts method signatures in BGRABitmap to help provide accurate examples\n\nimport os\nimport re\n\ndef gather_method_signatures(source_dir):\n    print(\"Source directory:\", source_dir)\n    regexMethod = r\"(?P<proc_or_fun>procedure|function)\\s+(?P<class>\\w+)\\.(?P<method>\\w+)(\\((?P<parameters>[^)]*)\\))?(:(?P<return_type>[^;]+))?;\"\n    patternMethod = re.compile(regexMethod)\n    signatures = []\n    classes = set()\n\n    for root, dirs, files in os.walk(source_dir):\n        for file in files:\n            if file.endswith('.pas') or file.endswith('.inc'):\n                print(\"Source file:\", file)\n                with open(os.path.join(root, file), 'r') as source_file:\n                    content = source_file.read()\n                    matches = patternMethod.finditer(content)\n\n                    for match in matches:\n                        proc_or_fun = match.group('proc_or_fun')\n                        class_name = match.group('class')\n                        method_name = match.group('method')\n                        parameters = match.group('parameters')\n                        if parameters is None: \n                            parameters = \"\"\n                        else:\n                            parameters = re.sub(r'\\s', '', parameters).replace(':', ': ').replace(';', '; ')\n                        return_type = match.group('return_type')\n                        if return_type is None:\n                            return_type = \"\"\n                        else:\n                            return_type = return_type.strip()\n                        method_signature = f'{proc_or_fun} {class_name}.{method_name}({parameters})'\n                        if proc_or_fun == \"function\":\n                            method_signature += f': {return_type}'\n                        signatures.append(f\"{method_signature}; {{in {file}}}\")\n                        classes.add(class_name)\n    return signatures, classes\n\napp_directory = os.path.dirname(__file__)\nsource_directory = os.path.join(app_directory, '../../bgrabitmap')\nsignatures, classes = gather_method_signatures(source_directory)\ntarget_file = os.path.join(app_directory, 'all.pas')\nwith open(target_file, \"w\") as file:\n    for line in signatures:\n        file.write(line + \"\\n\")\ntarget_file = os.path.join(app_directory, 'all_classes.txt')\nwith open(target_file, \"w\") as file:\n    file.write(\", \".join(classes))\n"
  },
  {
    "path": "dev/colorspace/generatecolorspaces.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"generatecolorspaces\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"generatecolorspaces.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unitmakerunit.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"UnitMakerUnit\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"generatecolorspaces\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Other>\n      <CustomOptions Value=\"-dColorHelpersMaker\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "dev/colorspace/generatecolorspaces.lpr",
    "content": "program generatecolorspaces;\n\nuses UnitMakerUnit;\n\nbegin\n  GenerateCode;\nend.\n\n"
  },
  {
    "path": "dev/colorspace/unitmakerunit.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit UnitMakerUnit;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, typinfo, rttiutils;\n\n{ Table of working colorspaces (where blending could be done)\n\n              |  Byte            Word            Single\n--------------+---------------------------------------------\nsRGB          |  BGRAPixel       FPColor         StdRGBA\nAdobe RGB     |  AdobeRGBA\ngray          |  ByteMask        (WordMask)\nlinear RGB    |                  ExpandedPixel   LinearRGBA\nXYZ           |                  WordXYZA        XYZA\n\n}\n\ntype\n  TColorspaceEnum = (csColor, csBGRAPixel, csFPColor, csStdRGBA, //sRGB\n    csAdobeRGBA,\n    csStdHSLA, csStdHSVA, csStdCMYK,               //based on sRGB\n    csByteMask, {csWordMask,}                      //linear grayscale\n    csExpandedPixel, csLinearRGBA,                 //linear RGB\n    csHSLAPixel, csGSBAPixel,                      //based on linear RGB\n    csYCbCr601, csYCbCr601JPEG, csYCbCr709, csYCbCr709JPEG,  //based on sRGB\n    csXYZA, csWordXYZA,                            //CIE XYZ\n    csLabA, csLChA);                               //based on XYZ\n\n  TChannelValueType = (cvtByte, cvtWord, cvtLongWord, cvtSingle, cvtDouble);\n\nconst\n  BasicColorspaces = [csColor, csBGRAPixel, csFPColor,csExpandedPixel, csByteMask];\n  ChannelValueTypeName : array[TChannelValueType] of string = ('byte', 'word', 'longword', 'single', 'double');\n  ChannelValueTypeFriendlyName : array[TChannelValueType] of string = ('8-bit', '16-bit', '32-bit integer',\n                                  '32-bit floating point', '64-bit floating point');\n  ChannelValueTypePrecision : array[TChannelValueType] of integer = (1, 2, 4, 2, 6);\n  ChannelValueTypeBitDepth : array[TChannelValueType] of integer = (8, 16, 32, 28, 58);\n  MAXWORD = $ffff;\n\ntype\n  TColorspaceInfo = record\n    Name: string;\n    Declaration: string;\n    Colorspace: string;\n    HasAlpha, NeedRefWhite: boolean;\n    ValueType: TChannelValueType;\n    BasicHelper: boolean;\n    VariableNames, FullNames, MinMax: string;\n    IsBridge, HasImaginary: boolean;\n  end;\n\nconst\n  ColorspaceInfo: array [TColorspaceEnum] of TColorspaceInfo =\n  ((Name: 'Color';         Declaration: 'type helper';   Colorspace: 'StdRGB';      HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtByte;    BasicHelper: false;\n   VariableNames: 'red,green,blue';                      FullNames: 'Red,Green,Blue';                 MinMax: '0,0,0,255,255,255';                IsBridge: false; HasImaginary: false),\n   (Name: 'BGRAPixel';     Declaration: 'record helper'; Colorspace: 'StdRGB';      HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtByte;    BasicHelper: true;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,255,255,255,255';          IsBridge: false; HasImaginary: false),\n   (Name: 'FPColor';       Declaration: 'record helper'; Colorspace: 'StdRGB';      HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtWord;    BasicHelper: true;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,65535,65535,65535,65535';  IsBridge: false; HasImaginary: false),\n\n   (Name: 'StdRGBA';       Declaration: 'packed record'; Colorspace: 'StdRGB';      HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,1,1,1,1';                  IsBridge: false; HasImaginary: false),\n   (Name: 'AdobeRGBA';     Declaration: 'packed record'; Colorspace: 'AdobeRGB';    HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtByte;    BasicHelper: false;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,255,255,255,255';          IsBridge: false; HasImaginary: false),\n\n   (Name: 'StdHSLA';       Declaration: 'packed record'; Colorspace: 'StdHSL';      HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'hue,saturation,lightness,alpha';      FullNames: 'Hue,Saturation,Lightness,Alpha'; MinMax: '0,0,0,0,360,1,1,1';                IsBridge: false; HasImaginary: false),\n   (Name: 'StdHSVA';       Declaration: 'packed record'; Colorspace: 'StdHSV';      HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'hue,saturation,value,alpha';          FullNames: 'Hue,Saturation,Value,Alpha';     MinMax: '0,0,0,0,360,1,1,1';                IsBridge: false; HasImaginary: false),\n   (Name: 'StdCMYK';       Declaration: 'packed record'; Colorspace: 'StdCMYK';     HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'C,M,Y,K';                             FullNames: 'Cyan,Magenta,Yellow,Black';      MinMax: '0,0,0,0,1,1,1,1';                  IsBridge: false; HasImaginary: false),\n\n   (Name: 'ByteMask';      Declaration: 'packed record'; Colorspace: 'Grayscale';   HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtByte;    BasicHelper: false;\n   VariableNames: 'gray';                                FullNames: 'Gray';         MinMax: '0,255';                                              IsBridge: false; HasImaginary: false),\n{   (Name: 'WordMask';      Declaration: 'packed record'; Colorspace: 'Grayscale';  HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtWord;    BasicHelper: false;\n   VariableNames: 'gray';                                FullNames: 'Gray';         MinMax: '0,65535';                                            IsBridge: false; HasImaginary: false),}\n\n   (Name: 'ExpandedPixel'; Declaration: 'record helper'; Colorspace: 'LinearRGB';   HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtWord;    BasicHelper: true;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,65535,65535,65535,65535';  IsBridge: true; HasImaginary: false),\n   (Name: 'LinearRGBA';    Declaration: 'packed record'; Colorspace: 'LinearRGB';   HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'red,green,blue,alpha';                FullNames: 'Red,Green,Blue,Alpha';           MinMax: '0,0,0,0,1,1,1,1';                  IsBridge: false; HasImaginary: false),\n\n   (Name: 'HSLAPixel';     Declaration: 'record helper'; Colorspace: 'HSL';         HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtWord;    BasicHelper: true;\n   VariableNames: 'hue,saturation,lightness,alpha';      FullNames: 'Hue,Saturation,Lightness,Alpha'; MinMax: '0,0,0,0,65535,65535,65535,65535';  IsBridge: false; HasImaginary: false),\n   (Name: 'GSBAPixel';     Declaration: 'record helper'; Colorspace: 'GSB';         HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtWord;    BasicHelper: true;\n   VariableNames: 'hue,saturation,lightness,alpha';      FullNames: 'Hue,Saturation,Brightness,Alpha';MinMax: '0,0,0,0,65535,65535,65535,65535';  IsBridge: false; HasImaginary: false),\n\n   (Name: 'YCbCr601';      Declaration: 'packed record'; Colorspace: 'YCbCr BT.601';HasAlpha: false;       NeedRefWhite: false;  ValueType: cvtSingle; BasicHelper: false;\n   VariableNames: 'Y,Cb,Cr';                             FullNames: 'Luma,BlueDiff,RedDiff';               MinMax: '16,16,16,235,240,240';             IsBridge: false; HasImaginary: true),\n   (Name: 'YCbCr601JPEG';  Declaration: 'packed record'; Colorspace: 'YCbCr BT.601 JPEG';HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtSingle; BasicHelper: false;\n   VariableNames: 'Y,Cb,Cr';                             FullNames: 'Luma,BlueDiff,RedDiff';               MinMax: '0,0.5,0.5,255,255.5,255.5';        IsBridge: false; HasImaginary: true),\n\n   (Name: 'YCbCr709';      Declaration: 'packed record'; Colorspace: 'YCbCr BT.709';HasAlpha: false;       NeedRefWhite: false;  ValueType: cvtSingle; BasicHelper: false;\n   VariableNames: 'Y,Cb,Cr';                             FullNames: 'Luma,BlueDiff,RedDiff';               MinMax: '16,16,16,235,240,240';             IsBridge: false; HasImaginary: true),\n   (Name: 'YCbCr709JPEG';  Declaration: 'packed record'; Colorspace: 'YCbCr BT.709 JPEG';HasAlpha: false;  NeedRefWhite: false;  ValueType: cvtSingle; BasicHelper: false;\n   VariableNames: 'Y,Cb,Cr';                             FullNames: 'Luma,BlueDiff,RedDiff';               MinMax: '0,0.5,0.5,255,255.5,255.5';        IsBridge: false; HasImaginary: true),\n\n   (Name: 'XYZA';          Declaration: 'packed record'; Colorspace: 'CIE XYZ';     HasAlpha: true;   NeedRefWhite: true;   ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'X,Y,Z,alpha';                         FullNames: 'X,Y,Z,Alpha';                    MinMax: '0,0,0,0,1,1,1,1';                  IsBridge: false; HasImaginary: true),\n   (Name: 'WordXYZA';      Declaration: 'packed record'; Colorspace: 'CIE XYZ';     HasAlpha: true;   NeedRefWhite: true;   ValueType: cvtWord;    BasicHelper: false;\n   VariableNames: 'X,Y,Z,alpha';                         FullNames: 'X,Y,Z,Alpha';                    MinMax: '0,0,0,0,50000,50000,50000,65535';  IsBridge: false; HasImaginary: true),\n\n   (Name: 'LabA';          Declaration: 'packed record'; Colorspace: 'CIE Lab';     HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'L,a,b,alpha';                         FullNames: 'Lightness,a,b,Alpha';            MinMax: '0,-166,-132,0,100,142,147,1';      IsBridge: false; HasImaginary: true),\n   (Name: 'LChA';          Declaration: 'packed record'; Colorspace: 'CIE LCh';     HasAlpha: true;   NeedRefWhite: false;  ValueType: cvtSingle;  BasicHelper: false;\n   VariableNames: 'L,C,h,alpha';                         FullNames: 'Lightness,Chroma,Hue,Alpha';     MinMax: '0,0,0,0,100,192,360,1';            IsBridge: false; HasImaginary: true) );\n\ntype\n  TColorPair = record\n    First, Last: TColorspaceEnum;\n    ToFirstFunc, ToLastFunc: string;\n    HandlesExtraAlpha: boolean;\n    Weight: integer;\n  end;\n\ntype\n  TColorspaceArray = array of TColorspaceEnum;\n\n  TPath = array of record\n            PairIndex: integer;\n            Reverse: boolean;\n          end;\n  TPathArray = array of TPath;\n\nvar\n  PairsList: array of TColorPair;\n  PathMatrix: packed array[TColorspaceEnum, TColorspaceEnum] of Word;\n  ConvMatrix: packed array[TColorspaceEnum, TColorspaceEnum] of boolean;\n  ConvBridgeMatrix: packed array[TColorspaceEnum, TColorspaceEnum] of TColorspaceEnum;\n\nfunction FindPath(AFrom, ATo: TColorspaceEnum): TColorspaceArray;\nfunction NewColorPair(AFirst, ALast: TColorspaceEnum;\n                      AToFirstFunc, AToLastFunc: string;\n                      AHandlesExtraAlpha: boolean; AWeight: integer): TColorPair;\nprocedure AddColorPair(AFirst, ALast: TColorspaceEnum;\n                       AToFirstFunc : string = ''; AToLastFunc: string = '';\n                       AHandlesExtraAlpha: boolean = true;\n                       AWeight: integer = 1);\nfunction GetConversionFunction(AFrom, ATo: TColorspaceEnum): string;\nprocedure AddAlphaPairs;\nprocedure GenerateCode;\n\nimplementation\n\nuses math;\n\nfunction IsHelperOnly(cs: TColorspaceEnum): boolean;\nbegin\n  result := ColorspaceInfo[cs].Declaration.EndsWith(' helper');\nend;\n\nprocedure AddColorPair(AFirst, ALast: TColorspaceEnum;\n                       AToFirstFunc : string = ''; AToLastFunc: string = '';\n                       AHandlesExtraAlpha: boolean = true;\n                       AWeight: integer = 1);\nbegin\n  SetLength(PairsList, Length(PairsList) + 1);\n  if AToFirstFunc = '' then AToFirstFunc:= ColorspaceInfo[ALast].Name + 'To' + ColorspaceInfo[AFirst].Name;\n  if AToLastFunc = '' then AToLastFunc:= ColorspaceInfo[AFirst].Name + 'To' + ColorspaceInfo[ALast].Name;\n  PairsList[Length(PairsList) - 1] := NewColorPair(AFirst, ALast, AToFirstFunc, AToLastFunc, AHandlesExtraAlpha, AWeight);\nend;\n\nfunction GetConversionFunction(AFrom, ATo: TColorspaceEnum; out AHandlesExtraAlpha: boolean): string;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(PairsList) do\n    if (PairsList[i].First = AFrom) and (PairsList[i].Last = ATo) and (PairsList[i].ToLastFunc <> '') then\n    begin\n      AHandlesExtraAlpha := PairsList[i].HandlesExtraAlpha;\n      exit(PairsList[i].ToLastFunc)\n    end\n    else if (PairsList[i].First = ATo) and (PairsList[i].Last = AFrom) and (PairsList[i].ToFirstFunc <> '') then\n    begin\n      AHandlesExtraAlpha := PairsList[i].HandlesExtraAlpha;\n      exit(PairsList[i].ToFirstFunc);\n    end;\n\n  result := ColorspaceInfo[AFrom].Name + 'To' + ColorspaceInfo[ATo].Name;\n  AHandlesExtraAlpha := ConvMatrix[AFrom,ATo];\nend;\n\nfunction GetConversionFunction(AFrom, ATo: TColorspaceEnum): string;\nvar AHandlesExtraAlpha: boolean;\nbegin\n  result := GetConversionFunction(AFrom,ATo,AHandlesExtraAlpha);\nend;\n\nfunction NeedXYZReferenceWhite(c1,c2: TColorspaceEnum): boolean;\nbegin\n  result := (ColorspaceInfo[c1].NeedRefWhite or ColorspaceInfo[c2].NeedRefWhite) and not\n            ([c1,c2] = [csXYZA,csWordXYZA]);\nend;\n\nfunction GetConversionFunctionRec(c1, c2: TColorspaceEnum; AValueParam: string; AReferenceWhiteParam: string = ''): string;\nvar\n  c, cBridge: TColorspaceEnum;\n\n  procedure AppendConv(ATo: TColorspaceEnum);\n  begin\n    if (AReferenceWhiteParam <> '') and NeedXYZReferenceWhite(c,ATo) then\n      result := GetConversionFunction(c,ATo)+'('+result+','+AReferenceWhiteParam+')'\n    else\n      result := GetConversionFunction(c,ATo)+'('+result+')';\n    c := ATo;\n  end;\n\nbegin\n  result := AValueParam;\n  c := c1;\n  while c <> c2 do\n  begin\n    if ConvMatrix[c,c2] then AppendConv(c2) else\n    begin\n      cBridge := ConvBridgeMatrix[c,c2];\n      if cBridge = low(TColorspaceEnum) then\n        raise exception.Create('Conversion bridge not found');\n      AppendConv(cBridge);\n    end;\n  end;\nend;\n\nprocedure AddAlphaPairs;\nvar\n  i, j: TColorspaceEnum;\nbegin\n  for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n    for j := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n      if (ColorspaceInfo[j].Name = ColorspaceInfo[i].Name + 'A') and\n         (ColorspaceInfo[j].HasAlpha and not ColorspaceInfo[i].HasAlpha) then\n      begin\n        AddColorPair(i, j);\n        AddColorPair(j, i);\n      end;\nend;\n\nfunction FindPathRec(AFrom, ATo: TColorspaceEnum; AEnd: TPath;\n  ARemainLen: Word; AWantedPrecision: integer): TPathArray;\nvar\n  i, j: Integer;\n  cs: TColorspaceEnum;\n  subEnd: TPath;\n  subResult: TPathArray;\nbegin\n  result := nil;\n  for cs := low(TColorspaceEnum) to high(TColorspaceEnum) do\n    if (PathMatrix[AFrom,cs] = ARemainLen-1) and\n      (ChannelValueTypePrecision[ColorspaceInfo[cs].ValueType] >= AWantedPrecision) then\n    begin\n      for i := 0 to high(PairsList) do\n      if ((PairsList[i].First = cs) and (PairsList[i].Last = ATo)) or\n        ((PairsList[i].Last = cs) and (PairsList[i].First = ATo))  then\n      begin\n        subEnd := nil;\n        setLength(subEnd, length(AEnd)+1);\n        for j := 0 to high(AEnd) do\n          subEnd[j+1] := AEnd[j];\n        subEnd[0].PairIndex := i;\n        subEnd[0].Reverse:= PairsList[i].Last = cs;\n\n        if ARemainLen <= 1 then\n        begin\n          setlength(result, length(result)+1);\n          result[high(result)] := subEnd;\n        end else\n        begin\n          subResult := FindPathRec(AFrom,cs, subEnd, ARemainLen-1, AWantedPrecision);\n          for j := 0 to high(subResult) do\n          begin\n            setlength(result, length(result)+1);\n            result[high(result)] := subResult[j];\n          end;\n        end;\n        break;\n      end;\n    end;\nend;\n\nfunction FindPath(AFrom, ATo: TColorspaceEnum): TColorspaceArray;\nvar\n  pathLen: Word;\n  i: Integer;\n  subResult: TPathArray;\n  bestIndex, bestWeight, weight, j, wantedPrecision: integer;\n  path: TPath;\nbegin\n  result := nil;\n  pathLen := PathMatrix[AFrom,ATo];\n  wantedPrecision := min(ChannelValueTypePrecision[ColorspaceInfo[AFrom].ValueType],\n                         ChannelValueTypePrecision[ColorspaceInfo[ATo].ValueType]);\n  if pathLen = MAXWORD then\n    raise exception.Create('No path found');\n\n  subResult := FindPathRec(AFrom,ATo, nil, pathLen, wantedPrecision);\n  bestIndex := -1;\n  bestWeight := maxLongint;\n  for i := 0 to high(subResult) do\n  begin\n    weight := 0;\n    path := subResult[i];\n    for j := 0 to high(path) do\n      inc(weight, PairsList[path[j].PairIndex].Weight);\n    if weight < bestWeight then\n    begin\n      bestWeight := weight;\n      bestIndex := i;\n    end;\n  end;\n\n  if bestIndex = -1 then raise exception.Create('No best path found between '+ColorspaceInfo[AFrom].Name+' to '+ColorspaceInfo[ATo].Name);\n  path := subResult[bestIndex];\n  setlength(result, length(path)+1);\n  for j := 0 to high(path) do\n  begin\n    if path[j].Reverse then\n      result[j] := PairsList[path[j].PairIndex].Last\n    else\n      result[j] := PairsList[path[j].PairIndex].First;\n  end;\n  if path[high(path)].Reverse then\n    result[high(result)] := PairsList[path[high(path)].PairIndex].First\n  else\n    result[high(result)] := PairsList[path[high(path)].PairIndex].Last;\nend;\n\nprocedure MakePathMatrix;\n\n  function FindNewPath(cs: TColorspaceEnum; FromLen: integer): boolean;\n  var\n    CSFrom: TColorspaceEnum;\n    i: Integer;\n  begin\n    result := false;\n    for CSFrom := low(TColorspaceEnum) to high(TColorspaceEnum) do\n    if PathMatrix[cs,CSFrom] = FromLen then\n    begin\n      for i := 0 to high(PairsList) do\n        if PairsList[i].First = CSFrom then\n        begin\n          if PathMatrix[cs, PairsList[i].Last] = MAXWORD then\n          begin\n            PathMatrix[cs, PairsList[i].Last] := FromLen+1;\n            result := true;\n          end;\n        end else\n        if PairsList[i].Last = CSFrom then\n        begin\n          if PathMatrix[cs, PairsList[i].First] = MAXWORD then\n          begin\n            PathMatrix[cs, PairsList[i].First] := FromLen+1;\n            result := true;\n          end;\n        end;\n    end;\n    inc(FromLen);\n  end;\n\nvar\n  cs: TColorspaceEnum;\n  FromLen: integer;\nbegin\n  FillWord(PathMatrix, sizeof(PathMatrix) div sizeof(word), MAXWORD);\n  for cs := low(TColorspaceEnum) to high(TColorspaceEnum) do\n  begin\n    PathMatrix[cs,cs] := 0;\n    FromLen := 0;\n    while FindNewPath(cs, FromLen) do inc(FromLen);\n  end;\nend;\n\nfunction NewColorPair(AFirst, ALast: TColorspaceEnum; AToFirstFunc, AToLastFunc: string; AHandlesExtraAlpha: boolean; AWeight: integer): TColorPair;\nbegin\n  with Result do\n  begin\n    First := AFirst;\n    Last := ALast;\n    ToFirstFunc:= AToFirstFunc;\n    ToLastFunc:= AToLastFunc;\n    HandlesExtraAlpha:= AHandlesExtraAlpha;\n    Weight := AWeight;\n  end;\nend;\n\nprocedure GenerateCode;\nvar\n  s: string;\n  intsl, impsl: TStringList;\n  InfSpaceAdd: string;\n  ColorTypeDefined: array[TColorspaceEnum] of boolean;\n\n  procedure Add(ls: string);\n  begin\n    if ls = '' then intsl.add('') else\n      intsl.Add(InfSpaceAdd + ls);\n  end;\n\n  procedure AddImp(ls: string);\n  begin\n    impsl.Add(ls);\n  end;\n\n  procedure AddProcedureImp(h, ls: string);\n  begin\n    AddImp(h);\n    ls := Trim(ls);\n    if ls.EndsWith(';') then delete(ls, length(ls), 1);\n    AddImp('begin ' + ls + ' end;');\n    AddImp('');\n  end;\n\n  procedure AddProcedureImp(h: string; ls: array of string);\n  var\n    i: Integer;\n  begin\n    AddImp(h);\n    AddImp('begin');\n    for i := 0 to high(ls) do\n      AddImp('  ' + ls[i]);\n    AddImp('end;');\n    AddImp('');\n  end;\n\n  function GetProcedure(AFullname, AParams: string; AOverload: boolean): string;\n  begin\n    Result := 'procedure ' + AFullname;\n    if AParams <> '' then\n      Result := Result + '(' + AParams + ')';\n   Result := Result + ';';\n    if AOverload then\n      Result := Result + ' overload;';\n  end;\n\n  function GetFunction(AFullname, AParams, AResultType: string; AOverload: boolean; AStatic: boolean = False): string;\n  begin\n    Result := 'function ' + AFullname;\n    if AParams <> '' then\n      Result := result + '(' + AParams + ')';\n    Result := Result + ': ' + AResultType + ';';\n    if AOverload then\n      Result := Result + 'overload;';\n    if AStatic then\n      Result := Result + 'static;';\n  end;\n\n  function Split(str: string): TStringArray;\n  var\n    sl: TStringList;\n    i: integer;\n  begin\n    sl := TStringList.Create;\n    sl.StrictDelimiter := True;\n    sl.CommaText := str;\n    SetLength(Result, sl.Count);\n    for i := 0 to Length(Result) - 1 do\n    begin\n      Result[i] := sl.Strings[i];\n    end;\n    sl.Free;\n  end;\n\n  function GetVariablesNames(cp: TColorspaceEnum): TStringArray;\n  begin\n    Result := Split(ColorspaceInfo[cp].VariableNames);\n  end;\n\n  procedure MakeConverters;\n\n    procedure AddAlphaConverter(c1, c2: TColorspaceEnum; ad: string);\n    var\n      s, ls, h: string;\n      i: integer;\n      vn: TStringArray;\n    begin\n      if ad <> '' then\n        vn := GetVariablesNames(c1)\n      else\n        vn := GetVariablesNames(c2);\n      h := GetFunction(ColorspaceInfo[c1].Name + 'To' + ColorspaceInfo[c2].Name, 'const A' + ColorspaceInfo[c1].Name + ': T' + ColorspaceInfo[c1].Name + ad, 'T' + ColorspaceInfo[c2].Name, False);\n      s := '';\n      for i := 0 to Length(vn) - 1 do\n      begin\n        s := s + 'A' + ColorspaceInfo[c1].Name + '.' + vn[i];\n        if i <> Length(vn) - 1 then\n          s := s + ',';\n      end;\n      if ad <> '' then\n        s := s + ', AAlpha';\n      ls := 'Result := T' + ColorspaceInfo[c2].Name + '.New(' + s + ');';\n      AddProcedureImp(h, ls);\n    end;\n\n    function GetResult(fn, p: string): string;\n    begin\n      Result := fn + '(' + p + ')';\n    end;\n\n    function AddConverter(c1, c2: TColorspaceEnum): string;\n    var\n      bp: TColorspaceArray;\n      cs1, cs2: TColorspaceEnum;\n      i: integer;\n      ls, lf, s: string;\n      fn, avn: string;\n      bb: boolean;\n      vmax: string;\n      vn, vsam: TStringArray;\n      needRefPoint: boolean;\n      h, functionName: string;\n    begin\n      result := '';\n      bp := FindPath(c1, c2);\n      if Length(bp) = 0 then\n      begin\n        WriteLn('Path shouldn''t be empty');\n        Exit;\n      end;\n      if not ColorspaceInfo[c1].IsBridge and\n         not ColorspaceInfo[c2].IsBridge then\n      begin\n        for i := 1 to high(bp)-1 do\n          if ColorspaceInfo[bp[i]].IsBridge then\n          begin\n            ConvBridgeMatrix[c1,c2] := bp[i];\n            exit(''); //go via bridge\n          end;\n      end;\n\n      functionName := ColorspaceInfo[c1].Name + 'To' + ColorspaceInfo[c2].Name;\n      result := functionName;\n\n      s := 'Result := ';\n      ls := '';\n      lf := '';\n      for i := Length(bp) - 1 downto 1 do\n      begin\n        cs1 := bp[i - 1];\n        cs2 := bp[i];\n        s := s + GetConversionFunction(cs1,cs2) + '(';\n        lf := lf + ')';\n      end;\n\n      needRefPoint := NeedXYZReferenceWhite(c1,c2);\n\n      vsam := Split(ColorspaceInfo[c2].MinMax);\n      vmax := vsam[Length(vsam) - 1];\n\n      ls := s + 'A' + ColorspaceInfo[c1].Name + lf + ';';\n      if not ColorspaceInfo[c1].HasAlpha and ColorspaceInfo[c2].HasAlpha then\n      begin\n        vn := GetVariablesNames(c2);\n        avn := vn[Length(vn) - 1];\n        if not avn.StartsWith('[') then avn := '.'+avn;\n        ls := ls + LineEnding + '  ' + 'if Result' + avn + ' <> 0 then Result' + avn + ' := AAlpha;';\n        h := GetFunction(functionName,\n                         'const A' + ColorspaceInfo[c1].Name + ': T' + ColorspaceInfo[c1].Name + ';const AAlpha' + ': ' + ChannelValueTypeName[ColorspaceInfo[c2].ValueType] + '=' + vmax,\n                         'T' + ColorspaceInfo[c2].Name, needRefPoint);\n      end\n      else\n      begin\n        h := GetFunction(functionName,\n                         'const A' + ColorspaceInfo[c1].Name + ': T' + ColorspaceInfo[c1].Name,\n                         'T' + ColorspaceInfo[c2].Name, needRefPoint);\n      end;\n      AddProcedureImp(h, ls);\n      if needRefPoint then\n      begin\n        ls := 'A' + ColorspaceInfo[c1].Name;\n        for i := 0 to Length(bp) - 2 do\n        begin\n          cs1 := bp[i];\n          cs2 := bp[i + 1];\n          fn := GetConversionFunction(cs1,cs2);\n          bb := NeedXYZReferenceWhite(cs1, cs2);\n          if bb then\n            ls := ls + ',AReferenceWhite';\n          ls := fn + '(' + ls + ')';\n        end;\n        ls := 'Result := ' + ls + ';';\n        if not ColorspaceInfo[c1].HasAlpha and ColorspaceInfo[c2].HasAlpha then\n        begin\n          h := GetFunction(functionName,\n                           'const A' + ColorspaceInfo[c1].Name + ': T' + ColorspaceInfo[c1].Name + '; ' + 'const AReferenceWhite: TXYZReferenceWhite' + ';const AAlpha' + ': ' + ChannelValueTypeName[ColorspaceInfo[c2].ValueType] + '=' + vmax,\n                           'T' + ColorspaceInfo[c2].Name, needRefPoint);\n          vn := GetVariablesNames(c2);\n          avn := vn[Length(vn) - 1];\n          if not avn.StartsWith('[') then avn := '.' + avn;\n          ls := ls + #13#10 + '  ' + 'if Result' + avn + ' <> 0 then Result' + avn + ' := AAlpha;';\n        end\n        else\n          h := GetFunction(functionName,\n                           'const A' + ColorspaceInfo[c1].Name + ': T' + ColorspaceInfo[c1].Name + '; ' + 'const AReferenceWhite: TXYZReferenceWhite',\n                           'T' + ColorspaceInfo[c2].Name, needRefPoint);\n        AddProcedureImp(h, ls);\n      end;\n    end;\n\n  var\n    i, j: TColorspaceEnum;\n    convertFunc: string;\n    pl: integer;\n    ext: boolean;\n\n  begin\n    AddImp('{Converters}');\n    AddImp('');\n\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n      begin\n        for j := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if ([i,j] <= BasicColorspaces) xor ext then\n        begin\n          if (ColorspaceInfo[j].Name = ColorspaceInfo[i].Name + 'A'){ or\n          ((not (i in AlphaSupportedColorspaces)) and  (j in AlphaSupportedColorspaces)) } then\n          begin\n            AddAlphaConverter(i, j, '; const AAlpha: single = 1');\n            AddAlphaConverter(j, i, '');\n          end;\n        end;\n      end;\n      for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n      begin\n        for j := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if ([i,j] <= BasicColorspaces) xor ext then\n        begin\n          if (i <> j) and (ColorspaceInfo[j].Name <> ColorspaceInfo[i].Name + 'A') and (ColorspaceInfo[i].Name <> ColorspaceInfo[j].Name + 'A') then\n          begin\n            convertFunc := '';\n            for pl := 0 to Length(PairsList) - 1 do\n            begin\n              if (PairsList[pl].First = i) and (PairsList[pl].Last = j) then\n              begin\n                convertFunc := PairsList[pl].ToLastFunc;\n                break;\n              end;\n              if (PairsList[pl].Last = i) and (PairsList[pl].First = j) then\n              begin\n                convertFunc := PairsList[pl].ToFirstFunc;\n                break;\n              end;\n            end;\n            if convertFunc = '' then\n              convertFunc := AddConverter(i, j);\n\n            if convertFunc = '' then continue;\n\n            ConvMatrix[i,j] := true;\n\n            AddImp('procedure Convert' + ColorspaceInfo[i].Name+'ArrayTo'+ColorspaceInfo[j].Name+'Array' +\n                             '(ASource: pointer; ADest: Pointer; ACount: integer; '+\n                             'ASourceStride:integer=sizeOf(T'+ColorspaceInfo[i].Name+'); '+\n                             'ADestStride:integer=sizeOf(T'+ColorspaceInfo[j].Name+'); '+\n                             '{%H-}AReferenceWhite: PXYZReferenceWhite=nil);');\n            AddImp('begin');\n            if NeedXYZReferenceWhite(i,j) then\n              AddImp('  if AReferenceWhite = nil then AReferenceWhite := @CurrentReferenceWhite;');\n            AddImp('  while ACount > 0 do begin');\n            if NeedXYZReferenceWhite(i,j) then\n              AddImp('    T'+ColorspaceInfo[j].Name+'(ADest^) := '+convertFunc+'(T'+ColorspaceInfo[i].Name+'(ASource^), AReferenceWhite^);')\n            else\n              AddImp('    T'+ColorspaceInfo[j].Name+'(ADest^) := '+convertFunc+'(T'+ColorspaceInfo[i].Name+'(ASource^));');\n            AddImp('    inc(PByte(ASource), ASourceStride); inc(PByte(ADest), ADestStride); dec(ACount); end;');\n            AddImp('end;');\n            AddImp('');\n          end;\n        end;\n      end;\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n  end;\n\n  procedure MakeHelper(Colorspace: TColorspaceEnum; AHelperOnly, AColorspaceOnly: boolean);\n  var\n    i: integer;\n    HelperName, ColorspaceName, ColorTypeName, n, h, nt: string;\n    VariablesNames: TStringArray;\n    MinValues,MaxValues: TStringArray;\n    cs: TColorspaceEnum;\n    b: boolean;\n\n    function GetConvertProcedureImp(cpto: TColorspaceEnum; AReferenceWhiteParam: string): string;\n    begin\n      Result := 'Result := ' + GetConversionFunctionRec(ColorSpace, cpto, 'Self', AReferenceWhiteParam) + ';';\n    end;\n\n    function GetFromConvertProcedureImp(cpfrom: TColorspaceEnum; AReferenceWhiteParam: string): string;\n    begin\n      Result := 'Self := ' + GetConversionFunctionRec(cpfrom, ColorSpace, 'AValue', AReferenceWhiteParam) + ';';\n    end;\n\n    procedure AddNew(s: string; ov: boolean);\n    var ls: array of string;\n      i: integer;\n      params: TStringList;\n    begin\n      params := TStringList.Create;\n      params.Delimiter:= ',';\n      params.StrictDelimiter:= true;\n      params.DelimitedText := s;\n\n      h := 'class ' + GetFunction('New', 'const ' + s + ':' + ChannelValueTypeName[ColorspaceInfo[Colorspace].ValueType], ColorTypeName, ov, True);\n      Add('  ' + h);\n      h := 'class ' + GetFunction(HelperName + '.New', 'const ' + s + ':' + ChannelValueTypeName[ColorspaceInfo[Colorspace].ValueType], ColorTypeName, ov);\n      case Colorspace of\n      csColor: AddProcedureImp(h, 'Result := BGRAGraphics.RGBToColor(' + s + ');');\n      else\n        begin\n          setlength(ls, length(VariablesNames));\n          for i := 0 to high(VariablesNames) do\n            if VariablesNames[i].StartsWith('[') then\n            begin\n              if i >= params.Count then\n                WriteStr(ls[i],'Result',VariablesNames[i],' := ',MaxValues[i],';')\n              else\n                WriteStr(ls[i],'Result',VariablesNames[i],' := ',params[i],';');\n            end else\n            begin\n              if i >= params.Count then\n                WriteStr(ls[i],'Result.',VariablesNames[i],' := ',MaxValues[i],';')\n              else\n                WriteStr(ls[i],'Result.',VariablesNames[i],' := ',params[i],';');\n            end;\n          AddProcedureImp(h, ls);\n        end\n      end;\n      params.Free;\n    end;\n\n    function TColorGetChannel(AColor: string; AChannel: integer): string;\n    begin\n      case AChannel of\n      0: result := '{$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}('+AColor+' shr 16) and $ff{$ELSE}'+AColor+' and $ff{$ENDIF}';\n      1: result := '('+AColor+' shr 8) and $ff';\n      2: result := '{$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}'+AColor+' and $ff{$ELSE}('+AColor+' shr 16) and $ff{$ENDIF}';\n      else\n        raise Exception.Create('Index out of bounds');\n      end;\n    end;\n\n    function TColorSetChannel(AColor: string; AChannel: integer; AValue: string): string;\n    begin\n      case AChannel of\n      0: result := '{$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord('+AColor+' and $00ffff) or ('+AValue+' shl 16){$ELSE}LongWord('+AColor+' and $ffff00) or '+AValue+'{$ENDIF}';\n      1: result := 'LongWord('+AColor+' and $ff00ff) or ('+AValue+' shl 8)';\n      2: result := '{$IFDEF TCOLOR_BLUE_IN_LOW_BYTE}LongWord('+AColor+' and $ffff00) or '+AValue+'{$ELSE}LongWord('+AColor+' and $00ffff) or ('+AValue+' shl 16){$ENDIF}';\n      else\n        raise Exception.Create('Index out of bounds');\n      end;\n    end;\n\n  var\n    ov, ba, ext: boolean;\n    vsam, vsfm, body, vn2: TStringArray;\n    cn: integer;\n    typeDeclaration, flagStr: string;\n    handlesExtraAlpha: boolean;\n  begin\n    ColorspaceName := ColorspaceInfo[Colorspace].Name;\n\n    ColorTypeName := 'T' + ColorspaceName;\n    VariablesNames := GetVariablesNames(Colorspace);\n    vsfm := Split(ColorspaceInfo[Colorspace].FullNames);\n    vsam := Split(ColorspaceInfo[Colorspace].MinMax);\n    cn := Length(vsam) div 2;\n    setlength(MaxValues, cn);\n    setlength(MinValues, cn);\n    for i := 0 to cn-1 do\n    begin\n      MinValues[i] := vsam[i];\n      MaxValues[i] := vsam[i+cn];\n    end;\n\n    if AColorspaceOnly then\n    begin\n      Add('{ ' + ColorspaceInfo[Colorspace].Colorspace + ' colorspace ('\n      + ChannelValueTypeFriendlyName[ColorspaceInfo[Colorspace].ValueType] + ' channels) }');\n      Add('');\n      Add(ColorTypeName+'Colorspace = class(TCustomColorspace)');\n      Add('  class function GetChannelName(AIndex: integer): string; override;');\n      Add('  class function GetChannelCount: integer; override;');\n      Add('  class function IndexOfAlphaChannel: integer; override;');\n      if not ColorspaceInfo[Colorspace].HasAlpha then\n        Add('  class function GetColorTransparency({%H-}AColor: Pointer): TColorTransparency; override;')\n      else\n        Add('  class function GetColorTransparency(AColor: Pointer): TColorTransparency; override;');\n      Add('  class function GetMaxValue(AIndex: integer): single; override;');\n      Add('  class function GetMinValue(AIndex: integer): single; override;');\n      Add('  class function GetChannelBitDepth({%H-}AIndex: integer): byte; override;');\n      Add('  class function GetName: string; override;');\n      Add('  class function GetSize: integer; override;');\n      Add('  class function GetChannel(AColor: Pointer; AIndex: integer): single; override;');\n      Add('  class procedure SetChannel(AColor: Pointer; AIndex: integer; AValue: single); override;');\n      Add('  class function GetFlags: TColorspaceFlags; override;');\n      Add('end;');\n      Add('');\n      AddImp('{ '+ColorTypeName+'Colorspace }');\n      AddImp('');\n\n      setlength(body, length(vsfm)+3);\n      body[0] := 'case AIndex of';\n      for i := 0 to high(vsfm) do\n        body[i+1] := inttostr(i)+': result := ''' + vsfm[i] + ''';';\n      body[high(body)-1] := 'else raise ERangeError.Create(''Index out of bounds'');';\n      body[high(body)] := 'end;';\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetChannelName(AIndex: integer): string;', body);\n\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetChannelCount: integer;',\n                      'result := ' + inttostr(length(vsfm)));\n\n      if ColorspaceInfo[Colorspace].HasAlpha then\n        AddProcedureImp('class function '+ColorTypeName+'Colorspace.IndexOfAlphaChannel: integer;',\n                        'result := ' + inttostr(length(vsfm)-1))\n      else\n        AddProcedureImp('class function '+ColorTypeName+'Colorspace.IndexOfAlphaChannel: integer;',\n                        'result := -1');\n\n      if not ColorspaceInfo[Colorspace].HasAlpha then\n        AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;',\n                        'result := ctFullyOpaque')\n      else\n        AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetColorTransparency(AColor: Pointer): TColorTransparency;',\n                        ['if '+ColorTypeName+'(AColor^).'+VariablesNames[cn-1]+' >= '+MaxValues[cn-1]+' then exit(ctFullyOpaque) else',\n                        'if '+ColorTypeName+'(AColor^).'+VariablesNames[cn-1]+' <= '+MinValues[cn-1]+' then exit(ctFullyTransparent) else',\n                        'exit(ctSemiTransparent)']);\n\n      setlength(body, cn + 3);\n      body[0] := 'case AIndex of';\n      for i := 0 to cn - 1 do\n        body[i+1] := inttostr(i)+': result := ' + MaxValues[i] + ';';\n      body[high(body)-1] := 'else raise ERangeError.Create(''Index out of bounds'');';\n      body[high(body)] := 'end;';\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetMaxValue(AIndex: integer): single;', body);\n\n      for i := 0 to cn - 1 do\n        body[i+1] := inttostr(i)+': result := ' + MinValues[i] + ';';\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetMinValue(AIndex: integer): single;', body);\n\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetChannelBitDepth(AIndex: integer): byte;',\n                      'result := ' + IntToStr(ChannelValueTypeBitDepth[ColorspaceInfo[Colorspace].ValueType]) + ';');\n\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetName: string;',\n                      'result := ''' + ColorspaceName + ''';');\n\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetSize: integer;',\n                      'result := sizeof(' + ColorTypeName + ');');\n\n      setlength(body, length(VariablesNames)+3);\n      body[0] := 'case AIndex of';\n      if Colorspace = csColor then\n      begin\n        for i := 0 to high(VariablesNames) do\n         body[i+1] := inttostr(i)+': result := ' + TColorGetChannel(ColorTypeName + '(AColor^)', i) + ';';\n      end\n      else\n        for i := 0 to high(VariablesNames) do\n          body[i+1] := inttostr(i)+': result := ' + ColorTypeName + '(AColor^).' + VariablesNames[i] + ';';\n      body[high(body)-1] := 'else raise ERangeError.Create(''Index out of bounds'');';\n      body[high(body)] := 'end;';\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetChannel(AColor: Pointer; AIndex: integer): single;', body);\n\n      setlength(body, length(VariablesNames)+3);\n      body[0] := 'case AIndex of';\n      if Colorspace = csColor then\n      begin\n        for i := 0 to high(VariablesNames) do\n         body[i+1] := inttostr(i)+': ' + ColorTypeName + '(AColor^) := ' +\n                   TColorSetChannel(ColorTypeName + '(AColor^)', i, 'Byte(Round(Clamp(AValue,' + MinValues[i] + ',' +MaxValues[i] + ')))') + ';';\n      end\n      else\n      for i := 0 to high(VariablesNames) do\n      begin\n        if not (ColorspaceInfo[Colorspace].ValueType in[cvtSingle,cvtDouble]) then\n          body[i+1] := inttostr(i)+': ' + ColorTypeName + '(AColor^).' + VariablesNames[i] + ' := Round(Clamp(AValue,' + MinValues[i] + ',' +MaxValues[i] + '));'\n        else\n          body[i+1] := inttostr(i)+': ' + ColorTypeName + '(AColor^).' + VariablesNames[i] + ' := AValue;';\n      end;\n      body[high(body)-1] := 'else raise ERangeError.Create(''Index out of bounds'');';\n      body[high(body)] := 'end;';\n      AddProcedureImp('class procedure '+ColorTypeName+'Colorspace.SetChannel(AColor: Pointer; AIndex: integer; AValue: single);', body);\n\n      if ColorspaceInfo[Colorspace].NeedRefWhite then flagStr := 'cfMovableReferenceWhite' else\n      if Colorspace >= csXYZA then flagStr := 'cfReferenceWhiteIndependent' else\n        flagStr := 'cfFixedReferenceWhite';\n      if ColorspaceInfo[Colorspace].HasImaginary then flagStr := flagStr + ',cfHasImaginaryColors';\n      AddProcedureImp('class function '+ColorTypeName+'Colorspace.GetFlags: TColorspaceFlags;',\n                      'result := [' + flagStr + '];');\n\n      AddImp('');\n      exit;\n    end;\n\n    if IsHelperOnly(Colorspace) or AHelperOnly then\n    begin\n      if not AHelperOnly then exit;\n      HelperName := ColorTypeName + 'Helper';\n      if IsHelperOnly(Colorspace) then\n      begin\n        if ColorspaceInfo[Colorspace].BasicHelper then\n          typeDeclaration := ColorspaceInfo[Colorspace].Declaration+ '(' + ColorTypeName + 'BasicHelper) for ' + ColorTypeName\n        else\n          typeDeclaration := ColorspaceInfo[Colorspace].Declaration+ ' for ' + ColorTypeName;\n      end\n      else\n      begin\n        typeDeclaration := 'record helper for ' + ColorTypeName\n      end;\n      Add('{ Helper for ' + ColorTypeName + ' color }');\n    end else\n    begin\n      HelperName := ColorTypeName;\n      typeDeclaration := ColorspaceInfo[Colorspace].Declaration;\n      ColorTypeDefined[Colorspace] := true;\n      Add('{ Pointer to ' + ColorTypeName + ' color }');\n      Add('P'+ColorspaceName+' = ^'+ColorTypeName+';');\n      Add('{ ' + ColorspaceInfo[Colorspace].Colorspace + ' color ('\n      + ChannelValueTypeFriendlyName[ColorspaceInfo[Colorspace].ValueType] + ' channels) }');\n    end;\n\n    Add('');\n    Add(HelperName + ' = ' + typeDeclaration);\n\n    AddImp('{ ' + HelperName + ' }');\n    AddImp('');\n\n    if not IsHelperOnly(Colorspace) and not AHelperOnly then\n    begin\n      Add('  ' + ColorspaceInfo[Colorspace].VariableNames + ': ' + ChannelValueTypeName[ColorspaceInfo[Colorspace].ValueType] + ';');\n    end;\n\n    if not AHelperOnly or (IsHelperOnly(Colorspace) and (Colorspace in [csColor, csFPColor])) then\n    begin\n      ov := ColorspaceInfo[Colorspace].HasAlpha;\n\n      s := '';\n      for i := 0 to Length(vsfm) - 1 do\n      begin\n        s := s + 'A'+vsfm[i];\n        if i <> Length(vsfm) - 1 then\n           s := s + ',';\n      end;\n      AddNew(s, ov);\n\n      if ColorspaceInfo[Colorspace].HasAlpha then\n      begin\n        s := '';\n        for i := 0 to Length(vsfm) - 2 do\n        begin\n          s := s + 'A'+vsfm[i];\n          if i <> Length(vsfm) - 2 then\n             s := s + ',';\n        end;\n        AddNew(s, ov);\n      end;\n    end;\n\n    if AHelperOnly then\n    begin\n      if not (Colorspace in BasicColorspaces) then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      h := 'class function '+HelperName+'.Colorspace: TColorspaceAny; static;';\n      AddProcedureImp(h, 'result := T'+ColorspaceName+'Colorspace;');\n      Add('  ' + StringReplace(h, HelperName+'.', '', []));\n      if not (Colorspace in BasicColorspaces) then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n\n      if Colorspace = csColor then\n      begin\n        Add('private');\n        h := GetFunction(HelperName+'.GetRed', '', 'byte', false);\n        AddProcedureImp(h, 'result := ' + TColorGetChannel('self', 0) + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n        h := GetFunction(HelperName+'.GetGreen', '', 'byte', false);\n        AddProcedureImp(h, 'result := ' + TColorGetChannel('self', 1) + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n        h := GetFunction(HelperName+'.GetBlue', '', 'byte', false);\n        AddProcedureImp(h, 'result := ' + TColorGetChannel('self', 2) + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n\n        h := GetProcedure(HelperName+'.SetRed', 'AValue: byte', false);\n        AddProcedureImp(h, 'self := ' + TColorSetChannel('self', 0, 'AValue') + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n        h := GetProcedure(HelperName+'.SetGreen', 'AValue: byte', false);\n        AddProcedureImp(h, 'self := ' + TColorSetChannel('self', 1, 'AValue') + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n        h := GetProcedure(HelperName+'.SetBlue', 'AValue: byte', false);\n        AddProcedureImp(h, 'self := ' + TColorSetChannel('self', 2, 'AValue') + ';');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n        add('public');\n      end;\n\n      if Colorspace = csXYZA then\n      begin\n        h := GetProcedure(HelperName+'.ChromaticAdapt', 'const AFrom, ATo: TXYZReferenceWhite', false);\n        AddProcedureImp(h, 'ChromaticAdaptXYZ(self.X,self.Y,self.Z, AFrom,ATo);');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n      end else\n      if Colorspace = csWordXYZA then\n      begin\n        h := GetProcedure(HelperName+'.ChromaticAdapt', 'const AFrom, ATo: TXYZReferenceWhite', false);\n        AddProcedureImp(h, 'ChromaticAdaptWordXYZ(self.X,self.Y,self.Z, AFrom,ATo);');\n        Add('  ' + StringReplace(h, HelperName+'.', '', []));\n      end;\n\n      for ext := false to true do\n      begin\n        if ext then\n        begin\n          Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n          AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        end;\n        for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if ((cs in BasicColorspaces) or (ColorspaceInfo[cs].BasicHelper)) xor ext then\n        begin\n          if (cs = Colorspace) or not ColorTypeDefined[cs] then Continue;\n          if ColorspaceInfo[Colorspace].BasicHelper and (ColorspaceInfo[cs].BasicHelper or (cs = csColor)) then continue;\n\n          n := ColorspaceInfo[cs].Name;\n          b := NeedXYZReferenceWhite(cs,Colorspace);\n          ba := not ColorspaceInfo[Colorspace].HasAlpha and ColorspaceInfo[cs].HasAlpha;\n\n          h := GetFunction('To' + n, '', 'T' + n, b or ba);\n          Add('  ' + h);\n          h := GetFunction(HelperName + '.To' + n, '', 'T' + n, b or ba);\n          AddProcedureImp(h, GetConvertProcedureImp(cs, ''));\n\n          if ba then\n          begin\n            h := GetFunction('To' + n, 'AAlpha: ' + ChannelValueTypeName[ColorspaceInfo[cs].ValueType], 'T' + n, b or ba);\n            Add('  ' + h);\n            h := GetFunction(HelperName + '.To' + n, 'AAlpha: ' + ChannelValueTypeName[ColorspaceInfo[cs].ValueType], 'T' + n, b or ba);\n            GetConversionFunction(Colorspace, cs, handlesExtraAlpha);\n            if handlesExtraAlpha then\n              AddProcedureImp(h, 'result := '+GetConversionFunctionRec(ColorSpace, cs, 'Self, AAlpha', '')+';')\n            else\n            begin\n              vn2 := Split(ColorspaceInfo[cs].VariableNames);\n              AddProcedureImp(h, [GetConvertProcedureImp(cs, ''), 'if result.'+vn2[high(vn2)]+' <> 0 then result.'+vn2[high(vn2)]+' := AAlpha;']);\n            end;\n          end;\n\n          if b then\n          begin\n            h := GetFunction('To' + n, 'const AReferenceWhite: TXYZReferenceWhite', 'T' + n, b or ba);\n            Add('  ' + h);\n            h := GetFunction(HelperName + '.To' + n, 'const AReferenceWhite: TXYZReferenceWhite', 'T' + n, b or ba);\n            AddProcedureImp(h, GetConvertProcedureImp(cs, 'AReferenceWhite'));\n          end;\n        end;\n\n        for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if ((cs in BasicColorspaces) or (ColorspaceInfo[cs].BasicHelper)) xor ext then\n        begin\n          if (cs = Colorspace) or not ColorTypeDefined[cs] then Continue;\n          if ColorspaceInfo[Colorspace].BasicHelper and (ColorspaceInfo[cs].BasicHelper or (cs = csColor)) then continue;\n\n          n := ColorspaceInfo[cs].Name;\n          nt := 'T' + n;\n          b := NeedXYZReferenceWhite(cs,Colorspace);\n          h := GetProcedure('From' + n, 'AValue: ' + nt, b);\n          Add('  ' + h);\n          h := GetProcedure(HelperName + '.From' + n, 'AValue: ' + nt, b);\n          AddProcedureImp(h, GetFromConvertProcedureImp(cs, ''));\n          if b then\n          begin\n            h := GetProcedure('From' + n, 'AValue: ' + nt + '; ' + 'const AReferenceWhite: TXYZReferenceWhite', b);\n            Add('  ' + h);\n            h := GetProcedure(HelperName + '.From' + n, 'AValue: ' + nt + '; ' + 'const AReferenceWhite: TXYZReferenceWhite', b);\n            AddProcedureImp(h, GetFromConvertProcedureImp(cs, 'AReferenceWhite'));\n          end;\n        end;\n        if ext then\n        begin\n          Add('{$ENDIF}');\n          AddImp('{$ENDIF}');\n        end;\n      end;\n\n      if Colorspace = csColor then\n      begin\n        Add('  property red: byte read GetRed write SetRed;');\n        Add('  property green: byte read GetGreen write SetGreen;');\n        Add('  property blue: byte read GetBlue write SetBlue;');\n      end;\n    end;\n\n    Add('end;');\n    Add('');\n  end;\n\n  procedure MakeHelpers;\n  var\n    cs: TColorspaceEnum;\n    ext: boolean;\n  begin\n    for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n      ColorTypeDefined[cs] := IsHelperOnly(cs);\n    InfSpaceAdd := '  ';\n\n    // define color types\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if (cs in BasicColorspaces) xor ext then\n          MakeHelper(cs, false, false);\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n\n    // define colorspace classes\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if (cs in BasicColorspaces) xor ext then\n          MakeHelper(cs, false, true);\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n\n    // define color helpers\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for cs := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if (cs in BasicColorspaces) xor ext then\n          MakeHelper(cs, true, false);\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n\n    InfSpaceAdd := '';\n  end;\n\n  procedure MakeOperators;\n\n    procedure AddOperator(c1, c2: TColorspaceEnum);\n    var\n      h, ls: string;\n    begin\n      h := 'operator := (const AValue: T' + ColorspaceInfo[c1].Name + '): T' + ColorspaceInfo[c2].Name + ';';\n      ls := 'Result := ' + GetConversionFunctionRec(c1,c2,'AValue') + ';';\n      Add('{ Implicit conversion of a color from T' + ColorspaceInfo[c1].Name + ' to T' + ColorspaceInfo[c2].Name + ' }');\n      Add(h);\n      AddProcedureImp(h, ls);\n    end;\n\n  var\n    i, j: TColorspaceEnum;\n    ext: boolean;\n  begin\n    AddImp('{Operators}');\n    AddImp('');\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        for j := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n          if (([i,j] <= BasicColorspaces) xor ext) and\n            (i <> j) and not ([i,j] <= [csHSLAPixel,csGSBAPixel]) and\n            not ((ColorspaceInfo[i].BasicHelper or (i = csColor)) and (ColorspaceInfo[j].BasicHelper or (j = csColor))) then\n              AddOperator(i, j);\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n\n\n  end;\n\n  procedure RegisterColorspaces;\n  var\n    i,j: TColorspaceEnum;\n    ext: boolean;\n  begin\n    for ext := false to true do\n    begin\n      if ext then\n      begin\n        Add('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n        AddImp('{$IFDEF BGRABITMAP_EXTENDED_COLORSPACE}');\n      end;\n      for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        if (i in BasicColorspaces) xor ext then\n          AddImp('  ColorspaceCollection.Add(T' + ColorspaceInfo[i].Name +'Colorspace);');\n      for i := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n        for j := Low(TColorspaceEnum) to High(TColorspaceEnum) do\n          if (i <> j) and (ConvMatrix[i,j]) and\n           (([i,j] <= BasicColorspaces) xor ext) then\n            AddImp('  ColorspaceCollection.AddConversion(T' + ColorspaceInfo[i].Name +'Colorspace, T' + ColorspaceInfo[j].Name +'Colorspace,'\n                        +' @Convert' + ColorspaceInfo[i].Name +'ArrayTo' + ColorspaceInfo[j].Name +'Array);');\n      if ext then\n      begin\n        Add('{$ENDIF}');\n        AddImp('{$ENDIF}');\n      end;\n    end;\n  end;\n\nbegin\n  writeln('Generating colorspaces...');\n  PairsList := nil;\n\n  //direct conversions (using single predefined function)\n  //TExpandedPixel is the first bridge between colorspaces\n\n  AddColorPair(csBGRAPixel, csColor, 'ColorToBGRA', 'BGRAToColor');\n  AddColorPair(csBGRAPixel, csExpandedPixel, 'GammaCompression', 'GammaExpansion');\n\n  AddColorPair(csFPColor, csBGRAPixel, 'BGRAToFPColor', 'FPColorToBGRA');\n  AddColorPair(csFPColor, csExpandedPixel, 'ExpandedToFPColor', 'FPColorToExpanded', true, 2);\n\n  {AddColorPair(csHSLAPixel, csBGRAPixel, 'BGRAToHSLA', 'HSLAToBGRA', true, 2);\n  AddColorPair(csGSBAPixel, csBGRAPixel, 'BGRAToGSBA', 'GSBAToBGRA', true, 2);}\n  AddColorPair(csHSLAPixel, csGSBAPixel, 'GSBAToHSLA', 'HSLAToGSBA');\n  AddColorPair(csHSLAPixel, csExpandedPixel, 'ExpandedToHSLA', 'HSLAToExpanded');\n  AddColorPair(csGSBAPixel, csExpandedPixel, 'ExpandedToGSBA', 'GSBAToExpanded');\n\n  AddColorPair(csStdRGBA, csBGRAPixel);\n  AddColorPair(csStdHSLA, csStdRGBA);\n  AddColorPair(csStdHSVA, csStdRGBA);\n  AddColorPair(csStdHSLA, csStdHSVA);\n  AddColorPair(csStdCMYK, csStdRGBA);\n  AddColorPair(csStdRGBA, csExpandedPixel, '','',true, 2);\n  AddColorPair(csStdRGBA, csFPColor);\n  AddColorPair(csStdRGBA, csYCbCr601);\n  AddColorPair(csStdRGBA, csYCbCr601JPEG);\n  AddColorPair(csStdRGBA, csYCbCr709);\n  AddColorPair(csStdRGBA, csYCbCr709JPEG);\n\n { AddColorPair(csWordMask, csExpandedPixel, 'ExpandedToWordMask', 'WordMaskToExpanded');\n  AddColorPair(csByteMask, csWordMask, 'MaskWordToByte', 'MaskByteToWord');}\n  AddColorPair(csByteMask, csBGRAPixel, 'BGRAToMask', 'MaskToBGRA', true, 3);\n  AddColorPair(csByteMask, csExpandedPixel, 'ExpandedPixelToByteMask', 'ByteMaskToExpandedPixel', true, 2);\n\n  //the other bridge is TXYZA\n  //TLinearRGBA is between TExpandedPixel and TXYZA\n  //there two paths to linear RGBA\n  AddColorPair(csExpandedPixel, csLinearRGBA);\n  //AddColorPair(csStdRGBA,       csLinearRGBA, '','',true, 2);\n\n  AddColorPair(csExpandedPixel, csWordXYZA);\n  AddColorPair(csXYZA, csWordXYZA);\n\n  AddColorPair(csXYZA, csLinearRGBA);\n  AddColorPair(csLabA, csXYZA, '','',true, 2);\n  AddColorPair(csLabA, csLChA);\n  AddColorPair(csAdobeRGBA, csXYZA);\n\n  //Add pairs for color spaces with and without alpha support\n  AddAlphaPairs;\n\n  //Make all possible paths\n  MakePathMatrix;\n\n  //Write unit\n  intsl := TStringList.Create;\n  impsl := TStringList.Create;\n  Add('{ This file is generated by dev/colorspace/UnitMaker program }');\n  Add('');\n  Add('{$IFDEF INCLUDE_INTERFACE}');\n  Add('{$UNDEF INCLUDE_INTERFACE}');\n  Add('type');\n  Add('');\n  AddImp('{$IFDEF INCLUDE_IMPLEMENTATION}');\n  AddImp('{$UNDEF INCLUDE_IMPLEMENTATION}');\n  AddImp('');\n  MakeConverters;\n  MakeHelpers;\n  MakeOperators;\n  Add('{$ENDIF}');\n  AddImp('{$ENDIF}');\n\n  AddImp('{$IFDEF INCLUDE_INITIALIZATION}');\n  AddImp('{$UNDEF INCLUDE_INITIALIZATION}');\n  RegisterColorspaces;\n  AddImp('{$ENDIF}');\n  //Save\n  intsl.AddStrings(impsl);\n  intsl.SaveToFile(ExtractFilePath(ParamStr(0))+'generatedcolorspace.inc');\n  intsl.Free;\n  impsl.Free;\n  WriteLn('Done generating colorspaces.');\nend;\n\nend.\n"
  },
  {
    "path": "dev/makedoc/pmakedoc.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"pmakedoc\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"LCL\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"pmakedoc.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"pmakedoc\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <ConfigFile>\n        <WriteConfigFilePath Value=\"$(ProjOutDir)\\fpclaz.cfg\"/>\n      </ConfigFile>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "dev/makedoc/pmakedoc.lpr",
    "content": "program pmakedoc;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "dev/makedoc/readme.txt",
    "content": "Some pages on the wiki are generated by this program:\nhttp://wiki.freepascal.org/BGRABitmap#BGRABitmapTypes_unit_reference\n\nThe idea is to add comments with a specific format:\n- on the line preceding a declaration\n- using { } brackets\n- starting with * for a main entry. Example:\n{* Specifies the shape of a predefined blur }\n\n- starting with ** for a sub-entry. Example, one enumeration:\n{** Gaussian-like, pixel importance decreases progressively }\n\nThe sections titles are prefixed and suffixed by ===. Example:\n{=== Miscellaneous types ===}\n"
  },
  {
    "path": "dev/makedoc/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 379\n  Height = 331\n  Top = 219\n  Width = 536\n  Caption = 'Form1'\n  ClientHeight = 331\n  ClientWidth = 536\n  LCLVersion = '3.99.0.0'\n  OnCreate = FormCreate\n  object EPath: TEdit\n    Left = 8\n    Height = 22\n    Top = 30\n    Width = 520\n    Anchors = [akTop, akLeft, akRight]\n    TabOrder = 0\n    Text = '../../bgrabitmap'\n  end\n  object Label1: TLabel\n    Left = 9\n    Height = 16\n    Top = 9\n    Width = 89\n    Caption = 'Path of library:'\n    ParentColor = False\n  end\n  object Memo1: TMemo\n    Left = 8\n    Height = 235\n    Top = 88\n    Width = 518\n    Anchors = [akTop, akLeft, akRight, akBottom]\n    ScrollBars = ssBoth\n    TabOrder = 1\n  end\n  object Button1: TButton\n    Left = 8\n    Height = 25\n    Top = 56\n    Width = 96\n    Caption = 'Browse...'\n    TabOrder = 2\n    OnClick = Button1Click\n  end\n  object Button2: TButton\n    Left = 112\n    Height = 25\n    Top = 56\n    Width = 96\n    Caption = 'Make doc'\n    TabOrder = 3\n    OnClick = Button2Click\n  end\n  object SelectDirectoryDialog1: TSelectDirectoryDialog\n    Left = 300\n    Top = 9\n  end\nend\n"
  },
  {
    "path": "dev/makedoc/unit1.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,\n  fgl;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Button1: TButton;\n    Button2: TButton;\n    EPath: TEdit;\n    Label1: TLabel;\n    Memo1: TMemo;\n    SelectDirectoryDialog1: TSelectDirectoryDialog;\n    procedure Button1Click(Sender: TObject);\n    procedure Button2Click(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nuses LazUTF8, FileUtil, LazFileUtils, RegExpr, StrUtils;\n\nconst\n  BoldKeywords : array[1..58] of string = ('var','procedure','function','and',\n    'or','xor','not','if','then','case','begin','end','of',\n    'exit','new','class','is','const','div','do','downto','to','else','for',\n    'in','mod','nil','object','record','repeat','self','shl','shr','string',\n    'unit','until','uses','while','array','interface', 'out', 'constructor',\n    'property','read','write','default', 'packed', 'operator', 'inline',\n    'overload', 'virtual', 'abstract', 'helper', 'ifdef', 'endif', 'set',\n    'specialize', 'generic');\n\ntype\n  TDocumentationPages = specialize TFPGMap<string, string>;\n\n{ TForm1 }\n\nprocedure TForm1.Button1Click(Sender: TObject);\nbegin\n  if SelectDirectoryDialog1.Execute then\n    EPath.Text := SelectDirectoryDialog1.FileName;\nend;\n\nprocedure HighlightKeywords(var s: string);\nconst keywordChars = ['a'..'z','A'..'Z'];\n  moreKeywordChars = ['a'..'z','A'..'Z','0'..'9','_'];\nvar\n  i,start: Integer;\n  w,wlower: string;\n  j: Integer;\n  found, first: boolean;\nbegin\n  i := 1;\n  s := StringReplace(s, '''', '&apos;', [rfReplaceAll]);\n  s := StringReplace(s, '{%H-}', '', [rfReplaceAll]);\n  first := true;\n  while i <= length(s) do\n  begin\n    if s[i] in keywordChars then\n      begin\n        start := i;\n        inc(i);\n        while i <= length(s) do\n        begin\n          if not (s[i] in moreKeywordChars) then break;\n          inc(i);\n        end;\n        w := copy(s,start,i-start);\n        wlower := lowercase(w);\n        found := false;\n        for j := low(BoldKeywords) to high(BoldKeywords) do\n          if BoldKeywords[j] = wlower then\n            begin\n              delete(s, start, length(w));\n              dec(i, length(w));\n              w := ''''''''+wlower+'''''''';\n              insert(w, s, start);\n              inc(i, length(w));\n              found := true;\n              break;\n            end;\n        if not found and first then\n          begin\n            delete(s, start, length(w));\n            dec(i, length(w));\n            first := copy(s, start, 1) = ',';\n            w := ''''''+w+'''''';\n            insert(w, s, start);\n            inc(i, length(w));\n            continue;\n          end;\n        first := false;\n      end else\n        inc(i);\n  end;\nend;\n\nprocedure AdaptMarkdown(var s: string);\nvar r: TRegExpr;\nbegin\n  r := TRegExpr.Create('([^A-Z0-9]|^)_([A-Z0-9]+([_.][A-Z0-9]+)*)_([^A-Z0-9]|$)'); r.ModifierI:= true;\n  s := r.Replace(s, '$1''''$2''''$4', true);\n  r.Free;\n\n  r := TRegExpr.Create('\\*\\*([A-Z0-9]+([_.][A-Z0-9]+)*)\\*\\*'); r.ModifierI:= true;\n  s := r.Replace(s, '''''''$1''''''', true);\n  r.Free;\n\n  r := TRegExpr.Create('([^\\\\]|^)\\[([^\\]]+)\\]\\(https://wiki.freepascal.org/(\\w+)\\)'); r.ModifierI:= true;\n  s := r.Replace(s, '$1[[$3|$2]]', true);\n  r.Free;\n\n  r := TRegExpr.Create('([^\\\\]|^)\\[([^\\]]+)\\]\\(([-\\w:/.]+)\\)'); r.ModifierI:= true;\n  s := r.Replace(s, '$1[$3 $2]', true);\n  r.Free;\n\n  r := TRegExpr.Create('```pascal([^`]+)```');\n  s := r.Replace(s, '<syntaxhighlight>$1</syntaxhighlight>', true);\n  r.Free;\n\n  r := TRegExpr.Create('\\^([0-9]+)');\n  s := r.Replace(s, '<sup>$1</sup>', true);\n  r.Free;\n\n  s := StringReplace(s, '\\[', '[', [rfReplaceAll]);\n  s := StringReplace(s, ' --> ', ' &rarr; ', [rfReplaceAll]);\n  s := StringReplace(s, ' <-- ', ' &larr; ', [rfReplaceAll]);\nend;\n\nprocedure MakeDocFor(AFilename: string; APages: TDocumentationPages);\nvar\n  t: textfile;\n  fileoutput,s,bgcolor: String;\n  description, element: String;\n  comStart,comEnd, idxColor: integer;\n  oddRow,indented : boolean;\n  docName, colorStr: string;\n  tableOpened, inCode, bulletPoint, prevBulletPoint: boolean;\n\n  procedure openTable;\n  begin\n    if not tableOpened then\n      begin\n        fileoutput := fileoutput + '<table style=\"border-collapse: collapse;\">'+lineending;\n        oddRow := true;\n        tableOpened:= true;\n      end;\n  end;\n\n  procedure closeTable;\n  begin\n    if tableOpened then\n    begin\n      fileoutput := fileoutput + '</table>'+LineEnding;\n      tableOpened:= false;\n    end;\n  end;\n\n  procedure flushOutput;\n  var\n    docIndex: Integer;\n  begin\n    if fileoutput <> '' then\n    begin\n      closeTable;\n      if not APages.Find(docName, docIndex) then\n      begin\n        docIndex := APages.Add(docName, '=== ' + docName + ' ===' + LineEnding);\n      end;\n      APages.Data[docIndex] := APages.Data[docIndex] + fileoutput;\n      fileoutput:= '';\n    end;\n  end;\n\nbegin\n  docName := ExtractFileName(AFilename);\n  fileoutput := '';\n  tableOpened:= false;\n  assignfile(t, UTF8ToSys(AFilename));\n  reset(t);\n  while not eof(t) do\n  begin\n    readln(t,s);\n\n    comStart:= pos('{====',s);\n    if comStart <> 0 then\n    begin\n      comEnd:= pos('====}',s);\n      if comEnd <> 0 then\n      begin\n        closeTable;\n        fileoutput := fileoutput + trim(copy(s,comStart+1,comEnd+3 -(comStart+1)+1)) + LineEnding;\n        continue;\n      end;\n    end;\n\n    comStart:= pos('{===',s);\n    if comStart <> 0 then\n    begin\n      comEnd:= pos('===}',s);\n      if comEnd <> 0 then\n      begin\n        flushOutput;\n        docName:= trim(copy(s,comStart+4,comEnd-1 -(comStart+4)+1));\n        continue;\n      end;\n    end;\n\n    comStart:= pos('{* ',s+' ');\n    indented:= false;\n    inCode := false;\n    if comStart <> 0 then\n      inc(comStart, 2)\n    else\n    begin\n      comStart := pos('{** ',s+' ');\n      if comStart <> 0 then\n        inc(comStart, 3);\n      indented := true;\n    end;\n    if comStart<>0 then\n      begin\n        delete(s,1,comStart-1);\n        comStart := 1;\n        description := '';\n        comEnd := pos('}',s);\n        if comEnd = 0 then\n        begin\n          prevBulletPoint := false;\n          description := description + trim(copy(s,comStart,length(s)-comStart+1));\n          while not eof(t) do\n          begin\n            readln(t,s);\n            bulletPoint := false;\n            s := trim(s);\n            if s.StartsWith('```') then inCode := not inCode;\n            if not inCode then\n            begin\n              s := StringReplace(s, '<=', '&le;', [rfReplaceAll]);\n              s := StringReplace(s, '>=', '&ge;', [rfReplaceAll]);\n            end;\n            if s = '' then description := description + '<p>'\n            else\n            begin\n              comEnd := pos('}',s);\n              if comEnd > 0 then s := trim(copy(s,1,comEnd-1));\n              if not inCode then\n              begin\n                if s.StartsWith('- ') then\n                begin\n                  description := description + IfThen(prevBulletPoint,'',LineEnding)+'* '+s.Substring(2)+LineEnding;\n                  bulletPoint := true;\n                end\n                else\n                  description := description + ' '+s;\n              end;\n              if comEnd > 0 then break\n              else if inCode then description := description + LineEnding;\n            end;\n            prevBulletPoint:= bulletPoint;\n          end;\n        end\n        else\n          description := description + trim(copy(s,comStart,comEnd-comStart));\n\n        AdaptMarkdown(description);\n\n        while pos('[#',description) <> 0 do\n        begin\n          idxColor := pos('[#',description);\n          colorStr := copy(description, idxColor, 9);\n          if (length(colorStr) = 9) and colorStr.EndsWith(']') then\n            begin\n              delete(description, idxColor, length(colorStr));\n              insert('<span style=\"width:8px; height: 8px; display: inline-block; border: 1px solid black; background: '+copy(colorStr,2,length(colorStr)-2)+';\"></span>', description, idxColor);\n            end;\n        end;\n\n        if not eof(t) then\n          readln(t,element) else element := '?';\n\n        HighlightKeywords(element);\n        element := trim(element);\n\n        openTable;\n        if oddRow then bgcolor := 'white' else bgcolor := '#f0f0ff';\n\n        if indented then\n        begin\n          fileoutput := fileoutput + '<tr><td width=\"10%\"></td><td colspan=\"2\" style=\"background: '+bgcolor+';\">'+element+'</td></tr>'+LineEnding;\n          fileoutput := fileoutput + '<tr><td width=\"10%\"></td><td width=\"10%\" style=\"background: '+bgcolor+';\"></td>'+\n             '<td style=\"border: 1px solid #e0e0a0; background: #ffffe4;\">'+description+'</td></tr>'+LineEnding;\n        end else\n        begin\n          fileoutput := fileoutput + '<tr style=\"background: '+bgcolor+';\"><td colspan=\"3\">'+element+'</td></tr>'+LineEnding;\n          fileoutput := fileoutput + '<tr style=\"background: '+bgcolor+';\"><td width=\"10%\"></td>'+\n             '<td style=\"border: 1px solid #e0e0a0; background: #ffffe4;\" colspan=\"2\">'+description+'</td></tr>'+LineEnding;\n        end;\n\n        fileoutput := fileoutput + '<tr style=\"height: 8px;\"><td colspan=\"3\"></td></tr>'+LineEnding;\n        oddRow := not oddRow;\n      end;\n  end;\n  closefile(t);\n  flushOutput;\nend;\n\nfunction ExportPages(APages: TDocumentationPages; APath: string): string;\nvar\n  i: Integer;\n  u: textfile;\n  outname, fullname, currentContent, fileoutput: String;\nbegin\n  result := '';\n  if APages.Count = 0 then exit;\n  CreateDirUTF8(APath+DirectorySeparator+'doc');\n  for i := 0 to APages.Count-1 do\n  begin\n    outname := 'doc'+DirectorySeparator+APages.Keys[i]+'.txt';\n    fullname := APath+outname;\n    fileoutput := APages.Data[i];\n    if FileExistsUTF8(fullname) then\n    begin\n      currentContent := ReadFileToString(fullname);\n      if currentContent <> fileoutput then\n      begin\n        assignfile(u, UTF8ToSys(fullname));\n        rewrite(u);\n        write(u, fileoutput);\n        closefile(u);\n        result := result + outname + ' (updated)' + LineEnding;\n      end else\n      begin\n        result := result + outname + ' (unchanged)' + LineEnding;\n      end;\n    end else\n    begin\n      result := result + outname + ' (created)' + LineEnding;\n      assignfile(u, UTF8ToSys(fullname));\n      rewrite(u);\n      write(u, fileoutput);\n      closefile(u);\n    end;\n  end;\nend;\n\nprocedure TForm1.Button2Click(Sender: TObject);\nvar sr: TSearchRec;\n  output,ext: string;\n  basePath,path: string;\n  pages: TDocumentationPages;\nbegin\n  memo1.Text := 'Analyzing...';\n  memo1.Update;\n  basePath := ExtractFilePath(ParamStr(0));\n  {$IFDEF DARWIN}\n  if basePath.EndsWith('/MacOS/') then\n    basePath := ExpandFileNameUTF8(basePath+'../../../');\n  {$ENDIF}\n  path := ExpandFileNameUTF8(AppendPathDelim(EPath.Text), basePath);\n  if FindFirstUTF8(path+'*.*', faAnyFile, sr) = 0 then\n  begin\n    pages := TDocumentationPages.Create;\n    pages.Sorted:= true;\n    repeat\n      if sr.Attr and (faDirectory or faVolumeId or faSymLink) <> 0 then continue;\n      ext := AnsiLowerCase(ExtractFileExt(sr.Name));\n      if (ext = '.pas') or (ext = '.inc') then\n        MakeDocFor(path+sr.Name, pages);\n    until FindNextUTF8(sr) <> 0;\n    FindCloseUTF8(sr);\n\n    output := ExportPages(pages, path);\n    if output = '' then\n      Memo1.Text := 'No output'\n    else\n      Memo1.text := output;\n    pages.Free;\n  end\n  else\n    Memo1.Text := 'Nothing to do';\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  EPath.Text := StringReplace(EPath.Text, '/', PathDelim, [rfReplaceAll]);\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/parseunicode/ArabicShaping.txt",
    "content": "# ArabicShaping-13.0.0.txt\n# Date: 2020-01-31, 23:55:00 GMT [KW, RP]\n# © 2020 Unicode®, Inc.\n# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\n# For terms of use, see http://www.unicode.org/terms_of_use.html\n#\n# This file is a normative contributory data file in the\n# Unicode Character Database.\n#\n# This file defines the Joining_Type and Joining_Group property\n# values for Arabic, Syriac, N'Ko, Mandaic, and Manichaean positional\n# shaping, repeating in machine readable form the information\n# exemplified in Tables 9-3, 9-8, 9-9, 9-10, 9-14, 9-15, 9-16, 9-19,\n# 9-20, 10-4, 10-5, 10-6, 10-7, and 19-5 of The Unicode Standard core\n# specification. This file also defines Joining_Type values for\n# Mongolian, Phags-pa, Psalter Pahlavi, Sogdian, Chorasmian, and Adlam positional shaping,\n# and Joining_Type and Joining_Group values for Hanifi Rohingya positional shaping,\n# which are not listed in tables in the standard.\n#\n# See Sections 9.2, 9.3, 9.5, 10.5, 10.6, 13.4, 14.3, 14.10, 16.14, 19.4, and 19.9\n# of The Unicode Standard core specification for more information.\n#\n# Each line contains four fields, separated by a semicolon.\n#\n# Field 0: the code point, in 4-digit hexadecimal\n#   form, of a character.\n#\n# Field 1: gives a short schematic name for that character.\n#   The schematic name is descriptive of the shape, based as\n#   consistently as possible on a name for the skeleton and\n#   then the diacritic marks applied to the skeleton, if any.\n#   Note that this schematic name is considered a comment,\n#   and does not constitute a formal property value.\n#\n# Field 2: defines the joining type (property name: Joining_Type)\n#   R Right_Joining\n#   L Left_Joining\n#   D Dual_Joining\n#   C Join_Causing\n#   U Non_Joining\n#   T Transparent\n#\n# See Section 9.2, Arabic for more information on these joining types.\n# Note that for cursive joining scripts which are typically rendered\n# top-to-bottom, rather than right-to-left, Joining_Type=L conventionally\n# refers to bottom joining, and Joining_Type=R conventionally refers\n# to top joining. See Section 14.3, Phags-pa for more information on the\n# interpretation of joining types in vertical layout.\n#\n# Field 3: defines the joining group (property name: Joining_Group)\n#\n# The values of the joining group are based schematically on character\n# names. Where a schematic character name consists of two or more parts\n# separated by spaces, the formal Joining_Group property value, as specified in\n# PropertyValueAliases.txt, consists of the same name parts joined by\n# underscores. Hence, the entry:\n#\n#   0629; TEH MARBUTA; R; TEH MARBUTA\n#\n# corresponds to [Joining_Group = Teh_Marbuta].\n#\n# Note: The property value now designated [Joining_Group = Teh_Marbuta_Goal]\n#   used to apply to both of the following characters\n#   in earlier versions of the standard:\n#\n#   U+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE\n#   U+06C3 ARABIC LETTER TEH MARBUTA GOAL\n#\n#   However, it currently applies only to U+06C3, and *not* to U+06C2.\n#   To avoid destabilizing existing Joining_Group property aliases, the\n#   prior Joining_Group value for U+06C3 (Hamza_On_Heh_Goal) has been\n#   retained as a property value alias, despite the fact that it\n#   no longer applies to its namesake character, U+06C2.\n#   See PropertyValueAliases.txt.\n#\n# When other cursive scripts are added to the Unicode Standard in the\n# future, the joining group value of all its letters will default to\n# jg=No_Joining_Group in this data file. Other, more specific\n# joining group values will be defined only if an explicit proposal\n# to define those values exactly has been approved by the UTC. This\n# is the convention exemplified by the N'Ko, Mandaic, Mongolian,\n# Phags-pa, Psalter Pahlavi, Sogdian, Chorasmian, and Adlam scripts.\n# Only the Arabic, Manichaean, and Syriac scripts currently have\n# explicit joining group values defined for all characters, including\n# those which have only a single character in a particular Joining_Group\n# class. Hanifi Rohingya has explicit Joining_Group values assigned only for\n# the few characters which share a particular Joining_Group class, but\n# assigns jg=No_Joining_Group to all the singletons.\n#\n# Note: Code points that are not explicitly listed in this file are\n# either of joining type T or U:\n#\n# - Those that are not explicitly listed and that are of General Category Mn, Me, or Cf\n#   have joining type T.\n# - All others not explicitly listed have joining type U.\n#\n# For an explicit listing of all characters of joining type T, see\n# the derived property file DerivedJoiningType.txt.\n#\n# #############################################################\n\n# Unicode; Schematic Name; Joining Type; Joining Group\n\n# Arabic Characters\n\n0600; ARABIC NUMBER SIGN; U; No_Joining_Group\n0601; ARABIC SIGN SANAH; U; No_Joining_Group\n0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group\n0603; ARABIC SIGN SAFHA; U; No_Joining_Group\n0604; ARABIC SIGN SAMVAT; U; No_Joining_Group\n0605; ARABIC NUMBER MARK ABOVE; U; No_Joining_Group\n0608; ARABIC RAY; U; No_Joining_Group\n060B; AFGHANI SIGN; U; No_Joining_Group\n0620; DOTLESS YEH WITH SEPARATE RING BELOW; D; YEH\n0621; HAMZA; U; No_Joining_Group\n0622; ALEF WITH MADDA ABOVE; R; ALEF\n0623; ALEF WITH HAMZA ABOVE; R; ALEF\n0624; WAW WITH HAMZA ABOVE; R; WAW\n0625; ALEF WITH HAMZA BELOW; R; ALEF\n0626; DOTLESS YEH WITH HAMZA ABOVE; D; YEH\n0627; ALEF; R; ALEF\n0628; BEH; D; BEH\n0629; TEH MARBUTA; R; TEH MARBUTA\n062A; DOTLESS BEH WITH 2 DOTS ABOVE; D; BEH\n062B; DOTLESS BEH WITH 3 DOTS ABOVE; D; BEH\n062C; HAH WITH DOT BELOW; D; HAH\n062D; HAH; D; HAH\n062E; HAH WITH DOT ABOVE; D; HAH\n062F; DAL; R; DAL\n0630; DAL WITH DOT ABOVE; R; DAL\n0631; REH; R; REH\n0632; REH WITH DOT ABOVE; R; REH\n0633; SEEN; D; SEEN\n0634; SEEN WITH 3 DOTS ABOVE; D; SEEN\n0635; SAD; D; SAD\n0636; SAD WITH DOT ABOVE; D; SAD\n0637; TAH; D; TAH\n0638; TAH WITH DOT ABOVE; D; TAH\n0639; AIN; D; AIN\n063A; AIN WITH DOT ABOVE; D; AIN\n063B; KEHEH WITH 2 DOTS ABOVE; D; GAF\n063C; KEHEH WITH 3 DOTS BELOW; D; GAF\n063D; FARSI YEH WITH INVERTED V ABOVE; D; FARSI YEH\n063E; FARSI YEH WITH 2 DOTS ABOVE; D; FARSI YEH\n063F; FARSI YEH WITH 3 DOTS ABOVE; D; FARSI YEH\n0640; TATWEEL; C; No_Joining_Group\n0641; FEH; D; FEH\n0642; QAF; D; QAF\n0643; KAF; D; KAF\n0644; LAM; D; LAM\n0645; MEEM; D; MEEM\n0646; NOON; D; NOON\n0647; HEH; D; HEH\n0648; WAW; R; WAW\n0649; DOTLESS YEH; D; YEH\n064A; YEH; D; YEH\n066E; DOTLESS BEH; D; BEH\n066F; DOTLESS QAF; D; QAF\n0671; ALEF WITH WASLA ABOVE; R; ALEF\n0672; ALEF WITH WAVY HAMZA ABOVE; R; ALEF\n0673; ALEF WITH WAVY HAMZA BELOW; R; ALEF\n0674; HIGH HAMZA; U; No_Joining_Group\n0675; HIGH HAMZA ALEF; R; ALEF\n0676; HIGH HAMZA WAW; R; WAW\n0677; HIGH HAMZA WAW WITH DAMMA ABOVE; R; WAW\n0678; HIGH HAMZA DOTLESS YEH; D; YEH\n0679; DOTLESS BEH WITH TAH ABOVE; D; BEH\n067A; DOTLESS BEH WITH VERTICAL 2 DOTS ABOVE; D; BEH\n067B; DOTLESS BEH WITH VERTICAL 2 DOTS BELOW; D; BEH\n067C; DOTLESS BEH WITH ATTACHED RING BELOW AND 2 DOTS ABOVE; D; BEH\n067D; DOTLESS BEH WITH INVERTED 3 DOTS ABOVE; D; BEH\n067E; DOTLESS BEH WITH 3 DOTS BELOW; D; BEH\n067F; DOTLESS BEH WITH 4 DOTS ABOVE; D; BEH\n0680; DOTLESS BEH WITH 4 DOTS BELOW; D; BEH\n0681; HAH WITH HAMZA ABOVE; D; HAH\n0682; HAH WITH VERTICAL 2 DOTS ABOVE; D; HAH\n0683; HAH WITH 2 DOTS BELOW; D; HAH\n0684; HAH WITH VERTICAL 2 DOTS BELOW; D; HAH\n0685; HAH WITH 3 DOTS ABOVE; D; HAH\n0686; HAH WITH 3 DOTS BELOW; D; HAH\n0687; HAH WITH 4 DOTS BELOW; D; HAH\n0688; DAL WITH TAH ABOVE; R; DAL\n0689; DAL WITH ATTACHED RING BELOW; R; DAL\n068A; DAL WITH DOT BELOW; R; DAL\n068B; DAL WITH DOT BELOW AND TAH ABOVE; R; DAL\n068C; DAL WITH 2 DOTS ABOVE; R; DAL\n068D; DAL WITH 2 DOTS BELOW; R; DAL\n068E; DAL WITH 3 DOTS ABOVE; R; DAL\n068F; DAL WITH INVERTED 3 DOTS ABOVE; R; DAL\n0690; DAL WITH 4 DOTS ABOVE; R; DAL\n0691; REH WITH TAH ABOVE; R; REH\n0692; REH WITH V ABOVE; R; REH\n0693; REH WITH ATTACHED RING BELOW; R; REH\n0694; REH WITH DOT BELOW; R; REH\n0695; REH WITH V BELOW; R; REH\n0696; REH WITH DOT BELOW AND DOT WITHIN; R; REH\n0697; REH WITH 2 DOTS ABOVE; R; REH\n0698; REH WITH 3 DOTS ABOVE; R; REH\n0699; REH WITH 4 DOTS ABOVE; R; REH\n069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN\n069B; SEEN WITH 3 DOTS BELOW; D; SEEN\n069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN\n069D; SAD WITH 2 DOTS BELOW; D; SAD\n069E; SAD WITH 3 DOTS ABOVE; D; SAD\n069F; TAH WITH 3 DOTS ABOVE; D; TAH\n06A0; AIN WITH 3 DOTS ABOVE; D; AIN\n06A1; DOTLESS FEH; D; FEH\n06A2; DOTLESS FEH WITH DOT BELOW; D; FEH\n06A3; FEH WITH DOT BELOW; D; FEH\n06A4; DOTLESS FEH WITH 3 DOTS ABOVE; D; FEH\n06A5; DOTLESS FEH WITH 3 DOTS BELOW; D; FEH\n06A6; DOTLESS FEH WITH 4 DOTS ABOVE; D; FEH\n06A7; DOTLESS QAF WITH DOT ABOVE; D; QAF\n06A8; DOTLESS QAF WITH 3 DOTS ABOVE; D; QAF\n06A9; KEHEH; D; GAF\n06AA; SWASH KAF; D; SWASH KAF\n06AB; KEHEH WITH ATTACHED RING BELOW; D; GAF\n06AC; KAF WITH DOT ABOVE; D; KAF\n06AD; KAF WITH 3 DOTS ABOVE; D; KAF\n06AE; KAF WITH 3 DOTS BELOW; D; KAF\n06AF; GAF; D; GAF\n06B0; GAF WITH ATTACHED RING BELOW; D; GAF\n06B1; GAF WITH 2 DOTS ABOVE; D; GAF\n06B2; GAF WITH 2 DOTS BELOW; D; GAF\n06B3; GAF WITH VERTICAL 2 DOTS BELOW; D; GAF\n06B4; GAF WITH 3 DOTS ABOVE; D; GAF\n06B5; LAM WITH V ABOVE; D; LAM\n06B6; LAM WITH DOT ABOVE; D; LAM\n06B7; LAM WITH 3 DOTS ABOVE; D; LAM\n06B8; LAM WITH 3 DOTS BELOW; D; LAM\n06B9; NOON WITH DOT BELOW; D; NOON\n06BA; DOTLESS NOON; D; NOON\n06BB; DOTLESS NOON WITH TAH ABOVE; D; NOON\n06BC; NOON WITH ATTACHED RING BELOW; D; NOON\n06BD; NYA; D; NYA\n06BE; KNOTTED HEH; D; KNOTTED HEH\n06BF; HAH WITH 3 DOTS BELOW AND DOT ABOVE; D; HAH\n06C0; DOTLESS TEH MARBUTA WITH HAMZA ABOVE; R; TEH MARBUTA\n06C1; HEH GOAL; D; HEH GOAL\n06C2; HEH GOAL WITH HAMZA ABOVE; D; HEH GOAL\n06C3; TEH MARBUTA GOAL; R; TEH MARBUTA GOAL\n06C4; WAW WITH ATTACHED RING WITHIN; R; WAW\n06C5; WAW WITH BAR; R; WAW\n06C6; WAW WITH V ABOVE; R; WAW\n06C7; WAW WITH DAMMA ABOVE; R; WAW\n06C8; WAW WITH ALEF ABOVE; R; WAW\n06C9; WAW WITH INVERTED V ABOVE; R; WAW\n06CA; WAW WITH 2 DOTS ABOVE; R; WAW\n06CB; WAW WITH 3 DOTS ABOVE; R; WAW\n06CC; FARSI YEH; D; FARSI YEH\n06CD; YEH WITH TAIL; R; YEH WITH TAIL\n06CE; FARSI YEH WITH V ABOVE; D; FARSI YEH\n06CF; WAW WITH DOT ABOVE; R; WAW\n06D0; DOTLESS YEH WITH VERTICAL 2 DOTS BELOW; D; YEH\n06D1; DOTLESS YEH WITH 3 DOTS BELOW; D; YEH\n06D2; YEH BARREE; R; YEH BARREE\n06D3; YEH BARREE WITH HAMZA ABOVE; R; YEH BARREE\n06D5; DOTLESS TEH MARBUTA; R; TEH MARBUTA\n06DD; ARABIC END OF AYAH; U; No_Joining_Group\n06EE; DAL WITH INVERTED V ABOVE; R; DAL\n06EF; REH WITH INVERTED V ABOVE; R; REH\n06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN\n06FB; SAD WITH DOT BELOW AND DOT ABOVE; D; SAD\n06FC; AIN WITH DOT BELOW AND DOT ABOVE; D; AIN\n06FF; KNOTTED HEH WITH INVERTED V ABOVE; D; KNOTTED HEH\n\n# Syriac Characters\n\n070F; SYRIAC ABBREVIATION MARK; T; No_Joining_Group\n0710; ALAPH; R; ALAPH\n0712; BETH; D; BETH\n0713; GAMAL; D; GAMAL\n0714; GAMAL GARSHUNI; D; GAMAL\n0715; DALATH; R; DALATH RISH\n0716; DOTLESS DALATH RISH; R; DALATH RISH\n0717; HE; R; HE\n0718; WAW; R; SYRIAC WAW\n0719; ZAIN; R; ZAIN\n071A; HETH; D; HETH\n071B; TETH; D; TETH\n071C; TETH GARSHUNI; D; TETH\n071D; YUDH; D; YUDH\n071E; YUDH HE; R; YUDH HE\n071F; KAPH; D; KAPH\n0720; LAMADH; D; LAMADH\n0721; MIM; D; MIM\n0722; NUN; D; NUN\n0723; SEMKATH; D; SEMKATH\n0724; FINAL SEMKATH; D; FINAL SEMKATH\n0725; E; D; E\n0726; PE; D; PE\n0727; REVERSED PE; D; REVERSED PE\n0728; SADHE; R; SADHE\n0729; QAPH; D; QAPH\n072A; RISH; R; DALATH RISH\n072B; SHIN; D; SHIN\n072C; TAW; R; TAW\n072D; PERSIAN BHETH; D; BETH\n072E; PERSIAN GHAMAL; D; GAMAL\n072F; PERSIAN DHALATH; R; DALATH RISH\n074D; SOGDIAN ZHAIN; R; ZHAIN\n074E; SOGDIAN KHAPH; D; KHAPH\n074F; SOGDIAN FE; D; FE\n\n# Arabic Supplement Characters\n\n0750; DOTLESS BEH WITH HORIZONTAL 3 DOTS BELOW; D; BEH\n0751; BEH WITH 3 DOTS ABOVE; D; BEH\n0752; DOTLESS BEH WITH INVERTED 3 DOTS BELOW; D; BEH\n0753; DOTLESS BEH WITH INVERTED 3 DOTS BELOW AND 2 DOTS ABOVE; D; BEH\n0754; DOTLESS BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH\n0755; DOTLESS BEH WITH INVERTED V BELOW; D; BEH\n0756; DOTLESS BEH WITH V ABOVE; D; BEH\n0757; HAH WITH 2 DOTS ABOVE; D; HAH\n0758; HAH WITH INVERTED 3 DOTS BELOW; D; HAH\n0759; DAL WITH VERTICAL 2 DOTS BELOW AND TAH ABOVE; R; DAL\n075A; DAL WITH INVERTED V BELOW; R; DAL\n075B; REH WITH BAR; R; REH\n075C; SEEN WITH 4 DOTS ABOVE; D; SEEN\n075D; AIN WITH 2 DOTS ABOVE; D; AIN\n075E; AIN WITH INVERTED 3 DOTS ABOVE; D; AIN\n075F; AIN WITH VERTICAL 2 DOTS ABOVE; D; AIN\n0760; DOTLESS FEH WITH 2 DOTS BELOW; D; FEH\n0761; DOTLESS FEH WITH INVERTED 3 DOTS BELOW; D; FEH\n0762; KEHEH WITH DOT ABOVE; D; GAF\n0763; KEHEH WITH 3 DOTS ABOVE; D; GAF\n0764; KEHEH WITH INVERTED 3 DOTS BELOW; D; GAF\n0765; MEEM WITH DOT ABOVE; D; MEEM\n0766; MEEM WITH DOT BELOW; D; MEEM\n0767; NOON WITH 2 DOTS BELOW; D; NOON\n0768; NOON WITH TAH ABOVE; D; NOON\n0769; NOON WITH V ABOVE; D; NOON\n076A; LAM WITH BAR; D; LAM\n076B; REH WITH VERTICAL 2 DOTS ABOVE; R; REH\n076C; REH WITH HAMZA ABOVE; R; REH\n076D; SEEN WITH VERTICAL 2 DOTS ABOVE; D; SEEN\n076E; HAH WITH TAH BELOW; D; HAH\n076F; HAH WITH TAH AND 2 DOTS BELOW; D; HAH\n0770; SEEN WITH 2 DOTS AND TAH ABOVE; D; SEEN\n0771; REH WITH 2 DOTS AND TAH ABOVE; R; REH\n0772; HAH WITH TAH ABOVE; D; HAH\n0773; ALEF WITH DIGIT TWO ABOVE; R; ALEF\n0774; ALEF WITH DIGIT THREE ABOVE; R; ALEF\n0775; FARSI YEH WITH DIGIT TWO ABOVE; D; FARSI YEH\n0776; FARSI YEH WITH DIGIT THREE ABOVE; D; FARSI YEH\n0777; DOTLESS YEH WITH DIGIT FOUR BELOW; D; YEH\n0778; WAW WITH DIGIT TWO ABOVE; R; WAW\n0779; WAW WITH DIGIT THREE ABOVE; R; WAW\n077A; BURUSHASKI YEH BARREE WITH DIGIT TWO ABOVE; D; BURUSHASKI YEH BARREE\n077B; BURUSHASKI YEH BARREE WITH DIGIT THREE ABOVE; D; BURUSHASKI YEH BARREE\n077C; HAH WITH DIGIT FOUR BELOW; D; HAH\n077D; SEEN WITH DIGIT FOUR ABOVE; D; SEEN\n077E; SEEN WITH INVERTED V ABOVE; D; SEEN\n077F; KAF WITH 2 DOTS ABOVE; D; KAF\n\n# N'Ko Characters\n\n07CA; NKO A; D; No_Joining_Group\n07CB; NKO EE; D; No_Joining_Group\n07CC; NKO I; D; No_Joining_Group\n07CD; NKO E; D; No_Joining_Group\n07CE; NKO U; D; No_Joining_Group\n07CF; NKO OO; D; No_Joining_Group\n07D0; NKO O; D; No_Joining_Group\n07D1; NKO DAGBASINNA; D; No_Joining_Group\n07D2; NKO N; D; No_Joining_Group\n07D3; NKO BA; D; No_Joining_Group\n07D4; NKO PA; D; No_Joining_Group\n07D5; NKO TA; D; No_Joining_Group\n07D6; NKO JA; D; No_Joining_Group\n07D7; NKO CHA; D; No_Joining_Group\n07D8; NKO DA; D; No_Joining_Group\n07D9; NKO RA; D; No_Joining_Group\n07DA; NKO RRA; D; No_Joining_Group\n07DB; NKO SA; D; No_Joining_Group\n07DC; NKO GBA; D; No_Joining_Group\n07DD; NKO FA; D; No_Joining_Group\n07DE; NKO KA; D; No_Joining_Group\n07DF; NKO LA; D; No_Joining_Group\n07E0; NKO NA WOLOSO; D; No_Joining_Group\n07E1; NKO MA; D; No_Joining_Group\n07E2; NKO NYA; D; No_Joining_Group\n07E3; NKO NA; D; No_Joining_Group\n07E4; NKO HA; D; No_Joining_Group\n07E5; NKO WA; D; No_Joining_Group\n07E6; NKO YA; D; No_Joining_Group\n07E7; NKO NYA WOLOSO; D; No_Joining_Group\n07E8; NKO JONA JA; D; No_Joining_Group\n07E9; NKO JONA CHA; D; No_Joining_Group\n07EA; NKO JONA RA; D; No_Joining_Group\n07FA; NKO LAJANYALAN; C; No_Joining_Group\n\n# Mandaic Characters\n\n0840; MANDAIC HALQA; R; No_Joining_Group\n0841; MANDAIC AB; D; No_Joining_Group\n0842; MANDAIC AG; D; No_Joining_Group\n0843; MANDAIC AD; D; No_Joining_Group\n0844; MANDAIC AH; D; No_Joining_Group\n0845; MANDAIC USHENNA; D; No_Joining_Group\n0846; MANDAIC AZ; R; No_Joining_Group\n0847; MANDAIC IT; R; No_Joining_Group\n0848; MANDAIC ATT; D; No_Joining_Group\n0849; MANDAIC AKSA; R; No_Joining_Group\n084A; MANDAIC AK; D; No_Joining_Group\n084B; MANDAIC AL; D; No_Joining_Group\n084C; MANDAIC AM; D; No_Joining_Group\n084D; MANDAIC AN; D; No_Joining_Group\n084E; MANDAIC AS; D; No_Joining_Group\n084F; MANDAIC IN; D; No_Joining_Group\n0850; MANDAIC AP; D; No_Joining_Group\n0851; MANDAIC ASZ; D; No_Joining_Group\n0852; MANDAIC AQ; D; No_Joining_Group\n0853; MANDAIC AR; D; No_Joining_Group\n0854; MANDAIC ASH; R; No_Joining_Group\n0855; MANDAIC AT; D; No_Joining_Group\n0856; MANDAIC DUSHENNA; R; No_Joining_Group\n0857; MANDAIC KAD; R; No_Joining_Group\n0858; MANDAIC AIN; R; No_Joining_Group\n\n# Syriac Supplement Characters\n\n0860; MALAYALAM NGA; D; MALAYALAM NGA\n0861; MALAYALAM JA; U; MALAYALAM JA\n0862; MALAYALAM NYA; D; MALAYALAM NYA\n0863; MALAYALAM TTA; D; MALAYALAM TTA\n0864; MALAYALAM NNA; D; MALAYALAM NNA\n0865; MALAYALAM NNNA; D; MALAYALAM NNNA\n0866; MALAYALAM BHA; U; MALAYALAM BHA\n0867; MALAYALAM RA; R; MALAYALAM RA\n0868; MALAYALAM LLA; D; MALAYALAM LLA\n0869; MALAYALAM LLLA; R; MALAYALAM LLLA\n086A; MALAYALAM SSA; R; MALAYALAM SSA\n\n# Arabic Extended-A Characters\n\n08A0; DOTLESS BEH WITH V BELOW; D; BEH\n08A1; BEH WITH HAMZA ABOVE; D; BEH\n08A2; HAH WITH DOT BELOW AND 2 DOTS ABOVE; D; HAH\n08A3; TAH WITH 2 DOTS ABOVE; D; TAH\n08A4; DOTLESS FEH WITH DOT BELOW AND 3 DOTS ABOVE; D; FEH\n08A5; QAF WITH DOT BELOW; D; QAF\n08A6; LAM WITH DOUBLE BAR; D; LAM\n08A7; MEEM WITH 3 DOTS ABOVE; D; MEEM\n08A8; YEH WITH HAMZA ABOVE; D; YEH\n08A9; YEH WITH DOT ABOVE; D; YEH\n08AA; REH WITH LOOP; R; REH\n08AB; WAW WITH DOT WITHIN; R; WAW\n08AC; ROHINGYA YEH; R; ROHINGYA YEH\n08AD; LOW ALEF; U; No_Joining_Group\n08AE; DAL WITH 3 DOTS BELOW; R; DAL\n08AF; SAD WITH 3 DOTS BELOW; D; SAD\n08B0; KEHEH WITH STROKE BELOW; D; GAF\n08B1; STRAIGHT WAW; R; STRAIGHT WAW\n08B2; REH WITH DOT AND INVERTED V ABOVE; R; REH\n08B3; AIN WITH 3 DOTS BELOW; D; AIN\n08B4; KAF WITH DOT BELOW; D; KAF\n08B6; BEH WITH MEEM ABOVE; D; BEH\n08B7; DOTLESS BEH WITH 3 DOTS BELOW AND MEEM ABOVE; D; BEH\n08B8; DOTLESS BEH WITH TEH ABOVE; D; BEH\n08B9; REH WITH NOON ABOVE; R; REH\n08BA; YEH WITH NOON ABOVE; D; YEH\n08BB; AFRICAN FEH; D; AFRICAN FEH\n08BC; AFRICAN QAF; D; AFRICAN QAF\n08BD; AFRICAN NOON; D; AFRICAN NOON\n08BE; DOTLESS BEH WITH 3 DOTS BELOW AND V ABOVE; D; BEH\n08BF; DOTLESS BEH WITH 2 DOTS AND V ABOVE; D; BEH\n08C0; DOTLESS BEH WITH TAH AND V ABOVE; D; BEH\n08C1; HAH WITH 3 DOTS BELOW AND V ABOVE; D; HAH\n08C2; KEHEH WITH V ABOVE; D; GAF\n08C3; AIN WITH DIAMOND 4 DOTS ABOVE; D; AIN\n08C4; AFRICAN QAF WITH 3 DOTS ABOVE; D; AFRICAN QAF\n08C5; HAH WITH DOT BELOW AND 3 DOTS ABOVE; D; HAH\n08C6; HAH WITH DIAMOND 4 DOTS BELOW; D; HAH\n08C7; LAM WITH TAH ABOVE; D; LAM\n08E2; ARABIC DISPUTED END OF AYAH; U; No_Joining_Group\n\n# Mongolian Characters\n\n1806; MONGOLIAN TODO SOFT HYPHEN; U; No_Joining_Group\n1807; MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER; D; No_Joining_Group\n180A; MONGOLIAN NIRUGU; C; No_Joining_Group\n180E; MONGOLIAN VOWEL SEPARATOR; U; No_Joining_Group\n1820; MONGOLIAN A; D; No_Joining_Group\n1821; MONGOLIAN E; D; No_Joining_Group\n1822; MONGOLIAN I; D; No_Joining_Group\n1823; MONGOLIAN O; D; No_Joining_Group\n1824; MONGOLIAN U; D; No_Joining_Group\n1825; MONGOLIAN OE; D; No_Joining_Group\n1826; MONGOLIAN UE; D; No_Joining_Group\n1827; MONGOLIAN EE; D; No_Joining_Group\n1828; MONGOLIAN NA; D; No_Joining_Group\n1829; MONGOLIAN ANG; D; No_Joining_Group\n182A; MONGOLIAN BA; D; No_Joining_Group\n182B; MONGOLIAN PA; D; No_Joining_Group\n182C; MONGOLIAN QA; D; No_Joining_Group\n182D; MONGOLIAN GA; D; No_Joining_Group\n182E; MONGOLIAN MA; D; No_Joining_Group\n182F; MONGOLIAN LA; D; No_Joining_Group\n1830; MONGOLIAN SA; D; No_Joining_Group\n1831; MONGOLIAN SHA; D; No_Joining_Group\n1832; MONGOLIAN TA; D; No_Joining_Group\n1833; MONGOLIAN DA; D; No_Joining_Group\n1834; MONGOLIAN CHA; D; No_Joining_Group\n1835; MONGOLIAN JA; D; No_Joining_Group\n1836; MONGOLIAN YA; D; No_Joining_Group\n1837; MONGOLIAN RA; D; No_Joining_Group\n1838; MONGOLIAN WA; D; No_Joining_Group\n1839; MONGOLIAN FA; D; No_Joining_Group\n183A; MONGOLIAN KA; D; No_Joining_Group\n183B; MONGOLIAN KHA; D; No_Joining_Group\n183C; MONGOLIAN TSA; D; No_Joining_Group\n183D; MONGOLIAN ZA; D; No_Joining_Group\n183E; MONGOLIAN HAA; D; No_Joining_Group\n183F; MONGOLIAN ZRA; D; No_Joining_Group\n1840; MONGOLIAN LHA; D; No_Joining_Group\n1841; MONGOLIAN ZHI; D; No_Joining_Group\n1842; MONGOLIAN CHI; D; No_Joining_Group\n1843; MONGOLIAN TODO LONG VOWEL SIGN; D; No_Joining_Group\n1844; MONGOLIAN TODO E; D; No_Joining_Group\n1845; MONGOLIAN TODO I; D; No_Joining_Group\n1846; MONGOLIAN TODO O; D; No_Joining_Group\n1847; MONGOLIAN TODO U; D; No_Joining_Group\n1848; MONGOLIAN TODO OE; D; No_Joining_Group\n1849; MONGOLIAN TODO UE; D; No_Joining_Group\n184A; MONGOLIAN TODO ANG; D; No_Joining_Group\n184B; MONGOLIAN TODO BA; D; No_Joining_Group\n184C; MONGOLIAN TODO PA; D; No_Joining_Group\n184D; MONGOLIAN TODO QA; D; No_Joining_Group\n184E; MONGOLIAN TODO GA; D; No_Joining_Group\n184F; MONGOLIAN TODO MA; D; No_Joining_Group\n1850; MONGOLIAN TODO TA; D; No_Joining_Group\n1851; MONGOLIAN TODO DA; D; No_Joining_Group\n1852; MONGOLIAN TODO CHA; D; No_Joining_Group\n1853; MONGOLIAN TODO JA; D; No_Joining_Group\n1854; MONGOLIAN TODO TSA; D; No_Joining_Group\n1855; MONGOLIAN TODO YA; D; No_Joining_Group\n1856; MONGOLIAN TODO WA; D; No_Joining_Group\n1857; MONGOLIAN TODO KA; D; No_Joining_Group\n1858; MONGOLIAN TODO GAA; D; No_Joining_Group\n1859; MONGOLIAN TODO HAA; D; No_Joining_Group\n185A; MONGOLIAN TODO JIA; D; No_Joining_Group\n185B; MONGOLIAN TODO NIA; D; No_Joining_Group\n185C; MONGOLIAN TODO DZA; D; No_Joining_Group\n185D; MONGOLIAN SIBE E; D; No_Joining_Group\n185E; MONGOLIAN SIBE I; D; No_Joining_Group\n185F; MONGOLIAN SIBE IY; D; No_Joining_Group\n1860; MONGOLIAN SIBE UE; D; No_Joining_Group\n1861; MONGOLIAN SIBE U; D; No_Joining_Group\n1862; MONGOLIAN SIBE ANG; D; No_Joining_Group\n1863; MONGOLIAN SIBE KA; D; No_Joining_Group\n1864; MONGOLIAN SIBE GA; D; No_Joining_Group\n1865; MONGOLIAN SIBE HA; D; No_Joining_Group\n1866; MONGOLIAN SIBE PA; D; No_Joining_Group\n1867; MONGOLIAN SIBE SHA; D; No_Joining_Group\n1868; MONGOLIAN SIBE TA; D; No_Joining_Group\n1869; MONGOLIAN SIBE DA; D; No_Joining_Group\n186A; MONGOLIAN SIBE JA; D; No_Joining_Group\n186B; MONGOLIAN SIBE FA; D; No_Joining_Group\n186C; MONGOLIAN SIBE GAA; D; No_Joining_Group\n186D; MONGOLIAN SIBE HAA; D; No_Joining_Group\n186E; MONGOLIAN SIBE TSA; D; No_Joining_Group\n186F; MONGOLIAN SIBE ZA; D; No_Joining_Group\n1870; MONGOLIAN SIBE RAA; D; No_Joining_Group\n1871; MONGOLIAN SIBE CHA; D; No_Joining_Group\n1872; MONGOLIAN SIBE ZHA; D; No_Joining_Group\n1873; MONGOLIAN MANCHU I; D; No_Joining_Group\n1874; MONGOLIAN MANCHU KA; D; No_Joining_Group\n1875; MONGOLIAN MANCHU RA; D; No_Joining_Group\n1876; MONGOLIAN MANCHU FA; D; No_Joining_Group\n1877; MONGOLIAN MANCHU ZHA; D; No_Joining_Group\n1878; MONGOLIAN MANCHU CHA WITH 2 DOTS; D; No_Joining_Group\n1880; MONGOLIAN ALI GALI ANUSVARA ONE; U; No_Joining_Group\n1881; MONGOLIAN ALI GALI VISARGA ONE; U; No_Joining_Group\n1882; MONGOLIAN ALI GALI DAMARU; U; No_Joining_Group\n1883; MONGOLIAN ALI GALI UBADAMA; U; No_Joining_Group\n1884; MONGOLIAN ALI GALI INVERTED UBADAMA; U; No_Joining_Group\n1885; MONGOLIAN ALI GALI BALUDA; T; No_Joining_Group\n1886; MONGOLIAN ALI GALI THREE BALUDA; T; No_Joining_Group\n1887; MONGOLIAN ALI GALI A; D; No_Joining_Group\n1888; MONGOLIAN ALI GALI I; D; No_Joining_Group\n1889; MONGOLIAN ALI GALI KA; D; No_Joining_Group\n188A; MONGOLIAN ALI GALI NGA; D; No_Joining_Group\n188B; MONGOLIAN ALI GALI CA; D; No_Joining_Group\n188C; MONGOLIAN ALI GALI TTA; D; No_Joining_Group\n188D; MONGOLIAN ALI GALI TTHA; D; No_Joining_Group\n188E; MONGOLIAN ALI GALI DDA; D; No_Joining_Group\n188F; MONGOLIAN ALI GALI NNA; D; No_Joining_Group\n1890; MONGOLIAN ALI GALI TA; D; No_Joining_Group\n1891; MONGOLIAN ALI GALI DA; D; No_Joining_Group\n1892; MONGOLIAN ALI GALI PA; D; No_Joining_Group\n1893; MONGOLIAN ALI GALI PHA; D; No_Joining_Group\n1894; MONGOLIAN ALI GALI SSA; D; No_Joining_Group\n1895; MONGOLIAN ALI GALI ZHA; D; No_Joining_Group\n1896; MONGOLIAN ALI GALI ZA; D; No_Joining_Group\n1897; MONGOLIAN ALI GALI AH; D; No_Joining_Group\n1898; MONGOLIAN TODO ALI GALI TA; D; No_Joining_Group\n1899; MONGOLIAN TODO ALI GALI ZHA; D; No_Joining_Group\n189A; MONGOLIAN MANCHU ALI GALI GHA; D; No_Joining_Group\n189B; MONGOLIAN MANCHU ALI GALI NGA; D; No_Joining_Group\n189C; MONGOLIAN MANCHU ALI GALI CA; D; No_Joining_Group\n189D; MONGOLIAN MANCHU ALI GALI JHA; D; No_Joining_Group\n189E; MONGOLIAN MANCHU ALI GALI TTA; D; No_Joining_Group\n189F; MONGOLIAN MANCHU ALI GALI DDHA; D; No_Joining_Group\n18A0; MONGOLIAN MANCHU ALI GALI TA; D; No_Joining_Group\n18A1; MONGOLIAN MANCHU ALI GALI DHA; D; No_Joining_Group\n18A2; MONGOLIAN MANCHU ALI GALI SSA; D; No_Joining_Group\n18A3; MONGOLIAN MANCHU ALI GALI CYA; D; No_Joining_Group\n18A4; MONGOLIAN MANCHU ALI GALI ZHA; D; No_Joining_Group\n18A5; MONGOLIAN MANCHU ALI GALI ZA; D; No_Joining_Group\n18A6; MONGOLIAN ALI GALI HALF U; D; No_Joining_Group\n18A7; MONGOLIAN ALI GALI HALF YA; D; No_Joining_Group\n18A8; MONGOLIAN MANCHU ALI GALI BHA; D; No_Joining_Group\n18AA; MONGOLIAN MANCHU ALI GALI LHA; D; No_Joining_Group\n\n# Other\n\n200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group\n200D; ZERO WIDTH JOINER; C; No_Joining_Group\n202F; NARROW NO-BREAK SPACE; U; No_Joining_Group\n2066; LEFT-TO-RIGHT ISOLATE; U; No_Joining_Group\n2067; RIGHT-TO-LEFT ISOLATE; U; No_Joining_Group\n2068; FIRST STRONG ISOLATE; U; No_Joining_Group\n2069; POP DIRECTIONAL ISOLATE; U; No_Joining_Group\n\n# Phags-Pa Characters\n\nA840; PHAGS-PA KA; D; No_Joining_Group\nA841; PHAGS-PA KHA; D; No_Joining_Group\nA842; PHAGS-PA GA; D; No_Joining_Group\nA843; PHAGS-PA NGA; D; No_Joining_Group\nA844; PHAGS-PA CA; D; No_Joining_Group\nA845; PHAGS-PA CHA; D; No_Joining_Group\nA846; PHAGS-PA JA; D; No_Joining_Group\nA847; PHAGS-PA NYA; D; No_Joining_Group\nA848; PHAGS-PA TA; D; No_Joining_Group\nA849; PHAGS-PA THA; D; No_Joining_Group\nA84A; PHAGS-PA DA; D; No_Joining_Group\nA84B; PHAGS-PA NA; D; No_Joining_Group\nA84C; PHAGS-PA PA; D; No_Joining_Group\nA84D; PHAGS-PA PHA; D; No_Joining_Group\nA84E; PHAGS-PA BA; D; No_Joining_Group\nA84F; PHAGS-PA MA; D; No_Joining_Group\nA850; PHAGS-PA TSA; D; No_Joining_Group\nA851; PHAGS-PA TSHA; D; No_Joining_Group\nA852; PHAGS-PA DZA; D; No_Joining_Group\nA853; PHAGS-PA WA; D; No_Joining_Group\nA854; PHAGS-PA ZHA; D; No_Joining_Group\nA855; PHAGS-PA ZA; D; No_Joining_Group\nA856; PHAGS-PA SMALL A; D; No_Joining_Group\nA857; PHAGS-PA YA; D; No_Joining_Group\nA858; PHAGS-PA RA; D; No_Joining_Group\nA859; PHAGS-PA LA; D; No_Joining_Group\nA85A; PHAGS-PA SHA; D; No_Joining_Group\nA85B; PHAGS-PA SA; D; No_Joining_Group\nA85C; PHAGS-PA HA; D; No_Joining_Group\nA85D; PHAGS-PA A; D; No_Joining_Group\nA85E; PHAGS-PA I; D; No_Joining_Group\nA85F; PHAGS-PA U; D; No_Joining_Group\nA860; PHAGS-PA E; D; No_Joining_Group\nA861; PHAGS-PA O; D; No_Joining_Group\nA862; PHAGS-PA QA; D; No_Joining_Group\nA863; PHAGS-PA XA; D; No_Joining_Group\nA864; PHAGS-PA FA; D; No_Joining_Group\nA865; PHAGS-PA GGA; D; No_Joining_Group\nA866; PHAGS-PA EE; D; No_Joining_Group\nA867; PHAGS-PA SUBJOINED WA; D; No_Joining_Group\nA868; PHAGS-PA SUBJOINED YA; D; No_Joining_Group\nA869; PHAGS-PA TTA; D; No_Joining_Group\nA86A; PHAGS-PA TTHA; D; No_Joining_Group\nA86B; PHAGS-PA DDA; D; No_Joining_Group\nA86C; PHAGS-PA NNA; D; No_Joining_Group\nA86D; PHAGS-PA ALTERNATE YA; D; No_Joining_Group\nA86E; PHAGS-PA VOICELESS SHA; D; No_Joining_Group\nA86F; PHAGS-PA VOICED HA; D; No_Joining_Group\nA870; PHAGS-PA ASPIRATED FA; D; No_Joining_Group\nA871; PHAGS-PA SUBJOINED RA; D; No_Joining_Group\nA872; PHAGS-PA SUPERFIXED RA; L; No_Joining_Group\nA873; PHAGS-PA CANDRABINDU; U; No_Joining_Group\n\n# Manichaean Characters\n\n10AC0; MANICHAEAN ALEPH; D; MANICHAEAN ALEPH\n10AC1; MANICHAEAN BETH; D; MANICHAEAN BETH\n10AC2; MANICHAEAN BETH WITH 2 DOTS ABOVE; D; MANICHAEAN BETH\n10AC3; MANICHAEAN GIMEL; D; MANICHAEAN GIMEL\n10AC4; MANICHAEAN GIMEL WITH ATTACHED RING BELOW; D; MANICHAEAN GIMEL\n10AC5; MANICHAEAN DALETH; R; MANICHAEAN DALETH\n10AC6; MANICHAEAN HE; U; No_Joining_Group\n10AC7; MANICHAEAN WAW; R; MANICHAEAN WAW\n10AC8; MANICHAEAN UD; U; No_Joining_Group\n10AC9; MANICHAEAN ZAYIN; R; MANICHAEAN ZAYIN\n10ACA; MANICHAEAN ZAYIN WITH 2 DOTS ABOVE; R; MANICHAEAN ZAYIN\n10ACB; MANICHAEAN JAYIN; U; No_Joining_Group\n10ACC; MANICHAEAN JAYIN WITH 2 DOTS ABOVE; U; No_Joining_Group\n10ACD; MANICHAEAN HETH; L; MANICHAEAN HETH\n10ACE; MANICHAEAN TETH; R; MANICHAEAN TETH\n10ACF; MANICHAEAN YODH; R; MANICHAEAN YODH\n10AD0; MANICHAEAN KAPH; R; MANICHAEAN KAPH\n10AD1; MANICHAEAN KAPH WITH DOT ABOVE; R; MANICHAEAN KAPH\n10AD2; MANICHAEAN KAPH WITH 2 DOTS ABOVE; R; MANICHAEAN KAPH\n10AD3; MANICHAEAN LAMEDH; D; MANICHAEAN LAMEDH\n10AD4; MANICHAEAN DHAMEDH; D; MANICHAEAN DHAMEDH\n10AD5; MANICHAEAN THAMEDH; D; MANICHAEAN THAMEDH\n10AD6; MANICHAEAN MEM; D; MANICHAEAN MEM\n10AD7; MANICHAEAN NUN; L; MANICHAEAN NUN\n10AD8; MANICHAEAN SAMEKH; D; MANICHAEAN SAMEKH\n10AD9; MANICHAEAN AYIN; D; MANICHAEAN AYIN\n10ADA; MANICHAEAN AYIN WITH 2 DOTS ABOVE; D; MANICHAEAN AYIN\n10ADB; MANICHAEAN PE; D; MANICHAEAN PE\n10ADC; MANICHAEAN PE WITH DOT ABOVE; D; MANICHAEAN PE\n10ADD; MANICHAEAN SADHE; R; MANICHAEAN SADHE\n10ADE; MANICHAEAN QOPH; D; MANICHAEAN QOPH\n10ADF; MANICHAEAN QOPH WITH DOT ABOVE; D; MANICHAEAN QOPH\n10AE0; MANICHAEAN QOPH WITH 2 DOTS ABOVE; D; MANICHAEAN QOPH\n10AE1; MANICHAEAN RESH; R; MANICHAEAN RESH\n10AE2; MANICHAEAN SHIN; U; No_Joining_Group\n10AE3; MANICHAEAN SHIN WITH 2 DOTS ABOVE; U; No_Joining_Group\n10AE4; MANICHAEAN TAW; R; MANICHAEAN TAW\n10AEB; MANICHAEAN ONE; D; MANICHAEAN ONE\n10AEC; MANICHAEAN FIVE; D; MANICHAEAN FIVE\n10AED; MANICHAEAN TEN; D; MANICHAEAN TEN\n10AEE; MANICHAEAN TWENTY; D; MANICHAEAN TWENTY\n10AEF; MANICHAEAN HUNDRED; R; MANICHAEAN HUNDRED\n\n# Psalter Pahlavi Characters\n\n10B80; PSALTER PAHLAVI ALEPH; D; No_Joining_Group\n10B81; PSALTER PAHLAVI BETH; R; No_Joining_Group\n10B82; PSALTER PAHLAVI GIMEL; D; No_Joining_Group\n10B83; PSALTER PAHLAVI DALETH; R; No_Joining_Group\n10B84; PSALTER PAHLAVI HE; R; No_Joining_Group\n10B85; PSALTER PAHLAVI WAW-AYIN-RESH; R; No_Joining_Group\n10B86; PSALTER PAHLAVI ZAYIN; D; No_Joining_Group\n10B87; PSALTER PAHLAVI HETH; D; No_Joining_Group\n10B88; PSALTER PAHLAVI YODH; D; No_Joining_Group\n10B89; PSALTER PAHLAVI KAPH; R; No_Joining_Group\n10B8A; PSALTER PAHLAVI LAMEDH; D; No_Joining_Group\n10B8B; PSALTER PAHLAVI MEM-QOPH; D; No_Joining_Group\n10B8C; PSALTER PAHLAVI NUN; R; No_Joining_Group\n10B8D; PSALTER PAHLAVI SAMEKH; D; No_Joining_Group\n10B8E; PSALTER PAHLAVI PE; R; No_Joining_Group\n10B8F; PSALTER PAHLAVI SADHE; R; No_Joining_Group\n10B90; PSALTER PAHLAVI SHIN; D; No_Joining_Group\n10B91; PSALTER PAHLAVI TAW; R; No_Joining_Group\n10BA9; PSALTER PAHLAVI ONE; R; No_Joining_Group\n10BAA; PSALTER PAHLAVI TWO; R; No_Joining_Group\n10BAB; PSALTER PAHLAVI THREE; R; No_Joining_Group\n10BAC; PSALTER PAHLAVI FOUR; R; No_Joining_Group\n10BAD; PSALTER PAHLAVI TEN; D; No_Joining_Group\n10BAE; PSALTER PAHLAVI TWENTY; D; No_Joining_Group\n10BAF; PSALTER PAHLAVI HUNDRED; U; No_Joining_Group\n\n# Hanifi Rohingya Characters\n\n10D00; HANIFI ROHINGYA A; L; No_Joining_Group\n10D01; HANIFI ROHINGYA BA; D; No_Joining_Group\n10D02; HANIFI ROHINGYA PA; D; HANIFI ROHINGYA PA\n10D03; HANIFI ROHINGYA TA; D; No_Joining_Group\n10D04; HANIFI ROHINGYA TTA; D; No_Joining_Group\n10D05; HANIFI ROHINGYA JA; D; No_Joining_Group\n10D06; HANIFI ROHINGYA CA; D; No_Joining_Group\n10D07; HANIFI ROHINGYA HA; D; No_Joining_Group\n10D08; HANIFI ROHINGYA KHA; D; No_Joining_Group\n10D09; HANIFI ROHINGYA PA WITH DOT ABOVE; D; HANIFI ROHINGYA PA\n10D0A; HANIFI ROHINGYA DA; D; No_Joining_Group\n10D0B; HANIFI ROHINGYA DDA; D; No_Joining_Group\n10D0C; HANIFI ROHINGYA RA; D; No_Joining_Group\n10D0D; HANIFI ROHINGYA RRA; D; No_Joining_Group\n10D0E; HANIFI ROHINGYA ZA; D; No_Joining_Group\n10D0F; HANIFI ROHINGYA SA; D; No_Joining_Group\n10D10; HANIFI ROHINGYA SHA; D; No_Joining_Group\n10D11; HANIFI ROHINGYA KA; D; No_Joining_Group\n10D12; HANIFI ROHINGYA GA; D; No_Joining_Group\n10D13; HANIFI ROHINGYA LA; D; No_Joining_Group\n10D14; HANIFI ROHINGYA MA; D; No_Joining_Group\n10D15; HANIFI ROHINGYA NA; D; No_Joining_Group\n10D16; HANIFI ROHINGYA WA; D; No_Joining_Group\n10D17; HANIFI ROHINGYA KINNA WA; D; No_Joining_Group\n10D18; HANIFI ROHINGYA YA; D; No_Joining_Group\n10D19; HANIFI ROHINGYA KINNA YA; D; HANIFI ROHINGYA KINNA YA\n10D1A; HANIFI ROHINGYA NGA; D; No_Joining_Group\n10D1B; HANIFI ROHINGYA NYA; D; No_Joining_Group\n10D1C; HANIFI ROHINGYA PA WITH 3 DOTS ABOVE; D; HANIFI ROHINGYA PA\n10D1D; HANIFI ROHINGYA VOWEL A; D; No_Joining_Group\n10D1E; HANIFI ROHINGYA DOTLESS KINNA YA WITH LEFT-FACING HOOK BELOW; D; HANIFI ROHINGYA KINNA YA\n10D1F; HANIFI ROHINGYA VOWEL U; D; No_Joining_Group\n10D20; HANIFI ROHINGYA DOTLESS KINNA YA WITH RIGHT-FACING HOOK BELOW; D; HANIFI ROHINGYA KINNA YA\n10D21; HANIFI ROHINGYA VOWEL O; D; No_Joining_Group\n10D22; HANIFI ROHINGYA SAKIN; R; No_Joining_Group\n10D23; HANIFI ROHINGYA DOTLESS KINNA YA WITH DOT ABOVE; D; HANIFI ROHINGYA KINNA YA\n\n# Sogdian Characters\n\n10F30; SOGDIAN ALEPH; D; No_Joining_Group\n10F31; SOGDIAN BETH; D; No_Joining_Group\n10F32; SOGDIAN GIMEL; D; No_Joining_Group\n10F33; SOGDIAN HE; R; No_Joining_Group\n10F34; SOGDIAN WAW; D; No_Joining_Group\n10F35; SOGDIAN ZAYIN; D; No_Joining_Group\n10F36; SOGDIAN HETH; D; No_Joining_Group\n10F37; SOGDIAN YODH; D; No_Joining_Group\n10F38; SOGDIAN KAPH; D; No_Joining_Group\n10F39; SOGDIAN LAMEDH; D; No_Joining_Group\n10F3A; SOGDIAN MEM; D; No_Joining_Group\n10F3B; SOGDIAN NUN; D; No_Joining_Group\n10F3C; SOGDIAN SAMEKH; D; No_Joining_Group\n10F3D; SOGDIAN AYIN; D; No_Joining_Group\n10F3E; SOGDIAN PE; D; No_Joining_Group\n10F3F; SOGDIAN SADHE; D; No_Joining_Group\n10F40; SOGDIAN RESH-AYIN; D; No_Joining_Group\n10F41; SOGDIAN SHIN; D; No_Joining_Group\n10F42; SOGDIAN TAW; D; No_Joining_Group\n10F43; SOGDIAN FETH; D; No_Joining_Group\n10F44; SOGDIAN LESH; D; No_Joining_Group\n10F45; SOGDIAN INDEPENDENT SHIN; U; No_Joining_Group\n10F51; SOGDIAN ONE; D; No_Joining_Group\n10F52; SOGDIAN TEN; D; No_Joining_Group\n10F53; SOGDIAN TWENTY; D; No_Joining_Group\n10F54; SOGDIAN ONE HUNDRED; R; No_Joining_Group\n\n# Chorasmian Characters\n\n10FB0; CHORASMIAN ALEPH; D; No_Joining_Group\n10FB1; CHORASMIAN SMALL ALEPH; U; No_Joining_Group\n10FB2; CHORASMIAN BETH; D; No_Joining_Group\n10FB3; CHORASMIAN GIMEL; D; No_Joining_Group\n10FB4; CHORASMIAN DALETH; R; No_Joining_Group\n10FB5; CHORASMIAN HE; R; No_Joining_Group\n10FB6; CHORASMIAN WAW; R; No_Joining_Group\n10FB7; CHORASMIAN CURLED WAW; U; No_Joining_Group\n10FB8; CHORASMIAN ZAYIN; D; No_Joining_Group\n10FB9; CHORASMIAN HETH; R; No_Joining_Group\n10FBA; CHORASMIAN YODH; R; No_Joining_Group\n10FBB; CHORASMIAN KAPH; D; No_Joining_Group\n10FBC; CHORASMIAN LAMEDH; D; No_Joining_Group\n10FBD; CHORASMIAN MEM; R; No_Joining_Group\n10FBE; CHORASMIAN NUN; D; No_Joining_Group\n10FBF; CHORASMIAN SAMEKH; D; No_Joining_Group\n10FC0; CHORASMIAN AYIN; U; No_Joining_Group\n10FC1; CHORASMIAN PE; D; No_Joining_Group\n10FC2; CHORASMIAN RESH; R; No_Joining_Group\n10FC3; CHORASMIAN SHIN; R; No_Joining_Group\n10FC4; CHORASMIAN TAW; D; No_Joining_Group\n10FC5; CHORASMIAN ONE; U; No_Joining_Group\n10FC6; CHORASMIAN TWO; U; No_Joining_Group\n10FC7; CHORASMIAN THREE; U; No_Joining_Group\n10FC8; CHORASMIAN FOUR; U; No_Joining_Group\n10FC9; CHORASMIAN TEN; R; No_Joining_Group\n10FCA; CHORASMIAN TWENTY; D; No_Joining_Group\n10FCB; CHORASMIAN ONE HUNDRED; L; No_Joining_Group\n\n# Kaithi Number Signs\n# These are prepended concatenation marks, comparable\n# to the number signs in the Arabic script.\n# Listed here for consistency in property values.\n\n110BD; KAITHI NUMBER SIGN; U; No_Joining_Group\n110CD; KAITHI NUMBER SIGN ABOVE; U; No_Joining_Group\n\n# Adlam Characters\n\n1E900;ADLAM CAPITAL ALIF; D; No_Joining_Group\n1E901;ADLAM CAPITAL DAALI; D; No_Joining_Group\n1E902;ADLAM CAPITAL LAAM; D; No_Joining_Group\n1E903;ADLAM CAPITAL MIIM; D; No_Joining_Group\n1E904;ADLAM CAPITAL BA; D; No_Joining_Group\n1E905;ADLAM CAPITAL SINNYIIYHE; D; No_Joining_Group\n1E906;ADLAM CAPITAL PE; D; No_Joining_Group\n1E907;ADLAM CAPITAL BHE; D; No_Joining_Group\n1E908;ADLAM CAPITAL RA; D; No_Joining_Group\n1E909;ADLAM CAPITAL E; D; No_Joining_Group\n1E90A;ADLAM CAPITAL FA; D; No_Joining_Group\n1E90B;ADLAM CAPITAL I; D; No_Joining_Group\n1E90C;ADLAM CAPITAL O; D; No_Joining_Group\n1E90D;ADLAM CAPITAL DHA; D; No_Joining_Group\n1E90E;ADLAM CAPITAL YHE; D; No_Joining_Group\n1E90F;ADLAM CAPITAL WAW; D; No_Joining_Group\n1E910;ADLAM CAPITAL NUN; D; No_Joining_Group\n1E911;ADLAM CAPITAL KAF; D; No_Joining_Group\n1E912;ADLAM CAPITAL YA; D; No_Joining_Group\n1E913;ADLAM CAPITAL U; D; No_Joining_Group\n1E914;ADLAM CAPITAL JIIM; D; No_Joining_Group\n1E915;ADLAM CAPITAL CHI; D; No_Joining_Group\n1E916;ADLAM CAPITAL HA; D; No_Joining_Group\n1E917;ADLAM CAPITAL QAAF; D; No_Joining_Group\n1E918;ADLAM CAPITAL GA; D; No_Joining_Group\n1E919;ADLAM CAPITAL NYA; D; No_Joining_Group\n1E91A;ADLAM CAPITAL TU; D; No_Joining_Group\n1E91B;ADLAM CAPITAL NHA; D; No_Joining_Group\n1E91C;ADLAM CAPITAL VA; D; No_Joining_Group\n1E91D;ADLAM CAPITAL KHA; D; No_Joining_Group\n1E91E;ADLAM CAPITAL GBE; D; No_Joining_Group\n1E91F;ADLAM CAPITAL ZAL; D; No_Joining_Group\n1E920;ADLAM CAPITAL KPO; D; No_Joining_Group\n1E921;ADLAM CAPITAL SHA; D; No_Joining_Group\n1E922;ADLAM SMALL ALIF; D; No_Joining_Group\n1E923;ADLAM SMALL DAALI; D; No_Joining_Group\n1E924;ADLAM SMALL LAAM; D; No_Joining_Group\n1E925;ADLAM SMALL MIIM; D; No_Joining_Group\n1E926;ADLAM SMALL BA; D; No_Joining_Group\n1E927;ADLAM SMALL SINNYIIYHE; D; No_Joining_Group\n1E928;ADLAM SMALL PE; D; No_Joining_Group\n1E929;ADLAM SMALL BHE; D; No_Joining_Group\n1E92A;ADLAM SMALL RA; D; No_Joining_Group\n1E92B;ADLAM SMALL E; D; No_Joining_Group\n1E92C;ADLAM SMALL FA; D; No_Joining_Group\n1E92D;ADLAM SMALL I; D; No_Joining_Group\n1E92E;ADLAM SMALL O; D; No_Joining_Group\n1E92F;ADLAM SMALL DHA; D; No_Joining_Group\n1E930;ADLAM SMALL YHE; D; No_Joining_Group\n1E931;ADLAM SMALL WAW; D; No_Joining_Group\n1E932;ADLAM SMALL NUN; D; No_Joining_Group\n1E933;ADLAM SMALL KAF; D; No_Joining_Group\n1E934;ADLAM SMALL YA; D; No_Joining_Group\n1E935;ADLAM SMALL U; D; No_Joining_Group\n1E936;ADLAM SMALL JIIM; D; No_Joining_Group\n1E937;ADLAM SMALL CHI; D; No_Joining_Group\n1E938;ADLAM SMALL HA; D; No_Joining_Group\n1E939;ADLAM SMALL QAAF; D; No_Joining_Group\n1E93A;ADLAM SMALL GA; D; No_Joining_Group\n1E93B;ADLAM SMALL NYA; D; No_Joining_Group\n1E93C;ADLAM SMALL TU; D; No_Joining_Group\n1E93D;ADLAM SMALL NHA; D; No_Joining_Group\n1E93E;ADLAM SMALL VA; D; No_Joining_Group\n1E93F;ADLAM SMALL KHA; D; No_Joining_Group\n1E940;ADLAM SMALL GBE; D; No_Joining_Group\n1E941;ADLAM SMALL ZAL; D; No_Joining_Group\n1E942;ADLAM SMALL KPO; D; No_Joining_Group\n1E943;ADLAM SMALL SHA; D; No_Joining_Group\n1E94B;ADLAM NASALIZATION MARK; T; No_Joining_Group\n\n# EOF\n"
  },
  {
    "path": "dev/parseunicode/BidiBrackets.txt",
    "content": "# BidiBrackets-13.0.0.txt\n# Date: 2019-09-09, 19:31:00 GMT [AG, LI, KW]\n# © 2019 Unicode®, Inc.\n# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\n# For terms of use, see http://www.unicode.org/terms_of_use.html\n#\n# Unicode Character Database\n# For documentation, see http://www.unicode.org/reports/tr44/\n#\n# Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type Properties\n#\n# This file is a normative contributory data file in the Unicode\n# Character Database.\n#\n# Bidi_Paired_Bracket is a normative property of type Miscellaneous,\n# which establishes a mapping between characters that are treated as\n# bracket pairs by the Unicode Bidirectional Algorithm.\n#\n# Bidi_Paired_Bracket_Type is a normative property of type Enumeration,\n# which classifies characters into opening and closing paired brackets\n# for the purposes of the Unicode Bidirectional Algorithm.\n#\n# This file lists the set of code points with Bidi_Paired_Bracket_Type\n# property values Open and Close. The set is derived from the character\n# properties General_Category (gc), Bidi_Class (bc), Bidi_Mirrored (Bidi_M),\n# and Bidi_Mirroring_Glyph (bmg), as follows: two characters, A and B,\n# form a bracket pair if A has gc=Ps and B has gc=Pe, both have bc=ON and\n# Bidi_M=Y, and bmg of A is B. Bidi_Paired_Bracket (bpb) maps A to B and\n# vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are\n# Open (o) and Close (c), respectively.\n#\n# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER\n# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the\n# same way their glyphs form mirror pairs, according to their bmg property\n# values. They are not paired on the basis of a diagonal or antidiagonal\n# matching of the corner ticks inferred from code point order.\n#\n# For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and\n# U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display\n# and therefore do not form a bracket pair.\n#\n# The Unicode property value stability policy guarantees that characters\n# which have bpt=o or bpt=c also have bc=ON and Bidi_M=Y. As a result, an\n# implementation can optimize the lookup of the Bidi_Paired_Bracket_Type\n# property values Open and Close by restricting the processing to characters\n# with bc=ON.\n#\n# The format of the file is three fields separated by a semicolon.\n# Field 0: Unicode code point value, represented as a hexadecimal value\n# Field 1: Bidi_Paired_Bracket property value, a code point value or <none>\n# Field 2: Bidi_Paired_Bracket_Type property value, one of the following:\n#   o Open\n#   c Close\n#   n None\n# The names of the characters in field 0 are given in comments at the end\n# of each line.\n#\n# For information on bidirectional paired brackets, see UAX #9: Unicode\n# Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/\n#\n# This file was originally created by Andrew Glass and Laurentiu Iancu\n# for Unicode 6.3.\n\n0028; 0029; o # LEFT PARENTHESIS\n0029; 0028; c # RIGHT PARENTHESIS\n005B; 005D; o # LEFT SQUARE BRACKET\n005D; 005B; c # RIGHT SQUARE BRACKET\n007B; 007D; o # LEFT CURLY BRACKET\n007D; 007B; c # RIGHT CURLY BRACKET\n0F3A; 0F3B; o # TIBETAN MARK GUG RTAGS GYON\n0F3B; 0F3A; c # TIBETAN MARK GUG RTAGS GYAS\n0F3C; 0F3D; o # TIBETAN MARK ANG KHANG GYON\n0F3D; 0F3C; c # TIBETAN MARK ANG KHANG GYAS\n169B; 169C; o # OGHAM FEATHER MARK\n169C; 169B; c # OGHAM REVERSED FEATHER MARK\n2045; 2046; o # LEFT SQUARE BRACKET WITH QUILL\n2046; 2045; c # RIGHT SQUARE BRACKET WITH QUILL\n207D; 207E; o # SUPERSCRIPT LEFT PARENTHESIS\n207E; 207D; c # SUPERSCRIPT RIGHT PARENTHESIS\n208D; 208E; o # SUBSCRIPT LEFT PARENTHESIS\n208E; 208D; c # SUBSCRIPT RIGHT PARENTHESIS\n2308; 2309; o # LEFT CEILING\n2309; 2308; c # RIGHT CEILING\n230A; 230B; o # LEFT FLOOR\n230B; 230A; c # RIGHT FLOOR\n2329; 232A; o # LEFT-POINTING ANGLE BRACKET\n232A; 2329; c # RIGHT-POINTING ANGLE BRACKET\n2768; 2769; o # MEDIUM LEFT PARENTHESIS ORNAMENT\n2769; 2768; c # MEDIUM RIGHT PARENTHESIS ORNAMENT\n276A; 276B; o # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT\n276B; 276A; c # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT\n276C; 276D; o # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT\n276D; 276C; c # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT\n276E; 276F; o # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT\n276F; 276E; c # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT\n2770; 2771; o # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT\n2771; 2770; c # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT\n2772; 2773; o # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT\n2773; 2772; c # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT\n2774; 2775; o # MEDIUM LEFT CURLY BRACKET ORNAMENT\n2775; 2774; c # MEDIUM RIGHT CURLY BRACKET ORNAMENT\n27C5; 27C6; o # LEFT S-SHAPED BAG DELIMITER\n27C6; 27C5; c # RIGHT S-SHAPED BAG DELIMITER\n27E6; 27E7; o # MATHEMATICAL LEFT WHITE SQUARE BRACKET\n27E7; 27E6; c # MATHEMATICAL RIGHT WHITE SQUARE BRACKET\n27E8; 27E9; o # MATHEMATICAL LEFT ANGLE BRACKET\n27E9; 27E8; c # MATHEMATICAL RIGHT ANGLE BRACKET\n27EA; 27EB; o # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET\n27EB; 27EA; c # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET\n27EC; 27ED; o # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET\n27ED; 27EC; c # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET\n27EE; 27EF; o # MATHEMATICAL LEFT FLATTENED PARENTHESIS\n27EF; 27EE; c # MATHEMATICAL RIGHT FLATTENED PARENTHESIS\n2983; 2984; o # LEFT WHITE CURLY BRACKET\n2984; 2983; c # RIGHT WHITE CURLY BRACKET\n2985; 2986; o # LEFT WHITE PARENTHESIS\n2986; 2985; c # RIGHT WHITE PARENTHESIS\n2987; 2988; o # Z NOTATION LEFT IMAGE BRACKET\n2988; 2987; c # Z NOTATION RIGHT IMAGE BRACKET\n2989; 298A; o # Z NOTATION LEFT BINDING BRACKET\n298A; 2989; c # Z NOTATION RIGHT BINDING BRACKET\n298B; 298C; o # LEFT SQUARE BRACKET WITH UNDERBAR\n298C; 298B; c # RIGHT SQUARE BRACKET WITH UNDERBAR\n298D; 2990; o # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER\n298E; 298F; c # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER\n298F; 298E; o # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER\n2990; 298D; c # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER\n2991; 2992; o # LEFT ANGLE BRACKET WITH DOT\n2992; 2991; c # RIGHT ANGLE BRACKET WITH DOT\n2993; 2994; o # LEFT ARC LESS-THAN BRACKET\n2994; 2993; c # RIGHT ARC GREATER-THAN BRACKET\n2995; 2996; o # DOUBLE LEFT ARC GREATER-THAN BRACKET\n2996; 2995; c # DOUBLE RIGHT ARC LESS-THAN BRACKET\n2997; 2998; o # LEFT BLACK TORTOISE SHELL BRACKET\n2998; 2997; c # RIGHT BLACK TORTOISE SHELL BRACKET\n29D8; 29D9; o # LEFT WIGGLY FENCE\n29D9; 29D8; c # RIGHT WIGGLY FENCE\n29DA; 29DB; o # LEFT DOUBLE WIGGLY FENCE\n29DB; 29DA; c # RIGHT DOUBLE WIGGLY FENCE\n29FC; 29FD; o # LEFT-POINTING CURVED ANGLE BRACKET\n29FD; 29FC; c # RIGHT-POINTING CURVED ANGLE BRACKET\n2E22; 2E23; o # TOP LEFT HALF BRACKET\n2E23; 2E22; c # TOP RIGHT HALF BRACKET\n2E24; 2E25; o # BOTTOM LEFT HALF BRACKET\n2E25; 2E24; c # BOTTOM RIGHT HALF BRACKET\n2E26; 2E27; o # LEFT SIDEWAYS U BRACKET\n2E27; 2E26; c # RIGHT SIDEWAYS U BRACKET\n2E28; 2E29; o # LEFT DOUBLE PARENTHESIS\n2E29; 2E28; c # RIGHT DOUBLE PARENTHESIS\n3008; 3009; o # LEFT ANGLE BRACKET\n3009; 3008; c # RIGHT ANGLE BRACKET\n300A; 300B; o # LEFT DOUBLE ANGLE BRACKET\n300B; 300A; c # RIGHT DOUBLE ANGLE BRACKET\n300C; 300D; o # LEFT CORNER BRACKET\n300D; 300C; c # RIGHT CORNER BRACKET\n300E; 300F; o # LEFT WHITE CORNER BRACKET\n300F; 300E; c # RIGHT WHITE CORNER BRACKET\n3010; 3011; o # LEFT BLACK LENTICULAR BRACKET\n3011; 3010; c # RIGHT BLACK LENTICULAR BRACKET\n3014; 3015; o # LEFT TORTOISE SHELL BRACKET\n3015; 3014; c # RIGHT TORTOISE SHELL BRACKET\n3016; 3017; o # LEFT WHITE LENTICULAR BRACKET\n3017; 3016; c # RIGHT WHITE LENTICULAR BRACKET\n3018; 3019; o # LEFT WHITE TORTOISE SHELL BRACKET\n3019; 3018; c # RIGHT WHITE TORTOISE SHELL BRACKET\n301A; 301B; o # LEFT WHITE SQUARE BRACKET\n301B; 301A; c # RIGHT WHITE SQUARE BRACKET\nFE59; FE5A; o # SMALL LEFT PARENTHESIS\nFE5A; FE59; c # SMALL RIGHT PARENTHESIS\nFE5B; FE5C; o # SMALL LEFT CURLY BRACKET\nFE5C; FE5B; c # SMALL RIGHT CURLY BRACKET\nFE5D; FE5E; o # SMALL LEFT TORTOISE SHELL BRACKET\nFE5E; FE5D; c # SMALL RIGHT TORTOISE SHELL BRACKET\nFF08; FF09; o # FULLWIDTH LEFT PARENTHESIS\nFF09; FF08; c # FULLWIDTH RIGHT PARENTHESIS\nFF3B; FF3D; o # FULLWIDTH LEFT SQUARE BRACKET\nFF3D; FF3B; c # FULLWIDTH RIGHT SQUARE BRACKET\nFF5B; FF5D; o # FULLWIDTH LEFT CURLY BRACKET\nFF5D; FF5B; c # FULLWIDTH RIGHT CURLY BRACKET\nFF5F; FF60; o # FULLWIDTH LEFT WHITE PARENTHESIS\nFF60; FF5F; c # FULLWIDTH RIGHT WHITE PARENTHESIS\nFF62; FF63; o # HALFWIDTH LEFT CORNER BRACKET\nFF63; FF62; c # HALFWIDTH RIGHT CORNER BRACKET\n\n# EOF\n"
  },
  {
    "path": "dev/parseunicode/BidiCharacterTest.result",
    "content": "0 fail\n91699 success\n"
  },
  {
    "path": "dev/parseunicode/BidiCharacterTest.txt",
    "content": "# BidiCharacterTest-13.0.0.txt\n# Date: 2019-09-09, 19:32:00 GMT [LI]\n# © 2019 Unicode®, Inc.\n# For terms of use, see http://www.unicode.org/terms_of_use.html\n#\n# Unicode Character Database\n# For documentation, see http://www.unicode.org/reports/tr44/\n#\n# This file provides a conformance test for implementations of the\n# Unicode Bidirectional Algorithm, specified in UAX #9: Unicode\n# Bidirectional Algorithm, at http://www.unicode.org/reports/tr9/\n#\n# The test data has been generated with a few constraints. Each test case\n# is a single paragraph, so the test data does not contain any characters\n# with Bidi_Class property value Paragraph_Separator and rule P1 of the\n# algorithm is out of scope. Each test case further constitutes a single\n# line of text; reordering is applied within a single line and independently\n# of a rendering engine, and rules L3 and L4 are also out of scope.\n# Therefore, the test data can be used for verifying conformance to the\n# Unicode Bidirectional Algorithm implemented through rule L2 inclusively.\n#\n# The file contains test sequences of explicit character code points.\n# Each line consists of five fields separated by a semicolon.\n#\n# Field 0: A sequence of hexadecimal code point values separated by space\n# Field 1: A value representing the paragraph direction, as follows:\n#   0 represents left-to-right\n#   1 represents right-to-left\n#   2 represents auto-LTR according to rules P2 and P3 of the algorithm\n# Field 2: The resolved paragraph embedding level\n# Field 3: A list of resolved levels; characters removed in rule X9 are\n#   indicated with an 'x'\n# Field 4: A list of indices showing the resulting visual ordering from\n#   left to right; characters with a resolved level of 'x' are skipped\n#\n# Comment lines start with '#'.\n\n################################################################################\n# Examples from UAX #9\n\n# Examples from Section 3.3.5\n05D0 05D1 0028 05D2 05D3 005B 0026 0065 0066 005D 002E 0029 0067 0068;0;0;1 1 0 1 1 0 0 0 0 0 0 0 0 0;1 0 2 4 3 5 6 7 8 9 10 11 12 13\n05D0 05D1 0028 05D2 05D3 005B 0026 0065 0066 005D 002E 0029 0067 0068;1;1;1 1 1 1 1 1 1 2 2 1 1 1 2 2;12 13 11 10 9 7 8 6 5 4 3 2 1 0\n0061 0062 0063 0020 0028 0064 0065 0066 0020 0627 0628 062C 0029 0020 05D0 05D1 05D2;0;0;0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1;0 1 2 3 4 5 6 7 8 11 10 9 12 13 16 15 14\n0061 0062 0063 0020 0028 0064 0065 0066 0020 0627 0628 062C 0029 0020 05D0 05D1 05D2;1;1;2 2 2 1 1 2 2 2 1 1 1 1 1 1 1 1 1;16 15 14 13 12 11 10 9 8 5 6 7 4 3 0 1 2\n05D0 05D1 05D2 0020 0028 0064 0065 0066 0020 0627 0628 062C 0029 0020 0061 0062 0063;0;0;1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7 8 11 10 9 12 13 14 15 16\n05D0 05D1 05D2 0020 0028 0064 0065 0066 0020 0627 0628 062C 0029 0020 0061 0062 0063;1;1;1 1 1 1 1 2 2 2 1 1 1 1 1 1 2 2 2;14 15 16 13 12 11 10 9 8 5 6 7 4 3 2 1 0\n0061 0062 0063 0020 0028 0627 0628 062C 0020 0064 0065 0066 0029 0020 05D0 05D1 05D2;0;0;0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5 8 9 10 11 12 13 16 15 14\n0061 0062 0063 0020 0028 0627 0628 062C 0020 0064 0065 0066 0029 0020 05D0 05D1 05D2;1;1;2 2 2 1 1 1 1 1 1 2 2 2 1 1 1 1 1;16 15 14 13 12 9 10 11 8 7 6 5 4 3 0 1 2\n05D0 05D1 05D2 0020 0028 0627 0628 062C 0020 0064 0065 0066 0029 0020 0061 0062 0063;0;0;1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0;2 1 0 3 4 7 6 5 8 9 10 11 12 13 14 15 16\n05D0 05D1 05D2 0020 0028 0627 0628 062C 0020 0064 0065 0066 0029 0020 0061 0062 0063;1;1;1 1 1 1 1 1 1 1 1 2 2 2 1 1 2 2 2;14 15 16 13 12 9 10 11 8 7 6 5 4 3 2 1 0\n0627 0628 062C 0020 0062 006F 006F 006B 0028 0073 0029;0;0;1 1 1 0 0 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8 9 10\n0627 0628 062C 0020 0062 006F 006F 006B 0028 0073 0029;1;1;1 1 1 1 2 2 2 2 2 2 2;4 5 6 7 8 9 10 3 2 1 0\n\n################################################################################\n# Test cases for the algorithm changes and clarifications made in Unicode 8.0\n\n# Explicit directional overrides applied to isolates tightly flanked by embeddings\n202E 0061 202A 0062 202C 2066 0063 2069 202A 0064 202C 0065 202C;2;0;x 1 x 2 x 1 2 1 x 2 x 1 x;11 9 7 6 5 3 1\n202E 0061 202A 0062 202C 2066 0063 2069 202A 0064 202C 0065 202C;1;1;x 3 x 4 x 3 4 3 x 4 x 3 x;11 9 7 6 5 3 1\n202D 05D0 202B 05D1 202C 2068 05D2 2069 202B 05D3 202C 05D4 202C;2;1;x 2 x 3 x 2 3 2 x 3 x 2 x;1 3 5 6 7 9 11\n202D 0661 202B 0662 202C 2068 0663 2069 202B 0664 202C 0665 202C;0;0;x 2 x 4 x 2 6 2 x 4 x 2 x;1 3 5 6 7 9 11\n\n# Explicit directional overrides applied to paired brackets\n202A 05D0 0028 05D1 202C 202D 0029;2;1;x 3 3 3 x x 2;3 2 1 6\n202A 05D0 0028 05D1 202C 202D 0029 202C;2;1;x 3 3 3 x x 2 x;3 2 1 6\n202B 0061 0028 0062 202C 202E 0029;2;0;x 2 2 2 x x 1;6 1 2 3\n202B 0061 0028 0062 202C 202E 0029 202C;2;0;x 2 2 2 x x 1 x;6 1 2 3\n202A 202E 0061 202C 0028 05D0 202C 202D 0029 202C;2;0;x x 3 x 3 3 x x 2 x;5 4 2 8\n202B 202D 05D0 202C 0028 0061 202C 202E 0029 202C;2;1;x x 4 x 4 4 x x 3 x;8 2 4 5\n202A 202E 0061 202C 0028 005B 05D0 202C 202D 005D 0029 202C;2;0;x x 3 x 3 3 3 x x 2 2 x;6 5 4 2 9 10\n202B 202D 05D0 202C 0028 005B 0061 202C 202E 005D 0029 202C;2;1;x x 4 x 4 4 4 x x 3 3 x;10 9 2 4 5 6\n202D 0028 202C 202A 05D0 0029 05D1;2;1;x 2 x x 3 3 3;1 6 5 4\n202D 0028 202C 202A 05D0 0029 05D1 202C;2;1;x 2 x x 3 3 3 x;1 6 5 4\n202E 0028 202C 202B 0061 0029 0062;2;0;x 1 x x 2 2 2;4 5 6 1\n202E 0028 202C 202B 0061 0029 0062 202C;2;0;x 1 x x 2 2 2 x;4 5 6 1\n202D 202E 0061 202C 0028 202C 202A 05D0 0029 05D1;2;0;x x 3 x 2 x x 3 3 3;2 4 9 8 7\n202E 202D 05D0 202C 0028 202C 202B 0061 0029 0062;2;1;x x 4 x 3 x x 4 4 4;7 8 9 4 2\n202D 202E 0061 202C 0028 005B 202C 202A 05D0 005D 0029 05D1;2;0;x x 3 x 2 2 x x 3 3 3 3;2 4 5 11 10 9 8\n202E 202D 05D0 202C 0028 005B 202C 202B 0061 005D 0029 0062;2;1;x x 4 x 3 3 x x 4 4 4 4;8 9 10 11 5 4 2\n\n# Nonspacing marks applied to paired brackets\n0061 0028 0062 0029 0331;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 0332 0062 0029 0333;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n05D0 0028 05D1 0029 0331;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0332 05D1 0029 0333;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n0661 0028 0662 0029 0331;0;0;2 1 2 1 1;4 3 2 1 0\n0661 0028 0332 0662 0029 0333;0;0;2 1 1 2 1 1;5 4 3 2 1 0\n\n# Nested bracket pairs that reach and exceed the fixed capacity of the bracket stack\n# a ( ( ... ( b ) ) ... ) with 62, 63, and 64 nested bracket pairs\n0061 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0062 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029;1;1;2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125\n0061 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0062 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029;1;1;2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127\n0061 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0028 0062 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029 0029;1;1;2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65\n\n################################################################################\n# Miscellaneous test cases\n\n# Various sequences\n061C;0;0;1;0\n05D0 2067 202A 0041;1;1;1 1 x 4;3 1 0\n062A 0031 002F 0032;2;1;1 2 2 2;1 2 3 0\n062A 0031 002F 0032;0;0;1 2 2 2;1 2 3 0\n062A 0031 002F 0032;1;1;1 2 2 2;1 2 3 0\n05D0 2066 202A 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n05D0 2066 202B 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n05D0 2066 202C 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n05D0 2066 202D 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n05D0 2066 202E 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n05D0 2066 2060 2069 05D1;0;0;1 1 x 1 1;4 3 1 0\n0061 2067 202A 2069 0062;1;1;2 2 x 2 2;0 1 3 4\n0061 2067 202C 202E 2069 0062;1;1;2 2 x x 2 2;0 1 4 5\n05D0 0029 2066 202B 2069 0627;0;0;1 1 1 x 1 1;5 4 2 1 0\n0661 002D 0031;0;0;2 0 0;0 1 2\n0061 0020 0031 0020 0032 002D 0033;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n05D0 0020 0031 002D 0032;0;0;1 1 2 2 2;2 3 4 1 0\n061C 0020 0031 002D 0032;0;0;1 1 2 1 2;4 3 2 1 0\n061C 0020 06F1 0020 06F2 002D 06F3;0;0;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# Sequences containing directional formatting characters\n0061 202D 202C 0020 0031 0020 0032 002D 0033;1;1;2 x x 2 2 2 2 2 2;0 3 4 5 6 7 8\n0061 202D 002A 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 2 x 2 2 2 2 2 2;0 2 4 5 6 7 8 9\n0061 202D 0062 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 2 x 2 2 2 2 2 2;0 2 4 5 6 7 8 9\n0061 202D 05D0 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 2 x 2 2 2 2 2 2;0 2 4 5 6 7 8 9\n0061 202E 202C 0020 0031 0020 0032 002D 0033;1;1;2 x x 2 2 2 2 2 2;0 3 4 5 6 7 8\n0061 202E 002A 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 3 x 1 2 1 2 2 2;7 8 9 6 5 4 0 2\n0061 202E 0062 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 3 x 1 2 1 2 2 2;7 8 9 6 5 4 0 2\n0061 202E 05D0 202C 0020 0031 0020 0032 002D 0033;1;1;2 x 3 x 1 2 1 2 2 2;7 8 9 6 5 4 0 2\n0627 202A 202C 0020 0031 002D 0032;0;0;1 x x 1 2 1 2;6 5 4 3 0\n0627 202A 002A 202C 0020 0031 002D 0032;0;0;1 x 2 x 0 0 0 0;2 0 4 5 6 7\n0627 202B 202C 0020 0031 002D 0032;0;0;1 x x 1 2 1 2;6 5 4 3 0\n0627 202B 002A 202C 0020 0031 002D 0032;0;0;1 x 1 x 1 2 2 2;5 6 7 4 2 0\n05D0 202A 0062 202C 0020 0031 0020 0032;0;0;1 x 2 x 0 0 0 0;2 0 4 5 6 7\n05D0 202A 05D1 202C 0020 0031 0020 0032;0;0;1 x 3 x 0 0 0 0;2 0 4 5 6 7\n05D0 202A 202A 202C 202C 0020 0031 0020 0032;0;0;1 x x x x 1 2 1 2;8 7 6 5 0\n05D0 202B 0062 202C 0020 0031 0020 0032;0;0;1 x 2 x 1 2 1 2;7 6 5 4 2 0\n05D0 202B 05D1 202C 0020 0031 0020 0032;0;0;1 x 1 x 1 2 1 2;7 6 5 4 2 0\n0061 202A 0062 202C 0020 0031 0020 0032;0;0;0 x 2 x 0 0 0 0;0 2 4 5 6 7\n0061 202A 05D1 202C 0020 0031 0020 0032;0;0;0 x 3 x 0 0 0 0;0 2 4 5 6 7\n0061 202B 0062 202C 0020 0031 0020 0032;0;0;0 x 2 x 1 2 1 2;0 7 6 5 4 2\n0061 202B 05D1 202C 0020 0031 0020 0032;0;0;0 x 1 x 1 2 1 2;0 7 6 5 4 2\n05D0 202A 0062 202C 0020 0031 0020 0032;1;1;1 x 2 x 2 2 2 2;2 4 5 6 7 0\n05D0 202A 05D1 202C 0020 0031 0020 0032;1;1;1 x 3 x 2 2 2 2;2 4 5 6 7 0\n05D0 202B 0062 202C 0020 0031 0020 0032;1;1;1 x 4 x 1 2 1 2;7 6 5 4 2 0\n05D0 202B 05D1 202C 0020 0031 0020 0032;1;1;1 x 3 x 1 2 1 2;7 6 5 4 2 0\n0061 202A 0062 202C 0020 0031 0020 0032;1;1;2 x 2 x 2 2 2 2;0 2 4 5 6 7\n0061 202A 05D1 202C 0020 0031 0020 0032;1;1;2 x 3 x 2 2 2 2;0 2 4 5 6 7\n0061 202B 0062 202C 0020 0031 0020 0032;1;1;2 x 4 x 1 2 1 2;7 6 5 4 0 2\n0061 202B 05D1 202C 0020 0031 0020 0032;1;1;2 x 3 x 1 2 1 2;7 6 5 4 0 2\n0061 202B 202B 202C 202C 0020 0031 0020 0032;1;1;2 x x x x 2 2 2 2;0 5 6 7 8\n\n# Sequences containing paired brackets\n0061 0028 05D0 005B 05D1 005D 0021 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 005B 05D1 005D 0021 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0062 005D 0021 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 005B 0062 005D 0021 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0061 0028 0028 007B 0062 2680 005B 005D 0029 007D 005B 0063 005B 005D 005D 05D0 0029;0;0;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\n0061 0028 0028 007B 0062 2680 005B 005D 0029 007D 005B 0063 005B 005D 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1;16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n05D0 0028 0028 007B 05D1 2680 005B 005D 0029 007D 005B 05D2 005B 005D 005D 0061 0029;0;0;1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\n05D0 0028 0028 007B 05D1 2680 005B 005D 0029 007D 005B 05D2 005B 005D 005D 0061 0029;1;1;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1;16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n0028 0061 005B 005B 005D 05D0 005D 007B 0028 005B 005D 2680 05D1 007D 0029 0029 05D2;0;0;0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\n0028 0061 005B 005B 005D 05D0 005D 007B 0028 005B 005D 2680 05D1 007D 0029 0029 05D2;1;1;1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n0028 05D0 005B 005B 005D 0061 005D 007B 0028 005B 005D 2680 0062 007D 0029 0029 0063;0;0;0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\n0028 05D0 005B 005B 005D 0061 005D 007B 0028 005B 005D 2680 0062 007D 0029 0029 0063;1;1;1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2;16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n\n# Sequences containing paired brackets and numbers\n0061 0028 0031 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 0031 0029;1;1;2 2 2 2;0 1 2 3\n0061 0028 0661 0029;0;0;0 0 2 0;0 1 2 3\n0061 0028 0661 0029;1;1;2 1 2 1;3 2 1 0\n0031 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n0031 0028 0061 0029;1;1;2 1 2 1;3 2 1 0\n0661 0028 0061 0029;0;0;2 0 0 0;0 1 2 3\n0661 0028 0061 0029;1;1;2 1 2 1;3 2 1 0\n0028 0031 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 0031 0029 0061;1;1;1 2 1 2;3 2 1 0\n0028 0661 0029 0061;0;0;0 2 0 0;0 1 2 3\n0028 0661 0029 0061;1;1;1 2 1 2;3 2 1 0\n0028 0061 0029 0031;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 0031;1;1;1 2 1 2;3 2 1 0\n0028 0061 0029 0661;0;0;0 0 0 2;0 1 2 3\n0028 0061 0029 0661;1;1;1 2 1 2;3 2 1 0\n05D0 0028 0031 0029;0;0;1 1 2 1;3 2 1 0\n05D0 0028 0031 0029;1;1;1 1 2 1;3 2 1 0\n05D0 0028 0661 0029;0;0;1 1 2 1;3 2 1 0\n05D0 0028 0661 0029;1;1;1 1 2 1;3 2 1 0\n0031 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0031 0028 05D0 0029;1;1;2 1 1 1;3 2 1 0\n0661 0028 05D0 0029;0;0;2 1 1 1;3 2 1 0\n0661 0028 05D0 0029;1;1;2 1 1 1;3 2 1 0\n0028 0031 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0031 0029 05D0;1;1;1 2 1 1;3 2 1 0\n0028 0661 0029 05D0;0;0;0 2 0 1;0 1 2 3\n0028 0661 0029 05D0;1;1;1 2 1 1;3 2 1 0\n0028 05D0 0029 0031;0;0;0 1 0 2;0 1 2 3\n0028 05D0 0029 0031;1;1;1 1 1 2;3 2 1 0\n0028 05D0 0029 0661;0;0;0 1 0 2;0 1 2 3\n0028 05D0 0029 0661;1;1;1 1 1 2;3 2 1 0\n0028 05D0 0029 0020 0031 002E 0032;0;0;0 1 0 0 2 2 2;0 1 2 3 4 5 6\n0028 05D0 0029 0020 0031 002A 0032;0;0;0 1 0 0 2 1 2;0 1 2 3 6 5 4\n0028 05D0 0029 0020 0031 002D 0032;0;0;0 1 0 0 2 2 2;0 1 2 3 4 5 6\n0028 05D0 0627 0029 0020 0031 002D 0032;0;0;0 1 1 0 0 2 1 2;0 2 1 3 4 7 6 5\n0028 05D0 0627 0029 0020 0031 002D 0032;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0627 0028 0661 0029;0;0;1 1 2 1;3 2 1 0\n0627 0028 0661 0029;1;1;1 1 2 1;3 2 1 0\n0627 0028 06F1 0029;0;0;1 1 2 1;3 2 1 0\n0627 0028 06F1 0029;1;1;1 1 2 1;3 2 1 0\n0661 0028 0627 0029;0;0;2 1 1 1;3 2 1 0\n0661 0028 0627 0029;1;1;2 1 1 1;3 2 1 0\n06F1 0028 0627 0029;0;0;0 0 1 0;0 1 2 3\n06F1 0028 0627 0029;1;1;2 1 1 1;3 2 1 0\n0028 0661 0029 0627;0;0;0 2 0 1;0 1 2 3\n0028 0661 0029 0627;1;1;1 2 1 1;3 2 1 0\n0028 06F1 0029 0627;0;0;0 0 0 1;0 1 2 3\n0028 06F1 0029 0627;1;1;1 2 1 1;3 2 1 0\n0028 0627 0029 0661;0;0;0 1 0 2;0 1 2 3\n0028 0627 0029 0661;1;1;1 1 1 2;3 2 1 0\n0028 0627 0029 06F1;0;0;0 1 0 2;0 1 2 3\n0028 0627 0029 06F1;1;1;1 1 1 2;3 2 1 0\n0028 0627 0029 0020 0031 002E 0032;0;0;0 1 0 0 2 2 2;0 1 2 3 4 5 6\n0028 0627 0029 0020 0031 002A 0032;0;0;0 1 0 0 2 1 2;0 1 2 3 6 5 4\n0028 0627 0029 0020 0031 002D 0032;0;0;0 1 0 0 2 1 2;0 1 2 3 6 5 4\n0028 0627 05D0 0029 0020 0031 002D 0032;0;0;0 1 1 0 0 2 2 2;0 2 1 3 4 5 6 7\n0028 0627 05D0 0029 0020 0031 002D 0032;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0031 0661 0028 0627 0029;0;0;0 2 1 1 1;0 4 3 2 1\n002B 0661 0028 0662 0029;2;0;0 2 1 2 1;0 4 3 2 1\n0025 0661 0028 0662 0029;2;0;0 2 1 2 1;0 4 3 2 1\n0661 0009 0028 0662 0029;2;0;2 0 1 2 1;0 1 4 3 2\n0661 0020 0028 0662 0029;2;0;2 1 1 2 1;4 3 2 1 0\n05D0 0029 0020 0028 0661 0029;0;0;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 0028 0301 0031 0029;0;0;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 0028 0301 0661 0029;0;0;1 1 1 1 2 1;5 4 3 2 1 0\n0627 0028 0661 003F 0020 0029 005D;0;0;1 1 2 1 1 1 0;5 4 3 2 1 0 6\n\n# Combinations of paired brackets, numbers, and directional formatting characters\n202A 0661 0028 05D0 0029;2;1;x 4 3 3 3;4 3 2 1\n202A 0661 0028 0662 0029;2;0;x 4 3 4 3;4 3 2 1\n202C 0661 0028 0662 0029;2;0;x 2 1 2 1;4 3 2 1\n0661 202C 0028 05D0 0029;0;0;2 x 1 1 1;4 3 2 0\n0661 0028 05D0 202C 0029;0;0;2 1 1 x 1;4 2 1 0\n0661 2069 0028 0662 0029;2;0;2 1 1 2 1;4 3 2 1 0\n0661 0028 05D0 2069 0029;0;0;2 1 1 1 1;4 3 2 1 0\n0661 0028 0627 2069 0029;0;0;2 1 1 1 1;4 3 2 1 0\n05D0 202C 0028 0031 0029;0;0;1 x 1 2 1;4 3 2 0\n05D0 202C 0028 0661 0029;0;0;1 x 1 2 1;4 3 2 0\n05D0 2066 202D 2069 0031;0;0;1 1 x 1 2;4 3 1 0\n05D0 0028 005D 2069 0031 0029;0;0;1 1 1 1 2 1;5 4 3 2 1 0\n2066 0029 0029 0661 0028 0627 0029;1;1;1 2 2 4 3 3 3;1 2 6 5 4 3 0\n2066 0029 0029 0661 0028 0662 0029;1;1;1 2 2 4 3 4 3;1 2 6 5 4 3 0\n2066 0029 2066 0661 0028 05D0 0029;1;1;1 2 2 6 5 5 5;1 2 6 5 4 3 0\n00AD 0028 2069 0661 0025 0029 0662;2;0;x 0 0 2 0 0 2;1 2 3 4 5 6\n0061 0028 0062 005B 0063 05D0 0064 005D 0065 0029 0066;0;0;0 0 0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8 9 10\n0061 0028 0062 005B 0063 05D0 0064 005D 0065 0029 0066;1;1;2 1 2 1 2 1 2 1 2 1 2;10 9 8 7 6 5 4 3 2 1 0\n0061 0028 0062 005B 0063 2068 05D0 2069 0064 005D 0065 0029 0066;0;0;0 0 0 0 0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8 9 10 11 12\n0061 0028 0062 005B 0063 2068 05D0 2069 0064 005D 0065 0029 0066;1;1;2 2 2 2 2 2 3 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8 9 10 11 12\n05D0 0028 05D1 005B 05D2 0061 05D3 005D 05D4 0029 05D5;0;0;1 0 1 0 1 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8 9 10\n05D0 0028 05D1 005B 05D2 0061 05D3 005D 05D4 0029 05D5;1;1;1 1 1 1 1 2 1 1 1 1 1;10 9 8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 2068 0061 2069 05D3 005D 05D4 0029 05D5;0;0;1 1 1 1 1 1 2 1 1 1 1 1 1;12 11 10 9 8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 2068 0061 2069 05D3 005D 05D4 0029 05D5;1;1;1 1 1 1 1 1 2 1 1 1 1 1 1;12 11 10 9 8 7 6 5 4 3 2 1 0\n0061 0028 0062 202B 202C 0029 0020 0031 0020 0032;1;1;2 2 2 x x 2 2 2 2 2;0 1 2 5 6 7 8 9\n0061 0028 0062 202B 202C 0029 0020 05D0;1;1;2 2 2 x x 2 1 1;7 6 0 1 2 5\n0061 0028 0062 202B 05D0 202C 0029 0020 05D1;1;1;2 2 2 x 3 x 1 1 1;8 7 6 0 1 2 4\n0061 0028 0062 202B 05D0 202C 0029 0020 0031;1;1;2 2 2 x 3 x 1 1 2;8 7 6 0 1 2 4\n0061 0028 0062 202B 0063 202C 0029 0020 0031;1;1;2 2 2 x 4 x 1 1 2;8 7 6 0 1 2 4\n0061 0028 0062 2067 05D0 0066 2069 05D4 0029 05D5;0;0;0 0 0 0 1 2 0 1 0 1;0 1 2 3 5 4 6 7 8 9\n0061 0028 0062 2067 05D0 0066 2069 05D4 0029 05D5;1;1;2 1 2 1 3 4 1 1 1 1;9 8 7 6 5 4 3 2 1 0\n0061 0028 0062 2067 05D0 005B 05D1 2066 0063 05D3 2069 0065 005D 0066 2069 05D4 0029 05D5;0;0;0 0 0 0 1 1 1 1 2 3 1 2 1 2 0 1 0 1;0 1 2 3 13 12 11 10 8 9 7 6 5 4 14 15 16 17\n0061 0028 0062 2067 05D0 005B 05D1 2066 0063 05D3 2069 0065 005D 0066 2069 05D4 0029 05D5;1;1;2 1 2 1 3 3 3 3 4 5 3 4 3 4 1 1 1 1;17 16 15 14 13 12 11 10 8 9 7 6 5 4 3 2 1 0\n0061 0028 0062 2067 05D0 005B 05D1 2066 0063 007B 0064 202B 007D 0020 007B 202C 05D2 007D 05D3 2069 0065 005D 0066 2069 05D4 0029 05D5;0;0;0 0 0 0 1 1 1 1 2 2 2 x 3 3 3 x 3 3 3 1 2 1 2 0 1 0 1;0 1 2 3 22 21 20 19 8 9 10 18 17 16 14 13 12 7 6 5 4 23 24 25 26\n0061 0028 0062 2067 05D0 005B 05D1 2066 0063 007B 0064 202B 007D 0020 007B 202C 05D2 007D 05D3 2069 0065 005D 0066 2069 05D4 0029 05D5;1;1;2 1 2 1 3 3 3 3 4 4 4 x 5 5 5 x 5 5 5 3 4 3 4 1 1 1 1;26 25 24 23 22 21 20 19 8 9 10 18 17 16 14 13 12 7 6 5 4 3 2 1 0\n05D0 0028 05D1 202A 202C 0029 0020 0031 0020 0032;0;0;1 1 1 x x 1 1 2 1 2;9 8 7 6 5 2 1 0\n05D0 0028 05D1 202A 202C 0029 0020 0062;0;0;1 1 1 x x 1 0 0;5 2 1 0 6 7\n05D0 0028 05D1 202A 0061 202C 0029 0020 0062;0;0;1 1 1 x 2 x 0 0 0;4 2 1 0 6 7 8\n05D0 0028 05D1 202A 0061 202C 0029 0020 0031;0;0;1 1 1 x 2 x 0 0 0;4 2 1 0 6 7 8\n05D0 0028 05D1 202A 05D2 202C 0029 0020 0031;0;0;1 1 1 x 3 x 0 0 0;4 2 1 0 6 7 8\n05D0 0028 05D1 2066 0061 05D5 2069 0065 0029 0066;0;0;1 0 1 0 2 3 0 0 0 0;0 1 2 3 4 5 6 7 8 9\n05D0 0028 05D1 2066 0061 05D5 2069 0065 0029 0066;1;1;1 1 1 1 2 3 1 2 1 2;9 8 7 6 4 5 3 2 1 0\n05D0 0028 05D1 2066 0061 005B 0062 2067 05D2 0064 2069 05D4 005D 05D5 2069 0065 0029 0066;0;0;1 0 1 0 2 2 2 2 3 4 2 3 2 3 0 0 0 0;0 1 2 3 4 5 6 7 9 8 10 11 12 13 14 15 16 17\n05D0 0028 05D1 2066 0061 005B 0062 2067 05D2 0064 2069 05D4 005D 05D5 2069 0065 0029 0066;1;1;1 1 1 1 2 2 2 2 3 4 2 3 2 3 1 2 1 2;17 16 15 14 4 5 6 7 9 8 10 11 12 13 3 2 1 0\n05D0 0028 05D1 2066 0061 005B 0062 2067 05D2 007B 05D3 202A 007D 0020 007B 202C 0063 007D 0064 2069 05D4 005D 05D5 2069 0065 0029 0066;0;0;1 0 1 0 2 2 2 2 3 3 3 x 4 4 4 x 4 4 4 2 3 2 3 0 0 0 0;0 1 2 3 4 5 6 7 12 13 14 16 17 18 10 9 8 19 20 21 22 23 24 25 26\n05D0 0028 05D1 2066 0061 005B 0062 2067 05D2 007B 05D3 202A 007D 0020 007B 202C 0063 007D 0064 2069 05D4 005D 05D5 2069 0065 0029 0066;1;1;1 1 1 1 2 2 2 2 3 3 3 x 4 4 4 x 4 4 4 2 3 2 3 1 2 1 2;26 25 24 23 4 5 6 7 12 13 14 16 17 18 10 9 8 19 20 21 22 3 2 1 0\n\n# Sequences containing paired brackets that have canonical equivalents\n0061 0020 2329 0062 002E 0031 232A;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0020 3008 0062 002E 0031 3009;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0020 2329 0062 002E 0031 3009;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0020 3008 0062 002E 0031 232A;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n05D0 0020 2329 05D1 002E 0031 232A;0;0;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0020 3008 05D1 002E 0031 3009;0;0;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0020 2329 05D1 002E 0031 3009;0;0;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0020 3008 05D1 002E 0031 232A;0;0;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n\n################################################################################\n# Permutations of sequences containing paired brackets\n\n# The sequences in this section consist of permutation patterns of three\n# bidirectional types (ON, L, and R) of length between 0 and 4, interleaved\n# with several patterns of paired brackets (both balanced and unbalanced),\n# in two paragraph directions.\n\n# ()\n0028 0029;0;0;0 0;0 1\n0028 0029;1;1;1 1;1 0\n\n# ON and ()\n2680 0028 0029;0;0;0 0 0;0 1 2\n2680 0028 0029;1;1;1 1 1;2 1 0\n0028 2680 0029;0;0;0 0 0;0 1 2\n0028 2680 0029;1;1;1 1 1;2 1 0\n0028 0029 2680;0;0;0 0 0;0 1 2\n0028 0029 2680;1;1;1 1 1;2 1 0\n\n# L and ()\n0061 0028 0029;0;0;0 0 0;0 1 2\n0061 0028 0029;1;1;2 1 1;2 1 0\n0028 0061 0029;0;0;0 0 0;0 1 2\n0028 0061 0029;1;1;1 2 1;2 1 0\n0028 0029 0061;0;0;0 0 0;0 1 2\n0028 0029 0061;1;1;1 1 2;2 1 0\n\n# R and ()\n05D0 0028 0029;0;0;1 0 0;0 1 2\n05D0 0028 0029;1;1;1 1 1;2 1 0\n0028 05D0 0029;0;0;0 1 0;0 1 2\n0028 05D0 0029;1;1;1 1 1;2 1 0\n0028 0029 05D0;0;0;0 0 1;0 1 2\n0028 0029 05D0;1;1;1 1 1;2 1 0\n\n# ON, ON and ()\n2680 0028 2681 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 2681 0029;1;1;1 1 1 1;3 2 1 0\n2680 0028 0029 2681;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 2681;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 2681;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 2681;1;1;1 1 1 1;3 2 1 0\n\n# ON, L and ()\n2680 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n2680 0028 0029 0061;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n0028 2680 0061 0029;0;0;0 0 0 0;0 1 2 3\n0028 2680 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 2680 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 0061;1;1;1 1 1 2;3 2 1 0\n0028 0029 2680 0061;0;0;0 0 0 0;0 1 2 3\n0028 0029 2680 0061;1;1;1 1 1 2;3 2 1 0\n\n# ON, R and ()\n2680 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n2680 0028 05D0 0029;1;1;1 1 1 1;3 2 1 0\n2680 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n2680 0028 0029 05D0;1;1;1 1 1 1;3 2 1 0\n0028 2680 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 2680 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 2680 0029 05D0;1;1;1 1 1 1;3 2 1 0\n0028 0029 2680 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0029 2680 05D0;1;1;1 1 1 1;3 2 1 0\n\n# L, ON and ()\n0061 2680 0028 0029;0;0;0 0 0 0;0 1 2 3\n0061 2680 0028 0029;1;1;2 1 1 1;3 2 1 0\n0061 0028 2680 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 2680 0029;1;1;2 1 1 1;3 2 1 0\n0061 0028 0029 2680;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 2680;1;1;2 1 1 1;3 2 1 0\n0028 0061 2680 0029;0;0;0 0 0 0;0 1 2 3\n0028 0061 2680 0029;1;1;1 2 1 1;3 2 1 0\n0028 0061 0029 2680;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 2680;1;1;1 2 1 1;3 2 1 0\n\n# L, L and ()\n0061 0028 0062 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 0062 0029;1;1;2 2 2 2;0 1 2 3\n0061 0028 0029 0062;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 0062;1;1;2 2 2 2;0 1 2 3\n0028 0061 0029 0062;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 0062;1;1;1 2 1 2;3 2 1 0\n\n# L, R and ()\n0061 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0061 0028 05D0 0029;1;1;2 1 1 1;3 2 1 0\n0061 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0061 0028 0029 05D0;1;1;2 1 1 1;3 2 1 0\n0028 0061 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 0061 05D0 0029;1;1;1 2 1 1;3 2 1 0\n0028 0061 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0061 0029 05D0;1;1;1 2 1 1;3 2 1 0\n\n# R, ON and ()\n05D0 2680 0028 0029;0;0;1 0 0 0;0 1 2 3\n05D0 2680 0028 0029;1;1;1 1 1 1;3 2 1 0\n05D0 0028 2680 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 2680 0029;1;1;1 1 1 1;3 2 1 0\n05D0 0028 0029 2680;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 2680;1;1;1 1 1 1;3 2 1 0\n0028 05D0 2680 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 2680 0029;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 2680;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# R, L and ()\n05D0 0028 0061 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n05D0 0028 0029 0061;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n0028 05D0 0061 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 05D0 0029 0061;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R, R and ()\n05D0 0028 05D1 0029;0;0;1 1 1 1;3 2 1 0\n05D0 0028 05D1 0029;1;1;1 1 1 1;3 2 1 0\n05D0 0028 0029 05D1;0;0;1 1 1 1;3 2 1 0\n05D0 0028 0029 05D1;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 05D1;0;0;0 1 0 1;0 1 2 3\n0028 05D0 0029 05D1;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON, ON and ()\n2680 0028 2681 0029 2682;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 2682;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, L and ()\n2680 0028 2681 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 2681 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n2680 0028 0029 2681 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 2681 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0029 2681 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 2681 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, ON, R and ()\n2680 0028 2681 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 2681 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 2681 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 2681 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 2681 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0029 2681 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 2681 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0029 2681 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L, ON and ()\n2680 0028 0061 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 2681 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0061 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 2681;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0061 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 2681 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0061 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 2681;1;1;1 1 2 1 1;4 3 2 1 0\n\n# ON, L, L and ()\n2680 0028 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n0028 2680 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# ON, L, R and ()\n2680 0028 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# ON, R, ON and ()\n2680 0028 05D0 2681 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 05D0 0029 2681;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 2681 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 2681;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, R, L and ()\n2680 0028 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R, R and ()\n2680 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON, ON and ()\n0061 2680 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 2681 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 2680 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 2681;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 2681;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 2681;1;1;1 2 1 1 1;4 3 2 1 0\n\n# L, ON, L and ()\n0061 2680 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 2680 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 2680 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 2680 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 0029 2680 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 2680 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 2680 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0062 0029;1;1;1 2 2 2 1;4 1 2 3 0\n0028 0061 2680 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 0061 0029 2680 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 2680 0062;1;1;1 2 1 1 2;4 3 2 1 0\n\n# L, ON, R and ()\n0061 2680 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 2680 0028 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 2680 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 2680 0028 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 2680 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 2680 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0029 2680 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 2680 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 2680 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0029 2680 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n\n# L, L, ON and ()\n0061 0028 0062 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 2680 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 0062 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 2680;1;1;2 2 2 2 1;4 0 1 2 3\n\n# L, L, L and ()\n0061 0028 0062 0029 0063;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 0063;1;1;2 2 2 2 2;0 1 2 3 4\n\n# L, L, R and ()\n0061 0028 0062 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0062 05D0 0029;1;1;2 1 2 1 1;4 3 2 1 0\n0061 0028 0062 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0062 0029 05D0;1;1;2 2 2 2 1;4 0 1 2 3\n\n# L, R, ON and ()\n0061 0028 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n\n# L, R, L and ()\n0061 0028 05D0 0062 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0062 0029;1;1;2 1 1 2 1;4 3 2 1 0\n0061 0028 05D0 0029 0062;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 0062;1;1;2 1 1 1 2;4 3 2 1 0\n0028 0061 05D0 0062 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0062 0029;1;1;1 2 1 2 1;4 3 2 1 0\n0028 0061 05D0 0029 0062;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 0062;1;1;1 2 1 1 2;4 3 2 1 0\n\n# L, R, R and ()\n0061 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0061 0028 05D0 0029 05D1;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0028 0061 05D0 0029 05D1;1;1;1 2 1 1 1;4 3 2 1 0\n\n# R, ON, ON and ()\n05D0 2680 0028 2681 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0028 0029 2681;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 2681;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 2681;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, ON, L and ()\n05D0 2680 0028 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 2680 0028 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n05D0 0028 2680 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 2680 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n05D0 0028 0029 2680 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 2680 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 2680 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0029 2680 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, ON, R and ()\n05D0 2680 0028 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0028 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 05D1 0029;0;0;0 1 1 1 0;0 3 2 1 4\n0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 2680 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L, ON and ()\n05D0 0028 0061 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0061 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0061 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0061 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, L, L and ()\n05D0 0028 0061 0029 0062;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n0028 05D0 0061 0029 0062;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# R, L, R and ()\n05D0 0028 0061 05D1 0029;0;0;1 0 0 1 0;0 1 2 3 4\n05D0 0028 0061 05D1 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0061 0029 05D1;0;0;1 0 0 0 1;0 1 2 3 4\n05D0 0028 0061 0029 05D1;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0061 05D1 0029;0;0;0 1 0 1 0;0 1 2 3 4\n0028 05D0 0061 05D1 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0061 0029 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0061 0029 05D1;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, R, ON and ()\n05D0 0028 05D1 2680 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 05D1 0029 2680;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, R, L and ()\n05D0 0028 05D1 0061 0029;0;0;1 0 1 0 0;0 1 2 3 4\n05D0 0028 05D1 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 05D1 0029 0061;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R, R and ()\n05D0 0028 05D1 0029 05D2;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON, L and ()\n2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, ON, R and ()\n2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L, ON and ()\n2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 2682 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 2682;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, ON, L, L and ()\n2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, ON, L, R and ()\n2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, ON, R, ON and ()\n2680 0028 2681 05D0 2682 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, R, L and ()\n2680 0028 2681 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R, R and ()\n2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON, ON and ()\n2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 2682;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 2682;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON, L and ()\n2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 2681 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 2681 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# ON, L, ON, R and ()\n2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 2681 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 2681 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0029 2681 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 2681 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 2681 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0029 2681 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# ON, L, R, ON and ()\n2680 0028 0061 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# ON, L, R, L and ()\n2680 0028 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# ON, L, R, R and ()\n2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# ON, R, ON, ON and ()\n2680 0028 05D0 2681 0029 2682;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, ON, L and ()\n2680 0028 05D0 2681 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, ON, R and ()\n2680 0028 05D0 2681 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L, ON and ()\n2680 0028 05D0 0061 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, L, L and ()\n2680 0028 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, R, L, R and ()\n2680 0028 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, ON, ON, ON and ()\n0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON, L and ()\n0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 2681 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n\n# L, ON, ON, R and ()\n0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0029 2681 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, L, ON and ()\n0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 2681 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 2681;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, ON, L, L and ()\n0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0063;1;1;1 2 2 2 1 2;5 4 1 2 3 0\n\n# L, ON, L, R and ()\n0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0062 05D0 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0062 0029 05D0;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, ON, R, ON and ()\n0061 2680 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, R, L and ()\n0061 2680 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n\n# L, ON, R, R and ()\n0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n\n# L, L, ON, ON and ()\n0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n\n# L, L, ON, L and ()\n0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n\n# L, L, ON, R and ()\n0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 2680 05D0 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0029 2680 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n\n# L, L, R, ON and ()\n0061 0028 0062 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 2680 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 2680;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, R, L and ()\n0061 0028 0062 05D0 0063 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0063 0029;1;1;2 1 2 1 2 1;5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 0063;1;1;2 1 2 1 1 2;5 4 3 2 1 0\n\n# L, L, R, R and ()\n0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 05D1;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, ON, ON and ()\n0061 0028 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n\n# L, R, ON, L and ()\n0061 0028 05D0 2680 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n\n# L, R, ON, R and ()\n0061 0028 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0061 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0061 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n\n# L, R, L, ON and ()\n0061 0028 05D0 0062 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 2680 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 2680;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 2680 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 2680;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, R, L, L and ()\n0061 0028 05D0 0062 0029 0063;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 0063;1;1;2 1 1 2 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0063;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 0063;1;1;1 2 1 2 1 2;5 4 3 2 1 0\n\n# L, R, L, R and ()\n0061 0028 05D0 0062 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0061 0028 05D0 0062 05D1 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 05D1;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0061 05D0 0062 05D1 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 05D1;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# R, ON, ON, ON and ()\n05D0 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON, L and ()\n05D0 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, ON, R and ()\n05D0 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L, ON and ()\n05D0 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON, L, L and ()\n05D0 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, ON, L, R and ()\n05D0 2680 0028 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON, R, ON and ()\n05D0 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, R, L and ()\n05D0 2680 0028 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R, R and ()\n05D0 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2;0;0;0 1 1 1 0 1;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON, ON and ()\n05D0 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, L, ON, L and ()\n05D0 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# R, L, ON, R and ()\n05D0 0028 0061 2680 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 2680 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 2680 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, L, R, ON and ()\n05D0 0028 0061 05D1 2680 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, L, R, L and ()\n05D0 0028 0061 05D1 0062 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# R, L, R, R and ()\n05D0 0028 0061 05D1 0029 05D2;0;0;1 0 0 1 0 1;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 05D2;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2;0;0;0 1 0 1 0 1;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 05D2;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, R, ON, ON and ()\n05D0 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, ON, L and ()\n05D0 0028 05D1 2680 0061 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, ON, R and ()\n05D0 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L, ON and ()\n05D0 0028 05D1 0061 2680 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, L, L and ()\n05D0 0028 05D1 0061 0029 0062;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, R, L, R and ()\n05D0 0028 05D1 0061 05D2 0029;0;0;1 0 1 0 1 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2;0;0;1 0 1 0 0 1;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ()()\n0028 0029 0028 0029;0;0;0 0 0 0;0 1 2 3\n0028 0029 0028 0029;1;1;1 1 1 1;3 2 1 0\n\n# ON and ()()\n2680 0028 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L and ()()\n0061 0028 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R and ()()\n05D0 0028 0029 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON and ()()\n2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L and ()()\n2680 0028 0061 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 0028 2680 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 0028 0029 2680 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R and ()()\n2680 0028 05D0 0029 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0028 2680 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0028 2680 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0028 0029 2680 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON and ()()\n0061 2680 0028 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0028 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0028 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0028 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0028 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0028 0061 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 0028 0061 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, L and ()()\n0061 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 0028 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0028 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0028 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# L, R and ()()\n0061 0028 05D0 0029 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 0028 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0028 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON and ()()\n05D0 2680 0028 0029 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0028 05D0 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0028 05D0 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L and ()()\n05D0 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 0028 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R and ()()\n05D0 0028 05D1 0029 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON and ()()\n2680 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L and ()()\n2680 0028 2681 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R and ()()\n2680 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON and ()()\n2680 0028 0061 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L and ()()\n2680 0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, L, R and ()()\n2680 0028 0061 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 2680 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON and ()()\n2680 0028 05D0 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L and ()()\n2680 0028 05D0 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R and ()()\n2680 0028 05D0 0029 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON and ()()\n0061 2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L and ()()\n0061 2680 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 0029 2680 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R and ()()\n0061 2680 0028 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0028 0029 2680 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 2680 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0028 2680 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0028 0029 2680 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 2680 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 0028 2680 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 0028 0029 2680 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 2680 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 0061 2680 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 0061 0029 2680 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON and ()()\n0061 0028 0062 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 2680 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 0029 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 2680 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0029 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# L, L, L and ()()\n0061 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0063 0029;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, L, R and ()()\n0061 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0028 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0029 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0028 0062 0029 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# L, R, ON and ()()\n0061 0028 05D0 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0028 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0028 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 05D0 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 05D0 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0028 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0028 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 05D0 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 05D0 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 05D0 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 05D0 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 05D0 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 05D0 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L and ()()\n0061 0028 05D0 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R and ()()\n0061 0028 05D0 0029 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON and ()()\n05D0 2680 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L and ()()\n05D0 2680 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0029 2680 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0029 2680 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0029 2680 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0029 2680 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R and ()()\n05D0 2680 0028 05D1 0029 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0029 2680 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON and ()()\n05D0 0028 0061 2680 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L and ()()\n05D0 0028 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, L, R and ()()\n05D0 0028 0061 05D1 0029 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, ON and ()()\n05D0 0028 05D1 2680 0029 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0029 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L and ()()\n05D0 0028 05D1 0061 0029 0028 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R and ()()\n05D0 0028 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and ()()\n2680 0028 2681 0029 2682 0028 2683 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 2683 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ()()\n2680 0028 2681 0029 2682 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ()()\n2680 0028 2681 0029 2682 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ()()\n2680 0028 2681 0061 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 2682 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 2682 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 2682 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 2682 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 2682 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and ()()\n2680 0028 2681 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 2681 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 2681 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and ()()\n2680 0028 2681 0061 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ()()\n2680 0028 2681 05D0 2682 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and ()()\n2680 0028 2681 05D0 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and ()()\n2680 0028 2681 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 2681 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 2681 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ()()\n2680 0028 0061 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and ()()\n2680 0028 0061 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0062 0029 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 2681 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 2681 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 2681 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0029 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n2680 0028 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0062 0029 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 2681 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 2681 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 2681 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0029 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 2680 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 2681 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 2681 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0029 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and ()()\n2680 0028 0061 2681 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and ()()\n2680 0028 0061 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 2681 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 2681 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 0029 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0062 2681 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0062 0029 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0061 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 2681 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 2681 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 0029 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0062 2681 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0062 0029 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0062 2681 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0062 0029 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# ON, L, L, L and ()()\n2680 0028 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# ON, L, L, R and ()()\n2680 0028 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 05D0 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 0028 0029 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 05D0 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 0028 0029 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# ON, L, R, ON and ()()\n2680 0028 0061 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, L and ()()\n2680 0028 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0062 0029 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0062 0029 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R, R and ()()\n2680 0028 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0061 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0061 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0061 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0061 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 2680 0061 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 2680 0061 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ()()\n2680 0028 05D0 2681 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and ()()\n2680 0028 05D0 2681 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and ()()\n2680 0028 05D0 2681 05D1 0029 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0029 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n2680 0028 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0029 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 2680 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0029 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and ()()\n2680 0028 05D0 0061 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, L and ()()\n2680 0028 05D0 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 05D0 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 05D0 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 2680 05D0 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, L, R and ()()\n2680 0028 05D0 0061 05D1 0029 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and ()()\n2680 0028 05D0 0029 05D1 2681 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 2681 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 0029 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 2681 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 2681 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0029 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 2681 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 2681 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, L and ()()\n2680 0028 05D0 0029 05D1 0061 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 0029 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0029 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R, R and ()()\n2680 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ()()\n0061 2680 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 2682 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 2682 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and ()()\n0061 2680 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0062 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 2681 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 2681 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0029 2681 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and ()()\n0061 2680 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and ()()\n0061 2680 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 2681 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 0029 0028 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 2681 0028 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 2681 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 0029 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 2681 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 2681 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 0029 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0062 2681 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0062 0029 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 2681 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 2681 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 0029 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0062 2681 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0062 0029 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0062 2681 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0062 0029 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 2681 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 2681 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 0029 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0062 0029 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0062 2681 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0062 0029 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0062 2681 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0062 0029 2681;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, L, L and ()()\n0061 2680 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0063 0028 0029;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 0063 0029;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 0029 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 0063 0029;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 0029 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 0063 0029;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 0029 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 0063 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 0029 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0062 0029 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0062 0029 0063;1;1;1 1 1 2 2 2 1 2;7 6 3 4 5 2 1 0\n\n# L, ON, L, R and ()()\n0061 2680 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 05D0 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 0029 0028 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 05D0 0028 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 05D0 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0028 0029 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 05D0 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 05D0 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 0028 0029 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0062 05D0 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 0062 0029 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 05D0 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 05D0 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 0028 0029 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0062 05D0 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 0062 0029 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0062 05D0 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 0062 0029 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 05D0 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 05D0 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 0028 0029 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 0062 0029 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0062 05D0 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 0062 0029 05D0;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, R, ON and ()()\n0061 2680 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, R, L and ()()\n0061 2680 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0062 0029 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0062 0029 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0062 0029 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R, R and ()()\n0061 2680 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 2680 0028 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 2680 0028 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 2680 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 2680 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 2680 0029 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 2680 0029 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 0061 2680 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 0061 2680 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 2680 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and ()()\n0061 0028 0062 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 2681 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 2681 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 0029 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 2681 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 0029 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0029 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 2681 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 0029 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0029 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 2681 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 0029 2681;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 2680 0029 2681;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 2680 0029 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 2680 0029 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n\n# L, L, ON, L and ()()\n0061 0028 0062 2680 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0063 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0063 0028 0029;1;1;1 2 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 0063 0029;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 0029 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 2680 0063 0029;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 2680 0029 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0029 2680 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 2680 0063 0029;1;1;1 2 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0061 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 2680 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 0029 2680 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 2680 0063 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 2680 0029 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 0029 2680 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n\n# L, L, ON, R and ()()\n0061 0028 0062 2680 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 05D0 0029 0028 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 05D0 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 05D0 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0028 0029 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 05D0 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 2680 0029 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0029 2680 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 05D0 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 05D0 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0028 0029 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 05D0 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 2680 0029 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0029 2680 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 05D0 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 05D0 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0028 0029 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 2680 05D0 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 2680 0029 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0029 2680 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 2680 05D0 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 2680 0029 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 0029 2680 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 2680 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 2680 0029 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 0029 2680 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n\n# L, L, L, ON and ()()\n0061 0028 0062 0029 0063 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 2680 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 2680 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 0029 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 2680 0029;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 0029 2680;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, L, L, L and ()()\n0061 0028 0062 0029 0063 0028 0064 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 0064 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 0029 0064;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# L, L, L, R and ()()\n0061 0028 0062 0029 0063 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 05D0 0029;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 05D0 0029;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 05D0 0029;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 0063 0029 05D0;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, L, R, ON and ()()\n0061 0028 0062 05D0 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 2680 0029 0028 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 2680 0028 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 2680 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0028 2680 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0028 0029 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 05D0 2680 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 05D0 0029 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 2680 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0028 2680 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0028 0029 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 05D0 2680 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 05D0 0029 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 05D0 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 05D0 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 2680 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0028 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0028 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 05D0 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 05D0 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 05D0 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 05D0 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 05D0 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 05D0 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, R, L and ()()\n0061 0028 0062 05D0 0063 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0063 0029 0028 0029;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0063 0028 0029;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0063 0028 0029;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0028 0063 0029;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0028 0029 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 05D0 0063 0029;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 05D0 0029 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0063 0028 0029;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0028 0063 0029;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0028 0029 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 05D0 0063 0029;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 05D0 0029 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 05D0 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 05D0 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0063 0028 0029;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0028 0063 0029;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0028 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 05D0 0063 0029;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 05D0 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 05D0 0063 0029;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 05D0 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 05D0 0063 0029;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 05D0 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R, R and ()()\n0061 0028 0062 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 05D1 0028 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 05D1 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0028 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0062 0029 05D0 0028 05D1 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0062 0029 05D0 0028 0029 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0028 05D0 0029 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 0062 05D0 0028 05D1 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 0062 05D0 0028 0029 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 0028 05D0 0029 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 0062 05D0 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 0062 05D0 0028 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 0062 05D0 0028 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 0028 05D0 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 0062 05D0 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 0062 05D0 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and ()()\n0061 0028 05D0 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, L and ()()\n0061 0028 05D0 2680 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0062 0029 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0062 0029 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, ON, R and ()()\n0061 0028 05D0 2680 05D1 0029 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 2680 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 0029 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0061 0028 0029 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 2680 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 0029 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0061 0029 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0061 05D0 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0029 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 0061 0028 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 0028 0061 05D0 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, ON and ()()\n0061 0028 05D0 0062 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 2680 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 2680 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 2680 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 2680 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 2680 0029 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 2680 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 2680 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 2680 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 2680 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, L and ()()\n0061 0028 05D0 0062 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0063 0028 0029;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 0063 0029;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 0063 0029;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 0029 0063;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 05D0 0029 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 0063 0029;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 0029 0063;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 0029 05D0 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0063 0028 0029;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 0063 0029;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 0063 0029;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 0029 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 05D0 0029 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 0063 0029;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 0029 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 05D0 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 0061 05D0 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# L, R, L, R and ()()\n0061 0028 05D0 0062 05D1 0029 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 05D1 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 05D1 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 05D1 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0028 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 05D1 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 0028 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 05D1 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 0028 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 05D1 0029 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 05D1 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0028 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 05D1 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 0028 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 05D1 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 0028 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 05D1 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 05D1 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 0028 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 0028 05D0 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 0061 05D0 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, ON and ()()\n0061 0028 05D0 0029 05D1 2680 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 2680 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0028 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0028 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0029 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 2680 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0028 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0028 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0029 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 2680 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 0061 05D0 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, L and ()()\n0061 0028 05D0 0029 05D1 0062 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 0062 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0029 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0062 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0029 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 0061 05D0 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R, R and ()()\n0061 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 05D0 0029 05D1 0028 05D2 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 05D0 0029 05D1 0028 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 05D0 0029 05D1 0028 05D2 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 05D0 0029 05D1 0028 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ()()\n05D0 2680 0028 2681 0029 2682 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 2682 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and ()()\n05D0 2680 0028 2681 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and ()()\n05D0 2680 0028 2681 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and ()()\n05D0 2680 0028 0061 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, L and ()()\n05D0 2680 0028 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 2680 0028 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 2680 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 2680 0029 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 05D0 2680 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, L, R and ()()\n05D0 2680 0028 0061 05D1 0029 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and ()()\n05D0 2680 0028 05D1 2681 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 0028 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 0028 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 2681 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0029 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 2681 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0029 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 2681 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 0029 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 2681 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0029 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 2681 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 0029 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 2681 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 0029 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 2681 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0029 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 0029 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 2681 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 0029 2681;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, L and ()()\n05D0 2680 0028 05D1 0061 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 0028 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 0028 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0061 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0029 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0061 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0029 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 0061 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 0029 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0061 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0029 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 0061 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 0029 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 0061 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 0029 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0061 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0029 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 0029 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 0061 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 0029 0061;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R, R and ()()\n05D0 2680 0028 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 0028 0029;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 05D2 0029;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0029 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 05D2 0029;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0029 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 05D2 0029;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0029 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 0 1 1 1 0 1;0 1 2 5 4 3 6 7\n0028 0029 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and ()()\n05D0 0028 0061 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, L and ()()\n05D0 0028 0061 2680 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0062 0029 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 2680 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 2680 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0029 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n05D0 0028 0029 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0062 0029 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 2680 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 2680 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0029 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 05D0 0029 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 2680 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 2680 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0029 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0028 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 05D0 0028 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 0028 05D0 0061 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, ON, R and ()()\n05D0 0028 0061 2680 05D1 0029 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, ON and ()()\n05D0 0028 0061 0029 0062 2680 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 2680 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0062 2680 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0062 0029 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0061 0029 0062 2680 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 2680 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0062 2680 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0062 0029 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 05D0 0061 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0062 2680 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0062 0029 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# R, L, L, L and ()()\n05D0 0028 0061 0029 0062 0028 0063 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0061 0029 0062 0028 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0061 0029 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0061 0029 0062 0028 0063 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0061 0029 0062 0028 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0061 0029 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# R, L, L, R and ()()\n05D0 0028 0061 0029 0062 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 05D1 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 05D1 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 0028 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0061 0029 0062 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 05D1 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 05D1 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 0028 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 05D0 0061 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# R, L, R, ON and ()()\n05D0 0028 0061 05D1 2680 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, L and ()()\n05D0 0028 0061 05D1 0062 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0062 0029 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 0062 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0062 0029 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0062 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R, R and ()()\n05D0 0028 0061 05D1 0029 05D2 0028 0029;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 05D2 0029;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 05D2 0029;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0061 0029 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0029 05D2;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0061 0029 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 05D2 0029;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0029 0061 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0029 05D2;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0029 0061 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 0028 0029;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 05D2 0029;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 05D2 0029;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0061 0029 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0029 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0061 0029 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 05D2 0029;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 0061 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0029 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 0061 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 0061 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and ()()\n05D0 0028 05D1 2680 0029 2681 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 2681 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0029 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 2681 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0029 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0029 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 2681 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0029 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0029 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 2681 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0029 2681;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0029 2681;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 0029 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 0029 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, L and ()()\n05D0 0028 05D1 2680 0061 0029 0028 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0061 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0029 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0061 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0029 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 2680 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0061 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0029 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0061 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0029 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 2680 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0061 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0029 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0061 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0029 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029 2680 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 0061 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 0029 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029 2680 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 0029 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029 2680 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0029 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, ON, R and ()()\n05D0 0028 05D1 2680 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 0029 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 0028 0029;0;0;0 1 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 05D0 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 05D2 0029;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0029 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 05D2 0029;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0029 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0029 2680 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 05D2 0029;0;0;0 1 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 05D0 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 2680 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0029 2680 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 05D2 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 2680 0029 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0029 2680 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, ON and ()()\n05D0 0028 05D1 0061 2680 0029 0028 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 0028 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 2680 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0029 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 2680 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 0029 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 2680 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0029 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 2680 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 0029 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, L and ()()\n05D0 0028 05D1 0061 0029 0062 0028 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 0062 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0062 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0029 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 0029 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0062 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0029 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 0029 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, R, L, R and ()()\n05D0 0028 05D1 0061 05D2 0029 0028 0029;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 05D2 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 0028 0029;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 05D2 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 0028 0029;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 05D2 0029;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0029 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 05D2 0029;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061 0029 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 0028 0029;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 05D2 0029;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0029 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 05D2 0029;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061 0029 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0028 05D1 0061 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 0028 0029;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 05D2 0029;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 05D2 0029;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 05D2 0029;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0028 05D1 0061 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 05D2 0029;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0028 05D1 0061 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, ON and ()()\n05D0 0028 05D1 0029 05D2 2680 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 2680 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0029 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0029 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 2680 0029;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 0029 2680;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, L and ()()\n05D0 0028 05D1 0029 05D2 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0061 0029;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0029 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0061 0029;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 0061 0029;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 0029 0061;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R, R and ()()\n05D0 0028 05D1 0029 05D2 0028 05D3 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 05D3 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2 0029 05D3;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# (())\n0028 0028 0029 0029;0;0;0 0 0 0;0 1 2 3\n0028 0028 0029 0029;1;1;1 1 1 1;3 2 1 0\n\n# ON and (())\n2680 0028 0028 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0028 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0028 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0028 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 2680 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 2680 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 0029 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 0029 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L and (())\n0061 0028 0028 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0028 0029 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 0028 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0028 0029 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0028 0061 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0061 0029 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0028 0029 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0028 0029 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R and (())\n05D0 0028 0028 0029 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0028 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0028 0029 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0028 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 05D0 0029 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0028 05D0 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 0029 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0028 0029 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 0029 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0028 0029 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON and (())\n2680 0028 2681 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 2681 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 2681 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L and (())\n2680 0028 0061 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0028 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0028 0029 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0061 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0028 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0028 0029 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 2680 0029 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 0029 2680 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 0029 0029 2680 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R and (())\n2680 0028 05D0 0028 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0028 05D0 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0028 0029 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0028 0029 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0028 05D0 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0028 0029 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0028 0029 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 2680 05D0 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 2680 0029 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 2680 0029 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 0029 2680 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0029 2680 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0029 0029 2680 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON and (())\n0061 2680 0028 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0028 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0028 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 2680 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 2680 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 0029 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 0029 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0028 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 2680 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 2680 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 2680 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0061 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 0029 0061 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, L and (())\n0061 0028 0062 0028 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0028 0029 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0062 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0062 0029 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0028 0062 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0062 0029 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 0028 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0028 0061 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0028 0061 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 0028 0029 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# L, R and (())\n0061 0028 05D0 0028 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0028 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0028 05D0 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0028 0029 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0028 0029 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0028 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0028 05D0 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0028 0029 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0028 0029 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0061 05D0 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 0061 0029 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0061 0029 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 0029 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 0029 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0029 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON and (())\n05D0 2680 0028 0028 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 2680 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 2680 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 2680 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0029 05D0 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0029 05D0 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L and (())\n05D0 0028 0061 0028 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0028 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0028 0029 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0028 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0028 0029 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 05D0 0029 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0029 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 0029 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0029 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R and (())\n05D0 0028 05D1 0028 0029 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 0028 05D1 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 0028 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0028 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON and (())\n2680 0028 2681 0028 2682 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L and (())\n2680 0028 2681 0061 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0029 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0029 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0029 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 2680 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R and (())\n2680 0028 2681 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0029 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0029 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0029 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 2680 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON and (())\n2680 0028 0061 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L and (())\n2680 0028 0061 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 0029 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 0029 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, L, R and (())\n2680 0028 0061 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON and (())\n2680 0028 05D0 2681 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L and (())\n2680 0028 05D0 0061 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R and (())\n2680 0028 05D0 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON and (())\n0061 2680 0028 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L and (())\n0061 2680 0028 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0029 2680 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0029 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 0029 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 0029 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 0029 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 2680 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 0029 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 0029 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0061 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R and (())\n0061 2680 0028 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0028 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0028 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0029 0029 2680 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0028 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0029 0029 2680 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 0029 0029 2680 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0061 0029 2680 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON and (())\n0061 0028 0062 2680 0028 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 0029 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 2680 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0029 2680;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 2680 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 0029 2680;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L, L and (())\n0061 0028 0062 0028 0063 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, L, R and (())\n0061 0028 0062 05D0 0028 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0028 0029 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 0029 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 0062 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0028 0062 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0029 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 0029 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, ON and (())\n0061 0028 05D0 2680 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0028 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 2680 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 2680 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0028 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 2680 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 2680 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 2680 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L and (())\n0061 0028 05D0 0062 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 0029 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 0029 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 0029 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 0029 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 0029 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 0029 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R and (())\n0061 0028 05D0 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 0028 05D1 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 0028 0029 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 0028 05D1 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 0028 0029 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON and (())\n05D0 2680 0028 2681 0028 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L and (())\n05D0 2680 0028 0061 0028 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0029 2680 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0029 2680 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0029 2680 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0029 2680 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R and (())\n05D0 2680 0028 05D1 0028 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0029 2680 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 2680 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 2680 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 0029 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0029 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0028 0029 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON and (())\n05D0 0028 0061 2680 0028 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L and (())\n05D0 0028 0061 0028 0062 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 0029 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 0029 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, L, R and (())\n05D0 0028 0061 05D1 0028 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0028 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, ON and (())\n05D0 0028 05D1 2680 0028 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0028 0029 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 05D1 0029 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 0029 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 05D1 2680 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029 2680;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029 2680;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L and (())\n05D0 0028 05D1 0061 0028 0029 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0028 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0028 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0028 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0028 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R and (())\n05D0 0028 05D1 0028 05D2 0029 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and (())\n2680 0028 2681 0028 2682 0029 2683 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 2683 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (())\n2680 0028 2681 0028 2682 0061 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (())\n2680 0028 2681 0028 2682 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 05D0 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (())\n2680 0028 2681 0061 2682 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 2682 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 2682 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 2682 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 2682 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 2682 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and (())\n2680 0028 2681 0061 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 2681 0061 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 2681 0061 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and (())\n2680 0028 2681 0061 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 05D0 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 05D0 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 05D0 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 05D0 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 05D0 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (())\n2680 0028 2681 05D0 2682 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 2682 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 2682 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 2682 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 2682 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 2682 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and (())\n2680 0028 2681 05D0 0061 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0061 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0061 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0061 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0061 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and (())\n2680 0028 2681 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 2681 05D0 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 2681 05D0 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (())\n2680 0028 0061 2681 0028 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 2682 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 2682 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and (())\n2680 0028 0061 2681 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0062 0028 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 2681 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 2681 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 0028 0061 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n2680 0028 0028 0029 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0062 0028 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 2681 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 2681 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 0028 0061 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 2680 0028 0029 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 2680 0061 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 2680 0029 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 0029 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and (())\n2680 0028 0061 2681 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 05D0 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 05D0 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 05D0 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 05D0 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 05D0 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 05D0 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 05D0 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 05D0 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 05D0 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and (())\n2680 0028 0061 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 2681 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0028 0061 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 2681 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0028 0061 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, L and (())\n2680 0028 0061 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n2680 0028 0028 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 2680 0028 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, L, R and (())\n2680 0028 0061 0028 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 05D0 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0028 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 05D0 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0028 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, ON and (())\n2680 0028 0061 05D0 2681 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 2681 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 2681 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, L and (())\n2680 0028 0061 05D0 0062 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0062 0028 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0062 0028 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R, R and (())\n2680 0028 0061 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0061 05D0 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0061 05D0 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0061 05D0 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0061 05D0 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (())\n2680 0028 05D0 2681 0028 2682 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 2682 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and (())\n2680 0028 05D0 2681 0061 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0061 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0061 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0061 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0061 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0061 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0061 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0061 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and (())\n2680 0028 05D0 2681 05D1 0028 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 2681 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 2681 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 2681 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 0028 05D0 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n2680 0028 0028 0029 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0028 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 2681 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 2681 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 2681 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 0028 05D0 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 2680 0028 0029 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 2680 05D0 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 2680 0029 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 0029 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and (())\n2680 0028 05D0 0061 2681 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 2681 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 2681 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, L and (())\n2680 0028 05D0 0061 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, L, R and (())\n2680 0028 05D0 0061 05D1 0028 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 05D1 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0028 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 05D1 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and (())\n2680 0028 05D0 0028 05D1 2681 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 2681 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, L and (())\n2680 0028 05D0 0028 05D1 0061 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0061 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R, R and (())\n2680 0028 05D0 0028 05D1 0029 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (())\n0061 2680 0028 2681 0028 2682 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 2682 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 2682 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and (())\n0061 2680 0028 2681 0062 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0062 0028 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0062 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0062 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0062 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0062 0029 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and (())\n0061 2680 0028 2681 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 05D0 0028 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 05D0 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 05D0 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 05D0 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 05D0 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and (())\n0061 2680 0028 0062 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 2681 0028 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 0028 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 0028 0029 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 2681 0029 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 2681 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0029 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 2681 0029 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 2681 0029 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0028 0061 2680 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 2681 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 2681 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 0029 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 2681 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 0029 2681;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, L, L and (())\n0061 2680 0028 0062 0028 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0063 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0063 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0063 0029 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0062 0028 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0062 0028 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0029 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0028 0061 2680 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 0063 0029;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 0029 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 0029 0063;1;1;1 1 1 2 2 2 1 2;7 6 3 4 5 2 1 0\n\n# L, ON, L, R and (())\n0061 2680 0028 0062 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 05D0 0028 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 05D0 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 05D0 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 0028 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 05D0 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 05D0 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 05D0 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 0028 0029 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 05D0 0029 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 05D0 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0029 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 05D0 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 05D0 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0028 0061 2680 0062 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 05D0 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 05D0 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 0029 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 05D0 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 0029 05D0;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, R, ON and (())\n0061 2680 0028 05D0 2681 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 2681 0028 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 2681 0028 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 2681 0028 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 2681 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 2681 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 2681 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 2681 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 2681 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, R, L and (())\n0061 2680 0028 05D0 0062 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0062 0028 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0062 0028 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0062 0028 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0062 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R, R and (())\n0061 2680 0028 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 2680 0028 05D0 0028 05D1 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 2680 0028 05D0 0028 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 2680 05D0 0028 05D1 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 2680 05D0 0028 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 2680 05D0 0028 05D1 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 2680 05D0 0028 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and (())\n0061 0028 0062 2680 0028 2681 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 2681 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 0029 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 0029 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 0029 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, L and (())\n0061 0028 0062 2680 0063 0028 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0063 0028 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0063 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0063 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0063 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0063 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0063 0029 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 0029 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 0029 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 0029 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0029 2680 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0029 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0029 2680 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 0063 0029;1;1;1 1 2 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 0061 0029 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0029 2680 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, ON, R and (())\n0061 0028 0062 2680 05D0 0028 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 05D0 0028 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 0028 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 05D0 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 0028 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 0028 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 05D0 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 2680 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 05D0 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0029 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 05D0 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 0029 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0029 2680 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, L, ON and (())\n0061 0028 0062 0028 0063 2680 0029 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 2680 0029 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 2680 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0029 2680;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n\n# L, L, L, L and (())\n0061 0028 0062 0028 0063 0029 0064 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0064 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0029 0064;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n\n# L, L, L, R and (())\n0061 0028 0062 0028 0063 05D0 0029 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 05D0 0029 0029;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0063 0029 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 05D0 0029;1;1;2 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0061 0028 0062 0028 0063 0029 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 05D0 0029;1;1;2 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0061 0028 0062 0028 0029 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 05D0 0029;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n\n# L, L, R, ON and (())\n0061 0028 0062 05D0 2680 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 2680 0028 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 2680 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 2680 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 2680 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 2680 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 2680 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 2680 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 2680 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 2680 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, R, L and (())\n0061 0028 0062 05D0 0063 0028 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0063 0028 0029 0029;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0063 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0063 0029 0029;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0063 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0063 0029 0029;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0063 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0063 0029 0029;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 0063 0029;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 0063 0029;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0063 0029 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0063 0029 0029;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 0063 0029;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 0063 0029;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 0063 0029;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 0063 0029;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R, R and (())\n0061 0028 0062 05D0 0028 05D1 0029 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0062 05D0 0028 05D1 0029 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0062 05D0 0028 0029 05D1 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0028 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 05D1 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 05D1 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0028 0061 0029 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and (())\n0061 0028 05D0 2680 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 2681 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 2681 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, L and (())\n0061 0028 05D0 2680 0062 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0062 0028 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0062 0028 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0062 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, ON, R and (())\n0061 0028 05D0 2680 05D1 0028 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 2680 05D1 0028 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 2680 0028 05D1 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 2680 0028 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 2680 05D1 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 2680 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 0029 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 0028 05D0 2680 05D1 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0061 0028 0028 0029 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0028 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 2680 05D1 0028 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 2680 0028 05D1 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 2680 0028 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 05D1 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 2680 05D1 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 2680 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 0029 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 0028 05D0 2680 05D1 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0061 0028 0029 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 05D1 0029 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0061 05D0 2680 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 0061 0029 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 0029 0061 05D0 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, ON and (())\n0061 0028 05D0 0062 2680 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 2680 0028 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 2680 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 2680 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 2680 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 2680 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 2680 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 2680 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0028 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 2680 0028 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 2680 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 2680 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 2680 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 2680 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 2680 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 2680 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 2680 0029 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 2680 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, L and (())\n0061 0028 05D0 0062 0028 0063 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0063 0029 0029;1;1;2 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 0028 0029 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 0063 0029;1;1;2 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 0028 0029 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0063 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0063 0029 0029;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 0028 0029 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 0063 0029;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 0028 0029 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 0063 0029;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 0063 0029;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 0063 0029;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# L, R, L, R and (())\n0061 0028 05D0 0062 05D1 0028 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 05D1 0028 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 05D1 0029 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 05D1 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 05D1 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 05D1 0029 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0028 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 05D1 0028 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 05D1 0029 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 05D1 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 05D1 0029 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 05D1 0029 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 05D1 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 05D1 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, ON and (())\n0061 0028 05D0 0028 05D1 2680 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 05D1 2680 0029 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 2680 0029 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 05D1 2680 0029 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, L and (())\n0061 0028 05D0 0028 05D1 0062 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 05D1 0062 0029 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0062 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 05D1 0062 0029 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R, R and (())\n0061 0028 05D0 0028 05D1 0029 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 05D1 0029 05D2 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 05D1 0029 05D2 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (())\n05D0 2680 0028 2681 0028 2682 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 2682 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 2682 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and (())\n05D0 2680 0028 2681 0061 0028 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0061 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0061 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0061 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0061 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and (())\n05D0 2680 0028 2681 05D1 0028 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 05D1 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 05D1 0029 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and (())\n05D0 2680 0028 0061 2681 0028 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 2681 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0028 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 2681 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0028 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 2681 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 2681 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 2681 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 2681 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 2681 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 2681 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 2681 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, L and (())\n05D0 2680 0028 0061 0028 0062 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 0028 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 0028 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0062 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 0028 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 0028 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0062 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 0028 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 0028 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, L, R and (())\n05D0 2680 0028 0061 05D1 0028 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 05D1 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0028 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 05D1 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0028 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 05D1 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 05D1 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and (())\n05D0 2680 0028 05D1 2681 0028 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0028 0029 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 2681 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 2681 0029 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 2681 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0029 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 2681 0029 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 2681 0029 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 2681 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 2681 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0029 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 2681 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0029 2681;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, L and (())\n05D0 2680 0028 05D1 0061 0028 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0061 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0061 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0028 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0061 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0061 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0061 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0028 0029 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0061 0029 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0061 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0029 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0061 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0061 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0061 0029 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0061 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0029 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0061 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0029 0061;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R, R and (())\n05D0 2680 0028 05D1 0028 05D2 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 05D2 0029 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 05D1 0028 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 05D1 0028 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0029 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 05D2 0029;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0029 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0029 05D2;0;0;0 0 0 1 1 1 0 1;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and (())\n05D0 0028 0061 2680 0028 2681 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 2681 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 2681 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, L and (())\n05D0 0028 0061 2680 0062 0028 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0062 0028 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0028 0062 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 0028 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 0028 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0062 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0029 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0062 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 2680 0029 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0028 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0062 0028 0029 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0028 0062 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 0028 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 0028 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0062 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0062 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0029 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0062 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 2680 0029 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0062 0029 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0062 0029 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 2680 0029 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, ON, R and (())\n05D0 0028 0061 2680 05D1 0028 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 05D1 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0028 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 05D1 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 05D1 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 05D1 0029 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 05D1 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, ON and (())\n05D0 0028 0061 0028 0062 2680 0029 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 2680 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 0029 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0028 0061 0029 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 2680 0029 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 2680 0029 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0028 0061 0029 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, L and (())\n05D0 0028 0061 0028 0062 0029 0063 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 0029 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n05D0 0028 0028 0061 0029 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 0063 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 05D0 0028 0061 0029 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, L, L, R and (())\n05D0 0028 0061 0028 0062 05D1 0029 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 05D1 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 0029 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0028 0061 0029 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 05D1 0029 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 05D1 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0028 0061 0029 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, ON and (())\n05D0 0028 0061 05D1 2680 0028 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 2680 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 2680 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 2680 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 2680 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 2680 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 2680 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 2680 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0028 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 2680 0028 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 2680 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 2680 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 2680 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 2680 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 2680 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 2680 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 2680 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 2680 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, L and (())\n05D0 0028 0061 05D1 0062 0028 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0062 0028 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0062 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0062 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0062 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0062 0029 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0028 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0062 0028 0029 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0062 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0062 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0062 0029 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0062 0029 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0062 0029 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0062 0029 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0062 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R, R and (())\n05D0 0028 0061 05D1 0028 05D2 0029 0029;0;0;1 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n05D0 0028 0061 05D1 0028 05D2 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 05D2 0029;0;0;1 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n05D0 0028 0061 05D1 0028 0029 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 05D2 0029 0029;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0061 05D1 0028 05D2 0029 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 05D2 0029;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0061 05D1 0028 0029 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 05D2 0029;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 05D2 0029;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 05D2 0029;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and (())\n05D0 0028 05D1 2680 0028 2681 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 2681 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 0028 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0029 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0029 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0029 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, L and (())\n05D0 0028 05D1 2680 0061 0028 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0061 0028 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0061 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0028 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0028 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 0028 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0061 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 2680 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 2680 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 2680 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 0029 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 0028 0029 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0061 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 2680 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 2680 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 2680 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 0029 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 0029 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 0029 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0061 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 2680 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029 2680 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0029 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029 2680 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, ON, R and (())\n05D0 0028 05D1 2680 05D2 0028 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 05D2 0028 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 05D2 0029 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 2680 05D2 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 2680 0029 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 0029 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0029 2680 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 0029 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0029 2680 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 05D2 0029;0;0;0 0 1 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 05D0 0029 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0029 2680 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, ON and (())\n05D0 0028 05D1 0061 2680 0028 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 2680 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 2680 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 2680 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 2680 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 2680 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 2680 0029 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 2680 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 2680 0029 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 2680 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, L and (())\n05D0 0028 05D1 0061 0028 0062 0029 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0062 0029 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 0028 0029 0062 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 0028 0029 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0062 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0062 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0029 0062;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0029 0062;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, R, L, R and (())\n05D0 0028 05D1 0061 05D2 0028 0029 0029;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 05D2 0028 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 05D2 0029 0029;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 05D2 0029 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 05D2 0029 0029;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 05D2 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 05D2 0029 0029;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 05D2 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 05D2 0029;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 05D2 0029;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 05D2 0029 0029;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 05D2 0029 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 05D2 0029;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 05D2 0029;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 05D2 0029;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 05D2 0029;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, ON and (())\n05D0 0028 05D1 0028 05D2 2680 0029 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 2680 0029 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 05D2 0029 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 0029 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 0029 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 2680 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0029 2680;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, L and (())\n05D0 0028 05D1 0028 05D2 0061 0029 0029;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0028 05D2 0061 0029 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0061 0029;0;0;1 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n05D0 0028 05D1 0028 05D2 0029 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 05D2 0029 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0061 0029;0;0;1 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n05D0 0028 05D1 0028 0029 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 0029 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0061 0029;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0029 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 0029 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R, R and (())\n05D0 0028 05D1 0028 05D2 0029 05D3 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 05D3 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0029 05D3;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ()[]\n0028 0029 005B 005D;0;0;0 0 0 0;0 1 2 3\n0028 0029 005B 005D;1;1;1 1 1 1;3 2 1 0\n\n# ON and ()[]\n2680 0028 0029 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005B 2680 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005B 2680 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005B 005D 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005B 005D 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L and ()[]\n0061 0028 0029 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 005B 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 0029 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 005B 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 005B 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 005B 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 005B 0061 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005B 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 005B 005D 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005B 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R and ()[]\n05D0 0028 0029 005B 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 005B 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 005B 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 005B 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005B 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 005B 05D0 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005B 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 005B 005D 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON and ()[]\n2680 0028 2681 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005B 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005B 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005B 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005B 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005B 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005B 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 2680 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 2680 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L and ()[]\n2680 0028 0061 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 005B 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 005B 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 0061 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 005B 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 2680 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 005B 2680 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 2680 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 005B 005D 2680 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 005D 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R and ()[]\n2680 0028 05D0 0029 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 005B 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 005B 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 005B 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 005B 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 005B 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 005B 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 005B 2680 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 2680 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 005B 2680 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 005D 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 005B 005D 2680 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON and ()[]\n0061 2680 0028 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 005B 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 005B 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 005B 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005B 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005B 2680 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005B 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005B 005D 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 005B 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 005B 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005B 2680 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005B 005D 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005B 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005B 2680 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005B 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005B 005D 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 005B 0061 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 0061 2680 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 005B 0061 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 0061 005D 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, L and ()[]\n0061 0028 0062 0029 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 005B 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 005B 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 005B 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005B 0062 005D;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 005B 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005B 005D 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 005B 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 005B 005D;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005B 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 005B 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005B 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 005B 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005B 0062 005D;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 005B 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005B 005D 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 005B 0061 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 005B 0061 005D 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# L, R and ()[]\n0061 0028 05D0 0029 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 005B 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 005B 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 005B 05D0 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 005B 005D 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 005B 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 005B 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 005B 05D0 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 005B 005D 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 005B 05D0 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005B 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 005B 005D 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 005B 0061 05D0 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 005B 0061 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 005B 0061 005D 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON and ()[]\n05D0 2680 0028 0029 005B 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005B 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 005D 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005B 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005B 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 005D 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005B 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005B 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 005D 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005B 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 005B 05D0 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 05D0 005D 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 005B 05D0 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L and ()[]\n05D0 0028 0061 0029 005B 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 005B 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 0061 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 005B 005D 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 005B 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 005B 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 0061 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 005B 005D 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 0061 005B 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 005B 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 0061 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005B 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 005B 005D 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005B 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 005B 05D0 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 005B 05D0 005D 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 005B 05D0 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R and ()[]\n05D0 0028 05D1 0029 005B 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 005D 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 005B 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 005B 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 005B 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 005D 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 005B 05D0 005D 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0029 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON and ()[]\n2680 0028 2681 0029 2682 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L and ()[]\n2680 0028 2681 0061 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 005B 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 005B 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 005B 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 2680 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R and ()[]\n2680 0028 2681 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 005B 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 005B 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 005B 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 005B 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 005B 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 005B 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 2680 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON and ()[]\n2680 0028 0061 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L and ()[]\n2680 0028 0061 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005B 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005B 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, L, R and ()[]\n2680 0028 0061 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 005B 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 005B 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 005B 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 2680 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON and ()[]\n2680 0028 05D0 2681 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L and ()[]\n2680 0028 05D0 0061 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 2680 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R and ()[]\n2680 0028 05D0 0029 05D1 005B 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0029 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0029 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 2680 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 005B 2680 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON and ()[]\n0061 2680 0028 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 2680 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 2680 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 2680 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L and ()[]\n0061 2680 0028 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 0062 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 0062 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 0062 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 0062 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 005B 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 005D 2680 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005B 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005B 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005B 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 2680 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 2680 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 005B 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 005D 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005B 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 005B 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 0062 005D;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 2680 005B 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 005D 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 005B 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 2680 0062 005D;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 005B 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 2680 005D 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 005B 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 005D 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 005B 0061 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 2680 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 005B 0061 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 2680 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 0061 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 005D 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R and ()[]\n0061 2680 0028 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 005B 005D 2680 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 2680 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 005B 2680 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 005B 005D 2680 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 2680 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 005B 2680 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 005B 005D 2680 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 2680 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 0061 2680 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 0061 005D 2680 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON and ()[]\n0061 0028 0062 2680 0029 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005B 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 2680 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 005D 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005B 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 2680 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 005D 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 2680 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0029 0062 2680 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005B 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 2680 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 005D 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 0062 2680 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 0062 005D 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 0062 2680 005D;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 0029 0061 005B 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 0062 005D 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# L, L, L and ()[]\n0061 0028 0062 0029 0063 005B 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005B 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 005B 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 0063 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 0063 005D;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 0063 005D;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 005D 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 0062 005D 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 0062 005D 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, L, R and ()[]\n0061 0028 0062 05D0 0029 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005B 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 005B 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 05D0 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 005D 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 005B 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 05D0 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 005D 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 05D0 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0029 0062 05D0 005B 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 005B 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 05D0 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 005D 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 0062 05D0 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 005B 0062 005D 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 0062 05D0 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 005B 0062 005D 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# L, R, ON and ()[]\n0061 0028 05D0 2680 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005B 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005B 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 05D0 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 05D0 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005B 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005B 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 05D0 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 05D0 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005B 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005B 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 05D0 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 05D0 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 05D0 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 05D0 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L and ()[]\n0061 0028 05D0 0062 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005B 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005B 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005B 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005B 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005B 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 05D0 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 005B 05D0 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005B 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005B 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005B 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005B 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005B 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 05D0 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 005B 05D0 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005B 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005B 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005B 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 05D0 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 005B 05D0 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 05D0 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 005B 0061 05D0 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R and ()[]\n0061 0028 05D0 0029 05D1 005B 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 005B 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 005B 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 005B 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0029 005B 05D0 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 005B 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 005B 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 005B 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 0029 005B 05D0 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 005D;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 005B 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 005B 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 0061 005B 05D0 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0029 005B 0061 05D0 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON and ()[]\n05D0 2680 0028 2681 0029 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L and ()[]\n05D0 2680 0028 0061 0029 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 005B 005D 2680 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 005B 005D 2680 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 005B 005D 2680 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 005B 05D0 005D 2680 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R and ()[]\n05D0 2680 0028 05D1 0029 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 005D 2680 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 005B 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 005D 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 005B 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 005D;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 005B 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 005B 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 005D;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 005B 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 005B 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 005D 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 005B 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 005B 05D0 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 05D0 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 005D 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 05D0 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON and ()[]\n05D0 0028 0061 2680 0029 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L and ()[]\n05D0 0028 0061 0029 0062 005B 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005B 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 005B 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 005B 0061 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005B 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 005B 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 005B 0061 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 0062 005D;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 005B 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 005B 0061 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 0061 005D 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, L, R and ()[]\n05D0 0028 0061 05D1 0029 005B 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 005B 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 005B 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 005B 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 005B 05D0 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 005B 05D0 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, ON and ()[]\n05D0 0028 05D1 2680 0029 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005B 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005B 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005B 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005B 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 005B 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005B 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005B 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 005D;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 005B 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0029 05D0 005B 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L and ()[]\n05D0 0028 05D1 0061 0029 005B 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005B 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005B 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 005B 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0029 05D0 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R and ()[]\n05D0 0028 05D1 0029 05D2 005B 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 005B 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 005D;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and ()[]\n2680 0028 2681 0029 2682 005B 2683 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 2683 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ()[]\n2680 0028 2681 0029 2682 0061 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ()[]\n2680 0028 2681 0029 2682 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 05D0 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 2682 005B 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ()[]\n2680 0028 2681 0061 2682 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 2682 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 2682 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 2682 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 2682 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 2682 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and ()[]\n2680 0028 2681 0061 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 2681 0029 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 2681 0029 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 2681 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 2681 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 2681 0061 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 2681 005B 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and ()[]\n2680 0028 2681 0061 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 05D0 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 05D0 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0029 005B 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 05D0 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 0061 005B 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 05D0 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 0061 005B 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 05D0 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 0061 005B 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ()[]\n2680 0028 2681 05D0 2682 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 2682 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and ()[]\n2680 0028 2681 05D0 0061 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 05D0 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and ()[]\n2680 0028 2681 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 2681 0029 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 2681 0029 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0029 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 2681 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 2681 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 2681 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 2681 05D0 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 2681 05D0 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 2681 005B 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ()[]\n2680 0028 0061 2681 0029 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 2682 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 2682 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and ()[]\n2680 0028 0061 2681 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0062 0029 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 2681 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 2681 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 2681 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 2681 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 005D 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 005B 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n2680 0028 0029 005B 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 2681 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 005D 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0062 0029 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 2681 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 2681 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 2681 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 2681 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 005D 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 005B 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 2680 0029 005B 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 2681 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 005D 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 2681 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 2681 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 005D 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 005B 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 2680 005B 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 2681 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 005D 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 005B 2680 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 2681 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 005D 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and ()[]\n2680 0028 0061 2681 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 05D0 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 05D0 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0029 005B 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 05D0 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 2681 005B 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 05D0 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 2681 005B 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 05D0 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 05D0 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0029 005B 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 05D0 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 2681 005B 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 05D0 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 2681 005B 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 05D0 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 2681 005B 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and ()[]\n2680 0028 0061 0029 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 2681 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 2681 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 005D 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 0062 2681 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n2680 0028 0029 0061 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 0062 005D 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0061 0029 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 2681 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 2681 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 005D 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 0062 2681 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0029 0061 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 0062 005D 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 2680 0061 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 0062 2681 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 0062 005D 2681;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# ON, L, L, L and ()[]\n2680 0028 0061 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 0063 005D;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0061 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0061 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 2680 0061 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 0063 005D;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0061 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0061 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 2680 0061 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# ON, L, L, R and ()[]\n2680 0028 0061 0029 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 05D0 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 05D0 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 0062 005B 005D 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 0062 005D 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0061 0029 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 05D0 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 05D0 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 0062 005B 005D 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 0062 005D 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 2680 0061 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 0062 005D 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# ON, L, R, ON and ()[]\n2680 0028 0061 05D0 2681 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 2681 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 2681 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, L and ()[]\n2680 0028 0061 05D0 0062 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0062 0029 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 05D0 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 05D0 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0062 0029 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 05D0 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 05D0 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 05D0 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R, R and ()[]\n2680 0028 0061 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0061 0029 05D0 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0061 0029 05D0 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0029 005B 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 0061 05D0 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0029 0061 05D0 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 0061 005B 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0061 0029 05D0 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0061 0029 05D0 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0029 005B 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 0061 05D0 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0029 0061 05D0 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 0061 005B 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 2680 0061 05D0 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 2680 0061 05D0 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 0061 005B 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ()[]\n2680 0028 05D0 2681 0029 2682 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and ()[]\n2680 0028 05D0 2681 0061 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and ()[]\n2680 0028 05D0 2681 05D1 0029 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 2681 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 0029 05D0 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 005D 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n2680 0028 0029 005B 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 2681 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 005D 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 2681 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 0029 05D0 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 005D 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 2680 0029 005B 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 2681 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 005D 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 2680 05D0 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 005D 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 2680 005B 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 2681 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 005D 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 005B 2680 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 2681 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 005D 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and ()[]\n2680 0028 05D0 0061 2681 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 2681 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 2681 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, L and ()[]\n2680 0028 05D0 0061 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 05D0 0029 0061 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 05D0 0029 005B 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 05D0 0061 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0029 05D0 005B 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 05D0 0029 0061 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 05D0 0029 005B 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 05D0 0061 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0029 05D0 005B 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 2680 05D0 0061 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 2680 05D0 005B 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, L, R and ()[]\n2680 0028 05D0 0061 05D1 0029 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 05D1 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0029 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 005B 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0029 005B 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 05D1 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0029 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 005B 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0029 005B 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 005B 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 2680 005B 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 2680 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 2680 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and ()[]\n2680 0028 05D0 0029 05D1 2681 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 2681 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 005D 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 2681 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 005D 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0029 05D0 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 2681 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 005D 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 2681 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 005D 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0029 05D0 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 2681 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 005D 2681;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 2680 05D0 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, L and ()[]\n2680 0028 05D0 0029 05D1 0061 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 0061 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 005D 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0029 05D0 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 005D 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0029 05D0 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 0061 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 005D 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0029 05D0 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 005D 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0029 05D0 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 2680 05D0 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 005D 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 2680 05D0 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R, R and ()[]\n2680 0028 05D0 0029 05D1 005B 05D2 005D;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 05D0 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 05D0 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n2680 0028 0029 05D0 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 05D2 005D;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 05D0 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 05D0 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 2680 0029 05D0 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 2680 05D0 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ()[]\n0061 2680 0028 2681 0029 2682 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 2682 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 2682 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 2681 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 2681 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and ()[]\n0061 2680 0028 2681 0062 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0062 0029 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 0062 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 0062 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 0062 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 0062 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0062 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 2681 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 2681 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 2681 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 2681 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 2681 0062 005D;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 005B 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 2681 005D 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 005B 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 005D 2681 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 005B 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 005D 2681 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 005B 0061 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 005D 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and ()[]\n0061 2680 0028 2681 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 05D0 0029 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 05D0 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0029 005B 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 05D0 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 2681 005B 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 05D0 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 2681 005B 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 05D0 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 2681 005B 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and ()[]\n0061 2680 0028 0062 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 2681 0029 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 2681 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 005D 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 0029 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 2681 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 005D 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 2681 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 005D 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 2681 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 005D 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 0029 005B 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 2681 005B 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 2681 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 005D 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 2681 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 2681 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 005D 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 2681 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 2681 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 005D 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 2681 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 2681 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 005D 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 005B 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 0062 2681 005D;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 005B 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 0062 005D 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 005B 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 0062 2681 005D;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 005B 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 0062 005D 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 005B 0061 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 0062 2681 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 005B 0061 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 0062 005D 2681;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, L, L and ()[]\n0061 2680 0028 0062 0029 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 0063 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 0063 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 0063 005B 005D;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 0063 005D;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 2680 0029 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 005D 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 2680 0029 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 0063 005D;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 2680 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 005D 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 2680 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 0063 005D;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 0062 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 005D 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 2680 005B 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 0062 005D 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 005B 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 0062 005D 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 005B 0061 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 0062 005D 0063;1;1;1 1 1 2 2 2 1 2;7 6 3 4 5 2 1 0\n\n# L, ON, L, R and ()[]\n0061 2680 0028 0062 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 05D0 0029 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0029 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 0062 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 2680 0028 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 05D0 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 0029 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0029 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 0062 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 2680 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 05D0 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 0062 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0029 2680 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 05D0 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 005B 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 05D0 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 0029 005B 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 05D0 005B 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 05D0 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0029 005B 005D 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 05D0 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 05D0 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 0062 005B 005D 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 05D0 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 05D0 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 0062 005B 005D 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 05D0 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 05D0 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 0062 005B 005D 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0029 0061 2680 005B 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 0062 005D 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 005B 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 0062 005D 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 005B 0061 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 0062 05D0 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 005B 0061 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 0062 005D 05D0;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, R, ON and ()[]\n0061 2680 0028 05D0 2681 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 2681 0029 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 2681 0029 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 2681 0029 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 2681 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 2681 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 2681 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, R, L and ()[]\n0061 2680 0028 05D0 0062 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0062 0029 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 05D0 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0062 0029 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 05D0 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 05D0 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0062 0029 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 05D0 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 05D0 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 05D0 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R, R and ()[]\n0061 2680 0028 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 05D1 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0029 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 2680 0028 0029 05D0 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 2680 0028 0029 05D0 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0029 005B 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 05D1 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0029 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 2680 0029 05D0 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 2680 0029 05D0 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0029 005B 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 2680 05D0 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 2680 05D0 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 2680 005B 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 2680 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 05D1 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0029 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 2680 0029 05D0 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 2680 0029 05D0 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0029 005B 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 2680 05D0 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 2680 05D0 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 2680 005B 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 2680 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 0061 2680 05D0 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 0061 2680 05D0 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 2680 005B 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 2680 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 2680 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and ()[]\n0061 0028 0062 2680 0029 2681 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 2681 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 2681 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 2681 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 005D 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 005D 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 2681 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 005D 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 005D 2681;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 005D 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005B 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 2681 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 005B 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 005D 2681;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 2680 005D 2681;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 2680 005D 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 2680 005D 2681;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n\n# L, L, ON, L and ()[]\n0061 0028 0062 2680 0063 0029 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0063 0029 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 0063 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 0063 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 0063 005B 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 0063 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0063 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 0063 005B 005D;1;1;1 2 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 005B 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 0063 005D;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 2680 005B 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 005D 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 005B 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 2680 0063 005D;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 005B 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 2680 005D 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 005B 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 005D 2680 0063;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 005B 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 2680 0063 005D;1;1;1 2 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0061 0029 005B 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 2680 005D 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 005D 2680 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 2680 0063 005D;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 005B 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 2680 005D 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 0029 0061 005B 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 005D 2680 0063;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n\n# L, L, ON, R and ()[]\n0061 0028 0062 2680 05D0 0029 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 05D0 0029 005B 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0029 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 05D0 005B 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 05D0 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 2680 005B 005D 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 05D0 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 2680 005D 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 005D 2680 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 05D0 005B 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 05D0 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 2680 005B 005D 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 05D0 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 2680 005D 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 005D 2680 05D0;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 05D0 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 2680 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 005B 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 005D 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 0029 0062 2680 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 05D0 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 05D0 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 2680 005B 005D 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 2680 05D0 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 2680 005D 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 005D 2680 05D0;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 2680 05D0 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 2680 005D 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 005D 2680 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 2680 05D0 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 2680 005D 05D0;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0029 0061 005B 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 005D 2680 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n\n# L, L, L, ON and ()[]\n0061 0028 0062 0029 0063 2680 005B 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 2680 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 2680 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 005D 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 005B 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 2680 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 005D 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 2680 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 005D 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 2680 005D;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0061 0029 0062 005B 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 005D 2680;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, L, L, L and ()[]\n0061 0028 0062 0029 0063 005B 0064 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 0064 005D;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 005D 0064;1;1;1 2 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# L, L, L, R and ()[]\n0061 0028 0062 0029 0063 05D0 005B 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 05D0 005B 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 0063 005B 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 0029 005B 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 05D0 005D;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 0063 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 05D0 005D;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 0063 005D 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 05D0 005D;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 0063 005D 05D0;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, L, R, ON and ()[]\n0061 0028 0062 05D0 2680 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 2680 0029 005B 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 2680 005B 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 2680 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 005D 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 2680 005B 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 005B 2680 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 005B 005D 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 05D0 2680 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 05D0 005D 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 2680 005B 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 005B 2680 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 005B 005D 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 05D0 2680 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 05D0 005D 2680;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 05D0 2680 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 05D0 005D 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 2680 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 2680 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 005B 2680 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 005B 005D 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 05D0 2680 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 05D0 005D 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 05D0 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 05D0 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 05D0 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 05D0 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, R, L and ()[]\n0061 0028 0062 05D0 0063 0029 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0063 0029 005B 005D;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 0063 005B 005D;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 0063 005D;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 005D 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 0063 005B 005D;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 005B 0063 005D;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 05D0 005B 005D 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 05D0 0063 005D;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 05D0 005D 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 0063 005B 005D;1;1;2 2 2 2 1 2 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 005B 0063 005D;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 05D0 005B 005D 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 05D0 0063 005D;1;1;2 2 2 2 1 1 2 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 05D0 005D 0063;1;1;2 2 2 2 1 1 1 2;7 6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 05D0 0063 005D;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 05D0 005D 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0063 005B 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 0063 005B 005D;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 005B 0063 005D;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 05D0 005B 005D 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 05D0 0063 005D;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 05D0 005D 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 05D0 0063 005D;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 05D0 005D 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 05D0 0063 005D;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 05D0 005D 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R, R and ()[]\n0061 0028 0062 05D0 0029 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 05D1 005B 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 05D1 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0029 005B 005D 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0062 0029 05D0 005B 05D1 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0062 0029 05D0 005B 005D 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0029 005B 05D0 005D 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 0062 05D0 005B 05D1 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0029 0062 05D0 005B 005D 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 0062 005B 05D0 005D 05D1;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 0029 005B 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 0062 05D0 005D 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 05D1 005D;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 0062 05D0 005B 05D1 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0029 0062 05D0 005B 005D 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 0062 005B 05D0 005D 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 0062 05D0 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 0062 05D0 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and ()[]\n0061 0028 05D0 2680 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 2681 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 005B 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 005B 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 2681 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 005B 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 005B 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, L and ()[]\n0061 0028 05D0 2680 0062 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0062 0029 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 2680 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0062 0029 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 2680 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 2680 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, ON, R and ()[]\n0061 0028 05D0 2680 05D1 0029 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 2680 05D1 0029 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 05D1 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0029 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 05D1 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 2680 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 0029 05D0 2680 05D1 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 2680 005B 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 2680 005B 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 005B 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 005B 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 005D 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 005B 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0061 0028 0029 005B 05D0 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 2680 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 005D 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 2680 05D1 0029 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 05D1 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0029 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 05D1 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 2680 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 0029 05D0 2680 05D1 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 2680 005B 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 2680 005B 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 005B 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 005B 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 005D 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 005B 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0061 0029 005B 05D0 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 2680 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 005D 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 005B 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 0061 05D0 2680 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 2680 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 2680 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 05D1 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 005B 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 005D 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 005B 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 005D 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 005B 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 0061 005B 05D0 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 2680 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 005D 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0029 005B 0061 05D0 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 2680 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 005D 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, ON and ()[]\n0061 0028 05D0 0062 2680 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 2680 0029 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 2680 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 2680 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 005D 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 2680 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 2680 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 005D 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 2680 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 2680 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 005D 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 2680 0029 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 2680 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 2680 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 005D 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 2680 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 2680 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 005B 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 2680 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, L and ()[]\n0061 0028 05D0 0062 0029 0063 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 0063 005B 005D;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 0063 005D;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 005D 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 0063 005D;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 05D0 0029 0062 005B 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 005D 0063;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 05D0 0029 005B 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 0062 005D 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 0063 005D;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 0029 05D0 0062 005B 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 005D 0063;1;1;2 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0061 0028 0029 05D0 005B 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 0062 005D 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 0062 005D 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0063 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 0063 005B 005D;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 0063 005D;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 005D 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 0063 005D;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 05D0 0029 0062 005B 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 005D 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 05D0 0029 005B 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 0063 005D;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 05D0 0062 005B 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 005D 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 0029 05D0 005B 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 0062 005D 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 0063 005D;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 0061 05D0 0062 005B 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 0061 05D0 005B 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 0062 005D 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# L, R, L, R and ()[]\n0061 0028 05D0 0062 05D1 0029 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 05D1 0029 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 05D1 005B 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 05D1 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0029 005B 005D 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 05D1 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 05D1 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 0062 005B 005D 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 05D1 005B 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 05D1 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 0062 005B 005D 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 005B 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0029 005B 05D0 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 05D1 0029 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 05D1 005B 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 05D1 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0029 005B 005D 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 05D1 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 05D1 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 0062 005B 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 05D1 005B 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 05D1 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 0062 005B 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 005B 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0029 005B 05D0 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 005B 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 05D1 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 05D1 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 0062 005B 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 005B 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 0061 005B 05D0 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 0061 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 0061 05D0 0062 005D 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, ON and ()[]\n0061 0028 05D0 0029 05D1 2680 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 2680 005B 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 005B 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 005B 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 2680 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 005B 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 005D 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0029 05D0 005B 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 2680 005B 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 005B 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 005B 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 2680 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 005B 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 005D 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0029 05D0 005B 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 2680 005D;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 005B 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 005D 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 0061 05D0 005B 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, L and ()[]\n0061 0028 05D0 0029 05D1 0062 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 0062 005B 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 0062 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 005B 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 05D1 005B 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 05D1 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 05D1 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0029 05D0 005B 05D1 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 005D 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0029 05D0 005B 05D1 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 0062 005B 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 0062 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 005B 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 05D1 005B 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 05D1 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 05D1 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0029 05D0 005B 05D1 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 005D 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0029 05D0 005B 05D1 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 0061 05D0 005B 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 005D 0062;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0029 0061 05D0 005B 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R, R and ()[]\n0061 0028 05D0 0029 05D1 005B 05D2 005D;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 05D0 0029 05D1 005B 05D2 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 05D0 0029 05D1 005B 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0029 005B 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0061 0028 0029 05D0 005B 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 05D2 005D;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 05D0 0029 05D1 005B 05D2 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 05D0 0029 05D1 005B 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0029 005B 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0061 0029 05D0 005B 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0029 0061 05D0 005B 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ()[]\n05D0 2680 0028 2681 0029 2682 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 2682 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 2682 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and ()[]\n05D0 2680 0028 2681 0061 0029 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and ()[]\n05D0 2680 0028 2681 05D1 0029 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 2681 05D1 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 2681 0029 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 0029 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 0029 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 05D1 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 2681 005B 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 05D1 005D;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 005B 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 005D 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 005B 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 005D 2681 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 005B 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 005D 2681 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 005D 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and ()[]\n05D0 2680 0028 0061 2681 0029 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 2681 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 2681 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 2681 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 2681 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 2681 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, L and ()[]\n05D0 2680 0028 0061 0029 0062 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 2680 0028 0029 0061 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 2680 0028 0029 005B 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0062 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 2680 0029 0061 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 2680 0029 005B 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 2680 0061 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 2680 005B 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0062 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 2680 0029 0061 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 2680 0029 005B 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 2680 0061 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 2680 005B 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 05D0 2680 0061 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0029 05D0 2680 005B 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, L, R and ()[]\n05D0 2680 0028 0061 05D1 0029 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 05D1 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0029 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 05D1 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0029 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 05D1 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0029 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 05D1 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 0061 005B 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and ()[]\n05D0 2680 0028 05D1 2681 0029 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 2681 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0029 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 2681 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0029 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 2681 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 2680 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 2681 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 005B 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 005B 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 2681 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 005B 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 2681 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 005D 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 2681 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 005D 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 2681 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 005D 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 2681 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 005D 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 2681 005D;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 005B 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 005D 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 2680 005B 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 2681 005D;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 005D 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 005B 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 2681 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 005B 05D0 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 005D 2681;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 005B 05D0 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, L and ()[]\n05D0 2680 0028 05D1 0061 0029 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 05D1 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 2680 0028 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 0061 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 05D1 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 2680 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 0061 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0029 2680 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 0061 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 2680 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 2680 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 0061 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 005B 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 005B 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 005B 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 0061 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 005D 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 0061 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 005D 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 0061 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 005D 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 005B 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 0061 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 005D 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0029 05D0 2680 05D1 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 2680 005B 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 005D 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 2680 005B 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 005D 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 005B 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 0061 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 005B 05D0 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 005D 0061;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0029 005B 05D0 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R, R and ()[]\n05D0 2680 0028 05D1 0029 05D2 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 0029 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 0029 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 005B 005D;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0029 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 05D2 005D;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 2680 0029 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 005D 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 2680 0029 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0029 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 05D2 005D;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 2680 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 005D 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 2680 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 2680 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 05D2 005D;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 05D1 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 005D 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 05D1 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 2680 005B 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 2680 05D1 005D 05D2;0;0;0 0 0 1 1 1 0 1;0 1 2 5 4 3 6 7\n0028 0029 005B 05D0 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and ()[]\n05D0 0028 0061 2680 0029 2681 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 2681 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, L and ()[]\n05D0 0028 0061 2680 0062 0029 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0062 0029 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 005B 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 2680 005B 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 005B 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 2680 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 005B 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 2680 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 005B 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 005D 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 005B 0061 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n05D0 0028 0029 005B 0061 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 2680 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 005D 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0029 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0062 0029 005B 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 005B 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 2680 005B 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 005B 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 2680 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 005B 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 2680 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 005B 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 005D 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 005B 0061 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 05D0 0029 005B 0061 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 2680 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 005D 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0062 005B 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 0062 005B 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 005B 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 2680 005B 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 005B 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 2680 0062 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 005B 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 2680 005D 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 005B 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 005D 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 005B 0061 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 05D0 005B 0061 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 2680 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 005D 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0029 005B 05D0 0061 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 2680 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 005D 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, ON, R and ()[]\n05D0 0028 0061 2680 05D1 0029 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 05D1 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 2680 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 2680 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 05D1 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0029 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 05D1 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 2680 005B 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 2680 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 005B 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 05D1 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 2680 005B 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, ON and ()[]\n05D0 0028 0061 0029 0062 2680 005B 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 2680 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 0062 2680 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n05D0 0028 0029 0061 005B 0062 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 0062 005D 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0061 0029 0062 2680 005B 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 2680 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 0062 2680 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0029 0061 005B 0062 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 0062 005D 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 05D0 0061 005B 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 0062 2680 005D;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 005B 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 0062 005D 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# R, L, L, L and ()[]\n05D0 0028 0061 0029 0062 005B 0063 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 0063 005D;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0061 0029 0062 005B 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0061 0029 005B 0062 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 05D0 0061 0029 0062 005B 0063 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 0063 005D;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0061 0029 0062 005B 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0061 0029 005B 0062 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 0062 005D 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0029 05D0 0061 005B 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# R, L, L, R and ()[]\n05D0 0028 0061 0029 0062 05D1 005B 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 05D1 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 05D1 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 0062 005B 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 0062 005D 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0061 0029 0062 05D1 005B 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 05D1 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 05D1 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 0062 005B 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 0062 005D 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0029 05D0 0061 005B 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 0062 005D 05D1;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# R, L, R, ON and ()[]\n05D0 0028 0061 05D1 2680 0029 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 2680 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 2680 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 2680 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 005D 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 2680 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 2680 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 005B 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 005D 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 005B 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 2680 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 2680 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 005B 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 005D 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 005B 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 2680 0029 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 2680 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 2680 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 005D 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 2680 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 005B 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 005B 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 2680 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 005B 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 005B 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 2680 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 005B 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 005B 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, L and ()[]\n05D0 0028 0061 05D1 0062 0029 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0062 0029 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 005B 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 0062 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 005D 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 0062 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 005D 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 05D1 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 005B 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 0062 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 005D 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 05D1 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0062 0029 005B 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 0062 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 005D 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 0062 005B 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 0062 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 005B 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 05D1 005B 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 005B 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 0062 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 05D1 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 005B 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 0062 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 05D1 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 005D 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R, R and ()[]\n05D0 0028 0061 05D1 0029 05D2 005B 005D;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 05D2 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 05D2 005D;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 005D 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0029 005B 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 05D2 005D;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0061 0029 05D1 005B 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 005D 05D2;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0061 0029 05D1 005B 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1 005D 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0029 005B 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 05D2 005D;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0029 0061 05D1 005B 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 005D 05D2;0;0;1 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n05D0 0028 0029 0061 05D1 005B 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1 005D 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 0061 005B 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 0061 05D1 005D 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 005B 005D;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 05D2 005B 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 05D2 005D;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 005D 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0029 005B 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 05D2 005D;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0061 0029 05D1 005B 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 005D 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0061 0029 05D1 005B 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0029 005B 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 05D2 005D;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 0061 05D1 005B 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 005D 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 0029 0061 05D1 005B 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 0061 005B 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 0061 05D1 005D 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 05D2 005D;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 05D0 0061 05D1 005B 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0029 05D0 0061 05D1 005B 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 0061 005B 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 0061 05D1 005D 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 005B 05D0 0061 05D1 005D 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0029 005B 05D0 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and ()[]\n05D0 0028 05D1 2680 0029 2681 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 2681 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 2681 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 2681 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 005D 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 005D 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 2681 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 005D 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 005D 2681;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 005B 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 2681 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 005B 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 005D 2681;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 005B 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 005D 2681;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 005D 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 005D 2681;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 005B 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, L and ()[]\n05D0 0028 05D1 2680 0061 0029 005B 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0061 0029 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 2680 0029 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 005B 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 0061 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 005D 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 2680 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 0061 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 005D 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 2680 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 005B 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 0061 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 005D 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 2680 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 0061 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 005D 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 2680 0061;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 0061 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 005B 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0029 005B 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 0061 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 005D 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 2680 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 0061 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 005D 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D 2680 0061;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 0061 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 005D 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D 2680 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 0061 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 005D 0061;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0029 05D0 005B 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D 2680 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0029 05D0 005B 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, ON, R and ()[]\n05D0 0028 05D1 2680 05D2 0029 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 05D2 0029 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 0029 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 0029 2680 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 005B 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0029 05D1 2680 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 005B 005D;0;0;0 1 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 05D0 0029 05D1 2680 05D2 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 05D2 005D;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 2680 005B 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 005D 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 2680 005B 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 05D2 005D;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 005B 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 005D 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 005B 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 005D 2680 05D2;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 005B 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 05D2 005D;0;0;0 1 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 05D0 0029 005B 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 2680 005D 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 005D 2680 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 05D2 005D;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 2680 005D 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 005D 2680 05D2;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0029 05D0 005B 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, ON and ()[]\n05D0 0028 05D1 0061 2680 0029 005B 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 2680 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 005B 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 2680 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 2680 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 005D 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 005B 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 2680 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 2680 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 005D 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 2680 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 005D 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 005B 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 2680 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 2680 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 005D 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 2680 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 005D 2680;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 2680 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 005D 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 005B 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 2680 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 2680 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 005D 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 2680 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 005D 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, L and ()[]\n05D0 0028 05D1 0061 0029 0062 005B 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 0062 005B 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 0062 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 005D 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 0062 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 005D 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 005D 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 0062 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 005D 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 005D 0062;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 005D 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 0062 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 0062 005D;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 005D 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 005D 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, R, L, R and ()[]\n05D0 0028 05D1 0061 05D2 0029 005B 005D;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 05D2 0029 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 005B 005D;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 05D2 005B 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 05D2 005D;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 005D 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 0029 005B 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 005B 005D;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 05D2 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 05D2 005D;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 005D 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 0061 005B 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 05D2 005D;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061 005D 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 005B 005D;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 05D2 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 05D2 005D;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 005D 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 0061 005B 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 05D2 005D;0;0;1 1 1 1 0 0 1 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061 005D 05D2;0;0;1 1 1 1 0 0 0 1;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 05D2 005D;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 005B 05D1 0061 005D 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0029 005B 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 005B 005D;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 05D2 005B 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 05D2 005D;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 005D 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 0061 005B 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 05D2 005D;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061 005D 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 05D2 005D;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 005B 05D1 0061 005D 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0029 005B 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 05D2 005D;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0029 05D0 005B 05D1 0061 005D 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0029 05D0 005B 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, ON and ()[]\n05D0 0028 05D1 0029 05D2 2680 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 2680 005B 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 2680 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 005B 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 005D 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 005B 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 2680 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0029 005B 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 2680 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 05D1 005B 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 2680 005D;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 005B 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 005D 2680;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0029 05D1 005B 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, L and ()[]\n05D0 0028 05D1 0029 05D2 0061 005B 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 0061 005B 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 005B 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 0029 05D2 005B 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 0061 005D;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 05D1 0029 005B 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0029 005B 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 0061 005D;0;0;1 1 1 1 0 1 0 0;3 2 1 0 4 5 6 7\n05D0 0028 0029 05D1 005B 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0029 05D1 005B 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 0061 005D;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0029 05D1 005B 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 005D 0061;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0029 05D1 005B 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R, R and ()[]\n05D0 0028 05D1 0029 05D2 005B 05D3 005D;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 05D3 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2 005D 05D3;0;0;0 1 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 05D0 0029 05D1 005B 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ([])\n0028 005B 005D 0029;0;0;0 0 0 0;0 1 2 3\n0028 005B 005D 0029;1;1;1 1 1 1;3 2 1 0\n\n# ON and ([])\n2680 0028 005B 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 2680 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 2680 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 005D 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 005D 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 005D 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 005D 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L and ([])\n0061 0028 005B 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 005D 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 005B 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 005D 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005B 0061 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0061 005D 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005B 005D 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 005D 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005B 005D 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 005D 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R and ([])\n05D0 0028 005B 005D 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 005D 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 05D0 005D 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 005D 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005B 005D 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 005D 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005B 005D 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON and ([])\n2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L and ([])\n2680 0028 0061 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005B 005D 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0061 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005B 005D 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 2680 005D 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 005D 2680 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 005D 0029 2680 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R and ([])\n2680 0028 05D0 005B 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005B 005D 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005B 005D 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005B 005D 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005B 005D 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 2680 005D 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 2680 005D 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 005D 2680 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 005D 2680 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 005D 0029 2680 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON and ([])\n0061 2680 0028 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 2680 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 2680 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 005D 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 005D 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 005D 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 005D 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 2680 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 2680 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 005D 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 005D 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 005D 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 005D 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 2680 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 005D 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 005D 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 005D 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 005D 0061 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 005D 0061 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, L and ([])\n0061 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0062 005D 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 005D 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 005D 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 005D 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 005D 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 005D 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# L, R and ([])\n0061 0028 05D0 005B 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005B 005D 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005B 005D 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 0061 005D 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0061 005D 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 005D 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 005D 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON and ([])\n05D0 2680 0028 005B 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 2680 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 005D 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 005D 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 2680 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 005D 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 005D 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 005D 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 2680 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 005D 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 005D 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 005D 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 005D 05D0 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 005D 05D0 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L and ([])\n05D0 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 005B 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005B 005D 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 05D0 005D 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 005D 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R and ([])\n05D0 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 005D 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 005D 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON and ([])\n2680 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L and ([])\n2680 0028 2681 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 2680 0029 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R and ([])\n2680 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 2681 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 2681 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 2680 0029 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON and ([])\n2680 0028 0061 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L and ([])\n2680 0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 005D 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 005D 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, L, R and ([])\n2680 0028 0061 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0061 005D 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 005D 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0061 005D 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 005D 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0061 005D 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 005D 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 2680 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON and ([])\n2680 0028 05D0 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 05D0 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 05D0 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L and ([])\n2680 0028 05D0 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 2680 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R and ([])\n2680 0028 05D0 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 2680 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 005D 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON and ([])\n0061 2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L and ([])\n0061 2680 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 0029 2680 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 005D 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 005D 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 005D 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 2680 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 005D 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005B 0061 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005B 005D 0061 2680 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 0061 0029 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R and ([])\n0061 2680 0028 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 005D 0029 2680 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 005D 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 2680 005D 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 2680 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 005D 2680 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 005D 0029 2680 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 2680 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 2680 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 005D 2680 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 005D 0029 2680 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 2680 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 0061 2680 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 0061 0029 2680 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON and ([])\n0061 0028 0062 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 005B 0062 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 005D 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 2680 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0029 2680;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 0062 2680 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 0062 0029 2680;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L, L and ([])\n0061 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, L, R and ([])\n0061 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 005D 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 005D 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 005D 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 005D 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 005D 0062 0029 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, ON and ([])\n0061 0028 05D0 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 005D 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 005D 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 05D0 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 05D0 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 005D 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 005D 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 05D0 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 05D0 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 05D0 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 05D0 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 05D0 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 05D0 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L and ([])\n0061 0028 05D0 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 005D 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 005D 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 005D 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 005D 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 005D 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 005D 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 005D 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R and ([])\n0061 0028 05D0 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 005B 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 0061 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON and ([])\n05D0 2680 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L and ([])\n05D0 2680 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0029 2680 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0029 2680 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0029 2680 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0029 2680 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R and ([])\n05D0 2680 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0029 2680 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005B 005D 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON and ([])\n05D0 0028 0061 2680 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L and ([])\n05D0 0028 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 005D 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 005D 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, L, R and ([])\n05D0 0028 0061 05D1 005B 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, ON and ([])\n05D0 0028 05D1 2680 005B 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 05D1 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 05D1 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029 2680;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 05D1 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029 2680;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L and ([])\n05D0 0028 05D1 0061 005B 005D 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R and ([])\n05D0 0028 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and ([])\n2680 0028 2681 005B 2682 005D 2683 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 2683 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 005D 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ([])\n2680 0028 2681 005B 2682 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ([])\n2680 0028 2681 005B 2682 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ([])\n2680 0028 2681 0061 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 2682 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 2682 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 2682 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 2682 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 2682 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 2682 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and ([])\n2680 0028 2681 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 2681 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 2681 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and ([])\n2680 0028 2681 0061 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ([])\n2680 0028 2681 05D0 2682 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 2682 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 2682 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 2682 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 2682 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 2682 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and ([])\n2680 0028 2681 05D0 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and ([])\n2680 0028 2681 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 2681 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 2681 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ([])\n2680 0028 0061 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 2681 0029 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and ([])\n2680 0028 0061 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0062 005B 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 005B 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n2680 0028 005B 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0062 005B 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 005B 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 2680 005B 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 2680 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 2681 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 2680 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 2681 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 005D 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 2681 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 0029 2681 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and ([])\n2680 0028 0061 2681 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and ([])\n2680 0028 0061 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0062 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0062 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 005B 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0062 2681 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0062 0029 2681;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 005B 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0062 2681 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0062 0029 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, L and ([])\n2680 0028 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n2680 0028 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 2680 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, L, R and ([])\n2680 0028 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0062 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0062 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, ON and ([])\n2680 0028 0061 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, L and ([])\n2680 0028 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0062 005B 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0062 005B 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R, R and ([])\n2680 0028 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0061 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0061 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0061 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0061 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ([])\n2680 0028 05D0 2681 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 0029 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and ([])\n2680 0028 05D0 2681 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and ([])\n2680 0028 05D0 2681 05D1 005B 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 005B 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n2680 0028 005B 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 005B 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 005B 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 2680 005B 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 2680 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 2680 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 005D 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 2681 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0029 2681 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and ([])\n2680 0028 05D0 0061 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, L and ([])\n2680 0028 05D0 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, L, R and ([])\n2680 0028 05D0 0061 05D1 005B 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 005B 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 2680 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and ([])\n2680 0028 05D0 005B 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 2681 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 0029 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, L and ([])\n2680 0028 05D0 005B 05D1 0061 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 005D 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0061 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R, R and ([])\n2680 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ([])\n0061 2680 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 2682 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 2682 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and ([])\n0061 2680 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0062 005D 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 2681 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 2681 0062 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 2681 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0029 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 2681 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 2681 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0029 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0029 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and ([])\n0061 2680 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and ([])\n0061 2680 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 2681 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 005B 005D 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 2681 005D 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 2681 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 0029 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 2681 005D 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 2681 005D 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0062 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 005B 0061 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 2681 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 2681 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 0029 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0062 2681 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0062 0029 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0062 2681 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 005D 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0062 0029 2681;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, L, L and ([])\n0061 2680 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 0029 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0062 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 005B 0061 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 0063 0029;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 0029 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0062 0029 0063;1;1;1 1 1 2 2 2 1 2;7 6 3 4 5 2 1 0\n\n# L, ON, L, R and ([])\n0061 2680 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 05D0 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 005B 005D 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 05D0 005D 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 05D0 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 005D 0029 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0062 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 005B 0061 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 05D0 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 05D0 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 005D 0029 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0062 05D0 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 005D 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 0062 0029 05D0;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, R, ON and ([])\n0061 2680 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, R, L and ([])\n0061 2680 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0062 005B 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0062 005B 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0062 005B 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R, R and ([])\n0061 2680 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 2680 0028 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 2680 0028 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 2680 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 2680 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 2680 05D0 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 2680 05D0 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 2680 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and ([])\n0061 0028 0062 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 2681 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0029 2681;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 2681 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 0029 2681;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 2680 0029 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 2680 0029 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 2680 0029 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, L and ([])\n0061 0028 0062 2680 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0063 005D 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 0029 0063;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 2680 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 2680 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0029 2680 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 005B 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 2680 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 0029 2680 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 2680 0063 0029;1;1;1 1 2 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 0061 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 2680 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 0029 2680 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, ON, R and ([])\n0061 0028 0062 2680 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 05D0 005B 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 05D0 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 05D0 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 05D0 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 0029 2680 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 005B 0062 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 05D0 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 005D 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 2680 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 2680 0029 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 0029 2680 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, L, ON and ([])\n0061 0028 0062 005B 0063 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 2680 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 2680 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 0029 2680;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n\n# L, L, L, L and ([])\n0061 0028 0062 005B 0063 005D 0064 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0064 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 0029 0064;1;1;1 2 2 2 2 2 1 2;7 6 1 2 3 4 5 0\n\n# L, L, L, R and ([])\n0061 0028 0062 005B 0063 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 05D0 005D 0029;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 0063 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 05D0 0029;1;1;2 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0061 0028 0062 005B 0063 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 05D0 0029;1;1;2 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0061 0028 0062 005B 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 05D0 0029;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 005B 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 05D0 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 0063 0029 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n\n# L, L, R, ON and ([])\n0061 0028 0062 05D0 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 2680 005B 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 2680 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 005D 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 005D 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 2680 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 05D0 2680 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 05D0 0029 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 2680 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 05D0 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 05D0 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 05D0 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 05D0 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 2680 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 05D0 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 05D0 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, R, L and ([])\n0061 0028 0062 05D0 0063 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0063 005B 005D 0029;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0063 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0063 005D 0029;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 005D 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 005D 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0063 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0063 005D 0029;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 05D0 0063 0029;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 05D0 0029 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0063 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0063 005D 0029;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 0063 0029;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 05D0 0063 0029;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 05D0 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 05D0 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 05D0 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 0063 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0063 005D 0029;1;1;1 2 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 0063 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 0063 0029;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 005D 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 05D0 0063 0029;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 005B 0062 005D 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 05D0 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 05D0 0063 0029;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 05D0 0029 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 05D0 0063 0029;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 05D0 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R, R and ([])\n0061 0028 0062 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0062 05D0 005B 05D1 005D 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0062 05D0 005B 005D 05D1 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 005D 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 05D1 0029;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 005D 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 005D 05D0 0029 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 05D1 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 005D 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 005D 05D0 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 0062 05D0 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 005D 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 005D 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 0062 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 005B 0061 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 0062 05D0 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and ([])\n0061 0028 05D0 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, L and ([])\n0061 0028 05D0 2680 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0062 005B 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 2680 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0062 005B 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 2680 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, ON, R and ([])\n0061 0028 05D0 2680 05D1 005B 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 2680 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 2680 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 2680 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 005B 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 005B 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 005B 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 005B 05D0 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0061 0028 005B 005D 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 005B 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 2680 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 2680 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 2680 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 005B 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 005B 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 005B 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 005B 05D0 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0061 005B 005D 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0061 05D0 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 0061 005D 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 005D 0061 05D0 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, ON and ([])\n0061 0028 05D0 0062 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 2680 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 2680 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 2680 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 0029 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 2680 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 2680 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 2680 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 0029 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0062 2680 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0062 0029 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 2680 005B 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 2680 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 2680 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 0029 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 2680 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 2680 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 2680 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 0029 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0062 2680 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0062 0029 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 2680 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, L and ([])\n0061 0028 05D0 0062 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0063 005D 0029;1;1;2 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 0063 0029;1;1;2 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 0029 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 0063 0029;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 0029 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0062 0029 0063;1;1;2 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0063 005D 0029;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 0063 0029;1;1;1 2 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 0029 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 0063 0029;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 0063 0029;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 0029 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0062 0029 0063;1;1;1 2 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 0063 0029;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 0029 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 0029 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# L, R, L, R and ([])\n0061 0028 05D0 0062 05D1 005B 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 05D1 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 05D1 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 05D1 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 005D 0029 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 05D1 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 005D 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 005D 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 05D1 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 05D1 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 005D 0029 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0062 05D1 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 005D 05D0 0062 0029 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 005B 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 05D1 005B 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 05D1 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 05D1 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 005D 0029 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 05D1 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 005D 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 005D 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 05D1 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 05D1 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 005D 0029 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0062 05D1 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 005D 05D0 0062 0029 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 05D1 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 005D 0029 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0062 05D1 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 005D 05D0 0062 0029 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 0061 05D0 0062 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 0061 05D0 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, ON and ([])\n0061 0028 05D0 005B 05D1 2680 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 005B 05D1 2680 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 005D 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 05D1 005D 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 005D 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 05D1 005D 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 2680 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 005B 05D1 2680 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 05D1 005D 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 05D1 005D 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, L and ([])\n0061 0028 05D0 005B 05D1 0062 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 05D1 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 005D 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 05D1 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 005D 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 05D1 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 005D 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 05D1 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0062 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 05D1 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 05D1 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 05D1 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 0062 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 005D 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 0029 0062;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 05D1 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R, R and ([])\n0061 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 005B 05D1 005D 05D2 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 05D1 005D 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 005B 05D1 005D 05D2 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 05D1 005D 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ([])\n05D0 2680 0028 2681 005B 2682 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 2682 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and ([])\n05D0 2680 0028 2681 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0061 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and ([])\n05D0 2680 0028 2681 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 05D1 005D 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 2681 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0029 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and ([])\n05D0 2680 0028 0061 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, L and ([])\n05D0 2680 0028 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, L, R and ([])\n05D0 2680 0028 0061 05D1 005B 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 005B 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 005B 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and ([])\n05D0 2680 0028 05D1 2681 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 005B 005D 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 2681 005D 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 2681 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 0029 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 2681 005D 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 2681 005D 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 2681 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 2681 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 0029 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 2681 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 0029 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 2681 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 005D 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 0029 2681;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 005D 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, L and ([])\n05D0 2680 0028 05D1 0061 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0061 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0061 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0061 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0061 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0061 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 005B 005D 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0061 005D 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 0061 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 0029 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0061 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0061 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0061 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 0061 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 0029 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 0061 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 005D 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 0029 0061;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 005D 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R, R and ([])\n05D0 2680 0028 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 005D 0029 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 005B 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 005B 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 05D2 0029;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 005D 0029 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 005D 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 2680 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 2680 05D1 0029 05D2;0;0;0 0 0 1 1 1 0 1;0 1 2 5 4 3 6 7\n0028 005B 005D 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and ([])\n05D0 0028 0061 2680 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, L and ([])\n05D0 0028 0061 2680 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0062 005B 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 005B 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 005B 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 2680 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 005B 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 005B 0061 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n05D0 0028 005B 005D 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0062 005B 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 005B 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 005B 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 2680 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 005B 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 005B 0061 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 05D0 005B 005D 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 05D0 0061 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 05D0 005D 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 2680 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 005D 05D0 0061 2680 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, ON, R and ([])\n05D0 0028 0061 2680 05D1 005B 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 2680 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 005B 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 2680 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, ON and ([])\n05D0 0028 0061 005B 0062 2680 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 2680 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 005B 0062 005D 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 0062 005D 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0062 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0062 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 005B 0061 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 2680 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 2680 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 005B 0062 005D 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 0062 005D 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0062 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0062 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 005B 0061 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, L and ([])\n05D0 0028 0061 005B 0062 005D 0063 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 005B 0062 005D 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n05D0 0028 005B 0061 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 005D 0063 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 005B 0062 005D 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 05D0 005B 0061 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, L, L, R and ([])\n05D0 0028 0061 005B 0062 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0062 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 0062 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 005D 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0062 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 0062 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 005B 0061 005D 0062 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 0062 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 005D 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0062 05D1 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 0062 0029 05D1;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 005B 0061 005D 0062 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0062 05D1 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 0062 0029 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, ON and ([])\n05D0 0028 0061 05D1 2680 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 2680 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 2680 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 2680 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 2680 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 0029 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 005B 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 2680 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 2680 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 2680 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 2680 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 0029 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 2680 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 0029 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 2680 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, L and ([])\n05D0 0028 0061 05D1 0062 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0062 005B 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0062 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 0062 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0062 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0062 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 0062 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 0062 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 0029 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 005B 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0062 005B 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0062 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0062 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0062 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 0062 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 0029 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 0062 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 0029 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0062 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 0062 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 0062 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 0029 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 0062 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 05D1 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 0029 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 05D1 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R, R and ([])\n05D0 0028 0061 05D1 005B 05D2 005D 0029;0;0;1 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n05D0 0028 0061 05D1 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 05D2 0029;0;0;1 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n05D0 0028 0061 05D1 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 005D 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 005D 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 005D 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 005D 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 005D 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 0061 05D1 0029 05D2;0;0;1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 05D2 005D 0029;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0061 05D1 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 05D2 0029;0;0;0 1 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 05D0 0061 05D1 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 005D 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 05D2 0029;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 005D 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 005D 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 05D2 0029;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 005D 0029 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 005D 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 0061 05D1 0029 05D2;0;0;0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 05D2 0029;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 005D 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 005D 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 0061 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 005D 05D0 0061 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 005B 005D 05D0 0061 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and ([])\n05D0 0028 05D1 2680 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 2681 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 2681 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 0029 2681;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 0029 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 0029 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 0029 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, L and ([])\n05D0 0028 05D1 2680 0061 005B 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0061 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0061 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0061 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0061 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 2680 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0061 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029 2680 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 0029 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029 2680 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, ON, R and ([])\n05D0 0028 05D1 2680 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 05D2 005D 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 005D 0029 05D2;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 2680 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0029 2680 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 005B 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 2680 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0029 2680 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 05D2 0029;0;0;0 0 1 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 05D0 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 2680 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0029 2680 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, ON and ([])\n05D0 0028 05D1 0061 2680 005B 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 2680 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 005D 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 005D 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 2680 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 2680 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 0029 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 2680 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 2680 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 0029 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 2680 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 0029 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 2680 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 2680 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 0029 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, L and ([])\n05D0 0028 05D1 0061 005B 0062 005D 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 005B 005D 0062 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 005B 005D 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 0062 0029;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 0029 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 0062 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 0029 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 0029 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 0062 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 0029 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 0029 0062;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 0029 0062;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 0029 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, R, L, R and ([])\n05D0 0028 05D1 0061 05D2 005B 005D 0029;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 05D2 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 05D2 005D 0029;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 05D2 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 005D 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 005D 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 05D2 005D 0029;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 005D 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 05D2 0029;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 0061 0029 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 005D 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 05D2 005D 0029;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 05D2 0029;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 005D 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 05D2 0029;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 0061 0029 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 05D2 0029;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 005D 05D1 0061 0029 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 05D2 005D 0029;0;0;0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 05D2 0029;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 005D 0029 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 05D1 0061 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 05D2 0029;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 0061 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 05D2 0029;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 005D 05D1 0061 0029 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 05D2 0029;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 005D 05D1 0061 0029 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, ON and ([])\n05D0 0028 05D1 005B 05D2 2680 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 05D2 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 2680 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 0029 2680;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, L and ([])\n05D0 0028 05D1 005B 05D2 0061 005D 0029;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 05D2 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0061 0029;0;0;1 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n05D0 0028 05D1 005B 05D2 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 05D2 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0061 0029;0;0;1 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n05D0 0028 05D1 005B 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0061 0029;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 0061 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 0029 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R, R and ([])\n05D0 0028 05D1 005B 05D2 005D 05D3 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 05D3 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 005D 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 005D 05D2 0029 05D3;0;0;0 1 1 1 1 1 0 1;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ([)]\n0028 005B 0029 005D;0;0;0 0 0 0;0 1 2 3\n0028 005B 0029 005D;1;1;1 1 1 1;3 2 1 0\n\n# ON and ([)]\n2680 0028 005B 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 2680 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 2680 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 0029 2680 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0029 2680 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 0029 005D 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0029 005D 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L and ([)]\n0061 0028 005B 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 0029 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 005B 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 0029 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005B 0061 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0061 0029 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005B 0029 0061 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0029 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005B 0029 005D 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0029 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R and ([)]\n05D0 0028 005B 0029 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 0029 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 05D0 0029 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 0029 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005B 0029 05D0 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 0029 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005B 0029 005D 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON and ([)]\n2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L and ([)]\n2680 0028 0061 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005B 0029 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005B 0029 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 2680 0029 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 0029 2680 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 0029 2680 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 0029 005D 2680 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R and ([)]\n2680 0028 05D0 005B 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005B 0029 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005B 0029 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005B 0029 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005B 0029 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 2680 0029 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 2680 0029 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 0029 2680 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0029 2680 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0029 005D 2680 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON and ([)]\n0061 2680 0028 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 2680 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 2680 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 0029 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0029 2680 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 0029 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0029 005D 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 2680 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0029 2680 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 0029 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0029 005D 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 2680 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 0029 2680 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 0029 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 0029 005D 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0029 0061 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 0061 2680 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 0029 0061 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 0061 005D 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# L, L and ([)]\n0061 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0062 0029 005D;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0029 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0029 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 0029 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 0029 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0029 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# L, R and ([)]\n0061 0028 05D0 005B 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005B 0029 05D0 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005B 0029 005D 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 0061 0029 05D0 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0061 0029 005D 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 0029 0061 05D0 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0029 0061 005D 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, ON and ([)]\n05D0 2680 0028 005B 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 2680 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0029 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 005D 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0029 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 2680 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0029 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 005D 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0029 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 2680 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0029 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 005D 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0029 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0029 05D0 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 05D0 005D 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0029 05D0 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L and ([)]\n05D0 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 0061 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005B 0029 005D 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 0061 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 05D0 0029 005D 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 0029 05D0 0061 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 0029 05D0 005D 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R and ([)]\n05D0 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON and ([)]\n2680 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L and ([)]\n2680 0028 2681 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 2680 005D 2681 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R and ([)]\n2680 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0029 2680 005D 2681 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON and ([)]\n2680 0028 0061 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L and ([)]\n2680 0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 005B 2680 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 005B 0029 2680 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, L, R and ([)]\n2680 0028 0061 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0029 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0029 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0029 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0029 2680 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON and ([)]\n2680 0028 05D0 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 05D0 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 05D0 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L and ([)]\n2680 0028 05D0 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 2680 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R and ([)]\n2680 0028 05D0 005B 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 005B 2680 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 005B 0029 2680 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON and ([)]\n0061 2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 2680 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L and ([)]\n0061 2680 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 005D 2680 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0029 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 0029 005D;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 2680 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 0029 005D;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 2680 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 2680 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 005D 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005B 0061 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 2680 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 2680 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 005D 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 2680 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005B 0029 0061 2680 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 2680 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 005B 0029 0061 005D 2680 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 005D 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# L, ON, R and ([)]\n0061 2680 0028 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0029 2680 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0029 005D 2680 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 2680 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0029 2680 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0029 005D 2680 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 2680 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 0029 2680 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 0029 005D 2680 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 2680 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0029 0061 2680 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0029 0061 005D 2680 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON and ([)]\n0061 0028 0062 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 2680 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 005D 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0062 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 2680 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 005D 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 2680 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 005D 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 005B 0062 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0029 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 2680 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 005D 2680;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 0062 2680 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 0062 005D 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 0062 2680 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 0062 005D 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L, L and ([)]\n0061 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 0063 005D;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 005D 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 0062 005D 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# L, L, R and ([)]\n0061 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 0029 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 0029 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 0029 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 05D0 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 005D 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 0062 05D0 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0029 0062 005D 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 0062 05D0 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 0029 0062 005D 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, ON and ([)]\n0061 0028 05D0 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 05D0 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 05D0 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 05D0 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 05D0 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 05D0 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 05D0 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 05D0 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 05D0 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L and ([)]\n0061 0028 05D0 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 0029 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 0029 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 0029 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 0029 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 0029 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 05D0 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 0029 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 05D0 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R and ([)]\n0061 0028 05D0 005B 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 005B 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 005B 0061 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON and ([)]\n05D0 2680 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L and ([)]\n05D0 2680 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0029 005D 2680 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0029 005D 2680 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0029 005D 2680 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0029 05D0 005D 2680 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R and ([)]\n05D0 2680 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 005D 2680 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 005D;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 005D;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005B 0029 05D0 2680 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 005B 0029 05D0 2680 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 005B 0029 05D0 005D 2680 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON and ([)]\n05D0 0028 0061 2680 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L and ([)]\n05D0 0028 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0061 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 005B 05D0 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, L, R and ([)]\n05D0 0028 0061 05D1 005B 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, ON and ([)]\n05D0 0028 05D1 2680 005B 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 05D1 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 05D1 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D 2680;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L and ([)]\n05D0 0028 05D1 0061 005B 0029 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R and ([)]\n05D0 0028 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and ([)]\n2680 0028 2681 005B 2682 0029 2683 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 2683 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ([)]\n2680 0028 2681 005B 2682 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ([)]\n2680 0028 2681 005B 2682 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 2682 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ([)]\n2680 0028 2681 0061 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 2682 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 2682 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 2682 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 2682 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 2682 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 2682 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and ([)]\n2680 0028 2681 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 2681 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# ON, ON, L, R and ([)]\n2680 0028 2681 0061 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ([)]\n2680 0028 2681 05D0 2682 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 2682 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 2682 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 2682 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 2682 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 2682 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and ([)]\n2680 0028 2681 05D0 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and ([)]\n2680 0028 2681 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 2681 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 2681 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 005B 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 005B 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 005B 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 005B 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 2680 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ([)]\n2680 0028 0061 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 2681 005D 2682;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and ([)]\n2680 0028 0061 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0062 005B 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 2681 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 2681 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 005B 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 2681 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n2680 0028 005B 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 2681 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 005B 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 005D 2681 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0061 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0062 005B 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 2681 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 2681 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 005B 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 2681 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 2680 005B 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 2681 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 005B 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 005D 2681 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 2680 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 2680 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 2681 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 2680 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 2681 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 2680 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 005D 2681 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0029 2680 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 2681 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 0029 2680 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 2681 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0029 2680 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 005D 2681 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n\n# ON, L, ON, R and ([)]\n2680 0028 0061 2681 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and ([)]\n2680 0028 0061 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 2681 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 2681 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 005D 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 0062 2681 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 0062 005D 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 2681 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 2681 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 005D 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 0062 2681 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 0062 005D 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 0062 2681 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 0062 005D 2681;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L, L and ([)]\n2680 0028 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 2680 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n\n# ON, L, L, R and ([)]\n2680 0028 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n2680 0028 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 2680 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 0062 005D 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, ON and ([)]\n2680 0028 0061 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, R, L and ([)]\n2680 0028 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0062 005B 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0062 005B 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R, R and ([)]\n2680 0028 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 0061 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 0061 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 0061 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 0061 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0061 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 2680 0061 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 2680 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0029 2680 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ([)]\n2680 0028 05D0 2681 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 005D 2682;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and ([)]\n2680 0028 05D0 2681 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D 2681 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and ([)]\n2680 0028 05D0 2681 05D1 005B 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 005B 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n2680 0028 005B 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 005B 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 005B 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 005B 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 005B 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 2680 005B 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 005B 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 005B 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 2680 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 2680 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 2680 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 2680 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 0029 2680 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 2681 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0029 2680 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 005D 2681 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0029 2680 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and ([)]\n2680 0028 05D0 0061 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L, L and ([)]\n2680 0028 05D0 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 05D0 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 05D0 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 05D0 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# ON, R, L, R and ([)]\n2680 0028 05D0 0061 05D1 005B 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 005B 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 2680 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 2680 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 2680 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and ([)]\n2680 0028 05D0 005B 05D1 2681 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 2681 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 005D 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 2681 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 005D 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 2681 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 2681 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 005D 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 2681 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 005D 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 2681 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 005D 2681;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, R, L and ([)]\n2680 0028 05D0 005B 05D1 0061 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0061 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 005D 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 2680 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R, R and ([)]\n2680 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n2680 0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 2680 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 2680 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ([)]\n0061 2680 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 2682 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 2682 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and ([)]\n0061 2680 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 005D 2681 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0062 0029 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 2681 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 2681 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 2681 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 2681 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 005D 2681 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 2681 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 2681 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 005D 2681 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 005D 2681 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# L, ON, ON, R and ([)]\n0061 2680 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 2681 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and ([)]\n0061 2680 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 2681 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 2680 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 005B 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 2681 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 2681 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 005D 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 2681 0029 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 2681 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 005D 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 2681 0029 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 2681 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 005D 2681;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 0062 2681 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 0062 005D 2681;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 2681 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 2681 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 005D 2681;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 0062 2681 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 0062 005D 2681;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 0062 2681 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 0029 0061 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 0062 005D 2681;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, L, L and ([)]\n0061 2680 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0063 0029 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 0063 005D;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 005D 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0061 005B 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 0063 005D;1;1;1 2 2 2 2 1 2 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 005D 0063;1;1;1 2 2 2 2 1 1 2;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0061 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0029 0061 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 0062 005D 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# L, ON, L, R and ([)]\n0061 2680 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 05D0 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 0062 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 2680 0062 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 005B 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 05D0 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 05D0 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 005B 0029 005D 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 05D0 0029 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 05D0 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0062 0029 005D 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 2680 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 05D0 0029 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 05D0 005D;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0062 0029 005D 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 005B 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 0062 05D0 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 0062 005D 05D0;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0062 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 005B 0061 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 0062 05D0 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 0029 0061 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 0062 005D 05D0;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n\n# L, ON, R, ON and ([)]\n0061 2680 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, R, L and ([)]\n0061 2680 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0062 005B 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0062 005B 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 2680 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0062 005B 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 2680 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 2680 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 2680 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R, R and ([)]\n0061 2680 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 2680 0028 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 2680 0028 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 2680 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 2680 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 2680 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 005B 2680 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 005B 0029 2680 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 2680 05D0 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 005B 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 2680 005B 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 2680 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 005B 2680 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 005B 0029 2680 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 2680 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0061 2680 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0061 0029 2680 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0029 0061 2680 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and ([)]\n0061 0028 0062 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 2681 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 005D 2681;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 005D 2681;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0028 0061 005B 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 2681 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 005D 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 2680 005D 2681;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 2680 005D 2681;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 2680 005D 2681;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON, L and ([)]\n0061 0028 0062 2680 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 005B 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 005D 2680 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0063 0029 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 005B 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 2680 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 2680 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 005D 2680 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 2680 0063 005D;1;1;1 2 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0061 005B 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 2680 005D 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0061 005B 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 005D 2680 0063;1;1;1 2 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0061 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 2680 0063 005D;1;1;1 1 2 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 0061 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 2680 005D 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0061 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 005D 2680 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n\n# L, L, ON, R and ([)]\n0061 0028 0062 2680 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 05D0 005B 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 05D0 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 05D0 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 2680 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 2680 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 005D 2680 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 2680 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 2680 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 005D 2680 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 05D0 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 2680 005D 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 005D 2680 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0028 0061 005B 0062 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 05D0 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 05D0 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 2680 0029 005D 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 2680 05D0 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 2680 005D 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 005D 2680 05D0;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 2680 05D0 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 2680 005D 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 005D 2680 05D0;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 2680 05D0 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 2680 005D 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 005D 2680 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, L, ON and ([)]\n0061 0028 0062 005B 0063 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 2680 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0063 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 005B 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 2680 005D;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 005D 2680;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n\n# L, L, L, L and ([)]\n0061 0028 0062 005B 0063 0029 0064 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 0064 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 005D 0064;1;1;1 2 2 2 1 2 2 2;5 6 7 4 1 2 3 0\n\n# L, L, L, R and ([)]\n0061 0028 0062 005B 0063 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 05D0 0029 005D;1;1;2 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0061 0028 0062 005B 0063 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0063 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0063 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 0063 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 0063 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 005B 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 05D0 005D;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 0063 005D 05D0;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n\n# L, L, R, ON and ([)]\n0061 0028 0062 05D0 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 2680 005B 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 2680 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 2680 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 005D 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 2680 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 2680 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 005D 2680;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 05D0 2680 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 05D0 005D 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 2680 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 2680 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 005D 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 05D0 2680 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 05D0 005D 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 05D0 2680 005D;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 05D0 005D 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0028 0061 005B 0062 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 2680 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 2680 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 005D 2680;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 05D0 2680 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 05D0 005D 2680;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 05D0 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 05D0 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 05D0 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 05D0 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, R, L and ([)]\n0061 0028 0062 05D0 0063 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0063 005B 0029 005D;1;1;2 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0063 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0063 0029 005D;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 0063 005D;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 005D 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0063 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0063 0029 005D;1;1;2 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 0063 005D;1;1;2 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 005D 0063;1;1;2 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 0029 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 05D0 0063 005D;1;1;2 2 2 2 2 1 2 1;7 6 5 0 1 2 3 4\n0061 0028 0062 005B 0029 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 0029 05D0 005D 0063;1;1;2 2 2 2 2 1 1 2;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 05D0 0063 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0063 0029 005D;1;1;2 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 0063 005D;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 005D 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 0029 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 05D0 0063 005D;1;1;2 2 2 2 2 1 2 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 0029 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 0029 05D0 005D 0063;1;1;2 2 2 2 2 1 1 2;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 05D0 0063 005D;1;1;2 2 2 2 2 1 2 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 0062 05D0 005D 0063;1;1;2 2 2 2 2 1 1 2;7 6 5 0 1 2 3 4\n0028 0061 005B 0062 05D0 0063 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0063 0029 005D;1;1;1 2 2 2 1 2 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 0063 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 05D0 0063 005D;1;1;1 2 2 2 1 1 2 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 0029 05D0 005D 0063;1;1;1 2 2 2 1 1 1 2;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 05D0 0063 005D;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 0062 05D0 005D 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 05D0 0063 005D;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 0062 05D0 005D 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R, R and ([)]\n0061 0028 0062 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 0062 05D0 005B 05D1 0029 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 05D1 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 005B 0029 005D 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 05D1 005D;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 005B 05D0 0029 005D 05D1;1;1;2 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0062 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 0062 005B 0029 05D0 005D 05D1;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0062 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 05D1 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0062 05D0 0029 005D 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 005B 0062 0029 05D0 005D 05D1;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 005B 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 005B 0029 0062 05D0 005D 05D1;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0028 0061 005B 0062 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 05D1 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0062 05D0 0029 005D 05D1;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 005B 0062 0029 05D0 005D 05D1;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 005B 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 005B 0029 0062 05D0 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0061 0029 0062 05D0 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and ([)]\n0061 0028 05D0 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON, L and ([)]\n0061 0028 05D0 2680 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0062 005B 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 2680 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 2680 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 005D 2680 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0062 005B 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 2680 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 2680 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 005D 2680 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D 2680 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, ON, R and ([)]\n0061 0028 05D0 2680 05D1 005B 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 2680 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 2680 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 005B 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 005B 05D0 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0061 0028 005B 0029 05D0 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 005B 0029 05D0 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 005B 0029 05D0 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 005B 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 2680 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 2680 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 005B 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 005B 05D0 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0061 005B 0029 05D0 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 005B 0029 05D0 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 005B 0029 05D0 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0061 05D0 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 0061 0029 05D0 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0061 0029 05D0 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0061 0029 05D0 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 0029 0061 05D0 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 2680 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0029 0061 05D0 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 005D 2680 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 0029 0061 05D0 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, ON and ([)]\n0061 0028 05D0 0062 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 2680 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 2680 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 2680 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 005D 2680;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 2680 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 2680 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 005D 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 2680 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 2680 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 005D 2680;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 0062 2680 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 0062 005D 2680;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 2680 005B 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 2680 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 2680 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 005D 2680;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 2680 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 2680 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 2680 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 005D 2680;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 0062 2680 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 0062 005D 2680;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 2680 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 2680 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 005D 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L, L and ([)]\n0061 0028 05D0 0062 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0063 0029 005D;1;1;2 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0061 0028 05D0 0062 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 0063 005D;1;1;2 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 005D 0063;1;1;2 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 0063 005D;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 005D 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 0062 005D 0063;1;1;2 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 0063 005D;1;1;2 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 005D 0063;1;1;2 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 0062 005D 0063;1;1;2 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 0062 005D 0063;1;1;2 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0061 05D0 0062 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0063 0029 005D;1;1;1 2 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0061 05D0 0062 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 0063 005D;1;1;1 2 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 005D 0063;1;1;1 2 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 0063 005D;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 005D 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 0063 005D;1;1;1 2 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 005D 0063;1;1;1 2 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 0062 005D 0063;1;1;1 2 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 0063 005D;1;1;1 1 2 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 005D 0063;1;1;1 1 2 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 005D 0063;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n\n# L, R, L, R and ([)]\n0061 0028 05D0 0062 05D1 005B 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 05D1 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 05D1 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 05D1 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 005B 0029 005D 05D1;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 05D1 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 05D1 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0062 0029 005D 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 05D1 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 05D1 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0062 0029 005D 05D1;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 0062 05D1 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 005B 0029 05D0 0062 005D 05D1;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 005B 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 05D1 005B 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 05D1 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 05D1 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 005B 0029 005D 05D1;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 05D1 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 05D1 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0062 0029 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 05D1 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 05D1 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0062 0029 005D 05D1;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 0062 05D1 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 005B 0029 05D0 0062 005D 05D1;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 05D1 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 05D1 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0062 0029 005D 05D1;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0061 0029 05D0 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 0061 05D0 0062 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 0061 05D0 0062 005D 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, ON and ([)]\n0061 0028 05D0 005B 05D1 2680 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 2680 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 2680 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 005D 2680;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 2680 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 2680 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 2680 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 005D 2680;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, R, L and ([)]\n0061 0028 05D0 005B 05D1 0062 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 0062 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 005D 0062;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 05D1 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 005B 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 05D1 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 005D 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 005B 05D0 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0062 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 0062 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 005D 0062;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 05D1 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 005B 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 05D1 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 005D 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 005B 05D0 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 005D 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0061 05D0 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R, R and ([)]\n0061 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 05D2 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0061 0028 05D0 005B 05D1 0029 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 05D0 005B 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 005B 05D0 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 05D2 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 0061 05D0 005B 05D1 0029 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 05D0 005B 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 005B 05D0 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0061 05D0 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ([)]\n05D0 2680 0028 2681 005B 2682 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 2682 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and ([)]\n05D0 2680 0028 2681 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 2681 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0061 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D 2681 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D 2681 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D 2681 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and ([)]\n05D0 2680 0028 2681 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 05D1 0029 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 005D 2681 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 005D 2681 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 005D 2681 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 005B 0029 05D0 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and ([)]\n05D0 2680 0028 0061 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L, L and ([)]\n05D0 2680 0028 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 2680 0028 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 2680 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 2680 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 2680 0061 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 2680 0061 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# R, ON, L, R and ([)]\n05D0 2680 0028 0061 05D1 005B 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 005B 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 005B 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 2680 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and ([)]\n05D0 2680 0028 05D1 2681 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 005B 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 2681 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 2681 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 005D 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 2681 0029 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 2681 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 005D 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 2681 0029 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 2681 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 005D 2681;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 2681 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 005D 2681;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 2681 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 2681 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 005D 2681;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 2681 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 005D 2681;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 2681 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0029 05D0 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 005D 2681;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0029 05D0 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, R, L and ([)]\n05D0 2680 0028 05D1 0061 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0061 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0061 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0061 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0061 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0061 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 005B 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0061 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 0061 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 005D 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0061 0029 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 0061 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 005D 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0061 0029 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 0061 005D;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 005D 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 0061 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 005D 0061;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0061 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 0061 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 005D 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 0061 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0029 05D0 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 005D 0061;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 005B 0029 05D0 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R, R and ([)]\n05D0 2680 0028 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 05D2 005D;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 005D 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 2680 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 2680 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 05D2 005D;0;0;0 1 1 1 1 0 1 0;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 005D 05D2;0;0;0 1 1 1 1 0 0 1;0 4 3 2 1 5 6 7\n0028 05D0 005B 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 005B 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 005B 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 005B 05D0 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 05D0 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 05D0 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 2680 05D1 005D 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 005B 0029 05D0 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and ([)]\n05D0 0028 0061 2680 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON, L and ([)]\n05D0 0028 0061 2680 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0062 005B 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 2680 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 005B 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 005B 0061 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 2680 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n05D0 0028 005B 0029 0061 2680 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 005B 0029 0061 005D 2680 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0061 2680 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0062 005B 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 2680 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 005B 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 005B 0061 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 2680 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 05D0 005B 0029 0061 2680 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 005B 0029 0061 005D 2680 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 05D0 0061 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 005B 05D0 0061 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 2680 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 05D0 0029 0061 2680 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 2680 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 05D0 0029 0061 005D 2680 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 005D 2680 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0029 05D0 0061 2680 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 005B 0029 05D0 0061 2680 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 2680 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 005B 0029 05D0 0061 005D 2680 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 005D 2680 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n\n# R, L, ON, R and ([)]\n05D0 0028 0061 2680 05D1 005B 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 2680 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 2680 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 005D 2680 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 005B 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 2680 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 2680 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 005D 2680 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, ON and ([)]\n05D0 0028 0061 005B 0062 2680 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 2680 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 2680 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 005D 2680;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 2680 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 2680 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 2680 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 005D 2680;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L, L and ([)]\n05D0 0028 0061 005B 0062 0029 0063 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 0061 005B 0062 0029 0063 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n\n# R, L, L, R and ([)]\n05D0 0028 0061 005B 0062 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 05D1 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 05D1 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0062 0029 005D 05D1;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n05D0 0028 0061 005B 0029 0062 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 0062 005D 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0062 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 05D1 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 05D1 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0062 0029 005D 05D1;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 05D0 0061 005B 0029 0062 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 0062 05D1 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 0062 005D 05D1;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 0062 005D 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 0062 05D1 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 0062 005D 05D1;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, ON and ([)]\n05D0 0028 0061 05D1 2680 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 2680 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 2680 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 005D 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 2680 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 2680 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 005D 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 2680 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 2680 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 005D 2680;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 2680 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 005D 2680;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 005B 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 2680 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 2680 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 005D 2680;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 2680 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 2680 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 2680 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 005D 2680;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 2680 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, R, L and ([)]\n05D0 0028 0061 05D1 0062 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0062 005B 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0062 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 0062 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 005D 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0062 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 0062 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 005D 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0062 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 0062 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 005D 0062;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 0062 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 005D 0062;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0029 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 005B 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0062 005B 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0062 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 0062 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 005D 0062;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0062 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 0062 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0062 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 0062 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 0062 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 005D 0062;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0062 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 0062 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 0062 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 005D 0062;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 0062 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 05D1 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 005D 0062;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 005B 0029 05D0 0061 05D1 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R, R and ([)]\n05D0 0028 0061 05D1 005B 05D2 0029 005D;0;0;1 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n05D0 0028 0061 05D1 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 05D2 005D;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 005D 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 05D2 005D;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 005D 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 005B 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1 005D 05D2;0;0;1 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n05D0 0028 0061 005B 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 05D2 005D;0;0;1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 005D 05D2;0;0;1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 0061 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1 005D 05D2;0;0;1 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n05D0 0028 005B 0061 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 0061 05D1 005D 05D2;0;0;1 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n05D0 0028 005B 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 05D2 0029 005D;0;0;0 1 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 05D0 0061 05D1 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 05D2 005D;0;0;0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 005D 05D2;0;0;0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 05D2 005D;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 005D 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 005B 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 0061 005B 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 05D2 005D;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 005D 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0061 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 005B 0061 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 0061 05D1 005D 05D2;0;0;0 1 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 05D0 005B 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 05D2 005D;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 005D 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0061 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 05D0 0061 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 0061 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 05D0 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 0029 05D0 0061 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 005B 0029 05D0 0061 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and ([)]\n05D0 0028 05D1 2680 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 2681 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 005D 2681;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 005D 2681;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 2681 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 005D 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 005D 2681;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 005D 2681;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 005D 2681;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON, L and ([)]\n05D0 0028 05D1 2680 0061 005B 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0061 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0061 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 2680 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0061 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 2680 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 0061 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 005D 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 2680 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0061 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 0061 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 005D 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 0061 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 005D 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D 2680 0061;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 0061 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 005D 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D 2680 0061;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 0061 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 005D 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D 2680 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, ON, R and ([)]\n05D0 0028 05D1 2680 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 2680 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 005B 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 05D2 0029 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 005B 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 005D 2680 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 05D2 005D;0;0;0 1 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 05D0 005B 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 2680 005D 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 005B 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 005D 2680 05D2;0;0;0 1 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 05D0 005B 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 05D2 005D;0;0;0 0 1 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 005B 05D0 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 2680 005D 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 05D0 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 005D 2680 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 005B 05D0 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, ON and ([)]\n05D0 0028 05D1 0061 2680 005B 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 2680 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 2680 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 005D 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 2680 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 2680 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 005D 2680;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 2680 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 005D 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 2680 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 2680 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 005D 2680;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 2680 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 005D 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 2680 005D;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 005D 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 2680 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 2680 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 005D 2680;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 2680 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 005D 2680;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 2680 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 005D 2680;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 2680 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 005D 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L, L and ([)]\n05D0 0028 05D1 0061 005B 0062 0029 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 05D1 0061 005B 0029 0062 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 005D 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 0062 005D;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 005D 0062;0;0;1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 005D 0062;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 0062 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 005D 0062;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 005D 0062;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 005D 0062;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 0062 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 005D 0062;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 005D 0062;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 005D 0062;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 005D 0062;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# R, R, L, R and ([)]\n05D0 0028 05D1 0061 05D2 005B 0029 005D;0;0;1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 05D2 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 05D2 0029 005D;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 05D2 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 05D2 005D;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 005D 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 0061 005B 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 05D2 0029 005D;0;0;1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 05D2 005D;0;0;1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 005D 05D2;0;0;1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 05D1 005B 0061 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 05D2 005D;0;0;1 1 1 1 1 0 1 0;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061 005D 05D2;0;0;1 1 1 1 1 0 0 1;4 3 2 1 0 5 6 7\n05D0 0028 05D1 005B 0029 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 05D2 0029 005D;0;0;1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 05D2 005D;0;0;1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 005D 05D2;0;0;1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 005B 05D1 0061 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 05D2 005D;0;0;1 1 1 1 1 0 1 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061 005D 05D2;0;0;1 1 1 1 1 0 0 1;4 3 2 1 0 5 6 7\n05D0 0028 005B 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 05D2 005D;0;0;1 1 1 1 1 0 1 0;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 0029 05D1 0061 005D 05D2;0;0;1 1 1 1 1 0 0 1;4 3 2 1 0 5 6 7\n05D0 0028 005B 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 05D2 0029 005D;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0061 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 05D2 005D;0;0;0 1 1 1 0 0 1 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061 005D 05D2;0;0;0 1 1 1 0 0 0 1;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 05D2 005D;0;0;0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 0029 05D1 0061 005D 05D2;0;0;0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 005B 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 05D2 005D;0;0;0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 005B 05D0 0029 05D1 0061 005D 05D2;0;0;0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 005B 05D0 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, ON and ([)]\n05D0 0028 05D1 005B 05D2 2680 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 05D2 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 05D2 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 05D2 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 2680 005D;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 005D 2680;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, R, L and ([)]\n05D0 0028 05D1 005B 05D2 0061 0029 005D;0;0;1 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n05D0 0028 05D1 005B 05D2 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 05D2 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 05D2 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 005B 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 005B 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 0061 005D;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 005D 0061;0;0;0 1 1 1 0 1 0 0;0 3 2 1 4 5 6 7\n0028 05D0 005B 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R, R and ([)]\n05D0 0028 05D1 005B 05D2 0029 05D3 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 005B 05D2 0029 05D3 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2 005D 05D3;0;0;0 1 1 1 0 1 1 1;0 3 2 1 4 7 6 5\n0028 05D0 005B 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# (\n0028;0;0;0;0\n0028;1;1;1;0\n\n# ON and (\n2680 0028;0;0;0 0;0 1\n2680 0028;1;1;1 1;1 0\n0028 2680;0;0;0 0;0 1\n0028 2680;1;1;1 1;1 0\n\n# L and (\n0061 0028;0;0;0 0;0 1\n0061 0028;1;1;2 1;1 0\n0028 0061;0;0;0 0;0 1\n0028 0061;1;1;1 2;1 0\n\n# R and (\n05D0 0028;0;0;1 0;0 1\n05D0 0028;1;1;1 1;1 0\n0028 05D0;0;0;0 1;0 1\n0028 05D0;1;1;1 1;1 0\n\n# ON, ON and (\n2680 0028 2681;0;0;0 0 0;0 1 2\n2680 0028 2681;1;1;1 1 1;2 1 0\n\n# ON, L and (\n2680 0028 0061;0;0;0 0 0;0 1 2\n2680 0028 0061;1;1;1 1 2;2 1 0\n0028 2680 0061;0;0;0 0 0;0 1 2\n0028 2680 0061;1;1;1 1 2;2 1 0\n\n# ON, R and (\n2680 0028 05D0;0;0;0 0 1;0 1 2\n2680 0028 05D0;1;1;1 1 1;2 1 0\n0028 2680 05D0;0;0;0 0 1;0 1 2\n0028 2680 05D0;1;1;1 1 1;2 1 0\n\n# L, ON and (\n0061 2680 0028;0;0;0 0 0;0 1 2\n0061 2680 0028;1;1;2 1 1;2 1 0\n0061 0028 2680;0;0;0 0 0;0 1 2\n0061 0028 2680;1;1;2 1 1;2 1 0\n\n# L, L and (\n0061 0028 0062;0;0;0 0 0;0 1 2\n0061 0028 0062;1;1;2 2 2;0 1 2\n\n# L, R and (\n0061 0028 05D0;0;0;0 0 1;0 1 2\n0061 0028 05D0;1;1;2 1 1;2 1 0\n\n# R, ON and (\n05D0 2680 0028;0;0;1 0 0;0 1 2\n05D0 2680 0028;1;1;1 1 1;2 1 0\n05D0 0028 2680;0;0;1 0 0;0 1 2\n05D0 0028 2680;1;1;1 1 1;2 1 0\n\n# R, L and (\n05D0 0028 0061;0;0;1 0 0;0 1 2\n05D0 0028 0061;1;1;1 1 2;2 1 0\n\n# R, R and (\n05D0 0028 05D1;0;0;1 1 1;2 1 0\n05D0 0028 05D1;1;1;1 1 1;2 1 0\n\n# ON, ON, L and (\n2680 0028 2681 0061;0;0;0 0 0 0;0 1 2 3\n2680 0028 2681 0061;1;1;1 1 1 2;3 2 1 0\n\n# ON, ON, R and (\n2680 0028 2681 05D0;0;0;0 0 0 1;0 1 2 3\n2680 0028 2681 05D0;1;1;1 1 1 1;3 2 1 0\n\n# L, ON, ON and (\n0061 2680 0028 2681;0;0;0 0 0 0;0 1 2 3\n0061 2680 0028 2681;1;1;2 1 1 1;3 2 1 0\n\n# L, ON, L and (\n0061 2680 0028 0062;0;0;0 0 0 0;0 1 2 3\n0061 2680 0028 0062;1;1;2 2 2 2;0 1 2 3\n0061 0028 2680 0062;0;0;0 0 0 0;0 1 2 3\n0061 0028 2680 0062;1;1;2 2 2 2;0 1 2 3\n\n# L, ON, R and (\n0061 2680 0028 05D0;0;0;0 0 0 1;0 1 2 3\n0061 2680 0028 05D0;1;1;2 1 1 1;3 2 1 0\n0061 0028 2680 05D0;0;0;0 0 0 1;0 1 2 3\n0061 0028 2680 05D0;1;1;2 1 1 1;3 2 1 0\n\n# R, ON, ON and (\n05D0 2680 0028 2681;0;0;1 0 0 0;0 1 2 3\n05D0 2680 0028 2681;1;1;1 1 1 1;3 2 1 0\n\n# R, ON, L and (\n05D0 2680 0028 0061;0;0;1 0 0 0;0 1 2 3\n05D0 2680 0028 0061;1;1;1 1 1 2;3 2 1 0\n05D0 0028 2680 0061;0;0;1 0 0 0;0 1 2 3\n05D0 0028 2680 0061;1;1;1 1 1 2;3 2 1 0\n\n# R, ON, R and (\n05D0 2680 0028 05D1;0;0;1 1 1 1;3 2 1 0\n05D0 2680 0028 05D1;1;1;1 1 1 1;3 2 1 0\n05D0 0028 2680 05D1;0;0;1 1 1 1;3 2 1 0\n05D0 0028 2680 05D1;1;1;1 1 1 1;3 2 1 0\n\n# L, ON, ON, L and (\n0061 2680 0028 2681 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 2681 0062;1;1;2 2 2 2 2;0 1 2 3 4\n\n# L, ON, ON, R and (\n0061 2680 0028 2681 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 2680 0028 2681 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n\n# R, ON, ON, L and (\n05D0 2680 0028 2681 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 2681 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, ON, ON, R and (\n05D0 2680 0028 2681 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0028 2681 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# )\n0029;0;0;0;0\n0029;1;1;1;0\n\n# ON and )\n2680 0029;0;0;0 0;0 1\n2680 0029;1;1;1 1;1 0\n0029 2680;0;0;0 0;0 1\n0029 2680;1;1;1 1;1 0\n\n# L and )\n0061 0029;0;0;0 0;0 1\n0061 0029;1;1;2 1;1 0\n0029 0061;0;0;0 0;0 1\n0029 0061;1;1;1 2;1 0\n\n# R and )\n05D0 0029;0;0;1 0;0 1\n05D0 0029;1;1;1 1;1 0\n0029 05D0;0;0;0 1;0 1\n0029 05D0;1;1;1 1;1 0\n\n# ON, ON and )\n2680 0029 2681;0;0;0 0 0;0 1 2\n2680 0029 2681;1;1;1 1 1;2 1 0\n\n# ON, L and )\n2680 0029 0061;0;0;0 0 0;0 1 2\n2680 0029 0061;1;1;1 1 2;2 1 0\n0029 2680 0061;0;0;0 0 0;0 1 2\n0029 2680 0061;1;1;1 1 2;2 1 0\n\n# ON, R and )\n2680 0029 05D0;0;0;0 0 1;0 1 2\n2680 0029 05D0;1;1;1 1 1;2 1 0\n0029 2680 05D0;0;0;0 0 1;0 1 2\n0029 2680 05D0;1;1;1 1 1;2 1 0\n\n# L, ON and )\n0061 2680 0029;0;0;0 0 0;0 1 2\n0061 2680 0029;1;1;2 1 1;2 1 0\n0061 0029 2680;0;0;0 0 0;0 1 2\n0061 0029 2680;1;1;2 1 1;2 1 0\n\n# L, L and )\n0061 0029 0062;0;0;0 0 0;0 1 2\n0061 0029 0062;1;1;2 2 2;0 1 2\n\n# L, R and )\n0061 0029 05D0;0;0;0 0 1;0 1 2\n0061 0029 05D0;1;1;2 1 1;2 1 0\n\n# R, ON and )\n05D0 2680 0029;0;0;1 0 0;0 1 2\n05D0 2680 0029;1;1;1 1 1;2 1 0\n05D0 0029 2680;0;0;1 0 0;0 1 2\n05D0 0029 2680;1;1;1 1 1;2 1 0\n\n# R, L and )\n05D0 0029 0061;0;0;1 0 0;0 1 2\n05D0 0029 0061;1;1;1 1 2;2 1 0\n\n# R, R and )\n05D0 0029 05D1;0;0;1 1 1;2 1 0\n05D0 0029 05D1;1;1;1 1 1;2 1 0\n\n# ON, ON, L and )\n2680 0029 2681 0061;0;0;0 0 0 0;0 1 2 3\n2680 0029 2681 0061;1;1;1 1 1 2;3 2 1 0\n\n# ON, ON, R and )\n2680 0029 2681 05D0;0;0;0 0 0 1;0 1 2 3\n2680 0029 2681 05D0;1;1;1 1 1 1;3 2 1 0\n\n# L, ON, ON and )\n0061 2680 0029 2681;0;0;0 0 0 0;0 1 2 3\n0061 2680 0029 2681;1;1;2 1 1 1;3 2 1 0\n\n# L, ON, L and )\n0061 2680 0029 0062;0;0;0 0 0 0;0 1 2 3\n0061 2680 0029 0062;1;1;2 2 2 2;0 1 2 3\n0061 0029 2680 0062;0;0;0 0 0 0;0 1 2 3\n0061 0029 2680 0062;1;1;2 2 2 2;0 1 2 3\n\n# L, ON, R and )\n0061 2680 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0061 2680 0029 05D0;1;1;2 1 1 1;3 2 1 0\n0061 0029 2680 05D0;0;0;0 0 0 1;0 1 2 3\n0061 0029 2680 05D0;1;1;2 1 1 1;3 2 1 0\n\n# R, ON, ON and )\n05D0 2680 0029 2681;0;0;1 0 0 0;0 1 2 3\n05D0 2680 0029 2681;1;1;1 1 1 1;3 2 1 0\n\n# R, ON, L and )\n05D0 2680 0029 0061;0;0;1 0 0 0;0 1 2 3\n05D0 2680 0029 0061;1;1;1 1 1 2;3 2 1 0\n05D0 0029 2680 0061;0;0;1 0 0 0;0 1 2 3\n05D0 0029 2680 0061;1;1;1 1 1 2;3 2 1 0\n\n# R, ON, R and )\n05D0 2680 0029 05D1;0;0;1 1 1 1;3 2 1 0\n05D0 2680 0029 05D1;1;1;1 1 1 1;3 2 1 0\n05D0 0029 2680 05D1;0;0;1 1 1 1;3 2 1 0\n05D0 0029 2680 05D1;1;1;1 1 1 1;3 2 1 0\n\n# L, ON, ON, L and )\n0061 2680 0029 2681 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0029 2681 0062;1;1;2 2 2 2 2;0 1 2 3 4\n\n# L, ON, ON, R and )\n0061 2680 0029 2681 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 2680 0029 2681 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n\n# R, ON, ON, L and )\n05D0 2680 0029 2681 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0029 2681 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, ON, ON, R and )\n05D0 2680 0029 2681 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# (()\n0028 0028 0029;0;0;0 0 0;0 1 2\n0028 0028 0029;1;1;1 1 1;2 1 0\n\n# ON and (()\n2680 0028 0028 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 0028 0029;1;1;1 1 1 1;3 2 1 0\n0028 2680 0028 0029;0;0;0 0 0 0;0 1 2 3\n0028 2680 0028 0029;1;1;1 1 1 1;3 2 1 0\n0028 0028 2680 0029;0;0;0 0 0 0;0 1 2 3\n0028 0028 2680 0029;1;1;1 1 1 1;3 2 1 0\n0028 0028 0029 2680;0;0;0 0 0 0;0 1 2 3\n0028 0028 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and (()\n0061 0028 0028 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 0028 0029;1;1;2 1 1 1;3 2 1 0\n0028 0061 0028 0029;0;0;0 0 0 0;0 1 2 3\n0028 0061 0028 0029;1;1;1 2 1 1;3 2 1 0\n0028 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n0028 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 0028 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and (()\n05D0 0028 0028 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0028 0029;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0028 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0028 0029;1;1;1 1 1 1;3 2 1 0\n0028 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 0028 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0028 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0028 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and (()\n2680 0028 2681 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and (()\n2680 0028 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0028 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0028 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0028 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and (()\n2680 0028 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0028 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0028 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0028 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and (()\n0061 2680 0028 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0028 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0028 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0028 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0028 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0028 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0028 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and (()\n0061 0028 0062 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0028 0029;1;1;2 2 2 1 1;4 3 0 1 2\n0061 0028 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0028 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0028 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0028 0062 0029;1;1;1 2 2 2 2;1 2 3 4 0\n0028 0061 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0028 0029 0062;1;1;1 2 2 2 2;1 2 3 4 0\n0028 0028 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and (()\n0061 0028 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0028 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0028 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 0028 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0028 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0028 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0028 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0028 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0028 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and (()\n05D0 2680 0028 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0028 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0028 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0028 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0028 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and (()\n05D0 0028 0061 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0028 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 0028 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0028 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 0028 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0028 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0028 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0028 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0028 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and (()\n05D0 0028 05D1 0028 0029;0;0;1 1 1 0 0;2 1 0 3 4\n05D0 0028 05D1 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0028 05D1 0029;0;0;0 1 1 1 1;0 4 3 2 1\n0028 05D0 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0028 0029 05D1;0;0;0 1 1 1 1;0 4 3 2 1\n0028 05D0 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0028 0028 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and (()\n2680 0028 2681 0028 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0028 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0028 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and (()\n2680 0028 2681 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and (()\n2680 0028 2681 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and (()\n2680 0028 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and (()\n2680 0028 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 0028 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and (()\n2680 0028 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and (()\n2680 0028 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and (()\n2680 0028 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and (()\n2680 0028 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 0028 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 0028 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0028 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and (()\n0061 2680 0028 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0028 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0028 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and (()\n0061 2680 0028 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 2680 0028 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0028 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0028 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0028 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 2680 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 2680 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 2680 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and (()\n0061 2680 0028 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0028 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0028 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0028 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0028 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0028 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0028 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0028 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0028 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and (()\n0061 0028 0062 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0028 2680 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0028 0029 2680;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0062 2680 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0062 0029 2680;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, L, L and (()\n0061 0028 0062 0028 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0028 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0062 0029 0063;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n\n# L, L, R and (()\n0061 0028 0062 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 0028 05D0 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0028 0029 05D0;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0028 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0028 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0028 0062 05D0 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0028 0062 0029 05D0;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, R, ON and (()\n0061 0028 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0028 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0028 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0028 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0028 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0028 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0028 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0028 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0028 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and (()\n0061 0028 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0028 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0028 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0028 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0028 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0028 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0028 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0028 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0028 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0028 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0028 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and (()\n0061 0028 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 0028 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 0028 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0028 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0061 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0061 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0061 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0028 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and (()\n05D0 2680 0028 2681 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and (()\n05D0 2680 0028 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and (()\n05D0 2680 0028 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 2680 0028 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and (()\n05D0 0028 0061 2680 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and (()\n05D0 0028 0061 0028 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 0028 0028 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 05D0 0028 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and (()\n05D0 0028 0061 05D1 0028 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0028 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0028 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and (()\n05D0 0028 05D1 2680 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and (()\n05D0 0028 05D1 0061 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0028 05D1 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and (()\n05D0 0028 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0028 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and (()\n2680 0028 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (()\n2680 0028 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (()\n2680 0028 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (()\n2680 0028 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and (()\n2680 0028 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and (()\n2680 0028 2681 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (()\n2680 0028 2681 05D0 2682 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and (()\n2680 0028 2681 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and (()\n2680 0028 2681 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (()\n2680 0028 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and (()\n2680 0028 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and (()\n2680 0028 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and (()\n2680 0028 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, L, L and (()\n2680 0028 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# ON, L, L, R and (()\n2680 0028 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, R, ON and (()\n2680 0028 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and (()\n2680 0028 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and (()\n2680 0028 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (()\n2680 0028 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and (()\n2680 0028 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and (()\n2680 0028 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and (()\n2680 0028 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and (()\n2680 0028 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and (()\n2680 0028 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and (()\n2680 0028 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and (()\n2680 0028 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and (()\n2680 0028 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0028 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (()\n0061 2680 0028 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and (()\n0061 2680 0028 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and (()\n0061 2680 0028 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and (()\n0061 2680 0028 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and (()\n0061 2680 0028 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and (()\n0061 2680 0028 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 0028 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and (()\n0061 2680 0028 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and (()\n0061 2680 0028 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and (()\n0061 2680 0028 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 0028 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 0028 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and (()\n0061 0028 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 2681 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n\n# L, L, ON, L and (()\n0061 0028 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n\n# L, L, ON, R and (()\n0061 0028 0062 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n\n# L, L, L, ON and (()\n0061 0028 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and (()\n0061 0028 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and (()\n0061 0028 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 05D0 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and (()\n0061 0028 0062 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0028 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0028 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and (()\n0061 0028 0062 05D0 0063 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 0028 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0028 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0028 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and (()\n0061 0028 0062 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0062 05D0 0028 05D1 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0062 05D0 0028 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0028 05D0 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and (()\n0061 0028 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and (()\n0061 0028 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and (()\n0061 0028 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0028 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and (()\n0061 0028 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and (()\n0061 0028 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 0063 0029;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 0028 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 0029 0063;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 0028 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 0063 0029;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and (()\n0061 0028 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0028 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0028 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and (()\n0061 0028 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and (()\n0061 0028 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and (()\n0061 0028 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0028 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0061 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (()\n05D0 2680 0028 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and (()\n05D0 2680 0028 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and (()\n05D0 2680 0028 2681 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and (()\n05D0 2680 0028 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and (()\n05D0 2680 0028 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 0028 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 0028 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and (()\n05D0 2680 0028 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and (()\n05D0 2680 0028 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and (()\n05D0 2680 0028 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0028 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and (()\n05D0 2680 0028 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and (()\n05D0 0028 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and (()\n05D0 0028 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0028 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and (()\n05D0 0028 0061 2680 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and (()\n05D0 0028 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, L, L and (()\n05D0 0028 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# R, L, L, R and (()\n05D0 0028 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, R, ON and (()\n05D0 0028 0061 05D1 2680 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and (()\n05D0 0028 0061 05D1 0062 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and (()\n05D0 0028 0061 05D1 0028 05D2 0029;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 0028 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 05D2;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 0028 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 05D2 0029;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and (()\n05D0 0028 05D1 2680 0028 2681 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and (()\n05D0 0028 05D1 2680 0061 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and (()\n05D0 0028 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and (()\n05D0 0028 05D1 0061 2680 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and (()\n05D0 0028 05D1 0061 0028 0062 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 05D1 0061 0028 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 05D1 0028 0061 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and (()\n05D0 0028 05D1 0061 05D2 0028 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 05D2 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 0028 05D1 0061 0028 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and (()\n05D0 0028 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and (()\n05D0 0028 05D1 0028 05D2 0061 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and (()\n05D0 0028 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ()(\n0028 0029 0028;0;0;0 0 0;0 1 2\n0028 0029 0028;1;1;1 1 1;2 1 0\n\n# ON and ()(\n2680 0028 0029 0028;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 0028;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 0028;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 0028;1;1;1 1 1 1;3 2 1 0\n0028 0029 2680 0028;0;0;0 0 0 0;0 1 2 3\n0028 0029 2680 0028;1;1;1 1 1 1;3 2 1 0\n0028 0029 0028 2680;0;0;0 0 0 0;0 1 2 3\n0028 0029 0028 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ()(\n0061 0028 0029 0028;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 0028;1;1;2 1 1 1;3 2 1 0\n0028 0061 0029 0028;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 0028;1;1;1 2 1 1;3 2 1 0\n0028 0029 0061 0028;0;0;0 0 0 0;0 1 2 3\n0028 0029 0061 0028;1;1;1 1 2 1;3 2 1 0\n0028 0029 0028 0061;0;0;0 0 0 0;0 1 2 3\n0028 0029 0028 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ()(\n05D0 0028 0029 0028;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 0028;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 0028;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 0028;1;1;1 1 1 1;3 2 1 0\n0028 0029 05D0 0028;0;0;0 0 1 0;0 1 2 3\n0028 0029 05D0 0028;1;1;1 1 1 1;3 2 1 0\n0028 0029 0028 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0029 0028 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ()(\n2680 0028 2681 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 2681 0028;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 2681 0028;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 0028 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0028 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 2681 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 2681 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 0028 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0028 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 0028 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0028 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ()(\n2680 0028 0061 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 0028;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0029 0061 0028;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 0029 0028 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 0028;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0029 0061 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 0029 0028 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 2680 0061 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 2680 0028 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 0028 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0028 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ()(\n2680 0028 05D0 0029 0028;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0029 05D0 0028;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0029 0028 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 0028;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0029 05D0 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0029 0028 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 2680 05D0 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 2680 0028 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0028 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0028 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ()(\n0061 2680 0028 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 0028;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 0028;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 2680 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 2680 0028;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 0028 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0028 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 0028;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 2680 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 2680 0028;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 0028 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0028 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 2680 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 2680 0028;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 0028 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 0028 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ()(\n0061 0028 0062 0029 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 0028;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0062 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0062 0028;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0028 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0028 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 0029 0062 0028;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0062 0028;1;1;1 2 1 2 1;4 3 2 1 0\n0028 0061 0029 0028 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0028 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 0029 0061 0028 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 0028 0062;1;1;1 1 2 2 2;2 3 4 1 0\n\n# L, R and ()(\n0061 0028 05D0 0029 0028;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 0028;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0029 05D0 0028;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0029 0028 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 0028;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 0028;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 0029 05D0 0028;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0029 0028 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 05D0 0028;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 0061 05D0 0028;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 0028 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0061 0028 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ()(\n05D0 2680 0028 0029 0028;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 0028;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 0028;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 2680 0028;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0028 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0028 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 0028;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 2680 0028;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 2680 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 0028 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0028 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 2680 0028;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 2680 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 0028 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0028 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ()(\n05D0 0028 0061 0029 0028;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 0028;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0029 0061 0028;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 0029 0028 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 0029 0028;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 0028;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0029 0061 0028;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 0029 0028 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 05D0 0061 0028;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0061 0028;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 05D0 0028 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0028 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ()(\n05D0 0028 05D1 0029 0028;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 0028;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 05D1 0028;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 0029 05D1 0028;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0028 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0028 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 05D1 0028;0;0;0 1 0 1 0;0 1 2 3 4\n0028 05D0 0029 05D1 0028;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 0028 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0029 0028 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 0028 05D1;0;0;0 0 1 1 1;0 1 4 3 2\n0028 0029 05D0 0028 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ()(\n2680 0028 2681 0029 2682 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 2682 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0028 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0028 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0028 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ()(\n2680 0028 2681 0061 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 0029 0028 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 2681 0028 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0028 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0028 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 2681 0028 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0028 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0028 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 0028 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0028 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ()(\n2680 0028 2681 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0029 05D0 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0029 0028 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 2681 05D0 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 2681 0028 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0028 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0028 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 2681 05D0 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 2681 0028 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0028 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0028 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0028 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0028 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ()(\n2680 0028 0061 2681 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 2681 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0028 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 2681 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 0028 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 2681 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0028 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 2681 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 0028 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 2681 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 0028 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ()(\n2680 0028 0061 0029 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0062 0028;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n2680 0028 0061 0029 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0028 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0061 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 2680 0061 0029 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0062 0028;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 2680 0061 0029 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0028 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0061 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 2680 0061 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# ON, L, R and ()(\n2680 0028 0061 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 0029 05D0 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0029 0028 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 0061 05D0 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0061 0028 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 0029 05D0 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0029 0028 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 0061 05D0 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0061 0028 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 0061 05D0 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0061 0028 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ()(\n2680 0028 05D0 2681 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ()(\n2680 0028 05D0 0061 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0028 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0028 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0028 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0028 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0028 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ()(\n2680 0028 05D0 0029 05D1 0028;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n2680 0028 05D0 0029 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0028 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0029 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n2680 0028 0029 05D0 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 2680 05D0 0029 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0028 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0029 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 2680 0029 05D0 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 2680 05D0 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ()(\n0061 2680 0028 2681 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 2681 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0028 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 2681 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0028 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0028 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 2681 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0028 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0028 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0028 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ()(\n0061 2680 0028 0062 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0062 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0028 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0062 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0028 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 2680 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0062 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0029 2680 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0028 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0028 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0028 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0028;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0029 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0062 0028;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 2680 0029 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0028 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0062 0028;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 2680 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0028 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 0028 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0028 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 2680 0062 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0062 0028;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 0029 0061 2680 0028 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0028 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 0028 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0028 2680 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n\n# L, ON, R and ()(\n0061 2680 0028 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0029 05D0 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0029 0028 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0029 05D0 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0029 0028 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 2680 05D0 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 2680 0028 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0028 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0028 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0029 05D0 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0029 0028 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 2680 05D0 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 2680 0028 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0028 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0028 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 2680 05D0 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 2680 0028 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0028 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 0028 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ()(\n0061 0028 0062 2680 0029 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 2680 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 2680 0028;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0028 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 2680 0028;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 0028 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 2680 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 2680 0028;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 0028 2680;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, L, L and ()(\n0061 0028 0062 0029 0063 0028;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0063 0028;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 0028 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0028 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0062 0028 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 0028 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 0028 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 0028 0063;1;1;1 2 1 2 2 2;3 4 5 2 1 0\n\n# L, L, R and ()(\n0061 0028 0062 05D0 0029 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 0028;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 0029 05D0 0028;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0029 0028 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 0062 05D0 0028;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0062 0028 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0028;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 0062 05D0 0028;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 0028 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0062 0028 05D0;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, R, ON and ()(\n0061 0028 05D0 2680 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0028 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 2680 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0028 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0028 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 2680 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0028 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 2680 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0028 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ()(\n0061 0028 05D0 0062 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 0028;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0062 0028;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0028 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0028 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0062 0028;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0028 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0028 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 0028;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0062 0028;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0028 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0028 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0062 0028;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0028 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0028 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0062 0028;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0028 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0028 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ()(\n0061 0028 05D0 0029 05D1 0028;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0061 0028 05D0 0029 05D1 0028;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0028 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0029 0028 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0061 0028 0029 05D0 0028 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0061 05D0 0029 05D1 0028;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0028 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0029 0028 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0061 0029 05D0 0028 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0028 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 0061 05D0 0028 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ()(\n05D0 2680 0028 2681 0029 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0028 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ()(\n05D0 2680 0028 0061 0029 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0028 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0028 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0028 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0028 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0028 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0028 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0028 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0028 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0028 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0028 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 0028 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0028 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ()(\n05D0 2680 0028 05D1 0029 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 0029 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 0029 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0029 2680 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0028 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 2680 0029 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0028 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0029 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 2680 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0028 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 2680 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0028 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0028 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0029 05D0 2680 05D1 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0028 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 2680 0028 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0028 2680 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 0028 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ()(\n05D0 0028 0061 2680 0029 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0028 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 2680 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 0028 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0028 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 2680 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 0028 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 2680 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 0028 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ()(\n05D0 0028 0061 0029 0062 0028;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0062 0028;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0028 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0028 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0061 0028 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 05D0 0061 0029 0062 0028;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0062 0028;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0028 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0028 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0061 0028 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 05D0 0061 0028 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 0028 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# R, L, R and ()(\n05D0 0028 0061 05D1 0029 0028;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 0029 05D1 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0028 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0029 0028 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0029 0061 05D1 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 0028 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0029 0061 0028 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 0029 05D1 0028;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0028 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0029 0028 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 0061 05D1 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 0028 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0061 0028 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0029 05D0 0061 05D1 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 0028 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0029 05D0 0061 0028 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ()(\n05D0 0028 05D1 2680 0029 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 2680 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0028 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 2680 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0028 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 2680 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0028 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ()(\n05D0 0028 05D1 0061 0029 0028;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 0028;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0061 0028;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 0061;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0028 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ()(\n05D0 0028 05D1 0029 05D2 0028;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 0029 05D2 0028;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 05D2;0;0;0 1 0 1 1 1;0 1 2 5 4 3\n0028 05D0 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ()(\n2680 0028 2681 0029 2682 0028 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0028 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ()(\n2680 0028 2681 0029 2682 0061 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ()(\n2680 0028 2681 0029 2682 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 05D0 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0028 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0028 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0028 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0028 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0028 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0028 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0028 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ()(\n2680 0028 2681 0061 2682 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 2682 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0028 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 2682 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0028 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 2682 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0028 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 2682 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0028 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ()(\n2680 0028 2681 0061 0029 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 2681 0061 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 2681 0061 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, ON, L, R and ()(\n2680 0028 2681 0061 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 05D0 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0028 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 05D0 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0028 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 05D0 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0028 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 05D0 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0028 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ()(\n2680 0028 2681 05D0 2682 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ()(\n2680 0028 2681 05D0 0061 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ()(\n2680 0028 2681 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 2681 0029 05D0 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 2681 05D0 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 2681 05D0 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ()(\n2680 0028 0061 2681 0029 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 2682 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0028 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0028 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0028 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 2682 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0028 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0028 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0028 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0028 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ()(\n2680 0028 0061 2681 0062 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 0029 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0061 2681 0062 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 0029 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# ON, L, ON, R and ()(\n2680 0028 0061 2681 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 05D0 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0028 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 05D0 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0028 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0028 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 05D0 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0028 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 0028 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 05D0 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0028 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 05D0 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0028 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0028 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 05D0 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0028 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 0028 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 05D0 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0028 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 0028 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ()(\n2680 0028 0061 0029 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 2681 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0028 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 2681 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0028 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, L and ()(\n2680 0028 0061 0029 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0028 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0061 0029 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0028 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, L, L, R and ()(\n2680 0028 0061 0029 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 05D0 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0028 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 05D0 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0028 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, ON and ()(\n2680 0028 0061 05D0 2681 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ()(\n2680 0028 0061 05D0 0062 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 0029 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 0029 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ()(\n2680 0028 0061 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0061 0029 05D0 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 0061 05D0 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0061 0029 05D0 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 0061 05D0 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 2680 0061 05D0 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ()(\n2680 0028 05D0 2681 0029 2682 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ()(\n2680 0028 05D0 2681 0061 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ()(\n2680 0028 05D0 2681 05D1 0029 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0028 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0029 05D0 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0028 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0028 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0029 05D0 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0028 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 2680 05D0 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0028 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ()(\n2680 0028 05D0 0061 2681 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ()(\n2680 0028 05D0 0061 0029 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 05D0 0061 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 05D0 0061 0029 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 05D0 0061 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 2680 05D0 0061 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, R, L, R and ()(\n2680 0028 05D0 0061 05D1 0029 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ()(\n2680 0028 05D0 0029 05D1 2681 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ()(\n2680 0028 05D0 0029 05D1 0061 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0028 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ()(\n2680 0028 05D0 0029 05D1 0028 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 05D0 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0028 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 05D0 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ()(\n0061 2680 0028 2681 0029 2682 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 2682 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0028 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0028 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0028 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0028 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ()(\n0061 2680 0028 2681 0062 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 0029 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0062 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0028 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0028 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0028 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, ON, R and ()(\n0061 2680 0028 2681 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 0029 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 05D0 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0028 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 05D0 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0028 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0028 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 05D0 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0028 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0028 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0028 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 05D0 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0028 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0028 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0028 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0028 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0028 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ()(\n0061 2680 0028 0062 2681 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 0029 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 2681 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 2681 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 0028;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 2681 0028;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0028 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 2681 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0028 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 2681 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0028 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 2681 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0028 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ()(\n0061 2680 0028 0062 0029 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0063 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 0028;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0028 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0028 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 2680 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0028 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 2680 0062 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0028 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, L, R and ()(\n0061 2680 0028 0062 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 0029 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 0028;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 05D0 0028;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0028 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 05D0 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0028 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 05D0 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0028 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 05D0 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0028 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ()(\n0061 2680 0028 05D0 2681 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 0029 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 0029 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 0029 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 2681 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 2681 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 2681 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ()(\n0061 2680 0028 05D0 0062 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 0029 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 0029 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 0029 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ()(\n0061 2680 0028 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 05D1 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 2680 0028 0029 05D0 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 05D1 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 2680 0029 05D0 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 2680 05D0 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 05D1 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 2680 0029 05D0 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 2680 05D0 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 0061 2680 05D0 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ()(\n0061 0028 0062 2680 0029 2681 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 2681 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0028 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0028 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0028 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 0028 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0028 2681;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, L and ()(\n0061 0028 0062 2680 0063 0029 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 0029 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0063 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 0028;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0028 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 0028;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 0028 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0028 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 0028 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 2680 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n\n# L, L, ON, R and ()(\n0061 0028 0062 2680 05D0 0029 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 0029 0028;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 05D0 0028;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0028 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0028 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0028 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 05D0 0028;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0028 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0028 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 0028 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 05D0 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0028 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0028 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 0028 2680 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, L, ON and ()(\n0061 0028 0062 0029 0063 2680 0028;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 2680 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0028 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, L, L and ()(\n0061 0028 0062 0029 0063 0028 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0028 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ()(\n0061 0028 0062 0029 0063 05D0 0028;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 05D0 0028;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0028 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0028 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, R, ON and ()(\n0061 0028 0062 05D0 2680 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 0029 0028;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 2680 0028;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0028 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 2680 0028;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0028 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 2680 0028;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0028 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 2680 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 2680 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0028 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and ()(\n0061 0028 0062 05D0 0063 0029 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 0029 0028;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0063 0028;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0028 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0063 0028;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0028 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0028 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0063 0028;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0028 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0063 0028;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0063 0028;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0028 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0028 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and ()(\n0061 0028 0062 05D0 0029 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 05D1 0028;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0028 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0062 0029 05D0 0028 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 0062 05D0 0028 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0028 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 0062 05D0 0028 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and ()(\n0061 0028 05D0 2680 0029 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 2681 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0028 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 2681 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0028 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ()(\n0061 0028 05D0 2680 0062 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 0029 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0028 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 0029 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0028 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0028 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ()(\n0061 0028 05D0 2680 05D1 0029 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 0029 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 05D1 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 05D1 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0028 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0028 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0029 05D0 2680 05D1 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 2680 0028 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0028 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 0028 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 0029 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 05D1 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 05D1 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0028 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0028 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 0029 05D0 2680 05D1 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 2680 0028 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0028 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 0028 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 0028;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 0061 05D0 2680 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0028 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 2680 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0028 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 0028 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ()(\n0061 0028 05D0 0062 2680 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 0029 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 2680 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0028 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 2680 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0028 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 2680 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0028 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 0029 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 2680 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0028 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 2680 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0028 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 2680 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0028 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 0028;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 2680 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0028 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ()(\n0061 0028 05D0 0062 0029 0063 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0063 0028;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0028 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0028 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0061 0028 0029 05D0 0062 0028 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0028 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 05D0 0062 0029 0063 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0063 0028;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0028 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0028 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 05D0 0062 0028 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0028 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 05D0 0062 0028 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0028 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# L, R, L, R and ()(\n0061 0028 05D0 0062 05D1 0029 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 0029 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 05D1 0028;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0028 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 05D1 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0028 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 05D1 0028;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0028 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 0029 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 05D1 0028;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0028 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 05D1 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0028 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 05D1 0028;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0028 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 0028;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 05D1 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0028 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0028 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ()(\n0061 0028 05D0 0029 05D1 2680 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 2680 0028;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0028 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 2680 0028;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0028 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ()(\n0061 0028 05D0 0029 05D1 0062 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0062 0028;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0028 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0028 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0062 0028;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0028 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ()(\n0061 0028 05D0 0029 05D1 0028 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 05D0 0029 05D1 0028 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0028 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 05D0 0029 05D1 0028 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ()(\n05D0 2680 0028 2681 0029 2682 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 2682 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0028 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ()(\n05D0 2680 0028 2681 0061 0029 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0028 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ()(\n05D0 2680 0028 2681 05D1 0029 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 05D1 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 0029 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0029 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0029 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 05D1 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0028 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0028 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0028 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0028 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 0028 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ()(\n05D0 2680 0028 0061 2681 0029 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 2681 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 2681 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0028 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ()(\n05D0 2680 0028 0061 0029 0062 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 2680 0061 0029 0062 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 2680 0061 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 2680 0061 0029 0062 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 2680 0061 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 05D0 2680 0061 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, ON, L, R and ()(\n05D0 2680 0028 0061 05D1 0029 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 05D1 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0028 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ()(\n05D0 2680 0028 05D1 2681 0029 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 2681 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 2681 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 0028;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 0028;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ()(\n05D0 2680 0028 05D1 0061 0029 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 0028;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 0028;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 0028;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ()(\n05D0 2680 0028 05D1 0029 05D2 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 0029 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 0029 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 0028;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0028 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0028 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 2680 0029 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0028 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 2680 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0028 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 05D1 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ()(\n05D0 0028 0061 2680 0029 2681 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 2681 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0028 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0028 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ()(\n05D0 0028 0061 2680 0062 0029 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 0029 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 0028 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 0028 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0061 2680 0062 0029 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 0029 0028;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 0028 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 0028 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 2680 0062 0028;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0062 0028;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 0028 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0028 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 0028 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# R, L, ON, R and ()(\n05D0 0028 0061 2680 05D1 0029 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0028 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0028 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0028 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0028 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 05D1 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0028 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0028 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0028 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0028 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0028 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 0028;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 05D1 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0028 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0028 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0028 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0028 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ()(\n05D0 0028 0061 0029 0062 2680 0028;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 2680 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0028 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 2680 0028;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 2680 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0028 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L, L and ()(\n05D0 0028 0061 0029 0062 0028 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0028 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0061 0029 0062 0028 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0028 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# R, L, L, R and ()(\n05D0 0028 0061 0029 0062 05D1 0028;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 05D1 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0028 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0028 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 05D1 0028;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 05D1 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0028 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0028 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, R, ON and ()(\n05D0 0028 0061 05D1 2680 0029 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 2680 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0028 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 2680 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0028 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 2680 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0028 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 0029 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 2680 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0028 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 2680 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0028 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 2680 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0028 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 2680 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0028 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ()(\n05D0 0028 0061 05D1 0062 0029 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 0029 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 0028;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 0028;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 0029 0028;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0062 0028;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0028 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 0028;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 0028;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ()(\n05D0 0028 0061 05D1 0029 05D2 0028;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 05D2 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0028 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0028 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0028 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0061 0029 05D1 0028 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0028 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0029 0061 05D1 0028 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 0028;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 05D2 0028;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0028 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0028 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0028 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0061 0029 05D1 0028 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0028 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 0061 05D1 0028 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0028 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 05D0 0061 05D1 0028 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ()(\n05D0 0028 05D1 2680 0029 2681 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 2681 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 2681;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0028 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ()(\n05D0 0028 05D1 2680 0061 0029 0028;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 0029 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 0028;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0028 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 0028;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0028 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0028 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ()(\n05D0 0028 05D1 2680 05D2 0029 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 05D2 0029 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 0029 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0029 2680 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0028 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 0028;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 05D1 2680 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0028 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 0028;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0029 05D1 2680 05D2 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0028 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 2680 0028 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0028 2680 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 0028 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ()(\n05D0 0028 05D1 0061 2680 0029 0028;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 0028;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 2680 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0028 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 0028;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 2680 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0028 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 0028;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 2680 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0028 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 0028;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 2680 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0028 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ()(\n05D0 0028 05D1 0061 0029 0062 0028;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0062 0028;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0028 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0028 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, R, L, R and ()(\n05D0 0028 05D1 0061 05D2 0029 0028;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 0029 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 0028;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 05D2 0028;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0028 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0028 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 0028;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 05D2 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0028 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0028 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 0028;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 05D2 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0028 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0028 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 0028;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 05D2 0028;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0028 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0028 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ()(\n05D0 0028 05D1 0029 05D2 2680 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 2680 0028;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0028 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ()(\n05D0 0028 05D1 0029 05D2 0061 0028;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0061 0028;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0028 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ()(\n05D0 0028 05D1 0029 05D2 0028 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0028 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# [()\n005B 0028 0029;0;0;0 0 0;0 1 2\n005B 0028 0029;1;1;1 1 1;2 1 0\n\n# ON and [()\n2680 005B 0028 0029;0;0;0 0 0 0;0 1 2 3\n2680 005B 0028 0029;1;1;1 1 1 1;3 2 1 0\n005B 2680 0028 0029;0;0;0 0 0 0;0 1 2 3\n005B 2680 0028 0029;1;1;1 1 1 1;3 2 1 0\n005B 0028 2680 0029;0;0;0 0 0 0;0 1 2 3\n005B 0028 2680 0029;1;1;1 1 1 1;3 2 1 0\n005B 0028 0029 2680;0;0;0 0 0 0;0 1 2 3\n005B 0028 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and [()\n0061 005B 0028 0029;0;0;0 0 0 0;0 1 2 3\n0061 005B 0028 0029;1;1;2 1 1 1;3 2 1 0\n005B 0061 0028 0029;0;0;0 0 0 0;0 1 2 3\n005B 0061 0028 0029;1;1;1 2 1 1;3 2 1 0\n005B 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n005B 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n005B 0028 0029 0061;0;0;0 0 0 0;0 1 2 3\n005B 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and [()\n05D0 005B 0028 0029;0;0;1 0 0 0;0 1 2 3\n05D0 005B 0028 0029;1;1;1 1 1 1;3 2 1 0\n005B 05D0 0028 0029;0;0;0 1 0 0;0 1 2 3\n005B 05D0 0028 0029;1;1;1 1 1 1;3 2 1 0\n005B 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n005B 0028 05D0 0029;1;1;1 1 1 1;3 2 1 0\n005B 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n005B 0028 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and [()\n2680 005B 2681 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 2681 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005B 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005B 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n005B 2680 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 2680 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 2680 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n005B 2680 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and [()\n2680 005B 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 005B 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 005B 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005B 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005B 2680 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 2680 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005B 2680 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 2680 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005B 2680 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005B 2680 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005B 0028 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005B 0028 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005B 0028 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and [()\n2680 005B 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 005B 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005B 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 005B 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005B 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 005B 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005B 2680 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005B 2680 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 2680 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005B 2680 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 2680 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005B 2680 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005B 0028 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005B 0028 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005B 0028 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and [()\n0061 2680 005B 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 005B 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005B 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 2680 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005B 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 0028 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005B 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 0028 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n005B 0061 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0061 2680 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0061 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0061 0028 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0061 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0061 0028 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0028 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005B 0028 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and [()\n0061 005B 0062 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 0062 0028 0029;1;1;2 2 2 1 1;4 3 0 1 2\n0061 005B 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 0028 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 005B 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005B 0028 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n005B 0061 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0061 0028 0062 0029;1;1;1 2 2 2 2;1 2 3 4 0\n005B 0061 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0061 0028 0029 0062;1;1;1 2 2 2 2;1 2 3 4 0\n005B 0028 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n005B 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and [()\n0061 005B 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 005B 05D0 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005B 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 005B 0028 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005B 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 005B 0028 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n005B 0061 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005B 0061 05D0 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0061 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005B 0061 0028 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0061 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005B 0061 0028 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n005B 0028 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005B 0028 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005B 0028 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005B 0028 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and [()\n05D0 2680 005B 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 005B 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005B 2680 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n005B 05D0 2680 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 05D0 0028 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 05D0 0028 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005B 0028 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n005B 0028 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and [()\n05D0 005B 0061 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 005B 0028 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 005B 0028 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005B 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005B 05D0 0061 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005B 05D0 0028 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005B 05D0 0028 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n005B 05D0 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005B 0028 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005B 0028 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005B 0028 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n005B 0028 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and [()\n05D0 005B 05D1 0028 0029;0;0;1 1 1 0 0;2 1 0 3 4\n05D0 005B 05D1 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 005B 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n005B 05D0 0028 05D1 0029;0;0;0 1 1 1 1;0 4 3 2 1\n005B 05D0 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005B 05D0 0028 0029 05D1;0;0;0 1 1 1 1;0 4 3 2 1\n005B 05D0 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n005B 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n005B 0028 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and [()\n2680 005B 2681 0028 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 2681 0028 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 2681 0028 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 2681 0028 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and [()\n2680 005B 2681 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 2681 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005B 2681 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 2681 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005B 2681 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 2681 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005B 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005B 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005B 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and [()\n2680 005B 2681 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 2681 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 2681 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005B 2681 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 2681 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005B 2681 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005B 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005B 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005B 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and [()\n2680 005B 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005B 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and [()\n2680 005B 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 005B 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 005B 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005B 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005B 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005B 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005B 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 2680 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005B 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and [()\n2680 005B 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005B 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005B 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005B 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005B 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005B 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005B 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 2680 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 2680 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 2680 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 2680 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 2680 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 2680 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 2680 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 0028 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0028 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and [()\n2680 005B 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and [()\n2680 005B 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005B 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005B 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005B 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005B 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005B 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005B 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 2680 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 2680 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 2680 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 2680 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 2680 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 2680 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 0028 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 0028 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and [()\n2680 005B 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 005B 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 005B 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005B 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 005B 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005B 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005B 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 2680 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005B 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005B 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and [()\n0061 2680 005B 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 2681 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005B 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005B 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 2680 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 2680 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005B 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 2680 0028 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 2680 0028 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and [()\n0061 2680 005B 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 2680 005B 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 005B 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005B 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 2680 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 005B 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 2680 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 2680 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n005B 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 2680 0062 0028 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n005B 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 2680 0028 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 2680 0028 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 2680 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 2680 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 0029 2680 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n005B 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n005B 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0028 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and [()\n0061 2680 005B 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 005B 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005B 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 005B 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005B 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 005B 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 2680 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005B 2680 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005B 2680 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005B 0028 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005B 0028 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005B 0028 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005B 0061 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0061 2680 05D0 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 0061 2680 0028 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0061 2680 0028 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 0061 0028 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0061 0028 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0061 0028 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0028 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 0028 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0028 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0028 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and [()\n0061 005B 0062 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0062 2680 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0062 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0062 0028 2680 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0062 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0062 0028 0029 2680;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n005B 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 0062 2680 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005B 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 0062 0029 2680;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, L, L and [()\n0061 005B 0062 0028 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0062 0028 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0062 0028 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0062 0028 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005B 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005B 0028 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n005B 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005B 0061 0028 0062 0029 0063;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n\n# L, L, R and [()\n0061 005B 0062 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 0062 05D0 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0062 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005B 0062 0028 05D0 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0062 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005B 0062 0028 0029 05D0;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005B 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005B 0028 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 005B 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005B 0028 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n005B 0061 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005B 0061 0028 0062 05D0 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n005B 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005B 0061 0028 0062 0029 05D0;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, R, ON and [()\n0061 005B 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 2680 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 0028 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 0028 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 0028 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 0028 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005B 0061 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 2680 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 0028 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 0028 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0061 0028 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0061 0028 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0028 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 0028 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and [()\n0061 005B 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 0062 0028 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 005B 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 0028 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 005B 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005B 05D0 0028 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 005B 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 0028 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 005B 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005B 0028 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n005B 0061 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 0062 0028 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n005B 0061 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 0028 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n005B 0061 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0061 05D0 0028 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n005B 0061 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0061 0028 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n005B 0061 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0061 0028 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n005B 0028 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n005B 0028 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005B 0028 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and [()\n0061 005B 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 005B 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 005B 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005B 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 005B 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005B 0061 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005B 0061 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0061 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005B 0061 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005B 0028 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005B 0028 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and [()\n05D0 2680 005B 2681 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 2680 0028 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 2680 0028 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and [()\n05D0 2680 005B 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 005B 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005B 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005B 2680 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005B 2680 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005B 0028 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005B 0028 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005B 0028 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 05D0 2680 0061 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 05D0 2680 0028 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 05D0 2680 0028 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 05D0 0028 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 05D0 0028 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 05D0 0028 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 0028 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 0028 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 0028 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and [()\n05D0 2680 005B 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 2680 005B 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005B 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 005B 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n005B 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 2680 0028 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 2680 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 0029 2680 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n005B 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005B 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 0028 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005B 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and [()\n05D0 005B 0061 2680 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0061 0028 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0061 0028 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005B 0028 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 05D0 0061 2680 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0061 0028 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0061 0028 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 05D0 0028 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and [()\n05D0 005B 0061 0028 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 005B 0061 0028 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 005B 0028 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005B 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005B 05D0 0061 0028 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005B 05D0 0061 0028 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005B 05D0 0028 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005B 05D0 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005B 0028 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005B 0028 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and [()\n05D0 005B 0061 05D1 0028 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 005B 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 005B 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0061 0028 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 005B 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 005B 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005B 0028 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 005B 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n005B 05D0 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n005B 05D0 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0061 0028 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n005B 05D0 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n005B 05D0 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 05D0 0028 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n005B 05D0 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n005B 0028 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005B 0028 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005B 0028 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and [()\n05D0 005B 05D1 2680 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 2680;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 005B 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 05D1 0029 2680;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n005B 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and [()\n05D0 005B 05D1 0061 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 0061 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 0061;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005B 05D1 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 005B 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 005B 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n005B 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005B 05D0 0028 05D1 0029 0061;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n005B 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and [()\n05D0 005B 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005B 05D0 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005B 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and [()\n2680 005B 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and [()\n2680 005B 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and [()\n2680 005B 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and [()\n2680 005B 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 2682 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and [()\n2680 005B 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005B 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005B 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 005B 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and [()\n2680 005B 2681 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 2681 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 2681 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and [()\n2680 005B 2681 05D0 2682 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 05D0 0028 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 05D0 0028 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and [()\n2680 005B 2681 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 2681 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 2681 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 2681 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and [()\n2680 005B 2681 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005B 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005B 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005B 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005B 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and [()\n2680 005B 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and [()\n2680 005B 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 005B 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 005B 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005B 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005B 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005B 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and [()\n2680 005B 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and [()\n2680 005B 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005B 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005B 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, L, L and [()\n2680 005B 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# ON, L, L, R and [()\n2680 005B 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005B 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, R, ON and [()\n2680 005B 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and [()\n2680 005B 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and [()\n2680 005B 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005B 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005B 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005B 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005B 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005B 2680 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005B 2680 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 2680 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and [()\n2680 005B 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and [()\n2680 005B 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and [()\n2680 005B 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 005B 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 005B 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005B 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005B 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and [()\n2680 005B 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and [()\n2680 005B 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005B 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005B 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 2680 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005B 2680 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005B 2680 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and [()\n2680 005B 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 005B 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005B 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005B 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and [()\n2680 005B 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 005B 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005B 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and [()\n2680 005B 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 005B 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005B 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 005B 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005B 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and [()\n2680 005B 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005B 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and [()\n0061 2680 005B 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and [()\n0061 2680 005B 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 005B 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and [()\n0061 2680 005B 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005B 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005B 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005B 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and [()\n0061 2680 005B 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005B 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005B 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005B 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 2681 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005B 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005B 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005B 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and [()\n0061 2680 005B 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and [()\n0061 2680 005B 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005B 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005B 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005B 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005B 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 2680 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005B 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005B 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005B 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 05D0 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 2680 0062 0028 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005B 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 2680 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005B 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005B 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005B 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and [()\n0061 2680 005B 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and [()\n0061 2680 005B 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 005B 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 005B 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005B 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 005B 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005B 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and [()\n0061 2680 005B 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 005B 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 005B 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005B 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 005B 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005B 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005B 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005B 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005B 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005B 0061 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005B 0061 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 0061 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 0061 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 0028 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and [()\n0061 005B 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 2681 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005B 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n\n# L, L, ON, L and [()\n0061 005B 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 005B 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005B 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n\n# L, L, ON, R and [()\n0061 005B 0062 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 05D0 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0062 2680 0028 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0062 0028 2680 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0062 0028 0029 2680 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005B 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n005B 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005B 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n\n# L, L, L, ON and [()\n0061 005B 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and [()\n0061 005B 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and [()\n0061 005B 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 05D0 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and [()\n0061 005B 0062 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 2680 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 0028 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 0028 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 05D0 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 05D0 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 05D0 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 05D0 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and [()\n0061 005B 0062 05D0 0063 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 0063 0028 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 005B 0062 05D0 0028 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 0028 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 005B 0062 05D0 0028 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0062 05D0 0028 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 005B 0062 0028 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 05D0 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0062 0028 05D0 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 005B 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 005B 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 0028 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 05D0 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n005B 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 0028 0062 05D0 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and [()\n0061 005B 0062 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005B 0062 05D0 0028 05D1 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005B 0062 05D0 0028 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005B 0062 0028 05D0 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005B 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005B 0028 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005B 0061 0028 0062 05D0 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and [()\n0061 005B 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and [()\n0061 005B 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 2680 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 2680 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and [()\n0061 005B 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 005B 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 005B 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 0061 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005B 0061 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005B 0028 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and [()\n0061 005B 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 2680 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 2680 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and [()\n0061 005B 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 0063 0029;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 005B 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 0029 0063;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 005B 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 0061 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 0063 0029;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n005B 0061 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n005B 0061 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and [()\n0061 005B 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 05D1 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 05D0 0062 0028 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 005B 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005B 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005B 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 05D1 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 05D0 0062 0028 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0061 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0061 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005B 0028 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and [()\n0061 005B 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 005B 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005B 0061 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and [()\n0061 005B 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 005B 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005B 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 005B 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0061 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005B 0061 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and [()\n0061 005B 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005B 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005B 0061 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and [()\n05D0 2680 005B 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and [()\n05D0 2680 005B 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and [()\n05D0 2680 005B 2681 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 005B 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and [()\n05D0 2680 005B 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and [()\n05D0 2680 005B 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 005B 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 005B 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005B 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005B 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005B 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 05D0 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005B 05D0 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005B 05D0 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and [()\n05D0 2680 005B 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 005B 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 005B 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and [()\n05D0 2680 005B 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 005B 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 2681 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and [()\n05D0 2680 005B 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005B 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 005B 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 005B 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005B 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0061 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005B 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005B 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and [()\n05D0 2680 005B 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005B 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 2680 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n005B 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and [()\n05D0 005B 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and [()\n05D0 005B 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 005B 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 005B 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005B 05D0 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005B 05D0 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005B 0028 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and [()\n05D0 005B 0061 2680 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 2680 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005B 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and [()\n05D0 005B 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005B 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005B 05D0 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, L, L and [()\n05D0 005B 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005B 05D0 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# R, L, L, R and [()\n05D0 005B 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005B 05D0 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, R, ON and [()\n05D0 005B 0061 05D1 2680 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 05D1 0028 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 05D1 0028 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 2680 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and [()\n05D0 005B 0061 05D1 0062 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 05D1 0028 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 0061 05D1 0028 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0062 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005B 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and [()\n05D0 005B 0061 05D1 0028 05D2 0029;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 005B 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 05D1 0028 0029 05D2;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 005B 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 005B 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 005B 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 05D2 0029;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n005B 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 05D1 0028 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n005B 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n005B 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n005B 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005B 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n005B 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and [()\n05D0 005B 05D1 2680 0028 2681 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and [()\n05D0 005B 05D1 2680 0061 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 2680 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 005B 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005B 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n005B 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and [()\n05D0 005B 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 005B 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005B 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and [()\n05D0 005B 05D1 0061 2680 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0061 0028 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0061 0028 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0061 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0061 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and [()\n05D0 005B 05D1 0061 0028 0062 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005B 05D1 0061 0028 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005B 05D1 0028 0061 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and [()\n05D0 005B 05D1 0061 05D2 0028 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 05D2 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0061 0028 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0061 0028 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 005B 05D1 0061 0028 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0061 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 0061 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005B 0028 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 005B 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005B 05D0 0028 05D1 0061 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n005B 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and [()\n05D0 005B 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and [()\n05D0 005B 05D1 0028 05D2 0061 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 005B 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005B 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and [()\n05D0 005B 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005B 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ([)\n0028 005B 0029;0;0;0 0 0;0 1 2\n0028 005B 0029;1;1;1 1 1;2 1 0\n\n# ON and ([)\n2680 0028 005B 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 005B 0029;1;1;1 1 1 1;3 2 1 0\n0028 2680 005B 0029;0;0;0 0 0 0;0 1 2 3\n0028 2680 005B 0029;1;1;1 1 1 1;3 2 1 0\n0028 005B 2680 0029;0;0;0 0 0 0;0 1 2 3\n0028 005B 2680 0029;1;1;1 1 1 1;3 2 1 0\n0028 005B 0029 2680;0;0;0 0 0 0;0 1 2 3\n0028 005B 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ([)\n0061 0028 005B 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 005B 0029;1;1;2 1 1 1;3 2 1 0\n0028 0061 005B 0029;0;0;0 0 0 0;0 1 2 3\n0028 0061 005B 0029;1;1;1 2 1 1;3 2 1 0\n0028 005B 0061 0029;0;0;0 0 0 0;0 1 2 3\n0028 005B 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 005B 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 005B 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ([)\n05D0 0028 005B 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 005B 0029;1;1;1 1 1 1;3 2 1 0\n0028 05D0 005B 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 005B 0029;1;1;1 1 1 1;3 2 1 0\n0028 005B 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 005B 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0028 005B 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 005B 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ([)\n2680 0028 2681 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005B 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005B 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ([)\n2680 0028 0061 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 005B 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 005B 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 005B 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005B 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 005B 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 005B 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 005B 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005B 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005B 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005B 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005B 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ([)\n2680 0028 05D0 005B 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005B 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 005B 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005B 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 005B 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 005B 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 005B 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005B 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 005B 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005B 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005B 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005B 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ([)\n0061 2680 0028 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 005B 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 005B 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005B 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005B 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 005B 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005B 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005B 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005B 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005B 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ([)\n0061 0028 0062 005B 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 005B 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 005B 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 005B 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005B 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 005B 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 0062 0029;1;1;1 2 2 2 1;4 1 2 3 0\n0028 0061 005B 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005B 0029 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 005B 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005B 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and ([)\n0061 0028 05D0 005B 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 005B 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005B 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 005B 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005B 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 005B 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 005B 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 005B 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005B 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 005B 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005B 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 005B 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005B 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005B 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005B 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005B 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ([)\n05D0 2680 0028 005B 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 005B 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 005B 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ([)\n05D0 0028 0061 005B 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 005B 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 005B 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 005B 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005B 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 005B 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 005B 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 005B 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 005B 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005B 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005B 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005B 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005B 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ([)\n05D0 0028 05D1 005B 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 05D1 005B 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005B 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 05D1 0029;0;0;0 1 1 1 0;0 3 2 1 4\n0028 05D0 005B 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005B 0029 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 005B 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005B 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0028 005B 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ([)\n2680 0028 2681 005B 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ([)\n2680 0028 2681 0061 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 005B 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005B 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005B 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005B 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005B 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ([)\n2680 0028 2681 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 005B 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 005B 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005B 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005B 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005B 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005B 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005B 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005B 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ([)\n2680 0028 0061 2681 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ([)\n2680 0028 0061 005B 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n2680 0028 0061 005B 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005B 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 005B 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005B 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 2680 0061 005B 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 2680 0061 005B 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005B 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 005B 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005B 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 005B 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and ([)\n2680 0028 0061 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 005B 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 005B 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005B 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005B 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005B 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 005B 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 005B 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005B 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005B 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005B 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ([)\n2680 0028 05D0 2681 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ([)\n2680 0028 05D0 0061 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 005B 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005B 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005B 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 005B 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005B 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005B 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ([)\n2680 0028 05D0 005B 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n2680 0028 05D0 005B 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005B 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 005B 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005B 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0028 005B 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 2680 05D0 005B 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005B 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 005B 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005B 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 2680 005B 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 005B 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ([)\n0061 2680 0028 2681 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 005B 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ([)\n0061 2680 0028 0062 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 005B 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 005B 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005B 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 005B 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 005B 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005B 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 005B 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 005B 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 2680 005B 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005B 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005B 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 2680 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 005B 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 2680 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005B 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0029 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005B 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 005B 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 005B 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005B 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and ([)\n0061 2680 0028 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 005B 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 005B 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 005B 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 005B 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 005B 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 005B 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005B 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005B 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005B 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 005B 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 005B 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 005B 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005B 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005B 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005B 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005B 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005B 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ([)\n0061 0028 0062 2680 005B 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 005B 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005B 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 005B 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0062 2680 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0062 0029 2680;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, L, L and ([)\n0061 0028 0062 005B 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005B 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005B 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 005B 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005B 0062 0029 0063;1;1;1 2 2 2 1 2;5 4 1 2 3 0\n\n# L, L, R and ([)\n0061 0028 0062 05D0 005B 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 005B 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 005B 05D0 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 005B 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 005B 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005B 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005B 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 005B 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005B 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 005B 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005B 0062 05D0 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 005B 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005B 0062 0029 05D0;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, R, ON and ([)\n0061 0028 05D0 2680 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 005B 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 005B 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ([)\n0061 0028 05D0 0062 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 005B 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 005B 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005B 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 005B 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005B 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 005B 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 005B 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005B 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 005B 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005B 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 005B 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005B 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ([)\n0061 0028 05D0 005B 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0061 0028 05D0 005B 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005B 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 005B 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005B 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0028 005B 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0061 05D0 005B 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005B 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 005B 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005B 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0061 005B 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005B 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 005B 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ([)\n05D0 2680 0028 2681 005B 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ([)\n05D0 2680 0028 0061 005B 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 005B 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005B 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005B 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 005B 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005B 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005B 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005B 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005B 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ([)\n05D0 2680 0028 05D1 005B 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005B 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005B 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 2680 005B 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005B 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 005B 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 005B 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 2680 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005B 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0029 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005B 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 005B 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005B 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005B 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005B 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ([)\n05D0 0028 0061 2680 005B 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ([)\n05D0 0028 0061 005B 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n05D0 0028 0061 005B 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005B 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 005B 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005B 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 05D0 0061 005B 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 05D0 0061 005B 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005B 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 005B 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005B 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 005B 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005B 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and ([)\n05D0 0028 0061 05D1 005B 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 005B 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005B 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 005B 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 005B 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005B 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 005B 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 005B 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 005B 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005B 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 005B 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 005B 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005B 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005B 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 005B 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005B 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005B 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ([)\n05D0 0028 05D1 2680 005B 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 005B 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005B 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005B 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005B 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ([)\n05D0 0028 05D1 0061 005B 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 005B 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 005B 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 005B 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 005B 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005B 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005B 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 0061;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005B 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ([)\n05D0 0028 05D1 005B 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 05D2;0;0;0 1 1 1 0 1;0 3 2 1 4 5\n0028 05D0 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ([)\n2680 0028 2681 005B 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ([)\n2680 0028 2681 005B 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ([)\n2680 0028 2681 005B 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ([)\n2680 0028 2681 0061 2682 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ([)\n2680 0028 2681 0061 005B 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 2681 0061 005B 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and ([)\n2680 0028 2681 0061 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 005B 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ([)\n2680 0028 2681 05D0 2682 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ([)\n2680 0028 2681 05D0 0061 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ([)\n2680 0028 2681 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 2681 05D0 005B 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005B 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005B 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 005B 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 005B 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ([)\n2680 0028 0061 2681 005B 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ([)\n2680 0028 0061 2681 0062 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 005B 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 005B 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 2681 005B 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 005B 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 005B 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 005B 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 005B 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 2681 005B 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 005B 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 005B 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005B 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and ([)\n2680 0028 0061 2681 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 005B 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 005B 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ([)\n2680 0028 0061 005B 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# ON, L, L, L and ([)\n2680 0028 0061 005B 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# ON, L, L, R and ([)\n2680 0028 0061 005B 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 005B 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005B 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# ON, L, R, ON and ([)\n2680 0028 0061 05D0 2681 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ([)\n2680 0028 0061 05D0 0062 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 005B 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 005B 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ([)\n2680 0028 0061 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0061 05D0 005B 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005B 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005B 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 005B 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0061 05D0 005B 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005B 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005B 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 005B 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ([)\n2680 0028 05D0 2681 005B 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ([)\n2680 0028 05D0 2681 0061 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ([)\n2680 0028 05D0 2681 05D1 005B 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 2681 005B 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005B 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 005B 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005B 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 005B 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 005B 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 2681 005B 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005B 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 005B 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005B 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 005B 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005B 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ([)\n2680 0028 05D0 0061 2681 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ([)\n2680 0028 05D0 0061 005B 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 05D0 0061 005B 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 05D0 0061 005B 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and ([)\n2680 0028 05D0 0061 05D1 005B 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005B 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005B 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005B 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005B 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 005B 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005B 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005B 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005B 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005B 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ([)\n2680 0028 05D0 005B 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ([)\n2680 0028 05D0 005B 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005B 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ([)\n2680 0028 05D0 005B 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n2680 0028 05D0 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005B 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 2680 05D0 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ([)\n0061 2680 0028 2681 005B 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ([)\n0061 2680 0028 2681 0062 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 005B 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 005B 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and ([)\n0061 2680 0028 2681 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 005B 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 005B 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ([)\n0061 2680 0028 0062 2681 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 005B 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 2681 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 005B 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 2681 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 005B 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 2681 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 0029 2681;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 2681 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 0029 2681;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005B 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ([)\n0061 2680 0028 0062 005B 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 0062 005B 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 005B 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and ([)\n0061 2680 0028 0062 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 005B 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 005B 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005B 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 005B 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 005B 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005B 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 005B 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 005B 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005B 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 2680 005B 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005B 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 2680 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005B 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005B 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ([)\n0061 2680 0028 05D0 2681 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 005B 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 005B 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 005B 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ([)\n0061 2680 0028 05D0 0062 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 005B 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 005B 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 005B 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ([)\n0061 2680 0028 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 2680 0028 05D0 005B 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005B 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005B 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 2680 05D0 005B 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005B 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005B 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 005B 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 2680 05D0 005B 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005B 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005B 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 005B 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ([)\n0061 0028 0062 2680 005B 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 005B 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, ON, L and ([)\n0061 0028 0062 2680 0063 005B 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 005B 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005B 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 2680 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n\n# L, L, ON, R and ([)\n0061 0028 0062 2680 05D0 005B 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 005B 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 005B 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 005B 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005B 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005B 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005B 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 005B 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0062 2680 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0062 0029 2680 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, L, ON and ([)\n0061 0028 0062 005B 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and ([)\n0061 0028 0062 005B 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ([)\n0061 0028 0062 005B 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 05D0 0029;1;1;2 1 2 2 2 1 1;6 5 2 3 4 1 0\n0061 0028 0062 005B 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and ([)\n0061 0028 0062 05D0 2680 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 005B 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 2680 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 0029 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 2680 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 0029 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 2680 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 0029 2680;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, R, L and ([)\n0061 0028 0062 05D0 0063 005B 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 005B 0029;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 0063 0029;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 0029 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 0063 0029;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 0029 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 0063 0029;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 005B 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n\n# L, L, R, R and ([)\n0061 0028 0062 05D0 005B 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0062 05D0 005B 05D1 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005B 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005B 0029 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005B 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005B 05D0 0029 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 005B 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 005B 0062 05D0 0029 05D1;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, R, ON, ON and ([)\n0061 0028 05D0 2680 005B 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ([)\n0061 0028 05D0 2680 0062 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 005B 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 005B 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ([)\n0061 0028 05D0 2680 05D1 005B 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 005B 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 2680 005B 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005B 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 005B 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005B 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 005B 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 005B 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 005B 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 2680 005B 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005B 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 005B 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005B 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 005B 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005B 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ([)\n0061 0028 05D0 0062 2680 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 005B 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 005B 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 005B 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ([)\n0061 0028 05D0 0062 005B 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 0063 0029;1;1;2 1 1 2 2 2 1;6 3 4 5 2 1 0\n0061 0028 05D0 0062 005B 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 0063 0029;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 05D0 0062 005B 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and ([)\n0061 0028 05D0 0062 05D1 005B 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 005B 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005B 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005B 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005B 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005B 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 005B 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 005B 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005B 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005B 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005B 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005B 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005B 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005B 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ([)\n0061 0028 05D0 005B 05D1 2680 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 2680;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 2680 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 2680;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ([)\n0061 0028 05D0 005B 05D1 0062 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005B 05D1 0029 0062;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0062 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 0062;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ([)\n0061 0028 05D0 005B 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0061 0028 05D0 005B 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005B 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 0061 05D0 005B 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ([)\n05D0 2680 0028 2681 005B 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ([)\n05D0 2680 0028 2681 0061 005B 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ([)\n05D0 2680 0028 2681 05D1 005B 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 05D1 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005B 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 005B 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 2681 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005B 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ([)\n05D0 2680 0028 0061 2681 005B 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 005B 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 005B 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ([)\n05D0 2680 0028 0061 005B 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 2680 0028 0061 005B 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 2680 0061 005B 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 2680 0061 005B 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and ([)\n05D0 2680 0028 0061 05D1 005B 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005B 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005B 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 005B 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 005B 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005B 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005B 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 005B 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 005B 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005B 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005B 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005B 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ([)\n05D0 2680 0028 05D1 2681 005B 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 2681 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 005B 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005B 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005B 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 005B 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005B 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 005B 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 2681 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 2681;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 2681 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 2681;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ([)\n05D0 2680 0028 05D1 0061 005B 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005B 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005B 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 005B 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005B 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005B 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 005B 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ([)\n05D0 2680 0028 05D1 005B 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005B 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005B 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 05D1 005B 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005B 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005B 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005B 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 2680 005B 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 2680 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 005B 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 005B 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ([)\n05D0 0028 0061 2680 005B 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ([)\n05D0 0028 0061 2680 0062 005B 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 005B 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 005B 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 2680 005B 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 005B 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 005B 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 005B 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 005B 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 005B 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 2680 005B 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 005B 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 005B 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005B 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and ([)\n05D0 0028 0061 2680 05D1 005B 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005B 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005B 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 005B 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005B 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005B 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ([)\n05D0 0028 0061 005B 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 2680 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 0029 2680;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 2680 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 0029 2680;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# R, L, L, L and ([)\n05D0 0028 0061 005B 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# R, L, L, R and ([)\n05D0 0028 0061 005B 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 05D1 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 005B 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 0062 0029 05D1;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 05D1 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005B 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 0062 0029 05D1;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# R, L, R, ON and ([)\n05D0 0028 0061 05D1 2680 005B 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 005B 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 005B 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ([)\n05D0 0028 0061 05D1 0062 005B 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 005B 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 005B 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 005B 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ([)\n05D0 0028 0061 05D1 005B 05D2 0029;0;0;1 0 0 1 1 1 0;0 1 2 5 4 3 6\n05D0 0028 0061 05D1 005B 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005B 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005B 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005B 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005B 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 05D2 0029;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0061 05D1 005B 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005B 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005B 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005B 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005B 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 005B 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005B 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0028 005B 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ([)\n05D0 0028 05D1 2680 005B 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 005B 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ([)\n05D0 0028 05D1 2680 0061 005B 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 005B 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 005B 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 005B 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005B 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005B 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005B 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ([)\n05D0 0028 05D1 2680 05D2 005B 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 05D2 005B 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005B 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005B 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 2680 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0029 2680 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ([)\n05D0 0028 05D1 0061 2680 005B 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 2680 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 2680 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 2680 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 2680;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ([)\n05D0 0028 05D1 0061 005B 0062 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 05D1 0061 005B 0029 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 0062;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and ([)\n05D0 0028 05D1 0061 05D2 005B 0029;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 005B 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 05D2 0029;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005B 0029 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005B 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 05D2 0029;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 0061 0029 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 005B 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005B 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005B 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 05D2 0029;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005B 05D1 0061 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005B 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ([)\n05D0 0028 05D1 005B 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ([)\n05D0 0028 05D1 005B 05D2 0061 0029;0;0;1 0 1 1 1 0 0;0 1 4 3 2 5 6\n05D0 0028 05D1 005B 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005B 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ([)\n05D0 0028 05D1 005B 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005B 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ()[\n0028 0029 005B;0;0;0 0 0;0 1 2\n0028 0029 005B;1;1;1 1 1;2 1 0\n\n# ON and ()[\n2680 0028 0029 005B;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 005B;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 005B;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 005B;1;1;1 1 1 1;3 2 1 0\n0028 0029 2680 005B;0;0;0 0 0 0;0 1 2 3\n0028 0029 2680 005B;1;1;1 1 1 1;3 2 1 0\n0028 0029 005B 2680;0;0;0 0 0 0;0 1 2 3\n0028 0029 005B 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ()[\n0061 0028 0029 005B;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 005B;1;1;2 1 1 1;3 2 1 0\n0028 0061 0029 005B;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 005B;1;1;1 2 1 1;3 2 1 0\n0028 0029 0061 005B;0;0;0 0 0 0;0 1 2 3\n0028 0029 0061 005B;1;1;1 1 2 1;3 2 1 0\n0028 0029 005B 0061;0;0;0 0 0 0;0 1 2 3\n0028 0029 005B 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ()[\n05D0 0028 0029 005B;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 005B;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 005B;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 005B;1;1;1 1 1 1;3 2 1 0\n0028 0029 05D0 005B;0;0;0 0 1 0;0 1 2 3\n0028 0029 05D0 005B;1;1;1 1 1 1;3 2 1 0\n0028 0029 005B 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0029 005B 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ()[\n2680 0028 2681 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 2681 005B;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 2681 005B;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 005B 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 005B 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 2681 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 2681 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 005B 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 005B 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 005B 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 005B 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ()[\n2680 0028 0061 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 005B;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0029 0061 005B;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 0029 005B 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 005B;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0029 0061 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 0029 005B 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 2680 0061 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 2680 005B 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 005B 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005B 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ()[\n2680 0028 05D0 0029 005B;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0029 05D0 005B;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0029 005B 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 005B;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0029 05D0 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0029 005B 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 2680 05D0 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 2680 005B 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005B 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 005B 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ()[\n0061 2680 0028 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 005B;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 005B;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 2680 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 2680 005B;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 005B 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 005B 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 005B;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 2680 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 2680 005B;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 005B 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 005B 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 2680 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 2680 005B;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 005B 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 005B 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ()[\n0061 0028 0062 0029 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 005B;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0062 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0062 005B;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 005B 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 005B 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 0029 0062 005B;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0062 005B;1;1;1 2 1 2 1;4 3 2 1 0\n0028 0061 0029 005B 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 005B 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 0029 0061 005B 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 005B 0062;1;1;1 1 2 2 2;2 3 4 1 0\n\n# L, R and ()[\n0061 0028 05D0 0029 005B;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 005B;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0029 05D0 005B;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0029 005B 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 005B;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 005B;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 0029 05D0 005B;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0029 005B 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 05D0 005B;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 0061 05D0 005B;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 005B 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0061 005B 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ()[\n05D0 2680 0028 0029 005B;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 005B;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 005B;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 2680 005B;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005B 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 005B 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 005B;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 2680 005B;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 2680 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 005B 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 005B 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 2680 005B;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 2680 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 005B 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 005B 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ()[\n05D0 0028 0061 0029 005B;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 005B;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0029 0061 005B;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 0029 005B 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 0029 005B;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 005B;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0029 0061 005B;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 0029 005B 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 05D0 0061 005B;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0061 005B;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 05D0 005B 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 005B 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ()[\n05D0 0028 05D1 0029 005B;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 005B;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 05D1 005B;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 0029 05D1 005B;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005B 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005B 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 05D1 005B;0;0;0 1 0 1 0;0 1 2 3 4\n0028 05D0 0029 05D1 005B;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 005B 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0029 005B 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 005B 05D1;0;0;0 0 1 1 1;0 1 4 3 2\n0028 0029 05D0 005B 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ()[\n2680 0028 2681 0029 2682 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 2682 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 005B 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 005B 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 005B 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ()[\n2680 0028 2681 0061 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 0029 005B 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 2681 005B 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 005B 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005B 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 2681 005B 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 005B 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005B 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 005B 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005B 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ()[\n2680 0028 2681 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0029 05D0 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0029 005B 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 2681 05D0 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 2681 005B 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005B 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 005B 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 2681 05D0 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 2681 005B 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005B 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 005B 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005B 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 005B 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ()[\n2680 0028 0061 2681 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 2681 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 005B 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 2681 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 005B 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 2681 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 005B 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 2681 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 005B 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 2681 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 005B 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ()[\n2680 0028 0061 0029 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0062 005B;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n2680 0028 0061 0029 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 005B 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0061 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 2680 0061 0029 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0062 005B;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 2680 0061 0029 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 005B 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0061 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 2680 0061 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# ON, L, R and ()[\n2680 0028 0061 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 0029 05D0 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0029 005B 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 0061 05D0 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0061 005B 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 0029 05D0 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0029 005B 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 0061 05D0 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0061 005B 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 0061 05D0 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0061 005B 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ()[\n2680 0028 05D0 2681 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ()[\n2680 0028 05D0 0061 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005B 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005B 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005B 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005B 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005B 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ()[\n2680 0028 05D0 0029 05D1 005B;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n2680 0028 05D0 0029 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005B 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0029 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n2680 0028 0029 05D0 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 2680 05D0 0029 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005B 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0029 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 2680 0029 05D0 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 2680 05D0 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ()[\n0061 2680 0028 2681 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 2681 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 005B 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 2681 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 005B 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 005B 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 2681 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 005B 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 005B 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 005B 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ()[\n0061 2680 0028 0062 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0062 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 005B 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0062 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 005B 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 2680 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0062 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0029 2680 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 005B 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 005B 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005B 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 005B;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0029 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0062 005B;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 2680 0029 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 005B 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0062 005B;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 2680 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 005B 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 005B 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005B 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 2680 0062 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0062 005B;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 0029 0061 2680 005B 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 005B 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 005B 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005B 2680 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n\n# L, ON, R and ()[\n0061 2680 0028 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0029 05D0 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0029 005B 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0029 05D0 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0029 005B 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 2680 05D0 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 2680 005B 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005B 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 005B 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0029 05D0 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0029 005B 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 2680 05D0 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 2680 005B 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005B 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 005B 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 2680 05D0 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 2680 005B 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005B 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 005B 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ()[\n0061 0028 0062 2680 0029 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 2680 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 2680 005B;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 005B 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 2680 005B;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 005B 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 2680 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 2680 005B;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 005B 2680;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, L, L and ()[\n0061 0028 0062 0029 0063 005B;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0063 005B;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 005B 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 005B 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0062 005B 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 005B 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 005B 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 005B 0063;1;1;1 2 1 2 2 2;3 4 5 2 1 0\n\n# L, L, R and ()[\n0061 0028 0062 05D0 0029 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 005B;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 0029 05D0 005B;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0029 005B 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 0062 05D0 005B;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0062 005B 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 05D0 005B;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 0062 05D0 005B;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 005B 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0062 005B 05D0;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, R, ON and ()[\n0061 0028 05D0 2680 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 005B 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 2680 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 005B 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 005B 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 2680 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 005B 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 2680 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 005B 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ()[\n0061 0028 05D0 0062 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 005B;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0062 005B;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005B 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 005B 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0062 005B;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005B 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 005B 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 005B;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0062 005B;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005B 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 005B 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0062 005B;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005B 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 005B 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0062 005B;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005B 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 005B 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ()[\n0061 0028 05D0 0029 05D1 005B;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0061 0028 05D0 0029 05D1 005B;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005B 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0029 005B 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0061 0028 0029 05D0 005B 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0061 05D0 0029 05D1 005B;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005B 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0029 005B 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0061 0029 05D0 005B 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005B 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 0061 05D0 005B 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ()[\n05D0 2680 0028 2681 0029 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 005B 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ()[\n05D0 2680 0028 0061 0029 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005B 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005B 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005B 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 005B 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005B 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005B 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005B 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 005B 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005B 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005B 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 005B 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005B 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ()[\n05D0 2680 0028 05D1 0029 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 0029 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 0029 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0029 2680 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005B 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 2680 0029 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005B 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0029 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 2680 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005B 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 2680 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005B 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 005B 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0029 05D0 2680 05D1 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005B 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 2680 005B 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005B 2680 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 005B 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ()[\n05D0 0028 0061 2680 0029 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 005B 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 2680 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 005B 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 005B 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 2680 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 005B 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 2680 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 005B 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ()[\n05D0 0028 0061 0029 0062 005B;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0062 005B;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005B 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 005B 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0061 005B 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 05D0 0061 0029 0062 005B;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0062 005B;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005B 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 005B 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0061 005B 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 05D0 0061 005B 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 005B 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# R, L, R and ()[\n05D0 0028 0061 05D1 0029 005B;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 0029 05D1 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005B 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0029 005B 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0029 0061 05D1 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 005B 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0029 0061 005B 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 0029 05D1 005B;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005B 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0029 005B 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 0061 05D1 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 005B 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0061 005B 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0029 05D0 0061 05D1 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 005B 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0029 05D0 0061 005B 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ()[\n05D0 0028 05D1 2680 0029 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 2680 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 005B 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 2680 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 005B 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 2680 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 005B 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ()[\n05D0 0028 05D1 0061 0029 005B;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 005B;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0061 005B;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 0061;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 005B 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ()[\n05D0 0028 05D1 0029 05D2 005B;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 0029 05D2 005B;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 05D2;0;0;0 1 0 1 1 1;0 1 2 5 4 3\n0028 05D0 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ()[\n2680 0028 2681 0029 2682 005B 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005B 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ()[\n2680 0028 2681 0029 2682 0061 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ()[\n2680 0028 2681 0029 2682 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 05D0 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005B 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005B 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 005B 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005B 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 005B 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005B 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 005B 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ()[\n2680 0028 2681 0061 2682 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 2682 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005B 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 2682 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005B 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 2682 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005B 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 2682 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005B 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ()[\n2680 0028 2681 0061 0029 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 2681 0061 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 2681 0061 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, ON, L, R and ()[\n2680 0028 2681 0061 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 05D0 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005B 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 05D0 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005B 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 05D0 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005B 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 05D0 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005B 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ()[\n2680 0028 2681 05D0 2682 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ()[\n2680 0028 2681 05D0 0061 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ()[\n2680 0028 2681 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 2681 0029 05D0 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 2681 05D0 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 2681 05D0 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ()[\n2680 0028 0061 2681 0029 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 2682 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005B 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005B 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005B 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 2682 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005B 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005B 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005B 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005B 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ()[\n2680 0028 0061 2681 0062 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 0029 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0061 2681 0062 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 0029 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# ON, L, ON, R and ()[\n2680 0028 0061 2681 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 05D0 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005B 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 05D0 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005B 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 005B 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 05D0 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005B 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 005B 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 05D0 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005B 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 05D0 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005B 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 005B 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 05D0 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005B 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 005B 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 05D0 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005B 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 005B 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ()[\n2680 0028 0061 0029 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 2681 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005B 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 2681 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005B 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, L and ()[\n2680 0028 0061 0029 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005B 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0061 0029 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005B 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, L, L, R and ()[\n2680 0028 0061 0029 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 05D0 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005B 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 05D0 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005B 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, ON and ()[\n2680 0028 0061 05D0 2681 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ()[\n2680 0028 0061 05D0 0062 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 0029 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 0029 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ()[\n2680 0028 0061 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0061 0029 05D0 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 0061 05D0 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0061 0029 05D0 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 0061 05D0 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 2680 0061 05D0 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ()[\n2680 0028 05D0 2681 0029 2682 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ()[\n2680 0028 05D0 2681 0061 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ()[\n2680 0028 05D0 2681 05D1 0029 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005B 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0029 05D0 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005B 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005B 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0029 05D0 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005B 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 2680 05D0 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005B 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ()[\n2680 0028 05D0 0061 2681 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ()[\n2680 0028 05D0 0061 0029 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 05D0 0061 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 05D0 0061 0029 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 05D0 0061 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 2680 05D0 0061 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, R, L, R and ()[\n2680 0028 05D0 0061 05D1 0029 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ()[\n2680 0028 05D0 0029 05D1 2681 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ()[\n2680 0028 05D0 0029 05D1 0061 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005B 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ()[\n2680 0028 05D0 0029 05D1 005B 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 05D0 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005B 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 05D0 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ()[\n0061 2680 0028 2681 0029 2682 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 2682 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005B 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005B 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005B 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005B 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ()[\n0061 2680 0028 2681 0062 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 0029 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0062 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005B 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005B 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005B 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, ON, R and ()[\n0061 2680 0028 2681 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 0029 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 05D0 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005B 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 05D0 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005B 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 005B 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 05D0 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005B 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 005B 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 005B 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 05D0 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005B 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 005B 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 005B 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005B 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 005B 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ()[\n0061 2680 0028 0062 2681 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 0029 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 2681 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 2681 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 005B;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 2681 005B;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005B 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 2681 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005B 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 2681 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005B 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 2681 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005B 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ()[\n0061 2680 0028 0062 0029 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0063 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 005B;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005B 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005B 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 2680 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005B 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 2680 0062 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005B 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, L, R and ()[\n0061 2680 0028 0062 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 0029 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 005B;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 05D0 005B;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005B 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 05D0 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005B 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 05D0 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005B 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 05D0 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005B 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ()[\n0061 2680 0028 05D0 2681 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 0029 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 0029 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 0029 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 2681 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 2681 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 2681 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ()[\n0061 2680 0028 05D0 0062 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 0029 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 0029 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 0029 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ()[\n0061 2680 0028 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 05D1 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 2680 0028 0029 05D0 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 05D1 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 2680 0029 05D0 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 2680 05D0 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 05D1 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 2680 0029 05D0 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 2680 05D0 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 0061 2680 05D0 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ()[\n0061 0028 0062 2680 0029 2681 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 2681 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005B 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005B 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005B 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 005B 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005B 2681;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, L and ()[\n0061 0028 0062 2680 0063 0029 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 0029 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0063 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 005B;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005B 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 005B;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 005B 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005B 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 005B 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 2680 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n\n# L, L, ON, R and ()[\n0061 0028 0062 2680 05D0 0029 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 0029 005B;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 05D0 005B;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005B 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005B 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 005B 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 05D0 005B;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005B 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005B 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 005B 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 05D0 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005B 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005B 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 005B 2680 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, L, ON and ()[\n0061 0028 0062 0029 0063 2680 005B;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 2680 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005B 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, L, L and ()[\n0061 0028 0062 0029 0063 005B 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005B 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ()[\n0061 0028 0062 0029 0063 05D0 005B;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 05D0 005B;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005B 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005B 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, R, ON and ()[\n0061 0028 0062 05D0 2680 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 0029 005B;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 2680 005B;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005B 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 2680 005B;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 005B 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 2680 005B;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 005B 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 2680 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 2680 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 005B 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and ()[\n0061 0028 0062 05D0 0063 0029 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 0029 005B;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0063 005B;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005B 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0063 005B;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005B 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 005B 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0063 005B;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 005B 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0063 005B;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0063 005B;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005B 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 005B 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and ()[\n0061 0028 0062 05D0 0029 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 05D1 005B;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005B 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0062 0029 05D0 005B 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 0062 05D0 005B 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 005B 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 0062 05D0 005B 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and ()[\n0061 0028 05D0 2680 0029 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 2681 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 005B 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 2681 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 005B 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ()[\n0061 0028 05D0 2680 0062 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 0029 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005B 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 0029 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005B 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005B 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ()[\n0061 0028 05D0 2680 05D1 0029 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 0029 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 05D1 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 05D1 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005B 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005B 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0029 05D0 2680 05D1 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 2680 005B 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005B 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 005B 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 0029 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 05D1 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 05D1 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005B 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005B 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 0029 05D0 2680 05D1 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 2680 005B 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005B 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 005B 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 005B;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 0061 05D0 2680 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005B 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 2680 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005B 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 005B 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ()[\n0061 0028 05D0 0062 2680 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 0029 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 2680 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005B 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 2680 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005B 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 2680 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005B 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 0029 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 2680 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005B 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 2680 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005B 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 2680 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005B 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 005B;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 2680 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005B 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ()[\n0061 0028 05D0 0062 0029 0063 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0063 005B;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005B 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005B 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0061 0028 0029 05D0 0062 005B 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005B 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 05D0 0062 0029 0063 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0063 005B;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005B 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005B 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 05D0 0062 005B 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005B 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 05D0 0062 005B 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005B 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# L, R, L, R and ()[\n0061 0028 05D0 0062 05D1 0029 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 0029 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 05D1 005B;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005B 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 05D1 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005B 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 05D1 005B;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005B 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 0029 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 05D1 005B;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005B 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 05D1 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005B 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 05D1 005B;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005B 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 005B;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 05D1 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005B 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005B 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ()[\n0061 0028 05D0 0029 05D1 2680 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 2680 005B;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 005B 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 2680 005B;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 005B 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ()[\n0061 0028 05D0 0029 05D1 0062 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0062 005B;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005B 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 005B 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0062 005B;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 005B 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ()[\n0061 0028 05D0 0029 05D1 005B 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 05D0 0029 05D1 005B 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005B 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 05D0 0029 05D1 005B 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ()[\n05D0 2680 0028 2681 0029 2682 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 2682 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005B 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ()[\n05D0 2680 0028 2681 0061 0029 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005B 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ()[\n05D0 2680 0028 2681 05D1 0029 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 05D1 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 0029 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0029 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0029 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 05D1 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005B 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005B 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005B 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005B 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 005B 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ()[\n05D0 2680 0028 0061 2681 0029 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 2681 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 2681 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005B 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ()[\n05D0 2680 0028 0061 0029 0062 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 2680 0061 0029 0062 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 2680 0061 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 2680 0061 0029 0062 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 2680 0061 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 05D0 2680 0061 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, ON, L, R and ()[\n05D0 2680 0028 0061 05D1 0029 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 05D1 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005B 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ()[\n05D0 2680 0028 05D1 2681 0029 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 2681 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 2681 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 005B;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 005B;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ()[\n05D0 2680 0028 05D1 0061 0029 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 005B;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 005B;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 005B;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ()[\n05D0 2680 0028 05D1 0029 05D2 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 0029 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 0029 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 005B;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005B 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005B 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 2680 0029 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005B 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 2680 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005B 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 05D1 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ()[\n05D0 0028 0061 2680 0029 2681 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 2681 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005B 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005B 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ()[\n05D0 0028 0061 2680 0062 0029 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 0029 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 005B 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 005B 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0061 2680 0062 0029 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 0029 005B;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 005B 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 005B 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 2680 0062 005B;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0062 005B;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 005B 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005B 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 005B 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# R, L, ON, R and ()[\n05D0 0028 0061 2680 05D1 0029 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005B 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005B 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005B 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005B 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 05D1 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005B 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005B 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005B 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005B 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005B 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 005B;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 05D1 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005B 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005B 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005B 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005B 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ()[\n05D0 0028 0061 0029 0062 2680 005B;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 2680 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005B 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 2680 005B;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 2680 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005B 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L, L and ()[\n05D0 0028 0061 0029 0062 005B 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005B 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0061 0029 0062 005B 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005B 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# R, L, L, R and ()[\n05D0 0028 0061 0029 0062 05D1 005B;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 05D1 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005B 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005B 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 05D1 005B;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 05D1 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005B 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005B 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, R, ON and ()[\n05D0 0028 0061 05D1 2680 0029 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 2680 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005B 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 2680 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 005B 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 2680 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 005B 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 0029 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 2680 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005B 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 2680 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 005B 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 2680 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 005B 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 2680 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 005B 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ()[\n05D0 0028 0061 05D1 0062 0029 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 0029 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 005B;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 005B;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 0029 005B;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0062 005B;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 005B 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 005B;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 005B;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ()[\n05D0 0028 0061 05D1 0029 05D2 005B;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 05D2 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005B 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005B 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005B 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0061 0029 05D1 005B 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005B 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0029 0061 05D1 005B 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 005B;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 05D2 005B;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005B 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005B 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005B 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0061 0029 05D1 005B 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005B 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 0061 05D1 005B 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005B 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 05D0 0061 05D1 005B 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ()[\n05D0 0028 05D1 2680 0029 2681 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 2681 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 2681;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 005B 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ()[\n05D0 0028 05D1 2680 0061 0029 005B;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 0029 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 005B;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005B 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 005B;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005B 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005B 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ()[\n05D0 0028 05D1 2680 05D2 0029 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 05D2 0029 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 0029 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0029 2680 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005B 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 005B;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 05D1 2680 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005B 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 005B;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0029 05D1 2680 05D2 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005B 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 2680 005B 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005B 2680 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 005B 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ()[\n05D0 0028 05D1 0061 2680 0029 005B;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 005B;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 2680 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005B 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 005B;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 2680 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005B 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 005B;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 2680 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005B 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 005B;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 2680 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005B 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ()[\n05D0 0028 05D1 0061 0029 0062 005B;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0062 005B;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005B 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005B 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, R, L, R and ()[\n05D0 0028 05D1 0061 05D2 0029 005B;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 0029 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 005B;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 05D2 005B;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005B 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005B 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 005B;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 05D2 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005B 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005B 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 005B;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 05D2 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005B 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005B 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 005B;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 05D2 005B;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005B 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005B 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ()[\n05D0 0028 05D1 0029 05D2 2680 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 2680 005B;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 005B 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ()[\n05D0 0028 05D1 0029 05D2 0061 005B;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0061 005B;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 005B 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ()[\n05D0 0028 05D1 0029 05D2 005B 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005B 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# )()\n0029 0028 0029;0;0;0 0 0;0 1 2\n0029 0028 0029;1;1;1 1 1;2 1 0\n\n# ON and )()\n2680 0029 0028 0029;0;0;0 0 0 0;0 1 2 3\n2680 0029 0028 0029;1;1;1 1 1 1;3 2 1 0\n0029 2680 0028 0029;0;0;0 0 0 0;0 1 2 3\n0029 2680 0028 0029;1;1;1 1 1 1;3 2 1 0\n0029 0028 2680 0029;0;0;0 0 0 0;0 1 2 3\n0029 0028 2680 0029;1;1;1 1 1 1;3 2 1 0\n0029 0028 0029 2680;0;0;0 0 0 0;0 1 2 3\n0029 0028 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and )()\n0061 0029 0028 0029;0;0;0 0 0 0;0 1 2 3\n0061 0029 0028 0029;1;1;2 1 1 1;3 2 1 0\n0029 0061 0028 0029;0;0;0 0 0 0;0 1 2 3\n0029 0061 0028 0029;1;1;1 2 1 1;3 2 1 0\n0029 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n0029 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n0029 0028 0029 0061;0;0;0 0 0 0;0 1 2 3\n0029 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and )()\n05D0 0029 0028 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0029 0028 0029;1;1;1 1 1 1;3 2 1 0\n0029 05D0 0028 0029;0;0;0 1 0 0;0 1 2 3\n0029 05D0 0028 0029;1;1;1 1 1 1;3 2 1 0\n0029 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0029 0028 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0029 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0029 0028 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and )()\n2680 0029 2681 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 2681 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0029 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0029 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0029 2680 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 2680 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 2680 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0029 2680 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and )()\n2680 0029 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0029 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0029 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0029 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0029 2680 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 2680 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0029 2680 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 2680 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0029 2680 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0029 2680 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0029 0028 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0029 0028 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0029 0028 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and )()\n2680 0029 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0029 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0029 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0029 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0029 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0029 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0029 2680 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0029 2680 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 2680 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0029 2680 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 2680 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0029 2680 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0029 0028 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0029 0028 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0029 0028 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and )()\n0061 2680 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0029 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0029 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 2680 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0029 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 0028 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0029 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 0028 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0029 0061 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0061 2680 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0061 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0061 0028 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0061 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0061 0028 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0028 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0029 0028 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and )()\n0061 0029 0062 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 0062 0028 0029;1;1;2 2 2 1 1;4 3 0 1 2\n0061 0029 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 0028 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0029 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0029 0028 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0029 0061 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0061 0028 0062 0029;1;1;1 2 2 2 2;1 2 3 4 0\n0029 0061 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0061 0028 0029 0062;1;1;1 2 2 2 2;1 2 3 4 0\n0029 0028 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0029 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and )()\n0061 0029 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0029 05D0 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0029 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0029 0028 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0029 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0029 0028 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0029 0061 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0029 0061 05D0 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0061 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0029 0061 0028 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0061 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0029 0061 0028 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0029 0028 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0029 0028 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0029 0028 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0029 0028 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and )()\n05D0 2680 0029 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0029 2680 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0029 05D0 2680 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 05D0 0028 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 05D0 0028 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0029 0028 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0029 0028 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and )()\n05D0 0029 0061 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0029 0028 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0029 0028 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0029 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0029 05D0 0061 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0029 05D0 0028 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0029 05D0 0028 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0029 05D0 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0029 0028 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0029 0028 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0029 0028 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0029 0028 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and )()\n05D0 0029 05D1 0028 0029;0;0;1 1 1 0 0;2 1 0 3 4\n05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0029 05D0 0028 05D1 0029;0;0;0 1 1 1 1;0 4 3 2 1\n0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0029 05D0 0028 0029 05D1;0;0;0 1 1 1 1;0 4 3 2 1\n0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0029 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and )()\n2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and )()\n2680 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 2681 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and )()\n2680 0029 2681 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and )()\n2680 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and )()\n2680 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0029 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0029 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0029 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0029 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 2680 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0029 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and )()\n2680 0029 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0029 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0029 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0029 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0029 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0029 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 2680 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 2680 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 2680 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 2680 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 2680 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 2680 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 2680 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 0028 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0028 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and )()\n2680 0029 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and )()\n2680 0029 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0029 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0029 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0029 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0029 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 2680 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 2680 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 2680 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 2680 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 2680 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 2680 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 0028 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 0028 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and )()\n2680 0029 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0029 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0029 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0029 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0029 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and )()\n0061 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0029 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 2680 0028 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 2680 0028 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and )()\n0061 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0029 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 2680 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 2680 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 2680 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0029 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 2680 0062 0028 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0029 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 2680 0028 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 2680 0028 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 2680 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 2680 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 0029 2680 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0029 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0029 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0028 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and )()\n0061 2680 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0029 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0029 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0029 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 2680 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0029 2680 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0029 2680 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0029 0028 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0029 0028 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0029 0028 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0029 0061 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0061 2680 05D0 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 0061 2680 0028 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0061 2680 0028 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 0061 0028 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0061 0028 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0061 0028 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0028 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 0028 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0028 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0028 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and )()\n0061 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0062 2680 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0062 0028 2680 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0062 0028 0029 2680;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0029 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 0062 2680 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n0029 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 0062 0029 2680;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, L, L and )()\n0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0029 0061 0028 0062 0029 0063;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n\n# L, L, R and )()\n0061 0029 0062 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 0062 05D0 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0029 0062 0028 05D0 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0029 0062 0028 0029 05D0;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0029 0028 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0029 0061 0028 0062 05D0 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0029 0061 0028 0062 0029 05D0;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, R, ON and )()\n0061 0029 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 2680 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 0028 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 0028 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 0028 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 0028 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0029 0061 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 2680 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 0028 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 0028 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0061 0028 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0061 0028 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0028 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 0028 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and )()\n0061 0029 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 0062 0028 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0029 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 0028 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0029 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0029 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 0028 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0029 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0029 0061 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 0062 0028 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0029 0061 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 0028 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0029 0061 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0061 05D0 0028 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0029 0061 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0061 0028 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0029 0061 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0061 0028 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0029 0028 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0029 0028 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0029 0028 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and )()\n0061 0029 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0029 0061 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0029 0061 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0029 0061 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0029 0028 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and )()\n05D0 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 2680 0028 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 2680 0028 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and )()\n05D0 2680 0029 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0029 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0029 2680 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 2680 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0029 0028 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 0028 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0029 0028 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 05D0 2680 0061 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 05D0 2680 0028 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 05D0 2680 0028 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 05D0 0028 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 05D0 0028 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 05D0 0028 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 0028 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 0028 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 0028 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and )()\n05D0 2680 0029 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0029 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 2680 0028 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 2680 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 0029 2680 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0029 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0029 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 0028 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0029 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and )()\n05D0 0029 0061 2680 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0061 0028 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0061 0028 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0029 0028 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 05D0 0061 2680 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0061 0028 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0061 0028 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 05D0 0028 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and )()\n05D0 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0029 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0029 05D0 0061 0028 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0029 05D0 0061 0028 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0029 05D0 0028 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0029 05D0 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0029 0028 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0029 0028 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and )()\n05D0 0029 0061 05D1 0028 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0029 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0029 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0029 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0029 05D0 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0029 05D0 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0061 0028 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0029 05D0 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 05D0 0028 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0029 0028 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and )()\n05D0 0029 05D1 2680 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 2680;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 05D1 0029 2680;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0029 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and )()\n05D0 0029 05D1 0061 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 0061 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 0061;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0029 05D0 0028 05D1 0029 0061;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and )()\n05D0 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0029 05D0 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and )()\n2680 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and )()\n2680 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and )()\n2680 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and )()\n2680 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 2682 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and )()\n2680 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and )()\n2680 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and )()\n2680 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and )()\n2680 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and )()\n2680 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and )()\n2680 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and )()\n2680 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0029 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0029 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0029 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and )()\n2680 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and )()\n2680 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0029 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, L, L and )()\n2680 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# ON, L, L, R and )()\n2680 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0029 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, R, ON and )()\n2680 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and )()\n2680 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and )()\n2680 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0029 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0029 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0029 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0029 2680 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0029 2680 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 2680 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and )()\n2680 0029 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and )()\n2680 0029 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and )()\n2680 0029 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0029 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0029 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and )()\n2680 0029 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and )()\n2680 0029 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0029 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0029 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 2680 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0029 2680 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0029 2680 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and )()\n2680 0029 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and )()\n2680 0029 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0029 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and )()\n2680 0029 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0029 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0029 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and )()\n2680 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and )()\n0061 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and )()\n0061 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and )()\n0061 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and )()\n0061 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0029 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 2681 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0029 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0029 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0029 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and )()\n0061 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and )()\n0061 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0029 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 2680 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0029 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 05D0 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 2680 0062 0028 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0029 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 2680 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0029 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0029 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0029 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and )()\n0061 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and )()\n0061 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and )()\n0061 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0029 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0029 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0029 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0029 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0029 0061 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0029 0061 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 0061 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 0061 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 0028 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and )()\n0061 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 2681 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0029 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n\n# L, L, ON, L and )()\n0061 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0029 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n\n# L, L, ON, R and )()\n0061 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 05D0 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0062 2680 0028 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0062 0028 2680 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0062 0028 0029 2680 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0029 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0029 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n\n# L, L, L, ON and )()\n0061 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and )()\n0061 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and )()\n0061 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 05D0 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and )()\n0061 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 2680 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 0028 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 0028 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 05D0 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 05D0 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 05D0 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 05D0 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and )()\n0061 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 0063 0028 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 0028 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0062 05D0 0028 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 05D0 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0062 0028 05D0 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 0028 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 05D0 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0029 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 0028 0062 05D0 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and )()\n0061 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0029 0062 05D0 0028 05D1 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0029 0062 05D0 0028 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0029 0062 0028 05D0 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0029 0028 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0029 0061 0028 0062 05D0 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and )()\n0061 0029 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and )()\n0061 0029 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 2680 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 2680 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and )()\n0061 0029 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0029 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0029 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 0061 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0029 0061 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0029 0028 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and )()\n0061 0029 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 2680 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 2680 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and )()\n0061 0029 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 0063 0029;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 0029 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 0029 0063;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 0029 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 0061 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 0063 0029;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0029 0061 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0029 0061 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and )()\n0061 0029 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 05D1 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 05D0 0062 0028 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0029 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0029 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 05D1 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 05D0 0062 0028 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0061 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0061 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0029 0028 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and )()\n0061 0029 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0029 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0029 0061 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and )()\n0061 0029 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0029 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0029 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0029 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0061 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0029 0061 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and )()\n0061 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 0029 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0029 0061 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and )()\n05D0 2680 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and )()\n05D0 2680 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and )()\n05D0 2680 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and )()\n05D0 2680 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and )()\n05D0 2680 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0029 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0029 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0029 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 05D0 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0029 05D0 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0029 05D0 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and )()\n05D0 2680 0029 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and )()\n05D0 2680 0029 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 2681 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and )()\n05D0 2680 0029 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0061 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0029 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0029 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and )()\n05D0 2680 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 2680 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0029 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and )()\n05D0 0029 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and )()\n05D0 0029 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0029 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0029 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0029 05D0 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0029 05D0 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0029 0028 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and )()\n05D0 0029 0061 2680 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 2680 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0029 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and )()\n05D0 0029 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 0029 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0029 05D0 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, L, L and )()\n05D0 0029 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n0029 05D0 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# R, L, L, R and )()\n05D0 0029 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0029 05D0 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, R, ON and )()\n05D0 0029 0061 05D1 2680 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 05D1 0028 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 05D1 0028 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 2680 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and )()\n05D0 0029 0061 05D1 0062 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 05D1 0028 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 0061 05D1 0028 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0062 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0029 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and )()\n05D0 0029 0061 05D1 0028 05D2 0029;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 0029 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 05D1 0028 0029 05D2;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 0029 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0029 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 05D2 0029;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0029 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 05D1 0028 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0029 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0029 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0029 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0029 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0029 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and )()\n05D0 0029 05D1 2680 0028 2681 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and )()\n05D0 0029 05D1 2680 0061 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 2680 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0029 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0029 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and )()\n05D0 0029 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0029 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and )()\n05D0 0029 05D1 0061 2680 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0061 0028 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0061 0028 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0061 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0061 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and )()\n05D0 0029 05D1 0061 0028 0062 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0029 05D1 0061 0028 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0029 05D1 0028 0061 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and )()\n05D0 0029 05D1 0061 05D2 0028 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0061 0028 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0061 0028 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0061 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 0061 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0029 0028 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0029 05D0 0028 05D1 0061 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0029 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and )()\n05D0 0029 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and )()\n05D0 0029 05D1 0028 05D2 0061 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and )()\n05D0 0029 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ())\n0028 0029 0029;0;0;0 0 0;0 1 2\n0028 0029 0029;1;1;1 1 1;2 1 0\n\n# ON and ())\n2680 0028 0029 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 0029;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 0029;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 0029;1;1;1 1 1 1;3 2 1 0\n0028 0029 2680 0029;0;0;0 0 0 0;0 1 2 3\n0028 0029 2680 0029;1;1;1 1 1 1;3 2 1 0\n0028 0029 0029 2680;0;0;0 0 0 0;0 1 2 3\n0028 0029 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ())\n0061 0028 0029 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 0029;1;1;2 1 1 1;3 2 1 0\n0028 0061 0029 0029;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 0029;1;1;1 2 1 1;3 2 1 0\n0028 0029 0061 0029;0;0;0 0 0 0;0 1 2 3\n0028 0029 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 0029 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 0029 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ())\n05D0 0028 0029 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 0029;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 0029;1;1;1 1 1 1;3 2 1 0\n0028 0029 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 0029 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0028 0029 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0029 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ())\n2680 0028 2681 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ())\n2680 0028 0061 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0029 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 0029 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0029 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 0029 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ())\n2680 0028 05D0 0029 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0029 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0029 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0029 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0029 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ())\n0061 2680 0028 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ())\n0061 0028 0062 0029 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 0029;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0062 0029;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 0029 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0062 0029;1;1;1 2 1 2 1;4 3 2 1 0\n0028 0061 0029 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0029 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 0029 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 0029 0062;1;1;1 1 2 2 2;2 3 4 1 0\n\n# L, R and ())\n0061 0028 05D0 0029 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0029 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0029 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 0029 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0029 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ())\n05D0 2680 0028 0029 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ())\n05D0 0028 0061 0029 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0029 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 0029 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 0029 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0029 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 0029 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ())\n05D0 0028 05D1 0029 0029;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 05D1 0029;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 0029 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 05D1 0029;0;0;0 1 0 1 0;0 1 2 3 4\n0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 0029 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 0029 05D1;0;0;0 0 1 1 1;0 1 4 3 2\n0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ())\n2680 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ())\n2680 0028 2681 0061 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 0029 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ())\n2680 0028 2681 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0029 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0029 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ())\n2680 0028 0061 2681 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ())\n2680 0028 0061 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n2680 0028 0061 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 2680 0061 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 2680 0061 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# ON, L, R and ())\n2680 0028 0061 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 0029 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0029 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 0029 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0029 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ())\n2680 0028 05D0 2681 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ())\n2680 0028 05D0 0061 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ())\n2680 0028 05D0 0029 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n2680 0028 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n2680 0028 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 2680 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 2680 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ())\n0061 2680 0028 2681 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ())\n0061 2680 0028 0062 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0062 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0062 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0062 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0029 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0029 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 2680 0029 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0029 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 0029 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 0029 2680 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n\n# L, ON, R and ())\n0061 2680 0028 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0029 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0029 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0029 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0029 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0029 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0029 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ())\n0061 0028 0062 2680 0029 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 2680 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0029 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 2680 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 0029 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 2680 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 0029 2680;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, L, L and ())\n0061 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0063 0029;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 0029 0063;1;1;1 2 1 2 2 2;3 4 5 2 1 0\n\n# L, L, R and ())\n0061 0028 0062 05D0 0029 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 0029 05D0 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0029 0029 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 0062 05D0 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0062 0029 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 0062 05D0 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0062 0029 05D0;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, R, ON and ())\n0061 0028 05D0 2680 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ())\n0061 0028 05D0 0062 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ())\n0061 0028 05D0 0029 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0061 0028 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0061 0028 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0061 05D0 0029 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0029 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0061 0029 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 0029 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ())\n05D0 2680 0028 2681 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ())\n05D0 2680 0028 0061 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ())\n05D0 2680 0028 05D1 0029 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0029 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 2680 0029 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0029 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0029 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0029 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 0029 2680 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ())\n05D0 0028 0061 2680 0029 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ())\n05D0 0028 0061 0029 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 05D0 0061 0029 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 0029 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# R, L, R and ())\n05D0 0028 0061 05D1 0029 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 0029 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0029 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0029 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0029 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 0029 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0029 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0029 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0029 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ())\n05D0 0028 05D1 2680 0029 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0029 2680;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ())\n05D0 0028 05D1 0061 0029 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0029 0061;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ())\n05D0 0028 05D1 0029 05D2 0029;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 0029 05D2;0;0;0 1 0 1 1 1;0 1 2 5 4 3\n0028 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ())\n2680 0028 2681 0029 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ())\n2680 0028 2681 0029 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ())\n2680 0028 2681 0029 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ())\n2680 0028 2681 0061 2682 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ())\n2680 0028 2681 0061 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, ON, L, R and ())\n2680 0028 2681 0061 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ())\n2680 0028 2681 05D0 2682 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ())\n2680 0028 2681 05D0 0061 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ())\n2680 0028 2681 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 2681 0029 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ())\n2680 0028 0061 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ())\n2680 0028 0061 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 0029 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 0029 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0061 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 0029 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 0029 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 0029 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# ON, L, ON, R and ())\n2680 0028 0061 2681 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ())\n2680 0028 0061 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 2681 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0029 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 2681 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0029 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, L and ())\n2680 0028 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0029 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0061 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0029 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, L, L, R and ())\n2680 0028 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 0029 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 0029 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, ON and ())\n2680 0028 0061 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ())\n2680 0028 0061 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 0029 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 0029 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ())\n2680 0028 0061 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0061 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0061 0029 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ())\n2680 0028 05D0 2681 0029 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ())\n2680 0028 05D0 2681 0061 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ())\n2680 0028 05D0 2681 05D1 0029 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0029 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0029 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0029 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0029 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ())\n2680 0028 05D0 0061 2681 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ())\n2680 0028 05D0 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 05D0 0061 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, R, L, R and ())\n2680 0028 05D0 0061 05D1 0029 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ())\n2680 0028 05D0 0029 05D1 2681 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0029 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0029 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ())\n2680 0028 05D0 0029 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 0029 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0029 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ())\n2680 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0029 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 05D0 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ())\n0061 2680 0028 2681 0029 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ())\n0061 2680 0028 2681 0062 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 0029 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0062 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, ON, R and ())\n0061 2680 0028 2681 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ())\n0061 2680 0028 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 0029 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 2681 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 2681 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0029 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 2681 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0029 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ())\n0061 2680 0028 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0063 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 0029;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0029 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0029 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, L, R and ())\n0061 2680 0028 0062 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 0029 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 0029 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ())\n0061 2680 0028 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ())\n0061 2680 0028 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 0029 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 0029 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 0029 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ())\n0061 2680 0028 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 2680 0028 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 2680 0029 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 2680 0029 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ())\n0061 0028 0062 2680 0029 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 2681 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0029 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0029 2681;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, L and ())\n0061 0028 0062 2680 0063 0029 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 0029 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0063 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 0029;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 0029;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 0029 2680 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n\n# L, L, ON, R and ())\n0061 0028 0062 2680 05D0 0029 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 0029 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0029 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 0029 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0029 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 0029 2680 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, L, ON and ())\n0061 0028 0062 0029 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 2680 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0029 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, L, L and ())\n0061 0028 0062 0029 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ())\n0061 0028 0062 0029 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 05D0 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 0029 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, R, ON and ())\n0061 0028 0062 05D0 2680 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 0029 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 2680 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0029 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 2680 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0029 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 2680 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0029 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and ())\n0061 0028 0062 05D0 0063 0029 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 0029 0029;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0063 0029;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0029 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0063 0029;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0029 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0063 0029;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0029 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and ())\n0061 0028 0062 05D0 0029 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 05D1 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0029 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0062 0029 05D0 0029 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 0062 05D0 0029 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0029 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 0062 05D0 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and ())\n0061 0028 05D0 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ())\n0061 0028 05D0 2680 0062 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 0029 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 0029 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ())\n0061 0028 05D0 2680 05D1 0029 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 0029 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0029 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0029 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 0029 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 0029 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0029 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ())\n0061 0028 05D0 0062 2680 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 0029 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ())\n0061 0028 05D0 0062 0029 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0029 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0061 0028 0029 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0029 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 05D0 0062 0029 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0029 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0029 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# L, R, L, R and ())\n0061 0028 05D0 0062 05D1 0029 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 0029 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 0029 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ())\n0061 0028 05D0 0029 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ())\n0061 0028 05D0 0029 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ())\n0061 0028 05D0 0029 05D1 0029 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 05D0 0029 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0029 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 05D0 0029 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ())\n05D0 2680 0028 2681 0029 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ())\n05D0 2680 0028 2681 0061 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ())\n05D0 2680 0028 2681 05D1 0029 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 05D1 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 0029 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ())\n05D0 2680 0028 0061 2681 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ())\n05D0 2680 0028 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 2680 0061 0029 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 2680 0061 0029 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, ON, L, R and ())\n05D0 2680 0028 0061 05D1 0029 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ())\n05D0 2680 0028 05D1 2681 0029 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0029 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0029 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ())\n05D0 2680 0028 05D1 0061 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0029 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0029 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ())\n05D0 2680 0028 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 0029;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0029 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 2680 0029 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0029 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ())\n05D0 0028 0061 2680 0029 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ())\n05D0 0028 0061 2680 0062 0029 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 0029 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0029 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0061 2680 0062 0029 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 0029 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0029 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0029 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# R, L, ON, R and ())\n05D0 0028 0061 2680 05D1 0029 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ())\n05D0 0028 0061 0029 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L, L and ())\n05D0 0028 0061 0029 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0029 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0061 0029 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0029 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# R, L, L, R and ())\n05D0 0028 0061 0029 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, R, ON and ())\n05D0 0028 0061 05D1 2680 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 0029 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ())\n05D0 0028 0061 05D1 0062 0029 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 0029 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 0029 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ())\n05D0 0028 0061 05D1 0029 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0029 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0061 0029 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0029 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0029 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0029 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0061 0029 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0029 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ())\n05D0 0028 05D1 2680 0029 2681 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0029 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0029 2681;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ())\n05D0 0028 05D1 2680 0061 0029 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 0029 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0029 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0029 2680 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ())\n05D0 0028 05D1 2680 05D2 0029 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 05D2 0029 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 0029 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0029 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 0029;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0029 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0029 2680 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ())\n05D0 0028 05D1 0061 2680 0029 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0029 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0029 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0029 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ())\n05D0 0028 05D1 0061 0029 0062 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0029 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0029 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 05D1 0061 0029 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 05D1 0061 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0029 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, R, L, R and ())\n05D0 0028 05D1 0061 05D2 0029 0029;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 0029 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 0029;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 0029 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 0029;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 0029 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 0029;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 0029 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ())\n05D0 0028 05D1 0029 05D2 2680 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0029 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ())\n05D0 0028 05D1 0029 05D2 0061 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0029 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ())\n05D0 0028 05D1 0029 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ]()\n005D 0028 0029;0;0;0 0 0;0 1 2\n005D 0028 0029;1;1;1 1 1;2 1 0\n\n# ON and ]()\n2680 005D 0028 0029;0;0;0 0 0 0;0 1 2 3\n2680 005D 0028 0029;1;1;1 1 1 1;3 2 1 0\n005D 2680 0028 0029;0;0;0 0 0 0;0 1 2 3\n005D 2680 0028 0029;1;1;1 1 1 1;3 2 1 0\n005D 0028 2680 0029;0;0;0 0 0 0;0 1 2 3\n005D 0028 2680 0029;1;1;1 1 1 1;3 2 1 0\n005D 0028 0029 2680;0;0;0 0 0 0;0 1 2 3\n005D 0028 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ]()\n0061 005D 0028 0029;0;0;0 0 0 0;0 1 2 3\n0061 005D 0028 0029;1;1;2 1 1 1;3 2 1 0\n005D 0061 0028 0029;0;0;0 0 0 0;0 1 2 3\n005D 0061 0028 0029;1;1;1 2 1 1;3 2 1 0\n005D 0028 0061 0029;0;0;0 0 0 0;0 1 2 3\n005D 0028 0061 0029;1;1;1 1 2 1;3 2 1 0\n005D 0028 0029 0061;0;0;0 0 0 0;0 1 2 3\n005D 0028 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ]()\n05D0 005D 0028 0029;0;0;1 0 0 0;0 1 2 3\n05D0 005D 0028 0029;1;1;1 1 1 1;3 2 1 0\n005D 05D0 0028 0029;0;0;0 1 0 0;0 1 2 3\n005D 05D0 0028 0029;1;1;1 1 1 1;3 2 1 0\n005D 0028 05D0 0029;0;0;0 0 1 0;0 1 2 3\n005D 0028 05D0 0029;1;1;1 1 1 1;3 2 1 0\n005D 0028 0029 05D0;0;0;0 0 0 1;0 1 2 3\n005D 0028 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ]()\n2680 005D 2681 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 2681 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005D 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005D 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n005D 2680 0028 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 2680 0028 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 2680 0028 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n005D 2680 0028 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ]()\n2680 005D 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 005D 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 005D 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 005D 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005D 2680 0061 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 2680 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005D 2680 0028 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 2680 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005D 2680 0028 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005D 2680 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005D 0028 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005D 0028 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005D 0028 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ]()\n2680 005D 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 005D 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005D 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 005D 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 005D 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 005D 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005D 2680 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005D 2680 05D0 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 2680 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005D 2680 0028 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 2680 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005D 2680 0028 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005D 0028 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005D 0028 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005D 0028 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ]()\n0061 2680 005D 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 005D 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005D 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 2680 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005D 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 0028 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005D 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 0028 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n005D 0061 2680 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0061 2680 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0061 0028 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0061 0028 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0061 0028 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0061 0028 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0028 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005D 0028 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ]()\n0061 005D 0062 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 0062 0028 0029;1;1;2 2 2 1 1;4 3 0 1 2\n0061 005D 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 0028 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 005D 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 005D 0028 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n005D 0061 0028 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0061 0028 0062 0029;1;1;1 2 2 2 2;1 2 3 4 0\n005D 0061 0028 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0061 0028 0029 0062;1;1;1 2 2 2 2;1 2 3 4 0\n005D 0028 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n005D 0028 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and ]()\n0061 005D 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 005D 05D0 0028 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005D 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 005D 0028 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 005D 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 005D 0028 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n005D 0061 05D0 0028 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005D 0061 05D0 0028 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0061 0028 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005D 0061 0028 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0061 0028 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005D 0061 0028 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n005D 0028 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n005D 0028 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005D 0028 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n005D 0028 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ]()\n05D0 2680 005D 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 005D 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005D 2680 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n005D 05D0 2680 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 2680 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 05D0 0028 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 0028 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 05D0 0028 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 0028 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005D 0028 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n005D 0028 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ]()\n05D0 005D 0061 0028 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 005D 0028 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 005D 0028 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 005D 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005D 05D0 0061 0028 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 0061 0028 0029;1;1;1 1 2 1 1;4 3 2 1 0\n005D 05D0 0028 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 0028 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005D 05D0 0028 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n005D 05D0 0028 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n005D 0028 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n005D 0028 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n005D 0028 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n005D 0028 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ]()\n05D0 005D 05D1 0028 0029;0;0;1 1 1 0 0;2 1 0 3 4\n05D0 005D 05D1 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 005D 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n005D 05D0 0028 05D1 0029;0;0;0 1 1 1 1;0 4 3 2 1\n005D 05D0 0028 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n005D 05D0 0028 0029 05D1;0;0;0 1 1 1 1;0 4 3 2 1\n005D 05D0 0028 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n005D 0028 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n005D 0028 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ]()\n2680 005D 2681 0028 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 2681 0028 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 2681 0028 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 2681 0028 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ]()\n2680 005D 2681 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 2681 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005D 2681 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 2681 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005D 2681 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 2681 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005D 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005D 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005D 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ]()\n2680 005D 2681 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 2681 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 2681 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005D 2681 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 2681 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005D 2681 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005D 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005D 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005D 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ]()\n2680 005D 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005D 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0061 2681 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0061 0028 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0061 0028 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ]()\n2680 005D 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 005D 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n2680 005D 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 005D 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005D 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005D 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005D 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 2680 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005D 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and ]()\n2680 005D 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005D 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005D 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 005D 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 005D 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005D 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 005D 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 2680 0061 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 2680 0061 05D0 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0061 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 2680 0061 0028 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 2680 0061 0028 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 2680 0028 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 2680 0028 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 2680 0028 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 0028 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0028 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ]()\n2680 005D 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 05D0 2681 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 05D0 0028 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 05D0 0028 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ]()\n2680 005D 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 005D 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005D 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 005D 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 005D 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 005D 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 005D 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 2680 05D0 0061 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 2680 05D0 0028 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 2680 05D0 0028 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 2680 0028 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 2680 0028 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 2680 0028 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 0028 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 0028 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ]()\n2680 005D 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 005D 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n2680 005D 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 005D 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 005D 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005D 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005D 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 2680 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005D 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005D 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ]()\n0061 2680 005D 2681 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 2681 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005D 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005D 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 2680 0028 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 2680 0028 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005D 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 2680 0028 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 2680 0028 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ]()\n0061 2680 005D 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 2680 005D 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 005D 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 005D 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 2680 0062 0028 0029;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 005D 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 2680 0028 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 2680 0028 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n005D 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 2680 0062 0028 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n005D 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 2680 0028 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 2680 0028 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 2680 0062 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 2680 0029 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 0029 2680 0062;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n005D 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n005D 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0028 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and ]()\n0061 2680 005D 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 005D 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005D 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 005D 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 005D 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 005D 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 2680 05D0 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005D 2680 0028 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005D 2680 0028 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005D 0028 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005D 0028 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005D 0028 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005D 0061 2680 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0061 2680 05D0 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 2680 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 0061 2680 0028 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0061 2680 0028 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 0061 0028 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0061 0028 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0061 0028 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0028 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 0028 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0028 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0028 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ]()\n0061 005D 0062 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0062 2680 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0062 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0062 0028 2680 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0062 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0062 0028 0029 2680;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n005D 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 0062 2680 0029;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n005D 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 0062 0029 2680;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, L, L and ]()\n0061 005D 0062 0028 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0062 0028 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0062 0028 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0062 0028 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 005D 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 005D 0028 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n005D 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n005D 0061 0028 0062 0029 0063;1;1;1 2 2 2 2 2;1 2 3 4 5 0\n\n# L, L, R and ]()\n0061 005D 0062 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 0062 05D0 0028 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0062 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005D 0062 0028 05D0 0029;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0062 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005D 0062 0028 0029 05D0;1;1;2 2 2 1 1 1;5 4 3 0 1 2\n0061 005D 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 005D 0028 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 005D 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 005D 0028 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n005D 0061 0028 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n005D 0061 0028 0062 05D0 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n005D 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n005D 0061 0028 0062 0029 05D0;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n\n# L, R, ON and ]()\n0061 005D 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 2680 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 0028 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 0028 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 0028 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 0028 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005D 0061 05D0 2680 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 2680 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 05D0 0028 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 0028 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 05D0 0028 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 0028 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0061 0028 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0061 0028 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0028 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 0028 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ]()\n0061 005D 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 0062 0028 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 005D 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 0028 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 005D 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 005D 05D0 0028 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 005D 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 0028 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 005D 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 005D 0028 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n005D 0061 05D0 0062 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 0062 0028 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n005D 0061 05D0 0028 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 0028 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n005D 0061 05D0 0028 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0061 05D0 0028 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n005D 0061 0028 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0061 0028 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n005D 0061 0028 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0061 0028 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n005D 0028 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n005D 0028 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n005D 0028 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ]()\n0061 005D 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 005D 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0061 005D 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 005D 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 005D 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 0029;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005D 0061 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 05D0 0028 0029 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n005D 0061 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0061 0028 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005D 0061 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n005D 0028 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n005D 0028 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ]()\n05D0 2680 005D 2681 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 2681 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 2680 0028 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 2680 0028 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ]()\n05D0 2680 005D 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 005D 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 005D 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005D 2680 0061 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005D 2680 0028 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005D 0028 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005D 0028 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005D 0028 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 05D0 2680 0061 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 2680 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 05D0 2680 0028 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 2680 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 05D0 2680 0028 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 05D0 0028 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 05D0 0028 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 05D0 0028 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 0028 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 0028 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 0028 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ]()\n05D0 2680 005D 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 2680 005D 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 005D 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0029;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 005D 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n005D 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 2680 0028 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 2680 0029 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 0029 2680 05D1;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n005D 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005D 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 0028 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005D 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ]()\n05D0 005D 0061 2680 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0061 0028 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0061 0028 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005D 0028 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 05D0 0061 2680 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0061 2680 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0061 0028 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0061 0028 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0061 0028 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0061 0028 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 05D0 0028 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ]()\n05D0 005D 0061 0028 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 005D 0061 0028 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n05D0 005D 0028 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 005D 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005D 05D0 0061 0028 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0061 0028 0062 0029;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005D 05D0 0061 0028 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0061 0028 0029 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n005D 05D0 0028 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n005D 05D0 0028 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n005D 0028 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n005D 0028 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and ]()\n05D0 005D 0061 05D1 0028 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 005D 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 005D 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0061 0028 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 005D 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 005D 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005D 0028 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 005D 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n005D 05D0 0061 05D1 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n005D 05D0 0061 0028 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0061 0028 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n005D 05D0 0061 0028 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n005D 05D0 0028 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 05D0 0028 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n005D 05D0 0028 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n005D 0028 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n005D 0028 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n005D 0028 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ]()\n05D0 005D 05D1 2680 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 2680;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 005D 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 0029;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 05D1 0029 2680;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n005D 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ]()\n05D0 005D 05D1 0061 0028 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 0061 0029;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 0061;0;0;1 1 1 0 0 0;2 1 0 3 4 5\n05D0 005D 05D1 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 005D 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 005D 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n005D 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n005D 05D0 0028 05D1 0029 0061;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n005D 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ]()\n05D0 005D 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n005D 05D0 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1;0 5 4 3 2 1\n005D 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ]()\n2680 005D 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ]()\n2680 005D 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ]()\n2680 005D 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ]()\n2680 005D 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 2682 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ]()\n2680 005D 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005D 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005D 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 005D 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and ]()\n2680 005D 2681 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 2681 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 2681 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ]()\n2680 005D 2681 05D0 2682 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 05D0 0028 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 05D0 0028 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ]()\n2680 005D 2681 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 2681 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 2681 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 2681 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ]()\n2680 005D 2681 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005D 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005D 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005D 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005D 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ]()\n2680 005D 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ]()\n2680 005D 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 005D 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 005D 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005D 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005D 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005D 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and ]()\n2680 005D 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0061 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0061 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0061 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ]()\n2680 005D 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n2680 005D 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005D 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 0062 0029 2681;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, L, L and ]()\n2680 005D 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# ON, L, L, R and ]()\n2680 005D 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005D 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 0062 05D0 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 0061 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# ON, L, R, ON and ]()\n2680 005D 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ]()\n2680 005D 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0061 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0061 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ]()\n2680 005D 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005D 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 005D 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005D 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 005D 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005D 2680 0061 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005D 2680 0061 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 2680 0061 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ]()\n2680 005D 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ]()\n2680 005D 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 05D0 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ]()\n2680 005D 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 005D 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 005D 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005D 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005D 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ]()\n2680 005D 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ]()\n2680 005D 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005D 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 005D 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 2680 05D0 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005D 2680 05D0 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005D 2680 05D0 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and ]()\n2680 005D 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 005D 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 005D 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 005D 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ]()\n2680 005D 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 005D 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005D 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ]()\n2680 005D 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 005D 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 005D 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 005D 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 0061 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005D 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ]()\n2680 005D 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n2680 005D 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ]()\n0061 2680 005D 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ]()\n0061 2680 005D 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 005D 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and ]()\n0061 2680 005D 2681 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 2681 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005D 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005D 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005D 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ]()\n0061 2680 005D 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005D 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 2681 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 2681 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0029 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005D 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005D 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 2681 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005D 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 0062 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005D 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005D 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ]()\n0061 2680 005D 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and ]()\n0061 2680 005D 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005D 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 2680 005D 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 005D 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005D 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 05D0 0028 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 05D0 0029;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 2680 0062 0028 0029 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 005D 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005D 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005D 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 05D0 0028 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 2680 0062 0028 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n005D 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 2680 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005D 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 0062 05D0 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005D 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005D 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ]()\n0061 2680 005D 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ]()\n0061 2680 005D 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 005D 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 005D 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 005D 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 005D 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 005D 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ]()\n0061 2680 005D 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 005D 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 2680 005D 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 005D 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 005D 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005D 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005D 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005D 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005D 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005D 0061 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n005D 0061 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 0061 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 0061 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 0028 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ]()\n0061 005D 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 2681 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0029 2681;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n005D 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 0029 2681;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n\n# L, L, ON, L and ]()\n0061 005D 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 005D 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n005D 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n\n# L, L, ON, R and ]()\n0061 005D 0062 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 05D0 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0062 2680 0028 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 05D0 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0062 0028 2680 0029 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0062 0028 0029 2680 05D0;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 005D 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n005D 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 05D0 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n005D 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 0062 0029 2680 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n\n# L, L, L, ON and ]()\n0061 005D 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and ]()\n0061 005D 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ]()\n0061 005D 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 05D0 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and ]()\n0061 005D 0062 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 2680 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 0028 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 0028 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 05D0 2680 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 05D0 0029 2680;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 05D0 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 05D0 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and ]()\n0061 005D 0062 05D0 0063 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 0063 0028 0029;1;1;2 2 2 1 2 1 1;6 5 4 3 0 1 2\n0061 005D 0062 05D0 0028 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 0028 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 005D 0062 05D0 0028 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0062 05D0 0028 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 005D 0062 0028 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 05D0 0063 0029;1;1;2 2 2 1 1 2 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0062 0028 05D0 0029 0063;1;1;2 2 2 1 1 1 2;6 5 4 3 0 1 2\n0061 005D 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 005D 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 0028 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 05D0 0063 0029;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n005D 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 0028 0062 05D0 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and ]()\n0061 005D 0062 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005D 0062 05D0 0028 05D1 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 005D 0062 05D0 0028 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005D 0062 0028 05D0 0029 05D1;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 005D 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 005D 0028 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n005D 0061 0028 0062 05D0 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and ]()\n0061 005D 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ]()\n0061 005D 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 2680 0062 0028 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 2680 0062 0028 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 05D0 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ]()\n0061 005D 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 005D 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 005D 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 05D1 0028 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 0061 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005D 0061 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n005D 0028 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ]()\n0061 005D 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 2680 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 2680 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ]()\n0061 005D 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 0063 0029;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 005D 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 0029 0063;1;1;2 1 1 2 2 2 2;3 4 5 6 2 1 0\n0061 005D 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 0061 05D0 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 0063 0029;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n005D 0061 05D0 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 0029 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n005D 0061 05D0 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and ]()\n0061 005D 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 05D1 0028 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 05D0 0062 0028 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 005D 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 005D 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 005D 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 05D1 0028 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 05D0 0062 0028 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0061 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0061 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n005D 0028 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ]()\n0061 005D 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 005D 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005D 0061 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ]()\n0061 005D 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 005D 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 005D 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 005D 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0061 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n005D 0061 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ]()\n0061 005D 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0061 005D 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n005D 0061 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ]()\n05D0 2680 005D 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ]()\n05D0 2680 005D 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 2681 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 2681 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 2681 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ]()\n05D0 2680 005D 2681 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 005D 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ]()\n05D0 2680 005D 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ]()\n05D0 2680 005D 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 005D 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 2680 005D 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005D 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005D 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005D 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 05D0 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005D 05D0 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n005D 05D0 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and ]()\n05D0 2680 005D 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 005D 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 005D 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ]()\n05D0 2680 005D 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 005D 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 2681 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 2681 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0029 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 2681 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ]()\n05D0 2680 005D 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 2680 005D 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 005D 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 005D 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0061 0028 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0061 0029;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0029 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 005D 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0061 0028 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n005D 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 0061 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n005D 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ]()\n05D0 2680 005D 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 005D 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 2680 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n005D 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ]()\n05D0 005D 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ]()\n05D0 005D 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 005D 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 005D 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0062 0028 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n005D 05D0 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005D 05D0 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n005D 0028 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and ]()\n05D0 005D 0061 2680 05D1 0028 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 2680 05D1 0028 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0061 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0061 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n005D 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ]()\n05D0 005D 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n05D0 005D 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005D 05D0 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0062 0029 2680;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, L, L and ]()\n05D0 005D 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n005D 05D0 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# R, L, L, R and ]()\n05D0 005D 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n005D 05D0 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0061 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n\n# R, L, R, ON and ]()\n05D0 005D 0061 05D1 2680 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 05D1 0028 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 05D1 0028 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 2680 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ]()\n05D0 005D 0061 05D1 0062 0028 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 05D1 0028 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 0061 05D1 0028 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0062 0028 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0061 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n005D 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ]()\n05D0 005D 0061 05D1 0028 05D2 0029;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 005D 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 05D1 0028 0029 05D2;0;0;1 0 0 1 1 1 1;0 1 2 6 5 4 3\n05D0 005D 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 005D 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 005D 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 05D2 0029;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n005D 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 05D1 0028 0029 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n005D 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n005D 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n005D 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n005D 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n005D 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ]()\n05D0 005D 05D1 2680 0028 2681 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0029 2681;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ]()\n05D0 005D 05D1 2680 0061 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0061 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0029 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 2680 0061;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 005D 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 0061 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n005D 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0029 2680 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n005D 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ]()\n05D0 005D 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 005D 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n005D 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ]()\n05D0 005D 05D1 0061 2680 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0061 0028 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0061 0028 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0061 2680 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0061 0029 2680;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ]()\n05D0 005D 05D1 0061 0028 0062 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005D 05D1 0061 0028 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 005D 05D1 0028 0061 0029 0062;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and ]()\n05D0 005D 05D1 0061 05D2 0028 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 05D2 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0061 0028 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0061 0028 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 005D 05D1 0061 0028 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0061 05D2 0029;0;0;1 1 1 0 0 1 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 0061 0029 05D2;0;0;1 1 1 0 0 0 1;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 005D 0028 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 005D 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 05D2 0029;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n005D 05D0 0028 05D1 0061 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n005D 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ]()\n05D0 005D 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ]()\n05D0 005D 05D1 0028 05D2 0061 0029;0;0;1 1 1 0 1 0 0;2 1 0 3 4 5 6\n05D0 005D 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 005D 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ]()\n05D0 005D 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 005D 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# (])\n0028 005D 0029;0;0;0 0 0;0 1 2\n0028 005D 0029;1;1;1 1 1;2 1 0\n\n# ON and (])\n2680 0028 005D 0029;0;0;0 0 0 0;0 1 2 3\n2680 0028 005D 0029;1;1;1 1 1 1;3 2 1 0\n0028 2680 005D 0029;0;0;0 0 0 0;0 1 2 3\n0028 2680 005D 0029;1;1;1 1 1 1;3 2 1 0\n0028 005D 2680 0029;0;0;0 0 0 0;0 1 2 3\n0028 005D 2680 0029;1;1;1 1 1 1;3 2 1 0\n0028 005D 0029 2680;0;0;0 0 0 0;0 1 2 3\n0028 005D 0029 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and (])\n0061 0028 005D 0029;0;0;0 0 0 0;0 1 2 3\n0061 0028 005D 0029;1;1;2 1 1 1;3 2 1 0\n0028 0061 005D 0029;0;0;0 0 0 0;0 1 2 3\n0028 0061 005D 0029;1;1;1 2 1 1;3 2 1 0\n0028 005D 0061 0029;0;0;0 0 0 0;0 1 2 3\n0028 005D 0061 0029;1;1;1 1 2 1;3 2 1 0\n0028 005D 0029 0061;0;0;0 0 0 0;0 1 2 3\n0028 005D 0029 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and (])\n05D0 0028 005D 0029;0;0;1 0 0 0;0 1 2 3\n05D0 0028 005D 0029;1;1;1 1 1 1;3 2 1 0\n0028 05D0 005D 0029;0;0;0 1 0 0;0 1 2 3\n0028 05D0 005D 0029;1;1;1 1 1 1;3 2 1 0\n0028 005D 05D0 0029;0;0;0 0 1 0;0 1 2 3\n0028 005D 05D0 0029;1;1;1 1 1 1;3 2 1 0\n0028 005D 0029 05D0;0;0;0 0 0 1;0 1 2 3\n0028 005D 0029 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and (])\n2680 0028 2681 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005D 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005D 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005D 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005D 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005D 2681 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005D 2681 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005D 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005D 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 2680 0029 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 2680 0029 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and (])\n2680 0028 0061 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 005D 0029;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 005D 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005D 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 005D 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 005D 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 005D 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 005D 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005D 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 005D 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 005D 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005D 2680 0061 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 2680 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005D 2680 0029 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 2680 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005D 0029 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 0029 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and (])\n2680 0028 05D0 005D 0029;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005D 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 005D 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 005D 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 005D 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 005D 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005D 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 005D 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 005D 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 005D 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 2680 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005D 2680 05D0 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 2680 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005D 2680 0029 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 0029 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005D 0029 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and (])\n0061 2680 0028 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 005D 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 005D 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005D 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005D 2680 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005D 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005D 0029 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 005D 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005D 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005D 2680 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005D 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005D 0029 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005D 0061 2680 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 0061 2680 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005D 0061 0029 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 0061 0029 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and (])\n0061 0028 0062 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 005D 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 005D 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005D 0062 0029;1;1;2 2 2 2 2;0 1 2 3 4\n0061 0028 005D 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 005D 0029 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 005D 0062 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005D 0062 0029;1;1;1 2 2 2 1;4 1 2 3 0\n0028 0061 005D 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 005D 0029 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 005D 0061 0029 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 005D 0061 0029 0062;1;1;1 1 2 1 2;4 3 2 1 0\n\n# L, R and (])\n0061 0028 05D0 005D 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 005D 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005D 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 005D 05D0 0029;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 005D 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 005D 0029 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 005D 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 005D 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005D 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 005D 05D0 0029;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 005D 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 005D 0029 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 005D 0061 05D0 0029;0;0;0 0 0 1 0;0 1 2 3 4\n0028 005D 0061 05D0 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 005D 0061 0029 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 005D 0061 0029 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and (])\n05D0 2680 0028 005D 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 005D 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 2680 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005D 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 0029 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005D 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 005D 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005D 2680 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005D 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005D 0029 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005D 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 05D0 2680 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005D 05D0 2680 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 05D0 0029 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005D 05D0 0029 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and (])\n05D0 0028 0061 005D 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 005D 0029;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 005D 0061 0029;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005D 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 005D 0029 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 005D 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 005D 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 005D 0029;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 005D 0061 0029;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005D 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 005D 0029 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 005D 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 005D 05D0 0061 0029;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005D 05D0 0061 0029;1;1;1 1 1 2 1;4 3 2 1 0\n0028 005D 05D0 0029 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 005D 05D0 0029 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and (])\n05D0 0028 05D1 005D 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 05D1 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 05D1 0029;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 0029 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 005D 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005D 05D1 0029;0;0;0 1 1 1 0;0 3 2 1 4\n0028 05D0 005D 05D1 0029;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 005D 0029 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 005D 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 005D 05D0 0029 05D1;0;0;0 0 1 0 1;0 1 2 3 4\n0028 005D 05D0 0029 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and (])\n2680 0028 2681 005D 2682 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005D 2682 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005D 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005D 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and (])\n2680 0028 2681 0061 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 005D 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 005D 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005D 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005D 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005D 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005D 2681 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 2681 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005D 2681 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005D 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005D 2680 0029 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and (])\n2680 0028 2681 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 005D 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 005D 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005D 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005D 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005D 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 2681 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005D 2681 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005D 2681 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005D 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005D 2680 0029 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and (])\n2680 0028 0061 2681 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005D 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005D 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005D 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005D 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005D 2681 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005D 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005D 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005D 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 2680 0061 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 2680 0061 2681 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 2680 0061 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 2680 0061 0029 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and (])\n2680 0028 0061 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005D 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n2680 0028 0061 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 005D 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 005D 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 005D 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 2680 0061 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005D 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 2680 0061 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 005D 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 005D 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 005D 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 005D 2680 0061 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 2680 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# ON, L, R and (])\n2680 0028 0061 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 005D 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 005D 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 005D 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 005D 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 005D 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 005D 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 005D 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 005D 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 005D 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 005D 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 005D 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 005D 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 2680 0061 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005D 2680 0061 05D0 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 2680 0061 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005D 2680 0061 0029 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and (])\n2680 0028 05D0 2681 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005D 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005D 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005D 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005D 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005D 2681 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005D 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005D 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005D 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 2680 05D0 2681 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 2680 05D0 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 2680 05D0 0029 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 2680 05D0 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and (])\n2680 0028 05D0 0061 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 005D 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 005D 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 005D 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005D 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 005D 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 005D 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 005D 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 005D 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 005D 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005D 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 005D 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 005D 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005D 2680 05D0 0061 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 2680 05D0 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005D 2680 05D0 0029 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 2680 05D0 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and (])\n2680 0028 05D0 005D 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n2680 0028 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 005D 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 005D 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n2680 0028 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 2680 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 005D 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 005D 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 2680 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 2680 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 005D 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and (])\n0061 2680 0028 2681 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005D 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005D 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005D 2681 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005D 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 2680 0029 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005D 2681 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005D 2681 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005D 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005D 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 2680 0029 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005D 0061 2680 0029 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 0061 2680 0029 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and (])\n0061 2680 0028 0062 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 005D 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005D 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 2680 0028 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 005D 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 005D 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005D 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 005D 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005D 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 2680 0062 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005D 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 2680 0029 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005D 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 0029 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 005D 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 005D 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005D 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 2680 005D 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 005D 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005D 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 2680 0062 0029;1;1;1 2 2 2 2 1;5 1 2 3 4 0\n0028 0061 005D 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 2680 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005D 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 0029 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005D 0061 2680 0062 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 0061 2680 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 005D 0061 2680 0029 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 0061 2680 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 005D 0061 0029 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 005D 0061 0029 2680 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, ON, R and (])\n0061 2680 0028 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 005D 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 005D 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 005D 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 005D 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005D 2680 05D0 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005D 2680 0029 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005D 0029 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 005D 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 005D 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005D 2680 05D0 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005D 2680 0029 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005D 0029 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005D 0061 2680 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 005D 0061 2680 05D0 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005D 0061 2680 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005D 0061 2680 0029 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005D 0061 0029 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 005D 0061 0029 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and (])\n0061 0028 0062 2680 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 005D 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005D 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005D 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005D 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005D 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005D 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 0062 2680 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005D 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 0062 0029 2680;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 005D 0062 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 0062 2680 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 005D 0062 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 0062 0029 2680;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, L, L and (])\n0061 0028 0062 005D 0063 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005D 0063 0029;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0062 005D 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 005D 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 005D 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 005D 0062 0029 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 005D 0062 0029 0063;1;1;1 2 2 2 1 2;5 4 1 2 3 0\n\n# L, L, R and (])\n0061 0028 0062 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 005D 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 005D 05D0 0029;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 005D 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 005D 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 005D 0062 05D0 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 005D 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 005D 0062 0029 05D0;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0028 0061 005D 0062 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 005D 0062 05D0 0029;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 005D 0062 0029 05D0;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n\n# L, R, ON and (])\n0061 0028 05D0 2680 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005D 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005D 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005D 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005D 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005D 05D0 2680 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005D 05D0 0029 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005D 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005D 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005D 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005D 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005D 05D0 2680 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005D 05D0 0029 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005D 0061 05D0 2680 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 0061 05D0 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 005D 0061 05D0 0029 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 0061 05D0 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and (])\n0061 0028 05D0 0062 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 005D 0029;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 005D 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005D 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 005D 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 005D 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 005D 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005D 05D0 0062 0029;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 005D 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 005D 05D0 0029 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 005D 0029;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 005D 0062 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005D 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 005D 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 005D 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 005D 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005D 05D0 0062 0029;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 005D 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 005D 05D0 0029 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 005D 0061 05D0 0062 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 0061 05D0 0062 0029;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 005D 0061 05D0 0029 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 005D 0061 05D0 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and (])\n0061 0028 05D0 005D 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0061 0028 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 005D 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 005D 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0061 0028 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0061 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 005D 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 005D 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 0061 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 005D 0061 05D0 0029 05D1;0;0;0 0 0 1 0 1;0 1 2 3 4 5\n0028 005D 0061 05D0 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and (])\n05D0 2680 0028 2681 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 2680 0029 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005D 2681 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005D 2681 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005D 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005D 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 2680 0029 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 05D0 2680 0029 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 2680 0029 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and (])\n05D0 2680 0028 0061 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 005D 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 005D 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005D 2680 0061 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005D 2680 0029 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005D 0029 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 005D 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 005D 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005D 2680 0061 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005D 2680 0029 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005D 0029 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005D 05D0 2680 0061 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 2680 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 005D 05D0 2680 0029 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 2680 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 005D 05D0 0029 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 0029 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and (])\n05D0 2680 0028 05D1 005D 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 2680 0029 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 0029 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 2680 005D 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 005D 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 005D 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 0029;0;0;0 1 1 1 1 0;0 4 3 2 1 5\n0028 05D0 005D 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 2680 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005D 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 0029 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005D 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 0029;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 005D 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 05D0 2680 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005D 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 005D 05D0 0029 2680 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005D 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and (])\n05D0 0028 0061 2680 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005D 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005D 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005D 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005D 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 0061 2680 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005D 0061 0029 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005D 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005D 2680 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005D 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005D 0029 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 0061 2680 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005D 0061 0029 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 05D0 0061 2680 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 0061 2680 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 05D0 0061 0029 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 0061 0029 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and (])\n05D0 0028 0061 005D 0062 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005D 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n05D0 0028 0061 005D 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 005D 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 005D 0061 0029 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 005D 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 05D0 0061 005D 0062 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005D 0062 0029;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 05D0 0061 005D 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 005D 0029 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 005D 0061 0029 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 005D 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n0028 005D 05D0 0061 0029 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 005D 05D0 0061 0029 0062;1;1;1 1 1 2 1 2;5 4 3 2 1 0\n\n# R, L, R and (])\n05D0 0028 0061 05D1 005D 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 005D 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 005D 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 005D 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 0029;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 005D 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 005D 0061 0029 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 005D 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 0029;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 005D 05D1 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 005D 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 005D 0029 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 0029;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 005D 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 005D 0061 0029 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 005D 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 0029;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 005D 05D0 0061 05D1 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 005D 05D0 0061 0029 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 005D 05D0 0061 0029 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and (])\n05D0 0028 05D1 2680 005D 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 005D 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 2680;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005D 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005D 05D1 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 05D1 0029 2680;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005D 05D1 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and (])\n05D0 0028 05D1 0061 005D 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 0029;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 0029;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 005D 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 0061;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 005D 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 0029;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 005D 05D1 0029 0061;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and (])\n05D0 0028 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 005D 05D1 0029 05D2;0;0;0 1 1 1 0 1;0 3 2 1 4 5\n0028 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and (])\n2680 0028 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (])\n2680 0028 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (])\n2680 0028 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (])\n2680 0028 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 2682 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 0061 2682 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 0061 0029 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and (])\n2680 0028 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, ON, L, R and (])\n2680 0028 2681 0061 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 005D 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005D 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 2681 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (])\n2680 0028 2681 05D0 2682 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005D 2682 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005D 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 05D0 2682 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 05D0 0029 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and (])\n2680 0028 2681 05D0 0061 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005D 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005D 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 005D 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 2681 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and (])\n2680 0028 2681 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (])\n2680 0028 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 2681 0029 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and (])\n2680 0028 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 005D 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 2681 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n2680 0028 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 005D 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 2681 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 2680 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 2681 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 2681 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005D 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 2681 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 0029 2681 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, ON, R and (])\n2680 0028 0061 2681 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 2681 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 2680 0061 2681 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 2680 0061 0029 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and (])\n2680 0028 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# ON, L, L, L and (])\n2680 0028 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n0028 2680 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# ON, L, L, R and (])\n2680 0028 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005D 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005D 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# ON, L, R, ON and (])\n2680 0028 0061 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 05D0 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 05D0 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and (])\n2680 0028 0061 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 005D 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 005D 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 005D 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 005D 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 2680 0061 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 05D0 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 2680 0061 05D0 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and (])\n2680 0028 0061 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0061 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 0061 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n2680 0028 005D 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0061 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 0061 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 2680 005D 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005D 2680 0061 05D0 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (])\n2680 0028 05D0 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 2681 0029 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and (])\n2680 0028 05D0 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 2680 05D0 2681 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 2681 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0029 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and (])\n2680 0028 05D0 2681 05D1 005D 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n2680 0028 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 005D 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 2680 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 2681 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005D 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 2681 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0029 2681 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and (])\n2680 0028 05D0 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0061 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0061 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and (])\n2680 0028 05D0 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 05D0 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 05D0 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0061 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# ON, R, L, R and (])\n2680 0028 05D0 0061 05D1 005D 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 005D 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 005D 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 005D 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0061 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 2680 05D0 0061 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and (])\n2680 0028 05D0 005D 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and (])\n2680 0028 05D0 005D 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 005D 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and (])\n2680 0028 05D0 005D 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n2680 0028 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 005D 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 2680 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (])\n0061 2680 0028 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and (])\n0061 2680 0028 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 0062 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 0029 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 0029 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, ON, R and (])\n0061 2680 0028 2681 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 0061 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and (])\n0061 2680 0028 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 005D 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 2681 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 0062 2681 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 0062 0029 2681;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 0062 2681 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 0062 0029 2681;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005D 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 0062 2681 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005D 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 0062 0029 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and (])\n0061 2680 0028 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 0061 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 0062 0029 0063;1;1;1 2 2 2 2 1 2;6 5 1 2 3 4 0\n0028 005D 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# L, ON, L, R and (])\n0061 2680 0028 0062 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 05D0 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 2680 0062 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 005D 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 005D 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005D 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 0062 05D0 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 2680 0062 0029 05D0;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 005D 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 0062 05D0 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 005D 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 0061 2680 0062 0029 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and (])\n0061 2680 0028 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 2681 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 2680 05D0 2681 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 2680 05D0 0029 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and (])\n0061 2680 0028 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 005D 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005D 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 005D 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005D 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005D 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 05D0 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 005D 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005D 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 005D 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005D 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 05D0 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005D 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 0061 2680 05D0 0062 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 05D0 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005D 0061 2680 05D0 0029 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 0061 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and (])\n0061 2680 0028 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 2680 0028 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 2680 0028 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 2680 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 2680 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 005D 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 2680 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 2680 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 005D 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 005D 0061 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and (])\n0061 0028 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 2681 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0029 2681;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0028 0061 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 0029 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, ON, L and (])\n0061 0028 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 0063 0029;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 0029 2680 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n\n# L, L, ON, R and (])\n0061 0028 0062 2680 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 005D 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 005D 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 05D0 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005D 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005D 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 05D0 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 0062 0029 2680 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 05D0 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 0062 2680 0029 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 0062 0029 2680 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, L, ON and (])\n0061 0028 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 0029 2680;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, L, L and (])\n0061 0028 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and (])\n0061 0028 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 05D0 0029;1;1;2 1 2 2 2 1 1;6 5 2 3 4 1 0\n0061 0028 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n\n# L, L, R, ON and (])\n0061 0028 0062 05D0 2680 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 005D 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005D 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005D 2680 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005D 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005D 0029 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005D 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 05D0 2680 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005D 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 05D0 0029 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 05D0 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 05D0 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 0062 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 05D0 2680 0029;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 005D 0062 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 05D0 0029 2680;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, L, R, L and (])\n0061 0028 0062 05D0 0063 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 005D 0029;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005D 0063 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005D 0063 0029;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005D 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005D 0029 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 005D 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 05D0 0063 0029;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 005D 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 005D 05D0 0029 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005D 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 05D0 0063 0029;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 005D 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 005D 0062 05D0 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 005D 0062 05D0 0063 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 05D0 0063 0029;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 005D 0062 05D0 0029 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 005D 0062 05D0 0029 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n\n# L, L, R, R and (])\n0061 0028 0062 05D0 005D 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0062 05D0 005D 05D1 0029;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 005D 0029 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 0062 005D 05D0 0029 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0061 0028 005D 0062 05D0 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0061 005D 0062 05D0 0029 05D1;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n\n# L, R, ON, ON and (])\n0061 0028 05D0 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 2680 0029 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and (])\n0061 0028 05D0 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 005D 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005D 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005D 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005D 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 2680 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 005D 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005D 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005D 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005D 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 2680 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 0061 05D0 2680 0062 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 2680 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 2680 0029 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0029 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and (])\n0061 0028 05D0 2680 05D1 005D 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0061 0028 05D0 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 005D 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 005D 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0061 05D0 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 005D 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 2680 05D1 0029;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 005D 0061 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 2680 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 0061 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0029 2680 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and (])\n0061 0028 05D0 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 2680 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 0029 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0062 2680 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0062 0029 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 005D 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 2680 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 0029 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0062 2680 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0062 0029 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0062 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0062 2680 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0062 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0062 0029 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and (])\n0061 0028 05D0 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 0063 0029;1;1;2 1 1 2 2 2 1;6 3 4 5 2 1 0\n0061 0028 05D0 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 0029 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0062 0029 0063;1;1;2 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 0063 0029;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 05D0 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 0029 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0062 0029 0063;1;1;1 2 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0062 0029 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0062 0029 0063;1;1;1 1 2 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R, L, R and (])\n0061 0028 05D0 0062 05D1 005D 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 005D 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 05D1 0029;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 005D 0029 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 005D 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0062 05D1 0029;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 005D 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 005D 05D0 0062 0029 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 005D 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 005D 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005D 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 05D1 0029;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 005D 0029 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0062 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 005D 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0062 05D1 0029;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 005D 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 005D 05D0 0062 0029 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0062 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0062 05D1 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 0061 05D0 0062 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 005D 0061 05D0 0062 0029 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and (])\n0061 0028 05D0 005D 05D1 2680 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 05D1 0029 2680;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 2680 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 0029 2680;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and (])\n0061 0028 05D0 005D 05D1 0062 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005D 05D1 0062 0029;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 005D 05D1 0029 0062;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 0062 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005D 05D1 0062 0029;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 0029 0062;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and (])\n0061 0028 05D0 005D 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0061 0028 05D0 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 005D 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 0061 05D0 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (])\n05D0 2680 0028 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and (])\n05D0 2680 0028 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and (])\n05D0 2680 0028 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 2681 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0029 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and (])\n05D0 2680 0028 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 2681 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0061 2681 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0061 0029 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and (])\n05D0 2680 0028 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 2680 0028 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 2680 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 2680 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, ON, L, R and (])\n05D0 2680 0028 0061 05D1 005D 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005D 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 005D 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005D 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0061 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005D 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 005D 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005D 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 005D 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 005D 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0061 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005D 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0061 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and (])\n05D0 2680 0028 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 005D 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 2681 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 2681 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 0029 2681;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 2681 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 0029 2681;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 2681 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005D 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 0029 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005D 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and (])\n05D0 2680 0028 05D1 0061 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0061 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 005D 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 0061 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 0029 0061;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 0061 0029;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005D 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 0029 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 005D 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and (])\n05D0 2680 0028 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 005D 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 005D 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 2680 05D1 0029 05D2;0;0;0 1 1 1 1 0 1;0 4 3 2 1 5 6\n0028 05D0 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 2680 05D1 0029 05D2;0;0;0 0 1 1 1 0 1;0 1 4 3 2 5 6\n0028 005D 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and (])\n05D0 0028 0061 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 2680 0029 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and (])\n05D0 0028 0061 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 005D 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 2680 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n05D0 0028 0061 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 005D 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 005D 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 2680 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 05D0 0061 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 2680 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0029 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 005D 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 2680 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 005D 05D0 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 2680 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 0029 2680 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, ON, R and (])\n05D0 0028 0061 2680 05D1 005D 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005D 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 2680 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005D 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005D 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 005D 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005D 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 2680 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005D 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 005D 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 2680 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 2680 05D1 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 05D0 0061 2680 0029 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 005D 05D0 0061 0029 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and (])\n05D0 0028 0061 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0062 2680 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0062 0029 2680;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0062 2680 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0062 0029 2680;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# R, L, L, L and (])\n05D0 0028 0061 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n0028 05D0 0061 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0062 0029 0063;1;1;1 1 2 2 2 1 2;6 5 2 3 4 1 0\n\n# R, L, L, R and (])\n05D0 0028 0061 005D 0062 05D1 0029;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0062 05D1 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005D 0062 0029 05D1;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005D 0062 05D1 0029;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0062 05D1 0029;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005D 0062 0029 05D1;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# R, L, R, ON and (])\n05D0 0028 0061 05D1 2680 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005D 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005D 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 2680 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 0029 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 005D 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 2680 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 0029 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 2680 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 0029 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 2680 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 05D1 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 0029 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 05D1 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and (])\n05D0 0028 0061 05D1 0062 005D 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 005D 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005D 0062 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005D 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 0062 0029;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 0029 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 005D 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 005D 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 0062 0029;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005D 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 0029 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 05D1 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 0062 0029;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 0029 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 005D 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 0062 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 05D1 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 0029 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 005D 05D0 0061 05D1 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and (])\n05D0 0028 0061 05D1 005D 05D2 0029;0;0;1 0 0 1 1 1 0;0 1 2 5 4 3 6\n05D0 0028 0061 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 005D 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 005D 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 0061 05D1 0029 05D2;0;0;1 0 0 0 1 0 1;0 1 2 3 4 5 6\n05D0 0028 005D 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 05D2 0029;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0061 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 005D 0029 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 005D 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 0061 05D1 0029 05D2;0;0;0 1 0 0 1 0 1;0 1 2 3 4 5 6\n0028 05D0 005D 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 005D 05D0 0061 05D1 0029 05D2;0;0;0 0 1 0 1 0 1;0 1 2 3 4 5 6\n0028 005D 05D0 0061 05D1 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and (])\n05D0 0028 05D1 2680 005D 2681 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 0029 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and (])\n05D0 0028 05D1 2680 0061 005D 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0061 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0061 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 2680 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 0061 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 0029 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0029 2680 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and (])\n05D0 0028 05D1 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 2680 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0029 2680 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and (])\n05D0 0028 05D1 0061 2680 005D 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005D 2680 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005D 0029 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 2680 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 0029 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 2680 0029;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 0029 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 2680 0029;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 0029 2680;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and (])\n05D0 0028 05D1 0061 005D 0062 0029;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 0062 0029;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 05D1 0061 005D 0029 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 0029 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 0029 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 0029 0062;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# R, R, L, R and (])\n05D0 0028 05D1 0061 05D2 005D 0029;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005D 05D2 0029;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 05D2 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 005D 0029 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 005D 0029 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 05D2 0029;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 0061 0029 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 05D2 0029;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 005D 05D1 0061 0029 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 05D2 0029;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 005D 05D1 0061 0029 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and (])\n05D0 0028 05D1 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and (])\n05D0 0028 05D1 005D 05D2 0061 0029;0;0;1 0 1 1 1 0 0;0 1 4 3 2 5 6\n05D0 0028 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and (])\n05D0 0028 05D1 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ()]\n0028 0029 005D;0;0;0 0 0;0 1 2\n0028 0029 005D;1;1;1 1 1;2 1 0\n\n# ON and ()]\n2680 0028 0029 005D;0;0;0 0 0 0;0 1 2 3\n2680 0028 0029 005D;1;1;1 1 1 1;3 2 1 0\n0028 2680 0029 005D;0;0;0 0 0 0;0 1 2 3\n0028 2680 0029 005D;1;1;1 1 1 1;3 2 1 0\n0028 0029 2680 005D;0;0;0 0 0 0;0 1 2 3\n0028 0029 2680 005D;1;1;1 1 1 1;3 2 1 0\n0028 0029 005D 2680;0;0;0 0 0 0;0 1 2 3\n0028 0029 005D 2680;1;1;1 1 1 1;3 2 1 0\n\n# L and ()]\n0061 0028 0029 005D;0;0;0 0 0 0;0 1 2 3\n0061 0028 0029 005D;1;1;2 1 1 1;3 2 1 0\n0028 0061 0029 005D;0;0;0 0 0 0;0 1 2 3\n0028 0061 0029 005D;1;1;1 2 1 1;3 2 1 0\n0028 0029 0061 005D;0;0;0 0 0 0;0 1 2 3\n0028 0029 0061 005D;1;1;1 1 2 1;3 2 1 0\n0028 0029 005D 0061;0;0;0 0 0 0;0 1 2 3\n0028 0029 005D 0061;1;1;1 1 1 2;3 2 1 0\n\n# R and ()]\n05D0 0028 0029 005D;0;0;1 0 0 0;0 1 2 3\n05D0 0028 0029 005D;1;1;1 1 1 1;3 2 1 0\n0028 05D0 0029 005D;0;0;0 1 0 0;0 1 2 3\n0028 05D0 0029 005D;1;1;1 1 1 1;3 2 1 0\n0028 0029 05D0 005D;0;0;0 0 1 0;0 1 2 3\n0028 0029 05D0 005D;1;1;1 1 1 1;3 2 1 0\n0028 0029 005D 05D0;0;0;0 0 0 1;0 1 2 3\n0028 0029 005D 05D0;1;1;1 1 1 1;3 2 1 0\n\n# ON, ON and ()]\n2680 0028 2681 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 2681 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 2681 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 2681 005D;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 005D 2681;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 005D 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 2681 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 2681 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 005D 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 005D 2681;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 005D 2681;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 005D 2681;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, L and ()]\n2680 0028 0061 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0061 0029 005D;1;1;1 1 2 1 1;4 3 2 1 0\n2680 0028 0029 0061 005D;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n2680 0028 0029 005D 0061;0;0;0 0 0 0 0;0 1 2 3 4\n2680 0028 0029 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 2680 0061 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0061 0029 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 2680 0029 0061 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 2680 0029 005D 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 2680 0029 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 2680 0061 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 2680 005D 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 2680 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 005D 2680 0061;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 005D 2680 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# ON, R and ()]\n2680 0028 05D0 0029 005D;0;0;0 0 1 0 0;0 1 2 3 4\n2680 0028 05D0 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n2680 0028 0029 05D0 005D;1;1;1 1 1 1 1;4 3 2 1 0\n2680 0028 0029 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n2680 0028 0029 005D 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 05D0 0029 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 2680 05D0 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 2680 0029 05D0 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 2680 0029 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 2680 0029 005D 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 2680 05D0 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 2680 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 2680 005D 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 005D 2680 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 005D 2680 05D0;1;1;1 1 1 1 1;4 3 2 1 0\n\n# L, ON and ()]\n0061 2680 0028 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 2680 0028 0029 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 2680 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 2680 0029 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 2680 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 2680 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 005D 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 005D 2680;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 2680 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 2680 0029 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 2680 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 2680 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 005D 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 005D 2680;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 2680 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 2680 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 005D 2680;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 005D 2680;1;1;1 1 2 1 1;4 3 2 1 0\n\n# L, L and ()]\n0061 0028 0062 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0062 0029 005D;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 0062 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 0062 005D;1;1;2 2 2 2 1;4 0 1 2 3\n0061 0028 0029 005D 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0061 0028 0029 005D 0062;1;1;2 2 2 2 2;0 1 2 3 4\n0028 0061 0029 0062 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 0062 005D;1;1;1 2 1 2 1;4 3 2 1 0\n0028 0061 0029 005D 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0061 0029 005D 0062;1;1;1 2 1 1 2;4 3 2 1 0\n0028 0029 0061 005D 0062;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0029 0061 005D 0062;1;1;1 1 2 2 2;2 3 4 1 0\n\n# L, R and ()]\n0061 0028 05D0 0029 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0061 0028 05D0 0029 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0061 0028 0029 05D0 005D;1;1;2 1 1 1 1;4 3 2 1 0\n0061 0028 0029 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0061 0028 0029 005D 05D0;1;1;2 1 1 1 1;4 3 2 1 0\n0028 0061 05D0 0029 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0061 05D0 0029 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0061 0029 05D0 005D;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0061 0029 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0061 0029 005D 05D0;1;1;1 2 1 1 1;4 3 2 1 0\n0028 0029 0061 05D0 005D;0;0;0 0 0 1 0;0 1 2 3 4\n0028 0029 0061 05D0 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 0029 0061 005D 05D0;0;0;0 0 0 0 1;0 1 2 3 4\n0028 0029 0061 005D 05D0;1;1;1 1 2 1 1;4 3 2 1 0\n\n# R, ON and ()]\n05D0 2680 0028 0029 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 2680 0028 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 2680 0029 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 2680 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 2680 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 2680 005D;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005D 2680;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 005D 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 2680 0029 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 2680 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 2680 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 2680 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 005D 2680;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 005D 2680;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 2680 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 2680 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 005D 2680;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 005D 2680;1;1;1 1 1 1 1;4 3 2 1 0\n\n# R, L and ()]\n05D0 0028 0061 0029 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0061 0029 005D;1;1;1 1 2 1 1;4 3 2 1 0\n05D0 0028 0029 0061 005D;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n05D0 0028 0029 005D 0061;0;0;1 0 0 0 0;0 1 2 3 4\n05D0 0028 0029 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 05D0 0061 0029 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0061 0029 005D;1;1;1 1 2 1 1;4 3 2 1 0\n0028 05D0 0029 0061 005D;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 05D0 0029 005D 0061;0;0;0 1 0 0 0;0 1 2 3 4\n0028 05D0 0029 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n0028 0029 05D0 0061 005D;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 0061 005D;1;1;1 1 1 2 1;4 3 2 1 0\n0028 0029 05D0 005D 0061;0;0;0 0 1 0 0;0 1 2 3 4\n0028 0029 05D0 005D 0061;1;1;1 1 1 1 2;4 3 2 1 0\n\n# R, R and ()]\n05D0 0028 05D1 0029 005D;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 05D1 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 05D1 005D;0;0;1 1 1 1 0;3 2 1 0 4\n05D0 0028 0029 05D1 005D;1;1;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005D 05D1;0;0;1 1 1 1 1;4 3 2 1 0\n05D0 0028 0029 005D 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 05D1 005D;0;0;0 1 0 1 0;0 1 2 3 4\n0028 05D0 0029 05D1 005D;1;1;1 1 1 1 1;4 3 2 1 0\n0028 05D0 0029 005D 05D1;0;0;0 1 0 0 1;0 1 2 3 4\n0028 05D0 0029 005D 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n0028 0029 05D0 005D 05D1;0;0;0 0 1 1 1;0 1 4 3 2\n0028 0029 05D0 005D 05D1;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON, ON, ON and ()]\n2680 0028 2681 0029 2682 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 2682 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 005D 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 005D 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 005D 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 005D 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, L and ()]\n2680 0028 2681 0061 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 2681 0029 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 2681 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 2681 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 2681 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 2681 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 005D 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 005D 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 2681 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 2681 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 005D 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 005D 2681 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, ON, R and ()]\n2680 0028 2681 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 2681 05D0 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 2681 0029 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 2681 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 2681 0029 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 2681 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 2681 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 2681 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 005D 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 005D 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 2681 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 2681 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 005D 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 005D 2681 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, L, ON and ()]\n2680 0028 0061 2681 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 2681 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 2681 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 005D 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 2681 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 005D 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 2681 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 2681 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 2681 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 005D 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 2681 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 005D 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 2681 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 005D 2681;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, L, L and ()]\n2680 0028 0061 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n2680 0028 0061 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0061 0029 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n2680 0028 0029 0061 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0029 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 2680 0061 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 2680 0061 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0061 0029 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 2680 0029 0061 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0029 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 2680 0061 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 2680 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# ON, L, R and ()]\n2680 0028 0061 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0061 05D0 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0061 0029 05D0 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0061 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0061 0029 005D 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n2680 0028 0029 0061 05D0 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 0029 0061 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n2680 0028 0029 0061 005D 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0061 05D0 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0061 0029 05D0 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0061 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0061 0029 005D 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 2680 0029 0061 05D0 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 0029 0061 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 2680 0029 0061 005D 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 2680 0061 05D0 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 2680 0061 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 2680 0061 005D 05D0;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# ON, R, ON and ()]\n2680 0028 05D0 2681 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 2681 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005D 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005D 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 2681 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005D 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005D 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005D 2681;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, R, L and ()]\n2680 0028 05D0 0061 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005D 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n2680 0028 05D0 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005D 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n2680 0028 0029 05D0 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005D 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 2680 05D0 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005D 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 2680 0029 05D0 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005D 0061;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 2680 05D0 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# ON, R, R and ()]\n2680 0028 05D0 0029 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n2680 0028 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 05D0 0029 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n2680 0028 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n2680 0028 0029 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n2680 0028 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 2680 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 05D0 0029 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 2680 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0029 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 2680 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 2680 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 2680 05D0 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L, ON, ON and ()]\n0061 2680 0028 2681 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 2681 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 2681 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 005D 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 2681 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 005D 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 005D 2681;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 2681 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 2681 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 005D 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 005D 2681;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 005D 2681;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 005D 2681;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, ON, L and ()]\n0061 2680 0028 0062 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0062 0029 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 0062 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 2680 0028 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 2680 0028 0029 005D 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 2680 0062 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0062 0029 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 0062 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 2680 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 2680 0029 005D 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 2680 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 0062 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0029 2680 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 2680 005D 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 005D 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 005D 2680 0062;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 2680 0062 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0062 0029 005D;1;1;1 2 2 2 1 1;5 4 1 2 3 0\n0028 0061 2680 0029 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 2680 0029 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 2680 0029 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 2680 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 2680 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 2680 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 005D 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 005D 2680 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 2680 0062 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 0062 005D;1;1;1 1 2 2 2 1;5 2 3 4 1 0\n0028 0029 0061 2680 005D 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 2680 005D 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n0028 0029 0061 005D 2680 0062;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0029 0061 005D 2680 0062;1;1;1 1 2 2 2 2;2 3 4 5 1 0\n\n# L, ON, R and ()]\n0061 2680 0028 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 2680 0028 05D0 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 2680 0028 0029 05D0 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 2680 0028 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 2680 0028 0029 005D 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 2680 05D0 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 2680 0029 05D0 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 2680 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 2680 0029 005D 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 2680 05D0 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 2680 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 2680 005D 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 005D 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 005D 2680 05D0;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 2680 05D0 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 2680 0029 05D0 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 2680 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 2680 0029 005D 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 2680 05D0 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 2680 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 2680 005D 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 005D 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 005D 2680 05D0;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0029 0061 2680 05D0 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 2680 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 2680 005D 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 005D 2680 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0029 0061 005D 2680 05D0;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, L, ON and ()]\n0061 0028 0062 2680 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 2680 0029 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 2680 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 005D 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 2680 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 005D 2680;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 2680 005D;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 005D 2680;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, L, L and ()]\n0061 0028 0062 0029 0063 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 0063 005D;1;1;2 2 2 2 2 1;5 0 1 2 3 4\n0061 0028 0062 0029 005D 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0062 0029 005D 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0061 0028 0029 0062 005D 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0029 0062 005D 0063;1;1;2 2 2 2 2 2;0 1 2 3 4 5\n0028 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0029 0062 005D 0063;1;1;1 2 1 2 2 2;3 4 5 2 1 0\n\n# L, L, R and ()]\n0061 0028 0062 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0062 05D0 0029 005D;1;1;2 1 2 1 1 1;5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0062 0029 05D0 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0062 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0062 0029 005D 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0061 0028 0029 0062 05D0 005D;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0061 0028 0029 0062 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0061 0028 0029 0062 005D 05D0;1;1;2 2 2 2 1 1;5 4 0 1 2 3\n0028 0061 0029 0062 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0061 0029 0062 05D0 005D;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0061 0029 0062 005D 05D0;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n\n# L, R, ON and ()]\n0061 0028 05D0 2680 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 2680 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 2680 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005D 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 005D 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 2680 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005D 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 005D 2680;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 2680 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 2680 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005D 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 005D 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 2680 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005D 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 005D 2680;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 2680 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005D 2680;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 005D 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# L, R, L and ()]\n0061 0028 05D0 0062 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0062 0029 005D;1;1;2 1 1 2 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 0062 005D;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005D 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0061 0028 05D0 0029 005D 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 0062 005D;1;1;2 1 1 1 2 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005D 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0061 0028 0029 05D0 005D 0062;1;1;2 1 1 1 1 2;5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0062 0029 005D;1;1;1 2 1 2 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005D 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0061 05D0 0029 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 0062 005D;1;1;1 2 1 1 2 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005D 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0061 0029 05D0 005D 0062;1;1;1 2 1 1 1 2;5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005D 0062;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0029 0061 05D0 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n\n# L, R, R and ()]\n0061 0028 05D0 0029 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0061 0028 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 05D0 0029 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0061 0028 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0061 0028 0029 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0061 0028 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0061 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 05D0 0029 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0061 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0061 0029 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0061 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0029 0061 05D0 005D 05D1;0;0;0 0 0 1 1 1;0 1 2 5 4 3\n0028 0029 0061 05D0 005D 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n\n# R, ON, ON and ()]\n05D0 2680 0028 2681 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 2681 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005D 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005D 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005D 2681;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 2681 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005D 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005D 2681;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005D 2681;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 005D 2681;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, ON, L and ()]\n05D0 2680 0028 0061 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005D 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 2680 0028 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005D 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 2680 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005D 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 2680 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 005D 2680 0061;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 005D 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005D 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 2680 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005D 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 2680 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 005D 2680 0061;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 005D 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005D 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 2680 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 0029 05D0 005D 2680 0061;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 005D 2680 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, ON, R and ()]\n05D0 2680 0028 05D1 0029 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 05D1 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 2680 0028 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005D 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 2680 0028 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 05D1 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 2680 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005D 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 2680 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 0029 2680 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005D 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 2680 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005D 2680 05D1;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 005D 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005D;0;0;0 1 1 1 0 0;0 3 2 1 4 5\n0028 05D0 2680 05D1 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 2680 0029 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 2680 0029 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 2680 0029 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 2680 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 2680 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 2680 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 005D 2680 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 005D 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005D;0;0;0 0 1 1 1 0;0 1 4 3 2 5\n0028 0029 05D0 2680 05D1 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 2680 005D 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 2680 005D 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0029 05D0 005D 2680 05D1;0;0;0 0 1 1 1 1;0 1 5 4 3 2\n0028 0029 05D0 005D 2680 05D1;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, L, ON and ()]\n05D0 0028 0061 2680 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 2680 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 2680 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005D 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 005D 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 2680 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 005D 2680;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 005D 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 2680 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 2680 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005D 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 005D 2680;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 2680 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 005D 2680;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 005D 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 2680 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 005D 2680;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 005D 2680;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, L, L and ()]\n05D0 0028 0061 0029 0062 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005D 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0061 0029 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 0061 005D 0062;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0029 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 05D0 0061 0029 0062 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 0062 005D;1;1;1 1 2 1 2 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005D 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0061 0029 005D 0062;1;1;1 1 2 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 0061 005D 0062;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0029 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n0028 0029 05D0 0061 005D 0062;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0029 05D0 0061 005D 0062;1;1;1 1 1 2 2 2;3 4 5 2 1 0\n\n# R, L, R and ()]\n05D0 0028 0061 05D1 0029 005D;0;0;1 0 0 1 0 0;0 1 2 3 4 5\n05D0 0028 0061 05D1 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005D;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0061 0029 05D1 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0061 0029 005D 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0061 0029 005D 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005D;0;0;1 0 0 0 1 0;0 1 2 3 4 5\n05D0 0028 0029 0061 05D1 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 0029 0061 005D 05D1;0;0;1 0 0 0 0 1;0 1 2 3 4 5\n05D0 0028 0029 0061 005D 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005D;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0061 05D1 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0061 0029 05D1 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0061 0029 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0061 0029 005D 05D1;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005D;0;0;0 1 0 0 1 0;0 1 2 3 4 5\n0028 05D0 0029 0061 05D1 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 05D0 0029 0061 005D 05D1;0;0;0 1 0 0 0 1;0 1 2 3 4 5\n0028 05D0 0029 0061 005D 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005D;0;0;0 0 1 0 1 0;0 1 2 3 4 5\n0028 0029 05D0 0061 05D1 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0029 05D0 0061 005D 05D1;0;0;0 0 1 0 0 1;0 1 2 3 4 5\n0028 0029 05D0 0061 005D 05D1;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n\n# R, R, ON and ()]\n05D0 0028 05D1 2680 0029 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 2680 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 2680;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005D;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005D 2680;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# R, R, L and ()]\n05D0 0028 05D1 0061 0029 005D;0;0;1 0 1 0 0 0;0 1 2 3 4 5\n05D0 0028 05D1 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 05D1 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005D;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 0061;0;0;1 1 1 1 0 0;3 2 1 0 4 5\n05D0 0028 0029 05D1 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005D;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005D 0061;0;0;0 1 0 1 0 0;0 1 2 3 4 5\n0028 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R, R, R and ()]\n05D0 0028 05D1 0029 05D2 005D;0;0;1 1 1 1 1 0;4 3 2 1 0 5\n05D0 0028 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1;5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0029 05D1 005D 05D2;0;0;0 1 0 1 1 1;0 1 2 5 4 3\n0028 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON, ON, ON and ()]\n2680 0028 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON, L and ()]\n2680 0028 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, ON, R and ()]\n2680 0028 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, ON and ()]\n2680 0028 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 2682 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 2682 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005D 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 2682 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005D 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 2682 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005D 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 2682 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005D 2682;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, L, L and ()]\n2680 0028 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, ON, L, R and ()]\n2680 0028 2681 0061 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 05D0 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0061 0029 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 0029 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 2681 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 2681 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, ON and ()]\n2680 0028 2681 05D0 2682 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 2682 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005D 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 2682 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005D 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 2682 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005D 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 2682 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005D 2682;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, R, L and ()]\n2680 0028 2681 05D0 0061 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, ON, R, R and ()]\n2680 0028 2681 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, ON and ()]\n2680 0028 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005D 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005D 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005D 2682;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, ON, L and ()]\n2680 0028 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n2680 0028 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 005D 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n2680 0028 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n2680 0028 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 005D 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 2680 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 005D 2681 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 2680 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 2680 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 005D 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 2680 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 2680 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 005D 2681 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# ON, L, ON, R and ()]\n2680 0028 0061 2681 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 2681 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 0061 005D 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 2681 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 0061 005D 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 2681 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 0061 005D 2681 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, ON and ()]\n2680 0028 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 2681 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005D 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 2681 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005D 2681;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, L, L and ()]\n2680 0028 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, L, L, R and ()]\n2680 0028 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 05D0 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 0029 0062 005D 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 05D0 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 0029 0062 005D 05D0;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, ON and ()]\n2680 0028 0061 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, L, R, L and ()]\n2680 0028 0061 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0062 0029 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0029 0061 05D0 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0062 0029 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0029 0061 05D0 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 2680 0061 05D0 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# ON, L, R, R and ()]\n2680 0028 0061 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0061 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0061 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 0029 0061 05D0 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0061 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0061 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 0029 0061 05D0 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 0061 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 2680 0061 05D0 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, ON and ()]\n2680 0028 05D0 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005D 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005D 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005D 2682;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, ON, L and ()]\n2680 0028 05D0 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005D 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005D 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005D 2681 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, ON, R and ()]\n2680 0028 05D0 2681 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n2680 0028 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 2681 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n2680 0028 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 2681 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 005D 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n2680 0028 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 2680 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 2681 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 2680 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 2681 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 005D 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 2680 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 2680 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 2681 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 005D 2681 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 2680 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, ON and ()]\n2680 0028 05D0 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, L, L and ()]\n2680 0028 05D0 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n2680 0028 0029 05D0 0061 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 05D0 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 2680 0029 05D0 0061 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 2680 05D0 0061 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# ON, R, L, R and ()]\n2680 0028 05D0 0061 05D1 0029 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0029 05D0 0061 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n2680 0028 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0029 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0029 05D0 0061 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 2680 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 2680 05D0 0061 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 2680 05D0 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, ON and ()]\n2680 0028 05D0 0029 05D1 2681 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005D 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 2681 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005D 2681;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, R, R, L and ()]\n2680 0028 05D0 0029 05D1 0061 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 05D0 0029 05D1 005D 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 0061 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005D 0061;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R, R, R and ()]\n2680 0028 05D0 0029 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n2680 0028 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0029 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 2680 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, ON and ()]\n0061 2680 0028 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, ON, L and ()]\n0061 2680 0028 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0062 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 005D 2681 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 005D 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 005D 2681 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 005D 2681 0062;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, ON, R and ()]\n0061 2680 0028 2681 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 005D 2681 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 005D 2681 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 005D 2681 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, L, ON and ()]\n0061 2680 0028 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 2681 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0029 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 2681 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005D 2681;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 2681 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005D 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 2681 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005D 2681;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 2681 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005D 2681;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, L, L and ()]\n0061 2680 0028 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 2680 0028 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 0063 005D;1;1;1 2 2 2 1 2 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005D 0063;1;1;1 2 2 2 1 1 2;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005D 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005D 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005D 0063;1;1;1 1 2 2 2 2 2;2 3 4 5 6 1 0\n\n# L, ON, L, R and ()]\n0061 2680 0028 0062 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 05D0 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0062 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0062 0029 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 2680 0028 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 0029 0062 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0062 0029 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 0029 0062 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 2680 0062 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0028 0061 2680 0062 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0029 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 05D0 005D;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0062 0029 005D 05D0;1;1;1 2 2 2 1 1 1;6 5 4 1 2 3 0\n0028 0061 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 05D0 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 0029 0062 005D 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 05D0 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 2680 0062 005D 05D0;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 0062 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 05D0 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0029 0061 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 2680 0062 005D 05D0;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n\n# L, ON, R, ON and ()]\n0061 2680 0028 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 2681 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 2681 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005D 2681;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON, R, L and ()]\n0061 2680 0028 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0062 0029 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0062 0029 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 2680 05D0 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0062 0029 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 2680 05D0 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 0062 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005D 0062;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 0061 2680 05D0 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, ON, R, R and ()]\n0061 2680 0028 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 2680 0028 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 2680 0028 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 2680 0028 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 2680 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 2680 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 2680 05D0 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 2680 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 2680 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 2680 05D0 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 2680 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 0061 2680 05D0 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, ON and ()]\n0061 0028 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 2681 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005D 2681;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005D 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005D 2681;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005D 2681;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, ON, L and ()]\n0061 0028 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0063 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 0063 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005D 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 005D 2680 0063;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 0063 005D;1;1;1 2 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0061 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005D 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0061 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 005D 2680 0063;1;1;1 2 1 2 2 2 2;3 4 5 6 2 1 0\n\n# L, L, ON, R and ()]\n0061 0028 0062 2680 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 05D0 0029 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 2680 0029 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 05D0 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 2680 005D 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 005D 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 05D0 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 2680 005D 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 0062 005D 2680 05D0;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 05D0 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 2680 005D 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 0062 005D 2680 05D0;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, L, ON and ()]\n0061 0028 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 2680 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005D 2680;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, L, L and ()]\n0061 0028 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n\n# L, L, L, R and ()]\n0061 0028 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 05D0 005D;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 0029 0063 005D 05D0;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n\n# L, L, R, ON and ()]\n0061 0028 0062 05D0 2680 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 2680 0029 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 2680 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005D 2680;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 2680 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 005D 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 2680 005D;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 005D 2680;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 2680 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 005D 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, L, R, L and ()]\n0061 0028 0062 05D0 0063 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0063 0029 005D;1;1;2 1 2 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 0063 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 0063 005D;1;1;2 1 2 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005D 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005D 0063;1;1;2 1 2 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 0063 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 0063 005D;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0062 0029 05D0 005D 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0029 05D0 005D 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 0063 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 0063 005D;1;1;2 2 2 2 1 2 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005D 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0029 0062 05D0 005D 0063;1;1;2 2 2 2 1 1 2;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 0063 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 0063 005D;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 0062 05D0 005D 0063;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0029 0062 05D0 005D 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n\n# L, L, R, R and ()]\n0061 0028 0062 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 05D1 005D;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0062 05D0 0029 005D 05D1;1;1;2 1 2 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0062 0029 05D0 005D 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0061 0028 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 0029 0062 05D0 005D 05D1;1;1;2 2 2 2 1 1 1;6 5 4 0 1 2 3\n0028 0061 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 0029 0062 05D0 005D 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, ON and ()]\n0061 0028 05D0 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 005D 2681;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 005D 2681;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005D 2681;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, ON, L and ()]\n0061 0028 05D0 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0062 0029 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005D 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 2680 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005D 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 005D 2680 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0062 0029 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005D 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 2680 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005D 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 005D 2680 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 0062 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005D 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 2680 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005D 2680 0062;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 005D 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, ON, R and ()]\n0061 0028 05D0 2680 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0061 0028 05D0 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0061 0028 0029 05D0 2680 05D1 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 2680 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 2680 005D 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 005D 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0061 0028 0029 05D0 005D 2680 05D1;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0061 05D0 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0061 0029 05D0 2680 05D1 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 2680 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 2680 005D 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 005D 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0061 0029 05D0 005D 2680 05D1;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 05D1 005D;0;0;0 0 0 1 1 1 0;0 1 2 5 4 3 6\n0028 0029 0061 05D0 2680 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 2680 005D 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 2680 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 005D 2680 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0029 0061 05D0 005D 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, L, ON and ()]\n0061 0028 05D0 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 2680 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 2680 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005D 2680;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 2680 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005D 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 2680 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005D 2680;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 2680 0029 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 2680 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005D 2680;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 2680 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005D 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 2680 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005D 2680;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 2680 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005D 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, L, L and ()]\n0061 0028 05D0 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 0063 005D;1;1;2 1 1 2 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005D 0063;1;1;2 1 1 2 1 1 2;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005D 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0061 0028 0029 05D0 0062 005D 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005D 0063;1;1;2 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 05D0 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 0063 005D;1;1;1 2 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005D 0063;1;1;1 2 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005D 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0061 0029 05D0 0062 005D 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005D 0063;1;1;1 2 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 0061 05D0 0062 005D 0063;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# L, R, L, R and ()]\n0061 0028 05D0 0062 05D1 0029 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 05D1 0029 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 05D1 005D;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0062 0029 005D 05D1;1;1;2 1 1 2 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 05D1 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 05D0 0029 0062 005D 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 05D1 005D;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0061 0028 0029 05D0 0062 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0061 0028 0029 05D0 0062 005D 05D1;1;1;2 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0029 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 05D1 0029 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 05D1 005D;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0062 0029 005D 05D1;1;1;1 2 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 05D1 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 05D0 0029 0062 005D 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 05D1 005D;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0061 0029 05D0 0062 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0061 0029 05D0 0062 005D 05D1;1;1;1 2 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 05D1 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 0061 05D0 0062 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0029 0061 05D0 0062 005D 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# L, R, R, ON and ()]\n0061 0028 05D0 0029 05D1 2680 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005D 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 2680 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005D 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, R, R, L and ()]\n0061 0028 05D0 0029 05D1 0062 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 0062 005D;1;1;2 1 1 1 1 2 1;6 5 4 3 2 1 0\n0061 0028 05D0 0029 05D1 005D 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 0062 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 0062 005D;1;1;1 2 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005D 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 2;6 5 4 3 2 1 0\n\n# L, R, R, R and ()]\n0061 0028 05D0 0029 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0061 0028 05D0 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0029 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0061 05D0 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, ON and ()]\n05D0 2680 0028 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, ON, L and ()]\n05D0 2680 0028 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 2681 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005D 2681 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005D 2681 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005D 2681 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 005D 2681 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, ON, R and ()]\n05D0 2680 0028 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005D 2681 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 2681 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 005D 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 005D 2681 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 005D 2681 05D1;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, ON and ()]\n05D0 2680 0028 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 2681 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 2681 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 2681 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 2681 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005D 2681;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, L, L and ()]\n05D0 2680 0028 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 2680 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 2680 0061 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 2680 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 2680 0061 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 0029 05D0 2680 0061 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, ON, L, R and ()]\n05D0 2680 0028 0061 05D1 0029 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 2680 0028 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0029 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 2680 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 0061 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 2680 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0029 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 05D1 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0061 0029 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 2680 0029 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 0061 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 2680 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 05D1 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 0061 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 2680 0061 005D 05D1;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, ON and ()]\n05D0 2680 0028 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0029 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 2681 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005D 2681;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 2681 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005D 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 2681 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005D 2681;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 2681 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005D 2681;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, ON, R, L and ()]\n05D0 2680 0028 05D1 0061 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 05D1 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 2680 0028 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 05D1 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0029 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 0061 005D;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005D 0061;0;0;0 1 1 1 0 0 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 0061 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005D 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 0061 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005D 0061;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 0061 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005D 0061;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0029 05D0 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, ON, R, R and ()]\n05D0 2680 0028 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 2680 0028 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 2680 0028 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 05D2 005D;0;0;0 1 1 1 0 1 0;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0029 005D 05D2;0;0;0 1 1 1 0 0 1;0 3 2 1 4 5 6\n0028 05D0 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0029 05D1 005D 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 2680 05D1 005D 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 2680 05D1 005D 05D2;0;0;0 0 1 1 1 1 1;0 1 6 5 4 3 2\n0028 0029 05D0 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, ON and ()]\n05D0 0028 0061 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005D 2681;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005D 2681;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005D 2681;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005D 2681;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, ON, L and ()]\n05D0 0028 0061 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n05D0 0028 0061 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005D 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 0062 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n05D0 0028 0029 0061 2680 005D 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n05D0 0028 0029 0061 005D 2680 0062;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005D 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0061 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 05D0 0061 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005D 2680 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 0062 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 05D0 0029 0061 2680 005D 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 05D0 0029 0061 005D 2680 0062;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005D 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 2680 0062 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 0062 005D;1;1;1 1 1 2 2 2 1;6 3 4 5 2 1 0\n0028 0029 05D0 0061 2680 005D 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005D 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0029 05D0 0061 005D 2680 0062;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005D 2680 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n\n# R, L, ON, R and ()]\n05D0 0028 0061 2680 05D1 0029 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 2680 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 2680 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 005D 2680 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0029 0061 005D 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0029 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 2680 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 2680 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 005D 2680 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 0061 005D 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 05D1 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 2680 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 2680 005D 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 005D 2680 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0029 05D0 0061 005D 2680 05D1;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, L, ON and ()]\n05D0 0028 0061 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 2680 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005D 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 2680 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005D 2680;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, L, L and ()]\n05D0 0028 0061 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0061 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005D 0063;1;1;1 1 2 1 2 2 2;4 5 6 3 2 1 0\n\n# R, L, L, R and ()]\n05D0 0028 0061 0029 0062 05D1 005D;0;0;1 0 0 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 05D1 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 0029 0062 005D 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 05D1 005D;0;0;0 1 0 0 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 05D1 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 0029 0062 005D 05D1;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n\n# R, L, R, ON and ()]\n05D0 0028 0061 05D1 2680 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 2680 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005D 2680;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 2680 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005D 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 2680 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005D 2680;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0029 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 2680 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005D 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 2680 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005D 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 2680 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005D 2680;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 2680 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005D 2680;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, L, R, L and ()]\n05D0 0028 0061 05D1 0062 0029 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0062 0029 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 0062 005D;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005D 0062;0;0;1 0 0 1 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 0062 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005D 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 0062 005D;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005D 0062;0;0;1 0 0 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 0029 0061 05D1 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0029 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0062 0029 005D;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 0062 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005D 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 0062 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005D 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 0062 005D;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005D 0062;0;0;0 1 0 0 1 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 0061 05D1 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 0062 005D;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005D 0062;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0029 05D0 0061 05D1 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n\n# R, L, R, R and ()]\n05D0 0028 0061 05D1 0029 05D2 005D;0;0;1 0 0 1 0 1 0;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0029 005D 05D2;0;0;1 0 0 1 0 0 1;0 1 2 3 4 5 6\n05D0 0028 0061 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0061 0029 05D1 005D 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0061 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 0061 05D1 005D 05D2;0;0;1 0 0 0 1 1 1;0 1 2 3 6 5 4\n05D0 0028 0029 0061 05D1 005D 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 05D2 005D;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0029 005D 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0061 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0061 0029 05D1 005D 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0061 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 0061 05D1 005D 05D2;0;0;0 1 0 0 1 1 1;0 1 2 3 6 5 4\n0028 05D0 0029 0061 05D1 005D 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0029 05D0 0061 05D1 005D 05D2;0;0;0 0 1 0 1 1 1;0 1 2 3 6 5 4\n0028 0029 05D0 0061 05D1 005D 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, ON and ()]\n05D0 0028 05D1 2680 0029 2681 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005D 2681;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005D 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005D 2681;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005D 2681;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, ON, L and ()]\n05D0 0028 05D1 2680 0061 0029 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 2680 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 0061 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005D 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 0061 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005D 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 2680 0061;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 0061 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005D 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005D 2680 0061;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, ON, R and ()]\n05D0 0028 05D1 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 05D2 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005D 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 2680 05D2;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 05D2 005D;0;0;0 1 0 1 1 1 0;0 1 2 5 4 3 6\n0028 05D0 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 2680 005D 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 005D 2680 05D2;0;0;0 1 0 1 1 1 1;0 1 2 6 5 4 3\n0028 05D0 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, L, ON and ()]\n05D0 0028 05D1 0061 2680 0029 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 2680 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 2680 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005D 2680;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 2680 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005D 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 2680 005D;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005D 2680;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 2680 005D;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005D 2680;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, L, L and ()]\n05D0 0028 05D1 0061 0029 0062 005D;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005D 0062;0;0;1 0 1 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005D 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n05D0 0028 0029 05D1 0061 005D 0062;0;0;1 1 1 1 0 0 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n0028 05D0 0029 05D1 0061 005D 0062;0;0;0 1 0 1 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# R, R, L, R and ()]\n05D0 0028 05D1 0061 05D2 0029 005D;0;0;1 0 1 0 1 0 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 05D2 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 05D2 005D;0;0;1 0 1 0 0 1 0;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 05D2 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0029 005D 05D2;0;0;1 0 1 0 0 0 1;0 1 2 3 4 5 6\n05D0 0028 05D1 0061 0029 005D 05D2;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 05D2 005D;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 0061 005D 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 05D2 005D;0;0;1 1 1 1 0 1 0;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0029 05D1 0061 005D 05D2;0;0;1 1 1 1 0 0 1;3 2 1 0 4 5 6\n05D0 0028 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 05D2 005D;0;0;0 1 0 1 0 1 0;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0029 05D1 0061 005D 05D2;0;0;0 1 0 1 0 0 1;0 1 2 3 4 5 6\n0028 05D0 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, R, R, ON and ()]\n05D0 0028 05D1 0029 05D2 2680 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005D 2680;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, R, R, L and ()]\n05D0 0028 05D1 0029 05D2 0061 005D;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005D 0061;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R, R, R and ()]\n05D0 0028 05D1 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# (()()\n0028 0028 0029 0028 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 0029 0028 0029;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON and (()()\n2680 0028 0028 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 2680 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0028 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0028 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0028 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L and (()()\n0061 0028 0028 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 0029 0028 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 0029 0028 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 0029 0028 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0061 0028 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0061 0028 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 0029 0028 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0028 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 0029 0028 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R and (()()\n05D0 0028 0028 0029 0028 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 0029 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 0029 05D0 0028 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 0029 0028 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 0029 0028 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON and (()()\n2680 0028 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L and (()()\n2680 0028 0061 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0028 0029 2680 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R and (()()\n2680 0028 05D0 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 05D0 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 2680 0028 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 2680 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0028 2680 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0028 0029 2680 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON and (()()\n0061 2680 0028 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 2680 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 2680 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 2680 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L and (()()\n0061 0028 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 0028 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 0028 0029;1;1;2 2 2 2 2 1 1;6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 0029 0028 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0062 0028 0029;1;1;1 2 2 2 2 1 1;6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0062 0028 0029;1;1;1 1 2 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 0062 0029;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 0062 0029;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 0029 0062;1;1;1 1 1 2 2 2 2;3 4 5 6 2 1 0\n0028 0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R and (()()\n0061 0028 05D0 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 0029 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 05D0 0028 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 0029 0028 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 05D0 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0061 0028 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0028 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON and (()()\n05D0 2680 0028 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 2680 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0028 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0028 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 05D0 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 05D0 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L and (()()\n05D0 0028 0061 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 0029 0028 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0061 0028 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R and (()()\n05D0 0028 05D1 0028 0029 0028 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029;0;0;1 1 1 1 1 0 0;4 3 2 1 0 5 6\n05D0 0028 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029;0;0;0 1 1 1 1 0 0;0 4 3 2 1 5 6\n0028 05D0 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029;0;0;0 0 1 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 1 1 1 1;0 1 2 6 5 4 3\n0028 0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON and (()()\n2680 0028 2681 0028 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L and (()()\n2680 0028 2681 0061 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R and (()()\n2680 0028 2681 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 2681 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON and (()()\n2680 0028 0061 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L and (()()\n2680 0028 0061 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0061 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0061 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R and (()()\n2680 0028 0061 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0061 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON and (()()\n2680 0028 05D0 2681 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L and (()()\n2680 0028 05D0 0061 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R and (()()\n2680 0028 05D0 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n2680 0028 05D0 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n2680 0028 0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 2680 05D0 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 2680 0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 2680 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 2680 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0029 2680 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0029 2680 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 2680 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON and (()()\n0061 2680 0028 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L and (()()\n0061 2680 0028 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0029 2680 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 0029 0028 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 0029 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0062 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 2680 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 0029 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0062 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0062 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 2680 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 2680 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0029 2680 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 0029 0028 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 2680 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0062 0028 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0028 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0061 2680 0028 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 2680 0062 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 2680 0029 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0029 2680 0062;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0028 0061 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 0029 0028 0061 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R and (()()\n0061 2680 0028 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0029 2680 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0029 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0029 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 2680 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 2680 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 2680 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0029 2680 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 2680 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 2680 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 2680 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0029 2680 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 2680 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 2680 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 2680 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0029 2680 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 2680 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 2680 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 0029 2680 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON and (()()\n0061 0028 0062 2680 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 0029 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 0029 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 2680 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 2680 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 0029 2680;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 2680 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 2680 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 0029 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 2680 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 2680 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0029 2680;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 2680 0028 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 2680 0028 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 2680 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 0029 2680;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0062 2680 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0062 0029 2680;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0028 0061 0029 0062 2680 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 2680 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 2680 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 0029 2680;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0062 2680 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0062 0029 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0062 2680 0029;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0062 0029 2680;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, L, L and (()()\n0061 0028 0062 0028 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 0029 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 0028 0029;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 0063 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 2 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2;3 4 5 6 7 2 1 0\n\n# L, L, R and (()()\n0061 0028 0062 05D0 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 0029 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 0029 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 05D0 0028 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 05D0 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0029 0028 0029 05D0;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1;7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 0029 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 05D0 0028 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0028 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 05D0 0028 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 05D0 0029;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0062 0028 0029 05D0;1;1;1 2 2 2 2 1 1 1;7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0062 05D0 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0028 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 05D0 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 05D0 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0062 0028 0029 05D0;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 0062 0029 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n\n# L, R, ON and (()()\n0061 0028 05D0 2680 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 2680 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0028 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0028 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 2680 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 2680 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0028 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0028 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 05D0 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 05D0 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 2680 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0028 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0028 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 2680 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 2680 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0028 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0028 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 05D0 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 05D0 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 05D0 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 05D0 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 05D0 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 05D0 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 05D0 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 05D0 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L and (()()\n0061 0028 05D0 0062 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 0029 0028 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 0029 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 0029 0028 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 0029 0028 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 0029 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 0029 0028 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0062 0028 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 0029 0028 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R and (()()\n0061 0028 05D0 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0061 0028 05D0 0028 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0028 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0061 0028 0028 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0061 05D0 0028 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0028 0029 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0061 0028 0029 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0029 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0061 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0061 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON and (()()\n05D0 2680 0028 2681 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L and (()()\n05D0 2680 0028 0061 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 2680 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029 2680 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029 2680 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029 2680 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029 2680 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R and (()()\n05D0 2680 0028 05D1 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 2680 0028 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 2680 0028 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 2680 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 2680 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 2680 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 2680 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 2680 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0029 2680 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0029 05D0 2680 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 0028 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 0028 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 0028 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 0029 0028 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON and (()()\n05D0 0028 0061 2680 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 2680 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L and (()()\n05D0 0028 0061 0028 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R and (()()\n05D0 0028 0061 05D1 0028 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON and (()()\n05D0 0028 05D1 2680 0028 0029 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 2680 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 2680;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 2680;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029 2680;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029 2680;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 2680 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0028 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029 2680;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0028 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 0029 05D0 0028 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L and (()()\n05D0 0028 05D1 0061 0028 0029 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0061 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 0061;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 0 0 0;4 3 2 1 0 5 6 7\n05D0 0028 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 0029;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029 0061;0;0;0 1 1 1 1 0 0 0;0 4 3 2 1 5 6 7\n0028 05D0 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029 0061;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R and (()()\n05D0 0028 05D1 0028 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 0028 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 05D1 0028 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 0029;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1;0 1 2 7 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and (()()\n2680 0028 2681 0028 2682 0029 2683 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 2683 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (()()\n2680 0028 2681 0028 2682 0061 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0061 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0061 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0061 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0061 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (()()\n2680 0028 2681 0028 2682 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 05D0 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0029 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 2682 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 2682 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 2682 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 2682 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 05D0 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 2682 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 2682 0028 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (()()\n2680 0028 2681 0061 2682 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 2682 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 2682 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 2682 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 2682 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 2682 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 2682 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 2682 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 2682 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 2682 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 2682 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and (()()\n2680 0028 2681 0061 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 2681 0061 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 2681 0061 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0061 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0028 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and (()()\n2680 0028 2681 0061 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 05D0 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 05D0 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 0029 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 05D0 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 0029 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 05D0 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 0029 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 05D0 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0061 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0061 0028 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (()()\n2680 0028 2681 05D0 2682 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 2682 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 2682 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 2682 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 2682 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 2682 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 2682 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 2682 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 2682 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 2682 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 2682 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and (()()\n2680 0028 2681 05D0 0061 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0061 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0061 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0061 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0061 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 05D0 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and (()()\n2680 0028 2681 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 2681 05D0 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 2681 05D0 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 2681 0028 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 2681 0028 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 2681 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 2681 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 2681 0029 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 2681 0029 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0029 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0029 2681 05D0 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0029 2681 05D0 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 2681 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 2681 0028 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (()()\n2680 0028 0061 2681 0028 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 2682 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 2682 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 2682 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 2682 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 2682 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 2682 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and (()()\n2680 0028 0061 2681 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0062 0028 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 2681 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 2681 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 2681 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 2681 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 2681 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 2681 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0029 2681 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0062 0028 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 2681 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 2681 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 2681 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 2681 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0029 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 2681 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 2681 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 2681 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0029 2681 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 2681 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 2681 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 2681 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0029 2681 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 2681 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 2681 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0029 2681 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and (()()\n2680 0028 0061 2681 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 05D0 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 2681 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 05D0 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 05D0 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0029 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 2681 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 05D0 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0029 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 05D0 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 2681 0028 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 2681 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 05D0 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 2681 0028 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and (()()\n2680 0028 0061 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 2681 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 2681 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 2681 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 2681 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 2681 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0062 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0028 0061 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 2681 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 2681 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 0029 2681;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0062 2681 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0062 0029 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0062 2681 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0062 0029 2681;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0061 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 2681 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 2681 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 2681 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 2681 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 2681 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0062 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0062 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0028 0061 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 2681 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 2681 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 0029 2681;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0062 2681 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0062 0029 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0062 2681 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0062 0029 2681;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 2680 0061 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 2681 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 2681 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 0029 2681;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0062 2681 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0062 0029 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0062 2681 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0062 0029 2681;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0062 2681 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0062 0029 2681;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# ON, L, L, L and (()()\n2680 0028 0061 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0063 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 2680 0061 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0063 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n\n# ON, L, L, R and (()()\n2680 0028 0061 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 05D0 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 05D0 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 0029 0028 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 05D0 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0062 0028 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n2680 0028 0061 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0028 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 05D0 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 05D0 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0062 0028 0029 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 0062 0029 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0061 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 05D0 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 05D0 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 0029 0028 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 05D0 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0062 0028 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 2680 0061 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 0062 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0028 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 05D0 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 05D0 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0062 0028 0029 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 0062 0029 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 2680 0061 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 05D0 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 05D0 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0062 0028 0029 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 0062 0029 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 0062 0029 05D0;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 0062 0029 05D0;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# ON, L, R, ON and (()()\n2680 0028 0061 05D0 2681 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 2681 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 2681 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, L and (()()\n2680 0028 0061 05D0 0062 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0062 0028 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0062 0028 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 05D0 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 05D0 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, R and (()()\n2680 0028 0061 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0061 05D0 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0061 05D0 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0061 0028 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0061 0028 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0061 0029 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0061 0029 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 0029 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0061 05D0 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0061 05D0 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0061 0028 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0061 0028 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0061 0029 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0061 0029 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 0029 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0061 0029 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0061 0029 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 0029 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0029 0061 05D0 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 0029 0061 05D0 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0061 0028 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 2680 0061 05D0 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 2680 0061 05D0 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0061 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0061 0028 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (()()\n2680 0028 05D0 2681 0028 2682 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 2682 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 2682 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 2682 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 2682 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 2682 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and (()()\n2680 0028 05D0 2681 0061 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0061 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0061 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0061 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0061 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and (()()\n2680 0028 05D0 2681 05D1 0028 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n2680 0028 05D0 2681 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 2681 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 2681 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 2681 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0028 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 2681 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 2681 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0029 2681 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n2680 0028 0028 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0028 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 2680 05D0 2681 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 2681 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 2681 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 2681 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 2681 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 2681 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0028 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 2681 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 2681 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0029 2681 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 2680 0028 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 2681 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 2680 0029 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 2681 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 2681 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0029 2681 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 2680 0029 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 2680 05D0 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 2681 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 2681 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0029 2681 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0029 2680 0028 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0029 0028 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and (()()\n2680 0028 05D0 0061 2681 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 2681 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 2681 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, L and (()()\n2680 0028 05D0 0061 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0028 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0028 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, R and (()()\n2680 0028 05D0 0061 05D1 0028 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 05D1 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0028 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 05D1 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0061 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0061 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 0028 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 0028 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 2680 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and (()()\n2680 0028 05D0 0028 05D1 2681 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 2681 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 2681 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 2681 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 2681 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 2681 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 2681 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 0029 2681;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 2681 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 0029 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 2681 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 0029 2681;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 2681 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 2681 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 2681 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 2681 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 2681 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 2681 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 2681 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 0029 2681;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 2681 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 0029 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 2681 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 0029 2681;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 2681 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 2681 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 0029 2681;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 2681 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 0029 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 2681 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 0029 2681;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 2680 0029 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 2681 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 0029 2681;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0029 2680 05D0 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, L and (()()\n2680 0028 05D0 0028 05D1 0061 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0061 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0061 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n2680 0028 05D0 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0061 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 0061 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 0029 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 0029 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0061 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0061 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0061 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 2680 05D0 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0061 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 0061 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 0029 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 0029 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0061 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 0061 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 0029 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 0029 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0029 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 0029 0061;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 2680 0029 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 2680 05D0 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 0029 0061;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0029 2680 05D0 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, R and (()()\n2680 0028 05D0 0028 05D1 0029 05D2 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 0029 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 05D1 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0029 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n2680 0028 0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 05D2 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0029 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 05D1 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0029 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 2680 0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 2680 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 2680 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 2680 05D0 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (()()\n0061 2680 0028 2681 0028 2682 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 2682 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 2682 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 2682 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 2682 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 2682 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 2682 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and (()()\n0061 2680 0028 2681 0062 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0062 0028 0029 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 2680 0028 2681 0028 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0062 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 2681 0028 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0062 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 0029 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 2681 0029 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0062 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 2681 0029 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 2681 0029 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0062 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0062 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 0029 2681 0062 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 2681 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 2681 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 2681 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 2681 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 2681 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 2680 0028 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 2681 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 2680 0028 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0029 2681 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 0028 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0029 2681 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0028 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and (()()\n0061 2680 0028 2681 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 05D0 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 05D0 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0029 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 05D0 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 2681 0028 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 05D0 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0029 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 2681 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 05D0 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 2681 0028 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 05D0 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 2681 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 2681 0028 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and (()()\n0061 2680 0028 0062 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 2681 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 2681 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 2681 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 2681 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 0029 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 2681 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 2681 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 2681 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 2681 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 2681 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 0029 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 2681 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 2681 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 2681 0028 0029 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 2681 0029 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 2681 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 2681 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 0029 2681;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 2681 0029 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 2681 0029 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 2681 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 2681 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 2681 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 0029 2681;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 2681 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 2681 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 0029 2681;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0062 2681 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0062 0029 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 2681 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 2681 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 0029 2681;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0062 2681 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0062 0029 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0062 2681 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0062 0029 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 2681 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 2681 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 0029 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0028 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0062 2681 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 2680 0028 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0062 0029 2681;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0062 2681 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 0028 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0062 0029 2681;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 0029 0028 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0062 2681 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0029 0028 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0062 0029 2681;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, L, L and (()()\n0061 2680 0028 0062 0028 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0063 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0062 0028 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0062 0028 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 0029 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0062 0028 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0062 0028 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0062 0028 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 0062 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0063 0028 0029;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 0063 0029;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 0029 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 0063 0029;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 0029 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 0063 0029;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 0029 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 0063 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 2680 0062 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 0029 0063;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 2680 0028 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0062 0029 0063;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 0028 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0062 0029 0063;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0028 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0062 0029 0063;1;1;1 1 1 1 2 2 2 1 2;8 7 4 5 6 3 2 1 0\n\n# L, ON, L, R and (()()\n0061 2680 0028 0062 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 05D0 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 05D0 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 05D0 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 05D0 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0029 0028 0029 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 05D0 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 2680 0028 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 05D0 0028 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 05D0 0029 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 05D0 0028 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 05D0 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0029 0028 0029 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 05D0 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 2680 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 05D0 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 0029 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0062 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0062 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 05D0 0028 0029 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 05D0 0029 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 05D0 0028 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 05D0 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0029 0028 0029 05D0;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 05D0 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 0029 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0062 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 2680 0028 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 05D0 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 0029 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0062 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0062 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 05D0 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 05D0 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 05D0 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 0029 0028 0029 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0029 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 05D0 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 05D0 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0062 0028 0029 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 0062 0029 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 05D0 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 05D0 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0062 0028 0029 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 0062 0029 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 0062 0029 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0062 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 05D0 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 05D0 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0062 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0062 0028 0029 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 0029 0061 2680 0028 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 0062 0029 05D0;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 0062 0029 05D0;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 0029 0028 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0062 05D0 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0029 0028 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 0062 0029 05D0;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, R, ON and (()()\n0061 2680 0028 05D0 2681 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 2681 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 2681 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 2681 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 2681 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 2681 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 2681 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 2681 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, L and (()()\n0061 2680 0028 05D0 0062 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0062 0028 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0062 0028 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 05D0 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0062 0028 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 05D0 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0062 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 05D0 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0062 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 05D0 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, R and (()()\n0061 2680 0028 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 2680 0028 05D0 0028 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 2680 0028 05D0 0028 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 2680 0028 0028 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 2680 0028 0028 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 2680 05D0 0028 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 2680 05D0 0028 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 2680 0028 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 2680 0028 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 2680 0029 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 2680 0029 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0029 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0029 2680 05D0 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0029 2680 05D0 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 2680 0028 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 2680 05D0 0028 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 2680 05D0 0028 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 2680 0028 0029 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 2680 0028 0029 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0029 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 2680 0029 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 2680 0029 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0029 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0029 2680 05D0 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0029 2680 05D0 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 2680 0028 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 2680 0029 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 2680 0029 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0029 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 0029 2680 05D0 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 0029 2680 05D0 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 2680 0028 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 0061 2680 05D0 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 0061 2680 05D0 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 2680 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 2680 0028 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 2680 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 2680 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and (()()\n0061 0028 0062 2680 0028 2681 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 2681 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 2681 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 2681 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 2681 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 2681 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 0029 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 2681 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 0029 2681;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0029 2681;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 2681 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 0029 2681;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0029 2681;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 0029 2681 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 2681 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 2681 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 0029 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 2681 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 0029 2681;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 2680 0029 2681;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 2681 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 0029 2681;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 2680 0029 2681;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 2680 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 0029 0062 2680 0028 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 2681 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 2680 0028 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 0029 2681;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 2680 0029 2681;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 2680 0029 2681;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 2680 0029 2681;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n\n# L, L, ON, L and (()()\n0061 0028 0062 2680 0063 0028 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0063 0028 0029 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0028 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0063 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 2680 0028 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 2680 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0029 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 0029 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0063 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 0029 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 0029 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 0029 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 0029 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 0029 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0063 0028 0029;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 0029 0062 2680 0063 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0063 0028 0029;1;1;1 1 2 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0061 0029 0062 2680 0028 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 0063 0029;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0062 2680 0028 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 0029 0063;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 2680 0063 0029;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 2680 0029 0063;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0062 0028 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0029 2680 0063;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 2680 0063 0029;1;1;1 1 2 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 2680 0029 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 0029 2680 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 2680 0063 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 0028 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 2680 0029 0063;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0028 0029 0061 0028 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 0029 2680 0063;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n\n# L, L, ON, R and (()()\n0061 0028 0062 2680 05D0 0028 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 05D0 0028 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 05D0 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 05D0 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0029 0028 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 05D0 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 05D0 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0029 0028 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 05D0 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 2680 0028 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 2680 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0029 2680 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 05D0 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0029 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 2680 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 05D0 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 2680 0029 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0029 2680 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 05D0 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 05D0 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 2680 0028 0029 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 05D0 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 2680 0029 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0029 2680 05D0;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 0029 2680 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 05D0 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 2680 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0029 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 05D0 0028 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 05D0 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 2680 0028 0029 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 05D0 0028 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 05D0 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 2680 0028 0029 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 2680 05D0 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 2680 0029 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0029 2680 05D0;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 2680 05D0 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 0029 2680 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 0029 0062 2680 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 05D0 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 2680 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 05D0 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 2680 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 2680 0028 0029 05D0;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 2680 05D0 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 2680 0029 05D0;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0029 2680 05D0;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 2680 05D0 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 2680 0029 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 0029 2680 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 2680 05D0 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 2680 0029 05D0;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 0029 0061 0028 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 0029 2680 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n\n# L, L, L, ON and (()()\n0061 0028 0062 0028 0063 2680 0029 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 2680 0029 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 2680 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 2680 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0063 0029 0028 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 2680 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0063 0029 0028 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 0029 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 2680 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 2680 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 0028 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 2680 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 0028 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0029 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 2680 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 2680 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063 0028 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 2680 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063 0028 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0029 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 2680 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 2680 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0028 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 2680 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0028 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 0029 2680;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0063 2680 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0063 0029 2680;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0063 2680 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0063 0029 2680;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 0029 0062 0028 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0063 2680 0029;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0061 0029 0062 0028 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0063 0029 2680;1;1;1 1 2 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# L, L, L, L and (()()\n0061 0028 0062 0028 0063 0029 0064 0028 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0064 0028 0029;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 0029 0028 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 0064 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0063 0028 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 0029 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0063 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0063 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 0029 0062 0028 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0063 0029 0064;1;1;1 1 2 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n\n# L, L, L, R and (()()\n0061 0028 0062 0028 0063 05D0 0029 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 05D0 0029 0028 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 0029 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0063 0029 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0063 0029 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 0029 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0063 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0063 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0062 0028 0029 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 05D0 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 0029 0063 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 05D0 0028 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 05D0 0029;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0063 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0063 0028 0029 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 0029 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 05D0 0029;1;1;2 2 2 2 2 1 2 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 05D0 0029;1;1;2 2 2 2 2 1 2 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 0029 0063 05D0 0028 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 05D0 0028 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0028 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 05D0 0029;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0063 0028 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0063 0028 0029 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 0029 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0063 05D0 0029;1;1;1 2 2 2 2 1 2 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 0063 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0063 05D0 0029;1;1;1 2 2 2 2 1 2 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 0063 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 0029 0062 0028 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0063 05D0 0029;1;1;1 1 2 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 0063 0029 05D0;1;1;1 1 2 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# L, L, R, ON and (()()\n0061 0028 0062 05D0 2680 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 2680 0028 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 2680 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 2680 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 0028 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 0028 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 2680 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 2680 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 2680 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 2680 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 0028 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 0028 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 05D0 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 05D0 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 2680 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 2680 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 2680 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 2680 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 0028 2680 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 0028 0029 2680;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 05D0 2680 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 05D0 0029 2680;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 2680 0028 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 0028 2680 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 0028 0029 2680;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 05D0 2680 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 05D0 0029 2680;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 05D0 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 05D0 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 2680 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 2680 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 2680 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 2680 0028 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 0028 2680 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 0028 0029 2680;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 2680 0028 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 0028 2680 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 0028 0029 2680;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 05D0 2680 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 05D0 0029 2680;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 05D0 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 05D0 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 2680 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 2680 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 0028 2680 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 0028 0029 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 05D0 2680 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 05D0 0029 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 05D0 2680 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 05D0 0029 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 05D0 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 05D0 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, R, L and (()()\n0061 0028 0062 05D0 0063 0028 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0063 0028 0029 0028 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0063 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0063 0029 0028 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0063 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 0063 0028 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 0028 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0029 0028 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0063 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0063 0029 0028 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0063 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0063 0028 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 0063 0028 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 0028 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 05D0 0028 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 05D0 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 05D0 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0063 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0063 0029 0028 0029;1;1;2 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0063 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0063 0028 0029;1;1;2 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 0063 0029;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 0029 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 0063 0028 0029;1;1;2 2 2 2 2 1 2 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 0028 0063 0029;1;1;2 2 2 2 2 1 1 2 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 05D0 0028 0029 0063;1;1;2 2 2 2 2 1 1 1 2;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 05D0 0063 0029;1;1;2 2 2 2 2 1 1 2 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 05D0 0029 0063;1;1;2 2 2 2 2 1 1 1 2;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 0063 0028 0029;1;1;2 2 2 2 2 1 2 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 0028 0063 0029;1;1;2 2 2 2 2 1 1 2 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 05D0 0028 0029 0063;1;1;2 2 2 2 2 1 1 1 2;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 05D0 0063 0029;1;1;2 2 2 2 2 1 1 2 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 05D0 0029 0063;1;1;2 2 2 2 2 1 1 1 2;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 05D0 0063 0029;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 05D0 0029 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0063 0029 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0063 0029 0028 0029;1;1;1 2 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0063 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0063 0028 0029;1;1;1 2 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 0063 0029;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 0029 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 0063 0028 0029;1;1;1 2 2 2 2 1 2 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 0028 0063 0029;1;1;1 2 2 2 2 1 1 2 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 05D0 0028 0029 0063;1;1;1 2 2 2 2 1 1 1 2;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 05D0 0063 0029;1;1;1 2 2 2 2 1 1 2 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 05D0 0029 0063;1;1;1 2 2 2 2 1 1 1 2;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 0063 0028 0029;1;1;1 2 2 2 2 1 2 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 0028 0063 0029;1;1;1 2 2 2 2 1 1 2 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 05D0 0028 0029 0063;1;1;1 2 2 2 2 1 1 1 2;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 05D0 0063 0029;1;1;1 2 2 2 2 1 1 2 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 05D0 0029 0063;1;1;1 2 2 2 2 1 1 1 2;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 05D0 0063 0029;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 05D0 0029 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0063 0028 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 0063 0028 0029;1;1;1 1 2 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 0028 0063 0029;1;1;1 1 2 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 05D0 0028 0029 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 05D0 0063 0029;1;1;1 1 2 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 05D0 0029 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 05D0 0063 0029;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 05D0 0029 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 05D0 0063 0029;1;1;1 1 1 2 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 05D0 0029 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, L, R, R and (()()\n0061 0028 0062 05D0 0028 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0062 05D0 0028 05D1 0029 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 05D1 0028 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0062 05D0 0028 0029 05D1 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 0029 0028 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0029 0028 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 0029 0028 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 05D1 0028 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0029 0028 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0062 0028 0029 05D0 0028 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0062 0028 0029 05D0 0028 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0029 0028 05D0 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 05D1 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 05D1 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0029 0028 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0062 0029 05D0 0028 05D1 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0062 0029 05D0 0028 0029 05D1;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0062 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 0029 0028 05D0 0029 05D1;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0029 0062 05D0 0028 05D1 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 0029 0062 05D0 0028 0029 05D1;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0062 0028 05D0 0029 05D1;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0028 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 0062 05D0 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 05D1 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 05D1 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0029 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0029 0028 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 0029 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0062 0029 05D0 0028 05D1 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0062 0029 05D0 0028 0029 05D1;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0062 0029 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 0029 0028 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0029 0062 05D0 0028 05D1 0029;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 0029 0062 05D0 0028 0029 05D1;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0062 0028 05D0 0029 05D1;1;1;1 2 2 2 2 1 1 1 1;8 7 6 5 1 2 3 4 0\n0028 0061 0028 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 0062 05D0 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 05D1 0029;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 0029 0062 05D0 0028 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 05D0 0028 0029 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 0029 0062 05D0 0028 0029 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0062 0028 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0062 0028 05D0 0029 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 0062 05D0 0029 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 0062 05D0 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and (()()\n0061 0028 05D0 2680 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 2681 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 2681 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 2680 0028 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 2680 0028 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 2681 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 2681 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 2680 0028 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 2680 0028 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, L and (()()\n0061 0028 05D0 2680 0062 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0062 0028 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 2680 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 2680 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 2680 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 2680 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 2680 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 2680 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0062 0028 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 2680 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 2680 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 2680 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 2680 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 2680 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 2680 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0062 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 2680 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 2680 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 2680 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0062 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 2680 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 2680 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 2680 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, R and (()()\n0061 0028 05D0 2680 05D1 0028 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0061 0028 05D0 2680 05D1 0028 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 2680 0028 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 2680 0028 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 2680 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 2680 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 0029 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 2680 05D1 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0029 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 2680 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0028 0029 05D0 2680 05D1 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 2680 0028 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 2680 0028 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 0028 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 0028 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 0028 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0061 0028 0028 0029 0028 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0028 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0061 05D0 2680 05D1 0028 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 2680 0028 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 2680 0028 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 05D1 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 2680 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 2680 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0029 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 05D1 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 0029 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 2680 0028 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 2680 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0029 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 2680 05D1 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0029 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 2680 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 0028 0029 05D0 2680 05D1 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 2680 0028 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 2680 0028 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 0028 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 0028 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 0028 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0061 0028 0029 0028 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 05D1 0029 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 2680 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 2680 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0061 0029 05D0 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 2680 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 2680 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0029 2680 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0061 0029 0028 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 05D1 0028 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0061 05D0 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 2680 0028 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 05D1 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 2680 0029 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0029 2680 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0029 0061 0028 05D0 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0029 0028 0061 05D0 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, ON and (()()\n0061 0028 05D0 0062 2680 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 2680 0028 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 2680 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 2680 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 2680 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 2680 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 2680 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 2680 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 2680 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 2680 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 2680 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0028 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 2680 0028 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 2680 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 2680 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 2680 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 2680 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 2680 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 2680 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 2680 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 2680 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 2680 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 2680 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 2680 0029 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 2680 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 2680 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 2680 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 0029 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 2680 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 2680 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 2680 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 0029 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 2680 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 2680 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 0029 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 2680 0028 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 2680 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, L and (()()\n0061 0028 05D0 0062 0028 0063 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0063 0029 0028 0029;1;1;2 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 0028 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0063 0028 0029;1;1;2 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 0063 0029;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 0029 0063;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0028 0062 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0063 0028 0029;1;1;2 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 0063 0029;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 0063 0029;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 0029 0063;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0063 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0063 0028 0029;1;1;2 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 0063 0029;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 0063 0029;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 0029 0063;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 0063 0029;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 0029 0063;1;1;2 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0063 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0063 0029 0028 0029;1;1;1 2 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 0028 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0063 0028 0029;1;1;1 2 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 0063 0029;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 0029 0063;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0028 0062 0029 0063 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0063 0028 0029;1;1;1 2 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 0063 0029;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 0063 0029;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 0029 0063;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0063 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0063 0028 0029;1;1;1 2 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 0063 0029;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 0063 0029;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 0029 0063;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 0063 0029;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 0029 0063;1;1;1 2 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0063 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0063 0028 0029;1;1;1 1 2 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 0063 0029;1;1;1 1 2 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 0029 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 0063 0029;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 0029 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 0063 0029;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 0029 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, L, R and (()()\n0061 0028 05D0 0062 05D1 0028 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 05D1 0028 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 05D1 0029 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 05D1 0028 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 05D1 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0029 0028 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 05D1 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 05D1 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 05D1 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 0029 0028 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 05D1 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0062 0028 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 05D1 0029 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 05D1 0028 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 05D1 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 0029 0028 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 05D1 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0062 0028 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 05D1 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0062 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0062 0028 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 0028 05D0 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0028 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 05D1 0028 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 05D1 0029 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 05D1 0028 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 05D1 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0029 0028 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 05D1 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 05D1 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 05D1 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 0029 0028 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 05D1 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0062 0028 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 05D1 0029 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 05D1 0028 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 05D1 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 0029 0028 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 05D1 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0062 0028 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 05D1 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0062 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0062 0028 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 0028 05D0 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 05D1 0029 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 05D1 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 05D1 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 0029 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 0029 0028 0029 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 05D1 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0062 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0062 0028 0029 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 05D1 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0062 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0062 0028 0029 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 0028 05D0 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 05D1 0028 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 05D1 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 05D1 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0062 0028 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0062 0028 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 0028 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 0028 05D0 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 0061 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 0061 05D0 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, ON and (()()\n0061 0028 05D0 0028 05D1 2680 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 2680 0029 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 2680 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 2680 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 0028 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 0028 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 2680 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 2680 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 0028 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 0028 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 0029 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 2680 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 2680 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 0028 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 0028 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 0028 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 0029 05D0 0028 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 2680 0029 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 2680 0029 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 2680 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 2680 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 0028 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 0028 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 2680 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 2680 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 0028 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 0028 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 0029 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 2680 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 2680 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 0028 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 0028 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 0028 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 0029 05D0 0028 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 2680 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 2680 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 0029 2680;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0061 0029 05D0 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 2680 0029;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 0029 2680;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0029 0061 05D0 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, L and (()()\n0061 0028 05D0 0028 05D1 0062 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 0062 0029 0028 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0062 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 0062 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 05D1 0029 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0062 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 0062 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0061 0028 05D0 0028 0029 05D1 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0029 0028 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 0029 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0062 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 0062 0028 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 0062 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 0028 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 05D1 0028 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0029 05D0 0028 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 0029 0062;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 0029 05D0 0028 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0062 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 0062 0029 0028 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0062 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 0062 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 05D1 0029 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0062 0028 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 0062 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0061 05D0 0028 0029 05D1 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0029 0028 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 0029 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0062 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 0062 0028 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 0062 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 0028 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 05D1 0028 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0029 05D0 0028 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 0029 0062;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 0029 05D0 0028 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0062 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 0062 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 0029 05D0 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 0029 0062;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0061 0029 05D0 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0061 05D0 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 0029 0062;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0029 0061 05D0 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, R, R and (()()\n0061 0028 05D0 0028 05D1 0029 05D2 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 0029 05D2 0028 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 0029 0028 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 0029 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 0029 0028 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 05D1 0028 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 05D1 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 05D1 0028 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0029 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 0029 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 05D0 0029 05D1 0028 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 05D0 0029 05D1 0028 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0029 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0061 0028 0028 0029 05D0 0028 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 05D2 0028 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 0029 05D2 0028 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 0029 0028 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0029 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 0029 0028 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 05D1 0028 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 05D1 0028 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 05D1 0028 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0029 0028 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 0029 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 05D0 0029 05D1 0028 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 05D0 0029 05D1 0028 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0029 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0061 0028 0029 05D0 0028 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 05D0 0029 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 05D0 0029 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0029 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0029 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 0029 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0061 0029 05D0 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0061 05D0 0028 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 0029 0061 05D0 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (()()\n05D0 2680 0028 2681 0028 2682 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 2682 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 2682 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 2682 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 2682 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 2682 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 2682 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and (()()\n05D0 2680 0028 2681 0061 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0061 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0061 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0061 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0061 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0061 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0061 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0061 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and (()()\n05D0 2680 0028 2681 05D1 0028 0029 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 2680 0028 2681 05D1 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 2681 0028 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 2681 0028 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 05D1 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 05D1 0029 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 2681 05D1 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 05D1 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 2681 0029 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 0029 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0029 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 0029 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 05D1 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 2681 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 05D1 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 2681 0028 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 05D1 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 2681 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 2681 0028 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 2681 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 2681 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 2681 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0029 2681 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0029 2681 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and (()()\n05D0 2680 0028 0061 2681 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 2681 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 2681 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 2681 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 2681 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 2681 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 2681 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 2681 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 2681 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 2681 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, L and (()()\n05D0 2680 0028 0061 0028 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 0028 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0028 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 0028 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0028 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 0028 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0028 0061 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, R and (()()\n05D0 2680 0028 0061 05D1 0028 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 05D1 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0028 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 05D1 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0061 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0028 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 05D1 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0061 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 05D1 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 0029 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0061 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 05D1 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0061 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0061 0028 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and (()()\n05D0 2680 0028 05D1 2681 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 2681 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 2681 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 0029 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 2681 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 2681 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0029 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0028 0029 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 2681 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 2681 0029 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 2681 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 2681 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 0029 2681;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 2681 0029 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 2681 0029 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 2681 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 2681 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 2681 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 0029 2681;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 2681 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 2681 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 0029 2681;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 2681 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 0029 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 2681 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 2681 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 0029 2681;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 2681 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 0029 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 2681 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 0029 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 2681 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 2681 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 0029 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 2681 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 0029 2681;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 2680 0028 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 2681 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 0029 2681;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 0028 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 2681 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0028 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 0029 2681;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0028 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, L and (()()\n05D0 2680 0028 05D1 0061 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0061 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0061 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 0061 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 0029 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0061 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 2680 0028 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0028 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0061 0029 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0061 0028 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0061 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0029 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0061 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 2680 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0061 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0028 0029 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0061 0029 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0061 0028 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 0061 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 0029 0061;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0061 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 2680 0028 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0061 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0061 0029 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0061 0028 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 0061 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 0029 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0061 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 0061 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 0029 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 0029 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0061 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 0061 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 0029 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 0029 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 0029 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0061 0028 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 0061 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 0029 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0029 05D0 2680 05D1 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 2680 0028 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 0029 0061;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 2680 0028 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 0029 0061;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 0028 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 0061 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0028 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 0029 0061;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0028 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, R and (()()\n05D0 2680 0028 05D1 0028 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 05D1 0028 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 05D1 0028 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 05D1 0028 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 05D1 0028 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 05D2 0029 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 05D1 0028 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 05D1 0028 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0029 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0029 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0029 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0029 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0029 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 05D1 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 2680 0028 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 05D2 0028 0029;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 05D2 0029;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0029 0028 0029 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 2680 0029 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 2680 0029 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0029 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 05D2 0029;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0029 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 05D1 0028 0029 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0029 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 2680 0028 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 2680 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 05D2 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 05D1 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 05D1 0028 0029 05D2;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 05D1 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 2680 0028 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 2680 0028 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 2680 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 2680 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 0 1;0 1 2 3 6 5 4 7 8\n0028 0028 0029 0028 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and (()()\n05D0 0028 0061 2680 0028 2681 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 2681 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 2681 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 2681 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 2681 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 2681 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 2681 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 2681 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, L and (()()\n05D0 0028 0061 2680 0062 0028 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0062 0028 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0028 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 0028 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 2680 0028 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 2680 0028 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 2680 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0029 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 2680 0062 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 2680 0029 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0062 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 2680 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 2680 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0029 2680 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0028 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0062 0028 0029 0028 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0028 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 0028 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 2680 0028 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 2680 0028 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0062 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 2680 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0062 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0029 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 2680 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 2680 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0029 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 2680 0062 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 2680 0029 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0062 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 2680 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 2680 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0029 2680 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0062 0029 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0062 0029 0028 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 2680 0029 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0062 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 2680 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 2680 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0029 2680 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0062 0028 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0062 0028 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 2680 0062 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 2680 0029 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0029 2680 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, R and (()()\n05D0 0028 0061 2680 05D1 0028 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 05D1 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 2680 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 2680 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0028 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 05D1 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 05D1 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0029 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 05D1 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 2680 0028 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 2680 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 2680 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 05D1 0029 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 05D1 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0029 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0029 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 05D1 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 2680 0028 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 2680 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 2680 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 05D1 0028 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 05D1 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 2680 0028 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 2680 0028 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, L, ON and (()()\n05D0 0028 0061 0028 0062 2680 0029 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 2680 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 0029 2680 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 2680 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0028 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0028 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 2680 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 2680 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0028 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0028 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0062 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 0029 0062 2680 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 2680 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0028 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0028 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0062 2680 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0062 0029 2680;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0061 0028 0062 2680 0029 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 2680 0029 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 2680 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 2680 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0028 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0028 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 2680 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 2680 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0028 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0028 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0062 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0062 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 0029 0062 2680 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 2680 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0028 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0028 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0062 2680 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0062 0029 2680;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 05D0 0061 0029 0062 2680 0028 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 2680 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0062 2680 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0062 0029 2680;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0062 2680 0029;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0062 0029 2680;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# R, L, L, L and (()()\n05D0 0028 0061 0028 0062 0029 0063 0028 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0063 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 0029 0028 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 0029 0028 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0062 0028 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0062 0028 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0029 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 0029 0062 0028 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0028 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 05D0 0061 0028 0062 0029 0063 0028 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0063 0028 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 0029 0028 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 0029 0028 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0062 0028 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0062 0028 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0029 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 0029 0062 0028 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0028 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 0063 0029;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 0029 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0062 0029 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n\n# R, L, L, R and (()()\n05D0 0028 0061 0028 0062 05D1 0029 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 05D1 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 0029 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 05D1 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 05D1 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0062 0029 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 0029 0028 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 05D1 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 05D1 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0062 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0062 0028 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n05D0 0028 0061 0028 0029 0028 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 0029 0062 05D1 0028 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 05D1 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0028 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 05D1 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0062 0028 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0062 0028 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 0062 0029 05D1;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0061 0028 0062 05D1 0029 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 05D1 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 0029 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 05D1 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 05D1 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0062 0029 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 0029 0028 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 05D1 0028 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 05D1 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0062 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0062 0028 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 05D0 0061 0028 0029 0028 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 0062 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 0029 0062 05D1 0028 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 05D1 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0028 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 05D1 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0062 0028 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0062 0028 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 0062 0029 05D1;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 05D0 0061 0029 0062 05D1 0028 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 05D1 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 05D1 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0062 0028 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0062 0028 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 0062 0029 05D1;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 0062 0029 05D1;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n\n# R, L, R, ON and (()()\n05D0 0028 0061 05D1 2680 0028 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 2680 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 2680 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 2680 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 2680 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 2680 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 2680 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 2680 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 2680 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 2680 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 2680 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0028 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 2680 0028 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 2680 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 2680 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 2680 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 2680 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 2680 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 2680 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 2680 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 0028 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 0028 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 2680 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 2680 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 2680 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 2680 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 2680 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 2680 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 2680 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 0029 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 2680 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 2680 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 0029 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 2680 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 2680 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 0029 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 2680 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, R, L and (()()\n05D0 0028 0061 05D1 0062 0028 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0062 0028 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0062 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0062 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 0062 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0062 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0062 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 0062 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0062 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0062 0029 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0062 0028 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 0062 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0062 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0062 0028 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 05D1 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0028 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0062 0028 0029 0028 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0062 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0062 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 0062 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0062 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0062 0029 0028 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0062 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 0062 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0062 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 0062 0028 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 0028 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 05D1 0028 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0062 0029 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0062 0028 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 0062 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0062 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0062 0028 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 05D1 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0062 0029 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0062 0029 0028 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0062 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 0029 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0062 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 0062 0028 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 0028 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 0029 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 05D1 0028 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0062 0028 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 0029 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 05D1 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0062 0028 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 0062 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 05D1 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, R, R and (()()\n05D0 0028 0061 05D1 0028 05D2 0029 0028 0029;0;0;1 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n05D0 0028 0061 05D1 0028 05D2 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 05D2 0028 0029;0;0;1 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n05D0 0028 0061 05D1 0028 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 05D2 0029;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0029 0028 0029 05D2;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 05D2 0028 0029;0;0;1 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 05D2 0029;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0029 0028 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 05D2 0029;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0061 0028 0029 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 05D1 0028 0029 05D2;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0061 0028 0029 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0029 0028 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0029 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 05D2 0028 0029;0;0;1 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 05D2 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 05D2 0029;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0029 0028 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0029 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 05D2 0029;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0028 0061 0029 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 05D1 0028 0029 05D2;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0028 0061 0029 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 0029 0028 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 0029 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 05D2 0029;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0028 0029 0061 05D1 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 05D1 0028 0029 05D2;0;0;1 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n05D0 0028 0028 0029 0061 05D1 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0061 0028 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0061 0028 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 0061 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 05D2 0029 0028 0029;0;0;0 1 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 05D0 0061 05D1 0028 05D2 0029 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 05D2 0028 0029;0;0;0 1 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 05D0 0061 05D1 0028 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 05D2 0029;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0029 0028 0029 05D2;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 05D2 0028 0029;0;0;0 1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 05D2 0028 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 05D2 0029;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0029 0028 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0029 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 05D2 0029;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0061 0028 0029 05D1 0028 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 05D1 0028 0029 05D2;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0061 0028 0029 05D1 0028 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0029 0028 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0029 0028 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 05D2 0028 0029;0;0;0 1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 05D2 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 05D2 0029;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0029 0028 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0029 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 05D2 0029;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0028 0061 0029 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 05D1 0028 0029 05D2;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0028 0061 0029 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 0029 0028 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 0029 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 05D2 0029;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0028 0029 0061 05D1 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 05D1 0028 0029 05D2;0;0;0 1 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 05D0 0028 0029 0061 05D1 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0061 0028 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0061 0028 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 0061 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 05D2 0028 0029;0;0;0 0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 05D2 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 05D2 0029;0;0;0 0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0029 0028 0029 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0029 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 05D2 0029;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0061 0029 05D1 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 05D1 0028 0029 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0061 0029 05D1 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 0029 0028 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 0029 0028 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 05D2 0029;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0029 0061 05D1 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 05D1 0028 0029 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 0029 0061 05D1 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0061 0028 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0061 0028 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 0061 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 05D2 0029;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 05D0 0061 05D1 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 05D1 0028 0029 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0029 05D0 0061 05D1 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0061 0028 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0061 0028 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 0061 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 0028 05D0 0061 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 0028 05D0 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and (()()\n05D0 0028 05D1 2680 0028 2681 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 2681 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 2681 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 2681 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 2681 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 2681 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0029 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 2681 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0029 2681;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0029 2681;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 2681 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0029 2681;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0029 2681;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 2681 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 2681 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 2681 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 0029 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 2681 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 0029 2681;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 0029 2681;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 2681 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 0029 2681;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 0029 2681;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 2681 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 2680 0028 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 0029 2681;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 2680 0028 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 0029 2681;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 0029 2681;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 0029 2681;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 0028 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, L and (()()\n05D0 0028 05D1 2680 0061 0028 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0061 0028 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0061 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0061 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0061 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0061 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0061 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 2680 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0061 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0061 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0061 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0029 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0061 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0029 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 2680 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0061 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0061 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0029 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0061 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0029 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 2680 0061;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 2680 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0061 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 2680 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0061 0028 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 0061 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 0029 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 0061 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 0029 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029 2680 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0061 0028 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 0061 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 0029 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 0061 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 0029 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029 2680 0061;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 0061 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029 2680 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0061 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 2680 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 0061 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 2680 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 0029 0061;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 2680 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 0061 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 0029 0061;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029 2680 0061;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 0061 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 0029 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029 2680 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 0061 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 0029 0061;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0029 05D0 0028 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029 2680 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0029 05D0 0028 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, R and (()()\n05D0 0028 05D1 2680 05D2 0028 0029 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 05D1 2680 05D2 0028 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 2680 0028 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 2680 0028 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 2680 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 2680 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 0029 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 0029 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 05D2 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 05D2 0029 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 05D2 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 0029 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 0029 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0029 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 0029 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 0029 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 2680 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 05D2 0028 0029;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 2680 0028 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 05D2 0028 0029;0;0;0 0 1 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 05D0 0029 05D1 2680 05D2 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 05D2 0029;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 2680 0028 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 2680 0028 0029 05D2;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 2680 0028 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 05D2 0029;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 2680 0029 05D2;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0029 2680 05D2;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 05D2 0029;0;0;0 0 1 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 05D0 0029 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 2680 0029 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0029 2680 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 05D2 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 2680 0029 05D2;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0029 2680 05D2;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0028 0029 05D0 0028 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, ON and (()()\n05D0 0028 05D1 0061 2680 0028 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 2680 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 2680 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 2680 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 2680 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 2680 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 2680 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 2680 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 2680 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 2680 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 2680 0029 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 2680 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 2680 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 2680 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 2680 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 0029 2680;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 2680 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 0029 2680;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 2680 0028 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 2680 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 0029 2680;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 2680 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 0029 2680;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 2680 0029 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 2680 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 2680 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 2680 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 2680 0028 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 2680 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 0029 2680;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 2680 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 0029 2680;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 2680 0028 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 2680 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 0029 2680;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 2680 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 0029 2680;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 2680 0028 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 2680 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 2680 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 0029 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 2680 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 0029 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 2680 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 0029 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, L and (()()\n05D0 0028 05D1 0061 0028 0062 0029 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0062 0029 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 0028 0029 0062 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0062 0028 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0028 0061 0029 0062 0028 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0062 0028 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 0062 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 0062 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 0029 0062;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 0029 0062;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 0062 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 0029 0062;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 0029 0062;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0062 0028 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0062 0028 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 0062 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 0062 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 0029 0062;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 0029 0062;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 0062 0029;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 0029 0062;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 0029 0062;0;0;0 1 1 1 1 0 0 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 0062 0029;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 0029 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 0029 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 0029 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 0029 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, L, R and (()()\n05D0 0028 05D1 0061 05D2 0028 0029 0028 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 05D2 0028 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 05D2 0029 0028 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 05D2 0029 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 05D2 0028 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 05D2 0028 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 0029 0028 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0029 0028 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 05D2 0029 0028 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 05D2 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 05D2 0028 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 0029 0028 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 0029 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 05D2 0028 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0061 0028 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 0061 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 05D2 0029 0028 0029;0;0;1 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 05D2 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 05D2 0028 0029;0;0;1 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 05D2 0029;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 0029 0028 0029 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 0029 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 05D2 0028 0029;0;0;1 1 1 1 1 0 1 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 05D2 0029;0;0;1 1 1 1 1 0 0 1 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0061 0028 0029 05D2;0;0;1 1 1 1 1 0 0 0 1;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 05D2 0029;0;0;1 1 1 1 1 0 0 1 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 0061 0029 05D2;0;0;1 1 1 1 1 0 0 0 1;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 05D2 0028 0029;0;0;1 1 1 1 1 0 1 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 05D2 0029;0;0;1 1 1 1 1 0 0 1 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0061 0028 0029 05D2;0;0;1 1 1 1 1 0 0 0 1;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 05D2 0029;0;0;1 1 1 1 1 0 0 1 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 0061 0029 05D2;0;0;1 1 1 1 1 0 0 0 1;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 05D2 0029;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 0028 05D1 0061 0029 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 05D2 0029 0028 0029;0;0;0 1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 05D2 0029 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 05D2 0028 0029;0;0;0 1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 05D2 0028 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 05D2 0029;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 0029 0028 0029 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 0029 0028 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 05D2 0028 0029;0;0;0 1 1 1 1 0 1 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 05D2 0029;0;0;0 1 1 1 1 0 0 1 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0061 0028 0029 05D2;0;0;0 1 1 1 1 0 0 0 1;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 05D2 0029;0;0;0 1 1 1 1 0 0 1 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 0061 0029 05D2;0;0;0 1 1 1 1 0 0 0 1;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 05D2 0028 0029;0;0;0 1 1 1 1 0 1 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 05D2 0029;0;0;0 1 1 1 1 0 0 1 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0061 0028 0029 05D2;0;0;0 1 1 1 1 0 0 0 1;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 05D2 0029;0;0;0 1 1 1 1 0 0 1 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 0061 0029 05D2;0;0;0 1 1 1 1 0 0 0 1;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 05D2 0029;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 0028 05D1 0061 0029 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 05D2 0028 0029;0;0;0 0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 05D2 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 05D2 0029;0;0;0 0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0061 0028 0029 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0061 0028 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 05D2 0029;0;0;0 0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 0061 0029 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 05D2 0029;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 0028 05D1 0061 0029 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 05D2 0029;0;0;0 0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0029 05D0 0028 05D1 0061 0029 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0029 05D0 0028 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, ON and (()()\n05D0 0028 05D1 0028 05D2 2680 0029 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 2680 0029 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 2680 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 2680 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 2680 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 0028 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 0029 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 0028 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 2680 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 2680 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 2680 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 0028 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0029 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 0028 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 0029 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 2680 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 2680 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 2680 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 0028 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0029 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 0028 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 0029 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 2680 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 2680 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 2680 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 0028 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 0029 2680;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 0028 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 2680 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 0029 2680;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 0029 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 2680 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 0029 2680;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 2680 0029;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 0029 2680;0;0;0 0 1 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 05D0 0029 05D1 0028 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, L and (()()\n05D0 0028 05D1 0028 05D2 0061 0029 0028 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 0061 0029 0028 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 05D2 0029 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 05D1 0028 0029 05D2 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0061 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0029 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 0029 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0061 0028 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0061 0029;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0029 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 0029 05D2 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0061 0029;0;0;1 1 1 1 1 0 1 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 05D1 0029 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 0029 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0061 0029;0;0;1 1 1 1 1 0 1 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 0028 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0061 0028 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 0061 0028 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 0061 0029;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 0028 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 0029 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 0029 05D2 0028 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 0061 0029;0;0;0 1 1 1 1 0 1 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 05D1 0029 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 0029 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 0061 0029;0;0;0 1 1 1 1 0 1 0 0;0 4 3 2 1 5 6 7 8\n0028 05D0 0028 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 0061 0029;0;0;0 0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0029 05D1 0028 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 0029 0061;0;0;0 0 1 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 05D0 0029 05D1 0028 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, R, R and (()()\n05D0 0028 05D1 0028 05D2 0029 05D3 0028 0029;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 0029 05D3 0028 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 0029 0028 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 05D2 0028 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0029 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 05D2 0028 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0029 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 05D3 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 05D2 0028 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 05D2 0028 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 05D2 0028 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0029 0028 05D2 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 0029 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0029 05D1 0028 05D2 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0029 05D1 0028 05D2 0029 05D3;0;0;0 0 1 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 05D0 0029 05D1 0028 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# (([])\n0028 0028 005B 005D 0029;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 005B 005D 0029;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON and (([])\n2680 0028 0028 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 2680 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 005D 2680 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 005D 0029 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 005D 0029 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L and (([])\n0061 0028 0028 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 005B 005D 0029;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 005B 005D 0029;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 005B 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 005B 005D 0029;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0061 005D 0029;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 005D 0061 0029;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 005B 005D 0029 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R and (([])\n05D0 0028 0028 005B 005D 0029;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 005B 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 005B 05D0 005D 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 005B 005D 05D0 0029;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 005B 005D 0029 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON and (([])\n2680 0028 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L and (([])\n2680 0028 0061 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 005D 0029 2680 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R and (([])\n2680 0028 05D0 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 05D0 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 2680 005D 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 2680 05D0 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 005D 2680 0029 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 005D 0029 2680 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON and (([])\n0061 2680 0028 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 2680 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0029 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 2680 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 2680 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 0029 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 2680 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 2680 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 0029 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 0061 2680 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 0061 0029 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L and (([])\n0061 0028 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 005D 0029;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 005D 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0062 005D 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 0062 0029;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0061 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 0029 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0062 005D 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 0062 0029;1;1;1 1 2 2 2 2 1;6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 0029 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 0062 0029;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 0029 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 2 1 2;6 5 4 3 2 1 0\n\n# L, R and (([])\n0061 0028 05D0 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 005B 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 05D0 005D 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 05D0 0029;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 005B 005D 0029 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 05D0 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 05D0 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 0061 005D 0029 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 0061 05D0 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 005D 0061 0029 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON and (([])\n05D0 2680 0028 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 2680 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 05D0 2680 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 05D0 0029 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L and (([])\n05D0 0028 0061 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 005B 005D 0029;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0061 005D 0029;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R and (([])\n05D0 0028 05D1 0028 005B 005D 0029;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 0;0 1 5 4 3 2 6\n0028 0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 1 0 1;0 1 2 3 4 5 6\n0028 0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON and (([])\n2680 0028 2681 0028 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L and (([])\n2680 0028 2681 0061 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R and (([])\n2680 0028 2681 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 2681 05D0 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 2681 0029 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0029 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON and (([])\n2680 0028 0061 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L and (([])\n2680 0028 0061 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# ON, L, R and (([])\n2680 0028 0061 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0061 05D0 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 0061 0029 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON and (([])\n2680 0028 05D0 2681 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 05D0 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 05D0 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L and (([])\n2680 0028 05D0 0061 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 05D0 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 05D0 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R and (([])\n2680 0028 05D0 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n2680 0028 0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 2680 0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 2680 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 2680 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 2680 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON and (([])\n0061 2680 0028 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L and (([])\n0061 2680 0028 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0062 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0029 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0029 2680 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 005B 005D 0029;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 005B 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0062 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 005B 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0062 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0062 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 2680 0062 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 2680 0029 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0029 2680 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 005B 005D 0029;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0062 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 2680 0062 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0062 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0062 005D 0029;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 005D 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 2680 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, ON, R and (([])\n0061 2680 0028 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 05D0 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0029 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0029 2680 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 2680 05D0 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 2680 0029 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0029 2680 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 2680 05D0 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 2680 0029 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0029 2680 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 2680 05D0 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 2680 0029 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0029 2680 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 2680 05D0 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 2680 0029 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 0029 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 0029 2680 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON and (([])\n0061 0028 0062 2680 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 005B 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 005B 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 2680 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 2680 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0029 2680;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 2680 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 2680 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 2680;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 005B 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 2680 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 2680 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 0029 2680;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 2680 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 2680 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 0029 2680;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0062 2680 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0062 0029 2680;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 2680 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 2680 005D 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0062 2680 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0062 0029 2680;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 2680 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0062 2680 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 0029 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0062 0029 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, L, L and (([])\n0061 0028 0062 0028 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0062 0029 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 1 2;7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 2 1 2 1 2;7 6 5 4 3 2 1 0\n\n# L, L, R and (([])\n0061 0028 0062 05D0 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 005B 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 005B 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 05D0 005D 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 05D0 0029;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0029 05D0;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0028 0061 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 005B 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 05D0 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 05D0 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 005D 0029 05D0;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 05D0 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0062 05D0 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0062 05D0 0029;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON and (([])\n0061 0028 05D0 2680 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 2680 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 005D 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 005D 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 2680 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 005D 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 005D 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 2680 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 05D0 2680 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 05D0 0029 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 2680 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 005D 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 005D 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 2680 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 005D 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 005D 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 2680 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 05D0 2680 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 05D0 0029 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 05D0 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 05D0 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 05D0 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 05D0 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 05D0 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 05D0 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L and (([])\n0061 0028 05D0 0062 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 005B 005D 0029;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 005B 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 005B 005D 0029;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 005B 005D 0029;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 005B 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 005B 005D 0029;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0062 005D 0029;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 005B 005D 0029;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R and (([])\n0061 0028 05D0 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0028 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0061 0028 0028 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0028 05D0 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0061 0028 05D0 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 0061 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 0;0 1 2 6 5 4 3 7\n0028 0028 0061 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON and (([])\n05D0 2680 0028 2681 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 2680 0029 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L and (([])\n05D0 2680 0028 0061 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 2680 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029 2680 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029 2680 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029 2680 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 2680 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 2680 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029 2680 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0029 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R and (([])\n05D0 2680 0028 05D1 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 2680 0028 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 2680 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 2680 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 0029;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0029 2680 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 0029;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 2680 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 2680 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 005B 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 005B 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 005B 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 005B 05D0 2680 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 005B 005D 05D0 2680 05D1 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 2680 0029 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0029 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON and (([])\n05D0 0028 0061 2680 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 2680 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 2680 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 0029 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 0029;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0061 2680 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0061 0029 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L and (([])\n05D0 0028 0061 0028 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 1;7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 2 1 2;7 6 5 4 3 2 1 0\n\n# R, L, R and (([])\n05D0 0028 0061 05D1 0028 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON and (([])\n05D0 0028 05D1 2680 0028 005B 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 2680 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 2680;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 05D1 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 2680;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029 2680;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029 2680;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 05D1 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029 2680;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 005B 05D1 2680 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 05D1 005D 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 05D1 005D 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029 2680;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 05D1 2680 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 05D1 0029 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L and (([])\n05D0 0028 05D1 0061 0028 005B 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0061 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 0029;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 0061;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 0029;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 0029;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 0029;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029 0061;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 0029;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 0029;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 0029;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 0029;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R and (([])\n05D0 0028 05D1 0028 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 0 1;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and (([])\n2680 0028 2681 0028 2682 005B 2683 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 2683 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 2683 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 2683 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 0029 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 2682 0029 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (([])\n2680 0028 2681 0028 2682 0061 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0061 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0061 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0061 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0061 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 0061 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 2682 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 0029 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 2682 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0029 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (([])\n2680 0028 2681 0028 2682 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 05D0 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 05D0 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 005D 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 2682 05D0 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 2682 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 2682 0029 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0029 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0029 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (([])\n2680 0028 2681 0061 2682 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 2682 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 2682 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 2682 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 2682 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 2682 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 2682 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 2682 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 2682 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 2682 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 2682 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 2682 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0061 2682 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0061 0029 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and (([])\n2680 0028 2681 0061 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0061 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0061 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0061 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0028 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, R and (([])\n2680 0028 2681 0061 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 05D0 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 05D0 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 05D0 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 05D0 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 05D0 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 005D 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0061 05D0 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 0061 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 0061 0029 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (([])\n2680 0028 2681 05D0 2682 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 2682 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 2682 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 2682 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 2682 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 2682 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 2682 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 2682 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 2682 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 2682 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 2682 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 2682 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 2682 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 05D0 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 0029 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 05D0 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and (([])\n2680 0028 2681 05D0 0061 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0061 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0061 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0061 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0061 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 0061 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 05D0 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 0029 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 05D0 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and (([])\n2680 0028 2681 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 2681 0028 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 2681 0028 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 2681 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 2681 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 2681 05D0 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 2681 05D0 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 005D 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 2681 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 2681 05D0 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (([])\n2680 0028 0061 2681 0028 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 2682 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 2682 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 2682 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 2682 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 2682 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 2682 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 2682 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 2682 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 2681 0029 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 2681 0029 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and (([])\n2680 0028 0061 2681 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0062 0028 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 2681 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 2681 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 2681 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 2681 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0029 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 2681 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 2681 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 2681 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0062 0028 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 2681 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 2681 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 2681 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 2681 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0029 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 2681 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 2681 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 2681 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 2681 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 2681 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 2681 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 2681 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 2681 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 2681 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 2681 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 0029 2681 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, R and (([])\n2680 0028 0061 2681 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 05D0 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 05D0 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 05D0 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 05D0 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 05D0 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 005D 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 05D0 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 005D 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 2681 05D0 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 2681 0029 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 2681 05D0 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 2681 0029 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 0029 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and (([])\n2680 0028 0061 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 2681 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0062 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0062 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0028 0061 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 2681 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0062 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0062 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 005B 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0062 2681 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0062 0029 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 2681 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0062 2681 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0062 0029 2681;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0028 0061 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 2681 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0062 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0062 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 005B 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0062 2681 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0062 0029 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 2681 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0062 2681 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0062 0029 2681;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 005B 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0062 2681 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0062 0029 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0062 2681 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0062 0029 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, L and (([])\n2680 0028 0061 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 0028 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n2680 0028 0028 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 0028 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 2680 0028 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 2680 0061 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 0028 2680 005B 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, R and (([])\n2680 0028 0061 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 05D0 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 05D0 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 005D 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 05D0 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 05D0 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0028 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 05D0 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 005D 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0062 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 05D0 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 05D0 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 005D 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 05D0 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 05D0 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0062 05D0 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0028 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 05D0 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 005D 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0062 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 05D0 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 005D 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0062 05D0 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 0062 0029 05D0;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 005B 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 0062 0029 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0062 05D0 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 0062 0029 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, ON and (([])\n2680 0028 0061 05D0 2681 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 2681 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 2681 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 05D0 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 05D0 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, L and (([])\n2680 0028 0061 05D0 0062 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0062 0028 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0062 0028 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 05D0 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 05D0 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, R and (([])\n2680 0028 0061 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0061 0028 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0061 0028 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 0061 05D0 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n2680 0028 0028 0061 05D0 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0061 0028 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0061 0028 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 0061 05D0 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 2680 0028 0061 05D0 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 2680 0061 05D0 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 2680 0061 05D0 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 005D 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 005D 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 0061 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 0061 05D0 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (([])\n2680 0028 05D0 2681 0028 2682 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 2682 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 2682 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 2682 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 2682 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 2682 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 2682 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 2682 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 0029 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 0029 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and (([])\n2680 0028 05D0 2681 0061 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0061 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0061 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0061 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0061 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 0061 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 0029 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 0061 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 0029 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and (([])\n2680 0028 05D0 2681 05D1 0028 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n2680 0028 05D0 2681 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 2681 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0028 005B 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 2681 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n2680 0028 0028 005B 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0028 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 2680 05D0 2681 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 2681 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0029 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0028 005B 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 2681 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 2680 0028 005B 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 2680 005B 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 2681 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 2680 005B 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 2680 05D0 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 2681 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 2680 005D 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 005D 2680 05D0 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 2681 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0029 2681 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and (([])\n2680 0028 05D0 0061 2681 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 2681 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 2681 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, L and (([])\n2680 0028 05D0 0061 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0061 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0028 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0061 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0028 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, R and (([])\n2680 0028 05D0 0061 05D1 0028 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 05D1 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0028 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 05D1 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 005D 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 005D 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 2680 05D0 0061 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 2680 05D0 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and (([])\n2680 0028 05D0 0028 05D1 2681 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 2681 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 2681 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 0029 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 2681 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 2681 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 2681 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 0029 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 2681 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 2681 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 0029 2681;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 2681 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 0029 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 2681 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 0029 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, L and (([])\n2680 0028 05D0 0028 05D1 0061 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0061 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 0061 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0061 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 0061 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0061 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0061 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0061 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 0061 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0061 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 0061 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 0061 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0061 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0061 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 0061 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 0029 0061;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 0029 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 0061 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 0029 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, R and (([])\n2680 0028 05D0 0028 05D1 005B 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 2680 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (([])\n0061 2680 0028 2681 0028 2682 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 2682 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 2682 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 2682 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 2682 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 2682 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0029 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 2682 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 2682 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 2682 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 2681 0029 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 005D 2682 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 2682 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 005D 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 2681 0029 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 0029 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 2681 0029 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and (([])\n0061 2680 0028 2681 0062 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0062 0028 005B 005D 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 2680 0028 2681 0028 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0062 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0062 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0029 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0029 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 005B 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 2681 005B 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0062 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 2681 005B 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 2681 005B 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0062 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0062 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 2681 0062 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 2681 0029 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0029 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 005B 2681 0062 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 005B 2681 005D 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 005B 2681 005D 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 005B 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 2681 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 2681 0062 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 2681 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0029 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 0062 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 2681 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 0029 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 2681 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0029 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0029 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, R and (([])\n0061 2680 0028 2681 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 05D0 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 05D0 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 05D0 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 005D 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 05D0 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 2681 0029 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0029 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 05D0 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 05D0 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 005D 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 2681 05D0 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 2681 0029 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0029 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 05D0 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 005D 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 2681 05D0 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 2681 0029 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0029 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 2681 05D0 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 2681 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 2681 0029 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0029 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0029 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0029 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and (([])\n0061 2680 0028 0062 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 2681 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 2681 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 2681 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 2681 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0029 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 2681 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 2681 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 2681 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 2681 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 2681 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0029 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 2681 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 2681 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 2680 0062 2681 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 2681 0028 005B 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 2681 005B 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 2681 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 2681 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 0029 2681;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 2681 005B 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 2681 005B 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0062 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0062 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 2681 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 2681 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 2681 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 0029 2681;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 005B 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0062 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0062 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 2681 005D 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0062 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0062 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0062 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0062 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 005B 0061 2680 0062 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 2681 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 2681 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 0029 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 005D 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0062 2681 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0062 0029 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0062 2681 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0062 0029 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0062 2681 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0062 0029 2681;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, L, L and (([])\n0061 2680 0028 0062 0028 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 005B 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0062 0028 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0062 0028 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0062 0028 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0062 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 0062 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 0062 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 0062 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 0029 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 2680 005B 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0062 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 005B 0061 2680 0062 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 0063 0029;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 0029 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 005D 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0062 0029 0063;1;1;1 1 1 1 2 2 2 1 2;8 7 4 5 6 3 2 1 0\n\n# L, ON, L, R and (([])\n0061 2680 0028 0062 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 05D0 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 05D0 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 05D0 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 05D0 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 005D 0029 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 05D0 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 05D0 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 05D0 0028 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 05D0 005B 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 05D0 005D 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 05D0 0029;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 005D 0029 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 05D0 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 05D0 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 05D0 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 05D0 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 05D0 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 05D0 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 0062 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 2680 0062 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 05D0 0028 005B 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 05D0 005B 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 05D0 005D 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 05D0 0029;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 005D 0029 05D0;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 05D0 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 05D0 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 05D0 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 05D0 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 05D0 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 05D0 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 05D0 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 05D0 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 05D0 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 05D0 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0062 05D0 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 0062 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 05D0 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 05D0 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 05D0 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 005D 0029 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 05D0 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0062 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 05D0 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 005D 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0062 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 0062 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0062 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 0062 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 005B 0061 2680 0062 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 05D0 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 05D0 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 005D 0029 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 005D 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 0062 0029 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0062 05D0 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 0062 0029 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0062 05D0 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 005D 0061 2680 0062 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 0062 0029 05D0;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, R, ON and (([])\n0061 2680 0028 05D0 2681 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 2681 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 2681 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 05D0 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 05D0 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 2681 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 2681 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 05D0 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 05D0 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 2681 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 2681 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 05D0 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 05D0 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 2681 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 2681 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 05D0 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 05D0 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 2681 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 05D0 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 0029 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 05D0 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, L and (([])\n0061 2680 0028 05D0 0062 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0062 0028 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0062 0028 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 05D0 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 05D0 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0062 0028 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 05D0 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 05D0 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0062 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 05D0 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 05D0 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0062 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 05D0 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 05D0 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 0062 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 05D0 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 0029 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 05D0 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, R and (([])\n0061 2680 0028 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 2680 0028 0028 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 2680 0028 0028 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 2680 0028 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 2680 0028 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 2680 05D0 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 2680 05D0 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 005D 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 2680 05D0 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 2680 0028 05D0 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 2680 0028 05D0 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 2680 05D0 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 2680 05D0 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 005D 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 2680 05D0 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0061 2680 05D0 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 0061 2680 05D0 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 005D 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 2680 05D0 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 005D 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 2680 05D0 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 2680 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 2680 05D0 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and (([])\n0061 0028 0062 2680 0028 2681 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 2681 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 2681 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 2681 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 2681 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0029 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 2681 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 2681 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0029 2681;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 005B 2681 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 2681 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 005B 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 005B 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 2680 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 2681 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 2680 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 2680 0029 2681;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 005B 0062 2680 005D 2681 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 2681 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 2680 005D 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 0029 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 2680 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 2680 0029 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 2680 0029 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 2680 0029 2681;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, L and (([])\n0061 0028 0062 2680 0063 0028 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0063 0028 005B 005D 0029;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0028 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0063 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0063 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0029 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 0029 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 005B 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 005B 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 005B 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 2680 005B 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0063 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 2680 0063 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 2680 0029 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 0029 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 005B 0062 2680 0063 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 0062 2680 005D 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 0062 2680 005D 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 0029 0063;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 2680 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 0062 005D 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 2680 0029 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0029 2680 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 2680 0063 0029;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 0028 0061 005B 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 2680 0029 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 0029 2680 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 2680 0063 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 2680 0063 0029;1;1;1 1 1 2 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 2680 0029 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 2680 0029 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 0029 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 0029 2680 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, R and (([])\n0061 0028 0062 2680 05D0 0028 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 05D0 0028 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 05D0 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 05D0 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 005D 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 05D0 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 05D0 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 005D 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 05D0 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 005D 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 05D0 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 2680 0029 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0029 2680 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 05D0 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 05D0 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 05D0 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 05D0 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 2680 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0029 2680 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 05D0 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 05D0 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 05D0 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 2680 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0029 2680 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 05D0 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 2680 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 0029 2680 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 0028 0062 2680 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 05D0 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 05D0 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 05D0 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 05D0 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 05D0 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 2680 05D0 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 2680 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0029 2680 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 05D0 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 05D0 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 2680 05D0 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 2680 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0029 2680 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 2680 05D0 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 2680 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 0029 2680 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 2680 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 05D0 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 2680 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 2680 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 005D 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 2680 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 2680 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0029 2680 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 2680 05D0 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 2680 0029 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 0029 2680 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 2680 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 2680 05D0 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 2680 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 2680 0029 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 0029 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 0029 2680 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, L, ON and (([])\n0061 0028 0062 0028 0063 2680 005B 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 2680 005B 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 2680 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 2680 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 2680 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 2680 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 2680 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 2680 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 2680 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 0029 2680;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 2680 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 2680 005D 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0063 005D 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 2680 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0063 005D 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 0029 2680;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0063 2680 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0063 0029 2680;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0063 2680 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0063 0029 2680;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 005B 0062 005D 0063 2680 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0063 2680 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 0063 0029 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0063 0029 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n\n# L, L, L, L and (([])\n0061 0028 0062 0028 0063 005B 0064 005D 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0064 005D 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0064 0029;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 0029 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 0064 0029;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 0064 0029;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0063 005D 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0063 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0063 0029 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 005B 0062 005D 0063 0029 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0063 0029 0064;1;1;1 1 2 2 2 2 2 1 2;8 7 2 3 4 5 6 1 0\n\n# L, L, L, R and (([])\n0061 0028 0062 0028 0063 05D0 005B 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 05D0 005B 005D 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 005B 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 05D0 005D 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 005B 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 05D0 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 005B 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 05D0 005D 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0063 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 05D0 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0063 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 05D0 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 05D0 005D 0029;1;1;2 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 0063 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 05D0 0029;1;1;2 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0061 0028 0028 0062 005B 0063 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 005D 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 05D0 0029;1;1;2 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0061 0028 0028 0062 005B 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 05D0 0029;1;1;2 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 0063 0029 05D0;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 05D0 005D 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 05D0 005D 0029;1;1;1 2 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 0063 005D 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 05D0 0029;1;1;1 2 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0061 0028 0062 005B 0063 005D 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 005D 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0063 05D0 0029;1;1;1 2 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0061 0028 0062 005B 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 0063 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0063 05D0 0029;1;1;1 2 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 0063 0029 05D0;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0028 0061 005B 0062 005D 0063 05D0 0029;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0063 05D0 0029;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 005D 0063 0029 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 0063 0029 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n\n# L, L, R, ON and (([])\n0061 0028 0062 05D0 2680 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 2680 0028 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 2680 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 2680 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 005D 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 005D 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 2680 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 2680 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 2680 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 005D 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 005D 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 2680 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 05D0 2680 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 05D0 0029 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 2680 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 2680 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 2680 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 005D 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 005D 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 2680 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 05D0 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 05D0 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 2680 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 05D0 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 05D0 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 05D0 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 05D0 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 2680 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 2680 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 2680 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 005D 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 005D 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 2680 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 05D0 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 05D0 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 2680 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 05D0 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 05D0 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 05D0 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 05D0 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 2680 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 2680 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 2680 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 0029 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 005D 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 05D0 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 05D0 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 05D0 2680 0029;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 05D0 0029 2680;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 05D0 2680 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 05D0 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 05D0 0029 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 05D0 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, R, L and (([])\n0061 0028 0062 05D0 0063 0028 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0063 0028 005B 005D 0029;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0063 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0063 005B 005D 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0063 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0063 005D 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 005D 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 005D 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0063 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0063 005B 005D 0029;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0063 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0063 005D 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 005D 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 005D 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0063 005D 0029;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 05D0 0063 0029;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 05D0 0029 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0063 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0063 005B 005D 0029;1;1;2 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0063 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0063 005D 0029;1;1;2 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 005D 0063 0029;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 005D 0029 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0063 005D 0029;1;1;2 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 0063 0029;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 0029 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 05D0 0063 0029;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 05D0 0029 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0063 005D 0029;1;1;2 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 0063 0029;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 05D0 0063 0029;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 05D0 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 05D0 0063 0029;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 05D0 0029 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 0063 005B 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0063 005B 005D 0029;1;1;1 2 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0063 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0063 005D 0029;1;1;1 2 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 005D 0063 0029;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 005D 0029 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0063 005D 0029;1;1;1 2 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 0063 0029;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 0029 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 05D0 0063 0029;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 05D0 0029 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0063 005D 0029;1;1;1 2 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 0063 0029;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 05D0 0063 0029;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 05D0 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 05D0 0063 0029;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 05D0 0029 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 0063 005D 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0063 005D 0029;1;1;1 1 2 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 0063 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 0063 0029;1;1;1 1 2 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 0029 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 005D 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 05D0 0063 0029;1;1;1 1 2 2 2 2 1 2 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 0062 005D 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 05D0 0029 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 05D0 0063 0029;1;1;1 1 2 2 2 2 1 2 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 05D0 0029 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 05D0 0063 0029;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 05D0 0063 0029;1;1;1 1 1 2 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 0062 05D0 0029 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 05D0 0029 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, L, R, R and (([])\n0061 0028 0062 05D0 0028 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 05D1 005B 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 005B 05D1 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 005B 005D 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 005D 0029 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 005B 005D 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0062 0028 05D0 005B 05D1 005D 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0062 0028 05D0 005B 005D 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 005D 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 05D1 0029;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 005D 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 005D 05D0 0029 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 0062 05D0 005B 05D1 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0061 0028 0028 0062 05D0 005B 005D 05D1 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 005D 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 05D1 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 005D 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 005D 05D0 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 05D1 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 005D 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 005D 05D0 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 0062 05D0 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 05D1 005D 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 0062 05D0 005B 05D1 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 05D1 0029;0;0;0 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0061 0028 0062 05D0 005B 005D 05D1 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 005D 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 05D1 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 005D 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 005D 05D0 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 05D1 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 005D 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 005D 05D0 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 0062 05D0 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 05D0 005D 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 005D 0029 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0062 005D 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 005D 05D0 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 0062 05D0 0029 05D1;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 005B 0061 005D 0062 05D0 0029 05D1;0;0;0 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 0062 05D0 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and (([])\n0061 0028 05D0 2680 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 2681 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 2681 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 2681 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 2680 0029 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 2681 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 2681 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 2681 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 2680 0029 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 0029 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, L and (([])\n0061 0028 05D0 2680 0062 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0062 0028 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 2680 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 2680 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0029 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0062 0028 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 2680 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 2680 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0029 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0062 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 2680 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 2680 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0029 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0062 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 2680 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 0062 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 0029 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, R and (([])\n0061 0028 05D0 2680 05D1 0028 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0061 0028 05D0 2680 05D1 0028 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 2680 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0029 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 2680 05D1 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 2680 005B 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 2680 005B 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 005B 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 005B 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 005B 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0028 005B 05D0 2680 05D1 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 005D 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0061 0028 0028 005B 005D 05D0 2680 05D1 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 2680 0029 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0029 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0028 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0061 05D0 2680 05D1 0028 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 05D1 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 005D 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 05D1 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 2680 0029 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0029 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 2680 05D1 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 2680 005B 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 2680 005B 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 005B 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 005B 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 005B 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 0028 005B 05D0 2680 05D1 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 005D 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0061 0028 005B 005D 05D0 2680 05D1 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 2680 0029 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0029 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 05D1 005B 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 2680 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 2680 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 2680 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 05D1 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 005B 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 005B 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 05D1 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 005B 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0061 005B 05D0 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0061 005B 005D 05D0 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 05D1 005D 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0061 05D0 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 0061 005D 05D0 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 05D1 0029;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 005D 0061 05D0 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 2680 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0029 2680 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, ON and (([])\n0061 0028 05D0 0062 2680 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 2680 0028 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 2680 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 2680 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 2680 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 0029 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 2680 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 2680 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 2680 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 2680 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 2680 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 2680 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 0029 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 2680 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 2680 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 2680 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 0029 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0062 2680 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0062 0029 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0028 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 2680 0028 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 2680 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 2680 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 2680 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 0029 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 2680 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 2680 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 2680 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 2680 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 2680 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 2680 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 2680 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 0029 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 2680 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 2680 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 2680 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 0029 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0062 2680 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0062 0029 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 2680 005B 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 2680 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 2680 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 2680 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 0029 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 2680 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 2680 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 2680 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 0029 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 2680 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 2680 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 0029 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0062 2680 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0062 0029 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 2680 005D 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 2680 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 2680 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 0029 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 2680 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 0029 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0062 2680 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0062 0029 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 2680 0029;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 0029 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, L and (([])\n0061 0028 05D0 0062 0028 0063 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0063 005B 005D 0029;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0062 0028 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0063 005D 0029;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 0063 0029;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 0029 0063;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0028 0062 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0063 005D 0029;1;1;2 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 0063 0029;1;1;2 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 0063 0029;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 0029 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0063 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0063 005D 0029;1;1;2 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 0063 0029;1;1;2 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 0029 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 0063 0029;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 0029 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 0063 0029;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 0029 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0062 0029 0063;1;1;2 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0063 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0063 005B 005D 0029;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0062 0028 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0063 005D 0029;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 0063 0029;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 0029 0063;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0028 0062 005B 0063 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0063 005D 0029;1;1;1 2 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 0063 0029;1;1;1 2 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 0063 0029;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 0029 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0063 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0063 005D 0029;1;1;1 2 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 0063 0029;1;1;1 2 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 0029 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 0063 0029;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 0029 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 0063 0029;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 0029 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0062 0029 0063;1;1;1 2 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0063 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0063 005D 0029;1;1;1 1 2 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 0063 0029;1;1;1 1 2 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 0029 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 0063 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 0063 0029;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 0029 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 0063 0029;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 0029 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0062 0029 0063;1;1;1 1 2 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 0063 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 0063 0029;1;1;1 1 1 2 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 0029 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 0029 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0062 0029 0063;1;1;1 1 1 2 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 0029 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, L, R and (([])\n0061 0028 05D0 0062 05D1 0028 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 05D1 0028 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 05D1 005B 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 05D1 005D 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 05D1 0029;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 005D 0029 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 05D1 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 05D1 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 05D1 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 005D 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 05D1 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 005D 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 05D1 005B 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 05D1 005D 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 05D1 0029;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 005D 0029 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 05D1 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 005D 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 005D 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 05D1 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 05D1 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 005D 0029 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0062 05D1 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 005D 05D0 0062 0029 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0028 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 05D1 0028 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 05D1 005B 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 05D1 005D 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 05D1 0029;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 005D 0029 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 05D1 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 05D1 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 05D1 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 005D 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 05D1 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 005D 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 05D1 005B 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 05D1 005D 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 05D1 0029;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 005D 0029 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 05D1 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 005D 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 005D 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 05D1 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 05D1 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 005D 0029 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0062 05D1 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 005D 05D0 0062 0029 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 05D1 005B 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 05D1 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 005D 0029 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 05D1 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 005D 0029 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 005D 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 05D1 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 005D 0029 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 005D 05D0 0062 0029 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 05D1 005D 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 05D1 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 05D1 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 005D 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 005D 0029 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 0062 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0062 05D1 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 005D 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 005D 05D0 0062 0029 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 05D1 0029;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 0061 05D0 0062 0029 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 0061 05D0 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, ON and (([])\n0061 0028 05D0 0028 05D1 2680 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 2680 005B 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 2680 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 2680 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 005D 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 005B 005D 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 2680 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 2680 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 005D 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 05D1 005D 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 2680 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 005B 05D1 2680 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 05D1 005D 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 05D1 005D 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 05D1 2680 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 05D1 0029 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 2680 005B 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 2680 005B 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 2680 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 2680 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 005D 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 005B 005D 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 2680 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 2680 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 005D 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 05D1 005D 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 2680 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 0029 2680;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 2680 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 005B 05D1 2680 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 05D1 005D 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 05D1 005D 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 05D1 2680 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 05D1 0029 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 2680 005D 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 005B 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 2680 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 0029 2680;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, L and (([])\n0061 0028 05D0 0028 05D1 0062 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 0062 005B 005D 0029;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0062 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 005B 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 005B 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 005B 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0062 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 05D1 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 05D1 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 05D1 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 005D 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0062 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 05D1 0062 005D 0029;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 05D1 005D 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 05D1 005D 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 005D 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 05D1 0062 0029;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 05D1 0029 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0062 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 0062 005B 005D 0029;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0062 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 005B 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 005B 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 005B 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0062 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 05D1 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 05D1 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 05D1 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 005D 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 0029 0062;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0062 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 05D1 0062 005D 0029;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 05D1 005D 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 05D1 005D 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 005D 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 05D1 0062 0029;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 05D1 0029 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0062 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 05D1 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 05D1 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 0062 0029;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 0029 0062;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, R, R and (([])\n0061 0028 05D0 0028 05D1 005B 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 05D2 005D 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 005D 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 005D 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 005D 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 005D 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0028 05D0 005B 05D1 005D 05D2 0029;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 05D1 005D 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 005D 05D1 0029 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 05D2 005D 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 005D 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 005D 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 005D 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 005D 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 0028 05D0 005B 05D1 005D 05D2 0029;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 05D1 005D 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 005D 05D1 0029 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0028 0061 05D0 005B 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 005D 05D1 0029 05D2;0;0;0 0 0 1 1 1 1 0 1;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 005D 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (([])\n05D0 2680 0028 2681 0028 2682 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 2682 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 2682 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 2682 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 2682 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 2682 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0029 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 2682 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 2682 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 2682 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 0029 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 2682 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 005D 2682 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 005D 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 0029 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 0029 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 2681 0029 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and (([])\n05D0 2680 0028 2681 0061 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0061 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0061 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0061 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0029 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0061 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0061 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0061 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0061 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 0061 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 0029 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0061 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 0061 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 0029 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 0061 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 2681 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 0029 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 2681 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0029 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and (([])\n05D0 2680 0028 2681 05D1 0028 005B 005D 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 2680 0028 2681 05D1 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 05D1 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 05D1 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0029 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 05D1 005B 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 05D1 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 005B 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 005B 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 005B 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 05D1 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 005D 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 05D1 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 2681 0029 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0029 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 05D1 005D 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 005B 2681 05D1 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 05D1 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 005B 2681 005D 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 005D 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 005B 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 05D1 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 2681 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0029 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 2681 05D1 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 2681 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 2681 0029 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0029 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0029 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0029 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and (([])\n05D0 2680 0028 0061 2681 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 2681 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 2681 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 2681 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 2681 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 2681 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 2681 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 2681 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 2681 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 2681 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 2681 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 2681 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0061 2681 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0061 0029 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, L and (([])\n05D0 2680 0028 0061 0028 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0061 0028 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0028 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0061 0028 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0028 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0061 0028 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0028 0061 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, R and (([])\n05D0 2680 0028 0061 05D1 0028 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 05D1 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0028 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 05D1 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 0061 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0028 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 05D1 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 0061 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 05D1 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 0061 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 05D1 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 005D 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 0061 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0061 05D1 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 0061 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 2680 0061 0029 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and (([])\n05D0 2680 0028 05D1 2681 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 2681 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 2681 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 0029 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 2681 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 2681 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0029 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0028 005B 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 2681 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 2681 005B 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 2681 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 2681 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 0029 2681;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 2681 005B 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 2681 005B 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 2681 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 2681 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 2681 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 0029 2681;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 005B 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 2681 005D 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 2681 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 2681 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 0029 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 2681 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 0029 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 2681 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 0029 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 2681 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 005D 05D0 2680 05D1 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 0029 2681;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 005D 05D0 2680 05D1 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, L and (([])\n05D0 2680 0028 05D1 0061 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0061 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0061 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 0061 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 0029 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0061 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0061 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0061 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0061 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0028 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0061 005B 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0061 005D 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0061 0029;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0029 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0061 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0061 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0061 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0061 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0061 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0061 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0061 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0061 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0061 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0061 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0028 005B 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0061 005B 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0061 005D 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 0061 0029;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 0029 0061;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0061 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0061 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 0061 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0061 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 0061 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0061 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0061 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 0061 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0061 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 0061 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0061 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 0061 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 0061 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0061 005B 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0061 005D 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 0061 0029;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 0029 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0061 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0061 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0061 005D 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 0061 0029;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 0029 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 0029 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 0061 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 0029 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 0061 0029;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 005D 05D0 2680 05D1 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 0029 0061;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 005D 05D0 2680 05D1 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, R and (([])\n05D0 2680 0028 05D1 0028 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 05D2 005B 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 005D 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 2680 05D1 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 05D1 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 05D1 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 005D 0029 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 2680 005B 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 005D 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 005D 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 2680 05D1 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 05D2 0029;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 005D 0029 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 005D 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 005D 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 2680 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 2680 05D1 0029 05D2;0;0;0 0 0 0 1 1 1 0 1;0 1 2 3 6 5 4 7 8\n0028 0028 005B 005D 05D0 2680 05D1 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and (([])\n05D0 0028 0061 2680 0028 2681 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 2681 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 2681 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 0029 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 2681 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 2681 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 2681 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 2681 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 2680 0029 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 2681 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 2681 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 0029 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 2681 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 2681 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 2681 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 2680 0029 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 2681 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 0029 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 2681 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 2681 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 2680 0029 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 0029 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 0029 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 2680 0029 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, L and (([])\n05D0 0028 0061 2680 0062 0028 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0062 0028 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0028 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 2680 0028 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 2680 0028 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 2680 0028 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 2680 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 2680 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0029 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 2680 0062 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 2680 005B 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 2680 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0062 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 0062 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 0029 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0062 0028 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0062 0028 005B 005D 0029;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0028 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 2680 0028 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 2680 0028 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 2680 0028 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0062 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0062 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 2680 0062 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 2680 0029 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0029 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 2680 0062 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 2680 005B 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 2680 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0062 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 0062 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 0029 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 0062 005B 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0062 005B 005D 0029;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 2680 005B 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 2680 0062 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 2680 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0029 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0062 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 0062 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 0029 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0062 005D 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0062 005D 0029;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 2680 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 2680 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0029 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 0062 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 0029 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 0062 0029;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 2680 0062 0029;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 0029 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 2680 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 0029 2680 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, R and (([])\n05D0 0028 0061 2680 05D1 0028 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 05D1 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 2680 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 0029 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0028 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 05D1 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 05D1 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 05D1 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 005D 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 2680 05D1 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 2680 0029 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0029 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 2680 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 0029 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 05D1 005B 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 05D1 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 05D1 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 005D 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 2680 05D1 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 2680 0029 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0029 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 2680 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 0029 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 05D1 005D 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 05D1 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 005D 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 005D 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 2680 05D1 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 2680 0029 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0029 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 2680 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 0029 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 05D1 0029;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 2680 05D1 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 2680 0029 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 2680 0029 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 0029 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 0029 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, L, ON and (([])\n05D0 0028 0061 0028 0062 2680 005B 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 2680 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 005B 2680 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 2680 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 005B 005D 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 005B 005D 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0062 2680 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 2680 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0062 005D 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0062 005D 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0062 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0062 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 005B 0062 2680 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 2680 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 005B 0062 005D 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 0062 005D 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0062 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0062 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 2680 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 0029 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 2680 005B 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 2680 005B 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 005B 2680 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 2680 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 005B 005D 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 005B 005D 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0062 2680 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 2680 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0062 005D 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0062 005D 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0062 2680 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0062 0029 2680;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 005B 0062 2680 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 2680 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 005B 0062 005D 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 0062 005D 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0062 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0062 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 2680 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 0029 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 2680 005D 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 2680 005D 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0062 2680 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0062 0029 2680;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 2680 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 0029 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 2680 0029;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0062 2680 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 0029 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0062 0029 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, L, L and (([])\n05D0 0028 0061 0028 0062 005B 0063 005D 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 005B 005D 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 0062 005B 005D 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0062 005D 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0062 005D 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 005B 0062 005D 0063 0029;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 0028 0061 005B 0062 005D 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 0029 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 0063 005D 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0063 005D 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 005B 005D 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 0062 005B 005D 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0062 005D 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 0063 0029;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0062 005D 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0062 0029 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 005B 0062 005D 0063 0029;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 0028 0061 005B 0062 005D 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 0029 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 0063 0029;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 0063 0029;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0062 0029 0063;1;1;1 1 1 2 2 2 2 1 2;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 0029 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 0029 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0062 0029 0063;1;1;1 1 1 1 2 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, L, R and (([])\n05D0 0028 0061 0028 0062 05D1 005B 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 05D1 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 005B 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 005B 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 005B 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 005D 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0062 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 05D1 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0062 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0062 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 005D 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 005D 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 0062 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 005B 0062 05D1 005D 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 05D1 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0062 005D 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 0062 005D 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 005D 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0062 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 05D1 0029;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 0062 0029 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 05D1 005B 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 05D1 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 05D1 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 05D1 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 005D 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0062 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 05D1 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0062 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 05D1 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0062 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 005D 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 005D 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0062 05D1 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 0062 0029 05D1;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 005B 0062 05D1 005D 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 05D1 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0062 005D 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 0062 005D 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 005D 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0062 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 05D1 0029;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 0062 0029 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 05D1 005D 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 05D1 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 0062 005D 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 005D 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0062 05D1 0029;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 0062 0029 05D1;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 05D1 0029;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 0062 0029 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 05D1 0029;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0062 05D1 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 0062 0029 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 0062 0029 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, R, ON and (([])\n05D0 0028 0061 05D1 2680 0028 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 2680 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 2680 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 2680 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 2680 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 2680 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 2680 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 2680 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 2680 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 2680 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 2680 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 2680 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 0029 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0028 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 2680 0028 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 2680 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 2680 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 2680 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 2680 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 2680 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 2680 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 2680 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 05D1 2680 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 05D1 0029 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 2680 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 2680 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 2680 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 2680 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 2680 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 0029 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 2680 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 2680 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 2680 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 0029 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 2680 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 2680 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 0029 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 05D1 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 05D1 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 2680 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 2680 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 0029 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 2680 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 0029 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 2680 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 05D1 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 05D1 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 2680 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 0029 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 2680 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 05D1 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 0029 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 05D1 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, R, L and (([])\n05D0 0028 0061 05D1 0062 0028 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0062 0028 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0062 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0062 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 0062 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0062 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0062 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 0062 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0062 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0062 005B 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0062 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 0062 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0062 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0062 005D 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 0062 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 0062 0029;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 0029 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0028 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0062 0028 005B 005D 0029;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0062 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0062 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 0062 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0062 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0062 005B 005D 0029;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0062 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 0062 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0062 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0062 005D 0029;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 05D1 0062 0029;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 05D1 0029 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0062 005B 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0062 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 0062 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0062 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0062 005D 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 0062 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 0062 0029;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 0029 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0062 005B 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0062 005B 005D 0029;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0062 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 0029 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0062 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0062 005D 0029;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 0029 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 05D1 0062 0029;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 05D1 0029 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0062 005D 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 0062 0029;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 0029 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 0062 0029;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 0029 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0062 005D 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0062 005D 0029;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 0062 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 05D1 0062 0029;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 05D1 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 0062 0029;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 0029 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 0062 0029;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 05D1 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 0029 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 05D1 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, R, R and (([])\n05D0 0028 0061 05D1 0028 05D2 005B 005D 0029;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 05D2 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 05D2 005D 0029;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 05D2 0029;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 005D 0029 05D2;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 05D2 005D 0029;0;0;1 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n05D0 0028 0061 0028 05D1 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 05D2 0029;0;0;1 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n05D0 0028 0061 0028 05D1 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 005D 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 05D2 0029;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 005D 0029 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 005D 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 05D2 005D 0029;0;0;1 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n05D0 0028 0028 0061 05D1 005B 05D2 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 05D2 0029;0;0;1 0 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n05D0 0028 0028 0061 05D1 005B 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 005D 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 05D2 0029;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 005D 0029 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 005D 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 05D2 0029;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 005D 0029 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 005D 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 005D 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 0061 05D1 0029 05D2;0;0;1 0 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 05D2 005B 005D 0029;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 05D2 005B 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 05D2 005D 0029;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 05D2 0029;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 005D 0029 05D2;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 05D2 005D 0029;0;0;0 1 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 05D0 0061 0028 05D1 005B 05D2 005D 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 05D2 0029;0;0;0 1 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 05D0 0061 0028 05D1 005B 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 005D 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 05D2 0029;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 05D2 0029;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 005D 0029 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 005D 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 005D 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 005D 05D1 0029 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 05D2 005D 0029;0;0;0 1 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 05D0 0028 0061 05D1 005B 05D2 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 05D2 0029;0;0;0 1 0 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 05D0 0028 0061 05D1 005B 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 005D 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 05D2 0029;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 005D 0029 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 005D 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 05D2 0029;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 005D 0029 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 005D 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 005D 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 0061 05D1 0029 05D2;0;0;0 1 0 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 05D2 005D 0029;0;0;0 0 1 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 05D0 0061 05D1 005B 05D2 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 05D2 0029;0;0;0 0 1 0 1 1 1 1 0;0 1 2 3 7 6 5 4 8\n0028 0028 05D0 0061 05D1 005B 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 005D 0029 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 05D2 0029;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 005D 0029 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 005D 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 005D 05D1 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 05D2 0029;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 005D 0029 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 005D 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 005D 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 0061 05D1 0029 05D2;0;0;0 0 1 0 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 05D2 0029;0;0;0 0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 005D 0029 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 005D 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 005D 05D1 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 0061 05D1 0029 05D2;0;0;0 0 0 1 0 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 005D 05D0 0061 05D1 0029 05D2;0;0;0 0 0 0 1 0 1 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 005D 05D0 0061 05D1 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and (([])\n05D0 0028 05D1 2680 0028 2681 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 2681 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 2681 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 2681 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 2681 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0029 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 2681 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 2681 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029 2681;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 2681 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 2681 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 005B 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 2681 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 0029 2681;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 2681 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 005D 2681 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 0029 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 005D 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 0029 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 0029 2681;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 2680 0029 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, L and (([])\n05D0 0028 05D1 2680 0061 0028 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0061 0028 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0061 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0061 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0061 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0061 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0061 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0061 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0029 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 2680 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0061 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0061 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0061 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0061 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0061 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0061 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 2680 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0061 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0061 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0061 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 2680 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0061 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 2680 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0061 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0061 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 0061 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0061 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 0061 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 0061 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029 2680 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0061 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 0061 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 0061 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029 2680 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 0061 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029 2680 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0061 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029 2680 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 0061 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 0029 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029 2680 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 0061 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 2680 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 0029 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 2680 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029 2680 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0029 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, R and (([])\n05D0 0028 05D1 2680 05D2 0028 005B 005D 0029;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 05D1 2680 05D2 0028 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 05D2 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 05D2 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 05D2 005B 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 05D2 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 05D2 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 005D 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 05D2 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 2680 0029 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0029 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 05D2 005D 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 05D1 2680 05D2 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 05D1 2680 005D 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 005D 0029 05D2;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 005D 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 05D1 005D 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 2680 0029 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0029 2680 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 05D2 0029;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0028 05D0 005B 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 2680 0029 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0029 2680 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 05D2 0029;0;0;0 0 0 1 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 05D0 005D 05D1 2680 05D2 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 2680 0029 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 2680 0029 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0029 2680 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0029 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, ON and (([])\n05D0 0028 05D1 0061 2680 0028 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 2680 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 2680 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 2680 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 2680 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 2680 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 2680 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 0029 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 2680 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 2680 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 2680 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 2680 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 2680 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 0029 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 2680 005B 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 2680 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 2680 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 2680 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 2680 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 0029 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 2680 005D 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 2680 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 0029 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 2680 0029;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 0029 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 2680 005B 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 2680 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 2680 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 2680 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 2680 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 0029 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 2680 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 2680 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 0029 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 2680 005D 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 2680 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 0029 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 2680 0029;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 0029 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 2680 005D 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 2680 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 2680 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 2680 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 0029 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 0029 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 2680 0029;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 0029 2680;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 2680 0029;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0061 2680 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 0029 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0061 0029 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, L and (([])\n05D0 0028 05D1 0061 0028 0062 005B 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0062 005B 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0061 0028 005B 0062 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0062 005D 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 0062 0029;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 0029 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0028 0061 005B 0062 005D 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 0062 0029;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 0029 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0062 005D 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 0062 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 0062 0029;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 0029 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 0062 0029;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 0029 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 0029 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0062 005D 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0062 005D 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 0062 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 0062 0029;1;1;1 1 1 1 2 2 2 2 1;8 4 5 6 7 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 0029 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 0062 0029;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 0029 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 0062 0029;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 0029 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 0029 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 0062 0029;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 0062 0029;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 0029 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 0029 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 0029 0062;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 0029 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0061 0029 0062;1;1;1 1 1 1 1 1 2 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, L, R and (([])\n05D0 0028 05D1 0061 05D2 0028 005B 005D 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 05D2 0028 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 05D2 005B 005D 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 05D2 005B 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 05D2 005D 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 05D2 005D 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 05D2 0029;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 005D 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 005D 0029 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 05D2 005B 005D 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 05D2 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 05D2 005D 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 005D 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 05D2 005D 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 005D 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 05D2 0029;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 0061 0029 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 05D2 005B 005D 0029;0;0;1 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 05D2 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 05D2 005D 0029;0;0;1 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 05D2 0029;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 005D 0029 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 05D2 005D 0029;0;0;1 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 05D2 0029;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 005D 0029 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 05D2 0029;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 0061 0029 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 05D2 005D 0029;0;0;1 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 05D2 0029;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 005D 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 05D2 0029;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 0061 0029 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 05D2 0029;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 005D 05D1 0061 0029 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 05D2 005B 005D 0029;0;0;0 1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 05D2 005B 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 05D2 005D 0029;0;0;0 1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 05D2 005D 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 05D2 0029;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 05D2 0029;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 005D 0029 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 005D 0029 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 05D2 005D 0029;0;0;0 1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 05D2 0029;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 005D 0029 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 05D2 0029;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 0061 0029 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 05D2 005D 0029;0;0;0 1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 05D2 0029;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 005D 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 05D2 0029;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 0061 0029 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 05D2 0029;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 005D 05D1 0061 0029 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 05D2 005D 0029;0;0;0 0 1 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 05D2 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 05D2 0029;0;0;0 0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 05D2 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 005D 0029 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 005D 0029 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 05D2 0029;0;0;0 0 1 1 1 1 0 1 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 0061 0029 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 05D1 005D 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 05D2 0029;0;0;0 0 1 1 1 1 0 1 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 005D 05D1 0061 0029 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 05D2 0029;0;0;0 0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0061 05D2 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 005D 05D1 0061 0029 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 005D 05D1 0061 0029 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, ON and (([])\n05D0 0028 05D1 0028 05D2 2680 005B 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 2680 005B 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 2680 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 2680 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 005B 005D 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 2680 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 2680 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 05D2 005D 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 2680 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 2680 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 05D2 005D 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 2680 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029 2680;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 2680 005D 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 2680 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 2680 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 005D 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 0029 2680;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 05D2 005D 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 2680 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 0029 2680;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 2680 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 0029 2680;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 2680 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 005D 05D2 2680 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 0029 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 005D 05D2 0029 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, L and (([])\n05D0 0028 05D1 0028 05D2 0061 005B 005D 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 0061 005B 005D 0029;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0061 005D 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 005B 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0061 0029;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 005B 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 005B 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0061 005D 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 05D2 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0061 0029;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 05D2 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 05D2 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0061 0029;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0061 005D 0029;0;0;1 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 05D2 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0061 0029;0;0;1 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n05D0 0028 0028 05D1 005B 05D2 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 05D2 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0061 0029;0;0;1 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n05D0 0028 0028 05D1 005B 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0061 0029;0;0;1 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029 0061;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0061 005D 0029;0;0;0 1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 05D2 0061 005D 0029;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 0061 0029;0;0;0 1 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 05D0 0028 05D1 005B 05D2 005D 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 05D2 005D 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 0061 0029;0;0;0 1 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 05D0 0028 05D1 005B 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 0061 0029;0;0;0 1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 0029 0061;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 0061 0029;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 005D 05D2 0061 0029;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 0029 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 005D 05D2 0029 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, R, R and (([])\n05D0 0028 05D1 0028 05D2 005B 05D3 005D 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 05D3 005D 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 005D 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 005D 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 05D3 0029;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 005D 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 05D3 0029;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 005D 05D3 0029;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 005D 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 005D 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 005D 05D2 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 005D 05D2 0029 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 005D 05D2 0029 05D3;0;0;0 0 1 1 1 1 1 0 1;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 005D 05D2 0029 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# (([)]\n0028 0028 005B 0029 005D;0;0;0 0 0 0 0;0 1 2 3 4\n0028 0028 005B 0029 005D;1;1;1 1 1 1 1;4 3 2 1 0\n\n# ON and (([)]\n2680 0028 0028 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n2680 0028 0028 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 2680 0028 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 2680 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 2680 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0029 2680 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0029 005D 2680;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0029 005D 2680;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# L and (([)]\n0061 0028 0028 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0061 0028 0028 005B 0029 005D;1;1;2 1 1 1 1 1;5 4 3 2 1 0\n0028 0061 0028 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0061 0028 005B 0029 005D;1;1;1 2 1 1 1 1;5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 0061 005B 0029 005D;1;1;1 1 2 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0061 0029 005D;1;1;1 1 1 2 1 1;5 4 3 2 1 0\n0028 0028 005B 0029 0061 005D;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0029 0061 005D;1;1;1 1 1 1 2 1;5 4 3 2 1 0\n0028 0028 005B 0029 005D 0061;0;0;0 0 0 0 0 0;0 1 2 3 4 5\n0028 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 2;5 4 3 2 1 0\n\n# R and (([)]\n05D0 0028 0028 005B 0029 005D;0;0;1 0 0 0 0 0;0 1 2 3 4 5\n05D0 0028 0028 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D;0;0;0 1 0 0 0 0;0 1 2 3 4 5\n0028 05D0 0028 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D;0;0;0 0 1 0 0 0;0 1 2 3 4 5\n0028 0028 05D0 005B 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D;0;0;0 0 0 1 0 0;0 1 2 3 4 5\n0028 0028 005B 05D0 0029 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D;0;0;0 0 0 0 1 0;0 1 2 3 4 5\n0028 0028 005B 0029 05D0 005D;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n0028 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 1;0 1 2 3 4 5\n0028 0028 005B 0029 005D 05D0;1;1;1 1 1 1 1 1;5 4 3 2 1 0\n\n# ON, ON and (([)]\n2680 0028 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, L and (([)]\n2680 0028 0061 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0061 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0061 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0029 005D 2680 0061;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# ON, R and (([)]\n2680 0028 05D0 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n2680 0028 05D0 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n2680 0028 0028 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n2680 0028 0028 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 2680 05D0 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 2680 0028 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 2680 0028 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 2680 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 2680 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 05D0 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 2680 0029 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 2680 05D0 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 0029 2680 005D 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 0029 005D 2680 05D0;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# L, ON and (([)]\n0061 2680 0028 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 005D 2680;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 2680 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 2680 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 2680 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 2680 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 005D 2680;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 2680 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 2680 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 005D 2680;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 0061 2680 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 005D 2680;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 0061 005D 2680;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# L, L and (([)]\n0061 0028 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 005D;1;1;2 2 2 1 1 1 1;6 5 4 3 0 1 2\n0061 0028 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 2 1;6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2;0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 0029 005D;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0062 0029 005D;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 0062 005D;1;1;1 2 2 2 2 2 1;6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 005D 0062;1;1;1 2 2 2 2 2 2;1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0062 0029 005D;1;1;1 1 2 2 2 1 1;6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 0062 005D;1;1;1 1 2 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 005D 0062;1;1;1 1 2 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 0062 005D;1;1;1 1 1 2 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 005D 0062;1;1;1 1 1 2 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 2 2 2;4 5 6 3 2 1 0\n\n# L, R and (([)]\n0061 0028 05D0 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0061 0028 05D0 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0061 0028 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0061 05D0 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0061 0028 05D0 005B 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 05D0 0029 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 05D0 005D;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0061 0028 005B 0029 005D 05D0;1;1;1 2 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 0061 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 0061 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 05D0 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 05D0 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 0061 0029 005D 05D0;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 0061 05D0 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 0029 0061 005D 05D0;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n\n# R, ON and (([)]\n05D0 2680 0028 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 2680 0028 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 2680 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 2680;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 2680 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D 2680;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 2680 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D 2680;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 05D0 2680 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D 2680;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 05D0 005D 2680;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# R, L and (([)]\n05D0 0028 0061 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0061 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0;0 1 2 3 4 5 6\n05D0 0028 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0061 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D 0061;0;0;0 1 0 0 0 0 0;0 1 2 3 4 5 6\n0028 05D0 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 0061 005B 0029 005D;1;1;1 1 1 2 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0061 0029 005D;1;1;1 1 1 1 2 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D 0061;0;0;0 0 0 1 0 0 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 2 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D 0061;0;0;0 0 0 0 1 0 0;0 1 2 3 4 5 6\n0028 0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 2;6 5 4 3 2 1 0\n\n# R, R and (([)]\n05D0 0028 05D1 0028 005B 0029 005D;0;0;1 1 1 0 0 0 0;2 1 0 3 4 5 6\n05D0 0028 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 0;5 4 3 2 1 0 6\n05D0 0028 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D;0;0;0 1 1 1 1 1 0;0 5 4 3 2 1 6\n0028 05D0 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D 05D1;0;0;0 1 1 1 1 1 1;0 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D;0;0;0 0 1 1 1 0 0;0 1 4 3 2 5 6\n0028 0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D;0;0;0 0 1 0 0 1 0;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 1;0 1 2 3 4 5 6\n0028 0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 1 0 1 0;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 1 0 0 1;0 1 2 3 4 5 6\n0028 0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 1 1 1;0 1 2 3 6 5 4\n0028 0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1;6 5 4 3 2 1 0\n\n# ON, ON, ON and (([)]\n2680 0028 2681 0028 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, L and (([)]\n2680 0028 2681 0061 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D 2681 0061;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, ON, R and (([)]\n2680 0028 2681 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 05D0 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 2681 0028 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 2681 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 2681 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 2681 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 2681 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 2681 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 2681 05D0 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 2681 005D 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 005D 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 005D 2681 05D0;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, ON and (([)]\n2680 0028 0061 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 2681 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 2681 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, L, L and (([)]\n2680 0028 0061 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n2680 0028 0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 2680 0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# ON, L, R and (([)]\n2680 0028 0061 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 05D0 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0061 0028 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 0061 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 05D0 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0061 0028 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 0061 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 0061 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0061 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 0061 05D0 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 0061 005D 05D0;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, ON and (([)]\n2680 0028 05D0 2681 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 05D0 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 05D0 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 05D0 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 05D0 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, R, L and (([)]\n2680 0028 05D0 0061 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 05D0 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 05D0 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 05D0 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D 0061;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 2680 05D0 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# ON, R, R and (([)]\n2680 0028 05D0 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n2680 0028 05D0 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n2680 0028 0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n2680 0028 0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n2680 0028 0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 2680 05D0 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 2680 0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 2680 0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 2680 0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 2680 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 2680 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 2680 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 2680 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 005B 2680 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 005B 0029 2680 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, ON and (([)]\n0061 2680 0028 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D 2681;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, ON, L and (([)]\n0061 2680 0028 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1;7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 0062 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 005D 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 005D 2680 0062;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0062 0028 005B 0029 005D;1;1;1 2 2 2 1 1 1 1;7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 0062 005B 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0062 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 0062 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 005D 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 0062 005B 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0062 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 0062 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 005D 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0062 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 0062 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 005D 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 2680 0062 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 2680 005D 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 005D 2680 0062;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 2680 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 0062 005B 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0062 0029 005D;1;1;1 1 2 2 2 2 1 1;7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 2680 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0062 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0029 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 2680 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 2 2 2 1;7 4 5 6 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n0028 0028 005B 0029 0061 005D 2680 0062;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 2 2 2 2;4 5 6 7 3 2 1 0\n\n# L, ON, R and (([)]\n0061 2680 0028 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 05D0 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 05D0 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 05D0 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 2680 005D 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 005D 2680 05D0;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 05D0 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 05D0 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 2680 0028 005B 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 05D0 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 2680 005B 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 2680 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 2680 05D0 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 2680 005D 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 005D 2680 05D0;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 2680 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 2680 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 2680 05D0 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 2680 005D 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 005D 2680 05D0;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 2680 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 2680 05D0 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 2680 005D 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 005D 2680 05D0;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 2680 05D0 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 2680 005D 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 005D 2680 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 005D 2680 05D0;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, L, ON and (([)]\n0061 0028 0062 2680 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 005B 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 005B 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 2680 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 2680 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 005D 2680;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 2680 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 2680 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 005D 2680;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 2680 005B 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 2680 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 2680 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 005D 2680;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 2680 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 2680 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 005D 2680;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 0062 2680 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 0062 005D 2680;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 2680 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 2680 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 2680 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 005D 2680;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 0062 2680 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 0062 005D 2680;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 0062 2680 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D 2680;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 0062 005D 2680;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, L, L and (([)]\n0061 0028 0062 0028 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 1;7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0063 0029 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 0063 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 005D 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 0063 005D;1;1;1 2 2 2 2 2 2 1;7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 005D 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 0062 005D 0063;1;1;1 2 2 2 2 2 2 2;1 2 3 4 5 6 7 0\n0028 0028 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 1 2 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 1 1 2;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 2 1 2 2 2;5 6 7 4 3 2 1 0\n\n# L, L, R and (([)]\n0061 0028 0062 05D0 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 05D0 0028 005B 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 05D0 005B 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 05D0 0029 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 05D0 005D;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 005D 05D0;1;1;2 2 2 1 1 1 1 1;7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 05D0 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 1 1;7 6 0 1 2 3 4 5\n0028 0061 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 05D0 005B 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 05D0 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 05D0 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 0062 005B 0029 005D 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 05D0 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 05D0 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0062 0029 005D 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 0062 05D0 005D;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 0062 005D 05D0;1;1;1 2 2 2 2 2 1 1;7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1;7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 0062 05D0 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 0062 005D 05D0;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n\n# L, R, ON and (([)]\n0061 0028 05D0 2680 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 2680 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 2680 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 2680 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0029 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0029 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 2680 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 2680 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 2680 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 05D0 2680 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 05D0 005D 2680;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 2680 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 2680 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 2680 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0029 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0029 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 2680 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 2680 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 2680 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 05D0 2680 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 05D0 005D 2680;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 05D0 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 05D0 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 05D0 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 05D0 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 05D0 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D 2680;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 05D0 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# L, R, L and (([)]\n0061 0028 05D0 0062 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0062 0028 005B 0029 005D;1;1;2 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 0062 005B 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 05D0 0028 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 0062 005B 0029 005D;1;1;2 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0062 0028 005B 0029 005D;1;1;1 2 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 0062 005B 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 05D0 0028 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 0062 005B 0029 005D;1;1;1 2 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0062 0029 005D;1;1;1 2 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 0062 005B 0029 005D;1;1;1 1 2 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 2 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n\n# L, R, R and (([)]\n0061 0028 05D0 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0061 0028 05D0 0028 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0061 0028 0028 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0061 0028 0028 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0061 0028 0028 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 0;0 1 6 5 4 3 2 7\n0028 0061 05D0 0028 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1;0 1 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0061 0028 05D0 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 05D0 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0061 0028 005B 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0061 0028 005B 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 0061 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 0061 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 0061 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, ON and (([)]\n05D0 2680 0028 2681 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 2680 005D 2681;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, ON, L and (([)]\n05D0 2680 0028 0061 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 2680 0028 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 2680 0061;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D 2680 0061;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D 2680 0061;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D 2680 0061;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 2680 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 2680 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D 2680 0061;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 005D 2680 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, ON, R and (([)]\n05D0 2680 0028 05D1 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 2680 0028 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 2680 0028 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0;3 2 1 0 4 5 6 7\n05D0 0028 2680 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 2680 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 2680 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 2680 05D1;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 005D;0;0;0 1 1 1 0 0 0 0;0 3 2 1 4 5 6 7\n0028 05D0 2680 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 2680 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 2680 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 005D 2680 05D1;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 2680 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 2680 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 2680 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 005D;0;0;0 0 1 1 1 1 0 0;0 1 5 4 3 2 6 7\n0028 0028 05D0 005B 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 0 0;0 1 2 5 4 3 6 7\n0028 0028 005B 05D0 2680 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 2680 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 2680 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 2680 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 005D 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 1 1 1 0;0 1 2 3 6 5 4 7\n0028 0028 005B 0029 05D0 2680 05D1 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 005B 0029 05D0 2680 005D 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 1 1 1 1;0 1 2 3 7 6 5 4\n0028 0028 005B 0029 05D0 005D 2680 05D1;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, L, ON and (([)]\n05D0 0028 0061 2680 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 2680 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D 2680;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 2680 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D 2680;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D 2680;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 2680 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 2680 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 005D 2680;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D 2680;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 005D;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 0061 2680 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D 2680;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 0061 005D 2680;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, L, L and (([)]\n05D0 0028 0061 0028 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n05D0 0028 0028 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 1;7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2;2 3 4 5 6 7 1 0\n0028 05D0 0028 0061 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 2 2 2 1 1;7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 2 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 2 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 2 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 2 2 2;5 6 7 4 3 2 1 0\n\n# R, L, R and (([)]\n05D0 0028 0061 05D1 0028 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 05D1 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0061 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 05D1 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0061 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 005D;0;0;0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 005D;0;0;0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7\n0028 0028 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n\n# R, R, ON and (([)]\n05D0 0028 05D1 2680 0028 005B 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 2680 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 2680;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 05D1 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 05D1 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 05D1 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 2680;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D 2680;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 05D1 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 05D1 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D 2680;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 05D1 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D 2680;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 2680 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D 2680;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D 2680;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 05D1 2680 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 05D1 005D 2680;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# R, R, L and (([)]\n05D0 0028 05D1 0061 0028 005B 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0061 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 005D;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 0061;0;0;1 1 1 0 0 0 0 0;2 1 0 3 4 5 6 7\n05D0 0028 05D1 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 005D;0;0;1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 005D;0;0;1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n05D0 0028 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 0 0;5 4 3 2 1 0 6 7\n05D0 0028 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 2 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 005D;0;0;0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 005D;0;0;0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7\n0028 05D0 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 005D;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D 0061;0;0;0 1 1 1 1 1 0 0;0 5 4 3 2 1 6 7\n0028 05D0 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 2 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 0 0 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 005D;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D 0061;0;0;0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 2 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7\n0028 0028 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 2;7 6 5 4 3 2 1 0\n\n# R, R, R and (([)]\n05D0 0028 05D1 0028 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 05D1 0028 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 0;6 5 4 3 2 1 0 7\n05D0 0028 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 005D;0;0;0 1 1 1 1 1 1 0;0 6 5 4 3 2 1 7\n0028 05D0 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D 05D2;0;0;0 1 1 1 1 1 1 1;0 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 0 1 0;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 0 0 1;0 1 4 3 2 5 6 7\n0028 0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 1 0 1 1 1;0 1 2 3 4 7 6 5\n0028 0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1;7 6 5 4 3 2 1 0\n\n# ON, ON, ON, ON and (([)]\n2680 0028 2681 0028 2682 005B 2683 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 2683 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 2683 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 2683 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 2683 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 2683 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 2683 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 2683 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 2683 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 2683 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 005D 2683;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 2682 005D 2683;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, L and (([)]\n2680 0028 2681 0028 2682 0061 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0061 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0061 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0061 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0061 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 0061 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 2682 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 005D 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 2682 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D 2682 0061;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 005D 2682 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, ON, R and (([)]\n2680 0028 2681 0028 2682 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 05D0 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 2682 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 2682 005B 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 2682 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 2682 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 2682 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 2682 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 05D0 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 2682 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 2682 0029 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 2682 05D0 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 2682 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 2682 005D 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 005D 2682 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 005D 2682 05D0;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, ON and (([)]\n2680 0028 2681 0061 2682 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 2682 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 2682 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 2682 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 2682 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 2682 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 2682 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 2682 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 2682 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 2682 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 2682 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 2682 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 0061 2682 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 0061 005D 2682;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, L, L and (([)]\n2680 0028 2681 0061 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 2681 0061 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 2681 0061 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 2681 0061 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 2681 0028 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# ON, ON, L, R and (([)]\n2680 0028 2681 0061 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 05D0 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0061 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0061 0028 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 05D0 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 0061 005B 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 05D0 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 0061 005B 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 05D0 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 0061 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 0061 005B 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 05D0 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0061 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0061 0029 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 0061 05D0 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 0061 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 0061 005D 05D0;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, ON and (([)]\n2680 0028 2681 05D0 2682 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 2682 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 2682 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 2682 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 2682 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 2682 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 2682 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 2682 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 2682 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 2682 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 2682 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 2682 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 2682 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 05D0 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 005D 2682;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 05D0 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, L and (([)]\n2680 0028 2681 05D0 0061 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 05D0 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 0061 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 0061 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 0061 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0061 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 0029 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 0061 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 05D0 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 005D 0061;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 2681 05D0 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, ON, R, R and (([)]\n2680 0028 2681 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 2681 05D0 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 2681 05D0 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 2681 05D0 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 2681 05D0 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 2681 0028 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 2681 0028 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 2681 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 2681 0028 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0028 2681 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 2681 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 2681 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 2681 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 005B 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 005B 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0028 2681 05D0 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 05D0 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 2681 005B 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 2681 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 2681 005B 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 005B 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 005B 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 2681 05D0 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 2681 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 005B 2681 0029 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 005B 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 2681 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 2680 0029 2681 05D0 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, ON and (([)]\n2680 0028 0061 2681 0028 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 2682 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 2682 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 2681 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 2681 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 2682 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 2682 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 2682 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 2681 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 2681 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 2682 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 2682 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 2681 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 2681 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 2682 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 2681 005D 2682;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 2681 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 2681 005D 2682;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, ON, L and (([)]\n2680 0028 0061 2681 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0062 0028 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n2680 0028 0061 2681 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 2681 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 2681 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 2681 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 2681 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 2681 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 005D 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n2680 0028 0028 0061 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 2681 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 2681 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 2681 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 005D 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 2681 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 2681 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 005D 2681 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0061 2681 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0062 0028 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 2680 0061 2681 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 2681 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 2681 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 2681 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 2681 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 2681 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 005D 2681 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 2680 0028 0061 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 2681 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 2681 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 2681 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 005D 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 2681 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 2681 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 005D 2681 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 0061 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 2680 0061 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 2681 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 2681 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 2681 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 005D 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 2681 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 2681 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 005D 2681 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 2681 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 2681 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 005D 2681 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 2681 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 2681 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 005D 2681 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 2681 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 2681 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 005D 2681 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n\n# ON, L, ON, R and (([)]\n2680 0028 0061 2681 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 05D0 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 2681 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 2681 0028 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 2681 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 2681 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 2681 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 2681 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 2681 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 005D 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 05D0 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 2681 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 2681 0028 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 05D0 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 2681 005B 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 2681 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 2681 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 2681 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 2681 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 005D 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 05D0 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 2681 005B 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 05D0 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 2681 0029 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 2681 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 2681 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 2681 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 005D 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 05D0 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 2681 0029 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 2681 05D0 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 2681 005D 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 2681 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 2681 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 005D 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 2681 05D0 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 2681 005D 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 005D 2681 05D0;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, ON and (([)]\n2680 0028 0061 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 2681 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 2681 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 2681 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 0062 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 0062 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0028 0061 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 2681 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 2681 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 005D 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 0062 2681 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 0062 005D 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 0062 2681 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 0062 005D 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 2681 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 2681 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 2681 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 0062 2681 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 0062 005D 2681;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0028 0061 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 2681 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 2681 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 005D 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 0062 2681 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 0062 005D 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 0062 2681 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 0062 005D 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 2681 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 2681 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 005D 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 0062 2681 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 0062 005D 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 0062 2681 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 0062 005D 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 0062 2681 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 0062 005D 2681;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, L, L and (([)]\n2680 0028 0061 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0063 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n2680 0028 0061 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0061 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 0062 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n2680 0028 0028 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0063 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 2680 0061 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0061 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 0062 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 2680 0028 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# ON, L, L, R and (([)]\n2680 0028 0061 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 05D0 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 05D0 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 0062 005B 0029 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 05D0 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 0062 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0061 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 0062 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n2680 0028 0028 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 05D0 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 05D0 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0062 0029 005D 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n2680 0028 0028 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 0062 05D0 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 0062 005D 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 05D0 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 05D0 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 0062 005B 0029 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 05D0 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 0062 05D0 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0061 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 0062 005D 05D0;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 2680 0028 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 05D0 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 05D0 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0062 0029 005D 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 2680 0028 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 0062 05D0 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 0062 005D 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 05D0 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 05D0 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0062 0029 005D 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 2680 0061 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 0062 05D0 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 0062 005D 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 0062 05D0 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 0062 005D 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 0062 05D0 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 0062 005D 05D0;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, ON and (([)]\n2680 0028 0061 05D0 2681 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 2681 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 05D0 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 05D0 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 2681 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 2681 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 05D0 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 05D0 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 05D0 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 05D0 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 05D0 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 05D0 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 05D0 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 05D0 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, L and (([)]\n2680 0028 0061 05D0 0062 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0062 0028 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 05D0 0028 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0062 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0062 0028 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 05D0 0028 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 05D0 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 0029 05D0 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 05D0 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 0061 05D0 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 05D0 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 0029 05D0 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 05D0 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 0061 05D0 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 05D0 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 0061 05D0 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, L, R, R and (([)]\n2680 0028 0061 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0061 05D0 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0061 05D0 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n2680 0028 0061 05D0 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n2680 0028 0061 05D0 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0061 0028 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0061 0028 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0061 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0061 0028 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0028 0061 05D0 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 05D0 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 0061 005B 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 0061 005B 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0061 05D0 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0061 05D0 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 2680 0061 05D0 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 2680 0061 05D0 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0061 0028 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0061 0028 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0061 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0061 0028 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0028 0061 05D0 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 05D0 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 0061 005B 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 0061 005B 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 2680 0061 05D0 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 05D0 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 0061 005B 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 0061 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 0061 005B 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0061 05D0 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 005B 0061 0029 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 005B 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0061 05D0 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0061 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 2680 0061 0029 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 0061 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 2680 0029 0061 05D0 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 0061 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0029 2680 0061 05D0 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, ON and (([)]\n2680 0028 05D0 2681 0028 2682 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 2682 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 2682 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 2682 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 2682 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 2682 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 2682 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 2682 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 005D 2682;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 005D 2682;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, L and (([)]\n2680 0028 05D0 2681 0061 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 2681 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0061 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 2681 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 0061 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 0061 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0061 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0061 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 0061 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 005D 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 0061 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 005D 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D 2681 0061;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, ON, R and (([)]\n2680 0028 05D0 2681 05D1 0028 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n2680 0028 05D0 2681 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 2681 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 2681 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 2681 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 2681 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 2681 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 2681 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 2681 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 2681 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 005D 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 2681 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n2680 0028 0028 05D0 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n2680 0028 0028 005B 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 2681 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 2681 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 005D 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n2680 0028 0028 005B 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 005B 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n2680 0028 0028 005B 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 05D1 0028 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 2680 05D0 2681 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 2681 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 2681 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 2681 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 2681 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 2681 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 2681 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 2681 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 2681 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 005D 2681 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 2681 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 2680 0028 05D0 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 2680 0028 005B 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 2681 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 2681 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 005D 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 2680 0028 005B 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 005B 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 2680 0028 005B 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 2681 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 2680 05D0 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 2681 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 2680 005B 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 2681 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 2681 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 005D 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 2680 005B 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 005B 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 2680 005B 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 2680 05D0 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 2681 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 2681 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 005D 2681 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 2680 0029 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 2681 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 2680 0029 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 005D 2681 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 2680 0029 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 0029 2680 05D0 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 2681 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0029 2680 05D0 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 005D 2681 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0029 2680 05D0 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, ON and (([)]\n2680 0028 05D0 0061 2681 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 2681 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 2681 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 2681 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, L, L and (([)]\n2680 0028 05D0 0061 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 05D0 0061 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n2680 0028 05D0 0028 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 05D0 0061 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 2680 05D0 0028 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# ON, R, L, R and (([)]\n2680 0028 05D0 0061 05D1 0028 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 05D1 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0061 0028 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0061 0028 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 0061 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 05D1 0028 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 05D1 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0061 0028 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0061 0028 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 0061 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 0061 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0061 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 0061 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0061 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 0061 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 0029 05D0 0061 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 0029 05D0 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 2680 05D0 0061 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 2680 05D0 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, ON and (([)]\n2680 0028 05D0 0028 05D1 2681 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 2681 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 2681 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 2681 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 2681 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 005D 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 2681 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 005D 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 2681 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 005D 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 2681 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 2681 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 2681 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 2681 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 005D 2681;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 2681 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 2681 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 005D 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 2681 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 005D 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 2681 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 005D 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 2681 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 2681 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 005D 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 2681 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 005D 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 2681 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 005D 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 2681 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 005D 2681;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, L and (([)]\n2680 0028 05D0 0028 05D1 0061 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0061 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0061 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 05D0 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n2680 0028 05D0 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0061 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 0061 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 005D 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 0061 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 005D 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n2680 0028 0028 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 0061 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0061 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0061 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 05D0 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 0061 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 005D 0061;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 2680 05D0 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0061 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 0061 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 005D 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 0061 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 005D 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 2680 0028 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0061 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 0061 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 005D 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 0061 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 005D 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 05D0 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 0061 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 005D 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 2680 005B 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 0061 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 005D 0061;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 2680 05D0 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# ON, R, R, R and (([)]\n2680 0028 05D0 0028 05D1 005B 05D2 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 05D1 005B 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n2680 0028 05D0 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 05D0 0028 005B 0029 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n2680 0028 05D0 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n2680 0028 0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n2680 0028 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n2680 0028 0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 05D2 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 05D1 005B 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 2680 05D0 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 05D0 0028 005B 0029 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 2680 05D0 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 2680 0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 2680 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 2680 0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 0028 2680 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 2680 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 2680 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 2680 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 2680 05D0 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, ON and (([)]\n0061 2680 0028 2681 0028 2682 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 2682 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 2682 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 2682 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 2682 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 2682 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 005D 2682;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 2682 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 2682 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 2682 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 2682 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 2682 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 2681 005D 2682;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 2682 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 2682 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 2681 005D 2682;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 005D 2682;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 2681 005D 2682;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, ON, L and (([)]\n0061 2680 0028 2681 0062 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0062 0028 005B 0029 005D;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 2680 0028 2681 0028 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 2681 0028 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 0062 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0062 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 0062 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 005D 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 005D 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 005D 2681 0062;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 0062 005B 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 2681 005B 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0062 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 2681 005B 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 2681 005B 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0062 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 2681 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 2681 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 005D 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0062 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 2681 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 2681 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 005D 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 2681 0062 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 2681 005D 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 005D 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 005D 2681 0062;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 005B 2681 0062 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0062 0029 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 005B 2681 0029 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 2681 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 2681 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 005D 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 2681 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 2681 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 005D 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 005D 2681 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 0062 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 2681 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 005D 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 2681 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 005D 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 005D 2681 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D 2681 0062;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 005D 2681 0062;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n\n# L, ON, ON, R and (([)]\n0061 2680 0028 2681 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 05D0 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 2681 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 2681 0028 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 2681 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 05D0 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 2681 005B 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 05D0 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 2681 0029 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 05D0 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 2681 005D 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 005D 2681 05D0;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 05D0 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 2681 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 2681 005B 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 2681 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 05D0 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 2681 0029 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 2681 05D0 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 2681 005D 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 005D 2681 05D0;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 05D0 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 2681 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 2681 0029 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 2681 05D0 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 2681 005D 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 005D 2681 05D0;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 2681 05D0 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 2681 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 2681 005D 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 005D 2681 05D0;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 005D 2681 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 005D 2681 05D0;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, L, ON and (([)]\n0061 2680 0028 0062 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 2681 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 2681 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 2681 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 2681 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 005D 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 2681 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0062 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 2681 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 2681 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 2681 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 2681 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 005D 2681;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 2681 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 2681 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 2680 0062 2681 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 2681 0028 005B 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 2681 005B 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 2681 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 2681 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 005D 2681;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 2681 005B 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 0062 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 0062 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 2681 005B 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 0062 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 0062 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 0062 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 0062 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 0062 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 0062 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 2680 0062 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 2681 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 2681 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 2681 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 005D 2681;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 2681 0029 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 2681 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 005D 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 0062 2681 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 0062 005D 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 2681 0029 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 2681 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 005D 2681;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 0062 2681 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 0062 005D 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 0062 2681 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 0062 005D 2681;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0062 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 2681 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 2681 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 005D 2681;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0029 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 0062 2681 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 0062 005D 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 0062 2681 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 0062 005D 2681;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 0062 2681 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 0062 005D 2681;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, L, L and (([)]\n0061 2680 0028 0062 0028 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0062 0028 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 2680 0028 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0062 0028 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 2680 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 2680 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 0063 005B 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0062 0028 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0062 0028 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0062 0028 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 2680 0028 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 2680 0028 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 0062 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 2680 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 2680 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 0062 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 0062 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 0062 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 2680 0062 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0063 0029 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 2680 0062 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 0063 005D;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 005D 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 2 1 2 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 0063 005D;1;1;1 1 2 2 2 2 1 2 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 005D 0063;1;1;1 1 2 2 2 2 1 1 2;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0062 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0029 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 0062 005D 0063;1;1;1 1 1 1 2 2 2 2 2;4 5 6 7 8 3 2 1 0\n\n# L, ON, L, R and (([)]\n0061 2680 0028 0062 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 05D0 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 05D0 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 05D0 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 05D0 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0062 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0062 0028 005B 0029 005D 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 2680 0028 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 05D0 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 05D0 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 2680 0028 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0062 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 05D0 0028 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 05D0 005B 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 05D0 0029 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 05D0 005D;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0062 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0062 0028 005B 0029 005D 05D0;1;1;2 2 2 2 1 1 1 1 1;8 7 6 5 4 0 1 2 3\n0061 0028 2680 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 05D0 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 05D0 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 2680 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 05D0 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 0062 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 05D0 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 2680 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 05D0 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0062 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 0062 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 2680 0062 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 05D0 0028 005B 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 05D0 005B 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 05D0 0029 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 05D0 005D;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0062 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0062 0028 005B 0029 005D 05D0;1;1;1 2 2 2 1 1 1 1 1;8 7 6 5 4 1 2 3 0\n0028 0061 2680 0028 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 05D0 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 05D0 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 0062 005B 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 05D0 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0062 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 0062 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 2680 0028 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 0062 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 05D0 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 05D0 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 0062 005B 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 05D0 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0062 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 0062 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 2680 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 0062 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 05D0 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0062 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 0062 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 0062 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 0062 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 0062 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 2680 0062 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 05D0 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 0062 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 0062 005B 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 2680 005B 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 05D0 0029 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 05D0 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0062 0029 005D 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 2680 005B 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 0062 05D0 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 0062 005D 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 05D0 0029 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 05D0 005D;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0062 0029 005D 05D0;1;1;1 1 2 2 2 2 1 1 1;8 7 6 2 3 4 5 1 0\n0028 0028 0061 005B 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 0062 05D0 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 0062 005D 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 0062 05D0 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 0062 005D 05D0;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0062 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 05D0 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 05D0 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0062 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0062 0029 005D 05D0;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 005B 0061 2680 0029 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 0062 05D0 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 0062 005D 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 0062 05D0 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 0062 005D 05D0;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 0062 05D0 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 0029 0061 2680 0062 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 0062 005D 05D0;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n\n# L, ON, R, ON and (([)]\n0061 2680 0028 05D0 2681 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 2681 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 2681 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 2681 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 05D0 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 05D0 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 2681 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 2681 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 2681 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 05D0 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 05D0 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 2681 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 2681 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 05D0 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 05D0 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 2681 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 2681 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 05D0 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 05D0 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 2681 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 05D0 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 005D 2681;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 05D0 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, L and (([)]\n0061 2680 0028 05D0 0062 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0062 0028 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 05D0 0028 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0062 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0062 0028 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 05D0 0028 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 05D0 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 0029 05D0 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 05D0 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 2680 05D0 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0062 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0062 0028 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 05D0 0028 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 05D0 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 0029 05D0 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 05D0 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 2680 05D0 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 0062 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 05D0 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 0029 05D0 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 05D0 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 2680 05D0 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0062 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 05D0 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 0029 05D0 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 05D0 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 2680 05D0 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 0062 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 05D0 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 005D 0062;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 2680 05D0 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, ON, R, R and (([)]\n0061 2680 0028 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 2680 0028 05D0 0028 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 2680 0028 05D0 0028 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 2680 0028 05D0 0028 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 2680 0028 05D0 0028 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 2680 0028 0028 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 2680 0028 0028 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 2680 0028 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 2680 0028 0028 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 2680 05D0 0028 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 2680 05D0 0028 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 2680 05D0 0028 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 2680 05D0 0028 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 2680 0028 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 2680 0028 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 2680 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 2680 0028 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0028 2680 05D0 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 05D0 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 2680 005B 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 2680 005B 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 2680 05D0 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 005B 2680 0029 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 005B 0029 2680 05D0 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 2680 05D0 0028 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 2680 05D0 0028 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 0061 2680 05D0 0028 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 0061 2680 05D0 0028 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 2680 0028 05D0 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 05D0 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 2680 0028 005B 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 2680 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 2680 0028 005B 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 0028 2680 05D0 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 05D0 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 2680 005B 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 2680 005B 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 2680 05D0 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 005B 2680 0029 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 005B 0029 2680 05D0 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0061 2680 05D0 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 05D0 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 2680 005B 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 2680 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 2680 005B 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 2680 05D0 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 005B 2680 0029 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 005B 0029 2680 05D0 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 2680 05D0 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 2680 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0061 2680 0029 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 2680 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0061 0029 2680 05D0 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 2680 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0029 0061 2680 05D0 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, ON and (([)]\n0061 0028 0062 2680 0028 2681 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 2681 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 2681 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 2681 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 005D 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 2681 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 2681 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 005D 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 2681 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 005D 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 005D 2681;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 2681 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 005D 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 2681 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 005D 2681;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 005D 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 005D 2681;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 005B 2681 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 2681 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 2680 005B 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 005B 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 2680 005D 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 2681 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 005D 2681;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 2680 005D 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 2680 005D 2681;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 2680 0029 2681 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 2681 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 2680 0029 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 005D 2681;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 2680 005D 2681;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 2680 005D 2681;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 005D 2681;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 2680 005D 2681;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, ON, L and (([)]\n0061 0028 0062 2680 0063 0028 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0063 0028 005B 0029 005D;1;1;2 2 2 2 2 1 1 1 1;8 7 6 5 0 1 2 3 4\n0061 0028 0062 2680 0028 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 2680 0028 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 2680 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 0063 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 2680 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0063 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 005D 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 0063 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 005B 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 005D 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 005D 2680 0063;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 0063 005B 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 2680 005B 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 2680 005B 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 2680 005B 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 2680 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 2680 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 005D 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0063 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 2680 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 2680 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 005D 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 2680 0063 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 005B 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 2680 005D 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 005D 2680 0063;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 005B 0062 2680 0063 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0063 0029 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 0028 0061 005B 0062 2680 0029 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 0063 005D;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 2680 0029 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 005D 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 2680 0063 005D;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 2680 005D 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 005D 2680 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 2680 0063 005D;1;1;1 1 2 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 2680 005D 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 005D 2680 0063;1;1;1 1 2 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 0063 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 2680 0063 005D;1;1;1 1 1 2 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 005D 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 2680 005D 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D 2680 0063;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 005D 2680 0063;1;1;1 1 1 2 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n\n# L, L, ON, R and (([)]\n0061 0028 0062 2680 05D0 0028 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 05D0 0028 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 05D0 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 05D0 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 05D0 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 2680 0028 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 2680 0028 005B 0029 005D 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 05D0 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 05D0 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 05D0 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 2680 005B 0029 005D 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 05D0 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 05D0 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 2680 0029 005D 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 05D0 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 2680 005D 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 005D 2680 05D0;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 2680 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 05D0 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 2680 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 05D0 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 2680 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 05D0 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 2680 005D 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 005D 2680 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 05D0 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 2680 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 05D0 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 2680 005D 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 005D 2680 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 05D0 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 2680 005D 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 005D 2680 05D0;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0028 0061 0028 0062 2680 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 05D0 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 05D0 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 2680 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 2680 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 2680 005B 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 05D0 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 2680 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 2680 05D0 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 2680 005D 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 005D 2680 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 05D0 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 2680 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 2680 05D0 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 2680 005D 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 005D 2680 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 2680 05D0 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 2680 005D 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 005D 2680 05D0;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 2680 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 05D0 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 2680 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 05D0 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 2680 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 2680 0029 005D 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 2680 05D0 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 2680 005D 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 005D 2680 05D0;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 2680 05D0 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 2680 005D 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 005D 2680 05D0;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 2680 05D0 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 2680 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 2680 005D 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 005D 2680 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 005D 2680 05D0;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, L, ON and (([)]\n0061 0028 0062 0028 0063 2680 005B 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 2680 005B 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 2680 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 2680 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 0029 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 005B 0029 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0063 2680 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 2680 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 0029 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0063 0029 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0063 2680 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 2680 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 0029 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0063 0029 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 2680 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 005D 2680;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 0063 2680 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 2680 0029 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 0063 0029 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 2680 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0063 0029 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 005D 2680;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 0063 2680 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 0063 005D 2680;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 0063 2680 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 0063 005D 2680;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 0029 0063 2680 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 0063 2680 005D;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 0063 005D 2680;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 0063 005D 2680;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n\n# L, L, L, L and (([)]\n0061 0028 0062 0028 0063 005B 0064 0029 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0064 0029 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 0029 0064 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 0064 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 0063 005B 0029 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 0064 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 0064 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0062 0028 005B 0063 0029 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 0064 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 0064 005D;1;1;2 2 2 2 2 2 2 2 1;8 0 1 2 3 4 5 6 7\n0061 0028 0028 0062 005B 0063 0029 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 005D 0064;1;1;2 2 2 2 2 2 2 2 2;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 0064 005D;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 0064 005D;1;1;1 2 2 2 2 2 2 2 1;8 1 2 3 4 5 6 7 0\n0028 0061 0028 0062 005B 0063 0029 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 005D 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 0062 005B 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 0063 005D 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0061 0028 005B 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 0063 005D 0064;1;1;1 2 2 2 2 2 2 2 2;1 2 3 4 5 6 7 8 0\n0028 0028 0061 005B 0062 0029 0063 005D 0064;0;0;0 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 0063 005D 0064;1;1;1 1 2 2 2 1 2 2 2;6 7 8 5 2 3 4 1 0\n\n# L, L, L, R and (([)]\n0061 0028 0062 0028 0063 05D0 005B 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 05D0 005B 0029 005D;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 005B 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 05D0 0029 005D;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 0063 005B 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 0063 005B 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 0063 005B 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0063 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 05D0 0029 005D;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0063 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0063 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0063 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0062 0028 005B 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 0063 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0063 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 05D0 0029 005D;1;1;2 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0061 0028 0028 0062 005B 0063 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0063 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0063 0029 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 0062 005B 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 0063 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 05D0 005D;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0061 0028 0028 005B 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 0063 005D 05D0;1;1;2 2 2 2 2 2 2 1 1;8 7 0 1 2 3 4 5 6\n0028 0061 0028 0062 005B 0063 05D0 0029 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 05D0 0029 005D;1;1;1 2 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0061 0028 0062 005B 0063 0029 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0063 0029 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0063 0029 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 0063 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 0062 005B 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 0063 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 0063 05D0 005D;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0061 0028 005B 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 0063 005D 05D0;1;1;1 2 2 2 2 2 2 1 1;8 7 1 2 3 4 5 6 0\n0028 0028 0061 005B 0062 0029 0063 05D0 005D;0;0;0 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 0063 05D0 005D;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 0063 005D 05D0;0;0;0 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 0063 005D 05D0;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n\n# L, L, R, ON and (([)]\n0061 0028 0062 05D0 2680 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 2680 0028 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 2680 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 2680 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0029 2680 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0029 005D 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 2680 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 2680 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 2680 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 2680 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 005D 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 2680 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 2680 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 005D 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 05D0 2680 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 05D0 005D 2680;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 2680 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 2680 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 2680 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 2680 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 005D 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 2680 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 2680 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 005D 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 05D0 2680 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 05D0 005D 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 2680 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 2680 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 005D 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 05D0 2680 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 05D0 005D 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 05D0 2680 005D;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 05D0 005D 2680;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0028 0061 0028 0062 05D0 2680 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 2680 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 2680 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 2680 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 005D 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 2680 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 2680 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 005D 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 05D0 2680 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 05D0 005D 2680;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 2680 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 2680 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 005D 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 05D0 2680 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 05D0 005D 2680;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 05D0 2680 005D;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 05D0 005D 2680;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 05D0 2680 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 2680 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 05D0 0029 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 2680 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 05D0 0029 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 005D 2680;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 05D0 2680 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 05D0 005D 2680;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 05D0 2680 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 05D0 005D 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 2680 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 05D0 2680 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 005D 2680;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 05D0 005D 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, L, R, L and (([)]\n0061 0028 0062 05D0 0063 0028 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0063 0028 005B 0029 005D;1;1;2 2 2 1 2 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 0063 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 0063 005B 0029 005D;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0063 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0063 0029 005D;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0029 0063 005D;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 05D0 0028 005B 0029 005D 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 0063 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 0063 005B 0029 005D;1;1;2 2 2 1 1 2 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0063 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0063 0029 005D;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 0063 005D;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 005D 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0063 0029 005D;1;1;2 2 2 1 1 1 2 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 0063 005D;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 005D 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 05D0 0063 005D;1;1;2 2 2 1 1 1 1 2 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 0029 05D0 005D 0063;1;1;2 2 2 1 1 1 1 1 2;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 0063 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 0063 005B 0029 005D;1;1;2 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0063 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0063 0029 005D;1;1;2 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 0063 005D;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 005D 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0063 0029 005D;1;1;2 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 0063 005D;1;1;2 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 005D 0063;1;1;2 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 05D0 0063 005D;1;1;2 2 2 2 2 2 1 2 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 0062 005B 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 0029 05D0 005D 0063;1;1;2 2 2 2 2 2 1 1 2;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0063 0029 005D;1;1;2 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 0063 005D;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 005D 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 05D0 0063 005D;1;1;2 2 2 2 2 2 1 2 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 0029 05D0 005D 0063;1;1;2 2 2 2 2 2 1 1 2;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 05D0 0063 005D;1;1;2 2 2 2 2 2 1 2 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 0062 05D0 005D 0063;1;1;2 2 2 2 2 2 1 1 2;8 7 6 0 1 2 3 4 5\n0028 0061 0028 0062 05D0 0063 005B 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 0063 005B 0029 005D;1;1;1 2 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0063 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0063 0029 005D;1;1;1 2 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 0063 005D;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 005D 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0063 0029 005D;1;1;1 2 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 0063 005D;1;1;1 2 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 005D 0063;1;1;1 2 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 05D0 0063 005D;1;1;1 2 2 2 2 2 1 2 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 0062 005B 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 0029 05D0 005D 0063;1;1;1 2 2 2 2 2 1 1 2;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0063 0029 005D;1;1;1 2 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 0063 005D;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 005D 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 05D0 0063 005D;1;1;1 2 2 2 2 2 1 2 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 0029 05D0 005D 0063;1;1;1 2 2 2 2 2 1 1 2;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 05D0 0063 005D;1;1;1 2 2 2 2 2 1 2 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 0062 05D0 005D 0063;1;1;1 2 2 2 2 2 1 1 2;8 7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 05D0 0063 0029 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0063 0029 005D;1;1;1 1 2 2 2 1 2 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 05D0 0029 0063 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 0063 005D;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 05D0 0029 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 005D 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 05D0 0063 005D;1;1;1 1 2 2 2 1 1 2 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 0029 05D0 005D 0063;1;1;1 1 2 2 2 1 1 1 2;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 05D0 0063 005D;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 0062 05D0 005D 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 0063 005D;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 05D0 0063 005D;1;1;1 1 1 2 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 005D 0063;0;0;0 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 0062 05D0 005D 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, L, R, R and (([)]\n0061 0028 0062 05D0 0028 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0062 05D0 0028 05D1 005B 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0062 05D0 0028 005B 05D1 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 05D1 005D;0;0;0 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0061 0028 0062 05D0 0028 005B 0029 05D1 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 05D0 0028 005B 0029 005D 05D1;0;0;0 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0061 0028 0062 05D0 0028 005B 0029 005D 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0062 0028 05D0 005B 05D1 0029 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 05D1 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 05D0 005B 0029 005D 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 05D1 005D;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0062 0028 005B 05D0 0029 005D 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0062 0028 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0062 0028 005B 0029 05D0 005D 05D1;1;1;2 2 2 1 1 1 1 1 1;8 7 6 5 4 3 0 1 2\n0061 0028 0028 0062 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0028 0062 05D0 005B 05D1 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 05D1 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 05D0 005B 0029 005D 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 05D1 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 0062 005B 05D0 0029 005D 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 0062 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 0062 005B 0029 05D0 005D 05D1;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0062 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 05D1 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0062 05D0 0029 005D 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 005B 0062 0029 05D0 005D 05D1;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0061 0028 0028 005B 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 005B 0029 0062 05D0 005D 05D1;1;1;2 2 2 2 2 2 1 1 1;8 7 6 0 1 2 3 4 5\n0028 0061 0028 0062 05D0 005B 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 0028 0062 05D0 005B 05D1 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 05D1 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 05D0 005B 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 05D0 005B 0029 005D 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 05D1 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 0062 005B 05D0 0029 005D 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 0062 005B 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 0062 005B 0029 05D0 005D 05D1;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0062 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 05D1 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0062 05D0 0029 005D 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 005B 0062 0029 05D0 005D 05D1;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0061 0028 005B 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 005B 0029 0062 05D0 005D 05D1;1;1;1 2 2 2 2 2 1 1 1;8 7 6 1 2 3 4 5 0\n0028 0028 0061 005B 0062 05D0 0029 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 05D1 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 05D0 0029 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0062 05D0 0029 005D 05D1;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0062 0029 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 005B 0062 0029 05D0 005D 05D1;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 0028 0061 005B 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 005B 0029 0062 05D0 005D 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 0062 05D0 005D 05D1;0;0;0 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0061 0029 0062 05D0 005D 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, ON and (([)]\n0061 0028 05D0 2680 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 2681 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 2681 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 2681 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 2680 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 2680 005D 2681;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 2681 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 2681 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 2681 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 2680 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 2680 005D 2681;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 2680 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 2680 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 005D 2681;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 2680 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, L and (([)]\n0061 0028 05D0 2680 0062 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0062 0028 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 2680 0028 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 2680 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 2680 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 2680 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 2680 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 005D 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 2680 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 2680 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 005D 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 2680 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 2680 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 005D 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 2680 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 2680 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 005D 2680 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0062 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0062 0028 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 2680 0028 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 2680 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 2680 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 2680 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 2680 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 005D 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 2680 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 2680 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 005D 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 2680 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 2680 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 005D 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 2680 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 2680 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 005D 2680 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 0062 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 2680 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 2680 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 2680 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 005D 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 2680 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 2680 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 005D 2680 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0062 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 2680 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 2680 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 2680 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 005D 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 0062 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 2680 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 005D 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 2680 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D 2680 0062;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 005D 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, ON, R and (([)]\n0061 0028 05D0 2680 05D1 0028 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0061 0028 05D0 2680 05D1 0028 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 2680 0028 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 2680 0028 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 2680 0028 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 2680 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 2680 0028 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 2680 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 2680 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 2680 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 2680 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 2680 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 2680 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 2680 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 005D 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 2680 05D1 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 2680 005B 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 2680 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 2680 005B 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0061 0028 0028 05D0 005B 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0061 0028 0028 005B 05D0 2680 05D1 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 2680 0029 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0061 0028 0028 005B 0029 05D0 2680 05D1 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 005B 0029 05D0 2680 005D 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0061 0028 0028 005B 0029 05D0 005D 2680 05D1;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 05D1 0028 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0061 05D0 2680 05D1 0028 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 2680 0028 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 2680 0028 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 2680 0028 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 2680 0028 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 2680 0028 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 05D1 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 2680 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 2680 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 2680 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 2680 005B 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 2680 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 05D1 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 2680 0029 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 05D1 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 2680 005D 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 005D 2680 05D1;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 2680 05D1 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 2680 005B 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 2680 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 2680 005B 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0061 0028 05D0 005B 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0061 0028 005B 05D0 2680 05D1 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 2680 0029 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0061 0028 005B 0029 05D0 2680 05D1 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 005B 0029 05D0 2680 005D 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0061 0028 005B 0029 05D0 005D 2680 05D1;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 05D1 005B 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 2680 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 2680 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 2680 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 2680 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 05D1 0029 005D;0;0;0 0 0 1 1 1 1 0 0;0 1 2 6 5 4 3 7 8\n0028 0028 0061 05D0 005B 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 0061 005B 05D0 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 2680 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 2680 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 005D 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 0061 005B 0029 05D0 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 005B 0029 05D0 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 0061 005B 0029 05D0 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 05D1 0029 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0061 05D0 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 2680 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 2680 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 005D 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 0061 0029 05D0 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 2680 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0061 0029 05D0 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 005D 2680 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0061 0029 05D0 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 05D1 005D;0;0;0 0 0 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 0029 0061 05D0 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 2680 005D 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0029 0061 05D0 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 005D 2680 05D1;0;0;0 0 0 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 0029 0061 05D0 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, ON and (([)]\n0061 0028 05D0 0062 2680 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 2680 0028 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 2680 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 2680 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 2680 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 005D 2680;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 2680 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 2680 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 2680 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 005D 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 2680 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 2680 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 005D 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 0062 2680 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 0062 005D 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 2680 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 2680 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 2680 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 005D 2680;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 2680 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 2680 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 005D 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 0062 2680 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 0062 005D 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 2680 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 2680 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 005D 2680;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 0062 2680 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 0062 005D 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 0062 2680 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 0062 005D 2680;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 2680 0028 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 2680 0028 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 2680 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 2680 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 2680 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 005D 2680;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 2680 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 2680 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 2680 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 2680 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 005D 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 2680 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 2680 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 005D 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 0062 2680 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 0062 005D 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 2680 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 2680 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 2680 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 005D 2680;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 2680 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 2680 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 005D 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 0062 2680 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 0062 005D 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 2680 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 2680 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 005D 2680;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 0062 2680 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 0062 005D 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 0062 2680 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 0062 005D 2680;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 2680 005B 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 2680 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 2680 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 2680 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 005D 2680;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 2680 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 2680 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 2680 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 005D 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 0062 2680 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 0062 005D 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 2680 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 2680 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 005D 2680;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 0062 2680 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 0062 005D 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 0062 2680 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 0062 005D 2680;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 2680 0029 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 2680 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 2680 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 005D 2680;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 2680 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 0062 2680 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 005D 2680;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 0062 005D 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 0062 2680 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 0062 005D 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 2680 005D;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 0062 2680 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 005D 2680;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 0062 005D 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, L, L and (([)]\n0061 0028 05D0 0062 0028 0063 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 0063 005B 0029 005D;1;1;2 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0061 0028 05D0 0062 0028 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0063 0029 005D;1;1;2 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 0063 005D;1;1;2 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 005D 0063;1;1;2 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0061 0028 05D0 0028 0062 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0063 0029 005D;1;1;2 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 0063 005D;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 005D 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 0063 005D;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 005D 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 0062 005D 0063;1;1;2 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0063 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0063 0029 005D;1;1;2 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 0063 005D;1;1;2 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 005D 0063;1;1;2 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 0063 005D;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 005D 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 0062 005D 0063;1;1;2 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 0063 005D;1;1;2 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 005D 0063;1;1;2 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 0062 005D 0063;1;1;2 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 0062 005D 0063;1;1;2 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 0063 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 0063 005B 0029 005D;1;1;1 2 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0061 05D0 0062 0028 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0063 0029 005D;1;1;1 2 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 0063 005D;1;1;1 2 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 005D 0063;1;1;1 2 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 0061 05D0 0028 0062 005B 0063 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0063 0029 005D;1;1;1 2 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 0063 005D;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 005D 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 0063 005D;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 005D 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 0062 005D 0063;1;1;1 2 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0063 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0063 0029 005D;1;1;1 2 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 0063 005D;1;1;1 2 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 005D 0063;1;1;1 2 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 0063 005D;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 005D 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 0062 005D 0063;1;1;1 2 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 0063 005D;1;1;1 2 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 005D 0063;1;1;1 2 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 0062 005D 0063;1;1;1 2 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 0062 005D 0063;1;1;1 2 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0063 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0063 0029 005D;1;1;1 1 2 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 0063 005D;1;1;1 1 2 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 005D 0063;1;1;1 1 2 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 0063 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 0063 005D;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 005D 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 0063 005D;1;1;1 1 2 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 005D 0063;1;1;1 1 2 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 0062 005D 0063;1;1;1 1 2 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 0063 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 0063 005D;1;1;1 1 1 2 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 005D 0063;1;1;1 1 1 2 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 005D 0063;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 005D 0063;0;0;0 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# L, R, L, R and (([)]\n0061 0028 05D0 0062 05D1 0028 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 05D1 0028 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 05D1 005B 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 05D1 0029 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 05D1 005D;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0062 0028 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0062 0028 005B 0029 005D 05D1;1;1;2 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 05D1 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 05D1 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 05D1 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 0062 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 0062 005B 0029 005D 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 05D1 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 05D1 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0062 0029 005D 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 0062 05D1 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 0029 0062 005D 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 05D1 005B 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 05D1 0029 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 05D1 005D;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 0062 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 0062 005B 0029 005D 05D1;1;1;2 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 05D1 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 05D1 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0062 0029 005D 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 0062 05D1 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 0062 005D 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 05D1 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 05D1 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0062 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0062 0029 005D 05D1;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 0062 05D1 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 0062 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 0062 005D 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 0062 05D1 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 0029 05D0 0062 005D 05D1;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 05D1 0028 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 05D1 0028 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 05D1 005B 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 05D1 0029 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 05D1 005D;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0062 0028 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0062 0028 005B 0029 005D 05D1;1;1;1 2 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 05D1 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 05D1 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 05D1 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 0062 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 0062 005B 0029 005D 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 05D1 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 05D1 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0062 0029 005D 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 0062 05D1 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 0029 0062 005D 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 05D1 005B 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 05D1 0029 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 05D1 005D;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 0062 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 0062 005B 0029 005D 05D1;1;1;1 2 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 05D1 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 05D1 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0062 0029 005D 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 0062 05D1 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 0062 005D 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 05D1 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 05D1 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0062 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0062 0029 005D 05D1;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 0062 05D1 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 0062 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 0062 005D 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 0062 05D1 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 0029 05D0 0062 005D 05D1;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 05D1 005B 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 05D1 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 05D1 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 05D1 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 0062 005B 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 0062 005B 0029 005D 05D1;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 05D1 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 05D1 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0062 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0062 0029 005D 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 0062 05D1 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 0062 005D 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 05D1 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 05D1 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0062 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0062 0029 005D 05D1;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 0062 05D1 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 0062 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 0062 005D 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 0062 05D1 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 0029 05D0 0062 005D 05D1;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 05D1 0029 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 05D1 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 05D1 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0062 0029 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0062 0029 005D 05D1;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 0062 05D1 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 0062 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 0062 005D 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 0062 05D1 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 0029 05D0 0062 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 0029 05D0 0062 005D 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 05D1 005D;0;0;0 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 0062 05D1 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 0061 05D0 0062 005D 05D1;0;0;0 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 0061 05D0 0062 005D 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, ON and (([)]\n0061 0028 05D0 0028 05D1 2680 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 2680 005B 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 2680 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 005B 2680 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 005B 0029 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 005B 0029 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 2680 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 05D1 2680 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 05D1 0029 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 05D1 0029 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 2680 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 2680 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 2680 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 005D 2680;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 2680 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 005D 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 05D1 2680 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 05D1 005D 2680;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 2680 005B 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 2680 005B 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 2680 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 005B 2680 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 005B 0029 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 005B 0029 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 2680 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 05D1 2680 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 05D1 0029 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 05D1 0029 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 2680 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 005D 2680;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 2680 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 2680 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 2680 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 005D 2680;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 2680 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 005D 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 05D1 2680 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 05D1 005D 2680;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 2680 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 2680 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 005D 2680;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 2680 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 005D 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 2680 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 005D 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 2680 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 005D 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# L, R, R, L and (([)]\n0061 0028 05D0 0028 05D1 0062 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 0062 005B 0029 005D;1;1;2 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0062 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 05D1 005B 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 005B 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 05D1 005B 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0062 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 05D0 0028 005B 05D1 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 05D1 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 05D1 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 0029 05D1 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0061 0028 05D0 0028 005B 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0062 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0062 0029 005D;1;1;2 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 0062 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 005D 0062;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 0062 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 05D1 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 005D 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 05D0 005B 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 0062 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 05D1 0062 005D;1;1;2 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 005D 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0061 0028 0028 005B 05D0 0029 05D1 005D 0062;1;1;2 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 0062 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 0062 005B 0029 005D;1;1;1 2 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0062 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 05D1 005B 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 005B 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 05D1 005B 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0062 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 05D0 0028 005B 05D1 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 05D1 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 05D1 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 0062 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 0029 05D1 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 005D 0062;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0061 05D0 0028 005B 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0062 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0062 0029 005D;1;1;1 2 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 0062 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 005D 0062;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 0062 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 05D1 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 005D 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 05D0 005B 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 0062 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 05D1 0062 005D;1;1;1 2 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 005D 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0061 0028 005B 05D0 0029 05D1 005D 0062;1;1;1 2 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0062 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 0062 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 005D 0062;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 0062 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 005D 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 05D0 005B 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 0062 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 005D 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 0061 005B 05D0 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 0062 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 005D 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0061 05D0 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# L, R, R, R and (([)]\n0061 0028 05D0 0028 05D1 005B 05D2 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 005B 05D2 0029 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 05D1 005B 0029 05D2 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 05D1 005B 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 05D1 005B 0029 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0061 0028 05D0 0028 005B 05D1 0029 05D2 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 05D1 0029 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 05D0 0028 005B 0029 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0061 0028 05D0 0028 005B 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 05D2 005D;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0061 0028 0028 05D0 005B 05D1 0029 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 05D0 005B 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0061 0028 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0061 0028 0028 005B 05D0 0029 05D1 005D 05D2;1;1;2 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 05D2 0029 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 005B 05D2 0029 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 05D1 005B 0029 05D2 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 05D1 005B 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 05D1 005B 0029 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 1 1 0;0 1 7 6 5 4 3 2 8\n0028 0061 05D0 0028 005B 05D1 0029 05D2 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 05D1 0029 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 05D0 0028 005B 0029 05D1 005D 05D2;0;0;0 0 1 1 1 1 1 1 1;0 1 8 7 6 5 4 3 2\n0028 0061 05D0 0028 005B 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 05D2 005D;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 0061 0028 05D0 005B 05D1 0029 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 05D0 005B 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0061 0028 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0061 0028 005B 05D0 0029 05D1 005D 05D2;1;1;1 2 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 0028 0061 05D0 005B 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 05D0 005B 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 05D0 005B 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 0061 005B 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 0061 005B 05D0 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0061 05D0 0029 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0061 05D0 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, ON and (([)]\n05D0 2680 0028 2681 0028 2682 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 2682 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 2682 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 2682 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 2682 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 2682 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 005D 2682;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 2682 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 2682 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 2682 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 2682 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 2682 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 005D 2682;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 2682 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 2682 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 005D 2682;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 005D 2682;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 2681 005D 2682;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, L and (([)]\n05D0 2680 0028 2681 0061 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 2681 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 0061 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0061 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 0061 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 005D 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 2681 0061;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 0061 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0061 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 2681 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0061 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0061 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 0061 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 005D 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D 2681 0061;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0061 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 0061 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 005D 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D 2681 0061;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 0061 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 2681 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 005D 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 2681 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D 2681 0061;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D 2681 0061;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 005D 2681 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, ON, R and (([)]\n05D0 2680 0028 2681 05D1 0028 005B 0029 005D;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 2680 0028 2681 05D1 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 2681 0028 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 2681 0028 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 2681 0028 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 2681 0028 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 05D1 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 05D1 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 05D1 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 005D 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 2681 05D1;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 05D1 005B 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 2681 05D1 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 05D1 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 2681 005B 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 2681 005B 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 2681 005B 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 2681 005B 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 05D1 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 2681 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 2681 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 005D 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 05D1 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 2681 0029 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 2681 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 005D 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 05D1 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 2681 005D 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 005D 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 005D 2681 05D1;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 05D1 0029 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 005B 2681 05D1 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 2681 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 2681 0029 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 2681 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 005D 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 005D 2681 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 2681 05D1 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 2681 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 2681 005D 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 005D 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 005D 2681 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 005D 2681 05D1;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 005B 0029 05D0 2680 005D 2681 05D1;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, ON and (([)]\n05D0 2680 0028 0061 2681 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 2681 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 2681 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 2681 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 2681 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 2681 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 2681 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 2681 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 2681 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 2681 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 2681 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 2681 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 2681 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 2681 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 0061 2681 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 0061 005D 2681;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, L, L and (([)]\n05D0 2680 0028 0061 0028 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 2680 0028 0061 0028 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 2680 0028 0028 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 2680 0061 0028 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 2680 0028 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 2680 0061 0028 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n0028 05D0 2680 0028 0061 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# R, ON, L, R and (([)]\n05D0 2680 0028 0061 05D1 0028 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 05D1 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0061 0028 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0061 0028 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 05D1 0028 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 05D1 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0061 0028 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0061 0028 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 0061 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0061 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 0061 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 0061 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 05D1 0028 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 05D1 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0061 0028 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0061 0028 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 0061 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 0061 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0061 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 0061 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 0061 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 05D1 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 0061 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 0061 005B 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0061 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 0061 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 0061 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 05D1 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0061 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0061 0029 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 0061 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 0061 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 0061 05D1 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 0061 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 2680 0061 005D 05D1;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, ON and (([)]\n05D0 2680 0028 05D1 2681 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 2681 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 2681 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 2681 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 005D 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 2681 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 2681 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 2681 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 2681 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 2681 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 005D 2681;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 2681 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 2681 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 2681 0028 005B 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 2681 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 2681 005B 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 2681 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 2681 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 005D 2681;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 2681 005B 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 2681 005B 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 2681 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 2681 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 2681 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 005D 2681;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 2681 0029 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 2681 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 005D 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 2681 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 005D 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 2681 0029 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 2681 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 005D 2681;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 2681 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 005D 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 2681 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 005D 2681;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 2681 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 2681 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 005D 2681;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 2681 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 005D 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 2681 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 005D 2681;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 2681 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0029 05D0 2680 05D1 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 005D 2681;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0029 05D0 2680 05D1 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, L and (([)]\n05D0 2680 0028 05D1 0061 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 0061 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0061 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 0061 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 005D 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 2680 0028 05D1 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 0061 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0061 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0061 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 2680 0028 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 2680 0028 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0061 0028 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 0061 005B 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0061 0029 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 0061 005D;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 005D 0061;0;0;1 1 1 1 0 0 0 0 0;3 2 1 0 4 5 6 7 8\n05D0 0028 2680 05D1 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 0061 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0061 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0061 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 2680 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 2680 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 0061 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0061 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0061 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 2680 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 2680 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0061 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0061 0028 005B 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 0061 005B 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0061 0029 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 0061 005D;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 005D 0061;0;0;0 1 1 1 0 0 0 0 0;0 3 2 1 4 5 6 7 8\n0028 05D0 2680 05D1 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 0061 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0061 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0061 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 2680 0028 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 2680 0028 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 0061 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0061 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0061 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 2680 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 2680 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0061 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 0061 005B 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0061 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 0061 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 005D 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0061 0029 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 0061 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 005D 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 0061 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 005D 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 2680 005B 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0061 0029 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 0061 005D;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 005D 0061;0;0;0 0 1 1 1 1 0 0 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 0061 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 005D 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 0061 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 005D 0061;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0061 0029 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 0061 005D;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 005D 0061;0;0;0 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 0061 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 005D 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 2680 0029 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 0061 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 005D 0061;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 0061 005D;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0029 05D0 2680 05D1 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 005D 0061;0;0;0 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 005B 0029 05D0 2680 05D1 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, ON, R, R and (([)]\n05D0 2680 0028 05D1 0028 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 05D1 0028 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 05D1 0028 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 05D1 0028 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 05D1 0028 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 2680 0028 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 2680 0028 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 05D1 0028 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 05D1 0028 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 05D1 0028 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 05D1 0028 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 2680 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 2680 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 2680 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 2680 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 05D2 005B 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 05D1 0028 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 05D1 0028 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 05D1 0028 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 05D1 0028 005B 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 05D1 0028 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 05D1 005B 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 2680 0028 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 05D1 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 2680 0028 005B 0029 05D1 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 2680 0028 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 05D1 005B 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 2680 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 05D1 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 2680 005B 0029 05D1 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 2680 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 05D1 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 2680 0029 05D1 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 2680 05D1 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 05D2 0029 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 2680 05D1 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 05D2 005D;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 05D1 005B 0029 005D 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 2680 05D1 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 0 1 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 2680 005B 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 2680 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 2680 005B 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 05D2 005D;0;0;0 0 1 1 1 1 0 1 0;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 05D1 0029 005D 05D2;0;0;0 0 1 1 1 1 0 0 1;0 1 5 4 3 2 6 7 8\n0028 0028 05D0 005B 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 2680 0029 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 005B 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 2680 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 005B 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 05D2 005D;0;0;0 0 0 1 1 1 0 1 0;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 05D1 0029 005D 05D2;0;0;0 0 0 1 1 1 0 0 1;0 1 2 5 4 3 6 7 8\n0028 0028 005B 05D0 2680 05D1 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 2680 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 05D0 2680 0029 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 2680 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 05D0 0029 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 2680 05D1 005D 05D2;0;0;0 0 0 0 1 1 1 1 1;0 1 2 3 8 7 6 5 4\n0028 0028 005B 0029 05D0 2680 05D1 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, ON and (([)]\n05D0 0028 0061 2680 0028 2681 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 2681 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 2681 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 2680 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 005D 2681;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 2681 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 2681 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 2681 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 2681 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 2680 005D 2681;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 2681 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 2681 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 2680 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 005D 2681;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 2681 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 2681 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 2681 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 2680 005D 2681;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 2681 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 2680 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 005D 2681;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 2680 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 2681 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 2681 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 2680 005D 2681;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 005D 2681;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 2680 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 005D 2681;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 2680 005D 2681;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, ON, L and (([)]\n05D0 0028 0061 2680 0062 0028 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0062 0028 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n05D0 0028 0061 2680 0028 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 2680 0028 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 2680 0028 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 2680 0028 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 2680 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 2680 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 2680 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 2680 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 2680 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 2680 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 005D 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 2680 0062 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 2680 005B 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 2680 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0062 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 2680 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 2680 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 005D 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 0062 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 005D 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D 2680 0062;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0061 2680 0062 0028 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0062 0028 005B 0029 005D;1;1;1 1 2 2 2 1 1 1 1;8 7 6 5 2 3 4 1 0\n0028 05D0 0061 2680 0028 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 2680 0028 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 2680 0028 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 2680 0028 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 2680 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 0062 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 2680 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 2680 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 2680 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0062 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 2680 0062 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 2680 005D 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 005D 2680 0062;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 2680 0062 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 2680 005B 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 2680 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0062 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 2680 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 2680 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 005D 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 0062 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 005D 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D 2680 0062;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 0061 2680 0062 005B 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 0062 005B 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 2680 005B 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0062 0029 005D;1;1;1 1 1 2 2 2 2 1 1;8 7 3 4 5 6 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 2680 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 2680 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 005D 2680 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0062 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 2680 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 2680 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 005D 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 0062 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 2680 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 005D 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 2680 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D 2680 0062;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 005D 2680 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0062 0029 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 2680 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 2680 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 005D 2680 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 0062 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 2680 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 005D 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 2680 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D 2680 0062;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 005D 2680 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 0062 005D;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 2680 0062 005D;1;1;1 1 1 1 1 2 2 2 1;8 5 6 7 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 005D 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 2680 005D 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D 2680 0062;0;0;0 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 005D 2680 0062;1;1;1 1 1 1 1 2 2 2 2;5 6 7 8 4 3 2 1 0\n\n# R, L, ON, R and (([)]\n05D0 0028 0061 2680 05D1 0028 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 05D1 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 2680 0028 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 2680 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 2680 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 2680 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 2680 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 2680 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 2680 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 2680 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 2680 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 2680 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 005D 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 2680 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 2680 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 2680 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 005D 2680 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 005D 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 05D1 0028 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 05D1 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 2680 0028 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 2680 0028 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 05D1 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 2680 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 2680 005B 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 05D1 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 2680 0029 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 2680 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 2680 05D1 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 2680 005D 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 005D 2680 05D1;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 2680 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 2680 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 2680 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 2680 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 2680 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 005D 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 2680 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 2680 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 2680 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 005D 2680 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 005D 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 05D1 005B 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 05D1 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 2680 005B 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 2680 005B 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 05D1 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 2680 0029 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 2680 05D1 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 2680 005D 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 005D 2680 05D1;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 2680 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 2680 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 2680 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 005D 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 2680 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 2680 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 2680 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 005D 2680 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 005D 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 05D1 0029 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 05D1 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 2680 0029 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 2680 0029 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 2680 05D1 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 2680 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 2680 005D 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 005D 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 005D 2680 05D1;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 2680 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 2680 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 2680 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 005D 2680 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 005D 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 05D1 005D;0;0;0 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 2680 05D1 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 2680 005D 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 2680 005D 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 005D 2680 05D1;0;0;0 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 005D 2680 05D1;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, L, ON and (([)]\n05D0 0028 0061 0028 0062 2680 005B 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 2680 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 0062 005B 2680 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 2680 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 0062 005B 0029 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 005B 0029 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0062 2680 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 2680 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0062 0029 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0062 0029 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 0062 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 0062 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0028 0061 005B 0062 2680 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 2680 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0062 0029 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 2680 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0062 0029 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 005D 2680;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 0062 2680 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 0062 005D 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 2680 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 0062 2680 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 005D 2680;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 0062 005D 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 2680 005B 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 2680 005B 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 0062 005B 2680 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 2680 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 0062 005B 0029 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 005B 0029 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0062 2680 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 2680 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0062 0029 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0062 0029 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 0062 2680 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 0062 005D 2680;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0028 0061 005B 0062 2680 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 2680 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0062 0029 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 2680 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0062 0029 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 005D 2680;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 0062 2680 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 0062 005D 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 2680 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 0062 2680 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 005D 2680;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 0062 005D 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 2680 0029 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 2680 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 2680 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 005D 2680;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 0062 2680 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 0062 005D 2680;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 2680 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 0062 2680 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 005D 2680;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 0062 005D 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 2680 005D;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 0062 2680 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 005D 2680;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 0062 005D 2680;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, L, L and (([)]\n05D0 0028 0061 0028 0062 005B 0063 0029 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0063 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 0062 005B 0029 0063 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 0062 005B 0029 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0062 0029 0063 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n05D0 0028 0061 0028 005B 0062 0029 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0061 0028 005B 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 0062 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n05D0 0028 0028 0061 005B 0062 0029 0063 005D;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0062 0029 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 005D 0063;0;0;1 0 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 0063 0029 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0063 0029 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 0062 005B 0029 0063 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 0062 005B 0029 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0062 0029 0063 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 0063 005D;1;1;1 1 2 2 2 2 2 2 1;8 2 3 4 5 6 7 1 0\n0028 05D0 0061 0028 005B 0062 0029 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0061 0028 005B 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 0062 005D 0063;1;1;1 1 2 2 2 2 2 2 2;2 3 4 5 6 7 8 1 0\n0028 05D0 0028 0061 005B 0062 0029 0063 005D;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0062 0029 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 005D 0063;0;0;0 1 0 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 0063 005D;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 0063 005D;1;1;1 1 1 2 2 2 1 2 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 005D 0063;1;1;1 1 1 2 2 2 1 1 2;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 0062 005D 0063;1;1;1 1 1 2 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 005D 0063;0;0;0 0 1 0 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 005D 0063;0;0;0 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 0062 005D 0063;1;1;1 1 1 1 2 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# R, L, L, R and (([)]\n05D0 0028 0061 0028 0062 05D1 005B 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 05D1 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 005B 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 05D1 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 0062 005B 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 0062 005B 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 0062 005B 0029 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0062 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 05D1 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0062 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0062 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0062 0029 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 0062 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 0062 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0061 0028 005B 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 0062 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n05D0 0028 0028 0061 005B 0062 05D1 0029 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 05D1 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0062 0029 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 05D1 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0062 0029 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0062 0029 005D 05D1;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 0062 05D1 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 0062 005D 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 05D1 005D;0;0;1 0 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 0062 05D1 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 0062 005D 05D1;0;0;1 0 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 0062 005D 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 05D1 005B 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 05D1 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 05D1 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 0062 005B 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 0062 005B 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 0062 005B 0029 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0062 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 05D1 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0062 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0062 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0062 0029 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 0062 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 0062 05D1 005D;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0061 0028 005B 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 0062 005D 05D1;1;1;1 1 2 2 2 2 2 1 1;8 7 2 3 4 5 6 1 0\n0028 05D0 0028 0061 005B 0062 05D1 0029 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 05D1 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0062 0029 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 05D1 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0062 0029 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0062 0029 005D 05D1;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 0062 05D1 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 0062 005D 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 05D1 005D;0;0;0 1 0 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 0062 05D1 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 0062 005D 05D1;0;0;0 1 0 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 0062 005D 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0062 05D1 0029 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 05D1 0029 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 05D1 005D;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0062 0029 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0062 0029 005D 05D1;1;1;1 1 1 2 2 2 1 1 1;8 7 6 3 4 5 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 0062 05D1 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 0062 005D 05D1;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 05D1 005D;0;0;0 0 1 0 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 0062 05D1 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 0062 005D 05D1;0;0;0 0 1 0 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 0062 005D 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 05D1 005D;0;0;0 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 0062 05D1 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 0062 005D 05D1;0;0;0 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 0062 005D 05D1;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, R, ON and (([)]\n05D0 0028 0061 05D1 2680 0028 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 2680 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 2680 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 2680 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 2680 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 005D 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 2680 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 2680 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 2680 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 005D 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 2680 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 2680 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 005D 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 2680 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 005D 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 2680 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 2680 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 2680 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 005D 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 2680 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 2680 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 005D 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 2680 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 005D 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 2680 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 2680 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 005D 2680;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 2680 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 005D 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 2680 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 05D1 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 005D 2680;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 05D1 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 2680 0028 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 2680 0028 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 2680 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 2680 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 2680 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 005D 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 2680 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 2680 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 2680 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 2680 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 005D 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 2680 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 2680 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 2680 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 005D 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 2680 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 05D1 2680 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 005D 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 05D1 005D 2680;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 2680 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 2680 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 2680 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 005D 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 2680 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 2680 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 005D 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 2680 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 005D 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 2680 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 2680 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 005D 2680;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 2680 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 005D 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 2680 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 05D1 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 005D 2680;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 05D1 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 2680 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 2680 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 2680 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 005D 2680;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 2680 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 2680 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 005D 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 2680 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 05D1 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 005D 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 05D1 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 2680 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 2680 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 005D 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 2680 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 005D 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 2680 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 05D1 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 005D 2680;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 05D1 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 2680 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 2680 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 005D 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 2680 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 05D1 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 005D 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 05D1 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 2680 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 05D1 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 005D 2680;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 05D1 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 2680 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 05D1 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 005D 2680;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 05D1 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, L, R, L and (([)]\n05D0 0028 0061 05D1 0062 0028 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0062 0028 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 0062 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0062 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 0062 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 005D 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 05D1 0028 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 0062 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0062 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 0062 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 005D 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0062 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 0062 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 005D 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 0062 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 005D 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 0062 005B 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0062 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 0062 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 005D 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0062 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 0062 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 005D 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 0062 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 005D 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0062 0029 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 0062 005D;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 005D 0062;0;0;1 0 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 0062 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 05D1 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 005D 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 0029 05D1 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 0062 005D;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 05D1 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 005D 0062;0;0;1 0 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0029 0061 05D1 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0062 0028 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0062 0028 005B 0029 005D;1;1;1 1 2 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 0062 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0062 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 0062 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 005D 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 05D1 0028 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 0062 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 0062 005B 0029 005D;1;1;1 1 2 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0062 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 0062 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 005D 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0062 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0062 0029 005D;1;1;1 1 2 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 0062 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 005D 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 0062 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 05D1 0062 005D;1;1;1 1 2 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 005D 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 0029 05D1 005D 0062;1;1;1 1 2 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 0062 005B 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0062 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 0062 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 005D 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0062 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 0062 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 005D 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 0062 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 005D 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0062 0029 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 0062 005D;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 005D 0062;0;0;0 1 0 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 0062 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 05D1 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 005D 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 0029 05D1 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 0062 005D;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 05D1 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 005D 0062;0;0;0 1 0 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0029 0061 05D1 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 0062 005B 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 0062 005B 0029 005D;1;1;1 1 1 2 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0062 0029 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 0062 005D;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 005D 0062;0;0;0 0 1 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0062 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0062 0029 005D;1;1;1 1 1 2 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 0062 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 005D 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 0062 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 05D1 0062 005D;1;1;1 1 1 2 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 005D 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 0029 05D1 005D 0062;1;1;1 1 1 2 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0062 0029 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 0062 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 005D 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 0062 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 05D1 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 005D 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 0029 05D1 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 0062 005D;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 05D1 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 005D 0062;0;0;0 0 1 0 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 0061 05D1 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0062 0029 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0062 0029 005D;1;1;1 1 1 1 2 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 0062 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 005D 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 0062 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 05D1 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 005D 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 0029 05D1 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 0062 005D;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 05D1 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 005D 0062;0;0;0 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 0061 05D1 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 0062 005D;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 05D1 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 005D 0062;0;0;0 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 0029 05D0 0061 05D1 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, L, R, R and (([)]\n05D0 0028 0061 05D1 0028 05D2 005B 0029 005D;0;0;1 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n05D0 0028 0061 05D1 0028 05D2 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 05D2 0029 005D;0;0;1 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n05D0 0028 0061 05D1 0028 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 05D2 005D;0;0;1 0 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n05D0 0028 0061 05D1 0028 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 05D1 0028 005B 0029 005D 05D2;0;0;1 0 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n05D0 0028 0061 05D1 0028 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 05D2 0029 005D;0;0;1 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n05D0 0028 0061 0028 05D1 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 05D2 005D;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 05D1 005B 0029 005D 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 05D1 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 05D2 005D;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 05D1 0029 005D 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0061 0028 005B 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0061 0028 005B 0029 05D1 005D 05D2;0;0;1 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n05D0 0028 0061 0028 005B 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 05D2 0029 005D;0;0;1 0 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n05D0 0028 0028 0061 05D1 005B 05D2 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 05D2 005D;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 05D1 005B 0029 005D 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 05D1 005B 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 05D2 005D;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 05D1 0029 005D 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 0061 005B 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 0061 005B 0029 05D1 005D 05D2;0;0;1 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n05D0 0028 0028 0061 005B 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 05D2 005D;0;0;1 0 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 05D1 0029 005D 05D2;0;0;1 0 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 0061 05D1 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0061 0029 05D1 005D 05D2;0;0;1 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n05D0 0028 0028 005B 0061 0029 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 0061 05D1 005D 05D2;0;0;1 0 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n05D0 0028 0028 005B 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 05D2 005B 0029 005D;0;0;0 1 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 05D0 0061 05D1 0028 05D2 005B 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 05D2 0029 005D;0;0;0 1 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 05D0 0061 05D1 0028 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 05D2 005D;0;0;0 1 0 1 1 1 1 1 0;0 1 2 7 6 5 4 3 8\n0028 05D0 0061 05D1 0028 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 05D1 0028 005B 0029 005D 05D2;0;0;0 1 0 1 1 1 1 1 1;0 1 2 8 7 6 5 4 3\n0028 05D0 0061 05D1 0028 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 05D2 0029 005D;0;0;0 1 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 05D0 0061 0028 05D1 005B 05D2 0029 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 05D2 005D;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 05D1 005B 0029 005D 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 05D1 005B 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 05D2 005D;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 05D2 005D;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 05D1 0029 005D 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0061 0028 005B 05D1 0029 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0061 0028 005B 0029 05D1 005D 05D2;0;0;0 1 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 05D0 0061 0028 005B 0029 05D1 005D 05D2;1;1;1 1 2 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 05D2 0029 005D;0;0;0 1 0 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 05D0 0028 0061 05D1 005B 05D2 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 05D2 005D;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 05D1 005B 0029 005D 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 05D1 005B 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 05D2 005D;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 05D1 0029 005D 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 0061 005B 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 0061 005B 0029 05D1 005D 05D2;0;0;0 1 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 05D0 0028 0061 005B 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 05D2 005D;0;0;0 1 0 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 05D1 0029 005D 05D2;0;0;0 1 0 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 0061 05D1 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0061 0029 05D1 005D 05D2;0;0;0 1 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 05D0 0028 005B 0061 0029 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 0061 05D1 005D 05D2;0;0;0 1 0 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 05D0 0028 005B 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 05D2 0029 005D;0;0;0 0 1 0 1 1 1 0 0;0 1 2 3 6 5 4 7 8\n0028 0028 05D0 0061 05D1 005B 05D2 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 05D2 005D;0;0;0 0 1 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 05D1 005B 0029 005D 05D2;0;0;0 0 1 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 05D1 005B 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 05D2 005D;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 05D1 0029 005D 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 0061 005B 05D1 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 0061 005B 0029 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 0061 005B 0029 05D1 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 05D2 005D;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 05D1 0029 005D 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0061 05D1 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0061 0029 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 005B 0061 0029 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 0061 05D1 005D 05D2;0;0;0 0 1 0 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 05D0 005B 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 05D2 005D;0;0;0 0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 05D1 0029 005D 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0061 05D1 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0061 0029 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 05D0 0061 0029 05D1 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 0061 05D1 005D 05D2;0;0;0 0 0 1 0 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 05D0 0029 0061 05D1 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 0029 05D0 0061 05D1 005D 05D2;0;0;0 0 0 0 1 0 1 1 1;0 1 2 3 4 5 8 7 6\n0028 0028 005B 0029 05D0 0061 05D1 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, ON and (([)]\n05D0 0028 05D1 2680 0028 2681 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 2681 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 2681 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 2681 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 005D 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 2681 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 2681 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 005D 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 2681 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 005D 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 005D 2681;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 2681 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 005D 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 2681 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 005D 2681;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 005D 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 005D 2681;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 2681 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 005B 2681 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 005B 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 005B 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 005D 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 2681 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 005D 2681;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 005D 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 005D 2681;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 2681 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 2681 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 005D 2681;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 005D 2681;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 005D 2681;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 005D 2681;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 2680 005D 2681;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, L and (([)]\n05D0 0028 05D1 2680 0061 0028 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0061 0028 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 0061 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0061 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 0061 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 005D 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 2680 0028 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 0061 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0061 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 0061 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 005D 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0061 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 0061 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 005D 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 0061 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 005D 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 2680 0061;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 0061 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0061 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0061 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 0061 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 005D 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 2680 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0061 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 0061 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 005D 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 2680 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 0061 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 005D 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 2680 0061;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 0061 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0061 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 2680 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 2680 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0061 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 0061 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 005D 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D 2680 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0061 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 0061 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 005D 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D 2680 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 0061 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 005D 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D 2680 0061;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0061 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 0061 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 005D 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 0061 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 005D 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D 2680 0061;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 0061 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 005D 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D 2680 0061;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 0061 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 2680 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 005D 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 2680 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D 2680 0061;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 005D 2680 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, ON, R and (([)]\n05D0 0028 05D1 2680 05D2 0028 005B 0029 005D;0;0;1 1 1 1 1 0 0 0 0;4 3 2 1 0 5 6 7 8\n05D0 0028 05D1 2680 05D2 0028 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 2680 0028 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 2680 0028 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 2680 0028 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 2680 0028 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 2680 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 2680 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 2680 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 2680 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 05D2 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 2680 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 2680 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 05D2 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 05D2 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 005B 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 005D 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 2680 05D2;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 05D2 005B 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 05D2 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 005B 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 2680 005B 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 2680 005B 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 2680 005B 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 2680 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 2680 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 005D 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 05D2 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 2680 0029 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 2680 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 005D 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 05D2 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 005B 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 2680 005D 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 005D 2680 05D2;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 05D2 0029 005D;0;0;0 0 1 1 1 1 1 0 0;0 1 6 5 4 3 2 7 8\n0028 0028 05D0 005B 05D1 2680 05D2 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 05D2 005D;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 2680 0029 005D 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 2680 0029 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 05D2 005D;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 2680 005D 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 005D 2680 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 05D2 005D;0;0;0 0 1 0 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 05D0 005B 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 2680 005D 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 005B 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 005D 2680 05D2;0;0;0 0 1 0 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 05D0 005B 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 05D2 005D;0;0;0 0 0 1 0 1 1 1 0;0 1 2 3 4 7 6 5 8\n0028 0028 005B 05D0 0029 05D1 2680 05D2 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 2680 005D 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 05D0 0029 05D1 2680 005D 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 005D 2680 05D2;0;0;0 0 0 1 0 1 1 1 1;0 1 2 3 4 8 7 6 5\n0028 0028 005B 05D0 0029 05D1 005D 2680 05D2;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, ON and (([)]\n05D0 0028 05D1 0061 2680 0028 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 2680 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 2680 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 2680 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 2680 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 2680 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 2680 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 2680 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 005D 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 005D 2680;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 2680 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 2680 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 2680 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 2680 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 005D 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 2680 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 2680 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 005D 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 2680 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 005D 2680;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 2680 005B 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 2680 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 2680 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 2680 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 005D 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 2680 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 2680 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 005D 2680;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 2680 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 005D 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 2680 0029 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 2680 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 005D 2680;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 2680 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 005D 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 2680 005D;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 005D 2680;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 2680 005B 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 2680 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 2680 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 2680 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 2680 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 2680 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 005D 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 005D 2680;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 2680 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 2680 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 005D 2680;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 2680 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 005D 2680;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 2680 0029 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 2680 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 005D 2680;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 2680 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 005D 2680;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 2680 005D;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 005D 2680;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 2680 0029 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 2680 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 2680 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 2680 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 005D 2680;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 005D 2680;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 2680 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 005D 2680;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 2680 005D;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 005D 2680;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 2680 005D;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 0061 2680 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 005D 2680;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 0061 005D 2680;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, L, L and (([)]\n05D0 0028 05D1 0061 0028 0062 005B 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 0062 005B 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 05D1 0061 0028 005B 0062 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0062 0029 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 0062 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 0062 005D;1;1;1 1 1 2 2 2 2 2 1;8 3 4 5 6 7 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 005D 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 005D 0062;1;1;1 1 1 2 2 2 2 2 2;3 4 5 6 7 8 2 1 0\n05D0 0028 05D1 0028 0061 005B 0062 0029 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 0062 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 005D 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 0062 005D;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 005D 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 005D 0062;0;0;1 1 1 0 0 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0062 0029 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 0062 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 005D 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 0062 005D;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 005D 0062;0;0;1 0 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 005D 0062;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 0062 005D;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 005D 0062;0;0;1 0 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 005D 0062;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 005D 0062;0;0;1 1 1 1 1 1 0 0 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0062 0029 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0062 0029 005D;1;1;1 1 1 1 2 2 2 1 1;8 7 4 5 6 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 0062 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 0062 005D;1;1;1 1 1 1 2 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 005D 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 005D 0062;1;1;1 1 1 1 2 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 0062 005D;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 005D 0062;0;0;0 1 0 1 0 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 005D 0062;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 0062 005D;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 005D 0062;0;0;0 1 0 0 1 0 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 005D 0062;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 005D 0062;0;0;0 1 1 1 1 1 0 0 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 0062 005D;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 0062 005D;1;1;1 1 1 1 1 2 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 005D 0062;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 005D 0062;1;1;1 1 1 1 1 2 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 005D 0062;0;0;0 0 1 1 1 0 0 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 005D 0062;0;0;0 0 1 0 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 005D 0062;0;0;0 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 0061 005D 0062;1;1;1 1 1 1 1 1 2 2 2;6 7 8 5 4 3 2 1 0\n\n# R, R, L, R and (([)]\n05D0 0028 05D1 0061 05D2 0028 005B 0029 005D;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 05D2 0028 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 05D2 005B 0029 005D;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 05D2 005B 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 05D2 0029 005D;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 05D2 0029 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 05D2 005D;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 05D2 005D;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0061 0028 005B 0029 005D 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0061 0028 005B 0029 005D 05D2;1;1;1 1 1 2 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 05D2 005B 0029 005D;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 05D2 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 05D2 0029 005D;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 05D2 005D;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 0061 005B 0029 005D 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 0061 005B 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 05D2 0029 005D;0;0;1 1 1 0 0 0 1 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 05D2 005D;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0061 0029 005D 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 05D2 005D;0;0;1 1 1 0 0 0 0 1 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 0061 005D 05D2;0;0;1 1 1 0 0 0 0 0 1;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 05D2 005B 0029 005D;0;0;1 0 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 05D2 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 05D2 0029 005D;0;0;1 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 05D2 005D;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 0061 005B 0029 005D 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 0061 005B 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 05D2 0029 005D;0;0;1 0 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 05D2 005D;0;0;1 0 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0061 0029 005D 05D2;0;0;1 0 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 05D1 005B 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 05D2 005D;0;0;1 1 1 1 1 1 0 1 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 0061 005D 05D2;0;0;1 1 1 1 1 1 0 0 1;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 05D1 005B 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 05D2 0029 005D;0;0;1 0 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 05D2 005D;0;0;1 0 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0061 0029 005D 05D2;0;0;1 0 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n05D0 0028 0028 005B 05D1 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 05D2 005D;0;0;1 1 1 1 1 1 0 1 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 0061 005D 05D2;0;0;1 1 1 1 1 1 0 0 1;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 05D2 005D;0;0;1 1 1 1 1 1 0 1 0;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 0029 05D1 0061 005D 05D2;0;0;1 1 1 1 1 1 0 0 1;5 4 3 2 1 0 6 7 8\n05D0 0028 0028 005B 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 05D2 005B 0029 005D;0;0;0 1 0 1 0 1 0 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 05D2 005B 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 05D2 0029 005D;0;0;0 1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 05D2 0029 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 05D2 005D;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 05D2 005D;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 0061 005B 0029 005D 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 0061 005B 0029 005D 05D2;1;1;1 1 1 1 2 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 05D2 0029 005D;0;0;0 1 0 1 0 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 05D2 005D;0;0;0 1 0 1 0 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0061 0029 005D 05D2;0;0;0 1 0 1 0 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 05D1 005B 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 05D2 005D;0;0;0 1 1 1 1 1 0 1 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 0061 005D 05D2;0;0;0 1 1 1 1 1 0 0 1;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 05D1 005B 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 05D2 0029 005D;0;0;0 1 0 0 1 0 1 0 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 05D2 005D;0;0;0 1 0 0 1 0 0 1 0;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0061 0029 005D 05D2;0;0;0 1 0 0 1 0 0 0 1;0 1 2 3 4 5 6 7 8\n0028 05D0 0028 005B 05D1 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 05D2 005D;0;0;0 1 1 1 1 1 0 1 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 0061 005D 05D2;0;0;0 1 1 1 1 1 0 0 1;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 05D2 005D;0;0;0 1 1 1 1 1 0 1 0;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 0029 05D1 0061 005D 05D2;0;0;0 1 1 1 1 1 0 0 1;0 5 4 3 2 1 6 7 8\n0028 05D0 0028 005B 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 05D2 0029 005D;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 05D2 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 05D2 005D;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 05D2 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0061 0029 005D 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0061 0029 005D 05D2;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 05D2 005D;0;0;0 0 1 1 1 0 0 1 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 0061 005D 05D2;0;0;0 0 1 1 1 0 0 0 1;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 05D2 005D;0;0;0 0 1 0 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 0029 05D1 0061 005D 05D2;0;0;0 0 1 0 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 05D0 005B 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 05D2 005D;0;0;0 0 0 1 0 1 0 1 0;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 0061 05D2 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 005B 05D0 0029 05D1 0061 005D 05D2;0;0;0 0 0 1 0 1 0 0 1;0 1 2 3 4 5 6 7 8\n0028 0028 005B 05D0 0029 05D1 0061 005D 05D2;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, ON and (([)]\n05D0 0028 05D1 0028 05D2 2680 005B 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 2680 005B 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 2680 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 005B 2680 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 005B 0029 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 005B 0029 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 2680 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 05D2 2680 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 05D2 0029 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 05D2 0029 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 2680 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 05D2 2680 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 05D2 0029 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 05D2 0029 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 2680 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 005D 2680;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 2680 0029 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 05D2 2680 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 2680 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 05D2 0029 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 005D 2680;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 05D2 0029 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 2680 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 005D 2680;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 2680 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 005D 2680;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 2680 005D;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 05D2 2680 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 005D 2680;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 05D2 005D 2680;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# R, R, R, L and (([)]\n05D0 0028 05D1 0028 05D2 0061 005B 0029 005D;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 0061 005B 0029 005D;1;1;1 1 1 1 1 2 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0061 0029 005D;0;0;1 1 1 0 1 0 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 05D2 005B 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 005B 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 05D2 005B 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0061 0029 005D;0;0;1 1 1 0 0 1 0 0 0;2 1 0 3 4 5 6 7 8\n05D0 0028 05D1 0028 005B 05D2 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 05D2 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 05D2 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 05D1 0028 005B 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0061 0029 005D;0;0;1 0 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n05D0 0028 0028 05D1 005B 05D2 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 05D2 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 05D2 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 05D1 005B 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 0061 005D;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 005D 0061;0;0;1 1 1 1 1 1 1 0 0;6 5 4 3 2 1 0 7 8\n05D0 0028 0028 005B 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0061 0029 005D;0;0;0 1 0 1 1 1 0 0 0;0 1 2 5 4 3 6 7 8\n0028 05D0 0028 05D1 005B 05D2 0061 0029 005D;1;1;1 1 1 1 1 1 2 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 05D2 0029 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 05D2 0029 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 05D1 005B 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 0061 005D;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 005D 0061;0;0;0 1 1 1 1 1 1 0 0;0 6 5 4 3 2 1 7 8\n0028 05D0 0028 005B 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 0061 005D;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 05D2 0061 005D;1;1;1 1 1 1 1 1 1 2 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 005D 0061;0;0;0 0 1 1 1 0 1 0 0;0 1 4 3 2 5 6 7 8\n0028 0028 05D0 005B 05D1 0029 05D2 005D 0061;1;1;1 1 1 1 1 1 1 1 2;8 7 6 5 4 3 2 1 0\n\n# R, R, R, R and (([)]\n05D0 0028 05D1 0028 05D2 005B 05D3 0029 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 005B 05D3 0029 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 05D3 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 05D2 005B 0029 05D3 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 05D2 005B 0029 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 05D3 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 05D1 0028 005B 05D2 0029 05D3 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 05D2 0029 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 05D1 0028 005B 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 05D3 005D;0;0;1 1 1 1 1 1 1 1 0;7 6 5 4 3 2 1 0 8\n05D0 0028 0028 05D1 005B 05D2 0029 05D3 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 05D2 0029 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 05D1 005B 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 005D 05D3;0;0;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n05D0 0028 0028 005B 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 05D3 005D;0;0;0 1 1 1 1 1 1 1 0;0 7 6 5 4 3 2 1 8\n0028 05D0 0028 05D1 005B 05D2 0029 05D3 005D;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 05D2 0029 005D 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 05D2 0029 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 05D1 005B 0029 05D2 005D 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 05D1 005B 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 05D0 0028 005B 05D1 0029 05D2 005D 05D3;0;0;0 1 1 1 1 1 1 1 1;0 8 7 6 5 4 3 2 1\n0028 05D0 0028 005B 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n0028 0028 05D0 005B 05D1 0029 05D2 005D 05D3;0;0;0 0 1 1 1 0 1 1 1;0 1 4 3 2 5 8 7 6\n0028 0028 05D0 005B 05D1 0029 05D2 005D 05D3;1;1;1 1 1 1 1 1 1 1 1;8 7 6 5 4 3 2 1 0\n\n# EOF\n"
  },
  {
    "path": "dev/parseunicode/BidiMirroring.txt",
    "content": "# BidiMirroring-13.0.0.txt\n# Date: 2019-09-09, 19:34:00 GMT [KW, LI, RP]\n# © 2019 Unicode®, Inc.\n# For terms of use, see http://www.unicode.org/terms_of_use.html\n#\n# Unicode Character Database\n# For documentation, see http://www.unicode.org/reports/tr44/\n#\n# Bidi_Mirroring_Glyph Property\n#\n# This file is an informative contributory data file in the\n# Unicode Character Database.\n#\n# This data file lists characters that have the Bidi_Mirrored=Yes property\n# value, for which there is another Unicode character that typically has a glyph\n# that is the mirror image of the original character's glyph.\n#\n# The repertoire covered by the file is Unicode 13.0.0.\n#\n# The file contains a list of lines with mappings from one code point\n# to another one for character-based mirroring.\n# Note that for \"real\" mirroring, a rendering engine needs to select\n# appropriate alternative glyphs, and that many Unicode characters do not\n# have a mirror-image Unicode character.\n#\n# Each mapping line contains two fields, separated by a semicolon (';').\n# Each of the two fields contains a code point represented as a\n# variable-length hexadecimal value with 4 to 6 digits.\n# A comment indicates where the characters are \"BEST FIT\" mirroring.\n#\n# Code points for which Bidi_Mirrored=Yes, but for which no appropriate\n# characters exist with mirrored glyphs, are\n# listed as comments at the end of the file.\n#\n# Formally, the default value of the Bidi_Mirroring_Glyph property\n# for each code point is <none>, unless a mapping to\n# some other character is specified in this data file. When a code\n# point has the default value for the Bidi_Mirroring_Glyph property,\n# that means that no other character exists whose glyph is suitable\n# for character-based mirroring.\n#\n# For information on bidi mirroring, see UAX #9: Unicode Bidirectional Algorithm,\n# at http://www.unicode.org/unicode/reports/tr9/\n#\n# This file was originally created by Markus Scherer.\n# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,\n# and for subsequent versions by Ken Whistler, Laurentiu Iancu, and Roozbeh Pournader.\n#\n# Historical and Compatibility Information:\n#\n# The OpenType Mirroring Pairs List (OMPL) is frozen to match the\n# Unicode 5.1 version of the Bidi_Mirroring_Glyph property (2008).\n# See https://www.microsoft.com/typography/otspec/ompl.txt\n#\n# The Unicode 6.1 version of the Bidi_Mirroring_Glyph property (2011)\n# added one mirroring pair: 27CB <--> 27CD.\n#\n# The Unicode 11.0 version of the Bidi_Mirroring_Glyph property (2018)\n# underwent a substantial revision, to formally recognize all of the\n# exact mirroring pairs and \"BEST FIT\" mirroring pairs that had been\n# added after the freezing of the OMPL list. As a result, starting\n# with Unicode 11.0, the bmg mapping values more accurately reflect\n# the current status of glyphs for Bidi_Mirrored characters in\n# the Unicode Standard, but this listing now extends significantly\n# beyond the frozen OMPL list. Implementers should be aware of this\n# intentional distinction.\n#\n# ############################################################\n#\n# Property:\tBidi_Mirroring_Glyph\n#\n# @missing: 0000..10FFFF; <none>\n\n0028; 0029 # LEFT PARENTHESIS\n0029; 0028 # RIGHT PARENTHESIS\n003C; 003E # LESS-THAN SIGN\n003E; 003C # GREATER-THAN SIGN\n005B; 005D # LEFT SQUARE BRACKET\n005D; 005B # RIGHT SQUARE BRACKET\n007B; 007D # LEFT CURLY BRACKET\n007D; 007B # RIGHT CURLY BRACKET\n00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\n00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\n0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON\n0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS\n0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON\n0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS\n169B; 169C # OGHAM FEATHER MARK\n169C; 169B # OGHAM REVERSED FEATHER MARK\n2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK\n203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK\n2045; 2046 # LEFT SQUARE BRACKET WITH QUILL\n2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL\n207D; 207E # SUPERSCRIPT LEFT PARENTHESIS\n207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS\n208D; 208E # SUBSCRIPT LEFT PARENTHESIS\n208E; 208D # SUBSCRIPT RIGHT PARENTHESIS\n2208; 220B # ELEMENT OF\n2209; 220C # NOT AN ELEMENT OF\n220A; 220D # SMALL ELEMENT OF\n220B; 2208 # CONTAINS AS MEMBER\n220C; 2209 # DOES NOT CONTAIN AS MEMBER\n220D; 220A # SMALL CONTAINS AS MEMBER\n2215; 29F5 # DIVISION SLASH\n221F; 2BFE # RIGHT ANGLE\n2220; 29A3 # ANGLE\n2221; 299B # MEASURED ANGLE\n2222; 29A0 # SPHERICAL ANGLE\n2224; 2AEE # DOES NOT DIVIDE\n223C; 223D # TILDE OPERATOR\n223D; 223C # REVERSED TILDE\n2243; 22CD # ASYMPTOTICALLY EQUAL TO\n2245; 224C # APPROXIMATELY EQUAL TO\n224C; 2245 # ALL EQUAL TO\n2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF\n2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO\n2254; 2255 # COLON EQUALS\n2255; 2254 # EQUALS COLON\n2264; 2265 # LESS-THAN OR EQUAL TO\n2265; 2264 # GREATER-THAN OR EQUAL TO\n2266; 2267 # LESS-THAN OVER EQUAL TO\n2267; 2266 # GREATER-THAN OVER EQUAL TO\n2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO\n2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO\n226A; 226B # MUCH LESS-THAN\n226B; 226A # MUCH GREATER-THAN\n226E; 226F # [BEST FIT] NOT LESS-THAN\n226F; 226E # [BEST FIT] NOT GREATER-THAN\n2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO\n2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO\n2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO\n2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO\n2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO\n2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO\n2276; 2277 # LESS-THAN OR GREATER-THAN\n2277; 2276 # GREATER-THAN OR LESS-THAN\n2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN\n2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN\n227A; 227B # PRECEDES\n227B; 227A # SUCCEEDS\n227C; 227D # PRECEDES OR EQUAL TO\n227D; 227C # SUCCEEDS OR EQUAL TO\n227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO\n227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO\n2280; 2281 # [BEST FIT] DOES NOT PRECEDE\n2281; 2280 # [BEST FIT] DOES NOT SUCCEED\n2282; 2283 # SUBSET OF\n2283; 2282 # SUPERSET OF\n2284; 2285 # [BEST FIT] NOT A SUBSET OF\n2285; 2284 # [BEST FIT] NOT A SUPERSET OF\n2286; 2287 # SUBSET OF OR EQUAL TO\n2287; 2286 # SUPERSET OF OR EQUAL TO\n2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO\n2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO\n228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO\n228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO\n228F; 2290 # SQUARE IMAGE OF\n2290; 228F # SQUARE ORIGINAL OF\n2291; 2292 # SQUARE IMAGE OF OR EQUAL TO\n2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO\n2298; 29B8 # CIRCLED DIVISION SLASH\n22A2; 22A3 # RIGHT TACK\n22A3; 22A2 # LEFT TACK\n22A6; 2ADE # ASSERTION\n22A8; 2AE4 # TRUE\n22A9; 2AE3 # FORCES\n22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE\n22B0; 22B1 # PRECEDES UNDER RELATION\n22B1; 22B0 # SUCCEEDS UNDER RELATION\n22B2; 22B3 # NORMAL SUBGROUP OF\n22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP\n22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO\n22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO\n22B6; 22B7 # ORIGINAL OF\n22B7; 22B6 # IMAGE OF\n22B8; 27DC # MULTIMAP\n22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT\n22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT\n22CB; 22CC # LEFT SEMIDIRECT PRODUCT\n22CC; 22CB # RIGHT SEMIDIRECT PRODUCT\n22CD; 2243 # REVERSED TILDE EQUALS\n22D0; 22D1 # DOUBLE SUBSET\n22D1; 22D0 # DOUBLE SUPERSET\n22D6; 22D7 # LESS-THAN WITH DOT\n22D7; 22D6 # GREATER-THAN WITH DOT\n22D8; 22D9 # VERY MUCH LESS-THAN\n22D9; 22D8 # VERY MUCH GREATER-THAN\n22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN\n22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN\n22DC; 22DD # EQUAL TO OR LESS-THAN\n22DD; 22DC # EQUAL TO OR GREATER-THAN\n22DE; 22DF # EQUAL TO OR PRECEDES\n22DF; 22DE # EQUAL TO OR SUCCEEDS\n22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL\n22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL\n22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO\n22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO\n22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO\n22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO\n22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO\n22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO\n22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO\n22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO\n22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF\n22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP\n22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO\n22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL\n22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS\n22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS\n22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE\n22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE\n22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE\n22F6; 22FD # ELEMENT OF WITH OVERBAR\n22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR\n22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE\n22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE\n22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE\n22FD; 22F6 # CONTAINS WITH OVERBAR\n22FE; 22F7 # SMALL CONTAINS WITH OVERBAR\n2308; 2309 # LEFT CEILING\n2309; 2308 # RIGHT CEILING\n230A; 230B # LEFT FLOOR\n230B; 230A # RIGHT FLOOR\n2329; 232A # LEFT-POINTING ANGLE BRACKET\n232A; 2329 # RIGHT-POINTING ANGLE BRACKET\n2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT\n2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT\n276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT\n276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT\n276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT\n276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT\n276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT\n276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT\n2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT\n2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT\n2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT\n2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT\n2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT\n2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT\n27C3; 27C4 # OPEN SUBSET\n27C4; 27C3 # OPEN SUPERSET\n27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER\n27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER\n27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET\n27C9; 27C8 # SUPERSET PRECEDING SOLIDUS\n27CB; 27CD # MATHEMATICAL RISING DIAGONAL\n27CD; 27CB # MATHEMATICAL FALLING DIAGONAL\n27D5; 27D6 # LEFT OUTER JOIN\n27D6; 27D5 # RIGHT OUTER JOIN\n27DC; 22B8 # LEFT MULTIMAP\n27DD; 27DE # LONG RIGHT TACK\n27DE; 27DD # LONG LEFT TACK\n27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK\n27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK\n27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK\n27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK\n27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET\n27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET\n27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET\n27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET\n27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET\n27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET\n27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET\n27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET\n27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS\n27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS\n2983; 2984 # LEFT WHITE CURLY BRACKET\n2984; 2983 # RIGHT WHITE CURLY BRACKET\n2985; 2986 # LEFT WHITE PARENTHESIS\n2986; 2985 # RIGHT WHITE PARENTHESIS\n2987; 2988 # Z NOTATION LEFT IMAGE BRACKET\n2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET\n2989; 298A # Z NOTATION LEFT BINDING BRACKET\n298A; 2989 # Z NOTATION RIGHT BINDING BRACKET\n298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR\n298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR\n298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER\n298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER\n298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER\n2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER\n2991; 2992 # LEFT ANGLE BRACKET WITH DOT\n2992; 2991 # RIGHT ANGLE BRACKET WITH DOT\n2993; 2994 # LEFT ARC LESS-THAN BRACKET\n2994; 2993 # RIGHT ARC GREATER-THAN BRACKET\n2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET\n2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET\n2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET\n2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET\n299B; 2221 # MEASURED ANGLE OPENING LEFT\n29A0; 2222 # SPHERICAL ANGLE OPENING LEFT\n29A3; 2220 # REVERSED ANGLE\n29A4; 29A5 # ANGLE WITH UNDERBAR\n29A5; 29A4 # REVERSED ANGLE WITH UNDERBAR\n29A8; 29A9 # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT\n29A9; 29A8 # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT\n29AA; 29AB # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT\n29AB; 29AA # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT\n29AC; 29AD # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP\n29AD; 29AC # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP\n29AE; 29AF # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN\n29AF; 29AE # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN\n29B8; 2298 # CIRCLED REVERSE SOLIDUS\n29C0; 29C1 # CIRCLED LESS-THAN\n29C1; 29C0 # CIRCLED GREATER-THAN\n29C4; 29C5 # SQUARED RISING DIAGONAL SLASH\n29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH\n29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR\n29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE\n29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK\n29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK\n29D4; 29D5 # TIMES WITH LEFT HALF BLACK\n29D5; 29D4 # TIMES WITH RIGHT HALF BLACK\n29D8; 29D9 # LEFT WIGGLY FENCE\n29D9; 29D8 # RIGHT WIGGLY FENCE\n29DA; 29DB # LEFT DOUBLE WIGGLY FENCE\n29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE\n29E8; 29E9 # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK\n29E9; 29E8 # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK\n29F5; 2215 # REVERSE SOLIDUS OPERATOR\n29F8; 29F9 # BIG SOLIDUS\n29F9; 29F8 # BIG REVERSE SOLIDUS\n29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET\n29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET\n2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS\n2A2C; 2A2B # MINUS SIGN WITH RISING DOTS\n2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE\n2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE\n2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE\n2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE\n2A3C; 2A3D # INTERIOR PRODUCT\n2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT\n2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION\n2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION\n2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE\n2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE\n2A7B; 2A7C # [BEST FIT] LESS-THAN WITH QUESTION MARK ABOVE\n2A7C; 2A7B # [BEST FIT] GREATER-THAN WITH QUESTION MARK ABOVE\n2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO\n2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO\n2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE\n2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE\n2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE\n2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE\n2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT\n2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT\n2A85; 2A86 # [BEST FIT] LESS-THAN OR APPROXIMATE\n2A86; 2A85 # [BEST FIT] GREATER-THAN OR APPROXIMATE\n2A87; 2A88 # [BEST FIT] LESS-THAN AND SINGLE-LINE NOT EQUAL TO\n2A88; 2A87 # [BEST FIT] GREATER-THAN AND SINGLE-LINE NOT EQUAL TO\n2A89; 2A8A # [BEST FIT] LESS-THAN AND NOT APPROXIMATE\n2A8A; 2A89 # [BEST FIT] GREATER-THAN AND NOT APPROXIMATE\n2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN\n2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN\n2A8D; 2A8E # [BEST FIT] LESS-THAN ABOVE SIMILAR OR EQUAL\n2A8E; 2A8D # [BEST FIT] GREATER-THAN ABOVE SIMILAR OR EQUAL\n2A8F; 2A90 # [BEST FIT] LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN\n2A90; 2A8F # [BEST FIT] GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN\n2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL\n2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL\n2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL\n2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL\n2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN\n2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN\n2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE\n2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE\n2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN\n2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN\n2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN\n2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN\n2A9D; 2A9E # [BEST FIT] SIMILAR OR LESS-THAN\n2A9E; 2A9D # [BEST FIT] SIMILAR OR GREATER-THAN\n2A9F; 2AA0 # [BEST FIT] SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN\n2AA0; 2A9F # [BEST FIT] SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN\n2AA1; 2AA2 # DOUBLE NESTED LESS-THAN\n2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN\n2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE\n2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE\n2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL\n2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL\n2AAA; 2AAB # SMALLER THAN\n2AAB; 2AAA # LARGER THAN\n2AAC; 2AAD # SMALLER THAN OR EQUAL TO\n2AAD; 2AAC # LARGER THAN OR EQUAL TO\n2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN\n2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN\n2AB1; 2AB2 # [BEST FIT] PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO\n2AB2; 2AB1 # [BEST FIT] SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO\n2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN\n2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN\n2AB5; 2AB6 # [BEST FIT] PRECEDES ABOVE NOT EQUAL TO\n2AB6; 2AB5 # [BEST FIT] SUCCEEDS ABOVE NOT EQUAL TO\n2AB7; 2AB8 # [BEST FIT] PRECEDES ABOVE ALMOST EQUAL TO\n2AB8; 2AB7 # [BEST FIT] SUCCEEDS ABOVE ALMOST EQUAL TO\n2AB9; 2ABA # [BEST FIT] PRECEDES ABOVE NOT ALMOST EQUAL TO\n2ABA; 2AB9 # [BEST FIT] SUCCEEDS ABOVE NOT ALMOST EQUAL TO\n2ABB; 2ABC # DOUBLE PRECEDES\n2ABC; 2ABB # DOUBLE SUCCEEDS\n2ABD; 2ABE # SUBSET WITH DOT\n2ABE; 2ABD # SUPERSET WITH DOT\n2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW\n2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW\n2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW\n2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW\n2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE\n2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE\n2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN\n2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN\n2AC7; 2AC8 # [BEST FIT] SUBSET OF ABOVE TILDE OPERATOR\n2AC8; 2AC7 # [BEST FIT] SUPERSET OF ABOVE TILDE OPERATOR\n2AC9; 2ACA # [BEST FIT] SUBSET OF ABOVE ALMOST EQUAL TO\n2ACA; 2AC9 # [BEST FIT] SUPERSET OF ABOVE ALMOST EQUAL TO\n2ACB; 2ACC # [BEST FIT] SUBSET OF ABOVE NOT EQUAL TO\n2ACC; 2ACB # [BEST FIT] SUPERSET OF ABOVE NOT EQUAL TO\n2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR\n2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR\n2ACF; 2AD0 # CLOSED SUBSET\n2AD0; 2ACF # CLOSED SUPERSET\n2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO\n2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO\n2AD3; 2AD4 # SUBSET ABOVE SUPERSET\n2AD4; 2AD3 # SUPERSET ABOVE SUBSET\n2AD5; 2AD6 # SUBSET ABOVE SUBSET\n2AD6; 2AD5 # SUPERSET ABOVE SUPERSET\n2ADE; 22A6 # SHORT LEFT TACK\n2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE\n2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE\n2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE\n2AEC; 2AED # DOUBLE STROKE NOT SIGN\n2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN\n2AEE; 2224 # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH\n2AF7; 2AF8 # TRIPLE NESTED LESS-THAN\n2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN\n2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO\n2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO\n2BFE; 221F # REVERSED RIGHT ANGLE\n2E02; 2E03 # LEFT SUBSTITUTION BRACKET\n2E03; 2E02 # RIGHT SUBSTITUTION BRACKET\n2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET\n2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET\n2E09; 2E0A # LEFT TRANSPOSITION BRACKET\n2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET\n2E0C; 2E0D # LEFT RAISED OMISSION BRACKET\n2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET\n2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET\n2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET\n2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL\n2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL\n2E22; 2E23 # TOP LEFT HALF BRACKET\n2E23; 2E22 # TOP RIGHT HALF BRACKET\n2E24; 2E25 # BOTTOM LEFT HALF BRACKET\n2E25; 2E24 # BOTTOM RIGHT HALF BRACKET\n2E26; 2E27 # LEFT SIDEWAYS U BRACKET\n2E27; 2E26 # RIGHT SIDEWAYS U BRACKET\n2E28; 2E29 # LEFT DOUBLE PARENTHESIS\n2E29; 2E28 # RIGHT DOUBLE PARENTHESIS\n3008; 3009 # LEFT ANGLE BRACKET\n3009; 3008 # RIGHT ANGLE BRACKET\n300A; 300B # LEFT DOUBLE ANGLE BRACKET\n300B; 300A # RIGHT DOUBLE ANGLE BRACKET\n300C; 300D # [BEST FIT] LEFT CORNER BRACKET\n300D; 300C # [BEST FIT] RIGHT CORNER BRACKET\n300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET\n300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET\n3010; 3011 # LEFT BLACK LENTICULAR BRACKET\n3011; 3010 # RIGHT BLACK LENTICULAR BRACKET\n3014; 3015 # LEFT TORTOISE SHELL BRACKET\n3015; 3014 # RIGHT TORTOISE SHELL BRACKET\n3016; 3017 # LEFT WHITE LENTICULAR BRACKET\n3017; 3016 # RIGHT WHITE LENTICULAR BRACKET\n3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET\n3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET\n301A; 301B # LEFT WHITE SQUARE BRACKET\n301B; 301A # RIGHT WHITE SQUARE BRACKET\nFE59; FE5A # SMALL LEFT PARENTHESIS\nFE5A; FE59 # SMALL RIGHT PARENTHESIS\nFE5B; FE5C # SMALL LEFT CURLY BRACKET\nFE5C; FE5B # SMALL RIGHT CURLY BRACKET\nFE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET\nFE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET\nFE64; FE65 # SMALL LESS-THAN SIGN\nFE65; FE64 # SMALL GREATER-THAN SIGN\nFF08; FF09 # FULLWIDTH LEFT PARENTHESIS\nFF09; FF08 # FULLWIDTH RIGHT PARENTHESIS\nFF1C; FF1E # FULLWIDTH LESS-THAN SIGN\nFF1E; FF1C # FULLWIDTH GREATER-THAN SIGN\nFF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET\nFF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET\nFF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET\nFF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET\nFF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS\nFF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS\nFF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET\nFF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET\n\n# The following characters have no appropriate mirroring character.\n# For these characters it is up to the rendering system\n#   to provide mirrored glyphs.\n\n# 2140; DOUBLE-STRUCK N-ARY SUMMATION\n# 2201; COMPLEMENT\n# 2202; PARTIAL DIFFERENTIAL\n# 2203; THERE EXISTS\n# 2204; THERE DOES NOT EXIST\n# 2211; N-ARY SUMMATION\n# 2216; SET MINUS\n# 221A; SQUARE ROOT\n# 221B; CUBE ROOT\n# 221C; FOURTH ROOT\n# 221D; PROPORTIONAL TO\n# 2226; NOT PARALLEL TO\n# 222B; INTEGRAL\n# 222C; DOUBLE INTEGRAL\n# 222D; TRIPLE INTEGRAL\n# 222E; CONTOUR INTEGRAL\n# 222F; SURFACE INTEGRAL\n# 2230; VOLUME INTEGRAL\n# 2231; CLOCKWISE INTEGRAL\n# 2232; CLOCKWISE CONTOUR INTEGRAL\n# 2233; ANTICLOCKWISE CONTOUR INTEGRAL\n# 2239; EXCESS\n# 223B; HOMOTHETIC\n# 223E; INVERTED LAZY S\n# 223F; SINE WAVE\n# 2240; WREATH PRODUCT\n# 2241; NOT TILDE\n# 2242; MINUS TILDE\n# 2244; NOT ASYMPTOTICALLY EQUAL TO\n# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO\n# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO\n# 2248; ALMOST EQUAL TO\n# 2249; NOT ALMOST EQUAL TO\n# 224A; ALMOST EQUAL OR EQUAL TO\n# 224B; TRIPLE TILDE\n# 225F; QUESTIONED EQUAL TO\n# 2260; NOT EQUAL TO\n# 2262; NOT IDENTICAL TO\n# 228C; MULTISET\n# 22A7; MODELS\n# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE\n# 22AC; DOES NOT PROVE\n# 22AD; NOT TRUE\n# 22AE; DOES NOT FORCE\n# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE\n# 22BE; RIGHT ANGLE WITH ARC\n# 22BF; RIGHT TRIANGLE\n# 22F5; ELEMENT OF WITH DOT ABOVE\n# 22F8; ELEMENT OF WITH UNDERBAR\n# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES\n# 22FF; Z NOTATION BAG MEMBERSHIP\n# 2320; TOP HALF INTEGRAL\n# 2321; BOTTOM HALF INTEGRAL\n# 27C0; THREE DIMENSIONAL ANGLE\n# 27CC; LONG DIVISION\n# 27D3; LOWER RIGHT CORNER WITH DOT\n# 27D4; UPPER LEFT CORNER WITH DOT\n# 299C; RIGHT ANGLE VARIANT WITH SQUARE\n# 299D; MEASURED RIGHT ANGLE WITH DOT\n# 299E; ANGLE WITH S INSIDE\n# 299F; ACUTE ANGLE\n# 29A2; TURNED ANGLE\n# 29A6; OBLIQUE ANGLE OPENING UP\n# 29A7; OBLIQUE ANGLE OPENING DOWN\n# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT\n# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT\n# 29C9; TWO JOINED SQUARES\n# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE\n# 29DC; INCOMPLETE INFINITY\n# 29E1; INCREASES AS\n# 29E3; EQUALS SIGN AND SLANTED PARALLEL\n# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE\n# 29E5; IDENTICAL TO AND SLANTED PARALLEL\n# 29F4; RULE-DELAYED\n# 29F6; SOLIDUS WITH OVERBAR\n# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE\n# 2A0A; MODULO TWO SUM\n# 2A0B; SUMMATION WITH INTEGRAL\n# 2A0C; QUADRUPLE INTEGRAL OPERATOR\n# 2A0D; FINITE PART INTEGRAL\n# 2A0E; INTEGRAL WITH DOUBLE STROKE\n# 2A0F; INTEGRAL AVERAGE WITH SLASH\n# 2A10; CIRCULATION FUNCTION\n# 2A11; ANTICLOCKWISE INTEGRATION\n# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE\n# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE\n# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE\n# 2A15; INTEGRAL AROUND A POINT OPERATOR\n# 2A16; QUATERNION INTEGRAL OPERATOR\n# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK\n# 2A18; INTEGRAL WITH TIMES SIGN\n# 2A19; INTEGRAL WITH INTERSECTION\n# 2A1A; INTEGRAL WITH UNION\n# 2A1B; INTEGRAL WITH OVERBAR\n# 2A1C; INTEGRAL WITH UNDERBAR\n# 2A1E; LARGE LEFT TRIANGLE OPERATOR\n# 2A1F; Z NOTATION SCHEMA COMPOSITION\n# 2A20; Z NOTATION SCHEMA PIPING\n# 2A21; Z NOTATION SCHEMA PROJECTION\n# 2A24; PLUS SIGN WITH TILDE ABOVE\n# 2A26; PLUS SIGN WITH TILDE BELOW\n# 2A29; MINUS SIGN WITH COMMA ABOVE\n# 2A3E; Z NOTATION RELATIONAL COMPOSITION\n# 2A57; SLOPING LARGE OR\n# 2A58; SLOPING LARGE AND\n# 2A6A; TILDE OPERATOR WITH DOT ABOVE\n# 2A6B; TILDE OPERATOR WITH RISING DOTS\n# 2A6C; SIMILAR MINUS SIMILAR\n# 2A6D; CONGRUENT WITH DOT ABOVE\n# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT\n# 2A70; APPROXIMATELY EQUAL OR EQUAL TO\n# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR\n# 2A74; DOUBLE COLON EQUAL\n# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR\n# 2ADC; FORKING\n# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE\n# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL\n# 2AF3; PARALLEL WITH TILDE OPERATOR\n# 2AFB; TRIPLE SOLIDUS BINARY RELATION\n# 2AFD; DOUBLE SOLIDUS OPERATOR\n# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL\n# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL\n# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL\n# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL\n# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL\n\n# EOF\n"
  },
  {
    "path": "dev/parseunicode/UnicodeData.txt",
    "content": "0000;<control>;Cc;0;BN;;;;;N;NULL;;;;\n0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;\n0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;\n0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;\n0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;\n0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;\n0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;\n0007;<control>;Cc;0;BN;;;;;N;BELL;;;;\n0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;\n0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;\n000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;\n000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;\n000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;\n000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;\n000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;\n000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;\n0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;\n0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;\n0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;\n0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;\n0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;\n0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;\n0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;\n0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;\n0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;\n0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;\n001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;\n001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;\n001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;\n001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;\n001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;\n001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;\n0020;SPACE;Zs;0;WS;;;;;N;;;;;\n0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;\n0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;\n0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;\n0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;\n0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;\n0026;AMPERSAND;Po;0;ON;;;;;N;;;;;\n0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;\n0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;\n0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;\n002A;ASTERISK;Po;0;ON;;;;;N;;;;;\n002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;\n002C;COMMA;Po;0;CS;;;;;N;;;;;\n002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;\n002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;\n002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;\n0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;\n0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;\n0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;\n0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;\n0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;\n0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;\n0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;\n0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;\n0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;\n0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;\n003A;COLON;Po;0;CS;;;;;N;;;;;\n003B;SEMICOLON;Po;0;ON;;;;;N;;;;;\n003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;\n003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;\n003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;\n003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;\n0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;\n0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;\n0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;\n0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;\n0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;\n0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;\n0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;\n0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;\n0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;\n0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;\n004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;\n004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;\n004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;\n004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;\n004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;\n004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;\n0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;\n0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;\n0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;\n0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;\n0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;\n0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;\n0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;\n0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;\n0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;\n0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;\n005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;\n005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;\n005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;\n005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;\n005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;\n005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;\n0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;\n0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041\n0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042\n0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043\n0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044\n0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045\n0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046\n0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047\n0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048\n0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049\n006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A\n006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B\n006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C\n006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D\n006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E\n006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F\n0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050\n0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051\n0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052\n0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053\n0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054\n0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055\n0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056\n0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057\n0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058\n0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059\n007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A\n007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;\n007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;\n007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;\n007E;TILDE;Sm;0;ON;;;;;N;;;;;\n007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;\n0080;<control>;Cc;0;BN;;;;;N;;;;;\n0081;<control>;Cc;0;BN;;;;;N;;;;;\n0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;\n0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;\n0084;<control>;Cc;0;BN;;;;;N;;;;;\n0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;\n0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;\n0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;\n0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;\n0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;\n008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;\n008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;\n008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;\n008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;\n008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;\n008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;\n0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;\n0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;\n0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;\n0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;\n0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;\n0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;\n0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;\n0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;\n0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;\n0099;<control>;Cc;0;BN;;;;;N;;;;;\n009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;\n009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;\n009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;\n009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;\n009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;\n009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;\n00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;\n00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;\n00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;\n00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;\n00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;\n00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;\n00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;\n00A7;SECTION SIGN;Po;0;ON;;;;;N;;;;;\n00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;\n00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;\n00AA;FEMININE ORDINAL INDICATOR;Lo;0;L;<super> 0061;;;;N;;;;;\n00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;;\n00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;\n00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;\n00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;\n00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;\n00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;\n00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;\n00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;\n00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;\n00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;\n00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C\n00B6;PILCROW SIGN;Po;0;ON;;;;;N;PARAGRAPH SIGN;;;;\n00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;\n00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;\n00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;\n00BA;MASCULINE ORDINAL INDICATOR;Lo;0;L;<super> 006F;;;;N;;;;;\n00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;\n00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;\n00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;\n00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;\n00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;\n00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;\n00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;\n00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;\n00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;\n00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;\n00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;\n00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;\n00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;\n00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;\n00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;\n00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;\n00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;\n00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;\n00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;\n00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;\n00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;\n00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0;\n00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;\n00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;\n00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;\n00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;\n00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;\n00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;\n00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;\n00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;\n00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;\n00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;\n00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;\n00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;\n00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;\n00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE;\n00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;;\n00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0\n00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1\n00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2\n00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3\n00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4\n00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5\n00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6\n00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7\n00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8\n00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9\n00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA\n00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB\n00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC\n00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD\n00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE\n00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF\n00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0\n00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1\n00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2\n00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3\n00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4\n00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5\n00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6\n00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;\n00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8\n00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9\n00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA\n00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB\n00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC\n00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD\n00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE\n00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178\n0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;\n0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100\n0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;\n0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102\n0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;\n0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104\n0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;\n0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106\n0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;\n0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108\n010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;\n010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A\n010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;\n010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C\n010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;\n010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E\n0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;\n0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110\n0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;\n0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112\n0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;\n0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114\n0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;\n0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116\n0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;\n0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118\n011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;\n011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A\n011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;\n011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C\n011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;\n011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E\n0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;\n0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120\n0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;\n0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122\n0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;\n0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124\n0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;\n0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126\n0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;\n0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128\n012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;\n012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A\n012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;\n012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C\n012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;\n012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E\n0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;\n0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049\n0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;\n0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132\n0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;\n0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134\n0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;\n0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136\n0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;;\n0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;\n013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139\n013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;\n013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B\n013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;\n013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D\n013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;\n0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F\n0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;\n0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141\n0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;\n0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143\n0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;\n0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145\n0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;\n0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147\n0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;\n014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B;\n014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A\n014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;\n014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C\n014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;\n014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E\n0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;\n0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150\n0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;\n0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152\n0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;\n0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154\n0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;\n0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156\n0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;\n0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158\n015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;\n015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A\n015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;\n015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C\n015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;\n015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E\n0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;\n0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160\n0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;\n0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162\n0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;\n0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164\n0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;\n0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166\n0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;\n0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168\n016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;\n016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A\n016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;\n016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C\n016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;\n016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E\n0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;\n0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170\n0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;\n0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172\n0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;\n0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174\n0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;\n0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176\n0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;\n0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;\n017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179\n017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;\n017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B\n017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;\n017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D\n017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053\n0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243\n0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;\n0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;\n0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182\n0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;\n0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184\n0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;\n0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;\n0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187\n0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;\n018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;\n018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;\n018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B\n018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;\n018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;\n018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;\n0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;\n0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;\n0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191\n0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;\n0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;\n0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6\n0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;\n0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;\n0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;\n0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198\n019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D\n019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;\n019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;\n019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;\n019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220\n019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;\n01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;\n01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0\n01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;\n01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2\n01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;\n01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4\n01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;\n01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;\n01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7\n01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;\n01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;\n01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;\n01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;\n01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC\n01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;\n01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;\n01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF\n01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;\n01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;\n01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;\n01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3\n01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;\n01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5\n01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;\n01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;\n01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8\n01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;\n01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;\n01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;\n01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC\n01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;\n01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7\n01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;\n01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;\n01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;\n01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;\n01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5\n01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5\n01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5\n01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8\n01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8\n01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8\n01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB\n01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB\n01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB\n01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;\n01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD\n01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;\n01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF\n01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;\n01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1\n01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;\n01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3\n01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;\n01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5\n01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;\n01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7\n01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;\n01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9\n01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;\n01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB\n01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E\n01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;\n01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE\n01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;\n01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0\n01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;\n01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2\n01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;\n01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4\n01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;\n01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6\n01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;\n01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8\n01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;\n01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA\n01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;\n01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC\n01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;\n01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE\n01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;\n01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2\n01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2\n01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2\n01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;\n01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4\n01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;\n01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;\n01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;\n01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8\n01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;\n01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA\n01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;\n01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC\n01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;\n01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE\n0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;\n0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200\n0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;\n0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202\n0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;\n0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204\n0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;\n0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206\n0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;\n0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208\n020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;\n020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A\n020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;\n020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C\n020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;\n020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E\n0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;\n0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210\n0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;\n0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212\n0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;\n0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214\n0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;\n0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216\n0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219;\n0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218\n021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B;\n021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A\n021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;\n021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C\n021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;\n021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E\n0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;\n0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;\n0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;\n0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222\n0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;\n0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224\n0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;\n0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226\n0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;\n0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228\n022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;\n022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A\n022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;\n022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C\n022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;\n022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E\n0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;\n0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230\n0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;\n0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232\n0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;\n0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;\n0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;\n0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;\n0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;\n0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;\n023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;\n023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;\n023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B\n023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;\n023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;\n023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E\n0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F\n0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;\n0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241\n0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;\n0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;\n0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;\n0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;\n0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246\n0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;\n0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248\n024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;\n024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A\n024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;\n024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C\n024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;\n024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E\n0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F\n0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D\n0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70\n0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181\n0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186\n0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;\n0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189\n0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A\n0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;\n0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F\n025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;\n025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190\n025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;A7AB;;A7AB\n025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;\n025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;\n025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;\n0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193\n0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;A7AC;;A7AC\n0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;\n0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194\n0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;\n0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;A78D;;A78D\n0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;A7AA;;A7AA\n0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;\n0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197\n0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196\n026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;A7AE;;A7AE\n026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62\n026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;A7AD;;A7AD\n026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;\n026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;\n026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C\n0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;\n0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E\n0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D\n0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;\n0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;\n0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F\n0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;\n0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;\n0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;\n0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;\n027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;\n027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;\n027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;\n027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64\n027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;\n027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;\n0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6\n0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;\n0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;A7C5;;A7C5\n0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9\n0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;\n0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;\n0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;\n0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;A7B1;;A7B1\n0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE\n0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244\n028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1\n028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2\n028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245\n028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;\n028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;\n028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;\n0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;\n0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;\n0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7\n0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;\n0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;\n0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;\n0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;\n0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;\n0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;\n0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;\n029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;\n029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;\n029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;\n029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;A7B2;;A7B2\n029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;A7B0;;A7B0\n029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;\n02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;\n02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;\n02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;\n02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;\n02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;\n02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;\n02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;\n02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;\n02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;\n02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;\n02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;\n02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;\n02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;\n02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;\n02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;\n02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;\n02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;\n02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;\n02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;\n02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;\n02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;\n02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;\n02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;\n02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;\n02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;\n02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;\n02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;\n02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;\n02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;\n02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;\n02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;\n02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;\n02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;\n02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;\n02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;\n02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;;\n02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;\n02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;\n02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;\n02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;\n02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;\n02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;\n02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;\n02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;\n02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;\n02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;\n02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;\n02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;\n02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;\n02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;\n02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;\n02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;\n02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;\n02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;;;;\n02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;\n02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;\n02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;\n02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;\n02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;\n02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;\n02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;\n02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;\n02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;\n02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;\n02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;\n02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;\n02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;\n02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;\n02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;\n02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;\n02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;\n02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;\n02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;\n02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;\n02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;\n02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;\n02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;\n02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;\n02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;\n02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;\n02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;\n02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;\n02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;\n02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;\n02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;\n02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;\n02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;\n02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;\n02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;\n0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;;\n0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;;\n0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;\n0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;\n0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;\n0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;\n0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;;\n0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;\n0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;;\n0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;\n030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;\n030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;\n030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;\n030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;\n030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;\n030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;\n0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;\n0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;\n0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;\n0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;;\n0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;;\n0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;\n0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;\n0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;\n0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;\n0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;\n031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;\n031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;\n031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;\n031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;\n031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;\n031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;\n0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;\n0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;\n0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;\n0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;\n0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;\n0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;\n0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;\n0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;\n0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;\n0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;\n032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;\n032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;\n032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;\n032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;\n032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;\n032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;\n0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;\n0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;\n0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;\n0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;\n0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;\n0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;\n0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;\n0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;\n0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;\n0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;\n033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;\n033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;\n033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;\n033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;\n033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;\n033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;\n0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;;\n0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;;\n0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;\n0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;\n0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;\n0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399\n0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;\n0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;\n0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;\n0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;\n034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;\n034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;\n034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;\n034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;\n034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;\n034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;\n0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;\n0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;\n0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;\n0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;\n0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;\n0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;\n0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;\n035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;\n035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;\n035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;\n035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;\n035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;\n035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;\n0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;\n0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;\n0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;\n0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;\n0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;\n0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;\n0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;\n0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;\n0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;\n0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;\n036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;\n036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;\n036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;\n036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;\n036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;\n036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;\n0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;\n0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370\n0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;\n0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372\n0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;;\n0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;;\n0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;\n0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376\n037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;\n037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD\n037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE\n037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF\n037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;;\n037F;GREEK CAPITAL LETTER YOT;Lu;0;L;;;;;N;;;;03F3;\n0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;\n0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;\n0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;\n0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;\n0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;\n0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;\n038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;\n038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;\n038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;\n038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;\n0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;\n0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;\n0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;\n0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;\n0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;\n0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;\n0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;\n0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;\n0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;\n039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;\n039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;\n039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;\n039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;\n039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;\n039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;\n03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;\n03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;\n03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;\n03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;\n03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;\n03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;\n03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;\n03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;\n03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;\n03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;\n03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;\n03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386\n03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388\n03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389\n03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A\n03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;\n03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391\n03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392\n03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393\n03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394\n03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395\n03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396\n03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397\n03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399\n03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A\n03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B\n03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C\n03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D\n03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E\n03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F\n03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0\n03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1\n03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3\n03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3\n03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4\n03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5\n03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6\n03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7\n03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8\n03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9\n03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA\n03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB\n03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C\n03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E\n03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F\n03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;\n03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392\n03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;\n03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;\n03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;\n03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6\n03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0\n03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF\n03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9;\n03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8\n03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;\n03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA\n03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;\n03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC\n03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;\n03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE\n03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;\n03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0\n03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;\n03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2\n03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;\n03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4\n03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;\n03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6\n03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;\n03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8\n03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;\n03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA\n03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;\n03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC\n03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;\n03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE\n03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A\n03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1\n03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9\n03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;037F;;037F\n03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395\n03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;\n03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;\n03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7\n03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;\n03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;\n03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA\n03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;\n03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;\n03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;\n03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;\n0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;\n0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;\n0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452;\n0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;\n0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;\n0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;\n0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;\n0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457;\n0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;\n0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;\n040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;\n040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B;\n040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;\n040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;\n040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E;\n040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;\n0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;\n0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;\n0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;\n0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;\n0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;\n0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;\n0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;\n0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;\n0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;\n0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;\n041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;\n041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;\n041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;\n041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;\n041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;\n041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;\n0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;\n0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;\n0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;\n0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;\n0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;\n0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;\n0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;\n0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;\n0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;\n0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;\n042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;\n042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;\n042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;\n042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;\n042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;\n042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;\n0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410\n0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411\n0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412\n0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413\n0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414\n0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415\n0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416\n0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417\n0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418\n0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419\n043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A\n043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B\n043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C\n043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D\n043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E\n043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F\n0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420\n0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421\n0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422\n0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423\n0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424\n0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425\n0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426\n0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427\n0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428\n0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429\n044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A\n044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B\n044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C\n044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D\n044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E\n044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F\n0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400\n0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401\n0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402\n0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403\n0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404\n0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405\n0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406\n0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407\n0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408\n0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409\n045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A\n045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B\n045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C\n045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D\n045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E\n045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F\n0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;\n0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460\n0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;\n0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462\n0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;\n0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464\n0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;\n0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466\n0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;\n0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468\n046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;\n046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A\n046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;\n046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C\n046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;\n046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E\n0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;\n0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470\n0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;\n0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472\n0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;\n0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474\n0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;\n0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476\n0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;\n0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478\n047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;\n047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A\n047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;\n047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C\n047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;\n047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E\n0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;\n0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480\n0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;\n0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;\n0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;\n0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;\n0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;\n0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;\n0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;\n0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;\n048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;\n048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A\n048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;\n048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C\n048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;\n048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E\n0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;\n0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490\n0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;\n0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492\n0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;\n0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494\n0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;\n0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496\n0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;\n0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498\n049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;\n049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A\n049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;\n049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C\n049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;\n049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E\n04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;\n04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0\n04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;\n04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2\n04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;\n04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4\n04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7;\n04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6\n04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;\n04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8\n04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;\n04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA\n04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;\n04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC\n04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;\n04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE\n04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;\n04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0\n04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;\n04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2\n04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5;\n04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4\n04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;\n04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6\n04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;\n04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8\n04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;\n04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA\n04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;\n04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC\n04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;\n04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE\n04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;\n04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;\n04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1\n04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;\n04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3\n04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;\n04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5\n04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;\n04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7\n04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;\n04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9\n04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;\n04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB\n04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;\n04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD\n04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0\n04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;\n04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0\n04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;\n04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2\n04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;\n04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4\n04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;\n04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6\n04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;\n04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8\n04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;\n04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA\n04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;\n04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC\n04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;\n04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE\n04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;\n04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0\n04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;\n04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2\n04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;\n04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4\n04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;\n04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6\n04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;\n04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8\n04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;\n04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA\n04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;\n04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC\n04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;\n04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE\n04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;\n04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0\n04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;\n04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2\n04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;\n04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4\n04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;\n04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6\n04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;\n04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8\n04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;\n04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA\n04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;\n04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC\n04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;\n04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE\n0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;\n0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500\n0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;\n0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502\n0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;\n0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504\n0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;\n0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506\n0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;\n0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508\n050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;\n050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A\n050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;\n050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C\n050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;\n050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E\n0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;\n0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510\n0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;\n0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512\n0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;\n0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514\n0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;\n0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516\n0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;\n0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518\n051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;\n051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A\n051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;\n051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C\n051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;\n051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E\n0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;\n0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520\n0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;\n0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522\n0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525;\n0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524\n0526;CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;Lu;0;L;;;;;N;;;;0527;\n0527;CYRILLIC SMALL LETTER SHHA WITH DESCENDER;Ll;0;L;;;;;N;;;0526;;0526\n0528;CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;Lu;0;L;;;;;N;;;;0529;\n0529;CYRILLIC SMALL LETTER EN WITH LEFT HOOK;Ll;0;L;;;;;N;;;0528;;0528\n052A;CYRILLIC CAPITAL LETTER DZZHE;Lu;0;L;;;;;N;;;;052B;\n052B;CYRILLIC SMALL LETTER DZZHE;Ll;0;L;;;;;N;;;052A;;052A\n052C;CYRILLIC CAPITAL LETTER DCHE;Lu;0;L;;;;;N;;;;052D;\n052D;CYRILLIC SMALL LETTER DCHE;Ll;0;L;;;;;N;;;052C;;052C\n052E;CYRILLIC CAPITAL LETTER EL WITH DESCENDER;Lu;0;L;;;;;N;;;;052F;\n052F;CYRILLIC SMALL LETTER EL WITH DESCENDER;Ll;0;L;;;;;N;;;052E;;052E\n0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;\n0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;\n0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;\n0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;\n0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;\n0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;\n0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;\n0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;\n0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;\n053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;\n053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;\n053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;\n053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;\n053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;\n053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;\n0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;\n0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;\n0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;\n0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;\n0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;\n0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;\n0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;\n0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;\n0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;\n0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;\n054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;\n054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;\n054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;\n054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;\n054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;\n054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;\n0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;\n0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;\n0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;\n0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;\n0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;\n0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;\n0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;\n0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;\n055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;\n055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;\n055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;\n055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;\n055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;\n055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;\n0560;ARMENIAN SMALL LETTER TURNED AYB;Ll;0;L;;;;;N;;;;;\n0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531\n0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532\n0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533\n0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534\n0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535\n0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536\n0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537\n0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538\n0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539\n056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A\n056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B\n056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C\n056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D\n056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E\n056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F\n0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540\n0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541\n0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542\n0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543\n0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544\n0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545\n0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546\n0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547\n0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548\n0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549\n057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A\n057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B\n057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C\n057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D\n057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E\n057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F\n0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550\n0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551\n0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552\n0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553\n0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554\n0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555\n0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556\n0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;\n0588;ARMENIAN SMALL LETTER YI WITH STROKE;Ll;0;L;;;;;N;;;;;\n0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;\n058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;\n058D;RIGHT-FACING ARMENIAN ETERNITY SIGN;So;0;ON;;;;;N;;;;;\n058E;LEFT-FACING ARMENIAN ETERNITY SIGN;So;0;ON;;;;;N;;;;;\n058F;ARMENIAN DRAM SIGN;Sc;0;ET;;;;;N;;;;;\n0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;\n0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;\n0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;\n0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;\n0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;\n0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;;\n0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;\n0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;;\n0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;\n059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;\n059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;\n059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;\n059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;\n059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;\n059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;\n05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;\n05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;\n05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;\n05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;\n05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;\n05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;;\n05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;\n05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;\n05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;;\n05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;\n05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;;\n05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;\n05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;\n05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;\n05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;\n05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;\n05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;\n05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;\n05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;\n05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;\n05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;\n05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;\n05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;\n05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;\n05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;\n05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;\n05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;\n05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;\n05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;;\n05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;;\n05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;\n05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;\n05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;\n05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;\n05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;\n05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;\n05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;\n05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;\n05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;\n05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;\n05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;\n05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;\n05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;\n05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;\n05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;\n05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;\n05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;\n05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;\n05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;\n05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;\n05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;\n05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;\n05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;\n05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;\n05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;\n05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;\n05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;\n05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;\n05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;\n05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;\n05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;\n05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;\n05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;\n05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;\n05EF;HEBREW YOD TRIANGLE;Lo;0;R;;;;;N;;;;;\n05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;\n05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;\n05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;\n05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;\n05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;\n0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;;\n0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;\n0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;\n0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;\n0604;ARABIC SIGN SAMVAT;Cf;0;AN;;;;;N;;;;;\n0605;ARABIC NUMBER MARK ABOVE;Cf;0;AN;;;;;N;;;;;\n0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;\n0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;\n0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;\n0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;\n060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;\n060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;\n060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;\n060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;\n060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;\n060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;\n0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;\n0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;\n0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;\n0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;\n0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;\n0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;\n0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;\n0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;\n0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;\n0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;\n061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;\n061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;\n061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;;\n061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;\n061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;\n0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;;\n0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;\n0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;\n0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;\n0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;\n0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;\n0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;\n0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;\n0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;\n0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;\n062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;\n062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;\n062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;\n062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;\n062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;\n062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;\n0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;\n0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;\n0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;\n0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;\n0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;\n0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;\n0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;\n0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;\n0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;\n0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;\n063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;\n063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;\n063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;\n0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;\n0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;\n0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;\n0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;\n0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;\n0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;\n0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;\n0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;\n0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;\n064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;\n064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;\n064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;\n064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;\n064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;\n064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;\n0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;\n0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;\n0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;\n0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;\n0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;\n0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;\n0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;\n0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;\n0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;\n0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;\n065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;\n065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;\n065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;\n065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;\n065F;ARABIC WAVY HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;\n0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;\n0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;\n0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;\n0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;\n0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;\n0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;\n0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;\n0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;\n0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;\n0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;\n066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;\n066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;\n066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;\n066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;\n066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;\n066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;\n0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;\n0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;\n0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;\n0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;\n0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;\n0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;\n0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;\n0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;\n0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;\n0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;\n067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;\n067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;\n067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;\n067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;\n067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;\n067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;\n0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;\n0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;\n0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;\n0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;\n0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;\n0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;\n0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;\n0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;\n0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;\n0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;\n068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;\n068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;\n068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;\n068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;\n068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;\n0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;\n0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;\n0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;\n0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;\n0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;\n0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;\n0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;\n0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;\n0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;\n069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;\n06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;\n06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;\n06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;\n06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;\n06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;\n06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;\n06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;\n06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;\n06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;\n06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;\n06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;\n06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;;\n06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;\n06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;\n06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;\n06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;\n06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;\n06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;\n06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;\n06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;\n06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;\n06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;\n06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;\n06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;\n06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;\n06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;\n06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;\n06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;\n06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;\n06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;\n06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;\n06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;\n06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;\n06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;\n06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;\n06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;\n06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;\n06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;\n06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;\n06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;\n06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;\n06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;\n06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;\n06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;\n06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;\n06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;\n06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;;\n06DE;ARABIC START OF RUB EL HIZB;So;0;ON;;;;;N;;;;;\n06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;\n06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;\n06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;\n06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;\n06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;\n06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;\n06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;\n06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;\n06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;\n06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;\n06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;\n06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;\n06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;\n06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;\n06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;\n06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;\n06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;\n06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;\n06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;\n06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;\n06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;\n06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;\n06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;\n06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;\n06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;\n06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;\n06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;\n06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;\n06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;\n06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;\n0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;\n0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;\n0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;\n0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;\n0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;\n0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;\n0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;\n0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;\n0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;\n0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;\n070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;\n070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;\n070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;\n070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;\n070F;SYRIAC ABBREVIATION MARK;Cf;0;AL;;;;;N;;;;;\n0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;\n0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;\n0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;\n0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;\n0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;\n0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;\n0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;\n0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;\n0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;\n0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;\n071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;\n071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;\n071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;\n071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;\n071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;\n071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;\n0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;\n0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;\n0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;\n0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;\n0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;\n0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;\n0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;\n0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;\n0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;\n0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;\n072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;\n072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;\n072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;\n072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;\n072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;\n072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;\n0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;\n0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;\n0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;\n0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;\n0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;\n0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;\n0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;\n0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;\n0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;\n0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;\n073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;\n073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;\n073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;\n073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;\n073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;\n073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;\n0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;\n0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;\n0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;\n0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;\n0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;\n0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;\n0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;\n0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;\n074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;\n074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;\n074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;\n074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;\n0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;\n0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;\n0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;\n0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;\n0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;\n075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;\n075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;\n075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;\n075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;\n0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;\n0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;\n0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;\n0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;\n076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;\n076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;\n076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;\n076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;\n076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;\n0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;\n0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;\n0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;\n0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;\n0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;\n0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;\n0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;\n0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;\n0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;\n0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;\n077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;\n077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;\n077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;\n077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;\n077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;\n077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;\n0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;\n0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;\n0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;\n0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;\n0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;\n0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;\n0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;\n0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;\n0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;\n078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;\n078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;\n078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;\n078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;\n078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;\n078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;\n0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;\n0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;\n0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;\n0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;\n0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;\n0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;\n0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;\n0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;\n0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;\n0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;\n079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;\n079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;\n079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;\n079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;\n079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;\n079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;\n07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;\n07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;\n07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;\n07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;\n07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;\n07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;\n07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;\n07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;\n07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;\n07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;\n07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;\n07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;\n07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;\n07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;\n07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;\n07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;\n07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;\n07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;\n07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;\n07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;\n07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;\n07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;\n07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;\n07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;\n07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;\n07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;\n07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;\n07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;\n07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;\n07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;\n07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;\n07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;\n07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;\n07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;\n07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;\n07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;\n07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;\n07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;\n07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;\n07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;\n07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;\n07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;\n07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;\n07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;\n07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;\n07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;\n07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;\n07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;\n07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;\n07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;\n07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;\n07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;\n07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;\n07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;\n07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;\n07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;\n07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;\n07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;\n07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;\n07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;\n07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;\n07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;\n07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;\n07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;\n07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;\n07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;\n07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;\n07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;\n07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;\n07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;\n07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;\n07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;\n07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;\n07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;\n07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;\n07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;\n07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;\n07FD;NKO DANTAYALAN;Mn;220;NSM;;;;;N;;;;;\n07FE;NKO DOROME SIGN;Sc;0;R;;;;;N;;;;;\n07FF;NKO TAMAN SIGN;Sc;0;R;;;;;N;;;;;\n0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;\n0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;\n0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;\n0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;;\n0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;;\n0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;;\n0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;;\n0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;;\n0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;;\n0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;;\n080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;;\n080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;;\n080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;;\n080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;;\n080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;;\n0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;;\n0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;;\n0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;;\n0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;;\n0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;;\n0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;;\n0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;;\n0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;;\n0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;;\n0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;;\n081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;\n081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;;\n081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;;\n081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;\n081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;;\n081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;;\n0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;;\n0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;;\n0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;;\n0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;;\n0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;\n0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;;\n0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;;\n0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;;\n0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;\n0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;;\n082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;\n082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;;\n082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;;\n082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;;\n0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;;\n0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;;\n0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;;\n0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;;\n0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;;\n0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;;\n0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;;\n0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;;\n0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;;\n0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;;\n083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;;\n083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;;\n083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;;\n083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;;\n083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;;\n0840;MANDAIC LETTER HALQA;Lo;0;R;;;;;N;;;;;\n0841;MANDAIC LETTER AB;Lo;0;R;;;;;N;;;;;\n0842;MANDAIC LETTER AG;Lo;0;R;;;;;N;;;;;\n0843;MANDAIC LETTER AD;Lo;0;R;;;;;N;;;;;\n0844;MANDAIC LETTER AH;Lo;0;R;;;;;N;;;;;\n0845;MANDAIC LETTER USHENNA;Lo;0;R;;;;;N;;;;;\n0846;MANDAIC LETTER AZ;Lo;0;R;;;;;N;;;;;\n0847;MANDAIC LETTER IT;Lo;0;R;;;;;N;;;;;\n0848;MANDAIC LETTER ATT;Lo;0;R;;;;;N;;;;;\n0849;MANDAIC LETTER AKSA;Lo;0;R;;;;;N;;;;;\n084A;MANDAIC LETTER AK;Lo;0;R;;;;;N;;;;;\n084B;MANDAIC LETTER AL;Lo;0;R;;;;;N;;;;;\n084C;MANDAIC LETTER AM;Lo;0;R;;;;;N;;;;;\n084D;MANDAIC LETTER AN;Lo;0;R;;;;;N;;;;;\n084E;MANDAIC LETTER AS;Lo;0;R;;;;;N;;;;;\n084F;MANDAIC LETTER IN;Lo;0;R;;;;;N;;;;;\n0850;MANDAIC LETTER AP;Lo;0;R;;;;;N;;;;;\n0851;MANDAIC LETTER ASZ;Lo;0;R;;;;;N;;;;;\n0852;MANDAIC LETTER AQ;Lo;0;R;;;;;N;;;;;\n0853;MANDAIC LETTER AR;Lo;0;R;;;;;N;;;;;\n0854;MANDAIC LETTER ASH;Lo;0;R;;;;;N;;;;;\n0855;MANDAIC LETTER AT;Lo;0;R;;;;;N;;;;;\n0856;MANDAIC LETTER DUSHENNA;Lo;0;R;;;;;N;;;;;\n0857;MANDAIC LETTER KAD;Lo;0;R;;;;;N;;;;;\n0858;MANDAIC LETTER AIN;Lo;0;R;;;;;N;;;;;\n0859;MANDAIC AFFRICATION MARK;Mn;220;NSM;;;;;N;;;;;\n085A;MANDAIC VOCALIZATION MARK;Mn;220;NSM;;;;;N;;;;;\n085B;MANDAIC GEMINATION MARK;Mn;220;NSM;;;;;N;;;;;\n085E;MANDAIC PUNCTUATION;Po;0;R;;;;;N;;;;;\n0860;SYRIAC LETTER MALAYALAM NGA;Lo;0;AL;;;;;N;;;;;\n0861;SYRIAC LETTER MALAYALAM JA;Lo;0;AL;;;;;N;;;;;\n0862;SYRIAC LETTER MALAYALAM NYA;Lo;0;AL;;;;;N;;;;;\n0863;SYRIAC LETTER MALAYALAM TTA;Lo;0;AL;;;;;N;;;;;\n0864;SYRIAC LETTER MALAYALAM NNA;Lo;0;AL;;;;;N;;;;;\n0865;SYRIAC LETTER MALAYALAM NNNA;Lo;0;AL;;;;;N;;;;;\n0866;SYRIAC LETTER MALAYALAM BHA;Lo;0;AL;;;;;N;;;;;\n0867;SYRIAC LETTER MALAYALAM RA;Lo;0;AL;;;;;N;;;;;\n0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;;\n0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;;\n086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;;\n08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;;\n08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;\n08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08A3;ARABIC LETTER TAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08A4;ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08A5;ARABIC LETTER QAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n08A6;ARABIC LETTER LAM WITH DOUBLE BAR;Lo;0;AL;;;;;N;;;;;\n08A7;ARABIC LETTER MEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08A8;ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;\n08A9;ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;\n08AA;ARABIC LETTER REH WITH LOOP;Lo;0;AL;;;;;N;;;;;\n08AB;ARABIC LETTER WAW WITH DOT WITHIN;Lo;0;AL;;;;;N;;;;;\n08AC;ARABIC LETTER ROHINGYA YEH;Lo;0;AL;;;;;N;;;;;\n08AD;ARABIC LETTER LOW ALEF;Lo;0;AL;;;;;N;;;;;\n08AE;ARABIC LETTER DAL WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n08AF;ARABIC LETTER SAD WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n08B0;ARABIC LETTER GAF WITH INVERTED STROKE;Lo;0;AL;;;;;N;;;;;\n08B1;ARABIC LETTER STRAIGHT WAW;Lo;0;AL;;;;;N;;;;;\n08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;;\n08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;\n08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;\n08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;\n08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;;\n08B9;ARABIC LETTER REH WITH SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;;\n08BA;ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;;\n08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;;\n08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;;\n08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;;\n08BE;ARABIC LETTER PEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n08BF;ARABIC LETTER TEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n08C0;ARABIC LETTER TTEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n08C1;ARABIC LETTER TCHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n08C2;ARABIC LETTER KEHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;\n08C3;ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08C4;ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;\n08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;\n08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;\n08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;\n08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;\n08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;\n08D6;ARABIC SMALL HIGH AIN;Mn;230;NSM;;;;;N;;;;;\n08D7;ARABIC SMALL HIGH QAF;Mn;230;NSM;;;;;N;;;;;\n08D8;ARABIC SMALL HIGH NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;;\n08D9;ARABIC SMALL LOW NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;;\n08DA;ARABIC SMALL HIGH WORD ATH-THALATHA;Mn;230;NSM;;;;;N;;;;;\n08DB;ARABIC SMALL HIGH WORD AS-SAJDA;Mn;230;NSM;;;;;N;;;;;\n08DC;ARABIC SMALL HIGH WORD AN-NISF;Mn;230;NSM;;;;;N;;;;;\n08DD;ARABIC SMALL HIGH WORD SAKTA;Mn;230;NSM;;;;;N;;;;;\n08DE;ARABIC SMALL HIGH WORD QIF;Mn;230;NSM;;;;;N;;;;;\n08DF;ARABIC SMALL HIGH WORD WAQFA;Mn;230;NSM;;;;;N;;;;;\n08E0;ARABIC SMALL HIGH FOOTNOTE MARKER;Mn;230;NSM;;;;;N;;;;;\n08E1;ARABIC SMALL HIGH SIGN SAFHA;Mn;230;NSM;;;;;N;;;;;\n08E2;ARABIC DISPUTED END OF AYAH;Cf;0;AN;;;;;N;;;;;\n08E3;ARABIC TURNED DAMMA BELOW;Mn;220;NSM;;;;;N;;;;;\n08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;;\n08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;;\n08E6;ARABIC CURLY KASRA;Mn;220;NSM;;;;;N;;;;;\n08E7;ARABIC CURLY FATHATAN;Mn;230;NSM;;;;;N;;;;;\n08E8;ARABIC CURLY DAMMATAN;Mn;230;NSM;;;;;N;;;;;\n08E9;ARABIC CURLY KASRATAN;Mn;220;NSM;;;;;N;;;;;\n08EA;ARABIC TONE ONE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;\n08EB;ARABIC TONE TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;\n08EC;ARABIC TONE LOOP ABOVE;Mn;230;NSM;;;;;N;;;;;\n08ED;ARABIC TONE ONE DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n08EE;ARABIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n08EF;ARABIC TONE LOOP BELOW;Mn;220;NSM;;;;;N;;;;;\n08F0;ARABIC OPEN FATHATAN;Mn;27;NSM;;;;;N;;;;;\n08F1;ARABIC OPEN DAMMATAN;Mn;28;NSM;;;;;N;;;;;\n08F2;ARABIC OPEN KASRATAN;Mn;29;NSM;;;;;N;;;;;\n08F3;ARABIC SMALL HIGH WAW;Mn;230;NSM;;;;;N;;;;;\n08F4;ARABIC FATHA WITH RING;Mn;230;NSM;;;;;N;;;;;\n08F5;ARABIC FATHA WITH DOT ABOVE;Mn;230;NSM;;;;;N;;;;;\n08F6;ARABIC KASRA WITH DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n08F7;ARABIC LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;\n08F8;ARABIC RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;\n08F9;ARABIC LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n08FA;ARABIC RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n08FB;ARABIC DOUBLE RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;\n08FC;ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT;Mn;230;NSM;;;;;N;;;;;\n08FD;ARABIC RIGHT ARROWHEAD ABOVE WITH DOT;Mn;230;NSM;;;;;N;;;;;\n08FE;ARABIC DAMMA WITH DOT;Mn;230;NSM;;;;;N;;;;;\n08FF;ARABIC MARK SIDEWAYS NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;\n0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;\n0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;\n0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;\n0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;\n0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;\n0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;\n090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;\n090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;\n090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;\n090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;\n0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;\n0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;\n0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;\n0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;\n0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;\n0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;\n0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;\n0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;\n0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;\n0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;\n091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;\n091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;\n091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;\n091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;\n091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;\n091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;\n0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;\n0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;\n0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;\n0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;\n0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;\n0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;\n0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;\n0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;\n092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;\n092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;\n092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;\n092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;\n092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;\n092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;\n0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;\n0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;\n0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;\n0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;\n0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;\n0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;\n0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;\n0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;\n0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;\n0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;\n093A;DEVANAGARI VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;\n093B;DEVANAGARI VOWEL SIGN OOE;Mc;0;L;;;;;N;;;;;\n093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;\n0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;\n0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;\n094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;\n094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;\n094F;DEVANAGARI VOWEL SIGN AW;Mc;0;L;;;;;N;;;;;\n0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;\n0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;\n0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;\n0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;\n0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;\n0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;;\n0956;DEVANAGARI VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;\n0957;DEVANAGARI VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;;\n0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;\n0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;\n095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;\n095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;\n095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;\n095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;\n095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;\n095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;\n0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;\n0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;\n0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;\n0973;DEVANAGARI LETTER OE;Lo;0;L;;;;;N;;;;;\n0974;DEVANAGARI LETTER OOE;Lo;0;L;;;;;N;;;;;\n0975;DEVANAGARI LETTER AW;Lo;0;L;;;;;N;;;;;\n0976;DEVANAGARI LETTER UE;Lo;0;L;;;;;N;;;;;\n0977;DEVANAGARI LETTER UUE;Lo;0;L;;;;;N;;;;;\n0978;DEVANAGARI LETTER MARWARI DDA;Lo;0;L;;;;;N;;;;;\n0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;;\n097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;;\n097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;\n097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;\n097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;\n097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;\n097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;\n0980;BENGALI ANJI;Lo;0;L;;;;;N;;;;;\n0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;\n0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;\n0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;\n0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;\n0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;\n098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;\n098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;\n0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;\n0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;\n0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;\n0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;\n0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;\n0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;\n0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;\n0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;\n099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;\n099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;\n099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;\n099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;\n099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;\n099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;\n09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;\n09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;\n09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;\n09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;\n09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;\n09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;\n09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;\n09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;\n09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;\n09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;\n09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;\n09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;\n09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;\n09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;\n09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;\n09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;\n09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;\n09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;\n09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;\n09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;\n09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;\n09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;\n09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;\n09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;\n09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;\n09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;\n09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;;\n09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;;\n09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;\n09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;\n09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;;\n09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;;\n09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;;\n09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;;\n09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;;\n09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;\n09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;\n09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;;\n09FC;BENGALI LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;\n09FD;BENGALI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n09FE;BENGALI SANDHI MARK;Mn;230;NSM;;;;;N;;;;;\n0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;\n0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;\n0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;\n0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;\n0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;\n0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;\n0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;\n0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;\n0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;\n0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;\n0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;\n0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;\n0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;\n0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;\n0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;\n0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;\n0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;\n0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;\n0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;\n0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;\n0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;\n0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;\n0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;\n0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;\n0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;\n0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;\n0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;\n0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;\n0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;\n0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;\n0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;\n0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;\n0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;\n0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;\n0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;\n0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;\n0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;\n0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;\n0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;\n0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;\n0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;\n0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;\n0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;\n0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;\n0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;\n0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;;\n0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;\n0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;\n0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;\n0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;\n0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;\n0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;\n0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;\n0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;\n0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;\n0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;\n0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;\n0A76;GURMUKHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;\n0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;\n0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;\n0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;\n0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;\n0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;\n0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;\n0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;\n0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;\n0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;\n0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;\n0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;\n0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;\n0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;\n0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;\n0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;\n0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;\n0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;\n0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;\n0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;\n0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;\n0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;\n0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;\n0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;\n0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;\n0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;\n0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;\n0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;\n0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;\n0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;\n0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;\n0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;\n0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;\n0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;\n0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;\n0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;\n0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;\n0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;\n0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;\n0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;\n0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;\n0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;\n0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;\n0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;\n0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;\n0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;\n0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;\n0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0AF0;GUJARATI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;\n0AF9;GUJARATI LETTER ZHA;Lo;0;L;;;;;N;;;;;\n0AFA;GUJARATI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;\n0AFB;GUJARATI SIGN SHADDA;Mn;0;NSM;;;;;N;;;;;\n0AFC;GUJARATI SIGN MADDAH;Mn;0;NSM;;;;;N;;;;;\n0AFD;GUJARATI SIGN THREE-DOT NUKTA ABOVE;Mn;0;NSM;;;;;N;;;;;\n0AFE;GUJARATI SIGN CIRCLE NUKTA ABOVE;Mn;0;NSM;;;;;N;;;;;\n0AFF;GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE;Mn;0;NSM;;;;;N;;;;;\n0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;\n0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;\n0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;\n0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;\n0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;\n0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;\n0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;\n0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;\n0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;\n0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;\n0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;\n0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;\n0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;\n0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;\n0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;\n0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;\n0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;\n0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;\n0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;\n0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;\n0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;\n0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;\n0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;\n0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;\n0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;\n0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;\n0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;\n0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;\n0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;\n0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;\n0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;\n0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;\n0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;\n0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;\n0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;\n0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;\n0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;\n0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;\n0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;\n0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;\n0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;\n0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;\n0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;\n0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;\n0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;\n0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0B55;ORIYA SIGN OVERLINE;Mn;0;NSM;;;;;N;;;;;\n0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;\n0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;\n0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;\n0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;\n0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;\n0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;\n0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;\n0B72;ORIYA FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;\n0B73;ORIYA FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;\n0B74;ORIYA FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;\n0B75;ORIYA FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;\n0B76;ORIYA FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;\n0B77;ORIYA FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;\n0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;\n0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;\n0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;\n0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;\n0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;\n0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;\n0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;\n0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;\n0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;\n0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;\n0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;\n0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;\n0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;\n0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;\n0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;\n0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;\n0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;\n0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;\n0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;\n0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;\n0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;\n0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;\n0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;\n0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;\n0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;\n0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;\n0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;\n0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;\n0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;\n0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;\n0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;\n0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;\n0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;\n0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;\n0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;\n0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;\n0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;\n0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;\n0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;\n0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;\n0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;\n0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;\n0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;\n0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;\n0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;\n0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;;\n0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;;\n0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;;\n0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;;\n0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;;\n0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;;\n0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;;\n0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;;\n0C00;TELUGU SIGN COMBINING CANDRABINDU ABOVE;Mn;0;NSM;;;;;N;;;;;\n0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;\n0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0C04;TELUGU SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;\n0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;\n0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;\n0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;\n0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;\n0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;\n0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;\n0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;\n0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;\n0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;\n0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;\n0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;\n0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;\n0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;\n0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;\n0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;\n0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;\n0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;\n0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;\n0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;\n0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;\n0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;\n0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;\n0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;\n0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;\n0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;\n0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;\n0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;\n0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;\n0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;\n0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;\n0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;\n0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;\n0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;\n0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;\n0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;\n0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;\n0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;\n0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;\n0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;\n0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;\n0C34;TELUGU LETTER LLLA;Lo;0;L;;;;;N;;;;;\n0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;\n0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;\n0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;\n0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;\n0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;\n0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\n0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;\n0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;\n0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;\n0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;\n0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;\n0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;\n0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;\n0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;\n0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;\n0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;;\n0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0C77;TELUGU SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\n0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;\n0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;\n0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;\n0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;\n0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;\n0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;\n0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;\n0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;\n0C80;KANNADA SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;\n0C81;KANNADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0C84;KANNADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\n0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;\n0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;\n0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;\n0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;\n0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;\n0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;\n0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;\n0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;\n0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;\n0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;\n0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;\n0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;\n0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;\n0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;\n0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;\n0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;\n0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;\n0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;\n0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;\n0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;\n0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;\n0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;\n0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;\n0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;\n0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;\n0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;\n0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;\n0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;\n0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;\n0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;\n0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;\n0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;\n0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;\n0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;\n0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;\n0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;\n0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;\n0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;\n0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;\n0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;\n0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;\n0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;\n0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;\n0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;\n0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;\n0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;\n0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;\n0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;\n0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;\n0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;\n0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;\n0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;\n0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;\n0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;\n0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;\n0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;\n0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;\n0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;\n0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n0D04;MALAYALAM LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;\n0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;\n0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;\n0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;\n0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;\n0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;\n0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;\n0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;\n0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;\n0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;\n0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;\n0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;\n0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;\n0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;\n0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;\n0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;\n0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;\n0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;\n0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;\n0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;\n0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;\n0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;\n0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;\n0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;\n0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;\n0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;\n0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;\n0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;\n0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;\n0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;\n0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;\n0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;\n0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;\n0D29;MALAYALAM LETTER NNNA;Lo;0;L;;;;;N;;;;;\n0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;\n0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;\n0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;\n0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;\n0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;\n0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;\n0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;\n0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;\n0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;\n0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;\n0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;\n0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;\n0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;\n0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;\n0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;\n0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;\n0D3A;MALAYALAM LETTER TTTA;Lo;0;L;;;;;N;;;;;\n0D3B;MALAYALAM SIGN VERTICAL BAR VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0D3C;MALAYALAM SIGN CIRCULAR VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;\n0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;\n0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;\n0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;\n0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;;\n0D4F;MALAYALAM SIGN PARA;So;0;L;;;;;N;;;;;\n0D54;MALAYALAM LETTER CHILLU M;Lo;0;L;;;;;N;;;;;\n0D55;MALAYALAM LETTER CHILLU Y;Lo;0;L;;;;;N;;;;;\n0D56;MALAYALAM LETTER CHILLU LLL;Lo;0;L;;;;;N;;;;;\n0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;\n0D58;MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;\n0D59;MALAYALAM FRACTION ONE FORTIETH;No;0;L;;;;1/40;N;;;;;\n0D5A;MALAYALAM FRACTION THREE EIGHTIETHS;No;0;L;;;;3/80;N;;;;;\n0D5B;MALAYALAM FRACTION ONE TWENTIETH;No;0;L;;;;1/20;N;;;;;\n0D5C;MALAYALAM FRACTION ONE TENTH;No;0;L;;;;1/10;N;;;;;\n0D5D;MALAYALAM FRACTION THREE TWENTIETHS;No;0;L;;;;3/20;N;;;;;\n0D5E;MALAYALAM FRACTION ONE FIFTH;No;0;L;;;;1/5;N;;;;;\n0D5F;MALAYALAM LETTER ARCHAIC II;Lo;0;L;;;;;N;;;;;\n0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;\n0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;\n0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;\n0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;\n0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;\n0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;\n0D76;MALAYALAM FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;\n0D77;MALAYALAM FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;\n0D78;MALAYALAM FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;\n0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;\n0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;\n0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;\n0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;\n0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;\n0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;\n0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;\n0D81;SINHALA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;\n0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;\n0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;\n0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;\n0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;\n0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;\n0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;\n0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;\n0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;\n0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;\n0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;\n0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;\n0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;\n0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;\n0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;\n0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;\n0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;\n0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;\n0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;\n0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;\n0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;\n0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;\n0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;\n0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;\n0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;\n0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;\n0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;\n0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;\n0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;\n0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;\n0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;\n0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;\n0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;\n0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;\n0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;\n0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;\n0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;\n0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;\n0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;\n0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;\n0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;\n0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;\n0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;\n0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;\n0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;\n0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;\n0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;\n0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;\n0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;\n0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;\n0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;\n0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;\n0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;\n0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;\n0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;\n0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;\n0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;\n0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;\n0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;\n0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;\n0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;\n0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;\n0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;\n0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;\n0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;\n0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;\n0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;\n0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;\n0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;\n0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;\n0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;\n0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;\n0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;\n0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;\n0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;\n0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;\n0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;\n0DE6;SINHALA LITH DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0DE7;SINHALA LITH DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0DE8;SINHALA LITH DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0DE9;SINHALA LITH DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0DEA;SINHALA LITH DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0DEB;SINHALA LITH DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0DEC;SINHALA LITH DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0DED;SINHALA LITH DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0DEE;SINHALA LITH DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0DEF;SINHALA LITH DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;\n0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;\n0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;\n0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;\n0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;\n0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;\n0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;\n0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;\n0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;\n0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;\n0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;\n0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;\n0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;\n0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;\n0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;\n0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;\n0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;\n0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;\n0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;\n0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;\n0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;\n0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;\n0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;\n0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;\n0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;\n0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;\n0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;\n0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;\n0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;\n0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;\n0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;\n0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;\n0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;\n0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;\n0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;\n0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;\n0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;\n0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;\n0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;\n0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;\n0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;\n0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;\n0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;\n0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;\n0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;\n0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;\n0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;\n0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;\n0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;\n0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;;\n0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;\n0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;\n0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;\n0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;\n0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;\n0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;\n0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;\n0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;;\n0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;\n0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;\n0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;\n0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;\n0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;\n0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;\n0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;\n0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;\n0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;\n0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;\n0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;\n0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;\n0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;\n0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;\n0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;\n0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;\n0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;\n0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;;\n0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;\n0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;\n0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;\n0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;\n0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;\n0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;\n0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;\n0E86;LAO LETTER PALI GHA;Lo;0;L;;;;;N;;;;;\n0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;\n0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;\n0E89;LAO LETTER PALI CHA;Lo;0;L;;;;;N;;;;;\n0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;\n0E8C;LAO LETTER PALI JHA;Lo;0;L;;;;;N;;;;;\n0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;\n0E8E;LAO LETTER PALI NYA;Lo;0;L;;;;;N;;;;;\n0E8F;LAO LETTER PALI TTA;Lo;0;L;;;;;N;;;;;\n0E90;LAO LETTER PALI TTHA;Lo;0;L;;;;;N;;;;;\n0E91;LAO LETTER PALI DDA;Lo;0;L;;;;;N;;;;;\n0E92;LAO LETTER PALI DDHA;Lo;0;L;;;;;N;;;;;\n0E93;LAO LETTER PALI NNA;Lo;0;L;;;;;N;;;;;\n0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;\n0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;\n0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;\n0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;\n0E98;LAO LETTER PALI DHA;Lo;0;L;;;;;N;;;;;\n0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;\n0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;\n0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;\n0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;\n0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;\n0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;\n0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;\n0EA0;LAO LETTER PALI BHA;Lo;0;L;;;;;N;;;;;\n0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;\n0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;\n0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;\n0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;\n0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;\n0EA8;LAO LETTER SANSKRIT SHA;Lo;0;L;;;;;N;;;;;\n0EA9;LAO LETTER SANSKRIT SSA;Lo;0;L;;;;;N;;;;;\n0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;\n0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;\n0EAC;LAO LETTER PALI LLA;Lo;0;L;;;;;N;;;;;\n0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;\n0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;\n0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;\n0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;\n0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;\n0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;\n0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;\n0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;\n0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;\n0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;\n0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;\n0EBA;LAO SIGN PALI VIRAMA;Mn;9;NSM;;;;;N;;;;;\n0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;\n0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;\n0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;\n0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;\n0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;\n0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;\n0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;\n0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;\n0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;\n0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;\n0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;\n0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;\n0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;\n0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;\n0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;\n0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;\n0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;\n0EDE;LAO LETTER KHMU GO;Lo;0;L;;;;;N;;;;;\n0EDF;LAO LETTER KHMU NYO;Lo;0;L;;;;;N;;;;;\n0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;\n0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;;\n0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;;\n0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;;\n0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;;\n0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;\n0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;;\n0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;;\n0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;;\n0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;;\n0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;;\n0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;;\n0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;;;;\n0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;;\n0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;;\n0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;;\n0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;;\n0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;;\n0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;;\n0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;;\n0F14;TIBETAN MARK GTER TSHEG;Po;0;L;;;;;N;TIBETAN COMMA;;;;\n0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;;\n0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;;\n0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;;\n0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;;\n0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;;\n0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;;\n0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;;\n0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;;\n0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;;\n0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;;\n0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;;\n0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;\n0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;\n0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;\n0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;\n0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;\n0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;\n0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;\n0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;\n0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;\n0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;\n0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;;\n0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;;\n0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;;\n0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;;\n0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;;\n0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;;\n0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;;\n0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;;\n0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;;\n0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;;\n0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;;\n0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;;\n0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;\n0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;\n0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;\n0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;\n0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;\n0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;\n0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;\n0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;\n0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;\n0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;\n0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;\n0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;\n0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;\n0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;\n0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;\n0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;\n0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;\n0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;\n0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;\n0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;\n0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;\n0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;\n0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;\n0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;\n0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;\n0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;\n0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;\n0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;\n0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;\n0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;\n0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;\n0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;\n0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;\n0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;\n0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;\n0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;\n0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;\n0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;\n0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;\n0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;\n0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;\n0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;;\n0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;\n0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;;\n0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;\n0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;\n0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;\n0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;\n0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;\n0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;\n0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;\n0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;\n0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;\n0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;\n0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;\n0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;\n0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;\n0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;;\n0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;;\n0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;\n0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;\n0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;;\n0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;;\n0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;\n0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;\n0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;;\n0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;;\n0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;;\n0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;;\n0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;;\n0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;;\n0F8C;TIBETAN SIGN INVERTED MCHU CAN;Lo;0;L;;;;;N;;;;;\n0F8D;TIBETAN SUBJOINED SIGN LCE TSA CAN;Mn;0;NSM;;;;;N;;;;;\n0F8E;TIBETAN SUBJOINED SIGN MCHU CAN;Mn;0;NSM;;;;;N;;;;;\n0F8F;TIBETAN SUBJOINED SIGN INVERTED MCHU CAN;Mn;0;NSM;;;;;N;;;;;\n0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;\n0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;\n0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;\n0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;\n0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;\n0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;\n0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;\n0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;\n0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;\n0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;\n0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;\n0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;\n0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;\n0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;\n0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;\n0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;\n0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;\n0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;\n0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;\n0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;\n0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;\n0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;\n0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;\n0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;\n0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;\n0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;\n0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;\n0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;\n0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;;\n0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;\n0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;\n0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;\n0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;;\n0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;;\n0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;\n0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;\n0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;\n0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;\n0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;\n0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;\n0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;\n0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;;\n0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;;\n0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;;\n0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;;\n0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;;\n0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;\n0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;\n0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;;\n0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;;\n0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;;\n0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;;\n0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;;\n0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;;\n0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;;\n0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;;\n0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;;\n0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;;\n0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;;\n0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;;\n0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;\n0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;;\n0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;;\n0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;;\n0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;;\n0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;\n0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;\n0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;\n0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;\n0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;\n0FD9;TIBETAN MARK LEADING MCHAN RTAGS;Po;0;L;;;;;N;;;;;\n0FDA;TIBETAN MARK TRAILING MCHAN RTAGS;Po;0;L;;;;;N;;;;;\n1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;\n1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;\n1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;\n1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;\n1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;\n1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;\n1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;\n1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;\n1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;\n1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;\n100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;\n100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;\n100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;\n100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;\n100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;\n100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;\n1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;\n1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;\n1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;\n1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;\n1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;\n1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;\n1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;\n1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;\n1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;\n1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;\n101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;\n101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;\n101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;\n101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;\n101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;\n101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;\n1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;\n1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;\n1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;;\n1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;\n1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;\n1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;\n1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;\n1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;\n1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;\n1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;\n102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;\n102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;\n102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;\n1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;\n1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;;\n1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;\n1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;\n103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;\n103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;\n103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;\n103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;\n103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;;\n1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;\n104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;\n104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;\n104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;\n104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;\n104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;\n1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;\n1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;\n1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;\n1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;\n1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;\n105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;\n105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;\n105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;\n105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;\n105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;\n1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;\n1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;\n1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;\n1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;\n1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;\n1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;\n1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;\n1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;\n1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;\n1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;\n106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;\n106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;\n106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;\n106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;\n106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;\n106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;\n1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;\n1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;\n1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;\n1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;\n1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;\n1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;\n1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;\n1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;\n1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;\n1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;\n107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;\n107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;\n107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;\n107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;\n107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;\n107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;\n1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;\n1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;\n1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;\n1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;\n1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;\n1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;\n1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;\n1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;\n1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;\n1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;\n108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;\n108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;\n108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;\n108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;\n108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;\n108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;\n1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;;\n109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;;\n109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;;\n109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;;\n109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;\n109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;\n10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00;\n10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01;\n10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02;\n10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03;\n10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04;\n10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05;\n10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06;\n10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07;\n10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08;\n10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09;\n10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A;\n10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B;\n10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C;\n10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D;\n10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E;\n10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F;\n10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10;\n10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11;\n10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12;\n10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13;\n10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14;\n10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15;\n10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16;\n10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17;\n10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18;\n10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19;\n10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A;\n10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B;\n10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C;\n10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D;\n10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E;\n10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F;\n10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20;\n10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21;\n10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22;\n10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23;\n10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24;\n10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25;\n10C7;GEORGIAN CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;2D27;\n10CD;GEORGIAN CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;2D2D;\n10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;1C90;;10D0\n10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;1C91;;10D1\n10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;1C92;;10D2\n10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;1C93;;10D3\n10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;1C94;;10D4\n10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;1C95;;10D5\n10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;1C96;;10D6\n10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;1C97;;10D7\n10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;1C98;;10D8\n10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;1C99;;10D9\n10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;1C9A;;10DA\n10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;1C9B;;10DB\n10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;1C9C;;10DC\n10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;1C9D;;10DD\n10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;1C9E;;10DE\n10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;1C9F;;10DF\n10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;1CA0;;10E0\n10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;1CA1;;10E1\n10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;1CA2;;10E2\n10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;1CA3;;10E3\n10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;1CA4;;10E4\n10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;1CA5;;10E5\n10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;1CA6;;10E6\n10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;1CA7;;10E7\n10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;1CA8;;10E8\n10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;1CA9;;10E9\n10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;1CAA;;10EA\n10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;1CAB;;10EB\n10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;1CAC;;10EC\n10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;1CAD;;10ED\n10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;1CAE;;10EE\n10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;1CAF;;10EF\n10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;1CB0;;10F0\n10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;1CB1;;10F1\n10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;1CB2;;10F2\n10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;1CB3;;10F3\n10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;1CB4;;10F4\n10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;1CB5;;10F5\n10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;1CB6;;10F6\n10F7;GEORGIAN LETTER YN;Ll;0;L;;;;;N;;;1CB7;;10F7\n10F8;GEORGIAN LETTER ELIFI;Ll;0;L;;;;;N;;;1CB8;;10F8\n10F9;GEORGIAN LETTER TURNED GAN;Ll;0;L;;;;;N;;;1CB9;;10F9\n10FA;GEORGIAN LETTER AIN;Ll;0;L;;;;;N;;;1CBA;;10FA\n10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;\n10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;\n10FD;GEORGIAN LETTER AEN;Ll;0;L;;;;;N;;;1CBD;;10FD\n10FE;GEORGIAN LETTER HARD SIGN;Ll;0;L;;;;;N;;;1CBE;;10FE\n10FF;GEORGIAN LETTER LABIAL SIGN;Ll;0;L;;;;;N;;;1CBF;;10FF\n1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;\n1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;\n1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;\n1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;\n1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;\n1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;\n1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;\n1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;\n1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;\n1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;\n110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;\n110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;\n110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;\n110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;\n110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;\n110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;\n1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;\n1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;\n1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;\n1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;\n1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;\n1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;\n1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;\n1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;\n1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;\n1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;\n111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;\n111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;\n111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;\n111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;\n111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;\n111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;\n1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;\n1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;\n1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\n1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;\n1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;\n1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;\n1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;\n1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;\n1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;\n1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;\n112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;\n112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\n112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;\n112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\n112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;\n112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;\n1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;\n1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;\n1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;\n1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;\n1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;\n1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;\n1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;\n1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;\n1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;\n1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;\n113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;\n113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;\n113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;\n113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;\n113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;\n113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;\n1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;\n1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;\n1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;\n1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;\n1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;\n1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;\n1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;\n1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;\n1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;\n1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;\n114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;\n114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;\n114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;\n114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;\n114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;\n114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;\n1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;\n1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;\n1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;\n1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;\n1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;\n1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;\n1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;\n1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;\n1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;\n1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;\n115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;;\n115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;\n115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;\n115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;\n115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;\n115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;\n1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;\n1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;\n1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;\n1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;\n1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;\n1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;\n1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;\n1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;\n1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;\n1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;\n116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;\n116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;\n116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;\n116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;\n116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;\n116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;\n1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;\n1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;\n1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;\n1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;\n1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;\n1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;\n1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;\n1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;\n1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;\n1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;\n117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;\n117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;\n117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;\n117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;\n117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;\n117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;\n1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;\n1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;\n1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;\n1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;\n1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;\n1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;\n1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;\n1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;\n1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;\n1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;\n118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;\n118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;\n118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;\n118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;\n118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;\n118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;\n1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;\n1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;\n1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;\n1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;\n1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;\n1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;\n1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;\n1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;\n1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;\n1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;\n119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;\n119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;\n119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;\n119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;\n119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;\n119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;\n11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;\n11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;\n11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;\n11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;;\n11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;;\n11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;;\n11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;;\n11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;;\n11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;\n11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;\n11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;\n11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;\n11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;\n11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;\n11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;\n11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;\n11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;\n11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;\n11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;\n11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;\n11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;;\n11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;\n11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;\n11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;\n11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;\n11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;\n11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;\n11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;\n11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;\n11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;\n11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;\n11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;\n11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;\n11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;\n11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;\n11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;\n11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\n11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;\n11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;\n11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;\n11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;\n11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;\n11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;\n11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;\n11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;\n11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;\n11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;\n11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;\n11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;\n11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;\n11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;\n11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;\n11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;\n11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\n11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;\n11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;\n11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;\n11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;\n11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;\n11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;\n11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;\n11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;\n11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;\n11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;\n11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;\n11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;\n11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;\n11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;\n11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;\n11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;\n11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\n11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\n11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;\n11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;\n11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;\n11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;\n11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;\n11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;\n11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;\n11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;\n11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;\n11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;\n11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;\n11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;\n11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;\n11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;\n11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;\n11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;\n11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;\n11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;\n11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;;\n11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;;\n11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;;\n11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;;\n11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;\n11FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;\n1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;\n1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;\n1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;\n1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;\n1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;\n1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;\n1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;\n1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;\n1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;\n1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;\n120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;\n120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;\n120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;\n120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;\n120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;\n120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;\n1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;\n1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;\n1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;\n1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;\n1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;\n1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;\n1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;\n1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;\n1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;\n1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;\n121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;\n121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;\n121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;\n121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;\n121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;\n121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;\n1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;\n1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;\n1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;\n1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;\n1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;\n1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;\n1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;\n1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;\n1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;\n1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;\n122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;\n122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;\n122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;\n122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;\n122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;\n122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;\n1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;\n1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;\n1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;\n1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;\n1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;\n1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;\n1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;\n1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;\n1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;\n1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;\n123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;\n123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;\n123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;\n123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;\n123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;\n123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;\n1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;\n1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;\n1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;\n1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;\n1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;\n1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;\n1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;\n1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;\n1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;\n124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;\n124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;\n124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;\n124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;\n1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;\n1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;\n1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;\n1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;\n1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;\n1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;\n1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;\n1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;\n125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;\n125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;\n125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;\n125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;\n1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;\n1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;\n1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;\n1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;\n1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;\n1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;\n1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;\n1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;\n1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;\n1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;\n126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;\n126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;\n126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;\n126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;\n126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;\n126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;\n1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;\n1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;\n1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;\n1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;\n1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;\n1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;\n1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;\n1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;\n1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;\n1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;\n127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;\n127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;\n127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;\n127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;\n127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;\n127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;\n1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;\n1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;\n1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;\n1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;\n1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;\n1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;\n1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;\n1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;\n1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;\n128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;\n128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;\n128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;\n128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;\n1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;\n1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;\n1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;\n1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;\n1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;\n1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;\n1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;\n1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;\n1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;\n1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;\n129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;\n129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;\n129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;\n129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;\n129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;\n129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;\n12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;\n12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;\n12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;\n12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;\n12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;\n12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;\n12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;\n12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;\n12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;\n12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;\n12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;\n12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;\n12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;\n12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;\n12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;\n12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;\n12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;\n12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;\n12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;\n12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;\n12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;\n12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;\n12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;\n12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;\n12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;\n12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;\n12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;\n12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;\n12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;\n12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;\n12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;\n12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;\n12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;\n12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;\n12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;\n12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;\n12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;\n12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;\n12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;\n12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;\n12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;\n12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;\n12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;\n12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;\n12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;\n12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;\n12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;\n12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;\n12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;\n12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;\n12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;\n12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;\n12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;\n12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;\n12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;\n12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;\n12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;\n12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;\n12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;\n12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;\n12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;\n12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;\n12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;\n12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;\n12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;\n12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;\n12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;\n12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;\n12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;\n12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;\n12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;\n12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;\n12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;\n12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;\n12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;\n12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;\n12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;\n12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;\n12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;\n12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;\n12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;\n12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;\n12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;\n12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;\n12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;\n12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;\n12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;\n12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;\n1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;\n1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;\n1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;\n1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;\n1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;\n1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;\n1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;\n1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;\n1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;\n1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;\n130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;\n130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;\n130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;\n130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;\n130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;\n130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;\n1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;\n1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;\n1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;\n1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;\n1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;\n1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;\n1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;\n131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;\n131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;\n131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;\n131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;\n131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;\n131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;\n1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;\n1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;\n1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;\n1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;\n1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;\n1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;\n1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;\n1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;\n1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;\n1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;\n132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;\n132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;\n132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;\n132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;\n132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;\n132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;\n1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;\n1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;\n1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;\n1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;\n1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;\n1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;\n1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;\n1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;\n1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;\n1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;\n133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;\n133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;\n133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;\n133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;\n133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;\n133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;\n1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;\n1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;\n1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;\n1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;\n1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;\n1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;\n1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;\n1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;\n1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;\n1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;\n134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;\n134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;\n134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;\n134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;\n134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;\n134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;\n1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;\n1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;\n1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;\n1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;\n1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;\n1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;\n1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;\n1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;\n1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;\n1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;\n135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;\n135D;ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK;Mn;230;NSM;;;;;N;;;;;\n135E;ETHIOPIC COMBINING VOWEL LENGTH MARK;Mn;230;NSM;;;;;N;;;;;\n135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;\n1360;ETHIOPIC SECTION MARK;Po;0;L;;;;;N;;;;;\n1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;\n1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;\n1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;\n1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;\n1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;\n1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;\n1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;\n1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;\n1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;\n136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;\n136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;\n136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;\n136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;\n136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;\n136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;\n1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;\n1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;\n1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;\n1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;\n1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;\n1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;\n1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;\n1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;\n1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;\n137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;\n137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;\n137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;\n1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;\n1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;\n1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;\n1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;\n1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;\n1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;\n1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;\n1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;\n1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;\n1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;\n138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;\n138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;\n138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;\n138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;\n138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;\n138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;\n1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;\n1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;\n1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;\n1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;\n1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;\n1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;\n1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;\n1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;\n1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;\n1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;\n13A0;CHEROKEE LETTER A;Lu;0;L;;;;;N;;;;AB70;\n13A1;CHEROKEE LETTER E;Lu;0;L;;;;;N;;;;AB71;\n13A2;CHEROKEE LETTER I;Lu;0;L;;;;;N;;;;AB72;\n13A3;CHEROKEE LETTER O;Lu;0;L;;;;;N;;;;AB73;\n13A4;CHEROKEE LETTER U;Lu;0;L;;;;;N;;;;AB74;\n13A5;CHEROKEE LETTER V;Lu;0;L;;;;;N;;;;AB75;\n13A6;CHEROKEE LETTER GA;Lu;0;L;;;;;N;;;;AB76;\n13A7;CHEROKEE LETTER KA;Lu;0;L;;;;;N;;;;AB77;\n13A8;CHEROKEE LETTER GE;Lu;0;L;;;;;N;;;;AB78;\n13A9;CHEROKEE LETTER GI;Lu;0;L;;;;;N;;;;AB79;\n13AA;CHEROKEE LETTER GO;Lu;0;L;;;;;N;;;;AB7A;\n13AB;CHEROKEE LETTER GU;Lu;0;L;;;;;N;;;;AB7B;\n13AC;CHEROKEE LETTER GV;Lu;0;L;;;;;N;;;;AB7C;\n13AD;CHEROKEE LETTER HA;Lu;0;L;;;;;N;;;;AB7D;\n13AE;CHEROKEE LETTER HE;Lu;0;L;;;;;N;;;;AB7E;\n13AF;CHEROKEE LETTER HI;Lu;0;L;;;;;N;;;;AB7F;\n13B0;CHEROKEE LETTER HO;Lu;0;L;;;;;N;;;;AB80;\n13B1;CHEROKEE LETTER HU;Lu;0;L;;;;;N;;;;AB81;\n13B2;CHEROKEE LETTER HV;Lu;0;L;;;;;N;;;;AB82;\n13B3;CHEROKEE LETTER LA;Lu;0;L;;;;;N;;;;AB83;\n13B4;CHEROKEE LETTER LE;Lu;0;L;;;;;N;;;;AB84;\n13B5;CHEROKEE LETTER LI;Lu;0;L;;;;;N;;;;AB85;\n13B6;CHEROKEE LETTER LO;Lu;0;L;;;;;N;;;;AB86;\n13B7;CHEROKEE LETTER LU;Lu;0;L;;;;;N;;;;AB87;\n13B8;CHEROKEE LETTER LV;Lu;0;L;;;;;N;;;;AB88;\n13B9;CHEROKEE LETTER MA;Lu;0;L;;;;;N;;;;AB89;\n13BA;CHEROKEE LETTER ME;Lu;0;L;;;;;N;;;;AB8A;\n13BB;CHEROKEE LETTER MI;Lu;0;L;;;;;N;;;;AB8B;\n13BC;CHEROKEE LETTER MO;Lu;0;L;;;;;N;;;;AB8C;\n13BD;CHEROKEE LETTER MU;Lu;0;L;;;;;N;;;;AB8D;\n13BE;CHEROKEE LETTER NA;Lu;0;L;;;;;N;;;;AB8E;\n13BF;CHEROKEE LETTER HNA;Lu;0;L;;;;;N;;;;AB8F;\n13C0;CHEROKEE LETTER NAH;Lu;0;L;;;;;N;;;;AB90;\n13C1;CHEROKEE LETTER NE;Lu;0;L;;;;;N;;;;AB91;\n13C2;CHEROKEE LETTER NI;Lu;0;L;;;;;N;;;;AB92;\n13C3;CHEROKEE LETTER NO;Lu;0;L;;;;;N;;;;AB93;\n13C4;CHEROKEE LETTER NU;Lu;0;L;;;;;N;;;;AB94;\n13C5;CHEROKEE LETTER NV;Lu;0;L;;;;;N;;;;AB95;\n13C6;CHEROKEE LETTER QUA;Lu;0;L;;;;;N;;;;AB96;\n13C7;CHEROKEE LETTER QUE;Lu;0;L;;;;;N;;;;AB97;\n13C8;CHEROKEE LETTER QUI;Lu;0;L;;;;;N;;;;AB98;\n13C9;CHEROKEE LETTER QUO;Lu;0;L;;;;;N;;;;AB99;\n13CA;CHEROKEE LETTER QUU;Lu;0;L;;;;;N;;;;AB9A;\n13CB;CHEROKEE LETTER QUV;Lu;0;L;;;;;N;;;;AB9B;\n13CC;CHEROKEE LETTER SA;Lu;0;L;;;;;N;;;;AB9C;\n13CD;CHEROKEE LETTER S;Lu;0;L;;;;;N;;;;AB9D;\n13CE;CHEROKEE LETTER SE;Lu;0;L;;;;;N;;;;AB9E;\n13CF;CHEROKEE LETTER SI;Lu;0;L;;;;;N;;;;AB9F;\n13D0;CHEROKEE LETTER SO;Lu;0;L;;;;;N;;;;ABA0;\n13D1;CHEROKEE LETTER SU;Lu;0;L;;;;;N;;;;ABA1;\n13D2;CHEROKEE LETTER SV;Lu;0;L;;;;;N;;;;ABA2;\n13D3;CHEROKEE LETTER DA;Lu;0;L;;;;;N;;;;ABA3;\n13D4;CHEROKEE LETTER TA;Lu;0;L;;;;;N;;;;ABA4;\n13D5;CHEROKEE LETTER DE;Lu;0;L;;;;;N;;;;ABA5;\n13D6;CHEROKEE LETTER TE;Lu;0;L;;;;;N;;;;ABA6;\n13D7;CHEROKEE LETTER DI;Lu;0;L;;;;;N;;;;ABA7;\n13D8;CHEROKEE LETTER TI;Lu;0;L;;;;;N;;;;ABA8;\n13D9;CHEROKEE LETTER DO;Lu;0;L;;;;;N;;;;ABA9;\n13DA;CHEROKEE LETTER DU;Lu;0;L;;;;;N;;;;ABAA;\n13DB;CHEROKEE LETTER DV;Lu;0;L;;;;;N;;;;ABAB;\n13DC;CHEROKEE LETTER DLA;Lu;0;L;;;;;N;;;;ABAC;\n13DD;CHEROKEE LETTER TLA;Lu;0;L;;;;;N;;;;ABAD;\n13DE;CHEROKEE LETTER TLE;Lu;0;L;;;;;N;;;;ABAE;\n13DF;CHEROKEE LETTER TLI;Lu;0;L;;;;;N;;;;ABAF;\n13E0;CHEROKEE LETTER TLO;Lu;0;L;;;;;N;;;;ABB0;\n13E1;CHEROKEE LETTER TLU;Lu;0;L;;;;;N;;;;ABB1;\n13E2;CHEROKEE LETTER TLV;Lu;0;L;;;;;N;;;;ABB2;\n13E3;CHEROKEE LETTER TSA;Lu;0;L;;;;;N;;;;ABB3;\n13E4;CHEROKEE LETTER TSE;Lu;0;L;;;;;N;;;;ABB4;\n13E5;CHEROKEE LETTER TSI;Lu;0;L;;;;;N;;;;ABB5;\n13E6;CHEROKEE LETTER TSO;Lu;0;L;;;;;N;;;;ABB6;\n13E7;CHEROKEE LETTER TSU;Lu;0;L;;;;;N;;;;ABB7;\n13E8;CHEROKEE LETTER TSV;Lu;0;L;;;;;N;;;;ABB8;\n13E9;CHEROKEE LETTER WA;Lu;0;L;;;;;N;;;;ABB9;\n13EA;CHEROKEE LETTER WE;Lu;0;L;;;;;N;;;;ABBA;\n13EB;CHEROKEE LETTER WI;Lu;0;L;;;;;N;;;;ABBB;\n13EC;CHEROKEE LETTER WO;Lu;0;L;;;;;N;;;;ABBC;\n13ED;CHEROKEE LETTER WU;Lu;0;L;;;;;N;;;;ABBD;\n13EE;CHEROKEE LETTER WV;Lu;0;L;;;;;N;;;;ABBE;\n13EF;CHEROKEE LETTER YA;Lu;0;L;;;;;N;;;;ABBF;\n13F0;CHEROKEE LETTER YE;Lu;0;L;;;;;N;;;;13F8;\n13F1;CHEROKEE LETTER YI;Lu;0;L;;;;;N;;;;13F9;\n13F2;CHEROKEE LETTER YO;Lu;0;L;;;;;N;;;;13FA;\n13F3;CHEROKEE LETTER YU;Lu;0;L;;;;;N;;;;13FB;\n13F4;CHEROKEE LETTER YV;Lu;0;L;;;;;N;;;;13FC;\n13F5;CHEROKEE LETTER MV;Lu;0;L;;;;;N;;;;13FD;\n13F8;CHEROKEE SMALL LETTER YE;Ll;0;L;;;;;N;;;13F0;;13F0\n13F9;CHEROKEE SMALL LETTER YI;Ll;0;L;;;;;N;;;13F1;;13F1\n13FA;CHEROKEE SMALL LETTER YO;Ll;0;L;;;;;N;;;13F2;;13F2\n13FB;CHEROKEE SMALL LETTER YU;Ll;0;L;;;;;N;;;13F3;;13F3\n13FC;CHEROKEE SMALL LETTER YV;Ll;0;L;;;;;N;;;13F4;;13F4\n13FD;CHEROKEE SMALL LETTER MV;Ll;0;L;;;;;N;;;13F5;;13F5\n1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;;\n1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;\n1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;\n1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;\n1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;\n1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;\n1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;\n1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;\n1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;\n1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;\n140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;\n140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;\n140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;\n140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;\n140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;\n140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;\n1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;\n1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;\n1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;\n1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;\n1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;\n1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;\n1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;\n1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;\n1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;\n1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;\n141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;\n141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;\n141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;\n141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;\n141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;\n141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;\n1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;\n1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;\n1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;\n1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;\n1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;\n1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;\n1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;\n1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;\n1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;\n1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;\n142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;\n142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;\n142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;\n142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;\n142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;\n142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;\n1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;\n1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;\n1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;\n1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;\n1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;\n1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;\n1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;\n1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;\n1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;\n1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;\n143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;\n143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;\n143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;\n143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;\n143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;\n143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;\n1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;\n1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;\n1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;\n1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;\n1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;\n1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;\n1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;\n1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;\n1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;\n1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;\n144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;\n144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;\n144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;\n144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;\n144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;\n144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;\n1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;\n1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;\n1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;\n1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;\n1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;\n1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;\n1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;\n1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;\n1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;\n1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;\n145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;\n145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;\n145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;\n145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;\n145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;\n145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;\n1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;\n1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;\n1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;\n1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;\n1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;\n1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;\n1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;\n1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;\n1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;\n1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;\n146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;\n146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;\n146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;\n146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;\n146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;\n146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;\n1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;\n1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;\n1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;\n1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;\n1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;\n1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;\n1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;\n1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;\n1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;\n1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;\n147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;\n147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;\n147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;\n147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;\n147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;\n147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;\n1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;\n1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;\n1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;\n1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;\n1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;\n1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;\n1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;\n1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;\n1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;\n1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;\n148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;\n148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;\n148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;\n148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;\n148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;\n148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;\n1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;\n1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;\n1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;\n1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;\n1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;\n1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;\n1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;\n1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;\n1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;\n1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;\n149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;\n149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;\n149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;\n149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;\n149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;\n149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;\n14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;\n14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;\n14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;\n14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;\n14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;\n14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;\n14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;\n14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;\n14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;\n14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;\n14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;\n14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;\n14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;\n14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;\n14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;\n14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;\n14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;\n14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;\n14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;\n14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;\n14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;\n14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;\n14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;\n14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;\n14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;\n14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;\n14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;\n14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;\n14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;\n14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;\n14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;\n14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;\n14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;\n14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;\n14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;\n14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;\n14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;\n14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;\n14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;\n14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;\n14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;\n14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;\n14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;\n14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;\n14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;\n14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;\n14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;\n14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;\n14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;\n14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;\n14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;\n14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;\n14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;\n14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;\n14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;\n14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;\n14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;\n14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;\n14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;\n14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;\n14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;\n14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;\n14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;\n14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;\n14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;\n14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;\n14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;\n14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;\n14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;\n14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;\n14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;\n14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;\n14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;\n14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;\n14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;\n14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;\n14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;\n14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;\n14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;\n14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;\n14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;\n14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;\n14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;\n14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;\n14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;\n14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;\n14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;\n14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;\n14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;\n14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;\n14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;\n14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;\n14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;\n14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;\n14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;\n14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;\n1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;\n1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;\n1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;\n1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;\n1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;\n1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;\n1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;\n1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;\n1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;\n1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;\n150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;\n150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;\n150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;\n150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;\n150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;\n150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;\n1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;\n1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;\n1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;\n1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;\n1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;\n1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;\n1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;\n1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;\n1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;\n1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;\n151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;\n151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;\n151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;\n151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;\n151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;\n151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;\n1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;\n1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;\n1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;\n1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;\n1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;\n1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;\n1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;\n1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;\n1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;\n1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;\n152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;\n152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;\n152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;\n152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;\n152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;\n152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;\n1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;\n1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;\n1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;\n1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;\n1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;\n1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;\n1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;\n1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;\n1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;\n1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;\n153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;\n153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;\n153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;\n153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;\n153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;\n153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;\n1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;\n1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;\n1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;\n1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;\n1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;\n1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;\n1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;\n1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;\n1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;\n1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;\n154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;\n154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;\n154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;\n154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;\n154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;\n154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;\n1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;\n1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;\n1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;\n1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;\n1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;\n1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;\n1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;\n1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;\n1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;\n1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;\n155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;\n155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;\n155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;\n155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;\n155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;\n155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;\n1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;\n1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;\n1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;\n1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;\n1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;\n1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;\n1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;\n1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;\n1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;\n1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;\n156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;\n156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;\n156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;\n156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;\n156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;\n156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;\n1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;\n1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;\n1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;\n1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;\n1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;\n1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;\n1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;\n1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;\n1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;\n1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;\n157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;\n157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;\n157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;\n157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;\n157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;\n157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;\n1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;\n1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;\n1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;\n1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;\n1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;\n1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;\n1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;\n1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;\n1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;\n1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;\n158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;\n158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;\n158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;\n158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;\n158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;\n158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;\n1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;\n1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;\n1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;\n1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;\n1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;\n1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;\n1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;\n1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;\n1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;\n1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;\n159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;\n159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;\n159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;\n159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;\n159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;\n159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;\n15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;\n15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;\n15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;\n15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;\n15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;\n15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;\n15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;\n15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;\n15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;\n15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;\n15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;\n15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;\n15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;\n15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;\n15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;\n15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;\n15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;\n15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;\n15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;\n15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;\n15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;\n15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;\n15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;\n15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;\n15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;\n15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;\n15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;\n15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;\n15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;\n15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;\n15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;\n15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;\n15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;\n15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;\n15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;\n15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;\n15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;\n15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;\n15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;\n15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;\n15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;\n15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;\n15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;\n15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;\n15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;\n15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;\n15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;\n15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;\n15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;\n15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;\n15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;\n15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;\n15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;\n15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;\n15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;\n15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;\n15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;\n15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;\n15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;\n15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;\n15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;\n15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;\n15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;\n15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;\n15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;\n15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;\n15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;\n15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;\n15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;\n15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;\n15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;\n15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;\n15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;\n15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;\n15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;\n15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;\n15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;\n15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;\n15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;\n15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;\n15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;\n15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;\n15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;\n15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;\n15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;\n15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;\n15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;\n15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;\n15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;\n15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;\n15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;\n15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;\n15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;\n15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;\n15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;\n15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;\n1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;\n1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;\n1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;\n1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;\n1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;\n1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;\n1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;\n1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;\n1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;\n1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;\n160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;\n160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;\n160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;\n160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;\n160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;\n160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;\n1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;\n1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;\n1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;\n1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;\n1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;\n1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;\n1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;\n1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;\n1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;\n1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;\n161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;\n161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;\n161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;\n161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;\n161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;\n161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;\n1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;\n1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;\n1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;\n1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;\n1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;\n1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;\n1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;\n1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;\n1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;\n1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;\n162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;\n162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;\n162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;\n162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;\n162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;\n162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;\n1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;\n1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;\n1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;\n1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;\n1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;\n1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;\n1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;\n1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;\n1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;\n1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;\n163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;\n163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;\n163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;\n163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;\n163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;\n163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;\n1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;\n1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;\n1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;\n1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;\n1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;\n1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;\n1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;\n1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;\n1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;\n1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;\n164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;\n164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;\n164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;\n164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;\n164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;\n164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;\n1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;\n1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;\n1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;\n1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;\n1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;\n1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;\n1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;\n1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;\n1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;\n1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;\n165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;\n165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;\n165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;\n165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;\n165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;\n165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;\n1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;\n1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;\n1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;\n1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;\n1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;\n1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;\n1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;\n1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;\n1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;\n1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;\n166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;\n166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;\n166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;\n166D;CANADIAN SYLLABICS CHI SIGN;So;0;L;;;;;N;;;;;\n166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;\n166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;\n1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;\n1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;\n1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;\n1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;\n1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;\n1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;\n1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;\n1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;;\n1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;;\n1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;;\n167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;;\n167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;;\n167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;;\n167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;;\n167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;;\n167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;;\n1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;\n1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;\n1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;\n1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;\n1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;\n1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;\n1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;\n1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;\n1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;\n1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;\n168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;\n168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;\n168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;\n168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;\n168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;\n168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;\n1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;\n1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;\n1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;\n1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;\n1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;\n1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;\n1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;\n1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;\n1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;\n1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;\n169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;\n169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;\n169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;\n16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;\n16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;\n16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;\n16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;\n16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;\n16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;\n16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;\n16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;\n16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;\n16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;\n16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;\n16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;\n16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;\n16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;\n16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;\n16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;\n16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;\n16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;\n16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;\n16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;\n16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;\n16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;\n16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;\n16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;\n16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;\n16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;\n16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;\n16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;\n16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;\n16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;\n16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;\n16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;\n16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;\n16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;\n16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;\n16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;\n16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;\n16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;\n16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;\n16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;\n16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;\n16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;\n16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;\n16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;\n16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;\n16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;\n16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;\n16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;\n16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;\n16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;\n16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;\n16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;\n16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;\n16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;\n16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;\n16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;\n16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;\n16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;\n16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;\n16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;\n16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;\n16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;\n16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;\n16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;\n16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;\n16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;\n16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;\n16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;\n16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;\n16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;\n16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;\n16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;\n16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;\n16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;\n16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;\n16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;\n16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;\n16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;\n16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;;\n16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;;\n16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;;\n16F1;RUNIC LETTER K;Lo;0;L;;;;;N;;;;;\n16F2;RUNIC LETTER SH;Lo;0;L;;;;;N;;;;;\n16F3;RUNIC LETTER OO;Lo;0;L;;;;;N;;;;;\n16F4;RUNIC LETTER FRANKS CASKET OS;Lo;0;L;;;;;N;;;;;\n16F5;RUNIC LETTER FRANKS CASKET IS;Lo;0;L;;;;;N;;;;;\n16F6;RUNIC LETTER FRANKS CASKET EH;Lo;0;L;;;;;N;;;;;\n16F7;RUNIC LETTER FRANKS CASKET AC;Lo;0;L;;;;;N;;;;;\n16F8;RUNIC LETTER FRANKS CASKET AESC;Lo;0;L;;;;;N;;;;;\n1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;\n1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;\n1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;\n1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;\n1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;\n1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;\n1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;\n1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;\n1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;\n1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;\n170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;\n170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;\n170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;\n170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;\n170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;\n1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;\n1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;\n1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;\n1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;\n1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;\n1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;\n1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;\n1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;\n1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;\n1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;\n1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;\n1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;\n172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;\n172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;\n172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;\n172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;\n172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;\n172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;\n1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;\n1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;\n1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;\n1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;\n1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;\n1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;\n1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;\n1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;\n1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;\n1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;\n1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;\n1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;\n1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;\n1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;\n1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;\n174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;\n174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;\n174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;\n174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;\n174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;\n174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;\n1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;\n1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;\n1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;\n1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;\n1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;\n1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;\n1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;\n1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;\n1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;\n1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;\n1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;\n1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;\n176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;\n176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;\n176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;\n176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;\n176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;\n1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;\n1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;\n1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;\n1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;\n1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;\n1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;\n1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;\n1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;\n1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;\n1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;\n1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;\n178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;\n178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;\n178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;\n178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;\n178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;\n178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;\n1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;\n1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;\n1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;\n1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;\n1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;\n1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;\n1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;\n1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;\n1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;\n1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;\n179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;\n179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;\n179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;\n179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;\n179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;\n179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;\n17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;\n17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;\n17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;\n17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;\n17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;\n17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;\n17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;\n17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;\n17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;\n17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;\n17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;\n17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;\n17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;\n17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;\n17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;\n17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;\n17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;\n17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;\n17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;\n17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;\n17B4;KHMER VOWEL INHERENT AQ;Mn;0;NSM;;;;;N;;;;;\n17B5;KHMER VOWEL INHERENT AA;Mn;0;NSM;;;;;N;;;;;\n17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;\n17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;\n17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;\n17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;\n17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;\n17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;\n17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;\n17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;\n17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;\n17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;\n17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;\n17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;\n17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;\n17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;\n17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;\n17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;\n17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;\n17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;\n17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;\n17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;\n17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;\n17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;\n17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;\n17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;\n17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;\n17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;\n17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;\n17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;\n17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;\n17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;\n17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;\n17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;\n17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;\n17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;\n17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;\n17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;\n17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;\n17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;\n17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;\n17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;\n17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;\n1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;\n1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;\n1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;\n1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;\n1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;\n1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;\n1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;\n1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;\n1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;\n1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;\n180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;\n180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;\n180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;\n180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;\n180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;\n1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;\n1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;\n1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;\n1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;\n1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;\n1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;\n1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;\n1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;\n1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;\n1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;\n182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;\n182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;\n182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;\n182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;\n182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;\n182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;\n1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;\n1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;\n1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;\n1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;\n1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;\n1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;\n1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;\n1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;\n1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;\n1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;\n183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;\n183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;\n183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;\n183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;\n183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;\n183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;\n1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;\n1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;\n1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;\n1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;\n1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;\n1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;\n1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;\n1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;\n1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;\n1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;\n184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;\n184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;\n184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;\n184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;\n184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;\n184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;\n1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;\n1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;\n1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;\n1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;\n1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;\n1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;\n1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;\n1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;\n1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;\n1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;\n185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;\n185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;\n185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;\n185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;\n185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;\n185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;\n1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;\n1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;\n1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;\n1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;\n1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;\n1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;\n1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;\n1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;\n1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;\n1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;\n186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;\n186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;\n186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;\n186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;\n186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;\n186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;\n1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;\n1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;\n1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;\n1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;\n1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;\n1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;\n1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;\n1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;\n1878;MONGOLIAN LETTER CHA WITH TWO DOTS;Lo;0;L;;;;;N;;;;;\n1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;\n1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;\n1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;\n1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;\n1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;\n1885;MONGOLIAN LETTER ALI GALI BALUDA;Mn;0;NSM;;;;;N;;;;;\n1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Mn;0;NSM;;;;;N;;;;;\n1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;\n1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;\n1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;\n188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;\n188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;\n188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;\n188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;\n188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;\n188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;\n1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;\n1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;\n1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;\n1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;\n1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;\n1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;\n1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;\n1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;\n1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;\n1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;\n189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;\n189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;\n189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;\n189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;\n189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;\n189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;\n18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;\n18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;\n18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;\n18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;\n18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;\n18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;\n18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;\n18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;\n18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;\n18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;\n18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;\n18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;;\n18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;;\n18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;;\n18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;;\n18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;;\n18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;;\n18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;;\n18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;;\n18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;;\n18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;;\n18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;;\n18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;;\n18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;;\n18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;;\n18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;;\n18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;;\n18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;;\n18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;;\n18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;;\n18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;;\n18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;;\n18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;;\n18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;;\n18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;;\n18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;;\n18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;;\n18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;;\n18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;;\n18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;;\n18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;;\n18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;;\n18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;;\n18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;;\n18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;;\n18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;;\n18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;;\n18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;;\n18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;;\n18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;;\n18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;;\n18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;;\n18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;;\n18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;;\n18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;;\n18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;;\n18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;;\n18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;;\n18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;;\n18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;;\n18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;;\n18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;;\n18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;;\n18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;;\n18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;;\n18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;;\n18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;;\n18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;;\n18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;;\n18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;;\n18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;;\n18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;;\n18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;;\n18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;;\n18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;;\n18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;;\n18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;;\n18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;;\n18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;;\n18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;;\n18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;;\n1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;\n1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;\n1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;\n1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;\n1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;\n1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;\n1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;\n1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;\n1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;\n1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;\n190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;\n190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;\n190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;\n190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;\n190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;\n190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;\n1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;\n1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;\n1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;\n1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;\n1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;\n1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;\n1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;\n1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;\n1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;\n1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;\n191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;\n191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;\n191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;\n191D;LIMBU LETTER GYAN;Lo;0;L;;;;;N;;;;;\n191E;LIMBU LETTER TRA;Lo;0;L;;;;;N;;;;;\n1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;\n1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;\n1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;\n192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;\n192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;;\n1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;\n1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;\n1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;\n1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;\n1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;\n1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;\n1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;\n1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;\n1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;\n193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;\n193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;\n1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;\n1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;\n1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;\n1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;\n1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;\n1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;\n1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;\n1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;\n1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;\n1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;\n1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;\n1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;\n1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;\n195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;\n195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;\n195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;\n195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;\n195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;\n195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;\n1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;\n1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;\n1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;\n1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;\n1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;\n1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;\n1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;\n1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;\n1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;\n1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;\n196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;\n196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;\n196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;\n196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;\n1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;\n1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;\n1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;\n1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;\n1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;\n1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;\n1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;\n1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;\n1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;\n1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;\n1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;\n1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;\n1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;\n1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;\n1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;\n198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;\n198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;\n198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;\n198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;\n198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;\n198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;\n1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;\n1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;\n1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;\n1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;\n1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;\n1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;\n1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;\n1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;\n1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;\n1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;\n199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;\n199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;\n199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;\n199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;\n199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;\n199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;\n19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;\n19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;\n19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;\n19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;\n19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;\n19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;\n19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;\n19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;\n19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;\n19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;\n19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;;\n19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;;\n19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Lo;0;L;;;;;N;;;;;\n19B1;NEW TAI LUE VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;\n19B2;NEW TAI LUE VOWEL SIGN II;Lo;0;L;;;;;N;;;;;\n19B3;NEW TAI LUE VOWEL SIGN U;Lo;0;L;;;;;N;;;;;\n19B4;NEW TAI LUE VOWEL SIGN UU;Lo;0;L;;;;;N;;;;;\n19B5;NEW TAI LUE VOWEL SIGN E;Lo;0;L;;;;;N;;;;;\n19B6;NEW TAI LUE VOWEL SIGN AE;Lo;0;L;;;;;N;;;;;\n19B7;NEW TAI LUE VOWEL SIGN O;Lo;0;L;;;;;N;;;;;\n19B8;NEW TAI LUE VOWEL SIGN OA;Lo;0;L;;;;;N;;;;;\n19B9;NEW TAI LUE VOWEL SIGN UE;Lo;0;L;;;;;N;;;;;\n19BA;NEW TAI LUE VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;\n19BB;NEW TAI LUE VOWEL SIGN AAY;Lo;0;L;;;;;N;;;;;\n19BC;NEW TAI LUE VOWEL SIGN UY;Lo;0;L;;;;;N;;;;;\n19BD;NEW TAI LUE VOWEL SIGN OY;Lo;0;L;;;;;N;;;;;\n19BE;NEW TAI LUE VOWEL SIGN OAY;Lo;0;L;;;;;N;;;;;\n19BF;NEW TAI LUE VOWEL SIGN UEY;Lo;0;L;;;;;N;;;;;\n19C0;NEW TAI LUE VOWEL SIGN IY;Lo;0;L;;;;;N;;;;;\n19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;\n19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;\n19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;\n19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;\n19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;\n19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;\n19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;\n19C8;NEW TAI LUE TONE MARK-1;Lo;0;L;;;;;N;;;;;\n19C9;NEW TAI LUE TONE MARK-2;Lo;0;L;;;;;N;;;;;\n19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n19DA;NEW TAI LUE THAM DIGIT ONE;No;0;L;;;1;1;N;;;;;\n19DE;NEW TAI LUE SIGN LAE;So;0;ON;;;;;N;;;;;\n19DF;NEW TAI LUE SIGN LAEV;So;0;ON;;;;;N;;;;;\n19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;\n19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;\n19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;\n19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;\n19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;\n19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;\n19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;\n19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;\n19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;\n19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;\n19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;\n19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;\n19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;\n19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;\n19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;\n19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;\n19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;\n19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;\n19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;\n19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;\n19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;\n19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;\n19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;\n19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;\n19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;\n19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;\n19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;\n19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;\n19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;\n19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;\n19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;\n19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;\n1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;\n1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;\n1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;\n1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;\n1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;\n1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;\n1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;\n1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;\n1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;\n1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;\n1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;\n1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;\n1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;\n1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;\n1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;\n1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;\n1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;\n1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;\n1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;\n1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;\n1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;\n1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;\n1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;\n1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;\n1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;\n1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n1A1B;BUGINESE VOWEL SIGN AE;Mn;0;NSM;;;;;N;;;;;\n1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;\n1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;\n1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;;\n1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;;\n1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;;\n1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;;\n1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;;\n1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;;\n1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;;\n1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;;\n1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;;\n1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;;\n1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;;\n1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;;\n1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;;\n1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;;\n1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;;\n1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;;\n1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;;\n1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;;\n1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;;\n1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;;\n1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;;\n1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;;\n1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;;\n1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;;\n1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;;\n1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;\n1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;;\n1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;;\n1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;;\n1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;;\n1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;;\n1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;;\n1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;;\n1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;;\n1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;;\n1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;;\n1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;;\n1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;;\n1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;;\n1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;;\n1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;;\n1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;;\n1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;;\n1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;;\n1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;;\n1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;;\n1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;;\n1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;;\n1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;;\n1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;;\n1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;;\n1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;;\n1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;;\n1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;\n1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;\n1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;;\n1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;;\n1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;;\n1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;;\n1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;;\n1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;;\n1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;;\n1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;;\n1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;;\n1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;\n1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;;\n1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;\n1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;\n1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;;\n1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;;\n1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;\n1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;\n1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;;\n1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;;\n1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;;\n1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;;\n1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;;\n1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;;\n1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;;\n1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;;\n1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;;\n1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;;\n1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;;\n1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;;\n1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;;\n1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;;\n1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;;\n1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;;\n1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;;\n1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;;\n1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;;\n1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;;\n1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;;\n1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;;\n1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;;\n1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;;\n1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;;\n1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;;\n1AB0;COMBINING DOUBLED CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;;;;;\n1AB1;COMBINING DIAERESIS-RING;Mn;230;NSM;;;;;N;;;;;\n1AB2;COMBINING INFINITY;Mn;230;NSM;;;;;N;;;;;\n1AB3;COMBINING DOWNWARDS ARROW;Mn;230;NSM;;;;;N;;;;;\n1AB4;COMBINING TRIPLE DOT;Mn;230;NSM;;;;;N;;;;;\n1AB5;COMBINING X-X BELOW;Mn;220;NSM;;;;;N;;;;;\n1AB6;COMBINING WIGGLY LINE BELOW;Mn;220;NSM;;;;;N;;;;;\n1AB7;COMBINING OPEN MARK BELOW;Mn;220;NSM;;;;;N;;;;;\n1AB8;COMBINING DOUBLE OPEN MARK BELOW;Mn;220;NSM;;;;;N;;;;;\n1AB9;COMBINING LIGHT CENTRALIZATION STROKE BELOW;Mn;220;NSM;;;;;N;;;;;\n1ABA;COMBINING STRONG CENTRALIZATION STROKE BELOW;Mn;220;NSM;;;;;N;;;;;\n1ABB;COMBINING PARENTHESES ABOVE;Mn;230;NSM;;;;;N;;;;;\n1ABC;COMBINING DOUBLE PARENTHESES ABOVE;Mn;230;NSM;;;;;N;;;;;\n1ABD;COMBINING PARENTHESES BELOW;Mn;220;NSM;;;;;N;;;;;\n1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;;\n1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;;\n1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;;\n1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;\n1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;\n1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;\n1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;;\n1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;;\n1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;;\n1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;;\n1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;;\n1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;;\n1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;;\n1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;;\n1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;;\n1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;;\n1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;;\n1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;;\n1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;;\n1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;;\n1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;;\n1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;;\n1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;\n1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;;\n1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;\n1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;;\n1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;\n1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;\n1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;;\n1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;\n1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;;\n1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;\n1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;;\n1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;\n1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;;\n1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;\n1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;;\n1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;\n1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;;\n1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;\n1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;;\n1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;\n1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;\n1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;;\n1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;\n1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;;\n1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;\n1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;\n1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;\n1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;\n1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;\n1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;;\n1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;;\n1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;\n1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;\n1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;;\n1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;;\n1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;;\n1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;;\n1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;\n1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;;\n1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;;\n1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;;\n1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;;\n1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;;\n1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;\n1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;;\n1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;;\n1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;;\n1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;\n1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;;\n1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;;\n1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;\n1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;\n1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;\n1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;\n1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;\n1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;\n1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;\n1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;;\n1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;;\n1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;;\n1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;;\n1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;;\n1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;;\n1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;;\n1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;\n1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;\n1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;\n1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;\n1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;\n1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;\n1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;\n1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;\n1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;\n1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;\n1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;\n1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;\n1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;\n1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;\n1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;\n1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;\n1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;\n1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;\n1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;\n1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;\n1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;\n1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;\n1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;\n1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;\n1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;\n1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;\n1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;\n1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;\n1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;\n1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;\n1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;\n1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;\n1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;\n1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;\n1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;\n1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;\n1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;\n1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;\n1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;\n1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;\n1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;\n1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;\n1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;\n1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;\n1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;\n1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;\n1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;\n1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;\n1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;\n1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;\n1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;\n1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;\n1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;\n1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;\n1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;\n1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;\n1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;\n1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;\n1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;\n1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;\n1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;\n1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;\n1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;\n1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;\n1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;\n1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;\n1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;\n1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;\n1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;\n1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;\n1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;\n1BAB;SUNDANESE SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n1BAC;SUNDANESE CONSONANT SIGN PASANGAN MA;Mn;0;NSM;;;;;N;;;;;\n1BAD;SUNDANESE CONSONANT SIGN PASANGAN WA;Mn;0;NSM;;;;;N;;;;;\n1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;\n1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;\n1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1BBA;SUNDANESE AVAGRAHA;Lo;0;L;;;;;N;;;;;\n1BBB;SUNDANESE LETTER REU;Lo;0;L;;;;;N;;;;;\n1BBC;SUNDANESE LETTER LEU;Lo;0;L;;;;;N;;;;;\n1BBD;SUNDANESE LETTER BHA;Lo;0;L;;;;;N;;;;;\n1BBE;SUNDANESE LETTER FINAL K;Lo;0;L;;;;;N;;;;;\n1BBF;SUNDANESE LETTER FINAL M;Lo;0;L;;;;;N;;;;;\n1BC0;BATAK LETTER A;Lo;0;L;;;;;N;;;;;\n1BC1;BATAK LETTER SIMALUNGUN A;Lo;0;L;;;;;N;;;;;\n1BC2;BATAK LETTER HA;Lo;0;L;;;;;N;;;;;\n1BC3;BATAK LETTER SIMALUNGUN HA;Lo;0;L;;;;;N;;;;;\n1BC4;BATAK LETTER MANDAILING HA;Lo;0;L;;;;;N;;;;;\n1BC5;BATAK LETTER BA;Lo;0;L;;;;;N;;;;;\n1BC6;BATAK LETTER KARO BA;Lo;0;L;;;;;N;;;;;\n1BC7;BATAK LETTER PA;Lo;0;L;;;;;N;;;;;\n1BC8;BATAK LETTER SIMALUNGUN PA;Lo;0;L;;;;;N;;;;;\n1BC9;BATAK LETTER NA;Lo;0;L;;;;;N;;;;;\n1BCA;BATAK LETTER MANDAILING NA;Lo;0;L;;;;;N;;;;;\n1BCB;BATAK LETTER WA;Lo;0;L;;;;;N;;;;;\n1BCC;BATAK LETTER SIMALUNGUN WA;Lo;0;L;;;;;N;;;;;\n1BCD;BATAK LETTER PAKPAK WA;Lo;0;L;;;;;N;;;;;\n1BCE;BATAK LETTER GA;Lo;0;L;;;;;N;;;;;\n1BCF;BATAK LETTER SIMALUNGUN GA;Lo;0;L;;;;;N;;;;;\n1BD0;BATAK LETTER JA;Lo;0;L;;;;;N;;;;;\n1BD1;BATAK LETTER DA;Lo;0;L;;;;;N;;;;;\n1BD2;BATAK LETTER RA;Lo;0;L;;;;;N;;;;;\n1BD3;BATAK LETTER SIMALUNGUN RA;Lo;0;L;;;;;N;;;;;\n1BD4;BATAK LETTER MA;Lo;0;L;;;;;N;;;;;\n1BD5;BATAK LETTER SIMALUNGUN MA;Lo;0;L;;;;;N;;;;;\n1BD6;BATAK LETTER SOUTHERN TA;Lo;0;L;;;;;N;;;;;\n1BD7;BATAK LETTER NORTHERN TA;Lo;0;L;;;;;N;;;;;\n1BD8;BATAK LETTER SA;Lo;0;L;;;;;N;;;;;\n1BD9;BATAK LETTER SIMALUNGUN SA;Lo;0;L;;;;;N;;;;;\n1BDA;BATAK LETTER MANDAILING SA;Lo;0;L;;;;;N;;;;;\n1BDB;BATAK LETTER YA;Lo;0;L;;;;;N;;;;;\n1BDC;BATAK LETTER SIMALUNGUN YA;Lo;0;L;;;;;N;;;;;\n1BDD;BATAK LETTER NGA;Lo;0;L;;;;;N;;;;;\n1BDE;BATAK LETTER LA;Lo;0;L;;;;;N;;;;;\n1BDF;BATAK LETTER SIMALUNGUN LA;Lo;0;L;;;;;N;;;;;\n1BE0;BATAK LETTER NYA;Lo;0;L;;;;;N;;;;;\n1BE1;BATAK LETTER CA;Lo;0;L;;;;;N;;;;;\n1BE2;BATAK LETTER NDA;Lo;0;L;;;;;N;;;;;\n1BE3;BATAK LETTER MBA;Lo;0;L;;;;;N;;;;;\n1BE4;BATAK LETTER I;Lo;0;L;;;;;N;;;;;\n1BE5;BATAK LETTER U;Lo;0;L;;;;;N;;;;;\n1BE6;BATAK SIGN TOMPI;Mn;7;NSM;;;;;N;;;;;\n1BE7;BATAK VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n1BE8;BATAK VOWEL SIGN PAKPAK E;Mn;0;NSM;;;;;N;;;;;\n1BE9;BATAK VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;\n1BEA;BATAK VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n1BEB;BATAK VOWEL SIGN KARO I;Mc;0;L;;;;;N;;;;;\n1BEC;BATAK VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n1BED;BATAK VOWEL SIGN KARO O;Mn;0;NSM;;;;;N;;;;;\n1BEE;BATAK VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n1BEF;BATAK VOWEL SIGN U FOR SIMALUNGUN SA;Mn;0;NSM;;;;;N;;;;;\n1BF0;BATAK CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;\n1BF1;BATAK CONSONANT SIGN H;Mn;0;NSM;;;;;N;;;;;\n1BF2;BATAK PANGOLAT;Mc;9;L;;;;;N;;;;;\n1BF3;BATAK PANONGONAN;Mc;9;L;;;;;N;;;;;\n1BFC;BATAK SYMBOL BINDU NA METEK;Po;0;L;;;;;N;;;;;\n1BFD;BATAK SYMBOL BINDU PINARBORAS;Po;0;L;;;;;N;;;;;\n1BFE;BATAK SYMBOL BINDU JUDUL;Po;0;L;;;;;N;;;;;\n1BFF;BATAK SYMBOL BINDU PANGOLAT;Po;0;L;;;;;N;;;;;\n1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;\n1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;\n1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;\n1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;\n1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;\n1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;\n1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;\n1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;\n1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;\n1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;\n1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;\n1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;\n1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;\n1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;\n1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;\n1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;\n1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;\n1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;\n1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;\n1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;\n1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;\n1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;\n1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;\n1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;\n1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;\n1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;\n1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;\n1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;\n1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;\n1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;\n1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;\n1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;\n1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;\n1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;\n1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;\n1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;\n1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;\n1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;\n1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;\n1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;\n1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;\n1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;\n1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;\n1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;\n1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;\n1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;\n1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;\n1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;\n1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;\n1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;\n1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;\n1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;\n1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;\n1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;\n1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;\n1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;\n1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;\n1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;\n1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;\n1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;\n1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;\n1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;\n1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;\n1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;\n1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;\n1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;\n1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;\n1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;\n1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;\n1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;\n1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;\n1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;\n1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;\n1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;\n1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;\n1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;\n1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;\n1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;\n1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;\n1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;\n1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;\n1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;\n1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;\n1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;\n1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;\n1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;\n1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;\n1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;\n1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;\n1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;\n1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;\n1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;\n1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;\n1C80;CYRILLIC SMALL LETTER ROUNDED VE;Ll;0;L;;;;;N;;;0412;;0412\n1C81;CYRILLIC SMALL LETTER LONG-LEGGED DE;Ll;0;L;;;;;N;;;0414;;0414\n1C82;CYRILLIC SMALL LETTER NARROW O;Ll;0;L;;;;;N;;;041E;;041E\n1C83;CYRILLIC SMALL LETTER WIDE ES;Ll;0;L;;;;;N;;;0421;;0421\n1C84;CYRILLIC SMALL LETTER TALL TE;Ll;0;L;;;;;N;;;0422;;0422\n1C85;CYRILLIC SMALL LETTER THREE-LEGGED TE;Ll;0;L;;;;;N;;;0422;;0422\n1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A\n1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462\n1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A\n1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;\n1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;\n1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;\n1C93;GEORGIAN MTAVRULI CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;10D3;\n1C94;GEORGIAN MTAVRULI CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;10D4;\n1C95;GEORGIAN MTAVRULI CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;10D5;\n1C96;GEORGIAN MTAVRULI CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;10D6;\n1C97;GEORGIAN MTAVRULI CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;10D7;\n1C98;GEORGIAN MTAVRULI CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;10D8;\n1C99;GEORGIAN MTAVRULI CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;10D9;\n1C9A;GEORGIAN MTAVRULI CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;10DA;\n1C9B;GEORGIAN MTAVRULI CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;10DB;\n1C9C;GEORGIAN MTAVRULI CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;10DC;\n1C9D;GEORGIAN MTAVRULI CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;10DD;\n1C9E;GEORGIAN MTAVRULI CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;10DE;\n1C9F;GEORGIAN MTAVRULI CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;10DF;\n1CA0;GEORGIAN MTAVRULI CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;10E0;\n1CA1;GEORGIAN MTAVRULI CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;10E1;\n1CA2;GEORGIAN MTAVRULI CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;10E2;\n1CA3;GEORGIAN MTAVRULI CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;10E3;\n1CA4;GEORGIAN MTAVRULI CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;10E4;\n1CA5;GEORGIAN MTAVRULI CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;10E5;\n1CA6;GEORGIAN MTAVRULI CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;10E6;\n1CA7;GEORGIAN MTAVRULI CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;10E7;\n1CA8;GEORGIAN MTAVRULI CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;10E8;\n1CA9;GEORGIAN MTAVRULI CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;10E9;\n1CAA;GEORGIAN MTAVRULI CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;10EA;\n1CAB;GEORGIAN MTAVRULI CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;10EB;\n1CAC;GEORGIAN MTAVRULI CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;10EC;\n1CAD;GEORGIAN MTAVRULI CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;10ED;\n1CAE;GEORGIAN MTAVRULI CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;10EE;\n1CAF;GEORGIAN MTAVRULI CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;10EF;\n1CB0;GEORGIAN MTAVRULI CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;10F0;\n1CB1;GEORGIAN MTAVRULI CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;10F1;\n1CB2;GEORGIAN MTAVRULI CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;10F2;\n1CB3;GEORGIAN MTAVRULI CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;10F3;\n1CB4;GEORGIAN MTAVRULI CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;10F4;\n1CB5;GEORGIAN MTAVRULI CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;10F5;\n1CB6;GEORGIAN MTAVRULI CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;10F6;\n1CB7;GEORGIAN MTAVRULI CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;10F7;\n1CB8;GEORGIAN MTAVRULI CAPITAL LETTER ELIFI;Lu;0;L;;;;;N;;;;10F8;\n1CB9;GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN;Lu;0;L;;;;;N;;;;10F9;\n1CBA;GEORGIAN MTAVRULI CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;10FA;\n1CBD;GEORGIAN MTAVRULI CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;10FD;\n1CBE;GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;10FE;\n1CBF;GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;Lu;0;L;;;;;N;;;;10FF;\n1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;;\n1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;;\n1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;;\n1CC3;SUNDANESE PUNCTUATION BINDU CAKRA;Po;0;L;;;;;N;;;;;\n1CC4;SUNDANESE PUNCTUATION BINDU LEU SATANGA;Po;0;L;;;;;N;;;;;\n1CC5;SUNDANESE PUNCTUATION BINDU KA SATANGA;Po;0;L;;;;;N;;;;;\n1CC6;SUNDANESE PUNCTUATION BINDU DA SATANGA;Po;0;L;;;;;N;;;;;\n1CC7;SUNDANESE PUNCTUATION BINDU BA SATANGA;Po;0;L;;;;;N;;;;;\n1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;;\n1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;;\n1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;;\n1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;;\n1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;;\n1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;\n1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;\n1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;\n1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;;\n1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;;\n1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;;\n1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;;\n1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;;\n1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;;\n1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;;\n1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;;\n1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;\n1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;\n1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;\n1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;\n1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;\n1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;\n1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;\n1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;;\n1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;;\n1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;;\n1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;;\n1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;;\n1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;;\n1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;;\n1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;;\n1CF2;VEDIC SIGN ARDHAVISARGA;Lo;0;L;;;;;N;;;;;\n1CF3;VEDIC SIGN ROTATED ARDHAVISARGA;Lo;0;L;;;;;N;;;;;\n1CF4;VEDIC TONE CANDRA ABOVE;Mn;230;NSM;;;;;N;;;;;\n1CF5;VEDIC SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n1CF6;VEDIC SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n1CF7;VEDIC SIGN ATIKRAMA;Mc;0;L;;;;;N;;;;;\n1CF8;VEDIC TONE RING ABOVE;Mn;230;NSM;;;;;N;;;;;\n1CF9;VEDIC TONE DOUBLE RING ABOVE;Mn;230;NSM;;;;;N;;;;;\n1CFA;VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;\n1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;\n1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;\n1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;\n1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;\n1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;\n1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;\n1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;\n1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;\n1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;\n1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;\n1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;\n1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;\n1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;\n1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;\n1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;\n1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;\n1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;\n1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;\n1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;\n1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;\n1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;\n1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;\n1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;\n1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;\n1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;\n1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;\n1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;\n1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;\n1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;\n1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;\n1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;\n1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;\n1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;\n1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;\n1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;\n1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;\n1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;\n1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;\n1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;\n1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;\n1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;\n1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;\n1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;\n1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;\n1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;\n1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;\n1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;\n1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;\n1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;\n1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;\n1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;\n1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;\n1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;\n1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;\n1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;\n1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;\n1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;\n1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;\n1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;\n1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;\n1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;\n1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;\n1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;\n1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;\n1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;\n1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;\n1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;\n1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;\n1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;\n1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;\n1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;\n1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;\n1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;\n1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;\n1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;\n1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;\n1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;\n1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;\n1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;\n1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;\n1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;\n1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;\n1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;\n1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;\n1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;\n1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;\n1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;\n1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;\n1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;\n1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;\n1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;\n1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;\n1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;\n1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;\n1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;\n1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;\n1D62;LATIN SUBSCRIPT SMALL LETTER I;Lm;0;L;<sub> 0069;;;;N;;;;;\n1D63;LATIN SUBSCRIPT SMALL LETTER R;Lm;0;L;<sub> 0072;;;;N;;;;;\n1D64;LATIN SUBSCRIPT SMALL LETTER U;Lm;0;L;<sub> 0075;;;;N;;;;;\n1D65;LATIN SUBSCRIPT SMALL LETTER V;Lm;0;L;<sub> 0076;;;;N;;;;;\n1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Lm;0;L;<sub> 03B2;;;;N;;;;;\n1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Lm;0;L;<sub> 03B3;;;;N;;;;;\n1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Lm;0;L;<sub> 03C1;;;;N;;;;;\n1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Lm;0;L;<sub> 03C6;;;;N;;;;;\n1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Lm;0;L;<sub> 03C7;;;;N;;;;;\n1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;\n1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\n1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;\n1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;\n1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D\n1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;\n1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63\n1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;\n1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\n1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;A7C6;;A7C6\n1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;\n1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\n1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;\n1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;\n1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;\n1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;\n1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;\n1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;\n1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;\n1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;\n1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;\n1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;\n1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;\n1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;\n1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;\n1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;\n1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;\n1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;\n1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;\n1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;\n1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;\n1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;\n1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;\n1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;\n1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;\n1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;\n1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;\n1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;\n1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;\n1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;\n1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;\n1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;\n1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;\n1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;\n1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;\n1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;\n1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;\n1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;\n1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;\n1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;\n1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;\n1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;\n1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;\n1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;\n1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;\n1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;\n1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;\n1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;\n1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;\n1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;\n1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;\n1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;\n1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;\n1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;\n1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;\n1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;\n1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;\n1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;\n1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;\n1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;\n1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;\n1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;\n1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;\n1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;\n1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;\n1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;\n1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;\n1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;\n1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;\n1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;\n1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;\n1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;\n1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;\n1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;\n1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;\n1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;\n1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;\n1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;\n1DE7;COMBINING LATIN SMALL LETTER ALPHA;Mn;230;NSM;;;;;N;;;;;\n1DE8;COMBINING LATIN SMALL LETTER B;Mn;230;NSM;;;;;N;;;;;\n1DE9;COMBINING LATIN SMALL LETTER BETA;Mn;230;NSM;;;;;N;;;;;\n1DEA;COMBINING LATIN SMALL LETTER SCHWA;Mn;230;NSM;;;;;N;;;;;\n1DEB;COMBINING LATIN SMALL LETTER F;Mn;230;NSM;;;;;N;;;;;\n1DEC;COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE;Mn;230;NSM;;;;;N;;;;;\n1DED;COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE;Mn;230;NSM;;;;;N;;;;;\n1DEE;COMBINING LATIN SMALL LETTER P;Mn;230;NSM;;;;;N;;;;;\n1DEF;COMBINING LATIN SMALL LETTER ESH;Mn;230;NSM;;;;;N;;;;;\n1DF0;COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE;Mn;230;NSM;;;;;N;;;;;\n1DF1;COMBINING LATIN SMALL LETTER W;Mn;230;NSM;;;;;N;;;;;\n1DF2;COMBINING LATIN SMALL LETTER A WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;;\n1DF3;COMBINING LATIN SMALL LETTER O WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;;\n1DF4;COMBINING LATIN SMALL LETTER U WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;;\n1DF5;COMBINING UP TACK ABOVE;Mn;230;NSM;;;;;N;;;;;\n1DF6;COMBINING KAVYKA ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;\n1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;\n1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;\n1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;;\n1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;;\n1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;;\n1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;\n1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;\n1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;\n1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;\n1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00\n1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;\n1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02\n1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;\n1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04\n1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;\n1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06\n1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;\n1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08\n1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;\n1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A\n1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;\n1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C\n1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;\n1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E\n1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;\n1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10\n1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;\n1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12\n1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;\n1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14\n1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;\n1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16\n1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;\n1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18\n1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;\n1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A\n1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;\n1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C\n1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;\n1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E\n1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;\n1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20\n1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;\n1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22\n1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;\n1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24\n1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;\n1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26\n1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;\n1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28\n1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;\n1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A\n1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;\n1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C\n1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;\n1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E\n1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;\n1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30\n1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;\n1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32\n1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;\n1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34\n1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;\n1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36\n1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;\n1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38\n1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;\n1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A\n1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;\n1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C\n1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;\n1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E\n1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;\n1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40\n1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;\n1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42\n1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;\n1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44\n1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;\n1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46\n1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;\n1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48\n1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;\n1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A\n1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;\n1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C\n1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;\n1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E\n1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;\n1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50\n1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;\n1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52\n1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;\n1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54\n1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;\n1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56\n1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;\n1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58\n1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;\n1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A\n1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;\n1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C\n1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;\n1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E\n1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;\n1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60\n1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;\n1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62\n1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;\n1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64\n1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;\n1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66\n1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;\n1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68\n1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;\n1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A\n1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;\n1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C\n1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;\n1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E\n1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;\n1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70\n1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;\n1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72\n1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;\n1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74\n1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;\n1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76\n1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;\n1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78\n1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;\n1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A\n1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;\n1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C\n1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;\n1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E\n1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;\n1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80\n1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;\n1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82\n1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;\n1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84\n1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;\n1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86\n1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;\n1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88\n1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;\n1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A\n1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;\n1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C\n1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;\n1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E\n1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;\n1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90\n1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;\n1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92\n1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;\n1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94\n1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;\n1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;\n1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;\n1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;\n1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;\n1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60\n1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;\n1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;\n1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;\n1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;\n1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;\n1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0\n1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;\n1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2\n1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;\n1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4\n1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;\n1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6\n1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;\n1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8\n1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;\n1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA\n1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;\n1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC\n1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;\n1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE\n1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;\n1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0\n1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;\n1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2\n1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;\n1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4\n1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;\n1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6\n1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;\n1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8\n1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;\n1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA\n1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;\n1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC\n1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;\n1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE\n1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;\n1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0\n1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;\n1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2\n1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;\n1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4\n1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;\n1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6\n1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;\n1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8\n1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;\n1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA\n1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;\n1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC\n1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;\n1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE\n1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;\n1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0\n1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;\n1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2\n1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;\n1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4\n1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;\n1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6\n1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;\n1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8\n1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;\n1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA\n1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;\n1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC\n1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;\n1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE\n1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;\n1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0\n1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;\n1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2\n1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;\n1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4\n1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;\n1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6\n1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;\n1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8\n1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;\n1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA\n1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;\n1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC\n1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;\n1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE\n1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;\n1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0\n1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;\n1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2\n1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;\n1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4\n1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;\n1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6\n1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;\n1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8\n1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;\n1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA\n1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;\n1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC\n1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;\n1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE\n1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08\n1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09\n1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A\n1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B\n1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C\n1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D\n1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E\n1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F\n1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;\n1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;\n1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;\n1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;\n1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;\n1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;\n1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;\n1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;\n1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18\n1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19\n1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A\n1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B\n1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C\n1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D\n1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;\n1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;\n1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;\n1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;\n1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;\n1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;\n1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28\n1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29\n1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A\n1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B\n1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C\n1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D\n1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E\n1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F\n1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;\n1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;\n1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;\n1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;\n1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;\n1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;\n1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;\n1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;\n1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38\n1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39\n1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A\n1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B\n1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C\n1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D\n1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E\n1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F\n1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;\n1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;\n1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;\n1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;\n1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;\n1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;\n1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;\n1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;\n1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48\n1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49\n1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A\n1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B\n1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C\n1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D\n1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;\n1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;\n1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;\n1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;\n1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;\n1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;\n1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;\n1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59\n1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;\n1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B\n1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;\n1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D\n1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;\n1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F\n1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;\n1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;\n1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;\n1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;\n1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68\n1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69\n1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A\n1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B\n1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C\n1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D\n1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E\n1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F\n1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;\n1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;\n1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;\n1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;\n1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;\n1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;\n1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;\n1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;\n1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA\n1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB\n1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8\n1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9\n1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA\n1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB\n1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA\n1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB\n1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8\n1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9\n1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA\n1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB\n1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA\n1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB\n1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88\n1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89\n1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A\n1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B\n1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C\n1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D\n1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E\n1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F\n1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;\n1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;\n1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;\n1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;\n1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;\n1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;\n1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;\n1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;\n1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98\n1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99\n1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A\n1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B\n1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C\n1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D\n1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E\n1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F\n1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;\n1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;\n1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;\n1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;\n1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;\n1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;\n1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;\n1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;\n1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8\n1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9\n1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA\n1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB\n1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC\n1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD\n1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE\n1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF\n1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;\n1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;\n1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;\n1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;\n1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;\n1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;\n1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;\n1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;\n1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8\n1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9\n1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;\n1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC\n1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;\n1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;\n1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;\n1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;\n1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;\n1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;\n1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;\n1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;\n1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;\n1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399\n1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;\n1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;\n1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;\n1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;\n1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC\n1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;\n1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;\n1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;\n1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;\n1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;\n1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;\n1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;\n1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;\n1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;\n1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;\n1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;\n1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8\n1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9\n1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;\n1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;\n1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;\n1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;\n1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;\n1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;\n1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;\n1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;\n1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;\n1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;\n1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;\n1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8\n1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9\n1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;\n1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;\n1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;\n1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC\n1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;\n1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;\n1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;\n1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;\n1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;\n1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;\n1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;\n1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;\n1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;\n1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;\n1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;\n1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC\n1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;\n1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;\n1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;\n1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;\n1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;\n1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;\n1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;\n1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;\n1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;\n1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;\n2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;\n2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;\n2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;\n2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;\n200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;\n200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;\n200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;\n200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;\n2010;HYPHEN;Pd;0;ON;;;;;N;;;;;\n2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;\n2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;\n2013;EN DASH;Pd;0;ON;;;;;N;;;;;\n2014;EM DASH;Pd;0;ON;;;;;N;;;;;\n2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;\n2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;\n2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;\n2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;\n2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;\n201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;\n201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;\n201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;\n201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;\n201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;\n201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;\n2020;DAGGER;Po;0;ON;;;;;N;;;;;\n2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;\n2022;BULLET;Po;0;ON;;;;;N;;;;;\n2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;\n2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;\n2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;\n2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;\n2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;\n2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;\n2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;\n202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;\n202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;\n202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;\n202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;\n202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;\n202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;\n2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;\n2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;\n2032;PRIME;Po;0;ET;;;;;N;;;;;\n2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;\n2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;\n2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;\n2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;\n2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;\n2038;CARET;Po;0;ON;;;;;N;;;;;\n2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;\n203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;\n203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;\n203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;\n203D;INTERROBANG;Po;0;ON;;;;;N;;;;;\n203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;\n203F;UNDERTIE;Pc;0;ON;;;;;N;;;;;\n2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;\n2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;\n2042;ASTERISM;Po;0;ON;;;;;N;;;;;\n2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;\n2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;\n2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;\n2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;\n2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;\n2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;\n2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;\n204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;\n204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;\n204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;\n204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;\n204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;\n204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;\n2050;CLOSE UP;Po;0;ON;;;;;N;;;;;\n2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;\n2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;\n2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;\n2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;\n2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;\n2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;\n2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;\n205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;\n205D;TRICOLON;Po;0;ON;;;;;N;;;;;\n205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;\n205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;\n2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;\n2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;\n2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;\n2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;\n2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;\n2066;LEFT-TO-RIGHT ISOLATE;Cf;0;LRI;;;;;N;;;;;\n2067;RIGHT-TO-LEFT ISOLATE;Cf;0;RLI;;;;;N;;;;;\n2068;FIRST STRONG ISOLATE;Cf;0;FSI;;;;;N;;;;;\n2069;POP DIRECTIONAL ISOLATE;Cf;0;PDI;;;;;N;;;;;\n206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;\n206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;\n206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;\n206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;\n206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;\n206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;\n2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;\n2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L;<super> 0069;;;;N;;;;;\n2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;\n2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;\n2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;\n2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;\n2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;\n2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;\n207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;\n207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;\n207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;\n207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;\n207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;\n207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L;<super> 006E;;;;N;;;;;\n2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;\n2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;\n2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;\n2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;\n2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;\n2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;\n2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;\n2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;\n2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;\n2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;\n208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;\n208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;\n208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;\n208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;\n208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;\n2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;\n2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;\n2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;\n2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;\n2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;\n2095;LATIN SUBSCRIPT SMALL LETTER H;Lm;0;L;<sub> 0068;;;;N;;;;;\n2096;LATIN SUBSCRIPT SMALL LETTER K;Lm;0;L;<sub> 006B;;;;N;;;;;\n2097;LATIN SUBSCRIPT SMALL LETTER L;Lm;0;L;<sub> 006C;;;;N;;;;;\n2098;LATIN SUBSCRIPT SMALL LETTER M;Lm;0;L;<sub> 006D;;;;N;;;;;\n2099;LATIN SUBSCRIPT SMALL LETTER N;Lm;0;L;<sub> 006E;;;;N;;;;;\n209A;LATIN SUBSCRIPT SMALL LETTER P;Lm;0;L;<sub> 0070;;;;N;;;;;\n209B;LATIN SUBSCRIPT SMALL LETTER S;Lm;0;L;<sub> 0073;;;;N;;;;;\n209C;LATIN SUBSCRIPT SMALL LETTER T;Lm;0;L;<sub> 0074;;;;N;;;;;\n20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;\n20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;\n20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;\n20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;\n20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;\n20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;\n20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;\n20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;\n20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;\n20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;\n20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;\n20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;\n20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;\n20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;\n20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;\n20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;\n20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;\n20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;\n20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;\n20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;\n20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;\n20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;\n20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;;\n20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;\n20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;\n20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;;\n20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;;\n20BB;NORDIC MARK SIGN;Sc;0;ET;;;;;N;;;;;\n20BC;MANAT SIGN;Sc;0;ET;;;;;N;;;;;\n20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;;\n20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;;\n20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;;\n20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;\n20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;\n20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;\n20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;\n20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;\n20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;\n20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;\n20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;\n20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;\n20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;\n20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;\n20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;\n20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;\n20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;\n20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;\n20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;\n20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;\n20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;\n20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;\n20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;\n20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;\n20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;\n20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;\n20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;\n20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;\n20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;\n20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;\n20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;\n20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;\n20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;\n20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;\n20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;\n20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;\n2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;\n2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;\n2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;\n2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;\n2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;\n2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;\n2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;\n2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;\n2108;SCRUPLE;So;0;ON;;;;;N;;;;;\n2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;\n210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;\n210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;\n210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;\n210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;\n210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;\n2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;\n2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;\n2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;\n2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;\n2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;\n2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;\n2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;\n2118;SCRIPT CAPITAL P;Sm;0;ON;;;;;N;SCRIPT P;;;;\n2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;\n211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;\n211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;\n211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;\n211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;\n211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;\n211F;RESPONSE;So;0;ON;;;;;N;;;;;\n2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;\n2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;\n2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;\n2123;VERSICLE;So;0;ON;;;;;N;;;;;\n2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;\n2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;\n2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;\n2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;\n2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;\n2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;\n212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;\n212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;\n212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;\n212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;\n212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;\n212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;\n2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;\n2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;\n2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;\n2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;\n2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;\n2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;\n2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;\n2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;\n213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;\n213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;\n213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;\n2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;\n2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;\n2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;\n2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;\n2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;\n214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;\n214C;PER SIGN;So;0;ON;;;;;N;;;;;\n214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;\n214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132\n214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;\n2150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;;\n2151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;;\n2152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;;\n2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;\n2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;\n2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;\n2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;\n2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;\n2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;\n2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;\n215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;\n215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;\n215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;\n215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;\n215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;\n215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;\n2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;\n2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;\n2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;\n2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;\n2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;\n2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;\n2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;\n2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;\n2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;\n2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;\n216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;\n216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;\n216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;\n216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;\n216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;\n216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;\n2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160\n2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161\n2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162\n2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163\n2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164\n2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165\n2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166\n2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167\n2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168\n2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169\n217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A\n217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B\n217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C\n217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D\n217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E\n217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F\n2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;\n2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;\n2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;\n2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;\n2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183\n2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;\n2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;\n2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;\n2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;\n2189;VULGAR FRACTION ZERO THIRDS;No;0;ON;<fraction> 0030 2044 0033;;;0;N;;;;;\n218A;TURNED DIGIT TWO;So;0;ON;;;;;N;;;;;\n218B;TURNED DIGIT THREE;So;0;ON;;;;;N;;;;;\n2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;\n2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;\n2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;\n2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;\n2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;\n2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;\n2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;\n2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;\n2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;\n2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;\n219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;\n219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;\n219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;\n219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;\n219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;\n219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;\n21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;\n21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;\n21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;\n21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;\n21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;\n21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;\n21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;\n21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;\n21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;\n21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;\n21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;\n21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;\n21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;\n21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;\n21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;\n21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;\n21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;\n21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;\n21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;\n21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;\n21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;\n21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;\n21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;\n21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;\n21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;\n21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;\n21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;\n21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;\n21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;\n21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;\n21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;\n21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;\n21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;\n21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;\n21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;\n21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;\n21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;\n21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;\n21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;\n21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;\n21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;\n21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;\n21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;\n21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;\n21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;\n21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;\n21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;\n21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;\n21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;\n21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;\n21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;\n21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;\n21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;\n21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;\n21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;\n21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;\n21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;\n21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;\n21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;\n21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;\n21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;\n21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;\n21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;\n21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;\n21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;\n21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;\n21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;\n21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;\n21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;\n21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;\n21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;\n21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;\n21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;\n21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;\n21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;\n21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;\n21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;\n21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;\n21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;\n21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;\n21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;\n21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;\n21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;\n21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;\n21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;\n21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;\n21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;\n21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;\n21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;\n2200;FOR ALL;Sm;0;ON;;;;;N;;;;;\n2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;\n2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;\n2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;\n2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;\n2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;\n2206;INCREMENT;Sm;0;ON;;;;;N;;;;;\n2207;NABLA;Sm;0;ON;;;;;N;;;;;\n2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;\n2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;\n220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;\n220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;\n220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;\n220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;\n220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;\n220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;\n2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;\n2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;\n2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;\n2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;\n2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;\n2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;\n2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;\n2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;\n2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;\n2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;\n221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;\n221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;\n221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;\n221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;\n221E;INFINITY;Sm;0;ON;;;;;N;;;;;\n221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;\n2220;ANGLE;Sm;0;ON;;;;;Y;;;;;\n2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;\n2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;\n2223;DIVIDES;Sm;0;ON;;;;;N;;;;;\n2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;\n2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;\n2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;\n2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;\n222A;UNION;Sm;0;ON;;;;;N;;;;;\n222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;\n222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;\n222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;\n2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;\n2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2234;THEREFORE;Sm;0;ON;;;;;N;;;;;\n2235;BECAUSE;Sm;0;ON;;;;;N;;;;;\n2236;RATIO;Sm;0;ON;;;;;N;;;;;\n2237;PROPORTION;Sm;0;ON;;;;;N;;;;;\n2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;\n2239;EXCESS;Sm;0;ON;;;;;Y;;;;;\n223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;\n223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;\n223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;\n223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;\n223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;\n2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;\n2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;\n2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;\n2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;\n2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;\n2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;\n224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;\n224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;\n224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;\n224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;\n2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;\n2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;\n2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;\n2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;\n2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;\n2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;\n225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;\n225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;\n225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;\n225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;\n225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;\n225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;\n2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;\n2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;\n2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;\n2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;\n2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;\n2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;\n2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;\n2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;\n2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;\n226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;\n226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;\n226C;BETWEEN;Sm;0;ON;;;;;N;;;;;\n226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;\n226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;\n226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;\n2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;\n2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;\n2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;\n2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;\n2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;\n2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;\n2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;\n2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;\n2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;\n2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;\n227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;\n227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;\n227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;\n227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;\n2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;\n2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;\n2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;\n2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;\n2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;\n2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;\n2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;\n2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;\n228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;\n228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;\n228C;MULTISET;Sm;0;ON;;;;;Y;;;;;\n228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;\n228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;\n228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;\n2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;\n2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;\n2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;\n2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;\n2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;\n2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;\n2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;\n2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;\n229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;\n229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;\n229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;\n229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;\n229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;\n229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;\n22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;\n22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;\n22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;\n22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;\n22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;\n22A5;UP TACK;Sm;0;ON;;;;;N;;;;;\n22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;\n22A7;MODELS;Sm;0;ON;;;;;Y;;;;;\n22A8;TRUE;Sm;0;ON;;;;;Y;;;;;\n22A9;FORCES;Sm;0;ON;;;;;Y;;;;;\n22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;\n22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;\n22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;\n22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;\n22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;\n22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;\n22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;\n22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;\n22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;\n22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;\n22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;\n22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;\n22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;\n22BB;XOR;Sm;0;ON;;;;;N;;;;;\n22BC;NAND;Sm;0;ON;;;;;N;;;;;\n22BD;NOR;Sm;0;ON;;;;;N;;;;;\n22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;\n22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;\n22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;\n22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;\n22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;\n22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;\n22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;\n22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;\n22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;\n22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;\n22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;\n22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;\n22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;\n22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;\n22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;\n22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;\n22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;\n22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;\n22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;\n22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;\n22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;\n22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;\n22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;\n22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;\n22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;\n22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;\n22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;\n22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;\n22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;\n22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;\n22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;\n22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;\n22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;\n22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;\n22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;\n22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;\n22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;\n22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;\n22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;\n22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;\n22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;\n22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;\n22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;\n22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;\n22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;\n22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;\n22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;\n22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;\n22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;\n2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;\n2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;\n2302;HOUSE;So;0;ON;;;;;N;;;;;\n2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;\n2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;\n2305;PROJECTIVE;So;0;ON;;;;;N;;;;;\n2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;\n2307;WAVY LINE;So;0;ON;;;;;N;;;;;\n2308;LEFT CEILING;Ps;0;ON;;;;;Y;;;;;\n2309;RIGHT CEILING;Pe;0;ON;;;;;Y;;;;;\n230A;LEFT FLOOR;Ps;0;ON;;;;;Y;;;;;\n230B;RIGHT FLOOR;Pe;0;ON;;;;;Y;;;;;\n230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;\n230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;\n230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;\n230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;\n2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;\n2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;\n2312;ARC;So;0;ON;;;;;N;;;;;\n2313;SEGMENT;So;0;ON;;;;;N;;;;;\n2314;SECTOR;So;0;ON;;;;;N;;;;;\n2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;\n2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;\n2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;\n2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;\n2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;\n231A;WATCH;So;0;ON;;;;;N;;;;;\n231B;HOURGLASS;So;0;ON;;;;;N;;;;;\n231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;\n231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;\n231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;\n231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;\n2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2322;FROWN;So;0;ON;;;;;N;;;;;\n2323;SMILE;So;0;ON;;;;;N;;;;;\n2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;\n2325;OPTION KEY;So;0;ON;;;;;N;;;;;\n2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;\n2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;\n2328;KEYBOARD;So;0;ON;;;;;N;;;;;\n2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;\n232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;\n232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;\n232C;BENZENE RING;So;0;ON;;;;;N;;;;;\n232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;\n232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;\n232F;SYMMETRY;So;0;ON;;;;;N;;;;;\n2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;\n2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;\n2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;\n2333;SLOPE;So;0;ON;;;;;N;;;;;\n2334;COUNTERBORE;So;0;ON;;;;;N;;;;;\n2335;COUNTERSINK;So;0;ON;;;;;N;;;;;\n2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;\n2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;\n2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;\n2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;\n233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;\n233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;\n233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;\n233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;\n233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;\n233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;\n2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;\n2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;\n2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;\n2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;\n2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;\n2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;\n2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;\n2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;\n2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;\n2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;\n234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;\n234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;\n234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;\n234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;\n234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;\n234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;\n2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;\n2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;\n2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;\n2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;\n2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;\n2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;\n2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;\n2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;\n2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;\n2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;\n235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;\n235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;\n235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;\n235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;\n235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;\n235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;\n2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;\n2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;\n2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;\n2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;\n2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;\n2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;\n2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;\n2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;\n2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;\n2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;\n236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;\n236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;\n236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;\n236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;\n236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;\n236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;\n2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;\n2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;\n2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;\n2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;\n2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;\n2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;\n2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;\n2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;\n2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;\n2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;\n237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;\n237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;\n237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;\n237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;\n237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;\n237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;\n2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;\n2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;\n2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;\n2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;\n2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;\n2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;\n2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;\n2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;\n2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;\n2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;;\n238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;;\n238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;;\n238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;\n238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;\n238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;\n238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;\n2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;\n2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;\n2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;\n2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;\n2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;\n2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;\n2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;\n2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;\n2398;NEXT PAGE;So;0;ON;;;;;N;;;;;\n2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;\n239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;\n239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;\n239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;\n239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;\n239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;\n239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;\n23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;\n23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;\n23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;\n23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;\n23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;\n23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;\n23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;\n23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;\n23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;\n23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;\n23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;\n23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;\n23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;\n23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;\n23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;\n23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;\n23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;\n23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;\n23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;\n23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;\n23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;\n23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;\n23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;\n23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;\n23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;\n23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;\n23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;\n23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;\n23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;\n23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;\n23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;\n23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;\n23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;\n23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;\n23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;\n23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;\n23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;\n23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;\n23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;\n23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;\n23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;\n23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;\n23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;\n23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;\n23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;\n23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;\n23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;\n23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;\n23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;\n23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;\n23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;\n23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;\n23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;\n23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;\n23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;\n23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;\n23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;\n23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;\n23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;\n23DB;FUSE;So;0;ON;;;;;N;;;;;\n23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;;\n23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;;\n23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;;\n23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;;\n23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;\n23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;\n23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;\n23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;\n23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;\n23E5;FLATNESS;So;0;ON;;;;;N;;;;;\n23E6;AC CURRENT;So;0;ON;;;;;N;;;;;\n23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;\n23E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;;\n23E9;BLACK RIGHT-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;;\n23EA;BLACK LEFT-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;;\n23EB;BLACK UP-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;;\n23EC;BLACK DOWN-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;;\n23ED;BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;\n23EE;BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;\n23EF;BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR;So;0;ON;;;;;N;;;;;\n23F0;ALARM CLOCK;So;0;ON;;;;;N;;;;;\n23F1;STOPWATCH;So;0;ON;;;;;N;;;;;\n23F2;TIMER CLOCK;So;0;ON;;;;;N;;;;;\n23F3;HOURGLASS WITH FLOWING SAND;So;0;ON;;;;;N;;;;;\n23F4;BLACK MEDIUM LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;\n23F5;BLACK MEDIUM RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;\n23F6;BLACK MEDIUM UP-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;\n23F7;BLACK MEDIUM DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;\n23F8;DOUBLE VERTICAL BAR;So;0;ON;;;;;N;;;;;\n23F9;BLACK SQUARE FOR STOP;So;0;ON;;;;;N;;;;;\n23FA;BLACK CIRCLE FOR RECORD;So;0;ON;;;;;N;;;;;\n23FB;POWER SYMBOL;So;0;ON;;;;;N;;;;;\n23FC;POWER ON-OFF SYMBOL;So;0;ON;;;;;N;;;;;\n23FD;POWER ON SYMBOL;So;0;ON;;;;;N;;;;;\n23FE;POWER SLEEP SYMBOL;So;0;ON;;;;;N;;;;;\n23FF;OBSERVER EYE SYMBOL;So;0;ON;;;;;N;;;;;\n2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;\n2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;\n2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;\n2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;\n2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;\n2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;\n2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;\n2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;\n2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;\n2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;\n240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;\n240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;\n240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;\n240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;\n240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;\n240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;\n2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;\n2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;\n2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;\n2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;\n2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;\n2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;\n2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;\n2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;\n2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;\n2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;\n241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;\n241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;\n241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;\n241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;\n241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;\n241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;\n2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;\n2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;\n2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;\n2423;OPEN BOX;So;0;ON;;;;;N;;;;;\n2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;\n2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;\n2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;\n2440;OCR HOOK;So;0;ON;;;;;N;;;;;\n2441;OCR CHAIR;So;0;ON;;;;;N;;;;;\n2442;OCR FORK;So;0;ON;;;;;N;;;;;\n2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;\n2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;\n2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;\n2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;\n2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;\n2448;OCR DASH;So;0;ON;;;;;N;;;;;\n2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;\n244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;\n2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;\n2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;\n2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;\n2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;\n2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;\n2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;\n2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;\n2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;\n2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;\n2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;\n246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;\n246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;\n246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;\n246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;\n246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;\n246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;\n2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;\n2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;\n2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;\n2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;\n2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;\n2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;\n2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;\n2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;\n2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;\n2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;\n247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;\n247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;\n247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;\n247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;\n247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;\n247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;\n2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;\n2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;\n2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;\n2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;\n2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;\n2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;\n2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;\n2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;\n2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;\n2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;\n248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;\n248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;\n248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;\n248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;\n248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;\n248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;\n2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;\n2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;\n2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;\n2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;\n2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;\n2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;\n2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;\n2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;\n2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;\n2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;\n249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;\n249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;\n249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;\n249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;\n249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;\n249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;\n24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;\n24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;\n24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;\n24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;\n24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;\n24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;\n24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;\n24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;\n24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;\n24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;\n24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;\n24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;\n24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;\n24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;\n24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;\n24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;\n24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;\n24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;\n24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;\n24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;\n24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;\n24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;\n24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;\n24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;\n24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;\n24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;\n24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;\n24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;\n24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;\n24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;\n24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;\n24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;\n24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;\n24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;\n24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;\n24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;\n24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;\n24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;\n24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;\n24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;\n24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;\n24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;\n24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;\n24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;\n24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;\n24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;\n24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;\n24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;\n24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6\n24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7\n24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8\n24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9\n24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA\n24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB\n24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC\n24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD\n24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE\n24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF\n24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0\n24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1\n24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2\n24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3\n24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4\n24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5\n24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6\n24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7\n24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8\n24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9\n24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA\n24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB\n24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC\n24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD\n24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE\n24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF\n24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;\n24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;\n24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;\n24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;\n24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;\n24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;\n24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;\n24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;\n24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;\n24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;\n24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;\n24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;\n24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;\n24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;\n24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;\n24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;\n24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;\n24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;\n24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;\n24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;\n24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;\n24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;\n2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;\n2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;\n2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;\n2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;\n2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;\n2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;\n2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;\n2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;\n2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;\n2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;\n250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;\n250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;\n250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;\n250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;\n250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;\n250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;\n2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;\n2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;\n2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;\n2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;\n2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;\n2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;\n2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;\n2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;\n2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;\n2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;\n251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;\n251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;\n251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;\n251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;\n251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;\n251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;\n2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;\n2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;\n2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;\n2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;\n2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;\n2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;\n2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;\n2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;\n2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;\n2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;\n252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;\n252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;\n252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;\n252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;\n252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;\n252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;\n2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;\n2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;\n2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;\n2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;\n2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;\n2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;\n2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;\n2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;\n2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;\n2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;\n253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;\n253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;\n253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;\n253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;\n253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;\n253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;\n2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;\n2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;\n2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;\n2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;\n2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;\n2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;\n2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;\n2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;\n2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;\n2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;\n254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;\n254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;\n254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;\n254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;\n254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;\n254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;\n2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;\n2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;\n2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;\n2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;\n2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;\n2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;\n2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;\n2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;\n2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;\n2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;\n255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;\n255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;\n255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;\n255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;\n255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;\n255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;\n2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;\n2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;\n2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;\n2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;\n2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;\n2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;\n2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;\n2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;\n2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;\n2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;\n256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;\n256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;\n256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;\n256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;\n256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;\n256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;\n2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;\n2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;\n2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;\n2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;\n2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;\n2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;\n2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;\n2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;\n2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;\n2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;\n257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;\n257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;\n257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;\n257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;\n257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;\n257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;\n2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;\n2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;\n2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;\n2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n2588;FULL BLOCK;So;0;ON;;;;;N;;;;;\n2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;\n258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;\n258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;\n2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;\n2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n2593;DARK SHADE;So;0;ON;;;;;N;;;;;\n2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;\n2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;\n2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;\n2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;\n259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;\n259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;\n259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;\n259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;\n259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;\n259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;\n25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;\n25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;\n25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;\n25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;\n25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;\n25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;\n25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;\n25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;\n25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;\n25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;\n25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;\n25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;\n25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;\n25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;\n25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;\n25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;\n25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;\n25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;\n25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;\n25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;\n25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;\n25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;\n25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;\n25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;\n25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;\n25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;\n25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;\n25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;\n25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;\n25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;\n25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;\n25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;\n25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;\n25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;\n25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;\n25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;\n25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;\n25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;\n25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;\n25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;\n25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;\n25C9;FISHEYE;So;0;ON;;;;;N;;;;;\n25CA;LOZENGE;So;0;ON;;;;;N;;;;;\n25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;\n25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;\n25CE;BULLSEYE;So;0;ON;;;;;N;;;;;\n25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;\n25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;\n25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;\n25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;\n25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;\n25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;\n25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;\n25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;\n25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;\n25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;\n25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;\n25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;\n25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;\n25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;\n25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;\n25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;\n25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;\n25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;\n25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;\n25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;\n25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;\n25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;\n25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;\n25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;\n25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;\n25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;\n25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;\n25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;\n25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;\n25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;\n25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;\n25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;\n25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;\n25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;\n25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;\n25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;\n25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;\n25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;\n25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;\n25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;\n25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;\n2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;\n2601;CLOUD;So;0;ON;;;;;N;;;;;\n2602;UMBRELLA;So;0;ON;;;;;N;;;;;\n2603;SNOWMAN;So;0;ON;;;;;N;;;;;\n2604;COMET;So;0;ON;;;;;N;;;;;\n2605;BLACK STAR;So;0;ON;;;;;N;;;;;\n2606;WHITE STAR;So;0;ON;;;;;N;;;;;\n2607;LIGHTNING;So;0;ON;;;;;N;;;;;\n2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;\n2609;SUN;So;0;ON;;;;;N;;;;;\n260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;\n260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;\n260C;CONJUNCTION;So;0;ON;;;;;N;;;;;\n260D;OPPOSITION;So;0;ON;;;;;N;;;;;\n260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;\n260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;\n2610;BALLOT BOX;So;0;ON;;;;;N;;;;;\n2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;\n2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;\n2613;SALTIRE;So;0;ON;;;;;N;;;;;\n2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;\n2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;\n2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;\n2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;\n2618;SHAMROCK;So;0;ON;;;;;N;;;;;\n2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;\n261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;\n261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;\n261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;\n261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;\n2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;\n2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;\n2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;\n2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;\n2624;CADUCEUS;So;0;ON;;;;;N;;;;;\n2625;ANKH;So;0;ON;;;;;N;;;;;\n2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;\n2627;CHI RHO;So;0;ON;;;;;N;;;;;\n2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;\n2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;\n262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;\n262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;\n262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;\n262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;\n262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;\n262F;YIN YANG;So;0;ON;;;;;N;;;;;\n2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;\n2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;\n2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;\n2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;\n2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;\n2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;\n2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;\n2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;\n2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;\n2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;\n263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;\n263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;\n263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;\n263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;\n263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;\n263F;MERCURY;So;0;ON;;;;;N;;;;;\n2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;\n2641;EARTH;So;0;ON;;;;;N;;;;;\n2642;MALE SIGN;So;0;ON;;;;;N;;;;;\n2643;JUPITER;So;0;ON;;;;;N;;;;;\n2644;SATURN;So;0;ON;;;;;N;;;;;\n2645;URANUS;So;0;ON;;;;;N;;;;;\n2646;NEPTUNE;So;0;ON;;;;;N;;;;;\n2647;PLUTO;So;0;ON;;;;;N;;;;;\n2648;ARIES;So;0;ON;;;;;N;;;;;\n2649;TAURUS;So;0;ON;;;;;N;;;;;\n264A;GEMINI;So;0;ON;;;;;N;;;;;\n264B;CANCER;So;0;ON;;;;;N;;;;;\n264C;LEO;So;0;ON;;;;;N;;;;;\n264D;VIRGO;So;0;ON;;;;;N;;;;;\n264E;LIBRA;So;0;ON;;;;;N;;;;;\n264F;SCORPIUS;So;0;ON;;;;;N;;;;;\n2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;\n2651;CAPRICORN;So;0;ON;;;;;N;;;;;\n2652;AQUARIUS;So;0;ON;;;;;N;;;;;\n2653;PISCES;So;0;ON;;;;;N;;;;;\n2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;\n2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;\n2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;\n2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;\n2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;\n2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;\n265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;\n265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;\n265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;\n265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;\n265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;\n265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;\n2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;\n2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;\n2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;\n2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;\n2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;\n2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;\n2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;\n2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;\n2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;\n2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;\n266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;\n266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;\n266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;\n266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;\n266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;\n266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;\n2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;\n2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;\n2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;\n2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;;\n2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;;\n2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;;\n2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;;\n2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;;\n2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;;\n2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;;\n267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;\n267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;\n267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;\n267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;\n267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;\n267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;\n2680;DIE FACE-1;So;0;ON;;;;;N;;;;;\n2681;DIE FACE-2;So;0;ON;;;;;N;;;;;\n2682;DIE FACE-3;So;0;ON;;;;;N;;;;;\n2683;DIE FACE-4;So;0;ON;;;;;N;;;;;\n2684;DIE FACE-5;So;0;ON;;;;;N;;;;;\n2685;DIE FACE-6;So;0;ON;;;;;N;;;;;\n2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;\n2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;\n2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;\n2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;\n268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;\n268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;\n268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;\n268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;\n268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;\n268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;\n2690;WHITE FLAG;So;0;ON;;;;;N;;;;;\n2691;BLACK FLAG;So;0;ON;;;;;N;;;;;\n2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;\n2693;ANCHOR;So;0;ON;;;;;N;;;;;\n2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;\n2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;\n2696;SCALES;So;0;ON;;;;;N;;;;;\n2697;ALEMBIC;So;0;ON;;;;;N;;;;;\n2698;FLOWER;So;0;ON;;;;;N;;;;;\n2699;GEAR;So;0;ON;;;;;N;;;;;\n269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;\n269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;\n269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;\n269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;\n269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;;\n269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;;\n26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;\n26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;\n26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;\n26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;\n26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;\n26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;\n26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;\n26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;\n26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;\n26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;\n26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;\n26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;\n26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;\n26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;\n26B0;COFFIN;So;0;ON;;;;;N;;;;;\n26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;\n26B2;NEUTER;So;0;ON;;;;;N;;;;;\n26B3;CERES;So;0;ON;;;;;N;;;;;\n26B4;PALLAS;So;0;ON;;;;;N;;;;;\n26B5;JUNO;So;0;ON;;;;;N;;;;;\n26B6;VESTA;So;0;ON;;;;;N;;;;;\n26B7;CHIRON;So;0;ON;;;;;N;;;;;\n26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;\n26B9;SEXTILE;So;0;ON;;;;;N;;;;;\n26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;\n26BB;QUINCUNX;So;0;ON;;;;;N;;;;;\n26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;\n26BD;SOCCER BALL;So;0;ON;;;;;N;;;;;\n26BE;BASEBALL;So;0;ON;;;;;N;;;;;\n26BF;SQUARED KEY;So;0;ON;;;;;N;;;;;\n26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;\n26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;\n26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;\n26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;\n26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;;\n26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;\n26C6;RAIN;So;0;ON;;;;;N;;;;;\n26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;;\n26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;;\n26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;\n26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;\n26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;;\n26CC;CROSSING LANES;So;0;ON;;;;;N;;;;;\n26CD;DISABLED CAR;So;0;ON;;;;;N;;;;;\n26CE;OPHIUCHUS;So;0;ON;;;;;N;;;;;\n26CF;PICK;So;0;ON;;;;;N;;;;;\n26D0;CAR SLIDING;So;0;ON;;;;;N;;;;;\n26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;;\n26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;;\n26D3;CHAINS;So;0;ON;;;;;N;;;;;\n26D4;NO ENTRY;So;0;ON;;;;;N;;;;;\n26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;\n26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;\n26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;\n26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;;\n26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;;\n26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;;\n26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;\n26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;;\n26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;;\n26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;;\n26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;;\n26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;;\n26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;;\n26E2;ASTRONOMICAL SYMBOL FOR URANUS;So;0;ON;;;;;N;;;;;\n26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;;\n26E4;PENTAGRAM;So;0;ON;;;;;N;;;;;\n26E5;RIGHT-HANDED INTERLACED PENTAGRAM;So;0;ON;;;;;N;;;;;\n26E6;LEFT-HANDED INTERLACED PENTAGRAM;So;0;ON;;;;;N;;;;;\n26E7;INVERTED PENTAGRAM;So;0;ON;;;;;N;;;;;\n26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;;\n26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;;\n26EA;CHURCH;So;0;ON;;;;;N;;;;;\n26EB;CASTLE;So;0;ON;;;;;N;;;;;\n26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;;\n26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;;\n26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;;\n26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;;\n26F0;MOUNTAIN;So;0;ON;;;;;N;;;;;\n26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;;\n26F2;FOUNTAIN;So;0;ON;;;;;N;;;;;\n26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;;\n26F4;FERRY;So;0;ON;;;;;N;;;;;\n26F5;SAILBOAT;So;0;ON;;;;;N;;;;;\n26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;;\n26F7;SKIER;So;0;ON;;;;;N;;;;;\n26F8;ICE SKATE;So;0;ON;;;;;N;;;;;\n26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;;\n26FA;TENT;So;0;ON;;;;;N;;;;;\n26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;;\n26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;;\n26FD;FUEL PUMP;So;0;ON;;;;;N;;;;;\n26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;;\n26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;;\n2700;BLACK SAFETY SCISSORS;So;0;ON;;;;;N;;;;;\n2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;\n2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;\n2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;\n2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;\n2705;WHITE HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;\n2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;\n2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;\n2708;AIRPLANE;So;0;ON;;;;;N;;;;;\n2709;ENVELOPE;So;0;ON;;;;;N;;;;;\n270A;RAISED FIST;So;0;ON;;;;;N;;;;;\n270B;RAISED HAND;So;0;ON;;;;;N;;;;;\n270C;VICTORY HAND;So;0;ON;;;;;N;;;;;\n270D;WRITING HAND;So;0;ON;;;;;N;;;;;\n270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;\n270F;PENCIL;So;0;ON;;;;;N;;;;;\n2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;\n2711;WHITE NIB;So;0;ON;;;;;N;;;;;\n2712;BLACK NIB;So;0;ON;;;;;N;;;;;\n2713;CHECK MARK;So;0;ON;;;;;N;;;;;\n2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;\n2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;\n2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;\n2717;BALLOT X;So;0;ON;;;;;N;;;;;\n2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;\n2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;\n271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;\n271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;\n271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;\n271D;LATIN CROSS;So;0;ON;;;;;N;;;;;\n271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;\n271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;\n2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;\n2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;\n2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;\n2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;\n2728;SPARKLES;So;0;ON;;;;;N;;;;;\n2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;\n272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;\n272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;\n272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;\n272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;\n272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;\n272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;\n2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;\n2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;\n2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;\n2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;\n2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;\n273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;\n273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;\n273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;\n2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;\n2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;\n2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;\n2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;\n2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;\n2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;\n2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;\n2747;SPARKLE;So;0;ON;;;;;N;;;;;\n2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;\n2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;\n274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;\n274C;CROSS MARK;So;0;ON;;;;;N;;;;;\n274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n274E;NEGATIVE SQUARED CROSS MARK;So;0;ON;;;;;N;;;;;\n274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;\n2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;\n2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;\n2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;\n2753;BLACK QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2754;WHITE QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2755;WHITE EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;\n2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;;\n2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;\n2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;\n275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;\n275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n275F;HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2760;HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;\n2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;\n2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;\n2766;FLORAL HEART;So;0;ON;;;;;N;;;;;\n2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;\n2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;\n2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;\n2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;\n2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;\n2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;\n2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;\n277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;\n277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;\n277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;\n277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;\n277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;\n277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;\n2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;\n2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;\n2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;\n2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;\n2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;\n2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;\n2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;\n2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;\n2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;\n2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;\n278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;\n278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;\n278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;\n278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;\n278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;\n278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;\n2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;\n2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;\n2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;\n2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;\n2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;\n2795;HEAVY PLUS SIGN;So;0;ON;;;;;N;;;;;\n2796;HEAVY MINUS SIGN;So;0;ON;;;;;N;;;;;\n2797;HEAVY DIVISION SIGN;So;0;ON;;;;;N;;;;;\n2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;\n2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;\n279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;\n279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;\n279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;\n279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;\n279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;\n279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;\n27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;\n27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;\n27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;\n27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;\n27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;\n27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;\n27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;\n27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;\n27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;\n27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;\n27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;\n27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;\n27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;\n27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;\n27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;\n27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;\n27B0;CURLY LOOP;So;0;ON;;;;;N;;;;;\n27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;\n27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;\n27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;\n27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;\n27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;\n27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;\n27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;\n27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;\n27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;\n27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;\n27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;\n27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;\n27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;\n27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;\n27BF;DOUBLE CURLY LOOP;So;0;ON;;;;;N;;;;;\n27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;\n27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;\n27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;\n27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;\n27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;\n27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;\n27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;\n27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;\n27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;\n27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;\n27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;\n27CB;MATHEMATICAL RISING DIAGONAL;Sm;0;ON;;;;;Y;;;;;\n27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;\n27CD;MATHEMATICAL FALLING DIAGONAL;Sm;0;ON;;;;;Y;;;;;\n27CE;SQUARED LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n27CF;SQUARED LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;\n27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;\n27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;\n27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;\n27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;\n27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;\n27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;\n27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;\n27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;\n27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;\n27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;\n27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;\n27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;\n27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;\n27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;\n27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;\n27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;\n27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;\n27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;\n27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;\n27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;\n27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;\n27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;\n27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;\n27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;\n27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;\n27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;\n27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;\n27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;\n27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;\n27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;\n27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;;\n27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;\n27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;\n27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;\n27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;\n27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;\n27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;\n27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;\n27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;\n27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;\n27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;\n2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;\n2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;\n2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;\n2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;\n2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;\n2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;\n2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;\n2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;\n2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;\n2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;\n280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;\n280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;\n280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;\n280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;\n280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;\n280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;\n2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;\n2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;\n2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;\n2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;\n2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;\n2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;\n2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;\n2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;\n2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;\n2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;\n281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;\n281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;\n281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;\n281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;\n281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;\n281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;\n2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;\n2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;\n2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;\n2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;\n2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;\n2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;\n2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;\n2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;\n2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;\n2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;\n282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;\n282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;\n282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;\n282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;\n282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;\n282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;\n2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;\n2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;\n2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;\n2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;\n2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;\n2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;\n2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;\n2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;\n2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;\n2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;\n283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;\n283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;\n283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;\n283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;\n283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;\n283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;\n2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;\n2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;\n2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;\n2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;\n2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;\n2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;\n2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;\n2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;\n2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;\n2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;\n284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;\n284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;\n284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;\n284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;\n284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;\n284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;\n2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;\n2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;\n2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;\n2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;\n2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;\n2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;\n2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;\n2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;\n2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;\n2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;\n285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;\n285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;\n285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;\n285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;\n285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;\n285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;\n2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;\n2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;\n2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;\n2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;\n2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;\n2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;\n2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;\n2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;\n2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;\n2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;\n286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;\n286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;\n286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;\n286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;\n286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;\n286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;\n2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;\n2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;\n2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;\n2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;\n2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;\n2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;\n2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;\n2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;\n2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;\n2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;\n287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;\n287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;\n287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;\n287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;\n287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;\n287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;\n2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;\n2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;\n2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;\n2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;\n2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;\n2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;\n2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;\n2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;\n2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;\n2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;\n288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;\n288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;\n288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;\n288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;\n288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;\n288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;\n2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;\n2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;\n2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;\n2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;\n2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;\n2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;\n2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;\n2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;\n2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;\n2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;\n289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;\n289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;\n289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;\n289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;\n289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;\n289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;\n28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;\n28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;\n28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;\n28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;\n28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;\n28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;\n28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;\n28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;\n28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;\n28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;\n28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;\n28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;\n28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;\n28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;\n28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;\n28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;\n28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;\n28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;\n28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;\n28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;\n28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;\n28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;\n28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;\n28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;\n28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;\n28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;\n28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;\n28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;\n28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;\n28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;\n28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;\n28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;\n28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;\n28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;\n28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;\n28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;\n28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;\n28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;\n28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;\n28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;\n28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;\n28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;\n28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;\n28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;\n28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;\n28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;\n28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;\n28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;\n28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;\n28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;\n28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;\n28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;\n28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;\n28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;\n28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;\n28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;\n28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;\n28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;\n28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;\n28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;\n28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;\n28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;\n28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;\n28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;\n28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;\n28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;\n28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;\n28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;\n28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;\n28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;\n28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;\n28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;\n28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;\n28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;\n28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;\n28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;\n28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;\n28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;\n28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;\n28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;\n28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;\n28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;\n28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;\n28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;\n28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;\n28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;\n28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;\n28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;\n28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;\n28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;\n28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;\n28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;\n28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;\n28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;\n28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;\n28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;\n2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;\n2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;\n290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;\n290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;\n290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;\n2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;\n2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;\n2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;\n2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;\n291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;\n291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;\n291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;\n291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;\n291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;\n291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;\n2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;\n2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;\n2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;\n2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;\n2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;\n2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;\n2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;\n292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;\n292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;\n292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;\n292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;\n2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;\n2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;\n2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;\n2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;\n2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;\n2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;\n2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;\n293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;\n293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;\n2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;\n2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;\n2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;\n2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;\n2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;\n2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;\n2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;\n294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;\n294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;\n294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;\n294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;\n294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;\n294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;\n2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;\n2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;\n2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;\n2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;\n2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;\n2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;\n2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;\n2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;\n2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;\n2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;\n295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;\n295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;\n295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;\n295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;\n295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;\n295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;\n2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;\n2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;\n2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;\n2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;\n2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;\n2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;\n2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;\n2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;\n2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;\n2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;\n296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;\n296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;\n296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;\n296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;\n296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;\n296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;\n2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;\n2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;\n2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;\n2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;\n2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;\n297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;\n297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;\n297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;\n297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;\n2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;\n2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;\n2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;\n2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;\n2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;\n2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;\n2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;\n2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;\n2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;\n2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;\n298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;\n298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;\n298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;\n298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;\n298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;\n298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;\n2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;\n2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;\n2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;\n2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;\n2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;\n2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;\n2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;\n2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;\n2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;\n2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;\n299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;\n299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;\n299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;\n299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;\n299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;\n299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;\n29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;\n29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;N;;;;;\n29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;\n29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;\n29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;\n29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;\n29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;\n29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;\n29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;\n29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;\n29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;\n29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;\n29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;\n29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;\n29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;\n29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;\n29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;\n29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;\n29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;\n29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;\n29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;\n29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;\n29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;\n29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;\n29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;\n29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;\n29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;\n29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;\n29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;\n29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;\n29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;\n29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;\n29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;\n29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;\n29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;\n29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;\n29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;\n29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;\n29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;\n29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;\n29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;\n29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;\n29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;\n29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;\n29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;\n29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;\n29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;\n29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;\n29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;\n29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;\n29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;\n29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;\n29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;\n29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;\n29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;\n29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;\n29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;\n29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;\n29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;\n29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;\n29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;\n29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;\n29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;\n29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;\n29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;\n29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;\n29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;\n29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;\n29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;\n29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;\n29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;\n29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;\n29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;\n29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;\n29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;\n29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;\n29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;\n29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;\n29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;\n29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;\n29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;\n29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;\n29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;\n29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;\n29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;\n29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;\n29FE;TINY;Sm;0;ON;;;;;N;;;;;\n29FF;MINY;Sm;0;ON;;;;;N;;;;;\n2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;\n2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;\n2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;\n2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;\n2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;\n2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;\n2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;\n2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;\n2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;\n2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;\n2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;\n2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;\n2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;\n2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;\n2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;\n2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;\n2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;\n2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;\n2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;\n2A1D;JOIN;Sm;0;ON;;;;;N;;;;;\n2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;\n2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;\n2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;\n2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;\n2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;\n2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;\n2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;\n2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;\n2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;\n2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;\n2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;\n2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;\n2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;\n2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;\n2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;\n2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;\n2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;\n2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;\n2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;\n2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;\n2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;\n2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;\n2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;\n2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;\n2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;\n2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;\n2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;\n2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;\n2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;\n2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;\n2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;\n2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;\n2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;\n2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;\n2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;\n2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;\n2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;\n2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;\n2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;\n2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;\n2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;\n2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;\n2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;\n2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;\n2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;\n2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;\n2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;\n2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;\n2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;\n2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;\n2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;\n2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;\n2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;\n2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;\n2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;\n2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;\n2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;\n2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;\n2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;\n2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;\n2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;\n2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;\n2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;\n2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;\n2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;\n2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;\n2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;\n2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;\n2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;\n2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;\n2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;\n2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;\n2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;\n2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;\n2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;\n2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;\n2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;\n2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;\n2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;\n2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;\n2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;\n2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;\n2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;\n2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;\n2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;\n2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;\n2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;\n2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;\n2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;\n2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;\n2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;\n2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;\n2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;\n2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;\n2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;\n2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;\n2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;\n2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;\n2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;\n2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;\n2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;\n2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;\n2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;\n2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;\n2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;\n2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;\n2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;\n2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;\n2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;\n2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;\n2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;\n2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;;\n2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;;\n2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;\n2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;\n2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;\n2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;\n2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;\n2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;\n2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;\n2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;\n2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;\n2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;\n2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;\n2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;\n2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;\n2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;\n2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;\n2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;\n2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;\n2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;\n2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;\n2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;\n2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;\n2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;\n2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;\n2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;\n2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;\n2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;\n2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;\n2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;\n2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;\n2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;\n2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;\n2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;\n2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;\n2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;\n2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;\n2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;\n2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;\n2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;\n2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;\n2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;\n2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;\n2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;\n2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;\n2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;\n2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;\n2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;\n2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;\n2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;\n2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;\n2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;\n2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;\n2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;\n2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;\n2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;\n2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;\n2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;\n2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;\n2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;\n2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;\n2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;\n2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;\n2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;\n2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;\n2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;\n2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;\n2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;\n2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;\n2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;\n2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;\n2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;\n2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;\n2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;\n2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;\n2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;\n2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;\n2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;\n2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;\n2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;\n2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;\n2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;\n2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;\n2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;\n2B4D;DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW;So;0;ON;;;;;N;;;;;\n2B4E;SHORT SLANTED NORTH ARROW;So;0;ON;;;;;N;;;;;\n2B4F;SHORT BACKSLANTED SOUTH ARROW;So;0;ON;;;;;N;;;;;\n2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;\n2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;\n2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;\n2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;\n2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;\n2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;;\n2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;;\n2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;;\n2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;;\n2B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;;\n2B5A;SLANTED NORTH ARROW WITH HOOKED HEAD;So;0;ON;;;;;N;;;;;\n2B5B;BACKSLANTED SOUTH ARROW WITH HOOKED TAIL;So;0;ON;;;;;N;;;;;\n2B5C;SLANTED NORTH ARROW WITH HORIZONTAL TAIL;So;0;ON;;;;;N;;;;;\n2B5D;BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL;So;0;ON;;;;;N;;;;;\n2B5E;BENT ARROW POINTING DOWNWARDS THEN NORTH EAST;So;0;ON;;;;;N;;;;;\n2B5F;SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST;So;0;ON;;;;;N;;;;;\n2B60;LEFTWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B61;UPWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B62;RIGHTWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B63;DOWNWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B64;LEFT RIGHT TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B65;UP DOWN TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B66;NORTH WEST TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B67;NORTH EAST TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B68;SOUTH EAST TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B69;SOUTH WEST TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B6A;LEFTWARDS TRIANGLE-HEADED DASHED ARROW;So;0;ON;;;;;N;;;;;\n2B6B;UPWARDS TRIANGLE-HEADED DASHED ARROW;So;0;ON;;;;;N;;;;;\n2B6C;RIGHTWARDS TRIANGLE-HEADED DASHED ARROW;So;0;ON;;;;;N;;;;;\n2B6D;DOWNWARDS TRIANGLE-HEADED DASHED ARROW;So;0;ON;;;;;N;;;;;\n2B6E;CLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;\n2B6F;ANTICLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;\n2B70;LEFTWARDS TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B71;UPWARDS TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B72;RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B73;DOWNWARDS TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B76;NORTH WEST TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B77;NORTH EAST TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B78;SOUTH EAST TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B79;SOUTH WEST TRIANGLE-HEADED ARROW TO BAR;So;0;ON;;;;;N;;;;;\n2B7A;LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE;So;0;ON;;;;;N;;;;;\n2B7B;UPWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE;So;0;ON;;;;;N;;;;;\n2B7C;RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE;So;0;ON;;;;;N;;;;;\n2B7D;DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE;So;0;ON;;;;;N;;;;;\n2B7E;HORIZONTAL TAB KEY;So;0;ON;;;;;N;;;;;\n2B7F;VERTICAL TAB KEY;So;0;ON;;;;;N;;;;;\n2B80;LEFTWARDS TRIANGLE-HEADED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B81;UPWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B82;RIGHTWARDS TRIANGLE-HEADED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B83;DOWNWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROW;So;0;ON;;;;;N;;;;;\n2B84;LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS;So;0;ON;;;;;N;;;;;\n2B85;UPWARDS TRIANGLE-HEADED PAIRED ARROWS;So;0;ON;;;;;N;;;;;\n2B86;RIGHTWARDS TRIANGLE-HEADED PAIRED ARROWS;So;0;ON;;;;;N;;;;;\n2B87;DOWNWARDS TRIANGLE-HEADED PAIRED ARROWS;So;0;ON;;;;;N;;;;;\n2B88;LEFTWARDS BLACK CIRCLED WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B89;UPWARDS BLACK CIRCLED WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B8A;RIGHTWARDS BLACK CIRCLED WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B8B;DOWNWARDS BLACK CIRCLED WHITE ARROW;So;0;ON;;;;;N;;;;;\n2B8C;ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW;So;0;ON;;;;;N;;;;;\n2B8D;ANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SHAPED ARROW;So;0;ON;;;;;N;;;;;\n2B8E;ANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROW;So;0;ON;;;;;N;;;;;\n2B8F;ANTICLOCKWISE TRIANGLE-HEADED TOP U-SHAPED ARROW;So;0;ON;;;;;N;;;;;\n2B90;RETURN LEFT;So;0;ON;;;;;N;;;;;\n2B91;RETURN RIGHT;So;0;ON;;;;;N;;;;;\n2B92;NEWLINE LEFT;So;0;ON;;;;;N;;;;;\n2B93;NEWLINE RIGHT;So;0;ON;;;;;N;;;;;\n2B94;FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE;So;0;ON;;;;;N;;;;;\n2B95;RIGHTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;\n2B97;SYMBOL FOR TYPE A ELECTRONICS;So;0;ON;;;;;N;;;;;\n2B98;THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B99;THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9A;THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9B;THREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9C;BLACK LEFTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9D;BLACK UPWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9E;BLACK RIGHTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2B9F;BLACK DOWNWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n2BA0;DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS;So;0;ON;;;;;N;;;;;\n2BA1;DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS;So;0;ON;;;;;N;;;;;\n2BA2;UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS;So;0;ON;;;;;N;;;;;\n2BA3;UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS;So;0;ON;;;;;N;;;;;\n2BA4;LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS;So;0;ON;;;;;N;;;;;\n2BA5;RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS;So;0;ON;;;;;N;;;;;\n2BA6;LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS;So;0;ON;;;;;N;;;;;\n2BA7;RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS;So;0;ON;;;;;N;;;;;\n2BA8;BLACK CURVED DOWNWARDS AND LEFTWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BA9;BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAA;BLACK CURVED UPWARDS AND LEFTWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAB;BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAC;BLACK CURVED LEFTWARDS AND UPWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAD;BLACK CURVED RIGHTWARDS AND UPWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAE;BLACK CURVED LEFTWARDS AND DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BAF;BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;\n2BB0;RIBBON ARROW DOWN LEFT;So;0;ON;;;;;N;;;;;\n2BB1;RIBBON ARROW DOWN RIGHT;So;0;ON;;;;;N;;;;;\n2BB2;RIBBON ARROW UP LEFT;So;0;ON;;;;;N;;;;;\n2BB3;RIBBON ARROW UP RIGHT;So;0;ON;;;;;N;;;;;\n2BB4;RIBBON ARROW LEFT UP;So;0;ON;;;;;N;;;;;\n2BB5;RIBBON ARROW RIGHT UP;So;0;ON;;;;;N;;;;;\n2BB6;RIBBON ARROW LEFT DOWN;So;0;ON;;;;;N;;;;;\n2BB7;RIBBON ARROW RIGHT DOWN;So;0;ON;;;;;N;;;;;\n2BB8;UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;\n2BB9;UP ARROWHEAD IN A RECTANGLE BOX;So;0;ON;;;;;N;;;;;\n2BBA;OVERLAPPING WHITE SQUARES;So;0;ON;;;;;N;;;;;\n2BBB;OVERLAPPING WHITE AND BLACK SQUARES;So;0;ON;;;;;N;;;;;\n2BBC;OVERLAPPING BLACK SQUARES;So;0;ON;;;;;N;;;;;\n2BBD;BALLOT BOX WITH LIGHT X;So;0;ON;;;;;N;;;;;\n2BBE;CIRCLED X;So;0;ON;;;;;N;;;;;\n2BBF;CIRCLED BOLD X;So;0;ON;;;;;N;;;;;\n2BC0;BLACK SQUARE CENTRED;So;0;ON;;;;;N;;;;;\n2BC1;BLACK DIAMOND CENTRED;So;0;ON;;;;;N;;;;;\n2BC2;TURNED BLACK PENTAGON;So;0;ON;;;;;N;;;;;\n2BC3;HORIZONTAL BLACK OCTAGON;So;0;ON;;;;;N;;;;;\n2BC4;BLACK OCTAGON;So;0;ON;;;;;N;;;;;\n2BC5;BLACK MEDIUM UP-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;\n2BC6;BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;\n2BC7;BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;\n2BC8;BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;\n2BC9;NEPTUNE FORM TWO;So;0;ON;;;;;N;;;;;\n2BCA;TOP HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n2BCB;BOTTOM HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;\n2BCC;LIGHT FOUR POINTED BLACK CUSP;So;0;ON;;;;;N;;;;;\n2BCD;ROTATED LIGHT FOUR POINTED BLACK CUSP;So;0;ON;;;;;N;;;;;\n2BCE;WHITE FOUR POINTED CUSP;So;0;ON;;;;;N;;;;;\n2BCF;ROTATED WHITE FOUR POINTED CUSP;So;0;ON;;;;;N;;;;;\n2BD0;SQUARE POSITION INDICATOR;So;0;ON;;;;;N;;;;;\n2BD1;UNCERTAINTY SIGN;So;0;ON;;;;;N;;;;;\n2BD2;GROUP MARK;So;0;ON;;;;;N;;;;;\n2BD3;PLUTO FORM TWO;So;0;ON;;;;;N;;;;;\n2BD4;PLUTO FORM THREE;So;0;ON;;;;;N;;;;;\n2BD5;PLUTO FORM FOUR;So;0;ON;;;;;N;;;;;\n2BD6;PLUTO FORM FIVE;So;0;ON;;;;;N;;;;;\n2BD7;TRANSPLUTO;So;0;ON;;;;;N;;;;;\n2BD8;PROSERPINA;So;0;ON;;;;;N;;;;;\n2BD9;ASTRAEA;So;0;ON;;;;;N;;;;;\n2BDA;HYGIEA;So;0;ON;;;;;N;;;;;\n2BDB;PHOLUS;So;0;ON;;;;;N;;;;;\n2BDC;NESSUS;So;0;ON;;;;;N;;;;;\n2BDD;WHITE MOON SELENA;So;0;ON;;;;;N;;;;;\n2BDE;BLACK DIAMOND ON CROSS;So;0;ON;;;;;N;;;;;\n2BDF;TRUE LIGHT MOON ARTA;So;0;ON;;;;;N;;;;;\n2BE0;CUPIDO;So;0;ON;;;;;N;;;;;\n2BE1;HADES;So;0;ON;;;;;N;;;;;\n2BE2;ZEUS;So;0;ON;;;;;N;;;;;\n2BE3;KRONOS;So;0;ON;;;;;N;;;;;\n2BE4;APOLLON;So;0;ON;;;;;N;;;;;\n2BE5;ADMETOS;So;0;ON;;;;;N;;;;;\n2BE6;VULCANUS;So;0;ON;;;;;N;;;;;\n2BE7;POSEIDON;So;0;ON;;;;;N;;;;;\n2BE8;LEFT HALF BLACK STAR;So;0;ON;;;;;N;;;;;\n2BE9;RIGHT HALF BLACK STAR;So;0;ON;;;;;N;;;;;\n2BEA;STAR WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;\n2BEB;STAR WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;\n2BEC;LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;\n2BED;UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;\n2BEE;RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;\n2BEF;DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;\n2BF0;ERIS FORM ONE;So;0;ON;;;;;N;;;;;\n2BF1;ERIS FORM TWO;So;0;ON;;;;;N;;;;;\n2BF2;SEDNA;So;0;ON;;;;;N;;;;;\n2BF3;RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE;So;0;ON;;;;;N;;;;;\n2BF4;RUSSIAN ASTROLOGICAL SYMBOL NOVILE;So;0;ON;;;;;N;;;;;\n2BF5;RUSSIAN ASTROLOGICAL SYMBOL QUINTILE;So;0;ON;;;;;N;;;;;\n2BF6;RUSSIAN ASTROLOGICAL SYMBOL BINOVILE;So;0;ON;;;;;N;;;;;\n2BF7;RUSSIAN ASTROLOGICAL SYMBOL SENTAGON;So;0;ON;;;;;N;;;;;\n2BF8;RUSSIAN ASTROLOGICAL SYMBOL TREDECILE;So;0;ON;;;;;N;;;;;\n2BF9;EQUALS SIGN WITH INFINITY BELOW;So;0;ON;;;;;N;;;;;\n2BFA;UNITED SYMBOL;So;0;ON;;;;;N;;;;;\n2BFB;SEPARATED SYMBOL;So;0;ON;;;;;N;;;;;\n2BFC;DOUBLED SYMBOL;So;0;ON;;;;;N;;;;;\n2BFD;PASSED SYMBOL;So;0;ON;;;;;N;;;;;\n2BFE;REVERSED RIGHT ANGLE;So;0;ON;;;;;Y;;;;;\n2BFF;HELLSCHREIBER PAUSE SYMBOL;So;0;ON;;;;;N;;;;;\n2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;\n2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;\n2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;\n2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;\n2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;\n2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;\n2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;\n2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;\n2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;\n2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;\n2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;\n2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;\n2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;\n2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;\n2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;\n2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;\n2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;\n2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;\n2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;\n2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;\n2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;\n2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;\n2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;\n2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;\n2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;\n2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;\n2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;\n2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;\n2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;\n2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;\n2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;\n2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;\n2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;\n2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;\n2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;\n2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;\n2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;\n2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;\n2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;\n2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;\n2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;\n2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;\n2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;\n2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;\n2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;\n2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;\n2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;\n2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00\n2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01\n2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02\n2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03\n2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04\n2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05\n2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06\n2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07\n2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08\n2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09\n2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A\n2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B\n2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C\n2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D\n2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E\n2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F\n2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10\n2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11\n2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12\n2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13\n2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14\n2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15\n2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16\n2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17\n2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18\n2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19\n2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A\n2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B\n2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C\n2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D\n2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E\n2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F\n2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20\n2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21\n2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22\n2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23\n2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24\n2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25\n2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26\n2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27\n2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28\n2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29\n2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A\n2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B\n2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C\n2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D\n2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E\n2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;\n2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60\n2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;\n2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;\n2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;\n2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A\n2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E\n2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;\n2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67\n2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;\n2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69\n2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;\n2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B\n2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;\n2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;\n2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;\n2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252;\n2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;\n2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;\n2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72\n2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;\n2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;\n2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75\n2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;\n2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;\n2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;\n2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;\n2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;\n2C7C;LATIN SUBSCRIPT SMALL LETTER J;Lm;0;L;<sub> 006A;;;;N;;;;;\n2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;\n2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F;\n2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240;\n2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;\n2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80\n2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;\n2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82\n2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;\n2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84\n2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;\n2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86\n2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;\n2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88\n2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;\n2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A\n2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;\n2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C\n2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;\n2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E\n2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;\n2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90\n2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;\n2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92\n2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;\n2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94\n2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;\n2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96\n2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;\n2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98\n2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;\n2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A\n2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;\n2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C\n2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;\n2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E\n2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;\n2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0\n2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;\n2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2\n2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;\n2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4\n2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;\n2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6\n2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;\n2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8\n2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;\n2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA\n2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;\n2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC\n2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;\n2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE\n2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;\n2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0\n2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;\n2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2\n2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;\n2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4\n2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;\n2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6\n2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;\n2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8\n2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;\n2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA\n2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;\n2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC\n2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;\n2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE\n2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;\n2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0\n2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;\n2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2\n2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;\n2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4\n2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;\n2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6\n2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;\n2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8\n2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;\n2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA\n2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;\n2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC\n2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;\n2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE\n2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;\n2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0\n2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;\n2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2\n2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;\n2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4\n2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;\n2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6\n2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;\n2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8\n2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;\n2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA\n2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;\n2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC\n2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;\n2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE\n2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;\n2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0\n2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;\n2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2\n2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;\n2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;\n2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;\n2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;\n2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;\n2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;\n2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;\n2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC;\n2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB\n2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE;\n2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED\n2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;;\n2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;;\n2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;;\n2CF2;COPTIC CAPITAL LETTER BOHAIRIC KHEI;Lu;0;L;;;;;N;;;;2CF3;\n2CF3;COPTIC SMALL LETTER BOHAIRIC KHEI;Ll;0;L;;;;;N;;;2CF2;;2CF2\n2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;\n2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;\n2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;\n2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;\n2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;\n2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;\n2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;\n2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0\n2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1\n2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2\n2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3\n2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4\n2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5\n2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6\n2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7\n2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8\n2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9\n2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA\n2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB\n2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC\n2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD\n2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE\n2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF\n2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0\n2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1\n2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2\n2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3\n2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4\n2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5\n2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6\n2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7\n2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8\n2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9\n2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA\n2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB\n2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC\n2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD\n2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE\n2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF\n2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0\n2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1\n2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2\n2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3\n2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4\n2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5\n2D27;GEORGIAN SMALL LETTER YN;Ll;0;L;;;;;N;;;10C7;;10C7\n2D2D;GEORGIAN SMALL LETTER AEN;Ll;0;L;;;;;N;;;10CD;;10CD\n2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;\n2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;\n2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;\n2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;\n2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;\n2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;\n2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;\n2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;\n2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;\n2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;\n2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;\n2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;\n2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;\n2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;\n2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;\n2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;\n2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;;\n2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;\n2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;\n2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;\n2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;\n2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;\n2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;\n2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;\n2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;\n2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;\n2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;\n2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;\n2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;\n2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;\n2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;\n2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;\n2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;\n2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;\n2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;\n2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;;\n2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;\n2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;\n2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;\n2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;\n2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;;\n2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;\n2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;\n2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;\n2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;\n2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;\n2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;\n2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;\n2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;\n2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;\n2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;\n2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;\n2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;;\n2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;\n2D66;TIFINAGH LETTER YE;Lo;0;L;;;;;N;;;;;\n2D67;TIFINAGH LETTER YO;Lo;0;L;;;;;N;;;;;\n2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;\n2D70;TIFINAGH SEPARATOR MARK;Po;0;L;;;;;N;;;;;\n2D7F;TIFINAGH CONSONANT JOINER;Mn;9;NSM;;;;;N;;;;;\n2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;\n2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;\n2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;\n2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;\n2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;\n2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;\n2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;\n2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;\n2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;\n2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;\n2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;\n2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;\n2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;\n2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;\n2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;\n2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;\n2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;\n2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;\n2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;\n2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;\n2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;\n2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;\n2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;\n2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;\n2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;\n2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;\n2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;\n2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;\n2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;\n2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;\n2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;\n2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;\n2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;\n2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;\n2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;\n2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;\n2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;\n2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;\n2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;\n2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;\n2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;\n2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;\n2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;\n2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;\n2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;\n2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;\n2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;\n2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;\n2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;\n2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;\n2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;\n2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;\n2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;\n2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;\n2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;\n2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;\n2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;\n2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;\n2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;\n2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;\n2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;\n2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;\n2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;\n2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;\n2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;\n2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;\n2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;\n2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;\n2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;\n2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;\n2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;\n2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;\n2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;\n2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;\n2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;\n2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;\n2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;\n2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;\n2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;\n2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;\n2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;\n2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;\n2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;\n2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;\n2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;\n2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;\n2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;\n2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;\n2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;\n2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;\n2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;\n2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;\n2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;\n2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;\n2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;\n2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;\n2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;\n2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;\n2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;\n2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;\n2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;\n2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;\n2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;\n2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;\n2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;\n2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;\n2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;\n2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;\n2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;\n2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;\n2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;\n2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;\n2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;\n2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;\n2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;\n2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;\n2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;\n2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;\n2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;\n2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;\n2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;\n2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;\n2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;\n2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;\n2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;\n2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;\n2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;\n2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;\n2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;\n2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;\n2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;\n2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;\n2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;\n2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;\n2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;\n2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;\n2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;\n2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;\n2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;\n2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;\n2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;\n2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;\n2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;\n2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;\n2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;\n2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;\n2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;\n2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;\n2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;\n2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;\n2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;\n2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;\n2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;\n2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;\n2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;\n2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;\n2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;\n2E30;RING POINT;Po;0;ON;;;;;N;;;;;\n2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;;\n2E32;TURNED COMMA;Po;0;ON;;;;;N;;;;;\n2E33;RAISED DOT;Po;0;ON;;;;;N;;;;;\n2E34;RAISED COMMA;Po;0;ON;;;;;N;;;;;\n2E35;TURNED SEMICOLON;Po;0;ON;;;;;N;;;;;\n2E36;DAGGER WITH LEFT GUARD;Po;0;ON;;;;;N;;;;;\n2E37;DAGGER WITH RIGHT GUARD;Po;0;ON;;;;;N;;;;;\n2E38;TURNED DAGGER;Po;0;ON;;;;;N;;;;;\n2E39;TOP HALF SECTION SIGN;Po;0;ON;;;;;N;;;;;\n2E3A;TWO-EM DASH;Pd;0;ON;;;;;N;;;;;\n2E3B;THREE-EM DASH;Pd;0;ON;;;;;N;;;;;\n2E3C;STENOGRAPHIC FULL STOP;Po;0;ON;;;;;N;;;;;\n2E3D;VERTICAL SIX DOTS;Po;0;ON;;;;;N;;;;;\n2E3E;WIGGLY VERTICAL LINE;Po;0;ON;;;;;N;;;;;\n2E3F;CAPITULUM;Po;0;ON;;;;;N;;;;;\n2E40;DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;\n2E41;REVERSED COMMA;Po;0;ON;;;;;N;;;;;\n2E42;DOUBLE LOW-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;;;;;\n2E43;DASH WITH LEFT UPTURN;Po;0;ON;;;;;N;;;;;\n2E44;DOUBLE SUSPENSION MARK;Po;0;ON;;;;;N;;;;;\n2E45;INVERTED LOW KAVYKA;Po;0;ON;;;;;N;;;;;\n2E46;INVERTED LOW KAVYKA WITH KAVYKA ABOVE;Po;0;ON;;;;;N;;;;;\n2E47;LOW KAVYKA;Po;0;ON;;;;;N;;;;;\n2E48;LOW KAVYKA WITH DOT;Po;0;ON;;;;;N;;;;;\n2E49;DOUBLE STACKED COMMA;Po;0;ON;;;;;N;;;;;\n2E4A;DOTTED SOLIDUS;Po;0;ON;;;;;N;;;;;\n2E4B;TRIPLE DAGGER;Po;0;ON;;;;;N;;;;;\n2E4C;MEDIEVAL COMMA;Po;0;ON;;;;;N;;;;;\n2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;;\n2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;;\n2E4F;CORNISH VERSE DIVIDER;Po;0;ON;;;;;N;;;;;\n2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;\n2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;\n2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;;\n2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;\n2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;\n2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;\n2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;\n2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;\n2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;\n2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;\n2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;\n2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;\n2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;\n2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;\n2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;\n2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;\n2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;\n2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;\n2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;\n2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;\n2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;\n2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;\n2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;\n2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;\n2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;\n2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;\n2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;\n2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;\n2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;\n2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;\n2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;\n2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;\n2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;\n2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;\n2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;\n2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;\n2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;\n2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;\n2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;\n2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;\n2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;\n2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;\n2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;\n2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;\n2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;\n2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;\n2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;\n2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;\n2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;\n2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;\n2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;\n2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;\n2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;\n2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;\n2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;\n2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;\n2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;\n2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;\n2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;\n2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;\n2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;\n2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;\n2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;\n2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;\n2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;\n2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;\n2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;\n2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;\n2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;\n2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;\n2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;\n2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;\n2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;\n2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;\n2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;\n2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;\n2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;\n2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;\n2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;\n2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;\n2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;\n2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;\n2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;\n2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;\n2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;\n2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;\n2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;\n2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;\n2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;\n2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;\n2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;\n2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;\n2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;\n2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;\n2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;\n2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;\n2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;\n2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;\n2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;\n2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;\n2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;\n2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;\n2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;\n2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;\n2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;\n2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;\n2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;\n2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;\n2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;\n2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;\n2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;\n2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;\n2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;\n2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;\n2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;\n2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;\n2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;\n2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;\n2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;\n2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;\n2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;\n2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;\n2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;\n2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;\n2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;\n2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;\n2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;\n2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;\n2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;\n2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;\n2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;\n2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;\n2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;\n2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;\n2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;\n2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;\n2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;\n2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;\n2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;\n2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;\n2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;\n2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;\n2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;\n2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;\n2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;\n2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;\n2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;\n2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;\n2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;\n2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;\n2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;\n2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;\n2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;\n2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;\n2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;\n2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;\n2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;\n2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;\n2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;\n2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;\n2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;\n2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;\n2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;\n2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;\n2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;\n2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;\n2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;\n2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;\n2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;\n2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;\n2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;\n2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;\n2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;\n2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;\n2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;\n2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;\n2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;\n2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;\n2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;\n2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;\n2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;\n2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;\n2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;\n2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;\n2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;\n2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;\n2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;\n2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;\n2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;\n2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;\n2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;\n2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;\n2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;\n2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;\n2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;\n2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;\n2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;\n2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;\n2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;\n2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;\n2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;\n2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;\n2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;\n2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;\n2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;\n2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;\n2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;\n2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;\n2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;\n2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;\n2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;\n2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;\n2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;\n2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;\n2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;\n2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;\n2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;\n2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;\n2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;\n2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;\n2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;\n2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;\n2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;\n2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;\n2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;\n2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;\n2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;\n2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;\n2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;\n2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;\n2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;\n2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;\n2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;\n2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;\n2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;\n2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;\n2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;\n2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;\n2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;\n2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;\n2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;\n2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;\n2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;\n2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;\n2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;\n2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;\n2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;\n2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;\n2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;\n2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;\n2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;\n2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;\n2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;\n2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;\n2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;\n2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;\n2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;\n2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;\n2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;\n2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;\n2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;\n2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;\n2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;\n2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;\n2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;\n2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;\n2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;\n2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;\n2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;\n2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;\n2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;\n2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;\n2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;\n2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;\n2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;\n2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;\n2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;\n2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;\n2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;\n2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;\n2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;\n2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;\n2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;\n2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;\n2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;\n2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;\n2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;\n2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;\n2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;\n2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;\n2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;\n2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;\n2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;\n2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;\n2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;\n2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;\n2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;\n2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;\n2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;\n2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;\n2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;\n2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;\n2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;\n2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;\n2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;\n2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;\n2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;\n2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;\n2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;\n2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;\n2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;\n2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;\n2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;\n2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;\n2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;\n2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;\n2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;\n2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;\n2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;\n2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;\n2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;\n2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;\n2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;\n2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;\n2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;\n2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;\n2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;\n2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;\n2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;\n2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;\n2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;\n2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;\n2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;\n2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;\n2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;\n2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;\n2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;\n2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;\n2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;\n2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;\n2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;\n2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;\n2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;\n2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;\n3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;\n3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;\n3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;\n3003;DITTO MARK;Po;0;ON;;;;;N;;;;;\n3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;\n3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;\n3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;\n3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;\n3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;\n3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;\n300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;\n300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;\n300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;\n300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;\n300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;\n300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;\n3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;\n3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;\n3012;POSTAL MARK;So;0;ON;;;;;N;;;;;\n3013;GETA MARK;So;0;ON;;;;;N;;;;;\n3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;\n3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;\n3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;\n3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;\n3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;\n3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;\n301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;\n301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;\n301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;\n301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;\n301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;\n301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;\n3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;\n3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;\n3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;\n3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;\n3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;\n3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;\n3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;\n3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;\n3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;\n3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;\n302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;\n302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;\n302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;\n302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;\n302E;HANGUL SINGLE DOT TONE MARK;Mc;224;L;;;;;N;;;;;\n302F;HANGUL DOUBLE DOT TONE MARK;Mc;224;L;;;;;N;;;;;\n3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;\n3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;\n3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;\n3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;\n3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;\n3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;\n3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;\n3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;\n3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;\n3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;\n303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;\n303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;\n303C;MASU MARK;Lo;0;L;;;;;N;;;;;\n303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;\n303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;\n303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;\n3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;\n3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;\n3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;\n3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;\n3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;\n3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;\n3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;\n3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;\n3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;\n304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;\n304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;\n304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;\n304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;\n304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;\n304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;\n3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;\n3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;\n3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;\n3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;\n3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;\n3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;\n3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;\n3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;\n3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;\n3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;\n305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;\n305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;\n305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;\n305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;\n305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;\n305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;\n3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;\n3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;\n3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;\n3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;\n3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;\n3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;\n3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;\n3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;\n3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;\n3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;\n306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;\n306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;\n306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;\n306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;\n306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;\n306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;\n3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;\n3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;\n3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;\n3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;\n3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;\n3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;\n3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;\n3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;\n3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;\n3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;\n307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;\n307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;\n307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;\n307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;\n307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;\n307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;\n3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;\n3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;\n3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;\n3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;\n3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;\n3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;\n3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;\n3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;\n3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;\n3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;\n308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;\n308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;\n308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;\n308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;\n308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;\n308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;\n3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;\n3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;\n3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;\n3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;\n3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;\n3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;\n3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;\n3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;\n309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;\n309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;\n309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;\n309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;\n309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;\n309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;\n30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;\n30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;\n30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;\n30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;\n30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;\n30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;\n30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;\n30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;\n30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;\n30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;\n30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;\n30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;\n30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;\n30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;\n30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;\n30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;\n30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;\n30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;\n30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;\n30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;\n30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;\n30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;\n30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;\n30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;\n30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;\n30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;\n30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;\n30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;\n30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;\n30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;\n30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;\n30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;\n30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;\n30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;\n30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;\n30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;\n30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;\n30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;\n30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;\n30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;\n30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;\n30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;\n30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;\n30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;\n30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;\n30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;\n30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;\n30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;\n30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;\n30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;\n30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;\n30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;\n30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;\n30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;\n30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;\n30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;\n30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;\n30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;\n30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;\n30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;\n30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;\n30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;\n30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;\n30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;\n30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;\n30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;\n30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;\n30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;\n30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;\n30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;\n30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;\n30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;\n30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;\n30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;\n30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;\n30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;\n30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;\n30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;\n30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;\n30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;\n30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;\n30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;\n30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;\n30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;\n30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;\n30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;\n30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;\n30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;\n30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;\n30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;\n30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;\n30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;\n30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;\n30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;\n30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;\n30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;\n3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;\n3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;\n3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;\n3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;\n3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;\n310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;\n310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;\n310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;\n310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;\n310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;\n310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;\n3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;\n3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;\n3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;\n3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;\n3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;\n3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;\n3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;\n3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;\n3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;\n3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;\n311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;\n311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;\n311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;\n311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;\n311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;\n311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;\n3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;\n3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;\n3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;\n3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;\n3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;\n3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;\n3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;\n3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;\n3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;\n3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;\n312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;\n312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;\n312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;\n312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;\n312E;BOPOMOFO LETTER O WITH DOT ABOVE;Lo;0;L;;;;;N;;;;;\n312F;BOPOMOFO LETTER NN;Lo;0;L;;;;;N;;;;;\n3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;\n3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;\n3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;\n3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;\n3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;\n3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;\n3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;\n3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;\n3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;\n313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;\n313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;\n313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;\n313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;\n313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;\n313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;\n3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;\n3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;\n3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;\n3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;\n3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;\n3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;\n3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;\n3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;\n3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;\n3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;\n314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;\n314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;\n314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;\n314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;\n314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;\n314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;\n3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;\n3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;\n3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;\n3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;\n3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;\n3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;\n3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;\n3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;\n3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;\n3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;\n315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;\n315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;\n315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;\n315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;\n315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;\n315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;\n3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;\n3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;\n3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;\n3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;\n3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;\n3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;\n3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;\n3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;\n3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;\n3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;\n316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;\n316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;\n316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;\n316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;\n316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;\n316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;\n3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;\n3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;\n3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;\n3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;\n3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;\n3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;\n3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;\n3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;\n3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;\n3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;\n317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;\n317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;\n317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;\n317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;\n317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;\n317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;\n3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;\n3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;\n3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;\n3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;\n3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;\n3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;\n3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;\n3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;\n3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;\n3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;\n318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;\n318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;\n318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;\n318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;\n318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;\n3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;;\n3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;;\n3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;;;;\n3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;;;;\n3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;;;;\n3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;;;;\n3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;;;;\n3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;;;;\n3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;;;;\n3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;;;;\n319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;;;;\n319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;;;;\n319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;;;;\n319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;;;;\n319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;;;;\n319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;;;;\n31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;\n31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;\n31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;\n31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;\n31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;\n31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;\n31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;\n31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;\n31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;\n31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;\n31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;\n31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;\n31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;\n31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;\n31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;\n31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;\n31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;\n31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;\n31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;\n31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;\n31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;\n31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;\n31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;\n31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;\n31B8;BOPOMOFO LETTER GH;Lo;0;L;;;;;N;;;;;\n31B9;BOPOMOFO LETTER LH;Lo;0;L;;;;;N;;;;;\n31BA;BOPOMOFO LETTER ZY;Lo;0;L;;;;;N;;;;;\n31BB;BOPOMOFO FINAL LETTER G;Lo;0;L;;;;;N;;;;;\n31BC;BOPOMOFO LETTER GW;Lo;0;L;;;;;N;;;;;\n31BD;BOPOMOFO LETTER KW;Lo;0;L;;;;;N;;;;;\n31BE;BOPOMOFO LETTER OE;Lo;0;L;;;;;N;;;;;\n31BF;BOPOMOFO LETTER AH;Lo;0;L;;;;;N;;;;;\n31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;\n31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;\n31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;\n31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;\n31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;\n31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;\n31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;\n31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;\n31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;\n31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;\n31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;\n31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;\n31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;\n31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;\n31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;\n31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;\n31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;\n31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;\n31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;\n31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;\n31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;\n31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;\n31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;\n31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;\n31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;\n31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;\n31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;\n31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;\n31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;\n31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;\n31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;\n31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;\n31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;\n31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;\n31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;\n31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;\n31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;\n31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;\n31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;\n31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;\n31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;\n31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;\n31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;\n31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;\n31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;\n31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;\n31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;\n31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;\n31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;\n31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;\n31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;\n31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;\n3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;\n3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;\n3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;\n3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;\n3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;\n3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;\n3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;\n3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;\n3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;\n3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;\n320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;\n320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;\n320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;\n320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;\n320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;\n320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;\n3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;\n3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;\n3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;\n3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;\n3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;\n3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;\n3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;\n3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;\n3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;\n3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;\n321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;\n321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;\n321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;\n321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;\n321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;\n3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;\n3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;\n3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;\n3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;\n3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;\n3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;\n3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;\n3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;\n3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;\n3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;\n322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;\n322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;\n322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;\n322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;\n322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;\n322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;\n3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;\n3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;\n3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;\n3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;\n3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;\n3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;\n3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;\n3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;\n3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;\n3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;\n323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;\n323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;\n323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;\n323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;\n323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;\n323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;\n3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;\n3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;\n3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;\n3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;\n3244;CIRCLED IDEOGRAPH QUESTION;So;0;L;<circle> 554F;;;;N;;;;;\n3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L;<circle> 5E7C;;;;N;;;;;\n3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L;<circle> 6587;;;;N;;;;;\n3247;CIRCLED IDEOGRAPH KOTO;So;0;L;<circle> 7B8F;;;;N;;;;;\n3248;CIRCLED NUMBER TEN ON BLACK SQUARE;No;0;L;;;;10;N;;;;;\n3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;No;0;L;;;;20;N;;;;;\n324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;No;0;L;;;;30;N;;;;;\n324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;No;0;L;;;;40;N;;;;;\n324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;No;0;L;;;;50;N;;;;;\n324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;No;0;L;;;;60;N;;;;;\n324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;No;0;L;;;;70;N;;;;;\n324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;No;0;L;;;;80;N;;;;;\n3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;\n3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;\n3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;\n3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;\n3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;\n3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;\n3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;\n3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;\n3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;\n3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;\n325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;\n325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;\n325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;\n325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;\n325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;\n325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;\n3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;\n3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;\n3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;\n3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;\n3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;\n3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;\n3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;\n3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;\n3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;\n3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;\n326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;\n326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;\n326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;\n326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;\n326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;\n326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;\n3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;\n3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;\n3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;\n3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;\n3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;\n3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;\n3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;\n3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;\n3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;\n3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;\n327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;\n327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;\n327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;\n327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;\n327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;\n327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;\n3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;\n3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;\n3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;\n3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;\n3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;\n3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;\n3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;\n3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;\n3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;\n3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;\n328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;\n328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;\n328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;\n328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;\n328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;\n328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;\n3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;\n3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;\n3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;\n3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;\n3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;\n3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;\n3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;\n3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;\n3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;\n3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;\n329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;\n329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;\n329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;\n329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;\n329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;\n329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;\n32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;\n32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;\n32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;\n32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;\n32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;\n32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;\n32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;\n32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;\n32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;\n32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;\n32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;\n32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;\n32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;\n32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;\n32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;\n32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;\n32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;\n32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;\n32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;\n32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;\n32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;\n32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;\n32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;\n32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;\n32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;\n32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;\n32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;\n32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;\n32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;\n32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;\n32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;\n32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;\n32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;\n32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;\n32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;\n32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;\n32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;\n32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;\n32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;\n32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;\n32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;\n32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;\n32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;\n32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;\n32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;\n32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;\n32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;\n32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;\n32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;\n32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;\n32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;\n32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;\n32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;\n32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;\n32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;\n32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;\n32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;\n32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;\n32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;\n32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;\n32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;\n32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;\n32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;\n32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;\n32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;\n32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;\n32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;\n32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;\n32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;\n32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;\n32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;\n32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;\n32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;\n32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;\n32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;\n32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;\n32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;\n32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;\n32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;\n32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;\n32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;\n32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;\n32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;\n32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;\n32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;\n32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;\n32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;\n32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;\n32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;\n32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;\n32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;\n32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;\n32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;\n32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;\n32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;\n32FF;SQUARE ERA NAME REIWA;So;0;L;<square> 4EE4 548C;;;;N;;;;;\n3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;\n3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;\n3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;\n3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;\n3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;\n3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;\n3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;\n3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;\n3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;\n3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;\n330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;\n330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;\n330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;\n330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;\n330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;\n330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;\n3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;\n3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;\n3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;\n3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;\n3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;\n3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;\n3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;\n3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;\n3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;\n3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;\n331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;\n331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;\n331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;\n331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;\n331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;\n331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;\n3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;\n3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;\n3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;\n3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;\n3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;\n3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;\n3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;\n3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;\n3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;\n3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;\n332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;\n332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;\n332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;\n332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;\n332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;\n332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;\n3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;\n3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;\n3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;\n3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;\n3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;\n3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;\n3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;\n3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;\n3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;\n3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;\n333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;\n333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;\n333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;\n333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;\n333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;\n333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;\n3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;\n3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;\n3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;\n3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;\n3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;\n3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;\n3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;\n3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;\n3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;\n3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;\n334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;\n334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;\n334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;\n334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;\n334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;\n334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;\n3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;\n3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;\n3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;\n3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;\n3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;\n3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;\n3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;\n3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;\n3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;\n3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;\n335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;\n335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;\n335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;\n335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;\n335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;\n335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;\n3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;\n3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;\n3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;\n3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;\n3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;\n3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;\n3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;\n3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;\n3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;\n3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;\n336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;\n336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;\n336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;\n336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;\n336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;\n336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;\n3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;\n3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;\n3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;\n3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;\n3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;\n3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;\n3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;\n3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;\n3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;\n3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;\n337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;\n337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;\n337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;\n337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;\n337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;\n337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;\n3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;\n3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;\n3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;\n3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;\n3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;\n3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;\n3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;\n3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;\n3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;\n3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;\n338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;\n338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;\n338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;\n338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;\n338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;\n338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;\n3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;\n3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;\n3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;\n3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;\n3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;\n3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;\n3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;\n3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;\n3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;\n3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;\n339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;\n339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;\n339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;\n339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;\n339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;\n339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;\n33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;\n33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;\n33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;\n33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;\n33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;\n33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;\n33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;\n33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;\n33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;\n33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;\n33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;\n33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;\n33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;\n33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;\n33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;\n33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;\n33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;\n33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;\n33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;\n33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;\n33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;\n33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;\n33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;\n33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;\n33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;\n33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;\n33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;\n33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;\n33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;\n33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;\n33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;\n33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;\n33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;\n33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;\n33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;\n33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;\n33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;\n33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;\n33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;\n33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;\n33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;\n33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;\n33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;\n33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;\n33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;\n33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;\n33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;\n33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;\n33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;\n33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;\n33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;\n33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;\n33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;\n33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;\n33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;\n33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;\n33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;\n33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;\n33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;\n33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;\n33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;\n33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;\n33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;\n33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;\n33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;\n33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;\n33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;\n33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;\n33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;\n33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;\n33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;\n33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;\n33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;\n33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;\n33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;\n33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;\n33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;\n33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;\n33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;\n33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;\n33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;\n33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;\n33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;\n33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;\n33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;\n33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;\n33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;\n33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;\n33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;\n33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;\n33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;\n33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;\n33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;\n33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;\n33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;\n33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;\n3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;\n4DBF;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;\n4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;\n4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;\n4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;\n4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;\n4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;\n4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;\n4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;\n4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;\n4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;\n4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;\n4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;\n4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;\n4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;\n4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;\n4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;\n4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;\n4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;\n4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;\n4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;\n4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;\n4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;\n4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;\n4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;\n4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;\n4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;\n4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;\n4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;\n4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;\n4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;\n4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;\n4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;\n4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;\n4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;\n4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;\n4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;\n4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;\n4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;\n4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;\n4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;\n4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;\n4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;\n4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;\n4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;\n4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;\n4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;\n4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;\n4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;\n4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;\n4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;\n4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;\n4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;\n4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;\n4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;\n4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;\n4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;\n4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;\n4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;\n4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;\n4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;\n4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;\n4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;\n4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;\n4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;\n4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;\n4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;\n9FFC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;\nA000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;\nA001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;\nA002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;\nA003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;\nA004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;\nA005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;\nA006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;\nA007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;\nA008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;\nA009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;\nA00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;\nA00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;\nA00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;\nA00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;\nA00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;\nA00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;\nA010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;\nA011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;\nA012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;\nA013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;\nA014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;\nA015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;\nA016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;\nA017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;\nA018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;\nA019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;\nA01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;\nA01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;\nA01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;\nA01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;\nA01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;\nA01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;\nA020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;\nA021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;\nA022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;\nA023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;\nA024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;\nA025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;\nA026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;\nA027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;\nA028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;\nA029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;\nA02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;\nA02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;\nA02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;\nA02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;\nA02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;\nA02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;\nA030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;\nA031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;\nA032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;\nA033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;\nA034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;\nA035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;\nA036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;\nA037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;\nA038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;\nA039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;\nA03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;\nA03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;\nA03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;\nA03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;\nA03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;\nA03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;\nA040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;\nA041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;\nA042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;\nA043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;\nA044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;\nA045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;\nA046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;\nA047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;\nA048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;\nA049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;\nA04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;\nA04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;\nA04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;\nA04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;\nA04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;\nA04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;\nA050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;\nA051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;\nA052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;\nA053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;\nA054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;\nA055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;\nA056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;\nA057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;\nA058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;\nA059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;\nA05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;\nA05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;\nA05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;\nA05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;\nA05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;\nA05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;\nA060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;\nA061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;\nA062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;\nA063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;\nA064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;\nA065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;\nA066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;\nA067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;\nA068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;\nA069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;\nA06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;\nA06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;\nA06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;\nA06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;\nA06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;\nA06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;\nA070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;\nA071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;\nA072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;\nA073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;\nA074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;\nA075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;\nA076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;\nA077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;\nA078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;\nA079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;\nA07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;\nA07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;\nA07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;\nA07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;\nA07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;\nA07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;\nA080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;\nA081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;\nA082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;\nA083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;\nA084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;\nA085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;\nA086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;\nA087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;\nA088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;\nA089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;\nA08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;\nA08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;\nA08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;\nA08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;\nA08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;\nA08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;\nA090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;\nA091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;\nA092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;\nA093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;\nA094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;\nA095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;\nA096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;\nA097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;\nA098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;\nA099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;\nA09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;\nA09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;\nA09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;\nA09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;\nA09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;\nA09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;\nA0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;\nA0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;\nA0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;\nA0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;\nA0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;\nA0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;\nA0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;\nA0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;\nA0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;\nA0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;\nA0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;\nA0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;\nA0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;\nA0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;\nA0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;\nA0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;\nA0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;\nA0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;\nA0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;\nA0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;\nA0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;\nA0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;\nA0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;\nA0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;\nA0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;\nA0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;\nA0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;\nA0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;\nA0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;\nA0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;\nA0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;\nA0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;\nA0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;\nA0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;\nA0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;\nA0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;\nA0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;\nA0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;\nA0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;\nA0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;\nA0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;\nA0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;\nA0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;\nA0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;\nA0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;\nA0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;\nA0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;\nA0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;\nA0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;\nA0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;\nA0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;\nA0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;\nA0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;\nA0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;\nA0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;\nA0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;\nA0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;\nA0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;\nA0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;\nA0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;\nA0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;\nA0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;\nA0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;\nA0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;\nA0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;\nA0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;\nA0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;\nA0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;\nA0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;\nA0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;\nA0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;\nA0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;\nA0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;\nA0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;\nA0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;\nA0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;\nA0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;\nA0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;\nA0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;\nA0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;\nA0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;\nA0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;\nA0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;\nA0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;\nA0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;\nA0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;\nA0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;\nA0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;\nA0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;\nA0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;\nA0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;\nA0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;\nA0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;\nA0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;\nA0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;\nA0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;\nA100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;\nA101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;\nA102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;\nA103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;\nA104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;\nA105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;\nA106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;\nA107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;\nA108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;\nA109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;\nA10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;\nA10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;\nA10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;\nA10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;\nA10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;\nA10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;\nA110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;\nA111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;\nA112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;\nA113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;\nA114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;\nA115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;\nA116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;\nA117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;\nA118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;\nA119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;\nA11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;\nA11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;\nA11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;\nA11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;\nA11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;\nA11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;\nA120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;\nA121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;\nA122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;\nA123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;\nA124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;\nA125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;\nA126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;\nA127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;\nA128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;\nA129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;\nA12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;\nA12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;\nA12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;\nA12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;\nA12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;\nA12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;\nA130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;\nA131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;\nA132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;\nA133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;\nA134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;\nA135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;\nA136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;\nA137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;\nA138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;\nA139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;\nA13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;\nA13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;\nA13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;\nA13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;\nA13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;\nA13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;\nA140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;\nA141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;\nA142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;\nA143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;\nA144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;\nA145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;\nA146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;\nA147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;\nA148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;\nA149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;\nA14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;\nA14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;\nA14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;\nA14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;\nA14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;\nA14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;\nA150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;\nA151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;\nA152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;\nA153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;\nA154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;\nA155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;\nA156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;\nA157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;\nA158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;\nA159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;\nA15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;\nA15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;\nA15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;\nA15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;\nA15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;\nA15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;\nA160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;\nA161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;\nA162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;\nA163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;\nA164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;\nA165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;\nA166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;\nA167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;\nA168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;\nA169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;\nA16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;\nA16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;\nA16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;\nA16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;\nA16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;\nA16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;\nA170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;\nA171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;\nA172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;\nA173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;\nA174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;\nA175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;\nA176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;\nA177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;\nA178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;\nA179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;\nA17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;\nA17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;\nA17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;\nA17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;\nA17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;\nA17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;\nA180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;\nA181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;\nA182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;\nA183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;\nA184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;\nA185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;\nA186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;\nA187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;\nA188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;\nA189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;\nA18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;\nA18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;\nA18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;\nA18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;\nA18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;\nA18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;\nA190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;\nA191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;\nA192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;\nA193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;\nA194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;\nA195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;\nA196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;\nA197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;\nA198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;\nA199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;\nA19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;\nA19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;\nA19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;\nA19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;\nA19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;\nA19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;\nA1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;\nA1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;\nA1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;\nA1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;\nA1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;\nA1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;\nA1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;\nA1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;\nA1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;\nA1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;\nA1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;\nA1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;\nA1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;\nA1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;\nA1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;\nA1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;\nA1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;\nA1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;\nA1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;\nA1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;\nA1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;\nA1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;\nA1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;\nA1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;\nA1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;\nA1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;\nA1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;\nA1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;\nA1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;\nA1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;\nA1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;\nA1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;\nA1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;\nA1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;\nA1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;\nA1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;\nA1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;\nA1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;\nA1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;\nA1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;\nA1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;\nA1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;\nA1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;\nA1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;\nA1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;\nA1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;\nA1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;\nA1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;\nA1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;\nA1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;\nA1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;\nA1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;\nA1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;\nA1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;\nA1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;\nA1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;\nA1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;\nA1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;\nA1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;\nA1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;\nA1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;\nA1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;\nA1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;\nA1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;\nA1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;\nA1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;\nA1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;\nA1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;\nA1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;\nA1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;\nA1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;\nA1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;\nA1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;\nA1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;\nA1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;\nA1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;\nA1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;\nA1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;\nA1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;\nA1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;\nA1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;\nA1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;\nA1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;\nA1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;\nA1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;\nA1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;\nA1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;\nA1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;\nA1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;\nA1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;\nA1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;\nA1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;\nA1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;\nA1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;\nA1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;\nA1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;\nA200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;\nA201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;\nA202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;\nA203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;\nA204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;\nA205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;\nA206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;\nA207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;\nA208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;\nA209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;\nA20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;\nA20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;\nA20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;\nA20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;\nA20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;\nA20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;\nA210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;\nA211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;\nA212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;\nA213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;\nA214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;\nA215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;\nA216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;\nA217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;\nA218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;\nA219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;\nA21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;\nA21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;\nA21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;\nA21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;\nA21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;\nA21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;\nA220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;\nA221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;\nA222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;\nA223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;\nA224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;\nA225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;\nA226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;\nA227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;\nA228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;\nA229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;\nA22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;\nA22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;\nA22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;\nA22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;\nA22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;\nA22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;\nA230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;\nA231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;\nA232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;\nA233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;\nA234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;\nA235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;\nA236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;\nA237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;\nA238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;\nA239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;\nA23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;\nA23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;\nA23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;\nA23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;\nA23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;\nA23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;\nA240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;\nA241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;\nA242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;\nA243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;\nA244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;\nA245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;\nA246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;\nA247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;\nA248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;\nA249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;\nA24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;\nA24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;\nA24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;\nA24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;\nA24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;\nA24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;\nA250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;\nA251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;\nA252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;\nA253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;\nA254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;\nA255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;\nA256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;\nA257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;\nA258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;\nA259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;\nA25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;\nA25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;\nA25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;\nA25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;\nA25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;\nA25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;\nA260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;\nA261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;\nA262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;\nA263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;\nA264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;\nA265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;\nA266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;\nA267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;\nA268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;\nA269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;\nA26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;\nA26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;\nA26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;\nA26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;\nA26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;\nA26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;\nA270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;\nA271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;\nA272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;\nA273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;\nA274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;\nA275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;\nA276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;\nA277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;\nA278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;\nA279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;\nA27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;\nA27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;\nA27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;\nA27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;\nA27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;\nA27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;\nA280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;\nA281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;\nA282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;\nA283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;\nA284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;\nA285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;\nA286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;\nA287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;\nA288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;\nA289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;\nA28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;\nA28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;\nA28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;\nA28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;\nA28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;\nA28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;\nA290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;\nA291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;\nA292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;\nA293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;\nA294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;\nA295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;\nA296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;\nA297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;\nA298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;\nA299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;\nA29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;\nA29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;\nA29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;\nA29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;\nA29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;\nA29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;\nA2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;\nA2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;\nA2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;\nA2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;\nA2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;\nA2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;\nA2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;\nA2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;\nA2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;\nA2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;\nA2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;\nA2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;\nA2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;\nA2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;\nA2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;\nA2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;\nA2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;\nA2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;\nA2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;\nA2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;\nA2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;\nA2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;\nA2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;\nA2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;\nA2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;\nA2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;\nA2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;\nA2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;\nA2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;\nA2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;\nA2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;\nA2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;\nA2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;\nA2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;\nA2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;\nA2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;\nA2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;\nA2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;\nA2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;\nA2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;\nA2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;\nA2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;\nA2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;\nA2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;\nA2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;\nA2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;\nA2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;\nA2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;\nA2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;\nA2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;\nA2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;\nA2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;\nA2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;\nA2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;\nA2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;\nA2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;\nA2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;\nA2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;\nA2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;\nA2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;\nA2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;\nA2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;\nA2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;\nA2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;\nA2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;\nA2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;\nA2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;\nA2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;\nA2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;\nA2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;\nA2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;\nA2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;\nA2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;\nA2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;\nA2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;\nA2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;\nA2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;\nA2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;\nA2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;\nA2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;\nA2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;\nA2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;\nA2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;\nA2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;\nA2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;\nA2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;\nA2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;\nA2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;\nA2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;\nA2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;\nA2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;\nA2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;\nA2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;\nA2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;\nA2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;\nA2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;\nA300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;\nA301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;\nA302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;\nA303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;\nA304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;\nA305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;\nA306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;\nA307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;\nA308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;\nA309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;\nA30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;\nA30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;\nA30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;\nA30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;\nA30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;\nA30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;\nA310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;\nA311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;\nA312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;\nA313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;\nA314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;\nA315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;\nA316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;\nA317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;\nA318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;\nA319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;\nA31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;\nA31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;\nA31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;\nA31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;\nA31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;\nA31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;\nA320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;\nA321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;\nA322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;\nA323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;\nA324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;\nA325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;\nA326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;\nA327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;\nA328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;\nA329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;\nA32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;\nA32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;\nA32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;\nA32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;\nA32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;\nA32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;\nA330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;\nA331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;\nA332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;\nA333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;\nA334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;\nA335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;\nA336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;\nA337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;\nA338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;\nA339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;\nA33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;\nA33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;\nA33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;\nA33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;\nA33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;\nA33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;\nA340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;\nA341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;\nA342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;\nA343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;\nA344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;\nA345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;\nA346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;\nA347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;\nA348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;\nA349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;\nA34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;\nA34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;\nA34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;\nA34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;\nA34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;\nA34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;\nA350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;\nA351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;\nA352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;\nA353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;\nA354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;\nA355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;\nA356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;\nA357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;\nA358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;\nA359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;\nA35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;\nA35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;\nA35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;\nA35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;\nA35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;\nA35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;\nA360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;\nA361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;\nA362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;\nA363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;\nA364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;\nA365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;\nA366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;\nA367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;\nA368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;\nA369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;\nA36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;\nA36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;\nA36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;\nA36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;\nA36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;\nA36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;\nA370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;\nA371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;\nA372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;\nA373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;\nA374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;\nA375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;\nA376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;\nA377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;\nA378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;\nA379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;\nA37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;\nA37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;\nA37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;\nA37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;\nA37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;\nA37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;\nA380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;\nA381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;\nA382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;\nA383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;\nA384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;\nA385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;\nA386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;\nA387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;\nA388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;\nA389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;\nA38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;\nA38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;\nA38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;\nA38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;\nA38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;\nA38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;\nA390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;\nA391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;\nA392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;\nA393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;\nA394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;\nA395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;\nA396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;\nA397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;\nA398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;\nA399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;\nA39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;\nA39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;\nA39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;\nA39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;\nA39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;\nA39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;\nA3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;\nA3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;\nA3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;\nA3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;\nA3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;\nA3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;\nA3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;\nA3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;\nA3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;\nA3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;\nA3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;\nA3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;\nA3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;\nA3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;\nA3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;\nA3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;\nA3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;\nA3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;\nA3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;\nA3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;\nA3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;\nA3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;\nA3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;\nA3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;\nA3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;\nA3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;\nA3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;\nA3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;\nA3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;\nA3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;\nA3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;\nA3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;\nA3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;\nA3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;\nA3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;\nA3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;\nA3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;\nA3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;\nA3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;\nA3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;\nA3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;\nA3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;\nA3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;\nA3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;\nA3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;\nA3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;\nA3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;\nA3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;\nA3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;\nA3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;\nA3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;\nA3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;\nA3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;\nA3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;\nA3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;\nA3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;\nA3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;\nA3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;\nA3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;\nA3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;\nA3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;\nA3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;\nA3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;\nA3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;\nA3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;\nA3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;\nA3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;\nA3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;\nA3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;\nA3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;\nA3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;\nA3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;\nA3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;\nA3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;\nA3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;\nA3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;\nA3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;\nA3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;\nA3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;\nA3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;\nA3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;\nA3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;\nA3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;\nA3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;\nA3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;\nA3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;\nA3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;\nA3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;\nA3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;\nA3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;\nA3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;\nA3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;\nA3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;\nA3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;\nA3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;\nA3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;\nA400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;\nA401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;\nA402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;\nA403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;\nA404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;\nA405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;\nA406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;\nA407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;\nA408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;\nA409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;\nA40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;\nA40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;\nA40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;\nA40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;\nA40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;\nA40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;\nA410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;\nA411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;\nA412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;\nA413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;\nA414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;\nA415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;\nA416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;\nA417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;\nA418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;\nA419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;\nA41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;\nA41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;\nA41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;\nA41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;\nA41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;\nA41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;\nA420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;\nA421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;\nA422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;\nA423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;\nA424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;\nA425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;\nA426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;\nA427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;\nA428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;\nA429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;\nA42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;\nA42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;\nA42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;\nA42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;\nA42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;\nA42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;\nA430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;\nA431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;\nA432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;\nA433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;\nA434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;\nA435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;\nA436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;\nA437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;\nA438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;\nA439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;\nA43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;\nA43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;\nA43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;\nA43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;\nA43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;\nA43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;\nA440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;\nA441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;\nA442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;\nA443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;\nA444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;\nA445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;\nA446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;\nA447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;\nA448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;\nA449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;\nA44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;\nA44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;\nA44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;\nA44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;\nA44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;\nA44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;\nA450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;\nA451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;\nA452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;\nA453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;\nA454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;\nA455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;\nA456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;\nA457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;\nA458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;\nA459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;\nA45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;\nA45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;\nA45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;\nA45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;\nA45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;\nA45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;\nA460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;\nA461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;\nA462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;\nA463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;\nA464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;\nA465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;\nA466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;\nA467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;\nA468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;\nA469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;\nA46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;\nA46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;\nA46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;\nA46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;\nA46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;\nA46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;\nA470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;\nA471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;\nA472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;\nA473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;\nA474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;\nA475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;\nA476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;\nA477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;\nA478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;\nA479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;\nA47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;\nA47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;\nA47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;\nA47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;\nA47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;\nA47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;\nA480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;\nA481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;\nA482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;\nA483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;\nA484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;\nA485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;\nA486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;\nA487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;\nA488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;\nA489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;\nA48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;\nA48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;\nA48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;\nA490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;\nA491;YI RADICAL LI;So;0;ON;;;;;N;;;;;\nA492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;\nA493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;\nA494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;\nA495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;\nA496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;\nA497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;\nA498;YI RADICAL MI;So;0;ON;;;;;N;;;;;\nA499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;\nA49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;\nA49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;\nA49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;\nA49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;\nA49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;\nA49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;\nA4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;\nA4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;\nA4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;\nA4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;\nA4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;\nA4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;\nA4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;\nA4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;\nA4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;\nA4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;\nA4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;\nA4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;\nA4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;\nA4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;\nA4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;\nA4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;\nA4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;\nA4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;\nA4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;\nA4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;\nA4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;\nA4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;\nA4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;\nA4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;\nA4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;\nA4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;\nA4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;\nA4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;\nA4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;\nA4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;\nA4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;\nA4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;\nA4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;\nA4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;\nA4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;\nA4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;\nA4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;\nA4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;\nA4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;\nA4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;;\nA4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;;\nA4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;;\nA4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;;\nA4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;;\nA4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;;\nA4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;;\nA4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;;\nA4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;;\nA4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;;\nA4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;;\nA4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;;\nA4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;;\nA4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;;\nA4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;;\nA4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;;\nA4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;;\nA4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;;\nA4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;;\nA4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;;\nA4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;;\nA4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;;\nA4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;;\nA4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;;\nA4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;;\nA4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;;\nA4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;;\nA4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;;\nA4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;;\nA4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;;\nA4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;;\nA4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;;\nA4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;;\nA4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;;\nA4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;;\nA4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;;\nA4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;;\nA4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;;\nA4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;;\nA4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;;\nA4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;;\nA4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;;\nA4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;;\nA4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;;\nA4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;;\nA4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;;\nA4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;;\nA4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;;\nA500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;\nA501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;\nA502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;\nA503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;\nA504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;\nA505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;\nA506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;\nA507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;\nA508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;\nA509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;\nA50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;\nA50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;\nA50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;\nA50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;\nA50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;\nA50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;\nA510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;\nA511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;\nA512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;\nA513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;\nA514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;\nA515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;\nA516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;\nA517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;\nA518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;\nA519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;\nA51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;\nA51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;\nA51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;\nA51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;\nA51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;\nA51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;\nA520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;\nA521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;\nA522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;\nA523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;\nA524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;\nA525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;\nA526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;\nA527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;\nA528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;\nA529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;\nA52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;\nA52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;\nA52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;\nA52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;\nA52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;\nA52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;\nA530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;\nA531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;\nA532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;\nA533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;\nA534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;\nA535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;\nA536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;\nA537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;\nA538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;\nA539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;\nA53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;\nA53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;\nA53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;\nA53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;\nA53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;\nA53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;\nA540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;\nA541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;\nA542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;\nA543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;\nA544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;\nA545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;\nA546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;\nA547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;\nA548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;\nA549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;\nA54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;\nA54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;\nA54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;\nA54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;\nA54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;\nA54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;\nA550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;\nA551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;\nA552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;\nA553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;\nA554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;\nA555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;\nA556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;\nA557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;\nA558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;\nA559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;\nA55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;\nA55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;\nA55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;\nA55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;\nA55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;\nA55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;\nA560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;\nA561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;\nA562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;\nA563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;\nA564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;\nA565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;\nA566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;\nA567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;\nA568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;\nA569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;\nA56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;\nA56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;\nA56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;\nA56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;\nA56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;\nA56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;\nA570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;\nA571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;\nA572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;\nA573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;\nA574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;\nA575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;\nA576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;\nA577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;\nA578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;\nA579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;\nA57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;\nA57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;\nA57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;\nA57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;\nA57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;\nA57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;\nA580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;\nA581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;\nA582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;\nA583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;\nA584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;\nA585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;\nA586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;\nA587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;\nA588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;\nA589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;\nA58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;\nA58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;\nA58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;\nA58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;\nA58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;\nA58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;\nA590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;\nA591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;\nA592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;\nA593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;\nA594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;\nA595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;\nA596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;\nA597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;\nA598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;\nA599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;\nA59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;\nA59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;\nA59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;\nA59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;\nA59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;\nA59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;\nA5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;\nA5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;\nA5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;\nA5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;\nA5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;\nA5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;\nA5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;\nA5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;\nA5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;\nA5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;\nA5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;\nA5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;\nA5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;\nA5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;\nA5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;\nA5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;\nA5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;\nA5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;\nA5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;\nA5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;\nA5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;\nA5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;\nA5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;\nA5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;\nA5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;\nA5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;\nA5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;\nA5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;\nA5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;\nA5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;\nA5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;\nA5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;\nA5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;\nA5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;\nA5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;\nA5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;\nA5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;\nA5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;\nA5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;\nA5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;\nA5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;\nA5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;\nA5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;\nA5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;\nA5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;\nA5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;\nA5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;\nA5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;\nA5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;\nA5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;\nA5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;\nA5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;\nA5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;\nA5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;\nA5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;\nA5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;\nA5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;\nA5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;\nA5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;\nA5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;\nA5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;\nA5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;\nA5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;\nA5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;\nA5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;\nA5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;\nA5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;\nA5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;\nA5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;\nA5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;\nA5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;\nA5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;\nA5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;\nA5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;\nA5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;\nA5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;\nA5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;\nA5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;\nA5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;\nA5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;\nA5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;\nA5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;\nA5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;\nA5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;\nA5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;\nA5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;\nA5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;\nA5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;\nA5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;\nA5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;\nA5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;\nA5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;\nA5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;\nA5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;\nA5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;\nA5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;\nA600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;\nA601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;\nA602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;\nA603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;\nA604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;\nA605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;\nA606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;\nA607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;\nA608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;\nA609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;\nA60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;\nA60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;\nA60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;\nA60D;VAI COMMA;Po;0;ON;;;;;N;;;;;\nA60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;\nA60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;\nA610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;\nA611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;\nA612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;\nA613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;\nA614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;\nA615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;\nA616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;\nA617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;\nA618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;\nA619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;\nA61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;\nA61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;\nA61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;\nA61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;\nA61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;\nA61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;\nA620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nA621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nA622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nA623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nA624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nA625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nA626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nA627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nA628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nA629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nA62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;\nA62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;\nA640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;\nA641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640\nA642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;\nA643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642\nA644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;\nA645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644\nA646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;\nA647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646\nA648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;\nA649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648\nA64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;\nA64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A\nA64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;\nA64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C\nA64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;\nA64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E\nA650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;\nA651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650\nA652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;\nA653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652\nA654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;\nA655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654\nA656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;\nA657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656\nA658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;\nA659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658\nA65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;\nA65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A\nA65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;\nA65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C\nA65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;\nA65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E\nA660;CYRILLIC CAPITAL LETTER REVERSED TSE;Lu;0;L;;;;;N;;;;A661;\nA661;CYRILLIC SMALL LETTER REVERSED TSE;Ll;0;L;;;;;N;;;A660;;A660\nA662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;\nA663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662\nA664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;\nA665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664\nA666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;\nA667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666\nA668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;\nA669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668\nA66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;\nA66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A\nA66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;\nA66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C\nA66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;\nA66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;\nA670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;\nA671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;\nA672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;\nA673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;\nA674;COMBINING CYRILLIC LETTER UKRAINIAN IE;Mn;230;NSM;;;;;N;;;;;\nA675;COMBINING CYRILLIC LETTER I;Mn;230;NSM;;;;;N;;;;;\nA676;COMBINING CYRILLIC LETTER YI;Mn;230;NSM;;;;;N;;;;;\nA677;COMBINING CYRILLIC LETTER U;Mn;230;NSM;;;;;N;;;;;\nA678;COMBINING CYRILLIC LETTER HARD SIGN;Mn;230;NSM;;;;;N;;;;;\nA679;COMBINING CYRILLIC LETTER YERU;Mn;230;NSM;;;;;N;;;;;\nA67A;COMBINING CYRILLIC LETTER SOFT SIGN;Mn;230;NSM;;;;;N;;;;;\nA67B;COMBINING CYRILLIC LETTER OMEGA;Mn;230;NSM;;;;;N;;;;;\nA67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;\nA67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;\nA67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;\nA67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;\nA680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;\nA681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680\nA682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;\nA683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682\nA684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;\nA685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684\nA686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;\nA687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686\nA688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;\nA689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688\nA68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;\nA68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A\nA68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;\nA68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C\nA68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;\nA68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E\nA690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;\nA691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690\nA692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;\nA693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692\nA694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;\nA695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694\nA696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;\nA697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696\nA698;CYRILLIC CAPITAL LETTER DOUBLE O;Lu;0;L;;;;;N;;;;A699;\nA699;CYRILLIC SMALL LETTER DOUBLE O;Ll;0;L;;;;;N;;;A698;;A698\nA69A;CYRILLIC CAPITAL LETTER CROSSED O;Lu;0;L;;;;;N;;;;A69B;\nA69B;CYRILLIC SMALL LETTER CROSSED O;Ll;0;L;;;;;N;;;A69A;;A69A\nA69C;MODIFIER LETTER CYRILLIC HARD SIGN;Lm;0;L;<super> 044A;;;;N;;;;;\nA69D;MODIFIER LETTER CYRILLIC SOFT SIGN;Lm;0;L;<super> 044C;;;;N;;;;;\nA69E;COMBINING CYRILLIC LETTER EF;Mn;230;NSM;;;;;N;;;;;\nA69F;COMBINING CYRILLIC LETTER IOTIFIED E;Mn;230;NSM;;;;;N;;;;;\nA6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;;\nA6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;;\nA6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;;\nA6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;;\nA6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;;\nA6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;;\nA6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;;\nA6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;;\nA6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;;\nA6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;;\nA6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;;\nA6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;;\nA6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;;\nA6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;;\nA6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;;\nA6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;;\nA6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;;\nA6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;;\nA6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;;\nA6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;;\nA6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;;\nA6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;;\nA6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;;\nA6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;;\nA6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;;\nA6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;;\nA6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;;\nA6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;;\nA6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;;\nA6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;;\nA6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;;\nA6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;;\nA6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;;\nA6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;;\nA6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;;\nA6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;;\nA6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;;\nA6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;;\nA6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;;\nA6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;;\nA6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;;\nA6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;;\nA6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;;\nA6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;;\nA6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;;\nA6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;;\nA6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;;\nA6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;;\nA6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;;\nA6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;;\nA6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;;\nA6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;;\nA6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;;\nA6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;;\nA6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;;\nA6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;;\nA6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;;\nA6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;;\nA6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;;\nA6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;;\nA6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;;\nA6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;;\nA6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;;\nA6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;;\nA6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;;\nA6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;;\nA6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;;\nA6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;;\nA6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;;\nA6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;;\nA6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;;\nA6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;;\nA6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;;\nA6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;;\nA6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;;\nA6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;;\nA6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;;\nA6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;;\nA6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;;\nA6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;;\nA6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;;\nA6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;;\nA6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;;\nA6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;;\nA6F4;BAMUM COLON;Po;0;L;;;;;N;;;;;\nA6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;;\nA6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;;\nA6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;;\nA700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;\nA701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;\nA702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;\nA703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;\nA704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;\nA705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;\nA706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;\nA707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;\nA708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;\nA709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;\nA717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;\nA718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;\nA719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;\nA71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;\nA71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;\nA71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;\nA71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;\nA71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;\nA71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;\nA720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;\nA721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;\nA722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;\nA723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722\nA724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;\nA725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724\nA726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;\nA727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726\nA728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;\nA729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728\nA72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;\nA72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A\nA72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;\nA72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C\nA72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;\nA72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E\nA730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;\nA731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;\nA732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;\nA733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732\nA734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;\nA735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734\nA736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;\nA737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736\nA738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;\nA739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738\nA73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;\nA73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A\nA73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;\nA73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C\nA73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;\nA73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E\nA740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;\nA741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740\nA742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;\nA743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742\nA744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;\nA745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744\nA746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;\nA747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746\nA748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;\nA749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748\nA74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;\nA74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A\nA74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;\nA74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C\nA74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;\nA74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E\nA750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;\nA751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750\nA752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;\nA753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752\nA754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;\nA755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754\nA756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;\nA757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756\nA758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;\nA759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758\nA75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;\nA75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A\nA75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;\nA75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C\nA75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;\nA75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E\nA760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;\nA761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760\nA762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;\nA763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762\nA764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;\nA765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764\nA766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;\nA767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766\nA768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;\nA769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768\nA76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;\nA76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A\nA76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;\nA76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C\nA76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;\nA76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E\nA770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;\nA771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;\nA772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;\nA773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;\nA774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;\nA775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;\nA776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;\nA777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;\nA778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;\nA779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;\nA77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779\nA77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;\nA77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B\nA77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;\nA77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;\nA77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E\nA780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;\nA781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780\nA782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;\nA783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782\nA784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;\nA785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784\nA786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;\nA787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786\nA788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;\nA789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;\nA78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;\nA78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;\nA78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B\nA78D;LATIN CAPITAL LETTER TURNED H;Lu;0;L;;;;;N;;;;0265;\nA78E;LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT;Ll;0;L;;;;;N;;;;;\nA78F;LATIN LETTER SINOLOGICAL DOT;Lo;0;L;;;;;N;;;;;\nA790;LATIN CAPITAL LETTER N WITH DESCENDER;Lu;0;L;;;;;N;;;;A791;\nA791;LATIN SMALL LETTER N WITH DESCENDER;Ll;0;L;;;;;N;;;A790;;A790\nA792;LATIN CAPITAL LETTER C WITH BAR;Lu;0;L;;;;;N;;;;A793;\nA793;LATIN SMALL LETTER C WITH BAR;Ll;0;L;;;;;N;;;A792;;A792\nA794;LATIN SMALL LETTER C WITH PALATAL HOOK;Ll;0;L;;;;;N;;;A7C4;;A7C4\nA795;LATIN SMALL LETTER H WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;\nA796;LATIN CAPITAL LETTER B WITH FLOURISH;Lu;0;L;;;;;N;;;;A797;\nA797;LATIN SMALL LETTER B WITH FLOURISH;Ll;0;L;;;;;N;;;A796;;A796\nA798;LATIN CAPITAL LETTER F WITH STROKE;Lu;0;L;;;;;N;;;;A799;\nA799;LATIN SMALL LETTER F WITH STROKE;Ll;0;L;;;;;N;;;A798;;A798\nA79A;LATIN CAPITAL LETTER VOLAPUK AE;Lu;0;L;;;;;N;;;;A79B;\nA79B;LATIN SMALL LETTER VOLAPUK AE;Ll;0;L;;;;;N;;;A79A;;A79A\nA79C;LATIN CAPITAL LETTER VOLAPUK OE;Lu;0;L;;;;;N;;;;A79D;\nA79D;LATIN SMALL LETTER VOLAPUK OE;Ll;0;L;;;;;N;;;A79C;;A79C\nA79E;LATIN CAPITAL LETTER VOLAPUK UE;Lu;0;L;;;;;N;;;;A79F;\nA79F;LATIN SMALL LETTER VOLAPUK UE;Ll;0;L;;;;;N;;;A79E;;A79E\nA7A0;LATIN CAPITAL LETTER G WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A1;\nA7A1;LATIN SMALL LETTER G WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A0;;A7A0\nA7A2;LATIN CAPITAL LETTER K WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A3;\nA7A3;LATIN SMALL LETTER K WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A2;;A7A2\nA7A4;LATIN CAPITAL LETTER N WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A5;\nA7A5;LATIN SMALL LETTER N WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A4;;A7A4\nA7A6;LATIN CAPITAL LETTER R WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A7;\nA7A7;LATIN SMALL LETTER R WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A6;;A7A6\nA7A8;LATIN CAPITAL LETTER S WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A9;\nA7A9;LATIN SMALL LETTER S WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A8;;A7A8\nA7AA;LATIN CAPITAL LETTER H WITH HOOK;Lu;0;L;;;;;N;;;;0266;\nA7AB;LATIN CAPITAL LETTER REVERSED OPEN E;Lu;0;L;;;;;N;;;;025C;\nA7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261;\nA7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C;\nA7AE;LATIN CAPITAL LETTER SMALL CAPITAL I;Lu;0;L;;;;;N;;;;026A;\nA7AF;LATIN LETTER SMALL CAPITAL Q;Ll;0;L;;;;;N;;;;;\nA7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E;\nA7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287;\nA7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D;\nA7B3;LATIN CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;AB53;\nA7B4;LATIN CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;A7B5;\nA7B5;LATIN SMALL LETTER BETA;Ll;0;L;;;;;N;;;A7B4;;A7B4\nA7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7;\nA7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6\nA7B8;LATIN CAPITAL LETTER U WITH STROKE;Lu;0;L;;;;;N;;;;A7B9;\nA7B9;LATIN SMALL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;A7B8;;A7B8\nA7BA;LATIN CAPITAL LETTER GLOTTAL A;Lu;0;L;;;;;N;;;;A7BB;\nA7BB;LATIN SMALL LETTER GLOTTAL A;Ll;0;L;;;;;N;;;A7BA;;A7BA\nA7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD;\nA7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC\nA7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF;\nA7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE\nA7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3;\nA7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2\nA7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794;\nA7C5;LATIN CAPITAL LETTER S WITH HOOK;Lu;0;L;;;;;N;;;;0282;\nA7C6;LATIN CAPITAL LETTER Z WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;1D8E;\nA7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;\nA7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7\nA7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;\nA7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9\nA7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6;\nA7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5\nA7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;\nA7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;\nA7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;\nA7FA;LATIN LETTER SMALL CAPITAL TURNED M;Ll;0;L;;;;;N;;;;;\nA7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;\nA7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;\nA7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;\nA7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;\nA7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;\nA800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;\nA801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;\nA802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;\nA803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;\nA804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;\nA805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;\nA806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;\nA807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;\nA808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;\nA809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;\nA80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;\nA80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\nA80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;\nA80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;\nA80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;\nA80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;\nA810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;\nA811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;\nA812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;\nA813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;\nA814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;\nA815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;\nA816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;\nA817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;\nA818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;\nA819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;\nA81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;\nA81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;\nA81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;\nA81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;\nA81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;\nA81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;\nA820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;\nA821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;\nA822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;\nA823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;\nA824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\nA825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\nA826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\nA827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\nA828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;\nA829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;\nA82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;\nA82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;\nA82C;SYLOTI NAGRI SIGN ALTERNATE HASANTA;Mn;9;NSM;;;;;N;;;;;\nA830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;\nA831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;\nA832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;\nA833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;\nA834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;\nA835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;\nA836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;;\nA837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;;\nA838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;;\nA839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;;\nA840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;\nA841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;\nA842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;\nA843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;\nA844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;\nA845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;\nA846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;\nA847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;\nA848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;\nA849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;\nA84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;\nA84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;\nA84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;\nA84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;\nA84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;\nA84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;\nA850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;\nA851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;\nA852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;\nA853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;\nA854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;\nA855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;\nA856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;\nA857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;\nA858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;\nA859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;\nA85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;\nA85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;\nA85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;\nA85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;\nA85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;\nA85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;\nA860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;\nA861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;\nA862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;\nA863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;\nA864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;\nA865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;\nA866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;\nA867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;\nA868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;\nA869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;\nA86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;\nA86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;\nA86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;\nA86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;\nA86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;\nA86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;\nA870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;\nA871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;\nA872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;\nA873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;\nA874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;\nA875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;\nA876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;\nA877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;\nA880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\nA881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\nA882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;\nA883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;\nA884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;\nA885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;\nA886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;\nA887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;\nA888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\nA889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\nA88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\nA88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\nA88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;\nA88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;\nA88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;\nA88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;\nA890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;\nA891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;\nA892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;\nA893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;\nA894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;\nA895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;\nA896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;\nA897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;\nA898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;\nA899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;\nA89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;\nA89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;\nA89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;\nA89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;\nA89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;\nA89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;\nA8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;\nA8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;\nA8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;\nA8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;\nA8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;\nA8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;\nA8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;\nA8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;\nA8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;\nA8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;\nA8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;\nA8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;\nA8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;\nA8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;\nA8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;\nA8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;\nA8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;\nA8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;\nA8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;\nA8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;\nA8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;\nA8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\nA8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\nA8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\nA8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\nA8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\nA8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;\nA8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;\nA8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;\nA8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;\nA8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\nA8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;\nA8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\nA8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\nA8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\nA8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\nA8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\nA8C5;SAURASHTRA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\nA8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;\nA8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;\nA8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nA8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nA8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nA8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nA8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nA8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nA8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nA8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nA8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nA8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nA8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;;\nA8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;;\nA8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;;\nA8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;;\nA8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;;\nA8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;;\nA8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;;\nA8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;;\nA8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;;\nA8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;;\nA8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;;\nA8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;;\nA8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;;\nA8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;;\nA8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;;\nA8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;;\nA8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;;\nA8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;;\nA8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;\nA8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;\nA8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;\nA8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;;\nA8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;;\nA8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;;\nA8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;;\nA8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;;\nA8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;;\nA8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;\nA8FC;DEVANAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\nA8FD;DEVANAGARI JAIN OM;Lo;0;L;;;;;N;;;;;\nA8FE;DEVANAGARI LETTER AY;Lo;0;L;;;;;N;;;;;\nA8FF;DEVANAGARI VOWEL SIGN AY;Mn;0;NSM;;;;;N;;;;;\nA900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nA901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nA902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nA903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nA904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nA905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nA906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nA907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nA908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nA909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nA90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;\nA90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;\nA90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;\nA90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;\nA90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;\nA90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;\nA910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;\nA911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;\nA912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;\nA913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;\nA914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;\nA915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;\nA916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;\nA917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;\nA918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;\nA919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;\nA91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;\nA91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;\nA91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;\nA91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;\nA91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;\nA91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;\nA920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;\nA921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;\nA922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;\nA923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;\nA924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;\nA925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;\nA926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;\nA927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;\nA928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;\nA929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;\nA92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;\nA92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;\nA92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;\nA92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;\nA92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;\nA92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;\nA930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;\nA931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;\nA932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;\nA933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;\nA934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;\nA935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;\nA936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;\nA937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;\nA938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;\nA939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;\nA93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;\nA93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;\nA93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;\nA93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;\nA93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;\nA93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;\nA940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;\nA941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;\nA942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;\nA943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;\nA944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;\nA945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;\nA946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;\nA947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\nA948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\nA949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\nA94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\nA94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\nA94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\nA94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;\nA94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;\nA94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;\nA950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;\nA951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;\nA952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;\nA953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;\nA95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;\nA960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;;\nA961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;\nA962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;\nA963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;\nA964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;\nA965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;\nA966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;\nA967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;;\nA968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;\nA969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;\nA96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;;\nA96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\nA96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;\nA96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;;\nA96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;\nA96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;\nA970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;;\nA971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;\nA972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;\nA973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;;\nA974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;\nA975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;;\nA976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;;\nA977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;;\nA978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;;\nA979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;;\nA97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;;\nA97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;;\nA97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;;\nA980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;;\nA981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;;\nA982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;;\nA983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;;\nA984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;;\nA985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;;\nA986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;;\nA987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;;\nA988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;;\nA989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;;\nA98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;;\nA98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;;\nA98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;;\nA98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;;\nA98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;;\nA98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;;\nA990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;;\nA991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;;\nA992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;;\nA993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;;\nA994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;;\nA995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;;\nA996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;;\nA997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;;\nA998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;;\nA999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;;\nA99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;;\nA99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;;\nA99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;;\nA99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;;\nA99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;;\nA99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;;\nA9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;;\nA9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;;\nA9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;;\nA9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;;\nA9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;;\nA9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;;\nA9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;;\nA9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;;\nA9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;;\nA9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;;\nA9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;;\nA9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;;\nA9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;;\nA9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;;\nA9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;;\nA9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;;\nA9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;;\nA9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;;\nA9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;;\nA9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;;\nA9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;;\nA9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;;\nA9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;;\nA9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;;\nA9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;\nA9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;;\nA9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;\nA9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;;\nA9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;\nA9BD;JAVANESE CONSONANT SIGN KERET;Mn;0;NSM;;;;;N;;;;;\nA9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;;\nA9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;;\nA9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;;\nA9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;;\nA9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;;\nA9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;;\nA9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;;\nA9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;;\nA9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;;\nA9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;;\nA9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;;\nA9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;;\nA9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;;\nA9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;;\nA9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;;\nA9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;;\nA9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;;\nA9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nA9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nA9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nA9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nA9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nA9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nA9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nA9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nA9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nA9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nA9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;;\nA9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;;\nA9E0;MYANMAR LETTER SHAN GHA;Lo;0;L;;;;;N;;;;;\nA9E1;MYANMAR LETTER SHAN CHA;Lo;0;L;;;;;N;;;;;\nA9E2;MYANMAR LETTER SHAN JHA;Lo;0;L;;;;;N;;;;;\nA9E3;MYANMAR LETTER SHAN NNA;Lo;0;L;;;;;N;;;;;\nA9E4;MYANMAR LETTER SHAN BHA;Lo;0;L;;;;;N;;;;;\nA9E5;MYANMAR SIGN SHAN SAW;Mn;0;NSM;;;;;N;;;;;\nA9E6;MYANMAR MODIFIER LETTER SHAN REDUPLICATION;Lm;0;L;;;;;N;;;;;\nA9E7;MYANMAR LETTER TAI LAING NYA;Lo;0;L;;;;;N;;;;;\nA9E8;MYANMAR LETTER TAI LAING FA;Lo;0;L;;;;;N;;;;;\nA9E9;MYANMAR LETTER TAI LAING GA;Lo;0;L;;;;;N;;;;;\nA9EA;MYANMAR LETTER TAI LAING GHA;Lo;0;L;;;;;N;;;;;\nA9EB;MYANMAR LETTER TAI LAING JA;Lo;0;L;;;;;N;;;;;\nA9EC;MYANMAR LETTER TAI LAING JHA;Lo;0;L;;;;;N;;;;;\nA9ED;MYANMAR LETTER TAI LAING DDA;Lo;0;L;;;;;N;;;;;\nA9EE;MYANMAR LETTER TAI LAING DDHA;Lo;0;L;;;;;N;;;;;\nA9EF;MYANMAR LETTER TAI LAING NNA;Lo;0;L;;;;;N;;;;;\nA9F0;MYANMAR TAI LAING DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nA9F1;MYANMAR TAI LAING DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nA9F2;MYANMAR TAI LAING DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nA9F3;MYANMAR TAI LAING DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nA9F4;MYANMAR TAI LAING DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nA9F5;MYANMAR TAI LAING DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nA9F6;MYANMAR TAI LAING DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nA9F7;MYANMAR TAI LAING DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nA9F8;MYANMAR TAI LAING DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nA9F9;MYANMAR TAI LAING DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nA9FA;MYANMAR LETTER TAI LAING LLA;Lo;0;L;;;;;N;;;;;\nA9FB;MYANMAR LETTER TAI LAING DA;Lo;0;L;;;;;N;;;;;\nA9FC;MYANMAR LETTER TAI LAING DHA;Lo;0;L;;;;;N;;;;;\nA9FD;MYANMAR LETTER TAI LAING BA;Lo;0;L;;;;;N;;;;;\nA9FE;MYANMAR LETTER TAI LAING BHA;Lo;0;L;;;;;N;;;;;\nAA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;\nAA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;\nAA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;\nAA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;\nAA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;\nAA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;\nAA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;\nAA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;\nAA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;\nAA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;\nAA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;\nAA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;\nAA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;\nAA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;\nAA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;\nAA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;\nAA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;\nAA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;\nAA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;\nAA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;\nAA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;\nAA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;\nAA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;\nAA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;\nAA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;\nAA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;\nAA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;\nAA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;\nAA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;\nAA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;\nAA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;\nAA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;\nAA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;\nAA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;\nAA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;\nAA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;\nAA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;\nAA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;\nAA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;\nAA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;\nAA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;\nAA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\nAA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\nAA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\nAA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;\nAA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\nAA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;\nAA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\nAA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\nAA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\nAA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;\nAA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;\nAA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;\nAA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;\nAA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;\nAA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;\nAA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;\nAA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;\nAA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;\nAA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;\nAA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;\nAA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;\nAA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;\nAA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;\nAA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;\nAA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;\nAA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;\nAA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;\nAA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;\nAA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nAA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nAA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nAA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nAA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nAA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nAA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nAA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nAA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nAA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nAA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;\nAA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;\nAA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;\nAA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;\nAA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;;\nAA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;;\nAA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;;\nAA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;;\nAA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;;\nAA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;;\nAA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;;\nAA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;;\nAA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;;\nAA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;;\nAA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;;\nAA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;;\nAA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;;\nAA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;;\nAA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;;\nAA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;;\nAA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;\nAA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;;\nAA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;;\nAA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;;\nAA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;;\nAA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;;\nAA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;;\nAA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;;\nAA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;;\nAA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;;\nAA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;;\nAA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;;\nAA7C;MYANMAR SIGN TAI LAING TONE-2;Mn;0;NSM;;;;;N;;;;;\nAA7D;MYANMAR SIGN TAI LAING TONE-5;Mc;0;L;;;;;N;;;;;\nAA7E;MYANMAR LETTER SHWE PALAUNG CHA;Lo;0;L;;;;;N;;;;;\nAA7F;MYANMAR LETTER SHWE PALAUNG SHA;Lo;0;L;;;;;N;;;;;\nAA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;;\nAA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;;\nAA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;;\nAA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;;\nAA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;;\nAA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;;\nAA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;;\nAA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;;\nAA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;;\nAA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;;\nAA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;;\nAA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;;\nAA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;;\nAA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;;\nAA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;;\nAA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;;\nAA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;;\nAA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;;\nAA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;;\nAA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;;\nAA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;;\nAA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;;\nAA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;;\nAA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;;\nAA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;;\nAA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;;\nAA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;;\nAA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;;\nAA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;;\nAA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;;\nAA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;;\nAA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;;\nAAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;;\nAAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;;\nAAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;;\nAAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;;\nAAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;;\nAAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;;\nAAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;;\nAAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;;\nAAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;;\nAAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;;\nAAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;;\nAAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;;\nAAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;;\nAAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;;\nAAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;;\nAAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;;\nAAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;;\nAAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;;\nAAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;;\nAAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;;\nAAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;;\nAAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;;\nAAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;;\nAAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;;\nAAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;;\nAAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;;\nAABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;;\nAABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;;\nAABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;;\nAABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;;\nAABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;;\nAABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;;\nAAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;;\nAAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;;\nAAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;;\nAADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;;\nAADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;;\nAADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;;\nAADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;;\nAADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;;\nAAE0;MEETEI MAYEK LETTER E;Lo;0;L;;;;;N;;;;;\nAAE1;MEETEI MAYEK LETTER O;Lo;0;L;;;;;N;;;;;\nAAE2;MEETEI MAYEK LETTER CHA;Lo;0;L;;;;;N;;;;;\nAAE3;MEETEI MAYEK LETTER NYA;Lo;0;L;;;;;N;;;;;\nAAE4;MEETEI MAYEK LETTER TTA;Lo;0;L;;;;;N;;;;;\nAAE5;MEETEI MAYEK LETTER TTHA;Lo;0;L;;;;;N;;;;;\nAAE6;MEETEI MAYEK LETTER DDA;Lo;0;L;;;;;N;;;;;\nAAE7;MEETEI MAYEK LETTER DDHA;Lo;0;L;;;;;N;;;;;\nAAE8;MEETEI MAYEK LETTER NNA;Lo;0;L;;;;;N;;;;;\nAAE9;MEETEI MAYEK LETTER SHA;Lo;0;L;;;;;N;;;;;\nAAEA;MEETEI MAYEK LETTER SSA;Lo;0;L;;;;;N;;;;;\nAAEB;MEETEI MAYEK VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\nAAEC;MEETEI MAYEK VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\nAAED;MEETEI MAYEK VOWEL SIGN AAI;Mn;0;NSM;;;;;N;;;;;\nAAEE;MEETEI MAYEK VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\nAAEF;MEETEI MAYEK VOWEL SIGN AAU;Mc;0;L;;;;;N;;;;;\nAAF0;MEETEI MAYEK CHEIKHAN;Po;0;L;;;;;N;;;;;\nAAF1;MEETEI MAYEK AHANG KHUDAM;Po;0;L;;;;;N;;;;;\nAAF2;MEETEI MAYEK ANJI;Lo;0;L;;;;;N;;;;;\nAAF3;MEETEI MAYEK SYLLABLE REPETITION MARK;Lm;0;L;;;;;N;;;;;\nAAF4;MEETEI MAYEK WORD REPETITION MARK;Lm;0;L;;;;;N;;;;;\nAAF5;MEETEI MAYEK VOWEL SIGN VISARGA;Mc;0;L;;;;;N;;;;;\nAAF6;MEETEI MAYEK VIRAMA;Mn;9;NSM;;;;;N;;;;;\nAB01;ETHIOPIC SYLLABLE TTHU;Lo;0;L;;;;;N;;;;;\nAB02;ETHIOPIC SYLLABLE TTHI;Lo;0;L;;;;;N;;;;;\nAB03;ETHIOPIC SYLLABLE TTHAA;Lo;0;L;;;;;N;;;;;\nAB04;ETHIOPIC SYLLABLE TTHEE;Lo;0;L;;;;;N;;;;;\nAB05;ETHIOPIC SYLLABLE TTHE;Lo;0;L;;;;;N;;;;;\nAB06;ETHIOPIC SYLLABLE TTHO;Lo;0;L;;;;;N;;;;;\nAB09;ETHIOPIC SYLLABLE DDHU;Lo;0;L;;;;;N;;;;;\nAB0A;ETHIOPIC SYLLABLE DDHI;Lo;0;L;;;;;N;;;;;\nAB0B;ETHIOPIC SYLLABLE DDHAA;Lo;0;L;;;;;N;;;;;\nAB0C;ETHIOPIC SYLLABLE DDHEE;Lo;0;L;;;;;N;;;;;\nAB0D;ETHIOPIC SYLLABLE DDHE;Lo;0;L;;;;;N;;;;;\nAB0E;ETHIOPIC SYLLABLE DDHO;Lo;0;L;;;;;N;;;;;\nAB11;ETHIOPIC SYLLABLE DZU;Lo;0;L;;;;;N;;;;;\nAB12;ETHIOPIC SYLLABLE DZI;Lo;0;L;;;;;N;;;;;\nAB13;ETHIOPIC SYLLABLE DZAA;Lo;0;L;;;;;N;;;;;\nAB14;ETHIOPIC SYLLABLE DZEE;Lo;0;L;;;;;N;;;;;\nAB15;ETHIOPIC SYLLABLE DZE;Lo;0;L;;;;;N;;;;;\nAB16;ETHIOPIC SYLLABLE DZO;Lo;0;L;;;;;N;;;;;\nAB20;ETHIOPIC SYLLABLE CCHHA;Lo;0;L;;;;;N;;;;;\nAB21;ETHIOPIC SYLLABLE CCHHU;Lo;0;L;;;;;N;;;;;\nAB22;ETHIOPIC SYLLABLE CCHHI;Lo;0;L;;;;;N;;;;;\nAB23;ETHIOPIC SYLLABLE CCHHAA;Lo;0;L;;;;;N;;;;;\nAB24;ETHIOPIC SYLLABLE CCHHEE;Lo;0;L;;;;;N;;;;;\nAB25;ETHIOPIC SYLLABLE CCHHE;Lo;0;L;;;;;N;;;;;\nAB26;ETHIOPIC SYLLABLE CCHHO;Lo;0;L;;;;;N;;;;;\nAB28;ETHIOPIC SYLLABLE BBA;Lo;0;L;;;;;N;;;;;\nAB29;ETHIOPIC SYLLABLE BBU;Lo;0;L;;;;;N;;;;;\nAB2A;ETHIOPIC SYLLABLE BBI;Lo;0;L;;;;;N;;;;;\nAB2B;ETHIOPIC SYLLABLE BBAA;Lo;0;L;;;;;N;;;;;\nAB2C;ETHIOPIC SYLLABLE BBEE;Lo;0;L;;;;;N;;;;;\nAB2D;ETHIOPIC SYLLABLE BBE;Lo;0;L;;;;;N;;;;;\nAB2E;ETHIOPIC SYLLABLE BBO;Lo;0;L;;;;;N;;;;;\nAB30;LATIN SMALL LETTER BARRED ALPHA;Ll;0;L;;;;;N;;;;;\nAB31;LATIN SMALL LETTER A REVERSED-SCHWA;Ll;0;L;;;;;N;;;;;\nAB32;LATIN SMALL LETTER BLACKLETTER E;Ll;0;L;;;;;N;;;;;\nAB33;LATIN SMALL LETTER BARRED E;Ll;0;L;;;;;N;;;;;\nAB34;LATIN SMALL LETTER E WITH FLOURISH;Ll;0;L;;;;;N;;;;;\nAB35;LATIN SMALL LETTER LENIS F;Ll;0;L;;;;;N;;;;;\nAB36;LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB37;LATIN SMALL LETTER L WITH INVERTED LAZY S;Ll;0;L;;;;;N;;;;;\nAB38;LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\nAB39;LATIN SMALL LETTER L WITH MIDDLE RING;Ll;0;L;;;;;N;;;;;\nAB3A;LATIN SMALL LETTER M WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB3B;LATIN SMALL LETTER N WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB3C;LATIN SMALL LETTER ENG WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB3D;LATIN SMALL LETTER BLACKLETTER O;Ll;0;L;;;;;N;;;;;\nAB3E;LATIN SMALL LETTER BLACKLETTER O WITH STROKE;Ll;0;L;;;;;N;;;;;\nAB3F;LATIN SMALL LETTER OPEN O WITH STROKE;Ll;0;L;;;;;N;;;;;\nAB40;LATIN SMALL LETTER INVERTED OE;Ll;0;L;;;;;N;;;;;\nAB41;LATIN SMALL LETTER TURNED OE WITH STROKE;Ll;0;L;;;;;N;;;;;\nAB42;LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE;Ll;0;L;;;;;N;;;;;\nAB43;LATIN SMALL LETTER TURNED O OPEN-O;Ll;0;L;;;;;N;;;;;\nAB44;LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE;Ll;0;L;;;;;N;;;;;\nAB45;LATIN SMALL LETTER STIRRUP R;Ll;0;L;;;;;N;;;;;\nAB46;LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG;Ll;0;L;;;;;N;;;;;\nAB47;LATIN SMALL LETTER R WITHOUT HANDLE;Ll;0;L;;;;;N;;;;;\nAB48;LATIN SMALL LETTER DOUBLE R;Ll;0;L;;;;;N;;;;;\nAB49;LATIN SMALL LETTER R WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB4A;LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL;Ll;0;L;;;;;N;;;;;\nAB4B;LATIN SMALL LETTER SCRIPT R;Ll;0;L;;;;;N;;;;;\nAB4C;LATIN SMALL LETTER SCRIPT R WITH RING;Ll;0;L;;;;;N;;;;;\nAB4D;LATIN SMALL LETTER BASELINE ESH;Ll;0;L;;;;;N;;;;;\nAB4E;LATIN SMALL LETTER U WITH SHORT RIGHT LEG;Ll;0;L;;;;;N;;;;;\nAB4F;LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG;Ll;0;L;;;;;N;;;;;\nAB50;LATIN SMALL LETTER UI;Ll;0;L;;;;;N;;;;;\nAB51;LATIN SMALL LETTER TURNED UI;Ll;0;L;;;;;N;;;;;\nAB52;LATIN SMALL LETTER U WITH LEFT HOOK;Ll;0;L;;;;;N;;;;;\nAB53;LATIN SMALL LETTER CHI;Ll;0;L;;;;;N;;;A7B3;;A7B3\nAB54;LATIN SMALL LETTER CHI WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;;\nAB55;LATIN SMALL LETTER CHI WITH LOW LEFT SERIF;Ll;0;L;;;;;N;;;;;\nAB56;LATIN SMALL LETTER X WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;;\nAB57;LATIN SMALL LETTER X WITH LONG LEFT LEG;Ll;0;L;;;;;N;;;;;\nAB58;LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING;Ll;0;L;;;;;N;;;;;\nAB59;LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF;Ll;0;L;;;;;N;;;;;\nAB5A;LATIN SMALL LETTER Y WITH SHORT RIGHT LEG;Ll;0;L;;;;;N;;;;;\nAB5B;MODIFIER BREVE WITH INVERTED BREVE;Sk;0;L;;;;;N;;;;;\nAB5C;MODIFIER LETTER SMALL HENG;Lm;0;L;<super> A727;;;;N;;;;;\nAB5D;MODIFIER LETTER SMALL L WITH INVERTED LAZY S;Lm;0;L;<super> AB37;;;;N;;;;;\nAB5E;MODIFIER LETTER SMALL L WITH MIDDLE TILDE;Lm;0;L;<super> 026B;;;;N;;;;;\nAB5F;MODIFIER LETTER SMALL U WITH LEFT HOOK;Lm;0;L;<super> AB52;;;;N;;;;;\nAB60;LATIN SMALL LETTER SAKHA YAT;Ll;0;L;;;;;N;;;;;\nAB61;LATIN SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;;;\nAB62;LATIN SMALL LETTER OPEN OE;Ll;0;L;;;;;N;;;;;\nAB63;LATIN SMALL LETTER UO;Ll;0;L;;;;;N;;;;;\nAB64;LATIN SMALL LETTER INVERTED ALPHA;Ll;0;L;;;;;N;;;;;\nAB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;;\nAB66;LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\nAB67;LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;\nAB68;LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;\nAB69;MODIFIER LETTER SMALL TURNED W;Lm;0;L;<super> 028D;;;;N;;;;;\nAB6A;MODIFIER LETTER LEFT TACK;Sk;0;ON;;;;;N;;;;;\nAB6B;MODIFIER LETTER RIGHT TACK;Sk;0;ON;;;;;N;;;;;\nAB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0\nAB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1\nAB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2\nAB73;CHEROKEE SMALL LETTER O;Ll;0;L;;;;;N;;;13A3;;13A3\nAB74;CHEROKEE SMALL LETTER U;Ll;0;L;;;;;N;;;13A4;;13A4\nAB75;CHEROKEE SMALL LETTER V;Ll;0;L;;;;;N;;;13A5;;13A5\nAB76;CHEROKEE SMALL LETTER GA;Ll;0;L;;;;;N;;;13A6;;13A6\nAB77;CHEROKEE SMALL LETTER KA;Ll;0;L;;;;;N;;;13A7;;13A7\nAB78;CHEROKEE SMALL LETTER GE;Ll;0;L;;;;;N;;;13A8;;13A8\nAB79;CHEROKEE SMALL LETTER GI;Ll;0;L;;;;;N;;;13A9;;13A9\nAB7A;CHEROKEE SMALL LETTER GO;Ll;0;L;;;;;N;;;13AA;;13AA\nAB7B;CHEROKEE SMALL LETTER GU;Ll;0;L;;;;;N;;;13AB;;13AB\nAB7C;CHEROKEE SMALL LETTER GV;Ll;0;L;;;;;N;;;13AC;;13AC\nAB7D;CHEROKEE SMALL LETTER HA;Ll;0;L;;;;;N;;;13AD;;13AD\nAB7E;CHEROKEE SMALL LETTER HE;Ll;0;L;;;;;N;;;13AE;;13AE\nAB7F;CHEROKEE SMALL LETTER HI;Ll;0;L;;;;;N;;;13AF;;13AF\nAB80;CHEROKEE SMALL LETTER HO;Ll;0;L;;;;;N;;;13B0;;13B0\nAB81;CHEROKEE SMALL LETTER HU;Ll;0;L;;;;;N;;;13B1;;13B1\nAB82;CHEROKEE SMALL LETTER HV;Ll;0;L;;;;;N;;;13B2;;13B2\nAB83;CHEROKEE SMALL LETTER LA;Ll;0;L;;;;;N;;;13B3;;13B3\nAB84;CHEROKEE SMALL LETTER LE;Ll;0;L;;;;;N;;;13B4;;13B4\nAB85;CHEROKEE SMALL LETTER LI;Ll;0;L;;;;;N;;;13B5;;13B5\nAB86;CHEROKEE SMALL LETTER LO;Ll;0;L;;;;;N;;;13B6;;13B6\nAB87;CHEROKEE SMALL LETTER LU;Ll;0;L;;;;;N;;;13B7;;13B7\nAB88;CHEROKEE SMALL LETTER LV;Ll;0;L;;;;;N;;;13B8;;13B8\nAB89;CHEROKEE SMALL LETTER MA;Ll;0;L;;;;;N;;;13B9;;13B9\nAB8A;CHEROKEE SMALL LETTER ME;Ll;0;L;;;;;N;;;13BA;;13BA\nAB8B;CHEROKEE SMALL LETTER MI;Ll;0;L;;;;;N;;;13BB;;13BB\nAB8C;CHEROKEE SMALL LETTER MO;Ll;0;L;;;;;N;;;13BC;;13BC\nAB8D;CHEROKEE SMALL LETTER MU;Ll;0;L;;;;;N;;;13BD;;13BD\nAB8E;CHEROKEE SMALL LETTER NA;Ll;0;L;;;;;N;;;13BE;;13BE\nAB8F;CHEROKEE SMALL LETTER HNA;Ll;0;L;;;;;N;;;13BF;;13BF\nAB90;CHEROKEE SMALL LETTER NAH;Ll;0;L;;;;;N;;;13C0;;13C0\nAB91;CHEROKEE SMALL LETTER NE;Ll;0;L;;;;;N;;;13C1;;13C1\nAB92;CHEROKEE SMALL LETTER NI;Ll;0;L;;;;;N;;;13C2;;13C2\nAB93;CHEROKEE SMALL LETTER NO;Ll;0;L;;;;;N;;;13C3;;13C3\nAB94;CHEROKEE SMALL LETTER NU;Ll;0;L;;;;;N;;;13C4;;13C4\nAB95;CHEROKEE SMALL LETTER NV;Ll;0;L;;;;;N;;;13C5;;13C5\nAB96;CHEROKEE SMALL LETTER QUA;Ll;0;L;;;;;N;;;13C6;;13C6\nAB97;CHEROKEE SMALL LETTER QUE;Ll;0;L;;;;;N;;;13C7;;13C7\nAB98;CHEROKEE SMALL LETTER QUI;Ll;0;L;;;;;N;;;13C8;;13C8\nAB99;CHEROKEE SMALL LETTER QUO;Ll;0;L;;;;;N;;;13C9;;13C9\nAB9A;CHEROKEE SMALL LETTER QUU;Ll;0;L;;;;;N;;;13CA;;13CA\nAB9B;CHEROKEE SMALL LETTER QUV;Ll;0;L;;;;;N;;;13CB;;13CB\nAB9C;CHEROKEE SMALL LETTER SA;Ll;0;L;;;;;N;;;13CC;;13CC\nAB9D;CHEROKEE SMALL LETTER S;Ll;0;L;;;;;N;;;13CD;;13CD\nAB9E;CHEROKEE SMALL LETTER SE;Ll;0;L;;;;;N;;;13CE;;13CE\nAB9F;CHEROKEE SMALL LETTER SI;Ll;0;L;;;;;N;;;13CF;;13CF\nABA0;CHEROKEE SMALL LETTER SO;Ll;0;L;;;;;N;;;13D0;;13D0\nABA1;CHEROKEE SMALL LETTER SU;Ll;0;L;;;;;N;;;13D1;;13D1\nABA2;CHEROKEE SMALL LETTER SV;Ll;0;L;;;;;N;;;13D2;;13D2\nABA3;CHEROKEE SMALL LETTER DA;Ll;0;L;;;;;N;;;13D3;;13D3\nABA4;CHEROKEE SMALL LETTER TA;Ll;0;L;;;;;N;;;13D4;;13D4\nABA5;CHEROKEE SMALL LETTER DE;Ll;0;L;;;;;N;;;13D5;;13D5\nABA6;CHEROKEE SMALL LETTER TE;Ll;0;L;;;;;N;;;13D6;;13D6\nABA7;CHEROKEE SMALL LETTER DI;Ll;0;L;;;;;N;;;13D7;;13D7\nABA8;CHEROKEE SMALL LETTER TI;Ll;0;L;;;;;N;;;13D8;;13D8\nABA9;CHEROKEE SMALL LETTER DO;Ll;0;L;;;;;N;;;13D9;;13D9\nABAA;CHEROKEE SMALL LETTER DU;Ll;0;L;;;;;N;;;13DA;;13DA\nABAB;CHEROKEE SMALL LETTER DV;Ll;0;L;;;;;N;;;13DB;;13DB\nABAC;CHEROKEE SMALL LETTER DLA;Ll;0;L;;;;;N;;;13DC;;13DC\nABAD;CHEROKEE SMALL LETTER TLA;Ll;0;L;;;;;N;;;13DD;;13DD\nABAE;CHEROKEE SMALL LETTER TLE;Ll;0;L;;;;;N;;;13DE;;13DE\nABAF;CHEROKEE SMALL LETTER TLI;Ll;0;L;;;;;N;;;13DF;;13DF\nABB0;CHEROKEE SMALL LETTER TLO;Ll;0;L;;;;;N;;;13E0;;13E0\nABB1;CHEROKEE SMALL LETTER TLU;Ll;0;L;;;;;N;;;13E1;;13E1\nABB2;CHEROKEE SMALL LETTER TLV;Ll;0;L;;;;;N;;;13E2;;13E2\nABB3;CHEROKEE SMALL LETTER TSA;Ll;0;L;;;;;N;;;13E3;;13E3\nABB4;CHEROKEE SMALL LETTER TSE;Ll;0;L;;;;;N;;;13E4;;13E4\nABB5;CHEROKEE SMALL LETTER TSI;Ll;0;L;;;;;N;;;13E5;;13E5\nABB6;CHEROKEE SMALL LETTER TSO;Ll;0;L;;;;;N;;;13E6;;13E6\nABB7;CHEROKEE SMALL LETTER TSU;Ll;0;L;;;;;N;;;13E7;;13E7\nABB8;CHEROKEE SMALL LETTER TSV;Ll;0;L;;;;;N;;;13E8;;13E8\nABB9;CHEROKEE SMALL LETTER WA;Ll;0;L;;;;;N;;;13E9;;13E9\nABBA;CHEROKEE SMALL LETTER WE;Ll;0;L;;;;;N;;;13EA;;13EA\nABBB;CHEROKEE SMALL LETTER WI;Ll;0;L;;;;;N;;;13EB;;13EB\nABBC;CHEROKEE SMALL LETTER WO;Ll;0;L;;;;;N;;;13EC;;13EC\nABBD;CHEROKEE SMALL LETTER WU;Ll;0;L;;;;;N;;;13ED;;13ED\nABBE;CHEROKEE SMALL LETTER WV;Ll;0;L;;;;;N;;;13EE;;13EE\nABBF;CHEROKEE SMALL LETTER YA;Ll;0;L;;;;;N;;;13EF;;13EF\nABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;;\nABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;;\nABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;;\nABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;;\nABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;;\nABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;;\nABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;;\nABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;;\nABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;;\nABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;;\nABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;;\nABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;;\nABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;;\nABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;;\nABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;;\nABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;;\nABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;;\nABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;;\nABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;;\nABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;;\nABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;;\nABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;;\nABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;;\nABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;;\nABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;;\nABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;;\nABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;;\nABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;;\nABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;;\nABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;;\nABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;;\nABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;;\nABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;;\nABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;;\nABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;;\nABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;;\nABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;;\nABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;;\nABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;;\nABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;;\nABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;;\nABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;;\nABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;;\nABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;;\nABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;;\nABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;;\nABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\nABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\nABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\nABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\nABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\nABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\nABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\nABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\nABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\nABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\nAC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;\nD7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;\nD7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;;\nD7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;;\nD7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;;\nD7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;;\nD7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;;\nD7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;;\nD7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;;\nD7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;;\nD7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;;\nD7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;;\nD7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;;\nD7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;;\nD7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;;\nD7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;;\nD7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;;\nD7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;;\nD7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;;\nD7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;;\nD7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;;\nD7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;;\nD7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;;\nD7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;;\nD7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;;\nD7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;;\nD7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;;\nD7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;\nD7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;\nD7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;\nD7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;\nD7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\nD7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;\nD7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;;\nD7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;;\nD7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;\nD7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;\nD7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;\nD7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;\nD7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;\nD7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;\nD7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;;\nD7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;;\nD7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;\nD7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;;\nD7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;;\nD7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;;\nD7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;\nD7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;;\nD7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;\nD7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;\nD7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;;\nD7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;\nD7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;\nD7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;\nD7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;\nD7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;\nD7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\nD7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;;\nD7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;;\nD7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;;\nD7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;\nD7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;\nD7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;\nD7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;\nD7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;;\nD7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;\nD7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;;\nD7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;;\nD7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;;\nD7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;;\nD7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;\nD7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;;\nD7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;;\nD800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;\nDB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;\nDB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;\nDBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;\nDC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;\nDFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;\nE000;<Private Use, First>;Co;0;L;;;;;N;;;;;\nF8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;\nF900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;\nF901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;\nF902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;\nF903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;\nF904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;\nF905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;\nF906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;\nF907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;\nF908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;\nF909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;\nF90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;\nF90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;\nF90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;\nF90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;\nF90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;\nF90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;\nF910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;\nF911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;\nF912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;\nF913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;\nF914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;\nF915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;\nF916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;\nF917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;\nF918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;\nF919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;\nF91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;\nF91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;\nF91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;\nF91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;\nF91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;\nF91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;\nF920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;\nF921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;\nF922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;\nF923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;\nF924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;\nF925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;\nF926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;\nF927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;\nF928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;\nF929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;\nF92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;\nF92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;\nF92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;\nF92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;\nF92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;\nF92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;\nF930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;\nF931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;\nF932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;\nF933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;\nF934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;\nF935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;\nF936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;\nF937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;\nF938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;\nF939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;\nF93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;\nF93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;\nF93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;\nF93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;\nF93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;\nF93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;\nF940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;\nF941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;\nF942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;\nF943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;\nF944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;\nF945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;\nF946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;\nF947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;\nF948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;\nF949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;\nF94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;\nF94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;\nF94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;\nF94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;\nF94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;\nF94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;\nF950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;\nF951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;\nF952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;\nF953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;\nF954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;\nF955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;\nF956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;\nF957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;\nF958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;\nF959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;\nF95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;\nF95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;\nF95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;\nF95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;\nF95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;\nF95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;\nF960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;\nF961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;\nF962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;\nF963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;\nF964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;\nF965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;\nF966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;\nF967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;\nF968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;\nF969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;\nF96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;\nF96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;;\nF96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;\nF96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;\nF96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;\nF96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;\nF970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;\nF971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;\nF972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;\nF973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;;\nF974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;\nF975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;\nF976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;\nF977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;\nF978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;;\nF979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;\nF97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;\nF97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;\nF97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;\nF97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;\nF97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;\nF97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;\nF980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;\nF981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;\nF982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;\nF983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;\nF984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;\nF985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;\nF986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;\nF987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;\nF988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;\nF989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;\nF98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;\nF98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;\nF98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;\nF98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;\nF98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;\nF98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;\nF990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;\nF991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;\nF992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;\nF993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;\nF994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;\nF995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;\nF996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;\nF997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;\nF998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;\nF999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;\nF99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;\nF99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;\nF99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;\nF99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;\nF99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;\nF99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;\nF9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;\nF9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;\nF9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;\nF9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;\nF9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;\nF9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;\nF9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;\nF9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;\nF9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;\nF9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;\nF9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;\nF9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;\nF9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;\nF9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;\nF9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;\nF9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;\nF9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;\nF9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;\nF9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;;\nF9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;\nF9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;\nF9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;\nF9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;\nF9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;\nF9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;\nF9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;\nF9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;\nF9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;\nF9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;\nF9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;\nF9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;\nF9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;\nF9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;\nF9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;\nF9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;\nF9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;\nF9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;\nF9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;\nF9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;\nF9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;\nF9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;\nF9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;\nF9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;\nF9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;\nF9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;\nF9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;\nF9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;\nF9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;\nF9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;\nF9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;;\nF9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;\nF9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;;\nF9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;\nF9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;\nF9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;\nF9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;\nF9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;\nF9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;\nF9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;\nF9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;\nF9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;\nF9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;\nF9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;\nF9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;\nF9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;\nF9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;\nF9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;\nF9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;\nF9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;\nF9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;\nF9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;\nF9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;\nF9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;\nF9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;\nF9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;\nF9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;\nF9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;\nF9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;\nF9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;\nF9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;\nF9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;\nF9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;\nF9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;\nF9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;\nF9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;\nF9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;\nF9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;\nF9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;\nF9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;\nF9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;\nF9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;\nF9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;\nF9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;\nF9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;;\nF9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;\nF9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;\nFA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;\nFA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;\nFA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;\nFA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;\nFA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;\nFA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;\nFA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;\nFA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;\nFA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;\nFA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;\nFA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;\nFA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;\nFA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;\nFA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;\nFA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;\nFA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;\nFA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;\nFA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;\nFA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;\nFA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;\nFA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;\nFA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;\nFA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;\nFA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;\nFA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;\nFA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;\nFA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;\nFA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;\nFA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;\nFA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;\nFA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;\nFA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;\nFA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;\nFA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;\nFA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;\nFA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;\nFA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;\nFA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;\nFA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;\nFA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;\nFA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;\nFA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;\nFA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;\nFA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;\nFA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;\nFA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;\nFA2E;CJK COMPATIBILITY IDEOGRAPH-FA2E;Lo;0;L;90DE;;;;N;;;;;\nFA2F;CJK COMPATIBILITY IDEOGRAPH-FA2F;Lo;0;L;96B7;;;;N;;;;;\nFA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;\nFA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;\nFA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;\nFA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;\nFA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;\nFA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;\nFA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;\nFA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;\nFA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;\nFA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;\nFA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;\nFA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;\nFA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;\nFA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;\nFA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;\nFA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;\nFA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;\nFA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;\nFA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;\nFA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;\nFA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;\nFA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;\nFA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;\nFA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;\nFA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;\nFA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;\nFA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;\nFA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;\nFA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;\nFA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;\nFA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;\nFA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;\nFA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;\nFA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;\nFA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;\nFA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;\nFA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;\nFA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;\nFA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;\nFA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;\nFA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;\nFA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;\nFA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;\nFA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;\nFA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;\nFA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;\nFA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;\nFA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;\nFA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;\nFA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;\nFA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;\nFA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;\nFA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;\nFA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;\nFA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;\nFA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;\nFA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;\nFA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;\nFA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;\nFA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;;\nFA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;;\nFA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;;\nFA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;\nFA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;\nFA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;\nFA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;\nFA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;\nFA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;\nFA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;\nFA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;\nFA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;\nFA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;\nFA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;\nFA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;\nFA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;\nFA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;\nFA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;\nFA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;\nFA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;\nFA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;\nFA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;\nFA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;\nFA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;\nFA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;\nFA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;\nFA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;\nFA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;\nFA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;\nFA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;\nFA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;\nFA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;\nFA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;\nFA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;\nFA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;\nFA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;\nFA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;\nFA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;\nFA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;\nFA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;\nFA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;\nFA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;\nFA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;\nFA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;\nFA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;\nFA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;\nFA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;\nFA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;\nFA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;\nFA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;\nFA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;\nFAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;\nFAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;\nFAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;\nFAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;\nFAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;\nFAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;\nFAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;\nFAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;\nFAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;\nFAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;\nFAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;\nFAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;\nFAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;\nFAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;\nFAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;\nFAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;\nFAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;\nFAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;\nFAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;\nFAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;\nFAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;\nFAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;\nFAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;\nFAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;\nFAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;\nFAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;\nFABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;\nFABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;\nFABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;\nFABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;\nFABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;\nFABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;\nFAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;\nFAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;\nFAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;\nFAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;\nFAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;\nFAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;\nFAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;\nFAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;\nFAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;\nFAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;\nFACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;\nFACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;\nFACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;\nFACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;\nFACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;\nFACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;\nFAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;\nFAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;\nFAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;\nFAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;\nFAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;\nFAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;\nFAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;\nFAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;\nFAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;\nFAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;\nFB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;\nFB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;\nFB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;\nFB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;\nFB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;\nFB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;\nFB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;\nFB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;\nFB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;\nFB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;\nFB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;\nFB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;\nFB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;\nFB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;\nFB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;\nFB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;\nFB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;\nFB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;\nFB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;\nFB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;\nFB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;\nFB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;\nFB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;\nFB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;\nFB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;\nFB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;\nFB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;\nFB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;\nFB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;\nFB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;\nFB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;\nFB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;\nFB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;\nFB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;\nFB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;\nFB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;\nFB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;\nFB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;\nFB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;\nFB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;\nFB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;\nFB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;\nFB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;\nFB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;\nFB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;\nFB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;\nFB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;\nFB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;\nFB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;\nFB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;\nFB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;\nFB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;\nFB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;\nFB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;\nFB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;\nFB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;\nFB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;\nFB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;\nFB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;\nFB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;\nFB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;\nFB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;\nFB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;\nFB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;\nFB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;\nFB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;\nFB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;\nFB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;\nFB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;\nFB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;\nFB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;\nFB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;\nFB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;\nFB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;\nFB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;\nFB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;\nFB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;\nFB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;\nFB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;\nFB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;\nFB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;\nFB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;\nFB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;\nFB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;\nFB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;\nFB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;\nFB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;\nFB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;\nFB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;\nFB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;\nFB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;\nFB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;\nFB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;\nFB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;\nFB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;\nFB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;\nFB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;\nFB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;\nFB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;\nFB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;\nFB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;\nFB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;\nFB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;\nFB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;\nFB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;\nFB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;\nFB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;\nFB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;\nFB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;\nFB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;\nFB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;\nFB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;\nFB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;\nFB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;\nFB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;\nFB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;\nFB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;\nFB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;\nFB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;\nFB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;\nFB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;\nFB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;\nFB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;\nFB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;\nFB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;\nFB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;\nFB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;\nFB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;\nFB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;\nFB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;\nFB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;\nFB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;\nFB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;\nFB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;\nFB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;\nFB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;\nFB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;\nFB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;\nFBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;\nFBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;\nFBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;\nFBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;\nFBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;\nFBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;\nFBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;\nFBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;\nFBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;\nFBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;\nFBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;\nFBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;\nFBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;\nFBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;\nFBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;\nFBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;\nFBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;\nFBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;\nFBB2;ARABIC SYMBOL DOT ABOVE;Sk;0;AL;;;;;N;;;;;\nFBB3;ARABIC SYMBOL DOT BELOW;Sk;0;AL;;;;;N;;;;;\nFBB4;ARABIC SYMBOL TWO DOTS ABOVE;Sk;0;AL;;;;;N;;;;;\nFBB5;ARABIC SYMBOL TWO DOTS BELOW;Sk;0;AL;;;;;N;;;;;\nFBB6;ARABIC SYMBOL THREE DOTS ABOVE;Sk;0;AL;;;;;N;;;;;\nFBB7;ARABIC SYMBOL THREE DOTS BELOW;Sk;0;AL;;;;;N;;;;;\nFBB8;ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE;Sk;0;AL;;;;;N;;;;;\nFBB9;ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW;Sk;0;AL;;;;;N;;;;;\nFBBA;ARABIC SYMBOL FOUR DOTS ABOVE;Sk;0;AL;;;;;N;;;;;\nFBBB;ARABIC SYMBOL FOUR DOTS BELOW;Sk;0;AL;;;;;N;;;;;\nFBBC;ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW;Sk;0;AL;;;;;N;;;;;\nFBBD;ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE;Sk;0;AL;;;;;N;;;;;\nFBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;;\nFBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;;\nFBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;;\nFBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;;\nFBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;\nFBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;\nFBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;\nFBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;\nFBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;\nFBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;\nFBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;\nFBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;\nFBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;\nFBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;\nFBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;\nFBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;\nFBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;\nFBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;\nFBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;\nFBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;\nFBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;\nFBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;\nFBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;\nFBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;\nFBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;\nFBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;\nFBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;\nFBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;\nFBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;\nFBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;\nFBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;\nFBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;\nFBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;\nFBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;\nFBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;\nFBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;\nFBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;\nFBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;\nFBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;\nFBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;\nFBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;\nFBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;\nFBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;\nFBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;\nFBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;\nFBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;\nFBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;\nFBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;\nFBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;\nFC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;\nFC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;\nFC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;\nFC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;\nFC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;\nFC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;\nFC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;\nFC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;\nFC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;\nFC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;\nFC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;\nFC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;\nFC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;\nFC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;\nFC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;\nFC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;\nFC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;\nFC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;\nFC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;\nFC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;\nFC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;\nFC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;\nFC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;\nFC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;\nFC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;\nFC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;\nFC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;\nFC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;\nFC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;\nFC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;\nFC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;\nFC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;\nFC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;\nFC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;\nFC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;\nFC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;\nFC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;\nFC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;\nFC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;\nFC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;\nFC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;\nFC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;\nFC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;\nFC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;\nFC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;\nFC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;\nFC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;\nFC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;\nFC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;\nFC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;\nFC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;\nFC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;\nFC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;\nFC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;\nFC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;\nFC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;\nFC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;\nFC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;\nFC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;\nFC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;\nFC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;\nFC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;\nFC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;\nFC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;\nFC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;\nFC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;\nFC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;\nFC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;\nFC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;\nFC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;\nFC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;\nFC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;\nFC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;\nFC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;\nFC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;\nFC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;\nFC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;\nFC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;\nFC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;\nFC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;\nFC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;\nFC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;\nFC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;\nFC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;\nFC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;\nFC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;\nFC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;\nFC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;\nFC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;\nFC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;\nFC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;\nFC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;\nFC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;\nFC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;\nFC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;\nFC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;\nFC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;\nFC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;\nFC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;\nFC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;\nFC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;\nFC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;\nFC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;\nFC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;\nFC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;\nFC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;\nFC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;\nFC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;\nFC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;\nFC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;\nFC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;\nFC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;\nFC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;\nFC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;\nFC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;\nFC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;\nFC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;\nFC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;\nFC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;\nFC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;\nFC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;\nFC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;\nFC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;\nFC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;\nFC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;\nFC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;\nFC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;\nFC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;\nFC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;\nFC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;\nFC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;\nFC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;\nFC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;\nFC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;\nFC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;\nFC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;\nFC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;\nFC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;\nFC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;\nFC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;\nFC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;\nFC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;\nFC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;\nFC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;\nFC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;\nFC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;\nFC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;\nFC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;\nFC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;\nFC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;\nFC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;\nFC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;\nFC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;\nFC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;\nFC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;\nFC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;\nFC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;\nFC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;\nFC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;\nFC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;\nFCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;\nFCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;\nFCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;\nFCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;\nFCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;\nFCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;\nFCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;\nFCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;\nFCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;\nFCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;\nFCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;\nFCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;\nFCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;\nFCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;\nFCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;\nFCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;\nFCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;\nFCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;\nFCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;\nFCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;\nFCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;\nFCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;\nFCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;\nFCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;\nFCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;\nFCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;\nFCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;\nFCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;\nFCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;\nFCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;\nFCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;\nFCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;\nFCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;\nFCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;\nFCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;\nFCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;\nFCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;\nFCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;\nFCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;\nFCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;\nFCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;\nFCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;\nFCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;\nFCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;\nFCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;\nFCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;\nFCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;\nFCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;\nFCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;\nFCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;\nFCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;\nFCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;\nFCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;\nFCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;\nFCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;\nFCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;\nFCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;\nFCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;\nFCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;\nFCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;\nFCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;\nFCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;\nFCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;\nFCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;\nFCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;\nFCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;\nFCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;\nFCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;\nFCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;\nFCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;\nFCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;\nFCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;\nFCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;\nFCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;\nFCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;\nFCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;\nFCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;\nFCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;\nFCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;\nFCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;\nFCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;\nFCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;\nFCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;\nFCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;\nFCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;\nFCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;\nFCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;\nFCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;\nFCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;\nFCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;\nFCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;\nFCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;\nFCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;\nFCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;\nFCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;\nFCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;\nFD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;\nFD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;\nFD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;\nFD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;\nFD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;\nFD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;\nFD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;\nFD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;\nFD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;\nFD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;\nFD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;\nFD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;\nFD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;\nFD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;\nFD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;\nFD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;\nFD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;\nFD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;\nFD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;\nFD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;\nFD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;\nFD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;\nFD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;\nFD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;\nFD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;\nFD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;\nFD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;\nFD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;\nFD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;\nFD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;\nFD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;\nFD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;\nFD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;\nFD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;\nFD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;\nFD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;\nFD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;\nFD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;\nFD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;\nFD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;\nFD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;\nFD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;\nFD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;\nFD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;\nFD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;\nFD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;\nFD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;\nFD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;\nFD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;\nFD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;\nFD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;\nFD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;\nFD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;\nFD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;\nFD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;\nFD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;\nFD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;\nFD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;\nFD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;\nFD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;\nFD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;\nFD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;\nFD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;;\nFD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;;\nFD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;\nFD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;\nFD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;\nFD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;\nFD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;\nFD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;\nFD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;\nFD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;\nFD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;\nFD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;\nFD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;\nFD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;\nFD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;\nFD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;\nFD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;\nFD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;\nFD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;\nFD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;\nFD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;\nFD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;\nFD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;\nFD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;\nFD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;\nFD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;\nFD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;\nFD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;\nFD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;\nFD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;\nFD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;\nFD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;\nFD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;\nFD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;\nFD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;\nFD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;\nFD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;\nFD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;\nFD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;\nFD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;\nFD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;\nFD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;\nFD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;\nFD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;\nFD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;\nFD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;\nFD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;\nFD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;\nFD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;\nFD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;\nFD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;\nFD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;\nFD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;\nFD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;\nFD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;\nFD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;\nFD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;\nFD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;\nFD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;\nFD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;\nFD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;\nFD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;\nFD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;\nFD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;\nFD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;\nFD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;\nFD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;\nFD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;\nFD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;\nFD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;\nFD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;\nFD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;\nFD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;\nFD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;\nFD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;\nFD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;\nFD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;\nFD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;\nFD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;\nFD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;\nFDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;\nFDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;\nFDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;\nFDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;\nFDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;\nFDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;\nFDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;\nFDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;\nFDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;\nFDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;\nFDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;\nFDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;\nFDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;\nFDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;\nFDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;\nFDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;\nFDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;\nFDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;\nFDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;\nFDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;\nFDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;\nFDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;\nFDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;\nFDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;\nFDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;\nFDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;\nFDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;\nFDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;\nFDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;\nFDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;\nFDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;\nFDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;\nFDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;\nFDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;\nFDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;\nFDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;\nFDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;\nFDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;\nFDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;\nFDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;\nFDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;\nFDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;\nFDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;\nFDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;\nFDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;\nFDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;\nFDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;\nFDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;\nFDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;\nFDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;\nFDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;\nFDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;\nFDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;\nFDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;\nFE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;\nFE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;\nFE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;\nFE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;\nFE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;\nFE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;\nFE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;\nFE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;\nFE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;\nFE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;\nFE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;\nFE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;\nFE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;\nFE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;\nFE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;\nFE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;\nFE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;\nFE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;\nFE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;\nFE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;\nFE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;\nFE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;\nFE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;\nFE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;\nFE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;\nFE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;\nFE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;\nFE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;\nFE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;\nFE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;\nFE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;\nFE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;\nFE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;\nFE27;COMBINING LIGATURE LEFT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE28;COMBINING LIGATURE RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE29;COMBINING TILDE LEFT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE2A;COMBINING TILDE RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE2B;COMBINING MACRON LEFT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE2C;COMBINING MACRON RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;;\nFE2D;COMBINING CONJOINING MACRON BELOW;Mn;220;NSM;;;;;N;;;;;\nFE2E;COMBINING CYRILLIC TITLO LEFT HALF;Mn;230;NSM;;;;;N;;;;;\nFE2F;COMBINING CYRILLIC TITLO RIGHT HALF;Mn;230;NSM;;;;;N;;;;;\nFE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;\nFE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;\nFE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;\nFE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;\nFE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;\nFE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;\nFE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;\nFE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;\nFE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;\nFE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;\nFE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;\nFE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;\nFE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;\nFE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;\nFE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;\nFE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;\nFE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;\nFE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;\nFE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;\nFE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;\nFE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;\nFE45;SESAME DOT;Po;0;ON;;;;;N;;;;;\nFE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;\nFE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;\nFE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;\nFE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;\nFE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;\nFE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;\nFE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;\nFE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;\nFE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;\nFE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;\nFE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;\nFE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;\nFE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;\nFE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;\nFE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;\nFE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;\nFE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;\nFE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;\nFE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;\nFE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;\nFE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;\nFE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;\nFE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;\nFE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;\nFE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;\nFE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;\nFE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;\nFE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;\nFE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;\nFE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;\nFE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;\nFE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;\nFE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;\nFE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;\nFE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;\nFE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;\nFE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;\nFE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;\nFE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;\nFE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;\nFE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;\nFE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;\nFE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;\nFE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;\nFE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;\nFE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;\nFE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;\nFE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;\nFE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;\nFE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;\nFE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;\nFE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;\nFE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;\nFE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;\nFE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;\nFE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;\nFE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;\nFE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;\nFE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;\nFE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;\nFE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;\nFE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;\nFE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;\nFE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;\nFE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;\nFE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;\nFE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;\nFE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;\nFE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;\nFE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;\nFE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;\nFE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;\nFE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;\nFE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;\nFE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;\nFE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;\nFE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;\nFE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;\nFE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;\nFE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;\nFE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;\nFE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;\nFE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;\nFEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;\nFEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;\nFEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;\nFEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;\nFEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;\nFEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;\nFEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;\nFEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;\nFEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;\nFEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;\nFEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;\nFEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;\nFEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;\nFEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;\nFEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;\nFEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;\nFEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;\nFEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;\nFEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;\nFEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;\nFEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;\nFEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;\nFEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;\nFEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;\nFEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;\nFEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;\nFEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;\nFEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;\nFEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;\nFEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;\nFEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;\nFEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;\nFEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;\nFEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;\nFEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;\nFEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;\nFEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;\nFEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;\nFEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;\nFEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;\nFEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;\nFEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;\nFECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;\nFECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;\nFECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;\nFECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;\nFECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;\nFECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;\nFED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;\nFED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;\nFED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;\nFED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;\nFED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;\nFED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;\nFED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;\nFED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;\nFED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;\nFED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;\nFEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;\nFEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;\nFEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;\nFEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;\nFEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;\nFEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;\nFEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;\nFEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;\nFEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;\nFEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;\nFEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;\nFEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;\nFEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;\nFEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;\nFEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;\nFEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;\nFEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;\nFEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;\nFEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;\nFEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;\nFEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;\nFEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;\nFEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;\nFEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;\nFEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;\nFEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;\nFEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;\nFEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;\nFEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;\nFEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;\nFEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;\nFEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;\nFEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;\nFEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;\nFEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;\nFEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;\nFF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;\nFF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;\nFF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;\nFF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;\nFF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;\nFF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;\nFF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;\nFF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;\nFF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;\nFF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;\nFF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;\nFF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;\nFF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;\nFF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;\nFF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;\nFF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;\nFF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;\nFF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;\nFF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;\nFF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;\nFF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;\nFF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;\nFF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;\nFF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;\nFF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;\nFF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;\nFF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;\nFF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;\nFF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;\nFF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;\nFF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;\nFF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;\nFF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;\nFF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;\nFF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;\nFF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;\nFF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;\nFF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;\nFF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;\nFF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;\nFF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;\nFF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;\nFF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;\nFF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;\nFF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;\nFF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;\nFF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;\nFF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;\nFF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;\nFF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;\nFF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;\nFF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;\nFF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;\nFF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;\nFF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;\nFF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;\nFF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;\nFF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;\nFF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;\nFF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;\nFF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;\nFF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;\nFF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;\nFF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;\nFF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21\nFF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22\nFF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23\nFF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24\nFF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25\nFF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26\nFF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27\nFF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28\nFF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29\nFF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A\nFF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B\nFF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C\nFF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D\nFF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E\nFF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F\nFF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30\nFF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31\nFF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32\nFF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33\nFF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34\nFF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35\nFF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36\nFF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37\nFF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38\nFF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39\nFF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A\nFF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;\nFF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;\nFF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;\nFF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;\nFF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;;;;\nFF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;;;;\nFF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;\nFF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;\nFF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;\nFF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;\nFF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;\nFF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;\nFF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;\nFF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;\nFF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;\nFF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;\nFF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;\nFF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;\nFF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;\nFF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;\nFF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;\nFF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;\nFF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;\nFF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;\nFF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;\nFF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;\nFF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;\nFF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;\nFF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;\nFF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;\nFF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;\nFF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;\nFF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;\nFF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;\nFF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;\nFF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;\nFF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;\nFF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;\nFF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;\nFF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;\nFF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;\nFF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;\nFF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;\nFF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;\nFF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;\nFF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;\nFF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;\nFF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;\nFF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;\nFF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;\nFF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;\nFF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;\nFF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;\nFF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;\nFF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;\nFF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;\nFF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;\nFF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;\nFF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;\nFF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;\nFF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;\nFF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;\nFF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;\nFF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;\nFF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;\nFF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;\nFF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;\nFF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;\nFF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;\nFFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;\nFFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;\nFFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;\nFFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;\nFFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;\nFFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;\nFFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;\nFFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;\nFFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;\nFFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;\nFFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;\nFFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;\nFFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;\nFFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;\nFFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;\nFFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;\nFFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;\nFFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;\nFFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;\nFFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;\nFFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;\nFFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;\nFFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;\nFFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;\nFFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;\nFFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;\nFFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;\nFFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;\nFFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;\nFFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;\nFFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;\nFFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;\nFFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;\nFFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;\nFFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;\nFFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;\nFFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;\nFFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;\nFFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;\nFFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;\nFFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;\nFFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;\nFFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;\nFFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;\nFFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;\nFFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;\nFFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;\nFFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;\nFFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;\nFFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;\nFFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;\nFFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;\nFFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;\nFFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;\nFFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;\nFFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;\nFFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;\nFFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;\nFFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;\nFFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;\nFFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;\nFFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;\nFFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;\nFFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;\nFFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;\nFFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;\nFFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;\nFFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;\nFFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;\nFFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;\nFFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;\n10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;\n10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;\n10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;\n10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;\n10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;\n10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;\n10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;\n10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;\n10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;\n10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;\n1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;\n1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;\n1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;\n1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;\n1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;\n10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;\n10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;\n10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;\n10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;\n10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;\n10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;\n10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;\n10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;\n10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;\n10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;\n1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;\n1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;\n1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;\n1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;\n1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;\n1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;\n10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;\n10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;\n10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;\n10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;\n10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;\n10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;\n10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;\n10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;\n10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;\n1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;\n1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;\n1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;\n1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;\n1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;\n1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;\n10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;\n10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;\n10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;\n10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;\n10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;\n10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;\n10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;\n10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;\n10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;\n10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;\n1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;\n1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;\n1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;\n1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;\n10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;\n10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;\n10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;\n10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;\n10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;\n10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;\n10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;\n10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;\n10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;\n10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;\n1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;\n1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;\n1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;\n1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;\n10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;\n10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;\n10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;\n10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;\n10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;\n10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;\n10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;\n10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;\n10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;\n10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;\n1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;\n1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;\n1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;\n1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;\n10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;\n10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;\n10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;\n10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;\n10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;\n10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;\n10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;\n10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;\n10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;\n10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;\n1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;\n1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;\n1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;\n1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;\n1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;\n1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;\n10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;\n10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;\n10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;\n10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;\n10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;\n10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;\n10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;\n10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;\n10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;\n10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;\n1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;\n1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;\n1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;\n1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;\n1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;\n1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;\n100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;\n100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;\n100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;\n100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;\n100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;\n100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;\n100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;\n100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;\n100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;\n100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;\n100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;\n100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;\n100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;\n100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;\n100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;\n100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;\n100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;\n100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;\n100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;\n100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;\n100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;\n100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;\n100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;\n100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;\n100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;\n100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;\n100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;\n100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;\n100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;\n100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;\n100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;\n100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;\n100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;\n100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;\n100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;\n100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;\n100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;\n100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;\n100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;\n100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;\n100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;\n100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;;\n100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;\n100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;;\n100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;\n100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;\n100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;\n100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;\n100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;\n100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;\n100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;\n100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;\n100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;\n100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;\n100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;\n100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;\n100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;\n100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;\n100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;\n100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;\n100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;\n100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;\n100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;\n100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;\n100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;\n100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;\n100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;\n100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;\n100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;\n100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;\n100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;\n100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;\n100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;\n100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;\n100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;\n100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;\n100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;\n100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;\n100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;\n100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;\n100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;\n100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;\n100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;\n100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;\n100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;\n100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;\n100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;\n100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;\n100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;\n100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;\n100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;\n10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;\n10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;\n10102;AEGEAN CHECK MARK;Po;0;L;;;;;N;;;;;\n10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;\n10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;\n10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;\n1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;\n1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;\n1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;\n1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;\n1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;\n1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;\n10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;\n10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;\n10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;\n10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;\n10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;\n10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;\n10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;\n10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;\n10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;\n1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;\n1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;\n1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;\n1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;\n1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;\n1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;\n10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;\n10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;\n10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;\n10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;\n10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;\n10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;\n10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;\n10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;\n10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;\n10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;\n1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;\n1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;\n1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;\n1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;\n1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;\n1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;\n10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;\n10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;\n10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;\n10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;\n10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;\n10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;\n10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;\n1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;\n1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;\n1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;\n1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;\n1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;\n1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;\n10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;\n10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;\n10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;\n10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;\n10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;\n10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;\n10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;\n10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;\n10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;\n1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;\n1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;\n1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;\n1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;\n1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;\n1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;\n10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;\n10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;\n10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;\n10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;\n10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;\n10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;\n10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;\n10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;\n10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;\n10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;\n1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;\n1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;\n1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;\n1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;\n1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;\n1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;\n10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;\n10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;\n10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;\n10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;\n10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;\n10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;\n10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;\n10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;\n10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;\n10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;\n1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;\n1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;\n1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;\n10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;\n10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;\n10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;\n10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;\n10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;\n10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;\n10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;\n10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;\n10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;\n1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;\n1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;\n1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;\n1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;\n1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;\n1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;\n10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;\n10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;\n10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;\n10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;\n10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;\n10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;\n10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;\n10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;\n10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;\n10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;\n1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;\n1018B;GREEK ONE QUARTER SIGN;No;0;ON;;;;1/4;N;;;;;\n1018C;GREEK SINUSOID SIGN;So;0;ON;;;;;N;;;;;\n1018D;GREEK INDICTION SIGN;So;0;L;;;;;N;;;;;\n1018E;NOMISMA SIGN;So;0;L;;;;;N;;;;;\n10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;\n10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;\n10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;\n10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;\n10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;\n10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;\n10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;\n10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;\n10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;\n10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;\n1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;\n1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;\n1019C;ASCIA SYMBOL;So;0;ON;;;;;N;;;;;\n101A0;GREEK SYMBOL TAU RHO;So;0;ON;;;;;N;;;;;\n101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;\n101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;\n101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;\n101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;\n101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;\n101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;\n101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;\n101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;\n101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;\n101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;\n101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;\n101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;\n101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;\n101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;\n101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;\n101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;\n101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;\n101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;\n101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;\n101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;\n101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;\n101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;\n101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;\n101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;\n101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;\n101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;\n101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;\n101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;\n101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;\n101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;\n101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;\n101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;\n101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;\n101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;\n101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;\n101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;\n101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;\n101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;\n101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;\n101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;\n101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;\n101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;\n101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;\n101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;\n101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;\n101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;\n10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;\n10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;\n10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;\n10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;\n10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;\n10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;\n10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;\n10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;\n10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;\n10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;\n1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;\n1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;\n1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;\n1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;\n1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;\n1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;\n10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;\n10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;\n10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;\n10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;\n10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;\n10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;\n10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;\n10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;\n10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;\n10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;\n1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;\n1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;\n1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;\n102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;\n102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;\n102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;\n102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;\n102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;\n102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;\n102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;\n102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;\n102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;\n102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;\n102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;\n102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;\n102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;\n102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;\n102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;\n102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;\n102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;\n102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;\n102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;\n102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;\n102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;\n102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;\n102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;\n102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;\n102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;\n102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;\n102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;\n102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;\n102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;\n102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;\n102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;\n102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;\n102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;\n102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;\n102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;\n102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;\n102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;\n102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;\n102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;\n102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;\n102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;\n102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;\n102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;\n102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;\n102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;\n102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;\n102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;\n102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;\n102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;;\n102E0;COPTIC EPACT THOUSANDS MARK;Mn;220;NSM;;;;;N;;;;;\n102E1;COPTIC EPACT DIGIT ONE;No;0;EN;;;;1;N;;;;;\n102E2;COPTIC EPACT DIGIT TWO;No;0;EN;;;;2;N;;;;;\n102E3;COPTIC EPACT DIGIT THREE;No;0;EN;;;;3;N;;;;;\n102E4;COPTIC EPACT DIGIT FOUR;No;0;EN;;;;4;N;;;;;\n102E5;COPTIC EPACT DIGIT FIVE;No;0;EN;;;;5;N;;;;;\n102E6;COPTIC EPACT DIGIT SIX;No;0;EN;;;;6;N;;;;;\n102E7;COPTIC EPACT DIGIT SEVEN;No;0;EN;;;;7;N;;;;;\n102E8;COPTIC EPACT DIGIT EIGHT;No;0;EN;;;;8;N;;;;;\n102E9;COPTIC EPACT DIGIT NINE;No;0;EN;;;;9;N;;;;;\n102EA;COPTIC EPACT NUMBER TEN;No;0;EN;;;;10;N;;;;;\n102EB;COPTIC EPACT NUMBER TWENTY;No;0;EN;;;;20;N;;;;;\n102EC;COPTIC EPACT NUMBER THIRTY;No;0;EN;;;;30;N;;;;;\n102ED;COPTIC EPACT NUMBER FORTY;No;0;EN;;;;40;N;;;;;\n102EE;COPTIC EPACT NUMBER FIFTY;No;0;EN;;;;50;N;;;;;\n102EF;COPTIC EPACT NUMBER SIXTY;No;0;EN;;;;60;N;;;;;\n102F0;COPTIC EPACT NUMBER SEVENTY;No;0;EN;;;;70;N;;;;;\n102F1;COPTIC EPACT NUMBER EIGHTY;No;0;EN;;;;80;N;;;;;\n102F2;COPTIC EPACT NUMBER NINETY;No;0;EN;;;;90;N;;;;;\n102F3;COPTIC EPACT NUMBER ONE HUNDRED;No;0;EN;;;;100;N;;;;;\n102F4;COPTIC EPACT NUMBER TWO HUNDRED;No;0;EN;;;;200;N;;;;;\n102F5;COPTIC EPACT NUMBER THREE HUNDRED;No;0;EN;;;;300;N;;;;;\n102F6;COPTIC EPACT NUMBER FOUR HUNDRED;No;0;EN;;;;400;N;;;;;\n102F7;COPTIC EPACT NUMBER FIVE HUNDRED;No;0;EN;;;;500;N;;;;;\n102F8;COPTIC EPACT NUMBER SIX HUNDRED;No;0;EN;;;;600;N;;;;;\n102F9;COPTIC EPACT NUMBER SEVEN HUNDRED;No;0;EN;;;;700;N;;;;;\n102FA;COPTIC EPACT NUMBER EIGHT HUNDRED;No;0;EN;;;;800;N;;;;;\n102FB;COPTIC EPACT NUMBER NINE HUNDRED;No;0;EN;;;;900;N;;;;;\n10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;\n10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;\n10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;\n10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;\n10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;\n10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;\n10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;\n10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;\n10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;\n10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;\n1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;\n1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;\n1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;\n1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;\n1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;\n1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;;\n10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;\n10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;\n10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;\n10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;\n10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;\n10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;\n10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;\n10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;;\n10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;\n10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;\n1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;\n1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;;\n1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;;\n1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;;\n1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;;\n1031F;OLD ITALIC LETTER ESS;Lo;0;L;;;;;N;;;;;\n10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;\n10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;\n10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;\n10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;\n1032D;OLD ITALIC LETTER YE;Lo;0;L;;;;;N;;;;;\n1032E;OLD ITALIC LETTER NORTHERN TSE;Lo;0;L;;;;;N;;;;;\n1032F;OLD ITALIC LETTER SOUTHERN TSE;Lo;0;L;;;;;N;;;;;\n10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;\n10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;\n10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;\n10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;\n10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;\n10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;\n10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;\n10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;\n10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;\n10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;\n1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;\n1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;\n1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;\n1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;\n1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;\n1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;\n10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;\n10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;\n10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;\n10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;\n10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;\n10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;\n10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;\n10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;\n10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;\n10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;\n1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;\n10350;OLD PERMIC LETTER AN;Lo;0;L;;;;;N;;;;;\n10351;OLD PERMIC LETTER BUR;Lo;0;L;;;;;N;;;;;\n10352;OLD PERMIC LETTER GAI;Lo;0;L;;;;;N;;;;;\n10353;OLD PERMIC LETTER DOI;Lo;0;L;;;;;N;;;;;\n10354;OLD PERMIC LETTER E;Lo;0;L;;;;;N;;;;;\n10355;OLD PERMIC LETTER ZHOI;Lo;0;L;;;;;N;;;;;\n10356;OLD PERMIC LETTER DZHOI;Lo;0;L;;;;;N;;;;;\n10357;OLD PERMIC LETTER ZATA;Lo;0;L;;;;;N;;;;;\n10358;OLD PERMIC LETTER DZITA;Lo;0;L;;;;;N;;;;;\n10359;OLD PERMIC LETTER I;Lo;0;L;;;;;N;;;;;\n1035A;OLD PERMIC LETTER KOKE;Lo;0;L;;;;;N;;;;;\n1035B;OLD PERMIC LETTER LEI;Lo;0;L;;;;;N;;;;;\n1035C;OLD PERMIC LETTER MENOE;Lo;0;L;;;;;N;;;;;\n1035D;OLD PERMIC LETTER NENOE;Lo;0;L;;;;;N;;;;;\n1035E;OLD PERMIC LETTER VOOI;Lo;0;L;;;;;N;;;;;\n1035F;OLD PERMIC LETTER PEEI;Lo;0;L;;;;;N;;;;;\n10360;OLD PERMIC LETTER REI;Lo;0;L;;;;;N;;;;;\n10361;OLD PERMIC LETTER SII;Lo;0;L;;;;;N;;;;;\n10362;OLD PERMIC LETTER TAI;Lo;0;L;;;;;N;;;;;\n10363;OLD PERMIC LETTER U;Lo;0;L;;;;;N;;;;;\n10364;OLD PERMIC LETTER CHERY;Lo;0;L;;;;;N;;;;;\n10365;OLD PERMIC LETTER SHOOI;Lo;0;L;;;;;N;;;;;\n10366;OLD PERMIC LETTER SHCHOOI;Lo;0;L;;;;;N;;;;;\n10367;OLD PERMIC LETTER YRY;Lo;0;L;;;;;N;;;;;\n10368;OLD PERMIC LETTER YERU;Lo;0;L;;;;;N;;;;;\n10369;OLD PERMIC LETTER O;Lo;0;L;;;;;N;;;;;\n1036A;OLD PERMIC LETTER OO;Lo;0;L;;;;;N;;;;;\n1036B;OLD PERMIC LETTER EF;Lo;0;L;;;;;N;;;;;\n1036C;OLD PERMIC LETTER HA;Lo;0;L;;;;;N;;;;;\n1036D;OLD PERMIC LETTER TSIU;Lo;0;L;;;;;N;;;;;\n1036E;OLD PERMIC LETTER VER;Lo;0;L;;;;;N;;;;;\n1036F;OLD PERMIC LETTER YER;Lo;0;L;;;;;N;;;;;\n10370;OLD PERMIC LETTER YERI;Lo;0;L;;;;;N;;;;;\n10371;OLD PERMIC LETTER YAT;Lo;0;L;;;;;N;;;;;\n10372;OLD PERMIC LETTER IE;Lo;0;L;;;;;N;;;;;\n10373;OLD PERMIC LETTER YU;Lo;0;L;;;;;N;;;;;\n10374;OLD PERMIC LETTER YA;Lo;0;L;;;;;N;;;;;\n10375;OLD PERMIC LETTER IA;Lo;0;L;;;;;N;;;;;\n10376;COMBINING OLD PERMIC LETTER AN;Mn;230;NSM;;;;;N;;;;;\n10377;COMBINING OLD PERMIC LETTER DOI;Mn;230;NSM;;;;;N;;;;;\n10378;COMBINING OLD PERMIC LETTER ZATA;Mn;230;NSM;;;;;N;;;;;\n10379;COMBINING OLD PERMIC LETTER NENOE;Mn;230;NSM;;;;;N;;;;;\n1037A;COMBINING OLD PERMIC LETTER SII;Mn;230;NSM;;;;;N;;;;;\n10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;\n10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;\n10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;\n10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;\n10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;\n10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;\n10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;\n10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;\n10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;\n10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;\n1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;\n1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;\n1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;\n1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;\n1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;\n1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;\n10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;\n10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;\n10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;\n10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;\n10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;\n10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;\n10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;\n10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;\n10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;\n10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;\n1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;\n1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;\n1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;\n1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;\n1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;\n103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;\n103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;\n103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;\n103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;\n103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;\n103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;\n103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;\n103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;\n103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;\n103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;\n103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;\n103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;\n103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;\n103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;\n103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;\n103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;\n103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;\n103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;\n103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;\n103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;\n103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;\n103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;\n103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;\n103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;\n103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;\n103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;\n103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;\n103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;\n103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;\n103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;\n103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;\n103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;\n103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;\n103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;\n103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;\n103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;\n103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;\n103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;\n103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;\n103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;\n103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;\n103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;\n103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;\n103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;\n103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;\n103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;\n103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;\n103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;\n103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;\n103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;\n10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;\n10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;\n10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;\n10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;\n10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;\n10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;\n10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;\n10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;\n10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;\n10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;\n1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;\n1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;\n1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;\n1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;\n1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;\n1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;\n10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;\n10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;\n10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;\n10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;\n10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;\n10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;\n10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;\n10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;\n10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;\n10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;\n1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;\n1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;\n1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;\n1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;\n1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;\n1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;\n10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;\n10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;\n10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;\n10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;\n10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;\n10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;\n10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;\n10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;\n10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400\n10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401\n1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402\n1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403\n1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404\n1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405\n1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406\n1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407\n10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408\n10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409\n10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A\n10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B\n10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C\n10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D\n10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E\n10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F\n10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410\n10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411\n1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412\n1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413\n1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414\n1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415\n1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416\n1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417\n10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418\n10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419\n10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A\n10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B\n10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C\n10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D\n10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E\n10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F\n10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420\n10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421\n1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422\n1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423\n1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424\n1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425\n1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426\n1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427\n10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;\n10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;\n10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;\n10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;\n10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;\n10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;\n10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;\n10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;\n10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;\n10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;\n1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;\n1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;\n1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;\n1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;\n1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;\n1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;\n10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;\n10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;\n10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;\n10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;\n10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;\n10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;\n10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;\n10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;\n10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;\n10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;\n1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;\n1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;\n1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;\n1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;\n1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;\n1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;\n10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;\n10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;\n10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;\n10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;\n10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;\n10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;\n10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;\n10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;\n10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;\n10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;\n1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;\n1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;\n1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;\n1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;\n1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;\n1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;\n10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;\n10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;\n10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;\n10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;\n10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;\n10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;\n10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;\n10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;\n10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;\n10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;\n1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;\n1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;\n1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;\n1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;\n1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;\n1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;\n10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;\n10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;\n10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;\n10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;\n10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;\n10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;\n10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;\n10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;\n10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;\n10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;\n1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;\n1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;\n1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;\n1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;\n104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n104B0;OSAGE CAPITAL LETTER A;Lu;0;L;;;;;N;;;;104D8;\n104B1;OSAGE CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;104D9;\n104B2;OSAGE CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;104DA;\n104B3;OSAGE CAPITAL LETTER AH;Lu;0;L;;;;;N;;;;104DB;\n104B4;OSAGE CAPITAL LETTER BRA;Lu;0;L;;;;;N;;;;104DC;\n104B5;OSAGE CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;104DD;\n104B6;OSAGE CAPITAL LETTER EHCHA;Lu;0;L;;;;;N;;;;104DE;\n104B7;OSAGE CAPITAL LETTER E;Lu;0;L;;;;;N;;;;104DF;\n104B8;OSAGE CAPITAL LETTER EIN;Lu;0;L;;;;;N;;;;104E0;\n104B9;OSAGE CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;104E1;\n104BA;OSAGE CAPITAL LETTER HYA;Lu;0;L;;;;;N;;;;104E2;\n104BB;OSAGE CAPITAL LETTER I;Lu;0;L;;;;;N;;;;104E3;\n104BC;OSAGE CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;104E4;\n104BD;OSAGE CAPITAL LETTER EHKA;Lu;0;L;;;;;N;;;;104E5;\n104BE;OSAGE CAPITAL LETTER KYA;Lu;0;L;;;;;N;;;;104E6;\n104BF;OSAGE CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;104E7;\n104C0;OSAGE CAPITAL LETTER MA;Lu;0;L;;;;;N;;;;104E8;\n104C1;OSAGE CAPITAL LETTER NA;Lu;0;L;;;;;N;;;;104E9;\n104C2;OSAGE CAPITAL LETTER O;Lu;0;L;;;;;N;;;;104EA;\n104C3;OSAGE CAPITAL LETTER OIN;Lu;0;L;;;;;N;;;;104EB;\n104C4;OSAGE CAPITAL LETTER PA;Lu;0;L;;;;;N;;;;104EC;\n104C5;OSAGE CAPITAL LETTER EHPA;Lu;0;L;;;;;N;;;;104ED;\n104C6;OSAGE CAPITAL LETTER SA;Lu;0;L;;;;;N;;;;104EE;\n104C7;OSAGE CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;104EF;\n104C8;OSAGE CAPITAL LETTER TA;Lu;0;L;;;;;N;;;;104F0;\n104C9;OSAGE CAPITAL LETTER EHTA;Lu;0;L;;;;;N;;;;104F1;\n104CA;OSAGE CAPITAL LETTER TSA;Lu;0;L;;;;;N;;;;104F2;\n104CB;OSAGE CAPITAL LETTER EHTSA;Lu;0;L;;;;;N;;;;104F3;\n104CC;OSAGE CAPITAL LETTER TSHA;Lu;0;L;;;;;N;;;;104F4;\n104CD;OSAGE CAPITAL LETTER DHA;Lu;0;L;;;;;N;;;;104F5;\n104CE;OSAGE CAPITAL LETTER U;Lu;0;L;;;;;N;;;;104F6;\n104CF;OSAGE CAPITAL LETTER WA;Lu;0;L;;;;;N;;;;104F7;\n104D0;OSAGE CAPITAL LETTER KHA;Lu;0;L;;;;;N;;;;104F8;\n104D1;OSAGE CAPITAL LETTER GHA;Lu;0;L;;;;;N;;;;104F9;\n104D2;OSAGE CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;104FA;\n104D3;OSAGE CAPITAL LETTER ZHA;Lu;0;L;;;;;N;;;;104FB;\n104D8;OSAGE SMALL LETTER A;Ll;0;L;;;;;N;;;104B0;;104B0\n104D9;OSAGE SMALL LETTER AI;Ll;0;L;;;;;N;;;104B1;;104B1\n104DA;OSAGE SMALL LETTER AIN;Ll;0;L;;;;;N;;;104B2;;104B2\n104DB;OSAGE SMALL LETTER AH;Ll;0;L;;;;;N;;;104B3;;104B3\n104DC;OSAGE SMALL LETTER BRA;Ll;0;L;;;;;N;;;104B4;;104B4\n104DD;OSAGE SMALL LETTER CHA;Ll;0;L;;;;;N;;;104B5;;104B5\n104DE;OSAGE SMALL LETTER EHCHA;Ll;0;L;;;;;N;;;104B6;;104B6\n104DF;OSAGE SMALL LETTER E;Ll;0;L;;;;;N;;;104B7;;104B7\n104E0;OSAGE SMALL LETTER EIN;Ll;0;L;;;;;N;;;104B8;;104B8\n104E1;OSAGE SMALL LETTER HA;Ll;0;L;;;;;N;;;104B9;;104B9\n104E2;OSAGE SMALL LETTER HYA;Ll;0;L;;;;;N;;;104BA;;104BA\n104E3;OSAGE SMALL LETTER I;Ll;0;L;;;;;N;;;104BB;;104BB\n104E4;OSAGE SMALL LETTER KA;Ll;0;L;;;;;N;;;104BC;;104BC\n104E5;OSAGE SMALL LETTER EHKA;Ll;0;L;;;;;N;;;104BD;;104BD\n104E6;OSAGE SMALL LETTER KYA;Ll;0;L;;;;;N;;;104BE;;104BE\n104E7;OSAGE SMALL LETTER LA;Ll;0;L;;;;;N;;;104BF;;104BF\n104E8;OSAGE SMALL LETTER MA;Ll;0;L;;;;;N;;;104C0;;104C0\n104E9;OSAGE SMALL LETTER NA;Ll;0;L;;;;;N;;;104C1;;104C1\n104EA;OSAGE SMALL LETTER O;Ll;0;L;;;;;N;;;104C2;;104C2\n104EB;OSAGE SMALL LETTER OIN;Ll;0;L;;;;;N;;;104C3;;104C3\n104EC;OSAGE SMALL LETTER PA;Ll;0;L;;;;;N;;;104C4;;104C4\n104ED;OSAGE SMALL LETTER EHPA;Ll;0;L;;;;;N;;;104C5;;104C5\n104EE;OSAGE SMALL LETTER SA;Ll;0;L;;;;;N;;;104C6;;104C6\n104EF;OSAGE SMALL LETTER SHA;Ll;0;L;;;;;N;;;104C7;;104C7\n104F0;OSAGE SMALL LETTER TA;Ll;0;L;;;;;N;;;104C8;;104C8\n104F1;OSAGE SMALL LETTER EHTA;Ll;0;L;;;;;N;;;104C9;;104C9\n104F2;OSAGE SMALL LETTER TSA;Ll;0;L;;;;;N;;;104CA;;104CA\n104F3;OSAGE SMALL LETTER EHTSA;Ll;0;L;;;;;N;;;104CB;;104CB\n104F4;OSAGE SMALL LETTER TSHA;Ll;0;L;;;;;N;;;104CC;;104CC\n104F5;OSAGE SMALL LETTER DHA;Ll;0;L;;;;;N;;;104CD;;104CD\n104F6;OSAGE SMALL LETTER U;Ll;0;L;;;;;N;;;104CE;;104CE\n104F7;OSAGE SMALL LETTER WA;Ll;0;L;;;;;N;;;104CF;;104CF\n104F8;OSAGE SMALL LETTER KHA;Ll;0;L;;;;;N;;;104D0;;104D0\n104F9;OSAGE SMALL LETTER GHA;Ll;0;L;;;;;N;;;104D1;;104D1\n104FA;OSAGE SMALL LETTER ZA;Ll;0;L;;;;;N;;;104D2;;104D2\n104FB;OSAGE SMALL LETTER ZHA;Ll;0;L;;;;;N;;;104D3;;104D3\n10500;ELBASAN LETTER A;Lo;0;L;;;;;N;;;;;\n10501;ELBASAN LETTER BE;Lo;0;L;;;;;N;;;;;\n10502;ELBASAN LETTER CE;Lo;0;L;;;;;N;;;;;\n10503;ELBASAN LETTER CHE;Lo;0;L;;;;;N;;;;;\n10504;ELBASAN LETTER DE;Lo;0;L;;;;;N;;;;;\n10505;ELBASAN LETTER NDE;Lo;0;L;;;;;N;;;;;\n10506;ELBASAN LETTER DHE;Lo;0;L;;;;;N;;;;;\n10507;ELBASAN LETTER EI;Lo;0;L;;;;;N;;;;;\n10508;ELBASAN LETTER E;Lo;0;L;;;;;N;;;;;\n10509;ELBASAN LETTER FE;Lo;0;L;;;;;N;;;;;\n1050A;ELBASAN LETTER GE;Lo;0;L;;;;;N;;;;;\n1050B;ELBASAN LETTER GJE;Lo;0;L;;;;;N;;;;;\n1050C;ELBASAN LETTER HE;Lo;0;L;;;;;N;;;;;\n1050D;ELBASAN LETTER I;Lo;0;L;;;;;N;;;;;\n1050E;ELBASAN LETTER JE;Lo;0;L;;;;;N;;;;;\n1050F;ELBASAN LETTER KE;Lo;0;L;;;;;N;;;;;\n10510;ELBASAN LETTER LE;Lo;0;L;;;;;N;;;;;\n10511;ELBASAN LETTER LLE;Lo;0;L;;;;;N;;;;;\n10512;ELBASAN LETTER ME;Lo;0;L;;;;;N;;;;;\n10513;ELBASAN LETTER NE;Lo;0;L;;;;;N;;;;;\n10514;ELBASAN LETTER NA;Lo;0;L;;;;;N;;;;;\n10515;ELBASAN LETTER NJE;Lo;0;L;;;;;N;;;;;\n10516;ELBASAN LETTER O;Lo;0;L;;;;;N;;;;;\n10517;ELBASAN LETTER PE;Lo;0;L;;;;;N;;;;;\n10518;ELBASAN LETTER QE;Lo;0;L;;;;;N;;;;;\n10519;ELBASAN LETTER RE;Lo;0;L;;;;;N;;;;;\n1051A;ELBASAN LETTER RRE;Lo;0;L;;;;;N;;;;;\n1051B;ELBASAN LETTER SE;Lo;0;L;;;;;N;;;;;\n1051C;ELBASAN LETTER SHE;Lo;0;L;;;;;N;;;;;\n1051D;ELBASAN LETTER TE;Lo;0;L;;;;;N;;;;;\n1051E;ELBASAN LETTER THE;Lo;0;L;;;;;N;;;;;\n1051F;ELBASAN LETTER U;Lo;0;L;;;;;N;;;;;\n10520;ELBASAN LETTER VE;Lo;0;L;;;;;N;;;;;\n10521;ELBASAN LETTER XE;Lo;0;L;;;;;N;;;;;\n10522;ELBASAN LETTER Y;Lo;0;L;;;;;N;;;;;\n10523;ELBASAN LETTER ZE;Lo;0;L;;;;;N;;;;;\n10524;ELBASAN LETTER ZHE;Lo;0;L;;;;;N;;;;;\n10525;ELBASAN LETTER GHE;Lo;0;L;;;;;N;;;;;\n10526;ELBASAN LETTER GHAMMA;Lo;0;L;;;;;N;;;;;\n10527;ELBASAN LETTER KHE;Lo;0;L;;;;;N;;;;;\n10530;CAUCASIAN ALBANIAN LETTER ALT;Lo;0;L;;;;;N;;;;;\n10531;CAUCASIAN ALBANIAN LETTER BET;Lo;0;L;;;;;N;;;;;\n10532;CAUCASIAN ALBANIAN LETTER GIM;Lo;0;L;;;;;N;;;;;\n10533;CAUCASIAN ALBANIAN LETTER DAT;Lo;0;L;;;;;N;;;;;\n10534;CAUCASIAN ALBANIAN LETTER EB;Lo;0;L;;;;;N;;;;;\n10535;CAUCASIAN ALBANIAN LETTER ZARL;Lo;0;L;;;;;N;;;;;\n10536;CAUCASIAN ALBANIAN LETTER EYN;Lo;0;L;;;;;N;;;;;\n10537;CAUCASIAN ALBANIAN LETTER ZHIL;Lo;0;L;;;;;N;;;;;\n10538;CAUCASIAN ALBANIAN LETTER TAS;Lo;0;L;;;;;N;;;;;\n10539;CAUCASIAN ALBANIAN LETTER CHA;Lo;0;L;;;;;N;;;;;\n1053A;CAUCASIAN ALBANIAN LETTER YOWD;Lo;0;L;;;;;N;;;;;\n1053B;CAUCASIAN ALBANIAN LETTER ZHA;Lo;0;L;;;;;N;;;;;\n1053C;CAUCASIAN ALBANIAN LETTER IRB;Lo;0;L;;;;;N;;;;;\n1053D;CAUCASIAN ALBANIAN LETTER SHA;Lo;0;L;;;;;N;;;;;\n1053E;CAUCASIAN ALBANIAN LETTER LAN;Lo;0;L;;;;;N;;;;;\n1053F;CAUCASIAN ALBANIAN LETTER INYA;Lo;0;L;;;;;N;;;;;\n10540;CAUCASIAN ALBANIAN LETTER XEYN;Lo;0;L;;;;;N;;;;;\n10541;CAUCASIAN ALBANIAN LETTER DYAN;Lo;0;L;;;;;N;;;;;\n10542;CAUCASIAN ALBANIAN LETTER CAR;Lo;0;L;;;;;N;;;;;\n10543;CAUCASIAN ALBANIAN LETTER JHOX;Lo;0;L;;;;;N;;;;;\n10544;CAUCASIAN ALBANIAN LETTER KAR;Lo;0;L;;;;;N;;;;;\n10545;CAUCASIAN ALBANIAN LETTER LYIT;Lo;0;L;;;;;N;;;;;\n10546;CAUCASIAN ALBANIAN LETTER HEYT;Lo;0;L;;;;;N;;;;;\n10547;CAUCASIAN ALBANIAN LETTER QAY;Lo;0;L;;;;;N;;;;;\n10548;CAUCASIAN ALBANIAN LETTER AOR;Lo;0;L;;;;;N;;;;;\n10549;CAUCASIAN ALBANIAN LETTER CHOY;Lo;0;L;;;;;N;;;;;\n1054A;CAUCASIAN ALBANIAN LETTER CHI;Lo;0;L;;;;;N;;;;;\n1054B;CAUCASIAN ALBANIAN LETTER CYAY;Lo;0;L;;;;;N;;;;;\n1054C;CAUCASIAN ALBANIAN LETTER MAQ;Lo;0;L;;;;;N;;;;;\n1054D;CAUCASIAN ALBANIAN LETTER QAR;Lo;0;L;;;;;N;;;;;\n1054E;CAUCASIAN ALBANIAN LETTER NOWC;Lo;0;L;;;;;N;;;;;\n1054F;CAUCASIAN ALBANIAN LETTER DZYAY;Lo;0;L;;;;;N;;;;;\n10550;CAUCASIAN ALBANIAN LETTER SHAK;Lo;0;L;;;;;N;;;;;\n10551;CAUCASIAN ALBANIAN LETTER JAYN;Lo;0;L;;;;;N;;;;;\n10552;CAUCASIAN ALBANIAN LETTER ON;Lo;0;L;;;;;N;;;;;\n10553;CAUCASIAN ALBANIAN LETTER TYAY;Lo;0;L;;;;;N;;;;;\n10554;CAUCASIAN ALBANIAN LETTER FAM;Lo;0;L;;;;;N;;;;;\n10555;CAUCASIAN ALBANIAN LETTER DZAY;Lo;0;L;;;;;N;;;;;\n10556;CAUCASIAN ALBANIAN LETTER CHAT;Lo;0;L;;;;;N;;;;;\n10557;CAUCASIAN ALBANIAN LETTER PEN;Lo;0;L;;;;;N;;;;;\n10558;CAUCASIAN ALBANIAN LETTER GHEYS;Lo;0;L;;;;;N;;;;;\n10559;CAUCASIAN ALBANIAN LETTER RAT;Lo;0;L;;;;;N;;;;;\n1055A;CAUCASIAN ALBANIAN LETTER SEYK;Lo;0;L;;;;;N;;;;;\n1055B;CAUCASIAN ALBANIAN LETTER VEYZ;Lo;0;L;;;;;N;;;;;\n1055C;CAUCASIAN ALBANIAN LETTER TIWR;Lo;0;L;;;;;N;;;;;\n1055D;CAUCASIAN ALBANIAN LETTER SHOY;Lo;0;L;;;;;N;;;;;\n1055E;CAUCASIAN ALBANIAN LETTER IWN;Lo;0;L;;;;;N;;;;;\n1055F;CAUCASIAN ALBANIAN LETTER CYAW;Lo;0;L;;;;;N;;;;;\n10560;CAUCASIAN ALBANIAN LETTER CAYN;Lo;0;L;;;;;N;;;;;\n10561;CAUCASIAN ALBANIAN LETTER YAYD;Lo;0;L;;;;;N;;;;;\n10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;;\n10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;;\n1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;;\n10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;\n10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;\n10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;\n10603;LINEAR A SIGN AB004;Lo;0;L;;;;;N;;;;;\n10604;LINEAR A SIGN AB005;Lo;0;L;;;;;N;;;;;\n10605;LINEAR A SIGN AB006;Lo;0;L;;;;;N;;;;;\n10606;LINEAR A SIGN AB007;Lo;0;L;;;;;N;;;;;\n10607;LINEAR A SIGN AB008;Lo;0;L;;;;;N;;;;;\n10608;LINEAR A SIGN AB009;Lo;0;L;;;;;N;;;;;\n10609;LINEAR A SIGN AB010;Lo;0;L;;;;;N;;;;;\n1060A;LINEAR A SIGN AB011;Lo;0;L;;;;;N;;;;;\n1060B;LINEAR A SIGN AB013;Lo;0;L;;;;;N;;;;;\n1060C;LINEAR A SIGN AB016;Lo;0;L;;;;;N;;;;;\n1060D;LINEAR A SIGN AB017;Lo;0;L;;;;;N;;;;;\n1060E;LINEAR A SIGN AB020;Lo;0;L;;;;;N;;;;;\n1060F;LINEAR A SIGN AB021;Lo;0;L;;;;;N;;;;;\n10610;LINEAR A SIGN AB021F;Lo;0;L;;;;;N;;;;;\n10611;LINEAR A SIGN AB021M;Lo;0;L;;;;;N;;;;;\n10612;LINEAR A SIGN AB022;Lo;0;L;;;;;N;;;;;\n10613;LINEAR A SIGN AB022F;Lo;0;L;;;;;N;;;;;\n10614;LINEAR A SIGN AB022M;Lo;0;L;;;;;N;;;;;\n10615;LINEAR A SIGN AB023;Lo;0;L;;;;;N;;;;;\n10616;LINEAR A SIGN AB023M;Lo;0;L;;;;;N;;;;;\n10617;LINEAR A SIGN AB024;Lo;0;L;;;;;N;;;;;\n10618;LINEAR A SIGN AB026;Lo;0;L;;;;;N;;;;;\n10619;LINEAR A SIGN AB027;Lo;0;L;;;;;N;;;;;\n1061A;LINEAR A SIGN AB028;Lo;0;L;;;;;N;;;;;\n1061B;LINEAR A SIGN A028B;Lo;0;L;;;;;N;;;;;\n1061C;LINEAR A SIGN AB029;Lo;0;L;;;;;N;;;;;\n1061D;LINEAR A SIGN AB030;Lo;0;L;;;;;N;;;;;\n1061E;LINEAR A SIGN AB031;Lo;0;L;;;;;N;;;;;\n1061F;LINEAR A SIGN AB034;Lo;0;L;;;;;N;;;;;\n10620;LINEAR A SIGN AB037;Lo;0;L;;;;;N;;;;;\n10621;LINEAR A SIGN AB038;Lo;0;L;;;;;N;;;;;\n10622;LINEAR A SIGN AB039;Lo;0;L;;;;;N;;;;;\n10623;LINEAR A SIGN AB040;Lo;0;L;;;;;N;;;;;\n10624;LINEAR A SIGN AB041;Lo;0;L;;;;;N;;;;;\n10625;LINEAR A SIGN AB044;Lo;0;L;;;;;N;;;;;\n10626;LINEAR A SIGN AB045;Lo;0;L;;;;;N;;;;;\n10627;LINEAR A SIGN AB046;Lo;0;L;;;;;N;;;;;\n10628;LINEAR A SIGN AB047;Lo;0;L;;;;;N;;;;;\n10629;LINEAR A SIGN AB048;Lo;0;L;;;;;N;;;;;\n1062A;LINEAR A SIGN AB049;Lo;0;L;;;;;N;;;;;\n1062B;LINEAR A SIGN AB050;Lo;0;L;;;;;N;;;;;\n1062C;LINEAR A SIGN AB051;Lo;0;L;;;;;N;;;;;\n1062D;LINEAR A SIGN AB053;Lo;0;L;;;;;N;;;;;\n1062E;LINEAR A SIGN AB054;Lo;0;L;;;;;N;;;;;\n1062F;LINEAR A SIGN AB055;Lo;0;L;;;;;N;;;;;\n10630;LINEAR A SIGN AB056;Lo;0;L;;;;;N;;;;;\n10631;LINEAR A SIGN AB057;Lo;0;L;;;;;N;;;;;\n10632;LINEAR A SIGN AB058;Lo;0;L;;;;;N;;;;;\n10633;LINEAR A SIGN AB059;Lo;0;L;;;;;N;;;;;\n10634;LINEAR A SIGN AB060;Lo;0;L;;;;;N;;;;;\n10635;LINEAR A SIGN AB061;Lo;0;L;;;;;N;;;;;\n10636;LINEAR A SIGN AB065;Lo;0;L;;;;;N;;;;;\n10637;LINEAR A SIGN AB066;Lo;0;L;;;;;N;;;;;\n10638;LINEAR A SIGN AB067;Lo;0;L;;;;;N;;;;;\n10639;LINEAR A SIGN AB069;Lo;0;L;;;;;N;;;;;\n1063A;LINEAR A SIGN AB070;Lo;0;L;;;;;N;;;;;\n1063B;LINEAR A SIGN AB073;Lo;0;L;;;;;N;;;;;\n1063C;LINEAR A SIGN AB074;Lo;0;L;;;;;N;;;;;\n1063D;LINEAR A SIGN AB076;Lo;0;L;;;;;N;;;;;\n1063E;LINEAR A SIGN AB077;Lo;0;L;;;;;N;;;;;\n1063F;LINEAR A SIGN AB078;Lo;0;L;;;;;N;;;;;\n10640;LINEAR A SIGN AB079;Lo;0;L;;;;;N;;;;;\n10641;LINEAR A SIGN AB080;Lo;0;L;;;;;N;;;;;\n10642;LINEAR A SIGN AB081;Lo;0;L;;;;;N;;;;;\n10643;LINEAR A SIGN AB082;Lo;0;L;;;;;N;;;;;\n10644;LINEAR A SIGN AB085;Lo;0;L;;;;;N;;;;;\n10645;LINEAR A SIGN AB086;Lo;0;L;;;;;N;;;;;\n10646;LINEAR A SIGN AB087;Lo;0;L;;;;;N;;;;;\n10647;LINEAR A SIGN A100-102;Lo;0;L;;;;;N;;;;;\n10648;LINEAR A SIGN AB118;Lo;0;L;;;;;N;;;;;\n10649;LINEAR A SIGN AB120;Lo;0;L;;;;;N;;;;;\n1064A;LINEAR A SIGN A120B;Lo;0;L;;;;;N;;;;;\n1064B;LINEAR A SIGN AB122;Lo;0;L;;;;;N;;;;;\n1064C;LINEAR A SIGN AB123;Lo;0;L;;;;;N;;;;;\n1064D;LINEAR A SIGN AB131A;Lo;0;L;;;;;N;;;;;\n1064E;LINEAR A SIGN AB131B;Lo;0;L;;;;;N;;;;;\n1064F;LINEAR A SIGN A131C;Lo;0;L;;;;;N;;;;;\n10650;LINEAR A SIGN AB164;Lo;0;L;;;;;N;;;;;\n10651;LINEAR A SIGN AB171;Lo;0;L;;;;;N;;;;;\n10652;LINEAR A SIGN AB180;Lo;0;L;;;;;N;;;;;\n10653;LINEAR A SIGN AB188;Lo;0;L;;;;;N;;;;;\n10654;LINEAR A SIGN AB191;Lo;0;L;;;;;N;;;;;\n10655;LINEAR A SIGN A301;Lo;0;L;;;;;N;;;;;\n10656;LINEAR A SIGN A302;Lo;0;L;;;;;N;;;;;\n10657;LINEAR A SIGN A303;Lo;0;L;;;;;N;;;;;\n10658;LINEAR A SIGN A304;Lo;0;L;;;;;N;;;;;\n10659;LINEAR A SIGN A305;Lo;0;L;;;;;N;;;;;\n1065A;LINEAR A SIGN A306;Lo;0;L;;;;;N;;;;;\n1065B;LINEAR A SIGN A307;Lo;0;L;;;;;N;;;;;\n1065C;LINEAR A SIGN A308;Lo;0;L;;;;;N;;;;;\n1065D;LINEAR A SIGN A309A;Lo;0;L;;;;;N;;;;;\n1065E;LINEAR A SIGN A309B;Lo;0;L;;;;;N;;;;;\n1065F;LINEAR A SIGN A309C;Lo;0;L;;;;;N;;;;;\n10660;LINEAR A SIGN A310;Lo;0;L;;;;;N;;;;;\n10661;LINEAR A SIGN A311;Lo;0;L;;;;;N;;;;;\n10662;LINEAR A SIGN A312;Lo;0;L;;;;;N;;;;;\n10663;LINEAR A SIGN A313A;Lo;0;L;;;;;N;;;;;\n10664;LINEAR A SIGN A313B;Lo;0;L;;;;;N;;;;;\n10665;LINEAR A SIGN A313C;Lo;0;L;;;;;N;;;;;\n10666;LINEAR A SIGN A314;Lo;0;L;;;;;N;;;;;\n10667;LINEAR A SIGN A315;Lo;0;L;;;;;N;;;;;\n10668;LINEAR A SIGN A316;Lo;0;L;;;;;N;;;;;\n10669;LINEAR A SIGN A317;Lo;0;L;;;;;N;;;;;\n1066A;LINEAR A SIGN A318;Lo;0;L;;;;;N;;;;;\n1066B;LINEAR A SIGN A319;Lo;0;L;;;;;N;;;;;\n1066C;LINEAR A SIGN A320;Lo;0;L;;;;;N;;;;;\n1066D;LINEAR A SIGN A321;Lo;0;L;;;;;N;;;;;\n1066E;LINEAR A SIGN A322;Lo;0;L;;;;;N;;;;;\n1066F;LINEAR A SIGN A323;Lo;0;L;;;;;N;;;;;\n10670;LINEAR A SIGN A324;Lo;0;L;;;;;N;;;;;\n10671;LINEAR A SIGN A325;Lo;0;L;;;;;N;;;;;\n10672;LINEAR A SIGN A326;Lo;0;L;;;;;N;;;;;\n10673;LINEAR A SIGN A327;Lo;0;L;;;;;N;;;;;\n10674;LINEAR A SIGN A328;Lo;0;L;;;;;N;;;;;\n10675;LINEAR A SIGN A329;Lo;0;L;;;;;N;;;;;\n10676;LINEAR A SIGN A330;Lo;0;L;;;;;N;;;;;\n10677;LINEAR A SIGN A331;Lo;0;L;;;;;N;;;;;\n10678;LINEAR A SIGN A332;Lo;0;L;;;;;N;;;;;\n10679;LINEAR A SIGN A333;Lo;0;L;;;;;N;;;;;\n1067A;LINEAR A SIGN A334;Lo;0;L;;;;;N;;;;;\n1067B;LINEAR A SIGN A335;Lo;0;L;;;;;N;;;;;\n1067C;LINEAR A SIGN A336;Lo;0;L;;;;;N;;;;;\n1067D;LINEAR A SIGN A337;Lo;0;L;;;;;N;;;;;\n1067E;LINEAR A SIGN A338;Lo;0;L;;;;;N;;;;;\n1067F;LINEAR A SIGN A339;Lo;0;L;;;;;N;;;;;\n10680;LINEAR A SIGN A340;Lo;0;L;;;;;N;;;;;\n10681;LINEAR A SIGN A341;Lo;0;L;;;;;N;;;;;\n10682;LINEAR A SIGN A342;Lo;0;L;;;;;N;;;;;\n10683;LINEAR A SIGN A343;Lo;0;L;;;;;N;;;;;\n10684;LINEAR A SIGN A344;Lo;0;L;;;;;N;;;;;\n10685;LINEAR A SIGN A345;Lo;0;L;;;;;N;;;;;\n10686;LINEAR A SIGN A346;Lo;0;L;;;;;N;;;;;\n10687;LINEAR A SIGN A347;Lo;0;L;;;;;N;;;;;\n10688;LINEAR A SIGN A348;Lo;0;L;;;;;N;;;;;\n10689;LINEAR A SIGN A349;Lo;0;L;;;;;N;;;;;\n1068A;LINEAR A SIGN A350;Lo;0;L;;;;;N;;;;;\n1068B;LINEAR A SIGN A351;Lo;0;L;;;;;N;;;;;\n1068C;LINEAR A SIGN A352;Lo;0;L;;;;;N;;;;;\n1068D;LINEAR A SIGN A353;Lo;0;L;;;;;N;;;;;\n1068E;LINEAR A SIGN A354;Lo;0;L;;;;;N;;;;;\n1068F;LINEAR A SIGN A355;Lo;0;L;;;;;N;;;;;\n10690;LINEAR A SIGN A356;Lo;0;L;;;;;N;;;;;\n10691;LINEAR A SIGN A357;Lo;0;L;;;;;N;;;;;\n10692;LINEAR A SIGN A358;Lo;0;L;;;;;N;;;;;\n10693;LINEAR A SIGN A359;Lo;0;L;;;;;N;;;;;\n10694;LINEAR A SIGN A360;Lo;0;L;;;;;N;;;;;\n10695;LINEAR A SIGN A361;Lo;0;L;;;;;N;;;;;\n10696;LINEAR A SIGN A362;Lo;0;L;;;;;N;;;;;\n10697;LINEAR A SIGN A363;Lo;0;L;;;;;N;;;;;\n10698;LINEAR A SIGN A364;Lo;0;L;;;;;N;;;;;\n10699;LINEAR A SIGN A365;Lo;0;L;;;;;N;;;;;\n1069A;LINEAR A SIGN A366;Lo;0;L;;;;;N;;;;;\n1069B;LINEAR A SIGN A367;Lo;0;L;;;;;N;;;;;\n1069C;LINEAR A SIGN A368;Lo;0;L;;;;;N;;;;;\n1069D;LINEAR A SIGN A369;Lo;0;L;;;;;N;;;;;\n1069E;LINEAR A SIGN A370;Lo;0;L;;;;;N;;;;;\n1069F;LINEAR A SIGN A371;Lo;0;L;;;;;N;;;;;\n106A0;LINEAR A SIGN A400-VAS;Lo;0;L;;;;;N;;;;;\n106A1;LINEAR A SIGN A401-VAS;Lo;0;L;;;;;N;;;;;\n106A2;LINEAR A SIGN A402-VAS;Lo;0;L;;;;;N;;;;;\n106A3;LINEAR A SIGN A403-VAS;Lo;0;L;;;;;N;;;;;\n106A4;LINEAR A SIGN A404-VAS;Lo;0;L;;;;;N;;;;;\n106A5;LINEAR A SIGN A405-VAS;Lo;0;L;;;;;N;;;;;\n106A6;LINEAR A SIGN A406-VAS;Lo;0;L;;;;;N;;;;;\n106A7;LINEAR A SIGN A407-VAS;Lo;0;L;;;;;N;;;;;\n106A8;LINEAR A SIGN A408-VAS;Lo;0;L;;;;;N;;;;;\n106A9;LINEAR A SIGN A409-VAS;Lo;0;L;;;;;N;;;;;\n106AA;LINEAR A SIGN A410-VAS;Lo;0;L;;;;;N;;;;;\n106AB;LINEAR A SIGN A411-VAS;Lo;0;L;;;;;N;;;;;\n106AC;LINEAR A SIGN A412-VAS;Lo;0;L;;;;;N;;;;;\n106AD;LINEAR A SIGN A413-VAS;Lo;0;L;;;;;N;;;;;\n106AE;LINEAR A SIGN A414-VAS;Lo;0;L;;;;;N;;;;;\n106AF;LINEAR A SIGN A415-VAS;Lo;0;L;;;;;N;;;;;\n106B0;LINEAR A SIGN A416-VAS;Lo;0;L;;;;;N;;;;;\n106B1;LINEAR A SIGN A417-VAS;Lo;0;L;;;;;N;;;;;\n106B2;LINEAR A SIGN A418-VAS;Lo;0;L;;;;;N;;;;;\n106B3;LINEAR A SIGN A501;Lo;0;L;;;;;N;;;;;\n106B4;LINEAR A SIGN A502;Lo;0;L;;;;;N;;;;;\n106B5;LINEAR A SIGN A503;Lo;0;L;;;;;N;;;;;\n106B6;LINEAR A SIGN A504;Lo;0;L;;;;;N;;;;;\n106B7;LINEAR A SIGN A505;Lo;0;L;;;;;N;;;;;\n106B8;LINEAR A SIGN A506;Lo;0;L;;;;;N;;;;;\n106B9;LINEAR A SIGN A508;Lo;0;L;;;;;N;;;;;\n106BA;LINEAR A SIGN A509;Lo;0;L;;;;;N;;;;;\n106BB;LINEAR A SIGN A510;Lo;0;L;;;;;N;;;;;\n106BC;LINEAR A SIGN A511;Lo;0;L;;;;;N;;;;;\n106BD;LINEAR A SIGN A512;Lo;0;L;;;;;N;;;;;\n106BE;LINEAR A SIGN A513;Lo;0;L;;;;;N;;;;;\n106BF;LINEAR A SIGN A515;Lo;0;L;;;;;N;;;;;\n106C0;LINEAR A SIGN A516;Lo;0;L;;;;;N;;;;;\n106C1;LINEAR A SIGN A520;Lo;0;L;;;;;N;;;;;\n106C2;LINEAR A SIGN A521;Lo;0;L;;;;;N;;;;;\n106C3;LINEAR A SIGN A523;Lo;0;L;;;;;N;;;;;\n106C4;LINEAR A SIGN A524;Lo;0;L;;;;;N;;;;;\n106C5;LINEAR A SIGN A525;Lo;0;L;;;;;N;;;;;\n106C6;LINEAR A SIGN A526;Lo;0;L;;;;;N;;;;;\n106C7;LINEAR A SIGN A527;Lo;0;L;;;;;N;;;;;\n106C8;LINEAR A SIGN A528;Lo;0;L;;;;;N;;;;;\n106C9;LINEAR A SIGN A529;Lo;0;L;;;;;N;;;;;\n106CA;LINEAR A SIGN A530;Lo;0;L;;;;;N;;;;;\n106CB;LINEAR A SIGN A531;Lo;0;L;;;;;N;;;;;\n106CC;LINEAR A SIGN A532;Lo;0;L;;;;;N;;;;;\n106CD;LINEAR A SIGN A534;Lo;0;L;;;;;N;;;;;\n106CE;LINEAR A SIGN A535;Lo;0;L;;;;;N;;;;;\n106CF;LINEAR A SIGN A536;Lo;0;L;;;;;N;;;;;\n106D0;LINEAR A SIGN A537;Lo;0;L;;;;;N;;;;;\n106D1;LINEAR A SIGN A538;Lo;0;L;;;;;N;;;;;\n106D2;LINEAR A SIGN A539;Lo;0;L;;;;;N;;;;;\n106D3;LINEAR A SIGN A540;Lo;0;L;;;;;N;;;;;\n106D4;LINEAR A SIGN A541;Lo;0;L;;;;;N;;;;;\n106D5;LINEAR A SIGN A542;Lo;0;L;;;;;N;;;;;\n106D6;LINEAR A SIGN A545;Lo;0;L;;;;;N;;;;;\n106D7;LINEAR A SIGN A547;Lo;0;L;;;;;N;;;;;\n106D8;LINEAR A SIGN A548;Lo;0;L;;;;;N;;;;;\n106D9;LINEAR A SIGN A549;Lo;0;L;;;;;N;;;;;\n106DA;LINEAR A SIGN A550;Lo;0;L;;;;;N;;;;;\n106DB;LINEAR A SIGN A551;Lo;0;L;;;;;N;;;;;\n106DC;LINEAR A SIGN A552;Lo;0;L;;;;;N;;;;;\n106DD;LINEAR A SIGN A553;Lo;0;L;;;;;N;;;;;\n106DE;LINEAR A SIGN A554;Lo;0;L;;;;;N;;;;;\n106DF;LINEAR A SIGN A555;Lo;0;L;;;;;N;;;;;\n106E0;LINEAR A SIGN A556;Lo;0;L;;;;;N;;;;;\n106E1;LINEAR A SIGN A557;Lo;0;L;;;;;N;;;;;\n106E2;LINEAR A SIGN A559;Lo;0;L;;;;;N;;;;;\n106E3;LINEAR A SIGN A563;Lo;0;L;;;;;N;;;;;\n106E4;LINEAR A SIGN A564;Lo;0;L;;;;;N;;;;;\n106E5;LINEAR A SIGN A565;Lo;0;L;;;;;N;;;;;\n106E6;LINEAR A SIGN A566;Lo;0;L;;;;;N;;;;;\n106E7;LINEAR A SIGN A568;Lo;0;L;;;;;N;;;;;\n106E8;LINEAR A SIGN A569;Lo;0;L;;;;;N;;;;;\n106E9;LINEAR A SIGN A570;Lo;0;L;;;;;N;;;;;\n106EA;LINEAR A SIGN A571;Lo;0;L;;;;;N;;;;;\n106EB;LINEAR A SIGN A572;Lo;0;L;;;;;N;;;;;\n106EC;LINEAR A SIGN A573;Lo;0;L;;;;;N;;;;;\n106ED;LINEAR A SIGN A574;Lo;0;L;;;;;N;;;;;\n106EE;LINEAR A SIGN A575;Lo;0;L;;;;;N;;;;;\n106EF;LINEAR A SIGN A576;Lo;0;L;;;;;N;;;;;\n106F0;LINEAR A SIGN A577;Lo;0;L;;;;;N;;;;;\n106F1;LINEAR A SIGN A578;Lo;0;L;;;;;N;;;;;\n106F2;LINEAR A SIGN A579;Lo;0;L;;;;;N;;;;;\n106F3;LINEAR A SIGN A580;Lo;0;L;;;;;N;;;;;\n106F4;LINEAR A SIGN A581;Lo;0;L;;;;;N;;;;;\n106F5;LINEAR A SIGN A582;Lo;0;L;;;;;N;;;;;\n106F6;LINEAR A SIGN A583;Lo;0;L;;;;;N;;;;;\n106F7;LINEAR A SIGN A584;Lo;0;L;;;;;N;;;;;\n106F8;LINEAR A SIGN A585;Lo;0;L;;;;;N;;;;;\n106F9;LINEAR A SIGN A586;Lo;0;L;;;;;N;;;;;\n106FA;LINEAR A SIGN A587;Lo;0;L;;;;;N;;;;;\n106FB;LINEAR A SIGN A588;Lo;0;L;;;;;N;;;;;\n106FC;LINEAR A SIGN A589;Lo;0;L;;;;;N;;;;;\n106FD;LINEAR A SIGN A591;Lo;0;L;;;;;N;;;;;\n106FE;LINEAR A SIGN A592;Lo;0;L;;;;;N;;;;;\n106FF;LINEAR A SIGN A594;Lo;0;L;;;;;N;;;;;\n10700;LINEAR A SIGN A595;Lo;0;L;;;;;N;;;;;\n10701;LINEAR A SIGN A596;Lo;0;L;;;;;N;;;;;\n10702;LINEAR A SIGN A598;Lo;0;L;;;;;N;;;;;\n10703;LINEAR A SIGN A600;Lo;0;L;;;;;N;;;;;\n10704;LINEAR A SIGN A601;Lo;0;L;;;;;N;;;;;\n10705;LINEAR A SIGN A602;Lo;0;L;;;;;N;;;;;\n10706;LINEAR A SIGN A603;Lo;0;L;;;;;N;;;;;\n10707;LINEAR A SIGN A604;Lo;0;L;;;;;N;;;;;\n10708;LINEAR A SIGN A606;Lo;0;L;;;;;N;;;;;\n10709;LINEAR A SIGN A608;Lo;0;L;;;;;N;;;;;\n1070A;LINEAR A SIGN A609;Lo;0;L;;;;;N;;;;;\n1070B;LINEAR A SIGN A610;Lo;0;L;;;;;N;;;;;\n1070C;LINEAR A SIGN A611;Lo;0;L;;;;;N;;;;;\n1070D;LINEAR A SIGN A612;Lo;0;L;;;;;N;;;;;\n1070E;LINEAR A SIGN A613;Lo;0;L;;;;;N;;;;;\n1070F;LINEAR A SIGN A614;Lo;0;L;;;;;N;;;;;\n10710;LINEAR A SIGN A615;Lo;0;L;;;;;N;;;;;\n10711;LINEAR A SIGN A616;Lo;0;L;;;;;N;;;;;\n10712;LINEAR A SIGN A617;Lo;0;L;;;;;N;;;;;\n10713;LINEAR A SIGN A618;Lo;0;L;;;;;N;;;;;\n10714;LINEAR A SIGN A619;Lo;0;L;;;;;N;;;;;\n10715;LINEAR A SIGN A620;Lo;0;L;;;;;N;;;;;\n10716;LINEAR A SIGN A621;Lo;0;L;;;;;N;;;;;\n10717;LINEAR A SIGN A622;Lo;0;L;;;;;N;;;;;\n10718;LINEAR A SIGN A623;Lo;0;L;;;;;N;;;;;\n10719;LINEAR A SIGN A624;Lo;0;L;;;;;N;;;;;\n1071A;LINEAR A SIGN A626;Lo;0;L;;;;;N;;;;;\n1071B;LINEAR A SIGN A627;Lo;0;L;;;;;N;;;;;\n1071C;LINEAR A SIGN A628;Lo;0;L;;;;;N;;;;;\n1071D;LINEAR A SIGN A629;Lo;0;L;;;;;N;;;;;\n1071E;LINEAR A SIGN A634;Lo;0;L;;;;;N;;;;;\n1071F;LINEAR A SIGN A637;Lo;0;L;;;;;N;;;;;\n10720;LINEAR A SIGN A638;Lo;0;L;;;;;N;;;;;\n10721;LINEAR A SIGN A640;Lo;0;L;;;;;N;;;;;\n10722;LINEAR A SIGN A642;Lo;0;L;;;;;N;;;;;\n10723;LINEAR A SIGN A643;Lo;0;L;;;;;N;;;;;\n10724;LINEAR A SIGN A644;Lo;0;L;;;;;N;;;;;\n10725;LINEAR A SIGN A645;Lo;0;L;;;;;N;;;;;\n10726;LINEAR A SIGN A646;Lo;0;L;;;;;N;;;;;\n10727;LINEAR A SIGN A648;Lo;0;L;;;;;N;;;;;\n10728;LINEAR A SIGN A649;Lo;0;L;;;;;N;;;;;\n10729;LINEAR A SIGN A651;Lo;0;L;;;;;N;;;;;\n1072A;LINEAR A SIGN A652;Lo;0;L;;;;;N;;;;;\n1072B;LINEAR A SIGN A653;Lo;0;L;;;;;N;;;;;\n1072C;LINEAR A SIGN A654;Lo;0;L;;;;;N;;;;;\n1072D;LINEAR A SIGN A655;Lo;0;L;;;;;N;;;;;\n1072E;LINEAR A SIGN A656;Lo;0;L;;;;;N;;;;;\n1072F;LINEAR A SIGN A657;Lo;0;L;;;;;N;;;;;\n10730;LINEAR A SIGN A658;Lo;0;L;;;;;N;;;;;\n10731;LINEAR A SIGN A659;Lo;0;L;;;;;N;;;;;\n10732;LINEAR A SIGN A660;Lo;0;L;;;;;N;;;;;\n10733;LINEAR A SIGN A661;Lo;0;L;;;;;N;;;;;\n10734;LINEAR A SIGN A662;Lo;0;L;;;;;N;;;;;\n10735;LINEAR A SIGN A663;Lo;0;L;;;;;N;;;;;\n10736;LINEAR A SIGN A664;Lo;0;L;;;;;N;;;;;\n10740;LINEAR A SIGN A701 A;Lo;0;L;;;;;N;;;;;\n10741;LINEAR A SIGN A702 B;Lo;0;L;;;;;N;;;;;\n10742;LINEAR A SIGN A703 D;Lo;0;L;;;;;N;;;;;\n10743;LINEAR A SIGN A704 E;Lo;0;L;;;;;N;;;;;\n10744;LINEAR A SIGN A705 F;Lo;0;L;;;;;N;;;;;\n10745;LINEAR A SIGN A706 H;Lo;0;L;;;;;N;;;;;\n10746;LINEAR A SIGN A707 J;Lo;0;L;;;;;N;;;;;\n10747;LINEAR A SIGN A708 K;Lo;0;L;;;;;N;;;;;\n10748;LINEAR A SIGN A709 L;Lo;0;L;;;;;N;;;;;\n10749;LINEAR A SIGN A709-2 L2;Lo;0;L;;;;;N;;;;;\n1074A;LINEAR A SIGN A709-3 L3;Lo;0;L;;;;;N;;;;;\n1074B;LINEAR A SIGN A709-4 L4;Lo;0;L;;;;;N;;;;;\n1074C;LINEAR A SIGN A709-6 L6;Lo;0;L;;;;;N;;;;;\n1074D;LINEAR A SIGN A710 W;Lo;0;L;;;;;N;;;;;\n1074E;LINEAR A SIGN A711 X;Lo;0;L;;;;;N;;;;;\n1074F;LINEAR A SIGN A712 Y;Lo;0;L;;;;;N;;;;;\n10750;LINEAR A SIGN A713 OMEGA;Lo;0;L;;;;;N;;;;;\n10751;LINEAR A SIGN A714 ABB;Lo;0;L;;;;;N;;;;;\n10752;LINEAR A SIGN A715 BB;Lo;0;L;;;;;N;;;;;\n10753;LINEAR A SIGN A717 DD;Lo;0;L;;;;;N;;;;;\n10754;LINEAR A SIGN A726 EYYY;Lo;0;L;;;;;N;;;;;\n10755;LINEAR A SIGN A732 JE;Lo;0;L;;;;;N;;;;;\n10760;LINEAR A SIGN A800;Lo;0;L;;;;;N;;;;;\n10761;LINEAR A SIGN A801;Lo;0;L;;;;;N;;;;;\n10762;LINEAR A SIGN A802;Lo;0;L;;;;;N;;;;;\n10763;LINEAR A SIGN A803;Lo;0;L;;;;;N;;;;;\n10764;LINEAR A SIGN A804;Lo;0;L;;;;;N;;;;;\n10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;;\n10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;;\n10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;;\n10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;\n10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;\n10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;\n10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;\n10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;\n10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;\n10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;\n1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;\n1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;\n1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;\n1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;\n1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;\n1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;\n10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;\n10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;\n10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;\n10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;\n10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;\n10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;\n10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;\n10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;\n10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;\n10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;\n1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;\n1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;\n1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;\n1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;\n1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;\n1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;\n10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;\n10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;\n10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;\n10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;\n10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;\n10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;\n10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;\n10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;\n10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;\n10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;\n1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;\n1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;\n1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;\n1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;\n1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;\n1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;\n10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;\n10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;\n10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;\n10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;\n10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;\n10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;\n10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;\n10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;\n1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;\n1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;\n10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;\n10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;;\n10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;\n10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;\n10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;\n10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;\n1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;\n1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;\n1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;\n1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;;\n10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;\n10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;\n10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;;\n10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;;\n10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;;\n1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;;\n1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;;\n1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;;\n10860;PALMYRENE LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10861;PALMYRENE LETTER BETH;Lo;0;R;;;;;N;;;;;\n10862;PALMYRENE LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10863;PALMYRENE LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10864;PALMYRENE LETTER HE;Lo;0;R;;;;;N;;;;;\n10865;PALMYRENE LETTER WAW;Lo;0;R;;;;;N;;;;;\n10866;PALMYRENE LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10867;PALMYRENE LETTER HETH;Lo;0;R;;;;;N;;;;;\n10868;PALMYRENE LETTER TETH;Lo;0;R;;;;;N;;;;;\n10869;PALMYRENE LETTER YODH;Lo;0;R;;;;;N;;;;;\n1086A;PALMYRENE LETTER KAPH;Lo;0;R;;;;;N;;;;;\n1086B;PALMYRENE LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n1086C;PALMYRENE LETTER MEM;Lo;0;R;;;;;N;;;;;\n1086D;PALMYRENE LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;\n1086E;PALMYRENE LETTER NUN;Lo;0;R;;;;;N;;;;;\n1086F;PALMYRENE LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10870;PALMYRENE LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10871;PALMYRENE LETTER PE;Lo;0;R;;;;;N;;;;;\n10872;PALMYRENE LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10873;PALMYRENE LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10874;PALMYRENE LETTER RESH;Lo;0;R;;;;;N;;;;;\n10875;PALMYRENE LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10876;PALMYRENE LETTER TAW;Lo;0;R;;;;;N;;;;;\n10877;PALMYRENE LEFT-POINTING FLEURON;So;0;R;;;;;N;;;;;\n10878;PALMYRENE RIGHT-POINTING FLEURON;So;0;R;;;;;N;;;;;\n10879;PALMYRENE NUMBER ONE;No;0;R;;;;1;N;;;;;\n1087A;PALMYRENE NUMBER TWO;No;0;R;;;;2;N;;;;;\n1087B;PALMYRENE NUMBER THREE;No;0;R;;;;3;N;;;;;\n1087C;PALMYRENE NUMBER FOUR;No;0;R;;;;4;N;;;;;\n1087D;PALMYRENE NUMBER FIVE;No;0;R;;;;5;N;;;;;\n1087E;PALMYRENE NUMBER TEN;No;0;R;;;;10;N;;;;;\n1087F;PALMYRENE NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10880;NABATAEAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;\n10881;NABATAEAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10882;NABATAEAN LETTER FINAL BETH;Lo;0;R;;;;;N;;;;;\n10883;NABATAEAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10884;NABATAEAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10885;NABATAEAN LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10886;NABATAEAN LETTER FINAL HE;Lo;0;R;;;;;N;;;;;\n10887;NABATAEAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10888;NABATAEAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10889;NABATAEAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n1088A;NABATAEAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n1088B;NABATAEAN LETTER TETH;Lo;0;R;;;;;N;;;;;\n1088C;NABATAEAN LETTER FINAL YODH;Lo;0;R;;;;;N;;;;;\n1088D;NABATAEAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n1088E;NABATAEAN LETTER FINAL KAPH;Lo;0;R;;;;;N;;;;;\n1088F;NABATAEAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10890;NABATAEAN LETTER FINAL LAMEDH;Lo;0;R;;;;;N;;;;;\n10891;NABATAEAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10892;NABATAEAN LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;\n10893;NABATAEAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10894;NABATAEAN LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;\n10895;NABATAEAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10896;NABATAEAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10897;NABATAEAN LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10898;NABATAEAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10899;NABATAEAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n1089A;NABATAEAN LETTER QOPH;Lo;0;R;;;;;N;;;;;\n1089B;NABATAEAN LETTER RESH;Lo;0;R;;;;;N;;;;;\n1089C;NABATAEAN LETTER FINAL SHIN;Lo;0;R;;;;;N;;;;;\n1089D;NABATAEAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n1089E;NABATAEAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n108A7;NABATAEAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n108A8;NABATAEAN NUMBER TWO;No;0;R;;;;2;N;;;;;\n108A9;NABATAEAN NUMBER THREE;No;0;R;;;;3;N;;;;;\n108AA;NABATAEAN NUMBER FOUR;No;0;R;;;;4;N;;;;;\n108AB;NABATAEAN CRUCIFORM NUMBER FOUR;No;0;R;;;;4;N;;;;;\n108AC;NABATAEAN NUMBER FIVE;No;0;R;;;;5;N;;;;;\n108AD;NABATAEAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n108AE;NABATAEAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n108AF;NABATAEAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n108E0;HATRAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n108E1;HATRAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n108E2;HATRAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n108E3;HATRAN LETTER DALETH-RESH;Lo;0;R;;;;;N;;;;;\n108E4;HATRAN LETTER HE;Lo;0;R;;;;;N;;;;;\n108E5;HATRAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n108E6;HATRAN LETTER ZAYN;Lo;0;R;;;;;N;;;;;\n108E7;HATRAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n108E8;HATRAN LETTER TETH;Lo;0;R;;;;;N;;;;;\n108E9;HATRAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n108EA;HATRAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n108EB;HATRAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n108EC;HATRAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n108ED;HATRAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n108EE;HATRAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n108EF;HATRAN LETTER AYN;Lo;0;R;;;;;N;;;;;\n108F0;HATRAN LETTER PE;Lo;0;R;;;;;N;;;;;\n108F1;HATRAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n108F2;HATRAN LETTER QOPH;Lo;0;R;;;;;N;;;;;\n108F4;HATRAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n108F5;HATRAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n108FB;HATRAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n108FC;HATRAN NUMBER FIVE;No;0;R;;;;5;N;;;;;\n108FD;HATRAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n108FE;HATRAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n108FF;HATRAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;\n10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;\n10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;\n10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;\n10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;\n10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;\n10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;\n10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;\n10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;\n1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;\n1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;\n1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;\n1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;\n10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;\n10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;\n10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;\n10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;\n10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;;\n1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;;\n1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;\n10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;\n10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;\n10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;\n10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;\n10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;\n10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;\n10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;\n10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;\n10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;\n10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;\n1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;\n1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;\n1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;\n1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;\n1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;\n1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;\n10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;\n10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;\n10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;\n10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;\n10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;\n10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;\n10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;\n10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;\n10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;\n10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;\n1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;\n10980;MEROITIC HIEROGLYPHIC LETTER A;Lo;0;R;;;;;N;;;;;\n10981;MEROITIC HIEROGLYPHIC LETTER E;Lo;0;R;;;;;N;;;;;\n10982;MEROITIC HIEROGLYPHIC LETTER I;Lo;0;R;;;;;N;;;;;\n10983;MEROITIC HIEROGLYPHIC LETTER O;Lo;0;R;;;;;N;;;;;\n10984;MEROITIC HIEROGLYPHIC LETTER YA;Lo;0;R;;;;;N;;;;;\n10985;MEROITIC HIEROGLYPHIC LETTER WA;Lo;0;R;;;;;N;;;;;\n10986;MEROITIC HIEROGLYPHIC LETTER BA;Lo;0;R;;;;;N;;;;;\n10987;MEROITIC HIEROGLYPHIC LETTER BA-2;Lo;0;R;;;;;N;;;;;\n10988;MEROITIC HIEROGLYPHIC LETTER PA;Lo;0;R;;;;;N;;;;;\n10989;MEROITIC HIEROGLYPHIC LETTER MA;Lo;0;R;;;;;N;;;;;\n1098A;MEROITIC HIEROGLYPHIC LETTER NA;Lo;0;R;;;;;N;;;;;\n1098B;MEROITIC HIEROGLYPHIC LETTER NA-2;Lo;0;R;;;;;N;;;;;\n1098C;MEROITIC HIEROGLYPHIC LETTER NE;Lo;0;R;;;;;N;;;;;\n1098D;MEROITIC HIEROGLYPHIC LETTER NE-2;Lo;0;R;;;;;N;;;;;\n1098E;MEROITIC HIEROGLYPHIC LETTER RA;Lo;0;R;;;;;N;;;;;\n1098F;MEROITIC HIEROGLYPHIC LETTER RA-2;Lo;0;R;;;;;N;;;;;\n10990;MEROITIC HIEROGLYPHIC LETTER LA;Lo;0;R;;;;;N;;;;;\n10991;MEROITIC HIEROGLYPHIC LETTER KHA;Lo;0;R;;;;;N;;;;;\n10992;MEROITIC HIEROGLYPHIC LETTER HHA;Lo;0;R;;;;;N;;;;;\n10993;MEROITIC HIEROGLYPHIC LETTER SA;Lo;0;R;;;;;N;;;;;\n10994;MEROITIC HIEROGLYPHIC LETTER SA-2;Lo;0;R;;;;;N;;;;;\n10995;MEROITIC HIEROGLYPHIC LETTER SE;Lo;0;R;;;;;N;;;;;\n10996;MEROITIC HIEROGLYPHIC LETTER KA;Lo;0;R;;;;;N;;;;;\n10997;MEROITIC HIEROGLYPHIC LETTER QA;Lo;0;R;;;;;N;;;;;\n10998;MEROITIC HIEROGLYPHIC LETTER TA;Lo;0;R;;;;;N;;;;;\n10999;MEROITIC HIEROGLYPHIC LETTER TA-2;Lo;0;R;;;;;N;;;;;\n1099A;MEROITIC HIEROGLYPHIC LETTER TE;Lo;0;R;;;;;N;;;;;\n1099B;MEROITIC HIEROGLYPHIC LETTER TE-2;Lo;0;R;;;;;N;;;;;\n1099C;MEROITIC HIEROGLYPHIC LETTER TO;Lo;0;R;;;;;N;;;;;\n1099D;MEROITIC HIEROGLYPHIC LETTER DA;Lo;0;R;;;;;N;;;;;\n1099E;MEROITIC HIEROGLYPHIC SYMBOL VIDJ;Lo;0;R;;;;;N;;;;;\n1099F;MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2;Lo;0;R;;;;;N;;;;;\n109A0;MEROITIC CURSIVE LETTER A;Lo;0;R;;;;;N;;;;;\n109A1;MEROITIC CURSIVE LETTER E;Lo;0;R;;;;;N;;;;;\n109A2;MEROITIC CURSIVE LETTER I;Lo;0;R;;;;;N;;;;;\n109A3;MEROITIC CURSIVE LETTER O;Lo;0;R;;;;;N;;;;;\n109A4;MEROITIC CURSIVE LETTER YA;Lo;0;R;;;;;N;;;;;\n109A5;MEROITIC CURSIVE LETTER WA;Lo;0;R;;;;;N;;;;;\n109A6;MEROITIC CURSIVE LETTER BA;Lo;0;R;;;;;N;;;;;\n109A7;MEROITIC CURSIVE LETTER PA;Lo;0;R;;;;;N;;;;;\n109A8;MEROITIC CURSIVE LETTER MA;Lo;0;R;;;;;N;;;;;\n109A9;MEROITIC CURSIVE LETTER NA;Lo;0;R;;;;;N;;;;;\n109AA;MEROITIC CURSIVE LETTER NE;Lo;0;R;;;;;N;;;;;\n109AB;MEROITIC CURSIVE LETTER RA;Lo;0;R;;;;;N;;;;;\n109AC;MEROITIC CURSIVE LETTER LA;Lo;0;R;;;;;N;;;;;\n109AD;MEROITIC CURSIVE LETTER KHA;Lo;0;R;;;;;N;;;;;\n109AE;MEROITIC CURSIVE LETTER HHA;Lo;0;R;;;;;N;;;;;\n109AF;MEROITIC CURSIVE LETTER SA;Lo;0;R;;;;;N;;;;;\n109B0;MEROITIC CURSIVE LETTER ARCHAIC SA;Lo;0;R;;;;;N;;;;;\n109B1;MEROITIC CURSIVE LETTER SE;Lo;0;R;;;;;N;;;;;\n109B2;MEROITIC CURSIVE LETTER KA;Lo;0;R;;;;;N;;;;;\n109B3;MEROITIC CURSIVE LETTER QA;Lo;0;R;;;;;N;;;;;\n109B4;MEROITIC CURSIVE LETTER TA;Lo;0;R;;;;;N;;;;;\n109B5;MEROITIC CURSIVE LETTER TE;Lo;0;R;;;;;N;;;;;\n109B6;MEROITIC CURSIVE LETTER TO;Lo;0;R;;;;;N;;;;;\n109B7;MEROITIC CURSIVE LETTER DA;Lo;0;R;;;;;N;;;;;\n109BC;MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS;No;0;R;;;;11/12;N;;;;;\n109BD;MEROITIC CURSIVE FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;\n109BE;MEROITIC CURSIVE LOGOGRAM RMT;Lo;0;R;;;;;N;;;;;\n109BF;MEROITIC CURSIVE LOGOGRAM IMN;Lo;0;R;;;;;N;;;;;\n109C0;MEROITIC CURSIVE NUMBER ONE;No;0;R;;;;1;N;;;;;\n109C1;MEROITIC CURSIVE NUMBER TWO;No;0;R;;;;2;N;;;;;\n109C2;MEROITIC CURSIVE NUMBER THREE;No;0;R;;;;3;N;;;;;\n109C3;MEROITIC CURSIVE NUMBER FOUR;No;0;R;;;;4;N;;;;;\n109C4;MEROITIC CURSIVE NUMBER FIVE;No;0;R;;;;5;N;;;;;\n109C5;MEROITIC CURSIVE NUMBER SIX;No;0;R;;;;6;N;;;;;\n109C6;MEROITIC CURSIVE NUMBER SEVEN;No;0;R;;;;7;N;;;;;\n109C7;MEROITIC CURSIVE NUMBER EIGHT;No;0;R;;;;8;N;;;;;\n109C8;MEROITIC CURSIVE NUMBER NINE;No;0;R;;;;9;N;;;;;\n109C9;MEROITIC CURSIVE NUMBER TEN;No;0;R;;;;10;N;;;;;\n109CA;MEROITIC CURSIVE NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n109CB;MEROITIC CURSIVE NUMBER THIRTY;No;0;R;;;;30;N;;;;;\n109CC;MEROITIC CURSIVE NUMBER FORTY;No;0;R;;;;40;N;;;;;\n109CD;MEROITIC CURSIVE NUMBER FIFTY;No;0;R;;;;50;N;;;;;\n109CE;MEROITIC CURSIVE NUMBER SIXTY;No;0;R;;;;60;N;;;;;\n109CF;MEROITIC CURSIVE NUMBER SEVENTY;No;0;R;;;;70;N;;;;;\n109D2;MEROITIC CURSIVE NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n109D3;MEROITIC CURSIVE NUMBER TWO HUNDRED;No;0;R;;;;200;N;;;;;\n109D4;MEROITIC CURSIVE NUMBER THREE HUNDRED;No;0;R;;;;300;N;;;;;\n109D5;MEROITIC CURSIVE NUMBER FOUR HUNDRED;No;0;R;;;;400;N;;;;;\n109D6;MEROITIC CURSIVE NUMBER FIVE HUNDRED;No;0;R;;;;500;N;;;;;\n109D7;MEROITIC CURSIVE NUMBER SIX HUNDRED;No;0;R;;;;600;N;;;;;\n109D8;MEROITIC CURSIVE NUMBER SEVEN HUNDRED;No;0;R;;;;700;N;;;;;\n109D9;MEROITIC CURSIVE NUMBER EIGHT HUNDRED;No;0;R;;;;800;N;;;;;\n109DA;MEROITIC CURSIVE NUMBER NINE HUNDRED;No;0;R;;;;900;N;;;;;\n109DB;MEROITIC CURSIVE NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n109DC;MEROITIC CURSIVE NUMBER TWO THOUSAND;No;0;R;;;;2000;N;;;;;\n109DD;MEROITIC CURSIVE NUMBER THREE THOUSAND;No;0;R;;;;3000;N;;;;;\n109DE;MEROITIC CURSIVE NUMBER FOUR THOUSAND;No;0;R;;;;4000;N;;;;;\n109DF;MEROITIC CURSIVE NUMBER FIVE THOUSAND;No;0;R;;;;5000;N;;;;;\n109E0;MEROITIC CURSIVE NUMBER SIX THOUSAND;No;0;R;;;;6000;N;;;;;\n109E1;MEROITIC CURSIVE NUMBER SEVEN THOUSAND;No;0;R;;;;7000;N;;;;;\n109E2;MEROITIC CURSIVE NUMBER EIGHT THOUSAND;No;0;R;;;;8000;N;;;;;\n109E3;MEROITIC CURSIVE NUMBER NINE THOUSAND;No;0;R;;;;9000;N;;;;;\n109E4;MEROITIC CURSIVE NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;;\n109E5;MEROITIC CURSIVE NUMBER TWENTY THOUSAND;No;0;R;;;;20000;N;;;;;\n109E6;MEROITIC CURSIVE NUMBER THIRTY THOUSAND;No;0;R;;;;30000;N;;;;;\n109E7;MEROITIC CURSIVE NUMBER FORTY THOUSAND;No;0;R;;;;40000;N;;;;;\n109E8;MEROITIC CURSIVE NUMBER FIFTY THOUSAND;No;0;R;;;;50000;N;;;;;\n109E9;MEROITIC CURSIVE NUMBER SIXTY THOUSAND;No;0;R;;;;60000;N;;;;;\n109EA;MEROITIC CURSIVE NUMBER SEVENTY THOUSAND;No;0;R;;;;70000;N;;;;;\n109EB;MEROITIC CURSIVE NUMBER EIGHTY THOUSAND;No;0;R;;;;80000;N;;;;;\n109EC;MEROITIC CURSIVE NUMBER NINETY THOUSAND;No;0;R;;;;90000;N;;;;;\n109ED;MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND;No;0;R;;;;100000;N;;;;;\n109EE;MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND;No;0;R;;;;200000;N;;;;;\n109EF;MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND;No;0;R;;;;300000;N;;;;;\n109F0;MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND;No;0;R;;;;400000;N;;;;;\n109F1;MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND;No;0;R;;;;500000;N;;;;;\n109F2;MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND;No;0;R;;;;600000;N;;;;;\n109F3;MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND;No;0;R;;;;700000;N;;;;;\n109F4;MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND;No;0;R;;;;800000;N;;;;;\n109F5;MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND;No;0;R;;;;900000;N;;;;;\n109F6;MEROITIC CURSIVE FRACTION ONE TWELFTH;No;0;R;;;;1/12;N;;;;;\n109F7;MEROITIC CURSIVE FRACTION TWO TWELFTHS;No;0;R;;;;2/12;N;;;;;\n109F8;MEROITIC CURSIVE FRACTION THREE TWELFTHS;No;0;R;;;;3/12;N;;;;;\n109F9;MEROITIC CURSIVE FRACTION FOUR TWELFTHS;No;0;R;;;;4/12;N;;;;;\n109FA;MEROITIC CURSIVE FRACTION FIVE TWELFTHS;No;0;R;;;;5/12;N;;;;;\n109FB;MEROITIC CURSIVE FRACTION SIX TWELFTHS;No;0;R;;;;6/12;N;;;;;\n109FC;MEROITIC CURSIVE FRACTION SEVEN TWELFTHS;No;0;R;;;;7/12;N;;;;;\n109FD;MEROITIC CURSIVE FRACTION EIGHT TWELFTHS;No;0;R;;;;8/12;N;;;;;\n109FE;MEROITIC CURSIVE FRACTION NINE TWELFTHS;No;0;R;;;;9/12;N;;;;;\n109FF;MEROITIC CURSIVE FRACTION TEN TWELFTHS;No;0;R;;;;10/12;N;;;;;\n10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;\n10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;\n10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;\n10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;\n10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;\n10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;\n10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;\n10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;\n10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;\n10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;\n10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;\n10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;\n10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;\n10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;\n10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;\n10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;\n10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;\n10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;\n10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;\n10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;\n10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;\n10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;\n10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;\n10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;\n10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;\n10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;\n10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;\n10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;\n10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;\n10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;\n10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;\n10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;\n10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;\n10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;\n10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;\n10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;\n10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;\n10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;\n10A34;KHAROSHTHI LETTER TTTA;Lo;0;R;;;;;N;;;;;\n10A35;KHAROSHTHI LETTER VHA;Lo;0;R;;;;;N;;;;;\n10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;\n10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;\n10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;\n10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;\n10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;\n10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;\n10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;\n10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;\n10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n10A48;KHAROSHTHI FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;\n10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;\n10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;\n10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;\n10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;\n10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;\n10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;\n10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;\n10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;\n10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;\n10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;;\n10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;;\n10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;;\n10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;;\n10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;;\n10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;;\n10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;;\n10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;;\n10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;;\n10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;;\n10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;;\n10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;;\n10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;;\n10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;\n10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;;\n10A80;OLD NORTH ARABIAN LETTER HEH;Lo;0;R;;;;;N;;;;;\n10A81;OLD NORTH ARABIAN LETTER LAM;Lo;0;R;;;;;N;;;;;\n10A82;OLD NORTH ARABIAN LETTER HAH;Lo;0;R;;;;;N;;;;;\n10A83;OLD NORTH ARABIAN LETTER MEEM;Lo;0;R;;;;;N;;;;;\n10A84;OLD NORTH ARABIAN LETTER QAF;Lo;0;R;;;;;N;;;;;\n10A85;OLD NORTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10A86;OLD NORTH ARABIAN LETTER ES-2;Lo;0;R;;;;;N;;;;;\n10A87;OLD NORTH ARABIAN LETTER REH;Lo;0;R;;;;;N;;;;;\n10A88;OLD NORTH ARABIAN LETTER BEH;Lo;0;R;;;;;N;;;;;\n10A89;OLD NORTH ARABIAN LETTER TEH;Lo;0;R;;;;;N;;;;;\n10A8A;OLD NORTH ARABIAN LETTER ES-1;Lo;0;R;;;;;N;;;;;\n10A8B;OLD NORTH ARABIAN LETTER KAF;Lo;0;R;;;;;N;;;;;\n10A8C;OLD NORTH ARABIAN LETTER NOON;Lo;0;R;;;;;N;;;;;\n10A8D;OLD NORTH ARABIAN LETTER KHAH;Lo;0;R;;;;;N;;;;;\n10A8E;OLD NORTH ARABIAN LETTER SAD;Lo;0;R;;;;;N;;;;;\n10A8F;OLD NORTH ARABIAN LETTER ES-3;Lo;0;R;;;;;N;;;;;\n10A90;OLD NORTH ARABIAN LETTER FEH;Lo;0;R;;;;;N;;;;;\n10A91;OLD NORTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;;\n10A92;OLD NORTH ARABIAN LETTER AIN;Lo;0;R;;;;;N;;;;;\n10A93;OLD NORTH ARABIAN LETTER DAD;Lo;0;R;;;;;N;;;;;\n10A94;OLD NORTH ARABIAN LETTER GEEM;Lo;0;R;;;;;N;;;;;\n10A95;OLD NORTH ARABIAN LETTER DAL;Lo;0;R;;;;;N;;;;;\n10A96;OLD NORTH ARABIAN LETTER GHAIN;Lo;0;R;;;;;N;;;;;\n10A97;OLD NORTH ARABIAN LETTER TAH;Lo;0;R;;;;;N;;;;;\n10A98;OLD NORTH ARABIAN LETTER ZAIN;Lo;0;R;;;;;N;;;;;\n10A99;OLD NORTH ARABIAN LETTER THAL;Lo;0;R;;;;;N;;;;;\n10A9A;OLD NORTH ARABIAN LETTER YEH;Lo;0;R;;;;;N;;;;;\n10A9B;OLD NORTH ARABIAN LETTER THEH;Lo;0;R;;;;;N;;;;;\n10A9C;OLD NORTH ARABIAN LETTER ZAH;Lo;0;R;;;;;N;;;;;\n10A9D;OLD NORTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10A9E;OLD NORTH ARABIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10A9F;OLD NORTH ARABIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10AC0;MANICHAEAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10AC1;MANICHAEAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10AC2;MANICHAEAN LETTER BHETH;Lo;0;R;;;;;N;;;;;\n10AC3;MANICHAEAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10AC4;MANICHAEAN LETTER GHIMEL;Lo;0;R;;;;;N;;;;;\n10AC5;MANICHAEAN LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10AC6;MANICHAEAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10AC7;MANICHAEAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10AC8;MANICHAEAN SIGN UD;So;0;R;;;;;N;;;;;\n10AC9;MANICHAEAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10ACA;MANICHAEAN LETTER ZHAYIN;Lo;0;R;;;;;N;;;;;\n10ACB;MANICHAEAN LETTER JAYIN;Lo;0;R;;;;;N;;;;;\n10ACC;MANICHAEAN LETTER JHAYIN;Lo;0;R;;;;;N;;;;;\n10ACD;MANICHAEAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n10ACE;MANICHAEAN LETTER TETH;Lo;0;R;;;;;N;;;;;\n10ACF;MANICHAEAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n10AD0;MANICHAEAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10AD1;MANICHAEAN LETTER XAPH;Lo;0;R;;;;;N;;;;;\n10AD2;MANICHAEAN LETTER KHAPH;Lo;0;R;;;;;N;;;;;\n10AD3;MANICHAEAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10AD4;MANICHAEAN LETTER DHAMEDH;Lo;0;R;;;;;N;;;;;\n10AD5;MANICHAEAN LETTER THAMEDH;Lo;0;R;;;;;N;;;;;\n10AD6;MANICHAEAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10AD7;MANICHAEAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10AD8;MANICHAEAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10AD9;MANICHAEAN LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10ADA;MANICHAEAN LETTER AAYIN;Lo;0;R;;;;;N;;;;;\n10ADB;MANICHAEAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10ADC;MANICHAEAN LETTER FE;Lo;0;R;;;;;N;;;;;\n10ADD;MANICHAEAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10ADE;MANICHAEAN LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10ADF;MANICHAEAN LETTER XOPH;Lo;0;R;;;;;N;;;;;\n10AE0;MANICHAEAN LETTER QHOPH;Lo;0;R;;;;;N;;;;;\n10AE1;MANICHAEAN LETTER RESH;Lo;0;R;;;;;N;;;;;\n10AE2;MANICHAEAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10AE3;MANICHAEAN LETTER SSHIN;Lo;0;R;;;;;N;;;;;\n10AE4;MANICHAEAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n10AE5;MANICHAEAN ABBREVIATION MARK ABOVE;Mn;230;NSM;;;;;N;;;;;\n10AE6;MANICHAEAN ABBREVIATION MARK BELOW;Mn;220;NSM;;;;;N;;;;;\n10AEB;MANICHAEAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10AEC;MANICHAEAN NUMBER FIVE;No;0;R;;;;5;N;;;;;\n10AED;MANICHAEAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10AEE;MANICHAEAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10AEF;MANICHAEAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10AF0;MANICHAEAN PUNCTUATION STAR;Po;0;R;;;;;N;;;;;\n10AF1;MANICHAEAN PUNCTUATION FLEURON;Po;0;R;;;;;N;;;;;\n10AF2;MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT;Po;0;R;;;;;N;;;;;\n10AF3;MANICHAEAN PUNCTUATION DOT WITHIN DOT;Po;0;R;;;;;N;;;;;\n10AF4;MANICHAEAN PUNCTUATION DOT;Po;0;R;;;;;N;;;;;\n10AF5;MANICHAEAN PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;;\n10AF6;MANICHAEAN PUNCTUATION LINE FILLER;Po;0;R;;;;;N;;;;;\n10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;;\n10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;;\n10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;;\n10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;;\n10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;;\n10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;;\n10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;;\n10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;;\n10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;;\n10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;;\n10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;;\n10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;;\n10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;;\n10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;;\n10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;;\n10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;;\n10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;;\n10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;;\n10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;;\n10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;;\n10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;;\n10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;;\n10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;;\n10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;;\n10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;;\n10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;;\n10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;;\n10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;;\n10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;;\n10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;;\n10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;;\n10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;;\n10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;;\n10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;;\n10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;;\n10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;;\n10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;;\n10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;;\n10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;;\n10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;;\n10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;;\n10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;;\n10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;;\n10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;;\n10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;;\n10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;;\n10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;;\n10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;;\n10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;;\n10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;;\n10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;;\n10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;;\n10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;;\n10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;;\n10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;;\n10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;;\n10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;;\n10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;;\n10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;\n10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;;\n10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;;\n10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;;\n10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;;\n10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;;\n10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;;\n10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;;\n10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;;\n10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;;\n10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;;\n10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;;\n10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;;\n10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;;\n10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;;\n10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;;\n10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n10B80;PSALTER PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10B81;PSALTER PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;;\n10B82;PSALTER PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10B83;PSALTER PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10B84;PSALTER PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;;\n10B85;PSALTER PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;;\n10B86;PSALTER PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10B87;PSALTER PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;;\n10B88;PSALTER PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;;\n10B89;PSALTER PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10B8A;PSALTER PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10B8B;PSALTER PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;;\n10B8C;PSALTER PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;;\n10B8D;PSALTER PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10B8E;PSALTER PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;;\n10B8F;PSALTER PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10B90;PSALTER PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10B91;PSALTER PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;;\n10B99;PSALTER PAHLAVI SECTION MARK;Po;0;R;;;;;N;;;;;\n10B9A;PSALTER PAHLAVI TURNED SECTION MARK;Po;0;R;;;;;N;;;;;\n10B9B;PSALTER PAHLAVI FOUR DOTS WITH CROSS;Po;0;R;;;;;N;;;;;\n10B9C;PSALTER PAHLAVI FOUR DOTS WITH DOT;Po;0;R;;;;;N;;;;;\n10BA9;PSALTER PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;;\n10BAA;PSALTER PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;;\n10BAB;PSALTER PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;;\n10BAC;PSALTER PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;;\n10BAD;PSALTER PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;;\n10BAE;PSALTER PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10BAF;PSALTER PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;;\n10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;;\n10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;;\n10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;;\n10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;;\n10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;;\n10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;;\n10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;;\n10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;;\n10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;;\n10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;;\n10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;;\n10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;;\n10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;;\n10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;;\n10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;;\n10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;;\n10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;;\n10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;;\n10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;;\n10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;;\n10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;;\n10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;;\n10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;;\n10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;;\n10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;;\n10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;;\n10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;;\n10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;;\n10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;;\n10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;;\n10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;;\n10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;;\n10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;;\n10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;;\n10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;;\n10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;;\n10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;;\n10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;;\n10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;;\n10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;;\n10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;;\n10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;;\n10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;;\n10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;;\n10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;;\n10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;;\n10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;;\n10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;;\n10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;;\n10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;;\n10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;;\n10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;;\n10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;;\n10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;;\n10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;;\n10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;;\n10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;;\n10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;;\n10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;;\n10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;;\n10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;;\n10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;;\n10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;;\n10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;;\n10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;;\n10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;;\n10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;;\n10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;;\n10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;;\n10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;;\n10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;;\n10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;;\n10C80;OLD HUNGARIAN CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10CC0;\n10C81;OLD HUNGARIAN CAPITAL LETTER AA;Lu;0;R;;;;;N;;;;10CC1;\n10C82;OLD HUNGARIAN CAPITAL LETTER EB;Lu;0;R;;;;;N;;;;10CC2;\n10C83;OLD HUNGARIAN CAPITAL LETTER AMB;Lu;0;R;;;;;N;;;;10CC3;\n10C84;OLD HUNGARIAN CAPITAL LETTER EC;Lu;0;R;;;;;N;;;;10CC4;\n10C85;OLD HUNGARIAN CAPITAL LETTER ENC;Lu;0;R;;;;;N;;;;10CC5;\n10C86;OLD HUNGARIAN CAPITAL LETTER ECS;Lu;0;R;;;;;N;;;;10CC6;\n10C87;OLD HUNGARIAN CAPITAL LETTER ED;Lu;0;R;;;;;N;;;;10CC7;\n10C88;OLD HUNGARIAN CAPITAL LETTER AND;Lu;0;R;;;;;N;;;;10CC8;\n10C89;OLD HUNGARIAN CAPITAL LETTER E;Lu;0;R;;;;;N;;;;10CC9;\n10C8A;OLD HUNGARIAN CAPITAL LETTER CLOSE E;Lu;0;R;;;;;N;;;;10CCA;\n10C8B;OLD HUNGARIAN CAPITAL LETTER EE;Lu;0;R;;;;;N;;;;10CCB;\n10C8C;OLD HUNGARIAN CAPITAL LETTER EF;Lu;0;R;;;;;N;;;;10CCC;\n10C8D;OLD HUNGARIAN CAPITAL LETTER EG;Lu;0;R;;;;;N;;;;10CCD;\n10C8E;OLD HUNGARIAN CAPITAL LETTER EGY;Lu;0;R;;;;;N;;;;10CCE;\n10C8F;OLD HUNGARIAN CAPITAL LETTER EH;Lu;0;R;;;;;N;;;;10CCF;\n10C90;OLD HUNGARIAN CAPITAL LETTER I;Lu;0;R;;;;;N;;;;10CD0;\n10C91;OLD HUNGARIAN CAPITAL LETTER II;Lu;0;R;;;;;N;;;;10CD1;\n10C92;OLD HUNGARIAN CAPITAL LETTER EJ;Lu;0;R;;;;;N;;;;10CD2;\n10C93;OLD HUNGARIAN CAPITAL LETTER EK;Lu;0;R;;;;;N;;;;10CD3;\n10C94;OLD HUNGARIAN CAPITAL LETTER AK;Lu;0;R;;;;;N;;;;10CD4;\n10C95;OLD HUNGARIAN CAPITAL LETTER UNK;Lu;0;R;;;;;N;;;;10CD5;\n10C96;OLD HUNGARIAN CAPITAL LETTER EL;Lu;0;R;;;;;N;;;;10CD6;\n10C97;OLD HUNGARIAN CAPITAL LETTER ELY;Lu;0;R;;;;;N;;;;10CD7;\n10C98;OLD HUNGARIAN CAPITAL LETTER EM;Lu;0;R;;;;;N;;;;10CD8;\n10C99;OLD HUNGARIAN CAPITAL LETTER EN;Lu;0;R;;;;;N;;;;10CD9;\n10C9A;OLD HUNGARIAN CAPITAL LETTER ENY;Lu;0;R;;;;;N;;;;10CDA;\n10C9B;OLD HUNGARIAN CAPITAL LETTER O;Lu;0;R;;;;;N;;;;10CDB;\n10C9C;OLD HUNGARIAN CAPITAL LETTER OO;Lu;0;R;;;;;N;;;;10CDC;\n10C9D;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;Lu;0;R;;;;;N;;;;10CDD;\n10C9E;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;Lu;0;R;;;;;N;;;;10CDE;\n10C9F;OLD HUNGARIAN CAPITAL LETTER OEE;Lu;0;R;;;;;N;;;;10CDF;\n10CA0;OLD HUNGARIAN CAPITAL LETTER EP;Lu;0;R;;;;;N;;;;10CE0;\n10CA1;OLD HUNGARIAN CAPITAL LETTER EMP;Lu;0;R;;;;;N;;;;10CE1;\n10CA2;OLD HUNGARIAN CAPITAL LETTER ER;Lu;0;R;;;;;N;;;;10CE2;\n10CA3;OLD HUNGARIAN CAPITAL LETTER SHORT ER;Lu;0;R;;;;;N;;;;10CE3;\n10CA4;OLD HUNGARIAN CAPITAL LETTER ES;Lu;0;R;;;;;N;;;;10CE4;\n10CA5;OLD HUNGARIAN CAPITAL LETTER ESZ;Lu;0;R;;;;;N;;;;10CE5;\n10CA6;OLD HUNGARIAN CAPITAL LETTER ET;Lu;0;R;;;;;N;;;;10CE6;\n10CA7;OLD HUNGARIAN CAPITAL LETTER ENT;Lu;0;R;;;;;N;;;;10CE7;\n10CA8;OLD HUNGARIAN CAPITAL LETTER ETY;Lu;0;R;;;;;N;;;;10CE8;\n10CA9;OLD HUNGARIAN CAPITAL LETTER ECH;Lu;0;R;;;;;N;;;;10CE9;\n10CAA;OLD HUNGARIAN CAPITAL LETTER U;Lu;0;R;;;;;N;;;;10CEA;\n10CAB;OLD HUNGARIAN CAPITAL LETTER UU;Lu;0;R;;;;;N;;;;10CEB;\n10CAC;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;Lu;0;R;;;;;N;;;;10CEC;\n10CAD;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;Lu;0;R;;;;;N;;;;10CED;\n10CAE;OLD HUNGARIAN CAPITAL LETTER EV;Lu;0;R;;;;;N;;;;10CEE;\n10CAF;OLD HUNGARIAN CAPITAL LETTER EZ;Lu;0;R;;;;;N;;;;10CEF;\n10CB0;OLD HUNGARIAN CAPITAL LETTER EZS;Lu;0;R;;;;;N;;;;10CF0;\n10CB1;OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;Lu;0;R;;;;;N;;;;10CF1;\n10CB2;OLD HUNGARIAN CAPITAL LETTER US;Lu;0;R;;;;;N;;;;10CF2;\n10CC0;OLD HUNGARIAN SMALL LETTER A;Ll;0;R;;;;;N;;;10C80;;10C80\n10CC1;OLD HUNGARIAN SMALL LETTER AA;Ll;0;R;;;;;N;;;10C81;;10C81\n10CC2;OLD HUNGARIAN SMALL LETTER EB;Ll;0;R;;;;;N;;;10C82;;10C82\n10CC3;OLD HUNGARIAN SMALL LETTER AMB;Ll;0;R;;;;;N;;;10C83;;10C83\n10CC4;OLD HUNGARIAN SMALL LETTER EC;Ll;0;R;;;;;N;;;10C84;;10C84\n10CC5;OLD HUNGARIAN SMALL LETTER ENC;Ll;0;R;;;;;N;;;10C85;;10C85\n10CC6;OLD HUNGARIAN SMALL LETTER ECS;Ll;0;R;;;;;N;;;10C86;;10C86\n10CC7;OLD HUNGARIAN SMALL LETTER ED;Ll;0;R;;;;;N;;;10C87;;10C87\n10CC8;OLD HUNGARIAN SMALL LETTER AND;Ll;0;R;;;;;N;;;10C88;;10C88\n10CC9;OLD HUNGARIAN SMALL LETTER E;Ll;0;R;;;;;N;;;10C89;;10C89\n10CCA;OLD HUNGARIAN SMALL LETTER CLOSE E;Ll;0;R;;;;;N;;;10C8A;;10C8A\n10CCB;OLD HUNGARIAN SMALL LETTER EE;Ll;0;R;;;;;N;;;10C8B;;10C8B\n10CCC;OLD HUNGARIAN SMALL LETTER EF;Ll;0;R;;;;;N;;;10C8C;;10C8C\n10CCD;OLD HUNGARIAN SMALL LETTER EG;Ll;0;R;;;;;N;;;10C8D;;10C8D\n10CCE;OLD HUNGARIAN SMALL LETTER EGY;Ll;0;R;;;;;N;;;10C8E;;10C8E\n10CCF;OLD HUNGARIAN SMALL LETTER EH;Ll;0;R;;;;;N;;;10C8F;;10C8F\n10CD0;OLD HUNGARIAN SMALL LETTER I;Ll;0;R;;;;;N;;;10C90;;10C90\n10CD1;OLD HUNGARIAN SMALL LETTER II;Ll;0;R;;;;;N;;;10C91;;10C91\n10CD2;OLD HUNGARIAN SMALL LETTER EJ;Ll;0;R;;;;;N;;;10C92;;10C92\n10CD3;OLD HUNGARIAN SMALL LETTER EK;Ll;0;R;;;;;N;;;10C93;;10C93\n10CD4;OLD HUNGARIAN SMALL LETTER AK;Ll;0;R;;;;;N;;;10C94;;10C94\n10CD5;OLD HUNGARIAN SMALL LETTER UNK;Ll;0;R;;;;;N;;;10C95;;10C95\n10CD6;OLD HUNGARIAN SMALL LETTER EL;Ll;0;R;;;;;N;;;10C96;;10C96\n10CD7;OLD HUNGARIAN SMALL LETTER ELY;Ll;0;R;;;;;N;;;10C97;;10C97\n10CD8;OLD HUNGARIAN SMALL LETTER EM;Ll;0;R;;;;;N;;;10C98;;10C98\n10CD9;OLD HUNGARIAN SMALL LETTER EN;Ll;0;R;;;;;N;;;10C99;;10C99\n10CDA;OLD HUNGARIAN SMALL LETTER ENY;Ll;0;R;;;;;N;;;10C9A;;10C9A\n10CDB;OLD HUNGARIAN SMALL LETTER O;Ll;0;R;;;;;N;;;10C9B;;10C9B\n10CDC;OLD HUNGARIAN SMALL LETTER OO;Ll;0;R;;;;;N;;;10C9C;;10C9C\n10CDD;OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE;Ll;0;R;;;;;N;;;10C9D;;10C9D\n10CDE;OLD HUNGARIAN SMALL LETTER RUDIMENTA OE;Ll;0;R;;;;;N;;;10C9E;;10C9E\n10CDF;OLD HUNGARIAN SMALL LETTER OEE;Ll;0;R;;;;;N;;;10C9F;;10C9F\n10CE0;OLD HUNGARIAN SMALL LETTER EP;Ll;0;R;;;;;N;;;10CA0;;10CA0\n10CE1;OLD HUNGARIAN SMALL LETTER EMP;Ll;0;R;;;;;N;;;10CA1;;10CA1\n10CE2;OLD HUNGARIAN SMALL LETTER ER;Ll;0;R;;;;;N;;;10CA2;;10CA2\n10CE3;OLD HUNGARIAN SMALL LETTER SHORT ER;Ll;0;R;;;;;N;;;10CA3;;10CA3\n10CE4;OLD HUNGARIAN SMALL LETTER ES;Ll;0;R;;;;;N;;;10CA4;;10CA4\n10CE5;OLD HUNGARIAN SMALL LETTER ESZ;Ll;0;R;;;;;N;;;10CA5;;10CA5\n10CE6;OLD HUNGARIAN SMALL LETTER ET;Ll;0;R;;;;;N;;;10CA6;;10CA6\n10CE7;OLD HUNGARIAN SMALL LETTER ENT;Ll;0;R;;;;;N;;;10CA7;;10CA7\n10CE8;OLD HUNGARIAN SMALL LETTER ETY;Ll;0;R;;;;;N;;;10CA8;;10CA8\n10CE9;OLD HUNGARIAN SMALL LETTER ECH;Ll;0;R;;;;;N;;;10CA9;;10CA9\n10CEA;OLD HUNGARIAN SMALL LETTER U;Ll;0;R;;;;;N;;;10CAA;;10CAA\n10CEB;OLD HUNGARIAN SMALL LETTER UU;Ll;0;R;;;;;N;;;10CAB;;10CAB\n10CEC;OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE;Ll;0;R;;;;;N;;;10CAC;;10CAC\n10CED;OLD HUNGARIAN SMALL LETTER RUDIMENTA UE;Ll;0;R;;;;;N;;;10CAD;;10CAD\n10CEE;OLD HUNGARIAN SMALL LETTER EV;Ll;0;R;;;;;N;;;10CAE;;10CAE\n10CEF;OLD HUNGARIAN SMALL LETTER EZ;Ll;0;R;;;;;N;;;10CAF;;10CAF\n10CF0;OLD HUNGARIAN SMALL LETTER EZS;Ll;0;R;;;;;N;;;10CB0;;10CB0\n10CF1;OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;Ll;0;R;;;;;N;;;10CB1;;10CB1\n10CF2;OLD HUNGARIAN SMALL LETTER US;Ll;0;R;;;;;N;;;10CB2;;10CB2\n10CFA;OLD HUNGARIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10CFB;OLD HUNGARIAN NUMBER FIVE;No;0;R;;;;5;N;;;;;\n10CFC;OLD HUNGARIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10CFD;OLD HUNGARIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;\n10CFE;OLD HUNGARIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10CFF;OLD HUNGARIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;\n10D00;HANIFI ROHINGYA LETTER A;Lo;0;AL;;;;;N;;;;;\n10D01;HANIFI ROHINGYA LETTER BA;Lo;0;AL;;;;;N;;;;;\n10D02;HANIFI ROHINGYA LETTER PA;Lo;0;AL;;;;;N;;;;;\n10D03;HANIFI ROHINGYA LETTER TA;Lo;0;AL;;;;;N;;;;;\n10D04;HANIFI ROHINGYA LETTER TTA;Lo;0;AL;;;;;N;;;;;\n10D05;HANIFI ROHINGYA LETTER JA;Lo;0;AL;;;;;N;;;;;\n10D06;HANIFI ROHINGYA LETTER CA;Lo;0;AL;;;;;N;;;;;\n10D07;HANIFI ROHINGYA LETTER HA;Lo;0;AL;;;;;N;;;;;\n10D08;HANIFI ROHINGYA LETTER KHA;Lo;0;AL;;;;;N;;;;;\n10D09;HANIFI ROHINGYA LETTER FA;Lo;0;AL;;;;;N;;;;;\n10D0A;HANIFI ROHINGYA LETTER DA;Lo;0;AL;;;;;N;;;;;\n10D0B;HANIFI ROHINGYA LETTER DDA;Lo;0;AL;;;;;N;;;;;\n10D0C;HANIFI ROHINGYA LETTER RA;Lo;0;AL;;;;;N;;;;;\n10D0D;HANIFI ROHINGYA LETTER RRA;Lo;0;AL;;;;;N;;;;;\n10D0E;HANIFI ROHINGYA LETTER ZA;Lo;0;AL;;;;;N;;;;;\n10D0F;HANIFI ROHINGYA LETTER SA;Lo;0;AL;;;;;N;;;;;\n10D10;HANIFI ROHINGYA LETTER SHA;Lo;0;AL;;;;;N;;;;;\n10D11;HANIFI ROHINGYA LETTER KA;Lo;0;AL;;;;;N;;;;;\n10D12;HANIFI ROHINGYA LETTER GA;Lo;0;AL;;;;;N;;;;;\n10D13;HANIFI ROHINGYA LETTER LA;Lo;0;AL;;;;;N;;;;;\n10D14;HANIFI ROHINGYA LETTER MA;Lo;0;AL;;;;;N;;;;;\n10D15;HANIFI ROHINGYA LETTER NA;Lo;0;AL;;;;;N;;;;;\n10D16;HANIFI ROHINGYA LETTER WA;Lo;0;AL;;;;;N;;;;;\n10D17;HANIFI ROHINGYA LETTER KINNA WA;Lo;0;AL;;;;;N;;;;;\n10D18;HANIFI ROHINGYA LETTER YA;Lo;0;AL;;;;;N;;;;;\n10D19;HANIFI ROHINGYA LETTER KINNA YA;Lo;0;AL;;;;;N;;;;;\n10D1A;HANIFI ROHINGYA LETTER NGA;Lo;0;AL;;;;;N;;;;;\n10D1B;HANIFI ROHINGYA LETTER NYA;Lo;0;AL;;;;;N;;;;;\n10D1C;HANIFI ROHINGYA LETTER VA;Lo;0;AL;;;;;N;;;;;\n10D1D;HANIFI ROHINGYA VOWEL A;Lo;0;AL;;;;;N;;;;;\n10D1E;HANIFI ROHINGYA VOWEL I;Lo;0;AL;;;;;N;;;;;\n10D1F;HANIFI ROHINGYA VOWEL U;Lo;0;AL;;;;;N;;;;;\n10D20;HANIFI ROHINGYA VOWEL E;Lo;0;AL;;;;;N;;;;;\n10D21;HANIFI ROHINGYA VOWEL O;Lo;0;AL;;;;;N;;;;;\n10D22;HANIFI ROHINGYA MARK SAKIN;Lo;0;AL;;;;;N;;;;;\n10D23;HANIFI ROHINGYA MARK NA KHONNA;Lo;0;AL;;;;;N;;;;;\n10D24;HANIFI ROHINGYA SIGN HARBAHAY;Mn;230;NSM;;;;;N;;;;;\n10D25;HANIFI ROHINGYA SIGN TAHALA;Mn;230;NSM;;;;;N;;;;;\n10D26;HANIFI ROHINGYA SIGN TANA;Mn;230;NSM;;;;;N;;;;;\n10D27;HANIFI ROHINGYA SIGN TASSI;Mn;230;NSM;;;;;N;;;;;\n10D30;HANIFI ROHINGYA DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;\n10D31;HANIFI ROHINGYA DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;\n10D32;HANIFI ROHINGYA DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;\n10D33;HANIFI ROHINGYA DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;\n10D34;HANIFI ROHINGYA DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;\n10D35;HANIFI ROHINGYA DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;\n10D36;HANIFI ROHINGYA DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;\n10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;\n10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;\n10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;\n10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;\n10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;\n10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;\n10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;;\n10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;;\n10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;;\n10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;;\n10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;;\n10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;;\n10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;;\n10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;;\n10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;;\n10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;;\n10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;;\n10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;;\n10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;;\n10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;;\n10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;;\n10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;;\n10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;;\n10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;;\n10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;;\n10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;;\n10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;;\n10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;;\n10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;;\n10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;;\n10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;;\n10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;\n10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;\n10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;\n10E80;YEZIDI LETTER ELIF;Lo;0;R;;;;;N;;;;;\n10E81;YEZIDI LETTER BE;Lo;0;R;;;;;N;;;;;\n10E82;YEZIDI LETTER PE;Lo;0;R;;;;;N;;;;;\n10E83;YEZIDI LETTER PHE;Lo;0;R;;;;;N;;;;;\n10E84;YEZIDI LETTER THE;Lo;0;R;;;;;N;;;;;\n10E85;YEZIDI LETTER SE;Lo;0;R;;;;;N;;;;;\n10E86;YEZIDI LETTER CIM;Lo;0;R;;;;;N;;;;;\n10E87;YEZIDI LETTER CHIM;Lo;0;R;;;;;N;;;;;\n10E88;YEZIDI LETTER CHHIM;Lo;0;R;;;;;N;;;;;\n10E89;YEZIDI LETTER HHA;Lo;0;R;;;;;N;;;;;\n10E8A;YEZIDI LETTER XA;Lo;0;R;;;;;N;;;;;\n10E8B;YEZIDI LETTER DAL;Lo;0;R;;;;;N;;;;;\n10E8C;YEZIDI LETTER ZAL;Lo;0;R;;;;;N;;;;;\n10E8D;YEZIDI LETTER RA;Lo;0;R;;;;;N;;;;;\n10E8E;YEZIDI LETTER RHA;Lo;0;R;;;;;N;;;;;\n10E8F;YEZIDI LETTER ZA;Lo;0;R;;;;;N;;;;;\n10E90;YEZIDI LETTER JA;Lo;0;R;;;;;N;;;;;\n10E91;YEZIDI LETTER SIN;Lo;0;R;;;;;N;;;;;\n10E92;YEZIDI LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10E93;YEZIDI LETTER SAD;Lo;0;R;;;;;N;;;;;\n10E94;YEZIDI LETTER DAD;Lo;0;R;;;;;N;;;;;\n10E95;YEZIDI LETTER TA;Lo;0;R;;;;;N;;;;;\n10E96;YEZIDI LETTER ZE;Lo;0;R;;;;;N;;;;;\n10E97;YEZIDI LETTER EYN;Lo;0;R;;;;;N;;;;;\n10E98;YEZIDI LETTER XHEYN;Lo;0;R;;;;;N;;;;;\n10E99;YEZIDI LETTER FA;Lo;0;R;;;;;N;;;;;\n10E9A;YEZIDI LETTER VA;Lo;0;R;;;;;N;;;;;\n10E9B;YEZIDI LETTER VA ALTERNATE FORM;Lo;0;R;;;;;N;;;;;\n10E9C;YEZIDI LETTER QAF;Lo;0;R;;;;;N;;;;;\n10E9D;YEZIDI LETTER KAF;Lo;0;R;;;;;N;;;;;\n10E9E;YEZIDI LETTER KHAF;Lo;0;R;;;;;N;;;;;\n10E9F;YEZIDI LETTER GAF;Lo;0;R;;;;;N;;;;;\n10EA0;YEZIDI LETTER LAM;Lo;0;R;;;;;N;;;;;\n10EA1;YEZIDI LETTER MIM;Lo;0;R;;;;;N;;;;;\n10EA2;YEZIDI LETTER NUN;Lo;0;R;;;;;N;;;;;\n10EA3;YEZIDI LETTER UM;Lo;0;R;;;;;N;;;;;\n10EA4;YEZIDI LETTER WAW;Lo;0;R;;;;;N;;;;;\n10EA5;YEZIDI LETTER OW;Lo;0;R;;;;;N;;;;;\n10EA6;YEZIDI LETTER EW;Lo;0;R;;;;;N;;;;;\n10EA7;YEZIDI LETTER HAY;Lo;0;R;;;;;N;;;;;\n10EA8;YEZIDI LETTER YOT;Lo;0;R;;;;;N;;;;;\n10EA9;YEZIDI LETTER ET;Lo;0;R;;;;;N;;;;;\n10EAB;YEZIDI COMBINING HAMZA MARK;Mn;230;NSM;;;;;N;;;;;\n10EAC;YEZIDI COMBINING MADDA MARK;Mn;230;NSM;;;;;N;;;;;\n10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;\n10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;\n10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;\n10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;\n10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10F03;OLD SOGDIAN LETTER FINAL BETH;Lo;0;R;;;;;N;;;;;\n10F04;OLD SOGDIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10F05;OLD SOGDIAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10F06;OLD SOGDIAN LETTER FINAL HE;Lo;0;R;;;;;N;;;;;\n10F07;OLD SOGDIAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10F08;OLD SOGDIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10F09;OLD SOGDIAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n10F0A;OLD SOGDIAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n10F0B;OLD SOGDIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10F0C;OLD SOGDIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10F0D;OLD SOGDIAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10F0E;OLD SOGDIAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10F0F;OLD SOGDIAN LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;\n10F10;OLD SOGDIAN LETTER FINAL NUN WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;\n10F11;OLD SOGDIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10F12;OLD SOGDIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10F13;OLD SOGDIAN LETTER ALTERNATE AYIN;Lo;0;R;;;;;N;;;;;\n10F14;OLD SOGDIAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10F15;OLD SOGDIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10F16;OLD SOGDIAN LETTER FINAL SADHE;Lo;0;R;;;;;N;;;;;\n10F17;OLD SOGDIAN LETTER FINAL SADHE WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;\n10F18;OLD SOGDIAN LETTER RESH-AYIN-DALETH;Lo;0;R;;;;;N;;;;;\n10F19;OLD SOGDIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10F1A;OLD SOGDIAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n10F1B;OLD SOGDIAN LETTER FINAL TAW;Lo;0;R;;;;;N;;;;;\n10F1C;OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;\n10F1D;OLD SOGDIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10F1E;OLD SOGDIAN NUMBER TWO;No;0;R;;;;2;N;;;;;\n10F1F;OLD SOGDIAN NUMBER THREE;No;0;R;;;;3;N;;;;;\n10F20;OLD SOGDIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;\n10F21;OLD SOGDIAN NUMBER FIVE;No;0;R;;;;5;N;;;;;\n10F22;OLD SOGDIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10F23;OLD SOGDIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10F24;OLD SOGDIAN NUMBER THIRTY;No;0;R;;;;30;N;;;;;\n10F25;OLD SOGDIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10F26;OLD SOGDIAN FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;\n10F27;OLD SOGDIAN LIGATURE AYIN-DALETH;Lo;0;R;;;;;N;;;;;\n10F30;SOGDIAN LETTER ALEPH;Lo;0;AL;;;;;N;;;;;\n10F31;SOGDIAN LETTER BETH;Lo;0;AL;;;;;N;;;;;\n10F32;SOGDIAN LETTER GIMEL;Lo;0;AL;;;;;N;;;;;\n10F33;SOGDIAN LETTER HE;Lo;0;AL;;;;;N;;;;;\n10F34;SOGDIAN LETTER WAW;Lo;0;AL;;;;;N;;;;;\n10F35;SOGDIAN LETTER ZAYIN;Lo;0;AL;;;;;N;;;;;\n10F36;SOGDIAN LETTER HETH;Lo;0;AL;;;;;N;;;;;\n10F37;SOGDIAN LETTER YODH;Lo;0;AL;;;;;N;;;;;\n10F38;SOGDIAN LETTER KAPH;Lo;0;AL;;;;;N;;;;;\n10F39;SOGDIAN LETTER LAMEDH;Lo;0;AL;;;;;N;;;;;\n10F3A;SOGDIAN LETTER MEM;Lo;0;AL;;;;;N;;;;;\n10F3B;SOGDIAN LETTER NUN;Lo;0;AL;;;;;N;;;;;\n10F3C;SOGDIAN LETTER SAMEKH;Lo;0;AL;;;;;N;;;;;\n10F3D;SOGDIAN LETTER AYIN;Lo;0;AL;;;;;N;;;;;\n10F3E;SOGDIAN LETTER PE;Lo;0;AL;;;;;N;;;;;\n10F3F;SOGDIAN LETTER SADHE;Lo;0;AL;;;;;N;;;;;\n10F40;SOGDIAN LETTER RESH-AYIN;Lo;0;AL;;;;;N;;;;;\n10F41;SOGDIAN LETTER SHIN;Lo;0;AL;;;;;N;;;;;\n10F42;SOGDIAN LETTER TAW;Lo;0;AL;;;;;N;;;;;\n10F43;SOGDIAN LETTER FETH;Lo;0;AL;;;;;N;;;;;\n10F44;SOGDIAN LETTER LESH;Lo;0;AL;;;;;N;;;;;\n10F45;SOGDIAN INDEPENDENT SHIN;Lo;0;AL;;;;;N;;;;;\n10F46;SOGDIAN COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;;\n10F47;SOGDIAN COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;\n10F48;SOGDIAN COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;\n10F49;SOGDIAN COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;\n10F4A;SOGDIAN COMBINING CURVE ABOVE;Mn;230;NSM;;;;;N;;;;;\n10F4B;SOGDIAN COMBINING CURVE BELOW;Mn;220;NSM;;;;;N;;;;;\n10F4C;SOGDIAN COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;;;;;\n10F4D;SOGDIAN COMBINING HOOK BELOW;Mn;220;NSM;;;;;N;;;;;\n10F4E;SOGDIAN COMBINING LONG HOOK BELOW;Mn;220;NSM;;;;;N;;;;;\n10F4F;SOGDIAN COMBINING RESH BELOW;Mn;220;NSM;;;;;N;;;;;\n10F50;SOGDIAN COMBINING STROKE BELOW;Mn;220;NSM;;;;;N;;;;;\n10F51;SOGDIAN NUMBER ONE;No;0;AL;;;;1;N;;;;;\n10F52;SOGDIAN NUMBER TEN;No;0;AL;;;;10;N;;;;;\n10F53;SOGDIAN NUMBER TWENTY;No;0;AL;;;;20;N;;;;;\n10F54;SOGDIAN NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;\n10F55;SOGDIAN PUNCTUATION TWO VERTICAL BARS;Po;0;AL;;;;;N;;;;;\n10F56;SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS;Po;0;AL;;;;;N;;;;;\n10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;\n10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;\n10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;\n10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;;\n10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;;\n10FB3;CHORASMIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10FB4;CHORASMIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10FB5;CHORASMIAN LETTER HE;Lo;0;R;;;;;N;;;;;\n10FB6;CHORASMIAN LETTER WAW;Lo;0;R;;;;;N;;;;;\n10FB7;CHORASMIAN LETTER CURLED WAW;Lo;0;R;;;;;N;;;;;\n10FB8;CHORASMIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10FB9;CHORASMIAN LETTER HETH;Lo;0;R;;;;;N;;;;;\n10FBA;CHORASMIAN LETTER YODH;Lo;0;R;;;;;N;;;;;\n10FBB;CHORASMIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10FBC;CHORASMIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10FBD;CHORASMIAN LETTER MEM;Lo;0;R;;;;;N;;;;;\n10FBE;CHORASMIAN LETTER NUN;Lo;0;R;;;;;N;;;;;\n10FBF;CHORASMIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10FC0;CHORASMIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10FC1;CHORASMIAN LETTER PE;Lo;0;R;;;;;N;;;;;\n10FC2;CHORASMIAN LETTER RESH;Lo;0;R;;;;;N;;;;;\n10FC3;CHORASMIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10FC4;CHORASMIAN LETTER TAW;Lo;0;R;;;;;N;;;;;\n10FC5;CHORASMIAN NUMBER ONE;No;0;R;;;;1;N;;;;;\n10FC6;CHORASMIAN NUMBER TWO;No;0;R;;;;2;N;;;;;\n10FC7;CHORASMIAN NUMBER THREE;No;0;R;;;;3;N;;;;;\n10FC8;CHORASMIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;\n10FC9;CHORASMIAN NUMBER TEN;No;0;R;;;;10;N;;;;;\n10FCA;CHORASMIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;\n10FCB;CHORASMIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;\n10FE0;ELYMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;\n10FE1;ELYMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;\n10FE2;ELYMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;\n10FE3;ELYMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;\n10FE4;ELYMAIC LETTER HE;Lo;0;R;;;;;N;;;;;\n10FE5;ELYMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;\n10FE6;ELYMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;\n10FE7;ELYMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;\n10FE8;ELYMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;\n10FE9;ELYMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;\n10FEA;ELYMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;\n10FEB;ELYMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;\n10FEC;ELYMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;\n10FED;ELYMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;\n10FEE;ELYMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;\n10FEF;ELYMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;\n10FF0;ELYMAIC LETTER PE;Lo;0;R;;;;;N;;;;;\n10FF1;ELYMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;\n10FF2;ELYMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;\n10FF3;ELYMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;\n10FF4;ELYMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;\n10FF5;ELYMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;\n10FF6;ELYMAIC LIGATURE ZAYIN-YODH;Lo;0;R;;;;;N;;;;;\n11000;BRAHMI SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;\n11001;BRAHMI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11002;BRAHMI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11003;BRAHMI SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n11004;BRAHMI SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n11005;BRAHMI LETTER A;Lo;0;L;;;;;N;;;;;\n11006;BRAHMI LETTER AA;Lo;0;L;;;;;N;;;;;\n11007;BRAHMI LETTER I;Lo;0;L;;;;;N;;;;;\n11008;BRAHMI LETTER II;Lo;0;L;;;;;N;;;;;\n11009;BRAHMI LETTER U;Lo;0;L;;;;;N;;;;;\n1100A;BRAHMI LETTER UU;Lo;0;L;;;;;N;;;;;\n1100B;BRAHMI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n1100C;BRAHMI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n1100D;BRAHMI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n1100E;BRAHMI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1100F;BRAHMI LETTER E;Lo;0;L;;;;;N;;;;;\n11010;BRAHMI LETTER AI;Lo;0;L;;;;;N;;;;;\n11011;BRAHMI LETTER O;Lo;0;L;;;;;N;;;;;\n11012;BRAHMI LETTER AU;Lo;0;L;;;;;N;;;;;\n11013;BRAHMI LETTER KA;Lo;0;L;;;;;N;;;;;\n11014;BRAHMI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11015;BRAHMI LETTER GA;Lo;0;L;;;;;N;;;;;\n11016;BRAHMI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11017;BRAHMI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11018;BRAHMI LETTER CA;Lo;0;L;;;;;N;;;;;\n11019;BRAHMI LETTER CHA;Lo;0;L;;;;;N;;;;;\n1101A;BRAHMI LETTER JA;Lo;0;L;;;;;N;;;;;\n1101B;BRAHMI LETTER JHA;Lo;0;L;;;;;N;;;;;\n1101C;BRAHMI LETTER NYA;Lo;0;L;;;;;N;;;;;\n1101D;BRAHMI LETTER TTA;Lo;0;L;;;;;N;;;;;\n1101E;BRAHMI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1101F;BRAHMI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11020;BRAHMI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11021;BRAHMI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11022;BRAHMI LETTER TA;Lo;0;L;;;;;N;;;;;\n11023;BRAHMI LETTER THA;Lo;0;L;;;;;N;;;;;\n11024;BRAHMI LETTER DA;Lo;0;L;;;;;N;;;;;\n11025;BRAHMI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11026;BRAHMI LETTER NA;Lo;0;L;;;;;N;;;;;\n11027;BRAHMI LETTER PA;Lo;0;L;;;;;N;;;;;\n11028;BRAHMI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11029;BRAHMI LETTER BA;Lo;0;L;;;;;N;;;;;\n1102A;BRAHMI LETTER BHA;Lo;0;L;;;;;N;;;;;\n1102B;BRAHMI LETTER MA;Lo;0;L;;;;;N;;;;;\n1102C;BRAHMI LETTER YA;Lo;0;L;;;;;N;;;;;\n1102D;BRAHMI LETTER RA;Lo;0;L;;;;;N;;;;;\n1102E;BRAHMI LETTER LA;Lo;0;L;;;;;N;;;;;\n1102F;BRAHMI LETTER VA;Lo;0;L;;;;;N;;;;;\n11030;BRAHMI LETTER SHA;Lo;0;L;;;;;N;;;;;\n11031;BRAHMI LETTER SSA;Lo;0;L;;;;;N;;;;;\n11032;BRAHMI LETTER SA;Lo;0;L;;;;;N;;;;;\n11033;BRAHMI LETTER HA;Lo;0;L;;;;;N;;;;;\n11034;BRAHMI LETTER LLA;Lo;0;L;;;;;N;;;;;\n11035;BRAHMI LETTER OLD TAMIL LLLA;Lo;0;L;;;;;N;;;;;\n11036;BRAHMI LETTER OLD TAMIL RRA;Lo;0;L;;;;;N;;;;;\n11037;BRAHMI LETTER OLD TAMIL NNNA;Lo;0;L;;;;;N;;;;;\n11038;BRAHMI VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\n11039;BRAHMI VOWEL SIGN BHATTIPROLU AA;Mn;0;NSM;;;;;N;;;;;\n1103A;BRAHMI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n1103B;BRAHMI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n1103C;BRAHMI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1103D;BRAHMI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n1103E;BRAHMI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n1103F;BRAHMI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n11040;BRAHMI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n11041;BRAHMI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n11042;BRAHMI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11043;BRAHMI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11044;BRAHMI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11045;BRAHMI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n11046;BRAHMI VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11047;BRAHMI DANDA;Po;0;L;;;;;N;;;;;\n11048;BRAHMI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n11049;BRAHMI PUNCTUATION DOT;Po;0;L;;;;;N;;;;;\n1104A;BRAHMI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;;\n1104B;BRAHMI PUNCTUATION LINE;Po;0;L;;;;;N;;;;;\n1104C;BRAHMI PUNCTUATION CRESCENT BAR;Po;0;L;;;;;N;;;;;\n1104D;BRAHMI PUNCTUATION LOTUS;Po;0;L;;;;;N;;;;;\n11052;BRAHMI NUMBER ONE;No;0;ON;;;1;1;N;;;;;\n11053;BRAHMI NUMBER TWO;No;0;ON;;;2;2;N;;;;;\n11054;BRAHMI NUMBER THREE;No;0;ON;;;3;3;N;;;;;\n11055;BRAHMI NUMBER FOUR;No;0;ON;;;4;4;N;;;;;\n11056;BRAHMI NUMBER FIVE;No;0;ON;;;5;5;N;;;;;\n11057;BRAHMI NUMBER SIX;No;0;ON;;;6;6;N;;;;;\n11058;BRAHMI NUMBER SEVEN;No;0;ON;;;7;7;N;;;;;\n11059;BRAHMI NUMBER EIGHT;No;0;ON;;;8;8;N;;;;;\n1105A;BRAHMI NUMBER NINE;No;0;ON;;;9;9;N;;;;;\n1105B;BRAHMI NUMBER TEN;No;0;ON;;;;10;N;;;;;\n1105C;BRAHMI NUMBER TWENTY;No;0;ON;;;;20;N;;;;;\n1105D;BRAHMI NUMBER THIRTY;No;0;ON;;;;30;N;;;;;\n1105E;BRAHMI NUMBER FORTY;No;0;ON;;;;40;N;;;;;\n1105F;BRAHMI NUMBER FIFTY;No;0;ON;;;;50;N;;;;;\n11060;BRAHMI NUMBER SIXTY;No;0;ON;;;;60;N;;;;;\n11061;BRAHMI NUMBER SEVENTY;No;0;ON;;;;70;N;;;;;\n11062;BRAHMI NUMBER EIGHTY;No;0;ON;;;;80;N;;;;;\n11063;BRAHMI NUMBER NINETY;No;0;ON;;;;90;N;;;;;\n11064;BRAHMI NUMBER ONE HUNDRED;No;0;ON;;;;100;N;;;;;\n11065;BRAHMI NUMBER ONE THOUSAND;No;0;ON;;;;1000;N;;;;;\n11066;BRAHMI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11067;BRAHMI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11068;BRAHMI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11069;BRAHMI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1106A;BRAHMI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1106B;BRAHMI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1106C;BRAHMI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;;\n11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;;\n11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;;\n11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;;\n11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;;\n11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;;\n11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;;\n11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;;\n1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;;\n1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;;\n1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;;\n1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;;\n1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;;\n1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;;\n11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;;\n11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;;\n11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;;\n1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;;\n1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;;\n1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;;\n1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;;\n1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;;\n110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;;\n110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;;\n110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;;\n110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;;\n110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;;\n110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;;\n110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;;\n110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;;\n110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;;\n110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;;\n110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;;\n110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;;\n110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;;\n110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;;\n110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;;\n110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;;\n110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;;\n110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;;\n110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;;\n110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;\n110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;\n110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;;\n110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;;\n110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;;\n110D2;SORA SOMPENG LETTER BAH;Lo;0;L;;;;;N;;;;;\n110D3;SORA SOMPENG LETTER CAH;Lo;0;L;;;;;N;;;;;\n110D4;SORA SOMPENG LETTER DAH;Lo;0;L;;;;;N;;;;;\n110D5;SORA SOMPENG LETTER GAH;Lo;0;L;;;;;N;;;;;\n110D6;SORA SOMPENG LETTER MAH;Lo;0;L;;;;;N;;;;;\n110D7;SORA SOMPENG LETTER NGAH;Lo;0;L;;;;;N;;;;;\n110D8;SORA SOMPENG LETTER LAH;Lo;0;L;;;;;N;;;;;\n110D9;SORA SOMPENG LETTER NAH;Lo;0;L;;;;;N;;;;;\n110DA;SORA SOMPENG LETTER VAH;Lo;0;L;;;;;N;;;;;\n110DB;SORA SOMPENG LETTER PAH;Lo;0;L;;;;;N;;;;;\n110DC;SORA SOMPENG LETTER YAH;Lo;0;L;;;;;N;;;;;\n110DD;SORA SOMPENG LETTER RAH;Lo;0;L;;;;;N;;;;;\n110DE;SORA SOMPENG LETTER HAH;Lo;0;L;;;;;N;;;;;\n110DF;SORA SOMPENG LETTER KAH;Lo;0;L;;;;;N;;;;;\n110E0;SORA SOMPENG LETTER JAH;Lo;0;L;;;;;N;;;;;\n110E1;SORA SOMPENG LETTER NYAH;Lo;0;L;;;;;N;;;;;\n110E2;SORA SOMPENG LETTER AH;Lo;0;L;;;;;N;;;;;\n110E3;SORA SOMPENG LETTER EEH;Lo;0;L;;;;;N;;;;;\n110E4;SORA SOMPENG LETTER IH;Lo;0;L;;;;;N;;;;;\n110E5;SORA SOMPENG LETTER UH;Lo;0;L;;;;;N;;;;;\n110E6;SORA SOMPENG LETTER OH;Lo;0;L;;;;;N;;;;;\n110E7;SORA SOMPENG LETTER EH;Lo;0;L;;;;;N;;;;;\n110E8;SORA SOMPENG LETTER MAE;Lo;0;L;;;;;N;;;;;\n110F0;SORA SOMPENG DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n110F1;SORA SOMPENG DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n110F2;SORA SOMPENG DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n110F3;SORA SOMPENG DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n110F4;SORA SOMPENG DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n110F5;SORA SOMPENG DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n110F6;SORA SOMPENG DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n110F7;SORA SOMPENG DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n110F8;SORA SOMPENG DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n110F9;SORA SOMPENG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11100;CHAKMA SIGN CANDRABINDU;Mn;230;NSM;;;;;N;;;;;\n11101;CHAKMA SIGN ANUSVARA;Mn;230;NSM;;;;;N;;;;;\n11102;CHAKMA SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;\n11103;CHAKMA LETTER AA;Lo;0;L;;;;;N;;;;;\n11104;CHAKMA LETTER I;Lo;0;L;;;;;N;;;;;\n11105;CHAKMA LETTER U;Lo;0;L;;;;;N;;;;;\n11106;CHAKMA LETTER E;Lo;0;L;;;;;N;;;;;\n11107;CHAKMA LETTER KAA;Lo;0;L;;;;;N;;;;;\n11108;CHAKMA LETTER KHAA;Lo;0;L;;;;;N;;;;;\n11109;CHAKMA LETTER GAA;Lo;0;L;;;;;N;;;;;\n1110A;CHAKMA LETTER GHAA;Lo;0;L;;;;;N;;;;;\n1110B;CHAKMA LETTER NGAA;Lo;0;L;;;;;N;;;;;\n1110C;CHAKMA LETTER CAA;Lo;0;L;;;;;N;;;;;\n1110D;CHAKMA LETTER CHAA;Lo;0;L;;;;;N;;;;;\n1110E;CHAKMA LETTER JAA;Lo;0;L;;;;;N;;;;;\n1110F;CHAKMA LETTER JHAA;Lo;0;L;;;;;N;;;;;\n11110;CHAKMA LETTER NYAA;Lo;0;L;;;;;N;;;;;\n11111;CHAKMA LETTER TTAA;Lo;0;L;;;;;N;;;;;\n11112;CHAKMA LETTER TTHAA;Lo;0;L;;;;;N;;;;;\n11113;CHAKMA LETTER DDAA;Lo;0;L;;;;;N;;;;;\n11114;CHAKMA LETTER DDHAA;Lo;0;L;;;;;N;;;;;\n11115;CHAKMA LETTER NNAA;Lo;0;L;;;;;N;;;;;\n11116;CHAKMA LETTER TAA;Lo;0;L;;;;;N;;;;;\n11117;CHAKMA LETTER THAA;Lo;0;L;;;;;N;;;;;\n11118;CHAKMA LETTER DAA;Lo;0;L;;;;;N;;;;;\n11119;CHAKMA LETTER DHAA;Lo;0;L;;;;;N;;;;;\n1111A;CHAKMA LETTER NAA;Lo;0;L;;;;;N;;;;;\n1111B;CHAKMA LETTER PAA;Lo;0;L;;;;;N;;;;;\n1111C;CHAKMA LETTER PHAA;Lo;0;L;;;;;N;;;;;\n1111D;CHAKMA LETTER BAA;Lo;0;L;;;;;N;;;;;\n1111E;CHAKMA LETTER BHAA;Lo;0;L;;;;;N;;;;;\n1111F;CHAKMA LETTER MAA;Lo;0;L;;;;;N;;;;;\n11120;CHAKMA LETTER YYAA;Lo;0;L;;;;;N;;;;;\n11121;CHAKMA LETTER YAA;Lo;0;L;;;;;N;;;;;\n11122;CHAKMA LETTER RAA;Lo;0;L;;;;;N;;;;;\n11123;CHAKMA LETTER LAA;Lo;0;L;;;;;N;;;;;\n11124;CHAKMA LETTER WAA;Lo;0;L;;;;;N;;;;;\n11125;CHAKMA LETTER SAA;Lo;0;L;;;;;N;;;;;\n11126;CHAKMA LETTER HAA;Lo;0;L;;;;;N;;;;;\n11127;CHAKMA VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;\n11128;CHAKMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11129;CHAKMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n1112A;CHAKMA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n1112B;CHAKMA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n1112C;CHAKMA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n1112D;CHAKMA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n1112E;CHAKMA VOWEL SIGN O;Mn;0;NSM;11131 11127;;;;N;;;;;\n1112F;CHAKMA VOWEL SIGN AU;Mn;0;NSM;11132 11127;;;;N;;;;;\n11130;CHAKMA VOWEL SIGN OI;Mn;0;NSM;;;;;N;;;;;\n11131;CHAKMA O MARK;Mn;0;NSM;;;;;N;;;;;\n11132;CHAKMA AU MARK;Mn;0;NSM;;;;;N;;;;;\n11133;CHAKMA VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11134;CHAKMA MAAYYAA;Mn;9;NSM;;;;;N;;;;;\n11136;CHAKMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11137;CHAKMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11138;CHAKMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11139;CHAKMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1113A;CHAKMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1113B;CHAKMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1113C;CHAKMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1113D;CHAKMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1113E;CHAKMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1113F;CHAKMA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11140;CHAKMA SECTION MARK;Po;0;L;;;;;N;;;;;\n11141;CHAKMA DANDA;Po;0;L;;;;;N;;;;;\n11142;CHAKMA DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n11143;CHAKMA QUESTION MARK;Po;0;L;;;;;N;;;;;\n11144;CHAKMA LETTER LHAA;Lo;0;L;;;;;N;;;;;\n11145;CHAKMA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11146;CHAKMA VOWEL SIGN EI;Mc;0;L;;;;;N;;;;;\n11147;CHAKMA LETTER VAA;Lo;0;L;;;;;N;;;;;\n11150;MAHAJANI LETTER A;Lo;0;L;;;;;N;;;;;\n11151;MAHAJANI LETTER I;Lo;0;L;;;;;N;;;;;\n11152;MAHAJANI LETTER U;Lo;0;L;;;;;N;;;;;\n11153;MAHAJANI LETTER E;Lo;0;L;;;;;N;;;;;\n11154;MAHAJANI LETTER O;Lo;0;L;;;;;N;;;;;\n11155;MAHAJANI LETTER KA;Lo;0;L;;;;;N;;;;;\n11156;MAHAJANI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11157;MAHAJANI LETTER GA;Lo;0;L;;;;;N;;;;;\n11158;MAHAJANI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11159;MAHAJANI LETTER CA;Lo;0;L;;;;;N;;;;;\n1115A;MAHAJANI LETTER CHA;Lo;0;L;;;;;N;;;;;\n1115B;MAHAJANI LETTER JA;Lo;0;L;;;;;N;;;;;\n1115C;MAHAJANI LETTER JHA;Lo;0;L;;;;;N;;;;;\n1115D;MAHAJANI LETTER NYA;Lo;0;L;;;;;N;;;;;\n1115E;MAHAJANI LETTER TTA;Lo;0;L;;;;;N;;;;;\n1115F;MAHAJANI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11160;MAHAJANI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11161;MAHAJANI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11162;MAHAJANI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11163;MAHAJANI LETTER TA;Lo;0;L;;;;;N;;;;;\n11164;MAHAJANI LETTER THA;Lo;0;L;;;;;N;;;;;\n11165;MAHAJANI LETTER DA;Lo;0;L;;;;;N;;;;;\n11166;MAHAJANI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11167;MAHAJANI LETTER NA;Lo;0;L;;;;;N;;;;;\n11168;MAHAJANI LETTER PA;Lo;0;L;;;;;N;;;;;\n11169;MAHAJANI LETTER PHA;Lo;0;L;;;;;N;;;;;\n1116A;MAHAJANI LETTER BA;Lo;0;L;;;;;N;;;;;\n1116B;MAHAJANI LETTER BHA;Lo;0;L;;;;;N;;;;;\n1116C;MAHAJANI LETTER MA;Lo;0;L;;;;;N;;;;;\n1116D;MAHAJANI LETTER RA;Lo;0;L;;;;;N;;;;;\n1116E;MAHAJANI LETTER LA;Lo;0;L;;;;;N;;;;;\n1116F;MAHAJANI LETTER VA;Lo;0;L;;;;;N;;;;;\n11170;MAHAJANI LETTER SA;Lo;0;L;;;;;N;;;;;\n11171;MAHAJANI LETTER HA;Lo;0;L;;;;;N;;;;;\n11172;MAHAJANI LETTER RRA;Lo;0;L;;;;;N;;;;;\n11173;MAHAJANI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n11174;MAHAJANI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n11175;MAHAJANI SECTION MARK;Po;0;L;;;;;N;;;;;\n11176;MAHAJANI LIGATURE SHRI;Lo;0;L;;;;;N;;;;;\n11180;SHARADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11181;SHARADA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11182;SHARADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11183;SHARADA LETTER A;Lo;0;L;;;;;N;;;;;\n11184;SHARADA LETTER AA;Lo;0;L;;;;;N;;;;;\n11185;SHARADA LETTER I;Lo;0;L;;;;;N;;;;;\n11186;SHARADA LETTER II;Lo;0;L;;;;;N;;;;;\n11187;SHARADA LETTER U;Lo;0;L;;;;;N;;;;;\n11188;SHARADA LETTER UU;Lo;0;L;;;;;N;;;;;\n11189;SHARADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n1118A;SHARADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n1118B;SHARADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n1118C;SHARADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1118D;SHARADA LETTER E;Lo;0;L;;;;;N;;;;;\n1118E;SHARADA LETTER AI;Lo;0;L;;;;;N;;;;;\n1118F;SHARADA LETTER O;Lo;0;L;;;;;N;;;;;\n11190;SHARADA LETTER AU;Lo;0;L;;;;;N;;;;;\n11191;SHARADA LETTER KA;Lo;0;L;;;;;N;;;;;\n11192;SHARADA LETTER KHA;Lo;0;L;;;;;N;;;;;\n11193;SHARADA LETTER GA;Lo;0;L;;;;;N;;;;;\n11194;SHARADA LETTER GHA;Lo;0;L;;;;;N;;;;;\n11195;SHARADA LETTER NGA;Lo;0;L;;;;;N;;;;;\n11196;SHARADA LETTER CA;Lo;0;L;;;;;N;;;;;\n11197;SHARADA LETTER CHA;Lo;0;L;;;;;N;;;;;\n11198;SHARADA LETTER JA;Lo;0;L;;;;;N;;;;;\n11199;SHARADA LETTER JHA;Lo;0;L;;;;;N;;;;;\n1119A;SHARADA LETTER NYA;Lo;0;L;;;;;N;;;;;\n1119B;SHARADA LETTER TTA;Lo;0;L;;;;;N;;;;;\n1119C;SHARADA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1119D;SHARADA LETTER DDA;Lo;0;L;;;;;N;;;;;\n1119E;SHARADA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1119F;SHARADA LETTER NNA;Lo;0;L;;;;;N;;;;;\n111A0;SHARADA LETTER TA;Lo;0;L;;;;;N;;;;;\n111A1;SHARADA LETTER THA;Lo;0;L;;;;;N;;;;;\n111A2;SHARADA LETTER DA;Lo;0;L;;;;;N;;;;;\n111A3;SHARADA LETTER DHA;Lo;0;L;;;;;N;;;;;\n111A4;SHARADA LETTER NA;Lo;0;L;;;;;N;;;;;\n111A5;SHARADA LETTER PA;Lo;0;L;;;;;N;;;;;\n111A6;SHARADA LETTER PHA;Lo;0;L;;;;;N;;;;;\n111A7;SHARADA LETTER BA;Lo;0;L;;;;;N;;;;;\n111A8;SHARADA LETTER BHA;Lo;0;L;;;;;N;;;;;\n111A9;SHARADA LETTER MA;Lo;0;L;;;;;N;;;;;\n111AA;SHARADA LETTER YA;Lo;0;L;;;;;N;;;;;\n111AB;SHARADA LETTER RA;Lo;0;L;;;;;N;;;;;\n111AC;SHARADA LETTER LA;Lo;0;L;;;;;N;;;;;\n111AD;SHARADA LETTER LLA;Lo;0;L;;;;;N;;;;;\n111AE;SHARADA LETTER VA;Lo;0;L;;;;;N;;;;;\n111AF;SHARADA LETTER SHA;Lo;0;L;;;;;N;;;;;\n111B0;SHARADA LETTER SSA;Lo;0;L;;;;;N;;;;;\n111B1;SHARADA LETTER SA;Lo;0;L;;;;;N;;;;;\n111B2;SHARADA LETTER HA;Lo;0;L;;;;;N;;;;;\n111B3;SHARADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n111B4;SHARADA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n111B5;SHARADA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n111B6;SHARADA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n111B7;SHARADA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n111B8;SHARADA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n111B9;SHARADA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n111BA;SHARADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n111BB;SHARADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n111BC;SHARADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n111BD;SHARADA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n111BE;SHARADA VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n111BF;SHARADA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n111C0;SHARADA SIGN VIRAMA;Mc;9;L;;;;;N;;;;;\n111C1;SHARADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n111C2;SHARADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n111C3;SHARADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n111C4;SHARADA OM;Lo;0;L;;;;;N;;;;;\n111C5;SHARADA DANDA;Po;0;L;;;;;N;;;;;\n111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;;\n111C9;SHARADA SANDHI MARK;Mn;0;NSM;;;;;N;;;;;\n111CA;SHARADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;;\n111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;;\n111CD;SHARADA SUTRA MARK;Po;0;L;;;;;N;;;;;\n111CE;SHARADA VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;\n111CF;SHARADA SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n111D2;SHARADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n111D3;SHARADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n111D4;SHARADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n111D5;SHARADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n111D6;SHARADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n111D7;SHARADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n111D8;SHARADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n111D9;SHARADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n111DA;SHARADA EKAM;Lo;0;L;;;;;N;;;;;\n111DB;SHARADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\n111DC;SHARADA HEADSTROKE;Lo;0;L;;;;;N;;;;;\n111DD;SHARADA CONTINUATION SIGN;Po;0;L;;;;;N;;;;;\n111DE;SHARADA SECTION MARK-1;Po;0;L;;;;;N;;;;;\n111DF;SHARADA SECTION MARK-2;Po;0;L;;;;;N;;;;;\n111E1;SINHALA ARCHAIC DIGIT ONE;No;0;L;;;;1;N;;;;;\n111E2;SINHALA ARCHAIC DIGIT TWO;No;0;L;;;;2;N;;;;;\n111E3;SINHALA ARCHAIC DIGIT THREE;No;0;L;;;;3;N;;;;;\n111E4;SINHALA ARCHAIC DIGIT FOUR;No;0;L;;;;4;N;;;;;\n111E5;SINHALA ARCHAIC DIGIT FIVE;No;0;L;;;;5;N;;;;;\n111E6;SINHALA ARCHAIC DIGIT SIX;No;0;L;;;;6;N;;;;;\n111E7;SINHALA ARCHAIC DIGIT SEVEN;No;0;L;;;;7;N;;;;;\n111E8;SINHALA ARCHAIC DIGIT EIGHT;No;0;L;;;;8;N;;;;;\n111E9;SINHALA ARCHAIC DIGIT NINE;No;0;L;;;;9;N;;;;;\n111EA;SINHALA ARCHAIC NUMBER TEN;No;0;L;;;;10;N;;;;;\n111EB;SINHALA ARCHAIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n111EC;SINHALA ARCHAIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;\n111ED;SINHALA ARCHAIC NUMBER FORTY;No;0;L;;;;40;N;;;;;\n111EE;SINHALA ARCHAIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;\n111EF;SINHALA ARCHAIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;\n111F0;SINHALA ARCHAIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;\n111F1;SINHALA ARCHAIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;\n111F2;SINHALA ARCHAIC NUMBER NINETY;No;0;L;;;;90;N;;;;;\n111F3;SINHALA ARCHAIC NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;\n111F4;SINHALA ARCHAIC NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;\n11200;KHOJKI LETTER A;Lo;0;L;;;;;N;;;;;\n11201;KHOJKI LETTER AA;Lo;0;L;;;;;N;;;;;\n11202;KHOJKI LETTER I;Lo;0;L;;;;;N;;;;;\n11203;KHOJKI LETTER U;Lo;0;L;;;;;N;;;;;\n11204;KHOJKI LETTER E;Lo;0;L;;;;;N;;;;;\n11205;KHOJKI LETTER AI;Lo;0;L;;;;;N;;;;;\n11206;KHOJKI LETTER O;Lo;0;L;;;;;N;;;;;\n11207;KHOJKI LETTER AU;Lo;0;L;;;;;N;;;;;\n11208;KHOJKI LETTER KA;Lo;0;L;;;;;N;;;;;\n11209;KHOJKI LETTER KHA;Lo;0;L;;;;;N;;;;;\n1120A;KHOJKI LETTER GA;Lo;0;L;;;;;N;;;;;\n1120B;KHOJKI LETTER GGA;Lo;0;L;;;;;N;;;;;\n1120C;KHOJKI LETTER GHA;Lo;0;L;;;;;N;;;;;\n1120D;KHOJKI LETTER NGA;Lo;0;L;;;;;N;;;;;\n1120E;KHOJKI LETTER CA;Lo;0;L;;;;;N;;;;;\n1120F;KHOJKI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11210;KHOJKI LETTER JA;Lo;0;L;;;;;N;;;;;\n11211;KHOJKI LETTER JJA;Lo;0;L;;;;;N;;;;;\n11213;KHOJKI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11214;KHOJKI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11215;KHOJKI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11216;KHOJKI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11217;KHOJKI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11218;KHOJKI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11219;KHOJKI LETTER TA;Lo;0;L;;;;;N;;;;;\n1121A;KHOJKI LETTER THA;Lo;0;L;;;;;N;;;;;\n1121B;KHOJKI LETTER DA;Lo;0;L;;;;;N;;;;;\n1121C;KHOJKI LETTER DDDA;Lo;0;L;;;;;N;;;;;\n1121D;KHOJKI LETTER DHA;Lo;0;L;;;;;N;;;;;\n1121E;KHOJKI LETTER NA;Lo;0;L;;;;;N;;;;;\n1121F;KHOJKI LETTER PA;Lo;0;L;;;;;N;;;;;\n11220;KHOJKI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11221;KHOJKI LETTER BA;Lo;0;L;;;;;N;;;;;\n11222;KHOJKI LETTER BBA;Lo;0;L;;;;;N;;;;;\n11223;KHOJKI LETTER BHA;Lo;0;L;;;;;N;;;;;\n11224;KHOJKI LETTER MA;Lo;0;L;;;;;N;;;;;\n11225;KHOJKI LETTER YA;Lo;0;L;;;;;N;;;;;\n11226;KHOJKI LETTER RA;Lo;0;L;;;;;N;;;;;\n11227;KHOJKI LETTER LA;Lo;0;L;;;;;N;;;;;\n11228;KHOJKI LETTER VA;Lo;0;L;;;;;N;;;;;\n11229;KHOJKI LETTER SA;Lo;0;L;;;;;N;;;;;\n1122A;KHOJKI LETTER HA;Lo;0;L;;;;;N;;;;;\n1122B;KHOJKI LETTER LLA;Lo;0;L;;;;;N;;;;;\n1122C;KHOJKI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n1122D;KHOJKI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n1122E;KHOJKI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n1122F;KHOJKI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11230;KHOJKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11231;KHOJKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11232;KHOJKI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n11233;KHOJKI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n11234;KHOJKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11235;KHOJKI SIGN VIRAMA;Mc;9;L;;;;;N;;;;;\n11236;KHOJKI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n11237;KHOJKI SIGN SHADDA;Mn;0;NSM;;;;;N;;;;;\n11238;KHOJKI DANDA;Po;0;L;;;;;N;;;;;\n11239;KHOJKI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n1123A;KHOJKI WORD SEPARATOR;Po;0;L;;;;;N;;;;;\n1123B;KHOJKI SECTION MARK;Po;0;L;;;;;N;;;;;\n1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;\n1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;\n11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;;\n11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;;\n11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;;\n11283;MULTANI LETTER E;Lo;0;L;;;;;N;;;;;\n11284;MULTANI LETTER KA;Lo;0;L;;;;;N;;;;;\n11285;MULTANI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11286;MULTANI LETTER GA;Lo;0;L;;;;;N;;;;;\n11288;MULTANI LETTER GHA;Lo;0;L;;;;;N;;;;;\n1128A;MULTANI LETTER CA;Lo;0;L;;;;;N;;;;;\n1128B;MULTANI LETTER CHA;Lo;0;L;;;;;N;;;;;\n1128C;MULTANI LETTER JA;Lo;0;L;;;;;N;;;;;\n1128D;MULTANI LETTER JJA;Lo;0;L;;;;;N;;;;;\n1128F;MULTANI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11290;MULTANI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11291;MULTANI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11292;MULTANI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11293;MULTANI LETTER DDDA;Lo;0;L;;;;;N;;;;;\n11294;MULTANI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11295;MULTANI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11296;MULTANI LETTER TA;Lo;0;L;;;;;N;;;;;\n11297;MULTANI LETTER THA;Lo;0;L;;;;;N;;;;;\n11298;MULTANI LETTER DA;Lo;0;L;;;;;N;;;;;\n11299;MULTANI LETTER DHA;Lo;0;L;;;;;N;;;;;\n1129A;MULTANI LETTER NA;Lo;0;L;;;;;N;;;;;\n1129B;MULTANI LETTER PA;Lo;0;L;;;;;N;;;;;\n1129C;MULTANI LETTER PHA;Lo;0;L;;;;;N;;;;;\n1129D;MULTANI LETTER BA;Lo;0;L;;;;;N;;;;;\n1129F;MULTANI LETTER BHA;Lo;0;L;;;;;N;;;;;\n112A0;MULTANI LETTER MA;Lo;0;L;;;;;N;;;;;\n112A1;MULTANI LETTER YA;Lo;0;L;;;;;N;;;;;\n112A2;MULTANI LETTER RA;Lo;0;L;;;;;N;;;;;\n112A3;MULTANI LETTER LA;Lo;0;L;;;;;N;;;;;\n112A4;MULTANI LETTER VA;Lo;0;L;;;;;N;;;;;\n112A5;MULTANI LETTER SA;Lo;0;L;;;;;N;;;;;\n112A6;MULTANI LETTER HA;Lo;0;L;;;;;N;;;;;\n112A7;MULTANI LETTER RRA;Lo;0;L;;;;;N;;;;;\n112A8;MULTANI LETTER RHA;Lo;0;L;;;;;N;;;;;\n112A9;MULTANI SECTION MARK;Po;0;L;;;;;N;;;;;\n112B0;KHUDAWADI LETTER A;Lo;0;L;;;;;N;;;;;\n112B1;KHUDAWADI LETTER AA;Lo;0;L;;;;;N;;;;;\n112B2;KHUDAWADI LETTER I;Lo;0;L;;;;;N;;;;;\n112B3;KHUDAWADI LETTER II;Lo;0;L;;;;;N;;;;;\n112B4;KHUDAWADI LETTER U;Lo;0;L;;;;;N;;;;;\n112B5;KHUDAWADI LETTER UU;Lo;0;L;;;;;N;;;;;\n112B6;KHUDAWADI LETTER E;Lo;0;L;;;;;N;;;;;\n112B7;KHUDAWADI LETTER AI;Lo;0;L;;;;;N;;;;;\n112B8;KHUDAWADI LETTER O;Lo;0;L;;;;;N;;;;;\n112B9;KHUDAWADI LETTER AU;Lo;0;L;;;;;N;;;;;\n112BA;KHUDAWADI LETTER KA;Lo;0;L;;;;;N;;;;;\n112BB;KHUDAWADI LETTER KHA;Lo;0;L;;;;;N;;;;;\n112BC;KHUDAWADI LETTER GA;Lo;0;L;;;;;N;;;;;\n112BD;KHUDAWADI LETTER GGA;Lo;0;L;;;;;N;;;;;\n112BE;KHUDAWADI LETTER GHA;Lo;0;L;;;;;N;;;;;\n112BF;KHUDAWADI LETTER NGA;Lo;0;L;;;;;N;;;;;\n112C0;KHUDAWADI LETTER CA;Lo;0;L;;;;;N;;;;;\n112C1;KHUDAWADI LETTER CHA;Lo;0;L;;;;;N;;;;;\n112C2;KHUDAWADI LETTER JA;Lo;0;L;;;;;N;;;;;\n112C3;KHUDAWADI LETTER JJA;Lo;0;L;;;;;N;;;;;\n112C4;KHUDAWADI LETTER JHA;Lo;0;L;;;;;N;;;;;\n112C5;KHUDAWADI LETTER NYA;Lo;0;L;;;;;N;;;;;\n112C6;KHUDAWADI LETTER TTA;Lo;0;L;;;;;N;;;;;\n112C7;KHUDAWADI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n112C8;KHUDAWADI LETTER DDA;Lo;0;L;;;;;N;;;;;\n112C9;KHUDAWADI LETTER DDDA;Lo;0;L;;;;;N;;;;;\n112CA;KHUDAWADI LETTER RRA;Lo;0;L;;;;;N;;;;;\n112CB;KHUDAWADI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n112CC;KHUDAWADI LETTER NNA;Lo;0;L;;;;;N;;;;;\n112CD;KHUDAWADI LETTER TA;Lo;0;L;;;;;N;;;;;\n112CE;KHUDAWADI LETTER THA;Lo;0;L;;;;;N;;;;;\n112CF;KHUDAWADI LETTER DA;Lo;0;L;;;;;N;;;;;\n112D0;KHUDAWADI LETTER DHA;Lo;0;L;;;;;N;;;;;\n112D1;KHUDAWADI LETTER NA;Lo;0;L;;;;;N;;;;;\n112D2;KHUDAWADI LETTER PA;Lo;0;L;;;;;N;;;;;\n112D3;KHUDAWADI LETTER PHA;Lo;0;L;;;;;N;;;;;\n112D4;KHUDAWADI LETTER BA;Lo;0;L;;;;;N;;;;;\n112D5;KHUDAWADI LETTER BBA;Lo;0;L;;;;;N;;;;;\n112D6;KHUDAWADI LETTER BHA;Lo;0;L;;;;;N;;;;;\n112D7;KHUDAWADI LETTER MA;Lo;0;L;;;;;N;;;;;\n112D8;KHUDAWADI LETTER YA;Lo;0;L;;;;;N;;;;;\n112D9;KHUDAWADI LETTER RA;Lo;0;L;;;;;N;;;;;\n112DA;KHUDAWADI LETTER LA;Lo;0;L;;;;;N;;;;;\n112DB;KHUDAWADI LETTER VA;Lo;0;L;;;;;N;;;;;\n112DC;KHUDAWADI LETTER SHA;Lo;0;L;;;;;N;;;;;\n112DD;KHUDAWADI LETTER SA;Lo;0;L;;;;;N;;;;;\n112DE;KHUDAWADI LETTER HA;Lo;0;L;;;;;N;;;;;\n112DF;KHUDAWADI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n112E0;KHUDAWADI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n112E1;KHUDAWADI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n112E2;KHUDAWADI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n112E3;KHUDAWADI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n112E4;KHUDAWADI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n112E5;KHUDAWADI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n112E6;KHUDAWADI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n112E7;KHUDAWADI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n112E8;KHUDAWADI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n112E9;KHUDAWADI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n112EA;KHUDAWADI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n112F0;KHUDAWADI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n112F1;KHUDAWADI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n112F2;KHUDAWADI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n112F3;KHUDAWADI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n112F4;KHUDAWADI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n112F5;KHUDAWADI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n112F6;KHUDAWADI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n112F7;KHUDAWADI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n112F8;KHUDAWADI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n112F9;KHUDAWADI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11300;GRANTHA SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;\n11301;GRANTHA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11302;GRANTHA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n11303;GRANTHA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11305;GRANTHA LETTER A;Lo;0;L;;;;;N;;;;;\n11306;GRANTHA LETTER AA;Lo;0;L;;;;;N;;;;;\n11307;GRANTHA LETTER I;Lo;0;L;;;;;N;;;;;\n11308;GRANTHA LETTER II;Lo;0;L;;;;;N;;;;;\n11309;GRANTHA LETTER U;Lo;0;L;;;;;N;;;;;\n1130A;GRANTHA LETTER UU;Lo;0;L;;;;;N;;;;;\n1130B;GRANTHA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n1130C;GRANTHA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n1130F;GRANTHA LETTER EE;Lo;0;L;;;;;N;;;;;\n11310;GRANTHA LETTER AI;Lo;0;L;;;;;N;;;;;\n11313;GRANTHA LETTER OO;Lo;0;L;;;;;N;;;;;\n11314;GRANTHA LETTER AU;Lo;0;L;;;;;N;;;;;\n11315;GRANTHA LETTER KA;Lo;0;L;;;;;N;;;;;\n11316;GRANTHA LETTER KHA;Lo;0;L;;;;;N;;;;;\n11317;GRANTHA LETTER GA;Lo;0;L;;;;;N;;;;;\n11318;GRANTHA LETTER GHA;Lo;0;L;;;;;N;;;;;\n11319;GRANTHA LETTER NGA;Lo;0;L;;;;;N;;;;;\n1131A;GRANTHA LETTER CA;Lo;0;L;;;;;N;;;;;\n1131B;GRANTHA LETTER CHA;Lo;0;L;;;;;N;;;;;\n1131C;GRANTHA LETTER JA;Lo;0;L;;;;;N;;;;;\n1131D;GRANTHA LETTER JHA;Lo;0;L;;;;;N;;;;;\n1131E;GRANTHA LETTER NYA;Lo;0;L;;;;;N;;;;;\n1131F;GRANTHA LETTER TTA;Lo;0;L;;;;;N;;;;;\n11320;GRANTHA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11321;GRANTHA LETTER DDA;Lo;0;L;;;;;N;;;;;\n11322;GRANTHA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11323;GRANTHA LETTER NNA;Lo;0;L;;;;;N;;;;;\n11324;GRANTHA LETTER TA;Lo;0;L;;;;;N;;;;;\n11325;GRANTHA LETTER THA;Lo;0;L;;;;;N;;;;;\n11326;GRANTHA LETTER DA;Lo;0;L;;;;;N;;;;;\n11327;GRANTHA LETTER DHA;Lo;0;L;;;;;N;;;;;\n11328;GRANTHA LETTER NA;Lo;0;L;;;;;N;;;;;\n1132A;GRANTHA LETTER PA;Lo;0;L;;;;;N;;;;;\n1132B;GRANTHA LETTER PHA;Lo;0;L;;;;;N;;;;;\n1132C;GRANTHA LETTER BA;Lo;0;L;;;;;N;;;;;\n1132D;GRANTHA LETTER BHA;Lo;0;L;;;;;N;;;;;\n1132E;GRANTHA LETTER MA;Lo;0;L;;;;;N;;;;;\n1132F;GRANTHA LETTER YA;Lo;0;L;;;;;N;;;;;\n11330;GRANTHA LETTER RA;Lo;0;L;;;;;N;;;;;\n11332;GRANTHA LETTER LA;Lo;0;L;;;;;N;;;;;\n11333;GRANTHA LETTER LLA;Lo;0;L;;;;;N;;;;;\n11335;GRANTHA LETTER VA;Lo;0;L;;;;;N;;;;;\n11336;GRANTHA LETTER SHA;Lo;0;L;;;;;N;;;;;\n11337;GRANTHA LETTER SSA;Lo;0;L;;;;;N;;;;;\n11338;GRANTHA LETTER SA;Lo;0;L;;;;;N;;;;;\n11339;GRANTHA LETTER HA;Lo;0;L;;;;;N;;;;;\n1133B;COMBINING BINDU BELOW;Mn;7;NSM;;;;;N;;;;;\n1133C;GRANTHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n1133D;GRANTHA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n1133E;GRANTHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n1133F;GRANTHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11340;GRANTHA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n11341;GRANTHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n11342;GRANTHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n11343;GRANTHA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;\n11344;GRANTHA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;\n11347;GRANTHA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;\n11348;GRANTHA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n1134B;GRANTHA VOWEL SIGN OO;Mc;0;L;11347 1133E;;;;N;;;;;\n1134C;GRANTHA VOWEL SIGN AU;Mc;0;L;11347 11357;;;;N;;;;;\n1134D;GRANTHA SIGN VIRAMA;Mc;9;L;;;;;N;;;;;\n11350;GRANTHA OM;Lo;0;L;;;;;N;;;;;\n11357;GRANTHA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;\n1135D;GRANTHA SIGN PLUTA;Lo;0;L;;;;;N;;;;;\n1135E;GRANTHA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;\n1135F;GRANTHA LETTER VEDIC DOUBLE ANUSVARA;Lo;0;L;;;;;N;;;;;\n11360;GRANTHA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11361;GRANTHA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n11362;GRANTHA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;\n11363;GRANTHA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;\n11366;COMBINING GRANTHA DIGIT ZERO;Mn;230;NSM;;;;;N;;;;;\n11367;COMBINING GRANTHA DIGIT ONE;Mn;230;NSM;;;;;N;;;;;\n11368;COMBINING GRANTHA DIGIT TWO;Mn;230;NSM;;;;;N;;;;;\n11369;COMBINING GRANTHA DIGIT THREE;Mn;230;NSM;;;;;N;;;;;\n1136A;COMBINING GRANTHA DIGIT FOUR;Mn;230;NSM;;;;;N;;;;;\n1136B;COMBINING GRANTHA DIGIT FIVE;Mn;230;NSM;;;;;N;;;;;\n1136C;COMBINING GRANTHA DIGIT SIX;Mn;230;NSM;;;;;N;;;;;\n11370;COMBINING GRANTHA LETTER A;Mn;230;NSM;;;;;N;;;;;\n11371;COMBINING GRANTHA LETTER KA;Mn;230;NSM;;;;;N;;;;;\n11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;;\n11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;;\n11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;;\n11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;;\n11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;;\n11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;;\n11403;NEWA LETTER II;Lo;0;L;;;;;N;;;;;\n11404;NEWA LETTER U;Lo;0;L;;;;;N;;;;;\n11405;NEWA LETTER UU;Lo;0;L;;;;;N;;;;;\n11406;NEWA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n11407;NEWA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11408;NEWA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n11409;NEWA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1140A;NEWA LETTER E;Lo;0;L;;;;;N;;;;;\n1140B;NEWA LETTER AI;Lo;0;L;;;;;N;;;;;\n1140C;NEWA LETTER O;Lo;0;L;;;;;N;;;;;\n1140D;NEWA LETTER AU;Lo;0;L;;;;;N;;;;;\n1140E;NEWA LETTER KA;Lo;0;L;;;;;N;;;;;\n1140F;NEWA LETTER KHA;Lo;0;L;;;;;N;;;;;\n11410;NEWA LETTER GA;Lo;0;L;;;;;N;;;;;\n11411;NEWA LETTER GHA;Lo;0;L;;;;;N;;;;;\n11412;NEWA LETTER NGA;Lo;0;L;;;;;N;;;;;\n11413;NEWA LETTER NGHA;Lo;0;L;;;;;N;;;;;\n11414;NEWA LETTER CA;Lo;0;L;;;;;N;;;;;\n11415;NEWA LETTER CHA;Lo;0;L;;;;;N;;;;;\n11416;NEWA LETTER JA;Lo;0;L;;;;;N;;;;;\n11417;NEWA LETTER JHA;Lo;0;L;;;;;N;;;;;\n11418;NEWA LETTER NYA;Lo;0;L;;;;;N;;;;;\n11419;NEWA LETTER NYHA;Lo;0;L;;;;;N;;;;;\n1141A;NEWA LETTER TTA;Lo;0;L;;;;;N;;;;;\n1141B;NEWA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1141C;NEWA LETTER DDA;Lo;0;L;;;;;N;;;;;\n1141D;NEWA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1141E;NEWA LETTER NNA;Lo;0;L;;;;;N;;;;;\n1141F;NEWA LETTER TA;Lo;0;L;;;;;N;;;;;\n11420;NEWA LETTER THA;Lo;0;L;;;;;N;;;;;\n11421;NEWA LETTER DA;Lo;0;L;;;;;N;;;;;\n11422;NEWA LETTER DHA;Lo;0;L;;;;;N;;;;;\n11423;NEWA LETTER NA;Lo;0;L;;;;;N;;;;;\n11424;NEWA LETTER NHA;Lo;0;L;;;;;N;;;;;\n11425;NEWA LETTER PA;Lo;0;L;;;;;N;;;;;\n11426;NEWA LETTER PHA;Lo;0;L;;;;;N;;;;;\n11427;NEWA LETTER BA;Lo;0;L;;;;;N;;;;;\n11428;NEWA LETTER BHA;Lo;0;L;;;;;N;;;;;\n11429;NEWA LETTER MA;Lo;0;L;;;;;N;;;;;\n1142A;NEWA LETTER MHA;Lo;0;L;;;;;N;;;;;\n1142B;NEWA LETTER YA;Lo;0;L;;;;;N;;;;;\n1142C;NEWA LETTER RA;Lo;0;L;;;;;N;;;;;\n1142D;NEWA LETTER RHA;Lo;0;L;;;;;N;;;;;\n1142E;NEWA LETTER LA;Lo;0;L;;;;;N;;;;;\n1142F;NEWA LETTER LHA;Lo;0;L;;;;;N;;;;;\n11430;NEWA LETTER WA;Lo;0;L;;;;;N;;;;;\n11431;NEWA LETTER SHA;Lo;0;L;;;;;N;;;;;\n11432;NEWA LETTER SSA;Lo;0;L;;;;;N;;;;;\n11433;NEWA LETTER SA;Lo;0;L;;;;;N;;;;;\n11434;NEWA LETTER HA;Lo;0;L;;;;;N;;;;;\n11435;NEWA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11436;NEWA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11437;NEWA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n11438;NEWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11439;NEWA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n1143A;NEWA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n1143B;NEWA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n1143C;NEWA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n1143D;NEWA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n1143E;NEWA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n1143F;NEWA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11440;NEWA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n11441;NEWA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n11442;NEWA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11443;NEWA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11444;NEWA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11445;NEWA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11446;NEWA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n11447;NEWA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n11448;NEWA SIGN FINAL ANUSVARA;Lo;0;L;;;;;N;;;;;\n11449;NEWA OM;Lo;0;L;;;;;N;;;;;\n1144A;NEWA SIDDHI;Lo;0;L;;;;;N;;;;;\n1144B;NEWA DANDA;Po;0;L;;;;;N;;;;;\n1144C;NEWA DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n1144D;NEWA COMMA;Po;0;L;;;;;N;;;;;\n1144E;NEWA GAP FILLER;Po;0;L;;;;;N;;;;;\n1144F;NEWA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n11450;NEWA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11451;NEWA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11452;NEWA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11453;NEWA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11454;NEWA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11455;NEWA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11456;NEWA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11457;NEWA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11458;NEWA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1145A;NEWA DOUBLE COMMA;Po;0;L;;;;;N;;;;;\n1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;\n1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;\n1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;;\n1145F;NEWA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;\n11460;NEWA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n11461;NEWA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;\n11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;\n11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;\n11483;TIRHUTA LETTER I;Lo;0;L;;;;;N;;;;;\n11484;TIRHUTA LETTER II;Lo;0;L;;;;;N;;;;;\n11485;TIRHUTA LETTER U;Lo;0;L;;;;;N;;;;;\n11486;TIRHUTA LETTER UU;Lo;0;L;;;;;N;;;;;\n11487;TIRHUTA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n11488;TIRHUTA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11489;TIRHUTA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n1148A;TIRHUTA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1148B;TIRHUTA LETTER E;Lo;0;L;;;;;N;;;;;\n1148C;TIRHUTA LETTER AI;Lo;0;L;;;;;N;;;;;\n1148D;TIRHUTA LETTER O;Lo;0;L;;;;;N;;;;;\n1148E;TIRHUTA LETTER AU;Lo;0;L;;;;;N;;;;;\n1148F;TIRHUTA LETTER KA;Lo;0;L;;;;;N;;;;;\n11490;TIRHUTA LETTER KHA;Lo;0;L;;;;;N;;;;;\n11491;TIRHUTA LETTER GA;Lo;0;L;;;;;N;;;;;\n11492;TIRHUTA LETTER GHA;Lo;0;L;;;;;N;;;;;\n11493;TIRHUTA LETTER NGA;Lo;0;L;;;;;N;;;;;\n11494;TIRHUTA LETTER CA;Lo;0;L;;;;;N;;;;;\n11495;TIRHUTA LETTER CHA;Lo;0;L;;;;;N;;;;;\n11496;TIRHUTA LETTER JA;Lo;0;L;;;;;N;;;;;\n11497;TIRHUTA LETTER JHA;Lo;0;L;;;;;N;;;;;\n11498;TIRHUTA LETTER NYA;Lo;0;L;;;;;N;;;;;\n11499;TIRHUTA LETTER TTA;Lo;0;L;;;;;N;;;;;\n1149A;TIRHUTA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1149B;TIRHUTA LETTER DDA;Lo;0;L;;;;;N;;;;;\n1149C;TIRHUTA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1149D;TIRHUTA LETTER NNA;Lo;0;L;;;;;N;;;;;\n1149E;TIRHUTA LETTER TA;Lo;0;L;;;;;N;;;;;\n1149F;TIRHUTA LETTER THA;Lo;0;L;;;;;N;;;;;\n114A0;TIRHUTA LETTER DA;Lo;0;L;;;;;N;;;;;\n114A1;TIRHUTA LETTER DHA;Lo;0;L;;;;;N;;;;;\n114A2;TIRHUTA LETTER NA;Lo;0;L;;;;;N;;;;;\n114A3;TIRHUTA LETTER PA;Lo;0;L;;;;;N;;;;;\n114A4;TIRHUTA LETTER PHA;Lo;0;L;;;;;N;;;;;\n114A5;TIRHUTA LETTER BA;Lo;0;L;;;;;N;;;;;\n114A6;TIRHUTA LETTER BHA;Lo;0;L;;;;;N;;;;;\n114A7;TIRHUTA LETTER MA;Lo;0;L;;;;;N;;;;;\n114A8;TIRHUTA LETTER YA;Lo;0;L;;;;;N;;;;;\n114A9;TIRHUTA LETTER RA;Lo;0;L;;;;;N;;;;;\n114AA;TIRHUTA LETTER LA;Lo;0;L;;;;;N;;;;;\n114AB;TIRHUTA LETTER VA;Lo;0;L;;;;;N;;;;;\n114AC;TIRHUTA LETTER SHA;Lo;0;L;;;;;N;;;;;\n114AD;TIRHUTA LETTER SSA;Lo;0;L;;;;;N;;;;;\n114AE;TIRHUTA LETTER SA;Lo;0;L;;;;;N;;;;;\n114AF;TIRHUTA LETTER HA;Lo;0;L;;;;;N;;;;;\n114B0;TIRHUTA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n114B1;TIRHUTA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n114B2;TIRHUTA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n114B3;TIRHUTA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n114B4;TIRHUTA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n114B5;TIRHUTA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n114B6;TIRHUTA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n114B7;TIRHUTA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n114B8;TIRHUTA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n114B9;TIRHUTA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n114BA;TIRHUTA VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;\n114BB;TIRHUTA VOWEL SIGN AI;Mc;0;L;114B9 114BA;;;;N;;;;;\n114BC;TIRHUTA VOWEL SIGN O;Mc;0;L;114B9 114B0;;;;N;;;;;\n114BD;TIRHUTA VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;\n114BE;TIRHUTA VOWEL SIGN AU;Mc;0;L;114B9 114BD;;;;N;;;;;\n114BF;TIRHUTA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n114C0;TIRHUTA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n114C1;TIRHUTA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n114C2;TIRHUTA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n114C3;TIRHUTA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n114C4;TIRHUTA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n114C5;TIRHUTA GVANG;Lo;0;L;;;;;N;;;;;\n114C6;TIRHUTA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n114C7;TIRHUTA OM;Lo;0;L;;;;;N;;;;;\n114D0;TIRHUTA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n114D1;TIRHUTA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n114D2;TIRHUTA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n114D3;TIRHUTA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n114D4;TIRHUTA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n114D5;TIRHUTA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n114D6;TIRHUTA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n114D7;TIRHUTA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n114D8;TIRHUTA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n114D9;TIRHUTA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11580;SIDDHAM LETTER A;Lo;0;L;;;;;N;;;;;\n11581;SIDDHAM LETTER AA;Lo;0;L;;;;;N;;;;;\n11582;SIDDHAM LETTER I;Lo;0;L;;;;;N;;;;;\n11583;SIDDHAM LETTER II;Lo;0;L;;;;;N;;;;;\n11584;SIDDHAM LETTER U;Lo;0;L;;;;;N;;;;;\n11585;SIDDHAM LETTER UU;Lo;0;L;;;;;N;;;;;\n11586;SIDDHAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n11587;SIDDHAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11588;SIDDHAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n11589;SIDDHAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1158A;SIDDHAM LETTER E;Lo;0;L;;;;;N;;;;;\n1158B;SIDDHAM LETTER AI;Lo;0;L;;;;;N;;;;;\n1158C;SIDDHAM LETTER O;Lo;0;L;;;;;N;;;;;\n1158D;SIDDHAM LETTER AU;Lo;0;L;;;;;N;;;;;\n1158E;SIDDHAM LETTER KA;Lo;0;L;;;;;N;;;;;\n1158F;SIDDHAM LETTER KHA;Lo;0;L;;;;;N;;;;;\n11590;SIDDHAM LETTER GA;Lo;0;L;;;;;N;;;;;\n11591;SIDDHAM LETTER GHA;Lo;0;L;;;;;N;;;;;\n11592;SIDDHAM LETTER NGA;Lo;0;L;;;;;N;;;;;\n11593;SIDDHAM LETTER CA;Lo;0;L;;;;;N;;;;;\n11594;SIDDHAM LETTER CHA;Lo;0;L;;;;;N;;;;;\n11595;SIDDHAM LETTER JA;Lo;0;L;;;;;N;;;;;\n11596;SIDDHAM LETTER JHA;Lo;0;L;;;;;N;;;;;\n11597;SIDDHAM LETTER NYA;Lo;0;L;;;;;N;;;;;\n11598;SIDDHAM LETTER TTA;Lo;0;L;;;;;N;;;;;\n11599;SIDDHAM LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1159A;SIDDHAM LETTER DDA;Lo;0;L;;;;;N;;;;;\n1159B;SIDDHAM LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1159C;SIDDHAM LETTER NNA;Lo;0;L;;;;;N;;;;;\n1159D;SIDDHAM LETTER TA;Lo;0;L;;;;;N;;;;;\n1159E;SIDDHAM LETTER THA;Lo;0;L;;;;;N;;;;;\n1159F;SIDDHAM LETTER DA;Lo;0;L;;;;;N;;;;;\n115A0;SIDDHAM LETTER DHA;Lo;0;L;;;;;N;;;;;\n115A1;SIDDHAM LETTER NA;Lo;0;L;;;;;N;;;;;\n115A2;SIDDHAM LETTER PA;Lo;0;L;;;;;N;;;;;\n115A3;SIDDHAM LETTER PHA;Lo;0;L;;;;;N;;;;;\n115A4;SIDDHAM LETTER BA;Lo;0;L;;;;;N;;;;;\n115A5;SIDDHAM LETTER BHA;Lo;0;L;;;;;N;;;;;\n115A6;SIDDHAM LETTER MA;Lo;0;L;;;;;N;;;;;\n115A7;SIDDHAM LETTER YA;Lo;0;L;;;;;N;;;;;\n115A8;SIDDHAM LETTER RA;Lo;0;L;;;;;N;;;;;\n115A9;SIDDHAM LETTER LA;Lo;0;L;;;;;N;;;;;\n115AA;SIDDHAM LETTER VA;Lo;0;L;;;;;N;;;;;\n115AB;SIDDHAM LETTER SHA;Lo;0;L;;;;;N;;;;;\n115AC;SIDDHAM LETTER SSA;Lo;0;L;;;;;N;;;;;\n115AD;SIDDHAM LETTER SA;Lo;0;L;;;;;N;;;;;\n115AE;SIDDHAM LETTER HA;Lo;0;L;;;;;N;;;;;\n115AF;SIDDHAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n115B0;SIDDHAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n115B1;SIDDHAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n115B2;SIDDHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n115B3;SIDDHAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n115B4;SIDDHAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n115B5;SIDDHAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n115B8;SIDDHAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n115B9;SIDDHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n115BA;SIDDHAM VOWEL SIGN O;Mc;0;L;115B8 115AF;;;;N;;;;;\n115BB;SIDDHAM VOWEL SIGN AU;Mc;0;L;115B9 115AF;;;;N;;;;;\n115BC;SIDDHAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n115BD;SIDDHAM SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n115BE;SIDDHAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n115BF;SIDDHAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n115C0;SIDDHAM SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n115C1;SIDDHAM SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\n115C2;SIDDHAM DANDA;Po;0;L;;;;;N;;;;;\n115C3;SIDDHAM DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n115C4;SIDDHAM SEPARATOR DOT;Po;0;L;;;;;N;;;;;\n115C5;SIDDHAM SEPARATOR BAR;Po;0;L;;;;;N;;;;;\n115C6;SIDDHAM REPETITION MARK-1;Po;0;L;;;;;N;;;;;\n115C7;SIDDHAM REPETITION MARK-2;Po;0;L;;;;;N;;;;;\n115C8;SIDDHAM REPETITION MARK-3;Po;0;L;;;;;N;;;;;\n115C9;SIDDHAM END OF TEXT MARK;Po;0;L;;;;;N;;;;;\n115CA;SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS;Po;0;L;;;;;N;;;;;\n115CB;SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;;\n115CC;SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;;\n115CD;SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115CE;SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115CF;SIDDHAM SECTION MARK DOUBLE RING;Po;0;L;;;;;N;;;;;\n115D0;SIDDHAM SECTION MARK DOUBLE RING WITH RAYS;Po;0;L;;;;;N;;;;;\n115D1;SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115D2;SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115D3;SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115D4;SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS;Po;0;L;;;;;N;;;;;\n115D5;SIDDHAM SECTION MARK WITH CIRCLES AND RAYS;Po;0;L;;;;;N;;;;;\n115D6;SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES;Po;0;L;;;;;N;;;;;\n115D7;SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES;Po;0;L;;;;;N;;;;;\n115D8;SIDDHAM LETTER THREE-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;;\n115D9;SIDDHAM LETTER TWO-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;;\n115DA;SIDDHAM LETTER TWO-CIRCLE ALTERNATE II;Lo;0;L;;;;;N;;;;;\n115DB;SIDDHAM LETTER ALTERNATE U;Lo;0;L;;;;;N;;;;;\n115DC;SIDDHAM VOWEL SIGN ALTERNATE U;Mn;0;NSM;;;;;N;;;;;\n115DD;SIDDHAM VOWEL SIGN ALTERNATE UU;Mn;0;NSM;;;;;N;;;;;\n11600;MODI LETTER A;Lo;0;L;;;;;N;;;;;\n11601;MODI LETTER AA;Lo;0;L;;;;;N;;;;;\n11602;MODI LETTER I;Lo;0;L;;;;;N;;;;;\n11603;MODI LETTER II;Lo;0;L;;;;;N;;;;;\n11604;MODI LETTER U;Lo;0;L;;;;;N;;;;;\n11605;MODI LETTER UU;Lo;0;L;;;;;N;;;;;\n11606;MODI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n11607;MODI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11608;MODI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n11609;MODI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;\n1160A;MODI LETTER E;Lo;0;L;;;;;N;;;;;\n1160B;MODI LETTER AI;Lo;0;L;;;;;N;;;;;\n1160C;MODI LETTER O;Lo;0;L;;;;;N;;;;;\n1160D;MODI LETTER AU;Lo;0;L;;;;;N;;;;;\n1160E;MODI LETTER KA;Lo;0;L;;;;;N;;;;;\n1160F;MODI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11610;MODI LETTER GA;Lo;0;L;;;;;N;;;;;\n11611;MODI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11612;MODI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11613;MODI LETTER CA;Lo;0;L;;;;;N;;;;;\n11614;MODI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11615;MODI LETTER JA;Lo;0;L;;;;;N;;;;;\n11616;MODI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11617;MODI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11618;MODI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11619;MODI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n1161A;MODI LETTER DDA;Lo;0;L;;;;;N;;;;;\n1161B;MODI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1161C;MODI LETTER NNA;Lo;0;L;;;;;N;;;;;\n1161D;MODI LETTER TA;Lo;0;L;;;;;N;;;;;\n1161E;MODI LETTER THA;Lo;0;L;;;;;N;;;;;\n1161F;MODI LETTER DA;Lo;0;L;;;;;N;;;;;\n11620;MODI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11621;MODI LETTER NA;Lo;0;L;;;;;N;;;;;\n11622;MODI LETTER PA;Lo;0;L;;;;;N;;;;;\n11623;MODI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11624;MODI LETTER BA;Lo;0;L;;;;;N;;;;;\n11625;MODI LETTER BHA;Lo;0;L;;;;;N;;;;;\n11626;MODI LETTER MA;Lo;0;L;;;;;N;;;;;\n11627;MODI LETTER YA;Lo;0;L;;;;;N;;;;;\n11628;MODI LETTER RA;Lo;0;L;;;;;N;;;;;\n11629;MODI LETTER LA;Lo;0;L;;;;;N;;;;;\n1162A;MODI LETTER VA;Lo;0;L;;;;;N;;;;;\n1162B;MODI LETTER SHA;Lo;0;L;;;;;N;;;;;\n1162C;MODI LETTER SSA;Lo;0;L;;;;;N;;;;;\n1162D;MODI LETTER SA;Lo;0;L;;;;;N;;;;;\n1162E;MODI LETTER HA;Lo;0;L;;;;;N;;;;;\n1162F;MODI LETTER LLA;Lo;0;L;;;;;N;;;;;\n11630;MODI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11631;MODI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11632;MODI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n11633;MODI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11634;MODI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n11635;MODI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n11636;MODI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n11637;MODI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n11638;MODI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;\n11639;MODI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n1163A;MODI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n1163B;MODI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n1163C;MODI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n1163D;MODI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n1163E;MODI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n1163F;MODI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11640;MODI SIGN ARDHACANDRA;Mn;0;NSM;;;;;N;;;;;\n11641;MODI DANDA;Po;0;L;;;;;N;;;;;\n11642;MODI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n11643;MODI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n11644;MODI SIGN HUVA;Lo;0;L;;;;;N;;;;;\n11650;MODI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11651;MODI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11652;MODI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11653;MODI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11654;MODI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11655;MODI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11656;MODI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11657;MODI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11658;MODI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11659;MODI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11660;MONGOLIAN BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;\n11661;MONGOLIAN ROTATED BIRGA;Po;0;ON;;;;;N;;;;;\n11662;MONGOLIAN DOUBLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;\n11663;MONGOLIAN TRIPLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;\n11664;MONGOLIAN BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;\n11665;MONGOLIAN ROTATED BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;\n11666;MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;\n11667;MONGOLIAN INVERTED BIRGA;Po;0;ON;;;;;N;;;;;\n11668;MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;\n11669;MONGOLIAN SWIRL BIRGA;Po;0;ON;;;;;N;;;;;\n1166A;MONGOLIAN SWIRL BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;\n1166B;MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;\n1166C;MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;\n11680;TAKRI LETTER A;Lo;0;L;;;;;N;;;;;\n11681;TAKRI LETTER AA;Lo;0;L;;;;;N;;;;;\n11682;TAKRI LETTER I;Lo;0;L;;;;;N;;;;;\n11683;TAKRI LETTER II;Lo;0;L;;;;;N;;;;;\n11684;TAKRI LETTER U;Lo;0;L;;;;;N;;;;;\n11685;TAKRI LETTER UU;Lo;0;L;;;;;N;;;;;\n11686;TAKRI LETTER E;Lo;0;L;;;;;N;;;;;\n11687;TAKRI LETTER AI;Lo;0;L;;;;;N;;;;;\n11688;TAKRI LETTER O;Lo;0;L;;;;;N;;;;;\n11689;TAKRI LETTER AU;Lo;0;L;;;;;N;;;;;\n1168A;TAKRI LETTER KA;Lo;0;L;;;;;N;;;;;\n1168B;TAKRI LETTER KHA;Lo;0;L;;;;;N;;;;;\n1168C;TAKRI LETTER GA;Lo;0;L;;;;;N;;;;;\n1168D;TAKRI LETTER GHA;Lo;0;L;;;;;N;;;;;\n1168E;TAKRI LETTER NGA;Lo;0;L;;;;;N;;;;;\n1168F;TAKRI LETTER CA;Lo;0;L;;;;;N;;;;;\n11690;TAKRI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11691;TAKRI LETTER JA;Lo;0;L;;;;;N;;;;;\n11692;TAKRI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11693;TAKRI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11694;TAKRI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11695;TAKRI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11696;TAKRI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11697;TAKRI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11698;TAKRI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11699;TAKRI LETTER TA;Lo;0;L;;;;;N;;;;;\n1169A;TAKRI LETTER THA;Lo;0;L;;;;;N;;;;;\n1169B;TAKRI LETTER DA;Lo;0;L;;;;;N;;;;;\n1169C;TAKRI LETTER DHA;Lo;0;L;;;;;N;;;;;\n1169D;TAKRI LETTER NA;Lo;0;L;;;;;N;;;;;\n1169E;TAKRI LETTER PA;Lo;0;L;;;;;N;;;;;\n1169F;TAKRI LETTER PHA;Lo;0;L;;;;;N;;;;;\n116A0;TAKRI LETTER BA;Lo;0;L;;;;;N;;;;;\n116A1;TAKRI LETTER BHA;Lo;0;L;;;;;N;;;;;\n116A2;TAKRI LETTER MA;Lo;0;L;;;;;N;;;;;\n116A3;TAKRI LETTER YA;Lo;0;L;;;;;N;;;;;\n116A4;TAKRI LETTER RA;Lo;0;L;;;;;N;;;;;\n116A5;TAKRI LETTER LA;Lo;0;L;;;;;N;;;;;\n116A6;TAKRI LETTER VA;Lo;0;L;;;;;N;;;;;\n116A7;TAKRI LETTER SHA;Lo;0;L;;;;;N;;;;;\n116A8;TAKRI LETTER SA;Lo;0;L;;;;;N;;;;;\n116A9;TAKRI LETTER HA;Lo;0;L;;;;;N;;;;;\n116AA;TAKRI LETTER RRA;Lo;0;L;;;;;N;;;;;\n116AB;TAKRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n116AC;TAKRI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n116AD;TAKRI VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\n116AE;TAKRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n116AF;TAKRI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n116B0;TAKRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n116B1;TAKRI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n116B2;TAKRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n116B3;TAKRI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n116B4;TAKRI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n116B5;TAKRI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;;\n116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;;\n116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n116C3;TAKRI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n116C4;TAKRI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n116C5;TAKRI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n116C6;TAKRI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;;\n11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;;\n11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;;\n11703;AHOM LETTER NA;Lo;0;L;;;;;N;;;;;\n11704;AHOM LETTER TA;Lo;0;L;;;;;N;;;;;\n11705;AHOM LETTER ALTERNATE TA;Lo;0;L;;;;;N;;;;;\n11706;AHOM LETTER PA;Lo;0;L;;;;;N;;;;;\n11707;AHOM LETTER PHA;Lo;0;L;;;;;N;;;;;\n11708;AHOM LETTER BA;Lo;0;L;;;;;N;;;;;\n11709;AHOM LETTER MA;Lo;0;L;;;;;N;;;;;\n1170A;AHOM LETTER JA;Lo;0;L;;;;;N;;;;;\n1170B;AHOM LETTER CHA;Lo;0;L;;;;;N;;;;;\n1170C;AHOM LETTER THA;Lo;0;L;;;;;N;;;;;\n1170D;AHOM LETTER RA;Lo;0;L;;;;;N;;;;;\n1170E;AHOM LETTER LA;Lo;0;L;;;;;N;;;;;\n1170F;AHOM LETTER SA;Lo;0;L;;;;;N;;;;;\n11710;AHOM LETTER NYA;Lo;0;L;;;;;N;;;;;\n11711;AHOM LETTER HA;Lo;0;L;;;;;N;;;;;\n11712;AHOM LETTER A;Lo;0;L;;;;;N;;;;;\n11713;AHOM LETTER DA;Lo;0;L;;;;;N;;;;;\n11714;AHOM LETTER DHA;Lo;0;L;;;;;N;;;;;\n11715;AHOM LETTER GA;Lo;0;L;;;;;N;;;;;\n11716;AHOM LETTER ALTERNATE GA;Lo;0;L;;;;;N;;;;;\n11717;AHOM LETTER GHA;Lo;0;L;;;;;N;;;;;\n11718;AHOM LETTER BHA;Lo;0;L;;;;;N;;;;;\n11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;\n1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;\n1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;\n1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;\n1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;\n11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;\n11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11722;AHOM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11723;AHOM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n11724;AHOM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11725;AHOM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n11726;AHOM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n11727;AHOM VOWEL SIGN AW;Mn;0;NSM;;;;;N;;;;;\n11728;AHOM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11729;AHOM VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n1172A;AHOM VOWEL SIGN AM;Mn;0;NSM;;;;;N;;;;;\n1172B;AHOM SIGN KILLER;Mn;9;NSM;;;;;N;;;;;\n11730;AHOM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11731;AHOM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11732;AHOM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11733;AHOM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11734;AHOM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11735;AHOM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11736;AHOM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11737;AHOM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11738;AHOM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11739;AHOM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1173A;AHOM NUMBER TEN;No;0;L;;;;10;N;;;;;\n1173B;AHOM NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n1173C;AHOM SIGN SMALL SECTION;Po;0;L;;;;;N;;;;;\n1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;;\n1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;;\n1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;;\n11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;;\n11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;;\n11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;;\n11803;DOGRA LETTER II;Lo;0;L;;;;;N;;;;;\n11804;DOGRA LETTER U;Lo;0;L;;;;;N;;;;;\n11805;DOGRA LETTER UU;Lo;0;L;;;;;N;;;;;\n11806;DOGRA LETTER E;Lo;0;L;;;;;N;;;;;\n11807;DOGRA LETTER AI;Lo;0;L;;;;;N;;;;;\n11808;DOGRA LETTER O;Lo;0;L;;;;;N;;;;;\n11809;DOGRA LETTER AU;Lo;0;L;;;;;N;;;;;\n1180A;DOGRA LETTER KA;Lo;0;L;;;;;N;;;;;\n1180B;DOGRA LETTER KHA;Lo;0;L;;;;;N;;;;;\n1180C;DOGRA LETTER GA;Lo;0;L;;;;;N;;;;;\n1180D;DOGRA LETTER GHA;Lo;0;L;;;;;N;;;;;\n1180E;DOGRA LETTER NGA;Lo;0;L;;;;;N;;;;;\n1180F;DOGRA LETTER CA;Lo;0;L;;;;;N;;;;;\n11810;DOGRA LETTER CHA;Lo;0;L;;;;;N;;;;;\n11811;DOGRA LETTER JA;Lo;0;L;;;;;N;;;;;\n11812;DOGRA LETTER JHA;Lo;0;L;;;;;N;;;;;\n11813;DOGRA LETTER NYA;Lo;0;L;;;;;N;;;;;\n11814;DOGRA LETTER TTA;Lo;0;L;;;;;N;;;;;\n11815;DOGRA LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11816;DOGRA LETTER DDA;Lo;0;L;;;;;N;;;;;\n11817;DOGRA LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11818;DOGRA LETTER NNA;Lo;0;L;;;;;N;;;;;\n11819;DOGRA LETTER TA;Lo;0;L;;;;;N;;;;;\n1181A;DOGRA LETTER THA;Lo;0;L;;;;;N;;;;;\n1181B;DOGRA LETTER DA;Lo;0;L;;;;;N;;;;;\n1181C;DOGRA LETTER DHA;Lo;0;L;;;;;N;;;;;\n1181D;DOGRA LETTER NA;Lo;0;L;;;;;N;;;;;\n1181E;DOGRA LETTER PA;Lo;0;L;;;;;N;;;;;\n1181F;DOGRA LETTER PHA;Lo;0;L;;;;;N;;;;;\n11820;DOGRA LETTER BA;Lo;0;L;;;;;N;;;;;\n11821;DOGRA LETTER BHA;Lo;0;L;;;;;N;;;;;\n11822;DOGRA LETTER MA;Lo;0;L;;;;;N;;;;;\n11823;DOGRA LETTER YA;Lo;0;L;;;;;N;;;;;\n11824;DOGRA LETTER RA;Lo;0;L;;;;;N;;;;;\n11825;DOGRA LETTER LA;Lo;0;L;;;;;N;;;;;\n11826;DOGRA LETTER VA;Lo;0;L;;;;;N;;;;;\n11827;DOGRA LETTER SHA;Lo;0;L;;;;;N;;;;;\n11828;DOGRA LETTER SSA;Lo;0;L;;;;;N;;;;;\n11829;DOGRA LETTER SA;Lo;0;L;;;;;N;;;;;\n1182A;DOGRA LETTER HA;Lo;0;L;;;;;N;;;;;\n1182B;DOGRA LETTER RRA;Lo;0;L;;;;;N;;;;;\n1182C;DOGRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n1182D;DOGRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n1182E;DOGRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n1182F;DOGRA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11830;DOGRA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n11831;DOGRA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n11832;DOGRA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n11833;DOGRA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11834;DOGRA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11835;DOGRA VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11836;DOGRA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n11837;DOGRA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11838;DOGRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11839;DOGRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n1183A;DOGRA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n1183B;DOGRA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;\n118A0;WARANG CITI CAPITAL LETTER NGAA;Lu;0;L;;;;;N;;;;118C0;\n118A1;WARANG CITI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;118C1;\n118A2;WARANG CITI CAPITAL LETTER WI;Lu;0;L;;;;;N;;;;118C2;\n118A3;WARANG CITI CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;118C3;\n118A4;WARANG CITI CAPITAL LETTER YA;Lu;0;L;;;;;N;;;;118C4;\n118A5;WARANG CITI CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;118C5;\n118A6;WARANG CITI CAPITAL LETTER II;Lu;0;L;;;;;N;;;;118C6;\n118A7;WARANG CITI CAPITAL LETTER UU;Lu;0;L;;;;;N;;;;118C7;\n118A8;WARANG CITI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;118C8;\n118A9;WARANG CITI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;118C9;\n118AA;WARANG CITI CAPITAL LETTER ANG;Lu;0;L;;;;;N;;;;118CA;\n118AB;WARANG CITI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;118CB;\n118AC;WARANG CITI CAPITAL LETTER KO;Lu;0;L;;;;;N;;;;118CC;\n118AD;WARANG CITI CAPITAL LETTER ENY;Lu;0;L;;;;;N;;;;118CD;\n118AE;WARANG CITI CAPITAL LETTER YUJ;Lu;0;L;;;;;N;;;;118CE;\n118AF;WARANG CITI CAPITAL LETTER UC;Lu;0;L;;;;;N;;;;118CF;\n118B0;WARANG CITI CAPITAL LETTER ENN;Lu;0;L;;;;;N;;;;118D0;\n118B1;WARANG CITI CAPITAL LETTER ODD;Lu;0;L;;;;;N;;;;118D1;\n118B2;WARANG CITI CAPITAL LETTER TTE;Lu;0;L;;;;;N;;;;118D2;\n118B3;WARANG CITI CAPITAL LETTER NUNG;Lu;0;L;;;;;N;;;;118D3;\n118B4;WARANG CITI CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;118D4;\n118B5;WARANG CITI CAPITAL LETTER AT;Lu;0;L;;;;;N;;;;118D5;\n118B6;WARANG CITI CAPITAL LETTER AM;Lu;0;L;;;;;N;;;;118D6;\n118B7;WARANG CITI CAPITAL LETTER BU;Lu;0;L;;;;;N;;;;118D7;\n118B8;WARANG CITI CAPITAL LETTER PU;Lu;0;L;;;;;N;;;;118D8;\n118B9;WARANG CITI CAPITAL LETTER HIYO;Lu;0;L;;;;;N;;;;118D9;\n118BA;WARANG CITI CAPITAL LETTER HOLO;Lu;0;L;;;;;N;;;;118DA;\n118BB;WARANG CITI CAPITAL LETTER HORR;Lu;0;L;;;;;N;;;;118DB;\n118BC;WARANG CITI CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;118DC;\n118BD;WARANG CITI CAPITAL LETTER SSUU;Lu;0;L;;;;;N;;;;118DD;\n118BE;WARANG CITI CAPITAL LETTER SII;Lu;0;L;;;;;N;;;;118DE;\n118BF;WARANG CITI CAPITAL LETTER VIYO;Lu;0;L;;;;;N;;;;118DF;\n118C0;WARANG CITI SMALL LETTER NGAA;Ll;0;L;;;;;N;;;118A0;;118A0\n118C1;WARANG CITI SMALL LETTER A;Ll;0;L;;;;;N;;;118A1;;118A1\n118C2;WARANG CITI SMALL LETTER WI;Ll;0;L;;;;;N;;;118A2;;118A2\n118C3;WARANG CITI SMALL LETTER YU;Ll;0;L;;;;;N;;;118A3;;118A3\n118C4;WARANG CITI SMALL LETTER YA;Ll;0;L;;;;;N;;;118A4;;118A4\n118C5;WARANG CITI SMALL LETTER YO;Ll;0;L;;;;;N;;;118A5;;118A5\n118C6;WARANG CITI SMALL LETTER II;Ll;0;L;;;;;N;;;118A6;;118A6\n118C7;WARANG CITI SMALL LETTER UU;Ll;0;L;;;;;N;;;118A7;;118A7\n118C8;WARANG CITI SMALL LETTER E;Ll;0;L;;;;;N;;;118A8;;118A8\n118C9;WARANG CITI SMALL LETTER O;Ll;0;L;;;;;N;;;118A9;;118A9\n118CA;WARANG CITI SMALL LETTER ANG;Ll;0;L;;;;;N;;;118AA;;118AA\n118CB;WARANG CITI SMALL LETTER GA;Ll;0;L;;;;;N;;;118AB;;118AB\n118CC;WARANG CITI SMALL LETTER KO;Ll;0;L;;;;;N;;;118AC;;118AC\n118CD;WARANG CITI SMALL LETTER ENY;Ll;0;L;;;;;N;;;118AD;;118AD\n118CE;WARANG CITI SMALL LETTER YUJ;Ll;0;L;;;;;N;;;118AE;;118AE\n118CF;WARANG CITI SMALL LETTER UC;Ll;0;L;;;;;N;;;118AF;;118AF\n118D0;WARANG CITI SMALL LETTER ENN;Ll;0;L;;;;;N;;;118B0;;118B0\n118D1;WARANG CITI SMALL LETTER ODD;Ll;0;L;;;;;N;;;118B1;;118B1\n118D2;WARANG CITI SMALL LETTER TTE;Ll;0;L;;;;;N;;;118B2;;118B2\n118D3;WARANG CITI SMALL LETTER NUNG;Ll;0;L;;;;;N;;;118B3;;118B3\n118D4;WARANG CITI SMALL LETTER DA;Ll;0;L;;;;;N;;;118B4;;118B4\n118D5;WARANG CITI SMALL LETTER AT;Ll;0;L;;;;;N;;;118B5;;118B5\n118D6;WARANG CITI SMALL LETTER AM;Ll;0;L;;;;;N;;;118B6;;118B6\n118D7;WARANG CITI SMALL LETTER BU;Ll;0;L;;;;;N;;;118B7;;118B7\n118D8;WARANG CITI SMALL LETTER PU;Ll;0;L;;;;;N;;;118B8;;118B8\n118D9;WARANG CITI SMALL LETTER HIYO;Ll;0;L;;;;;N;;;118B9;;118B9\n118DA;WARANG CITI SMALL LETTER HOLO;Ll;0;L;;;;;N;;;118BA;;118BA\n118DB;WARANG CITI SMALL LETTER HORR;Ll;0;L;;;;;N;;;118BB;;118BB\n118DC;WARANG CITI SMALL LETTER HAR;Ll;0;L;;;;;N;;;118BC;;118BC\n118DD;WARANG CITI SMALL LETTER SSUU;Ll;0;L;;;;;N;;;118BD;;118BD\n118DE;WARANG CITI SMALL LETTER SII;Ll;0;L;;;;;N;;;118BE;;118BE\n118DF;WARANG CITI SMALL LETTER VIYO;Ll;0;L;;;;;N;;;118BF;;118BF\n118E0;WARANG CITI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n118E1;WARANG CITI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n118E2;WARANG CITI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n118E3;WARANG CITI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n118E4;WARANG CITI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n118E5;WARANG CITI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n118E6;WARANG CITI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n118E7;WARANG CITI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n118E8;WARANG CITI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n118E9;WARANG CITI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n118EA;WARANG CITI NUMBER TEN;No;0;L;;;;10;N;;;;;\n118EB;WARANG CITI NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n118EC;WARANG CITI NUMBER THIRTY;No;0;L;;;;30;N;;;;;\n118ED;WARANG CITI NUMBER FORTY;No;0;L;;;;40;N;;;;;\n118EE;WARANG CITI NUMBER FIFTY;No;0;L;;;;50;N;;;;;\n118EF;WARANG CITI NUMBER SIXTY;No;0;L;;;;60;N;;;;;\n118F0;WARANG CITI NUMBER SEVENTY;No;0;L;;;;70;N;;;;;\n118F1;WARANG CITI NUMBER EIGHTY;No;0;L;;;;80;N;;;;;\n118F2;WARANG CITI NUMBER NINETY;No;0;L;;;;90;N;;;;;\n118FF;WARANG CITI OM;Lo;0;L;;;;;N;;;;;\n11900;DIVES AKURU LETTER A;Lo;0;L;;;;;N;;;;;\n11901;DIVES AKURU LETTER AA;Lo;0;L;;;;;N;;;;;\n11902;DIVES AKURU LETTER I;Lo;0;L;;;;;N;;;;;\n11903;DIVES AKURU LETTER II;Lo;0;L;;;;;N;;;;;\n11904;DIVES AKURU LETTER U;Lo;0;L;;;;;N;;;;;\n11905;DIVES AKURU LETTER UU;Lo;0;L;;;;;N;;;;;\n11906;DIVES AKURU LETTER E;Lo;0;L;;;;;N;;;;;\n11909;DIVES AKURU LETTER O;Lo;0;L;;;;;N;;;;;\n1190C;DIVES AKURU LETTER KA;Lo;0;L;;;;;N;;;;;\n1190D;DIVES AKURU LETTER KHA;Lo;0;L;;;;;N;;;;;\n1190E;DIVES AKURU LETTER GA;Lo;0;L;;;;;N;;;;;\n1190F;DIVES AKURU LETTER GHA;Lo;0;L;;;;;N;;;;;\n11910;DIVES AKURU LETTER NGA;Lo;0;L;;;;;N;;;;;\n11911;DIVES AKURU LETTER CA;Lo;0;L;;;;;N;;;;;\n11912;DIVES AKURU LETTER CHA;Lo;0;L;;;;;N;;;;;\n11913;DIVES AKURU LETTER JA;Lo;0;L;;;;;N;;;;;\n11915;DIVES AKURU LETTER NYA;Lo;0;L;;;;;N;;;;;\n11916;DIVES AKURU LETTER TTA;Lo;0;L;;;;;N;;;;;\n11918;DIVES AKURU LETTER DDA;Lo;0;L;;;;;N;;;;;\n11919;DIVES AKURU LETTER DDHA;Lo;0;L;;;;;N;;;;;\n1191A;DIVES AKURU LETTER NNA;Lo;0;L;;;;;N;;;;;\n1191B;DIVES AKURU LETTER TA;Lo;0;L;;;;;N;;;;;\n1191C;DIVES AKURU LETTER THA;Lo;0;L;;;;;N;;;;;\n1191D;DIVES AKURU LETTER DA;Lo;0;L;;;;;N;;;;;\n1191E;DIVES AKURU LETTER DHA;Lo;0;L;;;;;N;;;;;\n1191F;DIVES AKURU LETTER NA;Lo;0;L;;;;;N;;;;;\n11920;DIVES AKURU LETTER PA;Lo;0;L;;;;;N;;;;;\n11921;DIVES AKURU LETTER PHA;Lo;0;L;;;;;N;;;;;\n11922;DIVES AKURU LETTER BA;Lo;0;L;;;;;N;;;;;\n11923;DIVES AKURU LETTER BHA;Lo;0;L;;;;;N;;;;;\n11924;DIVES AKURU LETTER MA;Lo;0;L;;;;;N;;;;;\n11925;DIVES AKURU LETTER YA;Lo;0;L;;;;;N;;;;;\n11926;DIVES AKURU LETTER YYA;Lo;0;L;;;;;N;;;;;\n11927;DIVES AKURU LETTER RA;Lo;0;L;;;;;N;;;;;\n11928;DIVES AKURU LETTER LA;Lo;0;L;;;;;N;;;;;\n11929;DIVES AKURU LETTER VA;Lo;0;L;;;;;N;;;;;\n1192A;DIVES AKURU LETTER SHA;Lo;0;L;;;;;N;;;;;\n1192B;DIVES AKURU LETTER SSA;Lo;0;L;;;;;N;;;;;\n1192C;DIVES AKURU LETTER SA;Lo;0;L;;;;;N;;;;;\n1192D;DIVES AKURU LETTER HA;Lo;0;L;;;;;N;;;;;\n1192E;DIVES AKURU LETTER LLA;Lo;0;L;;;;;N;;;;;\n1192F;DIVES AKURU LETTER ZA;Lo;0;L;;;;;N;;;;;\n11930;DIVES AKURU VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11931;DIVES AKURU VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11932;DIVES AKURU VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n11933;DIVES AKURU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n11934;DIVES AKURU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n11935;DIVES AKURU VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n11937;DIVES AKURU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n11938;DIVES AKURU VOWEL SIGN O;Mc;0;L;11935 11930;;;;N;;;;;\n1193B;DIVES AKURU SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n1193C;DIVES AKURU SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n1193D;DIVES AKURU SIGN HALANTA;Mc;9;L;;;;;N;;;;;\n1193E;DIVES AKURU VIRAMA;Mn;9;NSM;;;;;N;;;;;\n1193F;DIVES AKURU PREFIXED NASAL SIGN;Lo;0;L;;;;;N;;;;;\n11940;DIVES AKURU MEDIAL YA;Mc;0;L;;;;;N;;;;;\n11941;DIVES AKURU INITIAL RA;Lo;0;L;;;;;N;;;;;\n11942;DIVES AKURU MEDIAL RA;Mc;0;L;;;;;N;;;;;\n11943;DIVES AKURU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n11944;DIVES AKURU DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n11945;DIVES AKURU GAP FILLER;Po;0;L;;;;;N;;;;;\n11946;DIVES AKURU END OF TEXT MARK;Po;0;L;;;;;N;;;;;\n11950;DIVES AKURU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11951;DIVES AKURU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11952;DIVES AKURU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11953;DIVES AKURU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11954;DIVES AKURU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11955;DIVES AKURU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11956;DIVES AKURU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11957;DIVES AKURU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11958;DIVES AKURU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11959;DIVES AKURU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n119A0;NANDINAGARI LETTER A;Lo;0;L;;;;;N;;;;;\n119A1;NANDINAGARI LETTER AA;Lo;0;L;;;;;N;;;;;\n119A2;NANDINAGARI LETTER I;Lo;0;L;;;;;N;;;;;\n119A3;NANDINAGARI LETTER II;Lo;0;L;;;;;N;;;;;\n119A4;NANDINAGARI LETTER U;Lo;0;L;;;;;N;;;;;\n119A5;NANDINAGARI LETTER UU;Lo;0;L;;;;;N;;;;;\n119A6;NANDINAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n119A7;NANDINAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n119AA;NANDINAGARI LETTER E;Lo;0;L;;;;;N;;;;;\n119AB;NANDINAGARI LETTER AI;Lo;0;L;;;;;N;;;;;\n119AC;NANDINAGARI LETTER O;Lo;0;L;;;;;N;;;;;\n119AD;NANDINAGARI LETTER AU;Lo;0;L;;;;;N;;;;;\n119AE;NANDINAGARI LETTER KA;Lo;0;L;;;;;N;;;;;\n119AF;NANDINAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;\n119B0;NANDINAGARI LETTER GA;Lo;0;L;;;;;N;;;;;\n119B1;NANDINAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;\n119B2;NANDINAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;\n119B3;NANDINAGARI LETTER CA;Lo;0;L;;;;;N;;;;;\n119B4;NANDINAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;\n119B5;NANDINAGARI LETTER JA;Lo;0;L;;;;;N;;;;;\n119B6;NANDINAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;\n119B7;NANDINAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;\n119B8;NANDINAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;\n119B9;NANDINAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n119BA;NANDINAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;\n119BB;NANDINAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n119BC;NANDINAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;\n119BD;NANDINAGARI LETTER TA;Lo;0;L;;;;;N;;;;;\n119BE;NANDINAGARI LETTER THA;Lo;0;L;;;;;N;;;;;\n119BF;NANDINAGARI LETTER DA;Lo;0;L;;;;;N;;;;;\n119C0;NANDINAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;\n119C1;NANDINAGARI LETTER NA;Lo;0;L;;;;;N;;;;;\n119C2;NANDINAGARI LETTER PA;Lo;0;L;;;;;N;;;;;\n119C3;NANDINAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;\n119C4;NANDINAGARI LETTER BA;Lo;0;L;;;;;N;;;;;\n119C5;NANDINAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;\n119C6;NANDINAGARI LETTER MA;Lo;0;L;;;;;N;;;;;\n119C7;NANDINAGARI LETTER YA;Lo;0;L;;;;;N;;;;;\n119C8;NANDINAGARI LETTER RA;Lo;0;L;;;;;N;;;;;\n119C9;NANDINAGARI LETTER LA;Lo;0;L;;;;;N;;;;;\n119CA;NANDINAGARI LETTER VA;Lo;0;L;;;;;N;;;;;\n119CB;NANDINAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;\n119CC;NANDINAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;\n119CD;NANDINAGARI LETTER SA;Lo;0;L;;;;;N;;;;;\n119CE;NANDINAGARI LETTER HA;Lo;0;L;;;;;N;;;;;\n119CF;NANDINAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;\n119D0;NANDINAGARI LETTER RRA;Lo;0;L;;;;;N;;;;;\n119D1;NANDINAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n119D2;NANDINAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n119D3;NANDINAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n119D4;NANDINAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n119D5;NANDINAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n119D6;NANDINAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n119D7;NANDINAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n119DA;NANDINAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n119DB;NANDINAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n119DC;NANDINAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n119DD;NANDINAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n119DE;NANDINAGARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;\n119DF;NANDINAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n119E0;NANDINAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n119E1;NANDINAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n119E2;NANDINAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;;\n119E3;NANDINAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;\n119E4;NANDINAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;\n11A00;ZANABAZAR SQUARE LETTER A;Lo;0;L;;;;;N;;;;;\n11A01;ZANABAZAR SQUARE VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11A02;ZANABAZAR SQUARE VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;\n11A03;ZANABAZAR SQUARE VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11A04;ZANABAZAR SQUARE VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11A05;ZANABAZAR SQUARE VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;\n11A06;ZANABAZAR SQUARE VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11A07;ZANABAZAR SQUARE VOWEL SIGN AI;Mn;0;L;;;;;N;;;;;\n11A08;ZANABAZAR SQUARE VOWEL SIGN AU;Mn;0;L;;;;;N;;;;;\n11A09;ZANABAZAR SQUARE VOWEL SIGN REVERSED I;Mn;0;NSM;;;;;N;;;;;\n11A0A;ZANABAZAR SQUARE VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;\n11A0B;ZANABAZAR SQUARE LETTER KA;Lo;0;L;;;;;N;;;;;\n11A0C;ZANABAZAR SQUARE LETTER KHA;Lo;0;L;;;;;N;;;;;\n11A0D;ZANABAZAR SQUARE LETTER GA;Lo;0;L;;;;;N;;;;;\n11A0E;ZANABAZAR SQUARE LETTER GHA;Lo;0;L;;;;;N;;;;;\n11A0F;ZANABAZAR SQUARE LETTER NGA;Lo;0;L;;;;;N;;;;;\n11A10;ZANABAZAR SQUARE LETTER CA;Lo;0;L;;;;;N;;;;;\n11A11;ZANABAZAR SQUARE LETTER CHA;Lo;0;L;;;;;N;;;;;\n11A12;ZANABAZAR SQUARE LETTER JA;Lo;0;L;;;;;N;;;;;\n11A13;ZANABAZAR SQUARE LETTER NYA;Lo;0;L;;;;;N;;;;;\n11A14;ZANABAZAR SQUARE LETTER TTA;Lo;0;L;;;;;N;;;;;\n11A15;ZANABAZAR SQUARE LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11A16;ZANABAZAR SQUARE LETTER DDA;Lo;0;L;;;;;N;;;;;\n11A17;ZANABAZAR SQUARE LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11A18;ZANABAZAR SQUARE LETTER NNA;Lo;0;L;;;;;N;;;;;\n11A19;ZANABAZAR SQUARE LETTER TA;Lo;0;L;;;;;N;;;;;\n11A1A;ZANABAZAR SQUARE LETTER THA;Lo;0;L;;;;;N;;;;;\n11A1B;ZANABAZAR SQUARE LETTER DA;Lo;0;L;;;;;N;;;;;\n11A1C;ZANABAZAR SQUARE LETTER DHA;Lo;0;L;;;;;N;;;;;\n11A1D;ZANABAZAR SQUARE LETTER NA;Lo;0;L;;;;;N;;;;;\n11A1E;ZANABAZAR SQUARE LETTER PA;Lo;0;L;;;;;N;;;;;\n11A1F;ZANABAZAR SQUARE LETTER PHA;Lo;0;L;;;;;N;;;;;\n11A20;ZANABAZAR SQUARE LETTER BA;Lo;0;L;;;;;N;;;;;\n11A21;ZANABAZAR SQUARE LETTER BHA;Lo;0;L;;;;;N;;;;;\n11A22;ZANABAZAR SQUARE LETTER MA;Lo;0;L;;;;;N;;;;;\n11A23;ZANABAZAR SQUARE LETTER TSA;Lo;0;L;;;;;N;;;;;\n11A24;ZANABAZAR SQUARE LETTER TSHA;Lo;0;L;;;;;N;;;;;\n11A25;ZANABAZAR SQUARE LETTER DZA;Lo;0;L;;;;;N;;;;;\n11A26;ZANABAZAR SQUARE LETTER DZHA;Lo;0;L;;;;;N;;;;;\n11A27;ZANABAZAR SQUARE LETTER ZHA;Lo;0;L;;;;;N;;;;;\n11A28;ZANABAZAR SQUARE LETTER ZA;Lo;0;L;;;;;N;;;;;\n11A29;ZANABAZAR SQUARE LETTER -A;Lo;0;L;;;;;N;;;;;\n11A2A;ZANABAZAR SQUARE LETTER YA;Lo;0;L;;;;;N;;;;;\n11A2B;ZANABAZAR SQUARE LETTER RA;Lo;0;L;;;;;N;;;;;\n11A2C;ZANABAZAR SQUARE LETTER LA;Lo;0;L;;;;;N;;;;;\n11A2D;ZANABAZAR SQUARE LETTER VA;Lo;0;L;;;;;N;;;;;\n11A2E;ZANABAZAR SQUARE LETTER SHA;Lo;0;L;;;;;N;;;;;\n11A2F;ZANABAZAR SQUARE LETTER SSA;Lo;0;L;;;;;N;;;;;\n11A30;ZANABAZAR SQUARE LETTER SA;Lo;0;L;;;;;N;;;;;\n11A31;ZANABAZAR SQUARE LETTER HA;Lo;0;L;;;;;N;;;;;\n11A32;ZANABAZAR SQUARE LETTER KSSA;Lo;0;L;;;;;N;;;;;\n11A33;ZANABAZAR SQUARE FINAL CONSONANT MARK;Mn;0;NSM;;;;;N;;;;;\n11A34;ZANABAZAR SQUARE SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11A35;ZANABAZAR SQUARE SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11A36;ZANABAZAR SQUARE SIGN CANDRABINDU WITH ORNAMENT;Mn;0;NSM;;;;;N;;;;;\n11A37;ZANABAZAR SQUARE SIGN CANDRA WITH ORNAMENT;Mn;0;NSM;;;;;N;;;;;\n11A38;ZANABAZAR SQUARE SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11A39;ZANABAZAR SQUARE SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11A3A;ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA;Lo;0;L;;;;;N;;;;;\n11A3B;ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA;Mn;0;NSM;;;;;N;;;;;\n11A3C;ZANABAZAR SQUARE CLUSTER-FINAL LETTER RA;Mn;0;NSM;;;;;N;;;;;\n11A3D;ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA;Mn;0;NSM;;;;;N;;;;;\n11A3E;ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA;Mn;0;NSM;;;;;N;;;;;\n11A3F;ZANABAZAR SQUARE INITIAL HEAD MARK;Po;0;L;;;;;N;;;;;\n11A40;ZANABAZAR SQUARE CLOSING HEAD MARK;Po;0;L;;;;;N;;;;;\n11A41;ZANABAZAR SQUARE MARK TSHEG;Po;0;L;;;;;N;;;;;\n11A42;ZANABAZAR SQUARE MARK SHAD;Po;0;L;;;;;N;;;;;\n11A43;ZANABAZAR SQUARE MARK DOUBLE SHAD;Po;0;L;;;;;N;;;;;\n11A44;ZANABAZAR SQUARE MARK LONG TSHEG;Po;0;L;;;;;N;;;;;\n11A45;ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK;Po;0;L;;;;;N;;;;;\n11A46;ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK;Po;0;L;;;;;N;;;;;\n11A47;ZANABAZAR SQUARE SUBJOINER;Mn;9;NSM;;;;;N;;;;;\n11A50;SOYOMBO LETTER A;Lo;0;L;;;;;N;;;;;\n11A51;SOYOMBO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11A52;SOYOMBO VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;\n11A53;SOYOMBO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11A54;SOYOMBO VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11A55;SOYOMBO VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11A56;SOYOMBO VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;\n11A57;SOYOMBO VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n11A58;SOYOMBO VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n11A59;SOYOMBO VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n11A5A;SOYOMBO VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n11A5B;SOYOMBO VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;\n11A5C;SOYOMBO LETTER KA;Lo;0;L;;;;;N;;;;;\n11A5D;SOYOMBO LETTER KHA;Lo;0;L;;;;;N;;;;;\n11A5E;SOYOMBO LETTER GA;Lo;0;L;;;;;N;;;;;\n11A5F;SOYOMBO LETTER GHA;Lo;0;L;;;;;N;;;;;\n11A60;SOYOMBO LETTER NGA;Lo;0;L;;;;;N;;;;;\n11A61;SOYOMBO LETTER CA;Lo;0;L;;;;;N;;;;;\n11A62;SOYOMBO LETTER CHA;Lo;0;L;;;;;N;;;;;\n11A63;SOYOMBO LETTER JA;Lo;0;L;;;;;N;;;;;\n11A64;SOYOMBO LETTER JHA;Lo;0;L;;;;;N;;;;;\n11A65;SOYOMBO LETTER NYA;Lo;0;L;;;;;N;;;;;\n11A66;SOYOMBO LETTER TTA;Lo;0;L;;;;;N;;;;;\n11A67;SOYOMBO LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11A68;SOYOMBO LETTER DDA;Lo;0;L;;;;;N;;;;;\n11A69;SOYOMBO LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11A6A;SOYOMBO LETTER NNA;Lo;0;L;;;;;N;;;;;\n11A6B;SOYOMBO LETTER TA;Lo;0;L;;;;;N;;;;;\n11A6C;SOYOMBO LETTER THA;Lo;0;L;;;;;N;;;;;\n11A6D;SOYOMBO LETTER DA;Lo;0;L;;;;;N;;;;;\n11A6E;SOYOMBO LETTER DHA;Lo;0;L;;;;;N;;;;;\n11A6F;SOYOMBO LETTER NA;Lo;0;L;;;;;N;;;;;\n11A70;SOYOMBO LETTER PA;Lo;0;L;;;;;N;;;;;\n11A71;SOYOMBO LETTER PHA;Lo;0;L;;;;;N;;;;;\n11A72;SOYOMBO LETTER BA;Lo;0;L;;;;;N;;;;;\n11A73;SOYOMBO LETTER BHA;Lo;0;L;;;;;N;;;;;\n11A74;SOYOMBO LETTER MA;Lo;0;L;;;;;N;;;;;\n11A75;SOYOMBO LETTER TSA;Lo;0;L;;;;;N;;;;;\n11A76;SOYOMBO LETTER TSHA;Lo;0;L;;;;;N;;;;;\n11A77;SOYOMBO LETTER DZA;Lo;0;L;;;;;N;;;;;\n11A78;SOYOMBO LETTER ZHA;Lo;0;L;;;;;N;;;;;\n11A79;SOYOMBO LETTER ZA;Lo;0;L;;;;;N;;;;;\n11A7A;SOYOMBO LETTER -A;Lo;0;L;;;;;N;;;;;\n11A7B;SOYOMBO LETTER YA;Lo;0;L;;;;;N;;;;;\n11A7C;SOYOMBO LETTER RA;Lo;0;L;;;;;N;;;;;\n11A7D;SOYOMBO LETTER LA;Lo;0;L;;;;;N;;;;;\n11A7E;SOYOMBO LETTER VA;Lo;0;L;;;;;N;;;;;\n11A7F;SOYOMBO LETTER SHA;Lo;0;L;;;;;N;;;;;\n11A80;SOYOMBO LETTER SSA;Lo;0;L;;;;;N;;;;;\n11A81;SOYOMBO LETTER SA;Lo;0;L;;;;;N;;;;;\n11A82;SOYOMBO LETTER HA;Lo;0;L;;;;;N;;;;;\n11A83;SOYOMBO LETTER KSSA;Lo;0;L;;;;;N;;;;;\n11A84;SOYOMBO SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;\n11A85;SOYOMBO SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;\n11A86;SOYOMBO CLUSTER-INITIAL LETTER RA;Lo;0;L;;;;;N;;;;;\n11A87;SOYOMBO CLUSTER-INITIAL LETTER LA;Lo;0;L;;;;;N;;;;;\n11A88;SOYOMBO CLUSTER-INITIAL LETTER SHA;Lo;0;L;;;;;N;;;;;\n11A89;SOYOMBO CLUSTER-INITIAL LETTER SA;Lo;0;L;;;;;N;;;;;\n11A8A;SOYOMBO FINAL CONSONANT SIGN G;Mn;0;NSM;;;;;N;;;;;\n11A8B;SOYOMBO FINAL CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;\n11A8C;SOYOMBO FINAL CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;\n11A8D;SOYOMBO FINAL CONSONANT SIGN D;Mn;0;NSM;;;;;N;;;;;\n11A8E;SOYOMBO FINAL CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;\n11A8F;SOYOMBO FINAL CONSONANT SIGN B;Mn;0;NSM;;;;;N;;;;;\n11A90;SOYOMBO FINAL CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;\n11A91;SOYOMBO FINAL CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;\n11A92;SOYOMBO FINAL CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;\n11A93;SOYOMBO FINAL CONSONANT SIGN SH;Mn;0;NSM;;;;;N;;;;;\n11A94;SOYOMBO FINAL CONSONANT SIGN S;Mn;0;NSM;;;;;N;;;;;\n11A95;SOYOMBO FINAL CONSONANT SIGN -A;Mn;0;NSM;;;;;N;;;;;\n11A96;SOYOMBO SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11A97;SOYOMBO SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11A98;SOYOMBO GEMINATION MARK;Mn;0;NSM;;;;;N;;;;;\n11A99;SOYOMBO SUBJOINER;Mn;9;NSM;;;;;N;;;;;\n11A9A;SOYOMBO MARK TSHEG;Po;0;L;;;;;N;;;;;\n11A9B;SOYOMBO MARK SHAD;Po;0;L;;;;;N;;;;;\n11A9C;SOYOMBO MARK DOUBLE SHAD;Po;0;L;;;;;N;;;;;\n11A9D;SOYOMBO MARK PLUTA;Lo;0;L;;;;;N;;;;;\n11A9E;SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME;Po;0;L;;;;;N;;;;;\n11A9F;SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME;Po;0;L;;;;;N;;;;;\n11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;;\n11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;;\n11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;;\n11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;;\n11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;;\n11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;;\n11AC3;PAU CIN HAU LETTER MA;Lo;0;L;;;;;N;;;;;\n11AC4;PAU CIN HAU LETTER DA;Lo;0;L;;;;;N;;;;;\n11AC5;PAU CIN HAU LETTER ZA;Lo;0;L;;;;;N;;;;;\n11AC6;PAU CIN HAU LETTER VA;Lo;0;L;;;;;N;;;;;\n11AC7;PAU CIN HAU LETTER NGA;Lo;0;L;;;;;N;;;;;\n11AC8;PAU CIN HAU LETTER HA;Lo;0;L;;;;;N;;;;;\n11AC9;PAU CIN HAU LETTER GA;Lo;0;L;;;;;N;;;;;\n11ACA;PAU CIN HAU LETTER KHA;Lo;0;L;;;;;N;;;;;\n11ACB;PAU CIN HAU LETTER SA;Lo;0;L;;;;;N;;;;;\n11ACC;PAU CIN HAU LETTER BA;Lo;0;L;;;;;N;;;;;\n11ACD;PAU CIN HAU LETTER CA;Lo;0;L;;;;;N;;;;;\n11ACE;PAU CIN HAU LETTER TA;Lo;0;L;;;;;N;;;;;\n11ACF;PAU CIN HAU LETTER THA;Lo;0;L;;;;;N;;;;;\n11AD0;PAU CIN HAU LETTER NA;Lo;0;L;;;;;N;;;;;\n11AD1;PAU CIN HAU LETTER PHA;Lo;0;L;;;;;N;;;;;\n11AD2;PAU CIN HAU LETTER RA;Lo;0;L;;;;;N;;;;;\n11AD3;PAU CIN HAU LETTER FA;Lo;0;L;;;;;N;;;;;\n11AD4;PAU CIN HAU LETTER CHA;Lo;0;L;;;;;N;;;;;\n11AD5;PAU CIN HAU LETTER A;Lo;0;L;;;;;N;;;;;\n11AD6;PAU CIN HAU LETTER E;Lo;0;L;;;;;N;;;;;\n11AD7;PAU CIN HAU LETTER I;Lo;0;L;;;;;N;;;;;\n11AD8;PAU CIN HAU LETTER O;Lo;0;L;;;;;N;;;;;\n11AD9;PAU CIN HAU LETTER U;Lo;0;L;;;;;N;;;;;\n11ADA;PAU CIN HAU LETTER UA;Lo;0;L;;;;;N;;;;;\n11ADB;PAU CIN HAU LETTER IA;Lo;0;L;;;;;N;;;;;\n11ADC;PAU CIN HAU LETTER FINAL P;Lo;0;L;;;;;N;;;;;\n11ADD;PAU CIN HAU LETTER FINAL K;Lo;0;L;;;;;N;;;;;\n11ADE;PAU CIN HAU LETTER FINAL T;Lo;0;L;;;;;N;;;;;\n11ADF;PAU CIN HAU LETTER FINAL M;Lo;0;L;;;;;N;;;;;\n11AE0;PAU CIN HAU LETTER FINAL N;Lo;0;L;;;;;N;;;;;\n11AE1;PAU CIN HAU LETTER FINAL L;Lo;0;L;;;;;N;;;;;\n11AE2;PAU CIN HAU LETTER FINAL W;Lo;0;L;;;;;N;;;;;\n11AE3;PAU CIN HAU LETTER FINAL NG;Lo;0;L;;;;;N;;;;;\n11AE4;PAU CIN HAU LETTER FINAL Y;Lo;0;L;;;;;N;;;;;\n11AE5;PAU CIN HAU RISING TONE LONG;Lo;0;L;;;;;N;;;;;\n11AE6;PAU CIN HAU RISING TONE;Lo;0;L;;;;;N;;;;;\n11AE7;PAU CIN HAU SANDHI GLOTTAL STOP;Lo;0;L;;;;;N;;;;;\n11AE8;PAU CIN HAU RISING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;\n11AE9;PAU CIN HAU RISING TONE FINAL;Lo;0;L;;;;;N;;;;;\n11AEA;PAU CIN HAU SANDHI GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;\n11AEB;PAU CIN HAU SANDHI TONE LONG;Lo;0;L;;;;;N;;;;;\n11AEC;PAU CIN HAU SANDHI TONE;Lo;0;L;;;;;N;;;;;\n11AED;PAU CIN HAU SANDHI TONE LONG FINAL;Lo;0;L;;;;;N;;;;;\n11AEE;PAU CIN HAU SANDHI TONE FINAL;Lo;0;L;;;;;N;;;;;\n11AEF;PAU CIN HAU MID-LEVEL TONE;Lo;0;L;;;;;N;;;;;\n11AF0;PAU CIN HAU GLOTTAL STOP VARIANT;Lo;0;L;;;;;N;;;;;\n11AF1;PAU CIN HAU MID-LEVEL TONE LONG FINAL;Lo;0;L;;;;;N;;;;;\n11AF2;PAU CIN HAU MID-LEVEL TONE FINAL;Lo;0;L;;;;;N;;;;;\n11AF3;PAU CIN HAU LOW-FALLING TONE LONG;Lo;0;L;;;;;N;;;;;\n11AF4;PAU CIN HAU LOW-FALLING TONE;Lo;0;L;;;;;N;;;;;\n11AF5;PAU CIN HAU GLOTTAL STOP;Lo;0;L;;;;;N;;;;;\n11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;\n11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;;\n11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;\n11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;\n11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;\n11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;\n11C03;BHAIKSUKI LETTER II;Lo;0;L;;;;;N;;;;;\n11C04;BHAIKSUKI LETTER U;Lo;0;L;;;;;N;;;;;\n11C05;BHAIKSUKI LETTER UU;Lo;0;L;;;;;N;;;;;\n11C06;BHAIKSUKI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;\n11C07;BHAIKSUKI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;\n11C08;BHAIKSUKI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;\n11C0A;BHAIKSUKI LETTER E;Lo;0;L;;;;;N;;;;;\n11C0B;BHAIKSUKI LETTER AI;Lo;0;L;;;;;N;;;;;\n11C0C;BHAIKSUKI LETTER O;Lo;0;L;;;;;N;;;;;\n11C0D;BHAIKSUKI LETTER AU;Lo;0;L;;;;;N;;;;;\n11C0E;BHAIKSUKI LETTER KA;Lo;0;L;;;;;N;;;;;\n11C0F;BHAIKSUKI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11C10;BHAIKSUKI LETTER GA;Lo;0;L;;;;;N;;;;;\n11C11;BHAIKSUKI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11C12;BHAIKSUKI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11C13;BHAIKSUKI LETTER CA;Lo;0;L;;;;;N;;;;;\n11C14;BHAIKSUKI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11C15;BHAIKSUKI LETTER JA;Lo;0;L;;;;;N;;;;;\n11C16;BHAIKSUKI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11C17;BHAIKSUKI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11C18;BHAIKSUKI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11C19;BHAIKSUKI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11C1A;BHAIKSUKI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11C1B;BHAIKSUKI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11C1C;BHAIKSUKI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11C1D;BHAIKSUKI LETTER TA;Lo;0;L;;;;;N;;;;;\n11C1E;BHAIKSUKI LETTER THA;Lo;0;L;;;;;N;;;;;\n11C1F;BHAIKSUKI LETTER DA;Lo;0;L;;;;;N;;;;;\n11C20;BHAIKSUKI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11C21;BHAIKSUKI LETTER NA;Lo;0;L;;;;;N;;;;;\n11C22;BHAIKSUKI LETTER PA;Lo;0;L;;;;;N;;;;;\n11C23;BHAIKSUKI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11C24;BHAIKSUKI LETTER BA;Lo;0;L;;;;;N;;;;;\n11C25;BHAIKSUKI LETTER BHA;Lo;0;L;;;;;N;;;;;\n11C26;BHAIKSUKI LETTER MA;Lo;0;L;;;;;N;;;;;\n11C27;BHAIKSUKI LETTER YA;Lo;0;L;;;;;N;;;;;\n11C28;BHAIKSUKI LETTER RA;Lo;0;L;;;;;N;;;;;\n11C29;BHAIKSUKI LETTER LA;Lo;0;L;;;;;N;;;;;\n11C2A;BHAIKSUKI LETTER VA;Lo;0;L;;;;;N;;;;;\n11C2B;BHAIKSUKI LETTER SHA;Lo;0;L;;;;;N;;;;;\n11C2C;BHAIKSUKI LETTER SSA;Lo;0;L;;;;;N;;;;;\n11C2D;BHAIKSUKI LETTER SA;Lo;0;L;;;;;N;;;;;\n11C2E;BHAIKSUKI LETTER HA;Lo;0;L;;;;;N;;;;;\n11C2F;BHAIKSUKI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11C30;BHAIKSUKI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11C31;BHAIKSUKI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n11C32;BHAIKSUKI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11C33;BHAIKSUKI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;\n11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;\n11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11C3F;BHAIKSUKI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;\n11C40;BHAIKSUKI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;\n11C41;BHAIKSUKI DANDA;Po;0;L;;;;;N;;;;;\n11C42;BHAIKSUKI DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n11C43;BHAIKSUKI WORD SEPARATOR;Po;0;L;;;;;N;;;;;\n11C44;BHAIKSUKI GAP FILLER-1;Po;0;L;;;;;N;;;;;\n11C45;BHAIKSUKI GAP FILLER-2;Po;0;L;;;;;N;;;;;\n11C50;BHAIKSUKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11C51;BHAIKSUKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11C52;BHAIKSUKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11C53;BHAIKSUKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11C54;BHAIKSUKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11C55;BHAIKSUKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11C56;BHAIKSUKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11C57;BHAIKSUKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11C58;BHAIKSUKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11C59;BHAIKSUKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11C5A;BHAIKSUKI NUMBER ONE;No;0;L;;;;1;N;;;;;\n11C5B;BHAIKSUKI NUMBER TWO;No;0;L;;;;2;N;;;;;\n11C5C;BHAIKSUKI NUMBER THREE;No;0;L;;;;3;N;;;;;\n11C5D;BHAIKSUKI NUMBER FOUR;No;0;L;;;;4;N;;;;;\n11C5E;BHAIKSUKI NUMBER FIVE;No;0;L;;;;5;N;;;;;\n11C5F;BHAIKSUKI NUMBER SIX;No;0;L;;;;6;N;;;;;\n11C60;BHAIKSUKI NUMBER SEVEN;No;0;L;;;;7;N;;;;;\n11C61;BHAIKSUKI NUMBER EIGHT;No;0;L;;;;8;N;;;;;\n11C62;BHAIKSUKI NUMBER NINE;No;0;L;;;;9;N;;;;;\n11C63;BHAIKSUKI NUMBER TEN;No;0;L;;;;10;N;;;;;\n11C64;BHAIKSUKI NUMBER TWENTY;No;0;L;;;;20;N;;;;;\n11C65;BHAIKSUKI NUMBER THIRTY;No;0;L;;;;30;N;;;;;\n11C66;BHAIKSUKI NUMBER FORTY;No;0;L;;;;40;N;;;;;\n11C67;BHAIKSUKI NUMBER FIFTY;No;0;L;;;;50;N;;;;;\n11C68;BHAIKSUKI NUMBER SIXTY;No;0;L;;;;60;N;;;;;\n11C69;BHAIKSUKI NUMBER SEVENTY;No;0;L;;;;70;N;;;;;\n11C6A;BHAIKSUKI NUMBER EIGHTY;No;0;L;;;;80;N;;;;;\n11C6B;BHAIKSUKI NUMBER NINETY;No;0;L;;;;90;N;;;;;\n11C6C;BHAIKSUKI HUNDREDS UNIT MARK;No;0;L;;;;100;N;;;;;\n11C70;MARCHEN HEAD MARK;Po;0;L;;;;;N;;;;;\n11C71;MARCHEN MARK SHAD;Po;0;L;;;;;N;;;;;\n11C72;MARCHEN LETTER KA;Lo;0;L;;;;;N;;;;;\n11C73;MARCHEN LETTER KHA;Lo;0;L;;;;;N;;;;;\n11C74;MARCHEN LETTER GA;Lo;0;L;;;;;N;;;;;\n11C75;MARCHEN LETTER NGA;Lo;0;L;;;;;N;;;;;\n11C76;MARCHEN LETTER CA;Lo;0;L;;;;;N;;;;;\n11C77;MARCHEN LETTER CHA;Lo;0;L;;;;;N;;;;;\n11C78;MARCHEN LETTER JA;Lo;0;L;;;;;N;;;;;\n11C79;MARCHEN LETTER NYA;Lo;0;L;;;;;N;;;;;\n11C7A;MARCHEN LETTER TA;Lo;0;L;;;;;N;;;;;\n11C7B;MARCHEN LETTER THA;Lo;0;L;;;;;N;;;;;\n11C7C;MARCHEN LETTER DA;Lo;0;L;;;;;N;;;;;\n11C7D;MARCHEN LETTER NA;Lo;0;L;;;;;N;;;;;\n11C7E;MARCHEN LETTER PA;Lo;0;L;;;;;N;;;;;\n11C7F;MARCHEN LETTER PHA;Lo;0;L;;;;;N;;;;;\n11C80;MARCHEN LETTER BA;Lo;0;L;;;;;N;;;;;\n11C81;MARCHEN LETTER MA;Lo;0;L;;;;;N;;;;;\n11C82;MARCHEN LETTER TSA;Lo;0;L;;;;;N;;;;;\n11C83;MARCHEN LETTER TSHA;Lo;0;L;;;;;N;;;;;\n11C84;MARCHEN LETTER DZA;Lo;0;L;;;;;N;;;;;\n11C85;MARCHEN LETTER WA;Lo;0;L;;;;;N;;;;;\n11C86;MARCHEN LETTER ZHA;Lo;0;L;;;;;N;;;;;\n11C87;MARCHEN LETTER ZA;Lo;0;L;;;;;N;;;;;\n11C88;MARCHEN LETTER -A;Lo;0;L;;;;;N;;;;;\n11C89;MARCHEN LETTER YA;Lo;0;L;;;;;N;;;;;\n11C8A;MARCHEN LETTER RA;Lo;0;L;;;;;N;;;;;\n11C8B;MARCHEN LETTER LA;Lo;0;L;;;;;N;;;;;\n11C8C;MARCHEN LETTER SHA;Lo;0;L;;;;;N;;;;;\n11C8D;MARCHEN LETTER SA;Lo;0;L;;;;;N;;;;;\n11C8E;MARCHEN LETTER HA;Lo;0;L;;;;;N;;;;;\n11C8F;MARCHEN LETTER A;Lo;0;L;;;;;N;;;;;\n11C92;MARCHEN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;\n11C93;MARCHEN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;\n11C94;MARCHEN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;\n11C95;MARCHEN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;\n11C96;MARCHEN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;\n11C97;MARCHEN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;\n11C98;MARCHEN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;\n11C99;MARCHEN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;\n11C9A;MARCHEN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;\n11C9B;MARCHEN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;\n11C9C;MARCHEN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;\n11C9D;MARCHEN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;\n11C9E;MARCHEN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;\n11C9F;MARCHEN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;\n11CA0;MARCHEN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;\n11CA1;MARCHEN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;\n11CA2;MARCHEN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;\n11CA3;MARCHEN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;\n11CA4;MARCHEN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;\n11CA5;MARCHEN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;;\n11CA6;MARCHEN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;\n11CA7;MARCHEN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;\n11CA9;MARCHEN SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;\n11CAA;MARCHEN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;;\n11CAB;MARCHEN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;\n11CAC;MARCHEN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;\n11CAD;MARCHEN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;\n11CAE;MARCHEN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;\n11CAF;MARCHEN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;\n11CB0;MARCHEN VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\n11CB1;MARCHEN VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11CB2;MARCHEN VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11CB3;MARCHEN VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11CB4;MARCHEN VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n11CB5;MARCHEN SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11CB6;MARCHEN SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;\n11D00;MASARAM GONDI LETTER A;Lo;0;L;;;;;N;;;;;\n11D01;MASARAM GONDI LETTER AA;Lo;0;L;;;;;N;;;;;\n11D02;MASARAM GONDI LETTER I;Lo;0;L;;;;;N;;;;;\n11D03;MASARAM GONDI LETTER II;Lo;0;L;;;;;N;;;;;\n11D04;MASARAM GONDI LETTER U;Lo;0;L;;;;;N;;;;;\n11D05;MASARAM GONDI LETTER UU;Lo;0;L;;;;;N;;;;;\n11D06;MASARAM GONDI LETTER E;Lo;0;L;;;;;N;;;;;\n11D08;MASARAM GONDI LETTER AI;Lo;0;L;;;;;N;;;;;\n11D09;MASARAM GONDI LETTER O;Lo;0;L;;;;;N;;;;;\n11D0B;MASARAM GONDI LETTER AU;Lo;0;L;;;;;N;;;;;\n11D0C;MASARAM GONDI LETTER KA;Lo;0;L;;;;;N;;;;;\n11D0D;MASARAM GONDI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11D0E;MASARAM GONDI LETTER GA;Lo;0;L;;;;;N;;;;;\n11D0F;MASARAM GONDI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11D10;MASARAM GONDI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11D11;MASARAM GONDI LETTER CA;Lo;0;L;;;;;N;;;;;\n11D12;MASARAM GONDI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11D13;MASARAM GONDI LETTER JA;Lo;0;L;;;;;N;;;;;\n11D14;MASARAM GONDI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11D15;MASARAM GONDI LETTER NYA;Lo;0;L;;;;;N;;;;;\n11D16;MASARAM GONDI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11D17;MASARAM GONDI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11D18;MASARAM GONDI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11D19;MASARAM GONDI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11D1A;MASARAM GONDI LETTER NNA;Lo;0;L;;;;;N;;;;;\n11D1B;MASARAM GONDI LETTER TA;Lo;0;L;;;;;N;;;;;\n11D1C;MASARAM GONDI LETTER THA;Lo;0;L;;;;;N;;;;;\n11D1D;MASARAM GONDI LETTER DA;Lo;0;L;;;;;N;;;;;\n11D1E;MASARAM GONDI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11D1F;MASARAM GONDI LETTER NA;Lo;0;L;;;;;N;;;;;\n11D20;MASARAM GONDI LETTER PA;Lo;0;L;;;;;N;;;;;\n11D21;MASARAM GONDI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11D22;MASARAM GONDI LETTER BA;Lo;0;L;;;;;N;;;;;\n11D23;MASARAM GONDI LETTER BHA;Lo;0;L;;;;;N;;;;;\n11D24;MASARAM GONDI LETTER MA;Lo;0;L;;;;;N;;;;;\n11D25;MASARAM GONDI LETTER YA;Lo;0;L;;;;;N;;;;;\n11D26;MASARAM GONDI LETTER RA;Lo;0;L;;;;;N;;;;;\n11D27;MASARAM GONDI LETTER LA;Lo;0;L;;;;;N;;;;;\n11D28;MASARAM GONDI LETTER VA;Lo;0;L;;;;;N;;;;;\n11D29;MASARAM GONDI LETTER SHA;Lo;0;L;;;;;N;;;;;\n11D2A;MASARAM GONDI LETTER SSA;Lo;0;L;;;;;N;;;;;\n11D2B;MASARAM GONDI LETTER SA;Lo;0;L;;;;;N;;;;;\n11D2C;MASARAM GONDI LETTER HA;Lo;0;L;;;;;N;;;;;\n11D2D;MASARAM GONDI LETTER LLA;Lo;0;L;;;;;N;;;;;\n11D2E;MASARAM GONDI LETTER KSSA;Lo;0;L;;;;;N;;;;;\n11D2F;MASARAM GONDI LETTER JNYA;Lo;0;L;;;;;N;;;;;\n11D30;MASARAM GONDI LETTER TRA;Lo;0;L;;;;;N;;;;;\n11D31;MASARAM GONDI VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;\n11D32;MASARAM GONDI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11D33;MASARAM GONDI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;\n11D34;MASARAM GONDI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11D35;MASARAM GONDI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;\n11D36;MASARAM GONDI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;\n11D3A;MASARAM GONDI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;\n11D3C;MASARAM GONDI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11D3D;MASARAM GONDI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;\n11D3F;MASARAM GONDI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;\n11D40;MASARAM GONDI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11D41;MASARAM GONDI SIGN VISARGA;Mn;0;NSM;;;;;N;;;;;\n11D42;MASARAM GONDI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;\n11D43;MASARAM GONDI SIGN CANDRA;Mn;0;NSM;;;;;N;;;;;\n11D44;MASARAM GONDI SIGN HALANTA;Mn;9;NSM;;;;;N;;;;;\n11D45;MASARAM GONDI VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11D46;MASARAM GONDI REPHA;Lo;0;L;;;;;N;;;;;\n11D47;MASARAM GONDI RA-KARA;Mn;0;NSM;;;;;N;;;;;\n11D50;MASARAM GONDI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11D51;MASARAM GONDI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11D52;MASARAM GONDI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11D53;MASARAM GONDI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11D54;MASARAM GONDI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11D55;MASARAM GONDI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11D56;MASARAM GONDI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11D57;MASARAM GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11D58;MASARAM GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11D59;MASARAM GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11D60;GUNJALA GONDI LETTER A;Lo;0;L;;;;;N;;;;;\n11D61;GUNJALA GONDI LETTER AA;Lo;0;L;;;;;N;;;;;\n11D62;GUNJALA GONDI LETTER I;Lo;0;L;;;;;N;;;;;\n11D63;GUNJALA GONDI LETTER II;Lo;0;L;;;;;N;;;;;\n11D64;GUNJALA GONDI LETTER U;Lo;0;L;;;;;N;;;;;\n11D65;GUNJALA GONDI LETTER UU;Lo;0;L;;;;;N;;;;;\n11D67;GUNJALA GONDI LETTER EE;Lo;0;L;;;;;N;;;;;\n11D68;GUNJALA GONDI LETTER AI;Lo;0;L;;;;;N;;;;;\n11D6A;GUNJALA GONDI LETTER OO;Lo;0;L;;;;;N;;;;;\n11D6B;GUNJALA GONDI LETTER AU;Lo;0;L;;;;;N;;;;;\n11D6C;GUNJALA GONDI LETTER YA;Lo;0;L;;;;;N;;;;;\n11D6D;GUNJALA GONDI LETTER VA;Lo;0;L;;;;;N;;;;;\n11D6E;GUNJALA GONDI LETTER BA;Lo;0;L;;;;;N;;;;;\n11D6F;GUNJALA GONDI LETTER BHA;Lo;0;L;;;;;N;;;;;\n11D70;GUNJALA GONDI LETTER MA;Lo;0;L;;;;;N;;;;;\n11D71;GUNJALA GONDI LETTER KA;Lo;0;L;;;;;N;;;;;\n11D72;GUNJALA GONDI LETTER KHA;Lo;0;L;;;;;N;;;;;\n11D73;GUNJALA GONDI LETTER TA;Lo;0;L;;;;;N;;;;;\n11D74;GUNJALA GONDI LETTER THA;Lo;0;L;;;;;N;;;;;\n11D75;GUNJALA GONDI LETTER LA;Lo;0;L;;;;;N;;;;;\n11D76;GUNJALA GONDI LETTER GA;Lo;0;L;;;;;N;;;;;\n11D77;GUNJALA GONDI LETTER GHA;Lo;0;L;;;;;N;;;;;\n11D78;GUNJALA GONDI LETTER DA;Lo;0;L;;;;;N;;;;;\n11D79;GUNJALA GONDI LETTER DHA;Lo;0;L;;;;;N;;;;;\n11D7A;GUNJALA GONDI LETTER NA;Lo;0;L;;;;;N;;;;;\n11D7B;GUNJALA GONDI LETTER CA;Lo;0;L;;;;;N;;;;;\n11D7C;GUNJALA GONDI LETTER CHA;Lo;0;L;;;;;N;;;;;\n11D7D;GUNJALA GONDI LETTER TTA;Lo;0;L;;;;;N;;;;;\n11D7E;GUNJALA GONDI LETTER TTHA;Lo;0;L;;;;;N;;;;;\n11D7F;GUNJALA GONDI LETTER LLA;Lo;0;L;;;;;N;;;;;\n11D80;GUNJALA GONDI LETTER JA;Lo;0;L;;;;;N;;;;;\n11D81;GUNJALA GONDI LETTER JHA;Lo;0;L;;;;;N;;;;;\n11D82;GUNJALA GONDI LETTER DDA;Lo;0;L;;;;;N;;;;;\n11D83;GUNJALA GONDI LETTER DDHA;Lo;0;L;;;;;N;;;;;\n11D84;GUNJALA GONDI LETTER NGA;Lo;0;L;;;;;N;;;;;\n11D85;GUNJALA GONDI LETTER PA;Lo;0;L;;;;;N;;;;;\n11D86;GUNJALA GONDI LETTER PHA;Lo;0;L;;;;;N;;;;;\n11D87;GUNJALA GONDI LETTER HA;Lo;0;L;;;;;N;;;;;\n11D88;GUNJALA GONDI LETTER RA;Lo;0;L;;;;;N;;;;;\n11D89;GUNJALA GONDI LETTER SA;Lo;0;L;;;;;N;;;;;\n11D8A;GUNJALA GONDI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n11D8B;GUNJALA GONDI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n11D8C;GUNJALA GONDI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n11D8D;GUNJALA GONDI VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n11D8E;GUNJALA GONDI VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n11D90;GUNJALA GONDI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;\n11D91;GUNJALA GONDI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;\n11D93;GUNJALA GONDI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n11D94;GUNJALA GONDI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n11D95;GUNJALA GONDI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;\n11D96;GUNJALA GONDI SIGN VISARGA;Mc;0;L;;;;;N;;;;;\n11D97;GUNJALA GONDI VIRAMA;Mn;9;NSM;;;;;N;;;;;\n11D98;GUNJALA GONDI OM;Lo;0;L;;;;;N;;;;;\n11DA0;GUNJALA GONDI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n11DA1;GUNJALA GONDI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n11DA2;GUNJALA GONDI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n11DA3;GUNJALA GONDI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n11DA4;GUNJALA GONDI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n11DA5;GUNJALA GONDI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n11DA6;GUNJALA GONDI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n11DA7;GUNJALA GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n11DA8;GUNJALA GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n11DA9;GUNJALA GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n11EE0;MAKASAR LETTER KA;Lo;0;L;;;;;N;;;;;\n11EE1;MAKASAR LETTER GA;Lo;0;L;;;;;N;;;;;\n11EE2;MAKASAR LETTER NGA;Lo;0;L;;;;;N;;;;;\n11EE3;MAKASAR LETTER PA;Lo;0;L;;;;;N;;;;;\n11EE4;MAKASAR LETTER BA;Lo;0;L;;;;;N;;;;;\n11EE5;MAKASAR LETTER MA;Lo;0;L;;;;;N;;;;;\n11EE6;MAKASAR LETTER TA;Lo;0;L;;;;;N;;;;;\n11EE7;MAKASAR LETTER DA;Lo;0;L;;;;;N;;;;;\n11EE8;MAKASAR LETTER NA;Lo;0;L;;;;;N;;;;;\n11EE9;MAKASAR LETTER CA;Lo;0;L;;;;;N;;;;;\n11EEA;MAKASAR LETTER JA;Lo;0;L;;;;;N;;;;;\n11EEB;MAKASAR LETTER NYA;Lo;0;L;;;;;N;;;;;\n11EEC;MAKASAR LETTER YA;Lo;0;L;;;;;N;;;;;\n11EED;MAKASAR LETTER RA;Lo;0;L;;;;;N;;;;;\n11EEE;MAKASAR LETTER LA;Lo;0;L;;;;;N;;;;;\n11EEF;MAKASAR LETTER VA;Lo;0;L;;;;;N;;;;;\n11EF0;MAKASAR LETTER SA;Lo;0;L;;;;;N;;;;;\n11EF1;MAKASAR LETTER A;Lo;0;L;;;;;N;;;;;\n11EF2;MAKASAR ANGKA;Lo;0;L;;;;;N;;;;;\n11EF3;MAKASAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;\n11EF4;MAKASAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;\n11EF5;MAKASAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;\n11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;\n11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;\n11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;\n11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;\n11FC2;TAMIL FRACTION ONE EIGHTIETH;No;0;L;;;;1/80;N;;;;;\n11FC3;TAMIL FRACTION ONE SIXTY-FOURTH;No;0;L;;;;1/64;N;;;;;\n11FC4;TAMIL FRACTION ONE FORTIETH;No;0;L;;;;1/40;N;;;;;\n11FC5;TAMIL FRACTION ONE THIRTY-SECOND;No;0;L;;;;1/32;N;;;;;\n11FC6;TAMIL FRACTION THREE EIGHTIETHS;No;0;L;;;;3/80;N;;;;;\n11FC7;TAMIL FRACTION THREE SIXTY-FOURTHS;No;0;L;;;;3/64;N;;;;;\n11FC8;TAMIL FRACTION ONE TWENTIETH;No;0;L;;;;1/20;N;;;;;\n11FC9;TAMIL FRACTION ONE SIXTEENTH-1;No;0;L;;;;1/16;N;;;;;\n11FCA;TAMIL FRACTION ONE SIXTEENTH-2;No;0;L;;;;1/16;N;;;;;\n11FCB;TAMIL FRACTION ONE TENTH;No;0;L;;;;1/10;N;;;;;\n11FCC;TAMIL FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;\n11FCD;TAMIL FRACTION THREE TWENTIETHS;No;0;L;;;;3/20;N;;;;;\n11FCE;TAMIL FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;\n11FCF;TAMIL FRACTION ONE FIFTH;No;0;L;;;;1/5;N;;;;;\n11FD0;TAMIL FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;\n11FD1;TAMIL FRACTION ONE HALF-1;No;0;L;;;;1/2;N;;;;;\n11FD2;TAMIL FRACTION ONE HALF-2;No;0;L;;;;1/2;N;;;;;\n11FD3;TAMIL FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;\n11FD4;TAMIL FRACTION DOWNSCALING FACTOR KIIZH;No;0;L;;;;1/320;N;;;;;\n11FD5;TAMIL SIGN NEL;So;0;ON;;;;;N;;;;;\n11FD6;TAMIL SIGN CEVITU;So;0;ON;;;;;N;;;;;\n11FD7;TAMIL SIGN AAZHAAKKU;So;0;ON;;;;;N;;;;;\n11FD8;TAMIL SIGN UZHAKKU;So;0;ON;;;;;N;;;;;\n11FD9;TAMIL SIGN MUUVUZHAKKU;So;0;ON;;;;;N;;;;;\n11FDA;TAMIL SIGN KURUNI;So;0;ON;;;;;N;;;;;\n11FDB;TAMIL SIGN PATHAKKU;So;0;ON;;;;;N;;;;;\n11FDC;TAMIL SIGN MUKKURUNI;So;0;ON;;;;;N;;;;;\n11FDD;TAMIL SIGN KAACU;Sc;0;ET;;;;;N;;;;;\n11FDE;TAMIL SIGN PANAM;Sc;0;ET;;;;;N;;;;;\n11FDF;TAMIL SIGN PON;Sc;0;ET;;;;;N;;;;;\n11FE0;TAMIL SIGN VARAAKAN;Sc;0;ET;;;;;N;;;;;\n11FE1;TAMIL SIGN PAARAM;So;0;ON;;;;;N;;;;;\n11FE2;TAMIL SIGN KUZHI;So;0;ON;;;;;N;;;;;\n11FE3;TAMIL SIGN VELI;So;0;ON;;;;;N;;;;;\n11FE4;TAMIL WET CULTIVATION SIGN;So;0;ON;;;;;N;;;;;\n11FE5;TAMIL DRY CULTIVATION SIGN;So;0;ON;;;;;N;;;;;\n11FE6;TAMIL LAND SIGN;So;0;ON;;;;;N;;;;;\n11FE7;TAMIL SALT PAN SIGN;So;0;ON;;;;;N;;;;;\n11FE8;TAMIL TRADITIONAL CREDIT SIGN;So;0;ON;;;;;N;;;;;\n11FE9;TAMIL TRADITIONAL NUMBER SIGN;So;0;ON;;;;;N;;;;;\n11FEA;TAMIL CURRENT SIGN;So;0;ON;;;;;N;;;;;\n11FEB;TAMIL AND ODD SIGN;So;0;ON;;;;;N;;;;;\n11FEC;TAMIL SPENT SIGN;So;0;ON;;;;;N;;;;;\n11FED;TAMIL TOTAL SIGN;So;0;ON;;;;;N;;;;;\n11FEE;TAMIL IN POSSESSION SIGN;So;0;ON;;;;;N;;;;;\n11FEF;TAMIL STARTING FROM SIGN;So;0;ON;;;;;N;;;;;\n11FF0;TAMIL SIGN MUTHALIYA;So;0;ON;;;;;N;;;;;\n11FF1;TAMIL SIGN VAKAIYARAA;So;0;ON;;;;;N;;;;;\n11FFF;TAMIL PUNCTUATION END OF TEXT;Po;0;L;;;;;N;;;;;\n12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;\n12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;\n12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;\n12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;\n12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;\n12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;\n12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;\n12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;\n12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;\n1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;\n1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;\n1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;\n1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;\n1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;\n12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;\n12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;\n12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;\n12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;\n12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;\n12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;\n12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;\n12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;\n1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;\n1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;\n1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;\n1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;\n1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;\n1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;\n12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;\n12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;\n12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;\n12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;\n12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;\n12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;\n12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;\n12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;\n12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;\n12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;\n1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;\n1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;\n1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;\n1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;\n1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;\n1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;\n12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;\n12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;\n12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;\n12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;\n12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;\n12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;\n12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;\n12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;\n12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;\n12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;\n1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;\n1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;\n1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;\n1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;\n1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;\n1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;\n12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;\n12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;\n12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;\n12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;\n12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;\n12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;\n12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;\n12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;\n12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;\n12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;\n1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;\n1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;\n1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;\n1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;\n1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;\n12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;\n12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;\n12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;\n12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;\n12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;\n12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;\n12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;\n12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;\n12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;\n12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;\n1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;\n1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;\n1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;\n1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;\n1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;\n1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;\n12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;\n12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;\n12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;\n12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;\n12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;\n12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;\n12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;\n12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;\n12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;\n12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;\n1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;\n1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;\n1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;\n1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;\n1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;\n1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;\n12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;\n12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;\n12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;\n12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;\n12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;\n12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;\n12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;\n12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;\n12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;\n12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;\n1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;\n1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;\n1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;\n1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;\n1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;\n1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;\n12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;\n12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;\n12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;\n12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;\n12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;\n12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;\n12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;\n12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;\n12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;\n12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;\n1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;\n1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;\n1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;\n1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;\n1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;\n1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;\n12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;\n12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;\n12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;\n12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;\n12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;\n12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;\n12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;\n12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;\n12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;\n12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;\n1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;\n1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;\n1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;\n1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;\n1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;\n120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;\n120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;\n120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;\n120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;\n120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;\n120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;\n120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;\n120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;\n120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;\n120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;\n120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;\n120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;\n120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;\n120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;\n120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;\n120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;\n120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;\n120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;\n120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;\n120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;\n120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;\n120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;\n120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;\n120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;\n120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;\n120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;\n120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;\n120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;\n120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;\n120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;\n120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;\n120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;\n120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;\n120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;\n120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;\n120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;\n120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;\n120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;\n120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;\n120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;\n120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;\n120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;\n120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;\n120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;\n120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;\n120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;\n120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;\n120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;\n120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;\n120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;\n120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;\n120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;\n120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;\n120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;\n120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;\n120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;\n120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;\n120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;\n120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;\n120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;\n120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;\n120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;\n120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;\n120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;\n120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;\n120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;\n120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;\n120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;\n120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;\n120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;\n120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;\n120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;\n120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;\n120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;\n120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;\n120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;\n120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;\n120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;\n120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;\n120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;\n120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;\n120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;\n120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;\n120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;\n120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;\n120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;\n120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;\n120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;\n12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;\n12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;\n12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;\n12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;\n12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;\n12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;\n12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;\n12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;\n12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;\n12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;\n1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;\n1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;\n1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;\n1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;\n1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;\n12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;\n12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;\n12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;\n12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;\n12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;\n12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;\n12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;\n12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;\n12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;\n1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;\n1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;\n1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;\n1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;\n1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;\n12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;\n12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;\n12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;\n12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;\n12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;\n12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;\n12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;\n12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;\n12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;\n12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;\n1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;\n1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;\n1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;\n1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;\n1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;\n1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;\n12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;\n12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;\n12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;\n12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;\n12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;\n12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;\n12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;\n12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;\n12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;\n12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;\n1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;\n1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;\n1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;\n1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;\n1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;\n12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;\n12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;\n12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;\n12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;\n12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;\n12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;\n12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;\n12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;\n12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;\n12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;\n1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;\n1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;\n1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;\n1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;\n1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;\n12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;\n12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;\n12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;\n12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;\n12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;\n12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;\n12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;\n12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;\n12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;\n1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;\n1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;\n1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;\n1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;\n1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;\n1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;\n12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;\n12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;\n12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;\n12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;\n12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;\n12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;\n12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;\n12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;\n12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;\n1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;\n1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;\n1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;\n1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;\n1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;\n1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;\n12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;\n12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;\n12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;\n12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;\n12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;\n12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;\n12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;\n12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;\n12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;\n12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;\n1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;\n1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;\n1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;\n1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;\n1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;\n1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;\n12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;\n12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;\n12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;\n12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;\n12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;\n12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;\n12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;\n12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;\n12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;\n12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;\n1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;\n1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;\n1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;\n1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;\n1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;\n1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;\n12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;\n12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;\n12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;\n12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;\n12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;\n12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;\n12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;\n12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;\n12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;\n1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;\n1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;\n1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;\n1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;\n1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;\n1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;\n121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;\n121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;\n121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;\n121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;\n121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;\n121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;\n121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;\n121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;\n121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;\n121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;\n121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;\n121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;\n121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;\n121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;\n121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;\n121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;\n121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;\n121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;\n121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;\n121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;\n121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;\n121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;\n121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;\n121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;\n121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;\n121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;\n121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;\n121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;\n121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;\n121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;\n121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;\n121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;\n121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;\n121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;\n121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;\n121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;\n121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;\n121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;\n121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;\n121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;\n121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;\n121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;\n121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;\n121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;\n121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;\n121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;\n121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;\n121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;\n121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;\n121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;\n121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;\n121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;\n121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;\n121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;\n121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;\n121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;\n121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;\n121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;\n121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;\n121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;\n121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;\n121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;\n121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;\n121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;\n121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;\n121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;\n121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;\n121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;\n121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;\n121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;\n121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;\n121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;\n121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;\n121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;\n121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;\n121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;\n121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;\n121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;\n121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;\n121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;\n121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;\n121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;\n121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;\n121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;\n121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;\n121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;\n121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;\n121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;\n121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;\n121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;\n121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;\n121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;\n121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;\n121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;\n121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;\n12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;\n12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;\n12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;\n12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;\n12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;\n12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;\n12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;\n12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;\n12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;\n1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;\n1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;\n1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;\n1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;\n1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;\n1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;\n12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;\n12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;\n12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;\n12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;\n12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;\n12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;\n12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;\n12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;\n12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;\n12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;\n1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;\n1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;\n1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;\n1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;\n1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;\n1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;\n12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;\n12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;\n12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;\n12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;\n12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;\n12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;\n12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;\n12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;\n1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;\n1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;\n1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;\n1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;\n1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;\n1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;\n12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;\n12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;\n12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;\n12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;\n12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;\n12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;\n12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;\n12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;\n12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;\n12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;\n1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;\n1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;\n1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;\n1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;\n1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;\n1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;\n12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;\n12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;\n12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;\n12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;\n12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;\n12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;\n12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;\n12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;\n12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;\n12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;\n1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;\n1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;\n1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;\n1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;\n1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;\n1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;\n12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;\n12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;\n12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;\n12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;\n12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;\n12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;\n12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;\n12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;\n1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;\n1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;\n1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;\n1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;\n1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;\n1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;\n12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;\n12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;\n12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;\n12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;\n12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;\n12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;\n12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;\n12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;\n12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;\n12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;\n1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;\n1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;\n1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;\n1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;\n1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;\n1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;\n12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;\n12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;\n12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;\n12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;\n12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;\n12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;\n12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;\n12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;\n12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;\n1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;\n1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;\n1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;\n1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;\n1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;\n1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;\n12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;\n12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;\n12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;\n12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;\n12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;\n12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;\n12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;\n12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;\n12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;\n12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;\n1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;\n1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;\n1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;\n1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;\n1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;\n1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;\n12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;\n12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;\n12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;\n12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;\n12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;\n12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;\n12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;\n12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;\n12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;\n12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;\n1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;\n1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;\n1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;\n1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;\n1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;\n1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;\n122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;\n122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;\n122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;\n122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;\n122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;\n122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;\n122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;\n122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;\n122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;\n122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;\n122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;\n122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;\n122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;\n122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;\n122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;\n122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;\n122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;\n122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;\n122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;\n122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;\n122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;\n122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;\n122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;\n122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;\n122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;\n122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;\n122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;\n122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;\n122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;\n122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;\n122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;\n122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;\n122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;\n122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;\n122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;\n122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;\n122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;\n122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;\n122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;\n122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;\n122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;\n122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;\n122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;\n122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;\n122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;\n122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;\n122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;\n122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;\n122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;\n122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;\n122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;\n122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;\n122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;\n122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;\n122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;\n122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;\n122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;\n122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;\n122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;\n122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;\n122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;\n122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;\n122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;\n122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;\n122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;\n122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;\n122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;\n122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;\n122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;\n122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;\n122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;\n122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;\n122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;\n122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;\n122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;\n122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;\n122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;\n122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;\n122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;\n122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;\n122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;\n122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;\n122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;\n122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;\n122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;\n122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;\n122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;\n122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;\n122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;\n122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;\n122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;\n122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;\n122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;\n12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;\n12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;\n12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;\n12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;\n12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;\n12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;\n12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;\n12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;\n1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;\n1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;\n1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;\n1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;\n1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;\n1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;\n12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;\n12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;\n12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;\n12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;\n12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;\n12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;\n12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;\n12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;\n12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;\n12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;\n1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;\n1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;\n1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;\n1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;\n1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;\n1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;\n12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;\n12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;\n12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;\n12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;\n12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;\n12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;\n12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;\n12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;\n12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;\n1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;\n1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;\n1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;\n1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;\n1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;\n1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;\n12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;\n12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;\n12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;\n12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;\n12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;\n12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;\n12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;\n12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;\n12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;\n12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;\n1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;\n1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;\n1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;\n1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;\n1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;\n12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;\n12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;\n12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;\n12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;\n12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;\n12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;\n12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;\n12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;\n12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;\n12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;\n1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;\n1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;\n1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;\n1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;\n1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;\n1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;\n12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;\n12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;\n12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;\n12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;\n12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;\n12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;\n12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;\n12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;\n12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;\n1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;\n1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;\n1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;\n1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;\n1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;\n12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;\n12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;\n12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;\n12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;\n12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;\n12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;\n12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;\n12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;\n12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;\n12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;\n1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;\n1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;\n1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;\n1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;\n1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;\n1236F;CUNEIFORM SIGN KAP ELAMITE;Lo;0;L;;;;;N;;;;;\n12370;CUNEIFORM SIGN AB TIMES NUN;Lo;0;L;;;;;N;;;;;\n12371;CUNEIFORM SIGN AB2 TIMES A;Lo;0;L;;;;;N;;;;;\n12372;CUNEIFORM SIGN AMAR TIMES KUG;Lo;0;L;;;;;N;;;;;\n12373;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASH;Lo;0;L;;;;;N;;;;;\n12374;CUNEIFORM SIGN DAG3;Lo;0;L;;;;;N;;;;;\n12375;CUNEIFORM SIGN DISH PLUS SHU;Lo;0;L;;;;;N;;;;;\n12376;CUNEIFORM SIGN DUB TIMES SHE;Lo;0;L;;;;;N;;;;;\n12377;CUNEIFORM SIGN EZEN TIMES GUD;Lo;0;L;;;;;N;;;;;\n12378;CUNEIFORM SIGN EZEN TIMES SHE;Lo;0;L;;;;;N;;;;;\n12379;CUNEIFORM SIGN GA2 TIMES AN PLUS KAK PLUS A;Lo;0;L;;;;;N;;;;;\n1237A;CUNEIFORM SIGN GA2 TIMES ASH2;Lo;0;L;;;;;N;;;;;\n1237B;CUNEIFORM SIGN GE22;Lo;0;L;;;;;N;;;;;\n1237C;CUNEIFORM SIGN GIG;Lo;0;L;;;;;N;;;;;\n1237D;CUNEIFORM SIGN HUSH;Lo;0;L;;;;;N;;;;;\n1237E;CUNEIFORM SIGN KA TIMES ANSHE;Lo;0;L;;;;;N;;;;;\n1237F;CUNEIFORM SIGN KA TIMES ASH3;Lo;0;L;;;;;N;;;;;\n12380;CUNEIFORM SIGN KA TIMES GISH;Lo;0;L;;;;;N;;;;;\n12381;CUNEIFORM SIGN KA TIMES GUD;Lo;0;L;;;;;N;;;;;\n12382;CUNEIFORM SIGN KA TIMES HI TIMES ASH2;Lo;0;L;;;;;N;;;;;\n12383;CUNEIFORM SIGN KA TIMES LUM;Lo;0;L;;;;;N;;;;;\n12384;CUNEIFORM SIGN KA TIMES PA;Lo;0;L;;;;;N;;;;;\n12385;CUNEIFORM SIGN KA TIMES SHUL;Lo;0;L;;;;;N;;;;;\n12386;CUNEIFORM SIGN KA TIMES TU;Lo;0;L;;;;;N;;;;;\n12387;CUNEIFORM SIGN KA TIMES UR2;Lo;0;L;;;;;N;;;;;\n12388;CUNEIFORM SIGN LAGAB TIMES GI;Lo;0;L;;;;;N;;;;;\n12389;CUNEIFORM SIGN LU2 SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;\n1238A;CUNEIFORM SIGN LU2 TIMES ESH2 PLUS LAL;Lo;0;L;;;;;N;;;;;\n1238B;CUNEIFORM SIGN LU2 TIMES SHU;Lo;0;L;;;;;N;;;;;\n1238C;CUNEIFORM SIGN MESH;Lo;0;L;;;;;N;;;;;\n1238D;CUNEIFORM SIGN MUSH3 TIMES ZA;Lo;0;L;;;;;N;;;;;\n1238E;CUNEIFORM SIGN NA4;Lo;0;L;;;;;N;;;;;\n1238F;CUNEIFORM SIGN NIN;Lo;0;L;;;;;N;;;;;\n12390;CUNEIFORM SIGN NIN9;Lo;0;L;;;;;N;;;;;\n12391;CUNEIFORM SIGN NINDA2 TIMES BAL;Lo;0;L;;;;;N;;;;;\n12392;CUNEIFORM SIGN NINDA2 TIMES GI;Lo;0;L;;;;;N;;;;;\n12393;CUNEIFORM SIGN NU11 ROTATED NINETY DEGREES;Lo;0;L;;;;;N;;;;;\n12394;CUNEIFORM SIGN PESH2 ASTERISK;Lo;0;L;;;;;N;;;;;\n12395;CUNEIFORM SIGN PIR2;Lo;0;L;;;;;N;;;;;\n12396;CUNEIFORM SIGN SAG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n12397;CUNEIFORM SIGN TI2;Lo;0;L;;;;;N;;;;;\n12398;CUNEIFORM SIGN UM TIMES ME;Lo;0;L;;;;;N;;;;;\n12399;CUNEIFORM SIGN U U;Lo;0;L;;;;;N;;;;;\n12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;\n12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;\n12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;\n12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;\n12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;\n12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;\n12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;\n12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;\n12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;\n12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;\n1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;\n1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;\n1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;\n1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;\n1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;\n1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;\n12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;\n12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;\n12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;\n12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;\n12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;\n12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;\n12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;\n12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;\n12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;\n12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;\n1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;\n1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;\n1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;\n1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;\n1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;\n1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;\n12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;\n12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;\n12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;\n12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;\n12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;\n12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;\n12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;\n12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;\n12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;\n12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;\n1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;\n1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;\n1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;\n1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;\n1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;\n1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;\n12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;\n12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;\n12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;;\n12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;;\n12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;\n12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;\n12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;\n12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;\n12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;\n12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;\n1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;\n1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;\n1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;\n1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;\n1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;\n1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;\n12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;\n12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;\n12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;\n12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;\n12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;\n12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;\n12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;\n12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;\n12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;\n12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;\n1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;\n1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;\n1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;\n1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;\n1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;\n1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;\n12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;\n12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;\n12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;\n12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;\n12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;\n12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;\n12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;2;N;;;;;\n12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;3;N;;;;;\n12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;\n12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;\n1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;\n1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;\n1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;\n1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;\n1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;\n1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;\n12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;\n12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;\n12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;\n12463;CUNEIFORM NUMERIC SIGN ONE QUARTER GUR;Nl;0;L;;;;1/4;N;;;;;\n12464;CUNEIFORM NUMERIC SIGN ONE HALF GUR;Nl;0;L;;;;1/2;N;;;;;\n12465;CUNEIFORM NUMERIC SIGN ELAMITE ONE THIRD;Nl;0;L;;;;1/3;N;;;;;\n12466;CUNEIFORM NUMERIC SIGN ELAMITE TWO THIRDS;Nl;0;L;;;;2/3;N;;;;;\n12467;CUNEIFORM NUMERIC SIGN ELAMITE FORTY;Nl;0;L;;;;40;N;;;;;\n12468;CUNEIFORM NUMERIC SIGN ELAMITE FIFTY;Nl;0;L;;;;50;N;;;;;\n12469;CUNEIFORM NUMERIC SIGN FOUR U VARIANT FORM;Nl;0;L;;;;4;N;;;;;\n1246A;CUNEIFORM NUMERIC SIGN FIVE U VARIANT FORM;Nl;0;L;;;;5;N;;;;;\n1246B;CUNEIFORM NUMERIC SIGN SIX U VARIANT FORM;Nl;0;L;;;;6;N;;;;;\n1246C;CUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORM;Nl;0;L;;;;7;N;;;;;\n1246D;CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM;Nl;0;L;;;;8;N;;;;;\n1246E;CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM;Nl;0;L;;;;9;N;;;;;\n12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;\n12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;\n12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;\n12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;\n12474;CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON;Po;0;L;;;;;N;;;;;\n12480;CUNEIFORM SIGN AB TIMES NUN TENU;Lo;0;L;;;;;N;;;;;\n12481;CUNEIFORM SIGN AB TIMES SHU2;Lo;0;L;;;;;N;;;;;\n12482;CUNEIFORM SIGN AD TIMES ESH2;Lo;0;L;;;;;N;;;;;\n12483;CUNEIFORM SIGN BAD TIMES DISH TENU;Lo;0;L;;;;;N;;;;;\n12484;CUNEIFORM SIGN BAHAR2 TIMES AB2;Lo;0;L;;;;;N;;;;;\n12485;CUNEIFORM SIGN BAHAR2 TIMES NI;Lo;0;L;;;;;N;;;;;\n12486;CUNEIFORM SIGN BAHAR2 TIMES ZA;Lo;0;L;;;;;N;;;;;\n12487;CUNEIFORM SIGN BU OVER BU TIMES NA2;Lo;0;L;;;;;N;;;;;\n12488;CUNEIFORM SIGN DA TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12489;CUNEIFORM SIGN DAG TIMES KUR;Lo;0;L;;;;;N;;;;;\n1248A;CUNEIFORM SIGN DIM TIMES IGI;Lo;0;L;;;;;N;;;;;\n1248B;CUNEIFORM SIGN DIM TIMES U U U;Lo;0;L;;;;;N;;;;;\n1248C;CUNEIFORM SIGN DIM2 TIMES UD;Lo;0;L;;;;;N;;;;;\n1248D;CUNEIFORM SIGN DUG TIMES ANSHE;Lo;0;L;;;;;N;;;;;\n1248E;CUNEIFORM SIGN DUG TIMES ASH;Lo;0;L;;;;;N;;;;;\n1248F;CUNEIFORM SIGN DUG TIMES ASH AT LEFT;Lo;0;L;;;;;N;;;;;\n12490;CUNEIFORM SIGN DUG TIMES DIN;Lo;0;L;;;;;N;;;;;\n12491;CUNEIFORM SIGN DUG TIMES DUN;Lo;0;L;;;;;N;;;;;\n12492;CUNEIFORM SIGN DUG TIMES ERIN2;Lo;0;L;;;;;N;;;;;\n12493;CUNEIFORM SIGN DUG TIMES GA;Lo;0;L;;;;;N;;;;;\n12494;CUNEIFORM SIGN DUG TIMES GI;Lo;0;L;;;;;N;;;;;\n12495;CUNEIFORM SIGN DUG TIMES GIR2 GUNU;Lo;0;L;;;;;N;;;;;\n12496;CUNEIFORM SIGN DUG TIMES GISH;Lo;0;L;;;;;N;;;;;\n12497;CUNEIFORM SIGN DUG TIMES HA;Lo;0;L;;;;;N;;;;;\n12498;CUNEIFORM SIGN DUG TIMES HI;Lo;0;L;;;;;N;;;;;\n12499;CUNEIFORM SIGN DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n1249A;CUNEIFORM SIGN DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n1249B;CUNEIFORM SIGN DUG TIMES KUR;Lo;0;L;;;;;N;;;;;\n1249C;CUNEIFORM SIGN DUG TIMES KUSHU2;Lo;0;L;;;;;N;;;;;\n1249D;CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;;\n1249E;CUNEIFORM SIGN DUG TIMES LAK-020;Lo;0;L;;;;;N;;;;;\n1249F;CUNEIFORM SIGN DUG TIMES LAM;Lo;0;L;;;;;N;;;;;\n124A0;CUNEIFORM SIGN DUG TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;;\n124A1;CUNEIFORM SIGN DUG TIMES LUH PLUS GISH;Lo;0;L;;;;;N;;;;;\n124A2;CUNEIFORM SIGN DUG TIMES MASH;Lo;0;L;;;;;N;;;;;\n124A3;CUNEIFORM SIGN DUG TIMES MES;Lo;0;L;;;;;N;;;;;\n124A4;CUNEIFORM SIGN DUG TIMES MI;Lo;0;L;;;;;N;;;;;\n124A5;CUNEIFORM SIGN DUG TIMES NI;Lo;0;L;;;;;N;;;;;\n124A6;CUNEIFORM SIGN DUG TIMES PI;Lo;0;L;;;;;N;;;;;\n124A7;CUNEIFORM SIGN DUG TIMES SHE;Lo;0;L;;;;;N;;;;;\n124A8;CUNEIFORM SIGN DUG TIMES SI GUNU;Lo;0;L;;;;;N;;;;;\n124A9;CUNEIFORM SIGN E2 TIMES KUR;Lo;0;L;;;;;N;;;;;\n124AA;CUNEIFORM SIGN E2 TIMES PAP;Lo;0;L;;;;;N;;;;;\n124AB;CUNEIFORM SIGN ERIN2 X;Lo;0;L;;;;;N;;;;;\n124AC;CUNEIFORM SIGN ESH2 CROSSING ESH2;Lo;0;L;;;;;N;;;;;\n124AD;CUNEIFORM SIGN EZEN SHESHIG TIMES ASH;Lo;0;L;;;;;N;;;;;\n124AE;CUNEIFORM SIGN EZEN SHESHIG TIMES HI;Lo;0;L;;;;;N;;;;;\n124AF;CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n124B0;CUNEIFORM SIGN EZEN SHESHIG TIMES LA;Lo;0;L;;;;;N;;;;;\n124B1;CUNEIFORM SIGN EZEN SHESHIG TIMES LAL;Lo;0;L;;;;;N;;;;;\n124B2;CUNEIFORM SIGN EZEN SHESHIG TIMES ME;Lo;0;L;;;;;N;;;;;\n124B3;CUNEIFORM SIGN EZEN SHESHIG TIMES MES;Lo;0;L;;;;;N;;;;;\n124B4;CUNEIFORM SIGN EZEN SHESHIG TIMES SU;Lo;0;L;;;;;N;;;;;\n124B5;CUNEIFORM SIGN EZEN TIMES SU;Lo;0;L;;;;;N;;;;;\n124B6;CUNEIFORM SIGN GA2 TIMES BAHAR2;Lo;0;L;;;;;N;;;;;\n124B7;CUNEIFORM SIGN GA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;;\n124B8;CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n124B9;CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;;\n124BA;CUNEIFORM SIGN GA2 TIMES EREN;Lo;0;L;;;;;N;;;;;\n124BB;CUNEIFORM SIGN GA2 TIMES GA;Lo;0;L;;;;;N;;;;;\n124BC;CUNEIFORM SIGN GA2 TIMES GAR PLUS DI;Lo;0;L;;;;;N;;;;;\n124BD;CUNEIFORM SIGN GA2 TIMES GAR PLUS NE;Lo;0;L;;;;;N;;;;;\n124BE;CUNEIFORM SIGN GA2 TIMES HA PLUS A;Lo;0;L;;;;;N;;;;;\n124BF;CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;;\n124C0;CUNEIFORM SIGN GA2 TIMES LAM;Lo;0;L;;;;;N;;;;;\n124C1;CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;;\n124C2;CUNEIFORM SIGN GA2 TIMES LUH;Lo;0;L;;;;;N;;;;;\n124C3;CUNEIFORM SIGN GA2 TIMES MUSH;Lo;0;L;;;;;N;;;;;\n124C4;CUNEIFORM SIGN GA2 TIMES NE;Lo;0;L;;;;;N;;;;;\n124C5;CUNEIFORM SIGN GA2 TIMES NE PLUS E2;Lo;0;L;;;;;N;;;;;\n124C6;CUNEIFORM SIGN GA2 TIMES NE PLUS GI;Lo;0;L;;;;;N;;;;;\n124C7;CUNEIFORM SIGN GA2 TIMES SHIM;Lo;0;L;;;;;N;;;;;\n124C8;CUNEIFORM SIGN GA2 TIMES ZIZ2;Lo;0;L;;;;;N;;;;;\n124C9;CUNEIFORM SIGN GABA ROTATED NINETY DEGREES;Lo;0;L;;;;;N;;;;;\n124CA;CUNEIFORM SIGN GESHTIN TIMES U;Lo;0;L;;;;;N;;;;;\n124CB;CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;\n124CC;CUNEIFORM SIGN GU2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n124CD;CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;\n124CE;CUNEIFORM SIGN HA TENU GUNU;Lo;0;L;;;;;N;;;;;\n124CF;CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH;Lo;0;L;;;;;N;;;;;\n124D0;CUNEIFORM SIGN KA TIMES BU;Lo;0;L;;;;;N;;;;;\n124D1;CUNEIFORM SIGN KA TIMES KA;Lo;0;L;;;;;N;;;;;\n124D2;CUNEIFORM SIGN KA TIMES U U U;Lo;0;L;;;;;N;;;;;\n124D3;CUNEIFORM SIGN KA TIMES UR;Lo;0;L;;;;;N;;;;;\n124D4;CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU;Lo;0;L;;;;;N;;;;;\n124D5;CUNEIFORM SIGN LAK-003;Lo;0;L;;;;;N;;;;;\n124D6;CUNEIFORM SIGN LAK-021;Lo;0;L;;;;;N;;;;;\n124D7;CUNEIFORM SIGN LAK-025;Lo;0;L;;;;;N;;;;;\n124D8;CUNEIFORM SIGN LAK-030;Lo;0;L;;;;;N;;;;;\n124D9;CUNEIFORM SIGN LAK-050;Lo;0;L;;;;;N;;;;;\n124DA;CUNEIFORM SIGN LAK-051;Lo;0;L;;;;;N;;;;;\n124DB;CUNEIFORM SIGN LAK-062;Lo;0;L;;;;;N;;;;;\n124DC;CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU;Lo;0;L;;;;;N;;;;;\n124DD;CUNEIFORM SIGN LAK-080;Lo;0;L;;;;;N;;;;;\n124DE;CUNEIFORM SIGN LAK-081 OVER LAK-081;Lo;0;L;;;;;N;;;;;\n124DF;CUNEIFORM SIGN LAK-092;Lo;0;L;;;;;N;;;;;\n124E0;CUNEIFORM SIGN LAK-130;Lo;0;L;;;;;N;;;;;\n124E1;CUNEIFORM SIGN LAK-142;Lo;0;L;;;;;N;;;;;\n124E2;CUNEIFORM SIGN LAK-210;Lo;0;L;;;;;N;;;;;\n124E3;CUNEIFORM SIGN LAK-219;Lo;0;L;;;;;N;;;;;\n124E4;CUNEIFORM SIGN LAK-220;Lo;0;L;;;;;N;;;;;\n124E5;CUNEIFORM SIGN LAK-225;Lo;0;L;;;;;N;;;;;\n124E6;CUNEIFORM SIGN LAK-228;Lo;0;L;;;;;N;;;;;\n124E7;CUNEIFORM SIGN LAK-238;Lo;0;L;;;;;N;;;;;\n124E8;CUNEIFORM SIGN LAK-265;Lo;0;L;;;;;N;;;;;\n124E9;CUNEIFORM SIGN LAK-266;Lo;0;L;;;;;N;;;;;\n124EA;CUNEIFORM SIGN LAK-343;Lo;0;L;;;;;N;;;;;\n124EB;CUNEIFORM SIGN LAK-347;Lo;0;L;;;;;N;;;;;\n124EC;CUNEIFORM SIGN LAK-348;Lo;0;L;;;;;N;;;;;\n124ED;CUNEIFORM SIGN LAK-383;Lo;0;L;;;;;N;;;;;\n124EE;CUNEIFORM SIGN LAK-384;Lo;0;L;;;;;N;;;;;\n124EF;CUNEIFORM SIGN LAK-390;Lo;0;L;;;;;N;;;;;\n124F0;CUNEIFORM SIGN LAK-441;Lo;0;L;;;;;N;;;;;\n124F1;CUNEIFORM SIGN LAK-449;Lo;0;L;;;;;N;;;;;\n124F2;CUNEIFORM SIGN LAK-449 TIMES GU;Lo;0;L;;;;;N;;;;;\n124F3;CUNEIFORM SIGN LAK-449 TIMES IGI;Lo;0;L;;;;;N;;;;;\n124F4;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3;Lo;0;L;;;;;N;;;;;\n124F5;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;;\n124F6;CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA;Lo;0;L;;;;;N;;;;;\n124F7;CUNEIFORM SIGN LAK-450;Lo;0;L;;;;;N;;;;;\n124F8;CUNEIFORM SIGN LAK-457;Lo;0;L;;;;;N;;;;;\n124F9;CUNEIFORM SIGN LAK-470;Lo;0;L;;;;;N;;;;;\n124FA;CUNEIFORM SIGN LAK-483;Lo;0;L;;;;;N;;;;;\n124FB;CUNEIFORM SIGN LAK-490;Lo;0;L;;;;;N;;;;;\n124FC;CUNEIFORM SIGN LAK-492;Lo;0;L;;;;;N;;;;;\n124FD;CUNEIFORM SIGN LAK-493;Lo;0;L;;;;;N;;;;;\n124FE;CUNEIFORM SIGN LAK-495;Lo;0;L;;;;;N;;;;;\n124FF;CUNEIFORM SIGN LAK-550;Lo;0;L;;;;;N;;;;;\n12500;CUNEIFORM SIGN LAK-608;Lo;0;L;;;;;N;;;;;\n12501;CUNEIFORM SIGN LAK-617;Lo;0;L;;;;;N;;;;;\n12502;CUNEIFORM SIGN LAK-617 TIMES ASH;Lo;0;L;;;;;N;;;;;\n12503;CUNEIFORM SIGN LAK-617 TIMES BAD;Lo;0;L;;;;;N;;;;;\n12504;CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;\n12505;CUNEIFORM SIGN LAK-617 TIMES KU3;Lo;0;L;;;;;N;;;;;\n12506;CUNEIFORM SIGN LAK-617 TIMES LA;Lo;0;L;;;;;N;;;;;\n12507;CUNEIFORM SIGN LAK-617 TIMES TAR;Lo;0;L;;;;;N;;;;;\n12508;CUNEIFORM SIGN LAK-617 TIMES TE;Lo;0;L;;;;;N;;;;;\n12509;CUNEIFORM SIGN LAK-617 TIMES U2;Lo;0;L;;;;;N;;;;;\n1250A;CUNEIFORM SIGN LAK-617 TIMES UD;Lo;0;L;;;;;N;;;;;\n1250B;CUNEIFORM SIGN LAK-617 TIMES URUDA;Lo;0;L;;;;;N;;;;;\n1250C;CUNEIFORM SIGN LAK-636;Lo;0;L;;;;;N;;;;;\n1250D;CUNEIFORM SIGN LAK-648;Lo;0;L;;;;;N;;;;;\n1250E;CUNEIFORM SIGN LAK-648 TIMES DUB;Lo;0;L;;;;;N;;;;;\n1250F;CUNEIFORM SIGN LAK-648 TIMES GA;Lo;0;L;;;;;N;;;;;\n12510;CUNEIFORM SIGN LAK-648 TIMES IGI;Lo;0;L;;;;;N;;;;;\n12511;CUNEIFORM SIGN LAK-648 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;\n12512;CUNEIFORM SIGN LAK-648 TIMES NI;Lo;0;L;;;;;N;;;;;\n12513;CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;;\n12514;CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI;Lo;0;L;;;;;N;;;;;\n12515;CUNEIFORM SIGN LAK-648 TIMES UD;Lo;0;L;;;;;N;;;;;\n12516;CUNEIFORM SIGN LAK-648 TIMES URUDA;Lo;0;L;;;;;N;;;;;\n12517;CUNEIFORM SIGN LAK-724;Lo;0;L;;;;;N;;;;;\n12518;CUNEIFORM SIGN LAK-749;Lo;0;L;;;;;N;;;;;\n12519;CUNEIFORM SIGN LU2 GUNU TIMES ASH;Lo;0;L;;;;;N;;;;;\n1251A;CUNEIFORM SIGN LU2 TIMES DISH;Lo;0;L;;;;;N;;;;;\n1251B;CUNEIFORM SIGN LU2 TIMES HAL;Lo;0;L;;;;;N;;;;;\n1251C;CUNEIFORM SIGN LU2 TIMES PAP;Lo;0;L;;;;;N;;;;;\n1251D;CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;;\n1251E;CUNEIFORM SIGN LU2 TIMES TAK4;Lo;0;L;;;;;N;;;;;\n1251F;CUNEIFORM SIGN MI PLUS ZA7;Lo;0;L;;;;;N;;;;;\n12520;CUNEIFORM SIGN MUSH OVER MUSH TIMES GA;Lo;0;L;;;;;N;;;;;\n12521;CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK;Lo;0;L;;;;;N;;;;;\n12522;CUNEIFORM SIGN NINDA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;;\n12523;CUNEIFORM SIGN NINDA2 TIMES GISH;Lo;0;L;;;;;N;;;;;\n12524;CUNEIFORM SIGN NINDA2 TIMES GUL;Lo;0;L;;;;;N;;;;;\n12525;CUNEIFORM SIGN NINDA2 TIMES HI;Lo;0;L;;;;;N;;;;;\n12526;CUNEIFORM SIGN NINDA2 TIMES KESH2;Lo;0;L;;;;;N;;;;;\n12527;CUNEIFORM SIGN NINDA2 TIMES LAK-050;Lo;0;L;;;;;N;;;;;\n12528;CUNEIFORM SIGN NINDA2 TIMES MASH;Lo;0;L;;;;;N;;;;;\n12529;CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;\n1252A;CUNEIFORM SIGN NINDA2 TIMES U;Lo;0;L;;;;;N;;;;;\n1252B;CUNEIFORM SIGN NINDA2 TIMES U PLUS U;Lo;0;L;;;;;N;;;;;\n1252C;CUNEIFORM SIGN NINDA2 TIMES URUDA;Lo;0;L;;;;;N;;;;;\n1252D;CUNEIFORM SIGN SAG GUNU TIMES HA;Lo;0;L;;;;;N;;;;;\n1252E;CUNEIFORM SIGN SAG TIMES EN;Lo;0;L;;;;;N;;;;;\n1252F;CUNEIFORM SIGN SAG TIMES SHE AT LEFT;Lo;0;L;;;;;N;;;;;\n12530;CUNEIFORM SIGN SAG TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12531;CUNEIFORM SIGN SHA6 TENU;Lo;0;L;;;;;N;;;;;\n12532;CUNEIFORM SIGN SHE OVER SHE;Lo;0;L;;;;;N;;;;;\n12533;CUNEIFORM SIGN SHE PLUS HUB2;Lo;0;L;;;;;N;;;;;\n12534;CUNEIFORM SIGN SHE PLUS NAM2;Lo;0;L;;;;;N;;;;;\n12535;CUNEIFORM SIGN SHE PLUS SAR;Lo;0;L;;;;;N;;;;;\n12536;CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI;Lo;0;L;;;;;N;;;;;\n12537;CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN;Lo;0;L;;;;;N;;;;;\n12538;CUNEIFORM SIGN SI TIMES TAK4;Lo;0;L;;;;;N;;;;;\n12539;CUNEIFORM SIGN TAK4 PLUS SAG;Lo;0;L;;;;;N;;;;;\n1253A;CUNEIFORM SIGN TUM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;\n1253B;CUNEIFORM SIGN TUM TIMES THREE DISH;Lo;0;L;;;;;N;;;;;\n1253C;CUNEIFORM SIGN UR2 INVERTED;Lo;0;L;;;;;N;;;;;\n1253D;CUNEIFORM SIGN UR2 TIMES UD;Lo;0;L;;;;;N;;;;;\n1253E;CUNEIFORM SIGN URU TIMES DARA3;Lo;0;L;;;;;N;;;;;\n1253F;CUNEIFORM SIGN URU TIMES LAK-668;Lo;0;L;;;;;N;;;;;\n12540;CUNEIFORM SIGN URU TIMES LU3;Lo;0;L;;;;;N;;;;;\n12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;;\n12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;;\n12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;;\n13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;\n13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;\n13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;\n13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;;\n13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;;\n13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;;\n13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;;\n13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;;\n13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;;\n13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;;\n1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;;\n1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;;\n1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;;\n1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;;\n1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;;\n1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;;\n13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;;\n13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;;\n13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;;\n13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;;\n13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;;\n13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;;\n13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;;\n13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;;\n13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;;\n13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;;\n1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;;\n1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;;\n1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;;\n1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;;\n1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;;\n1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;;\n13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;;\n13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;;\n13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;;\n13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;;\n13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;;\n13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;;\n13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;;\n13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;;\n13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;;\n13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;;\n1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;;\n1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;;\n1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;;\n1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;;\n1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;;\n1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;;\n13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;;\n13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;;\n13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;;\n13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;;\n13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;;\n13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;;\n13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;;\n13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;;\n13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;;\n13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;;\n1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;;\n1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;;\n1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;;\n1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;;\n1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;;\n1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;;\n13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;;\n13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;;\n13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;;\n13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;;\n13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;;\n13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;;\n13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;;\n13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;;\n13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;;\n13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;;\n1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;;\n1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;;\n1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;;\n1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;;\n1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;;\n1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;;\n13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;;\n13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;;\n13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;;\n13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;;\n13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;;\n13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;;\n13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;;\n13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;;\n13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;;\n13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;;\n1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;;\n1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;;\n1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;;\n1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;;\n1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;;\n1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;;\n13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;;\n13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;;\n13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;;\n13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;;\n13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;;\n13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;;\n13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;;\n13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;;\n13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;;\n13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;;\n1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;;\n1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;;\n1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;;\n1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;;\n1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;;\n1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;;\n13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;;\n13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;;\n13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;;\n13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;;\n13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;;\n13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;;\n13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;;\n13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;;\n13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;;\n13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;;\n1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;;\n1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;;\n1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;;\n1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;;\n1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;;\n1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;;\n13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;;\n13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;;\n13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;;\n13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;;\n13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;;\n13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;;\n13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;;\n13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;;\n13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;;\n13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;;\n1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;;\n1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;;\n1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;;\n1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;;\n1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;;\n1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;;\n13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;;\n13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;;\n13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;;\n13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;;\n13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;;\n13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;;\n13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;;\n13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;;\n13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;;\n13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;;\n1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;;\n1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;;\n1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;;\n1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;;\n1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;;\n1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;;\n130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;;\n130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;;\n130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;;\n130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;;\n130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;;\n130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;;\n130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;;\n130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;;\n130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;;\n130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;;\n130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;;\n130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;;\n130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;;\n130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;;\n130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;;\n130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;;\n130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;;\n130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;;\n130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;;\n130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;;\n130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;;\n130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;;\n130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;;\n130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;;\n130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;;\n130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;;\n130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;;\n130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;;\n130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;;\n130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;;\n130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;;\n130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;;\n130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;;\n130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;;\n130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;;\n130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;;\n130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;;\n130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;;\n130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;;\n130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;;\n130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;;\n130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;;\n130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;;\n130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;;\n130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;;\n130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;;\n130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;;\n130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;;\n130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;;\n130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;;\n130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;;\n130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;;\n130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;;\n130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;;\n130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;;\n130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;;\n130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;;\n130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;;\n130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;;\n130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;;\n130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;;\n130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;;\n130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;;\n130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;;\n130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;;\n130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;;\n130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;;\n130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;;\n130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;;\n130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;;\n130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;;\n130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;;\n130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;;\n130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;;\n130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;;\n130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;;\n130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;;\n130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;;\n130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;;\n130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;;\n130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;;\n130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;;\n130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;;\n130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;;\n130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;;\n130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;;\n130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;;\n130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;;\n130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;;\n130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;;\n130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;;\n130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;;\n130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;;\n130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;;\n130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;;\n130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;;\n13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;;\n13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;;\n13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;;\n13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;;\n13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;;\n13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;;\n13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;;\n13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;;\n13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;;\n13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;;\n1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;;\n1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;;\n1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;;\n1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;;\n1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;;\n1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;;\n13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;;\n13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;;\n13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;;\n13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;;\n13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;;\n13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;;\n13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;;\n13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;;\n13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;;\n13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;;\n1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;;\n1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;;\n1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;;\n1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;;\n1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;;\n1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;;\n13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;;\n13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;;\n13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;;\n13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;;\n13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;;\n13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;;\n13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;;\n13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;;\n13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;;\n13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;;\n1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;;\n1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;;\n1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;;\n1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;;\n1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;;\n1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;;\n13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;;\n13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;;\n13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;;\n13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;;\n13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;;\n13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;;\n13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;;\n13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;;\n13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;;\n13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;;\n1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;;\n1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;;\n1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;;\n1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;;\n1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;;\n1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;;\n13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;;\n13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;;\n13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;;\n13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;;\n13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;;\n13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;;\n13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;;\n13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;;\n13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;;\n13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;;\n1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;;\n1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;;\n1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;;\n1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;;\n1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;;\n1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;;\n13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;;\n13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;;\n13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;;\n13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;;\n13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;;\n13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;;\n13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;;\n13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;;\n13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;;\n13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;;\n1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;;\n1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;;\n1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;;\n1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;;\n1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;;\n1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;;\n13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;;\n13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;;\n13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;;\n13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;;\n13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;;\n13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;;\n13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;;\n13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;;\n13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;;\n13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;;\n1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;;\n1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;;\n1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;;\n1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;;\n1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;;\n1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;;\n13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;;\n13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;;\n13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;;\n13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;;\n13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;;\n13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;;\n13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;;\n13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;;\n13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;;\n13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;;\n1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;;\n1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;;\n1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;;\n1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;;\n1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;;\n1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;;\n13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;;\n13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;;\n13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;;\n13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;;\n13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;;\n13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;;\n13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;;\n13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;;\n13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;;\n13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;;\n1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;;\n1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;;\n1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;;\n1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;;\n1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;;\n1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;;\n13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;;\n13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;;\n13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;;\n13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;;\n13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;;\n13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;;\n13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;;\n13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;;\n13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;;\n13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;;\n1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;;\n1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;;\n1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;;\n1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;;\n1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;;\n1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;;\n131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;;\n131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;;\n131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;;\n131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;;\n131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;;\n131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;;\n131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;;\n131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;;\n131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;;\n131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;;\n131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;;\n131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;;\n131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;;\n131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;;\n131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;;\n131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;;\n131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;;\n131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;;\n131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;;\n131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;;\n131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;;\n131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;;\n131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;;\n131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;;\n131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;;\n131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;;\n131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;;\n131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;;\n131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;;\n131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;;\n131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;;\n131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;;\n131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;;\n131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;;\n131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;;\n131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;;\n131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;;\n131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;;\n131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;;\n131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;;\n131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;;\n131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;;\n131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;;\n131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;;\n131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;;\n131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;;\n131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;;\n131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;;\n131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;;\n131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;;\n131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;;\n131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;;\n131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;;\n131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;;\n131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;;\n131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;;\n131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;;\n131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;;\n131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;;\n131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;;\n131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;;\n131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;;\n131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;;\n131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;;\n131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;;\n131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;;\n131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;;\n131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;;\n131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;;\n131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;;\n131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;;\n131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;;\n131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;;\n131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;;\n131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;;\n131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;;\n131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;;\n131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;;\n131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;;\n131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;;\n131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;;\n131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;;\n131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;;\n131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;;\n131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;;\n131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;;\n131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;;\n131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;;\n131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;;\n131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;;\n131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;;\n131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;;\n131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;;\n131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;;\n131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;;\n131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;;\n13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;;\n13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;;\n13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;;\n13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;;\n13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;;\n13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;;\n13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;;\n13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;;\n13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;;\n13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;;\n1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;;\n1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;;\n1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;;\n1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;;\n1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;;\n1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;;\n13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;;\n13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;;\n13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;;\n13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;;\n13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;;\n13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;;\n13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;;\n13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;;\n13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;;\n13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;;\n1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;;\n1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;;\n1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;;\n1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;;\n1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;;\n1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;;\n13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;;\n13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;;\n13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;;\n13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;;\n13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;;\n13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;;\n13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;;\n13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;;\n13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;;\n13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;;\n1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;;\n1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;;\n1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;;\n1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;;\n1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;;\n1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;;\n13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;;\n13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;;\n13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;;\n13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;;\n13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;;\n13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;;\n13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;;\n13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;;\n13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;;\n13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;;\n1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;;\n1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;;\n1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;;\n1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;;\n1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;;\n1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;;\n13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;;\n13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;;\n13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;;\n13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;;\n13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;;\n13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;;\n13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;;\n13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;;\n13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;;\n13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;;\n1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;;\n1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;;\n1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;;\n1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;;\n1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;;\n1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;;\n13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;;\n13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;;\n13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;;\n13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;;\n13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;;\n13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;;\n13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;;\n13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;;\n13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;;\n13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;;\n1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;;\n1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;;\n1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;;\n1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;;\n1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;;\n1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;;\n13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;;\n13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;;\n13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;;\n13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;;\n13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;;\n13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;;\n13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;;\n13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;;\n13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;;\n13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;;\n1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;;\n1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;;\n1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;;\n1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;;\n1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;;\n1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;;\n13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;;\n13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;;\n13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;;\n13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;;\n13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;;\n13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;;\n13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;;\n13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;;\n13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;;\n13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;;\n1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;;\n1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;;\n1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;;\n1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;;\n1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;;\n1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;;\n13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;;\n13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;;\n13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;;\n13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;;\n13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;;\n13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;;\n13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;;\n13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;;\n13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;;\n13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;;\n1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;;\n1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;;\n1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;;\n1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;;\n1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;;\n1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;;\n13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;;\n13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;;\n13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;;\n13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;;\n13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;;\n13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;;\n13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;;\n13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;;\n13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;;\n13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;;\n1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;;\n1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;;\n1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;;\n1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;;\n1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;;\n1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;;\n132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;;\n132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;;\n132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;;\n132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;;\n132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;;\n132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;;\n132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;;\n132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;;\n132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;;\n132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;;\n132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;;\n132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;;\n132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;;\n132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;;\n132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;;\n132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;;\n132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;;\n132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;;\n132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;;\n132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;;\n132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;;\n132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;;\n132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;;\n132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;;\n132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;;\n132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;;\n132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;;\n132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;;\n132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;;\n132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;;\n132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;;\n132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;;\n132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;;\n132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;;\n132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;;\n132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;;\n132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;;\n132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;;\n132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;;\n132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;;\n132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;;\n132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;;\n132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;;\n132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;;\n132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;;\n132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;;\n132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;;\n132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;;\n132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;;\n132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;;\n132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;;\n132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;;\n132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;;\n132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;;\n132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;;\n132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;;\n132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;;\n132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;;\n132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;;\n132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;;\n132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;;\n132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;;\n132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;;\n132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;;\n132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;;\n132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;;\n132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;;\n132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;;\n132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;;\n132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;;\n132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;;\n132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;;\n132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;;\n132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;;\n132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;;\n132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;;\n132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;;\n132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;;\n132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;;\n132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;;\n132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;;\n132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;;\n132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;;\n132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;;\n132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;;\n132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;;\n132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;;\n132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;;\n132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;;\n132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;;\n132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;;\n132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;;\n132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;;\n132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;;\n132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;;\n132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;;\n13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;;\n13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;;\n13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;;\n13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;;\n13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;;\n13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;;\n13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;;\n13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;;\n13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;;\n13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;;\n1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;;\n1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;;\n1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;;\n1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;;\n1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;;\n1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;;\n13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;;\n13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;;\n13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;;\n13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;;\n13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;;\n13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;;\n13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;;\n13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;;\n13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;;\n13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;;\n1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;;\n1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;;\n1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;;\n1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;;\n1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;;\n1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;;\n13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;;\n13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;;\n13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;;\n13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;;\n13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;;\n13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;;\n13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;;\n13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;;\n13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;;\n13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;;\n1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;;\n1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;;\n1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;;\n1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;;\n1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;;\n1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;;\n13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;;\n13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;;\n13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;;\n13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;;\n13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;;\n13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;;\n13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;;\n13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;;\n13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;;\n13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;;\n1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;;\n1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;;\n1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;;\n1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;;\n1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;;\n1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;;\n13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;;\n13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;;\n13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;;\n13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;;\n13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;;\n13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;;\n13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;;\n13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;;\n13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;;\n13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;;\n1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;;\n1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;;\n1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;;\n1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;;\n1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;;\n1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;;\n13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;;\n13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;;\n13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;;\n13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;;\n13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;;\n13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;;\n13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;;\n13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;;\n13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;;\n13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;;\n1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;;\n1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;;\n1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;;\n1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;;\n1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;;\n1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;;\n13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;;\n13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;;\n13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;;\n13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;;\n13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;;\n13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;;\n13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;;\n13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;;\n13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;;\n13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;;\n1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;;\n1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;;\n1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;;\n1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;;\n1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;;\n1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;;\n13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;;\n13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;;\n13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;;\n13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;;\n13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;;\n13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;;\n13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;;\n13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;;\n13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;;\n13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;;\n1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;;\n1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;;\n1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;;\n1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;;\n1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;;\n1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;;\n13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;;\n13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;;\n13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;;\n13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;;\n13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;;\n13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;;\n13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;;\n13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;;\n13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;;\n13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;;\n1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;;\n1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;;\n1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;;\n1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;;\n1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;;\n1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;;\n13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;;\n13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;;\n13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;;\n13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;;\n13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;;\n13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;;\n13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;;\n13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;;\n13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;;\n13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;;\n1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;;\n1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;;\n1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;;\n1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;;\n1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;;\n1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;;\n133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;;\n133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;;\n133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;;\n133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;;\n133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;;\n133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;;\n133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;;\n133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;;\n133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;;\n133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;;\n133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;;\n133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;;\n133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;;\n133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;;\n133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;;\n133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;;\n133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;;\n133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;;\n133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;;\n133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;;\n133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;;\n133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;;\n133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;;\n133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;;\n133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;;\n133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;;\n133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;;\n133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;;\n133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;;\n133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;;\n133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;;\n133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;;\n133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;;\n133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;;\n133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;;\n133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;;\n133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;;\n133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;;\n133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;;\n133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;;\n133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;;\n133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;;\n133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;;\n133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;;\n133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;;\n133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;;\n133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;;\n133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;;\n133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;;\n133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;;\n133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;;\n133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;;\n133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;;\n133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;;\n133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;;\n133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;;\n133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;;\n133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;;\n133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;;\n133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;;\n133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;;\n133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;;\n133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;;\n133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;;\n133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;;\n133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;;\n133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;;\n133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;;\n133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;;\n133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;;\n133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;;\n133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;;\n133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;;\n133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;;\n133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;;\n133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;;\n133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;;\n133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;;\n133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;;\n133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;;\n133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;;\n133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;;\n133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;;\n133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;;\n133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;;\n133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;;\n133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;;\n133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;;\n133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;;\n133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;;\n133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;;\n133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;;\n133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;;\n133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;;\n133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;;\n133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;;\n13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;;\n13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;;\n13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;;\n13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;;\n13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;;\n13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;;\n13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;;\n13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;;\n13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;;\n13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;;\n1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;;\n1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;;\n1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;;\n1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;;\n1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;;\n1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;;\n13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;;\n13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;;\n13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;;\n13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;;\n13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;;\n13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;;\n13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;;\n13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;;\n13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;;\n13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;;\n1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;;\n1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;;\n1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;;\n1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;;\n1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;;\n1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;;\n13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;;\n13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;;\n13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;;\n13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;;\n13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;;\n13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;;\n13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;;\n13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;;\n13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;;\n13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;;\n1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;;\n1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;;\n1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;\n1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;\n1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;\n13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;;\n13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;;\n13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;;\n13433;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START;Cf;0;L;;;;;N;;;;;\n13434;EGYPTIAN HIEROGLYPH INSERT AT TOP END;Cf;0;L;;;;;N;;;;;\n13435;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END;Cf;0;L;;;;;N;;;;;\n13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;;\n13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;;\n13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;;\n14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;\n14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;\n14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;\n14403;ANATOLIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;;\n14404;ANATOLIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;;\n14405;ANATOLIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;;\n14406;ANATOLIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;;\n14407;ANATOLIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;;\n14408;ANATOLIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;;\n14409;ANATOLIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;;\n1440A;ANATOLIAN HIEROGLYPH A010A;Lo;0;L;;;;;N;;;;;\n1440B;ANATOLIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;;\n1440C;ANATOLIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;;\n1440D;ANATOLIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;;\n1440E;ANATOLIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;;\n1440F;ANATOLIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;;\n14410;ANATOLIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;;\n14411;ANATOLIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;;\n14412;ANATOLIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;;\n14413;ANATOLIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;;\n14414;ANATOLIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;;\n14415;ANATOLIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;;\n14416;ANATOLIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;;\n14417;ANATOLIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;;\n14418;ANATOLIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;;\n14419;ANATOLIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;;\n1441A;ANATOLIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;;\n1441B;ANATOLIAN HIEROGLYPH A026A;Lo;0;L;;;;;N;;;;;\n1441C;ANATOLIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;;\n1441D;ANATOLIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;;\n1441E;ANATOLIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;;\n1441F;ANATOLIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;;\n14420;ANATOLIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;;\n14421;ANATOLIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;;\n14422;ANATOLIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;;\n14423;ANATOLIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;;\n14424;ANATOLIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;;\n14425;ANATOLIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;;\n14426;ANATOLIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;;\n14427;ANATOLIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;;\n14428;ANATOLIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;;\n14429;ANATOLIAN HIEROGLYPH A039A;Lo;0;L;;;;;N;;;;;\n1442A;ANATOLIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;;\n1442B;ANATOLIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;;\n1442C;ANATOLIAN HIEROGLYPH A041A;Lo;0;L;;;;;N;;;;;\n1442D;ANATOLIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;;\n1442E;ANATOLIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;;\n1442F;ANATOLIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;;\n14430;ANATOLIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;;\n14431;ANATOLIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;;\n14432;ANATOLIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;;\n14433;ANATOLIAN HIEROGLYPH A046A;Lo;0;L;;;;;N;;;;;\n14434;ANATOLIAN HIEROGLYPH A046B;Lo;0;L;;;;;N;;;;;\n14435;ANATOLIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;;\n14436;ANATOLIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;;\n14437;ANATOLIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;;\n14438;ANATOLIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;;\n14439;ANATOLIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;;\n1443A;ANATOLIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;;\n1443B;ANATOLIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;;\n1443C;ANATOLIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;;\n1443D;ANATOLIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;;\n1443E;ANATOLIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;;\n1443F;ANATOLIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;;\n14440;ANATOLIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;;\n14441;ANATOLIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;;\n14442;ANATOLIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;;\n14443;ANATOLIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;;\n14444;ANATOLIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;;\n14445;ANATOLIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;;\n14446;ANATOLIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;;\n14447;ANATOLIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;;\n14448;ANATOLIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;;\n14449;ANATOLIAN HIEROGLYPH A066A;Lo;0;L;;;;;N;;;;;\n1444A;ANATOLIAN HIEROGLYPH A066B;Lo;0;L;;;;;N;;;;;\n1444B;ANATOLIAN HIEROGLYPH A066C;Lo;0;L;;;;;N;;;;;\n1444C;ANATOLIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;;\n1444D;ANATOLIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;;\n1444E;ANATOLIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;;\n1444F;ANATOLIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;;\n14450;ANATOLIAN HIEROGLYPH A071;Lo;0;L;;;;;N;;;;;\n14451;ANATOLIAN HIEROGLYPH A072;Lo;0;L;;;;;N;;;;;\n14452;ANATOLIAN HIEROGLYPH A073;Lo;0;L;;;;;N;;;;;\n14453;ANATOLIAN HIEROGLYPH A074;Lo;0;L;;;;;N;;;;;\n14454;ANATOLIAN HIEROGLYPH A075;Lo;0;L;;;;;N;;;;;\n14455;ANATOLIAN HIEROGLYPH A076;Lo;0;L;;;;;N;;;;;\n14456;ANATOLIAN HIEROGLYPH A077;Lo;0;L;;;;;N;;;;;\n14457;ANATOLIAN HIEROGLYPH A078;Lo;0;L;;;;;N;;;;;\n14458;ANATOLIAN HIEROGLYPH A079;Lo;0;L;;;;;N;;;;;\n14459;ANATOLIAN HIEROGLYPH A080;Lo;0;L;;;;;N;;;;;\n1445A;ANATOLIAN HIEROGLYPH A081;Lo;0;L;;;;;N;;;;;\n1445B;ANATOLIAN HIEROGLYPH A082;Lo;0;L;;;;;N;;;;;\n1445C;ANATOLIAN HIEROGLYPH A083;Lo;0;L;;;;;N;;;;;\n1445D;ANATOLIAN HIEROGLYPH A084;Lo;0;L;;;;;N;;;;;\n1445E;ANATOLIAN HIEROGLYPH A085;Lo;0;L;;;;;N;;;;;\n1445F;ANATOLIAN HIEROGLYPH A086;Lo;0;L;;;;;N;;;;;\n14460;ANATOLIAN HIEROGLYPH A087;Lo;0;L;;;;;N;;;;;\n14461;ANATOLIAN HIEROGLYPH A088;Lo;0;L;;;;;N;;;;;\n14462;ANATOLIAN HIEROGLYPH A089;Lo;0;L;;;;;N;;;;;\n14463;ANATOLIAN HIEROGLYPH A090;Lo;0;L;;;;;N;;;;;\n14464;ANATOLIAN HIEROGLYPH A091;Lo;0;L;;;;;N;;;;;\n14465;ANATOLIAN HIEROGLYPH A092;Lo;0;L;;;;;N;;;;;\n14466;ANATOLIAN HIEROGLYPH A093;Lo;0;L;;;;;N;;;;;\n14467;ANATOLIAN HIEROGLYPH A094;Lo;0;L;;;;;N;;;;;\n14468;ANATOLIAN HIEROGLYPH A095;Lo;0;L;;;;;N;;;;;\n14469;ANATOLIAN HIEROGLYPH A096;Lo;0;L;;;;;N;;;;;\n1446A;ANATOLIAN HIEROGLYPH A097;Lo;0;L;;;;;N;;;;;\n1446B;ANATOLIAN HIEROGLYPH A097A;Lo;0;L;;;;;N;;;;;\n1446C;ANATOLIAN HIEROGLYPH A098;Lo;0;L;;;;;N;;;;;\n1446D;ANATOLIAN HIEROGLYPH A098A;Lo;0;L;;;;;N;;;;;\n1446E;ANATOLIAN HIEROGLYPH A099;Lo;0;L;;;;;N;;;;;\n1446F;ANATOLIAN HIEROGLYPH A100;Lo;0;L;;;;;N;;;;;\n14470;ANATOLIAN HIEROGLYPH A100A;Lo;0;L;;;;;N;;;;;\n14471;ANATOLIAN HIEROGLYPH A101;Lo;0;L;;;;;N;;;;;\n14472;ANATOLIAN HIEROGLYPH A101A;Lo;0;L;;;;;N;;;;;\n14473;ANATOLIAN HIEROGLYPH A102;Lo;0;L;;;;;N;;;;;\n14474;ANATOLIAN HIEROGLYPH A102A;Lo;0;L;;;;;N;;;;;\n14475;ANATOLIAN HIEROGLYPH A103;Lo;0;L;;;;;N;;;;;\n14476;ANATOLIAN HIEROGLYPH A104;Lo;0;L;;;;;N;;;;;\n14477;ANATOLIAN HIEROGLYPH A104A;Lo;0;L;;;;;N;;;;;\n14478;ANATOLIAN HIEROGLYPH A104B;Lo;0;L;;;;;N;;;;;\n14479;ANATOLIAN HIEROGLYPH A104C;Lo;0;L;;;;;N;;;;;\n1447A;ANATOLIAN HIEROGLYPH A105;Lo;0;L;;;;;N;;;;;\n1447B;ANATOLIAN HIEROGLYPH A105A;Lo;0;L;;;;;N;;;;;\n1447C;ANATOLIAN HIEROGLYPH A105B;Lo;0;L;;;;;N;;;;;\n1447D;ANATOLIAN HIEROGLYPH A106;Lo;0;L;;;;;N;;;;;\n1447E;ANATOLIAN HIEROGLYPH A107;Lo;0;L;;;;;N;;;;;\n1447F;ANATOLIAN HIEROGLYPH A107A;Lo;0;L;;;;;N;;;;;\n14480;ANATOLIAN HIEROGLYPH A107B;Lo;0;L;;;;;N;;;;;\n14481;ANATOLIAN HIEROGLYPH A107C;Lo;0;L;;;;;N;;;;;\n14482;ANATOLIAN HIEROGLYPH A108;Lo;0;L;;;;;N;;;;;\n14483;ANATOLIAN HIEROGLYPH A109;Lo;0;L;;;;;N;;;;;\n14484;ANATOLIAN HIEROGLYPH A110;Lo;0;L;;;;;N;;;;;\n14485;ANATOLIAN HIEROGLYPH A110A;Lo;0;L;;;;;N;;;;;\n14486;ANATOLIAN HIEROGLYPH A110B;Lo;0;L;;;;;N;;;;;\n14487;ANATOLIAN HIEROGLYPH A111;Lo;0;L;;;;;N;;;;;\n14488;ANATOLIAN HIEROGLYPH A112;Lo;0;L;;;;;N;;;;;\n14489;ANATOLIAN HIEROGLYPH A113;Lo;0;L;;;;;N;;;;;\n1448A;ANATOLIAN HIEROGLYPH A114;Lo;0;L;;;;;N;;;;;\n1448B;ANATOLIAN HIEROGLYPH A115;Lo;0;L;;;;;N;;;;;\n1448C;ANATOLIAN HIEROGLYPH A115A;Lo;0;L;;;;;N;;;;;\n1448D;ANATOLIAN HIEROGLYPH A116;Lo;0;L;;;;;N;;;;;\n1448E;ANATOLIAN HIEROGLYPH A117;Lo;0;L;;;;;N;;;;;\n1448F;ANATOLIAN HIEROGLYPH A118;Lo;0;L;;;;;N;;;;;\n14490;ANATOLIAN HIEROGLYPH A119;Lo;0;L;;;;;N;;;;;\n14491;ANATOLIAN HIEROGLYPH A120;Lo;0;L;;;;;N;;;;;\n14492;ANATOLIAN HIEROGLYPH A121;Lo;0;L;;;;;N;;;;;\n14493;ANATOLIAN HIEROGLYPH A122;Lo;0;L;;;;;N;;;;;\n14494;ANATOLIAN HIEROGLYPH A123;Lo;0;L;;;;;N;;;;;\n14495;ANATOLIAN HIEROGLYPH A124;Lo;0;L;;;;;N;;;;;\n14496;ANATOLIAN HIEROGLYPH A125;Lo;0;L;;;;;N;;;;;\n14497;ANATOLIAN HIEROGLYPH A125A;Lo;0;L;;;;;N;;;;;\n14498;ANATOLIAN HIEROGLYPH A126;Lo;0;L;;;;;N;;;;;\n14499;ANATOLIAN HIEROGLYPH A127;Lo;0;L;;;;;N;;;;;\n1449A;ANATOLIAN HIEROGLYPH A128;Lo;0;L;;;;;N;;;;;\n1449B;ANATOLIAN HIEROGLYPH A129;Lo;0;L;;;;;N;;;;;\n1449C;ANATOLIAN HIEROGLYPH A130;Lo;0;L;;;;;N;;;;;\n1449D;ANATOLIAN HIEROGLYPH A131;Lo;0;L;;;;;N;;;;;\n1449E;ANATOLIAN HIEROGLYPH A132;Lo;0;L;;;;;N;;;;;\n1449F;ANATOLIAN HIEROGLYPH A133;Lo;0;L;;;;;N;;;;;\n144A0;ANATOLIAN HIEROGLYPH A134;Lo;0;L;;;;;N;;;;;\n144A1;ANATOLIAN HIEROGLYPH A135;Lo;0;L;;;;;N;;;;;\n144A2;ANATOLIAN HIEROGLYPH A135A;Lo;0;L;;;;;N;;;;;\n144A3;ANATOLIAN HIEROGLYPH A136;Lo;0;L;;;;;N;;;;;\n144A4;ANATOLIAN HIEROGLYPH A137;Lo;0;L;;;;;N;;;;;\n144A5;ANATOLIAN HIEROGLYPH A138;Lo;0;L;;;;;N;;;;;\n144A6;ANATOLIAN HIEROGLYPH A139;Lo;0;L;;;;;N;;;;;\n144A7;ANATOLIAN HIEROGLYPH A140;Lo;0;L;;;;;N;;;;;\n144A8;ANATOLIAN HIEROGLYPH A141;Lo;0;L;;;;;N;;;;;\n144A9;ANATOLIAN HIEROGLYPH A142;Lo;0;L;;;;;N;;;;;\n144AA;ANATOLIAN HIEROGLYPH A143;Lo;0;L;;;;;N;;;;;\n144AB;ANATOLIAN HIEROGLYPH A144;Lo;0;L;;;;;N;;;;;\n144AC;ANATOLIAN HIEROGLYPH A145;Lo;0;L;;;;;N;;;;;\n144AD;ANATOLIAN HIEROGLYPH A146;Lo;0;L;;;;;N;;;;;\n144AE;ANATOLIAN HIEROGLYPH A147;Lo;0;L;;;;;N;;;;;\n144AF;ANATOLIAN HIEROGLYPH A148;Lo;0;L;;;;;N;;;;;\n144B0;ANATOLIAN HIEROGLYPH A149;Lo;0;L;;;;;N;;;;;\n144B1;ANATOLIAN HIEROGLYPH A150;Lo;0;L;;;;;N;;;;;\n144B2;ANATOLIAN HIEROGLYPH A151;Lo;0;L;;;;;N;;;;;\n144B3;ANATOLIAN HIEROGLYPH A152;Lo;0;L;;;;;N;;;;;\n144B4;ANATOLIAN HIEROGLYPH A153;Lo;0;L;;;;;N;;;;;\n144B5;ANATOLIAN HIEROGLYPH A154;Lo;0;L;;;;;N;;;;;\n144B6;ANATOLIAN HIEROGLYPH A155;Lo;0;L;;;;;N;;;;;\n144B7;ANATOLIAN HIEROGLYPH A156;Lo;0;L;;;;;N;;;;;\n144B8;ANATOLIAN HIEROGLYPH A157;Lo;0;L;;;;;N;;;;;\n144B9;ANATOLIAN HIEROGLYPH A158;Lo;0;L;;;;;N;;;;;\n144BA;ANATOLIAN HIEROGLYPH A159;Lo;0;L;;;;;N;;;;;\n144BB;ANATOLIAN HIEROGLYPH A160;Lo;0;L;;;;;N;;;;;\n144BC;ANATOLIAN HIEROGLYPH A161;Lo;0;L;;;;;N;;;;;\n144BD;ANATOLIAN HIEROGLYPH A162;Lo;0;L;;;;;N;;;;;\n144BE;ANATOLIAN HIEROGLYPH A163;Lo;0;L;;;;;N;;;;;\n144BF;ANATOLIAN HIEROGLYPH A164;Lo;0;L;;;;;N;;;;;\n144C0;ANATOLIAN HIEROGLYPH A165;Lo;0;L;;;;;N;;;;;\n144C1;ANATOLIAN HIEROGLYPH A166;Lo;0;L;;;;;N;;;;;\n144C2;ANATOLIAN HIEROGLYPH A167;Lo;0;L;;;;;N;;;;;\n144C3;ANATOLIAN HIEROGLYPH A168;Lo;0;L;;;;;N;;;;;\n144C4;ANATOLIAN HIEROGLYPH A169;Lo;0;L;;;;;N;;;;;\n144C5;ANATOLIAN HIEROGLYPH A170;Lo;0;L;;;;;N;;;;;\n144C6;ANATOLIAN HIEROGLYPH A171;Lo;0;L;;;;;N;;;;;\n144C7;ANATOLIAN HIEROGLYPH A172;Lo;0;L;;;;;N;;;;;\n144C8;ANATOLIAN HIEROGLYPH A173;Lo;0;L;;;;;N;;;;;\n144C9;ANATOLIAN HIEROGLYPH A174;Lo;0;L;;;;;N;;;;;\n144CA;ANATOLIAN HIEROGLYPH A175;Lo;0;L;;;;;N;;;;;\n144CB;ANATOLIAN HIEROGLYPH A176;Lo;0;L;;;;;N;;;;;\n144CC;ANATOLIAN HIEROGLYPH A177;Lo;0;L;;;;;N;;;;;\n144CD;ANATOLIAN HIEROGLYPH A178;Lo;0;L;;;;;N;;;;;\n144CE;ANATOLIAN HIEROGLYPH A179;Lo;0;L;;;;;N;;;;;\n144CF;ANATOLIAN HIEROGLYPH A180;Lo;0;L;;;;;N;;;;;\n144D0;ANATOLIAN HIEROGLYPH A181;Lo;0;L;;;;;N;;;;;\n144D1;ANATOLIAN HIEROGLYPH A182;Lo;0;L;;;;;N;;;;;\n144D2;ANATOLIAN HIEROGLYPH A183;Lo;0;L;;;;;N;;;;;\n144D3;ANATOLIAN HIEROGLYPH A184;Lo;0;L;;;;;N;;;;;\n144D4;ANATOLIAN HIEROGLYPH A185;Lo;0;L;;;;;N;;;;;\n144D5;ANATOLIAN HIEROGLYPH A186;Lo;0;L;;;;;N;;;;;\n144D6;ANATOLIAN HIEROGLYPH A187;Lo;0;L;;;;;N;;;;;\n144D7;ANATOLIAN HIEROGLYPH A188;Lo;0;L;;;;;N;;;;;\n144D8;ANATOLIAN HIEROGLYPH A189;Lo;0;L;;;;;N;;;;;\n144D9;ANATOLIAN HIEROGLYPH A190;Lo;0;L;;;;;N;;;;;\n144DA;ANATOLIAN HIEROGLYPH A191;Lo;0;L;;;;;N;;;;;\n144DB;ANATOLIAN HIEROGLYPH A192;Lo;0;L;;;;;N;;;;;\n144DC;ANATOLIAN HIEROGLYPH A193;Lo;0;L;;;;;N;;;;;\n144DD;ANATOLIAN HIEROGLYPH A194;Lo;0;L;;;;;N;;;;;\n144DE;ANATOLIAN HIEROGLYPH A195;Lo;0;L;;;;;N;;;;;\n144DF;ANATOLIAN HIEROGLYPH A196;Lo;0;L;;;;;N;;;;;\n144E0;ANATOLIAN HIEROGLYPH A197;Lo;0;L;;;;;N;;;;;\n144E1;ANATOLIAN HIEROGLYPH A198;Lo;0;L;;;;;N;;;;;\n144E2;ANATOLIAN HIEROGLYPH A199;Lo;0;L;;;;;N;;;;;\n144E3;ANATOLIAN HIEROGLYPH A200;Lo;0;L;;;;;N;;;;;\n144E4;ANATOLIAN HIEROGLYPH A201;Lo;0;L;;;;;N;;;;;\n144E5;ANATOLIAN HIEROGLYPH A202;Lo;0;L;;;;;N;;;;;\n144E6;ANATOLIAN HIEROGLYPH A202A;Lo;0;L;;;;;N;;;;;\n144E7;ANATOLIAN HIEROGLYPH A202B;Lo;0;L;;;;;N;;;;;\n144E8;ANATOLIAN HIEROGLYPH A203;Lo;0;L;;;;;N;;;;;\n144E9;ANATOLIAN HIEROGLYPH A204;Lo;0;L;;;;;N;;;;;\n144EA;ANATOLIAN HIEROGLYPH A205;Lo;0;L;;;;;N;;;;;\n144EB;ANATOLIAN HIEROGLYPH A206;Lo;0;L;;;;;N;;;;;\n144EC;ANATOLIAN HIEROGLYPH A207;Lo;0;L;;;;;N;;;;;\n144ED;ANATOLIAN HIEROGLYPH A207A;Lo;0;L;;;;;N;;;;;\n144EE;ANATOLIAN HIEROGLYPH A208;Lo;0;L;;;;;N;;;;;\n144EF;ANATOLIAN HIEROGLYPH A209;Lo;0;L;;;;;N;;;;;\n144F0;ANATOLIAN HIEROGLYPH A209A;Lo;0;L;;;;;N;;;;;\n144F1;ANATOLIAN HIEROGLYPH A210;Lo;0;L;;;;;N;;;;;\n144F2;ANATOLIAN HIEROGLYPH A211;Lo;0;L;;;;;N;;;;;\n144F3;ANATOLIAN HIEROGLYPH A212;Lo;0;L;;;;;N;;;;;\n144F4;ANATOLIAN HIEROGLYPH A213;Lo;0;L;;;;;N;;;;;\n144F5;ANATOLIAN HIEROGLYPH A214;Lo;0;L;;;;;N;;;;;\n144F6;ANATOLIAN HIEROGLYPH A215;Lo;0;L;;;;;N;;;;;\n144F7;ANATOLIAN HIEROGLYPH A215A;Lo;0;L;;;;;N;;;;;\n144F8;ANATOLIAN HIEROGLYPH A216;Lo;0;L;;;;;N;;;;;\n144F9;ANATOLIAN HIEROGLYPH A216A;Lo;0;L;;;;;N;;;;;\n144FA;ANATOLIAN HIEROGLYPH A217;Lo;0;L;;;;;N;;;;;\n144FB;ANATOLIAN HIEROGLYPH A218;Lo;0;L;;;;;N;;;;;\n144FC;ANATOLIAN HIEROGLYPH A219;Lo;0;L;;;;;N;;;;;\n144FD;ANATOLIAN HIEROGLYPH A220;Lo;0;L;;;;;N;;;;;\n144FE;ANATOLIAN HIEROGLYPH A221;Lo;0;L;;;;;N;;;;;\n144FF;ANATOLIAN HIEROGLYPH A222;Lo;0;L;;;;;N;;;;;\n14500;ANATOLIAN HIEROGLYPH A223;Lo;0;L;;;;;N;;;;;\n14501;ANATOLIAN HIEROGLYPH A224;Lo;0;L;;;;;N;;;;;\n14502;ANATOLIAN HIEROGLYPH A225;Lo;0;L;;;;;N;;;;;\n14503;ANATOLIAN HIEROGLYPH A226;Lo;0;L;;;;;N;;;;;\n14504;ANATOLIAN HIEROGLYPH A227;Lo;0;L;;;;;N;;;;;\n14505;ANATOLIAN HIEROGLYPH A227A;Lo;0;L;;;;;N;;;;;\n14506;ANATOLIAN HIEROGLYPH A228;Lo;0;L;;;;;N;;;;;\n14507;ANATOLIAN HIEROGLYPH A229;Lo;0;L;;;;;N;;;;;\n14508;ANATOLIAN HIEROGLYPH A230;Lo;0;L;;;;;N;;;;;\n14509;ANATOLIAN HIEROGLYPH A231;Lo;0;L;;;;;N;;;;;\n1450A;ANATOLIAN HIEROGLYPH A232;Lo;0;L;;;;;N;;;;;\n1450B;ANATOLIAN HIEROGLYPH A233;Lo;0;L;;;;;N;;;;;\n1450C;ANATOLIAN HIEROGLYPH A234;Lo;0;L;;;;;N;;;;;\n1450D;ANATOLIAN HIEROGLYPH A235;Lo;0;L;;;;;N;;;;;\n1450E;ANATOLIAN HIEROGLYPH A236;Lo;0;L;;;;;N;;;;;\n1450F;ANATOLIAN HIEROGLYPH A237;Lo;0;L;;;;;N;;;;;\n14510;ANATOLIAN HIEROGLYPH A238;Lo;0;L;;;;;N;;;;;\n14511;ANATOLIAN HIEROGLYPH A239;Lo;0;L;;;;;N;;;;;\n14512;ANATOLIAN HIEROGLYPH A240;Lo;0;L;;;;;N;;;;;\n14513;ANATOLIAN HIEROGLYPH A241;Lo;0;L;;;;;N;;;;;\n14514;ANATOLIAN HIEROGLYPH A242;Lo;0;L;;;;;N;;;;;\n14515;ANATOLIAN HIEROGLYPH A243;Lo;0;L;;;;;N;;;;;\n14516;ANATOLIAN HIEROGLYPH A244;Lo;0;L;;;;;N;;;;;\n14517;ANATOLIAN HIEROGLYPH A245;Lo;0;L;;;;;N;;;;;\n14518;ANATOLIAN HIEROGLYPH A246;Lo;0;L;;;;;N;;;;;\n14519;ANATOLIAN HIEROGLYPH A247;Lo;0;L;;;;;N;;;;;\n1451A;ANATOLIAN HIEROGLYPH A248;Lo;0;L;;;;;N;;;;;\n1451B;ANATOLIAN HIEROGLYPH A249;Lo;0;L;;;;;N;;;;;\n1451C;ANATOLIAN HIEROGLYPH A250;Lo;0;L;;;;;N;;;;;\n1451D;ANATOLIAN HIEROGLYPH A251;Lo;0;L;;;;;N;;;;;\n1451E;ANATOLIAN HIEROGLYPH A252;Lo;0;L;;;;;N;;;;;\n1451F;ANATOLIAN HIEROGLYPH A253;Lo;0;L;;;;;N;;;;;\n14520;ANATOLIAN HIEROGLYPH A254;Lo;0;L;;;;;N;;;;;\n14521;ANATOLIAN HIEROGLYPH A255;Lo;0;L;;;;;N;;;;;\n14522;ANATOLIAN HIEROGLYPH A256;Lo;0;L;;;;;N;;;;;\n14523;ANATOLIAN HIEROGLYPH A257;Lo;0;L;;;;;N;;;;;\n14524;ANATOLIAN HIEROGLYPH A258;Lo;0;L;;;;;N;;;;;\n14525;ANATOLIAN HIEROGLYPH A259;Lo;0;L;;;;;N;;;;;\n14526;ANATOLIAN HIEROGLYPH A260;Lo;0;L;;;;;N;;;;;\n14527;ANATOLIAN HIEROGLYPH A261;Lo;0;L;;;;;N;;;;;\n14528;ANATOLIAN HIEROGLYPH A262;Lo;0;L;;;;;N;;;;;\n14529;ANATOLIAN HIEROGLYPH A263;Lo;0;L;;;;;N;;;;;\n1452A;ANATOLIAN HIEROGLYPH A264;Lo;0;L;;;;;N;;;;;\n1452B;ANATOLIAN HIEROGLYPH A265;Lo;0;L;;;;;N;;;;;\n1452C;ANATOLIAN HIEROGLYPH A266;Lo;0;L;;;;;N;;;;;\n1452D;ANATOLIAN HIEROGLYPH A267;Lo;0;L;;;;;N;;;;;\n1452E;ANATOLIAN HIEROGLYPH A267A;Lo;0;L;;;;;N;;;;;\n1452F;ANATOLIAN HIEROGLYPH A268;Lo;0;L;;;;;N;;;;;\n14530;ANATOLIAN HIEROGLYPH A269;Lo;0;L;;;;;N;;;;;\n14531;ANATOLIAN HIEROGLYPH A270;Lo;0;L;;;;;N;;;;;\n14532;ANATOLIAN HIEROGLYPH A271;Lo;0;L;;;;;N;;;;;\n14533;ANATOLIAN HIEROGLYPH A272;Lo;0;L;;;;;N;;;;;\n14534;ANATOLIAN HIEROGLYPH A273;Lo;0;L;;;;;N;;;;;\n14535;ANATOLIAN HIEROGLYPH A274;Lo;0;L;;;;;N;;;;;\n14536;ANATOLIAN HIEROGLYPH A275;Lo;0;L;;;;;N;;;;;\n14537;ANATOLIAN HIEROGLYPH A276;Lo;0;L;;;;;N;;;;;\n14538;ANATOLIAN HIEROGLYPH A277;Lo;0;L;;;;;N;;;;;\n14539;ANATOLIAN HIEROGLYPH A278;Lo;0;L;;;;;N;;;;;\n1453A;ANATOLIAN HIEROGLYPH A279;Lo;0;L;;;;;N;;;;;\n1453B;ANATOLIAN HIEROGLYPH A280;Lo;0;L;;;;;N;;;;;\n1453C;ANATOLIAN HIEROGLYPH A281;Lo;0;L;;;;;N;;;;;\n1453D;ANATOLIAN HIEROGLYPH A282;Lo;0;L;;;;;N;;;;;\n1453E;ANATOLIAN HIEROGLYPH A283;Lo;0;L;;;;;N;;;;;\n1453F;ANATOLIAN HIEROGLYPH A284;Lo;0;L;;;;;N;;;;;\n14540;ANATOLIAN HIEROGLYPH A285;Lo;0;L;;;;;N;;;;;\n14541;ANATOLIAN HIEROGLYPH A286;Lo;0;L;;;;;N;;;;;\n14542;ANATOLIAN HIEROGLYPH A287;Lo;0;L;;;;;N;;;;;\n14543;ANATOLIAN HIEROGLYPH A288;Lo;0;L;;;;;N;;;;;\n14544;ANATOLIAN HIEROGLYPH A289;Lo;0;L;;;;;N;;;;;\n14545;ANATOLIAN HIEROGLYPH A289A;Lo;0;L;;;;;N;;;;;\n14546;ANATOLIAN HIEROGLYPH A290;Lo;0;L;;;;;N;;;;;\n14547;ANATOLIAN HIEROGLYPH A291;Lo;0;L;;;;;N;;;;;\n14548;ANATOLIAN HIEROGLYPH A292;Lo;0;L;;;;;N;;;;;\n14549;ANATOLIAN HIEROGLYPH A293;Lo;0;L;;;;;N;;;;;\n1454A;ANATOLIAN HIEROGLYPH A294;Lo;0;L;;;;;N;;;;;\n1454B;ANATOLIAN HIEROGLYPH A294A;Lo;0;L;;;;;N;;;;;\n1454C;ANATOLIAN HIEROGLYPH A295;Lo;0;L;;;;;N;;;;;\n1454D;ANATOLIAN HIEROGLYPH A296;Lo;0;L;;;;;N;;;;;\n1454E;ANATOLIAN HIEROGLYPH A297;Lo;0;L;;;;;N;;;;;\n1454F;ANATOLIAN HIEROGLYPH A298;Lo;0;L;;;;;N;;;;;\n14550;ANATOLIAN HIEROGLYPH A299;Lo;0;L;;;;;N;;;;;\n14551;ANATOLIAN HIEROGLYPH A299A;Lo;0;L;;;;;N;;;;;\n14552;ANATOLIAN HIEROGLYPH A300;Lo;0;L;;;;;N;;;;;\n14553;ANATOLIAN HIEROGLYPH A301;Lo;0;L;;;;;N;;;;;\n14554;ANATOLIAN HIEROGLYPH A302;Lo;0;L;;;;;N;;;;;\n14555;ANATOLIAN HIEROGLYPH A303;Lo;0;L;;;;;N;;;;;\n14556;ANATOLIAN HIEROGLYPH A304;Lo;0;L;;;;;N;;;;;\n14557;ANATOLIAN HIEROGLYPH A305;Lo;0;L;;;;;N;;;;;\n14558;ANATOLIAN HIEROGLYPH A306;Lo;0;L;;;;;N;;;;;\n14559;ANATOLIAN HIEROGLYPH A307;Lo;0;L;;;;;N;;;;;\n1455A;ANATOLIAN HIEROGLYPH A308;Lo;0;L;;;;;N;;;;;\n1455B;ANATOLIAN HIEROGLYPH A309;Lo;0;L;;;;;N;;;;;\n1455C;ANATOLIAN HIEROGLYPH A309A;Lo;0;L;;;;;N;;;;;\n1455D;ANATOLIAN HIEROGLYPH A310;Lo;0;L;;;;;N;;;;;\n1455E;ANATOLIAN HIEROGLYPH A311;Lo;0;L;;;;;N;;;;;\n1455F;ANATOLIAN HIEROGLYPH A312;Lo;0;L;;;;;N;;;;;\n14560;ANATOLIAN HIEROGLYPH A313;Lo;0;L;;;;;N;;;;;\n14561;ANATOLIAN HIEROGLYPH A314;Lo;0;L;;;;;N;;;;;\n14562;ANATOLIAN HIEROGLYPH A315;Lo;0;L;;;;;N;;;;;\n14563;ANATOLIAN HIEROGLYPH A316;Lo;0;L;;;;;N;;;;;\n14564;ANATOLIAN HIEROGLYPH A317;Lo;0;L;;;;;N;;;;;\n14565;ANATOLIAN HIEROGLYPH A318;Lo;0;L;;;;;N;;;;;\n14566;ANATOLIAN HIEROGLYPH A319;Lo;0;L;;;;;N;;;;;\n14567;ANATOLIAN HIEROGLYPH A320;Lo;0;L;;;;;N;;;;;\n14568;ANATOLIAN HIEROGLYPH A321;Lo;0;L;;;;;N;;;;;\n14569;ANATOLIAN HIEROGLYPH A322;Lo;0;L;;;;;N;;;;;\n1456A;ANATOLIAN HIEROGLYPH A323;Lo;0;L;;;;;N;;;;;\n1456B;ANATOLIAN HIEROGLYPH A324;Lo;0;L;;;;;N;;;;;\n1456C;ANATOLIAN HIEROGLYPH A325;Lo;0;L;;;;;N;;;;;\n1456D;ANATOLIAN HIEROGLYPH A326;Lo;0;L;;;;;N;;;;;\n1456E;ANATOLIAN HIEROGLYPH A327;Lo;0;L;;;;;N;;;;;\n1456F;ANATOLIAN HIEROGLYPH A328;Lo;0;L;;;;;N;;;;;\n14570;ANATOLIAN HIEROGLYPH A329;Lo;0;L;;;;;N;;;;;\n14571;ANATOLIAN HIEROGLYPH A329A;Lo;0;L;;;;;N;;;;;\n14572;ANATOLIAN HIEROGLYPH A330;Lo;0;L;;;;;N;;;;;\n14573;ANATOLIAN HIEROGLYPH A331;Lo;0;L;;;;;N;;;;;\n14574;ANATOLIAN HIEROGLYPH A332A;Lo;0;L;;;;;N;;;;;\n14575;ANATOLIAN HIEROGLYPH A332B;Lo;0;L;;;;;N;;;;;\n14576;ANATOLIAN HIEROGLYPH A332C;Lo;0;L;;;;;N;;;;;\n14577;ANATOLIAN HIEROGLYPH A333;Lo;0;L;;;;;N;;;;;\n14578;ANATOLIAN HIEROGLYPH A334;Lo;0;L;;;;;N;;;;;\n14579;ANATOLIAN HIEROGLYPH A335;Lo;0;L;;;;;N;;;;;\n1457A;ANATOLIAN HIEROGLYPH A336;Lo;0;L;;;;;N;;;;;\n1457B;ANATOLIAN HIEROGLYPH A336A;Lo;0;L;;;;;N;;;;;\n1457C;ANATOLIAN HIEROGLYPH A336B;Lo;0;L;;;;;N;;;;;\n1457D;ANATOLIAN HIEROGLYPH A336C;Lo;0;L;;;;;N;;;;;\n1457E;ANATOLIAN HIEROGLYPH A337;Lo;0;L;;;;;N;;;;;\n1457F;ANATOLIAN HIEROGLYPH A338;Lo;0;L;;;;;N;;;;;\n14580;ANATOLIAN HIEROGLYPH A339;Lo;0;L;;;;;N;;;;;\n14581;ANATOLIAN HIEROGLYPH A340;Lo;0;L;;;;;N;;;;;\n14582;ANATOLIAN HIEROGLYPH A341;Lo;0;L;;;;;N;;;;;\n14583;ANATOLIAN HIEROGLYPH A342;Lo;0;L;;;;;N;;;;;\n14584;ANATOLIAN HIEROGLYPH A343;Lo;0;L;;;;;N;;;;;\n14585;ANATOLIAN HIEROGLYPH A344;Lo;0;L;;;;;N;;;;;\n14586;ANATOLIAN HIEROGLYPH A345;Lo;0;L;;;;;N;;;;;\n14587;ANATOLIAN HIEROGLYPH A346;Lo;0;L;;;;;N;;;;;\n14588;ANATOLIAN HIEROGLYPH A347;Lo;0;L;;;;;N;;;;;\n14589;ANATOLIAN HIEROGLYPH A348;Lo;0;L;;;;;N;;;;;\n1458A;ANATOLIAN HIEROGLYPH A349;Lo;0;L;;;;;N;;;;;\n1458B;ANATOLIAN HIEROGLYPH A350;Lo;0;L;;;;;N;;;;;\n1458C;ANATOLIAN HIEROGLYPH A351;Lo;0;L;;;;;N;;;;;\n1458D;ANATOLIAN HIEROGLYPH A352;Lo;0;L;;;;;N;;;;;\n1458E;ANATOLIAN HIEROGLYPH A353;Lo;0;L;;;;;N;;;;;\n1458F;ANATOLIAN HIEROGLYPH A354;Lo;0;L;;;;;N;;;;;\n14590;ANATOLIAN HIEROGLYPH A355;Lo;0;L;;;;;N;;;;;\n14591;ANATOLIAN HIEROGLYPH A356;Lo;0;L;;;;;N;;;;;\n14592;ANATOLIAN HIEROGLYPH A357;Lo;0;L;;;;;N;;;;;\n14593;ANATOLIAN HIEROGLYPH A358;Lo;0;L;;;;;N;;;;;\n14594;ANATOLIAN HIEROGLYPH A359;Lo;0;L;;;;;N;;;;;\n14595;ANATOLIAN HIEROGLYPH A359A;Lo;0;L;;;;;N;;;;;\n14596;ANATOLIAN HIEROGLYPH A360;Lo;0;L;;;;;N;;;;;\n14597;ANATOLIAN HIEROGLYPH A361;Lo;0;L;;;;;N;;;;;\n14598;ANATOLIAN HIEROGLYPH A362;Lo;0;L;;;;;N;;;;;\n14599;ANATOLIAN HIEROGLYPH A363;Lo;0;L;;;;;N;;;;;\n1459A;ANATOLIAN HIEROGLYPH A364;Lo;0;L;;;;;N;;;;;\n1459B;ANATOLIAN HIEROGLYPH A364A;Lo;0;L;;;;;N;;;;;\n1459C;ANATOLIAN HIEROGLYPH A365;Lo;0;L;;;;;N;;;;;\n1459D;ANATOLIAN HIEROGLYPH A366;Lo;0;L;;;;;N;;;;;\n1459E;ANATOLIAN HIEROGLYPH A367;Lo;0;L;;;;;N;;;;;\n1459F;ANATOLIAN HIEROGLYPH A368;Lo;0;L;;;;;N;;;;;\n145A0;ANATOLIAN HIEROGLYPH A368A;Lo;0;L;;;;;N;;;;;\n145A1;ANATOLIAN HIEROGLYPH A369;Lo;0;L;;;;;N;;;;;\n145A2;ANATOLIAN HIEROGLYPH A370;Lo;0;L;;;;;N;;;;;\n145A3;ANATOLIAN HIEROGLYPH A371;Lo;0;L;;;;;N;;;;;\n145A4;ANATOLIAN HIEROGLYPH A371A;Lo;0;L;;;;;N;;;;;\n145A5;ANATOLIAN HIEROGLYPH A372;Lo;0;L;;;;;N;;;;;\n145A6;ANATOLIAN HIEROGLYPH A373;Lo;0;L;;;;;N;;;;;\n145A7;ANATOLIAN HIEROGLYPH A374;Lo;0;L;;;;;N;;;;;\n145A8;ANATOLIAN HIEROGLYPH A375;Lo;0;L;;;;;N;;;;;\n145A9;ANATOLIAN HIEROGLYPH A376;Lo;0;L;;;;;N;;;;;\n145AA;ANATOLIAN HIEROGLYPH A377;Lo;0;L;;;;;N;;;;;\n145AB;ANATOLIAN HIEROGLYPH A378;Lo;0;L;;;;;N;;;;;\n145AC;ANATOLIAN HIEROGLYPH A379;Lo;0;L;;;;;N;;;;;\n145AD;ANATOLIAN HIEROGLYPH A380;Lo;0;L;;;;;N;;;;;\n145AE;ANATOLIAN HIEROGLYPH A381;Lo;0;L;;;;;N;;;;;\n145AF;ANATOLIAN HIEROGLYPH A381A;Lo;0;L;;;;;N;;;;;\n145B0;ANATOLIAN HIEROGLYPH A382;Lo;0;L;;;;;N;;;;;\n145B1;ANATOLIAN HIEROGLYPH A383 RA OR RI;Lo;0;L;;;;;N;;;;;\n145B2;ANATOLIAN HIEROGLYPH A383A;Lo;0;L;;;;;N;;;;;\n145B3;ANATOLIAN HIEROGLYPH A384;Lo;0;L;;;;;N;;;;;\n145B4;ANATOLIAN HIEROGLYPH A385;Lo;0;L;;;;;N;;;;;\n145B5;ANATOLIAN HIEROGLYPH A386;Lo;0;L;;;;;N;;;;;\n145B6;ANATOLIAN HIEROGLYPH A386A;Lo;0;L;;;;;N;;;;;\n145B7;ANATOLIAN HIEROGLYPH A387;Lo;0;L;;;;;N;;;;;\n145B8;ANATOLIAN HIEROGLYPH A388;Lo;0;L;;;;;N;;;;;\n145B9;ANATOLIAN HIEROGLYPH A389;Lo;0;L;;;;;N;;;;;\n145BA;ANATOLIAN HIEROGLYPH A390;Lo;0;L;;;;;N;;;;;\n145BB;ANATOLIAN HIEROGLYPH A391;Lo;0;L;;;;;N;;;;;\n145BC;ANATOLIAN HIEROGLYPH A392;Lo;0;L;;;;;N;;;;;\n145BD;ANATOLIAN HIEROGLYPH A393 EIGHT;Lo;0;L;;;;;N;;;;;\n145BE;ANATOLIAN HIEROGLYPH A394;Lo;0;L;;;;;N;;;;;\n145BF;ANATOLIAN HIEROGLYPH A395;Lo;0;L;;;;;N;;;;;\n145C0;ANATOLIAN HIEROGLYPH A396;Lo;0;L;;;;;N;;;;;\n145C1;ANATOLIAN HIEROGLYPH A397;Lo;0;L;;;;;N;;;;;\n145C2;ANATOLIAN HIEROGLYPH A398;Lo;0;L;;;;;N;;;;;\n145C3;ANATOLIAN HIEROGLYPH A399;Lo;0;L;;;;;N;;;;;\n145C4;ANATOLIAN HIEROGLYPH A400;Lo;0;L;;;;;N;;;;;\n145C5;ANATOLIAN HIEROGLYPH A401;Lo;0;L;;;;;N;;;;;\n145C6;ANATOLIAN HIEROGLYPH A402;Lo;0;L;;;;;N;;;;;\n145C7;ANATOLIAN HIEROGLYPH A403;Lo;0;L;;;;;N;;;;;\n145C8;ANATOLIAN HIEROGLYPH A404;Lo;0;L;;;;;N;;;;;\n145C9;ANATOLIAN HIEROGLYPH A405;Lo;0;L;;;;;N;;;;;\n145CA;ANATOLIAN HIEROGLYPH A406;Lo;0;L;;;;;N;;;;;\n145CB;ANATOLIAN HIEROGLYPH A407;Lo;0;L;;;;;N;;;;;\n145CC;ANATOLIAN HIEROGLYPH A408;Lo;0;L;;;;;N;;;;;\n145CD;ANATOLIAN HIEROGLYPH A409;Lo;0;L;;;;;N;;;;;\n145CE;ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK;Lo;0;L;;;;;N;;;;;\n145CF;ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK;Lo;0;L;;;;;N;;;;;\n145D0;ANATOLIAN HIEROGLYPH A411;Lo;0;L;;;;;N;;;;;\n145D1;ANATOLIAN HIEROGLYPH A412;Lo;0;L;;;;;N;;;;;\n145D2;ANATOLIAN HIEROGLYPH A413;Lo;0;L;;;;;N;;;;;\n145D3;ANATOLIAN HIEROGLYPH A414;Lo;0;L;;;;;N;;;;;\n145D4;ANATOLIAN HIEROGLYPH A415;Lo;0;L;;;;;N;;;;;\n145D5;ANATOLIAN HIEROGLYPH A416;Lo;0;L;;;;;N;;;;;\n145D6;ANATOLIAN HIEROGLYPH A417;Lo;0;L;;;;;N;;;;;\n145D7;ANATOLIAN HIEROGLYPH A418;Lo;0;L;;;;;N;;;;;\n145D8;ANATOLIAN HIEROGLYPH A419;Lo;0;L;;;;;N;;;;;\n145D9;ANATOLIAN HIEROGLYPH A420;Lo;0;L;;;;;N;;;;;\n145DA;ANATOLIAN HIEROGLYPH A421;Lo;0;L;;;;;N;;;;;\n145DB;ANATOLIAN HIEROGLYPH A422;Lo;0;L;;;;;N;;;;;\n145DC;ANATOLIAN HIEROGLYPH A423;Lo;0;L;;;;;N;;;;;\n145DD;ANATOLIAN HIEROGLYPH A424;Lo;0;L;;;;;N;;;;;\n145DE;ANATOLIAN HIEROGLYPH A425;Lo;0;L;;;;;N;;;;;\n145DF;ANATOLIAN HIEROGLYPH A426;Lo;0;L;;;;;N;;;;;\n145E0;ANATOLIAN HIEROGLYPH A427;Lo;0;L;;;;;N;;;;;\n145E1;ANATOLIAN HIEROGLYPH A428;Lo;0;L;;;;;N;;;;;\n145E2;ANATOLIAN HIEROGLYPH A429;Lo;0;L;;;;;N;;;;;\n145E3;ANATOLIAN HIEROGLYPH A430;Lo;0;L;;;;;N;;;;;\n145E4;ANATOLIAN HIEROGLYPH A431;Lo;0;L;;;;;N;;;;;\n145E5;ANATOLIAN HIEROGLYPH A432;Lo;0;L;;;;;N;;;;;\n145E6;ANATOLIAN HIEROGLYPH A433;Lo;0;L;;;;;N;;;;;\n145E7;ANATOLIAN HIEROGLYPH A434;Lo;0;L;;;;;N;;;;;\n145E8;ANATOLIAN HIEROGLYPH A435;Lo;0;L;;;;;N;;;;;\n145E9;ANATOLIAN HIEROGLYPH A436;Lo;0;L;;;;;N;;;;;\n145EA;ANATOLIAN HIEROGLYPH A437;Lo;0;L;;;;;N;;;;;\n145EB;ANATOLIAN HIEROGLYPH A438;Lo;0;L;;;;;N;;;;;\n145EC;ANATOLIAN HIEROGLYPH A439;Lo;0;L;;;;;N;;;;;\n145ED;ANATOLIAN HIEROGLYPH A440;Lo;0;L;;;;;N;;;;;\n145EE;ANATOLIAN HIEROGLYPH A441;Lo;0;L;;;;;N;;;;;\n145EF;ANATOLIAN HIEROGLYPH A442;Lo;0;L;;;;;N;;;;;\n145F0;ANATOLIAN HIEROGLYPH A443;Lo;0;L;;;;;N;;;;;\n145F1;ANATOLIAN HIEROGLYPH A444;Lo;0;L;;;;;N;;;;;\n145F2;ANATOLIAN HIEROGLYPH A445;Lo;0;L;;;;;N;;;;;\n145F3;ANATOLIAN HIEROGLYPH A446;Lo;0;L;;;;;N;;;;;\n145F4;ANATOLIAN HIEROGLYPH A447;Lo;0;L;;;;;N;;;;;\n145F5;ANATOLIAN HIEROGLYPH A448;Lo;0;L;;;;;N;;;;;\n145F6;ANATOLIAN HIEROGLYPH A449;Lo;0;L;;;;;N;;;;;\n145F7;ANATOLIAN HIEROGLYPH A450;Lo;0;L;;;;;N;;;;;\n145F8;ANATOLIAN HIEROGLYPH A450A;Lo;0;L;;;;;N;;;;;\n145F9;ANATOLIAN HIEROGLYPH A451;Lo;0;L;;;;;N;;;;;\n145FA;ANATOLIAN HIEROGLYPH A452;Lo;0;L;;;;;N;;;;;\n145FB;ANATOLIAN HIEROGLYPH A453;Lo;0;L;;;;;N;;;;;\n145FC;ANATOLIAN HIEROGLYPH A454;Lo;0;L;;;;;N;;;;;\n145FD;ANATOLIAN HIEROGLYPH A455;Lo;0;L;;;;;N;;;;;\n145FE;ANATOLIAN HIEROGLYPH A456;Lo;0;L;;;;;N;;;;;\n145FF;ANATOLIAN HIEROGLYPH A457;Lo;0;L;;;;;N;;;;;\n14600;ANATOLIAN HIEROGLYPH A457A;Lo;0;L;;;;;N;;;;;\n14601;ANATOLIAN HIEROGLYPH A458;Lo;0;L;;;;;N;;;;;\n14602;ANATOLIAN HIEROGLYPH A459;Lo;0;L;;;;;N;;;;;\n14603;ANATOLIAN HIEROGLYPH A460;Lo;0;L;;;;;N;;;;;\n14604;ANATOLIAN HIEROGLYPH A461;Lo;0;L;;;;;N;;;;;\n14605;ANATOLIAN HIEROGLYPH A462;Lo;0;L;;;;;N;;;;;\n14606;ANATOLIAN HIEROGLYPH A463;Lo;0;L;;;;;N;;;;;\n14607;ANATOLIAN HIEROGLYPH A464;Lo;0;L;;;;;N;;;;;\n14608;ANATOLIAN HIEROGLYPH A465;Lo;0;L;;;;;N;;;;;\n14609;ANATOLIAN HIEROGLYPH A466;Lo;0;L;;;;;N;;;;;\n1460A;ANATOLIAN HIEROGLYPH A467;Lo;0;L;;;;;N;;;;;\n1460B;ANATOLIAN HIEROGLYPH A468;Lo;0;L;;;;;N;;;;;\n1460C;ANATOLIAN HIEROGLYPH A469;Lo;0;L;;;;;N;;;;;\n1460D;ANATOLIAN HIEROGLYPH A470;Lo;0;L;;;;;N;;;;;\n1460E;ANATOLIAN HIEROGLYPH A471;Lo;0;L;;;;;N;;;;;\n1460F;ANATOLIAN HIEROGLYPH A472;Lo;0;L;;;;;N;;;;;\n14610;ANATOLIAN HIEROGLYPH A473;Lo;0;L;;;;;N;;;;;\n14611;ANATOLIAN HIEROGLYPH A474;Lo;0;L;;;;;N;;;;;\n14612;ANATOLIAN HIEROGLYPH A475;Lo;0;L;;;;;N;;;;;\n14613;ANATOLIAN HIEROGLYPH A476;Lo;0;L;;;;;N;;;;;\n14614;ANATOLIAN HIEROGLYPH A477;Lo;0;L;;;;;N;;;;;\n14615;ANATOLIAN HIEROGLYPH A478;Lo;0;L;;;;;N;;;;;\n14616;ANATOLIAN HIEROGLYPH A479;Lo;0;L;;;;;N;;;;;\n14617;ANATOLIAN HIEROGLYPH A480;Lo;0;L;;;;;N;;;;;\n14618;ANATOLIAN HIEROGLYPH A481;Lo;0;L;;;;;N;;;;;\n14619;ANATOLIAN HIEROGLYPH A482;Lo;0;L;;;;;N;;;;;\n1461A;ANATOLIAN HIEROGLYPH A483;Lo;0;L;;;;;N;;;;;\n1461B;ANATOLIAN HIEROGLYPH A484;Lo;0;L;;;;;N;;;;;\n1461C;ANATOLIAN HIEROGLYPH A485;Lo;0;L;;;;;N;;;;;\n1461D;ANATOLIAN HIEROGLYPH A486;Lo;0;L;;;;;N;;;;;\n1461E;ANATOLIAN HIEROGLYPH A487;Lo;0;L;;;;;N;;;;;\n1461F;ANATOLIAN HIEROGLYPH A488;Lo;0;L;;;;;N;;;;;\n14620;ANATOLIAN HIEROGLYPH A489;Lo;0;L;;;;;N;;;;;\n14621;ANATOLIAN HIEROGLYPH A490;Lo;0;L;;;;;N;;;;;\n14622;ANATOLIAN HIEROGLYPH A491;Lo;0;L;;;;;N;;;;;\n14623;ANATOLIAN HIEROGLYPH A492;Lo;0;L;;;;;N;;;;;\n14624;ANATOLIAN HIEROGLYPH A493;Lo;0;L;;;;;N;;;;;\n14625;ANATOLIAN HIEROGLYPH A494;Lo;0;L;;;;;N;;;;;\n14626;ANATOLIAN HIEROGLYPH A495;Lo;0;L;;;;;N;;;;;\n14627;ANATOLIAN HIEROGLYPH A496;Lo;0;L;;;;;N;;;;;\n14628;ANATOLIAN HIEROGLYPH A497;Lo;0;L;;;;;N;;;;;\n14629;ANATOLIAN HIEROGLYPH A501;Lo;0;L;;;;;N;;;;;\n1462A;ANATOLIAN HIEROGLYPH A502;Lo;0;L;;;;;N;;;;;\n1462B;ANATOLIAN HIEROGLYPH A503;Lo;0;L;;;;;N;;;;;\n1462C;ANATOLIAN HIEROGLYPH A504;Lo;0;L;;;;;N;;;;;\n1462D;ANATOLIAN HIEROGLYPH A505;Lo;0;L;;;;;N;;;;;\n1462E;ANATOLIAN HIEROGLYPH A506;Lo;0;L;;;;;N;;;;;\n1462F;ANATOLIAN HIEROGLYPH A507;Lo;0;L;;;;;N;;;;;\n14630;ANATOLIAN HIEROGLYPH A508;Lo;0;L;;;;;N;;;;;\n14631;ANATOLIAN HIEROGLYPH A509;Lo;0;L;;;;;N;;;;;\n14632;ANATOLIAN HIEROGLYPH A510;Lo;0;L;;;;;N;;;;;\n14633;ANATOLIAN HIEROGLYPH A511;Lo;0;L;;;;;N;;;;;\n14634;ANATOLIAN HIEROGLYPH A512;Lo;0;L;;;;;N;;;;;\n14635;ANATOLIAN HIEROGLYPH A513;Lo;0;L;;;;;N;;;;;\n14636;ANATOLIAN HIEROGLYPH A514;Lo;0;L;;;;;N;;;;;\n14637;ANATOLIAN HIEROGLYPH A515;Lo;0;L;;;;;N;;;;;\n14638;ANATOLIAN HIEROGLYPH A516;Lo;0;L;;;;;N;;;;;\n14639;ANATOLIAN HIEROGLYPH A517;Lo;0;L;;;;;N;;;;;\n1463A;ANATOLIAN HIEROGLYPH A518;Lo;0;L;;;;;N;;;;;\n1463B;ANATOLIAN HIEROGLYPH A519;Lo;0;L;;;;;N;;;;;\n1463C;ANATOLIAN HIEROGLYPH A520;Lo;0;L;;;;;N;;;;;\n1463D;ANATOLIAN HIEROGLYPH A521;Lo;0;L;;;;;N;;;;;\n1463E;ANATOLIAN HIEROGLYPH A522;Lo;0;L;;;;;N;;;;;\n1463F;ANATOLIAN HIEROGLYPH A523;Lo;0;L;;;;;N;;;;;\n14640;ANATOLIAN HIEROGLYPH A524;Lo;0;L;;;;;N;;;;;\n14641;ANATOLIAN HIEROGLYPH A525;Lo;0;L;;;;;N;;;;;\n14642;ANATOLIAN HIEROGLYPH A526;Lo;0;L;;;;;N;;;;;\n14643;ANATOLIAN HIEROGLYPH A527;Lo;0;L;;;;;N;;;;;\n14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;;\n14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;;\n14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;;\n16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;;\n16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;;\n16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;;\n16803;BAMUM LETTER PHASE-A PON MFON PIPAEMBA;Lo;0;L;;;;;N;;;;;\n16804;BAMUM LETTER PHASE-A NAA MFON;Lo;0;L;;;;;N;;;;;\n16805;BAMUM LETTER PHASE-A SHUENSHUET;Lo;0;L;;;;;N;;;;;\n16806;BAMUM LETTER PHASE-A TITA MFON;Lo;0;L;;;;;N;;;;;\n16807;BAMUM LETTER PHASE-A NZA MFON;Lo;0;L;;;;;N;;;;;\n16808;BAMUM LETTER PHASE-A SHINDA PA NJI;Lo;0;L;;;;;N;;;;;\n16809;BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE;Lo;0;L;;;;;N;;;;;\n1680A;BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA;Lo;0;L;;;;;N;;;;;\n1680B;BAMUM LETTER PHASE-A MAEMBGBIEE;Lo;0;L;;;;;N;;;;;\n1680C;BAMUM LETTER PHASE-A TU MAEMBA;Lo;0;L;;;;;N;;;;;\n1680D;BAMUM LETTER PHASE-A NGANGU;Lo;0;L;;;;;N;;;;;\n1680E;BAMUM LETTER PHASE-A MAEMVEUX;Lo;0;L;;;;;N;;;;;\n1680F;BAMUM LETTER PHASE-A MANSUAE;Lo;0;L;;;;;N;;;;;\n16810;BAMUM LETTER PHASE-A MVEUAENGAM;Lo;0;L;;;;;N;;;;;\n16811;BAMUM LETTER PHASE-A SEUNYAM;Lo;0;L;;;;;N;;;;;\n16812;BAMUM LETTER PHASE-A NTOQPEN;Lo;0;L;;;;;N;;;;;\n16813;BAMUM LETTER PHASE-A KEUKEUTNDA;Lo;0;L;;;;;N;;;;;\n16814;BAMUM LETTER PHASE-A NKINDI;Lo;0;L;;;;;N;;;;;\n16815;BAMUM LETTER PHASE-A SUU;Lo;0;L;;;;;N;;;;;\n16816;BAMUM LETTER PHASE-A NGKUENZEUM;Lo;0;L;;;;;N;;;;;\n16817;BAMUM LETTER PHASE-A LAPAQ;Lo;0;L;;;;;N;;;;;\n16818;BAMUM LETTER PHASE-A LET KUT;Lo;0;L;;;;;N;;;;;\n16819;BAMUM LETTER PHASE-A NTAP MFAA;Lo;0;L;;;;;N;;;;;\n1681A;BAMUM LETTER PHASE-A MAEKEUP;Lo;0;L;;;;;N;;;;;\n1681B;BAMUM LETTER PHASE-A PASHAE;Lo;0;L;;;;;N;;;;;\n1681C;BAMUM LETTER PHASE-A GHEUAERAE;Lo;0;L;;;;;N;;;;;\n1681D;BAMUM LETTER PHASE-A PAMSHAE;Lo;0;L;;;;;N;;;;;\n1681E;BAMUM LETTER PHASE-A MON NGGEUAET;Lo;0;L;;;;;N;;;;;\n1681F;BAMUM LETTER PHASE-A NZUN MEUT;Lo;0;L;;;;;N;;;;;\n16820;BAMUM LETTER PHASE-A U YUQ NAE;Lo;0;L;;;;;N;;;;;\n16821;BAMUM LETTER PHASE-A GHEUAEGHEUAE;Lo;0;L;;;;;N;;;;;\n16822;BAMUM LETTER PHASE-A NTAP NTAA;Lo;0;L;;;;;N;;;;;\n16823;BAMUM LETTER PHASE-A SISA;Lo;0;L;;;;;N;;;;;\n16824;BAMUM LETTER PHASE-A MGBASA;Lo;0;L;;;;;N;;;;;\n16825;BAMUM LETTER PHASE-A MEUNJOMNDEUQ;Lo;0;L;;;;;N;;;;;\n16826;BAMUM LETTER PHASE-A MOOMPUQ;Lo;0;L;;;;;N;;;;;\n16827;BAMUM LETTER PHASE-A KAFA;Lo;0;L;;;;;N;;;;;\n16828;BAMUM LETTER PHASE-A PA LEERAEWA;Lo;0;L;;;;;N;;;;;\n16829;BAMUM LETTER PHASE-A NDA LEERAEWA;Lo;0;L;;;;;N;;;;;\n1682A;BAMUM LETTER PHASE-A PET;Lo;0;L;;;;;N;;;;;\n1682B;BAMUM LETTER PHASE-A MAEMKPEN;Lo;0;L;;;;;N;;;;;\n1682C;BAMUM LETTER PHASE-A NIKA;Lo;0;L;;;;;N;;;;;\n1682D;BAMUM LETTER PHASE-A PUP;Lo;0;L;;;;;N;;;;;\n1682E;BAMUM LETTER PHASE-A TUAEP;Lo;0;L;;;;;N;;;;;\n1682F;BAMUM LETTER PHASE-A LUAEP;Lo;0;L;;;;;N;;;;;\n16830;BAMUM LETTER PHASE-A SONJAM;Lo;0;L;;;;;N;;;;;\n16831;BAMUM LETTER PHASE-A TEUTEUWEN;Lo;0;L;;;;;N;;;;;\n16832;BAMUM LETTER PHASE-A MAENYI;Lo;0;L;;;;;N;;;;;\n16833;BAMUM LETTER PHASE-A KET;Lo;0;L;;;;;N;;;;;\n16834;BAMUM LETTER PHASE-A NDAANGGEUAET;Lo;0;L;;;;;N;;;;;\n16835;BAMUM LETTER PHASE-A KUOQ;Lo;0;L;;;;;N;;;;;\n16836;BAMUM LETTER PHASE-A MOOMEUT;Lo;0;L;;;;;N;;;;;\n16837;BAMUM LETTER PHASE-A SHUM;Lo;0;L;;;;;N;;;;;\n16838;BAMUM LETTER PHASE-A LOMMAE;Lo;0;L;;;;;N;;;;;\n16839;BAMUM LETTER PHASE-A FIRI;Lo;0;L;;;;;N;;;;;\n1683A;BAMUM LETTER PHASE-A ROM;Lo;0;L;;;;;N;;;;;\n1683B;BAMUM LETTER PHASE-A KPOQ;Lo;0;L;;;;;N;;;;;\n1683C;BAMUM LETTER PHASE-A SOQ;Lo;0;L;;;;;N;;;;;\n1683D;BAMUM LETTER PHASE-A MAP PIEET;Lo;0;L;;;;;N;;;;;\n1683E;BAMUM LETTER PHASE-A SHIRAE;Lo;0;L;;;;;N;;;;;\n1683F;BAMUM LETTER PHASE-A NTAP;Lo;0;L;;;;;N;;;;;\n16840;BAMUM LETTER PHASE-A SHOQ NSHUT YUM;Lo;0;L;;;;;N;;;;;\n16841;BAMUM LETTER PHASE-A NYIT MONGKEUAEQ;Lo;0;L;;;;;N;;;;;\n16842;BAMUM LETTER PHASE-A PAARAE;Lo;0;L;;;;;N;;;;;\n16843;BAMUM LETTER PHASE-A NKAARAE;Lo;0;L;;;;;N;;;;;\n16844;BAMUM LETTER PHASE-A UNKNOWN;Lo;0;L;;;;;N;;;;;\n16845;BAMUM LETTER PHASE-A NGGEN;Lo;0;L;;;;;N;;;;;\n16846;BAMUM LETTER PHASE-A MAESI;Lo;0;L;;;;;N;;;;;\n16847;BAMUM LETTER PHASE-A NJAM;Lo;0;L;;;;;N;;;;;\n16848;BAMUM LETTER PHASE-A MBANYI;Lo;0;L;;;;;N;;;;;\n16849;BAMUM LETTER PHASE-A NYET;Lo;0;L;;;;;N;;;;;\n1684A;BAMUM LETTER PHASE-A TEUAEN;Lo;0;L;;;;;N;;;;;\n1684B;BAMUM LETTER PHASE-A SOT;Lo;0;L;;;;;N;;;;;\n1684C;BAMUM LETTER PHASE-A PAAM;Lo;0;L;;;;;N;;;;;\n1684D;BAMUM LETTER PHASE-A NSHIEE;Lo;0;L;;;;;N;;;;;\n1684E;BAMUM LETTER PHASE-A MAEM;Lo;0;L;;;;;N;;;;;\n1684F;BAMUM LETTER PHASE-A NYI;Lo;0;L;;;;;N;;;;;\n16850;BAMUM LETTER PHASE-A KAQ;Lo;0;L;;;;;N;;;;;\n16851;BAMUM LETTER PHASE-A NSHA;Lo;0;L;;;;;N;;;;;\n16852;BAMUM LETTER PHASE-A VEE;Lo;0;L;;;;;N;;;;;\n16853;BAMUM LETTER PHASE-A LU;Lo;0;L;;;;;N;;;;;\n16854;BAMUM LETTER PHASE-A NEN;Lo;0;L;;;;;N;;;;;\n16855;BAMUM LETTER PHASE-A NAQ;Lo;0;L;;;;;N;;;;;\n16856;BAMUM LETTER PHASE-A MBAQ;Lo;0;L;;;;;N;;;;;\n16857;BAMUM LETTER PHASE-B NSHUET;Lo;0;L;;;;;N;;;;;\n16858;BAMUM LETTER PHASE-B TU MAEMGBIEE;Lo;0;L;;;;;N;;;;;\n16859;BAMUM LETTER PHASE-B SIEE;Lo;0;L;;;;;N;;;;;\n1685A;BAMUM LETTER PHASE-B SET TU;Lo;0;L;;;;;N;;;;;\n1685B;BAMUM LETTER PHASE-B LOM NTEUM;Lo;0;L;;;;;N;;;;;\n1685C;BAMUM LETTER PHASE-B MBA MAELEE;Lo;0;L;;;;;N;;;;;\n1685D;BAMUM LETTER PHASE-B KIEEM;Lo;0;L;;;;;N;;;;;\n1685E;BAMUM LETTER PHASE-B YEURAE;Lo;0;L;;;;;N;;;;;\n1685F;BAMUM LETTER PHASE-B MBAARAE;Lo;0;L;;;;;N;;;;;\n16860;BAMUM LETTER PHASE-B KAM;Lo;0;L;;;;;N;;;;;\n16861;BAMUM LETTER PHASE-B PEESHI;Lo;0;L;;;;;N;;;;;\n16862;BAMUM LETTER PHASE-B YAFU LEERAEWA;Lo;0;L;;;;;N;;;;;\n16863;BAMUM LETTER PHASE-B LAM NSHUT NYAM;Lo;0;L;;;;;N;;;;;\n16864;BAMUM LETTER PHASE-B NTIEE SHEUOQ;Lo;0;L;;;;;N;;;;;\n16865;BAMUM LETTER PHASE-B NDU NJAA;Lo;0;L;;;;;N;;;;;\n16866;BAMUM LETTER PHASE-B GHEUGHEUAEM;Lo;0;L;;;;;N;;;;;\n16867;BAMUM LETTER PHASE-B PIT;Lo;0;L;;;;;N;;;;;\n16868;BAMUM LETTER PHASE-B TU NSIEE;Lo;0;L;;;;;N;;;;;\n16869;BAMUM LETTER PHASE-B SHET NJAQ;Lo;0;L;;;;;N;;;;;\n1686A;BAMUM LETTER PHASE-B SHEUAEQTU;Lo;0;L;;;;;N;;;;;\n1686B;BAMUM LETTER PHASE-B MFON TEUAEQ;Lo;0;L;;;;;N;;;;;\n1686C;BAMUM LETTER PHASE-B MBIT MBAAKET;Lo;0;L;;;;;N;;;;;\n1686D;BAMUM LETTER PHASE-B NYI NTEUM;Lo;0;L;;;;;N;;;;;\n1686E;BAMUM LETTER PHASE-B KEUPUQ;Lo;0;L;;;;;N;;;;;\n1686F;BAMUM LETTER PHASE-B GHEUGHEN;Lo;0;L;;;;;N;;;;;\n16870;BAMUM LETTER PHASE-B KEUYEUX;Lo;0;L;;;;;N;;;;;\n16871;BAMUM LETTER PHASE-B LAANAE;Lo;0;L;;;;;N;;;;;\n16872;BAMUM LETTER PHASE-B PARUM;Lo;0;L;;;;;N;;;;;\n16873;BAMUM LETTER PHASE-B VEUM;Lo;0;L;;;;;N;;;;;\n16874;BAMUM LETTER PHASE-B NGKINDI MVOP;Lo;0;L;;;;;N;;;;;\n16875;BAMUM LETTER PHASE-B NGGEU MBU;Lo;0;L;;;;;N;;;;;\n16876;BAMUM LETTER PHASE-B WUAET;Lo;0;L;;;;;N;;;;;\n16877;BAMUM LETTER PHASE-B SAKEUAE;Lo;0;L;;;;;N;;;;;\n16878;BAMUM LETTER PHASE-B TAAM;Lo;0;L;;;;;N;;;;;\n16879;BAMUM LETTER PHASE-B MEUQ;Lo;0;L;;;;;N;;;;;\n1687A;BAMUM LETTER PHASE-B NGGUOQ;Lo;0;L;;;;;N;;;;;\n1687B;BAMUM LETTER PHASE-B NGGUOQ LARGE;Lo;0;L;;;;;N;;;;;\n1687C;BAMUM LETTER PHASE-B MFIYAQ;Lo;0;L;;;;;N;;;;;\n1687D;BAMUM LETTER PHASE-B SUE;Lo;0;L;;;;;N;;;;;\n1687E;BAMUM LETTER PHASE-B MBEURI;Lo;0;L;;;;;N;;;;;\n1687F;BAMUM LETTER PHASE-B MONTIEEN;Lo;0;L;;;;;N;;;;;\n16880;BAMUM LETTER PHASE-B NYAEMAE;Lo;0;L;;;;;N;;;;;\n16881;BAMUM LETTER PHASE-B PUNGAAM;Lo;0;L;;;;;N;;;;;\n16882;BAMUM LETTER PHASE-B MEUT NGGEET;Lo;0;L;;;;;N;;;;;\n16883;BAMUM LETTER PHASE-B FEUX;Lo;0;L;;;;;N;;;;;\n16884;BAMUM LETTER PHASE-B MBUOQ;Lo;0;L;;;;;N;;;;;\n16885;BAMUM LETTER PHASE-B FEE;Lo;0;L;;;;;N;;;;;\n16886;BAMUM LETTER PHASE-B KEUAEM;Lo;0;L;;;;;N;;;;;\n16887;BAMUM LETTER PHASE-B MA NJEUAENA;Lo;0;L;;;;;N;;;;;\n16888;BAMUM LETTER PHASE-B MA NJUQA;Lo;0;L;;;;;N;;;;;\n16889;BAMUM LETTER PHASE-B LET;Lo;0;L;;;;;N;;;;;\n1688A;BAMUM LETTER PHASE-B NGGAAM;Lo;0;L;;;;;N;;;;;\n1688B;BAMUM LETTER PHASE-B NSEN;Lo;0;L;;;;;N;;;;;\n1688C;BAMUM LETTER PHASE-B MA;Lo;0;L;;;;;N;;;;;\n1688D;BAMUM LETTER PHASE-B KIQ;Lo;0;L;;;;;N;;;;;\n1688E;BAMUM LETTER PHASE-B NGOM;Lo;0;L;;;;;N;;;;;\n1688F;BAMUM LETTER PHASE-C NGKUE MAEMBA;Lo;0;L;;;;;N;;;;;\n16890;BAMUM LETTER PHASE-C NZA;Lo;0;L;;;;;N;;;;;\n16891;BAMUM LETTER PHASE-C YUM;Lo;0;L;;;;;N;;;;;\n16892;BAMUM LETTER PHASE-C WANGKUOQ;Lo;0;L;;;;;N;;;;;\n16893;BAMUM LETTER PHASE-C NGGEN;Lo;0;L;;;;;N;;;;;\n16894;BAMUM LETTER PHASE-C NDEUAEREE;Lo;0;L;;;;;N;;;;;\n16895;BAMUM LETTER PHASE-C NGKAQ;Lo;0;L;;;;;N;;;;;\n16896;BAMUM LETTER PHASE-C GHARAE;Lo;0;L;;;;;N;;;;;\n16897;BAMUM LETTER PHASE-C MBEEKEET;Lo;0;L;;;;;N;;;;;\n16898;BAMUM LETTER PHASE-C GBAYI;Lo;0;L;;;;;N;;;;;\n16899;BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN;Lo;0;L;;;;;N;;;;;\n1689A;BAMUM LETTER PHASE-C NTU MBIT;Lo;0;L;;;;;N;;;;;\n1689B;BAMUM LETTER PHASE-C MBEUM;Lo;0;L;;;;;N;;;;;\n1689C;BAMUM LETTER PHASE-C PIRIEEN;Lo;0;L;;;;;N;;;;;\n1689D;BAMUM LETTER PHASE-C NDOMBU;Lo;0;L;;;;;N;;;;;\n1689E;BAMUM LETTER PHASE-C MBAA CABBAGE-TREE;Lo;0;L;;;;;N;;;;;\n1689F;BAMUM LETTER PHASE-C KEUSHEUAEP;Lo;0;L;;;;;N;;;;;\n168A0;BAMUM LETTER PHASE-C GHAP;Lo;0;L;;;;;N;;;;;\n168A1;BAMUM LETTER PHASE-C KEUKAQ;Lo;0;L;;;;;N;;;;;\n168A2;BAMUM LETTER PHASE-C YU MUOMAE;Lo;0;L;;;;;N;;;;;\n168A3;BAMUM LETTER PHASE-C NZEUM;Lo;0;L;;;;;N;;;;;\n168A4;BAMUM LETTER PHASE-C MBUE;Lo;0;L;;;;;N;;;;;\n168A5;BAMUM LETTER PHASE-C NSEUAEN;Lo;0;L;;;;;N;;;;;\n168A6;BAMUM LETTER PHASE-C MBIT;Lo;0;L;;;;;N;;;;;\n168A7;BAMUM LETTER PHASE-C YEUQ;Lo;0;L;;;;;N;;;;;\n168A8;BAMUM LETTER PHASE-C KPARAQ;Lo;0;L;;;;;N;;;;;\n168A9;BAMUM LETTER PHASE-C KAA;Lo;0;L;;;;;N;;;;;\n168AA;BAMUM LETTER PHASE-C SEUX;Lo;0;L;;;;;N;;;;;\n168AB;BAMUM LETTER PHASE-C NDIDA;Lo;0;L;;;;;N;;;;;\n168AC;BAMUM LETTER PHASE-C TAASHAE;Lo;0;L;;;;;N;;;;;\n168AD;BAMUM LETTER PHASE-C NJUEQ;Lo;0;L;;;;;N;;;;;\n168AE;BAMUM LETTER PHASE-C TITA YUE;Lo;0;L;;;;;N;;;;;\n168AF;BAMUM LETTER PHASE-C SUAET;Lo;0;L;;;;;N;;;;;\n168B0;BAMUM LETTER PHASE-C NGGUAEN NYAM;Lo;0;L;;;;;N;;;;;\n168B1;BAMUM LETTER PHASE-C VEUX;Lo;0;L;;;;;N;;;;;\n168B2;BAMUM LETTER PHASE-C NANSANAQ;Lo;0;L;;;;;N;;;;;\n168B3;BAMUM LETTER PHASE-C MA KEUAERI;Lo;0;L;;;;;N;;;;;\n168B4;BAMUM LETTER PHASE-C NTAA;Lo;0;L;;;;;N;;;;;\n168B5;BAMUM LETTER PHASE-C NGGUON;Lo;0;L;;;;;N;;;;;\n168B6;BAMUM LETTER PHASE-C LAP;Lo;0;L;;;;;N;;;;;\n168B7;BAMUM LETTER PHASE-C MBIRIEEN;Lo;0;L;;;;;N;;;;;\n168B8;BAMUM LETTER PHASE-C MGBASAQ;Lo;0;L;;;;;N;;;;;\n168B9;BAMUM LETTER PHASE-C NTEUNGBA;Lo;0;L;;;;;N;;;;;\n168BA;BAMUM LETTER PHASE-C TEUTEUX;Lo;0;L;;;;;N;;;;;\n168BB;BAMUM LETTER PHASE-C NGGUM;Lo;0;L;;;;;N;;;;;\n168BC;BAMUM LETTER PHASE-C FUE;Lo;0;L;;;;;N;;;;;\n168BD;BAMUM LETTER PHASE-C NDEUT;Lo;0;L;;;;;N;;;;;\n168BE;BAMUM LETTER PHASE-C NSA;Lo;0;L;;;;;N;;;;;\n168BF;BAMUM LETTER PHASE-C NSHAQ;Lo;0;L;;;;;N;;;;;\n168C0;BAMUM LETTER PHASE-C BUNG;Lo;0;L;;;;;N;;;;;\n168C1;BAMUM LETTER PHASE-C VEUAEPEN;Lo;0;L;;;;;N;;;;;\n168C2;BAMUM LETTER PHASE-C MBERAE;Lo;0;L;;;;;N;;;;;\n168C3;BAMUM LETTER PHASE-C RU;Lo;0;L;;;;;N;;;;;\n168C4;BAMUM LETTER PHASE-C NJAEM;Lo;0;L;;;;;N;;;;;\n168C5;BAMUM LETTER PHASE-C LAM;Lo;0;L;;;;;N;;;;;\n168C6;BAMUM LETTER PHASE-C TITUAEP;Lo;0;L;;;;;N;;;;;\n168C7;BAMUM LETTER PHASE-C NSUOT NGOM;Lo;0;L;;;;;N;;;;;\n168C8;BAMUM LETTER PHASE-C NJEEEE;Lo;0;L;;;;;N;;;;;\n168C9;BAMUM LETTER PHASE-C KET;Lo;0;L;;;;;N;;;;;\n168CA;BAMUM LETTER PHASE-C NGGU;Lo;0;L;;;;;N;;;;;\n168CB;BAMUM LETTER PHASE-C MAESI;Lo;0;L;;;;;N;;;;;\n168CC;BAMUM LETTER PHASE-C MBUAEM;Lo;0;L;;;;;N;;;;;\n168CD;BAMUM LETTER PHASE-C LU;Lo;0;L;;;;;N;;;;;\n168CE;BAMUM LETTER PHASE-C KUT;Lo;0;L;;;;;N;;;;;\n168CF;BAMUM LETTER PHASE-C NJAM;Lo;0;L;;;;;N;;;;;\n168D0;BAMUM LETTER PHASE-C NGOM;Lo;0;L;;;;;N;;;;;\n168D1;BAMUM LETTER PHASE-C WUP;Lo;0;L;;;;;N;;;;;\n168D2;BAMUM LETTER PHASE-C NGGUEET;Lo;0;L;;;;;N;;;;;\n168D3;BAMUM LETTER PHASE-C NSOM;Lo;0;L;;;;;N;;;;;\n168D4;BAMUM LETTER PHASE-C NTEN;Lo;0;L;;;;;N;;;;;\n168D5;BAMUM LETTER PHASE-C KUOP NKAARAE;Lo;0;L;;;;;N;;;;;\n168D6;BAMUM LETTER PHASE-C NSUN;Lo;0;L;;;;;N;;;;;\n168D7;BAMUM LETTER PHASE-C NDAM;Lo;0;L;;;;;N;;;;;\n168D8;BAMUM LETTER PHASE-C MA NSIEE;Lo;0;L;;;;;N;;;;;\n168D9;BAMUM LETTER PHASE-C YAA;Lo;0;L;;;;;N;;;;;\n168DA;BAMUM LETTER PHASE-C NDAP;Lo;0;L;;;;;N;;;;;\n168DB;BAMUM LETTER PHASE-C SHUEQ;Lo;0;L;;;;;N;;;;;\n168DC;BAMUM LETTER PHASE-C SETFON;Lo;0;L;;;;;N;;;;;\n168DD;BAMUM LETTER PHASE-C MBI;Lo;0;L;;;;;N;;;;;\n168DE;BAMUM LETTER PHASE-C MAEMBA;Lo;0;L;;;;;N;;;;;\n168DF;BAMUM LETTER PHASE-C MBANYI;Lo;0;L;;;;;N;;;;;\n168E0;BAMUM LETTER PHASE-C KEUSEUX;Lo;0;L;;;;;N;;;;;\n168E1;BAMUM LETTER PHASE-C MBEUX;Lo;0;L;;;;;N;;;;;\n168E2;BAMUM LETTER PHASE-C KEUM;Lo;0;L;;;;;N;;;;;\n168E3;BAMUM LETTER PHASE-C MBAA PICKET;Lo;0;L;;;;;N;;;;;\n168E4;BAMUM LETTER PHASE-C YUWOQ;Lo;0;L;;;;;N;;;;;\n168E5;BAMUM LETTER PHASE-C NJEUX;Lo;0;L;;;;;N;;;;;\n168E6;BAMUM LETTER PHASE-C MIEE;Lo;0;L;;;;;N;;;;;\n168E7;BAMUM LETTER PHASE-C MUAE;Lo;0;L;;;;;N;;;;;\n168E8;BAMUM LETTER PHASE-C SHIQ;Lo;0;L;;;;;N;;;;;\n168E9;BAMUM LETTER PHASE-C KEN LAW;Lo;0;L;;;;;N;;;;;\n168EA;BAMUM LETTER PHASE-C KEN FATIGUE;Lo;0;L;;;;;N;;;;;\n168EB;BAMUM LETTER PHASE-C NGAQ;Lo;0;L;;;;;N;;;;;\n168EC;BAMUM LETTER PHASE-C NAQ;Lo;0;L;;;;;N;;;;;\n168ED;BAMUM LETTER PHASE-C LIQ;Lo;0;L;;;;;N;;;;;\n168EE;BAMUM LETTER PHASE-C PIN;Lo;0;L;;;;;N;;;;;\n168EF;BAMUM LETTER PHASE-C PEN;Lo;0;L;;;;;N;;;;;\n168F0;BAMUM LETTER PHASE-C TET;Lo;0;L;;;;;N;;;;;\n168F1;BAMUM LETTER PHASE-D MBUO;Lo;0;L;;;;;N;;;;;\n168F2;BAMUM LETTER PHASE-D WAP;Lo;0;L;;;;;N;;;;;\n168F3;BAMUM LETTER PHASE-D NJI;Lo;0;L;;;;;N;;;;;\n168F4;BAMUM LETTER PHASE-D MFON;Lo;0;L;;;;;N;;;;;\n168F5;BAMUM LETTER PHASE-D NJIEE;Lo;0;L;;;;;N;;;;;\n168F6;BAMUM LETTER PHASE-D LIEE;Lo;0;L;;;;;N;;;;;\n168F7;BAMUM LETTER PHASE-D NJEUT;Lo;0;L;;;;;N;;;;;\n168F8;BAMUM LETTER PHASE-D NSHEE;Lo;0;L;;;;;N;;;;;\n168F9;BAMUM LETTER PHASE-D NGGAAMAE;Lo;0;L;;;;;N;;;;;\n168FA;BAMUM LETTER PHASE-D NYAM;Lo;0;L;;;;;N;;;;;\n168FB;BAMUM LETTER PHASE-D WUAEN;Lo;0;L;;;;;N;;;;;\n168FC;BAMUM LETTER PHASE-D NGKUN;Lo;0;L;;;;;N;;;;;\n168FD;BAMUM LETTER PHASE-D SHEE;Lo;0;L;;;;;N;;;;;\n168FE;BAMUM LETTER PHASE-D NGKAP;Lo;0;L;;;;;N;;;;;\n168FF;BAMUM LETTER PHASE-D KEUAETMEUN;Lo;0;L;;;;;N;;;;;\n16900;BAMUM LETTER PHASE-D TEUT;Lo;0;L;;;;;N;;;;;\n16901;BAMUM LETTER PHASE-D SHEUAE;Lo;0;L;;;;;N;;;;;\n16902;BAMUM LETTER PHASE-D NJAP;Lo;0;L;;;;;N;;;;;\n16903;BAMUM LETTER PHASE-D SUE;Lo;0;L;;;;;N;;;;;\n16904;BAMUM LETTER PHASE-D KET;Lo;0;L;;;;;N;;;;;\n16905;BAMUM LETTER PHASE-D YAEMMAE;Lo;0;L;;;;;N;;;;;\n16906;BAMUM LETTER PHASE-D KUOM;Lo;0;L;;;;;N;;;;;\n16907;BAMUM LETTER PHASE-D SAP;Lo;0;L;;;;;N;;;;;\n16908;BAMUM LETTER PHASE-D MFEUT;Lo;0;L;;;;;N;;;;;\n16909;BAMUM LETTER PHASE-D NDEUX;Lo;0;L;;;;;N;;;;;\n1690A;BAMUM LETTER PHASE-D MALEERI;Lo;0;L;;;;;N;;;;;\n1690B;BAMUM LETTER PHASE-D MEUT;Lo;0;L;;;;;N;;;;;\n1690C;BAMUM LETTER PHASE-D SEUAEQ;Lo;0;L;;;;;N;;;;;\n1690D;BAMUM LETTER PHASE-D YEN;Lo;0;L;;;;;N;;;;;\n1690E;BAMUM LETTER PHASE-D NJEUAEM;Lo;0;L;;;;;N;;;;;\n1690F;BAMUM LETTER PHASE-D KEUOT MBUAE;Lo;0;L;;;;;N;;;;;\n16910;BAMUM LETTER PHASE-D NGKEURI;Lo;0;L;;;;;N;;;;;\n16911;BAMUM LETTER PHASE-D TU;Lo;0;L;;;;;N;;;;;\n16912;BAMUM LETTER PHASE-D GHAA;Lo;0;L;;;;;N;;;;;\n16913;BAMUM LETTER PHASE-D NGKYEE;Lo;0;L;;;;;N;;;;;\n16914;BAMUM LETTER PHASE-D FEUFEUAET;Lo;0;L;;;;;N;;;;;\n16915;BAMUM LETTER PHASE-D NDEE;Lo;0;L;;;;;N;;;;;\n16916;BAMUM LETTER PHASE-D MGBOFUM;Lo;0;L;;;;;N;;;;;\n16917;BAMUM LETTER PHASE-D LEUAEP;Lo;0;L;;;;;N;;;;;\n16918;BAMUM LETTER PHASE-D NDON;Lo;0;L;;;;;N;;;;;\n16919;BAMUM LETTER PHASE-D MONI;Lo;0;L;;;;;N;;;;;\n1691A;BAMUM LETTER PHASE-D MGBEUN;Lo;0;L;;;;;N;;;;;\n1691B;BAMUM LETTER PHASE-D PUUT;Lo;0;L;;;;;N;;;;;\n1691C;BAMUM LETTER PHASE-D MGBIEE;Lo;0;L;;;;;N;;;;;\n1691D;BAMUM LETTER PHASE-D MFO;Lo;0;L;;;;;N;;;;;\n1691E;BAMUM LETTER PHASE-D LUM;Lo;0;L;;;;;N;;;;;\n1691F;BAMUM LETTER PHASE-D NSIEEP;Lo;0;L;;;;;N;;;;;\n16920;BAMUM LETTER PHASE-D MBAA;Lo;0;L;;;;;N;;;;;\n16921;BAMUM LETTER PHASE-D KWAET;Lo;0;L;;;;;N;;;;;\n16922;BAMUM LETTER PHASE-D NYET;Lo;0;L;;;;;N;;;;;\n16923;BAMUM LETTER PHASE-D TEUAEN;Lo;0;L;;;;;N;;;;;\n16924;BAMUM LETTER PHASE-D SOT;Lo;0;L;;;;;N;;;;;\n16925;BAMUM LETTER PHASE-D YUWOQ;Lo;0;L;;;;;N;;;;;\n16926;BAMUM LETTER PHASE-D KEUM;Lo;0;L;;;;;N;;;;;\n16927;BAMUM LETTER PHASE-D RAEM;Lo;0;L;;;;;N;;;;;\n16928;BAMUM LETTER PHASE-D TEEEE;Lo;0;L;;;;;N;;;;;\n16929;BAMUM LETTER PHASE-D NGKEUAEQ;Lo;0;L;;;;;N;;;;;\n1692A;BAMUM LETTER PHASE-D MFEUAE;Lo;0;L;;;;;N;;;;;\n1692B;BAMUM LETTER PHASE-D NSIEET;Lo;0;L;;;;;N;;;;;\n1692C;BAMUM LETTER PHASE-D KEUP;Lo;0;L;;;;;N;;;;;\n1692D;BAMUM LETTER PHASE-D PIP;Lo;0;L;;;;;N;;;;;\n1692E;BAMUM LETTER PHASE-D PEUTAE;Lo;0;L;;;;;N;;;;;\n1692F;BAMUM LETTER PHASE-D NYUE;Lo;0;L;;;;;N;;;;;\n16930;BAMUM LETTER PHASE-D LET;Lo;0;L;;;;;N;;;;;\n16931;BAMUM LETTER PHASE-D NGGAAM;Lo;0;L;;;;;N;;;;;\n16932;BAMUM LETTER PHASE-D MFIEE;Lo;0;L;;;;;N;;;;;\n16933;BAMUM LETTER PHASE-D NGGWAEN;Lo;0;L;;;;;N;;;;;\n16934;BAMUM LETTER PHASE-D YUOM;Lo;0;L;;;;;N;;;;;\n16935;BAMUM LETTER PHASE-D PAP;Lo;0;L;;;;;N;;;;;\n16936;BAMUM LETTER PHASE-D YUOP;Lo;0;L;;;;;N;;;;;\n16937;BAMUM LETTER PHASE-D NDAM;Lo;0;L;;;;;N;;;;;\n16938;BAMUM LETTER PHASE-D NTEUM;Lo;0;L;;;;;N;;;;;\n16939;BAMUM LETTER PHASE-D SUAE;Lo;0;L;;;;;N;;;;;\n1693A;BAMUM LETTER PHASE-D KUN;Lo;0;L;;;;;N;;;;;\n1693B;BAMUM LETTER PHASE-D NGGEUX;Lo;0;L;;;;;N;;;;;\n1693C;BAMUM LETTER PHASE-D NGKIEE;Lo;0;L;;;;;N;;;;;\n1693D;BAMUM LETTER PHASE-D TUOT;Lo;0;L;;;;;N;;;;;\n1693E;BAMUM LETTER PHASE-D MEUN;Lo;0;L;;;;;N;;;;;\n1693F;BAMUM LETTER PHASE-D KUQ;Lo;0;L;;;;;N;;;;;\n16940;BAMUM LETTER PHASE-D NSUM;Lo;0;L;;;;;N;;;;;\n16941;BAMUM LETTER PHASE-D TEUN;Lo;0;L;;;;;N;;;;;\n16942;BAMUM LETTER PHASE-D MAENJET;Lo;0;L;;;;;N;;;;;\n16943;BAMUM LETTER PHASE-D NGGAP;Lo;0;L;;;;;N;;;;;\n16944;BAMUM LETTER PHASE-D LEUM;Lo;0;L;;;;;N;;;;;\n16945;BAMUM LETTER PHASE-D NGGUOM;Lo;0;L;;;;;N;;;;;\n16946;BAMUM LETTER PHASE-D NSHUT;Lo;0;L;;;;;N;;;;;\n16947;BAMUM LETTER PHASE-D NJUEQ;Lo;0;L;;;;;N;;;;;\n16948;BAMUM LETTER PHASE-D GHEUAE;Lo;0;L;;;;;N;;;;;\n16949;BAMUM LETTER PHASE-D KU;Lo;0;L;;;;;N;;;;;\n1694A;BAMUM LETTER PHASE-D REN OLD;Lo;0;L;;;;;N;;;;;\n1694B;BAMUM LETTER PHASE-D TAE;Lo;0;L;;;;;N;;;;;\n1694C;BAMUM LETTER PHASE-D TOQ;Lo;0;L;;;;;N;;;;;\n1694D;BAMUM LETTER PHASE-D NYI;Lo;0;L;;;;;N;;;;;\n1694E;BAMUM LETTER PHASE-D RII;Lo;0;L;;;;;N;;;;;\n1694F;BAMUM LETTER PHASE-D LEEEE;Lo;0;L;;;;;N;;;;;\n16950;BAMUM LETTER PHASE-D MEEEE;Lo;0;L;;;;;N;;;;;\n16951;BAMUM LETTER PHASE-D M;Lo;0;L;;;;;N;;;;;\n16952;BAMUM LETTER PHASE-D SUU;Lo;0;L;;;;;N;;;;;\n16953;BAMUM LETTER PHASE-D MU;Lo;0;L;;;;;N;;;;;\n16954;BAMUM LETTER PHASE-D SHII;Lo;0;L;;;;;N;;;;;\n16955;BAMUM LETTER PHASE-D SHEUX;Lo;0;L;;;;;N;;;;;\n16956;BAMUM LETTER PHASE-D KYEE;Lo;0;L;;;;;N;;;;;\n16957;BAMUM LETTER PHASE-D NU;Lo;0;L;;;;;N;;;;;\n16958;BAMUM LETTER PHASE-D SHU;Lo;0;L;;;;;N;;;;;\n16959;BAMUM LETTER PHASE-D NTEE;Lo;0;L;;;;;N;;;;;\n1695A;BAMUM LETTER PHASE-D PEE;Lo;0;L;;;;;N;;;;;\n1695B;BAMUM LETTER PHASE-D NI;Lo;0;L;;;;;N;;;;;\n1695C;BAMUM LETTER PHASE-D SHOQ;Lo;0;L;;;;;N;;;;;\n1695D;BAMUM LETTER PHASE-D PUQ;Lo;0;L;;;;;N;;;;;\n1695E;BAMUM LETTER PHASE-D MVOP;Lo;0;L;;;;;N;;;;;\n1695F;BAMUM LETTER PHASE-D LOQ;Lo;0;L;;;;;N;;;;;\n16960;BAMUM LETTER PHASE-D REN MUCH;Lo;0;L;;;;;N;;;;;\n16961;BAMUM LETTER PHASE-D TI;Lo;0;L;;;;;N;;;;;\n16962;BAMUM LETTER PHASE-D NTUU;Lo;0;L;;;;;N;;;;;\n16963;BAMUM LETTER PHASE-D MBAA SEVEN;Lo;0;L;;;;;N;;;;;\n16964;BAMUM LETTER PHASE-D SAQ;Lo;0;L;;;;;N;;;;;\n16965;BAMUM LETTER PHASE-D FAA;Lo;0;L;;;;;N;;;;;\n16966;BAMUM LETTER PHASE-E NDAP;Lo;0;L;;;;;N;;;;;\n16967;BAMUM LETTER PHASE-E TOON;Lo;0;L;;;;;N;;;;;\n16968;BAMUM LETTER PHASE-E MBEUM;Lo;0;L;;;;;N;;;;;\n16969;BAMUM LETTER PHASE-E LAP;Lo;0;L;;;;;N;;;;;\n1696A;BAMUM LETTER PHASE-E VOM;Lo;0;L;;;;;N;;;;;\n1696B;BAMUM LETTER PHASE-E LOON;Lo;0;L;;;;;N;;;;;\n1696C;BAMUM LETTER PHASE-E PAA;Lo;0;L;;;;;N;;;;;\n1696D;BAMUM LETTER PHASE-E SOM;Lo;0;L;;;;;N;;;;;\n1696E;BAMUM LETTER PHASE-E RAQ;Lo;0;L;;;;;N;;;;;\n1696F;BAMUM LETTER PHASE-E NSHUOP;Lo;0;L;;;;;N;;;;;\n16970;BAMUM LETTER PHASE-E NDUN;Lo;0;L;;;;;N;;;;;\n16971;BAMUM LETTER PHASE-E PUAE;Lo;0;L;;;;;N;;;;;\n16972;BAMUM LETTER PHASE-E TAM;Lo;0;L;;;;;N;;;;;\n16973;BAMUM LETTER PHASE-E NGKA;Lo;0;L;;;;;N;;;;;\n16974;BAMUM LETTER PHASE-E KPEUX;Lo;0;L;;;;;N;;;;;\n16975;BAMUM LETTER PHASE-E WUO;Lo;0;L;;;;;N;;;;;\n16976;BAMUM LETTER PHASE-E SEE;Lo;0;L;;;;;N;;;;;\n16977;BAMUM LETTER PHASE-E NGGEUAET;Lo;0;L;;;;;N;;;;;\n16978;BAMUM LETTER PHASE-E PAAM;Lo;0;L;;;;;N;;;;;\n16979;BAMUM LETTER PHASE-E TOO;Lo;0;L;;;;;N;;;;;\n1697A;BAMUM LETTER PHASE-E KUOP;Lo;0;L;;;;;N;;;;;\n1697B;BAMUM LETTER PHASE-E LOM;Lo;0;L;;;;;N;;;;;\n1697C;BAMUM LETTER PHASE-E NSHIEE;Lo;0;L;;;;;N;;;;;\n1697D;BAMUM LETTER PHASE-E NGOP;Lo;0;L;;;;;N;;;;;\n1697E;BAMUM LETTER PHASE-E MAEM;Lo;0;L;;;;;N;;;;;\n1697F;BAMUM LETTER PHASE-E NGKEUX;Lo;0;L;;;;;N;;;;;\n16980;BAMUM LETTER PHASE-E NGOQ;Lo;0;L;;;;;N;;;;;\n16981;BAMUM LETTER PHASE-E NSHUE;Lo;0;L;;;;;N;;;;;\n16982;BAMUM LETTER PHASE-E RIMGBA;Lo;0;L;;;;;N;;;;;\n16983;BAMUM LETTER PHASE-E NJEUX;Lo;0;L;;;;;N;;;;;\n16984;BAMUM LETTER PHASE-E PEEM;Lo;0;L;;;;;N;;;;;\n16985;BAMUM LETTER PHASE-E SAA;Lo;0;L;;;;;N;;;;;\n16986;BAMUM LETTER PHASE-E NGGURAE;Lo;0;L;;;;;N;;;;;\n16987;BAMUM LETTER PHASE-E MGBA;Lo;0;L;;;;;N;;;;;\n16988;BAMUM LETTER PHASE-E GHEUX;Lo;0;L;;;;;N;;;;;\n16989;BAMUM LETTER PHASE-E NGKEUAEM;Lo;0;L;;;;;N;;;;;\n1698A;BAMUM LETTER PHASE-E NJAEMLI;Lo;0;L;;;;;N;;;;;\n1698B;BAMUM LETTER PHASE-E MAP;Lo;0;L;;;;;N;;;;;\n1698C;BAMUM LETTER PHASE-E LOOT;Lo;0;L;;;;;N;;;;;\n1698D;BAMUM LETTER PHASE-E NGGEEEE;Lo;0;L;;;;;N;;;;;\n1698E;BAMUM LETTER PHASE-E NDIQ;Lo;0;L;;;;;N;;;;;\n1698F;BAMUM LETTER PHASE-E TAEN NTEUM;Lo;0;L;;;;;N;;;;;\n16990;BAMUM LETTER PHASE-E SET;Lo;0;L;;;;;N;;;;;\n16991;BAMUM LETTER PHASE-E PUM;Lo;0;L;;;;;N;;;;;\n16992;BAMUM LETTER PHASE-E NDAA SOFTNESS;Lo;0;L;;;;;N;;;;;\n16993;BAMUM LETTER PHASE-E NGGUAESHAE NYAM;Lo;0;L;;;;;N;;;;;\n16994;BAMUM LETTER PHASE-E YIEE;Lo;0;L;;;;;N;;;;;\n16995;BAMUM LETTER PHASE-E GHEUN;Lo;0;L;;;;;N;;;;;\n16996;BAMUM LETTER PHASE-E TUAE;Lo;0;L;;;;;N;;;;;\n16997;BAMUM LETTER PHASE-E YEUAE;Lo;0;L;;;;;N;;;;;\n16998;BAMUM LETTER PHASE-E PO;Lo;0;L;;;;;N;;;;;\n16999;BAMUM LETTER PHASE-E TUMAE;Lo;0;L;;;;;N;;;;;\n1699A;BAMUM LETTER PHASE-E KEUAE;Lo;0;L;;;;;N;;;;;\n1699B;BAMUM LETTER PHASE-E SUAEN;Lo;0;L;;;;;N;;;;;\n1699C;BAMUM LETTER PHASE-E TEUAEQ;Lo;0;L;;;;;N;;;;;\n1699D;BAMUM LETTER PHASE-E VEUAE;Lo;0;L;;;;;N;;;;;\n1699E;BAMUM LETTER PHASE-E WEUX;Lo;0;L;;;;;N;;;;;\n1699F;BAMUM LETTER PHASE-E LAAM;Lo;0;L;;;;;N;;;;;\n169A0;BAMUM LETTER PHASE-E PU;Lo;0;L;;;;;N;;;;;\n169A1;BAMUM LETTER PHASE-E TAAQ;Lo;0;L;;;;;N;;;;;\n169A2;BAMUM LETTER PHASE-E GHAAMAE;Lo;0;L;;;;;N;;;;;\n169A3;BAMUM LETTER PHASE-E NGEUREUT;Lo;0;L;;;;;N;;;;;\n169A4;BAMUM LETTER PHASE-E SHEUAEQ;Lo;0;L;;;;;N;;;;;\n169A5;BAMUM LETTER PHASE-E MGBEN;Lo;0;L;;;;;N;;;;;\n169A6;BAMUM LETTER PHASE-E MBEE;Lo;0;L;;;;;N;;;;;\n169A7;BAMUM LETTER PHASE-E NZAQ;Lo;0;L;;;;;N;;;;;\n169A8;BAMUM LETTER PHASE-E NKOM;Lo;0;L;;;;;N;;;;;\n169A9;BAMUM LETTER PHASE-E GBET;Lo;0;L;;;;;N;;;;;\n169AA;BAMUM LETTER PHASE-E TUM;Lo;0;L;;;;;N;;;;;\n169AB;BAMUM LETTER PHASE-E KUET;Lo;0;L;;;;;N;;;;;\n169AC;BAMUM LETTER PHASE-E YAP;Lo;0;L;;;;;N;;;;;\n169AD;BAMUM LETTER PHASE-E NYI CLEAVER;Lo;0;L;;;;;N;;;;;\n169AE;BAMUM LETTER PHASE-E YIT;Lo;0;L;;;;;N;;;;;\n169AF;BAMUM LETTER PHASE-E MFEUQ;Lo;0;L;;;;;N;;;;;\n169B0;BAMUM LETTER PHASE-E NDIAQ;Lo;0;L;;;;;N;;;;;\n169B1;BAMUM LETTER PHASE-E PIEEQ;Lo;0;L;;;;;N;;;;;\n169B2;BAMUM LETTER PHASE-E YUEQ;Lo;0;L;;;;;N;;;;;\n169B3;BAMUM LETTER PHASE-E LEUAEM;Lo;0;L;;;;;N;;;;;\n169B4;BAMUM LETTER PHASE-E FUE;Lo;0;L;;;;;N;;;;;\n169B5;BAMUM LETTER PHASE-E GBEUX;Lo;0;L;;;;;N;;;;;\n169B6;BAMUM LETTER PHASE-E NGKUP;Lo;0;L;;;;;N;;;;;\n169B7;BAMUM LETTER PHASE-E KET;Lo;0;L;;;;;N;;;;;\n169B8;BAMUM LETTER PHASE-E MAE;Lo;0;L;;;;;N;;;;;\n169B9;BAMUM LETTER PHASE-E NGKAAMI;Lo;0;L;;;;;N;;;;;\n169BA;BAMUM LETTER PHASE-E GHET;Lo;0;L;;;;;N;;;;;\n169BB;BAMUM LETTER PHASE-E FA;Lo;0;L;;;;;N;;;;;\n169BC;BAMUM LETTER PHASE-E NTUM;Lo;0;L;;;;;N;;;;;\n169BD;BAMUM LETTER PHASE-E PEUT;Lo;0;L;;;;;N;;;;;\n169BE;BAMUM LETTER PHASE-E YEUM;Lo;0;L;;;;;N;;;;;\n169BF;BAMUM LETTER PHASE-E NGGEUAE;Lo;0;L;;;;;N;;;;;\n169C0;BAMUM LETTER PHASE-E NYI BETWEEN;Lo;0;L;;;;;N;;;;;\n169C1;BAMUM LETTER PHASE-E NZUQ;Lo;0;L;;;;;N;;;;;\n169C2;BAMUM LETTER PHASE-E POON;Lo;0;L;;;;;N;;;;;\n169C3;BAMUM LETTER PHASE-E MIEE;Lo;0;L;;;;;N;;;;;\n169C4;BAMUM LETTER PHASE-E FUET;Lo;0;L;;;;;N;;;;;\n169C5;BAMUM LETTER PHASE-E NAE;Lo;0;L;;;;;N;;;;;\n169C6;BAMUM LETTER PHASE-E MUAE;Lo;0;L;;;;;N;;;;;\n169C7;BAMUM LETTER PHASE-E GHEUAE;Lo;0;L;;;;;N;;;;;\n169C8;BAMUM LETTER PHASE-E FU I;Lo;0;L;;;;;N;;;;;\n169C9;BAMUM LETTER PHASE-E MVI;Lo;0;L;;;;;N;;;;;\n169CA;BAMUM LETTER PHASE-E PUAQ;Lo;0;L;;;;;N;;;;;\n169CB;BAMUM LETTER PHASE-E NGKUM;Lo;0;L;;;;;N;;;;;\n169CC;BAMUM LETTER PHASE-E KUT;Lo;0;L;;;;;N;;;;;\n169CD;BAMUM LETTER PHASE-E PIET;Lo;0;L;;;;;N;;;;;\n169CE;BAMUM LETTER PHASE-E NTAP;Lo;0;L;;;;;N;;;;;\n169CF;BAMUM LETTER PHASE-E YEUAET;Lo;0;L;;;;;N;;;;;\n169D0;BAMUM LETTER PHASE-E NGGUP;Lo;0;L;;;;;N;;;;;\n169D1;BAMUM LETTER PHASE-E PA PEOPLE;Lo;0;L;;;;;N;;;;;\n169D2;BAMUM LETTER PHASE-E FU CALL;Lo;0;L;;;;;N;;;;;\n169D3;BAMUM LETTER PHASE-E FOM;Lo;0;L;;;;;N;;;;;\n169D4;BAMUM LETTER PHASE-E NJEE;Lo;0;L;;;;;N;;;;;\n169D5;BAMUM LETTER PHASE-E A;Lo;0;L;;;;;N;;;;;\n169D6;BAMUM LETTER PHASE-E TOQ;Lo;0;L;;;;;N;;;;;\n169D7;BAMUM LETTER PHASE-E O;Lo;0;L;;;;;N;;;;;\n169D8;BAMUM LETTER PHASE-E I;Lo;0;L;;;;;N;;;;;\n169D9;BAMUM LETTER PHASE-E LAQ;Lo;0;L;;;;;N;;;;;\n169DA;BAMUM LETTER PHASE-E PA PLURAL;Lo;0;L;;;;;N;;;;;\n169DB;BAMUM LETTER PHASE-E TAA;Lo;0;L;;;;;N;;;;;\n169DC;BAMUM LETTER PHASE-E TAQ;Lo;0;L;;;;;N;;;;;\n169DD;BAMUM LETTER PHASE-E NDAA MY HOUSE;Lo;0;L;;;;;N;;;;;\n169DE;BAMUM LETTER PHASE-E SHIQ;Lo;0;L;;;;;N;;;;;\n169DF;BAMUM LETTER PHASE-E YEUX;Lo;0;L;;;;;N;;;;;\n169E0;BAMUM LETTER PHASE-E NGUAE;Lo;0;L;;;;;N;;;;;\n169E1;BAMUM LETTER PHASE-E YUAEN;Lo;0;L;;;;;N;;;;;\n169E2;BAMUM LETTER PHASE-E YOQ SWIMMING;Lo;0;L;;;;;N;;;;;\n169E3;BAMUM LETTER PHASE-E YOQ COVER;Lo;0;L;;;;;N;;;;;\n169E4;BAMUM LETTER PHASE-E YUQ;Lo;0;L;;;;;N;;;;;\n169E5;BAMUM LETTER PHASE-E YUN;Lo;0;L;;;;;N;;;;;\n169E6;BAMUM LETTER PHASE-E KEUX;Lo;0;L;;;;;N;;;;;\n169E7;BAMUM LETTER PHASE-E PEUX;Lo;0;L;;;;;N;;;;;\n169E8;BAMUM LETTER PHASE-E NJEE EPOCH;Lo;0;L;;;;;N;;;;;\n169E9;BAMUM LETTER PHASE-E PUE;Lo;0;L;;;;;N;;;;;\n169EA;BAMUM LETTER PHASE-E WUE;Lo;0;L;;;;;N;;;;;\n169EB;BAMUM LETTER PHASE-E FEE;Lo;0;L;;;;;N;;;;;\n169EC;BAMUM LETTER PHASE-E VEE;Lo;0;L;;;;;N;;;;;\n169ED;BAMUM LETTER PHASE-E LU;Lo;0;L;;;;;N;;;;;\n169EE;BAMUM LETTER PHASE-E MI;Lo;0;L;;;;;N;;;;;\n169EF;BAMUM LETTER PHASE-E REUX;Lo;0;L;;;;;N;;;;;\n169F0;BAMUM LETTER PHASE-E RAE;Lo;0;L;;;;;N;;;;;\n169F1;BAMUM LETTER PHASE-E NGUAET;Lo;0;L;;;;;N;;;;;\n169F2;BAMUM LETTER PHASE-E NGA;Lo;0;L;;;;;N;;;;;\n169F3;BAMUM LETTER PHASE-E SHO;Lo;0;L;;;;;N;;;;;\n169F4;BAMUM LETTER PHASE-E SHOQ;Lo;0;L;;;;;N;;;;;\n169F5;BAMUM LETTER PHASE-E FU REMEDY;Lo;0;L;;;;;N;;;;;\n169F6;BAMUM LETTER PHASE-E NA;Lo;0;L;;;;;N;;;;;\n169F7;BAMUM LETTER PHASE-E PI;Lo;0;L;;;;;N;;;;;\n169F8;BAMUM LETTER PHASE-E LOQ;Lo;0;L;;;;;N;;;;;\n169F9;BAMUM LETTER PHASE-E KO;Lo;0;L;;;;;N;;;;;\n169FA;BAMUM LETTER PHASE-E MEN;Lo;0;L;;;;;N;;;;;\n169FB;BAMUM LETTER PHASE-E MA;Lo;0;L;;;;;N;;;;;\n169FC;BAMUM LETTER PHASE-E MAQ;Lo;0;L;;;;;N;;;;;\n169FD;BAMUM LETTER PHASE-E TEU;Lo;0;L;;;;;N;;;;;\n169FE;BAMUM LETTER PHASE-E KI;Lo;0;L;;;;;N;;;;;\n169FF;BAMUM LETTER PHASE-E MON;Lo;0;L;;;;;N;;;;;\n16A00;BAMUM LETTER PHASE-E TEN;Lo;0;L;;;;;N;;;;;\n16A01;BAMUM LETTER PHASE-E FAQ;Lo;0;L;;;;;N;;;;;\n16A02;BAMUM LETTER PHASE-E GHOM;Lo;0;L;;;;;N;;;;;\n16A03;BAMUM LETTER PHASE-F KA;Lo;0;L;;;;;N;;;;;\n16A04;BAMUM LETTER PHASE-F U;Lo;0;L;;;;;N;;;;;\n16A05;BAMUM LETTER PHASE-F KU;Lo;0;L;;;;;N;;;;;\n16A06;BAMUM LETTER PHASE-F EE;Lo;0;L;;;;;N;;;;;\n16A07;BAMUM LETTER PHASE-F REE;Lo;0;L;;;;;N;;;;;\n16A08;BAMUM LETTER PHASE-F TAE;Lo;0;L;;;;;N;;;;;\n16A09;BAMUM LETTER PHASE-F NYI;Lo;0;L;;;;;N;;;;;\n16A0A;BAMUM LETTER PHASE-F LA;Lo;0;L;;;;;N;;;;;\n16A0B;BAMUM LETTER PHASE-F RII;Lo;0;L;;;;;N;;;;;\n16A0C;BAMUM LETTER PHASE-F RIEE;Lo;0;L;;;;;N;;;;;\n16A0D;BAMUM LETTER PHASE-F MEEEE;Lo;0;L;;;;;N;;;;;\n16A0E;BAMUM LETTER PHASE-F TAA;Lo;0;L;;;;;N;;;;;\n16A0F;BAMUM LETTER PHASE-F NDAA;Lo;0;L;;;;;N;;;;;\n16A10;BAMUM LETTER PHASE-F NJAEM;Lo;0;L;;;;;N;;;;;\n16A11;BAMUM LETTER PHASE-F M;Lo;0;L;;;;;N;;;;;\n16A12;BAMUM LETTER PHASE-F SUU;Lo;0;L;;;;;N;;;;;\n16A13;BAMUM LETTER PHASE-F SHII;Lo;0;L;;;;;N;;;;;\n16A14;BAMUM LETTER PHASE-F SI;Lo;0;L;;;;;N;;;;;\n16A15;BAMUM LETTER PHASE-F SEUX;Lo;0;L;;;;;N;;;;;\n16A16;BAMUM LETTER PHASE-F KYEE;Lo;0;L;;;;;N;;;;;\n16A17;BAMUM LETTER PHASE-F KET;Lo;0;L;;;;;N;;;;;\n16A18;BAMUM LETTER PHASE-F NUAE;Lo;0;L;;;;;N;;;;;\n16A19;BAMUM LETTER PHASE-F NU;Lo;0;L;;;;;N;;;;;\n16A1A;BAMUM LETTER PHASE-F NJUAE;Lo;0;L;;;;;N;;;;;\n16A1B;BAMUM LETTER PHASE-F YOQ;Lo;0;L;;;;;N;;;;;\n16A1C;BAMUM LETTER PHASE-F SHU;Lo;0;L;;;;;N;;;;;\n16A1D;BAMUM LETTER PHASE-F YA;Lo;0;L;;;;;N;;;;;\n16A1E;BAMUM LETTER PHASE-F NSHA;Lo;0;L;;;;;N;;;;;\n16A1F;BAMUM LETTER PHASE-F PEUX;Lo;0;L;;;;;N;;;;;\n16A20;BAMUM LETTER PHASE-F NTEE;Lo;0;L;;;;;N;;;;;\n16A21;BAMUM LETTER PHASE-F WUE;Lo;0;L;;;;;N;;;;;\n16A22;BAMUM LETTER PHASE-F PEE;Lo;0;L;;;;;N;;;;;\n16A23;BAMUM LETTER PHASE-F RU;Lo;0;L;;;;;N;;;;;\n16A24;BAMUM LETTER PHASE-F NI;Lo;0;L;;;;;N;;;;;\n16A25;BAMUM LETTER PHASE-F REUX;Lo;0;L;;;;;N;;;;;\n16A26;BAMUM LETTER PHASE-F KEN;Lo;0;L;;;;;N;;;;;\n16A27;BAMUM LETTER PHASE-F NGKWAEN;Lo;0;L;;;;;N;;;;;\n16A28;BAMUM LETTER PHASE-F NGGA;Lo;0;L;;;;;N;;;;;\n16A29;BAMUM LETTER PHASE-F SHO;Lo;0;L;;;;;N;;;;;\n16A2A;BAMUM LETTER PHASE-F PUAE;Lo;0;L;;;;;N;;;;;\n16A2B;BAMUM LETTER PHASE-F FOM;Lo;0;L;;;;;N;;;;;\n16A2C;BAMUM LETTER PHASE-F WA;Lo;0;L;;;;;N;;;;;\n16A2D;BAMUM LETTER PHASE-F LI;Lo;0;L;;;;;N;;;;;\n16A2E;BAMUM LETTER PHASE-F LOQ;Lo;0;L;;;;;N;;;;;\n16A2F;BAMUM LETTER PHASE-F KO;Lo;0;L;;;;;N;;;;;\n16A30;BAMUM LETTER PHASE-F MBEN;Lo;0;L;;;;;N;;;;;\n16A31;BAMUM LETTER PHASE-F REN;Lo;0;L;;;;;N;;;;;\n16A32;BAMUM LETTER PHASE-F MA;Lo;0;L;;;;;N;;;;;\n16A33;BAMUM LETTER PHASE-F MO;Lo;0;L;;;;;N;;;;;\n16A34;BAMUM LETTER PHASE-F MBAA;Lo;0;L;;;;;N;;;;;\n16A35;BAMUM LETTER PHASE-F TET;Lo;0;L;;;;;N;;;;;\n16A36;BAMUM LETTER PHASE-F KPA;Lo;0;L;;;;;N;;;;;\n16A37;BAMUM LETTER PHASE-F SAMBA;Lo;0;L;;;;;N;;;;;\n16A38;BAMUM LETTER PHASE-F VUEQ;Lo;0;L;;;;;N;;;;;\n16A40;MRO LETTER TA;Lo;0;L;;;;;N;;;;;\n16A41;MRO LETTER NGI;Lo;0;L;;;;;N;;;;;\n16A42;MRO LETTER YO;Lo;0;L;;;;;N;;;;;\n16A43;MRO LETTER MIM;Lo;0;L;;;;;N;;;;;\n16A44;MRO LETTER BA;Lo;0;L;;;;;N;;;;;\n16A45;MRO LETTER DA;Lo;0;L;;;;;N;;;;;\n16A46;MRO LETTER A;Lo;0;L;;;;;N;;;;;\n16A47;MRO LETTER PHI;Lo;0;L;;;;;N;;;;;\n16A48;MRO LETTER KHAI;Lo;0;L;;;;;N;;;;;\n16A49;MRO LETTER HAO;Lo;0;L;;;;;N;;;;;\n16A4A;MRO LETTER DAI;Lo;0;L;;;;;N;;;;;\n16A4B;MRO LETTER CHU;Lo;0;L;;;;;N;;;;;\n16A4C;MRO LETTER KEAAE;Lo;0;L;;;;;N;;;;;\n16A4D;MRO LETTER OL;Lo;0;L;;;;;N;;;;;\n16A4E;MRO LETTER MAEM;Lo;0;L;;;;;N;;;;;\n16A4F;MRO LETTER NIN;Lo;0;L;;;;;N;;;;;\n16A50;MRO LETTER PA;Lo;0;L;;;;;N;;;;;\n16A51;MRO LETTER OO;Lo;0;L;;;;;N;;;;;\n16A52;MRO LETTER O;Lo;0;L;;;;;N;;;;;\n16A53;MRO LETTER RO;Lo;0;L;;;;;N;;;;;\n16A54;MRO LETTER SHI;Lo;0;L;;;;;N;;;;;\n16A55;MRO LETTER THEA;Lo;0;L;;;;;N;;;;;\n16A56;MRO LETTER EA;Lo;0;L;;;;;N;;;;;\n16A57;MRO LETTER WA;Lo;0;L;;;;;N;;;;;\n16A58;MRO LETTER E;Lo;0;L;;;;;N;;;;;\n16A59;MRO LETTER KO;Lo;0;L;;;;;N;;;;;\n16A5A;MRO LETTER LAN;Lo;0;L;;;;;N;;;;;\n16A5B;MRO LETTER LA;Lo;0;L;;;;;N;;;;;\n16A5C;MRO LETTER HAI;Lo;0;L;;;;;N;;;;;\n16A5D;MRO LETTER RI;Lo;0;L;;;;;N;;;;;\n16A5E;MRO LETTER TEK;Lo;0;L;;;;;N;;;;;\n16A60;MRO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n16A61;MRO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n16A62;MRO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n16A63;MRO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n16A64;MRO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n16A65;MRO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n16A66;MRO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n16A67;MRO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n16A68;MRO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n16A6E;MRO DANDA;Po;0;L;;;;;N;;;;;\n16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;;\n16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;;\n16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;;\n16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;;\n16AD3;BASSA VAH LETTER FA;Lo;0;L;;;;;N;;;;;\n16AD4;BASSA VAH LETTER MBE;Lo;0;L;;;;;N;;;;;\n16AD5;BASSA VAH LETTER YIE;Lo;0;L;;;;;N;;;;;\n16AD6;BASSA VAH LETTER GAH;Lo;0;L;;;;;N;;;;;\n16AD7;BASSA VAH LETTER DHII;Lo;0;L;;;;;N;;;;;\n16AD8;BASSA VAH LETTER KPAH;Lo;0;L;;;;;N;;;;;\n16AD9;BASSA VAH LETTER JO;Lo;0;L;;;;;N;;;;;\n16ADA;BASSA VAH LETTER HWAH;Lo;0;L;;;;;N;;;;;\n16ADB;BASSA VAH LETTER WA;Lo;0;L;;;;;N;;;;;\n16ADC;BASSA VAH LETTER ZO;Lo;0;L;;;;;N;;;;;\n16ADD;BASSA VAH LETTER GBU;Lo;0;L;;;;;N;;;;;\n16ADE;BASSA VAH LETTER DO;Lo;0;L;;;;;N;;;;;\n16ADF;BASSA VAH LETTER CE;Lo;0;L;;;;;N;;;;;\n16AE0;BASSA VAH LETTER UWU;Lo;0;L;;;;;N;;;;;\n16AE1;BASSA VAH LETTER TO;Lo;0;L;;;;;N;;;;;\n16AE2;BASSA VAH LETTER BA;Lo;0;L;;;;;N;;;;;\n16AE3;BASSA VAH LETTER VU;Lo;0;L;;;;;N;;;;;\n16AE4;BASSA VAH LETTER YEIN;Lo;0;L;;;;;N;;;;;\n16AE5;BASSA VAH LETTER PA;Lo;0;L;;;;;N;;;;;\n16AE6;BASSA VAH LETTER WADDA;Lo;0;L;;;;;N;;;;;\n16AE7;BASSA VAH LETTER A;Lo;0;L;;;;;N;;;;;\n16AE8;BASSA VAH LETTER O;Lo;0;L;;;;;N;;;;;\n16AE9;BASSA VAH LETTER OO;Lo;0;L;;;;;N;;;;;\n16AEA;BASSA VAH LETTER U;Lo;0;L;;;;;N;;;;;\n16AEB;BASSA VAH LETTER EE;Lo;0;L;;;;;N;;;;;\n16AEC;BASSA VAH LETTER E;Lo;0;L;;;;;N;;;;;\n16AED;BASSA VAH LETTER I;Lo;0;L;;;;;N;;;;;\n16AF0;BASSA VAH COMBINING HIGH TONE;Mn;1;NSM;;;;;N;;;;;\n16AF1;BASSA VAH COMBINING LOW TONE;Mn;1;NSM;;;;;N;;;;;\n16AF2;BASSA VAH COMBINING MID TONE;Mn;1;NSM;;;;;N;;;;;\n16AF3;BASSA VAH COMBINING LOW-MID TONE;Mn;1;NSM;;;;;N;;;;;\n16AF4;BASSA VAH COMBINING HIGH-LOW TONE;Mn;1;NSM;;;;;N;;;;;\n16AF5;BASSA VAH FULL STOP;Po;0;L;;;;;N;;;;;\n16B00;PAHAWH HMONG VOWEL KEEB;Lo;0;L;;;;;N;;;;;\n16B01;PAHAWH HMONG VOWEL KEEV;Lo;0;L;;;;;N;;;;;\n16B02;PAHAWH HMONG VOWEL KIB;Lo;0;L;;;;;N;;;;;\n16B03;PAHAWH HMONG VOWEL KIV;Lo;0;L;;;;;N;;;;;\n16B04;PAHAWH HMONG VOWEL KAUB;Lo;0;L;;;;;N;;;;;\n16B05;PAHAWH HMONG VOWEL KAUV;Lo;0;L;;;;;N;;;;;\n16B06;PAHAWH HMONG VOWEL KUB;Lo;0;L;;;;;N;;;;;\n16B07;PAHAWH HMONG VOWEL KUV;Lo;0;L;;;;;N;;;;;\n16B08;PAHAWH HMONG VOWEL KEB;Lo;0;L;;;;;N;;;;;\n16B09;PAHAWH HMONG VOWEL KEV;Lo;0;L;;;;;N;;;;;\n16B0A;PAHAWH HMONG VOWEL KAIB;Lo;0;L;;;;;N;;;;;\n16B0B;PAHAWH HMONG VOWEL KAIV;Lo;0;L;;;;;N;;;;;\n16B0C;PAHAWH HMONG VOWEL KOOB;Lo;0;L;;;;;N;;;;;\n16B0D;PAHAWH HMONG VOWEL KOOV;Lo;0;L;;;;;N;;;;;\n16B0E;PAHAWH HMONG VOWEL KAWB;Lo;0;L;;;;;N;;;;;\n16B0F;PAHAWH HMONG VOWEL KAWV;Lo;0;L;;;;;N;;;;;\n16B10;PAHAWH HMONG VOWEL KUAB;Lo;0;L;;;;;N;;;;;\n16B11;PAHAWH HMONG VOWEL KUAV;Lo;0;L;;;;;N;;;;;\n16B12;PAHAWH HMONG VOWEL KOB;Lo;0;L;;;;;N;;;;;\n16B13;PAHAWH HMONG VOWEL KOV;Lo;0;L;;;;;N;;;;;\n16B14;PAHAWH HMONG VOWEL KIAB;Lo;0;L;;;;;N;;;;;\n16B15;PAHAWH HMONG VOWEL KIAV;Lo;0;L;;;;;N;;;;;\n16B16;PAHAWH HMONG VOWEL KAB;Lo;0;L;;;;;N;;;;;\n16B17;PAHAWH HMONG VOWEL KAV;Lo;0;L;;;;;N;;;;;\n16B18;PAHAWH HMONG VOWEL KWB;Lo;0;L;;;;;N;;;;;\n16B19;PAHAWH HMONG VOWEL KWV;Lo;0;L;;;;;N;;;;;\n16B1A;PAHAWH HMONG VOWEL KAAB;Lo;0;L;;;;;N;;;;;\n16B1B;PAHAWH HMONG VOWEL KAAV;Lo;0;L;;;;;N;;;;;\n16B1C;PAHAWH HMONG CONSONANT VAU;Lo;0;L;;;;;N;;;;;\n16B1D;PAHAWH HMONG CONSONANT NTSAU;Lo;0;L;;;;;N;;;;;\n16B1E;PAHAWH HMONG CONSONANT LAU;Lo;0;L;;;;;N;;;;;\n16B1F;PAHAWH HMONG CONSONANT HAU;Lo;0;L;;;;;N;;;;;\n16B20;PAHAWH HMONG CONSONANT NLAU;Lo;0;L;;;;;N;;;;;\n16B21;PAHAWH HMONG CONSONANT RAU;Lo;0;L;;;;;N;;;;;\n16B22;PAHAWH HMONG CONSONANT NKAU;Lo;0;L;;;;;N;;;;;\n16B23;PAHAWH HMONG CONSONANT QHAU;Lo;0;L;;;;;N;;;;;\n16B24;PAHAWH HMONG CONSONANT YAU;Lo;0;L;;;;;N;;;;;\n16B25;PAHAWH HMONG CONSONANT HLAU;Lo;0;L;;;;;N;;;;;\n16B26;PAHAWH HMONG CONSONANT MAU;Lo;0;L;;;;;N;;;;;\n16B27;PAHAWH HMONG CONSONANT CHAU;Lo;0;L;;;;;N;;;;;\n16B28;PAHAWH HMONG CONSONANT NCHAU;Lo;0;L;;;;;N;;;;;\n16B29;PAHAWH HMONG CONSONANT HNAU;Lo;0;L;;;;;N;;;;;\n16B2A;PAHAWH HMONG CONSONANT PLHAU;Lo;0;L;;;;;N;;;;;\n16B2B;PAHAWH HMONG CONSONANT NTHAU;Lo;0;L;;;;;N;;;;;\n16B2C;PAHAWH HMONG CONSONANT NAU;Lo;0;L;;;;;N;;;;;\n16B2D;PAHAWH HMONG CONSONANT AU;Lo;0;L;;;;;N;;;;;\n16B2E;PAHAWH HMONG CONSONANT XAU;Lo;0;L;;;;;N;;;;;\n16B2F;PAHAWH HMONG CONSONANT CAU;Lo;0;L;;;;;N;;;;;\n16B30;PAHAWH HMONG MARK CIM TUB;Mn;230;NSM;;;;;N;;;;;\n16B31;PAHAWH HMONG MARK CIM SO;Mn;230;NSM;;;;;N;;;;;\n16B32;PAHAWH HMONG MARK CIM KES;Mn;230;NSM;;;;;N;;;;;\n16B33;PAHAWH HMONG MARK CIM KHAV;Mn;230;NSM;;;;;N;;;;;\n16B34;PAHAWH HMONG MARK CIM SUAM;Mn;230;NSM;;;;;N;;;;;\n16B35;PAHAWH HMONG MARK CIM HOM;Mn;230;NSM;;;;;N;;;;;\n16B36;PAHAWH HMONG MARK CIM TAUM;Mn;230;NSM;;;;;N;;;;;\n16B37;PAHAWH HMONG SIGN VOS THOM;Po;0;L;;;;;N;;;;;\n16B38;PAHAWH HMONG SIGN VOS TSHAB CEEB;Po;0;L;;;;;N;;;;;\n16B39;PAHAWH HMONG SIGN CIM CHEEM;Po;0;L;;;;;N;;;;;\n16B3A;PAHAWH HMONG SIGN VOS THIAB;Po;0;L;;;;;N;;;;;\n16B3B;PAHAWH HMONG SIGN VOS FEEM;Po;0;L;;;;;N;;;;;\n16B3C;PAHAWH HMONG SIGN XYEEM NTXIV;So;0;L;;;;;N;;;;;\n16B3D;PAHAWH HMONG SIGN XYEEM RHO;So;0;L;;;;;N;;;;;\n16B3E;PAHAWH HMONG SIGN XYEEM TOV;So;0;L;;;;;N;;;;;\n16B3F;PAHAWH HMONG SIGN XYEEM FAIB;So;0;L;;;;;N;;;;;\n16B40;PAHAWH HMONG SIGN VOS SEEV;Lm;0;L;;;;;N;;;;;\n16B41;PAHAWH HMONG SIGN MEEJ SUAB;Lm;0;L;;;;;N;;;;;\n16B42;PAHAWH HMONG SIGN VOS NRUA;Lm;0;L;;;;;N;;;;;\n16B43;PAHAWH HMONG SIGN IB YAM;Lm;0;L;;;;;N;;;;;\n16B44;PAHAWH HMONG SIGN XAUS;Po;0;L;;;;;N;;;;;\n16B45;PAHAWH HMONG SIGN CIM TSOV ROG;So;0;L;;;;;N;;;;;\n16B50;PAHAWH HMONG DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n16B51;PAHAWH HMONG DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n16B52;PAHAWH HMONG DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n16B53;PAHAWH HMONG DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n16B54;PAHAWH HMONG DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n16B55;PAHAWH HMONG DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n16B56;PAHAWH HMONG DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n16B57;PAHAWH HMONG DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n16B58;PAHAWH HMONG DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n16B59;PAHAWH HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n16B5B;PAHAWH HMONG NUMBER TENS;No;0;L;;;;10;N;;;;;\n16B5C;PAHAWH HMONG NUMBER HUNDREDS;No;0;L;;;;100;N;;;;;\n16B5D;PAHAWH HMONG NUMBER TEN THOUSANDS;No;0;L;;;;10000;N;;;;;\n16B5E;PAHAWH HMONG NUMBER MILLIONS;No;0;L;;;;1000000;N;;;;;\n16B5F;PAHAWH HMONG NUMBER HUNDRED MILLIONS;No;0;L;;;;100000000;N;;;;;\n16B60;PAHAWH HMONG NUMBER TEN BILLIONS;No;0;L;;;;10000000000;N;;;;;\n16B61;PAHAWH HMONG NUMBER TRILLIONS;No;0;L;;;;1000000000000;N;;;;;\n16B63;PAHAWH HMONG SIGN VOS LUB;Lo;0;L;;;;;N;;;;;\n16B64;PAHAWH HMONG SIGN XYOO;Lo;0;L;;;;;N;;;;;\n16B65;PAHAWH HMONG SIGN HLI;Lo;0;L;;;;;N;;;;;\n16B66;PAHAWH HMONG SIGN THIRD-STAGE HLI;Lo;0;L;;;;;N;;;;;\n16B67;PAHAWH HMONG SIGN ZWJ THAJ;Lo;0;L;;;;;N;;;;;\n16B68;PAHAWH HMONG SIGN HNUB;Lo;0;L;;;;;N;;;;;\n16B69;PAHAWH HMONG SIGN NQIG;Lo;0;L;;;;;N;;;;;\n16B6A;PAHAWH HMONG SIGN XIAB;Lo;0;L;;;;;N;;;;;\n16B6B;PAHAWH HMONG SIGN NTUJ;Lo;0;L;;;;;N;;;;;\n16B6C;PAHAWH HMONG SIGN AV;Lo;0;L;;;;;N;;;;;\n16B6D;PAHAWH HMONG SIGN TXHEEJ CEEV;Lo;0;L;;;;;N;;;;;\n16B6E;PAHAWH HMONG SIGN MEEJ TSEEB;Lo;0;L;;;;;N;;;;;\n16B6F;PAHAWH HMONG SIGN TAU;Lo;0;L;;;;;N;;;;;\n16B70;PAHAWH HMONG SIGN LOS;Lo;0;L;;;;;N;;;;;\n16B71;PAHAWH HMONG SIGN MUS;Lo;0;L;;;;;N;;;;;\n16B72;PAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOG;Lo;0;L;;;;;N;;;;;\n16B73;PAHAWH HMONG SIGN CIM CUAM TSHOOJ;Lo;0;L;;;;;N;;;;;\n16B74;PAHAWH HMONG SIGN CIM TXWV;Lo;0;L;;;;;N;;;;;\n16B75;PAHAWH HMONG SIGN CIM TXWV CHWV;Lo;0;L;;;;;N;;;;;\n16B76;PAHAWH HMONG SIGN CIM PUB DAWB;Lo;0;L;;;;;N;;;;;\n16B77;PAHAWH HMONG SIGN CIM NRES TOS;Lo;0;L;;;;;N;;;;;\n16B7D;PAHAWH HMONG CLAN SIGN TSHEEJ;Lo;0;L;;;;;N;;;;;\n16B7E;PAHAWH HMONG CLAN SIGN YEEG;Lo;0;L;;;;;N;;;;;\n16B7F;PAHAWH HMONG CLAN SIGN LIS;Lo;0;L;;;;;N;;;;;\n16B80;PAHAWH HMONG CLAN SIGN LAUJ;Lo;0;L;;;;;N;;;;;\n16B81;PAHAWH HMONG CLAN SIGN XYOOJ;Lo;0;L;;;;;N;;;;;\n16B82;PAHAWH HMONG CLAN SIGN KOO;Lo;0;L;;;;;N;;;;;\n16B83;PAHAWH HMONG CLAN SIGN HAWJ;Lo;0;L;;;;;N;;;;;\n16B84;PAHAWH HMONG CLAN SIGN MUAS;Lo;0;L;;;;;N;;;;;\n16B85;PAHAWH HMONG CLAN SIGN THOJ;Lo;0;L;;;;;N;;;;;\n16B86;PAHAWH HMONG CLAN SIGN TSAB;Lo;0;L;;;;;N;;;;;\n16B87;PAHAWH HMONG CLAN SIGN PHAB;Lo;0;L;;;;;N;;;;;\n16B88;PAHAWH HMONG CLAN SIGN KHAB;Lo;0;L;;;;;N;;;;;\n16B89;PAHAWH HMONG CLAN SIGN HAM;Lo;0;L;;;;;N;;;;;\n16B8A;PAHAWH HMONG CLAN SIGN VAJ;Lo;0;L;;;;;N;;;;;\n16B8B;PAHAWH HMONG CLAN SIGN FAJ;Lo;0;L;;;;;N;;;;;\n16B8C;PAHAWH HMONG CLAN SIGN YAJ;Lo;0;L;;;;;N;;;;;\n16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;\n16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;\n16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;\n16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;\n16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;\n16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;\n16E43;MEDEFAIDRIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;16E63;\n16E44;MEDEFAIDRIN CAPITAL LETTER ATIU;Lu;0;L;;;;;N;;;;16E64;\n16E45;MEDEFAIDRIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;16E65;\n16E46;MEDEFAIDRIN CAPITAL LETTER KP;Lu;0;L;;;;;N;;;;16E66;\n16E47;MEDEFAIDRIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;16E67;\n16E48;MEDEFAIDRIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;16E68;\n16E49;MEDEFAIDRIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;16E69;\n16E4A;MEDEFAIDRIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;16E6A;\n16E4B;MEDEFAIDRIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;16E6B;\n16E4C;MEDEFAIDRIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;16E6C;\n16E4D;MEDEFAIDRIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;16E6D;\n16E4E;MEDEFAIDRIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;16E6E;\n16E4F;MEDEFAIDRIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;16E6F;\n16E50;MEDEFAIDRIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;16E70;\n16E51;MEDEFAIDRIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;16E71;\n16E52;MEDEFAIDRIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;16E72;\n16E53;MEDEFAIDRIN CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;16E73;\n16E54;MEDEFAIDRIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;16E74;\n16E55;MEDEFAIDRIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;16E75;\n16E56;MEDEFAIDRIN CAPITAL LETTER HP;Lu;0;L;;;;;N;;;;16E76;\n16E57;MEDEFAIDRIN CAPITAL LETTER NY;Lu;0;L;;;;;N;;;;16E77;\n16E58;MEDEFAIDRIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;16E78;\n16E59;MEDEFAIDRIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;16E79;\n16E5A;MEDEFAIDRIN CAPITAL LETTER OE;Lu;0;L;;;;;N;;;;16E7A;\n16E5B;MEDEFAIDRIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;16E7B;\n16E5C;MEDEFAIDRIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;16E7C;\n16E5D;MEDEFAIDRIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;16E7D;\n16E5E;MEDEFAIDRIN CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;16E7E;\n16E5F;MEDEFAIDRIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;16E7F;\n16E60;MEDEFAIDRIN SMALL LETTER M;Ll;0;L;;;;;N;;;16E40;;16E40\n16E61;MEDEFAIDRIN SMALL LETTER S;Ll;0;L;;;;;N;;;16E41;;16E41\n16E62;MEDEFAIDRIN SMALL LETTER V;Ll;0;L;;;;;N;;;16E42;;16E42\n16E63;MEDEFAIDRIN SMALL LETTER W;Ll;0;L;;;;;N;;;16E43;;16E43\n16E64;MEDEFAIDRIN SMALL LETTER ATIU;Ll;0;L;;;;;N;;;16E44;;16E44\n16E65;MEDEFAIDRIN SMALL LETTER Z;Ll;0;L;;;;;N;;;16E45;;16E45\n16E66;MEDEFAIDRIN SMALL LETTER KP;Ll;0;L;;;;;N;;;16E46;;16E46\n16E67;MEDEFAIDRIN SMALL LETTER P;Ll;0;L;;;;;N;;;16E47;;16E47\n16E68;MEDEFAIDRIN SMALL LETTER T;Ll;0;L;;;;;N;;;16E48;;16E48\n16E69;MEDEFAIDRIN SMALL LETTER G;Ll;0;L;;;;;N;;;16E49;;16E49\n16E6A;MEDEFAIDRIN SMALL LETTER F;Ll;0;L;;;;;N;;;16E4A;;16E4A\n16E6B;MEDEFAIDRIN SMALL LETTER I;Ll;0;L;;;;;N;;;16E4B;;16E4B\n16E6C;MEDEFAIDRIN SMALL LETTER K;Ll;0;L;;;;;N;;;16E4C;;16E4C\n16E6D;MEDEFAIDRIN SMALL LETTER A;Ll;0;L;;;;;N;;;16E4D;;16E4D\n16E6E;MEDEFAIDRIN SMALL LETTER J;Ll;0;L;;;;;N;;;16E4E;;16E4E\n16E6F;MEDEFAIDRIN SMALL LETTER E;Ll;0;L;;;;;N;;;16E4F;;16E4F\n16E70;MEDEFAIDRIN SMALL LETTER B;Ll;0;L;;;;;N;;;16E50;;16E50\n16E71;MEDEFAIDRIN SMALL LETTER C;Ll;0;L;;;;;N;;;16E51;;16E51\n16E72;MEDEFAIDRIN SMALL LETTER U;Ll;0;L;;;;;N;;;16E52;;16E52\n16E73;MEDEFAIDRIN SMALL LETTER YU;Ll;0;L;;;;;N;;;16E53;;16E53\n16E74;MEDEFAIDRIN SMALL LETTER L;Ll;0;L;;;;;N;;;16E54;;16E54\n16E75;MEDEFAIDRIN SMALL LETTER Q;Ll;0;L;;;;;N;;;16E55;;16E55\n16E76;MEDEFAIDRIN SMALL LETTER HP;Ll;0;L;;;;;N;;;16E56;;16E56\n16E77;MEDEFAIDRIN SMALL LETTER NY;Ll;0;L;;;;;N;;;16E57;;16E57\n16E78;MEDEFAIDRIN SMALL LETTER X;Ll;0;L;;;;;N;;;16E58;;16E58\n16E79;MEDEFAIDRIN SMALL LETTER D;Ll;0;L;;;;;N;;;16E59;;16E59\n16E7A;MEDEFAIDRIN SMALL LETTER OE;Ll;0;L;;;;;N;;;16E5A;;16E5A\n16E7B;MEDEFAIDRIN SMALL LETTER N;Ll;0;L;;;;;N;;;16E5B;;16E5B\n16E7C;MEDEFAIDRIN SMALL LETTER R;Ll;0;L;;;;;N;;;16E5C;;16E5C\n16E7D;MEDEFAIDRIN SMALL LETTER O;Ll;0;L;;;;;N;;;16E5D;;16E5D\n16E7E;MEDEFAIDRIN SMALL LETTER AI;Ll;0;L;;;;;N;;;16E5E;;16E5E\n16E7F;MEDEFAIDRIN SMALL LETTER Y;Ll;0;L;;;;;N;;;16E5F;;16E5F\n16E80;MEDEFAIDRIN DIGIT ZERO;No;0;L;;;;0;N;;;;;\n16E81;MEDEFAIDRIN DIGIT ONE;No;0;L;;;;1;N;;;;;\n16E82;MEDEFAIDRIN DIGIT TWO;No;0;L;;;;2;N;;;;;\n16E83;MEDEFAIDRIN DIGIT THREE;No;0;L;;;;3;N;;;;;\n16E84;MEDEFAIDRIN DIGIT FOUR;No;0;L;;;;4;N;;;;;\n16E85;MEDEFAIDRIN DIGIT FIVE;No;0;L;;;;5;N;;;;;\n16E86;MEDEFAIDRIN DIGIT SIX;No;0;L;;;;6;N;;;;;\n16E87;MEDEFAIDRIN DIGIT SEVEN;No;0;L;;;;7;N;;;;;\n16E88;MEDEFAIDRIN DIGIT EIGHT;No;0;L;;;;8;N;;;;;\n16E89;MEDEFAIDRIN DIGIT NINE;No;0;L;;;;9;N;;;;;\n16E8A;MEDEFAIDRIN NUMBER TEN;No;0;L;;;;10;N;;;;;\n16E8B;MEDEFAIDRIN NUMBER ELEVEN;No;0;L;;;;11;N;;;;;\n16E8C;MEDEFAIDRIN NUMBER TWELVE;No;0;L;;;;12;N;;;;;\n16E8D;MEDEFAIDRIN NUMBER THIRTEEN;No;0;L;;;;13;N;;;;;\n16E8E;MEDEFAIDRIN NUMBER FOURTEEN;No;0;L;;;;14;N;;;;;\n16E8F;MEDEFAIDRIN NUMBER FIFTEEN;No;0;L;;;;15;N;;;;;\n16E90;MEDEFAIDRIN NUMBER SIXTEEN;No;0;L;;;;16;N;;;;;\n16E91;MEDEFAIDRIN NUMBER SEVENTEEN;No;0;L;;;;17;N;;;;;\n16E92;MEDEFAIDRIN NUMBER EIGHTEEN;No;0;L;;;;18;N;;;;;\n16E93;MEDEFAIDRIN NUMBER NINETEEN;No;0;L;;;;19;N;;;;;\n16E94;MEDEFAIDRIN DIGIT ONE ALTERNATE FORM;No;0;L;;;;1;N;;;;;\n16E95;MEDEFAIDRIN DIGIT TWO ALTERNATE FORM;No;0;L;;;;2;N;;;;;\n16E96;MEDEFAIDRIN DIGIT THREE ALTERNATE FORM;No;0;L;;;;3;N;;;;;\n16E97;MEDEFAIDRIN COMMA;Po;0;L;;;;;N;;;;;\n16E98;MEDEFAIDRIN FULL STOP;Po;0;L;;;;;N;;;;;\n16E99;MEDEFAIDRIN SYMBOL AIVA;Po;0;L;;;;;N;;;;;\n16E9A;MEDEFAIDRIN EXCLAMATION OH;Po;0;L;;;;;N;;;;;\n16F00;MIAO LETTER PA;Lo;0;L;;;;;N;;;;;\n16F01;MIAO LETTER BA;Lo;0;L;;;;;N;;;;;\n16F02;MIAO LETTER YI PA;Lo;0;L;;;;;N;;;;;\n16F03;MIAO LETTER PLA;Lo;0;L;;;;;N;;;;;\n16F04;MIAO LETTER MA;Lo;0;L;;;;;N;;;;;\n16F05;MIAO LETTER MHA;Lo;0;L;;;;;N;;;;;\n16F06;MIAO LETTER ARCHAIC MA;Lo;0;L;;;;;N;;;;;\n16F07;MIAO LETTER FA;Lo;0;L;;;;;N;;;;;\n16F08;MIAO LETTER VA;Lo;0;L;;;;;N;;;;;\n16F09;MIAO LETTER VFA;Lo;0;L;;;;;N;;;;;\n16F0A;MIAO LETTER TA;Lo;0;L;;;;;N;;;;;\n16F0B;MIAO LETTER DA;Lo;0;L;;;;;N;;;;;\n16F0C;MIAO LETTER YI TTA;Lo;0;L;;;;;N;;;;;\n16F0D;MIAO LETTER YI TA;Lo;0;L;;;;;N;;;;;\n16F0E;MIAO LETTER TTA;Lo;0;L;;;;;N;;;;;\n16F0F;MIAO LETTER DDA;Lo;0;L;;;;;N;;;;;\n16F10;MIAO LETTER NA;Lo;0;L;;;;;N;;;;;\n16F11;MIAO LETTER NHA;Lo;0;L;;;;;N;;;;;\n16F12;MIAO LETTER YI NNA;Lo;0;L;;;;;N;;;;;\n16F13;MIAO LETTER ARCHAIC NA;Lo;0;L;;;;;N;;;;;\n16F14;MIAO LETTER NNA;Lo;0;L;;;;;N;;;;;\n16F15;MIAO LETTER NNHA;Lo;0;L;;;;;N;;;;;\n16F16;MIAO LETTER LA;Lo;0;L;;;;;N;;;;;\n16F17;MIAO LETTER LYA;Lo;0;L;;;;;N;;;;;\n16F18;MIAO LETTER LHA;Lo;0;L;;;;;N;;;;;\n16F19;MIAO LETTER LHYA;Lo;0;L;;;;;N;;;;;\n16F1A;MIAO LETTER TLHA;Lo;0;L;;;;;N;;;;;\n16F1B;MIAO LETTER DLHA;Lo;0;L;;;;;N;;;;;\n16F1C;MIAO LETTER TLHYA;Lo;0;L;;;;;N;;;;;\n16F1D;MIAO LETTER DLHYA;Lo;0;L;;;;;N;;;;;\n16F1E;MIAO LETTER KA;Lo;0;L;;;;;N;;;;;\n16F1F;MIAO LETTER GA;Lo;0;L;;;;;N;;;;;\n16F20;MIAO LETTER YI KA;Lo;0;L;;;;;N;;;;;\n16F21;MIAO LETTER QA;Lo;0;L;;;;;N;;;;;\n16F22;MIAO LETTER QGA;Lo;0;L;;;;;N;;;;;\n16F23;MIAO LETTER NGA;Lo;0;L;;;;;N;;;;;\n16F24;MIAO LETTER NGHA;Lo;0;L;;;;;N;;;;;\n16F25;MIAO LETTER ARCHAIC NGA;Lo;0;L;;;;;N;;;;;\n16F26;MIAO LETTER HA;Lo;0;L;;;;;N;;;;;\n16F27;MIAO LETTER XA;Lo;0;L;;;;;N;;;;;\n16F28;MIAO LETTER GHA;Lo;0;L;;;;;N;;;;;\n16F29;MIAO LETTER GHHA;Lo;0;L;;;;;N;;;;;\n16F2A;MIAO LETTER TSSA;Lo;0;L;;;;;N;;;;;\n16F2B;MIAO LETTER DZZA;Lo;0;L;;;;;N;;;;;\n16F2C;MIAO LETTER NYA;Lo;0;L;;;;;N;;;;;\n16F2D;MIAO LETTER NYHA;Lo;0;L;;;;;N;;;;;\n16F2E;MIAO LETTER TSHA;Lo;0;L;;;;;N;;;;;\n16F2F;MIAO LETTER DZHA;Lo;0;L;;;;;N;;;;;\n16F30;MIAO LETTER YI TSHA;Lo;0;L;;;;;N;;;;;\n16F31;MIAO LETTER YI DZHA;Lo;0;L;;;;;N;;;;;\n16F32;MIAO LETTER REFORMED TSHA;Lo;0;L;;;;;N;;;;;\n16F33;MIAO LETTER SHA;Lo;0;L;;;;;N;;;;;\n16F34;MIAO LETTER SSA;Lo;0;L;;;;;N;;;;;\n16F35;MIAO LETTER ZHA;Lo;0;L;;;;;N;;;;;\n16F36;MIAO LETTER ZSHA;Lo;0;L;;;;;N;;;;;\n16F37;MIAO LETTER TSA;Lo;0;L;;;;;N;;;;;\n16F38;MIAO LETTER DZA;Lo;0;L;;;;;N;;;;;\n16F39;MIAO LETTER YI TSA;Lo;0;L;;;;;N;;;;;\n16F3A;MIAO LETTER SA;Lo;0;L;;;;;N;;;;;\n16F3B;MIAO LETTER ZA;Lo;0;L;;;;;N;;;;;\n16F3C;MIAO LETTER ZSA;Lo;0;L;;;;;N;;;;;\n16F3D;MIAO LETTER ZZA;Lo;0;L;;;;;N;;;;;\n16F3E;MIAO LETTER ZZSA;Lo;0;L;;;;;N;;;;;\n16F3F;MIAO LETTER ARCHAIC ZZA;Lo;0;L;;;;;N;;;;;\n16F40;MIAO LETTER ZZYA;Lo;0;L;;;;;N;;;;;\n16F41;MIAO LETTER ZZSYA;Lo;0;L;;;;;N;;;;;\n16F42;MIAO LETTER WA;Lo;0;L;;;;;N;;;;;\n16F43;MIAO LETTER AH;Lo;0;L;;;;;N;;;;;\n16F44;MIAO LETTER HHA;Lo;0;L;;;;;N;;;;;\n16F45;MIAO LETTER BRI;Lo;0;L;;;;;N;;;;;\n16F46;MIAO LETTER SYI;Lo;0;L;;;;;N;;;;;\n16F47;MIAO LETTER DZYI;Lo;0;L;;;;;N;;;;;\n16F48;MIAO LETTER TE;Lo;0;L;;;;;N;;;;;\n16F49;MIAO LETTER TSE;Lo;0;L;;;;;N;;;;;\n16F4A;MIAO LETTER RTE;Lo;0;L;;;;;N;;;;;\n16F4F;MIAO SIGN CONSONANT MODIFIER BAR;Mn;0;NSM;;;;;N;;;;;\n16F50;MIAO LETTER NASALIZATION;Lo;0;L;;;;;N;;;;;\n16F51;MIAO SIGN ASPIRATION;Mc;0;L;;;;;N;;;;;\n16F52;MIAO SIGN REFORMED VOICING;Mc;0;L;;;;;N;;;;;\n16F53;MIAO SIGN REFORMED ASPIRATION;Mc;0;L;;;;;N;;;;;\n16F54;MIAO VOWEL SIGN A;Mc;0;L;;;;;N;;;;;\n16F55;MIAO VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;\n16F56;MIAO VOWEL SIGN AHH;Mc;0;L;;;;;N;;;;;\n16F57;MIAO VOWEL SIGN AN;Mc;0;L;;;;;N;;;;;\n16F58;MIAO VOWEL SIGN ANG;Mc;0;L;;;;;N;;;;;\n16F59;MIAO VOWEL SIGN O;Mc;0;L;;;;;N;;;;;\n16F5A;MIAO VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;\n16F5B;MIAO VOWEL SIGN WO;Mc;0;L;;;;;N;;;;;\n16F5C;MIAO VOWEL SIGN W;Mc;0;L;;;;;N;;;;;\n16F5D;MIAO VOWEL SIGN E;Mc;0;L;;;;;N;;;;;\n16F5E;MIAO VOWEL SIGN EN;Mc;0;L;;;;;N;;;;;\n16F5F;MIAO VOWEL SIGN ENG;Mc;0;L;;;;;N;;;;;\n16F60;MIAO VOWEL SIGN OEY;Mc;0;L;;;;;N;;;;;\n16F61;MIAO VOWEL SIGN I;Mc;0;L;;;;;N;;;;;\n16F62;MIAO VOWEL SIGN IA;Mc;0;L;;;;;N;;;;;\n16F63;MIAO VOWEL SIGN IAN;Mc;0;L;;;;;N;;;;;\n16F64;MIAO VOWEL SIGN IANG;Mc;0;L;;;;;N;;;;;\n16F65;MIAO VOWEL SIGN IO;Mc;0;L;;;;;N;;;;;\n16F66;MIAO VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;\n16F67;MIAO VOWEL SIGN II;Mc;0;L;;;;;N;;;;;\n16F68;MIAO VOWEL SIGN IU;Mc;0;L;;;;;N;;;;;\n16F69;MIAO VOWEL SIGN ING;Mc;0;L;;;;;N;;;;;\n16F6A;MIAO VOWEL SIGN U;Mc;0;L;;;;;N;;;;;\n16F6B;MIAO VOWEL SIGN UA;Mc;0;L;;;;;N;;;;;\n16F6C;MIAO VOWEL SIGN UAN;Mc;0;L;;;;;N;;;;;\n16F6D;MIAO VOWEL SIGN UANG;Mc;0;L;;;;;N;;;;;\n16F6E;MIAO VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;\n16F6F;MIAO VOWEL SIGN UEI;Mc;0;L;;;;;N;;;;;\n16F70;MIAO VOWEL SIGN UNG;Mc;0;L;;;;;N;;;;;\n16F71;MIAO VOWEL SIGN Y;Mc;0;L;;;;;N;;;;;\n16F72;MIAO VOWEL SIGN YI;Mc;0;L;;;;;N;;;;;\n16F73;MIAO VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;\n16F74;MIAO VOWEL SIGN AEE;Mc;0;L;;;;;N;;;;;\n16F75;MIAO VOWEL SIGN ERR;Mc;0;L;;;;;N;;;;;\n16F76;MIAO VOWEL SIGN ROUNDED ERR;Mc;0;L;;;;;N;;;;;\n16F77;MIAO VOWEL SIGN ER;Mc;0;L;;;;;N;;;;;\n16F78;MIAO VOWEL SIGN ROUNDED ER;Mc;0;L;;;;;N;;;;;\n16F79;MIAO VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;\n16F7A;MIAO VOWEL SIGN EI;Mc;0;L;;;;;N;;;;;\n16F7B;MIAO VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;\n16F7C;MIAO VOWEL SIGN OU;Mc;0;L;;;;;N;;;;;\n16F7D;MIAO VOWEL SIGN N;Mc;0;L;;;;;N;;;;;\n16F7E;MIAO VOWEL SIGN NG;Mc;0;L;;;;;N;;;;;\n16F7F;MIAO VOWEL SIGN UOG;Mc;0;L;;;;;N;;;;;\n16F80;MIAO VOWEL SIGN YUI;Mc;0;L;;;;;N;;;;;\n16F81;MIAO VOWEL SIGN OG;Mc;0;L;;;;;N;;;;;\n16F82;MIAO VOWEL SIGN OER;Mc;0;L;;;;;N;;;;;\n16F83;MIAO VOWEL SIGN VW;Mc;0;L;;;;;N;;;;;\n16F84;MIAO VOWEL SIGN IG;Mc;0;L;;;;;N;;;;;\n16F85;MIAO VOWEL SIGN EA;Mc;0;L;;;;;N;;;;;\n16F86;MIAO VOWEL SIGN IONG;Mc;0;L;;;;;N;;;;;\n16F87;MIAO VOWEL SIGN UI;Mc;0;L;;;;;N;;;;;\n16F8F;MIAO TONE RIGHT;Mn;0;NSM;;;;;N;;;;;\n16F90;MIAO TONE TOP RIGHT;Mn;0;NSM;;;;;N;;;;;\n16F91;MIAO TONE ABOVE;Mn;0;NSM;;;;;N;;;;;\n16F92;MIAO TONE BELOW;Mn;0;NSM;;;;;N;;;;;\n16F93;MIAO LETTER TONE-2;Lm;0;L;;;;;N;;;;;\n16F94;MIAO LETTER TONE-3;Lm;0;L;;;;;N;;;;;\n16F95;MIAO LETTER TONE-4;Lm;0;L;;;;;N;;;;;\n16F96;MIAO LETTER TONE-5;Lm;0;L;;;;;N;;;;;\n16F97;MIAO LETTER TONE-6;Lm;0;L;;;;;N;;;;;\n16F98;MIAO LETTER TONE-7;Lm;0;L;;;;;N;;;;;\n16F99;MIAO LETTER TONE-8;Lm;0;L;;;;;N;;;;;\n16F9A;MIAO LETTER REFORMED TONE-1;Lm;0;L;;;;;N;;;;;\n16F9B;MIAO LETTER REFORMED TONE-2;Lm;0;L;;;;;N;;;;;\n16F9C;MIAO LETTER REFORMED TONE-4;Lm;0;L;;;;;N;;;;;\n16F9D;MIAO LETTER REFORMED TONE-5;Lm;0;L;;;;;N;;;;;\n16F9E;MIAO LETTER REFORMED TONE-6;Lm;0;L;;;;;N;;;;;\n16F9F;MIAO LETTER REFORMED TONE-8;Lm;0;L;;;;;N;;;;;\n16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;;\n16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;;\n16FE2;OLD CHINESE HOOK MARK;Po;0;ON;;;;;N;;;;;\n16FE3;OLD CHINESE ITERATION MARK;Lm;0;L;;;;;N;;;;;\n16FE4;KHITAN SMALL SCRIPT FILLER;Mn;0;NSM;;;;;N;;;;;\n16FF0;VIETNAMESE ALTERNATE READING MARK CA;Mc;6;L;;;;;N;;;;;\n16FF1;VIETNAMESE ALTERNATE READING MARK NHAY;Mc;6;L;;;;;N;;;;;\n17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;\n187F7;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;\n18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;\n18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;;\n18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;;\n18803;TANGUT COMPONENT-004;Lo;0;L;;;;;N;;;;;\n18804;TANGUT COMPONENT-005;Lo;0;L;;;;;N;;;;;\n18805;TANGUT COMPONENT-006;Lo;0;L;;;;;N;;;;;\n18806;TANGUT COMPONENT-007;Lo;0;L;;;;;N;;;;;\n18807;TANGUT COMPONENT-008;Lo;0;L;;;;;N;;;;;\n18808;TANGUT COMPONENT-009;Lo;0;L;;;;;N;;;;;\n18809;TANGUT COMPONENT-010;Lo;0;L;;;;;N;;;;;\n1880A;TANGUT COMPONENT-011;Lo;0;L;;;;;N;;;;;\n1880B;TANGUT COMPONENT-012;Lo;0;L;;;;;N;;;;;\n1880C;TANGUT COMPONENT-013;Lo;0;L;;;;;N;;;;;\n1880D;TANGUT COMPONENT-014;Lo;0;L;;;;;N;;;;;\n1880E;TANGUT COMPONENT-015;Lo;0;L;;;;;N;;;;;\n1880F;TANGUT COMPONENT-016;Lo;0;L;;;;;N;;;;;\n18810;TANGUT COMPONENT-017;Lo;0;L;;;;;N;;;;;\n18811;TANGUT COMPONENT-018;Lo;0;L;;;;;N;;;;;\n18812;TANGUT COMPONENT-019;Lo;0;L;;;;;N;;;;;\n18813;TANGUT COMPONENT-020;Lo;0;L;;;;;N;;;;;\n18814;TANGUT COMPONENT-021;Lo;0;L;;;;;N;;;;;\n18815;TANGUT COMPONENT-022;Lo;0;L;;;;;N;;;;;\n18816;TANGUT COMPONENT-023;Lo;0;L;;;;;N;;;;;\n18817;TANGUT COMPONENT-024;Lo;0;L;;;;;N;;;;;\n18818;TANGUT COMPONENT-025;Lo;0;L;;;;;N;;;;;\n18819;TANGUT COMPONENT-026;Lo;0;L;;;;;N;;;;;\n1881A;TANGUT COMPONENT-027;Lo;0;L;;;;;N;;;;;\n1881B;TANGUT COMPONENT-028;Lo;0;L;;;;;N;;;;;\n1881C;TANGUT COMPONENT-029;Lo;0;L;;;;;N;;;;;\n1881D;TANGUT COMPONENT-030;Lo;0;L;;;;;N;;;;;\n1881E;TANGUT COMPONENT-031;Lo;0;L;;;;;N;;;;;\n1881F;TANGUT COMPONENT-032;Lo;0;L;;;;;N;;;;;\n18820;TANGUT COMPONENT-033;Lo;0;L;;;;;N;;;;;\n18821;TANGUT COMPONENT-034;Lo;0;L;;;;;N;;;;;\n18822;TANGUT COMPONENT-035;Lo;0;L;;;;;N;;;;;\n18823;TANGUT COMPONENT-036;Lo;0;L;;;;;N;;;;;\n18824;TANGUT COMPONENT-037;Lo;0;L;;;;;N;;;;;\n18825;TANGUT COMPONENT-038;Lo;0;L;;;;;N;;;;;\n18826;TANGUT COMPONENT-039;Lo;0;L;;;;;N;;;;;\n18827;TANGUT COMPONENT-040;Lo;0;L;;;;;N;;;;;\n18828;TANGUT COMPONENT-041;Lo;0;L;;;;;N;;;;;\n18829;TANGUT COMPONENT-042;Lo;0;L;;;;;N;;;;;\n1882A;TANGUT COMPONENT-043;Lo;0;L;;;;;N;;;;;\n1882B;TANGUT COMPONENT-044;Lo;0;L;;;;;N;;;;;\n1882C;TANGUT COMPONENT-045;Lo;0;L;;;;;N;;;;;\n1882D;TANGUT COMPONENT-046;Lo;0;L;;;;;N;;;;;\n1882E;TANGUT COMPONENT-047;Lo;0;L;;;;;N;;;;;\n1882F;TANGUT COMPONENT-048;Lo;0;L;;;;;N;;;;;\n18830;TANGUT COMPONENT-049;Lo;0;L;;;;;N;;;;;\n18831;TANGUT COMPONENT-050;Lo;0;L;;;;;N;;;;;\n18832;TANGUT COMPONENT-051;Lo;0;L;;;;;N;;;;;\n18833;TANGUT COMPONENT-052;Lo;0;L;;;;;N;;;;;\n18834;TANGUT COMPONENT-053;Lo;0;L;;;;;N;;;;;\n18835;TANGUT COMPONENT-054;Lo;0;L;;;;;N;;;;;\n18836;TANGUT COMPONENT-055;Lo;0;L;;;;;N;;;;;\n18837;TANGUT COMPONENT-056;Lo;0;L;;;;;N;;;;;\n18838;TANGUT COMPONENT-057;Lo;0;L;;;;;N;;;;;\n18839;TANGUT COMPONENT-058;Lo;0;L;;;;;N;;;;;\n1883A;TANGUT COMPONENT-059;Lo;0;L;;;;;N;;;;;\n1883B;TANGUT COMPONENT-060;Lo;0;L;;;;;N;;;;;\n1883C;TANGUT COMPONENT-061;Lo;0;L;;;;;N;;;;;\n1883D;TANGUT COMPONENT-062;Lo;0;L;;;;;N;;;;;\n1883E;TANGUT COMPONENT-063;Lo;0;L;;;;;N;;;;;\n1883F;TANGUT COMPONENT-064;Lo;0;L;;;;;N;;;;;\n18840;TANGUT COMPONENT-065;Lo;0;L;;;;;N;;;;;\n18841;TANGUT COMPONENT-066;Lo;0;L;;;;;N;;;;;\n18842;TANGUT COMPONENT-067;Lo;0;L;;;;;N;;;;;\n18843;TANGUT COMPONENT-068;Lo;0;L;;;;;N;;;;;\n18844;TANGUT COMPONENT-069;Lo;0;L;;;;;N;;;;;\n18845;TANGUT COMPONENT-070;Lo;0;L;;;;;N;;;;;\n18846;TANGUT COMPONENT-071;Lo;0;L;;;;;N;;;;;\n18847;TANGUT COMPONENT-072;Lo;0;L;;;;;N;;;;;\n18848;TANGUT COMPONENT-073;Lo;0;L;;;;;N;;;;;\n18849;TANGUT COMPONENT-074;Lo;0;L;;;;;N;;;;;\n1884A;TANGUT COMPONENT-075;Lo;0;L;;;;;N;;;;;\n1884B;TANGUT COMPONENT-076;Lo;0;L;;;;;N;;;;;\n1884C;TANGUT COMPONENT-077;Lo;0;L;;;;;N;;;;;\n1884D;TANGUT COMPONENT-078;Lo;0;L;;;;;N;;;;;\n1884E;TANGUT COMPONENT-079;Lo;0;L;;;;;N;;;;;\n1884F;TANGUT COMPONENT-080;Lo;0;L;;;;;N;;;;;\n18850;TANGUT COMPONENT-081;Lo;0;L;;;;;N;;;;;\n18851;TANGUT COMPONENT-082;Lo;0;L;;;;;N;;;;;\n18852;TANGUT COMPONENT-083;Lo;0;L;;;;;N;;;;;\n18853;TANGUT COMPONENT-084;Lo;0;L;;;;;N;;;;;\n18854;TANGUT COMPONENT-085;Lo;0;L;;;;;N;;;;;\n18855;TANGUT COMPONENT-086;Lo;0;L;;;;;N;;;;;\n18856;TANGUT COMPONENT-087;Lo;0;L;;;;;N;;;;;\n18857;TANGUT COMPONENT-088;Lo;0;L;;;;;N;;;;;\n18858;TANGUT COMPONENT-089;Lo;0;L;;;;;N;;;;;\n18859;TANGUT COMPONENT-090;Lo;0;L;;;;;N;;;;;\n1885A;TANGUT COMPONENT-091;Lo;0;L;;;;;N;;;;;\n1885B;TANGUT COMPONENT-092;Lo;0;L;;;;;N;;;;;\n1885C;TANGUT COMPONENT-093;Lo;0;L;;;;;N;;;;;\n1885D;TANGUT COMPONENT-094;Lo;0;L;;;;;N;;;;;\n1885E;TANGUT COMPONENT-095;Lo;0;L;;;;;N;;;;;\n1885F;TANGUT COMPONENT-096;Lo;0;L;;;;;N;;;;;\n18860;TANGUT COMPONENT-097;Lo;0;L;;;;;N;;;;;\n18861;TANGUT COMPONENT-098;Lo;0;L;;;;;N;;;;;\n18862;TANGUT COMPONENT-099;Lo;0;L;;;;;N;;;;;\n18863;TANGUT COMPONENT-100;Lo;0;L;;;;;N;;;;;\n18864;TANGUT COMPONENT-101;Lo;0;L;;;;;N;;;;;\n18865;TANGUT COMPONENT-102;Lo;0;L;;;;;N;;;;;\n18866;TANGUT COMPONENT-103;Lo;0;L;;;;;N;;;;;\n18867;TANGUT COMPONENT-104;Lo;0;L;;;;;N;;;;;\n18868;TANGUT COMPONENT-105;Lo;0;L;;;;;N;;;;;\n18869;TANGUT COMPONENT-106;Lo;0;L;;;;;N;;;;;\n1886A;TANGUT COMPONENT-107;Lo;0;L;;;;;N;;;;;\n1886B;TANGUT COMPONENT-108;Lo;0;L;;;;;N;;;;;\n1886C;TANGUT COMPONENT-109;Lo;0;L;;;;;N;;;;;\n1886D;TANGUT COMPONENT-110;Lo;0;L;;;;;N;;;;;\n1886E;TANGUT COMPONENT-111;Lo;0;L;;;;;N;;;;;\n1886F;TANGUT COMPONENT-112;Lo;0;L;;;;;N;;;;;\n18870;TANGUT COMPONENT-113;Lo;0;L;;;;;N;;;;;\n18871;TANGUT COMPONENT-114;Lo;0;L;;;;;N;;;;;\n18872;TANGUT COMPONENT-115;Lo;0;L;;;;;N;;;;;\n18873;TANGUT COMPONENT-116;Lo;0;L;;;;;N;;;;;\n18874;TANGUT COMPONENT-117;Lo;0;L;;;;;N;;;;;\n18875;TANGUT COMPONENT-118;Lo;0;L;;;;;N;;;;;\n18876;TANGUT COMPONENT-119;Lo;0;L;;;;;N;;;;;\n18877;TANGUT COMPONENT-120;Lo;0;L;;;;;N;;;;;\n18878;TANGUT COMPONENT-121;Lo;0;L;;;;;N;;;;;\n18879;TANGUT COMPONENT-122;Lo;0;L;;;;;N;;;;;\n1887A;TANGUT COMPONENT-123;Lo;0;L;;;;;N;;;;;\n1887B;TANGUT COMPONENT-124;Lo;0;L;;;;;N;;;;;\n1887C;TANGUT COMPONENT-125;Lo;0;L;;;;;N;;;;;\n1887D;TANGUT COMPONENT-126;Lo;0;L;;;;;N;;;;;\n1887E;TANGUT COMPONENT-127;Lo;0;L;;;;;N;;;;;\n1887F;TANGUT COMPONENT-128;Lo;0;L;;;;;N;;;;;\n18880;TANGUT COMPONENT-129;Lo;0;L;;;;;N;;;;;\n18881;TANGUT COMPONENT-130;Lo;0;L;;;;;N;;;;;\n18882;TANGUT COMPONENT-131;Lo;0;L;;;;;N;;;;;\n18883;TANGUT COMPONENT-132;Lo;0;L;;;;;N;;;;;\n18884;TANGUT COMPONENT-133;Lo;0;L;;;;;N;;;;;\n18885;TANGUT COMPONENT-134;Lo;0;L;;;;;N;;;;;\n18886;TANGUT COMPONENT-135;Lo;0;L;;;;;N;;;;;\n18887;TANGUT COMPONENT-136;Lo;0;L;;;;;N;;;;;\n18888;TANGUT COMPONENT-137;Lo;0;L;;;;;N;;;;;\n18889;TANGUT COMPONENT-138;Lo;0;L;;;;;N;;;;;\n1888A;TANGUT COMPONENT-139;Lo;0;L;;;;;N;;;;;\n1888B;TANGUT COMPONENT-140;Lo;0;L;;;;;N;;;;;\n1888C;TANGUT COMPONENT-141;Lo;0;L;;;;;N;;;;;\n1888D;TANGUT COMPONENT-142;Lo;0;L;;;;;N;;;;;\n1888E;TANGUT COMPONENT-143;Lo;0;L;;;;;N;;;;;\n1888F;TANGUT COMPONENT-144;Lo;0;L;;;;;N;;;;;\n18890;TANGUT COMPONENT-145;Lo;0;L;;;;;N;;;;;\n18891;TANGUT COMPONENT-146;Lo;0;L;;;;;N;;;;;\n18892;TANGUT COMPONENT-147;Lo;0;L;;;;;N;;;;;\n18893;TANGUT COMPONENT-148;Lo;0;L;;;;;N;;;;;\n18894;TANGUT COMPONENT-149;Lo;0;L;;;;;N;;;;;\n18895;TANGUT COMPONENT-150;Lo;0;L;;;;;N;;;;;\n18896;TANGUT COMPONENT-151;Lo;0;L;;;;;N;;;;;\n18897;TANGUT COMPONENT-152;Lo;0;L;;;;;N;;;;;\n18898;TANGUT COMPONENT-153;Lo;0;L;;;;;N;;;;;\n18899;TANGUT COMPONENT-154;Lo;0;L;;;;;N;;;;;\n1889A;TANGUT COMPONENT-155;Lo;0;L;;;;;N;;;;;\n1889B;TANGUT COMPONENT-156;Lo;0;L;;;;;N;;;;;\n1889C;TANGUT COMPONENT-157;Lo;0;L;;;;;N;;;;;\n1889D;TANGUT COMPONENT-158;Lo;0;L;;;;;N;;;;;\n1889E;TANGUT COMPONENT-159;Lo;0;L;;;;;N;;;;;\n1889F;TANGUT COMPONENT-160;Lo;0;L;;;;;N;;;;;\n188A0;TANGUT COMPONENT-161;Lo;0;L;;;;;N;;;;;\n188A1;TANGUT COMPONENT-162;Lo;0;L;;;;;N;;;;;\n188A2;TANGUT COMPONENT-163;Lo;0;L;;;;;N;;;;;\n188A3;TANGUT COMPONENT-164;Lo;0;L;;;;;N;;;;;\n188A4;TANGUT COMPONENT-165;Lo;0;L;;;;;N;;;;;\n188A5;TANGUT COMPONENT-166;Lo;0;L;;;;;N;;;;;\n188A6;TANGUT COMPONENT-167;Lo;0;L;;;;;N;;;;;\n188A7;TANGUT COMPONENT-168;Lo;0;L;;;;;N;;;;;\n188A8;TANGUT COMPONENT-169;Lo;0;L;;;;;N;;;;;\n188A9;TANGUT COMPONENT-170;Lo;0;L;;;;;N;;;;;\n188AA;TANGUT COMPONENT-171;Lo;0;L;;;;;N;;;;;\n188AB;TANGUT COMPONENT-172;Lo;0;L;;;;;N;;;;;\n188AC;TANGUT COMPONENT-173;Lo;0;L;;;;;N;;;;;\n188AD;TANGUT COMPONENT-174;Lo;0;L;;;;;N;;;;;\n188AE;TANGUT COMPONENT-175;Lo;0;L;;;;;N;;;;;\n188AF;TANGUT COMPONENT-176;Lo;0;L;;;;;N;;;;;\n188B0;TANGUT COMPONENT-177;Lo;0;L;;;;;N;;;;;\n188B1;TANGUT COMPONENT-178;Lo;0;L;;;;;N;;;;;\n188B2;TANGUT COMPONENT-179;Lo;0;L;;;;;N;;;;;\n188B3;TANGUT COMPONENT-180;Lo;0;L;;;;;N;;;;;\n188B4;TANGUT COMPONENT-181;Lo;0;L;;;;;N;;;;;\n188B5;TANGUT COMPONENT-182;Lo;0;L;;;;;N;;;;;\n188B6;TANGUT COMPONENT-183;Lo;0;L;;;;;N;;;;;\n188B7;TANGUT COMPONENT-184;Lo;0;L;;;;;N;;;;;\n188B8;TANGUT COMPONENT-185;Lo;0;L;;;;;N;;;;;\n188B9;TANGUT COMPONENT-186;Lo;0;L;;;;;N;;;;;\n188BA;TANGUT COMPONENT-187;Lo;0;L;;;;;N;;;;;\n188BB;TANGUT COMPONENT-188;Lo;0;L;;;;;N;;;;;\n188BC;TANGUT COMPONENT-189;Lo;0;L;;;;;N;;;;;\n188BD;TANGUT COMPONENT-190;Lo;0;L;;;;;N;;;;;\n188BE;TANGUT COMPONENT-191;Lo;0;L;;;;;N;;;;;\n188BF;TANGUT COMPONENT-192;Lo;0;L;;;;;N;;;;;\n188C0;TANGUT COMPONENT-193;Lo;0;L;;;;;N;;;;;\n188C1;TANGUT COMPONENT-194;Lo;0;L;;;;;N;;;;;\n188C2;TANGUT COMPONENT-195;Lo;0;L;;;;;N;;;;;\n188C3;TANGUT COMPONENT-196;Lo;0;L;;;;;N;;;;;\n188C4;TANGUT COMPONENT-197;Lo;0;L;;;;;N;;;;;\n188C5;TANGUT COMPONENT-198;Lo;0;L;;;;;N;;;;;\n188C6;TANGUT COMPONENT-199;Lo;0;L;;;;;N;;;;;\n188C7;TANGUT COMPONENT-200;Lo;0;L;;;;;N;;;;;\n188C8;TANGUT COMPONENT-201;Lo;0;L;;;;;N;;;;;\n188C9;TANGUT COMPONENT-202;Lo;0;L;;;;;N;;;;;\n188CA;TANGUT COMPONENT-203;Lo;0;L;;;;;N;;;;;\n188CB;TANGUT COMPONENT-204;Lo;0;L;;;;;N;;;;;\n188CC;TANGUT COMPONENT-205;Lo;0;L;;;;;N;;;;;\n188CD;TANGUT COMPONENT-206;Lo;0;L;;;;;N;;;;;\n188CE;TANGUT COMPONENT-207;Lo;0;L;;;;;N;;;;;\n188CF;TANGUT COMPONENT-208;Lo;0;L;;;;;N;;;;;\n188D0;TANGUT COMPONENT-209;Lo;0;L;;;;;N;;;;;\n188D1;TANGUT COMPONENT-210;Lo;0;L;;;;;N;;;;;\n188D2;TANGUT COMPONENT-211;Lo;0;L;;;;;N;;;;;\n188D3;TANGUT COMPONENT-212;Lo;0;L;;;;;N;;;;;\n188D4;TANGUT COMPONENT-213;Lo;0;L;;;;;N;;;;;\n188D5;TANGUT COMPONENT-214;Lo;0;L;;;;;N;;;;;\n188D6;TANGUT COMPONENT-215;Lo;0;L;;;;;N;;;;;\n188D7;TANGUT COMPONENT-216;Lo;0;L;;;;;N;;;;;\n188D8;TANGUT COMPONENT-217;Lo;0;L;;;;;N;;;;;\n188D9;TANGUT COMPONENT-218;Lo;0;L;;;;;N;;;;;\n188DA;TANGUT COMPONENT-219;Lo;0;L;;;;;N;;;;;\n188DB;TANGUT COMPONENT-220;Lo;0;L;;;;;N;;;;;\n188DC;TANGUT COMPONENT-221;Lo;0;L;;;;;N;;;;;\n188DD;TANGUT COMPONENT-222;Lo;0;L;;;;;N;;;;;\n188DE;TANGUT COMPONENT-223;Lo;0;L;;;;;N;;;;;\n188DF;TANGUT COMPONENT-224;Lo;0;L;;;;;N;;;;;\n188E0;TANGUT COMPONENT-225;Lo;0;L;;;;;N;;;;;\n188E1;TANGUT COMPONENT-226;Lo;0;L;;;;;N;;;;;\n188E2;TANGUT COMPONENT-227;Lo;0;L;;;;;N;;;;;\n188E3;TANGUT COMPONENT-228;Lo;0;L;;;;;N;;;;;\n188E4;TANGUT COMPONENT-229;Lo;0;L;;;;;N;;;;;\n188E5;TANGUT COMPONENT-230;Lo;0;L;;;;;N;;;;;\n188E6;TANGUT COMPONENT-231;Lo;0;L;;;;;N;;;;;\n188E7;TANGUT COMPONENT-232;Lo;0;L;;;;;N;;;;;\n188E8;TANGUT COMPONENT-233;Lo;0;L;;;;;N;;;;;\n188E9;TANGUT COMPONENT-234;Lo;0;L;;;;;N;;;;;\n188EA;TANGUT COMPONENT-235;Lo;0;L;;;;;N;;;;;\n188EB;TANGUT COMPONENT-236;Lo;0;L;;;;;N;;;;;\n188EC;TANGUT COMPONENT-237;Lo;0;L;;;;;N;;;;;\n188ED;TANGUT COMPONENT-238;Lo;0;L;;;;;N;;;;;\n188EE;TANGUT COMPONENT-239;Lo;0;L;;;;;N;;;;;\n188EF;TANGUT COMPONENT-240;Lo;0;L;;;;;N;;;;;\n188F0;TANGUT COMPONENT-241;Lo;0;L;;;;;N;;;;;\n188F1;TANGUT COMPONENT-242;Lo;0;L;;;;;N;;;;;\n188F2;TANGUT COMPONENT-243;Lo;0;L;;;;;N;;;;;\n188F3;TANGUT COMPONENT-244;Lo;0;L;;;;;N;;;;;\n188F4;TANGUT COMPONENT-245;Lo;0;L;;;;;N;;;;;\n188F5;TANGUT COMPONENT-246;Lo;0;L;;;;;N;;;;;\n188F6;TANGUT COMPONENT-247;Lo;0;L;;;;;N;;;;;\n188F7;TANGUT COMPONENT-248;Lo;0;L;;;;;N;;;;;\n188F8;TANGUT COMPONENT-249;Lo;0;L;;;;;N;;;;;\n188F9;TANGUT COMPONENT-250;Lo;0;L;;;;;N;;;;;\n188FA;TANGUT COMPONENT-251;Lo;0;L;;;;;N;;;;;\n188FB;TANGUT COMPONENT-252;Lo;0;L;;;;;N;;;;;\n188FC;TANGUT COMPONENT-253;Lo;0;L;;;;;N;;;;;\n188FD;TANGUT COMPONENT-254;Lo;0;L;;;;;N;;;;;\n188FE;TANGUT COMPONENT-255;Lo;0;L;;;;;N;;;;;\n188FF;TANGUT COMPONENT-256;Lo;0;L;;;;;N;;;;;\n18900;TANGUT COMPONENT-257;Lo;0;L;;;;;N;;;;;\n18901;TANGUT COMPONENT-258;Lo;0;L;;;;;N;;;;;\n18902;TANGUT COMPONENT-259;Lo;0;L;;;;;N;;;;;\n18903;TANGUT COMPONENT-260;Lo;0;L;;;;;N;;;;;\n18904;TANGUT COMPONENT-261;Lo;0;L;;;;;N;;;;;\n18905;TANGUT COMPONENT-262;Lo;0;L;;;;;N;;;;;\n18906;TANGUT COMPONENT-263;Lo;0;L;;;;;N;;;;;\n18907;TANGUT COMPONENT-264;Lo;0;L;;;;;N;;;;;\n18908;TANGUT COMPONENT-265;Lo;0;L;;;;;N;;;;;\n18909;TANGUT COMPONENT-266;Lo;0;L;;;;;N;;;;;\n1890A;TANGUT COMPONENT-267;Lo;0;L;;;;;N;;;;;\n1890B;TANGUT COMPONENT-268;Lo;0;L;;;;;N;;;;;\n1890C;TANGUT COMPONENT-269;Lo;0;L;;;;;N;;;;;\n1890D;TANGUT COMPONENT-270;Lo;0;L;;;;;N;;;;;\n1890E;TANGUT COMPONENT-271;Lo;0;L;;;;;N;;;;;\n1890F;TANGUT COMPONENT-272;Lo;0;L;;;;;N;;;;;\n18910;TANGUT COMPONENT-273;Lo;0;L;;;;;N;;;;;\n18911;TANGUT COMPONENT-274;Lo;0;L;;;;;N;;;;;\n18912;TANGUT COMPONENT-275;Lo;0;L;;;;;N;;;;;\n18913;TANGUT COMPONENT-276;Lo;0;L;;;;;N;;;;;\n18914;TANGUT COMPONENT-277;Lo;0;L;;;;;N;;;;;\n18915;TANGUT COMPONENT-278;Lo;0;L;;;;;N;;;;;\n18916;TANGUT COMPONENT-279;Lo;0;L;;;;;N;;;;;\n18917;TANGUT COMPONENT-280;Lo;0;L;;;;;N;;;;;\n18918;TANGUT COMPONENT-281;Lo;0;L;;;;;N;;;;;\n18919;TANGUT COMPONENT-282;Lo;0;L;;;;;N;;;;;\n1891A;TANGUT COMPONENT-283;Lo;0;L;;;;;N;;;;;\n1891B;TANGUT COMPONENT-284;Lo;0;L;;;;;N;;;;;\n1891C;TANGUT COMPONENT-285;Lo;0;L;;;;;N;;;;;\n1891D;TANGUT COMPONENT-286;Lo;0;L;;;;;N;;;;;\n1891E;TANGUT COMPONENT-287;Lo;0;L;;;;;N;;;;;\n1891F;TANGUT COMPONENT-288;Lo;0;L;;;;;N;;;;;\n18920;TANGUT COMPONENT-289;Lo;0;L;;;;;N;;;;;\n18921;TANGUT COMPONENT-290;Lo;0;L;;;;;N;;;;;\n18922;TANGUT COMPONENT-291;Lo;0;L;;;;;N;;;;;\n18923;TANGUT COMPONENT-292;Lo;0;L;;;;;N;;;;;\n18924;TANGUT COMPONENT-293;Lo;0;L;;;;;N;;;;;\n18925;TANGUT COMPONENT-294;Lo;0;L;;;;;N;;;;;\n18926;TANGUT COMPONENT-295;Lo;0;L;;;;;N;;;;;\n18927;TANGUT COMPONENT-296;Lo;0;L;;;;;N;;;;;\n18928;TANGUT COMPONENT-297;Lo;0;L;;;;;N;;;;;\n18929;TANGUT COMPONENT-298;Lo;0;L;;;;;N;;;;;\n1892A;TANGUT COMPONENT-299;Lo;0;L;;;;;N;;;;;\n1892B;TANGUT COMPONENT-300;Lo;0;L;;;;;N;;;;;\n1892C;TANGUT COMPONENT-301;Lo;0;L;;;;;N;;;;;\n1892D;TANGUT COMPONENT-302;Lo;0;L;;;;;N;;;;;\n1892E;TANGUT COMPONENT-303;Lo;0;L;;;;;N;;;;;\n1892F;TANGUT COMPONENT-304;Lo;0;L;;;;;N;;;;;\n18930;TANGUT COMPONENT-305;Lo;0;L;;;;;N;;;;;\n18931;TANGUT COMPONENT-306;Lo;0;L;;;;;N;;;;;\n18932;TANGUT COMPONENT-307;Lo;0;L;;;;;N;;;;;\n18933;TANGUT COMPONENT-308;Lo;0;L;;;;;N;;;;;\n18934;TANGUT COMPONENT-309;Lo;0;L;;;;;N;;;;;\n18935;TANGUT COMPONENT-310;Lo;0;L;;;;;N;;;;;\n18936;TANGUT COMPONENT-311;Lo;0;L;;;;;N;;;;;\n18937;TANGUT COMPONENT-312;Lo;0;L;;;;;N;;;;;\n18938;TANGUT COMPONENT-313;Lo;0;L;;;;;N;;;;;\n18939;TANGUT COMPONENT-314;Lo;0;L;;;;;N;;;;;\n1893A;TANGUT COMPONENT-315;Lo;0;L;;;;;N;;;;;\n1893B;TANGUT COMPONENT-316;Lo;0;L;;;;;N;;;;;\n1893C;TANGUT COMPONENT-317;Lo;0;L;;;;;N;;;;;\n1893D;TANGUT COMPONENT-318;Lo;0;L;;;;;N;;;;;\n1893E;TANGUT COMPONENT-319;Lo;0;L;;;;;N;;;;;\n1893F;TANGUT COMPONENT-320;Lo;0;L;;;;;N;;;;;\n18940;TANGUT COMPONENT-321;Lo;0;L;;;;;N;;;;;\n18941;TANGUT COMPONENT-322;Lo;0;L;;;;;N;;;;;\n18942;TANGUT COMPONENT-323;Lo;0;L;;;;;N;;;;;\n18943;TANGUT COMPONENT-324;Lo;0;L;;;;;N;;;;;\n18944;TANGUT COMPONENT-325;Lo;0;L;;;;;N;;;;;\n18945;TANGUT COMPONENT-326;Lo;0;L;;;;;N;;;;;\n18946;TANGUT COMPONENT-327;Lo;0;L;;;;;N;;;;;\n18947;TANGUT COMPONENT-328;Lo;0;L;;;;;N;;;;;\n18948;TANGUT COMPONENT-329;Lo;0;L;;;;;N;;;;;\n18949;TANGUT COMPONENT-330;Lo;0;L;;;;;N;;;;;\n1894A;TANGUT COMPONENT-331;Lo;0;L;;;;;N;;;;;\n1894B;TANGUT COMPONENT-332;Lo;0;L;;;;;N;;;;;\n1894C;TANGUT COMPONENT-333;Lo;0;L;;;;;N;;;;;\n1894D;TANGUT COMPONENT-334;Lo;0;L;;;;;N;;;;;\n1894E;TANGUT COMPONENT-335;Lo;0;L;;;;;N;;;;;\n1894F;TANGUT COMPONENT-336;Lo;0;L;;;;;N;;;;;\n18950;TANGUT COMPONENT-337;Lo;0;L;;;;;N;;;;;\n18951;TANGUT COMPONENT-338;Lo;0;L;;;;;N;;;;;\n18952;TANGUT COMPONENT-339;Lo;0;L;;;;;N;;;;;\n18953;TANGUT COMPONENT-340;Lo;0;L;;;;;N;;;;;\n18954;TANGUT COMPONENT-341;Lo;0;L;;;;;N;;;;;\n18955;TANGUT COMPONENT-342;Lo;0;L;;;;;N;;;;;\n18956;TANGUT COMPONENT-343;Lo;0;L;;;;;N;;;;;\n18957;TANGUT COMPONENT-344;Lo;0;L;;;;;N;;;;;\n18958;TANGUT COMPONENT-345;Lo;0;L;;;;;N;;;;;\n18959;TANGUT COMPONENT-346;Lo;0;L;;;;;N;;;;;\n1895A;TANGUT COMPONENT-347;Lo;0;L;;;;;N;;;;;\n1895B;TANGUT COMPONENT-348;Lo;0;L;;;;;N;;;;;\n1895C;TANGUT COMPONENT-349;Lo;0;L;;;;;N;;;;;\n1895D;TANGUT COMPONENT-350;Lo;0;L;;;;;N;;;;;\n1895E;TANGUT COMPONENT-351;Lo;0;L;;;;;N;;;;;\n1895F;TANGUT COMPONENT-352;Lo;0;L;;;;;N;;;;;\n18960;TANGUT COMPONENT-353;Lo;0;L;;;;;N;;;;;\n18961;TANGUT COMPONENT-354;Lo;0;L;;;;;N;;;;;\n18962;TANGUT COMPONENT-355;Lo;0;L;;;;;N;;;;;\n18963;TANGUT COMPONENT-356;Lo;0;L;;;;;N;;;;;\n18964;TANGUT COMPONENT-357;Lo;0;L;;;;;N;;;;;\n18965;TANGUT COMPONENT-358;Lo;0;L;;;;;N;;;;;\n18966;TANGUT COMPONENT-359;Lo;0;L;;;;;N;;;;;\n18967;TANGUT COMPONENT-360;Lo;0;L;;;;;N;;;;;\n18968;TANGUT COMPONENT-361;Lo;0;L;;;;;N;;;;;\n18969;TANGUT COMPONENT-362;Lo;0;L;;;;;N;;;;;\n1896A;TANGUT COMPONENT-363;Lo;0;L;;;;;N;;;;;\n1896B;TANGUT COMPONENT-364;Lo;0;L;;;;;N;;;;;\n1896C;TANGUT COMPONENT-365;Lo;0;L;;;;;N;;;;;\n1896D;TANGUT COMPONENT-366;Lo;0;L;;;;;N;;;;;\n1896E;TANGUT COMPONENT-367;Lo;0;L;;;;;N;;;;;\n1896F;TANGUT COMPONENT-368;Lo;0;L;;;;;N;;;;;\n18970;TANGUT COMPONENT-369;Lo;0;L;;;;;N;;;;;\n18971;TANGUT COMPONENT-370;Lo;0;L;;;;;N;;;;;\n18972;TANGUT COMPONENT-371;Lo;0;L;;;;;N;;;;;\n18973;TANGUT COMPONENT-372;Lo;0;L;;;;;N;;;;;\n18974;TANGUT COMPONENT-373;Lo;0;L;;;;;N;;;;;\n18975;TANGUT COMPONENT-374;Lo;0;L;;;;;N;;;;;\n18976;TANGUT COMPONENT-375;Lo;0;L;;;;;N;;;;;\n18977;TANGUT COMPONENT-376;Lo;0;L;;;;;N;;;;;\n18978;TANGUT COMPONENT-377;Lo;0;L;;;;;N;;;;;\n18979;TANGUT COMPONENT-378;Lo;0;L;;;;;N;;;;;\n1897A;TANGUT COMPONENT-379;Lo;0;L;;;;;N;;;;;\n1897B;TANGUT COMPONENT-380;Lo;0;L;;;;;N;;;;;\n1897C;TANGUT COMPONENT-381;Lo;0;L;;;;;N;;;;;\n1897D;TANGUT COMPONENT-382;Lo;0;L;;;;;N;;;;;\n1897E;TANGUT COMPONENT-383;Lo;0;L;;;;;N;;;;;\n1897F;TANGUT COMPONENT-384;Lo;0;L;;;;;N;;;;;\n18980;TANGUT COMPONENT-385;Lo;0;L;;;;;N;;;;;\n18981;TANGUT COMPONENT-386;Lo;0;L;;;;;N;;;;;\n18982;TANGUT COMPONENT-387;Lo;0;L;;;;;N;;;;;\n18983;TANGUT COMPONENT-388;Lo;0;L;;;;;N;;;;;\n18984;TANGUT COMPONENT-389;Lo;0;L;;;;;N;;;;;\n18985;TANGUT COMPONENT-390;Lo;0;L;;;;;N;;;;;\n18986;TANGUT COMPONENT-391;Lo;0;L;;;;;N;;;;;\n18987;TANGUT COMPONENT-392;Lo;0;L;;;;;N;;;;;\n18988;TANGUT COMPONENT-393;Lo;0;L;;;;;N;;;;;\n18989;TANGUT COMPONENT-394;Lo;0;L;;;;;N;;;;;\n1898A;TANGUT COMPONENT-395;Lo;0;L;;;;;N;;;;;\n1898B;TANGUT COMPONENT-396;Lo;0;L;;;;;N;;;;;\n1898C;TANGUT COMPONENT-397;Lo;0;L;;;;;N;;;;;\n1898D;TANGUT COMPONENT-398;Lo;0;L;;;;;N;;;;;\n1898E;TANGUT COMPONENT-399;Lo;0;L;;;;;N;;;;;\n1898F;TANGUT COMPONENT-400;Lo;0;L;;;;;N;;;;;\n18990;TANGUT COMPONENT-401;Lo;0;L;;;;;N;;;;;\n18991;TANGUT COMPONENT-402;Lo;0;L;;;;;N;;;;;\n18992;TANGUT COMPONENT-403;Lo;0;L;;;;;N;;;;;\n18993;TANGUT COMPONENT-404;Lo;0;L;;;;;N;;;;;\n18994;TANGUT COMPONENT-405;Lo;0;L;;;;;N;;;;;\n18995;TANGUT COMPONENT-406;Lo;0;L;;;;;N;;;;;\n18996;TANGUT COMPONENT-407;Lo;0;L;;;;;N;;;;;\n18997;TANGUT COMPONENT-408;Lo;0;L;;;;;N;;;;;\n18998;TANGUT COMPONENT-409;Lo;0;L;;;;;N;;;;;\n18999;TANGUT COMPONENT-410;Lo;0;L;;;;;N;;;;;\n1899A;TANGUT COMPONENT-411;Lo;0;L;;;;;N;;;;;\n1899B;TANGUT COMPONENT-412;Lo;0;L;;;;;N;;;;;\n1899C;TANGUT COMPONENT-413;Lo;0;L;;;;;N;;;;;\n1899D;TANGUT COMPONENT-414;Lo;0;L;;;;;N;;;;;\n1899E;TANGUT COMPONENT-415;Lo;0;L;;;;;N;;;;;\n1899F;TANGUT COMPONENT-416;Lo;0;L;;;;;N;;;;;\n189A0;TANGUT COMPONENT-417;Lo;0;L;;;;;N;;;;;\n189A1;TANGUT COMPONENT-418;Lo;0;L;;;;;N;;;;;\n189A2;TANGUT COMPONENT-419;Lo;0;L;;;;;N;;;;;\n189A3;TANGUT COMPONENT-420;Lo;0;L;;;;;N;;;;;\n189A4;TANGUT COMPONENT-421;Lo;0;L;;;;;N;;;;;\n189A5;TANGUT COMPONENT-422;Lo;0;L;;;;;N;;;;;\n189A6;TANGUT COMPONENT-423;Lo;0;L;;;;;N;;;;;\n189A7;TANGUT COMPONENT-424;Lo;0;L;;;;;N;;;;;\n189A8;TANGUT COMPONENT-425;Lo;0;L;;;;;N;;;;;\n189A9;TANGUT COMPONENT-426;Lo;0;L;;;;;N;;;;;\n189AA;TANGUT COMPONENT-427;Lo;0;L;;;;;N;;;;;\n189AB;TANGUT COMPONENT-428;Lo;0;L;;;;;N;;;;;\n189AC;TANGUT COMPONENT-429;Lo;0;L;;;;;N;;;;;\n189AD;TANGUT COMPONENT-430;Lo;0;L;;;;;N;;;;;\n189AE;TANGUT COMPONENT-431;Lo;0;L;;;;;N;;;;;\n189AF;TANGUT COMPONENT-432;Lo;0;L;;;;;N;;;;;\n189B0;TANGUT COMPONENT-433;Lo;0;L;;;;;N;;;;;\n189B1;TANGUT COMPONENT-434;Lo;0;L;;;;;N;;;;;\n189B2;TANGUT COMPONENT-435;Lo;0;L;;;;;N;;;;;\n189B3;TANGUT COMPONENT-436;Lo;0;L;;;;;N;;;;;\n189B4;TANGUT COMPONENT-437;Lo;0;L;;;;;N;;;;;\n189B5;TANGUT COMPONENT-438;Lo;0;L;;;;;N;;;;;\n189B6;TANGUT COMPONENT-439;Lo;0;L;;;;;N;;;;;\n189B7;TANGUT COMPONENT-440;Lo;0;L;;;;;N;;;;;\n189B8;TANGUT COMPONENT-441;Lo;0;L;;;;;N;;;;;\n189B9;TANGUT COMPONENT-442;Lo;0;L;;;;;N;;;;;\n189BA;TANGUT COMPONENT-443;Lo;0;L;;;;;N;;;;;\n189BB;TANGUT COMPONENT-444;Lo;0;L;;;;;N;;;;;\n189BC;TANGUT COMPONENT-445;Lo;0;L;;;;;N;;;;;\n189BD;TANGUT COMPONENT-446;Lo;0;L;;;;;N;;;;;\n189BE;TANGUT COMPONENT-447;Lo;0;L;;;;;N;;;;;\n189BF;TANGUT COMPONENT-448;Lo;0;L;;;;;N;;;;;\n189C0;TANGUT COMPONENT-449;Lo;0;L;;;;;N;;;;;\n189C1;TANGUT COMPONENT-450;Lo;0;L;;;;;N;;;;;\n189C2;TANGUT COMPONENT-451;Lo;0;L;;;;;N;;;;;\n189C3;TANGUT COMPONENT-452;Lo;0;L;;;;;N;;;;;\n189C4;TANGUT COMPONENT-453;Lo;0;L;;;;;N;;;;;\n189C5;TANGUT COMPONENT-454;Lo;0;L;;;;;N;;;;;\n189C6;TANGUT COMPONENT-455;Lo;0;L;;;;;N;;;;;\n189C7;TANGUT COMPONENT-456;Lo;0;L;;;;;N;;;;;\n189C8;TANGUT COMPONENT-457;Lo;0;L;;;;;N;;;;;\n189C9;TANGUT COMPONENT-458;Lo;0;L;;;;;N;;;;;\n189CA;TANGUT COMPONENT-459;Lo;0;L;;;;;N;;;;;\n189CB;TANGUT COMPONENT-460;Lo;0;L;;;;;N;;;;;\n189CC;TANGUT COMPONENT-461;Lo;0;L;;;;;N;;;;;\n189CD;TANGUT COMPONENT-462;Lo;0;L;;;;;N;;;;;\n189CE;TANGUT COMPONENT-463;Lo;0;L;;;;;N;;;;;\n189CF;TANGUT COMPONENT-464;Lo;0;L;;;;;N;;;;;\n189D0;TANGUT COMPONENT-465;Lo;0;L;;;;;N;;;;;\n189D1;TANGUT COMPONENT-466;Lo;0;L;;;;;N;;;;;\n189D2;TANGUT COMPONENT-467;Lo;0;L;;;;;N;;;;;\n189D3;TANGUT COMPONENT-468;Lo;0;L;;;;;N;;;;;\n189D4;TANGUT COMPONENT-469;Lo;0;L;;;;;N;;;;;\n189D5;TANGUT COMPONENT-470;Lo;0;L;;;;;N;;;;;\n189D6;TANGUT COMPONENT-471;Lo;0;L;;;;;N;;;;;\n189D7;TANGUT COMPONENT-472;Lo;0;L;;;;;N;;;;;\n189D8;TANGUT COMPONENT-473;Lo;0;L;;;;;N;;;;;\n189D9;TANGUT COMPONENT-474;Lo;0;L;;;;;N;;;;;\n189DA;TANGUT COMPONENT-475;Lo;0;L;;;;;N;;;;;\n189DB;TANGUT COMPONENT-476;Lo;0;L;;;;;N;;;;;\n189DC;TANGUT COMPONENT-477;Lo;0;L;;;;;N;;;;;\n189DD;TANGUT COMPONENT-478;Lo;0;L;;;;;N;;;;;\n189DE;TANGUT COMPONENT-479;Lo;0;L;;;;;N;;;;;\n189DF;TANGUT COMPONENT-480;Lo;0;L;;;;;N;;;;;\n189E0;TANGUT COMPONENT-481;Lo;0;L;;;;;N;;;;;\n189E1;TANGUT COMPONENT-482;Lo;0;L;;;;;N;;;;;\n189E2;TANGUT COMPONENT-483;Lo;0;L;;;;;N;;;;;\n189E3;TANGUT COMPONENT-484;Lo;0;L;;;;;N;;;;;\n189E4;TANGUT COMPONENT-485;Lo;0;L;;;;;N;;;;;\n189E5;TANGUT COMPONENT-486;Lo;0;L;;;;;N;;;;;\n189E6;TANGUT COMPONENT-487;Lo;0;L;;;;;N;;;;;\n189E7;TANGUT COMPONENT-488;Lo;0;L;;;;;N;;;;;\n189E8;TANGUT COMPONENT-489;Lo;0;L;;;;;N;;;;;\n189E9;TANGUT COMPONENT-490;Lo;0;L;;;;;N;;;;;\n189EA;TANGUT COMPONENT-491;Lo;0;L;;;;;N;;;;;\n189EB;TANGUT COMPONENT-492;Lo;0;L;;;;;N;;;;;\n189EC;TANGUT COMPONENT-493;Lo;0;L;;;;;N;;;;;\n189ED;TANGUT COMPONENT-494;Lo;0;L;;;;;N;;;;;\n189EE;TANGUT COMPONENT-495;Lo;0;L;;;;;N;;;;;\n189EF;TANGUT COMPONENT-496;Lo;0;L;;;;;N;;;;;\n189F0;TANGUT COMPONENT-497;Lo;0;L;;;;;N;;;;;\n189F1;TANGUT COMPONENT-498;Lo;0;L;;;;;N;;;;;\n189F2;TANGUT COMPONENT-499;Lo;0;L;;;;;N;;;;;\n189F3;TANGUT COMPONENT-500;Lo;0;L;;;;;N;;;;;\n189F4;TANGUT COMPONENT-501;Lo;0;L;;;;;N;;;;;\n189F5;TANGUT COMPONENT-502;Lo;0;L;;;;;N;;;;;\n189F6;TANGUT COMPONENT-503;Lo;0;L;;;;;N;;;;;\n189F7;TANGUT COMPONENT-504;Lo;0;L;;;;;N;;;;;\n189F8;TANGUT COMPONENT-505;Lo;0;L;;;;;N;;;;;\n189F9;TANGUT COMPONENT-506;Lo;0;L;;;;;N;;;;;\n189FA;TANGUT COMPONENT-507;Lo;0;L;;;;;N;;;;;\n189FB;TANGUT COMPONENT-508;Lo;0;L;;;;;N;;;;;\n189FC;TANGUT COMPONENT-509;Lo;0;L;;;;;N;;;;;\n189FD;TANGUT COMPONENT-510;Lo;0;L;;;;;N;;;;;\n189FE;TANGUT COMPONENT-511;Lo;0;L;;;;;N;;;;;\n189FF;TANGUT COMPONENT-512;Lo;0;L;;;;;N;;;;;\n18A00;TANGUT COMPONENT-513;Lo;0;L;;;;;N;;;;;\n18A01;TANGUT COMPONENT-514;Lo;0;L;;;;;N;;;;;\n18A02;TANGUT COMPONENT-515;Lo;0;L;;;;;N;;;;;\n18A03;TANGUT COMPONENT-516;Lo;0;L;;;;;N;;;;;\n18A04;TANGUT COMPONENT-517;Lo;0;L;;;;;N;;;;;\n18A05;TANGUT COMPONENT-518;Lo;0;L;;;;;N;;;;;\n18A06;TANGUT COMPONENT-519;Lo;0;L;;;;;N;;;;;\n18A07;TANGUT COMPONENT-520;Lo;0;L;;;;;N;;;;;\n18A08;TANGUT COMPONENT-521;Lo;0;L;;;;;N;;;;;\n18A09;TANGUT COMPONENT-522;Lo;0;L;;;;;N;;;;;\n18A0A;TANGUT COMPONENT-523;Lo;0;L;;;;;N;;;;;\n18A0B;TANGUT COMPONENT-524;Lo;0;L;;;;;N;;;;;\n18A0C;TANGUT COMPONENT-525;Lo;0;L;;;;;N;;;;;\n18A0D;TANGUT COMPONENT-526;Lo;0;L;;;;;N;;;;;\n18A0E;TANGUT COMPONENT-527;Lo;0;L;;;;;N;;;;;\n18A0F;TANGUT COMPONENT-528;Lo;0;L;;;;;N;;;;;\n18A10;TANGUT COMPONENT-529;Lo;0;L;;;;;N;;;;;\n18A11;TANGUT COMPONENT-530;Lo;0;L;;;;;N;;;;;\n18A12;TANGUT COMPONENT-531;Lo;0;L;;;;;N;;;;;\n18A13;TANGUT COMPONENT-532;Lo;0;L;;;;;N;;;;;\n18A14;TANGUT COMPONENT-533;Lo;0;L;;;;;N;;;;;\n18A15;TANGUT COMPONENT-534;Lo;0;L;;;;;N;;;;;\n18A16;TANGUT COMPONENT-535;Lo;0;L;;;;;N;;;;;\n18A17;TANGUT COMPONENT-536;Lo;0;L;;;;;N;;;;;\n18A18;TANGUT COMPONENT-537;Lo;0;L;;;;;N;;;;;\n18A19;TANGUT COMPONENT-538;Lo;0;L;;;;;N;;;;;\n18A1A;TANGUT COMPONENT-539;Lo;0;L;;;;;N;;;;;\n18A1B;TANGUT COMPONENT-540;Lo;0;L;;;;;N;;;;;\n18A1C;TANGUT COMPONENT-541;Lo;0;L;;;;;N;;;;;\n18A1D;TANGUT COMPONENT-542;Lo;0;L;;;;;N;;;;;\n18A1E;TANGUT COMPONENT-543;Lo;0;L;;;;;N;;;;;\n18A1F;TANGUT COMPONENT-544;Lo;0;L;;;;;N;;;;;\n18A20;TANGUT COMPONENT-545;Lo;0;L;;;;;N;;;;;\n18A21;TANGUT COMPONENT-546;Lo;0;L;;;;;N;;;;;\n18A22;TANGUT COMPONENT-547;Lo;0;L;;;;;N;;;;;\n18A23;TANGUT COMPONENT-548;Lo;0;L;;;;;N;;;;;\n18A24;TANGUT COMPONENT-549;Lo;0;L;;;;;N;;;;;\n18A25;TANGUT COMPONENT-550;Lo;0;L;;;;;N;;;;;\n18A26;TANGUT COMPONENT-551;Lo;0;L;;;;;N;;;;;\n18A27;TANGUT COMPONENT-552;Lo;0;L;;;;;N;;;;;\n18A28;TANGUT COMPONENT-553;Lo;0;L;;;;;N;;;;;\n18A29;TANGUT COMPONENT-554;Lo;0;L;;;;;N;;;;;\n18A2A;TANGUT COMPONENT-555;Lo;0;L;;;;;N;;;;;\n18A2B;TANGUT COMPONENT-556;Lo;0;L;;;;;N;;;;;\n18A2C;TANGUT COMPONENT-557;Lo;0;L;;;;;N;;;;;\n18A2D;TANGUT COMPONENT-558;Lo;0;L;;;;;N;;;;;\n18A2E;TANGUT COMPONENT-559;Lo;0;L;;;;;N;;;;;\n18A2F;TANGUT COMPONENT-560;Lo;0;L;;;;;N;;;;;\n18A30;TANGUT COMPONENT-561;Lo;0;L;;;;;N;;;;;\n18A31;TANGUT COMPONENT-562;Lo;0;L;;;;;N;;;;;\n18A32;TANGUT COMPONENT-563;Lo;0;L;;;;;N;;;;;\n18A33;TANGUT COMPONENT-564;Lo;0;L;;;;;N;;;;;\n18A34;TANGUT COMPONENT-565;Lo;0;L;;;;;N;;;;;\n18A35;TANGUT COMPONENT-566;Lo;0;L;;;;;N;;;;;\n18A36;TANGUT COMPONENT-567;Lo;0;L;;;;;N;;;;;\n18A37;TANGUT COMPONENT-568;Lo;0;L;;;;;N;;;;;\n18A38;TANGUT COMPONENT-569;Lo;0;L;;;;;N;;;;;\n18A39;TANGUT COMPONENT-570;Lo;0;L;;;;;N;;;;;\n18A3A;TANGUT COMPONENT-571;Lo;0;L;;;;;N;;;;;\n18A3B;TANGUT COMPONENT-572;Lo;0;L;;;;;N;;;;;\n18A3C;TANGUT COMPONENT-573;Lo;0;L;;;;;N;;;;;\n18A3D;TANGUT COMPONENT-574;Lo;0;L;;;;;N;;;;;\n18A3E;TANGUT COMPONENT-575;Lo;0;L;;;;;N;;;;;\n18A3F;TANGUT COMPONENT-576;Lo;0;L;;;;;N;;;;;\n18A40;TANGUT COMPONENT-577;Lo;0;L;;;;;N;;;;;\n18A41;TANGUT COMPONENT-578;Lo;0;L;;;;;N;;;;;\n18A42;TANGUT COMPONENT-579;Lo;0;L;;;;;N;;;;;\n18A43;TANGUT COMPONENT-580;Lo;0;L;;;;;N;;;;;\n18A44;TANGUT COMPONENT-581;Lo;0;L;;;;;N;;;;;\n18A45;TANGUT COMPONENT-582;Lo;0;L;;;;;N;;;;;\n18A46;TANGUT COMPONENT-583;Lo;0;L;;;;;N;;;;;\n18A47;TANGUT COMPONENT-584;Lo;0;L;;;;;N;;;;;\n18A48;TANGUT COMPONENT-585;Lo;0;L;;;;;N;;;;;\n18A49;TANGUT COMPONENT-586;Lo;0;L;;;;;N;;;;;\n18A4A;TANGUT COMPONENT-587;Lo;0;L;;;;;N;;;;;\n18A4B;TANGUT COMPONENT-588;Lo;0;L;;;;;N;;;;;\n18A4C;TANGUT COMPONENT-589;Lo;0;L;;;;;N;;;;;\n18A4D;TANGUT COMPONENT-590;Lo;0;L;;;;;N;;;;;\n18A4E;TANGUT COMPONENT-591;Lo;0;L;;;;;N;;;;;\n18A4F;TANGUT COMPONENT-592;Lo;0;L;;;;;N;;;;;\n18A50;TANGUT COMPONENT-593;Lo;0;L;;;;;N;;;;;\n18A51;TANGUT COMPONENT-594;Lo;0;L;;;;;N;;;;;\n18A52;TANGUT COMPONENT-595;Lo;0;L;;;;;N;;;;;\n18A53;TANGUT COMPONENT-596;Lo;0;L;;;;;N;;;;;\n18A54;TANGUT COMPONENT-597;Lo;0;L;;;;;N;;;;;\n18A55;TANGUT COMPONENT-598;Lo;0;L;;;;;N;;;;;\n18A56;TANGUT COMPONENT-599;Lo;0;L;;;;;N;;;;;\n18A57;TANGUT COMPONENT-600;Lo;0;L;;;;;N;;;;;\n18A58;TANGUT COMPONENT-601;Lo;0;L;;;;;N;;;;;\n18A59;TANGUT COMPONENT-602;Lo;0;L;;;;;N;;;;;\n18A5A;TANGUT COMPONENT-603;Lo;0;L;;;;;N;;;;;\n18A5B;TANGUT COMPONENT-604;Lo;0;L;;;;;N;;;;;\n18A5C;TANGUT COMPONENT-605;Lo;0;L;;;;;N;;;;;\n18A5D;TANGUT COMPONENT-606;Lo;0;L;;;;;N;;;;;\n18A5E;TANGUT COMPONENT-607;Lo;0;L;;;;;N;;;;;\n18A5F;TANGUT COMPONENT-608;Lo;0;L;;;;;N;;;;;\n18A60;TANGUT COMPONENT-609;Lo;0;L;;;;;N;;;;;\n18A61;TANGUT COMPONENT-610;Lo;0;L;;;;;N;;;;;\n18A62;TANGUT COMPONENT-611;Lo;0;L;;;;;N;;;;;\n18A63;TANGUT COMPONENT-612;Lo;0;L;;;;;N;;;;;\n18A64;TANGUT COMPONENT-613;Lo;0;L;;;;;N;;;;;\n18A65;TANGUT COMPONENT-614;Lo;0;L;;;;;N;;;;;\n18A66;TANGUT COMPONENT-615;Lo;0;L;;;;;N;;;;;\n18A67;TANGUT COMPONENT-616;Lo;0;L;;;;;N;;;;;\n18A68;TANGUT COMPONENT-617;Lo;0;L;;;;;N;;;;;\n18A69;TANGUT COMPONENT-618;Lo;0;L;;;;;N;;;;;\n18A6A;TANGUT COMPONENT-619;Lo;0;L;;;;;N;;;;;\n18A6B;TANGUT COMPONENT-620;Lo;0;L;;;;;N;;;;;\n18A6C;TANGUT COMPONENT-621;Lo;0;L;;;;;N;;;;;\n18A6D;TANGUT COMPONENT-622;Lo;0;L;;;;;N;;;;;\n18A6E;TANGUT COMPONENT-623;Lo;0;L;;;;;N;;;;;\n18A6F;TANGUT COMPONENT-624;Lo;0;L;;;;;N;;;;;\n18A70;TANGUT COMPONENT-625;Lo;0;L;;;;;N;;;;;\n18A71;TANGUT COMPONENT-626;Lo;0;L;;;;;N;;;;;\n18A72;TANGUT COMPONENT-627;Lo;0;L;;;;;N;;;;;\n18A73;TANGUT COMPONENT-628;Lo;0;L;;;;;N;;;;;\n18A74;TANGUT COMPONENT-629;Lo;0;L;;;;;N;;;;;\n18A75;TANGUT COMPONENT-630;Lo;0;L;;;;;N;;;;;\n18A76;TANGUT COMPONENT-631;Lo;0;L;;;;;N;;;;;\n18A77;TANGUT COMPONENT-632;Lo;0;L;;;;;N;;;;;\n18A78;TANGUT COMPONENT-633;Lo;0;L;;;;;N;;;;;\n18A79;TANGUT COMPONENT-634;Lo;0;L;;;;;N;;;;;\n18A7A;TANGUT COMPONENT-635;Lo;0;L;;;;;N;;;;;\n18A7B;TANGUT COMPONENT-636;Lo;0;L;;;;;N;;;;;\n18A7C;TANGUT COMPONENT-637;Lo;0;L;;;;;N;;;;;\n18A7D;TANGUT COMPONENT-638;Lo;0;L;;;;;N;;;;;\n18A7E;TANGUT COMPONENT-639;Lo;0;L;;;;;N;;;;;\n18A7F;TANGUT COMPONENT-640;Lo;0;L;;;;;N;;;;;\n18A80;TANGUT COMPONENT-641;Lo;0;L;;;;;N;;;;;\n18A81;TANGUT COMPONENT-642;Lo;0;L;;;;;N;;;;;\n18A82;TANGUT COMPONENT-643;Lo;0;L;;;;;N;;;;;\n18A83;TANGUT COMPONENT-644;Lo;0;L;;;;;N;;;;;\n18A84;TANGUT COMPONENT-645;Lo;0;L;;;;;N;;;;;\n18A85;TANGUT COMPONENT-646;Lo;0;L;;;;;N;;;;;\n18A86;TANGUT COMPONENT-647;Lo;0;L;;;;;N;;;;;\n18A87;TANGUT COMPONENT-648;Lo;0;L;;;;;N;;;;;\n18A88;TANGUT COMPONENT-649;Lo;0;L;;;;;N;;;;;\n18A89;TANGUT COMPONENT-650;Lo;0;L;;;;;N;;;;;\n18A8A;TANGUT COMPONENT-651;Lo;0;L;;;;;N;;;;;\n18A8B;TANGUT COMPONENT-652;Lo;0;L;;;;;N;;;;;\n18A8C;TANGUT COMPONENT-653;Lo;0;L;;;;;N;;;;;\n18A8D;TANGUT COMPONENT-654;Lo;0;L;;;;;N;;;;;\n18A8E;TANGUT COMPONENT-655;Lo;0;L;;;;;N;;;;;\n18A8F;TANGUT COMPONENT-656;Lo;0;L;;;;;N;;;;;\n18A90;TANGUT COMPONENT-657;Lo;0;L;;;;;N;;;;;\n18A91;TANGUT COMPONENT-658;Lo;0;L;;;;;N;;;;;\n18A92;TANGUT COMPONENT-659;Lo;0;L;;;;;N;;;;;\n18A93;TANGUT COMPONENT-660;Lo;0;L;;;;;N;;;;;\n18A94;TANGUT COMPONENT-661;Lo;0;L;;;;;N;;;;;\n18A95;TANGUT COMPONENT-662;Lo;0;L;;;;;N;;;;;\n18A96;TANGUT COMPONENT-663;Lo;0;L;;;;;N;;;;;\n18A97;TANGUT COMPONENT-664;Lo;0;L;;;;;N;;;;;\n18A98;TANGUT COMPONENT-665;Lo;0;L;;;;;N;;;;;\n18A99;TANGUT COMPONENT-666;Lo;0;L;;;;;N;;;;;\n18A9A;TANGUT COMPONENT-667;Lo;0;L;;;;;N;;;;;\n18A9B;TANGUT COMPONENT-668;Lo;0;L;;;;;N;;;;;\n18A9C;TANGUT COMPONENT-669;Lo;0;L;;;;;N;;;;;\n18A9D;TANGUT COMPONENT-670;Lo;0;L;;;;;N;;;;;\n18A9E;TANGUT COMPONENT-671;Lo;0;L;;;;;N;;;;;\n18A9F;TANGUT COMPONENT-672;Lo;0;L;;;;;N;;;;;\n18AA0;TANGUT COMPONENT-673;Lo;0;L;;;;;N;;;;;\n18AA1;TANGUT COMPONENT-674;Lo;0;L;;;;;N;;;;;\n18AA2;TANGUT COMPONENT-675;Lo;0;L;;;;;N;;;;;\n18AA3;TANGUT COMPONENT-676;Lo;0;L;;;;;N;;;;;\n18AA4;TANGUT COMPONENT-677;Lo;0;L;;;;;N;;;;;\n18AA5;TANGUT COMPONENT-678;Lo;0;L;;;;;N;;;;;\n18AA6;TANGUT COMPONENT-679;Lo;0;L;;;;;N;;;;;\n18AA7;TANGUT COMPONENT-680;Lo;0;L;;;;;N;;;;;\n18AA8;TANGUT COMPONENT-681;Lo;0;L;;;;;N;;;;;\n18AA9;TANGUT COMPONENT-682;Lo;0;L;;;;;N;;;;;\n18AAA;TANGUT COMPONENT-683;Lo;0;L;;;;;N;;;;;\n18AAB;TANGUT COMPONENT-684;Lo;0;L;;;;;N;;;;;\n18AAC;TANGUT COMPONENT-685;Lo;0;L;;;;;N;;;;;\n18AAD;TANGUT COMPONENT-686;Lo;0;L;;;;;N;;;;;\n18AAE;TANGUT COMPONENT-687;Lo;0;L;;;;;N;;;;;\n18AAF;TANGUT COMPONENT-688;Lo;0;L;;;;;N;;;;;\n18AB0;TANGUT COMPONENT-689;Lo;0;L;;;;;N;;;;;\n18AB1;TANGUT COMPONENT-690;Lo;0;L;;;;;N;;;;;\n18AB2;TANGUT COMPONENT-691;Lo;0;L;;;;;N;;;;;\n18AB3;TANGUT COMPONENT-692;Lo;0;L;;;;;N;;;;;\n18AB4;TANGUT COMPONENT-693;Lo;0;L;;;;;N;;;;;\n18AB5;TANGUT COMPONENT-694;Lo;0;L;;;;;N;;;;;\n18AB6;TANGUT COMPONENT-695;Lo;0;L;;;;;N;;;;;\n18AB7;TANGUT COMPONENT-696;Lo;0;L;;;;;N;;;;;\n18AB8;TANGUT COMPONENT-697;Lo;0;L;;;;;N;;;;;\n18AB9;TANGUT COMPONENT-698;Lo;0;L;;;;;N;;;;;\n18ABA;TANGUT COMPONENT-699;Lo;0;L;;;;;N;;;;;\n18ABB;TANGUT COMPONENT-700;Lo;0;L;;;;;N;;;;;\n18ABC;TANGUT COMPONENT-701;Lo;0;L;;;;;N;;;;;\n18ABD;TANGUT COMPONENT-702;Lo;0;L;;;;;N;;;;;\n18ABE;TANGUT COMPONENT-703;Lo;0;L;;;;;N;;;;;\n18ABF;TANGUT COMPONENT-704;Lo;0;L;;;;;N;;;;;\n18AC0;TANGUT COMPONENT-705;Lo;0;L;;;;;N;;;;;\n18AC1;TANGUT COMPONENT-706;Lo;0;L;;;;;N;;;;;\n18AC2;TANGUT COMPONENT-707;Lo;0;L;;;;;N;;;;;\n18AC3;TANGUT COMPONENT-708;Lo;0;L;;;;;N;;;;;\n18AC4;TANGUT COMPONENT-709;Lo;0;L;;;;;N;;;;;\n18AC5;TANGUT COMPONENT-710;Lo;0;L;;;;;N;;;;;\n18AC6;TANGUT COMPONENT-711;Lo;0;L;;;;;N;;;;;\n18AC7;TANGUT COMPONENT-712;Lo;0;L;;;;;N;;;;;\n18AC8;TANGUT COMPONENT-713;Lo;0;L;;;;;N;;;;;\n18AC9;TANGUT COMPONENT-714;Lo;0;L;;;;;N;;;;;\n18ACA;TANGUT COMPONENT-715;Lo;0;L;;;;;N;;;;;\n18ACB;TANGUT COMPONENT-716;Lo;0;L;;;;;N;;;;;\n18ACC;TANGUT COMPONENT-717;Lo;0;L;;;;;N;;;;;\n18ACD;TANGUT COMPONENT-718;Lo;0;L;;;;;N;;;;;\n18ACE;TANGUT COMPONENT-719;Lo;0;L;;;;;N;;;;;\n18ACF;TANGUT COMPONENT-720;Lo;0;L;;;;;N;;;;;\n18AD0;TANGUT COMPONENT-721;Lo;0;L;;;;;N;;;;;\n18AD1;TANGUT COMPONENT-722;Lo;0;L;;;;;N;;;;;\n18AD2;TANGUT COMPONENT-723;Lo;0;L;;;;;N;;;;;\n18AD3;TANGUT COMPONENT-724;Lo;0;L;;;;;N;;;;;\n18AD4;TANGUT COMPONENT-725;Lo;0;L;;;;;N;;;;;\n18AD5;TANGUT COMPONENT-726;Lo;0;L;;;;;N;;;;;\n18AD6;TANGUT COMPONENT-727;Lo;0;L;;;;;N;;;;;\n18AD7;TANGUT COMPONENT-728;Lo;0;L;;;;;N;;;;;\n18AD8;TANGUT COMPONENT-729;Lo;0;L;;;;;N;;;;;\n18AD9;TANGUT COMPONENT-730;Lo;0;L;;;;;N;;;;;\n18ADA;TANGUT COMPONENT-731;Lo;0;L;;;;;N;;;;;\n18ADB;TANGUT COMPONENT-732;Lo;0;L;;;;;N;;;;;\n18ADC;TANGUT COMPONENT-733;Lo;0;L;;;;;N;;;;;\n18ADD;TANGUT COMPONENT-734;Lo;0;L;;;;;N;;;;;\n18ADE;TANGUT COMPONENT-735;Lo;0;L;;;;;N;;;;;\n18ADF;TANGUT COMPONENT-736;Lo;0;L;;;;;N;;;;;\n18AE0;TANGUT COMPONENT-737;Lo;0;L;;;;;N;;;;;\n18AE1;TANGUT COMPONENT-738;Lo;0;L;;;;;N;;;;;\n18AE2;TANGUT COMPONENT-739;Lo;0;L;;;;;N;;;;;\n18AE3;TANGUT COMPONENT-740;Lo;0;L;;;;;N;;;;;\n18AE4;TANGUT COMPONENT-741;Lo;0;L;;;;;N;;;;;\n18AE5;TANGUT COMPONENT-742;Lo;0;L;;;;;N;;;;;\n18AE6;TANGUT COMPONENT-743;Lo;0;L;;;;;N;;;;;\n18AE7;TANGUT COMPONENT-744;Lo;0;L;;;;;N;;;;;\n18AE8;TANGUT COMPONENT-745;Lo;0;L;;;;;N;;;;;\n18AE9;TANGUT COMPONENT-746;Lo;0;L;;;;;N;;;;;\n18AEA;TANGUT COMPONENT-747;Lo;0;L;;;;;N;;;;;\n18AEB;TANGUT COMPONENT-748;Lo;0;L;;;;;N;;;;;\n18AEC;TANGUT COMPONENT-749;Lo;0;L;;;;;N;;;;;\n18AED;TANGUT COMPONENT-750;Lo;0;L;;;;;N;;;;;\n18AEE;TANGUT COMPONENT-751;Lo;0;L;;;;;N;;;;;\n18AEF;TANGUT COMPONENT-752;Lo;0;L;;;;;N;;;;;\n18AF0;TANGUT COMPONENT-753;Lo;0;L;;;;;N;;;;;\n18AF1;TANGUT COMPONENT-754;Lo;0;L;;;;;N;;;;;\n18AF2;TANGUT COMPONENT-755;Lo;0;L;;;;;N;;;;;\n18AF3;TANGUT COMPONENT-756;Lo;0;L;;;;;N;;;;;\n18AF4;TANGUT COMPONENT-757;Lo;0;L;;;;;N;;;;;\n18AF5;TANGUT COMPONENT-758;Lo;0;L;;;;;N;;;;;\n18AF6;TANGUT COMPONENT-759;Lo;0;L;;;;;N;;;;;\n18AF7;TANGUT COMPONENT-760;Lo;0;L;;;;;N;;;;;\n18AF8;TANGUT COMPONENT-761;Lo;0;L;;;;;N;;;;;\n18AF9;TANGUT COMPONENT-762;Lo;0;L;;;;;N;;;;;\n18AFA;TANGUT COMPONENT-763;Lo;0;L;;;;;N;;;;;\n18AFB;TANGUT COMPONENT-764;Lo;0;L;;;;;N;;;;;\n18AFC;TANGUT COMPONENT-765;Lo;0;L;;;;;N;;;;;\n18AFD;TANGUT COMPONENT-766;Lo;0;L;;;;;N;;;;;\n18AFE;TANGUT COMPONENT-767;Lo;0;L;;;;;N;;;;;\n18AFF;TANGUT COMPONENT-768;Lo;0;L;;;;;N;;;;;\n18B00;KHITAN SMALL SCRIPT CHARACTER-18B00;Lo;0;L;;;;;N;;;;;\n18B01;KHITAN SMALL SCRIPT CHARACTER-18B01;Lo;0;L;;;;;N;;;;;\n18B02;KHITAN SMALL SCRIPT CHARACTER-18B02;Lo;0;L;;;;;N;;;;;\n18B03;KHITAN SMALL SCRIPT CHARACTER-18B03;Lo;0;L;;;;;N;;;;;\n18B04;KHITAN SMALL SCRIPT CHARACTER-18B04;Lo;0;L;;;;;N;;;;;\n18B05;KHITAN SMALL SCRIPT CHARACTER-18B05;Lo;0;L;;;;;N;;;;;\n18B06;KHITAN SMALL SCRIPT CHARACTER-18B06;Lo;0;L;;;;;N;;;;;\n18B07;KHITAN SMALL SCRIPT CHARACTER-18B07;Lo;0;L;;;;;N;;;;;\n18B08;KHITAN SMALL SCRIPT CHARACTER-18B08;Lo;0;L;;;;;N;;;;;\n18B09;KHITAN SMALL SCRIPT CHARACTER-18B09;Lo;0;L;;;;;N;;;;;\n18B0A;KHITAN SMALL SCRIPT CHARACTER-18B0A;Lo;0;L;;;;;N;;;;;\n18B0B;KHITAN SMALL SCRIPT CHARACTER-18B0B;Lo;0;L;;;;;N;;;;;\n18B0C;KHITAN SMALL SCRIPT CHARACTER-18B0C;Lo;0;L;;;;;N;;;;;\n18B0D;KHITAN SMALL SCRIPT CHARACTER-18B0D;Lo;0;L;;;;;N;;;;;\n18B0E;KHITAN SMALL SCRIPT CHARACTER-18B0E;Lo;0;L;;;;;N;;;;;\n18B0F;KHITAN SMALL SCRIPT CHARACTER-18B0F;Lo;0;L;;;;;N;;;;;\n18B10;KHITAN SMALL SCRIPT CHARACTER-18B10;Lo;0;L;;;;;N;;;;;\n18B11;KHITAN SMALL SCRIPT CHARACTER-18B11;Lo;0;L;;;;;N;;;;;\n18B12;KHITAN SMALL SCRIPT CHARACTER-18B12;Lo;0;L;;;;;N;;;;;\n18B13;KHITAN SMALL SCRIPT CHARACTER-18B13;Lo;0;L;;;;;N;;;;;\n18B14;KHITAN SMALL SCRIPT CHARACTER-18B14;Lo;0;L;;;;;N;;;;;\n18B15;KHITAN SMALL SCRIPT CHARACTER-18B15;Lo;0;L;;;;;N;;;;;\n18B16;KHITAN SMALL SCRIPT CHARACTER-18B16;Lo;0;L;;;;;N;;;;;\n18B17;KHITAN SMALL SCRIPT CHARACTER-18B17;Lo;0;L;;;;;N;;;;;\n18B18;KHITAN SMALL SCRIPT CHARACTER-18B18;Lo;0;L;;;;;N;;;;;\n18B19;KHITAN SMALL SCRIPT CHARACTER-18B19;Lo;0;L;;;;;N;;;;;\n18B1A;KHITAN SMALL SCRIPT CHARACTER-18B1A;Lo;0;L;;;;;N;;;;;\n18B1B;KHITAN SMALL SCRIPT CHARACTER-18B1B;Lo;0;L;;;;;N;;;;;\n18B1C;KHITAN SMALL SCRIPT CHARACTER-18B1C;Lo;0;L;;;;;N;;;;;\n18B1D;KHITAN SMALL SCRIPT CHARACTER-18B1D;Lo;0;L;;;;;N;;;;;\n18B1E;KHITAN SMALL SCRIPT CHARACTER-18B1E;Lo;0;L;;;;;N;;;;;\n18B1F;KHITAN SMALL SCRIPT CHARACTER-18B1F;Lo;0;L;;;;;N;;;;;\n18B20;KHITAN SMALL SCRIPT CHARACTER-18B20;Lo;0;L;;;;;N;;;;;\n18B21;KHITAN SMALL SCRIPT CHARACTER-18B21;Lo;0;L;;;;;N;;;;;\n18B22;KHITAN SMALL SCRIPT CHARACTER-18B22;Lo;0;L;;;;;N;;;;;\n18B23;KHITAN SMALL SCRIPT CHARACTER-18B23;Lo;0;L;;;;;N;;;;;\n18B24;KHITAN SMALL SCRIPT CHARACTER-18B24;Lo;0;L;;;;;N;;;;;\n18B25;KHITAN SMALL SCRIPT CHARACTER-18B25;Lo;0;L;;;;;N;;;;;\n18B26;KHITAN SMALL SCRIPT CHARACTER-18B26;Lo;0;L;;;;;N;;;;;\n18B27;KHITAN SMALL SCRIPT CHARACTER-18B27;Lo;0;L;;;;;N;;;;;\n18B28;KHITAN SMALL SCRIPT CHARACTER-18B28;Lo;0;L;;;;;N;;;;;\n18B29;KHITAN SMALL SCRIPT CHARACTER-18B29;Lo;0;L;;;;;N;;;;;\n18B2A;KHITAN SMALL SCRIPT CHARACTER-18B2A;Lo;0;L;;;;;N;;;;;\n18B2B;KHITAN SMALL SCRIPT CHARACTER-18B2B;Lo;0;L;;;;;N;;;;;\n18B2C;KHITAN SMALL SCRIPT CHARACTER-18B2C;Lo;0;L;;;;;N;;;;;\n18B2D;KHITAN SMALL SCRIPT CHARACTER-18B2D;Lo;0;L;;;;;N;;;;;\n18B2E;KHITAN SMALL SCRIPT CHARACTER-18B2E;Lo;0;L;;;;;N;;;;;\n18B2F;KHITAN SMALL SCRIPT CHARACTER-18B2F;Lo;0;L;;;;;N;;;;;\n18B30;KHITAN SMALL SCRIPT CHARACTER-18B30;Lo;0;L;;;;;N;;;;;\n18B31;KHITAN SMALL SCRIPT CHARACTER-18B31;Lo;0;L;;;;;N;;;;;\n18B32;KHITAN SMALL SCRIPT CHARACTER-18B32;Lo;0;L;;;;;N;;;;;\n18B33;KHITAN SMALL SCRIPT CHARACTER-18B33;Lo;0;L;;;;;N;;;;;\n18B34;KHITAN SMALL SCRIPT CHARACTER-18B34;Lo;0;L;;;;;N;;;;;\n18B35;KHITAN SMALL SCRIPT CHARACTER-18B35;Lo;0;L;;;;;N;;;;;\n18B36;KHITAN SMALL SCRIPT CHARACTER-18B36;Lo;0;L;;;;;N;;;;;\n18B37;KHITAN SMALL SCRIPT CHARACTER-18B37;Lo;0;L;;;;;N;;;;;\n18B38;KHITAN SMALL SCRIPT CHARACTER-18B38;Lo;0;L;;;;;N;;;;;\n18B39;KHITAN SMALL SCRIPT CHARACTER-18B39;Lo;0;L;;;;;N;;;;;\n18B3A;KHITAN SMALL SCRIPT CHARACTER-18B3A;Lo;0;L;;;;;N;;;;;\n18B3B;KHITAN SMALL SCRIPT CHARACTER-18B3B;Lo;0;L;;;;;N;;;;;\n18B3C;KHITAN SMALL SCRIPT CHARACTER-18B3C;Lo;0;L;;;;;N;;;;;\n18B3D;KHITAN SMALL SCRIPT CHARACTER-18B3D;Lo;0;L;;;;;N;;;;;\n18B3E;KHITAN SMALL SCRIPT CHARACTER-18B3E;Lo;0;L;;;;;N;;;;;\n18B3F;KHITAN SMALL SCRIPT CHARACTER-18B3F;Lo;0;L;;;;;N;;;;;\n18B40;KHITAN SMALL SCRIPT CHARACTER-18B40;Lo;0;L;;;;;N;;;;;\n18B41;KHITAN SMALL SCRIPT CHARACTER-18B41;Lo;0;L;;;;;N;;;;;\n18B42;KHITAN SMALL SCRIPT CHARACTER-18B42;Lo;0;L;;;;;N;;;;;\n18B43;KHITAN SMALL SCRIPT CHARACTER-18B43;Lo;0;L;;;;;N;;;;;\n18B44;KHITAN SMALL SCRIPT CHARACTER-18B44;Lo;0;L;;;;;N;;;;;\n18B45;KHITAN SMALL SCRIPT CHARACTER-18B45;Lo;0;L;;;;;N;;;;;\n18B46;KHITAN SMALL SCRIPT CHARACTER-18B46;Lo;0;L;;;;;N;;;;;\n18B47;KHITAN SMALL SCRIPT CHARACTER-18B47;Lo;0;L;;;;;N;;;;;\n18B48;KHITAN SMALL SCRIPT CHARACTER-18B48;Lo;0;L;;;;;N;;;;;\n18B49;KHITAN SMALL SCRIPT CHARACTER-18B49;Lo;0;L;;;;;N;;;;;\n18B4A;KHITAN SMALL SCRIPT CHARACTER-18B4A;Lo;0;L;;;;;N;;;;;\n18B4B;KHITAN SMALL SCRIPT CHARACTER-18B4B;Lo;0;L;;;;;N;;;;;\n18B4C;KHITAN SMALL SCRIPT CHARACTER-18B4C;Lo;0;L;;;;;N;;;;;\n18B4D;KHITAN SMALL SCRIPT CHARACTER-18B4D;Lo;0;L;;;;;N;;;;;\n18B4E;KHITAN SMALL SCRIPT CHARACTER-18B4E;Lo;0;L;;;;;N;;;;;\n18B4F;KHITAN SMALL SCRIPT CHARACTER-18B4F;Lo;0;L;;;;;N;;;;;\n18B50;KHITAN SMALL SCRIPT CHARACTER-18B50;Lo;0;L;;;;;N;;;;;\n18B51;KHITAN SMALL SCRIPT CHARACTER-18B51;Lo;0;L;;;;;N;;;;;\n18B52;KHITAN SMALL SCRIPT CHARACTER-18B52;Lo;0;L;;;;;N;;;;;\n18B53;KHITAN SMALL SCRIPT CHARACTER-18B53;Lo;0;L;;;;;N;;;;;\n18B54;KHITAN SMALL SCRIPT CHARACTER-18B54;Lo;0;L;;;;;N;;;;;\n18B55;KHITAN SMALL SCRIPT CHARACTER-18B55;Lo;0;L;;;;;N;;;;;\n18B56;KHITAN SMALL SCRIPT CHARACTER-18B56;Lo;0;L;;;;;N;;;;;\n18B57;KHITAN SMALL SCRIPT CHARACTER-18B57;Lo;0;L;;;;;N;;;;;\n18B58;KHITAN SMALL SCRIPT CHARACTER-18B58;Lo;0;L;;;;;N;;;;;\n18B59;KHITAN SMALL SCRIPT CHARACTER-18B59;Lo;0;L;;;;;N;;;;;\n18B5A;KHITAN SMALL SCRIPT CHARACTER-18B5A;Lo;0;L;;;;;N;;;;;\n18B5B;KHITAN SMALL SCRIPT CHARACTER-18B5B;Lo;0;L;;;;;N;;;;;\n18B5C;KHITAN SMALL SCRIPT CHARACTER-18B5C;Lo;0;L;;;;;N;;;;;\n18B5D;KHITAN SMALL SCRIPT CHARACTER-18B5D;Lo;0;L;;;;;N;;;;;\n18B5E;KHITAN SMALL SCRIPT CHARACTER-18B5E;Lo;0;L;;;;;N;;;;;\n18B5F;KHITAN SMALL SCRIPT CHARACTER-18B5F;Lo;0;L;;;;;N;;;;;\n18B60;KHITAN SMALL SCRIPT CHARACTER-18B60;Lo;0;L;;;;;N;;;;;\n18B61;KHITAN SMALL SCRIPT CHARACTER-18B61;Lo;0;L;;;;;N;;;;;\n18B62;KHITAN SMALL SCRIPT CHARACTER-18B62;Lo;0;L;;;;;N;;;;;\n18B63;KHITAN SMALL SCRIPT CHARACTER-18B63;Lo;0;L;;;;;N;;;;;\n18B64;KHITAN SMALL SCRIPT CHARACTER-18B64;Lo;0;L;;;;;N;;;;;\n18B65;KHITAN SMALL SCRIPT CHARACTER-18B65;Lo;0;L;;;;;N;;;;;\n18B66;KHITAN SMALL SCRIPT CHARACTER-18B66;Lo;0;L;;;;;N;;;;;\n18B67;KHITAN SMALL SCRIPT CHARACTER-18B67;Lo;0;L;;;;;N;;;;;\n18B68;KHITAN SMALL SCRIPT CHARACTER-18B68;Lo;0;L;;;;;N;;;;;\n18B69;KHITAN SMALL SCRIPT CHARACTER-18B69;Lo;0;L;;;;;N;;;;;\n18B6A;KHITAN SMALL SCRIPT CHARACTER-18B6A;Lo;0;L;;;;;N;;;;;\n18B6B;KHITAN SMALL SCRIPT CHARACTER-18B6B;Lo;0;L;;;;;N;;;;;\n18B6C;KHITAN SMALL SCRIPT CHARACTER-18B6C;Lo;0;L;;;;;N;;;;;\n18B6D;KHITAN SMALL SCRIPT CHARACTER-18B6D;Lo;0;L;;;;;N;;;;;\n18B6E;KHITAN SMALL SCRIPT CHARACTER-18B6E;Lo;0;L;;;;;N;;;;;\n18B6F;KHITAN SMALL SCRIPT CHARACTER-18B6F;Lo;0;L;;;;;N;;;;;\n18B70;KHITAN SMALL SCRIPT CHARACTER-18B70;Lo;0;L;;;;;N;;;;;\n18B71;KHITAN SMALL SCRIPT CHARACTER-18B71;Lo;0;L;;;;;N;;;;;\n18B72;KHITAN SMALL SCRIPT CHARACTER-18B72;Lo;0;L;;;;;N;;;;;\n18B73;KHITAN SMALL SCRIPT CHARACTER-18B73;Lo;0;L;;;;;N;;;;;\n18B74;KHITAN SMALL SCRIPT CHARACTER-18B74;Lo;0;L;;;;;N;;;;;\n18B75;KHITAN SMALL SCRIPT CHARACTER-18B75;Lo;0;L;;;;;N;;;;;\n18B76;KHITAN SMALL SCRIPT CHARACTER-18B76;Lo;0;L;;;;;N;;;;;\n18B77;KHITAN SMALL SCRIPT CHARACTER-18B77;Lo;0;L;;;;;N;;;;;\n18B78;KHITAN SMALL SCRIPT CHARACTER-18B78;Lo;0;L;;;;;N;;;;;\n18B79;KHITAN SMALL SCRIPT CHARACTER-18B79;Lo;0;L;;;;;N;;;;;\n18B7A;KHITAN SMALL SCRIPT CHARACTER-18B7A;Lo;0;L;;;;;N;;;;;\n18B7B;KHITAN SMALL SCRIPT CHARACTER-18B7B;Lo;0;L;;;;;N;;;;;\n18B7C;KHITAN SMALL SCRIPT CHARACTER-18B7C;Lo;0;L;;;;;N;;;;;\n18B7D;KHITAN SMALL SCRIPT CHARACTER-18B7D;Lo;0;L;;;;;N;;;;;\n18B7E;KHITAN SMALL SCRIPT CHARACTER-18B7E;Lo;0;L;;;;;N;;;;;\n18B7F;KHITAN SMALL SCRIPT CHARACTER-18B7F;Lo;0;L;;;;;N;;;;;\n18B80;KHITAN SMALL SCRIPT CHARACTER-18B80;Lo;0;L;;;;;N;;;;;\n18B81;KHITAN SMALL SCRIPT CHARACTER-18B81;Lo;0;L;;;;;N;;;;;\n18B82;KHITAN SMALL SCRIPT CHARACTER-18B82;Lo;0;L;;;;;N;;;;;\n18B83;KHITAN SMALL SCRIPT CHARACTER-18B83;Lo;0;L;;;;;N;;;;;\n18B84;KHITAN SMALL SCRIPT CHARACTER-18B84;Lo;0;L;;;;;N;;;;;\n18B85;KHITAN SMALL SCRIPT CHARACTER-18B85;Lo;0;L;;;;;N;;;;;\n18B86;KHITAN SMALL SCRIPT CHARACTER-18B86;Lo;0;L;;;;;N;;;;;\n18B87;KHITAN SMALL SCRIPT CHARACTER-18B87;Lo;0;L;;;;;N;;;;;\n18B88;KHITAN SMALL SCRIPT CHARACTER-18B88;Lo;0;L;;;;;N;;;;;\n18B89;KHITAN SMALL SCRIPT CHARACTER-18B89;Lo;0;L;;;;;N;;;;;\n18B8A;KHITAN SMALL SCRIPT CHARACTER-18B8A;Lo;0;L;;;;;N;;;;;\n18B8B;KHITAN SMALL SCRIPT CHARACTER-18B8B;Lo;0;L;;;;;N;;;;;\n18B8C;KHITAN SMALL SCRIPT CHARACTER-18B8C;Lo;0;L;;;;;N;;;;;\n18B8D;KHITAN SMALL SCRIPT CHARACTER-18B8D;Lo;0;L;;;;;N;;;;;\n18B8E;KHITAN SMALL SCRIPT CHARACTER-18B8E;Lo;0;L;;;;;N;;;;;\n18B8F;KHITAN SMALL SCRIPT CHARACTER-18B8F;Lo;0;L;;;;;N;;;;;\n18B90;KHITAN SMALL SCRIPT CHARACTER-18B90;Lo;0;L;;;;;N;;;;;\n18B91;KHITAN SMALL SCRIPT CHARACTER-18B91;Lo;0;L;;;;;N;;;;;\n18B92;KHITAN SMALL SCRIPT CHARACTER-18B92;Lo;0;L;;;;;N;;;;;\n18B93;KHITAN SMALL SCRIPT CHARACTER-18B93;Lo;0;L;;;;;N;;;;;\n18B94;KHITAN SMALL SCRIPT CHARACTER-18B94;Lo;0;L;;;;;N;;;;;\n18B95;KHITAN SMALL SCRIPT CHARACTER-18B95;Lo;0;L;;;;;N;;;;;\n18B96;KHITAN SMALL SCRIPT CHARACTER-18B96;Lo;0;L;;;;;N;;;;;\n18B97;KHITAN SMALL SCRIPT CHARACTER-18B97;Lo;0;L;;;;;N;;;;;\n18B98;KHITAN SMALL SCRIPT CHARACTER-18B98;Lo;0;L;;;;;N;;;;;\n18B99;KHITAN SMALL SCRIPT CHARACTER-18B99;Lo;0;L;;;;;N;;;;;\n18B9A;KHITAN SMALL SCRIPT CHARACTER-18B9A;Lo;0;L;;;;;N;;;;;\n18B9B;KHITAN SMALL SCRIPT CHARACTER-18B9B;Lo;0;L;;;;;N;;;;;\n18B9C;KHITAN SMALL SCRIPT CHARACTER-18B9C;Lo;0;L;;;;;N;;;;;\n18B9D;KHITAN SMALL SCRIPT CHARACTER-18B9D;Lo;0;L;;;;;N;;;;;\n18B9E;KHITAN SMALL SCRIPT CHARACTER-18B9E;Lo;0;L;;;;;N;;;;;\n18B9F;KHITAN SMALL SCRIPT CHARACTER-18B9F;Lo;0;L;;;;;N;;;;;\n18BA0;KHITAN SMALL SCRIPT CHARACTER-18BA0;Lo;0;L;;;;;N;;;;;\n18BA1;KHITAN SMALL SCRIPT CHARACTER-18BA1;Lo;0;L;;;;;N;;;;;\n18BA2;KHITAN SMALL SCRIPT CHARACTER-18BA2;Lo;0;L;;;;;N;;;;;\n18BA3;KHITAN SMALL SCRIPT CHARACTER-18BA3;Lo;0;L;;;;;N;;;;;\n18BA4;KHITAN SMALL SCRIPT CHARACTER-18BA4;Lo;0;L;;;;;N;;;;;\n18BA5;KHITAN SMALL SCRIPT CHARACTER-18BA5;Lo;0;L;;;;;N;;;;;\n18BA6;KHITAN SMALL SCRIPT CHARACTER-18BA6;Lo;0;L;;;;;N;;;;;\n18BA7;KHITAN SMALL SCRIPT CHARACTER-18BA7;Lo;0;L;;;;;N;;;;;\n18BA8;KHITAN SMALL SCRIPT CHARACTER-18BA8;Lo;0;L;;;;;N;;;;;\n18BA9;KHITAN SMALL SCRIPT CHARACTER-18BA9;Lo;0;L;;;;;N;;;;;\n18BAA;KHITAN SMALL SCRIPT CHARACTER-18BAA;Lo;0;L;;;;;N;;;;;\n18BAB;KHITAN SMALL SCRIPT CHARACTER-18BAB;Lo;0;L;;;;;N;;;;;\n18BAC;KHITAN SMALL SCRIPT CHARACTER-18BAC;Lo;0;L;;;;;N;;;;;\n18BAD;KHITAN SMALL SCRIPT CHARACTER-18BAD;Lo;0;L;;;;;N;;;;;\n18BAE;KHITAN SMALL SCRIPT CHARACTER-18BAE;Lo;0;L;;;;;N;;;;;\n18BAF;KHITAN SMALL SCRIPT CHARACTER-18BAF;Lo;0;L;;;;;N;;;;;\n18BB0;KHITAN SMALL SCRIPT CHARACTER-18BB0;Lo;0;L;;;;;N;;;;;\n18BB1;KHITAN SMALL SCRIPT CHARACTER-18BB1;Lo;0;L;;;;;N;;;;;\n18BB2;KHITAN SMALL SCRIPT CHARACTER-18BB2;Lo;0;L;;;;;N;;;;;\n18BB3;KHITAN SMALL SCRIPT CHARACTER-18BB3;Lo;0;L;;;;;N;;;;;\n18BB4;KHITAN SMALL SCRIPT CHARACTER-18BB4;Lo;0;L;;;;;N;;;;;\n18BB5;KHITAN SMALL SCRIPT CHARACTER-18BB5;Lo;0;L;;;;;N;;;;;\n18BB6;KHITAN SMALL SCRIPT CHARACTER-18BB6;Lo;0;L;;;;;N;;;;;\n18BB7;KHITAN SMALL SCRIPT CHARACTER-18BB7;Lo;0;L;;;;;N;;;;;\n18BB8;KHITAN SMALL SCRIPT CHARACTER-18BB8;Lo;0;L;;;;;N;;;;;\n18BB9;KHITAN SMALL SCRIPT CHARACTER-18BB9;Lo;0;L;;;;;N;;;;;\n18BBA;KHITAN SMALL SCRIPT CHARACTER-18BBA;Lo;0;L;;;;;N;;;;;\n18BBB;KHITAN SMALL SCRIPT CHARACTER-18BBB;Lo;0;L;;;;;N;;;;;\n18BBC;KHITAN SMALL SCRIPT CHARACTER-18BBC;Lo;0;L;;;;;N;;;;;\n18BBD;KHITAN SMALL SCRIPT CHARACTER-18BBD;Lo;0;L;;;;;N;;;;;\n18BBE;KHITAN SMALL SCRIPT CHARACTER-18BBE;Lo;0;L;;;;;N;;;;;\n18BBF;KHITAN SMALL SCRIPT CHARACTER-18BBF;Lo;0;L;;;;;N;;;;;\n18BC0;KHITAN SMALL SCRIPT CHARACTER-18BC0;Lo;0;L;;;;;N;;;;;\n18BC1;KHITAN SMALL SCRIPT CHARACTER-18BC1;Lo;0;L;;;;;N;;;;;\n18BC2;KHITAN SMALL SCRIPT CHARACTER-18BC2;Lo;0;L;;;;;N;;;;;\n18BC3;KHITAN SMALL SCRIPT CHARACTER-18BC3;Lo;0;L;;;;;N;;;;;\n18BC4;KHITAN SMALL SCRIPT CHARACTER-18BC4;Lo;0;L;;;;;N;;;;;\n18BC5;KHITAN SMALL SCRIPT CHARACTER-18BC5;Lo;0;L;;;;;N;;;;;\n18BC6;KHITAN SMALL SCRIPT CHARACTER-18BC6;Lo;0;L;;;;;N;;;;;\n18BC7;KHITAN SMALL SCRIPT CHARACTER-18BC7;Lo;0;L;;;;;N;;;;;\n18BC8;KHITAN SMALL SCRIPT CHARACTER-18BC8;Lo;0;L;;;;;N;;;;;\n18BC9;KHITAN SMALL SCRIPT CHARACTER-18BC9;Lo;0;L;;;;;N;;;;;\n18BCA;KHITAN SMALL SCRIPT CHARACTER-18BCA;Lo;0;L;;;;;N;;;;;\n18BCB;KHITAN SMALL SCRIPT CHARACTER-18BCB;Lo;0;L;;;;;N;;;;;\n18BCC;KHITAN SMALL SCRIPT CHARACTER-18BCC;Lo;0;L;;;;;N;;;;;\n18BCD;KHITAN SMALL SCRIPT CHARACTER-18BCD;Lo;0;L;;;;;N;;;;;\n18BCE;KHITAN SMALL SCRIPT CHARACTER-18BCE;Lo;0;L;;;;;N;;;;;\n18BCF;KHITAN SMALL SCRIPT CHARACTER-18BCF;Lo;0;L;;;;;N;;;;;\n18BD0;KHITAN SMALL SCRIPT CHARACTER-18BD0;Lo;0;L;;;;;N;;;;;\n18BD1;KHITAN SMALL SCRIPT CHARACTER-18BD1;Lo;0;L;;;;;N;;;;;\n18BD2;KHITAN SMALL SCRIPT CHARACTER-18BD2;Lo;0;L;;;;;N;;;;;\n18BD3;KHITAN SMALL SCRIPT CHARACTER-18BD3;Lo;0;L;;;;;N;;;;;\n18BD4;KHITAN SMALL SCRIPT CHARACTER-18BD4;Lo;0;L;;;;;N;;;;;\n18BD5;KHITAN SMALL SCRIPT CHARACTER-18BD5;Lo;0;L;;;;;N;;;;;\n18BD6;KHITAN SMALL SCRIPT CHARACTER-18BD6;Lo;0;L;;;;;N;;;;;\n18BD7;KHITAN SMALL SCRIPT CHARACTER-18BD7;Lo;0;L;;;;;N;;;;;\n18BD8;KHITAN SMALL SCRIPT CHARACTER-18BD8;Lo;0;L;;;;;N;;;;;\n18BD9;KHITAN SMALL SCRIPT CHARACTER-18BD9;Lo;0;L;;;;;N;;;;;\n18BDA;KHITAN SMALL SCRIPT CHARACTER-18BDA;Lo;0;L;;;;;N;;;;;\n18BDB;KHITAN SMALL SCRIPT CHARACTER-18BDB;Lo;0;L;;;;;N;;;;;\n18BDC;KHITAN SMALL SCRIPT CHARACTER-18BDC;Lo;0;L;;;;;N;;;;;\n18BDD;KHITAN SMALL SCRIPT CHARACTER-18BDD;Lo;0;L;;;;;N;;;;;\n18BDE;KHITAN SMALL SCRIPT CHARACTER-18BDE;Lo;0;L;;;;;N;;;;;\n18BDF;KHITAN SMALL SCRIPT CHARACTER-18BDF;Lo;0;L;;;;;N;;;;;\n18BE0;KHITAN SMALL SCRIPT CHARACTER-18BE0;Lo;0;L;;;;;N;;;;;\n18BE1;KHITAN SMALL SCRIPT CHARACTER-18BE1;Lo;0;L;;;;;N;;;;;\n18BE2;KHITAN SMALL SCRIPT CHARACTER-18BE2;Lo;0;L;;;;;N;;;;;\n18BE3;KHITAN SMALL SCRIPT CHARACTER-18BE3;Lo;0;L;;;;;N;;;;;\n18BE4;KHITAN SMALL SCRIPT CHARACTER-18BE4;Lo;0;L;;;;;N;;;;;\n18BE5;KHITAN SMALL SCRIPT CHARACTER-18BE5;Lo;0;L;;;;;N;;;;;\n18BE6;KHITAN SMALL SCRIPT CHARACTER-18BE6;Lo;0;L;;;;;N;;;;;\n18BE7;KHITAN SMALL SCRIPT CHARACTER-18BE7;Lo;0;L;;;;;N;;;;;\n18BE8;KHITAN SMALL SCRIPT CHARACTER-18BE8;Lo;0;L;;;;;N;;;;;\n18BE9;KHITAN SMALL SCRIPT CHARACTER-18BE9;Lo;0;L;;;;;N;;;;;\n18BEA;KHITAN SMALL SCRIPT CHARACTER-18BEA;Lo;0;L;;;;;N;;;;;\n18BEB;KHITAN SMALL SCRIPT CHARACTER-18BEB;Lo;0;L;;;;;N;;;;;\n18BEC;KHITAN SMALL SCRIPT CHARACTER-18BEC;Lo;0;L;;;;;N;;;;;\n18BED;KHITAN SMALL SCRIPT CHARACTER-18BED;Lo;0;L;;;;;N;;;;;\n18BEE;KHITAN SMALL SCRIPT CHARACTER-18BEE;Lo;0;L;;;;;N;;;;;\n18BEF;KHITAN SMALL SCRIPT CHARACTER-18BEF;Lo;0;L;;;;;N;;;;;\n18BF0;KHITAN SMALL SCRIPT CHARACTER-18BF0;Lo;0;L;;;;;N;;;;;\n18BF1;KHITAN SMALL SCRIPT CHARACTER-18BF1;Lo;0;L;;;;;N;;;;;\n18BF2;KHITAN SMALL SCRIPT CHARACTER-18BF2;Lo;0;L;;;;;N;;;;;\n18BF3;KHITAN SMALL SCRIPT CHARACTER-18BF3;Lo;0;L;;;;;N;;;;;\n18BF4;KHITAN SMALL SCRIPT CHARACTER-18BF4;Lo;0;L;;;;;N;;;;;\n18BF5;KHITAN SMALL SCRIPT CHARACTER-18BF5;Lo;0;L;;;;;N;;;;;\n18BF6;KHITAN SMALL SCRIPT CHARACTER-18BF6;Lo;0;L;;;;;N;;;;;\n18BF7;KHITAN SMALL SCRIPT CHARACTER-18BF7;Lo;0;L;;;;;N;;;;;\n18BF8;KHITAN SMALL SCRIPT CHARACTER-18BF8;Lo;0;L;;;;;N;;;;;\n18BF9;KHITAN SMALL SCRIPT CHARACTER-18BF9;Lo;0;L;;;;;N;;;;;\n18BFA;KHITAN SMALL SCRIPT CHARACTER-18BFA;Lo;0;L;;;;;N;;;;;\n18BFB;KHITAN SMALL SCRIPT CHARACTER-18BFB;Lo;0;L;;;;;N;;;;;\n18BFC;KHITAN SMALL SCRIPT CHARACTER-18BFC;Lo;0;L;;;;;N;;;;;\n18BFD;KHITAN SMALL SCRIPT CHARACTER-18BFD;Lo;0;L;;;;;N;;;;;\n18BFE;KHITAN SMALL SCRIPT CHARACTER-18BFE;Lo;0;L;;;;;N;;;;;\n18BFF;KHITAN SMALL SCRIPT CHARACTER-18BFF;Lo;0;L;;;;;N;;;;;\n18C00;KHITAN SMALL SCRIPT CHARACTER-18C00;Lo;0;L;;;;;N;;;;;\n18C01;KHITAN SMALL SCRIPT CHARACTER-18C01;Lo;0;L;;;;;N;;;;;\n18C02;KHITAN SMALL SCRIPT CHARACTER-18C02;Lo;0;L;;;;;N;;;;;\n18C03;KHITAN SMALL SCRIPT CHARACTER-18C03;Lo;0;L;;;;;N;;;;;\n18C04;KHITAN SMALL SCRIPT CHARACTER-18C04;Lo;0;L;;;;;N;;;;;\n18C05;KHITAN SMALL SCRIPT CHARACTER-18C05;Lo;0;L;;;;;N;;;;;\n18C06;KHITAN SMALL SCRIPT CHARACTER-18C06;Lo;0;L;;;;;N;;;;;\n18C07;KHITAN SMALL SCRIPT CHARACTER-18C07;Lo;0;L;;;;;N;;;;;\n18C08;KHITAN SMALL SCRIPT CHARACTER-18C08;Lo;0;L;;;;;N;;;;;\n18C09;KHITAN SMALL SCRIPT CHARACTER-18C09;Lo;0;L;;;;;N;;;;;\n18C0A;KHITAN SMALL SCRIPT CHARACTER-18C0A;Lo;0;L;;;;;N;;;;;\n18C0B;KHITAN SMALL SCRIPT CHARACTER-18C0B;Lo;0;L;;;;;N;;;;;\n18C0C;KHITAN SMALL SCRIPT CHARACTER-18C0C;Lo;0;L;;;;;N;;;;;\n18C0D;KHITAN SMALL SCRIPT CHARACTER-18C0D;Lo;0;L;;;;;N;;;;;\n18C0E;KHITAN SMALL SCRIPT CHARACTER-18C0E;Lo;0;L;;;;;N;;;;;\n18C0F;KHITAN SMALL SCRIPT CHARACTER-18C0F;Lo;0;L;;;;;N;;;;;\n18C10;KHITAN SMALL SCRIPT CHARACTER-18C10;Lo;0;L;;;;;N;;;;;\n18C11;KHITAN SMALL SCRIPT CHARACTER-18C11;Lo;0;L;;;;;N;;;;;\n18C12;KHITAN SMALL SCRIPT CHARACTER-18C12;Lo;0;L;;;;;N;;;;;\n18C13;KHITAN SMALL SCRIPT CHARACTER-18C13;Lo;0;L;;;;;N;;;;;\n18C14;KHITAN SMALL SCRIPT CHARACTER-18C14;Lo;0;L;;;;;N;;;;;\n18C15;KHITAN SMALL SCRIPT CHARACTER-18C15;Lo;0;L;;;;;N;;;;;\n18C16;KHITAN SMALL SCRIPT CHARACTER-18C16;Lo;0;L;;;;;N;;;;;\n18C17;KHITAN SMALL SCRIPT CHARACTER-18C17;Lo;0;L;;;;;N;;;;;\n18C18;KHITAN SMALL SCRIPT CHARACTER-18C18;Lo;0;L;;;;;N;;;;;\n18C19;KHITAN SMALL SCRIPT CHARACTER-18C19;Lo;0;L;;;;;N;;;;;\n18C1A;KHITAN SMALL SCRIPT CHARACTER-18C1A;Lo;0;L;;;;;N;;;;;\n18C1B;KHITAN SMALL SCRIPT CHARACTER-18C1B;Lo;0;L;;;;;N;;;;;\n18C1C;KHITAN SMALL SCRIPT CHARACTER-18C1C;Lo;0;L;;;;;N;;;;;\n18C1D;KHITAN SMALL SCRIPT CHARACTER-18C1D;Lo;0;L;;;;;N;;;;;\n18C1E;KHITAN SMALL SCRIPT CHARACTER-18C1E;Lo;0;L;;;;;N;;;;;\n18C1F;KHITAN SMALL SCRIPT CHARACTER-18C1F;Lo;0;L;;;;;N;;;;;\n18C20;KHITAN SMALL SCRIPT CHARACTER-18C20;Lo;0;L;;;;;N;;;;;\n18C21;KHITAN SMALL SCRIPT CHARACTER-18C21;Lo;0;L;;;;;N;;;;;\n18C22;KHITAN SMALL SCRIPT CHARACTER-18C22;Lo;0;L;;;;;N;;;;;\n18C23;KHITAN SMALL SCRIPT CHARACTER-18C23;Lo;0;L;;;;;N;;;;;\n18C24;KHITAN SMALL SCRIPT CHARACTER-18C24;Lo;0;L;;;;;N;;;;;\n18C25;KHITAN SMALL SCRIPT CHARACTER-18C25;Lo;0;L;;;;;N;;;;;\n18C26;KHITAN SMALL SCRIPT CHARACTER-18C26;Lo;0;L;;;;;N;;;;;\n18C27;KHITAN SMALL SCRIPT CHARACTER-18C27;Lo;0;L;;;;;N;;;;;\n18C28;KHITAN SMALL SCRIPT CHARACTER-18C28;Lo;0;L;;;;;N;;;;;\n18C29;KHITAN SMALL SCRIPT CHARACTER-18C29;Lo;0;L;;;;;N;;;;;\n18C2A;KHITAN SMALL SCRIPT CHARACTER-18C2A;Lo;0;L;;;;;N;;;;;\n18C2B;KHITAN SMALL SCRIPT CHARACTER-18C2B;Lo;0;L;;;;;N;;;;;\n18C2C;KHITAN SMALL SCRIPT CHARACTER-18C2C;Lo;0;L;;;;;N;;;;;\n18C2D;KHITAN SMALL SCRIPT CHARACTER-18C2D;Lo;0;L;;;;;N;;;;;\n18C2E;KHITAN SMALL SCRIPT CHARACTER-18C2E;Lo;0;L;;;;;N;;;;;\n18C2F;KHITAN SMALL SCRIPT CHARACTER-18C2F;Lo;0;L;;;;;N;;;;;\n18C30;KHITAN SMALL SCRIPT CHARACTER-18C30;Lo;0;L;;;;;N;;;;;\n18C31;KHITAN SMALL SCRIPT CHARACTER-18C31;Lo;0;L;;;;;N;;;;;\n18C32;KHITAN SMALL SCRIPT CHARACTER-18C32;Lo;0;L;;;;;N;;;;;\n18C33;KHITAN SMALL SCRIPT CHARACTER-18C33;Lo;0;L;;;;;N;;;;;\n18C34;KHITAN SMALL SCRIPT CHARACTER-18C34;Lo;0;L;;;;;N;;;;;\n18C35;KHITAN SMALL SCRIPT CHARACTER-18C35;Lo;0;L;;;;;N;;;;;\n18C36;KHITAN SMALL SCRIPT CHARACTER-18C36;Lo;0;L;;;;;N;;;;;\n18C37;KHITAN SMALL SCRIPT CHARACTER-18C37;Lo;0;L;;;;;N;;;;;\n18C38;KHITAN SMALL SCRIPT CHARACTER-18C38;Lo;0;L;;;;;N;;;;;\n18C39;KHITAN SMALL SCRIPT CHARACTER-18C39;Lo;0;L;;;;;N;;;;;\n18C3A;KHITAN SMALL SCRIPT CHARACTER-18C3A;Lo;0;L;;;;;N;;;;;\n18C3B;KHITAN SMALL SCRIPT CHARACTER-18C3B;Lo;0;L;;;;;N;;;;;\n18C3C;KHITAN SMALL SCRIPT CHARACTER-18C3C;Lo;0;L;;;;;N;;;;;\n18C3D;KHITAN SMALL SCRIPT CHARACTER-18C3D;Lo;0;L;;;;;N;;;;;\n18C3E;KHITAN SMALL SCRIPT CHARACTER-18C3E;Lo;0;L;;;;;N;;;;;\n18C3F;KHITAN SMALL SCRIPT CHARACTER-18C3F;Lo;0;L;;;;;N;;;;;\n18C40;KHITAN SMALL SCRIPT CHARACTER-18C40;Lo;0;L;;;;;N;;;;;\n18C41;KHITAN SMALL SCRIPT CHARACTER-18C41;Lo;0;L;;;;;N;;;;;\n18C42;KHITAN SMALL SCRIPT CHARACTER-18C42;Lo;0;L;;;;;N;;;;;\n18C43;KHITAN SMALL SCRIPT CHARACTER-18C43;Lo;0;L;;;;;N;;;;;\n18C44;KHITAN SMALL SCRIPT CHARACTER-18C44;Lo;0;L;;;;;N;;;;;\n18C45;KHITAN SMALL SCRIPT CHARACTER-18C45;Lo;0;L;;;;;N;;;;;\n18C46;KHITAN SMALL SCRIPT CHARACTER-18C46;Lo;0;L;;;;;N;;;;;\n18C47;KHITAN SMALL SCRIPT CHARACTER-18C47;Lo;0;L;;;;;N;;;;;\n18C48;KHITAN SMALL SCRIPT CHARACTER-18C48;Lo;0;L;;;;;N;;;;;\n18C49;KHITAN SMALL SCRIPT CHARACTER-18C49;Lo;0;L;;;;;N;;;;;\n18C4A;KHITAN SMALL SCRIPT CHARACTER-18C4A;Lo;0;L;;;;;N;;;;;\n18C4B;KHITAN SMALL SCRIPT CHARACTER-18C4B;Lo;0;L;;;;;N;;;;;\n18C4C;KHITAN SMALL SCRIPT CHARACTER-18C4C;Lo;0;L;;;;;N;;;;;\n18C4D;KHITAN SMALL SCRIPT CHARACTER-18C4D;Lo;0;L;;;;;N;;;;;\n18C4E;KHITAN SMALL SCRIPT CHARACTER-18C4E;Lo;0;L;;;;;N;;;;;\n18C4F;KHITAN SMALL SCRIPT CHARACTER-18C4F;Lo;0;L;;;;;N;;;;;\n18C50;KHITAN SMALL SCRIPT CHARACTER-18C50;Lo;0;L;;;;;N;;;;;\n18C51;KHITAN SMALL SCRIPT CHARACTER-18C51;Lo;0;L;;;;;N;;;;;\n18C52;KHITAN SMALL SCRIPT CHARACTER-18C52;Lo;0;L;;;;;N;;;;;\n18C53;KHITAN SMALL SCRIPT CHARACTER-18C53;Lo;0;L;;;;;N;;;;;\n18C54;KHITAN SMALL SCRIPT CHARACTER-18C54;Lo;0;L;;;;;N;;;;;\n18C55;KHITAN SMALL SCRIPT CHARACTER-18C55;Lo;0;L;;;;;N;;;;;\n18C56;KHITAN SMALL SCRIPT CHARACTER-18C56;Lo;0;L;;;;;N;;;;;\n18C57;KHITAN SMALL SCRIPT CHARACTER-18C57;Lo;0;L;;;;;N;;;;;\n18C58;KHITAN SMALL SCRIPT CHARACTER-18C58;Lo;0;L;;;;;N;;;;;\n18C59;KHITAN SMALL SCRIPT CHARACTER-18C59;Lo;0;L;;;;;N;;;;;\n18C5A;KHITAN SMALL SCRIPT CHARACTER-18C5A;Lo;0;L;;;;;N;;;;;\n18C5B;KHITAN SMALL SCRIPT CHARACTER-18C5B;Lo;0;L;;;;;N;;;;;\n18C5C;KHITAN SMALL SCRIPT CHARACTER-18C5C;Lo;0;L;;;;;N;;;;;\n18C5D;KHITAN SMALL SCRIPT CHARACTER-18C5D;Lo;0;L;;;;;N;;;;;\n18C5E;KHITAN SMALL SCRIPT CHARACTER-18C5E;Lo;0;L;;;;;N;;;;;\n18C5F;KHITAN SMALL SCRIPT CHARACTER-18C5F;Lo;0;L;;;;;N;;;;;\n18C60;KHITAN SMALL SCRIPT CHARACTER-18C60;Lo;0;L;;;;;N;;;;;\n18C61;KHITAN SMALL SCRIPT CHARACTER-18C61;Lo;0;L;;;;;N;;;;;\n18C62;KHITAN SMALL SCRIPT CHARACTER-18C62;Lo;0;L;;;;;N;;;;;\n18C63;KHITAN SMALL SCRIPT CHARACTER-18C63;Lo;0;L;;;;;N;;;;;\n18C64;KHITAN SMALL SCRIPT CHARACTER-18C64;Lo;0;L;;;;;N;;;;;\n18C65;KHITAN SMALL SCRIPT CHARACTER-18C65;Lo;0;L;;;;;N;;;;;\n18C66;KHITAN SMALL SCRIPT CHARACTER-18C66;Lo;0;L;;;;;N;;;;;\n18C67;KHITAN SMALL SCRIPT CHARACTER-18C67;Lo;0;L;;;;;N;;;;;\n18C68;KHITAN SMALL SCRIPT CHARACTER-18C68;Lo;0;L;;;;;N;;;;;\n18C69;KHITAN SMALL SCRIPT CHARACTER-18C69;Lo;0;L;;;;;N;;;;;\n18C6A;KHITAN SMALL SCRIPT CHARACTER-18C6A;Lo;0;L;;;;;N;;;;;\n18C6B;KHITAN SMALL SCRIPT CHARACTER-18C6B;Lo;0;L;;;;;N;;;;;\n18C6C;KHITAN SMALL SCRIPT CHARACTER-18C6C;Lo;0;L;;;;;N;;;;;\n18C6D;KHITAN SMALL SCRIPT CHARACTER-18C6D;Lo;0;L;;;;;N;;;;;\n18C6E;KHITAN SMALL SCRIPT CHARACTER-18C6E;Lo;0;L;;;;;N;;;;;\n18C6F;KHITAN SMALL SCRIPT CHARACTER-18C6F;Lo;0;L;;;;;N;;;;;\n18C70;KHITAN SMALL SCRIPT CHARACTER-18C70;Lo;0;L;;;;;N;;;;;\n18C71;KHITAN SMALL SCRIPT CHARACTER-18C71;Lo;0;L;;;;;N;;;;;\n18C72;KHITAN SMALL SCRIPT CHARACTER-18C72;Lo;0;L;;;;;N;;;;;\n18C73;KHITAN SMALL SCRIPT CHARACTER-18C73;Lo;0;L;;;;;N;;;;;\n18C74;KHITAN SMALL SCRIPT CHARACTER-18C74;Lo;0;L;;;;;N;;;;;\n18C75;KHITAN SMALL SCRIPT CHARACTER-18C75;Lo;0;L;;;;;N;;;;;\n18C76;KHITAN SMALL SCRIPT CHARACTER-18C76;Lo;0;L;;;;;N;;;;;\n18C77;KHITAN SMALL SCRIPT CHARACTER-18C77;Lo;0;L;;;;;N;;;;;\n18C78;KHITAN SMALL SCRIPT CHARACTER-18C78;Lo;0;L;;;;;N;;;;;\n18C79;KHITAN SMALL SCRIPT CHARACTER-18C79;Lo;0;L;;;;;N;;;;;\n18C7A;KHITAN SMALL SCRIPT CHARACTER-18C7A;Lo;0;L;;;;;N;;;;;\n18C7B;KHITAN SMALL SCRIPT CHARACTER-18C7B;Lo;0;L;;;;;N;;;;;\n18C7C;KHITAN SMALL SCRIPT CHARACTER-18C7C;Lo;0;L;;;;;N;;;;;\n18C7D;KHITAN SMALL SCRIPT CHARACTER-18C7D;Lo;0;L;;;;;N;;;;;\n18C7E;KHITAN SMALL SCRIPT CHARACTER-18C7E;Lo;0;L;;;;;N;;;;;\n18C7F;KHITAN SMALL SCRIPT CHARACTER-18C7F;Lo;0;L;;;;;N;;;;;\n18C80;KHITAN SMALL SCRIPT CHARACTER-18C80;Lo;0;L;;;;;N;;;;;\n18C81;KHITAN SMALL SCRIPT CHARACTER-18C81;Lo;0;L;;;;;N;;;;;\n18C82;KHITAN SMALL SCRIPT CHARACTER-18C82;Lo;0;L;;;;;N;;;;;\n18C83;KHITAN SMALL SCRIPT CHARACTER-18C83;Lo;0;L;;;;;N;;;;;\n18C84;KHITAN SMALL SCRIPT CHARACTER-18C84;Lo;0;L;;;;;N;;;;;\n18C85;KHITAN SMALL SCRIPT CHARACTER-18C85;Lo;0;L;;;;;N;;;;;\n18C86;KHITAN SMALL SCRIPT CHARACTER-18C86;Lo;0;L;;;;;N;;;;;\n18C87;KHITAN SMALL SCRIPT CHARACTER-18C87;Lo;0;L;;;;;N;;;;;\n18C88;KHITAN SMALL SCRIPT CHARACTER-18C88;Lo;0;L;;;;;N;;;;;\n18C89;KHITAN SMALL SCRIPT CHARACTER-18C89;Lo;0;L;;;;;N;;;;;\n18C8A;KHITAN SMALL SCRIPT CHARACTER-18C8A;Lo;0;L;;;;;N;;;;;\n18C8B;KHITAN SMALL SCRIPT CHARACTER-18C8B;Lo;0;L;;;;;N;;;;;\n18C8C;KHITAN SMALL SCRIPT CHARACTER-18C8C;Lo;0;L;;;;;N;;;;;\n18C8D;KHITAN SMALL SCRIPT CHARACTER-18C8D;Lo;0;L;;;;;N;;;;;\n18C8E;KHITAN SMALL SCRIPT CHARACTER-18C8E;Lo;0;L;;;;;N;;;;;\n18C8F;KHITAN SMALL SCRIPT CHARACTER-18C8F;Lo;0;L;;;;;N;;;;;\n18C90;KHITAN SMALL SCRIPT CHARACTER-18C90;Lo;0;L;;;;;N;;;;;\n18C91;KHITAN SMALL SCRIPT CHARACTER-18C91;Lo;0;L;;;;;N;;;;;\n18C92;KHITAN SMALL SCRIPT CHARACTER-18C92;Lo;0;L;;;;;N;;;;;\n18C93;KHITAN SMALL SCRIPT CHARACTER-18C93;Lo;0;L;;;;;N;;;;;\n18C94;KHITAN SMALL SCRIPT CHARACTER-18C94;Lo;0;L;;;;;N;;;;;\n18C95;KHITAN SMALL SCRIPT CHARACTER-18C95;Lo;0;L;;;;;N;;;;;\n18C96;KHITAN SMALL SCRIPT CHARACTER-18C96;Lo;0;L;;;;;N;;;;;\n18C97;KHITAN SMALL SCRIPT CHARACTER-18C97;Lo;0;L;;;;;N;;;;;\n18C98;KHITAN SMALL SCRIPT CHARACTER-18C98;Lo;0;L;;;;;N;;;;;\n18C99;KHITAN SMALL SCRIPT CHARACTER-18C99;Lo;0;L;;;;;N;;;;;\n18C9A;KHITAN SMALL SCRIPT CHARACTER-18C9A;Lo;0;L;;;;;N;;;;;\n18C9B;KHITAN SMALL SCRIPT CHARACTER-18C9B;Lo;0;L;;;;;N;;;;;\n18C9C;KHITAN SMALL SCRIPT CHARACTER-18C9C;Lo;0;L;;;;;N;;;;;\n18C9D;KHITAN SMALL SCRIPT CHARACTER-18C9D;Lo;0;L;;;;;N;;;;;\n18C9E;KHITAN SMALL SCRIPT CHARACTER-18C9E;Lo;0;L;;;;;N;;;;;\n18C9F;KHITAN SMALL SCRIPT CHARACTER-18C9F;Lo;0;L;;;;;N;;;;;\n18CA0;KHITAN SMALL SCRIPT CHARACTER-18CA0;Lo;0;L;;;;;N;;;;;\n18CA1;KHITAN SMALL SCRIPT CHARACTER-18CA1;Lo;0;L;;;;;N;;;;;\n18CA2;KHITAN SMALL SCRIPT CHARACTER-18CA2;Lo;0;L;;;;;N;;;;;\n18CA3;KHITAN SMALL SCRIPT CHARACTER-18CA3;Lo;0;L;;;;;N;;;;;\n18CA4;KHITAN SMALL SCRIPT CHARACTER-18CA4;Lo;0;L;;;;;N;;;;;\n18CA5;KHITAN SMALL SCRIPT CHARACTER-18CA5;Lo;0;L;;;;;N;;;;;\n18CA6;KHITAN SMALL SCRIPT CHARACTER-18CA6;Lo;0;L;;;;;N;;;;;\n18CA7;KHITAN SMALL SCRIPT CHARACTER-18CA7;Lo;0;L;;;;;N;;;;;\n18CA8;KHITAN SMALL SCRIPT CHARACTER-18CA8;Lo;0;L;;;;;N;;;;;\n18CA9;KHITAN SMALL SCRIPT CHARACTER-18CA9;Lo;0;L;;;;;N;;;;;\n18CAA;KHITAN SMALL SCRIPT CHARACTER-18CAA;Lo;0;L;;;;;N;;;;;\n18CAB;KHITAN SMALL SCRIPT CHARACTER-18CAB;Lo;0;L;;;;;N;;;;;\n18CAC;KHITAN SMALL SCRIPT CHARACTER-18CAC;Lo;0;L;;;;;N;;;;;\n18CAD;KHITAN SMALL SCRIPT CHARACTER-18CAD;Lo;0;L;;;;;N;;;;;\n18CAE;KHITAN SMALL SCRIPT CHARACTER-18CAE;Lo;0;L;;;;;N;;;;;\n18CAF;KHITAN SMALL SCRIPT CHARACTER-18CAF;Lo;0;L;;;;;N;;;;;\n18CB0;KHITAN SMALL SCRIPT CHARACTER-18CB0;Lo;0;L;;;;;N;;;;;\n18CB1;KHITAN SMALL SCRIPT CHARACTER-18CB1;Lo;0;L;;;;;N;;;;;\n18CB2;KHITAN SMALL SCRIPT CHARACTER-18CB2;Lo;0;L;;;;;N;;;;;\n18CB3;KHITAN SMALL SCRIPT CHARACTER-18CB3;Lo;0;L;;;;;N;;;;;\n18CB4;KHITAN SMALL SCRIPT CHARACTER-18CB4;Lo;0;L;;;;;N;;;;;\n18CB5;KHITAN SMALL SCRIPT CHARACTER-18CB5;Lo;0;L;;;;;N;;;;;\n18CB6;KHITAN SMALL SCRIPT CHARACTER-18CB6;Lo;0;L;;;;;N;;;;;\n18CB7;KHITAN SMALL SCRIPT CHARACTER-18CB7;Lo;0;L;;;;;N;;;;;\n18CB8;KHITAN SMALL SCRIPT CHARACTER-18CB8;Lo;0;L;;;;;N;;;;;\n18CB9;KHITAN SMALL SCRIPT CHARACTER-18CB9;Lo;0;L;;;;;N;;;;;\n18CBA;KHITAN SMALL SCRIPT CHARACTER-18CBA;Lo;0;L;;;;;N;;;;;\n18CBB;KHITAN SMALL SCRIPT CHARACTER-18CBB;Lo;0;L;;;;;N;;;;;\n18CBC;KHITAN SMALL SCRIPT CHARACTER-18CBC;Lo;0;L;;;;;N;;;;;\n18CBD;KHITAN SMALL SCRIPT CHARACTER-18CBD;Lo;0;L;;;;;N;;;;;\n18CBE;KHITAN SMALL SCRIPT CHARACTER-18CBE;Lo;0;L;;;;;N;;;;;\n18CBF;KHITAN SMALL SCRIPT CHARACTER-18CBF;Lo;0;L;;;;;N;;;;;\n18CC0;KHITAN SMALL SCRIPT CHARACTER-18CC0;Lo;0;L;;;;;N;;;;;\n18CC1;KHITAN SMALL SCRIPT CHARACTER-18CC1;Lo;0;L;;;;;N;;;;;\n18CC2;KHITAN SMALL SCRIPT CHARACTER-18CC2;Lo;0;L;;;;;N;;;;;\n18CC3;KHITAN SMALL SCRIPT CHARACTER-18CC3;Lo;0;L;;;;;N;;;;;\n18CC4;KHITAN SMALL SCRIPT CHARACTER-18CC4;Lo;0;L;;;;;N;;;;;\n18CC5;KHITAN SMALL SCRIPT CHARACTER-18CC5;Lo;0;L;;;;;N;;;;;\n18CC6;KHITAN SMALL SCRIPT CHARACTER-18CC6;Lo;0;L;;;;;N;;;;;\n18CC7;KHITAN SMALL SCRIPT CHARACTER-18CC7;Lo;0;L;;;;;N;;;;;\n18CC8;KHITAN SMALL SCRIPT CHARACTER-18CC8;Lo;0;L;;;;;N;;;;;\n18CC9;KHITAN SMALL SCRIPT CHARACTER-18CC9;Lo;0;L;;;;;N;;;;;\n18CCA;KHITAN SMALL SCRIPT CHARACTER-18CCA;Lo;0;L;;;;;N;;;;;\n18CCB;KHITAN SMALL SCRIPT CHARACTER-18CCB;Lo;0;L;;;;;N;;;;;\n18CCC;KHITAN SMALL SCRIPT CHARACTER-18CCC;Lo;0;L;;;;;N;;;;;\n18CCD;KHITAN SMALL SCRIPT CHARACTER-18CCD;Lo;0;L;;;;;N;;;;;\n18CCE;KHITAN SMALL SCRIPT CHARACTER-18CCE;Lo;0;L;;;;;N;;;;;\n18CCF;KHITAN SMALL SCRIPT CHARACTER-18CCF;Lo;0;L;;;;;N;;;;;\n18CD0;KHITAN SMALL SCRIPT CHARACTER-18CD0;Lo;0;L;;;;;N;;;;;\n18CD1;KHITAN SMALL SCRIPT CHARACTER-18CD1;Lo;0;L;;;;;N;;;;;\n18CD2;KHITAN SMALL SCRIPT CHARACTER-18CD2;Lo;0;L;;;;;N;;;;;\n18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;;\n18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;;\n18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;\n18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;\n18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;\n1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;;\n1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;\n1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;;\n1B003;HENTAIGANA LETTER A-2;Lo;0;L;;;;;N;;;;;\n1B004;HENTAIGANA LETTER A-3;Lo;0;L;;;;;N;;;;;\n1B005;HENTAIGANA LETTER A-WO;Lo;0;L;;;;;N;;;;;\n1B006;HENTAIGANA LETTER I-1;Lo;0;L;;;;;N;;;;;\n1B007;HENTAIGANA LETTER I-2;Lo;0;L;;;;;N;;;;;\n1B008;HENTAIGANA LETTER I-3;Lo;0;L;;;;;N;;;;;\n1B009;HENTAIGANA LETTER I-4;Lo;0;L;;;;;N;;;;;\n1B00A;HENTAIGANA LETTER U-1;Lo;0;L;;;;;N;;;;;\n1B00B;HENTAIGANA LETTER U-2;Lo;0;L;;;;;N;;;;;\n1B00C;HENTAIGANA LETTER U-3;Lo;0;L;;;;;N;;;;;\n1B00D;HENTAIGANA LETTER U-4;Lo;0;L;;;;;N;;;;;\n1B00E;HENTAIGANA LETTER U-5;Lo;0;L;;;;;N;;;;;\n1B00F;HENTAIGANA LETTER E-2;Lo;0;L;;;;;N;;;;;\n1B010;HENTAIGANA LETTER E-3;Lo;0;L;;;;;N;;;;;\n1B011;HENTAIGANA LETTER E-4;Lo;0;L;;;;;N;;;;;\n1B012;HENTAIGANA LETTER E-5;Lo;0;L;;;;;N;;;;;\n1B013;HENTAIGANA LETTER E-6;Lo;0;L;;;;;N;;;;;\n1B014;HENTAIGANA LETTER O-1;Lo;0;L;;;;;N;;;;;\n1B015;HENTAIGANA LETTER O-2;Lo;0;L;;;;;N;;;;;\n1B016;HENTAIGANA LETTER O-3;Lo;0;L;;;;;N;;;;;\n1B017;HENTAIGANA LETTER KA-1;Lo;0;L;;;;;N;;;;;\n1B018;HENTAIGANA LETTER KA-2;Lo;0;L;;;;;N;;;;;\n1B019;HENTAIGANA LETTER KA-3;Lo;0;L;;;;;N;;;;;\n1B01A;HENTAIGANA LETTER KA-4;Lo;0;L;;;;;N;;;;;\n1B01B;HENTAIGANA LETTER KA-5;Lo;0;L;;;;;N;;;;;\n1B01C;HENTAIGANA LETTER KA-6;Lo;0;L;;;;;N;;;;;\n1B01D;HENTAIGANA LETTER KA-7;Lo;0;L;;;;;N;;;;;\n1B01E;HENTAIGANA LETTER KA-8;Lo;0;L;;;;;N;;;;;\n1B01F;HENTAIGANA LETTER KA-9;Lo;0;L;;;;;N;;;;;\n1B020;HENTAIGANA LETTER KA-10;Lo;0;L;;;;;N;;;;;\n1B021;HENTAIGANA LETTER KA-11;Lo;0;L;;;;;N;;;;;\n1B022;HENTAIGANA LETTER KA-KE;Lo;0;L;;;;;N;;;;;\n1B023;HENTAIGANA LETTER KI-1;Lo;0;L;;;;;N;;;;;\n1B024;HENTAIGANA LETTER KI-2;Lo;0;L;;;;;N;;;;;\n1B025;HENTAIGANA LETTER KI-3;Lo;0;L;;;;;N;;;;;\n1B026;HENTAIGANA LETTER KI-4;Lo;0;L;;;;;N;;;;;\n1B027;HENTAIGANA LETTER KI-5;Lo;0;L;;;;;N;;;;;\n1B028;HENTAIGANA LETTER KI-6;Lo;0;L;;;;;N;;;;;\n1B029;HENTAIGANA LETTER KI-7;Lo;0;L;;;;;N;;;;;\n1B02A;HENTAIGANA LETTER KI-8;Lo;0;L;;;;;N;;;;;\n1B02B;HENTAIGANA LETTER KU-1;Lo;0;L;;;;;N;;;;;\n1B02C;HENTAIGANA LETTER KU-2;Lo;0;L;;;;;N;;;;;\n1B02D;HENTAIGANA LETTER KU-3;Lo;0;L;;;;;N;;;;;\n1B02E;HENTAIGANA LETTER KU-4;Lo;0;L;;;;;N;;;;;\n1B02F;HENTAIGANA LETTER KU-5;Lo;0;L;;;;;N;;;;;\n1B030;HENTAIGANA LETTER KU-6;Lo;0;L;;;;;N;;;;;\n1B031;HENTAIGANA LETTER KU-7;Lo;0;L;;;;;N;;;;;\n1B032;HENTAIGANA LETTER KE-1;Lo;0;L;;;;;N;;;;;\n1B033;HENTAIGANA LETTER KE-2;Lo;0;L;;;;;N;;;;;\n1B034;HENTAIGANA LETTER KE-3;Lo;0;L;;;;;N;;;;;\n1B035;HENTAIGANA LETTER KE-4;Lo;0;L;;;;;N;;;;;\n1B036;HENTAIGANA LETTER KE-5;Lo;0;L;;;;;N;;;;;\n1B037;HENTAIGANA LETTER KE-6;Lo;0;L;;;;;N;;;;;\n1B038;HENTAIGANA LETTER KO-1;Lo;0;L;;;;;N;;;;;\n1B039;HENTAIGANA LETTER KO-2;Lo;0;L;;;;;N;;;;;\n1B03A;HENTAIGANA LETTER KO-3;Lo;0;L;;;;;N;;;;;\n1B03B;HENTAIGANA LETTER KO-KI;Lo;0;L;;;;;N;;;;;\n1B03C;HENTAIGANA LETTER SA-1;Lo;0;L;;;;;N;;;;;\n1B03D;HENTAIGANA LETTER SA-2;Lo;0;L;;;;;N;;;;;\n1B03E;HENTAIGANA LETTER SA-3;Lo;0;L;;;;;N;;;;;\n1B03F;HENTAIGANA LETTER SA-4;Lo;0;L;;;;;N;;;;;\n1B040;HENTAIGANA LETTER SA-5;Lo;0;L;;;;;N;;;;;\n1B041;HENTAIGANA LETTER SA-6;Lo;0;L;;;;;N;;;;;\n1B042;HENTAIGANA LETTER SA-7;Lo;0;L;;;;;N;;;;;\n1B043;HENTAIGANA LETTER SA-8;Lo;0;L;;;;;N;;;;;\n1B044;HENTAIGANA LETTER SI-1;Lo;0;L;;;;;N;;;;;\n1B045;HENTAIGANA LETTER SI-2;Lo;0;L;;;;;N;;;;;\n1B046;HENTAIGANA LETTER SI-3;Lo;0;L;;;;;N;;;;;\n1B047;HENTAIGANA LETTER SI-4;Lo;0;L;;;;;N;;;;;\n1B048;HENTAIGANA LETTER SI-5;Lo;0;L;;;;;N;;;;;\n1B049;HENTAIGANA LETTER SI-6;Lo;0;L;;;;;N;;;;;\n1B04A;HENTAIGANA LETTER SU-1;Lo;0;L;;;;;N;;;;;\n1B04B;HENTAIGANA LETTER SU-2;Lo;0;L;;;;;N;;;;;\n1B04C;HENTAIGANA LETTER SU-3;Lo;0;L;;;;;N;;;;;\n1B04D;HENTAIGANA LETTER SU-4;Lo;0;L;;;;;N;;;;;\n1B04E;HENTAIGANA LETTER SU-5;Lo;0;L;;;;;N;;;;;\n1B04F;HENTAIGANA LETTER SU-6;Lo;0;L;;;;;N;;;;;\n1B050;HENTAIGANA LETTER SU-7;Lo;0;L;;;;;N;;;;;\n1B051;HENTAIGANA LETTER SU-8;Lo;0;L;;;;;N;;;;;\n1B052;HENTAIGANA LETTER SE-1;Lo;0;L;;;;;N;;;;;\n1B053;HENTAIGANA LETTER SE-2;Lo;0;L;;;;;N;;;;;\n1B054;HENTAIGANA LETTER SE-3;Lo;0;L;;;;;N;;;;;\n1B055;HENTAIGANA LETTER SE-4;Lo;0;L;;;;;N;;;;;\n1B056;HENTAIGANA LETTER SE-5;Lo;0;L;;;;;N;;;;;\n1B057;HENTAIGANA LETTER SO-1;Lo;0;L;;;;;N;;;;;\n1B058;HENTAIGANA LETTER SO-2;Lo;0;L;;;;;N;;;;;\n1B059;HENTAIGANA LETTER SO-3;Lo;0;L;;;;;N;;;;;\n1B05A;HENTAIGANA LETTER SO-4;Lo;0;L;;;;;N;;;;;\n1B05B;HENTAIGANA LETTER SO-5;Lo;0;L;;;;;N;;;;;\n1B05C;HENTAIGANA LETTER SO-6;Lo;0;L;;;;;N;;;;;\n1B05D;HENTAIGANA LETTER SO-7;Lo;0;L;;;;;N;;;;;\n1B05E;HENTAIGANA LETTER TA-1;Lo;0;L;;;;;N;;;;;\n1B05F;HENTAIGANA LETTER TA-2;Lo;0;L;;;;;N;;;;;\n1B060;HENTAIGANA LETTER TA-3;Lo;0;L;;;;;N;;;;;\n1B061;HENTAIGANA LETTER TA-4;Lo;0;L;;;;;N;;;;;\n1B062;HENTAIGANA LETTER TI-1;Lo;0;L;;;;;N;;;;;\n1B063;HENTAIGANA LETTER TI-2;Lo;0;L;;;;;N;;;;;\n1B064;HENTAIGANA LETTER TI-3;Lo;0;L;;;;;N;;;;;\n1B065;HENTAIGANA LETTER TI-4;Lo;0;L;;;;;N;;;;;\n1B066;HENTAIGANA LETTER TI-5;Lo;0;L;;;;;N;;;;;\n1B067;HENTAIGANA LETTER TI-6;Lo;0;L;;;;;N;;;;;\n1B068;HENTAIGANA LETTER TI-7;Lo;0;L;;;;;N;;;;;\n1B069;HENTAIGANA LETTER TU-1;Lo;0;L;;;;;N;;;;;\n1B06A;HENTAIGANA LETTER TU-2;Lo;0;L;;;;;N;;;;;\n1B06B;HENTAIGANA LETTER TU-3;Lo;0;L;;;;;N;;;;;\n1B06C;HENTAIGANA LETTER TU-4;Lo;0;L;;;;;N;;;;;\n1B06D;HENTAIGANA LETTER TU-TO;Lo;0;L;;;;;N;;;;;\n1B06E;HENTAIGANA LETTER TE-1;Lo;0;L;;;;;N;;;;;\n1B06F;HENTAIGANA LETTER TE-2;Lo;0;L;;;;;N;;;;;\n1B070;HENTAIGANA LETTER TE-3;Lo;0;L;;;;;N;;;;;\n1B071;HENTAIGANA LETTER TE-4;Lo;0;L;;;;;N;;;;;\n1B072;HENTAIGANA LETTER TE-5;Lo;0;L;;;;;N;;;;;\n1B073;HENTAIGANA LETTER TE-6;Lo;0;L;;;;;N;;;;;\n1B074;HENTAIGANA LETTER TE-7;Lo;0;L;;;;;N;;;;;\n1B075;HENTAIGANA LETTER TE-8;Lo;0;L;;;;;N;;;;;\n1B076;HENTAIGANA LETTER TE-9;Lo;0;L;;;;;N;;;;;\n1B077;HENTAIGANA LETTER TO-1;Lo;0;L;;;;;N;;;;;\n1B078;HENTAIGANA LETTER TO-2;Lo;0;L;;;;;N;;;;;\n1B079;HENTAIGANA LETTER TO-3;Lo;0;L;;;;;N;;;;;\n1B07A;HENTAIGANA LETTER TO-4;Lo;0;L;;;;;N;;;;;\n1B07B;HENTAIGANA LETTER TO-5;Lo;0;L;;;;;N;;;;;\n1B07C;HENTAIGANA LETTER TO-6;Lo;0;L;;;;;N;;;;;\n1B07D;HENTAIGANA LETTER TO-RA;Lo;0;L;;;;;N;;;;;\n1B07E;HENTAIGANA LETTER NA-1;Lo;0;L;;;;;N;;;;;\n1B07F;HENTAIGANA LETTER NA-2;Lo;0;L;;;;;N;;;;;\n1B080;HENTAIGANA LETTER NA-3;Lo;0;L;;;;;N;;;;;\n1B081;HENTAIGANA LETTER NA-4;Lo;0;L;;;;;N;;;;;\n1B082;HENTAIGANA LETTER NA-5;Lo;0;L;;;;;N;;;;;\n1B083;HENTAIGANA LETTER NA-6;Lo;0;L;;;;;N;;;;;\n1B084;HENTAIGANA LETTER NA-7;Lo;0;L;;;;;N;;;;;\n1B085;HENTAIGANA LETTER NA-8;Lo;0;L;;;;;N;;;;;\n1B086;HENTAIGANA LETTER NA-9;Lo;0;L;;;;;N;;;;;\n1B087;HENTAIGANA LETTER NI-1;Lo;0;L;;;;;N;;;;;\n1B088;HENTAIGANA LETTER NI-2;Lo;0;L;;;;;N;;;;;\n1B089;HENTAIGANA LETTER NI-3;Lo;0;L;;;;;N;;;;;\n1B08A;HENTAIGANA LETTER NI-4;Lo;0;L;;;;;N;;;;;\n1B08B;HENTAIGANA LETTER NI-5;Lo;0;L;;;;;N;;;;;\n1B08C;HENTAIGANA LETTER NI-6;Lo;0;L;;;;;N;;;;;\n1B08D;HENTAIGANA LETTER NI-7;Lo;0;L;;;;;N;;;;;\n1B08E;HENTAIGANA LETTER NI-TE;Lo;0;L;;;;;N;;;;;\n1B08F;HENTAIGANA LETTER NU-1;Lo;0;L;;;;;N;;;;;\n1B090;HENTAIGANA LETTER NU-2;Lo;0;L;;;;;N;;;;;\n1B091;HENTAIGANA LETTER NU-3;Lo;0;L;;;;;N;;;;;\n1B092;HENTAIGANA LETTER NE-1;Lo;0;L;;;;;N;;;;;\n1B093;HENTAIGANA LETTER NE-2;Lo;0;L;;;;;N;;;;;\n1B094;HENTAIGANA LETTER NE-3;Lo;0;L;;;;;N;;;;;\n1B095;HENTAIGANA LETTER NE-4;Lo;0;L;;;;;N;;;;;\n1B096;HENTAIGANA LETTER NE-5;Lo;0;L;;;;;N;;;;;\n1B097;HENTAIGANA LETTER NE-6;Lo;0;L;;;;;N;;;;;\n1B098;HENTAIGANA LETTER NE-KO;Lo;0;L;;;;;N;;;;;\n1B099;HENTAIGANA LETTER NO-1;Lo;0;L;;;;;N;;;;;\n1B09A;HENTAIGANA LETTER NO-2;Lo;0;L;;;;;N;;;;;\n1B09B;HENTAIGANA LETTER NO-3;Lo;0;L;;;;;N;;;;;\n1B09C;HENTAIGANA LETTER NO-4;Lo;0;L;;;;;N;;;;;\n1B09D;HENTAIGANA LETTER NO-5;Lo;0;L;;;;;N;;;;;\n1B09E;HENTAIGANA LETTER HA-1;Lo;0;L;;;;;N;;;;;\n1B09F;HENTAIGANA LETTER HA-2;Lo;0;L;;;;;N;;;;;\n1B0A0;HENTAIGANA LETTER HA-3;Lo;0;L;;;;;N;;;;;\n1B0A1;HENTAIGANA LETTER HA-4;Lo;0;L;;;;;N;;;;;\n1B0A2;HENTAIGANA LETTER HA-5;Lo;0;L;;;;;N;;;;;\n1B0A3;HENTAIGANA LETTER HA-6;Lo;0;L;;;;;N;;;;;\n1B0A4;HENTAIGANA LETTER HA-7;Lo;0;L;;;;;N;;;;;\n1B0A5;HENTAIGANA LETTER HA-8;Lo;0;L;;;;;N;;;;;\n1B0A6;HENTAIGANA LETTER HA-9;Lo;0;L;;;;;N;;;;;\n1B0A7;HENTAIGANA LETTER HA-10;Lo;0;L;;;;;N;;;;;\n1B0A8;HENTAIGANA LETTER HA-11;Lo;0;L;;;;;N;;;;;\n1B0A9;HENTAIGANA LETTER HI-1;Lo;0;L;;;;;N;;;;;\n1B0AA;HENTAIGANA LETTER HI-2;Lo;0;L;;;;;N;;;;;\n1B0AB;HENTAIGANA LETTER HI-3;Lo;0;L;;;;;N;;;;;\n1B0AC;HENTAIGANA LETTER HI-4;Lo;0;L;;;;;N;;;;;\n1B0AD;HENTAIGANA LETTER HI-5;Lo;0;L;;;;;N;;;;;\n1B0AE;HENTAIGANA LETTER HI-6;Lo;0;L;;;;;N;;;;;\n1B0AF;HENTAIGANA LETTER HI-7;Lo;0;L;;;;;N;;;;;\n1B0B0;HENTAIGANA LETTER HU-1;Lo;0;L;;;;;N;;;;;\n1B0B1;HENTAIGANA LETTER HU-2;Lo;0;L;;;;;N;;;;;\n1B0B2;HENTAIGANA LETTER HU-3;Lo;0;L;;;;;N;;;;;\n1B0B3;HENTAIGANA LETTER HE-1;Lo;0;L;;;;;N;;;;;\n1B0B4;HENTAIGANA LETTER HE-2;Lo;0;L;;;;;N;;;;;\n1B0B5;HENTAIGANA LETTER HE-3;Lo;0;L;;;;;N;;;;;\n1B0B6;HENTAIGANA LETTER HE-4;Lo;0;L;;;;;N;;;;;\n1B0B7;HENTAIGANA LETTER HE-5;Lo;0;L;;;;;N;;;;;\n1B0B8;HENTAIGANA LETTER HE-6;Lo;0;L;;;;;N;;;;;\n1B0B9;HENTAIGANA LETTER HE-7;Lo;0;L;;;;;N;;;;;\n1B0BA;HENTAIGANA LETTER HO-1;Lo;0;L;;;;;N;;;;;\n1B0BB;HENTAIGANA LETTER HO-2;Lo;0;L;;;;;N;;;;;\n1B0BC;HENTAIGANA LETTER HO-3;Lo;0;L;;;;;N;;;;;\n1B0BD;HENTAIGANA LETTER HO-4;Lo;0;L;;;;;N;;;;;\n1B0BE;HENTAIGANA LETTER HO-5;Lo;0;L;;;;;N;;;;;\n1B0BF;HENTAIGANA LETTER HO-6;Lo;0;L;;;;;N;;;;;\n1B0C0;HENTAIGANA LETTER HO-7;Lo;0;L;;;;;N;;;;;\n1B0C1;HENTAIGANA LETTER HO-8;Lo;0;L;;;;;N;;;;;\n1B0C2;HENTAIGANA LETTER MA-1;Lo;0;L;;;;;N;;;;;\n1B0C3;HENTAIGANA LETTER MA-2;Lo;0;L;;;;;N;;;;;\n1B0C4;HENTAIGANA LETTER MA-3;Lo;0;L;;;;;N;;;;;\n1B0C5;HENTAIGANA LETTER MA-4;Lo;0;L;;;;;N;;;;;\n1B0C6;HENTAIGANA LETTER MA-5;Lo;0;L;;;;;N;;;;;\n1B0C7;HENTAIGANA LETTER MA-6;Lo;0;L;;;;;N;;;;;\n1B0C8;HENTAIGANA LETTER MA-7;Lo;0;L;;;;;N;;;;;\n1B0C9;HENTAIGANA LETTER MI-1;Lo;0;L;;;;;N;;;;;\n1B0CA;HENTAIGANA LETTER MI-2;Lo;0;L;;;;;N;;;;;\n1B0CB;HENTAIGANA LETTER MI-3;Lo;0;L;;;;;N;;;;;\n1B0CC;HENTAIGANA LETTER MI-4;Lo;0;L;;;;;N;;;;;\n1B0CD;HENTAIGANA LETTER MI-5;Lo;0;L;;;;;N;;;;;\n1B0CE;HENTAIGANA LETTER MI-6;Lo;0;L;;;;;N;;;;;\n1B0CF;HENTAIGANA LETTER MI-7;Lo;0;L;;;;;N;;;;;\n1B0D0;HENTAIGANA LETTER MU-1;Lo;0;L;;;;;N;;;;;\n1B0D1;HENTAIGANA LETTER MU-2;Lo;0;L;;;;;N;;;;;\n1B0D2;HENTAIGANA LETTER MU-3;Lo;0;L;;;;;N;;;;;\n1B0D3;HENTAIGANA LETTER MU-4;Lo;0;L;;;;;N;;;;;\n1B0D4;HENTAIGANA LETTER ME-1;Lo;0;L;;;;;N;;;;;\n1B0D5;HENTAIGANA LETTER ME-2;Lo;0;L;;;;;N;;;;;\n1B0D6;HENTAIGANA LETTER ME-MA;Lo;0;L;;;;;N;;;;;\n1B0D7;HENTAIGANA LETTER MO-1;Lo;0;L;;;;;N;;;;;\n1B0D8;HENTAIGANA LETTER MO-2;Lo;0;L;;;;;N;;;;;\n1B0D9;HENTAIGANA LETTER MO-3;Lo;0;L;;;;;N;;;;;\n1B0DA;HENTAIGANA LETTER MO-4;Lo;0;L;;;;;N;;;;;\n1B0DB;HENTAIGANA LETTER MO-5;Lo;0;L;;;;;N;;;;;\n1B0DC;HENTAIGANA LETTER MO-6;Lo;0;L;;;;;N;;;;;\n1B0DD;HENTAIGANA LETTER YA-1;Lo;0;L;;;;;N;;;;;\n1B0DE;HENTAIGANA LETTER YA-2;Lo;0;L;;;;;N;;;;;\n1B0DF;HENTAIGANA LETTER YA-3;Lo;0;L;;;;;N;;;;;\n1B0E0;HENTAIGANA LETTER YA-4;Lo;0;L;;;;;N;;;;;\n1B0E1;HENTAIGANA LETTER YA-5;Lo;0;L;;;;;N;;;;;\n1B0E2;HENTAIGANA LETTER YA-YO;Lo;0;L;;;;;N;;;;;\n1B0E3;HENTAIGANA LETTER YU-1;Lo;0;L;;;;;N;;;;;\n1B0E4;HENTAIGANA LETTER YU-2;Lo;0;L;;;;;N;;;;;\n1B0E5;HENTAIGANA LETTER YU-3;Lo;0;L;;;;;N;;;;;\n1B0E6;HENTAIGANA LETTER YU-4;Lo;0;L;;;;;N;;;;;\n1B0E7;HENTAIGANA LETTER YO-1;Lo;0;L;;;;;N;;;;;\n1B0E8;HENTAIGANA LETTER YO-2;Lo;0;L;;;;;N;;;;;\n1B0E9;HENTAIGANA LETTER YO-3;Lo;0;L;;;;;N;;;;;\n1B0EA;HENTAIGANA LETTER YO-4;Lo;0;L;;;;;N;;;;;\n1B0EB;HENTAIGANA LETTER YO-5;Lo;0;L;;;;;N;;;;;\n1B0EC;HENTAIGANA LETTER YO-6;Lo;0;L;;;;;N;;;;;\n1B0ED;HENTAIGANA LETTER RA-1;Lo;0;L;;;;;N;;;;;\n1B0EE;HENTAIGANA LETTER RA-2;Lo;0;L;;;;;N;;;;;\n1B0EF;HENTAIGANA LETTER RA-3;Lo;0;L;;;;;N;;;;;\n1B0F0;HENTAIGANA LETTER RA-4;Lo;0;L;;;;;N;;;;;\n1B0F1;HENTAIGANA LETTER RI-1;Lo;0;L;;;;;N;;;;;\n1B0F2;HENTAIGANA LETTER RI-2;Lo;0;L;;;;;N;;;;;\n1B0F3;HENTAIGANA LETTER RI-3;Lo;0;L;;;;;N;;;;;\n1B0F4;HENTAIGANA LETTER RI-4;Lo;0;L;;;;;N;;;;;\n1B0F5;HENTAIGANA LETTER RI-5;Lo;0;L;;;;;N;;;;;\n1B0F6;HENTAIGANA LETTER RI-6;Lo;0;L;;;;;N;;;;;\n1B0F7;HENTAIGANA LETTER RI-7;Lo;0;L;;;;;N;;;;;\n1B0F8;HENTAIGANA LETTER RU-1;Lo;0;L;;;;;N;;;;;\n1B0F9;HENTAIGANA LETTER RU-2;Lo;0;L;;;;;N;;;;;\n1B0FA;HENTAIGANA LETTER RU-3;Lo;0;L;;;;;N;;;;;\n1B0FB;HENTAIGANA LETTER RU-4;Lo;0;L;;;;;N;;;;;\n1B0FC;HENTAIGANA LETTER RU-5;Lo;0;L;;;;;N;;;;;\n1B0FD;HENTAIGANA LETTER RU-6;Lo;0;L;;;;;N;;;;;\n1B0FE;HENTAIGANA LETTER RE-1;Lo;0;L;;;;;N;;;;;\n1B0FF;HENTAIGANA LETTER RE-2;Lo;0;L;;;;;N;;;;;\n1B100;HENTAIGANA LETTER RE-3;Lo;0;L;;;;;N;;;;;\n1B101;HENTAIGANA LETTER RE-4;Lo;0;L;;;;;N;;;;;\n1B102;HENTAIGANA LETTER RO-1;Lo;0;L;;;;;N;;;;;\n1B103;HENTAIGANA LETTER RO-2;Lo;0;L;;;;;N;;;;;\n1B104;HENTAIGANA LETTER RO-3;Lo;0;L;;;;;N;;;;;\n1B105;HENTAIGANA LETTER RO-4;Lo;0;L;;;;;N;;;;;\n1B106;HENTAIGANA LETTER RO-5;Lo;0;L;;;;;N;;;;;\n1B107;HENTAIGANA LETTER RO-6;Lo;0;L;;;;;N;;;;;\n1B108;HENTAIGANA LETTER WA-1;Lo;0;L;;;;;N;;;;;\n1B109;HENTAIGANA LETTER WA-2;Lo;0;L;;;;;N;;;;;\n1B10A;HENTAIGANA LETTER WA-3;Lo;0;L;;;;;N;;;;;\n1B10B;HENTAIGANA LETTER WA-4;Lo;0;L;;;;;N;;;;;\n1B10C;HENTAIGANA LETTER WA-5;Lo;0;L;;;;;N;;;;;\n1B10D;HENTAIGANA LETTER WI-1;Lo;0;L;;;;;N;;;;;\n1B10E;HENTAIGANA LETTER WI-2;Lo;0;L;;;;;N;;;;;\n1B10F;HENTAIGANA LETTER WI-3;Lo;0;L;;;;;N;;;;;\n1B110;HENTAIGANA LETTER WI-4;Lo;0;L;;;;;N;;;;;\n1B111;HENTAIGANA LETTER WI-5;Lo;0;L;;;;;N;;;;;\n1B112;HENTAIGANA LETTER WE-1;Lo;0;L;;;;;N;;;;;\n1B113;HENTAIGANA LETTER WE-2;Lo;0;L;;;;;N;;;;;\n1B114;HENTAIGANA LETTER WE-3;Lo;0;L;;;;;N;;;;;\n1B115;HENTAIGANA LETTER WE-4;Lo;0;L;;;;;N;;;;;\n1B116;HENTAIGANA LETTER WO-1;Lo;0;L;;;;;N;;;;;\n1B117;HENTAIGANA LETTER WO-2;Lo;0;L;;;;;N;;;;;\n1B118;HENTAIGANA LETTER WO-3;Lo;0;L;;;;;N;;;;;\n1B119;HENTAIGANA LETTER WO-4;Lo;0;L;;;;;N;;;;;\n1B11A;HENTAIGANA LETTER WO-5;Lo;0;L;;;;;N;;;;;\n1B11B;HENTAIGANA LETTER WO-6;Lo;0;L;;;;;N;;;;;\n1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;;\n1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;;\n1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;;\n1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;\n1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;\n1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;\n1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;\n1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;\n1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;\n1B167;KATAKANA LETTER SMALL N;Lo;0;L;;;;;N;;;;;\n1B170;NUSHU CHARACTER-1B170;Lo;0;L;;;;;N;;;;;\n1B171;NUSHU CHARACTER-1B171;Lo;0;L;;;;;N;;;;;\n1B172;NUSHU CHARACTER-1B172;Lo;0;L;;;;;N;;;;;\n1B173;NUSHU CHARACTER-1B173;Lo;0;L;;;;;N;;;;;\n1B174;NUSHU CHARACTER-1B174;Lo;0;L;;;;;N;;;;;\n1B175;NUSHU CHARACTER-1B175;Lo;0;L;;;;;N;;;;;\n1B176;NUSHU CHARACTER-1B176;Lo;0;L;;;;;N;;;;;\n1B177;NUSHU CHARACTER-1B177;Lo;0;L;;;;;N;;;;;\n1B178;NUSHU CHARACTER-1B178;Lo;0;L;;;;;N;;;;;\n1B179;NUSHU CHARACTER-1B179;Lo;0;L;;;;;N;;;;;\n1B17A;NUSHU CHARACTER-1B17A;Lo;0;L;;;;;N;;;;;\n1B17B;NUSHU CHARACTER-1B17B;Lo;0;L;;;;;N;;;;;\n1B17C;NUSHU CHARACTER-1B17C;Lo;0;L;;;;;N;;;;;\n1B17D;NUSHU CHARACTER-1B17D;Lo;0;L;;;;;N;;;;;\n1B17E;NUSHU CHARACTER-1B17E;Lo;0;L;;;;;N;;;;;\n1B17F;NUSHU CHARACTER-1B17F;Lo;0;L;;;;;N;;;;;\n1B180;NUSHU CHARACTER-1B180;Lo;0;L;;;;;N;;;;;\n1B181;NUSHU CHARACTER-1B181;Lo;0;L;;;;;N;;;;;\n1B182;NUSHU CHARACTER-1B182;Lo;0;L;;;;;N;;;;;\n1B183;NUSHU CHARACTER-1B183;Lo;0;L;;;;;N;;;;;\n1B184;NUSHU CHARACTER-1B184;Lo;0;L;;;;;N;;;;;\n1B185;NUSHU CHARACTER-1B185;Lo;0;L;;;;;N;;;;;\n1B186;NUSHU CHARACTER-1B186;Lo;0;L;;;;;N;;;;;\n1B187;NUSHU CHARACTER-1B187;Lo;0;L;;;;;N;;;;;\n1B188;NUSHU CHARACTER-1B188;Lo;0;L;;;;;N;;;;;\n1B189;NUSHU CHARACTER-1B189;Lo;0;L;;;;;N;;;;;\n1B18A;NUSHU CHARACTER-1B18A;Lo;0;L;;;;;N;;;;;\n1B18B;NUSHU CHARACTER-1B18B;Lo;0;L;;;;;N;;;;;\n1B18C;NUSHU CHARACTER-1B18C;Lo;0;L;;;;;N;;;;;\n1B18D;NUSHU CHARACTER-1B18D;Lo;0;L;;;;;N;;;;;\n1B18E;NUSHU CHARACTER-1B18E;Lo;0;L;;;;;N;;;;;\n1B18F;NUSHU CHARACTER-1B18F;Lo;0;L;;;;;N;;;;;\n1B190;NUSHU CHARACTER-1B190;Lo;0;L;;;;;N;;;;;\n1B191;NUSHU CHARACTER-1B191;Lo;0;L;;;;;N;;;;;\n1B192;NUSHU CHARACTER-1B192;Lo;0;L;;;;;N;;;;;\n1B193;NUSHU CHARACTER-1B193;Lo;0;L;;;;;N;;;;;\n1B194;NUSHU CHARACTER-1B194;Lo;0;L;;;;;N;;;;;\n1B195;NUSHU CHARACTER-1B195;Lo;0;L;;;;;N;;;;;\n1B196;NUSHU CHARACTER-1B196;Lo;0;L;;;;;N;;;;;\n1B197;NUSHU CHARACTER-1B197;Lo;0;L;;;;;N;;;;;\n1B198;NUSHU CHARACTER-1B198;Lo;0;L;;;;;N;;;;;\n1B199;NUSHU CHARACTER-1B199;Lo;0;L;;;;;N;;;;;\n1B19A;NUSHU CHARACTER-1B19A;Lo;0;L;;;;;N;;;;;\n1B19B;NUSHU CHARACTER-1B19B;Lo;0;L;;;;;N;;;;;\n1B19C;NUSHU CHARACTER-1B19C;Lo;0;L;;;;;N;;;;;\n1B19D;NUSHU CHARACTER-1B19D;Lo;0;L;;;;;N;;;;;\n1B19E;NUSHU CHARACTER-1B19E;Lo;0;L;;;;;N;;;;;\n1B19F;NUSHU CHARACTER-1B19F;Lo;0;L;;;;;N;;;;;\n1B1A0;NUSHU CHARACTER-1B1A0;Lo;0;L;;;;;N;;;;;\n1B1A1;NUSHU CHARACTER-1B1A1;Lo;0;L;;;;;N;;;;;\n1B1A2;NUSHU CHARACTER-1B1A2;Lo;0;L;;;;;N;;;;;\n1B1A3;NUSHU CHARACTER-1B1A3;Lo;0;L;;;;;N;;;;;\n1B1A4;NUSHU CHARACTER-1B1A4;Lo;0;L;;;;;N;;;;;\n1B1A5;NUSHU CHARACTER-1B1A5;Lo;0;L;;;;;N;;;;;\n1B1A6;NUSHU CHARACTER-1B1A6;Lo;0;L;;;;;N;;;;;\n1B1A7;NUSHU CHARACTER-1B1A7;Lo;0;L;;;;;N;;;;;\n1B1A8;NUSHU CHARACTER-1B1A8;Lo;0;L;;;;;N;;;;;\n1B1A9;NUSHU CHARACTER-1B1A9;Lo;0;L;;;;;N;;;;;\n1B1AA;NUSHU CHARACTER-1B1AA;Lo;0;L;;;;;N;;;;;\n1B1AB;NUSHU CHARACTER-1B1AB;Lo;0;L;;;;;N;;;;;\n1B1AC;NUSHU CHARACTER-1B1AC;Lo;0;L;;;;;N;;;;;\n1B1AD;NUSHU CHARACTER-1B1AD;Lo;0;L;;;;;N;;;;;\n1B1AE;NUSHU CHARACTER-1B1AE;Lo;0;L;;;;;N;;;;;\n1B1AF;NUSHU CHARACTER-1B1AF;Lo;0;L;;;;;N;;;;;\n1B1B0;NUSHU CHARACTER-1B1B0;Lo;0;L;;;;;N;;;;;\n1B1B1;NUSHU CHARACTER-1B1B1;Lo;0;L;;;;;N;;;;;\n1B1B2;NUSHU CHARACTER-1B1B2;Lo;0;L;;;;;N;;;;;\n1B1B3;NUSHU CHARACTER-1B1B3;Lo;0;L;;;;;N;;;;;\n1B1B4;NUSHU CHARACTER-1B1B4;Lo;0;L;;;;;N;;;;;\n1B1B5;NUSHU CHARACTER-1B1B5;Lo;0;L;;;;;N;;;;;\n1B1B6;NUSHU CHARACTER-1B1B6;Lo;0;L;;;;;N;;;;;\n1B1B7;NUSHU CHARACTER-1B1B7;Lo;0;L;;;;;N;;;;;\n1B1B8;NUSHU CHARACTER-1B1B8;Lo;0;L;;;;;N;;;;;\n1B1B9;NUSHU CHARACTER-1B1B9;Lo;0;L;;;;;N;;;;;\n1B1BA;NUSHU CHARACTER-1B1BA;Lo;0;L;;;;;N;;;;;\n1B1BB;NUSHU CHARACTER-1B1BB;Lo;0;L;;;;;N;;;;;\n1B1BC;NUSHU CHARACTER-1B1BC;Lo;0;L;;;;;N;;;;;\n1B1BD;NUSHU CHARACTER-1B1BD;Lo;0;L;;;;;N;;;;;\n1B1BE;NUSHU CHARACTER-1B1BE;Lo;0;L;;;;;N;;;;;\n1B1BF;NUSHU CHARACTER-1B1BF;Lo;0;L;;;;;N;;;;;\n1B1C0;NUSHU CHARACTER-1B1C0;Lo;0;L;;;;;N;;;;;\n1B1C1;NUSHU CHARACTER-1B1C1;Lo;0;L;;;;;N;;;;;\n1B1C2;NUSHU CHARACTER-1B1C2;Lo;0;L;;;;;N;;;;;\n1B1C3;NUSHU CHARACTER-1B1C3;Lo;0;L;;;;;N;;;;;\n1B1C4;NUSHU CHARACTER-1B1C4;Lo;0;L;;;;;N;;;;;\n1B1C5;NUSHU CHARACTER-1B1C5;Lo;0;L;;;;;N;;;;;\n1B1C6;NUSHU CHARACTER-1B1C6;Lo;0;L;;;;;N;;;;;\n1B1C7;NUSHU CHARACTER-1B1C7;Lo;0;L;;;;;N;;;;;\n1B1C8;NUSHU CHARACTER-1B1C8;Lo;0;L;;;;;N;;;;;\n1B1C9;NUSHU CHARACTER-1B1C9;Lo;0;L;;;;;N;;;;;\n1B1CA;NUSHU CHARACTER-1B1CA;Lo;0;L;;;;;N;;;;;\n1B1CB;NUSHU CHARACTER-1B1CB;Lo;0;L;;;;;N;;;;;\n1B1CC;NUSHU CHARACTER-1B1CC;Lo;0;L;;;;;N;;;;;\n1B1CD;NUSHU CHARACTER-1B1CD;Lo;0;L;;;;;N;;;;;\n1B1CE;NUSHU CHARACTER-1B1CE;Lo;0;L;;;;;N;;;;;\n1B1CF;NUSHU CHARACTER-1B1CF;Lo;0;L;;;;;N;;;;;\n1B1D0;NUSHU CHARACTER-1B1D0;Lo;0;L;;;;;N;;;;;\n1B1D1;NUSHU CHARACTER-1B1D1;Lo;0;L;;;;;N;;;;;\n1B1D2;NUSHU CHARACTER-1B1D2;Lo;0;L;;;;;N;;;;;\n1B1D3;NUSHU CHARACTER-1B1D3;Lo;0;L;;;;;N;;;;;\n1B1D4;NUSHU CHARACTER-1B1D4;Lo;0;L;;;;;N;;;;;\n1B1D5;NUSHU CHARACTER-1B1D5;Lo;0;L;;;;;N;;;;;\n1B1D6;NUSHU CHARACTER-1B1D6;Lo;0;L;;;;;N;;;;;\n1B1D7;NUSHU CHARACTER-1B1D7;Lo;0;L;;;;;N;;;;;\n1B1D8;NUSHU CHARACTER-1B1D8;Lo;0;L;;;;;N;;;;;\n1B1D9;NUSHU CHARACTER-1B1D9;Lo;0;L;;;;;N;;;;;\n1B1DA;NUSHU CHARACTER-1B1DA;Lo;0;L;;;;;N;;;;;\n1B1DB;NUSHU CHARACTER-1B1DB;Lo;0;L;;;;;N;;;;;\n1B1DC;NUSHU CHARACTER-1B1DC;Lo;0;L;;;;;N;;;;;\n1B1DD;NUSHU CHARACTER-1B1DD;Lo;0;L;;;;;N;;;;;\n1B1DE;NUSHU CHARACTER-1B1DE;Lo;0;L;;;;;N;;;;;\n1B1DF;NUSHU CHARACTER-1B1DF;Lo;0;L;;;;;N;;;;;\n1B1E0;NUSHU CHARACTER-1B1E0;Lo;0;L;;;;;N;;;;;\n1B1E1;NUSHU CHARACTER-1B1E1;Lo;0;L;;;;;N;;;;;\n1B1E2;NUSHU CHARACTER-1B1E2;Lo;0;L;;;;;N;;;;;\n1B1E3;NUSHU CHARACTER-1B1E3;Lo;0;L;;;;;N;;;;;\n1B1E4;NUSHU CHARACTER-1B1E4;Lo;0;L;;;;;N;;;;;\n1B1E5;NUSHU CHARACTER-1B1E5;Lo;0;L;;;;;N;;;;;\n1B1E6;NUSHU CHARACTER-1B1E6;Lo;0;L;;;;;N;;;;;\n1B1E7;NUSHU CHARACTER-1B1E7;Lo;0;L;;;;;N;;;;;\n1B1E8;NUSHU CHARACTER-1B1E8;Lo;0;L;;;;;N;;;;;\n1B1E9;NUSHU CHARACTER-1B1E9;Lo;0;L;;;;;N;;;;;\n1B1EA;NUSHU CHARACTER-1B1EA;Lo;0;L;;;;;N;;;;;\n1B1EB;NUSHU CHARACTER-1B1EB;Lo;0;L;;;;;N;;;;;\n1B1EC;NUSHU CHARACTER-1B1EC;Lo;0;L;;;;;N;;;;;\n1B1ED;NUSHU CHARACTER-1B1ED;Lo;0;L;;;;;N;;;;;\n1B1EE;NUSHU CHARACTER-1B1EE;Lo;0;L;;;;;N;;;;;\n1B1EF;NUSHU CHARACTER-1B1EF;Lo;0;L;;;;;N;;;;;\n1B1F0;NUSHU CHARACTER-1B1F0;Lo;0;L;;;;;N;;;;;\n1B1F1;NUSHU CHARACTER-1B1F1;Lo;0;L;;;;;N;;;;;\n1B1F2;NUSHU CHARACTER-1B1F2;Lo;0;L;;;;;N;;;;;\n1B1F3;NUSHU CHARACTER-1B1F3;Lo;0;L;;;;;N;;;;;\n1B1F4;NUSHU CHARACTER-1B1F4;Lo;0;L;;;;;N;;;;;\n1B1F5;NUSHU CHARACTER-1B1F5;Lo;0;L;;;;;N;;;;;\n1B1F6;NUSHU CHARACTER-1B1F6;Lo;0;L;;;;;N;;;;;\n1B1F7;NUSHU CHARACTER-1B1F7;Lo;0;L;;;;;N;;;;;\n1B1F8;NUSHU CHARACTER-1B1F8;Lo;0;L;;;;;N;;;;;\n1B1F9;NUSHU CHARACTER-1B1F9;Lo;0;L;;;;;N;;;;;\n1B1FA;NUSHU CHARACTER-1B1FA;Lo;0;L;;;;;N;;;;;\n1B1FB;NUSHU CHARACTER-1B1FB;Lo;0;L;;;;;N;;;;;\n1B1FC;NUSHU CHARACTER-1B1FC;Lo;0;L;;;;;N;;;;;\n1B1FD;NUSHU CHARACTER-1B1FD;Lo;0;L;;;;;N;;;;;\n1B1FE;NUSHU CHARACTER-1B1FE;Lo;0;L;;;;;N;;;;;\n1B1FF;NUSHU CHARACTER-1B1FF;Lo;0;L;;;;;N;;;;;\n1B200;NUSHU CHARACTER-1B200;Lo;0;L;;;;;N;;;;;\n1B201;NUSHU CHARACTER-1B201;Lo;0;L;;;;;N;;;;;\n1B202;NUSHU CHARACTER-1B202;Lo;0;L;;;;;N;;;;;\n1B203;NUSHU CHARACTER-1B203;Lo;0;L;;;;;N;;;;;\n1B204;NUSHU CHARACTER-1B204;Lo;0;L;;;;;N;;;;;\n1B205;NUSHU CHARACTER-1B205;Lo;0;L;;;;;N;;;;;\n1B206;NUSHU CHARACTER-1B206;Lo;0;L;;;;;N;;;;;\n1B207;NUSHU CHARACTER-1B207;Lo;0;L;;;;;N;;;;;\n1B208;NUSHU CHARACTER-1B208;Lo;0;L;;;;;N;;;;;\n1B209;NUSHU CHARACTER-1B209;Lo;0;L;;;;;N;;;;;\n1B20A;NUSHU CHARACTER-1B20A;Lo;0;L;;;;;N;;;;;\n1B20B;NUSHU CHARACTER-1B20B;Lo;0;L;;;;;N;;;;;\n1B20C;NUSHU CHARACTER-1B20C;Lo;0;L;;;;;N;;;;;\n1B20D;NUSHU CHARACTER-1B20D;Lo;0;L;;;;;N;;;;;\n1B20E;NUSHU CHARACTER-1B20E;Lo;0;L;;;;;N;;;;;\n1B20F;NUSHU CHARACTER-1B20F;Lo;0;L;;;;;N;;;;;\n1B210;NUSHU CHARACTER-1B210;Lo;0;L;;;;;N;;;;;\n1B211;NUSHU CHARACTER-1B211;Lo;0;L;;;;;N;;;;;\n1B212;NUSHU CHARACTER-1B212;Lo;0;L;;;;;N;;;;;\n1B213;NUSHU CHARACTER-1B213;Lo;0;L;;;;;N;;;;;\n1B214;NUSHU CHARACTER-1B214;Lo;0;L;;;;;N;;;;;\n1B215;NUSHU CHARACTER-1B215;Lo;0;L;;;;;N;;;;;\n1B216;NUSHU CHARACTER-1B216;Lo;0;L;;;;;N;;;;;\n1B217;NUSHU CHARACTER-1B217;Lo;0;L;;;;;N;;;;;\n1B218;NUSHU CHARACTER-1B218;Lo;0;L;;;;;N;;;;;\n1B219;NUSHU CHARACTER-1B219;Lo;0;L;;;;;N;;;;;\n1B21A;NUSHU CHARACTER-1B21A;Lo;0;L;;;;;N;;;;;\n1B21B;NUSHU CHARACTER-1B21B;Lo;0;L;;;;;N;;;;;\n1B21C;NUSHU CHARACTER-1B21C;Lo;0;L;;;;;N;;;;;\n1B21D;NUSHU CHARACTER-1B21D;Lo;0;L;;;;;N;;;;;\n1B21E;NUSHU CHARACTER-1B21E;Lo;0;L;;;;;N;;;;;\n1B21F;NUSHU CHARACTER-1B21F;Lo;0;L;;;;;N;;;;;\n1B220;NUSHU CHARACTER-1B220;Lo;0;L;;;;;N;;;;;\n1B221;NUSHU CHARACTER-1B221;Lo;0;L;;;;;N;;;;;\n1B222;NUSHU CHARACTER-1B222;Lo;0;L;;;;;N;;;;;\n1B223;NUSHU CHARACTER-1B223;Lo;0;L;;;;;N;;;;;\n1B224;NUSHU CHARACTER-1B224;Lo;0;L;;;;;N;;;;;\n1B225;NUSHU CHARACTER-1B225;Lo;0;L;;;;;N;;;;;\n1B226;NUSHU CHARACTER-1B226;Lo;0;L;;;;;N;;;;;\n1B227;NUSHU CHARACTER-1B227;Lo;0;L;;;;;N;;;;;\n1B228;NUSHU CHARACTER-1B228;Lo;0;L;;;;;N;;;;;\n1B229;NUSHU CHARACTER-1B229;Lo;0;L;;;;;N;;;;;\n1B22A;NUSHU CHARACTER-1B22A;Lo;0;L;;;;;N;;;;;\n1B22B;NUSHU CHARACTER-1B22B;Lo;0;L;;;;;N;;;;;\n1B22C;NUSHU CHARACTER-1B22C;Lo;0;L;;;;;N;;;;;\n1B22D;NUSHU CHARACTER-1B22D;Lo;0;L;;;;;N;;;;;\n1B22E;NUSHU CHARACTER-1B22E;Lo;0;L;;;;;N;;;;;\n1B22F;NUSHU CHARACTER-1B22F;Lo;0;L;;;;;N;;;;;\n1B230;NUSHU CHARACTER-1B230;Lo;0;L;;;;;N;;;;;\n1B231;NUSHU CHARACTER-1B231;Lo;0;L;;;;;N;;;;;\n1B232;NUSHU CHARACTER-1B232;Lo;0;L;;;;;N;;;;;\n1B233;NUSHU CHARACTER-1B233;Lo;0;L;;;;;N;;;;;\n1B234;NUSHU CHARACTER-1B234;Lo;0;L;;;;;N;;;;;\n1B235;NUSHU CHARACTER-1B235;Lo;0;L;;;;;N;;;;;\n1B236;NUSHU CHARACTER-1B236;Lo;0;L;;;;;N;;;;;\n1B237;NUSHU CHARACTER-1B237;Lo;0;L;;;;;N;;;;;\n1B238;NUSHU CHARACTER-1B238;Lo;0;L;;;;;N;;;;;\n1B239;NUSHU CHARACTER-1B239;Lo;0;L;;;;;N;;;;;\n1B23A;NUSHU CHARACTER-1B23A;Lo;0;L;;;;;N;;;;;\n1B23B;NUSHU CHARACTER-1B23B;Lo;0;L;;;;;N;;;;;\n1B23C;NUSHU CHARACTER-1B23C;Lo;0;L;;;;;N;;;;;\n1B23D;NUSHU CHARACTER-1B23D;Lo;0;L;;;;;N;;;;;\n1B23E;NUSHU CHARACTER-1B23E;Lo;0;L;;;;;N;;;;;\n1B23F;NUSHU CHARACTER-1B23F;Lo;0;L;;;;;N;;;;;\n1B240;NUSHU CHARACTER-1B240;Lo;0;L;;;;;N;;;;;\n1B241;NUSHU CHARACTER-1B241;Lo;0;L;;;;;N;;;;;\n1B242;NUSHU CHARACTER-1B242;Lo;0;L;;;;;N;;;;;\n1B243;NUSHU CHARACTER-1B243;Lo;0;L;;;;;N;;;;;\n1B244;NUSHU CHARACTER-1B244;Lo;0;L;;;;;N;;;;;\n1B245;NUSHU CHARACTER-1B245;Lo;0;L;;;;;N;;;;;\n1B246;NUSHU CHARACTER-1B246;Lo;0;L;;;;;N;;;;;\n1B247;NUSHU CHARACTER-1B247;Lo;0;L;;;;;N;;;;;\n1B248;NUSHU CHARACTER-1B248;Lo;0;L;;;;;N;;;;;\n1B249;NUSHU CHARACTER-1B249;Lo;0;L;;;;;N;;;;;\n1B24A;NUSHU CHARACTER-1B24A;Lo;0;L;;;;;N;;;;;\n1B24B;NUSHU CHARACTER-1B24B;Lo;0;L;;;;;N;;;;;\n1B24C;NUSHU CHARACTER-1B24C;Lo;0;L;;;;;N;;;;;\n1B24D;NUSHU CHARACTER-1B24D;Lo;0;L;;;;;N;;;;;\n1B24E;NUSHU CHARACTER-1B24E;Lo;0;L;;;;;N;;;;;\n1B24F;NUSHU CHARACTER-1B24F;Lo;0;L;;;;;N;;;;;\n1B250;NUSHU CHARACTER-1B250;Lo;0;L;;;;;N;;;;;\n1B251;NUSHU CHARACTER-1B251;Lo;0;L;;;;;N;;;;;\n1B252;NUSHU CHARACTER-1B252;Lo;0;L;;;;;N;;;;;\n1B253;NUSHU CHARACTER-1B253;Lo;0;L;;;;;N;;;;;\n1B254;NUSHU CHARACTER-1B254;Lo;0;L;;;;;N;;;;;\n1B255;NUSHU CHARACTER-1B255;Lo;0;L;;;;;N;;;;;\n1B256;NUSHU CHARACTER-1B256;Lo;0;L;;;;;N;;;;;\n1B257;NUSHU CHARACTER-1B257;Lo;0;L;;;;;N;;;;;\n1B258;NUSHU CHARACTER-1B258;Lo;0;L;;;;;N;;;;;\n1B259;NUSHU CHARACTER-1B259;Lo;0;L;;;;;N;;;;;\n1B25A;NUSHU CHARACTER-1B25A;Lo;0;L;;;;;N;;;;;\n1B25B;NUSHU CHARACTER-1B25B;Lo;0;L;;;;;N;;;;;\n1B25C;NUSHU CHARACTER-1B25C;Lo;0;L;;;;;N;;;;;\n1B25D;NUSHU CHARACTER-1B25D;Lo;0;L;;;;;N;;;;;\n1B25E;NUSHU CHARACTER-1B25E;Lo;0;L;;;;;N;;;;;\n1B25F;NUSHU CHARACTER-1B25F;Lo;0;L;;;;;N;;;;;\n1B260;NUSHU CHARACTER-1B260;Lo;0;L;;;;;N;;;;;\n1B261;NUSHU CHARACTER-1B261;Lo;0;L;;;;;N;;;;;\n1B262;NUSHU CHARACTER-1B262;Lo;0;L;;;;;N;;;;;\n1B263;NUSHU CHARACTER-1B263;Lo;0;L;;;;;N;;;;;\n1B264;NUSHU CHARACTER-1B264;Lo;0;L;;;;;N;;;;;\n1B265;NUSHU CHARACTER-1B265;Lo;0;L;;;;;N;;;;;\n1B266;NUSHU CHARACTER-1B266;Lo;0;L;;;;;N;;;;;\n1B267;NUSHU CHARACTER-1B267;Lo;0;L;;;;;N;;;;;\n1B268;NUSHU CHARACTER-1B268;Lo;0;L;;;;;N;;;;;\n1B269;NUSHU CHARACTER-1B269;Lo;0;L;;;;;N;;;;;\n1B26A;NUSHU CHARACTER-1B26A;Lo;0;L;;;;;N;;;;;\n1B26B;NUSHU CHARACTER-1B26B;Lo;0;L;;;;;N;;;;;\n1B26C;NUSHU CHARACTER-1B26C;Lo;0;L;;;;;N;;;;;\n1B26D;NUSHU CHARACTER-1B26D;Lo;0;L;;;;;N;;;;;\n1B26E;NUSHU CHARACTER-1B26E;Lo;0;L;;;;;N;;;;;\n1B26F;NUSHU CHARACTER-1B26F;Lo;0;L;;;;;N;;;;;\n1B270;NUSHU CHARACTER-1B270;Lo;0;L;;;;;N;;;;;\n1B271;NUSHU CHARACTER-1B271;Lo;0;L;;;;;N;;;;;\n1B272;NUSHU CHARACTER-1B272;Lo;0;L;;;;;N;;;;;\n1B273;NUSHU CHARACTER-1B273;Lo;0;L;;;;;N;;;;;\n1B274;NUSHU CHARACTER-1B274;Lo;0;L;;;;;N;;;;;\n1B275;NUSHU CHARACTER-1B275;Lo;0;L;;;;;N;;;;;\n1B276;NUSHU CHARACTER-1B276;Lo;0;L;;;;;N;;;;;\n1B277;NUSHU CHARACTER-1B277;Lo;0;L;;;;;N;;;;;\n1B278;NUSHU CHARACTER-1B278;Lo;0;L;;;;;N;;;;;\n1B279;NUSHU CHARACTER-1B279;Lo;0;L;;;;;N;;;;;\n1B27A;NUSHU CHARACTER-1B27A;Lo;0;L;;;;;N;;;;;\n1B27B;NUSHU CHARACTER-1B27B;Lo;0;L;;;;;N;;;;;\n1B27C;NUSHU CHARACTER-1B27C;Lo;0;L;;;;;N;;;;;\n1B27D;NUSHU CHARACTER-1B27D;Lo;0;L;;;;;N;;;;;\n1B27E;NUSHU CHARACTER-1B27E;Lo;0;L;;;;;N;;;;;\n1B27F;NUSHU CHARACTER-1B27F;Lo;0;L;;;;;N;;;;;\n1B280;NUSHU CHARACTER-1B280;Lo;0;L;;;;;N;;;;;\n1B281;NUSHU CHARACTER-1B281;Lo;0;L;;;;;N;;;;;\n1B282;NUSHU CHARACTER-1B282;Lo;0;L;;;;;N;;;;;\n1B283;NUSHU CHARACTER-1B283;Lo;0;L;;;;;N;;;;;\n1B284;NUSHU CHARACTER-1B284;Lo;0;L;;;;;N;;;;;\n1B285;NUSHU CHARACTER-1B285;Lo;0;L;;;;;N;;;;;\n1B286;NUSHU CHARACTER-1B286;Lo;0;L;;;;;N;;;;;\n1B287;NUSHU CHARACTER-1B287;Lo;0;L;;;;;N;;;;;\n1B288;NUSHU CHARACTER-1B288;Lo;0;L;;;;;N;;;;;\n1B289;NUSHU CHARACTER-1B289;Lo;0;L;;;;;N;;;;;\n1B28A;NUSHU CHARACTER-1B28A;Lo;0;L;;;;;N;;;;;\n1B28B;NUSHU CHARACTER-1B28B;Lo;0;L;;;;;N;;;;;\n1B28C;NUSHU CHARACTER-1B28C;Lo;0;L;;;;;N;;;;;\n1B28D;NUSHU CHARACTER-1B28D;Lo;0;L;;;;;N;;;;;\n1B28E;NUSHU CHARACTER-1B28E;Lo;0;L;;;;;N;;;;;\n1B28F;NUSHU CHARACTER-1B28F;Lo;0;L;;;;;N;;;;;\n1B290;NUSHU CHARACTER-1B290;Lo;0;L;;;;;N;;;;;\n1B291;NUSHU CHARACTER-1B291;Lo;0;L;;;;;N;;;;;\n1B292;NUSHU CHARACTER-1B292;Lo;0;L;;;;;N;;;;;\n1B293;NUSHU CHARACTER-1B293;Lo;0;L;;;;;N;;;;;\n1B294;NUSHU CHARACTER-1B294;Lo;0;L;;;;;N;;;;;\n1B295;NUSHU CHARACTER-1B295;Lo;0;L;;;;;N;;;;;\n1B296;NUSHU CHARACTER-1B296;Lo;0;L;;;;;N;;;;;\n1B297;NUSHU CHARACTER-1B297;Lo;0;L;;;;;N;;;;;\n1B298;NUSHU CHARACTER-1B298;Lo;0;L;;;;;N;;;;;\n1B299;NUSHU CHARACTER-1B299;Lo;0;L;;;;;N;;;;;\n1B29A;NUSHU CHARACTER-1B29A;Lo;0;L;;;;;N;;;;;\n1B29B;NUSHU CHARACTER-1B29B;Lo;0;L;;;;;N;;;;;\n1B29C;NUSHU CHARACTER-1B29C;Lo;0;L;;;;;N;;;;;\n1B29D;NUSHU CHARACTER-1B29D;Lo;0;L;;;;;N;;;;;\n1B29E;NUSHU CHARACTER-1B29E;Lo;0;L;;;;;N;;;;;\n1B29F;NUSHU CHARACTER-1B29F;Lo;0;L;;;;;N;;;;;\n1B2A0;NUSHU CHARACTER-1B2A0;Lo;0;L;;;;;N;;;;;\n1B2A1;NUSHU CHARACTER-1B2A1;Lo;0;L;;;;;N;;;;;\n1B2A2;NUSHU CHARACTER-1B2A2;Lo;0;L;;;;;N;;;;;\n1B2A3;NUSHU CHARACTER-1B2A3;Lo;0;L;;;;;N;;;;;\n1B2A4;NUSHU CHARACTER-1B2A4;Lo;0;L;;;;;N;;;;;\n1B2A5;NUSHU CHARACTER-1B2A5;Lo;0;L;;;;;N;;;;;\n1B2A6;NUSHU CHARACTER-1B2A6;Lo;0;L;;;;;N;;;;;\n1B2A7;NUSHU CHARACTER-1B2A7;Lo;0;L;;;;;N;;;;;\n1B2A8;NUSHU CHARACTER-1B2A8;Lo;0;L;;;;;N;;;;;\n1B2A9;NUSHU CHARACTER-1B2A9;Lo;0;L;;;;;N;;;;;\n1B2AA;NUSHU CHARACTER-1B2AA;Lo;0;L;;;;;N;;;;;\n1B2AB;NUSHU CHARACTER-1B2AB;Lo;0;L;;;;;N;;;;;\n1B2AC;NUSHU CHARACTER-1B2AC;Lo;0;L;;;;;N;;;;;\n1B2AD;NUSHU CHARACTER-1B2AD;Lo;0;L;;;;;N;;;;;\n1B2AE;NUSHU CHARACTER-1B2AE;Lo;0;L;;;;;N;;;;;\n1B2AF;NUSHU CHARACTER-1B2AF;Lo;0;L;;;;;N;;;;;\n1B2B0;NUSHU CHARACTER-1B2B0;Lo;0;L;;;;;N;;;;;\n1B2B1;NUSHU CHARACTER-1B2B1;Lo;0;L;;;;;N;;;;;\n1B2B2;NUSHU CHARACTER-1B2B2;Lo;0;L;;;;;N;;;;;\n1B2B3;NUSHU CHARACTER-1B2B3;Lo;0;L;;;;;N;;;;;\n1B2B4;NUSHU CHARACTER-1B2B4;Lo;0;L;;;;;N;;;;;\n1B2B5;NUSHU CHARACTER-1B2B5;Lo;0;L;;;;;N;;;;;\n1B2B6;NUSHU CHARACTER-1B2B6;Lo;0;L;;;;;N;;;;;\n1B2B7;NUSHU CHARACTER-1B2B7;Lo;0;L;;;;;N;;;;;\n1B2B8;NUSHU CHARACTER-1B2B8;Lo;0;L;;;;;N;;;;;\n1B2B9;NUSHU CHARACTER-1B2B9;Lo;0;L;;;;;N;;;;;\n1B2BA;NUSHU CHARACTER-1B2BA;Lo;0;L;;;;;N;;;;;\n1B2BB;NUSHU CHARACTER-1B2BB;Lo;0;L;;;;;N;;;;;\n1B2BC;NUSHU CHARACTER-1B2BC;Lo;0;L;;;;;N;;;;;\n1B2BD;NUSHU CHARACTER-1B2BD;Lo;0;L;;;;;N;;;;;\n1B2BE;NUSHU CHARACTER-1B2BE;Lo;0;L;;;;;N;;;;;\n1B2BF;NUSHU CHARACTER-1B2BF;Lo;0;L;;;;;N;;;;;\n1B2C0;NUSHU CHARACTER-1B2C0;Lo;0;L;;;;;N;;;;;\n1B2C1;NUSHU CHARACTER-1B2C1;Lo;0;L;;;;;N;;;;;\n1B2C2;NUSHU CHARACTER-1B2C2;Lo;0;L;;;;;N;;;;;\n1B2C3;NUSHU CHARACTER-1B2C3;Lo;0;L;;;;;N;;;;;\n1B2C4;NUSHU CHARACTER-1B2C4;Lo;0;L;;;;;N;;;;;\n1B2C5;NUSHU CHARACTER-1B2C5;Lo;0;L;;;;;N;;;;;\n1B2C6;NUSHU CHARACTER-1B2C6;Lo;0;L;;;;;N;;;;;\n1B2C7;NUSHU CHARACTER-1B2C7;Lo;0;L;;;;;N;;;;;\n1B2C8;NUSHU CHARACTER-1B2C8;Lo;0;L;;;;;N;;;;;\n1B2C9;NUSHU CHARACTER-1B2C9;Lo;0;L;;;;;N;;;;;\n1B2CA;NUSHU CHARACTER-1B2CA;Lo;0;L;;;;;N;;;;;\n1B2CB;NUSHU CHARACTER-1B2CB;Lo;0;L;;;;;N;;;;;\n1B2CC;NUSHU CHARACTER-1B2CC;Lo;0;L;;;;;N;;;;;\n1B2CD;NUSHU CHARACTER-1B2CD;Lo;0;L;;;;;N;;;;;\n1B2CE;NUSHU CHARACTER-1B2CE;Lo;0;L;;;;;N;;;;;\n1B2CF;NUSHU CHARACTER-1B2CF;Lo;0;L;;;;;N;;;;;\n1B2D0;NUSHU CHARACTER-1B2D0;Lo;0;L;;;;;N;;;;;\n1B2D1;NUSHU CHARACTER-1B2D1;Lo;0;L;;;;;N;;;;;\n1B2D2;NUSHU CHARACTER-1B2D2;Lo;0;L;;;;;N;;;;;\n1B2D3;NUSHU CHARACTER-1B2D3;Lo;0;L;;;;;N;;;;;\n1B2D4;NUSHU CHARACTER-1B2D4;Lo;0;L;;;;;N;;;;;\n1B2D5;NUSHU CHARACTER-1B2D5;Lo;0;L;;;;;N;;;;;\n1B2D6;NUSHU CHARACTER-1B2D6;Lo;0;L;;;;;N;;;;;\n1B2D7;NUSHU CHARACTER-1B2D7;Lo;0;L;;;;;N;;;;;\n1B2D8;NUSHU CHARACTER-1B2D8;Lo;0;L;;;;;N;;;;;\n1B2D9;NUSHU CHARACTER-1B2D9;Lo;0;L;;;;;N;;;;;\n1B2DA;NUSHU CHARACTER-1B2DA;Lo;0;L;;;;;N;;;;;\n1B2DB;NUSHU CHARACTER-1B2DB;Lo;0;L;;;;;N;;;;;\n1B2DC;NUSHU CHARACTER-1B2DC;Lo;0;L;;;;;N;;;;;\n1B2DD;NUSHU CHARACTER-1B2DD;Lo;0;L;;;;;N;;;;;\n1B2DE;NUSHU CHARACTER-1B2DE;Lo;0;L;;;;;N;;;;;\n1B2DF;NUSHU CHARACTER-1B2DF;Lo;0;L;;;;;N;;;;;\n1B2E0;NUSHU CHARACTER-1B2E0;Lo;0;L;;;;;N;;;;;\n1B2E1;NUSHU CHARACTER-1B2E1;Lo;0;L;;;;;N;;;;;\n1B2E2;NUSHU CHARACTER-1B2E2;Lo;0;L;;;;;N;;;;;\n1B2E3;NUSHU CHARACTER-1B2E3;Lo;0;L;;;;;N;;;;;\n1B2E4;NUSHU CHARACTER-1B2E4;Lo;0;L;;;;;N;;;;;\n1B2E5;NUSHU CHARACTER-1B2E5;Lo;0;L;;;;;N;;;;;\n1B2E6;NUSHU CHARACTER-1B2E6;Lo;0;L;;;;;N;;;;;\n1B2E7;NUSHU CHARACTER-1B2E7;Lo;0;L;;;;;N;;;;;\n1B2E8;NUSHU CHARACTER-1B2E8;Lo;0;L;;;;;N;;;;;\n1B2E9;NUSHU CHARACTER-1B2E9;Lo;0;L;;;;;N;;;;;\n1B2EA;NUSHU CHARACTER-1B2EA;Lo;0;L;;;;;N;;;;;\n1B2EB;NUSHU CHARACTER-1B2EB;Lo;0;L;;;;;N;;;;;\n1B2EC;NUSHU CHARACTER-1B2EC;Lo;0;L;;;;;N;;;;;\n1B2ED;NUSHU CHARACTER-1B2ED;Lo;0;L;;;;;N;;;;;\n1B2EE;NUSHU CHARACTER-1B2EE;Lo;0;L;;;;;N;;;;;\n1B2EF;NUSHU CHARACTER-1B2EF;Lo;0;L;;;;;N;;;;;\n1B2F0;NUSHU CHARACTER-1B2F0;Lo;0;L;;;;;N;;;;;\n1B2F1;NUSHU CHARACTER-1B2F1;Lo;0;L;;;;;N;;;;;\n1B2F2;NUSHU CHARACTER-1B2F2;Lo;0;L;;;;;N;;;;;\n1B2F3;NUSHU CHARACTER-1B2F3;Lo;0;L;;;;;N;;;;;\n1B2F4;NUSHU CHARACTER-1B2F4;Lo;0;L;;;;;N;;;;;\n1B2F5;NUSHU CHARACTER-1B2F5;Lo;0;L;;;;;N;;;;;\n1B2F6;NUSHU CHARACTER-1B2F6;Lo;0;L;;;;;N;;;;;\n1B2F7;NUSHU CHARACTER-1B2F7;Lo;0;L;;;;;N;;;;;\n1B2F8;NUSHU CHARACTER-1B2F8;Lo;0;L;;;;;N;;;;;\n1B2F9;NUSHU CHARACTER-1B2F9;Lo;0;L;;;;;N;;;;;\n1B2FA;NUSHU CHARACTER-1B2FA;Lo;0;L;;;;;N;;;;;\n1B2FB;NUSHU CHARACTER-1B2FB;Lo;0;L;;;;;N;;;;;\n1BC00;DUPLOYAN LETTER H;Lo;0;L;;;;;N;;;;;\n1BC01;DUPLOYAN LETTER X;Lo;0;L;;;;;N;;;;;\n1BC02;DUPLOYAN LETTER P;Lo;0;L;;;;;N;;;;;\n1BC03;DUPLOYAN LETTER T;Lo;0;L;;;;;N;;;;;\n1BC04;DUPLOYAN LETTER F;Lo;0;L;;;;;N;;;;;\n1BC05;DUPLOYAN LETTER K;Lo;0;L;;;;;N;;;;;\n1BC06;DUPLOYAN LETTER L;Lo;0;L;;;;;N;;;;;\n1BC07;DUPLOYAN LETTER B;Lo;0;L;;;;;N;;;;;\n1BC08;DUPLOYAN LETTER D;Lo;0;L;;;;;N;;;;;\n1BC09;DUPLOYAN LETTER V;Lo;0;L;;;;;N;;;;;\n1BC0A;DUPLOYAN LETTER G;Lo;0;L;;;;;N;;;;;\n1BC0B;DUPLOYAN LETTER R;Lo;0;L;;;;;N;;;;;\n1BC0C;DUPLOYAN LETTER P N;Lo;0;L;;;;;N;;;;;\n1BC0D;DUPLOYAN LETTER D S;Lo;0;L;;;;;N;;;;;\n1BC0E;DUPLOYAN LETTER F N;Lo;0;L;;;;;N;;;;;\n1BC0F;DUPLOYAN LETTER K M;Lo;0;L;;;;;N;;;;;\n1BC10;DUPLOYAN LETTER R S;Lo;0;L;;;;;N;;;;;\n1BC11;DUPLOYAN LETTER TH;Lo;0;L;;;;;N;;;;;\n1BC12;DUPLOYAN LETTER SLOAN DH;Lo;0;L;;;;;N;;;;;\n1BC13;DUPLOYAN LETTER DH;Lo;0;L;;;;;N;;;;;\n1BC14;DUPLOYAN LETTER KK;Lo;0;L;;;;;N;;;;;\n1BC15;DUPLOYAN LETTER SLOAN J;Lo;0;L;;;;;N;;;;;\n1BC16;DUPLOYAN LETTER HL;Lo;0;L;;;;;N;;;;;\n1BC17;DUPLOYAN LETTER LH;Lo;0;L;;;;;N;;;;;\n1BC18;DUPLOYAN LETTER RH;Lo;0;L;;;;;N;;;;;\n1BC19;DUPLOYAN LETTER M;Lo;0;L;;;;;N;;;;;\n1BC1A;DUPLOYAN LETTER N;Lo;0;L;;;;;N;;;;;\n1BC1B;DUPLOYAN LETTER J;Lo;0;L;;;;;N;;;;;\n1BC1C;DUPLOYAN LETTER S;Lo;0;L;;;;;N;;;;;\n1BC1D;DUPLOYAN LETTER M N;Lo;0;L;;;;;N;;;;;\n1BC1E;DUPLOYAN LETTER N M;Lo;0;L;;;;;N;;;;;\n1BC1F;DUPLOYAN LETTER J M;Lo;0;L;;;;;N;;;;;\n1BC20;DUPLOYAN LETTER S J;Lo;0;L;;;;;N;;;;;\n1BC21;DUPLOYAN LETTER M WITH DOT;Lo;0;L;;;;;N;;;;;\n1BC22;DUPLOYAN LETTER N WITH DOT;Lo;0;L;;;;;N;;;;;\n1BC23;DUPLOYAN LETTER J WITH DOT;Lo;0;L;;;;;N;;;;;\n1BC24;DUPLOYAN LETTER J WITH DOTS INSIDE AND ABOVE;Lo;0;L;;;;;N;;;;;\n1BC25;DUPLOYAN LETTER S WITH DOT;Lo;0;L;;;;;N;;;;;\n1BC26;DUPLOYAN LETTER S WITH DOT BELOW;Lo;0;L;;;;;N;;;;;\n1BC27;DUPLOYAN LETTER M S;Lo;0;L;;;;;N;;;;;\n1BC28;DUPLOYAN LETTER N S;Lo;0;L;;;;;N;;;;;\n1BC29;DUPLOYAN LETTER J S;Lo;0;L;;;;;N;;;;;\n1BC2A;DUPLOYAN LETTER S S;Lo;0;L;;;;;N;;;;;\n1BC2B;DUPLOYAN LETTER M N S;Lo;0;L;;;;;N;;;;;\n1BC2C;DUPLOYAN LETTER N M S;Lo;0;L;;;;;N;;;;;\n1BC2D;DUPLOYAN LETTER J M S;Lo;0;L;;;;;N;;;;;\n1BC2E;DUPLOYAN LETTER S J S;Lo;0;L;;;;;N;;;;;\n1BC2F;DUPLOYAN LETTER J S WITH DOT;Lo;0;L;;;;;N;;;;;\n1BC30;DUPLOYAN LETTER J N;Lo;0;L;;;;;N;;;;;\n1BC31;DUPLOYAN LETTER J N S;Lo;0;L;;;;;N;;;;;\n1BC32;DUPLOYAN LETTER S T;Lo;0;L;;;;;N;;;;;\n1BC33;DUPLOYAN LETTER S T R;Lo;0;L;;;;;N;;;;;\n1BC34;DUPLOYAN LETTER S P;Lo;0;L;;;;;N;;;;;\n1BC35;DUPLOYAN LETTER S P R;Lo;0;L;;;;;N;;;;;\n1BC36;DUPLOYAN LETTER T S;Lo;0;L;;;;;N;;;;;\n1BC37;DUPLOYAN LETTER T R S;Lo;0;L;;;;;N;;;;;\n1BC38;DUPLOYAN LETTER W;Lo;0;L;;;;;N;;;;;\n1BC39;DUPLOYAN LETTER WH;Lo;0;L;;;;;N;;;;;\n1BC3A;DUPLOYAN LETTER W R;Lo;0;L;;;;;N;;;;;\n1BC3B;DUPLOYAN LETTER S N;Lo;0;L;;;;;N;;;;;\n1BC3C;DUPLOYAN LETTER S M;Lo;0;L;;;;;N;;;;;\n1BC3D;DUPLOYAN LETTER K R S;Lo;0;L;;;;;N;;;;;\n1BC3E;DUPLOYAN LETTER G R S;Lo;0;L;;;;;N;;;;;\n1BC3F;DUPLOYAN LETTER S K;Lo;0;L;;;;;N;;;;;\n1BC40;DUPLOYAN LETTER S K R;Lo;0;L;;;;;N;;;;;\n1BC41;DUPLOYAN LETTER A;Lo;0;L;;;;;N;;;;;\n1BC42;DUPLOYAN LETTER SLOAN OW;Lo;0;L;;;;;N;;;;;\n1BC43;DUPLOYAN LETTER OA;Lo;0;L;;;;;N;;;;;\n1BC44;DUPLOYAN LETTER O;Lo;0;L;;;;;N;;;;;\n1BC45;DUPLOYAN LETTER AOU;Lo;0;L;;;;;N;;;;;\n1BC46;DUPLOYAN LETTER I;Lo;0;L;;;;;N;;;;;\n1BC47;DUPLOYAN LETTER E;Lo;0;L;;;;;N;;;;;\n1BC48;DUPLOYAN LETTER IE;Lo;0;L;;;;;N;;;;;\n1BC49;DUPLOYAN LETTER SHORT I;Lo;0;L;;;;;N;;;;;\n1BC4A;DUPLOYAN LETTER UI;Lo;0;L;;;;;N;;;;;\n1BC4B;DUPLOYAN LETTER EE;Lo;0;L;;;;;N;;;;;\n1BC4C;DUPLOYAN LETTER SLOAN EH;Lo;0;L;;;;;N;;;;;\n1BC4D;DUPLOYAN LETTER ROMANIAN I;Lo;0;L;;;;;N;;;;;\n1BC4E;DUPLOYAN LETTER SLOAN EE;Lo;0;L;;;;;N;;;;;\n1BC4F;DUPLOYAN LETTER LONG I;Lo;0;L;;;;;N;;;;;\n1BC50;DUPLOYAN LETTER YE;Lo;0;L;;;;;N;;;;;\n1BC51;DUPLOYAN LETTER U;Lo;0;L;;;;;N;;;;;\n1BC52;DUPLOYAN LETTER EU;Lo;0;L;;;;;N;;;;;\n1BC53;DUPLOYAN LETTER XW;Lo;0;L;;;;;N;;;;;\n1BC54;DUPLOYAN LETTER U N;Lo;0;L;;;;;N;;;;;\n1BC55;DUPLOYAN LETTER LONG U;Lo;0;L;;;;;N;;;;;\n1BC56;DUPLOYAN LETTER ROMANIAN U;Lo;0;L;;;;;N;;;;;\n1BC57;DUPLOYAN LETTER UH;Lo;0;L;;;;;N;;;;;\n1BC58;DUPLOYAN LETTER SLOAN U;Lo;0;L;;;;;N;;;;;\n1BC59;DUPLOYAN LETTER OOH;Lo;0;L;;;;;N;;;;;\n1BC5A;DUPLOYAN LETTER OW;Lo;0;L;;;;;N;;;;;\n1BC5B;DUPLOYAN LETTER OU;Lo;0;L;;;;;N;;;;;\n1BC5C;DUPLOYAN LETTER WA;Lo;0;L;;;;;N;;;;;\n1BC5D;DUPLOYAN LETTER WO;Lo;0;L;;;;;N;;;;;\n1BC5E;DUPLOYAN LETTER WI;Lo;0;L;;;;;N;;;;;\n1BC5F;DUPLOYAN LETTER WEI;Lo;0;L;;;;;N;;;;;\n1BC60;DUPLOYAN LETTER WOW;Lo;0;L;;;;;N;;;;;\n1BC61;DUPLOYAN LETTER NASAL U;Lo;0;L;;;;;N;;;;;\n1BC62;DUPLOYAN LETTER NASAL O;Lo;0;L;;;;;N;;;;;\n1BC63;DUPLOYAN LETTER NASAL I;Lo;0;L;;;;;N;;;;;\n1BC64;DUPLOYAN LETTER NASAL A;Lo;0;L;;;;;N;;;;;\n1BC65;DUPLOYAN LETTER PERNIN AN;Lo;0;L;;;;;N;;;;;\n1BC66;DUPLOYAN LETTER PERNIN AM;Lo;0;L;;;;;N;;;;;\n1BC67;DUPLOYAN LETTER SLOAN EN;Lo;0;L;;;;;N;;;;;\n1BC68;DUPLOYAN LETTER SLOAN AN;Lo;0;L;;;;;N;;;;;\n1BC69;DUPLOYAN LETTER SLOAN ON;Lo;0;L;;;;;N;;;;;\n1BC6A;DUPLOYAN LETTER VOCALIC M;Lo;0;L;;;;;N;;;;;\n1BC70;DUPLOYAN AFFIX LEFT HORIZONTAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC71;DUPLOYAN AFFIX MID HORIZONTAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC72;DUPLOYAN AFFIX RIGHT HORIZONTAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC73;DUPLOYAN AFFIX LOW VERTICAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC74;DUPLOYAN AFFIX MID VERTICAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC75;DUPLOYAN AFFIX HIGH VERTICAL SECANT;Lo;0;L;;;;;N;;;;;\n1BC76;DUPLOYAN AFFIX ATTACHED SECANT;Lo;0;L;;;;;N;;;;;\n1BC77;DUPLOYAN AFFIX ATTACHED LEFT-TO-RIGHT SECANT;Lo;0;L;;;;;N;;;;;\n1BC78;DUPLOYAN AFFIX ATTACHED TANGENT;Lo;0;L;;;;;N;;;;;\n1BC79;DUPLOYAN AFFIX ATTACHED TAIL;Lo;0;L;;;;;N;;;;;\n1BC7A;DUPLOYAN AFFIX ATTACHED E HOOK;Lo;0;L;;;;;N;;;;;\n1BC7B;DUPLOYAN AFFIX ATTACHED I HOOK;Lo;0;L;;;;;N;;;;;\n1BC7C;DUPLOYAN AFFIX ATTACHED TANGENT HOOK;Lo;0;L;;;;;N;;;;;\n1BC80;DUPLOYAN AFFIX HIGH ACUTE;Lo;0;L;;;;;N;;;;;\n1BC81;DUPLOYAN AFFIX HIGH TIGHT ACUTE;Lo;0;L;;;;;N;;;;;\n1BC82;DUPLOYAN AFFIX HIGH GRAVE;Lo;0;L;;;;;N;;;;;\n1BC83;DUPLOYAN AFFIX HIGH LONG GRAVE;Lo;0;L;;;;;N;;;;;\n1BC84;DUPLOYAN AFFIX HIGH DOT;Lo;0;L;;;;;N;;;;;\n1BC85;DUPLOYAN AFFIX HIGH CIRCLE;Lo;0;L;;;;;N;;;;;\n1BC86;DUPLOYAN AFFIX HIGH LINE;Lo;0;L;;;;;N;;;;;\n1BC87;DUPLOYAN AFFIX HIGH WAVE;Lo;0;L;;;;;N;;;;;\n1BC88;DUPLOYAN AFFIX HIGH VERTICAL;Lo;0;L;;;;;N;;;;;\n1BC90;DUPLOYAN AFFIX LOW ACUTE;Lo;0;L;;;;;N;;;;;\n1BC91;DUPLOYAN AFFIX LOW TIGHT ACUTE;Lo;0;L;;;;;N;;;;;\n1BC92;DUPLOYAN AFFIX LOW GRAVE;Lo;0;L;;;;;N;;;;;\n1BC93;DUPLOYAN AFFIX LOW LONG GRAVE;Lo;0;L;;;;;N;;;;;\n1BC94;DUPLOYAN AFFIX LOW DOT;Lo;0;L;;;;;N;;;;;\n1BC95;DUPLOYAN AFFIX LOW CIRCLE;Lo;0;L;;;;;N;;;;;\n1BC96;DUPLOYAN AFFIX LOW LINE;Lo;0;L;;;;;N;;;;;\n1BC97;DUPLOYAN AFFIX LOW WAVE;Lo;0;L;;;;;N;;;;;\n1BC98;DUPLOYAN AFFIX LOW VERTICAL;Lo;0;L;;;;;N;;;;;\n1BC99;DUPLOYAN AFFIX LOW ARROW;Lo;0;L;;;;;N;;;;;\n1BC9C;DUPLOYAN SIGN O WITH CROSS;So;0;L;;;;;N;;;;;\n1BC9D;DUPLOYAN THICK LETTER SELECTOR;Mn;0;NSM;;;;;N;;;;;\n1BC9E;DUPLOYAN DOUBLE MARK;Mn;1;NSM;;;;;N;;;;;\n1BC9F;DUPLOYAN PUNCTUATION CHINOOK FULL STOP;Po;0;L;;;;;N;;;;;\n1BCA0;SHORTHAND FORMAT LETTER OVERLAP;Cf;0;BN;;;;;N;;;;;\n1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;\n1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;\n1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;\n1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;\n1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;\n1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;\n1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;\n1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;\n1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;\n1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;\n1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;\n1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;\n1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;\n1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;\n1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;\n1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;\n1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;\n1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;\n1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;\n1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;\n1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;\n1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;\n1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;\n1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;\n1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;\n1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;\n1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;\n1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;\n1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;\n1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;\n1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;\n1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;\n1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;\n1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;\n1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;\n1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;\n1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;\n1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;\n1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;\n1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;\n1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;\n1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;\n1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;\n1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;\n1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;\n1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;\n1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;\n1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;\n1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;\n1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;\n1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;\n1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;\n1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;\n1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;\n1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;\n1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;\n1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;\n1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;\n1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;\n1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;\n1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;\n1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;\n1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;\n1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;\n1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;\n1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;\n1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;\n1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;\n1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;\n1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;\n1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;\n1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;\n1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;\n1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;\n1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;\n1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;\n1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;\n1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;\n1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;\n1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;\n1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;\n1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;\n1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;\n1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;\n1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;\n1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;\n1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;\n1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;\n1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;\n1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;\n1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;\n1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;\n1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;\n1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;\n1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;\n1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;\n1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;\n1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;\n1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;\n1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;\n1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;\n1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;\n1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;\n1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;\n1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;\n1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;\n1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;\n1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;\n1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;\n1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;\n1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;\n1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;\n1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;\n1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;\n1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;\n1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;\n1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;\n1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;\n1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;\n1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;\n1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;\n1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;\n1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;\n1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;\n1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;\n1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;\n1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;\n1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;\n1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;\n1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;\n1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;\n1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;\n1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;\n1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;\n1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;\n1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;\n1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;\n1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;\n1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;\n1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;\n1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;\n1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;\n1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;\n1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;\n1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;\n1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;\n1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;\n1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;\n1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;\n1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;\n1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;\n1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;\n1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;\n1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;\n1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;\n1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;\n1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;\n1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;\n1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;\n1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;\n1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;\n1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;\n1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;\n1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;\n1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;\n1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;\n1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;\n1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;\n1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;\n1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;\n1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;\n1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;\n1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;\n1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;\n1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;\n1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;\n1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;\n1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;\n1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;\n1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;\n1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;\n1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;\n1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;\n1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;\n1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;\n1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;\n1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;\n1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;\n1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;\n1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;\n1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;\n1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;\n1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;\n1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;\n1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;\n1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;\n1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;\n1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;\n1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;\n1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;\n1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;\n1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;\n1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;\n1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;\n1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;\n1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;\n1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;\n1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;\n1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;\n1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;\n1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;\n1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;\n1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;\n1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;\n1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;\n1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;\n1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;\n1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;\n1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;\n1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;\n1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;\n1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;\n1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;\n1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;\n1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;\n1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;\n1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;\n1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;\n1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;\n1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;\n1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;\n1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;\n1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;\n1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;\n1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;\n1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;\n1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;\n1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;\n1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;\n1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;\n1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;\n1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;\n1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;\n1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;\n1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;\n1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;\n1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;\n1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;\n1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;\n1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;\n1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;\n1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;\n1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;\n1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;\n1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;\n1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;\n1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;\n1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;\n1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;\n1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;\n1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;\n1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;\n1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;\n1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;\n1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;\n1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;\n1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;\n1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;\n1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;\n1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;\n1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;\n1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;\n1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;\n1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;\n1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;\n1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;\n1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;\n1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;\n1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;\n1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;\n1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;\n1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;\n1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;\n1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;\n1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;\n1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;\n1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;\n1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;\n1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;;\n1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;\n1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;\n1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;\n1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;\n1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;\n1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;\n1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;\n1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;\n1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;\n1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;\n1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;\n1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;\n1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;\n1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;\n1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;\n1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;\n1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;\n1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;\n1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;\n1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;\n1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;\n1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;\n1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;\n1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;\n1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;\n1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;\n1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;\n1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;\n1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;\n1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;\n1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;\n1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;\n1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;\n1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;\n1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;\n1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;\n1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;\n1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;\n1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;\n1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;\n1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;\n1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;\n1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;\n1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;\n1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;\n1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;\n1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;\n1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;\n1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;\n1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;\n1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;\n1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;\n1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;\n1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;\n1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;\n1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;\n1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;\n1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;\n1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;\n1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;\n1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;\n1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;\n1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;\n1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;\n1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;\n1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;\n1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;\n1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;\n1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;\n1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;\n1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;\n1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;\n1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;\n1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;\n1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;\n1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;\n1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;\n1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;\n1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;\n1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;\n1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;\n1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;\n1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;\n1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;\n1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;\n1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;\n1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;\n1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;\n1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;\n1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;\n1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;\n1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;\n1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;\n1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;\n1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;\n1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;\n1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;\n1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;\n1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;\n1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;\n1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;\n1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;\n1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;\n1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;\n1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;\n1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;\n1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;\n1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;\n1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;\n1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;\n1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;\n1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;\n1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;\n1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;\n1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;\n1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;\n1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;\n1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;\n1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;\n1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;\n1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;\n1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;\n1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;\n1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;\n1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;\n1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;\n1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;\n1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;\n1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;\n1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;\n1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;\n1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;\n1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;\n1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;\n1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;\n1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;\n1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;\n1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;\n1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;\n1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;\n1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;\n1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;\n1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;\n1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;\n1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;\n1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;\n1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;\n1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;\n1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;\n1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;\n1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;\n1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;\n1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;\n1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;\n1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;\n1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;\n1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;\n1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;\n1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;\n1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;\n1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;\n1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;\n1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;\n1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;\n1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;\n1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;\n1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;\n1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;\n1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;\n1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;\n1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;\n1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;\n1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;\n1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;\n1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;\n1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;\n1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;\n1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;\n1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;\n1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;\n1D1DE;MUSICAL SYMBOL KIEVAN C CLEF;So;0;L;;;;;N;;;;;\n1D1DF;MUSICAL SYMBOL KIEVAN END OF PIECE;So;0;L;;;;;N;;;;;\n1D1E0;MUSICAL SYMBOL KIEVAN FINAL NOTE;So;0;L;;;;;N;;;;;\n1D1E1;MUSICAL SYMBOL KIEVAN RECITATIVE MARK;So;0;L;;;;;N;;;;;\n1D1E2;MUSICAL SYMBOL KIEVAN WHOLE NOTE;So;0;L;;;;;N;;;;;\n1D1E3;MUSICAL SYMBOL KIEVAN HALF NOTE;So;0;L;;;;;N;;;;;\n1D1E4;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN;So;0;L;;;;;N;;;;;\n1D1E5;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP;So;0;L;;;;;N;;;;;\n1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;;\n1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;;\n1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;;\n1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;\n1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;\n1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;\n1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;\n1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;\n1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;\n1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;\n1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;\n1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;\n1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;\n1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;\n1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;\n1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;\n1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;\n1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;\n1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;\n1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;\n1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;\n1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;\n1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;\n1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;\n1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;\n1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;\n1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;\n1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;\n1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;\n1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;\n1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;\n1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;\n1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;\n1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;\n1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;\n1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;\n1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;\n1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;\n1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;\n1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;\n1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;\n1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;\n1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;\n1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;\n1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;\n1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;\n1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;\n1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;\n1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;\n1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;\n1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;\n1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;\n1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;\n1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;\n1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;\n1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;\n1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;\n1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;\n1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;\n1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;\n1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;\n1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;\n1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;\n1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;\n1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;\n1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;\n1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;\n1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;\n1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;\n1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;\n1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;\n1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;\n1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;\n1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;\n1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;\n1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;\n1D2E3;MAYAN NUMERAL THREE;No;0;L;;;;3;N;;;;;\n1D2E4;MAYAN NUMERAL FOUR;No;0;L;;;;4;N;;;;;\n1D2E5;MAYAN NUMERAL FIVE;No;0;L;;;;5;N;;;;;\n1D2E6;MAYAN NUMERAL SIX;No;0;L;;;;6;N;;;;;\n1D2E7;MAYAN NUMERAL SEVEN;No;0;L;;;;7;N;;;;;\n1D2E8;MAYAN NUMERAL EIGHT;No;0;L;;;;8;N;;;;;\n1D2E9;MAYAN NUMERAL NINE;No;0;L;;;;9;N;;;;;\n1D2EA;MAYAN NUMERAL TEN;No;0;L;;;;10;N;;;;;\n1D2EB;MAYAN NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;\n1D2EC;MAYAN NUMERAL TWELVE;No;0;L;;;;12;N;;;;;\n1D2ED;MAYAN NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;\n1D2EE;MAYAN NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;\n1D2EF;MAYAN NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;\n1D2F0;MAYAN NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;\n1D2F1;MAYAN NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;\n1D2F2;MAYAN NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;\n1D2F3;MAYAN NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;\n1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;\n1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;\n1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;\n1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;\n1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;\n1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;\n1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;\n1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;\n1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;\n1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;\n1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;\n1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;\n1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;\n1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;\n1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;\n1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;\n1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;\n1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;\n1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;\n1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;\n1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;\n1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;\n1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;\n1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;\n1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;\n1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;\n1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;\n1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;\n1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;\n1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;\n1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;\n1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;\n1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;\n1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;\n1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;\n1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;\n1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;\n1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;\n1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;\n1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;\n1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;\n1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;\n1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;\n1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;\n1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;\n1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;\n1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;\n1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;\n1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;\n1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;\n1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;\n1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;\n1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;\n1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;\n1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;\n1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;\n1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;\n1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;\n1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;\n1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;\n1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;\n1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;\n1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;\n1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;\n1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;\n1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;\n1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;\n1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;\n1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;\n1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;\n1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;\n1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;\n1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;\n1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;\n1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;\n1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;\n1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;\n1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;\n1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;\n1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;\n1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;\n1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;\n1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;\n1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;\n1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;\n1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;\n1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;\n1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;\n1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;\n1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;\n1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;\n1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;\n1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;\n1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;\n1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;\n1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;\n1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;\n1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;\n1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;\n1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;\n1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;\n1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;\n1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;\n1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;\n1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;\n1D372;IDEOGRAPHIC TALLY MARK ONE;No;0;L;;;;1;N;;;;;\n1D373;IDEOGRAPHIC TALLY MARK TWO;No;0;L;;;;2;N;;;;;\n1D374;IDEOGRAPHIC TALLY MARK THREE;No;0;L;;;;3;N;;;;;\n1D375;IDEOGRAPHIC TALLY MARK FOUR;No;0;L;;;;4;N;;;;;\n1D376;IDEOGRAPHIC TALLY MARK FIVE;No;0;L;;;;5;N;;;;;\n1D377;TALLY MARK ONE;No;0;L;;;;1;N;;;;;\n1D378;TALLY MARK FIVE;No;0;L;;;;5;N;;;;;\n1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;\n1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;\n1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;\n1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;\n1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;\n1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;\n1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;\n1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;\n1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;\n1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;\n1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;\n1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;\n1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;\n1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;\n1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;\n1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;\n1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;\n1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;\n1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;\n1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;\n1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;\n1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;\n1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;\n1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;\n1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;\n1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;\n1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;\n1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;\n1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;\n1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;\n1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;\n1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;\n1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;\n1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;\n1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;\n1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;\n1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;\n1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;\n1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;\n1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;\n1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;\n1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;\n1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;\n1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;\n1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;\n1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;\n1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;\n1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;\n1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;\n1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;\n1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;\n1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;\n1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;\n1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;\n1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;\n1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;\n1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;\n1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;\n1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;\n1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;\n1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;\n1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;\n1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;\n1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;\n1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;\n1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;\n1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;\n1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;\n1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;\n1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;\n1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;\n1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;\n1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;\n1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;\n1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;\n1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;\n1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;\n1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;\n1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;\n1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;\n1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;\n1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;\n1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;\n1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;\n1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;\n1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;\n1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;\n1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;\n1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;\n1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;\n1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;\n1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;\n1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;\n1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;\n1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;\n1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;\n1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;\n1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;\n1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;\n1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;\n1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;\n1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;\n1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;\n1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;\n1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;\n1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;\n1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;\n1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;\n1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;\n1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;\n1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;\n1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;\n1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;\n1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;\n1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;\n1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;\n1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;\n1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;\n1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;\n1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;\n1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;\n1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;\n1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;\n1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;\n1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;\n1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;\n1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;\n1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;\n1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;\n1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;\n1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;\n1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;\n1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;\n1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;\n1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;\n1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;\n1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;\n1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;\n1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;\n1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;\n1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;\n1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;\n1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;\n1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;\n1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;\n1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;\n1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;\n1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;\n1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;\n1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;\n1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;\n1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;\n1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;\n1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;\n1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;\n1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;\n1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;\n1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;\n1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;\n1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;\n1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;\n1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;\n1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;\n1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;\n1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;\n1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;\n1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;\n1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;\n1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;\n1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;\n1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;\n1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;\n1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;\n1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;\n1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;\n1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;\n1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;\n1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;\n1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;\n1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;\n1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;\n1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;\n1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;\n1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;\n1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;\n1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;\n1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;\n1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;\n1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;\n1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;\n1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;\n1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;\n1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;\n1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;\n1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;\n1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;\n1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;\n1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;\n1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;\n1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;\n1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;\n1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;\n1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;\n1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;\n1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;\n1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;\n1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;\n1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;\n1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;\n1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;\n1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;\n1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;\n1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;\n1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;\n1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;\n1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;\n1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;\n1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;\n1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;\n1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;\n1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;\n1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;\n1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;\n1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;\n1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;\n1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;\n1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;\n1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;\n1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;\n1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;\n1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;\n1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;\n1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;\n1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;\n1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;\n1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;\n1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;\n1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;\n1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;\n1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;\n1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;\n1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;\n1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;\n1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;\n1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;\n1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;\n1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;\n1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;\n1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;\n1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;\n1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;\n1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;\n1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;\n1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;\n1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;\n1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;\n1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;\n1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;\n1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;\n1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;\n1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;\n1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;\n1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;\n1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;\n1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;\n1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;\n1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;\n1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;\n1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;\n1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;\n1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;\n1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;\n1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;\n1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;\n1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;\n1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;\n1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;\n1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;\n1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;\n1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;\n1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;\n1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;\n1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;\n1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;\n1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;\n1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;\n1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;\n1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;\n1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;\n1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;\n1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;\n1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;\n1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;\n1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;\n1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;\n1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;\n1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;\n1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;\n1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;\n1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;\n1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;\n1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;\n1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;\n1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;\n1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;\n1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;\n1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;\n1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;\n1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;\n1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;\n1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;\n1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;\n1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;\n1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;\n1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;\n1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;\n1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;\n1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;\n1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;\n1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;\n1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;\n1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;\n1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;\n1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;\n1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;\n1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;\n1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;\n1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;\n1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;\n1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;\n1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n1D800;SIGNWRITING HAND-FIST INDEX;So;0;L;;;;;N;;;;;\n1D801;SIGNWRITING HAND-CIRCLE INDEX;So;0;L;;;;;N;;;;;\n1D802;SIGNWRITING HAND-CUP INDEX;So;0;L;;;;;N;;;;;\n1D803;SIGNWRITING HAND-OVAL INDEX;So;0;L;;;;;N;;;;;\n1D804;SIGNWRITING HAND-HINGE INDEX;So;0;L;;;;;N;;;;;\n1D805;SIGNWRITING HAND-ANGLE INDEX;So;0;L;;;;;N;;;;;\n1D806;SIGNWRITING HAND-FIST INDEX BENT;So;0;L;;;;;N;;;;;\n1D807;SIGNWRITING HAND-CIRCLE INDEX BENT;So;0;L;;;;;N;;;;;\n1D808;SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT;So;0;L;;;;;N;;;;;\n1D809;SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE;So;0;L;;;;;N;;;;;\n1D80A;SIGNWRITING HAND-FIST INDEX CUPPED;So;0;L;;;;;N;;;;;\n1D80B;SIGNWRITING HAND-FIST INDEX HINGED;So;0;L;;;;;N;;;;;\n1D80C;SIGNWRITING HAND-FIST INDEX HINGED LOW;So;0;L;;;;;N;;;;;\n1D80D;SIGNWRITING HAND-CIRCLE INDEX HINGE;So;0;L;;;;;N;;;;;\n1D80E;SIGNWRITING HAND-FIST INDEX MIDDLE;So;0;L;;;;;N;;;;;\n1D80F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE;So;0;L;;;;;N;;;;;\n1D810;SIGNWRITING HAND-FIST INDEX MIDDLE BENT;So;0;L;;;;;N;;;;;\n1D811;SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;;\n1D812;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED;So;0;L;;;;;N;;;;;\n1D813;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED;So;0;L;;;;;N;;;;;\n1D814;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP;So;0;L;;;;;N;;;;;\n1D815;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED;So;0;L;;;;;N;;;;;\n1D816;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT;So;0;L;;;;;N;;;;;\n1D817;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT;So;0;L;;;;;N;;;;;\n1D818;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED;So;0;L;;;;;N;;;;;\n1D819;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED;So;0;L;;;;;N;;;;;\n1D81A;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;;\n1D81B;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;;\n1D81C;SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX;So;0;L;;;;;N;;;;;\n1D81D;SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE;So;0;L;;;;;N;;;;;\n1D81E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;;\n1D81F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;;\n1D820;SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT;So;0;L;;;;;N;;;;;\n1D821;SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT;So;0;L;;;;;N;;;;;\n1D822;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT;So;0;L;;;;;N;;;;;\n1D823;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE;So;0;L;;;;;N;;;;;\n1D824;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE;So;0;L;;;;;N;;;;;\n1D825;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED;So;0;L;;;;;N;;;;;\n1D826;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;;\n1D827;SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D828;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED;So;0;L;;;;;N;;;;;\n1D829;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED;So;0;L;;;;;N;;;;;\n1D82A;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED;So;0;L;;;;;N;;;;;\n1D82B;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED;So;0;L;;;;;N;;;;;\n1D82C;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT;So;0;L;;;;;N;;;;;\n1D82D;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE;So;0;L;;;;;N;;;;;\n1D82E;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;;\n1D82F;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT;So;0;L;;;;;N;;;;;\n1D830;SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP;So;0;L;;;;;N;;;;;\n1D831;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP;So;0;L;;;;;N;;;;;\n1D832;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE;So;0;L;;;;;N;;;;;\n1D833;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE;So;0;L;;;;;N;;;;;\n1D834;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D835;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D836;SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP;So;0;L;;;;;N;;;;;\n1D837;SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP;So;0;L;;;;;N;;;;;\n1D838;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP;So;0;L;;;;;N;;;;;\n1D839;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED;So;0;L;;;;;N;;;;;\n1D83A;SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP;So;0;L;;;;;N;;;;;\n1D83B;SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP;So;0;L;;;;;N;;;;;\n1D83C;SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP;So;0;L;;;;;N;;;;;\n1D83D;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED;So;0;L;;;;;N;;;;;\n1D83E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT;So;0;L;;;;;N;;;;;\n1D83F;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED;So;0;L;;;;;N;;;;;\n1D840;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP;So;0;L;;;;;N;;;;;\n1D841;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED;So;0;L;;;;;N;;;;;\n1D842;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP;So;0;L;;;;;N;;;;;\n1D843;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED;So;0;L;;;;;N;;;;;\n1D844;SIGNWRITING HAND-FLAT FOUR FINGERS;So;0;L;;;;;N;;;;;\n1D845;SIGNWRITING HAND-FLAT FOUR FINGERS BENT;So;0;L;;;;;N;;;;;\n1D846;SIGNWRITING HAND-FLAT FOUR FINGERS HINGED;So;0;L;;;;;N;;;;;\n1D847;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;;\n1D848;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT;So;0;L;;;;;N;;;;;\n1D849;SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;;\n1D84A;SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT;So;0;L;;;;;N;;;;;\n1D84B;SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;;\n1D84C;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;;\n1D84D;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;;\n1D84E;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;;\n1D84F;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;;\n1D850;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;;\n1D851;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;;\n1D852;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D853;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;;\n1D854;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;;\n1D855;SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;;\n1D856;SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;;\n1D857;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED;So;0;L;;;;;N;;;;;\n1D858;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE;So;0;L;;;;;N;;;;;\n1D859;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB;So;0;L;;;;;N;;;;;\n1D85A;SIGNWRITING HAND-FLAT;So;0;L;;;;;N;;;;;\n1D85B;SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS;So;0;L;;;;;N;;;;;\n1D85C;SIGNWRITING HAND-FLAT HEEL;So;0;L;;;;;N;;;;;\n1D85D;SIGNWRITING HAND-FLAT THUMB SIDE;So;0;L;;;;;N;;;;;\n1D85E;SIGNWRITING HAND-FLAT HEEL THUMB SIDE;So;0;L;;;;;N;;;;;\n1D85F;SIGNWRITING HAND-FLAT THUMB BENT;So;0;L;;;;;N;;;;;\n1D860;SIGNWRITING HAND-FLAT THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D861;SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE;So;0;L;;;;;N;;;;;\n1D862;SIGNWRITING HAND-FLAT SPLIT CENTRE;So;0;L;;;;;N;;;;;\n1D863;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE;So;0;L;;;;;N;;;;;\n1D864;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT;So;0;L;;;;;N;;;;;\n1D865;SIGNWRITING HAND-FLAT SPLIT LITTLE;So;0;L;;;;;N;;;;;\n1D866;SIGNWRITING HAND-CLAW;So;0;L;;;;;N;;;;;\n1D867;SIGNWRITING HAND-CLAW THUMB SIDE;So;0;L;;;;;N;;;;;\n1D868;SIGNWRITING HAND-CLAW NO THUMB;So;0;L;;;;;N;;;;;\n1D869;SIGNWRITING HAND-CLAW THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D86A;SIGNWRITING HAND-HOOK CURLICUE;So;0;L;;;;;N;;;;;\n1D86B;SIGNWRITING HAND-HOOK;So;0;L;;;;;N;;;;;\n1D86C;SIGNWRITING HAND-CUP OPEN;So;0;L;;;;;N;;;;;\n1D86D;SIGNWRITING HAND-CUP;So;0;L;;;;;N;;;;;\n1D86E;SIGNWRITING HAND-CUP OPEN THUMB SIDE;So;0;L;;;;;N;;;;;\n1D86F;SIGNWRITING HAND-CUP THUMB SIDE;So;0;L;;;;;N;;;;;\n1D870;SIGNWRITING HAND-CUP OPEN NO THUMB;So;0;L;;;;;N;;;;;\n1D871;SIGNWRITING HAND-CUP NO THUMB;So;0;L;;;;;N;;;;;\n1D872;SIGNWRITING HAND-CUP OPEN THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D873;SIGNWRITING HAND-CUP THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D874;SIGNWRITING HAND-CURLICUE OPEN;So;0;L;;;;;N;;;;;\n1D875;SIGNWRITING HAND-CURLICUE;So;0;L;;;;;N;;;;;\n1D876;SIGNWRITING HAND-CIRCLE;So;0;L;;;;;N;;;;;\n1D877;SIGNWRITING HAND-OVAL;So;0;L;;;;;N;;;;;\n1D878;SIGNWRITING HAND-OVAL THUMB SIDE;So;0;L;;;;;N;;;;;\n1D879;SIGNWRITING HAND-OVAL NO THUMB;So;0;L;;;;;N;;;;;\n1D87A;SIGNWRITING HAND-OVAL THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D87B;SIGNWRITING HAND-HINGE OPEN;So;0;L;;;;;N;;;;;\n1D87C;SIGNWRITING HAND-HINGE OPEN THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D87D;SIGNWRITING HAND-HINGE;So;0;L;;;;;N;;;;;\n1D87E;SIGNWRITING HAND-HINGE SMALL;So;0;L;;;;;N;;;;;\n1D87F;SIGNWRITING HAND-HINGE OPEN THUMB SIDE;So;0;L;;;;;N;;;;;\n1D880;SIGNWRITING HAND-HINGE THUMB SIDE;So;0;L;;;;;N;;;;;\n1D881;SIGNWRITING HAND-HINGE OPEN NO THUMB;So;0;L;;;;;N;;;;;\n1D882;SIGNWRITING HAND-HINGE NO THUMB;So;0;L;;;;;N;;;;;\n1D883;SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX;So;0;L;;;;;N;;;;;\n1D884;SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;;\n1D885;SIGNWRITING HAND-ANGLE;So;0;L;;;;;N;;;;;\n1D886;SIGNWRITING HAND-FIST INDEX MIDDLE RING;So;0;L;;;;;N;;;;;\n1D887;SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;;\n1D888;SIGNWRITING HAND-HINGE INDEX MIDDLE RING;So;0;L;;;;;N;;;;;\n1D889;SIGNWRITING HAND-ANGLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;;\n1D88A;SIGNWRITING HAND-HINGE LITTLE;So;0;L;;;;;N;;;;;\n1D88B;SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT;So;0;L;;;;;N;;;;;\n1D88C;SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;;\n1D88D;SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;;\n1D88E;SIGNWRITING HAND-FIST LITTLE DOWN;So;0;L;;;;;N;;;;;\n1D88F;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT;So;0;L;;;;;N;;;;;\n1D890;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED;So;0;L;;;;;N;;;;;\n1D891;SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED;So;0;L;;;;;N;;;;;\n1D892;SIGNWRITING HAND-FIST LITTLE UP;So;0;L;;;;;N;;;;;\n1D893;SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP;So;0;L;;;;;N;;;;;\n1D894;SIGNWRITING HAND-CIRCLE LITTLE UP;So;0;L;;;;;N;;;;;\n1D895;SIGNWRITING HAND-OVAL LITTLE UP;So;0;L;;;;;N;;;;;\n1D896;SIGNWRITING HAND-ANGLE LITTLE UP;So;0;L;;;;;N;;;;;\n1D897;SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE;So;0;L;;;;;N;;;;;\n1D898;SIGNWRITING HAND-FIST LITTLE BENT;So;0;L;;;;;N;;;;;\n1D899;SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB;So;0;L;;;;;N;;;;;\n1D89A;SIGNWRITING HAND-FIST LITTLE THUMB;So;0;L;;;;;N;;;;;\n1D89B;SIGNWRITING HAND-HINGE LITTLE THUMB;So;0;L;;;;;N;;;;;\n1D89C;SIGNWRITING HAND-FIST LITTLE INDEX THUMB;So;0;L;;;;;N;;;;;\n1D89D;SIGNWRITING HAND-HINGE LITTLE INDEX THUMB;So;0;L;;;;;N;;;;;\n1D89E;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT;So;0;L;;;;;N;;;;;\n1D89F;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB;So;0;L;;;;;N;;;;;\n1D8A0;SIGNWRITING HAND-FIST LITTLE INDEX;So;0;L;;;;;N;;;;;\n1D8A1;SIGNWRITING HAND-CIRCLE LITTLE INDEX;So;0;L;;;;;N;;;;;\n1D8A2;SIGNWRITING HAND-HINGE LITTLE INDEX;So;0;L;;;;;N;;;;;\n1D8A3;SIGNWRITING HAND-ANGLE LITTLE INDEX;So;0;L;;;;;N;;;;;\n1D8A4;SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;;\n1D8A5;SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;;\n1D8A6;SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;;\n1D8A7;SIGNWRITING HAND-HINGE RING;So;0;L;;;;;N;;;;;\n1D8A8;SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;;\n1D8A9;SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;;\n1D8AA;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;;\n1D8AB;SIGNWRITING HAND-FIST RING DOWN;So;0;L;;;;;N;;;;;\n1D8AC;SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE;So;0;L;;;;;N;;;;;\n1D8AD;SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS;So;0;L;;;;;N;;;;;\n1D8AE;SIGNWRITING HAND-FIST RING UP;So;0;L;;;;;N;;;;;\n1D8AF;SIGNWRITING HAND-FIST RING RAISED KNUCKLE;So;0;L;;;;;N;;;;;\n1D8B0;SIGNWRITING HAND-FIST RING LITTLE;So;0;L;;;;;N;;;;;\n1D8B1;SIGNWRITING HAND-CIRCLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8B2;SIGNWRITING HAND-OVAL RING LITTLE;So;0;L;;;;;N;;;;;\n1D8B3;SIGNWRITING HAND-ANGLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8B4;SIGNWRITING HAND-FIST RING MIDDLE;So;0;L;;;;;N;;;;;\n1D8B5;SIGNWRITING HAND-FIST RING MIDDLE CONJOINED;So;0;L;;;;;N;;;;;\n1D8B6;SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;;\n1D8B7;SIGNWRITING HAND-FIST RING INDEX;So;0;L;;;;;N;;;;;\n1D8B8;SIGNWRITING HAND-FIST RING THUMB;So;0;L;;;;;N;;;;;\n1D8B9;SIGNWRITING HAND-HOOK RING THUMB;So;0;L;;;;;N;;;;;\n1D8BA;SIGNWRITING HAND-FIST INDEX RING LITTLE;So;0;L;;;;;N;;;;;\n1D8BB;SIGNWRITING HAND-CIRCLE INDEX RING LITTLE;So;0;L;;;;;N;;;;;\n1D8BC;SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON;So;0;L;;;;;N;;;;;\n1D8BD;SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;;\n1D8BE;SIGNWRITING HAND-HOOK INDEX RING LITTLE IN;So;0;L;;;;;N;;;;;\n1D8BF;SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER;So;0;L;;;;;N;;;;;\n1D8C0;SIGNWRITING HAND-CUP INDEX RING LITTLE;So;0;L;;;;;N;;;;;\n1D8C1;SIGNWRITING HAND-HINGE INDEX RING LITTLE;So;0;L;;;;;N;;;;;\n1D8C2;SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;;\n1D8C3;SIGNWRITING HAND-ANGLE INDEX RING LITTLE;So;0;L;;;;;N;;;;;\n1D8C4;SIGNWRITING HAND-FIST MIDDLE DOWN;So;0;L;;;;;N;;;;;\n1D8C5;SIGNWRITING HAND-HINGE MIDDLE;So;0;L;;;;;N;;;;;\n1D8C6;SIGNWRITING HAND-FIST MIDDLE UP;So;0;L;;;;;N;;;;;\n1D8C7;SIGNWRITING HAND-CIRCLE MIDDLE UP;So;0;L;;;;;N;;;;;\n1D8C8;SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE;So;0;L;;;;;N;;;;;\n1D8C9;SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;;\n1D8CA;SIGNWRITING HAND-HOOK MIDDLE THUMB;So;0;L;;;;;N;;;;;\n1D8CB;SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE;So;0;L;;;;;N;;;;;\n1D8CC;SIGNWRITING HAND-FIST MIDDLE LITTLE;So;0;L;;;;;N;;;;;\n1D8CD;SIGNWRITING HAND-FIST MIDDLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8CE;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8CF;SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON;So;0;L;;;;;N;;;;;\n1D8D0;SIGNWRITING HAND-CUP MIDDLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8D1;SIGNWRITING HAND-HINGE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8D2;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT;So;0;L;;;;;N;;;;;\n1D8D3;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN;So;0;L;;;;;N;;;;;\n1D8D4;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;;\n1D8D5;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT;So;0;L;;;;;N;;;;;\n1D8D6;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;;\n1D8D7;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE;So;0;L;;;;;N;;;;;\n1D8D8;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT;So;0;L;;;;;N;;;;;\n1D8D9;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN;So;0;L;;;;;N;;;;;\n1D8DA;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;;\n1D8DB;SIGNWRITING HAND-HINGE INDEX HINGED;So;0;L;;;;;N;;;;;\n1D8DC;SIGNWRITING HAND-FIST INDEX THUMB SIDE;So;0;L;;;;;N;;;;;\n1D8DD;SIGNWRITING HAND-HINGE INDEX THUMB SIDE;So;0;L;;;;;N;;;;;\n1D8DE;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL;So;0;L;;;;;N;;;;;\n1D8DF;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED;So;0;L;;;;;N;;;;;\n1D8E0;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT;So;0;L;;;;;N;;;;;\n1D8E1;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT;So;0;L;;;;;N;;;;;\n1D8E2;SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT;So;0;L;;;;;N;;;;;\n1D8E3;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE;So;0;L;;;;;N;;;;;\n1D8E4;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT;So;0;L;;;;;N;;;;;\n1D8E5;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT;So;0;L;;;;;N;;;;;\n1D8E6;SIGNWRITING HAND-FIST INDEX THUMB HOOK;So;0;L;;;;;N;;;;;\n1D8E7;SIGNWRITING HAND-FIST INDEX THUMB CURLICUE;So;0;L;;;;;N;;;;;\n1D8E8;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;;\n1D8E9;SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;;\n1D8EA;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER;So;0;L;;;;;N;;;;;\n1D8EB;SIGNWRITING HAND-FIST INDEX THUMB CIRCLE;So;0;L;;;;;N;;;;;\n1D8EC;SIGNWRITING HAND-CUP INDEX THUMB;So;0;L;;;;;N;;;;;\n1D8ED;SIGNWRITING HAND-CUP INDEX THUMB OPEN;So;0;L;;;;;N;;;;;\n1D8EE;SIGNWRITING HAND-HINGE INDEX THUMB OPEN;So;0;L;;;;;N;;;;;\n1D8EF;SIGNWRITING HAND-HINGE INDEX THUMB LARGE;So;0;L;;;;;N;;;;;\n1D8F0;SIGNWRITING HAND-HINGE INDEX THUMB;So;0;L;;;;;N;;;;;\n1D8F1;SIGNWRITING HAND-HINGE INDEX THUMB SMALL;So;0;L;;;;;N;;;;;\n1D8F2;SIGNWRITING HAND-ANGLE INDEX THUMB OUT;So;0;L;;;;;N;;;;;\n1D8F3;SIGNWRITING HAND-ANGLE INDEX THUMB IN;So;0;L;;;;;N;;;;;\n1D8F4;SIGNWRITING HAND-ANGLE INDEX THUMB;So;0;L;;;;;N;;;;;\n1D8F5;SIGNWRITING HAND-FIST THUMB;So;0;L;;;;;N;;;;;\n1D8F6;SIGNWRITING HAND-FIST THUMB HEEL;So;0;L;;;;;N;;;;;\n1D8F7;SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL;So;0;L;;;;;N;;;;;\n1D8F8;SIGNWRITING HAND-FIST THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;;\n1D8F9;SIGNWRITING HAND-FIST THUMB SIDE BENT;So;0;L;;;;;N;;;;;\n1D8FA;SIGNWRITING HAND-FIST THUMB FORWARD;So;0;L;;;;;N;;;;;\n1D8FB;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE;So;0;L;;;;;N;;;;;\n1D8FC;SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;;\n1D8FD;SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE;So;0;L;;;;;N;;;;;\n1D8FE;SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS;So;0;L;;;;;N;;;;;\n1D8FF;SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS;So;0;L;;;;;N;;;;;\n1D900;SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS;So;0;L;;;;;N;;;;;\n1D901;SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS;So;0;L;;;;;N;;;;;\n1D902;SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES;So;0;L;;;;;N;;;;;\n1D903;SIGNWRITING HAND-FIST;So;0;L;;;;;N;;;;;\n1D904;SIGNWRITING HAND-FIST HEEL;So;0;L;;;;;N;;;;;\n1D905;SIGNWRITING TOUCH SINGLE;So;0;L;;;;;N;;;;;\n1D906;SIGNWRITING TOUCH MULTIPLE;So;0;L;;;;;N;;;;;\n1D907;SIGNWRITING TOUCH BETWEEN;So;0;L;;;;;N;;;;;\n1D908;SIGNWRITING GRASP SINGLE;So;0;L;;;;;N;;;;;\n1D909;SIGNWRITING GRASP MULTIPLE;So;0;L;;;;;N;;;;;\n1D90A;SIGNWRITING GRASP BETWEEN;So;0;L;;;;;N;;;;;\n1D90B;SIGNWRITING STRIKE SINGLE;So;0;L;;;;;N;;;;;\n1D90C;SIGNWRITING STRIKE MULTIPLE;So;0;L;;;;;N;;;;;\n1D90D;SIGNWRITING STRIKE BETWEEN;So;0;L;;;;;N;;;;;\n1D90E;SIGNWRITING BRUSH SINGLE;So;0;L;;;;;N;;;;;\n1D90F;SIGNWRITING BRUSH MULTIPLE;So;0;L;;;;;N;;;;;\n1D910;SIGNWRITING BRUSH BETWEEN;So;0;L;;;;;N;;;;;\n1D911;SIGNWRITING RUB SINGLE;So;0;L;;;;;N;;;;;\n1D912;SIGNWRITING RUB MULTIPLE;So;0;L;;;;;N;;;;;\n1D913;SIGNWRITING RUB BETWEEN;So;0;L;;;;;N;;;;;\n1D914;SIGNWRITING SURFACE SYMBOLS;So;0;L;;;;;N;;;;;\n1D915;SIGNWRITING SURFACE BETWEEN;So;0;L;;;;;N;;;;;\n1D916;SIGNWRITING SQUEEZE LARGE SINGLE;So;0;L;;;;;N;;;;;\n1D917;SIGNWRITING SQUEEZE SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D918;SIGNWRITING SQUEEZE LARGE MULTIPLE;So;0;L;;;;;N;;;;;\n1D919;SIGNWRITING SQUEEZE SMALL MULTIPLE;So;0;L;;;;;N;;;;;\n1D91A;SIGNWRITING SQUEEZE SEQUENTIAL;So;0;L;;;;;N;;;;;\n1D91B;SIGNWRITING FLICK LARGE SINGLE;So;0;L;;;;;N;;;;;\n1D91C;SIGNWRITING FLICK SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D91D;SIGNWRITING FLICK LARGE MULTIPLE;So;0;L;;;;;N;;;;;\n1D91E;SIGNWRITING FLICK SMALL MULTIPLE;So;0;L;;;;;N;;;;;\n1D91F;SIGNWRITING FLICK SEQUENTIAL;So;0;L;;;;;N;;;;;\n1D920;SIGNWRITING SQUEEZE FLICK ALTERNATING;So;0;L;;;;;N;;;;;\n1D921;SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE;So;0;L;;;;;N;;;;;\n1D922;SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL;So;0;L;;;;;N;;;;;\n1D923;SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL;So;0;L;;;;;N;;;;;\n1D924;SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL;So;0;L;;;;;N;;;;;\n1D925;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE;So;0;L;;;;;N;;;;;\n1D926;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL;So;0;L;;;;;N;;;;;\n1D927;SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS;So;0;L;;;;;N;;;;;\n1D928;SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT;So;0;L;;;;;N;;;;;\n1D929;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT;So;0;L;;;;;N;;;;;\n1D92A;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;;\n1D92B;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;;\n1D92C;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;;\n1D92D;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;;\n1D92E;SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D92F;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;;\n1D930;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D931;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;;\n1D932;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;;\n1D933;SIGNWRITING MOVEMENT-WALLPLANE CROSS;So;0;L;;;;;N;;;;;\n1D934;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;;\n1D935;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D936;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING;So;0;L;;;;;N;;;;;\n1D937;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;;\n1D938;SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL;So;0;L;;;;;N;;;;;\n1D939;SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM;So;0;L;;;;;N;;;;;\n1D93A;SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE;So;0;L;;;;;N;;;;;\n1D93B;SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL;So;0;L;;;;;N;;;;;\n1D93C;SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;;\n1D93D;SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE;So;0;L;;;;;N;;;;;\n1D93E;SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION;So;0;L;;;;;N;;;;;\n1D93F;SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL;So;0;L;;;;;N;;;;;\n1D940;SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM;So;0;L;;;;;N;;;;;\n1D941;SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE;So;0;L;;;;;N;;;;;\n1D942;SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL;So;0;L;;;;;N;;;;;\n1D943;SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM;So;0;L;;;;;N;;;;;\n1D944;SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE;So;0;L;;;;;N;;;;;\n1D945;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;;\n1D946;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;;\n1D947;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;;\n1D948;SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL;So;0;L;;;;;N;;;;;\n1D949;SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;;\n1D94A;SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE;So;0;L;;;;;N;;;;;\n1D94B;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D94C;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D94D;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;;\n1D94E;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D94F;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D950;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;;\n1D951;SIGNWRITING TRAVEL-WALLPLANE SHAKING;So;0;L;;;;;N;;;;;\n1D952;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE;So;0;L;;;;;N;;;;;\n1D953;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE;So;0;L;;;;;N;;;;;\n1D954;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE;So;0;L;;;;;N;;;;;\n1D955;SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL;So;0;L;;;;;N;;;;;\n1D956;SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM;So;0;L;;;;;N;;;;;\n1D957;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE;So;0;L;;;;;N;;;;;\n1D958;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST;So;0;L;;;;;N;;;;;\n1D959;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL;So;0;L;;;;;N;;;;;\n1D95A;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM;So;0;L;;;;;N;;;;;\n1D95B;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE;So;0;L;;;;;N;;;;;\n1D95C;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST;So;0;L;;;;;N;;;;;\n1D95D;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL;So;0;L;;;;;N;;;;;\n1D95E;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM;So;0;L;;;;;N;;;;;\n1D95F;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE;So;0;L;;;;;N;;;;;\n1D960;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST;So;0;L;;;;;N;;;;;\n1D961;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL;So;0;L;;;;;N;;;;;\n1D962;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM;So;0;L;;;;;N;;;;;\n1D963;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE;So;0;L;;;;;N;;;;;\n1D964;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST;So;0;L;;;;;N;;;;;\n1D965;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;;\n1D966;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;;\n1D967;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;;\n1D968;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;;\n1D969;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D96A;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;;\n1D96B;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D96C;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;;\n1D96D;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;;\n1D96E;SIGNWRITING MOVEMENT-FLOORPLANE CROSS;So;0;L;;;;;N;;;;;\n1D96F;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;;\n1D970;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;;\n1D971;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT;So;0;L;;;;;N;;;;;\n1D972;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;;\n1D973;SIGNWRITING MOVEMENT-FLOORPLANE BEND;So;0;L;;;;;N;;;;;\n1D974;SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL;So;0;L;;;;;N;;;;;\n1D975;SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;;\n1D976;SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE;So;0;L;;;;;N;;;;;\n1D977;SIGNWRITING MOVEMENT-FLOORPLANE CHECK;So;0;L;;;;;N;;;;;\n1D978;SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL;So;0;L;;;;;N;;;;;\n1D979;SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM;So;0;L;;;;;N;;;;;\n1D97A;SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE;So;0;L;;;;;N;;;;;\n1D97B;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;;\n1D97C;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;;\n1D97D;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;;\n1D97E;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL;So;0;L;;;;;N;;;;;\n1D97F;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;;\n1D980;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE;So;0;L;;;;;N;;;;;\n1D981;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D982;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D983;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;;\n1D984;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D985;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D986;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;;\n1D987;SIGNWRITING TRAVEL-FLOORPLANE SHAKING;So;0;L;;;;;N;;;;;\n1D988;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL;So;0;L;;;;;N;;;;;\n1D989;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM;So;0;L;;;;;N;;;;;\n1D98A;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE;So;0;L;;;;;N;;;;;\n1D98B;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST;So;0;L;;;;;N;;;;;\n1D98C;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL;So;0;L;;;;;N;;;;;\n1D98D;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM;So;0;L;;;;;N;;;;;\n1D98E;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE;So;0;L;;;;;N;;;;;\n1D98F;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST;So;0;L;;;;;N;;;;;\n1D990;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL;So;0;L;;;;;N;;;;;\n1D991;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM;So;0;L;;;;;N;;;;;\n1D992;SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL;So;0;L;;;;;N;;;;;\n1D993;SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM;So;0;L;;;;;N;;;;;\n1D994;SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE;So;0;L;;;;;N;;;;;\n1D995;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL;So;0;L;;;;;N;;;;;\n1D996;SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM;So;0;L;;;;;N;;;;;\n1D997;SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE;So;0;L;;;;;N;;;;;\n1D998;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D999;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL;So;0;L;;;;;N;;;;;\n1D99A;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM;So;0;L;;;;;N;;;;;\n1D99B;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE;So;0;L;;;;;N;;;;;\n1D99C;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL;So;0;L;;;;;N;;;;;\n1D99D;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM;So;0;L;;;;;N;;;;;\n1D99E;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE;So;0;L;;;;;N;;;;;\n1D99F;SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT;So;0;L;;;;;N;;;;;\n1D9A0;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL;So;0;L;;;;;N;;;;;\n1D9A1;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM;So;0;L;;;;;N;;;;;\n1D9A2;SIGNWRITING ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D9A3;SIGNWRITING ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D9A4;SIGNWRITING ROTATION-WALLPLANE ALTERNATE;So;0;L;;;;;N;;;;;\n1D9A5;SIGNWRITING MOVEMENT-WALLPLANE SHAKING;So;0;L;;;;;N;;;;;\n1D9A6;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9A7;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9A8;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9A9;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9AA;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9AB;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9AC;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL;So;0;L;;;;;N;;;;;\n1D9AD;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9AE;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9AF;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9B0;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9B1;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9B2;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9B3;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST;So;0;L;;;;;N;;;;;\n1D9B4;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL;So;0;L;;;;;N;;;;;\n1D9B5;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM;So;0;L;;;;;N;;;;;\n1D9B6;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE;So;0;L;;;;;N;;;;;\n1D9B7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;;\n1D9B8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;;\n1D9B9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9BA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;;\n1D9BB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE;So;0;L;;;;;N;;;;;\n1D9BC;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE;So;0;L;;;;;N;;;;;\n1D9BD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D9BE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE;So;0;L;;;;;N;;;;;\n1D9BF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9C0;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;;\n1D9C1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;;\n1D9C2;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;;\n1D9C3;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING;So;0;L;;;;;N;;;;;\n1D9C4;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING;So;0;L;;;;;N;;;;;\n1D9C5;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING;So;0;L;;;;;N;;;;;\n1D9C6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;;\n1D9C7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;;\n1D9C8;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9C9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;;\n1D9CA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE;So;0;L;;;;;N;;;;;\n1D9CB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE;So;0;L;;;;;N;;;;;\n1D9CC;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D9CD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE;So;0;L;;;;;N;;;;;\n1D9CE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9CF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;;\n1D9D0;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;;\n1D9D1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;;\n1D9D2;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR;So;0;L;;;;;N;;;;;\n1D9D3;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR;So;0;L;;;;;N;;;;;\n1D9D4;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR;So;0;L;;;;;N;;;;;\n1D9D5;SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL;So;0;L;;;;;N;;;;;\n1D9D6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM;So;0;L;;;;;N;;;;;\n1D9D7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE;So;0;L;;;;;N;;;;;\n1D9D8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST;So;0;L;;;;;N;;;;;\n1D9D9;SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED;So;0;L;;;;;N;;;;;\n1D9DA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL;So;0;L;;;;;N;;;;;\n1D9DB;SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL;So;0;L;;;;;N;;;;;\n1D9DC;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE;So;0;L;;;;;N;;;;;\n1D9DD;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL;So;0;L;;;;;N;;;;;\n1D9DE;SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE;So;0;L;;;;;N;;;;;\n1D9DF;SIGNWRITING ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;;\n1D9E0;SIGNWRITING ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;;\n1D9E1;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;;\n1D9E2;SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL;So;0;L;;;;;N;;;;;\n1D9E3;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D9E4;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE;So;0;L;;;;;N;;;;;\n1D9E5;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9E6;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE;So;0;L;;;;;N;;;;;\n1D9E7;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE;So;0;L;;;;;N;;;;;\n1D9E8;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE;So;0;L;;;;;N;;;;;\n1D9E9;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE;So;0;L;;;;;N;;;;;\n1D9EA;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9EB;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE;So;0;L;;;;;N;;;;;\n1D9EC;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE;So;0;L;;;;;N;;;;;\n1D9ED;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE;So;0;L;;;;;N;;;;;\n1D9EE;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE;So;0;L;;;;;N;;;;;\n1D9EF;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE;So;0;L;;;;;N;;;;;\n1D9F0;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9F1;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE;So;0;L;;;;;N;;;;;\n1D9F2;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE;So;0;L;;;;;N;;;;;\n1D9F3;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE;So;0;L;;;;;N;;;;;\n1D9F4;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE;So;0;L;;;;;N;;;;;\n1D9F5;SIGNWRITING DYNAMIC ARROWHEAD SMALL;So;0;L;;;;;N;;;;;\n1D9F6;SIGNWRITING DYNAMIC ARROWHEAD LARGE;So;0;L;;;;;N;;;;;\n1D9F7;SIGNWRITING DYNAMIC FAST;So;0;L;;;;;N;;;;;\n1D9F8;SIGNWRITING DYNAMIC SLOW;So;0;L;;;;;N;;;;;\n1D9F9;SIGNWRITING DYNAMIC TENSE;So;0;L;;;;;N;;;;;\n1D9FA;SIGNWRITING DYNAMIC RELAXED;So;0;L;;;;;N;;;;;\n1D9FB;SIGNWRITING DYNAMIC SIMULTANEOUS;So;0;L;;;;;N;;;;;\n1D9FC;SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING;So;0;L;;;;;N;;;;;\n1D9FD;SIGNWRITING DYNAMIC EVERY OTHER TIME;So;0;L;;;;;N;;;;;\n1D9FE;SIGNWRITING DYNAMIC GRADUAL;So;0;L;;;;;N;;;;;\n1D9FF;SIGNWRITING HEAD;So;0;L;;;;;N;;;;;\n1DA00;SIGNWRITING HEAD RIM;Mn;0;NSM;;;;;N;;;;;\n1DA01;SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;;\n1DA02;SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT;Mn;0;NSM;;;;;N;;;;;\n1DA03;SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;;\n1DA04;SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE;Mn;0;NSM;;;;;N;;;;;\n1DA05;SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE;Mn;0;NSM;;;;;N;;;;;\n1DA06;SIGNWRITING HEAD MOVEMENT CIRCLE;Mn;0;NSM;;;;;N;;;;;\n1DA07;SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING;Mn;0;NSM;;;;;N;;;;;\n1DA08;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN;Mn;0;NSM;;;;;N;;;;;\n1DA09;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING;Mn;0;NSM;;;;;N;;;;;\n1DA0A;SIGNWRITING EYEBROWS STRAIGHT UP;Mn;0;NSM;;;;;N;;;;;\n1DA0B;SIGNWRITING EYEBROWS STRAIGHT NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA0C;SIGNWRITING EYEBROWS STRAIGHT DOWN;Mn;0;NSM;;;;;N;;;;;\n1DA0D;SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN;Mn;0;NSM;;;;;N;;;;;\n1DA0E;SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA0F;SIGNWRITING DREAMY EYEBROWS UP NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA10;SIGNWRITING DREAMY EYEBROWS NEUTRAL UP;Mn;0;NSM;;;;;N;;;;;\n1DA11;SIGNWRITING FOREHEAD NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA12;SIGNWRITING FOREHEAD CONTACT;Mn;0;NSM;;;;;N;;;;;\n1DA13;SIGNWRITING FOREHEAD WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA14;SIGNWRITING EYES OPEN;Mn;0;NSM;;;;;N;;;;;\n1DA15;SIGNWRITING EYES SQUEEZED;Mn;0;NSM;;;;;N;;;;;\n1DA16;SIGNWRITING EYES CLOSED;Mn;0;NSM;;;;;N;;;;;\n1DA17;SIGNWRITING EYE BLINK SINGLE;Mn;0;NSM;;;;;N;;;;;\n1DA18;SIGNWRITING EYE BLINK MULTIPLE;Mn;0;NSM;;;;;N;;;;;\n1DA19;SIGNWRITING EYES HALF OPEN;Mn;0;NSM;;;;;N;;;;;\n1DA1A;SIGNWRITING EYES WIDE OPEN;Mn;0;NSM;;;;;N;;;;;\n1DA1B;SIGNWRITING EYES HALF CLOSED;Mn;0;NSM;;;;;N;;;;;\n1DA1C;SIGNWRITING EYES WIDENING MOVEMENT;Mn;0;NSM;;;;;N;;;;;\n1DA1D;SIGNWRITING EYE WINK;Mn;0;NSM;;;;;N;;;;;\n1DA1E;SIGNWRITING EYELASHES UP;Mn;0;NSM;;;;;N;;;;;\n1DA1F;SIGNWRITING EYELASHES DOWN;Mn;0;NSM;;;;;N;;;;;\n1DA20;SIGNWRITING EYELASHES FLUTTERING;Mn;0;NSM;;;;;N;;;;;\n1DA21;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;;\n1DA22;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;;\n1DA23;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;;\n1DA24;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;;\n1DA25;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;;\n1DA26;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;;\n1DA27;SIGNWRITING EYEGAZE-WALLPLANE CURVED;Mn;0;NSM;;;;;N;;;;;\n1DA28;SIGNWRITING EYEGAZE-FLOORPLANE CURVED;Mn;0;NSM;;;;;N;;;;;\n1DA29;SIGNWRITING EYEGAZE-WALLPLANE CIRCLING;Mn;0;NSM;;;;;N;;;;;\n1DA2A;SIGNWRITING CHEEKS PUFFED;Mn;0;NSM;;;;;N;;;;;\n1DA2B;SIGNWRITING CHEEKS NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA2C;SIGNWRITING CHEEKS SUCKED;Mn;0;NSM;;;;;N;;;;;\n1DA2D;SIGNWRITING TENSE CHEEKS HIGH;Mn;0;NSM;;;;;N;;;;;\n1DA2E;SIGNWRITING TENSE CHEEKS MIDDLE;Mn;0;NSM;;;;;N;;;;;\n1DA2F;SIGNWRITING TENSE CHEEKS LOW;Mn;0;NSM;;;;;N;;;;;\n1DA30;SIGNWRITING EARS;Mn;0;NSM;;;;;N;;;;;\n1DA31;SIGNWRITING NOSE NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA32;SIGNWRITING NOSE CONTACT;Mn;0;NSM;;;;;N;;;;;\n1DA33;SIGNWRITING NOSE WRINKLES;Mn;0;NSM;;;;;N;;;;;\n1DA34;SIGNWRITING NOSE WIGGLES;Mn;0;NSM;;;;;N;;;;;\n1DA35;SIGNWRITING AIR BLOWING OUT;Mn;0;NSM;;;;;N;;;;;\n1DA36;SIGNWRITING AIR SUCKING IN;Mn;0;NSM;;;;;N;;;;;\n1DA37;SIGNWRITING AIR BLOW SMALL ROTATIONS;So;0;L;;;;;N;;;;;\n1DA38;SIGNWRITING AIR SUCK SMALL ROTATIONS;So;0;L;;;;;N;;;;;\n1DA39;SIGNWRITING BREATH INHALE;So;0;L;;;;;N;;;;;\n1DA3A;SIGNWRITING BREATH EXHALE;So;0;L;;;;;N;;;;;\n1DA3B;SIGNWRITING MOUTH CLOSED NEUTRAL;Mn;0;NSM;;;;;N;;;;;\n1DA3C;SIGNWRITING MOUTH CLOSED FORWARD;Mn;0;NSM;;;;;N;;;;;\n1DA3D;SIGNWRITING MOUTH CLOSED CONTACT;Mn;0;NSM;;;;;N;;;;;\n1DA3E;SIGNWRITING MOUTH SMILE;Mn;0;NSM;;;;;N;;;;;\n1DA3F;SIGNWRITING MOUTH SMILE WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA40;SIGNWRITING MOUTH SMILE OPEN;Mn;0;NSM;;;;;N;;;;;\n1DA41;SIGNWRITING MOUTH FROWN;Mn;0;NSM;;;;;N;;;;;\n1DA42;SIGNWRITING MOUTH FROWN WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA43;SIGNWRITING MOUTH FROWN OPEN;Mn;0;NSM;;;;;N;;;;;\n1DA44;SIGNWRITING MOUTH OPEN CIRCLE;Mn;0;NSM;;;;;N;;;;;\n1DA45;SIGNWRITING MOUTH OPEN FORWARD;Mn;0;NSM;;;;;N;;;;;\n1DA46;SIGNWRITING MOUTH OPEN WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA47;SIGNWRITING MOUTH OPEN OVAL;Mn;0;NSM;;;;;N;;;;;\n1DA48;SIGNWRITING MOUTH OPEN OVAL WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA49;SIGNWRITING MOUTH OPEN OVAL YAWN;Mn;0;NSM;;;;;N;;;;;\n1DA4A;SIGNWRITING MOUTH OPEN RECTANGLE;Mn;0;NSM;;;;;N;;;;;\n1DA4B;SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA4C;SIGNWRITING MOUTH OPEN RECTANGLE YAWN;Mn;0;NSM;;;;;N;;;;;\n1DA4D;SIGNWRITING MOUTH KISS;Mn;0;NSM;;;;;N;;;;;\n1DA4E;SIGNWRITING MOUTH KISS FORWARD;Mn;0;NSM;;;;;N;;;;;\n1DA4F;SIGNWRITING MOUTH KISS WRINKLED;Mn;0;NSM;;;;;N;;;;;\n1DA50;SIGNWRITING MOUTH TENSE;Mn;0;NSM;;;;;N;;;;;\n1DA51;SIGNWRITING MOUTH TENSE FORWARD;Mn;0;NSM;;;;;N;;;;;\n1DA52;SIGNWRITING MOUTH TENSE SUCKED;Mn;0;NSM;;;;;N;;;;;\n1DA53;SIGNWRITING LIPS PRESSED TOGETHER;Mn;0;NSM;;;;;N;;;;;\n1DA54;SIGNWRITING LIP LOWER OVER UPPER;Mn;0;NSM;;;;;N;;;;;\n1DA55;SIGNWRITING LIP UPPER OVER LOWER;Mn;0;NSM;;;;;N;;;;;\n1DA56;SIGNWRITING MOUTH CORNERS;Mn;0;NSM;;;;;N;;;;;\n1DA57;SIGNWRITING MOUTH WRINKLES SINGLE;Mn;0;NSM;;;;;N;;;;;\n1DA58;SIGNWRITING MOUTH WRINKLES DOUBLE;Mn;0;NSM;;;;;N;;;;;\n1DA59;SIGNWRITING TONGUE STICKING OUT FAR;Mn;0;NSM;;;;;N;;;;;\n1DA5A;SIGNWRITING TONGUE LICKING LIPS;Mn;0;NSM;;;;;N;;;;;\n1DA5B;SIGNWRITING TONGUE TIP BETWEEN LIPS;Mn;0;NSM;;;;;N;;;;;\n1DA5C;SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;;\n1DA5D;SIGNWRITING TONGUE INSIDE MOUTH RELAXED;Mn;0;NSM;;;;;N;;;;;\n1DA5E;SIGNWRITING TONGUE MOVES AGAINST CHEEK;Mn;0;NSM;;;;;N;;;;;\n1DA5F;SIGNWRITING TONGUE CENTRE STICKING OUT;Mn;0;NSM;;;;;N;;;;;\n1DA60;SIGNWRITING TONGUE CENTRE INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;;\n1DA61;SIGNWRITING TEETH;Mn;0;NSM;;;;;N;;;;;\n1DA62;SIGNWRITING TEETH MOVEMENT;Mn;0;NSM;;;;;N;;;;;\n1DA63;SIGNWRITING TEETH ON TONGUE;Mn;0;NSM;;;;;N;;;;;\n1DA64;SIGNWRITING TEETH ON TONGUE MOVEMENT;Mn;0;NSM;;;;;N;;;;;\n1DA65;SIGNWRITING TEETH ON LIPS;Mn;0;NSM;;;;;N;;;;;\n1DA66;SIGNWRITING TEETH ON LIPS MOVEMENT;Mn;0;NSM;;;;;N;;;;;\n1DA67;SIGNWRITING TEETH BITE LIPS;Mn;0;NSM;;;;;N;;;;;\n1DA68;SIGNWRITING MOVEMENT-WALLPLANE JAW;Mn;0;NSM;;;;;N;;;;;\n1DA69;SIGNWRITING MOVEMENT-FLOORPLANE JAW;Mn;0;NSM;;;;;N;;;;;\n1DA6A;SIGNWRITING NECK;Mn;0;NSM;;;;;N;;;;;\n1DA6B;SIGNWRITING HAIR;Mn;0;NSM;;;;;N;;;;;\n1DA6C;SIGNWRITING EXCITEMENT;Mn;0;NSM;;;;;N;;;;;\n1DA6D;SIGNWRITING SHOULDER HIP SPINE;So;0;L;;;;;N;;;;;\n1DA6E;SIGNWRITING SHOULDER HIP POSITIONS;So;0;L;;;;;N;;;;;\n1DA6F;SIGNWRITING WALLPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;;\n1DA70;SIGNWRITING FLOORPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;;\n1DA71;SIGNWRITING SHOULDER TILTING FROM WAIST;So;0;L;;;;;N;;;;;\n1DA72;SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH;So;0;L;;;;;N;;;;;\n1DA73;SIGNWRITING TORSO-WALLPLANE CURVED BEND;So;0;L;;;;;N;;;;;\n1DA74;SIGNWRITING TORSO-FLOORPLANE TWISTING;So;0;L;;;;;N;;;;;\n1DA75;SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS;Mn;0;NSM;;;;;N;;;;;\n1DA76;SIGNWRITING LIMB COMBINATION;So;0;L;;;;;N;;;;;\n1DA77;SIGNWRITING LIMB LENGTH-1;So;0;L;;;;;N;;;;;\n1DA78;SIGNWRITING LIMB LENGTH-2;So;0;L;;;;;N;;;;;\n1DA79;SIGNWRITING LIMB LENGTH-3;So;0;L;;;;;N;;;;;\n1DA7A;SIGNWRITING LIMB LENGTH-4;So;0;L;;;;;N;;;;;\n1DA7B;SIGNWRITING LIMB LENGTH-5;So;0;L;;;;;N;;;;;\n1DA7C;SIGNWRITING LIMB LENGTH-6;So;0;L;;;;;N;;;;;\n1DA7D;SIGNWRITING LIMB LENGTH-7;So;0;L;;;;;N;;;;;\n1DA7E;SIGNWRITING FINGER;So;0;L;;;;;N;;;;;\n1DA7F;SIGNWRITING LOCATION-WALLPLANE SPACE;So;0;L;;;;;N;;;;;\n1DA80;SIGNWRITING LOCATION-FLOORPLANE SPACE;So;0;L;;;;;N;;;;;\n1DA81;SIGNWRITING LOCATION HEIGHT;So;0;L;;;;;N;;;;;\n1DA82;SIGNWRITING LOCATION WIDTH;So;0;L;;;;;N;;;;;\n1DA83;SIGNWRITING LOCATION DEPTH;So;0;L;;;;;N;;;;;\n1DA84;SIGNWRITING LOCATION HEAD NECK;Mn;0;NSM;;;;;N;;;;;\n1DA85;SIGNWRITING LOCATION TORSO;So;0;L;;;;;N;;;;;\n1DA86;SIGNWRITING LOCATION LIMBS DIGITS;So;0;L;;;;;N;;;;;\n1DA87;SIGNWRITING COMMA;Po;0;L;;;;;N;;;;;\n1DA88;SIGNWRITING FULL STOP;Po;0;L;;;;;N;;;;;\n1DA89;SIGNWRITING SEMICOLON;Po;0;L;;;;;N;;;;;\n1DA8A;SIGNWRITING COLON;Po;0;L;;;;;N;;;;;\n1DA8B;SIGNWRITING PARENTHESIS;Po;0;L;;;;;N;;;;;\n1DA9B;SIGNWRITING FILL MODIFIER-2;Mn;0;NSM;;;;;N;;;;;\n1DA9C;SIGNWRITING FILL MODIFIER-3;Mn;0;NSM;;;;;N;;;;;\n1DA9D;SIGNWRITING FILL MODIFIER-4;Mn;0;NSM;;;;;N;;;;;\n1DA9E;SIGNWRITING FILL MODIFIER-5;Mn;0;NSM;;;;;N;;;;;\n1DA9F;SIGNWRITING FILL MODIFIER-6;Mn;0;NSM;;;;;N;;;;;\n1DAA1;SIGNWRITING ROTATION MODIFIER-2;Mn;0;NSM;;;;;N;;;;;\n1DAA2;SIGNWRITING ROTATION MODIFIER-3;Mn;0;NSM;;;;;N;;;;;\n1DAA3;SIGNWRITING ROTATION MODIFIER-4;Mn;0;NSM;;;;;N;;;;;\n1DAA4;SIGNWRITING ROTATION MODIFIER-5;Mn;0;NSM;;;;;N;;;;;\n1DAA5;SIGNWRITING ROTATION MODIFIER-6;Mn;0;NSM;;;;;N;;;;;\n1DAA6;SIGNWRITING ROTATION MODIFIER-7;Mn;0;NSM;;;;;N;;;;;\n1DAA7;SIGNWRITING ROTATION MODIFIER-8;Mn;0;NSM;;;;;N;;;;;\n1DAA8;SIGNWRITING ROTATION MODIFIER-9;Mn;0;NSM;;;;;N;;;;;\n1DAA9;SIGNWRITING ROTATION MODIFIER-10;Mn;0;NSM;;;;;N;;;;;\n1DAAA;SIGNWRITING ROTATION MODIFIER-11;Mn;0;NSM;;;;;N;;;;;\n1DAAB;SIGNWRITING ROTATION MODIFIER-12;Mn;0;NSM;;;;;N;;;;;\n1DAAC;SIGNWRITING ROTATION MODIFIER-13;Mn;0;NSM;;;;;N;;;;;\n1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;;\n1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;;\n1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;;\n1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;;\n1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;;\n1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;;\n1E003;COMBINING GLAGOLITIC LETTER GLAGOLI;Mn;230;NSM;;;;;N;;;;;\n1E004;COMBINING GLAGOLITIC LETTER DOBRO;Mn;230;NSM;;;;;N;;;;;\n1E005;COMBINING GLAGOLITIC LETTER YESTU;Mn;230;NSM;;;;;N;;;;;\n1E006;COMBINING GLAGOLITIC LETTER ZHIVETE;Mn;230;NSM;;;;;N;;;;;\n1E008;COMBINING GLAGOLITIC LETTER ZEMLJA;Mn;230;NSM;;;;;N;;;;;\n1E009;COMBINING GLAGOLITIC LETTER IZHE;Mn;230;NSM;;;;;N;;;;;\n1E00A;COMBINING GLAGOLITIC LETTER INITIAL IZHE;Mn;230;NSM;;;;;N;;;;;\n1E00B;COMBINING GLAGOLITIC LETTER I;Mn;230;NSM;;;;;N;;;;;\n1E00C;COMBINING GLAGOLITIC LETTER DJERVI;Mn;230;NSM;;;;;N;;;;;\n1E00D;COMBINING GLAGOLITIC LETTER KAKO;Mn;230;NSM;;;;;N;;;;;\n1E00E;COMBINING GLAGOLITIC LETTER LJUDIJE;Mn;230;NSM;;;;;N;;;;;\n1E00F;COMBINING GLAGOLITIC LETTER MYSLITE;Mn;230;NSM;;;;;N;;;;;\n1E010;COMBINING GLAGOLITIC LETTER NASHI;Mn;230;NSM;;;;;N;;;;;\n1E011;COMBINING GLAGOLITIC LETTER ONU;Mn;230;NSM;;;;;N;;;;;\n1E012;COMBINING GLAGOLITIC LETTER POKOJI;Mn;230;NSM;;;;;N;;;;;\n1E013;COMBINING GLAGOLITIC LETTER RITSI;Mn;230;NSM;;;;;N;;;;;\n1E014;COMBINING GLAGOLITIC LETTER SLOVO;Mn;230;NSM;;;;;N;;;;;\n1E015;COMBINING GLAGOLITIC LETTER TVRIDO;Mn;230;NSM;;;;;N;;;;;\n1E016;COMBINING GLAGOLITIC LETTER UKU;Mn;230;NSM;;;;;N;;;;;\n1E017;COMBINING GLAGOLITIC LETTER FRITU;Mn;230;NSM;;;;;N;;;;;\n1E018;COMBINING GLAGOLITIC LETTER HERU;Mn;230;NSM;;;;;N;;;;;\n1E01B;COMBINING GLAGOLITIC LETTER SHTA;Mn;230;NSM;;;;;N;;;;;\n1E01C;COMBINING GLAGOLITIC LETTER TSI;Mn;230;NSM;;;;;N;;;;;\n1E01D;COMBINING GLAGOLITIC LETTER CHRIVI;Mn;230;NSM;;;;;N;;;;;\n1E01E;COMBINING GLAGOLITIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;\n1E01F;COMBINING GLAGOLITIC LETTER YERU;Mn;230;NSM;;;;;N;;;;;\n1E020;COMBINING GLAGOLITIC LETTER YERI;Mn;230;NSM;;;;;N;;;;;\n1E021;COMBINING GLAGOLITIC LETTER YATI;Mn;230;NSM;;;;;N;;;;;\n1E023;COMBINING GLAGOLITIC LETTER YU;Mn;230;NSM;;;;;N;;;;;\n1E024;COMBINING GLAGOLITIC LETTER SMALL YUS;Mn;230;NSM;;;;;N;;;;;\n1E026;COMBINING GLAGOLITIC LETTER YO;Mn;230;NSM;;;;;N;;;;;\n1E027;COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS;Mn;230;NSM;;;;;N;;;;;\n1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;\n1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;\n1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;\n1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;;\n1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;;\n1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;;\n1E103;NYIAKENG PUACHUE HMONG LETTER TA;Lo;0;L;;;;;N;;;;;\n1E104;NYIAKENG PUACHUE HMONG LETTER HA;Lo;0;L;;;;;N;;;;;\n1E105;NYIAKENG PUACHUE HMONG LETTER NA;Lo;0;L;;;;;N;;;;;\n1E106;NYIAKENG PUACHUE HMONG LETTER XA;Lo;0;L;;;;;N;;;;;\n1E107;NYIAKENG PUACHUE HMONG LETTER NKA;Lo;0;L;;;;;N;;;;;\n1E108;NYIAKENG PUACHUE HMONG LETTER CA;Lo;0;L;;;;;N;;;;;\n1E109;NYIAKENG PUACHUE HMONG LETTER LA;Lo;0;L;;;;;N;;;;;\n1E10A;NYIAKENG PUACHUE HMONG LETTER SA;Lo;0;L;;;;;N;;;;;\n1E10B;NYIAKENG PUACHUE HMONG LETTER ZA;Lo;0;L;;;;;N;;;;;\n1E10C;NYIAKENG PUACHUE HMONG LETTER NCA;Lo;0;L;;;;;N;;;;;\n1E10D;NYIAKENG PUACHUE HMONG LETTER NTSA;Lo;0;L;;;;;N;;;;;\n1E10E;NYIAKENG PUACHUE HMONG LETTER KA;Lo;0;L;;;;;N;;;;;\n1E10F;NYIAKENG PUACHUE HMONG LETTER DA;Lo;0;L;;;;;N;;;;;\n1E110;NYIAKENG PUACHUE HMONG LETTER NYA;Lo;0;L;;;;;N;;;;;\n1E111;NYIAKENG PUACHUE HMONG LETTER NRA;Lo;0;L;;;;;N;;;;;\n1E112;NYIAKENG PUACHUE HMONG LETTER VA;Lo;0;L;;;;;N;;;;;\n1E113;NYIAKENG PUACHUE HMONG LETTER NTXA;Lo;0;L;;;;;N;;;;;\n1E114;NYIAKENG PUACHUE HMONG LETTER TXA;Lo;0;L;;;;;N;;;;;\n1E115;NYIAKENG PUACHUE HMONG LETTER FA;Lo;0;L;;;;;N;;;;;\n1E116;NYIAKENG PUACHUE HMONG LETTER RA;Lo;0;L;;;;;N;;;;;\n1E117;NYIAKENG PUACHUE HMONG LETTER QA;Lo;0;L;;;;;N;;;;;\n1E118;NYIAKENG PUACHUE HMONG LETTER YA;Lo;0;L;;;;;N;;;;;\n1E119;NYIAKENG PUACHUE HMONG LETTER NQA;Lo;0;L;;;;;N;;;;;\n1E11A;NYIAKENG PUACHUE HMONG LETTER PA;Lo;0;L;;;;;N;;;;;\n1E11B;NYIAKENG PUACHUE HMONG LETTER XYA;Lo;0;L;;;;;N;;;;;\n1E11C;NYIAKENG PUACHUE HMONG LETTER NPA;Lo;0;L;;;;;N;;;;;\n1E11D;NYIAKENG PUACHUE HMONG LETTER DLA;Lo;0;L;;;;;N;;;;;\n1E11E;NYIAKENG PUACHUE HMONG LETTER NPLA;Lo;0;L;;;;;N;;;;;\n1E11F;NYIAKENG PUACHUE HMONG LETTER HAH;Lo;0;L;;;;;N;;;;;\n1E120;NYIAKENG PUACHUE HMONG LETTER MLA;Lo;0;L;;;;;N;;;;;\n1E121;NYIAKENG PUACHUE HMONG LETTER PLA;Lo;0;L;;;;;N;;;;;\n1E122;NYIAKENG PUACHUE HMONG LETTER GA;Lo;0;L;;;;;N;;;;;\n1E123;NYIAKENG PUACHUE HMONG LETTER RRA;Lo;0;L;;;;;N;;;;;\n1E124;NYIAKENG PUACHUE HMONG LETTER A;Lo;0;L;;;;;N;;;;;\n1E125;NYIAKENG PUACHUE HMONG LETTER AA;Lo;0;L;;;;;N;;;;;\n1E126;NYIAKENG PUACHUE HMONG LETTER I;Lo;0;L;;;;;N;;;;;\n1E127;NYIAKENG PUACHUE HMONG LETTER U;Lo;0;L;;;;;N;;;;;\n1E128;NYIAKENG PUACHUE HMONG LETTER O;Lo;0;L;;;;;N;;;;;\n1E129;NYIAKENG PUACHUE HMONG LETTER OO;Lo;0;L;;;;;N;;;;;\n1E12A;NYIAKENG PUACHUE HMONG LETTER E;Lo;0;L;;;;;N;;;;;\n1E12B;NYIAKENG PUACHUE HMONG LETTER EE;Lo;0;L;;;;;N;;;;;\n1E12C;NYIAKENG PUACHUE HMONG LETTER W;Lo;0;L;;;;;N;;;;;\n1E130;NYIAKENG PUACHUE HMONG TONE-B;Mn;230;NSM;;;;;N;;;;;\n1E131;NYIAKENG PUACHUE HMONG TONE-M;Mn;230;NSM;;;;;N;;;;;\n1E132;NYIAKENG PUACHUE HMONG TONE-J;Mn;230;NSM;;;;;N;;;;;\n1E133;NYIAKENG PUACHUE HMONG TONE-V;Mn;230;NSM;;;;;N;;;;;\n1E134;NYIAKENG PUACHUE HMONG TONE-S;Mn;230;NSM;;;;;N;;;;;\n1E135;NYIAKENG PUACHUE HMONG TONE-G;Mn;230;NSM;;;;;N;;;;;\n1E136;NYIAKENG PUACHUE HMONG TONE-D;Mn;230;NSM;;;;;N;;;;;\n1E137;NYIAKENG PUACHUE HMONG SIGN FOR PERSON;Lm;0;L;;;;;N;;;;;\n1E138;NYIAKENG PUACHUE HMONG SIGN FOR THING;Lm;0;L;;;;;N;;;;;\n1E139;NYIAKENG PUACHUE HMONG SIGN FOR LOCATION;Lm;0;L;;;;;N;;;;;\n1E13A;NYIAKENG PUACHUE HMONG SIGN FOR ANIMAL;Lm;0;L;;;;;N;;;;;\n1E13B;NYIAKENG PUACHUE HMONG SIGN FOR INVERTEBRATE;Lm;0;L;;;;;N;;;;;\n1E13C;NYIAKENG PUACHUE HMONG SIGN XW XW;Lm;0;L;;;;;N;;;;;\n1E13D;NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;\n1E140;NYIAKENG PUACHUE HMONG DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1E141;NYIAKENG PUACHUE HMONG DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1E142;NYIAKENG PUACHUE HMONG DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1E143;NYIAKENG PUACHUE HMONG DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1E144;NYIAKENG PUACHUE HMONG DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1E145;NYIAKENG PUACHUE HMONG DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1E146;NYIAKENG PUACHUE HMONG DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1E147;NYIAKENG PUACHUE HMONG DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1E148;NYIAKENG PUACHUE HMONG DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;;\n1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;;\n1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;;\n1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;;\n1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;;\n1E2C3;WANCHO LETTER CA;Lo;0;L;;;;;N;;;;;\n1E2C4;WANCHO LETTER DA;Lo;0;L;;;;;N;;;;;\n1E2C5;WANCHO LETTER GA;Lo;0;L;;;;;N;;;;;\n1E2C6;WANCHO LETTER YA;Lo;0;L;;;;;N;;;;;\n1E2C7;WANCHO LETTER PHA;Lo;0;L;;;;;N;;;;;\n1E2C8;WANCHO LETTER LA;Lo;0;L;;;;;N;;;;;\n1E2C9;WANCHO LETTER NA;Lo;0;L;;;;;N;;;;;\n1E2CA;WANCHO LETTER PA;Lo;0;L;;;;;N;;;;;\n1E2CB;WANCHO LETTER TA;Lo;0;L;;;;;N;;;;;\n1E2CC;WANCHO LETTER THA;Lo;0;L;;;;;N;;;;;\n1E2CD;WANCHO LETTER FA;Lo;0;L;;;;;N;;;;;\n1E2CE;WANCHO LETTER SA;Lo;0;L;;;;;N;;;;;\n1E2CF;WANCHO LETTER SHA;Lo;0;L;;;;;N;;;;;\n1E2D0;WANCHO LETTER JA;Lo;0;L;;;;;N;;;;;\n1E2D1;WANCHO LETTER ZA;Lo;0;L;;;;;N;;;;;\n1E2D2;WANCHO LETTER WA;Lo;0;L;;;;;N;;;;;\n1E2D3;WANCHO LETTER VA;Lo;0;L;;;;;N;;;;;\n1E2D4;WANCHO LETTER KA;Lo;0;L;;;;;N;;;;;\n1E2D5;WANCHO LETTER O;Lo;0;L;;;;;N;;;;;\n1E2D6;WANCHO LETTER AU;Lo;0;L;;;;;N;;;;;\n1E2D7;WANCHO LETTER RA;Lo;0;L;;;;;N;;;;;\n1E2D8;WANCHO LETTER MA;Lo;0;L;;;;;N;;;;;\n1E2D9;WANCHO LETTER KHA;Lo;0;L;;;;;N;;;;;\n1E2DA;WANCHO LETTER HA;Lo;0;L;;;;;N;;;;;\n1E2DB;WANCHO LETTER E;Lo;0;L;;;;;N;;;;;\n1E2DC;WANCHO LETTER I;Lo;0;L;;;;;N;;;;;\n1E2DD;WANCHO LETTER NGA;Lo;0;L;;;;;N;;;;;\n1E2DE;WANCHO LETTER U;Lo;0;L;;;;;N;;;;;\n1E2DF;WANCHO LETTER LLHA;Lo;0;L;;;;;N;;;;;\n1E2E0;WANCHO LETTER TSA;Lo;0;L;;;;;N;;;;;\n1E2E1;WANCHO LETTER TRA;Lo;0;L;;;;;N;;;;;\n1E2E2;WANCHO LETTER ONG;Lo;0;L;;;;;N;;;;;\n1E2E3;WANCHO LETTER AANG;Lo;0;L;;;;;N;;;;;\n1E2E4;WANCHO LETTER ANG;Lo;0;L;;;;;N;;;;;\n1E2E5;WANCHO LETTER ING;Lo;0;L;;;;;N;;;;;\n1E2E6;WANCHO LETTER ON;Lo;0;L;;;;;N;;;;;\n1E2E7;WANCHO LETTER EN;Lo;0;L;;;;;N;;;;;\n1E2E8;WANCHO LETTER AAN;Lo;0;L;;;;;N;;;;;\n1E2E9;WANCHO LETTER NYA;Lo;0;L;;;;;N;;;;;\n1E2EA;WANCHO LETTER UEN;Lo;0;L;;;;;N;;;;;\n1E2EB;WANCHO LETTER YIH;Lo;0;L;;;;;N;;;;;\n1E2EC;WANCHO TONE TUP;Mn;230;NSM;;;;;N;;;;;\n1E2ED;WANCHO TONE TUPNI;Mn;230;NSM;;;;;N;;;;;\n1E2EE;WANCHO TONE KOI;Mn;230;NSM;;;;;N;;;;;\n1E2EF;WANCHO TONE KOINI;Mn;230;NSM;;;;;N;;;;;\n1E2F0;WANCHO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;\n1E2F1;WANCHO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;\n1E2F2;WANCHO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;\n1E2F3;WANCHO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;\n1E2F4;WANCHO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;\n1E2F5;WANCHO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;\n1E2F6;WANCHO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;\n1E2F7;WANCHO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;\n1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;\n1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;\n1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;;\n1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;;\n1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;;\n1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;;\n1E803;MENDE KIKAKUI SYLLABLE M065 KEE;Lo;0;R;;;;;N;;;;;\n1E804;MENDE KIKAKUI SYLLABLE M095 KE;Lo;0;R;;;;;N;;;;;\n1E805;MENDE KIKAKUI SYLLABLE M076 KOO;Lo;0;R;;;;;N;;;;;\n1E806;MENDE KIKAKUI SYLLABLE M048 KO;Lo;0;R;;;;;N;;;;;\n1E807;MENDE KIKAKUI SYLLABLE M179 KUA;Lo;0;R;;;;;N;;;;;\n1E808;MENDE KIKAKUI SYLLABLE M004 WI;Lo;0;R;;;;;N;;;;;\n1E809;MENDE KIKAKUI SYLLABLE M005 WA;Lo;0;R;;;;;N;;;;;\n1E80A;MENDE KIKAKUI SYLLABLE M006 WU;Lo;0;R;;;;;N;;;;;\n1E80B;MENDE KIKAKUI SYLLABLE M126 WEE;Lo;0;R;;;;;N;;;;;\n1E80C;MENDE KIKAKUI SYLLABLE M118 WE;Lo;0;R;;;;;N;;;;;\n1E80D;MENDE KIKAKUI SYLLABLE M114 WOO;Lo;0;R;;;;;N;;;;;\n1E80E;MENDE KIKAKUI SYLLABLE M045 WO;Lo;0;R;;;;;N;;;;;\n1E80F;MENDE KIKAKUI SYLLABLE M194 WUI;Lo;0;R;;;;;N;;;;;\n1E810;MENDE KIKAKUI SYLLABLE M143 WEI;Lo;0;R;;;;;N;;;;;\n1E811;MENDE KIKAKUI SYLLABLE M061 WVI;Lo;0;R;;;;;N;;;;;\n1E812;MENDE KIKAKUI SYLLABLE M049 WVA;Lo;0;R;;;;;N;;;;;\n1E813;MENDE KIKAKUI SYLLABLE M139 WVE;Lo;0;R;;;;;N;;;;;\n1E814;MENDE KIKAKUI SYLLABLE M007 MIN;Lo;0;R;;;;;N;;;;;\n1E815;MENDE KIKAKUI SYLLABLE M008 MAN;Lo;0;R;;;;;N;;;;;\n1E816;MENDE KIKAKUI SYLLABLE M009 MUN;Lo;0;R;;;;;N;;;;;\n1E817;MENDE KIKAKUI SYLLABLE M059 MEN;Lo;0;R;;;;;N;;;;;\n1E818;MENDE KIKAKUI SYLLABLE M094 MON;Lo;0;R;;;;;N;;;;;\n1E819;MENDE KIKAKUI SYLLABLE M154 MUAN;Lo;0;R;;;;;N;;;;;\n1E81A;MENDE KIKAKUI SYLLABLE M189 MUEN;Lo;0;R;;;;;N;;;;;\n1E81B;MENDE KIKAKUI SYLLABLE M010 BI;Lo;0;R;;;;;N;;;;;\n1E81C;MENDE KIKAKUI SYLLABLE M011 BA;Lo;0;R;;;;;N;;;;;\n1E81D;MENDE KIKAKUI SYLLABLE M012 BU;Lo;0;R;;;;;N;;;;;\n1E81E;MENDE KIKAKUI SYLLABLE M150 BEE;Lo;0;R;;;;;N;;;;;\n1E81F;MENDE KIKAKUI SYLLABLE M097 BE;Lo;0;R;;;;;N;;;;;\n1E820;MENDE KIKAKUI SYLLABLE M103 BOO;Lo;0;R;;;;;N;;;;;\n1E821;MENDE KIKAKUI SYLLABLE M138 BO;Lo;0;R;;;;;N;;;;;\n1E822;MENDE KIKAKUI SYLLABLE M013 I;Lo;0;R;;;;;N;;;;;\n1E823;MENDE KIKAKUI SYLLABLE M014 A;Lo;0;R;;;;;N;;;;;\n1E824;MENDE KIKAKUI SYLLABLE M015 U;Lo;0;R;;;;;N;;;;;\n1E825;MENDE KIKAKUI SYLLABLE M163 EE;Lo;0;R;;;;;N;;;;;\n1E826;MENDE KIKAKUI SYLLABLE M100 E;Lo;0;R;;;;;N;;;;;\n1E827;MENDE KIKAKUI SYLLABLE M165 OO;Lo;0;R;;;;;N;;;;;\n1E828;MENDE KIKAKUI SYLLABLE M147 O;Lo;0;R;;;;;N;;;;;\n1E829;MENDE KIKAKUI SYLLABLE M137 EI;Lo;0;R;;;;;N;;;;;\n1E82A;MENDE KIKAKUI SYLLABLE M131 IN;Lo;0;R;;;;;N;;;;;\n1E82B;MENDE KIKAKUI SYLLABLE M135 IN;Lo;0;R;;;;;N;;;;;\n1E82C;MENDE KIKAKUI SYLLABLE M195 AN;Lo;0;R;;;;;N;;;;;\n1E82D;MENDE KIKAKUI SYLLABLE M178 EN;Lo;0;R;;;;;N;;;;;\n1E82E;MENDE KIKAKUI SYLLABLE M019 SI;Lo;0;R;;;;;N;;;;;\n1E82F;MENDE KIKAKUI SYLLABLE M020 SA;Lo;0;R;;;;;N;;;;;\n1E830;MENDE KIKAKUI SYLLABLE M021 SU;Lo;0;R;;;;;N;;;;;\n1E831;MENDE KIKAKUI SYLLABLE M162 SEE;Lo;0;R;;;;;N;;;;;\n1E832;MENDE KIKAKUI SYLLABLE M116 SE;Lo;0;R;;;;;N;;;;;\n1E833;MENDE KIKAKUI SYLLABLE M136 SOO;Lo;0;R;;;;;N;;;;;\n1E834;MENDE KIKAKUI SYLLABLE M079 SO;Lo;0;R;;;;;N;;;;;\n1E835;MENDE KIKAKUI SYLLABLE M196 SIA;Lo;0;R;;;;;N;;;;;\n1E836;MENDE KIKAKUI SYLLABLE M025 LI;Lo;0;R;;;;;N;;;;;\n1E837;MENDE KIKAKUI SYLLABLE M026 LA;Lo;0;R;;;;;N;;;;;\n1E838;MENDE KIKAKUI SYLLABLE M027 LU;Lo;0;R;;;;;N;;;;;\n1E839;MENDE KIKAKUI SYLLABLE M084 LEE;Lo;0;R;;;;;N;;;;;\n1E83A;MENDE KIKAKUI SYLLABLE M073 LE;Lo;0;R;;;;;N;;;;;\n1E83B;MENDE KIKAKUI SYLLABLE M054 LOO;Lo;0;R;;;;;N;;;;;\n1E83C;MENDE KIKAKUI SYLLABLE M153 LO;Lo;0;R;;;;;N;;;;;\n1E83D;MENDE KIKAKUI SYLLABLE M110 LONG LE;Lo;0;R;;;;;N;;;;;\n1E83E;MENDE KIKAKUI SYLLABLE M016 DI;Lo;0;R;;;;;N;;;;;\n1E83F;MENDE KIKAKUI SYLLABLE M017 DA;Lo;0;R;;;;;N;;;;;\n1E840;MENDE KIKAKUI SYLLABLE M018 DU;Lo;0;R;;;;;N;;;;;\n1E841;MENDE KIKAKUI SYLLABLE M089 DEE;Lo;0;R;;;;;N;;;;;\n1E842;MENDE KIKAKUI SYLLABLE M180 DOO;Lo;0;R;;;;;N;;;;;\n1E843;MENDE KIKAKUI SYLLABLE M181 DO;Lo;0;R;;;;;N;;;;;\n1E844;MENDE KIKAKUI SYLLABLE M022 TI;Lo;0;R;;;;;N;;;;;\n1E845;MENDE KIKAKUI SYLLABLE M023 TA;Lo;0;R;;;;;N;;;;;\n1E846;MENDE KIKAKUI SYLLABLE M024 TU;Lo;0;R;;;;;N;;;;;\n1E847;MENDE KIKAKUI SYLLABLE M091 TEE;Lo;0;R;;;;;N;;;;;\n1E848;MENDE KIKAKUI SYLLABLE M055 TE;Lo;0;R;;;;;N;;;;;\n1E849;MENDE KIKAKUI SYLLABLE M104 TOO;Lo;0;R;;;;;N;;;;;\n1E84A;MENDE KIKAKUI SYLLABLE M069 TO;Lo;0;R;;;;;N;;;;;\n1E84B;MENDE KIKAKUI SYLLABLE M028 JI;Lo;0;R;;;;;N;;;;;\n1E84C;MENDE KIKAKUI SYLLABLE M029 JA;Lo;0;R;;;;;N;;;;;\n1E84D;MENDE KIKAKUI SYLLABLE M030 JU;Lo;0;R;;;;;N;;;;;\n1E84E;MENDE KIKAKUI SYLLABLE M157 JEE;Lo;0;R;;;;;N;;;;;\n1E84F;MENDE KIKAKUI SYLLABLE M113 JE;Lo;0;R;;;;;N;;;;;\n1E850;MENDE KIKAKUI SYLLABLE M160 JOO;Lo;0;R;;;;;N;;;;;\n1E851;MENDE KIKAKUI SYLLABLE M063 JO;Lo;0;R;;;;;N;;;;;\n1E852;MENDE KIKAKUI SYLLABLE M175 LONG JO;Lo;0;R;;;;;N;;;;;\n1E853;MENDE KIKAKUI SYLLABLE M031 YI;Lo;0;R;;;;;N;;;;;\n1E854;MENDE KIKAKUI SYLLABLE M032 YA;Lo;0;R;;;;;N;;;;;\n1E855;MENDE KIKAKUI SYLLABLE M033 YU;Lo;0;R;;;;;N;;;;;\n1E856;MENDE KIKAKUI SYLLABLE M109 YEE;Lo;0;R;;;;;N;;;;;\n1E857;MENDE KIKAKUI SYLLABLE M080 YE;Lo;0;R;;;;;N;;;;;\n1E858;MENDE KIKAKUI SYLLABLE M141 YOO;Lo;0;R;;;;;N;;;;;\n1E859;MENDE KIKAKUI SYLLABLE M121 YO;Lo;0;R;;;;;N;;;;;\n1E85A;MENDE KIKAKUI SYLLABLE M034 FI;Lo;0;R;;;;;N;;;;;\n1E85B;MENDE KIKAKUI SYLLABLE M035 FA;Lo;0;R;;;;;N;;;;;\n1E85C;MENDE KIKAKUI SYLLABLE M036 FU;Lo;0;R;;;;;N;;;;;\n1E85D;MENDE KIKAKUI SYLLABLE M078 FEE;Lo;0;R;;;;;N;;;;;\n1E85E;MENDE KIKAKUI SYLLABLE M075 FE;Lo;0;R;;;;;N;;;;;\n1E85F;MENDE KIKAKUI SYLLABLE M133 FOO;Lo;0;R;;;;;N;;;;;\n1E860;MENDE KIKAKUI SYLLABLE M088 FO;Lo;0;R;;;;;N;;;;;\n1E861;MENDE KIKAKUI SYLLABLE M197 FUA;Lo;0;R;;;;;N;;;;;\n1E862;MENDE KIKAKUI SYLLABLE M101 FAN;Lo;0;R;;;;;N;;;;;\n1E863;MENDE KIKAKUI SYLLABLE M037 NIN;Lo;0;R;;;;;N;;;;;\n1E864;MENDE KIKAKUI SYLLABLE M038 NAN;Lo;0;R;;;;;N;;;;;\n1E865;MENDE KIKAKUI SYLLABLE M039 NUN;Lo;0;R;;;;;N;;;;;\n1E866;MENDE KIKAKUI SYLLABLE M117 NEN;Lo;0;R;;;;;N;;;;;\n1E867;MENDE KIKAKUI SYLLABLE M169 NON;Lo;0;R;;;;;N;;;;;\n1E868;MENDE KIKAKUI SYLLABLE M176 HI;Lo;0;R;;;;;N;;;;;\n1E869;MENDE KIKAKUI SYLLABLE M041 HA;Lo;0;R;;;;;N;;;;;\n1E86A;MENDE KIKAKUI SYLLABLE M186 HU;Lo;0;R;;;;;N;;;;;\n1E86B;MENDE KIKAKUI SYLLABLE M040 HEE;Lo;0;R;;;;;N;;;;;\n1E86C;MENDE KIKAKUI SYLLABLE M096 HE;Lo;0;R;;;;;N;;;;;\n1E86D;MENDE KIKAKUI SYLLABLE M042 HOO;Lo;0;R;;;;;N;;;;;\n1E86E;MENDE KIKAKUI SYLLABLE M140 HO;Lo;0;R;;;;;N;;;;;\n1E86F;MENDE KIKAKUI SYLLABLE M083 HEEI;Lo;0;R;;;;;N;;;;;\n1E870;MENDE KIKAKUI SYLLABLE M128 HOOU;Lo;0;R;;;;;N;;;;;\n1E871;MENDE KIKAKUI SYLLABLE M053 HIN;Lo;0;R;;;;;N;;;;;\n1E872;MENDE KIKAKUI SYLLABLE M130 HAN;Lo;0;R;;;;;N;;;;;\n1E873;MENDE KIKAKUI SYLLABLE M087 HUN;Lo;0;R;;;;;N;;;;;\n1E874;MENDE KIKAKUI SYLLABLE M052 HEN;Lo;0;R;;;;;N;;;;;\n1E875;MENDE KIKAKUI SYLLABLE M193 HON;Lo;0;R;;;;;N;;;;;\n1E876;MENDE KIKAKUI SYLLABLE M046 HUAN;Lo;0;R;;;;;N;;;;;\n1E877;MENDE KIKAKUI SYLLABLE M090 NGGI;Lo;0;R;;;;;N;;;;;\n1E878;MENDE KIKAKUI SYLLABLE M043 NGGA;Lo;0;R;;;;;N;;;;;\n1E879;MENDE KIKAKUI SYLLABLE M082 NGGU;Lo;0;R;;;;;N;;;;;\n1E87A;MENDE KIKAKUI SYLLABLE M115 NGGEE;Lo;0;R;;;;;N;;;;;\n1E87B;MENDE KIKAKUI SYLLABLE M146 NGGE;Lo;0;R;;;;;N;;;;;\n1E87C;MENDE KIKAKUI SYLLABLE M156 NGGOO;Lo;0;R;;;;;N;;;;;\n1E87D;MENDE KIKAKUI SYLLABLE M120 NGGO;Lo;0;R;;;;;N;;;;;\n1E87E;MENDE KIKAKUI SYLLABLE M159 NGGAA;Lo;0;R;;;;;N;;;;;\n1E87F;MENDE KIKAKUI SYLLABLE M127 NGGUA;Lo;0;R;;;;;N;;;;;\n1E880;MENDE KIKAKUI SYLLABLE M086 LONG NGGE;Lo;0;R;;;;;N;;;;;\n1E881;MENDE KIKAKUI SYLLABLE M106 LONG NGGOO;Lo;0;R;;;;;N;;;;;\n1E882;MENDE KIKAKUI SYLLABLE M183 LONG NGGO;Lo;0;R;;;;;N;;;;;\n1E883;MENDE KIKAKUI SYLLABLE M155 GI;Lo;0;R;;;;;N;;;;;\n1E884;MENDE KIKAKUI SYLLABLE M111 GA;Lo;0;R;;;;;N;;;;;\n1E885;MENDE KIKAKUI SYLLABLE M168 GU;Lo;0;R;;;;;N;;;;;\n1E886;MENDE KIKAKUI SYLLABLE M190 GEE;Lo;0;R;;;;;N;;;;;\n1E887;MENDE KIKAKUI SYLLABLE M166 GUEI;Lo;0;R;;;;;N;;;;;\n1E888;MENDE KIKAKUI SYLLABLE M167 GUAN;Lo;0;R;;;;;N;;;;;\n1E889;MENDE KIKAKUI SYLLABLE M184 NGEN;Lo;0;R;;;;;N;;;;;\n1E88A;MENDE KIKAKUI SYLLABLE M057 NGON;Lo;0;R;;;;;N;;;;;\n1E88B;MENDE KIKAKUI SYLLABLE M177 NGUAN;Lo;0;R;;;;;N;;;;;\n1E88C;MENDE KIKAKUI SYLLABLE M068 PI;Lo;0;R;;;;;N;;;;;\n1E88D;MENDE KIKAKUI SYLLABLE M099 PA;Lo;0;R;;;;;N;;;;;\n1E88E;MENDE KIKAKUI SYLLABLE M050 PU;Lo;0;R;;;;;N;;;;;\n1E88F;MENDE KIKAKUI SYLLABLE M081 PEE;Lo;0;R;;;;;N;;;;;\n1E890;MENDE KIKAKUI SYLLABLE M051 PE;Lo;0;R;;;;;N;;;;;\n1E891;MENDE KIKAKUI SYLLABLE M102 POO;Lo;0;R;;;;;N;;;;;\n1E892;MENDE KIKAKUI SYLLABLE M066 PO;Lo;0;R;;;;;N;;;;;\n1E893;MENDE KIKAKUI SYLLABLE M145 MBI;Lo;0;R;;;;;N;;;;;\n1E894;MENDE KIKAKUI SYLLABLE M062 MBA;Lo;0;R;;;;;N;;;;;\n1E895;MENDE KIKAKUI SYLLABLE M122 MBU;Lo;0;R;;;;;N;;;;;\n1E896;MENDE KIKAKUI SYLLABLE M047 MBEE;Lo;0;R;;;;;N;;;;;\n1E897;MENDE KIKAKUI SYLLABLE M188 MBEE;Lo;0;R;;;;;N;;;;;\n1E898;MENDE KIKAKUI SYLLABLE M072 MBE;Lo;0;R;;;;;N;;;;;\n1E899;MENDE KIKAKUI SYLLABLE M172 MBOO;Lo;0;R;;;;;N;;;;;\n1E89A;MENDE KIKAKUI SYLLABLE M174 MBO;Lo;0;R;;;;;N;;;;;\n1E89B;MENDE KIKAKUI SYLLABLE M187 MBUU;Lo;0;R;;;;;N;;;;;\n1E89C;MENDE KIKAKUI SYLLABLE M161 LONG MBE;Lo;0;R;;;;;N;;;;;\n1E89D;MENDE KIKAKUI SYLLABLE M105 LONG MBOO;Lo;0;R;;;;;N;;;;;\n1E89E;MENDE KIKAKUI SYLLABLE M142 LONG MBO;Lo;0;R;;;;;N;;;;;\n1E89F;MENDE KIKAKUI SYLLABLE M132 KPI;Lo;0;R;;;;;N;;;;;\n1E8A0;MENDE KIKAKUI SYLLABLE M092 KPA;Lo;0;R;;;;;N;;;;;\n1E8A1;MENDE KIKAKUI SYLLABLE M074 KPU;Lo;0;R;;;;;N;;;;;\n1E8A2;MENDE KIKAKUI SYLLABLE M044 KPEE;Lo;0;R;;;;;N;;;;;\n1E8A3;MENDE KIKAKUI SYLLABLE M108 KPE;Lo;0;R;;;;;N;;;;;\n1E8A4;MENDE KIKAKUI SYLLABLE M112 KPOO;Lo;0;R;;;;;N;;;;;\n1E8A5;MENDE KIKAKUI SYLLABLE M158 KPO;Lo;0;R;;;;;N;;;;;\n1E8A6;MENDE KIKAKUI SYLLABLE M124 GBI;Lo;0;R;;;;;N;;;;;\n1E8A7;MENDE KIKAKUI SYLLABLE M056 GBA;Lo;0;R;;;;;N;;;;;\n1E8A8;MENDE KIKAKUI SYLLABLE M148 GBU;Lo;0;R;;;;;N;;;;;\n1E8A9;MENDE KIKAKUI SYLLABLE M093 GBEE;Lo;0;R;;;;;N;;;;;\n1E8AA;MENDE KIKAKUI SYLLABLE M107 GBE;Lo;0;R;;;;;N;;;;;\n1E8AB;MENDE KIKAKUI SYLLABLE M071 GBOO;Lo;0;R;;;;;N;;;;;\n1E8AC;MENDE KIKAKUI SYLLABLE M070 GBO;Lo;0;R;;;;;N;;;;;\n1E8AD;MENDE KIKAKUI SYLLABLE M171 RA;Lo;0;R;;;;;N;;;;;\n1E8AE;MENDE KIKAKUI SYLLABLE M123 NDI;Lo;0;R;;;;;N;;;;;\n1E8AF;MENDE KIKAKUI SYLLABLE M129 NDA;Lo;0;R;;;;;N;;;;;\n1E8B0;MENDE KIKAKUI SYLLABLE M125 NDU;Lo;0;R;;;;;N;;;;;\n1E8B1;MENDE KIKAKUI SYLLABLE M191 NDEE;Lo;0;R;;;;;N;;;;;\n1E8B2;MENDE KIKAKUI SYLLABLE M119 NDE;Lo;0;R;;;;;N;;;;;\n1E8B3;MENDE KIKAKUI SYLLABLE M067 NDOO;Lo;0;R;;;;;N;;;;;\n1E8B4;MENDE KIKAKUI SYLLABLE M064 NDO;Lo;0;R;;;;;N;;;;;\n1E8B5;MENDE KIKAKUI SYLLABLE M152 NJA;Lo;0;R;;;;;N;;;;;\n1E8B6;MENDE KIKAKUI SYLLABLE M192 NJU;Lo;0;R;;;;;N;;;;;\n1E8B7;MENDE KIKAKUI SYLLABLE M149 NJEE;Lo;0;R;;;;;N;;;;;\n1E8B8;MENDE KIKAKUI SYLLABLE M134 NJOO;Lo;0;R;;;;;N;;;;;\n1E8B9;MENDE KIKAKUI SYLLABLE M182 VI;Lo;0;R;;;;;N;;;;;\n1E8BA;MENDE KIKAKUI SYLLABLE M185 VA;Lo;0;R;;;;;N;;;;;\n1E8BB;MENDE KIKAKUI SYLLABLE M151 VU;Lo;0;R;;;;;N;;;;;\n1E8BC;MENDE KIKAKUI SYLLABLE M173 VEE;Lo;0;R;;;;;N;;;;;\n1E8BD;MENDE KIKAKUI SYLLABLE M085 VE;Lo;0;R;;;;;N;;;;;\n1E8BE;MENDE KIKAKUI SYLLABLE M144 VOO;Lo;0;R;;;;;N;;;;;\n1E8BF;MENDE KIKAKUI SYLLABLE M077 VO;Lo;0;R;;;;;N;;;;;\n1E8C0;MENDE KIKAKUI SYLLABLE M164 NYIN;Lo;0;R;;;;;N;;;;;\n1E8C1;MENDE KIKAKUI SYLLABLE M058 NYAN;Lo;0;R;;;;;N;;;;;\n1E8C2;MENDE KIKAKUI SYLLABLE M170 NYUN;Lo;0;R;;;;;N;;;;;\n1E8C3;MENDE KIKAKUI SYLLABLE M098 NYEN;Lo;0;R;;;;;N;;;;;\n1E8C4;MENDE KIKAKUI SYLLABLE M060 NYON;Lo;0;R;;;;;N;;;;;\n1E8C7;MENDE KIKAKUI DIGIT ONE;No;0;R;;;;1;N;;;;;\n1E8C8;MENDE KIKAKUI DIGIT TWO;No;0;R;;;;2;N;;;;;\n1E8C9;MENDE KIKAKUI DIGIT THREE;No;0;R;;;;3;N;;;;;\n1E8CA;MENDE KIKAKUI DIGIT FOUR;No;0;R;;;;4;N;;;;;\n1E8CB;MENDE KIKAKUI DIGIT FIVE;No;0;R;;;;5;N;;;;;\n1E8CC;MENDE KIKAKUI DIGIT SIX;No;0;R;;;;6;N;;;;;\n1E8CD;MENDE KIKAKUI DIGIT SEVEN;No;0;R;;;;7;N;;;;;\n1E8CE;MENDE KIKAKUI DIGIT EIGHT;No;0;R;;;;8;N;;;;;\n1E8CF;MENDE KIKAKUI DIGIT NINE;No;0;R;;;;9;N;;;;;\n1E8D0;MENDE KIKAKUI COMBINING NUMBER TEENS;Mn;220;NSM;;;;;N;;;;;\n1E8D1;MENDE KIKAKUI COMBINING NUMBER TENS;Mn;220;NSM;;;;;N;;;;;\n1E8D2;MENDE KIKAKUI COMBINING NUMBER HUNDREDS;Mn;220;NSM;;;;;N;;;;;\n1E8D3;MENDE KIKAKUI COMBINING NUMBER THOUSANDS;Mn;220;NSM;;;;;N;;;;;\n1E8D4;MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS;Mn;220;NSM;;;;;N;;;;;\n1E8D5;MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS;Mn;220;NSM;;;;;N;;;;;\n1E8D6;MENDE KIKAKUI COMBINING NUMBER MILLIONS;Mn;220;NSM;;;;;N;;;;;\n1E900;ADLAM CAPITAL LETTER ALIF;Lu;0;R;;;;;N;;;;1E922;\n1E901;ADLAM CAPITAL LETTER DAALI;Lu;0;R;;;;;N;;;;1E923;\n1E902;ADLAM CAPITAL LETTER LAAM;Lu;0;R;;;;;N;;;;1E924;\n1E903;ADLAM CAPITAL LETTER MIIM;Lu;0;R;;;;;N;;;;1E925;\n1E904;ADLAM CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;1E926;\n1E905;ADLAM CAPITAL LETTER SINNYIIYHE;Lu;0;R;;;;;N;;;;1E927;\n1E906;ADLAM CAPITAL LETTER PE;Lu;0;R;;;;;N;;;;1E928;\n1E907;ADLAM CAPITAL LETTER BHE;Lu;0;R;;;;;N;;;;1E929;\n1E908;ADLAM CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;1E92A;\n1E909;ADLAM CAPITAL LETTER E;Lu;0;R;;;;;N;;;;1E92B;\n1E90A;ADLAM CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;1E92C;\n1E90B;ADLAM CAPITAL LETTER I;Lu;0;R;;;;;N;;;;1E92D;\n1E90C;ADLAM CAPITAL LETTER O;Lu;0;R;;;;;N;;;;1E92E;\n1E90D;ADLAM CAPITAL LETTER DHA;Lu;0;R;;;;;N;;;;1E92F;\n1E90E;ADLAM CAPITAL LETTER YHE;Lu;0;R;;;;;N;;;;1E930;\n1E90F;ADLAM CAPITAL LETTER WAW;Lu;0;R;;;;;N;;;;1E931;\n1E910;ADLAM CAPITAL LETTER NUN;Lu;0;R;;;;;N;;;;1E932;\n1E911;ADLAM CAPITAL LETTER KAF;Lu;0;R;;;;;N;;;;1E933;\n1E912;ADLAM CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;1E934;\n1E913;ADLAM CAPITAL LETTER U;Lu;0;R;;;;;N;;;;1E935;\n1E914;ADLAM CAPITAL LETTER JIIM;Lu;0;R;;;;;N;;;;1E936;\n1E915;ADLAM CAPITAL LETTER CHI;Lu;0;R;;;;;N;;;;1E937;\n1E916;ADLAM CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;1E938;\n1E917;ADLAM CAPITAL LETTER QAAF;Lu;0;R;;;;;N;;;;1E939;\n1E918;ADLAM CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;1E93A;\n1E919;ADLAM CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;1E93B;\n1E91A;ADLAM CAPITAL LETTER TU;Lu;0;R;;;;;N;;;;1E93C;\n1E91B;ADLAM CAPITAL LETTER NHA;Lu;0;R;;;;;N;;;;1E93D;\n1E91C;ADLAM CAPITAL LETTER VA;Lu;0;R;;;;;N;;;;1E93E;\n1E91D;ADLAM CAPITAL LETTER KHA;Lu;0;R;;;;;N;;;;1E93F;\n1E91E;ADLAM CAPITAL LETTER GBE;Lu;0;R;;;;;N;;;;1E940;\n1E91F;ADLAM CAPITAL LETTER ZAL;Lu;0;R;;;;;N;;;;1E941;\n1E920;ADLAM CAPITAL LETTER KPO;Lu;0;R;;;;;N;;;;1E942;\n1E921;ADLAM CAPITAL LETTER SHA;Lu;0;R;;;;;N;;;;1E943;\n1E922;ADLAM SMALL LETTER ALIF;Ll;0;R;;;;;N;;;1E900;;1E900\n1E923;ADLAM SMALL LETTER DAALI;Ll;0;R;;;;;N;;;1E901;;1E901\n1E924;ADLAM SMALL LETTER LAAM;Ll;0;R;;;;;N;;;1E902;;1E902\n1E925;ADLAM SMALL LETTER MIIM;Ll;0;R;;;;;N;;;1E903;;1E903\n1E926;ADLAM SMALL LETTER BA;Ll;0;R;;;;;N;;;1E904;;1E904\n1E927;ADLAM SMALL LETTER SINNYIIYHE;Ll;0;R;;;;;N;;;1E905;;1E905\n1E928;ADLAM SMALL LETTER PE;Ll;0;R;;;;;N;;;1E906;;1E906\n1E929;ADLAM SMALL LETTER BHE;Ll;0;R;;;;;N;;;1E907;;1E907\n1E92A;ADLAM SMALL LETTER RA;Ll;0;R;;;;;N;;;1E908;;1E908\n1E92B;ADLAM SMALL LETTER E;Ll;0;R;;;;;N;;;1E909;;1E909\n1E92C;ADLAM SMALL LETTER FA;Ll;0;R;;;;;N;;;1E90A;;1E90A\n1E92D;ADLAM SMALL LETTER I;Ll;0;R;;;;;N;;;1E90B;;1E90B\n1E92E;ADLAM SMALL LETTER O;Ll;0;R;;;;;N;;;1E90C;;1E90C\n1E92F;ADLAM SMALL LETTER DHA;Ll;0;R;;;;;N;;;1E90D;;1E90D\n1E930;ADLAM SMALL LETTER YHE;Ll;0;R;;;;;N;;;1E90E;;1E90E\n1E931;ADLAM SMALL LETTER WAW;Ll;0;R;;;;;N;;;1E90F;;1E90F\n1E932;ADLAM SMALL LETTER NUN;Ll;0;R;;;;;N;;;1E910;;1E910\n1E933;ADLAM SMALL LETTER KAF;Ll;0;R;;;;;N;;;1E911;;1E911\n1E934;ADLAM SMALL LETTER YA;Ll;0;R;;;;;N;;;1E912;;1E912\n1E935;ADLAM SMALL LETTER U;Ll;0;R;;;;;N;;;1E913;;1E913\n1E936;ADLAM SMALL LETTER JIIM;Ll;0;R;;;;;N;;;1E914;;1E914\n1E937;ADLAM SMALL LETTER CHI;Ll;0;R;;;;;N;;;1E915;;1E915\n1E938;ADLAM SMALL LETTER HA;Ll;0;R;;;;;N;;;1E916;;1E916\n1E939;ADLAM SMALL LETTER QAAF;Ll;0;R;;;;;N;;;1E917;;1E917\n1E93A;ADLAM SMALL LETTER GA;Ll;0;R;;;;;N;;;1E918;;1E918\n1E93B;ADLAM SMALL LETTER NYA;Ll;0;R;;;;;N;;;1E919;;1E919\n1E93C;ADLAM SMALL LETTER TU;Ll;0;R;;;;;N;;;1E91A;;1E91A\n1E93D;ADLAM SMALL LETTER NHA;Ll;0;R;;;;;N;;;1E91B;;1E91B\n1E93E;ADLAM SMALL LETTER VA;Ll;0;R;;;;;N;;;1E91C;;1E91C\n1E93F;ADLAM SMALL LETTER KHA;Ll;0;R;;;;;N;;;1E91D;;1E91D\n1E940;ADLAM SMALL LETTER GBE;Ll;0;R;;;;;N;;;1E91E;;1E91E\n1E941;ADLAM SMALL LETTER ZAL;Ll;0;R;;;;;N;;;1E91F;;1E91F\n1E942;ADLAM SMALL LETTER KPO;Ll;0;R;;;;;N;;;1E920;;1E920\n1E943;ADLAM SMALL LETTER SHA;Ll;0;R;;;;;N;;;1E921;;1E921\n1E944;ADLAM ALIF LENGTHENER;Mn;230;NSM;;;;;N;;;;;\n1E945;ADLAM VOWEL LENGTHENER;Mn;230;NSM;;;;;N;;;;;\n1E946;ADLAM GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;\n1E947;ADLAM HAMZA;Mn;230;NSM;;;;;N;;;;;\n1E948;ADLAM CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;\n1E949;ADLAM GEMINATE CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;\n1E94A;ADLAM NUKTA;Mn;7;NSM;;;;;N;;;;;\n1E94B;ADLAM NASALIZATION MARK;Lm;0;R;;;;;N;;;;;\n1E950;ADLAM DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;\n1E951;ADLAM DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;\n1E952;ADLAM DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;\n1E953;ADLAM DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;\n1E954;ADLAM DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;\n1E955;ADLAM DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;\n1E956;ADLAM DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;\n1E957;ADLAM DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;\n1E958;ADLAM DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;\n1E959;ADLAM DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;\n1E95E;ADLAM INITIAL EXCLAMATION MARK;Po;0;R;;;;;N;;;;;\n1E95F;ADLAM INITIAL QUESTION MARK;Po;0;R;;;;;N;;;;;\n1EC71;INDIC SIYAQ NUMBER ONE;No;0;AL;;;;1;N;;;;;\n1EC72;INDIC SIYAQ NUMBER TWO;No;0;AL;;;;2;N;;;;;\n1EC73;INDIC SIYAQ NUMBER THREE;No;0;AL;;;;3;N;;;;;\n1EC74;INDIC SIYAQ NUMBER FOUR;No;0;AL;;;;4;N;;;;;\n1EC75;INDIC SIYAQ NUMBER FIVE;No;0;AL;;;;5;N;;;;;\n1EC76;INDIC SIYAQ NUMBER SIX;No;0;AL;;;;6;N;;;;;\n1EC77;INDIC SIYAQ NUMBER SEVEN;No;0;AL;;;;7;N;;;;;\n1EC78;INDIC SIYAQ NUMBER EIGHT;No;0;AL;;;;8;N;;;;;\n1EC79;INDIC SIYAQ NUMBER NINE;No;0;AL;;;;9;N;;;;;\n1EC7A;INDIC SIYAQ NUMBER TEN;No;0;AL;;;;10;N;;;;;\n1EC7B;INDIC SIYAQ NUMBER TWENTY;No;0;AL;;;;20;N;;;;;\n1EC7C;INDIC SIYAQ NUMBER THIRTY;No;0;AL;;;;30;N;;;;;\n1EC7D;INDIC SIYAQ NUMBER FORTY;No;0;AL;;;;40;N;;;;;\n1EC7E;INDIC SIYAQ NUMBER FIFTY;No;0;AL;;;;50;N;;;;;\n1EC7F;INDIC SIYAQ NUMBER SIXTY;No;0;AL;;;;60;N;;;;;\n1EC80;INDIC SIYAQ NUMBER SEVENTY;No;0;AL;;;;70;N;;;;;\n1EC81;INDIC SIYAQ NUMBER EIGHTY;No;0;AL;;;;80;N;;;;;\n1EC82;INDIC SIYAQ NUMBER NINETY;No;0;AL;;;;90;N;;;;;\n1EC83;INDIC SIYAQ NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;\n1EC84;INDIC SIYAQ NUMBER TWO HUNDRED;No;0;AL;;;;200;N;;;;;\n1EC85;INDIC SIYAQ NUMBER THREE HUNDRED;No;0;AL;;;;300;N;;;;;\n1EC86;INDIC SIYAQ NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;\n1EC87;INDIC SIYAQ NUMBER FIVE HUNDRED;No;0;AL;;;;500;N;;;;;\n1EC88;INDIC SIYAQ NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;\n1EC89;INDIC SIYAQ NUMBER SEVEN HUNDRED;No;0;AL;;;;700;N;;;;;\n1EC8A;INDIC SIYAQ NUMBER EIGHT HUNDRED;No;0;AL;;;;800;N;;;;;\n1EC8B;INDIC SIYAQ NUMBER NINE HUNDRED;No;0;AL;;;;900;N;;;;;\n1EC8C;INDIC SIYAQ NUMBER ONE THOUSAND;No;0;AL;;;;1000;N;;;;;\n1EC8D;INDIC SIYAQ NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;\n1EC8E;INDIC SIYAQ NUMBER THREE THOUSAND;No;0;AL;;;;3000;N;;;;;\n1EC8F;INDIC SIYAQ NUMBER FOUR THOUSAND;No;0;AL;;;;4000;N;;;;;\n1EC90;INDIC SIYAQ NUMBER FIVE THOUSAND;No;0;AL;;;;5000;N;;;;;\n1EC91;INDIC SIYAQ NUMBER SIX THOUSAND;No;0;AL;;;;6000;N;;;;;\n1EC92;INDIC SIYAQ NUMBER SEVEN THOUSAND;No;0;AL;;;;7000;N;;;;;\n1EC93;INDIC SIYAQ NUMBER EIGHT THOUSAND;No;0;AL;;;;8000;N;;;;;\n1EC94;INDIC SIYAQ NUMBER NINE THOUSAND;No;0;AL;;;;9000;N;;;;;\n1EC95;INDIC SIYAQ NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;\n1EC96;INDIC SIYAQ NUMBER TWENTY THOUSAND;No;0;AL;;;;20000;N;;;;;\n1EC97;INDIC SIYAQ NUMBER THIRTY THOUSAND;No;0;AL;;;;30000;N;;;;;\n1EC98;INDIC SIYAQ NUMBER FORTY THOUSAND;No;0;AL;;;;40000;N;;;;;\n1EC99;INDIC SIYAQ NUMBER FIFTY THOUSAND;No;0;AL;;;;50000;N;;;;;\n1EC9A;INDIC SIYAQ NUMBER SIXTY THOUSAND;No;0;AL;;;;60000;N;;;;;\n1EC9B;INDIC SIYAQ NUMBER SEVENTY THOUSAND;No;0;AL;;;;70000;N;;;;;\n1EC9C;INDIC SIYAQ NUMBER EIGHTY THOUSAND;No;0;AL;;;;80000;N;;;;;\n1EC9D;INDIC SIYAQ NUMBER NINETY THOUSAND;No;0;AL;;;;90000;N;;;;;\n1EC9E;INDIC SIYAQ NUMBER LAKH;No;0;AL;;;;100000;N;;;;;\n1EC9F;INDIC SIYAQ NUMBER LAKHAN;No;0;AL;;;;200000;N;;;;;\n1ECA0;INDIC SIYAQ LAKH MARK;No;0;AL;;;;100000;N;;;;;\n1ECA1;INDIC SIYAQ NUMBER KAROR;No;0;AL;;;;10000000;N;;;;;\n1ECA2;INDIC SIYAQ NUMBER KARORAN;No;0;AL;;;;20000000;N;;;;;\n1ECA3;INDIC SIYAQ NUMBER PREFIXED ONE;No;0;AL;;;;1;N;;;;;\n1ECA4;INDIC SIYAQ NUMBER PREFIXED TWO;No;0;AL;;;;2;N;;;;;\n1ECA5;INDIC SIYAQ NUMBER PREFIXED THREE;No;0;AL;;;;3;N;;;;;\n1ECA6;INDIC SIYAQ NUMBER PREFIXED FOUR;No;0;AL;;;;4;N;;;;;\n1ECA7;INDIC SIYAQ NUMBER PREFIXED FIVE;No;0;AL;;;;5;N;;;;;\n1ECA8;INDIC SIYAQ NUMBER PREFIXED SIX;No;0;AL;;;;6;N;;;;;\n1ECA9;INDIC SIYAQ NUMBER PREFIXED SEVEN;No;0;AL;;;;7;N;;;;;\n1ECAA;INDIC SIYAQ NUMBER PREFIXED EIGHT;No;0;AL;;;;8;N;;;;;\n1ECAB;INDIC SIYAQ NUMBER PREFIXED NINE;No;0;AL;;;;9;N;;;;;\n1ECAC;INDIC SIYAQ PLACEHOLDER;So;0;AL;;;;;N;;;;;\n1ECAD;INDIC SIYAQ FRACTION ONE QUARTER;No;0;AL;;;;1/4;N;;;;;\n1ECAE;INDIC SIYAQ FRACTION ONE HALF;No;0;AL;;;;1/2;N;;;;;\n1ECAF;INDIC SIYAQ FRACTION THREE QUARTERS;No;0;AL;;;;3/4;N;;;;;\n1ECB0;INDIC SIYAQ RUPEE MARK;Sc;0;AL;;;;;N;;;;;\n1ECB1;INDIC SIYAQ NUMBER ALTERNATE ONE;No;0;AL;;;;1;N;;;;;\n1ECB2;INDIC SIYAQ NUMBER ALTERNATE TWO;No;0;AL;;;;2;N;;;;;\n1ECB3;INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND;No;0;AL;;;;10000;N;;;;;\n1ECB4;INDIC SIYAQ ALTERNATE LAKH MARK;No;0;AL;;;;100000;N;;;;;\n1ED01;OTTOMAN SIYAQ NUMBER ONE;No;0;AL;;;;1;N;;;;;\n1ED02;OTTOMAN SIYAQ NUMBER TWO;No;0;AL;;;;2;N;;;;;\n1ED03;OTTOMAN SIYAQ NUMBER THREE;No;0;AL;;;;3;N;;;;;\n1ED04;OTTOMAN SIYAQ NUMBER FOUR;No;0;AL;;;;4;N;;;;;\n1ED05;OTTOMAN SIYAQ NUMBER FIVE;No;0;AL;;;;5;N;;;;;\n1ED06;OTTOMAN SIYAQ NUMBER SIX;No;0;AL;;;;6;N;;;;;\n1ED07;OTTOMAN SIYAQ NUMBER SEVEN;No;0;AL;;;;7;N;;;;;\n1ED08;OTTOMAN SIYAQ NUMBER EIGHT;No;0;AL;;;;8;N;;;;;\n1ED09;OTTOMAN SIYAQ NUMBER NINE;No;0;AL;;;;9;N;;;;;\n1ED0A;OTTOMAN SIYAQ NUMBER TEN;No;0;AL;;;;10;N;;;;;\n1ED0B;OTTOMAN SIYAQ NUMBER TWENTY;No;0;AL;;;;20;N;;;;;\n1ED0C;OTTOMAN SIYAQ NUMBER THIRTY;No;0;AL;;;;30;N;;;;;\n1ED0D;OTTOMAN SIYAQ NUMBER FORTY;No;0;AL;;;;40;N;;;;;\n1ED0E;OTTOMAN SIYAQ NUMBER FIFTY;No;0;AL;;;;50;N;;;;;\n1ED0F;OTTOMAN SIYAQ NUMBER SIXTY;No;0;AL;;;;60;N;;;;;\n1ED10;OTTOMAN SIYAQ NUMBER SEVENTY;No;0;AL;;;;70;N;;;;;\n1ED11;OTTOMAN SIYAQ NUMBER EIGHTY;No;0;AL;;;;80;N;;;;;\n1ED12;OTTOMAN SIYAQ NUMBER NINETY;No;0;AL;;;;90;N;;;;;\n1ED13;OTTOMAN SIYAQ NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;\n1ED14;OTTOMAN SIYAQ NUMBER TWO HUNDRED;No;0;AL;;;;200;N;;;;;\n1ED15;OTTOMAN SIYAQ NUMBER THREE HUNDRED;No;0;AL;;;;300;N;;;;;\n1ED16;OTTOMAN SIYAQ NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;\n1ED17;OTTOMAN SIYAQ NUMBER FIVE HUNDRED;No;0;AL;;;;500;N;;;;;\n1ED18;OTTOMAN SIYAQ NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;\n1ED19;OTTOMAN SIYAQ NUMBER SEVEN HUNDRED;No;0;AL;;;;700;N;;;;;\n1ED1A;OTTOMAN SIYAQ NUMBER EIGHT HUNDRED;No;0;AL;;;;800;N;;;;;\n1ED1B;OTTOMAN SIYAQ NUMBER NINE HUNDRED;No;0;AL;;;;900;N;;;;;\n1ED1C;OTTOMAN SIYAQ NUMBER ONE THOUSAND;No;0;AL;;;;1000;N;;;;;\n1ED1D;OTTOMAN SIYAQ NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;\n1ED1E;OTTOMAN SIYAQ NUMBER THREE THOUSAND;No;0;AL;;;;3000;N;;;;;\n1ED1F;OTTOMAN SIYAQ NUMBER FOUR THOUSAND;No;0;AL;;;;4000;N;;;;;\n1ED20;OTTOMAN SIYAQ NUMBER FIVE THOUSAND;No;0;AL;;;;5000;N;;;;;\n1ED21;OTTOMAN SIYAQ NUMBER SIX THOUSAND;No;0;AL;;;;6000;N;;;;;\n1ED22;OTTOMAN SIYAQ NUMBER SEVEN THOUSAND;No;0;AL;;;;7000;N;;;;;\n1ED23;OTTOMAN SIYAQ NUMBER EIGHT THOUSAND;No;0;AL;;;;8000;N;;;;;\n1ED24;OTTOMAN SIYAQ NUMBER NINE THOUSAND;No;0;AL;;;;9000;N;;;;;\n1ED25;OTTOMAN SIYAQ NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;\n1ED26;OTTOMAN SIYAQ NUMBER TWENTY THOUSAND;No;0;AL;;;;20000;N;;;;;\n1ED27;OTTOMAN SIYAQ NUMBER THIRTY THOUSAND;No;0;AL;;;;30000;N;;;;;\n1ED28;OTTOMAN SIYAQ NUMBER FORTY THOUSAND;No;0;AL;;;;40000;N;;;;;\n1ED29;OTTOMAN SIYAQ NUMBER FIFTY THOUSAND;No;0;AL;;;;50000;N;;;;;\n1ED2A;OTTOMAN SIYAQ NUMBER SIXTY THOUSAND;No;0;AL;;;;60000;N;;;;;\n1ED2B;OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND;No;0;AL;;;;70000;N;;;;;\n1ED2C;OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND;No;0;AL;;;;80000;N;;;;;\n1ED2D;OTTOMAN SIYAQ NUMBER NINETY THOUSAND;No;0;AL;;;;90000;N;;;;;\n1ED2E;OTTOMAN SIYAQ MARRATAN;So;0;AL;;;;;N;;;;;\n1ED2F;OTTOMAN SIYAQ ALTERNATE NUMBER TWO;No;0;AL;;;;2;N;;;;;\n1ED30;OTTOMAN SIYAQ ALTERNATE NUMBER THREE;No;0;AL;;;;3;N;;;;;\n1ED31;OTTOMAN SIYAQ ALTERNATE NUMBER FOUR;No;0;AL;;;;4;N;;;;;\n1ED32;OTTOMAN SIYAQ ALTERNATE NUMBER FIVE;No;0;AL;;;;5;N;;;;;\n1ED33;OTTOMAN SIYAQ ALTERNATE NUMBER SIX;No;0;AL;;;;6;N;;;;;\n1ED34;OTTOMAN SIYAQ ALTERNATE NUMBER SEVEN;No;0;AL;;;;7;N;;;;;\n1ED35;OTTOMAN SIYAQ ALTERNATE NUMBER EIGHT;No;0;AL;;;;8;N;;;;;\n1ED36;OTTOMAN SIYAQ ALTERNATE NUMBER NINE;No;0;AL;;;;9;N;;;;;\n1ED37;OTTOMAN SIYAQ ALTERNATE NUMBER TEN;No;0;AL;;;;10;N;;;;;\n1ED38;OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;\n1ED39;OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;\n1ED3A;OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;\n1ED3B;OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;\n1ED3C;OTTOMAN SIYAQ FRACTION ONE HALF;No;0;AL;;;;1/2;N;;;;;\n1ED3D;OTTOMAN SIYAQ FRACTION ONE SIXTH;No;0;AL;;;;1/6;N;;;;;\n1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;\n1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;\n1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EE03;ARABIC MATHEMATICAL DAL;Lo;0;AL;<font> 062F;;;;N;;;;;\n1EE05;ARABIC MATHEMATICAL WAW;Lo;0;AL;<font> 0648;;;;N;;;;;\n1EE06;ARABIC MATHEMATICAL ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;;\n1EE07;ARABIC MATHEMATICAL HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EE08;ARABIC MATHEMATICAL TAH;Lo;0;AL;<font> 0637;;;;N;;;;;\n1EE09;ARABIC MATHEMATICAL YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EE0A;ARABIC MATHEMATICAL KAF;Lo;0;AL;<font> 0643;;;;N;;;;;\n1EE0B;ARABIC MATHEMATICAL LAM;Lo;0;AL;<font> 0644;;;;N;;;;;\n1EE0C;ARABIC MATHEMATICAL MEEM;Lo;0;AL;<font> 0645;;;;N;;;;;\n1EE0D;ARABIC MATHEMATICAL NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EE0E;ARABIC MATHEMATICAL SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EE0F;ARABIC MATHEMATICAL AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EE10;ARABIC MATHEMATICAL FEH;Lo;0;AL;<font> 0641;;;;N;;;;;\n1EE11;ARABIC MATHEMATICAL SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EE12;ARABIC MATHEMATICAL QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EE13;ARABIC MATHEMATICAL REH;Lo;0;AL;<font> 0631;;;;N;;;;;\n1EE14;ARABIC MATHEMATICAL SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EE15;ARABIC MATHEMATICAL TEH;Lo;0;AL;<font> 062A;;;;N;;;;;\n1EE16;ARABIC MATHEMATICAL THEH;Lo;0;AL;<font> 062B;;;;N;;;;;\n1EE17;ARABIC MATHEMATICAL KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EE18;ARABIC MATHEMATICAL THAL;Lo;0;AL;<font> 0630;;;;N;;;;;\n1EE19;ARABIC MATHEMATICAL DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EE1A;ARABIC MATHEMATICAL ZAH;Lo;0;AL;<font> 0638;;;;N;;;;;\n1EE1B;ARABIC MATHEMATICAL GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EE1C;ARABIC MATHEMATICAL DOTLESS BEH;Lo;0;AL;<font> 066E;;;;N;;;;;\n1EE1D;ARABIC MATHEMATICAL DOTLESS NOON;Lo;0;AL;<font> 06BA;;;;N;;;;;\n1EE1E;ARABIC MATHEMATICAL DOTLESS FEH;Lo;0;AL;<font> 06A1;;;;N;;;;;\n1EE1F;ARABIC MATHEMATICAL DOTLESS QAF;Lo;0;AL;<font> 066F;;;;N;;;;;\n1EE21;ARABIC MATHEMATICAL INITIAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;\n1EE22;ARABIC MATHEMATICAL INITIAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EE24;ARABIC MATHEMATICAL INITIAL HEH;Lo;0;AL;<font> 0647;;;;N;;;;;\n1EE27;ARABIC MATHEMATICAL INITIAL HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EE29;ARABIC MATHEMATICAL INITIAL YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EE2A;ARABIC MATHEMATICAL INITIAL KAF;Lo;0;AL;<font> 0643;;;;N;;;;;\n1EE2B;ARABIC MATHEMATICAL INITIAL LAM;Lo;0;AL;<font> 0644;;;;N;;;;;\n1EE2C;ARABIC MATHEMATICAL INITIAL MEEM;Lo;0;AL;<font> 0645;;;;N;;;;;\n1EE2D;ARABIC MATHEMATICAL INITIAL NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EE2E;ARABIC MATHEMATICAL INITIAL SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EE2F;ARABIC MATHEMATICAL INITIAL AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EE30;ARABIC MATHEMATICAL INITIAL FEH;Lo;0;AL;<font> 0641;;;;N;;;;;\n1EE31;ARABIC MATHEMATICAL INITIAL SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EE32;ARABIC MATHEMATICAL INITIAL QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EE34;ARABIC MATHEMATICAL INITIAL SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EE35;ARABIC MATHEMATICAL INITIAL TEH;Lo;0;AL;<font> 062A;;;;N;;;;;\n1EE36;ARABIC MATHEMATICAL INITIAL THEH;Lo;0;AL;<font> 062B;;;;N;;;;;\n1EE37;ARABIC MATHEMATICAL INITIAL KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EE39;ARABIC MATHEMATICAL INITIAL DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EE3B;ARABIC MATHEMATICAL INITIAL GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EE42;ARABIC MATHEMATICAL TAILED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EE47;ARABIC MATHEMATICAL TAILED HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EE49;ARABIC MATHEMATICAL TAILED YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EE4B;ARABIC MATHEMATICAL TAILED LAM;Lo;0;AL;<font> 0644;;;;N;;;;;\n1EE4D;ARABIC MATHEMATICAL TAILED NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EE4E;ARABIC MATHEMATICAL TAILED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EE4F;ARABIC MATHEMATICAL TAILED AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EE51;ARABIC MATHEMATICAL TAILED SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EE52;ARABIC MATHEMATICAL TAILED QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EE54;ARABIC MATHEMATICAL TAILED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EE57;ARABIC MATHEMATICAL TAILED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EE59;ARABIC MATHEMATICAL TAILED DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EE5B;ARABIC MATHEMATICAL TAILED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EE5D;ARABIC MATHEMATICAL TAILED DOTLESS NOON;Lo;0;AL;<font> 06BA;;;;N;;;;;\n1EE5F;ARABIC MATHEMATICAL TAILED DOTLESS QAF;Lo;0;AL;<font> 066F;;;;N;;;;;\n1EE61;ARABIC MATHEMATICAL STRETCHED BEH;Lo;0;AL;<font> 0628;;;;N;;;;;\n1EE62;ARABIC MATHEMATICAL STRETCHED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EE64;ARABIC MATHEMATICAL STRETCHED HEH;Lo;0;AL;<font> 0647;;;;N;;;;;\n1EE67;ARABIC MATHEMATICAL STRETCHED HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EE68;ARABIC MATHEMATICAL STRETCHED TAH;Lo;0;AL;<font> 0637;;;;N;;;;;\n1EE69;ARABIC MATHEMATICAL STRETCHED YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EE6A;ARABIC MATHEMATICAL STRETCHED KAF;Lo;0;AL;<font> 0643;;;;N;;;;;\n1EE6C;ARABIC MATHEMATICAL STRETCHED MEEM;Lo;0;AL;<font> 0645;;;;N;;;;;\n1EE6D;ARABIC MATHEMATICAL STRETCHED NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EE6E;ARABIC MATHEMATICAL STRETCHED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EE6F;ARABIC MATHEMATICAL STRETCHED AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EE70;ARABIC MATHEMATICAL STRETCHED FEH;Lo;0;AL;<font> 0641;;;;N;;;;;\n1EE71;ARABIC MATHEMATICAL STRETCHED SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EE72;ARABIC MATHEMATICAL STRETCHED QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EE74;ARABIC MATHEMATICAL STRETCHED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EE75;ARABIC MATHEMATICAL STRETCHED TEH;Lo;0;AL;<font> 062A;;;;N;;;;;\n1EE76;ARABIC MATHEMATICAL STRETCHED THEH;Lo;0;AL;<font> 062B;;;;N;;;;;\n1EE77;ARABIC MATHEMATICAL STRETCHED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EE79;ARABIC MATHEMATICAL STRETCHED DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EE7A;ARABIC MATHEMATICAL STRETCHED ZAH;Lo;0;AL;<font> 0638;;;;N;;;;;\n1EE7B;ARABIC MATHEMATICAL STRETCHED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EE7C;ARABIC MATHEMATICAL STRETCHED DOTLESS BEH;Lo;0;AL;<font> 066E;;;;N;;;;;\n1EE7E;ARABIC MATHEMATICAL STRETCHED DOTLESS FEH;Lo;0;AL;<font> 06A1;;;;N;;;;;\n1EE80;ARABIC MATHEMATICAL LOOPED ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;\n1EE81;ARABIC MATHEMATICAL LOOPED BEH;Lo;0;AL;<font> 0628;;;;N;;;;;\n1EE82;ARABIC MATHEMATICAL LOOPED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EE83;ARABIC MATHEMATICAL LOOPED DAL;Lo;0;AL;<font> 062F;;;;N;;;;;\n1EE84;ARABIC MATHEMATICAL LOOPED HEH;Lo;0;AL;<font> 0647;;;;N;;;;;\n1EE85;ARABIC MATHEMATICAL LOOPED WAW;Lo;0;AL;<font> 0648;;;;N;;;;;\n1EE86;ARABIC MATHEMATICAL LOOPED ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;;\n1EE87;ARABIC MATHEMATICAL LOOPED HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EE88;ARABIC MATHEMATICAL LOOPED TAH;Lo;0;AL;<font> 0637;;;;N;;;;;\n1EE89;ARABIC MATHEMATICAL LOOPED YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EE8B;ARABIC MATHEMATICAL LOOPED LAM;Lo;0;AL;<font> 0644;;;;N;;;;;\n1EE8C;ARABIC MATHEMATICAL LOOPED MEEM;Lo;0;AL;<font> 0645;;;;N;;;;;\n1EE8D;ARABIC MATHEMATICAL LOOPED NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EE8E;ARABIC MATHEMATICAL LOOPED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EE8F;ARABIC MATHEMATICAL LOOPED AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EE90;ARABIC MATHEMATICAL LOOPED FEH;Lo;0;AL;<font> 0641;;;;N;;;;;\n1EE91;ARABIC MATHEMATICAL LOOPED SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EE92;ARABIC MATHEMATICAL LOOPED QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EE93;ARABIC MATHEMATICAL LOOPED REH;Lo;0;AL;<font> 0631;;;;N;;;;;\n1EE94;ARABIC MATHEMATICAL LOOPED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EE95;ARABIC MATHEMATICAL LOOPED TEH;Lo;0;AL;<font> 062A;;;;N;;;;;\n1EE96;ARABIC MATHEMATICAL LOOPED THEH;Lo;0;AL;<font> 062B;;;;N;;;;;\n1EE97;ARABIC MATHEMATICAL LOOPED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EE98;ARABIC MATHEMATICAL LOOPED THAL;Lo;0;AL;<font> 0630;;;;N;;;;;\n1EE99;ARABIC MATHEMATICAL LOOPED DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EE9A;ARABIC MATHEMATICAL LOOPED ZAH;Lo;0;AL;<font> 0638;;;;N;;;;;\n1EE9B;ARABIC MATHEMATICAL LOOPED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EEA1;ARABIC MATHEMATICAL DOUBLE-STRUCK BEH;Lo;0;AL;<font> 0628;;;;N;;;;;\n1EEA2;ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;\n1EEA3;ARABIC MATHEMATICAL DOUBLE-STRUCK DAL;Lo;0;AL;<font> 062F;;;;N;;;;;\n1EEA5;ARABIC MATHEMATICAL DOUBLE-STRUCK WAW;Lo;0;AL;<font> 0648;;;;N;;;;;\n1EEA6;ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;;\n1EEA7;ARABIC MATHEMATICAL DOUBLE-STRUCK HAH;Lo;0;AL;<font> 062D;;;;N;;;;;\n1EEA8;ARABIC MATHEMATICAL DOUBLE-STRUCK TAH;Lo;0;AL;<font> 0637;;;;N;;;;;\n1EEA9;ARABIC MATHEMATICAL DOUBLE-STRUCK YEH;Lo;0;AL;<font> 064A;;;;N;;;;;\n1EEAB;ARABIC MATHEMATICAL DOUBLE-STRUCK LAM;Lo;0;AL;<font> 0644;;;;N;;;;;\n1EEAC;ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM;Lo;0;AL;<font> 0645;;;;N;;;;;\n1EEAD;ARABIC MATHEMATICAL DOUBLE-STRUCK NOON;Lo;0;AL;<font> 0646;;;;N;;;;;\n1EEAE;ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN;Lo;0;AL;<font> 0633;;;;N;;;;;\n1EEAF;ARABIC MATHEMATICAL DOUBLE-STRUCK AIN;Lo;0;AL;<font> 0639;;;;N;;;;;\n1EEB0;ARABIC MATHEMATICAL DOUBLE-STRUCK FEH;Lo;0;AL;<font> 0641;;;;N;;;;;\n1EEB1;ARABIC MATHEMATICAL DOUBLE-STRUCK SAD;Lo;0;AL;<font> 0635;;;;N;;;;;\n1EEB2;ARABIC MATHEMATICAL DOUBLE-STRUCK QAF;Lo;0;AL;<font> 0642;;;;N;;;;;\n1EEB3;ARABIC MATHEMATICAL DOUBLE-STRUCK REH;Lo;0;AL;<font> 0631;;;;N;;;;;\n1EEB4;ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;;\n1EEB5;ARABIC MATHEMATICAL DOUBLE-STRUCK TEH;Lo;0;AL;<font> 062A;;;;N;;;;;\n1EEB6;ARABIC MATHEMATICAL DOUBLE-STRUCK THEH;Lo;0;AL;<font> 062B;;;;N;;;;;\n1EEB7;ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH;Lo;0;AL;<font> 062E;;;;N;;;;;\n1EEB8;ARABIC MATHEMATICAL DOUBLE-STRUCK THAL;Lo;0;AL;<font> 0630;;;;N;;;;;\n1EEB9;ARABIC MATHEMATICAL DOUBLE-STRUCK DAD;Lo;0;AL;<font> 0636;;;;N;;;;;\n1EEBA;ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH;Lo;0;AL;<font> 0638;;;;N;;;;;\n1EEBB;ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;;\n1EEF0;ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;Sm;0;ON;;;;;N;;;;;\n1EEF1;ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;Sm;0;ON;;;;;N;;;;;\n1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;\n1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;\n1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;\n1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;\n1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;\n1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;\n1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;\n1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;\n1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;\n1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;\n1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;\n1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;\n1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;\n1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;\n1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;\n1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;\n1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;\n1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;\n1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;\n1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;\n1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;\n1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;\n1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;\n1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;\n1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;\n1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;\n1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;\n1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;\n1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;\n1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;\n1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;\n1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;\n1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;\n1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;\n1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;\n1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;\n1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;\n1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;\n1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;\n1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;\n1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;\n1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;\n1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;\n1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;\n1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;\n1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;\n1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;\n1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;\n1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;\n1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;\n1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;\n1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;\n1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;\n1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;\n1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;\n1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;\n1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;\n1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;\n1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;\n1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;\n1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;\n1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;\n1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;\n1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;\n1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;\n1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;\n1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;\n1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;\n1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;\n1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;\n1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;\n1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;\n1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;\n1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;\n1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;\n1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;\n1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;\n1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;\n1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;\n1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;\n1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;\n1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;\n1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;\n1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;\n1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;\n1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;\n1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;\n1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;\n1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;\n1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;\n1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;\n1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;\n1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;\n1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;\n1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;\n1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;\n1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;\n1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;\n1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;\n1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;\n1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;\n1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;\n1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;\n1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;\n1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;\n1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;\n1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;\n1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;\n1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;\n1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;\n1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;\n1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;\n1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;\n1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;\n1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;\n1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;\n1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;\n1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;\n1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;\n1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;\n1F0A0;PLAYING CARD BACK;So;0;ON;;;;;N;;;;;\n1F0A1;PLAYING CARD ACE OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A2;PLAYING CARD TWO OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A3;PLAYING CARD THREE OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A4;PLAYING CARD FOUR OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A5;PLAYING CARD FIVE OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A6;PLAYING CARD SIX OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A7;PLAYING CARD SEVEN OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A8;PLAYING CARD EIGHT OF SPADES;So;0;ON;;;;;N;;;;;\n1F0A9;PLAYING CARD NINE OF SPADES;So;0;ON;;;;;N;;;;;\n1F0AA;PLAYING CARD TEN OF SPADES;So;0;ON;;;;;N;;;;;\n1F0AB;PLAYING CARD JACK OF SPADES;So;0;ON;;;;;N;;;;;\n1F0AC;PLAYING CARD KNIGHT OF SPADES;So;0;ON;;;;;N;;;;;\n1F0AD;PLAYING CARD QUEEN OF SPADES;So;0;ON;;;;;N;;;;;\n1F0AE;PLAYING CARD KING OF SPADES;So;0;ON;;;;;N;;;;;\n1F0B1;PLAYING CARD ACE OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B2;PLAYING CARD TWO OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B3;PLAYING CARD THREE OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B4;PLAYING CARD FOUR OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B5;PLAYING CARD FIVE OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B6;PLAYING CARD SIX OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B7;PLAYING CARD SEVEN OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B8;PLAYING CARD EIGHT OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0B9;PLAYING CARD NINE OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BA;PLAYING CARD TEN OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BB;PLAYING CARD JACK OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BC;PLAYING CARD KNIGHT OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BD;PLAYING CARD QUEEN OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BE;PLAYING CARD KING OF HEARTS;So;0;ON;;;;;N;;;;;\n1F0BF;PLAYING CARD RED JOKER;So;0;ON;;;;;N;;;;;\n1F0C1;PLAYING CARD ACE OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C2;PLAYING CARD TWO OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C3;PLAYING CARD THREE OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C4;PLAYING CARD FOUR OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C5;PLAYING CARD FIVE OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C6;PLAYING CARD SIX OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C7;PLAYING CARD SEVEN OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C8;PLAYING CARD EIGHT OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0C9;PLAYING CARD NINE OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CA;PLAYING CARD TEN OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CB;PLAYING CARD JACK OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CC;PLAYING CARD KNIGHT OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CD;PLAYING CARD QUEEN OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CE;PLAYING CARD KING OF DIAMONDS;So;0;ON;;;;;N;;;;;\n1F0CF;PLAYING CARD BLACK JOKER;So;0;ON;;;;;N;;;;;\n1F0D1;PLAYING CARD ACE OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D2;PLAYING CARD TWO OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D3;PLAYING CARD THREE OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D4;PLAYING CARD FOUR OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D5;PLAYING CARD FIVE OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D6;PLAYING CARD SIX OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D7;PLAYING CARD SEVEN OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D8;PLAYING CARD EIGHT OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0D9;PLAYING CARD NINE OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DA;PLAYING CARD TEN OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DB;PLAYING CARD JACK OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DC;PLAYING CARD KNIGHT OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DD;PLAYING CARD QUEEN OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DE;PLAYING CARD KING OF CLUBS;So;0;ON;;;;;N;;;;;\n1F0DF;PLAYING CARD WHITE JOKER;So;0;ON;;;;;N;;;;;\n1F0E0;PLAYING CARD FOOL;So;0;ON;;;;;N;;;;;\n1F0E1;PLAYING CARD TRUMP-1;So;0;ON;;;;;N;;;;;\n1F0E2;PLAYING CARD TRUMP-2;So;0;ON;;;;;N;;;;;\n1F0E3;PLAYING CARD TRUMP-3;So;0;ON;;;;;N;;;;;\n1F0E4;PLAYING CARD TRUMP-4;So;0;ON;;;;;N;;;;;\n1F0E5;PLAYING CARD TRUMP-5;So;0;ON;;;;;N;;;;;\n1F0E6;PLAYING CARD TRUMP-6;So;0;ON;;;;;N;;;;;\n1F0E7;PLAYING CARD TRUMP-7;So;0;ON;;;;;N;;;;;\n1F0E8;PLAYING CARD TRUMP-8;So;0;ON;;;;;N;;;;;\n1F0E9;PLAYING CARD TRUMP-9;So;0;ON;;;;;N;;;;;\n1F0EA;PLAYING CARD TRUMP-10;So;0;ON;;;;;N;;;;;\n1F0EB;PLAYING CARD TRUMP-11;So;0;ON;;;;;N;;;;;\n1F0EC;PLAYING CARD TRUMP-12;So;0;ON;;;;;N;;;;;\n1F0ED;PLAYING CARD TRUMP-13;So;0;ON;;;;;N;;;;;\n1F0EE;PLAYING CARD TRUMP-14;So;0;ON;;;;;N;;;;;\n1F0EF;PLAYING CARD TRUMP-15;So;0;ON;;;;;N;;;;;\n1F0F0;PLAYING CARD TRUMP-16;So;0;ON;;;;;N;;;;;\n1F0F1;PLAYING CARD TRUMP-17;So;0;ON;;;;;N;;;;;\n1F0F2;PLAYING CARD TRUMP-18;So;0;ON;;;;;N;;;;;\n1F0F3;PLAYING CARD TRUMP-19;So;0;ON;;;;;N;;;;;\n1F0F4;PLAYING CARD TRUMP-20;So;0;ON;;;;;N;;;;;\n1F0F5;PLAYING CARD TRUMP-21;So;0;ON;;;;;N;;;;;\n1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;\n1F101;DIGIT ZERO COMMA;No;0;EN;<compat> 0030 002C;;0;0;N;;;;;\n1F102;DIGIT ONE COMMA;No;0;EN;<compat> 0031 002C;;1;1;N;;;;;\n1F103;DIGIT TWO COMMA;No;0;EN;<compat> 0032 002C;;2;2;N;;;;;\n1F104;DIGIT THREE COMMA;No;0;EN;<compat> 0033 002C;;3;3;N;;;;;\n1F105;DIGIT FOUR COMMA;No;0;EN;<compat> 0034 002C;;4;4;N;;;;;\n1F106;DIGIT FIVE COMMA;No;0;EN;<compat> 0035 002C;;5;5;N;;;;;\n1F107;DIGIT SIX COMMA;No;0;EN;<compat> 0036 002C;;6;6;N;;;;;\n1F108;DIGIT SEVEN COMMA;No;0;EN;<compat> 0037 002C;;7;7;N;;;;;\n1F109;DIGIT EIGHT COMMA;No;0;EN;<compat> 0038 002C;;8;8;N;;;;;\n1F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;;\n1F10B;DINGBAT CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;;\n1F10C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;;\n1F10D;CIRCLED ZERO WITH SLASH;So;0;ON;;;;;N;;;;;\n1F10E;CIRCLED ANTICLOCKWISE ARROW;So;0;ON;;;;;N;;;;;\n1F10F;CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;;\n1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;\n1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;\n1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;\n1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;\n1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;\n1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;\n1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;\n1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;\n1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;\n1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;\n1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;\n1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;\n1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;\n1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;\n1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;\n1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;\n1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;\n1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;\n1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;\n1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;\n1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;\n1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;\n1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;\n1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;\n1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;\n1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;\n1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L;<compat> 3014 0053 3015;;;;N;;;;;\n1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;;\n1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;\n1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;\n1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;\n1F12F;COPYLEFT SYMBOL;So;0;ON;;;;;N;;;;;\n1F130;SQUARED LATIN CAPITAL LETTER A;So;0;L;<square> 0041;;;;N;;;;;\n1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;\n1F132;SQUARED LATIN CAPITAL LETTER C;So;0;L;<square> 0043;;;;N;;;;;\n1F133;SQUARED LATIN CAPITAL LETTER D;So;0;L;<square> 0044;;;;N;;;;;\n1F134;SQUARED LATIN CAPITAL LETTER E;So;0;L;<square> 0045;;;;N;;;;;\n1F135;SQUARED LATIN CAPITAL LETTER F;So;0;L;<square> 0046;;;;N;;;;;\n1F136;SQUARED LATIN CAPITAL LETTER G;So;0;L;<square> 0047;;;;N;;;;;\n1F137;SQUARED LATIN CAPITAL LETTER H;So;0;L;<square> 0048;;;;N;;;;;\n1F138;SQUARED LATIN CAPITAL LETTER I;So;0;L;<square> 0049;;;;N;;;;;\n1F139;SQUARED LATIN CAPITAL LETTER J;So;0;L;<square> 004A;;;;N;;;;;\n1F13A;SQUARED LATIN CAPITAL LETTER K;So;0;L;<square> 004B;;;;N;;;;;\n1F13B;SQUARED LATIN CAPITAL LETTER L;So;0;L;<square> 004C;;;;N;;;;;\n1F13C;SQUARED LATIN CAPITAL LETTER M;So;0;L;<square> 004D;;;;N;;;;;\n1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L;<square> 004E;;;;N;;;;;\n1F13E;SQUARED LATIN CAPITAL LETTER O;So;0;L;<square> 004F;;;;N;;;;;\n1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L;<square> 0050;;;;N;;;;;\n1F140;SQUARED LATIN CAPITAL LETTER Q;So;0;L;<square> 0051;;;;N;;;;;\n1F141;SQUARED LATIN CAPITAL LETTER R;So;0;L;<square> 0052;;;;N;;;;;\n1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L;<square> 0053;;;;N;;;;;\n1F143;SQUARED LATIN CAPITAL LETTER T;So;0;L;<square> 0054;;;;N;;;;;\n1F144;SQUARED LATIN CAPITAL LETTER U;So;0;L;<square> 0055;;;;N;;;;;\n1F145;SQUARED LATIN CAPITAL LETTER V;So;0;L;<square> 0056;;;;N;;;;;\n1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L;<square> 0057;;;;N;;;;;\n1F147;SQUARED LATIN CAPITAL LETTER X;So;0;L;<square> 0058;;;;N;;;;;\n1F148;SQUARED LATIN CAPITAL LETTER Y;So;0;L;<square> 0059;;;;N;;;;;\n1F149;SQUARED LATIN CAPITAL LETTER Z;So;0;L;<square> 005A;;;;N;;;;;\n1F14A;SQUARED HV;So;0;L;<square> 0048 0056;;;;N;;;;;\n1F14B;SQUARED MV;So;0;L;<square> 004D 0056;;;;N;;;;;\n1F14C;SQUARED SD;So;0;L;<square> 0053 0044;;;;N;;;;;\n1F14D;SQUARED SS;So;0;L;<square> 0053 0053;;;;N;;;;;\n1F14E;SQUARED PPV;So;0;L;<square> 0050 0050 0056;;;;N;;;;;\n1F14F;SQUARED WC;So;0;L;<square> 0057 0043;;;;N;;;;;\n1F150;NEGATIVE CIRCLED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;\n1F151;NEGATIVE CIRCLED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;\n1F152;NEGATIVE CIRCLED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;\n1F153;NEGATIVE CIRCLED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;\n1F154;NEGATIVE CIRCLED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;\n1F155;NEGATIVE CIRCLED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;\n1F156;NEGATIVE CIRCLED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;\n1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;\n1F158;NEGATIVE CIRCLED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;\n1F159;NEGATIVE CIRCLED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;\n1F15A;NEGATIVE CIRCLED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;\n1F15B;NEGATIVE CIRCLED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;\n1F15C;NEGATIVE CIRCLED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;\n1F15D;NEGATIVE CIRCLED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;\n1F15E;NEGATIVE CIRCLED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;\n1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;\n1F160;NEGATIVE CIRCLED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;\n1F161;NEGATIVE CIRCLED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;\n1F162;NEGATIVE CIRCLED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;\n1F163;NEGATIVE CIRCLED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;\n1F164;NEGATIVE CIRCLED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;\n1F165;NEGATIVE CIRCLED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;\n1F166;NEGATIVE CIRCLED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;\n1F167;NEGATIVE CIRCLED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;\n1F168;NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;\n1F169;NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;\n1F16A;RAISED MC SIGN;So;0;ON;<super> 004D 0043;;;;N;;;;;\n1F16B;RAISED MD SIGN;So;0;ON;<super> 004D 0044;;;;N;;;;;\n1F16C;RAISED MR SIGN;So;0;ON;<super> 004D 0052;;;;N;;;;;\n1F16D;CIRCLED CC;So;0;ON;;;;;N;;;;;\n1F16E;CIRCLED C WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;;\n1F16F;CIRCLED HUMAN FIGURE;So;0;ON;;;;;N;;;;;\n1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;\n1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;\n1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;\n1F173;NEGATIVE SQUARED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;\n1F174;NEGATIVE SQUARED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;\n1F175;NEGATIVE SQUARED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;\n1F176;NEGATIVE SQUARED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;\n1F177;NEGATIVE SQUARED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;\n1F178;NEGATIVE SQUARED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;\n1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;\n1F17A;NEGATIVE SQUARED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;\n1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;\n1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;\n1F17D;NEGATIVE SQUARED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;\n1F17E;NEGATIVE SQUARED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;\n1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;\n1F180;NEGATIVE SQUARED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;\n1F181;NEGATIVE SQUARED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;\n1F182;NEGATIVE SQUARED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;\n1F183;NEGATIVE SQUARED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;\n1F184;NEGATIVE SQUARED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;\n1F185;NEGATIVE SQUARED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;\n1F186;NEGATIVE SQUARED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;\n1F187;NEGATIVE SQUARED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;\n1F188;NEGATIVE SQUARED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;\n1F189;NEGATIVE SQUARED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;\n1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;\n1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;;\n1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;;\n1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;;\n1F18E;NEGATIVE SQUARED AB;So;0;L;;;;;N;;;;;\n1F18F;NEGATIVE SQUARED WC;So;0;L;;;;;N;;;;;\n1F190;SQUARE DJ;So;0;L;<square> 0044 004A;;;;N;;;;;\n1F191;SQUARED CL;So;0;L;;;;;N;;;;;\n1F192;SQUARED COOL;So;0;L;;;;;N;;;;;\n1F193;SQUARED FREE;So;0;L;;;;;N;;;;;\n1F194;SQUARED ID;So;0;L;;;;;N;;;;;\n1F195;SQUARED NEW;So;0;L;;;;;N;;;;;\n1F196;SQUARED NG;So;0;L;;;;;N;;;;;\n1F197;SQUARED OK;So;0;L;;;;;N;;;;;\n1F198;SQUARED SOS;So;0;L;;;;;N;;;;;\n1F199;SQUARED UP WITH EXCLAMATION MARK;So;0;L;;;;;N;;;;;\n1F19A;SQUARED VS;So;0;L;;;;;N;;;;;\n1F19B;SQUARED THREE D;So;0;L;;;;;N;;;;;\n1F19C;SQUARED SECOND SCREEN;So;0;L;;;;;N;;;;;\n1F19D;SQUARED TWO K;So;0;L;;;;;N;;;;;\n1F19E;SQUARED FOUR K;So;0;L;;;;;N;;;;;\n1F19F;SQUARED EIGHT K;So;0;L;;;;;N;;;;;\n1F1A0;SQUARED FIVE POINT ONE;So;0;L;;;;;N;;;;;\n1F1A1;SQUARED SEVEN POINT ONE;So;0;L;;;;;N;;;;;\n1F1A2;SQUARED TWENTY-TWO POINT TWO;So;0;L;;;;;N;;;;;\n1F1A3;SQUARED SIXTY P;So;0;L;;;;;N;;;;;\n1F1A4;SQUARED ONE HUNDRED TWENTY P;So;0;L;;;;;N;;;;;\n1F1A5;SQUARED LATIN SMALL LETTER D;So;0;L;;;;;N;;;;;\n1F1A6;SQUARED HC;So;0;L;;;;;N;;;;;\n1F1A7;SQUARED HDR;So;0;L;;;;;N;;;;;\n1F1A8;SQUARED HI-RES;So;0;L;;;;;N;;;;;\n1F1A9;SQUARED LOSSLESS;So;0;L;;;;;N;;;;;\n1F1AA;SQUARED SHV;So;0;L;;;;;N;;;;;\n1F1AB;SQUARED UHD;So;0;L;;;;;N;;;;;\n1F1AC;SQUARED VOD;So;0;L;;;;;N;;;;;\n1F1AD;MASK WORK SYMBOL;So;0;ON;;;;;N;;;;;\n1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;;\n1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;;\n1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;;\n1F1E9;REGIONAL INDICATOR SYMBOL LETTER D;So;0;L;;;;;N;;;;;\n1F1EA;REGIONAL INDICATOR SYMBOL LETTER E;So;0;L;;;;;N;;;;;\n1F1EB;REGIONAL INDICATOR SYMBOL LETTER F;So;0;L;;;;;N;;;;;\n1F1EC;REGIONAL INDICATOR SYMBOL LETTER G;So;0;L;;;;;N;;;;;\n1F1ED;REGIONAL INDICATOR SYMBOL LETTER H;So;0;L;;;;;N;;;;;\n1F1EE;REGIONAL INDICATOR SYMBOL LETTER I;So;0;L;;;;;N;;;;;\n1F1EF;REGIONAL INDICATOR SYMBOL LETTER J;So;0;L;;;;;N;;;;;\n1F1F0;REGIONAL INDICATOR SYMBOL LETTER K;So;0;L;;;;;N;;;;;\n1F1F1;REGIONAL INDICATOR SYMBOL LETTER L;So;0;L;;;;;N;;;;;\n1F1F2;REGIONAL INDICATOR SYMBOL LETTER M;So;0;L;;;;;N;;;;;\n1F1F3;REGIONAL INDICATOR SYMBOL LETTER N;So;0;L;;;;;N;;;;;\n1F1F4;REGIONAL INDICATOR SYMBOL LETTER O;So;0;L;;;;;N;;;;;\n1F1F5;REGIONAL INDICATOR SYMBOL LETTER P;So;0;L;;;;;N;;;;;\n1F1F6;REGIONAL INDICATOR SYMBOL LETTER Q;So;0;L;;;;;N;;;;;\n1F1F7;REGIONAL INDICATOR SYMBOL LETTER R;So;0;L;;;;;N;;;;;\n1F1F8;REGIONAL INDICATOR SYMBOL LETTER S;So;0;L;;;;;N;;;;;\n1F1F9;REGIONAL INDICATOR SYMBOL LETTER T;So;0;L;;;;;N;;;;;\n1F1FA;REGIONAL INDICATOR SYMBOL LETTER U;So;0;L;;;;;N;;;;;\n1F1FB;REGIONAL INDICATOR SYMBOL LETTER V;So;0;L;;;;;N;;;;;\n1F1FC;REGIONAL INDICATOR SYMBOL LETTER W;So;0;L;;;;;N;;;;;\n1F1FD;REGIONAL INDICATOR SYMBOL LETTER X;So;0;L;;;;;N;;;;;\n1F1FE;REGIONAL INDICATOR SYMBOL LETTER Y;So;0;L;;;;;N;;;;;\n1F1FF;REGIONAL INDICATOR SYMBOL LETTER Z;So;0;L;;;;;N;;;;;\n1F200;SQUARE HIRAGANA HOKA;So;0;L;<square> 307B 304B;;;;N;;;;;\n1F201;SQUARED KATAKANA KOKO;So;0;L;<square> 30B3 30B3;;;;N;;;;;\n1F202;SQUARED KATAKANA SA;So;0;L;<square> 30B5;;;;N;;;;;\n1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L;<square> 624B;;;;N;;;;;\n1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L;<square> 5B57;;;;N;;;;;\n1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L;<square> 53CC;;;;N;;;;;\n1F213;SQUARED KATAKANA DE;So;0;L;<square> 30C7;;;;N;;;;;\n1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<square> 4E8C;;;;N;;;;;\n1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L;<square> 591A;;;;N;;;;;\n1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L;<square> 89E3;;;;N;;;;;\n1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L;<square> 5929;;;;N;;;;;\n1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L;<square> 4EA4;;;;N;;;;;\n1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L;<square> 6620;;;;N;;;;;\n1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L;<square> 7121;;;;N;;;;;\n1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L;<square> 6599;;;;N;;;;;\n1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L;<square> 524D;;;;N;;;;;\n1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L;<square> 5F8C;;;;N;;;;;\n1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L;<square> 518D;;;;N;;;;;\n1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L;<square> 65B0;;;;N;;;;;\n1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L;<square> 521D;;;;N;;;;;\n1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L;<square> 7D42;;;;N;;;;;\n1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L;<square> 751F;;;;N;;;;;\n1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L;<square> 8CA9;;;;N;;;;;\n1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L;<square> 58F0;;;;N;;;;;\n1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L;<square> 5439;;;;N;;;;;\n1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L;<square> 6F14;;;;N;;;;;\n1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L;<square> 6295;;;;N;;;;;\n1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L;<square> 6355;;;;N;;;;;\n1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L;<square> 4E00;;;;N;;;;;\n1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<square> 4E09;;;;N;;;;;\n1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L;<square> 904A;;;;N;;;;;\n1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L;<square> 5DE6;;;;N;;;;;\n1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L;<square> 4E2D;;;;N;;;;;\n1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L;<square> 53F3;;;;N;;;;;\n1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L;<square> 6307;;;;N;;;;;\n1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L;<square> 8D70;;;;N;;;;;\n1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<square> 6253;;;;N;;;;;\n1F232;SQUARED CJK UNIFIED IDEOGRAPH-7981;So;0;L;<square> 7981;;;;N;;;;;\n1F233;SQUARED CJK UNIFIED IDEOGRAPH-7A7A;So;0;L;<square> 7A7A;;;;N;;;;;\n1F234;SQUARED CJK UNIFIED IDEOGRAPH-5408;So;0;L;<square> 5408;;;;N;;;;;\n1F235;SQUARED CJK UNIFIED IDEOGRAPH-6E80;So;0;L;<square> 6E80;;;;N;;;;;\n1F236;SQUARED CJK UNIFIED IDEOGRAPH-6709;So;0;L;<square> 6709;;;;N;;;;;\n1F237;SQUARED CJK UNIFIED IDEOGRAPH-6708;So;0;L;<square> 6708;;;;N;;;;;\n1F238;SQUARED CJK UNIFIED IDEOGRAPH-7533;So;0;L;<square> 7533;;;;N;;;;;\n1F239;SQUARED CJK UNIFIED IDEOGRAPH-5272;So;0;L;<square> 5272;;;;N;;;;;\n1F23A;SQUARED CJK UNIFIED IDEOGRAPH-55B6;So;0;L;<square> 55B6;;;;N;;;;;\n1F23B;SQUARED CJK UNIFIED IDEOGRAPH-914D;So;0;L;<square> 914D;;;;N;;;;;\n1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;;\n1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;;\n1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;;\n1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L;<compat> 3014 5B89 3015;;;;N;;;;;\n1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L;<compat> 3014 70B9 3015;;;;N;;;;;\n1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<compat> 3014 6253 3015;;;;N;;;;;\n1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L;<compat> 3014 76D7 3015;;;;N;;;;;\n1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L;<compat> 3014 52DD 3015;;;;N;;;;;\n1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L;<compat> 3014 6557 3015;;;;N;;;;;\n1F250;CIRCLED IDEOGRAPH ADVANTAGE;So;0;L;<circle> 5F97;;;;N;;;;;\n1F251;CIRCLED IDEOGRAPH ACCEPT;So;0;L;<circle> 53EF;;;;N;;;;;\n1F260;ROUNDED SYMBOL FOR FU;So;0;ON;;;;;N;;;;;\n1F261;ROUNDED SYMBOL FOR LU;So;0;ON;;;;;N;;;;;\n1F262;ROUNDED SYMBOL FOR SHOU;So;0;ON;;;;;N;;;;;\n1F263;ROUNDED SYMBOL FOR XI;So;0;ON;;;;;N;;;;;\n1F264;ROUNDED SYMBOL FOR SHUANGXI;So;0;ON;;;;;N;;;;;\n1F265;ROUNDED SYMBOL FOR CAI;So;0;ON;;;;;N;;;;;\n1F300;CYCLONE;So;0;ON;;;;;N;;;;;\n1F301;FOGGY;So;0;ON;;;;;N;;;;;\n1F302;CLOSED UMBRELLA;So;0;ON;;;;;N;;;;;\n1F303;NIGHT WITH STARS;So;0;ON;;;;;N;;;;;\n1F304;SUNRISE OVER MOUNTAINS;So;0;ON;;;;;N;;;;;\n1F305;SUNRISE;So;0;ON;;;;;N;;;;;\n1F306;CITYSCAPE AT DUSK;So;0;ON;;;;;N;;;;;\n1F307;SUNSET OVER BUILDINGS;So;0;ON;;;;;N;;;;;\n1F308;RAINBOW;So;0;ON;;;;;N;;;;;\n1F309;BRIDGE AT NIGHT;So;0;ON;;;;;N;;;;;\n1F30A;WATER WAVE;So;0;ON;;;;;N;;;;;\n1F30B;VOLCANO;So;0;ON;;;;;N;;;;;\n1F30C;MILKY WAY;So;0;ON;;;;;N;;;;;\n1F30D;EARTH GLOBE EUROPE-AFRICA;So;0;ON;;;;;N;;;;;\n1F30E;EARTH GLOBE AMERICAS;So;0;ON;;;;;N;;;;;\n1F30F;EARTH GLOBE ASIA-AUSTRALIA;So;0;ON;;;;;N;;;;;\n1F310;GLOBE WITH MERIDIANS;So;0;ON;;;;;N;;;;;\n1F311;NEW MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F312;WAXING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F313;FIRST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F314;WAXING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F315;FULL MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F316;WANING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F317;LAST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F318;WANING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;\n1F319;CRESCENT MOON;So;0;ON;;;;;N;;;;;\n1F31A;NEW MOON WITH FACE;So;0;ON;;;;;N;;;;;\n1F31B;FIRST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;\n1F31C;LAST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;\n1F31D;FULL MOON WITH FACE;So;0;ON;;;;;N;;;;;\n1F31E;SUN WITH FACE;So;0;ON;;;;;N;;;;;\n1F31F;GLOWING STAR;So;0;ON;;;;;N;;;;;\n1F320;SHOOTING STAR;So;0;ON;;;;;N;;;;;\n1F321;THERMOMETER;So;0;ON;;;;;N;;;;;\n1F322;BLACK DROPLET;So;0;ON;;;;;N;;;;;\n1F323;WHITE SUN;So;0;ON;;;;;N;;;;;\n1F324;WHITE SUN WITH SMALL CLOUD;So;0;ON;;;;;N;;;;;\n1F325;WHITE SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;\n1F326;WHITE SUN BEHIND CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;\n1F327;CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;\n1F328;CLOUD WITH SNOW;So;0;ON;;;;;N;;;;;\n1F329;CLOUD WITH LIGHTNING;So;0;ON;;;;;N;;;;;\n1F32A;CLOUD WITH TORNADO;So;0;ON;;;;;N;;;;;\n1F32B;FOG;So;0;ON;;;;;N;;;;;\n1F32C;WIND BLOWING FACE;So;0;ON;;;;;N;;;;;\n1F32D;HOT DOG;So;0;ON;;;;;N;;;;;\n1F32E;TACO;So;0;ON;;;;;N;;;;;\n1F32F;BURRITO;So;0;ON;;;;;N;;;;;\n1F330;CHESTNUT;So;0;ON;;;;;N;;;;;\n1F331;SEEDLING;So;0;ON;;;;;N;;;;;\n1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;;\n1F333;DECIDUOUS TREE;So;0;ON;;;;;N;;;;;\n1F334;PALM TREE;So;0;ON;;;;;N;;;;;\n1F335;CACTUS;So;0;ON;;;;;N;;;;;\n1F336;HOT PEPPER;So;0;ON;;;;;N;;;;;\n1F337;TULIP;So;0;ON;;;;;N;;;;;\n1F338;CHERRY BLOSSOM;So;0;ON;;;;;N;;;;;\n1F339;ROSE;So;0;ON;;;;;N;;;;;\n1F33A;HIBISCUS;So;0;ON;;;;;N;;;;;\n1F33B;SUNFLOWER;So;0;ON;;;;;N;;;;;\n1F33C;BLOSSOM;So;0;ON;;;;;N;;;;;\n1F33D;EAR OF MAIZE;So;0;ON;;;;;N;;;;;\n1F33E;EAR OF RICE;So;0;ON;;;;;N;;;;;\n1F33F;HERB;So;0;ON;;;;;N;;;;;\n1F340;FOUR LEAF CLOVER;So;0;ON;;;;;N;;;;;\n1F341;MAPLE LEAF;So;0;ON;;;;;N;;;;;\n1F342;FALLEN LEAF;So;0;ON;;;;;N;;;;;\n1F343;LEAF FLUTTERING IN WIND;So;0;ON;;;;;N;;;;;\n1F344;MUSHROOM;So;0;ON;;;;;N;;;;;\n1F345;TOMATO;So;0;ON;;;;;N;;;;;\n1F346;AUBERGINE;So;0;ON;;;;;N;;;;;\n1F347;GRAPES;So;0;ON;;;;;N;;;;;\n1F348;MELON;So;0;ON;;;;;N;;;;;\n1F349;WATERMELON;So;0;ON;;;;;N;;;;;\n1F34A;TANGERINE;So;0;ON;;;;;N;;;;;\n1F34B;LEMON;So;0;ON;;;;;N;;;;;\n1F34C;BANANA;So;0;ON;;;;;N;;;;;\n1F34D;PINEAPPLE;So;0;ON;;;;;N;;;;;\n1F34E;RED APPLE;So;0;ON;;;;;N;;;;;\n1F34F;GREEN APPLE;So;0;ON;;;;;N;;;;;\n1F350;PEAR;So;0;ON;;;;;N;;;;;\n1F351;PEACH;So;0;ON;;;;;N;;;;;\n1F352;CHERRIES;So;0;ON;;;;;N;;;;;\n1F353;STRAWBERRY;So;0;ON;;;;;N;;;;;\n1F354;HAMBURGER;So;0;ON;;;;;N;;;;;\n1F355;SLICE OF PIZZA;So;0;ON;;;;;N;;;;;\n1F356;MEAT ON BONE;So;0;ON;;;;;N;;;;;\n1F357;POULTRY LEG;So;0;ON;;;;;N;;;;;\n1F358;RICE CRACKER;So;0;ON;;;;;N;;;;;\n1F359;RICE BALL;So;0;ON;;;;;N;;;;;\n1F35A;COOKED RICE;So;0;ON;;;;;N;;;;;\n1F35B;CURRY AND RICE;So;0;ON;;;;;N;;;;;\n1F35C;STEAMING BOWL;So;0;ON;;;;;N;;;;;\n1F35D;SPAGHETTI;So;0;ON;;;;;N;;;;;\n1F35E;BREAD;So;0;ON;;;;;N;;;;;\n1F35F;FRENCH FRIES;So;0;ON;;;;;N;;;;;\n1F360;ROASTED SWEET POTATO;So;0;ON;;;;;N;;;;;\n1F361;DANGO;So;0;ON;;;;;N;;;;;\n1F362;ODEN;So;0;ON;;;;;N;;;;;\n1F363;SUSHI;So;0;ON;;;;;N;;;;;\n1F364;FRIED SHRIMP;So;0;ON;;;;;N;;;;;\n1F365;FISH CAKE WITH SWIRL DESIGN;So;0;ON;;;;;N;;;;;\n1F366;SOFT ICE CREAM;So;0;ON;;;;;N;;;;;\n1F367;SHAVED ICE;So;0;ON;;;;;N;;;;;\n1F368;ICE CREAM;So;0;ON;;;;;N;;;;;\n1F369;DOUGHNUT;So;0;ON;;;;;N;;;;;\n1F36A;COOKIE;So;0;ON;;;;;N;;;;;\n1F36B;CHOCOLATE BAR;So;0;ON;;;;;N;;;;;\n1F36C;CANDY;So;0;ON;;;;;N;;;;;\n1F36D;LOLLIPOP;So;0;ON;;;;;N;;;;;\n1F36E;CUSTARD;So;0;ON;;;;;N;;;;;\n1F36F;HONEY POT;So;0;ON;;;;;N;;;;;\n1F370;SHORTCAKE;So;0;ON;;;;;N;;;;;\n1F371;BENTO BOX;So;0;ON;;;;;N;;;;;\n1F372;POT OF FOOD;So;0;ON;;;;;N;;;;;\n1F373;COOKING;So;0;ON;;;;;N;;;;;\n1F374;FORK AND KNIFE;So;0;ON;;;;;N;;;;;\n1F375;TEACUP WITHOUT HANDLE;So;0;ON;;;;;N;;;;;\n1F376;SAKE BOTTLE AND CUP;So;0;ON;;;;;N;;;;;\n1F377;WINE GLASS;So;0;ON;;;;;N;;;;;\n1F378;COCKTAIL GLASS;So;0;ON;;;;;N;;;;;\n1F379;TROPICAL DRINK;So;0;ON;;;;;N;;;;;\n1F37A;BEER MUG;So;0;ON;;;;;N;;;;;\n1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;;\n1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;;\n1F37D;FORK AND KNIFE WITH PLATE;So;0;ON;;;;;N;;;;;\n1F37E;BOTTLE WITH POPPING CORK;So;0;ON;;;;;N;;;;;\n1F37F;POPCORN;So;0;ON;;;;;N;;;;;\n1F380;RIBBON;So;0;ON;;;;;N;;;;;\n1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;;\n1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;;\n1F383;JACK-O-LANTERN;So;0;ON;;;;;N;;;;;\n1F384;CHRISTMAS TREE;So;0;ON;;;;;N;;;;;\n1F385;FATHER CHRISTMAS;So;0;ON;;;;;N;;;;;\n1F386;FIREWORKS;So;0;ON;;;;;N;;;;;\n1F387;FIREWORK SPARKLER;So;0;ON;;;;;N;;;;;\n1F388;BALLOON;So;0;ON;;;;;N;;;;;\n1F389;PARTY POPPER;So;0;ON;;;;;N;;;;;\n1F38A;CONFETTI BALL;So;0;ON;;;;;N;;;;;\n1F38B;TANABATA TREE;So;0;ON;;;;;N;;;;;\n1F38C;CROSSED FLAGS;So;0;ON;;;;;N;;;;;\n1F38D;PINE DECORATION;So;0;ON;;;;;N;;;;;\n1F38E;JAPANESE DOLLS;So;0;ON;;;;;N;;;;;\n1F38F;CARP STREAMER;So;0;ON;;;;;N;;;;;\n1F390;WIND CHIME;So;0;ON;;;;;N;;;;;\n1F391;MOON VIEWING CEREMONY;So;0;ON;;;;;N;;;;;\n1F392;SCHOOL SATCHEL;So;0;ON;;;;;N;;;;;\n1F393;GRADUATION CAP;So;0;ON;;;;;N;;;;;\n1F394;HEART WITH TIP ON THE LEFT;So;0;ON;;;;;N;;;;;\n1F395;BOUQUET OF FLOWERS;So;0;ON;;;;;N;;;;;\n1F396;MILITARY MEDAL;So;0;ON;;;;;N;;;;;\n1F397;REMINDER RIBBON;So;0;ON;;;;;N;;;;;\n1F398;MUSICAL KEYBOARD WITH JACKS;So;0;ON;;;;;N;;;;;\n1F399;STUDIO MICROPHONE;So;0;ON;;;;;N;;;;;\n1F39A;LEVEL SLIDER;So;0;ON;;;;;N;;;;;\n1F39B;CONTROL KNOBS;So;0;ON;;;;;N;;;;;\n1F39C;BEAMED ASCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;\n1F39D;BEAMED DESCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;\n1F39E;FILM FRAMES;So;0;ON;;;;;N;;;;;\n1F39F;ADMISSION TICKETS;So;0;ON;;;;;N;;;;;\n1F3A0;CAROUSEL HORSE;So;0;ON;;;;;N;;;;;\n1F3A1;FERRIS WHEEL;So;0;ON;;;;;N;;;;;\n1F3A2;ROLLER COASTER;So;0;ON;;;;;N;;;;;\n1F3A3;FISHING POLE AND FISH;So;0;ON;;;;;N;;;;;\n1F3A4;MICROPHONE;So;0;ON;;;;;N;;;;;\n1F3A5;MOVIE CAMERA;So;0;ON;;;;;N;;;;;\n1F3A6;CINEMA;So;0;ON;;;;;N;;;;;\n1F3A7;HEADPHONE;So;0;ON;;;;;N;;;;;\n1F3A8;ARTIST PALETTE;So;0;ON;;;;;N;;;;;\n1F3A9;TOP HAT;So;0;ON;;;;;N;;;;;\n1F3AA;CIRCUS TENT;So;0;ON;;;;;N;;;;;\n1F3AB;TICKET;So;0;ON;;;;;N;;;;;\n1F3AC;CLAPPER BOARD;So;0;ON;;;;;N;;;;;\n1F3AD;PERFORMING ARTS;So;0;ON;;;;;N;;;;;\n1F3AE;VIDEO GAME;So;0;ON;;;;;N;;;;;\n1F3AF;DIRECT HIT;So;0;ON;;;;;N;;;;;\n1F3B0;SLOT MACHINE;So;0;ON;;;;;N;;;;;\n1F3B1;BILLIARDS;So;0;ON;;;;;N;;;;;\n1F3B2;GAME DIE;So;0;ON;;;;;N;;;;;\n1F3B3;BOWLING;So;0;ON;;;;;N;;;;;\n1F3B4;FLOWER PLAYING CARDS;So;0;ON;;;;;N;;;;;\n1F3B5;MUSICAL NOTE;So;0;ON;;;;;N;;;;;\n1F3B6;MULTIPLE MUSICAL NOTES;So;0;ON;;;;;N;;;;;\n1F3B7;SAXOPHONE;So;0;ON;;;;;N;;;;;\n1F3B8;GUITAR;So;0;ON;;;;;N;;;;;\n1F3B9;MUSICAL KEYBOARD;So;0;ON;;;;;N;;;;;\n1F3BA;TRUMPET;So;0;ON;;;;;N;;;;;\n1F3BB;VIOLIN;So;0;ON;;;;;N;;;;;\n1F3BC;MUSICAL SCORE;So;0;ON;;;;;N;;;;;\n1F3BD;RUNNING SHIRT WITH SASH;So;0;ON;;;;;N;;;;;\n1F3BE;TENNIS RACQUET AND BALL;So;0;ON;;;;;N;;;;;\n1F3BF;SKI AND SKI BOOT;So;0;ON;;;;;N;;;;;\n1F3C0;BASKETBALL AND HOOP;So;0;ON;;;;;N;;;;;\n1F3C1;CHEQUERED FLAG;So;0;ON;;;;;N;;;;;\n1F3C2;SNOWBOARDER;So;0;ON;;;;;N;;;;;\n1F3C3;RUNNER;So;0;ON;;;;;N;;;;;\n1F3C4;SURFER;So;0;ON;;;;;N;;;;;\n1F3C5;SPORTS MEDAL;So;0;ON;;;;;N;;;;;\n1F3C6;TROPHY;So;0;ON;;;;;N;;;;;\n1F3C7;HORSE RACING;So;0;ON;;;;;N;;;;;\n1F3C8;AMERICAN FOOTBALL;So;0;ON;;;;;N;;;;;\n1F3C9;RUGBY FOOTBALL;So;0;ON;;;;;N;;;;;\n1F3CA;SWIMMER;So;0;ON;;;;;N;;;;;\n1F3CB;WEIGHT LIFTER;So;0;ON;;;;;N;;;;;\n1F3CC;GOLFER;So;0;ON;;;;;N;;;;;\n1F3CD;RACING MOTORCYCLE;So;0;ON;;;;;N;;;;;\n1F3CE;RACING CAR;So;0;ON;;;;;N;;;;;\n1F3CF;CRICKET BAT AND BALL;So;0;ON;;;;;N;;;;;\n1F3D0;VOLLEYBALL;So;0;ON;;;;;N;;;;;\n1F3D1;FIELD HOCKEY STICK AND BALL;So;0;ON;;;;;N;;;;;\n1F3D2;ICE HOCKEY STICK AND PUCK;So;0;ON;;;;;N;;;;;\n1F3D3;TABLE TENNIS PADDLE AND BALL;So;0;ON;;;;;N;;;;;\n1F3D4;SNOW CAPPED MOUNTAIN;So;0;ON;;;;;N;;;;;\n1F3D5;CAMPING;So;0;ON;;;;;N;;;;;\n1F3D6;BEACH WITH UMBRELLA;So;0;ON;;;;;N;;;;;\n1F3D7;BUILDING CONSTRUCTION;So;0;ON;;;;;N;;;;;\n1F3D8;HOUSE BUILDINGS;So;0;ON;;;;;N;;;;;\n1F3D9;CITYSCAPE;So;0;ON;;;;;N;;;;;\n1F3DA;DERELICT HOUSE BUILDING;So;0;ON;;;;;N;;;;;\n1F3DB;CLASSICAL BUILDING;So;0;ON;;;;;N;;;;;\n1F3DC;DESERT;So;0;ON;;;;;N;;;;;\n1F3DD;DESERT ISLAND;So;0;ON;;;;;N;;;;;\n1F3DE;NATIONAL PARK;So;0;ON;;;;;N;;;;;\n1F3DF;STADIUM;So;0;ON;;;;;N;;;;;\n1F3E0;HOUSE BUILDING;So;0;ON;;;;;N;;;;;\n1F3E1;HOUSE WITH GARDEN;So;0;ON;;;;;N;;;;;\n1F3E2;OFFICE BUILDING;So;0;ON;;;;;N;;;;;\n1F3E3;JAPANESE POST OFFICE;So;0;ON;;;;;N;;;;;\n1F3E4;EUROPEAN POST OFFICE;So;0;ON;;;;;N;;;;;\n1F3E5;HOSPITAL;So;0;ON;;;;;N;;;;;\n1F3E6;BANK;So;0;ON;;;;;N;;;;;\n1F3E7;AUTOMATED TELLER MACHINE;So;0;ON;;;;;N;;;;;\n1F3E8;HOTEL;So;0;ON;;;;;N;;;;;\n1F3E9;LOVE HOTEL;So;0;ON;;;;;N;;;;;\n1F3EA;CONVENIENCE STORE;So;0;ON;;;;;N;;;;;\n1F3EB;SCHOOL;So;0;ON;;;;;N;;;;;\n1F3EC;DEPARTMENT STORE;So;0;ON;;;;;N;;;;;\n1F3ED;FACTORY;So;0;ON;;;;;N;;;;;\n1F3EE;IZAKAYA LANTERN;So;0;ON;;;;;N;;;;;\n1F3EF;JAPANESE CASTLE;So;0;ON;;;;;N;;;;;\n1F3F0;EUROPEAN CASTLE;So;0;ON;;;;;N;;;;;\n1F3F1;WHITE PENNANT;So;0;ON;;;;;N;;;;;\n1F3F2;BLACK PENNANT;So;0;ON;;;;;N;;;;;\n1F3F3;WAVING WHITE FLAG;So;0;ON;;;;;N;;;;;\n1F3F4;WAVING BLACK FLAG;So;0;ON;;;;;N;;;;;\n1F3F5;ROSETTE;So;0;ON;;;;;N;;;;;\n1F3F6;BLACK ROSETTE;So;0;ON;;;;;N;;;;;\n1F3F7;LABEL;So;0;ON;;;;;N;;;;;\n1F3F8;BADMINTON RACQUET AND SHUTTLECOCK;So;0;ON;;;;;N;;;;;\n1F3F9;BOW AND ARROW;So;0;ON;;;;;N;;;;;\n1F3FA;AMPHORA;So;0;ON;;;;;N;;;;;\n1F3FB;EMOJI MODIFIER FITZPATRICK TYPE-1-2;Sk;0;ON;;;;;N;;;;;\n1F3FC;EMOJI MODIFIER FITZPATRICK TYPE-3;Sk;0;ON;;;;;N;;;;;\n1F3FD;EMOJI MODIFIER FITZPATRICK TYPE-4;Sk;0;ON;;;;;N;;;;;\n1F3FE;EMOJI MODIFIER FITZPATRICK TYPE-5;Sk;0;ON;;;;;N;;;;;\n1F3FF;EMOJI MODIFIER FITZPATRICK TYPE-6;Sk;0;ON;;;;;N;;;;;\n1F400;RAT;So;0;ON;;;;;N;;;;;\n1F401;MOUSE;So;0;ON;;;;;N;;;;;\n1F402;OX;So;0;ON;;;;;N;;;;;\n1F403;WATER BUFFALO;So;0;ON;;;;;N;;;;;\n1F404;COW;So;0;ON;;;;;N;;;;;\n1F405;TIGER;So;0;ON;;;;;N;;;;;\n1F406;LEOPARD;So;0;ON;;;;;N;;;;;\n1F407;RABBIT;So;0;ON;;;;;N;;;;;\n1F408;CAT;So;0;ON;;;;;N;;;;;\n1F409;DRAGON;So;0;ON;;;;;N;;;;;\n1F40A;CROCODILE;So;0;ON;;;;;N;;;;;\n1F40B;WHALE;So;0;ON;;;;;N;;;;;\n1F40C;SNAIL;So;0;ON;;;;;N;;;;;\n1F40D;SNAKE;So;0;ON;;;;;N;;;;;\n1F40E;HORSE;So;0;ON;;;;;N;;;;;\n1F40F;RAM;So;0;ON;;;;;N;;;;;\n1F410;GOAT;So;0;ON;;;;;N;;;;;\n1F411;SHEEP;So;0;ON;;;;;N;;;;;\n1F412;MONKEY;So;0;ON;;;;;N;;;;;\n1F413;ROOSTER;So;0;ON;;;;;N;;;;;\n1F414;CHICKEN;So;0;ON;;;;;N;;;;;\n1F415;DOG;So;0;ON;;;;;N;;;;;\n1F416;PIG;So;0;ON;;;;;N;;;;;\n1F417;BOAR;So;0;ON;;;;;N;;;;;\n1F418;ELEPHANT;So;0;ON;;;;;N;;;;;\n1F419;OCTOPUS;So;0;ON;;;;;N;;;;;\n1F41A;SPIRAL SHELL;So;0;ON;;;;;N;;;;;\n1F41B;BUG;So;0;ON;;;;;N;;;;;\n1F41C;ANT;So;0;ON;;;;;N;;;;;\n1F41D;HONEYBEE;So;0;ON;;;;;N;;;;;\n1F41E;LADY BEETLE;So;0;ON;;;;;N;;;;;\n1F41F;FISH;So;0;ON;;;;;N;;;;;\n1F420;TROPICAL FISH;So;0;ON;;;;;N;;;;;\n1F421;BLOWFISH;So;0;ON;;;;;N;;;;;\n1F422;TURTLE;So;0;ON;;;;;N;;;;;\n1F423;HATCHING CHICK;So;0;ON;;;;;N;;;;;\n1F424;BABY CHICK;So;0;ON;;;;;N;;;;;\n1F425;FRONT-FACING BABY CHICK;So;0;ON;;;;;N;;;;;\n1F426;BIRD;So;0;ON;;;;;N;;;;;\n1F427;PENGUIN;So;0;ON;;;;;N;;;;;\n1F428;KOALA;So;0;ON;;;;;N;;;;;\n1F429;POODLE;So;0;ON;;;;;N;;;;;\n1F42A;DROMEDARY CAMEL;So;0;ON;;;;;N;;;;;\n1F42B;BACTRIAN CAMEL;So;0;ON;;;;;N;;;;;\n1F42C;DOLPHIN;So;0;ON;;;;;N;;;;;\n1F42D;MOUSE FACE;So;0;ON;;;;;N;;;;;\n1F42E;COW FACE;So;0;ON;;;;;N;;;;;\n1F42F;TIGER FACE;So;0;ON;;;;;N;;;;;\n1F430;RABBIT FACE;So;0;ON;;;;;N;;;;;\n1F431;CAT FACE;So;0;ON;;;;;N;;;;;\n1F432;DRAGON FACE;So;0;ON;;;;;N;;;;;\n1F433;SPOUTING WHALE;So;0;ON;;;;;N;;;;;\n1F434;HORSE FACE;So;0;ON;;;;;N;;;;;\n1F435;MONKEY FACE;So;0;ON;;;;;N;;;;;\n1F436;DOG FACE;So;0;ON;;;;;N;;;;;\n1F437;PIG FACE;So;0;ON;;;;;N;;;;;\n1F438;FROG FACE;So;0;ON;;;;;N;;;;;\n1F439;HAMSTER FACE;So;0;ON;;;;;N;;;;;\n1F43A;WOLF FACE;So;0;ON;;;;;N;;;;;\n1F43B;BEAR FACE;So;0;ON;;;;;N;;;;;\n1F43C;PANDA FACE;So;0;ON;;;;;N;;;;;\n1F43D;PIG NOSE;So;0;ON;;;;;N;;;;;\n1F43E;PAW PRINTS;So;0;ON;;;;;N;;;;;\n1F43F;CHIPMUNK;So;0;ON;;;;;N;;;;;\n1F440;EYES;So;0;ON;;;;;N;;;;;\n1F441;EYE;So;0;ON;;;;;N;;;;;\n1F442;EAR;So;0;ON;;;;;N;;;;;\n1F443;NOSE;So;0;ON;;;;;N;;;;;\n1F444;MOUTH;So;0;ON;;;;;N;;;;;\n1F445;TONGUE;So;0;ON;;;;;N;;;;;\n1F446;WHITE UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F447;WHITE DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F448;WHITE LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F449;WHITE RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F44A;FISTED HAND SIGN;So;0;ON;;;;;N;;;;;\n1F44B;WAVING HAND SIGN;So;0;ON;;;;;N;;;;;\n1F44C;OK HAND SIGN;So;0;ON;;;;;N;;;;;\n1F44D;THUMBS UP SIGN;So;0;ON;;;;;N;;;;;\n1F44E;THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;\n1F44F;CLAPPING HANDS SIGN;So;0;ON;;;;;N;;;;;\n1F450;OPEN HANDS SIGN;So;0;ON;;;;;N;;;;;\n1F451;CROWN;So;0;ON;;;;;N;;;;;\n1F452;WOMANS HAT;So;0;ON;;;;;N;;;;;\n1F453;EYEGLASSES;So;0;ON;;;;;N;;;;;\n1F454;NECKTIE;So;0;ON;;;;;N;;;;;\n1F455;T-SHIRT;So;0;ON;;;;;N;;;;;\n1F456;JEANS;So;0;ON;;;;;N;;;;;\n1F457;DRESS;So;0;ON;;;;;N;;;;;\n1F458;KIMONO;So;0;ON;;;;;N;;;;;\n1F459;BIKINI;So;0;ON;;;;;N;;;;;\n1F45A;WOMANS CLOTHES;So;0;ON;;;;;N;;;;;\n1F45B;PURSE;So;0;ON;;;;;N;;;;;\n1F45C;HANDBAG;So;0;ON;;;;;N;;;;;\n1F45D;POUCH;So;0;ON;;;;;N;;;;;\n1F45E;MANS SHOE;So;0;ON;;;;;N;;;;;\n1F45F;ATHLETIC SHOE;So;0;ON;;;;;N;;;;;\n1F460;HIGH-HEELED SHOE;So;0;ON;;;;;N;;;;;\n1F461;WOMANS SANDAL;So;0;ON;;;;;N;;;;;\n1F462;WOMANS BOOTS;So;0;ON;;;;;N;;;;;\n1F463;FOOTPRINTS;So;0;ON;;;;;N;;;;;\n1F464;BUST IN SILHOUETTE;So;0;ON;;;;;N;;;;;\n1F465;BUSTS IN SILHOUETTE;So;0;ON;;;;;N;;;;;\n1F466;BOY;So;0;ON;;;;;N;;;;;\n1F467;GIRL;So;0;ON;;;;;N;;;;;\n1F468;MAN;So;0;ON;;;;;N;;;;;\n1F469;WOMAN;So;0;ON;;;;;N;;;;;\n1F46A;FAMILY;So;0;ON;;;;;N;;;;;\n1F46B;MAN AND WOMAN HOLDING HANDS;So;0;ON;;;;;N;;;;;\n1F46C;TWO MEN HOLDING HANDS;So;0;ON;;;;;N;;;;;\n1F46D;TWO WOMEN HOLDING HANDS;So;0;ON;;;;;N;;;;;\n1F46E;POLICE OFFICER;So;0;ON;;;;;N;;;;;\n1F46F;WOMAN WITH BUNNY EARS;So;0;ON;;;;;N;;;;;\n1F470;BRIDE WITH VEIL;So;0;ON;;;;;N;;;;;\n1F471;PERSON WITH BLOND HAIR;So;0;ON;;;;;N;;;;;\n1F472;MAN WITH GUA PI MAO;So;0;ON;;;;;N;;;;;\n1F473;MAN WITH TURBAN;So;0;ON;;;;;N;;;;;\n1F474;OLDER MAN;So;0;ON;;;;;N;;;;;\n1F475;OLDER WOMAN;So;0;ON;;;;;N;;;;;\n1F476;BABY;So;0;ON;;;;;N;;;;;\n1F477;CONSTRUCTION WORKER;So;0;ON;;;;;N;;;;;\n1F478;PRINCESS;So;0;ON;;;;;N;;;;;\n1F479;JAPANESE OGRE;So;0;ON;;;;;N;;;;;\n1F47A;JAPANESE GOBLIN;So;0;ON;;;;;N;;;;;\n1F47B;GHOST;So;0;ON;;;;;N;;;;;\n1F47C;BABY ANGEL;So;0;ON;;;;;N;;;;;\n1F47D;EXTRATERRESTRIAL ALIEN;So;0;ON;;;;;N;;;;;\n1F47E;ALIEN MONSTER;So;0;ON;;;;;N;;;;;\n1F47F;IMP;So;0;ON;;;;;N;;;;;\n1F480;SKULL;So;0;ON;;;;;N;;;;;\n1F481;INFORMATION DESK PERSON;So;0;ON;;;;;N;;;;;\n1F482;GUARDSMAN;So;0;ON;;;;;N;;;;;\n1F483;DANCER;So;0;ON;;;;;N;;;;;\n1F484;LIPSTICK;So;0;ON;;;;;N;;;;;\n1F485;NAIL POLISH;So;0;ON;;;;;N;;;;;\n1F486;FACE MASSAGE;So;0;ON;;;;;N;;;;;\n1F487;HAIRCUT;So;0;ON;;;;;N;;;;;\n1F488;BARBER POLE;So;0;ON;;;;;N;;;;;\n1F489;SYRINGE;So;0;ON;;;;;N;;;;;\n1F48A;PILL;So;0;ON;;;;;N;;;;;\n1F48B;KISS MARK;So;0;ON;;;;;N;;;;;\n1F48C;LOVE LETTER;So;0;ON;;;;;N;;;;;\n1F48D;RING;So;0;ON;;;;;N;;;;;\n1F48E;GEM STONE;So;0;ON;;;;;N;;;;;\n1F48F;KISS;So;0;ON;;;;;N;;;;;\n1F490;BOUQUET;So;0;ON;;;;;N;;;;;\n1F491;COUPLE WITH HEART;So;0;ON;;;;;N;;;;;\n1F492;WEDDING;So;0;ON;;;;;N;;;;;\n1F493;BEATING HEART;So;0;ON;;;;;N;;;;;\n1F494;BROKEN HEART;So;0;ON;;;;;N;;;;;\n1F495;TWO HEARTS;So;0;ON;;;;;N;;;;;\n1F496;SPARKLING HEART;So;0;ON;;;;;N;;;;;\n1F497;GROWING HEART;So;0;ON;;;;;N;;;;;\n1F498;HEART WITH ARROW;So;0;ON;;;;;N;;;;;\n1F499;BLUE HEART;So;0;ON;;;;;N;;;;;\n1F49A;GREEN HEART;So;0;ON;;;;;N;;;;;\n1F49B;YELLOW HEART;So;0;ON;;;;;N;;;;;\n1F49C;PURPLE HEART;So;0;ON;;;;;N;;;;;\n1F49D;HEART WITH RIBBON;So;0;ON;;;;;N;;;;;\n1F49E;REVOLVING HEARTS;So;0;ON;;;;;N;;;;;\n1F49F;HEART DECORATION;So;0;ON;;;;;N;;;;;\n1F4A0;DIAMOND SHAPE WITH A DOT INSIDE;So;0;ON;;;;;N;;;;;\n1F4A1;ELECTRIC LIGHT BULB;So;0;ON;;;;;N;;;;;\n1F4A2;ANGER SYMBOL;So;0;ON;;;;;N;;;;;\n1F4A3;BOMB;So;0;ON;;;;;N;;;;;\n1F4A4;SLEEPING SYMBOL;So;0;ON;;;;;N;;;;;\n1F4A5;COLLISION SYMBOL;So;0;ON;;;;;N;;;;;\n1F4A6;SPLASHING SWEAT SYMBOL;So;0;ON;;;;;N;;;;;\n1F4A7;DROPLET;So;0;ON;;;;;N;;;;;\n1F4A8;DASH SYMBOL;So;0;ON;;;;;N;;;;;\n1F4A9;PILE OF POO;So;0;ON;;;;;N;;;;;\n1F4AA;FLEXED BICEPS;So;0;ON;;;;;N;;;;;\n1F4AB;DIZZY SYMBOL;So;0;ON;;;;;N;;;;;\n1F4AC;SPEECH BALLOON;So;0;ON;;;;;N;;;;;\n1F4AD;THOUGHT BALLOON;So;0;ON;;;;;N;;;;;\n1F4AE;WHITE FLOWER;So;0;ON;;;;;N;;;;;\n1F4AF;HUNDRED POINTS SYMBOL;So;0;ON;;;;;N;;;;;\n1F4B0;MONEY BAG;So;0;ON;;;;;N;;;;;\n1F4B1;CURRENCY EXCHANGE;So;0;ON;;;;;N;;;;;\n1F4B2;HEAVY DOLLAR SIGN;So;0;ON;;;;;N;;;;;\n1F4B3;CREDIT CARD;So;0;ON;;;;;N;;;;;\n1F4B4;BANKNOTE WITH YEN SIGN;So;0;ON;;;;;N;;;;;\n1F4B5;BANKNOTE WITH DOLLAR SIGN;So;0;ON;;;;;N;;;;;\n1F4B6;BANKNOTE WITH EURO SIGN;So;0;ON;;;;;N;;;;;\n1F4B7;BANKNOTE WITH POUND SIGN;So;0;ON;;;;;N;;;;;\n1F4B8;MONEY WITH WINGS;So;0;ON;;;;;N;;;;;\n1F4B9;CHART WITH UPWARDS TREND AND YEN SIGN;So;0;ON;;;;;N;;;;;\n1F4BA;SEAT;So;0;ON;;;;;N;;;;;\n1F4BB;PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;\n1F4BC;BRIEFCASE;So;0;ON;;;;;N;;;;;\n1F4BD;MINIDISC;So;0;ON;;;;;N;;;;;\n1F4BE;FLOPPY DISK;So;0;ON;;;;;N;;;;;\n1F4BF;OPTICAL DISC;So;0;ON;;;;;N;;;;;\n1F4C0;DVD;So;0;ON;;;;;N;;;;;\n1F4C1;FILE FOLDER;So;0;ON;;;;;N;;;;;\n1F4C2;OPEN FILE FOLDER;So;0;ON;;;;;N;;;;;\n1F4C3;PAGE WITH CURL;So;0;ON;;;;;N;;;;;\n1F4C4;PAGE FACING UP;So;0;ON;;;;;N;;;;;\n1F4C5;CALENDAR;So;0;ON;;;;;N;;;;;\n1F4C6;TEAR-OFF CALENDAR;So;0;ON;;;;;N;;;;;\n1F4C7;CARD INDEX;So;0;ON;;;;;N;;;;;\n1F4C8;CHART WITH UPWARDS TREND;So;0;ON;;;;;N;;;;;\n1F4C9;CHART WITH DOWNWARDS TREND;So;0;ON;;;;;N;;;;;\n1F4CA;BAR CHART;So;0;ON;;;;;N;;;;;\n1F4CB;CLIPBOARD;So;0;ON;;;;;N;;;;;\n1F4CC;PUSHPIN;So;0;ON;;;;;N;;;;;\n1F4CD;ROUND PUSHPIN;So;0;ON;;;;;N;;;;;\n1F4CE;PAPERCLIP;So;0;ON;;;;;N;;;;;\n1F4CF;STRAIGHT RULER;So;0;ON;;;;;N;;;;;\n1F4D0;TRIANGULAR RULER;So;0;ON;;;;;N;;;;;\n1F4D1;BOOKMARK TABS;So;0;ON;;;;;N;;;;;\n1F4D2;LEDGER;So;0;ON;;;;;N;;;;;\n1F4D3;NOTEBOOK;So;0;ON;;;;;N;;;;;\n1F4D4;NOTEBOOK WITH DECORATIVE COVER;So;0;ON;;;;;N;;;;;\n1F4D5;CLOSED BOOK;So;0;ON;;;;;N;;;;;\n1F4D6;OPEN BOOK;So;0;ON;;;;;N;;;;;\n1F4D7;GREEN BOOK;So;0;ON;;;;;N;;;;;\n1F4D8;BLUE BOOK;So;0;ON;;;;;N;;;;;\n1F4D9;ORANGE BOOK;So;0;ON;;;;;N;;;;;\n1F4DA;BOOKS;So;0;ON;;;;;N;;;;;\n1F4DB;NAME BADGE;So;0;ON;;;;;N;;;;;\n1F4DC;SCROLL;So;0;ON;;;;;N;;;;;\n1F4DD;MEMO;So;0;ON;;;;;N;;;;;\n1F4DE;TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;\n1F4DF;PAGER;So;0;ON;;;;;N;;;;;\n1F4E0;FAX MACHINE;So;0;ON;;;;;N;;;;;\n1F4E1;SATELLITE ANTENNA;So;0;ON;;;;;N;;;;;\n1F4E2;PUBLIC ADDRESS LOUDSPEAKER;So;0;ON;;;;;N;;;;;\n1F4E3;CHEERING MEGAPHONE;So;0;ON;;;;;N;;;;;\n1F4E4;OUTBOX TRAY;So;0;ON;;;;;N;;;;;\n1F4E5;INBOX TRAY;So;0;ON;;;;;N;;;;;\n1F4E6;PACKAGE;So;0;ON;;;;;N;;;;;\n1F4E7;E-MAIL SYMBOL;So;0;ON;;;;;N;;;;;\n1F4E8;INCOMING ENVELOPE;So;0;ON;;;;;N;;;;;\n1F4E9;ENVELOPE WITH DOWNWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F4EA;CLOSED MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;\n1F4EB;CLOSED MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;\n1F4EC;OPEN MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;\n1F4ED;OPEN MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;\n1F4EE;POSTBOX;So;0;ON;;;;;N;;;;;\n1F4EF;POSTAL HORN;So;0;ON;;;;;N;;;;;\n1F4F0;NEWSPAPER;So;0;ON;;;;;N;;;;;\n1F4F1;MOBILE PHONE;So;0;ON;;;;;N;;;;;\n1F4F2;MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT;So;0;ON;;;;;N;;;;;\n1F4F3;VIBRATION MODE;So;0;ON;;;;;N;;;;;\n1F4F4;MOBILE PHONE OFF;So;0;ON;;;;;N;;;;;\n1F4F5;NO MOBILE PHONES;So;0;ON;;;;;N;;;;;\n1F4F6;ANTENNA WITH BARS;So;0;ON;;;;;N;;;;;\n1F4F7;CAMERA;So;0;ON;;;;;N;;;;;\n1F4F8;CAMERA WITH FLASH;So;0;ON;;;;;N;;;;;\n1F4F9;VIDEO CAMERA;So;0;ON;;;;;N;;;;;\n1F4FA;TELEVISION;So;0;ON;;;;;N;;;;;\n1F4FB;RADIO;So;0;ON;;;;;N;;;;;\n1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;;\n1F4FD;FILM PROJECTOR;So;0;ON;;;;;N;;;;;\n1F4FE;PORTABLE STEREO;So;0;ON;;;;;N;;;;;\n1F4FF;PRAYER BEADS;So;0;ON;;;;;N;;;;;\n1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;;\n1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;\n1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;;\n1F503;CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;\n1F504;ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;\n1F505;LOW BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;\n1F506;HIGH BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;\n1F507;SPEAKER WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;\n1F508;SPEAKER;So;0;ON;;;;;N;;;;;\n1F509;SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;\n1F50A;SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;\n1F50B;BATTERY;So;0;ON;;;;;N;;;;;\n1F50C;ELECTRIC PLUG;So;0;ON;;;;;N;;;;;\n1F50D;LEFT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;\n1F50E;RIGHT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;\n1F50F;LOCK WITH INK PEN;So;0;ON;;;;;N;;;;;\n1F510;CLOSED LOCK WITH KEY;So;0;ON;;;;;N;;;;;\n1F511;KEY;So;0;ON;;;;;N;;;;;\n1F512;LOCK;So;0;ON;;;;;N;;;;;\n1F513;OPEN LOCK;So;0;ON;;;;;N;;;;;\n1F514;BELL;So;0;ON;;;;;N;;;;;\n1F515;BELL WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;\n1F516;BOOKMARK;So;0;ON;;;;;N;;;;;\n1F517;LINK SYMBOL;So;0;ON;;;;;N;;;;;\n1F518;RADIO BUTTON;So;0;ON;;;;;N;;;;;\n1F519;BACK WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F51A;END WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F51B;ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F51C;SOON WITH RIGHTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F51D;TOP WITH UPWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;\n1F51E;NO ONE UNDER EIGHTEEN SYMBOL;So;0;ON;;;;;N;;;;;\n1F51F;KEYCAP TEN;So;0;ON;;;;;N;;;;;\n1F520;INPUT SYMBOL FOR LATIN CAPITAL LETTERS;So;0;ON;;;;;N;;;;;\n1F521;INPUT SYMBOL FOR LATIN SMALL LETTERS;So;0;ON;;;;;N;;;;;\n1F522;INPUT SYMBOL FOR NUMBERS;So;0;ON;;;;;N;;;;;\n1F523;INPUT SYMBOL FOR SYMBOLS;So;0;ON;;;;;N;;;;;\n1F524;INPUT SYMBOL FOR LATIN LETTERS;So;0;ON;;;;;N;;;;;\n1F525;FIRE;So;0;ON;;;;;N;;;;;\n1F526;ELECTRIC TORCH;So;0;ON;;;;;N;;;;;\n1F527;WRENCH;So;0;ON;;;;;N;;;;;\n1F528;HAMMER;So;0;ON;;;;;N;;;;;\n1F529;NUT AND BOLT;So;0;ON;;;;;N;;;;;\n1F52A;HOCHO;So;0;ON;;;;;N;;;;;\n1F52B;PISTOL;So;0;ON;;;;;N;;;;;\n1F52C;MICROSCOPE;So;0;ON;;;;;N;;;;;\n1F52D;TELESCOPE;So;0;ON;;;;;N;;;;;\n1F52E;CRYSTAL BALL;So;0;ON;;;;;N;;;;;\n1F52F;SIX POINTED STAR WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;\n1F530;JAPANESE SYMBOL FOR BEGINNER;So;0;ON;;;;;N;;;;;\n1F531;TRIDENT EMBLEM;So;0;ON;;;;;N;;;;;\n1F532;BLACK SQUARE BUTTON;So;0;ON;;;;;N;;;;;\n1F533;WHITE SQUARE BUTTON;So;0;ON;;;;;N;;;;;\n1F534;LARGE RED CIRCLE;So;0;ON;;;;;N;;;;;\n1F535;LARGE BLUE CIRCLE;So;0;ON;;;;;N;;;;;\n1F536;LARGE ORANGE DIAMOND;So;0;ON;;;;;N;;;;;\n1F537;LARGE BLUE DIAMOND;So;0;ON;;;;;N;;;;;\n1F538;SMALL ORANGE DIAMOND;So;0;ON;;;;;N;;;;;\n1F539;SMALL BLUE DIAMOND;So;0;ON;;;;;N;;;;;\n1F53A;UP-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F53B;DOWN-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F53C;UP-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F53D;DOWN-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F53E;LOWER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F53F;UPPER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F540;CIRCLED CROSS POMMEE;So;0;ON;;;;;N;;;;;\n1F541;CROSS POMMEE WITH HALF-CIRCLE BELOW;So;0;ON;;;;;N;;;;;\n1F542;CROSS POMMEE;So;0;ON;;;;;N;;;;;\n1F543;NOTCHED LEFT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;\n1F544;NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;\n1F545;SYMBOL FOR MARKS CHAPTER;So;0;ON;;;;;N;;;;;\n1F546;WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;\n1F547;HEAVY LATIN CROSS;So;0;ON;;;;;N;;;;;\n1F548;CELTIC CROSS;So;0;ON;;;;;N;;;;;\n1F549;OM SYMBOL;So;0;ON;;;;;N;;;;;\n1F54A;DOVE OF PEACE;So;0;ON;;;;;N;;;;;\n1F54B;KAABA;So;0;ON;;;;;N;;;;;\n1F54C;MOSQUE;So;0;ON;;;;;N;;;;;\n1F54D;SYNAGOGUE;So;0;ON;;;;;N;;;;;\n1F54E;MENORAH WITH NINE BRANCHES;So;0;ON;;;;;N;;;;;\n1F54F;BOWL OF HYGIEIA;So;0;ON;;;;;N;;;;;\n1F550;CLOCK FACE ONE OCLOCK;So;0;ON;;;;;N;;;;;\n1F551;CLOCK FACE TWO OCLOCK;So;0;ON;;;;;N;;;;;\n1F552;CLOCK FACE THREE OCLOCK;So;0;ON;;;;;N;;;;;\n1F553;CLOCK FACE FOUR OCLOCK;So;0;ON;;;;;N;;;;;\n1F554;CLOCK FACE FIVE OCLOCK;So;0;ON;;;;;N;;;;;\n1F555;CLOCK FACE SIX OCLOCK;So;0;ON;;;;;N;;;;;\n1F556;CLOCK FACE SEVEN OCLOCK;So;0;ON;;;;;N;;;;;\n1F557;CLOCK FACE EIGHT OCLOCK;So;0;ON;;;;;N;;;;;\n1F558;CLOCK FACE NINE OCLOCK;So;0;ON;;;;;N;;;;;\n1F559;CLOCK FACE TEN OCLOCK;So;0;ON;;;;;N;;;;;\n1F55A;CLOCK FACE ELEVEN OCLOCK;So;0;ON;;;;;N;;;;;\n1F55B;CLOCK FACE TWELVE OCLOCK;So;0;ON;;;;;N;;;;;\n1F55C;CLOCK FACE ONE-THIRTY;So;0;ON;;;;;N;;;;;\n1F55D;CLOCK FACE TWO-THIRTY;So;0;ON;;;;;N;;;;;\n1F55E;CLOCK FACE THREE-THIRTY;So;0;ON;;;;;N;;;;;\n1F55F;CLOCK FACE FOUR-THIRTY;So;0;ON;;;;;N;;;;;\n1F560;CLOCK FACE FIVE-THIRTY;So;0;ON;;;;;N;;;;;\n1F561;CLOCK FACE SIX-THIRTY;So;0;ON;;;;;N;;;;;\n1F562;CLOCK FACE SEVEN-THIRTY;So;0;ON;;;;;N;;;;;\n1F563;CLOCK FACE EIGHT-THIRTY;So;0;ON;;;;;N;;;;;\n1F564;CLOCK FACE NINE-THIRTY;So;0;ON;;;;;N;;;;;\n1F565;CLOCK FACE TEN-THIRTY;So;0;ON;;;;;N;;;;;\n1F566;CLOCK FACE ELEVEN-THIRTY;So;0;ON;;;;;N;;;;;\n1F567;CLOCK FACE TWELVE-THIRTY;So;0;ON;;;;;N;;;;;\n1F568;RIGHT SPEAKER;So;0;ON;;;;;N;;;;;\n1F569;RIGHT SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;\n1F56A;RIGHT SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;\n1F56B;BULLHORN;So;0;ON;;;;;N;;;;;\n1F56C;BULLHORN WITH SOUND WAVES;So;0;ON;;;;;N;;;;;\n1F56D;RINGING BELL;So;0;ON;;;;;N;;;;;\n1F56E;BOOK;So;0;ON;;;;;N;;;;;\n1F56F;CANDLE;So;0;ON;;;;;N;;;;;\n1F570;MANTELPIECE CLOCK;So;0;ON;;;;;N;;;;;\n1F571;BLACK SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;\n1F572;NO PIRACY;So;0;ON;;;;;N;;;;;\n1F573;HOLE;So;0;ON;;;;;N;;;;;\n1F574;MAN IN BUSINESS SUIT LEVITATING;So;0;ON;;;;;N;;;;;\n1F575;SLEUTH OR SPY;So;0;ON;;;;;N;;;;;\n1F576;DARK SUNGLASSES;So;0;ON;;;;;N;;;;;\n1F577;SPIDER;So;0;ON;;;;;N;;;;;\n1F578;SPIDER WEB;So;0;ON;;;;;N;;;;;\n1F579;JOYSTICK;So;0;ON;;;;;N;;;;;\n1F57A;MAN DANCING;So;0;ON;;;;;N;;;;;\n1F57B;LEFT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;\n1F57C;TELEPHONE RECEIVER WITH PAGE;So;0;ON;;;;;N;;;;;\n1F57D;RIGHT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;\n1F57E;WHITE TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;\n1F57F;BLACK TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;\n1F580;TELEPHONE ON TOP OF MODEM;So;0;ON;;;;;N;;;;;\n1F581;CLAMSHELL MOBILE PHONE;So;0;ON;;;;;N;;;;;\n1F582;BACK OF ENVELOPE;So;0;ON;;;;;N;;;;;\n1F583;STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;\n1F584;ENVELOPE WITH LIGHTNING;So;0;ON;;;;;N;;;;;\n1F585;FLYING ENVELOPE;So;0;ON;;;;;N;;;;;\n1F586;PEN OVER STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;\n1F587;LINKED PAPERCLIPS;So;0;ON;;;;;N;;;;;\n1F588;BLACK PUSHPIN;So;0;ON;;;;;N;;;;;\n1F589;LOWER LEFT PENCIL;So;0;ON;;;;;N;;;;;\n1F58A;LOWER LEFT BALLPOINT PEN;So;0;ON;;;;;N;;;;;\n1F58B;LOWER LEFT FOUNTAIN PEN;So;0;ON;;;;;N;;;;;\n1F58C;LOWER LEFT PAINTBRUSH;So;0;ON;;;;;N;;;;;\n1F58D;LOWER LEFT CRAYON;So;0;ON;;;;;N;;;;;\n1F58E;LEFT WRITING HAND;So;0;ON;;;;;N;;;;;\n1F58F;TURNED OK HAND SIGN;So;0;ON;;;;;N;;;;;\n1F590;RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;\n1F591;REVERSED RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;\n1F592;REVERSED THUMBS UP SIGN;So;0;ON;;;;;N;;;;;\n1F593;REVERSED THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;\n1F594;REVERSED VICTORY HAND;So;0;ON;;;;;N;;;;;\n1F595;REVERSED HAND WITH MIDDLE FINGER EXTENDED;So;0;ON;;;;;N;;;;;\n1F596;RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS;So;0;ON;;;;;N;;;;;\n1F597;WHITE DOWN POINTING LEFT HAND INDEX;So;0;ON;;;;;N;;;;;\n1F598;SIDEWAYS WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F599;SIDEWAYS WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F59A;SIDEWAYS BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F59B;SIDEWAYS BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F59C;BLACK LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F59D;BLACK RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F59E;SIDEWAYS WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F59F;SIDEWAYS WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F5A0;SIDEWAYS BLACK UP POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F5A1;SIDEWAYS BLACK DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;\n1F5A2;BLACK UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F5A3;BLACK DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;\n1F5A4;BLACK HEART;So;0;ON;;;;;N;;;;;\n1F5A5;DESKTOP COMPUTER;So;0;ON;;;;;N;;;;;\n1F5A6;KEYBOARD AND MOUSE;So;0;ON;;;;;N;;;;;\n1F5A7;THREE NETWORKED COMPUTERS;So;0;ON;;;;;N;;;;;\n1F5A8;PRINTER;So;0;ON;;;;;N;;;;;\n1F5A9;POCKET CALCULATOR;So;0;ON;;;;;N;;;;;\n1F5AA;BLACK HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;\n1F5AB;WHITE HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;\n1F5AC;SOFT SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;\n1F5AD;TAPE CARTRIDGE;So;0;ON;;;;;N;;;;;\n1F5AE;WIRED KEYBOARD;So;0;ON;;;;;N;;;;;\n1F5AF;ONE BUTTON MOUSE;So;0;ON;;;;;N;;;;;\n1F5B0;TWO BUTTON MOUSE;So;0;ON;;;;;N;;;;;\n1F5B1;THREE BUTTON MOUSE;So;0;ON;;;;;N;;;;;\n1F5B2;TRACKBALL;So;0;ON;;;;;N;;;;;\n1F5B3;OLD PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;\n1F5B4;HARD DISK;So;0;ON;;;;;N;;;;;\n1F5B5;SCREEN;So;0;ON;;;;;N;;;;;\n1F5B6;PRINTER ICON;So;0;ON;;;;;N;;;;;\n1F5B7;FAX ICON;So;0;ON;;;;;N;;;;;\n1F5B8;OPTICAL DISC ICON;So;0;ON;;;;;N;;;;;\n1F5B9;DOCUMENT WITH TEXT;So;0;ON;;;;;N;;;;;\n1F5BA;DOCUMENT WITH TEXT AND PICTURE;So;0;ON;;;;;N;;;;;\n1F5BB;DOCUMENT WITH PICTURE;So;0;ON;;;;;N;;;;;\n1F5BC;FRAME WITH PICTURE;So;0;ON;;;;;N;;;;;\n1F5BD;FRAME WITH TILES;So;0;ON;;;;;N;;;;;\n1F5BE;FRAME WITH AN X;So;0;ON;;;;;N;;;;;\n1F5BF;BLACK FOLDER;So;0;ON;;;;;N;;;;;\n1F5C0;FOLDER;So;0;ON;;;;;N;;;;;\n1F5C1;OPEN FOLDER;So;0;ON;;;;;N;;;;;\n1F5C2;CARD INDEX DIVIDERS;So;0;ON;;;;;N;;;;;\n1F5C3;CARD FILE BOX;So;0;ON;;;;;N;;;;;\n1F5C4;FILE CABINET;So;0;ON;;;;;N;;;;;\n1F5C5;EMPTY NOTE;So;0;ON;;;;;N;;;;;\n1F5C6;EMPTY NOTE PAGE;So;0;ON;;;;;N;;;;;\n1F5C7;EMPTY NOTE PAD;So;0;ON;;;;;N;;;;;\n1F5C8;NOTE;So;0;ON;;;;;N;;;;;\n1F5C9;NOTE PAGE;So;0;ON;;;;;N;;;;;\n1F5CA;NOTE PAD;So;0;ON;;;;;N;;;;;\n1F5CB;EMPTY DOCUMENT;So;0;ON;;;;;N;;;;;\n1F5CC;EMPTY PAGE;So;0;ON;;;;;N;;;;;\n1F5CD;EMPTY PAGES;So;0;ON;;;;;N;;;;;\n1F5CE;DOCUMENT;So;0;ON;;;;;N;;;;;\n1F5CF;PAGE;So;0;ON;;;;;N;;;;;\n1F5D0;PAGES;So;0;ON;;;;;N;;;;;\n1F5D1;WASTEBASKET;So;0;ON;;;;;N;;;;;\n1F5D2;SPIRAL NOTE PAD;So;0;ON;;;;;N;;;;;\n1F5D3;SPIRAL CALENDAR PAD;So;0;ON;;;;;N;;;;;\n1F5D4;DESKTOP WINDOW;So;0;ON;;;;;N;;;;;\n1F5D5;MINIMIZE;So;0;ON;;;;;N;;;;;\n1F5D6;MAXIMIZE;So;0;ON;;;;;N;;;;;\n1F5D7;OVERLAP;So;0;ON;;;;;N;;;;;\n1F5D8;CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS;So;0;ON;;;;;N;;;;;\n1F5D9;CANCELLATION X;So;0;ON;;;;;N;;;;;\n1F5DA;INCREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;\n1F5DB;DECREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;\n1F5DC;COMPRESSION;So;0;ON;;;;;N;;;;;\n1F5DD;OLD KEY;So;0;ON;;;;;N;;;;;\n1F5DE;ROLLED-UP NEWSPAPER;So;0;ON;;;;;N;;;;;\n1F5DF;PAGE WITH CIRCLED TEXT;So;0;ON;;;;;N;;;;;\n1F5E0;STOCK CHART;So;0;ON;;;;;N;;;;;\n1F5E1;DAGGER KNIFE;So;0;ON;;;;;N;;;;;\n1F5E2;LIPS;So;0;ON;;;;;N;;;;;\n1F5E3;SPEAKING HEAD IN SILHOUETTE;So;0;ON;;;;;N;;;;;\n1F5E4;THREE RAYS ABOVE;So;0;ON;;;;;N;;;;;\n1F5E5;THREE RAYS BELOW;So;0;ON;;;;;N;;;;;\n1F5E6;THREE RAYS LEFT;So;0;ON;;;;;N;;;;;\n1F5E7;THREE RAYS RIGHT;So;0;ON;;;;;N;;;;;\n1F5E8;LEFT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;\n1F5E9;RIGHT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;\n1F5EA;TWO SPEECH BUBBLES;So;0;ON;;;;;N;;;;;\n1F5EB;THREE SPEECH BUBBLES;So;0;ON;;;;;N;;;;;\n1F5EC;LEFT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;\n1F5ED;RIGHT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;\n1F5EE;LEFT ANGER BUBBLE;So;0;ON;;;;;N;;;;;\n1F5EF;RIGHT ANGER BUBBLE;So;0;ON;;;;;N;;;;;\n1F5F0;MOOD BUBBLE;So;0;ON;;;;;N;;;;;\n1F5F1;LIGHTNING MOOD BUBBLE;So;0;ON;;;;;N;;;;;\n1F5F2;LIGHTNING MOOD;So;0;ON;;;;;N;;;;;\n1F5F3;BALLOT BOX WITH BALLOT;So;0;ON;;;;;N;;;;;\n1F5F4;BALLOT SCRIPT X;So;0;ON;;;;;N;;;;;\n1F5F5;BALLOT BOX WITH SCRIPT X;So;0;ON;;;;;N;;;;;\n1F5F6;BALLOT BOLD SCRIPT X;So;0;ON;;;;;N;;;;;\n1F5F7;BALLOT BOX WITH BOLD SCRIPT X;So;0;ON;;;;;N;;;;;\n1F5F8;LIGHT CHECK MARK;So;0;ON;;;;;N;;;;;\n1F5F9;BALLOT BOX WITH BOLD CHECK;So;0;ON;;;;;N;;;;;\n1F5FA;WORLD MAP;So;0;ON;;;;;N;;;;;\n1F5FB;MOUNT FUJI;So;0;ON;;;;;N;;;;;\n1F5FC;TOKYO TOWER;So;0;ON;;;;;N;;;;;\n1F5FD;STATUE OF LIBERTY;So;0;ON;;;;;N;;;;;\n1F5FE;SILHOUETTE OF JAPAN;So;0;ON;;;;;N;;;;;\n1F5FF;MOYAI;So;0;ON;;;;;N;;;;;\n1F600;GRINNING FACE;So;0;ON;;;;;N;;;;;\n1F601;GRINNING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;\n1F602;FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;\n1F603;SMILING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;\n1F604;SMILING FACE WITH OPEN MOUTH AND SMILING EYES;So;0;ON;;;;;N;;;;;\n1F605;SMILING FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;\n1F606;SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;\n1F607;SMILING FACE WITH HALO;So;0;ON;;;;;N;;;;;\n1F608;SMILING FACE WITH HORNS;So;0;ON;;;;;N;;;;;\n1F609;WINKING FACE;So;0;ON;;;;;N;;;;;\n1F60A;SMILING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;\n1F60B;FACE SAVOURING DELICIOUS FOOD;So;0;ON;;;;;N;;;;;\n1F60C;RELIEVED FACE;So;0;ON;;;;;N;;;;;\n1F60D;SMILING FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;\n1F60E;SMILING FACE WITH SUNGLASSES;So;0;ON;;;;;N;;;;;\n1F60F;SMIRKING FACE;So;0;ON;;;;;N;;;;;\n1F610;NEUTRAL FACE;So;0;ON;;;;;N;;;;;\n1F611;EXPRESSIONLESS FACE;So;0;ON;;;;;N;;;;;\n1F612;UNAMUSED FACE;So;0;ON;;;;;N;;;;;\n1F613;FACE WITH COLD SWEAT;So;0;ON;;;;;N;;;;;\n1F614;PENSIVE FACE;So;0;ON;;;;;N;;;;;\n1F615;CONFUSED FACE;So;0;ON;;;;;N;;;;;\n1F616;CONFOUNDED FACE;So;0;ON;;;;;N;;;;;\n1F617;KISSING FACE;So;0;ON;;;;;N;;;;;\n1F618;FACE THROWING A KISS;So;0;ON;;;;;N;;;;;\n1F619;KISSING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;\n1F61A;KISSING FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;\n1F61B;FACE WITH STUCK-OUT TONGUE;So;0;ON;;;;;N;;;;;\n1F61C;FACE WITH STUCK-OUT TONGUE AND WINKING EYE;So;0;ON;;;;;N;;;;;\n1F61D;FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;\n1F61E;DISAPPOINTED FACE;So;0;ON;;;;;N;;;;;\n1F61F;WORRIED FACE;So;0;ON;;;;;N;;;;;\n1F620;ANGRY FACE;So;0;ON;;;;;N;;;;;\n1F621;POUTING FACE;So;0;ON;;;;;N;;;;;\n1F622;CRYING FACE;So;0;ON;;;;;N;;;;;\n1F623;PERSEVERING FACE;So;0;ON;;;;;N;;;;;\n1F624;FACE WITH LOOK OF TRIUMPH;So;0;ON;;;;;N;;;;;\n1F625;DISAPPOINTED BUT RELIEVED FACE;So;0;ON;;;;;N;;;;;\n1F626;FROWNING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;\n1F627;ANGUISHED FACE;So;0;ON;;;;;N;;;;;\n1F628;FEARFUL FACE;So;0;ON;;;;;N;;;;;\n1F629;WEARY FACE;So;0;ON;;;;;N;;;;;\n1F62A;SLEEPY FACE;So;0;ON;;;;;N;;;;;\n1F62B;TIRED FACE;So;0;ON;;;;;N;;;;;\n1F62C;GRIMACING FACE;So;0;ON;;;;;N;;;;;\n1F62D;LOUDLY CRYING FACE;So;0;ON;;;;;N;;;;;\n1F62E;FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;\n1F62F;HUSHED FACE;So;0;ON;;;;;N;;;;;\n1F630;FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;\n1F631;FACE SCREAMING IN FEAR;So;0;ON;;;;;N;;;;;\n1F632;ASTONISHED FACE;So;0;ON;;;;;N;;;;;\n1F633;FLUSHED FACE;So;0;ON;;;;;N;;;;;\n1F634;SLEEPING FACE;So;0;ON;;;;;N;;;;;\n1F635;DIZZY FACE;So;0;ON;;;;;N;;;;;\n1F636;FACE WITHOUT MOUTH;So;0;ON;;;;;N;;;;;\n1F637;FACE WITH MEDICAL MASK;So;0;ON;;;;;N;;;;;\n1F638;GRINNING CAT FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;\n1F639;CAT FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;\n1F63A;SMILING CAT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;\n1F63B;SMILING CAT FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;\n1F63C;CAT FACE WITH WRY SMILE;So;0;ON;;;;;N;;;;;\n1F63D;KISSING CAT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;\n1F63E;POUTING CAT FACE;So;0;ON;;;;;N;;;;;\n1F63F;CRYING CAT FACE;So;0;ON;;;;;N;;;;;\n1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;;\n1F641;SLIGHTLY FROWNING FACE;So;0;ON;;;;;N;;;;;\n1F642;SLIGHTLY SMILING FACE;So;0;ON;;;;;N;;;;;\n1F643;UPSIDE-DOWN FACE;So;0;ON;;;;;N;;;;;\n1F644;FACE WITH ROLLING EYES;So;0;ON;;;;;N;;;;;\n1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;;\n1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;;\n1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;;\n1F648;SEE-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;\n1F649;HEAR-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;\n1F64A;SPEAK-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;\n1F64B;HAPPY PERSON RAISING ONE HAND;So;0;ON;;;;;N;;;;;\n1F64C;PERSON RAISING BOTH HANDS IN CELEBRATION;So;0;ON;;;;;N;;;;;\n1F64D;PERSON FROWNING;So;0;ON;;;;;N;;;;;\n1F64E;PERSON WITH POUTING FACE;So;0;ON;;;;;N;;;;;\n1F64F;PERSON WITH FOLDED HANDS;So;0;ON;;;;;N;;;;;\n1F650;NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F651;SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F652;NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F653;SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F654;TURNED NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F655;TURNED SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F656;TURNED NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F657;TURNED SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;\n1F658;NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F659;SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65A;NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65B;SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65C;HEAVY NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65D;HEAVY SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65E;HEAVY NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F65F;HEAVY SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;\n1F660;NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F661;SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F662;NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F663;SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F664;HEAVY NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F665;HEAVY SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F666;HEAVY NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F667;HEAVY SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;\n1F668;HOLLOW QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;\n1F669;HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;\n1F66A;SOLID QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;\n1F66B;SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;\n1F66C;LEFTWARDS ROCKET;So;0;ON;;;;;N;;;;;\n1F66D;UPWARDS ROCKET;So;0;ON;;;;;N;;;;;\n1F66E;RIGHTWARDS ROCKET;So;0;ON;;;;;N;;;;;\n1F66F;DOWNWARDS ROCKET;So;0;ON;;;;;N;;;;;\n1F670;SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;\n1F671;HEAVY SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;\n1F672;LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;\n1F673;HEAVY LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;\n1F674;HEAVY AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;\n1F675;SWASH AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;\n1F676;SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n1F677;SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n1F678;SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;\n1F679;HEAVY INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;\n1F67A;SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;\n1F67B;HEAVY SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;\n1F67C;VERY HEAVY SOLIDUS;So;0;ON;;;;;N;;;;;\n1F67D;VERY HEAVY REVERSE SOLIDUS;So;0;ON;;;;;N;;;;;\n1F67E;CHECKER BOARD;So;0;ON;;;;;N;;;;;\n1F67F;REVERSE CHECKER BOARD;So;0;ON;;;;;N;;;;;\n1F680;ROCKET;So;0;ON;;;;;N;;;;;\n1F681;HELICOPTER;So;0;ON;;;;;N;;;;;\n1F682;STEAM LOCOMOTIVE;So;0;ON;;;;;N;;;;;\n1F683;RAILWAY CAR;So;0;ON;;;;;N;;;;;\n1F684;HIGH-SPEED TRAIN;So;0;ON;;;;;N;;;;;\n1F685;HIGH-SPEED TRAIN WITH BULLET NOSE;So;0;ON;;;;;N;;;;;\n1F686;TRAIN;So;0;ON;;;;;N;;;;;\n1F687;METRO;So;0;ON;;;;;N;;;;;\n1F688;LIGHT RAIL;So;0;ON;;;;;N;;;;;\n1F689;STATION;So;0;ON;;;;;N;;;;;\n1F68A;TRAM;So;0;ON;;;;;N;;;;;\n1F68B;TRAM CAR;So;0;ON;;;;;N;;;;;\n1F68C;BUS;So;0;ON;;;;;N;;;;;\n1F68D;ONCOMING BUS;So;0;ON;;;;;N;;;;;\n1F68E;TROLLEYBUS;So;0;ON;;;;;N;;;;;\n1F68F;BUS STOP;So;0;ON;;;;;N;;;;;\n1F690;MINIBUS;So;0;ON;;;;;N;;;;;\n1F691;AMBULANCE;So;0;ON;;;;;N;;;;;\n1F692;FIRE ENGINE;So;0;ON;;;;;N;;;;;\n1F693;POLICE CAR;So;0;ON;;;;;N;;;;;\n1F694;ONCOMING POLICE CAR;So;0;ON;;;;;N;;;;;\n1F695;TAXI;So;0;ON;;;;;N;;;;;\n1F696;ONCOMING TAXI;So;0;ON;;;;;N;;;;;\n1F697;AUTOMOBILE;So;0;ON;;;;;N;;;;;\n1F698;ONCOMING AUTOMOBILE;So;0;ON;;;;;N;;;;;\n1F699;RECREATIONAL VEHICLE;So;0;ON;;;;;N;;;;;\n1F69A;DELIVERY TRUCK;So;0;ON;;;;;N;;;;;\n1F69B;ARTICULATED LORRY;So;0;ON;;;;;N;;;;;\n1F69C;TRACTOR;So;0;ON;;;;;N;;;;;\n1F69D;MONORAIL;So;0;ON;;;;;N;;;;;\n1F69E;MOUNTAIN RAILWAY;So;0;ON;;;;;N;;;;;\n1F69F;SUSPENSION RAILWAY;So;0;ON;;;;;N;;;;;\n1F6A0;MOUNTAIN CABLEWAY;So;0;ON;;;;;N;;;;;\n1F6A1;AERIAL TRAMWAY;So;0;ON;;;;;N;;;;;\n1F6A2;SHIP;So;0;ON;;;;;N;;;;;\n1F6A3;ROWBOAT;So;0;ON;;;;;N;;;;;\n1F6A4;SPEEDBOAT;So;0;ON;;;;;N;;;;;\n1F6A5;HORIZONTAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;\n1F6A6;VERTICAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;\n1F6A7;CONSTRUCTION SIGN;So;0;ON;;;;;N;;;;;\n1F6A8;POLICE CARS REVOLVING LIGHT;So;0;ON;;;;;N;;;;;\n1F6A9;TRIANGULAR FLAG ON POST;So;0;ON;;;;;N;;;;;\n1F6AA;DOOR;So;0;ON;;;;;N;;;;;\n1F6AB;NO ENTRY SIGN;So;0;ON;;;;;N;;;;;\n1F6AC;SMOKING SYMBOL;So;0;ON;;;;;N;;;;;\n1F6AD;NO SMOKING SYMBOL;So;0;ON;;;;;N;;;;;\n1F6AE;PUT LITTER IN ITS PLACE SYMBOL;So;0;ON;;;;;N;;;;;\n1F6AF;DO NOT LITTER SYMBOL;So;0;ON;;;;;N;;;;;\n1F6B0;POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;\n1F6B1;NON-POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;\n1F6B2;BICYCLE;So;0;ON;;;;;N;;;;;\n1F6B3;NO BICYCLES;So;0;ON;;;;;N;;;;;\n1F6B4;BICYCLIST;So;0;ON;;;;;N;;;;;\n1F6B5;MOUNTAIN BICYCLIST;So;0;ON;;;;;N;;;;;\n1F6B6;PEDESTRIAN;So;0;ON;;;;;N;;;;;\n1F6B7;NO PEDESTRIANS;So;0;ON;;;;;N;;;;;\n1F6B8;CHILDREN CROSSING;So;0;ON;;;;;N;;;;;\n1F6B9;MENS SYMBOL;So;0;ON;;;;;N;;;;;\n1F6BA;WOMENS SYMBOL;So;0;ON;;;;;N;;;;;\n1F6BB;RESTROOM;So;0;ON;;;;;N;;;;;\n1F6BC;BABY SYMBOL;So;0;ON;;;;;N;;;;;\n1F6BD;TOILET;So;0;ON;;;;;N;;;;;\n1F6BE;WATER CLOSET;So;0;ON;;;;;N;;;;;\n1F6BF;SHOWER;So;0;ON;;;;;N;;;;;\n1F6C0;BATH;So;0;ON;;;;;N;;;;;\n1F6C1;BATHTUB;So;0;ON;;;;;N;;;;;\n1F6C2;PASSPORT CONTROL;So;0;ON;;;;;N;;;;;\n1F6C3;CUSTOMS;So;0;ON;;;;;N;;;;;\n1F6C4;BAGGAGE CLAIM;So;0;ON;;;;;N;;;;;\n1F6C5;LEFT LUGGAGE;So;0;ON;;;;;N;;;;;\n1F6C6;TRIANGLE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;\n1F6C7;PROHIBITED SIGN;So;0;ON;;;;;N;;;;;\n1F6C8;CIRCLED INFORMATION SOURCE;So;0;ON;;;;;N;;;;;\n1F6C9;BOYS SYMBOL;So;0;ON;;;;;N;;;;;\n1F6CA;GIRLS SYMBOL;So;0;ON;;;;;N;;;;;\n1F6CB;COUCH AND LAMP;So;0;ON;;;;;N;;;;;\n1F6CC;SLEEPING ACCOMMODATION;So;0;ON;;;;;N;;;;;\n1F6CD;SHOPPING BAGS;So;0;ON;;;;;N;;;;;\n1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;;\n1F6CF;BED;So;0;ON;;;;;N;;;;;\n1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;;\n1F6D1;OCTAGONAL SIGN;So;0;ON;;;;;N;;;;;\n1F6D2;SHOPPING TROLLEY;So;0;ON;;;;;N;;;;;\n1F6D3;STUPA;So;0;ON;;;;;N;;;;;\n1F6D4;PAGODA;So;0;ON;;;;;N;;;;;\n1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;\n1F6D6;HUT;So;0;ON;;;;;N;;;;;\n1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;;\n1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;\n1F6E1;SHIELD;So;0;ON;;;;;N;;;;;\n1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;\n1F6E3;MOTORWAY;So;0;ON;;;;;N;;;;;\n1F6E4;RAILWAY TRACK;So;0;ON;;;;;N;;;;;\n1F6E5;MOTOR BOAT;So;0;ON;;;;;N;;;;;\n1F6E6;UP-POINTING MILITARY AIRPLANE;So;0;ON;;;;;N;;;;;\n1F6E7;UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;\n1F6E8;UP-POINTING SMALL AIRPLANE;So;0;ON;;;;;N;;;;;\n1F6E9;SMALL AIRPLANE;So;0;ON;;;;;N;;;;;\n1F6EA;NORTHEAST-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;\n1F6EB;AIRPLANE DEPARTURE;So;0;ON;;;;;N;;;;;\n1F6EC;AIRPLANE ARRIVING;So;0;ON;;;;;N;;;;;\n1F6F0;SATELLITE;So;0;ON;;;;;N;;;;;\n1F6F1;ONCOMING FIRE ENGINE;So;0;ON;;;;;N;;;;;\n1F6F2;DIESEL LOCOMOTIVE;So;0;ON;;;;;N;;;;;\n1F6F3;PASSENGER SHIP;So;0;ON;;;;;N;;;;;\n1F6F4;SCOOTER;So;0;ON;;;;;N;;;;;\n1F6F5;MOTOR SCOOTER;So;0;ON;;;;;N;;;;;\n1F6F6;CANOE;So;0;ON;;;;;N;;;;;\n1F6F7;SLED;So;0;ON;;;;;N;;;;;\n1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;;\n1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;;\n1F6FA;AUTO RICKSHAW;So;0;ON;;;;;N;;;;;\n1F6FB;PICKUP TRUCK;So;0;ON;;;;;N;;;;;\n1F6FC;ROLLER SKATE;So;0;ON;;;;;N;;;;;\n1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;\n1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;\n1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;\n1F703;ALCHEMICAL SYMBOL FOR EARTH;So;0;ON;;;;;N;;;;;\n1F704;ALCHEMICAL SYMBOL FOR WATER;So;0;ON;;;;;N;;;;;\n1F705;ALCHEMICAL SYMBOL FOR AQUAFORTIS;So;0;ON;;;;;N;;;;;\n1F706;ALCHEMICAL SYMBOL FOR AQUA REGIA;So;0;ON;;;;;N;;;;;\n1F707;ALCHEMICAL SYMBOL FOR AQUA REGIA-2;So;0;ON;;;;;N;;;;;\n1F708;ALCHEMICAL SYMBOL FOR AQUA VITAE;So;0;ON;;;;;N;;;;;\n1F709;ALCHEMICAL SYMBOL FOR AQUA VITAE-2;So;0;ON;;;;;N;;;;;\n1F70A;ALCHEMICAL SYMBOL FOR VINEGAR;So;0;ON;;;;;N;;;;;\n1F70B;ALCHEMICAL SYMBOL FOR VINEGAR-2;So;0;ON;;;;;N;;;;;\n1F70C;ALCHEMICAL SYMBOL FOR VINEGAR-3;So;0;ON;;;;;N;;;;;\n1F70D;ALCHEMICAL SYMBOL FOR SULFUR;So;0;ON;;;;;N;;;;;\n1F70E;ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR;So;0;ON;;;;;N;;;;;\n1F70F;ALCHEMICAL SYMBOL FOR BLACK SULFUR;So;0;ON;;;;;N;;;;;\n1F710;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE;So;0;ON;;;;;N;;;;;\n1F711;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2;So;0;ON;;;;;N;;;;;\n1F712;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3;So;0;ON;;;;;N;;;;;\n1F713;ALCHEMICAL SYMBOL FOR CINNABAR;So;0;ON;;;;;N;;;;;\n1F714;ALCHEMICAL SYMBOL FOR SALT;So;0;ON;;;;;N;;;;;\n1F715;ALCHEMICAL SYMBOL FOR NITRE;So;0;ON;;;;;N;;;;;\n1F716;ALCHEMICAL SYMBOL FOR VITRIOL;So;0;ON;;;;;N;;;;;\n1F717;ALCHEMICAL SYMBOL FOR VITRIOL-2;So;0;ON;;;;;N;;;;;\n1F718;ALCHEMICAL SYMBOL FOR ROCK SALT;So;0;ON;;;;;N;;;;;\n1F719;ALCHEMICAL SYMBOL FOR ROCK SALT-2;So;0;ON;;;;;N;;;;;\n1F71A;ALCHEMICAL SYMBOL FOR GOLD;So;0;ON;;;;;N;;;;;\n1F71B;ALCHEMICAL SYMBOL FOR SILVER;So;0;ON;;;;;N;;;;;\n1F71C;ALCHEMICAL SYMBOL FOR IRON ORE;So;0;ON;;;;;N;;;;;\n1F71D;ALCHEMICAL SYMBOL FOR IRON ORE-2;So;0;ON;;;;;N;;;;;\n1F71E;ALCHEMICAL SYMBOL FOR CROCUS OF IRON;So;0;ON;;;;;N;;;;;\n1F71F;ALCHEMICAL SYMBOL FOR REGULUS OF IRON;So;0;ON;;;;;N;;;;;\n1F720;ALCHEMICAL SYMBOL FOR COPPER ORE;So;0;ON;;;;;N;;;;;\n1F721;ALCHEMICAL SYMBOL FOR IRON-COPPER ORE;So;0;ON;;;;;N;;;;;\n1F722;ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER;So;0;ON;;;;;N;;;;;\n1F723;ALCHEMICAL SYMBOL FOR CROCUS OF COPPER;So;0;ON;;;;;N;;;;;\n1F724;ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2;So;0;ON;;;;;N;;;;;\n1F725;ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE;So;0;ON;;;;;N;;;;;\n1F726;ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE;So;0;ON;;;;;N;;;;;\n1F727;ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER;So;0;ON;;;;;N;;;;;\n1F728;ALCHEMICAL SYMBOL FOR VERDIGRIS;So;0;ON;;;;;N;;;;;\n1F729;ALCHEMICAL SYMBOL FOR TIN ORE;So;0;ON;;;;;N;;;;;\n1F72A;ALCHEMICAL SYMBOL FOR LEAD ORE;So;0;ON;;;;;N;;;;;\n1F72B;ALCHEMICAL SYMBOL FOR ANTIMONY ORE;So;0;ON;;;;;N;;;;;\n1F72C;ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY;So;0;ON;;;;;N;;;;;\n1F72D;ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY;So;0;ON;;;;;N;;;;;\n1F72E;ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY;So;0;ON;;;;;N;;;;;\n1F72F;ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY;So;0;ON;;;;;N;;;;;\n1F730;ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY;So;0;ON;;;;;N;;;;;\n1F731;ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2;So;0;ON;;;;;N;;;;;\n1F732;ALCHEMICAL SYMBOL FOR REGULUS;So;0;ON;;;;;N;;;;;\n1F733;ALCHEMICAL SYMBOL FOR REGULUS-2;So;0;ON;;;;;N;;;;;\n1F734;ALCHEMICAL SYMBOL FOR REGULUS-3;So;0;ON;;;;;N;;;;;\n1F735;ALCHEMICAL SYMBOL FOR REGULUS-4;So;0;ON;;;;;N;;;;;\n1F736;ALCHEMICAL SYMBOL FOR ALKALI;So;0;ON;;;;;N;;;;;\n1F737;ALCHEMICAL SYMBOL FOR ALKALI-2;So;0;ON;;;;;N;;;;;\n1F738;ALCHEMICAL SYMBOL FOR MARCASITE;So;0;ON;;;;;N;;;;;\n1F739;ALCHEMICAL SYMBOL FOR SAL-AMMONIAC;So;0;ON;;;;;N;;;;;\n1F73A;ALCHEMICAL SYMBOL FOR ARSENIC;So;0;ON;;;;;N;;;;;\n1F73B;ALCHEMICAL SYMBOL FOR REALGAR;So;0;ON;;;;;N;;;;;\n1F73C;ALCHEMICAL SYMBOL FOR REALGAR-2;So;0;ON;;;;;N;;;;;\n1F73D;ALCHEMICAL SYMBOL FOR AURIPIGMENT;So;0;ON;;;;;N;;;;;\n1F73E;ALCHEMICAL SYMBOL FOR BISMUTH ORE;So;0;ON;;;;;N;;;;;\n1F73F;ALCHEMICAL SYMBOL FOR TARTAR;So;0;ON;;;;;N;;;;;\n1F740;ALCHEMICAL SYMBOL FOR TARTAR-2;So;0;ON;;;;;N;;;;;\n1F741;ALCHEMICAL SYMBOL FOR QUICK LIME;So;0;ON;;;;;N;;;;;\n1F742;ALCHEMICAL SYMBOL FOR BORAX;So;0;ON;;;;;N;;;;;\n1F743;ALCHEMICAL SYMBOL FOR BORAX-2;So;0;ON;;;;;N;;;;;\n1F744;ALCHEMICAL SYMBOL FOR BORAX-3;So;0;ON;;;;;N;;;;;\n1F745;ALCHEMICAL SYMBOL FOR ALUM;So;0;ON;;;;;N;;;;;\n1F746;ALCHEMICAL SYMBOL FOR OIL;So;0;ON;;;;;N;;;;;\n1F747;ALCHEMICAL SYMBOL FOR SPIRIT;So;0;ON;;;;;N;;;;;\n1F748;ALCHEMICAL SYMBOL FOR TINCTURE;So;0;ON;;;;;N;;;;;\n1F749;ALCHEMICAL SYMBOL FOR GUM;So;0;ON;;;;;N;;;;;\n1F74A;ALCHEMICAL SYMBOL FOR WAX;So;0;ON;;;;;N;;;;;\n1F74B;ALCHEMICAL SYMBOL FOR POWDER;So;0;ON;;;;;N;;;;;\n1F74C;ALCHEMICAL SYMBOL FOR CALX;So;0;ON;;;;;N;;;;;\n1F74D;ALCHEMICAL SYMBOL FOR TUTTY;So;0;ON;;;;;N;;;;;\n1F74E;ALCHEMICAL SYMBOL FOR CAPUT MORTUUM;So;0;ON;;;;;N;;;;;\n1F74F;ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE;So;0;ON;;;;;N;;;;;\n1F750;ALCHEMICAL SYMBOL FOR CADUCEUS;So;0;ON;;;;;N;;;;;\n1F751;ALCHEMICAL SYMBOL FOR TRIDENT;So;0;ON;;;;;N;;;;;\n1F752;ALCHEMICAL SYMBOL FOR STARRED TRIDENT;So;0;ON;;;;;N;;;;;\n1F753;ALCHEMICAL SYMBOL FOR LODESTONE;So;0;ON;;;;;N;;;;;\n1F754;ALCHEMICAL SYMBOL FOR SOAP;So;0;ON;;;;;N;;;;;\n1F755;ALCHEMICAL SYMBOL FOR URINE;So;0;ON;;;;;N;;;;;\n1F756;ALCHEMICAL SYMBOL FOR HORSE DUNG;So;0;ON;;;;;N;;;;;\n1F757;ALCHEMICAL SYMBOL FOR ASHES;So;0;ON;;;;;N;;;;;\n1F758;ALCHEMICAL SYMBOL FOR POT ASHES;So;0;ON;;;;;N;;;;;\n1F759;ALCHEMICAL SYMBOL FOR BRICK;So;0;ON;;;;;N;;;;;\n1F75A;ALCHEMICAL SYMBOL FOR POWDERED BRICK;So;0;ON;;;;;N;;;;;\n1F75B;ALCHEMICAL SYMBOL FOR AMALGAM;So;0;ON;;;;;N;;;;;\n1F75C;ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM;So;0;ON;;;;;N;;;;;\n1F75D;ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2;So;0;ON;;;;;N;;;;;\n1F75E;ALCHEMICAL SYMBOL FOR SUBLIMATION;So;0;ON;;;;;N;;;;;\n1F75F;ALCHEMICAL SYMBOL FOR PRECIPITATE;So;0;ON;;;;;N;;;;;\n1F760;ALCHEMICAL SYMBOL FOR DISTILL;So;0;ON;;;;;N;;;;;\n1F761;ALCHEMICAL SYMBOL FOR DISSOLVE;So;0;ON;;;;;N;;;;;\n1F762;ALCHEMICAL SYMBOL FOR DISSOLVE-2;So;0;ON;;;;;N;;;;;\n1F763;ALCHEMICAL SYMBOL FOR PURIFY;So;0;ON;;;;;N;;;;;\n1F764;ALCHEMICAL SYMBOL FOR PUTREFACTION;So;0;ON;;;;;N;;;;;\n1F765;ALCHEMICAL SYMBOL FOR CRUCIBLE;So;0;ON;;;;;N;;;;;\n1F766;ALCHEMICAL SYMBOL FOR CRUCIBLE-2;So;0;ON;;;;;N;;;;;\n1F767;ALCHEMICAL SYMBOL FOR CRUCIBLE-3;So;0;ON;;;;;N;;;;;\n1F768;ALCHEMICAL SYMBOL FOR CRUCIBLE-4;So;0;ON;;;;;N;;;;;\n1F769;ALCHEMICAL SYMBOL FOR CRUCIBLE-5;So;0;ON;;;;;N;;;;;\n1F76A;ALCHEMICAL SYMBOL FOR ALEMBIC;So;0;ON;;;;;N;;;;;\n1F76B;ALCHEMICAL SYMBOL FOR BATH OF MARY;So;0;ON;;;;;N;;;;;\n1F76C;ALCHEMICAL SYMBOL FOR BATH OF VAPOURS;So;0;ON;;;;;N;;;;;\n1F76D;ALCHEMICAL SYMBOL FOR RETORT;So;0;ON;;;;;N;;;;;\n1F76E;ALCHEMICAL SYMBOL FOR HOUR;So;0;ON;;;;;N;;;;;\n1F76F;ALCHEMICAL SYMBOL FOR NIGHT;So;0;ON;;;;;N;;;;;\n1F770;ALCHEMICAL SYMBOL FOR DAY-NIGHT;So;0;ON;;;;;N;;;;;\n1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;;\n1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;;\n1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;;\n1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n1F783;BLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;\n1F784;BLACK SLIGHTLY SMALL CIRCLE;So;0;ON;;;;;N;;;;;\n1F785;MEDIUM BOLD WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F786;BOLD WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F787;HEAVY WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F788;VERY HEAVY WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F789;EXTREMELY HEAVY WHITE CIRCLE;So;0;ON;;;;;N;;;;;\n1F78A;WHITE CIRCLE CONTAINING BLACK SMALL CIRCLE;So;0;ON;;;;;N;;;;;\n1F78B;ROUND TARGET;So;0;ON;;;;;N;;;;;\n1F78C;BLACK TINY SQUARE;So;0;ON;;;;;N;;;;;\n1F78D;BLACK SLIGHTLY SMALL SQUARE;So;0;ON;;;;;N;;;;;\n1F78E;LIGHT WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F78F;MEDIUM WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F790;BOLD WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F791;HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F792;VERY HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F793;EXTREMELY HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;\n1F794;WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;\n1F795;WHITE SQUARE CONTAINING BLACK MEDIUM SQUARE;So;0;ON;;;;;N;;;;;\n1F796;SQUARE TARGET;So;0;ON;;;;;N;;;;;\n1F797;BLACK TINY DIAMOND;So;0;ON;;;;;N;;;;;\n1F798;BLACK VERY SMALL DIAMOND;So;0;ON;;;;;N;;;;;\n1F799;BLACK MEDIUM SMALL DIAMOND;So;0;ON;;;;;N;;;;;\n1F79A;WHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMOND;So;0;ON;;;;;N;;;;;\n1F79B;WHITE DIAMOND CONTAINING BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;\n1F79C;DIAMOND TARGET;So;0;ON;;;;;N;;;;;\n1F79D;BLACK TINY LOZENGE;So;0;ON;;;;;N;;;;;\n1F79E;BLACK VERY SMALL LOZENGE;So;0;ON;;;;;N;;;;;\n1F79F;BLACK MEDIUM SMALL LOZENGE;So;0;ON;;;;;N;;;;;\n1F7A0;WHITE LOZENGE CONTAINING BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;\n1F7A1;THIN GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A2;LIGHT GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A3;MEDIUM GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A4;BOLD GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A5;VERY BOLD GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A6;VERY HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A7;EXTREMELY HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;\n1F7A8;THIN SALTIRE;So;0;ON;;;;;N;;;;;\n1F7A9;LIGHT SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AA;MEDIUM SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AB;BOLD SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AC;HEAVY SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AD;VERY HEAVY SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AE;EXTREMELY HEAVY SALTIRE;So;0;ON;;;;;N;;;;;\n1F7AF;LIGHT FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B0;MEDIUM FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B1;BOLD FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B2;HEAVY FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B3;VERY HEAVY FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B4;EXTREMELY HEAVY FIVE SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B5;LIGHT SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B6;MEDIUM SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B7;BOLD SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B8;HEAVY SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7B9;VERY HEAVY SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BA;EXTREMELY HEAVY SIX SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BB;LIGHT EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BC;MEDIUM EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BD;BOLD EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BE;HEAVY EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7BF;VERY HEAVY EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;\n1F7C0;LIGHT THREE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C1;MEDIUM THREE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C2;THREE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C3;MEDIUM THREE POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7C4;LIGHT FOUR POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C5;MEDIUM FOUR POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C6;FOUR POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7C7;MEDIUM FOUR POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7C8;REVERSE LIGHT FOUR POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7C9;LIGHT FIVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7CA;HEAVY FIVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7CB;MEDIUM SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7CC;HEAVY SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7CD;SIX POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7CE;MEDIUM EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7CF;HEAVY EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7D0;VERY HEAVY EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7D1;HEAVY EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7D2;LIGHT TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7D3;HEAVY TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;\n1F7D4;HEAVY TWELVE POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;\n1F7D5;CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;\n1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;\n1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;\n1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;;\n1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;;\n1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;;\n1F7E3;LARGE PURPLE CIRCLE;So;0;ON;;;;;N;;;;;\n1F7E4;LARGE BROWN CIRCLE;So;0;ON;;;;;N;;;;;\n1F7E5;LARGE RED SQUARE;So;0;ON;;;;;N;;;;;\n1F7E6;LARGE BLUE SQUARE;So;0;ON;;;;;N;;;;;\n1F7E7;LARGE ORANGE SQUARE;So;0;ON;;;;;N;;;;;\n1F7E8;LARGE YELLOW SQUARE;So;0;ON;;;;;N;;;;;\n1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;;\n1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;;\n1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;;\n1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F803;DOWNWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F804;LEFTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F805;UPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F806;RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F807;DOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F808;LEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F809;UPWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F80A;RIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F80B;DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F810;LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F811;UPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F812;RIGHTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F813;DOWNWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F814;LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F815;UPWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F816;RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F817;DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F818;HEAVY LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F819;HEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81A;HEAVY RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81B;HEAVY DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81C;HEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81D;HEAVY UPWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81E;HEAVY RIGHTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F81F;HEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F820;LEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT;So;0;ON;;;;;N;;;;;\n1F821;UPWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT;So;0;ON;;;;;N;;;;;\n1F822;RIGHTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT;So;0;ON;;;;;N;;;;;\n1F823;DOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT;So;0;ON;;;;;N;;;;;\n1F824;LEFTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT;So;0;ON;;;;;N;;;;;\n1F825;UPWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT;So;0;ON;;;;;N;;;;;\n1F826;RIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT;So;0;ON;;;;;N;;;;;\n1F827;DOWNWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT;So;0;ON;;;;;N;;;;;\n1F828;LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT;So;0;ON;;;;;N;;;;;\n1F829;UPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT;So;0;ON;;;;;N;;;;;\n1F82A;RIGHTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT;So;0;ON;;;;;N;;;;;\n1F82B;DOWNWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT;So;0;ON;;;;;N;;;;;\n1F82C;LEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F82D;UPWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F82E;RIGHTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F82F;DOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F830;LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F831;UPWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F832;RIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F833;DOWNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT;So;0;ON;;;;;N;;;;;\n1F834;LEFTWARDS FINGER-POST ARROW;So;0;ON;;;;;N;;;;;\n1F835;UPWARDS FINGER-POST ARROW;So;0;ON;;;;;N;;;;;\n1F836;RIGHTWARDS FINGER-POST ARROW;So;0;ON;;;;;N;;;;;\n1F837;DOWNWARDS FINGER-POST ARROW;So;0;ON;;;;;N;;;;;\n1F838;LEFTWARDS SQUARED ARROW;So;0;ON;;;;;N;;;;;\n1F839;UPWARDS SQUARED ARROW;So;0;ON;;;;;N;;;;;\n1F83A;RIGHTWARDS SQUARED ARROW;So;0;ON;;;;;N;;;;;\n1F83B;DOWNWARDS SQUARED ARROW;So;0;ON;;;;;N;;;;;\n1F83C;LEFTWARDS COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F83D;UPWARDS COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F83E;RIGHTWARDS COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F83F;DOWNWARDS COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F840;LEFTWARDS HEAVY COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F841;UPWARDS HEAVY COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F842;RIGHTWARDS HEAVY COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F843;DOWNWARDS HEAVY COMPRESSED ARROW;So;0;ON;;;;;N;;;;;\n1F844;LEFTWARDS HEAVY ARROW;So;0;ON;;;;;N;;;;;\n1F845;UPWARDS HEAVY ARROW;So;0;ON;;;;;N;;;;;\n1F846;RIGHTWARDS HEAVY ARROW;So;0;ON;;;;;N;;;;;\n1F847;DOWNWARDS HEAVY ARROW;So;0;ON;;;;;N;;;;;\n1F850;LEFTWARDS SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F851;UPWARDS SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F852;RIGHTWARDS SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F853;DOWNWARDS SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F854;NORTH WEST SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F855;NORTH EAST SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F856;SOUTH EAST SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F857;SOUTH WEST SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F858;LEFT RIGHT SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F859;UP DOWN SANS-SERIF ARROW;So;0;ON;;;;;N;;;;;\n1F860;WIDE-HEADED LEFTWARDS LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F861;WIDE-HEADED UPWARDS LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F862;WIDE-HEADED RIGHTWARDS LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F863;WIDE-HEADED DOWNWARDS LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F864;WIDE-HEADED NORTH WEST LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F865;WIDE-HEADED NORTH EAST LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F866;WIDE-HEADED SOUTH EAST LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F867;WIDE-HEADED SOUTH WEST LIGHT BARB ARROW;So;0;ON;;;;;N;;;;;\n1F868;WIDE-HEADED LEFTWARDS BARB ARROW;So;0;ON;;;;;N;;;;;\n1F869;WIDE-HEADED UPWARDS BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86A;WIDE-HEADED RIGHTWARDS BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86B;WIDE-HEADED DOWNWARDS BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86C;WIDE-HEADED NORTH WEST BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86D;WIDE-HEADED NORTH EAST BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86E;WIDE-HEADED SOUTH EAST BARB ARROW;So;0;ON;;;;;N;;;;;\n1F86F;WIDE-HEADED SOUTH WEST BARB ARROW;So;0;ON;;;;;N;;;;;\n1F870;WIDE-HEADED LEFTWARDS MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F871;WIDE-HEADED UPWARDS MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F872;WIDE-HEADED RIGHTWARDS MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F873;WIDE-HEADED DOWNWARDS MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F874;WIDE-HEADED NORTH WEST MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F875;WIDE-HEADED NORTH EAST MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F876;WIDE-HEADED SOUTH EAST MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F877;WIDE-HEADED SOUTH WEST MEDIUM BARB ARROW;So;0;ON;;;;;N;;;;;\n1F878;WIDE-HEADED LEFTWARDS HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F879;WIDE-HEADED UPWARDS HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87A;WIDE-HEADED RIGHTWARDS HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87B;WIDE-HEADED DOWNWARDS HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87C;WIDE-HEADED NORTH WEST HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87D;WIDE-HEADED NORTH EAST HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87E;WIDE-HEADED SOUTH EAST HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F87F;WIDE-HEADED SOUTH WEST HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F880;WIDE-HEADED LEFTWARDS VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F881;WIDE-HEADED UPWARDS VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F882;WIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F883;WIDE-HEADED DOWNWARDS VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F884;WIDE-HEADED NORTH WEST VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F885;WIDE-HEADED NORTH EAST VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F886;WIDE-HEADED SOUTH EAST VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F887;WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW;So;0;ON;;;;;N;;;;;\n1F890;LEFTWARDS TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F891;UPWARDS TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F892;RIGHTWARDS TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F893;DOWNWARDS TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F894;LEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F895;UPWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F896;RIGHTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F897;DOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;\n1F898;LEFTWARDS ARROW WITH NOTCHED TAIL;So;0;ON;;;;;N;;;;;\n1F899;UPWARDS ARROW WITH NOTCHED TAIL;So;0;ON;;;;;N;;;;;\n1F89A;RIGHTWARDS ARROW WITH NOTCHED TAIL;So;0;ON;;;;;N;;;;;\n1F89B;DOWNWARDS ARROW WITH NOTCHED TAIL;So;0;ON;;;;;N;;;;;\n1F89C;HEAVY ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;;\n1F89D;HEAVY ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;\n1F89E;HEAVY ARROW SHAFT WIDTH ONE HALF;So;0;ON;;;;;N;;;;;\n1F89F;HEAVY ARROW SHAFT WIDTH ONE THIRD;So;0;ON;;;;;N;;;;;\n1F8A0;LEFTWARDS BOTTOM-SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A1;RIGHTWARDS BOTTOM SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A2;LEFTWARDS TOP SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A3;RIGHTWARDS TOP SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A4;LEFTWARDS LEFT-SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A5;RIGHTWARDS RIGHT-SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A6;LEFTWARDS RIGHT-SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A7;RIGHTWARDS LEFT-SHADED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A8;LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8A9;RIGHTWARDS BACK-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8AA;LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8AB;RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;;\n1F8AC;WHITE ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;;\n1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;\n1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;;\n1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;;\n1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;\n1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;;\n1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;;\n1F903;LEFT HALF CIRCLE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;\n1F904;LEFT HALF CIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;\n1F905;LEFT HALF CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;\n1F906;LEFT HALF CIRCLE WITH DOT;So;0;ON;;;;;N;;;;;\n1F907;LEFT HALF CIRCLE;So;0;ON;;;;;N;;;;;\n1F908;DOWNWARD FACING HOOK;So;0;ON;;;;;N;;;;;\n1F909;DOWNWARD FACING NOTCHED HOOK;So;0;ON;;;;;N;;;;;\n1F90A;DOWNWARD FACING HOOK WITH DOT;So;0;ON;;;;;N;;;;;\n1F90B;DOWNWARD FACING NOTCHED HOOK WITH DOT;So;0;ON;;;;;N;;;;;\n1F90C;PINCHED FINGERS;So;0;ON;;;;;N;;;;;\n1F90D;WHITE HEART;So;0;ON;;;;;N;;;;;\n1F90E;BROWN HEART;So;0;ON;;;;;N;;;;;\n1F90F;PINCHING HAND;So;0;ON;;;;;N;;;;;\n1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;;\n1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;;\n1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;;\n1F913;NERD FACE;So;0;ON;;;;;N;;;;;\n1F914;THINKING FACE;So;0;ON;;;;;N;;;;;\n1F915;FACE WITH HEAD-BANDAGE;So;0;ON;;;;;N;;;;;\n1F916;ROBOT FACE;So;0;ON;;;;;N;;;;;\n1F917;HUGGING FACE;So;0;ON;;;;;N;;;;;\n1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;;\n1F919;CALL ME HAND;So;0;ON;;;;;N;;;;;\n1F91A;RAISED BACK OF HAND;So;0;ON;;;;;N;;;;;\n1F91B;LEFT-FACING FIST;So;0;ON;;;;;N;;;;;\n1F91C;RIGHT-FACING FIST;So;0;ON;;;;;N;;;;;\n1F91D;HANDSHAKE;So;0;ON;;;;;N;;;;;\n1F91E;HAND WITH INDEX AND MIDDLE FINGERS CROSSED;So;0;ON;;;;;N;;;;;\n1F91F;I LOVE YOU HAND SIGN;So;0;ON;;;;;N;;;;;\n1F920;FACE WITH COWBOY HAT;So;0;ON;;;;;N;;;;;\n1F921;CLOWN FACE;So;0;ON;;;;;N;;;;;\n1F922;NAUSEATED FACE;So;0;ON;;;;;N;;;;;\n1F923;ROLLING ON THE FLOOR LAUGHING;So;0;ON;;;;;N;;;;;\n1F924;DROOLING FACE;So;0;ON;;;;;N;;;;;\n1F925;LYING FACE;So;0;ON;;;;;N;;;;;\n1F926;FACE PALM;So;0;ON;;;;;N;;;;;\n1F927;SNEEZING FACE;So;0;ON;;;;;N;;;;;\n1F928;FACE WITH ONE EYEBROW RAISED;So;0;ON;;;;;N;;;;;\n1F929;GRINNING FACE WITH STAR EYES;So;0;ON;;;;;N;;;;;\n1F92A;GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE;So;0;ON;;;;;N;;;;;\n1F92B;FACE WITH FINGER COVERING CLOSED LIPS;So;0;ON;;;;;N;;;;;\n1F92C;SERIOUS FACE WITH SYMBOLS COVERING MOUTH;So;0;ON;;;;;N;;;;;\n1F92D;SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH;So;0;ON;;;;;N;;;;;\n1F92E;FACE WITH OPEN MOUTH VOMITING;So;0;ON;;;;;N;;;;;\n1F92F;SHOCKED FACE WITH EXPLODING HEAD;So;0;ON;;;;;N;;;;;\n1F930;PREGNANT WOMAN;So;0;ON;;;;;N;;;;;\n1F931;BREAST-FEEDING;So;0;ON;;;;;N;;;;;\n1F932;PALMS UP TOGETHER;So;0;ON;;;;;N;;;;;\n1F933;SELFIE;So;0;ON;;;;;N;;;;;\n1F934;PRINCE;So;0;ON;;;;;N;;;;;\n1F935;MAN IN TUXEDO;So;0;ON;;;;;N;;;;;\n1F936;MOTHER CHRISTMAS;So;0;ON;;;;;N;;;;;\n1F937;SHRUG;So;0;ON;;;;;N;;;;;\n1F938;PERSON DOING CARTWHEEL;So;0;ON;;;;;N;;;;;\n1F939;JUGGLING;So;0;ON;;;;;N;;;;;\n1F93A;FENCER;So;0;ON;;;;;N;;;;;\n1F93B;MODERN PENTATHLON;So;0;ON;;;;;N;;;;;\n1F93C;WRESTLERS;So;0;ON;;;;;N;;;;;\n1F93D;WATER POLO;So;0;ON;;;;;N;;;;;\n1F93E;HANDBALL;So;0;ON;;;;;N;;;;;\n1F93F;DIVING MASK;So;0;ON;;;;;N;;;;;\n1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;;\n1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;;\n1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;;\n1F943;TUMBLER GLASS;So;0;ON;;;;;N;;;;;\n1F944;SPOON;So;0;ON;;;;;N;;;;;\n1F945;GOAL NET;So;0;ON;;;;;N;;;;;\n1F946;RIFLE;So;0;ON;;;;;N;;;;;\n1F947;FIRST PLACE MEDAL;So;0;ON;;;;;N;;;;;\n1F948;SECOND PLACE MEDAL;So;0;ON;;;;;N;;;;;\n1F949;THIRD PLACE MEDAL;So;0;ON;;;;;N;;;;;\n1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;\n1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;\n1F94C;CURLING STONE;So;0;ON;;;;;N;;;;;\n1F94D;LACROSSE STICK AND BALL;So;0;ON;;;;;N;;;;;\n1F94E;SOFTBALL;So;0;ON;;;;;N;;;;;\n1F94F;FLYING DISC;So;0;ON;;;;;N;;;;;\n1F950;CROISSANT;So;0;ON;;;;;N;;;;;\n1F951;AVOCADO;So;0;ON;;;;;N;;;;;\n1F952;CUCUMBER;So;0;ON;;;;;N;;;;;\n1F953;BACON;So;0;ON;;;;;N;;;;;\n1F954;POTATO;So;0;ON;;;;;N;;;;;\n1F955;CARROT;So;0;ON;;;;;N;;;;;\n1F956;BAGUETTE BREAD;So;0;ON;;;;;N;;;;;\n1F957;GREEN SALAD;So;0;ON;;;;;N;;;;;\n1F958;SHALLOW PAN OF FOOD;So;0;ON;;;;;N;;;;;\n1F959;STUFFED FLATBREAD;So;0;ON;;;;;N;;;;;\n1F95A;EGG;So;0;ON;;;;;N;;;;;\n1F95B;GLASS OF MILK;So;0;ON;;;;;N;;;;;\n1F95C;PEANUTS;So;0;ON;;;;;N;;;;;\n1F95D;KIWIFRUIT;So;0;ON;;;;;N;;;;;\n1F95E;PANCAKES;So;0;ON;;;;;N;;;;;\n1F95F;DUMPLING;So;0;ON;;;;;N;;;;;\n1F960;FORTUNE COOKIE;So;0;ON;;;;;N;;;;;\n1F961;TAKEOUT BOX;So;0;ON;;;;;N;;;;;\n1F962;CHOPSTICKS;So;0;ON;;;;;N;;;;;\n1F963;BOWL WITH SPOON;So;0;ON;;;;;N;;;;;\n1F964;CUP WITH STRAW;So;0;ON;;;;;N;;;;;\n1F965;COCONUT;So;0;ON;;;;;N;;;;;\n1F966;BROCCOLI;So;0;ON;;;;;N;;;;;\n1F967;PIE;So;0;ON;;;;;N;;;;;\n1F968;PRETZEL;So;0;ON;;;;;N;;;;;\n1F969;CUT OF MEAT;So;0;ON;;;;;N;;;;;\n1F96A;SANDWICH;So;0;ON;;;;;N;;;;;\n1F96B;CANNED FOOD;So;0;ON;;;;;N;;;;;\n1F96C;LEAFY GREEN;So;0;ON;;;;;N;;;;;\n1F96D;MANGO;So;0;ON;;;;;N;;;;;\n1F96E;MOON CAKE;So;0;ON;;;;;N;;;;;\n1F96F;BAGEL;So;0;ON;;;;;N;;;;;\n1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;;\n1F971;YAWNING FACE;So;0;ON;;;;;N;;;;;\n1F972;SMILING FACE WITH TEAR;So;0;ON;;;;;N;;;;;\n1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;;\n1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;;\n1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;;\n1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;\n1F977;NINJA;So;0;ON;;;;;N;;;;;\n1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;;\n1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;\n1F97B;SARI;So;0;ON;;;;;N;;;;;\n1F97C;LAB COAT;So;0;ON;;;;;N;;;;;\n1F97D;GOGGLES;So;0;ON;;;;;N;;;;;\n1F97E;HIKING BOOT;So;0;ON;;;;;N;;;;;\n1F97F;FLAT SHOE;So;0;ON;;;;;N;;;;;\n1F980;CRAB;So;0;ON;;;;;N;;;;;\n1F981;LION FACE;So;0;ON;;;;;N;;;;;\n1F982;SCORPION;So;0;ON;;;;;N;;;;;\n1F983;TURKEY;So;0;ON;;;;;N;;;;;\n1F984;UNICORN FACE;So;0;ON;;;;;N;;;;;\n1F985;EAGLE;So;0;ON;;;;;N;;;;;\n1F986;DUCK;So;0;ON;;;;;N;;;;;\n1F987;BAT;So;0;ON;;;;;N;;;;;\n1F988;SHARK;So;0;ON;;;;;N;;;;;\n1F989;OWL;So;0;ON;;;;;N;;;;;\n1F98A;FOX FACE;So;0;ON;;;;;N;;;;;\n1F98B;BUTTERFLY;So;0;ON;;;;;N;;;;;\n1F98C;DEER;So;0;ON;;;;;N;;;;;\n1F98D;GORILLA;So;0;ON;;;;;N;;;;;\n1F98E;LIZARD;So;0;ON;;;;;N;;;;;\n1F98F;RHINOCEROS;So;0;ON;;;;;N;;;;;\n1F990;SHRIMP;So;0;ON;;;;;N;;;;;\n1F991;SQUID;So;0;ON;;;;;N;;;;;\n1F992;GIRAFFE FACE;So;0;ON;;;;;N;;;;;\n1F993;ZEBRA FACE;So;0;ON;;;;;N;;;;;\n1F994;HEDGEHOG;So;0;ON;;;;;N;;;;;\n1F995;SAUROPOD;So;0;ON;;;;;N;;;;;\n1F996;T-REX;So;0;ON;;;;;N;;;;;\n1F997;CRICKET;So;0;ON;;;;;N;;;;;\n1F998;KANGAROO;So;0;ON;;;;;N;;;;;\n1F999;LLAMA;So;0;ON;;;;;N;;;;;\n1F99A;PEACOCK;So;0;ON;;;;;N;;;;;\n1F99B;HIPPOPOTAMUS;So;0;ON;;;;;N;;;;;\n1F99C;PARROT;So;0;ON;;;;;N;;;;;\n1F99D;RACCOON;So;0;ON;;;;;N;;;;;\n1F99E;LOBSTER;So;0;ON;;;;;N;;;;;\n1F99F;MOSQUITO;So;0;ON;;;;;N;;;;;\n1F9A0;MICROBE;So;0;ON;;;;;N;;;;;\n1F9A1;BADGER;So;0;ON;;;;;N;;;;;\n1F9A2;SWAN;So;0;ON;;;;;N;;;;;\n1F9A3;MAMMOTH;So;0;ON;;;;;N;;;;;\n1F9A4;DODO;So;0;ON;;;;;N;;;;;\n1F9A5;SLOTH;So;0;ON;;;;;N;;;;;\n1F9A6;OTTER;So;0;ON;;;;;N;;;;;\n1F9A7;ORANGUTAN;So;0;ON;;;;;N;;;;;\n1F9A8;SKUNK;So;0;ON;;;;;N;;;;;\n1F9A9;FLAMINGO;So;0;ON;;;;;N;;;;;\n1F9AA;OYSTER;So;0;ON;;;;;N;;;;;\n1F9AB;BEAVER;So;0;ON;;;;;N;;;;;\n1F9AC;BISON;So;0;ON;;;;;N;;;;;\n1F9AD;SEAL;So;0;ON;;;;;N;;;;;\n1F9AE;GUIDE DOG;So;0;ON;;;;;N;;;;;\n1F9AF;PROBING CANE;So;0;ON;;;;;N;;;;;\n1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;;\n1F9B1;EMOJI COMPONENT CURLY HAIR;So;0;ON;;;;;N;;;;;\n1F9B2;EMOJI COMPONENT BALD;So;0;ON;;;;;N;;;;;\n1F9B3;EMOJI COMPONENT WHITE HAIR;So;0;ON;;;;;N;;;;;\n1F9B4;BONE;So;0;ON;;;;;N;;;;;\n1F9B5;LEG;So;0;ON;;;;;N;;;;;\n1F9B6;FOOT;So;0;ON;;;;;N;;;;;\n1F9B7;TOOTH;So;0;ON;;;;;N;;;;;\n1F9B8;SUPERHERO;So;0;ON;;;;;N;;;;;\n1F9B9;SUPERVILLAIN;So;0;ON;;;;;N;;;;;\n1F9BA;SAFETY VEST;So;0;ON;;;;;N;;;;;\n1F9BB;EAR WITH HEARING AID;So;0;ON;;;;;N;;;;;\n1F9BC;MOTORIZED WHEELCHAIR;So;0;ON;;;;;N;;;;;\n1F9BD;MANUAL WHEELCHAIR;So;0;ON;;;;;N;;;;;\n1F9BE;MECHANICAL ARM;So;0;ON;;;;;N;;;;;\n1F9BF;MECHANICAL LEG;So;0;ON;;;;;N;;;;;\n1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;\n1F9C1;CUPCAKE;So;0;ON;;;;;N;;;;;\n1F9C2;SALT SHAKER;So;0;ON;;;;;N;;;;;\n1F9C3;BEVERAGE BOX;So;0;ON;;;;;N;;;;;\n1F9C4;GARLIC;So;0;ON;;;;;N;;;;;\n1F9C5;ONION;So;0;ON;;;;;N;;;;;\n1F9C6;FALAFEL;So;0;ON;;;;;N;;;;;\n1F9C7;WAFFLE;So;0;ON;;;;;N;;;;;\n1F9C8;BUTTER;So;0;ON;;;;;N;;;;;\n1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;;\n1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;;\n1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;;\n1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;;\n1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;;\n1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;;\n1F9D0;FACE WITH MONOCLE;So;0;ON;;;;;N;;;;;\n1F9D1;ADULT;So;0;ON;;;;;N;;;;;\n1F9D2;CHILD;So;0;ON;;;;;N;;;;;\n1F9D3;OLDER ADULT;So;0;ON;;;;;N;;;;;\n1F9D4;BEARDED PERSON;So;0;ON;;;;;N;;;;;\n1F9D5;PERSON WITH HEADSCARF;So;0;ON;;;;;N;;;;;\n1F9D6;PERSON IN STEAMY ROOM;So;0;ON;;;;;N;;;;;\n1F9D7;PERSON CLIMBING;So;0;ON;;;;;N;;;;;\n1F9D8;PERSON IN LOTUS POSITION;So;0;ON;;;;;N;;;;;\n1F9D9;MAGE;So;0;ON;;;;;N;;;;;\n1F9DA;FAIRY;So;0;ON;;;;;N;;;;;\n1F9DB;VAMPIRE;So;0;ON;;;;;N;;;;;\n1F9DC;MERPERSON;So;0;ON;;;;;N;;;;;\n1F9DD;ELF;So;0;ON;;;;;N;;;;;\n1F9DE;GENIE;So;0;ON;;;;;N;;;;;\n1F9DF;ZOMBIE;So;0;ON;;;;;N;;;;;\n1F9E0;BRAIN;So;0;ON;;;;;N;;;;;\n1F9E1;ORANGE HEART;So;0;ON;;;;;N;;;;;\n1F9E2;BILLED CAP;So;0;ON;;;;;N;;;;;\n1F9E3;SCARF;So;0;ON;;;;;N;;;;;\n1F9E4;GLOVES;So;0;ON;;;;;N;;;;;\n1F9E5;COAT;So;0;ON;;;;;N;;;;;\n1F9E6;SOCKS;So;0;ON;;;;;N;;;;;\n1F9E7;RED GIFT ENVELOPE;So;0;ON;;;;;N;;;;;\n1F9E8;FIRECRACKER;So;0;ON;;;;;N;;;;;\n1F9E9;JIGSAW PUZZLE PIECE;So;0;ON;;;;;N;;;;;\n1F9EA;TEST TUBE;So;0;ON;;;;;N;;;;;\n1F9EB;PETRI DISH;So;0;ON;;;;;N;;;;;\n1F9EC;DNA DOUBLE HELIX;So;0;ON;;;;;N;;;;;\n1F9ED;COMPASS;So;0;ON;;;;;N;;;;;\n1F9EE;ABACUS;So;0;ON;;;;;N;;;;;\n1F9EF;FIRE EXTINGUISHER;So;0;ON;;;;;N;;;;;\n1F9F0;TOOLBOX;So;0;ON;;;;;N;;;;;\n1F9F1;BRICK;So;0;ON;;;;;N;;;;;\n1F9F2;MAGNET;So;0;ON;;;;;N;;;;;\n1F9F3;LUGGAGE;So;0;ON;;;;;N;;;;;\n1F9F4;LOTION BOTTLE;So;0;ON;;;;;N;;;;;\n1F9F5;SPOOL OF THREAD;So;0;ON;;;;;N;;;;;\n1F9F6;BALL OF YARN;So;0;ON;;;;;N;;;;;\n1F9F7;SAFETY PIN;So;0;ON;;;;;N;;;;;\n1F9F8;TEDDY BEAR;So;0;ON;;;;;N;;;;;\n1F9F9;BROOM;So;0;ON;;;;;N;;;;;\n1F9FA;BASKET;So;0;ON;;;;;N;;;;;\n1F9FB;ROLL OF PAPER;So;0;ON;;;;;N;;;;;\n1F9FC;BAR OF SOAP;So;0;ON;;;;;N;;;;;\n1F9FD;SPONGE;So;0;ON;;;;;N;;;;;\n1F9FE;RECEIPT;So;0;ON;;;;;N;;;;;\n1F9FF;NAZAR AMULET;So;0;ON;;;;;N;;;;;\n1FA00;NEUTRAL CHESS KING;So;0;ON;;;;;N;;;;;\n1FA01;NEUTRAL CHESS QUEEN;So;0;ON;;;;;N;;;;;\n1FA02;NEUTRAL CHESS ROOK;So;0;ON;;;;;N;;;;;\n1FA03;NEUTRAL CHESS BISHOP;So;0;ON;;;;;N;;;;;\n1FA04;NEUTRAL CHESS KNIGHT;So;0;ON;;;;;N;;;;;\n1FA05;NEUTRAL CHESS PAWN;So;0;ON;;;;;N;;;;;\n1FA06;WHITE CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA07;BLACK CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA08;NEUTRAL CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA09;WHITE CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0A;WHITE CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0B;WHITE CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0C;WHITE CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0D;WHITE CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0E;WHITE CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA0F;BLACK CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA10;BLACK CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA11;BLACK CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA12;BLACK CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA13;BLACK CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA14;BLACK CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA15;NEUTRAL CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA16;NEUTRAL CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA17;NEUTRAL CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA18;NEUTRAL CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA19;NEUTRAL CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA1A;NEUTRAL CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA1B;WHITE CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA1C;BLACK CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA1D;NEUTRAL CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA1E;WHITE CHESS TURNED KING;So;0;ON;;;;;N;;;;;\n1FA1F;WHITE CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;\n1FA20;WHITE CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;\n1FA21;WHITE CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;\n1FA22;WHITE CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;\n1FA23;WHITE CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;\n1FA24;BLACK CHESS TURNED KING;So;0;ON;;;;;N;;;;;\n1FA25;BLACK CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;\n1FA26;BLACK CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;\n1FA27;BLACK CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;\n1FA28;BLACK CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;\n1FA29;BLACK CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;\n1FA2A;NEUTRAL CHESS TURNED KING;So;0;ON;;;;;N;;;;;\n1FA2B;NEUTRAL CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;\n1FA2C;NEUTRAL CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;\n1FA2D;NEUTRAL CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;\n1FA2E;NEUTRAL CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;\n1FA2F;NEUTRAL CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;\n1FA30;WHITE CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA31;BLACK CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA32;NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;\n1FA33;WHITE CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA34;WHITE CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA35;WHITE CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA36;WHITE CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA37;WHITE CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA38;WHITE CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA39;BLACK CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3A;BLACK CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3B;BLACK CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3C;BLACK CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3D;BLACK CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3E;BLACK CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA3F;NEUTRAL CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA40;NEUTRAL CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA41;NEUTRAL CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA42;NEUTRAL CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA43;NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA44;NEUTRAL CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;\n1FA45;WHITE CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;\n1FA46;BLACK CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;\n1FA47;NEUTRAL CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;\n1FA48;WHITE CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;\n1FA49;BLACK CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;\n1FA4A;NEUTRAL CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;\n1FA4B;WHITE CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA4C;BLACK CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA4D;NEUTRAL CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;\n1FA4E;WHITE CHESS KNIGHT-QUEEN;So;0;ON;;;;;N;;;;;\n1FA4F;WHITE CHESS KNIGHT-ROOK;So;0;ON;;;;;N;;;;;\n1FA50;WHITE CHESS KNIGHT-BISHOP;So;0;ON;;;;;N;;;;;\n1FA51;BLACK CHESS KNIGHT-QUEEN;So;0;ON;;;;;N;;;;;\n1FA52;BLACK CHESS KNIGHT-ROOK;So;0;ON;;;;;N;;;;;\n1FA53;BLACK CHESS KNIGHT-BISHOP;So;0;ON;;;;;N;;;;;\n1FA60;XIANGQI RED GENERAL;So;0;ON;;;;;N;;;;;\n1FA61;XIANGQI RED MANDARIN;So;0;ON;;;;;N;;;;;\n1FA62;XIANGQI RED ELEPHANT;So;0;ON;;;;;N;;;;;\n1FA63;XIANGQI RED HORSE;So;0;ON;;;;;N;;;;;\n1FA64;XIANGQI RED CHARIOT;So;0;ON;;;;;N;;;;;\n1FA65;XIANGQI RED CANNON;So;0;ON;;;;;N;;;;;\n1FA66;XIANGQI RED SOLDIER;So;0;ON;;;;;N;;;;;\n1FA67;XIANGQI BLACK GENERAL;So;0;ON;;;;;N;;;;;\n1FA68;XIANGQI BLACK MANDARIN;So;0;ON;;;;;N;;;;;\n1FA69;XIANGQI BLACK ELEPHANT;So;0;ON;;;;;N;;;;;\n1FA6A;XIANGQI BLACK HORSE;So;0;ON;;;;;N;;;;;\n1FA6B;XIANGQI BLACK CHARIOT;So;0;ON;;;;;N;;;;;\n1FA6C;XIANGQI BLACK CANNON;So;0;ON;;;;;N;;;;;\n1FA6D;XIANGQI BLACK SOLDIER;So;0;ON;;;;;N;;;;;\n1FA70;BALLET SHOES;So;0;ON;;;;;N;;;;;\n1FA71;ONE-PIECE SWIMSUIT;So;0;ON;;;;;N;;;;;\n1FA72;BRIEFS;So;0;ON;;;;;N;;;;;\n1FA73;SHORTS;So;0;ON;;;;;N;;;;;\n1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;;\n1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;\n1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;\n1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;\n1FA80;YO-YO;So;0;ON;;;;;N;;;;;\n1FA81;KITE;So;0;ON;;;;;N;;;;;\n1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;\n1FA83;BOOMERANG;So;0;ON;;;;;N;;;;;\n1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;;\n1FA85;PINATA;So;0;ON;;;;;N;;;;;\n1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;\n1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;\n1FA91;CHAIR;So;0;ON;;;;;N;;;;;\n1FA92;RAZOR;So;0;ON;;;;;N;;;;;\n1FA93;AXE;So;0;ON;;;;;N;;;;;\n1FA94;DIYA LAMP;So;0;ON;;;;;N;;;;;\n1FA95;BANJO;So;0;ON;;;;;N;;;;;\n1FA96;MILITARY HELMET;So;0;ON;;;;;N;;;;;\n1FA97;ACCORDION;So;0;ON;;;;;N;;;;;\n1FA98;LONG DRUM;So;0;ON;;;;;N;;;;;\n1FA99;COIN;So;0;ON;;;;;N;;;;;\n1FA9A;CARPENTRY SAW;So;0;ON;;;;;N;;;;;\n1FA9B;SCREWDRIVER;So;0;ON;;;;;N;;;;;\n1FA9C;LADDER;So;0;ON;;;;;N;;;;;\n1FA9D;HOOK;So;0;ON;;;;;N;;;;;\n1FA9E;MIRROR;So;0;ON;;;;;N;;;;;\n1FA9F;WINDOW;So;0;ON;;;;;N;;;;;\n1FAA0;PLUNGER;So;0;ON;;;;;N;;;;;\n1FAA1;SEWING NEEDLE;So;0;ON;;;;;N;;;;;\n1FAA2;KNOT;So;0;ON;;;;;N;;;;;\n1FAA3;BUCKET;So;0;ON;;;;;N;;;;;\n1FAA4;MOUSE TRAP;So;0;ON;;;;;N;;;;;\n1FAA5;TOOTHBRUSH;So;0;ON;;;;;N;;;;;\n1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;;\n1FAA7;PLACARD;So;0;ON;;;;;N;;;;;\n1FAA8;ROCK;So;0;ON;;;;;N;;;;;\n1FAB0;FLY;So;0;ON;;;;;N;;;;;\n1FAB1;WORM;So;0;ON;;;;;N;;;;;\n1FAB2;BEETLE;So;0;ON;;;;;N;;;;;\n1FAB3;COCKROACH;So;0;ON;;;;;N;;;;;\n1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;;\n1FAB5;WOOD;So;0;ON;;;;;N;;;;;\n1FAB6;FEATHER;So;0;ON;;;;;N;;;;;\n1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;\n1FAC1;LUNGS;So;0;ON;;;;;N;;;;;\n1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;;\n1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;\n1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;;\n1FAD2;OLIVE;So;0;ON;;;;;N;;;;;\n1FAD3;FLATBREAD;So;0;ON;;;;;N;;;;;\n1FAD4;TAMALE;So;0;ON;;;;;N;;;;;\n1FAD5;FONDUE;So;0;ON;;;;;N;;;;;\n1FAD6;TEAPOT;So;0;ON;;;;;N;;;;;\n1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;\n1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;\n1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;\n1FB03;BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;;\n1FB04;BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;;\n1FB05;BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;;\n1FB06;BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;;\n1FB07;BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;;\n1FB08;BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;;\n1FB09;BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;;\n1FB0A;BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;;\n1FB0B;BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;;\n1FB0C;BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;;\n1FB0D;BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;;\n1FB0E;BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;;\n1FB0F;BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;;\n1FB10;BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;;\n1FB11;BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;;\n1FB12;BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;;\n1FB13;BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;;\n1FB14;BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;;\n1FB15;BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;;\n1FB16;BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;;\n1FB17;BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;;\n1FB18;BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;;\n1FB19;BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;;\n1FB1A;BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;;\n1FB1B;BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;;\n1FB1C;BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;;\n1FB1D;BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;;\n1FB1E;BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;;\n1FB1F;BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;;\n1FB20;BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;;\n1FB21;BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;;\n1FB22;BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;;\n1FB23;BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;;\n1FB24;BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;;\n1FB25;BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;;\n1FB26;BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;;\n1FB27;BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;;\n1FB28;BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;;\n1FB29;BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;;\n1FB2A;BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;;\n1FB2B;BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;;\n1FB2C;BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;;\n1FB2D;BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;;\n1FB2E;BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;;\n1FB2F;BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;;\n1FB30;BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;;\n1FB31;BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;;\n1FB32;BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;;\n1FB33;BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;;\n1FB34;BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;;\n1FB35;BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;;\n1FB36;BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;;\n1FB37;BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;;\n1FB38;BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;;\n1FB39;BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;;\n1FB3A;BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;;\n1FB3B;BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;;\n1FB3C;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB3D;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB3E;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB3F;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB40;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB41;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB42;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB43;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB44;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB45;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB46;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB47;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB48;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB49;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB4A;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB4B;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB4C;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB4D;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB4E;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB4F;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB50;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB51;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB52;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB53;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB54;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB55;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB56;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FB57;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB58;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB59;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB5A;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB5B;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;\n1FB5C;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB5D;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB5E;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB5F;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB60;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB61;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;\n1FB62;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB63;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB64;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB65;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB66;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;\n1FB67;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FB68;UPPER AND RIGHT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB69;LEFT AND LOWER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB6A;UPPER AND LEFT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB6B;LEFT AND UPPER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB6C;LEFT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB6D;UPPER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB6E;RIGHT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB6F;LOWER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB70;VERTICAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;;\n1FB71;VERTICAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;;\n1FB72;VERTICAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;;\n1FB73;VERTICAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;;\n1FB74;VERTICAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;;\n1FB75;VERTICAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;;\n1FB76;HORIZONTAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;;\n1FB77;HORIZONTAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;;\n1FB78;HORIZONTAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;;\n1FB79;HORIZONTAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;;\n1FB7A;HORIZONTAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;;\n1FB7B;HORIZONTAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;;\n1FB7C;LEFT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FB7D;LEFT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FB7E;RIGHT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FB7F;RIGHT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FB80;UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FB81;HORIZONTAL ONE EIGHTH BLOCK-1358;So;0;ON;;;;;N;;;;;\n1FB82;UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB83;UPPER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB84;UPPER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB85;UPPER THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB86;UPPER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB87;RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;\n1FB88;RIGHT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB89;RIGHT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB8A;RIGHT THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;\n1FB8B;RIGHT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;\n1FB8C;LEFT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB8D;RIGHT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB8E;UPPER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB8F;LOWER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB90;INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB91;UPPER HALF BLOCK AND LOWER HALF INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB92;UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;\n1FB94;LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;\n1FB95;CHECKER BOARD FILL;So;0;ON;;;;;N;;;;;\n1FB96;INVERSE CHECKER BOARD FILL;So;0;ON;;;;;N;;;;;\n1FB97;HEAVY HORIZONTAL FILL;So;0;ON;;;;;N;;;;;\n1FB98;UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;\n1FB99;UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;\n1FB9A;UPPER AND LOWER TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;;\n1FB9B;LEFT AND RIGHT TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;;\n1FB9C;UPPER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB9D;UPPER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB9E;LOWER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FB9F;LOWER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;\n1FBA0;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;\n1FBA1;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FBA2;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBA3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBA4;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBA5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBA6;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FBA7;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FBA8;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT AND MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBA9;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBAA;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;\n1FBAB;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;\n1FBAC;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBAD;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBAE;BOX DRAWINGS LIGHT DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;;\n1FBAF;BOX DRAWINGS LIGHT HORIZONTAL WITH VERTICAL STROKE;So;0;ON;;;;;N;;;;;\n1FBB0;ARROWHEAD-SHAPED POINTER;So;0;ON;;;;;N;;;;;\n1FBB1;INVERSE CHECK MARK;So;0;ON;;;;;N;;;;;\n1FBB2;LEFT HALF RUNNING MAN;So;0;ON;;;;;N;;;;;\n1FBB3;RIGHT HALF RUNNING MAN;So;0;ON;;;;;N;;;;;\n1FBB4;INVERSE DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;;;;;\n1FBB5;LEFTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FBB6;RIGHTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FBB7;DOWNWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FBB8;UPWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;\n1FBB9;LEFT HALF FOLDER;So;0;ON;;;;;N;;;;;\n1FBBA;RIGHT HALF FOLDER;So;0;ON;;;;;N;;;;;\n1FBBB;VOIDED GREEK CROSS;So;0;ON;;;;;N;;;;;\n1FBBC;RIGHT OPEN SQUARED DOT;So;0;ON;;;;;N;;;;;\n1FBBD;NEGATIVE DIAGONAL CROSS;So;0;ON;;;;;N;;;;;\n1FBBE;NEGATIVE DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;\n1FBBF;NEGATIVE DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;;\n1FBC0;WHITE HEAVY SALTIRE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;\n1FBC1;LEFT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1FBC2;MIDDLE THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1FBC3;RIGHT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;\n1FBC4;NEGATIVE SQUARED QUESTION MARK;So;0;ON;;;;;N;;;;;\n1FBC5;STICK FIGURE;So;0;ON;;;;;N;;;;;\n1FBC6;STICK FIGURE WITH ARMS RAISED;So;0;ON;;;;;N;;;;;\n1FBC7;STICK FIGURE LEANING LEFT;So;0;ON;;;;;N;;;;;\n1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;;\n1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;;\n1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;\n1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;\n1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;\n1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;\n1FBF3;SEGMENTED DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;\n1FBF4;SEGMENTED DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;\n1FBF5;SEGMENTED DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;\n1FBF6;SEGMENTED DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;\n1FBF7;SEGMENTED DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;\n1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;\n1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;\n20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;\n2A6DD;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;\n2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;\n2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;\n2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;\n2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;;\n2B820;<CJK Ideograph Extension E, First>;Lo;0;L;;;;;N;;;;;\n2CEA1;<CJK Ideograph Extension E, Last>;Lo;0;L;;;;;N;;;;;\n2CEB0;<CJK Ideograph Extension F, First>;Lo;0;L;;;;;N;;;;;\n2EBE0;<CJK Ideograph Extension F, Last>;Lo;0;L;;;;;N;;;;;\n2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;\n2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;\n2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;\n2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;\n2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;\n2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;\n2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;\n2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;\n2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;\n2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;\n2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;\n2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;\n2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;\n2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;\n2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;\n2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;\n2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;\n2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;\n2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;\n2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;\n2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;\n2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;\n2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;\n2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;\n2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;\n2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;\n2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;\n2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;\n2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;\n2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;\n2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;\n2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;\n2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;\n2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;\n2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;\n2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;\n2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;\n2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;\n2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;\n2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;\n2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;\n2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;\n2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;\n2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;\n2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;\n2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;\n2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;\n2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;\n2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;\n2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;\n2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;\n2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;\n2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;\n2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;\n2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;\n2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;\n2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;\n2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;\n2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;\n2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;\n2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;\n2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;\n2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;\n2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;\n2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;\n2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;\n2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;\n2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;\n2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;\n2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;\n2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;\n2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;\n2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;\n2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;\n2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;\n2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;\n2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;\n2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;\n2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;\n2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;\n2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;\n2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;\n2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;\n2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;\n2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;\n2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;\n2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;\n2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;\n2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;\n2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;\n2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;\n2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;\n2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;\n2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;\n2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;\n2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;\n2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;\n2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;\n2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;\n2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;\n2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;\n2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;\n2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;\n2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;\n2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;\n2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;\n2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;\n2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;\n2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;\n2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;\n2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;\n2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;\n2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;\n2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;\n2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;\n2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;\n2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;\n2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;\n2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;\n2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;\n2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;\n2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;\n2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;\n2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;\n2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;\n2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;\n2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;\n2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;\n2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;\n2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;\n2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;\n2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;\n2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;\n2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;\n2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;\n2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;\n2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;\n2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;\n2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;\n2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;\n2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;\n2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;\n2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;\n2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;\n2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;;\n2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;\n2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;\n2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;\n2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;\n2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;\n2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;\n2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;\n2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;\n2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;\n2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;\n2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;\n2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;\n2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;\n2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;\n2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;\n2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;\n2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;\n2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;\n2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;\n2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;\n2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;\n2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;\n2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;\n2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;\n2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;\n2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;\n2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;\n2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;\n2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;\n2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;\n2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;\n2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;\n2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;\n2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;\n2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;\n2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;\n2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;\n2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;\n2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;\n2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;\n2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;\n2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;\n2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;\n2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;\n2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;\n2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;\n2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;\n2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;\n2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;\n2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;\n2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;\n2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;\n2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;\n2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;\n2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;\n2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;\n2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;\n2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;\n2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;\n2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;\n2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;\n2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;\n2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;\n2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;\n2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;\n2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;\n2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;\n2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;\n2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;\n2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;\n2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;\n2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;\n2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;\n2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;\n2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;\n2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;\n2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;\n2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;\n2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;\n2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;\n2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;\n2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;\n2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;\n2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;\n2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;\n2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;\n2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;\n2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;\n2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;\n2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;\n2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;\n2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;\n2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;\n2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;\n2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;\n2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;\n2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;\n2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;\n2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;\n2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;\n2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;\n2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;\n2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;\n2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;\n2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;\n2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;\n2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;\n2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;\n2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;\n2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;\n2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;\n2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;\n2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;\n2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;\n2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;\n2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;\n2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;\n2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;\n2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;\n2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;\n2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;\n2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;\n2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;\n2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;\n2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;\n2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;\n2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;\n2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;\n2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;\n2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;\n2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;\n2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;\n2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;\n2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;\n2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;\n2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;\n2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;\n2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;\n2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;\n2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;\n2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;\n2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;\n2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;\n2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;\n2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;\n2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;\n2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;\n2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;\n2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;\n2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;\n2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;\n2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;\n2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;\n2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;\n2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;\n2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;\n2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;\n2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;\n2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;\n2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;\n2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;\n2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;\n2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;\n2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;\n2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;\n2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;\n2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;\n2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;\n2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;\n2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;\n2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;\n2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;\n2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;\n2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;\n2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;\n2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;\n2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;\n2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;\n2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;\n2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;\n2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;\n2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;\n2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;\n2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;\n2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;\n2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;\n2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;\n2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;\n2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;\n2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;\n2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;\n2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;\n2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;\n2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;\n2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;\n2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;\n2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;\n2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;\n2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;\n2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;\n2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;\n2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;\n2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;\n2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;\n2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;\n2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;\n2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;\n2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;\n2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;\n2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;\n2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;\n2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;\n2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;\n2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;\n2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;\n2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;\n2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;\n2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;\n2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;\n2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;\n2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;\n2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;\n2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;\n2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;\n2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;\n2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;\n2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;\n2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;\n2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;\n2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;\n2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;\n2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;\n2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;\n2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;\n2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;\n2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;\n2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;\n2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;\n2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;\n2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;\n2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;\n2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;\n2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;\n2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;\n2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;\n2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;\n2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;\n2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;\n2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;\n2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;\n2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;\n2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;\n2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;\n2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;\n2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;\n2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;\n2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;\n2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;\n2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;\n2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;\n2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;\n2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;\n2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;\n2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;\n2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;\n2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;\n2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;\n2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;\n2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;\n2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;\n2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;\n2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;\n2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;\n2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;\n2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;\n2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;\n2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;\n2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;\n2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;\n2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;\n2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;\n2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;\n2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;\n2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;\n2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;\n2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;\n2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;\n2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;\n2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;\n2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;\n2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;\n2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;\n2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;\n2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;\n2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;\n2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;\n2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;\n2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;\n2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;\n2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;\n2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;\n2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;\n2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;\n2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;\n2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;\n2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;\n2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;\n2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;\n2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;\n2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;\n2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;\n2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;\n2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;\n2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;\n2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;\n2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;\n2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;\n2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;\n2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;\n2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;\n2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;\n2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;\n2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;\n2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;\n2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;\n2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;\n2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;\n2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;\n2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;\n2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;\n2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;\n2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;\n2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;\n2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;\n2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;\n2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;\n2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;\n2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;\n2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;\n2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;\n2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;\n2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;\n2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;\n2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;\n2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;\n2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;\n2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;\n2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;\n2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;\n2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;\n2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;\n2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;\n2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;\n2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;\n2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;\n2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;\n2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;\n2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;\n2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;\n2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;\n2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;\n2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;\n2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;\n2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;\n2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;\n2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;\n2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;\n2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;\n2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;\n2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;\n2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;\n2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;\n2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;\n2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;\n2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;\n2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;\n2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;\n2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;\n2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;\n2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;\n2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;\n2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;\n2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;\n2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;\n2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;\n2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;\n2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;\n2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;\n2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;\n2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;\n2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;\n2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;\n2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;\n2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;\n2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;\n2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;\n2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;\n30000;<CJK Ideograph Extension G, First>;Lo;0;L;;;;;N;;;;;\n3134A;<CJK Ideograph Extension G, Last>;Lo;0;L;;;;;N;;;;;\nE0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;\nE0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;\nE0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;\nE0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;\nE0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;\nE0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;\nE0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;\nE0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;\nE0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;\nE0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;\nE0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;\nE002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;\nE002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;\nE002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;\nE002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;\nE002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;\nE002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;\nE0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;\nE0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;\nE0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;\nE0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;\nE0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;\nE0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;\nE0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;\nE0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;\nE0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;\nE0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;\nE003A;TAG COLON;Cf;0;BN;;;;;N;;;;;\nE003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;\nE003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;\nE003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;\nE003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;\nE003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;\nE0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;\nE0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;\nE0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;\nE0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;\nE0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;\nE0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;\nE0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;\nE0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;\nE0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;\nE0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;\nE004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;\nE004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;\nE004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;\nE004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;\nE004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;\nE004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;\nE0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;\nE0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;\nE0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;\nE0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;\nE0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;\nE0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;\nE0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;\nE0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;\nE0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;\nE0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;\nE005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;\nE005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;\nE005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;\nE005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;\nE005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;\nE005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;\nE0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;\nE0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;\nE0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;\nE0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;\nE0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;\nE0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;\nE0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;\nE0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;\nE0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;\nE0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;\nE006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;\nE006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;\nE006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;\nE006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;\nE006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;\nE006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;\nE0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;\nE0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;\nE0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;\nE0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;\nE0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;\nE0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;\nE0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;\nE0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;\nE0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;\nE0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;\nE007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;\nE007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;\nE007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;\nE007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;\nE007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;\nE007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;\nE0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;\nE0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;\nE0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;\nE0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;\nE0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;\nE0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;\nE0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;\nE0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;\nE0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;\nE0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;\nE010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;\nE010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;\nE010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;\nE010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;\nE010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;\nE010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;\nE0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;\nE0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;\nE0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;\nE0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;\nE0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;\nE0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;\nE0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;\nE0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;\nE0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;\nE0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;\nE011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;\nE011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;\nE011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;\nE011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;\nE011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;\nE011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;\nE0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;\nE0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;\nE0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;\nE0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;\nE0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;\nE0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;\nE0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;\nE0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;\nE0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;\nE0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;\nE012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;\nE012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;\nE012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;\nE012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;\nE012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;\nE012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;\nE0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;\nE0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;\nE0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;\nE0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;\nE0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;\nE0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;\nE0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;\nE0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;\nE0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;\nE0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;\nE013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;\nE013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;\nE013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;\nE013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;\nE013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;\nE013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;\nE0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;\nE0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;\nE0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;\nE0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;\nE0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;\nE0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;\nE0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;\nE0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;\nE0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;\nE0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;\nE014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;\nE014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;\nE014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;\nE014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;\nE014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;\nE014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;\nE0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;\nE0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;\nE0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;\nE0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;\nE0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;\nE0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;\nE0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;\nE0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;\nE0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;\nE0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;\nE015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;\nE015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;\nE015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;\nE015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;\nE015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;\nE015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;\nE0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;\nE0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;\nE0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;\nE0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;\nE0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;\nE0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;\nE0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;\nE0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;\nE0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;\nE0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;\nE016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;\nE016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;\nE016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;\nE016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;\nE016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;\nE016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;\nE0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;\nE0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;\nE0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;\nE0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;\nE0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;\nE0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;\nE0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;\nE0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;\nE0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;\nE0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;\nE017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;\nE017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;\nE017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;\nE017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;\nE017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;\nE017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;\nE0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;\nE0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;\nE0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;\nE0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;\nE0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;\nE0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;\nE0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;\nE0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;\nE0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;\nE0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;\nE018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;\nE018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;\nE018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;\nE018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;\nE018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;\nE018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;\nE0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;\nE0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;\nE0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;\nE0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;\nE0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;\nE0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;\nE0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;\nE0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;\nE0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;\nE0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;\nE019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;\nE019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;\nE019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;\nE019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;\nE019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;\nE019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;\nE01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;\nE01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;\nE01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;\nE01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;\nE01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;\nE01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;\nE01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;\nE01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;\nE01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;\nE01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;\nE01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;\nE01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;\nE01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;\nE01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;\nE01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;\nE01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;\nE01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;\nE01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;\nE01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;\nE01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;\nE01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;\nE01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;\nE01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;\nE01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;\nE01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;\nE01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;\nE01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;\nE01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;\nE01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;\nE01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;\nE01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;\nE01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;\nE01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;\nE01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;\nE01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;\nE01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;\nE01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;\nE01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;\nE01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;\nE01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;\nE01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;\nE01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;\nE01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;\nE01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;\nE01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;\nE01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;\nE01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;\nE01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;\nE01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;\nE01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;\nE01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;\nE01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;\nE01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;\nE01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;\nE01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;\nE01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;\nE01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;\nE01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;\nE01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;\nE01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;\nE01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;\nE01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;\nE01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;\nE01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;\nE01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;\nE01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;\nE01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;\nE01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;\nE01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;\nE01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;\nE01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;\nE01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;\nE01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;\nE01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;\nE01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;\nE01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;\nE01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;\nE01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;\nE01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;\nE01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;\nF0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;\nFFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;\n100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;\n10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;\n"
  },
  {
    "path": "dev/parseunicode/parseunicodeclasses.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"parseunicodeclasses\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"LazUtils\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"parseunicodeclasses.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"parseunicodeclasses\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "dev/parseunicode/parseunicodeclasses.lpr",
    "content": "// SPDX-License-Identifier: LGPL-3.0-only (modified to allow linking)\nprogram parseunicodeclasses;\n\nuses Classes, sysutils, fgl, LazUTF8;\n\ntype\n  TIntegerList = specialize TFPGList<Integer>;\n\nvar\n  UnicodeData: array of record\n    Code: LongInt;\n    Name, Category: string;\n    CombiningClass: byte;\n    BidiClass, Decomposition: string;\n    Mirrored: boolean;\n    OldName: string;\n  end;\n  UnicodeCount: integer;\n\n  procedure LoadUnicodeData;\n  var\n    lines, cells: TStringList;\n    i: Integer;\n  begin\n    lines := TStringList.Create;\n    lines.LoadFromFile('UnicodeData.txt');\n    setlength(UnicodeData, lines.Count);\n    UnicodeCount := 0;\n    cells := TStringList.Create;\n    cells.Delimiter := ';';\n    cells.QuoteChar := '\"';\n    cells.StrictDelimiter := true;\n    for i := 0 to lines.Count-1 do\n    begin\n      cells.DelimitedText := lines[i];\n      if cells.Count >= 11 then\n      with UnicodeData[UnicodeCount] do\n      begin\n        Code := StrToInt('$'+cells[0]);\n        Name := cells[1];\n        Category := cells[2];\n        CombiningClass:= StrToInt(cells[3]);\n        BidiClass := cells[4];\n        Decomposition:= cells[5];\n        Mirrored := (cells[9] = 'Y');\n        OldName := cells[10];\n        inc(UnicodeCount);\n      end;\n    end;\n    SetLength(UnicodeData, unicodeCount);\n    lines.Free;\n  end;\n\n  function IndexOfUnicode(u: LongInt): integer;\n  var\n    low, high, mid: Integer;\n  begin\n    low := 0;\n    high := UnicodeCount-1;\n    while low < high do\n    begin\n      mid := (low+high) div 2;\n      if u > UnicodeData[mid].Code then\n        low := mid+1\n      else\n        high := mid;\n    end;\n    if UnicodeData[low].Code = u then\n      result := low\n    else\n      result := -1;\n  end;\n\n  function GetUnicodeBidiClass(u: LongInt): string;\n  var\n    idx: Integer;\n  begin\n    idx := IndexOfUnicode(u);\n    if idx = -1 then\n      result := ''\n      else result := UnicodeData[idx].BidiClass;\n  end;\n\n  function GetUnicodeCombiningClass(u: LongInt): byte;\n  var\n    idx: Integer;\n  begin\n    idx := IndexOfUnicode(u);\n    if idx = -1 then\n      result := 0\n      else result := UnicodeData[idx].CombiningClass;\n  end;\n\n  function UnicodeCharToUTF8(u: LongInt): string;\n  begin\n    if u >= 0 then\n      result := UnicodeToUTF8(cardinal(u))\n    else\n      result := '';\n  end;\n\n  function ArrayOfCodeToCase(ACodes: array of integer; AIndent: string): string;\n  var\n    codeCount, i: Integer;\n    bufLines: TStringList;\n    buf: String;\n  begin\n    codeCount := length(ACodes);\n    if codeCount = 0 then exit('');\n\n    bufLines := TStringList.Create;\n    i := 0;\n    buf := AIndent+'  ';\n    while i < codeCount do\n    begin\n      if i > 0 then buf += ', ';\n\n      if length(buf) > 95 then\n      begin\n        bufLines.Add(buf);\n        buf := AIndent+'  ';\n      end;\n\n      if (i+2 < codeCount) and (ACodes[i]+1 = ACodes[i+1]) and (ACodes[i+1]+1 = ACodes[i+2]) then\n      begin\n        buf += '$'+IntToHex(ACodes[i],2) + '..';\n        while (i+1 < codeCount) and (ACodes[i]+1 = ACodes[i+1]) do inc(i);\n        buf += '$'+IntToHex(ACodes[i],2);\n      end else\n        buf += '$'+IntToHex(ACodes[i],2);\n\n      inc(i);\n    end;\n\n    if trim(buf) <> '' then bufLines.Add(buf);\n\n    result := '';\n    for i := 0 to bufLines.Count-1 do\n    begin\n      if i > 0 then result += LineEnding;\n      result += bufLines[i];\n    end;\n\n    bufLines.Free;\n    result += ': ';\n  end;\n\n  function ArrayOfCodeToCase(ACodes: TIntegerList; AIndent: string): string;\n  var a: array of integer;\n    i: Integer;\n  begin\n    setlengtH(a, ACodes.Count);\n    for i := 0 to high(a) do\n      a[i] := ACodes[i];\n    result := ArrayOfCodeToCase(a, AIndent);\n  end;\n\n  procedure GenerateUnicodeFunctions;\n  const Indent = '      ';\n  var\n    tIn, tOut: TextFile;\n\n    procedure ParseBidiClasses;\n    type\n      TUnicodeBidiClass = (ubcBoundaryNeutral, ubcSegmentSeparator, ubcParagraphSeparator, ubcWhiteSpace, ubcOtherNeutrals,\n                          ubcCommonSeparator, ubcNonSpacingMark,\n                          ubcLeftToRight, ubcEuropeanNumber, ubcEuropeanNumberSeparator, ubcEuropeanNumberTerminator,\n                          ubcRightToLeft, ubcArabicLetter, ubcArabicNumber,\n                          ubcUnknown,\n                          ubcCombiningLeftToRight,   //ubcLeftToRight in Mc category\n                          ubcMirroredNeutral);       //ubcOtherNeutrals with Mirrored property\n\n      procedure IncludeClasses(AClasses: TStrings; AMinCode, AMaxCode: integer);\n      const\n        MaxGapsPerClass = 20;\n      var\n        codes: array[TUnicodeBidiClass] of TIntegerList;\n        gaps: array[TUnicodeBidiClass] of integer;\n\n        procedure FlushCase(curBidi: TUnicodeBidiClass);\n        var\n          caseStr: string;\n        begin\n          if codes[curBidi].Count = 0 then exit;\n          caseStr := ArrayOfCodeToCase(codes[curBidi], Indent);\n\n          case curBidi of\n          ubcCommonSeparator: WriteLn(tOut,caseStr+'result := ubcCommonSeparator;');\n          ubcLeftToRight: WriteLn(tOut,caseStr+'result := ubcLeftToRight;');\n          ubcCombiningLeftToRight: WriteLn(tOut,caseStr+'result := ubcCombiningLeftToRight;');\n          ubcEuropeanNumber: WriteLn(tOut,caseStr+'result := ubcEuropeanNumber;');\n          ubcEuropeanNumberSeparator: WriteLn(tOut,caseStr+'result := ubcEuropeanNumberSeparator;');\n          ubcEuropeanNumberTerminator: WriteLn(tOut,caseStr+'result := ubcEuropeanNumberTerminator;');\n          ubcRightToLeft: WriteLn(tOut,caseStr+'result := ubcRightToLeft;');\n          ubcArabicLetter: WriteLn(tOut,caseStr+'result := ubcArabicLetter;');\n          ubcArabicNumber: WriteLn(tOut,caseStr+'result := ubcArabicNumber;');\n          ubcNonSpacingMark: WriteLn(tOut,caseStr+'result := ubcNonSpacingMark;');\n          ubcBoundaryNeutral: WriteLn(tOut,caseStr+'result := ubcBoundaryNeutral;');\n          ubcParagraphSeparator: WriteLn(tOut,caseStr+'result := ubcParagraphSeparator;');\n          ubcSegmentSeparator: WriteLn(tOut,caseStr+'result := ubcSegmentSeparator;');\n          ubcWhiteSpace: WriteLn(tOut,caseStr+'result := ubcWhiteSpace;');\n          ubcMirroredNeutral: WriteLn(tOut,caseStr+'result := ubcMirroredNeutral;');\n          ubcOtherNeutrals: WriteLn(tOut,caseStr+'result := ubcOtherNeutrals;');\n          else raise exception.Create('Unknown bidi class');\n          end;\n          codes[curBidi].Clear;\n          gaps[curBidi] := 0;\n        end;\n\n      var\n        newBidi: TUnicodeBidiClass;\n        curCode: LongInt;\n        i: integer;\n\n      begin\n        write(' ', AClasses.DelimitedText);\n        for newBidi := low(TUnicodeBidiClass) to high(TUnicodeBidiClass) do\n        begin\n          codes[newBidi] := TIntegerList.Create;\n          gaps[newBidi] := 0;\n        end;\n        for i := 0 to UnicodeCount-1 do\n        begin\n          case UnicodeData[i].BidiClass of\n          'CS': newBidi := ubcCommonSeparator;\n          'L': newBidi := ubcLeftToRight;\n          'EN': newBidi := ubcEuropeanNumber;\n          'ES': newBidi := ubcEuropeanNumberSeparator;\n          'ET': newBidi := ubcEuropeanNumberTerminator;\n          'R': newBidi := ubcRightToLeft;\n          'AL': newBidi := ubcArabicLetter;\n          'AN': newBidi := ubcArabicNumber;\n          'NSM': newBidi := ubcNonSpacingMark;\n          'BN': newBidi := ubcBoundaryNeutral;\n          'B': newBidi := ubcParagraphSeparator;\n          'S': newBidi := ubcSegmentSeparator;\n          'WS': newBidi := ubcWhiteSpace;\n          'ON': newBidi := ubcOtherNeutrals;\n          else continue;\n          end;\n          if (newBidi = ubcLeftToRight) and (UnicodeData[i].Category = 'Mc') then newBidi := ubcCombiningLeftToRight\n          else if (newBidi = ubcOtherNeutrals) and UnicodeData[i].Mirrored then newBidi := ubcMirroredNeutral;\n          if AClasses.IndexOf(UnicodeData[i].BidiClass)<>-1 then\n          begin\n            curCode := UnicodeData[i].Code;\n            if (curCode >= AMinCode) and (curCode <= AMaxCode) then\n            begin\n              if (codes[newBidi].Count > 0) and (codes[newBidi].Last+1 <> curCode) then\n                inc(gaps[newBidi]);\n              codes[newBidi].Add(curCode);\n              if gaps[newBidi] > MaxGapsPerClass then\n                FlushCase(newBidi);\n            end;\n          end;\n        end;\n        for newBidi := low(TUnicodeBidiClass) to high(TUnicodeBidiClass) do\n        begin\n          FlushCase(newBidi);\n          codes[newBidi].Free;\n        end;\n      end;\n\n    var c: TStringList;\n\n      procedure Include(AMinCode,AMaxCode: integer);\n      begin\n        write('Classes from ',IntToHex(AMinCode,2),' to ',IntToHex(AMaxCode,2),':');\n        Writeln(tOut,Indent+'case u of');\n        c.CommaText := 'BN';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'S';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'B';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'WS';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'L,CL,R,AL';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'EN';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'ES';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'ET';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'AN';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'CS,NSM';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        c.CommaText := 'ON,MN';\n        IncludeClasses(c, AMinCode,AMaxCode);\n        writeln(tout,Indent+'else result := ubcUnknown;');\n        writeln(tout,Indent+'end;');\n        writeln;\n      end;\n\n    begin\n      Writeln(tOut,'function GetUnicodeBidiClassEx(u: LongWord): TUnicodeBidiClass;');\n      Writeln(tOut,'begin');\n      c := TStringList.Create;\n      writeln(tOut,'  case u of');\n      writeln(tOut,'  $00000..$07FFF:');\n      writeln(tOut,'    case u of');\n      writeln(tOut,'    $00000..$003FF:');\n      Include($00000, $003FF);\n      writeln(tOut,'    $00400..$007FF:');\n      Include($00400, $007FF);\n      writeln(tOut,'    $00800..$00BFF:');\n      Include($00800, $00BFF);\n      writeln(tOut,'    $00C00..$00FFF:');\n      Include($00C00, $00FFF);\n      writeln(tOut,'    $01000..$017FF:');\n      Include($01000, $017FF);\n      writeln(tOut,'    $01800..$01FFF:');\n      Include($01800, $01FFF);\n      writeln(tOut,'    $02000..$02FFF:');\n      Include($02000, $02FFF);\n      writeln(tOut,'    else');\n      Include($03000, $07FFF);\n      writeln(tOut,'    end;');\n      writeln(tOut,'  $08000..$0BFFF:');\n      Include($08000, $0BFFF);\n      writeln(tOut,'  $0C000..$0FFFF:');\n      Include($0C000, $0FFFF);\n      writeln(tOut,'  else');\n      writeln(tOut,'    case u of');\n      writeln(tOut,'    $10000..$107FF:');\n      Include($10000, $107FF);\n      writeln(tOut,'    $10800..$10FFF:');\n      Include($10800, $10FFF);\n      writeln(tOut,'    $11000..$117FF:');\n      Include($11000, $117FF);\n      writeln(tOut,'    $11800..$17FFF:');\n      Include($11800, $17FFF);\n      writeln(tOut,'    $18000..$1DFFF:');\n      Include($18000, $1DFFF);\n      writeln(tOut,'    $1E000..$FFFFF:');\n      Include($1E000, $FFFFF);\n      writeln(tOut,'    else result := ubcUnknown;');\n      writeln(tOut,'    end');\n      writeln(tOut,'  end');\n      c.Free;\n\n      writeln(tout,'end;');\n      writeln(tout);\n    end;\n\n    procedure ParseBidiBrackets;\n    var elem: TStringList;\n      line: string;\n      tIn: TextFile;\n    begin\n      Writeln(tOut,'function GetUnicodeBracketInfo(u: LongWord): TUnicodeBracketInfo;');\n      Writeln(tOut,'  procedure Bracket(AOpening,AClosing: LongWord);');\n      Writeln(tOut,'  begin');\n      Writeln(tOut,'    result.IsBracket := true;');\n      Writeln(tOut,'    result.OpeningBracket := AOpening;');\n      Writeln(tOut,'    result.ClosingBracket := AClosing;');\n      Writeln(tOut,'  end;');\n      Writeln(tOut,'begin');\n      Writeln(tOut,'  case u of');\n\n      writeln('Parsing bracket data...');\n      assignfile(tIn, 'BidiBrackets.txt');\n      reset(tin);\n      elem := TStringList.Create;\n      elem.Delimiter := ';';\n      elem.StrictDelimiter:= true;\n      while not eof(tin) do\n      begin\n        readln(tin, line);\n        elem.DelimitedText:= line;\n        if elem.Count >= 3 then\n        begin\n          if copy(trim(elem[2]),1,1) = 'o' then\n            writeln(tOut,'  $'+trim(elem[0])+', $'+trim(elem[1])+': Bracket($'+trim(elem[0])+', $'+trim(elem[1])+');');\n        end;\n      end;\n      elem.Free;\n      closefile(tin);\n\n      writeln(tout,'  else');\n      writeln(tout,'    begin');\n      writeln(tout,'      result.IsBracket := false;');\n      writeln(tout,'      result.OpeningBracket := 0;');\n      writeln(tout,'      result.ClosingBracket := 0;');\n      writeln(tout,'    end;');\n      Writeln(tOut,'  end;');\n      Writeln(tOut,'end;');\n      Writeln(tOut);\n    end;\n\n    procedure ParseArabicLigature;\n    var\n      line: string;\n      cells: TStringList;\n      chars: TStringList;\n      u: LongInt;\n      j: Integer;\n\n      procedure AddJoiningType(joinType: string; joinTypeEnum: string; AIndent: string; AMinIndex,AMaxIndex: integer);\n      var\n        i,nb: Integer;\n        charsList: array of integer;\n      begin\n        nb := 0;\n        for i := AMinIndex to AMaxIndex do\n          if chars.ValueFromIndex[i]=joinType then inc(nb);\n        if nb = 0 then exit;\n        setlength(charsList, nb);\n        nb := 0;\n        for i := AMinIndex to AMaxIndex do\n          if chars.ValueFromIndex[i]=joinType then\n          begin\n            charsList[nb] := StrToInt('$'+chars.Names[i]);\n            inc(nb);\n          end;\n        writeln(tOut,ArrayOfCodeToCase(charsList, AIndent)+'result := '+joinTypeEnum+';');\n      end;\n\n      procedure AddJoiningTypeRange(AMinIndex,AMaxIndex: integer; AIndent: string; AForceCase: boolean = false);\n      const MaxGaps = 45;\n      var\n        mid, i, gaps, halfGaps: Integer;\n      begin\n        gaps := 0;\n        for i := AMinIndex+1 to AMaxIndex do\n          if (StrToInt('$'+chars.Names[i])-StrToInt('$'+chars.Names[i-1]) > 1) or\n            (chars.ValueFromIndex[i] <> chars.ValueFromIndex[i-1]) then inc(gaps);\n        if (gaps > MaxGaps) and not AForceCase then\n        begin\n          halfGaps := 0;\n          mid := (AMinIndex+AMaxIndex) div 2;\n          for i := AMinIndex+1 to AMaxIndex do\n            if (StrToInt('$'+chars.Names[i])-StrToInt('$'+chars.Names[i-1]) > 1) or\n              (chars.ValueFromIndex[i] <> chars.ValueFromIndex[i-1]) then\n            begin\n              inc(halfGaps);\n              if halfGaps >= gaps shr 1 then\n              begin\n                mid := i;\n                break;\n              end;\n            end;\n          if gaps <= MaxGaps*2.5 then\n          begin\n            writeln(tOut,AIndent, 'if u <= $', chars.Names[mid],' then');\n            AddJoiningTypeRange(AMinIndex, mid, AIndent+'  ', true);\n            writeln(tOut,AIndent, 'else');\n            AddJoiningTypeRange(mid+1, AMaxIndex, AIndent+'  ', true);\n          end else\n          begin\n            writeln(tOut,AIndent, 'if u <= $', chars.Names[mid],' then begin');\n            AddJoiningTypeRange(AMinIndex, mid, AIndent+'  ');\n            writeln(tOut,AIndent, 'end else begin');\n            AddJoiningTypeRange(mid+1, AMaxIndex, AIndent+'  ');\n            writeln(tOut,AIndent, 'end');\n          end;\n        end else\n        begin\n          writeln(tOut,AIndent, 'case u of');\n          AddJoiningType('T', 'ujtTransparent', AIndent, AMinIndex, AMaxIndex);\n          AddJoiningType('R', 'ujtRightJoining', AIndent, AMinIndex, AMaxIndex);\n          AddJoiningType('L', 'ujtLeftJoining', AIndent, AMinIndex, AMaxIndex);\n          AddJoiningType('D', 'ujtDualJoining', AIndent, AMinIndex, AMaxIndex);\n          AddJoiningType('C', 'ujtJoinCausing', AIndent, AMinIndex, AMaxIndex);\n          writeln(tOut,AIndent, 'end');\n        end;\n      end;\n\n    begin\n      writeln('Parsing arabic ligature data...');\n      chars := TStringList.Create;\n      for j := 0 to UnicodeCount-1 do\n      begin\n        if (UnicodeData[j].Category = 'Mn') or (UnicodeData[j].Category = 'Me')\n          or (UnicodeData[j].Category = 'Cf') then\n            chars.Values[IntToHex(UnicodeData[j].Code,6)] := 'T';\n      end;\n      assignfile(tIn, 'ArabicShaping.txt');\n      reset(tIn);\n      cells := TStringList.Create;\n      cells.Delimiter := ';';\n      cells.QuoteChar := '\"';\n      cells.StrictDelimiter := true;\n      while not eof(tIn) do\n      begin\n        readln(tIn, line);\n        if (line = '') or (line[1]='#') then continue;\n        cells.DelimitedText:= line;\n        if cells.Count >= 4 then\n        begin\n          u := StrToInt('$'+cells[0]);\n          if trim(cells[2]) = 'U' then\n          begin\n            j := chars.IndexOfName(IntToHex(u,6));\n            if j <> -1 then\n              chars.Delete(j);\n          end\n          else\n            chars.Values[IntToHex(u,6)] := trim(cells[2]);\n        end;\n      end;\n      closefile(tIn);\n      cells.Free;\n      chars.Sort;\n      Writeln(tOut,'function GetUnicodeJoiningType(u: LongWord): TUnicodeJoiningType;');\n      Writeln(tOut,'begin');\n      writeln(tOut,'  result := ujtNonJoining;');\n      AddJoiningTypeRange(0, chars.Count-1, '  ');\n      chars.Free;\n      Writeln(tOut,'end;');\n      Writeln(tOut);\n    end;\n\n    procedure ParseCombiningClasses;\n    const\n      CombineLeftOnly = '093F,094E,' + {DEVANAGARI}\n        '09BF,09C7,09C8,' + {BENGALI}\n        '0A3F,' + {GURMUKHI}\n        '0ABF,' + {GUJARATI}\n        '0B47,0B48,0B4B,0B4C,' + {ORIYA}\n        '0BC6,0BC7,0BC8,' + {TAMIL}\n        '0D46,0D47,0D48,' + {MALAYALAM}\n        '0DD9,0DDA,0DDB,0DDC,0DDD,0DDE,' + {SINHALA}\n        '1031,103C,1084,' + {MYANMAR}\n        '17BE,17C1,17C2,17C3,' + {KHMER}\n        '1A19,' + {BUGINESE}\n        '1B3E,1B3F,' + {BALINESE}\n        '302E,302F,' + {HANGUL}\n        'A9BA,A9BB,A9BF,' + {JAVANESE}\n        'AA2F,AA30,AA34,'; {CHAM}\n      CombineLeftAndRight = '09CB,09CC,' + {BENGALI}\n        '0BCA,0BCB,0BCC,' + {TAMIL}\n        '0D4A,0D4B,0D4C,' + {MALAYALAM}\n        '17BF,17C0,17C4,17C5,' + {KHMER}\n        '1B3D,1B40,1B41,'; {BALINESE}\n\n    var\n      i: Integer;\n      infos: TStringList;\n      u: LongInt;\n      c: byte;\n      s: String;\n\n      procedure FlushLine;\n      begin\n        writeln(tOut, s);\n        s := '   ';\n      end;\n\n    begin\n      infos := TStringList.Create;\n      for i := 0 to UnicodeCount-1 do\n      begin\n        u := UnicodeData[i].Code;\n        if (UnicodeData[i].BidiClass = 'NSM') or\n           (UnicodeData[i].Category = 'Mc') then\n        begin\n          c := UnicodeData[i].CombiningClass;\n          if (c = 0) and (UnicodeData[i].Category = 'Mc') then\n          begin\n            if pos(IntToHex(u,4)+',', CombineLeftOnly) <> 0 then c := 208\n            else if pos(IntToHex(u,4)+',', CombineLeftAndRight) <> 0 then c := 0\n            else c := 210;\n          end;\n          infos.Add('(u:$'+IntToHex(u,2)+'; c:'+IntToStr(c)+')');\n        end;\n      end;\n      writeln(tOut,'type');\n      writeln(tOut,'  TUnicodeCombiningInfo = record');\n      writeln(tOut,'    u: LongWord;');\n      writeln(tOut,'    c: Byte;');\n      writeln(tOut,'  end;');\n      writeln(tOut,'const');\n      writeln(tOut,'  UnicodeCombiningInfos: array[0..',infos.count-1,'] of TUnicodeCombiningInfo =');\n      s := '  (';\n      for i := 0 to infos.Count-1 do\n      begin\n        if length(s) + length(infos[i]) + 2 > 80 then FlushLine;\n        AppendStr(s, ' ' + infos[i]);\n        if i < infos.Count-1 then AppendStr(s, ',');\n      end;\n      if s <> '   ' then FlushLine;\n      writeln(tOut,'  );');\n      writeln(tOut);\n      infos.Free;\n    end;\n\n  begin\n    AssignFile(tOut, 'generatedunicode.inc');\n    Rewrite(tOut);\n    writeln(tOut,'{ This file is generated by dev/parseunicode/parseunicodeclasses program }');\n    Writeln(tOut);\n    ParseBidiClasses;\n    ParseBidiBrackets;\n    ParseArabicLigature;\n    ParseCombiningClasses;\n    CloseFile(tOut);\n  end;\n\n  function ListCompareBinary(List: TStringList; Index1, Index2: Integer): Integer;\n  begin\n    result := CompareStr(List[Index1], List[Index2]);\n  end;\n\n  procedure ParseUTF8Decomposition;\n  type TDecompositionKind = string;\n  const dMultichar = 'arNone';\n        dInitial = 'arInitial';\n        dMedial = 'arMedial';\n        dFinal = 'arFinal';\n        dIsolated = 'arIsolated';\n  const UTF8_ARABIC_ALEPH = 'ا';\n        UTF8_ARABIC_ALEPH_HAMZA_BELOW = 'إ';\n        UTF8_ARABIC_ALEPH_HAMZA_ABOVE = 'أ';\n        UTF8_ARABIC_ALEPH_MADDA_ABOVE = 'آ';\n        UTF8_ARABIC_LAM = 'ل';\n  var tOut: TextFile;\n    decomposed, kind, decomposedUTF8, s: string;\n    decomposedFirstChar: LongInt;\n    mergedU,nextU, fallbackU: LongInt;\n    posClose, posSpace: SizeInt;\n    hasNSM, isLa: Boolean;\n    correspList: TStringList;\n    kerningFallback: TStringList;\n    i, decomposedLen, j: Integer;\n    typedKind: TDecompositionKind;\n    hasMarkLeft, hasMarkRight: boolean;\n\n    function RemoveUptoTab(AText: string): string;\n    var\n      idxTab: SizeInt;\n    begin\n      idxTab := pos(#9, AText);\n      result := copy(AText, idxTab+1, length(AText)-idxTab);\n    end;\n\n  begin\n    writeln('Parsing decomposition data...');\n    correspList := TStringList.Create;\n    kerningFallback := TStringList.Create;\n    for j := 0 to UnicodeCount-1 do\n    begin\n      mergedU := UnicodeData[j].Code;\n      if UnicodeData[j].BidiClass = 'NSM' then continue;\n      decomposed := UnicodeData[j].Decomposition;\n      if decomposed = '' then continue;\n      typedKind := dMultichar;\n      if decomposed[1] = '<' then\n      begin\n        posClose := pos('>', decomposed);\n        if posClose = 0 then continue;\n        kind := copy(decomposed,1,posClose);\n        delete(decomposed, 1, posClose);\n        if kind = '<initial>' then typedKind := dInitial else\n        if kind = '<medial>' then typedKind := dMedial else\n        if kind = '<final>' then typedKind := dFinal else\n        if kind = '<isolated>' then typedKind := dIsolated else\n        if (kind = '<compat>') and (mergedU >= $FB00) and (mergedU <= $FB04) then\n          typedKind := dMultichar\n        else\n          continue;\n        decomposed := trim(decomposed);\n      end;\n      decomposedUTF8 := '';\n      decomposedLen := 0;\n      decomposedFirstChar:= 0;\n      hasMarkLeft := false;\n      hasMarkRight := false;\n      hasNSM := false;\n      while decomposed <> '' do\n      begin\n        posSpace := pos(' ',decomposed);\n        if posSpace = 0 then posSpace := length(decomposed)+1;\n        nextU := strToInt('$'+copy(decomposed,1,posSpace-1));\n        if GetUnicodeBidiClass(nextU) = 'NSM' then hasNSM := true;\n        case GetUnicodeCombiningClass(nextU) of\n        200,208,212,218,224,228: hasMarkLeft := true;\n        204,210,216,222,226,232: hasMarkRight := true;\n        end;\n        if decomposedLen = 0 then decomposedFirstChar:= nextU;\n        AppendStr(decomposedUTF8, UnicodeCharToUTF8(nextU));\n        delete(decomposed, 1, posSpace);\n        inc(decomposedLen);\n      end;\n      isLa := (decomposedUTF8 = UTF8_ARABIC_LAM+UTF8_ARABIC_ALEPH) or\n              (decomposedUTF8 = UTF8_ARABIC_LAM+UTF8_ARABIC_ALEPH_HAMZA_BELOW) or\n              (decomposedUTF8 = UTF8_ARABIC_LAM+UTF8_ARABIC_ALEPH_HAMZA_ABOVE) or\n              (decomposedUTF8 = UTF8_ARABIC_LAM+UTF8_ARABIC_ALEPH_MADDA_ABOVE);\n      if ((typedKind = dMultichar) and (decomposedLen > 1)\n           and (hasNSM or (copy(decomposedUTF8,1,1) = 'f'))) or\n         ((typedKind <> dMultichar) and ((decomposedLen = 1) or isLa)) then\n        correspList.Add(decomposedUTF8+#9+'('+\n           'de:''' + decomposedUTF8 + '''; ' +\n           're:''' + UnicodeCharToUTF8(mergedU) + '''; ' +\n           'join:' + typedKind +\n           ')');\n      if (typedKind = dMultichar) and (decomposedUTF8 <> '') and not hasMarkLeft and not hasMarkRight and\n         ((decomposedUTF8[1] in ['A'..'Z']) or (copy(decomposedUTF8,1,length('Æ')) = 'Æ') or\n         (copy(decomposedUTF8,1,length('Ç')) = 'Ç') or\n         (copy(decomposedUTF8,1,length('Г')) = 'Г') or\n         (copy(decomposedUTF8,1,length('Ѵ')) = 'Ѵ') or\n         (copy(decomposedUTF8,1,length('Ω')) = 'Ω') or\n         (copy(decomposedUTF8,1,length('Ө')) = 'Ө')) then\n      begin\n        fallbackU := decomposedFirstChar;\n        if fallbackU <> 32 then\n          kerningFallback.Add('(u:$' + inttohex(mergedU,2)+'; fb:$'+ inttohex(fallbackU,2)+')');\n      end;\n    end;\n\n    AssignFile(tOut, 'generatedutf8.inc');\n    Rewrite(tOut);\n    writeln(tOut,'{ This file is generated by dev/parseunicode/parseunicodeclasses program }');\n    writeln(tOut, 'type');\n    writeln(tOut, '  TArabicJoin = (arNone, arInitial, arMedial, arFinal, arIsolated);');\n    writeln(tOut, '  TUTF8Decomposition = record');\n    writeln(tOut, '    de, re: string; //decomposed, recomposed UTF8');\n    writeln(tOut, '    join: TArabicJoin;');\n    writeln(tOut, '  end;');\n    writeln(tOut, 'const');\n    writeln(tOut, '  UTF8Decomposition : array[0..', correspList.Count-1, '] of TUTF8Decomposition = (');\n    correspList.CustomSort(@ListCompareBinary);\n    for i := 0 to correspList.Count-1 do\n      if i <> correspList.Count-1 then\n        writeln(tOut, '  ', RemoveUptoTab(correspList[i]), ',')\n      else\n        writeln(tOut, '  ', RemoveUptoTab(correspList[i]));\n    correspList.Free;\n    writeln(tOut, '  );');\n    writeln(tout);\n    CloseFile(tOut);\n\n    AssignFile(tOut, 'generatedkerningfallback.inc');\n    Rewrite(tOut);\n    writeln(tOut,'{ This file is generated by dev/parseunicode/parseunicodeclasses program }');\n    writeln(tOut, 'type');\n    writeln(tOut, '  TKerningFallbackInfo = record');\n    writeln(tOut, '    u: integer;      //composed charcode');\n    writeln(tOut, '    fb: integer;     //fallback code');\n    writeln(tOut, '  end;');\n    writeln(tOut, 'const');\n    writeln(tOut, '  KerningFallbackInfo : array[0..', kerningFallback.Count-1, '] of TKerningFallbackInfo = (');\n    s := '';\n    for i := 0 to kerningFallback.Count-1 do\n    begin\n      if i <> kerningFallback.Count-1 then\n        AppendStr(s, kerningFallback[i] + ', ')\n      else\n        AppendStr(s, kerningFallback[i]);\n      if length(s) > 70 then\n      begin\n        writeln(tOut, '  ', s);\n        s := '';\n      end;\n    end;\n    if s <> '' then\n      writeln(tOut, '  ', s);\n    writeln(tOut, '  );');\n    writeln(tout);\n    kerningFallback.Free;\n    CloseFile(tOut);\n  end;\n\nbegin\n  LoadUnicodeData;\n  GenerateUnicodeFunctions;\n  ParseUTF8Decomposition;\n  writeln('Done.');\nend.\n\n"
  },
  {
    "path": "dev/parseunicode/testunicodealgo.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"testunicodealgo\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4NoGUI\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"testunicodealgo.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"testunicodealgo\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "dev/parseunicode/testunicodealgo.lpr",
    "content": "// SPDX-License-Identifier: LGPL-3.0-only (modified to allow linking)\nprogram testunicodealgo;\n\nuses BGRAUTF8, Classes, sysUtils;\n\nvar\n  tIn,tOut: TextFile;\n  testDef: string;\n  testElem, unicodeChars: TStringList;\n  testText: string;\n  posHash, i: integer;\n  a: TBidiUTF8Array;\n  levelStr, orderStr: string;\n  failCount, successCount: integer;\n  o: TUnicodeDisplayOrder;\n\nbegin\n  assignfile(tIn, 'BidiCharacterTest.txt');\n  reset(tIn);\n\n  assignfile(tOut, 'BidiCharacterTest.result');\n  rewrite(tOut);\n  testElem := TStringList.Create;\n  testElem.Delimiter := ';';\n  testElem.StrictDelimiter:= true;\n  unicodeChars := TStringList.Create;\n  unicodeChars.Delimiter := ' ';\n  unicodeChars.StrictDelimiter := true;\n  while not eof(tIn) do\n  begin\n    readln(tIn, testDef);\n    posHash := pos('#',testDef);\n    if posHash <> 0 then testDef := copy(testDef,1,posHash-1);\n    testElem.DelimitedText := testDef;\n    if testElem.Count = 5 then\n    begin\n      unicodeChars.DelimitedText := testElem[0];\n      testText := '';\n      for i := 0 to unicodeChars.Count-1 do\n        testText += UnicodeCharToUTF8(StrToInt('$'+unicodeChars[i]));\n\n      if testText = '' then continue;\n\n      //writeln(testDef);\n      case testElem[1] of\n      '0': a := AnalyzeBidiUTF8(testText,false);\n      '1': a := AnalyzeBidiUTF8(testText,true);\n      '2': a := AnalyzeBidiUTF8(testText);\n      end;\n      levelStr := '';\n      for i := 0 to high(a) do\n      begin\n        if i > 0 then levelStr += ' ';\n        if a[i].BidiInfo.IsRemoved then\n          levelStr += 'x'\n        else\n          levelStr += inttostr(a[i].BidiInfo.BidiLevel);\n      end;\n\n      o := GetUTF8DisplayOrder(a);\n      orderStr := '';\n      for i := 0 to high(o) do\n      begin\n        if i > 0 then orderStr += ' ';\n        orderStr += inttostr(o[i]);\n      end;\n\n      if (levelStr <> testElem[3]) or (orderStr <> testElem[4]) then\n      begin\n        if levelStr = testElem[3] then\n          write(tOut,'Success;') else write(tOut,'Fail;');\n\n        writeln(tOut, testDef, ';', levelStr, ';', orderStr+';', testText);\n        inc(failCount);\n      end else\n        inc(successCount);\n    end;\n  end;\n  writeln(tOut, failCount, ' fail');\n  writeln(tOut, successCount, ' success');\n  closefile(tOut);\n\n  closefile(tIn);\nend.\n\n"
  },
  {
    "path": "dev/readme.txt",
    "content": "List of directories:\n- assistant: script to generate instructions for GPT\n- makedoc: contains a program to make documentation from source code\n- colorspace: contains a program to generate code for colorspaces\n- parseunicode: parse the data provided by unicode and test unicode algorithm\n- releaser: program to update BGRABitmap version for release"
  },
  {
    "path": "dev/releaser/archiveurl.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit ArchiveUrl;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes;\n\ntype\n\n  { TArchiveUrl }\n\n  TArchiveUrl = class(TReleaserObject)\n  private\n    FUrl: string;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    class function IsUnique: boolean; override;\n    function GetUrlForVersion(AVersion: TVersion): string;\n    property Url: string read FUrl;\n    procedure GetVersions({%H-}AVersionList: TStringList); override;\n    procedure Save; override;\n  end;\n\nimplementation\n\n{ TArchiveUrl }\n\nconstructor TArchiveUrl.Create(AParameters: TStringList; ALogicDir: string);\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(1);\n  FUrl := Param[0];\nend;\n\nclass function TArchiveUrl.IsUnique: boolean;\nbegin\n  Result:= true;\nend;\n\nfunction TArchiveUrl.GetUrlForVersion(AVersion: TVersion): string;\nbegin\n  result := ReplaceVariables(FUrl, AVersion);\nend;\n\nprocedure TArchiveUrl.GetVersions(AVersionList: TStringList);\nbegin\n  //nothing\nend;\n\nprocedure TArchiveUrl.Save;\nbegin\n  //nothing\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/bgrabitmap.logic",
    "content": "cd ..\\..\nmanager update_BGRABitmap.json\narchive https://github.com/bgrabitmap/bgrabitmap/archive/v$(Version).zip\ncd bgrabitmap\npackage bgrabitmappack.lpk\npackage bgrabitmappack4fpgui.lpk\npackage bgrabitmappack4nogui.lpk\npackage bgrabitmappack4android.lpk\npackage bgrabitmappack4android_freetype.lpk\npackage bgrabitmappack4nolcl.lpk\npackage bgrabitmappack4nolcl_freetype.lpk\nconst bgrabitmaptypes.pas BGRABitmapVersion\n\n"
  },
  {
    "path": "dev/releaser/constfile.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit ConstFile;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes;\n\ntype\n\n  { TConstFile }\n\n  TConstFile = class(TReleaserObject)\n  private\n    FFilename, FConstname: String;\n    FSourceCode: string;\n    FChanged: boolean;\n    procedure AnalyzeVersionLine(ALine: string; out AValueStart,\n      AValueLength: integer);\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    procedure Save; override;\n    function TryVersion(out AValue: TVersion): boolean;\n    procedure GetVersions(AVersionList: TStringList); override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\nimplementation\n\n{ TConstFile }\n\nprocedure TConstFile.AnalyzeVersionLine(ALine: string; out AValueStart, AValueLength: integer);\nvar\n  s: String;\n  p: integer;\nbegin\n  AValueStart := 0;\n  AValueLength:= 0;\n\n  s := ALine;\n  p := pos(FConstname+' ',s);\n  if (p<> 0) and ((p=1) or (s[p-1] in[#0..#32])) then\n  begin\n    inc(p, length(FConstName));\n    while (p <= length(s)) and (s[p] in[#0..#32]) do inc(p);\n    if (p <= length(s)) and (s[p] = '=') then\n    begin\n      inc(p);\n      while (p <= length(s)) and (s[p] in[#0..#32]) do inc(p);\n      AValueStart := p;\n      while (p <= length(s)) and (s[p] in['0'..'9']) do inc(p);\n      AValueLength:= p-AValueStart;\n      exit;\n    end;\n  end;\nend;\n\nconstructor TConstFile.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  ver: TVersion;\n  str: TStringStream;\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(2);\n  FFilename := ExpandFileName(ReplaceVariables(Param[0]));\n  FConstname := Param[1];\n  stream := nil;\n  str := nil;\n  try\n    stream := TFileStream.Create(FFilename, fmOpenRead);\n    str := TStringStream.Create('');\n    if str.CopyFrom(stream, stream.Size)<>stream.Size then\n      raise exception.Create('Unable to read file');\n    FSourceCode := str.DataString;\n  finally\n    str.Free;\n    stream.Free;\n  end;\n  if TryVersion(ver) then\n    writeln('Code file \"',ExtractFileName(FFilename),'\" version ',VersionToStr(ver))\n  else\n    writeln('Code file \"',ExtractFileName(FFilename),'\" undefined version');\nend;\n\ndestructor TConstFile.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TConstFile.Save;\nvar\n  stream: TFileStream;\nbegin\n  if FChanged then\n  begin\n    writeln('Updating code file \"',ExtractFileName(FFilename),'\"');\n    stream := TFileStream.Create(FFilename, fmCreate);\n    try\n      if FSourceCode <> '' then\n        stream.WriteBuffer(FSourceCode[1], length(FSourceCode));\n    finally\n      stream.Free;\n    end;\n  end;\nend;\n\nfunction TConstFile.TryVersion(out AValue: TVersion): boolean;\nvar\n  valueStart,valueLen,errPos: integer;\n  verValue: LongWord;\nbegin\n  AValue.Major:= 0;\n  AValue.Minor:= 0;\n  AValue.Release:= 0;\n  AValue.Build:= 0;\n  AnalyzeVersionLine(FSourceCode, valueStart, valueLen);\n  if valueStart > 0 then\n  begin\n    val(copy(FSourceCode, valueStart, valueLen), verValue, errPos);\n    if errPos = 0 then\n    begin\n      AValue.Major:= verValue div 1000000;\n      AValue.Minor := (verValue div 10000) mod 100;\n      AValue.Release := (verValue div 100) mod 100;\n      AValue.Build := verValue mod 100;\n      exit(true);\n    end;\n  end;\n  result := false;\nend;\n\nprocedure TConstFile.GetVersions(AVersionList: TStringList);\nvar\n  ver: TVersion;\n  verStr: String;\nbegin\n  if TryVersion(ver) then\n  begin\n    verStr := VersionToStr(ver);\n    if AVersionList.IndexOf(verStr)=-1 then AVersionList.Add(verStr);\n  end;\nend;\n\nprocedure TConstFile.UpdateVersion(AVersion: TVersion);\nvar\n  ver: TVersion;\n  newValue, valueStart, valueLength: Integer;\n  s: String;\nbegin\n  newValue := AVersion.Major*1000000 + AVersion.Minor*10000 + AVersion.Release*100 + AVersion.Build;\n  if TryVersion(ver) then\n  begin\n    if AVersion<>ver then\n    begin\n      AnalyzeVersionLine(FSourceCode, valueStart,valueLength);\n      if valueStart <> 0 then\n      begin\n        s := FSourceCode;\n        delete(s, valueStart,valueLength);\n        insert(IntToStr(newValue), s,valueStart);\n        FSourceCode := s;\n        FChanged:= true;\n      end;\n    end;\n  end else\n    writeln('Please add manually a constant ',FConstname,' = ',newValue,' in \"',ExtractFileName(FFilename),'\"');\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/copyfile.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit CopyFile;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes;\n\ntype\n\n  { TCopyFile }\n\n  TCopyFile = class(TReleaserObject)\n  private\n    FSourceFilename, FDestFilename: String;\n    FVersion: TVersion;\n    FVersionDefined: boolean;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    procedure Save; override;\n    procedure GetVersions({%H-}AVersionList: TStringList); override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\nimplementation\n\n{ TCopyFile }\n\nconstructor TCopyFile.Create(AParameters: TStringList; ALogicDir: string);\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(2);\n  FSourceFilename := ExpandFileName(Param[0]);\n  FDestFilename := ExpandFileName(Param[1]);\nend;\n\nprocedure TCopyFile.Save;\nvar\n  dest: String;\n  streamIn,streamOut: TStream;\n  buf: array of byte;\n  bufCount: LongInt;\nbegin\n  if not FVersionDefined then exit;\n  streamIn := TFileStream.Create(ReplaceVariables(FSourceFilename), fmOpenRead);\n  streamOut := nil;\n  buf := nil;\n  try\n    dest := ReplaceVariables(FDestFilename);\n    if FileExists(dest) then\n      writeln('Replacing file \"',ExtractFilename(dest),'\"');\n    streamOut := TFileStream.Create(dest, fmCreate);\n    setlength(buf, 4096);\n    repeat\n      bufCount:= streamIn.Read(buf[0], length(buf));\n      streamOut.WriteBuffer(buf[0], bufCount);\n    until bufCount = 0;\n  finally\n    buf := nil;\n    streamOut.Free;\n    streamIn.Free;\n  end;\nend;\n\nprocedure TCopyFile.GetVersions(AVersionList: TStringList);\nbegin\n  //nothing\nend;\n\nprocedure TCopyFile.UpdateVersion(AVersion: TVersion);\nbegin\n  if not FileExists(ReplaceVariables(FSourceFilename)) then\n    raise exception.Create('Source file not found: '+FSourceFilename);\n  if not DirectoryExists(ExtractFilePath(ReplaceVariables(FDestFilename))) then\n    raise exception.Create('Target directory not found: '+ExtractFilePath(ReplaceVariables(FDestFilename)));\n  FVersion := AVersion;\n  FVersionDefined := true;\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/macbundle.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit MacBundle;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes, laz2_XMLRead, laz2_XMLWrite, Laz2_DOM;\n\ntype\n\n  { TMacBundle }\n\n  TMacBundle = class(TReleaserObject)\n  private\n    FBundlepath: string;\n    FFilename: string;\n    FXml: TXmlDocument;\n    FDict: TStringList;\n    FChanged: boolean;\n    function GetName: string;\n    function GetPListFilename: string;\n    function ReadDict(ARoot: TDOMNode): TStringList;\n    procedure UpdateDict(ARoot: TDOMNode; ADict: TStringList);\n    function GetPList: TDOMNode;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    property Filename: string read FFilename;\n    function GetVersion: TVersion;\n    procedure GetVersions(AVersionList: TStringList); override;\n    procedure CheckVersion(AVersion: TVersion); override;\n    property Name: string read GetName;\n    procedure Save; override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\nimplementation\n\n{ TMacBundle }\n\nfunction TMacBundle.GetName: string;\nbegin\n  result := '';\n  if Assigned(FDict) then\n    result := FDict.Values['CFBundleName'];\n  if result = '' then\n    result := ChangeFileExt(ExtractFileName(FBundlepath),'');\nend;\n\nfunction TMacBundle.GetPListFilename: string;\nbegin\n  result := FBundlepath+PathDelim+'Contents'+PathDelim+'Info.plist';\nend;\n\nfunction TMacBundle.ReadDict(ARoot: TDOMNode): TStringList;\nvar\n  dict, entry: TDOMNode;\n  key: string;\nbegin\n  result := TStringList.Create;\n  if Assigned(ARoot) then\n  begin\n    dict := ARoot.FindNode('dict');\n    if Assigned(dict) then\n    begin\n      entry := dict.FirstChild;\n      while entry <> nil do\n      begin\n        if entry.NodeName = 'key' then\n        begin\n          key := entry.TextContent;\n          entry := entry.NextSibling;\n          if (entry <> nil) and (entry.NodeName = 'string') then\n          begin\n            result.Values[key] := entry.TextContent;\n            entry := entry.NextSibling;\n          end\n          else if (entry <> nil) and (entry.NodeName <> 'key') then\n            entry := entry.NextSibling;\n        end else\n          entry := entry.NextSibling;\n      end;\n    end else\n      raise exception.Create('\"dict\" node not found');\n  end;\nend;\n\nprocedure TMacBundle.UpdateDict(ARoot: TDOMNode; ADict: TStringList);\nvar\n  dict, entry: TDOMNode;\n  key: string;\nbegin\n  if Assigned(ARoot) then\n  begin\n    dict := ARoot.FindNode('dict');\n    if Assigned(dict) then\n    begin\n      entry := dict.FirstChild;\n      while entry <> nil do\n      begin\n        if entry.NodeName = 'key' then\n        begin\n          key := entry.TextContent;\n          entry := entry.NextSibling;\n          if (entry <> nil) and (entry.NodeName = 'string') then\n          begin\n            entry.TextContent := ADict.Values[key];\n            entry := entry.NextSibling;\n          end\n          else if (entry <> nil) and (entry.NodeName <> 'key') then\n            entry := entry.NextSibling;\n        end else\n          entry := entry.NextSibling;\n      end;\n    end else\n      raise exception.Create('\"dict\" node not found');\n  end;\nend;\n\nfunction TMacBundle.GetPList: TDOMNode;\nbegin\n  result := FXml.FirstChild;\n  while (result <> nil) and not (result is TDOMElement) do result := result.NextSibling;\n  if (result = nil) or (result.NodeName <> 'plist') then raise exception.Create('\"plist\" node not found');\nend;\n\nconstructor TMacBundle.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(1);\n  FBundlepath:= ExpandFileName(ReplaceVariables(Param[0]));\n  stream := TFileStream.Create(GetPListFilename, fmOpenRead);\n  try\n    ReadXMLFile(FXml,stream);\n  finally\n    stream.Free;\n  end;\n  FDict := ReadDict(GetPList);\n  writeln('Bundle ',Name,' version ',VersionToStr(GetVersion));\nend;\n\ndestructor TMacBundle.Destroy;\nbegin\n  FXml.Free;\n  inherited Destroy;\nend;\n\nfunction TMacBundle.GetVersion: TVersion;\nbegin\n  if Assigned(FDict) then\n    result := StrToVersion(FDict.Values['CFBundleVersion'])\n  else raise exception.Create('Version node not found');\nend;\n\nprocedure TMacBundle.GetVersions(AVersionList: TStringList);\nvar\n  ver: TVersion;\n  verStr: String;\nbegin\n  ver := GetVersion;\n  verStr := VersionToStr(ver);\n  if AVersionList.IndexOf(verStr)=-1 then\n    AVersionList.Add(verStr);\nend;\n\nprocedure TMacBundle.CheckVersion(AVersion: TVersion);\nbegin\n  inherited CheckVersion(AVersion);\n  if AVersion<>GetVersion then raise exception.Create('Inconsistent version of bundle '+Name);\nend;\n\nprocedure TMacBundle.Save;\nbegin\n  if FChanged then\n  begin\n    writeln('Updating bundle ', Name,'...');\n    WriteXMLFile(FXml, GetPListFilename);\n  end else\n    writeln('Bundle unchanged');\nend;\n\nprocedure TMacBundle.UpdateVersion(AVersion: TVersion);\nvar\n  versionStr: String;\nbegin\n  if Assigned(FDict) then\n  begin\n    versionStr := VersionToStr(AVersion);\n    if FDict.Values['CFBundleVersion'] <> versionStr then\n    begin\n      FDict.Values['CFBundleVersion'] := versionStr;\n      FChanged := true;\n    end;\n    if FDict.Values['CFBundleShortVersionString'] <> versionStr then\n    begin\n      FDict.Values['CFBundleShortVersionString'] := versionStr;\n      FChanged := true;\n    end;\n    UpdateDict(GetPList, FDict);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/managerfile.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit ManagerFile;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes,\n  fpjson, jsonparser, ArchiveUrl, PackageFile;\n\ntype\n\n  { TManagerFile }\n\n  TManagerFile = class(TReleaserObject)\n  private\n    FArchive: TArchiveUrl;\n    FFilename: string;\n    FPackages: TPackageFileList;\n    FRoot: TJSONObject;\n    FNew, FChanged: boolean;\n    FLineEnding: string;\n    procedure SetArchive(AValue: TArchiveUrl);\n    function GetPackageUpdateList: TJSONArray;\n    function GetDataNode: TJSONObject;\n    function GetDownloadUrl: string;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    class function IsUnique: boolean; override;\n    procedure LinkWith(AOtherObject: TReleaserObject); override;\n    property Archive: TArchiveUrl read FArchive write SetArchive;\n    procedure GetVersions({%H-}AVersionList: TStringList); override;\n    procedure CheckVersion(AVersion: TVersion); override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n    procedure Save; override;\n  end;\n\nimplementation\n\n{ TManagerFile }\n\nprocedure TManagerFile.SetArchive(AValue: TArchiveUrl);\nbegin\n  if FArchive=AValue then Exit;\n  FArchive:=AValue;\nend;\n\nfunction TManagerFile.GetPackageUpdateList: TJSONArray;\nconst packagePath1 = 'UpdateLazPackages';\n      packagePath2 = 'UpdatePackageFiles';\nvar\n  node: TJSONData;\nbegin\n  node := FRoot.FindPath(packagePath1);\n  if node = nil then node := FRoot.FindPath(packagePath2);\n  if node <> nil then result := node as TJSONArray\n  else\n  begin\n    result := TJSONArray.Create;\n    FRoot.Add(packagePath1, result);\n  end;\nend;\n\nfunction TManagerFile.GetDataNode: TJSONObject;\nconst dataPath = 'UpdatePackageData';\nvar\n  node: TJSONData;\nbegin\n  node := FRoot.FindPath(dataPath);\n  if node <> nil then result := node as TJSONObject\n  else\n  begin\n    result := TJSONObject.Create;\n    FRoot.Add(dataPath, result);\n  end;\nend;\n\nfunction TManagerFile.GetDownloadUrl: string;\nvar\n  url: string;\n  data: TJSONObject;\nbegin\n  if Archive <> nil then\n  begin\n    data := GetDataNode;\n    url := '';\n    url := data.Get('DownloadZipURL', url);\n    result := url;\n  end\n  else result := '';\nend;\n\nconstructor TManagerFile.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(1);\n  FFilename:= ExpandFileName(ReplaceVariables(Param[0]));\n  if FileExists(FFilename) then\n  begin\n    FLineEnding:= DetectLineEnding(FFilename);\n    FNew := false;\n    stream := TFileStream.Create(FFilename, fmOpenRead);\n    try\n      FRoot := GetJSON(stream) as TJSONObject;\n    finally\n      stream.Free;\n    end;\n  end else\n  begin\n    FNew := true;\n    FRoot := TJSONObject.Create;\n  end;\n  FPackages := TPackageFileList.Create;\nend;\n\ndestructor TManagerFile.Destroy;\nbegin\n  FPackages.Free;\n  FRoot.Free;\n  inherited Destroy;\nend;\n\nclass function TManagerFile.IsUnique: boolean;\nbegin\n  Result:= true;\nend;\n\nprocedure TManagerFile.LinkWith(AOtherObject: TReleaserObject);\nvar\n  updateList: TJSONArray;\n  packageEntry: TJSONObject;\n  name: String;\n  i: Integer;\n  updateName: string;\n  package: TPackageFile;\n  updateVer: TVersion;\nbegin\n  inherited LinkWith(AOtherObject);\n  if AOtherObject is TArchiveUrl then\n    Archive := TArchiveUrl(AOtherObject)\n  else if AOtherObject is TPackageFile then\n  begin\n    package := TPackageFile(AOtherObject);\n    name := ExtractFileName(package.Filename);\n    updateList := GetPackageUpdateList;\n    if FNew then\n    begin\n      packageEntry := TJSONObject.Create;\n      packageEntry.Booleans['ForceNotify'] := false;\n      packageEntry.Integers['InternalVersion'] := 1;\n      packageEntry.Strings['Name'] := name;\n      packageEntry.Strings['Version'] := VersionToStr(package.GetVersion, true);\n      updateList.Add(packageEntry);\n      FPackages.Add(package);\n    end else\n      for i := 0 to updateList.Count-1 do\n      begin\n        packageEntry := updateList.Items[i] as TJSONObject;\n        updateName := packageEntry.Strings['Name'];\n        updateVer := StrToVersion(packageEntry.Strings['Version']);\n        if updateName = name then\n        begin\n          FPackages.Add(package);\n          writeln('Package ', package.name,' is used in manager');\n          if updateVer <> package.GetVersion then\n            raise exception.Create('Package version specified in manager is inconsistent');\n        end;\n      end;\n  end;\nend;\n\nprocedure TManagerFile.GetVersions(AVersionList: TStringList);\nbegin\n  //version will be provided by packages\nend;\n\nprocedure TManagerFile.CheckVersion(AVersion: TVersion);\nvar\n  url: string;\nbegin\n  inherited CheckVersion(AVersion);\n  if Archive <> nil then\n  begin\n    url := GetDownloadUrl;\n    if (url <> '') and (url <> Archive.GetUrlForVersion(AVersion)) then\n      raise exception.Create('Archive version is not consistent (DownloadZipURL field of JSON)');\n  end;\nend;\n\nprocedure TManagerFile.UpdateVersion(AVersion: TVersion);\nvar\n  name, updateName, url: String;\n  i, j: Integer;\n  updateList: TJSONArray;\n  packageEntry, data: TJSONObject;\nbegin\n  for i := 0 to FPackages.Count-1 do\n  begin\n    name := ExtractFileName(FPackages[i].Filename);\n    updateList := GetPackageUpdateList;\n    for j := 0 to updateList.Count-1 do\n    begin\n      packageEntry := updateList.Items[j] as TJSONObject;\n      updateName := packageEntry.Strings['Name'];\n      if updateName = name then\n      begin\n        packageEntry.Strings['Version'] := VersionToStr(AVersion, true);\n        FChanged := true;\n      end;\n    end;\n  end;\n\n  data := GetDataNode;\n  url := Archive.GetUrlForVersion(AVersion);\n  data.Strings['DownloadZipURL'] := url;\nend;\n\nprocedure TManagerFile.Save;\nvar t: textfile;\n  data: TJSONObject;\n  url: String;\nbegin\n  if (FPackages.Count = 0) then raise exception.Create('Manager does not have an associated package');\n\n  data := GetDataNode;\n  if FNew then\n  begin\n    data.Booleans['DisableInOPM'] := false;\n    data.Strings['Name'] := FPackages[0].Name;\n  end;\n  if Assigned(Archive) then\n  begin\n    if GetDownloadUrl = '' then\n    begin\n      url := Archive.GetUrlForVersion(FPackages[0].GetVersion);\n      data.Strings['DownloadZipURL'] := url;\n      FChanged := true;\n    end;\n  end;\n\n  if FNew or FChanged then\n  begin\n    if FNew then\n      writeln('Creating manager file...')\n    else\n      writeln('Updating manager file...');\n    assignfile(t, FFilename);\n    rewrite(t);\n    write(t, StringReplace(FRoot.FormatJSON, LineEnding, FLineEnding, [rfReplaceAll]));\n    closefile(t);\n  end else\n    writeln('Manager file unchanged');\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/packagefile.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit PackageFile;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes, fgl, laz2_XMLRead, laz2_XMLWrite, Laz2_DOM;\n\ntype\n\n  { TPackageFile }\n\n  TPackageFile = class(TReleaserObject)\n  private\n    FFilename: string;\n    FLineEnding: string;\n    FXml: TXmlDocument;\n    FChanged: boolean;\n    function GetName: string;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    property Filename: string read FFilename;\n    function GetVersion: TVersion;\n    procedure GetVersions(AVersionList: TStringList); override;\n    procedure CheckVersion(AVersion: TVersion); override;\n    property Name: string read GetName;\n    procedure Save; override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\n  TPackageFileList = specialize TFPGList<TPackageFile>;\n\nimplementation\n\n{ TPackageFile }\n\nfunction TPackageFile.GetName: string;\nvar\n  config, packageNode, nameNode: TDOMNode;\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    packageNode := config.FindNode('Package');\n    if Assigned(packageNode) then\n    begin\n      nameNode := packageNode.FindNode('Name');\n      if Assigned(nameNode) then\n      begin\n        with (nameNode as TDOMElement) do\n        begin\n          result := GetAttribute('Value');\n          exit;\n        end;\n      end;\n    end;\n  end;\n  result := ChangeFileExt(ExtractFileName(FFilename),'');\nend;\n\nconstructor TPackageFile.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(1);\n  FFilename:= ExpandFileName(ReplaceVariables(Param[0]));\n  FLineEnding:= DetectLineEnding(FFilename);\n  stream := TFileStream.Create(FFilename, fmOpenRead);\n  try\n    ReadXMLFile(FXml,stream);\n  finally\n    stream.Free;\n  end;\n  writeln('Package ',Name,' version ',VersionToStr(GetVersion));\nend;\n\ndestructor TPackageFile.Destroy;\nbegin\n  FXml.Free;\n  inherited Destroy;\nend;\n\nfunction TPackageFile.GetVersion: TVersion;\nvar\n  config, packageNode, versionNode: TDOMNode;\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    packageNode := config.FindNode('Package');\n    if Assigned(packageNode) then\n    begin\n      versionNode := packageNode.FindNode('Version');\n      if Assigned(versionNode) then\n      begin\n        with (versionNode as TDOMElement) do\n        begin\n          result.Major:= StrToIntDef(GetAttribute('Major'),0);\n          result.Minor:= StrToIntDef(GetAttribute('Minor'),0);\n          result.Release:= StrToIntDef(GetAttribute('Release'),0);\n          result.Build:= StrToIntDef(GetAttribute('Build'),0);\n          exit;\n        end;\n      end;\n    end;\n  end;\n  raise exception.Create('Version node not found');\nend;\n\nprocedure TPackageFile.GetVersions(AVersionList: TStringList);\nvar\n  ver: TVersion;\n  verStr: String;\nbegin\n  ver := GetVersion;\n  verStr := VersionToStr(ver);\n  if AVersionList.IndexOf(verStr)=-1 then\n    AVersionList.Add(verStr);\nend;\n\nprocedure TPackageFile.CheckVersion(AVersion: TVersion);\nbegin\n  inherited CheckVersion(AVersion);\n  if AVersion<>GetVersion then raise exception.Create('Inconsistent version of package '+Name);\nend;\n\nprocedure TPackageFile.Save;\nvar textStream: TStringStream;\n  t: TextFile;\nbegin\n  if FChanged then\n  begin\n    writeln('Updating package ', Name,'...');\n    textStream := TStringStream.Create;\n    WriteXMLFile(FXml, textStream);\n    AssignFile(t, FFilename);\n    Rewrite(t);\n    Write(t, StringReplace(textStream.DataString, LineEnding, FLineEnding, [rfReplaceAll]));\n    CloseFile(t);\n    textStream.Free;\n  end;\nend;\n\nprocedure TPackageFile.UpdateVersion(AVersion: TVersion);\nvar\n  config, packageNode, versionNode: TDOMNode;\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    packageNode := config.FindNode('Package');\n    if Assigned(packageNode) then\n    begin\n      versionNode := packageNode.FindNode('Version');\n      if Assigned(versionNode) then\n      begin\n        with (versionNode as TDOMElement) do\n        begin\n          FChanged := true;\n          SetAttribute('Major', inttostr(AVersion.Major));\n          if AVersion.Minor <> 0 then SetAttribute('Minor', inttostr(AVersion.Minor)) else RemoveAttribute('Minor');\n          if AVersion.Release <> 0 then SetAttribute('Release', inttostr(AVersion.Release)) else RemoveAttribute('Release');\n          if AVersion.Build <> 0 then SetAttribute('Build', inttostr(AVersion.Build)) else RemoveAttribute('Build');\n          exit;\n        end;\n      end;\n    end;\n  end;\n  raise exception.Create('Version node not found');\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/projectfile.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit ProjectFile;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes, laz2_XMLRead, laz2_XMLWrite, Laz2_DOM;\n\ntype\n\n  { TProjectFile }\n\n  TProjectFile = class(TReleaserObject)\n  private\n    FFilename: string;\n    FXml: TXmlDocument;\n    FChanged: boolean;\n    function GetName: string;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    property Filename: string read FFilename;\n    function GetVersion: TVersion;\n    procedure GetVersions(AVersionList: TStringList); override;\n    procedure CheckVersion(AVersion: TVersion); override;\n    property Name: string read GetName;\n    procedure Save; override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\nimplementation\n\n{ TProjectFile }\n\nfunction TProjectFile.GetName: string;\nvar\n  config, projectNode, titleNode, generalNode: TDOMNode;\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    projectNode := config.FindNode('ProjectOptions');\n    if Assigned(projectNode) then\n    begin\n      generalNode := projectNode.FindNode('General');\n      if Assigned(generalNode) then\n      begin\n        titleNode := generalNode.FindNode('Title');\n        if Assigned(titleNode) then\n        begin\n          with (titleNode as TDOMElement) do\n          begin\n            result := GetAttribute('Value');\n            exit;\n          end;\n        end;\n      end;\n    end;\n  end;\n  result := ChangeFileExt(ExtractFileName(FFilename),'');\nend;\n\nconstructor TProjectFile.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(1);\n  FFilename:= ExpandFileName(ReplaceVariables(Param[0]));\n  stream := TFileStream.Create(FFilename, fmOpenRead);\n  try\n    ReadXMLFile(FXml,stream);\n  finally\n    stream.Free;\n  end;\n  writeln('Project ',Name,' version ',VersionToStr(GetVersion));\nend;\n\ndestructor TProjectFile.Destroy;\nbegin\n  FXml.Free;\n  inherited Destroy;\nend;\n\nfunction TProjectFile.GetVersion: TVersion;\nvar\n  config, projectNode, versionNode: TDOMNode;\n\n  function GetSubNode(ATag: string): integer;\n  var\n    subNode: TDOMNode;\n  begin\n    subNode := versionNode.FindNode(ATag);\n    if Assigned(subNode) then with (subNode as TDOMElement) do\n      result:= StrToIntDef(GetAttribute('Value'),0)\n    else\n      result:= 0;\n  end;\n\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    projectNode := config.FindNode('ProjectOptions');\n    if Assigned(projectNode) then\n    begin\n      versionNode := projectNode.FindNode('VersionInfo');\n      if Assigned(versionNode) then\n      begin\n        result.Major:= GetSubNode('MajorVersionNr');\n        result.Minor:= GetSubNode('MinorVersionNr');\n        result.Release:= GetSubNode('RevisionNr');\n        result.Build:= GetSubNode('BuildNr');\n        exit;\n      end;\n    end;\n  end;\n  raise exception.Create('Version node not found');\nend;\n\nprocedure TProjectFile.GetVersions(AVersionList: TStringList);\nvar\n  ver: TVersion;\n  verStr: String;\nbegin\n  ver := GetVersion;\n  verStr := VersionToStr(ver);\n  if AVersionList.IndexOf(verStr)=-1 then\n    AVersionList.Add(verStr);\nend;\n\nprocedure TProjectFile.CheckVersion(AVersion: TVersion);\nbegin\n  inherited CheckVersion(AVersion);\n  if AVersion<>GetVersion then raise exception.Create('Inconsistent version of project '+Name);\nend;\n\nprocedure TProjectFile.Save;\nbegin\n  if FChanged then\n  begin\n    writeln('Updating project ', Name,'...');\n    WriteXMLFile(FXml, FFilename);\n  end else\n    writeln('Project file unchanged');\nend;\n\nprocedure TProjectFile.UpdateVersion(AVersion: TVersion);\nvar\n  config, projectNode, versionNode: TDOMNode;\n\n  procedure UpdateSubNode(ATag: string; AValue: integer);\n  var\n    subNode: TDOMElement;\n  begin\n    subNode := versionNode.FindNode(ATag) as TDOMElement;\n    if AValue<>0 then\n    begin\n      if subNode=nil then\n      begin\n        subNode := FXml.CreateElement(ATag);\n        versionNode.AppendChild(subNode);\n      end;\n      subNode.SetAttribute('Value', inttostr(AValue));\n    end else\n    begin\n      if Assigned(subNode) then\n      begin\n        versionNode.RemoveChild(subNode);\n        subNode.Free;\n      end;\n    end;\n  end;\n\nbegin\n  config := FXml.FindNode('CONFIG');\n  if Assigned(config) then\n  begin\n    projectNode := config.FindNode('ProjectOptions');\n    if Assigned(projectNode) then\n    begin\n      versionNode := projectNode.FindNode('VersionInfo');\n      if Assigned(versionNode) then\n      begin\n        FChanged := true;\n        UpdateSubNode('MajorVersionNr', AVersion.Major);\n        UpdateSubNode('MinorVersionNr', AVersion.Minor);\n        UpdateSubNode('RevisionNr', AVersion.Release);\n        UpdateSubNode('BuildNr', AVersion.Build);\n        exit;\n      end;\n    end;\n  end;\n  raise exception.Create('Version node not found');\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/releaser.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"Releaser\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"LazUtils\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"11\">\n      <Unit0>\n        <Filename Value=\"releaser.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"Releaser\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"bgrabitmap.logic\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"releasertypes.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"ReleaserTypes\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"managerfile.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"ManagerFile\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"archiveurl.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"ArchiveUrl\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"packagefile.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"PackageFile\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"constfile.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"ConstFile\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"projectfile.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"ProjectFile\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"textline.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"TextLine\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"copyfile.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"CopyFile\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"macbundle.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"MacBundle\"/>\n      </Unit10>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"releaser\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf2Set\"/>\n      </Debugging>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "dev/releaser/releaser.lpr",
    "content": "// SPDX-License-Identifier: LGPL-3.0-only (modified to allow linking)\nprogram Releaser;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Classes, SysUtils, CustApp, ReleaserTypes, ManagerFile, ArchiveUrl,\n  PackageFile, ProjectFile, ConstFile, TextLine, CopyFile, MacBundle\n  { you can add units after this };\n\ntype\n\n  { TReleaserApp }\n\n  TReleaserApp = class(TCustomApplication)\n  protected\n    procedure DoRun; override;\n  public\n    constructor Create(TheOwner: TComponent); override;\n    procedure ProcessFile(AFilename: string; AOptions: TStringList);\n    destructor Destroy; override;\n    procedure WriteHelp; virtual;\n  end;\n\n  TIfState = (isNone, isSkipTrue, isDoTrue, isSkipFalse, isDoFalse);\n\n{ TReleaserApp }\n\nprocedure TReleaserApp.DoRun;\nvar\n  ErrorMsg, dir: String;\n  opts, logicFiles: TStringList;\n  i: Integer;\n  findRec: TRawByteSearchRec;\nbegin\n  // quick check parameters\n  opts := TStringList.Create;\n  logicFiles := TStringList.Create;\n  ErrorMsg:=CheckOptions('hv', ['help','version:'], opts, logicFiles);\n  if ErrorMsg<>'' then begin\n    writeln(ErrorMsg);\n    Terminate;\n    Exit;\n  end;\n\n  // parse parameters\n  if HasOption('h', 'help') then begin\n    WriteHelp;\n    Terminate;\n    Exit;\n  end;\n\n  if logicFiles.Count = 0 then\n  begin\n    if FindFirst('*.logic', faAnyFile, findRec)=0 then\n      repeat\n        if (findRec.Attr and faDirectory)=0 then logicFiles.Add(ExpandFileName(findRec.Name));\n      until FindNext(findRec)<>0;\n    FindClose(findRec);\n  end;\n\n  dir := GetCurrentDir;\n  for i := 0 to logicFiles.Count-1 do\n  begin\n    SetCurrentDir(dir);\n    ProcessFile(logicFiles[i], opts);\n  end;\n\n  opts.Free;\n  logicFiles.Free;\n\n  // stop program loop\n  Terminate;\nend;\n\nconstructor TReleaserApp.Create(TheOwner: TComponent);\nbegin\n  inherited Create(TheOwner);\n  StopOnException:=True;\nend;\n\nprocedure TReleaserApp.ProcessFile(AFilename: string;\n  AOptions: TStringList);\nvar\n  objs: TReleaserObjectList;\n\n  function GetVersion: TVersion;\n  var versions: TStringList;\n    i: integer;\n  begin\n    versions := TStringList.Create;\n    try\n      for i := 0 to objs.Count-1 do\n        objs[i].GetVersions(versions);\n      if versions.Count = 0 then raise exception.Create('Version not found')\n      else if versions.Count > 1 then writeln('Multiple versions found!');\n      result := StrToVersion(versions[0]);\n    finally\n      versions.Free;\n    end;\n  end;\n\nvar\n  t: textfile;\n  s, cmd: string;\n  ver, newVer: TVersion;\n  line: TStringList;\n  factory: TReleaserObjectFactory;\n  i, lineNumber, j: Integer;\n  newVerStr, logicDir, newDir: string;\n  ifStack: array of TIfState;\n  skipCommand: boolean;\n\n  function PeekIfStack: TIfState;\n  begin\n    if ifStack = nil then\n      result := isNone\n      else result := ifStack[high(ifStack)];\n  end;\n\n  procedure PokeIfStack(AValue: TIfState);\n  begin\n    if ifStack <> nil then\n      ifStack[high(ifStack)] := AValue;\n  end;\n\n  procedure PopIfStack;\n  begin\n    if ifStack <> nil then\n      setlength(ifStack, length(ifStack)-1);\n  end;\n\n  procedure PushIfStack(AValue: TIfState);\n  begin\n    setlength(ifStack, length(ifStack)+1);\n    ifStack[high(ifStack)] := AValue;\n  end;\n\nbegin\n  AFilename := ExpandFileName(AFilename);\n  writeln('Logic file \"', AFilename,'\"');\n  assignfile(t, AFilename);\n  reset(t);\n  line := TStringList.Create;\n  objs := TReleaserObjectList.Create;\n  lineNumber := 0;\n  ifStack := nil;\n  try\n    while not eof(t) do\n    begin\n      inc(lineNumber);\n      readln(t, s);\n      line.CommaText:= trim(s);\n      if line.Count > 0 then\n      begin\n        cmd := line[0];\n        line.Delete(0);\n\n        skipCommand := false;\n        if (cmd = 'end') and (PeekIfStack <> isNone) then\n        begin\n          PopIfStack;\n          skipCommand:= true;\n        end;\n        if (cmd = 'else') and (PeekIfStack in[isDoTrue,isSkipTrue]) then\n        begin\n          if PeekIfStack = isDoTrue then\n            PokeIfStack(isSkipFalse)\n            else PokeIfStack(isDoFalse);\n          skipCommand:= true;\n        end;\n\n        if not skipCommand and (PeekIfStack in[isSkipTrue,isSkipFalse]) then\n          skipCommand:= true;\n        factory := nil;\n        if not skipCommand then\n        case LowerCase(cmd) of\n        'cd': begin\n            if line.Count <> 1 then raise exception.Create('Expecting directory');\n            logicDir := ExtractFilePath(AFilename);\n            delete(logicDir, length(logicDir), 1);\n            newDir := StringReplace(AdaptPathDelim(line[0]),'($LogicDir)',logicDir,[rfReplaceAll]);\n            SetCurrentDir(newDir);\n          end;\n        'manager': factory := TManagerFile;\n        'archive': factory := TArchiveUrl;\n        'package': factory := TPackageFile;\n        'project': factory := TProjectFile;\n        'bundle': factory := TMacBundle;\n        'const': factory := TConstFile;\n        'echo': for i := 0 to line.Count-1 do writeln(line[i]);\n        'text': factory := TTextLine;\n        'copy': factory := TCopyFile;\n        'if': begin\n                if line.Count = 0 then\n                  raise exception.Create('Expecting condition');\n                if line[0] = 'exists' then\n                begin\n                  if line.Count <> 2 then\n                    raise exception.Create('Expecting 1 parameter');\n                  if FileExists(line[1]) or DirectoryExists(line[1]) then\n                    PushIfStack(isDoTrue)\n                    else PushIfStack(isSkipTrue);\n                end else\n                  raise exception.Create('Unknown condition \"'+line[0]);\n\n            end;\n        'else', 'end': raise exception.Create('Unexpected branching \"'+cmd+'\"');\n        else\n          raise exception.Create('Unknown command \"'+cmd+'\"');\n        end;\n        if Assigned(factory) then\n        begin\n          if factory.IsUnique then\n          begin\n            for i := 0 to objs.Count-1 do\n              if objs[i] is factory then\n                raise exception.Create('Unicity constraint not satisfied for '+factory.ClassName);\n          end;\n          objs.Add(factory.Create(line, logicDir));\n        end;\n      end;\n    end;\n    lineNumber := 0;\n    for i := 0 to objs.Count-1 do\n      for j := 0 to objs.Count-1 do\n        objs[i].LinkWith(objs[j]);\n\n    ver := GetVersion;\n    for i := 0 to objs.Count-1 do\n      objs[i].CheckVersion(ver);\n\n    writeln('Current version: ',VersionToStr(ver));\n    newVerStr := '';\n    for i := 0 to AOptions.Count-1 do\n      if AOptions[i].StartsWith('version=') then\n      begin\n        newVerStr := copy(AOptions[i], length('version=')+1, length(AOptions[i])-length('version='));\n        break;\n      end;\n    if newVerStr = '' then\n    begin\n      write('New version (press Enter to keep the same): ');\n      readln(newVerStr);\n    end else\n      writeln('New version: ', newVerStr);\n\n    if Trim(newVerStr)='' then newVer := ver\n    else newVer := StrToVersion(newVerStr);\n\n    if newVer <> ver then\n    begin\n      for i := 0 to objs.Count-1 do\n        objs[i].UpdateVersion(newVer);\n    end else\n    begin\n      for i := 0 to objs.Count-1 do\n        if (objs[i] is TConstFile) or (objs[i] is TCopyFile) then  //constants and copied files are loosely checked\n          objs[i].UpdateVersion(newVer);\n    end;\n\n    for i := 0 to objs.Count-1 do\n      objs[i].Save;\n    writeln('Done.');\n  except\n    on ex:exception do\n    begin\n      write('Error');\n      if lineNumber <> 0 then write(' on line ',lineNumber);\n      writeln(': ', ex.Message);\n    end;\n  end;\n  objs.Free;\n  line.Free;\n  closefile(t);\nend;\n\ndestructor TReleaserApp.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TReleaserApp.WriteHelp;\nbegin\n  { add your help code here }\n  writeln('Update version number and check its consistence.');\n  writeln;\n  writeln('Usage: ', ExeName, ' [logicfile1 logicfile2...] [--version=versionNb] [--help]');\n  writeln;\n  writeln('  Parameter  Description');\n  writeln('  ---------  ----------------------------------------------------------------');\n  writeln('  versionNb  New version number to assign to manager and packages');\n  writeln;\n  writeln('  logicfile  File containing the location of the version number. If it is not');\n  writeln('             specified, all logic files in current directory are processed.');\n  writeln;\n  writeln('             Sample file: mylib.logic');\n  writeln('             ----------------------------------------------------------------');\n  writeln('             cd /mylib');\n  writeln('             manager update_mylib.json');\n  writeln('             archive https://github.com/mylib/mylib/archive/v$(Version).zip');\n  writeln('             package mylib/mylibpack1.lpk');\n  writeln('             package mylib/mylibpack2.lpk');\n  writeln('             const mylib/mylibtypes.pas MyLibVersion');\n  writeln;\n  writeln('             Sample file: myprog.logic');\n  writeln('             ----------------------------------------------------------------');\n  writeln('             cd ($LogicDir)');\n  writeln('             project myproject.lpi');\n  writeln('             const myconsts.pas MyProjectVersion');\n  writeln;\nend;\n\nvar\n  Application: TReleaserApp;\nbegin\n  Application:=TReleaserApp.Create(nil);\n  Application.Title:='Releaser';\n  Application.Run;\n  Application.Free;\nend.\n\n"
  },
  {
    "path": "dev/releaser/releasertypes.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit ReleaserTypes;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, fgl;\n\ntype\n  TVersion = record\n    case boolean of\n    false: (Value: array[1..4] of integer);\n    true: (Major, Minor, Release, Build: integer);\n  end;\n\n  operator =(AVersion1,AVersion2: TVersion): boolean;\n  function VersionToStr(AVersion: TVersion; AAlwaysIncludeZero: boolean = false): string;\n  function StrToVersion(AStr: string): TVersion;\n\ntype\n  { TReleaserObject }\n\n  TReleaserObject = class\n  private\n    function GetParam(AIndex: integer): string;\n    function GetParamCount: integer;\n  protected\n    FLogicDir: string;\n    function ReplaceVariables(AText: string; AVersion: TVersion): string; overload;\n    function ReplaceVariables(AText: string): string; overload;\n  public\n    FParameters: TStringList;\n    constructor Create(AParameters: TStringList; ALogicDir: string); virtual;\n    procedure ExpectParamCount(ACount: integer);\n    destructor Destroy; override;\n    property ParamCount: integer read GetParamCount;\n    property Param[AIndex: integer]: string read GetParam;\n    class function IsUnique: boolean; virtual;\n    procedure LinkWith({%H-}AOtherObject: TReleaserObject); virtual;\n    procedure GetVersions(AVersionList: TStringList); virtual; abstract;\n    procedure CheckVersion({%H-}AVersion: TVersion); virtual;\n    procedure UpdateVersion({%H-}AVersion: TVersion); virtual;\n    procedure Save; virtual; abstract;\n  end;\n\n  TReleaserObjectFactory = class of TReleaserObject;\n\n  TReleaserObjectList = specialize TFPGObjectList<TReleaserObject>;\n\nfunction AdaptPathDelim(APath: string): string;\nfunction DetectLineEnding(AFilename: string): string;\n\nimplementation\n\noperator=(AVersion1, AVersion2: TVersion): boolean;\nbegin\n  result := (AVersion1.Major = AVersion2.Major) and\n    (AVersion1.Minor = AVersion2.Minor) and\n    (AVersion1.Release = AVersion2.Release) and\n    (AVersion1.Build = AVersion2.Build);\nend;\n\nfunction VersionToStr(AVersion: TVersion; AAlwaysIncludeZero: boolean): string;\nbegin\n  result := IntToStr(AVersion.Major);\n  if AAlwaysIncludeZero or (AVersion.Minor<>0) or (AVersion.Release<>0) or (AVersion.Build<>0) then\n  begin\n    result := result + '.' + IntToStr(AVersion.Minor);\n    if AAlwaysIncludeZero or (AVersion.Release<>0) or (AVersion.Build<>0) then\n    begin\n      result := result + '.' + IntToStr(AVersion.Release);\n      if AAlwaysIncludeZero or (AVersion.Build<>0) then\n      begin\n        result := result + '.' + IntToStr(AVersion.Build);\n      end;\n    end;\n  end;\nend;\n\nfunction StrToVersion(AStr: string): TVersion;\nvar\n  lst: TStringList;\n  i: Integer;\nbegin\n  lst := TStringList.Create;\n  lst.Delimiter:= '.';\n  lst.DelimitedText := AStr;\n  if lst.Count > 4 then\n  begin\n    lst.Free;\n    raise exception.Create('Invalid version string');\n  end;\n  for i := 1 to 4 do result.Value[i] := 0;\n  for i := 1 to lst.Count do\n    result.Value[i] := StrToInt(lst[i-1]);\n  lst.Free;\nend;\n\nfunction AdaptPathDelim(APath: string): string;\nbegin\n  if PathDelim <> '\\' then\n    result := StringReplace(APath, '\\', PathDelim, [rfReplaceAll]);\n  if PathDelim <> '/' then\n    result := StringReplace(APath, '/', PathDelim, [rfReplaceAll]);\nend;\n\nfunction DetectLineEnding(AFilename: string): string;\nvar t: TextFile;\n  c, c2: char;\nbegin\n  result := LineEnding;\n  AssignFile(t, AFilename);\n  Reset(t);\n  repeat\n    read(t, c);\n    if c in[#13,#10] then\n    begin\n      result := c;\n      if not eof(t) then\n      begin\n        read(t, c2);\n        if (c2 in [#13,#10]) and (c2 <> c) then\n          result := result + c2;\n      end;\n      break;\n    end;\n  until eof(t);\n  CloseFile(t);\nend;\n\n{ TReleaserObject }\n\nfunction TReleaserObject.GetParam(AIndex: integer): string;\nbegin\n  result := FParameters[AIndex];\nend;\n\nfunction TReleaserObject.GetParamCount: integer;\nbegin\n  result := FParameters.Count;\nend;\n\nfunction TReleaserObject.ReplaceVariables(AText: string; AVersion: TVersion): string;\nbegin\n  result := AText;\n  result := StringReplace(result, '$(Version)', VersionToStr(AVersion), [rfIgnoreCase,rfReplaceAll]);\n  result := StringReplace(result, '$(LogicDir)', FLogicDir, [rfIgnoreCase,rfReplaceAll]);\nend;\n\nfunction TReleaserObject.ReplaceVariables(AText: string): string;\nbegin\n  result := AText;\n  result := StringReplace(result, '$(Version)', '?', [rfIgnoreCase,rfReplaceAll]);\n  result := StringReplace(result, '$(LogicDir)', FLogicDir, [rfIgnoreCase,rfReplaceAll]);\nend;\n\nconstructor TReleaserObject.Create(AParameters: TStringList; ALogicDir: string);\nbegin\n  FParameters := TStringList.Create;\n  FParameters.AddStrings(AParameters);\n  FLogicDir := ALogicDir;\nend;\n\nprocedure TReleaserObject.ExpectParamCount(ACount: integer);\nbegin\n  if ACount <> ParamCount then\n    raise exception.Create('Invalid number of parameters. Found '+inttostr(ParamCount)+' but expected '+inttostr(ACount));\nend;\n\ndestructor TReleaserObject.Destroy;\nbegin\n  FParameters.Free;\n  inherited Destroy;\nend;\n\nclass function TReleaserObject.IsUnique: boolean;\nbegin\n  result := false;\nend;\n\nprocedure TReleaserObject.LinkWith(AOtherObject: TReleaserObject);\nbegin\n  //nothing\nend;\n\nprocedure TReleaserObject.CheckVersion(AVersion: TVersion);\nbegin\n  //nothing\nend;\n\nprocedure TReleaserObject.UpdateVersion(AVersion: TVersion);\nbegin\n  //nothing\nend;\n\nend.\n\n"
  },
  {
    "path": "dev/releaser/textline.pas",
    "content": "// SPDX-License-Identifier: LGPL-3.0-linking-exception\nunit TextLine;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, ReleaserTypes;\n\ntype\n\n  { TTextLine }\n\n  TTextLine = class(TReleaserObject)\n  private\n    FFilename, FTextLine: String;\n    FTextLineStart, FTextLineEnd: integer;\n    FVersion: TVersion;\n    FText: string;\n    FChanged: boolean;\n  public\n    constructor Create(AParameters: TStringList; ALogicDir: string); override;\n    destructor Destroy; override;\n    procedure Save; override;\n    function GetLineForVersion(AVersion: TVersion): string;\n    procedure GetVersions({%H-}AVersionList: TStringList); override;\n    procedure CheckVersion(AVersion: TVersion); override;\n    procedure UpdateVersion(AVersion: TVersion); override;\n  end;\n\nimplementation\n\n{ TTextLine }\n\nconstructor TTextLine.Create(AParameters: TStringList; ALogicDir: string);\nvar\n  str: TStringStream;\n  stream: TFileStream;\nbegin\n  inherited Create(AParameters, ALogicDir);\n  ExpectParamCount(2);\n  FFilename := ExpandFileName(ReplaceVariables(Param[0]));\n  FTextLine := Param[1];\n  FTextLineStart:= 0;\n  FTextLineEnd:= 0;\n  stream := nil;\n  str := nil;\n  try\n    stream := TFileStream.Create(FFilename, fmOpenRead);\n    str := TStringStream.Create('');\n    if str.CopyFrom(stream, stream.Size)<>stream.Size then\n      raise exception.Create('Unable to read file');\n    FText := str.DataString;\n  finally\n    str.Free;\n    stream.Free;\n  end;\nend;\n\ndestructor TTextLine.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TTextLine.Save;\nvar\n  stream: TFileStream;\nbegin\n  if FChanged then\n  begin\n    writeln('Updating text file \"',ExtractFileName(FFilename),'\"');\n    stream := TFileStream.Create(FFilename, fmCreate);\n    try\n      if FText <> '' then\n        stream.WriteBuffer(FText[1], length(FText));\n    finally\n      stream.Free;\n    end;\n  end;\nend;\n\nfunction TTextLine.GetLineForVersion(AVersion: TVersion): string;\nbegin\n  result := ReplaceVariables(FTextLine, AVersion);\nend;\n\nprocedure TTextLine.GetVersions(AVersionList: TStringList);\nbegin\n  //nothing\nend;\n\nprocedure TTextLine.CheckVersion(AVersion: TVersion);\nvar\n  i, start: Integer;\n  expectLine: string;\n\n  procedure TryLine(AEnd: integer);\n  var\n    curLine: String;\n  begin\n    if AEnd > start then\n    begin\n      curLine := copy(FText, start, AEnd-start);\n      if curLine = expectLine then\n      begin\n        FTextLineStart:= start;\n        FTextLineEnd:= AEnd;\n        FVersion := AVersion;\n      end;\n    end;\n    start := AEnd+1;\n  end;\n\nbegin\n  inherited CheckVersion(AVersion);\n  if FTextLineEnd > FTextLineStart then exit;\n  expectLine := GetLineForVersion(AVersion);\n  i := 1;\n  start := 1;\n  while (i < length(FText)) and (FTextLineEnd <= FTextLineStart) do\n  begin\n    if FText[i] in[#13,#10] then TryLine(i);\n    inc(i);\n  end;\n  if (FTextLineEnd <= FTextLineStart) then TryLine(i);\n  if FTextLineEnd > FTextLineStart then\n    writeln('Text file \"',ExtractFileName(FFilename),'\" line found')\n  else\n    writeln('Text file \"',ExtractFileName(FFilename),'\" line not found');\nend;\n\nprocedure TTextLine.UpdateVersion(AVersion: TVersion);\nvar\n  newLine: String;\nbegin\n  if AVersion = FVersion then exit;\n  newLine := GetLineForVersion(AVersion);\n  if FTextLineEnd > FTextLineStart then\n  begin\n    delete(FText, FTextLineStart, FTextLineEnd-FTextLineStart);\n    insert(newLine, FText, FTextLineStart);\n    FTextLineEnd:= FTextLineStart+length(newLine);\n    FChanged:= true;\n  end else\n    writeln('Please add manually a line \"',newLine,'\" in \"',ExtractFileName(FFilename),'\"');\nend;\n\nend.\n\n"
  },
  {
    "path": "doc/dot.bat",
    "content": "@echo off\n\"C:\\Program Files\\Graphviz\\bin\\dot\" %*"
  },
  {
    "path": "doc/generate.bat",
    "content": "@echo off\nset DOCSPATH=web\nif not exist %DOCSPATH% mkdir %DOCSPATH%\necho Removing previously generated pages...\ndel %DOCSPATH%\\*.html\ndel %DOCSPATH%\\*.dot\ndel %DOCSPATH%\\*.svg\ndel /q %DOCSPATH%\\tipuesearch\n\npasdoc @pasdoc.cfg -X --graphviz-uses --link-gv-uses=svg --graphviz-classes --link-gv-classes=svg\n\necho Generating graphs...\ncall dot.bat -Grankdir=LR -T svg %DOCSPATH%/GVUses.dot > %DOCSPATH%/GVUses.svg\ncall dot.bat -Grankdir=LR -T svg %DOCSPATH%/GVClasses.dot > %DOCSPATH%/GVClasses.svg\n\npause"
  },
  {
    "path": "doc/generate.sh",
    "content": "DOCSPATH=web\nif [ ! -d \"$DOCSPATH\" ]; then\n\tmkdir $DOCSPATH\nelse\n\techo Removing previously generated pages...\n\trm $DOCSPATH/*.html\n\trm $DOCSPATH/*.dot\n\trm $DOCSPATH/*.svg\n\tif [ -d \"$DOCSPATH/tipuesearch\" ]; then\n\t\trm $DOCSPATH/tipuesearch/*\n\tfi\nfi\n\n./pasdoc @pasdoc.cfg -X --graphviz-uses --link-gv-uses=svg --graphviz-classes --link-gv-classes=svg\n\necho Generating graphs...\ntestcmd () {\n    command -v \"$1\" >/dev/null\n}\nif testcmd dot; then\n\tDOT=\"dot\"\nelse\n\tDOT=\"./dot.bat\"\nfi\nperl -ni -e 'print unless /\"(SysUtils|Classes|BGRAGraphics|BGRAClasses|BGRABitmapTypes|Math|Types|FPImgCanv|FPImage|fgl)\"/i' $DOCSPATH/GVUses.dot\nperl -ni -e 'print unless /\"(TObject)\"/i' $DOCSPATH/GVClasses.dot\n$DOT -Grankdir=LR -T svg $DOCSPATH/GVUses.dot > $DOCSPATH/GVUses.svg\n$DOT -Grankdir=LR -T svg $DOCSPATH/GVClasses.dot > $DOCSPATH/GVClasses.svg\n\necho Formatting HTML...\ncp navigation.js $DOCSPATH\nperl -i -pe '\n($filename) = $ARGV =~ m|([^/]+)\\.html$|;\ns|Classes, Interfaces, Objects and Records|Structures|;\ns|(<h2 class=\"description\">Description</h2>)|<script type=\"text/javascript\" src=\"navigation.js\"></script>\\n$1|;\ns|(<h1 class=\"allitems\">[\\w ]+</h1>)|$1\\n<script type=\"text/javascript\" src=\"navigation.js\"></script>|;\ns|(<h1 class=\"unit\">Unit ([A-Za-z][A-Za-z0-9_]+))</h1>|$1\\n<p class=\"float-boton\"><a class=\"boton\" href=\"https://github.com/bgrabitmap/bgrabitmap/blob/master/bgrabitmap/\\L$2\\E.pas\">📄 Source code</a></p></h1>|;\ns|<li><a href=\"AllIdentifiers.html\">Identifiers</a></li><li><a href=\"GVUses.svg\">Unit dependency graph</a></li><li><a href=\"GVClasses.svg\">Classes hierarchy graph</a></li>|<li><a href=\"AllIdentifiers.html\">All Identifiers</a></li>|;\ns|\"pasdoc\\.css\"|\"pasdoc.css?v=4\"|;\ns|href=\"\\Q$filename\\E.html#([^\"]+)\"|href=\"#$1\"|g;\n' $DOCSPATH/*.html\n\necho Adding buttons for graphs...\nperl -i -pe 's|(<h1 class=\"allitems\">All Units)</h1>|$1\\n<p class=\"float-boton\"><a class=\"boton\" href=\"GVUses.svg\">🔍 Dependency graph</a></p></h1>|' $DOCSPATH/AllUnits.html\nperl -i -pe 's|(<h1 class=\"allitems\">Class Hierarchy)</h1>|$1\\n<p class=\"float-boton\"><a class=\"boton\" href=\"GVClasses.svg\">🔍 Hierarchy graph</a></p></h1>|' $DOCSPATH/ClassHierarchy.html"
  },
  {
    "path": "doc/introduction.txt",
    "content": "@title(📚 Getting started)\n@shorttitle(Getting started)\n@section(1 SecFirst Introduction)\n\n[🏠 BGRABitmap](https://bgrabitmap.github.io/) is a package designed to modify and create images with transparency. Direct pixel access allows fast image processing. The library has been tested on Windows, Linux and Mac.\n\n@section(1 Install How to install)\n\nThere are various ways to install.\n\n- [Download source code](https://github.com/bgrabitmap/bgrabitmap/releases) and [configure your project](https://wiki.freepascal.org/BGRABitmap_tutorial_1).\n- Use [Online Package Manager](http://wiki.lazarus.freepascal.org/Online_Package_Manager) in Lazarus.\n- Get a fresh installation of Lazarus and BGRABitmap with [FPCUpDeluxe](http://wiki.lazarus.freepascal.org/fpcupdeluxe).\n\nThe source code can be browser on the [repository](https://github.com/bgrabitmap/bgrabitmap).\n\n@section(1 Start Quick start)\n\nInclude BGRABitmap and BGRABitmapTypes in the **uses** clause. If you are using LCL types, add also BGRAGraphics unit.\n\nCreate TBGRABitmap instances for each image. This class derives from TBGRACustomBitmap.\n\nThe **CanvasBGRA** property of type TBGRACanvas provides a canvas with opacity and [antialiasing](https://wiki.freepascal.org/BGRABitmap_tutorial_13).\n\nThe **Canvas2D** property of type TBGRACanvas2D provides a canvas with 2d transformation and [similar to HTML5](https://wiki.freepascal.org/BGRABitmap_tutorial_14).\n\nHere is a nice [introduction to BGRABitmap](https://msegui.net/tutoriels/bgrabitmap-lazarus/tutoriel.html) in French.\n\n@section(1 PixelFormats Pixel formats)\n\n- TBGRABitmap: sRGB, 8 bit per channel\n- TGrayscaleMask: linear 8 bit grayscale. It now has drawing functions, so you can prepare a mask in 8 bit per pixel, avoiding to consume memory\n- TExpandedBitmap: linear RGB, 16 bit per channel. It has more precision than TBGRABitmap and is linear, so that dmLinearBlend and dmDrawWithTransparency are equivalent.\n- TLinearRGBABitmap: linear RGB, 32 bit per channel (single precision float). It has even more precision. Not really recommended though as it uses a lot of memory.\n- TWordXYZABitmap: XYZ, 16 bit per channel. Can store any real and reflect color with great precision (see below for remarks about XYZ).\n- TXYZABitmap: XYZ, 32 bit per channel (single precision float). It has even more precision and also a wider range, so that it can store fluorescent colors and light sources that would otherwise saturate.\n\n@section(1 Resources More resources)\n\nYou can read more about BGRABitmap in the [wiki](http://wiki.freepascal.org/BGRABitmap). And also you can follow [tutorials](http://wiki.freepascal.org/BGRABitmap_tutorial) to learn how to use BGRABitmap.\n\nThere is also an [image transitions tutorial](https://gilles-vasseur.developpez.com/tutoriels/transitions/bgra1/) in French.\n\nLazarus forum has a [category](https://forum.lazarus.freepascal.org/index.php/board,46.0.html) for BGRABitmap. To report bugs, please check [issues](https://github.com/bgrabitmap/bgrabitmap/issues) on GitHub."
  },
  {
    "path": "doc/navigation.js",
    "content": "if (typeof mainNav === \"undefined\") {\n\tmainNav = document.getElementsByClassName(\"sections\")[0];\n\tif (!mainNav)\n\t{\n\t\tmainNav = document.getElementsByTagName(\"h1\")[0];\n\t\tmainNav.style.backgroundColor = \"white\";\n\t\tmainNav.style.width = \"98%\";\n\t}\n\n\tif (mainNav) {\n\t\tmainNav.style.position = \"fixed\";\n\t\tmainNav.style.top = 0;\n\n\t\tconst leftNavigation = document.getElementsByClassName(\"navigation\")[0];\n\t\tif (leftNavigation) {\n\t\t\tconst menuToggle = document.createElement(\"div\");\n\t\t\tmenuToggle.className = \"menu_toggle\";\n\t\t\tmainNav.insertBefore(menuToggle, mainNav.firstChild);\n\t\t\tmenuToggle.addEventListener('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (leftNavigation.style.display == \"none\") {\n\t\t\t\t\tleftNavigation.style.animation = \"fadeIn 0.5s ease-out forwards\";\n\t\t\t\t\tleftNavigation.style.position = \"fixed\";\n\t\t\t\t\tleftNavigation.style.margin = \"0\";\n\t\t\t\t\tleftNavigation.style.left = menuToggle.offsetLeft + \"px\";\n\t\t\t\t\tleftNavigation.style.top = (menuToggle.offsetTop + menuToggle.offsetHeight) + \"px\";\n\t\t\t\t\tleftNavigation.style.display = \"block\";\t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tleftNavigation.style.display = \"none\";\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tleftNavigation.style.display = \"none\";\n\t\t\tleftNavigation.style.zIndex = \"1000\";\n\t\t\t\n\t\t\tconst content = document.getElementsByClassName(\"content\")[0];\n\t\t\tcontent.style.paddingTop = (mainNav.offsetHeight + 4) + \"px\";\n\t\t\tcontent.style.margin = \"0\";\n\t\t}\n\t}\n}\n\nwindow.onload = function() {\t\t\n\twindow.scrollBy(0, -mainNav.offsetHeight - 6);\n\n\tconst title = document.getElementsByTagName(\"h1\")[0];\n\tconst isUnit = title && title.innerText.startsWith(\"Unit \");\n\tconst descriptionLocation = document.getElementById(\"PasDoc-Description\");\n\tif (title && descriptionLocation) title.appendChild(descriptionLocation);\n\t\n\tconst descriptionTitle = document.getElementsByClassName(\"description\")[0];\n\tif (descriptionTitle) {\t\t\n\t\tconst descriptionContent = [];\n\t\tlet curNode = descriptionTitle.nextSibling;\n\t\tdescriptionTitle.remove();\n\t\twhile (curNode && curNode.nodeName != \"SPAN\") {\n\t\t\tdescriptionContent.push(curNode);\n\t\t\tcurNode = curNode.nextSibling;\n\t\t}\n\t\tconst beforeNode = title.nextSibling;\n\t\tfor (const node of descriptionContent) {\n\t\t\ttitle.parentNode.insertBefore(node, beforeNode);\n\t\t}\n\t}\n\t\n\tif (!isUnit) {\n\t\tconst inUnitTitle = document.getElementsByClassName(\"unit\")[0];\n\t\tif (inUnitTitle) inUnitTitle.remove();\n\t\tconst unitLink = document.getElementsByClassName(\"unitlink\")[0];\n\t\tif (unitLink) {\n\t\t\tconst a = unitLink.getElementsByTagName(\"a\")[0];\n\t\t\tif (a) {\n\t\t\t\ta.innerHTML = \"🗎&nbsp;\" + a.innerHTML;\n\t\t\t}\n\t\t\tunitLink.style.float = \"right\";\n\t\t}\n\t}\n\t\n\t// DESPLAZAMIENTO SMOOTH SCROLL\n    const easeInCubic = function(t) { return 0.5 - Math.cos(t * Math.PI)/2 }\n\n    const scrollToElem = (start, stamp, duration, scrollEndElemTop, startScrollOffset) => {\n\n        const runtime = stamp - start;\n        let progress = runtime / duration;\n        const ease = easeInCubic(progress);\n\n        progress = Math.min(progress, 1);\n\n        const newScrollOffset = startScrollOffset + (scrollEndElemTop * ease);\n\n        if (runtime < duration) {\n\t\t\twindow.scroll(0, startScrollOffset + (scrollEndElemTop * ease));\n            requestAnimationFrame((timestamp) => {\n                const stamp = new Date().getTime();\n                scrollToElem(start, stamp, duration, scrollEndElemTop, startScrollOffset);\n            })\n        } else {\n\t\t    window.scroll(0, startScrollOffset + scrollEndElemTop);\n\t\t}\n    }\n\n    const scrollElems = document.getElementsByTagName(\"a\");\n    for (let i = 0; i < scrollElems.length; i++) {\n        const elem = scrollElems[i];\n\t\tif (!elem.getAttribute(\"href\").startsWith(\"#\")) continue;\n\n        elem.addEventListener('click', function(e) {\n            e.preventDefault();\n\t\t\tconst leftNavigation = document.getElementsByClassName(\"navigation\")[0];\n\t\t\tif (leftNavigation)\n\t\t\t\tleftNavigation.style.display = \"none\";\n\t\t\t\n            const scrollElemId = e.target.href.split('#')[1];\n            const scrollEndElem = document.getElementById(scrollElemId);\n\n            const anim = requestAnimationFrame(() => {\n                const stamp = new Date().getTime();\n                const duration = 500;\n                const start = stamp;\n\n                const startScrollOffset = window.pageYOffset;\n\n                const scrollEndElemTop = scrollEndElem.getBoundingClientRect().top - mainNav.offsetHeight - 6;\n\n                scrollToElem(start, stamp, duration, scrollEndElemTop, startScrollOffset);\n            })\n        })\n    }\n}\n"
  },
  {
    "path": "doc/pasdoc.cfg",
    "content": "title=BGRABitmap\nformat=html\nlanguage=en\nwrite-uses-list\nuse-tipue-search\nauto-abstract\nauto-link\ncss=$CFG_PATH/pasdoc.css\ndefine=FPC\ndefine=MSWINDOWS\ndefine=LCL\ndefine=WINDOWS\ndefine=CPU64\ndefine=FPC_FULLVERSION:=30202\ndefine=LAZ_FULLVERSION:=3000000\ndefine=LCL_FULLVERSION:=3000000\nvisible-members=protected,public,published,automated,implicit\nimplicit-visibility=public\nintroduction=$CFG_PATH/introduction.txt\nmarker=**\nmarker=*\nmarker-optional\nmarkdown\noutput=$CFG_PATH/web\nsort=structures,constants,functions,types,variables,non-record-fields,methods,properties\nsource=units.txt\ninclude=../bgrabitmap"
  },
  {
    "path": "doc/pasdoc.css",
    "content": "/*\n  Copyright 1998-2018 PasDoc developers.\n\n  This file is part of \"PasDoc\".\n\n  \"PasDoc\" is free software; you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by\n  the Free Software Foundation; either version 2 of the License, or\n  (at your option) any later version.\n\n  \"PasDoc\" is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  GNU General Public License for more details.\n\n  You should have received a copy of the GNU General Public License\n  along with \"PasDoc\"; if not, write to the Free Software\n  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\n\n  ----------------------------------------------------------------------------\n*/\n\nbody, html {\n  margin: 0;\n  padding: 0;\n}\n\nbody {\n  font-family: 'Open Sans', sans-serif;\n  font-size: 14px;\n  color: black;\n  background-color: white;\n}\n\np {\n\tcolor: #777;\n}\n\np strong { color: black; }\n\n.container {\n  width: 100%;\n  height: 100%;\n  border-spacing: 0;\n}\n\n@keyframes slideAndFade {\n  from {\n    /* Start from below the visible area and transparent */\n    top: 100vh;\n    opacity: 0;\n  }\n  to {\n    /* End at its normal position and fully opaque */\n    top: 50vh;\n    opacity: 1;\n\ttransform: translateY(-50%);\n  }\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n.navigation {\n  width: 15em; /* must match .content margin-left */\n  color: black;\n  background-color: #DFE;\n  position: fixed;\n  left: 0;\n  box-sizing: border-box; /* without this, you could not have padding here, it would overlap with .content, causing errors on narrow screens */\n  padding: 1em;\n  border-radius: 10px;\n  border: 1px solid #eee;\n  box-shadow: 5px 5px 5px rgb(0,0,0,0.15);\n  animation: slideAndFade 1s ease-out forwards;\n  margin: 0.25em;\n}\n\n.navigation ul {\n  margin: 0em;\n  padding: 0em;\n}\n.navigation li {\n  list-style-type: none;\n  margin: 0.2em 0em 0em 0em;\n  padding: 0.25em;\n}\n.navigation h2 {\n  text-align: left;\n  margin: 0em;\n  padding: 0.25em;\n  font-size: 14px;\n  font-weight: normal;\n}\n\n#tipue_search_input {\n  width: 8.5em;\n}\n\n#tipue_search_button {\n  background-color: #20bf6b;\n  cursor: pointer;\n  border-radius: 0 10px 10px 0;\n}\n\n#tipue_search_button:hover {\n  background-color: #40df8b;\n}\n\n.content {\n  margin-left: 15.5em;\n  padding: 2%;\n}\n.content h1 {\n  margin-top: 0;\n}\n\n@media (max-width: 800px) { \n  .container {\n    display: flex;\n\tflex-direction: column;\n  }\n  .navigation {\n\tposition: static;\n\tanimation: none;\n  }\n  .content {\n\tmargin-left: 0;\n  }\n}\n\n.appinfo {\n  float: right;\n  text-align: right;\n  margin-bottom: 1em;\n}\n\nimg { border:0px; }\n\nhr {\n  border-bottom: medium none;\n  border-top: thin solid #888;\n}\n\na:link {color:#3d578c; text-decoration: none; }\na:visited {color:#7E5C31; text-decoration: none; }\na:hover {text-decoration: underline; }\na:active {text-decoration: underline; }\n\np a:link { color: #00a285; }\np a:visited { color: #02d2b5; }\n\n.navigation a { display: inline-block; padding-left: 0; padding-right: 3px; }\n.navigation a:link { color: #666; text-decoration: none; }\n.navigation a:visited { color: #666; text-decoration: none; }\n.navigation a:hover { color: black; text-decoration: none; \n\tpadding-left: 3px; padding-right: 0; text-shadow: 5px 5px 5px rgb(0,0,0,0.25);\n    transition: all 0.3s ease-out; }\n.navigation a:active { color: #666; text-decoration: none; }\n\na.bold:link {color:#3d578c; text-decoration: none; font-weight:bold; }\na.bold:visited {color:#7E5C31; text-decoration: none; font-weight:bold; }\na.bold:hover {text-decoration: underline; font-weight:bold; }\na.bold:active {text-decoration: underline; font-weight:bold; }\n\na.section {color: #666; text-decoration: none; font-weight: bold; }\na.section:hover {color: #222; text-decoration: underline; font-weight: bold; }\n\n.float-boton {\n\tfloat: right;\n\tmargin-block-start: 0.15em;\n\tmargin-block-end: 0.15em;\n}\n\na.boton {\n    display: inline-block;\n\tfont-size: 14px;\n\tfont-weight: normal;\n    text-align: center;\n    color: #fff !important;\n    padding: 8px 20px;\n    background-color: #20bf6b;\n    border-radius: 35px;\n    border: 2px solid #20bf6b;\n    box-shadow: 0px 5px 18px rgba(0, 0, 0, .2);\n    transition: all 0.3s ease 0s;\n}\n\na.boton:hover {\n    color: #20bf6b !important;\n    background-color: transparent;\n    border-radius: 30px;\n    transition: all 0.3s ease 0s;\n    box-shadow: 0px 15px 18px rgba(32, 191, 107, 0.4);\n    transform: translateY(-6px);\n\ttext-decoration: none;\n}\n\nul.useslist a:link {color:#3d578c; text-decoration: none; font-weight:bold; }\nul.useslist a:visited {color:#7E5C31; text-decoration: none; font-weight:bold; }\nul.useslist a:hover {text-decoration: underline; font-weight:bold; }\nul.useslist a:active {text-decoration: underline; font-weight:bold; }\n\nul.hierarchy { list-style-type:none; }\nul.hierarchylevel { list-style-type:none; }\n\ntr.list { background: #f7f8fb; }\ntr.list2 { background: #fbfcff; }\ntr.listheader, .table_tag th { background: #20bf6b; color: white; }\ntr.listheader th, .table_tag th { border-radius: 10px 10px 0 0; }\n.table_tag th p { color: white; }\n\n.table_tag th p a:link { color: #def; }\n.table_tag th p a:visited { color: #cdf; }\n\n\ntable.wide_list { border-spacing:2px; width:100%; }\ntable.wide_list td { vertical-align:top; padding:4px; }\n\ntable.markerlegend { width:auto; }\ntable.markerlegend td.legendmarker { text-align:center; }\n\n.sections { \n  height: 5em;\n  width: 98%;\n  display: flex; /* Enable flexbox */\n  align-items: center; /* Center children vertically */\n  justify-content: center; /* Center children horizontally, optional */\n  flex-wrap: wrap;\n  background: white;\n}\n\n.sections .one_section {\n  display: inline-block;\n  margin: 0;\n  padding: 0 0.5em;\n  color: #bbb;\n}\n\n.sections .one_section a {\n  padding: 0.5em 0;\n  display: inline-block;\n  font-weight: normal;\n  border-bottom: 2px solid white;\n}\n\n.sections .one_section a:hover {\n  text-decoration: none;\n  border-bottom: 2px solid #20bf6b;\n}\n\n.menu_toggle {\n    display: inline-block;\n\tbackground-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"); \n\theight: 28px;\n\twidth: 28px;\n\tpadding: 0;\n    margin: 0;\n\tmargin-right: 0.5em;\n\tcursor: pointer;\n    color: #bbb;\n\tvertical-align: bottom; /* relative to text */\n}\n\ntable.summary td.itemcode { width:100%; }\ntable.detail td.itemcode { width:100%; border-radius: 0 10px 0 0; }\ntable.detail td.visibility { border-radius: 10px 0 0 0; }\n\ntd.itemname {white-space:nowrap; }\ntd.itemunit {white-space:nowrap; }\ntd.itemdesc { width:100%; }\n\n.nodescription, .inheritdescription { color: #c70; }\n.inheritdescription { display: none; }\ndl.parameters dt {\n  color:blue;\n}\n\ncode {\n  font-family: monospace;\n  font-size:1.2em;\n}\n\n/* style for warning and note tag */\ndl.tag.warning {\n  margin-left:-2px;\n  padding-left: 3px;\n  border-left:4px solid;\n  border-color: #FF0000;\n}\ndl.tag.note {\n  margin-left:-2px;\n  padding-left: 3px;\n  border-left:4px solid;\n  border-color: #D0C000;\n}\n\n/* Various browsers have various default styles for <h6>,\n   sometimes ugly for our purposes, so it's best to set things\n   like font-size and font-weight in out pasdoc.css explicitly. */\nh6.description_section {\n  /* font-size 100% means that it has the same font size as the\n     parent element, i.e. normal description text */\n  font-size: 100%;\n  font-weight: bold;\n  /* By default browsers usually have some large margin-bottom and\n     margin-top for <h1-6> tags. In our case, margin-bottom is\n     unnecessary, we want to visually show that description_section\n     is closely related to content below. In this situation\n     (where the font size is just as a normal text), smaller bottom\n     margin seems to look good. */\n  margin-top: 1.4em;\n  margin-bottom: 0em;\n}\n\n/* Style applied to Pascal code in documentation\n   (e.g. produced by @longcode tag) } */\n.longcode {\n  font-family: monospace;\n  font-size: 1.2em;\n  background-color: #eee;\n  padding: 0.5em;\n  border: thin solid #ccc;\n}\nspan.pascal_string { color: #000080; }\nspan.pascal_keyword { font-weight: bolder; }\nspan.pascal_comment { color: #000080; font-style: italic; }\nspan.pascal_compiler_comment { color: #008000; }\nspan.pascal_numeric { }\nspan.pascal_hex { }\n\np.hint_directive { color: red; }\n\ninput#search_text { }\ninput#search_submit_button { }\n\nacronym.mispelling { background-color: #f00; }\n\n/* Actually this reduces vertical space between *every* paragraph\n   inside list with @itemSpacing(compact).\n   While we would like to reduce this space only for the\n   top of 1st and bottom of last paragraph within each list item.\n   But, well, user probably will not do any paragraph breaks\n   within a list with @itemSpacing(compact) anyway, so it's\n   acceptable solution. */\nul.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }\nol.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }\ndl.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }\n\n/* Style for table created by @table tags\n*/\ntable.table_tag { border-collapse: none; }\ntable.table_tag td { border: none; padding: 0.3em; }\ntable.table_tag th { border: none; padding: 0.3em; }\ntable.table_tag tr:nth-child(odd) { background: #f4f4f8; }\ntable.table_tag tr:nth-child(even) { background: #fbfcff; }\n\ntable.detail {\n  border: 1pt solid #eee;\n  margin-top: 0.3em;\n  margin-bottom: 0.3em;\n  background: #fffeea;\n  border-radius: 10px;\n  border-spacing: 0;\n}\n\n.search-form { white-space: nowrap; }\n.search-input input { max-width: 80%; } /* this provides some safe space to always fit even on very narrow screens */\n.search-input input, .search-button { display: inline-block; vertical-align: middle; }\n.search-input { display: inline-block; }\n\n/* Do not make extra vertical space at the beginning/end of table cells.\n   We need \">\" selector, to not change paragraphs inside lists inside\n   table cells. */\ntable.table_tag td > p:first-child,\ntable.table_tag th > p:first-child,\n       td.itemdesc > p:first-child { margin-top: 0em; }\n\ntable.table_tag td > p:last-child,\ntable.table_tag th > p:last-child,\n       td.itemdesc > p:last-child { margin-bottom: 0em; }\n"
  },
  {
    "path": "doc/readme.md",
    "content": "## Generation of documentation\n\nTo generate the documentation, you will need [this fork](https://github.com/circular17/pasdoc) of pasdoc for it to work properly. The changes may be integrated in the future in the release of [pasdoc](https://github.com/pasdoc/pasdoc).\n\nCompile the console version of pasdoc and copy into the [/doc](https://github.com/bgrabitmap/bgrabitmap/tree/dev-bgrabitmap/doc) folder of bgrabitmap. Then run the script called `generate.sh` (on Linux and MacOS). There is as well a batch file `generate.bat` for Windows though it doesn't generate the charts.\n\nThe charts are generated using [Graphviz](https://graphviz.org/) with its `dot` command. Some units and classes are from the `.dot` files before generating the chart in order to make it readable. They are accessible in the generated HTML documentation with the left panel.\n\nThe scripts generates the HTML documentation in a subfolder called **web**. It is not archived in this repository, considering it would take up space, is bound to be regenerated anyway and will be stored in the [documentation website](https://github.com/bgrabitmap/bgrabitmap.github.io).\n"
  },
  {
    "path": "doc/units.txt",
    "content": "../bgrabitmap/avifbgra.pas\n../bgrabitmap/bgraanimatedgif.pas\n../bgrabitmap/bgraarrow.pas\n../bgrabitmap/bgrabitmap.pas\n../bgrabitmap/bgrabitmaptypes.pas\n../bgrabitmap/bgrablend.pas\n../bgrabitmap/bgrablurgl.pas\n../bgrabitmap/bgracanvas.pas\n../bgrabitmap/bgracanvas2d.pas\n../bgrabitmap/bgracanvasgl.pas\n../bgrabitmap/bgraclasses.pas\n../bgrabitmap/bgracolorint.pas\n../bgrabitmap/bgracolorquantization.pas\n../bgrabitmap/bgracompressablebitmap.pas\n../bgrabitmap/bgracoordpool3d.pas\n../bgrabitmap/bgracustomtextfx.pas\n../bgrabitmap/bgradefaultbitmap.pas\n../bgrabitmap/bgradithering.pas\n../bgrabitmap/bgradnetdeserial.pas\n../bgrabitmap/bgrafillinfo.pas\n../bgrabitmap/bgrafilterblur.pas\n../bgrabitmap/bgrafilters.pas\n../bgrabitmap/bgrafilterscanner.pas\n../bgrabitmap/bgrafiltertype.pas\n../bgrabitmap/bgrafontgl.pas\n../bgrabitmap/bgrafreetype.pas\n../bgrabitmap/bgragifformat.pas\n../bgrabitmap/bgragradientoriginal.pas\n../bgrabitmap/bgragradients.pas\n../bgrabitmap/bgragradientscanner.pas\n../bgrabitmap/bgragraphics.pas\n../bgrabitmap/bgragrayscalemask.pas\n../bgrabitmap/bgraiconcursor.pas\n../bgrabitmap/bgralayeroriginal.pas\n../bgrabitmap/bgralayers.pas\n../bgrabitmap/bgralazpaint.pas\n../bgrabitmap/bgralazresource.pas\n../bgrabitmap/bgralclbitmap.pas\n../bgrabitmap/bgralzpcommon.pas\n../bgrabitmap/bgramatrix3d.pas\n../bgrabitmap/bgramemdirectory.pas\n../bgrabitmap/bgramultifiletype.pas\n../bgrabitmap/bgraopengl.pas\n../bgrabitmap/bgraopengl3d.pas\n../bgrabitmap/bgraopengltype.pas\n../bgrabitmap/bgraopenraster.pas\n../bgrabitmap/bgrapaintnet.pas\n../bgrabitmap/bgrapalette.pas\n../bgrabitmap/bgrapapers.pas\n../bgrabitmap/bgrapath.pas\n../bgrabitmap/bgrapen.pas\n../bgrabitmap/bgraphongtypes.pas\n../bgrabitmap/bgraphoxo.pas\n../bgrabitmap/bgrapngcomn.pas\n../bgrabitmap/bgrapolygon.pas\n../bgrabitmap/bgrapolygonaliased.pas\n../bgrabitmap/bgrareadavif.pas\n../bgrabitmap/bgrareadbmp.pas\n../bgrabitmap/bgrareadbmpmiomap.pas\n../bgrabitmap/bgrareadgif.pas\n../bgrabitmap/bgrareadico.pas\n../bgrabitmap/bgrareadjpeg.pas\n../bgrabitmap/bgrareadlzp.pas\n../bgrabitmap/bgrareadpcx.pas\n../bgrabitmap/bgrareadpng.pas\n../bgrabitmap/bgrareadpsd.pas\n../bgrabitmap/bgrareadtga.pas\n../bgrabitmap/bgrareadtiff.pas\n../bgrabitmap/bgrareadwebp.pas\n../bgrabitmap/bgrareadxpm.pas\n../bgrabitmap/bgrarenderer3d.pas\n../bgrabitmap/bgraresample.pas\n../bgrabitmap/bgrascene3d.pas\n../bgrabitmap/bgrascenetypes.pas\n../bgrabitmap/bgraslicescaling.pas\n../bgrabitmap/bgraspritegl.pas\n../bgrabitmap/bgrasse.pas\n../bgrabitmap/bgrastreamlayers.pas\n../bgrabitmap/bgrasvg.pas\n../bgrabitmap/bgrasvgoriginal.pas\n../bgrabitmap/bgrasvgshapes.pas\n../bgrabitmap/bgrasvgtype.pas\n../bgrabitmap/bgratext.pas\n../bgrabitmap/bgratextbidi.pas\n../bgrabitmap/bgratextfx.pas\n../bgrabitmap/bgrathumbnail.pas\n../bgrabitmap/bgratransform.pas\n../bgrabitmap/bgratypewriter.pas\n../bgrabitmap/bgraunicode.pas\n../bgrabitmap/bgraunicodetext.pas\n../bgrabitmap/bgraunits.pas\n../bgrabitmap/bgrautf8.pas\n../bgrabitmap/bgravectorize.pas\n../bgrabitmap/bgrawinresource.pas\n../bgrabitmap/bgrawriteavif.pas\n../bgrabitmap/bgrawritebmp.pas\n../bgrabitmap/bgrawritebmpmiomap.pas\n../bgrabitmap/bgrawritejpeg.pas\n../bgrabitmap/bgrawritelzp.pas\n../bgrabitmap/bgrawritepcx.pas\n../bgrabitmap/bgrawritepng.pas\n../bgrabitmap/bgrawritetiff.pas\n../bgrabitmap/bgrawritewebp.pas\n../bgrabitmap/expandedbitmap.pas\n../bgrabitmap/linearrgbabitmap.pas\n../bgrabitmap/universaldrawer.pas\n../bgrabitmap/unzipperext.pas\n../bgrabitmap/wordxyzabitmap.pas\n../bgrabitmap/xyzabitmap.pas"
  },
  {
    "path": "libwebp/readme.md",
    "content": "# WebP Decoder DLLs for BGRABitmap\n\nThis package provides precompiled DLLs for decoding WebP images. These DLLs are compiled directly from the official [libwebp](https://github.com/webmproject/libwebp) C library, with no wrapper included. The actual WebP reader/writer integration is handled by [BGRABitmap](https://github.com/bgrabitmap/bgrabitmap).\n\n## 📦 Included Files\n\n- `libwebp32.dll` — 32-bit version (dynamically linked, `/MD`)\n- `libwebp64.dll` — 64-bit version (dynamically linked, `/MD`)\n- `libwebp32_static.dll` *(otherwise)* — 32-bit version with statically linked C++ runtime (`/MT`)\n- `libwebp64_static.dll` *(otherwise)* — 64-bit version with statically linked C++ runtime (`/MT`)\n\n## 🔍 Dynamic vs Static\n\n| DLL Name                | Architecture | Static Runtime | VC++ Redist Needed | Updatable | Notes                        |\n|-------------------------|--------------|----------------|--------------------|-----------|------------------------------|\n| `libwebp32.dll`           | 32-bit       | ❌             | ✅ Yes              | ✅ Yes    | Default 32-bit               |\n| `libwebp64.dll`           | 64-bit       | ❌             | ✅ Yes              | ✅ Yes    | Default 64-bit               |\n| `libwebp32_static.dll`    | 32-bit       | ✅ Yes         | ❌ No               | ❌ No     | Must be renamed if used      |\n| `libwebp64_static.dll`    | 64-bit       | ✅ Yes         | ❌ No               | ❌ No     | Must be renamed if used      |\n\n⚠️ If you use the static versions, you'll need to **rename** them to `libwebp32.dll` or `libwebp64.dll`, removing the suffix.\n\n## 💡 Recommendation\n\n- Use the **dynamic DLLs** (`libwebp32/64.dll`) if you want smaller files and automatic runtime updates (but VC++ redist is required).\n- Use the **static versions** if you want to ensure it works out of the box, even on systems without the runtime.\n\n## 🔧 Dependencies\n\nFor the dynamic versions, the following files must be present on the system:\n- `vcruntime140.dll`\n- `ucrtbase.dll`\n\nMost Windows 10/11 systems include them by default. If needed, you can download the official Visual C++ Redistributable here:\n\n📥 [https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist)\n\n### 🔁 Architecture-specific links:\n\n- For **64-bit systems**: https://aka.ms/vs/17/release/vc_redist.x64.exe  \n- For **32-bit systems**: https://aka.ms/vs/17/release/vc_redist.x86.exe\n\n## 🧪 Error Handling Example (Free Pascal / Lazarus)\n\nYou can add a simple check using a `try...except` block to handle missing dependencies gracefully:\n\n```pascal\nuses BGRABitmap;\n\ntry\n  bmp := TBGRABitmap.Create('image.webp');\n  try\n    // do something with the image    \n  except\n    // handle errors after the image is loaded\n  end;\n  Free;\nexcept\n  on E: Exception do\n    ShowMessage('Failed to load image. This library requires the Microsoft Visual C++ Redistributable.' + LineEnding +\n      'You can download it here:' + LineEnding +\n        {$IFDEF CPU64}'https://aka.ms/vs/17/release/vc_redist.x64.exe'\n        {$ELSE}       'https://aka.ms/vs/17/release/vc_redist.x86.exe'{$ENDIF});\nend;\n```\n"
  },
  {
    "path": "readme.md",
    "content": "List of directories:\n- bglcontrols: controls providing OpenGL surface with BGRABitmap\n- bgrabitmap: contains BGRABitmap library\n- dev: tools used to make BGRABitmap\n- doc: scripts to generate html documentation (uses [pasdoc](https://github.com/circular17/pasdoc) and [graphviz](https://graphviz.org/))\n- libwebp: contains the Dll of LibWebP for Windows\n- test: contains a series of test programs and examples on how to use BGRABitmap library\n- winmake: contains batch files for make under Windows\n\nFiles:\n- commit.sh: script to commit change from Linux terminal\n- Makefile: generate the code and compile. On Windows, you need to make sure that make.exe from FPC and lazutils.exe from Lazarus tools are in the PATH.\n- update_BGRABitmap.json: package information for OPM in Lazarus\n\nUseful binaries for Windows:\n- [WEBP Dlls](https://github.com/bgrabitmap/bgrabitmap/tree/master/libwebp)\n- [AVIF Dlls](https://github.com/bgrabitmap/bgrabitmap/files/12566323/libavif_windows_dlls_ver_1_0_1-1.zip)\n\n![BGRA Controls](doc/img/bgrabitmap.jpg)\n"
  },
  {
    "path": "test/bgraaggtest/aa_demo.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"5\">\n      <Unit0>\n        <Filename Value=\"aa_demo.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <CursorPos Y=\"15\"/>\n        <UsageCount Value=\"21\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"aa_demo_main\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"72\" Y=\"91\"/>\n        <UsageCount Value=\"21\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"244\"/>\n        <CursorPos X=\"69\" Y=\"259\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"497\"/>\n        <CursorPos Y=\"504\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"326\"/>\n        <CursorPos X=\"44\" Y=\"330\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n    </Units>\n    <JumpHistory Count=\"20\" HistoryIndex=\"19\">\n      <Position1>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"55\" Column=\"12\" TopLine=\"39\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"42\" TopLine=\"37\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"55\" Column=\"23\" TopLine=\"45\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"67\" Column=\"36\" TopLine=\"42\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"102\" Column=\"3\" TopLine=\"84\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"133\" Column=\"30\" TopLine=\"113\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"134\" TopLine=\"119\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"112\" Column=\"7\" TopLine=\"98\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"59\" Column=\"66\" TopLine=\"44\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"146\" Column=\"30\" TopLine=\"109\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"28\" TopLine=\"17\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"102\" Column=\"5\" TopLine=\"82\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"76\" Column=\"42\" TopLine=\"55\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"77\" Column=\"71\" TopLine=\"61\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"78\" Column=\"71\" TopLine=\"62\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"80\" Column=\"71\" TopLine=\"64\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"125\" Column=\"39\" TopLine=\"118\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"aa_demo_main.pas\"/>\n        <Caret Line=\"103\" Column=\"3\" TopLine=\"81\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <Caret Line=\"371\" Column=\"10\" TopLine=\"362\"/>\n      </Position20>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"aa_demo\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/aa_demo.lpr",
    "content": "program aa_demo;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, aa_demo_main, bgrabitmappack\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/aa_demo_main.lfm",
    "content": "object Form1: TForm1\n  Left = 516\n  Height = 429\n  Top = 160\n  Width = 557\n  Caption = 'BGRA Antialiasing demo'\n  ClientHeight = 429\n  ClientWidth = 557\n  OnCreate = FormCreate\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  Position = poDefaultPosOnly\n  LCLVersion = '1.4.0.4'\n  object Panel1: TPanel\n    Left = 88\n    Height = 55\n    Top = 374\n    Width = 469\n    Anchors = [akLeft, akRight, akBottom]\n    ClientHeight = 55\n    ClientWidth = 469\n    TabOrder = 0\n    object Label1: TLabel\n      Left = 4\n      Height = 15\n      Top = 2\n      Width = 46\n      Caption = 'Pixel size'\n      ParentColor = False\n    end\n    object TrackBar_PixelSize: TTrackBar\n      Left = 4\n      Height = 25\n      Top = 21\n      Width = 373\n      Frequency = 4\n      Max = 100\n      Min = 8\n      OnChange = TrackBar_PixelSizeChange\n      Position = 32\n      Anchors = [akTop, akLeft, akRight]\n      TabOrder = 0\n    end\n    object Label_PixelSizeValue: TLabel\n      Left = 56\n      Height = 15\n      Top = 2\n      Width = 16\n      Caption = '= ?'\n      ParentColor = False\n    end\n    object Label2: TLabel\n      Left = 383\n      Height = 15\n      Top = 2\n      Width = 76\n      Anchors = [akTop, akRight]\n      Caption = 'Gamma factor'\n      ParentColor = False\n    end\n    object SpinEdit_Gamma: TFloatSpinEdit\n      Left = 392\n      Height = 23\n      Top = 22\n      Width = 66\n      Anchors = [akTop, akRight]\n      DecimalPlaces = 1\n      Increment = 0.1\n      MaxValue = 3\n      MinValue = 0.1\n      OnChange = SpinEdit_GammaChange\n      TabOrder = 1\n      Value = 1.7\n    end\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/aa_demo_main.pas",
    "content": "unit aa_demo_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,\n  ExtCtrls, StdCtrls, BGRABitmapTypes, BGRABitmap, lmessages, Spin;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    SpinEdit_Gamma: TFloatSpinEdit;\n    Label1: TLabel;\n    Label2: TLabel;\n    Label_PixelSizeValue: TLabel;\n    Panel1: TPanel;\n    TrackBar_PixelSize: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormPaint(Sender: TObject);\n    procedure SpinEdit_GammaChange(Sender: TObject);\n    procedure TrackBar_PixelSizeChange(Sender: TObject);\n    procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n  private\n    { private declarations }\n  public\n    { public declarations }\n    pts: array[0..2] of TPointF;\n    formLoaded: boolean;\n    MovingPointIndex: integer;\n    MovingOrigin: TPointF;\n  end; \n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nprocedure NicePoint(bmp: TBGRABitmap; x, y: single);\nbegin\n    bmp.EllipseAntialias(x,y,4,4,BGRA(0,0,0,192),1);\n    bmp.EllipseAntialias(x,y,3,3,BGRA(255,255,255,192),1);\n    bmp.EllipseAntialias(x,y,2,2,BGRA(0,0,0,192),1);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar zoomTx,zoomTy,tx,ty,pixSize: integer;\n    bmp,bmpPreview: TBGRABitmap;\n    i: Integer;\n    x,y: integer;\n\n  function coordToBmp(pt: TPointF): TPointF;\n  begin\n      result := (pt+PointF(0.5,0.5))*(1/pixSize)-PointF(0.5,0.5);\n  end;\n\nbegin\n  zoomTx := ClientWidth;\n  zoomTy := Panel1.Top;\n  pixSize := TrackBar_PixelSize.Position;\n  tx := (zoomTx+pixSize-1) div pixSize;\n  ty := (zoomTy+pixSize-1) div pixSize;\n\n  //draw triangle\n  bmp := TBGRABitmap.Create(tx,ty,BGRAWhite);\n  bmp.FillPolyAntialias([coordToBmp(pts[0]),coordToBmp(pts[1]),coordToBmp(pts[2])],BGRABlack);\n\n  //draw lower-left preview\n  bmpPreview := TBGRABitmap.Create(panel1.left,panel1.height,BGRAWhite);\n  x := (bmpPreview.Width-bmp.width) div 2;\n  y := (bmpPreview.Height-bmp.Height) div 2;\n  if x < 1 then x := 1;\n  if y < 1 then y := 1;\n  bmpPreview.Rectangle(x-1,y-1,x+bmp.width+1,y+bmp.height+1,BGRA(255,0,0),dmSet);\n  bmpPreview.PutImage(x,y,bmp,dmSet);\n  bmpPreview.Draw(Canvas,0,panel1.top);\n  bmpPreview.Free;\n\n  //zoom\n  BGRAReplace(bmp,bmp.Resample(tx*pixSize,ty*pixSize,rmSimpleStretch));\n\n  bmp.DrawPolygonAntialias(pts,BGRA(0,128,128,192),1);\n  for i := 0 to 2 do\n    NicePoint(bmp,pts[i].x,pts[i].y);\n  BGRAReplace(bmp,bmp.GetPart(rect(0,0,zoomTx,zoomTy)));\n  bmp.Draw(Canvas,0,0);\n\n  bmp.free;\nend;\n\nprocedure TForm1.SpinEdit_GammaChange(Sender: TObject);\nbegin\n  if formLoaded then\n  begin\n    BGRASetGamma(SpinEdit_Gamma.Value);\n    Invalidate;\n  end;\nend;\n\nprocedure TForm1.TrackBar_PixelSizeChange(Sender: TObject);\nbegin\n  Label_PixelSizeValue.Caption := '= ' + IntToStr(TrackBar_PixelSize.Position);\n  Invalidate;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  pts[0] := PointF(57,100);\n  pts[1] := PointF(369,170);\n  pts[2] := PointF(143,310);\n  Label_PixelSizeValue.Caption := '= ' + IntToStr(TrackBar_PixelSize.Position);\n  MovingPointIndex := -1;\n  SpinEdit_Gamma.Value := BGRAGetGamma;\n  formLoaded := true;\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar maxDist,dist: single;\n    mousePos,vect: TPointF;\n    i: Integer;\nbegin\n  if Button <> mbLeft then exit;\n\n  //select point to move\n  MovingPointIndex := -1;\n  maxDist := 10;\n  mousePos := PointF(X,Y);\n  MovingOrigin := mousePos;\n\n  for i := 0 to high(pts) do\n  begin\n    vect := pts[i] - mousePos;\n    dist := sqrt(vect*vect);\n    if dist < maxDist then\n    begin\n      maxDist := dist;\n      MovingPointIndex := i;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  mousePos: TPointF;\n  i: Integer;\nbegin\n  if ssLeft in Shift then\n  begin\n    mousePos := PointF(X,Y);\n    if MovingPointIndex <> -1 then\n      pts[MovingPointIndex].Offset(mousePos-MovingOrigin) else\n    begin\n      for i := 0 to high(pts) do\n        pts[i].Offset(mousePos-MovingOrigin);\n    end;\n    Invalidate;\n    MovingOrigin := mousePos;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then MovingPointIndex := -1;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/alpha_gradient.lpi",
    "content": "<?xml version=\"1.0\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n      <ActiveWindowIndexAtStart Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"alpha_gradient.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"alpha_gradient\"/>\n        <UsageCount Value=\"20\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"alpha_gradient_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"0\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"110\"/>\n        <CursorPos X=\"98\" Y=\"133\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n    </Units>\n    <JumpHistory Count=\"12\" HistoryIndex=\"11\">\n      <Position1>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"63\" Column=\"24\" TopLine=\"31\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"67\" Column=\"11\" TopLine=\"47\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"68\" Column=\"20\" TopLine=\"45\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"32\" Column=\"26\" TopLine=\"22\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"71\" Column=\"22\" TopLine=\"53\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"84\" Column=\"20\" TopLine=\"57\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"41\" Column=\"57\" TopLine=\"19\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"118\" Column=\"31\" TopLine=\"92\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"56\" Column=\"13\" TopLine=\"38\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"99\" Column=\"84\" TopLine=\"81\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"114\" Column=\"47\" TopLine=\"94\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"alpha_gradient_main.pas\"/>\n        <Caret Line=\"34\" Column=\"1\" TopLine=\"22\"/>\n      </Position12>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"alpha_gradient\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <CompilerPath Value=\"$(CompPath)\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/alpha_gradient.lpr",
    "content": "program alpha_gradient;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, alpha_gradient_main, bgrabitmappack\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/alpha_gradient_main.lfm",
    "content": "object Form1: TForm1\n  Left = 541\n  Height = 389\n  Top = 140\n  Width = 564\n  Caption = 'BGRA Alpha gradient'\n  OnCreate = FormCreate\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  Position = poDefaultPosOnly\n  LCLVersion = '0.9.30'\nend\n"
  },
  {
    "path": "test/bgraaggtest/alpha_gradient_main.pas",
    "content": "unit alpha_gradient_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics,\n  Dialogs, BGRABitmapTypes, BGRABitmap, LMessages;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    procedure FormCreate(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormPaint(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n    ellipses: array of record\n                x,y,w,h: integer;\n                c: TBGRAPixel;\n              end;\n\n    pts: array[0..2] of TPointF;\n    MovingPointIndex: integer;\n    MovingOrigin: TPointF;\n    procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\nuses BGRAGradientScanner, BGRATransform;\n\nprocedure NicePoint(bmp: TBGRABitmap; x, y: single);\nbegin\n    bmp.EllipseAntialias(x,y,4,4,BGRA(0,0,0,192),1);\n    bmp.EllipseAntialias(x,y,3,3,BGRA(255,255,255,192),1);\n    bmp.EllipseAntialias(x,y,2,2,BGRA(0,0,0,192),1);\nend;\n\n{$R *.lfm}\n\ntype\n\n  { TMultiplyGradient }\n\n  TMultiplyGradient = class(TBGRACustomScanner)\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n  end;\n\n{ TMultiplyGradient }\n\nfunction TMultiplyGradient.ScanAt(X, Y: Single): TBGRAPixel;\nvar fvalue: single;\n    value: integer;\nbegin\n  fvalue := abs(x*y*255);\n  if fvalue > 255 then\n    value := 255\n  else\n    value := round(fvalue);\n\n  result := BGRA(value,value,value,255);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar\n  i: Integer;\nbegin\n  setlength(ellipses,100);\n  for i := 0 to high(ellipses) do\n    with ellipses[i] do\n    begin\n      x := random(65536);\n      y := random(65536);\n      w := random(100)+5;\n      h := random(100)+5;\n      c := BGRA(random(256),random(256),random(256),random(128)+64);\n    end;\n\n  pts[0] := PointF(250,200);\n  pts[1] := PointF(300,150);\n  pts[2] := PointF(300,250);\n  MovingPointIndex := -1;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nconst ellipseRadius = 160;\nvar bmp: TBGRABitmap;\n    tx,ty: integer;\n    i: Integer;\n    ellipseLayer: TBGRABitmap;\n    gradient: TBGRAGradientScanner;\n    multigrad: TBGRAMultiGradient;\n    affine: TBGRAAffineScannerTransform;\n    multiply: TMultiplyGradient;\n    mask: TBGRABitmap;\n    ellipseLayerOffset: TPointF;\nbegin\n  tx := ClientWidth;\n  ty := ClientHeight;\n  if (tx=0) or (ty=0) then exit;\n\n  //create background\n  bmp := TBGRABitmap.Create(tx,ty, BGRAWhite);\n  for i := 0 to high(ellipses) do\n  with ellipses[i] do\n    bmp.FillEllipseAntialias(x mod tx,y mod ty,w/2,h/2,c);\n\n  //create center red-yellow ellipse\n  ellipseLayerOffset := PointF((tx-(2*ellipseRadius+1))/2,(ty-(2*ellipseRadius+1))/2);\n  ellipseLayer := TBGRABitmap.Create(2*ellipseRadius +1 + 1,2*ellipseRadius +1 +1);\n  multiGrad := TBGRAMultiGradient.Create([BGRA(0,64,0),BGRA(160,160,0),BGRA(128,0,0)],[0,1/2,1],True);\n  gradient := TBGRAGradientScanner.Create(multiGrad,gtRadial,PointF(0,0),PointF(1,0));\n  affine := TBGRAAffineScannerTransform.Create(gradient);\n  affine.Scale(ellipseRadius*1.2,ellipseRadius*0.8);\n  affine.RotateDeg(30);\n  affine.Translate(ellipseRadius+frac(ellipseLayerOffset.X),ellipseRadius+frac(ellipseLayerOffset.Y));\n  ellipseLayer.FillEllipseAntialias(ellipseRadius+frac(ellipseLayerOffset.X),ellipseRadius+frac(ellipseLayerOffset.Y),\n         ellipseRadius,ellipseRadius,BGRA(192,128,0));\n  ellipseLayer.FillEllipseAntialias(ellipseRadius+frac(ellipseLayerOffset.X),ellipseRadius+frac(ellipseLayerOffset.Y),\n         ellipseRadius,ellipseRadius,affine);\n  affine.Free;\n  gradient.Free;\n  multiGrad.Free;\n\n  //apply multiply mask\n  multiply := TMultiplyGradient.Create;\n  affine := TBGRAAffineScannerTransform.Create(multiply);\n  affine.Fit(pts[0],pts[1],pts[2]);\n  affine.Translate(-trunc(ellipseLayerOffset.X),-trunc(ellipseLayerOffset.Y));\n  mask := TBGRABitmap.Create(ellipseLayer.Width,ellipseLayer.Height);\n  mask.Fill(affine);\n  ellipseLayer.ApplyMask(mask);\n  mask.Free;\n  affine.Free;\n  multiply.Free;\n\n  bmp.PutImage(trunc(ellipseLayerOffset.X),trunc(ellipseLayerOffset.Y),ellipseLayer,dmDrawWithTransparency);\n  ellipseLayer.Free;\n\n  for i := 0 to 2 do\n    NicePoint(bmp,pts[i].x,pts[i].y);\n\n  bmp.Draw(Canvas,0,0);\n  bmp.Free;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar maxDist,dist: single;\n    mousePos,vect: TPointF;\n    i: Integer;\nbegin\n  if Button <> mbLeft then exit;\n\n  //select point to move\n  MovingPointIndex := -1;\n  maxDist := 10;\n\n  mousePos := PointF(X,Y);\n  for i := 0 to 2 do\n  begin\n    vect := pts[i] - mousePos;\n    dist := sqrt(vect*vect);\n    if dist < maxDist then\n    begin\n      maxDist := dist;\n      MovingPointIndex := i;\n      MovingOrigin := mousePos;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  mousePos: TPointF;\nbegin\n  if MovingPointIndex <> -1 then\n  begin\n    mousePos := PointF(X,Y);\n    pts[MovingPointIndex].Offset(mousePos-MovingOrigin);\n    Invalidate;\n    MovingOrigin := mousePos;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then MovingPointIndex := -1;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/blur.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"etpackage\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"6\">\n      <Unit0>\n        <Filename Value=\"blur.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UsageCount Value=\"23\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"blur_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"blur_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <TopLine Value=\"70\"/>\n        <CursorPos X=\"24\" Y=\"72\"/>\n        <UsageCount Value=\"23\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"3215\"/>\n        <CursorPos X=\"32\" Y=\"3218\"/>\n        <UsageCount Value=\"12\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"36\"/>\n        <CursorPos X=\"10\" Y=\"47\"/>\n        <UsageCount Value=\"12\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\blurfast.inc\"/>\n        <EditorIndex Value=\"4\"/>\n        <TopLine Value=\"78\"/>\n        <CursorPos X=\"32\" Y=\"121\"/>\n        <UsageCount Value=\"12\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"..\\bgrabitmap\\blurnormal.inc\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"215\"/>\n        <CursorPos X=\"73\" Y=\"234\"/>\n        <UsageCount Value=\"12\"/>\n        <Loaded Value=\"True\"/>\n      </Unit5>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"368\" TopLine=\"356\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"369\" TopLine=\"356\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"370\" TopLine=\"356\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"371\" TopLine=\"356\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"372\" TopLine=\"356\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"..\\bgrabitmap\\blurfast.inc\"/>\n        <Caret Line=\"124\" Column=\"24\" TopLine=\"113\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"..\\bgrabitmap\\blurfast.inc\"/>\n        <Caret Line=\"95\" Column=\"36\" TopLine=\"72\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"..\\bgrabitmap\\blurfast.inc\"/>\n        <Caret Line=\"105\" Column=\"42\" TopLine=\"102\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"513\" Column=\"24\" TopLine=\"493\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"520\" Column=\"23\" TopLine=\"501\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"522\" Column=\"53\" TopLine=\"501\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"520\" Column=\"46\" TopLine=\"502\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"527\" Column=\"27\" TopLine=\"509\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"559\" Column=\"30\" TopLine=\"502\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"527\" Column=\"38\" TopLine=\"509\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"..\\bgrabitmap\\blurnormal.inc\"/>\n        <Caret Line=\"218\" Column=\"17\" TopLine=\"209\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"527\" Column=\"16\" TopLine=\"514\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"484\" TopLine=\"471\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"578\" Column=\"35\" TopLine=\"569\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"581\" Column=\"45\" TopLine=\"494\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"519\" Column=\"23\" TopLine=\"506\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"518\" Column=\"16\" TopLine=\"506\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"519\" TopLine=\"506\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"521\" TopLine=\"506\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"523\" TopLine=\"506\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"516\" Column=\"12\" TopLine=\"506\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"520\" TopLine=\"506\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <Caret Line=\"524\" TopLine=\"506\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"blur_main.pas\"/>\n        <Caret Line=\"36\" TopLine=\"30\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"blur_main.pas\"/>\n        <Caret Line=\"9\" Column=\"72\" TopLine=\"5\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"blur\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/blur.lpr",
    "content": "program blur;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, blur_main, bgrabitmappack, etpackage\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/blur_main.lfm",
    "content": "object Form1: TForm1\n  Left = 657\n  Height = 348\n  Top = 144\n  Width = 536\n  Caption = 'BGRA Blur'\n  ClientHeight = 348\n  ClientWidth = 536\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  Position = poDefaultPosOnly\n  LCLVersion = '1.4.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 100\n    Top = 248\n    Width = 536\n    Anchors = [akLeft, akRight, akBottom]\n    ClientHeight = 100\n    ClientWidth = 536\n    Color = clForm\n    ParentColor = False\n    TabOrder = 0\n    object TrackBar_BlurRadiusX: TTrackBar\n      Left = 152\n      Height = 25\n      Top = 24\n      Width = 353\n      Frequency = 10\n      Max = 400\n      OnChange = TrackBar_BlurRadiusChange\n      Position = 150\n      Anchors = [akTop, akLeft, akRight]\n      TabOrder = 0\n    end\n    object Label_RadiusX: TLabel\n      Left = 160\n      Height = 15\n      Top = 8\n      Width = 66\n      Caption = 'Blur radius X'\n    end\n    object Label2: TLabel\n      Left = 8\n      Height = 15\n      Top = 8\n      Width = 47\n      Caption = 'Blur type'\n    end\n    object Radio_Fast: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 41\n      Width = 41\n      Caption = 'Fast'\n      Checked = True\n      OnChange = Radio_Change\n      TabOrder = 1\n      TabStop = True\n    end\n    object Radio_Corona: TRadioButton\n      Left = 72\n      Height = 19\n      Top = 24\n      Width = 59\n      Caption = 'Corona'\n      OnChange = Radio_Change\n      TabOrder = 3\n    end\n    object Radio_Disk: TRadioButton\n      Left = 72\n      Height = 19\n      Top = 41\n      Width = 42\n      Caption = 'Disk'\n      OnChange = Radio_Change\n      TabOrder = 4\n    end\n    object Radio_Motion: TRadioButton\n      Left = 72\n      Height = 19\n      Top = 58\n      Width = 59\n      Caption = 'Motion'\n      OnChange = Radio_Change\n      TabOrder = 5\n    end\n    object Radio_Radial: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 58\n      Width = 52\n      Caption = 'Radial'\n      OnChange = Radio_Change\n      TabOrder = 6\n    end\n    object Label_RadiusValueX: TLabel\n      Left = 235\n      Height = 15\n      Top = 8\n      Width = 16\n      Caption = '= ?'\n    end\n    object Radio_Box: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 24\n      Width = 40\n      Caption = 'Box'\n      OnChange = Radio_Change\n      TabOrder = 2\n    end\n    object TrackBar_BlurRadiusY: TTrackBar\n      Left = 152\n      Height = 25\n      Top = 72\n      Width = 353\n      Frequency = 10\n      Max = 400\n      OnChange = TrackBar_BlurRadiusChange\n      Position = 150\n      Anchors = [akTop, akLeft, akRight]\n      TabOrder = 7\n    end\n    object Label_RadiusY: TLabel\n      Left = 160\n      Height = 15\n      Top = 56\n      Width = 66\n      Caption = 'Blur radius Y'\n    end\n    object Label_RadiusValueY: TLabel\n      Left = 235\n      Height = 15\n      Top = 56\n      Width = 16\n      Caption = '= ?'\n    end\n    object Radio_OrientedMotion: TRadioButton\n      Left = 72\n      Height = 19\n      Top = 75\n      Width = 66\n      Caption = 'Oriented'\n      OnChange = Radio_Change\n      TabOrder = 8\n    end\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/blur_main.pas",
    "content": "unit blur_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,\n  ExtCtrls, StdCtrls, BGRABitmap, BGRAClasses, BGRABitmapTypes, EpikTimer, LMessages,\n  BGRAGrayscaleMask;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Label_RadiusValueY: TLabel;\n    Label_RadiusX: TLabel;\n    Label2: TLabel;\n    Label_RadiusY: TLabel;\n    Label_RadiusValueX: TLabel;\n    Panel1: TPanel;\n    Radio_Box: TRadioButton;\n    Radio_Motion: TRadioButton;\n    Radio_Fast: TRadioButton;\n    Radio_Corona: TRadioButton;\n    Radio_Disk: TRadioButton;\n    Radio_OrientedMotion: TRadioButton;\n    Radio_Radial: TRadioButton;\n    TrackBar_BlurRadiusX: TTrackBar;\n    TrackBar_BlurRadiusY: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);\n    procedure FormPaint(Sender: TObject);\n    procedure Radio_Change(Sender: TObject);\n    procedure TrackBar_BlurRadiusChange(Sender: TObject);\n    procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n  private\n    { private declarations }\n    procedure UpdateLabelRadius;\n  public\n    { public declarations }\n    image: TBGRABitmap;\n    shadowBase: TGrayscaleMask;\n    timer : TEpikTimer;\n    movingShadow: boolean;\n    movingOrigin,shadowOfs: TPoint;\n  end; \n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nfunction ComputeAngle(dx, dy: single): single;\nbegin\n     if dy = 0 then\n     begin\n       if dx < 0 then result := 180 else result := 0;\n     end else\n     if dx = 0 then\n     begin\n       if dy < 0 then result := -90 else result := 90;\n     end else\n     begin\n       result := ArcTan(dy/dx)*180/Pi;\n       if dx < 0 then IncF(result, 180);\n     end;\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp: TBGRABitmap;\n    ombre: TGrayscaleMask;\n    x,y,tx,ty: integer;\n    blurType: TRadialBlurType;\n    radiusX,radiusY,len: single;\nbegin\n  tx := clientWidth;\n  ty := Panel1.Top;\n  bmp := TBGRABitmap.Create(tx,ty,BGRAWhite);\n  x := (tx-image.Width) div 2;\n  y := (ty-image.Height) div 2;\n\n  radiusX := TrackBar_BlurRadiusX.Position/10;\n  radiusY := TrackBar_BlurRadiusY.Position/10;\n\n  timer.Clear;\n  timer.Start;\n  if Radio_Motion.Checked or Radio_OrientedMotion.Checked then\n  begin\n    len := sqrt(sqr(radiusX)+sqr(radiusY));\n    ombre := shadowBase.FilterBlurMotion(len*2,ComputeAngle(radiusX,radiusY),Radio_OrientedMotion.Checked) as TGrayscaleMask;\n  end else\n  begin\n    if Radio_Box.Checked then\n    begin\n      blurType := rbBox;\n      ombre := shadowBase.FilterBlurRadial(radiusX,radiusY,blurType) as TGrayscaleMask;\n    end else\n    begin\n      if Radio_Fast.Checked then blurType := rbFast else\n      if Radio_Corona.Checked then blurType := rbCorona else\n      if Radio_Disk.Checked then blurType := rbDisk else\n      if Radio_Radial.Checked then blurType := rbNormal;\n      ombre := shadowBase.FilterBlurRadial(radiusX,radiusY,blurType) as TGrayscaleMask;\n    end;\n  end;\n  timer.Stop;\n  ombre.Rectangle(0,0,ombre.width,ombre.height,TByteMask.New(128));\n  bmp.FillMask(x+shadowOfs.x,y+shadowOfs.y,ombre,BGRA(64,128,64), dmDrawWithTransparency);\n  ombre.free;\n\n  bmp.PutImage(x,y,image,dmDrawWithTransparency);\n  bmp.TextOut(0,0,inttostr(round(timer.Elapsed*1000))+' ms',BGRABlack);\n  bmp.Draw(Canvas,0,0);\n  bmp.Free;\nend;\n\nprocedure TForm1.Radio_Change(Sender: TObject);\nbegin\n  Invalidate;\nend;\n\nprocedure TForm1.TrackBar_BlurRadiusChange(Sender: TObject);\nbegin\n  UpdateLabelRadius;\n  Repaint;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.UpdateLabelRadius;\nbegin\n  Label_RadiusValueX.Caption := '= '+FloatToStrF(TrackBar_BlurRadiusX.Position/10,ffFixed,7,1);\n  Label_RadiusValueY.Caption := '= '+FloatToStrF(TrackBar_BlurRadiusY.Position/10,ffFixed,7,1);\n  Label_RadiusValueX.Update;\n  Label_RadiusValueY.Update;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  image := TBGRABitmap.Create(160,200);\n  image.FontName := 'Times New Roman';\n  image.FontHeight := 300;\n  image.FontAntialias:= true;\n  image.TextOut(image.Width div 2,-100,'a',BGRA(128,192,128,255),taCenter);\n  shadowBase := TGrayscaleMask.Create(image, cAlpha);\n  UpdateLabelRadius;\n  timer := TEpikTimer.Create(Self);\n  shadowOfs := Point(10,10);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  image.free;\n  shadowBase.free;\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then\n  begin\n    movingOrigin := Point(X,Y);\n    movingShadow := true;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nbegin\n  if movingShadow then\n  begin\n    inc(shadowOfs.x, X-movingOrigin.X);\n    inc(shadowOfs.y, Y-movingOrigin.Y);\n    movingOrigin := Point(X,Y);\n    Invalidate;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then\n    movingShadow:= false;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/bspline.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"50\">\n      <Unit0>\n        <Filename Value=\"bspline.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UsageCount Value=\"85\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"bspline_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <TopLine Value=\"132\"/>\n        <CursorPos X=\"31\" Y=\"150\"/>\n        <UsageCount Value=\"85\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"568\"/>\n        <CursorPos X=\"18\" Y=\"589\"/>\n        <UsageCount Value=\"40\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"930\"/>\n        <CursorPos X=\"46\" Y=\"949\"/>\n        <UsageCount Value=\"42\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"68\"/>\n        <CursorPos X=\"10\" Y=\"87\"/>\n        <UsageCount Value=\"42\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"23\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"..\\bgrabitmap\\bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"732\"/>\n        <CursorPos Y=\"753\"/>\n        <UsageCount Value=\"38\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"D:\\lazarus\\lcl\\graphics.pp\"/>\n        <TopLine Value=\"82\"/>\n        <CursorPos X=\"3\" Y=\"95\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"..\\bgrabitmap\\bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2560\"/>\n        <CursorPos X=\"21\" Y=\"2570\"/>\n        <UsageCount Value=\"39\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\objpas\\math.pp\"/>\n        <TopLine Value=\"175\"/>\n        <CursorPos X=\"10\" Y=\"193\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"234\"/>\n        <CursorPos X=\"20\" Y=\"253\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit10>\n      <Unit11>\n        <Filename Value=\"..\\bgrabitmap\\csscolorconst.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit11>\n      <Unit12>\n        <Filename Value=\"..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"29\"/>\n      </Unit12>\n      <Unit13>\n        <Filename Value=\"..\\bgrabitmap\\bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"39\"/>\n        <CursorPos X=\"3\" Y=\"58\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit13>\n      <Unit14>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"14\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit14>\n      <Unit15>\n        <Filename Value=\"C:\\lazarus\\lcl\\graphtype.pp\"/>\n        <TopLine Value=\"23\"/>\n        <CursorPos X=\"5\" Y=\"42\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit15>\n      <Unit16>\n        <Filename Value=\"C:\\lazarus\\lcl\\graphics.pp\"/>\n        <TopLine Value=\"153\"/>\n        <CursorPos X=\"3\" Y=\"172\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit16>\n      <Unit17>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\objpas\\types.pp\"/>\n        <TopLine Value=\"276\"/>\n        <CursorPos X=\"10\" Y=\"295\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit17>\n      <Unit18>\n        <Filename Value=\"C:\\lazarus\\lcl\\include\\customcontrol.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"65\"/>\n        <CursorPos Y=\"79\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit18>\n      <Unit19>\n        <Filename Value=\"..\\bgrabitmap\\bgragifformat.pas\"/>\n        <CursorPos X=\"26\" Y=\"8\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit19>\n      <Unit20>\n        <Filename Value=\"..\\bgrabitmap\\bgracustombitmap.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"62\"/>\n        <UsageCount Value=\"27\"/>\n      </Unit20>\n      <Unit21>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpwritepcx.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"60\"/>\n        <CursorPos X=\"79\" Y=\"78\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit21>\n      <Unit22>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpimage.pp\"/>\n        <TopLine Value=\"530\"/>\n        <CursorPos X=\"11\" Y=\"549\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit22>\n      <Unit23>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpreadpcx.pas\"/>\n        <CursorPos Y=\"2\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit23>\n      <Unit24>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpwritexpm.pp\"/>\n        <TopLine Value=\"5\"/>\n        <CursorPos X=\"3\" Y=\"24\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit24>\n      <Unit25>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fphandler.inc\"/>\n        <TopLine Value=\"88\"/>\n        <CursorPos X=\"3\" Y=\"92\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit25>\n      <Unit26>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadpcx.pas\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit26>\n      <Unit27>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadxpm.pas\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit27>\n      <Unit28>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"248\"/>\n        <CursorPos X=\"3\" Y=\"263\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit28>\n      <Unit29>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit29>\n      <Unit30>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygonaliased.pas\"/>\n        <UnitName Value=\"BGRAPolygonAliased\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"719\"/>\n        <CursorPos X=\"42\" Y=\"737\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit30>\n      <Unit31>\n        <Filename Value=\"..\\bgrabitmap\\polyaliaspersp.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"345\"/>\n        <CursorPos X=\"42\" Y=\"363\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit31>\n      <Unit32>\n        <Filename Value=\"..\\bgrabitmap\\bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit32>\n      <Unit33>\n        <Filename Value=\"..\\bgrabitmap\\bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"14\" Y=\"20\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit33>\n      <Unit34>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpwritetga.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"6\"/>\n        <CursorPos X=\"3\" Y=\"37\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit34>\n      <Unit35>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadtga.pas\"/>\n        <UnitName Value=\"BGRAReadTGA\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"70\" Y=\"84\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit35>\n      <Unit36>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpwritetiff.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"399\"/>\n        <CursorPos X=\"51\" Y=\"430\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit36>\n      <Unit37>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fptiffcmn.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"24\"/>\n        <CursorPos X=\"3\" Y=\"43\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit37>\n      <Unit38>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpreadtiff.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1461\"/>\n        <CursorPos X=\"3\" Y=\"1469\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit38>\n      <Unit39>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\packages\\fcl-image\\src\\fpreadxwd.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"218\"/>\n        <CursorPos X=\"3\" Y=\"255\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit39>\n      <Unit40>\n        <Filename Value=\"..\\bgrabitmap\\bgratext.pas\"/>\n        <UnitName Value=\"BGRAText\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"44\"/>\n        <CursorPos X=\"10\" Y=\"63\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit40>\n      <Unit41>\n        <Filename Value=\"..\\bgrabitmap\\bgravectorize.pas\"/>\n        <UnitName Value=\"BGRAVectorize\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1267\"/>\n        <CursorPos X=\"40\" Y=\"1286\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit41>\n      <Unit42>\n        <Filename Value=\"..\\bgrabitmap\\bgratextfx.pas\"/>\n        <UnitName Value=\"BGRATextFX\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"653\"/>\n        <CursorPos X=\"49\" Y=\"672\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit42>\n      <Unit43>\n        <Filename Value=\"C:\\lazarus\\lcl\\lclproc.pas\"/>\n        <UnitName Value=\"LCLProc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2661\"/>\n        <CursorPos X=\"3\" Y=\"2678\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit43>\n      <Unit44>\n        <Filename Value=\"C:\\lazarus\\components\\lazutils\\lazutf8.pas\"/>\n        <UnitName Value=\"LazUTF8\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"71\" Y=\"18\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit44>\n      <Unit45>\n        <Filename Value=\"..\\bgrabitmap\\bgrautf8.pas\"/>\n        <UnitName Value=\"BGRAUTF8\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"270\"/>\n        <CursorPos X=\"60\" Y=\"279\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit45>\n      <Unit46>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"1238\"/>\n        <CursorPos X=\"62\" Y=\"1250\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit46>\n      <Unit47>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"1186\"/>\n        <CursorPos X=\"10\" Y=\"1197\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit47>\n      <Unit48>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n        <EditorIndex Value=\"4\"/>\n        <TopLine Value=\"599\"/>\n        <CursorPos X=\"61\" Y=\"616\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit48>\n      <Unit49>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"2\"/>\n        <CursorPos X=\"66\" Y=\"13\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit49>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"473\" Column=\"10\" TopLine=\"455\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"529\" Column=\"62\" TopLine=\"508\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"602\" Column=\"10\" TopLine=\"597\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2313\" Column=\"39\" TopLine=\"2295\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"613\" Column=\"69\" TopLine=\"602\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"574\" Column=\"63\" TopLine=\"550\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1293\" Column=\"66\" TopLine=\"1276\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"613\" Column=\"69\" TopLine=\"602\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2388\" Column=\"45\" TopLine=\"2388\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1298\" TopLine=\"1279\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"bspline_main.pas\"/>\n        <Caret Line=\"135\" Column=\"61\" TopLine=\"122\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"bspline_main.pas\"/>\n        <Caret Line=\"141\" Column=\"32\" TopLine=\"122\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"bspline_main.pas\"/>\n        <Caret Line=\"143\" TopLine=\"132\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2292\" TopLine=\"2277\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2297\" TopLine=\"2286\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2298\" TopLine=\"2286\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2299\" TopLine=\"2286\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2300\" TopLine=\"2286\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2301\" TopLine=\"2286\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"2302\" TopLine=\"2286\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapath.pas\"/>\n        <Caret Line=\"527\" TopLine=\"509\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1111\" TopLine=\"1096\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1112\" TopLine=\"1096\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1113\" TopLine=\"1096\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1253\" TopLine=\"1238\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1254\" TopLine=\"1238\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1255\" TopLine=\"1238\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1257\" TopLine=\"1238\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1258\" TopLine=\"1238\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"..\\..\\bgrabitmap\\geometrytypes.inc\"/>\n        <Caret Line=\"1255\" TopLine=\"1238\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"bspline\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/bspline.lpr",
    "content": "program bspline;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, bspline_main, bgrabitmappack\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/bspline_main.lfm",
    "content": "object Form1: TForm1\n  Left = 540\n  Height = 595\n  Top = 37\n  Width = 647\n  Caption = 'BGRA Spline interpolation'\n  ClientHeight = 595\n  ClientWidth = 647\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  OnResize = FormResize\n  Position = poDefaultPosOnly\n  LCLVersion = '1.6.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 51\n    Top = 544\n    Width = 647\n    Align = alBottom\n    ClientHeight = 51\n    ClientWidth = 647\n    Color = clForm\n    ParentColor = False\n    TabOrder = 0\n    object CheckBox_Closed: TCheckBox\n      Left = 400\n      Height = 19\n      Top = 24\n      Width = 56\n      Caption = 'Closed'\n      OnChange = CheckBox_Change\n      TabOrder = 0\n    end\n    object Radio_Inside: TRadioButton\n      Left = 88\n      Height = 19\n      Top = 4\n      Width = 51\n      Caption = 'Inside'\n      OnChange = Radio_Change\n      TabOrder = 1\n    end\n    object Radio_Crossing: TRadioButton\n      Left = 192\n      Height = 19\n      Top = 4\n      Width = 66\n      Caption = 'Crossing'\n      OnChange = Radio_Change\n      TabOrder = 2\n    end\n    object Radio_Outside: TRadioButton\n      Left = 192\n      Height = 19\n      Top = 24\n      Width = 61\n      Caption = 'Outside'\n      OnChange = Radio_Change\n      TabOrder = 3\n    end\n    object Radio_Rounded: TRadioButton\n      Left = 280\n      Height = 19\n      Top = 4\n      Width = 68\n      Caption = 'Rounded'\n      Checked = True\n      OnChange = Radio_Change\n      TabOrder = 4\n      TabStop = True\n    end\n    object Radio_VertexToSide: TRadioButton\n      Left = 280\n      Height = 19\n      Top = 24\n      Width = 91\n      Caption = 'Vertex to side'\n      OnChange = Radio_Change\n      TabOrder = 6\n    end\n    object Radio_Bezier2: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 4\n      Width = 57\n      Caption = 'Bezier2'\n      OnChange = Radio_Change\n      TabOrder = 7\n    end\n    object Radio_Bezier3: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 24\n      Width = 57\n      Caption = 'Bezier3'\n      OnChange = Radio_Change\n      TabOrder = 8\n    end\n    object CheckBox_CanJump: TCheckBox\n      Left = 400\n      Height = 19\n      Top = 4\n      Width = 72\n      Caption = 'Can jump'\n      Checked = True\n      State = cbChecked\n      TabOrder = 9\n    end\n    object Radio_EasyBezier: TRadioButton\n      Left = 88\n      Height = 19\n      Top = 24\n      Width = 77\n      Caption = 'Easy Bezier'\n      OnChange = Radio_Change\n      TabOrder = 5\n    end\n  end\n  object Timer1: TTimer\n    Interval = 40\n    OnTimer = Timer1Timer\n    Left = 97\n    Top = 184\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/bspline_main.pas",
    "content": "unit bspline_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,\n  BGRABitmap, BGRABitmapTypes, LMessages, ExtCtrls, BGRAPath;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    CheckBox_CanJump: TCheckBox;\n    CheckBox_Closed: TCheckBox;\n    Panel1: TPanel;\n    Radio_Bezier2: TRadioButton;\n    Radio_Bezier3: TRadioButton;\n    Radio_Crossing: TRadioButton;\n    Radio_Inside: TRadioButton;\n    Radio_Outside: TRadioButton;\n    Radio_Rounded: TRadioButton;\n    Radio_EasyBezier: TRadioButton;\n    Radio_VertexToSide: TRadioButton;\n    Timer1: TTimer;\n    procedure CheckBox_Change(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormPaint(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);\n    procedure FormResize(Sender: TObject);\n    procedure Radio_Change(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n    procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n\n  public\n    { public declarations }\n    pts: array of TPointF;\n    MovingPointIndex: Integer;\n    MovingOrigin: TPointF;\n    PreviousSize: TPointF;\n    FPath: TBGRAPath;\n    FPathCursor: TBGRAPathCursor;\n    FPathThumbnail: TBGRAPath;\n    FPathSpeed: single;\n    FPathPos: single;\n    procedure PathChange;\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nuses math;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar\n  h: Integer;\nbegin\n  h := clientheight-Panel1.Height;\n  setlength(pts,7);\n  pts[1] := PointF(clientwidth/2,h/2);\n  pts[0] := pts[1] + pointF(0,75);\n  pts[2] := PointF(100,100);\n  pts[3] := pointF(clientwidth-100,100);\n  pts[4] := pointF(clientwidth-100,h-100);\n  pts[5] := pointF(100,h-100);\n  pts[6] := pointF(100,pts[0].y);\n  MovingPointIndex := -1;\n  FPathSpeed := 4;\n  FPathPos := 0;\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  FreeAndNil(FPathCursor);\n  FreeAndNil(FPath);\nend;\n\nprocedure TForm1.CheckBox_Change(Sender: TObject);\nbegin\n  PathChange;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp: TBGRABitmap;\n  i: Integer;\n  style: TSplineStyle;\n  nbPoints: integer;\n  pt,tangent: TPointF;\n  closed: boolean;\n  thumbRect: TRect;\nbegin\n  PreviousSize := PointF(ClientWidth,clientheight);\n  bmp := TBGRABitmap.Create(clientwidth,panel1.top,BGRAWhite);\n  closed := CheckBox_Closed.Checked;\n\n  if Radio_Bezier2.Checked then\n    nbPoints := ((length(pts)-1+integer(closed)) div 2)*2+1-integer(closed)\n  else if Radio_Bezier3.Checked then\n    nbPoints := ((length(pts)-1+integer(closed)) div 3)*3+1-integer(closed)\n  else\n    nbPoints := length(pts);\n\n  if FPath = nil then\n  begin\n    FPath := TBGRAPath.Create;\n    if Radio_Bezier2.Checked then\n    begin\n      FPath.moveTo(pts[0]);\n      for i := 1 to (nbPoints-1+integer(closed)) div 2 do\n        FPath.quadraticCurveTo(pts[2*(i-1)+1],pts[(2*(i-1)+2) mod nbPoints]);\n      if closed then FPath.closePath;\n    end\n    else\n    if Radio_Bezier3.Checked then\n    begin\n      FPath.moveTo(pts[0]);\n      for i := 1 to (nbPoints-1+integer(closed)) div 3 do\n        FPath.bezierCurveTo(pts[3*(i-1)+1],pts[3*(i-1)+2],pts[(3*(i-1)+3) mod nbPoints]);\n      if closed then FPath.closePath;\n    end\n    else\n    begin\n      if Radio_Inside.Checked then style := ssInsideWithEnds else\n      if Radio_Crossing.Checked then style := ssCrossingWithEnds else\n      if Radio_Outside.checked then style := ssOutside else\n      if Radio_Rounded.Checked then style := ssRoundOutside else\n      if Radio_EasyBezier.Checked then style := ssEasyBezier else\n        style := ssVertexToSide;\n\n      if closed then\n        FPath.closedSpline(slice(pts,nbPoints), style)\n      else\n        FPath.openedSpline(slice(pts,nbPoints), style);\n    end;\n  end;\n\n  if Assigned(FPath) then\n  begin\n    FPath.fill(bmp, BGRA(250,250,230));\n\n    if closed then\n      bmp.DrawPolygonAntialias(slice(pts,nbPoints),BGRA(102,148,179),1)\n    else\n      bmp.DrawPolyLineAntialias(slice(pts,nbPoints),BGRA(102,148,179),1);\n    for i := 0 to nbPoints-1 do\n      bmp.FillEllipseAntialias(pts[i].x,pts[i].y,5,5,BGRA(102,148,179));\n\n    FPath.stroke(bmp, BGRABlack, 2);\n\n    if FPathCursor = nil then\n    begin\n      FPathCursor := FPath.CreateCursor;\n      FPathCursor.LoopPath:= true;\n      FPathCursor.Position := FPathPos*FPathCursor.PathLength;\n    end;\n\n    thumbRect := recT(bmp.Width-128,0,bmp.Width,128);\n    if FPathThumbnail = nil then\n    begin\n      FPathThumbnail := TBGRAPath.Create;\n      FPath.FitInto(FPathThumbnail, RectF(0,0,thumbRect.Right-thumbRect.Left-1,thumbRect.Bottom-thumbRect.Top-1));\n    end;\n\n    bmp.FillRect(thumbRect, BGRA(102,148,179,128), dmDrawWithTransparency);\n    FPathThumbnail.stroke(bmp, thumbRect.Left, thumbRect.Top, BGRABlack, 1);\n\n    with FPathCursor.Bounds do\n      bmp.RectangleAntialias(Left,Top,Right,Bottom,CSSFireBrick,1.5);\n\n    //bmp.TextOut(0,bmp.FontFullHeight, IntToStr(length(comp_pts))+' points', BGRABlack);\n    //bmp.DrawPolyLineAntialiasAutocycle(FPath.ToPoints(0.1),BGRABlack,1);\n\n    bmp.ArrowEndAsClassic;\n    pt := FPathCursor.CurrentCoordinate;\n    tangent := FPathCursor.CurrentTangent;\n    bmp.DrawLineAntialias(pt.x,pt.y,pt.x+tangent.x*40*Sign(FPathSpeed),pt.y+tangent.y*40*Sign(FPathSpeed),CSSFireBrick,3);\n    bmp.DrawLineAntialias(pt.x,pt.y,pt.x-tangent.y*40*Sign(FPathSpeed),pt.y+tangent.x*40*Sign(FPathSpeed),CSSFireBrick,3);\n    bmp.ArrowEndAsNone;\n\n    bmp.TextOut(0,0, 'Length: ' + IntToStr(round(FPathCursor.PathLength)), BGRABlack);\n    if FPathCursor.PathLength > 0 then\n      bmp.TextOut(0,bmp.FontFullHeight, IntToStr(round(FPathCursor.Position / FPathCursor.PathLength*100))+'%', BGRABlack);\n  end;\n\n  bmp.draw(Canvas,0,0);\n  bmp.Free;\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar maxDist,dist: single;\n    mousePos,vect: TPointF;\n    i: Integer;\nbegin\n  if Button <> mbLeft then exit;\n\n  //select point to move\n  MovingPointIndex := -1;\n  maxDist := 10;\n  mousePos := PointF(X,Y);\n  MovingOrigin := mousePos;\n\n  for i := 0 to high(pts) do\n  begin\n    vect := pts[i] - mousePos;\n    dist := sqrt(vect*vect);\n    if dist < maxDist then\n    begin\n      maxDist := dist;\n      MovingPointIndex := i;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  mousePos: TPointF;\n  i: Integer;\nbegin\n  if ssLeft in Shift then\n  begin\n    mousePos := PointF(X,Y);\n    if MovingPointIndex <> -1 then\n      pts[MovingPointIndex].Offset(mousePos-MovingOrigin) else\n    begin\n      for i := 0 to high(pts) do\n        pts[i].Offset(mousePos-MovingOrigin);\n    end;\n    PathChange;\n    MovingOrigin := mousePos;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then MovingPointIndex := -1;\nend;\n\nprocedure TForm1.FormResize(Sender: TObject);\nvar factor: TPointF;\n  i,ph: Integer;\nbegin\n  ph := Panel1.Height;\n  if (clientWidth > 0) and (clientheight-ph > 0) and\n  (previousSize.X > 0) and (previousSize.Y-ph > 0) then\n  begin\n    factor.X := clientWidth/PreviousSize.X;\n    factor.Y := (clientheight-ph)/(PreviousSize.Y-ph);\n    for i := 0 to high(pts) do\n    begin\n      pts[i].x *= factor.X;\n      pts[i].y *= factor.y;\n    end;\n    PreviousSize := PointF(ClientWidth,clientheight);\n    PathChange;\n  end;\nend;\n\nprocedure TForm1.Radio_Change(Sender: TObject);\nbegin\n  PathChange;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  if Assigned(FPathCursor) then\n  begin\n    if FPathCursor.MoveForward(FPathSpeed, CheckBox_CanJump.Checked) <> FPathSpeed then\n      FPathSpeed:= -FPathSpeed;\n    if FPathCursor.PathLength > 0 then\n      FPathPos := FPathCursor.Position/FPathCursor.PathLength;\n    invalidate;\n  end;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.PathChange;\nbegin\n  FreeAndNil(FPathCursor);\n  FreeAndNil(FPathThumbnail);\n  FreeAndNil(FPath);\n  Invalidate;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/distortions.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"etpackage\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"5\">\n      <Unit0>\n        <Filename Value=\"distortions.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UsageCount Value=\"20\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"distortions_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"distortions_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <TopLine Value=\"135\"/>\n        <CursorPos X=\"43\" Y=\"150\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"..\\bgrabitmap\\bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n        <EditorIndex Value=\"2\"/>\n        <CursorPos X=\"47\" Y=\"10\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"427\"/>\n        <CursorPos X=\"3\" Y=\"484\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"40\"/>\n        <CursorPos X=\"3\" Y=\"25\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"38\" Column=\"7\" TopLine=\"7\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"41\" Column=\"53\" TopLine=\"11\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"22\" Column=\"24\" TopLine=\"22\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"42\" Column=\"61\" TopLine=\"22\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"48\" Column=\"63\" TopLine=\"40\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"25\" Column=\"19\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"12\" Column=\"34\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"17\" Column=\"15\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"18\" Column=\"45\" TopLine=\"4\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"94\" Column=\"62\" TopLine=\"73\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"39\" Column=\"19\" TopLine=\"17\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"41\" Column=\"19\" TopLine=\"21\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"96\" Column=\"17\" TopLine=\"78\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"88\" Column=\"7\" TopLine=\"72\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"89\" Column=\"7\" TopLine=\"73\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"91\" Column=\"7\" TopLine=\"75\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"93\" Column=\"45\" TopLine=\"74\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"41\" Column=\"29\" TopLine=\"19\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"42\" Column=\"29\" TopLine=\"22\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"43\" Column=\"29\" TopLine=\"23\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"42\" Column=\"29\" TopLine=\"23\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"43\" Column=\"29\" TopLine=\"23\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"42\" Column=\"29\" TopLine=\"23\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"39\" Column=\"79\" TopLine=\"20\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"16\" Column=\"38\" TopLine=\"13\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"..\\bgrabitmap\\bgragradientscanner.pas\"/>\n        <Caret Line=\"10\" Column=\"47\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"96\" Column=\"29\" TopLine=\"85\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"124\" Column=\"5\" TopLine=\"100\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"152\" Column=\"120\" TopLine=\"126\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"distortions_main.pas\"/>\n        <Caret Line=\"129\" Column=\"39\" TopLine=\"127\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"distortions\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/distortions.lpr",
    "content": "program distortions;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, distortions_main, bgrabitmappack, etpackage\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/distortions_main.lfm",
    "content": "object Form1: TForm1\n  Left = 307\n  Height = 387\n  Top = 220\n  Width = 622\n  Caption = 'BGRA Image and gradient distortions'\n  ClientHeight = 387\n  ClientWidth = 622\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnPaint = FormPaint\n  LCLVersion = '1.4.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 59\n    Top = 328\n    Width = 622\n    Align = alBottom\n    ClientHeight = 59\n    ClientWidth = 622\n    TabOrder = 0\n    object TrackBar_Angle: TTrackBar\n      Left = 0\n      Height = 25\n      Top = 24\n      Width = 320\n      Frequency = 30\n      Max = 360\n      Position = 20\n      Anchors = [akTop, akLeft, akRight]\n      TabOrder = 0\n    end\n    object Label1: TLabel\n      Left = 8\n      Height = 15\n      Top = 8\n      Width = 31\n      Caption = 'Angle'\n      ParentColor = False\n    end\n    object Label2: TLabel\n      Left = 337\n      Height = 15\n      Top = 8\n      Width = 27\n      Anchors = [akTop, akRight]\n      Caption = 'Scale'\n      ParentColor = False\n    end\n    object TrackBar_Scale: TTrackBar\n      Left = 328\n      Height = 25\n      Top = 24\n      Width = 288\n      Frequency = 10\n      Max = 50\n      Min = 1\n      Position = 10\n      Anchors = [akTop, akRight]\n      TabOrder = 1\n    end\n  end\n  object Timer1: TTimer\n    Interval = 16\n    OnTimer = Timer1Timer\n    left = 65\n    top = 139\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/distortions_main.pas",
    "content": "unit distortions_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  ComCtrls, StdCtrls, BGRABitmap, BGRAClasses, BGRABitmapTypes, BGRAGradientScanner,\n  LMessages, EpikTimer;\n\ntype\n\n  { TWaveDistortion }\n\n  TWaveDistortion = class(TBGRACustomScanner)\n  private\n    FSource : IBGRAScanner;\n    FCenter : TPointF;\n    FRadius, FAmplitude: Single;\n  public\n    Delta: single;\n    constructor Create(source : IBGRAScanner; center : TPointF; radius, amplitude: single);\n    function ScanAt(X, Y: Single): TBGRAPixel; override;\n  end;\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Label1: TLabel;\n    Label2: TLabel;\n    Panel1: TPanel;\n    Timer1: TTimer;\n    TrackBar_Angle: TTrackBar;\n    TrackBar_Scale: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormPaint(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n    procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n  private\n    { private declarations }\n  public\n    { public declarations }\n    image: TBGRABitmap;\n    grad: TBGRAGradientScanner;\n    multigrad: TBGRAMultiGradient;\n    delta: single;\n    timer: TEpikTimer;\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\nuses BGRATransform;\n\n{ TWaveDistortion }\n\nconstructor TWaveDistortion.Create(source: IBGRAScanner; center : TPointF; radius, amplitude: single);\nbegin\n  FSource := Source;\n  FCenter := center;\n  FRadius := radius;\n  FAmplitude := amplitude;\n  Delta := 0;\nend;\n\nfunction TWaveDistortion.ScanAt(X, Y: Single): TBGRAPixel;\nvar d: single;\n    p,v: TPointF;\nbegin\n  p := PointF(X,Y);\n  v := p-FCenter;\n  d := sqrt(v*v);\n  if d <> 0 then v.Scale(1/d);\n  p.Offset( v*(sin(d*2*Pi/FRadius+Delta)*FAmplitude) );\n  result := FSource.ScanAt(p.X,p.Y);\nend;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nconst ampl = 10;\nvar bmp: TBGRABitmap;\n    tx,ty: integer;\n    x,y,rx,ry,scale :single;\n\n  procedure DrawEllipse(source: IBGRAScanner);\n  var\n    disto: TWaveDistortion;\n    affine: TBGRAAffineScannerTransform;\n  begin\n    affine := TBGRAAffineScannerTransform.Create(source);\n    affine.RotateDeg(TrackBar_Angle.Position);\n    affine.Scale(scale,scale);\n    affine.Translate(x,y);\n    disto := TWaveDistortion.Create(affine,PointF(x,y),(rx+ry)/2*0.6,ampl);\n    disto.Delta := Delta;\n    bmp.FillEllipseAntialias(x,y,rx,ry,disto);\n    disto.Free;\n    affine.free;\n  end;\n\nbegin\n  timer.Clear;\n  timer.start;\n  tx := ClientWidth;\n  ty := Panel1.Top;\n  scale := TrackBar_Scale.Position/10;\n  bmp := TBGRABitmap.Create(tx,ty, BGRAWhite);\n  x := tx/4;\n  y := ty/2;\n  rx := tx/4*0.8;\n  ry := ty/2*0.8;\n  image.ScanOffset := Point(round(image.width/2),round(image.Height/2));\n  DrawEllipse(image);\n\n  x := 3*tx/4;\n  y := ty/2;\n  bmp.FillEllipseAntialias(x,y,rx,ry,BGRABlack);\n  grad := TBGRAGradientScanner.Create(multigrad,gtRadial,PointF(0.4*rx/scale,-0.4*ry/scale),PointF(0.4*rx/scale+rx,-0.4*ry/scale),False);\n  DrawEllipse(grad);\n  grad.free;\n\n  timer.Stop;\n  bmp.TextOut(0,0,inttostr(round(timer.Elapsed*1000))+ ' ms',BGRABlack);\n  bmp.Draw(Canvas,0,0);\n  bmp.Free;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  Timer1.Enabled := false;\n  DecF(Delta, 10*Pi/180);\n  Repaint;\n  Timer1.Enabled := true;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  image := TBGRABitmap.Create('spheres.png');\n  timer := TEpikTimer.Create(self);\n  multigrad := TBGRAMultiGradient.Create([BGRAWhite,BGRA(255,235,96),BGRA(255,160,0),BGRA(140,0,0),BGRA(64,0,0),BGRA(160,64,0)],[0,0.2,0.4,0.8,0.9,1],True);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  image.free;\n  multigrad.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/gouraud.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"3\">\n      <Unit0>\n        <Filename Value=\"gouraud.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UsageCount Value=\"20\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"gouraud_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <CursorPos X=\"55\" Y=\"9\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"19\"/>\n        <CursorPos X=\"30\" Y=\"250\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n    </Units>\n    <JumpHistory Count=\"6\" HistoryIndex=\"5\">\n      <Position1>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"65\" Column=\"50\" TopLine=\"45\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"8\" Column=\"78\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"24\" Column=\"15\" TopLine=\"6\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"126\" TopLine=\"91\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"42\" Column=\"12\" TopLine=\"39\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <Caret Line=\"28\" Column=\"79\" TopLine=\"19\"/>\n      </Position6>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"gouraud\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/gouraud.lpr",
    "content": "program gouraud;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, gouraud_main, bgrabitmappack\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/gouraud_main.lfm",
    "content": "object Form1: TForm1\n  Left = 298\n  Height = 319\n  Top = 215\n  Width = 404\n  Caption = 'Gouraud shading'\n  ClientHeight = 319\n  ClientWidth = 404\n  OnCreate = FormCreate\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  LCLVersion = '0.9.30'\n  object Panel1: TPanel\n    Left = 0\n    Height = 42\n    Top = 277\n    Width = 404\n    Align = alBottom\n    ClientHeight = 42\n    ClientWidth = 404\n    TabOrder = 0\n    object Label1: TLabel\n      Left = 8\n      Height = 16\n      Top = 11\n      Width = 42\n      Caption = 'Opacity'\n      ParentColor = False\n    end\n    object TrackBar1: TTrackBar\n      Left = 64\n      Height = 25\n      Top = 11\n      Width = 328\n      Frequency = 16\n      Max = 255\n      OnChange = TrackBar1Change\n      Position = 255\n      Anchors = [akTop, akLeft, akRight]\n      TabOrder = 0\n    end\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/gouraud_main.pas",
    "content": "unit gouraud_main; \n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, ComCtrls, BGRABitmap, BGRABitmapTypes, LMessages;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Label1: TLabel;\n    Panel1: TPanel;\n    TrackBar1: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    { private declarations }\n    procedure FormPaint(Sender: TObject);\n    procedure TrackBar1Change(Sender: TObject);\n    procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n  public\n    { public declarations }\n    MovingPointIndex: Integer;\n    MovingOrigin: TPointF;\n    pts: array[0..2] of TPointF;\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nuses BGRAPolygon;\n\nprocedure NicePoint(bmp: TBGRABitmap; x, y: single);\nbegin\n    bmp.EllipseAntialias(x,y,4,4,BGRA(0,0,0,192),1);\n    bmp.EllipseAntialias(x,y,3,3,BGRA(255,255,255,192),1);\n    bmp.EllipseAntialias(x,y,2,2,BGRA(0,0,0,192),1);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp: TBGRABitmap;\n    tx,ty,i: Integer;\n    c: TPointF;\n    multi: TBGRAMultishapeFiller;\n    opacity: byte;\nbegin\n  tx := ClientWidth;\n  ty := Panel1.Top;\n\n  bmp := TBGRABitmap.Create(tx,ty,BGRAWhite);\n\n  opacity := TrackBar1.Position;\n  c := (pts[0]+pts[1]+pts[2])*(1/3);\n  multi := TBGRAMultishapeFiller.Create;\n  multi.AddQuadLinearColor(pts[0],c,pts[2],pts[2]+(pts[0]-c),\n    BGRA(0,0,255,opacity),BGRA(255,255,255,opacity),BGRA(255,0,0,opacity),BGRA(0,0,0,opacity));\n  multi.AddQuadLinearColor(pts[0],c,pts[1],pts[1]+(pts[0]-c),\n    BGRA(0,0,255,opacity),BGRA(255,255,255,opacity),BGRA(0,255,0,opacity),BGRA(0,0,0,opacity));\n  multi.AddQuadLinearColor(pts[2],c,pts[1],pts[1]+(pts[2]-c),\n    BGRA(255,0,0,opacity),BGRA(255,255,255,opacity),BGRA(0,255,0,opacity),BGRA(0,0,0,opacity));\n  multi.Draw(bmp);\n  multi.free;\n\n  for i := 0 to 2 do\n    NicePoint(bmp,pts[i].x,pts[i].y);\n  bmp.Draw(Canvas,0,0);\n\n  bmp.free;\nend;\n\nprocedure TForm1.TrackBar1Change(Sender: TObject);\nbegin\n  Invalidate;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  pts[0] := PointF(150,10);\n  pts[1] := PointF(370,140);\n  pts[2] := PointF(50,260);\n  MovingPointIndex := -1;\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar maxDist,dist: single;\n    mousePos,vect: TPointF;\n    i: Integer;\nbegin\n  if Button <> mbLeft then exit;\n\n  //select point to move\n  MovingPointIndex := -1;\n  maxDist := 10;\n  mousePos := PointF(X,Y);\n  MovingOrigin := mousePos;\n\n  for i := 0 to high(pts) do\n  begin\n    vect := pts[i] - mousePos;\n    dist := sqrt(vect*vect);\n    if dist < maxDist then\n    begin\n      maxDist := dist;\n      MovingPointIndex := i;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  mousePos: TPointF;\n  i: Integer;\nbegin\n  if ssLeft in Shift then\n  begin\n    mousePos := PointF(X,Y);\n    if MovingPointIndex <> -1 then\n      pts[MovingPointIndex].Offset(mousePos-MovingOrigin) else\n    begin\n      for i := 0 to high(pts) do\n        pts[i].Offset(mousePos-MovingOrigin);\n    end;\n    Invalidate;\n    MovingOrigin := mousePos;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then MovingPointIndex := -1;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/image_filters2.lpi",
    "content": "<?xml version=\"1.0\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n      <ActiveWindowIndexAtStart Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"etpackage\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"6\">\n      <Unit0>\n        <Filename Value=\"image_filters2.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"image_filters2\"/>\n        <EditorIndex Value=\"1\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"1\"/>\n        <CursorPos X=\"30\" Y=\"10\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"image_filters2_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"0\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"148\"/>\n        <CursorPos X=\"76\" Y=\"171\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"D:\\lazarus\\lcl\\graphics.pp\"/>\n        <UnitName Value=\"Graphics\"/>\n        <EditorIndex Value=\"5\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"242\"/>\n        <CursorPos X=\"3\" Y=\"252\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"4\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"62\"/>\n        <CursorPos X=\"59\" Y=\"86\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"2\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"3330\"/>\n        <CursorPos X=\"33\" Y=\"3333\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <UnitName Value=\"BGRAResample\"/>\n        <EditorIndex Value=\"3\"/>\n        <WindowIndex Value=\"0\"/>\n        <TopLine Value=\"825\"/>\n        <CursorPos X=\"1\" Y=\"834\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit5>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"75\" Column=\"1\" TopLine=\"55\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"74\" Column=\"18\" TopLine=\"56\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"68\" Column=\"42\" TopLine=\"57\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"69\" Column=\"42\" TopLine=\"58\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"70\" Column=\"42\" TopLine=\"59\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"71\" Column=\"42\" TopLine=\"60\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"72\" Column=\"42\" TopLine=\"61\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"70\" Column=\"15\" TopLine=\"62\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"71\" Column=\"15\" TopLine=\"63\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"72\" Column=\"15\" TopLine=\"64\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"73\" Column=\"17\" TopLine=\"49\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"78\" Column=\"30\" TopLine=\"65\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"3346\" Column=\"38\" TopLine=\"3342\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"3333\" Column=\"33\" TopLine=\"3330\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"79\" Column=\"1\" TopLine=\"65\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"92\" Column=\"14\" TopLine=\"76\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"91\" Column=\"14\" TopLine=\"75\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"90\" Column=\"14\" TopLine=\"74\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"91\" Column=\"14\" TopLine=\"75\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"73\" Column=\"51\" TopLine=\"73\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"52\" Column=\"28\" TopLine=\"45\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"86\" Column=\"9\" TopLine=\"65\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"95\" Column=\"68\" TopLine=\"67\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"33\" Column=\"76\" TopLine=\"11\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"100\" Column=\"10\" TopLine=\"70\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"33\" Column=\"59\" TopLine=\"15\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"115\" Column=\"1\" TopLine=\"95\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"149\" Column=\"50\" TopLine=\"107\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"160\" Column=\"64\" TopLine=\"137\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"image_filters2_main.pas\"/>\n        <Caret Line=\"166\" Column=\"83\" TopLine=\"144\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"image_filters2\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <CompilerPath Value=\"$(CompPath)\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/image_filters2.lpr",
    "content": "program image_filters2;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, image_filters2_main, bgrabitmappack, etpackage\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/image_filters2_main.lfm",
    "content": "object Form1: TForm1\n  Left = 213\n  Height = 301\n  Top = 213\n  Width = 583\n  Caption = 'BGRA Image resample filters'\n  ClientHeight = 301\n  ClientWidth = 583\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnPaint = FormPaint\n  LCLVersion = '1.0.10.0'\n  object Panel1: TPanel\n    Left = 0\n    Height = 301\n    Top = 0\n    Width = 194\n    Align = alLeft\n    ClientHeight = 301\n    ClientWidth = 194\n    TabOrder = 0\n    object Radio_Linear: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 64\n      Width = 52\n      Caption = 'Linear'\n      OnChange = Radio_Change\n      TabOrder = 1\n    end\n    object Label1: TLabel\n      Left = 5\n      Height = 16\n      Top = 8\n      Width = 27\n      Caption = 'Filter'\n      ParentColor = False\n    end\n    object Radio_None: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 32\n      Width = 96\n      Caption = 'None (stretch)'\n      OnChange = Radio_Change\n      TabOrder = 0\n    end\n    object Radio_HalfCosine: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 80\n      Width = 81\n      Caption = 'Half-cosine'\n      OnChange = Radio_Change\n      TabOrder = 2\n    end\n    object Radio_Cosine: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 96\n      Width = 56\n      Caption = 'Cosine'\n      OnChange = Radio_Change\n      TabOrder = 3\n    end\n    object Radio_Bicubic: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 112\n      Width = 91\n      Caption = 'Bicubic (blur)'\n      OnChange = Radio_Change\n      TabOrder = 4\n    end\n    object Radio_Mitchell: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 128\n      Width = 63\n      Caption = 'Mitchell'\n      OnChange = Radio_Change\n      TabOrder = 5\n    end\n    object Radio_Spline: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 144\n      Width = 75\n      Caption = 'Spline (16)'\n      OnChange = Radio_Change\n      TabOrder = 6\n    end\n    object Label_Ms: TLabel\n      Left = 88\n      Height = 16\n      Top = 8\n      Width = 97\n      Alignment = taRightJustify\n      AutoSize = False\n      Caption = 'ms'\n      ParentColor = False\n    end\n    object PaintBox1: TPaintBox\n      Left = 21\n      Height = 112\n      Top = 168\n      Width = 151\n      OnPaint = PaintBox1Paint\n    end\n    object Radio_BoxFilter: TRadioButton\n      Left = 11\n      Height = 19\n      Top = 48\n      Width = 66\n      Caption = 'Box filter'\n      Checked = True\n      OnChange = Radio_Change\n      TabOrder = 7\n      TabStop = True\n    end\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/image_filters2_main.pas",
    "content": "unit image_filters2_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, BGRABitmap, BGRABitmapTypes, EpikTimer;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Label1: TLabel;\n    Label_Ms: TLabel;\n    PaintBox1: TPaintBox;\n    Panel1: TPanel;\n    Radio_Linear: TRadioButton;\n    Radio_Mitchell: TRadioButton;\n    Radio_None: TRadioButton;\n    Radio_HalfCosine: TRadioButton;\n    Radio_Cosine: TRadioButton;\n    Radio_Bicubic: TRadioButton;\n    Radio_BoxFilter: TRadioButton;\n    Radio_Spline: TRadioButton;\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormPaint(Sender: TObject);\n    procedure PaintBox1Paint(Sender: TObject);\n    procedure Radio_Change(Sender: TObject);\n  private\n    { private declarations }\n    procedure GetFilter(out filter : TResampleFilter; out noFilter: boolean);\n  public\n    { public declarations }\n    image: TBGRABitmap;\n    stopwatch : TEpikTimer;\n  end; \n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nuses BGRAResample;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  image := TBGRABitmap.Create(4,4,BGRAWhite);\n  image.SetPixel(0,0,clRed);\n  image.SetPixel(2,0,clBlack);\n  image.SetPixel(3,0,clLime);\n  image.SetPixel(2,1,clRed);\n  image.SetPixel(3,1,clBlue);\n  image.SetPixel(0,2,clBlue);\n  image.SetPixel(1,2,clBlack);\n  image.SetPixel(0,3,clLime);\n  image.SetPixel(1,3,clRed);\n  image.SetPixel(3,3,clBlue);\n  stopwatch := TEpikTimer.Create(self);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  image.Free;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar resampled: TBGRABitmap;\n    tx,ty: integer;\n    filter : TResampleFilter;\n    noFilter: boolean;\nbegin\n  tx := ClientWidth-Panel1.Width;\n  ty := ClientHeight;\n  if tx > ty then tx := ty else ty := tx;\n\n  GetFilter(filter, noFilter);\n  stopwatch.Clear;\n  stopwatch.Start;\n  if noFilter then\n    resampled := image.Resample(tx,ty,rmSimpleStretch) else\n  begin\n     image.ResampleFilter := filter;\n     resampled := image.Resample(tx,ty);\n  end;\n  stopwatch.stop;\n  Label_Ms.Caption := IntToStr(round(stopwatch.Elapsed*1000))+' ms';\n  resampled.Draw(Canvas,Panel1.width,0);\n  resampled.Free;\nend;\n\nprocedure TForm1.PaintBox1Paint(Sender: TObject);\nconst\n    minx = -3;\n    maxx = 3;\n    miny = -1;\n    maxy = 2;\nvar\n  graph: TBGRABitmap;\n  curve: array of TPointF;\n  tx,ty,precision: integer;\n  filter : TResampleFilter;\n  noFilter: boolean;\n  i,numPt: integer;\n  filterPos,filterValue: single;\n  kernel: TWideKernelFilter;\n\n  function XToGraph(value: single): single;\n  begin\n    result := (value-minx)/(maxx-minx)*(tx-1);\n  end;\n  function YToGraph(value: single): single;\n  begin\n    result := ty-1-(value-miny)/(maxy-miny)*(ty-1);\n  end;\n\nbegin\n  tx := paintbox1.width;\n  ty := paintbox1.height;\n  if (tx=0) or (ty=0) then exit;\n  graph := TBGRABitmap.Create(tx,ty,BGRAWhite);\n  precision := tx div (maxx-minx)+1;\n  setlength(curve,precision*(maxx-minx)+1);\n  GetFilter(filter, noFilter);\n  numPt := 0;\n  case filter of\n    rfBicubic: kernel := TCubicKernel.Create;\n    rfSpline: kernel := TSplineKernel.Create;\n    rfMitchell: kernel := TMitchellKernel.Create;\n  else\n    kernel := nil;\n  end;\n  for i := minx*precision to maxx*precision do\n  begin\n    filterPos := i/precision;\n    if noFilter then\n    begin\n       if (filterPos >= 0) and (filterPos < 1) then\n         filterValue := 1\n       else\n         filterValue := 0;\n    end else\n    begin\n      if kernel = nil then\n      begin\n         if abs(filterPos) > 1 then\n           filterValue := 0\n         else\n           filterValue := 1-FineInterpolation(abs(filterPos),filter);\n      end\n      else\n        filterValue := kernel.Interpolation(filterPos);\n    end;\n    curve[numPt] := PointF(XToGraph(filterPos),YToGraph(filterValue));\n    inc(numPt);\n  end;\n  kernel.Free;\n  graph.DrawHorizLine(0,round(YToGraph(0)),tx-1,BGRA(0,0,0,96));\n  graph.DrawVertLine(round(XToGraph(0)),0,ty-1,BGRA(0,0,0,96));\n  graph.DrawLineAntialias(XToGraph(0)-8,YToGraph(1),XToGraph(0)+8,YToGraph(1),BGRA(0,0,0,96),1);\n  graph.DrawLineAntialias(XToGraph(-1),YToGraph(0)-8,XToGraph(-1),YToGraph(0)+8,BGRA(0,0,0,96),1);\n  graph.DrawLineAntialias(XToGraph(1),YToGraph(0)-8,XToGraph(1),YToGraph(0)+8,BGRA(0,0,0,96),1);\n  graph.DrawPolyLineAntialias(curve,BGRA(192,0,0),1);\n  graph.Draw(paintbox1.Canvas,0,0);\n  graph.free;\nend;\n\nprocedure TForm1.Radio_Change(Sender: TObject);\nbegin\n  Invalidate;\n  PaintBox1.Invalidate;\nend;\n\nprocedure TForm1.GetFilter(out filter: TResampleFilter; out noFilter: boolean);\nbegin\n  noFilter := Radio_None.Checked;\n  if Radio_BoxFilter.Checked then filter := rfBox else\n  if Radio_Bicubic.Checked then filter := rfBicubic else\n  if Radio_Cosine.Checked then filter := rfCosine else\n  if Radio_HalfCosine.Checked then filter := rfHalfCosine else\n  if Radio_Mitchell.Checked then filter := rfMitchell else\n  if Radio_Spline.Checked then filter := rfSpline else\n    filter := rfLinear;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/image_perspective.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"etpackage\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"7\">\n      <Unit0>\n        <Filename Value=\"image_perspective.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"4\"/>\n        <CursorPos Y=\"14\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"image_perspective_main.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"image_perspective_main\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <TopLine Value=\"113\"/>\n        <CursorPos X=\"43\" Y=\"135\"/>\n        <UsageCount Value=\"20\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"gouraud_main.pas\"/>\n        <UnitName Value=\"gouraud_main\"/>\n        <EditorIndex Value=\"5\"/>\n        <TopLine Value=\"120\"/>\n        <CursorPos Y=\"156\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"uperspective.pas\"/>\n        <TopLine Value=\"363\"/>\n        <CursorPos X=\"18\" Y=\"368\"/>\n        <UsageCount Value=\"20\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"433\"/>\n        <CursorPos X=\"56\" Y=\"471\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"992\"/>\n        <CursorPos X=\"7\" Y=\"991\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"1\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit6>\n    </Units>\n    <JumpHistory Count=\"17\" HistoryIndex=\"16\">\n      <Position1>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <Caret Line=\"557\" Column=\"27\" TopLine=\"539\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <Caret Line=\"556\" Column=\"48\" TopLine=\"538\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <Caret Line=\"1664\" Column=\"30\" TopLine=\"1636\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"image_perspective_main.pas\"/>\n        <Caret Line=\"84\" Column=\"16\" TopLine=\"71\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"243\" Column=\"27\" TopLine=\"225\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"246\" Column=\"28\" TopLine=\"225\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1798\" Column=\"29\" TopLine=\"1780\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <Caret Line=\"134\" Column=\"66\" TopLine=\"115\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"image_perspective_main.pas\"/>\n        <Caret Line=\"80\" Column=\"22\" TopLine=\"71\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <Caret Line=\"541\" Column=\"63\" TopLine=\"522\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1801\" TopLine=\"1780\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1792\" Column=\"6\" TopLine=\"1774\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1798\" Column=\"83\" TopLine=\"1774\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1792\" Column=\"7\" TopLine=\"1774\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1804\" Column=\"5\" TopLine=\"1774\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <Caret Line=\"1780\" Column=\"38\" TopLine=\"1778\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"image_perspective_main.pas\"/>\n        <Caret Line=\"50\" Column=\"19\" TopLine=\"32\"/>\n      </Position17>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"image_perspective\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgraaggtest/image_perspective.lpr",
    "content": "program image_perspective;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, image_perspective_main, bgrabitmappack, etpackage;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgraaggtest/image_perspective_main.lfm",
    "content": "object Form1: TForm1\n  Left = 627\n  Height = 490\n  Top = 220\n  Width = 514\n  Caption = 'Texture mapping'\n  ClientHeight = 490\n  ClientWidth = 514\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  Position = poDefaultPosOnly\n  LCLVersion = '1.4.0.4'\n  object Panel1: TPanel\n    Left = 376\n    Height = 130\n    Top = 360\n    Width = 138\n    Anchors = [akRight, akBottom]\n    ClientHeight = 130\n    ClientWidth = 138\n    TabOrder = 0\n    object Radio_Perspective: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 40\n      Width = 80\n      Caption = 'Perspective'\n      OnChange = RadioButtonChange\n      TabOrder = 4\n    end\n    object Label1: TLabel\n      Left = 8\n      Height = 15\n      Top = 7\n      Width = 48\n      Caption = 'Mapping'\n      ParentColor = False\n    end\n    object Radio_LinearAntialias: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 56\n      Width = 98\n      Caption = 'Linear antialias'\n      OnChange = RadioButtonChange\n      TabOrder = 0\n    end\n    object Radio_Linear: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 72\n      Width = 52\n      Caption = 'Linear'\n      OnChange = RadioButtonChange\n      TabOrder = 1\n    end\n    object Radio_AffineAntialias: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 88\n      Width = 98\n      Caption = 'Affine antialias'\n      OnChange = RadioButtonChange\n      TabOrder = 2\n    end\n    object Radio_Affine: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 104\n      Width = 52\n      Caption = 'Affine'\n      OnChange = RadioButtonChange\n      TabOrder = 3\n    end\n    object Radio_PerspectiveAntialias: TRadioButton\n      Left = 8\n      Height = 19\n      Top = 24\n      Width = 126\n      Caption = 'Perspective antialias'\n      Checked = True\n      OnChange = RadioButtonChange\n      TabOrder = 5\n      TabStop = True\n    end\n  end\n  object Panel2: TPanel\n    Left = 240\n    Height = 130\n    Top = 360\n    Width = 136\n    Anchors = [akRight, akBottom]\n    ClientHeight = 130\n    ClientWidth = 136\n    TabOrder = 1\n    object Label2: TLabel\n      Left = 8\n      Height = 15\n      Top = 7\n      Width = 68\n      Caption = 'Interpolation'\n      ParentColor = False\n    end\n    object Radio_InterpBox: TRadioButton\n      Left = 15\n      Height = 19\n      Top = 32\n      Width = 39\n      Caption = 'Box'\n      Checked = True\n      OnChange = RadioButtonChange\n      TabOrder = 3\n      TabStop = True\n    end\n    object Radio_InterpLinear: TRadioButton\n      Left = 15\n      Height = 19\n      Top = 48\n      Width = 52\n      Caption = 'Linear'\n      OnChange = RadioButtonChange\n      TabOrder = 0\n    end\n    object Radio_InterpHalfCosine: TRadioButton\n      Left = 15\n      Height = 19\n      Top = 64\n      Width = 81\n      Caption = 'Half-cosine'\n      OnChange = RadioButtonChange\n      TabOrder = 1\n    end\n    object Radio_InterpCosine: TRadioButton\n      Left = 15\n      Height = 19\n      Top = 80\n      Width = 56\n      Caption = 'Cosine'\n      TabOrder = 2\n    end\n  end\nend\n"
  },
  {
    "path": "test/bgraaggtest/image_perspective_main.pas",
    "content": "unit image_perspective_main;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, ComCtrls, BGRABitmap, BGRABitmapTypes, LMessages, EpikTimer;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Label1: TLabel;\n    Label2: TLabel;\n    Panel1: TPanel;\n    Panel2: TPanel;\n    Radio_InterpBox: TRadioButton;\n    Radio_InterpLinear: TRadioButton;\n    Radio_InterpHalfCosine: TRadioButton;\n    Radio_InterpCosine: TRadioButton;\n    Radio_Perspective: TRadioButton;\n    Radio_LinearAntialias: TRadioButton;\n    Radio_Linear: TRadioButton;\n    Radio_AffineAntialias: TRadioButton;\n    Radio_Affine: TRadioButton;\n    Radio_PerspectiveAntialias: TRadioButton;\n    TrackBar1: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);\n    { private declarations }\n    procedure FormPaint(Sender: TObject);\n    procedure RadioButtonChange(Sender: TObject);\n    procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND;\n  public\n    { public declarations }\n    MovingPointIndex: Integer;\n    MovingOrigin: TPointF;\n    pts: array[0..3] of TPointF;\n    image: TBGRABitmap;\n    stopwatch: TEpikTimer;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nprocedure NicePoint(bmp: TBGRABitmap; x, y: single; scale: single = 1);\nbegin\n    bmp.EllipseAntialias(x,y,4*scale,4*scale,BGRA(0,0,0,192),scale);\n    bmp.EllipseAntialias(x,y,3*scale,3*scale,BGRA(255,255,255,192),scale);\n    bmp.EllipseAntialias(x,y,2*scale,2*scale,BGRA(0,0,0,192),scale);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar bmp: TBGRABitmap;\n    tx,ty,i: Integer;\n    texPos, scaledPts: array of TPointF;\n    scale: double;\nbegin\n  tx := ClientWidth;\n  ty := clientHeight;\n\n  if Radio_InterpBox.Checked then\n    image.ScanInterpolationFilter := rfBox else\n  if Radio_InterpLinear.Checked then\n    image.ScanInterpolationFilter := rfLinear else\n  if Radio_InterpHalfCosine.Checked then\n    image.ScanInterpolationFilter := rfHalfCosine else\n  if Radio_InterpCosine.Checked then\n    image.ScanInterpolationFilter := rfCosine;\n\n  If Radio_Affine.Checked or Radio_AffineAntialias.Checked then\n    pts[2] := pts[1]+(pts[3]-pts[0]);\n\n  scale := GetCanvasScaleFactor;\n  bmp := TBGRABitmap.Create(round(tx*scale),round(ty*scale),BGRAWhite);\n  setLength({%H-}scaledPts, length(pts));\n  for i := 0 to high(pts) do scaledPts[i] := scale*pts[i];\n\n  stopwatch.clear;\n  stopwatch.start;\n\n  texPos := PointsF([PointF(0,0),PointF(image.width-1,0),\n              PointF(image.width-1,image.Height-1),PointF(0,image.Height-1)]);\n  if Radio_Perspective.Checked or Radio_PerspectiveAntialias.Checked then\n  begin\n    if Radio_PerspectiveAntialias.Checked then\n      bmp.FillQuadPerspectiveMappingAntialias(scaledPts[0],scaledPts[1],scaledPts[2],scaledPts[3], image,\n                texPos[0],texPos[1],texPos[2],texPos[3])\n    else\n      bmp.FillQuadPerspectiveMapping(scaledPts[0],scaledPts[1],scaledPts[2],scaledPts[3], image,\n              texPos[0],texPos[1],texPos[2],texPos[3]);\n  end else\n  if Radio_LinearAntialias.Checked then\n  begin\n    bmp.FillQuadLinearMappingAntialias(scaledPts[0],scaledPts[1],scaledPts[2],scaledPts[3], image,\n        texPos[0],texPos[1],texPos[2],texPos[3]);\n  end\n  else if Radio_Linear.Checked then\n  begin\n    bmp.FillQuadLinearMapping(scaledPts[0],scaledPts[1],scaledPts[2],scaledPts[3], image,\n        texPos[0],texPos[1],texPos[2],texPos[3], true, fcNone, false);\n  end\n  else if Radio_Affine.Checked then\n  begin\n    bmp.FillQuadAffineMapping(scaledPts[0],scaledPts[1],scaledPts[3],image);\n  end\n  else if Radio_AffineAntialias.checked then\n  begin\n    bmp.FillQuadAffineMappingAntialias(scaledPts[0],scaledPts[1],scaledPts[3],image);\n  end;\n\n  stopwatch.stop;\n  //bmp.DrawPolygonAntialias(scaledPts,BGRA(0,0,0,64),scale);\n  bmp.FontHeight:= round(bmp.FontHeight*scale);\n  bmp.textOut(0,0,inttostr(round(stopwatch.Elapsed*1000))+' ms',BGRABlack);\n\n  for i := 0 to 3 do\n    NicePoint(bmp,scaledPts[i].x,scaledPts[i].y, scale);\n  bmp.Draw(Canvas,rect(0,0,tx,ty));\n\n  bmp.free;\nend;\n\nprocedure TForm1.RadioButtonChange(Sender: TObject);\nbegin\n  invalidate;\nend;\n\nprocedure TForm1.WMEraseBkgnd(var Message: TLMEraseBkgnd);\nbegin\n  //\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar\n  appPath: String;\nbegin\n  pts[0] := PointF(50,50);\n  pts[1] := PointF(clientwidth-150,50);\n  pts[2] := PointF(clientwidth-150,clientheight-150);\n  pts[3] := PointF(120,clientheight-200);\n  MovingPointIndex := -1;\n  appPath := ExtractFilePath(ParamStr(0));\n  image := TBGRABitmap.Create(appPath+'spheres.png');\n  stopwatch := TEpikTimer.Create(Self);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  image.free;\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar maxDist,dist: single;\n    mousePos,vect: TPointF;\n    i: Integer;\nbegin\n  if Button <> mbLeft then exit;\n\n  //select point to move\n  MovingPointIndex := -1;\n  maxDist := 10;\n  mousePos := PointF(X,Y);\n  MovingOrigin := mousePos;\n\n  for i := 0 to high(pts) do\n  begin\n    vect := pts[i] - mousePos;\n    dist := sqrt(vect*vect);\n    if dist < maxDist then\n    begin\n      maxDist := dist;\n      MovingPointIndex := i;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  mousePos: TPointF;\n  i: Integer;\nbegin\n  if ssLeft in Shift then\n  begin\n    mousePos := PointF(X,Y);\n    if MovingPointIndex <> -1 then\n      pts[MovingPointIndex].Offset(mousePos-MovingOrigin) else\n    begin\n      for i := 0 to high(pts) do\n        pts[i].Offset(mousePos-MovingOrigin);\n    end;\n    Invalidate;\n    MovingOrigin := mousePos;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then MovingPointIndex := -1;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgralape/basic_functions.inc",
    "content": "procedure MyGetScanLine{$i lape.func}\nbegin\n  PBGRAPixel(Result^) := target.ScanLine[PInt32(Params^[0])^];\n  WillInvalidateBitmap(targetIndex);\nend;\n\nprocedure MyGetBitmapWidth{$i lape.func}\nbegin\n  Int32(Result^) := target.Width;\nend;\n\nprocedure MyGetBitmapHeight{$i lape.func}\nbegin\n  Int32(Result^) := target.Height;\nend;\n\nprocedure MyPtInClipRect{$i lape.func}\nbegin\n  LongBool(Result^) := target.PtInClipRect(PInt32(Params^[0])^,PInt32(Params^[1])^);\nend;\n\nprocedure MyPtInRectPointFirst{$i lape.func}\ntype PPoint = ^TPoint;\n  PRect = ^TRect;\nbegin\n  LongBool(Result^) := PtInRect(PPoint(Params^[0])^,PRect(Params^[1])^);\nend;\n\nprocedure MyPtInRectPointLast{$i lape.func}\ntype PPoint = ^TPoint;\n  PRect = ^TRect;\nbegin\n  LongBool(Result^) := PtInRect(PPoint(Params^[1])^,PRect(Params^[0])^);\nend;\n\nprocedure MyGetClipRect{$i lape.func}\nbegin\n  TRect(Result^) := target.ClipRect;\nend;\n\nprocedure MySetClipRect{$i lape.proc}\ntype PRect = ^TRect;\nbegin\n  target.ClipRect := PRect(Params^[0])^;\nend;\n\nprocedure MySetNoClip{$i lape.proc}\nbegin\n  target.NoClip;\nend;\n\nprocedure MyBGRA3{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := BGRA(PByte(Params^[0])^,PByte(Params^[1])^,PByte(Params^[2])^);\nend;\n\nprocedure MyBGRA4{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := BGRA(PByte(Params^[0])^,PByte(Params^[1])^,PByte(Params^[2])^,PByte(Params^[3])^);\nend;\n\nprocedure MySetPixel{$i lape.proc}\nbegin\n  target.SetPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\nend;\n\nprocedure MyNormalPixel{$i lape.proc}\nbegin\n  target.DrawPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\nend;\n\nprocedure MyLinearPixel{$i lape.proc}\nbegin\n  target.FastBlendPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\nend;\n\nprocedure MyXorPixel{$i lape.proc}\nbegin\n  target.XorPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\nend;\n\nprocedure MyErasePixel{$i lape.proc}\nbegin\n  target.ErasePixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PByte(Params^[2])^);\nend;\n\nprocedure MyDrawPixel{$i lape.proc}\nbegin\n  case TDrawMode(PInt32(Params^[3])^) of\n  dmSet: target.SetPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  dmSetExceptTransparent: if PBGRAPixel(Params^[2])^.alpha = 255 then target.SetPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  dmLinearBlend: target.FastBlendPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  dmDrawWithTransparency: target.DrawPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  dmXor: target.XorPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  end;\nend;\n\nprocedure MyAlphaPixel{$i lape.proc}\nbegin\n  target.AlphaPixel(PInt32(Params^[0])^,PInt32(Params^[1])^,PByte(Params^[2])^);\nend;\n\nprocedure MyGetPixel{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := target.GetPixel(PInt32(Params^[0])^,PInt32(Params^[1])^);\nend;\n\nprocedure MyGetPixelSingle{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := target.GetPixel(PSingle(Params^[0])^,PSingle(Params^[1])^);\nend;\n\nprocedure MyGetPixelSingleCycleX{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := target.GetPixelCycle(PSingle(Params^[0])^,PSingle(Params^[1])^,rfLinear,true,false);\nend;\n\nprocedure MyGetPixelSingleCycleY{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := target.GetPixelCycle(PSingle(Params^[0])^,PSingle(Params^[1])^,rfLinear,false,true);\nend;\n\nprocedure MyGetPixelSingleCycleXY{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := target.GetPixelCycle(PSingle(Params^[0])^,PSingle(Params^[1])^,rfLinear,true,true);\nend;\n\nprocedure MyFill{$i lape.proc}\nbegin\n  target.Fill(PBGRAPixel(Params^[0])^);\nend;\n\nprocedure MyAlphaFill{$i lape.proc}\nbegin\n  target.AlphaFill(PByte(Params^[0])^);\nend;\n\nprocedure MyPutImage{$i lape.proc}\nbegin\n  target.PutImage(PInt32(Params^[0])^,PInt32(Params^[1])^, GetBitmap(PInt32(Params^[2])^), TDrawMode(PInt32(Params^[3])^), PByte(Params^[4])^);\nend;\n\nprocedure MyNewBitmap{$i lape.func}\nvar idx: integer;\n  bmp: TBGRABitmap;\nbegin\n  bmp := TBGRABitmap.Create(PInt32(Params^[0])^,PInt32(Params^[1])^);\n  idx := NewBitmapEntry;\n  Int32(result^) := idx;\n  bitmaps[idx].Bitmap := bmp;\n  bitmaps[idx].Registered := false;\nend;\n\nprocedure MyNewBitmapFromColor{$i lape.func}\nvar idx: integer;\n  bmp: TBGRABitmap;\nbegin\n  bmp := TBGRABitmap.Create(PInt32(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^);\n  idx := NewBitmapEntry;\n  Int32(result^) := idx;\n  bitmaps[idx].Bitmap := bmp;\n  bitmaps[idx].Registered := false;\nend;\n\nprocedure MyNewBitmapFromFile{$i lape.func}\nvar idx: integer;\n  bmp: TBGRABitmap;\nbegin\n  bmp := TBGRABitmap.Create(PlpString(Params^[0])^,true);\n  idx := NewBitmapEntry;\n  Int32(result^) := idx;\n  bitmaps[idx].Bitmap := bmp;\n  bitmaps[idx].Registered := false;\nend;\n\nprocedure MySelectedBitmap{$i lape.func}\nbegin\n  Int32(result^) := targetIndex;\nend;\n\nprocedure MyFreeBitmap{$i lape.proc}\nvar idx: integer;\nbegin\n  idx := PInt32(Params^[0])^;\n  if idx = targetIndex then\n    raise exception.Create('You cannot free the active bitmap');\n  FreeBitmap(idx);\nend;\n\nprocedure MyLockBitmap{$i lape.proc}\nvar idx: integer;\nbegin\n  idx := PInt32(Params^[0])^;\n  if (idx >= 0) and (idx < length(bitmaps)) then\n    inc(bitmaps[idx].LockedCount);\nend;\n\nprocedure MyUnlockBitmap{$i lape.proc}\nvar idx: integer;\nbegin\n  idx := PInt32(Params^[0])^;\n  if (idx >= 0) and (idx < length(bitmaps)) then\n  begin\n    if bitmaps[idx].LockedCount <= 0 then\n      raise exception.Create('Bitmap is not locked');\n    dec(bitmaps[idx].LockedCount);\n  end;\nend;\n\nprocedure MySelectBitmap{$i lape.proc}\nvar idx: integer;\nbegin\n  idx := PInt32(Params^[0])^;\n  SetTargetBitmap(idx);\nend;\n\nprocedure MySetBitmapSize{$i lape.proc}\nbegin\n  if (targetIndex >= 0) and (targetIndex < length(bitmaps)) then\n  begin\n    if (bitmaps[targetIndex].LockedCount <> 0) then\n      raise exception.Create('Bitmap is locked');\n    target.SetSize(PInt32(Params^[0])^,PInt32(Params^[1])^);\n  end;\nend;\n\nprocedure MyAssignBitmap{$i lape.proc}\nbegin\n  target.Assign(GetBitmap(PInt32(Params^[0])^));\nend;\n\nprocedure MyDuplicateBitmap{$i lape.func}\nvar copy: TBGRABitmap;\n  srcIdx,idx: integer;\nbegin\n  srcIdx := PInt32(Params^[0])^;\n  copy := GetBitmap(srcIdx).Duplicate;\n  idx := NewBitmapEntry;\n  bitmaps[idx].Bitmap := copy;\n  bitmaps[idx].Invalidated := false;\n  bitmaps[idx].Registered := false;\n  Int32(result^) := idx;\nend;\n\nprocedure RegisterBasicFunctions(Compiler: TLapeCompiler);\nbegin\n  Compiler.addGlobalFunc('function GetScanLine(y: Int32) : PBGRAPixel;', @MyGetScanline);\n  Compiler.addGlobalFunc('function BitmapWidth : Int32;', @MyGetBitmapWidth);\n  Compiler.addGlobalFunc('function BitmapHeight : Int32;', @MyGetBitmapHeight);\n  Compiler.addGlobalFunc('procedure FillBitmap(c: TBGRAPixel);', @MyFill);\n  Compiler.addGlobalFunc('procedure FillBitmapAlpha(alpha: byte);', @MyAlphaFill);\n  Compiler.addGlobalFunc('function BGRA(red,green,blue,alpha: byte): TBGRAPixel;', @MyBGRA4);\n  Compiler.addGlobalFunc('function BGRA(red,green,blue: byte): TBGRAPixel; overload;', @MyBGRA3);\n  Compiler.addGlobalFunc('function PtInClipRect(x, y: Int32): LongBool;', @MyPtInClipRect);\n  Compiler.addGlobalFunc('function GetClipRect: TRect;', @MyGetClipRect);\n  Compiler.addGlobalFunc('procedure SetClipRect(ARect: TRect);', @MySetClipRect);\n  Compiler.addGlobalFunc('function PtInRect(const APoint: TPoint; const ARect: TRect): LongBool;', @MyPtInRectPointFirst);\n  Compiler.addGlobalFunc('function PtInRect(const ARect: TRect; const APoint: TPoint): LongBool; overload;', @MyPtInRectPointLast);\n  Compiler.addGlobalFunc('procedure NoClip;', @MySetNoClip);\n  Compiler.addGlobalFunc('procedure SetPixel(x,y: Int32; c: TBGRAPixel);', @MySetPixel);\n  Compiler.addGlobalFunc('procedure NormalPixel(x,y: Int32; c: TBGRAPixel);', @MyNormalPixel);\n  Compiler.addGlobalFunc('procedure LinearPixel(x,y: Int32; c: TBGRAPixel);', @MyLinearPixel);\n  Compiler.addGlobalFunc('procedure XorPixel(x,y: Int32; c: TBGRAPixel);', @MyXorPixel);\n  Compiler.addGlobalFunc('procedure ErasePixel(x,y: Int32; alpha: byte);', @MyErasePixel);\n  Compiler.addGlobalFunc('procedure AlphaPixel(x,y: Int32; alpha: byte);', @MyAlphaPixel);\n  Compiler.addGlobalFunc('procedure _DrawPixel(x,y: Int32; c: TBGRAPixel; ADrawMode: Int32);', @MyDrawPixel);\n  Compiler.addGlobalFunc('function GetPixel(x,y: Int32): TBGRAPixel;', @MyGetPixel);\n  Compiler.addGlobalFunc('function GetPixel(x,y: single): TBGRAPixel; overload;', @MyGetPixelSingle);\n  Compiler.addGlobalFunc('function GetPixelCycle(x,y: single): TBGRAPixel; overload;', @MyGetPixelSingleCycleXY);\n  Compiler.addGlobalFunc('function GetPixelCycleX(x,y: single): TBGRAPixel; overload;', @MyGetPixelSingleCycleX);\n  Compiler.addGlobalFunc('function GetPixelCycleY(x,y: single): TBGRAPixel; overload;', @MyGetPixelSingleCycleY);\n  Compiler.addGlobalFunc('function CreateBitmap(width,height: Int32): TBGRABitmap;', @MyNewBitmap);\n  Compiler.addGlobalFunc('function CreateBitmap(width,height: Int32; c: TBGRAPixel): TBGRABitmap; overload;', @MyNewBitmapFromColor);\n  Compiler.addGlobalFunc('function CreateBitmap(filename: string): TBGRABitmap; overload;', @MyNewBitmapFromFile);\n  Compiler.addGlobalFunc('function SelectedBitmap: TBGRABitmap;', @MySelectedBitmap);\n  Compiler.addGlobalFunc('procedure TBGRABitmap.Free;', @MyFreeBitmap);\n  Compiler.addGlobalFunc('procedure TBGRABitmap.Select;', @MySelectBitmap);\n  Compiler.addGlobalFunc('procedure _PutImage(x,y: Int32; bmp: TBGRABitmap; ADrawMode: Int32; alpha: byte);', @MyPutImage);\n  Compiler.addGlobalFunc('procedure TBGRABitmap._Lock;', @MyLockBitmap);\n  Compiler.addGlobalFunc('procedure TBGRABitmap._Unlock;', @MyUnlockBitmap);\n  Compiler.addGlobalFunc('procedure AssignBitmap(bmp: TBGRABitmap);', @MyAssignBitmap);\n  Compiler.addGlobalFunc('procedure SetBitmapSize(width,height: integer);', @MySetBitmapSize);\n  Compiler.addGlobalFunc('function TBGRABitmap.Duplicate: TBGRABitmap;', @MyDuplicateBitmap);\nend;\n"
  },
  {
    "path": "test/bgralape/basic_geometry_functions.inc",
    "content": "procedure MyFillRect{$i lape.proc}\nbegin\n  target.FillRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PBGRAPixel(Params^[4])^,TDrawMode(PInt32(Params^[5])^));\nend;\n\nprocedure MyRectangle{$i lape.proc}\nbegin\n  target.Rectangle(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PBGRAPixel(Params^[4])^,TDrawMode(PInt32(Params^[5])^));\nend;\n\nprocedure MyRectangleWithFill{$i lape.proc}\nbegin\n  target.Rectangle(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PBGRAPixel(Params^[4])^,PBGRAPixel(Params^[5])^,TDrawMode(PInt32(Params^[6])^));\nend;\n\n\nfunction GetSortedRect(x1,y1,x2,y2: integer): TRect;\nbegin\n  if x1 > x2 then\n  begin\n    result.left := x2;\n    result.right := x1;\n  end else\n  begin\n    result.left := x1;\n    result.right := x2;\n  end;\n  if y1 > y2 then\n  begin\n    result.top := y2;\n    result.bottom := y1;\n  end else\n  begin\n    result.top := y1;\n    result.bottom := y2;\n  end;\nend;\n\nprocedure MyFillRoundRect{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[7])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[8])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     target.FillRoundRectAntialias(Left-0.5,top-0.5,right-0.5,bottom-0.5,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,[]);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillRoundRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,round(PSingle(Params^[4])^*2),round(PSingle(Params^[5])^*2),PBGRAPixel(Params^[6])^,dm);\nend;\n\nprocedure MyRoundRect{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[7])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[8])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     if (right>left) and (bottom>top) then\n     target.RoundRectAntialias(Left,top,right-1,bottom-1,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,1,[]);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.RoundRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,round(PSingle(Params^[4])^*2),round(PSingle(Params^[5])^*2),PBGRAPixel(Params^[6])^,dm);\nend;\n\nprocedure MyRoundRectWithFill{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[8])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[9])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     if (right>left) and (bottom>top) then\n     target.RoundRectAntialias(Left,top,right-1,bottom-1,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,1,PBGRAPixel(Params^[7])^,[]);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.RoundRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,round(PSingle(Params^[4])^*2),round(PSingle(Params^[5])^*2),PBGRAPixel(Params^[6])^,PBGRAPixel(Params^[7])^,dm);\nend;\n\n\n\nprocedure MyFillEllipseInRect{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[5])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[6])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     target.FillEllipseAntialias((Left+right)*0.5-0.5,(top+bottom)*0.5-0.5,(right-left)*0.5,(bottom-top)*0.5,PBGRAPixel(Params^[4])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillEllipseInRect(rect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^),PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyEllipseInRect{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[5])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[6])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     if (right>left) and (bottom>top) then\n     target.EllipseAntialias((Left+right)*0.5-0.5,(top+bottom)*0.5-0.5,(right-left-1)*0.5,(bottom-top-1)*0.5,PBGRAPixel(Params^[4])^,1);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.EllipseInRect(rect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^),PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyEllipseInRectWithFill{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[6])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[7])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    with GetSortedRect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^) do\n     if (right>left) and (bottom>top) then\n     target.EllipseAntialias((Left+right)*0.5-0.5,(top+bottom)*0.5-0.5,(right-left-1)*0.5,(bottom-top-1)*0.5,PBGRAPixel(Params^[4])^,1,PBGRAPixel(Params^[5])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.EllipseInRect(rect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^),PBGRAPixel(Params^[4])^,PBGRAPixel(Params^[5])^,dm);\nend;\n\n\n\n\nprocedure MyDrawLine{$i lape.proc}\nvar dm: TDrawMode;\nbegin\n  dm := TDrawMode(PInt32(Params^[5])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[6])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.DrawLineAntialias(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PBGRAPixel(Params^[4])^,true);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.DrawLine(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PBGRAPixel(Params^[4])^,true,dm);\nend;\n\nprocedure MyEraseLine{$i lape.proc}\nbegin\n  if PLongBool(Params^[5])^ then\n    target.EraseLineAntialias(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PByte(Params^[4])^,true)\n  else\n    target.EraseLine(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,PInt32(Params^[3])^,PByte(Params^[4])^,true);\nend;\n\n\n\nprocedure MyDrawPolyLine{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\n  dm: TDrawMode;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[2])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[3])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.DrawPolyLineAntialias(pts^,PBGRAPixel(Params^[1])^,true);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.DrawPolyLine(pts^,PBGRAPixel(Params^[1])^,true,dm);\nend;\n\nprocedure MyErasePolyLine{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\nbegin\n  pts := Params^[0];\n  if PLongBool(Params^[2])^ then\n    target.ErasePolyLineAntialias(pts^,PByte(Params^[1])^,true)\n  else\n    target.ErasePolyLine(pts^,PByte(Params^[1])^,true);\nend;\n\nprocedure MyErasePolygonOutline{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\nbegin\n  pts := Params^[0];\n  if PLongBool(Params^[2])^ then\n    target.ErasePolygonOutlineAntialias(pts^,PByte(Params^[1])^)\n  else\n    target.ErasePolygonOutline(pts^,PByte(Params^[1])^);\nend;\n\nprocedure MyDrawPolygon{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\n  dm: TDrawMode;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[2])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[3])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.DrawPolygonAntialias(pts^,PBGRAPixel(Params^[1])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.DrawPolygon(pts^,PBGRAPixel(Params^[1])^,dm);\nend;\n\nprocedure MyFillPoly{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\n  ptsF: ArrayOfTPointF;\n  dm: TDrawMode;\n  i: integer;\nbegin\n  pts := Params^[0];\n  setlength(ptsF, length(pts^));\n  for i := 0 to high(pts^) do\n    with pts^[i] do\n      ptsF[i] := PointF(x,y);\n  dm := TDrawMode(PInt32(Params^[2])^);\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and PLongBool(Params^[3])^ then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.FillPolyAntialias(ptsF,PBGRAPixel(Params^[1])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillPoly(ptsF,PBGRAPixel(Params^[1])^,dm);\nend;\n\nprocedure MyErasePoly{$i lape.proc}\ntype\n  ArrayOfTPoint = array of TPoint;\n  PArrayOfTPoint = ^ArrayOfTPoint;\nvar\n  pts: PArrayOfTPoint;\n  ptsF: ArrayOfTPointF;\n  i: integer;\nbegin\n  pts := Params^[0];\n  setlength(ptsF, length(pts^));\n  for i := 0 to high(pts^) do\n    with pts^[i] do\n      ptsF[i] := PointF(x,y);\n  if PLongBool(Params^[2])^ then\n    target.ErasePolyAntialias(ptsF,PByte(Params^[1])^)\n  else\n    target.ErasePoly(ptsF,PByte(Params^[1])^);\nend;\n\nprocedure RegisterBasicGeometryFunctions(Compiler: TLapeCompiler);\nbegin\n  Compiler.addGlobalFunc('procedure _FillRect(left, top, right, bottom: Int32; c: TBGRAPixel; ADrawMode: Int32);', @MyFillRect);\n  Compiler.addGlobalFunc('procedure _Rectangle(left, top, right, bottom: Int32; c: TBGRAPixel; ADrawMode: Int32);', @MyRectangle);\n  Compiler.addGlobalFunc('procedure _RectangleWithFill(left, top, right, bottom: Int32; c,fillcolor: TBGRAPixel; ADrawMode: Int32); overload;', @MyRectangleWithFill);\n\n  Compiler.addGlobalFunc('procedure _FillRoundRect(left, top, right, bottom: Int32; rx,ry: single; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillRoundRect);\n  Compiler.addGlobalFunc('procedure _RoundRect(left, top, right, bottom: Int32; rx,ry: single; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyRoundRect);\n  Compiler.addGlobalFunc('procedure _RoundRectWithFill(left, top, right, bottom: Int32; rx,ry: single; c,fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyRoundRectWithFill);\n\n  Compiler.addGlobalFunc('procedure _FillEllipseInRect(left, top, right, bottom: Int32; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillEllipseInRect);\n  Compiler.addGlobalFunc('procedure _EllipseInRect(left, top, right, bottom: Int32; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyEllipseInRect);\n  Compiler.addGlobalFunc('procedure _EllipseInRectWithFill(left, top, right, bottom: Int32; c,fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyEllipseInRectWithFill);\n\n  Compiler.addGlobalFunc('procedure _DrawLine(x1,y1,x2,y2: Int32; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyDrawLine);\n  Compiler.addGlobalFunc('procedure _EraseLine(x1,y1,x2,y2: Int32; alpha: byte; AA: LongBool);', @MyEraseLine);\n  Compiler.addGlobalFunc('procedure _DrawPolyLine(const points: array of TPoint; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyDrawPolyLine);\n  Compiler.addGlobalFunc('procedure _ErasePolyLine(const points: array of TPoint; alpha: byte; AA: LongBool);', @MyErasePolyLine);\n  Compiler.addGlobalFunc('procedure _DrawPolygon(const points: array of TPoint; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyDrawPolygon);\n  Compiler.addGlobalFunc('procedure _ErasePolygonOutline(const points: array of TPoint; alpha: byte; AA: LongBool);', @MyErasePolygonOutline);\n  Compiler.addGlobalFunc('procedure _FillPoly(const points: array of TPoint; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillPoly);\n  Compiler.addGlobalFunc('procedure _ErasePoly(const points: array of TPoint; alpha: byte; AA: LongBool);', @MyErasePoly);\nend;\n"
  },
  {
    "path": "test/bgralape/bgralapesys.pas",
    "content": "{ This file contains definitions used in Lape scripts\n  written using the script language }\n\ntype\n  TBGRAPixel = packed record blue,green,red,alpha: byte; end;\n  PBGRAPixel = ^TBGRAPixel;\n  TExpandedPixel = packed record red, green, blue, alpha: word; end;\n  THSLAPixel = packed record hue, saturation, lightness, alpha: word; end;\n  TGSBAPixel = THSLAPixel;\n  TDrawMode = (dmSet,dmSetExceptTransparent,dmLinearBlend,dmDrawWithTransparency,dmXor);\n  TForEachPixelProc = procedure(x,y: Int32; var APixel: TBGRAPixel);\n  TFontStyle = (fsBold, fsItalic, fsStrikeOut, fsUnderline);\n  TFontStyles = set of TFontStyle;\n  TTextAlignment = (taLeft, taRight, taCenter);\n  TTextLayout = (tlTop, tlCenter, tlBottom);\n  TRect = record Left,Top,Right,Bottom : Int32; end;\n  TPoint = record x,y: Int32; end;\n  TPointF = record x,y: single; end;\n  TBGRABitmap = record _Handle: Int32; end;\n\nimplementation\n\n//synonyms\nconst  \n  taLeftJustify = taLeft;\n  taRightJustify = taRight;\n  dmNormal = dmDrawWithTransparency;\n  dmLinear = dmLinearBlend;\n  dmFastBlend = dmLinearBlend;\n\nconst \n  CSSTransparent : TBGRAPixel = [0,0,0,0];\n  CSSWhite : TBGRAPixel = [255,255,255,255];\n  CSSBlack : TBGRAPixel = [0,0,0,255];\n  \n  //Red colors\n  CSSIndianRed: TBGRAPixel = [92,92,205,255];\n  CSSLightCoral: TBGRAPixel = [128,128,240,255];\n  CSSSalmon: TBGRAPixel = [114,128,250,255];\n  CSSDarkSalmon: TBGRAPixel = [122,150,233,255];\n  CSSRed: TBGRAPixel = [0,0,255,255];\n  CSSCrimson: TBGRAPixel = [60,20,220,255];\n  CSSFireBrick: TBGRAPixel = [34,34,178,255];\n  CSSDarkRed: TBGRAPixel = [0,0,139,255];\n\n  //Pink colors\n  CSSPink: TBGRAPixel = [203,192,255,255];\n  CSSLightPink: TBGRAPixel = [193,182,255,255];\n  CSSHotPink: TBGRAPixel = [180,105,255,255];\n  CSSDeepPink: TBGRAPixel = [147,20,255,255];\n  CSSMediumVioletRed: TBGRAPixel = [133,21,199,255];\n  CSSPaleVioletRed: TBGRAPixel = [147,112,219,255];\n\n  //Orange colors\n  CSSLightSalmon: TBGRAPixel = [122,160,255,255];\n  CSSCoral: TBGRAPixel = [80,127,255,255];\n  CSSTomato: TBGRAPixel = [71,99,255,255];\n  CSSOrangeRed: TBGRAPixel = [0,69,255,255];\n  CSSDarkOrange: TBGRAPixel = [0,140,255,255];\n  CSSOrange: TBGRAPixel = [0,165,255,255];\n\n  //Yellow colors\n  CSSGold: TBGRAPixel = [0,215,255,255];\n  CSSYellow: TBGRAPixel = [0,255,255,255];\n  CSSLightYellow: TBGRAPixel = [224,255,255,255];\n  CSSLemonChiffon: TBGRAPixel = [205,250,255,255];\n  CSSLightGoldenrodYellow: TBGRAPixel = [210,250,250,255];\n  CSSPapayaWhip: TBGRAPixel = [213,239,255,255];\n  CSSMoccasin: TBGRAPixel = [181,228,255,255];\n  CSSPeachPuff: TBGRAPixel = [185,218,255,255];\n  CSSPaleGoldenrod: TBGRAPixel = [170,232,238,255];\n  CSSKhaki: TBGRAPixel = [140,230,240,255];\n  CSSDarkKhaki: TBGRAPixel = [107,183,189,255];\n\n  //Purple colors\n  CSSLavender: TBGRAPixel = [250,230,230,255];\n  CSSThistle: TBGRAPixel = [216,191,216,255];\n  CSSPlum: TBGRAPixel = [221,160,221,255];\n  CSSViolet: TBGRAPixel = [238,130,238,255];\n  CSSOrchid: TBGRAPixel = [214,112,218,255];\n  CSSFuchsia: TBGRAPixel = [255,0,255,255];\n  CSSMagenta: TBGRAPixel = [255,0,255,255];\n  CSSMediumOrchid: TBGRAPixel = [211,85,186,255];\n  CSSMediumPurple: TBGRAPixel = [219,112,147,255];\n  CSSBlueViolet: TBGRAPixel = [226,43,138,255];\n  CSSDarkViolet: TBGRAPixel = [211,0,148,255];\n  CSSDarkOrchid: TBGRAPixel = [204,50,153,255];\n  CSSDarkMagenta: TBGRAPixel = [139,0,139,255];\n  CSSPurple: TBGRAPixel = [128,0,128,255];\n  CSSIndigo: TBGRAPixel = [130,0,75,255];\n  CSSDarkSlateBlue: TBGRAPixel = [139,61,72,255];\n  CSSSlateBlue: TBGRAPixel = [205,90,106,255];\n  CSSMediumSlateBlue: TBGRAPixel = [238,104,123,255];\n\n  //Green colors\n  CSSGreenYellow: TBGRAPixel = [47,255,173,255];\n  CSSChartreuse: TBGRAPixel = [0,255,127,255];\n  CSSLawnGreen: TBGRAPixel = [0,252,124,255];\n  CSSLime: TBGRAPixel = [0,255,0,255];\n  CSSLimeGreen: TBGRAPixel = [50,205,50,255];\n  CSSPaleGreen: TBGRAPixel = [152,251,152,255];\n  CSSLightGreen: TBGRAPixel = [144,238,144,255];\n  CSSMediumSpringGreen: TBGRAPixel = [154,250,0,255];\n  CSSSpringGreen: TBGRAPixel = [127,255,0,255];\n  CSSMediumSeaGreen: TBGRAPixel = [113,179,60,255];\n  CSSSeaGreen: TBGRAPixel = [87,139,46,255];\n  CSSForestGreen: TBGRAPixel = [34,139,34,255];\n  CSSGreen: TBGRAPixel = [0,128,0,255];\n  CSSDarkGreen: TBGRAPixel = [0,100,0,255];\n  CSSYellowGreen: TBGRAPixel = [50,205,154,255];\n  CSSOliveDrab: TBGRAPixel = [35,142,107,255];\n  CSSOlive: TBGRAPixel = [0,128,128,255];\n  CSSDarkOliveGreen: TBGRAPixel = [47,107,85,255];\n  CSSMediumAquamarine: TBGRAPixel = [170,205,102,255];\n  CSSDarkSeaGreen: TBGRAPixel = [143,188,143,255];\n  CSSLightSeaGreen: TBGRAPixel = [170,178,32,255];\n  CSSDarkCyan: TBGRAPixel = [139,139,0,255];\n  CSSTeal: TBGRAPixel = [128,128,0,255];\n\n  //Blue/Cyan colors\n  CSSAqua: TBGRAPixel = [255,255,0,255];\n  CSSCyan: TBGRAPixel = [255,255,0,255];\n  CSSLightCyan: TBGRAPixel = [255,255,224,255];\n  CSSPaleTurquoise: TBGRAPixel = [238,238,175,255];\n  CSSAquamarine: TBGRAPixel = [212,255,127,255];\n  CSSTurquoise: TBGRAPixel = [208,224,64,255];\n  CSSMediumTurquoise: TBGRAPixel = [204,209,72,255];\n  CSSDarkTurquoise: TBGRAPixel = [209,206,0,255];\n  CSSCadetBlue: TBGRAPixel = [160,158,95,255];\n  CSSSteelBlue: TBGRAPixel = [180,130,70,255];\n  CSSLightSteelBlue: TBGRAPixel = [222,196,176,255];\n  CSSPowderBlue: TBGRAPixel = [230,224,176,255];\n  CSSLightBlue: TBGRAPixel = [230,216,173,255];\n  CSSSkyBlue: TBGRAPixel = [235,206,135,255];\n  CSSLightSkyBlue: TBGRAPixel = [250,206,135,255];\n  CSSDeepSkyBlue: TBGRAPixel = [255,191,0,255];\n  CSSDodgerBlue: TBGRAPixel = [255,144,30,255];\n  CSSCornflowerBlue: TBGRAPixel = [237,149,100,255];\n  CSSRoyalBlue: TBGRAPixel = [255,105,65,255];\n  CSSBlue: TBGRAPixel = [255,0,0,255];\n  CSSMediumBlue: TBGRAPixel = [205,0,0,255];\n  CSSDarkBlue: TBGRAPixel = [139,0,0,255];\n  CSSNavy: TBGRAPixel = [128,0,0,255];\n  CSSMidnightBlue: TBGRAPixel = [112,25,25,255];\n\n  //Brown colors\n  CSSCornsilk: TBGRAPixel = [220,248,255,255];\n  CSSBlanchedAlmond: TBGRAPixel = [205,235,255,255];\n  CSSBisque: TBGRAPixel = [196,228,255,255];\n  CSSNavajoWhite: TBGRAPixel = [173,222,255,255];\n  CSSWheat: TBGRAPixel = [179,222,245,255];\n  CSSBurlyWood: TBGRAPixel = [135,184,222,255];\n  CSSTan: TBGRAPixel = [140,180,210,255];\n  CSSRosyBrown: TBGRAPixel = [143,143,188,255];\n  CSSSandyBrown: TBGRAPixel = [96,164,244,255];\n  CSSGoldenrod: TBGRAPixel = [32,165,218,255];\n  CSSDarkGoldenrod: TBGRAPixel = [11,134,184,255];\n  CSSPeru: TBGRAPixel = [63,133,205,255];\n  CSSChocolate: TBGRAPixel = [30,105,210,255];\n  CSSSaddleBrown: TBGRAPixel = [19,69,139,255];\n  CSSSienna: TBGRAPixel = [45,82,160,255];\n  CSSBrown: TBGRAPixel = [42,42,165,255];\n  CSSMaroon: TBGRAPixel = [0,0,128,255];\n\n  //White colors\n  CSSSnow: TBGRAPixel = [250,250,255,255];\n  CSSHoneydew: TBGRAPixel = [240,255,250,255];\n  CSSMintCream: TBGRAPixel = [250,255,245,255];\n  CSSAzure: TBGRAPixel = [255,255,240,255];\n  CSSAliceBlue: TBGRAPixel = [255,248,240,255];\n  CSSGhostWhite: TBGRAPixel = [255,248,248,255];\n  CSSWhiteSmoke: TBGRAPixel = [245,245,245,255];\n  CSSSeashell: TBGRAPixel = [255,245,238,255];\n  CSSBeige: TBGRAPixel = [220,245,245,255];\n  CSSOldLace: TBGRAPixel = [230,245,253,255];\n  CSSFloralWhite: TBGRAPixel = [240,250,255,255];\n  CSSIvory: TBGRAPixel = [240,255,255,255];\n  CSSAntiqueWhite: TBGRAPixel = [215,235,250,255];\n  CSSLinen: TBGRAPixel = [230,240,250,255];\n  CSSLavenderBlush: TBGRAPixel = [245,240,255,255];\n  CSSMistyRose: TBGRAPixel = [255,228,255,255];\n\n  //Gray colors\n  CSSGainsboro: TBGRAPixel = [220,220,220,255];\n  CSSLightGray: TBGRAPixel = [211,211,211,255];\n  CSSSilver: TBGRAPixel = [192,192,192,255];\n  CSSDarkGray: TBGRAPixel = [169,169,169,255];\n  CSSGray: TBGRAPixel = [128,128,128,255];\n  CSSDimGray: TBGRAPixel = [105,105,105,255];\n  CSSLightSlateGray: TBGRAPixel = [153,136,119,255];\n  CSSSlateGray: TBGRAPixel = [144,128,112,255];\n  CSSDarkSlateGray: TBGRAPixel = [79,79,47,255];\n\nvar\n  FontName: string = 'Arial';\n  FontStyle: TFontStyles;  \n  TextAlignment: TTextAlignment;\n  TextLayout: TTextLayout;\n  DrawMode: TDrawMode = dmDrawWithTransparency;\n  Antialiasing: boolean = true;\n\nfunction Odd(Value: Int32): boolean;\nbegin\n  result := (Value and 1) <> 0;\nend;\n  \nfunction Even(Value: Int32): boolean;\nbegin\n  result := (Value and 1) = 0;\nend;\n  \nprocedure TextOut(x, y: single; sUTF8: string; c: TBGRAPixel); override;\nbegin\n  _SetFontName(FontName);\n  _SetFontStyle(fsBold in FontStyle, fsItalic in FontStyle, fsStrikeOut in FontStyle, fsUnderline in FontStyle);\n  _SetTextAlignment(Int32(TextAlignment));\n  _SetTextLayout(Int32(TextLayout));\n  inherited(x,y,sUTF8,c);\nend;  \n\nprocedure TextOutAngle(x, y, angle: single; sUTF8: string; c: TBGRAPixel); override;\nbegin\n  _SetFontName(FontName);\n  _SetFontStyle(fsBold in FontStyle, fsItalic in FontStyle, fsStrikeOut in FontStyle, fsUnderline in FontStyle);\n  _SetTextAlignment(Int32(TextAlignment));\n  _SetTextLayout(Int32(TextLayout));\n  inherited(x,y,angle,sUTF8,c);\nend;  \n  \nprocedure TextRect(left,top,right,bottom: Int32; sUTF8: string; c: TBGRAPixel); override;\nbegin\n  _SetFontName(FontName);\n  _SetFontStyle(fsBold in FontStyle, fsItalic in FontStyle, fsStrikeOut in FontStyle, fsUnderline in FontStyle);\n  _SetTextAlignment(Int32(TextAlignment));\n  _SetTextLayout(Int32(TextLayout));\n  inherited(left,top,right,bottom,sUTF8,c);\nend;  \n\nprocedure TextRect(ARect: TRect; sUTF8: string; c: TBGRAPixel); overload;\nbegin\n  TextRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, sUTF8, c);\nend;\n  \nprocedure ForEachPixel(APixelProc: TForEachPixelProc); overload;\nvar \n  x,y,w,h: integer;\n  p: PBGRAPixel;\n  bmp: TBGRABitmap;\nbegin\n  w := BitmapWidth;\n  h := BitmapHeight;\n  bmp := SelectedBitmap;\n  bmp._Lock;\n  for y := 0 to h-1 do\n  begin\n    bmp.Select;\n    p := GetScanLine(y);\n\tfor x := 0 to w-1 do\n\tbegin\n\t  APixelProc(x,y,p^);\n\t  inc(p);\n\tend;\n  end;\n  bmp._Unlock;\nend;\n\nprocedure FillTransparent;\nbegin\n  FillBitmap(CSSTransparent);\nend;\n\nfunction Rect(left,top,right,bottom: Int32): TRect;\nbegin\n  result.Left := left;\n  result.Top := top;\n  result.Right := right;\n  result.Bottom := bottom;\nend;\n\nfunction RectWithSize(left,top,width,height: Int32): TRect;\nbegin\n  result.Left := left;\n  result.Top := top;\n  result.Right := left+width;\n  result.Bottom := top+height;\nend;\n\nfunction Point(x,y: Int32): TPoint;\nbegin\n  result.x := x;\n  result.y := y;\nend;\n\nprocedure SetClipRect(left,top,right,bottom: Int32); overload;\nbegin\n  SetClipRect(rect(left,top,right,bottom));\nend;\n\nprocedure DrawPixel(x,y : Int32; c: TBGRAPixel); overload;\nbegin\n  _DrawPixel(x,y,c,Int32(DrawMode));\nend;\n\nprocedure DrawLine(x1,y1,x2,y2: Int32; c: TBGRAPixel); overload;\nbegin\n  _DrawLine(x1,y1,x2,y2, c, Int32(DrawMode), Antialiasing);\nend;  \n\nprocedure DrawPolyLine(const points: array of TPoint; c: TBGRAPixel); overload;\nbegin\n  _DrawPolyLine(points, c, Int32(DrawMode), Antialiasing);\nend;  \n\nprocedure DrawPolygon(const points: array of TPoint; c: TBGRAPixel); overload;\nbegin\n  _DrawPolygon(points, c, Int32(DrawMode), Antialiasing);\nend;  \n\nprocedure EraseLine(x1,y1,x2,y2: Int32; alpha: byte); overload;\nbegin\n  _EraseLine(x1,y1,x2,y2, alpha, Antialiasing);\nend;  \n\nprocedure ErasePolyLine(const points: array of TPoint; alpha: byte); overload;\nbegin\n  _ErasePolyLine(points, alpha, Antialiasing);\nend;  \n\nprocedure ErasePolygonOutline(const points: array of TPoint; alpha: byte); overload;\nbegin\n  _ErasePolygonOutline(points, alpha, Antialiasing);\nend;  \n\n\n\nprocedure FillRect(left,top,right,bottom: Int32; c: TBGRAPixel); overload;\nbegin\n  _FillRect(left,top,right,bottom, c, Int32(DrawMode));\nend;\n\nprocedure FillRect(ARect: TRect; c: TBGRAPixel); overload;\nbegin\n  _FillRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, c, Int32(DrawMode));\nend;\n\nprocedure Rectangle(left,top,right,bottom: Int32; c: TBGRAPixel); overload;\nbegin\n  _Rectangle(left,top,right,bottom, c, Int32(DrawMode));\nend;\n\nprocedure Rectangle(ARect: TRect; c: TBGRAPixel); overload;\nbegin\n  _Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, c, Int32(DrawMode));\nend;\n\nprocedure Rectangle(left,top,right,bottom: Int32; c,fillcolor: TBGRAPixel); overload;\nbegin\n  _RectangleWithFill(left,top,right,bottom, c,fillcolor, Int32(DrawMode));\nend;\n\nprocedure Rectangle(ARect: TRect; c,fillcolor: TBGRAPixel); overload;\nbegin\n  _RectangleWithFill(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, c,fillcolor, Int32(DrawMode));\nend;\n\n\nprocedure FillRoundRect(left,top,right,bottom: Int32; rx,ry: single; c: TBGRAPixel); overload;\nbegin\n  _FillRoundRect(left,top,right,bottom,rx,ry, c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure FillRoundRect(ARect: TRect; rx,ry: single; c: TBGRAPixel); overload;\nbegin\n  _FillRoundRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom,rx,ry, c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure RoundRect(left,top,right,bottom: Int32; rx,ry: single; c: TBGRAPixel); overload;\nbegin\n  _RoundRect(left,top,right,bottom, rx,ry,c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure RoundRect(ARect: TRect; rx,ry: single; c: TBGRAPixel); overload;\nbegin\n  _RoundRect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, rx,ry,c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure RoundRect(left,top,right,bottom: Int32; rx,ry: single; c,fillcolor: TBGRAPixel); overload;\nbegin\n  _RoundRectWithFill(left,top,right,bottom, rx,ry,c,fillcolor, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure RoundRect(ARect: TRect; rx,ry: single; c,fillcolor: TBGRAPixel); overload;\nbegin\n  _RoundRectWithFill(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, rx,ry,c,fillcolor, Int32(DrawMode), Antialiasing);\nend;\n\n\n\nprocedure FillEllipse(x,y: integer; rx,ry: single; c: TBGRAPixel);\nbegin\n  _FillEllipseInRect(round(x-rx+0.5),round(y-ry+0.5),round(x+rx+0.5),round(y+ry+0.5),c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure Ellipse(x,y: integer; rx,ry: single; c: TBGRAPixel);\nbegin\n  _EllipseInRect(round(x-rx+0.5),round(y-ry+0.5),round(x+rx+0.5),round(y+ry+0.5),c, Int32(DrawMode), Antialiasing);\nend;\n\nprocedure Ellipse(x,y: integer; rx,ry: single; c,fillcolor: TBGRAPixel); overload;\nbegin\n  _EllipseInRectWithFill(round(x-rx+0.5),round(y-ry+0.5),round(x+rx+0.5),round(y+ry+0.5),c,fillcolor, Int32(DrawMode), Antialiasing);\nend;\n\n\nprocedure PutImage(x,y: integer; bmp: TBGRABitmap; alpha: byte = 255); overload;\nbegin\n  _PutImage(x,y, bmp, Int32(DrawMode), alpha);\nend;\n\nfunction BGRAToGrayscale(c: TBGRAPixel): TBGRAPixel;\nbegin\n  result := GrayscaleToBGRA(GetLightness(c));\n  result.alpha := c.alpha;\nend;\n\nfunction ExpandedToGrayscale(ec: TExpandedPixel): TExpandedPixel;\nbegin\n  result := GrayscaleToExpanded(GetLightness(ec));\n  result.alpha := ec.alpha;\nend;\n\n\nfunction PointF(x, y: single): TPointF;\nbegin\n  Result.x := x;\n  Result.y := y;\nend;\n\nfunction VectEq(const pt1, pt2: TPointF): boolean;\nbegin\n  result := (pt1.x = pt2.x) and (pt1.y = pt2.y);\nend;\n\nfunction VectSub(const pt1, pt2: TPointF): TPointF;\nbegin\n  result.x := pt1.x-pt2.x;\n  result.y := pt1.y-pt2.y;\nend;\n\nfunction VectNeg(const pt2: TPointF): TPointF;\nbegin\n  result.x := -pt2.x;\n  result.y := -pt2.y;\nend;\n\nfunction VectAdd(const pt1, pt2: TPointF): TPointF;\nbegin\n  result.x := pt1.x+pt2.x;\n  result.y := pt1.y+pt2.y;\nend;\n\nfunction VectDot(const pt1, pt2: TPointF): single;\nbegin\n  result := pt1.x*pt2.x + pt1.y*pt2.y;\nend;\n\nfunction VectScale(const pt1: TPointF; factor: single): TPointF;\nbegin\n  result.x := pt1.x*factor;\n  result.y := pt1.y*factor;\nend;\n\nfunction VectScale(factor: single; const pt1: TPointF): TPointF; overload;\nbegin\n  result.x := pt1.x*factor;\n  result.y := pt1.y*factor;\nend;\n\nfunction VectLen(dx, dy: single): single;\nbegin\n  result := sqrt(dx*dx+dy*dy);\nend;\n\nfunction VectLen(v: TPointF): single; overload;\nbegin\n  result := sqrt(v.x*v.x+v.y*v.y);\nend;\n\nprocedure FillRectF(left, top, right, bottom: single; c: TBGRAPixel);\nbegin\n  _FillRectF(left,top,right,bottom,c,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure RectangleF(left, top, right, bottom: single; c: TBGRAPixel; w: single);\nbegin\n  _RectangleF(left,top,right,bottom,c,w,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure RectangleF(left, top, right, bottom: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload;\nbegin\n  _RectangleF(left,top,right,bottom,c,w,fillcolor,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure FillRoundRectF(left, top, right, bottom,rx,ry: single; c: TBGRAPixel);\nbegin\n  _FillRoundRectF(left,top,right,bottom,rx,ry,c,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure RoundRectF(left, top, right, bottom,rx,ry: single; c: TBGRAPixel; w: single);\nbegin\n  _RoundRectF(left,top,right,bottom,rx,ry,c,w,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure RoundRectF(left, top, right, bottom,rx,ry: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload;\nbegin\n  _RoundRectF(left,top,right,bottom,rx,ry,c,w,fillcolor,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure FillEllipseF(x,y,rx,ry: single; c: TBGRAPixel);\nbegin\n  _FillEllipseF(x,y,rx,ry,c,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure EllipseF(x,y,rx,ry: single; c: TBGRAPixel; w: single);\nbegin\n  _EllipseF(x,y,rx,ry,c,w,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure EllipseF(x,y,rx,ry: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload;\nbegin\n  _EllipseF(x,y,rx,ry,c,w,fillcolor,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure DrawLineF(x1,y1,x2,y2: single; c: TBGRAPixel; w: single);\nbegin\n  _DrawLineF(x1,y1,x2,y2,c,w,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure DrawPolyLineF(const pts: array of TPointF; c: TBGRAPixel; w: single);\nbegin\n  _DrawPolyLineF(pts,c,w,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure DrawPolygonF(const pts: array of TPointF; c: TBGRAPixel; w: single);\nbegin\n  _DrawPolygonF(pts,c,w,Int32(DrawMode),Antialiasing);\nend;\n\nprocedure DrawPolyLineF(const pts: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload;\nbegin\n  _DrawPolyLineF(pts,c,w,fillcolor,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure DrawPolygonF(const pts: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel); overload;\nbegin\n  _DrawPolygonF(pts,c,w,fillcolor,Int32(DrawMode),Antialiasing);\nend;\n \nprocedure FillPolyF(const pts: array of TPointF; c: TBGRAPixel);\nbegin\n  _FillPolyF(pts,c,Int32(DrawMode),Antialiasing);\nend;\n"
  },
  {
    "path": "test/bgralape/color_functions.inc",
    "content": "procedure MyGammaExpansionValue{$i lape.func}\nbegin\n  Word(Result^) := GammaExpansionTab[PByte(Params^[0])^];\nend;\n\nprocedure MyGammaExpansionPixel{$i lape.func}\nbegin\n  TExpandedPixel(Result^) := GammaExpansion(PBGRAPixel(Params^[0])^);\nend;\n\nprocedure MyGammaCompressionValue{$i lape.func}\nbegin\n  Byte(Result^) := GammaCompressionTab[PWord(Params^[0])^];\nend;\n\nprocedure MyGammaCompressionPixel{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nbegin\n  TBGRAPixel(Result^) := GammaCompression(PExpandedPixel(Params^[0])^);\nend;\n\nprocedure MyGetIntensityExpanded{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nbegin\n  Word(Result^) := GetIntensity(PExpandedPixel(Params^[0])^);\nend;\n\nprocedure MySetIntensityExpanded{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nvar v: Int32;\nbegin\n  v := PInt32(Params^[1])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  TExpandedPixel(Result^) := SetIntensity(PExpandedPixel(Params^[0])^, v);\nend;\n\nprocedure MyGetIntensityBGRA{$i lape.func}\nbegin\n  Word(Result^) := GetIntensity(GammaExpansion(PBGRAPixel(Params^[0])^));\nend;\n\nprocedure MySetIntensityBGRA{$i lape.func}\nvar v: Int32;\nbegin\n  v := PInt32(Params^[1])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  TBGRAPixel(Result^) := GammaCompression(SetIntensity(GammaExpansion(PBGRAPixel(Params^[0])^), v));\nend;\n\n\n\nprocedure MyGetLightnessExpanded{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nbegin\n  Word(Result^) := GetLightness(PExpandedPixel(Params^[0])^);\nend;\n\nprocedure MySetLightnessExpanded{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nvar v: Int32;\nbegin\n  v := PInt32(Params^[1])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  TExpandedPixel(Result^) := SetLightness(PExpandedPixel(Params^[0])^, v);\nend;\n\nprocedure MyGetLightnessBGRA{$i lape.func}\nbegin\n  Word(Result^) := GetLightness(GammaExpansion(PBGRAPixel(Params^[0])^));\nend;\n\nprocedure MySetLightnessBGRA{$i lape.func}\nvar v: Int32;\nbegin\n  v := PInt32(Params^[1])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  TBGRAPixel(Result^) := GammaCompression(SetLightness(GammaExpansion(PBGRAPixel(Params^[0])^), v));\nend;\n\n\nprocedure MyBGRAToHSLA{$i lape.func}\nbegin\n  THSLAPixel(Result^) := BGRAToHSLA(PBGRAPixel(Params^[0])^);\nend;\n\nprocedure MyHSLAToBGRA{$i lape.func}\ntype PHSLAPixel = ^THSLAPixel;\nbegin\n  TBGRAPixel(Result^) := HSLAToBGRA(PHSLAPixel(Params^[0])^);\nend;\n\nprocedure MyExpandedToHSLA{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nbegin\n  THSLAPixel(Result^) := ExpandedToHSLA(PExpandedPixel(Params^[0])^);\nend;\n\nprocedure MyHSLAToExpanded{$i lape.func}\ntype PHSLAPixel = ^THSLAPixel;\nbegin\n  TExpandedPixel(Result^) := HSLAToExpanded(PHSLAPixel(Params^[0])^);\nend;\n\n\nprocedure MyGrayscaleToBGRA{$i lape.func}\nvar v: Int32;\nbegin\n  v := PInt32(Params^[0])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  TBGRAPixel(Result^) := GrayscaleToBGRA(v);\nend;\n\nprocedure MyGrayscaleToExpanded{$i lape.func}\nvar v: Int32;\nbegin\n  v := PInt32(Params^[0])^;\n  if v < 0 then v := 0;\n  if v > 65535 then v := 65535;\n  with TExpandedPixel(Result^) do\n  begin\n    red := v;\n    green := v;\n    blue := v;\n    alpha := 65535;\n  end;\nend;\n\n\nprocedure MyBGRAToGSBA{$i lape.func}\nbegin\n  TGSBAPixel(Result^) := BGRAToGSBA(PBGRAPixel(Params^[0])^);\nend;\n\nprocedure MyGSBAToBGRA{$i lape.func}\ntype PGSBAPixel = ^TGSBAPixel;\nbegin\n  TBGRAPixel(Result^) := GSBAToBGRA(PGSBAPixel(Params^[0])^);\nend;\n\nprocedure MyExpandedToGSBA{$i lape.func}\ntype\n  PExpandedPixel = ^TExpandedPixel;\nbegin\n  TGSBAPixel(Result^) := ExpandedToGSBA(PExpandedPixel(Params^[0])^);\nend;\n\nprocedure MyGSBAToExpanded{$i lape.func}\ntype PGSBAPixel = ^TGSBAPixel;\nbegin\n  TExpandedPixel(Result^) := GSBAToExpanded(PGSBAPixel(Params^[0])^);\nend;\n\n\n\nprocedure MyMergeBGRAArray{$i lape.func}\ntype\n  ArrayOfTBGRAPixel = array of TBGRAPixel;\n  PArrayOfTBGRAPixel = ^ArrayOfTBGRAPixel;\nvar\n  p: PArrayOfTBGRAPixel;\nbegin\n  p := PArrayOfTBGRAPixel(Params^[0]);\n  TBGRAPixel(Result^) := MergeBGRA(p^);\nend;\n\nprocedure MyMergeBGRAWithWeight{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := MergeBGRA(PBGRAPixel(Params^[0])^,PInt32(Params^[1])^,PBGRAPixel(Params^[2])^,PInt32(Params^[3])^);\nend;\n\n\nprocedure MyBGRAToStr{$i lape.func}\nbegin\n  lpString(Result^) := BGRAToStr(PBGRAPixel(Params^[0])^,CSSColors);\nend;\n\nprocedure MyStrToBGRA{$i lape.func}\nbegin\n  TBGRAPixel(Result^) := StrToBGRA(PlpString(Params^[0])^);\nend;\n\n\nprocedure RegisterColorFunctions(Compiler: TLapeCompiler);\nbegin\n  Compiler.addGlobalFunc('function GammaExpansion(AValue: Byte): Word;', @MyGammaExpansionValue);\n  Compiler.addGlobalFunc('function GammaExpansion(APixel: TBGRAPixel): TExpandedPixel; overload;', @MyGammaExpansionPixel);\n  Compiler.addGlobalFunc('function GammaCompression(AValue: Word): Byte;', @MyGammaCompressionValue);\n  Compiler.addGlobalFunc('function GammaCompression(const APixel: TExpandedPixel): TBGRAPixel; overload;', @MyGammaCompressionPixel);\n  Compiler.addGlobalFunc('function GetIntensity(ec: TExpandedPixel): Word;', @MyGetIntensityExpanded);\n  Compiler.addGlobalFunc('function SetIntensity(ec: TExpandedPixel; AIntensity: Int32): TExpandedPixel;', @MySetIntensityExpanded);\n  Compiler.addGlobalFunc('function GetIntensity(c: TBGRAPixel): Word; overload;', @MyGetIntensityBGRA);\n  Compiler.addGlobalFunc('function SetIntensity(c: TBGRAPixel; AIntensity: Int32): TBGRAPixel; overload;', @MySetIntensityBGRA);\n  Compiler.addGlobalFunc('function GetLightness(ec: TExpandedPixel): Word;', @MyGetLightnessExpanded);\n  Compiler.addGlobalFunc('function SetLightness(ec: TExpandedPixel; ALightness: Int32): TExpandedPixel;', @MySetLightnessExpanded);\n  Compiler.addGlobalFunc('function GetLightness(c: TBGRAPixel): Word; overload;', @MyGetLightnessBGRA);\n  Compiler.addGlobalFunc('function SetLightness(c: TBGRAPixel; ALightness: Int32): TBGRAPixel; overload;', @MySetLightnessBGRA);\n  Compiler.addGlobalFunc('function BGRAToHSLA(c: TBGRAPixel): THSLAPixel;', @MyBGRAToHSLA);\n  Compiler.addGlobalFunc('function ExpandedToHSLA(c: TExpandedPixel): THSLAPixel;', @MyExpandedToHSLA);\n  Compiler.addGlobalFunc('function HSLAToBGRA(c: THSLAPixel): TBGRAPixel;', @MyHSLAToBGRA);\n  Compiler.addGlobalFunc('function HSLAToExpanded(c: THSLAPixel): TExpandedPixel;', @MyHSLAToExpanded);\n  Compiler.addGlobalFunc('function GrayscaleToBGRA(ALightness: Int32): TBGRAPixel;', @MyGrayscaleToBGRA);\n  Compiler.addGlobalFunc('function GrayscaleToExpanded(ALightness: Int32): TExpandedPixel;', @MyGrayscaleToExpanded);\n  Compiler.addGlobalFunc('function BGRAToGSBA(c: TBGRAPixel): TGSBAPixel;', @MyBGRAToGSBA);\n  Compiler.addGlobalFunc('function ExpandedToGSBA(c: TExpandedPixel): TGSBAPixel;', @MyExpandedToGSBA);\n  Compiler.addGlobalFunc('function GSBAToBGRA(c: TGSBAPixel): TBGRAPixel;', @MyGSBAToBGRA);\n  Compiler.addGlobalFunc('function GSBAToExpanded(c: TGSBAPixel): TExpandedPixel;', @MyGSBAToExpanded);\n  Compiler.addGlobalFunc('function MergeBGRA(const colors: array of TBGRAPixel): TBGRAPixel;', @MyMergeBGRAArray);\n  Compiler.addGlobalFunc('function MergeBGRA(c1: TBGRAPixel; w1: Int32; c2: TBGRAPixel; w2: Int32): TBGRAPixel; overload;', @MyMergeBGRAWithWeight);\n  Compiler.addGlobalFunc('function BGRAToStr(c: TBGRAPixel): string;', @MyBGRAToStr);\n  Compiler.addGlobalFunc('function StrToBGRA(s: string): TBGRAPixel;', @MyStrToBGRA);\nend;\n"
  },
  {
    "path": "test/bgralape/extended_geometry_functions.inc",
    "content": "procedure MyFillRectF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\nbegin\n  dm := TDrawMode(PInt32(Params^[5])^);\n  aa := PLongBool(Params^[6])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.FillRectAntialias(x1,y1,x2,y2,PBGRAPixel(Params^[4])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillPoly([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)],PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyRectangleF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\nbegin\n  dm := TDrawMode(PInt32(Params^[6])^);\n  aa := PLongBool(Params^[7])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.RectangleAntialias(x1,y1,x2,y2,PBGRAPixel(Params^[4])^,PSingle(Params^[5])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillPoly(target.ComputeWidePolygon([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)],PSingle(Params^[5])^),PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyRectangleWithFillF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\n  m: TBGRAMultishapeFiller;\nbegin\n  dm := TDrawMode(PInt32(Params^[7])^);\n  aa := PLongBool(Params^[8])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.RectangleAntialias(x1,y1,x2,y2,PBGRAPixel(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n  begin\n    m := TBGRAMultishapeFiller.Create;\n    m.PolygonOrder:= poLastOnTop;\n    m.Antialiasing := false;\n    m.AddRectangle(x1,y1,x2,y2,PBGRAPixel(Params^[6])^);\n    m.AddPolygon(target.ComputeWidePolygon([PointF(x1,y1),PointF(x2,y1),PointF(x2,y2),PointF(x1,y2)],PSingle(Params^[5])^),PBGRAPixel(Params^[4])^);\n    m.Draw(target, dm);\n    m.Free;\n  end;\nend;\n\n\n\nprocedure MyFillRoundRectF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\n  fill: TFillShapeInfo;\nbegin\n  dm := TDrawMode(PInt32(Params^[7])^);\n  aa := PLongBool(Params^[8])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.FillRoundRectAntialias(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,[]);\n    target.LinearAntialiasing := false;\n  end\n  else\n  begin\n    fill := TFillRoundRectangleInfo.Create(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,[]);\n    target.FillShape(fill,PBGRAPixel(Params^[6])^,dm);\n    fill.Free;\n  end;\nend;\n\nprocedure MyRoundRectF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\nbegin\n  dm := TDrawMode(PInt32(Params^[8])^);\n  aa := PLongBool(Params^[9])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.RoundRectAntialias(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,PSingle(Params^[7])^,[]);\n    target.LinearAntialiasing := false;\n  end\n  else\n    target.FillPoly(target.ComputeWidePolygon(target.ComputeRoundRect(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,[]),PSingle(Params^[7])^),PBGRAPixel(Params^[6])^,dm);\nend;\n\nprocedure MyRoundRectWithFillF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\n  m: TBGRAMultishapeFiller;\nbegin\n  dm := TDrawMode(PInt32(Params^[9])^);\n  aa := PLongBool(Params^[10])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.RoundRectAntialias(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^,PSingle(Params^[7])^,PBGRAPixel(Params^[8])^,[]);\n    target.LinearAntialiasing := false;\n  end\n  else\n  begin\n    m := TBGRAMultishapeFiller.Create;\n    m.PolygonOrder:= poLastOnTop;\n    m.Antialiasing := false;\n    m.AddRoundRectangle(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[8])^);\n    m.AddPolygon(target.ComputeWidePolygon(target.ComputeRoundRect(x1,y1,x2,y2,PSingle(Params^[4])^,PSingle(Params^[5])^,[]),PSingle(Params^[7])^),PBGRAPixel(Params^[6])^);\n    m.Draw(target, dm);\n    m.Free;\n  end;\nend;\n\n\n\nprocedure MyFillEllipseF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x,y,rx,ry: single;\n  fill: TFillShapeInfo;\nbegin\n  dm := TDrawMode(PInt32(Params^[5])^);\n  aa := PLongBool(Params^[6])^;\n  x := PSingle(Params^[0])^;\n  y := PSingle(Params^[1])^;\n  rx := PSingle(Params^[2])^;\n  ry := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.FillEllipseAntialias(x,y,rx,ry,PBGRAPixel(Params^[4])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n  begin\n    if (rx = 0) or (ry = 0) or (x = EmptySingle) or (y = EmptySingle) then exit;\n    fill := TFillEllipseInfo.Create(x,y,rx,ry);\n    target.FillShape(fill, PBGRAPixel(Params^[4])^,dm);\n    fill.Free;\n  end;\nend;\n\nprocedure MyEllipseF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x,y,rx,ry: single;\nbegin\n  dm := TDrawMode(PInt32(Params^[6])^);\n  aa := PLongBool(Params^[7])^;\n  x := PSingle(Params^[0])^;\n  y := PSingle(Params^[1])^;\n  rx := PSingle(Params^[2])^;\n  ry := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.EllipseAntialias(x,y,rx,ry,PBGRAPixel(Params^[4])^,PSingle(Params^[5])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n    target.FillPoly(target.ComputeEllipseBorder(x,y,rx,ry,PSingle(Params^[5])^),PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyEllipseWithFillF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x,y,rx,ry: single;\n  m: TBGRAMultishapeFiller;\nbegin\n  dm := TDrawMode(PInt32(Params^[7])^);\n  aa := PLongBool(Params^[8])^;\n  x := PSingle(Params^[0])^;\n  y := PSingle(Params^[1])^;\n  rx := PSingle(Params^[2])^;\n  ry := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n  begin\n    target.LinearAntialiasing:= (dm=dmLinearBlend);\n    target.EllipseAntialias(x,y,rx,ry,PBGRAPixel(Params^[4])^,PSingle(Params^[5])^,PBGRAPixel(Params^[6])^);\n    target.LinearAntialiasing:= false;\n  end\n  else\n  begin\n    m := TBGRAMultishapeFiller.Create;\n    m.PolygonOrder:= poLastOnTop;\n    m.Antialiasing := false;\n    m.AddEllipse(x,y,rx,ry,PBGRAPixel(Params^[6])^);\n    m.AddPolygon(target.ComputeEllipseBorder(x,y,rx,ry,PSingle(Params^[5])^),PBGRAPixel(Params^[4])^);\n    m.Draw(target, dm);\n    m.Free;\n  end;\nend;\n\n\nprocedure MyDrawLineF{$i lape.proc}\nvar dm: TDrawMode; aa: boolean;\n  x1,y1,x2,y2: single;\nbegin\n  dm := TDrawMode(PInt32(Params^[6])^);\n  aa := PLongBool(Params^[7])^;\n  x1 := PSingle(Params^[0])^;\n  y1 := PSingle(Params^[1])^;\n  x2 := PSingle(Params^[2])^;\n  y2 := PSingle(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.DrawLineAntialias(x1,y1,x2,y2,PBGRAPixel(Params^[4])^,PSingle(Params^[5])^)\n  else\n    target.FillPoly(target.ComputeWidePolyline([PointF(x1,y1),PointF(x2,y2)],PSingle(Params^[5])^),PBGRAPixel(Params^[4])^,dm);\nend;\n\nprocedure MyDrawPolyLineF{$i lape.proc}\ntype\n  PArrayOfTPointF = ^ArrayOfTPointF;\nvar\n  pts: PArrayOfTPointF;\n  dm: TDrawMode; aa: boolean;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[3])^);\n  aa := PLongBool(Params^[4])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.DrawPolyLineAntialias(pts^,PBGRAPixel(Params^[1])^,PSingle(Params^[2])^)\n  else\n    target.FillPoly(target.ComputeWidePolyline(pts^,PSingle(Params^[2])^),PBGRAPixel(Params^[1])^,dm);\nend;\n\nprocedure MyDrawPolygonF{$i lape.proc}\ntype\n  PArrayOfTPointF = ^ArrayOfTPointF;\nvar\n  pts: PArrayOfTPointF;\n  dm: TDrawMode; aa: boolean;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[3])^);\n  aa := PLongBool(Params^[4])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.DrawPolygonAntialias(pts^,PBGRAPixel(Params^[1])^,PSingle(Params^[2])^)\n  else\n    target.FillPoly(target.ComputeWidePolygon(pts^,PSingle(Params^[2])^),PBGRAPixel(Params^[1])^,dm);\nend;\n\nprocedure MyDrawPolyLineWithFillF{$i lape.proc}\ntype\n  PArrayOfTPointF = ^ArrayOfTPointF;\nvar\n  pts: PArrayOfTPointF;\n  dm: TDrawMode; aa: boolean;\n  multi: TBGRAMultishapeFiller;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[4])^);\n  aa := PLongBool(Params^[5])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.DrawPolyLineAntialias(pts^,PBGRAPixel(Params^[1])^,PSingle(Params^[2])^,PBGRAPixel(Params^[3])^)\n  else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.PolygonOrder := poLastOnTop;\n    multi.Antialiasing := false;\n    multi.AddPolygon(pts^,PBGRAPixel(Params^[3])^);\n    multi.AddPolygon(target.ComputeWidePolyline(pts^,PSingle(Params^[2])^),PBGRAPixel(Params^[1])^);\n    multi.Draw(target,dm);\n    multi.Free;\n  end;\nend;\n\nprocedure MyDrawPolygonWithFillF{$i lape.proc}\ntype\n  PArrayOfTPointF = ^ArrayOfTPointF;\nvar\n  pts: PArrayOfTPointF;\n  dm: TDrawMode; aa: boolean;\n  multi: TBGRAMultishapeFiller;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[4])^);\n  aa := PLongBool(Params^[5])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.DrawPolygonAntialias(pts^,PBGRAPixel(Params^[1])^,PSingle(Params^[2])^,PBGRAPixel(Params^[3])^)\n  else\n  begin\n    multi := TBGRAMultishapeFiller.Create;\n    multi.PolygonOrder := poLastOnTop;\n    multi.Antialiasing := false;\n    multi.AddPolygon(pts^,PBGRAPixel(Params^[3])^);\n    multi.AddPolygon(target.ComputeWidePolygon(pts^,PSingle(Params^[2])^),PBGRAPixel(Params^[1])^);\n    multi.Draw(target,dm);\n    multi.Free;\n  end;\nend;\n\nprocedure MyFillPolyF{$i lape.proc}\ntype\n  PArrayOfTPointF = ^ArrayOfTPointF;\nvar\n  pts: PArrayOfTPointF;\n  dm: TDrawMode; aa: boolean;\nbegin\n  pts := Params^[0];\n  dm := TDrawMode(PInt32(Params^[2])^);\n  aa := PLongBool(Params^[3])^;\n  if (dm in[dmDrawWithTransparency,dmLinearBlend]) and aa then\n    target.FillPolyAntialias(pts^,PBGRAPixel(Params^[1])^)\n  else\n    target.FillPoly(pts^,PBGRAPixel(Params^[1])^,dm);\nend;\n\nprocedure RegisterExtendedGeometryFunctions(Compiler: TLapeCompiler);\nbegin\n  Compiler.addGlobalFunc('procedure _FillRectF(left, top, right, bottom: single; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillRectF);\n  Compiler.addGlobalFunc('procedure _RectangleF(left, top, right, bottom: single; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyRectangleF);\n  Compiler.addGlobalFunc('procedure _RectangleF(left, top, right, bottom: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyRectangleWithFillF);\n\n  Compiler.addGlobalFunc('procedure _FillRoundRectF(left, top, right, bottom, rx,ry: single; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillRoundRectF);\n  Compiler.addGlobalFunc('procedure _RoundRectF(left, top, right, bottom, rx,ry: single; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyRoundRectF);\n  Compiler.addGlobalFunc('procedure _RoundRectF(left, top, right, bottom, rx,ry: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyRoundRectWithFillF);\n\n  Compiler.addGlobalFunc('procedure _FillEllipseF(x,y,rx,ry: single; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillEllipseF);\n  Compiler.addGlobalFunc('procedure _EllipseF(x,y,rx,ry: single; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyEllipseF);\n  Compiler.addGlobalFunc('procedure _EllipseF(x,y,rx,ry: single; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyEllipseWithFillF);\n\n  Compiler.addGlobalFunc('procedure _DrawLineF(x1,y1,x2,y2: single; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyDrawLineF);\n  Compiler.addGlobalFunc('procedure _DrawPolyLineF(const pts: array of TPointF; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyDrawPolyLineF);\n  Compiler.addGlobalFunc('procedure _DrawPolygonF(const pts: array of TPointF; c: TBGRAPixel; w: single; ADrawMode: Int32; AA: LongBool);', @MyDrawPolygonF);\n  Compiler.addGlobalFunc('procedure _DrawPolyLineF(const pts: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyDrawPolyLineWithFillF);\n  Compiler.addGlobalFunc('procedure _DrawPolygonF(const pts: array of TPointF; c: TBGRAPixel; w: single; fillcolor: TBGRAPixel; ADrawMode: Int32; AA: LongBool); overload;', @MyDrawPolygonWithFillF);\n  Compiler.addGlobalFunc('procedure _FillPolyF(const pts: array of TPointF; c: TBGRAPixel; ADrawMode: Int32; AA: LongBool);', @MyFillPolyF);\nend;\n"
  },
  {
    "path": "test/bgralape/lape.func",
    "content": "({%H-}Params: PParamArray; const Result: Pointer); {$IFDEF Lape_CDECL}cdecl;{$ENDIF}\n"
  },
  {
    "path": "test/bgralape/lape.proc",
    "content": "({%H-}Params: PParamArray); {$IFDEF Lape_CDECL}cdecl;{$ENDIF}\n"
  },
  {
    "path": "test/bgralape/pbgralape.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"pbgralape\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Debug\" Default=\"True\"/>\n      <Item2 Name=\"Release\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <PathDelim Value=\"\\\"/>\n          <Target>\n            <Filename Value=\"pbgralape\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <CodeGeneration>\n            <SmartLinkUnit Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"3\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <GenerateDebugInfo Value=\"False\"/>\n            </Debugging>\n            <LinkSmart Value=\"True\"/>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"4\">\n      <Item1>\n        <PackageName Value=\"lape\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"SynEdit\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item3>\n      <Item4>\n        <PackageName Value=\"LCL\"/>\n      </Item4>\n    </RequiredPackages>\n    <Units Count=\"8\">\n      <Unit0>\n        <Filename Value=\"pbgralape.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"ubgralape.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"lape_proc.inc\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"lape_func.inc\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"text_functions.inc\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"basic_functions.inc\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"basic_geometry_functions.inc\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit7>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"pbgralape\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <IncludeAssertionCode Value=\"True\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <Checks>\n        <IOChecks Value=\"True\"/>\n        <RangeChecks Value=\"True\"/>\n        <OverflowChecks Value=\"True\"/>\n        <StackChecks Value=\"True\"/>\n      </Checks>\n      <VerifyObjMethodCallValidity Value=\"True\"/>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf2Set\"/>\n        <UseHeaptrc Value=\"True\"/>\n        <TrashVariables Value=\"True\"/>\n        <UseExternalDbgSyms Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgralape/pbgralape.lpr",
    "content": "program pbgralape;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain, ubgralape;\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgralape/tests.pas",
    "content": "{ This file contains Lape test scripts }\n\nprocedure TestDone(s: string);\nbegin\n  ShowMessage(s);\nend;\n\nvar w,h: integer;\n\n///////////////// pixel\n\nprocedure TestPixelAndLine;\nvar i : integer;\n  r : TRect;\n  c1,c2: TBGRAPixel;\n  pt : TPoint;\nbegin\n  FillBitmap(CSSBlack);\n  Antialiasing := False;\n  for i := 1 to 10 do\n    DrawLine(random(w),random(h),random(w),random(h),MergeBGRA(StrToBGRA('Blue'), 11-i, StrToBGRA('Lime'), i));\n  Antialiasing := True;\n  for i := 1 to 10 do\n    DrawLine(random(w),random(h),random(w),random(h),BGRA(0,255,0,i*255 div 10));\n  Antialiasing := False;\n  for i := 1 to 10 do\n    EraseLine(random(w),random(h),random(w),random(h),255);\n  Antialiasing := True;\n  for i := 1 to 10 do\n    EraseLine(random(w),random(h),random(w),random(h),255);\n\n  r := RectWithSize(w div 4, h div 4, w div 2, h div 2);\n  c1 := MergeBGRA([CSSYellow,CSSWhite]);\n  c2 := MergeBGRA([CSSYellow,CSSRed]);\n  for i := 1 to 100 do\n  begin\n    pt := Point(random(w),random(h));\n    if PtInRect(pt,r) then\n      DrawPixel(pt.x,pt.y,c1)\n\telse\n\t  DrawPixel(pt.x,pt.y,c2);\n  end;\n  for i := 1 to 100 do\n    ErasePixel(random(w),random(h),128);\n  TestDone('DrawPixel+ErasePixel+DrawLine[Antialias]+EraseLine[Antialias]+MergeBGRA');\nend;\n\nprocedure TestForEachPixel;\n  procedure PixelProc(x,y: Int32; var pix: TBGRAPixel);\n  var hsla: THSLAPixel;\n  begin\n    hsla.hue := (x shl 16) div w;\n\thsla.saturation := ((y shl 17) div h) and 65535;\n\thsla.alpha := 65535;\n\tif y > h shr 1 then\n\tbegin\n\t  hsla.lightness := 48000;\n\t  pix := GSBAToBGRA(hsla);\n\tend\n\telse\n\tbegin\n\t  hsla.lightness := 32768;\n\t  pix := HSLAToBGRA(hsla);\n\tend;\n  end;\nbegin\n  ForEachPixel(@PixelProc);\n  TestDone('ForEachPixel+HSLAToBGRA+GSBAToBGRA');\nend;\n\nprocedure TestScanline;\nvar x,y,v: integer;\n  p: PBGRAPixel;\n  c: TBGRAPixel;\n  ec: TExpandedPixel;\nbegin\n  for y := 0 to h-1 do\n  begin\n    p := GetScanLine(y);\n\tv := (h-1-y)*65536*2 div h;\n\tif v > 65535 then ec.red := 65535 else ec.red := v;\n\tif v > 65535 then ec.green := v-65536 else ec.green := 0;\n\tec.blue := 0;\n\tec.alpha := 65535;\n\tc := GammaCompression(ec);\n    for x := w-1 downto 0 do\n\tbegin\n\t  p^ := c;\n\t  inc(p);\n\tend;\n  end;\n  TestDone('ScanLine+GammaCompression: yellow-red gradient');\nend;\n\nprocedure TestFillRect;\nconst r = 10;\nvar i : integer;\n\tc: TBGRAPixel;\nbegin\n  FillBitmap(CSSBlack);\n  c := BGRA(255,255,255,0);\n  for i := 1 to 10 do\n  begin\n    Antialiasing := Odd(i);\n\tif Antialiasing then\n\tbegin\n      DrawMode := dmNormal;\n      FillRoundRect(random(w),random(h),random(w),random(h),r,r,CSSOrange);\n\tend\n\telse\n\tbegin\n      DrawMode := dmXor;\n      FillRoundRect(random(w),random(h),random(w),random(h),r,r,c);\n\tend;\n  end;\n  DrawMode := dmXor;\n  for i := 1 to 10 do\n    FillRect(random(w),random(h),random(w),random(h),c);\n  DrawMode := dmNormal;\n  TestDone('FillRect+FillRoundRect (r=' + IntToStr(r)+')');\n  Antialiasing := true;\nend;\n\nprocedure TestRect;\nconst n = 5; r = 10;\nvar i : integer;\n\tc: TBGRAPixel;\nbegin\n  FillBitmap(CSSWhite);\n  for i := 1 to n do\n    Rectangle(random(w),random(h),random(w),random(h),BGRA(128,160,255),BGRA(0,0,255));\n  for i := 1 to n do\n  begin\n    Antialiasing := Odd(i);\n    RoundRect(random(w),random(h),random(w),random(h),r,r,BGRA(128,160,255),BGRA(0,0,255));\n  end;\n  for i := 1 to n do\n    Rectangle(random(w),random(h),random(w),random(h),CSSBlack);\n  for i := 1 to n do\n  begin\n    Antialiasing := Odd(i);\n    RoundRect(random(w),random(h),random(w),random(h),r,r,CSSBlack);\n  end;\n  TestDone('Rectangle+RoundRect (r=' + IntToStr(r)+')');\n  Antialiasing := true;\nend;\n\nprocedure TestEllipse;\nconst n = 5;\nvar i : integer;\n\tc: TBGRAPixel;\nbegin\n  FillBitmap(CSSBlack);\n  for i := 1 to n do\n  begin\n    Antialiasing := Odd(i);\n    Ellipse(random(w),random(h),random(w)/2,random(h)/2,CSSMaroon,CSSRed);\n  end;\n  for i := 1 to n do\n  begin\n    Antialiasing := Odd(i);\n    FillEllipse(random(w),random(h),random(w)/2,random(h)/2,BGRA(128,160,255,64));\n  end;\n  for i := 1 to n do\n  begin\n    Antialiasing := Odd(i);\n    Ellipse(random(w),random(h),random(w)/2,random(h)/2,CSSPaleTurquoise);\n  end;\n  TestDone('FillEllipse+Ellipse');\n  Antialiasing := true;\nend;\n\n///////////// text\n\nprocedure TestTextOut;\nvar x,y,i,txtw,txth: integer;\n  c: TBGRAPixel;\n  text: string;\nbegin\n  text := 'Hello ' + BGRAToStr(BGRA(0,0,255));\n  FillBitmap(CSSWhite);\n  x := BitmapWidth div 2;\n  y := 0;\n  txth := BitmapHeight div 5;\n  SetFontFullHeight(txth);\n  txtw := TextWidth(text);\n  if txtw > BitmapWidth then SetFontFullHeight(txth*BitmapWidth div txtw);\n\n  TextAlignment := taCenter;\n  FontStyle := [];            TextOut(x,y,text,CSSBlack); inc(y, txth);\n  FontStyle := [fsBold];      TextOut(x,y,text,CSSBlack); inc(y, txth);\n  FontStyle := [fsItalic];    TextOut(x,y,text,CSSBlack); inc(y, txth);\n  FontStyle := [fsStrikeOut]; TextOut(x,y,text,CSSBlack); inc(y, txth);\n  FontStyle := [fsUnderline]; TextOut(x,y,text,CSSBlack); inc(y, txth);\n\n  for i := 1 to 100 do\n  begin\n    x := random(w);\n    y := random(h);\n    c := GetPixel(x,y);\n    c.alpha := 64;\n    FillEllipse(x-10,y-10,21,21, c);\n  end;\n\n  FontStyle := [];\n  TextAlignment := taLeft;\n  TestDone('TextOut+GetPixel');\nend;\n\nprocedure TestTextOutAngle;\nvar x,y,i : integer;\nbegin\n  FillBitmap(CSSWhite);\n  x := w div 2;\n  y := h div 2;\n  SetFontEmHeight(20);\n  TextLayout := tlCenter;\n\n  SetClipRect(0,0,w,y);\n  for i := 0 to 5 do\n    TextOutAngle(x,y,i*3600 div 6, '  Text with angle',BGRA(192,192,192));\n  SetClipRect(0,y,w,h);\n  for i := 0 to 5 do\n    TextOutAngle(x,y,i*3600 div 6, '  Text with angle',CSSBlack);\n  NoClip;\n\n  TextLayout := tlTop;\n\n  TextLayout := tlBottom;\n  TextAlignment := taCenter;\n  TextOut(x, BitmapHeight, 'Text in all directions', CSSBlack);\n  TextLayout := tlTop;\n  TextAlignment := taLeft;\n\n  TestDone('TextOutAngle+Clipping');\nend;\n\nprocedure TestTextRect;\nvar r : TRect;\nbegin\n  FillBitmap(CSSWhite);\n  r := rect(0,0,w,h);\n  SetFontEmHeight(20);\n  TextLayout := tlTop;\n  TextAlignment := taLeft;\n  TextRect(r, 'Top-left',CSSBlack);\n  TextLayout := tlCenter;\n  TextAlignment := taCenter;\n  TextRect(r, 'Center',CSSBlack);\n  TextLayout := tlBottom;\n  TextAlignment := taRight;\n  TextRect(r, 'Bottom-Right',CSSBlack);\n  TextLayout := tlTop;\n  TextAlignment := taLeft;\n  FillBitmapAlpha(224);\n\n  Antialiasing := False;\n  DrawPolygon([Point(w div 2,0),Point(w-1,h-1),Point(0,h-1)],CSSRed);\n  Antialiasing := True;\n  DrawPolygon([Point(w div 2,h-1),Point(w-1,0),Point(0,0)],CSSGreen);\n  Antialiasing := False;\n  ErasePolygonOutline([Point(0,h div 2),Point(w-1,0),Point(w-1,h-1)],192);\n  Antialiasing := True;\n  ErasePolygonOutline([Point(w-1,h div 2),Point(0,0),Point(0,h-1)],192);\n\n  TestDone('TextRect+DrawPolygon[Antialias]+ErasePolygonOutline[Antialias]');\nend;\n\n/////////////////// bitmap\n\nprocedure TestBitmap;\nvar mainBitmap, sprite, sprite2: TBGRABitmap;\n  i: integer;\n\n  procedure PixelSwapRedBlue(x,y: Int32; var pix: TBGRAPixel);\n  var oldRed: byte;\n  begin\n    oldRed := pix.red;\n    pix.red := pix.blue;\n    pix.blue := oldRed;\n  end;\n\nbegin\n  FillBitmap(CSSWhite);\n  mainBitmap := SelectedBitmap;\n\n  sprite := CreateBitmap(32,32);\n  sprite.Select;\n  for i := 1 to 100 do\n    SetPixel(random(BitmapWidth),random(BitmapHeight),CSSBlack);\n\n  mainBitmap.Select;\n  for i := 1 to 50 do\n    PutImage(random(BitmapWidth),random(BitmapHeight), sprite, i*255 div 50);\n\n  sprite.Select;\n  SetBitmapSize(16,16);\n  FillTransparent;\n  for i := 1 to 100 do\n    SetPixel(random(BitmapWidth),random(BitmapHeight),CSSBlack);\n\n  mainBitmap.Select;\n  for i := 1 to 50 do\n    PutImage(random(BitmapWidth),random(BitmapHeight), sprite, i*255 div 50);\n  sprite.Free;\n\n  sprite := CreateBitmap('testimage.png');\n  sprite2 := sprite.Duplicate;\n  sprite2.Select;\n  // ToDo: fix\n  //ForEachPixel(@PixelSwapRedBlue);\n\n  mainBitmap.Select;\n  for i := 1 to 50 do\n  begin\n    PutImage(random(BitmapWidth),random(BitmapHeight), sprite, i*255 div 50);\n    PutImage(random(BitmapWidth),random(BitmapHeight), sprite2, i*255 div 50);\n  end;\n  sprite.Free;\n  sprite2.Free;\n\n  TestDone('CreateBitmap+PutImage');\nend;\n\n  procedure IntensityNotExpanded(x,y: Int32; var pix: TBGRAPixel);\n  begin\n    pix := SetIntensity(pix, GetIntensity(pix)*3 div 4);\n  end;\n\n  procedure IntensityExpanded(x,y: Int32; var pix: TBGRAPixel);\n  begin //should be the same, but via explicit conversion between TBGRAPixel and TExpandedPixel\n    pix := GammaCompression(SetIntensity(GammaExpansion(pix), GetIntensity(GammaExpansion(pix))*3 div 4));\n  end;\n\n  procedure LightnessNotExpanded(x,y: Int32; var pix: TBGRAPixel);\n  begin\n    pix := SetLightness(pix, GetLightness(pix)*4 div 3);\n  end;\n\n  procedure LightnessExpanded(x,y: Int32; var pix: TBGRAPixel);\n  begin //should be the same, but via explicit conversion between TBGRAPixel and TExpandedPixel\n    pix := GammaCompression(SetLightness(GammaExpansion(pix), GetLightness(GammaExpansion(pix))*4 div 3));\n  end;\n\n  procedure HSLANotExpanded(x,y: Int32; var pix: TBGRAPixel);\n  var hsla: THSLAPixel;\n  begin\n    hsla := BGRAToHSLA(pix);\n\thsla.hue := hsla.hue+5000;\n    pix := HSLAToBGRA(hsla);\n  end;\n\n  procedure HSLAExpanded(x,y: Int32; var pix: TBGRAPixel);\n  //should be the same, but via explicit conversion between TBGRAPixel and TExpandedPixel\n  var hsla: THSLAPixel;\n  begin\n    hsla := ExpandedToHSLA(GammaExpansion(pix));\n\thsla.hue := hsla.hue+5000;\n    pix := GammaCompression(HSLAToExpanded(hsla));\n  end;\n\n  procedure GSBANotExpanded(x,y: Int32; var pix: TBGRAPixel);\n  var GSBA: TGSBAPixel;\n  begin\n    GSBA := BGRAToGSBA(pix);\n\tGSBA.hue := GSBA.hue+5000;\n    pix := GSBAToBGRA(GSBA);\n  end;\n\n  procedure GSBAExpanded(x,y: Int32; var pix: TBGRAPixel);\n  //should be the same, but via explicit conversion between TBGRAPixel and TExpandedPixel\n  var GSBA: TGSBAPixel;\n  begin\n    GSBA := ExpandedToGSBA(GammaExpansion(pix));\n\tGSBA.hue := GSBA.hue+5000;\n    pix := GammaCompression(GSBAToExpanded(GSBA));\n  end;\n\n  procedure GrayscaleNotExpanded(x,y: Int32; var pix: TBGRAPixel);\n  var gray: TBGRAPixel;\n  begin\n    gray := BGRAToGrayscale(pix);\n    pix := MergeBGRA(gray, 1, pix, 1);\n  end;\n\n  procedure GrayscaleExpanded(x,y: Int32; var pix: TBGRAPixel);\n  //should be the same, but via explicit conversion between TBGRAPixel and TExpandedPixel\n  var gray: TBGRAPixel;\n  begin\n    gray := GammaCompression(ExpandedToGrayscale(GammaExpansion(pix)));\n    pix := MergeBGRA(gray, 1, pix, 1);\n  end;\n\nprocedure TestColors;\nvar x: integer;\n\n  procedure DoStuff(var x: integer; pixProc1,pixProc2: TForEachPixelProc);\n  var\n    mainBitmap, sprite,sprite2: TBGRABitmap;\n    tx,ty: integer;\n  begin\n  mainBitmap := SelectedBitmap;\n  sprite := CreateBitmap('testimage.png');\n  sprite.Select;\n  tx := BitmapWidth;\n  ty := BitmapHeight;\n  sprite2 := sprite.Duplicate;\n\n  sprite.Select;\n  ForEachPixel(@pixProc1);\n  mainBitmap.Select;\n  PutImage(x,0,sprite);\n  sprite.Select;\n  ForEachPixel(@pixProc1);\n  mainBitmap.Select;\n  PutImage(x,ty,sprite);\n  sprite.Select;\n  ForEachPixel(@pixProc1);\n  mainBitmap.Select;\n  PutImage(x,2*ty,sprite);\n  inc(x, tx);\n\n  sprite2.Select;\n  ForEachPixel(@pixProc2);\n  mainBitmap.Select;\n  PutImage(x,0,sprite2);\n  sprite2.Select;\n  ForEachPixel(@pixProc2);\n  mainBitmap.Select;\n  PutImage(x,ty,sprite2);\n  sprite2.Select;\n  ForEachPixel(@pixProc2);\n  mainBitmap.Select;\n  PutImage(x,2*ty,sprite2);\n  inc(x, tx);\n\n  sprite.Free;\n  sprite2.Free;\n  end;\n\nbegin\n  FillBitmap(CSSWhite);\n  x := 0;\n\n  // ToDo: fix\n  DoStuff(x, @IntensityNotExpanded, @IntensityExpanded);\n  DoStuff(x, @LightnessNotExpanded, @LightnessExpanded);\n  DoStuff(x, @HSLANotExpanded, @HSLAExpanded);\n  DoStuff(x, @GrayscaleNotExpanded, @GrayscaleExpanded);\n  DoStuff(x, @GSBANotExpanded, @GSBAExpanded);\n\n  TestDone('Intensity,Lightness,HSLA,Grayscale,GSBA');\nend;\n\n////////////////// extended geometry\n\nfunction RandomPointF: TPointF;\nbegin\n  result := PointF((random(w*10-1)-4)/10,(random(h*10-1)-4)/10);\nend;\n\nfunction RandomX: single;\nbegin\n  result := (random(w*10-1)-4)/10;\nend;\n\nfunction RandomY: single;\nbegin\n  result := (random(h*10-1)-4)/10;\nend;\n\nprocedure TestRectF;\nconst n = 3; r= 10;\nvar i: integer;\n  c,c2: TBGRAPixel;\nbegin\n  FillBitmap(CSSWhite);\n  c := BGRA(0,0,0,128);\n  c2 := BGRA(0,128,0,128);\n  for i := 1 to n do\n    FillRectF(RandomX,RandomY,RandomX,RandomY, c2);\n  for i := 1 to n do\n    RectangleF(RandomX,RandomY,RandomX,RandomY, c,3);\n  for i := 1 to n do\n    RectangleF(RandomX,RandomY,RandomX,RandomY, c,3,c2);\n\n  for i := 1 to n do\n    FillRoundRectF(RandomX,RandomY,RandomX,RandomY,r,r, c2);\n  for i := 1 to n do\n    RoundRectF(RandomX,RandomY,RandomX,RandomY,r,r, c,3);\n  for i := 1 to n do\n    RoundRectF(RandomX,RandomY,RandomX,RandomY,r,r, c,3,c2);\n\n  for i := 1 to n do\n    FillEllipseF(RandomX,RandomY,RandomX/2,RandomY/2, c2);\n  for i := 1 to n do\n    EllipseF(RandomX,RandomY,RandomX/2,RandomY/2, c,3);\n  for i := 1 to n do\n    EllipseF(RandomX,RandomY,RandomX/2,RandomY/2, c,3,c2);\n\n  TestDone('RectangleF/RoundRectF/EllipseF');\nend;\n\nprocedure TestLineF;\nconst n = 3;\nvar i: integer;\n  c,c2: TBGRAPixel;\nbegin\n  FillBitmap(CSSWhite);\n  c := BGRA(0,0,0,128);\n  c2 := BGRA(0,128,0,128);\n\n  for i := 1 to n do\n    DrawLineF(RandomX,RandomY,RandomX,RandomY, c,3);\n\n  for i := 1 to n do\n    FillPolyF([RandomPointF,RandomPointF,RandomPointF], c2);\n  for i := 1 to n do\n    DrawPolyLineF([RandomPointF,RandomPointF,RandomPointF], c,3);\n  for i := 1 to n do\n    DrawPolygonF([RandomPointF,RandomPointF,RandomPointF], c,3);\n\n  for i := 1 to n do\n    DrawPolyLineF([RandomPointF,RandomPointF,RandomPointF], c,3,c2);\n  for i := 1 to n do\n    DrawPolygonF([RandomPointF,RandomPointF,RandomPointF], c,3,c2);\n\n  TestDone('DrawLineF, PolyLineF, PolygonF');\nend;\n\n///////////////// tests\n\nbegin\n  w := BitmapWidth;\n  h := BitmapHeight;\n\n  TestBitmap;\n  TestColors;\n\n  TestRectF;\n  TestLineF;\n  Antialiasing := false;\n  TestRectF;\n  TestLineF;\n  DrawMode := dmSet;\n  TestRectF;\n  TestLineF;\n  DrawMode := dmNormal;\n  Antialiasing := true;\n\n  TestPixelAndLine;\n  TestForEachPixel;\n  TestScanline;\n  TestFillRect;\n  TestRect;\n  TestEllipse;\n\n  TestTextOut;\n  TestTextOutAngle;\n  TestTextRect;\n  FillTransparent;\nend;\n"
  },
  {
    "path": "test/bgralape/text_functions.inc",
    "content": "var\n  textAlignment: TAlignment;\n  textLayout: TTextLayout;\n\nprocedure MySetFontName{$i lape.proc}\nbegin\n  target.FontName := PlpString(Params^[0])^;\nend;\n\nprocedure MySetFontStyle{$i lape.proc}\nvar fs: TFontStyles;\nbegin\n  fs := [];\n  if PLongBool(Params^[0])^ then Include(fs, fsBold);\n  if PLongBool(Params^[1])^ then Include(fs, fsItalic);\n  if PLongBool(Params^[2])^ then Include(fs, fsStrikeOut);\n  if PLongBool(Params^[3])^ then Include(fs, fsUnderline);\n  target.FontStyle := fs;\nend;\n\nprocedure MySetTextAlignment{$i lape.proc}\nbegin\n  textAlignment:= TAlignment(PInt32(Params^[0])^);\nend;\n\nprocedure MySetTextLayout{$i lape.proc}\nbegin\n  textLayout:= TTextLayout(PInt32(Params^[0])^);\nend;\n\nprocedure MyGetFontFullHeight{$i lape.func}\nbegin\n  Int32(Result^) := target.FontFullHeight;\nend;\n\nprocedure MySetFontFullHeight{$i lape.proc}\nbegin\n  target.FontFullHeight := PInt32(Params^[0])^;\nend;\n\nprocedure MySetFontEmHeight{$i lape.proc}\nbegin\n  target.FontHeight := PInt32(Params^[0])^;\nend;\n\nprocedure MyGetFontEmHeight{$i lape.func}\nbegin\n  Int32(Result^) := target.FontHeight;\nend;\n\nprocedure MyGetTextWidth{$i lape.func}\nbegin\n  Int32(Result^) := target.TextSize(PlpString(Params^[0])^).cx;\nend;\n\nprocedure MyTextOut{$i lape.proc}\nvar y: single;\nbegin\n  y := PSingle(Params^[1])^;\n  if textLayout = tlCenter then DecF(y, target.FontFullHeight/2)\n  else if textLayout = tlBottom then DecF(y, target.FontFullHeight);\n  target.TextOut(PSingle(Params^[0])^,y,PlpString(Params^[2])^,PBGRAPixel(Params^[3])^,textAlignment);\nend;\n\nprocedure MyTextRect{$i lape.proc}\nvar r: TRect;\nbegin\n  r := rect(PInt32(Params^[0])^,PInt32(Params^[1])^,PInt32(Params^[2])^,round(PInt32(Params^[3])^));\n  target.TextRect(r,PlpString(Params^[4])^,textAlignment,textLayout,PBGRAPixel(Params^[5])^);\nend;\n\nprocedure MyTextOutAngle{$i lape.proc}\nvar x,y,h,angle: single;\nbegin\n  x := PSingle(Params^[0])^;\n  y := PSingle(Params^[1])^;\n  if textLayout <> tlTop then\n  begin\n    h := target.FontFullHeight;\n    if textLayout = tlCenter then h *= 0.5;\n    angle := round(PSingle(Params^[2])^)*Pi/1800 + Pi/2;\n    IncF(x, cos(angle)*h);\n    DecF(y, sin(angle)*h);\n  end;\n  target.TextOutAngle(x,y,round(PSingle(Params^[2])^),PlpString(Params^[3])^,PBGRAPixel(Params^[4])^,textAlignment);\nend;\n\nprocedure RegisterTextFunctions(Compiler: TLapeCompiler);\nbegin\n  Compiler.addGlobalFunc('procedure _SetFontName(s: string);', @MySetFontName);\n  Compiler.addGlobalFunc('procedure _SetFontStyle(ABold, AItalic, AStrikeOut, AUnderline: LongBool);', @MySetFontStyle);\n  Compiler.addGlobalFunc('procedure _SetTextAlignment(AAlign: Int32);', @MySetTextAlignment);\n  Compiler.addGlobalFunc('procedure _SetTextLayout(ALayout: Int32);', @MySetTextLayout);\n  Compiler.addGlobalFunc('function TextWidth(s: string) : Int32;', @MyGetTextWidth);\n  Compiler.addGlobalFunc('function GetFontFullHeight : Int32;', @MyGetFontFullHeight);\n  Compiler.addGlobalFunc('function GetFontEmHeight : Int32;', @MyGetFontEmHeight);\n  Compiler.addGlobalFunc('procedure SetFontFullHeight(AValue : Int32);', @MySetFontFullHeight);\n  Compiler.addGlobalFunc('procedure SetFontEmHeight(AValue : Int32);', @MySetFontEmHeight);\n  Compiler.addGlobalFunc('procedure TextOut(x, y: single; sUTF8: string; c: TBGRAPixel);', @MyTextOut);\n  Compiler.addGlobalFunc('procedure TextOutAngle(x, y, angle: single; sUTF8: string; c: TBGRAPixel);', @MyTextOutAngle);\n  Compiler.addGlobalFunc('procedure TextRect(left, top, right, bottom: integer; sUTF8: string; c: TBGRAPixel);', @MyTextRect);\nend;\n"
  },
  {
    "path": "test/bgralape/ubgralape.pas",
    "content": "unit ubgralape;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRAClasses, BGRABitmapTypes, lptypes, lpcompiler;\n\nfunction RegisterBitmap(ABitmap: TBGRABitmap): integer;\nprocedure UnregisterBitmap(AIndex: integer);\nprocedure EnsureInvalidate(AIndex: integer);\nprocedure SetTargetBitmap(AIndex: integer);\nprocedure AddScriptSystemTypes(Compiler: TLapeCompiler);\nprocedure AddScriptSystemFunctions(Compiler: TLapeCompiler);\nprocedure FreeBitmaps;\n\nimplementation\n\nuses FileUtil, Graphics, GraphType, BGRAPolygon, BGRAFillInfo;\n\nvar\n  bitmaps: array of record\n    Bitmap: TBGRABitmap;\n    Registered: boolean;\n    Invalidated: boolean;\n    LockedCount: Int32or64;\n  end;\n  target: TBGRABitmap;\n  targetIndex: integer;\n\nfunction NewBitmapEntry: integer;\nvar i: integer;\nbegin\n  for i:= 0 to high(bitmaps) do\n    if bitmaps[i].Bitmap = nil then\n      begin\n        result := i;\n        bitmaps[i].LockedCount:= 0;\n        exit;\n      end;\n  result := length(bitmaps);\n  setlength(bitmaps,length(bitmaps)*2+1);\n  bitmaps[result].LockedCount:= 0;\nend;\n\nprocedure FreeBitmap(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < length(bitmaps)) then\n    if not bitmaps[AIndex].Registered then\n      begin\n        if bitmaps[AIndex].LockedCount > 0 then\n          raise exception.Create('Bitmap is locked');\n        FreeAndNil(bitmaps[AIndex].Bitmap);\n        bitmaps[AIndex].Invalidated:= false;\n      end;\nend;\n\nfunction RegisterBitmap(ABitmap: TBGRABitmap): integer;\nbegin\n  result := NewBitmapEntry;\n  bitmaps[result].Bitmap := ABitmap;\n  bitmaps[result].Invalidated := false;\n  bitmaps[result].Registered := true;\nend;\n\nprocedure UnregisterBitmap(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < length(bitmaps)) then\n    begin\n      EnsureInvalidate(AIndex);\n      if not bitmaps[AIndex].Registered then\n        raise Exception.Create('This bitmap has not been registered');\n      if target = bitmaps[AIndex].Bitmap then\n        begin\n          target := nil;\n          targetIndex := -1;\n        end;\n      bitmaps[AIndex].Bitmap := nil;\n      bitmaps[AIndex].Registered := false;\n    end;\nend;\n\nprocedure EnsureInvalidate(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < length(bitmaps)) then\n    begin\n      if bitmaps[AIndex].Invalidated then\n        begin\n          bitmaps[AIndex].Bitmap.InvalidateBitmap;\n          bitmaps[AIndex].Invalidated := false;\n        end;\n    end;\nend;\n\nprocedure WillInvalidateBitmap(AIndex: integer);\nbegin\n  if (AIndex >= 0) and (AIndex < length(bitmaps)) then\n    Bitmaps[AIndex].Invalidated := true;\nend;\n\nprocedure SetTargetBitmap(AIndex: integer);\nbegin\n  if (AIndex < 0) or (AIndex >= length(bitmaps)) or (bitmaps[AIndex].Bitmap = nil) then\n    raise exception.create('Bitmap does not exist');\n  target := bitmaps[AIndex].Bitmap;\n  targetIndex := AIndex;\nend;\n\nfunction GetBitmap(AIndex: integer): TBGRABitmap;\nbegin\n  if (AIndex < 0) or (AIndex >= length(bitmaps)) or (Bitmaps[AIndex].Bitmap = nil) then\n    raise exception.Create('Bitmap does not exist');\n  result := Bitmaps[AIndex].Bitmap;\nend;\n\nfunction GetScriptSystemInlineFunctions: string; forward;\n\n///////////////////////////// Function implementation ///////////////////////////\n\n{$I basic_functions.inc}\n{$I basic_geometry_functions.inc}\n{$I extended_geometry_functions.inc}\n{$I text_functions.inc}\n{$I color_functions.inc}\n\n/////////////////////////// Function list /////////////////////////////////////////////\n\nprocedure AddScriptSystemFunctions(Compiler: TLapeCompiler);\nbegin\n  RegisterBasicFunctions(Compiler);\n  RegisterBasicGeometryFunctions(Compiler);\n  RegisterExtendedGeometryFunctions(Compiler);\n  RegisterTextFunctions(Compiler);\n  RegisterColorFunctions(Compiler);\n  Compiler.addDelayedCode(GetScriptSystemInlineFunctions, '',false,true);\nend;\n\nprocedure FreeBitmaps;\nvar i: integer;\nbegin\n  for i := 0 to High(bitmaps) do\n    if (bitmaps[i].Bitmap <> nil) and not bitmaps[i].Registered then\n      begin\n        bitmaps[i].LockedCount := 0;\n        FreeBitmap(i);\n      end;\nend;\n\n////////////////////////////// Load script system //////////////////////////////\n\nvar\n  scriptSystemFunctions,scriptSystemTypes: TStringList;\n\nfunction GetScriptSystemInlineFunctions: string;\nvar i: integer;\nbegin\n  result := LineEnding;\n  for i := 0 to scriptSystemFunctions.Count-1 do\n    result := result + scriptSystemFunctions[i]+LineEnding;\n  textAlignment:= taLeftJustify;\nend;\n\nprocedure AddScriptSystemTypes(Compiler: TLapeCompiler);\nvar line: string;\n  i,idxEq: integer;\nbegin\n  for i := 0 to scriptSystemTypes.Count-1 do\n  begin\n    line := scriptSystemTypes[i];\n    idxEq := pos('=',line);\n    if idxEq <> 0 then\n      Compiler.addGlobalType(trim(copy(line,idxEq+1,length(line)-idxEq)),trim(copy(line,1,idxEq-1)));\n  end;\nend;\n\nprocedure LoadScriptSystem;\nvar\n  scriptSystem: TStringList;\n  i: integer;\n  dest: TStringList;\nbegin\n  scriptSystemFunctions := TStringList.Create;\n  scriptSystemTypes := TStringList.Create;\n  dest := nil;\n\n  scriptSystem := TStringList.Create;\n  scriptSystem.LoadFromFile('bgralapesys.pas');\n\n  for i := 0 to scriptSystem.Count-1 do\n  begin\n    if CompareText(Trim(scriptSystem[i]),'implementation') = 0 then\n      dest := scriptSystemFunctions else\n    if CompareText(Trim(scriptSystem[i]),'type') = 0 then\n      dest := scriptSystemTypes else\n    if CompareText(Trim(scriptSystem[i]),'end.') = 0 then break\n    else\n      if Assigned(dest) then dest.Add(scriptSystem[i]);\n  end;\n\n  scriptSystem.Free;\nend;\n\nprocedure FreeScriptSystem;\nbegin\n  scriptSystemTypes.Free;\n  scriptSystemFunctions.Free;\nend;\n\ninitialization\n\n  LoadScriptSystem;\n  Randomize;\n\nfinalization\n\n  FreeScriptSystem;\n\nend.\n\n"
  },
  {
    "path": "test/bgralape/umain.lfm",
    "content": "object Form1: TForm1\n  Left = 316\n  Height = 476\n  Top = 156\n  Width = 717\n  Caption = 'Form1'\n  ClientHeight = 476\n  ClientWidth = 717\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '1.0.10.0'\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\n    Left = 376\n    Height = 424\n    Top = 41\n    Width = 335\n    OnRedraw = BGRAVirtualScreen1Redraw\n    Alignment = taLeftJustify\n    Anchors = [akTop, akLeft, akRight, akBottom]\n    Color = clBtnFace\n    ParentColor = False\n    TabOrder = 0\n  end\n  object Button1: TButton\n    Left = 9\n    Height = 25\n    Top = 9\n    Width = 75\n    Caption = 'Run'\n    OnClick = Button1Click\n    TabOrder = 1\n  end\n  inline SynEdit1: TSynEdit\n    Left = 8\n    Height = 426\n    Top = 41\n    Width = 360\n    Anchors = [akTop, akLeft, akBottom]\n    Font.Height = -13\n    Font.Name = 'Courier New'\n    Font.Pitch = fpFixed\n    Font.Quality = fqNonAntialiased\n    ParentColor = False\n    ParentFont = False\n    TabOrder = 2\n    Gutter.Width = 57\n    Gutter.MouseActions = <>\n    RightGutter.Width = 0\n    RightGutter.MouseActions = <>\n    Highlighter = SynFreePascalSyn1\n    Keystrokes = <    \n      item\n        Command = ecUp\n        ShortCut = 38\n      end    \n      item\n        Command = ecSelUp\n        ShortCut = 8230\n      end    \n      item\n        Command = ecScrollUp\n        ShortCut = 16422\n      end    \n      item\n        Command = ecDown\n        ShortCut = 40\n      end    \n      item\n        Command = ecSelDown\n        ShortCut = 8232\n      end    \n      item\n        Command = ecScrollDown\n        ShortCut = 16424\n      end    \n      item\n        Command = ecLeft\n        ShortCut = 37\n      end    \n      item\n        Command = ecSelLeft\n        ShortCut = 8229\n      end    \n      item\n        Command = ecWordLeft\n        ShortCut = 16421\n      end    \n      item\n        Command = ecSelWordLeft\n        ShortCut = 24613\n      end    \n      item\n        Command = ecRight\n        ShortCut = 39\n      end    \n      item\n        Command = ecSelRight\n        ShortCut = 8231\n      end    \n      item\n        Command = ecWordRight\n        ShortCut = 16423\n      end    \n      item\n        Command = ecSelWordRight\n        ShortCut = 24615\n      end    \n      item\n        Command = ecPageDown\n        ShortCut = 34\n      end    \n      item\n        Command = ecSelPageDown\n        ShortCut = 8226\n      end    \n      item\n        Command = ecPageBottom\n        ShortCut = 16418\n      end    \n      item\n        Command = ecSelPageBottom\n        ShortCut = 24610\n      end    \n      item\n        Command = ecPageUp\n        ShortCut = 33\n      end    \n      item\n        Command = ecSelPageUp\n        ShortCut = 8225\n      end    \n      item\n        Command = ecPageTop\n        ShortCut = 16417\n      end    \n      item\n        Command = ecSelPageTop\n        ShortCut = 24609\n      end    \n      item\n        Command = ecLineStart\n        ShortCut = 36\n      end    \n      item\n        Command = ecSelLineStart\n        ShortCut = 8228\n      end    \n      item\n        Command = ecEditorTop\n        ShortCut = 16420\n      end    \n      item\n        Command = ecSelEditorTop\n        ShortCut = 24612\n      end    \n      item\n        Command = ecLineEnd\n        ShortCut = 35\n      end    \n      item\n        Command = ecSelLineEnd\n        ShortCut = 8227\n      end    \n      item\n        Command = ecEditorBottom\n        ShortCut = 16419\n      end    \n      item\n        Command = ecSelEditorBottom\n        ShortCut = 24611\n      end    \n      item\n        Command = ecToggleMode\n        ShortCut = 45\n      end    \n      item\n        Command = ecCopy\n        ShortCut = 16429\n      end    \n      item\n        Command = ecPaste\n        ShortCut = 8237\n      end    \n      item\n        Command = ecDeleteChar\n        ShortCut = 46\n      end    \n      item\n        Command = ecCut\n        ShortCut = 8238\n      end    \n      item\n        Command = ecDeleteLastChar\n        ShortCut = 8\n      end    \n      item\n        Command = ecDeleteLastChar\n        ShortCut = 8200\n      end    \n      item\n        Command = ecDeleteLastWord\n        ShortCut = 16392\n      end    \n      item\n        Command = ecUndo\n        ShortCut = 32776\n      end    \n      item\n        Command = ecRedo\n        ShortCut = 40968\n      end    \n      item\n        Command = ecLineBreak\n        ShortCut = 13\n      end    \n      item\n        Command = ecSelectAll\n        ShortCut = 16449\n      end    \n      item\n        Command = ecCopy\n        ShortCut = 16451\n      end    \n      item\n        Command = ecBlockIndent\n        ShortCut = 24649\n      end    \n      item\n        Command = ecLineBreak\n        ShortCut = 16461\n      end    \n      item\n        Command = ecInsertLine\n        ShortCut = 16462\n      end    \n      item\n        Command = ecDeleteWord\n        ShortCut = 16468\n      end    \n      item\n        Command = ecBlockUnindent\n        ShortCut = 24661\n      end    \n      item\n        Command = ecPaste\n        ShortCut = 16470\n      end    \n      item\n        Command = ecCut\n        ShortCut = 16472\n      end    \n      item\n        Command = ecDeleteLine\n        ShortCut = 16473\n      end    \n      item\n        Command = ecDeleteEOL\n        ShortCut = 24665\n      end    \n      item\n        Command = ecUndo\n        ShortCut = 16474\n      end    \n      item\n        Command = ecRedo\n        ShortCut = 24666\n      end    \n      item\n        Command = ecGotoMarker0\n        ShortCut = 16432\n      end    \n      item\n        Command = ecGotoMarker1\n        ShortCut = 16433\n      end    \n      item\n        Command = ecGotoMarker2\n        ShortCut = 16434\n      end    \n      item\n        Command = ecGotoMarker3\n        ShortCut = 16435\n      end    \n      item\n        Command = ecGotoMarker4\n        ShortCut = 16436\n      end    \n      item\n        Command = ecGotoMarker5\n        ShortCut = 16437\n      end    \n      item\n        Command = ecGotoMarker6\n        ShortCut = 16438\n      end    \n      item\n        Command = ecGotoMarker7\n        ShortCut = 16439\n      end    \n      item\n        Command = ecGotoMarker8\n        ShortCut = 16440\n      end    \n      item\n        Command = ecGotoMarker9\n        ShortCut = 16441\n      end    \n      item\n        Command = ecSetMarker0\n        ShortCut = 24624\n      end    \n      item\n        Command = ecSetMarker1\n        ShortCut = 24625\n      end    \n      item\n        Command = ecSetMarker2\n        ShortCut = 24626\n      end    \n      item\n        Command = ecSetMarker3\n        ShortCut = 24627\n      end    \n      item\n        Command = ecSetMarker4\n        ShortCut = 24628\n      end    \n      item\n        Command = ecSetMarker5\n        ShortCut = 24629\n      end    \n      item\n        Command = ecSetMarker6\n        ShortCut = 24630\n      end    \n      item\n        Command = ecSetMarker7\n        ShortCut = 24631\n      end    \n      item\n        Command = ecSetMarker8\n        ShortCut = 24632\n      end    \n      item\n        Command = ecSetMarker9\n        ShortCut = 24633\n      end    \n      item\n        Command = EcFoldLevel1\n        ShortCut = 41009\n      end    \n      item\n        Command = EcFoldLevel2\n        ShortCut = 41010\n      end    \n      item\n        Command = EcFoldLevel1\n        ShortCut = 41011\n      end    \n      item\n        Command = EcFoldLevel1\n        ShortCut = 41012\n      end    \n      item\n        Command = EcFoldLevel1\n        ShortCut = 41013\n      end    \n      item\n        Command = EcFoldLevel6\n        ShortCut = 41014\n      end    \n      item\n        Command = EcFoldLevel7\n        ShortCut = 41015\n      end    \n      item\n        Command = EcFoldLevel8\n        ShortCut = 41016\n      end    \n      item\n        Command = EcFoldLevel9\n        ShortCut = 41017\n      end    \n      item\n        Command = EcFoldLevel0\n        ShortCut = 41008\n      end    \n      item\n        Command = EcFoldCurrent\n        ShortCut = 41005\n      end    \n      item\n        Command = EcUnFoldCurrent\n        ShortCut = 41003\n      end    \n      item\n        Command = EcToggleMarkupWord\n        ShortCut = 32845\n      end    \n      item\n        Command = ecNormalSelect\n        ShortCut = 24654\n      end    \n      item\n        Command = ecColumnSelect\n        ShortCut = 24643\n      end    \n      item\n        Command = ecLineSelect\n        ShortCut = 24652\n      end    \n      item\n        Command = ecTab\n        ShortCut = 9\n      end    \n      item\n        Command = ecShiftTab\n        ShortCut = 8201\n      end    \n      item\n        Command = ecMatchBracket\n        ShortCut = 24642\n      end    \n      item\n        Command = ecColSelUp\n        ShortCut = 40998\n      end    \n      item\n        Command = ecColSelDown\n        ShortCut = 41000\n      end    \n      item\n        Command = ecColSelLeft\n        ShortCut = 40997\n      end    \n      item\n        Command = ecColSelRight\n        ShortCut = 40999\n      end    \n      item\n        Command = ecColSelPageDown\n        ShortCut = 40994\n      end    \n      item\n        Command = ecColSelPageBottom\n        ShortCut = 57378\n      end    \n      item\n        Command = ecColSelPageUp\n        ShortCut = 40993\n      end    \n      item\n        Command = ecColSelPageTop\n        ShortCut = 57377\n      end    \n      item\n        Command = ecColSelLineStart\n        ShortCut = 40996\n      end    \n      item\n        Command = ecColSelLineEnd\n        ShortCut = 40995\n      end    \n      item\n        Command = ecColSelEditorTop\n        ShortCut = 57380\n      end    \n      item\n        Command = ecColSelEditorBottom\n        ShortCut = 57379\n      end>\n    MouseActions = <>\n    MouseSelActions = <>\n    Lines.Strings = (\n      'begin'\n      '  Fill(BGRABlack);'\n      '  ShowMessage(''Done'');'\n      'end;'\n    )\n    VisibleSpecialChars = [vscSpace, vscTabAtLast]\n    SelectedColor.BackPriority = 50\n    SelectedColor.ForePriority = 50\n    SelectedColor.FramePriority = 50\n    SelectedColor.BoldPriority = 50\n    SelectedColor.ItalicPriority = 50\n    SelectedColor.UnderlinePriority = 50\n    BracketHighlightStyle = sbhsBoth\n    BracketMatchColor.Background = clNone\n    BracketMatchColor.Foreground = clNone\n    BracketMatchColor.Style = [fsBold]\n    FoldedCodeColor.Background = clNone\n    FoldedCodeColor.Foreground = clGray\n    FoldedCodeColor.FrameColor = clGray\n    MouseLinkColor.Background = clNone\n    MouseLinkColor.Foreground = clBlue\n    LineHighlightColor.Background = clNone\n    LineHighlightColor.Foreground = clNone\n    inline SynLeftGutterPartList1: TSynGutterPartList\n      object SynGutterMarks1: TSynGutterMarks\n        Width = 24\n        MouseActions = <>\n      end\n      object SynGutterLineNumber1: TSynGutterLineNumber\n        Width = 17\n        MouseActions = <>\n        MarkupInfo.Background = clBtnFace\n        MarkupInfo.Foreground = clNone\n        DigitCount = 2\n        ShowOnlyLineNumbersMultiplesOf = 1\n        ZeroStart = False\n        LeadingZeros = False\n      end\n      object SynGutterChanges1: TSynGutterChanges\n        Width = 4\n        MouseActions = <>\n        ModifiedColor = 59900\n        SavedColor = clGreen\n      end\n      object SynGutterSeparator1: TSynGutterSeparator\n        Width = 2\n        MouseActions = <>\n        MarkupInfo.Background = clWhite\n        MarkupInfo.Foreground = clGray\n      end\n      object SynGutterCodeFolding1: TSynGutterCodeFolding\n        MouseActions = <>\n        MarkupInfo.Background = clNone\n        MarkupInfo.Foreground = clGray\n        MouseActionsExpanded = <>\n        MouseActionsCollapsed = <>\n      end\n    end\n  end\n  object SynFreePascalSyn1: TSynFreePascalSyn\n    Enabled = False\n    AsmAttri.FrameEdges = sfeAround\n    CommentAttri.FrameEdges = sfeAround\n    IDEDirectiveAttri.FrameEdges = sfeAround\n    IdentifierAttri.FrameEdges = sfeAround\n    KeyAttri.FrameEdges = sfeAround\n    NumberAttri.FrameEdges = sfeAround\n    SpaceAttri.FrameEdges = sfeAround\n    StringAttri.FrameEdges = sfeAround\n    SymbolAttri.FrameEdges = sfeAround\n    CaseLabelAttri.FrameEdges = sfeAround\n    DirectiveAttri.FrameEdges = sfeAround\n    CompilerMode = pcmObjFPC\n    NestedComments = True\n    left = 248\n    top = 8\n  end\nend\n"
  },
  {
    "path": "test/bgralape/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, SynHighlighterPas, SynEdit, Forms, Controls,\n  Graphics, Dialogs, StdCtrls, BGRAVirtualScreen, BGRABitmap;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\n    Button1: TButton;\n    SynEdit1: TSynEdit;\n    SynFreePascalSyn1: TSynFreePascalSyn;\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure Button1Click(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n    bmp: TBGRABitmap;\n    idxBmp: integer;\n    procedure UpdateBitmap;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses lpparser, lpcompiler, lputils, lpvartypes, lptypes, lpeval, lpinterpreter,\n  BGRABitmapTypes, ubgralape;\n\n{$R *.lfm}\n\nprocedure MyShowMessage{$I lape.proc}\nbegin\n  Form1.UpdateBitmap;\n  ShowMessage(PlpString(Params^[0])^);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.Button1Click(Sender: TObject);\nvar\n  Parser: TLapeTokenizerBase;\n  Compiler: TLapeCompiler;\nbegin\n  Parser := nil;\n  Compiler := nil;\n  try\n    Parser := TLapeTokenizerString.Create(SynEdit1.Lines.Text);\n    Compiler := TLapeCompiler.Create(Parser);\n\n    InitializePascalScriptBasics(Compiler, [psiTypeAlias]);\n    ExposeGlobals(Compiler);\n\n    Compiler.addGlobalFunc('procedure ShowMessage(s: string);', @MyShowMessage);\n\n    ubgralape.AddScriptSystemTypes(Compiler);\n    ubgralape.AddScriptSystemFunctions(Compiler);\n\n//    Compiler.addGlobalMethod('procedure _writeln; override;', @MyWriteLn, Form1);\n\n//    c := LapeImportWrapper(@StupidProc, Compiler, 'function(abc: array of integer): array of integer', FFI_SYSV);\n//    Compiler.addGlobalFunc('function StupidProc(abc: array of integer): array of integer', c.Func);\n\n    if not Compiler.Compile() then\n      raise Exception.Create('Error');\n\n    try\n      FreeAndNil(bmp);\n      bmp := TBGRABitmap.Create(BGRAVirtualScreen1.Width,BGRAVirtualScreen1.Height);\n      idxBmp:= ubgralape.RegisterBitmap(bmp);\n      ubgralape.SetTargetBitmap(idxBmp);\n      RunCode(Compiler.Emitter);\n    finally\n      ubgralape.UnregisterBitmap(idxBmp);\n      idxBmp := -1;\n    end;\n  except\n    on E: Exception do\n    begin\n      ShowMessage(E.Message);\n    end;\n  end;\n  If Assigned(Compiler) then\n    FreeAndNil(Compiler)\n  else\n    FreeAndNil(Parser);\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nbegin\n  Bitmap.DrawCheckers(rect(0,0,Bitmap.Width,Bitmap.Height),BGRAWhite,CSSSilver);\n  if Assigned(bmp) then Bitmap.PutImage(0,0,bmp,dmDrawWithTransparency);\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  SynEdit1.Lines.LoadFromFile('tests.pas');\n  bmp := nil;\n  idxBmp := -1;\n  WindowState:= wsMaximized;\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  FreeAndNil(bmp);\nend;\n\nprocedure TForm1.UpdateBitmap;\nbegin\n  if (idxBmp = -1) or (bmp = nil) then exit;\n  ubgralape.EnsureInvalidate(idxBmp);\n  Form1.BGRAVirtualScreen1.RedrawBitmap;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/bgratutorial3d.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"5\">\n      <Item1>\n        <PackageName Value=\"BGLControls\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"etpackage\"/>\n      </Item3>\n      <Item4>\n        <PackageName Value=\"bgracontrols\"/>\n        <MinVersion Major=\"1\" Release=\"9\" Build=\"7\" Valid=\"True\"/>\n      </Item4>\n      <Item5>\n        <PackageName Value=\"LCL\"/>\n      </Item5>\n    </RequiredPackages>\n    <Units Count=\"93\">\n      <Unit0>\n        <Filename Value=\"bgratutorial3d.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"21\" Y=\"9\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <TopLine Value=\"162\"/>\n        <CursorPos X=\"18\" Y=\"176\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"ubgrasamples.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <CursorPos X=\"20\" Y=\"9\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"ex1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"14\"/>\n        <CursorPos X=\"40\" Y=\"22\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"utexture.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"11\"/>\n        <CursorPos X=\"17\" Y=\"6\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"ex2.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"7\"/>\n        <TopLine Value=\"137\"/>\n        <CursorPos X=\"30\" Y=\"147\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"ex3.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"6\"/>\n        <TopLine Value=\"37\"/>\n        <CursorPos Y=\"64\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1149\"/>\n        <CursorPos X=\"53\" Y=\"1175\"/>\n        <UsageCount Value=\"101\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"ex4.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"26\"/>\n        <CursorPos X=\"12\" Y=\"239\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"86\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygonaliased.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"154\"/>\n        <CursorPos X=\"40\" Y=\"182\"/>\n        <UsageCount Value=\"77\"/>\n      </Unit10>\n      <Unit11>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"103\"/>\n        <UsageCount Value=\"72\"/>\n      </Unit11>\n      <Unit12>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"38\" Y=\"146\"/>\n        <UsageCount Value=\"50\"/>\n      </Unit12>\n      <Unit13>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpash.inc\"/>\n        <TopLine Value=\"256\"/>\n        <CursorPos X=\"8\" Y=\"274\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit13>\n      <Unit14>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\math.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"937\"/>\n        <CursorPos X=\"6\" Y=\"940\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit14>\n      <Unit15>\n        <Filename Value=\"..\\bgrabitmap\\bgragradients.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"80\" Y=\"12\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit15>\n      <Unit16>\n        <Filename Value=\"..\\bgrabitmap\\bgrasse.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"54\"/>\n        <CursorPos X=\"24\" Y=\"76\"/>\n        <UsageCount Value=\"102\"/>\n      </Unit16>\n      <Unit17>\n        <Filename Value=\"..\\bgrabitmap\\bgraphongtypes.pas\"/>\n        <CursorPos X=\"18\" Y=\"8\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit17>\n      <Unit18>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\i386\\mmx.pp\"/>\n        <TopLine Value=\"45\"/>\n        <CursorPos X=\"52\" Y=\"55\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit18>\n      <Unit19>\n        <Filename Value=\"..\\bgrabitmap\\phongdraw.inc\"/>\n        <TopLine Value=\"202\"/>\n        <CursorPos X=\"49\" Y=\"229\"/>\n        <UsageCount Value=\"36\"/>\n      </Unit19>\n      <Unit20>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan2.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"91\"/>\n        <CursorPos X=\"45\" Y=\"115\"/>\n        <UsageCount Value=\"85\"/>\n      </Unit20>\n      <Unit21>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <TopLine Value=\"1095\"/>\n        <CursorPos X=\"58\" Y=\"1097\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit21>\n      <Unit22>\n        <Filename Value=\"..\\bgrabitmap\\shape3D.inc\"/>\n        <CursorPos X=\"7\" Y=\"7\"/>\n        <UsageCount Value=\"37\"/>\n      </Unit22>\n      <Unit23>\n        <Filename Value=\"..\\bgrabitmap\\bgrascene3dinterface.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"88\"/>\n      </Unit23>\n      <Unit24>\n        <Filename Value=\"..\\bgrabitmap\\bgramatrix3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"25\"/>\n        <UsageCount Value=\"68\"/>\n      </Unit24>\n      <Unit25>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"107\"/>\n        <CursorPos Y=\"143\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit25>\n      <Unit26>\n        <Filename Value=\"..\\bgrabitmap\\bgracolorint.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"267\"/>\n        <CursorPos X=\"3\" Y=\"268\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit26>\n      <Unit27>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"27\"/>\n        <CursorPos X=\"58\" Y=\"34\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit27>\n      <Unit28>\n        <Filename Value=\"..\\bgrabitmap\\csscolorconst.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"110\"/>\n        <CursorPos X=\"3\" Y=\"128\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit28>\n      <Unit29>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"73\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit29>\n      <Unit30>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"22\" Y=\"8\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit30>\n      <Unit31>\n        <Filename Value=\"..\\bgrabitmap\\lightingclasses3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"15\" Y=\"12\"/>\n        <UsageCount Value=\"90\"/>\n      </Unit31>\n      <Unit32>\n        <Filename Value=\"..\\bgrabitmap\\phonglight.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"26\"/>\n        <CursorPos X=\"95\" Y=\"67\"/>\n        <UsageCount Value=\"67\"/>\n      </Unit32>\n      <Unit33>\n        <Filename Value=\"..\\bgrabitmap\\polyaliaspersp.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"126\"/>\n        <CursorPos X=\"29\" Y=\"160\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit33>\n      <Unit34>\n        <Filename Value=\"..\\bgrabitmap\\lineartexscan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"40\" Y=\"11\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit34>\n      <Unit35>\n        <Filename Value=\"..\\bgrabitmap\\lineartexscan2.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"11\"/>\n        <CursorPos X=\"36\" Y=\"34\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit35>\n      <Unit36>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\varianth.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"485\"/>\n        <CursorPos X=\"10\" Y=\"503\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit36>\n      <Unit37>\n        <Filename Value=\"..\\bgrabitmap\\perspectivecolorscan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos Y=\"21\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit37>\n      <Unit38>\n        <Filename Value=\"..\\bgrabitmap\\phongdrawsse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit38>\n      <Unit39>\n        <Filename Value=\"..\\bgrabitmap\\phonglightsse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit39>\n      <Unit40>\n        <Filename Value=\"..\\bgrabitmap\\bgracoordpool3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"284\"/>\n        <CursorPos X=\"36\" Y=\"295\"/>\n        <UsageCount Value=\"21\"/>\n      </Unit40>\n      <Unit41>\n        <Filename Value=\"ex5.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"87\"/>\n        <CursorPos X=\"31\" Y=\"110\"/>\n        <UsageCount Value=\"160\"/>\n      </Unit41>\n      <Unit42>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos X=\"10\" Y=\"32\"/>\n        <UsageCount Value=\"25\"/>\n      </Unit42>\n      <Unit43>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\lazfreetype.pas\"/>\n        <TopLine Value=\"1282\"/>\n        <CursorPos X=\"76\" Y=\"1290\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit43>\n      <Unit44>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\tterror.pas\"/>\n        <CursorPos X=\"14\" Y=\"22\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit44>\n      <Unit45>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\ttraster.pas\"/>\n        <TopLine Value=\"42\"/>\n        <CursorPos Y=\"50\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit45>\n      <Unit46>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\easylazfreetype.pas\"/>\n        <TopLine Value=\"150\"/>\n        <CursorPos X=\"35\" Y=\"159\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit46>\n      <Unit47>\n        <Filename Value=\"C:\\lazarussrc\\lcl\\forms.pp\"/>\n        <TopLine Value=\"770\"/>\n        <CursorPos X=\"14\" Y=\"788\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit47>\n      <Unit48>\n        <Filename Value=\"C:\\lazarussrc\\lcl\\controls.pp\"/>\n        <TopLine Value=\"1383\"/>\n        <CursorPos X=\"14\" Y=\"1401\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit48>\n      <Unit49>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"199\"/>\n        <CursorPos X=\"58\" Y=\"228\"/>\n        <UsageCount Value=\"31\"/>\n      </Unit49>\n      <Unit50>\n        <Filename Value=\"..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"27\" Y=\"17\"/>\n        <UsageCount Value=\"33\"/>\n      </Unit50>\n      <Unit51>\n        <Filename Value=\"..\\bgrabitmap\\bgracustombitmap.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"23\"/>\n        <CursorPos X=\"5\" Y=\"37\"/>\n        <UsageCount Value=\"18\"/>\n      </Unit51>\n      <Unit52>\n        <Filename Value=\"..\\bgrabitmap\\bgrasse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit52>\n      <Unit53>\n        <Filename Value=\"..\\bgrabitmap\\shapes3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"117\" Y=\"6\"/>\n        <UsageCount Value=\"23\"/>\n      </Unit53>\n      <Unit54>\n        <Filename Value=\"..\\bgrabitmap\\face3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"15\" Y=\"75\"/>\n        <UsageCount Value=\"29\"/>\n      </Unit54>\n      <Unit55>\n        <Filename Value=\"..\\bgrabitmap\\object3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"80\"/>\n        <CursorPos X=\"22\" Y=\"83\"/>\n        <UsageCount Value=\"24\"/>\n      </Unit55>\n      <Unit56>\n        <Filename Value=\"..\\bgrabitmap\\vertex3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"182\"/>\n        <CursorPos X=\"65\" Y=\"193\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit56>\n      <Unit57>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\inc\\objpas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit57>\n      <Unit58>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\sysutils\\sysutilh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit58>\n      <Unit59>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\inc\\objpash.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"264\"/>\n        <CursorPos X=\"8\" Y=\"282\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit59>\n      <Unit60>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengltype.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"393\"/>\n        <CursorPos X=\"60\" Y=\"441\"/>\n        <UsageCount Value=\"36\"/>\n      </Unit60>\n      <Unit61>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"563\"/>\n        <CursorPos X=\"57\" Y=\"584\"/>\n        <UsageCount Value=\"43\"/>\n      </Unit61>\n      <Unit62>\n        <Filename Value=\"..\\bgrabitmap\\part3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"148\"/>\n        <CursorPos X=\"3\" Y=\"152\"/>\n        <UsageCount Value=\"31\"/>\n      </Unit62>\n      <Unit63>\n        <Filename Value=\"..\\bgrabitmap\\bgrarenderer3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"99\"/>\n        <CursorPos X=\"31\" Y=\"136\"/>\n        <UsageCount Value=\"34\"/>\n      </Unit63>\n      <Unit64>\n        <Filename Value=\"..\\bgrabitmap\\bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1033\"/>\n        <CursorPos X=\"6\" Y=\"1034\"/>\n        <UsageCount Value=\"38\"/>\n      </Unit64>\n      <Unit65>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadbmp.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"678\"/>\n        <CursorPos X=\"10\" Y=\"696\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit65>\n      <Unit66>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"727\"/>\n        <CursorPos X=\"44\" Y=\"801\"/>\n        <UsageCount Value=\"39\"/>\n      </Unit66>\n      <Unit67>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"56\"/>\n        <CursorPos X=\"14\" Y=\"78\"/>\n        <UsageCount Value=\"37\"/>\n      </Unit67>\n      <Unit68>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\packages\\opengl\\src\\gl.pp\"/>\n        <UnitName Value=\"GL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"426\"/>\n        <CursorPos X=\"3\" Y=\"448\"/>\n        <UsageCount Value=\"22\"/>\n      </Unit68>\n      <Unit69>\n        <Filename Value=\"..\\..\\bgracontrols_svn\\bcrtti.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"239\"/>\n        <CursorPos X=\"36\" Y=\"264\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit69>\n      <Unit70>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\packages\\opengl\\src\\glext.pp\"/>\n        <UnitName Value=\"GLext\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"377\"/>\n        <CursorPos X=\"10\" Y=\"399\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit70>\n      <Unit71>\n        <Filename Value=\"..\\bgrabitmap\\bgraspritegl.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit71>\n      <Unit72>\n        <Filename Value=\"..\\..\\epiktimer\\epiktimer.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"449\"/>\n        <CursorPos Y=\"461\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit72>\n      <Unit73>\n        <Filename Value=\"..\\bgrabitmap\\bgrawinbitmap.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"217\"/>\n        <CursorPos X=\"42\" Y=\"229\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit73>\n      <Unit74>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\wininc\\func.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"818\"/>\n        <CursorPos X=\"10\" Y=\"832\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit74>\n      <Unit75>\n        <Filename Value=\"..\\bgrabitmap\\bgraanimatedgif.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"175\"/>\n        <CursorPos X=\"3\" Y=\"181\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit75>\n      <Unit76>\n        <Filename Value=\"..\\bgrabitmap\\bgragifformat.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"45\" Y=\"69\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit76>\n      <Unit77>\n        <Filename Value=\"..\\..\\bgracontrols_svn\\bcbasectrls.pas\"/>\n        <UnitName Value=\"BCBaseCtrls\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"22\"/>\n        <CursorPos X=\"32\" Y=\"38\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit77>\n      <Unit78>\n        <Filename Value=\"..\\bgrabitmap\\bglvirtualscreen.pas\"/>\n        <UnitName Value=\"BGLVirtualScreen\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"58\" Y=\"344\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit78>\n      <Unit79>\n        <Filename Value=\"C:\\lazarus\\components\\opengl\\openglcontext.pas\"/>\n        <UnitName Value=\"OpenGLContext\"/>\n        <EditorIndex Value=\"4\"/>\n        <TopLine Value=\"132\"/>\n        <CursorPos X=\"14\" Y=\"153\"/>\n        <UsageCount Value=\"15\"/>\n        <Loaded Value=\"True\"/>\n      </Unit79>\n      <Unit80>\n        <Filename Value=\"C:\\lazarus\\components\\opengl\\glwin32wglcontext.pas\"/>\n        <UnitName Value=\"GLWin32WGLContext\"/>\n        <EditorIndex Value=\"5\"/>\n        <TopLine Value=\"221\"/>\n        <CursorPos X=\"23\" Y=\"250\"/>\n        <UsageCount Value=\"15\"/>\n        <Loaded Value=\"True\"/>\n      </Unit80>\n      <Unit81>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\wininc\\base.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"100\"/>\n        <CursorPos X=\"6\" Y=\"122\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit81>\n      <Unit82>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\sysosh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"22\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit82>\n      <Unit83>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\classes\\classesh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"723\"/>\n        <CursorPos X=\"20\" Y=\"755\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit83>\n      <Unit84>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\classes\\stringl.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"616\"/>\n        <CursorPos X=\"3\" Y=\"619\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit84>\n      <Unit85>\n        <Filename Value=\"C:\\lazarus\\lcl\\include\\control.inc\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"4833\"/>\n        <CursorPos Y=\"4848\"/>\n        <UsageCount Value=\"14\"/>\n        <Loaded Value=\"True\"/>\n      </Unit85>\n      <Unit86>\n        <Filename Value=\"..\\..\\..\\bgracontrols\\colorspeedbutton.pas\"/>\n        <UnitName Value=\"ColorSpeedButton\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"28\"/>\n        <CursorPos Y=\"28\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n        <DefaultSyntaxHighlighter Value=\"Delphi\"/>\n      </Unit86>\n      <Unit87>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n        <EditorIndex Value=\"10\"/>\n        <TopLine Value=\"8\"/>\n        <CursorPos X=\"19\" Y=\"84\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit87>\n      <Unit88>\n        <Filename Value=\"..\\..\\..\\epiktimer\\epiktimer.pas\"/>\n        <UnitName Value=\"EpikTimer\"/>\n        <EditorIndex Value=\"1\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit88>\n      <Unit89>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n        <EditorIndex Value=\"12\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit89>\n      <Unit90>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n        <EditorIndex Value=\"13\"/>\n        <TopLine Value=\"46\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit90>\n      <Unit91>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n        <EditorIndex Value=\"8\"/>\n        <TopLine Value=\"166\"/>\n        <CursorPos X=\"22\" Y=\"169\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit91>\n      <Unit92>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n        <EditorIndex Value=\"9\"/>\n        <TopLine Value=\"416\"/>\n        <CursorPos X=\"14\" Y=\"429\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit92>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"197\" Column=\"13\" TopLine=\"177\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"199\" Column=\"26\" TopLine=\"190\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"207\" Column=\"14\" TopLine=\"204\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"212\" Column=\"14\" TopLine=\"204\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"223\" Column=\"32\" TopLine=\"204\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"224\" Column=\"20\" TopLine=\"204\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"225\" Column=\"32\" TopLine=\"204\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"226\" Column=\"20\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraopengl3d.pas\"/>\n        <Caret Line=\"16\" Column=\"32\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgracanvasgl.pas\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"226\" Column=\"20\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"81\" Column=\"19\" TopLine=\"65\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"111\" Column=\"21\" TopLine=\"132\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"153\" Column=\"21\" TopLine=\"132\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"164\" Column=\"21\" TopLine=\"152\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"287\" Column=\"21\" TopLine=\"272\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"7\" Column=\"11\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"81\" Column=\"26\" TopLine=\"74\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraopengl3d.pas\"/>\n        <Caret Line=\"84\" Column=\"19\" TopLine=\"8\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"utexture.pas\"/>\n        <Caret Line=\"107\" Column=\"35\" TopLine=\"88\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"ex2.pas\"/>\n        <Caret Line=\"64\" Column=\"6\" TopLine=\"50\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"ex2.pas\"/>\n        <Caret Line=\"147\" Column=\"30\" TopLine=\"137\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"174\" Column=\"14\" TopLine=\"164\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"66\" Column=\"23\" TopLine=\"56\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"176\" Column=\"18\" TopLine=\"156\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"165\" Column=\"10\" TopLine=\"159\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"174\" Column=\"3\" TopLine=\"161\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"176\" Column=\"18\" TopLine=\"162\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"utexture.pas\"/>\n        <Caret Line=\"14\" Column=\"11\" TopLine=\"7\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"utexture.pas\"/>\n        <Caret Line=\"53\" Column=\"23\" TopLine=\"40\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <VariablesInRegisters Value=\"True\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsStabs\"/>\n        <UseHeaptrc Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgratutorial3d/bgratutorial3d.lpr",
    "content": "program bgratutorial3d;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain, bgracontrols, ubgrasamples, ex1, utexture, ex2,\n  ex3, ex4, etpackage, ex5;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/bgratutorial3dsoftware.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"bgratutorial3dsoftware\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"4\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"etpackage\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"bgracontrols\"/>\n        <MinVersion Major=\"1\" Release=\"9\" Build=\"7\" Valid=\"True\"/>\n      </Item3>\n      <Item4>\n        <PackageName Value=\"LCL\"/>\n      </Item4>\n    </RequiredPackages>\n    <Units Count=\"92\">\n      <Unit0>\n        <Filename Value=\"bgratutorial3dsoftware.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"21\" Y=\"9\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <TopLine Value=\"181\"/>\n        <CursorPos Y=\"194\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"ubgrasamples.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <CursorPos X=\"20\" Y=\"9\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"ex1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"8\"/>\n        <TopLine Value=\"81\"/>\n        <CursorPos X=\"47\" Y=\"81\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"utexture.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"79\"/>\n        <CursorPos X=\"37\" Y=\"99\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"ex2.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"7\"/>\n        <TopLine Value=\"19\"/>\n        <CursorPos X=\"86\" Y=\"34\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"ex3.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"6\"/>\n        <TopLine Value=\"22\"/>\n        <CursorPos X=\"36\" Y=\"38\"/>\n        <UsageCount Value=\"207\"/>\n        <Loaded Value=\"True\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1149\"/>\n        <CursorPos X=\"53\" Y=\"1175\"/>\n        <UsageCount Value=\"101\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"ex4.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"26\"/>\n        <CursorPos X=\"12\" Y=\"239\"/>\n        <UsageCount Value=\"207\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"86\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygonaliased.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"154\"/>\n        <CursorPos X=\"40\" Y=\"182\"/>\n        <UsageCount Value=\"77\"/>\n      </Unit10>\n      <Unit11>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"103\"/>\n        <UsageCount Value=\"72\"/>\n      </Unit11>\n      <Unit12>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"38\" Y=\"146\"/>\n        <UsageCount Value=\"50\"/>\n      </Unit12>\n      <Unit13>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpash.inc\"/>\n        <TopLine Value=\"256\"/>\n        <CursorPos X=\"8\" Y=\"274\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit13>\n      <Unit14>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\math.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"937\"/>\n        <CursorPos X=\"6\" Y=\"940\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit14>\n      <Unit15>\n        <Filename Value=\"..\\bgrabitmap\\bgragradients.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"80\" Y=\"12\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit15>\n      <Unit16>\n        <Filename Value=\"..\\bgrabitmap\\bgrasse.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"54\"/>\n        <CursorPos X=\"24\" Y=\"76\"/>\n        <UsageCount Value=\"102\"/>\n      </Unit16>\n      <Unit17>\n        <Filename Value=\"..\\bgrabitmap\\bgraphongtypes.pas\"/>\n        <CursorPos X=\"18\" Y=\"8\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit17>\n      <Unit18>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\i386\\mmx.pp\"/>\n        <TopLine Value=\"45\"/>\n        <CursorPos X=\"52\" Y=\"55\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit18>\n      <Unit19>\n        <Filename Value=\"..\\bgrabitmap\\phongdraw.inc\"/>\n        <TopLine Value=\"202\"/>\n        <CursorPos X=\"49\" Y=\"229\"/>\n        <UsageCount Value=\"36\"/>\n      </Unit19>\n      <Unit20>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan2.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"91\"/>\n        <CursorPos X=\"45\" Y=\"115\"/>\n        <UsageCount Value=\"85\"/>\n      </Unit20>\n      <Unit21>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <TopLine Value=\"1095\"/>\n        <CursorPos X=\"58\" Y=\"1097\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit21>\n      <Unit22>\n        <Filename Value=\"..\\bgrabitmap\\shape3D.inc\"/>\n        <CursorPos X=\"7\" Y=\"7\"/>\n        <UsageCount Value=\"37\"/>\n      </Unit22>\n      <Unit23>\n        <Filename Value=\"..\\bgrabitmap\\bgrascene3dinterface.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"88\"/>\n      </Unit23>\n      <Unit24>\n        <Filename Value=\"..\\bgrabitmap\\bgramatrix3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"25\"/>\n        <UsageCount Value=\"68\"/>\n      </Unit24>\n      <Unit25>\n        <Filename Value=\"bgracolorint.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"107\"/>\n        <CursorPos Y=\"143\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit25>\n      <Unit26>\n        <Filename Value=\"..\\bgrabitmap\\bgracolorint.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"267\"/>\n        <CursorPos X=\"3\" Y=\"268\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit26>\n      <Unit27>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"27\"/>\n        <CursorPos X=\"58\" Y=\"34\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit27>\n      <Unit28>\n        <Filename Value=\"..\\bgrabitmap\\csscolorconst.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"110\"/>\n        <CursorPos X=\"3\" Y=\"128\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit28>\n      <Unit29>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"73\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit29>\n      <Unit30>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"22\" Y=\"8\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit30>\n      <Unit31>\n        <Filename Value=\"..\\bgrabitmap\\lightingclasses3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"15\" Y=\"12\"/>\n        <UsageCount Value=\"90\"/>\n      </Unit31>\n      <Unit32>\n        <Filename Value=\"..\\bgrabitmap\\phonglight.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"26\"/>\n        <CursorPos X=\"95\" Y=\"67\"/>\n        <UsageCount Value=\"67\"/>\n      </Unit32>\n      <Unit33>\n        <Filename Value=\"..\\bgrabitmap\\polyaliaspersp.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"126\"/>\n        <CursorPos X=\"29\" Y=\"160\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit33>\n      <Unit34>\n        <Filename Value=\"..\\bgrabitmap\\lineartexscan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"40\" Y=\"11\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit34>\n      <Unit35>\n        <Filename Value=\"..\\bgrabitmap\\lineartexscan2.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"11\"/>\n        <CursorPos X=\"36\" Y=\"34\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit35>\n      <Unit36>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\varianth.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"485\"/>\n        <CursorPos X=\"10\" Y=\"503\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit36>\n      <Unit37>\n        <Filename Value=\"..\\bgrabitmap\\perspectivecolorscan.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos Y=\"21\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit37>\n      <Unit38>\n        <Filename Value=\"..\\bgrabitmap\\phongdrawsse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit38>\n      <Unit39>\n        <Filename Value=\"..\\bgrabitmap\\phonglightsse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit39>\n      <Unit40>\n        <Filename Value=\"..\\bgrabitmap\\bgracoordpool3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"284\"/>\n        <CursorPos X=\"36\" Y=\"295\"/>\n        <UsageCount Value=\"21\"/>\n      </Unit40>\n      <Unit41>\n        <Filename Value=\"ex5.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"87\"/>\n        <CursorPos X=\"31\" Y=\"110\"/>\n        <UsageCount Value=\"159\"/>\n      </Unit41>\n      <Unit42>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos X=\"10\" Y=\"32\"/>\n        <UsageCount Value=\"25\"/>\n      </Unit42>\n      <Unit43>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\lazfreetype.pas\"/>\n        <TopLine Value=\"1282\"/>\n        <CursorPos X=\"76\" Y=\"1290\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit43>\n      <Unit44>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\tterror.pas\"/>\n        <CursorPos X=\"14\" Y=\"22\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit44>\n      <Unit45>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\ttraster.pas\"/>\n        <TopLine Value=\"42\"/>\n        <CursorPos Y=\"50\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit45>\n      <Unit46>\n        <Filename Value=\"C:\\lazarussrc\\components\\lazutils\\easylazfreetype.pas\"/>\n        <TopLine Value=\"150\"/>\n        <CursorPos X=\"35\" Y=\"159\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit46>\n      <Unit47>\n        <Filename Value=\"C:\\lazarussrc\\lcl\\forms.pp\"/>\n        <TopLine Value=\"770\"/>\n        <CursorPos X=\"14\" Y=\"788\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit47>\n      <Unit48>\n        <Filename Value=\"C:\\lazarussrc\\lcl\\controls.pp\"/>\n        <TopLine Value=\"1383\"/>\n        <CursorPos X=\"14\" Y=\"1401\"/>\n        <UsageCount Value=\"3\"/>\n      </Unit48>\n      <Unit49>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"199\"/>\n        <CursorPos X=\"58\" Y=\"228\"/>\n        <UsageCount Value=\"31\"/>\n      </Unit49>\n      <Unit50>\n        <Filename Value=\"..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"27\" Y=\"17\"/>\n        <UsageCount Value=\"33\"/>\n      </Unit50>\n      <Unit51>\n        <Filename Value=\"..\\bgrabitmap\\bgracustombitmap.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"23\"/>\n        <CursorPos X=\"5\" Y=\"37\"/>\n        <UsageCount Value=\"18\"/>\n      </Unit51>\n      <Unit52>\n        <Filename Value=\"..\\bgrabitmap\\bgrasse.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit52>\n      <Unit53>\n        <Filename Value=\"..\\bgrabitmap\\shapes3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"117\" Y=\"6\"/>\n        <UsageCount Value=\"23\"/>\n      </Unit53>\n      <Unit54>\n        <Filename Value=\"..\\bgrabitmap\\face3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"15\" Y=\"75\"/>\n        <UsageCount Value=\"29\"/>\n      </Unit54>\n      <Unit55>\n        <Filename Value=\"..\\bgrabitmap\\object3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"80\"/>\n        <CursorPos X=\"22\" Y=\"83\"/>\n        <UsageCount Value=\"24\"/>\n      </Unit55>\n      <Unit56>\n        <Filename Value=\"..\\bgrabitmap\\vertex3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"182\"/>\n        <CursorPos X=\"65\" Y=\"193\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit56>\n      <Unit57>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\inc\\objpas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit57>\n      <Unit58>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\sysutils\\sysutilh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit58>\n      <Unit59>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\inc\\objpash.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"264\"/>\n        <CursorPos X=\"8\" Y=\"282\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit59>\n      <Unit60>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengltype.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"393\"/>\n        <CursorPos X=\"60\" Y=\"441\"/>\n        <UsageCount Value=\"36\"/>\n      </Unit60>\n      <Unit61>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"563\"/>\n        <CursorPos X=\"57\" Y=\"584\"/>\n        <UsageCount Value=\"43\"/>\n      </Unit61>\n      <Unit62>\n        <Filename Value=\"..\\bgrabitmap\\part3d.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"148\"/>\n        <CursorPos X=\"3\" Y=\"152\"/>\n        <UsageCount Value=\"31\"/>\n      </Unit62>\n      <Unit63>\n        <Filename Value=\"..\\bgrabitmap\\bgrarenderer3d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"99\"/>\n        <CursorPos X=\"31\" Y=\"136\"/>\n        <UsageCount Value=\"34\"/>\n      </Unit63>\n      <Unit64>\n        <Filename Value=\"..\\bgrabitmap\\bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1033\"/>\n        <CursorPos X=\"6\" Y=\"1034\"/>\n        <UsageCount Value=\"38\"/>\n      </Unit64>\n      <Unit65>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadbmp.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"678\"/>\n        <CursorPos X=\"10\" Y=\"696\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit65>\n      <Unit66>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengl3d.pas\"/>\n        <UnitName Value=\"BGRAOpenGL3D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"727\"/>\n        <CursorPos X=\"44\" Y=\"801\"/>\n        <UsageCount Value=\"39\"/>\n      </Unit66>\n      <Unit67>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvasgl.pas\"/>\n        <UnitName Value=\"BGRACanvasGL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"56\"/>\n        <CursorPos X=\"14\" Y=\"78\"/>\n        <UsageCount Value=\"37\"/>\n      </Unit67>\n      <Unit68>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\packages\\opengl\\src\\gl.pp\"/>\n        <UnitName Value=\"GL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"426\"/>\n        <CursorPos X=\"3\" Y=\"448\"/>\n        <UsageCount Value=\"22\"/>\n      </Unit68>\n      <Unit69>\n        <Filename Value=\"..\\..\\bgracontrols_svn\\bcrtti.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"239\"/>\n        <CursorPos X=\"36\" Y=\"264\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit69>\n      <Unit70>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\packages\\opengl\\src\\glext.pp\"/>\n        <UnitName Value=\"GLext\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"377\"/>\n        <CursorPos X=\"10\" Y=\"399\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit70>\n      <Unit71>\n        <Filename Value=\"..\\bgrabitmap\\bgraspritegl.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit71>\n      <Unit72>\n        <Filename Value=\"..\\..\\epiktimer\\epiktimer.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"449\"/>\n        <CursorPos Y=\"461\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit72>\n      <Unit73>\n        <Filename Value=\"..\\bgrabitmap\\bgrawinbitmap.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"217\"/>\n        <CursorPos X=\"42\" Y=\"229\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit73>\n      <Unit74>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\wininc\\func.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"818\"/>\n        <CursorPos X=\"10\" Y=\"832\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit74>\n      <Unit75>\n        <Filename Value=\"..\\bgrabitmap\\bgraanimatedgif.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"175\"/>\n        <CursorPos X=\"3\" Y=\"181\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit75>\n      <Unit76>\n        <Filename Value=\"..\\bgrabitmap\\bgragifformat.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"67\"/>\n        <CursorPos X=\"45\" Y=\"69\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit76>\n      <Unit77>\n        <Filename Value=\"..\\..\\bgracontrols_svn\\bcbasectrls.pas\"/>\n        <UnitName Value=\"BCBaseCtrls\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"22\"/>\n        <CursorPos X=\"32\" Y=\"38\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit77>\n      <Unit78>\n        <Filename Value=\"..\\bgrabitmap\\bglvirtualscreen.pas\"/>\n        <UnitName Value=\"BGLVirtualScreen\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"58\" Y=\"344\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit78>\n      <Unit79>\n        <Filename Value=\"C:\\lazarus\\components\\opengl\\openglcontext.pas\"/>\n        <UnitName Value=\"OpenGLContext\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"132\"/>\n        <CursorPos X=\"14\" Y=\"153\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit79>\n      <Unit80>\n        <Filename Value=\"C:\\lazarus\\components\\opengl\\glwin32wglcontext.pas\"/>\n        <UnitName Value=\"GLWin32WGLContext\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"221\"/>\n        <CursorPos X=\"23\" Y=\"250\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit80>\n      <Unit81>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\wininc\\base.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"100\"/>\n        <CursorPos X=\"6\" Y=\"122\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit81>\n      <Unit82>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\win\\sysosh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"22\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit82>\n      <Unit83>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\classes\\classesh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"723\"/>\n        <CursorPos X=\"20\" Y=\"755\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit83>\n      <Unit84>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\rtl\\objpas\\classes\\stringl.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"616\"/>\n        <CursorPos X=\"3\" Y=\"619\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit84>\n      <Unit85>\n        <Filename Value=\"C:\\lazarus\\lcl\\include\\control.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"4833\"/>\n        <CursorPos Y=\"4848\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit85>\n      <Unit86>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n        <EditorIndex Value=\"5\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit86>\n      <Unit87>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <UnitName Value=\"BGRAScene3D\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"691\"/>\n        <CursorPos Y=\"693\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit87>\n      <Unit88>\n        <Filename Value=\"C:\\lazarus\\lcl\\include\\wincontrol.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"5669\"/>\n        <CursorPos Y=\"5683\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit88>\n      <Unit89>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgracoordpool3d.pas\"/>\n        <UnitName Value=\"BGRACoordPool3D\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"361\"/>\n        <CursorPos X=\"38\" Y=\"368\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit89>\n      <Unit90>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgramatrix3d.pas\"/>\n        <UnitName Value=\"BGRAMatrix3D\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"606\"/>\n        <CursorPos X=\"55\" Y=\"622\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit90>\n      <Unit91>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascenetypes.pas\"/>\n        <UnitName Value=\"BGRASceneTypes\"/>\n        <EditorIndex Value=\"4\"/>\n        <TopLine Value=\"556\"/>\n        <CursorPos X=\"14\" Y=\"569\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit91>\n    </Units>\n    <JumpHistory Count=\"20\" HistoryIndex=\"19\">\n      <Position1>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"19\" Column=\"11\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"ex1.pas\"/>\n        <Caret Line=\"22\" Column=\"40\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"ex3.pas\"/>\n        <Caret Line=\"29\" Column=\"52\" TopLine=\"13\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"84\" Column=\"24\" TopLine=\"68\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"ex3.pas\"/>\n        <Caret Line=\"38\" Column=\"36\" TopLine=\"22\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"68\" Column=\"42\" TopLine=\"50\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"190\" Column=\"3\" TopLine=\"188\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"194\" TopLine=\"188\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"347\" Column=\"45\" TopLine=\"328\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"691\" TopLine=\"677\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"186\" Column=\"45\" TopLine=\"180\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgracoordpool3d.pas\"/>\n        <Caret Line=\"381\" TopLine=\"409\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"157\" Column=\"49\" TopLine=\"144\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"229\" Column=\"47\" TopLine=\"223\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"umain.pas\"/>\n        <Caret Line=\"194\" TopLine=\"181\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"342\" TopLine=\"329\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"691\" TopLine=\"684\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"342\" TopLine=\"341\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Caret Line=\"698\" Column=\"98\" TopLine=\"691\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrascenetypes.pas\"/>\n        <Caret Line=\"577\" Column=\"14\" TopLine=\"565\"/>\n      </Position20>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <VariablesInRegisters Value=\"True\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsStabs\"/>\n        <UseHeaptrc Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <CustomOptions Value=\"-dNO_OPENGL_SURFACE\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <BreakPoints Count=\"2\">\n      <Item1>\n        <Kind Value=\"bpkSource\"/>\n        <WatchScope Value=\"wpsLocal\"/>\n        <WatchKind Value=\"wpkWrite\"/>\n        <Source Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Line Value=\"704\"/>\n      </Item1>\n      <Item2>\n        <Kind Value=\"bpkSource\"/>\n        <WatchScope Value=\"wpsLocal\"/>\n        <WatchKind Value=\"wpkWrite\"/>\n        <Source Value=\"..\\..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <Line Value=\"693\"/>\n      </Item2>\n    </BreakPoints>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/bgratutorial3d/bgratutorial3dsoftware.lpr",
    "content": "program bgratutorial3dsoftware;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain, bgracontrols, ubgrasamples, ex1, utexture, ex2,\n  ex3, ex4, etpackage, ex5;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/ex1.pas",
    "content": "unit ex1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This is a simple 3D objet, a pyramid with a hexagonal base. The object is designed in the constructor.\n  The CreateObject method returns an interface to an empty object. An interface is similar to a class\n  except you don't have to call Free.\n  \n  A 3D object has a MainPart property, which contains the vertices describing the objet. It can contains subparts,\n  but here it is not the case. Parts can be rotated and scaled relative to their container. The MainPart is rotated\n  and scaled relative to the whole scene.\n  \n  Faces are created using vertices, so that they will follow the movements of these vertices. Here the default color\n  SandColor is defined for the whole object.\n  \n  In order to make it attractive, a lighting is defined. The simplest way is to use a directional light, so that\n  you don't have to bother with the coordinates of the light source. \n  \n  The background is filled with a gradient. Note that it is a vertical gradient which is very fast to draw, because\n  each scanline is filled with one color. }\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmapTypes\n  {$IFNDEF NO_OPENGL_SURFACE}, BGRAOpenGL, BGRAOpenGL3D{$ENDIF};\n\ntype\n\n  { TExample1 }\n\n  TExample1 = class({$IFNDEF NO_OPENGL_SURFACE}TBGLScene3D{$ELSE}TBGRAScene3D{$ENDIF})\n    SandColor: TBGRAPixel;\n    constructor Create;\n    procedure Render; override;\n    {$IFNDEF NO_OPENGL_SURFACE}\n    procedure RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single=1000); override;\n    {$ENDIF}\n  end;\n\nimplementation\n\n{ TExample1 }\n\nconstructor TExample1.Create;\nvar\n  base: array of IBGRAVertex3D;\n  top: IBGRAVertex3D;\nbegin\n  inherited Create;\n\n  SandColor := BGRA(255,240,128);\n\n  //create a pyramid\n  with CreateObject(SandColor) do\n  begin\n    top := MainPart.Add(0,-15,0);\n    //pyramid base is in a clockwise order if we look the pyramid from under\n    base := MainPart.Add([-20,15,-20, 0,15,-30, 20,15,-20, 20,15,20, 0,15,30, -20,15,20]);\n    AddFace(base);\n    //add four faces, the three vertices are in a clockwise order\n    AddFace([base[0],top,base[1]]);\n    AddFace([base[1],top,base[2]]);\n    AddFace([base[2],top,base[3]]);\n    AddFace([base[3],top,base[4]]);\n    AddFace([base[4],top,base[5]]);\n    AddFace([base[5],top,base[0]]);\n\n    MainPart.Scale(1.3);\n    MainPart.RotateYDeg(30);\n    MainPart.RotateXDeg(20);\n    MainPart.Translate(0,-5,0);\n  end;\n\n  //set ambiant lightness to dark (1 is normal lightness, 2 is complete whiteness)\n  AmbiantLightness := 0.5;\n  //add a directional light from top-left, maximum lightness will be 0.5 + 1 = 1.5\n  AddDirectionalLight(Point3D(1,1,1),0.5);\n\n  //we can have high quality antialiasing because it is a simple scene\n  RenderingOptions.PerspectiveMode := pmLinearMapping;\nend;\n\nprocedure TExample1.Render;\nbegin\n  //fill background\n  Surface.GradientFill(0,0,Surface.Width,Surface.Height,\n          MergeBGRA(SandColor,1,BGRABlack,1),\n          MergeBGRA(SandColor,1,BGRABlack,2),\n          gtLinear,PointF(0,0),PointF(0,Surface.Height),dmSet);\n\n  inherited Render;\nend;\n\n{$IFNDEF NO_OPENGL_SURFACE}\nprocedure TExample1.RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single);\nbegin\n  //fill background\n  ACanvas.FillRectLinearColor(0,0,BGLCanvas.Width,BGLCanvas.Height,\n          MergeBGRA(SandColor,1,BGRABlack,1),MergeBGRA(SandColor,1,BGRABlack,1),\n          MergeBGRA(SandColor,1,BGRABlack,2),MergeBGRA(SandColor,1,BGRABlack,2),\n          False);\n\n  inherited RenderGL(ACanvas, AMaxZ);\nend;\n{$ENDIF}\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/ex2.pas",
    "content": "unit ex2;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This example draws a box. It comes with different flavors :\n  - e2lNone : without lighting but with water\n  - e2lLightness : with lighting and water\n  - e2lColored : with two lights of different colors, but without water\n \n In this example, faces are textured. Each texture is generated with utexture unit. \n Because we want to have a shiny effect on the box, we need to create different material.\n The parameter of CreateMaterial is the exponent of the specular light, which is the\n concentration of the reflected beam. The lamps are not shiny, but we must see some of the \n light through them, that's why the LightThroughFactor is set to a small non zero number.\n \n The lighting normals are the direction considered to be orthogonal to the surface. The box\n uses lnFace, which means that each face is considered to be flat. On the contrary, lamps\n are rounded, so their lighting normals are lnVertex, which means that the surface is considered\n to be rounded between faces, using vertices as a reference. The example 3 show the difference\n between these modes.\n}\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmap, BGRAClasses, BGRABitmapTypes\n  {$IFNDEF NO_OPENGL_SURFACE}, BGRAOpenGL3D{$ENDIF};\n\ntype\n  TExample2Lighting = (e2lNone,e2lLightness,e2lColored);\n\n  { TExample2 }\n\n  TExample2 = class({$IFNDEF NO_OPENGL_SURFACE}TBGLScene3D{$ELSE}TBGRAScene3D{$ENDIF})\n  private\n    water,wood,vWood: TBGRABitmap;\n    box,ground,light1,light2: IBGRAObject3D;\n    alpha: integer;\n    cury: single;\n    FLighting: TExample2Lighting;\n    procedure CreateScene;\n    procedure ApplyTexCoord(face: IBGRAFace3D; Times: integer = 1);\n    procedure SetLighting(AValue: TExample2Lighting);\n  public\n    constructor Create(ALighting: TExample2Lighting);\n    procedure Elapse;\n    destructor Destroy; override;\n    property Lighting: TExample2Lighting read FLighting write SetLighting;\n  end;\n\nimplementation\n\nuses utexture;\n\nconst texSize = 256;\n\n{ TExample2 }\n\nconstructor TExample2.Create(ALighting: TExample2Lighting);\nbegin\n  inherited Create;\n\n  //create textures\n  water := CreateWaterTexture(texSize,texSize);\n  vWood := CreateVerticalWoodTexture(texSize,texSize);\n  wood := CreateWoodTexture(texSize,texSize);\n\n  FLighting:= ALighting;\n  CreateScene;\nend;\n\nprocedure TExample2.Elapse;\nvar dy: single;\nbegin\n  if light1 <> nil then light1.MainPart.RotateYDeg(1,False);\n  if light2 <> nil then light2.MainPart.RotateYDeg(-1.3,False);\n  if ground <> nil then\n  begin\n    dy := cos(alpha*Pi/180)*0.05;\n    IncF(cury, dy);\n    ground.MainPart.Translate(0,dy,0,False);\n    ViewPoint := Point3D(ViewPoint.x,-40+cury,ViewPoint.z);\n    LookAt(Point3D(0,cury,0),Point3D(0,-1,0));\n    inc(alpha);\n    if alpha = 360 then alpha := 0;\n  end;\nend;\n\nprocedure TExample2.CreateScene;\nvar\n  base,v: array of IBGRAVertex3D;\n  lamp,shiny: IBGRAMaterial3D;\nbegin\n  Clear;\n\n  shiny := CreateMaterial(500);\n  lamp := CreateMaterial;\n  lamp.LightThroughFactor := 0.01;\n\n  //create wooden box\n  box := CreateObject(vWood);\n  with box do\n  begin\n    v := MainPart.Add([-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1,\n                       -1,-1,+1, 1,-1,+1, 1,1,+1, -1,1,+1]);\n\n    ApplyTexCoord(AddFace([v[0],v[1],v[2],v[3]]));\n    ApplyTexCoord(AddFace([v[4],v[5],v[1],v[0]],wood));\n    ApplyTexCoord(AddFace([v[5],v[4],v[7],v[6]]));\n    ApplyTexCoord(AddFace([v[3],v[2],v[6],v[7]],wood));\n    ApplyTexCoord(AddFace([v[1],v[5],v[6],v[2]]));\n    ApplyTexCoord(AddFace([v[4],v[0],v[3],v[7]]));\n\n    MainPart.Scale(20);\n  end;\n\n  DefaultLightingNormal:= lnFace;\n\n  if Lighting = e2lColored then\n  begin\n    ViewPoint := Point3D(0,0,-150);\n    AmbiantLightColor := BGRA(192,192,192);\n    box.Material := shiny;\n\n    //lights\n    light1 := CreateHalfSphere(10, BGRA(255,128,0), 8,8);\n    with light1 do\n    begin\n      AddPointLight(MainPart.Add(0,0,-5),60,BGRA(255,128,0),0);\n      MainPart.Translate(-100,-50,0);\n      MainPart.LookAt(Point3D(0,0,0),Point3D(0,-1,0));\n      Material := lamp;\n      LightingNormal := lnVertex;\n    end;\n    light2 := CreateHalfSphere(10, BGRA(0,128,255), 8,8);\n    with light2 do\n    begin\n      AddPointLight(MainPart.Add(0,0,-5),100,BGRA(0,128,255),0);\n      MainPart.Translate(50,0,-100);\n      MainPart.LookAt(Point3D(0,0,0),Point3D(0,-1,0));\n      Material := lamp;\n      LightingNormal := lnVertex;\n    end;\n  end else\n  begin\n    //create ground\n    ground := CreateObject(water);\n    if Lighting = e2lLightness then\n    begin\n      with ground do\n      begin\n        base := MainPart.Add([-50,0,-50, -50,0,50, 50,0,50, 50,0,-50]);\n        ApplyTexCoord(AddFace(base,True),2);\n      end;\n      ViewPoint := Point3D(-40,-40,-100);\n      AmbiantLightness := 0.25;\n      with CreateObject do\n        AddPointLight(MainPart.Add(-100,-80,0),100,1.25, -0.15);\n    end else\n    begin\n      AmbiantLightness := 1;\n      with ground do\n      begin\n        base := MainPart.Add([-50,0,-50, -50,0,50, 50,0,50, 50,0,-50]);\n        MainPart.Scale(2);\n        ApplyTexCoord(AddFace(base,True),2);\n      end;\n      ViewPoint := Point3D(0,-40,-120);\n    end;\n    RenderingOptions.PerspectiveMode:= pmZBuffer;\n  end;\n\n  RenderingOptions.TextureInterpolation := false;\nend;\n\nprocedure TExample2.ApplyTexCoord(face: IBGRAFace3D; Times: integer);\nbegin\n  with face do\n  begin\n    TexCoord[0] := PointF(0,0);\n    TexCoord[1] := PointF(texSize*Times-1,0);\n    TexCoord[2] := PointF(texSize*Times-1,texSize*Times-1);\n    TexCoord[3] := PointF(0,texSize*Times-1);\n  end;\nend;\n\nprocedure TExample2.SetLighting(AValue: TExample2Lighting);\nbegin\n  if FLighting=AValue then Exit;\n  FLighting:=AValue;\n  CreateScene;\nend;\n\ndestructor TExample2.Destroy;\nbegin\n  water.free;\n  wood.free;\n  vWood.free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/ex3.pas",
    "content": "unit ex3;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This example is a cylinder. It aims at showing the difference \n  between lighting normals modes. \n  \n  The lighting normals are the direction considered to be orthogonal \n  to the surface. The box uses lnFace, which means that each face is \n  considered to be flat. On the contrary, lamps   are rounded, so \n  their lighting normals are lnVertex, which means that the surface \n  is considered to be rounded between faces, using vertices as a \n  reference.  \n  \n  Depending on the value of DefaultLightingNormal, the cylinder will \n  look polygonal or rounded. The value lnFaceVertexMix is an \n  intermediate between Face and Vertex, which allows to have some \n  light diffusion effect while keeping an angle between faces. \n  \n  The SaturationLow and SaturationHigh properties of the material allows\n  to create a shiny effect without actually computing reflected light. \n  Simply when a pixel is very bright, it turns into white, as if we\n  could see the reflection of some white beam. }\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmapTypes\n  {$IFNDEF NO_OPENGL_SURFACE}, BGRAOpenGL3D{$ENDIF};\n\ntype\n\n  { TExample3 }\n\n  TExample3 = class({$IFNDEF NO_OPENGL_SURFACE}TBGLScene3D{$ELSE}TBGRAScene3D{$ENDIF})\n    constructor Create;\n  end;\n\nimplementation\n\nuses BGRAMatrix3D;\n\n{ TExample3 }\n\nconstructor TExample3.Create;\nconst\n  radius = 20;\n  topY = -20;\n  bottomY = 20;\n  precision = 40;\nvar\n  bottom,top: array[1..precision] of IBGRAVertex3D;\n  topCoord,bottomCoord: TPoint3D;\n  rotateMatrix: TMatrix3D;\n  i,j: Integer;\nbegin\n  inherited Create;\n\n  DefaultMaterial.SpecularIndex := 50;\n  DefaultMaterial.AutoSpecularColor:= true;\n\n  //create a cylinder\n  with CreateObject(BGRA(0,0,255)) do\n  begin\n    for j := 1 to 2 do\n    begin\n      //top and bottom coordinates\n      topCoord := Point3D(radius,topY,0);\n      bottomCoord := Point3D(radius,bottomY,0);\n      //rotating around the Y axis\n      rotateMatrix := MatrixRotateY(2*Pi/precision);\n      //create the vertices\n      for i := 1 to precision do\n      begin\n        //store in reverse order the second time\n        if j = 2 then\n        begin\n          top[precision+1-i] := MainPart.Add(topCoord);\n          bottom[precision+1-i] := MainPart.Add(bottomCoord);\n        end\n        else\n        begin\n          top[i] := MainPart.Add(topCoord);\n          bottom[i] := MainPart.Add(bottomCoord);\n        end;\n        topCoord := rotateMatrix*topCoord;\n        bottomCoord := rotateMatrix*bottomCoord;\n      end;\n\n      //add faces : the second time, there will be in the opposite direction because of the reverse order\n      for i := 1 to precision do\n        AddFace([top[i],top[(i mod precision)+1],bottom[(i mod precision)+1],bottom[i]]);\n    end;\n\n    //apply a rotation to show the top of the cylinder\n    MainPart.RotateXDeg(30);\n  end;\n\n  //set ambiant lightness to dark (1 is normal lightness, 2 is complete whiteness)\n  AmbiantLightness := 0.5;\n  //add a directional light from top-left, maximum lightness will be 0.5 + 1 = 1.5\n  AddDirectionalLight(Point3D(1,1,1),1,-0.5);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/ex4.pas",
    "content": "unit ex4;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This example demonstrate how to load 3D objects and show them with\n  appropriate material and color. \n  \n  The LoadObjectFromFile returns an 3D object defined by an OBJ file.\n  Some things are ignored, like texture information or normal information.\n  But when a material name is used, the function UseMaterial is called.  \n  So here it is overriden in order to give the best material possible.\n  \n  Some objects have specific effects. For example, the teapot is defined\n  as Biface so that the reflected light is computed outside and inside\n  the glass. \n  \n  The helicopter is divided into two parts. The upper part contains the\n  rotor in order to rotate it, so that the helicopter seems to fly.\n  \n  The lamp contains in fact 4 lamps, and so 4 light sources are created. \n  \n  }\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmapTypes,\n  BGRAOpenGL3D, BGRAOpenGL;\n\ntype\n\n  { TExample4 }\n\n  TExample4 = class(TBGLScene3D)\n  protected\n    lamp,shiny,reflect: IBGRAMaterial3D;\n    rotated: IBGRAPart3D;\n    rotateCenter: TPoint3D;\n    message: string;\n    procedure UseMaterial(materialname: string; face: IBGRAFace3D); override;\n    procedure CreateScene;\n  public\n    procedure Render; override;\n    procedure Elapse;\n    procedure RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single=1000); override;\n    procedure NextModel;\n    constructor Create;\n  end;\n\nimplementation\n\nuses BGRATextFX;\n\nvar\n    numObj: integer= 3;\n\nconst\n   objList: array[0..9] of string = ( 'ciseau.obj',\n      'fourche.obj', 'pelle.obj', 'helico.obj', 'mario.obj', 'helice.obj',\n      'lampe.obj', 'teapot.obj', 'roue.obj', 'trumpet.obj');\n\n{ TExample4 }\n\nconstructor TExample4.Create;\nbegin\n  inherited Create;\n\n  //create shiny material using saturation of diffusion (1.3 .. 1.5)\n  shiny := CreateMaterial;\n  shiny.SaturationLow := 1.3;\n  shiny.SaturationHigh := 1.5;\n  reflect := CreateMaterial(50);\n  lamp := CreateMaterial;\n  lamp.LightThroughFactor := 0.05;\n\n  CreateScene;\nend;\n\nprocedure TExample4.UseMaterial(materialname: string; face: IBGRAFace3D);\nvar color : TBGRAPixel;\nbegin\n  if (materialname = 'globes') then\n  begin\n    color := BGRA(255,240,220);\n    face.Material := lamp;\n  end else\n  if (materialname = 'bone') then\n  begin\n    color := BGRA(255,240,220);\n  end else\n  if (materialname = 'bronze') then\n  begin\n    color := CSSSaddleBrown;\n    face.Material := reflect;\n  end else\n  if materialname = 'grey' then\n  begin\n    color := BGRA(230,192,80);\n    face.Material := shiny;\n  end else\n  begin\n     color := StrToBGRA(materialname);\n     if (objList[numObj] <> 'helice.obj') and (color.red = color.green) and (color.green = color.blue) then\n     begin\n       if (color.alpha <> 255) or (color.red = 0) then\n         face.Material := reflect\n       else\n         face.Material := shiny;\n     end else\n       if color.alpha <> 255 then\n         face.Material := reflect;\n  end;\n  face.SetColor( color );\nend;\n\nprocedure TExample4.CreateScene;\nvar obj: IBGRAObject3D;\n    r: single;\n    i: integer;\n    basePath, filename: string;\nbegin\n  Clear;\n\n  basePath := ExtractFilePath(Paramstr(0));\n  filename := 'obj'+PathDelim+objList[numObj];\n  if not fileexists(basePath+filename) and fileexists(basePath+'..'+PathDelim+'..'+PathDelim+filename) then\n    filename := '..'+PathDelim+'..'+PathDelim+filename;\n  filename := basePath+ filename;\n  if not FileExists(filename) then\n    begin\n      message := 'File not found : '+ filename;\n      exit;\n    end;\n\n  obj := LoadObjectFromFile(filename, objList[numObj] <> 'teapot.obj');\n\n  if objList[numObj] = 'helico.obj' then\n  begin\n    with obj.MainPart do\n    begin\n      rotated := CreatePart;\n      rotateCenter := Point3D(0,0,0);\n      for i := VertexCount-1 downto 0 do\n          if (Vertex[i].SceneCoord.y >= 22.2) then\n          begin\n            rotated.Add(Vertex[i]);\n            rotateCenter.Offset(Vertex[i].SceneCoord);\n          end;\n      rotateCenter.Scale(1/rotated.VertexCount);\n      obj.SeparatePart(rotated);\n      obj.MainPart.Scale(2,2,2);\n    end;\n  end else\n    rotated := nil;\n\n  obj.LightingNormal := lnVertex;\n  if objList[numObj] = 'teapot.obj' then\n    for i := 0 to obj.FaceCount-1 do\n      obj.Face[i].Biface := true;\n\n  with obj.MainPart.BoundingBox do\n    obj.MainPart.Translate((min+max)*(-1/2), False);\n  r := obj.MainPart.Radius;\n  if r <> 0 then obj.MainPart.Scale(40/r, False);\n  if objList[numObj] = 'lampe.obj' then\n  begin\n    obj.MainPart.RotateXDeg(180, False);\n    obj.MainPart.Scale(1.5,1.5,1.5);\n  end else\n  if objList[numObj] = 'mario.obj' then\n    obj.MainPart.RotateXDeg(90, False)\n  else\n  begin\n    obj.MainPart.RotateXDeg(180-20, False);\n    obj.MainPart.RotateYDeg(-20, False);\n    if objList[numObj] = 'trumpet.obj' then\n       obj.MainPart.Scale(2,2,2,False);\n  end;\n\n  if objList[numObj] = 'lampe.obj' then\n  begin\n    AmbiantLightness := 0.7;\n    AddPointLight(obj.MainPart.Add(0,7.7,0),10);\n    AddPointLight(obj.MainPart.Add(1.9,6.5,0),10);\n    AddPointLight(obj.MainPart.Add(-0.9,6.5,1.5),10);\n    AddPointLight(obj.MainPart.Add(-0.9,6.5,-1.7),10);\n  end\n  else\n  begin\n    //set ambiant lightness to dark (1 is normal lightness)\n    AmbiantLightness := 0.5;\n    if objList[numObj] = 'helice.obj' then\n      AddDirectionalLight(Point3D(1,1,1),0.75,-0.5)\n    else\n      AddDirectionalLight(Point3D(1,1,1),1,-0.5); //add a directional light from top-left, maximum lightness will be 0.5 + 1 = 1.5\n  end;\n\n  RenderingOptions.PerspectiveMode:= pmZBuffer;\n  if objList[numObj] = 'helice.obj' then\n    RenderingOptions.LightingInterpolation := liAlwaysHighQuality\n  else\n    RenderingOptions.LightingInterpolation := liSpecularHighQuality;\nend;\n\nprocedure TExample4.Render;\nvar fx: TBGRATextEffect;\nbegin\n  if objList[numObj] = 'teapot.obj' then\n    Surface.GradientFill(0,0,Surface.Width,Surface.Height,BGRABlack,BGRA(70,100,100),gtLinear,PointF(0,0),PointF(0,Surface.Height),dmSet) else\n  if objList[numObj] = 'lampe.obj' then\n    Surface.Fill(BGRA(0,0,60));\n\n  inherited Render;\n\n  if message <> '' then\n  begin\n    fx := TBGRATextEffect.Create(message,'Arial',20,True);\n    fx.DrawOutline(Surface,Surface.Width div 2,Surface.Height div 2-fx.TextHeight div 2,BGRABlack,taCenter);\n    fx.Draw(Surface,Surface.Width div 2,Surface.Height div 2-fx.TextHeight div 2,BGRAWhite,taCenter);\n    fx.Free;\n  end else\n    Surface.TextOut(Surface.Width,0,objList[numObj],BGRAWhite,taRightJustify);\nend;\n\nprocedure TExample4.Elapse;\nbegin\n  if rotated <> nil then\n  begin\n    rotated.Translate(-rotateCenter,false);\n    rotated.RotateYDeg(20,False);\n    rotated.Translate(rotateCenter,false);\n  end;\nend;\n\nprocedure TExample4.RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single);\nbegin\n  if objList[numObj] = 'teapot.obj' then\n    ACanvas.FillRectLinearColor(0,0,BGLCanvas.Width,BGLCanvas.Height,\n       BGRABlack,BGRABlack,\n       BGRA(70,100,100),BGRA(70,100,100),\n       False) else\n  if objList[numObj] = 'lampe.obj' then\n    ACanvas.Fill(BGRA(0,0,60));\n\n  inherited RenderGL(ACanvas, AMaxZ);\nend;\n\nprocedure TExample4.NextModel;\nbegin\n  inc(numObj);\n  if numObj = length(objList) then numObj := 0;\n\n  CreateScene;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/ex5.pas",
    "content": "unit ex5;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This example is just a box on a grass ground. It aims at showing\n  how to create a first-person view. Scene rotation is thus\n  handled differently in umain }\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmap, BGRABitmapTypes,\n  BGRAOpenGL3D, BGRAOpenGL;\n\ntype\n  { TExample5 }\n\n  TExample5 = class(TBGLScene3D)\n    grass,wood,vWood: TBGRABitmap;\n    box,ground,light1,light2: IBGRAObject3D;\n\n    constructor Create;\n    procedure ApplyTexCoord(face: IBGRAFace3D; Times: integer = 1);\n    procedure Render; override;\n    procedure RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single=1000); override;\n    destructor Destroy; override;\n  end;\n\nimplementation\n\nuses utexture;\n\nconst texSize = 256;\n\n{ TExample5 }\n\nconstructor TExample5.Create;\nvar\n  base,v: array of IBGRAVertex3D;\nbegin\n  inherited Create;\n\n  //create textures\n  grass := CreateGrassTexture(texSize,texSize);\n  vWood := CreateVerticalWoodTexture(texSize,texSize);\n  wood := CreateWoodTexture(texSize,texSize);\n\n  //create wooden box\n  box := CreateObject(vWood);\n  with box do\n  begin\n    v := MainPart.Add([-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1,\n                       -1,-1,+1, 1,-1,+1, 1,1,+1, -1,1,+1]);\n\n    ApplyTexCoord(AddFace([v[0],v[1],v[2],v[3]]));\n    ApplyTexCoord(AddFace([v[4],v[5],v[1],v[0]],wood));\n    ApplyTexCoord(AddFace([v[5],v[4],v[7],v[6]]));\n    ApplyTexCoord(AddFace([v[3],v[2],v[6],v[7]],wood));\n    ApplyTexCoord(AddFace([v[1],v[5],v[6],v[2]]));\n    ApplyTexCoord(AddFace([v[4],v[0],v[3],v[7]]));\n\n    MainPart.Translate(0,-1,0,False);\n    MainPart.Scale(20,False);\n    MainPart.Translate(0,0,200,FAlse);\n  end;\n\n  //create ground\n  ground := CreateObject(grass);\n  AmbiantLightness := 0.5;\n  with ground do\n  begin\n    base := MainPart.Add([-1,0,-1, -1,0,1, 1,0,1, 1,0,-1]);\n    MainPart.Scale(1000);\n    ApplyTexCoord(AddFace(base,True),10);\n  end;\n\n  Camera.ViewPoint := Point3D(0,-20,0);\n  Camera.LookAt(Point3D(0,-20,20),Point3D(0,-1,0));\n\n  RenderingOptions.PerspectiveMode:= pmZBuffer;\n  RenderingOptions.TextureInterpolation := false;\nend;\n\nprocedure TExample5.ApplyTexCoord(face: IBGRAFace3D; Times: integer);\nbegin\n  with face do\n  begin\n    TexCoord[0] := PointF(0,0);\n    TexCoord[1] := PointF(texSize*Times-1,0);\n    TexCoord[2] := PointF(texSize*Times-1,texSize*Times-1);\n    TexCoord[3] := PointF(0,texSize*Times-1);\n  end;\nend;\n\nprocedure TExample5.Render;\nbegin\n  Surface.GradientFill(0,0,Surface.Width,Surface.Height,\n          CSSSkyBlue,\n          MergeBGRA(CSSBlue,CSSSkyBlue),\n          gtLinear,PointF(0,0),PointF(0,Surface.Height),dmSet,\n          False);\n  inherited Render;\nend;\n\nprocedure TExample5.RenderGL(ACanvas: TBGLCustomCanvas; AMaxZ: single);\nbegin\n  ACanvas.FillRectLinearColor(0,0,BGLCanvas.Width,BGLCanvas.Height,\n          CSSSkyBlue,CSSSkyBlue,\n          MergeBGRA(CSSBlue,CSSSkyBlue),MergeBGRA(CSSBlue,CSSSkyBlue),\n          False);\n  inherited RenderGL(ACanvas, AMaxZ);\nend;\n\ndestructor TExample5.Destroy;\nbegin\n  grass.free;\n  wood.free;\n  vWood.free;\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/obj/airboat.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv 2.712726 -2.398764 -2.492640\nv 2.712726 -1.954302 -2.665440\nv -5.975275 -1.954302 -2.665440\nv -5.975275 -2.398764 -2.492640\nv -6.113514 -1.885536 -2.803680\nv 2.712726 -1.885536 -2.803680\nv -5.975275 -1.372307 -2.803680\nv -5.975275 -1.816770 -2.700000\nv 2.712726 -1.816770 -2.700000\nv 2.712726 -1.372307 -2.803680\nv 4.766168 -2.256987 -2.354400\nv 4.766168 -1.372307 -2.665439\nv 4.766168 -1.769892 -2.561759\nv 4.766168 -1.827445 -2.665439\nv 4.766168 -1.884998 -2.527199\nv 6.335766 -1.688939 -2.354399\nv 6.335766 -1.732171 -2.458079\nv 6.335766 -1.775403 -2.319839\nv 6.335766 -2.054828 -2.147039\nv 6.335766 -1.372307 -2.458079\nv 8.078169 -1.372308 -2.043359\nv 7.641026 -1.604039 -1.939679\nv 7.711631 -1.639892 -2.043359\nv 7.505756 -1.675745 -1.905119\nv 7.068614 -1.907476 -1.732319\nv 7.068614 -1.907476 1.732319\nv 7.505756 -1.675745 1.905119\nv 7.711631 -1.639892 2.043359\nv 7.641026 -1.604039 1.939679\nv 8.078169 -1.372308 2.043359\nv 6.335766 -1.372307 2.458079\nv 6.335766 -2.054828 2.147039\nv 6.335766 -1.775403 2.319839\nv 6.335766 -1.732171 2.458079\nv 6.335766 -1.688939 2.354399\nv 4.766168 -1.884998 2.527199\nv 4.766168 -1.827445 2.665439\nv 4.766168 -1.769892 2.561759\nv 4.766168 -1.372307 2.665439\nv 4.766168 -2.256987 2.354400\nv 2.712726 -1.372307 2.803680\nv 2.712726 -1.816770 2.700000\nv -5.975275 -1.816770 2.700000\nv -5.975275 -1.372307 2.803680\nv 2.712726 -1.885536 2.803680\nv -6.113514 -1.885536 2.803680\nv -5.975275 -2.398764 2.492640\nv -5.975275 -1.954302 2.665440\nv 2.712726 -1.954302 2.665440\nv 2.712726 -2.398764 2.492640\nv 8.114170 -1.372308 -2.071796\nv 8.114170 -1.372308 2.071796\nv 6.342309 -1.372307 2.493528\nv 4.769739 -1.372307 2.701281\nv 2.713938 -1.372307 2.839680\nv -6.011275 -1.372307 2.839680\nv -6.011275 -1.372307 -2.839680\nv 2.713938 -1.372307 -2.839680\nv 4.769739 -1.372307 -2.701281\nv 6.342309 -1.372307 -2.493528\nv 2.713938 -1.323668 -2.839680\nv 4.769739 -1.323668 -2.701281\nv 6.342309 -1.323668 -2.493528\nv 8.114170 -1.323668 -2.071796\nv 8.114170 -1.323668 2.071796\nv 6.342309 -1.323668 2.493528\nv 4.769739 -1.323668 2.701281\nv 2.713938 -1.323668 2.839680\nv -6.011275 -1.323668 2.839680\nv -6.011275 -1.323668 -2.839680\nv 2.707886 -1.323668 2.659680\nv -5.831275 -1.323668 2.659680\nv -5.831275 -1.323668 -2.659680\nv 2.707886 -1.323668 -2.659680\nv 4.751889 -1.323668 -2.522075\nv 6.309598 -1.323668 -2.316286\nv 7.934168 -1.323668 -1.929610\nv 7.934168 -1.323668 1.929610\nv 6.309598 -1.323668 2.316286\nv 4.751889 -1.323668 2.522075\nv 4.751889 -1.436042 -2.522075\nv 6.309598 -1.436042 -2.316286\nv 6.309598 -1.436042 2.316286\nv 4.751889 -1.436042 2.522075\nv 2.707886 -1.436042 2.659680\nv -5.831275 -1.436042 2.659680\nv -5.831275 -1.436042 -2.659680\nv 2.707886 -1.436042 -2.659680\nv -5.831275 -2.313226 -2.411036\nv 2.707886 -2.313226 -2.411036\nv 2.707886 -2.313226 2.411036\nv -5.831275 -2.313226 2.411036\nv -5.831275 -2.313226 -2.395036\nv -5.815275 -2.313226 -2.395036\nv -5.815275 -2.313226 -2.411036\nv -5.815275 -2.297832 -2.415399\nv -5.831275 -2.297832 -2.415399\nv -5.831275 -2.297226 -2.398941\nv -5.831275 -2.313226 2.395036\nv -5.831275 -2.297226 2.398941\nv -5.831275 -2.297832 2.415399\nv -5.815275 -2.297832 2.415399\nv -5.815275 -2.313226 2.411036\nv -5.815275 -2.313226 2.395036\nv 2.691886 -2.313226 2.411036\nv 2.691886 -2.297832 2.415399\nv 2.707886 -2.297832 2.415399\nv 2.707886 -2.297226 2.398941\nv 2.707886 -2.313226 2.395036\nv 2.691886 -2.313226 2.395036\nv -5.831275 -1.433818 2.643680\nv -5.815120 -1.436042 2.659680\nv 2.707886 -2.313226 -2.395036\nv 2.707886 -2.297226 -2.398941\nv 2.707886 -2.297832 -2.415399\nv 2.691886 -2.297832 -2.415399\nv 2.691886 -2.313226 -2.411036\nv 2.691886 -2.313226 -2.395036\nv 2.707886 -1.451435 2.655316\nv 2.691886 -1.436042 2.659680\nv 2.707886 -1.420042 2.659680\nv 2.723850 -1.436042 2.658605\nv 2.723886 -1.436042 2.642566\nv 2.707886 -1.436042 2.643680\nv 2.707886 -1.452042 2.638514\nv 2.707886 -1.451435 -2.655316\nv 2.707886 -1.452042 -2.638514\nv 2.707886 -1.436042 -2.643680\nv 2.723886 -1.436042 -2.642566\nv 2.723850 -1.436042 -2.658605\nv 2.707886 -1.420042 -2.659680\nv 2.691886 -1.436042 -2.659680\nv -5.815120 -1.436042 -2.659680\nv -5.831275 -1.433818 -2.643680\nv 4.750303 -1.436042 -2.506146\nv 4.751889 -1.420034 -2.522075\nv -5.831275 -1.339668 -2.659680\nv -5.815275 -1.339668 -2.659680\nv -5.815275 -1.323668 -2.659680\nv -5.847274 -1.323668 -2.675679\nv -5.831275 -1.323668 -2.643680\nv -5.831275 -1.339668 -2.643680\nv -5.831275 -1.339668 2.659680\nv -5.831275 -1.339668 2.643680\nv -5.831275 -1.323668 2.643680\nv -5.847274 -1.323668 2.675679\nv -5.815275 -1.323668 2.659680\nv -5.815275 -1.339668 2.659680\nv 4.751889 -1.420034 2.522075\nv 4.750303 -1.436042 2.506146\nv 6.293735 -1.436042 2.318381\nv 6.293735 -1.420042 2.318381\nv 6.309598 -1.420042 2.316286\nv 6.309598 -1.420042 2.300286\nv 6.309598 -1.436042 2.300286\nv 6.293598 -1.436042 2.302260\nv 6.309598 -1.436042 -2.300286\nv 6.309598 -1.420042 -2.300286\nv 6.309598 -1.420042 -2.316286\nv 6.293735 -1.420042 -2.318381\nv 6.293735 -1.436042 -2.318381\nv 6.293598 -1.436042 -2.302260\nv 6.309598 -1.339668 2.316286\nv 6.293735 -1.339668 2.318381\nv 6.293735 -1.323668 2.318381\nv 6.312506 -1.323668 2.332040\nv 6.325599 -1.323668 2.312477\nv 6.309598 -1.323668 2.300286\nv 6.309598 -1.339668 2.300286\nv 6.309598 -1.339668 -2.316286\nv 6.309598 -1.339668 -2.300286\nv 6.309598 -1.323668 -2.300286\nv 6.325599 -1.323668 -2.312477\nv 6.312506 -1.323668 -2.332040\nv 6.293735 -1.323668 -2.318381\nv 6.293735 -1.339668 -2.318381\nv 2.707886 -1.339677 2.659680\nv 2.708424 -1.323668 2.675679\nv 4.753476 -1.323668 2.538004\nv 4.751889 -1.339676 2.522075\nv 4.753476 -1.323668 -2.538004\nv 4.751889 -1.339676 -2.522075\nv 2.708424 -1.323668 -2.675679\nv 2.707886 -1.339677 -2.659680\nv 2.713399 -1.323668 -2.823680\nv 2.713938 -1.339677 -2.839680\nv -5.995275 -1.323668 -2.839680\nv -5.995275 -1.339668 -2.839680\nv -6.011275 -1.339668 -2.839680\nv -6.011275 -1.339668 -2.823680\nv -6.011275 -1.323668 -2.823680\nv -5.995275 -1.323668 -2.823680\nv -6.011275 -1.323668 2.823680\nv -6.011275 -1.339668 2.823680\nv -6.011275 -1.339668 2.839680\nv -5.995275 -1.339668 2.839680\nv -5.995275 -1.323668 2.839680\nv -5.995275 -1.323668 2.823680\nv -6.011275 -1.356307 -2.839680\nv -5.995275 -1.356307 -2.839680\nv -5.995275 -1.372307 -2.839680\nv -5.999276 -1.372307 -2.827681\nv -6.011275 -1.372307 -2.823680\nv -6.011275 -1.356307 -2.823680\nv 2.713938 -1.339677 2.839680\nv 2.713399 -1.323668 2.823680\nv -6.011275 -1.356307 2.839680\nv -6.011275 -1.356307 2.823680\nv -6.011275 -1.372307 2.823680\nv -5.999276 -1.372307 2.827681\nv -5.995275 -1.372307 2.839680\nv -5.995275 -1.356307 2.839680\nv 4.769739 -1.339676 2.701281\nv 4.768152 -1.323668 2.685351\nv 6.342309 -1.339689 2.493528\nv 6.339403 -1.323668 2.477773\nv 8.098605 -1.323668 2.075501\nv 8.098605 -1.339668 2.075501\nv 8.114170 -1.339668 2.071796\nv 8.114170 -1.339668 2.055796\nv 8.114170 -1.323668 2.055796\nv 8.098170 -1.323668 2.059158\nv 8.114170 -1.323668 -2.055796\nv 8.114170 -1.339668 -2.055796\nv 8.114170 -1.339668 -2.071796\nv 8.098605 -1.339668 -2.075501\nv 8.098605 -1.323668 -2.075501\nv 8.098170 -1.323668 -2.059158\nv 8.114170 -1.356308 2.071796\nv 8.098605 -1.356308 2.075501\nv 8.098605 -1.372308 2.075501\nv 8.102171 -1.372308 2.062318\nv 8.114170 -1.372308 2.055796\nv 8.114170 -1.356308 2.055796\nv 6.342309 -1.339689 -2.493528\nv 6.339403 -1.323668 -2.477773\nv 8.114170 -1.356308 -2.071796\nv 8.114170 -1.356308 -2.055796\nv 8.114170 -1.372308 -2.055796\nv 8.102171 -1.372308 -2.062318\nv 8.098605 -1.372308 -2.075501\nv 8.098605 -1.356308 -2.075501\nv 4.769739 -1.339676 -2.701281\nv 4.768152 -1.323668 -2.685351\nv 6.340129 -1.372307 -2.481713\nv 6.342309 -1.356286 -2.493528\nv 4.768549 -1.372307 -2.689335\nv 4.769739 -1.356299 -2.701281\nv 2.713534 -1.372307 -2.827681\nv 2.713938 -1.356298 -2.839680\nv 2.713534 -1.372307 2.827681\nv 2.713938 -1.356298 2.839680\nv 4.768549 -1.372307 2.689335\nv 4.769739 -1.356299 2.701281\nv 6.340129 -1.372307 2.481713\nv 6.342309 -1.356286 2.493528\nv -6.113514 -1.885536 2.787680\nv -6.099189 -1.892662 2.767878\nv -6.102842 -1.890845 2.793007\nv -6.077713 -1.892662 2.789354\nv -6.097515 -1.885536 2.803680\nv -6.071818 -1.876692 2.790346\nv -6.101622 -1.879620 2.794760\nv -6.099189 -1.878410 2.773663\nv -6.113514 -1.885536 -2.787680\nv -6.099189 -1.878410 -2.773663\nv -6.101622 -1.879620 -2.794760\nv -6.071818 -1.876692 -2.790346\nv -6.097515 -1.885536 -2.803680\nv -6.077713 -1.892662 -2.789354\nv -6.102842 -1.890845 -2.793007\nv -6.099189 -1.892662 -2.767878\nv -5.959274 -1.954302 2.665440\nv -5.968124 -1.947175 2.679765\nv -5.985947 -1.948993 2.676113\nv -5.989600 -1.947175 2.658290\nv -5.975275 -1.954302 2.649440\nv -5.975275 -1.970302 2.642053\nv -5.975275 -1.969214 2.659642\nv -5.959274 -1.969214 2.659642\nv 2.712774 -1.969137 2.659416\nv 2.713096 -1.947401 2.679883\nv -5.975275 -2.383851 2.498439\nv -5.975275 -2.382764 2.481694\nv -5.975275 -2.398764 2.476640\nv -5.959274 -2.398764 2.476640\nv -5.959274 -2.398764 2.492640\nv -5.959274 -2.383851 2.498439\nv 2.712190 -2.398782 2.476630\nv 2.712418 -2.383929 2.498675\nv 2.712338 -1.892437 2.789238\nv 2.712151 -1.876947 2.790180\nv -5.987167 -1.822686 2.708920\nv -5.969135 -1.825614 2.713334\nv -5.959274 -1.816770 2.700000\nv -5.959274 -1.801188 2.703635\nv -5.975275 -1.801188 2.703635\nv -5.975275 -1.800770 2.687302\nv -5.975275 -1.816770 2.684000\nv -5.989600 -1.823896 2.691471\nv 2.712602 -1.387875 2.799951\nv 2.713130 -1.372307 2.815678\nv -5.959274 -1.372307 2.803680\nv -5.987273 -1.372307 2.815678\nv -5.975275 -1.372307 2.787680\nv -5.975275 -1.388307 2.783518\nv -5.975275 -1.387889 2.800045\nv -5.959274 -1.387889 2.800045\nv 2.713279 -1.825358 2.713500\nv 2.712674 -1.801202 2.703734\nv 4.764598 -2.257143 2.338463\nv 4.765438 -2.242578 2.361351\nv 4.765759 -1.387775 2.661335\nv 4.767358 -1.372307 2.677386\nv 4.767843 -1.777537 2.575726\nv 4.766009 -1.754433 2.565921\nv 4.764974 -1.833592 2.650705\nv 4.764438 -1.819802 2.651479\nv 4.766231 -1.899454 2.520317\nv 4.767318 -1.878853 2.541939\nv 6.339335 -1.695142 2.368779\nv 6.336325 -1.674196 2.360748\nv 6.332798 -1.736667 2.442959\nv 6.332273 -1.725967 2.443692\nv 6.319942 -1.776508 2.321930\nv 6.320152 -1.790749 2.314583\nv 6.335766 -1.789011 2.311424\nv 6.348468 -1.784460 2.301672\nv 6.350799 -1.774122 2.314511\nv 6.339044 -1.770878 2.334926\nv 6.320033 -2.056855 2.149118\nv 6.330730 -2.055658 2.131563\nv 6.349483 -2.052070 2.139278\nv 6.352201 -2.042067 2.152415\nv 6.335766 -2.041220 2.155455\nv 6.319822 -2.042605 2.156471\nv 6.334619 -1.387029 2.451863\nv 6.337947 -1.372307 2.469894\nv 8.062603 -1.372308 2.047064\nv 8.030944 -1.387588 2.047712\nv 8.064332 -1.379642 2.040078\nv 8.064032 -1.379802 2.023659\nv 8.078169 -1.372308 2.027359\nv 8.090168 -1.372308 2.052838\nv 7.625806 -1.605030 1.944515\nv 7.634216 -1.610275 1.957620\nv 7.649685 -1.608437 1.952394\nv 7.655291 -1.611283 1.934268\nv 7.641026 -1.604039 1.923679\nv 7.655164 -1.596546 1.926684\nv 7.654862 -1.596705 1.942961\nv 7.637601 -1.590346 1.949004\nv 7.696343 -1.640918 2.047967\nv 7.695954 -1.643408 2.031554\nv 7.711631 -1.639892 2.027359\nv 7.697366 -1.632648 1.996050\nv 7.702972 -1.635495 2.030643\nv 7.686785 -1.635728 2.035156\nv 7.467351 -1.692388 1.908106\nv 7.505756 -1.675745 1.888171\nv 7.522184 -1.672884 1.916150\nv 7.067178 -1.907989 1.714669\nv 7.066056 -1.896901 1.746302\nv 7.641026 -1.604039 -1.923679\nv 7.655291 -1.611283 -1.934268\nv 7.649685 -1.608437 -1.952394\nv 7.634216 -1.610275 -1.957620\nv 7.625806 -1.605030 -1.944515\nv 7.637601 -1.590346 -1.949004\nv 7.654862 -1.596705 -1.942961\nv 7.655164 -1.596546 -1.926684\nv 7.711631 -1.639892 -2.027359\nv 7.695954 -1.643408 -2.031554\nv 7.696343 -1.640918 -2.047967\nv 7.686785 -1.635728 -2.035156\nv 7.702972 -1.635495 -2.030643\nv 7.697366 -1.632648 -1.996050\nv -5.975275 -1.954302 -2.649440\nv -5.989600 -1.947175 -2.658290\nv -5.985947 -1.948993 -2.676113\nv -5.968124 -1.947175 -2.679765\nv -5.959274 -1.954302 -2.665440\nv -5.959274 -1.969214 -2.659642\nv -5.975275 -1.969214 -2.659642\nv -5.975275 -1.970302 -2.642053\nv -5.975275 -1.816770 -2.684000\nv -5.975275 -1.800770 -2.687302\nv -5.975275 -1.801188 -2.703635\nv -5.959274 -1.801188 -2.703635\nv -5.959274 -1.816770 -2.700000\nv -5.969135 -1.825614 -2.713334\nv -5.987167 -1.822686 -2.708920\nv -5.989600 -1.823896 -2.691471\nv 8.078169 -1.372308 -2.027359\nv 8.064032 -1.379802 -2.023659\nv 8.064332 -1.379642 -2.040078\nv 8.030944 -1.387588 -2.047712\nv 8.062603 -1.372308 -2.047064\nv 8.090168 -1.372308 -2.052838\nv 7.067178 -1.907989 -1.714669\nv 7.066056 -1.896901 -1.746302\nv 7.467351 -1.692388 -1.908106\nv 7.522184 -1.672884 -1.916150\nv 7.505756 -1.675745 -1.888171\nv 6.349483 -2.052070 -2.139278\nv 6.330730 -2.055658 -2.131563\nv 6.320033 -2.056855 -2.149118\nv 6.319822 -2.042605 -2.156471\nv 6.335766 -2.041220 -2.155455\nv 6.352201 -2.042067 -2.152415\nv 6.350799 -1.774122 -2.314511\nv 6.348468 -1.784460 -2.301672\nv 6.335766 -1.789011 -2.311424\nv 6.320152 -1.790749 -2.314583\nv 6.319942 -1.776508 -2.321930\nv 6.339044 -1.770878 -2.334926\nv 6.332798 -1.736667 -2.442959\nv 6.332273 -1.725967 -2.443692\nv 6.339335 -1.695142 -2.368779\nv 6.336325 -1.674196 -2.360748\nv 6.334619 -1.387029 -2.451863\nv 6.337947 -1.372307 -2.469894\nv 4.765759 -1.387775 -2.661335\nv 4.767358 -1.372307 -2.677386\nv 4.764598 -2.257143 -2.338463\nv 4.765438 -2.242578 -2.361351\nv 4.766231 -1.899454 -2.520317\nv 4.767318 -1.878853 -2.541939\nv 4.764974 -1.833592 -2.650705\nv 4.764438 -1.819802 -2.651479\nv 4.767843 -1.777537 -2.575726\nv 4.766009 -1.754433 -2.565921\nv 2.712774 -1.969137 -2.659416\nv 2.713096 -1.947401 -2.679883\nv 2.712338 -1.892437 -2.789238\nv 2.712151 -1.876947 -2.790180\nv 2.713279 -1.825358 -2.713500\nv 2.712674 -1.801202 -2.703734\nv 2.712602 -1.387875 -2.799951\nv 2.713130 -1.372307 -2.815678\nv 2.712190 -2.398782 -2.476630\nv 2.712418 -2.383929 -2.498675\nv -5.975275 -1.387889 -2.800045\nv -5.975275 -1.388307 -2.783518\nv -5.975275 -1.372307 -2.787680\nv -5.987273 -1.372307 -2.815678\nv -5.959274 -1.372307 -2.803680\nv -5.959274 -1.387889 -2.800045\nv -5.975275 -2.398764 -2.476640\nv -5.975275 -2.382764 -2.481694\nv -5.975275 -2.383851 -2.498439\nv -5.959274 -2.383851 -2.498439\nv -5.959274 -2.398764 -2.492640\nv -5.959274 -2.398764 -2.476640\nv -3.849405 1.152882 0.921437\nv -3.822861 1.126339 0.921437\nv -3.822861 1.126339 0.619901\nv -3.849405 1.152882 0.619901\nv -3.875949 1.126339 0.921437\nv -3.849405 1.099795 0.921437\nv -3.875949 1.126339 1.433200\nv -3.849405 1.099795 1.433200\nv -3.945206 1.057082 1.433200\nv -3.918662 1.030538 1.433200\nv -4.007861 0.997151 1.547444\nv -3.978593 0.967883 1.547444\nv -4.327192 1.152882 0.619901\nv -4.353735 1.126339 0.619901\nv -4.353735 1.126339 0.921437\nv -4.327192 1.152882 0.921437\nv -4.327192 1.099795 0.921437\nv -4.300648 1.126339 0.921437\nv -4.327192 1.099795 1.433200\nv -4.300648 1.126339 1.433200\nv -4.257935 1.030538 1.433200\nv -4.231390 1.057082 1.433200\nv -4.198004 0.967883 1.547444\nv -4.168737 0.997151 1.547444\nv -3.476986 0.997151 1.547444\nv -3.447718 0.967883 1.547444\nv -3.414332 1.057082 1.433200\nv -3.387789 1.030538 1.433200\nv -3.345074 1.126339 1.433200\nv -3.318531 1.099795 1.433200\nv -3.345074 1.126339 0.921437\nv -3.318531 1.099795 0.921437\nv -3.318531 1.152882 0.921437\nv -3.291987 1.126339 0.921437\nv -3.291987 1.126339 0.619901\nv -3.318531 1.152882 0.619901\nv -3.667130 0.967883 1.547444\nv -3.637862 0.997151 1.547444\nv -3.727060 1.030538 1.433200\nv -3.700517 1.057082 1.433200\nv -3.796318 1.099795 1.433200\nv -3.769773 1.126339 1.433200\nv -3.796318 1.099795 0.921437\nv -3.769773 1.126339 0.921437\nv -3.796318 1.152882 0.619901\nv -3.796318 1.152882 0.921437\nv -3.796318 0.437689 0.921437\nv -3.796318 0.437689 0.619901\nv -3.769773 0.464233 0.921437\nv -3.796318 0.490776 0.921437\nv -3.769773 0.464233 1.433200\nv -3.796318 0.490776 1.433200\nv -3.700517 0.533490 1.433200\nv -3.727060 0.560034 1.433200\nv -3.637862 0.593420 1.547444\nv -3.667130 0.622688 1.547444\nv -3.318531 0.437689 0.619901\nv -3.291987 0.464233 0.619901\nv -3.291987 0.464233 0.921437\nv -3.318531 0.437689 0.921437\nv -3.318531 0.490776 0.921437\nv -3.345074 0.464233 0.921437\nv -3.318531 0.490776 1.433200\nv -3.345074 0.464233 1.433200\nv -3.387789 0.560034 1.433200\nv -3.414332 0.533490 1.433200\nv -3.447718 0.622688 1.547444\nv -3.476986 0.593420 1.547444\nv -4.168737 0.593420 1.547444\nv -4.198004 0.622688 1.547444\nv -4.231390 0.533490 1.433200\nv -4.257935 0.560034 1.433200\nv -4.300648 0.464233 1.433200\nv -4.327192 0.490776 1.433200\nv -4.300648 0.464233 0.921437\nv -4.327192 0.490776 0.921437\nv -4.327192 0.437689 0.921437\nv -4.353735 0.464233 0.921437\nv -4.353735 0.464233 0.619901\nv -4.327192 0.437689 0.619901\nv -3.978593 0.622688 1.547444\nv -4.007861 0.593420 1.547444\nv -3.918662 0.560034 1.433200\nv -3.945206 0.533490 1.433200\nv -3.849405 0.490776 1.433200\nv -3.875949 0.464233 1.433200\nv -3.849405 0.490776 0.921437\nv -3.875949 0.464233 0.921437\nv -3.849405 0.437689 0.619901\nv -3.822861 0.464233 0.619901\nv -3.822861 0.464233 0.921437\nv -3.849405 0.437689 0.921437\nv -4.469892 0.317642 0.337475\nv -3.849405 0.317642 0.337475\nv -3.796318 0.317642 0.337475\nv -3.318531 0.317642 0.337475\nv -3.291987 0.353097 0.337475\nv -3.291987 1.237474 0.337475\nv -3.318531 1.272929 0.337475\nv -3.796318 1.272929 0.337475\nv -3.849405 1.272929 0.337475\nv -4.469892 1.272929 0.337475\nv -4.496435 1.237474 0.337475\nv -4.496435 0.353097 0.337475\nv -4.496435 0.353097 -0.329302\nv -4.496435 1.237474 -0.329302\nv -4.469892 1.272929 -0.329302\nv -3.849405 1.272929 -0.329302\nv -3.796318 1.272929 -0.329302\nv -3.318531 1.272929 -0.329302\nv -3.291987 1.237474 -0.329302\nv -3.291987 0.353097 -0.329302\nv -3.318531 0.317642 -0.329302\nv -3.796318 0.317642 -0.329302\nv -3.849405 0.317642 -0.329302\nv -4.469892 0.317642 -0.329302\nv -3.849405 0.437689 -0.913264\nv -3.822861 0.464233 -0.913264\nv -3.822861 0.464233 -0.611727\nv -3.849405 0.437689 -0.611727\nv -3.875949 0.464233 -0.913264\nv -3.849405 0.490776 -0.913264\nv -3.875949 0.464233 -1.425026\nv -3.849405 0.490776 -1.425026\nv -3.945206 0.533490 -1.425026\nv -3.918662 0.560034 -1.425026\nv -4.007861 0.593420 -1.539271\nv -3.978593 0.622688 -1.539271\nv -4.327192 0.437689 -0.611727\nv -4.353735 0.464233 -0.611727\nv -4.353735 0.464233 -0.913264\nv -4.327192 0.437689 -0.913264\nv -4.327192 0.490776 -0.913264\nv -4.300648 0.464233 -0.913264\nv -4.327192 0.490776 -1.425026\nv -4.300648 0.464233 -1.425026\nv -4.257935 0.560034 -1.425026\nv -4.231390 0.533490 -1.425026\nv -4.198004 0.622688 -1.539271\nv -4.168737 0.593420 -1.539271\nv -3.476986 0.593420 -1.539271\nv -3.447718 0.622688 -1.539271\nv -3.414332 0.533490 -1.425026\nv -3.387789 0.560034 -1.425026\nv -3.345074 0.464233 -1.425026\nv -3.318531 0.490776 -1.425026\nv -3.345074 0.464233 -0.913264\nv -3.318531 0.490776 -0.913264\nv -3.318531 0.437689 -0.913264\nv -3.291987 0.464233 -0.913264\nv -3.291987 0.464233 -0.611727\nv -3.318531 0.437689 -0.611727\nv -3.667130 0.622688 -1.539271\nv -3.637862 0.593420 -1.539271\nv -3.727060 0.560034 -1.425026\nv -3.700517 0.533490 -1.425026\nv -3.796318 0.490776 -1.425026\nv -3.769773 0.464233 -1.425026\nv -3.796318 0.490776 -0.913264\nv -3.769773 0.464233 -0.913264\nv -3.796318 0.437689 -0.611727\nv -3.796318 0.437689 -0.913264\nv -3.796318 1.152882 -0.913264\nv -3.796318 1.152882 -0.611727\nv -3.769773 1.126339 -0.913264\nv -3.796318 1.099795 -0.913264\nv -3.769773 1.126339 -1.425026\nv -3.796318 1.099795 -1.425026\nv -3.700517 1.057082 -1.425026\nv -3.727060 1.030538 -1.425026\nv -3.637862 0.997151 -1.539271\nv -3.667130 0.967883 -1.539271\nv -3.318531 1.152882 -0.611727\nv -3.291987 1.126339 -0.611727\nv -3.291987 1.126339 -0.913264\nv -3.318531 1.152882 -0.913264\nv -3.318531 1.099795 -0.913264\nv -3.345074 1.126339 -0.913264\nv -3.318531 1.099795 -1.425026\nv -3.345074 1.126339 -1.425026\nv -3.387789 1.030538 -1.425026\nv -3.414332 1.057082 -1.425026\nv -3.447718 0.967883 -1.539271\nv -3.476986 0.997151 -1.539271\nv -4.168737 0.997151 -1.539271\nv -4.198004 0.967883 -1.539271\nv -4.231390 1.057082 -1.425026\nv -4.257935 1.030538 -1.425026\nv -4.300648 1.126339 -1.425026\nv -4.327192 1.099795 -1.425026\nv -4.300648 1.126339 -0.913264\nv -4.327192 1.099795 -0.913264\nv -4.327192 1.152882 -0.913264\nv -4.353735 1.126339 -0.913264\nv -4.353735 1.126339 -0.611727\nv -4.327192 1.152882 -0.611727\nv -3.978593 0.967883 -1.539271\nv -4.007861 0.997151 -1.539271\nv -3.918662 1.030538 -1.425026\nv -3.945206 1.057082 -1.425026\nv -3.849405 1.099795 -1.425026\nv -3.875949 1.126339 -1.425026\nv -3.849405 1.099795 -0.913264\nv -3.875949 1.126339 -0.913264\nv -3.849405 1.152882 -0.611727\nv -3.822861 1.126339 -0.611727\nv -3.822861 1.126339 -0.913264\nv -3.849405 1.152882 -0.913264\nv -3.962898 1.272929 -0.208715\nv -3.962898 1.272929 0.216889\nv -4.356398 1.272929 0.216889\nv -4.356398 1.272929 -0.208715\nv -3.410157 1.272929 -0.208715\nv -3.410157 1.272929 0.216889\nv -3.704692 1.272929 0.216889\nv -3.704692 1.272929 -0.208715\nv -3.962898 1.336210 0.216889\nv -4.356398 1.336210 0.216889\nv -4.356398 1.336210 -0.208715\nv -3.962898 1.336210 -0.208715\nv -3.410157 1.336210 0.216889\nv -3.704692 1.336210 0.216889\nv -3.704692 1.336210 -0.208715\nv -3.410157 1.336210 -0.208715\nv -4.356398 1.577863 0.216889\nv -4.356398 1.577863 -0.208715\nv -3.962898 1.577863 -0.208715\nv -3.962898 1.577863 0.216889\nv -3.704692 1.577863 0.216889\nv -3.704692 1.577863 -0.208715\nv -3.410157 1.577863 -0.208715\nv -3.410157 1.577863 0.216889\nv -3.126779 0.496178 0.229599\nv -3.126779 0.571354 0.420638\nv -3.126779 1.019218 0.420638\nv -3.126779 1.094393 0.229599\nv -3.126779 1.094393 -0.221426\nv -3.126779 1.019218 -0.412465\nv -3.126779 0.571354 -0.412465\nv -3.126779 0.496178 -0.221426\nv -4.496435 1.022719 -0.159752\nv -4.496435 1.022719 0.167925\nv -4.496435 0.567853 0.167925\nv -4.496435 0.567853 -0.159752\nv -4.496435 0.531570 -0.090902\nv -4.496435 0.514984 0.004086\nv -4.496435 0.531570 0.099074\nv -4.496435 0.955111 -0.226184\nv -4.496435 0.795286 -0.276215\nv -4.496435 0.635460 -0.226184\nv -4.496435 1.059002 0.099074\nv -4.496435 1.075587 0.004086\nv -4.496435 1.059002 -0.090902\nv -4.496435 0.635460 0.234358\nv -4.496435 0.795286 0.284388\nv -4.496435 0.955111 0.234358\nv -4.580100 0.663946 0.193315\nv -4.580100 0.608389 0.138723\nv -4.580100 0.578573 0.082145\nv -4.580100 0.564943 0.004086\nv -4.580100 0.578573 -0.073971\nv -4.580100 0.608389 -0.130550\nv -4.580100 0.663946 -0.185142\nv -4.580100 0.795286 -0.226256\nv -4.580100 0.926625 -0.185142\nv -4.580100 0.982182 -0.130550\nv -4.580100 1.011998 -0.073971\nv -4.580100 1.025628 0.004086\nv -4.580100 1.011998 0.082145\nv -4.580100 0.982182 0.138723\nv -4.580100 0.926625 0.193315\nv -4.580100 0.795286 0.234429\nv -4.760598 0.982182 0.138723\nv -4.760598 0.926625 0.193315\nv -4.760598 0.795286 0.234429\nv -4.760598 0.663946 0.193315\nv -4.760598 0.608389 0.138723\nv -4.760598 0.578573 0.082145\nv -4.760598 0.564943 0.004086\nv -4.760598 0.578573 -0.073971\nv -4.760598 0.608389 -0.130550\nv -4.760598 0.663946 -0.185142\nv -4.760598 0.795286 -0.226256\nv -4.760598 0.926625 -0.185142\nv -4.760598 0.982182 -0.130550\nv -4.760598 1.011998 -0.073971\nv -4.760598 1.025628 0.004086\nv -4.760598 1.011998 0.082145\nv -4.760598 0.663946 -0.376852\nv -4.580100 0.663946 -0.376852\nv -4.580100 0.735274 -0.417966\nv -4.760598 0.735274 -0.417966\nv -4.760598 0.735274 0.426138\nv -4.580100 0.735274 0.426138\nv -4.580100 0.663946 0.385025\nv -4.760598 0.663946 0.385025\nv -4.760598 0.457967 -0.376852\nv -4.760598 0.457967 -0.305541\nv -4.580100 0.457967 -0.305541\nv -4.580100 0.457967 -0.376852\nv -4.580100 0.457967 0.385025\nv -4.580100 0.457967 0.313714\nv -4.760598 0.457967 0.313714\nv -4.760598 0.457967 0.385025\nv -4.760598 0.457967 0.650279\nv -4.760598 0.663946 0.560426\nv -4.580100 0.663946 0.560426\nv -4.580100 0.457967 0.650279\nv -4.580100 0.457967 -0.642106\nv -4.580100 0.663946 -0.552253\nv -4.760598 0.663946 -0.552253\nv -4.760598 0.457967 -0.642106\nv -5.593860 -2.308667 2.040359\nv -5.593860 -2.308667 1.775105\nv -5.774358 -2.308667 1.775105\nv -5.774358 -2.308667 2.040359\nv -5.774358 -2.308667 -2.032186\nv -5.774358 -2.308667 -1.766932\nv -5.593860 -2.308667 -1.766932\nv -5.593860 -2.308667 -2.032186\nv -3.291987 0.643829 -0.709272\nv -3.291987 0.946742 -0.709272\nv -3.291987 0.946742 -0.815720\nv -3.291987 0.643829 -0.815720\nv -3.291987 0.643829 0.823893\nv -3.291987 0.946742 0.823893\nv -3.291987 0.946742 0.717445\nv -3.291987 0.643829 0.717445\nv -3.121682 0.946742 -0.709272\nv -3.121682 0.946742 -0.815720\nv -3.121682 0.643829 -0.815720\nv -3.121682 0.643829 -0.709272\nv -3.121682 0.946742 0.823893\nv -3.121682 0.946742 0.717445\nv -3.121682 0.643829 0.717445\nv -3.121682 0.643829 0.823893\nv -2.961571 0.946742 0.717445\nv -2.961571 0.643829 0.717445\nv -2.961571 0.643829 0.823893\nv -2.961571 0.946742 0.823893\nv -2.961571 0.946742 -0.815720\nv -2.961571 0.643829 -0.815720\nv -2.961571 0.643829 -0.709272\nv -2.961571 0.946742 -0.709272\nv -2.961571 0.643829 0.963619\nv -3.121682 0.643829 0.963619\nv -3.121682 0.780140 0.963619\nv -2.961571 0.780140 0.963619\nv -2.961571 0.780140 -0.955446\nv -3.121682 0.780140 -0.955446\nv -3.121682 0.643829 -0.955446\nv -2.961571 0.643829 -0.955446\nv -2.961571 0.643829 -0.533871\nv -3.121682 0.643829 -0.533871\nv -3.121682 0.946742 -0.533871\nv -2.961571 0.946742 -0.533871\nv -2.961571 0.946742 0.542044\nv -3.121682 0.946742 0.542044\nv -3.121682 0.643829 0.542044\nv -2.961571 0.643829 0.542044\nv -3.121682 0.465368 -0.327892\nv -3.121682 1.125203 -0.327892\nv -2.961571 1.125203 -0.327892\nv -2.961571 0.465368 -0.327892\nv -3.121682 1.125203 0.336065\nv -3.121682 0.465368 0.336065\nv -2.961571 0.465368 0.336065\nv -2.961571 1.125203 0.336065\nv -3.121682 -2.308667 -2.345526\nv -3.121682 -2.308667 -2.205800\nv -2.961571 -2.308667 -2.205800\nv -2.961571 -2.308667 -2.345526\nv -2.961571 -2.308667 2.353699\nv -2.961571 -2.308667 2.213973\nv -3.121682 -2.308667 2.213973\nv -3.121682 -2.308667 2.353699\nv -2.977571 -2.308667 2.353699\nv -2.977571 -2.308667 2.337699\nv -2.961571 -2.308667 2.337699\nv -2.961571 -2.292667 2.337699\nv -2.961571 -2.292667 2.353699\nv -2.977571 -2.292667 2.353699\nv -3.105682 -2.308667 2.353699\nv -3.105682 -2.292667 2.353699\nv -3.121682 -2.292667 2.353699\nv -3.121682 -2.292667 2.337699\nv -3.121682 -2.308667 2.337699\nv -3.105682 -2.308667 2.337699\nv -3.121682 -2.308667 2.229973\nv -3.121682 -2.292667 2.229973\nv -3.121682 -2.292667 2.213973\nv -3.105682 -2.292667 2.213973\nv -3.105682 -2.308667 2.213973\nv -3.105682 -2.308667 2.229973\nv -3.105682 0.643829 0.963619\nv -3.121682 0.643829 0.947619\nv -2.977571 -2.308667 2.213973\nv -2.977571 -2.292667 2.213973\nv -2.961571 -2.292667 2.213973\nv -2.961571 -2.292667 2.229973\nv -2.961571 -2.308667 2.229973\nv -2.977571 -2.308667 2.229973\nv -3.121682 0.627829 0.823893\nv -3.121682 0.643829 0.839893\nv -3.121682 0.659829 0.823893\nv -3.137682 0.659829 0.823893\nv -3.137682 0.643829 0.823893\nv -3.121682 0.643829 0.807893\nv -3.105682 0.643829 0.823893\nv -3.105682 0.627829 0.823893\nv -2.961571 0.627829 0.823893\nv -2.977571 0.627829 0.823893\nv -2.977571 0.643829 0.823893\nv -2.977571 0.643829 0.807893\nv -2.961571 0.643829 0.807893\nv -2.961571 0.659829 0.823893\nv -2.961571 0.643829 0.839893\nv -2.961571 0.643829 0.947619\nv -2.977571 0.643829 0.963619\nv -3.105682 -2.308667 -2.345526\nv -3.105682 -2.308667 -2.329526\nv -3.121682 -2.308667 -2.329526\nv -3.121682 -2.292667 -2.329526\nv -3.121682 -2.292667 -2.345526\nv -3.105682 -2.292667 -2.345526\nv -2.977571 -2.308667 -2.345526\nv -2.977571 -2.292667 -2.345526\nv -2.961571 -2.292667 -2.345526\nv -2.961571 -2.292667 -2.329526\nv -2.961571 -2.308667 -2.329526\nv -2.977571 -2.308667 -2.329526\nv -2.961571 -2.308667 -2.221800\nv -2.961571 -2.292667 -2.221800\nv -2.961571 -2.292667 -2.205800\nv -2.977571 -2.292667 -2.205800\nv -2.977571 -2.308667 -2.205800\nv -2.977571 -2.308667 -2.221800\nv -2.977571 0.643829 -0.955446\nv -2.961571 0.643829 -0.939446\nv -3.105682 -2.308667 -2.205800\nv -3.105682 -2.292667 -2.205800\nv -3.121682 -2.292667 -2.205800\nv -3.121682 -2.292667 -2.221800\nv -3.121682 -2.308667 -2.221800\nv -3.105682 -2.308667 -2.221800\nv -2.961571 0.627829 -0.815720\nv -2.961571 0.643829 -0.831720\nv -2.961571 0.659829 -0.815720\nv -2.961571 0.643829 -0.799720\nv -2.977571 0.643829 -0.799720\nv -2.977571 0.643829 -0.815720\nv -2.977571 0.627829 -0.815720\nv -3.121682 0.627829 -0.815720\nv -3.105682 0.627829 -0.815720\nv -3.105682 0.643829 -0.815720\nv -3.121682 0.643829 -0.799720\nv -3.137682 0.643829 -0.815720\nv -3.137682 0.659829 -0.815720\nv -3.121682 0.659829 -0.815720\nv -3.121682 0.643829 -0.831720\nv -3.121682 0.643829 -0.939446\nv -3.105682 0.643829 -0.955446\nv -3.121682 0.465368 -0.311892\nv -3.121682 0.481368 -0.321925\nv -3.121682 0.475845 -0.339985\nv -3.105682 0.475845 -0.339985\nv -3.105682 0.465368 -0.327892\nv -3.105682 0.465368 -0.311892\nv -3.121682 0.465368 0.320065\nv -3.105682 0.465368 0.320065\nv -3.105682 0.465368 0.336065\nv -3.105682 0.475845 0.348158\nv -3.121682 0.475845 0.348158\nv -3.121682 0.481368 0.330098\nv -3.121682 1.125203 -0.311892\nv -3.105682 1.125203 -0.311892\nv -3.105682 1.125203 -0.327892\nv -3.105682 1.114726 -0.339985\nv -3.121682 1.114726 -0.339985\nv -3.121682 1.109203 -0.321925\nv -3.121682 1.125203 0.320065\nv -3.121682 1.109203 0.330098\nv -3.121682 1.114726 0.348158\nv -3.105682 1.114726 0.348158\nv -3.105682 1.125203 0.336065\nv -3.105682 1.125203 0.320065\nv -2.961571 1.125203 -0.311892\nv -2.961571 1.109203 -0.321925\nv -2.961571 1.114726 -0.339985\nv -2.977571 1.114726 -0.339985\nv -2.977571 1.125203 -0.327892\nv -2.977571 1.125203 -0.311892\nv -2.961571 1.125203 0.320065\nv -2.977571 1.125203 0.320065\nv -2.977571 1.125203 0.336065\nv -2.977571 1.114726 0.348158\nv -2.961571 1.114726 0.348158\nv -2.961571 1.109203 0.330098\nv -2.961571 0.465368 -0.311892\nv -2.977571 0.465368 -0.311892\nv -2.977571 0.465368 -0.327892\nv -2.977571 0.475845 -0.339985\nv -2.961571 0.475845 -0.339985\nv -2.961571 0.481368 -0.321925\nv -2.961571 0.465368 0.320065\nv -2.961571 0.481368 0.330098\nv -2.961571 0.475845 0.348158\nv -2.977571 0.475845 0.348158\nv -2.977571 0.465368 0.336065\nv -2.977571 0.465368 0.320065\nv -2.961571 0.957220 0.529951\nv -2.977571 0.957220 0.529951\nv -2.977571 0.946742 0.542044\nv -2.977571 0.946742 0.558044\nv -2.961571 0.946742 0.558044\nv -2.961571 0.930742 0.536077\nv -2.961571 0.633352 0.529951\nv -2.961571 0.659829 0.536077\nv -2.961571 0.643829 0.558044\nv -2.977571 0.643829 0.558044\nv -2.977571 0.643829 0.542044\nv -2.977571 0.633352 0.529951\nv -3.121682 0.633352 0.529951\nv -3.105682 0.633352 0.529951\nv -3.105682 0.643829 0.542044\nv -3.105682 0.643829 0.558044\nv -3.121682 0.643829 0.558044\nv -3.121682 0.659829 0.536077\nv -3.121682 0.957220 0.529951\nv -3.121682 0.930742 0.536077\nv -3.121682 0.946742 0.558044\nv -3.105682 0.946742 0.558044\nv -3.105682 0.946742 0.542044\nv -3.105682 0.957220 0.529951\nv -2.961571 0.633352 -0.521778\nv -2.977571 0.633352 -0.521778\nv -2.977571 0.643829 -0.533871\nv -2.977571 0.643829 -0.549871\nv -2.961571 0.643829 -0.549871\nv -2.961571 0.659829 -0.527904\nv -2.961571 0.957220 -0.521778\nv -2.961571 0.930742 -0.527904\nv -2.961571 0.946742 -0.549871\nv -2.977571 0.946742 -0.549871\nv -2.977571 0.946742 -0.533871\nv -2.977571 0.957220 -0.521778\nv -3.121682 0.957220 -0.521778\nv -3.105682 0.957220 -0.521778\nv -3.105682 0.946742 -0.533871\nv -3.105682 0.946742 -0.549871\nv -3.121682 0.946742 -0.549871\nv -3.121682 0.930742 -0.527904\nv -3.121682 0.633352 -0.521778\nv -3.121682 0.659829 -0.527904\nv -3.121682 0.643829 -0.549871\nv -3.105682 0.643829 -0.549871\nv -3.105682 0.643829 -0.533871\nv -3.105682 0.633352 -0.521778\nv -2.961571 0.659829 0.717445\nv -2.977571 0.643829 0.717445\nv -3.121682 0.643829 0.701445\nv -3.105682 0.643829 0.717445\nv -3.121682 0.643829 0.733445\nv -3.137682 0.643829 0.717445\nv -3.137682 0.659829 0.717445\nv -3.121682 0.659829 0.717445\nv -3.121682 0.659829 0.701445\nv -3.121682 0.946742 0.701445\nv -3.121682 0.930742 0.701445\nv -3.121682 0.930742 0.717445\nv -3.137682 0.930742 0.717445\nv -3.137682 0.946742 0.717445\nv -3.121682 0.946742 0.733445\nv -3.105682 0.946742 0.717445\nv -2.977571 0.946742 0.717445\nv -2.961571 0.930742 0.717445\nv -2.961571 0.930742 -0.709272\nv -2.977571 0.946742 -0.709272\nv -3.121682 0.946742 -0.693272\nv -3.105682 0.946742 -0.709272\nv -3.121682 0.946742 -0.725272\nv -3.137682 0.946742 -0.709272\nv -3.137682 0.930742 -0.709272\nv -3.121682 0.930742 -0.709272\nv -3.121682 0.930742 -0.693272\nv -3.121682 0.643829 -0.693272\nv -3.121682 0.659829 -0.693272\nv -3.121682 0.659829 -0.709272\nv -3.137682 0.659829 -0.709272\nv -3.137682 0.643829 -0.709272\nv -3.121682 0.643829 -0.725272\nv -3.105682 0.643829 -0.709272\nv -2.977571 0.643829 -0.709272\nv -2.961571 0.659829 -0.709272\nv -2.961571 0.764140 -0.955446\nv -2.977571 0.764140 -0.955446\nv -2.977571 0.780140 -0.955446\nv -2.977571 0.792399 -0.945164\nv -2.961571 0.792399 -0.945164\nv -2.961571 0.774319 -0.939446\nv -3.121682 0.764140 -0.955446\nv -3.121682 0.774319 -0.939446\nv -3.121682 0.792399 -0.945164\nv -3.105682 0.792399 -0.945164\nv -3.105682 0.780140 -0.955446\nv -3.105682 0.764140 -0.955446\nv -3.121682 0.934483 -0.826002\nv -3.121682 0.902766 -0.831720\nv -3.121682 0.930742 -0.815720\nv -3.137682 0.930742 -0.815720\nv -3.137682 0.946742 -0.815720\nv -3.121682 0.946742 -0.799720\nv -3.105682 0.946742 -0.815720\nv -3.105682 0.934483 -0.826002\nv -2.961571 0.934483 -0.826002\nv -2.977571 0.934483 -0.826002\nv -2.977571 0.946742 -0.815720\nv -2.977571 0.946742 -0.799720\nv -2.961571 0.946742 -0.799720\nv -2.961571 0.930742 -0.808256\nv -2.961571 0.764140 0.963619\nv -2.961571 0.774319 0.947619\nv -2.961571 0.792399 0.953338\nv -2.977571 0.792399 0.953338\nv -2.977571 0.780140 0.963619\nv -2.977571 0.764140 0.963619\nv -3.105682 0.780140 0.963619\nv -3.105682 0.792399 0.953338\nv -3.121682 0.792399 0.953338\nv -3.121682 0.774319 0.947619\nv -3.121682 0.764140 0.963619\nv -3.105682 0.764140 0.963619\nv -2.961571 0.934483 0.834174\nv -2.961571 0.930742 0.816430\nv -2.961571 0.946742 0.807893\nv -2.977571 0.946742 0.807893\nv -2.977571 0.946742 0.823893\nv -2.977571 0.934483 0.834174\nv -3.121682 0.934483 0.834174\nv -3.105682 0.934483 0.834174\nv -3.105682 0.946742 0.823893\nv -3.121682 0.946742 0.807893\nv -3.137682 0.946742 0.823893\nv -3.137682 0.930742 0.823893\nv -3.121682 0.930742 0.823893\nv -3.121682 0.902766 0.839893\nv -3.275987 0.643829 0.823893\nv -3.275987 0.659829 0.823893\nv -3.291987 0.659829 0.823893\nv -3.291987 0.627829 0.839893\nv -3.291987 0.643829 0.807893\nv -3.275987 0.643829 0.807893\nv -3.275987 0.643829 0.717445\nv -3.275987 0.643829 0.733445\nv -3.291987 0.643829 0.733445\nv -3.291987 0.627829 0.701445\nv -3.291987 0.659829 0.717445\nv -3.275987 0.659829 0.717445\nv -3.275987 0.946742 0.717445\nv -3.275987 0.930742 0.717445\nv -3.291987 0.930742 0.717445\nv -3.291987 0.962742 0.701445\nv -3.291987 0.946742 0.733445\nv -3.275987 0.946742 0.733445\nv -3.275987 0.946742 0.823893\nv -3.275987 0.946742 0.807893\nv -3.291987 0.946742 0.807893\nv -3.291987 0.962742 0.839893\nv -3.291987 0.930742 0.823893\nv -3.275987 0.930742 0.823893\nv -3.275987 0.643829 -0.709272\nv -3.275987 0.659829 -0.709272\nv -3.291987 0.659829 -0.709272\nv -3.291987 0.627829 -0.693272\nv -3.291987 0.643829 -0.725272\nv -3.275987 0.643829 -0.725272\nv -3.275987 0.643829 -0.815720\nv -3.275987 0.643829 -0.799720\nv -3.291987 0.643829 -0.799720\nv -3.291987 0.627829 -0.831720\nv -3.291987 0.659829 -0.815720\nv -3.275987 0.659829 -0.815720\nv -3.275987 0.946742 -0.815720\nv -3.275987 0.930742 -0.815720\nv -3.291987 0.930742 -0.815720\nv -3.291987 0.962742 -0.831720\nv -3.291987 0.946742 -0.799720\nv -3.275987 0.946742 -0.799720\nv -3.275987 0.946742 -0.709272\nv -3.275987 0.946742 -0.725272\nv -3.291987 0.946742 -0.725272\nv -3.291987 0.962742 -0.693272\nv -3.291987 0.930742 -0.709272\nv -3.275987 0.930742 -0.709272\nv -5.758358 -2.308667 -2.032186\nv -5.758358 -2.308667 -2.016186\nv -5.774358 -2.308667 -2.016186\nv -5.774358 -2.292667 -2.016186\nv -5.774358 -2.292667 -2.032186\nv -5.758358 -2.292667 -2.032186\nv -5.609860 -2.308667 -2.032186\nv -5.609860 -2.292667 -2.032186\nv -5.593860 -2.292667 -2.032186\nv -5.593860 -2.292667 -2.016186\nv -5.593860 -2.308667 -2.016186\nv -5.609860 -2.308667 -2.016186\nv -5.593860 -2.308667 -1.782932\nv -5.593860 -2.292667 -1.782932\nv -5.593860 -2.292667 -1.766932\nv -5.609860 -2.292667 -1.766932\nv -5.609860 -2.308667 -1.766932\nv -5.609860 -2.308667 -1.782932\nv -4.596445 0.457967 -0.642106\nv -4.580100 0.454630 -0.626106\nv -5.758358 -2.308667 -1.766932\nv -5.758358 -2.292667 -1.766932\nv -5.774358 -2.292667 -1.766932\nv -5.774358 -2.292667 -1.782932\nv -5.774358 -2.308667 -1.782932\nv -5.758358 -2.308667 -1.782932\nv -4.580100 0.441967 -0.376852\nv -4.580100 0.457967 -0.392852\nv -4.580100 0.473967 -0.376852\nv -4.580100 0.457967 -0.360852\nv -4.596100 0.457967 -0.360852\nv -4.596100 0.457967 -0.376852\nv -4.596100 0.441967 -0.376852\nv -4.760598 0.441967 -0.376852\nv -4.744598 0.441967 -0.376852\nv -4.744598 0.457967 -0.376852\nv -4.744598 0.457967 -0.360852\nv -4.760598 0.457967 -0.360852\nv -4.760598 0.473967 -0.376852\nv -4.760598 0.457967 -0.392852\nv -4.760598 0.454630 -0.626106\nv -4.744253 0.457967 -0.642106\nv -5.609860 -2.308667 2.040359\nv -5.609860 -2.308667 2.024359\nv -5.593860 -2.308667 2.024359\nv -5.593860 -2.292667 2.024359\nv -5.593860 -2.292667 2.040359\nv -5.609860 -2.292667 2.040359\nv -5.758358 -2.308667 2.040359\nv -5.758358 -2.292667 2.040359\nv -5.774358 -2.292667 2.040359\nv -5.774358 -2.292667 2.024359\nv -5.774358 -2.308667 2.024359\nv -5.758358 -2.308667 2.024359\nv -5.774358 -2.308667 1.791105\nv -5.774358 -2.292667 1.791105\nv -5.774358 -2.292667 1.775105\nv -5.758358 -2.292667 1.775105\nv -5.758358 -2.308667 1.775105\nv -5.758358 -2.308667 1.791105\nv -4.744253 0.457967 0.650279\nv -4.760598 0.454630 0.634279\nv -5.609860 -2.308667 1.775105\nv -5.609860 -2.292667 1.775105\nv -5.593860 -2.292667 1.775105\nv -5.593860 -2.292667 1.791105\nv -5.593860 -2.308667 1.791105\nv -5.609860 -2.308667 1.791105\nv -4.760598 0.441967 0.385025\nv -4.760598 0.457967 0.401025\nv -4.760598 0.473967 0.385025\nv -4.760598 0.457967 0.369025\nv -4.744598 0.457967 0.369025\nv -4.744598 0.457967 0.385025\nv -4.744598 0.441967 0.385025\nv -4.580100 0.441967 0.385025\nv -4.596100 0.441967 0.385025\nv -4.596100 0.457967 0.385025\nv -4.596100 0.457967 0.369025\nv -4.580100 0.457967 0.369025\nv -4.580100 0.473967 0.385025\nv -4.580100 0.457967 0.401025\nv -4.580100 0.454630 0.634279\nv -4.596445 0.457967 0.650279\nv -4.760598 0.649281 -0.558650\nv -4.760598 0.647946 -0.541776\nv -4.760598 0.663946 -0.536253\nv -4.744598 0.663946 -0.536253\nv -4.744598 0.663946 -0.552253\nv -4.744598 0.649281 -0.558650\nv -4.596100 0.663946 -0.552253\nv -4.596100 0.663946 -0.536253\nv -4.580100 0.663946 -0.536253\nv -4.580100 0.647946 -0.541776\nv -4.580100 0.649281 -0.558650\nv -4.596100 0.649281 -0.558650\nv -4.760598 0.663946 -0.392852\nv -4.760598 0.647946 -0.376852\nv -4.760598 0.663946 -0.358384\nv -4.760598 0.677809 -0.384842\nv -4.744598 0.677809 -0.384842\nv -4.744598 0.663946 -0.376852\nv -4.744598 0.663946 -0.392852\nv -4.580100 0.663946 -0.392852\nv -4.596100 0.663946 -0.392852\nv -4.596100 0.663946 -0.376852\nv -4.596100 0.677809 -0.384842\nv -4.580100 0.677809 -0.384842\nv -4.580100 0.663946 -0.358384\nv -4.580100 0.647946 -0.376852\nv -4.580100 0.649281 0.566823\nv -4.580100 0.647946 0.549950\nv -4.580100 0.663946 0.544426\nv -4.596100 0.663946 0.544426\nv -4.596100 0.663946 0.560426\nv -4.596100 0.649281 0.566823\nv -4.744598 0.663946 0.560426\nv -4.744598 0.663946 0.544426\nv -4.760598 0.663946 0.544426\nv -4.760598 0.647946 0.549950\nv -4.760598 0.649281 0.566823\nv -4.744598 0.649281 0.566823\nv -4.580100 0.663946 0.401025\nv -4.580100 0.647946 0.385025\nv -4.580100 0.663946 0.366558\nv -4.580100 0.677809 0.393015\nv -4.596100 0.677809 0.393015\nv -4.596100 0.663946 0.385025\nv -4.596100 0.663946 0.401025\nv -4.760598 0.663946 0.401025\nv -4.744598 0.663946 0.401025\nv -4.744598 0.663946 0.385025\nv -4.744598 0.677809 0.393015\nv -4.760598 0.677809 0.393015\nv -4.760598 0.663946 0.366558\nv -4.760598 0.647946 0.385025\nv -4.760598 0.457967 0.329714\nv -4.760598 0.473967 0.322894\nv -4.760598 0.471781 0.305639\nv -4.744598 0.471781 0.305639\nv -4.744598 0.457967 0.313714\nv -4.744598 0.457967 0.329714\nv -4.596100 0.457967 0.313714\nv -4.596100 0.471781 0.305639\nv -4.580100 0.471781 0.305639\nv -4.580100 0.473967 0.322894\nv -4.580100 0.457967 0.329714\nv -4.596100 0.457967 0.329714\nv -4.760598 0.650133 0.201390\nv -4.760598 0.663946 0.211848\nv -4.760598 0.697447 0.203802\nv -4.760598 0.652534 0.182102\nv -4.744598 0.652534 0.182102\nv -4.744598 0.663946 0.193315\nv -4.744598 0.650133 0.201390\nv -4.580100 0.650133 0.201390\nv -4.596100 0.650133 0.201390\nv -4.596100 0.663946 0.193315\nv -4.596100 0.652534 0.182102\nv -4.580100 0.652534 0.182102\nv -4.565961 0.659615 0.200541\nv -4.580100 0.665915 0.210698\nv -4.580100 0.457967 -0.321541\nv -4.580100 0.473967 -0.314722\nv -4.580100 0.471781 -0.297466\nv -4.596100 0.471781 -0.297466\nv -4.596100 0.457967 -0.305541\nv -4.596100 0.457967 -0.321541\nv -4.744598 0.457967 -0.305541\nv -4.744598 0.471781 -0.297466\nv -4.760598 0.471781 -0.297466\nv -4.760598 0.473967 -0.314722\nv -4.760598 0.457967 -0.321541\nv -4.744598 0.457967 -0.321541\nv -4.580100 0.650133 -0.193217\nv -4.580100 0.665915 -0.202524\nv -4.565961 0.659615 -0.192367\nv -4.580100 0.652534 -0.173928\nv -4.596100 0.652534 -0.173928\nv -4.596100 0.663946 -0.185142\nv -4.596100 0.650133 -0.193217\nv -4.760598 0.650133 -0.193217\nv -4.744598 0.650133 -0.193217\nv -4.744598 0.663946 -0.185142\nv -4.744598 0.652534 -0.173928\nv -4.760598 0.652534 -0.173928\nv -4.760598 0.697447 -0.195630\nv -4.760598 0.663946 -0.203675\nv -4.760598 0.721413 0.418148\nv -4.744598 0.721413 0.418148\nv -4.744598 0.735274 0.426138\nv -4.744598 0.740054 0.410869\nv -4.760598 0.740054 0.410869\nv -4.760598 0.725969 0.402307\nv -4.580100 0.721413 0.418148\nv -4.580100 0.725969 0.402307\nv -4.580100 0.740054 0.410869\nv -4.596100 0.740054 0.410869\nv -4.596100 0.735274 0.426138\nv -4.596100 0.721413 0.418148\nv -4.580100 0.790506 0.249698\nv -4.580100 0.775237 0.244918\nv -4.580100 0.780016 0.229649\nv -4.566199 0.779834 0.237893\nv -4.566363 0.795286 0.242631\nv -4.578826 0.811176 0.229808\nv -4.596100 0.795286 0.234429\nv -4.596100 0.790506 0.249698\nv -4.760598 0.790506 0.249698\nv -4.744598 0.790506 0.249698\nv -4.744598 0.795286 0.234429\nv -4.744598 0.810555 0.229649\nv -4.760598 0.810555 0.229649\nv -4.760598 0.782517 0.221660\nv -4.760598 0.721412 -0.409975\nv -4.760598 0.725969 -0.394134\nv -4.760598 0.740054 -0.402696\nv -4.744598 0.740054 -0.402696\nv -4.744598 0.735274 -0.417966\nv -4.744598 0.721412 -0.409975\nv -4.596100 0.735274 -0.417966\nv -4.596100 0.740054 -0.402696\nv -4.580100 0.740054 -0.402696\nv -4.580100 0.725969 -0.394134\nv -4.580100 0.721412 -0.409975\nv -4.596100 0.721412 -0.409975\nv -4.760598 0.790506 -0.241526\nv -4.760598 0.782517 -0.213487\nv -4.760598 0.810555 -0.221476\nv -4.744598 0.810555 -0.221476\nv -4.744598 0.795286 -0.226256\nv -4.744598 0.790506 -0.241526\nv -4.580100 0.790506 -0.241526\nv -4.596100 0.790506 -0.241526\nv -4.596100 0.795286 -0.226256\nv -4.578826 0.811176 -0.221635\nv -4.566363 0.795286 -0.234458\nv -4.566199 0.779834 -0.229720\nv -4.580100 0.780016 -0.221476\nv -4.580100 0.775237 -0.236746\nv -4.760598 0.969190 0.129058\nv -4.744404 0.982182 0.138723\nv -4.744401 1.011998 0.082145\nv -4.760598 0.996670 0.076912\nv -4.744355 1.025628 0.004086\nv -4.760598 1.009386 0.004086\nv -4.744401 1.011998 -0.073971\nv -4.760598 0.996670 -0.068739\nv -4.744404 0.982182 -0.130550\nv -4.760598 0.969190 -0.120886\nv -4.744139 0.926625 -0.185142\nv -4.760598 0.918163 -0.171026\nv -4.744404 0.608389 -0.130550\nv -4.760598 0.621382 -0.120886\nv -4.744401 0.578573 -0.073971\nv -4.760598 0.593902 -0.068739\nv -4.744355 0.564943 0.004086\nv -4.760598 0.581186 0.004086\nv -4.744401 0.578573 0.082145\nv -4.760598 0.593902 0.076912\nv -4.744404 0.608389 0.138723\nv -4.760598 0.621382 0.129058\nv -4.744139 0.926625 0.193315\nv -4.760598 0.918163 0.179198\nv -4.510172 0.795286 0.276185\nv -4.510336 0.779834 0.271250\nv -4.496435 0.780016 0.279608\nv -4.496435 0.795286 0.301154\nv -4.496435 0.810555 0.279608\nv -4.510336 0.810738 0.271250\nv -4.596100 0.926625 0.193315\nv -4.580100 0.911356 0.198095\nv -4.566311 0.931320 0.200079\nv -4.566197 0.988843 0.143678\nv -4.596294 0.982182 0.138723\nv -4.566194 1.019857 0.084826\nv -4.596297 1.011998 0.082145\nv -4.566155 1.033955 0.004086\nv -4.596343 1.025628 0.004086\nv -4.566194 1.019857 -0.076654\nv -4.596297 1.011998 -0.073971\nv -4.566197 0.988843 -0.135505\nv -4.596294 0.982182 -0.130550\nv -4.566311 0.931320 -0.191906\nv -4.580100 0.911356 -0.189922\nv -4.596100 0.926625 -0.185142\nv -4.510172 0.795286 -0.268012\nv -4.510336 0.810738 -0.263078\nv -4.496435 0.810555 -0.271435\nv -4.496435 0.795286 -0.292981\nv -4.496435 0.780016 -0.271435\nv -4.510336 0.779834 -0.263078\nv -4.566197 0.601729 -0.135505\nv -4.596294 0.608389 -0.130550\nv -4.566194 0.570715 -0.076654\nv -4.596297 0.578573 -0.073971\nv -4.566155 0.556617 0.004086\nv -4.596343 0.564943 0.004086\nv -4.566194 0.570715 0.084826\nv -4.596297 0.578573 0.082145\nv -4.566197 0.601729 0.143678\nv -4.596294 0.608389 0.138723\nv -4.496435 0.963574 0.248474\nv -4.510574 0.950780 0.227132\nv -4.510574 0.639791 0.227132\nv -4.496435 0.626998 0.248474\nv -4.510337 0.574513 0.162970\nv -4.496435 0.554860 0.177590\nv -4.510379 1.067260 0.004086\nv -4.496435 1.091830 0.004086\nv -4.496435 1.074330 -0.096134\nv -4.510342 1.051144 -0.088219\nv -4.510342 1.051144 0.096393\nv -4.496435 1.074330 0.104306\nv -4.510337 1.016058 0.162970\nv -4.496435 1.035711 0.177590\nv -4.496435 0.626998 -0.240301\nv -4.510574 0.639791 -0.218959\nv -4.510574 0.950780 -0.218959\nv -4.496435 0.963574 -0.240301\nv -4.510337 1.016058 -0.154798\nv -4.496435 1.035711 -0.169417\nv -4.510379 0.523311 0.004086\nv -4.496435 0.498742 0.004086\nv -4.496435 0.516242 0.104306\nv -4.510342 0.539427 0.096393\nv -4.510342 0.539427 -0.088219\nv -4.496435 0.516242 -0.096134\nv -4.510337 0.574513 -0.154798\nv -4.496435 0.554860 -0.169417\nv -3.126779 0.512178 0.226564\nv -3.138478 0.485047 0.231710\nv -3.138478 0.485047 -0.223537\nv -3.126779 0.512178 -0.218391\nv -3.126779 0.565494 -0.397576\nv -3.137842 0.557313 -0.408353\nv -3.136215 0.565235 -0.423846\nv -3.136991 0.582048 -0.424782\nv -3.126779 0.587354 -0.412465\nv -3.126779 0.582251 -0.396465\nv -3.126779 1.003218 -0.412465\nv -3.136991 1.008523 -0.424782\nv -3.136215 1.025336 -0.423846\nv -3.137842 1.033259 -0.408353\nv -3.126779 1.025077 -0.397576\nv -3.126779 1.008320 -0.396465\nv -3.282551 0.470351 -0.600346\nv -3.291987 0.457364 -0.594273\nv -3.300834 0.455386 -0.611727\nv -3.291987 0.480233 -0.627727\nv -3.291987 0.480233 -0.611727\nv -3.281775 0.488170 -0.599410\nv -3.138478 1.105524 -0.223537\nv -3.126779 1.078393 -0.218391\nv -3.282551 1.120221 -0.600346\nv -3.281775 1.102402 -0.599410\nv -3.291987 1.110339 -0.611727\nv -3.291987 1.110339 -0.627727\nv -3.300834 1.135186 -0.611727\nv -3.291987 1.133207 -0.594273\nv -3.138478 1.105524 0.231710\nv -3.126779 1.078393 0.226564\nv -3.126779 1.025077 0.405750\nv -3.137842 1.033259 0.416526\nv -3.136215 1.025336 0.432019\nv -3.136991 1.008523 0.432955\nv -3.126779 1.003218 0.420638\nv -3.126779 1.008320 0.404638\nv -3.126779 0.587354 0.420638\nv -3.136991 0.582048 0.432955\nv -3.136215 0.565235 0.432019\nv -3.137842 0.557313 0.416526\nv -3.126779 0.565494 0.405750\nv -3.126779 0.582251 0.404638\nv -3.282551 1.120221 0.608519\nv -3.291987 1.133207 0.602446\nv -3.300834 1.135186 0.619901\nv -3.291987 1.110339 0.635901\nv -3.291987 1.110339 0.619901\nv -3.281775 1.102402 0.607583\nv -3.282551 0.470351 0.608519\nv -3.281775 0.488170 0.607583\nv -3.291987 0.480233 0.619901\nv -3.291987 0.480233 0.635901\nv -3.300834 0.455386 0.619901\nv -3.291987 0.457364 0.602446\nv -3.704692 1.577863 -0.192715\nv -3.704692 1.561863 -0.208715\nv -3.962898 1.561863 -0.208715\nv -3.962898 1.577863 -0.192715\nv -3.704692 1.561863 0.216889\nv -3.704692 1.577863 0.200889\nv -3.962898 1.577863 0.200889\nv -3.962898 1.561863 0.216889\nv -3.720692 1.336210 0.216889\nv -3.720692 1.336210 0.200889\nv -3.704692 1.336210 0.200889\nv -3.704692 1.320210 0.200889\nv -3.704692 1.320210 0.216889\nv -3.688692 1.336210 0.216889\nv -3.704692 1.352210 0.216889\nv -3.946898 1.336210 0.216889\nv -3.962898 1.352210 0.216889\nv -3.978898 1.336210 0.216889\nv -3.962898 1.320210 0.216889\nv -3.962898 1.320210 0.200889\nv -3.962898 1.336210 0.200889\nv -3.946898 1.336210 0.200889\nv -3.720692 1.336210 -0.208715\nv -3.704692 1.352210 -0.208715\nv -3.688692 1.336210 -0.208715\nv -3.704692 1.320210 -0.208715\nv -3.704692 1.320210 -0.192715\nv -3.704692 1.336210 -0.192715\nv -3.720692 1.336210 -0.192715\nv -3.946898 1.336210 -0.208715\nv -3.946898 1.336210 -0.192715\nv -3.962898 1.336210 -0.192715\nv -3.962898 1.320210 -0.192715\nv -3.962898 1.320210 -0.208715\nv -3.978898 1.336210 -0.208715\nv -3.962898 1.352210 -0.208715\nv -3.426157 1.577863 0.216889\nv -3.426157 1.561863 0.216889\nv -3.410157 1.561863 0.216889\nv -3.410157 1.561863 0.200889\nv -3.410157 1.577863 0.200889\nv -3.426157 1.577863 0.200889\nv -3.410157 1.577863 -0.192715\nv -3.410157 1.561863 -0.192715\nv -3.410157 1.561863 -0.208715\nv -3.426157 1.561863 -0.208715\nv -3.426157 1.577863 -0.208715\nv -3.426157 1.577863 -0.192715\nv -3.426157 1.336210 0.216889\nv -3.410157 1.336210 0.200889\nv -3.410157 1.336210 -0.192715\nv -3.426157 1.336210 -0.208715\nv -4.340398 1.577863 0.216889\nv -4.340398 1.577863 0.200889\nv -4.356398 1.577863 0.200889\nv -4.356398 1.561863 0.200889\nv -4.356398 1.561863 0.216889\nv -4.340398 1.561863 0.216889\nv -4.340398 1.577863 -0.208715\nv -4.340398 1.561863 -0.208715\nv -4.356398 1.561863 -0.208715\nv -4.356398 1.561863 -0.192715\nv -4.356398 1.577863 -0.192715\nv -4.340398 1.577863 -0.192715\nv -4.340398 1.336210 -0.208715\nv -4.356398 1.336210 -0.192715\nv -4.356398 1.336210 0.200889\nv -4.340398 1.336210 0.216889\nv -3.410157 1.288929 -0.208715\nv -3.410157 1.288929 -0.192715\nv -3.410157 1.272929 -0.192715\nv -3.394157 1.272929 -0.224715\nv -3.426157 1.272929 -0.208715\nv -3.426157 1.288929 -0.208715\nv -3.704692 1.288929 -0.208715\nv -3.688692 1.288929 -0.208715\nv -3.688692 1.272929 -0.208715\nv -3.720692 1.272929 -0.224715\nv -3.704692 1.272929 -0.192715\nv -3.704692 1.288929 -0.192715\nv -3.704692 1.288929 0.216889\nv -3.704692 1.288929 0.200889\nv -3.704692 1.272929 0.200889\nv -3.720692 1.272929 0.232889\nv -3.688692 1.272929 0.216889\nv -3.688692 1.288929 0.216889\nv -3.410157 1.288929 0.216889\nv -3.426157 1.288929 0.216889\nv -3.426157 1.272929 0.216889\nv -3.394157 1.272929 0.232889\nv -3.410157 1.272929 0.200889\nv -3.410157 1.288929 0.200889\nv -3.962898 1.288929 -0.208715\nv -3.962898 1.288929 -0.192715\nv -3.962898 1.272929 -0.192715\nv -3.946898 1.272929 -0.224715\nv -3.978898 1.272929 -0.208715\nv -3.978898 1.288929 -0.208715\nv -4.356398 1.288929 -0.208715\nv -4.340398 1.288929 -0.208715\nv -4.340398 1.272929 -0.208715\nv -4.372398 1.272929 -0.224715\nv -4.356398 1.272929 -0.192715\nv -4.356398 1.288929 -0.192715\nv -4.356398 1.288929 0.216889\nv -4.356398 1.288929 0.200889\nv -4.356398 1.272929 0.200889\nv -4.372398 1.272929 0.232889\nv -4.340398 1.272929 0.216889\nv -4.340398 1.288929 0.216889\nv -3.962898 1.288929 0.216889\nv -3.978898 1.288929 0.216889\nv -3.978898 1.272929 0.216889\nv -3.946898 1.272929 0.232889\nv -3.962898 1.272929 0.200889\nv -3.962898 1.288929 0.200889\nv -4.311192 1.152882 -0.913264\nv -4.322404 1.141323 -0.913264\nv -4.336040 1.144035 -0.913264\nv -4.336040 1.144035 -0.900752\nv -4.327192 1.152882 -0.897264\nv -4.311192 1.152882 -0.897264\nv -3.865405 1.152882 -0.913264\nv -3.865405 1.152882 -0.897264\nv -3.849405 1.152882 -0.897264\nv -3.840558 1.144035 -0.900752\nv -3.840558 1.144035 -0.913264\nv -3.854193 1.141323 -0.913264\nv -4.353735 0.480233 -0.913264\nv -4.342176 0.469021 -0.913264\nv -4.344889 0.455386 -0.913264\nv -4.344889 0.455386 -0.900753\nv -4.353735 0.464233 -0.897264\nv -4.353735 0.480233 -0.897264\nv -4.353735 1.110339 -0.913264\nv -4.353735 1.110339 -0.897264\nv -4.353735 1.126339 -0.897264\nv -4.344889 1.135186 -0.900752\nv -4.344889 1.135186 -0.913264\nv -4.342176 1.121551 -0.913264\nv -3.891949 1.126339 -0.913264\nv -3.871161 1.137898 -0.913264\nv -3.867102 1.117492 -0.913264\nv -3.867102 1.117492 -0.925775\nv -3.875949 1.126339 -0.929264\nv -3.891949 1.126339 -0.929264\nv -4.284648 1.126339 -0.913264\nv -4.284648 1.126339 -0.929264\nv -4.300648 1.126339 -0.929264\nv -4.309495 1.117492 -0.925775\nv -4.309495 1.117492 -0.913264\nv -4.305436 1.137898 -0.913264\nv -3.849405 0.506776 -0.913264\nv -3.837846 0.485988 -0.913264\nv -3.858252 0.481930 -0.913264\nv -3.858252 0.481930 -0.925775\nv -3.849405 0.490776 -0.929264\nv -3.849405 0.506776 -0.929264\nv -3.849405 1.083795 -0.913264\nv -3.849405 1.083795 -0.929264\nv -3.849405 1.099795 -0.929264\nv -3.858252 1.108642 -0.925775\nv -3.858252 1.108642 -0.913264\nv -3.837846 1.104583 -0.913264\nv -3.891949 1.126339 -1.425026\nv -3.891949 1.126339 -1.409027\nv -3.875949 1.126339 -1.409027\nv -3.867102 1.117492 -1.412515\nv -3.867102 1.117492 -1.425026\nv -3.882576 1.110339 -1.425026\nv -4.284648 1.126339 -1.425026\nv -4.294021 1.110339 -1.425026\nv -4.309495 1.117492 -1.425026\nv -4.309495 1.117492 -1.412515\nv -4.300648 1.126339 -1.409027\nv -4.284648 1.126339 -1.409027\nv -3.849405 0.506776 -1.425026\nv -3.849405 0.506776 -1.409027\nv -3.849405 0.490776 -1.409027\nv -3.858252 0.481930 -1.412515\nv -3.858252 0.481930 -1.425026\nv -3.865405 0.497404 -1.425026\nv -3.849405 1.083795 -1.425026\nv -3.865405 1.093168 -1.425026\nv -3.858252 1.108642 -1.425026\nv -3.858252 1.108642 -1.412515\nv -3.849405 1.099795 -1.409027\nv -3.849405 1.083795 -1.409027\nv -3.918662 0.576034 -1.425026\nv -3.902662 0.553406 -1.425026\nv -3.927510 0.551186 -1.425026\nv -3.932930 0.556606 -1.435129\nv -3.925348 0.567023 -1.437772\nv -3.926095 0.585591 -1.439195\nv -3.918662 1.014538 -1.425026\nv -3.926095 1.004980 -1.439195\nv -3.925348 1.023548 -1.437772\nv -3.932930 1.033965 -1.435129\nv -3.927510 1.039385 -1.425026\nv -3.902662 1.037165 -1.425026\nv -3.961206 1.057082 -1.425026\nv -3.938579 1.073082 -1.425026\nv -3.936359 1.048234 -1.425026\nv -3.941779 1.042814 -1.435129\nv -3.952196 1.050395 -1.437772\nv -3.970764 1.049649 -1.439195\nv -4.215391 1.057082 -1.425026\nv -4.205833 1.049649 -1.439195\nv -4.224401 1.050395 -1.437772\nv -4.234818 1.042814 -1.435129\nv -4.240238 1.048234 -1.425026\nv -4.238019 1.073082 -1.425026\nv -4.023860 0.997151 -1.539271\nv -4.017877 1.004584 -1.525102\nv -4.000871 1.003838 -1.526526\nv -3.992491 0.993266 -1.528569\nv -3.998106 0.987397 -1.539271\nv -4.014488 0.981151 -1.539271\nv -4.152737 0.997151 -1.539271\nv -4.162109 0.981151 -1.539271\nv -4.178491 0.987397 -1.539271\nv -4.184106 0.993266 -1.528569\nv -4.175726 1.003838 -1.526526\nv -4.158720 1.004584 -1.525102\nv -3.978593 0.638688 -1.539271\nv -3.971160 0.632705 -1.525102\nv -3.971906 0.615698 -1.526526\nv -3.982478 0.607319 -1.528569\nv -3.988347 0.612933 -1.539271\nv -3.994593 0.629315 -1.539271\nv -3.978593 0.951883 -1.539271\nv -3.994593 0.961256 -1.539271\nv -3.988347 0.977638 -1.539271\nv -3.982478 0.983253 -1.528569\nv -3.971906 0.974874 -1.526526\nv -3.971160 0.957867 -1.525102\nv -3.831708 1.135186 -0.913264\nv -3.831708 1.135186 -0.900752\nv -3.822861 1.126339 -0.897264\nv -3.814014 1.135186 -0.900753\nv -3.814014 1.135186 -0.913264\nv -3.814014 1.117492 -0.913264\nv -3.831708 1.117492 -0.913264\nv -3.840558 1.144035 -0.611727\nv -3.840558 1.144035 -0.624239\nv -3.849405 1.152882 -0.627727\nv -3.865405 1.152882 -0.611727\nv -3.849405 1.159142 -0.597002\nv -3.833405 1.152882 -0.611727\nv -3.836894 1.147700 -0.611727\nv -3.831708 1.135186 -0.611727\nv -3.822861 1.135186 -0.611727\nv -3.814014 1.135186 -0.611727\nv -3.814014 1.135186 -0.624239\nv -3.822861 1.126339 -0.627727\nv -3.831708 1.135186 -0.624239\nv -4.344889 1.135186 -0.611727\nv -4.344889 1.135186 -0.624239\nv -4.353735 1.126339 -0.627727\nv -4.354403 1.109918 -0.608927\nv -4.360543 1.131641 -0.598254\nv -4.350720 1.140009 -0.601572\nv -4.336040 1.144035 -0.611727\nv -4.340906 1.147896 -0.600691\nv -4.333938 1.158558 -0.598375\nv -4.310895 1.153617 -0.608124\nv -4.327192 1.152882 -0.627727\nv -4.336040 1.144035 -0.624239\nv -4.318345 1.108642 -0.913264\nv -4.318345 1.108642 -0.925775\nv -4.327192 1.099795 -0.929264\nv -4.327192 1.083795 -0.929264\nv -4.327192 1.083795 -0.913264\nv -4.338751 1.104583 -0.913264\nv -4.318345 1.108642 -1.425026\nv -4.311192 1.093168 -1.425026\nv -4.327192 1.083795 -1.425026\nv -4.327192 1.083795 -1.409027\nv -4.327192 1.099795 -1.409027\nv -4.318345 1.108642 -1.412515\nv -4.249087 1.039385 -1.425026\nv -4.243668 1.033965 -1.435129\nv -4.251249 1.023548 -1.437772\nv -4.250502 1.004980 -1.439195\nv -4.257935 1.014538 -1.425026\nv -4.273935 1.037165 -1.425026\nv -4.188250 0.977638 -1.539271\nv -4.182004 0.961256 -1.539271\nv -4.198004 0.951883 -1.539271\nv -4.205437 0.957867 -1.525102\nv -4.204690 0.974874 -1.526526\nv -4.194118 0.983253 -1.528569\nv -3.469997 1.003838 -1.526526\nv -3.461618 0.993266 -1.528569\nv -3.467232 0.987397 -1.539271\nv -3.483614 0.981151 -1.539271\nv -3.492986 0.997151 -1.539271\nv -3.487003 1.004584 -1.525102\nv -3.421322 1.050395 -1.437772\nv -3.439890 1.049649 -1.439195\nv -3.430332 1.057082 -1.425026\nv -3.407705 1.073082 -1.425026\nv -3.405485 1.048234 -1.425026\nv -3.410905 1.042814 -1.435129\nv -3.394475 1.023548 -1.437772\nv -3.402056 1.033965 -1.435129\nv -3.396635 1.039385 -1.425026\nv -3.371789 1.037165 -1.425026\nv -3.387789 1.014538 -1.425026\nv -3.395221 1.004980 -1.439195\nv -3.441033 0.974874 -1.526526\nv -3.440285 0.957867 -1.525102\nv -3.447718 0.951883 -1.539271\nv -3.463718 0.961256 -1.539271\nv -3.457474 0.977638 -1.539271\nv -3.451604 0.983253 -1.528569\nv -3.345074 1.126339 -1.409027\nv -3.336228 1.117492 -1.412515\nv -3.336228 1.117492 -1.425026\nv -3.351702 1.110339 -1.425026\nv -3.361074 1.126339 -1.425026\nv -3.361074 1.126339 -1.409027\nv -3.345074 1.126339 -0.929264\nv -3.361074 1.126339 -0.929264\nv -3.361074 1.126339 -0.913264\nv -3.340286 1.137898 -0.913264\nv -3.336228 1.117492 -0.913264\nv -3.336228 1.117492 -0.925776\nv -3.318531 1.099795 -0.929264\nv -3.327378 1.108642 -0.925776\nv -3.327378 1.108642 -0.913264\nv -3.306972 1.104583 -0.913264\nv -3.318531 1.083795 -0.913264\nv -3.318531 1.083795 -0.929264\nv -3.318531 1.099795 -1.409027\nv -3.318531 1.083795 -1.409027\nv -3.318531 1.083795 -1.425026\nv -3.334531 1.093168 -1.425026\nv -3.327378 1.108642 -1.425026\nv -3.327378 1.108642 -1.412515\nv -3.318531 1.152882 -0.897264\nv -3.309684 1.144035 -0.900753\nv -3.309684 1.144035 -0.913264\nv -3.323319 1.141323 -0.913264\nv -3.334531 1.152882 -0.913264\nv -3.334531 1.152882 -0.897264\nv -3.334859 1.152882 -0.611727\nv -3.309943 1.143966 -0.609911\nv -3.291987 1.126339 -0.897264\nv -3.291987 1.110339 -0.897264\nv -3.303547 1.121551 -0.913264\nv -3.300834 1.135186 -0.913264\nv -3.300834 1.135186 -0.900753\nv -3.673816 0.974874 -1.526526\nv -3.663245 0.983253 -1.528569\nv -3.657375 0.977638 -1.539271\nv -3.651130 0.961256 -1.539271\nv -3.667130 0.951883 -1.539271\nv -3.674563 0.957867 -1.525102\nv -3.720374 1.023548 -1.437772\nv -3.719628 1.004980 -1.439195\nv -3.727060 1.014538 -1.425026\nv -3.743060 1.037165 -1.425026\nv -3.718214 1.039385 -1.425026\nv -3.712794 1.033965 -1.435129\nv -3.693527 1.050395 -1.437772\nv -3.703944 1.042814 -1.435129\nv -3.709363 1.048234 -1.425026\nv -3.707144 1.073082 -1.425026\nv -3.684517 1.057082 -1.425026\nv -3.674959 1.049649 -1.439195\nv -3.644852 1.003838 -1.526526\nv -3.627846 1.004584 -1.525102\nv -3.621862 0.997151 -1.539271\nv -3.631235 0.981151 -1.539271\nv -3.647618 0.987397 -1.539271\nv -3.653231 0.993266 -1.528569\nv -3.796318 1.099795 -1.409027\nv -3.787470 1.108642 -1.412515\nv -3.787470 1.108642 -1.425026\nv -3.780318 1.093168 -1.425026\nv -3.796318 1.083795 -1.425026\nv -3.796318 1.083795 -1.409027\nv -3.796318 1.099795 -0.929264\nv -3.796318 1.083795 -0.929264\nv -3.796318 1.083795 -0.913264\nv -3.807877 1.104583 -0.913264\nv -3.787470 1.108642 -0.913264\nv -3.787470 1.108642 -0.925776\nv -3.769773 1.126339 -0.929264\nv -3.778621 1.117492 -0.925776\nv -3.778621 1.117492 -0.913264\nv -3.774562 1.137898 -0.913264\nv -3.753773 1.126339 -0.913264\nv -3.753773 1.126339 -0.929264\nv -3.769773 1.126339 -1.409027\nv -3.753773 1.126339 -1.409027\nv -3.753773 1.126339 -1.425026\nv -3.763146 1.110339 -1.425026\nv -3.778621 1.117492 -1.425026\nv -3.778621 1.117492 -1.412515\nv -3.796318 1.152882 -0.627727\nv -3.805165 1.144035 -0.624239\nv -3.805165 1.144035 -0.611727\nv -3.808830 1.147700 -0.611727\nv -3.812318 1.152882 -0.611727\nv -3.796318 1.159142 -0.597002\nv -3.780318 1.152882 -0.611727\nv -3.796318 1.152882 -0.897264\nv -3.780318 1.152882 -0.897264\nv -3.780318 1.152882 -0.913264\nv -3.791529 1.141323 -0.913264\nv -3.805165 1.144035 -0.913264\nv -3.805165 1.144035 -0.900753\nv -3.667130 0.638688 -1.539271\nv -3.651130 0.629315 -1.539271\nv -3.657375 0.612933 -1.539271\nv -3.663245 0.607319 -1.528569\nv -3.673816 0.615698 -1.526526\nv -3.674563 0.632705 -1.525102\nv -3.447718 0.638688 -1.539271\nv -3.440285 0.632705 -1.525102\nv -3.441033 0.615698 -1.526526\nv -3.451604 0.607319 -1.528569\nv -3.457474 0.612933 -1.539271\nv -3.463718 0.629315 -1.539271\nv -3.727060 0.576034 -1.425026\nv -3.719628 0.585591 -1.439195\nv -3.720374 0.567023 -1.437772\nv -3.712794 0.556606 -1.435129\nv -3.718214 0.551186 -1.425026\nv -3.743060 0.553406 -1.425026\nv -3.796318 0.506776 -1.425026\nv -3.780318 0.497404 -1.425026\nv -3.787470 0.481930 -1.425026\nv -3.787470 0.481930 -1.412515\nv -3.796318 0.490776 -1.409027\nv -3.796318 0.506776 -1.409027\nv -3.796318 0.506776 -0.913264\nv -3.796318 0.506776 -0.929264\nv -3.796318 0.490776 -0.929264\nv -3.787470 0.481930 -0.925776\nv -3.787470 0.481930 -0.913264\nv -3.807877 0.485988 -0.913264\nv -3.334531 0.437689 -0.913264\nv -3.323319 0.449248 -0.913264\nv -3.309684 0.446536 -0.913264\nv -3.309684 0.446536 -0.900753\nv -3.318531 0.437689 -0.897264\nv -3.334531 0.437689 -0.897264\nv -3.780318 0.437689 -0.913264\nv -3.780318 0.437689 -0.897264\nv -3.796318 0.437689 -0.897264\nv -3.805165 0.446536 -0.900753\nv -3.805165 0.446536 -0.913264\nv -3.791529 0.449248 -0.913264\nv -3.291987 0.480233 -0.897264\nv -3.291987 0.464233 -0.897264\nv -3.300834 0.455386 -0.900753\nv -3.300834 0.455386 -0.913264\nv -3.303547 0.469021 -0.913264\nv -3.318531 0.506776 -0.913264\nv -3.306972 0.485988 -0.913264\nv -3.327378 0.481930 -0.913264\nv -3.327378 0.481930 -0.925776\nv -3.318531 0.490776 -0.929264\nv -3.318531 0.506776 -0.929264\nv -3.753773 0.464233 -0.913264\nv -3.774562 0.452674 -0.913264\nv -3.778621 0.473080 -0.913264\nv -3.778621 0.473080 -0.925776\nv -3.769773 0.464233 -0.929264\nv -3.753773 0.464233 -0.929264\nv -3.361074 0.464233 -0.913264\nv -3.361074 0.464233 -0.929264\nv -3.345074 0.464233 -0.929264\nv -3.336228 0.473080 -0.925776\nv -3.336228 0.473080 -0.913264\nv -3.340286 0.452674 -0.913264\nv -3.753773 0.464233 -1.425026\nv -3.753773 0.464233 -1.409027\nv -3.769773 0.464233 -1.409027\nv -3.778621 0.473080 -1.412515\nv -3.778621 0.473080 -1.425026\nv -3.763146 0.480233 -1.425026\nv -3.361074 0.464233 -1.425026\nv -3.351702 0.480233 -1.425026\nv -3.336228 0.473080 -1.425026\nv -3.336228 0.473080 -1.412515\nv -3.345074 0.464233 -1.409027\nv -3.361074 0.464233 -1.409027\nv -3.318531 0.506776 -1.425026\nv -3.318531 0.506776 -1.409027\nv -3.318531 0.490776 -1.409027\nv -3.327378 0.481930 -1.412515\nv -3.327378 0.481930 -1.425026\nv -3.334531 0.497404 -1.425026\nv -3.387789 0.576034 -1.425026\nv -3.371789 0.553406 -1.425026\nv -3.396635 0.551186 -1.425026\nv -3.402056 0.556606 -1.435129\nv -3.394475 0.567023 -1.437772\nv -3.395221 0.585591 -1.439195\nv -3.684517 0.533490 -1.425026\nv -3.707144 0.517490 -1.425026\nv -3.709363 0.542337 -1.425026\nv -3.703944 0.547757 -1.435129\nv -3.693527 0.540176 -1.437772\nv -3.674959 0.540922 -1.439195\nv -3.430332 0.533490 -1.425026\nv -3.439890 0.540922 -1.439195\nv -3.421322 0.540176 -1.437772\nv -3.410905 0.547757 -1.435129\nv -3.405485 0.542337 -1.425026\nv -3.407705 0.517490 -1.425026\nv -3.621862 0.593420 -1.539271\nv -3.627846 0.585987 -1.525102\nv -3.644852 0.586734 -1.526526\nv -3.653231 0.597306 -1.528569\nv -3.647618 0.603175 -1.539271\nv -3.631235 0.609420 -1.539271\nv -3.492986 0.593420 -1.539271\nv -3.483614 0.609420 -1.539271\nv -3.467232 0.603175 -1.539271\nv -3.461618 0.597306 -1.528569\nv -3.469997 0.586734 -1.526526\nv -3.487003 0.585987 -1.525102\nv -3.814014 0.455386 -0.913264\nv -3.814014 0.455386 -0.900753\nv -3.822861 0.464233 -0.897264\nv -3.831708 0.455386 -0.900753\nv -3.831708 0.455386 -0.913264\nv -3.831708 0.473080 -0.913264\nv -3.814014 0.473080 -0.913264\nv -3.805165 0.446536 -0.611727\nv -3.805165 0.446536 -0.624239\nv -3.796318 0.437689 -0.627727\nv -3.780318 0.437689 -0.611727\nv -3.796318 0.431430 -0.597002\nv -3.812318 0.437689 -0.611727\nv -3.808830 0.442871 -0.611727\nv -3.814014 0.455386 -0.611727\nv -3.822861 0.455386 -0.611727\nv -3.831708 0.455386 -0.611727\nv -3.831708 0.455386 -0.624239\nv -3.822861 0.464233 -0.627727\nv -3.814014 0.455386 -0.624239\nv -3.309943 0.446605 -0.609911\nv -3.334859 0.437689 -0.611727\nv -4.175726 0.586734 -1.526526\nv -4.184106 0.597306 -1.528569\nv -4.178491 0.603175 -1.539271\nv -4.162109 0.609420 -1.539271\nv -4.152737 0.593420 -1.539271\nv -4.158720 0.585987 -1.525102\nv -4.224401 0.540176 -1.437772\nv -4.205833 0.540922 -1.439195\nv -4.215391 0.533490 -1.425026\nv -4.238019 0.517490 -1.425026\nv -4.240238 0.542337 -1.425026\nv -4.234818 0.547757 -1.435129\nv -4.251249 0.567023 -1.437772\nv -4.243668 0.556606 -1.435129\nv -4.249087 0.551186 -1.425026\nv -4.273935 0.553406 -1.425026\nv -4.257935 0.576034 -1.425026\nv -4.250502 0.585591 -1.439195\nv -4.204690 0.615698 -1.526526\nv -4.205437 0.632705 -1.525102\nv -4.198004 0.638688 -1.539271\nv -4.182004 0.629315 -1.539271\nv -4.188250 0.612933 -1.539271\nv -4.194118 0.607319 -1.528569\nv -4.300648 0.464233 -1.409027\nv -4.309495 0.473080 -1.412515\nv -4.309495 0.473080 -1.425026\nv -4.294021 0.480233 -1.425026\nv -4.284648 0.464233 -1.425026\nv -4.284648 0.464233 -1.409027\nv -4.300648 0.464233 -0.929264\nv -4.284648 0.464233 -0.929264\nv -4.284648 0.464233 -0.913264\nv -4.305436 0.452674 -0.913264\nv -4.309495 0.473080 -0.913264\nv -4.309495 0.473080 -0.925775\nv -4.327192 0.490776 -0.929264\nv -4.318345 0.481930 -0.925775\nv -4.318345 0.481930 -0.913264\nv -4.338751 0.485988 -0.913264\nv -4.327192 0.506776 -0.913264\nv -4.327192 0.506776 -0.929264\nv -4.327192 0.490776 -1.409027\nv -4.327192 0.506776 -1.409027\nv -4.327192 0.506776 -1.425026\nv -4.311192 0.497404 -1.425026\nv -4.318345 0.481930 -1.425026\nv -4.318345 0.481930 -1.412515\nv -4.327192 0.437689 -0.897264\nv -4.336040 0.446536 -0.900753\nv -4.336040 0.446536 -0.913264\nv -4.322404 0.449248 -0.913264\nv -4.311192 0.437689 -0.913264\nv -4.311192 0.437689 -0.897264\nv -4.327192 0.437689 -0.627727\nv -4.310895 0.436955 -0.608124\nv -4.333938 0.432014 -0.598375\nv -4.340906 0.442676 -0.600691\nv -4.336040 0.446536 -0.611727\nv -4.336040 0.446536 -0.624239\nv -4.353735 0.464233 -0.627727\nv -4.344889 0.455386 -0.624239\nv -4.344889 0.455386 -0.611727\nv -4.350720 0.450562 -0.601572\nv -4.360543 0.458930 -0.598254\nv -4.354403 0.480654 -0.608927\nv -3.952196 0.540176 -1.437772\nv -3.941779 0.547757 -1.435129\nv -3.936359 0.542337 -1.425026\nv -3.938579 0.517490 -1.425026\nv -3.961206 0.533490 -1.425026\nv -3.970764 0.540922 -1.439195\nv -4.000871 0.586734 -1.526526\nv -4.017877 0.585987 -1.525102\nv -4.023860 0.593420 -1.539271\nv -4.014488 0.609420 -1.539271\nv -3.998106 0.603175 -1.539271\nv -3.992491 0.597306 -1.528569\nv -3.875949 0.464233 -0.929264\nv -3.867102 0.473080 -0.925775\nv -3.867102 0.473080 -0.913264\nv -3.871161 0.452674 -0.913264\nv -3.891949 0.464233 -0.913264\nv -3.891949 0.464233 -0.929264\nv -3.875949 0.464233 -1.409027\nv -3.891949 0.464233 -1.409027\nv -3.891949 0.464233 -1.425026\nv -3.882576 0.480233 -1.425026\nv -3.867102 0.473080 -1.425026\nv -3.867102 0.473080 -1.412515\nv -3.849405 0.437689 -0.627727\nv -3.840558 0.446536 -0.624239\nv -3.840558 0.446536 -0.611727\nv -3.836894 0.442871 -0.611727\nv -3.833405 0.437689 -0.611727\nv -3.849405 0.431430 -0.597002\nv -3.865405 0.437689 -0.611727\nv -3.849405 0.437689 -0.897264\nv -3.865405 0.437689 -0.897264\nv -3.865405 0.437689 -0.913264\nv -3.854193 0.449248 -0.913264\nv -3.840558 0.446536 -0.913264\nv -3.840558 0.446536 -0.900753\nv -4.463145 0.323318 -0.342654\nv -4.453595 0.316908 -0.325698\nv -4.469892 0.317642 -0.313302\nv -4.478738 0.329459 -0.314541\nv -4.478738 0.329459 -0.329302\nv -4.473057 0.333877 -0.341848\nv -3.309188 0.328842 -0.327021\nv -3.334859 0.317642 -0.329302\nv -3.334531 1.272929 -0.329302\nv -3.334531 1.272929 -0.308245\nv -3.309188 1.261730 -0.327021\nv -4.463145 1.267254 -0.342654\nv -4.473057 1.256694 -0.341848\nv -4.478738 1.261112 -0.329302\nv -4.478738 1.261112 -0.314541\nv -4.469892 1.272929 -0.313302\nv -4.453891 1.272929 -0.312302\nv -4.452246 1.272929 -0.329302\nv -4.489626 1.232173 -0.342776\nv -4.496435 1.220517 -0.329302\nv -4.496435 1.221474 -0.316670\nv -4.496435 1.237474 -0.313302\nv -4.487587 1.249291 -0.314541\nv -4.487587 1.249291 -0.329302\nv -4.481030 1.243796 -0.340979\nv -4.489626 0.358399 -0.342776\nv -4.481030 0.346775 -0.340979\nv -4.487587 0.341280 -0.329302\nv -4.487587 0.341280 -0.314541\nv -4.496435 0.353097 -0.313302\nv -4.496435 0.369097 -0.316670\nv -4.496435 0.370055 -0.329302\nv -3.334531 1.272929 0.316418\nv -3.334531 1.272929 0.337475\nv -3.309188 1.261730 0.335194\nv -3.309188 0.328842 0.335194\nv -3.334859 0.317642 0.337475\nv -4.469892 0.317642 0.321475\nv -4.453595 0.316908 0.333872\nv -4.463145 0.323318 0.350827\nv -4.473057 0.333877 0.350021\nv -4.478738 0.329459 0.337475\nv -4.478738 0.329459 0.322714\nv -4.496435 0.353097 0.321475\nv -4.487587 0.341280 0.322714\nv -4.487587 0.341280 0.337475\nv -4.481030 0.346775 0.349152\nv -4.489626 0.358399 0.350950\nv -4.496435 0.370055 0.337475\nv -4.496435 0.369097 0.324843\nv -4.496435 1.237474 0.321475\nv -4.496435 1.221474 0.324843\nv -4.496435 1.220517 0.337475\nv -4.489626 1.232173 0.350950\nv -4.481030 1.243796 0.349152\nv -4.487587 1.249291 0.337475\nv -4.487587 1.249291 0.322714\nv -4.469892 1.272929 0.321475\nv -4.478738 1.261112 0.322714\nv -4.478738 1.261112 0.337475\nv -4.473057 1.256694 0.350022\nv -4.463145 1.267254 0.350827\nv -4.452246 1.272929 0.337475\nv -4.453891 1.272929 0.320475\nv -4.360543 0.458930 0.606426\nv -4.350720 0.450562 0.609746\nv -4.344889 0.455386 0.619901\nv -4.344889 0.455386 0.632412\nv -4.353735 0.464233 0.635901\nv -4.354403 0.480654 0.617101\nv -4.360543 1.131641 0.606426\nv -4.354403 1.109918 0.617101\nv -4.353735 1.126339 0.635901\nv -4.344889 1.135186 0.632412\nv -4.344889 1.135186 0.619901\nv -4.350720 1.140009 0.609746\nv -4.333938 1.158558 0.606549\nv -4.340906 1.147896 0.608864\nv -4.336040 1.144035 0.619901\nv -4.336040 1.144035 0.632412\nv -4.327192 1.152882 0.635901\nv -4.310895 1.153617 0.616297\nv -3.334859 1.152882 0.619901\nv -3.309943 1.143966 0.618084\nv -3.309943 0.446605 0.618084\nv -3.334859 0.437689 0.619901\nv -4.333938 0.432014 0.606549\nv -4.310895 0.436955 0.616297\nv -4.327192 0.437689 0.635901\nv -4.336040 0.446536 0.632412\nv -4.336040 0.446536 0.619901\nv -4.340906 0.442676 0.608864\nv -3.812318 0.437689 0.619901\nv -3.796318 0.431430 0.605175\nv -3.780318 0.437689 0.619901\nv -3.796318 0.437689 0.635901\nv -3.805165 0.446536 0.632412\nv -3.805165 0.446536 0.619901\nv -3.808830 0.442871 0.619901\nv -3.833405 0.437689 0.619901\nv -3.836894 0.442871 0.619901\nv -3.840558 0.446536 0.619901\nv -3.840558 0.446536 0.632412\nv -3.849405 0.437689 0.635901\nv -3.865405 0.437689 0.619901\nv -3.849405 0.431430 0.605175\nv -3.812318 1.152882 0.619901\nv -3.808830 1.147700 0.619901\nv -3.805165 1.144035 0.619901\nv -3.805165 1.144035 0.632412\nv -3.796318 1.152882 0.635901\nv -3.780318 1.152882 0.619901\nv -3.796318 1.159142 0.605175\nv -3.833405 1.152882 0.619901\nv -3.849405 1.159142 0.605175\nv -3.865405 1.152882 0.619901\nv -3.849405 1.152882 0.635901\nv -3.840558 1.144035 0.632412\nv -3.840558 1.144035 0.619901\nv -3.836894 1.147700 0.619901\nv -4.311192 0.437689 0.921437\nv -4.322404 0.449248 0.921437\nv -4.336040 0.446536 0.921437\nv -4.336040 0.446536 0.908926\nv -4.327192 0.437689 0.905437\nv -4.311192 0.437689 0.905437\nv -3.865405 0.437689 0.921437\nv -3.865405 0.437689 0.905437\nv -3.849405 0.437689 0.905437\nv -3.840558 0.446536 0.908926\nv -3.840558 0.446536 0.921437\nv -3.854193 0.449248 0.921437\nv -4.327192 0.506776 0.921437\nv -4.338751 0.485988 0.921437\nv -4.318345 0.481930 0.921437\nv -4.318345 0.481930 0.933949\nv -4.327192 0.490776 0.937437\nv -4.327192 0.506776 0.937437\nv -4.327192 1.083795 0.921437\nv -4.327192 1.083795 0.937437\nv -4.327192 1.099795 0.937437\nv -4.318345 1.108642 0.933949\nv -4.318345 1.108642 0.921437\nv -4.338751 1.104583 0.921437\nv -3.891949 0.464233 0.921437\nv -3.871161 0.452674 0.921437\nv -3.867102 0.473080 0.921437\nv -3.867102 0.473080 0.933949\nv -3.875949 0.464233 0.937437\nv -3.891949 0.464233 0.937437\nv -4.284648 0.464233 0.921437\nv -4.284648 0.464233 0.937437\nv -4.300648 0.464233 0.937437\nv -4.309495 0.473080 0.933949\nv -4.309495 0.473080 0.921437\nv -4.305436 0.452674 0.921437\nv -3.891949 0.464233 1.433200\nv -3.891949 0.464233 1.417200\nv -3.875949 0.464233 1.417200\nv -3.867102 0.473080 1.420688\nv -3.867102 0.473080 1.433200\nv -3.882576 0.480233 1.433200\nv -4.284648 0.464233 1.433200\nv -4.294021 0.480233 1.433200\nv -4.309495 0.473080 1.433200\nv -4.309495 0.473080 1.420688\nv -4.300648 0.464233 1.417200\nv -4.284648 0.464233 1.417200\nv -4.327192 0.506776 1.433200\nv -4.327192 0.506776 1.417200\nv -4.327192 0.490776 1.417200\nv -4.318345 0.481930 1.420688\nv -4.318345 0.481930 1.433200\nv -4.311192 0.497404 1.433200\nv -4.327192 1.083795 1.433200\nv -4.311192 1.093168 1.433200\nv -4.318345 1.108642 1.433200\nv -4.318345 1.108642 1.420688\nv -4.327192 1.099795 1.417200\nv -4.327192 1.083795 1.417200\nv -4.257935 0.576034 1.433200\nv -4.273935 0.553406 1.433200\nv -4.249087 0.551186 1.433200\nv -4.243668 0.556606 1.443302\nv -4.251249 0.567023 1.445945\nv -4.250502 0.585591 1.447369\nv -4.257935 1.014538 1.433200\nv -4.250502 1.004980 1.447369\nv -4.251249 1.023548 1.445945\nv -4.243668 1.033965 1.443302\nv -4.249087 1.039385 1.433200\nv -4.273935 1.037165 1.433200\nv -3.961206 0.533490 1.433200\nv -3.938579 0.517490 1.433200\nv -3.936359 0.542337 1.433200\nv -3.941779 0.547757 1.443302\nv -3.952196 0.540176 1.445945\nv -3.970764 0.540922 1.447369\nv -4.215391 0.533490 1.433200\nv -4.205833 0.540922 1.447369\nv -4.224401 0.540176 1.445945\nv -4.234818 0.547757 1.443302\nv -4.240238 0.542337 1.433200\nv -4.238019 0.517490 1.433200\nv -4.198004 0.638688 1.547444\nv -4.205437 0.632705 1.533275\nv -4.204690 0.615698 1.534698\nv -4.194118 0.607319 1.536742\nv -4.188250 0.612933 1.547444\nv -4.182004 0.629315 1.547444\nv -4.198004 0.951883 1.547444\nv -4.182004 0.961256 1.547444\nv -4.188250 0.977638 1.547444\nv -4.194118 0.983253 1.536742\nv -4.204690 0.974874 1.534698\nv -4.205437 0.957867 1.533275\nv -4.023860 0.593420 1.547444\nv -4.017877 0.585987 1.533275\nv -4.000871 0.586734 1.534698\nv -3.992491 0.597306 1.536742\nv -3.998106 0.603175 1.547444\nv -4.014488 0.609420 1.547444\nv -4.152737 0.593420 1.547444\nv -4.162109 0.609420 1.547444\nv -4.178491 0.603175 1.547444\nv -4.184106 0.597306 1.536742\nv -4.175726 0.586734 1.534698\nv -4.158720 0.585987 1.533275\nv -3.831708 0.455386 0.921437\nv -3.831708 0.455386 0.908926\nv -3.822861 0.464233 0.905437\nv -3.814014 0.455386 0.908926\nv -3.814014 0.455386 0.921437\nv -3.814014 0.473080 0.921437\nv -3.831708 0.473080 0.921437\nv -3.831708 0.455386 0.619901\nv -3.822861 0.455386 0.619901\nv -3.814014 0.455386 0.619901\nv -3.814014 0.455386 0.632412\nv -3.822861 0.464233 0.635901\nv -3.831708 0.455386 0.632412\nv -3.858252 0.481930 0.921437\nv -3.837846 0.485988 0.921437\nv -3.849405 0.506776 0.921437\nv -3.849405 0.506776 0.937437\nv -3.849405 0.490776 0.937437\nv -3.858252 0.481930 0.933949\nv -3.858252 0.481930 1.433200\nv -3.858252 0.481930 1.420688\nv -3.849405 0.490776 1.417200\nv -3.849405 0.506776 1.417200\nv -3.849405 0.506776 1.433200\nv -3.865405 0.497404 1.433200\nv -3.927510 0.551186 1.433200\nv -3.902662 0.553406 1.433200\nv -3.918662 0.576034 1.433200\nv -3.926095 0.585591 1.447369\nv -3.925348 0.567023 1.445945\nv -3.932930 0.556606 1.443302\nv -3.988347 0.612933 1.547444\nv -3.982478 0.607319 1.536742\nv -3.971906 0.615698 1.534698\nv -3.971160 0.632705 1.533275\nv -3.978593 0.638688 1.547444\nv -3.994593 0.629315 1.547444\nv -4.344889 0.455386 0.921437\nv -4.342176 0.469021 0.921437\nv -4.353735 0.480233 0.921437\nv -4.353735 0.480233 0.905437\nv -4.353735 0.464233 0.905437\nv -4.344889 0.455386 0.908926\nv -3.469997 0.586734 1.534698\nv -3.461618 0.597306 1.536742\nv -3.467232 0.603175 1.547444\nv -3.483614 0.609420 1.547444\nv -3.492986 0.593420 1.547444\nv -3.487003 0.585987 1.533275\nv -3.421322 0.540176 1.445945\nv -3.439890 0.540922 1.447369\nv -3.430332 0.533490 1.433200\nv -3.407705 0.517490 1.433200\nv -3.405485 0.542337 1.433200\nv -3.410905 0.547757 1.443302\nv -3.394475 0.567023 1.445945\nv -3.402056 0.556606 1.443302\nv -3.396635 0.551186 1.433200\nv -3.371789 0.553406 1.433200\nv -3.387789 0.576034 1.433200\nv -3.395221 0.585591 1.447369\nv -3.441033 0.615698 1.534698\nv -3.440285 0.632705 1.533275\nv -3.447718 0.638688 1.547444\nv -3.463718 0.629315 1.547444\nv -3.457474 0.612933 1.547444\nv -3.451604 0.607319 1.536742\nv -3.345074 0.464233 1.417200\nv -3.336228 0.473080 1.420688\nv -3.336228 0.473080 1.433200\nv -3.351702 0.480233 1.433200\nv -3.361074 0.464233 1.433200\nv -3.361074 0.464233 1.417200\nv -3.345074 0.464233 0.937437\nv -3.361074 0.464233 0.937437\nv -3.361074 0.464233 0.921437\nv -3.340286 0.452674 0.921437\nv -3.336228 0.473080 0.921437\nv -3.336228 0.473080 0.933949\nv -3.318531 0.490776 0.937437\nv -3.327378 0.481930 0.933949\nv -3.327378 0.481930 0.921437\nv -3.306972 0.485988 0.921437\nv -3.318531 0.506776 0.921437\nv -3.318531 0.506776 0.937437\nv -3.318531 0.490776 1.417200\nv -3.318531 0.506776 1.417200\nv -3.318531 0.506776 1.433200\nv -3.334531 0.497404 1.433200\nv -3.327378 0.481930 1.433200\nv -3.327378 0.481930 1.420688\nv -3.318531 0.437689 0.905437\nv -3.309684 0.446536 0.908926\nv -3.309684 0.446536 0.921437\nv -3.323319 0.449248 0.921437\nv -3.334531 0.437689 0.921437\nv -3.334531 0.437689 0.905437\nv -3.291987 0.464233 0.905437\nv -3.291987 0.480233 0.905437\nv -3.303547 0.469021 0.921437\nv -3.300834 0.455386 0.921437\nv -3.300834 0.455386 0.908926\nv -3.673816 0.615698 1.534698\nv -3.663245 0.607319 1.536742\nv -3.657375 0.612933 1.547444\nv -3.651130 0.629315 1.547444\nv -3.667130 0.638688 1.547444\nv -3.674563 0.632705 1.533275\nv -3.720374 0.567023 1.445945\nv -3.719628 0.585591 1.447369\nv -3.727060 0.576034 1.433200\nv -3.743060 0.553406 1.433200\nv -3.718214 0.551186 1.433200\nv -3.712794 0.556606 1.443302\nv -3.693527 0.540176 1.445945\nv -3.703944 0.547757 1.443302\nv -3.709363 0.542337 1.433200\nv -3.707144 0.517490 1.433200\nv -3.684517 0.533490 1.433200\nv -3.674959 0.540922 1.447369\nv -3.644852 0.586734 1.534698\nv -3.627846 0.585987 1.533275\nv -3.621862 0.593420 1.547444\nv -3.631235 0.609420 1.547444\nv -3.647618 0.603175 1.547444\nv -3.653231 0.597306 1.536742\nv -3.796318 0.490776 1.417200\nv -3.787470 0.481930 1.420688\nv -3.787470 0.481930 1.433200\nv -3.780318 0.497404 1.433200\nv -3.796318 0.506776 1.433200\nv -3.796318 0.506776 1.417200\nv -3.796318 0.490776 0.937437\nv -3.796318 0.506776 0.937437\nv -3.796318 0.506776 0.921437\nv -3.807877 0.485988 0.921437\nv -3.787470 0.481930 0.921437\nv -3.787470 0.481930 0.933949\nv -3.769773 0.464233 0.937437\nv -3.778621 0.473080 0.933949\nv -3.778621 0.473080 0.921437\nv -3.774562 0.452674 0.921437\nv -3.753773 0.464233 0.921437\nv -3.753773 0.464233 0.937437\nv -3.769773 0.464233 1.417200\nv -3.753773 0.464233 1.417200\nv -3.753773 0.464233 1.433200\nv -3.763146 0.480233 1.433200\nv -3.778621 0.473080 1.433200\nv -3.778621 0.473080 1.420688\nv -3.796318 0.437689 0.905437\nv -3.780318 0.437689 0.905437\nv -3.780318 0.437689 0.921437\nv -3.791529 0.449248 0.921437\nv -3.805165 0.446536 0.921437\nv -3.805165 0.446536 0.908926\nv -3.387789 1.014538 1.433200\nv -3.371789 1.037165 1.433200\nv -3.396635 1.039385 1.433200\nv -3.402056 1.033965 1.443302\nv -3.394475 1.023548 1.445945\nv -3.395221 1.004980 1.447369\nv -3.318531 1.083795 1.433200\nv -3.318531 1.083795 1.417200\nv -3.318531 1.099795 1.417200\nv -3.327378 1.108642 1.420688\nv -3.327378 1.108642 1.433200\nv -3.334531 1.093168 1.433200\nv -3.318531 1.083795 0.921437\nv -3.306972 1.104583 0.921437\nv -3.327378 1.108642 0.921437\nv -3.327378 1.108642 0.933949\nv -3.318531 1.099795 0.937437\nv -3.318531 1.083795 0.937437\nv -3.291987 1.110339 0.905437\nv -3.291987 1.126339 0.905437\nv -3.300834 1.135186 0.908926\nv -3.300834 1.135186 0.921437\nv -3.303547 1.121551 0.921437\nv -3.334531 1.152882 0.921437\nv -3.323319 1.141323 0.921437\nv -3.309684 1.144035 0.921437\nv -3.309684 1.144035 0.908926\nv -3.318531 1.152882 0.905437\nv -3.334531 1.152882 0.905437\nv -3.780318 1.152882 0.921437\nv -3.780318 1.152882 0.905437\nv -3.796318 1.152882 0.905437\nv -3.805165 1.144035 0.908926\nv -3.805165 1.144035 0.921437\nv -3.791529 1.141323 0.921437\nv -3.753773 1.126339 0.921437\nv -3.774562 1.137898 0.921437\nv -3.778621 1.117492 0.921437\nv -3.778621 1.117492 0.933949\nv -3.769773 1.126339 0.937437\nv -3.753773 1.126339 0.937437\nv -3.361074 1.126339 0.921437\nv -3.361074 1.126339 0.937437\nv -3.345074 1.126339 0.937437\nv -3.336228 1.117492 0.933949\nv -3.336228 1.117492 0.921437\nv -3.340286 1.137898 0.921437\nv -3.796318 1.083795 0.921437\nv -3.796318 1.083795 0.937437\nv -3.796318 1.099795 0.937437\nv -3.787470 1.108642 0.933949\nv -3.787470 1.108642 0.921437\nv -3.807877 1.104583 0.921437\nv -3.753773 1.126339 1.433200\nv -3.753773 1.126339 1.417200\nv -3.769773 1.126339 1.417200\nv -3.778621 1.117492 1.420688\nv -3.778621 1.117492 1.433200\nv -3.763146 1.110339 1.433200\nv -3.361074 1.126339 1.433200\nv -3.351702 1.110339 1.433200\nv -3.336228 1.117492 1.433200\nv -3.336228 1.117492 1.420688\nv -3.345074 1.126339 1.417200\nv -3.361074 1.126339 1.417200\nv -3.796318 1.083795 1.433200\nv -3.780318 1.093168 1.433200\nv -3.787470 1.108642 1.433200\nv -3.787470 1.108642 1.420688\nv -3.796318 1.099795 1.417200\nv -3.796318 1.083795 1.417200\nv -3.727060 1.014538 1.433200\nv -3.719628 1.004980 1.447369\nv -3.720374 1.023548 1.445945\nv -3.712794 1.033965 1.443302\nv -3.718214 1.039385 1.433200\nv -3.743060 1.037165 1.433200\nv -3.684517 1.057082 1.433200\nv -3.707144 1.073082 1.433200\nv -3.709363 1.048234 1.433200\nv -3.703944 1.042814 1.443302\nv -3.693527 1.050395 1.445945\nv -3.674959 1.049649 1.447369\nv -3.430332 1.057082 1.433200\nv -3.439890 1.049649 1.447369\nv -3.421322 1.050395 1.445945\nv -3.410905 1.042814 1.443302\nv -3.405485 1.048234 1.433200\nv -3.407705 1.073082 1.433200\nv -3.447718 0.951883 1.547444\nv -3.440285 0.957867 1.533275\nv -3.441033 0.974874 1.534698\nv -3.451604 0.983253 1.536742\nv -3.457474 0.977638 1.547444\nv -3.463718 0.961256 1.547444\nv -3.621862 0.997151 1.547444\nv -3.627846 1.004584 1.533275\nv -3.644852 1.003838 1.534698\nv -3.653231 0.993266 1.536742\nv -3.647618 0.987397 1.547444\nv -3.631235 0.981151 1.547444\nv -3.492986 0.997151 1.547444\nv -3.483614 0.981151 1.547444\nv -3.467232 0.987397 1.547444\nv -3.461618 0.993266 1.536742\nv -3.469997 1.003838 1.534698\nv -3.487003 1.004584 1.533275\nv -3.667130 0.951883 1.547444\nv -3.651130 0.961256 1.547444\nv -3.657375 0.977638 1.547444\nv -3.663245 0.983252 1.536742\nv -3.673816 0.974874 1.534698\nv -3.674563 0.957867 1.533275\nv -3.814014 1.135186 0.921437\nv -3.814014 1.135186 0.908926\nv -3.822861 1.126339 0.905437\nv -3.831708 1.135186 0.908926\nv -3.831708 1.135186 0.921437\nv -3.831708 1.117492 0.921437\nv -3.814014 1.117492 0.921437\nv -3.814014 1.135186 0.619901\nv -3.822861 1.135186 0.619901\nv -3.831708 1.135186 0.619901\nv -3.831708 1.135186 0.632412\nv -3.822861 1.126339 0.635901\nv -3.814014 1.135186 0.632412\nv -4.175726 1.003838 1.534698\nv -4.184106 0.993266 1.536742\nv -4.178491 0.987397 1.547444\nv -4.162109 0.981151 1.547444\nv -4.152737 0.997151 1.547444\nv -4.158720 1.004584 1.533275\nv -4.224401 1.050395 1.445945\nv -4.205833 1.049649 1.447369\nv -4.215391 1.057082 1.433200\nv -4.238019 1.073082 1.433200\nv -4.240238 1.048234 1.433200\nv -4.234818 1.042814 1.443302\nv -4.300648 1.126339 1.417200\nv -4.309495 1.117492 1.420688\nv -4.309495 1.117492 1.433200\nv -4.294021 1.110339 1.433200\nv -4.284648 1.126339 1.433200\nv -4.284648 1.126339 1.417200\nv -4.300648 1.126339 0.937437\nv -4.284648 1.126339 0.937437\nv -4.284648 1.126339 0.921437\nv -4.305436 1.137898 0.921437\nv -4.309495 1.117492 0.921437\nv -4.309495 1.117492 0.933949\nv -4.327192 1.152882 0.905437\nv -4.336040 1.144035 0.908926\nv -4.336040 1.144035 0.921437\nv -4.322404 1.141323 0.921437\nv -4.311192 1.152882 0.921437\nv -4.311192 1.152882 0.905437\nv -4.353735 1.126339 0.905437\nv -4.353735 1.110339 0.905437\nv -4.353735 1.110339 0.921437\nv -4.342176 1.121551 0.921437\nv -4.344889 1.135186 0.921437\nv -4.344889 1.135186 0.908926\nv -3.971906 0.974874 1.534698\nv -3.982478 0.983253 1.536742\nv -3.988347 0.977638 1.547444\nv -3.994593 0.961256 1.547444\nv -3.978593 0.951883 1.547444\nv -3.971160 0.957867 1.533275\nv -3.925348 1.023548 1.445945\nv -3.926095 1.004980 1.447369\nv -3.918662 1.014538 1.433200\nv -3.902662 1.037165 1.433200\nv -3.927510 1.039385 1.433200\nv -3.932930 1.033965 1.443302\nv -3.952196 1.050395 1.445945\nv -3.941779 1.042814 1.443302\nv -3.936359 1.048234 1.433200\nv -3.938579 1.073082 1.433200\nv -3.961206 1.057082 1.433200\nv -3.970764 1.049649 1.447369\nv -4.000871 1.003838 1.534698\nv -4.017877 1.004584 1.533275\nv -4.023860 0.997151 1.547444\nv -4.014488 0.981151 1.547444\nv -3.998106 0.987397 1.547444\nv -3.992491 0.993266 1.536742\nv -3.849405 1.099795 1.417200\nv -3.858252 1.108642 1.420688\nv -3.858252 1.108642 1.433200\nv -3.865405 1.093168 1.433200\nv -3.849405 1.083795 1.433200\nv -3.849405 1.083795 1.417200\nv -3.849405 1.099795 0.937437\nv -3.849405 1.083795 0.937437\nv -3.849405 1.083795 0.921437\nv -3.837846 1.104583 0.921437\nv -3.858252 1.108642 0.921437\nv -3.858252 1.108642 0.933949\nv -3.875949 1.126339 0.937437\nv -3.867102 1.117492 0.933949\nv -3.867102 1.117492 0.921437\nv -3.871161 1.137898 0.921437\nv -3.891949 1.126339 0.921437\nv -3.891949 1.126339 0.937437\nv -3.875949 1.126339 1.417200\nv -3.891949 1.126339 1.417200\nv -3.891949 1.126339 1.433200\nv -3.882576 1.110339 1.433200\nv -3.867102 1.117492 1.433200\nv -3.867102 1.117492 1.420688\nv -3.849405 1.152882 0.905437\nv -3.865405 1.152882 0.905437\nv -3.865405 1.152882 0.921437\nv -3.854193 1.141323 0.921437\nv -3.840558 1.144035 0.921437\nv -3.840558 1.144035 0.908926\nv -4.214062 1.128550 1.281173\nv -4.183198 1.133186 1.355686\nv -4.108684 1.135106 1.386551\nv -4.034171 1.133186 1.355686\nv -4.003307 1.128550 1.281173\nv -4.108684 1.183624 1.168099\nv -4.183198 1.191482 1.198222\nv -4.214062 1.210450 1.270945\nv -4.183198 1.229419 1.343668\nv -4.108684 1.237277 1.373791\nv -4.034171 1.229419 1.343668\nv -4.003307 1.210450 1.270945\nv -4.034171 1.191482 1.198222\nv -4.108684 1.234379 1.147470\nv -4.183198 1.249766 1.174532\nv -4.214062 1.286911 1.239866\nv -4.183198 1.324058 1.305202\nv -4.108684 1.339444 1.332264\nv -4.034171 1.324058 1.305202\nv -4.003307 1.286911 1.239866\nv -4.034171 1.249766 1.174532\nv -4.108684 1.278064 1.114405\nv -4.183198 1.299931 1.136562\nv -4.214062 1.352722 1.190056\nv -4.183198 1.405514 1.243549\nv -4.108684 1.427382 1.265706\nv -4.034171 1.405514 1.243549\nv -4.003307 1.352722 1.190056\nv -4.034171 1.299931 1.136562\nv -4.108684 1.311702 1.071160\nv -4.183198 1.338559 1.086902\nv -4.214062 1.403398 1.124909\nv -4.183198 1.468237 1.162914\nv -4.108684 1.495094 1.178656\nv -4.034171 1.468237 1.162914\nv -4.003307 1.403398 1.124909\nv -4.034171 1.338559 1.086902\nv -4.108684 1.333002 1.020678\nv -4.183198 1.363018 1.028934\nv -4.214062 1.435483 1.048864\nv -4.183198 1.507948 1.068794\nv -4.108684 1.537964 1.077050\nv -4.034171 1.507948 1.068794\nv -4.003307 1.435483 1.048864\nv -4.034171 1.363018 1.028934\nv -4.108684 1.341432 0.959773\nv -4.183198 1.372291 0.961937\nv -4.214062 1.446791 0.967162\nv -4.183198 1.521292 0.972387\nv -4.108684 1.552151 0.974551\nv -4.034171 1.521292 0.972387\nv -4.003307 1.446791 0.967162\nv -4.034171 1.372291 0.961937\nv -4.034171 1.126339 1.206358\nv -4.183198 1.126339 1.206358\nv -4.108684 1.126339 1.175254\nv -4.003307 1.126339 1.281173\nv -4.034171 1.126339 1.355686\nv -4.108684 1.126339 1.386551\nv -4.183198 1.126339 1.355686\nv -4.214062 1.126339 1.281173\nv -4.018036 1.126339 1.245612\nv -4.199332 1.126339 1.245612\nv -4.034171 1.374158 0.364684\nv -4.003307 1.448672 0.364684\nv -4.034171 1.523186 0.364684\nv -4.108684 1.554050 0.364684\nv -4.183198 1.523186 0.364684\nv -4.214062 1.448672 0.364684\nv -4.183198 1.374158 0.364684\nv -4.108684 1.343294 0.364684\nv -4.034171 1.374158 0.216889\nv -4.003307 1.448672 0.216889\nv -4.034171 1.523186 0.216889\nv -4.108684 1.554050 0.216889\nv -4.183198 1.523186 0.216889\nv -4.214062 1.448672 0.216889\nv -4.183198 1.374158 0.216889\nv -4.108684 1.343294 0.216889\nv -4.002153 1.600482 0.216889\nv -4.002153 1.600482 0.364684\nv -4.076666 1.631347 0.364684\nv -4.076666 1.631347 0.216889\nv -3.515969 1.631347 0.216889\nv -3.515969 1.631347 0.364684\nv -3.590482 1.600482 0.364684\nv -3.590482 1.600482 0.216889\nv -3.483951 1.343294 0.216889\nv -3.409438 1.374158 0.216889\nv -3.378574 1.448672 0.216889\nv -3.409438 1.523186 0.216889\nv -3.483951 1.554050 0.216889\nv -3.558465 1.523186 0.216889\nv -3.589329 1.448672 0.216889\nv -3.558465 1.374158 0.216889\nv -3.483951 1.343294 0.364684\nv -3.409438 1.374158 0.364684\nv -3.378574 1.448672 0.364684\nv -3.409438 1.523186 0.364684\nv -3.483951 1.554050 0.364684\nv -3.558465 1.523186 0.364684\nv -3.589329 1.448672 0.364684\nv -3.558465 1.374158 0.364684\nv -3.393303 1.126339 1.245612\nv -3.574599 1.126339 1.245612\nv -3.378574 1.126339 1.281173\nv -3.409438 1.126339 1.355686\nv -3.483951 1.126339 1.386551\nv -3.558465 1.126339 1.355686\nv -3.589329 1.126339 1.281173\nv -3.483951 1.126339 1.175254\nv -3.409438 1.126339 1.206358\nv -3.558465 1.126339 1.206358\nv -3.558465 1.372291 0.961937\nv -3.589329 1.446791 0.967162\nv -3.558465 1.521292 0.972387\nv -3.483951 1.552151 0.974551\nv -3.409438 1.521292 0.972387\nv -3.378574 1.446791 0.967162\nv -3.409438 1.372291 0.961937\nv -3.483951 1.341432 0.959773\nv -3.558465 1.363018 1.028934\nv -3.589329 1.435483 1.048864\nv -3.558465 1.507948 1.068794\nv -3.483951 1.537964 1.077050\nv -3.409438 1.507948 1.068794\nv -3.378574 1.435483 1.048864\nv -3.409438 1.363018 1.028934\nv -3.483951 1.333002 1.020678\nv -3.558465 1.338559 1.086902\nv -3.589329 1.403398 1.124909\nv -3.558465 1.468237 1.162914\nv -3.483951 1.495094 1.178656\nv -3.409438 1.468237 1.162914\nv -3.378574 1.403398 1.124909\nv -3.409438 1.338559 1.086902\nv -3.483951 1.311702 1.071160\nv -3.558465 1.299931 1.136562\nv -3.589329 1.352722 1.190056\nv -3.558465 1.405514 1.243549\nv -3.483951 1.427382 1.265706\nv -3.409438 1.405514 1.243549\nv -3.378574 1.352722 1.190056\nv -3.409438 1.299931 1.136562\nv -3.483951 1.278064 1.114405\nv -3.558465 1.249766 1.174532\nv -3.589329 1.286911 1.239866\nv -3.558465 1.324058 1.305202\nv -3.483951 1.339444 1.332264\nv -3.409438 1.324058 1.305202\nv -3.378574 1.286911 1.239866\nv -3.409438 1.249766 1.174532\nv -3.483951 1.234379 1.147470\nv -3.558465 1.191482 1.198222\nv -3.589329 1.210450 1.270945\nv -3.558465 1.229419 1.343668\nv -3.483951 1.237277 1.373791\nv -3.409438 1.229419 1.343668\nv -3.378574 1.210450 1.270945\nv -3.409438 1.191482 1.198222\nv -3.483951 1.183624 1.168099\nv -3.589329 1.128550 1.281173\nv -3.558465 1.133186 1.355686\nv -3.483951 1.135106 1.386551\nv -3.409438 1.133186 1.355686\nv -3.378574 1.128550 1.281173\nv -3.515969 1.776170 0.278045\nv -4.076666 1.776170 0.278045\nv -4.076666 1.776170 0.216889\nv -3.515969 1.776170 0.216889\nv -3.515969 1.776170 -0.194902\nv -4.076666 1.776170 -0.194902\nv -4.076666 1.776170 -0.256059\nv -3.515969 1.776170 -0.256059\nv -3.378574 1.128550 -1.259187\nv -3.409438 1.133186 -1.333701\nv -3.483951 1.135106 -1.364566\nv -3.558465 1.133186 -1.333701\nv -3.589329 1.128550 -1.259187\nv -3.483951 1.183624 -1.146114\nv -3.409438 1.191482 -1.176236\nv -3.378574 1.210450 -1.248959\nv -3.409438 1.229419 -1.321682\nv -3.483951 1.237277 -1.351806\nv -3.558465 1.229419 -1.321682\nv -3.589329 1.210450 -1.248959\nv -3.558465 1.191482 -1.176236\nv -3.483951 1.234379 -1.125483\nv -3.409438 1.249766 -1.152546\nv -3.378574 1.286911 -1.217881\nv -3.409438 1.324058 -1.283216\nv -3.483951 1.339444 -1.310278\nv -3.558465 1.324058 -1.283216\nv -3.589329 1.286911 -1.217881\nv -3.558465 1.249766 -1.152546\nv -3.483951 1.278064 -1.092419\nv -3.409438 1.299931 -1.114577\nv -3.378574 1.352722 -1.168070\nv -3.409438 1.405514 -1.221563\nv -3.483951 1.427382 -1.243721\nv -3.558465 1.405514 -1.221563\nv -3.589329 1.352722 -1.168070\nv -3.558465 1.299931 -1.114577\nv -3.483951 1.311702 -1.049174\nv -3.409438 1.338559 -1.064917\nv -3.378574 1.403398 -1.102922\nv -3.409438 1.468237 -1.140928\nv -3.483951 1.495094 -1.156670\nv -3.558465 1.468237 -1.140928\nv -3.589329 1.403398 -1.102922\nv -3.558465 1.338559 -1.064917\nv -3.483951 1.333002 -0.998692\nv -3.409438 1.363018 -1.006948\nv -3.378574 1.435483 -1.026878\nv -3.409438 1.507948 -1.046809\nv -3.483951 1.537964 -1.055064\nv -3.558465 1.507948 -1.046809\nv -3.589329 1.435483 -1.026878\nv -3.558465 1.363018 -1.006948\nv -3.483951 1.341432 -0.937787\nv -3.409438 1.372291 -0.939951\nv -3.378574 1.446791 -0.945176\nv -3.409438 1.521292 -0.950402\nv -3.483951 1.552151 -0.952566\nv -3.558465 1.521292 -0.950402\nv -3.589329 1.446791 -0.945176\nv -3.558465 1.372291 -0.939951\nv -3.558465 1.126339 -1.184372\nv -3.409438 1.126339 -1.184372\nv -3.483951 1.126339 -1.153268\nv -3.589329 1.126339 -1.259187\nv -3.558465 1.126339 -1.333701\nv -3.483951 1.126339 -1.364566\nv -3.409438 1.126339 -1.333701\nv -3.378574 1.126339 -1.259187\nv -3.574599 1.126339 -1.223626\nv -3.393303 1.126339 -1.223626\nv -3.558465 1.374158 -0.342698\nv -3.589329 1.448672 -0.342698\nv -3.558465 1.523186 -0.342698\nv -3.483951 1.554050 -0.342698\nv -3.409438 1.523186 -0.342698\nv -3.378574 1.448672 -0.342698\nv -3.409438 1.374158 -0.342698\nv -3.483951 1.343294 -0.342698\nv -3.558465 1.374158 -0.194902\nv -3.589329 1.448672 -0.194902\nv -3.558465 1.523186 -0.194902\nv -3.483951 1.554050 -0.194902\nv -3.409438 1.523186 -0.194902\nv -3.378574 1.448672 -0.194902\nv -3.409438 1.374158 -0.194902\nv -3.483951 1.343294 -0.194902\nv -3.590482 1.600482 -0.194902\nv -3.590482 1.600482 -0.342698\nv -3.515969 1.631347 -0.342698\nv -3.515969 1.631347 -0.194902\nv -4.076666 1.631347 -0.194902\nv -4.076666 1.631347 -0.342698\nv -4.002153 1.600482 -0.342698\nv -4.002153 1.600482 -0.194902\nv -4.108684 1.343294 -0.194902\nv -4.183198 1.374158 -0.194902\nv -4.214062 1.448672 -0.194902\nv -4.183198 1.523186 -0.194902\nv -4.108684 1.554050 -0.194902\nv -4.034171 1.523186 -0.194902\nv -4.003307 1.448672 -0.194902\nv -4.034171 1.374158 -0.194902\nv -4.108684 1.343294 -0.342698\nv -4.183198 1.374158 -0.342698\nv -4.214062 1.448672 -0.342698\nv -4.183198 1.523186 -0.342698\nv -4.108684 1.554050 -0.342698\nv -4.034171 1.523186 -0.342698\nv -4.003307 1.448672 -0.342698\nv -4.034171 1.374158 -0.342698\nv -4.199332 1.126339 -1.223626\nv -4.018036 1.126339 -1.223626\nv -4.214062 1.126339 -1.259187\nv -4.183198 1.126339 -1.333701\nv -4.108684 1.126339 -1.364566\nv -4.034171 1.126339 -1.333701\nv -4.003307 1.126339 -1.259187\nv -4.108684 1.126339 -1.153268\nv -4.183198 1.126339 -1.184372\nv -4.034171 1.126339 -1.184372\nv -4.034171 1.372291 -0.939951\nv -4.003307 1.446791 -0.945176\nv -4.034171 1.521292 -0.950402\nv -4.108684 1.552151 -0.952566\nv -4.183198 1.521292 -0.950402\nv -4.214062 1.446791 -0.945176\nv -4.183198 1.372291 -0.939951\nv -4.108684 1.341432 -0.937787\nv -4.034171 1.363018 -1.006948\nv -4.003307 1.435483 -1.026878\nv -4.034171 1.507948 -1.046809\nv -4.108684 1.537964 -1.055064\nv -4.183198 1.507948 -1.046809\nv -4.214062 1.435483 -1.026878\nv -4.183198 1.363018 -1.006948\nv -4.108684 1.333002 -0.998692\nv -4.034171 1.338559 -1.064917\nv -4.003307 1.403398 -1.102922\nv -4.034171 1.468237 -1.140928\nv -4.108684 1.495094 -1.156670\nv -4.183198 1.468237 -1.140928\nv -4.214062 1.403398 -1.102922\nv -4.183198 1.338559 -1.064917\nv -4.108684 1.311702 -1.049174\nv -4.034171 1.299931 -1.114577\nv -4.003307 1.352722 -1.168070\nv -4.034171 1.405514 -1.221563\nv -4.108684 1.427382 -1.243721\nv -4.183198 1.405514 -1.221563\nv -4.214062 1.352722 -1.168070\nv -4.183198 1.299931 -1.114577\nv -4.108684 1.278064 -1.092419\nv -4.034171 1.249766 -1.152546\nv -4.003307 1.286911 -1.217881\nv -4.034171 1.324058 -1.283216\nv -4.108684 1.339444 -1.310278\nv -4.183198 1.324058 -1.283216\nv -4.214062 1.286911 -1.217881\nv -4.183198 1.249766 -1.152546\nv -4.108684 1.234379 -1.125483\nv -4.034171 1.191482 -1.176236\nv -4.003307 1.210450 -1.248959\nv -4.034171 1.229419 -1.321682\nv -4.108684 1.237277 -1.351806\nv -4.183198 1.229419 -1.321682\nv -4.214062 1.210450 -1.248959\nv -4.183198 1.191482 -1.176236\nv -4.108684 1.183624 -1.146114\nv -4.003307 1.128550 -1.259187\nv -4.034171 1.133186 -1.333701\nv -4.108684 1.135106 -1.364566\nv -4.183198 1.133186 -1.333701\nv -4.214062 1.128550 -1.259187\nv -3.668748 0.462021 1.281173\nv -3.637883 0.457386 1.355686\nv -3.563370 0.455466 1.386551\nv -3.488857 0.457386 1.355686\nv -3.457992 0.462021 1.281173\nv -3.563370 0.406947 1.168099\nv -3.637883 0.399090 1.198222\nv -3.668748 0.380121 1.270945\nv -3.637883 0.361152 1.343668\nv -3.563370 0.353294 1.373791\nv -3.488857 0.361152 1.343668\nv -3.457992 0.380121 1.270945\nv -3.488857 0.399090 1.198222\nv -3.563370 0.356193 1.147470\nv -3.637883 0.340806 1.174532\nv -3.668748 0.303660 1.239866\nv -3.637883 0.266514 1.305202\nv -3.563370 0.251127 1.332264\nv -3.488857 0.266514 1.305202\nv -3.457992 0.303660 1.239866\nv -3.488857 0.340806 1.174532\nv -3.563370 0.312507 1.114405\nv -3.637883 0.290641 1.136562\nv -3.668748 0.237849 1.190056\nv -3.637883 0.185057 1.243549\nv -3.563370 0.163190 1.265706\nv -3.488857 0.185057 1.243549\nv -3.457992 0.237849 1.190056\nv -3.488857 0.290641 1.136562\nv -3.563370 0.278870 1.071160\nv -3.637883 0.252013 1.086902\nv -3.668748 0.187174 1.124909\nv -3.637883 0.122335 1.162914\nv -3.563370 0.095478 1.178656\nv -3.488857 0.122335 1.162914\nv -3.457992 0.187174 1.124909\nv -3.488857 0.252013 1.086902\nv -3.563370 0.257570 1.020678\nv -3.637883 0.227554 1.028934\nv -3.668748 0.155088 1.048864\nv -3.637883 0.082623 1.068794\nv -3.563370 0.052607 1.077050\nv -3.488857 0.082623 1.068794\nv -3.457992 0.155088 1.048864\nv -3.488857 0.227554 1.028934\nv -3.563370 0.249140 0.959773\nv -3.637883 0.218281 0.961937\nv -3.668748 0.143780 0.967162\nv -3.637883 0.069279 0.972387\nv -3.563370 0.038421 0.974551\nv -3.488857 0.069280 0.972387\nv -3.457992 0.143780 0.967162\nv -3.488857 0.218281 0.961937\nv -3.488857 0.464233 1.206358\nv -3.637883 0.464233 1.206358\nv -3.563370 0.464233 1.175254\nv -3.457992 0.464233 1.281173\nv -3.488857 0.464233 1.355686\nv -3.563370 0.464233 1.386551\nv -3.637883 0.464233 1.355686\nv -3.668748 0.464233 1.281173\nv -3.472722 0.464233 1.245612\nv -3.654018 0.464233 1.245612\nv -3.488857 0.216414 0.599118\nv -3.457992 0.141899 0.599118\nv -3.488857 0.067386 0.599118\nv -3.563370 0.036522 0.599118\nv -3.637883 0.067386 0.599118\nv -3.668748 0.141899 0.599118\nv -3.637883 0.216414 0.599118\nv -3.563370 0.247278 0.599118\nv -3.488857 0.216414 0.542302\nv -3.637883 0.216414 0.542302\nv -3.637883 0.067386 0.542302\nv -3.488857 0.067386 0.542302\nv -3.822861 0.324671 0.542302\nv -3.380599 0.324671 0.542302\nv -4.402727 0.324671 0.542302\nv -4.156867 0.067386 0.542302\nv -4.007839 0.067386 0.542302\nv -4.007839 0.216414 0.542302\nv -4.156867 0.216414 0.542302\nv -4.082353 0.247278 0.599118\nv -4.007839 0.216414 0.599118\nv -3.976975 0.141899 0.599118\nv -4.007839 0.067386 0.599118\nv -4.082353 0.036522 0.599118\nv -4.156867 0.067386 0.599118\nv -4.187730 0.141899 0.599118\nv -4.156867 0.216414 0.599118\nv -3.991705 0.464233 1.245612\nv -4.173001 0.464233 1.245612\nv -3.976975 0.464233 1.281173\nv -4.007839 0.464233 1.355686\nv -4.082353 0.464233 1.386551\nv -4.156867 0.464233 1.355686\nv -4.187730 0.464233 1.281173\nv -4.082353 0.464233 1.175254\nv -4.007839 0.464233 1.206358\nv -4.156867 0.464233 1.206358\nv -4.156867 0.218281 0.961937\nv -4.187730 0.143780 0.967162\nv -4.156867 0.069280 0.972387\nv -4.082353 0.038421 0.974551\nv -4.007839 0.069279 0.972387\nv -3.976975 0.143780 0.967162\nv -4.007839 0.218281 0.961937\nv -4.082353 0.249140 0.959773\nv -4.156867 0.227554 1.028934\nv -4.187730 0.155088 1.048864\nv -4.156867 0.082623 1.068794\nv -4.082353 0.052607 1.077050\nv -4.007839 0.082623 1.068794\nv -3.976975 0.155088 1.048864\nv -4.007839 0.227554 1.028934\nv -4.082353 0.257570 1.020678\nv -4.156867 0.252013 1.086902\nv -4.187730 0.187174 1.124909\nv -4.156867 0.122335 1.162914\nv -4.082353 0.095478 1.178656\nv -4.007839 0.122335 1.162914\nv -3.976975 0.187174 1.124909\nv -4.007839 0.252013 1.086902\nv -4.082353 0.278870 1.071160\nv -4.156867 0.290641 1.136562\nv -4.187730 0.237849 1.190056\nv -4.156867 0.185057 1.243549\nv -4.082353 0.163190 1.265706\nv -4.007839 0.185057 1.243549\nv -3.976975 0.237849 1.190056\nv -4.007839 0.290641 1.136562\nv -4.082353 0.312507 1.114405\nv -4.156867 0.340806 1.174532\nv -4.187730 0.303660 1.239866\nv -4.156867 0.266514 1.305202\nv -4.082353 0.251127 1.332264\nv -4.007839 0.266514 1.305202\nv -3.976975 0.303660 1.239866\nv -4.007839 0.340806 1.174532\nv -4.082353 0.356193 1.147470\nv -4.156867 0.399090 1.198222\nv -4.187730 0.380121 1.270945\nv -4.156867 0.361152 1.343668\nv -4.082353 0.353294 1.373791\nv -4.007839 0.361152 1.343668\nv -3.976975 0.380121 1.270945\nv -4.007839 0.399090 1.198222\nv -4.082353 0.406947 1.168099\nv -4.187730 0.462021 1.281173\nv -4.156867 0.457386 1.355686\nv -4.082353 0.455466 1.386551\nv -4.007839 0.457386 1.355686\nv -3.976975 0.462021 1.281173\nv -3.380599 -0.040871 0.489215\nv -3.380599 0.012216 0.542302\nv -4.402727 0.012216 0.542302\nv -4.402727 -0.040871 0.489215\nv -4.402727 -0.040871 -0.460100\nv -4.402727 0.012216 -0.513187\nv -3.380599 0.012216 -0.513187\nv -3.380599 -0.040871 -0.460100\nv -3.976975 0.462021 -1.252058\nv -4.007839 0.457386 -1.326571\nv -4.082353 0.455466 -1.357436\nv -4.156867 0.457386 -1.326571\nv -4.187730 0.462021 -1.252058\nv -4.082353 0.406947 -1.138983\nv -4.007839 0.399090 -1.169106\nv -3.976975 0.380121 -1.241830\nv -4.007839 0.361152 -1.314553\nv -4.082353 0.353294 -1.344676\nv -4.156867 0.361152 -1.314553\nv -4.187730 0.380121 -1.241830\nv -4.156867 0.399090 -1.169106\nv -4.082353 0.356193 -1.118354\nv -4.007839 0.340806 -1.145417\nv -3.976975 0.303660 -1.210751\nv -4.007839 0.266514 -1.276086\nv -4.082353 0.251127 -1.303149\nv -4.156867 0.266514 -1.276086\nv -4.187730 0.303660 -1.210751\nv -4.156867 0.340806 -1.145417\nv -4.082353 0.312507 -1.085290\nv -4.007839 0.290641 -1.107447\nv -3.976975 0.237849 -1.160941\nv -4.007839 0.185057 -1.214434\nv -4.082353 0.163190 -1.236591\nv -4.156867 0.185057 -1.214434\nv -4.187730 0.237849 -1.160941\nv -4.156867 0.290641 -1.107447\nv -4.082353 0.278870 -1.042045\nv -4.007839 0.252013 -1.057787\nv -3.976975 0.187174 -1.095793\nv -4.007839 0.122335 -1.133798\nv -4.082353 0.095478 -1.149541\nv -4.156867 0.122335 -1.133798\nv -4.187730 0.187174 -1.095793\nv -4.156867 0.252013 -1.057787\nv -4.082353 0.257570 -0.991562\nv -4.007839 0.227554 -0.999818\nv -3.976975 0.155088 -1.019749\nv -4.007839 0.082623 -1.039679\nv -4.082353 0.052607 -1.047934\nv -4.156867 0.082623 -1.039679\nv -4.187730 0.155088 -1.019749\nv -4.156867 0.227554 -0.999818\nv -4.082353 0.249140 -0.930658\nv -4.007839 0.218281 -0.932822\nv -3.976975 0.143780 -0.938046\nv -4.007839 0.069279 -0.943271\nv -4.082353 0.038421 -0.945435\nv -4.156867 0.069280 -0.943271\nv -4.187730 0.143780 -0.938046\nv -4.156867 0.218281 -0.932822\nv -4.156867 0.464233 -1.177242\nv -4.007839 0.464233 -1.177242\nv -4.082353 0.464233 -1.146138\nv -4.187730 0.464233 -1.252058\nv -4.156867 0.464233 -1.326571\nv -4.082353 0.464233 -1.357436\nv -4.007839 0.464233 -1.326571\nv -3.976975 0.464233 -1.252058\nv -4.173001 0.464233 -1.216497\nv -3.991705 0.464233 -1.216497\nv -4.156867 0.216414 -0.570002\nv -4.187730 0.141899 -0.570002\nv -4.156867 0.067386 -0.570002\nv -4.082353 0.036522 -0.570002\nv -4.007839 0.067386 -0.570002\nv -3.976975 0.141899 -0.570002\nv -4.007839 0.216414 -0.570002\nv -4.082353 0.247278 -0.570002\nv -4.156867 0.216414 -0.513187\nv -4.007839 0.216414 -0.513187\nv -4.007839 0.067386 -0.513187\nv -4.156867 0.067386 -0.513187\nv -4.402727 0.324671 -0.513187\nv -3.380599 0.324671 -0.513187\nv -3.822861 0.324671 -0.513187\nv -3.488857 0.067386 -0.513187\nv -3.637883 0.067386 -0.513187\nv -3.637883 0.216414 -0.513187\nv -3.488857 0.216414 -0.513187\nv -3.563370 0.247278 -0.570002\nv -3.637883 0.216414 -0.570002\nv -3.668748 0.141899 -0.570002\nv -3.637883 0.067386 -0.570002\nv -3.563370 0.036522 -0.570002\nv -3.488857 0.067386 -0.570002\nv -3.457992 0.141899 -0.570002\nv -3.488857 0.216414 -0.570002\nv -3.654018 0.464233 -1.216497\nv -3.472722 0.464233 -1.216497\nv -3.668748 0.464233 -1.252058\nv -3.637883 0.464233 -1.326571\nv -3.563370 0.464233 -1.357436\nv -3.488857 0.464233 -1.326571\nv -3.457992 0.464233 -1.252058\nv -3.563370 0.464233 -1.146138\nv -3.637883 0.464233 -1.177242\nv -3.488857 0.464233 -1.177242\nv -3.488857 0.218281 -0.932822\nv -3.457992 0.143780 -0.938046\nv -3.488857 0.069280 -0.943271\nv -3.563370 0.038421 -0.945435\nv -3.637883 0.069279 -0.943271\nv -3.668748 0.143780 -0.938046\nv -3.637883 0.218281 -0.932822\nv -3.563370 0.249140 -0.930658\nv -3.488857 0.227554 -0.999818\nv -3.457992 0.155088 -1.019749\nv -3.488857 0.082623 -1.039679\nv -3.563370 0.052607 -1.047934\nv -3.637883 0.082623 -1.039679\nv -3.668748 0.155088 -1.019749\nv -3.637883 0.227554 -0.999818\nv -3.563370 0.257570 -0.991562\nv -3.488857 0.252013 -1.057787\nv -3.457992 0.187174 -1.095793\nv -3.488857 0.122335 -1.133798\nv -3.563370 0.095478 -1.149541\nv -3.637883 0.122335 -1.133798\nv -3.668748 0.187174 -1.095793\nv -3.637883 0.252013 -1.057787\nv -3.563370 0.278870 -1.042045\nv -3.488857 0.290641 -1.107447\nv -3.457992 0.237849 -1.160941\nv -3.488857 0.185057 -1.214434\nv -3.563370 0.163190 -1.236591\nv -3.637883 0.185057 -1.214434\nv -3.668748 0.237849 -1.160941\nv -3.637883 0.290641 -1.107447\nv -3.563370 0.312507 -1.085290\nv -3.488857 0.340806 -1.145417\nv -3.457992 0.303660 -1.210751\nv -3.488857 0.266514 -1.276086\nv -3.563370 0.251127 -1.303149\nv -3.637883 0.266514 -1.276086\nv -3.668748 0.303660 -1.210751\nv -3.637883 0.340806 -1.145417\nv -3.563370 0.356193 -1.118354\nv -3.488857 0.399090 -1.169106\nv -3.457992 0.380121 -1.241830\nv -3.488857 0.361152 -1.314553\nv -3.563370 0.353294 -1.344676\nv -3.637883 0.361152 -1.314553\nv -3.668748 0.380121 -1.241830\nv -3.637883 0.399090 -1.169106\nv -3.563370 0.406947 -1.138983\nv -3.457992 0.462021 -1.252058\nv -3.488857 0.457386 -1.326571\nv -3.563370 0.455466 -1.357436\nv -3.637883 0.457386 -1.326571\nv -3.668748 0.462021 -1.252058\nv -6.434846 0.802506 0.000000\nv -4.361941 0.641280 0.000000\nv -4.990722 0.634370 0.000000\nv -4.993025 0.611338 0.000000\nv -5.071334 0.581396 0.000000\nv -5.587258 0.583699 0.000000\nv -5.672477 0.622854 0.000000\nv -5.672477 0.666615 0.000000\nv -5.631019 0.666615 0.000000\nv -5.631019 0.689647 0.000000\nv -5.914316 0.687344 0.000000\nv -5.912013 0.638977 0.000000\nv -5.971897 0.602125 0.000000\nv -6.119303 0.604428 0.000000\nv -6.204523 0.652796 0.000000\nv -6.204523 0.703467 0.000000\nv -6.333503 0.701164 0.000000\nv -6.374961 0.714983 0.000000\nv -6.407207 0.733409 0.000000\nv -6.432542 0.765654 0.000000\nv -4.361941 0.662880 -0.080613\nv -4.990722 0.656896 -0.084068\nv -4.993025 0.636950 -0.095584\nv -5.071334 0.611019 -0.110555\nv -5.587258 0.613014 -0.109403\nv -5.672477 0.646922 -0.089826\nv -5.672477 0.684821 -0.067946\nv -5.631019 0.684821 -0.067946\nv -5.631019 0.704767 -0.056429\nv -5.914316 0.702773 -0.057581\nv -5.912013 0.660886 -0.081765\nv -5.971897 0.628971 -0.100190\nv -6.119303 0.630966 -0.099038\nv -6.204523 0.672853 -0.074855\nv -6.204523 0.716735 -0.049519\nv -6.333503 0.714741 -0.050671\nv -6.374961 0.726709 -0.043762\nv -6.407207 0.742666 -0.034549\nv -6.432542 0.770591 -0.018426\nv -4.361941 0.721893 -0.139626\nv -4.990722 0.718438 -0.145610\nv -4.993025 0.706922 -0.165556\nv -5.071334 0.691950 -0.191486\nv -5.587258 0.693102 -0.189492\nv -5.672477 0.712680 -0.155583\nv -5.672477 0.734560 -0.117685\nv -5.631019 0.734560 -0.117685\nv -5.631019 0.746077 -0.097738\nv -5.914316 0.744925 -0.099733\nv -5.912013 0.720741 -0.141620\nv -5.971897 0.702315 -0.173534\nv -6.119303 0.703467 -0.171540\nv -6.204523 0.727650 -0.129653\nv -6.204523 0.752986 -0.085770\nv -6.333503 0.751834 -0.087765\nv -6.374961 0.758744 -0.075797\nv -6.407207 0.767957 -0.059840\nv -6.432542 0.784080 -0.031914\nv -4.361941 0.802506 -0.161226\nv -4.990722 0.802506 -0.168135\nv -4.993025 0.802506 -0.191168\nv -5.071334 0.802506 -0.221110\nv -5.587258 0.802506 -0.218806\nv -5.672477 0.802506 -0.179652\nv -5.672477 0.802506 -0.135890\nv -5.631019 0.802506 -0.135890\nv -5.631019 0.802506 -0.112858\nv -5.914316 0.802506 -0.115162\nv -5.912013 0.802506 -0.163529\nv -5.971897 0.802506 -0.200381\nv -6.119303 0.802506 -0.198078\nv -6.204523 0.802506 -0.149710\nv -6.204523 0.802506 -0.099038\nv -6.333503 0.802506 -0.101342\nv -6.374961 0.802506 -0.087522\nv -6.407207 0.802506 -0.069097\nv -6.432542 0.802506 -0.036852\nv -4.361941 0.883118 -0.139626\nv -4.990722 0.886574 -0.145610\nv -4.993025 0.898090 -0.165556\nv -5.071334 0.913061 -0.191486\nv -5.587258 0.911909 -0.189492\nv -5.672477 0.892331 -0.155583\nv -5.672477 0.870451 -0.117685\nv -5.631019 0.870451 -0.117685\nv -5.631019 0.858934 -0.097738\nv -5.914316 0.860086 -0.099733\nv -5.912013 0.884270 -0.141620\nv -5.971897 0.902696 -0.173534\nv -6.119303 0.901544 -0.171540\nv -6.204523 0.877361 -0.129653\nv -6.204523 0.852025 -0.085770\nv -6.333503 0.853177 -0.087765\nv -6.374961 0.846267 -0.075797\nv -6.407207 0.837054 -0.059840\nv -6.432542 0.820931 -0.031914\nv -4.361941 0.942131 -0.080613\nv -4.990722 0.948115 -0.084068\nv -4.993025 0.968062 -0.095584\nv -5.071334 0.993992 -0.110555\nv -5.587258 0.991998 -0.109403\nv -5.672477 0.958089 -0.089826\nv -5.672477 0.920190 -0.067946\nv -5.631019 0.920190 -0.067946\nv -5.631019 0.900244 -0.056429\nv -5.914316 0.902238 -0.057581\nv -5.912013 0.944126 -0.081765\nv -5.971897 0.976040 -0.100190\nv -6.119303 0.974046 -0.099038\nv -6.204523 0.932158 -0.074855\nv -6.204523 0.888276 -0.049519\nv -6.333503 0.890270 -0.050671\nv -6.374961 0.878302 -0.043762\nv -6.407207 0.862346 -0.034549\nv -6.432542 0.834420 -0.018426\nv -4.361941 0.963731 0.000000\nv -4.990722 0.970641 0.000000\nv -4.993025 0.993674 0.000000\nv -5.071334 1.023615 0.000000\nv -5.587258 1.021312 0.000000\nv -5.672477 0.982158 0.000000\nv -5.672477 0.938396 0.000000\nv -5.631019 0.938396 0.000000\nv -5.631019 0.915364 0.000000\nv -5.914316 0.917667 0.000000\nv -5.912013 0.966034 0.000000\nv -5.971897 1.002886 0.000000\nv -6.119303 1.000583 0.000000\nv -6.204523 0.952215 0.000000\nv -6.204523 0.901544 0.000000\nv -6.333503 0.903847 0.000000\nv -6.374961 0.890028 0.000000\nv -6.407207 0.871602 0.000000\nv -6.432542 0.839358 0.000000\nv -4.361941 0.942131 0.080613\nv -4.990722 0.948115 0.084068\nv -4.993025 0.968062 0.095584\nv -5.071334 0.993992 0.110555\nv -5.587258 0.991998 0.109403\nv -5.672477 0.958089 0.089826\nv -5.672477 0.920190 0.067946\nv -5.631019 0.920190 0.067946\nv -5.631019 0.900244 0.056429\nv -5.914316 0.902238 0.057581\nv -5.912013 0.944126 0.081765\nv -5.971897 0.976040 0.100190\nv -6.119303 0.974046 0.099038\nv -6.204523 0.932158 0.074855\nv -6.204523 0.888276 0.049519\nv -6.333503 0.890270 0.050671\nv -6.374961 0.878302 0.043762\nv -6.407207 0.862346 0.034549\nv -6.432542 0.834420 0.018426\nv -4.361941 0.883118 0.139626\nv -4.990722 0.886574 0.145610\nv -4.993025 0.898090 0.165556\nv -5.071334 0.913061 0.191486\nv -5.587258 0.911909 0.189492\nv -5.672477 0.892331 0.155583\nv -5.672477 0.870451 0.117685\nv -5.631019 0.870451 0.117685\nv -5.631019 0.858934 0.097738\nv -5.914316 0.860086 0.099733\nv -5.912013 0.884270 0.141620\nv -5.971897 0.902696 0.173534\nv -6.119303 0.901544 0.171540\nv -6.204523 0.877361 0.129653\nv -6.204523 0.852025 0.085770\nv -6.333503 0.853177 0.087765\nv -6.374961 0.846267 0.075797\nv -6.407207 0.837054 0.059840\nv -6.432542 0.820931 0.031914\nv -4.361941 0.802506 0.161226\nv -4.990722 0.802506 0.168135\nv -4.993025 0.802506 0.191168\nv -5.071334 0.802506 0.221110\nv -5.587258 0.802506 0.218806\nv -5.672477 0.802506 0.179652\nv -5.672477 0.802506 0.135890\nv -5.631019 0.802506 0.135890\nv -5.631019 0.802506 0.112858\nv -5.914316 0.802506 0.115162\nv -5.912013 0.802506 0.163529\nv -5.971897 0.802506 0.200381\nv -6.119303 0.802506 0.198078\nv -6.204523 0.802506 0.149710\nv -6.204523 0.802506 0.099038\nv -6.333503 0.802506 0.101342\nv -6.374961 0.802506 0.087522\nv -6.407207 0.802506 0.069097\nv -6.432542 0.802506 0.036852\nv -4.361941 0.721893 0.139626\nv -4.990722 0.718438 0.145610\nv -4.993025 0.706922 0.165556\nv -5.071334 0.691950 0.191486\nv -5.587258 0.693102 0.189492\nv -5.672477 0.712680 0.155583\nv -5.672477 0.734560 0.117685\nv -5.631019 0.734560 0.117685\nv -5.631019 0.746077 0.097738\nv -5.914316 0.744925 0.099733\nv -5.912013 0.720741 0.141620\nv -5.971897 0.702315 0.173534\nv -6.119303 0.703467 0.171540\nv -6.204523 0.727650 0.129653\nv -6.204523 0.752986 0.085770\nv -6.333503 0.751834 0.087765\nv -6.374961 0.758744 0.075797\nv -6.407207 0.767957 0.059840\nv -6.432542 0.784080 0.031914\nv -4.361941 0.662880 0.080613\nv -4.990722 0.656896 0.084068\nv -4.993025 0.636950 0.095584\nv -5.071334 0.611019 0.110555\nv -5.587258 0.613014 0.109403\nv -5.672477 0.646922 0.089826\nv -5.672477 0.684821 0.067946\nv -5.631019 0.684821 0.067946\nv -5.631019 0.704767 0.056429\nv -5.914316 0.702773 0.057581\nv -5.912013 0.660886 0.081765\nv -5.971897 0.628971 0.100190\nv -6.119303 0.630966 0.099038\nv -6.204523 0.672853 0.074855\nv -6.204523 0.716735 0.049519\nv -6.333503 0.714741 0.050671\nv -6.374961 0.726709 0.043762\nv -6.407207 0.742666 0.034549\nv -6.432542 0.770591 0.018426\nv -5.910784 0.869627 0.116239\nv -5.910784 0.918408 0.200717\nv -5.944704 0.917402 0.198975\nv -5.941133 0.941038 0.239907\nv -5.903642 0.940535 0.239036\nv -5.907214 0.954114 0.262550\nv -5.866152 0.953108 0.260809\nv -5.866152 0.975738 0.299999\nv -5.917925 0.974230 0.297386\nv -5.958986 1.036086 0.404507\nv -5.937038 0.799654 0.156645\nv -5.937038 0.848435 0.241122\nv -5.964480 0.864695 0.229410\nv -5.961591 0.886514 0.271392\nv -5.931260 0.866928 0.281541\nv -5.934149 0.882324 0.304005\nv -5.900930 0.860416 0.314333\nv -5.900930 0.883046 0.353523\nv -5.942815 0.907892 0.335693\nv -5.976035 0.990649 0.430744\nv -6.005771 0.756409 0.181617\nv -6.005771 0.805190 0.266094\nv -6.016253 0.832121 0.248220\nv -6.015150 0.852816 0.290850\nv -6.003564 0.821435 0.307810\nv -6.004667 0.837954 0.329626\nv -5.991979 0.803130 0.347412\nv -5.991979 0.825761 0.386603\nv -6.007978 0.866893 0.359368\nv -6.020667 0.962567 0.446960\nv -6.090730 0.756409 0.181617\nv -6.090730 0.805190 0.266094\nv -6.080248 0.832121 0.248220\nv -6.081351 0.852816 0.290850\nv -6.092937 0.821435 0.307810\nv -6.091834 0.837954 0.329626\nv -6.104522 0.803130 0.347412\nv -6.104522 0.825761 0.386603\nv -6.088523 0.866893 0.359368\nv -6.075834 0.962567 0.446960\nv -6.159463 0.799654 0.156645\nv -6.159463 0.848435 0.241122\nv -6.132021 0.864695 0.229410\nv -6.134910 0.886514 0.271392\nv -6.165241 0.866928 0.281541\nv -6.162352 0.882324 0.304005\nv -6.195571 0.860416 0.314333\nv -6.195571 0.883046 0.353523\nv -6.153686 0.907892 0.335693\nv -6.120466 0.990649 0.430744\nv -6.185717 0.869627 0.116239\nv -6.185717 0.918408 0.200717\nv -6.151797 0.917402 0.198975\nv -6.155367 0.941038 0.239907\nv -6.192859 0.940535 0.239036\nv -6.189287 0.954114 0.262550\nv -6.230349 0.953108 0.260809\nv -6.230349 0.975738 0.299999\nv -6.178576 0.974230 0.297386\nv -6.137515 1.036086 0.404507\nv -6.159463 0.939600 0.075834\nv -6.159463 0.988381 0.160311\nv -6.132021 0.970110 0.168539\nv -6.134910 0.995562 0.208422\nv -6.165241 1.014143 0.196532\nv -6.162352 1.025903 0.221096\nv -6.195571 1.045799 0.207285\nv -6.195571 1.068430 0.246475\nv -6.153686 1.040567 0.259081\nv -6.120466 1.081522 0.378270\nv -6.090730 0.982846 0.050862\nv -6.090730 1.031626 0.135339\nv -6.080248 1.002684 0.149730\nv -6.081351 1.029261 0.188964\nv -6.092937 1.059635 0.170262\nv -6.091834 1.070273 0.195475\nv -6.104522 1.103086 0.174205\nv -6.104522 1.125716 0.213395\nv -6.088523 1.081566 0.235406\nv -6.075834 1.109604 0.362054\nv -6.005771 0.982846 0.050862\nv -6.005771 1.031626 0.135339\nv -6.016253 1.002684 0.149730\nv -6.015150 1.029261 0.188964\nv -6.003564 1.059635 0.170262\nv -6.004667 1.070273 0.195475\nv -5.991979 1.103086 0.174205\nv -5.991979 1.125716 0.213395\nv -6.007978 1.081566 0.235406\nv -6.020667 1.109604 0.362054\nv -5.937038 0.939600 0.075834\nv -5.937038 0.988381 0.160311\nv -5.964480 0.970110 0.168539\nv -5.961591 0.995562 0.208422\nv -5.931260 1.014143 0.196532\nv -5.934149 1.025903 0.221096\nv -5.900930 1.045799 0.207285\nv -5.900930 1.068430 0.246475\nv -5.942815 1.040567 0.259081\nv -5.976035 1.081522 0.378270\nv -6.057447 1.197186 0.500912\nv -6.075834 1.155618 0.524914\nv -6.074689 1.208842 0.581516\nv -6.055402 1.250102 0.557690\nv -6.057447 1.159340 0.448186\nv -6.075834 1.145818 0.424770\nv -6.087416 1.139148 0.430044\nv -6.090249 1.130536 0.437978\nv -6.075834 1.117707 0.472226\nv -6.067914 1.276189 0.654324\nv -6.044979 1.316025 0.631321\nv -6.051891 1.346961 0.754793\nv -6.021833 1.383071 0.733942\nv -6.031030 1.417630 0.880209\nv -5.992507 1.447098 0.863192\nv -6.020324 1.482188 1.015875\nv -5.976293 1.505155 1.002613\nv -6.029022 1.532889 1.137414\nv -5.983540 1.553628 1.125439\nv -6.040538 1.577507 1.240926\nv -5.994937 1.598365 1.228882\nv -6.075834 1.080618 0.568223\nv -6.057447 1.039050 0.592226\nv -6.059490 1.062074 0.666266\nv -6.076971 1.103934 0.642094\nv -6.075834 1.053936 0.509050\nv -6.090249 1.017862 0.503042\nv -6.087416 1.006684 0.506534\nv -6.075834 0.998782 0.509675\nv -6.057447 1.012303 0.533091\nv -6.069829 1.094130 0.759453\nv -6.083498 1.137041 0.734674\nv -6.092449 1.152032 0.867353\nv -6.097942 1.196290 0.841796\nv -6.120296 1.235269 0.985511\nv -6.114368 1.279485 0.959979\nv -6.134706 1.329426 1.104087\nv -6.119663 1.371990 1.079508\nv -6.126785 1.412280 1.207060\nv -6.108944 1.454025 1.182954\nv -6.115387 1.479509 1.297515\nv -6.097427 1.521373 1.273342\nv -6.020667 1.155618 0.524914\nv -6.039054 1.197186 0.500912\nv -6.037012 1.249802 0.557863\nv -6.019531 1.207943 0.582035\nv -6.020667 1.117707 0.472226\nv -6.006252 1.130536 0.437978\nv -6.009085 1.139148 0.430044\nv -6.020667 1.145818 0.424770\nv -6.039054 1.159340 0.448186\nv -6.026671 1.314487 0.632209\nv -6.013003 1.271577 0.656987\nv -6.004052 1.378995 0.736295\nv -5.998559 1.334737 0.761851\nv -5.976205 1.439723 0.867450\nv -5.982133 1.395507 0.892983\nv -5.961794 1.495354 1.008273\nv -5.976838 1.452790 1.032852\nv -5.969716 1.543122 1.131506\nv -5.987557 1.501376 1.155612\nv -5.981113 1.587858 1.234950\nv -5.999074 1.545994 1.259124\nv -6.039054 1.039050 0.592226\nv -6.020667 1.080618 0.568223\nv -6.021812 1.103034 0.642614\nv -6.041099 1.061774 0.666439\nv -6.039054 1.012303 0.533091\nv -6.020667 0.998782 0.509675\nv -6.009085 1.006684 0.506534\nv -6.006252 1.017862 0.503042\nv -6.020667 1.053936 0.509050\nv -6.028587 1.132429 0.737338\nv -6.051523 1.092593 0.760341\nv -6.044611 1.184066 0.848855\nv -6.074668 1.147957 0.869706\nv -6.065471 1.257363 0.972754\nv -6.103994 1.227894 0.989770\nv -6.076178 1.342592 1.096485\nv -6.120208 1.319625 1.109747\nv -6.067480 1.422512 1.201151\nv -6.112961 1.401774 1.213127\nv -6.055963 1.489859 1.291538\nv -6.101563 1.469002 1.303582\nv -5.910784 0.668278 0.000000\nv -5.910784 0.570729 0.000000\nv -5.944704 0.572740 0.000000\nv -5.941133 0.525474 0.000000\nv -5.903642 0.526479 0.000000\nv -5.907214 0.499326 0.000000\nv -5.866152 0.501338 0.000000\nv -5.866152 0.456082 0.000000\nv -5.917925 0.459099 0.000000\nv -5.958986 0.335402 0.000000\nv -5.937038 0.668278 -0.080801\nv -5.937038 0.570729 -0.080801\nv -5.964480 0.572740 -0.060863\nv -5.961591 0.525474 -0.062962\nv -5.931260 0.526479 -0.084998\nv -5.934149 0.499326 -0.082899\nv -5.900930 0.501338 -0.107035\nv -5.900930 0.456082 -0.107035\nv -5.942815 0.459099 -0.076603\nv -5.976035 0.335402 -0.052468\nv -6.005771 0.668278 -0.130738\nv -6.005771 0.570729 -0.130738\nv -6.016253 0.572740 -0.098478\nv -6.015150 0.525474 -0.101874\nv -6.003564 0.526479 -0.137530\nv -6.004667 0.499326 -0.134134\nv -5.991979 0.501338 -0.173186\nv -5.991979 0.456082 -0.173186\nv -6.007978 0.459099 -0.123947\nv -6.020667 0.335402 -0.084895\nv -6.090730 0.668278 -0.130738\nv -6.090730 0.570729 -0.130738\nv -6.080248 0.572740 -0.098478\nv -6.081351 0.525474 -0.101874\nv -6.092937 0.526479 -0.137530\nv -6.091834 0.499326 -0.134134\nv -6.104522 0.501338 -0.173186\nv -6.104522 0.456082 -0.173186\nv -6.088523 0.459099 -0.123947\nv -6.075834 0.335402 -0.084895\nv -6.159463 0.668278 -0.080801\nv -6.159463 0.570729 -0.080801\nv -6.132021 0.572740 -0.060863\nv -6.134910 0.525474 -0.062962\nv -6.165241 0.526479 -0.084998\nv -6.162352 0.499326 -0.082899\nv -6.195571 0.501338 -0.107035\nv -6.195571 0.456082 -0.107035\nv -6.153686 0.459099 -0.076603\nv -6.120466 0.335402 -0.052468\nv -6.185717 0.668278 0.000000\nv -6.185717 0.570729 0.000000\nv -6.151797 0.572740 0.000000\nv -6.155367 0.525474 0.000000\nv -6.192859 0.526479 0.000000\nv -6.189287 0.499326 0.000000\nv -6.230349 0.501338 0.000000\nv -6.230349 0.456082 0.000000\nv -6.178576 0.459099 0.000000\nv -6.137515 0.335402 0.000000\nv -6.159463 0.668278 0.080801\nv -6.159463 0.570729 0.080801\nv -6.132021 0.572740 0.060863\nv -6.134910 0.525474 0.062962\nv -6.165241 0.526479 0.084998\nv -6.162352 0.499326 0.082899\nv -6.195571 0.501338 0.107035\nv -6.195571 0.456082 0.107035\nv -6.153686 0.459099 0.076603\nv -6.120466 0.335402 0.052468\nv -6.090730 0.668278 0.130738\nv -6.090730 0.570729 0.130738\nv -6.080248 0.572740 0.098478\nv -6.081351 0.525474 0.101874\nv -6.092937 0.526479 0.137530\nv -6.091834 0.499326 0.134134\nv -6.104522 0.501338 0.173186\nv -6.104522 0.456082 0.173186\nv -6.088523 0.459099 0.123947\nv -6.075834 0.335402 0.084895\nv -6.005771 0.668278 0.130738\nv -6.005771 0.570729 0.130738\nv -6.016253 0.572740 0.098478\nv -6.015150 0.525474 0.101874\nv -6.003564 0.526479 0.137530\nv -6.004667 0.499326 0.134134\nv -5.991979 0.501338 0.173186\nv -5.991979 0.456082 0.173186\nv -6.007978 0.459099 0.123947\nv -6.020667 0.335402 0.084895\nv -5.937038 0.668278 0.080801\nv -5.937038 0.570729 0.080801\nv -5.964480 0.572740 0.060863\nv -5.961591 0.525474 0.062962\nv -5.931260 0.526479 0.084998\nv -5.934149 0.499326 0.082899\nv -5.900930 0.501338 0.107035\nv -5.900930 0.456082 0.107035\nv -5.942815 0.459099 0.076603\nv -5.976035 0.335402 0.052468\nv -6.057447 0.171357 0.091303\nv -6.075834 0.171357 0.043303\nv -6.074689 0.095726 0.061090\nv -6.055402 0.095726 0.108736\nv -6.057447 0.235942 0.084895\nv -6.075834 0.262982 0.084895\nv -6.087416 0.261750 0.076481\nv -6.090249 0.259186 0.065055\nv -6.075834 0.235942 0.036820\nv -6.067914 -0.001003 0.083003\nv -6.044979 -0.001003 0.129004\nv -6.051891 -0.123398 0.094051\nv -6.021833 -0.123398 0.135749\nv -6.031030 -0.267346 0.092534\nv -5.992507 -0.267346 0.126563\nv -6.020324 -0.417115 0.080599\nv -5.976293 -0.417115 0.107121\nv -6.029022 -0.547721 0.063729\nv -5.983540 -0.547721 0.087677\nv -6.040538 -0.659673 0.050606\nv -5.994937 -0.659673 0.074690\nv -6.075834 0.171357 -0.043303\nv -6.057447 0.171357 -0.091303\nv -6.059490 0.095726 -0.108390\nv -6.076971 0.095726 -0.060052\nv -6.075834 0.235942 -0.036820\nv -6.090249 0.259186 -0.065055\nv -6.087416 0.261750 -0.076481\nv -6.075834 0.262982 -0.084895\nv -6.057447 0.235942 -0.084895\nv -6.069829 -0.001003 -0.127228\nv -6.083498 -0.001003 -0.077678\nv -6.092449 -0.123398 -0.131042\nv -6.097942 -0.123398 -0.079935\nv -6.120296 -0.267346 -0.118046\nv -6.114368 -0.267346 -0.066988\nv -6.134706 -0.417115 -0.095802\nv -6.119663 -0.417115 -0.046651\nv -6.126785 -0.547721 -0.075545\nv -6.108944 -0.547721 -0.027339\nv -6.115387 -0.659673 -0.062558\nv -6.097427 -0.659673 -0.014216\nv -6.020667 0.171357 0.043303\nv -6.039054 0.171357 0.091303\nv -6.037012 0.095726 0.108390\nv -6.019531 0.095726 0.060052\nv -6.020667 0.235942 0.036820\nv -6.006252 0.259186 0.065055\nv -6.009085 0.261750 0.076481\nv -6.020667 0.262982 0.084895\nv -6.039054 0.235942 0.084895\nv -6.026671 -0.001003 0.127228\nv -6.013003 -0.001003 0.077678\nv -6.004052 -0.123398 0.131042\nv -5.998559 -0.123398 0.079935\nv -5.976205 -0.267346 0.118046\nv -5.982133 -0.267346 0.066988\nv -5.961794 -0.417115 0.095802\nv -5.976838 -0.417115 0.046651\nv -5.969716 -0.547721 0.075545\nv -5.987557 -0.547721 0.027339\nv -5.981113 -0.659673 0.062558\nv -5.999074 -0.659673 0.014216\nv -6.039054 0.171357 -0.091303\nv -6.020667 0.171357 -0.043303\nv -6.021812 0.095726 -0.061090\nv -6.041099 0.095726 -0.108736\nv -6.039054 0.235942 -0.084895\nv -6.020667 0.262982 -0.084895\nv -6.009085 0.261750 -0.076481\nv -6.006252 0.259186 -0.065055\nv -6.020667 0.235942 -0.036820\nv -6.028587 -0.001003 -0.083003\nv -6.051523 -0.001003 -0.129004\nv -6.044611 -0.123398 -0.094051\nv -6.074668 -0.123398 -0.135749\nv -6.065471 -0.267346 -0.092534\nv -6.103994 -0.267346 -0.126563\nv -6.076178 -0.417115 -0.080599\nv -6.120208 -0.417115 -0.107121\nv -6.067480 -0.547721 -0.063729\nv -6.112961 -0.547721 -0.087677\nv -6.055963 -0.659673 -0.050606\nv -6.101563 -0.659673 -0.074690\nv -5.910784 0.869615 -0.116246\nv -5.910784 0.918387 -0.200729\nv -5.944704 0.917382 -0.198987\nv -5.941133 0.941014 -0.239922\nv -5.903642 0.940510 -0.239050\nv -5.907214 0.954086 -0.262566\nv -5.866152 0.953081 -0.260824\nv -5.866152 0.975706 -0.300018\nv -5.917925 0.974198 -0.297405\nv -5.958986 1.036043 -0.404531\nv -5.937038 0.939592 -0.075849\nv -5.937038 0.988364 -0.160330\nv -5.964480 0.970091 -0.168557\nv -5.961591 0.995541 -0.208442\nv -5.931260 1.014122 -0.196554\nv -5.934149 1.025880 -0.221119\nv -5.900930 1.045778 -0.207310\nv -5.900930 1.068404 -0.246503\nv -5.942815 1.040540 -0.259106\nv -5.976035 1.081482 -0.378299\nv -6.005771 0.982840 -0.050882\nv -6.005771 1.031612 -0.135363\nv -6.016253 1.002668 -0.149750\nv -6.015150 1.029241 -0.188987\nv -6.003564 1.059618 -0.170290\nv -6.004667 1.070252 -0.195503\nv -5.991979 1.103067 -0.174237\nv -5.991979 1.125694 -0.213430\nv -6.007978 1.081542 -0.235435\nv -6.020667 1.109566 -0.362086\nv -6.090730 0.982840 -0.050882\nv -6.090730 1.031612 -0.135363\nv -6.080248 1.002668 -0.149750\nv -6.081351 1.029241 -0.188987\nv -6.092937 1.059618 -0.170290\nv -6.091834 1.070252 -0.195503\nv -6.104522 1.103067 -0.174237\nv -6.104522 1.125694 -0.213430\nv -6.088523 1.081542 -0.235435\nv -6.075834 1.109566 -0.362086\nv -6.159463 0.939592 -0.075849\nv -6.159463 0.988364 -0.160330\nv -6.132021 0.970091 -0.168557\nv -6.134910 0.995541 -0.208442\nv -6.165241 1.014122 -0.196554\nv -6.162352 1.025880 -0.221119\nv -6.195571 1.045778 -0.207310\nv -6.195571 1.068404 -0.246503\nv -6.153686 1.040540 -0.259106\nv -6.120466 1.081482 -0.378299\nv -6.185717 0.869615 -0.116246\nv -6.185717 0.918387 -0.200729\nv -6.151797 0.917382 -0.198987\nv -6.155367 0.941014 -0.239922\nv -6.192859 0.940510 -0.239050\nv -6.189287 0.954086 -0.262566\nv -6.230349 0.953081 -0.260824\nv -6.230349 0.975706 -0.300018\nv -6.178576 0.974198 -0.297405\nv -6.137515 1.036043 -0.404531\nv -6.159463 0.799638 -0.156645\nv -6.159463 0.848410 -0.241126\nv -6.132021 0.864671 -0.229417\nv -6.134910 0.886486 -0.271401\nv -6.165241 0.866898 -0.281547\nv -6.162352 0.882292 -0.304014\nv -6.195571 0.860383 -0.314338\nv -6.195571 0.883010 -0.353532\nv -6.153686 0.907857 -0.335704\nv -6.120466 0.990603 -0.430764\nv -6.090730 0.756390 -0.181612\nv -6.090730 0.805162 -0.266094\nv -6.080248 0.832095 -0.248223\nv -6.081351 0.852786 -0.290856\nv -6.092937 0.821403 -0.307812\nv -6.091834 0.837920 -0.329630\nv -6.104522 0.803094 -0.347412\nv -6.104522 0.825720 -0.386606\nv -6.088523 0.866854 -0.359374\nv -6.075834 0.962520 -0.446977\nv -6.005771 0.756390 -0.181612\nv -6.005771 0.805162 -0.266094\nv -6.016253 0.832095 -0.248223\nv -6.015150 0.852786 -0.290856\nv -6.003564 0.821403 -0.307812\nv -6.004667 0.837920 -0.329630\nv -5.991979 0.803094 -0.347412\nv -5.991979 0.825720 -0.386606\nv -6.007978 0.866854 -0.359374\nv -6.020667 0.962520 -0.446977\nv -5.937038 0.799638 -0.156645\nv -5.937038 0.848410 -0.241126\nv -5.964480 0.864671 -0.229417\nv -5.961591 0.886486 -0.271401\nv -5.931260 0.866898 -0.281547\nv -5.934149 0.882292 -0.304014\nv -5.900930 0.860383 -0.314338\nv -5.900930 0.883010 -0.353532\nv -5.942815 0.907857 -0.335704\nv -5.976035 0.990603 -0.430764\nv -6.057447 1.038989 -0.592250\nv -6.075834 1.080558 -0.568252\nv -6.074689 1.102967 -0.642645\nv -6.055402 1.061704 -0.666466\nv -6.057447 1.012247 -0.533113\nv -6.075834 0.998728 -0.509696\nv -6.087416 1.006631 -0.506555\nv -6.090249 1.017809 -0.503064\nv -6.075834 1.053882 -0.509077\nv -6.067914 1.132351 -0.737372\nv -6.044979 1.092513 -0.760371\nv -6.051891 1.183977 -0.848895\nv -6.021833 1.147866 -0.869743\nv -6.031030 1.257261 -0.972801\nv -5.992507 1.227790 -0.989814\nv -6.020324 1.342477 -1.096541\nv -5.976293 1.319508 -1.109801\nv -6.029022 1.422386 -1.201217\nv -5.983540 1.401646 -1.213190\nv -6.040538 1.489724 -1.291610\nv -5.994937 1.468866 -1.303652\nv -6.075834 1.155563 -0.524952\nv -6.057447 1.197134 -0.500953\nv -6.059490 1.249744 -0.557910\nv -6.076971 1.207882 -0.582078\nv -6.075834 1.117658 -0.472259\nv -6.090249 1.130490 -0.438013\nv -6.087416 1.139102 -0.430079\nv -6.075834 1.145774 -0.424806\nv -6.057447 1.159293 -0.448223\nv -6.069829 1.314421 -0.632263\nv -6.083498 1.271508 -0.657037\nv -6.092449 1.378918 -0.736355\nv -6.097942 1.334657 -0.761907\nv -6.120296 1.439632 -0.867518\nv -6.114368 1.395414 -0.893045\nv -6.134706 1.495248 -1.008346\nv -6.119663 1.452681 -1.032920\nv -6.126785 1.543003 -1.131584\nv -6.108944 1.501255 -1.155686\nv -6.115387 1.587728 -1.235032\nv -6.097427 1.545862 -1.259202\nv -6.020667 1.080558 -0.568252\nv -6.039054 1.038989 -0.592250\nv -6.037012 1.062004 -0.666294\nv -6.019531 1.103866 -0.642126\nv -6.020667 1.053882 -0.509077\nv -6.006252 1.017809 -0.503064\nv -6.009085 1.006631 -0.506555\nv -6.020667 0.998728 -0.509696\nv -6.039054 1.012247 -0.533113\nv -6.026671 1.094050 -0.759483\nv -6.013003 1.136963 -0.734710\nv -6.004052 1.151941 -0.867390\nv -5.998559 1.196202 -0.841838\nv -5.976205 1.235166 -0.985557\nv -5.982133 1.279384 -0.960029\nv -5.961794 1.329310 -1.104142\nv -5.976838 1.371877 -1.079568\nv -5.969716 1.412153 -1.207124\nv -5.987557 1.453901 -1.183022\nv -5.981113 1.479373 -1.297586\nv -5.999074 1.521239 -1.273417\nv -6.039054 1.197134 -0.500953\nv -6.020667 1.155563 -0.524952\nv -6.021812 1.208781 -0.581558\nv -6.041099 1.250044 -0.557737\nv -6.039054 1.159293 -0.448223\nv -6.020667 1.145774 -0.424806\nv -6.009085 1.139102 -0.430079\nv -6.006252 1.130490 -0.438013\nv -6.020667 1.117658 -0.472259\nv -6.028587 1.276120 -0.654374\nv -6.051523 1.315958 -0.631375\nv -6.044611 1.346882 -0.754850\nv -6.074668 1.382994 -0.734002\nv -6.065471 1.417537 -0.880273\nv -6.103994 1.447008 -0.863259\nv -6.076178 1.482082 -1.015947\nv -6.120208 1.505050 -1.002687\nv -6.067480 1.532770 -1.137491\nv -6.112961 1.553510 -1.125518\nv -6.055963 1.577377 -1.241008\nv -6.101563 1.598236 -1.228966\nv -6.652150 -0.632658 -0.924800\nv -6.597370 -0.668394 -0.946771\nv -6.671355 -0.648315 -0.924800\nv -6.654971 -0.715357 -0.946771\nv -6.683727 2.161171 -0.924800\nv -6.603771 2.180655 -0.946771\nv -6.701970 2.215354 -0.924800\nv -6.648571 2.313719 -0.946771\nv -7.420620 2.208322 -0.924800\nv -7.448570 2.305891 -0.946771\nv -7.470881 2.160026 -0.924800\nv -7.538171 2.219793 -0.946771\nv -8.039143 0.316510 -0.924800\nv -8.101371 0.341298 -0.946771\nv -8.043410 0.298243 -0.924800\nv -8.114171 0.286508 -0.946771\nv -7.595953 -0.564330 -0.924800\nv -7.653371 -0.637086 -0.946771\nv -7.529748 -0.609874 -0.924800\nv -7.550971 -0.707530 -0.946771\nv -7.420620 2.208322 -0.990720\nv -7.448570 2.305891 -0.968749\nv -6.701970 2.215354 -0.990720\nv -6.648571 2.313719 -0.968749\nv -6.683727 2.161171 -0.990720\nv -6.603771 2.180655 -0.968749\nv -6.652150 -0.632658 -0.990720\nv -6.597370 -0.668394 -0.968749\nv -6.671355 -0.648315 -0.990720\nv -6.654971 -0.715357 -0.968749\nv -7.529748 -0.609874 -0.990720\nv -7.550971 -0.707530 -0.968749\nv -7.595953 -0.564330 -0.990720\nv -7.653371 -0.637086 -0.968749\nv -8.043410 0.298243 -0.990720\nv -8.114171 0.286508 -0.968749\nv -8.039143 0.316510 -0.990720\nv -8.101371 0.341298 -0.968749\nv -7.470881 2.160026 -0.990720\nv -7.538171 2.219793 -0.968749\nv -7.280895 0.690445 -0.990720\nv -7.280895 0.690445 -0.924800\nv -7.280895 0.690445 1.027360\nv -6.671355 -0.648315 1.027360\nv -6.652150 -0.632658 1.027360\nv -7.280895 0.690445 0.961440\nv -7.420620 2.208322 0.961440\nv -6.701970 2.215354 0.961440\nv -6.648571 2.313719 1.005389\nv -6.603771 2.180655 1.005389\nv -6.603771 2.180655 0.983411\nv -6.648571 2.313719 0.983411\nv -7.448570 2.305891 1.005389\nv -7.448570 2.305891 0.983411\nv -7.538171 2.219793 1.005389\nv -7.538171 2.219793 0.983411\nv -8.101371 0.341298 1.005389\nv -8.101371 0.341298 0.983411\nv -8.114171 0.286508 1.005389\nv -8.114171 0.286508 0.983411\nv -7.653371 -0.637086 1.005389\nv -7.653371 -0.637086 0.983411\nv -7.550971 -0.707530 1.005389\nv -7.550971 -0.707530 0.983411\nv -6.654971 -0.715357 1.005389\nv -6.654971 -0.715357 0.983411\nv -6.597370 -0.668394 1.005389\nv -6.597370 -0.668394 0.983411\nv -6.683727 2.161171 1.027360\nv -6.701970 2.215354 1.027360\nv -7.420620 2.208322 1.027360\nv -7.470881 2.160026 1.027360\nv -8.039143 0.316510 1.027360\nv -8.043410 0.298243 1.027360\nv -7.595953 -0.564330 1.027360\nv -7.529748 -0.609874 1.027360\nv -6.683727 2.161171 0.961440\nv -6.652150 -0.632658 0.961440\nv -6.671355 -0.648315 0.961440\nv -7.529748 -0.609874 0.961440\nv -7.595953 -0.564330 0.961440\nv -8.043410 0.298243 0.961440\nv -8.039143 0.316510 0.961440\nv -7.470881 2.160026 0.961440\nv 3.383207 0.052740 0.473951\nv 2.350494 0.081034 0.473951\nv 2.293906 0.328602 0.473951\nv 2.046339 1.177408 0.473951\nv 2.039265 1.587665 0.473951\nv 2.166587 1.969627 0.473951\nv 2.322200 1.792793 0.473951\nv 2.322200 1.714986 0.473951\nv 2.209026 1.502784 0.473951\nv 2.293906 1.156188 0.473951\nv 2.548547 0.887399 0.473951\nv 2.682943 0.484216 0.473951\nv 2.661722 0.385189 0.473951\nv 3.142713 0.484216 0.473951\nv 3.581263 0.448850 0.473951\nv 3.694437 0.328602 0.473951\nv 3.694437 0.328602 -0.857951\nv 3.581263 0.448850 -0.857951\nv 3.142713 0.484216 -0.857951\nv 2.661722 0.385189 -0.857951\nv 2.682943 0.484216 -0.857951\nv 2.548547 0.887399 -0.857951\nv 2.293906 1.156188 -0.857951\nv 2.209026 1.502784 -0.857951\nv 2.322200 1.714986 -0.857951\nv 2.322200 1.792793 -0.857951\nv 2.166587 1.969627 -0.857951\nv 2.039265 1.587665 -0.857951\nv 2.046339 1.177408 -0.857951\nv 2.293906 0.328602 -0.857951\nv 2.350494 0.081034 -0.857951\nv 3.383207 0.052740 -0.857951\nv 2.254411 1.188472 -0.576774\nv 2.256044 1.195785 -0.743724\nv 2.175899 1.584710 -0.747397\nv 2.158854 1.578599 -0.577256\nv 2.541006 0.885958 -0.576554\nv 2.542918 0.886322 -0.742794\nv 2.692262 0.432182 -0.576790\nv 2.690981 0.425843 -0.743366\nv 2.668380 0.320721 -0.576910\nv 2.666691 0.337087 -0.742794\nv 3.209750 0.432161 -0.577166\nv 3.216468 0.446320 -0.741566\nv 3.703475 0.392298 -0.578078\nv 3.717558 0.385014 -0.746655\nv 3.830939 0.256904 -0.578539\nv 3.796103 0.275202 -0.742794\nv 3.480457 -0.033833 -0.577357\nv 3.476881 0.009429 -0.745967\nv 2.318102 -0.033833 -0.576640\nv 2.326319 0.004452 -0.742794\nv 2.254397 0.257016 -0.577122\nv 2.269904 0.253758 -0.742532\nv 1.975754 1.212367 -0.577082\nv 1.991553 1.220194 -0.743842\nv 1.967751 1.674170 -0.577620\nv 1.991374 1.679478 -0.745422\nv 2.111019 2.104211 -0.578330\nv 2.125191 2.069886 -0.742794\nv 2.286216 1.905074 -0.577729\nv 2.279950 1.917578 -0.746173\nv 2.286222 1.817474 -0.577553\nv 2.297850 1.825632 -0.728495\nv 2.256044 1.195785 0.359724\nv 2.254411 1.188472 0.192774\nv 2.158854 1.578599 0.193256\nv 2.175899 1.584710 0.363397\nv 2.542918 0.886322 0.358794\nv 2.541006 0.885958 0.192554\nv 2.690981 0.425843 0.359366\nv 2.692262 0.432182 0.192790\nv 2.666691 0.337087 0.358794\nv 2.668380 0.320721 0.192910\nv 3.216468 0.446320 0.357566\nv 3.209750 0.432161 0.193166\nv 3.717558 0.385014 0.362655\nv 3.703475 0.392298 0.194078\nv 3.796103 0.275202 0.358794\nv 3.830939 0.256904 0.194539\nv 3.476881 0.009429 0.361967\nv 3.480457 -0.033833 0.193357\nv 2.326319 0.004452 0.358794\nv 2.318102 -0.033833 0.192640\nv 2.269904 0.253758 0.358532\nv 2.254397 0.257016 0.193122\nv 1.991553 1.220194 0.359842\nv 1.975754 1.212367 0.193082\nv 1.991374 1.679478 0.361422\nv 1.967751 1.674170 0.193620\nv 2.125191 2.069886 0.358794\nv 2.111019 2.104211 0.194330\nv 2.279950 1.917578 0.362173\nv 2.286216 1.905074 0.193729\nv 2.297850 1.825632 0.344495\nv 2.286222 1.817474 0.193553\nv 2.174150 1.555486 -0.299967\nv 2.174150 1.555486 -0.084033\nv 2.266416 1.178659 -0.083550\nv 2.266416 1.178659 -0.300450\nv 2.297210 1.786172 -0.299670\nv 2.297210 1.786172 -0.084330\nv 2.297218 1.870745 -0.299494\nv 2.297218 1.870745 -0.084506\nv 2.128071 2.062912 -0.298894\nv 2.128071 2.062912 -0.085106\nv 1.989601 1.647739 -0.299603\nv 1.989601 1.647739 -0.084397\nv 1.997250 1.201721 -0.300142\nv 1.997250 1.201721 -0.083858\nv 2.266431 0.278822 -0.300101\nv 2.266431 0.278822 -0.083899\nv 2.327940 -0.033833 -0.300583\nv 2.327940 -0.033833 -0.083417\nv 3.450790 -0.033833 -0.299866\nv 3.450790 -0.033833 -0.084134\nv 3.788999 0.278934 -0.298684\nv 3.788999 0.278934 -0.085316\nv 3.666031 0.409625 -0.299145\nv 3.666031 0.409625 -0.084855\nv 3.189325 0.448022 -0.300057\nv 3.189325 0.448022 -0.083943\nv 2.666354 0.340333 -0.300313\nv 2.666354 0.340333 -0.083687\nv 2.689428 0.448001 -0.300433\nv 2.689428 0.448001 -0.083567\nv 2.543294 0.886394 -0.300669\nv 2.543294 0.886394 -0.083331\nv 2.326785 0.055070 0.431320\nv 3.566148 0.055070 0.431320\nv 3.566148 0.055070 -0.808045\nv 2.326785 0.055070 -0.808045\nv 2.326785 -0.033509 0.431320\nv 2.326785 -0.033509 -0.808045\nv 3.566148 -0.033509 0.431320\nv 3.566148 -0.033509 -0.808045\nv 3.566148 -0.033509 0.368364\nv 3.566148 -0.033509 -0.745089\nv 2.407060 -0.033509 0.431320\nv 3.485872 -0.033509 0.431320\nv 2.326785 -0.033509 -0.745089\nv 2.326785 -0.033509 0.368364\nv 3.485872 -0.033509 -0.808045\nv 2.407060 -0.033509 -0.808045\nv 3.485872 -0.033509 -0.745089\nv 2.407060 -0.033509 -0.745089\nv 2.407060 -0.033509 0.368364\nv 3.485872 -0.033509 0.368364\nv 3.566148 -0.145547 0.368364\nv 3.485872 -0.145547 0.368364\nv 3.485872 -0.145547 0.431320\nv 3.566148 -0.145547 0.431320\nv 3.566148 -0.145547 -0.808045\nv 3.485872 -0.145547 -0.808045\nv 3.485872 -0.145547 -0.745089\nv 3.566148 -0.145547 -0.745089\nv 2.326785 -0.145547 -0.745089\nv 2.407060 -0.145547 -0.745089\nv 2.407060 -0.145547 -0.808045\nv 2.326785 -0.145547 -0.808045\nv 2.326785 -0.145547 0.431320\nv 2.407060 -0.145547 0.431320\nv 2.407060 -0.145547 0.368364\nv 2.326785 -0.145547 0.368364\nv 3.485872 -1.314502 0.368364\nv 3.485872 -1.314502 0.431320\nv 3.566148 -1.314502 0.431320\nv 3.566148 -1.314502 0.368364\nv 3.485872 -1.314502 -0.808045\nv 3.485872 -1.314502 -0.745089\nv 3.566148 -1.314502 -0.745089\nv 3.566148 -1.314502 -0.808045\nv 2.002534 -2.174662 -0.745089\nv 2.002534 -2.174662 -0.808045\nv 1.922257 -2.174662 -0.808045\nv 1.922257 -2.174662 -0.745089\nv 2.002534 -2.174662 0.431320\nv 2.002534 -2.174662 0.368364\nv 1.922257 -2.174662 0.368364\nv 1.922257 -2.174662 0.431320\nv 3.485872 -1.414643 0.431320\nv 3.566148 -1.414643 0.431320\nv 3.566148 -1.414643 0.368364\nv 3.485872 -1.414643 0.368364\nv 3.485872 -1.414643 -0.745089\nv 3.566148 -1.414643 -0.745089\nv 3.566148 -1.414643 -0.808045\nv 3.485872 -1.414643 -0.808045\nv 2.002534 -2.274802 -0.808045\nv 1.922257 -2.274802 -0.808045\nv 1.922257 -2.274802 -0.745089\nv 2.002534 -2.274802 -0.745089\nv 2.002534 -2.274802 0.368364\nv 1.922257 -2.274802 0.368364\nv 1.922257 -2.274802 0.431320\nv 2.002534 -2.274802 0.431320\nv 2.326785 -0.145547 0.579052\nv 2.326785 -0.033509 0.579052\nv 2.407060 -0.033509 0.579052\nv 2.407060 -0.145547 0.579052\nv 2.326785 -0.033509 0.726784\nv 2.407060 -0.033509 0.726784\nv 2.407060 -0.145547 0.726784\nv 2.326785 -0.145547 0.726784\nv 2.638078 -0.033509 0.726784\nv 2.638078 -0.033509 0.579052\nv 2.638078 -0.145547 0.579052\nv 2.638078 -0.145547 0.726784\nv 2.762014 -0.033509 0.579052\nv 2.762014 -0.145547 0.579052\nv 2.762014 -0.145547 0.726784\nv 2.762014 -0.033509 0.726784\nv 3.076319 -0.145547 0.579052\nv 3.076319 -0.145547 0.726784\nv 3.076319 -0.033509 0.726784\nv 3.076319 -0.033509 0.579052\nv 3.200254 -0.145547 0.726784\nv 3.200254 -0.033509 0.726784\nv 3.200254 -0.033509 0.579052\nv 3.200254 -0.145547 0.579052\nv 3.485872 -0.033509 0.726784\nv 3.485872 -0.033509 0.579052\nv 3.485872 -0.145547 0.579052\nv 3.485872 -0.145547 0.726784\nv 3.566148 -0.033509 0.579052\nv 3.566148 -0.145547 0.579052\nv 3.566148 -0.145547 0.726784\nv 3.566148 -0.033509 0.726784\nv 3.558830 -0.157445 -0.643584\nv 3.493189 -0.157445 -0.643584\nv 3.493189 -0.157445 0.266859\nv 3.558830 -0.157445 0.266859\nv 3.766842 -0.745399 -0.643584\nv 3.766842 -0.745399 0.266859\nv 3.832481 -0.745399 0.266859\nv 3.832481 -0.745399 -0.643584\nv 3.766842 -0.774153 0.266859\nv 3.832481 -0.774153 0.266859\nv 3.832481 -0.774153 -0.643584\nv 3.766842 -0.774153 -0.643584\nv 4.408539 -0.714663 0.266859\nv 4.408539 -0.685910 0.266859\nv 4.408539 -0.685910 -0.643584\nv 4.408539 -0.714663 -0.643584\nv 3.247484 0.697744 0.614204\nv 3.247387 0.736975 0.610298\nv 3.271619 0.731770 0.585511\nv 3.265822 0.693804 0.595447\nv 3.247387 0.736975 0.695538\nv 3.247484 0.697744 0.691632\nv 3.265822 0.693804 0.710389\nv 3.271619 0.731770 0.720325\nv 3.322226 0.967328 0.585511\nv 3.297993 0.972534 0.610298\nv 3.327432 0.991562 0.610298\nv 3.327432 0.991562 0.695538\nv 3.297993 0.972534 0.695538\nv 3.322226 0.967328 0.720325\nv 3.384335 0.953985 0.585511\nv 3.389541 0.978219 0.610298\nv 3.408569 0.948778 0.610298\nv 3.408569 0.948778 0.695538\nv 3.389541 0.978219 0.695538\nv 3.384335 0.953985 0.720325\nv 3.323423 0.681430 0.595448\nv 3.333729 0.718426 0.585511\nv 3.357962 0.713220 0.610298\nv 3.341760 0.677490 0.614204\nv 3.333729 0.718426 0.720325\nv 3.323423 0.681430 0.710389\nv 3.341760 0.677490 0.691632\nv 3.357962 0.713220 0.695538\nv 2.661806 0.737458 0.614204\nv 2.663875 0.776634 0.610298\nv 2.687787 0.770097 0.585511\nv 2.679898 0.732510 0.595447\nv 2.663875 0.776634 0.695538\nv 2.661806 0.737458 0.691632\nv 2.679898 0.732510 0.710389\nv 2.687787 0.770097 0.720325\nv 2.751331 1.002499 0.585511\nv 2.727422 1.009037 0.610298\nv 2.757869 1.026409 0.610298\nv 2.757869 1.026409 0.695538\nv 2.727422 1.009037 0.695538\nv 2.751331 1.002499 0.720325\nv 2.812608 0.985744 0.585511\nv 2.819146 1.009654 0.610298\nv 2.836517 0.979206 0.610298\nv 2.836517 0.979206 0.695538\nv 2.819146 1.009654 0.695538\nv 2.812608 0.985744 0.720325\nv 2.736727 0.716972 0.595447\nv 2.749061 0.753342 0.585511\nv 2.772970 0.746805 0.610298\nv 2.754818 0.712025 0.614204\nv 2.749061 0.753342 0.720325\nv 2.736727 0.716972 0.710389\nv 2.754818 0.712025 0.691632\nv 2.772970 0.746805 0.695538\nv 3.273266 0.643076 0.690512\nv 3.271127 0.678802 0.700449\nv 3.252790 0.682742 0.681692\nv 3.251810 0.643767 0.665725\nv 3.312423 0.669930 0.700449\nv 3.293898 0.638646 0.690512\nv 3.313398 0.630539 0.665725\nv 3.330761 0.665990 0.681692\nv 3.251810 0.643767 0.640111\nv 3.252790 0.682742 0.624144\nv 3.271127 0.678802 0.605387\nv 3.273266 0.643076 0.615324\nv 3.330761 0.665990 0.624144\nv 3.313398 0.630539 0.640111\nv 3.293898 0.638646 0.615324\nv 3.312423 0.669930 0.605387\nv 2.690973 0.680312 0.690512\nv 2.684366 0.717238 0.700449\nv 2.666275 0.722185 0.681692\nv 2.670652 0.682130 0.665725\nv 2.725109 0.706098 0.700449\nv 2.711257 0.674765 0.690512\nv 2.731586 0.665494 0.665725\nv 2.743200 0.701151 0.681692\nv 2.670652 0.682130 0.640111\nv 2.666275 0.722185 0.624144\nv 2.684366 0.717238 0.605387\nv 2.690973 0.680312 0.615324\nv 2.743200 0.701151 0.624144\nv 2.731586 0.665494 0.640111\nv 2.711257 0.674765 0.615324\nv 2.725109 0.706098 0.605387\nv 2.710638 0.111376 0.615324\nv 2.731586 0.115215 0.640111\nv 2.737270 0.067273 0.608547\nv 2.689531 0.111375 0.615324\nv 2.662822 0.067273 0.608547\nv 2.668598 0.115215 0.640111\nv 2.731586 0.115215 0.665725\nv 2.710638 0.111376 0.690512\nv 2.737270 0.067273 0.697289\nv 2.668598 0.115215 0.665725\nv 2.662822 0.067273 0.697289\nv 2.689531 0.111376 0.690512\nv 3.154166 0.110791 0.615324\nv 3.176193 0.114383 0.640111\nv 3.175510 0.067273 0.608547\nv 3.133137 0.110791 0.615324\nv 3.101063 0.067273 0.608547\nv 3.113034 0.114405 0.640111\nv 3.176193 0.114383 0.665725\nv 3.154166 0.110791 0.690512\nv 3.175510 0.067273 0.697289\nv 3.113034 0.114405 0.665725\nv 3.101063 0.067273 0.697289\nv 3.133137 0.110791 0.690512\nv -6.550838 2.211582 -0.966499\nv -6.515888 2.211582 -0.956135\nv -6.515888 2.218142 -0.969966\nv -6.456883 2.211582 -0.961987\nv -6.421932 2.211582 -0.979284\nv -6.456883 2.218142 -0.975818\nv -6.421932 2.211582 -1.002631\nv -6.456883 2.211582 -1.012994\nv -6.456883 2.218142 -0.999165\nv -6.515888 2.211582 -1.007143\nv -6.550838 2.211582 -0.989846\nv -6.515888 2.218142 -0.993313\nv -6.550838 2.211582 0.989846\nv -6.515888 2.211582 1.007143\nv -6.515888 2.218142 0.993313\nv -6.456884 2.211582 1.012994\nv -6.421932 2.211582 1.002631\nv -6.456883 2.218142 0.999165\nv -6.421932 2.211582 0.979284\nv -6.456884 2.211582 0.961987\nv -6.456883 2.218142 0.975818\nv -6.515888 2.211582 0.956135\nv -6.550838 2.211582 0.966499\nv -6.515888 2.218142 0.969966\nv -6.550838 -0.606571 -0.989846\nv -6.515888 -0.606571 -1.007143\nv -6.515888 -0.613131 -0.993313\nv -6.456884 -0.606571 -1.012994\nv -6.421932 -0.606571 -1.002631\nv -6.456883 -0.613131 -0.999165\nv -6.421932 -0.606571 -0.979284\nv -6.456884 -0.606571 -0.961987\nv -6.456883 -0.613131 -0.975818\nv -6.515888 -0.606571 -0.956135\nv -6.550838 -0.606571 -0.966499\nv -6.515888 -0.613131 -0.969966\nv -6.550838 -0.606571 0.966499\nv -6.515888 -0.606571 0.956135\nv -6.515888 -0.613131 0.969966\nv -6.456883 -0.606571 0.961987\nv -6.421932 -0.606571 0.979284\nv -6.456883 -0.613131 0.975818\nv -6.421932 -0.606571 1.002631\nv -6.456883 -0.606571 1.012994\nv -6.456883 -0.613131 0.999165\nv -6.515888 -0.606571 1.007143\nv -6.550838 -0.606571 0.989846\nv -6.515888 -0.613131 0.993313\nv -6.442657 -0.556564 -1.008954\nv -6.402256 -0.565129 -0.996974\nv -6.411033 -0.593451 -1.008025\nv -6.445984 -0.593451 -1.018389\nv -6.402256 -0.565129 -0.965000\nv -6.442657 -0.568179 -0.945007\nv -6.445984 -0.593451 -0.958755\nv -6.411033 -0.593451 -0.976052\nv -6.523459 -0.568179 -0.936994\nv -6.563859 -0.559614 -0.948973\nv -6.561738 -0.593451 -0.961106\nv -6.526786 -0.593451 -0.950742\nv -6.563859 -0.559614 -0.980946\nv -6.523459 -0.556564 -1.000939\nv -6.526786 -0.593451 -1.010375\nv -6.561738 -0.593451 -0.993078\nv -6.442657 -0.568179 0.945007\nv -6.402256 -0.565129 0.965000\nv -6.411033 -0.593451 0.976052\nv -6.445984 -0.593451 0.958755\nv -6.402256 -0.565129 0.996974\nv -6.442657 -0.556564 1.008954\nv -6.445984 -0.593451 1.018389\nv -6.411033 -0.593451 1.008025\nv -6.523459 -0.556564 1.000939\nv -6.563859 -0.559614 0.980946\nv -6.561738 -0.593451 0.993078\nv -6.526786 -0.593451 1.010375\nv -6.563859 -0.559614 0.948973\nv -6.523459 -0.568179 0.936994\nv -6.526786 -0.593451 0.950742\nv -6.561738 -0.593451 0.961106\nv -6.442657 2.173190 -0.945007\nv -6.402256 2.170140 -0.965000\nv -6.411033 2.198462 -0.976052\nv -6.445984 2.198462 -0.958755\nv -6.402256 2.170140 -0.996974\nv -6.442657 2.161575 -1.008954\nv -6.445984 2.198462 -1.018389\nv -6.411033 2.198462 -1.008025\nv -6.523459 2.161575 -1.000939\nv -6.563859 2.164626 -0.980946\nv -6.561738 2.198462 -0.993078\nv -6.526786 2.198462 -1.010375\nv -6.563859 2.164626 -0.948973\nv -6.523459 2.173190 -0.936994\nv -6.526786 2.198462 -0.950742\nv -6.561738 2.198462 -0.961106\nv -6.442657 2.161575 1.008954\nv -6.402256 2.170140 0.996974\nv -6.411033 2.198462 1.008025\nv -6.445984 2.198462 1.018389\nv -6.402256 2.170140 0.965000\nv -6.442657 2.173190 0.945007\nv -6.445984 2.198462 0.958755\nv -6.411033 2.198462 0.976052\nv -6.523459 2.173190 0.936994\nv -6.563859 2.164626 0.948973\nv -6.561738 2.198462 0.961106\nv -6.526786 2.198462 0.950742\nv -6.563859 2.164626 0.980946\nv -6.523459 2.161575 1.000939\nv -6.526786 2.198462 1.010375\nv -6.561738 2.198462 0.993078\nv -6.553877 -0.465786 -0.945893\nv -6.553877 -0.391027 -1.016794\nv -6.513477 -0.378515 -1.047717\nv -6.516804 -0.490395 -0.977756\nv -6.557206 -0.493445 -0.957762\nv -6.553877 -0.476256 -0.929074\nv -6.553877 -0.520584 -0.836066\nv -6.553877 -0.401497 -0.999974\nv -6.553877 -0.533344 -0.820911\nv -6.553877 -0.489016 -0.913920\nv -6.557206 -0.516675 -0.925790\nv -6.516804 -0.525240 -0.913810\nv -6.513477 -0.558888 -0.799455\nv -6.385606 -0.512302 -0.930838\nv -6.291310 -0.561714 -0.838398\nv -6.432674 -0.569918 -0.807469\nv -6.436002 -0.536270 -0.921823\nv -6.395600 -0.533220 -0.941817\nv -6.365606 -0.503218 -0.948664\nv -6.271310 -0.430573 -1.024224\nv -6.271310 -0.552631 -0.856225\nv -6.291310 -0.416426 -1.038371\nv -6.385606 -0.489071 -0.962811\nv -6.395600 -0.509990 -0.973790\nv -6.436002 -0.501425 -0.985770\nv -6.432674 -0.389545 -1.055730\nv -6.553877 -0.489016 0.913920\nv -6.553877 -0.533344 0.820911\nv -6.513477 -0.558888 0.799455\nv -6.516804 -0.525240 0.913810\nv -6.557206 -0.516675 0.925790\nv -6.553877 -0.476256 0.929074\nv -6.553877 -0.401497 0.999974\nv -6.553877 -0.520584 0.836066\nv -6.553877 -0.391027 1.016794\nv -6.553877 -0.465786 0.945893\nv -6.557206 -0.493445 0.957762\nv -6.516804 -0.490395 0.977756\nv -6.513477 -0.378515 1.047717\nv -6.385606 -0.489071 0.962811\nv -6.291310 -0.416426 1.038371\nv -6.432674 -0.389545 1.055730\nv -6.436002 -0.501425 0.985770\nv -6.395600 -0.509990 0.973790\nv -6.365606 -0.503218 0.948664\nv -6.271310 -0.552632 0.856225\nv -6.271310 -0.430573 1.024224\nv -6.291310 -0.561714 0.838398\nv -6.385606 -0.512302 0.930838\nv -6.395600 -0.533220 0.941817\nv -6.436002 -0.536270 0.921823\nv -6.432674 -0.569918 0.807469\nv -6.553877 2.094027 -0.913920\nv -6.553877 2.138355 -0.820911\nv -6.513477 2.163900 -0.799455\nv -6.516804 2.130251 -0.913810\nv -6.557206 2.121686 -0.925790\nv -6.553877 2.081267 -0.929074\nv -6.553877 2.006508 -0.999974\nv -6.553877 2.125595 -0.836066\nv -6.553877 1.996038 -1.016794\nv -6.553877 2.070798 -0.945893\nv -6.557206 2.098456 -0.957762\nv -6.516804 2.095406 -0.977756\nv -6.513477 1.983526 -1.047717\nv -6.385606 2.094083 -0.962811\nv -6.291310 2.021437 -1.038371\nv -6.432674 1.994556 -1.055730\nv -6.436002 2.106436 -0.985770\nv -6.395600 2.115001 -0.973790\nv -6.365606 2.108230 -0.948664\nv -6.271310 2.157643 -0.856225\nv -6.271310 2.035584 -1.024224\nv -6.291310 2.166726 -0.838398\nv -6.385606 2.117313 -0.930838\nv -6.395600 2.138231 -0.941817\nv -6.436002 2.141281 -0.921823\nv -6.432674 2.174929 -0.807469\nv -6.553877 2.070798 0.945893\nv -6.553877 1.996038 1.016794\nv -6.513477 1.983526 1.047717\nv -6.516804 2.095406 0.977756\nv -6.557206 2.098456 0.957762\nv -6.553877 2.081267 0.929074\nv -6.553877 2.125595 0.836066\nv -6.553877 2.006508 0.999974\nv -6.553877 2.138355 0.820911\nv -6.553877 2.094027 0.913920\nv -6.557206 2.121686 0.925790\nv -6.516804 2.130251 0.913810\nv -6.513477 2.163900 0.799455\nv -6.385606 2.117313 0.930838\nv -6.291310 2.166726 0.838398\nv -6.432674 2.174929 0.807469\nv -6.436002 2.141281 0.921823\nv -6.395600 2.138231 0.941817\nv -6.365606 2.108230 0.948664\nv -6.271310 2.035584 1.024224\nv -6.271310 2.157642 0.856225\nv -6.291310 2.021437 1.038371\nv -6.385606 2.094083 0.962811\nv -6.395600 2.115001 0.973790\nv -6.436002 2.106436 0.985770\nv -6.432674 1.994556 1.055730\nv -5.662365 0.319327 0.014327\nv -5.654130 0.637622 0.004776\nv -5.678872 0.319913 0.004776\nv -5.567191 0.636911 0.014326\nv -5.621512 0.318617 0.023877\nv -5.549762 0.316772 0.028652\nv -5.745218 -0.322582 0.023877\nv -5.818439 -0.655778 0.033999\nv -5.793291 -0.666414 0.041447\nv -5.673468 -0.324427 0.028652\nv -5.857554 -0.660152 0.004776\nv -5.843617 -0.654147 0.024450\nv -5.770397 -0.320952 0.014327\nv -5.786904 -0.320366 0.004776\nv -5.621512 1.286394 0.023877\nv -5.567191 0.968100 0.014326\nv -5.549762 1.288239 0.028652\nv -5.654130 0.967390 0.004776\nv -5.662365 1.285684 0.014327\nv -5.678872 1.285098 0.004776\nv -5.770397 1.925963 0.014327\nv -5.843617 2.259158 0.024450\nv -5.857554 2.265163 0.004776\nv -5.786904 1.925378 0.004776\nv -5.793291 2.271426 0.041447\nv -5.818439 2.260789 0.033999\nv -5.745218 1.927594 0.023877\nv -5.673468 1.929438 0.028652\nv -5.662373 0.816833 0.483178\nv -5.654153 0.807282 0.164883\nv -5.678880 0.807282 0.482593\nv -5.567214 0.816831 0.165594\nv -5.621520 0.826382 0.483889\nv -5.549770 0.831158 0.485734\nv -5.745222 0.826382 1.125088\nv -5.818439 0.836505 1.458283\nv -5.793291 0.843953 1.468920\nv -5.673470 0.831158 1.126933\nv -5.857554 0.807282 1.462658\nv -5.843617 0.826955 1.456653\nv -5.770399 0.816833 1.123458\nv -5.786907 0.807282 1.122872\nv -5.621520 0.826382 -0.483889\nv -5.567214 0.816831 -0.165594\nv -5.549770 0.831158 -0.485734\nv -5.654153 0.807282 -0.164883\nv -5.662373 0.816833 -0.483178\nv -5.678880 0.807282 -0.482593\nv -5.770399 0.816833 -1.123458\nv -5.843617 0.826955 -1.456653\nv -5.857554 0.807282 -1.462658\nv -5.786907 0.807282 -1.122872\nv -5.793291 0.843953 -1.468920\nv -5.818439 0.836505 -1.458283\nv -5.745222 0.826382 -1.125088\nv -5.673470 0.831158 -1.126933\nv -5.236672 0.310729 -0.014327\nv -5.055585 0.632729 -0.004776\nv -5.219225 0.310126 -0.004776\nv -5.150524 0.633505 -0.014326\nv -5.281282 0.311505 -0.023877\nv -5.353973 0.313366 -0.028652\nv -5.575592 -0.327919 -0.023877\nv -5.732744 -0.664128 -0.033999\nv -5.768106 -0.668046 -0.041447\nv -5.648283 -0.326058 -0.028652\nv -5.703842 -0.674308 -0.004776\nv -5.707567 -0.665758 -0.024450\nv -5.550415 -0.329550 -0.014327\nv -5.532968 -0.330152 -0.004776\nv -5.281282 0.311505 0.023877\nv -5.150524 0.633505 0.014326\nv -5.353973 0.313366 0.028652\nv -5.055585 0.632729 0.004776\nv -5.236672 0.310729 0.014327\nv -5.219225 0.310126 0.004776\nv -5.550415 -0.329550 0.014327\nv -5.707567 -0.665758 0.024450\nv -5.703842 -0.674308 0.004776\nv -5.532968 -0.330152 0.004776\nv -5.768106 -0.668046 0.041447\nv -5.732744 -0.664128 0.033999\nv -5.575592 -0.327919 0.023877\nv -5.648283 -0.326058 0.028652\nv -5.621512 0.318617 -0.023877\nv -5.567191 0.636911 -0.014326\nv -5.549762 0.316772 -0.028652\nv -5.654130 0.637622 -0.004776\nv -5.662365 0.319327 -0.014327\nv -5.678872 0.319913 -0.004776\nv -5.770397 -0.320952 -0.014327\nv -5.843617 -0.654147 -0.024450\nv -5.857554 -0.660152 -0.004776\nv -5.786904 -0.320366 -0.004776\nv -5.793291 -0.666414 -0.041447\nv -5.818439 -0.655778 -0.033999\nv -5.745218 -0.322582 -0.023877\nv -5.673468 -0.324427 -0.028652\nv -5.236681 0.816833 -0.491777\nv -5.055609 0.807282 -0.169776\nv -5.219234 0.807282 -0.492378\nv -5.150547 0.816831 -0.169000\nv -5.281291 0.826382 -0.491001\nv -5.353982 0.831158 -0.489140\nv -5.575594 0.826382 -1.130425\nv -5.732744 0.836505 -1.466634\nv -5.768106 0.843953 -1.470551\nv -5.648285 0.831158 -1.128564\nv -5.703842 0.807282 -1.476814\nv -5.707567 0.826955 -1.468264\nv -5.550417 0.816833 -1.132056\nv -5.532970 0.807282 -1.132658\nv -5.281291 0.778629 -0.491001\nv -5.150547 0.788180 -0.169000\nv -5.353982 0.773854 -0.489140\nv -5.055609 0.797730 -0.169776\nv -5.236681 0.788178 -0.491777\nv -5.219234 0.797730 -0.492378\nv -5.550417 0.788178 -1.132056\nv -5.707567 0.778056 -1.468264\nv -5.703842 0.797730 -1.476814\nv -5.532970 0.797730 -1.132658\nv -5.768106 0.761058 -1.470551\nv -5.732744 0.768506 -1.466634\nv -5.575594 0.778629 -1.130425\nv -5.648285 0.773854 -1.128564\nv -5.662373 0.788178 -0.483178\nv -5.654153 0.797730 -0.164883\nv -5.678880 0.797730 -0.482593\nv -5.567214 0.788180 -0.165594\nv -5.621520 0.778629 -0.483889\nv -5.549770 0.773854 -0.485734\nv -5.745222 0.778629 -1.125088\nv -5.818439 0.768506 -1.458283\nv -5.793291 0.761058 -1.468920\nv -5.673470 0.773854 -1.126933\nv -5.857554 0.797730 -1.462658\nv -5.843617 0.778056 -1.456653\nv -5.770399 0.788178 -1.123457\nv -5.786907 0.797730 -1.122872\nv -5.236681 0.788178 0.491777\nv -5.055609 0.797730 0.169776\nv -5.219234 0.797730 0.492378\nv -5.150547 0.788180 0.169000\nv -5.281291 0.778629 0.491001\nv -5.353982 0.773854 0.489140\nv -5.575594 0.778629 1.130425\nv -5.732744 0.768506 1.466634\nv -5.768106 0.761058 1.470551\nv -5.648285 0.773854 1.128564\nv -5.703842 0.797730 1.476814\nv -5.707567 0.778056 1.468264\nv -5.550417 0.788178 1.132056\nv -5.532970 0.797730 1.132658\nv -5.621520 0.778629 0.483889\nv -5.567214 0.788180 0.165594\nv -5.549770 0.773854 0.485734\nv -5.654153 0.797730 0.164883\nv -5.662373 0.788178 0.483178\nv -5.678880 0.797730 0.482593\nv -5.770399 0.788178 1.123458\nv -5.843617 0.778056 1.456653\nv -5.857554 0.797730 1.462658\nv -5.786907 0.797730 1.122872\nv -5.793291 0.761058 1.468920\nv -5.818439 0.768506 1.458283\nv -5.745222 0.778629 1.125088\nv -5.673470 0.773854 1.126933\nv -5.281291 0.826382 0.491001\nv -5.150547 0.816831 0.169000\nv -5.353982 0.831158 0.489140\nv -5.055609 0.807282 0.169776\nv -5.236681 0.816833 0.491777\nv -5.219234 0.807282 0.492378\nv -5.550417 0.816833 1.132056\nv -5.707567 0.826955 1.468264\nv -5.703842 0.807282 1.476814\nv -5.532970 0.807282 1.132658\nv -5.768106 0.843953 1.470551\nv -5.732744 0.836505 1.466634\nv -5.575594 0.826382 1.130425\nv -5.648285 0.831158 1.128564\nv -5.236672 1.294282 0.014327\nv -5.055585 0.972282 0.004776\nv -5.219225 1.294885 0.004776\nv -5.150524 0.971506 0.014326\nv -5.281282 1.293507 0.023877\nv -5.353973 1.291646 0.028652\nv -5.575592 1.932930 0.023877\nv -5.732744 2.269139 0.033999\nv -5.768106 2.273057 0.041447\nv -5.648283 1.931070 0.028652\nv -5.703842 2.279319 0.004776\nv -5.707567 2.270770 0.024450\nv -5.550415 1.934562 0.014327\nv -5.532968 1.935163 0.004776\nv -5.281282 1.293507 -0.023877\nv -5.150524 0.971506 -0.014326\nv -5.353973 1.291646 -0.028652\nv -5.055585 0.972282 -0.004776\nv -5.236672 1.294282 -0.014327\nv -5.219225 1.294885 -0.004776\nv -5.550415 1.934562 -0.014327\nv -5.707567 2.270770 -0.024450\nv -5.703842 2.279319 -0.004776\nv -5.532968 1.935163 -0.004776\nv -5.768106 2.273057 -0.041447\nv -5.732744 2.269139 -0.033999\nv -5.575592 1.932930 -0.023877\nv -5.648283 1.931070 -0.028652\nv -5.662365 1.285684 -0.014327\nv -5.654130 0.967390 -0.004776\nv -5.678872 1.285098 -0.004776\nv -5.567191 0.968100 -0.014326\nv -5.621512 1.286394 -0.023877\nv -5.549762 1.288239 -0.028652\nv -5.745218 1.927594 -0.023877\nv -5.818439 2.260789 -0.033999\nv -5.793291 2.271426 -0.041447\nv -5.673468 1.929438 -0.028652\nv -5.857554 2.265163 -0.004776\nv -5.843617 2.259158 -0.024450\nv -5.770397 1.925963 -0.014327\nv -5.786904 1.925378 -0.004776\nv -5.920925 2.326209 -0.039918\nv -6.012501 2.314141 -0.142722\nv -5.867057 2.315140 -0.179456\nv -5.851737 2.309087 -0.067039\nv -5.876886 2.298450 -0.059590\nv -5.890823 2.304455 -0.039918\nv -5.961326 2.332531 0.000000\nv -6.052902 2.320463 0.102805\nv -6.052902 2.320463 -0.102805\nv -6.012501 2.314141 0.142722\nv -5.920925 2.326209 0.039918\nv -5.890823 2.304455 0.039918\nv -5.876886 2.298450 0.059590\nv -5.851737 2.309087 0.067039\nv -5.867057 2.315140 0.179456\nv -5.745853 2.354991 0.039918\nv -5.745853 2.347372 0.145250\nv -5.786254 2.328774 0.179456\nv -5.770935 2.322721 0.067039\nv -5.735574 2.318803 0.059590\nv -5.731849 2.327352 0.039918\nv -5.745853 2.365859 0.000000\nv -5.745853 2.358239 -0.105333\nv -5.745853 2.358240 0.105333\nv -5.745853 2.347372 -0.145250\nv -5.745853 2.354991 -0.039918\nv -5.731849 2.327352 -0.039918\nv -5.735574 2.318803 -0.059590\nv -5.770935 2.322721 -0.067039\nv -5.786254 2.328774 -0.179456\nv -5.920925 0.842423 1.523703\nv -6.012501 0.945228 1.511635\nv -5.867057 0.981962 1.512634\nv -5.851737 0.869545 1.506582\nv -5.876886 0.862096 1.495945\nv -5.890823 0.842423 1.501950\nv -5.961326 0.802506 1.530026\nv -6.052902 0.699701 1.517958\nv -6.052902 0.905310 1.517958\nv -6.012501 0.659783 1.511635\nv -5.920925 0.762588 1.523703\nv -5.890823 0.762588 1.501950\nv -5.876886 0.742915 1.495945\nv -5.851737 0.735466 1.506582\nv -5.867057 0.623050 1.512634\nv -5.745853 0.762588 1.552486\nv -5.745853 0.657255 1.544866\nv -5.786254 0.623050 1.526268\nv -5.770935 0.735466 1.520215\nv -5.735574 0.742915 1.516298\nv -5.731849 0.762588 1.524846\nv -5.745853 0.802506 1.563353\nv -5.745853 0.907838 1.555734\nv -5.745853 0.697173 1.555735\nv -5.745853 0.947756 1.544866\nv -5.745853 0.842423 1.552486\nv -5.731849 0.842423 1.524846\nv -5.735574 0.862096 1.516298\nv -5.770935 0.869545 1.520215\nv -5.786254 0.981962 1.526268\nv -5.920925 -0.721198 0.039918\nv -6.012501 -0.709130 0.142722\nv -5.867057 -0.710129 0.179456\nv -5.851737 -0.704076 0.067039\nv -5.876886 -0.693439 0.059590\nv -5.890823 -0.699444 0.039918\nv -5.961326 -0.727520 0.000000\nv -6.052902 -0.715452 -0.102805\nv -6.052902 -0.715452 0.102805\nv -6.012501 -0.709130 -0.142722\nv -5.920925 -0.721198 -0.039918\nv -5.890823 -0.699444 -0.039918\nv -5.876886 -0.693439 -0.059590\nv -5.851737 -0.704076 -0.067039\nv -5.867057 -0.710129 -0.179456\nv -5.745853 -0.749980 -0.039918\nv -5.745853 -0.742361 -0.145250\nv -5.786254 -0.723762 -0.179456\nv -5.770935 -0.717710 -0.067039\nv -5.735574 -0.713792 -0.059590\nv -5.731849 -0.722341 -0.039918\nv -5.745853 -0.760847 0.000000\nv -5.745853 -0.753228 0.105333\nv -5.745853 -0.753229 -0.105333\nv -5.745853 -0.742361 0.145250\nv -5.745853 -0.749980 0.039918\nv -5.731849 -0.722341 0.039918\nv -5.735574 -0.713792 0.059590\nv -5.770935 -0.717710 0.067039\nv -5.786254 -0.723762 0.179456\nv -5.920925 0.762588 -1.523703\nv -6.012501 0.659783 -1.511635\nv -5.867057 0.623050 -1.512634\nv -5.851737 0.735466 -1.506582\nv -5.876886 0.742915 -1.495945\nv -5.890823 0.762588 -1.501950\nv -5.961326 0.802506 -1.530026\nv -6.052902 0.905310 -1.517958\nv -6.052902 0.699701 -1.517958\nv -6.012501 0.945228 -1.511635\nv -5.920925 0.842423 -1.523703\nv -5.890823 0.842423 -1.501950\nv -5.876886 0.862096 -1.495945\nv -5.851737 0.869545 -1.506582\nv -5.867057 0.981962 -1.512634\nv -5.745853 0.842423 -1.552486\nv -5.745853 0.947756 -1.544866\nv -5.786254 0.981962 -1.526268\nv -5.770935 0.869545 -1.520215\nv -5.735574 0.862096 -1.516298\nv -5.731849 0.842423 -1.524846\nv -5.745853 0.802506 -1.563353\nv -5.745853 0.697173 -1.555734\nv -5.745853 0.907838 -1.555735\nv -5.745853 0.657255 -1.544866\nv -5.745853 0.762588 -1.552486\nv -5.731849 0.762588 -1.524846\nv -5.735574 0.742915 -1.516298\nv -5.770935 0.735466 -1.520215\nv -5.786254 0.623050 -1.526268\nv -5.786254 1.608455 1.312736\nv -5.786254 1.801940 1.172162\nv -5.745853 1.811463 1.181685\nv -5.745853 1.614570 1.324736\nv -5.867057 1.793926 1.161132\nv -5.867057 1.600442 1.301706\nv -6.028662 1.597385 1.295707\nv -6.028662 1.789166 1.156371\nv -5.786254 1.183310 1.494377\nv -5.786254 1.390806 1.423634\nv -5.745853 1.396920 1.435634\nv -5.745853 1.149105 1.512976\nv -5.867057 1.386593 1.410668\nv -5.867057 1.179098 1.481410\nv -6.012501 1.142363 1.480412\nv -6.028662 1.383536 1.404669\nv -5.786254 0.214205 1.423634\nv -5.786254 0.421701 1.494377\nv -5.745853 0.455906 1.512976\nv -5.745853 0.208091 1.435634\nv -5.867057 0.425914 1.481410\nv -5.867057 0.218418 1.410668\nv -6.028662 0.221475 1.404669\nv -6.012501 0.462648 1.480412\nv -5.786254 -0.196929 1.172162\nv -5.786254 -0.003444 1.312736\nv -5.745853 -0.009558 1.324736\nv -5.745853 -0.206452 1.181685\nv -5.867057 0.004570 1.301706\nv -5.867057 -0.188915 1.161132\nv -6.028662 -0.184154 1.156371\nv -6.028662 0.007626 1.295707\nv -5.786254 -0.510230 0.805950\nv -5.786254 -0.369656 0.999434\nv -5.745853 -0.379179 1.008958\nv -5.745853 -0.522230 0.812064\nv -5.867057 -0.358626 0.991421\nv -5.867057 -0.499201 0.797936\nv -6.028662 -0.493202 0.794879\nv -6.028662 -0.353866 0.986660\nv -5.786254 -0.691871 0.380805\nv -5.786254 -0.621128 0.588301\nv -5.745853 -0.633128 0.594414\nv -5.745853 -0.710470 0.346599\nv -5.867057 -0.608162 0.584087\nv -5.867057 -0.678905 0.376592\nv -6.012501 -0.677906 0.339858\nv -6.028662 -0.602163 0.581030\nv -5.786254 -0.621128 -0.588301\nv -5.786254 -0.691871 -0.380805\nv -5.745853 -0.710470 -0.346599\nv -5.745853 -0.633128 -0.594414\nv -5.867057 -0.678905 -0.376592\nv -5.867057 -0.608162 -0.584087\nv -6.028662 -0.602163 -0.581030\nv -6.012501 -0.677906 -0.339858\nv -5.786254 -0.369656 -0.999434\nv -5.786254 -0.510230 -0.805950\nv -5.745853 -0.522230 -0.812064\nv -5.745853 -0.379179 -1.008958\nv -5.867057 -0.499201 -0.797936\nv -5.867057 -0.358626 -0.991421\nv -6.028662 -0.353866 -0.986660\nv -6.028662 -0.493202 -0.794879\nv -5.786254 -0.003444 -1.312736\nv -5.786254 -0.196929 -1.172162\nv -5.745853 -0.206452 -1.181685\nv -5.745853 -0.009558 -1.324736\nv -5.867057 -0.188915 -1.161132\nv -5.867057 0.004570 -1.301706\nv -6.028662 0.007626 -1.295707\nv -6.028662 -0.184154 -1.156371\nv -5.786254 0.421701 -1.494377\nv -5.786254 0.214205 -1.423634\nv -5.745853 0.208091 -1.435634\nv -5.745853 0.455906 -1.512976\nv -5.867057 0.218418 -1.410668\nv -5.867057 0.425914 -1.481410\nv -6.012501 0.462648 -1.480412\nv -6.028662 0.221475 -1.404669\nv -5.786254 1.390806 -1.423634\nv -5.786254 1.183310 -1.494377\nv -5.745853 1.149105 -1.512976\nv -5.745853 1.396920 -1.435634\nv -5.867057 1.179098 -1.481410\nv -5.867057 1.386593 -1.410668\nv -6.028662 1.383536 -1.404669\nv -6.012501 1.142363 -1.480412\nv -5.786254 1.801940 -1.172162\nv -5.786254 1.608455 -1.312736\nv -5.745853 1.614570 -1.324736\nv -5.745853 1.811463 -1.181685\nv -5.867057 1.600442 -1.301706\nv -5.867057 1.793926 -1.161132\nv -6.028662 1.789166 -1.156371\nv -6.028662 1.597385 -1.295707\nv -5.786254 2.115242 -0.805950\nv -5.786254 1.974667 -0.999434\nv -5.745853 1.984190 -1.008958\nv -5.745853 2.127242 -0.812064\nv -5.867057 1.963638 -0.991421\nv -5.867057 2.104212 -0.797936\nv -6.028662 2.098213 -0.794879\nv -6.028662 1.958877 -0.986660\nv -5.786254 2.296882 -0.380805\nv -5.786254 2.226139 -0.588301\nv -5.745853 2.238139 -0.594414\nv -5.745853 2.315482 -0.346599\nv -5.867057 2.213174 -0.584087\nv -5.867057 2.283916 -0.376592\nv -6.012501 2.282918 -0.339858\nv -6.028662 2.207175 -0.581030\nv -5.867057 2.104212 0.797936\nv -5.867057 1.963638 0.991421\nv -6.028662 1.958877 0.986660\nv -6.028662 2.098213 0.794879\nv -5.786254 1.974667 0.999434\nv -5.786254 2.115242 0.805950\nv -5.745853 2.127242 0.812064\nv -5.745853 1.984190 1.008958\nv -5.786254 2.226139 0.588301\nv -5.786254 2.296882 0.380805\nv -5.745853 2.315482 0.346599\nv -5.745853 2.238139 0.594414\nv -5.867057 2.283916 0.376592\nv -5.867057 2.213174 0.584087\nv -6.028662 2.207175 0.581030\nv -6.012501 2.282918 0.339858\nv -6.513477 1.974667 -0.999434\nv -6.513477 2.115242 -0.805950\nv -6.553877 2.118239 -0.830721\nv -6.553877 1.999152 -0.994630\nv -6.432674 2.104212 -0.797936\nv -6.432674 1.963638 -0.991421\nv -6.271069 1.958877 -0.986660\nv -6.271069 2.098213 -0.794879\nv -6.513477 1.608455 -1.312736\nv -6.513477 1.801940 -1.172162\nv -6.553877 1.826425 -1.167358\nv -6.553877 1.614570 -1.324736\nv -6.432674 1.793926 -1.161132\nv -6.432674 1.600442 -1.301706\nv -6.271069 1.597385 -1.295707\nv -6.271069 1.789166 -1.156371\nv -6.513477 1.163352 -1.497538\nv -6.513477 1.390806 -1.423634\nv -6.553877 1.396920 -1.435634\nv -6.553877 1.165458 -1.510840\nv -6.432674 1.386593 -1.410668\nv -6.432674 1.159138 -1.484572\nv -6.254909 1.142363 -1.480412\nv -6.271069 1.383536 -1.404669\nv -6.513477 0.682926 -1.535751\nv -6.513477 0.922086 -1.535751\nv -6.553877 0.924192 -1.549053\nv -6.553877 0.680819 -1.549053\nv -6.432674 0.922086 -1.522118\nv -6.432674 0.682926 -1.522118\nv -6.254909 0.699701 -1.517958\nv -6.254909 0.905310 -1.517958\nv -6.513477 0.214205 -1.423634\nv -6.513477 0.441659 -1.497538\nv -6.553877 0.439553 -1.510840\nv -6.553877 0.208091 -1.435634\nv -6.432674 0.445873 -1.484572\nv -6.432674 0.218418 -1.410668\nv -6.271069 0.221475 -1.404669\nv -6.254909 0.462648 -1.480412\nv -6.513477 -0.196929 -1.172162\nv -6.513477 -0.003444 -1.312736\nv -6.553877 -0.009558 -1.324736\nv -6.553877 -0.221414 -1.167358\nv -6.432674 0.004570 -1.301706\nv -6.432674 -0.188915 -1.161132\nv -6.271069 -0.184154 -1.156371\nv -6.271069 0.007626 -1.295707\nv -6.513477 -0.510230 -0.805950\nv -6.513477 -0.369656 -0.999434\nv -6.553877 -0.394141 -0.994630\nv -6.553877 -0.513228 -0.830721\nv -6.432674 -0.358626 -0.991421\nv -6.432674 -0.499201 -0.797936\nv -6.271069 -0.493202 -0.794879\nv -6.271069 -0.353866 -0.986660\nv -6.513477 -0.695033 -0.360846\nv -6.513477 -0.621128 -0.588301\nv -6.553877 -0.624126 -0.613072\nv -6.553877 -0.708334 -0.362953\nv -6.432674 -0.608162 -0.584087\nv -6.432674 -0.682066 -0.356633\nv -6.254909 -0.677906 -0.339858\nv -6.271069 -0.602163 -0.581030\nv -6.513477 -0.733246 0.119580\nv -6.513477 -0.733246 -0.119580\nv -6.553877 -0.746547 -0.121686\nv -6.553877 -0.746547 0.121686\nv -6.432674 -0.719612 -0.119580\nv -6.432674 -0.719612 0.119580\nv -6.254909 -0.715452 0.102805\nv -6.254909 -0.715452 -0.102805\nv -6.513477 -0.621128 0.588301\nv -6.513477 -0.695033 0.360846\nv -6.553877 -0.708334 0.362953\nv -6.553877 -0.624126 0.613072\nv -6.432674 -0.682066 0.356633\nv -6.432674 -0.608162 0.584087\nv -6.271069 -0.602163 0.581030\nv -6.254909 -0.677906 0.339858\nv -6.513477 -0.369656 0.999434\nv -6.513477 -0.510230 0.805950\nv -6.553877 -0.513228 0.830721\nv -6.553877 -0.394141 0.994630\nv -6.432674 -0.499201 0.797936\nv -6.432674 -0.358626 0.991421\nv -6.271069 -0.353866 0.986660\nv -6.271069 -0.493202 0.794879\nv -6.513477 -0.003444 1.312736\nv -6.513477 -0.196929 1.172162\nv -6.553877 -0.221414 1.167358\nv -6.553877 -0.009558 1.324736\nv -6.432674 -0.188915 1.161132\nv -6.432674 0.004570 1.301706\nv -6.271069 0.007626 1.295707\nv -6.271069 -0.184154 1.156371\nv -6.513477 0.441659 1.497538\nv -6.513477 0.214205 1.423634\nv -6.553877 0.208091 1.435634\nv -6.553877 0.439553 1.510840\nv -6.432674 0.218418 1.410668\nv -6.432674 0.445873 1.484572\nv -6.254909 0.462648 1.480412\nv -6.271069 0.221475 1.404669\nv -6.513477 0.922086 1.535751\nv -6.513477 0.682926 1.535751\nv -6.553877 0.680819 1.549053\nv -6.553877 0.924192 1.549053\nv -6.432674 0.682926 1.522118\nv -6.432674 0.922086 1.522118\nv -6.254909 0.905310 1.517958\nv -6.254909 0.699701 1.517958\nv -6.513477 1.390806 1.423634\nv -6.513477 1.163352 1.497538\nv -6.553877 1.165458 1.510840\nv -6.553877 1.396920 1.435634\nv -6.432674 1.159138 1.484572\nv -6.432674 1.386593 1.410668\nv -6.271069 1.383536 1.404669\nv -6.254909 1.142363 1.480412\nv -6.513477 1.801940 1.172162\nv -6.513477 1.608455 1.312736\nv -6.553877 1.614570 1.324736\nv -6.553877 1.826425 1.167358\nv -6.432674 1.600442 1.301706\nv -6.432674 1.793926 1.161132\nv -6.271069 1.789166 1.156371\nv -6.271069 1.597385 1.295707\nv -6.513477 2.115242 0.805950\nv -6.513477 1.974667 0.999434\nv -6.553877 1.999152 0.994630\nv -6.553877 2.118239 0.830721\nv -6.432674 1.963638 0.991421\nv -6.432674 2.104212 0.797936\nv -6.271069 2.098213 0.794879\nv -6.271069 1.958877 0.986660\nv -6.513477 2.300044 0.360846\nv -6.513477 2.226139 0.588301\nv -6.553877 2.229137 0.613072\nv -6.553877 2.313346 0.362953\nv -6.432674 2.213174 0.584087\nv -6.432674 2.287078 0.356633\nv -6.254909 2.282918 0.339858\nv -6.271069 2.207175 0.581030\nv -6.432674 2.287078 -0.356633\nv -6.432674 2.213174 -0.584087\nv -6.271069 2.207175 -0.581030\nv -6.254909 2.282918 -0.339858\nv -6.513477 2.226139 -0.588301\nv -6.513477 2.300044 -0.360846\nv -6.553877 2.313346 -0.362953\nv -6.553877 2.229137 -0.613072\nv -6.513477 2.338258 -0.119580\nv -6.513477 2.338258 0.119580\nv -6.553877 2.351558 0.121686\nv -6.553877 2.351558 -0.121686\nv -6.432674 2.324623 0.119580\nv -6.432674 2.324623 -0.119580\nv -6.254909 2.320463 -0.102805\nv -6.254909 2.320463 0.102805\nv -6.432674 1.636714 -1.358798\nv -6.432674 1.829942 -1.220344\nv -6.291310 1.856823 -1.202985\nv -6.271069 1.639770 -1.364798\nv -6.513477 1.821929 -1.209314\nv -6.513477 1.628700 -1.347769\nv -6.553877 1.622586 -1.335769\nv -6.553877 1.834441 -1.178391\nv -6.432674 1.175993 -1.550078\nv -6.432674 1.411462 -1.473570\nv -6.271069 1.414518 -1.479569\nv -6.271069 1.177046 -1.556729\nv -6.513477 1.407249 -1.460604\nv -6.513477 1.171779 -1.537113\nv -6.553877 1.169673 -1.523810\nv -6.553877 1.401134 -1.448604\nv -6.432674 0.678712 -1.589626\nv -6.432674 0.926299 -1.589626\nv -6.271069 0.927352 -1.596276\nv -6.271069 0.677659 -1.596276\nv -6.513477 0.926299 -1.575993\nv -6.513477 0.678712 -1.575993\nv -6.553877 0.680819 -1.562691\nv -6.553877 0.924192 -1.562690\nv -6.432674 0.193550 -1.473570\nv -6.432674 0.429018 -1.550078\nv -6.271069 0.427966 -1.556729\nv -6.271069 0.190493 -1.479570\nv -6.513477 0.433232 -1.537113\nv -6.513477 0.197762 -1.460604\nv -6.553877 0.203877 -1.448604\nv -6.553877 0.435338 -1.523810\nv -6.432674 -0.224931 -1.220344\nv -6.432674 -0.031702 -1.358798\nv -6.271069 -0.034759 -1.364798\nv -6.291310 -0.251812 -1.202985\nv -6.513477 -0.023689 -1.347769\nv -6.513477 -0.216918 -1.209314\nv -6.553877 -0.229430 -1.178391\nv -6.553877 -0.017574 -1.335769\nv -6.432674 -0.747573 -0.373487\nv -6.432674 -0.675606 -0.600043\nv -6.291310 -0.667403 -0.630973\nv -6.271069 -0.754223 -0.374540\nv -6.513477 -0.662640 -0.595830\nv -6.513477 -0.734607 -0.369274\nv -6.553877 -0.721305 -0.367167\nv -6.553877 -0.637096 -0.617286\nv -6.432674 -0.787121 0.123794\nv -6.432674 -0.787121 -0.123794\nv -6.271069 -0.793770 -0.124846\nv -6.271069 -0.793770 0.124846\nv -6.513477 -0.773487 -0.123794\nv -6.513477 -0.773487 0.123794\nv -6.553877 -0.760186 0.121686\nv -6.553877 -0.760185 -0.121686\nv -6.432674 -0.675606 0.600043\nv -6.432674 -0.747573 0.373487\nv -6.271069 -0.754223 0.374540\nv -6.291310 -0.667403 0.630973\nv -6.513477 -0.734607 0.369274\nv -6.513477 -0.662640 0.595830\nv -6.553877 -0.637096 0.617286\nv -6.553877 -0.721305 0.367167\nv -6.432674 -0.031702 1.358798\nv -6.432674 -0.224931 1.220344\nv -6.291310 -0.251812 1.202985\nv -6.271069 -0.034759 1.364798\nv -6.513477 -0.216918 1.209314\nv -6.513477 -0.023689 1.347769\nv -6.553877 -0.017574 1.335769\nv -6.553877 -0.229430 1.178391\nv -6.432674 0.429018 1.550078\nv -6.432674 0.193550 1.473570\nv -6.271069 0.190493 1.479569\nv -6.271069 0.427966 1.556729\nv -6.513477 0.197762 1.460604\nv -6.513477 0.433232 1.537113\nv -6.553877 0.435338 1.523810\nv -6.553877 0.203877 1.448604\nv -6.432674 0.926299 1.589626\nv -6.432674 0.678712 1.589626\nv -6.271069 0.677659 1.596276\nv -6.271069 0.927352 1.596276\nv -6.513477 0.678712 1.575993\nv -6.513477 0.926299 1.575993\nv -6.553877 0.924192 1.562691\nv -6.553877 0.680819 1.562690\nv -6.432674 1.411462 1.473570\nv -6.432674 1.175993 1.550078\nv -6.271069 1.177046 1.556729\nv -6.271069 1.414518 1.479570\nv -6.513477 1.171779 1.537113\nv -6.513477 1.407249 1.460604\nv -6.553877 1.401134 1.448604\nv -6.553877 1.169673 1.523810\nv -6.432674 1.829942 1.220344\nv -6.432674 1.636714 1.358798\nv -6.271069 1.639770 1.364798\nv -6.291310 1.856823 1.202985\nv -6.513477 1.628700 1.347769\nv -6.513477 1.821929 1.209314\nv -6.553877 1.834441 1.178391\nv -6.553877 1.622586 1.335769\nv -6.432674 2.352584 0.373487\nv -6.432674 2.280617 0.600043\nv -6.291310 2.272414 0.630973\nv -6.271069 2.359235 0.374540\nv -6.513477 2.267651 0.595830\nv -6.513477 2.339618 0.369274\nv -6.553877 2.326316 0.367167\nv -6.553877 2.242107 0.617286\nv -6.513477 2.339618 -0.369274\nv -6.513477 2.267651 -0.595830\nv -6.553877 2.242107 -0.617286\nv -6.553877 2.326316 -0.367167\nv -6.432674 2.280617 -0.600043\nv -6.432674 2.352584 -0.373487\nv -6.271069 2.359235 -0.374540\nv -6.291310 2.272414 -0.630973\nv -6.432674 2.392132 -0.123794\nv -6.432674 2.392132 0.123794\nv -6.271069 2.398782 0.124846\nv -6.271069 2.398782 -0.124846\nv -6.513477 2.378499 0.123794\nv -6.513477 2.378499 -0.123794\nv -6.553877 2.365197 -0.121686\nv -6.553877 2.365196 0.121686\nv -5.786254 2.339618 0.369274\nv -5.786254 2.263110 0.604743\nv -5.745853 2.251110 0.598629\nv -5.745853 2.328452 0.350814\nv -5.867057 2.276076 0.608956\nv -5.867057 2.352584 0.373487\nv -6.028662 2.359235 0.374540\nv -6.048903 2.272414 0.630973\nv -5.786254 2.378499 -0.123794\nv -5.786254 2.378499 0.123794\nv -5.745853 2.367332 0.105333\nv -5.745853 2.367332 -0.105333\nv -5.867057 2.392132 0.123794\nv -5.867057 2.392132 -0.123794\nv -6.028662 2.398782 -0.124846\nv -6.028662 2.398782 0.124846\nv -5.786254 2.263110 -0.604743\nv -5.786254 2.339618 -0.369274\nv -5.745853 2.328451 -0.350814\nv -5.745853 2.251110 -0.598629\nv -5.867057 2.352584 -0.373487\nv -5.867057 2.276076 -0.608956\nv -6.048903 2.272414 -0.630973\nv -6.028662 2.359235 -0.374540\nv -5.786254 2.004746 -1.026496\nv -5.786254 2.150275 -0.826194\nv -5.745853 2.138274 -0.820080\nv -5.745853 1.995224 -1.016974\nv -5.867057 2.161304 -0.834208\nv -5.867057 2.015776 -1.034510\nv -6.048903 2.035584 -1.024224\nv -6.048903 2.157643 -0.856225\nv -5.786254 1.628700 -1.347769\nv -5.786254 1.829002 -1.202241\nv -5.745853 1.819479 -1.192718\nv -5.745853 1.622586 -1.335769\nv -5.867057 1.837016 -1.213270\nv -5.867057 1.636714 -1.358798\nv -6.028662 1.639770 -1.364798\nv -6.048903 1.856823 -1.202985\nv -5.786254 1.171779 -1.537113\nv -5.786254 1.407249 -1.460604\nv -5.745853 1.401134 -1.448604\nv -5.745853 1.153319 -1.525946\nv -5.867057 1.411462 -1.473570\nv -5.867057 1.175993 -1.550078\nv -6.028662 1.177046 -1.556729\nv -6.028662 1.414518 -1.479569\nv -5.786254 0.678712 -1.575993\nv -5.786254 0.926299 -1.575993\nv -5.745853 0.907838 -1.564826\nv -5.745853 0.697173 -1.564826\nv -5.867057 0.926299 -1.589626\nv -5.867057 0.678712 -1.589626\nv -6.028662 0.677659 -1.596276\nv -6.028662 0.927352 -1.596276\nv -5.786254 0.197762 -1.460604\nv -5.786254 0.433232 -1.537113\nv -5.745853 0.451692 -1.525946\nv -5.745853 0.203877 -1.448604\nv -5.867057 0.429018 -1.550078\nv -5.867057 0.193550 -1.473570\nv -6.028662 0.190493 -1.479570\nv -6.028662 0.427966 -1.556729\nv -5.786254 -0.223990 -1.202241\nv -5.786254 -0.023689 -1.347769\nv -5.745853 -0.017574 -1.335769\nv -5.745853 -0.214468 -1.192718\nv -5.867057 -0.031702 -1.358798\nv -5.867057 -0.232005 -1.213270\nv -6.048903 -0.251812 -1.202985\nv -6.028662 -0.034759 -1.364798\nv -5.786254 -0.545263 -0.826194\nv -5.786254 -0.399735 -1.026496\nv -5.745853 -0.390212 -1.016974\nv -5.745853 -0.533263 -0.820080\nv -5.867057 -0.410765 -1.034510\nv -5.867057 -0.556293 -0.834208\nv -6.048903 -0.552631 -0.856225\nv -6.048903 -0.430573 -1.024224\nv -5.786254 -0.734607 -0.369274\nv -5.786254 -0.658098 -0.604743\nv -5.745853 -0.646098 -0.598629\nv -5.745853 -0.723441 -0.350814\nv -5.867057 -0.671065 -0.608956\nv -5.867057 -0.747573 -0.373487\nv -6.028662 -0.754223 -0.374540\nv -6.048903 -0.667403 -0.630973\nv -5.786254 -0.773487 0.123794\nv -5.786254 -0.773487 -0.123794\nv -5.745853 -0.762321 -0.105333\nv -5.745853 -0.762321 0.105333\nv -5.867057 -0.787121 -0.123794\nv -5.867057 -0.787121 0.123794\nv -6.028662 -0.793770 0.124846\nv -6.028662 -0.793770 -0.124846\nv -5.786254 -0.658098 0.604743\nv -5.786254 -0.734607 0.369274\nv -5.745853 -0.723440 0.350814\nv -5.745853 -0.646098 0.598629\nv -5.867057 -0.747573 0.373487\nv -5.867057 -0.671065 0.608956\nv -6.048903 -0.667403 0.630973\nv -6.028662 -0.754223 0.374540\nv -5.786254 -0.399735 1.026496\nv -5.786254 -0.545263 0.826194\nv -5.745853 -0.533263 0.820080\nv -5.745853 -0.390212 1.016974\nv -5.867057 -0.556293 0.834208\nv -5.867057 -0.410765 1.034510\nv -6.048903 -0.430573 1.024224\nv -6.048903 -0.552632 0.856225\nv -5.786254 -0.023689 1.347769\nv -5.786254 -0.223990 1.202241\nv -5.745853 -0.214468 1.192718\nv -5.745853 -0.017574 1.335769\nv -5.867057 -0.232005 1.213270\nv -5.867057 -0.031702 1.358798\nv -6.028662 -0.034759 1.364798\nv -6.048903 -0.251812 1.202985\nv -5.786254 0.433232 1.537113\nv -5.786254 0.197762 1.460604\nv -5.745853 0.203877 1.448604\nv -5.745853 0.451692 1.525946\nv -5.867057 0.193550 1.473570\nv -5.867057 0.429018 1.550078\nv -6.028662 0.427966 1.556729\nv -6.028662 0.190493 1.479569\nv -5.786254 0.926299 1.575993\nv -5.786254 0.678712 1.575993\nv -5.745853 0.697173 1.564826\nv -5.745853 0.907838 1.564826\nv -5.867057 0.678712 1.589626\nv -5.867057 0.926299 1.589626\nv -6.028662 0.927352 1.596276\nv -6.028662 0.677659 1.596276\nv -5.786254 1.407249 1.460604\nv -5.786254 1.171779 1.537113\nv -5.745853 1.153319 1.525946\nv -5.745853 1.401134 1.448604\nv -5.867057 1.175993 1.550078\nv -5.867057 1.411462 1.473570\nv -6.028662 1.414518 1.479570\nv -6.028662 1.177046 1.556729\nv -5.867057 2.015776 1.034510\nv -5.867057 2.161304 0.834208\nv -6.048903 2.157642 0.856225\nv -6.048903 2.035584 1.024224\nv -5.786254 2.150275 0.826194\nv -5.786254 2.004746 1.026496\nv -5.745853 1.995224 1.016974\nv -5.745853 2.138274 0.820080\nv -5.786254 1.829002 1.202241\nv -5.786254 1.628700 1.347769\nv -5.745853 1.622586 1.335769\nv -5.745853 1.819479 1.192718\nv -5.867057 1.636714 1.358798\nv -5.867057 1.837016 1.213270\nv -6.048903 1.856823 1.202985\nv -6.028662 1.639770 1.364798\n# 5797 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng shroud\nf 5049 5019 5021 5033 5035 4907 4909 5047\nf 4951 4935 4937 4963 4965 4879 4881 4949\nf 5124 5125 5123\nf 5184 5185 5183\nf 5214 5215 5213\nf 5154 5155 5153\nf 5077 5061 5063 4893 4895 5089 5091 5075\nf 4993 4977 4979 4921 4923 5005 5007 4991\ns 853\nf 5127 5129 5126\nf 5149 5151 5148\nf 5179 5180 5181\nf 5187 5189 5186\nf 5209 5211 5208\nf 5772 5593 5592 5773\nf 5740 5569 5568 5741\nf 5708 5545 5544 5709\nf 5676 5513 5512 5677\nf 5644 5617 5616 5645\nf 5464 5605 5604 5465\nf 5432 4807 4806 5433\nf 5400 4781 4780 5401\nf 5368 5525 5524 5369\nf 5504 5637 5636 5505\nf 5240 5761 5760 5241\nf 5340 5789 5788 5341\nf 5320 5665 5664 5321\nf 5296 5697 5696 5297\nf 5184 5729 5728 5185\nf 5260 5437 5436 5261\nf 5236 5469 5468 5237\nf 5109 5509 5508 5110\nf 5308 5373 5372 5309\nf 5284 5405 5404 5285\nf 5794 5791 5790 5795\nf 5762 5759 5758 5763\nf 5730 5727 5726 5731\nf 5698 5695 5694 5699\nf 5666 5663 5662 5667\nf 5634 5631 5630 5635\nf 5602 5599 5598 5603\nf 5570 5567 5566 5571\nf 5538 5535 5534 5539\nf 5506 5503 5502 5507\nf 5474 5471 5470 5475\nf 5442 5439 5438 5443\nf 5410 5407 5406 5411\nf 5378 5375 5374 5379\nf 5346 5343 5342 5347\nf 5314 5311 5310 5315\nf 5282 5279 5278 5283\nf 5250 5247 5246 5251\nf 5787 5790 5793 5788\nf 5775 5766 5769 5776\nf 5759 5750 5753 5760\nf 5743 5734 5737 5744\nf 5727 5718 5721 5728\nf 5711 5702 5705 5712\nf 5695 5686 5689 5696\nf 5679 5670 5673 5680\nf 5663 5654 5657 5664\nf 5647 5638 5641 5648\nf 5627 5630 5633 5628\nf 5615 4867 4866 5616\nf 5607 5598 5601 5608\nf 5591 5582 5585 5592\nf 5575 4815 4814 5576\nf 5567 5558 5561 5568\nf 5551 4789 4788 5552\nf 5543 5534 5537 5544\nf 5527 5518 5521 5528\nf 5511 4841 4840 5512\nf 5499 5502 5505 5500\nf 5487 5478 5481 5488\nf 5471 5462 5465 5472\nf 5455 5446 5449 5456\nf 5439 5430 5433 5440\nf 5423 5414 5417 5424\nf 5407 5398 5401 5408\nf 5391 5382 5385 5392\nf 5375 5366 5369 5376\nf 5359 5350 5353 5360\nf 5339 5342 5345 5340\nf 5327 5318 5321 5328\nf 5311 5302 5305 5312\nf 5221 5294 5297 5216\nf 5287 5278 5281 5288\nf 5271 5179 5178 5272\nf 5263 5254 5257 5264\nf 5247 5238 5241 5248\nf 5161 5230 5233 5156\nf 5223 5338 5341 5224\nf 5212 5218 5217 5207\nf 5182 5188 5187 5177\nf 5152 5158 5157 5147\nf 5122 5128 5127 5117\nf 4869 4875 4874 4865\nf 4843 4849 4848 4839\nf 4821 4819 4818 4822\nf 4795 4793 4792 4796\nf 4837 4842 4841 4838\nf 4757 4752 4751 4754\nf 4749 4744 4743 4746\nf 4673 4670 4669 4671\nf 4667 4664 4663 4665\nf 5787 5788 5789 5786\nf 5771 5772 5773 5770\nf 5755 5756 5757 5754\nf 5739 5740 5741 5738\nf 5723 5724 5725 5722\nf 5707 5708 5709 5706\nf 5691 5692 5693 5690\nf 5675 5676 5677 5674\nf 5659 5660 5661 5658\nf 5643 5644 5645 5642\nf 5627 5628 5629 5626\nf 5611 5612 5613 5610\nf 5595 5596 5597 5594\nf 5579 5580 5581 5578\nf 5563 5564 5565 5562\nf 5547 5548 5549 5546\nf 5531 5532 5533 5530\nf 5515 5516 5517 5514\nf 5499 5500 5501 5498\nf 5483 5484 5485 5482\nf 5467 5468 5469 5466\nf 5451 5452 5453 5450\nf 5435 5436 5437 5434\nf 5419 5420 5421 5418\nf 5403 5404 5405 5402\nf 5387 5388 5389 5386\nf 5371 5372 5373 5370\nf 5355 5356 5357 5354\nf 5339 5340 5341 5338\nf 5323 5324 5325 5322\nf 5307 5308 5309 5306\nf 5291 5292 5293 5290\nf 5275 5276 5277 5274\nf 5259 5260 5261 5258\nf 5243 5244 5245 5242\nf 5227 5228 5229 5226\nf 5219 5221 5216\nf 5189 5190 5191\nf 5181 5182 5177\nf 5159 5161 5156\nf 5129 5130 5131\nf 5121 5122 5117\nf 4875 4876 4873\nf 4865 4866 4867\nf 4868 4869 4865\nf 4850 4851 4848\nf 4839 4840 4841\nf 4841 4843 4839\nf 4825 4821 4822\nf 4822 4823 4824\nf 4815 4816 4817\nf 4798 4799 4795\nf 4796 4797 4795\nf 4787 4789 4790\nf 4755 4756 4757 4754\nf 4672 4673 4671\nf 4662 4672 4752 4757\nf 4742 4755 4829 4850\nf 4670 4673 4664 4667\nf 4831 4826 4835\nf 5153 5147 5157\nf 5234 5227 5222 5231\nf 5258 5251 5246 5255\nf 5282 5275 5270 5279\nf 5306 5206 5209 5303\nf 5104 5331 5326 5131\nf 5362 5355 5350 5359\nf 5394 5387 5382 5391\nf 5426 5419 5414 5423\nf 5458 5451 5446 5455\nf 5490 5483 5478 5487\nf 5514 4838 4841 5511\nf 5546 5539 5534 5543\nf 5570 5563 5558 5567\nf 5594 5587 5582 5591\nf 5618 4864 4867 5615\nf 5650 5643 5638 5647\nf 5682 5675 5670 5679\nf 5714 5707 5702 5711\nf 5746 5739 5734 5743\nf 5778 5771 5766 5775\nf 5429 5268 5163 5170 5420\nf 5397 5292 5301 5388\nf 5365 5316 5325 5356\nf 5493 5348 5337 5484\nf 5461 5139 5141 5245 5452\nf 5256 5249 5752 5745\nf 5280 5273 5720 5713\nf 5304 5208 5215 5688 5681\nf 5124 5126 5329 5656 5649\nf 5154 5156 5233 5776 5769\nf 5488 5481 4858 4860 5621\nf 5360 5353 4832 4834 5517\nf 5392 5385 5540 5549\nf 5424 5417 5564 5573\nf 5456 5449 5588 5597\nf 4873 5609 5796 5785 4871\nf 4847 5629 5660 5669 4845\nf 5529 5692 5701 5536\nf 5553 5724 5733 5560\nf 5577 5756 5765 5584\nf 4814 4820 5748 5757 5576\nf 4788 4794 5716 5725 5552\nf 5521 5684 5693 5528\nf 5633 5652 5661 5628\nf 5601 5780 5797 5608\nf 5448 5441 5580 5589\nf 5416 5409 5556 5565\nf 5384 5377 5532 5541\nf 4833 5352 5501 5624 4827\nf 4859 5480 5473 5612 4853\nf 5232 5225 5792 5777\nf 5328 5321 5664 5657\nf 5214 5216 5297 5696 5689\nf 5272 5178 5185 5728 5721\nf 5248 5241 5760 5753\nf 5469 5236 5133 5140 5460\nf 5509 5109 5111 5349 5492\nf 5373 5308 5317 5364\nf 5405 5284 5293 5396\nf 5437 5260 5269 5428\nf 5770 5763 5758 5767\nf 5738 5731 5726 5735\nf 5706 5699 5694 5703\nf 5674 5667 5662 5671\nf 5642 5783 5786 5639\nf 4854 5611 5606 4877\nf 5586 5579 5574 5583\nf 5562 5555 5550 5559\nf 5538 5531 5526 5535\nf 4828 5623 5626 4851\nf 5482 5475 5470 5479\nf 5450 5443 5438 5447\nf 5418 5411 5406 5415\nf 5386 5379 5374 5383\nf 5354 5495 5498 5351\nf 5330 5323 5318 5327\nf 5194 5299 5294 5221\nf 5274 5176 5179 5271\nf 5250 5243 5238 5247\nf 5226 5335 5338 5223\nf 5123 5117 5127\nf 4818 4813 4822\nf 4746 4743 4849 4843\nf 4665 4663 4756 4745\nf 4669 4670 4668\nf 4751 4752 4753 4750\nf 4785 4782 4783\nf 4793 4794 4792\nf 4809 4810 4808\nf 4826 4827 4828\nf 4829 4830 4826\nf 4835 4836 4834\nf 4863 4864 4860\nf 4861 4862 4863\nf 5115 5116 5111\nf 5145 5146 5141\nf 5175 5176 5171\nf 5205 5206 5201\nf 5223 5224 5225 5222\nf 5231 5233 5230\nf 5247 5248 5249 5246\nf 5263 5264 5265\nf 5271 5272 5273 5270\nf 5287 5288 5289 5286\nf 5295 5297 5294\nf 5311 5312 5313 5310\nf 5327 5328 5329\nf 5335 5336 5337 5334\nf 5351 5352 5353 5350\nf 5367 5368 5369 5366\nf 5383 5384 5385 5382\nf 5399 5400 5401 5398\nf 5415 5416 5417 5414\nf 5431 5432 5433 5430\nf 5447 5448 5449 5446\nf 5463 5464 5465 5462\nf 5479 5480 5481 5478\nf 5495 5496 5497 5494\nf 5511 5512 5513 5510\nf 5527 5528 5529 5526\nf 5543 5544 5545 5542\nf 5559 5560 5561 5558\nf 5575 5576 5577 5574\nf 5591 5592 5593 5590\nf 5607 5608 5609 5606\nf 5623 5624 5625 5622\nf 5639 5640 5641 5638\nf 5655 5656 5657 5654\nf 5671 5672 5673 5670\nf 5687 5688 5689 5686\nf 5703 5704 5705 5702\nf 5719 5720 5721 5718\nf 5735 5736 5737 5734\nf 5751 5752 5753 5750\nf 5767 5768 5769 5766\nf 5783 5784 5785 5782\nf 4664 4673 4672 4662\nf 4665 4745 4744 4666\nf 4745 4756 4755 4742\nf 4746 4843 4842 4747\nf 4798 4777 4776 4799\nf 4850 4829 4828 4851\nf 4794 4788 4787 4792\nf 4830 4836 4835 4826\nf 4846 4840 4839 4844\nf 5130 5105 5104 5131\nf 5190 5165 5164 5191\nf 5125 5118 5117 5123\nf 5185 5178 5177 5183\nf 5335 5226 5229 5336\nf 5235 5134 5133 5236\nf 5243 5250 5253 5244\nf 5259 5266 5269 5260\nf 5176 5274 5277 5171\nf 5283 5290 5293 5284\nf 5299 5194 5193 5300\nf 5307 5314 5317 5308\nf 5323 5330 5333 5324\nf 5116 5346 5349 5111\nf 5495 5354 5357 5496\nf 5363 5370 5373 5364\nf 5379 5386 5389 5380\nf 5395 5402 5405 5396\nf 5411 5418 5421 5412\nf 5427 5434 5437 5428\nf 5443 5450 5453 5444\nf 5459 5466 5469 5460\nf 5475 5482 5485 5476\nf 5491 5506 5509 5492\nf 5623 4828 4827 5624\nf 5515 5522 5525 5516\nf 5531 5538 5541 5532\nf 5547 4776 4775 5548\nf 5555 5562 5565 5556\nf 5571 4802 4801 5572\nf 5579 5586 5589 5580\nf 5595 5602 5605 5596\nf 5611 4854 4853 5612\nf 5619 5634 5637 5620\nf 5783 5642 5645 5784\nf 5651 5658 5661 5652\nf 5667 5674 5677 5668\nf 5683 5690 5693 5684\nf 5699 5706 5709 5700\nf 5715 5722 5725 5716\nf 5731 5738 5741 5732\nf 5747 5754 5757 5748\nf 5763 5770 5773 5764\nf 5779 5794 5797 5780\nf 5226 5223 5222 5227\nf 5258 5255 5254 5259\nf 5290 5287 5286 5291\nf 5322 5319 5318 5323\nf 5354 5351 5350 5355\nf 5386 5383 5382 5387\nf 5418 5415 5414 5419\nf 5450 5447 5446 5451\nf 5482 5479 5478 5483\nf 5514 5511 5510 5515\nf 5546 5543 5542 5547\nf 5578 5575 5574 5579\nf 5610 5607 5606 5611\nf 5642 5639 5638 5643\nf 5674 5671 5670 5675\nf 5706 5703 5702 5707\nf 5738 5735 5734 5739\nf 5770 5767 5766 5771\nf 5268 5429 5428 5269\nf 5292 5397 5396 5293\nf 5316 5365 5364 5317\nf 5348 5493 5492 5349\nf 5139 5461 5460 5140\nf 5248 5753 5752 5249\nf 5272 5721 5720 5273\nf 5214 5689 5688 5215\nf 5328 5657 5656 5329\nf 5154 5769 5768 5155\nf 5488 5621 5620 5489\nf 5360 5517 5516 5361\nf 5392 5549 5548 5393\nf 5424 5573 5572 5425\nf 5456 5597 5596 5457\nf 5784 4872 4871 5785\nf 5668 4846 4845 5669\nf 5700 5537 5536 5701\nf 5732 5561 5560 5733\nf 5764 5585 5584 5765\nf 5208 5211 5207\nf 5202 5203 5201\nf 5178 5181 5177\nf 5172 5173 5171\nf 5148 5151 5147\nf 5142 5143 5141\nf 5118 5121 5117\nf 5112 5113 5111\nf 5113 5114 5111\nf 5128 5129 5127\nf 5143 5144 5141\nf 5158 5159 5157\nf 5173 5174 5171\nf 5188 5189 5187\nf 5203 5204 5201\nf 5218 5219 5217\nf 5748 4820 4819 5749\nf 5716 4794 4793 5717\nf 5684 5521 5520 5685\nf 5652 5633 5632 5653\nf 5780 5601 5600 5781\nf 5440 5581 5580 5441\nf 5408 5557 5556 5409\nf 5376 5533 5532 5377\nf 5500 5625 5624 5501\nf 5472 5613 5612 5473\nf 5224 5793 5792 5225\nf 5312 5673 5672 5313\nf 5288 5705 5704 5289\nf 5264 5737 5736 5265\nf 5252 5445 5444 5253\nf 5228 5477 5476 5229\nf 5332 5497 5496 5333\nf 5199 5381 5380 5200\nf 5276 5413 5412 5277\nf 5786 5783 5782 5787\nf 5754 5751 5750 5755\nf 5722 5719 5718 5723\nf 5690 5687 5686 5691\nf 5658 5655 5654 5659\nf 5626 5623 5622 5627\nf 5594 5591 5590 5595\nf 5562 5559 5558 5563\nf 5530 5527 5526 5531\nf 5498 5495 5494 5499\nf 5466 5463 5462 5467\nf 5434 5431 5430 5435\nf 5402 5399 5398 5403\nf 5370 5367 5366 5371\nf 5338 5335 5334 5339\nf 5306 5303 5302 5307\nf 5274 5271 5270 5275\nf 5242 5239 5238 5243\nf 5795 5782 5785 5796\nf 5771 5778 5781 5772\nf 5755 5762 5765 5756\nf 5739 5746 5749 5740\nf 5723 5730 5733 5724\nf 5707 5714 5717 5708\nf 5691 5698 5701 5692\nf 5675 5682 5685 5676\nf 5659 5666 5669 5660\nf 5643 5650 5653 5644\nf 5635 5622 5625 5636\nf 4864 5618 5621 4860\nf 5603 5610 5613 5604\nf 5587 5594 5597 5588\nf 4812 5578 5581 4808\nf 5563 5570 5573 5564\nf 4786 5554 5557 4782\nf 5539 5546 5549 5540\nf 5523 5530 5533 5524\nf 4838 5514 5517 4834\nf 5507 5494 5497 5508\nf 5483 5490 5493 5484\nf 5467 5474 5477 5468\nf 5451 5458 5461 5452\nf 5435 5442 5445 5436\nf 5419 5426 5429 5420\nf 5403 5410 5413 5404\nf 5387 5394 5397 5388\nf 5371 5378 5381 5372\nf 5355 5362 5365 5356\nf 5347 5334 5337 5348\nf 5331 5104 5103 5332\nf 5315 5322 5325 5316\nf 5206 5306 5309 5201\nf 5291 5298 5301 5292\nf 5275 5282 5285 5276\nf 5267 5164 5163 5268\nf 5251 5258 5261 5252\nf 5146 5242 5245 5141\nf 5227 5234 5237 5228\nf 5215 5208 5207 5213\nf 5155 5148 5147 5153\nf 5220 5195 5194 5221\nf 5160 5135 5134 5161\nf 4872 4866 4865 4870\nf 4834 4832 4831 4835\nf 4820 4814 4813 4818\nf 4876 4855 4854 4877\nf 4824 4803 4802 4825\nf 4750 4837 4836 4751\nf 4742 4850 4849 4743\nf 4668 4749 4748 4669\nf 4662 4757 4756 4663\nf 5791 5792 5793 5790\nf 5775 5776 5777 5774\nf 5759 5760 5761 5758\nf 5743 5744 5745 5742\nf 5727 5728 5729 5726\nf 5711 5712 5713 5710\nf 5695 5696 5697 5694\nf 5679 5680 5681 5678\nf 5663 5664 5665 5662\nf 5647 5648 5649 5646\nf 5631 5632 5633 5630\nf 5615 5616 5617 5614\nf 5599 5600 5601 5598\nf 5583 5584 5585 5582\nf 5567 5568 5569 5566\nf 5551 5552 5553 5550\nf 5535 5536 5537 5534\nf 5519 5520 5521 5518\nf 5503 5504 5505 5502\nf 5487 5488 5489 5486\nf 5471 5472 5473 5470\nf 5455 5456 5457 5454\nf 5439 5440 5441 5438\nf 5423 5424 5425 5422\nf 5407 5408 5409 5406\nf 5391 5392 5393 5390\nf 5375 5376 5377 5374\nf 5359 5360 5361 5358\nf 5343 5344 5345 5342\nf 5327 5329 5326\nf 5319 5320 5321 5318\nf 5303 5304 5305 5302\nf 5295 5296 5297\nf 5279 5280 5281 5278\nf 5263 5265 5262\nf 5255 5256 5257 5254\nf 5239 5240 5241 5238\nf 5231 5232 5233\nf 5204 5205 5201\nf 5174 5175 5171\nf 5144 5145 5141\nf 5114 5115 5111\nf 4871 4872 4870\nf 4863 4860 4861\nf 4845 4846 4844\nf 4836 4837 4838 4834\nf 4826 4828 4829\nf 4819 4820 4818\nf 4810 4811 4812 4808\nf 4783 4784 4785\nf 4785 4786 4782\nf 4743 4744 4745 4742\nf 4663 4664 4662\nf 4671 4669 4748 4753\nf 4754 4751 4836 4830\nf 4844 4839 4848\nf 5183 5177 5187\nf 5134 5235 5230 5161\nf 5266 5259 5254 5263\nf 5290 5283 5278 5287\nf 5314 5307 5302 5311\nf 5346 5116 5119 5343\nf 5370 5363 5358 5367\nf 5402 5395 5390 5399\nf 5434 5427 5422 5431\nf 5466 5459 5454 5463\nf 5506 5491 5486 5503\nf 5522 5515 5510 5519\nf 4776 5547 5542 4799\nf 4802 5571 5566 4825\nf 5602 5595 5590 5599\nf 5634 5619 5614 5631\nf 5658 5651 5646 5655\nf 5690 5683 5678 5687\nf 5722 5715 5710 5719\nf 5754 5747 5742 5751\nf 5794 5779 5774 5791\nf 5421 5169 5171 5277 5412\nf 5389 5300 5193 5200 5380\nf 5357 5324 5333 5496\nf 5485 5336 5229 5476\nf 5453 5244 5253 5444\nf 5264 5257 5744 5737\nf 5288 5281 5712 5705\nf 5312 5305 5680 5673\nf 5340 5345 5640 5789\nf 5240 5148 5155 5768 5761\nf 5504 5489 5620 5637\nf 5368 5361 5516 5525\nf 4781 5400 5393 5548 4775\nf 4807 5432 5425 5572 4801\nf 5464 5457 5596 5605\nf 4866 4872 5784 5645 5616\nf 4840 4846 5668 5677 5512\nf 5537 5700 5709 5544\nf 5561 5732 5741 5568\nf 5585 5764 5773 5592\nf 4821 5569 5740 5749 4819\nf 4795 5545 5708 5717 4793\nf 5513 5676 5685 5520\nf 5617 5644 5653 5632\nf 5593 5772 5781 5600\nf 5440 5433 4806 4808 5581\nf 5408 5401 4780 4782 5557\nf 5376 5369 5524 5533\nf 5500 5505 5636 5625\nf 5472 5465 5604 5613\nf 5224 5341 5788 5793\nf 5320 5313 5672 5665\nf 5296 5289 5704 5697\nf 5184 5186 5265 5736 5729\nf 5445 5252 5261 5436\nf 5477 5228 5237 5468\nf 5497 5332 5103 5110 5508\nf 5381 5199 5201 5309 5372\nf 5413 5276 5285 5404\nf 5782 5795 5790 5787\nf 5762 5755 5750 5759\nf 5730 5723 5718 5727\nf 5698 5691 5686 5695\nf 5666 5659 5654 5663\nf 5622 5635 5630 5627\nf 5610 5603 5598 5607\nf 5578 4812 4815 5575\nf 5554 4786 4789 5551\nf 5530 5523 5518 5527\nf 5494 5507 5502 5499\nf 5474 5467 5462 5471\nf 5442 5435 5430 5439\nf 5410 5403 5398 5407\nf 5378 5371 5366 5375\nf 5334 5347 5342 5339\nf 5322 5315 5310 5319\nf 5298 5291 5286 5295\nf 5164 5267 5262 5191\nf 5242 5146 5149 5239\nf 5213 5207 5217\nf 4870 4865 4874\nf 4792 4787 4796\nf 4750 4747 4842 4837\nf 4668 4666 4744 4749\nf 4666 4667 4665\nf 4747 4748 4749 4746\nf 4790 4791 4787\nf 4787 4788 4789\nf 4797 4798 4795\nf 4815 4817 4813\nf 4813 4814 4815\nf 4824 4825 4822\nf 4832 4833 4831\nf 4841 4842 4843\nf 4848 4849 4850\nf 4851 4847 4848\nf 4865 4867 4868\nf 4874 4875 4873\nf 4876 4877 4873\nf 5129 5131 5126\nf 5151 5152 5147\nf 5159 5160 5161\nf 5189 5191 5186\nf 5211 5212 5207\nf 5219 5220 5221\nf 5235 5236 5237 5234\nf 5251 5252 5253 5250\nf 5267 5268 5269 5266\nf 5283 5284 5285 5282\nf 5299 5300 5301 5298\nf 5315 5316 5317 5314\nf 5331 5332 5333 5330\nf 5347 5348 5349 5346\nf 5363 5364 5365 5362\nf 5379 5380 5381 5378\nf 5395 5396 5397 5394\nf 5411 5412 5413 5410\nf 5427 5428 5429 5426\nf 5443 5444 5445 5442\nf 5459 5460 5461 5458\nf 5475 5476 5477 5474\nf 5491 5492 5493 5490\nf 5507 5508 5509 5506\nf 5523 5524 5525 5522\nf 5539 5540 5541 5538\nf 5555 5556 5557 5554\nf 5571 5572 5573 5570\nf 5587 5588 5589 5586\nf 5603 5604 5605 5602\nf 5619 5620 5621 5618\nf 5635 5636 5637 5634\nf 5651 5652 5653 5650\nf 5667 5668 5669 5666\nf 5683 5684 5685 5682\nf 5699 5700 5701 5698\nf 5715 5716 5717 5714\nf 5731 5732 5733 5730\nf 5747 5748 5749 5746\nf 5763 5764 5765 5762\nf 5779 5780 5781 5778\nf 5795 5796 5797 5794\nf 4670 4667 4666 4668\nf 4671 4753 4752 4672\nf 4753 4748 4747 4750\nf 4754 4830 4829 4755\nf 4791 4797 4796 4787\nf 4817 4823 4822 4813\nf 4833 4827 4826 4831\nf 4847 4845 4844 4848\nf 4873 4871 4870 4874\nf 5126 5124 5123 5127\nf 5156 5154 5153 5157\nf 5186 5184 5183 5187\nf 5216 5214 5213 5217\nf 5231 5222 5225 5232\nf 5239 5149 5148 5240\nf 5255 5246 5249 5256\nf 5191 5262 5265 5186\nf 5279 5270 5273 5280\nf 5295 5286 5289 5296\nf 5303 5209 5208 5304\nf 5319 5310 5313 5320\nf 5131 5326 5329 5126\nf 5351 5498 5501 5352\nf 5367 5358 5361 5368\nf 5383 5374 5377 5384\nf 5399 5390 5393 5400\nf 5415 5406 5409 5416\nf 5431 5422 5425 5432\nf 5447 5438 5441 5448\nf 5463 5454 5457 5464\nf 5479 5470 5473 5480\nf 5503 5486 5489 5504\nf 4851 5626 5629 4847\nf 5519 5510 5513 5520\nf 5535 5526 5529 5536\nf 4799 5542 5545 4795\nf 5559 5550 5553 5560\nf 4825 5566 5569 4821\nf 5583 5574 5577 5584\nf 5599 5590 5593 5600\nf 4877 5606 5609 4873\nf 5631 5614 5617 5632\nf 5639 5786 5789 5640\nf 5655 5646 5649 5656\nf 5671 5662 5665 5672\nf 5687 5678 5681 5688\nf 5703 5694 5697 5704\nf 5719 5710 5713 5720\nf 5735 5726 5729 5736\nf 5751 5742 5745 5752\nf 5767 5758 5761 5768\nf 5791 5774 5777 5792\nf 5234 5231 5230 5235\nf 5266 5263 5262 5267\nf 5298 5295 5294 5299\nf 5330 5327 5326 5331\nf 5362 5359 5358 5363\nf 5394 5391 5390 5395\nf 5426 5423 5422 5427\nf 5458 5455 5454 5459\nf 5490 5487 5486 5491\nf 5522 5519 5518 5523\nf 5554 5551 5550 5555\nf 5586 5583 5582 5587\nf 5618 5615 5614 5619\nf 5650 5647 5646 5651\nf 5682 5679 5678 5683\nf 5714 5711 5710 5715\nf 5746 5743 5742 5747\nf 5778 5775 5774 5779\nf 5169 5421 5420 5170\nf 5300 5389 5388 5301\nf 5324 5357 5356 5325\nf 5336 5485 5484 5337\nf 5244 5453 5452 5245\nf 5256 5745 5744 5257\nf 5280 5713 5712 5281\nf 5304 5681 5680 5305\nf 5124 5649 5648 5125\nf 5232 5777 5776 5233\nf 5480 4859 4858 5481\nf 5352 4833 4832 5353\nf 5384 5541 5540 5385\nf 5416 5565 5564 5417\nf 5448 5589 5588 5449\nf 5796 5609 5608 5797\nf 5660 5629 5628 5661\nf 5692 5529 5528 5693\nf 5724 5553 5552 5725\nf 5756 5577 5576 5757\nf 5217 5219 5216\nf 5209 5210 5211\nf 5179 5181 5178\nf 5157 5159 5156\nf 5149 5150 5151\ns 909\nf 5103 5104 5105\nf 5119 5120 5121\nf 5343 5119 5118 5344\nf 5115 5120 5119 5116\nf 5101 4901 4900 5098\nf 5073 5083 5082 5070\nf 5075 5091 5093 5076\nf 5091 5089 5088 5092\nf 5070 5122 5121 5071\nf 4902 5115 5114 4903\nf 5092 5094 5097 5093\nf 5064 5066 5069 5065\nf 5109 5110 5108\nf 5099 5101 5098\nf 5084 5085 5086\nf 5078 5079 5077\nf 5071 5073 5070\nf 4902 4903 4904\nf 4896 4897 4895\nf 5067 5071 5121\nf 5060 5072 5066\nf 5088 5100 5094 5092\nf 4894 5065 5069 4905\nf 5098 4900 5113 5107\nf 5344 5118 5125 5648 5641\nf 5084 5096 5105 5130\nf 5090 4897 4901 5101\nf 5086 5080 5078\nf 5095 5099 5106\nf 4901 4898 4899\nf 5061 5062 5060\nf 5067 5068 5066\nf 5081 5082 5083\nf 5089 5090 5088\nf 5095 5096 5094\nf 5103 5107 5102\nf 5072 5060 5062 5073\nf 5100 5088 5090 5101\nf 5071 5067 5066 5072\nf 5084 5130 5129 5085\nf 5089 4895 4897 5090\nf 5087 5097 5096 5084\nf 5067 5121 5120 5068\nf 5107 5113 5112 5102\nf 5344 5641 5640 5345\nf 5111 5109 5108 5112\nf 4899 5114 5113 4900\nf 5081 5129 5128 5082\nf 5061 5077 5079 5062\nf 5099 5095 5094 5100\nf 5077 5075 5074 5078\nf 4903 4899 4898 4904\nf 5086 5074 5076 5087\nf 4904 4892 4894 4905\nf 5103 5106 5107\nf 5096 5097 5094\nf 5081 5083 5080\nf 5075 5076 5074\nf 5068 5069 5066\nf 4899 4900 4901\nf 4893 4894 4892\nf 5081 5085 5129\nf 5078 5074 5086\nf 5062 5079 5083 5073\nf 4902 5068 5120 5115\nf 5108 5102 5112\nf 5070 5082 5128 5122\nf 5076 5093 5097 5087\nf 5060 5066 5064\nf 4892 4904 4898 4896\nf 4899 4903 5114\nf 4904 4905 4902\nf 5064 5065 5063\nf 5071 5072 5073\nf 5086 5087 5084\nf 5092 5093 5091\nf 5099 5100 5101\nf 4896 4898 4901 4897\nf 5078 5080 5083 5079\nf 4895 4893 4892 4896\nf 5063 5061 5060 5064\nf 5085 5081 5080 5086\nf 5098 5107 5106 5099\nf 4893 5063 5065 4894\nf 4905 5069 5068 4902\nf 5095 5106 5105 5096\nf 5110 5103 5102 5108\nf 5119 5121 5118\nf 5105 5106 5103\ns 917\nf 5195 5196 5193\nf 5205 5210 5209 5206\nf 5017 4929 4928 5014\nf 4989 4999 4998 4986\nf 4991 5007 5009 4992\nf 5007 5005 5004 5008\nf 4986 5212 5211 4987\nf 4930 5205 5204 4931\nf 5008 5010 5013 5009\nf 4980 4982 4985 4981\nf 5199 5200 5198\nf 5015 5017 5014\nf 5000 5001 5002\nf 4994 4995 4993\nf 4987 4989 4986\nf 4930 4931 4932\nf 4924 4925 4923\nf 4997 5001 5219\nf 4976 4988 4982\nf 5004 5016 5010 5008\nf 4922 4981 4985 4933\nf 5014 4928 5203 5197\nf 4930 4984 5210 5205\nf 4978 4995 4999 4989\nf 4994 4990 5002\nf 4983 4987 5211\nf 4921 4922 4920\nf 4927 4928 4929\nf 4984 4985 4982\nf 4991 4992 4990\nf 4997 4999 4996\nf 5012 5013 5010\nf 5193 5196 5197\nf 4932 4920 4922 4933\nf 5002 4990 4992 5003\nf 4931 4927 4926 4932\nf 4993 4991 4990 4994\nf 5015 5011 5010 5016\nf 4977 4993 4995 4978\nf 4997 5219 5218 4998\nf 4927 5204 5203 4928\nf 5201 5199 5198 5202\nf 5197 5203 5202 5192\nf 4983 5211 5210 4984\nf 5003 5013 5012 5000\nf 5005 4923 4925 5006\nf 5000 5220 5219 5001\nf 4987 4983 4982 4988\nf 5016 5004 5006 5017\nf 4988 4976 4978 4989\nf 5193 5197 5192\nf 5011 5012 5010\nf 5005 5006 5004\nf 4997 4998 4999\nf 4983 4984 4982\nf 4977 4978 4976\nf 4929 4926 4927\nf 4927 4931 5204\nf 5002 4996 4994\nf 5006 4925 4929 5017\nf 5000 5012 5195 5220\nf 5198 5192 5202\nf 4986 4998 5218 5212\nf 4992 5009 5013 5003\nf 4976 4982 4980\nf 4920 4932 4926 4924\nf 5011 5015 5196\nf 4932 4933 4930\nf 4980 4981 4979\nf 4987 4988 4989\nf 5002 5003 5000\nf 5008 5009 5007\nf 5015 5016 5017\nf 4924 4926 4929 4925\nf 4994 4996 4999 4995\nf 4923 4921 4920 4924\nf 4979 4977 4976 4980\nf 5001 4997 4996 5002\nf 5014 5197 5196 5015\nf 4921 4979 4981 4922\nf 4933 4985 4984 4930\nf 5011 5196 5195 5012\nf 5200 5193 5192 5198\nf 5193 5194 5195\ns 905\nf 5165 5166 5163\nf 5175 5180 5179 5176\nf 4891 4971 4970 4888\nf 4947 4957 4956 4944\nf 4973 4969 4968 4974\nf 4951 4949 4948 4952\nf 4889 4885 4884 4890\nf 4952 4954 4957 4953\nf 4882 4884 4887 4883\nf 4972 4973 4974\nf 4966 4967 4965\nf 4960 4961 4958\nf 4945 4946 4947\nf 4889 4890 4891\nf 4882 4883 4881\nf 4955 4959 5189\nf 4960 4954 4952\nf 4944 4956 5188 5182\nf 5168 5162 5172\nf 4958 4886 5165 5190\nf 4880 4967 4971 4891\nf 4934 4946 4940\nf 4878 4890 4884 4882\nf 4941 4945 5181\nf 4886 4887 4884\nf 4935 4936 4934\nf 4941 4942 4940\nf 4955 4956 4957\nf 4963 4964 4962\nf 4969 4970 4971\nf 5163 5167 5162\nf 4946 4934 4936 4947\nf 4974 4962 4964 4975\nf 4888 5167 5166 4889\nf 4944 5182 5181 4945\nf 4965 4963 4962 4966\nf 4879 4965 4967 4880\nf 4961 4887 4886 4958\nf 4941 5181 5180 4942\nf 5167 5173 5172 5162\nf 5171 5169 5168 5172\nf 4969 5174 5173 4970\nf 4955 5189 5188 4956\nf 4935 4951 4953 4936\nf 4972 5175 5174 4973\nf 4959 4955 4954 4960\nf 4937 4935 4934 4938\nf 4881 4879 4878 4882\nf 4960 4948 4950 4961\nf 4890 4878 4880 4891\nf 5163 5166 5167\nf 4971 4968 4969\nf 4955 4957 4954\nf 4949 4950 4948\nf 4942 4943 4940\nf 4885 4886 4884\nf 4879 4880 4878\nf 4885 4889 5166\nf 4934 4940 4938\nf 4962 4974 4968 4966\nf 4936 4953 4957 4947\nf 4972 4942 5180 5175\nf 4888 4970 5173 5167\nf 4950 4883 4887 4961\nf 4952 4948 4960\nf 4969 4973 5174\nf 4889 4891 4888\nf 4945 4947 4944\nf 4952 4953 4951\nf 4958 4959 4960\nf 4974 4975 4972\nf 5169 5170 5168\nf 4938 4940 4943 4939\nf 4966 4968 4971 4967\nf 4945 4941 4940 4946\nf 4958 5190 5189 4959\nf 4949 4881 4883 4950\nf 4975 4943 4942 4972\nf 4885 5166 5165 4886\nf 5170 5163 5162 5168\nf 5163 5164 5165\ns 913\nf 5135 5136 5133\nf 5145 5150 5149 5146\nf 4919 5041 5040 4916\nf 5031 5055 5054 5028\nf 5057 5053 5052 5058\nf 5035 5033 5032 5036\nf 4917 4913 4912 4918\nf 5036 5038 5041 5037\nf 4910 4912 4915 4911\nf 5056 5057 5058\nf 5050 5051 5049\nf 5044 5045 5042\nf 5029 5030 5031\nf 4917 4918 4919\nf 4910 4911 4909\nf 5053 5057 5159\nf 4908 5037 5041 4919\nf 5028 5054 5158 5152\nf 5138 5132 5142\nf 5056 4914 5135 5160\nf 5050 5046 5058\nf 5018 5030 5024\nf 4906 4918 4912 4910\nf 5039 5043 5144\nf 4914 4915 4912\nf 5019 5020 5018\nf 5025 5026 5024\nf 5041 5038 5039\nf 5047 5048 5046\nf 5053 5055 5052\nf 5133 5137 5132\nf 5030 5018 5020 5031\nf 5058 5046 5048 5059\nf 4916 5137 5136 4917\nf 5028 5152 5151 5029\nf 5049 5047 5046 5050\nf 4907 5035 5037 4908\nf 5059 4915 4914 5056\nf 5025 5151 5150 5026\nf 5137 5143 5142 5132\nf 5141 5139 5138 5142\nf 5039 5144 5143 5040\nf 5053 5159 5158 5054\nf 5019 5049 5051 5020\nf 5056 5160 5159 5057\nf 5043 5039 5038 5044\nf 5021 5019 5018 5022\nf 4909 4907 4906 4910\nf 5044 5032 5034 5045\nf 4918 4906 4908 4919\nf 5133 5136 5137\nf 5053 5054 5055\nf 5039 5040 5041\nf 5033 5034 5032\nf 5026 5027 5024\nf 4913 4914 4912\nf 4907 4908 4906\nf 4913 4917 5136\nf 5018 5024 5022\nf 5058 5052 5050\nf 5048 4911 4915 5059\nf 5042 5026 5150 5145\nf 4916 5040 5143 5137\nf 5020 5051 5055 5031\nf 5032 5044 5038 5036\nf 5025 5029 5151\nf 4917 4919 4916\nf 5029 5031 5028\nf 5036 5037 5035\nf 5042 5043 5044\nf 5058 5059 5056\nf 5139 5140 5138\nf 5022 5024 5027 5023\nf 5050 5052 5055 5051\nf 5029 5025 5024 5030\nf 5042 5145 5144 5043\nf 5047 4909 4911 5048\nf 5045 5027 5026 5042\nf 4913 5136 5135 4914\nf 5140 5133 5132 5138\nf 5133 5134 5135\ns 932\nf 5022 5023 5021\nf 5034 5023 5027 5045\nf 5033 5021 5023 5034\ns 921\nf 4938 4939 4937\nf 4964 4939 4943 4975\nf 4963 4937 4939 4964\ns 857\nf 4859 4853 4852 4857\nf 4770 4856 4855 4771\nf 4769 4764 4763 4766\nf 4683 4769 4768 4684\nf 4682 4679 4678 4680\nf 4858 4859 4857\nf 4763 4764 4765 4762\nf 4678 4679 4677\nf 4680 4678 4760 4765\nf 4766 4763 4868 4863\nf 4682 4685 4676 4679\nf 4762 4759 4875 4869\nf 4677 4675 4772 4761\nf 4681 4682 4680\nf 4767 4768 4769 4766\nf 4854 4855 4856\nf 4676 4685 4684 4674\nf 4677 4761 4760 4678\nf 4761 4772 4771 4758\nf 4762 4869 4868 4763\nf 4856 4862 4861 4852\nf 4860 4858 4857 4861\nf 4766 4863 4862 4767\nf 4758 4876 4875 4759\nf 4680 4765 4764 4681\nf 4674 4773 4772 4675\nf 4854 4856 4852\nf 4852 4853 4854\nf 4759 4760 4761 4758\nf 4675 4676 4674\nf 4683 4681 4764 4769\nf 4770 4767 4862 4856\nf 4857 4852 4861\nf 4758 4771 4855 4876\nf 4674 4684 4768 4773\nf 4684 4685 4683\nf 4771 4772 4773 4770\nf 4679 4676 4675 4677\nf 4685 4682 4681 4683\nf 4765 4760 4759 4762\nf 4773 4768 4767 4770\nf 4863 4868 4867 4864\ns 865\nf 4811 4816 4815 4812\nf 4741 4736 4735 4738\nf 4733 4728 4727 4730\nf 4709 4706 4705 4707\nf 4703 4700 4699 4701\nf 4739 4740 4741 4738\nf 4708 4709 4707\nf 4698 4708 4736 4741\nf 4726 4739 4803 4824\nf 4805 4800 4809\nf 4738 4735 4810 4804\nf 4707 4705 4732 4737\nf 4699 4700 4698\nf 4727 4728 4729 4726\nf 4800 4801 4802\nf 4803 4804 4800\nf 4698 4741 4740 4699\nf 4704 4733 4732 4705\nf 4726 4824 4823 4727\nf 4734 4811 4810 4735\nf 4808 4806 4805 4809\nf 4804 4810 4809 4800\nf 4730 4817 4816 4731\nf 4729 4740 4739 4726\nf 4701 4729 4728 4702\nf 4700 4709 4708 4698\nf 4800 4802 4803\nf 4735 4736 4737 4734\nf 4705 4706 4704\nf 4701 4699 4740 4729\nf 4730 4727 4823 4817\nf 4706 4709 4700 4703\nf 4734 4731 4816 4811\nf 4704 4702 4728 4733\nf 4702 4703 4701\nf 4731 4732 4733 4730\nf 4806 4807 4805\nf 4706 4703 4702 4704\nf 4707 4737 4736 4708\nf 4737 4732 4731 4734\nf 4738 4804 4803 4739\nf 4807 4801 4800 4805\ns 861\nf 4781 4775 4774 4779\nf 4722 4778 4777 4723\nf 4721 4716 4715 4718\nf 4695 4721 4720 4696\nf 4694 4691 4690 4692\nf 4780 4781 4779\nf 4715 4716 4717 4714\nf 4690 4691 4689\nf 4692 4690 4712 4717\nf 4718 4715 4790 4785\nf 4779 4774 4783\nf 4714 4711 4797 4791\nf 4689 4687 4724 4713\nf 4693 4694 4692\nf 4719 4720 4721 4718\nf 4776 4777 4778\nf 4688 4697 4696 4686\nf 4689 4713 4712 4690\nf 4713 4724 4723 4710\nf 4714 4791 4790 4715\nf 4778 4784 4783 4774\nf 4782 4780 4779 4783\nf 4718 4785 4784 4719\nf 4710 4798 4797 4711\nf 4692 4717 4716 4693\nf 4686 4725 4724 4687\nf 4776 4778 4774\nf 4774 4775 4776\nf 4711 4712 4713 4710\nf 4687 4688 4686\nf 4695 4693 4716 4721\nf 4722 4719 4784 4778\nf 4694 4697 4688 4691\nf 4710 4723 4777 4798\nf 4686 4696 4720 4725\nf 4696 4697 4695\nf 4723 4724 4725 4722\nf 4691 4688 4687 4689\nf 4697 4694 4693 4695\nf 4717 4712 4711 4714\nf 4725 4720 4719 4722\nf 4785 4790 4789 4786\ng boat\nusemtl bluteal\ns 1\nf 384 383 452 451\nf 271 270 381 380\nf 14 429 435 6\nf 17 417 429 14\nf 407 406 425 11\nf 413 410 409\nf 412 411 24\nf 25 400 406 405\nf 331 336 312 40\nf 287 286 289 50\nf 415 416 18\nf 412 413 18\nf 405 406 19\nf 332 311 425 406\nf 401 410 412\nf 433 427 426 442\nf 270 435 434 381\nf 408 426 427 414\nf 403 417 373\nf 403 404 24\nf 19 409 410\nf 413 414 415 18\nf 451 452 453 4\nf 311 40 50 289\nf 402 24 25\nf 401 25 405 410\nf 403 411 416\nf 408 407 11 426\nf 428 15 2 434\nf 270 269 6 435\nf 434 2 382 381\nf 454 453 1 441\nf 426 11 1 442\nf 416 415 15 428\nf 414 413 409 408\nf 403 24 411\nf 402 25 401\nf 332 331 40 311\nf 288 287 50 290\nf 416 411 18\nf 410 405 19\nf 406 407 19\nf 311 289 441 425\nf 403 416 417\nf 428 434 435 429\nf 442 452 383 433\nf 416 428 429 417\nf 412 402 401\nf 289 286 454 441\nf 407 408 409 19\nf 18 411 412\nf 453 454 449 4\nf 40 312 290 50\nf 24 404 400 25\nf 24 402 412\nf 374 373 417 17\nf 413 412 410\nf 415 414 427 15\nf 15 427 433 2\nf 11 425 441 1\nf 453 452 442 1\nf 2 433 383 382\ns 5\nf 269 268 436 6\nf 445 444 306 305\nf 388 387 444 443\nf 12 423 439 10\nf 16 419 431 13\nf 20 423 12\nf 368 367 419 16\nf 366 365 377 376\nf 299 298 387 386\nf 347 346 358 357\nf 341 340 352\nf 345 352 322 35\nf 31 338 314 39\nf 35 322 316\nf 37 318 292 45\nf 39 314 302 41\nf 297 296 308 307\nf 263 262 294 293\nf 443 444 445 7\nf 21 396 397\nf 392 393 386 8\nf 376 377 372 23\nf 366 367 368 22\nf 349 350 351 29\nf 343 344 30\nf 340 341 30\nf 303 304 44\nf 293 294 295 43\nf 261 262 263 46\nf 202 249 440 446\nf 255 253 314 338\nf 301 308 296 310\nf 316 322 337 313\nf 348 356 377 365\nf 375 418 419 367\nf 430 436 437 431\nf 391 437 436 268\nf 418 430 431 419\nf 369 421 397\nf 342 350 371 395\nf 337 352 340\nf 313 301 310 316\nf 232 255 338 344\nf 210 202 446 304\nf 245 240 399 422\nf 267 268 269 5\nf 299 300 293 43\nf 307 308 303 44\nf 344 339 30\nf 29 351 352\nf 357 358 353 28\nf 22 368 369\nf 374 375 376 23\nf 390 391 392 8\nf 398 399 21\nf 447 448 443 7\nf 247 59 60 245\nf 202 201 58 249\nf 251 55 211 210\nf 255 53 54 253\nf 240 239 233 232\nf 262 261 45 292\nf 304 303 41 302\nf 309 42 295 294\nf 315 38 42 309\nf 337 31 39\nf 340 339 31 337\nf 342 341 351 350\nf 350 349 364 371\nf 300 299 386 393\nf 367 366 376 375\nf 397 396 370\nf 369 368 16 420\nf 422 20 12 424\nf 420 16 13\nf 430 14 6 436\nf 424 12 10 440\nf 389 388 443 448\nf 446 445 305 304\nf 268 267 392 391\nf 448 447 10 439\nf 438 9 390 389\nf 432 13 9 438\nf 420 13 432\nf 418 17 14 430\nf 399 398 20 422\nf 397 370 369\nf 375 374 17 418\nf 344 343 394 399\nf 356 355 372 377\nf 348 347 357 356\nf 346 345 35 321\nf 337 39 313\nf 321 35 38 315\nf 313 39 41 301\nf 298 297 307 306\nf 264 263 293 300\nf 266 265 257 264\nf 232 231 53 255\nf 253 54 55 251\nf 210 209 203 202\nf 249 58 59 247\nf 245 60 241 240\nf 445 446 7\nf 394 395 396 21\nf 386 387 388 8\nf 369 370 22\nf 364 365 366 22\nf 352 345 29\nf 347 348 349 29\nf 341 342 343 30\nf 304 305 44\nf 295 296 297 43\nf 263 264 257 46\nf 249 247 424 440\nf 253 251 302 314\nf 262 292 309 294\nf 321 315 318 324\nf 337 322 352\nf 387 298 306 444\nf 369 420 421\nf 432 438 439 423\nf 438 389 448 439\nf 423 421 420 432\nf 264 300 393 266\nf 321 324 358 346\nf 315 309 292 318\nf 240 232 344 399\nf 251 210 304 302\nf 247 245 422 424\nf 265 266 267 5\nf 297 298 299 43\nf 305 306 307 44\nf 30 339 340\nf 345 346 347 29\nf 355 356 357 28\nf 370 371 364 22\nf 388 389 390 8\nf 397 398 21\nf 399 394 21\nf 446 447 7\nf 303 308 301 41\nf 42 310 296 295\nf 38 316 310 42\nf 35 316 38\nf 34 324 318 37\nf 339 344 338 31\nf 341 352 351\nf 353 358 324 34\nf 349 348 365 364\nf 343 342 395 394\nf 396 395 371 370\nf 398 397 421 20\nf 20 421 423\nf 13 431 437 9\nf 9 437 391 390\nf 447 446 440 10\nf 267 266 393 392\ns 6\nf 27 363 26\nf 26 363 334\nf 27 330 329\nf 325 330 320 36\nf 261 260 291 45\nf 265 272 258 257\nf 360 361 27\nf 32 333 334\nf 331 332 32\nf 325 326 327 33\nf 274 282 291 260\nf 323 317 320 330\nf 334 363 359\nf 360 362 400 404\nf 323 330 361\nf 317 291 282 320\nf 259 260 261 46\nf 328 329 33\nf 332 333 32\nf 354 355 28\nf 281 49 273 280\nf 317 37 45 291\nf 323 34 37 317\nf 328 327 335\nf 354 353 34 323\nf 27 329 328\nf 360 27 26 362\nf 362 26 333 332\nf 328 359 27\nf 328 335 334\nf 326 325 36 319\nf 319 36 49 281\nf 260 259 275 274\nf 372 373 23\nf 335 336 331 32\nf 330 325 33\nf 33 327 328\nf 281 280 288 290\nf 319 312 336 326\nf 361 354 323\nf 362 332 406 400\nf 359 328 334\nf 290 312 319 281\nf 257 258 259 46\nf 329 330 33\nf 334 335 32\nf 353 354 28\nf 373 374 23\nf 49 282 274 273\nf 36 320 282 49\nf 327 326 336 335\nf 27 361 330\nf 334 333 26\nf 27 359 363\ns 62\nf 62 244 236 63\nf 223 228 222 221\nf 66 216 214 67\nf 68 206 198 197\nf 187 192 185 61\nf 221 222 65\nf 192 187 70\nf 78 167 166 216 222\nf 183 181 244 185\nf 78 77 173 167\nf 140 183 185 192\nf 77 78 222 228\nf 191 192 70\nf 222 217 65\nf 173 172 168 167\nf 166 165 80 179\nf 183 74 75 181\nf 146 145 141 140\nf 178 71 147 146\nf 140 139 74 183\nf 181 75 175 174\nf 179 80 71 178\nf 228 223 64\nf 198 193 69\nf 166 179 214 216\nf 181 174 236 244\nf 178 146 198 206\nf 146 140 192 198\nf 174 173 77 228 236\nf 179 178 206 214\nf 197 198 69\nf 227 228 64\nf 193 198 192 191\nf 67 214 206 68\nf 217 222 216 66\nf 63 236 228 227\nf 61 185 244 62\ns 2\nf 355 354 373 372\nf 449 450 451 4\nf 380 381 382 3\nf 284 278 385 450\nf 378 379 380 3\nf 450 449 285 284\nf 385 384 451 450\nf 382 383 384 3\nf 361 360 404 403 373 354\nf 283 284 285 47\nf 384 385 378 3\nf 279 278 284 283\ns 3\nf 259 258 276 275\nf 273 274 275 48\nf 276 258 272 379\nf 275 276 277 48\nf 280 279 283 288\nf 272 271 380 379\nf 278 277 378 385\nf 279 280 273 48\nf 271 272 265 5\nf 269 270 271 5\nf 277 278 279 48\nf 277 276 379 378\ns 51\nf 239 238 234 233\nf 58 250 248 59\nf 60 246 242 241\nf 189 188 200 199\nf 229 230 231 52\nf 199 200 201 57\nf 224 220 234 238\nf 186 243 248 250\nf 187 188 189 70\nf 237 238 239 51\nf 188 187 61 186\nf 235 63 227 226\nf 243 62 63 235\nf 186 61 62 243\nf 226 225 237 242\nf 224 223 221 220\nf 241 242 237 51\nf 225 226 227 64\nf 235 226 242 246\nf 243 235 246 248\nf 188 186 250 200\nf 223 224 225 64\nf 233 234 229 52\nf 225 224 238 237\nf 59 248 246 60\nf 201 200 250 58\ns 53\nf 53 256 254 54\nf 55 252 212 211\nf 217 218 219 65\nf 218 215 256 230\nf 205 196 212 252\nf 205 68 197 196\nf 215 66 67 213\nf 220 219 229 234\nf 218 217 66 215\nf 213 67 68 205\nf 219 220 221 65\nf 215 213 254 256\nf 213 205 252 254\nf 219 218 230 229\nf 54 254 252 55\nf 231 230 256 53\ns 103\nf 195 194 208 207\nf 189 190 191 70\nf 193 194 195 69\nf 194 193 191 190\nf 190 189 199 204\nf 207 208 209 56\nf 194 190 204 208\nf 203 204 199 57\nf 209 208 204 203\ns 81\nf 157 162 156 155\nf 84 150 123 122\nf 161 162 157 82\nf 129 123 150 156 162 135\nf 155 156 151 83\nf 129 128 124 123\nf 128 129 130 88\nf 122 123 124 85\nf 130 129 135 81\nf 151 156 150 84\nf 81 135 162 161\ns 76\nf 139 138 184 74\nf 75 182 176 175\nf 97 96 133 87\nf 132 126 88\nf 131 136 182 184\nf 133 132 131 184 138\nf 131 132 88\nf 159 160 161 82\nf 136 81 161 160\nf 160 159 170 176\nf 131 130 81 136\nf 137 138 139 73\nf 116 132 133 96\nf 136 160 176 182\nf 130 131 88\nf 175 176 170 76\nf 87 133 138 137\nf 74 184 182 75\ns 100\nf 172 171 169 168\nf 170 171 172 76\nf 153 154 155 83\nf 168 169 163 79\nf 154 153 163 169\nf 158 157 155 154\nf 158 154 169 171\nf 157 158 159 82\nf 159 158 171 170\ns 72\nf 71 177 148 147\nf 80 180 177 71\nf 107 106 120 119\nf 102 112 120 106\nf 152 149 180 164\nf 151 152 153 83\nf 106 105 103 102\nf 112 86 143 148\nf 152 151 84 149\nf 149 84 122 121\nf 102 101 86 112\nf 163 164 165 79\nf 149 121 177 180\nf 121 120 112 148 177\nf 147 148 143 72\nf 153 152 164 163\nf 165 164 180 80\ns 86\nf 86 111 144 143\nf 143 144 145 72\nf 111 134 142 144\nf 99 100 101 92\nf 100 99 93 98\nf 134 87 137 142\nf 98 97 87 134\nf 141 142 137 73\nf 111 100 98 134\nf 97 98 93 89\nf 101 100 111 86\nf 145 144 142 141\ns 85\nf 113 118 110 109\nf 99 104 94 93\nf 109 110 105 91\nf 101 102 103 92\nf 104 110 118 94\nf 103 104 99 92\nf 96 95 117 116\nf 116 115 126 132\nf 117 118 113 90\nf 95 96 97 89\nf 93 94 95 89\nf 105 106 107 91\nf 115 116 117 90\nf 105 110 104 103\nf 95 94 118 117\ns 96\nf 115 114 127 126\nf 114 108 125 127\nf 113 114 115 90\nf 114 113 109 108\nf 108 107 119 125\nf 124 125 119 85\nf 107 108 109 91\nf 126 127 128 88\nf 128 127 125 124\ns 82\nf 119 120 85\nf 121 122 85\nf 120 121 85\ns 74\nf 140 141 73\nf 139 140 73\ns 71\nf 167 168 79\nf 145 146 72\nf 166 167 79\nf 174 175 76\nf 172 173 76\nf 146 147 72\nf 165 166 79\nf 173 174 76\ns 56\nf 211 212 207 56\nf 196 195 207 212\nf 195 196 197 69\ns 58\nf 201 202 57\nf 202 203 57\ns 55\nf 209 210 56\nf 210 211 56\ns 54\nf 231 232 52\nf 232 233 52\ns 52\nf 239 240 51\nf 240 241 51\ns 4\nf 285 286 287 47\nf 287 288 283 47\nf 449 454 286 285\ng engine\nusemtl black\ns 116\nf 2694 2693 2305 2304\nf 1783 1782 1941 1940\nf 2721 2722 2723 470\nf 2302 2303 458\nf 2196 2195 563 1612 1606\nf 562 2204 2203 1636 1630\nf 1942 1941 563 2195 1881\nf 554 555 2301 2299\nf 2302 2268 2726 2782\nf 2302 2301 555 2249 2268\nf 562 563 1941 1782\nf 563 554 1618 1612\nf 2303 2304 2305 458\nf 2725 2726 2721 470\nf 1612 1611 1607 1606\nf 1624 1623 1619 1618\nf 1648 1647 1643 1642\nf 2693 2692 2306 2305\nf 2783 2782 2726 2725\nf 2781 2786 2304 2303\nf 1636 1635 1631 1630\nf 1618 1617 1613 1612\nf 2781 2782 2783 455\nf 2693 2694 2695 457\nf 2301 2302 458\nf 555 562 1630 1648\nf 563 562 555 554\nf 554 2299 2298 2269 2220\nf 2694 2304 2786 2687\nf 562 1782 1781 1800 2204\nf 2250 2249 555 1648 1642\nf 554 2220 2219 1624 1618\nf 2300 2301 458\nf 2305 2306 2300 458\nf 2785 2786 2781 455\nf 2782 2781 2303 2302\nf 2786 2785 2688 2687\ns 133\nf 2457 2456 2255 2254\nf 2240 2239 2258 2257\nf 2256 2251 533\nf 2240 2241 2242 557\nf 2236 2230 558\nf 2230 2231 2232 558\nf 2258 2256 2455 2728\nf 2232 2233 2234 558\nf 2237 2238 557\nf 2242 2243 2237 557\nf 2255 2256 533\nf 2241 2240 2257 2262\nf 2456 2455 2256 2255\nf 2235 2234 2251 2256\nf 2251 2252 2253 533\nf 2239 2240 557\nf 2235 2236 558\nf 2235 2256 2258 2239\nf 2457 2254 2276 2310\nf 2234 2235 558\nf 2238 2239 557\nf 2253 2254 2255 533\nf 2246 2245 2243 2242\nf 2277 2276 2254 2253\nf 2728 2727 2259 2258\ns 166\nf 2570 2569 2419 2418\nf 2566 2565 2282 2281\nf 2276 2275 2311 2310\nf 2426 2425 2418 2417\nf 2422 2427 2289 2288\nf 2286 2292 2280 2279\nf 550 2222 2271 511\nf 2232 2231 2229 2228\nf 2208 2207 2238 2237\nf 2189 2188 2225 2224\nf 2214 2213 2192 2191\nf 2200 2199 2211 2210\nf 567 2194 2083 606\nf 2178 2177 2075 2074\nf 2078 2077 2177 2176\nf 2080 2079 2065 2064\nf 1667 1666 2145 2144\nf 606 2083 1984 1983\nf 1987 1986 2072 2071\nf 2076 2081 2070 2069\nf 1945 1944 1880 1879\nf 1671 1670 1794 1793\nf 1519 1518 1530 1529\nf 1437 1436 1467 702\nf 1415 1414 1453 708\nf 1116 1115 1111 1110\nf 2424 2425 2426 544\nf 2313 2314 2315 546\nf 2292 2286 543\nf 2286 2287 2288 543\nf 2280 2281 502\nf 2274 2275 534\nf 2224 2225 547\nf 2216 2217 559\nf 2208 2209 2210 560\nf 2204 2198 561\nf 2198 2199 2200 561\nf 2188 2189 570\nf 2180 2174 574\nf 2174 2175 2176 574\nf 2146 2147 2148 584\nf 2139 2140 583\nf 2077 2078 573\nf 2073 2074 615\nf 2062 2063 2064 572\nf 1985 1986 1987 616\nf 1943 1944 1945 617\nf 1938 1939 1940 618\nf 1883 1884 629\nf 1793 1794 649\nf 1606 1607 667\nf 1495 1496 605\nf 1468 1470 2207 2206\nf 1438 2206 2218\nf 1465 1438 1478\nf 1416 1454 2235\nf 1416 2239 2238 1464\nf 565 1501 1492 1508\nf 2077 2075 2177\nf 1988 2070 2081 2063\nf 2180 2179 569 2188 2139\nf 2206 1794 2149 2218\nf 569 568 549 548\nf 2233 2227 2278\nf 2270 1525 1524 552\nf 2281 2280 549 2223 2272\nf 2427 2416 2316 2289\nf 2287 2285 2423\nf 2291 2314 2312 2274\nf 2201 2209 2243 2245\nf 549 568 2194 2223\nf 2147 2192 2213\nf 1798 2211 2199\nf 565 1882 2197\nf 2180 2139 2137 2182\nf 2072 1986 1984 2083\nf 1794 1670 1668 2149\nf 1518 1514 1528 1530\nf 1462 1464 2238\nf 1459 1458 2207\nf 1476 1478 2217\nf 1473 1472 2217 2236\nf 1116 1110 1532 1526\nf 1499 1500 1495 605\nf 1667 1668 1663 585\nf 1794 1795 649\nf 1879 1880 1875 630\nf 1940 1941 618\nf 1947 1948 1943 617\nf 1987 1988 1989 616\nf 2064 2065 2066 572\nf 2072 2073 615\nf 2080 2081 2076 573\nf 2138 2139 583\nf 2144 2145 2146 584\nf 2176 2177 2178 574\nf 2181 2182 2183 571\nf 2189 2190 2191 570\nf 2203 2204 561\nf 2207 2208 560\nf 2214 2215 2216 559\nf 2225 2226 547\nf 2273 2274 534\nf 2279 2280 502\nf 2284 2285 2279 502\nf 2291 2292 543\nf 2315 2316 2317 546\nf 2423 2424 544\nf 2426 2427 2422 544\nf 2510 2511 2506 514\nf 1416 1415 708 1454\nf 1438 1437 702 1468\nf 1520 1519 1529 1534\nf 1670 1669 1663 1668\nf 1944 1943 1936 1942\nf 1948 1947 1775 1774\nf 1986 1985 1979 1984\nf 2077 2076 2069 2075\nf 1993 1992 605 1497\nf 2139 2138 2132 2137\nf 2182 2181 2174 2180\nf 1666 1665 2134 2133\nf 2186 2185 2066 2065\nf 2188 2187 2140 2139\nf 2199 2198 1799 1798\nf 2201 2200 2210 2209\nf 2215 2214 2191 2190\nf 2190 2189 2224 2229\nf 2209 2208 2237 2243\nf 2233 2232 2228 2227\nf 2227 2226 2273 2278\nf 2314 2313 2307 2312\nf 2278 2277 2253 2252\nf 2316 2315 2290 2289\nf 511 2271 2507 2506\nf 2424 2423 2285 2284\nf 2567 2566 2511 2510\nf 2565 2570 2283 2282\nf 2275 2274 2312 2311\nf 2427 2426 2417 2416\nf 2423 2422 2288 2287\nf 2287 2286 2279 2285\nf 2223 550 511 2272\nf 2203 2202 2244 2250\nf 2217 2216 2230 2236\nf 2194 567 550 2223\nf 2213 2212 2148 2147\nf 2206 2205 1795 1794\nf 2193 567 606 2082\nf 2179 2178 2074 2073\nf 2143 2142 2146 2145\nf 2081 2080 2064 2063\nf 1668 1667 2144 2149\nf 2082 606 1983 1982\nf 1988 1987 2071 2070\nf 1991 604 629 1884\nf 1500 1499 1505 1504\nf 1887 1886 1877 1876\nf 1798 1797 1791 1796\nf 1606 1605 1625 1624\nf 1514 1513 1523 1528\nf 1459 707 706 1458\nf 2569 2570 2565 501\nf 2506 2507 2508 514\nf 2422 2423 544\nf 2417 2418 2419 545\nf 2311 2312 2307 531\nf 2288 2289 2290 543\nf 2281 2282 502\nf 2275 2276 2277 534\nf 2228 2229 2224 547\nf 2217 2218 559\nf 2210 2211 2205 560\nf 2205 2206 560\nf 2200 2201 2202 561\nf 2187 2188 570\nf 2179 2180 574\nf 2148 2149 584\nf 2140 2141 2142 583\nf 2132 2133 2134 586\nf 2074 2075 2069 615\nf 2069 2070 2071 615\nf 1992 1993 1994 604\nf 1983 1984 1979 603\nf 1942 1936 618\nf 1936 1937 1938 618\nf 1875 1876 1877 630\nf 1791 1792 1793 649\nf 1605 1606 667\nf 1496 1497 605\nf 1456 1473 2236\nf 1472 1476 2217\nf 1470 1459 2207\nf 1458 1462 2238 2207\nf 565 552 1509 1501\nf 1606 1624 2219 2196\nf 1788 1937 1948 1774\nf 1666 2133 2143 2145\nf 568 569 2179 2073\nf 565 1508 1507 1882\nf 1798 1796 2211\nf 2147 2141 2192\nf 569 548 2225 2188\nf 548 549 2280 2292\nf 2425 2283 2570 2418\nf 2281 2272 2511 2566\nf 548 2292 2291 2274 2225\nf 552 2221 2270\nf 2233 2278 2252\nf 2215 2190 2229 2231\nf 552 565 2197 2221\nf 568 2073 2072 2083 2194\nf 2079 2175 2186 2065\nf 1882 1507 1887 1876\nf 1509 552 1524 1512\nf 1451 1416 1464\nf 1416 2235 2239\nf 1454 1456 2236 2235\nf 1438 2218 2217 1478\nf 1438 1468 2206\nf 1122 1116 1526 2589\nf 1498 1499 605\nf 1665 1666 1667 585\nf 1795 1796 1791 649\nf 1886 1887 1883 629\nf 1941 1942 618\nf 1981 1982 1983 603\nf 1991 1992 604\nf 2071 2072 615\nf 2076 2077 573\nf 2136 2137 2132 586\nf 2142 2143 2138 583\nf 2149 2144 584\nf 2178 2179 574\nf 2185 2186 2181 571\nf 2191 2192 2187 570\nf 2202 2203 561\nf 2206 2207 560\nf 2212 2213 2214 559\nf 2218 2212 559\nf 2226 2227 2228 547\nf 2277 2278 2273 534\nf 2282 2283 2284 502\nf 2290 2291 543\nf 2309 2310 2311 531\nf 2415 2416 2417 545\nf 2565 2566 2567 501\nf 1122 1121 1117 1116\nf 707 1460 1457 706\nf 1513 1512 1524 1523\nf 1797 1802 1792 1791\nf 1943 1948 1937 1936\nf 1989 1988 2063 2062\nf 1994 1993 1982 1981\nf 1992 1991 1498 605\nf 2138 2143 2133 2132\nf 2181 2186 2175 2174\nf 2142 2141 2147 2146\nf 2183 2182 2137 2136\nf 2187 2192 2141 2140\nf 2205 2211 1796 1795\nf 2212 2218 2149 2148\nf 567 2193 2222 550\nf 2216 2215 2231 2230\nf 2202 2201 2245 2244\nf 2234 2233 2252 2251\nf 2226 2225 2274 2273\nf 2317 2316 2416 2415\nf 2452 2457 2310 2309\nf 2315 2314 2291 2290\nf 2272 511 2506 2511\nf 2425 2424 2284 2283\nf 1532 1531 1527 1526\ns 135\nf 2325 2330 2320 2319\nf 2724 2725 470\nf 2320 2330 2730 2453\nf 2320 2321 530\nf 2729 2730 469\nf 2731 2730 2724 2723\nf 2723 2724 470\nf 2330 2718 2724 2730\nf 2319 2320 530\nf 2730 2731 469\nf 2730 2729 2454 2453\ns 117\nf 2718 2717 2773 2772\nf 2718 2719 472\nf 2718 2772 2784 2724\nf 2690 2684 456\nf 2784 2785 455\nf 2785 2784 2689 2688\nf 2717 2718 472\nf 2688 2689 456\nf 2689 2690 456\nf 2783 2784 455\nf 2784 2783 2725 2724\ns 118\nf 2772 2771 2767 2766\nf 2556 2555 2551 2550\nf 2765 2766 460\nf 2421 2415 545\nf 2556 2550 2420 2568\nf 2421 2420 2550 2623 2690 2689 2766 2429\nf 2420 2421 545\nf 2766 2767 460\nf 2569 2568 2420 2419\nf 2608 2607 2623 2622\nf 2772 2773 459\nf 2604 2605 500\nf 2772 2766 2689 2784\nf 2605 2690 2623 2607\nf 2419 2420 545\nf 2605 2600 500\nf 2771 2772 459\nf 2605 2604 2684 2690\nf 2766 2765 2430 2429\ns 132\nf 2266 2265 2261 2260\nf 2696 2695 2686 2685\nf 2270 490 2598 2597\nf 2603 2602 2297 2296\nf 553 2220 2269 490\nf 564 2196 2219 553\nf 627 1882 1876 1875\nf 2695 2696 2691 457\nf 2598 2599 2594 487\nf 2515 2516 2512 513\nf 2456 2457 2452 532\nf 2295 2296 2297 499\nf 2265 2266 2267 467\nf 2258 2259 468\nf 2248 2249 556\nf 1527 1528 1523 489\nf 1942 1881 1880 1944\nf 2247 2262 2264\nf 2591 1525 2270 2597\nf 2298 2601 2599 2269\nf 1526 1527 489\nf 2219 2220 553\nf 2249 2250 556\nf 2259 2260 2261 468\nf 2267 2268 467\nf 2454 2455 2456 532\nf 2596 2597 2598 487\nf 2684 2685 2686 456\nf 1881 627 1875 1880\nf 2197 564 553 2221\nf 2249 2248 2263 2268\nf 513 2513 2589 488\nf 2604 2603 2685 2684\nf 2592 2591 2597 2596\nf 2590 2589 1526 489\nf 2267 2266 2722 2721\nf 2265 2264 2262 2261\nf 2729 2728 2455 2454\nf 2727 2732 2260 2259\nf 490 2269 2599 2598\nf 2602 2601 2298 2297\nf 2691 2696 2296 2295\nf 1531 1530 1528 1527\nf 2221 553 490 2270\nf 2247 2246 2242 2241\nf 2195 564 627 1881\nf 2731 2732 2727 469\nf 2600 2601 2602 500\nf 2590 2591 2592 488\nf 2297 2298 499\nf 2263 2264 2265 467\nf 2257 2258 468\nf 2246 2247 2248 556\nf 2195 2196 564\nf 1523 1524 489\nf 2603 2296 2696 2685\nf 2732 2722 2266 2260\nf 2247 2241 2262\nf 1524 1525 489\nf 2244 2245 2246 556\nf 2250 2244 556\nf 2261 2262 2257 468\nf 2268 2263 467\nf 2298 2299 499\nf 2512 2513 513\nf 2589 2590 488\nf 2602 2603 2604 500\nf 2727 2728 2729 469\nf 564 2197 1882 627\nf 2248 2247 2264 2263\nf 2601 2600 2594 2599\nf 2591 2590 489 1525\nf 2268 2267 2721 2726\nf 2732 2731 2723 2722\ns 155\nf 2609 2608 2622 2621\nf 2613 2612 2606 2611\nf 2612 2613 2614 485\nf 2610 2611 2606 498\nf 2620 2621 2622 497\nf 2614 2615 2616 485\nf 2608 2609 2610 498\nf 2618 2619 2620 497\nf 2619 2618 2549 2548\ns 159\nf 2607 2608 498\nf 2595 2605 2607 2617\nf 2617 2612 485\nf 2585 2584 2617 2616\nf 2612 2617 2607 2606\nf 2606 2607 498\nf 2593 2595 2617 2584\nf 2616 2617 485\ns 160\nf 2514 513 488 2593\nf 2622 2623 497\nf 2592 2593 488\nf 2584 2497 2514 2593\nf 2584 2585 486\nf 2623 2618 497\nf 2600 2605 2595 2594\nf 2594 2595 487\nf 2514 2515 513\nf 2583 2584 486\nf 2595 2596 487\nf 2584 2583 2498 2497\nf 2593 2592 2596 2595\ns 185\nf 2491 2490 2557 2556\nf 2568 2569 501\nf 2497 2491 2509 2514\nf 2490 2491 516\nf 2567 2568 501\nf 2491 2556 2568 2509\nf 2491 2492 516\nf 2497 2496 2492 2491\nf 2568 2567 2510 2509\ns 164\nf 2516 2515 2508 2507\nf 1485 1484 1496 1495\nf 1110 1109 1105 1104\nf 1531 1532 512\nf 1110 1104 2513 1532\nf 551 1480 1520 1534\nf 566 551 2222 2193\nf 551 1534 1533 2271\nf 2082 1497 1496 566\nf 1481 566 1496 1484\nf 1103 1104 779\nf 1533 1534 512\nf 2512 2516 1533 512\nf 1529 1530 1531 512\nf 1104 1122 2589 2513\nf 566 2193 2082\nf 551 2271 2222\nf 2271 1533 2516 2507\nf 1993 1497 2082 1982\nf 551 566 1481 1480\nf 1104 1105 779\nf 1534 1529 512\nf 1104 1103 1123 1122\nf 2513 2512 512 1532\ns 138\nf 2715 2716 2717 472\nf 2333 2334 2335 542\nf 2323 2324 2319 530\nf 2325 2326 2327 471\nf 2339 2340 2341 529\nf 2326 2325 2319 2324\nf 2334 2333 2428 2433\nf 2329 2328 2720 2719\nf 2322 2321 2341 2340\nf 2338 2337 2331 2336\nf 2719 2720 2715 472\nf 2335 2336 2331 542\nf 2321 2322 2323 530\nf 2327 2328 2329 471\nf 2337 2338 2339 529\ns 224\nf 2321 2320 2342 2341\nf 2341 2342 529\nf 2308 2318 2332 2342\nf 2332 2333 542\nf 2453 2452 2309 2308\nf 2342 2337 529\nf 2453 2308 2342 2320\nf 2331 2332 542\nf 2337 2342 2332 2331\ns 225\nf 2333 2332 2429 2428\nf 2317 2318 546\nf 2318 2313 546\nf 2318 2317 2415 2421\nf 2429 2430 541\nf 2318 2421 2429 2332\nf 2428 2429 541\ns 119\nf 2300 2306 2294 2293\nf 2691 2692 457\nf 2294 2306 2692\nf 2299 2293 499\nf 2695 2694 2687 2686\nf 2301 2300 2293 2299\nf 2293 2294 2295 499\nf 2686 2687 2688 456\nf 2692 2693 457\nf 2692 2691 2295 2294\ns 253\nf 1883 1887 1507 628\nf 1128 1127 1147 1146\nf 1140 1139 1135 1134\nf 1507 1508 628\nf 1127 1128 775\nf 1146 1140 1884 1506\nf 1128 1146 1506 1498\nf 1128 1129 775\nf 1508 1503 628\nf 1492 1491 1503 1508\nf 1884 1883 628 1506\nf 1486 1485 1495 1500\nf 1505 1506 628\nf 1140 1134 1991 1884\nf 1490 1486 1500 1504\nf 1134 1128 1498 1991\nf 1503 1504 1505 628\nf 1134 1133 1129 1128\nf 1146 1145 1141 1140\nf 1491 1490 1504 1503\nf 1499 1498 1506 1505\ns 416\nf 1593 1598 1538 681\nf 684 1535 1582 1581\nf 1571 1576 1540 683\nf 1587 1588 1589 679\nf 1535 1538 1541 1540\nf 1540 1576 1582 1535\nf 1597 1598 1593 680\nf 1541 682 683 1540\nf 1581 1582 1577 685\nf 1541 1538 1598 1588\nf 1575 1576 1571 686\nf 681 1538 1535 684\nf 1577 1582 1576 1575\nf 682 1541 1588 1587\nf 1589 1588 1598 1597\ns 255\nf 2198 2204 1800 1799\nf 1801 1800 1656 1655\nf 1673 1672 1654 1653\nf 1661 1660 1772 1771\nf 1799 1800 650\nf 1783 1784 1778 659\nf 1778 1779 1780 659\nf 1655 1656 1651 647\nf 1642 1643 665\nf 1630 1631 663\nf 1618 1619 669\nf 1781 1658 1656 1800\nf 1786 1784 1939\nf 1642 1636 2203 2250\nf 1617 1618 669\nf 1629 1630 663\nf 1641 1642 665\nf 1653 1654 1655 647\nf 1782 1783 659\nf 1785 1786 660\nf 1800 1801 650\nf 1630 1629 1649 1648\nf 1786 1785 1778 1784\nf 1802 1801 1655 1654\nf 1784 1783 1940 1939\nf 1790 1789 1773 1772\nf 1658 1657 1651 1656\nf 1642 1641 1637 1636\nf 1797 1798 1799 650\nf 1786 1787 660\nf 1780 1781 659\nf 1647 1648 664\nf 1635 1636 666\nf 1623 1624 668\nf 1611 1612 670\nf 1672 1792 1802 1654\nf 1790 1772 1660 1779\nf 1612 1613 670\nf 1624 1625 668\nf 1636 1637 666\nf 1648 1649 664\nf 1771 1772 1773 661\nf 1781 1782 659\nf 1789 1790 1785 660\nf 1801 1802 1797 650\nf 1785 1790 1779 1778\nf 1659 1658 1781 1780\nf 1787 1786 1939 1938\ns 264\nf 2185 2184 2067 2066\nf 2116 2117 588\nf 2066 2067 572\nf 2067 2068 572\nf 2184 2185 571\nf 2184 2183 2136 2135\nf 2117 2116 2166 2165\nf 2117 2118 588\nf 2117 2165 2184 2135\nf 2068 2062 572\nf 2183 2184 571\ns 265\nf 2165 2166 575\nf 2068 2067 1688 1698 1777 1776 1921 1978\nf 2165 1688 2067 2184\nf 1990 1985 616\nf 1927 1926 1922 1921\nf 2165 2164 1689 1688\nf 1990 1989 2062 2068\nf 2164 2165 575\nf 1990 2068 1978 2003\nf 1927 1921 1776 1946\nf 1989 1990 616\ns 282\nf 1665 1664 2135 2134\nf 1681 1686 1676 1675\nf 2134 2135 586\nf 1808 1803 646\nf 1676 1677 658\nf 1663 1664 585\nf 1674 1652 1686 1808\nf 1652 1662 1676 1686\nf 1673 1674 648\nf 1686 1681 645\nf 2123 2124 587\nf 1674 1673 1653 1652\nf 1808 1807 2124 2123\nf 2123 2122 2118 2117\nf 2135 2136 586\nf 1807 1808 646\nf 1675 1676 658\nf 1664 1665 585\nf 2123 2117 2135 1664\nf 1664 1674 1808 2123\nf 1674 1669 648\nf 1685 1686 645\nf 2122 2123 587\nf 1669 1674 1664 1663\nf 1803 1808 1686 1685\ns 303\nf 2008 2009 2010 601\nf 2006 2007 2002 614\nf 2009 2008 2002 2007\nf 2010 2011 2012 601\nf 2004 2005 2006 614\ns 270\nf 1998 1997 2013 2012\nf 1867 1866 1997 1996\nf 1947 1946 1776 1775\nf 1693 1698 1688 1687\nf 2003 2004 614\nf 1994 1995 604\nf 1946 1947 617\nf 1920 1921 620\nf 1776 1777 661\nf 1687 1688 576\nf 1860 1927 1946 1878\nf 1995 1980 2013 1997\nf 1866 1860 1878 1885\nf 1662 1657 662\nf 1697 1698 657\nf 1777 1771 661\nf 1885 1886 629\nf 1927 1928 619\nf 1977 1978 613\nf 2002 2003 614\nf 1662 1661 1771 1777\nf 1921 1920 1973 1978\nf 1946 1945 1879 1878\nf 1995 1994 1981 1980\nf 2004 2003 1978 1977\nf 1860 1859 1928 1927\nf 1866 1865 1861 1860\nf 2013 2008 601\nf 1996 1997 602\nf 1945 1946 617\nf 1921 1922 620\nf 1859 1860 632\nf 1775 1776 661\nf 1688 1689 576\nf 1662 1777 1698 1676\nf 1885 1995 1997 1866\nf 1980 1990 2003 2013\nf 1661 1662 662\nf 1698 1693 657\nf 1860 1861 632\nf 1926 1927 619\nf 1978 1973 613\nf 1997 1998 602\nf 2012 2013 601\nf 1677 1676 1698 1697\nf 604 1995 1885 629\nf 2008 2013 2003 2002\ns 306\nf 2005 2004 1977 1976\ns 271\nf 2124 2125 2120 587\nf 1695 1696 1697 657\nf 1677 1678 1679 658\nf 1683 1684 1685 645\nf 1803 1804 1805 646\nf 1682 1681 1675 1680\nf 1804 1803 1685 1684\nf 1678 1677 1697 1696\nf 2120 2121 2122 587\nf 1693 1694 1695 657\nf 1679 1680 1675 658\nf 1681 1682 1683 645\nf 1805 1806 1807 646\nf 1807 1806 2125 2124\ns 403\nf 1623 1622 1620 1619\nf 675 1583 1622 1621\nf 682 1542 1539 683\nf 1621 1622 1623 668\nf 1571 1572 1573 686\nf 1550 1551 671\nf 1539 1549 1548 1583 1572\nf 1583 1548 1620 1622\nf 1539 1542 1551 1549\nf 1549 1543 676\nf 1619 1620 1615 669\nf 1551 1550 1543 1549\nf 1542 682 1587 1592\nf 1548 1547 1615 1620\nf 1602 672 1639 1644\nf 1592 1591 672 1602\nf 1572 1571 683 1539\nf 1643 1644 1639 665\nf 1551 1552 671\nf 1547 1548 676\nf 1552 1551 1542 1592 1602\nf 1552 1602 1644 1646\nf 1548 1549 676\nf 1552 1553 671\nf 1591 1592 1587 679\nf 1645 1646 1647 664\nf 1573 1572 1583 675\nf 1553 1552 1646 1645\nf 1647 1646 1644 1643\ns 405\nf 1641 1640 1638 1637\nf 1591 1590 1601 672\nf 1595 1596 1597 680\nf 1596 1600 1601 1590\nf 1637 1638 1633 666\nf 1596 1595 673 1600\nf 1600 673 1633 1638\nf 1590 1589 1597 1596\nf 1589 1590 1591 679\nf 1601 1600 1638 1640\nf 1639 1640 1641 665\nf 672 1601 1640 1639\ns 407\nf 1635 1634 1632 1631\nf 673 1599 1634 1633\nf 1595 1594 1599 673\nf 1609 1610 1611 670\nf 1569 1570 674\nf 1537 1570 1569 1599 1594\nf 1599 1569 1632 1634\nf 1568 1569 674\nf 1593 1594 1595 680\nf 1631 1632 1627 663\nf 1536 684 1581 1580\nf 1594 1593 681 1537\nf 1569 1568 1627 1632\nf 1586 678 1603 1608\nf 1580 1579 678 1586\nf 1537 681 684 1536\nf 1607 1608 1603 667\nf 1570 1564 674\nf 1537 1536 1558 1570\nf 1559 1586 1608 1610\nf 1559 1558 1536 1580 1586\nf 1579 1580 1581 685\nf 1633 1634 1635 666\nf 1560 1559 1610 1609\nf 1611 1610 1608 1607\ns 640\nf 1629 1628 1650 1649\nf 1627 1628 1629 663\nf 1567 1554 1650 1628\nf 1649 1650 1645 664\nf 1554 1553 1645 1650\nf 1567 1566 1555 1554\nf 1553 1554 1555 671\nf 1566 1567 1568 674\nf 1568 1567 1628 1627\ns 639\nf 1617 1616 1614 1613\nf 1615 1616 1617 669\nf 1546 1561 1614 1616\nf 1613 1614 1609 670\nf 1561 1560 1609 1614\nf 1546 1545 1562 1561\nf 1560 1561 1562 677\nf 1545 1546 1547 676\nf 1547 1546 1616 1615\ns 409\nf 678 1585 1604 1603\nf 1603 1604 1605 667\nf 1574 1584 1585 1578\nf 1577 1578 1579 685\nf 1578 1577 1575 1574\nf 1584 675 1621 1626\nf 1574 1573 675 1584\nf 1625 1626 1621 668\nf 1573 1574 1575 686\nf 1585 1584 1626 1604\nf 1579 1578 1585 678\nf 1605 1604 1626 1625\ns 637\nf 1545 1544 1563 1562\nf 1562 1563 1557 677\nf 1563 1544 1556 1565\nf 1564 1565 1566 674\nf 1565 1564 1557 1563\nf 1543 1544 1545 676\nf 1555 1556 1550 671\nf 1550 1556 1544 1543\nf 1566 1565 1556 1555\ns 425\nf 696 1463 1452 710\nf 698 1477 1466 704\nf 700 1471 1475 699\nf 702 1467 1469 695\nf 705 1461 1463 696\nf 708 1453 1455 697\nf 1385 1384 1436 1435\nf 703 1437 1438\nf 1352 1309 1453 1414\nf 1428 1426 1457 1460\nf 1325 1386 1440 1466\nf 1447 1445 1471 1474\nf 1449 1447 1474 1455\nf 1441 1325 1466 1477\nf 1430 1428 1460 1469\nf 1422 1421 1452 1463\nf 1439 1440 1435 703\nf 1454 708 697 1456\nf 1462 705 696 1464\nf 1468 702 695 1470\nf 1472 700 699 1476\nf 1478 698 704 1465\nf 1464 696 710 1451\nf 1470 695 707 1459\nf 1456 697 701 1473\nf 1476 699 698 1478\nf 1473 701 700 1472\nf 1465 704 1439 1438\nf 1458 706 705 1462\nf 1451 710 1417 1416\nf 1435 1436 1437 703\nf 1426 1424 1461 1457\nf 1384 1433 1432 1467 1436\nf 1445 1443 1475 1471\nf 1309 1449 1455 1453\nf 1443 1441 1477 1475\nf 1432 1430 1469 1467\nf 1424 1422 1463 1461\nf 1438 1439 703\nf 1353 1352 1414 1413\nf 710 1452 1418 1417\nf 706 1457 1461 705\nf 704 1466 1440 1439\nf 701 1474 1471 700\nf 699 1475 1477 698\nf 697 1455 1474 701\nf 695 1469 1460 707\ns 426\nf 1417 1418 1413 709\nf 1421 1420 1354 1418 1452\nf 1416 1417 709\nf 1386 1385 1435 1440\nf 709 1415 1416\nf 1413 1414 1415 709\ns 490\nf 1143 1144 1145 776\nf 1141 1142 1137 777\nf 1145 1144 1142 1141\nf 1036 1035 1144 1143\nf 1035 1066 1142 1144\nf 1066 1065 1137 1142\ns 576\nf 912 911 1131 1136\nf 1064 912 1136 1138\nf 1065 1064 1138 1137\nf 1139 1138 1136 1135\nf 1135 1136 1131 778\nf 1137 1138 1139 777\ns 492\nf 1129 1130 1125 775\nf 1131 1132 1133 778\nf 1133 1132 1130 1129\nf 911 910 1132 1131\nf 910 1045 1130 1132\nf 1045 1044 1125 1130\ns 586\nf 1037 1036 1143 1148\nf 1125 1126 1127 775\nf 1044 1043 1126 1125\nf 1127 1126 1148 1147\nf 1147 1148 1143 776\nf 1043 1037 1148 1126\ns 495\nf 1117 1118 1113 781\nf 1119 1120 1121 780\nf 1121 1120 1118 1117\nf 1097 1096 1120 1119\nf 1096 1027 1118 1120\nf 1027 1026 1113 1118\ns 583\nf 1019 1018 1107 1112\nf 1025 1019 1112 1114\nf 1026 1025 1114 1113\nf 1115 1114 1112 1111\nf 1113 1114 1115 781\nf 1111 1112 1107 782\ns 497\nf 1107 1108 1109 782\nf 1105 1106 1101 779\nf 1109 1108 1106 1105\nf 1018 1017 1108 1107\nf 1017 862 1106 1108\nf 862 861 1101 1106\ns 565\nf 1098 1097 1119 1124\nf 1101 1102 1103 779\nf 861 860 1102 1101\nf 1103 1102 1124 1123\nf 860 1098 1124 1102\nf 1123 1124 1119 780\ns 486\nf 1115 1116 781\nf 1110 1111 782\nf 1122 1123 780\nf 1116 1117 781\nf 1109 1110 782\nf 1121 1122 780\ns 482\nf 1146 1147 776\nf 1134 1135 778\nf 1139 1140 777\nf 1145 1146 776\nf 1133 1134 778\nf 1140 1141 777\ns 408\nf 1559 1560 677\nf 1558 1559 677\nf 1557 1558 677\nf 1564 1570 1558 1557\ns 373\nf 1652 1653 647\nf 1651 1652 647\nf 1657 1662 1652 1651\ns 374\nf 1659 1660 1661 662\nf 1660 1659 1780 1779\nf 1657 1658 1659 662\ns 283\nf 1669 1670 1671 648\nf 1672 1671 1793 1792\nf 1671 1672 1673 648\ns 268\nf 2164 2163 1690 1689\nf 1691 1692 1687 576\nf 2166 2167 2162 575\nf 1694 1693 1687 1692\nf 1689 1690 1691 576\nf 2162 2163 2164 575\nf 2116 2115 2167 2166\ns 657\nf 1789 1788 1774 1773\nf 1773 1774 1775 661\ns 332\nf 1788 1787 1938 1937\nf 1787 1788 1789 660\ns 334\nf 1859 1858 1929 1928\nf 1928 1929 1924 619\nf 1918 1919 1920 620\nf 1924 1925 1926 619\nf 1922 1923 1918 620\nf 1926 1925 1923 1922\ns 349\nf 1865 1864 1862 1861\nf 1861 1862 1857 632\nf 1857 1858 1859 632\ns 304\nf 1863 1864 1865 631\nf 1998 1999 2000 602\nf 1999 1998 2012 2011\nf 1868 1867 1996 2001\nf 1867 1868 1863 631\nf 2000 2001 1996 602\ns 350\nf 1866 1867 631\nf 1865 1866 631\ns 313\nf 1886 1885 1878 1877\nf 1877 1878 630\nf 1878 1879 630\ns 320\nf 1920 1919 1974 1973\nf 1973 1974 1975 613\nf 1975 1976 1977 613\ns 310\nf 1985 1990 1980 1979\nf 1980 1981 603\nf 1979 1980 603\ns 266\nf 2079 2078 2176 2175\nf 2078 2079 2080 573\ns 286\nf 2118 2119 2114 588\nf 2114 2115 2116 588\nf 2122 2121 2119 2118\ns 227\nf 2307 2308 531\nf 2308 2309 531\nf 2313 2318 2308 2307\ns 139\nf 2453 2454 532\nf 2330 2325 471\nf 2452 2453 532\nf 2329 2330 471\nf 2330 2329 2719 2718\ns 122\nf 2430 2431 2432 541\nf 2765 2764 2431 2430\nf 2432 2433 2428 541\ns 187\nf 2551 2552 2547 504\nf 2553 2554 2555 503\nf 2555 2554 2552 2551\nf 2490 2489 2558 2557\nf 2557 2558 2553 503\nf 2547 2548 2549 504\ns 203\nf 2488 2489 2490 516\nf 2496 2495 2493 2492\nf 2492 2493 2488 516\ns 156\nf 2585 2586 2587 486\nf 2498 2499 2494 515\nf 2583 2588 2499 2498\nf 2587 2588 2583 486\nf 2494 2495 2496 515\nf 2586 2585 2616 2615\ns 204\nf 2497 2498 515\nf 2496 2497 515\ns 165\nf 2509 2510 514\nf 2515 2514 2509 2508\nf 2508 2509 514\ns 177\nf 2549 2550 504\nf 2618 2623 2550 2549\nf 2550 2551 504\ns 188\nf 2555 2556 503\nf 2556 2557 503\ns 120\nf 2773 2774 2769 459\nf 2763 2764 2765 460\nf 2771 2770 2768 2767\nf 2717 2716 2774 2773\nf 2769 2770 2771 459\nf 2767 2768 2763 460\ns 436\nf 1354 1353 1413 1418\ng heads\nusemtl silver\ns 128\nf 2702 2701 2753 2752\nf 2752 2751 2745 2750\nf 2704 2703 2697 2702\nf 2755 2756 2751 465\nf 2737 2738 2733 466\nf 2699 2700 2701 478\nf 2391 2392 2393 524\nf 2398 2396 2410 2408 2451 2736 2754 2700\nf 2393 2394 2395 524\nf 2701 2702 2697 478\nf 2753 2754 2755 465\nf 2396 2395 2411 2410\nf 2739 2744 2734 2733\nf 2399 2398 2700 2699\nf 2701 2700 2754 2753\nf 2755 2754 2736 2735\nf 2751 2756 2746 2745\nf 2703 2708 2698 2697\nf 2398 2397 2391 2396\nf 2735 2736 2737 466\nf 2697 2698 2699 478\nf 2702 2752 2750 2704\nf 2756 2734 2744 2746\nf 2395 2396 2391 524\nf 2733 2734 2735 466\nf 2751 2752 2753 465\nf 2397 2402 2392 2391\nf 2740 2739 2733 2738\nf 2756 2755 2735 2734\ns 142\nf 2402 2401 2375 2374\nf 2394 2393 2371 2370\nf 2395 2394 2412 2411\nf 2409 2414 2404 2403\nf 2407 2408 2403 536\nf 2399 2400 2401 477\nf 2372 2392 2402 2374\nf 2406 2382 2445 2447\nf 2397 2398 2399 477\nf 2405 2406 2407 536\nf 2413 2414 2409 523\nf 2408 2407 2446 2451\nf 2393 2392 2372 2371\nf 2401 2400 2376 2375\nf 2387 2386 2414 2413\nf 2406 2405 2383 2382\nf 2410 2409 2403 2408\nf 2409 2410 2411 523\nf 2401 2402 2397 477\nf 2384 2404 2414 2386\nf 2394 2370 2388 2412\nf 2400 2698 2708 2376\nf 2403 2404 2405 536\nf 2411 2412 2413 523\nf 2407 2406 2447 2446\nf 2405 2404 2384 2383\nf 2388 2387 2413 2412\nf 2400 2399 2699 2698\ns 131\nf 2450 2451 2446 535\nf 2738 2449 2443 2740\nf 2444 2443 2449 2448\nf 2737 2736 2451 2450\nf 2448 2449 2450 535\nf 2446 2447 2448 535\nf 2738 2737 2450 2449\ns 150\nf 2657 2656 2676 2675\nf 2645 2644 2682 2681\nf 2665 2664 2674 2673\nf 2673 2672 2666 2671\nf 2682 2683 2678 491\nf 2674 2675 2676 479\nf 2666 2667 2668 492\nf 2519 2520 2521 510\nf 2669 2651 2645 2681\nf 2653 2667 2677 2655\nf 2521 2522 2517 510\nf 2664 2665 2660 480\nf 2672 2673 2674 479\nf 2680 2681 2682 491\nf 2539 2538 2520 2519\nf 2678 2683 2522 2521\nf 2664 2663 2675 2674\nf 2644 2643 2683 2682\nf 2656 2655 2677 2676\nf 2668 2667 2653 2652\nf 2670 2669 2681 2680\nf 2672 2677 2667 2666\nf 2523 2528 2518 2517\nf 2676 2677 2672 479\nf 2668 2669 2670 492\nf 2660 2661 2662 480\nf 2517 2518 2519 510\nf 2663 2574 2657 2675\nf 2524 2522 2683 2643\nf 2662 2663 2664 480\nf 2670 2671 2666 492\nf 2678 2679 2680 491\nf 2524 2523 2517 2522\nf 2671 2670 2680 2679\nf 2669 2668 2652 2651\nf 2663 2662 2575 2574\ns 151\nf 2479 2478 2660 2665\nf 2478 2479 2480 521\nf 2477 2475 2576 2661\nf 2480 2481 2476 521\nf 2462 2461 2538 2537\nf 2662 2661 2576 2575\nf 2478 2477 2661 2660\nf 2476 2481 2471 2470\nf 2476 2477 2478 521\nf 2671 2679 2520 2538 2461 2479 2665 2673\nf 2477 2476 2470 2475\nf 2679 2678 2521 2520\ns 195\nf 2540 2539 2519 2518\nf 2536 2535 2529 2534\nf 2539 2540 2535 509\nf 2460 2461 2462 522\nf 2463 2536 2534 2465\nf 2458 2459 2460 522\nf 2537 2538 2539 509\nf 2535 2540 2530 2529\nf 2480 2479 2461 2460\nf 2464 2469 2459 2458\nf 2462 2463 2458 522\nf 2540 2518 2528 2530\nf 2481 2459 2469 2471\nf 2535 2536 2537 509\nf 2465 2464 2458 2463\nf 2481 2480 2460 2459\nf 2463 2462 2537 2536\ns 275\nf 2088 2087 2159 2158\nf 2106 2105 2087 2086\nf 1727 1726 1762 1761\nf 2090 2095 2085 2084\nf 1825 1824 1818 1817\nf 1749 1748 1740 1739\nf 1751 1750 1768 1767\nf 1753 1758 1748 1747\nf 2104 2105 2106 593\nf 2084 2085 2086 594\nf 1767 1768 1769 651\nf 1759 1760 1761 582\nf 1751 1752 1747 652\nf 1740 1748 1758 1742\nf 2161 1762 1726 2151\nf 2107 2085 2095 2097\nf 1770 1730 1728 1760\nf 1754 1752 1766 1764 2159 2087 2105 1822\nf 1753 1754 1755 639\nf 1761 1762 1763 582\nf 1769 1770 1765 651\nf 1825 1826 1821 640\nf 2102 2103 2104 593\nf 2156 2157 2158 581\nf 1754 1753 1747 1752\nf 1752 1751 1767 1766\nf 1750 1749 1739 1738\nf 1826 1825 1817 1816\nf 2091 2090 2084 2089\nf 1728 1727 1761 1760\nf 2107 2106 2086 2085\nf 2089 2088 2158 2157\nf 1824 1823 2104 2103\nf 2161 2160 1763 1762\nf 2157 2156 2150 2155\nf 2103 2102 2096 2101\nf 1744 1743 1757 1756\nf 1732 1731 1769 1768\nf 1822 1821 1755 1754\nf 1766 1765 1759 1764\nf 2160 2161 2156 581\nf 2106 2107 2102 593\nf 2086 2087 2088 594\nf 1821 1822 1823 640\nf 1765 1766 1767 651\nf 1757 1758 1753 639\nf 1749 1750 1751 652\nf 1824 2103 2101 1818\nf 1826 1816 1744 1756\nf 2089 2157 2155 2091\nf 1750 1738 1732 1768\nf 1747 1748 1749 652\nf 1755 1756 1757 639\nf 1763 1764 1759 582\nf 1823 1824 1825 640\nf 2088 2089 2084 594\nf 2158 2159 2160 581\nf 1765 1770 1760 1759\nf 1821 1826 1756 1755\nf 1731 1730 1770 1769\nf 1743 1742 1758 1757\nf 2102 2107 2097 2096\nf 2156 2161 2151 2150\nf 2160 2159 1764 1763\nf 1823 1822 2105 2104\ns 298\nf 2052 2051 2043 2042\nf 2056 2061 2051 2050\nf 2054 2055 2050 608\nf 1957 1958 1959 596\nf 2043 2051 2061 2045\nf 1959 1960 1955 596\nf 2056 2057 2058 595\nf 2057 2056 2050 2055\nf 1958 1957 2036 2035\nf 2047 2046 2060 2059\nf 1960 1959 2058 2057\nf 2060 2061 2056 595\nf 2052 2053 2054 608\nf 1955 1956 1957 596\nf 1958 2035 2047 2059\nf 2050 2051 2052 608\nf 2058 2059 2060 595\nf 1959 1958 2059 2058\nf 2046 2045 2061 2060\ns 300\nf 1963 1962 1954 1953\nf 1953 1954 1949 607\nf 2053 2041 1964 1952\nf 2053 2052 2042 2041\nf 1964 1963 1953 1952\nf 1951 1952 1953 607\nf 1949 1950 1951 607\nf 2054 2053 1952 1951\ns 299\nf 1957 1956 2037 2036\nf 1831 1830 1909 1908\nf 1845 1850 1840 1839\nf 1846 1844 2037 1956\nf 1845 1846 1847 637\nf 1846 1845 1839 1844\nf 2055 2054 1951 1950\nf 1956 1955 1847 1846\nf 1849 1850 1845 637\nf 2055 1950 1891 1909 1830 1848 1960 2057\nf 1847 1848 1849 637\nf 1892 1891 1950 1949\nf 1955 1960 1848 1847\ns 342\nf 1849 1848 1830 1829\nf 1833 1838 1828 1827\nf 1831 1832 1827 638\nf 1832 1907 1905 1834\nf 1829 1830 1831 638\nf 1910 1911 1906 625\nf 1907 1906 1900 1905\nf 1832 1831 1908 1907\nf 1911 1910 1890 1889\nf 1834 1833 1827 1832\nf 1906 1907 1908 625\nf 1911 1889 1899 1901\nf 1827 1828 1829 638\nf 1908 1909 1910 625\nf 1906 1911 1901 1900\ns 315\nf 1894 1899 1889 1888\nf 1895 1893 1954 1962\nf 1892 1893 1888 626\nf 1893 1892 1949 1954\nf 1895 1894 1888 1893\nf 1888 1889 1890 626\nf 1890 1891 1892 626\nf 1910 1909 1891 1890\ns 357\nf 1850 1828 1838 1840\nf 1850 1849 1829 1828\ns 129\nf 2445 2444 2448 2447\ng cylinders\nusemtl black\nf 2440 2441 537\nf 2444 2445 2440 537\nf 2741 2740 2443 2442\nf 2441 2442 537\nf 2442 2443 2444 537\ns 120\nf 2780 2779 2759 2758\nf 2716 2715 2709 2714\nf 2709 2710 2711 474\nf 2714 2776 2774 2716\nf 2775 2776 2777 461\nf 2775 2780 2770 2769\nf 2715 2720 2710 2709\nf 2713 2714 2709 474\nf 2780 2758 2768 2770\nf 2779 2780 2775 461\nf 2776 2775 2769 2774\nf 2714 2713 2777 2776\ns 126\nf 2432 2431 2437 2436\nf 2762 2437 2431 2764\nf 2762 2761 2438 2437\ns 138\nf 2366 2365 2327 2326\nf 2358 2357 2323 2322\nf 2359 2358 2352 2351\nf 2361 2366 2356 2355\nf 2363 2364 2365 473\nf 2351 2352 2353 527\nf 2324 2356 2366 2326\nf 2346 2334 2433 2435\nf 2353 2354 2349 527\nf 2365 2366 2361 473\nf 2346 2345 2335 2334\nf 2339 2338 2354 2353\nf 2365 2364 2328 2327\nf 2357 2356 2324 2323\nf 2434 2435 2436 539\nf 2357 2358 2359 528\nf 2336 2344 2354 2338\nf 2358 2322 2340 2352\nf 2364 2710 2720 2328\nf 2355 2356 2357 528\nf 2436 2437 2438 539\nf 2347 2346 2435 2434\nf 2345 2344 2336 2335\nf 2340 2339 2353 2352\nf 2364 2363 2711 2710\ns 127\nf 2742 2741 2442 2441\nf 2381 2380 2441 2440\nf 2348 2343 540\nf 2348 2439 2441 2380\nf 2748 2742 2760 2778\nf 2438 2439 539\nf 2348 2347 2434 2439\nf 2761 2760 2439 2438\nf 2350 2349 2343 2348\nf 2347 2348 540\nf 2742 2441 2439 2760\nf 2350 2348 2380 2390\nf 2439 2434 539\nf 2748 2747 2743 2742\ns 142\nf 2378 2377 2707 2706\nf 2385 2390 2380 2379\nf 2712 2713 474\nf 2385 2386 2387 525\nf 2379 2380 538\nf 2373 2374 2375 475\nf 2367 2368 526\nf 2359 2360 528\nf 2362 2360 2368 2378\nf 2360 2355 528\nf 2368 2369 526\nf 2375 2376 2377 475\nf 2380 2381 538\nf 2387 2388 2389 525\nf 2711 2712 474\nf 2374 2373 2367 2372\nf 2382 2381 2440 2445\nf 2370 2369 2389 2388\nf 2363 2362 2712 2711\nf 2377 2376 2708 2707\nf 2360 2359 2351 2350\nf 2386 2385 2379 2384\nf 2362 2361 2355 2360\nf 2390 2385 525\nf 2383 2384 2379 538\nf 2378 2373 475\nf 2371 2372 2367 526\nf 2362 2363 473\nf 2378 2706 2712 2362\nf 2360 2350 2390 2368\nf 2361 2362 473\nf 2369 2370 2371 526\nf 2377 2378 475\nf 2381 2382 2383 538\nf 2389 2390 525\nf 2373 2378 2368 2367\nf 2369 2368 2390 2389\ns 125\nf 2777 2778 461\nf 2706 2707 476\nf 2706 2748 2778 2712\nf 2707 2708 2703 476\nf 2778 2779 461\nf 2713 2712 2778 2777\nf 2779 2778 2760 2759\nf 2759 2760 462\nf 2705 2706 476\nf 2703 2704 2705 476\nf 2760 2761 462\nf 2706 2705 2749 2748\ns 150\nf 2655 2654 2648 2653\nf 2659 2654 481\nf 2652 2653 2648 494\nf 2647 2642 493\nf 2642 2643 2644 493\nf 2648 2649 494\nf 2654 2655 2656 481\nf 2654 2659 2649 2648\nf 2650 2649 2647 2646\nf 2658 2659 481\nf 2650 2651 2652 494\nf 2646 2647 493\nf 2644 2645 2646 493\nf 2649 2650 494\nf 2656 2657 2658 481\nf 2643 2642 2525 2524\nf 2651 2650 2646 2645\ns 152\nf 2582 2631 2659 2572\nf 2573 2572 2659 2658\ns 155\nf 2615 2614 2634 2633\nf 2621 2620 2640 2639\nf 2548 2547 2541 2546\nf 2632 2633 2634 483\nf 2577 2578 2579 484\nf 2611 2625 2635 2613\nf 2627 2609 2621 2639\nf 2541 2542 2543 506\nf 2626 2627 2628 496\nf 2640 2641 2636 495\nf 2630 2635 2625 2624\nf 2628 2627 2639 2638\nf 2626 2625 2611 2610\nf 2614 2613 2635 2634\nf 2620 2619 2641 2640\nf 2581 2580 2633 2632\nf 2636 2641 2546 2545\nf 2547 2552 2542 2541\nf 2634 2635 2630 483\nf 2579 2580 2581 484\nf 2548 2546 2641 2619\nf 2580 2586 2615 2633\nf 2545 2546 2541 506\nf 2624 2625 2626 496\nf 2638 2639 2640 495\nf 2627 2626 2610 2609\nf 2580 2579 2587 2586\ns 153\nf 2582 2581 2632 2631\nf 2637 2636 2545 2544\nf 2572 2571 2474 2473\nf 2636 2637 495\nf 2628 2629 496\nf 2532 2526 2544 2562\nf 2631 2629 2649 2659\nf 2572 2473 2503 2582\nf 2629 2624 496\nf 2637 2638 495\nf 2631 2632 483\nf 2582 2577 484\nf 2629 2637 2647 2649\nf 2637 2544 2526 2647\nf 2581 2582 484\nf 2630 2631 483\nf 2532 2531 2527 2526\nf 2631 2630 2624 2629\nf 2629 2628 2638 2637\ns 151\nf 2573 2574 2575 482\nf 2474 2475 2470 519\nf 2470 2471 2472 519\nf 2572 2573 482\nf 2571 2576 2475 2474\nf 2575 2576 2571 482\nf 2473 2474 519\nf 2472 2473 519\nf 2571 2572 482\nf 2574 2573 2658 2657\ns 156\nf 2501 2500 2494 2499\nf 2500 2505 2495 2494\nf 2579 2578 2588 2587\nf 2501 2499 2588 2578\nf 2578 2577 2502 2501\ns 187\nf 2487 2486 2561 2560\nf 2560 2559 2553 2558\nf 2559 2560 2561 505\nf 2482 2483 2484 518\nf 2564 2542 2552 2554\nf 2488 2493 2483 2482\nf 2559 2564 2554 2553\nf 2563 2564 2559 505\nf 2487 2560 2558 2489\nf 2486 2487 2482 518\nf 2489 2488 2482 2487\nf 2564 2563 2543 2542\ns 192\nf 2467 2466 2533 2532\nf 2562 2563 505\nf 2467 2468 520\nf 2467 2532 2562 2485\nf 2466 2467 520\nf 2544 2545 506\nf 2472 2471 2469 2468\nf 2486 2485 2562 2561\nf 2563 2562 2544 2543\nf 2561 2562 505\nf 2468 2469 2464 520\nf 2473 2467 2485 2503\nf 2464 2465 2466 520\nf 2543 2544 506\nf 2473 2472 2468 2467\ns 203\nf 2504 2505 2500 517\nf 2505 2483 2493 2495\nf 2500 2501 2502 517\nf 2505 2504 2484 2483\ns 268\nf 2168 2173 2163 2162\nf 2114 2119 2109 2108\nf 2168 2169 2170 577\nf 1722 1694 1692 1712\nf 2173 1714 1690 2163\nf 2172 2173 2168 577\nf 1692 1691 1713 1712\nf 2173 2172 1715 1714\nf 2113 2112 2170 2169\nf 2169 2168 2162 2167\nf 2115 2114 2108 2113\nf 2112 2113 2108 590\nf 2113 2169 2167 2115\nf 2108 2109 2110 590\nf 1695 1694 1722 1721\nf 1691 1690 1714 1713\ns 273\nf 2172 2171 1716 1715\nf 2171 2172 577\nf 2092 2093 592\nf 2099 2093 2111 2129\nf 1716 1711 578\nf 2093 2094 592\nf 1718 1717 1711 1716\nf 2093 2092 2154 2153\nf 2099 2098 2094 2093\nf 2170 2171 577\nf 2090 2091 2092 592\nf 2093 2153 2171 2111\nf 1715 1716 578\nf 2094 2095 2090 592\nf 2098 2097 2095 2094\nf 2112 2111 2171 2170\ns 275\nf 1811 1810 2129 2128\nf 2092 2091 2155 2154\nf 2130 2129 2111 2110\nf 1737 1736 1734 1733\nf 1729 1734 1724 1723\nf 2152 2153 579\nf 2111 2112 590\nf 2098 2099 591\nf 1817 1818 1819 642\nf 1745 1746 641\nf 1737 1738 1739 654\nf 1733 1734 653\nf 1725 1726 1727 580\nf 1717 1718 655\nf 1718 1716 1724 1734\nf 1810 1706 1746 1820\nf 1704 1718 1734 1736\nf 1703 1704 656\nf 1724 1725 580\nf 1731 1732 1733 653\nf 1736 1737 654\nf 1743 1744 1745 641\nf 1809 1810 644\nf 1819 1820 642\nf 2099 2100 591\nf 2129 2130 589\nf 2153 2154 579\nf 1730 1729 1723 1728\nf 1704 1703 1719 1718\nf 1810 1809 1707 1706\nf 2153 2152 1725 1724\nf 1820 1819 2100 2099\nf 1816 1815 1745 1744\nf 1738 1737 1733 1732\nf 1742 1741 1735 1740\nf 1706 1705 1699 1704\nf 2150 2151 2152 579\nf 2110 2111 590\nf 2096 2097 2098 591\nf 1815 1816 1817 642\nf 1746 1741 641\nf 1739 1740 1735 654\nf 1734 1729 653\nf 1727 1728 1723 580\nf 1718 1719 655\nf 1820 2099 2129 1810\nf 2153 1724 1716 2171\nf 1706 1704 1736 1746\nf 1704 1699 656\nf 1723 1724 580\nf 1729 1730 1731 653\nf 1735 1736 654\nf 1741 1742 1743 641\nf 1810 1811 644\nf 1820 1815 642\nf 2100 2101 2096 591\nf 2128 2129 589\nf 2154 2155 2150 579\nf 1741 1746 1736 1735\nf 1815 1820 1746 1745\nf 2152 2151 1726 1725\nf 1819 1818 2101 2100\ns 271\nf 1683 1682 1710 1709\nf 1701 1700 1680 1679\nf 1703 1702 1720 1719\nf 1705 1710 1700 1699\nf 1813 1814 1809 644\nf 1711 1712 1713 578\nf 1701 1702 1703 656\nf 2131 2109 2119 2121\nf 1812 2127 2125 1806\nf 1699 1700 1701 656\nf 1713 1714 1715 578\nf 1811 1812 1813 644\nf 1702 1701 1679 1678\nf 1814 1813 1805 1804\nf 2127 2126 2120 2125\nf 1812 1811 2128 2127\nf 2131 2130 2110 2109\nf 1684 1683 1709 1708\nf 1696 1695 1721 1720\nf 2126 2127 2128 589\nf 1721 1722 1717 655\nf 1709 1710 1705 643\nf 1680 1700 1710 1682\nf 1814 1804 1684 1708\nf 1702 1678 1696 1720\nf 1707 1708 1709 643\nf 1719 1720 1721 655\nf 2130 2131 2126 589\nf 1717 1722 1712 1711\nf 1809 1814 1708 1707\nf 1813 1812 1806 1805\nf 2126 2131 2121 2120\ns 298\nf 2044 2049 2039 2038\nf 2044 2045 2046 597\nf 2038 2039 610\nf 2042 2043 2038 610\nf 2049 2044 597\nf 2045 2044 2038 2043\nf 2046 2047 2048 597\nf 2039 2040 610\nf 2040 2041 2042 610\nf 2048 2049 597\ns 299\nf 2034 2033 2049 2048\nf 2033 2034 598\nf 1841 1842 635\nf 1839 1840 1841 635\nf 2032 2033 598\nf 1844 1843 2032 2037\nf 2035 2034 2048 2047\nf 2031 2030 2022 2021\nf 2034 2035 2036 598\nf 1842 1843 635\nf 2031 2021 2049 2033\nf 1843 1844 1839 635\nf 2036 2037 2032 598\ns 303\nf 2016 2015 2007 2006\nf 2020 2025 2015 2014\nf 2024 2025 2020 599\nf 2029 1999 2011 2023\nf 2016 2017 2018 612\nf 2026 2027 2028 600\nf 2011 2010 2024 2023\nf 2029 2028 2000 1999\nf 2022 2023 2024 599\nf 2007 2015 2025 2009\nf 2014 2015 2016 612\nf 2028 2029 2030 600\nf 2030 2029 2023 2022\nf 2010 2009 2025 2024\ns 300\nf 2041 2040 1965 1964\ns 315\nf 2019 2018 1969 1968\nf 1896 1895 1962 1961\nf 1967 1968 611\nf 1961 1962 1963 609\nf 1894 1895 1896 624\nf 2021 2019 2039 2049\nf 1897 1966 1968 1915\nf 1898 1899 1894 624\nf 1966 1961 609\nf 1903 1902 1898 1897\nf 1897 1896 1961 1966\nf 1968 1969 611\nf 1963 1964 1965 609\nf 1896 1897 624\nf 2019 1968 1966 2039\nf 1903 1897 1915 1933\nf 1897 1898 624\nf 1965 1966 609\nf 1902 1901 1899 1898\nf 1916 1915 1968 1967\nf 2040 2039 1966 1965\ns 306\nf 1969 1970 1971 611\nf 1971 1972 1967 611\nf 2017 2016 2006 2005\nf 1976 1975 1971 1970\nf 2018 2017 1970 1969\nf 2017 2005 1976 1970\nf 1975 1974 1972 1971\ns 334\nf 1930 1935 1925 1924\nf 1934 1935 1930 621\nf 1851 1852 1853 634\nf 1935 1913 1923 1925\nf 1858 1857 1851 1856\nf 1935 1934 1914 1913\nf 1856 1855 1932 1931\nf 1931 1930 1924 1929\nf 1930 1931 1932 621\nf 1856 1931 1929 1858\nf 1855 1856 1851 634\nf 1857 1862 1852 1851\ns 320\nf 1912 1913 1914 622\nf 1916 1917 1912 622\nf 1917 1916 1967 1972\nf 1919 1918 1912 1917\nf 1919 1917 1972 1974\nf 1918 1923 1913 1912\ns 304\nf 1871 1870 2027 2026\nf 1870 1868 2001 2027\nf 1870 1869 1863 1868\nf 1869 1874 1864 1863\nf 2028 2027 2001 2000\ns 301\nf 1843 1842 2033 2032\nf 1872 2031 2033 1842\ns 339\nf 1855 1854 1933 1932\nf 1841 1840 1838 1837\nf 1915 1916 622\nf 1835 1836 636\nf 1836 1903 1933 1854\nf 1836 1837 636\nf 1933 1934 621\nf 1836 1835 1904 1903\nf 1842 1841 1837 1836\nf 1914 1915 622\nf 1833 1834 1835 636\nf 1842 1836 1854 1872\nf 1837 1838 1833 636\nf 1932 1933 621\nf 1934 1933 1915 1914\ns 349\nf 1869 1870 1871 633\nf 1874 1873 1853 1852\nf 1874 1852 1862 1864\nf 1873 1874 1869 633\ns 365\nf 1705 1706 643\nf 1706 1707 643\ns 342\nf 1835 1834 1905 1904\nf 1902 1903 623\nf 1903 1904 623\nf 1900 1901 1902 623\nf 1904 1905 1900 623\ns 354\nf 1873 1872 1854 1853\nf 1854 1855 634\nf 1853 1854 634\ns 305\nf 1871 1872 633\nf 1872 1871 2026 2031\nf 1872 1873 633\ns 302\nf 2031 2026 600\nf 2019 2014 612\nf 2020 2021 599\nf 2021 2020 2014 2019\nf 2030 2031 600\nf 2018 2019 612\nf 2021 2022 599\ns 220\nf 2349 2354 2344 2343\nf 2343 2344 2345 540\nf 2345 2346 2347 540\ns 219\nf 2350 2351 527\nf 2349 2350 527\ns 122\nf 2757 2758 2759 462\nf 2433 2432 2436 2435\nf 2763 2768 2758 2757\nf 2761 2762 2757 462\nf 2764 2763 2757 2762\ns 195\nf 2529 2530 2531 507\nf 2533 2534 2529 507\nf 2466 2465 2534 2533\nf 2531 2532 507\nf 2532 2533 507\ns 208\nf 2485 2486 518\nf 2504 2503 2485 2484\nf 2484 2485 518\ns 157\nf 2503 2504 517\nf 2577 2582 2503 2502\nf 2502 2503 517\ns 170\nf 2527 2528 2523 508\nf 2523 2524 2525 508\nf 2531 2530 2528 2527\nf 2642 2647 2526 2525\nf 2526 2527 508\nf 2525 2526 508\ns 128\nf 2745 2746 2747 463\nf 2739 2740 2741 464\nf 2743 2744 2739 464\nf 2749 2750 2745 463\nf 2705 2704 2750 2749\nf 2747 2746 2744 2743\nf 2747 2748 463\nf 2741 2742 464\nf 2742 2743 464\nf 2748 2749 463\ng emounts\nusemtl dkdkgrey\ns 500\nf 970 969 791 1030\nf 835 834 872 799\nf 1075 1076 1077 802\nf 970 965 811\nf 854 871 872 834\nf 1013 972 970 1030\nf 1030 1088 870 1013\nf 969 970 811\nf 1087 1088 794\nf 973 972 1013 792\nf 1089 1088 1030 791\nf 792 1013 870 869\nf 1077 1076 1088 1087\nf 961 960 972 971\nf 971 972 814\nf 952 947 822\nf 872 871 870 1088 1076\nf 952 970 972 960\nf 951 952 822\nf 972 973 814\nf 1088 1089 794\nf 952 951 965 970\nf 1076 1075 799 872\ns 253\nf 1511 1516 1510 690\nf 691 1502 1494 1493\nf 1483 1488 1482 694\nf 1491 1492 1493 692\nf 1483 1484 1485 693\nf 1510 1516 1522 1479\nf 1485 1486 1487 693\nf 1493 1494 1489 692\nf 1484 1483 694 1481\nf 1501 691 1493 1492\nf 1512 1511 690 1509\nf 1480 687 1521 1520\nf 1509 690 691 1501\nf 1490 1489 1487 1486\nf 1481 694 687 1480\nf 1489 1490 1491 692\nf 1479 1482 1502 1510\nf 1482 1488 1494 1502\nf 1487 1488 1483 693\nf 694 1482 1479 687\nf 1489 1494 1488 1487\nf 690 1510 1502 691\nf 687 1479 1522 1521\ns 166\nf 1517 1522 1516 1515\nf 1517 1518 1519 688\nf 1511 1512 1513 689\nf 1519 1520 1521 688\nf 1518 1517 1515 1514\nf 1515 1516 1511 689\nf 1513 1514 1515 689\nf 1521 1522 1517 688\ns 447\nf 1376 1377 737\nf 1392 1394 1396 1398 1400 1376 1335 1402 1404 1406 1408 1410 1299 1362 1412 1389\nf 1375 1376 737\nf 741 1394 1392 742\nf 739 1398 1396 740\nf 1377 1376 1400 738\nf 734 1404 1402 735\nf 732 1408 1406 733\nf 1300 1299 1410 731\nf 727 1389 1412 728\nf 728 1412 1362 1361\nf 731 1410 1408 732\nf 733 1406 1404 734\nf 735 1402 1335 1334\nf 738 1400 1398 739\nf 740 1396 1394 741\nf 742 1392 1389 727\nf 1362 1357 729\nf 1361 1362 729\ns 509\nf 996 997 810\nf 901 902 796\nf 1031 996 994 1048\nf 942 952 960 958\nf 902 903 796\nf 995 996 810\nf 903 902 1048 797\nf 943 942 996 995\nf 993 994 807\nf 900 901 796\nf 1074 1031 1048 902\nf 958 994 996 942\nf 994 989 807\nf 994 993 797 1048\ns 425\nf 712 1450 1448 713\nf 714 1446 1444 715\nf 716 1442 1327 1326\nf 720 1431 1429 721\nf 722 1427 1425 723\nf 724 1423 1419 725\nf 1409 731 732 1407\nf 1405 733 734 1403\nf 1401 735 1334 1333\nf 1399 1434 1433 1384 1378\nf 1409 1407 1448 1450\nf 1407 1405 1446 1448\nf 1300 1301 1302 730\nf 1379 1378 1384 1383\nf 1422 724 725 1421\nf 1426 722 723 1424\nf 1430 720 721 1428\nf 1441 716 1326 1325\nf 1445 714 715 1443\nf 1449 712 713 1447\nf 1309 1308 712 1449\nf 1447 713 714 1445\nf 1443 715 716 1441\nf 1432 719 720 1430\nf 1428 721 722 1426\nf 1424 723 724 1422\nf 1302 1301 1307 1306\nf 1432 1433 719\nf 1403 1401 1442 1444\nf 1301 1409 1450 1307\nf 1405 1403 1444 1446\nf 1433 1434 719\nf 1403 734 735 1401\nf 1407 732 733 1405\nf 1301 1300 731 1409\nf 723 1425 1423 724\nf 721 1429 1427 722\nf 719 1434 1431 720\nf 715 1444 1442 716\nf 713 1448 1446 714\nf 1308 1307 1450 712\ns 426\nf 1390 727 728 1411\nf 1411 728 1361 1360\nf 1399 738 739 1397\nf 1395 740 741 1393\nf 1391 742 727 1390\nf 1385 1386 1387 718\nf 1393 1391 1425 1427\nf 1390 1411 1419 1423\nf 1399 1397 1431 1434\nf 1391 1390 1423 1425\nf 1384 1385 718\nf 1419 1420 725\nf 1381 1382 1383 718\nf 1395 1393 1427 1429\nf 1420 1419 1411 1360 1354\nf 1397 1395 1429 1431\nf 1383 1384 718\nf 1420 1421 725\nf 1393 741 742 1391\nf 1397 739 740 1395\nf 1378 1377 738 1399\nf 1360 1359 1355 1354\ns 620\nf 1274 1275 1276 749\nf 1280 1281 1282 750\nf 1347 1348 1343 748\nf 1276 1275 1281 1280\nf 1339 1338 1348 1347\nf 1343 1348 1275 1274\nf 1282 1281 1338 1337\nf 1337 1338 1339 747\nf 1281 1275 1348 1338\ns 437\nf 1352 1351 711 1309\nf 1340 1339 1347 1346\nf 1339 1340 1341 747\nf 1306 1307 1308 711\nf 1401 1333 1327 1442\nf 1325 1326 717\nf 1359 1360 1361 729\nf 1325 717 1387 1386\nf 1341 1340 1358 1357\nf 1332 1333 1334 736\nf 1308 1309 711\nf 1340 1346 1356 1358\nf 1326 1327 1328 717\nf 1357 1358 1359 729\nf 1333 1332 1328 1327\ns 615\nf 1373 1374 1369 745\nf 1368 1374 1255 1249\nf 1367 1368 1363 746\nf 1369 1374 1368 1367\nf 1250 1249 1255 1254\nf 1256 1255 1374 1373\nf 1363 1368 1249 1248\nf 1248 1249 1250 743\nf 1254 1255 1256 744\ns 463\nf 1318 1317 1315 1314\nf 1317 1318 1319 752\nf 1184 1185 1186 751\nf 1318 1314 1329 1331\nf 1315 1316 1311 753\nf 1328 1329 1323 717\nf 1311 1316 1179 1178\nf 1186 1185 1322 1321\nf 1332 1331 1329 1328\nf 1319 1318 1331 1330\nf 1317 1322 1316 1315\nf 1180 1179 1185 1184\nf 1321 1322 1317 752\nf 1178 1179 1180 754\nf 1179 1316 1322 1185\nf 1313 1314 1315 753\nf 1330 1331 1332 736\nf 1314 1313 1323 1329\ns 440\nf 1372 1371 1381 1388\nf 1312 1311 1178 1177\nf 1158 1157 763 1168\nf 1323 1324 717\nf 1177 1176 1168 1242 1258\nf 1257 1372 1388 1324\nf 1157 1158 1159 774\nf 1256 1257 744\nf 1311 1312 1313 753\nf 1387 1388 1381 718\nf 1163 1176 1175\nf 1313 1312 1324 1323\nf 1163 1162 1176\nf 1371 1372 1373 745\nf 1258 1252 744\nf 1161 1162 1163 773\nf 1158 1168 1176 1162\nf 1177 1258 1257 1324 1312\nf 1257 1258 744\nf 1162 1161 1159 1158\nf 1168 763 1243 1242\nf 1257 1256 1373 1372\nf 717 1324 1388 1387\ns 442\nf 1370 1369 1367 1366\nf 1369 1370 1371 745\nf 1377 1378 1379 737\nf 1371 1370 1382 1381\nf 1370 1366 1380 1382\nf 1379 1380 1375 737\nf 1380 1379 1383 1382\ns 450\nf 1286 1285 1220 1219\nf 1200 1199 759 1210\nf 1363 1364 1365 746\nf 1334 1335 736\nf 1297 1298 730\nf 1203 1204 1205 769\nf 1189 1188 1187 1246 1234\nf 1247 1246 1187 1320 1336\nf 1299 1298 1283 1342 1362\nf 1200 1210 1218 1204\nf 1335 1336 736\nf 1205 1218 1217\nf 1287 1286 1298 1297\nf 1365 1364 1376 1375\nf 1235 1234 1246 1245\nf 1205 1204 1218\nf 1298 1299 730\nf 1219 1218 1210 1268 1284\nf 1247 1336 1335 1376 1364\nf 1219 1284 1283 1298 1286\nf 1199 1200 1201 770\nf 1285 1286 1287 757\nf 1299 1300 730\nf 1336 1330 736\nf 1204 1203 1201 1200\nf 1210 759 1269 1268\nf 1364 1363 1248 1247\ns 438\nf 1294 1293 1304 1310\nf 1343 1344 1345 748\nf 1293 1294 1295 756\nf 1345 1344 1350 1349\nf 1351 1350 1310 711\nf 1344 1273 1310 1350\nf 1310 1304 711\nf 1349 1350 1351 726\nf 1344 1343 1274 1273\ns 467\nf 1303 1302 1306 1305\nf 1292 1291 1289 1288\nf 1289 1290 1285 757\nf 1221 1290 1296 1227\nf 1226 1227 1228 755\nf 1291 1292 1293 756\nf 1304 1305 1306 711\nf 1285 1290 1221 1220\nf 1228 1227 1296 1295\nf 1293 1292 1305 1304\nf 1291 1296 1290 1289\nf 1222 1221 1227 1226\nf 1295 1296 1291 756\nf 1287 1288 1289 757\nf 1292 1288 1303 1305\nf 1220 1221 1222 758\nf 1302 1303 1297 730\nf 1288 1287 1297 1303\ns 477\nf 1251 1250 1254 1253\nf 1240 1239 1237 1236\nf 1156 1155 1149 1154\nf 1239 1240 1241 764\nf 1155 1156 1157 774\nf 1190 1238 1244 1167\nf 1153 1154 1149 771\nf 1243 1244 1239 764\nf 1157 1156 1167 763\nf 1239 1244 1238 1237\nf 1241 1240 1253 1252\nf 763 1167 1244 1243\nf 1233 1238 1190 766\nf 1252 1253 1254 744\nf 1237 1238 1233 765\nf 1240 1236 1251 1253\nf 1167 1156 1154 1190\nf 1235 1236 1237 765\nf 1250 1251 1245 743\nf 1154 1153 766 1190\nf 1236 1235 1245 1251\ns 460\nf 1272 1273 749\nf 1228 1229 755\nf 1231 1230 1229 1272 1260\nf 1271 1272 749\nf 1261 1260 1272 1271\nf 1273 1274 749\nf 1229 1230 755\nf 1273 1272 1229 1294 1310\nf 1230 1224 755\nf 1229 1228 1295 1294\ns 471\nf 1262 1261 1271 1277\nf 1196 1195 762 1232\nf 1278 1279 1280 750\nf 1263 1264 1259 761\nf 1209 1198 1196 1232\nf 1232 1264 1270 1209\nf 1261 1262 1263 761\nf 1276 1277 1271 749\nf 1259 1264 1232 762\nf 759 1209 1270 1269\nf 1267 1266 1279 1278\nf 1265 1270 1264 1263\nf 1199 1198 1209 759\nf 1265 1266 1267 760\nf 1197 1198 1199 770\nf 1266 1262 1277 1279\nf 1195 1196 1191 767\nf 1269 1270 1265 760\nf 1198 1197 1191 1196\nf 1266 1265 1263 1262\nf 1277 1276 1280 1279\ns 604\nf 1202 1208 1216 1192\nf 1201 1202 1197 770\nf 1197 1202 1192 1191\nf 1211 1216 1208 1207\nf 1193 1192 1216 1215\nf 1203 1208 1202 1201\nf 1215 1216 1211 768\nf 1191 1192 1193 767\nf 1207 1208 1203 769\ns 595\nf 1159 1160 1155 774\nf 1160 1166 1174 1150\nf 1155 1160 1150 1149\nf 1169 1174 1166 1165\nf 1151 1150 1174 1173\nf 1161 1166 1160 1159\nf 1165 1166 1161 773\nf 1149 1150 1151 771\nf 1173 1174 1169 772\ns 466\nf 1230 1214 1213\nf 1259 1260 1261 761\nf 1214 1230 1231 1194\nf 1195 1194 1231 762\nf 1213 1214 1215 768\nf 1213 1224 1230\nf 1260 1259 762 1231\ns 608\nf 1206 1205 1217 1223\nf 1224 1225 1226 755\nf 1205 1206 1207 769\nf 1222 1223 1217 758\nf 1213 1212 1225 1224\nf 1211 1212 1213 768\nf 1212 1206 1223 1225\nf 1212 1211 1207 1206\nf 1223 1222 1226 1225\ns 462\nf 1188 1172 1171\nf 1172 1188 1189 1152\nf 1233 1234 1235 765\nf 1153 1152 1189 766\nf 1171 1172 1173 772\nf 1171 1182 1188\nf 1234 1233 766 1189\ns 599\nf 1164 1163 1175 1181\nf 1180 1181 1175 754\nf 1163 1164 1165 773\nf 1182 1183 1184 751\nf 1171 1170 1183 1182\nf 1170 1164 1181 1183\nf 1169 1170 1171 772\nf 1170 1169 1165 1164\nf 1181 1180 1184 1183\ns 565\nf 1097 1098 1099 787\nf 859 860 861 790\nf 860 859 1099 1098\ns 497\nf 1014 792 869 868\nf 980 979 975 974\nf 1015 1016 789\nf 1017 1016 1014 868 862\nf 861 862 790\nf 1016 1017 789\nf 981 980 1016 1015\nf 867 868 869 793\nf 974 1014 1016 980\nf 862 863 790\nf 1017 1018 789\nf 974 973 792 1014\nf 868 867 863 862\ns 514\nf 1085 1086 1081 801\nf 835 836 831 827\nf 873 1080 1086 849\nf 838 837 831 836\nf 1075 1080 873 799\nf 800 849 1086 1085\nf 836 835 799 873\nf 837 838 839 830\nf 849 838 836 873\nf 1081 1082 1083 801\nf 839 838 849 800\ns 495\nf 1092 1091 1095 1094\nf 1095 1096 787\nf 1028 1022 788\nf 1029 1028 1027 1096 1090\nf 1027 1028 788\nf 1093 1094 1095 787\nf 1083 1082 1094 1093\nf 1091 1090 1096 1095\nf 1096 1097 787\nf 1089 1090 1091 794\nf 1082 1078 1092 1094\nf 1026 1027 788\nf 1091 1092 1087 794\nf 1082 1081 1079 1078\ns 520\nf 880 881 882 826\nf 892 881 879 916\nf 881 880 874 879\nf 1051 1050 1060 1059\nf 806 892 1050 1049\nf 878 879 874 823\nf 892 916 1060 1050\nf 882 881 892 806\ns 492\nf 1045 1046 786\nf 903 904 905 796\nf 1047 1046 1045 910 904\nf 1044 1045 786\nf 993 992 1047 797\nf 905 904 910 909\nf 1046 1040 786\nf 909 910 785\nf 1010 1046 1047 992\nf 910 911 785\nf 904 903 797 1047\ns 490\nf 1032 798 1073 1072\nf 998 997 798 1032\nf 1069 1070 1071 795\nf 1049 1050 1051 803\nf 1035 1034 1032 1072 1066\nf 998 1032 1034 1004\nf 1035 1036 783\nf 1065 1066 784\nf 1071 1072 1073 795\nf 1053 1052 1070 1069\nf 1071 1070 1068 1067\nf 1005 1004 1034 1033\nf 1067 1068 1061 784\nf 1051 1052 1053 803\nf 1033 1034 783\nf 1052 1058 1068 1070\nf 1034 1035 783\nf 1066 1067 784\nf 1004 1003 999 998\nf 1052 1051 1059 1058\nf 1072 1071 1067 1066\ns 558\nf 851 856 848 847\nf 837 842 832 831\nf 847 848 843 829\nf 831 832 833 827\nf 841 842 837 830\nf 842 848 856 832\nf 855 856 851 828\nf 843 848 842 841\nf 833 832 856 855\ns 498\nf 1084 1083 1093 1100\nf 845 844 858 857\nf 843 844 845 829\nf 850 1084 1100 858\nf 857 858 790\nf 1099 1100 1093 787\nf 840 839 800 850\nf 859 858 1100 1099\nf 844 843 841 840\nf 1083 1084 1085 801\nf 840 850 858 844\nf 839 840 841 830\nf 858 859 790\nf 850 800 1085 1084\ns 493\nf 914 907 785\nf 897 914 915 877\nf 913 914 785\nf 1061 1062 1063 784\nf 878 877 915 805\nf 1063 1062 914 913\nf 1057 1056 1062 1061\nf 897 896 907 914\nf 1055 1056 1057 804\nf 896 897 898 824\nf 1056 915 914 1062\nf 1056 1055 805 915\ns 568\nf 894 899 891 890\nf 880 885 875 874\nf 884 885 880 826\nf 885 891 899 875\nf 890 891 886 825\nf 874 875 876 823\nf 898 899 894 824\nf 886 891 885 884\nf 876 875 899 898\ns 508\nf 1054 1053 1069 1074\nf 888 887 901 900\nf 1053 1054 1049 803\nf 902 901 893 1054 1074\nf 886 887 888 825\nf 887 886 884 883\nf 997 996 1031 798\nf 798 1031 1074 1073\nf 883 882 806 893\nf 1074 1069 795\nf 882 883 884 826\nf 883 893 901 887\nf 1073 1074 795\nf 893 806 1049 1054\ns 528\nf 1006 1005 1033 1039\nf 1008 1009 808\nf 918 928 936 934\nf 934 1006 1008 918\nf 1007 1008 808\nf 919 918 1008 1007\nf 1042 1041 1039 1038\nf 1009 1008 1041 1040\nf 1040 1041 1042 786\nf 1005 1006 809\nf 1008 1006 1039 1041\nf 1006 1001 809\nf 1038 1039 1033 783\ns 496\nf 986 985 1022 1028\nf 986 1028 1029 968\nf 969 968 1029 791\nf 985 986 987 812\nf 987 988 983 812\nf 1090 1089 791 1029\ns 536\nf 928 927 977 982\nf 984 985 812\nf 927 928 820\nf 928 982 984 936\nf 981 982 813\nf 1020 1021 1015 789\nf 985 984 1023 1022\nf 1024 1023 1021 1020\nf 937 936 984 983\nf 983 984 812\nf 928 923 820\nf 984 982 1021 1023\nf 982 977 813\nf 1022 1023 1024 788\nf 982 981 1015 1021\ns 512\nf 1003 1004 1005 809\nf 929 930 931 816\nf 931 932 933 816\nf 1001 1002 1003 809\nf 933 932 1002 1001\nf 1003 1002 1000 999\nf 935 940 930 929\nf 997 998 999 810\nf 932 944 1000 1002\nf 999 1000 995 810\nf 932 931 945 944\ns 511\nf 956 955 921 920\nf 956 920 1012 990\nf 957 956 990 989\nf 991 990 1012 1011\nf 989 990 991 807\nf 991 992 993 807\nf 992 991 1011 1010\ns 499\nf 926 925 963 962\nf 975 976 971 814\nf 926 962 976 978\nf 973 974 975 814\nf 927 926 978 977\nf 979 978 976 975\nf 977 978 979 813\nf 925 926 927 820\nf 923 924 925 820\nf 979 980 981 813\ns 501\nf 968 967 987 986\nf 967 968 969 811\nf 965 966 967 811\nf 967 966 988 987\nf 951 950 966 965\nf 950 938 988 966\nf 950 949 939 938\ns 544\nf 940 948 946 930\nf 931 930 946 945\nf 949 950 951 822\nf 947 948 949 822\ns 529\nf 924 923 917 922\nf 964 924 922 954\nf 925 924 964 963\nf 955 954 922 921\nf 921 922 917 815\nf 919 920 921 815\nf 920 919 1007 1012\ns 572\nf 896 895 908 907\nf 894 895 896 824\nf 895 889 906 908\nf 895 894 890 889\nf 889 888 900 906\nf 905 906 900 796\nf 888 889 890 825\nf 907 908 909 785\nf 906 905 909 908\ns 562\nf 865 866 867 793\nf 845 846 847 829\nf 863 864 857 790\nf 846 845 857 864\nf 867 866 864 863\nf 852 851 847 846\nf 851 852 853 828\nf 852 846 864 866\nf 853 852 866 865\ns 515\nf 833 834 835 827\nf 834 833 855 854\ns 504\nf 854 853 865 871\nf 853 854 855 828\ns 503\nf 869 870 793\nf 871 865 793\nf 870 871 793\ns 523\nf 876 877 878 823\nf 877 876 898 897\ns 576\nf 1064 1063 913 912\nf 911 912 913 785\nf 1063 1064 1065 784\ns 542\nf 936 937 819\nf 918 919 815\nf 923 928 918 917\nf 935 936 819\nf 917 918 815\ns 531\nf 936 935 929 934\nf 933 934 816\nf 934 929 816\nf 934 933 1001 1006\ns 537\nf 938 937 983 988\nf 939 940 935 819\nf 949 948 940 939\nf 937 938 939 819\ns 546\nf 959 960 821\nf 941 942 817\nf 947 952 942 941\nf 960 961 821\nf 942 943 817\ns 533\nf 948 947 941 946\nf 945 946 941 817\nf 943 944 945 817\nf 944 943 995 1000\ns 543\nf 953 954 955 818\nf 959 964 954 953\nf 955 956 957 818\ns 527\nf 958 957 989 994\nf 957 958 818\nf 958 953 818\nf 960 959 953 958\ns 541\nf 962 961 971 976\nf 961 962 963 821\nf 963 964 959 821\ns 494\nf 1010 1009 1040 1046\nf 1011 1012 1007 808\nf 1009 1010 1011 808\ns 583\nf 1025 1024 1020 1019\nf 1024 1025 1026 788\nf 1018 1019 1020 789\ns 586\nf 1043 1042 1038 1037\nf 1036 1037 1038 783\nf 1042 1043 1044 786\ns 491\nf 1058 1057 1061 1068\nf 1057 1058 1059 804\nf 1059 1060 1055 804\ns 506\nf 1077 1078 1079 802\nf 1081 1086 1080 1079\nf 1079 1080 1075 802\nf 1078 1077 1087 1092\ns 481\nf 1152 1151 1173 1172\nf 1151 1152 1153 771\ns 465\nf 1177 1178 754\nf 1176 1177 754\nf 1175 1176 754\ns 458\nf 1187 1186 1321 1320\nf 1245 1246 743\nf 1186 1187 751\nf 1246 1247 743\nf 1187 1188 751\nf 1188 1182 751\nf 1247 1248 743\ns 475\nf 1193 1194 1195 767\nf 1194 1193 1215 1214\ns 469\nf 1217 1218 758\nf 1219 1220 758\nf 1218 1219 758\ns 459\nf 1242 1241 1252 1258\nf 1241 1242 1243 764\ns 461\nf 1267 1268 1269 760\nf 1268 1267 1278 1284\ns 449\nf 1342 1341 1357 1362\nf 1283 1284 750\nf 1284 1278 750\nf 1341 1342 1337 747\nf 1282 1283 750\nf 1283 1282 1337 1342\ns 453\nf 1319 1320 1321 752\nf 1320 1319 1330 1336\ns 445\nf 1346 1345 1349 1356\nf 1345 1346 1347 748\ns 436\nf 1354 1355 726\nf 1353 1354 726\nf 1359 1358 1356 1355\nf 1355 1356 1349 726\nf 1351 1352 1353 726\ns 455\nf 1365 1366 1367 746\nf 1366 1365 1375 1380\ns 521\nf 879 878 805 916\nf 1055 1060 916 805\ng intakes\nusemtl silver\ns 713\nf 3118 3117 3124 3125\nf 3112 3111 3119 3120\nf 3108 3107 3115 3116\nf 3104 3103 3111 3112\nf 3100 3099 3107 3108\nf 3096 3095 3103 3104\nf 3092 3091 3099 3100\nf 3088 3087 3095 3096\nf 3084 3083 3091 3092\nf 3080 3079 3087 3088\nf 3076 3075 3083 3084\nf 3114 3121 3071 3073\nf 3122 3065 3070\nf 3126 3066 3064\nf 3076 3077 3060 3061\nf 3080 3081 3056 3057\nf 3051 3052 3060 3059\nf 3055 3048 3056 3063\nf 3042 3043 3035 3027\nf 3036 3037 3029 3028\nf 3008 3009 3028 3029\nf 2962 2961 3021 3020\nf 2965 2964 3018 3017\nf 3013 3012 3004 3005\nf 3009 3008 3000 3001\nf 3003 3002 2994 2995\nf 2997 2996 2988 2989\nf 2993 2992 2984 2985\nf 2987 2986 2978 2979\nf 2981 2980 2972 2973\nf 2977 2976 2968 2969\nf 2970 2969 2962 2963\nf 2954 2955 2869 2868\nf 2943 2942 2949 2950\nf 2937 2936 2944 2945\nf 2933 2932 2940 2941\nf 2929 2928 2936 2937\nf 2925 2924 2932 2933\nf 2921 2920 2928 2929\nf 2917 2916 2924 2925\nf 2913 2912 2920 2921\nf 2909 2908 2916 2917\nf 2905 2904 2912 2913\nf 2901 2900 2908 2909\nf 2947 2946 2898 2897\nf 2950 2949 2895 2894\nf 2907 2900 2889 2882\nf 2904 2905 2884 2885\nf 2880 2881 2889 2888\nf 2875 2876 2884 2883\nf 2873 2872 2867 2866\nf 2864 2865 2857 2856\nf 2859 2860 2852 2851\nf 2834 2835 2854 2855\nf 2839 2832 2857 2850\nf 2789 2788 2846 2845\nf 2787 2794 2793 2841 2849\nf 2832 2839 2831 2824\nf 2836 2835 2827 2828\nf 2824 2831 2823 2816\nf 2828 2827 2819 2820\nf 2816 2823 2815 2808\nf 2820 2819 2811 2812\nf 2808 2815 2807 2800\nf 2812 2811 2803 2804\nf 2800 2807 2799 2792\nf 2804 2803 2795 2796\nf 2798 2797 2790 2791\nf 2795 2794 2787 2788\nf 2801 2800 2792 2793\nf 2805 2804 2796 2797\nf 2809 2808 2800 2801\nf 2813 2812 2804 2805\nf 2817 2816 2808 2809\nf 2821 2820 2812 2813\nf 2825 2824 2816 2817\nf 2829 2828 2820 2821\nf 2833 2832 2824 2825\nf 2837 2836 2828 2829\nf 2799 2798 2791 2848 2840\nf 2791 2790 2844 2843\nf 2788 2787 2847 2846\nf 2837 2838 2851 2852\nf 2833 2834 2855 2856\nf 2861 2862 2854 2853\nf 2865 2858 2850 2857\nf 2872 2873 2879 2887\nf 2876 2877 2885 2884\nf 2905 2906 2883 2884\nf 2901 2902 2887 2888\nf 2952 2892 2890\nf 2948 2891 2896\nf 2940 2947 2897 2899\nf 2902 2901 2909 2910\nf 2906 2905 2913 2914\nf 2910 2909 2917 2918\nf 2914 2913 2921 2922\nf 2918 2917 2925 2926\nf 2922 2921 2929 2930\nf 2926 2925 2933 2934\nf 2930 2929 2937 2938\nf 2934 2933 2941 2942\nf 2938 2937 2945 2946\nf 2944 2943 2950 2951\nf 2969 2968 2961 2962\nf 2978 2977 2969 2970\nf 2986 2985 2977 2978\nf 2994 2993 2985 2986\nf 3002 3001 2993 2994\nf 3010 3009 3001 3002\nf 2961 2968 2967 3015 3023\nf 2963 2962 3020 3019\nf 3012 3013 3024 3025\nf 3009 3010 3027 3028\nf 3035 3036 3028 3027\nf 3046 3047 3053 3061\nf 3050 3051 3059 3058\nf 3079 3080 3057 3058\nf 3075 3076 3061 3062\nf 3126 3125 3067 3066\nf 3123 3122 3070 3069\nf 3122 3115 3114 3073 3065\nf 3077 3076 3084 3085\nf 3081 3080 3088 3089\nf 3085 3084 3092 3093\nf 3089 3088 3096 3097\nf 3093 3092 3100 3101\nf 3097 3096 3104 3105\nf 3101 3100 3108 3109\nf 3105 3104 3112 3113\nf 3109 3108 3116 3117\nf 3113 3112 3120 3121\nf 3119 3118 3125 3126\nf 3117 3116 3123 3124\nf 3111 3110 3118 3119\nf 3107 3106 3114 3115\nf 3103 3102 3110 3111\nf 3099 3098 3106 3107\nf 3095 3094 3102 3103\nf 3091 3090 3098 3099\nf 3087 3086 3094 3095\nf 3083 3082 3090 3091\nf 3079 3078 3086 3087\nf 3075 3074 3082 3083\nf 3121 3120 3072 3071\nf 3124 3123 3069 3068\nf 3074 3075 3062 3063\nf 3077 3078 3059 3060\nf 3053 3054 3062 3061\nf 3048 3049 3057 3056\nf 3044 3045 3060 3052\nf 3032 3033 3025 3024\nf 3011 3012 3025 3026\nf 2961 3023 3021\nf 2965 3017 3022\nf 3012 3011 3003 3004\nf 3004 3003 2995 2996\nf 2996 2995 2987 2988\nf 2988 2987 2979 2980\nf 2980 2979 2971 2972\nf 2971 2970 2963 2964\nf 2958 2959 3045 3044\nf 2942 2941 2948 2949\nf 2936 2935 2943 2944\nf 2932 2939 2947 2940\nf 2928 2927 2935 2936\nf 2924 2931 2939 2932\nf 2920 2919 2927 2928\nf 2916 2923 2931 2924\nf 2912 2911 2919 2920\nf 2908 2915 2923 2916\nf 2904 2903 2911 2912\nf 2900 2907 2915 2908\nf 2946 2945 2952 2890 2898\nf 2951 2950 2894 2893\nf 2900 2901 2888 2889\nf 2903 2904 2885 2886\nf 2879 2880 2888 2887\nf 2874 2875 2883 2882\nf 2868 2869 2861 2853\nf 2863 2864 2856 2855\nf 2858 2859 2851 2850\nf 2835 2836 2853 2854\nf 2838 2839 2850 2851\nf 2790 2789 2845 2844\nf 2793 2792 2842 2841\nf 2839 2838 2830 2831\nf 2835 2834 2826 2827\nf 2831 2830 2822 2823\nf 2827 2826 2818 2819\nf 2823 2822 2814 2815\nf 2819 2818 2810 2811\nf 2815 2814 2806 2807\nf 2811 2810 2802 2803\nf 2807 2806 2798 2799\nf 2803 2802 2794 2795\nf 2797 2796 2789 2790\nf 2796 2795 2788 2789\nf 2802 2801 2793 2794\nf 2806 2805 2797 2798\nf 2810 2809 2801 2802\nf 2814 2813 2805 2806\nf 2818 2817 2809 2810\nf 2822 2821 2813 2814\nf 2826 2825 2817 2818\nf 2830 2829 2821 2822\nf 2834 2833 2825 2826\nf 2838 2837 2829 2830\nf 2792 2799 2840 2842\nf 2791 2843 2848\nf 2787 2849 2847\nf 2836 2837 2852 2853\nf 2832 2833 2856 2857\nf 2862 2863 2855 2854\nf 2866 2867 2852 2860\nf 2881 2874 2882 2889\nf 2877 2878 2886 2885\nf 2906 2907 2882 2883\nf 2902 2903 2886 2887\nf 2952 2951 2893 2892\nf 2949 2948 2896 2895\nf 2948 2941 2940 2899 2891\nf 2903 2902 2910 2911\nf 2907 2906 2914 2915\nf 2911 2910 2918 2919\nf 2915 2914 2922 2923\nf 2919 2918 2926 2927\nf 2923 2922 2930 2931\nf 2927 2926 2934 2935\nf 2931 2930 2938 2939\nf 2935 2934 2942 2943\nf 2939 2938 2946 2947\nf 2945 2944 2951 2952\nf 2958 3044 2869 2955\nf 2972 2971 2964 2965\nf 2979 2978 2970 2971\nf 2985 2984 2976 2977\nf 2989 2988 2980 2981\nf 2995 2994 2986 2987\nf 3001 3000 2992 2993\nf 3005 3004 2996 2997\nf 3011 3010 3002 3003\nf 2973 2972 2965 3022 3014\nf 2964 2963 3019 3018\nf 3010 3011 3026 3027\nf 3033 3034 3026 3025\nf 3040 3041 3026 3034\nf 3041 3040 3047 3046\nf 3049 3050 3058 3057\nf 3054 3055 3063 3062\nf 3078 3079 3058 3059\nf 3081 3074 3063 3056\nf 3125 3124 3068 3067\nf 3120 3119 3126 3064 3072\nf 3074 3081 3089 3082\nf 3078 3077 3085 3086\nf 3082 3089 3097 3090\nf 3086 3085 3093 3094\nf 3090 3097 3105 3098\nf 3094 3093 3101 3102\nf 3098 3105 3113 3106\nf 3102 3101 3109 3110\nf 3106 3113 3121 3114\nf 3110 3109 3117 3118\nf 3116 3115 3122 3123\ns off\nf 3023 3015 3016 3014 3022\nf 2890 2892 2893 2894 2895\nf 2890 2895 2896 2891\nf 2849 2841 2842 2840 2848\nf 3044 3043 2870 2869\nf 2848 2846 2847 2849\nf 2848 2843 2844 2845 2846\nf 2891 2899 2897 2898 2890\nf 3022 3020 3021 3023\nf 3022 3017 3018 3019 3020\ns 715\nf 2863 2862 2861 2860 2859 2858 2865 2864\nf 2873 2870 2878 2879\nf 2881 2880 2879 2878 2877 2876 2875 2874\nf 2870 2873 2866 2869\nf 2869 2866 2860 2861\ns 716\nf 2960 2959 2958 2957\nf 2871 2872 2887 2886\nf 2867 2868 2853 2852\nf 2953 2954 2868 2871\nf 3041 3042 3027 3026\nf 3042 3041 3046 3045\nf 2957 2958 2955 2956\nf 2872 2871 2868 2867\nf 2954 2953 2956 2955\nf 2959 2960 3042 3045\nf 3045 3046 3061 3060\ns 717\nf 2960 2957 3043 3042\nf 2870 2871 2886 2878\nf 2956 2953 2871 2870\nf 3043 2957 2956 2870\ns 722\nf 3038 3039 3031 3030\nf 3013 3006 3031 3024\nf 3007 3006 2998 2999\nf 2991 2990 2982 2983\nf 2975 2974 2966 2967\nf 2974 2981 2973 2966\nf 2982 2989 2981 2974\nf 2990 2997 2989 2982\nf 2998 3005 2997 2990\nf 3006 3013 3005 2998\nf 3007 3008 3029 3030\nf 3039 3032 3024 3031\nf 3037 3038 3030 3029\nf 2966 2973 3014 3016\nf 3008 3007 2999 3000\nf 3000 2999 2991 2992\nf 2992 2991 2983 2984\nf 2984 2983 2975 2976\nf 2976 2975 2967 2968\nf 2983 2982 2974 2975\nf 2999 2998 2990 2991\nf 2967 2966 3016 3015\nf 3006 3007 3030 3031\ns 724\nf 3047 3044 3052 3053\nf 3043 3040 3034 3035\nf 3055 3054 3053 3052 3051 3050 3049 3048\nf 3040 3043 3044 3047\nf 3037 3036 3035 3034 3033 3032 3039 3038\ns 727\nf 3064 3066 3067 3068 3069\nf 3064 3069 3070 3065\nf 3065 3073 3071 3072 3064\ng exhaust\nusemtl bronze\ns 731\nf 3175 3174 3195 3194\nf 3172 3179 3190 3197\nf 3128 3129 3185 3186\nf 3133 3134 3127 3189 3181\nf 3179 3172 3164 3171\nf 3175 3176 3168 3167\nf 3171 3164 3156 3163\nf 3167 3168 3160 3159\nf 3163 3156 3148 3155\nf 3159 3160 3152 3151\nf 3155 3148 3140 3147\nf 3151 3152 3144 3143\nf 3147 3140 3132 3139\nf 3143 3144 3136 3135\nf 3137 3138 3131 3130\nf 3134 3135 3128 3127\nf 3140 3141 3133 3132\nf 3144 3145 3137 3136\nf 3148 3149 3141 3140\nf 3152 3153 3145 3144\nf 3156 3157 3149 3148\nf 3160 3161 3153 3152\nf 3164 3165 3157 3156\nf 3168 3169 3161 3160\nf 3172 3173 3165 3164\nf 3176 3177 3169 3168\nf 3131 3138 3139 3180 3188\nf 3130 3131 3183 3184\nf 3127 3128 3186 3187\nf 3178 3177 3192 3191\nf 3174 3173 3196 3195\nf 3176 3175 3194 3193\nf 3179 3178 3191 3190\nf 3129 3130 3184 3185\nf 3132 3133 3181 3182\nf 3178 3179 3171 3170\nf 3174 3175 3167 3166\nf 3170 3171 3163 3162\nf 3166 3167 3159 3158\nf 3162 3163 3155 3154\nf 3158 3159 3151 3150\nf 3154 3155 3147 3146\nf 3150 3151 3143 3142\nf 3146 3147 3139 3138\nf 3142 3143 3135 3134\nf 3136 3137 3130 3129\nf 3135 3136 3129 3128\nf 3141 3142 3134 3133\nf 3145 3146 3138 3137\nf 3149 3150 3142 3141\nf 3153 3154 3146 3145\nf 3157 3158 3150 3149\nf 3161 3162 3154 3153\nf 3165 3166 3158 3157\nf 3169 3170 3162 3161\nf 3173 3174 3166 3165\nf 3177 3178 3170 3169\nf 3139 3132 3182 3180\nf 3131 3188 3183\nf 3127 3187 3189\nf 3177 3176 3193 3192\nf 3173 3172 3197 3196\ns off\nf 3372 3373 3371\nf 3367 3368 3371 3373\nf 3362 3359 3351 3353\nf 3352 3353 3351\nf 3350 3348 3347 3346 3345\nf 3350 3345 3344 3349\nf 3217 3225 3224 3226 3218\nf 3209 3210 3216\nf 3207 3208 3216 3210\nf 3364 3365 3363 3204 3202 3203\nf 3199 3200 3194 3196\nf 3195 3196 3194\nf 3188 3180 3182 3181 3189\nf 3197 3190 3196\nf 3198 3199 3196 3190\nf 3280 3287 3286 3364 3203 3281\nf 3208 3205 3214 3216\nf 3215 3216 3214\nf 3358 3351 3357\nf 3359 3360 3357 3351\nf 3366 3367 3373 3375\nf 3374 3375 3373\nf 3370 3371 3377\nf 3368 3369 3377 3371\nf 3361 3362 3353 3355\nf 3354 3355 3353\nf 3211 3212 3210\nf 3206 3207 3210 3212\nf 3363 3285 3284 3283 3282 3204\nf 3200 3201 3192 3194\nf 3193 3194 3192\nf 3189 3184 3183 3188\nf 3189 3187 3186 3185 3184\nf 3191 3192 3190\nf 3201 3198 3190 3192\nf 3205 3206 3212 3214\nf 3213 3214 3212\nf 3218 3220 3219 3217\nf 3218 3223 3222 3221 3220\nf 3349 3341 3343 3342 3350\nf 3356 3357 3355\nf 3360 3361 3355 3357\nf 3369 3366 3375 3377\nf 3376 3377 3375\ns 733\nf 3365 3364 3369 3368\nf 3369 3364 3286 3366\nf 3200 3206 3282 3281\nf 3199 3202 3207 3206 3200\nf 3284 3287 3280 3283\nf 3203 3202 3199 3198\nf 3203 3198 3201 3281\nf 3361 3367 3286 3285\nf 3360 3365 3368 3367 3361\nf 3363 3359 3362 3285\nf 3363 3365 3360 3359\nf 3362 3361 3285\nf 3367 3366 3286\nf 3283 3280 3281 3282\nf 3208 3204 3282 3205\nf 3202 3204 3208 3207\nf 3201 3200 3281\nf 3206 3205 3282\nf 3287 3284 3285 3286\ns 734\nf 3269 3270 3277 3276\nf 3263 3264 3272 3271\nf 3259 3260 3268 3267\nf 3255 3256 3264 3263\nf 3251 3252 3260 3259\nf 3247 3248 3256 3255\nf 3243 3244 3252 3251\nf 3239 3240 3248 3247\nf 3235 3236 3244 3243\nf 3231 3232 3240 3239\nf 3227 3228 3236 3235\nf 3273 3274 3224 3225\nf 3276 3277 3221 3222\nf 3227 3234 3209 3216\nf 3232 3231 3212 3211\nf 3233 3232 3211 3210\nf 3229 3228 3215 3214\nf 3279 3217 3219\nf 3275 3223 3218\nf 3274 3267 3226 3224\nf 3228 3229 3237 3236\nf 3232 3233 3241 3240\nf 3236 3237 3245 3244\nf 3240 3241 3249 3248\nf 3244 3245 3253 3252\nf 3248 3249 3257 3256\nf 3252 3253 3261 3260\nf 3256 3257 3265 3264\nf 3260 3261 3269 3268\nf 3264 3265 3273 3272\nf 3270 3271 3278 3277\nf 3268 3269 3276 3275\nf 3262 3263 3271 3270\nf 3266 3259 3267 3274\nf 3254 3255 3263 3262\nf 3258 3251 3259 3266\nf 3246 3247 3255 3254\nf 3250 3243 3251 3258\nf 3238 3239 3247 3246\nf 3242 3235 3243 3250\nf 3230 3231 3239 3238\nf 3234 3227 3235 3242\nf 3279 3272 3273 3225 3217\nf 3277 3278 3220 3221\nf 3228 3227 3216 3215\nf 3231 3230 3213 3212\nf 3234 3233 3210 3209\nf 3230 3229 3214 3213\nf 3278 3279 3219 3220\nf 3275 3276 3222 3223\nf 3267 3268 3275 3218 3226\nf 3229 3230 3238 3237\nf 3233 3234 3242 3241\nf 3237 3238 3246 3245\nf 3241 3242 3250 3249\nf 3245 3246 3254 3253\nf 3249 3250 3258 3257\nf 3253 3254 3262 3261\nf 3257 3258 3266 3265\nf 3261 3262 3270 3269\nf 3265 3266 3274 3273\nf 3271 3272 3279 3278\ns 739\nf 3334 3333 3358 3357\nf 3338 3337 3354 3353\nf 3288 3289 3347 3348\nf 3291 3292 3344 3345\nf 3292 3299 3300 3341 3349\nf 3337 3338 3330 3329\nf 3333 3334 3326 3325\nf 3329 3330 3322 3321\nf 3325 3326 3318 3317\nf 3321 3322 3314 3313\nf 3317 3318 3310 3309\nf 3313 3314 3306 3305\nf 3309 3310 3302 3301\nf 3305 3306 3298 3297\nf 3301 3302 3294 3293\nf 3295 3296 3289 3288\nf 3298 3299 3292 3291\nf 3304 3305 3297 3296\nf 3308 3301 3293 3300\nf 3312 3313 3305 3304\nf 3316 3309 3301 3308\nf 3320 3321 3313 3312\nf 3324 3317 3309 3316\nf 3328 3329 3321 3320\nf 3332 3325 3317 3324\nf 3336 3337 3329 3328\nf 3340 3333 3325 3332\nf 3294 3295 3288 3350 3342\nf 3289 3290 3346 3347\nf 3340 3339 3352 3351\nf 3337 3336 3355 3354\nf 3335 3334 3357 3356\nf 3339 3338 3353 3352\nf 3288 3348 3350\nf 3292 3349 3344\nf 3300 3293 3343 3341\nf 3338 3339 3331 3330\nf 3334 3335 3327 3326\nf 3330 3331 3323 3322\nf 3326 3327 3319 3318\nf 3322 3323 3315 3314\nf 3318 3319 3311 3310\nf 3314 3315 3307 3306\nf 3310 3311 3303 3302\nf 3306 3307 3299 3298\nf 3302 3303 3295 3294\nf 3296 3297 3290 3289\nf 3297 3298 3291 3290\nf 3303 3304 3296 3295\nf 3307 3308 3300 3299\nf 3311 3312 3304 3303\nf 3315 3316 3308 3307\nf 3319 3320 3312 3311\nf 3323 3324 3316 3315\nf 3327 3328 3320 3319\nf 3331 3332 3324 3323\nf 3335 3336 3328 3327\nf 3339 3340 3332 3331\nf 3293 3294 3342 3343\nf 3290 3291 3345 3346\nf 3333 3340 3351 3358\nf 3336 3335 3356 3355\ns 741\nf 3430 3431 3438 3437\nf 3424 3425 3433 3432\nf 3420 3421 3429 3428\nf 3416 3417 3425 3424\nf 3412 3413 3421 3420\nf 3408 3409 3417 3416\nf 3404 3405 3413 3412\nf 3400 3401 3409 3408\nf 3396 3397 3405 3404\nf 3392 3393 3401 3400\nf 3388 3389 3397 3396\nf 3434 3435 3385 3386\nf 3437 3438 3382 3383\nf 3389 3388 3377 3376\nf 3392 3391 3374 3373\nf 3395 3394 3371 3370\nf 3391 3390 3375 3374\nf 3440 3378 3380\nf 3436 3384 3379\nf 3435 3428 3387 3385\nf 3389 3390 3398 3397\nf 3393 3394 3402 3401\nf 3397 3398 3406 3405\nf 3401 3402 3410 3409\nf 3405 3406 3414 3413\nf 3409 3410 3418 3417\nf 3413 3414 3422 3421\nf 3417 3418 3426 3425\nf 3421 3422 3430 3429\nf 3425 3426 3434 3433\nf 3431 3432 3439 3438\nf 3429 3430 3437 3436\nf 3423 3424 3432 3431\nf 3427 3420 3428 3435\nf 3415 3416 3424 3423\nf 3419 3412 3420 3427\nf 3407 3408 3416 3415\nf 3411 3404 3412 3419\nf 3399 3400 3408 3407\nf 3403 3396 3404 3411\nf 3391 3392 3400 3399\nf 3395 3388 3396 3403\nf 3440 3433 3434 3386 3378\nf 3438 3439 3381 3382\nf 3388 3395 3370 3377\nf 3393 3392 3373 3372\nf 3394 3393 3372 3371\nf 3390 3389 3376 3375\nf 3439 3440 3380 3381\nf 3436 3437 3383 3384\nf 3428 3429 3436 3379 3387\nf 3390 3391 3399 3398\nf 3394 3395 3403 3402\nf 3398 3399 3407 3406\nf 3402 3403 3411 3410\nf 3406 3407 3415 3414\nf 3410 3411 3419 3418\nf 3414 3415 3423 3422\nf 3418 3419 3427 3426\nf 3422 3423 3431 3430\nf 3426 3427 3435 3434\nf 3432 3433 3440 3439\ns 743\nf 3378 3386 3385 3387 3379\nf 3379 3381 3380 3378\nf 3379 3384 3383 3382 3381\ng shaft\nusemtl silver\ns 747\nf 3652 3651 3632 3633\nf 3576 3575 3556 3557\nf 3500 3499 3480 3481\nf 3481 3480 3461 3462\nf 3557 3556 3537 3538\nf 3633 3632 3613 3614\nf 3443 3442 3651 3652\nf 3595 3594 3575 3576\nf 3519 3518 3499 3500\nf 3462 3461 3442 3443\nf 3538 3537 3518 3519\nf 3614 3613 3594 3595\ns 748\nf 3446 3445 3654 3655\nf 3656 3655 3636 3637\nf 3638 3637 3618 3619\nf 3634 3633 3614 3615\nf 3616 3615 3596 3597\nf 3598 3597 3578 3579\nf 3580 3579 3560 3561\nf 3562 3561 3542 3543\nf 3558 3557 3538 3539\nf 3540 3539 3520 3521\nf 3522 3521 3502 3503\nf 3504 3503 3484 3485\nf 3486 3485 3466 3467\nf 3482 3481 3462 3463\nf 3465 3464 3445 3446\nf 3464 3463 3444 3445\nf 3483 3482 3463 3464\nf 3501 3500 3481 3482\nf 3505 3504 3485 3486\nf 3523 3522 3503 3504\nf 3541 3540 3521 3522\nf 3559 3558 3539 3540\nf 3577 3576 3557 3558\nf 3581 3580 3561 3562\nf 3599 3598 3579 3580\nf 3617 3616 3597 3598\nf 3635 3634 3615 3616\nf 3653 3652 3633 3634\nf 3657 3656 3637 3638\nf 3447 3446 3655 3656\nf 3445 3444 3653 3654\nf 3655 3654 3635 3636\nf 3637 3636 3617 3618\nf 3619 3618 3599 3600\nf 3615 3614 3595 3596\nf 3597 3596 3577 3578\nf 3579 3578 3559 3560\nf 3561 3560 3541 3542\nf 3543 3542 3523 3524\nf 3539 3538 3519 3520\nf 3521 3520 3501 3502\nf 3503 3502 3483 3484\nf 3485 3484 3465 3466\nf 3466 3465 3446 3447\nf 3463 3462 3443 3444\nf 3467 3466 3447 3448\nf 3484 3483 3464 3465\nf 3502 3501 3482 3483\nf 3520 3519 3500 3501\nf 3524 3523 3504 3505\nf 3542 3541 3522 3523\nf 3560 3559 3540 3541\nf 3578 3577 3558 3559\nf 3596 3595 3576 3577\nf 3600 3599 3580 3581\nf 3618 3617 3598 3599\nf 3636 3635 3616 3617\nf 3654 3653 3634 3635\nf 3444 3443 3652 3653\nf 3448 3447 3656 3657\ns 749\nf 3658 3657 3638 3639\nf 3582 3581 3562 3563\nf 3506 3505 3486 3487\nf 3487 3486 3467 3468\nf 3563 3562 3543 3544\nf 3639 3638 3619 3620\nf 3449 3448 3657 3658\nf 3601 3600 3581 3582\nf 3525 3524 3505 3506\nf 3468 3467 3448 3449\nf 3544 3543 3524 3525\nf 3620 3619 3600 3601\ns 750\nf 3640 3639 3620 3621\nf 3564 3563 3544 3545\nf 3488 3487 3468 3469\nf 3507 3506 3487 3488\nf 3583 3582 3563 3564\nf 3659 3658 3639 3640\nf 3621 3620 3601 3602\nf 3545 3544 3525 3526\nf 3469 3468 3449 3450\nf 3526 3525 3506 3507\nf 3602 3601 3582 3583\nf 3450 3449 3658 3659\ns 751\nf 3660 3659 3640 3641\nf 3584 3583 3564 3565\nf 3508 3507 3488 3489\nf 3489 3488 3469 3470\nf 3565 3564 3545 3546\nf 3641 3640 3621 3622\nf 3451 3450 3659 3660\nf 3603 3602 3583 3584\nf 3527 3526 3507 3508\nf 3470 3469 3450 3451\nf 3546 3545 3526 3527\nf 3622 3621 3602 3603\ns 752\nf 3454 3453 3662 3663\nf 3664 3663 3644 3645\nf 3646 3645 3626 3627\nf 3642 3641 3622 3623\nf 3624 3623 3604 3605\nf 3606 3605 3586 3587\nf 3588 3587 3568 3569\nf 3570 3569 3550 3551\nf 3566 3565 3546 3547\nf 3548 3547 3528 3529\nf 3530 3529 3510 3511\nf 3512 3511 3492 3493\nf 3494 3493 3474 3475\nf 3490 3489 3470 3471\nf 3473 3472 3453 3454\nf 3472 3471 3452 3453\nf 3491 3490 3471 3472\nf 3509 3508 3489 3490\nf 3513 3512 3493 3494\nf 3531 3530 3511 3512\nf 3549 3548 3529 3530\nf 3567 3566 3547 3548\nf 3585 3584 3565 3566\nf 3589 3588 3569 3570\nf 3607 3606 3587 3588\nf 3625 3624 3605 3606\nf 3643 3642 3623 3624\nf 3661 3660 3641 3642\nf 3665 3664 3645 3646\nf 3455 3454 3663 3664\nf 3453 3452 3661 3662\nf 3663 3662 3643 3644\nf 3645 3644 3625 3626\nf 3627 3626 3607 3608\nf 3623 3622 3603 3604\nf 3605 3604 3585 3586\nf 3587 3586 3567 3568\nf 3569 3568 3549 3550\nf 3551 3550 3531 3532\nf 3547 3546 3527 3528\nf 3529 3528 3509 3510\nf 3511 3510 3491 3492\nf 3493 3492 3473 3474\nf 3474 3473 3454 3455\nf 3471 3470 3451 3452\nf 3475 3474 3455 3456\nf 3492 3491 3472 3473\nf 3510 3509 3490 3491\nf 3528 3527 3508 3509\nf 3532 3531 3512 3513\nf 3550 3549 3530 3531\nf 3568 3567 3548 3549\nf 3586 3585 3566 3567\nf 3604 3603 3584 3585\nf 3608 3607 3588 3589\nf 3626 3625 3606 3607\nf 3644 3643 3624 3625\nf 3662 3661 3642 3643\nf 3452 3451 3660 3661\nf 3456 3455 3664 3665\ns 746\nf 3460 3459 3668 3669\nf 3669 3650 3441\nf 3666 3665 3646 3647\nf 3648 3647 3628 3629\nf 3630 3629 3610 3611\nf 3612 3611 3592 3593\nf 3593 3574 3441\nf 3590 3589 3570 3571\nf 3572 3571 3552 3553\nf 3554 3553 3534 3535\nf 3536 3535 3516 3517\nf 3517 3498 3441\nf 3514 3513 3494 3495\nf 3496 3495 3476 3477\nf 3478 3477 3458 3459\nf 3477 3476 3457 3458\nf 3495 3494 3475 3476\nf 3498 3479 3441\nf 3517 3516 3497 3498\nf 3535 3534 3515 3516\nf 3553 3552 3533 3534\nf 3571 3570 3551 3552\nf 3574 3555 3441\nf 3593 3592 3573 3574\nf 3611 3610 3591 3592\nf 3629 3628 3609 3610\nf 3647 3646 3627 3628\nf 3650 3631 3441\nf 3669 3668 3649 3650\nf 3459 3458 3667 3668\nf 3460 3669 3441\nf 3457 3456 3665 3666\nf 3667 3666 3647 3648\nf 3649 3648 3629 3630\nf 3631 3630 3611 3612\nf 3612 3593 3441\nf 3609 3608 3589 3590\nf 3591 3590 3571 3572\nf 3573 3572 3553 3554\nf 3555 3554 3535 3536\nf 3536 3517 3441\nf 3533 3532 3513 3514\nf 3515 3514 3495 3496\nf 3497 3496 3477 3478\nf 3479 3478 3459 3460\nf 3476 3475 3456 3457\nf 3479 3460 3441\nf 3498 3497 3478 3479\nf 3516 3515 3496 3497\nf 3534 3533 3514 3515\nf 3552 3551 3532 3533\nf 3555 3536 3441\nf 3574 3573 3554 3555\nf 3592 3591 3572 3573\nf 3610 3609 3590 3591\nf 3628 3627 3608 3609\nf 3631 3612 3441\nf 3650 3649 3630 3631\nf 3668 3667 3648 3649\nf 3458 3457 3666 3667\ns off\nf 3461 3480 3499 3518 3537 3556 3575 3594 3613 3632 3651 3442\ng hub\nf 4048 4058 4068 4078 4088 4098 4108 4118 4128 4038\nf 3864 3874 3884 3894 3904 3914 3924 3934 3944 3854\nf 3680 3690 3700 3710 3720 3730 3740 3750 3760 3670\ns 754\nf 3741 3740 3730 3731\nf 3701 3700 3690 3691\nf 3691 3690 3680 3681\nf 3731 3730 3720 3721\nf 3671 3670 3760 3761\nf 3751 3750 3740 3741\nf 3711 3710 3700 3701\nf 3681 3680 3670 3671\nf 3721 3720 3710 3711\nf 3761 3760 3750 3751\ns 755\nf 3672 3671 3761 3762\nf 3732 3731 3721 3722\nf 3692 3691 3681 3682\nf 3702 3701 3691 3692\nf 3742 3741 3731 3732\nf 3762 3761 3751 3752\nf 3722 3721 3711 3712\nf 3682 3681 3671 3672\nf 3712 3711 3701 3702\nf 3752 3751 3741 3742\ns 756\nf 3743 3742 3732 3733\nf 3703 3702 3692 3693\nf 3693 3692 3682 3683\nf 3733 3732 3722 3723\nf 3673 3672 3762 3763\nf 3753 3752 3742 3743\nf 3713 3712 3702 3703\nf 3683 3682 3672 3673\nf 3723 3722 3712 3713\nf 3763 3762 3752 3753\ns 757\nf 3674 3673 3763 3764\nf 3734 3733 3723 3724\nf 3694 3693 3683 3684\nf 3704 3703 3693 3694\nf 3744 3743 3733 3734\nf 3764 3763 3753 3754\nf 3724 3723 3713 3714\nf 3684 3683 3673 3674\nf 3714 3713 3703 3704\nf 3754 3753 3743 3744\ns 758\nf 3745 3744 3734 3735\nf 3705 3704 3694 3695\nf 3695 3694 3684 3685\nf 3735 3734 3724 3725\nf 3675 3674 3764 3765\nf 3755 3754 3744 3745\nf 3715 3714 3704 3705\nf 3685 3684 3674 3675\nf 3725 3724 3714 3715\nf 3765 3764 3754 3755\ns 759\nf 3676 3675 3765 3766\nf 3736 3735 3725 3726\nf 3696 3695 3685 3686\nf 3706 3705 3695 3696\nf 3746 3745 3735 3736\nf 3766 3765 3755 3756\nf 3726 3725 3715 3716\nf 3686 3685 3675 3676\nf 3716 3715 3705 3706\nf 3756 3755 3745 3746\ns 760\nf 3747 3746 3736 3737\nf 3707 3706 3696 3697\nf 3697 3696 3686 3687\nf 3737 3736 3726 3727\nf 3677 3676 3766 3767\nf 3757 3756 3746 3747\nf 3717 3716 3706 3707\nf 3687 3686 3676 3677\nf 3727 3726 3716 3717\nf 3767 3766 3756 3757\ns 761\nf 3838 3699 3689 3839\nf 3775 3749 3739 3776\nf 3838 3837 3799 3798 3709 3699\nf 3678 3677 3767 3768\nf 3758 3757 3747 3748\nf 3738 3737 3727 3728\nf 3718 3717 3707 3708\nf 3698 3697 3687 3688\nf 3688 3687 3677 3678\nf 3708 3707 3697 3698\nf 3728 3727 3717 3718\nf 3748 3747 3737 3738\nf 3768 3767 3757 3758\nf 3759 3819 3818 3769\nf 3719 3797 3796 3729\nf 3769 3818 3817 3679\nf 3679 3840 3839 3689\nf 3729 3777 3776 3739\nf 3775 3774 3820 3819 3759 3749\nf 3679 3678 3768 3769\nf 3759 3758 3748 3749\nf 3739 3738 3728 3729\nf 3719 3718 3708 3709\nf 3699 3698 3688 3689\nf 3689 3688 3678 3679\nf 3709 3708 3698 3699\nf 3729 3728 3718 3719\nf 3749 3748 3738 3739\nf 3769 3768 3758 3759\nf 3798 3797 3719 3709\nf 3795 3778 3777 3729 3796\nf 3816 3841 3840 3679 3817\ns 766\nf 3935 3934 3924 3925\nf 3895 3894 3884 3885\nf 3865 3864 3854 3855\nf 3905 3904 3894 3895\nf 3945 3944 3934 3935\nf 3925 3924 3914 3915\nf 3885 3884 3874 3875\nf 3875 3874 3864 3865\nf 3915 3914 3904 3905\nf 3855 3854 3944 3945\ns 767\nf 3946 3945 3935 3936\nf 3906 3905 3895 3896\nf 3866 3865 3855 3856\nf 3896 3895 3885 3886\nf 3936 3935 3925 3926\nf 3856 3855 3945 3946\nf 3916 3915 3905 3906\nf 3876 3875 3865 3866\nf 3886 3885 3875 3876\nf 3926 3925 3915 3916\ns 768\nf 3937 3936 3926 3927\nf 3897 3896 3886 3887\nf 3867 3866 3856 3857\nf 3907 3906 3896 3897\nf 3947 3946 3936 3937\nf 3927 3926 3916 3917\nf 3887 3886 3876 3877\nf 3877 3876 3866 3867\nf 3917 3916 3906 3907\nf 3857 3856 3946 3947\ns 769\nf 3948 3947 3937 3938\nf 3908 3907 3897 3898\nf 3868 3867 3857 3858\nf 3898 3897 3887 3888\nf 3938 3937 3927 3928\nf 3858 3857 3947 3948\nf 3918 3917 3907 3908\nf 3878 3877 3867 3868\nf 3888 3887 3877 3878\nf 3928 3927 3917 3918\ns 770\nf 3939 3938 3928 3929\nf 3899 3898 3888 3889\nf 3869 3868 3858 3859\nf 3909 3908 3898 3899\nf 3949 3948 3938 3939\nf 3929 3928 3918 3919\nf 3889 3888 3878 3879\nf 3879 3878 3868 3869\nf 3919 3918 3908 3909\nf 3859 3858 3948 3949\ns 771\nf 3950 3949 3939 3940\nf 3910 3909 3899 3900\nf 3870 3869 3859 3860\nf 3900 3899 3889 3890\nf 3940 3939 3929 3930\nf 3860 3859 3949 3950\nf 3920 3919 3909 3910\nf 3880 3879 3869 3870\nf 3890 3889 3879 3880\nf 3930 3929 3919 3920\ns 772\nf 3941 3940 3930 3931\nf 3901 3900 3890 3891\nf 3871 3870 3860 3861\nf 3911 3910 3900 3901\nf 3951 3950 3940 3941\nf 3931 3930 3920 3921\nf 3891 3890 3880 3881\nf 3881 3880 3870 3871\nf 3921 3920 3910 3911\nf 3861 3860 3950 3951\ns 773\nf 3863 4024 4023 3873\nf 3913 3961 3960 3923\nf 3959 3958 4004 4003 3943 3933\nf 3982 3981 3903 3893\nf 3952 3951 3941 3942\nf 3932 3931 3921 3922\nf 3912 3911 3901 3902\nf 3892 3891 3881 3882\nf 3872 3871 3861 3862\nf 3882 3881 3871 3872\nf 3902 3901 3891 3892\nf 3922 3921 3911 3912\nf 3942 3941 3931 3932\nf 3862 3861 3951 3952\nf 3979 3962 3961 3913 3980\nf 4000 4025 4024 3863 4001\nf 4022 3883 3873 4023\nf 3959 3933 3923 3960\nf 4022 4021 3983 3982 3893 3883\nf 3953 3952 3942 3943\nf 3933 3932 3922 3923\nf 3913 3912 3902 3903\nf 3893 3892 3882 3883\nf 3873 3872 3862 3863\nf 3883 3882 3872 3873\nf 3903 3902 3892 3893\nf 3923 3922 3912 3913\nf 3943 3942 3932 3933\nf 3863 3862 3952 3953\nf 3943 4003 4002 3953\nf 3903 3981 3980 3913\nf 3953 4002 4001 3863\ns 778\nf 4109 4108 4098 4099\nf 4069 4068 4058 4059\nf 4059 4058 4048 4049\nf 4099 4098 4088 4089\nf 4039 4038 4128 4129\nf 4119 4118 4108 4109\nf 4079 4078 4068 4069\nf 4049 4048 4038 4039\nf 4089 4088 4078 4079\nf 4129 4128 4118 4119\ns 779\nf 4040 4039 4129 4130\nf 4100 4099 4089 4090\nf 4060 4059 4049 4050\nf 4070 4069 4059 4060\nf 4110 4109 4099 4100\nf 4130 4129 4119 4120\nf 4090 4089 4079 4080\nf 4050 4049 4039 4040\nf 4080 4079 4069 4070\nf 4120 4119 4109 4110\ns 780\nf 4111 4110 4100 4101\nf 4071 4070 4060 4061\nf 4061 4060 4050 4051\nf 4101 4100 4090 4091\nf 4041 4040 4130 4131\nf 4121 4120 4110 4111\nf 4081 4080 4070 4071\nf 4051 4050 4040 4041\nf 4091 4090 4080 4081\nf 4131 4130 4120 4121\ns 781\nf 4042 4041 4131 4132\nf 4102 4101 4091 4092\nf 4062 4061 4051 4052\nf 4072 4071 4061 4062\nf 4112 4111 4101 4102\nf 4132 4131 4121 4122\nf 4092 4091 4081 4082\nf 4052 4051 4041 4042\nf 4082 4081 4071 4072\nf 4122 4121 4111 4112\ns 782\nf 4113 4112 4102 4103\nf 4073 4072 4062 4063\nf 4063 4062 4052 4053\nf 4103 4102 4092 4093\nf 4043 4042 4132 4133\nf 4123 4122 4112 4113\nf 4083 4082 4072 4073\nf 4053 4052 4042 4043\nf 4093 4092 4082 4083\nf 4133 4132 4122 4123\ns 783\nf 4044 4043 4133 4134\nf 4104 4103 4093 4094\nf 4064 4063 4053 4054\nf 4074 4073 4063 4064\nf 4114 4113 4103 4104\nf 4134 4133 4123 4124\nf 4094 4093 4083 4084\nf 4054 4053 4043 4044\nf 4084 4083 4073 4074\nf 4124 4123 4113 4114\ns 784\nf 4115 4114 4104 4105\nf 4075 4074 4064 4065\nf 4065 4064 4054 4055\nf 4105 4104 4094 4095\nf 4045 4044 4134 4135\nf 4125 4124 4114 4115\nf 4085 4084 4074 4075\nf 4055 4054 4044 4045\nf 4095 4094 4084 4085\nf 4135 4134 4124 4125\ns 785\nf 4206 4067 4057 4207\nf 4143 4117 4107 4144\nf 4206 4205 4167 4166 4077 4067\nf 4137 4136 4126 4127\nf 4117 4116 4106 4107\nf 4097 4096 4086 4087\nf 4077 4076 4066 4067\nf 4057 4056 4046 4047\nf 4067 4066 4056 4057\nf 4087 4086 4076 4077\nf 4107 4106 4096 4097\nf 4127 4126 4116 4117\nf 4047 4046 4136 4137\nf 4127 4187 4186 4137\nf 4087 4165 4164 4097\nf 4137 4186 4185 4047\nf 4047 4208 4207 4057\nf 4097 4145 4144 4107\nf 4143 4142 4188 4187 4127 4117\nf 4166 4165 4087 4077\nf 4136 4135 4125 4126\nf 4116 4115 4105 4106\nf 4096 4095 4085 4086\nf 4076 4075 4065 4066\nf 4056 4055 4045 4046\nf 4066 4065 4055 4056\nf 4086 4085 4075 4076\nf 4106 4105 4095 4096\nf 4126 4125 4115 4116\nf 4046 4045 4135 4136\nf 4163 4146 4145 4097 4164\nf 4184 4209 4208 4047 4185\ng prop\nusemtl dkteal\nf 4215 4214 4216\nf 4211 4210 4212\nf 4201 4205 4209 4202\nf 4195 4196 4194\nf 4190 4189 4191\nf 4180 4184 4188 4181\nf 4174 4175 4173\nf 4169 4168 4170\nf 4159 4163 4167 4160\nf 4152 4151 4153\nf 4148 4147 4149\nf 4138 4142 4146 4139\nf 4205 4206 4207\nf 4167 4163 4164\nf 4164 4165 4167\nf 4179 4157 4155 4177\nf 4219 4176 4174 4217\nf 4175 4151 4173\nf 4196 4214 4194\nf 4215 4170 4213\nf 4152 4191 4150\nf 4192 4210 4190\nf 4171 4147 4169\nf 4211 4168 4161 4204\nf 4183 4203 4202 4180\nf 4138 4181 4188 4142\nf 4180 4202 4209 4184\nf 4204 4161 4160 4201\nf 4169 4147 4140 4162\nf 4213 4168 4211\nf 4150 4189 4148\nf 4173 4149 4171\nf 4194 4212 4192\nf 4154 4193 4152\nf 4217 4172 4215\nf 4177 4155 4153 4175\nf 4158 4199 4197 4156\nf 4142 4143 4144\nf 4188 4184 4185\nf 4185 4186 4188\nf 4148 4141 4140 4147\nf 4152 4150 4151\nf 4162 4159 4160 4161\nf 4171 4170 4172\nf 4177 4175 4174 4176\nf 4190 4183 4182 4189\nf 4194 4192 4193\nf 4204 4201 4202 4203\nf 4213 4212 4214\nf 4219 4217 4216 4218\nf 4215 4213 4214\nf 4211 4204 4203 4210\nf 4198 4196 4195 4197\nf 4192 4191 4193\nf 4183 4180 4181 4182\nf 4173 4171 4172\nf 4169 4162 4161 4168\nf 4156 4154 4153 4155\nf 4150 4149 4151\nf 4141 4138 4139 4140\nf 4186 4187 4188\nf 4144 4145 4142\nf 4145 4146 4142\nf 4221 4178 4176 4219\nf 4198 4218 4216 4196\nf 4217 4174 4172\nf 4154 4195 4193\nf 4194 4214 4212\nf 4173 4151 4149\nf 4150 4191 4189\nf 4213 4170 4168\nf 4190 4210 4203 4183\nf 4141 4182 4181 4138\nf 4159 4139 4146 4163\nf 4201 4160 4167 4205\nf 4162 4140 4139 4159\nf 4148 4189 4182 4141\nf 4171 4149 4147\nf 4192 4212 4210\nf 4152 4193 4191\nf 4215 4172 4170\nf 4196 4216 4214\nf 4175 4153 4151\nf 4156 4197 4195 4154\nf 4200 4220 4218 4198\nf 4165 4166 4167\nf 4207 4208 4205\nf 4208 4209 4205\nf 4150 4148 4149\nf 4154 4152 4153\nf 4158 4156 4155 4157\nf 4171 4169 4170\nf 4173 4172 4174\nf 4179 4177 4176 4178\nf 4192 4190 4191\nf 4194 4193 4195\nf 4200 4198 4197 4199\nf 4213 4211 4212\nf 4217 4215 4216\nf 4221 4219 4218 4220\ns 761\nf 3847 3846 3848\nf 3843 3842 3844\nf 3833 3837 3841 3834\nf 3827 3828 3826\nf 3822 3821 3823\nf 3812 3816 3820 3813\nf 3806 3807 3805\nf 3801 3800 3802\nf 3791 3795 3799 3792\nf 3784 3783 3785\nf 3780 3779 3781\nf 3770 3774 3778 3771\nf 3837 3838 3839\nf 3799 3795 3796\nf 3796 3797 3799\nf 3811 3789 3787 3809\nf 3851 3808 3806 3849\nf 3807 3783 3805\nf 3828 3846 3826\nf 3847 3802 3845\nf 3784 3823 3782\nf 3824 3842 3822\nf 3803 3779 3801\nf 3843 3800 3793 3836\nf 3815 3835 3834 3812\nf 3770 3813 3820 3774\nf 3812 3834 3841 3816\nf 3836 3793 3792 3833\nf 3801 3779 3772 3794\nf 3845 3800 3843\nf 3782 3821 3780\nf 3805 3781 3803\nf 3826 3844 3824\nf 3786 3825 3784\nf 3849 3804 3847\nf 3809 3787 3785 3807\nf 3790 3831 3829 3788\nf 3774 3775 3776\nf 3820 3816 3817\nf 3817 3818 3820\nf 3780 3773 3772 3779\nf 3784 3782 3783\nf 3794 3791 3792 3793\nf 3803 3802 3804\nf 3809 3807 3806 3808\nf 3822 3815 3814 3821\nf 3826 3824 3825\nf 3836 3833 3834 3835\nf 3845 3844 3846\nf 3851 3849 3848 3850\nf 3847 3845 3846\nf 3843 3836 3835 3842\nf 3830 3828 3827 3829\nf 3824 3823 3825\nf 3815 3812 3813 3814\nf 3805 3803 3804\nf 3801 3794 3793 3800\nf 3788 3786 3785 3787\nf 3782 3781 3783\nf 3773 3770 3771 3772\nf 3818 3819 3820\nf 3776 3777 3774\nf 3777 3778 3774\nf 3853 3810 3808 3851\nf 3830 3850 3848 3828\nf 3849 3806 3804\nf 3786 3827 3825\nf 3826 3846 3844\nf 3805 3783 3781\nf 3782 3823 3821\nf 3845 3802 3800\nf 3822 3842 3835 3815\nf 3773 3814 3813 3770\nf 3791 3771 3778 3795\nf 3833 3792 3799 3837\nf 3794 3772 3771 3791\nf 3780 3821 3814 3773\nf 3803 3781 3779\nf 3824 3844 3842\nf 3784 3825 3823\nf 3847 3804 3802\nf 3828 3848 3846\nf 3807 3785 3783\nf 3788 3829 3827 3786\nf 3832 3852 3850 3830\nf 3797 3798 3799\nf 3839 3840 3837\nf 3840 3841 3837\nf 3782 3780 3781\nf 3786 3784 3785\nf 3790 3788 3787 3789\nf 3803 3801 3802\nf 3805 3804 3806\nf 3811 3809 3808 3810\nf 3824 3822 3823\nf 3826 3825 3827\nf 3832 3830 3829 3831\nf 3845 3843 3844\nf 3849 3847 3848\nf 3853 3851 3850 3852\ns off\nf 3789 3811 3810 3853 3852 3832 3831 3790\nf 3973 3995 3994 4037 4036 4016 4015 3974\nf 4157 4179 4178 4221 4220 4200 4199 4158\ns 773\nf 4035 4033 4032 4034\nf 4031 4029 4030\nf 4020 4017 4018 4019\nf 4009 4010 4008\nf 4006 3999 3998 4005\nf 3993 3991 3990 3992\nf 3987 3986 3988\nf 3978 3975 3976 3977\nf 3966 3965 3967\nf 3964 3957 3956 3963\nf 4004 4000 4001\nf 4001 4002 4004\nf 3958 3959 3960\nf 3974 4015 4013 3972\nf 3993 3971 3969 3991\nf 4033 3990 3988\nf 3970 4011 4009\nf 4010 4030 4028\nf 3989 3967 3965\nf 3966 4007 4005\nf 4029 3986 3984\nf 3985 3963 3956 3978\nf 4020 3977 3976 4017\nf 3996 4018 4025 4000\nf 3954 3997 4004 3958\nf 3999 4019 4018 3996\nf 4027 3984 3977 4020\nf 3987 3965 3963\nf 4008 4028 4026\nf 3968 4009 4007\nf 4031 3988 3986\nf 4012 4032 4030\nf 3991 3969 3967\nf 4035 3992 3990 4033\nf 3995 3973 3971 3993\nf 3983 3979 3980\nf 3980 3981 3983\nf 4021 4022 4023\nf 3954 3958 3962 3955\nf 3966 3964 3965\nf 3970 3968 3969\nf 3975 3979 3983 3976\nf 3987 3985 3986\nf 3991 3989 3990\nf 3996 4000 4004 3997\nf 4008 4006 4007\nf 4012 4010 4011\nf 4017 4021 4025 4018\nf 4029 4027 4028\nf 4033 4031 4032\nf 4037 4035 4034 4036\nf 4031 4030 4032\nf 4027 4026 4028\nf 4016 4014 4013 4015\nf 4010 4009 4011\nf 4006 4005 4007\nf 3995 3993 3992 3994\nf 3989 3988 3990\nf 3985 3984 3986\nf 3974 3972 3971 3973\nf 3968 3967 3969\nf 3964 3963 3965\nf 4023 4024 4021\nf 4024 4025 4021\nf 3981 3982 3983\nf 4016 4036 4034 4014\nf 3972 4013 4011 3970\nf 3991 3967 3989\nf 4012 4030 4010\nf 4031 3986 4029\nf 3968 4007 3966\nf 4008 4026 4006\nf 3987 3963 3985\nf 3964 4005 3998 3957\nf 3978 3956 3955 3975\nf 4017 3976 3983 4021\nf 3975 3955 3962 3979\nf 3957 3998 3997 3954\nf 4006 4026 4019 3999\nf 4029 3984 4027\nf 3966 4005 3964\nf 3989 3965 3987\nf 4010 4028 4008\nf 3970 4009 3968\nf 4033 3988 4031\nf 4014 4034 4032 4012\nf 4037 3994 3992 4035\nf 3960 3961 3958\nf 3961 3962 3958\nf 4002 4003 4004\nf 3957 3954 3955 3956\nf 3968 3966 3967\nf 3972 3970 3969 3971\nf 3985 3978 3977 3984\nf 3988 3989 3987\nf 3999 3996 3997 3998\nf 4008 4007 4009\nf 4014 4012 4011 4013\nf 4027 4020 4019 4026\nf 4029 4028 4030\ng rudder\nusemtl bluteal\ns 790\nf 4263 4238 4240\nf 4263 4230 4232\nf 4262 4260 4242\nf 4262 4252 4254\nf 4262 4244 4246\nf 4255 4257 4256 4254\nf 4247 4249 4248 4246\nf 4240 4238 4239 4241\nf 4232 4230 4231 4233\nf 4222 4224 4225 4223\nf 4241 4239 4255 4253\nf 4233 4231 4243 4261\nf 4263 4224 4222\nf 4231 4229 4245 4243\nf 4239 4237 4257 4255\nf 4227 4223 4249 4247\nf 4230 4228 4229 4231\nf 4238 4236 4237 4239\nf 4245 4247 4246 4244\nf 4253 4255 4254 4252\nf 4261 4243 4242 4260\nf 4262 4250 4252\nf 4262 4258 4260\nf 4263 4228 4230\nf 4263 4236 4238\nf 4263 4240 4224\nf 4263 4232 4234\nf 4263 4222 4226\nf 4262 4254 4256\nf 4262 4246 4248\nf 4257 4259 4258 4256\nf 4249 4251 4250 4248\nf 4224 4240 4241 4225\nf 4234 4232 4233 4235\nf 4226 4222 4223 4227\nf 4225 4241 4253 4251\nf 4235 4233 4261 4259\nf 4262 4242 4244\nf 4229 4227 4247 4245\nf 4237 4235 4259 4257\nf 4223 4225 4251 4249\nf 4228 4226 4227 4229\nf 4236 4234 4235 4237\nf 4243 4245 4244 4242\nf 4251 4253 4252 4250\nf 4259 4261 4260 4258\nf 4262 4248 4250\nf 4262 4256 4258\nf 4263 4226 4228\nf 4263 4234 4236\ns 792\nf 4264 4295 4296\nf 4264 4291 4292\nf 4267 4304 4305\nf 4267 4300 4301\nf 4277 4275 4268 4305\nf 4285 4283 4302 4301\nf 4273 4272 4298 4269\nf 4296 4295 4280 4282\nf 4292 4291 4270 4274\nf 4271 4288 4289 4272\nf 4282 4280 4281 4283\nf 4274 4270 4273 4275\nf 4264 4265 4266\nf 4276 4274 4275 4277\nf 4284 4282 4283 4285\nf 4266 4265 4286 4288\nf 4293 4292 4274 4276\nf 4297 4296 4282 4284\nf 4272 4289 4299 4298\nf 4283 4281 4303 4302\nf 4267 4269 4298\nf 4267 4301 4302\nf 4267 4305 4268\nf 4264 4292 4293\nf 4264 4296 4297\nf 4264 4294 4295\nf 4264 4290 4291\nf 4267 4303 4304\nf 4267 4299 4300\nf 4279 4277 4305 4304\nf 4287 4285 4301 4300\nf 4275 4273 4269 4268\nf 4295 4294 4278 4280\nf 4291 4290 4271 4270\nf 4288 4286 4287 4289\nf 4280 4278 4279 4281\nf 4270 4271 4272 4273\nf 4267 4268 4269\nf 4278 4276 4277 4279\nf 4286 4284 4285 4287\nf 4290 4266 4288 4271\nf 4294 4293 4276 4278\nf 4265 4297 4284 4286\nf 4289 4287 4300 4299\nf 4281 4279 4304 4303\nf 4267 4298 4299\nf 4267 4302 4303\nf 4264 4266 4290\nf 4264 4293 4294\nf 4264 4297 4265\ng seat\nusemtl black\ns 795\nf 4428 4430 4431 4429\nf 4420 4422 4423 4421\nf 4412 4414 4415 4413\nf 4402 4406 4407 4403\nf 4396 4398 4399 4397\nf 4388 4390 4391 4389\nf 4380 4382 4383 4381\nf 4370 4374 4375 4371\nf 4360 4362 4363 4361\nf 4352 4354 4355 4353\nf 4344 4346 4347 4345\nf 4306 4321 4320 4319 4318 4307\nf 4364 4362 4412 4410\nf 4338 4341 4402 4405\nf 4348 4346 4428 4426\nf 4356 4354 4420 4418\nf 4321 4306 4386 4384\nf 4317 4318 4378 4376\nf 4313 4314 4373 4400\nf 4309 4310 4394 4392\nf 4391 4393 4415 4417\nf 4383 4385 4423 4425\nf 4375 4377 4431 4433\nf 4399 4401 4407 4409\nf 4308 4307 4318\nf 4397 4399 4409 4411\nf 4371 4375 4433 4404\nf 4381 4383 4425 4427\nf 4389 4391 4417 4419\nf 4307 4388 4386\nf 4310 4311 4396 4394\nf 4312 4313 4400\nf 4316 4317 4376 4374\nf 4321 4384 4382\nf 4358 4356 4418 4416\nf 4350 4348 4426 4424\nf 4342 4338 4405 4432\nf 4366 4364 4410 4408\nf 4313 4312 4311 4310 4314\nf 4341 4338 4339 4340\nf 4346 4348 4349 4347\nf 4354 4356 4357 4355\nf 4362 4364 4365 4363\nf 4366 4369 4367\nf 4374 4376 4377 4375\nf 4382 4384 4385 4383\nf 4390 4392 4393 4391\nf 4398 4400 4401\nf 4405 4402 4403 4404\nf 4410 4412 4413 4411\nf 4418 4420 4421 4419\nf 4426 4428 4429 4427\nf 4430 4432 4433 4431\nf 4422 4424 4425 4423\nf 4414 4416 4417 4415\nf 4406 4408 4409 4407\nf 4398 4401 4399\nf 4394 4396 4397 4395\nf 4386 4388 4389 4387\nf 4378 4380 4381 4379\nf 4373 4370 4371 4372\nf 4366 4368 4369\nf 4358 4360 4361 4359\nf 4350 4352 4353 4351\nf 4342 4344 4345 4343\nf 4309 4315 4314 4310\nf 4362 4360 4414 4412\nf 4341 4368 4406 4402\nf 4346 4344 4430 4428\nf 4354 4352 4422 4420\nf 4320 4321 4382\nf 4318 4319 4380 4378\nf 4314 4315 4370 4373\nf 4400 4398 4312\nf 4308 4309 4392 4390\nf 4386 4306 4307\nf 4385 4387 4421 4423\nf 4377 4379 4429 4431\nf 4401 4372 4403 4407\nf 4393 4395 4413 4415\nf 4395 4397 4411 4413\nf 4372 4371 4404 4403\nf 4379 4381 4427 4429\nf 4387 4389 4419 4421\nf 4307 4308 4390 4388\nf 4311 4312 4398 4396\nf 4315 4316 4374 4370\nf 4319 4320 4382 4380\nf 4360 4358 4416 4414\nf 4352 4350 4424 4422\nf 4344 4342 4432 4430\nf 4368 4366 4408 4406\nf 4308 4318 4317 4316 4315 4309\nf 4338 4342 4343 4339\nf 4348 4350 4351 4349\nf 4356 4358 4359 4357\nf 4364 4366 4367 4365\nf 4376 4378 4379 4377\nf 4384 4386 4387 4385\nf 4392 4394 4395 4393\nf 4400 4373 4372 4401\nf 4408 4410 4411 4409\nf 4416 4418 4419 4417\nf 4424 4426 4427 4425\nf 4432 4405 4404 4433\ns 798\nf 4332 4331 4330 4329 4333\nf 4334 4328 4327 4326 4325 4335\nf 4333 4334 4361 4363\nf 4329 4330 4369 4340\nf 4325 4326 4345 4347\nf 4323 4324 4351\nf 4322 4323 4351 4353\nf 4326 4327 4343 4345\nf 4369 4330 4331\nf 4332 4333 4363 4365\nf 4337 4355 4357\nf 4324 4323 4322 4337 4336 4325\nf 4333 4329 4328 4334\nf 4336 4337 4357\nf 4334 4335 4359 4361\nf 4331 4367 4369\nf 4328 4329 4340 4339\nf 4324 4325 4347 4349\nf 4337 4322 4353 4355\nf 4324 4349 4351\nf 4327 4328 4339 4343\nf 4331 4332 4365 4367\nf 4335 4336 4357 4359\nf 4335 4325 4336\nf 4368 4341 4340 4369\ng stand\nusemtl dkdkgrey\ns off\nf 4547 4546 4549 4548\nf 4435 4434 4438 4444 4445 4440\nf 4491 4490 4493 4492\nf 4448 4479 4478 4450\nf 4527 4445 4456 4528\nf 4482 4445 4453 4483\nf 4435 4436 4437 4434\nf 4487 4486 4489 4488\ns 816\nf 4458 4459 4448 4441\nf 4464 4465 4439 4449\nf 4479 4480 4465 4464\nf 4494 4495 4480 4479\nf 4492 4493 4474 4477\nf 4477 4474 4459 4458\nf 4437 4436 4441 4448 4449 4439\nf 4459 4494 4479 4448\ns 817\nf 4547 4548 4541 4540\nf 4531 4530 4533 4532\nf 4487 4488 4473 4472\nf 4441 4436 4435 4440 4442 4443\nf 4461 4458 4441 4443\nf 4531 4457 4440 4530\nf 4540 4541 4534 4537\nf 4472 4473 4454 4457\nf 4457 4454 4442 4440\nf 4476 4477 4458 4461\nf 4491 4492 4477 4476\nf 4537 4534 4443 4442\ns 815\nf 4509 4506 4503 4502\nf 4484 4485 4466 4469\nf 4469 4466 4438 4447\nf 4434 4437 4439 4446 4447 4438\nf 4502 4503 4438 4466\nf 4499 4500 4485 4484\nf 4465 4462 4446 4439\nf 4480 4481 4462 4465\nf 4495 4496 4481 4480\ns 819\nf 4449 4448 4450 4451\nf 4453 4452 4451 4450\nf 4452 4453 4445 4444\nf 4447 4446 4451 4452\ns 840\nf 4549 4546 4543 4544\nf 4543 4542 4545 4544\ns 829\nf 4460 4497 4494 4459\nf 4495 4494 4497 4496\ns 830\nf 4499 4498 4501 4500\nf 4498 4455 4456 4501\ns 821\nf 4483 4453 4455 4498\nf 4473 4470 4455 4454\nf 4468 4469 4447 4452\nf 4488 4489 4470 4473\nf 4483 4484 4469 4468\nf 4454 4455 4453 4442\nf 4498 4499 4484 4483\ns 820\nf 4450 4478 4497 4460\nf 4460 4461 4443 4450\nf 4481 4478 4463 4462\nf 4496 4497 4478 4481\nf 4490 4491 4476 4475\nf 4475 4476 4461 4460\nf 4462 4463 4451 4446\ns 823\nf 4463 4464 4449 4451\nf 4478 4479 4464 4463\ns 833\nf 4646 4648 4510 4517\nf 4529 4526 4523 4522\nf 4516 4517 4510 4513\nf 4513 4510 4507 4508\nf 4522 4523 4520 4519\nf 4660 4654 4521 4520\nf 4659 4655 4654 4660\nf 4657 4661 4660 4658\nf 4660 4661 4659\nf 4640 4646 4517 4514\nf 4520 4521 4514 4517\nf 4507 4506 4509 4508\nf 4519 4520 4517 4516\nf 4532 4533 4526 4529\nf 4658 4660 4520 4523\ns 818\nf 4482 4483 4468 4467\nf 4467 4468 4452 4444\nf 4504 4505 4467 4444\ns 825\nf 4489 4486 4471 4470\nf 4470 4471 4456 4455\ns 826\nf 4486 4487 4472 4471\nf 4471 4472 4457 4456\ns 827\nf 4493 4490 4475 4474\nf 4474 4475 4460 4459\ns 828\nf 4501 4456 4445 4482\nf 4485 4482 4467 4466\nf 4500 4501 4482 4485\ns 832\nf 4503 4504 4444 4438\nf 4510 4511 4504 4507\nf 4648 4649 4647\nf 4645 4649 4648 4646\nf 4647 4643 4642 4648\nf 4648 4642 4511 4510\nf 4506 4507 4504 4503\nf 4642 4643 4641\ns 831\nf 4512 4513 4508 4505\nf 4508 4509 4502 4505\nf 4518 4519 4516 4515\nf 4528 4529 4522 4525\nf 4531 4532 4529 4528\nf 4525 4522 4519 4518\nf 4515 4516 4513 4512\nf 4505 4502 4466 4467\nf 4528 4456 4457 4531\ns 834\nf 4653 4650 4652 4654\nf 4651 4652 4650\nf 4642 4640 4514 4511\nf 4524 4525 4518 4521\nf 4514 4515 4512 4511\nf 4639 4640 4638\nf 4654 4655 4653\nf 4511 4512 4505 4504\nf 4521 4518 4515 4514\nf 4527 4528 4525 4524\nf 4654 4652 4524 4521\nf 4641 4638 4640 4642\ns 836\nf 4530 4440 4445 4527\nf 4533 4530 4527 4526\nf 4651 4656 4658 4652\nf 4652 4658 4523 4524\nf 4526 4527 4524 4523\nf 4657 4658 4656\ns 837\nf 4541 4538 4535 4534\nf 4544 4545 4538 4541\nf 4548 4549 4544 4541\nf 4534 4535 4450 4443\ns 838\nf 4545 4542 4539 4538\nf 4538 4539 4536 4535\nf 4535 4536 4453 4450\ns 839\nf 4536 4537 4442 4453\nf 4546 4547 4540 4543\nf 4542 4543 4540 4539\nf 4539 4540 4537 4536\ns 835\nf 4645 4646 4644\nf 4639 4644 4646 4640\ng steer\nusemtl black\nf 4635 4628 4644 4639\nf 4635 4639 4638 4636\nf 4634 4629 4628 4635\ns 834\nf 4597 4602 4605 4595\nf 4596 4589 4591 4597\nf 4635 4636 4637 4634\nf 4596 4597 4595\nf 4594 4595 4605 4600\nf 4633 4636 4638 4641\nf 4601 4604 4629 4634\nf 4587 4588 4586\nf 4599 4600 4601 4598\nf 4580 4599 4598 4581\nf 4632 4637 4636 4633\nf 4600 4605 4604 4601\nf 4593 4596 4595 4594\nf 4593 4594 4592\nf 4586 4592 4599 4580\nf 4596 4593 4588 4589\nf 4581 4598 4637 4632\nf 4590 4591 4589\nf 4603 4604 4605 4602\nf 4588 4593 4592 4586\nf 4594 4600 4599 4592\nf 4601 4634 4637 4598\ns 832\nf 4625 4647 4649 4622\nf 4633 4641 4643 4630\nf 4626 4623 4622 4627\nf 4583 4578 4631 4624\nf 4627 4622 4649 4645\nf 4623 4624 4625 4622\nf 4583 4624 4623 4584\nf 4624 4631 4630 4625\nf 4631 4632 4633 4630\nf 4579 4580 4581 4578\nf 4625 4630 4643 4647\nf 4582 4579 4578 4583\nf 4581 4632 4631 4578\nf 4627 4645 4644 4628\ns 845\nf 4589 4588 4587 4590\nf 4583 4584 4585 4582\nf 4603 4584 4623 4626\nf 4586 4580 4579 4587\nf 4602 4585 4584 4603\nf 4590 4582 4585 4591\nf 4597 4591 4585 4602\nf 4590 4587 4579 4582\nf 4627 4628 4629 4626\nf 4603 4626 4629 4604\ng throttle\nusemtl red\ns 833\nf 4611 4657 4656 4612\nf 4611 4606 4661 4657\nf 4607 4608 4609 4606\nf 4610 4607 4606 4611\nf 4609 4659 4661 4606\ns 834\nf 4573 4618 4621 4570\nf 4569 4574 4577 4567\nf 4568 4561 4563 4569\nf 4554 4551 4550 4555\nf 4575 4576 4577 4574\nf 4562 4563 4561\nf 4573 4576 4613 4618\nf 4568 4565 4560 4561\nf 4553 4570 4621 4616\nf 4558 4564 4571 4552\nf 4559 4560 4558\nf 4571 4572 4573 4570\nf 4565 4568 4567 4566\nf 4572 4577 4576 4573\nf 4608 4615 4614 4609\nf 4616 4621 4620 4617\nf 4555 4608 4607 4556\nf 4552 4571 4570 4553\nf 4615 4616 4617 4614\nf 4565 4566 4564\nf 4551 4552 4553 4550\nf 4555 4550 4615 4608\nf 4617 4620 4650 4653\nf 4609 4614 4655 4659\nf 4566 4567 4577 4572\nf 4568 4569 4567\nf 4619 4620 4621 4618\nf 4560 4565 4564 4558\nf 4566 4572 4571 4564\nf 4553 4616 4615 4550\nf 4617 4653 4655 4614\ns 836\nf 4618 4613 4612 4619\nf 4619 4651 4650 4620\nf 4619 4612 4656 4651\ns 841\nf 4575 4610 4613 4576\nf 4611 4612 4613 4610\nf 4562 4559 4551 4554\nf 4569 4563 4557 4574\nf 4562 4554 4557 4563\nf 4574 4557 4556 4575\nf 4558 4552 4551 4559\nf 4575 4556 4607 4610\nf 4555 4556 4557 4554\nf 4561 4560 4559 4562\n# 6273 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/al.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv 0.786019 -2.928538 0.601628\nv 0.787557 -2.907031 0.601650\nv 0.907193 -2.908894 0.550182\nv 0.902064 -2.928018 0.550057\nv 1.023440 -2.956840 0.481313\nv 1.017128 -2.970083 0.481210\nv 1.101541 -3.010835 0.441949\nv 1.087422 -3.020051 0.441933\nv 1.106929 -3.145379 0.395161\nv 1.091562 -3.144946 0.395144\nv 1.072088 -3.235354 0.377412\nv 1.077035 -3.157159 0.277621\nv 1.064921 -3.214447 0.290776\nv 1.021403 -3.201481 0.168705\nv 1.038110 -3.154783 0.137595\nv 1.077220 -3.018806 0.314615\nv 1.074982 -3.018031 0.239323\nv 1.042151 -3.030779 0.086701\nv 1.064326 -2.943164 0.204697\nv 1.021818 -2.957978 0.044387\nv 0.975907 -2.855559 -0.005333\nv 1.035428 -2.841887 0.171577\nv 1.011729 -2.818190 0.239631\nv 0.772762 -2.912492 0.717615\nv 0.907387 -2.923344 0.685008\nv 1.020136 -2.965400 0.658615\nv 1.097976 -3.067994 0.586489\nv 1.100485 -3.190069 0.544074\nv 0.770828 -2.937952 0.775106\nv 0.903720 -2.963398 0.760914\nv 0.999774 -3.027202 0.760806\nv 1.046470 -3.163512 0.760373\nv 1.037090 -3.238383 0.760190\nv 1.074062 -3.238380 0.527702\nv 0.893578 -2.804472 0.281931\nv 0.782004 -2.795410 0.279693\nv 0.698799 -2.801319 0.275004\nv 0.675365 -2.938091 0.585189\nv 0.661901 -2.921910 0.586087\nv 0.665882 -2.925934 0.710389\nv 0.560051 -2.971251 0.514855\nv 0.543453 -2.950871 0.514979\nv 0.555355 -2.970095 0.691185\nv 0.932929 -3.089451 0.852653\nv 0.866542 -3.038278 0.852679\nv 0.963457 -3.158557 0.852644\nv 0.771187 -3.008775 0.852663\nv 0.671917 -2.952009 0.761131\nv 0.685978 -3.046776 0.852632\nv 0.583250 -3.009146 0.760837\nv 0.632573 -3.092436 0.852583\nv 0.823277 -3.121259 0.885215\nv 0.770024 -3.097687 0.885199\nv 0.717890 -3.127336 0.885165\nv 0.695662 -3.148001 0.885157\nv 0.599302 -3.142824 0.852540\nv 0.677427 -3.175218 0.885148\nv 0.587659 -3.190575 0.852484\nv 0.670639 -3.215333 0.885132\nv 0.850614 -3.153811 0.885202\nv 0.852737 -3.194399 0.885187\nv 0.943579 -3.238376 0.852558\nv 0.685633 -3.238381 0.885102\nv 0.840481 -3.238389 0.885136\nv 0.986468 -2.855529 -0.011956\nv 1.036222 -2.962744 0.037093\nv 1.057487 -3.036565 0.080302\nv 1.054966 -3.160047 0.131091\nv 0.953122 -2.854421 -0.068876\nv 0.985483 -2.957746 -0.057919\nv 1.019390 -3.058597 -0.042315\nv 1.009796 -3.167722 -0.004136\nv 0.986530 -3.201493 0.053273\nv 0.905391 -3.053835 -0.136203\nv 0.895036 -2.957297 -0.125308\nv 0.887260 -2.854405 -0.108414\nv 0.907334 -3.150203 -0.141691\nv 0.891522 -3.201486 -0.107920\nv 0.798525 -3.145032 -0.174300\nv 0.801578 -3.042581 -0.168863\nv 0.802988 -2.964290 -0.145041\nv 0.812682 -2.854389 -0.126191\nv 0.707237 -2.954707 -0.130756\nv 0.730402 -2.854357 -0.117064\nv 0.687061 -3.034578 -0.157076\nv 0.669942 -3.140672 -0.145304\nv 0.791184 -3.201484 -0.146210\nv 0.683376 -3.201475 -0.124516\nv 0.680277 -2.854345 -0.083039\nv 0.605010 -2.955611 -0.068740\nv 0.577713 -3.033063 -0.043603\nv 0.584799 -3.145787 -0.010707\nv 0.600187 -3.201477 0.001230\nv 0.541462 -2.935125 0.085168\nv 0.620955 -2.855412 -0.016222\nv 0.531662 -3.029833 0.116483\nv 0.555642 -3.146120 0.137200\nv 0.590839 -3.201479 0.159142\nv 0.631776 -2.855329 -0.009756\nv 0.566744 -2.944517 0.088975\nv 0.558824 -2.932812 0.213749\nv 0.601732 -2.841651 0.141089\nv 0.552408 -3.033704 0.126091\nv 0.538244 -3.027855 0.247684\nv 0.571163 -3.144282 0.146245\nv 0.556490 -3.151489 0.278832\nv 0.567925 -3.215084 0.277742\nv 0.545355 -3.238381 0.401191\nv 0.515299 -3.158295 0.421111\nv 0.504552 -3.045186 0.466680\nv 0.534684 -3.037446 0.354751\nv 0.615730 -2.815993 0.209595\nv 0.475195 -3.034925 0.466812\nv 0.476549 -3.052179 0.634725\nv 0.494045 -3.160833 0.418894\nv 0.475884 -3.159244 0.586422\nv 0.534676 -3.238383 0.576237\nv 0.528877 -3.174860 0.760344\nv 0.528487 -3.075514 0.760567\nv 0.620069 -3.238380 0.852422\nv 0.560282 -3.238374 0.760130\nv 1.043198 -3.241457 0.769490\nv 0.947325 -3.241451 0.864192\nv 0.841622 -3.241463 0.897592\nv 0.682861 -3.241456 0.897559\nv 0.615641 -3.241454 0.864053\nv 0.554343 -3.241448 0.769429\nv 0.528091 -3.241457 0.580889\nv 0.539039 -3.241456 0.401420\nv 0.562180 -3.218158 0.274852\nv 0.585672 -3.204554 0.153256\nv 0.595257 -3.204551 -0.008646\nv 0.680548 -3.204550 -0.137570\nv 0.791078 -3.204558 -0.159811\nv 0.893952 -3.204560 -0.120554\nv 0.991361 -3.204567 0.044711\nv 1.027114 -3.204555 0.163059\nv 1.071733 -3.218158 0.288215\nv 1.079081 -3.238428 0.377041\nv 1.081105 -3.241456 0.531129\nv 1.071733 -3.270523 0.288214\nv 1.079080 -3.293819 0.377041\nv 1.081104 -3.293821 0.531128\nv 1.043198 -3.293823 0.769490\nv 0.947324 -3.293815 0.864192\nv 0.841621 -3.293829 0.897592\nv 0.682861 -3.293821 0.897558\nv 0.615641 -3.293820 0.864052\nv 0.554343 -3.293814 0.769428\nv 0.528090 -3.293823 0.580889\nv 0.539038 -3.293821 0.401420\nv 0.562179 -3.270524 0.274852\nv 0.585672 -3.256919 0.153255\nv 1.027114 -3.256921 0.163059\nv 0.893951 -3.294219 -0.120554\nv 0.991360 -3.294219 0.044711\nv 1.027113 -3.294219 0.163059\nv 0.585671 -3.294219 0.153256\nv 0.595255 -3.294219 -0.008646\nv 0.680546 -3.294219 -0.137570\nv 0.791077 -3.294219 -0.159812\nv 0.903816 -2.903723 0.409087\nv 0.905746 -2.925559 0.458751\nv 0.790406 -2.914967 0.482225\nv 0.790793 -2.895555 0.429593\nv 1.018182 -2.931984 0.351433\nv 1.025488 -2.953660 0.369957\nv 1.018342 -2.949813 0.400882\nv 0.790138 -2.871559 0.387279\nv 0.787987 -2.841679 0.340474\nv 0.914136 -2.845706 0.325947\nv 0.912999 -2.878417 0.370259\nv 1.015141 -2.886044 0.280661\nv 1.021929 -2.906811 0.284496\nv 1.017217 -2.915387 0.319981\nv 0.685314 -2.868801 0.376137\nv 0.688271 -2.841438 0.325026\nv 0.597187 -2.896330 0.344932\nv 0.599270 -2.886341 0.301924\nv 0.604511 -2.868714 0.294449\nv 0.577213 -2.940670 0.448258\nv 0.575888 -2.944491 0.419575\nv 0.587015 -2.919345 0.393668\nv 0.682337 -2.889899 0.427220\nv 0.679472 -2.908538 0.484016\nv 0.578191 -2.929036 0.441868\nv 0.680449 -2.896904 0.477628\nv 0.791384 -2.903331 0.475837\nv 0.906724 -2.913923 0.452362\nv 1.019319 -2.938179 0.394494\nv 1.018984 -2.925163 0.362409\nv 0.902406 -2.898798 0.421672\nv 0.791527 -2.890346 0.442937\nv 0.682278 -2.884057 0.442476\nv 0.585389 -2.913921 0.408412\nv 1.017454 -2.902199 0.319002\nv 1.016298 -2.881953 0.293736\nv 0.915292 -2.841615 0.339021\nv 0.789142 -2.837587 0.353549\nv 0.689427 -2.837347 0.338100\nv 0.605667 -2.864622 0.307524\nv 0.599852 -2.881745 0.340187\nv 0.686410 -2.854633 0.370879\nv 0.790442 -2.856759 0.383933\nv 0.915448 -2.863334 0.367673\nv 1.134076 -2.073764 0.125220\nv 1.100784 -2.840772 0.063859\nv 1.121226 -2.082448 0.281435\nv 1.077482 -2.848263 0.183241\nv 1.049602 -2.093997 0.420646\nv 1.009420 -2.858189 0.294717\nv 0.930108 -2.106653 0.521664\nv 0.906959 -2.869041 0.381315\nv 0.780934 -2.118488 0.569105\nv 0.785697 -2.879164 0.429853\nv 0.624792 -2.127701 0.555750\nv 0.664096 -2.887017 0.432939\nv 0.487609 -2.132838 0.485339\nv 0.560669 -2.891407 0.390105\nv 0.386351 -2.133204 0.365386\nv 0.491161 -2.891663 0.307871\nv 0.336248 -2.128763 0.214291\nv 0.466153 -2.887750 0.198757\nv 0.349097 -2.120078 0.058076\nv 0.489454 -2.880259 0.079375\nv 0.420722 -2.108528 -0.081137\nv 0.557517 -2.870332 -0.032100\nv 0.540217 -2.095873 -0.182154\nv 0.659978 -2.859481 -0.118699\nv 0.689391 -2.084038 -0.229594\nv 0.781240 -2.849359 -0.167237\nv 0.845533 -2.074826 -0.216238\nv 0.902840 -2.841503 -0.170322\nv 0.984872 -2.069637 -0.144119\nv 1.006268 -2.837114 -0.127489\nv 1.086195 -2.069264 -0.024214\nv 1.075776 -2.836857 -0.045255\nv 1.099357 -1.937180 0.285132\nv 1.111786 -1.928778 0.134029\nv 1.065471 -1.924427 -0.010516\nv 0.967464 -1.924788 -0.126497\nv 0.832685 -1.929805 -0.196257\nv 0.681653 -1.938717 -0.209175\nv 0.537360 -1.950165 -0.163286\nv 0.421775 -1.962406 -0.065576\nv 0.352495 -1.973576 0.069081\nv 0.340066 -1.981978 0.220184\nv 0.377305 -1.987318 0.372941\nv 0.478375 -1.986952 0.492687\nv 0.619167 -1.980950 0.550470\nv 0.770199 -1.972039 0.563388\nv 0.914492 -1.960592 0.517499\nv 1.030077 -1.948350 0.419788\nv 0.751339 -1.850779 0.469324\nv 0.858293 -1.842294 0.435310\nv 0.943969 -1.833221 0.362884\nv 0.995321 -1.824939 0.263071\nv 1.004534 -1.818712 0.151069\nv 0.970204 -1.815487 0.043927\nv 0.897558 -1.815754 -0.042042\nv 0.797655 -1.819474 -0.093750\nv 0.685705 -1.826079 -0.103325\nv 0.578750 -1.834564 -0.069312\nv 0.493075 -1.843638 0.003116\nv 0.441722 -1.851918 0.102928\nv 0.432509 -1.858146 0.214931\nv 0.384043 -1.902884 0.366993\nv 0.485102 -1.902527 0.486719\nv 0.639389 -1.857384 0.459749\nv 0.583406 -1.776776 0.258793\nv 0.621062 -1.776637 0.303356\nv 0.672847 -1.774709 0.330159\nv 0.730876 -1.771286 0.335122\nv 0.786316 -1.766887 0.317490\nv 0.830726 -1.762184 0.279949\nv 0.857345 -1.757891 0.228210\nv 0.862121 -1.754664 0.170154\nv 0.844325 -1.752992 0.114618\nv 0.806669 -1.753130 0.070055\nv 0.754884 -1.755058 0.043252\nv 0.696855 -1.758482 0.038289\nv 0.641416 -1.762880 0.055921\nv 0.597005 -1.767583 0.093462\nv 0.570387 -1.771877 0.145201\nv 0.565611 -1.775104 0.203256\nv 0.507322 -1.827416 0.433629\nv 0.437965 -1.827668 0.351484\nv 0.276676 -1.301333 0.457017\nv 0.631338 -1.958341 0.583740\nv 0.179644 -1.471140 0.419720\nv 0.501134 -2.028466 0.525199\nv 0.119448 -1.629419 0.315006\nv 0.408378 -2.099356 0.417180\nv 0.105254 -1.752074 0.158818\nv 0.367193 -2.160221 0.276124\nv 0.139222 -1.820431 -0.025069\nv 0.383848 -2.201795 0.123508\nv 0.216182 -1.824085 -0.208656\nv 0.455809 -2.217747 -0.017434\nv 0.324417 -1.762477 -0.363997\nv 0.572118 -2.205649 -0.125244\nv 0.447448 -1.644988 -0.467440\nv 0.715070 -2.167346 -0.183510\nv 0.566545 -1.489505 -0.503239\nv 0.862901 -2.108664 -0.183361\nv 0.663579 -1.319699 -0.465942\nv 0.993105 -2.038540 -0.124822\nv 0.723775 -1.161420 -0.361228\nv 1.085861 -1.967650 -0.016800\nv 0.737969 -1.038765 -0.205038\nv 1.127045 -1.906785 0.124254\nv 0.703999 -0.970408 -0.021153\nv 1.110390 -1.865212 0.276870\nv 0.627040 -0.966755 0.162436\nv 1.038430 -1.849259 0.417811\nv 0.518805 -1.028362 0.317776\nv 0.922120 -1.861355 0.525622\nv 0.395774 -1.145850 0.421219\nv 0.779169 -1.899660 0.583889\nv 0.086510 -1.364582 0.276657\nv 0.165325 -1.226657 0.306952\nv 0.262062 -1.100366 0.277875\nv 0.361995 -1.004935 0.193853\nv 0.449908 -0.954894 0.067677\nv 0.512420 -0.957862 -0.081443\nv 0.540010 -1.013385 -0.230804\nv 0.528482 -1.113012 -0.357670\nv 0.479587 -1.241574 -0.442723\nv 0.400772 -1.379501 -0.473018\nv 0.304034 -1.505792 -0.443941\nv 0.204102 -1.601222 -0.359919\nv 0.116188 -1.651262 -0.233743\nv 0.053678 -1.648296 -0.084623\nv 0.026086 -1.592772 0.064739\nv 0.037616 -1.493146 0.191604\nv 0.823165 -2.050884 0.551657\nv 0.703088 -2.098548 0.551536\nv 0.597330 -2.155506 0.503986\nv 0.521989 -2.213087 0.416247\nv 0.488536 -2.262524 0.301675\nv 0.502065 -2.296292 0.177711\nv 0.560515 -2.309250 0.063231\nv 0.654988 -2.299424 -0.024338\nv 0.771100 -2.268310 -0.071665\nv 0.891175 -2.220647 -0.071545\nv 0.996935 -2.163689 -0.023994\nv 1.072274 -2.106107 0.063745\nv 1.105727 -2.056670 0.178318\nv 1.092199 -2.022901 0.302280\nv 1.033750 -2.009944 0.416761\nv 0.939277 -2.019770 0.504329\nv 0.056989 -1.417129 -0.128923\nv 0.042326 -1.387622 -0.049546\nv 0.048452 -1.334675 0.017877\nv 0.074438 -1.266350 0.063078\nv 0.116324 -1.193050 0.079178\nv 0.167735 -1.125933 0.063725\nv 0.220844 -1.075217 0.019072\nv 0.267565 -1.048623 -0.047983\nv 0.300786 -1.050199 -0.127233\nv 0.315450 -1.079707 -0.206611\nv 0.309323 -1.132654 -0.274034\nv 0.283338 -1.200978 -0.319235\nv 0.241452 -1.274278 -0.335335\nv 0.190041 -1.341396 -0.319882\nv 0.136931 -1.392113 -0.275229\nv 0.090211 -1.418706 -0.208173\nv 0.991541 -2.181738 0.303020\nv 0.960478 -2.174852 0.363861\nv 0.910271 -2.180075 0.410399\nv 0.848563 -2.196610 0.435551\nv 0.784749 -2.221941 0.435487\nv 0.728544 -2.252211 0.410217\nv 0.688504 -2.282812 0.363588\nv 0.670726 -2.309085 0.302699\nv 0.677915 -2.327031 0.236819\nv 0.708978 -2.333918 0.175979\nv 0.759185 -2.328696 0.129440\nv 0.820894 -2.312161 0.104288\nv 0.884707 -2.286830 0.104352\nv 0.940913 -2.256561 0.129622\nv 0.980952 -2.225959 0.176251\nv 0.998731 -2.199685 0.237141\nv 0.754618 -1.773825 -0.351634\nv 0.445512 -1.941771 -0.264650\nv 0.598411 -1.871910 -0.341264\nv 0.319197 -1.972774 -0.133454\nv 0.238697 -1.960198 0.032348\nv 0.216269 -1.905957 0.207516\nv 0.255325 -1.818309 0.365380\nv 0.485656 -1.599225 0.539362\nv 0.890353 -1.662451 -0.294182\nv 0.984950 -1.554741 -0.177653\nv 1.024007 -1.467093 -0.019788\nv 1.001578 -1.412854 0.155379\nv 0.349923 -1.710600 0.481909\nv 0.641865 -1.501140 0.528991\nv 0.794765 -1.431280 0.452377\nv 0.921080 -1.400277 0.321181\nv 1.623254 -0.058139 -0.150848\nv 1.920992 -0.560413 0.351398\nv 1.614233 -0.169145 -0.261481\nv 1.926915 -0.643886 0.262807\nv 1.663402 -0.262002 -0.378115\nv 1.976469 -0.717163 0.166201\nv 1.763279 -0.322574 -0.482992\nv 2.062111 -0.769088 0.076287\nv 1.898658 -0.341639 -0.560147\nv 2.170804 -0.791754 0.006752\nv 2.048927 -0.316295 -0.597831\nv 2.285997 -0.781712 -0.031816\nv 2.188930 -0.251846 -0.590833\nv 2.390156 -0.740491 -0.033546\nv 2.301512 -0.155402 -0.539197\nv 2.467423 -0.674365 0.001825\nv 2.369690 -0.041729 -0.450937\nv 2.506035 -0.593403 0.068912\nv 2.378712 0.069277 -0.340303\nv 2.500112 -0.509929 0.157503\nv 2.329543 0.162134 -0.223670\nv 2.450558 -0.436653 0.254109\nv 2.229666 0.222706 -0.118793\nv 2.364916 -0.384728 0.344023\nv 2.094287 0.241771 -0.041638\nv 2.256223 -0.362062 0.413558\nv 1.944017 0.216426 -0.003954\nv 2.141030 -0.372103 0.452126\nv 1.801733 0.150531 -0.011475\nv 2.036871 -0.413325 0.453856\nv 1.689097 0.054116 -0.063058\nv 1.959604 -0.479450 0.418485\nv 1.585242 -0.064487 -0.360483\nv 1.593970 0.042887 -0.253471\nv 1.657657 0.151468 -0.168552\nv 1.766608 0.244728 -0.118658\nv 1.904235 0.308467 -0.111382\nv 2.049588 0.332982 -0.147834\nv 2.180537 0.314541 -0.222464\nv 2.277146 0.255952 -0.323909\nv 2.324706 0.166133 -0.436726\nv 2.315979 0.058759 -0.543739\nv 2.259804 -0.054811 -0.636991\nv 2.147429 -0.151086 -0.688541\nv 2.005713 -0.206822 -0.685827\nv 1.860360 -0.231337 -0.649374\nv 1.729412 -0.212896 -0.574745\nv 1.632803 -0.154306 -0.473300\nv 1.851576 -0.077551 -0.662815\nv 1.754512 -0.063882 -0.607497\nv 1.682904 -0.020453 -0.532303\nv 1.647650 0.046123 -0.448679\nv 1.654119 0.125713 -0.369357\nv 1.701326 0.206197 -0.306413\nv 1.782084 0.275325 -0.269429\nv 1.884098 0.322570 -0.264037\nv 1.991839 0.340741 -0.291056\nv 2.088902 0.327072 -0.346374\nv 2.160511 0.283643 -0.421569\nv 2.195765 0.217067 -0.505193\nv 2.189296 0.137478 -0.584514\nv 2.226114 0.008704 -0.682163\nv 2.113755 -0.087561 -0.733699\nv 1.959316 -0.059379 -0.689834\nv 2.015022 0.143720 -0.614586\nv 1.973161 0.107889 -0.633757\nv 1.920281 0.083399 -0.636552\nv 1.864435 0.073979 -0.622546\nv 1.814122 0.081065 -0.593872\nv 1.777002 0.103576 -0.554895\nv 1.758729 0.138086 -0.511548\nv 1.762082 0.179340 -0.470432\nv 1.786552 0.221060 -0.437805\nv 1.828413 0.256893 -0.418635\nv 1.881293 0.281382 -0.415840\nv 1.937139 0.290801 -0.429844\nv 1.987452 0.283715 -0.458519\nv 2.024570 0.261205 -0.497496\nv 2.042845 0.226694 -0.540842\nv 2.039492 0.185440 -0.581959\nv 2.076011 -0.000792 -0.734242\nv 2.153120 0.065255 -0.698886\nv 1.989742 -0.491018 0.393756\nv 1.955715 -0.562370 0.334632\nv 1.960934 -0.635935 0.256558\nv 2.004606 -0.700515 0.171419\nv 2.080083 -0.746276 0.092177\nv 2.175873 -0.766252 0.030896\nv 2.277393 -0.757402 -0.003093\nv 2.369189 -0.721074 -0.004619\nv 2.437284 -0.662797 0.026554\nv 2.471312 -0.591445 0.085678\nv 2.466093 -0.517880 0.163752\nv 2.422420 -0.453301 0.248891\nv 2.346943 -0.407541 0.328134\nv 2.251154 -0.387564 0.389414\nv 2.149634 -0.396414 0.423404\nv 2.057838 -0.432742 0.424929\nv 2.272074 -0.438359 0.438673\nv 2.170554 -0.447208 0.472664\nv 2.078759 -0.483537 0.474188\nv 2.010663 -0.541813 0.443016\nv 1.976635 -0.613165 0.383892\nv 1.981854 -0.686730 0.305817\nv 2.025527 -0.751310 0.220678\nv 2.101003 -0.797070 0.141437\nv 2.196794 -0.817047 0.080156\nv 2.298314 -0.808197 0.046166\nv 2.390109 -0.771869 0.044641\nv 2.458205 -0.713592 0.075814\nv 2.492232 -0.642240 0.134938\nv 2.487013 -0.568675 0.213012\nv 2.443341 -0.504096 0.298151\nv 2.367864 -0.458335 0.377393\nv 2.458114 -1.420465 0.381856\nv 2.446310 -1.410195 0.369510\nv 2.449583 -1.420356 0.344998\nv 2.469010 -1.430890 0.330259\nv 2.481426 -1.440292 0.331393\nv 2.487318 -1.443179 0.338042\nv 2.482575 -1.440668 0.362532\nv 2.435650 -1.386773 0.323467\nv 2.429746 -1.381620 0.371328\nv 2.474173 -1.406125 0.300120\nv 2.515998 -1.437771 0.305923\nv 2.527194 -1.444486 0.330498\nv 2.522778 -1.436007 0.377465\nv 2.454219 -1.399631 0.406579\nv 2.430851 -1.292167 0.375268\nv 2.457505 -1.277198 0.290487\nv 2.514655 -1.312284 0.255045\nv 2.579113 -1.349214 0.278885\nv 2.481628 -1.418869 0.411230\nv 2.566163 -1.351069 0.381385\nv 2.520232 -1.322599 0.441505\nv 2.481713 -1.312557 0.422294\nv 2.588793 -1.361804 0.317255\nv 2.650998 -1.216998 0.313569\nv 2.637180 -1.202623 0.382595\nv 2.578871 -1.173572 0.439716\nv 2.528897 -1.160636 0.427957\nv 2.473162 -1.163954 0.391837\nv 2.486812 -1.185991 0.286411\nv 2.563513 -1.200965 0.250526\nv 2.629210 -1.208289 0.279070\nv 2.694240 -1.091362 0.299049\nv 2.688587 -1.075872 0.370373\nv 2.626437 -1.040931 0.435452\nv 2.666122 -1.102545 0.264501\nv 2.604431 -1.095248 0.250411\nv 2.526613 -1.090707 0.307129\nv 2.497126 -1.062893 0.384632\nv 2.557580 -1.049906 0.425822\nv 2.427788 -1.421077 0.767792\nv 2.410443 -1.414130 0.741715\nv 2.416892 -1.415110 0.710305\nv 2.446879 -1.425044 0.692658\nv 2.474256 -1.431038 0.700191\nv 2.482752 -1.432804 0.723236\nv 2.475968 -1.431739 0.746829\nv 2.451249 -1.427290 0.768591\nv 2.357392 -1.347799 0.730877\nv 2.393822 -1.376235 0.678094\nv 2.445659 -1.404232 0.652317\nv 2.500278 -1.411980 0.668402\nv 2.518481 -1.412144 0.705713\nv 2.493482 -1.398171 0.762181\nv 2.453487 -1.389265 0.798440\nv 2.406744 -1.369815 0.792679\nv 2.515050 -1.292944 0.612468\nv 2.554031 -1.288391 0.663774\nv 2.518378 -1.264699 0.738999\nv 2.397640 -1.230802 0.771672\nv 2.352515 -1.242805 0.690254\nv 2.399880 -1.265281 0.616344\nv 2.463119 -1.291877 0.584167\nv 2.465790 -1.238513 0.794978\nv 2.365320 -1.143849 0.656609\nv 2.410883 -1.160618 0.577606\nv 2.477868 -1.171139 0.542115\nv 2.402481 -1.117161 0.733363\nv 2.480558 -1.122273 0.751975\nv 2.535559 -1.142820 0.705554\nv 2.574993 -1.163681 0.624134\nv 2.533051 -1.180838 0.559750\nv 2.595258 -1.021133 0.572758\nv 2.559640 -0.995783 0.661795\nv 2.498510 -0.979329 0.705800\nv 2.543678 -1.038207 0.507785\nv 2.486285 -1.073261 0.512909\nv 2.421939 -1.070266 0.562969\nv 2.396317 -1.045621 0.619649\nv 2.409117 -1.013477 0.699167\nv 2.361635 -1.146519 1.102936\nv 2.331435 -1.140843 1.111950\nv 2.314117 -1.152556 1.108892\nv 2.305754 -1.166675 1.096030\nv 2.316934 -1.191476 1.076253\nv 2.342006 -1.200506 1.061357\nv 2.360434 -1.197050 1.066741\nv 2.380024 -1.170858 1.081125\nv 2.381494 -1.096362 1.076051\nv 2.408317 -1.149427 1.031036\nv 2.370986 -1.195848 0.996326\nv 2.320845 -1.210153 0.998038\nv 2.254589 -1.160436 1.065220\nv 2.280635 -1.196655 1.027390\nv 2.280483 -1.117074 1.092520\nv 2.324145 -1.087553 1.098183\nv 2.197987 -1.101460 0.959213\nv 2.234608 -1.145825 0.916543\nv 2.291899 -1.156390 0.880497\nv 2.367524 -1.129257 0.884141\nv 2.236201 -1.048331 1.005223\nv 2.309773 -1.013897 1.009901\nv 2.362653 -1.023664 0.992213\nv 2.406385 -1.073603 0.932751\nv 2.389286 -0.997718 0.855805\nv 2.346204 -0.942460 0.904935\nv 2.287138 -0.923640 0.922986\nv 2.217926 -0.941305 0.903746\nv 2.178340 -1.008156 0.842846\nv 2.366738 -1.068709 0.800301\nv 2.223126 -1.051406 0.802474\nv 2.286362 -1.080797 0.783229\nv 2.394866 -0.915622 0.785825\nv 2.343490 -0.841171 0.823491\nv 2.264115 -0.820155 0.831033\nv 2.207612 -0.853387 0.805916\nv 2.371685 -0.996256 0.739739\nv 2.286616 -0.993170 0.709204\nv 2.223897 -0.954219 0.719138\nv 2.185849 -0.910432 0.749697\nv 2.424089 -0.819443 0.715228\nv 2.339042 -0.757233 0.759124\nv 2.244227 -0.766681 0.766023\nv 2.427818 -0.932737 0.723020\nv 2.509179 -0.872952 0.673194\nv 2.574464 -0.892686 0.616013\nv 2.610360 -0.917082 0.507947\nv 2.600772 -0.993303 0.470028\nv 2.648952 -0.938746 0.430020\nv 2.390769 -0.995162 0.706181\nv 2.528401 -1.026101 0.442822\nv 2.705450 -0.961026 0.341128\nv 2.712309 -0.989042 0.271247\nv 2.671654 -1.019840 0.235219\nv 2.586576 -1.035443 0.227840\nv 2.496489 -1.047931 0.277691\nv 2.462925 -1.029882 0.365693\nv 2.448852 -1.028639 0.424189\nv 2.382734 -1.023871 0.508831\nv 2.333352 -1.002741 0.581947\nv 2.344811 -1.009033 0.654934\nv 2.267631 -0.947789 0.638904\nv 2.219001 -0.913376 0.670577\nv 2.181780 -0.860039 0.699574\nv 2.203290 -0.802855 0.748007\nv 2.549359 -0.797719 0.535251\nv 2.497888 -0.770945 0.595589\nv 2.585326 -0.817174 0.468758\nv 2.622653 -0.826266 0.389460\nv 2.660586 -0.840540 0.283982\nv 2.665172 -0.885657 0.215745\nv 2.310264 -0.694181 0.691931\nv 2.223202 -0.712268 0.710501\nv 2.420527 -0.726001 0.649229\nv 2.183692 -0.747865 0.704595\nv 2.167818 -0.810590 0.667957\nv 2.197701 -0.857120 0.621152\nv 2.247393 -0.876634 0.569736\nv 2.305819 -0.892561 0.523184\nv 2.359446 -0.916353 0.477552\nv 2.423577 -0.951605 0.399456\nv 2.440742 -0.968404 0.334558\nv 2.485622 -0.978877 0.254820\nv 2.555184 -0.971246 0.198759\nv 2.627858 -0.936401 0.180120\nv 2.537881 -0.644137 0.387478\nv 2.478510 -0.616886 0.467050\nv 2.579527 -0.685636 0.302305\nv 2.604701 -0.733623 0.211598\nv 2.605230 -0.781530 0.141668\nv 2.402414 -0.594356 0.547250\nv 2.281770 -0.602176 0.625111\nv 2.189153 -0.646525 0.652126\nv 2.253877 -0.529620 0.556286\nv 2.153677 -0.577930 0.609574\nv 2.178499 -0.478541 0.436263\nv 2.083875 -0.523671 0.503109\nv 2.013054 -0.569685 0.552671\nv 2.081981 -0.625236 0.621936\nv 2.100171 -0.695604 0.636647\nv 2.148044 -0.712735 0.660512\nv 2.360111 -0.515446 0.462613\nv 2.428555 -0.533780 0.369823\nv 2.471238 -0.550995 0.307399\nv 2.511336 -0.586927 0.224919\nv 2.526870 -0.646474 0.144826\nv 2.525414 -0.709966 0.098136\nv 2.416027 -0.681310 0.068953\nv 2.436781 -0.597567 0.107413\nv 2.414046 -0.554953 0.151239\nv 2.368743 -0.519636 0.214872\nv 2.318974 -0.495754 0.267274\nv 2.260166 -0.480760 0.332756\nv 2.550383 -0.851041 0.107283\nv 2.488975 -0.771522 0.070085\nv 2.424307 -0.837553 0.062914\nv 2.353430 -0.870423 0.115255\nv 2.327793 -0.764165 0.075363\nv 2.478880 -0.900067 0.113551\nv 2.404709 -0.933178 0.174661\nv 2.345137 -0.637419 0.091250\nv 2.377595 -0.606598 0.098238\nv 2.274565 -0.753040 0.166661\nv 2.301123 -0.848137 0.218732\nv 2.345961 -0.914974 0.267970\nv 2.341564 -0.851619 0.388387\nv 2.287622 -0.792734 0.325587\nv 2.263828 -0.710314 0.246365\nv 2.315680 -0.614567 0.127279\nv 2.307512 -0.863165 0.427497\nv 2.177859 -0.727738 0.269228\nv 2.157067 -0.602121 0.217346\nv 2.268923 -0.606123 0.173283\nv 2.108341 -0.738600 0.297560\nv 2.081400 -0.600647 0.273802\nv 2.255818 -0.862594 0.474459\nv 2.204501 -0.855035 0.517149\nv 2.140364 -0.833654 0.443806\nv 2.188514 -0.831705 0.384859\nv 2.052571 -0.737490 0.370660\nv 2.000765 -0.625660 0.354304\nv 2.000955 -0.761041 0.466470\nv 1.934257 -0.672707 0.452990\nv 1.915706 -0.814327 0.564952\nv 2.061878 -0.806358 0.530192\nv 1.964868 -0.842302 0.604239\nv 1.867750 -0.719927 0.551639\nv 2.161158 -0.818326 0.581649\nv 2.136009 -0.770873 0.631593\nv 2.092478 -0.764335 0.614325\nv 2.000506 -0.807326 0.670819\nv 2.245679 -0.807064 0.356339\nv 1.827464 -0.845028 0.657677\nv 1.786676 -0.767718 0.638740\nv 1.867191 -0.865969 0.692278\nv 1.887626 -0.845629 0.755711\nv 1.805098 -0.832068 0.784204\nv 1.783768 -0.848174 0.765672\nv 1.940677 -0.598623 0.485857\nv 2.012368 -0.548093 0.393019\nv 1.881897 -0.667506 0.593401\nv 1.812243 -0.707915 0.688828\nv 1.738897 -0.799952 0.739523\nv 1.751713 -0.765651 0.765549\nv 2.094538 -0.521529 0.297807\nv 2.192826 -0.518375 0.234439\nv 1.918831 -0.637958 0.649504\nv 1.976174 -0.671937 0.703105\nv 2.000242 -0.738074 0.712447\nv 1.848448 -0.680772 0.742335\nv 1.783242 -0.741103 0.801898\nv 1.808573 -0.764436 0.818757\nv 1.901390 -0.705916 0.775427\nv 1.904679 -0.777936 0.797654\nv 1.815814 -0.790317 0.811131\nv 1.763151 -0.841544 0.748430\nv 2.347207 -0.559788 0.129472\nv 2.307997 -0.536935 0.165017\nv 2.252801 -0.527764 0.214822\nv 1.306815 0.345572 0.221760\nv 1.970246 -0.004896 0.119119\nv 1.306815 0.150297 0.182917\nv 1.885066 -0.135583 0.088089\nv 1.306815 -0.015248 0.072303\nv 1.812853 -0.246374 -0.000274\nv 1.306815 -0.125862 -0.093242\nv 1.764602 -0.320402 -0.132520\nv 1.306815 -0.164704 -0.288516\nv 1.747659 -0.346397 -0.288516\nv 1.306815 -0.125862 -0.483790\nv 1.764602 -0.320402 -0.444511\nv 1.306815 -0.015248 -0.649335\nv 1.812853 -0.246374 -0.576757\nv 1.306815 0.150297 -0.759949\nv 1.885066 -0.135583 -0.665122\nv 1.306815 0.345572 -0.798791\nv 1.970246 -0.004896 -0.696151\nv 1.306814 0.540847 -0.759949\nv 2.055427 0.125790 -0.665122\nv 1.306815 0.706392 -0.649335\nv 2.127640 0.236580 -0.576757\nv 1.306815 0.817006 -0.483790\nv 2.175889 0.310608 -0.444511\nv 1.306814 0.855849 -0.288516\nv 2.192834 0.336604 -0.288516\nv 1.306815 0.817006 -0.093242\nv 2.175889 0.310608 -0.132520\nv 1.306815 0.706392 0.072303\nv 2.127640 0.236580 -0.000274\nv 1.306814 0.540847 0.182917\nv 2.055427 0.125790 0.088089\nv 1.129849 0.186960 0.094406\nv 1.129849 0.345572 0.125957\nv 1.129849 0.504185 0.094406\nv 1.129849 0.638649 0.004560\nv 1.129849 0.728495 -0.129904\nv 1.129849 0.760046 -0.288516\nv 1.129849 0.728495 -0.447127\nv 1.129849 0.638649 -0.581593\nv 1.129849 0.504185 -0.671439\nv 1.129849 0.345572 -0.702988\nv 1.129849 0.186960 -0.671439\nv 1.129848 0.052495 -0.581593\nv 1.129849 -0.037351 -0.447127\nv 1.129849 -0.068901 -0.288516\nv 1.129849 -0.037351 -0.129904\nv 1.129848 0.052495 0.004560\nv 2.157869 0.024060 0.017383\nv 2.088680 -0.082091 0.042586\nv 2.019492 -0.188241 0.017383\nv 1.960838 -0.278231 -0.054391\nv 1.921646 -0.338360 -0.161808\nv 1.907883 -0.359475 -0.288516\nv 1.921646 -0.338360 -0.415223\nv 1.960838 -0.278231 -0.522641\nv 2.019492 -0.188241 -0.594414\nv 2.088680 -0.082091 -0.619618\nv 2.157869 0.024060 -0.594414\nv 2.216522 0.114050 -0.522641\nv 2.255715 0.174179 -0.415223\nv 2.269477 0.195294 -0.288516\nv 2.255715 0.174179 -0.161808\nv 2.216522 0.114050 -0.054391\nv 0.996819 0.125302 -0.288516\nv 0.996819 0.142069 -0.204222\nv 0.996818 0.189817 -0.132761\nv 0.996819 0.261278 -0.085012\nv 0.996819 0.345572 -0.068245\nv 0.996819 0.429866 -0.085012\nv 0.996819 0.501327 -0.132761\nv 0.996819 0.549076 -0.204222\nv 0.996818 0.565843 -0.288516\nv 0.996819 0.549076 -0.372810\nv 0.996819 0.501327 -0.444271\nv 0.996819 0.429866 -0.492019\nv 0.996819 0.345572 -0.508787\nv 0.996819 0.261278 -0.492019\nv 0.996818 0.189817 -0.444271\nv 0.996819 0.142069 -0.372810\nv 2.273794 0.007296 -0.288516\nv 2.266481 -0.003926 -0.221178\nv 2.245652 -0.035882 -0.164091\nv 2.214481 -0.083707 -0.125947\nv 2.177710 -0.140120 -0.112552\nv 2.140941 -0.196534 -0.125947\nv 2.109768 -0.244358 -0.164091\nv 2.088939 -0.276313 -0.221178\nv 2.081625 -0.287535 -0.288516\nv 2.088939 -0.276313 -0.355854\nv 2.109768 -0.244358 -0.412941\nv 2.140941 -0.196534 -0.451085\nv 2.177710 -0.140120 -0.464479\nv 2.214481 -0.083707 -0.451085\nv 2.245652 -0.035882 -0.412941\nv 2.266481 -0.003926 -0.355854\nv 1.653766 0.213423 -0.761987\nv 1.528826 -0.097187 -0.623311\nv 1.586149 0.045322 -0.725946\nv 1.490524 -0.192409 -0.469705\nv 1.477075 -0.225847 -0.288516\nv 1.490524 -0.192409 -0.107326\nv 1.528826 -0.097187 0.046279\nv 1.653766 0.213423 0.184955\nv 1.721383 0.381524 -0.725946\nv 1.778707 0.524033 -0.623311\nv 1.817008 0.619255 -0.469705\nv 1.830458 0.652692 -0.288516\nv 1.586149 0.045322 0.148915\nv 1.721383 0.381524 0.148915\nv 1.778707 0.524033 0.046279\nv 1.817008 0.619255 -0.107326\nv -0.786019 -2.928538 0.601628\nv -0.787557 -2.907031 0.601650\nv -0.907193 -2.908894 0.550182\nv -0.902064 -2.928018 0.550057\nv -1.023440 -2.956840 0.481313\nv -1.017128 -2.970083 0.481210\nv -1.101541 -3.010835 0.441949\nv -1.087422 -3.020051 0.441933\nv -1.106929 -3.145379 0.395161\nv -1.091562 -3.144946 0.395144\nv -1.072088 -3.235354 0.377412\nv -1.077035 -3.157159 0.277621\nv -1.064921 -3.214447 0.290776\nv -1.021403 -3.201481 0.168705\nv -1.038110 -3.154783 0.137595\nv -1.077220 -3.018806 0.314615\nv -1.074982 -3.018031 0.239323\nv -1.042151 -3.030779 0.086701\nv -1.064326 -2.943164 0.204697\nv -1.021818 -2.957978 0.044387\nv -0.975907 -2.855559 -0.005333\nv -1.035428 -2.841887 0.171577\nv -1.011729 -2.818190 0.239631\nv -0.772762 -2.912492 0.717615\nv -0.907387 -2.923344 0.685008\nv -1.020136 -2.965400 0.658615\nv -1.097976 -3.067994 0.586489\nv -1.100485 -3.190069 0.544074\nv -0.770828 -2.937952 0.775106\nv -0.903720 -2.963398 0.760914\nv -0.999774 -3.027202 0.760806\nv -1.046470 -3.163512 0.760373\nv -1.037090 -3.238383 0.760190\nv -1.074062 -3.238380 0.527702\nv -0.893578 -2.804472 0.281931\nv -0.782004 -2.795410 0.279693\nv -0.698799 -2.801319 0.275004\nv -0.675365 -2.938091 0.585189\nv -0.661901 -2.921910 0.586087\nv -0.665882 -2.925934 0.710389\nv -0.560051 -2.971251 0.514855\nv -0.543453 -2.950871 0.514979\nv -0.555355 -2.970095 0.691185\nv -0.932929 -3.089451 0.852653\nv -0.866542 -3.038278 0.852679\nv -0.963457 -3.158557 0.852644\nv -0.771187 -3.008775 0.852663\nv -0.671917 -2.952009 0.761131\nv -0.685978 -3.046776 0.852632\nv -0.583250 -3.009146 0.760837\nv -0.632573 -3.092436 0.852583\nv -0.823277 -3.121259 0.885215\nv -0.770024 -3.097687 0.885199\nv -0.717890 -3.127336 0.885165\nv -0.695662 -3.148001 0.885157\nv -0.599302 -3.142824 0.852540\nv -0.677427 -3.175218 0.885148\nv -0.587659 -3.190575 0.852484\nv -0.670639 -3.215333 0.885132\nv -0.850614 -3.153811 0.885202\nv -0.852737 -3.194399 0.885187\nv -0.943579 -3.238376 0.852558\nv -0.685633 -3.238381 0.885102\nv -0.840481 -3.238389 0.885136\nv -0.986468 -2.855529 -0.011956\nv -1.036222 -2.962744 0.037093\nv -1.057487 -3.036565 0.080302\nv -1.054966 -3.160047 0.131091\nv -0.953122 -2.854421 -0.068876\nv -0.985483 -2.957746 -0.057919\nv -1.019390 -3.058597 -0.042315\nv -1.009796 -3.167722 -0.004136\nv -0.986530 -3.201493 0.053273\nv -0.905391 -3.053835 -0.136203\nv -0.895036 -2.957297 -0.125308\nv -0.887260 -2.854405 -0.108414\nv -0.907334 -3.150203 -0.141691\nv -0.891522 -3.201486 -0.107920\nv -0.798525 -3.145032 -0.174300\nv -0.801578 -3.042581 -0.168863\nv -0.802988 -2.964290 -0.145041\nv -0.812682 -2.854389 -0.126191\nv -0.707237 -2.954707 -0.130756\nv -0.730402 -2.854357 -0.117064\nv -0.687061 -3.034578 -0.157076\nv -0.669942 -3.140672 -0.145304\nv -0.791184 -3.201484 -0.146210\nv -0.683376 -3.201475 -0.124516\nv -0.680277 -2.854345 -0.083039\nv -0.605010 -2.955611 -0.068740\nv -0.577713 -3.033063 -0.043603\nv -0.584799 -3.145787 -0.010707\nv -0.600187 -3.201477 0.001230\nv -0.541462 -2.935125 0.085168\nv -0.620955 -2.855412 -0.016222\nv -0.531662 -3.029833 0.116483\nv -0.555642 -3.146120 0.137200\nv -0.590839 -3.201479 0.159142\nv -0.631776 -2.855329 -0.009756\nv -0.566744 -2.944517 0.088975\nv -0.558824 -2.932812 0.213749\nv -0.601732 -2.841651 0.141089\nv -0.552408 -3.033704 0.126091\nv -0.538244 -3.027855 0.247684\nv -0.571163 -3.144282 0.146245\nv -0.556490 -3.151489 0.278832\nv -0.567925 -3.215084 0.277742\nv -0.545355 -3.238381 0.401191\nv -0.515299 -3.158295 0.421111\nv -0.504552 -3.045186 0.466680\nv -0.534684 -3.037446 0.354751\nv -0.615730 -2.815993 0.209595\nv -0.475195 -3.034925 0.466812\nv -0.476549 -3.052179 0.634725\nv -0.494045 -3.160833 0.418894\nv -0.475884 -3.159244 0.586422\nv -0.534676 -3.238383 0.576237\nv -0.528877 -3.174860 0.760344\nv -0.528487 -3.075514 0.760567\nv -0.620069 -3.238380 0.852422\nv -0.560282 -3.238374 0.760130\nv -1.043198 -3.241457 0.769490\nv -0.947325 -3.241451 0.864192\nv -0.841622 -3.241463 0.897592\nv -0.682861 -3.241456 0.897559\nv -0.615641 -3.241454 0.864053\nv -0.554343 -3.241448 0.769429\nv -0.528091 -3.241457 0.580889\nv -0.539039 -3.241456 0.401420\nv -0.562180 -3.218158 0.274852\nv -0.585672 -3.204554 0.153256\nv -0.595257 -3.204551 -0.008646\nv -0.680548 -3.204550 -0.137570\nv -0.791078 -3.204558 -0.159811\nv -0.893952 -3.204560 -0.120554\nv -0.991361 -3.204567 0.044711\nv -1.027114 -3.204555 0.163059\nv -1.071733 -3.218158 0.288215\nv -1.079081 -3.238428 0.377041\nv -1.081105 -3.241456 0.531129\nv -1.071733 -3.270523 0.288214\nv -1.079080 -3.293819 0.377041\nv -1.081104 -3.293821 0.531128\nv -1.043198 -3.293823 0.769490\nv -0.947324 -3.293815 0.864192\nv -0.841621 -3.293829 0.897592\nv -0.682861 -3.293821 0.897558\nv -0.615641 -3.293820 0.864052\nv -0.554343 -3.293814 0.769428\nv -0.528090 -3.293823 0.580889\nv -0.539038 -3.293821 0.401420\nv -0.562179 -3.270524 0.274852\nv -0.585672 -3.256919 0.153255\nv -1.027114 -3.256921 0.163059\nv -0.893951 -3.294219 -0.120554\nv -0.991360 -3.294219 0.044711\nv -1.027113 -3.294219 0.163059\nv -0.585671 -3.294219 0.153256\nv -0.595255 -3.294219 -0.008646\nv -0.680546 -3.294219 -0.137570\nv -0.791077 -3.294219 -0.159812\nv -0.903816 -2.903723 0.409087\nv -0.905746 -2.925559 0.458751\nv -0.790406 -2.914967 0.482225\nv -0.790793 -2.895555 0.429593\nv -1.018182 -2.931984 0.351433\nv -1.025488 -2.953660 0.369957\nv -1.018342 -2.949813 0.400882\nv -0.790138 -2.871559 0.387279\nv -0.787987 -2.841679 0.340474\nv -0.914136 -2.845706 0.325947\nv -0.912999 -2.878417 0.370259\nv -1.015141 -2.886044 0.280661\nv -1.021929 -2.906811 0.284496\nv -1.017217 -2.915387 0.319981\nv -0.685314 -2.868801 0.376137\nv -0.688271 -2.841438 0.325026\nv -0.597187 -2.896330 0.344932\nv -0.599270 -2.886341 0.301924\nv -0.604511 -2.868714 0.294449\nv -0.577213 -2.940670 0.448258\nv -0.575888 -2.944491 0.419575\nv -0.587015 -2.919345 0.393668\nv -0.682337 -2.889899 0.427220\nv -0.679472 -2.908538 0.484016\nv -0.578191 -2.929036 0.441868\nv -0.680449 -2.896904 0.477628\nv -0.791384 -2.903331 0.475837\nv -0.906724 -2.913923 0.452362\nv -1.019319 -2.938179 0.394494\nv -1.018984 -2.925163 0.362409\nv -0.902406 -2.898798 0.421672\nv -0.791527 -2.890346 0.442937\nv -0.682278 -2.884057 0.442476\nv -0.585389 -2.913921 0.408412\nv -1.017454 -2.902199 0.319002\nv -1.016298 -2.881953 0.293736\nv -0.915292 -2.841615 0.339021\nv -0.789142 -2.837587 0.353549\nv -0.689427 -2.837347 0.338100\nv -0.605667 -2.864622 0.307524\nv -0.599852 -2.881745 0.340187\nv -0.686410 -2.854633 0.370879\nv -0.790442 -2.856759 0.383933\nv -0.915448 -2.863334 0.367673\nv -1.134076 -2.073764 0.125220\nv -1.100784 -2.840772 0.063859\nv -1.121226 -2.082448 0.281435\nv -1.077482 -2.848263 0.183241\nv -1.049602 -2.093997 0.420646\nv -1.009420 -2.858189 0.294717\nv -0.930108 -2.106653 0.521664\nv -0.906959 -2.869041 0.381315\nv -0.780934 -2.118488 0.569105\nv -0.785697 -2.879164 0.429853\nv -0.624792 -2.127701 0.555750\nv -0.664096 -2.887017 0.432939\nv -0.487609 -2.132838 0.485339\nv -0.560669 -2.891407 0.390105\nv -0.386351 -2.133204 0.365386\nv -0.491161 -2.891663 0.307871\nv -0.336248 -2.128763 0.214291\nv -0.466153 -2.887750 0.198757\nv -0.349097 -2.120078 0.058076\nv -0.489454 -2.880259 0.079375\nv -0.420722 -2.108528 -0.081137\nv -0.557517 -2.870332 -0.032100\nv -0.540217 -2.095873 -0.182154\nv -0.659978 -2.859481 -0.118699\nv -0.689391 -2.084038 -0.229594\nv -0.781240 -2.849359 -0.167237\nv -0.845533 -2.074826 -0.216238\nv -0.902840 -2.841503 -0.170322\nv -0.984872 -2.069637 -0.144119\nv -1.006268 -2.837114 -0.127489\nv -1.086195 -2.069264 -0.024214\nv -1.075776 -2.836857 -0.045255\nv -1.099357 -1.937180 0.285132\nv -1.111786 -1.928778 0.134029\nv -1.065471 -1.924427 -0.010516\nv -0.967464 -1.924788 -0.126497\nv -0.832685 -1.929805 -0.196257\nv -0.681653 -1.938717 -0.209175\nv -0.537360 -1.950165 -0.163286\nv -0.421775 -1.962406 -0.065576\nv -0.352495 -1.973576 0.069081\nv -0.340066 -1.981978 0.220184\nv -0.377305 -1.987318 0.372941\nv -0.478375 -1.986952 0.492687\nv -0.619167 -1.980950 0.550470\nv -0.770199 -1.972039 0.563388\nv -0.914492 -1.960592 0.517499\nv -1.030077 -1.948350 0.419788\nv -0.751339 -1.850779 0.469324\nv -0.858293 -1.842294 0.435310\nv -0.943969 -1.833221 0.362884\nv -0.995321 -1.824939 0.263071\nv -1.004534 -1.818712 0.151069\nv -0.970204 -1.815487 0.043927\nv -0.897558 -1.815754 -0.042042\nv -0.797655 -1.819474 -0.093750\nv -0.685705 -1.826079 -0.103325\nv -0.578750 -1.834564 -0.069312\nv -0.493075 -1.843638 0.003116\nv -0.441722 -1.851918 0.102928\nv -0.432509 -1.858146 0.214931\nv -0.384043 -1.902884 0.366993\nv -0.485102 -1.902527 0.486719\nv -0.639389 -1.857384 0.459749\nv -0.583406 -1.776776 0.258793\nv -0.621062 -1.776637 0.303356\nv -0.672847 -1.774709 0.330159\nv -0.730876 -1.771286 0.335122\nv -0.786316 -1.766887 0.317490\nv -0.830726 -1.762184 0.279949\nv -0.857345 -1.757891 0.228210\nv -0.862121 -1.754664 0.170154\nv -0.844325 -1.752992 0.114618\nv -0.806669 -1.753130 0.070055\nv -0.754884 -1.755058 0.043252\nv -0.696855 -1.758482 0.038289\nv -0.641416 -1.762880 0.055921\nv -0.597005 -1.767583 0.093462\nv -0.570387 -1.771877 0.145201\nv -0.565611 -1.775104 0.203256\nv -0.507322 -1.827416 0.433629\nv -0.437965 -1.827668 0.351484\nv -0.276676 -1.301333 0.457017\nv -0.631338 -1.958341 0.583740\nv -0.179644 -1.471140 0.419720\nv -0.501134 -2.028466 0.525199\nv -0.119448 -1.629419 0.315006\nv -0.408378 -2.099356 0.417180\nv -0.105254 -1.752074 0.158818\nv -0.367193 -2.160221 0.276124\nv -0.139222 -1.820431 -0.025069\nv -0.383848 -2.201795 0.123508\nv -0.216182 -1.824085 -0.208656\nv -0.455809 -2.217747 -0.017434\nv -0.324417 -1.762477 -0.363997\nv -0.572118 -2.205649 -0.125244\nv -0.447448 -1.644988 -0.467440\nv -0.715070 -2.167346 -0.183510\nv -0.566545 -1.489505 -0.503239\nv -0.862901 -2.108664 -0.183361\nv -0.663579 -1.319699 -0.465942\nv -0.993105 -2.038540 -0.124822\nv -0.723775 -1.161420 -0.361228\nv -1.085861 -1.967650 -0.016800\nv -0.737969 -1.038765 -0.205038\nv -1.127045 -1.906785 0.124254\nv -0.703999 -0.970408 -0.021153\nv -1.110390 -1.865212 0.276870\nv -0.627040 -0.966755 0.162436\nv -1.038430 -1.849259 0.417811\nv -0.518805 -1.028362 0.317776\nv -0.922120 -1.861355 0.525622\nv -0.395774 -1.145850 0.421219\nv -0.779169 -1.899660 0.583889\nv -0.086510 -1.364582 0.276657\nv -0.165325 -1.226657 0.306952\nv -0.262062 -1.100366 0.277875\nv -0.361995 -1.004935 0.193853\nv -0.449908 -0.954894 0.067677\nv -0.512420 -0.957862 -0.081443\nv -0.540010 -1.013385 -0.230804\nv -0.528482 -1.113012 -0.357670\nv -0.479587 -1.241574 -0.442723\nv -0.400772 -1.379501 -0.473018\nv -0.304034 -1.505792 -0.443941\nv -0.204102 -1.601222 -0.359919\nv -0.116188 -1.651262 -0.233743\nv -0.053678 -1.648296 -0.084623\nv -0.026086 -1.592772 0.064739\nv -0.037616 -1.493146 0.191604\nv -0.823165 -2.050884 0.551657\nv -0.703088 -2.098548 0.551536\nv -0.597330 -2.155506 0.503986\nv -0.521989 -2.213087 0.416247\nv -0.488536 -2.262524 0.301675\nv -0.502065 -2.296292 0.177711\nv -0.560515 -2.309250 0.063231\nv -0.654988 -2.299424 -0.024338\nv -0.771100 -2.268310 -0.071665\nv -0.891175 -2.220647 -0.071545\nv -0.996935 -2.163689 -0.023994\nv -1.072274 -2.106107 0.063745\nv -1.105727 -2.056670 0.178318\nv -1.092199 -2.022901 0.302280\nv -1.033750 -2.009944 0.416761\nv -0.939277 -2.019770 0.504329\nv -0.056989 -1.417129 -0.128923\nv -0.042326 -1.387622 -0.049546\nv -0.048452 -1.334675 0.017877\nv -0.074438 -1.266350 0.063078\nv -0.116324 -1.193050 0.079178\nv -0.167735 -1.125933 0.063725\nv -0.220844 -1.075217 0.019072\nv -0.267565 -1.048623 -0.047983\nv -0.300786 -1.050199 -0.127233\nv -0.315450 -1.079707 -0.206611\nv -0.309323 -1.132654 -0.274034\nv -0.283338 -1.200978 -0.319235\nv -0.241452 -1.274278 -0.335335\nv -0.190041 -1.341396 -0.319882\nv -0.136931 -1.392113 -0.275229\nv -0.090211 -1.418706 -0.208173\nv -0.991541 -2.181738 0.303020\nv -0.960478 -2.174852 0.363861\nv -0.910271 -2.180075 0.410399\nv -0.848563 -2.196610 0.435551\nv -0.784749 -2.221941 0.435487\nv -0.728544 -2.252211 0.410217\nv -0.688504 -2.282812 0.363588\nv -0.670726 -2.309085 0.302699\nv -0.677915 -2.327031 0.236819\nv -0.708978 -2.333918 0.175979\nv -0.759185 -2.328696 0.129440\nv -0.820894 -2.312161 0.104288\nv -0.884707 -2.286830 0.104352\nv -0.940913 -2.256561 0.129622\nv -0.980952 -2.225959 0.176251\nv -0.998731 -2.199685 0.237141\nv -0.754618 -1.773825 -0.351634\nv -0.445512 -1.941771 -0.264650\nv -0.598411 -1.871910 -0.341264\nv -0.319197 -1.972774 -0.133454\nv -0.238697 -1.960198 0.032348\nv -0.216269 -1.905957 0.207516\nv -0.255325 -1.818309 0.365380\nv -0.485656 -1.599225 0.539362\nv -0.890353 -1.662451 -0.294182\nv -0.984950 -1.554741 -0.177653\nv -1.024007 -1.467093 -0.019788\nv -1.001578 -1.412854 0.155379\nv -0.349923 -1.710600 0.481909\nv -0.641865 -1.501140 0.528991\nv -0.794765 -1.431280 0.452377\nv -0.921080 -1.400277 0.321181\nv 0.000000 -0.840689 0.558902\nv 0.000000 -1.217591 0.558902\nv 0.000000 -1.417026 0.588448\nv 0.000000 -1.586917 0.470263\nv 0.000000 -1.697714 0.086165\nv 0.000000 -1.727260 -0.305320\nv 0.000000 -1.646008 -0.608166\nv 0.000000 -1.431799 -0.726350\nv 0.000000 -1.210205 -0.726350\nv 0.000000 -0.945065 -0.563847\nv 0.000000 -0.840689 -0.497369\nv -0.262299 -1.417026 0.588515\nv -0.262309 -1.217591 0.558970\nv -0.262309 -0.840689 0.558970\nv -0.262665 -0.840689 -0.497300\nv -0.262688 -0.945065 -0.563779\nv -0.262742 -1.210205 -0.726282\nv -0.262742 -1.431799 -0.726282\nv -0.262703 -1.646008 -0.608099\nv -0.262600 -1.727260 -0.305251\nv -0.262468 -1.697714 0.086233\nv -0.262338 -1.586917 0.470332\nv -0.480989 -1.677992 -0.286115\nv -0.480867 -1.651029 0.071141\nv -0.480749 -1.549919 0.364306\nv -0.480713 -1.394884 0.461361\nv -0.480722 -1.212886 0.437097\nv -0.480722 -0.840704 0.502545\nv -0.481047 -0.840704 -0.461371\nv -0.481068 -0.966839 -0.522038\nv -0.481118 -1.206145 -0.670333\nv -0.481118 -1.408365 -0.670333\nv -0.481081 -1.603845 -0.562481\nv -0.649797 -1.156924 -0.495856\nv -0.649804 -1.342083 -0.512200\nv -0.649777 -1.484589 -0.433576\nv -0.649708 -1.538643 -0.232103\nv -0.649621 -1.518986 0.028338\nv -0.649535 -1.445276 0.240307\nv -0.649507 -1.332255 0.311061\nv -0.649515 -1.199577 0.293372\nv -0.649515 -0.840746 0.293372\nv -0.649751 -0.840746 -0.359866\nv -0.649762 -0.947090 -0.391848\nv -0.790724 -0.840746 0.171394\nv -0.790835 -0.840746 -0.158250\nv -0.790843 -0.941798 -0.178996\nv -0.815688 -1.050080 -0.229704\nv -0.741764 -1.180644 -0.229704\nv -0.719175 -1.281132 -0.192828\nv -0.719146 -1.319248 -0.098314\nv -0.719108 -1.305387 0.023862\nv -0.741650 -1.253411 0.143738\nv -0.741638 -1.147102 0.180621\nv -0.790724 -1.022096 0.171394\nv -0.235435 -0.692714 0.501230\nv 0.000000 -0.692714 0.501169\nv 0.000000 -0.692714 -0.446846\nv -0.235755 -0.692714 -0.446784\nv -0.431755 -0.692728 -0.414537\nv -0.583169 -0.692766 -0.323436\nv -0.709792 -0.692766 -0.142483\nv -0.709693 -0.692766 0.153376\nv -0.582956 -0.692766 0.307244\nv -0.431463 -0.692728 0.450587\nv -0.496301 -0.571387 0.097596\nv -0.407673 -0.571387 0.205197\nv -0.301733 -0.571361 0.305438\nv -0.164649 -0.571351 0.340852\nv 0.000000 -0.571351 0.340810\nv 0.000000 -0.571351 -0.322143\nv -0.164873 -0.571351 -0.322100\nv -0.301937 -0.571361 -0.299550\nv -0.407822 -0.571387 -0.235841\nv -0.496372 -0.571387 -0.109300\nv -0.176564 -0.515313 -0.151812\nv -0.238485 -0.515328 -0.114556\nv -0.290267 -0.515328 -0.040555\nv -0.290227 -0.515328 0.080437\nv -0.238397 -0.515328 0.143361\nv -0.176444 -0.515313 0.201982\nv -0.096278 -0.515307 0.222691\nv 0.000000 -0.515307 0.222666\nv 0.000000 -0.515307 -0.165024\nv -0.096409 -0.515307 -0.164999\nv -1.623254 -0.058139 -0.150848\nv -1.920992 -0.560413 0.351398\nv -1.614233 -0.169145 -0.261481\nv -1.926915 -0.643886 0.262807\nv -1.663402 -0.262002 -0.378115\nv -1.976469 -0.717163 0.166201\nv -1.763279 -0.322574 -0.482992\nv -2.062111 -0.769088 0.076287\nv -1.898658 -0.341639 -0.560147\nv -2.170804 -0.791754 0.006752\nv -2.048927 -0.316295 -0.597831\nv -2.285997 -0.781712 -0.031816\nv -2.188930 -0.251846 -0.590833\nv -2.390156 -0.740491 -0.033546\nv -2.301512 -0.155402 -0.539197\nv -2.467423 -0.674365 0.001825\nv -2.369690 -0.041729 -0.450937\nv -2.506035 -0.593403 0.068912\nv -2.378712 0.069277 -0.340303\nv -2.500112 -0.509929 0.157503\nv -2.329543 0.162134 -0.223670\nv -2.450558 -0.436653 0.254109\nv -2.229666 0.222706 -0.118793\nv -2.364916 -0.384728 0.344023\nv -2.094287 0.241771 -0.041638\nv -2.256223 -0.362062 0.413558\nv -1.944017 0.216426 -0.003954\nv -2.141030 -0.372103 0.452126\nv -1.801733 0.150531 -0.011475\nv -2.036871 -0.413325 0.453856\nv -1.689097 0.054116 -0.063058\nv -1.959604 -0.479450 0.418485\nv -1.585242 -0.064487 -0.360483\nv -1.593970 0.042887 -0.253471\nv -1.657657 0.151468 -0.168552\nv -1.766608 0.244728 -0.118658\nv -1.904235 0.308467 -0.111382\nv -2.049588 0.332982 -0.147834\nv -2.180537 0.314541 -0.222464\nv -2.277146 0.255952 -0.323909\nv -2.324706 0.166133 -0.436726\nv -2.315979 0.058759 -0.543739\nv -2.259804 -0.054811 -0.636991\nv -2.147429 -0.151086 -0.688541\nv -2.005713 -0.206822 -0.685827\nv -1.860360 -0.231337 -0.649374\nv -1.729412 -0.212896 -0.574745\nv -1.632803 -0.154306 -0.473300\nv -1.851576 -0.077551 -0.662815\nv -1.754512 -0.063882 -0.607497\nv -1.682904 -0.020453 -0.532303\nv -1.647650 0.046123 -0.448679\nv -1.654119 0.125713 -0.369357\nv -1.701326 0.206197 -0.306413\nv -1.782084 0.275325 -0.269429\nv -1.884098 0.322570 -0.264037\nv -1.991839 0.340741 -0.291056\nv -2.088902 0.327072 -0.346374\nv -2.160511 0.283643 -0.421569\nv -2.195765 0.217067 -0.505193\nv -2.189296 0.137478 -0.584514\nv -2.226114 0.008704 -0.682163\nv -2.113755 -0.087561 -0.733699\nv -1.959316 -0.059379 -0.689834\nv -2.015022 0.143720 -0.614586\nv -1.973161 0.107889 -0.633757\nv -1.920281 0.083399 -0.636552\nv -1.864435 0.073979 -0.622546\nv -1.814122 0.081065 -0.593872\nv -1.777002 0.103576 -0.554895\nv -1.758729 0.138086 -0.511548\nv -1.762082 0.179340 -0.470432\nv -1.786552 0.221060 -0.437805\nv -1.828413 0.256893 -0.418635\nv -1.881293 0.281382 -0.415840\nv -1.937139 0.290801 -0.429844\nv -1.987452 0.283715 -0.458519\nv -2.024570 0.261205 -0.497496\nv -2.042845 0.226694 -0.540842\nv -2.039492 0.185440 -0.581959\nv -2.076011 -0.000792 -0.734242\nv -2.153120 0.065255 -0.698886\nv -1.989742 -0.491018 0.393756\nv -1.955715 -0.562370 0.334632\nv -1.960934 -0.635935 0.256558\nv -2.004606 -0.700515 0.171419\nv -2.080083 -0.746276 0.092177\nv -2.175873 -0.766252 0.030896\nv -2.277393 -0.757402 -0.003093\nv -2.369189 -0.721074 -0.004619\nv -2.437284 -0.662797 0.026554\nv -2.471312 -0.591445 0.085678\nv -2.466093 -0.517880 0.163752\nv -2.422420 -0.453301 0.248891\nv -2.346943 -0.407541 0.328134\nv -2.251154 -0.387564 0.389414\nv -2.149634 -0.396414 0.423404\nv -2.057838 -0.432742 0.424929\nv -2.272074 -0.438359 0.438673\nv -2.170554 -0.447208 0.472664\nv -2.078759 -0.483537 0.474188\nv -2.010663 -0.541813 0.443016\nv -1.976635 -0.613165 0.383892\nv -1.981854 -0.686730 0.305817\nv -2.025527 -0.751310 0.220678\nv -2.101003 -0.797070 0.141437\nv -2.196794 -0.817047 0.080156\nv -2.298314 -0.808197 0.046166\nv -2.390109 -0.771869 0.044641\nv -2.458205 -0.713592 0.075814\nv -2.492232 -0.642240 0.134938\nv -2.487013 -0.568675 0.213012\nv -2.443341 -0.504096 0.298151\nv -2.367864 -0.458335 0.377393\nv -2.458114 -1.420465 0.381856\nv -2.446310 -1.410195 0.369510\nv -2.449583 -1.420356 0.344998\nv -2.469010 -1.430890 0.330259\nv -2.481426 -1.440292 0.331393\nv -2.487318 -1.443179 0.338042\nv -2.482575 -1.440668 0.362532\nv -2.435650 -1.386773 0.323467\nv -2.429746 -1.381620 0.371328\nv -2.474173 -1.406125 0.300120\nv -2.515998 -1.437771 0.305923\nv -2.527194 -1.444486 0.330498\nv -2.522778 -1.436007 0.377465\nv -2.454219 -1.399631 0.406579\nv -2.430851 -1.292167 0.375268\nv -2.457505 -1.277198 0.290487\nv -2.514655 -1.312284 0.255045\nv -2.579113 -1.349214 0.278885\nv -2.481628 -1.418869 0.411230\nv -2.566163 -1.351069 0.381385\nv -2.520232 -1.322599 0.441505\nv -2.481713 -1.312557 0.422294\nv -2.588793 -1.361804 0.317255\nv -2.650998 -1.216998 0.313569\nv -2.637180 -1.202623 0.382595\nv -2.578871 -1.173572 0.439716\nv -2.528897 -1.160636 0.427957\nv -2.473162 -1.163954 0.391837\nv -2.486812 -1.185991 0.286411\nv -2.563513 -1.200965 0.250526\nv -2.629210 -1.208289 0.279070\nv -2.694240 -1.091362 0.299049\nv -2.688587 -1.075872 0.370373\nv -2.626437 -1.040931 0.435452\nv -2.666122 -1.102545 0.264501\nv -2.604431 -1.095248 0.250411\nv -2.526613 -1.090707 0.307129\nv -2.497126 -1.062893 0.384632\nv -2.557580 -1.049906 0.425822\nv -2.427788 -1.421077 0.767792\nv -2.410443 -1.414130 0.741715\nv -2.416892 -1.415110 0.710305\nv -2.446879 -1.425044 0.692658\nv -2.474256 -1.431038 0.700191\nv -2.482752 -1.432804 0.723236\nv -2.475968 -1.431739 0.746829\nv -2.451249 -1.427290 0.768591\nv -2.357392 -1.347799 0.730877\nv -2.393822 -1.376235 0.678094\nv -2.445659 -1.404232 0.652317\nv -2.500278 -1.411980 0.668402\nv -2.518481 -1.412144 0.705713\nv -2.493482 -1.398171 0.762181\nv -2.453487 -1.389265 0.798440\nv -2.406744 -1.369815 0.792679\nv -2.515050 -1.292944 0.612468\nv -2.554031 -1.288391 0.663774\nv -2.518378 -1.264699 0.738999\nv -2.397640 -1.230802 0.771672\nv -2.352515 -1.242805 0.690254\nv -2.399880 -1.265281 0.616344\nv -2.463119 -1.291877 0.584167\nv -2.465790 -1.238513 0.794978\nv -2.365320 -1.143849 0.656609\nv -2.410883 -1.160618 0.577606\nv -2.477868 -1.171139 0.542115\nv -2.402481 -1.117161 0.733363\nv -2.480558 -1.122273 0.751975\nv -2.535559 -1.142820 0.705554\nv -2.574993 -1.163681 0.624134\nv -2.533051 -1.180838 0.559750\nv -2.595258 -1.021133 0.572758\nv -2.559640 -0.995783 0.661795\nv -2.498510 -0.979329 0.705800\nv -2.543678 -1.038207 0.507785\nv -2.486285 -1.073261 0.512909\nv -2.421939 -1.070266 0.562969\nv -2.396317 -1.045621 0.619649\nv -2.409117 -1.013477 0.699167\nv -2.361635 -1.146519 1.102936\nv -2.331435 -1.140843 1.111950\nv -2.314117 -1.152556 1.108892\nv -2.305754 -1.166675 1.096030\nv -2.316934 -1.191476 1.076253\nv -2.342006 -1.200506 1.061357\nv -2.360434 -1.197050 1.066741\nv -2.380024 -1.170858 1.081125\nv -2.381494 -1.096362 1.076051\nv -2.408317 -1.149427 1.031036\nv -2.370986 -1.195848 0.996326\nv -2.320845 -1.210153 0.998038\nv -2.254589 -1.160436 1.065220\nv -2.280635 -1.196655 1.027390\nv -2.280483 -1.117074 1.092520\nv -2.324145 -1.087553 1.098183\nv -2.197987 -1.101460 0.959213\nv -2.234608 -1.145825 0.916543\nv -2.291899 -1.156390 0.880497\nv -2.367524 -1.129257 0.884141\nv -2.236201 -1.048331 1.005223\nv -2.309773 -1.013897 1.009901\nv -2.362653 -1.023664 0.992213\nv -2.406385 -1.073603 0.932751\nv -2.389286 -0.997718 0.855805\nv -2.346204 -0.942460 0.904935\nv -2.287138 -0.923640 0.922986\nv -2.217926 -0.941305 0.903746\nv -2.178340 -1.008156 0.842846\nv -2.366738 -1.068709 0.800301\nv -2.223126 -1.051406 0.802474\nv -2.286362 -1.080797 0.783229\nv -2.394866 -0.915622 0.785825\nv -2.343490 -0.841171 0.823491\nv -2.264115 -0.820155 0.831033\nv -2.207612 -0.853387 0.805916\nv -2.371685 -0.996256 0.739739\nv -2.286616 -0.993170 0.709204\nv -2.223897 -0.954219 0.719138\nv -2.185849 -0.910432 0.749697\nv -2.424089 -0.819443 0.715228\nv -2.339042 -0.757233 0.759124\nv -2.244227 -0.766681 0.766023\nv -2.427818 -0.932737 0.723020\nv -2.509179 -0.872952 0.673194\nv -2.574464 -0.892686 0.616013\nv -2.610360 -0.917082 0.507947\nv -2.600772 -0.993303 0.470028\nv -2.648952 -0.938746 0.430020\nv -2.390769 -0.995162 0.706181\nv -2.528401 -1.026101 0.442822\nv -2.705450 -0.961026 0.341128\nv -2.712309 -0.989042 0.271247\nv -2.671654 -1.019840 0.235219\nv -2.586576 -1.035443 0.227840\nv -2.496489 -1.047931 0.277691\nv -2.462925 -1.029882 0.365693\nv -2.448852 -1.028639 0.424189\nv -2.382734 -1.023871 0.508831\nv -2.333352 -1.002741 0.581947\nv -2.344811 -1.009033 0.654934\nv -2.267631 -0.947789 0.638904\nv -2.219001 -0.913376 0.670577\nv -2.181780 -0.860039 0.699574\nv -2.203290 -0.802855 0.748007\nv -2.549359 -0.797719 0.535251\nv -2.497888 -0.770945 0.595589\nv -2.585326 -0.817174 0.468758\nv -2.622653 -0.826266 0.389460\nv -2.660586 -0.840540 0.283982\nv -2.665172 -0.885657 0.215745\nv -2.310264 -0.694181 0.691931\nv -2.223202 -0.712268 0.710501\nv -2.420527 -0.726001 0.649229\nv -2.183692 -0.747865 0.704595\nv -2.167818 -0.810590 0.667957\nv -2.197701 -0.857120 0.621152\nv -2.247393 -0.876634 0.569736\nv -2.305819 -0.892561 0.523184\nv -2.359446 -0.916353 0.477552\nv -2.423577 -0.951605 0.399456\nv -2.440742 -0.968404 0.334558\nv -2.485622 -0.978877 0.254820\nv -2.555184 -0.971246 0.198759\nv -2.627858 -0.936401 0.180120\nv -2.537881 -0.644137 0.387478\nv -2.478510 -0.616886 0.467050\nv -2.579527 -0.685636 0.302305\nv -2.604701 -0.733623 0.211598\nv -2.605230 -0.781530 0.141668\nv -2.402414 -0.594356 0.547250\nv -2.281770 -0.602176 0.625111\nv -2.189153 -0.646525 0.652126\nv -2.253877 -0.529620 0.556286\nv -2.153677 -0.577930 0.609574\nv -2.178499 -0.478541 0.436263\nv -2.083875 -0.523671 0.503109\nv -2.013054 -0.569685 0.552671\nv -2.081981 -0.625236 0.621936\nv -2.100171 -0.695604 0.636647\nv -2.148044 -0.712735 0.660512\nv -2.360111 -0.515446 0.462613\nv -2.428555 -0.533780 0.369823\nv -2.471238 -0.550995 0.307399\nv -2.511336 -0.586927 0.224919\nv -2.526870 -0.646474 0.144826\nv -2.525414 -0.709966 0.098136\nv -2.416027 -0.681310 0.068953\nv -2.436781 -0.597567 0.107413\nv -2.414046 -0.554953 0.151239\nv -2.368743 -0.519636 0.214872\nv -2.318974 -0.495754 0.267274\nv -2.260166 -0.480760 0.332756\nv -2.550383 -0.851041 0.107283\nv -2.488975 -0.771522 0.070085\nv -2.424307 -0.837553 0.062914\nv -2.353430 -0.870423 0.115255\nv -2.327793 -0.764165 0.075363\nv -2.478880 -0.900067 0.113551\nv -2.404709 -0.933178 0.174661\nv -2.345137 -0.637419 0.091250\nv -2.377595 -0.606598 0.098238\nv -2.274565 -0.753040 0.166661\nv -2.301123 -0.848137 0.218732\nv -2.345961 -0.914974 0.267970\nv -2.341564 -0.851619 0.388387\nv -2.287622 -0.792734 0.325587\nv -2.263828 -0.710314 0.246365\nv -2.315680 -0.614567 0.127279\nv -2.307512 -0.863165 0.427497\nv -2.177859 -0.727738 0.269228\nv -2.157067 -0.602121 0.217346\nv -2.268923 -0.606123 0.173283\nv -2.108341 -0.738600 0.297560\nv -2.081400 -0.600647 0.273802\nv -2.255818 -0.862594 0.474459\nv -2.204501 -0.855035 0.517149\nv -2.140364 -0.833654 0.443806\nv -2.188514 -0.831705 0.384859\nv -2.052571 -0.737490 0.370660\nv -2.000765 -0.625660 0.354304\nv -2.000955 -0.761041 0.466470\nv -1.934257 -0.672707 0.452990\nv -1.915706 -0.814327 0.564952\nv -2.061878 -0.806358 0.530192\nv -1.964868 -0.842302 0.604239\nv -1.867750 -0.719927 0.551639\nv -2.161158 -0.818326 0.581649\nv -2.136009 -0.770873 0.631593\nv -2.092478 -0.764335 0.614325\nv -2.000506 -0.807326 0.670819\nv -2.245679 -0.807064 0.356339\nv -1.827464 -0.845028 0.657677\nv -1.786676 -0.767718 0.638740\nv -1.867191 -0.865969 0.692278\nv -1.887626 -0.845629 0.755711\nv -1.805098 -0.832068 0.784204\nv -1.783768 -0.848174 0.765672\nv -1.940677 -0.598623 0.485857\nv -2.012368 -0.548093 0.393019\nv -1.881897 -0.667506 0.593401\nv -1.812243 -0.707915 0.688828\nv -1.738897 -0.799952 0.739523\nv -1.751713 -0.765651 0.765549\nv -2.094538 -0.521529 0.297807\nv -2.192826 -0.518375 0.234439\nv -1.918831 -0.637958 0.649504\nv -1.976174 -0.671937 0.703105\nv -2.000242 -0.738074 0.712447\nv -1.848448 -0.680772 0.742335\nv -1.783242 -0.741103 0.801898\nv -1.808573 -0.764436 0.818757\nv -1.901390 -0.705916 0.775427\nv -1.904679 -0.777936 0.797654\nv -1.815814 -0.790317 0.811131\nv -1.763151 -0.841544 0.748430\nv -2.347207 -0.559788 0.129472\nv -2.307997 -0.536935 0.165017\nv -2.252801 -0.527764 0.214822\nv 0.005871 1.350316 -0.886750\nv 0.005794 1.509556 -0.750557\nv -0.230159 1.487532 -0.696821\nv -0.314581 1.329661 -0.836396\nv -0.683046 1.400683 -0.479693\nv -0.579118 1.269061 -0.723955\nv -0.768313 1.267839 -0.243274\nv -0.971293 1.138016 -0.368971\nv -1.058050 0.971981 -0.062842\nv -0.794241 1.114513 0.056744\nv -0.671219 0.854235 0.431629\nv -0.895077 0.738257 0.291984\nv -0.719383 0.447928 0.550785\nv -0.490260 0.515998 0.734879\nv -0.579876 0.260665 0.735616\nv -0.430451 0.102704 0.816277\nv -0.113326 0.000598 0.850271\nv -0.083679 0.118230 0.853136\nv -0.015855 0.091041 0.837372\nv -0.307020 1.248611 -0.843372\nv 0.005866 1.294734 -0.860496\nv -0.652605 1.135162 -0.673574\nv -0.971306 1.045959 -0.410787\nv -1.059102 0.881727 -0.097164\nv -0.908709 0.636424 0.252632\nv -0.707832 0.396231 0.475815\nv -0.566424 0.201403 0.651966\nv -0.441262 0.075824 0.725701\nv -0.305432 0.299573 0.828785\nv -1.264273 0.449619 0.275725\nv -1.281271 0.652920 0.175265\nv -0.238207 0.004903 0.845752\nv -0.226736 -0.033969 0.778462\nv -0.164620 0.154770 0.829124\nv -1.450284 0.420262 0.104539\nv -1.442443 0.565737 0.046512\nv -1.446624 0.708076 -0.183093\nv -1.273035 0.828200 -0.068799\nv -1.290098 0.861782 -0.369297\nv -1.460551 0.699653 -0.376201\nv -1.256266 0.683005 -0.673151\nv -0.975317 0.700042 -0.761768\nv -1.483624 0.569905 -0.558964\nv -0.683539 0.813690 -0.893767\nv -0.337936 0.880196 -1.029625\nv -0.974975 0.018739 0.413563\nv -1.229840 0.003148 0.245975\nv -1.466634 0.226995 0.095106\nv -0.821318 -0.034281 0.642277\nv -0.575419 -0.099591 0.805859\nv -1.484793 0.102000 -0.021613\nv -1.255179 -0.222439 0.072717\nv -0.982571 -0.194876 0.292810\nv -0.844321 -0.236894 0.624393\nv -0.990468 -0.510053 0.177612\nv -0.851905 -0.521837 0.443191\nv -0.575437 -0.299562 0.798491\nv -0.560033 -0.566355 0.629068\nv -1.067357 -0.494972 -0.089793\nv -1.255251 -0.299210 -0.147273\nv -1.503932 0.022977 -0.207091\nv -1.297577 -0.272873 -0.389768\nv -1.517021 0.011888 -0.384834\nv -1.059565 -0.462426 -0.328270\nv -1.503195 0.409195 -0.653951\nv -1.306871 0.447673 -0.799188\nv -0.982923 0.400342 -0.920459\nv -0.706571 0.476526 -1.059169\nv -1.514100 0.259092 -0.635129\nv -1.340806 0.191881 -0.813115\nv -1.005924 0.072092 -0.981793\nv -0.668182 0.052303 -1.110986\nv -1.520687 0.094939 -0.536706\nv -1.323278 -0.184984 -0.654645\nv -1.005794 -0.465433 -0.517988\nv -0.890649 -0.493516 -0.751131\nv -0.967494 -0.222311 -0.895411\nv -0.264748 -0.313173 0.820315\nv -0.260650 -0.580764 0.655200\nv -0.218461 -0.117979 0.869238\nv -0.237337 -0.327314 0.863791\nv -0.222232 -0.586704 0.696068\nv -0.191357 -0.150269 0.904556\nv 0.005364 -0.315405 0.858149\nv 0.005457 -0.589347 0.685468\nv 0.005316 -0.133456 0.920082\nv -0.247770 -1.050193 0.587406\nv -0.227110 -1.050193 0.632155\nv 0.005533 -1.050193 0.635950\nv -0.523816 -1.050193 0.528375\nv -0.765391 -1.050193 0.346402\nv -0.910538 -1.050193 0.092123\nv -0.965729 -1.050193 -0.051231\nv -0.924493 -1.050193 -0.276600\nv -0.841683 -1.050193 -0.479414\nv -0.683050 -1.050193 -0.591581\nv -0.598871 -0.513304 -0.905545\nv -0.482841 -1.050193 -0.675985\nv -0.276200 -0.531424 -0.847437\nv -0.241316 -1.050193 -0.682554\nv 0.006059 -0.522779 -0.788372\nv 0.006070 -1.050193 -0.661753\nv 0.006080 -0.219938 -0.930094\nv -0.284095 -0.283002 -0.979762\nv -0.629752 -0.279562 -1.031320\nv -0.299547 0.043960 -1.080583\nv 0.006082 0.078030 -1.022972\nv -0.314676 0.464315 -1.111950\nv 0.006063 0.469219 -1.090899\nv 0.005963 0.902086 -0.979942\nv -0.460183 0.537306 0.671402\nv 0.005331 0.735450 0.596979\nv -0.253174 0.680348 0.593082\nv -0.230448 0.596824 0.567254\nv -0.139901 0.494053 0.637261\nv -0.212076 0.255629 0.760477\nv -0.205948 0.633167 0.648864\nv -0.163725 0.590859 0.679038\nv 0.005312 0.669281 0.661733\nv 0.005304 0.613366 0.699080\nv -0.116562 0.553907 0.718480\nv 0.005300 0.567695 0.721305\nv 0.005306 0.503277 0.724248\nv -0.093794 0.504960 0.734658\nv 0.005284 0.466889 0.788759\nv -0.082156 0.449112 0.835016\nv 0.058049 0.409838 0.845554\nv -0.076109 0.365167 0.873382\nv 0.005269 0.393053 0.845671\nv -0.052654 0.277769 0.845836\nv 0.005282 0.295467 0.844612\nv -0.040825 0.156195 0.750323\nv 0.005335 0.142873 0.760661\nv -0.123287 0.175650 0.745024\nv -0.158815 0.403239 0.819261\nv -0.164620 0.325203 0.827535\nv -0.146974 0.251422 0.794659\nv -0.204503 0.385189 0.724463\nv -0.221561 0.304589 0.750982\nv -0.679385 0.672255 0.427805\nv -0.689430 0.755538 0.461203\nv -0.015858 0.055510 0.895520\nv -0.101357 -0.017956 0.912395\nv -0.154776 -0.041510 0.829106\nv -0.329893 0.573922 0.601969\nv -0.368884 0.611846 0.630954\nv -0.467186 1.451970 -0.623335\nv -0.839667 1.212862 -0.586894\nv -0.832378 1.093661 -0.565896\nv -0.570278 0.897431 0.376321\nv 0.581082 0.897572 0.376798\nv 0.843916 1.093866 -0.565202\nv 0.851192 1.213069 -0.586193\nv 0.478684 1.452086 -0.622943\nv 0.379547 0.611937 0.631264\nv 0.340591 0.574004 0.602248\nv 0.144874 -0.048734 0.829222\nv 0.700199 0.755708 0.461779\nv 0.690202 0.672423 0.428372\nv 0.222513 0.345768 0.751162\nv 0.200631 0.413666 0.724638\nv 0.156985 0.239364 0.794786\nv 0.174586 0.313148 0.827675\nv 0.175180 0.359140 0.828801\nv 0.154858 0.431705 0.819397\nv 0.133964 0.175682 0.745131\nv 0.051502 0.156206 0.750361\nv 0.063221 0.277783 0.845884\nv 0.086027 0.328295 0.873449\nv 0.104398 0.504984 0.734740\nv 0.127167 0.553937 0.718581\nv 0.174354 0.590901 0.679179\nv 0.222719 0.255682 0.760657\nv 0.150589 0.494088 0.637382\nv 0.241168 0.596882 0.567449\nv 0.263853 0.680412 0.593296\nv 0.470832 0.537420 0.671788\nv 0.326821 0.464394 -1.111685\nv 0.311768 0.044035 -1.080330\nv 0.642012 -0.279407 -1.030793\nv 0.296311 -0.282931 -0.979520\nv 0.253475 -1.050132 -0.682349\nv 0.288369 -0.531354 -0.847203\nv 0.494995 -1.050073 -0.675580\nv 0.611083 -0.513156 -0.905044\nv 0.695133 -1.050024 -0.591010\nv 0.853673 -1.049985 -0.478712\nv 0.936315 -1.049965 -0.275828\nv 0.977364 -1.049954 -0.050425\nv 0.922055 -1.049969 0.092882\nv 0.776698 -1.050004 0.347041\nv 0.534972 -1.050063 0.528814\nv 0.238180 -1.050136 0.632347\nv 0.201981 -0.150221 0.841819\nv 0.233136 -0.586649 0.696257\nv 0.248038 -0.327255 0.801093\nv 0.979627 -0.222072 -0.894605\nv 0.902728 -0.493296 -0.750388\nv 1.017673 -0.465185 -0.517149\nv 1.335201 -0.184659 -0.653543\nv 1.532444 0.095313 -0.535441\nv 0.680426 0.052467 -1.110427\nv 1.018056 0.072340 -0.980954\nv 1.352770 0.192210 -0.811999\nv 1.525898 0.259465 -0.633870\nv 0.718668 0.476700 -1.058578\nv 0.994924 0.400584 -0.919639\nv 1.318759 0.447995 -0.798100\nv 1.514973 0.409564 -0.652701\nv 1.071286 -0.462165 -0.327387\nv 1.528672 0.012261 -0.383571\nv 1.309303 -0.272554 -0.388688\nv 1.515433 0.023346 -0.205840\nv 1.266781 -0.298901 -0.146228\nv 1.078889 -0.494709 -0.088904\nv 0.570987 -0.566217 0.629537\nv 0.586174 -0.293977 0.749379\nv 0.863001 -0.521627 0.443902\nv 1.001782 -0.509809 0.178438\nv 0.855187 -0.231242 0.575504\nv 0.993712 -0.194634 0.293629\nv 1.266509 -0.222131 0.073762\nv 1.496121 0.102365 -0.020379\nv 0.586111 -0.099449 0.806340\nv 0.832131 -0.034078 0.642962\nv 1.477835 0.227355 0.096326\nv 1.240971 0.003451 0.247000\nv 0.985964 0.018979 0.414374\nv 0.349911 0.880279 -1.029341\nv 0.695416 0.813859 -0.893196\nv 1.495284 0.570270 -0.557729\nv 0.987112 0.700282 -0.760954\nv 1.267992 0.683313 -0.672106\nv 1.472026 0.700012 -0.374986\nv 1.301529 0.862098 -0.368223\nv 1.284224 0.828513 -0.067739\nv 1.457939 0.708432 -0.181889\nv 1.453604 0.566091 0.047712\nv 1.461431 0.420618 0.105745\nv 0.175231 0.154811 0.847408\nv 0.237436 -0.033912 0.778655\nv 0.248842 0.004963 0.845954\nv 1.292302 0.653235 0.176332\nv 1.275270 0.449930 0.276777\nv 0.316008 0.299649 0.829042\nv 0.451978 0.075933 0.726070\nv 0.577170 0.201544 0.652441\nv 0.718677 0.396405 0.476406\nv 0.919680 0.636648 0.253389\nv 1.070302 0.881988 -0.096281\nv 0.982726 1.046199 -0.409978\nv 0.664222 1.135323 -0.673029\nv 0.318749 1.248687 -0.843113\nv 0.094279 0.118251 0.871354\nv 0.102794 -0.018127 0.850352\nv 0.441085 0.102810 0.816639\nv 0.590539 0.260809 0.736101\nv 0.500861 0.516120 0.735289\nv 0.730153 0.448106 0.551386\nv 0.905990 0.738477 0.292730\nv 0.681988 0.854401 0.432190\nv 0.805257 1.114709 0.057407\nv 1.069200 0.972241 -0.061961\nv 0.982655 1.138255 -0.368162\nv 0.779540 1.268028 -0.242634\nv 0.590744 1.269204 -0.723469\nv 0.694437 1.400852 -0.479121\nv 0.326285 1.329739 -0.836131\nv 0.241708 1.487589 -0.696626\nv 0.072890 0.137229 0.801786\nv -0.045793 -0.058932 0.871513\nv 0.071877 0.210342 0.798123\nv -0.046740 0.216982 0.798079\nv 0.005300 0.244603 0.816629\nv 0.019833 0.187086 0.788645\nv 0.159937 0.702535 0.594777\nv 0.000000 -0.773452 0.713246\nv -0.059247 -0.792610 0.711362\nv -0.095865 -0.842765 0.706430\nv -0.095868 -0.904763 0.700334\nv -0.059254 -0.954921 0.695401\nv -0.000009 -0.974084 0.693517\nv 0.059240 -0.954932 0.695400\nv 0.095863 -0.904780 0.700331\nv 0.095872 -0.842783 0.706428\nv 0.059262 -0.792621 0.711361\nv 0.000000 -0.768140 0.659227\nv -0.059247 -0.787297 0.657343\nv -0.095865 -0.837453 0.652411\nv -0.095868 -0.899451 0.646314\nv -0.059254 -0.949610 0.641382\nv -0.000009 -0.968772 0.639498\nv 0.059240 -0.949620 0.641381\nv 0.095863 -0.899469 0.646312\nv 0.095872 -0.837471 0.652409\nv 0.059262 -0.787309 0.657342\nv 0.000000 -0.129937 0.958315\nv -0.059247 -0.148387 0.952823\nv -0.095865 -0.196689 0.938444\nv -0.095868 -0.256397 0.920671\nv -0.059254 -0.304703 0.906292\nv -0.000009 -0.323158 0.900798\nv 0.059240 -0.304714 0.906288\nv 0.095863 -0.256414 0.920666\nv 0.095872 -0.196707 0.938440\nv 0.059262 -0.148397 0.952820\nv 0.059262 -0.132912 0.900796\nv 0.095872 -0.181220 0.886416\nv 0.095863 -0.240928 0.868642\nv 0.059240 -0.289227 0.854265\nv -0.000009 -0.307672 0.848775\nv -0.059254 -0.289217 0.854268\nv -0.095868 -0.240911 0.868648\nv -0.095865 -0.181204 0.886421\nv -0.059247 -0.132901 0.900799\nv 0.000000 -0.114451 0.906291\nv 0.000000 -0.451627 0.806734\nv -0.059247 -0.469299 0.799102\nv -0.095865 -0.515567 0.779122\nv -0.095868 -0.572759 0.754424\nv -0.059254 -0.619030 0.734443\nv -0.000009 -0.636707 0.726808\nv 0.059240 -0.619040 0.734438\nv 0.095863 -0.572775 0.754417\nv 0.095872 -0.515584 0.779115\nv 0.059262 -0.469310 0.799098\nv 0.059262 -0.447790 0.749266\nv 0.095872 -0.494065 0.729284\nv 0.095863 -0.551256 0.704586\nv 0.059240 -0.597520 0.684607\nv -0.000009 -0.615188 0.676977\nv -0.059254 -0.597510 0.684611\nv -0.095868 -0.551239 0.704593\nv -0.095865 -0.494048 0.729290\nv -0.059247 -0.447780 0.749271\nv 0.000000 -0.430108 0.756902\nv -1.306815 0.345572 0.221760\nv -1.970246 -0.004896 0.119119\nv -1.306815 0.150297 0.182917\nv -1.885066 -0.135583 0.088089\nv -1.306815 -0.015248 0.072303\nv -1.812853 -0.246374 -0.000274\nv -1.306815 -0.125862 -0.093242\nv -1.764602 -0.320402 -0.132520\nv -1.306815 -0.164704 -0.288516\nv -1.747659 -0.346397 -0.288516\nv -1.306815 -0.125862 -0.483790\nv -1.764602 -0.320402 -0.444511\nv -1.306815 -0.015248 -0.649335\nv -1.812853 -0.246374 -0.576757\nv -1.306815 0.150297 -0.759949\nv -1.885066 -0.135583 -0.665122\nv -1.306815 0.345572 -0.798791\nv -1.970246 -0.004896 -0.696151\nv -1.306814 0.540847 -0.759949\nv -2.055427 0.125790 -0.665122\nv -1.306815 0.706392 -0.649335\nv -2.127640 0.236580 -0.576757\nv -1.306815 0.817006 -0.483790\nv -2.175889 0.310608 -0.444511\nv -1.306814 0.855849 -0.288516\nv -2.192834 0.336604 -0.288516\nv -1.306815 0.817006 -0.093242\nv -2.175889 0.310608 -0.132520\nv -1.306815 0.706392 0.072303\nv -2.127640 0.236580 -0.000274\nv -1.306814 0.540847 0.182917\nv -2.055427 0.125790 0.088089\nv -1.129849 0.186960 0.094406\nv -1.129849 0.345572 0.125957\nv -1.129849 0.504185 0.094406\nv -1.129849 0.638649 0.004560\nv -1.129849 0.728495 -0.129904\nv -1.129849 0.760046 -0.288516\nv -1.129849 0.728495 -0.447127\nv -1.129849 0.638649 -0.581593\nv -1.129849 0.504185 -0.671439\nv -1.129849 0.345572 -0.702988\nv -1.129849 0.186960 -0.671439\nv -1.129848 0.052495 -0.581593\nv -1.129849 -0.037351 -0.447127\nv -1.129849 -0.068901 -0.288516\nv -1.129849 -0.037351 -0.129904\nv -1.129848 0.052495 0.004560\nv -2.157869 0.024060 0.017383\nv -2.088680 -0.082091 0.042586\nv -2.019492 -0.188241 0.017383\nv -1.960838 -0.278231 -0.054391\nv -1.921646 -0.338360 -0.161808\nv -1.907883 -0.359475 -0.288516\nv -1.921646 -0.338360 -0.415223\nv -1.960838 -0.278231 -0.522641\nv -2.019492 -0.188241 -0.594414\nv -2.088680 -0.082091 -0.619618\nv -2.157869 0.024060 -0.594414\nv -2.216522 0.114050 -0.522641\nv -2.255715 0.174179 -0.415223\nv -2.269477 0.195294 -0.288516\nv -2.255715 0.174179 -0.161808\nv -2.216522 0.114050 -0.054391\nv -0.996819 0.125302 -0.288516\nv -0.996819 0.142069 -0.204222\nv -0.996818 0.189817 -0.132761\nv -0.996819 0.261278 -0.085012\nv -0.996819 0.345572 -0.068245\nv -0.996819 0.429866 -0.085012\nv -0.996819 0.501327 -0.132761\nv -0.996819 0.549076 -0.204222\nv -0.996818 0.565843 -0.288516\nv -0.996819 0.549076 -0.372810\nv -0.996819 0.501327 -0.444271\nv -0.996819 0.429866 -0.492019\nv -0.996819 0.345572 -0.508787\nv -0.996819 0.261278 -0.492019\nv -0.996818 0.189817 -0.444271\nv -0.996819 0.142069 -0.372810\nv -2.273794 0.007296 -0.288516\nv -2.266481 -0.003926 -0.221178\nv -2.245652 -0.035882 -0.164091\nv -2.214481 -0.083707 -0.125947\nv -2.177710 -0.140120 -0.112552\nv -2.140941 -0.196534 -0.125947\nv -2.109768 -0.244358 -0.164091\nv -2.088939 -0.276313 -0.221178\nv -2.081625 -0.287535 -0.288516\nv -2.088939 -0.276313 -0.355854\nv -2.109768 -0.244358 -0.412941\nv -2.140941 -0.196534 -0.451085\nv -2.177710 -0.140120 -0.464479\nv -2.214481 -0.083707 -0.451085\nv -2.245652 -0.035882 -0.412941\nv -2.266481 -0.003926 -0.355854\nv -1.653766 0.213423 -0.761987\nv -1.528826 -0.097187 -0.623311\nv -1.586149 0.045322 -0.725946\nv -1.490524 -0.192409 -0.469705\nv -1.477075 -0.225847 -0.288516\nv -1.490524 -0.192409 -0.107326\nv -1.528826 -0.097187 0.046279\nv -1.653766 0.213423 0.184955\nv -1.721383 0.381524 -0.725946\nv -1.778707 0.524033 -0.623311\nv -1.817008 0.619255 -0.469705\nv -1.830458 0.652692 -0.288516\nv -1.586149 0.045322 0.148915\nv -1.721383 0.381524 0.148915\nv -1.778707 0.524033 0.046279\nv -1.817008 0.619255 -0.107326\nv -0.187055 2.266492 -0.830954\nv -0.307165 2.256252 -0.795770\nv -0.275750 2.130272 -0.708268\nv -0.165536 2.164839 -0.745132\nv -0.416054 2.233526 -0.707535\nv -0.375172 2.106480 -0.631685\nv -0.332168 2.112302 -0.574402\nv -0.255211 2.115301 -0.630751\nv -0.282781 2.130503 -0.506869\nv -0.225401 2.127288 -0.546128\nv -0.140936 2.120265 -0.585217\nv -0.155660 2.119535 -0.668215\nv -0.000003 2.123183 -0.608480\nv -0.000003 2.125899 -0.679678\nv -0.000003 2.188265 -0.757535\nv -0.357403 2.143732 -0.325303\nv -0.456495 2.092493 -0.351798\nv -0.365545 2.157311 -0.180326\nv -0.477658 2.075927 -0.182708\nv -0.490667 2.099245 -0.364174\nv -0.559558 2.137107 -0.382321\nv -0.584213 2.082423 -0.187098\nv -0.331433 2.169831 -0.022672\nv -0.444102 2.059856 0.004349\nv -0.572342 2.028578 0.054001\nv -0.368743 2.073967 0.157892\nv -0.270796 2.178771 0.073647\nv -0.525207 2.023368 0.249290\nv -0.270059 2.098032 0.306985\nv -0.184110 2.185215 0.159225\nv -0.361582 2.032398 0.460733\nv -0.134358 2.108360 0.392918\nv -0.088376 2.188799 0.202757\nv -0.172453 2.054771 0.560306\nv -0.000003 2.074469 0.590607\nv -0.000003 2.126771 0.430511\nv -0.000003 2.190238 0.220239\nv -0.000003 2.314345 0.148359\nv -0.068840 2.313591 0.139325\nv -0.164300 2.311724 0.116824\nv -0.259930 2.306543 0.053917\nv -0.319551 2.299504 -0.031675\nv -0.348133 2.288781 -0.182719\nv -0.000003 2.331478 0.111529\nv -0.061697 2.331009 0.105825\nv -0.141287 2.330283 0.096967\nv -0.232529 2.325469 0.038313\nv -0.288508 2.318822 -0.042673\nv -0.321829 2.308118 -0.184972\nv -0.274703 2.446806 -0.135981\nv -0.269132 2.368203 -0.059092\nv -0.219577 2.347112 0.022226\nv -0.143629 2.352897 0.085565\nv -0.083852 2.385100 0.091435\nv -0.000003 2.475193 0.078617\nv -0.034377 2.471488 0.070723\nv -0.000003 2.529076 0.063453\nv -0.052778 2.589062 0.027810\nv -0.000003 2.593226 0.045823\nv -0.231926 2.551207 -0.149294\nv -0.236104 2.524531 -0.126932\nv -0.167844 2.554747 -0.069549\nv -0.172808 2.566792 -0.090474\nv -0.270298 2.535848 -0.222707\nv -0.214794 2.451369 -0.086163\nv -0.200965 2.481547 -0.095247\nv -0.297585 2.436957 -0.204284\nv -0.212741 2.422400 -0.059109\nv -0.190850 2.409340 -0.038957\nv -0.143504 2.406895 0.017759\nv -0.108672 2.426237 0.031275\nv -0.084524 2.464651 0.025772\nv -0.090089 2.490066 0.011783\nv -0.158692 2.504199 -0.068212\nv -0.106213 2.505291 -0.027466\nv -0.116351 2.566703 -0.024061\nv -0.289382 2.421385 -0.315811\nv -0.306346 2.296294 -0.312567\nv -0.264686 2.511813 -0.319604\nv -0.340922 2.275133 -0.322756\nv -0.199429 2.489064 -0.454855\nv -0.227903 2.408700 -0.465839\nv -0.243891 2.284107 -0.465687\nv -0.266485 2.261437 -0.495266\nv -0.117067 2.479218 -0.506783\nv -0.134608 2.394988 -0.515476\nv -0.142866 2.279294 -0.524343\nv -0.144913 2.255870 -0.562777\nv -0.000002 2.474760 -0.533879\nv -0.000003 2.363637 -0.541105\nv -0.000003 2.277023 -0.552013\nv -0.000003 2.253343 -0.593054\nv -0.115745 2.578044 -0.026483\nv -0.076421 2.271080 -0.883770\nv -0.186467 2.258181 -0.867070\nv -0.323573 2.230726 -0.827995\nv -0.438511 2.202117 -0.741865\nv -0.583805 2.102863 -0.390400\nv -0.590179 2.049013 -0.201652\nv -0.073463 2.041224 -0.691972\nv -0.000006 2.276473 -0.888545\nv -0.000003 2.050756 -0.704198\nv -0.276607 2.034031 -0.657899\nv -0.349043 2.021079 -0.599987\nv -0.472554 2.008581 -0.403932\nv -0.546260 2.003182 -0.188603\nv -0.568457 1.993456 0.058454\nv -0.529835 1.985792 0.243535\nv -0.362883 1.994985 0.460745\nv -0.171034 2.017905 0.562681\nv -0.000006 2.287348 -0.856320\nv -0.165526 2.038810 -0.683024\nv -0.000003 2.033740 0.590387\nv -0.074233 2.281730 -0.851712\nv -0.061340 2.184875 -0.757808\nv -0.059998 2.123521 -0.680952\nv -0.051630 2.119174 -0.607491\nv -0.052988 2.253605 -0.590108\nv -0.050606 2.379312 -0.538447\nv -0.041029 2.474888 -0.531423\nv -0.054734 2.277817 -0.544933\nv -0.000004 2.155687 -0.801841\nv -0.075099 2.152738 -0.797716\nv -0.176401 2.134409 -0.780258\nv -0.304524 2.102540 -0.736486\nv -0.400085 2.073691 -0.645952\nv -0.524007 2.040989 -0.421974\nv -0.585190 2.010457 -0.192246\nv -0.112495 2.072145 -0.555111\nv -0.049602 2.078440 -0.555665\nv 0.000000 2.072443 -0.553211\nv 0.000000 2.070849 0.325681\nv -0.115623 2.066716 0.315310\nv -0.247108 2.047304 0.245782\nv -0.370089 2.043509 0.107071\nv -0.399468 2.045435 -0.028610\nv -0.372184 2.055371 -0.197122\nv -0.321911 2.059052 -0.343992\nv -0.237668 2.067577 -0.497052\nv -0.188260 2.071930 -0.536908\nv -0.106857 2.584080 -0.050059\nv -0.048643 2.594127 -0.000307\nv -0.000003 2.597942 0.016200\nv -0.000003 2.489383 -0.515020\nv -0.037877 2.489501 -0.512770\nv -0.107555 2.493468 -0.490190\nv -0.183029 2.502492 -0.442605\nv -0.248069 2.523338 -0.312946\nv -0.247972 2.545363 -0.229872\nv -0.212809 2.559437 -0.162598\nv -0.158635 2.573972 -0.108696\nv -0.559769 2.147902 -0.543134\nv -0.515805 2.172402 -0.639867\nv -0.530742 2.180394 -0.525645\nv -0.488671 2.204352 -0.612968\nv -0.464038 2.108914 -0.492682\nv -0.425169 2.107697 -0.563172\nv -0.422101 2.099096 -0.462699\nv -0.382699 2.105699 -0.526132\nv -0.316186 2.134912 -0.454478\nv -0.338464 2.139323 -0.400769\nv -0.326496 2.270567 -0.385534\nv -0.302054 2.266002 -0.441059\nv -0.465093 2.026070 0.368527\nv -0.321626 2.085999 0.241009\nv -0.285690 2.290201 -0.392423\nv -0.269214 2.415043 -0.394122\nv -0.242628 2.500440 -0.390526\nv -0.226120 2.512916 -0.381072\nv -0.229679 2.181993 0.125006\nv -0.214341 2.309134 0.093941\nv -0.189134 2.327876 0.076211\nv -0.183829 2.350005 0.062466\nv -0.467501 1.988574 0.367633\nv -0.583492 2.018210 -0.069292\nv -0.582450 2.052476 -0.064241\nv -0.552947 2.023555 0.160216\nv -0.554710 1.987205 0.159895\nv -0.275861 2.005235 0.518965\nv -0.275919 2.042375 0.517772\nv -0.053443 2.419649 0.083914\nv -0.034289 2.540361 0.047355\nv -0.047627 2.552094 0.038776\nv 0.165536 2.164839 -0.745132\nv 0.275750 2.130272 -0.708268\nv 0.307165 2.256252 -0.795770\nv 0.187055 2.266492 -0.830954\nv 0.375172 2.106480 -0.631685\nv 0.416054 2.233526 -0.707535\nv 0.255211 2.115301 -0.630751\nv 0.332168 2.112302 -0.574402\nv 0.225401 2.127288 -0.546128\nv 0.282781 2.130503 -0.506869\nv 0.155660 2.119535 -0.668215\nv 0.140936 2.120265 -0.585217\nv 0.051630 2.119174 -0.607491\nv 0.059998 2.123521 -0.680952\nv 0.061340 2.184875 -0.757808\nv 0.316186 2.134912 -0.454478\nv 0.382699 2.105699 -0.526132\nv 0.477658 2.075927 -0.182708\nv 0.456495 2.092493 -0.351798\nv 0.357403 2.143732 -0.325303\nv 0.365545 2.157311 -0.180326\nv 0.490667 2.099245 -0.364174\nv 0.425169 2.107697 -0.563172\nv 0.488671 2.204352 -0.612968\nv 0.584213 2.082423 -0.187098\nv 0.559558 2.137107 -0.382321\nv 0.444102 2.059856 0.004349\nv 0.331433 2.169831 -0.022672\nv 0.572342 2.028578 0.054001\nv 0.582450 2.052476 -0.064241\nv 0.270796 2.178771 0.073647\nv 0.368743 2.073967 0.157892\nv 0.525207 2.023368 0.249290\nv 0.552947 2.023555 0.160216\nv 0.229679 2.181993 0.125006\nv 0.321626 2.085999 0.241009\nv 0.465093 2.026070 0.368527\nv 0.088376 2.188799 0.202757\nv 0.134358 2.108360 0.392918\nv 0.270059 2.098032 0.306985\nv 0.184110 2.185215 0.159225\nv 0.172453 2.054771 0.560306\nv 0.275919 2.042375 0.517772\nv 0.361582 2.032398 0.460733\nv 0.068840 2.313591 0.139325\nv 0.164300 2.311724 0.116824\nv 0.259930 2.306543 0.053917\nv 0.214341 2.309134 0.093941\nv 0.319551 2.299504 -0.031675\nv 0.348133 2.288781 -0.182719\nv 0.061697 2.331009 0.105825\nv 0.141287 2.330283 0.096967\nv 0.232529 2.325469 0.038313\nv 0.189134 2.327876 0.076211\nv 0.288508 2.318822 -0.042673\nv 0.321829 2.308118 -0.184972\nv 0.269132 2.368203 -0.059092\nv 0.274703 2.446806 -0.135981\nv 0.219577 2.347112 0.022226\nv 0.183829 2.350005 0.062466\nv 0.083852 2.385100 0.091435\nv 0.143629 2.352897 0.085565\nv 0.053443 2.419649 0.083914\nv 0.034377 2.471488 0.070723\nv 0.034289 2.540361 0.047355\nv 0.047627 2.552094 0.038776\nv 0.052778 2.589062 0.027810\nv 0.172808 2.566792 -0.090474\nv 0.167844 2.554747 -0.069549\nv 0.236104 2.524531 -0.126932\nv 0.231926 2.551207 -0.149294\nv 0.270298 2.535848 -0.222707\nv 0.200965 2.481547 -0.095247\nv 0.214794 2.451369 -0.086163\nv 0.297585 2.436957 -0.204284\nv 0.212741 2.422400 -0.059109\nv 0.190850 2.409340 -0.038957\nv 0.108672 2.426237 0.031275\nv 0.143504 2.406895 0.017759\nv 0.084524 2.464651 0.025772\nv 0.090089 2.490066 0.011783\nv 0.158692 2.504199 -0.068212\nv 0.106213 2.505291 -0.027466\nv 0.116351 2.566703 -0.024061\nv 0.306346 2.296294 -0.312567\nv 0.289382 2.421385 -0.315811\nv 0.264686 2.511813 -0.319604\nv 0.340922 2.275133 -0.322756\nv 0.269214 2.415043 -0.394122\nv 0.227903 2.408700 -0.465839\nv 0.199429 2.489064 -0.454855\nv 0.242628 2.500440 -0.390526\nv 0.243891 2.284107 -0.465687\nv 0.285690 2.290201 -0.392423\nv 0.266485 2.261437 -0.495266\nv 0.302054 2.266002 -0.441059\nv 0.134608 2.394988 -0.515476\nv 0.117067 2.479218 -0.506783\nv 0.142866 2.279294 -0.524343\nv 0.144913 2.255870 -0.562777\nv 0.041029 2.474888 -0.531423\nv 0.050606 2.379312 -0.538447\nv 0.054734 2.277817 -0.544933\nv 0.052988 2.253605 -0.590108\nv 0.115745 2.578044 -0.026483\nv 0.226120 2.512916 -0.381072\nv 0.183029 2.502492 -0.442605\nv 0.107555 2.493468 -0.490190\nv 0.037877 2.489501 -0.512770\nv 0.048643 2.594127 -0.000307\nv 0.106857 2.584080 -0.050059\nv 0.158635 2.573972 -0.108696\nv 0.212809 2.559437 -0.162598\nv 0.247972 2.545363 -0.229872\nv 0.248069 2.523338 -0.312946\nv 0.515805 2.172402 -0.639867\nv 0.438511 2.202117 -0.741865\nv 0.590179 2.049013 -0.201652\nv 0.583805 2.102863 -0.390400\nv 0.075099 2.152738 -0.797716\nv 0.076421 2.271080 -0.883770\nv 0.323573 2.230726 -0.827995\nv 0.400085 2.073691 -0.645952\nv 0.304524 2.102540 -0.736486\nv 0.559769 2.147902 -0.543134\nv 0.524007 2.040989 -0.421974\nv 0.585190 2.010457 -0.192246\nv 0.583492 2.018210 -0.069292\nv 0.529835 1.985792 0.243535\nv 0.554710 1.987205 0.159895\nv 0.467501 1.988574 0.367633\nv 0.362883 1.994985 0.460745\nv 0.275861 2.005235 0.518965\nv 0.171034 2.017905 0.562681\nv 0.568457 1.993456 0.058454\nv 0.074233 2.281730 -0.851712\nv 0.186467 2.258181 -0.867070\nv 0.176401 2.134409 -0.780258\nv 0.399468 2.045435 -0.028610\nv 0.370089 2.043509 0.107071\nv 0.247108 2.047304 0.245782\nv 0.115623 2.066716 0.315310\nv 0.049602 2.078440 -0.555665\nv 0.112495 2.072145 -0.555111\nv 0.188260 2.071930 -0.536908\nv 0.237668 2.067577 -0.497052\nv 0.321911 2.059052 -0.343992\nv 0.372184 2.055371 -0.197122\nv 0.073463 2.041224 -0.691972\nv 0.165526 2.038810 -0.683024\nv 0.276607 2.034031 -0.657899\nv 0.349043 2.021079 -0.599987\nv 0.472554 2.008581 -0.403932\nv 0.546260 2.003182 -0.188603\nv 0.530742 2.180394 -0.525645\nv 0.464038 2.108914 -0.492682\nv 0.422101 2.099096 -0.462699\nv 0.338464 2.139323 -0.400769\nv 0.326496 2.270567 -0.385534\nv -0.515127 1.874297 -0.461265\nv -0.512371 1.822589 -0.437378\nv -0.498180 1.964411 -0.439438\nv -0.476088 1.971013 -0.391472\nv -0.442861 1.954352 -0.331701\nv -0.387982 1.866606 -0.254715\nv -0.489640 1.791951 -0.386557\nv -0.456622 1.775527 -0.326952\nv -0.434545 1.773131 -0.287014\nv -0.473463 1.847951 -0.350158\nv -0.422196 1.883887 -0.408013\nv -0.395523 1.903794 -0.374814\nv -0.434768 1.799981 -0.137872\nv -0.374416 1.917079 -0.151280\nv -0.349714 2.001132 -0.154634\nv -0.611282 1.599814 -0.278646\nv -0.604132 1.674121 -0.132815\nv -0.583313 1.580479 -0.423823\nv -0.347973 2.140823 -0.227219\nv -0.430611 1.798772 -0.518312\nv -0.371463 1.815847 -0.544950\nv -0.423842 1.881654 -0.528425\nv -0.367647 1.877229 -0.532282\nv -0.404045 1.924808 -0.498587\nv -0.359140 1.907618 -0.509737\nv -0.380767 1.951340 -0.454269\nv -0.354318 1.942381 -0.434140\nv -0.310359 2.134199 -0.458734\nv -0.337693 2.135631 -0.365516\nv -0.194717 1.904192 -0.560406\nv -0.227718 1.782029 -0.566981\nv -0.210665 2.135795 -0.532142\nv 0.000000 2.133890 -0.570091\nv 0.000000 1.892917 -0.583920\nv 0.000000 1.793341 -0.594343\nv 0.000000 1.665464 -0.723012\nv -0.290232 1.635684 -0.665025\nv -0.457486 1.627730 -0.572201\nv -0.288728 2.282881 -0.240955\nv -0.278601 2.273607 -0.359993\nv -0.245438 2.265396 -0.459760\nv -0.202357 2.354130 -0.228910\nv -0.200615 2.344693 -0.326432\nv -0.172841 2.337263 -0.403493\nv -0.126711 2.400392 -0.229428\nv -0.129316 2.394350 -0.296820\nv -0.104779 2.391018 -0.338242\nv 0.000000 1.807521 0.684757\nv 0.000000 1.896634 0.613382\nv -0.144549 1.791377 0.633352\nv -0.115621 1.885786 0.549833\nv -0.213136 1.757715 0.518773\nv -0.171056 1.834867 0.468986\nv -0.254886 1.737050 0.372539\nv -0.207076 1.804938 0.364078\nv -0.149741 1.831210 0.386184\nv -0.240678 1.691781 0.413536\nv -0.059284 1.932917 0.456746\nv 0.000000 1.965344 0.494111\nv -0.194280 1.678478 0.478710\nv -0.124802 1.683106 0.570628\nv 0.000000 1.686959 0.605531\nv -0.326104 2.046422 -0.031963\nv -0.323471 2.169918 -0.091303\nv -0.327224 1.960350 0.037032\nv -0.377926 1.847099 0.039789\nv -0.532363 1.714199 0.079780\nv -0.261131 2.073662 0.061288\nv -0.270922 2.030841 0.096912\nv -0.297869 1.865005 0.106829\nv -0.265067 1.849636 0.154519\nv -0.201009 1.862357 0.217382\nv -0.164279 1.918301 0.248809\nv -0.096700 1.953570 0.280515\nv -0.061726 2.008265 0.269652\nv -0.069601 2.064814 0.224850\nv -0.142839 2.075776 0.195998\nv -0.202753 2.089402 0.110056\nv -0.237103 2.031143 0.170219\nv -0.034613 2.026020 0.309002\nv -0.032643 2.068776 0.255449\nv -0.327413 1.722835 0.214258\nv -0.287123 2.288412 -0.166632\nv -0.283469 2.195833 0.008535\nv -0.246301 2.297589 -0.056847\nv -0.256357 2.208662 0.051917\nv -0.312767 2.116656 0.055960\nv -0.228987 2.142449 0.106882\nv -0.147650 2.109724 0.208845\nv -0.192083 2.220325 0.128713\nv -0.054949 2.128282 0.222119\nv -0.093052 2.223406 0.174811\nv 0.000000 2.240117 0.184918\nv -0.171532 2.304138 0.024927\nv -0.093066 2.306800 0.066051\nv 0.000000 2.309867 0.096553\nv 0.000000 2.375527 -0.007879\nv 0.000000 2.411919 -0.122650\nv -0.056389 2.409917 -0.134063\nv -0.087800 2.372497 -0.039155\nv -0.140708 2.367643 -0.088995\nv -0.098696 2.406209 -0.168724\nv -0.168260 2.362622 -0.141007\nv -0.109397 2.404479 -0.186410\nv 0.000000 2.254937 -0.528605\nv -0.175468 2.261446 -0.508733\nv -0.113166 2.332258 -0.455244\nv -0.059624 2.388877 -0.369687\nv 0.000000 2.329989 -0.478620\nv 0.000000 2.388923 -0.377519\nv -0.664970 1.569244 0.159656\nv -0.502552 1.572820 0.247938\nv -0.386004 1.656990 0.268942\nv -0.416088 1.508308 0.436300\nv -0.332126 1.508318 0.525061\nv -0.518499 1.559354 0.237870\nv -0.438125 1.501487 0.452956\nv -0.349150 1.499763 0.550456\nv -0.151069 1.557444 0.647942\nv -0.139485 1.570605 0.626687\nv 0.000000 1.586247 0.661550\nv 0.000000 1.573298 0.688091\nv -0.528924 1.348225 0.495028\nv -0.654464 1.413929 0.325764\nv -0.710292 1.522034 0.157066\nv -0.759046 1.474779 0.124654\nv -0.715659 1.372870 0.301973\nv -0.587030 1.238865 0.534920\nv -0.223430 1.174905 0.832655\nv 0.000000 1.178494 0.880653\nv -0.423603 1.174610 0.699562\nv 0.000000 1.087702 0.915123\nv -0.264519 1.090276 0.843649\nv -0.471534 1.124158 0.724792\nv -0.623500 1.212523 0.535866\nv -0.762022 1.341576 0.282003\nv -0.687778 1.171086 0.488757\nv -0.574561 1.007025 0.621773\nv -0.326921 0.889927 0.754288\nv 0.000000 0.840937 0.827983\nv 0.000000 0.682282 0.623633\nv -0.360385 0.761720 0.575233\nv -0.626413 0.952733 0.482823\nv -0.749275 1.144118 0.368120\nv -0.803587 1.307760 0.210347\nv -0.361947 0.691049 0.343791\nv 0.000000 0.613641 0.381227\nv -0.627598 0.915807 0.268922\nv -0.775352 1.129668 0.183551\nv -0.763130 1.151843 0.023235\nv -0.627448 0.957243 0.051040\nv -0.390901 0.723750 0.079440\nv 0.000000 0.636430 0.088391\nv 0.000000 0.742881 -0.165540\nv 0.000000 1.040062 -0.505497\nv -0.413606 0.850018 -0.146581\nv -0.654175 1.053515 -0.146410\nv -0.772203 1.198410 -0.128162\nv -0.669446 1.202225 -0.369024\nv -0.401080 1.100365 -0.444091\nv -0.751318 1.295872 -0.308407\nv 0.000000 1.224444 -0.637672\nv 0.000000 1.419014 -0.749731\nv -0.395132 1.236345 -0.556580\nv -0.385033 1.410074 -0.658598\nv -0.655511 1.302521 -0.473685\nv -0.725788 1.376750 -0.366664\nv -0.711620 1.441974 -0.409039\nv -0.616036 1.421005 -0.566358\nv 0.000000 1.558861 -0.772577\nv -0.345625 1.523682 -0.683890\nv -0.550627 1.503762 -0.575128\nv -0.690995 1.478962 -0.417038\nv -0.731841 1.486719 -0.280430\nv -0.750626 1.448547 -0.269911\nv -0.749222 1.514054 -0.118499\nv -0.775123 1.403957 -0.213535\nv -0.762085 1.496304 -0.082714\nv -0.801792 1.351037 -0.116344\nv -0.778529 1.473085 -0.032552\nv -0.818923 1.315393 0.009473\nv -0.786272 1.460700 0.003253\nv -0.822808 1.308298 0.107611\nv -0.786678 1.453242 0.062267\nv 0.000000 2.149815 0.231318\nv 0.000000 2.087518 0.277678\nv 0.000000 2.047154 0.344610\nv -0.471704 1.549546 0.261580\nv -0.506344 1.927161 -0.459436\nv -0.415422 1.917736 -0.291394\nv 0.000000 0.890564 -0.366968\nv -0.407343 0.974284 -0.326785\nv -0.654852 1.127014 -0.263902\nv -0.360583 1.977544 -0.299052\nv 0.000000 0.932870 0.890302\nv -0.295720 0.958652 0.817717\nv -0.532120 1.063474 0.697474\nv -0.343653 0.815542 0.673833\nv 0.000000 0.751328 0.734880\nv -0.600487 0.969597 0.561370\nv 0.000000 0.640704 0.506664\nv -0.361165 0.719127 0.463746\nv -0.627006 0.927012 0.380106\nv -0.376424 0.695303 0.210406\nv 0.000000 0.612940 0.233599\nv -0.627523 0.924429 0.158771\nv -0.148211 1.655268 -0.705423\nv -0.381715 1.636005 -0.628433\nv -0.176512 1.543669 -0.740357\nv -0.457543 1.515541 -0.639558\nv -0.633856 1.492710 -0.503328\nv -0.720349 1.483539 -0.351213\nv -0.740532 1.500386 -0.199464\nv -0.196644 1.414279 -0.715783\nv -0.511052 1.415295 -0.622169\nv -0.677777 1.431580 -0.494767\nv -0.536359 1.266118 -0.522778\nv -0.705162 1.337795 -0.425824\nv -0.747475 1.412467 -0.320384\nv -0.765681 1.482438 -0.195106\nv -0.201802 1.226260 -0.606494\nv -0.546510 1.145498 -0.411921\nv -0.725309 1.245306 -0.342653\nv -0.772803 1.348944 -0.262347\nv -0.784754 1.450613 -0.148057\nv -0.204837 1.062713 -0.481591\nv -0.542257 1.042737 -0.298371\nv -0.208031 0.922029 -0.350986\nv -0.538004 0.949240 -0.143139\nv -0.721069 1.127096 -0.133736\nv -0.796878 1.272809 -0.121888\nv -0.806764 1.411744 -0.072833\nv -0.211225 0.783196 -0.156161\nv -0.519874 0.828169 0.069790\nv -0.709898 1.046713 0.041097\nv -0.800958 1.231188 0.018459\nv -0.819462 1.387225 0.009676\nv -0.199636 0.664392 0.088858\nv -0.512521 0.796895 0.191646\nv -0.192246 0.637878 0.229847\nv -0.505168 0.790322 0.315973\nv -0.716215 1.014240 0.234169\nv -0.809113 1.216370 0.149308\nv -0.821653 1.379795 0.089904\nv -0.772862 1.464010 0.093461\nv -0.184856 0.636064 0.373306\nv -0.504467 0.810376 0.433970\nv -0.184455 0.664214 0.498579\nv -0.503767 0.845250 0.543323\nv -0.702297 1.040467 0.437590\nv -0.786180 1.223413 0.294764\nv -0.184054 0.707183 0.615208\nv -0.481989 0.881337 0.633757\nv -0.175513 0.769909 0.722335\nv -0.460212 0.938419 0.705666\nv -0.638464 1.079314 0.564922\nv -0.728082 1.251571 0.386972\nv -0.166974 0.853629 0.810938\nv -0.422617 1.002320 0.776694\nv -0.151036 0.935646 0.875133\nv -0.375760 1.100494 0.803878\nv -0.553054 1.160265 0.641564\nv -0.695540 1.272550 0.410822\nv -0.135098 1.081883 0.901043\nv -0.330314 1.169453 0.785385\nv -0.515935 1.202105 0.633389\nv -0.659523 1.304344 0.425599\nv -0.752846 1.423754 0.220974\nv -0.114106 1.171437 0.877833\nv -0.776515 1.407778 0.210780\nv -0.811840 1.379520 0.142350\nv -0.591694 1.383194 0.416746\nv -0.441940 1.334843 0.540334\nv -0.077996 1.569803 0.675836\nv -0.072199 1.582858 0.651938\nv -0.233386 1.543392 0.575874\nv -0.247691 1.532535 0.599199\nv -0.393638 1.494879 0.501706\nv -0.374107 1.502567 0.480680\nv -0.446470 1.524474 0.345055\nv -0.471374 1.518499 0.343523\nv -0.222318 1.683315 0.443100\nv -0.166421 1.679191 0.526160\nv -0.063640 1.686848 0.588079\nv -0.072304 1.803078 0.657543\nv -0.057838 1.897863 0.581607\nv -0.143338 1.858210 0.510015\nv -0.178843 1.776965 0.576063\nv -0.230980 1.773413 0.360749\nv -0.192096 1.800223 0.513233\nv -0.161091 1.821519 0.562392\nv -0.130085 1.837978 0.611551\nv 0.000000 1.848449 0.667516\nv -0.065071 1.849866 0.639534\nv -0.294553 1.974870 0.081320\nv -0.160323 2.030761 0.228352\nv -0.074000 2.175844 0.198465\nv -0.169867 2.157767 0.162731\nv -0.242672 2.168297 0.073352\nv -0.298119 2.148987 0.026200\nv -0.115152 2.017553 0.156549\nv -0.168233 2.011273 0.145885\nv -0.228416 2.014419 0.115986\nv -0.263092 2.004510 0.073692\nv -0.269793 1.938484 0.091387\nv -0.259557 1.920020 0.101469\nv -0.208077 1.945140 0.143319\nv -0.167140 1.961150 0.156246\nv -0.119519 1.987425 0.165465\nv -0.104449 2.011727 0.162308\nv -0.491050 1.540186 0.254578\nv -0.682378 1.467981 0.241415\nv -0.553357 1.515768 0.235100\nv -0.353355 1.530083 0.344968\nv -0.361036 1.522618 0.353044\nv -0.411920 1.537542 0.312929\nv -0.294705 1.521548 0.386092\nv -0.301928 1.514683 0.394911\nv -0.236880 1.513234 0.426710\nv -0.243268 1.507065 0.436681\nv -0.167234 1.544988 0.479125\nv -0.172861 1.539757 0.489737\nv -0.096792 1.577687 0.532358\nv -0.101041 1.572603 0.544245\nv -0.048219 1.580862 0.544036\nv -0.050564 1.575805 0.555693\nv 0.000000 1.589213 0.555477\nv 0.000000 1.583682 0.567260\nv 0.000000 1.449520 0.739982\nv 0.000000 1.436921 0.737554\nv -0.075372 1.429359 0.730447\nv -0.077579 1.441815 0.732118\nv -0.146695 1.412952 0.707735\nv -0.150226 1.425272 0.708614\nv -0.245938 1.375512 0.645643\nv -0.250033 1.387999 0.646649\nv -0.321193 1.345109 0.602259\nv -0.357520 1.329366 0.590477\nv -0.361642 1.335331 0.582716\nv -0.354685 1.343030 0.584577\nv -0.258841 1.357163 0.626602\nv -0.258696 1.345987 0.627153\nv -0.164845 1.365243 0.662992\nv -0.164657 1.354172 0.663449\nv -0.085081 1.375099 0.679020\nv -0.084705 1.364243 0.679449\nv 0.000000 1.376067 0.679324\nv 0.000000 1.365219 0.679549\nv -0.206924 1.758658 0.248524\nv -0.203840 1.756872 0.260826\nv -0.231008 1.716982 0.274667\nv -0.236528 1.712670 0.264635\nv -0.230170 1.668782 0.334014\nv -0.232182 1.658131 0.329581\nv -0.234380 1.663298 0.326139\nv -0.261186 1.911589 0.148196\nv -0.259557 1.920020 0.141972\nv -0.203643 1.947085 0.214170\nv -0.206248 1.937778 0.221744\nv -0.274189 1.934370 0.127424\nv -0.268935 1.934305 0.125881\nv -0.268578 1.999341 0.098910\nv -0.265239 2.011732 0.101058\nv -0.263092 2.004510 0.095065\nv -0.164646 1.962320 0.234950\nv -0.164770 1.954229 0.244122\nv -0.119519 1.987425 0.250050\nv -0.115834 1.981958 0.261309\nv -0.104449 2.011727 0.244719\nv -0.094684 2.014434 0.254297\nv -0.111269 2.016805 0.235643\nv -0.130207 2.021955 0.237820\nv -0.110083 2.022812 0.240583\nv -0.453903 1.685838 -0.426531\nv -0.448491 1.687618 -0.433580\nv -0.444922 1.694717 -0.432182\nv -0.449470 1.696971 -0.437579\nv -0.458400 1.704559 -0.342269\nv -0.455644 1.707950 -0.316835\nv -0.453577 1.706793 -0.312981\nv -0.460269 1.699167 -0.309812\nv -0.461900 1.695894 -0.314131\nv -0.436764 2.025000 -0.430550\nv -0.425404 2.018460 -0.436069\nv -0.366637 1.993569 -0.377757\nv -0.364853 1.994687 -0.377773\nv -0.366244 2.006066 -0.371759\nv -0.367149 1.996599 -0.364885\nv -0.373548 1.999894 -0.367202\nv -0.455293 1.993948 -0.524740\nv -0.442851 1.990154 -0.524384\nv -0.451491 1.936017 -0.547976\nv -0.463102 1.938336 -0.548543\nv -0.229144 2.019993 0.174315\nv -0.222347 2.015109 0.169272\nv -0.168557 2.017801 0.224633\nv -0.164452 2.011397 0.217821\nv -0.438245 2.006328 -0.314179\nv -0.431966 2.012270 -0.316657\nv -0.391594 1.982942 -0.272355\nv -0.399161 1.977045 -0.269953\nv -0.476462 2.020567 -0.389573\nv -0.469529 2.027750 -0.392812\nv -0.517302 1.985586 -0.468982\nv -0.514232 1.991978 -0.477904\nv -0.529061 1.939212 -0.492594\nv -0.527004 1.941116 -0.502956\nv -0.542289 1.875339 -0.499459\nv -0.540440 1.874681 -0.509821\nv -0.545883 1.794161 -0.485343\nv -0.543602 1.790577 -0.495266\nv -0.510051 1.736251 -0.438863\nv -0.505032 1.727728 -0.445445\nv -0.357506 1.945762 -0.238077\nv -0.356600 1.947430 -0.226802\nv -0.356361 1.944756 -0.221039\nv -0.359746 1.933246 -0.229314\nv -0.198037 1.644332 0.371466\nv -0.199028 1.634275 0.367445\nv -0.163269 1.635860 0.414519\nv -0.163060 1.625234 0.411001\nv -0.121900 1.626351 0.464214\nv -0.122233 1.615812 0.460782\nv -0.078368 1.628521 0.505479\nv -0.077493 1.618453 0.504378\nv -0.039372 1.627411 0.521702\nv -0.038984 1.616395 0.520365\nv 0.000000 1.626073 0.537961\nv 0.000000 1.614251 0.536330\nv -0.177693 1.797291 0.269876\nv -0.176299 1.804614 0.258979\nv -0.143912 1.842892 0.306014\nv -0.150215 1.832678 0.313399\nv -0.104058 1.860869 0.419256\nv -0.100894 1.861371 0.430130\nv -0.107739 1.855404 0.434648\nv -0.114757 1.849728 0.418386\nv -0.472872 1.865719 -0.555412\nv -0.460813 1.864482 -0.554693\nv -0.481168 1.789156 -0.540103\nv -0.468029 1.789085 -0.540269\nv -0.460364 1.717267 -0.466592\nv -0.452829 1.711922 -0.463266\nv -0.446935 1.719244 -0.473000\nv -0.349038 1.759902 -0.540458\nv -0.352062 1.746346 -0.541589\nv -0.330708 1.756719 -0.543444\nv -0.289384 1.791699 -0.547145\nv -0.302029 1.800033 -0.543755\nv -0.263504 1.872617 -0.524421\nv -0.277199 1.870340 -0.522024\nv -0.290458 1.918326 -0.500290\nv -0.301601 1.910123 -0.500557\nv -0.323757 1.949227 -0.453957\nv -0.327374 1.944936 -0.448085\nv -0.334344 1.941415 -0.447209\nv -0.414571 1.744054 -0.492674\nv -0.418748 1.734059 -0.486546\nv -0.418654 1.729310 -0.478756\nv 0.515127 1.874297 -0.461265\nv 0.512371 1.822589 -0.437378\nv 0.498180 1.964411 -0.439438\nv 0.476088 1.971013 -0.391472\nv 0.442861 1.954352 -0.331701\nv 0.387982 1.866606 -0.254715\nv 0.489640 1.791951 -0.386557\nv 0.456622 1.775527 -0.326952\nv 0.434545 1.773131 -0.287014\nv 0.473463 1.847951 -0.350158\nv 0.422196 1.883887 -0.408013\nv 0.395523 1.903794 -0.374814\nv 0.434768 1.799981 -0.137872\nv 0.374416 1.917079 -0.151280\nv 0.349714 2.001132 -0.154634\nv 0.611282 1.599814 -0.278646\nv 0.604132 1.674121 -0.132815\nv 0.583313 1.580479 -0.423823\nv 0.347973 2.140823 -0.227219\nv 0.430611 1.798772 -0.518312\nv 0.371463 1.815847 -0.544950\nv 0.423842 1.881654 -0.528425\nv 0.367647 1.877229 -0.532282\nv 0.404045 1.924808 -0.498587\nv 0.359140 1.907618 -0.509737\nv 0.380767 1.951340 -0.454269\nv 0.354318 1.942381 -0.434140\nv 0.310359 2.134199 -0.458734\nv 0.337693 2.135631 -0.365516\nv 0.194717 1.904192 -0.560406\nv 0.227718 1.782029 -0.566981\nv 0.210665 2.135795 -0.532142\nv 0.290232 1.635684 -0.665025\nv 0.457486 1.627730 -0.572201\nv 0.288728 2.282881 -0.240955\nv 0.278601 2.273607 -0.359993\nv 0.245438 2.265396 -0.459760\nv 0.202357 2.354130 -0.228910\nv 0.200615 2.344693 -0.326432\nv 0.172841 2.337263 -0.403493\nv 0.126711 2.400392 -0.229428\nv 0.129316 2.394350 -0.296820\nv 0.104779 2.391018 -0.338242\nv 0.144549 1.791377 0.633352\nv 0.115621 1.885786 0.549833\nv 0.213136 1.757715 0.518773\nv 0.171056 1.834867 0.468986\nv 0.254886 1.737050 0.372539\nv 0.207076 1.804938 0.364078\nv 0.149741 1.831210 0.386184\nv 0.240678 1.691781 0.413536\nv 0.059284 1.932917 0.456746\nv 0.194280 1.678478 0.478710\nv 0.124802 1.683106 0.570628\nv 0.326104 2.046422 -0.031963\nv 0.323471 2.169918 -0.091303\nv 0.327224 1.960350 0.037032\nv 0.377926 1.847099 0.039789\nv 0.532363 1.714199 0.079780\nv 0.261131 2.073662 0.061288\nv 0.270922 2.030841 0.096912\nv 0.297869 1.865005 0.106829\nv 0.265067 1.849636 0.154519\nv 0.201009 1.862357 0.217382\nv 0.164279 1.918301 0.248809\nv 0.096700 1.953570 0.280515\nv 0.061726 2.008265 0.269652\nv 0.069601 2.064814 0.224850\nv 0.142839 2.075776 0.195998\nv 0.202753 2.089402 0.110056\nv 0.237103 2.031143 0.170219\nv 0.034613 2.026020 0.309002\nv 0.032643 2.068776 0.255449\nv 0.327413 1.722835 0.214258\nv 0.287123 2.288412 -0.166632\nv 0.283469 2.195833 0.008535\nv 0.246301 2.297589 -0.056847\nv 0.256357 2.208662 0.051917\nv 0.312767 2.116656 0.055960\nv 0.228987 2.142449 0.106882\nv 0.147650 2.109724 0.208845\nv 0.192083 2.220325 0.128713\nv 0.054949 2.128282 0.222119\nv 0.093052 2.223406 0.174811\nv 0.171532 2.304138 0.024927\nv 0.093066 2.306800 0.066051\nv 0.056389 2.409917 -0.134063\nv 0.087800 2.372497 -0.039155\nv 0.140708 2.367643 -0.088995\nv 0.098696 2.406209 -0.168724\nv 0.168260 2.362622 -0.141007\nv 0.109397 2.404479 -0.186410\nv 0.175468 2.261446 -0.508733\nv 0.113166 2.332258 -0.455244\nv 0.059624 2.388877 -0.369687\nv 0.664970 1.569244 0.159656\nv 0.502552 1.572820 0.247938\nv 0.386004 1.656990 0.268942\nv 0.416088 1.508308 0.436300\nv 0.332126 1.508318 0.525061\nv 0.518499 1.559354 0.237870\nv 0.438125 1.501487 0.452956\nv 0.349150 1.499763 0.550456\nv 0.151069 1.557444 0.647942\nv 0.139485 1.570605 0.626687\nv 0.528924 1.348225 0.495028\nv 0.654464 1.413929 0.325764\nv 0.710292 1.522034 0.157066\nv 0.759046 1.474779 0.124654\nv 0.715659 1.372870 0.301973\nv 0.587030 1.238865 0.534920\nv 0.223430 1.174905 0.832655\nv 0.423603 1.174610 0.699562\nv 0.264519 1.090276 0.843649\nv 0.471534 1.124158 0.724792\nv 0.623500 1.212523 0.535866\nv 0.762022 1.341576 0.282003\nv 0.687778 1.171086 0.488757\nv 0.574561 1.007025 0.621773\nv 0.326921 0.889927 0.754288\nv 0.360385 0.761720 0.575233\nv 0.626413 0.952733 0.482823\nv 0.749275 1.144118 0.368120\nv 0.803587 1.307760 0.210347\nv 0.361947 0.691049 0.343791\nv 0.627598 0.915807 0.268922\nv 0.775352 1.129668 0.183551\nv 0.763130 1.151843 0.023235\nv 0.627448 0.957243 0.051040\nv 0.390901 0.723750 0.079440\nv 0.413606 0.850018 -0.146581\nv 0.654175 1.053515 -0.146410\nv 0.772203 1.198410 -0.128162\nv 0.669446 1.202225 -0.369024\nv 0.401080 1.100365 -0.444091\nv 0.751318 1.295872 -0.308407\nv 0.395132 1.236345 -0.556580\nv 0.385033 1.410074 -0.658598\nv 0.655511 1.302521 -0.473685\nv 0.725788 1.376750 -0.366664\nv 0.711620 1.441974 -0.409039\nv 0.616036 1.421005 -0.566358\nv 0.345625 1.523682 -0.683890\nv 0.550627 1.503762 -0.575128\nv 0.690995 1.478962 -0.417038\nv 0.731841 1.486719 -0.280430\nv 0.750626 1.448547 -0.269911\nv 0.749222 1.514054 -0.118499\nv 0.775123 1.403957 -0.213535\nv 0.762085 1.496304 -0.082714\nv 0.801792 1.351037 -0.116344\nv 0.778529 1.473085 -0.032552\nv 0.818923 1.315393 0.009473\nv 0.786272 1.460700 0.003253\nv 0.822808 1.308298 0.107611\nv 0.786678 1.453242 0.062267\nv 0.471704 1.549546 0.261580\nv 0.506344 1.927161 -0.459436\nv 0.415422 1.917736 -0.291394\nv 0.407343 0.974284 -0.326785\nv 0.654852 1.127014 -0.263902\nv 0.360583 1.977544 -0.299052\nv 0.295720 0.958652 0.817717\nv 0.532120 1.063474 0.697474\nv 0.343653 0.815542 0.673833\nv 0.600487 0.969597 0.561370\nv 0.361165 0.719127 0.463746\nv 0.627006 0.927012 0.380106\nv 0.376424 0.695303 0.210406\nv 0.627523 0.924429 0.158771\nv 0.148211 1.655268 -0.705423\nv 0.381715 1.636005 -0.628433\nv 0.176512 1.543669 -0.740357\nv 0.457543 1.515541 -0.639558\nv 0.633856 1.492710 -0.503328\nv 0.720349 1.483539 -0.351213\nv 0.740532 1.500386 -0.199464\nv 0.196644 1.414279 -0.715783\nv 0.511052 1.415295 -0.622169\nv 0.677777 1.431580 -0.494767\nv 0.536359 1.266118 -0.522778\nv 0.705162 1.337795 -0.425824\nv 0.747475 1.412467 -0.320384\nv 0.765681 1.482438 -0.195106\nv 0.201802 1.226260 -0.606494\nv 0.546510 1.145498 -0.411921\nv 0.725309 1.245306 -0.342653\nv 0.772803 1.348944 -0.262347\nv 0.784754 1.450613 -0.148057\nv 0.204837 1.062713 -0.481591\nv 0.542257 1.042737 -0.298371\nv 0.208031 0.922029 -0.350986\nv 0.538004 0.949240 -0.143139\nv 0.721069 1.127096 -0.133736\nv 0.796878 1.272809 -0.121888\nv 0.806764 1.411744 -0.072833\nv 0.211225 0.783196 -0.156161\nv 0.519874 0.828169 0.069790\nv 0.709898 1.046713 0.041097\nv 0.800958 1.231188 0.018459\nv 0.819462 1.387225 0.009676\nv 0.199636 0.664392 0.088858\nv 0.512521 0.796895 0.191646\nv 0.192246 0.637878 0.229847\nv 0.505168 0.790322 0.315973\nv 0.716215 1.014240 0.234169\nv 0.809113 1.216370 0.149308\nv 0.821653 1.379795 0.089904\nv 0.772862 1.464010 0.093461\nv 0.184856 0.636064 0.373306\nv 0.504467 0.810376 0.433970\nv 0.184455 0.664214 0.498579\nv 0.503767 0.845250 0.543323\nv 0.702297 1.040467 0.437590\nv 0.786180 1.223413 0.294764\nv 0.184054 0.707183 0.615208\nv 0.481989 0.881337 0.633757\nv 0.175513 0.769909 0.722335\nv 0.460212 0.938419 0.705666\nv 0.638464 1.079314 0.564922\nv 0.728082 1.251571 0.386972\nv 0.166974 0.853629 0.810938\nv 0.422617 1.002320 0.776694\nv 0.151036 0.935646 0.875133\nv 0.375760 1.100494 0.803878\nv 0.553054 1.160265 0.641564\nv 0.695540 1.272550 0.410822\nv 0.135098 1.081883 0.901043\nv 0.330314 1.169453 0.785385\nv 0.515935 1.202105 0.633389\nv 0.659523 1.304344 0.425599\nv 0.752846 1.423754 0.220974\nv 0.114106 1.171437 0.877833\nv 0.776515 1.407778 0.210780\nv 0.811840 1.379520 0.142350\nv 0.591694 1.383194 0.416746\nv 0.441940 1.334843 0.540334\nv 0.077996 1.569803 0.675836\nv 0.072199 1.582858 0.651938\nv 0.233386 1.543392 0.575874\nv 0.247691 1.532535 0.599199\nv 0.393638 1.494879 0.501706\nv 0.374107 1.502567 0.480680\nv 0.446470 1.524474 0.345055\nv 0.471374 1.518499 0.343523\nv 0.222318 1.683315 0.443100\nv 0.166421 1.679191 0.526160\nv 0.063640 1.686848 0.588079\nv 0.072304 1.803078 0.657543\nv 0.057838 1.897863 0.581607\nv 0.143338 1.858210 0.510015\nv 0.178843 1.776965 0.576063\nv 0.230980 1.773413 0.360749\nv 0.192096 1.800223 0.513233\nv 0.161091 1.821519 0.562392\nv 0.130085 1.837978 0.611551\nv 0.065071 1.849866 0.639534\nv 0.294553 1.974870 0.081320\nv 0.160323 2.030761 0.228352\nv 0.074000 2.175844 0.198465\nv 0.169867 2.157767 0.162731\nv 0.242672 2.168297 0.073352\nv 0.298119 2.148987 0.026200\nv 0.115152 2.017553 0.156549\nv 0.168233 2.011273 0.145885\nv 0.228416 2.014419 0.115986\nv 0.263092 2.004510 0.073692\nv 0.269793 1.938484 0.091387\nv 0.259557 1.920020 0.101469\nv 0.208077 1.945140 0.143319\nv 0.167140 1.961150 0.156246\nv 0.119519 1.987425 0.165465\nv 0.104449 2.011727 0.162308\nv 0.491050 1.540186 0.254578\nv 0.682378 1.467981 0.241415\nv 0.553357 1.515768 0.235100\nv 0.353355 1.530083 0.344968\nv 0.361036 1.522618 0.353044\nv 0.411920 1.537542 0.312929\nv 0.294705 1.521548 0.386092\nv 0.301928 1.514683 0.394911\nv 0.236880 1.513234 0.426710\nv 0.243268 1.507065 0.436681\nv 0.167234 1.544988 0.479125\nv 0.172861 1.539757 0.489737\nv 0.096792 1.577687 0.532358\nv 0.101041 1.572603 0.544245\nv 0.048219 1.580862 0.544036\nv 0.050564 1.575805 0.555693\nv 0.075372 1.429359 0.730447\nv 0.077579 1.441815 0.732118\nv 0.146695 1.412952 0.707735\nv 0.150226 1.425272 0.708614\nv 0.245938 1.375512 0.645643\nv 0.250033 1.387999 0.646649\nv 0.321193 1.345109 0.602259\nv 0.357520 1.329366 0.590477\nv 0.361642 1.335331 0.582716\nv 0.354685 1.343030 0.584577\nv 0.258841 1.357163 0.626602\nv 0.258696 1.345987 0.627153\nv 0.164845 1.365243 0.662992\nv 0.164657 1.354172 0.663449\nv 0.085081 1.375099 0.679020\nv 0.084705 1.364243 0.679449\nv 0.206924 1.758658 0.248524\nv 0.203840 1.756872 0.260826\nv 0.231008 1.716982 0.274667\nv 0.236528 1.712670 0.264635\nv 0.230170 1.668782 0.334014\nv 0.232182 1.658131 0.329581\nv 0.234380 1.663298 0.326139\nv 0.261186 1.911589 0.148196\nv 0.259557 1.920020 0.141972\nv 0.203643 1.947085 0.214170\nv 0.206248 1.937778 0.221744\nv 0.274189 1.934370 0.127424\nv 0.268935 1.934305 0.125881\nv 0.268578 1.999341 0.098910\nv 0.265239 2.011732 0.101058\nv 0.263092 2.004510 0.095065\nv 0.164646 1.962320 0.234950\nv 0.164770 1.954229 0.244122\nv 0.119519 1.987425 0.250050\nv 0.115834 1.981958 0.261309\nv 0.104449 2.011727 0.244719\nv 0.094684 2.014434 0.254297\nv 0.111269 2.016805 0.235643\nv 0.130207 2.021955 0.237820\nv 0.110083 2.022812 0.240583\nv 0.453903 1.685838 -0.426531\nv 0.448491 1.687618 -0.433580\nv 0.444922 1.694717 -0.432182\nv 0.449470 1.696971 -0.437579\nv 0.458400 1.704559 -0.342269\nv 0.455644 1.707950 -0.316835\nv 0.453577 1.706793 -0.312981\nv 0.460269 1.699167 -0.309812\nv 0.461900 1.695894 -0.314131\nv 0.436764 2.025000 -0.430550\nv 0.425404 2.018460 -0.436069\nv 0.366637 1.993569 -0.377757\nv 0.364853 1.994687 -0.377773\nv 0.366244 2.006066 -0.371759\nv 0.367149 1.996599 -0.364885\nv 0.373548 1.999894 -0.367202\nv 0.455293 1.993948 -0.524740\nv 0.442851 1.990154 -0.524384\nv 0.451491 1.936017 -0.547976\nv 0.463102 1.938336 -0.548543\nv 0.229144 2.019993 0.174315\nv 0.222347 2.015109 0.169272\nv 0.168557 2.017801 0.224633\nv 0.164452 2.011397 0.217821\nv 0.438245 2.006328 -0.314179\nv 0.431966 2.012270 -0.316657\nv 0.391594 1.982942 -0.272355\nv 0.399161 1.977045 -0.269953\nv 0.476462 2.020567 -0.389573\nv 0.469529 2.027750 -0.392812\nv 0.517302 1.985586 -0.468982\nv 0.514232 1.991978 -0.477904\nv 0.529061 1.939212 -0.492594\nv 0.527004 1.941116 -0.502956\nv 0.542289 1.875339 -0.499459\nv 0.540440 1.874681 -0.509821\nv 0.545883 1.794161 -0.485343\nv 0.543602 1.790577 -0.495266\nv 0.510051 1.736251 -0.438863\nv 0.505032 1.727728 -0.445445\nv 0.357506 1.945762 -0.238077\nv 0.356600 1.947430 -0.226802\nv 0.356361 1.944756 -0.221039\nv 0.359746 1.933246 -0.229314\nv 0.198037 1.644332 0.371466\nv 0.199028 1.634275 0.367445\nv 0.163269 1.635860 0.414519\nv 0.163060 1.625234 0.411001\nv 0.121900 1.626351 0.464214\nv 0.122233 1.615812 0.460782\nv 0.078368 1.628521 0.505479\nv 0.077493 1.618453 0.504378\nv 0.039372 1.627411 0.521702\nv 0.038984 1.616395 0.520365\nv 0.177693 1.797291 0.269876\nv 0.176299 1.804614 0.258979\nv 0.143912 1.842892 0.306014\nv 0.150215 1.832678 0.313399\nv 0.104058 1.860869 0.419256\nv 0.100894 1.861371 0.430130\nv 0.107739 1.855404 0.434648\nv 0.114757 1.849728 0.418386\nv 0.472872 1.865719 -0.555412\nv 0.460813 1.864482 -0.554693\nv 0.481168 1.789156 -0.540103\nv 0.468029 1.789085 -0.540269\nv 0.460364 1.717267 -0.466592\nv 0.452829 1.711922 -0.463266\nv 0.446935 1.719244 -0.473000\nv 0.349038 1.759902 -0.540458\nv 0.352062 1.746346 -0.541589\nv 0.330708 1.756719 -0.543444\nv 0.289384 1.791699 -0.547145\nv 0.302029 1.800033 -0.543755\nv 0.263504 1.872617 -0.524421\nv 0.277199 1.870340 -0.522024\nv 0.290458 1.918326 -0.500290\nv 0.301601 1.910123 -0.500557\nv 0.323757 1.949227 -0.453957\nv 0.327374 1.944936 -0.448085\nv 0.334344 1.941415 -0.447209\nv 0.414571 1.744054 -0.492674\nv 0.418748 1.734059 -0.486546\nv 0.418654 1.729310 -0.478756\nv -0.191822 1.994182 0.184361\nv -0.184688 2.056364 0.166017\nv -0.213100 2.047200 0.152892\nv -0.233862 2.023631 0.144121\nv -0.241412 1.991974 0.142055\nv -0.233727 1.960709 0.147248\nv -0.212865 1.938216 0.158307\nv -0.184416 1.930520 0.172270\nv -0.156005 1.939684 0.185395\nv -0.135242 1.963253 0.194166\nv -0.127692 1.994911 0.196231\nv -0.135378 2.026175 0.191039\nv -0.156240 2.048668 0.179980\nv -0.164929 2.100404 0.122152\nv -0.214140 2.084531 0.099419\nv -0.250101 2.043708 0.084228\nv -0.263178 1.988875 0.080650\nv -0.249866 1.934724 0.089644\nv -0.213733 1.895764 0.108799\nv -0.164459 1.882435 0.132983\nv -0.115248 1.898308 0.155717\nv -0.079286 1.939129 0.170908\nv -0.066209 1.993963 0.174487\nv -0.079521 2.048114 0.165493\nv -0.115655 2.087074 0.146337\nv -0.137838 2.114500 0.064522\nv -0.194661 2.096171 0.038272\nv -0.236186 2.049034 0.020731\nv -0.251286 1.985718 0.016599\nv -0.235915 1.923190 0.026984\nv -0.194191 1.878202 0.049102\nv -0.137294 1.862811 0.077028\nv -0.080471 1.881140 0.103279\nv -0.038946 1.928277 0.120820\nv -0.023845 1.991593 0.124951\nv -0.039217 2.054121 0.114566\nv -0.080941 2.099109 0.092448\nv -0.110674 2.094877 0.008566\nv -0.159884 2.079004 -0.014167\nv -0.195846 2.038182 -0.029358\nv -0.208923 1.983348 -0.032936\nv -0.195611 1.929197 -0.023943\nv -0.159477 1.890237 -0.004787\nv -0.110203 1.876908 0.019398\nv -0.060993 1.892780 0.042131\nv -0.025031 1.933602 0.057322\nv -0.011954 1.988436 0.060900\nv -0.025266 2.042587 0.051907\nv -0.061400 2.081547 0.032751\nv -0.090715 2.046791 -0.030721\nv -0.119128 2.037627 -0.043845\nv -0.139890 2.014058 -0.052616\nv -0.147440 1.982401 -0.054682\nv -0.139754 1.951136 -0.049489\nv -0.118893 1.928643 -0.038430\nv -0.090444 1.920946 -0.024466\nv -0.062032 1.930111 -0.011342\nv -0.041269 1.953680 -0.002570\nv -0.033719 1.985338 -0.000505\nv -0.041405 2.016603 -0.005698\nv -0.062267 2.039096 -0.016757\nv -0.083310 1.983128 -0.042811\nv -0.213817 2.009256 0.165009\nv -0.217668 1.993113 0.163955\nv -0.213748 1.977170 0.166603\nv -0.203109 1.965699 0.172243\nv -0.188603 1.961775 0.179363\nv -0.174115 1.966449 0.186056\nv -0.163526 1.978468 0.190528\nv -0.159677 1.994611 0.191582\nv -0.163597 2.010553 0.188933\nv -0.174235 2.022024 0.183294\nv -0.188741 2.025948 0.176174\nv -0.203230 2.021275 0.169482\nv 0.191822 1.994182 0.184361\nv 0.184688 2.056364 0.166017\nv 0.213100 2.047200 0.152892\nv 0.233862 2.023631 0.144121\nv 0.241412 1.991974 0.142055\nv 0.233727 1.960709 0.147248\nv 0.212865 1.938216 0.158307\nv 0.184416 1.930520 0.172270\nv 0.156005 1.939684 0.185395\nv 0.135242 1.963253 0.194166\nv 0.127692 1.994911 0.196231\nv 0.135378 2.026175 0.191039\nv 0.156240 2.048668 0.179980\nv 0.164929 2.100404 0.122152\nv 0.214140 2.084531 0.099419\nv 0.250101 2.043708 0.084228\nv 0.263178 1.988875 0.080650\nv 0.249866 1.934724 0.089644\nv 0.213733 1.895764 0.108799\nv 0.164459 1.882435 0.132983\nv 0.115248 1.898308 0.155717\nv 0.079286 1.939129 0.170908\nv 0.066209 1.993963 0.174487\nv 0.079521 2.048114 0.165493\nv 0.115655 2.087074 0.146337\nv 0.137838 2.114500 0.064522\nv 0.194661 2.096171 0.038272\nv 0.236186 2.049034 0.020731\nv 0.251286 1.985718 0.016599\nv 0.235915 1.923190 0.026984\nv 0.194191 1.878202 0.049102\nv 0.137294 1.862811 0.077028\nv 0.080471 1.881140 0.103279\nv 0.038946 1.928277 0.120820\nv 0.023845 1.991593 0.124951\nv 0.039217 2.054121 0.114566\nv 0.080941 2.099109 0.092448\nv 0.110674 2.094877 0.008566\nv 0.159884 2.079004 -0.014167\nv 0.195846 2.038182 -0.029358\nv 0.208923 1.983348 -0.032936\nv 0.195611 1.929197 -0.023943\nv 0.159477 1.890237 -0.004787\nv 0.110203 1.876908 0.019398\nv 0.060993 1.892780 0.042131\nv 0.025031 1.933602 0.057322\nv 0.011954 1.988436 0.060900\nv 0.025266 2.042587 0.051907\nv 0.061400 2.081547 0.032751\nv 0.090715 2.046791 -0.030721\nv 0.119128 2.037627 -0.043845\nv 0.139890 2.014058 -0.052616\nv 0.147440 1.982401 -0.054682\nv 0.139754 1.951136 -0.049489\nv 0.118893 1.928643 -0.038430\nv 0.090444 1.920946 -0.024466\nv 0.062032 1.930111 -0.011342\nv 0.041269 1.953680 -0.002570\nv 0.033719 1.985338 -0.000505\nv 0.041405 2.016603 -0.005698\nv 0.062267 2.039096 -0.016757\nv 0.083310 1.983128 -0.042811\nv 0.213817 2.009256 0.165009\nv 0.217668 1.993113 0.163955\nv 0.213748 1.977170 0.166603\nv 0.203109 1.965699 0.172243\nv 0.188603 1.961775 0.179363\nv 0.174115 1.966449 0.186056\nv 0.163526 1.978468 0.190528\nv 0.159677 1.994611 0.191582\nv 0.163597 2.010553 0.188933\nv 0.174235 2.022024 0.183294\nv 0.188741 2.025948 0.176174\nv 0.203230 2.021275 0.169482\nv 0.790843 -0.941798 -0.178996\nv 0.790724 -1.022096 0.171394\nv 0.790724 -0.840746 0.171394\nv 0.790835 -0.840746 -0.158250\nv 0.262309 -1.217591 0.558970\nv 0.262299 -1.417026 0.588515\nv 0.262309 -0.840689 0.558970\nv 0.096409 -0.515307 -0.164999\nv 0.176564 -0.515313 -0.151812\nv 0.238485 -0.515328 -0.114556\nv 0.290267 -0.515328 -0.040555\nv 0.290227 -0.515328 0.080437\nv 0.238397 -0.515328 0.143361\nv 0.176444 -0.515313 0.201982\nv 0.096278 -0.515307 0.222691\nv 0.262688 -0.945065 -0.563779\nv 0.262665 -0.840689 -0.497300\nv 0.262742 -1.210205 -0.726282\nv 0.262742 -1.431799 -0.726282\nv 0.262703 -1.646008 -0.608099\nv 0.262600 -1.727260 -0.305251\nv 0.262468 -1.697714 0.086233\nv 0.262338 -1.586917 0.470332\nv 0.480867 -1.651029 0.071141\nv 0.480989 -1.677992 -0.286115\nv 0.480749 -1.549919 0.364306\nv 0.480713 -1.394884 0.461361\nv 0.480722 -1.212886 0.437097\nv 0.480722 -0.840704 0.502545\nv 0.481068 -0.966839 -0.522038\nv 0.481047 -0.840704 -0.461371\nv 0.481118 -1.206145 -0.670333\nv 0.481118 -1.408365 -0.670333\nv 0.481081 -1.603845 -0.562481\nv 0.649804 -1.342083 -0.512200\nv 0.649797 -1.156924 -0.495856\nv 0.649777 -1.484589 -0.433576\nv 0.649708 -1.538643 -0.232103\nv 0.649621 -1.518986 0.028338\nv 0.649535 -1.445276 0.240307\nv 0.649507 -1.332255 0.311061\nv 0.649515 -1.199577 0.293372\nv 0.649515 -0.840746 0.293372\nv 0.649762 -0.947090 -0.391848\nv 0.649751 -0.840746 -0.359866\nv 0.815688 -1.050080 -0.229704\nv 0.741764 -1.180644 -0.229704\nv 0.719175 -1.281132 -0.192828\nv 0.719146 -1.319248 -0.098314\nv 0.719108 -1.305387 0.023862\nv 0.741650 -1.253411 0.143738\nv 0.741638 -1.147102 0.180621\nv 0.235435 -0.692714 0.501230\nv 0.235755 -0.692714 -0.446784\nv 0.431755 -0.692728 -0.414537\nv 0.583169 -0.692766 -0.323436\nv 0.709792 -0.692766 -0.142483\nv 0.709693 -0.692766 0.153376\nv 0.582956 -0.692766 0.307244\nv 0.431463 -0.692728 0.450587\nv 0.407673 -0.571387 0.205197\nv 0.496301 -0.571387 0.097596\nv 0.301733 -0.571361 0.305438\nv 0.164649 -0.571351 0.340852\nv 0.164873 -0.571351 -0.322100\nv 0.301937 -0.571361 -0.299550\nv 0.407822 -0.571387 -0.235841\nv 0.496372 -0.571387 -0.109300\n# 3618 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng shoe1l\nusemtl black\ns 1\nf 29 24 40 48\nf 118 121 120 58\nf 119 114 116 118\nf 115 116 114 113\nf 105 97 98\nf 94 95 89 90\nf 83 90 89 84\nf 87 88 86 79\nf 82 76 75 81\nf 76 69 70 75\nf 67 71 70 66\nf 20 66 65 21\nf 61 46 44 60\nf 51 55 54 49\nf 48 49 47 29\nf 43 40 39 42\nf 33 34 28\nf 28 9 7 27\nf 3 4 1 2\nf 25 3 2 24\nf 30 25 24 29\nf 11 9 28 34\nf 42 39 38 41\nf 29 47 45 30\nf 49 54 53 47\nf 60 44 45 52\nf 46 62 33 32\nf 66 70 69 65\nf 75 70 71 74\nf 80 74 77 79\nf 79 86 85 80\nf 68 15 14\nf 88 93 92 86\nf 93 98 97 92\nf 100 94 96 103\nf 115 109 108\nf 50 43 114 119\nf 120 63 59 58\nf 113 42 41 110\nf 63 64 61 60 52 53 54 55 57 59\nf 48 40 43 50\nf 119 118 58 56\nf 116 115 108 117\nf 114 43 42 113\nf 97 105 103 96\nf 91 96 94 90\nf 85 91 90 83\nf 79 77 78 87\nf 83 84 82 81\nf 72 77 74 71\nf 68 72 71 67\nf 18 67 66 20\nf 61 64 62 46\nf 56 57 55 51\nf 50 51 49 48\nf 30 45 44 31\nf 39 2 1 38\nf 32 27 26 31\nf 27 7 5 26\nf 5 6 4 3\nf 26 5 3 25\nf 31 26 25 30\nf 40 24 2 39\nf 46 32 31 44\nf 47 53 52 45\nf 58 59 57 56\nf 27 32 33 28\nf 67 18 15 68\nf 14 73 72 68\nf 73 78 77 72\nf 80 85 83 81\nf 81 75 74 80\nf 86 92 91 85\nf 92 97 96 91\nf 94 100 99 95\nf 113 110 109 115\nf 50 119 56 51\nf 118 116 117 121\ng shoe2l\nusemtl white\ns 2\nf 173 175 174\nf 23 112 37 36 35\nf 21 99 102 22\nf 101 104 111 182 183 178 179\nf 108 109 106 107\nf 101 102 99 100\nf 38 1 164 185\nf 36 170 171 35\nf 6 168 163 4\nf 18 20 19 17\nf 17 12 15 18\nf 9 10 8 7\nf 9 11 10\nf 16 12 17\nf 21 22 19 20\nf 166 175 172 162\nf 165 169 176 184\nf 103 104 101 100\nf 110 111 106 109\nf 112 102 101 179 180\nf 99 21 65 69 89 95\nf 178 180 179\nf 166 168 167\nf 112 23 22 102\nf 182 111 110 41 181\nf 98 107 106 105\nf 183 184 176 178\nf 35 171 173 23\nf 164 1 4 163\nf 6 8 16 167 168\nf 14 15 12 13\nf 7 8 6 5\nf 11 13 12 10\nf 167 16 17 19 174 175 166\nf 23 173 174 19 22\nf 162 172 169 165\nf 37 177 170 36\nf 41 38 185 181\nf 105 106 104 103\nf 111 104 106\nf 177 37 112 180\nf 12 16 8 10\nf 89 69 76 82 84\nf 181 183 182\ng shoe3l\nusemtl dkgrey\ns 24\nf 143 150 151 142\nf 149 144 145 146 147 148\nf 141 152 153 154\nf 142 151 152 141\nf 144 149 150 143\ns 6\nf 13 11 139 138\nf 87 78 135 134\nf 107 98 131 130\nf 120 121 127 126\nf 33 62 123 122\nf 63 120 126 125\nf 108 107 130 129\nf 88 87 134 133\nf 14 13 138 137\nf 11 34 140 139\nf 78 73 136 135\nf 98 93 132 131\nf 121 117 128 127\nf 62 64 124 123\nf 64 63 125 124\nf 117 108 129 128\nf 93 88 133 132\nf 73 14 137 136\nf 34 33 122 140\ns 23\nf 136 137 154 157 156\nf 138 139 142 141\nf 135 136 156 155\nf 137 138 141 154\nf 139 140 143 142\nf 140 122 144 143\ns 21\nf 122 123 145 144\nf 125 126 148 147\nf 123 124 146 145\nf 124 125 147 146\ns 22\nf 131 132 159 158 153\nf 127 128 150 149\nf 128 129 151 150\nf 130 131 153 152\nf 126 127 149 148\nf 129 130 152 151\ns off\nf 134 135 155 161\nf 133 134 161 160\nf 156 159 160 161 155\nf 157 158 159 156\nf 132 133 160 159\nf 154 153 158 157\ng shoe4l\nusemtl black\nf 168 166 191 190\ns 30\nf 187 188 193 194\nf 189 190 191 192\nf 194 195 186 187\nf 188 189 192 193\ns 31\nf 197 198 205 196\nf 199 200 203 204\nf 198 199 204 205\nf 200 201 202 203\ns 27\nf 164 163 189 188\nf 185 164 188 187\nf 163 168 190 189\nf 181 185 187 186\ns 26\nf 162 165 193 192\nf 165 184 194 193\nf 166 162 192 191\nf 184 183 195 194\ns 17\nf 180 178 202 201\nf 183 181 186 195\ns 1\nf 175 173 197 196\ns 29\nf 173 171 198 197\nf 177 180 201 200\nf 171 170 199 198\nf 170 177 200 199\ns 28\nf 169 172 205 204\nf 176 169 204 203\nf 172 175 196 205\nf 178 176 203 202\ng lowlegl\nusemtl dkblue_pure\ns 1\nf 210 208 238 253\nf 218 216 250 249\nf 226 224 246 245\nf 234 232 242 241\nf 237 236 206 207\nf 229 228 230 231\nf 221 220 222 223\nf 213 212 214 215\nf 207 206 208 209\nf 215 214 216 217\nf 223 222 224 225\nf 231 230 232 233\nf 208 206 239 238\nf 232 230 243 242\nf 224 222 247 246\nf 216 214 251 250\nf 248 249 268 267\nf 212 210 253 252\nf 220 218 249 248\nf 228 226 245 244\nf 236 234 241 240\nf 235 234 236 237\nf 227 226 228 229\nf 219 218 220 221\nf 211 210 212 213\nf 209 208 210 211\nf 217 216 218 219\nf 225 224 226 227\nf 233 232 234 235\nf 206 236 240 239\nf 230 228 244 243\nf 222 220 248 247\nf 214 212 252 251\nf 267 268 286 287\ns 2\nf 269 249 250\nf 286 269 272 271\nf 263 264 283 282\nf 259 260 279 278\nf 255 256 275 274\nf 246 247 266 265\nf 242 243 262 261\nf 238 239 258 257\nf 284 285 270 271 272 273 274 275 276 277 278 279 280 281 282 283\nf 253 238 257 256\nf 241 242 261 260\nf 245 246 265 264\nf 268 269 286\nf 256 257 276 275\nf 260 261 280 279\nf 264 265 284 283\nf 287 286 271 270\nf 248 266 247\nf 266 267 287\nf 262 263 282 281\nf 258 259 278 277\nf 254 255 274 273\nf 250 251 254 269\nf 243 244 263 262\nf 239 240 259 258\nf 251 252 255 254\nf 252 253 256 255\nf 240 241 260 259\nf 244 245 264 263\nf 269 254 273 272\nf 257 258 277 276\nf 261 262 281 280\nf 265 266 285 284\nf 266 287 270 285\ns off\nf 266 248 267\nf 249 269 268\nf 235 237 207 209 211 213 215 217 219 221 223 225 227 229 231 233\ng uplegl\ns 6\nf 395 399 315 313\nf 391 396 291 289\nf 388 387 299 297\nf 384 392 307 305\nf 348 349 368 383\nf 344 345 380 379\nf 340 341 376 375\nf 336 337 372 371\nf 332 333 352 367\nf 328 329 364 363\nf 324 325 360 359\nf 320 321 356 355\nf 317 319 336 351\nf 309 311 348 347\nf 301 303 344 343\nf 293 295 340 339\nf 292 290 320 335\nf 300 298 332 331\nf 308 306 328 327\nf 316 314 324 323\nf 398 316 318 397\nf 393 308 310 394\nf 385 300 302 386\nf 390 292 294 389\nf 396 290 292 390\nf 387 298 300 385\nf 392 306 308 393\nf 399 314 316 398\nf 290 288 321 320\nf 314 312 325 324\nf 306 304 329 328\nf 298 296 333 332\nf 319 289 337 336\nf 295 297 341 340\nf 303 305 345 344\nf 311 313 349 348\nf 333 334 353 352\nf 321 322 357 356\nf 325 326 361 360\nf 329 330 365 364\nf 349 350 369 368\nf 337 338 373 372\nf 341 342 377 376\nf 345 346 381 380\nf 394 395 313 311\nf 386 384 305 303\nf 389 388 297 295\nf 397 391 289 319\nf 399 398 317 315\nf 396 390 293 291\nf 387 385 301 299\nf 392 393 309 307\nf 347 348 383 382\nf 343 344 379 378\nf 339 340 375 374\nf 351 336 371 370\nf 331 332 367 366\nf 327 328 363 362\nf 323 324 359 358\nf 335 320 355 354\nf 315 317 351 350\nf 307 309 347 346\nf 299 301 343 342\nf 291 293 339 338\nf 294 292 335 334\nf 302 300 331 330\nf 310 308 327 326\nf 318 316 323 322\nf 397 318 288 391\nf 394 310 312 395\nf 386 302 304 384\nf 389 294 296 388\nf 391 288 290 396\nf 388 296 298 387\nf 384 304 306 392\nf 395 312 314 399\nf 288 318 322 321\nf 312 310 326 325\nf 304 302 330 329\nf 296 294 334 333\nf 289 291 338 337\nf 297 299 342 341\nf 305 307 346 345\nf 313 315 350 349\nf 334 335 354 353\nf 322 323 358 357\nf 326 327 362 361\nf 330 331 366 365\nf 350 351 370 369\nf 338 339 374 373\nf 342 343 378 377\nf 346 347 382 381\nf 393 394 311 309\nf 385 386 303 301\nf 390 389 295 293\nf 398 397 319 317\ns off\nf 366 367 352 353 354 355 356 357 358 359 360 361 362 363 364 365\nf 382 383 368 369 370 371 372 373 374 375 376 377 378 379 380 381\ng lowarml\ns 1\nf 442 460 441\nf 460 461 481\nf 456 457 476 475\nf 452 453 472 471\nf 448 449 468 467\nf 444 445 448 463\nf 440 441 460 459\nf 436 437 456 455\nf 432 433 452 451\nf 404 402 432 447\nf 412 410 444 443\nf 420 418 440 439\nf 428 426 436 435\nf 478 479 464 465 466 467 468 469 470 471 472 473 474 475 476 477\nf 425 424 426 427\nf 417 416 418 419\nf 409 408 410 411\nf 401 400 402 403\nf 407 406 408 409\nf 415 414 416 417\nf 423 422 424 425\nf 431 430 400 401\nf 430 428 435 434\nf 422 420 439 438\nf 414 412 443 442\nf 406 404 447 446\nf 447 432 451 450\nf 435 436 455 454\nf 439 440 459 458\nf 443 463 462\nf 463 448 467 466\nf 451 452 471 470\nf 455 456 475 474\nf 459 460 479 478\nf 460 481 464 479\nf 463 443 444\nf 480 463 466 465\nf 457 458 477 476\nf 453 454 473 472\nf 449 450 469 468\nf 461 462 480 481\nf 460 442 461\nf 437 438 457 456\nf 433 434 453 452\nf 445 446 449 448\nf 410 408 445 444\nf 418 416 441 440\nf 426 424 437 436\nf 402 400 433 432\nf 427 426 428 429\nf 419 418 420 421\nf 411 410 412 413\nf 403 402 404 405\nf 405 404 406 407\nf 413 412 414 415\nf 421 420 422 423\nf 429 428 430 431\nf 400 430 434 433\nf 424 422 438 437\nf 416 414 442 441\nf 408 406 446 445\nf 446 447 450 449\nf 434 435 454 453\nf 438 439 458 457\nf 442 443 462 461\nf 462 463 480\nf 450 451 470 469\nf 454 455 474 473\nf 458 459 478 477\nf 481 480 465 464\ns off\nf 425 427 496 495\nf 417 419 492 491\nf 409 411 488 487\nf 401 403 484 483\nf 403 405 485 484\nf 411 413 489 488\nf 419 421 493 492\nf 427 429 497 496\nf 423 425 495 494\nf 415 417 491 490\nf 407 409 487 486\nf 431 401 483 482\nf 405 407 486 485\nf 413 415 490 489\nf 421 423 494 493\nf 429 431 482 497\ng sleavel\nusemtl white\nf 492 493 512 511\nf 488 489 508 507\nf 484 485 504 503\nf 496 497 500 499\nf 495 496 499 498\nf 483 484 503 502\nf 487 488 507 506\nf 491 492 511 510\nf 493 494 513 512\nf 489 490 509 508\nf 485 486 505 504\nf 497 482 501 500\nf 512 513 498 499 500 501 502 503 504 505 506 507 508 509 510 511\nf 482 483 502 501\nf 486 487 506 505\nf 490 491 510 509\nf 494 495 498 513\ng handl\nusemtl skin\ns 1\nf 704 703 770 771\nf 702 701 714 769\nf 750 768 745 747\nf 743 742 692 761\nf 766 765 764 767\nf 756 763 762 754\nf 691 690 759 760\nf 724 727 757 758\nf 751 735 739 753\nf 747 745 736 738\nf 744 719 718 722\nf 740 741 742 737\nf 734 736 739 735\nf 731 730 732 726\nf 723 726 727 724\nf 716 719 720 715\nf 716 709 712 717\nf 699 707 700\nf 677 676 711 706\nf 700 707 708\nf 695 696 703 704\nf 698 681 682 699\nf 694 683 679 695\nf 687 686 688 689\nf 666 659 679 683\nf 659 658 660 678 679\nf 648 649 674 675\nf 652 654 670 671\nf 657 635 665 667\nf 644 645 663 662\nf 637 638 658 659\nf 654 630 631 655\nf 652 653 654\nf 650 643 589 651\nf 647 646 548 549\nf 644 546 545 645\nf 636 642 592 587\nf 639 585 640\nf 633 636 637\nf 632 631 623 621\nf 617 622 629 625\nf 612 611 624 622\nf 612 616 602 603\nf 615 618 619 614\nf 614 613 607 608\nf 606 604 598 597\nf 605 606 597 596\nf 593 594 595 596 597 598 599 600\nf 590 578 577 591\nf 582 583 585 586\nf 581 576 571 582\nf 574 573 577 578\nf 563 562 574 575\nf 553 568 561 554\nf 558 557 564 565\nf 553 554 555 556 557 558 559 560\nf 543 542 550 549\nf 538 537 545 546\nf 528 541 542 529\nf 533 536 537 538\nf 527 535 528 522\nf 521 529 530 523\nf 518 524 525 519\nf 514 515 516 517 518 519 520\nf 517 523 524 518\nf 522 528 529 521\nf 527 532 534 535\nf 527 514 520 526 532\nf 528 535 540 541\nf 531 544 537 536\nf 544 543 549 548\nf 552 540 539 547\nf 557 556 563 564\nf 567 568 553 560\nf 568 572 573 561\nf 576 567 566 571\nf 580 572 576 581\nf 584 569 575 579\nf 588 584 579 589\nf 590 589 579 578\nf 603 599 598 604\nf 593 601 608 594\nf 605 607 613 609\nf 616 617 618 615\nf 612 622 617 616\nf 611 610 623 624\nf 620 619 627 628\nf 632 621 620 628\nf 625 636 633\nf 638 586 585 639\nf 636 625 629 642\nf 644 641 547 546\nf 648 550 551 649\nf 649 551 643 650\nf 652 591 653\nf 653 591 592 642\nf 628 627 635 657\nf 641 644 662 661\nf 666 664 634 633\nf 654 655 669 670\nf 649 650 673 674\nf 645 646 677 663\nf 681 662 663 682\nf 685 684 686 687\nf 684 683 694 686\nf 697 680 681 698\nf 696 697 702 703\nf 663 677 706 682\nf 712 711 676 675\nf 682 706 707 699\nf 715 710 709 716\nf 717 718 719 716\nf 720 723 724 725\nf 728 729 730 731\nf 736 734 737 738\nf 740 729 670 669\nf 723 720 719 744\nf 736 745 746 739\nf 733 735 751 752\nf 751 690 689 752\nf 757 688 705 758\nf 754 762 759 753\nf 761 760 765 766\nf 667 693 741 668\nf 745 768 755 746\nf 573 574 562 561\nf 703 702 769 770\nf 705 704 771 758\nf 769 714 713 721\nf 725 721 715 720\nf 748 743 761 766\nf 693 692 742 741\nf 763 764 765 762\nf 692 691 760 761\nf 727 733 752 757\nf 753 739 746 754\nf 747 738 743 748\nf 722 728 731 744\nf 741 740 669 668\nf 734 732 730 737\nf 726 732 733 727\nf 728 722 672 671\nf 721 713 710 715\nf 717 712 675 674\nf 713 714 700\nf 706 711 708 707\nf 700 708 709 710\nf 694 695 704 705\nf 698 699 700 701\nf 695 679 678 696\nf 687 689 690 691\nf 664 666 683 684\nf 660 661 680 678\nf 647 648 675 676\nf 651 652 671 672\nf 656 657 667 668\nf 635 634 664 665\nf 638 639 660 658\nf 655 631 632 656\nf 654 653 630\nf 651 589 590\nf 551 552 643\nf 645 545 548 646\nf 640 585 588 643\nf 639 640 641\nf 637 636 587\nf 626 625 633 634\nf 622 624 630 629\nf 618 617 625 626\nf 610 611 604 606\nf 614 619 620 613\nf 615 614 608 601\nf 609 610 606 605\nf 595 607 605 596\nf 601 593 600 602\nf 591 577 580 592\nf 581 582 586 587\nf 582 571 570 583\nf 575 574 578 579\nf 564 563 575 569\nf 564 569 570 565\nf 559 558 565 566\nf 561 562 555 554\nf 542 541 551 550\nf 538 546 547 539\nf 529 542 543 530\nf 534 533 538 539\nf 526 525 536 533\nf 523 530 531 524\nf 519 525 526 520\nf 521 516 515 522\nf 521 523 517 516\nf 514 527 522 515\nf 532 526 533 534\nf 536 525 524 531\nf 535 534 539 540\nf 530 543 544 531\nf 537 544 548 545\nf 551 541 540 552\nf 556 555 562 563\nf 560 559 566 567\nf 565 570 571 566\nf 572 568 567 576\nf 573 572 580 577\nf 583 570 569 584\nf 583 584 588 585\nf 592 580 581 587\nf 602 600 599 603\nf 594 608 607 595\nf 603 604 611 612\nf 602 616 615 601\nf 613 620 621 609\nf 621 623 610 609\nf 619 618 626 627\nf 630 624 623 631\nf 627 626 634 635\nf 637 587 586 638\nf 641 640 547\nf 640 643 552 547\nf 647 549 550 648\nf 643 588 589\nf 651 590 591 652\nf 630 653 642 629\nf 656 632 628 657\nf 639 641 661 660\nf 659 666 633 637\nf 655 656 668 669\nf 650 651 672 673\nf 646 647 676 677\nf 680 661 662 681\nf 665 664 684 685\nf 685 687 691 692 693\nf 696 678 680 697\nf 697 698 701 702\nf 686 694 705 688\nf 709 708 711 712\nf 700 710 713\nf 700 714 701\nf 674 673 718 717\nf 673 672 722 718\nf 671 670 729 728\nf 733 732 734 735\nf 737 730 729 740\nf 738 737 742 743\nf 744 731 726 723\nf 749 750 747 748\nf 754 746 755 756\nf 757 752 689 688\nf 759 690 751 753\nf 762 765 760 759\nf 665 685 693 667\nf 749 748 766 767\nf 749 767 764 763 756 755 768 750\nf 769 721 725 770\nf 758 771 770 725 724\ng uparml\nusemtl dkblue_pure\ns 52\nf 879 883 799 797\nf 875 880 775 773\nf 872 871 783 781\nf 868 876 791 789\nf 832 833 852 867\nf 828 829 864 863\nf 824 825 860 859\nf 820 821 856 855\nf 816 817 836 851\nf 812 813 848 847\nf 808 809 844 843\nf 804 805 840 839\nf 801 803 820 835\nf 793 795 832 831\nf 785 787 828 827\nf 777 779 824 823\nf 776 774 804 819\nf 784 782 816 815\nf 792 790 812 811\nf 800 798 808 807\nf 882 800 802 881\nf 877 792 794 878\nf 869 784 786 870\nf 874 776 778 873\nf 880 774 776 874\nf 871 782 784 869\nf 876 790 792 877\nf 883 798 800 882\nf 774 772 805 804\nf 798 796 809 808\nf 790 788 813 812\nf 782 780 817 816\nf 803 773 821 820\nf 779 781 825 824\nf 787 789 829 828\nf 795 797 833 832\nf 817 818 837 836\nf 805 806 841 840\nf 809 810 845 844\nf 813 814 849 848\nf 833 834 853 852\nf 821 822 857 856\nf 825 826 861 860\nf 829 830 865 864\nf 878 879 797 795\nf 870 868 789 787\nf 873 872 781 779\nf 881 875 773 803\nf 883 882 801 799\nf 880 874 777 775\nf 871 869 785 783\nf 876 877 793 791\nf 831 832 867 866\nf 827 828 863 862\nf 823 824 859 858\nf 835 820 855 854\nf 815 816 851 850\nf 811 812 847 846\nf 807 808 843 842\nf 819 804 839 838\nf 799 801 835 834\nf 791 793 831 830\nf 783 785 827 826\nf 775 777 823 822\nf 778 776 819 818\nf 786 784 815 814\nf 794 792 811 810\nf 802 800 807 806\nf 881 802 772 875\nf 878 794 796 879\nf 870 786 788 868\nf 873 778 780 872\nf 875 772 774 880\nf 872 780 782 871\nf 868 788 790 876\nf 879 796 798 883\nf 772 802 806 805\nf 796 794 810 809\nf 788 786 814 813\nf 780 778 818 817\nf 773 775 822 821\nf 781 783 826 825\nf 789 791 830 829\nf 797 799 834 833\nf 818 819 838 837\nf 806 807 842 841\nf 810 811 846 845\nf 814 815 850 849\nf 834 835 854 853\nf 822 823 858 857\nf 826 827 862 861\nf 830 831 866 865\nf 877 878 795 793\nf 869 870 787 785\nf 874 873 779 777\nf 882 881 803 801\ns off\nf 850 851 836 837 838 839 840 841 842 843 844 845 846 847 848 849\nf 866 867 852 853 854 855 856 857 858 859 860 861 862 863 864 865\ng shoe1r\nusemtl black\ns 1\nf 931 923 907 912\nf 941 1003 1004 1001\nf 1001 999 997 1002\nf 996 997 999 998\nf 981 980 988\nf 973 972 978 977\nf 967 972 973 966\nf 962 969 971 970\nf 964 958 959 965\nf 958 953 952 959\nf 949 953 954 950\nf 904 948 949 903\nf 943 927 929 944\nf 932 937 938 934\nf 912 930 932 931\nf 925 922 923 926\nf 911 917 916\nf 910 890 892 911\nf 885 884 887 886\nf 907 885 886 908\nf 912 907 908 913\nf 917 911 892 894\nf 924 921 922 925\nf 913 928 930 912\nf 930 936 937 932\nf 935 928 927 943\nf 915 916 945 929\nf 948 952 953 949\nf 957 954 953 958\nf 962 960 957 963\nf 963 968 969 962\nf 897 898 951\nf 969 975 976 971\nf 975 980 981 976\nf 986 979 977 983\nf 991 992 998\nf 1002 997 926 933\nf 941 942 946 1003\nf 993 924 925 996\nf 942 940 938 937 936 935 943 944 947 946\nf 933 926 923 931\nf 939 941 1001 1002\nf 1000 991 998 999\nf 996 925 926 997\nf 979 986 988 980\nf 973 977 979 974\nf 966 973 974 968\nf 970 961 960 962\nf 964 965 967 966\nf 954 957 960 955\nf 950 954 955 951\nf 903 949 950 901\nf 929 945 947 944\nf 934 938 940 939\nf 931 932 934 933\nf 914 927 928 913\nf 921 884 885 922\nf 914 909 910 915\nf 909 888 890 910\nf 886 887 889 888\nf 908 886 888 909\nf 913 908 909 914\nf 922 885 907 923\nf 927 914 915 929\nf 928 935 936 930\nf 939 940 942 941\nf 911 916 915 910\nf 951 898 901 950\nf 951 955 956 897\nf 955 960 961 956\nf 964 966 968 963\nf 963 957 958 964\nf 968 974 975 969\nf 974 979 980 975\nf 978 982 983 977\nf 998 992 993 996\nf 934 939 1002 933\nf 1004 1000 999 1001\ng shoe2r\nusemtl white\ns 2\nf 1057 1058 1056\nf 918 919 920 995 906\nf 905 985 982 904\nf 1062 1061 1066 1065 994 987 984\nf 990 989 992 991\nf 983 982 985 984\nf 1068 1047 884 921\nf 918 1054 1053 919\nf 887 1046 1051 889\nf 900 902 903 901\nf 901 898 895 900\nf 890 891 893 892\nf 893 894 892\nf 900 895 899\nf 903 902 905 904\nf 1045 1055 1058 1049\nf 1067 1059 1052 1048\nf 983 984 987 986\nf 992 989 994 993\nf 1063 1062 984 985 995\nf 978 972 952 948 904 982\nf 1062 1063 1061\nf 1050 1051 1049\nf 985 905 906 995\nf 1064 924 993 994 1065\nf 988 989 990 981\nf 1061 1059 1067 1066\nf 906 1056 1054 918\nf 1046 887 884 1047\nf 1051 1050 899 891 889\nf 896 895 898 897\nf 888 889 891 890\nf 893 895 896 894\nf 1049 1058 1057 902 900 899 1050\nf 905 902 1057 1056 906\nf 1048 1052 1055 1045\nf 919 1053 1060 920\nf 1064 1068 921 924\nf 986 987 989 988\nf 989 987 994\nf 1063 995 920 1060\nf 893 891 899 895\nf 967 965 959 952 972\nf 1065 1066 1064\ng shoe3r\nusemtl dkgrey\ns 24\nf 1025 1034 1033 1026\nf 1031 1030 1029 1028 1027 1032\nf 1037 1036 1035 1024\nf 1024 1035 1034 1025\nf 1026 1033 1032 1027\ns 6\nf 1021 1022 894 896\nf 1017 1018 961 970\nf 1013 1014 981 990\nf 1009 1010 1004 1003\nf 1005 1006 945 916\nf 1008 1009 1003 946\nf 1012 1013 990 991\nf 1016 1017 970 971\nf 1020 1021 896 897\nf 1022 1023 917 894\nf 1018 1019 956 961\nf 1014 1015 976 981\nf 1010 1011 1000 1004\nf 1006 1007 947 945\nf 1007 1008 946 947\nf 1011 1012 991 1000\nf 1015 1016 971 976\nf 1019 1020 897 956\nf 1023 1005 916 917\ns 23\nf 1039 1040 1037 1020 1019\nf 1024 1025 1022 1021\nf 1038 1039 1019 1018\nf 1037 1024 1021 1020\nf 1025 1026 1023 1022\nf 1026 1027 1005 1023\ns 21\nf 1027 1028 1006 1005\nf 1030 1031 1009 1008\nf 1028 1029 1007 1006\nf 1029 1030 1008 1007\ns 22\nf 1036 1041 1042 1015 1014\nf 1032 1033 1011 1010\nf 1033 1034 1012 1011\nf 1035 1036 1014 1013\nf 1031 1032 1010 1009\nf 1034 1035 1013 1012\ns off\nf 1044 1038 1018 1017\nf 1043 1044 1017 1016\nf 1038 1044 1043 1042 1039\nf 1039 1042 1041 1040\nf 1042 1043 1016 1015\nf 1040 1041 1036 1037\ng shoe4r\nusemtl black\nf 1073 1074 1049 1051\ns 30\nf 1077 1076 1071 1070\nf 1075 1074 1073 1072\nf 1070 1069 1078 1077\nf 1076 1075 1072 1071\ns 31\nf 1079 1088 1081 1080\nf 1087 1086 1083 1082\nf 1088 1087 1082 1081\nf 1086 1085 1084 1083\ns 27\nf 1071 1072 1046 1047\nf 1070 1071 1047 1068\nf 1072 1073 1051 1046\nf 1069 1070 1068 1064\ns 26\nf 1075 1076 1048 1045\nf 1076 1077 1067 1048\nf 1074 1075 1045 1049\nf 1077 1078 1066 1067\ns 17\nf 1084 1085 1061 1063\nf 1078 1069 1064 1066\ns 1\nf 1079 1080 1056 1058\ns 29\nf 1080 1081 1054 1056\nf 1083 1084 1063 1060\nf 1081 1082 1053 1054\nf 1082 1083 1060 1053\ns 28\nf 1087 1088 1055 1052\nf 1086 1087 1052 1059\nf 1088 1079 1058 1055\nf 1085 1086 1059 1061\ng lowlegr\nusemtl dkblue_pure\ns 1\nf 1136 1121 1091 1093\nf 1132 1133 1099 1101\nf 1128 1129 1107 1109\nf 1124 1125 1115 1117\nf 1090 1089 1119 1120\nf 1114 1113 1111 1112\nf 1106 1105 1103 1104\nf 1098 1097 1095 1096\nf 1092 1091 1089 1090\nf 1100 1099 1097 1098\nf 1108 1107 1105 1106\nf 1116 1115 1113 1114\nf 1121 1122 1089 1091\nf 1125 1126 1113 1115\nf 1129 1130 1105 1107\nf 1133 1134 1097 1099\nf 1150 1151 1132 1131\nf 1135 1136 1093 1095\nf 1131 1132 1101 1103\nf 1127 1128 1109 1111\nf 1123 1124 1117 1119\nf 1120 1119 1117 1118\nf 1112 1111 1109 1110\nf 1104 1103 1101 1102\nf 1096 1095 1093 1094\nf 1094 1093 1091 1092\nf 1102 1101 1099 1100\nf 1110 1109 1107 1108\nf 1118 1117 1115 1116\nf 1122 1123 1119 1089\nf 1126 1127 1111 1113\nf 1130 1131 1103 1105\nf 1134 1135 1095 1097\nf 1170 1169 1151 1150\ns 2\nf 1133 1132 1152\nf 1154 1155 1152 1169\nf 1165 1166 1147 1146\nf 1161 1162 1143 1142\nf 1157 1158 1139 1138\nf 1148 1149 1130 1129\nf 1144 1145 1126 1125\nf 1140 1141 1122 1121\nf 1166 1165 1164 1163 1162 1161 1160 1159 1158 1157 1156 1155 1154 1153 1168 1167\nf 1139 1140 1121 1136\nf 1143 1144 1125 1124\nf 1147 1148 1129 1128\nf 1169 1152 1151\nf 1158 1159 1140 1139\nf 1162 1163 1144 1143\nf 1166 1167 1148 1147\nf 1153 1154 1169 1170\nf 1130 1149 1131\nf 1170 1150 1149\nf 1164 1165 1146 1145\nf 1160 1161 1142 1141\nf 1156 1157 1138 1137\nf 1152 1137 1134 1133\nf 1145 1146 1127 1126\nf 1141 1142 1123 1122\nf 1137 1138 1135 1134\nf 1138 1139 1136 1135\nf 1142 1143 1124 1123\nf 1146 1147 1128 1127\nf 1155 1156 1137 1152\nf 1159 1160 1141 1140\nf 1163 1164 1145 1144\nf 1167 1168 1149 1148\nf 1168 1153 1170 1149\ns off\nf 1150 1131 1149\nf 1151 1152 1132\nf 1116 1114 1112 1110 1108 1106 1104 1102 1100 1098 1096 1094 1092 1090 1120 1118\ng uplegr\ns 6\nf 1196 1198 1282 1278\nf 1172 1174 1279 1274\nf 1180 1182 1270 1271\nf 1188 1190 1275 1267\nf 1266 1251 1232 1231\nf 1262 1263 1228 1227\nf 1258 1259 1224 1223\nf 1254 1255 1220 1219\nf 1250 1235 1216 1215\nf 1246 1247 1212 1211\nf 1242 1243 1208 1207\nf 1238 1239 1204 1203\nf 1234 1219 1202 1200\nf 1230 1231 1194 1192\nf 1226 1227 1186 1184\nf 1222 1223 1178 1176\nf 1218 1203 1173 1175\nf 1214 1215 1181 1183\nf 1210 1211 1189 1191\nf 1206 1207 1197 1199\nf 1280 1201 1199 1281\nf 1277 1193 1191 1276\nf 1269 1185 1183 1268\nf 1272 1177 1175 1273\nf 1273 1175 1173 1279\nf 1268 1183 1181 1270\nf 1276 1191 1189 1275\nf 1281 1199 1197 1282\nf 1203 1204 1171 1173\nf 1207 1208 1195 1197\nf 1211 1212 1187 1189\nf 1215 1216 1179 1181\nf 1219 1220 1172 1202\nf 1223 1224 1180 1178\nf 1227 1228 1188 1186\nf 1231 1232 1196 1194\nf 1235 1236 1217 1216\nf 1239 1240 1205 1204\nf 1243 1244 1209 1208\nf 1247 1248 1213 1212\nf 1251 1252 1233 1232\nf 1255 1256 1221 1220\nf 1259 1260 1225 1224\nf 1263 1264 1229 1228\nf 1194 1196 1278 1277\nf 1186 1188 1267 1269\nf 1178 1180 1271 1272\nf 1202 1172 1274 1280\nf 1198 1200 1281 1282\nf 1174 1176 1273 1279\nf 1182 1184 1268 1270\nf 1190 1192 1276 1275\nf 1265 1266 1231 1230\nf 1261 1262 1227 1226\nf 1257 1258 1223 1222\nf 1253 1254 1219 1234\nf 1249 1250 1215 1214\nf 1245 1246 1211 1210\nf 1241 1242 1207 1206\nf 1237 1238 1203 1218\nf 1233 1234 1200 1198\nf 1229 1230 1192 1190\nf 1225 1226 1184 1182\nf 1221 1222 1176 1174\nf 1217 1218 1175 1177\nf 1213 1214 1183 1185\nf 1209 1210 1191 1193\nf 1205 1206 1199 1201\nf 1274 1171 1201 1280\nf 1278 1195 1193 1277\nf 1267 1187 1185 1269\nf 1271 1179 1177 1272\nf 1279 1173 1171 1274\nf 1270 1181 1179 1271\nf 1275 1189 1187 1267\nf 1282 1197 1195 1278\nf 1204 1205 1201 1171\nf 1208 1209 1193 1195\nf 1212 1213 1185 1187\nf 1216 1217 1177 1179\nf 1220 1221 1174 1172\nf 1224 1225 1182 1180\nf 1228 1229 1190 1188\nf 1232 1233 1198 1196\nf 1236 1237 1218 1217\nf 1240 1241 1206 1205\nf 1244 1245 1210 1209\nf 1248 1249 1214 1213\nf 1252 1253 1234 1233\nf 1256 1257 1222 1221\nf 1260 1261 1226 1225\nf 1264 1265 1230 1229\nf 1192 1194 1277 1276\nf 1184 1186 1269 1268\nf 1176 1178 1272 1273\nf 1200 1202 1280 1281\ns off\nf 1248 1247 1246 1245 1244 1243 1242 1241 1240 1239 1238 1237 1236 1235 1250 1249\nf 1264 1263 1262 1261 1260 1259 1258 1257 1256 1255 1254 1253 1252 1251 1266 1265\ng pelvis\ns 9\nf 3607 3608 3553 3554\nf 3554 3553 3552 3551\nf 1337 1329 1330 1336\nf 1329 1337 1327 1328\nf 1328 1327 1345 1344\nf 3602 3596 3551 3552\ns 8\nf 3600 3599 3598 3597 3601\nf 3600 3601 3590 3589\nf 3596 3597 3585 3586\nf 3589 3590 3576 3574\nf 3586 3585 3583 3582\nf 3578 3579 3557 3555\nf 3575 3574 3572 3571\nf 3570 3571 1288 1289\nf 3555 3557 1283 1284\nf 1335 1331 1332 1333 1334\nf 1320 1321 1335 1334\nf 1316 1317 1331 1330\nf 1306 1307 1321 1320\nf 1313 1314 1317 1316\nf 1295 1296 1310 1309\nf 1302 1303 1306 1305\nf 1289 1288 1302 1301\nf 1285 1284 1295 1294\nf 1290 1289 1301 1300\nf 1286 1285 1294 1304\nf 1294 1295 1309 1308\nf 1301 1302 1305 1315\nf 1305 1306 1320 1319\nf 1309 1310 1324 1323\nf 1319 1320 1334 1333\nf 1323 1324 1327 1337\nf 1296 1283 1339 1338\nf 1310 1296 1338 1347\nf 3569 3570 1289 1290\nf 3573 3556 1285 1286\nf 3577 3578 3555 3556\nf 3584 3575 3571 3570\nf 3588 3589 3574 3575\nf 3592 3593 3579 3578\nf 3599 3600 3589 3588\nf 3552 3553 3593 3592\nf 3603 1339 1283 3557\nf 3610 3603 3557 3579\nf 3608 3609 3593 3553\nf 3601 3597 3596 3602\nf 3601 3602 3591 3590\nf 3597 3598 3587 3585\nf 3590 3591 3577 3576\nf 3585 3587 3584 3583\nf 3582 3583 3569 3568\nf 3574 3576 3573 3572\nf 3571 3572 1287 1288\nf 3556 3555 1284 1285\nf 1327 1324 1346 1345\nf 1336 1330 1331 1335\nf 1321 1322 1336 1335\nf 1317 1318 1332 1331\nf 1307 1308 1322 1321\nf 1314 1315 1318 1317\nf 1299 1300 1314 1313\nf 1303 1304 1307 1306\nf 1288 1287 1303 1302\nf 1284 1283 1296 1295\nf 1291 1290 1300 1299\nf 1287 1286 1304 1303\nf 1304 1294 1308 1307\nf 1300 1301 1315 1314\nf 1315 1305 1319 1318\nf 1308 1309 1323 1322\nf 1318 1319 1333 1332\nf 1322 1323 1337 1336\nf 1324 1310 1347 1346\nf 3568 3569 1290 1291\nf 3572 3573 1286 1287\nf 3576 3577 3556 3573\nf 3583 3584 3570 3569\nf 3587 3588 3575 3584\nf 3591 3592 3578 3577\nf 3598 3599 3588 3587\nf 3602 3552 3592 3591\nf 3609 3610 3579 3593\ns 11\nf 1366 3558 3615 1353\nf 3562 3563 3611 3612\nf 3618 3612 3608 3607\nf 1353 3615 3604 1340\nf 3612 3611 3609 3608\nf 1340 3604 3567 1293\nf 3595 3594 3580 3581\nf 3567 3566 1292 1293\nf 1350 1351 1364 1363\nf 1356 1357 1360 1359\nf 1342 1343 1356 1355\nf 1347 1338 1351 1350\nf 1311 1325 1343 1342\nf 1325 1326 1329 1328\nf 1298 1299 1313 1312\nf 1366 1367 1358 1359 1360 1361 1362 1363 1364 1365\nf 1297 1298 1312 1311\nf 1326 1316 1330 1329\nf 1325 1328 1344 1343\nf 1338 1339 1352 1351\nf 1343 1344 1357 1356\nf 1357 1348 1361 1360\nf 1351 1352 1365 1364\nf 1365 3565 3564 3563 3562 3561 3560 3559 3558 1366\nf 3581 3580 3566 3567\nf 3551 3596 3586 3594\nf 3606 3607 3554 3595\nf 3614 1352 1339 3603\nf 3617 3618 3607 3606\nf 3561 3562 3612 3618\nf 3565 1365 1352 3614\nf 3558 3559 3616 3615\nf 3563 3564 3613 3611\nf 3559 3560 3617 3616\nf 3615 3616 3605 3604\nf 3611 3613 3610 3609\nf 3604 3605 3581 3567\nf 3594 3586 3582 3580\nf 3566 3568 1291 1292\nf 1354 1355 1358 1367\nf 1349 1350 1363 1362\nf 1355 1356 1359 1358\nf 1341 1342 1355 1354\nf 1346 1347 1350 1349\nf 1297 1311 1342 1341\nf 1312 1313 1316 1326\nf 1292 1291 1299 1298\nf 1293 1292 1298 1297\nf 1311 1312 1326 1325\nf 1293 1297 1341 1340\nf 1345 1346 1349 1348\nf 1340 1341 1354 1353\nf 1344 1345 1348 1357\nf 1348 1349 1362 1361\nf 1353 1354 1367 1366\nf 3580 3582 3568 3566\nf 3554 3551 3594 3595\nf 3605 3606 3595 3581\nf 3613 3614 3603 3610\nf 3616 3617 3606 3605\nf 3560 3561 3618 3617\nf 3564 3565 3614 3613\ng lowarmr\ns 1\nf 1447 1432 1449 1428\nf 1446 1447 1428 1427\nf 1442 1443 1424 1423\nf 1438 1439 1420 1419\nf 1434 1435 1416 1431\nf 1430 1431 1411\nf 1426 1427 1408 1407\nf 1422 1423 1404 1403\nf 1418 1419 1400 1415\nf 1414 1415 1372 1374\nf 1410 1411 1380 1382\nf 1406 1407 1388 1390\nf 1402 1403 1396 1398\nf 1369 1368 1398 1399\nf 1393 1392 1390 1391\nf 1385 1384 1382 1383\nf 1377 1376 1374 1375\nf 1371 1370 1368 1369\nf 1379 1378 1376 1377\nf 1387 1386 1384 1385\nf 1395 1394 1392 1393\nf 1445 1444 1443 1442 1441 1440 1439 1438 1437 1436 1435 1434 1433 1432 1447 1446\nf 1403 1404 1394 1396\nf 1407 1408 1386 1388\nf 1411 1412 1378 1380\nf 1415 1400 1370 1372\nf 1419 1420 1401 1400\nf 1423 1424 1405 1404\nf 1427 1428 1409 1408\nf 1431 1416 1413 1412\nf 1435 1436 1417 1416\nf 1439 1440 1421 1420\nf 1443 1444 1425 1424\nf 1449 1429 1428\nf 1409 1428 1410\nf 1432 1433 1448 1449\nf 1445 1446 1427 1426\nf 1441 1442 1423 1422\nf 1437 1438 1419 1418\nf 1448 1431 1430\nf 1429 1430 1411 1410\nf 1425 1426 1407 1406\nf 1421 1422 1403 1402\nf 1417 1418 1415 1414\nf 1413 1414 1374 1376\nf 1409 1410 1382 1384\nf 1405 1406 1390 1392\nf 1401 1402 1398 1368\nf 1399 1398 1396 1397\nf 1391 1390 1388 1389\nf 1383 1382 1380 1381\nf 1375 1374 1372 1373\nf 1373 1372 1370 1371\nf 1381 1380 1378 1379\nf 1389 1388 1386 1387\nf 1397 1396 1394 1395\nf 1400 1401 1368 1370\nf 1404 1405 1392 1394\nf 1408 1409 1384 1386\nf 1412 1413 1376 1378\nf 1416 1417 1414 1413\nf 1420 1421 1402 1401\nf 1424 1425 1406 1405\nf 1429 1410 1428\nf 1449 1448 1430 1429\nf 1436 1437 1418 1417\nf 1440 1441 1422 1421\nf 1444 1445 1426 1425\nf 1433 1434 1431 1448\nf 1412 1411 1431\ns off\nf 1464 1465 1397 1395\nf 1460 1461 1389 1387\nf 1456 1457 1381 1379\nf 1452 1453 1373 1371\nf 1451 1452 1371 1369\nf 1455 1456 1379 1377\nf 1459 1460 1387 1385\nf 1463 1464 1395 1393\nf 1465 1450 1399 1397\nf 1461 1462 1391 1389\nf 1457 1458 1383 1381\nf 1453 1454 1375 1373\nf 1450 1451 1369 1399\nf 1454 1455 1377 1375\nf 1458 1459 1385 1383\nf 1462 1463 1393 1391\ng sleaver\nusemtl white\nf 1480 1481 1462 1461\nf 1476 1477 1458 1457\nf 1472 1473 1454 1453\nf 1468 1469 1450 1465\nf 1479 1478 1477 1476 1475 1474 1473 1472 1471 1470 1469 1468 1467 1466 1481 1480\nf 1469 1470 1451 1450\nf 1473 1474 1455 1454\nf 1477 1478 1459 1458\nf 1481 1466 1463 1462\nf 1479 1480 1461 1460\nf 1475 1476 1457 1456\nf 1471 1472 1453 1452\nf 1467 1468 1465 1464\nf 1466 1467 1464 1463\nf 1470 1471 1452 1451\nf 1474 1475 1456 1455\nf 1478 1479 1460 1459\ng handr\nusemtl skin\ns 1\nf 1726 1739 1672 1673\nf 1689 1681 1682 1737\nf 1688 1683 1689 1693\nf 1734 1729 1711 1716\nf 1709 1710 1660 1661\nf 1730 1733 1732 1731\nf 1729 1728 1659 1660\nf 1725 1720 1701 1695\nf 1722 1714 1707 1721\nf 1716 1711 1706 1715\nf 1712 1699 1696 1690\nf 1636 1637 1708 1709\nf 1705 1698 1700 1702\nf 1695 1701 1700 1694\nf 1639 1640 1690 1696\nf 1683 1678 1681 1689\nf 1642 1643 1680 1685\nf 1668 1682 1681\nf 1675 1676 1679 1674\nf 1678 1677 1676 1668\nf 1673 1672 1663 1662\nf 1669 1668 1667 1666\nf 1664 1646 1647 1663\nf 1659 1658 1657 1655\nf 1652 1651 1634 1632\nf 1646 1648 1629 1628\nf 1644 1643 1616 1615\nf 1640 1639 1620 1619\nf 1636 1635 1625 1624\nf 1633 1632 1602 1603\nf 1626 1628 1607 1606\nf 1624 1600 1599 1623\nf 1598 1621 1622\nf 1558 1557 1619\nf 1611 1520 1519\nf 1614 1516 1513 1613\nf 1611 1556 1553 1608\nf 1609 1608 1607\nf 1555 1604 1605\nf 1602 1601 1593 1594\nf 1597 1598 1592 1590\nf 1594 1593 1585 1586\nf 1574 1572 1579 1578\nf 1581 1588 1587 1582\nf 1569 1576 1582 1583\nf 1573 1574 1578 1577\nf 1564 1573 1575 1563\nf 1570 1568 1561 1569\nf 1560 1548 1545 1559\nf 1555 1554 1550 1549\nf 1551 1538 1539 1550\nf 1547 1546 1542 1543\nf 1537 1543 1531 1532\nf 1533 1538 1537 1532\nf 1534 1533 1526 1527\nf 1522 1523 1530 1529\nf 1518 1519 1509 1510\nf 1507 1515 1514 1506\nf 1498 1511 1510 1497\nf 1507 1506 1501 1502\nf 1501 1504 1493 1494\nf 1492 1499 1498 1491\nf 1488 1494 1493 1487\nf 1490 1483 1484 1489\nf 1484 1485 1491 1489\nf 1483 1490 1495 1482\nf 1502 1501 1494 1500\nf 1499 1492 1493 1504\nf 1508 1507 1502 1503\nf 1499 1512 1511 1498\nf 1513 1516 1512 1505\nf 1520 1508 1509 1519\nf 1531 1530 1523 1524\nf 1535 1534 1527 1528\nf 1534 1539 1538 1533\nf 1544 1535 1536 1540\nf 1545 1548 1540 1541\nf 1552 1537 1538 1551\nf 1553 1556 1552 1551\nf 1555 1549 1548 1560\nf 1571 1567 1568 1570\nf 1563 1575 1576 1562\nf 1580 1579 1572 1571\nf 1569 1583 1584 1570\nf 1577 1589 1588 1581\nf 1577 1578 1591 1589\nf 1595 1594 1586 1587\nf 1599 1591 1592 1598\nf 1603 1602 1594 1595\nf 1606 1554 1555 1605\nf 1515 1608 1609\nf 1515 1520 1611 1608\nf 1616 1518 1517 1615\nf 1557 1556 1611\nf 1620 1559 1558 1619\nf 1597 1610 1621 1598\nf 1625 1596 1600 1624\nf 1628 1629 1609 1607\nf 1605 1601 1634 1627\nf 1637 1636 1624 1623\nf 1641 1640 1619 1618\nf 1645 1644 1615 1614\nf 1649 1630 1629 1648\nf 1653 1652 1632 1633\nf 1661 1660 1659 1655 1653\nf 1665 1648 1646 1664\nf 1670 1669 1666 1665\nf 1656 1673 1662 1654\nf 1680 1679 1676 1677\nf 1681 1678 1668\nf 1669 1682 1668\nf 1685 1686 1641 1642\nf 1686 1690 1640 1641\nf 1696 1697 1638 1639\nf 1703 1702 1700 1701\nf 1708 1697 1698 1705\nf 1711 1710 1705 1706\nf 1691 1694 1699 1712\nf 1716 1715 1718 1717\nf 1724 1723 1714 1722\nf 1656 1657 1720 1725\nf 1721 1719 1658 1727\nf 1727 1728 1733 1730\nf 1635 1661 1653 1633\nf 1735 1734 1716 1717\nf 1718 1736 1723 1724 1731 1732 1735 1717\nf 1738 1693 1689 1737\nf 1692 1693 1738 1739 1726\nf 1739 1738 1671 1672\nf 1737 1682 1669 1670\nf 1715 1713 1736 1718\nf 1729 1660 1710 1711\nf 1735 1732 1733 1734\nf 1722 1730 1731 1724\nf 1728 1727 1658 1659\nf 1726 1725 1695 1692\nf 1721 1707 1703 1719\nf 1706 1704 1713 1715\nf 1690 1686 1687 1712\nf 1705 1710 1709 1708\nf 1703 1707 1704 1702\nf 1694 1700 1698 1699\nf 1692 1695 1694 1691\nf 1683 1688 1687 1684\nf 1685 1680 1677 1684\nf 1668 1675 1667\nf 1674 1679 1644 1645\nf 1676 1675 1668\nf 1672 1671 1664 1663\nf 1667 1650 1649 1666\nf 1663 1647 1651 1662\nf 1657 1656 1654 1655\nf 1651 1647 1627 1634\nf 1647 1646 1628 1626 1627\nf 1643 1642 1617 1616\nf 1639 1638 1622 1620\nf 1635 1633 1603 1625\nf 1630 1631 1613 1612\nf 1627 1626 1606 1605\nf 1623 1599 1598 1622\nf 1622 1621 1620\nf 1619 1557 1611 1618\nf 1517 1516 1614 1615\nf 1613 1513 1514 1612\nf 1555 1560 1610 1604\nf 1608 1553 1607\nf 1605 1604 1601\nf 1589 1591 1599 1600\nf 1593 1597 1590 1585\nf 1590 1592 1579 1580\nf 1571 1570 1584 1580\nf 1582 1587 1586 1583\nf 1576 1575 1581 1582\nf 1565 1566 1572 1574\nf 1564 1565 1574 1573\nf 1568 1567 1566 1565 1564 1563 1562 1561\nf 1559 1545 1546 1558\nf 1554 1553 1551 1550\nf 1550 1539 1544 1549\nf 1546 1545 1541 1542\nf 1543 1542 1530 1531\nf 1522 1529 1536 1521\nf 1533 1532 1525 1526\nf 1528 1527 1526 1525 1524 1523 1522 1521\nf 1517 1518 1510 1511\nf 1514 1513 1505 1506\nf 1497 1510 1509 1496\nf 1506 1505 1504 1501\nf 1490 1496 1503 1495\nf 1491 1498 1497 1489\nf 1487 1493 1492 1486\nf 1488 1487 1486 1485 1484 1483 1482\nf 1486 1492 1491 1485\nf 1489 1497 1496 1490\nf 1503 1502 1500 1495\nf 1500 1494 1488 1482 1495\nf 1509 1508 1503 1496\nf 1504 1505 1512 1499\nf 1516 1517 1511 1512\nf 1515 1507 1508 1520\nf 1532 1531 1524 1525\nf 1528 1521 1536 1535\nf 1529 1541 1540 1536\nf 1539 1534 1535 1544\nf 1549 1544 1540 1548\nf 1547 1543 1537 1552\nf 1557 1547 1552 1556\nf 1546 1547 1557 1558\nf 1572 1566 1567 1571\nf 1562 1576 1569 1561\nf 1577 1581 1575 1573\nf 1583 1586 1585 1584\nf 1584 1585 1590 1580\nf 1592 1591 1578 1579\nf 1596 1595 1587 1588\nf 1596 1588 1589 1600\nf 1601 1604 1593\nf 1607 1553 1554 1606\nf 1610 1597 1593 1604\nf 1514 1515 1609 1612\nf 1617 1519 1518 1616\nf 1618 1611 1519 1617\nf 1621 1559 1620\nf 1610 1560 1559 1621\nf 1625 1603 1595 1596\nf 1629 1630 1612 1609\nf 1601 1602 1632 1634\nf 1638 1637 1623 1622\nf 1642 1641 1618 1617\nf 1631 1645 1614 1613\nf 1650 1631 1630 1649\nf 1655 1654 1652 1653\nf 1654 1662 1651 1652\nf 1666 1649 1648 1665\nf 1671 1670 1665 1664\nf 1650 1674 1645 1631\nf 1643 1644 1679 1680\nf 1667 1675 1674 1650\nf 1684 1677 1678 1683\nf 1684 1687 1686 1685\nf 1693 1692 1691 1688\nf 1699 1698 1697 1696\nf 1706 1705 1702 1704\nf 1637 1638 1697 1708\nf 1712 1687 1688 1691\nf 1707 1714 1713 1704\nf 1720 1719 1703 1701\nf 1720 1657 1658 1719\nf 1726 1673 1656 1725\nf 1721 1727 1730 1722\nf 1734 1733 1728 1729\nf 1636 1709 1661 1635\nf 1714 1723 1736 1713\nf 1529 1530 1542 1541\nf 1738 1737 1670 1671\ng coat\nusemtl dkblue_pure\ns 5\nf 2007 2008 1893 2005\nf 1746 1744 1747\nf 1742 1743 1745 1886\nf 1755 1768 1753 1754\nf 1746 1747 1748 1749\nf 1741 1740 1743 1742\nf 1750 1880 1752 1754 1753\nf 2005 1893 2006 1892\nf 1756 1757 1773 1771\nf 1880 1750 1749 1748 1751\nf 1886 1745 1887 1744\nf 1756 1758 1757\nf 1771 1773 1768 1755\nf 1747 1744 1887\nf 2003 1892 2006\nf 1740 1741 2008 2007\ns 6\nf 1980 1896 1933\nf 1990 2003 2002 1989\nf 1989 1975 1974 1990\nf 1891 1971 1969 1991\nf 1967 1987 1986 1964\nf 1960 1967 1964 1959\nf 1961 1958 1954 1953\nf 1972 1970 1948 1947\nf 1947 1943 1942 1946\nf 1939 1951 1949 1938\nf 1963 1985 1980\nf 1935 1933 1825 1823\nf 1958 1929 1928 1954\nf 1924 1937 1925 1923\nf 1922 1920 1919 1924\nf 1842 1846 1918 1920\nf 1992 1968 1849 1760\nf 1990 1971 1891\nf 1762 1888 1781\nf 1847 1807 1783 1784\nf 1847 1845 1811 1807\nf 1844 1836 1815 1816\nf 1836 1838 1839 1837\nf 1832 1798 1803 1833\nf 1821 1827 1828 1824\nf 1822 1820 1823 1825\nf 1789 1819 1772 1767\nf 1813 1809 1810 1816\nf 1808 1809 1813 1812\nf 1780 1781 1806 1805\nf 1801 1799 1800 1802\nf 1793 1795 1797 1796\nf 1787 1790 1791 1786\nf 1785 1765 1769 1786\nf 1778 1762 1781 1780\nf 1748 1763 1764 1751\nf 1743 1740 1760 1759\nf 1747 1762 1763 1748\nf 1819 1883 1772\nf 1776 1777 1778 1779\nf 1783 1761 1759 1784\nf 1766 1788 1789 1767\nf 1792 1794 1795 1793\nf 1799 1791 1790 1800\nf 1806 1781 1783 1807\nf 1810 1806 1807 1811\nf 1814 1813 1816 1815\nf 1796 1817 1819 1789\nf 1820 1821 1824 1823\nf 1818 1826 1827 1821\nf 1831 1794 1798 1832\nf 1815 1836 1837 1835\nf 1843 1838 1836 1844\nf 1846 1842 1843 1845\nf 1784 1759 1760 1849\nf 1764 1879 1880 1751\nf 1762 1747 1887 1888\nf 2003 1990 1891 1892\nf 1898 1988 1999 1897\nf 1905 1979 1984 1912\nf 1916 1997 2000\nf 1968 1917 1848 1849\nf 1920 1918 1941 1919\nf 1840 1842 1920 1922\nf 1938 1926 1925 1937\nf 1957 1930 1929 1958\nf 1934 1935 1823 1824\nf 1944 1948 1970 1973 1976 1977 1978 1965 1962 1952 1950 1940\nf 1939 1940 1950 1951\nf 1947 1948 1944 1943\nf 1954 1949 1951 1953\nf 1959 1964 1963 1956\nf 1961 1966 1967 1960\nf 1983 1966 1965 1978\nf 1974 1973 1970 1972\nf 1988 1982 1975 1989\nf 1987 1983 1982 1988\nf 1991 2005 1892 1891\nf 1980 1933 1963\nf 1825 1933 1896 2010\nf 1756 1883 1882\nf 1881 1993 2009 1758\nf 1740 2007 1992 1760\nf 1989 2002 1999 1988\nf 1982 1983 1978 1977\nf 1975 1976 1973 1974\nf 1991 1969 1968 1992\nf 1964 1986 1985 1963\nf 1958 1960 1959 1957\nf 1961 1953 1952 1962\nf 1971 1946 1945 1969\nf 1946 1942 1941 1945\nf 1939 1938 1937 1936\nf 1955 1956 1935 1934\nf 1932 1934 1824 1828\nf 1954 1928 1927 1949\nf 1922 1924 1923 1921\nf 1924 1919 1936 1937\nf 1918 1917 1945 1941\nf 1945 1917 1968 1969\nf 1997 1916 1912 1984\nf 1932 1931 1955 1934\nf 1898 1987 1988\nf 1792 1791 1794\nf 1879 1764 1765\nf 1829 1826 1818 1797\nf 1848 1846 1845 1847\nf 1811 1844 1816 1810\nf 1838 1840 1841 1839\nf 1833 1803 1814 1834\nf 1829 1797 1795 1830\nf 1819 1822 1882 1883\nf 1817 1818 1821 1820\nf 1800 1790 1787 1774 1775 1776 1779 1782 1804 1808 1812 1802\nf 1812 1813 1801 1802\nf 1804 1805 1809 1808\nf 1803 1798 1799 1801\nf 1788 1793 1796 1789\nf 1786 1791 1792 1785\nf 1786 1769 1774 1787\nf 1779 1778 1780 1782\nf 1775 1770 1777 1776\nf 1769 1765 1764 1770\nf 1743 1759 1761 1745\nf 1745 1761 1888 1887\nf 1769 1770 1775 1774\nf 1781 1888 1761 1783\nf 1765 1785 1788 1766\nf 1785 1792 1793 1788\nf 1794 1791 1799 1798\nf 1782 1780 1805 1804\nf 1809 1805 1806 1810\nf 1801 1813 1814 1803\nf 1796 1797 1818 1817\nf 1817 1820 1822 1819\nf 1758 1756 1882 1881\nf 1830 1795 1794 1831\nf 1834 1814 1815 1835\nf 1842 1840 1838 1843\nf 1845 1843 1844 1811\nf 1847 1784 1849 1848\nf 1822 1825 2010 1882\nf 1960 1958 1961\nf 2009 1993 1979 1905\nf 1846 1848 1917 1918\nf 1919 1941 1942 1936\nf 1840 1922 1921 1841\nf 1949 1927 1926 1938\nf 1955 1931 1930 1957\nf 1935 1956 1963 1933\nf 1943 1939 1936 1942\nf 1943 1944 1940 1939\nf 1971 1972 1947 1946\nf 1953 1951 1950 1952\nf 1957 1959 1956 1955\nf 1962 1965 1966 1961\nf 1987 1967 1966 1983\nf 1990 1974 1972 1971\nf 1982 1977 1976 1975\nf 1992 2007 2005 1991\ns 9\nf 1879 1765 1752 1880\nf 1752 1765 1766 1754\nf 1756 1771 1772 1883\nf 1754 1766 1767 1755\nf 1755 1767 1772 1771\ns 8\nf 1770 1764 1763 1777\nf 1777 1763 1762 1778\ns 10\nf 1757 1871 1873 1773\nf 1850 1750 1753\nf 1773 1873 1855 1768\nf 1872 1758 2009\nf 1758 1872 1871 1757\nf 1850 1753 1768 1855\ns off\nf 1826 1829 1830 1831 1832 1833 1834 1835 1837 1839 1841 1921 1923 1925 1926 1927 1928 1929 1930 1931 1932 1828 1827\ns 18\nf 1896 1994 2010\nf 2001 2000 1897 1999 2002\nf 1987 1998 1996 1986\nf 1985 1995 1981 1980\nf 1987 1898 1897 1998\nf 2004 2003 2006\nf 1979 1981 1995 1984\nf 2003 2004 2001 2002\nf 1986 1996 1995 1985\nf 1981 1994 1896 1980\nf 2010 1994 1881\nf 1993 1994 1981 1979\nf 1984 1995 1996 1997\nf 1998 1897 2000 1997 1996\nf 1994 1993 1881\nf 1881 1882 2010\ng shirt\nusemtl white\ns 6\nf 1899 1912 1916\nf 1853 1852 1885 1884\nf 1894 1895 1916\nf 1878 1877 1884 1850\nf 1885 1850 1884\nf 1915 1914 1895 1894\ns 5\nf 1895 1900 1899 1916\nf 1850 1885 1750\nf 1878 1850 1855\nf 1851 1741 1742 1886 1744 1746 1749 1889 1852\nf 2001 1890 2000\nf 1914 1913 1900 1895\nf 2001 2004 2006 1893 2008 1741 1851 2015 1915 1890\nf 1749 1750 1889\nf 1854 1853 1884 1877\nf 1750 1885 1852 1889\nf 1916 2000 1894\nf 1894 2000 1890 1915\ng tie\nusemtl fldkred\ns 4\nf 1861 1862 1910\nf 1906 1905 1901 2011\nf 1911 1913 1914\nf 1908 1870 2013 1907\nf 1913 1909 1904 1900\nf 1912 1901 1905\nf 1870 1869 2012 2013\nf 1860 1857 1854 1863\nf 1856 1852 1853\nf 1862 1861 1863\nf 1869 1876 1873 2012\nf 1911 1861 1910\nf 1866 1864 1868\nf 1911 1910 1913\nf 2015 1858 1859 1915\nf 1860 1863 1861\nf 1872 1906 2011 2014\nf 1877 1878 1875 1874\nf 1865 1874 1875 1867\nf 1859 1858 1857 1860\nf 1856 1851 1852\nf 1865 1867 1868 1864\nf 1855 1873 1876\nf 1912 1899 1903 1902\nf 1909 1866 1904\nf 1866 1909 1864\nf 1903 1908 1907 1902\nf 1872 2014 1871\nf 1851 1858 2015\nf 1871 2014 2013 2012\nf 1906 2009 1905\nf 1862 1909 1910\nf 1875 1876 1869 1867\nf 1859 1860 1861\nf 1857 1856 1853 1854\nf 1867 1869 1870 1868\nf 1899 1900 1904 1903\nf 1868 1870 1908 1866\nf 1906 1872 2009\nf 1855 1876 1875 1878\nf 1871 2012 1873\nf 2014 2011 1907 2013\nf 1904 1866 1908 1903\nf 1910 1909 1913\nf 1902 1907 2011 1901\nf 1912 1902 1901\nf 1862 1863 1865 1864\nf 1851 1856 1857 1858\nf 1863 1874 1865\nf 1863 1854 1877 1874\nf 1911 1914 1915\nf 1862 1864 1909\nf 1915 1859 1861 1911\ng buttons\nusemtl black\ns off\nf 2063 2068 2067 2064\nf 2059 2072 2071 2060\nf 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075\nf 2043 2048 2047 2044\nf 2039 2052 2051 2040\nf 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055\nf 2023 2033 2034 2024\nf 2019 2029 2030 2020\nf 2035 2034 2033 2032 2031 2030 2029 2028 2027 2026\nf 2016 2026 2027 2017\nf 2020 2030 2031 2021\nf 2024 2034 2035 2025\nf 2036 2055 2054 2037\nf 2040 2051 2050 2041\nf 2044 2047 2046 2045\nf 2056 2075 2074 2057\nf 2060 2071 2070 2061\nf 2064 2067 2066 2065\nf 2062 2069 2068 2063\nf 2058 2073 2072 2059\nf 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065\nf 2042 2049 2048 2043\nf 2038 2053 2052 2039\nf 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045\nf 2022 2032 2033 2023\nf 2018 2028 2029 2019\nf 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025\nf 2017 2027 2028 2018\nf 2021 2031 2032 2022\nf 2025 2035 2026 2016\nf 2037 2054 2053 2038\nf 2041 2050 2049 2042\nf 2045 2046 2055 2036\nf 2057 2074 2073 2058\nf 2061 2070 2069 2062\nf 2065 2066 2075 2056\ng uparmr\nusemtl dkblue_pure\nf 2169 2168 2167 2166 2165 2164 2163 2162 2161 2160 2159 2158 2157 2156 2171 2170\nf 2153 2152 2151 2150 2149 2148 2147 2146 2145 2144 2143 2142 2141 2140 2155 2154\ns 52\nf 2105 2107 2185 2186\nf 2081 2083 2177 2178\nf 2089 2091 2174 2173\nf 2097 2099 2182 2181\nf 2169 2170 2135 2134\nf 2165 2166 2131 2130\nf 2161 2162 2127 2126\nf 2157 2158 2139 2138\nf 2153 2154 2119 2118\nf 2149 2150 2115 2114\nf 2145 2146 2111 2110\nf 2141 2142 2123 2122\nf 2137 2138 2103 2101\nf 2133 2134 2095 2093\nf 2129 2130 2087 2085\nf 2125 2126 2079 2077\nf 2121 2122 2082 2084\nf 2117 2118 2090 2092\nf 2113 2114 2098 2100\nf 2109 2110 2106 2076\nf 2187 2102 2100 2183\nf 2180 2094 2092 2172\nf 2175 2086 2084 2176\nf 2184 2078 2076 2179\nf 2176 2084 2082 2177\nf 2172 2092 2090 2174\nf 2183 2100 2098 2182\nf 2179 2076 2106 2185\nf 2110 2111 2104 2106\nf 2114 2115 2096 2098\nf 2118 2119 2088 2090\nf 2122 2123 2080 2082\nf 2126 2127 2081 2079\nf 2130 2131 2089 2087\nf 2134 2135 2097 2095\nf 2138 2139 2105 2103\nf 2142 2143 2108 2123\nf 2146 2147 2112 2111\nf 2150 2151 2116 2115\nf 2154 2155 2120 2119\nf 2158 2159 2124 2139\nf 2162 2163 2128 2127\nf 2166 2167 2132 2131\nf 2170 2171 2136 2135\nf 2095 2097 2181 2180\nf 2087 2089 2173 2175\nf 2079 2081 2178 2184\nf 2103 2105 2186 2187\nf 2107 2077 2179 2185\nf 2083 2085 2176 2177\nf 2091 2093 2172 2174\nf 2099 2101 2183 2182\nf 2168 2169 2134 2133\nf 2164 2165 2130 2129\nf 2160 2161 2126 2125\nf 2156 2157 2138 2137\nf 2152 2153 2118 2117\nf 2148 2149 2114 2113\nf 2144 2145 2110 2109\nf 2140 2141 2122 2121\nf 2136 2137 2101 2099\nf 2132 2133 2093 2091\nf 2128 2129 2085 2083\nf 2124 2125 2077 2107\nf 2120 2121 2084 2086\nf 2116 2117 2092 2094\nf 2112 2113 2100 2102\nf 2108 2109 2076 2078\nf 2186 2104 2102 2187\nf 2181 2096 2094 2180\nf 2173 2088 2086 2175\nf 2178 2080 2078 2184\nf 2177 2082 2080 2178\nf 2174 2090 2088 2173\nf 2182 2098 2096 2181\nf 2185 2106 2104 2186\nf 2111 2112 2102 2104\nf 2115 2116 2094 2096\nf 2119 2120 2086 2088\nf 2123 2108 2078 2080\nf 2127 2128 2083 2081\nf 2131 2132 2091 2089\nf 2135 2136 2099 2097\nf 2139 2124 2107 2105\nf 2143 2144 2109 2108\nf 2147 2148 2113 2112\nf 2151 2152 2117 2116\nf 2155 2140 2121 2120\nf 2159 2160 2125 2124\nf 2163 2164 2129 2128\nf 2167 2168 2133 2132\nf 2171 2156 2137 2136\nf 2093 2095 2180 2172\nf 2085 2087 2175 2176\nf 2077 2079 2184 2179\nf 2101 2103 2187 2183\ng hat\nusemtl brown\ns 1\nf 2411 2410 2406 2405\nf 2390 2389 2527 2528\nf 2384 2383 2382 2381\nf 2223 2222 2412 2409\nf 2405 2406 2402 2401\nf 2397 2388 2391 2398\nf 2389 2388 2392\nf 2383 2384 2201 2200\nf 2377 2378 2375 2372\nf 2352 2351 2218 2216\nf 2344 2342 2341 2343\nf 2191 2199 2303 2302\nf 2219 2221 2222 2223\nf 2214 2213 2352 2357\nf 2210 2205 2206 2211\nf 2207 2206 2204\nf 2200 2201 2303 2304\nf 2190 2193 2194 2195\nf 2189 2192 2193 2190\nf 2195 2199 2191 2190\nf 2205 2203 2204 2206\nf 2206 2207 2208 2209\nf 2211 2212 2364 2215 2213\nf 2216 2218 2367 2221 2219\nf 2188 2191 2302 2301\nf 2343 2341 2208 2207\nf 2346 2344 2343 2345\nf 2372 2375 2376 2373\nf 2372 2371 2381 2377\nf 2388 2389 2390 2391\nf 2395 2396 2392 2388\nf 2402 2403 2404 2399 2397\nf 2409 2412 2413 2414 2410\nf 2298 2202 2385 2506\nf 2389 2392 2526 2527\nf 2528 2527 2387 2386\nf 2410 2414 2407 2406\nf 2526 2525 2394 2393\nf 2385 2384 2381 2371\nf 2223 2409 2408 2224\nf 2403 2402 2406 2407\nf 2399 2400 2395 2388 2397\nf 2375 2378 2387 2393\nf 2384 2385 2202 2201\nf 2379 2380 2378 2377\nf 2357 2352 2216 2217\nf 2348 2345 2204 2203\nf 2199 2198 2304 2303\nf 2224 2220 2219 2223\nf 2351 2352 2213 2215\nf 2211 2206 2209 2363 2212\nf 2344 2346 2194 2193\nf 2201 2202 2302 2303\nf 2195 2194 2196 2197\nf 2188 2189 2190 2191\nf 2197 2198 2199 2195\nf 2346 2347 2196 2194\nf 2342 2344 2193 2192\nf 2210 2211 2213 2214\nf 2217 2216 2219 2220\nf 2301 2302 2202 2298\nf 2345 2343 2207 2204\nf 2347 2346 2345 2348\nf 2371 2372 2373 2374\nf 2377 2381 2382 2379\nf 2378 2380 2386 2387\nf 2376 2375 2393 2394\nf 2401 2402 2397 2398\nf 2408 2409 2410 2411\nf 2506 2385 2371 2374\nf 2392 2396 2525 2526\nf 2527 2526 2393 2387\ns 14\nf 2434 2242 2231 2433\nf 2456 2455 2464 2459\nf 2472 2471 2468 2467\nf 2472 2473 2278 2277\nf 2463 2460 2459 2464\nf 2452 2439 2454 2453\nf 2451 2435 2434 2450\nf 2447 2429 2427 2446\nf 2443 2444 2428 2440\nf 2242 2434 2435 2244\nf 2429 2423 2425 2427\nf 2360 2359 2233 2240\nf 2263 2280 2250 2249\nf 2269 2273 2274 2270\nf 2264 2254 2251 2266\nf 2253 2252 2255 2256 2257 2258 2259 2260 2262 2261\nf 2257 2240 2241 2258\nf 2236 2237 2254\nf 2247 2248 2249 2250\nf 2240 2233 2232 2241\nf 2237 2236 2235 2238\nf 2241 2232 2231 2368\nf 2251 2237 2248 2247\nf 2252 2237 2238 2255\nf 2258 2241 2368 2243 2259\nf 2260 2370 2263 2262\nf 2355 2268 2269 2354\nf 2276 2277 2306 2307\nf 2273 2272 2307 2306\nf 2354 2353 2265 2264\nf 2368 2231 2242 2243\nf 2427 2425 2426 2428\nf 2433 2231 2421 2431\nf 2441 2440 2428 2442\nf 2446 2427 2428 2444\nf 2450 2434 2433 2431 2448\nf 2453 2454 2436 2451\nf 2459 2460 2461 2462\nf 2471 2472 2277 2276\nf 2457 2456 2459 2462\nf 2447 2449 2430\nf 2432 2422 2424 2430\nf 2454 2475 2437 2436\nf 2460 2467 2468 2461\nf 2455 2456 2445 2426\nf 2443 2440 2439 2452\nf 2430 2429 2447\nf 2445 2442 2428\nf 2435 2436 2437 2246 2244\nf 2430 2424 2423 2429\nf 2370 2260 2369\nf 2257 2360 2240\nf 2274 2273 2306 2308\nf 2370 2245 2280 2263\nf 2268 2272 2273 2269\nf 2236 2254 2264 2265\nf 2261 2249 2248 2253\nf 2256 2239 2360\nf 2237 2251 2254\nf 2244 2246 2245 2370 2369\nf 2239 2234 2359 2360\nf 2238 2235 2234 2239\nf 2244 2369 2243 2242\nf 2248 2237 2252 2253\nf 2255 2238 2239 2256\nf 2259 2243 2369 2260\nf 2262 2263 2249 2261\nf 2353 2354 2269 2270\nf 2277 2278 2308 2306\nf 2355 2354 2264 2266\nf 2360 2257 2256\nf 2431 2421 2422 2432\nf 2438 2439 2440 2441\nf 2445 2428 2426\nf 2448 2431 2432 2449\nf 2452 2453 2451 2450 2448 2449 2447 2446 2444 2443\nf 2457 2442 2445 2456\nf 2463 2469 2467 2460\nf 2439 2438 2475 2454\nf 2473 2472 2467 2469\nf 2432 2430 2449\nf 2435 2451 2436\ns 19\nf 2485 2457 2462 2476\nf 2441 2442 2484 2483\nf 2468 2471 2479 2478\nf 2476 2477 2478 2479 2331 2330 2480 2481 2482 2483 2484 2485\nf 2336 2335 2266 2251\nf 2332 2331 2276 2307\nf 2335 2336 2337 2338 2328 2329 2330 2331 2332 2333 2334 2356\nf 2333 2332 2307 2272\nf 2337 2336 2251 2247\nf 2356 2355 2266 2335\nf 2471 2276 2331 2479\nf 2442 2457 2485 2484\nf 2438 2441 2483 2482\nf 2461 2468 2478 2477\nf 2437 2475 2481 2480\nf 2328 2338 2250 2280\nf 2355 2356 2334 2268\nf 2330 2329 2245 2246\nf 2329 2328 2280 2245\nf 2334 2333 2272 2268\nf 2338 2337 2247 2250\nf 2246 2437 2480 2330\nf 2461 2477 2476 2462\nf 2475 2438 2482 2481\ns 2\nf 2507 2374 2373 2492\nf 2488 2395 2400 2498\nf 2363 2362 2294 2212\nf 2282 2188 2301 2281\nf 2361 2351 2215 2295\nf 2208 2285 2286 2209\nf 2365 2295 2215 2364\nf 2283 2189 2188 2282\nf 2365 2364 2212 2294\nf 2492 2373 2376 2487\nf 2396 2489 2495 2525\nf 2491 2506 2374 2507\nf 2394 2486 2487 2376\nf 2342 2340 2339 2341\nf 2298 2288 2281 2301\nf 2192 2284 2340 2342\nf 2362 2363 2209 2286\nf 2284 2192 2189 2283\nf 2341 2339 2285 2208\nf 2395 2488 2489 2396\nf 2506 2491 2288 2298\nf 2525 2495 2486 2394\ns 8\nf 2520 2521 2515 2514\nf 2524 2505 2509 2518\nf 2504 2300 2319 2512\nf 2496 2497 2524 2523\nf 2490 2508 2520 2519\nf 2490 2491 2507 2508\nf 2327 2326 2291 2290\nf 2323 2322 2295 2365 2294\nf 2318 2317 2287 2289\nf 2291 2292 2314 2313\nf 2289 2287 2310 2309\nf 2294 2362 2286 2315\nf 2281 2288 2309 2310\nf 2286 2285 2314 2315\nf 2324 2325 2326 2327 2316 2317 2318 2319 2320 2321 2322 2323\nf 2290 2291 2313 2312\nf 2317 2316 2299 2287\nf 2322 2321 2296 2361 2295\nf 2326 2325 2292 2291\nf 2490 2309 2288 2491\nf 2494 2508 2507 2492\nf 2508 2494 2521 2520\nf 2505 2524 2497\nf 2502 2503 2504 2512 2511\nf 2523 2524 2518 2517\nf 2521 2522 2516 2515\nf 2505 2500 2499 2510 2509\nf 2289 2519 2513 2318\nf 2493 2496 2523 2522\nf 2309 2490 2519 2289\nf 2487 2486 2495 2489 2496 2493\nf 2316 2327 2290 2299\nf 2324 2323 2294 2293\nf 2320 2319 2300 2297\nf 2292 2293 2315 2314\nf 2287 2299 2311 2310\nf 2311 2282 2281 2310\nf 2312 2313 2284 2283\nf 2313 2314 2285 2339 2340 2284\nf 2283 2282 2311 2312\nf 2299 2290 2312 2311\nf 2315 2293 2294\nf 2321 2320 2297 2366 2296\nf 2325 2324 2293 2292\nf 2492 2487 2493 2494\nf 2509 2510 2511 2512 2319 2318 2513 2514 2515 2516 2517 2518\nf 2494 2493 2522 2521\nf 2519 2520 2514 2513\nf 2499 2501 2502 2511 2510\nf 2522 2523 2517 2516\ns 10\nf 2222 2300 2504 2412\nf 2367 2366 2297 2221\nf 2221 2297 2300 2222\nf 2404 2403 2499 2500\nf 2412 2504 2503 2413\nf 2502 2414 2413 2503\nf 2351 2361 2296 2218\nf 2366 2367 2218 2296\nf 2499 2403 2407 2501\nf 2414 2502 2501 2407\ns 35\nf 2505 2399 2404 2500\nf 2497 2488 2498 2505\nf 2399 2505 2498 2400\nf 2497 2496 2489 2488\ng band\nusemtl black\ns 6\nf 2529 2528 2386 2466\nf 2465 2380 2379 2382 2470\nf 2391 2390 2458 2420\nf 2417 2423 2424 2418\nf 2398 2419 2417 2401\nf 2353 2350 2349\nf 2353 2349 2267 2265\nf 2275 2274 2308 2305\nf 2305 2279 2200 2304\nf 2347 2350 2271 2196\nf 2228 2234 2235 2229\nf 2210 2229 2230 2205\nf 2224 2225 2226 2220\nf 2214 2228 2229 2210\nf 2358 2359 2234 2228\nf 2236 2265 2267 2230\nf 2270 2274 2275 2271\nf 2350 2347 2348 2349\nf 2408 2415 2225 2224\nf 2391 2420 2419 2398\nf 2419 2425 2423 2417\nf 2465 2463 2464 2466\nf 2473 2474 2279 2278\nf 2474 2473 2469 2470\nf 2455 2458 2529 2464\nf 2529 2466 2464\nf 2416 2411 2405 2418\nf 2458 2390 2528 2529\nf 2383 2474 2470 2382\nf 2465 2470 2469 2463\nf 2420 2458 2455 2426\nf 2416 2422 2421 2415\nf 2401 2417 2418 2405\nf 2359 2358 2227 2233\nf 2278 2279 2305 2308\nf 2350 2353 2270 2271\nf 2229 2235 2236 2230\nf 2225 2231 2232 2226\nf 2220 2226 2227 2217\nf 2357 2358 2228 2214\nf 2226 2232 2233 2227\nf 2230 2267 2203 2205\nf 2275 2198 2197 2196 2271\nf 2198 2275 2305 2304\nf 2349 2348 2203 2267\nf 2358 2357 2217 2227\nf 2411 2416 2415 2408\nf 2415 2421 2231 2225\nf 2420 2426 2425 2419\nf 2380 2465 2466 2386\nf 2383 2200 2279 2474\nf 2422 2416 2418 2424\ng facial\nusemtl skin\ns 1\nf 2848 2846 2847 2849\nf 3276 2856 2857 3277\nf 2856 2854 2855 2857\nf 3388 3400 3402 3389\nf 3392 3388 3390 3391\nf 3375 3377 3380 3376\nf 3369 3371 3372 3370\nf 3298 3363 3364 3299\nf 3353 3355 3356 3354\nf 3343 3347 3348 3344\nf 3308 3339 3340 3309\nf 3327 3319 3322 3323\nf 3311 3304 3303 3310\nf 3296 3298 3300 3297\nf 3389 3390 3388\nf 3331 3332 3333 3334 3330\nf 3308 3309 3307\nf 3291 3289 3288 3290\nf 3281 3279 3278 3280\nf 3095 3263 3264 3262\nf 3260 3261 3314 3312\nf 3256 3257 3302 3306\nf 3252 3253 3342 3316\nf 2588 2578 3238 3040\nf 3237 3032 3244 3245\nf 3036 3296 3295 3241\nf 3231 3087 3266 3269\nf 3032 3042 3235 3240\nf 3093 3092 3229 3228\nf 3100 3291 3293 3221\nf 3227 3093 3275 3277\nf 3033 3238 3245 3244\nf 3094 3099 3219 3224\nf 3105 3112 3223 3222\nf 3104 3099 3218 3214\nf 3108 3153 3205 3207\nf 3153 3108 3210 3206\nf 3143 3141 3189 3196\nf 3134 3135 3171 3164\nf 3141 3143 3195 3188\nf 3114 3158 3117 3187 3194\nf 3127 3130 3168 3170\nf 3130 3127 3169 3167\nf 3120 3117 3186 3181\nf 3156 3110 3201 3199\nf 2682 2683 3185 3190\nf 2691 2692 3166 3173\nf 3118 3186 3191 3157\nf 2669 2728 3206 3210\nf 3119 3148 3179 3181\nf 2994 3000 3147\nf 3232 3145 3267\nf 3134 3004 3165\nf 3356 3358 3385 3383\nf 3097 3220 3222\nf 3121 3183 3188 3116\nf 3184 3140 3142 3189\nf 3128 3129 3133 3164 3171\nf 3133 3163 3132 3022 3006\nf 3167 3169 3125 3126\nf 3125 3123 3178 3173\nf 3148 3123 3174 3179\nf 3157 3113 3198 3192\nf 3201 3109 3155 3199\nf 3205 3153 3109 3201\nf 3107 3208 3214 3103 3152\nf 3221 2659 2661 3216\nf 3098 3095 3224 3219\nf 3230 3091 3287 3286 3225\nf 2650 3227 3277 2857\nf 3091 3088 3228 3229\nf 3364 3366 3270 3268\nf 3085 3089 3084 3047 3062 3086\nf 3081 2634 2638 3082\nf 3020 2562 2634 3081\nf 3029 3080 3079 3026\nf 3076 2626 2625 3074\nf 3070 3066 3065 3073\nf 3070 3072 3248 3249\nf 3065 3066 3064\nf 3053 3375 3374 3052\nf 2716 3060 3061 2715\nf 3253 3252 3261 3260 3259\nf 3057 3247 3059 3058\nf 3053 3311 3313 3054\nf 3046 3045 3246 3050\nf 3002 3045 3046 3001\nf 3373 3037 3241 3295\nf 3363 3234 3041 3365\nf 3033 3040 3238\nf 3242 3241 3037 3035\nf 3026 3027 3030 3029\nf 3007 3017 3024 3023\nf 3159 2565 2564 3019 3021\nf 3336 3012 3014 3329\nf 3399 3015 3013 3396\nf 3012 3013 3015 3014\nf 3400 3008 3384 3387 3401\nf 3362 3361 3003 3002 2994\nf 2993 3147 3000\nf 2999 2990 2989\nf 2998 2994 2997 2996\nf 2993 3343 3346 3147\nf 3353 2989 2990 3355\nf 2545 2742 2705 2546\nf 2979 2977 2978 2980\nf 2967 2922 2921 2968\nf 2956 2958 2957 2955\nf 2948 2950 2949 2947\nf 2940 2942 2941 2939\nf 2932 2934 2933 2931\nf 2924 2926 2925 2923\nf 2914 2913 2912 2918\nf 2896 2894 2895 2897\nf 2887 2886 2885 2888\nf 2983 2985 2984\nf 2943 2946 2945 2944\nf 2900 2902 2901\nf 2873 2875 2874 2872\nf 2863 2865 2864 2862\nf 2645 2842 2840\nf 2898 2900 2830 2839\nf 2886 2887 2836 2835\nf 2926 2924 2832 2831\nf 2964 2587 2603 2963\nf 2822 2823 2814 2577\nf 2819 2818 2583 2581\nf 2807 2808 2643 2646\nf 2816 2820 2821 2580\nf 2853 2851 2805 2649\nf 2871 2794 2658 2873\nf 2803 2804 2649 2648\nf 2813 2814 2579 2590\nf 2810 2801 2652 2646\nf 2797 2799 2665 2656\nf 2785 2791 2664 2666\nf 2788 2784 2668 2725\nf 2781 2783 2727 2671\nf 2793 2798 2658 2662\nf 2754 2749 2704 2706\nf 2760 2765 2710 2708\nf 2779 2771 2677 2732 2672\nf 2752 2747 2695 2688\nf 2739 2744 2698 2701\nf 2756 2758 2686 2722\nf 2770 2776 2732 2677\nf 2769 2767 2682 2734\nf 2755 2750 2691 2684\nf 2767 2769 2733 2681\nf 2729 2782 2784 2667\nf 2723 2929 2943\nf 2930 2719 2535 2946\nf 2717 2843 2883 2884 2642\nf 2703 2704 2749 2742\nf 2794 2871 2867 2660\nf 2906 2972 2973 2987 2988 2905\nf 2773 2800 2713\nf 2760 2753 2690 2687\nf 2761 2709 2707 2754\nf 2741 2703 2545 2547 2702\nf 2697 2702 2740 2745\nf 2745 2747 2696 2697\nf 2693 2694 2743 2750\nf 2759 2764 2679 2687\nf 2733 2675 2770 2768\nf 2777 2730 2670 2781\nf 2781 2670 2728 2783\nf 2792 2786 2666 2664\nf 2802 2795 2660 2867 2868\nf 2797 2841 2654 2655\nf 2865 2806 2647 2869\nf 2854 2856 2958 2956\nf 2644 2808 2807 2647\nf 2642 2641 2717\nf 2640 2596 2546 2705\nf 2576 2637 2636 2573\nf 2632 2630 2631 2633\nf 2614 2623 2630 2632\nf 2629 2626 2627 2628\nf 2605 2610 2620\nf 2827 2619 2615 2828\nf 2613 2614 2612 2593\nf 2602 2961 2963 2603\nf 2609 2587 2588 2716\nf 2925 2825 2608 2923\nf 2825 2901 2902 2605 2606\nf 2602 2895 2888 2601\nf 2824 2891 2892 2598 2594\nf 2543 2594 2592 2544\nf 2882 2586 2583 2880\nf 2591 2577 2814 2813\nf 2580 2587 2964 2965 2816\nf 2816 2582 2819 2820\nf 2570 2569 2572 2573\nf 2976 2977 2560\nf 2914 2556 2555 2913\nf 2912 2919 2934 2932\nf 2552 2554 2982 2980\nf 2553 2554 2552 2551\nf 2940 2938 2967 2969\nf 2535 2543 2544 2945 2946\nf 2541 2719 2534\nf 2530 2531 2540\nf 2537 2538 2535 2539\nf 2719 2930 2927 2534\nf 2939 2531 2530 2937\nf 2533 2534 2927 2931\nf 2537 2908 2909 2538\nf 2540 2531 2539\nf 2541 2540 2539\nf 2542 2538 2909 2910 2546\nf 2922 2936 2934 2919\nf 2551 2552 2550 2549\nf 2550 2552 2980 2978\nf 2920 2553 2551 2968 2921\nf 2915 2984 2985 2556 2914\nf 2904 2567 2547 2903\nf 2571 2572 2569 2568\nf 2823 2822 2578 2815\nf 2583 2586 2581\nf 2812 2817 2581 2589\nf 2957 2591 2813 2955\nf 2592 2593 2548 2544\nf 2594 2598 2597 2592\nf 2601 2888 2885 2600\nf 2605 2902 2899 2604\nf 2892 2923 2608 2598\nf 2832 2836 2837 2831\nf 2603 2587 2609 2604\nf 2612 2568 2548 2593\nf 2592 2829 2613 2593\nf 2620 2610 2715 2714\nf 2622 2625 2624 2621\nf 2628 2631 2630 2629\nf 2612 2571 2568\nf 2573 2636 2635 2570\nf 2627 2639 2637 2576 2575 2574 2633 2631 2628\nf 2881 2878 2600 2611\nf 2810 2809 2717 2840\nf 2848 2850 2952 2950\nf 2858 2651 2803 2861\nf 2654 2645 2640\nf 2870 2864 2866\nf 2791 2663 2660 2795\nf 2724 2661 2793 2789\nf 2780 2786 2665 2674\nf 2764 2771 2678 2679\nf 2758 2685 2681 2763\nf 2687 2690 2752 2759\nf 2690 2696 2747 2752\nf 2739 2700 2694 2744\nf 2736 2738 2700 2566\nf 2749 2754 2707 2705\nf 2772 2765 2679 2678\nf 2678 2673 2780 2772\nf 2567 2904 2905 2988 2975\nf 2877 2875 2798 2659\nf 2796 2792 2664 2657\nf 2645 2840 2717 2641\nf 2718 2935 2937 2530\nf 2731 2776 2770 2675\nf 2784 2788 2726 2667\nf 2738 2736 2565 2699\nf 2757 2755 2684 2720\nf 2775 2769 2734 2676\nf 2768 2770 2677 2735\nf 2751 2756 2722 2688\nf 2737 2739 2701 2567\nf 2759 2752 2688 2722 2686\nf 2785 2779 2672 2729 2667\nf 2753 2760 2708 2706\nf 2761 2754 2706 2708\nf 2789 2793 2662 2725\nf 2777 2781 2671 2731\nf 2790 2788 2725 2662\nf 2786 2780 2673 2666\nf 2792 2796 2656 2665\nf 2809 2810 2646 2643\nf 2955 2813 2590 2953\nf 2861 2803 2648 2863\nf 2864 2870 2872 2862\nf 2850 2852 2954 2952\nf 2947 2811 2586 2882\nf 2802 2807 2646 2652\nf 2820 2819 2581 2817\nf 2966 2962 2585\nf 2824 2599 2889 2891\nf 2924 2893 2833 2832\nf 2887 2894 2837 2836\nf 2645 2654 2841 2842\nf 2866 2869 2868 2867\nf 2866 2864 2865 2869\nf 2875 2877 2876 2874\nf 2903 2906 2905 2904\nf 2963 2966 2965 2964\nf 2986 2988 2987\nf 2886 2890 2889 2885\nf 2898 2896 2897 2899\nf 2913 2920 2919 2912\nf 2926 2900 2901 2925\nf 2934 2936 2935 2933\nf 2942 2907 2908 2941\nf 2950 2952 2951 2949\nf 2961 2960 2959 2962\nf 2968 2970 2969 2967\nf 2981 2979 2980 2982\nf 2742 2749 2705\nf 3347 3343 2993 2992\nf 2997 3325 3324 2996\nf 2998 2990 2999\nf 2998 2999 3000\nf 3005 3326 3325 2997 3001\nf 3344 3348 3328 3334\nf 3009 3008 3400 3388\nf 3392 3009 3388\nf 3384 3008 3010 3382\nf 3344 3334 3333 3150 3345\nf 3160 3021 3019 3390 3389 3022\nf 3025 3024 3017 3016\nf 3027 3028 3031 3030\nf 3037 3038 3035\nf 3039 3034 3041 3234\nf 3365 3041 3235 3367\nf 3038 3037 3373 3376\nf 3001 3046 3047 3005\nf 3050 3305 3301 3051\nf 3054 3313 3315 3055\nf 3058 3059 3049 3048\nf 3257 3256 3255 3254 3258\nf 3056 3061 3060 3055\nf 3062 3047 3046 3050 3051\nf 3064 3066 3250 3251\nf 2714 3071 3248 3072 2622\nf 3070 3073 3074 3072\nf 3074 3073 3077 3076\nf 3026 3079 3065 3063\nf 3016 3020 3081 3025\nf 3082 2638 2639 3083\nf 3086 3062 3297 3300\nf 3088 3231 3269 3271\nf 3228 3088 3271 3273\nf 3227 2650 2651 3226\nf 3095 3262 3233 3224\nf 3292 3278 2859 2876\nf 3103 3101 3217 3213\nf 3152 3103 3213 3211\nf 3111 3106 3208 3202\nf 3115 3111 3202 3194\nf 3119 3118 3190 3185\nf 3178 3123 3148 3180\nf 3169 3174 3123 3125\nf 3131 3126 3166 3161\nf 3160 3162 3131 3021\nf 3124 3128 3171 3176\nf 3189 3142 3144 3196\nf 3223 3144 3197 3097 3222\nf 3084 3096 3097 3197 3144 3142 3140 3138 3136\nf 3385 3358 3323 3322 3386\nf 3004 3327 3326 3005\nf 3001 2997 2994 3002\nf 3354 3381 3338 3352\nf 3119 3185 3180 3148\nf 2676 3198 3200 2730\nf 2669 3210 3212 2724\nf 2692 2699 3161 3166\nf 2683 2720 3180 3185\nf 3110 3154 3205 3201\nf 3117 3158 3191 3186\nf 3127 3122 3174 3169\nf 3130 3132 3163 3168\nf 3117 3120 3182 3187\nf 3143 3112 3203 3195\nf 3135 3137 3176 3171\nf 3141 3139 3184 3189\nf 3108 3151 3212 3210\nf 3113 3155 3200 3198\nf 3100 3102 3213 3217\nf 3112 3143 3196 3223\nf 3105 3215 3209\nf 3087 3232 3267 3266\nf 3370 3372 3276 3274\nf 3290 3280 3278 3292\nf 3092 3281 3283 3229\nf 3042 3369 3367 3235\nf 3299 3364 3268 3265\nf 3099 3094 3225 3218\nf 3032 3240 3243 3244\nf 3035 3038 3380 3379 3239\nf 3341 3247 3317\nf 3255 3256 3306 3309\nf 3259 3260 3312 3310\nf 3095 3098 3220 3263\nf 3279 2858 2859 3278\nf 3284 3288 3289 3285\nf 3299 3300 3298\nf 3324 3325 3326 3327 3323\nf 3386 3387 3385\nf 3297 3294 3295 3296\nf 3305 3307 3309 3306\nf 3318 3315 3314 3316\nf 3335 3338 3337 3336\nf 3346 3343 3344 3345\nf 3354 3352 3351 3353\nf 3362 3346 3345 3359\nf 3370 3368 3367 3369\nf 3373 3295 3294 3374\nf 3387 3384 3383 3385\nf 3399 3396 3395 3397\nf 3052 3374 3294 3051\nf 3266 3267 3145 3265\nf 3275 3273 3272 3274\nf 2850 2848 2849 2851\nf 2854 2852 2853 2855\nf 2846 2843 2844 2847\nf 3273 3271 3269 3268 3270 3272\nf 3275 3274 3276 3277\nf 3005 3136 3165 3004\nf 3394 3392 3391 3393\nf 3382 3337 3338 3381\nf 3371 2957 2958 3372\nf 3363 3365 3366 3364\nf 3355 3357 3358 3356\nf 3347 3349 3350 3348\nf 3339 3341 3342 3340\nf 3334 3328 3329 3330\nf 3313 3311 3310 3312\nf 3304 3301 3302 3303\nf 3398 3399 3397\nf 3360 3361 3362 3359\nf 3317 3318 3316\nf 3290 3292 3293 3291\nf 3280 3282 3283 3281\nf 3262 3264 3089\nf 3261 3252 3316 3314\nf 3257 3258 3303 3302\nf 3253 3254 3340 3342\nf 3377 3054 3040 3378\nf 2577 3237 3245 2822\nf 3034 3036 3241 3242\nf 3090 3087 3231 3230\nf 3033 3244 3243 3239\nf 3093 3228 3273 3275\nf 3291 3100 3217 3289\nf 3092 3093 3227 3226\nf 3042 3032 3237 3236\nf 3090 3094 3224 3233\nf 3098 3105 3222 3220\nf 3106 3104 3214 3208\nf 3151 3108 3207 3211\nf 3109 3153 3206 3204\nf 3102 3100 3221 3216\nf 3137 3135 3172 3177\nf 3139 3141 3188 3183\nf 3110 3156 3114 3194 3202\nf 3122 3127 3170 3175\nf 3132 3130 3167 3162\nf 3149 3120 3181 3179\nf 3114 3156 3199 3193\nf 2734 2682 3190 3192\nf 2684 2691 3173 3178\nf 3118 3157 3192 3190\nf 3107 3207 3205 3154\nf 3359 3345 3150\nf 3362 2994 3147 3346\nf 3086 3300 3299 3265 3145\nf 3165 3172 3135 3134\nf 3101 3285 3289 3217\nf 3321 3402 3401 3387 3386 3322\nf 3144 3223 3196\nf 3121 3124 3176 3183\nf 3177 3138 3140 3184\nf 3133 3006 3004 3134 3164\nf 3168 3163 3133 3129\nf 3129 3128 3170 3168\nf 3173 3166 3126 3125\nf 3121 3116 3187 3182\nf 3191 3193 3113 3157\nf 3204 2670 2730 3200\nf 3206 2728 2670 3204\nf 3104 3106 3209 3215\nf 3286 3285 3101 3218 3225\nf 3097 3096 3263 3220\nf 3287 3091 3229 3283\nf 3372 2958 2856 3276\nf 3091 3230 3231 3088\nf 3145 3085 3086\nf 3136 3005 3047 3084\nf 3028 3082 3083 3031\nf 3080 3078 3077 3079\nf 3079 3077 3073 3065\nf 3075 2627 2626 3076\nf 3071 3061 3056\nf 3250 3066 3070 3249\nf 3044 3063 3065 3064\nf 3054 3377 3375 3053\nf 2716 2588 3040 3060\nf 3339 3059 3247 3341\nf 3057 3056 3318 3317 3247\nf 3052 3304 3311 3053\nf 3045 3049 3308 3307 3246\nf 3003 3043 3045 3002\nf 3296 3036 3039 3298\nf 3236 3237 2577 2591\nf 3239 3379 3378 3040 3033\nf 3243 3242 3035 3239\nf 3028 3027 3024 3025\nf 3019 3391 3390\nf 3329 3014 3015 3330\nf 3348 3350 3335 3328\nf 3394 3396 3013 3011\nf 3010 3011 3013 3012\nf 3383 3381 3354 3356\nf 3004 3006 3319 3327\nf 2994 2998 3000\nf 2999 2989 3146 2991\nf 2998 2996 2995\nf 3355 2990 2995 3357\nf 3351 3349 2991 3146\nf 2975 2988 2986 2974\nf 2977 2976 2974 2978\nf 2962 2966 2963 2961\nf 2954 2956 2955 2953\nf 2883 2948 2947 2882\nf 2938 2940 2939 2937\nf 2928 2932 2931 2927\nf 2893 2924 2923 2892\nf 2907 2906 2903 2911\nf 2894 2887 2888 2895\nf 2881 2884 2882 2880\nf 2974 2976 2975\nf 2914 2918 2917 2916 2915\nf 2891 2893 2892\nf 2872 2870 2871 2873\nf 2862 2860 2861 2863\nf 2840 2842 2841 2653\nf 2896 2898 2839 2838\nf 2890 2886 2835 2834\nf 2900 2926 2831 2830\nf 2587 2815 2578 2588\nf 2823 2821 2579 2814\nf 2818 2879 2880 2583\nf 2847 2844 2643 2808\nf 2817 2812 2590 2579\nf 2805 2806 2648 2649\nf 2798 2875 2873 2658\nf 2855 2853 2649 2804\nf 2821 2823 2815 2580\nf 2801 2796 2657 2652\nf 2799 2800 2674 2665\nf 2791 2795 2657 2664\nf 2784 2782 2727 2668\nf 2783 2787 2668 2727\nf 2773 2766 2710 2712\nf 2741 2748 2704 2703\nf 2765 2772 2712 2710\nf 2771 2764 2680 2735 2677\nf 2747 2745 2698 2695\nf 2744 2746 2695 2698\nf 2758 2763 2680 2686\nf 2776 2778 2672 2732\nf 2767 2762 2683 2682\nf 2750 2743 2692 2691\nf 2733 2768 2763 2681\nf 2787 2783 2728 2669\nf 2758 2756 2721 2685\nf 2719 2541 2535\nf 2845 2717 2809\nf 2742 2545 2703\nf 2969 2971 2942 2940\nf 2799 2797 2655\nf 2679 2765 2760 2687\nf 2766 2711 2709 2761\nf 2748 2741 2702 2697 2696\nf 2547 2567 2701 2740 2702\nf 2694 2693 2746 2744\nf 2750 2755 2689 2693\nf 2756 2751 2689 2721\nf 2769 2775 2675 2733\nf 2776 2731 2671 2778\nf 2778 2671 2727 2782\nf 2726 2663 2791 2785 2667\nf 2793 2661 2659 2798\nf 2796 2801 2653 2656\nf 2802 2868 2869 2647 2807\nf 2857 2855 2804 2650\nf 2806 2805 2644 2647\nf 2846 2848 2950 2948\nf 2642 2611 2596 2640 2645 2641\nf 2636 2638 2634 2635\nf 2635 2634 2562 2561\nf 2571 2632 2633 2574\nf 2624 2625 2626 2629\nf 2623 2614 2615 2619\nf 2827 2826 2621 2619\nf 2613 2615 2614\nf 2601 2960 2961 2602\nf 2715 2610 2609 2716\nf 2837 2838 2839 2830 2831\nf 2607 2608 2825 2606\nf 2603 2897 2895 2602\nf 2599 2824 2594 2595\nf 2542 2595 2594 2543\nf 2879 2818 2584 2959\nf 2949 2589 2811 2947\nf 2815 2587 2580\nf 2582 2584 2818 2819\nf 2574 2575 2572 2571\nf 2568 2569 2558 2548\nf 2566 2560 2564 2565 2736\nf 2913 2555 2553 2920\nf 2982 2554 2556 2985\nf 2555 2556 2554 2553\nf 2987 2973 2970 2549 2986\nf 2911 2903 2547 2545\nf 2541 2539 2535\nf 2532 2718 2530 2540\nf 2536 2537 2539\nf 2941 2536 2531 2939\nf 2718 2532 2933 2935\nf 2532 2533 2931 2933\nf 2908 2537 2536 2941\nf 2531 2536 2539\nf 2533 2532 2540\nf 2540 2541 2534 2533\nf 2918 2912 2932 2928\nf 2974 2986 2549 2550\nf 2974 2550 2978\nf 2968 2551 2549 2970\nf 2929 2723 2917 2918 2928\nf 2567 2975 2976 2560 2566 2737\nf 2557 2558 2569 2570\nf 2575 2576 2573 2572\nf 2582 2585 2584\nf 2811 2589 2581 2586\nf 2951 2812 2589 2949\nf 2962 2959 2584 2585\nf 2546 2596 2595 2542\nf 2600 2885 2889 2599\nf 2604 2899 2897 2603\nf 2597 2598 2608 2607\nf 2836 2832 2833 2834 2835\nf 2604 2609 2610 2605\nf 2600 2599 2595 2596 2611\nf 2829 2828 2615 2613\nf 2622 2621 2826 2620 2714\nf 2621 2624 2623 2619\nf 2629 2630 2623 2624\nf 2612 2614 2632 2571\nf 2570 2635 2561 2557\nf 2637 2639 2638 2636\nf 2884 2881 2611 2642\nf 2849 2847 2808 2644\nf 2851 2849 2644 2805\nf 2803 2651 2650 2804\nf 2801 2810 2840 2653\nf 2876 2859 2860 2874\nf 2790 2794 2660 2663\nf 2788 2790 2663 2726\nf 2779 2785 2666 2673\nf 2771 2779 2673 2678\nf 2762 2767 2681 2685\nf 2757 2721 2689 2755\nf 2693 2689 2751 2746\nf 2738 2743 2694 2700\nf 2566 2700 2739 2737\nf 2753 2748 2696 2690\nf 2773 2713 2711 2766\nf 2799 2655 2774 2713 2800\nf 2705 2707 2709 2711 2713 2774 2655 2654 2640\nf 2972 2906 2907 2942 2971\nf 2546 2910 2911 2545\nf 2543 2535 2538 2542\nf 2936 2922 2967 2938\nf 2721 2757 2762 2685\nf 2730 2777 2775 2676\nf 2724 2789 2787 2669\nf 2743 2738 2699 2692\nf 2762 2757 2720 2683\nf 2778 2782 2729 2672\nf 2763 2768 2735 2680\nf 2746 2751 2688 2695\nf 2745 2740 2701 2698\nf 2764 2759 2686 2680\nf 2772 2780 2674 2712\nf 2748 2753 2706 2704\nf 2766 2761 2708 2710\nf 2787 2789 2725 2668\nf 2775 2777 2731 2675\nf 2794 2790 2662 2658\nf 2800 2773 2712 2674\nf 2786 2792 2665\nf 2844 2845 2809 2643\nf 2852 2854 2956 2954\nf 2874 2860 2862 2872\nf 2806 2865 2863 2648\nf 2812 2951 2953 2590\nf 2843 2846 2948 2883\nf 2795 2802 2652 2657\nf 2821 2820 2817 2579\nf 2816 2965 2966 2585 2582\nf 2901 2825 2925\nf 2893 2890 2834 2833\nf 2894 2896 2838 2837\nf 2841 2797 2656 2653\nf 2860 2859 2858 2861\nf 2867 2871 2870 2866\nf 2882 2884 2883\nf 2907 2911 2910 2909 2908\nf 2971 2973 2972\nf 2880 2879 2878 2881\nf 2890 2893 2891 2889\nf 2900 2898 2899 2902\nf 2920 2921 2922 2919\nf 2929 2928 2927 2930\nf 2937 2935 2936 2938\nf 2943 2929 2930 2946\nf 2953 2951 2952 2954\nf 2960 2878 2879 2959\nf 2971 2969 2970 2973\nf 2983 2981 2982 2985\nf 2600 2878 2960 2601\nf 3349 3347 2992 2991\nf 3357 2995 2996 3324\nf 2998 2995 2990\nf 2999 2991 2992\nf 2992 2993 3000 2999\nf 3335 3350 3352 3338\nf 3008 3009 3011 3010\nf 3392 3394 3011 3009\nf 3337 3382 3010 3012 3336\nf 3330 3015 3399 3398 3331\nf 3319 3006 3022 3320\nf 3023 3024 3027 3026\nf 3238 2578 2822 3245\nf 3034 3039 3036\nf 3041 3034 3240 3235\nf 3371 3236 2591 2957\nf 3003 3007 3044 3043\nf 3043 3048 3049 3045\nf 3051 3301 3304 3052\nf 3055 3315 3318 3056\nf 3049 3059 3339 3308\nf 3253 3259 3258 3254\nf 3055 3060 3040 3054\nf 3044 3007 3023 3063\nf 3044 3064 3251 3043\nf 2714 2715 3061 3071\nf 3072 3074 2625 2622\nf 3076 3077 3078 3075\nf 3023 3026 3063\nf 3025 3081 3082 3028\nf 3075 3078 3080 3029 3030 3031 3083 2639 2627\nf 3062 3051 3294 3297\nf 3262 3145 3232 3233\nf 3366 3368 3272 3270\nf 3279 3226 2651 2858\nf 3084 3089 3096\nf 3284 3282 3288\nf 3218 3101 3103 3214\nf 3212 3216 2661 2724\nf 3112 3105 3209 3203\nf 3116 3115 3194 3187\nf 3186 3118 3119 3181\nf 3182 3175 3124 3121\nf 3175 3170 3128 3124\nf 3167 3126 3131 3162\nf 3021 3131 3161 3159\nf 3136 3138 3177 3172\nf 3115 3116 3188 3195\nf 3195 3203 3111 3115\nf 3389 3402 3321 3320 3022\nf 2659 3221 3293 2877\nf 3099 3104 3215 3219\nf 3085 3145 3262 3089\nf 2989 3353 3351 3146\nf 3113 3193 3199 3155\nf 3107 3152 3211 3207\nf 2699 2565 3159 3161\nf 2720 2684 3178 3180\nf 2676 2734 3192 3198\nf 3158 3114 3193 3191\nf 3122 3149 3179 3174\nf 3022 3132 3162 3160\nf 3120 3149 3122 3175 3182\nf 3107 3154 3110 3202 3208\nf 3137 3139 3183 3176\nf 3139 3137 3177 3184\nf 3151 3102 3216 3212\nf 3155 3109 3204 3200\nf 3102 3151 3211 3213\nf 3106 3111 3203 3209\nf 3105 3098 3219 3215\nf 3087 3090 3233 3232\nf 3369 3042 3236 3371\nf 3281 3092 3226 3279\nf 3280 3290 3288 3282\nf 3368 3370 3274 3272\nf 3298 3039 3234 3363\nf 3094 3090 3230 3225\nf 3240 3034 3242 3243\nf 3038 3376 3380\nf 3307 3305 3050 3246\nf 3254 3255 3309 3340\nf 3258 3259 3310 3303\nf 3264 3263 3096 3089\nf 3285 3286 3287 3284\nf 3287 3283 3282 3284\nf 3292 2876 2877 3293\nf 3320 3321 3322 3319\nf 3378 3379 3380 3377\nf 3401 3402 3400\nf 3301 3305 3306 3302\nf 3315 3313 3312 3314\nf 3328 3335 3336 3329\nf 3341 3317 3316 3342\nf 3349 3351 3352 3350\nf 3357 3324 3323 3358\nf 3365 3367 3368 3366\nf 3376 3373 3374 3375\nf 3381 3383 3384 3382\nf 3396 3394 3393 3395\nf 3136 3172 3165\nf 3269 3266 3265 3268\nf 2843 2717 2845 2844\nf 2852 2850 2851 2853\ng hair\nusemtl brnhair\nf 3360 3359 3150 3007\nf 3067 3043 3251\nf 3058 3068 3069 3057\nf 2563 2562 3020 3018\nf 3332 3331 3398 3397 3016 3017\nf 2826 2827 2618 2620\nf 2605 2620 2618 2606\nf 2560 2559 2563 2564\nf 2977 2979 2559 2560\nf 2558 2557 2983 2984 2915 2916\nf 2559 2561 2562 2563\nf 2606 2618 2617 2607\nf 2829 2592 2616\nf 2548 2723 2943 2944\nf 3395 3020 3016 3397\nf 3067 3048 3043\nf 3068 3067 3251 3250\nf 3071 3069 3249 3248\nf 3057 3069 3071 3056\nf 2564 2563 3018 3019\nf 3019 3018 3393 3391\nf 2827 2828 2617 2618\nf 2558 2916 2917 2723 2548\nf 2597 2607 2617 2616\nf 2981 2561 2559 2979\nf 2544 2548 2944 2945\nf 2983 2557 2561 2981\nf 2592 2597 2616\nf 2828 2829 2616 2617\nf 3361 3360 3007 3003\nf 3393 3018 3020 3395\nf 3067 3068 3058 3048\nf 3007 3150 3333 3332 3017\nf 3069 3068 3250 3249\ng irisr\nusemtl deepgreen\nf 3473 3472 3413 3414\nf 3469 3468 3409 3410\nf 3465 3476 3405 3406\nf 3466 3465 3406 3407\nf 3470 3469 3410 3411\nf 3474 3473 3414 3415\nf 3472 3471 3412 3413\nf 3468 3467 3408 3409\nf 3476 3475 3404 3405\nf 3467 3466 3407 3408\nf 3471 3470 3411 3412\nf 3404 3475 3474 3415\ng eyewhiter\nusemtl white\nf 3464 3463 3462\nf 3464 3459 3458\nf 3464 3455 3454\nf 3463 3451 3450 3462\nf 3459 3447 3446 3458\nf 3455 3443 3442 3454\nf 3451 3439 3438 3450\nf 3447 3435 3434 3446\nf 3443 3431 3430 3442\nf 3439 3427 3426 3438\nf 3435 3423 3422 3434\nf 3431 3419 3418 3430\nf 3427 3415 3414 3426\nf 3423 3411 3410 3422\nf 3419 3407 3406 3418\nf 3418 3406 3405 3417\nf 3422 3410 3409 3421\nf 3426 3414 3413 3425\nf 3430 3418 3417 3429\nf 3434 3422 3421 3433\nf 3438 3426 3425 3437\nf 3442 3430 3429 3441\nf 3446 3434 3433 3445\nf 3450 3438 3437 3449\nf 3454 3442 3441 3453\nf 3458 3446 3445 3457\nf 3462 3450 3449 3461\nf 3464 3454 3453\nf 3464 3458 3457\nf 3464 3462 3461\nf 3464 3452 3463\nf 3464 3460 3459\nf 3464 3456 3455\nf 3452 3440 3451 3463\nf 3460 3448 3447 3459\nf 3456 3444 3443 3455\nf 3440 3428 3439 3451\nf 3448 3436 3435 3447\nf 3444 3432 3431 3443\nf 3428 3416 3427 3439\nf 3436 3424 3423 3435\nf 3432 3420 3419 3431\nf 3416 3404 3415 3427\nf 3424 3412 3411 3423\nf 3420 3408 3407 3419\nf 3417 3405 3404 3416\nf 3421 3409 3408 3420\nf 3425 3413 3412 3424\nf 3429 3417 3416 3428\nf 3433 3421 3420 3432\nf 3437 3425 3424 3436\nf 3441 3429 3428 3440\nf 3445 3433 3432 3444\nf 3449 3437 3436 3448\nf 3453 3441 3440 3452\nf 3457 3445 3444 3456\nf 3461 3449 3448 3460\nf 3464 3453 3452\nf 3464 3457 3456\nf 3464 3461 3460\ng pupilr\nusemtl black\nf 3469 3470 3403\nf 3473 3474 3403\nf 3465 3466 3403\nf 3476 3465 3403\nf 3472 3473 3403\nf 3468 3469 3403\nf 3470 3471 3403\nf 3474 3475 3403\nf 3466 3467 3403\nf 3475 3476 3403\nf 3471 3472 3403\nf 3467 3468 3403\ng irisl\nusemtl deepgreen\nf 3489 3488 3547 3548\nf 3485 3484 3543 3544\nf 3481 3480 3539 3540\nf 3480 3479 3550 3539\nf 3484 3483 3542 3543\nf 3488 3487 3546 3547\nf 3489 3548 3549 3478\nf 3486 3485 3544 3545\nf 3482 3481 3540 3541\nf 3479 3478 3549 3550\nf 3483 3482 3541 3542\nf 3487 3486 3545 3546\ng eyewhitel\nusemtl white\nf 3535 3536 3538\nf 3531 3532 3538\nf 3527 3528 3538\nf 3535 3523 3524 3536\nf 3531 3519 3520 3532\nf 3527 3515 3516 3528\nf 3523 3511 3512 3524\nf 3519 3507 3508 3520\nf 3515 3503 3504 3516\nf 3511 3499 3500 3512\nf 3507 3495 3496 3508\nf 3503 3491 3492 3504\nf 3499 3487 3488 3500\nf 3495 3483 3484 3496\nf 3491 3479 3480 3492\nf 3492 3480 3481 3493\nf 3496 3484 3485 3497\nf 3500 3488 3489 3501\nf 3504 3492 3493 3505\nf 3508 3496 3497 3509\nf 3512 3500 3501 3513\nf 3516 3504 3505 3517\nf 3520 3508 3509 3521\nf 3524 3512 3513 3525\nf 3528 3516 3517 3529\nf 3532 3520 3521 3533\nf 3536 3524 3525 3537\nf 3528 3529 3538\nf 3532 3533 3538\nf 3536 3537 3538\nf 3534 3535 3538\nf 3530 3531 3538\nf 3526 3527 3538\nf 3534 3522 3523 3535\nf 3530 3518 3519 3531\nf 3526 3514 3515 3527\nf 3522 3510 3511 3523\nf 3518 3506 3507 3519\nf 3514 3502 3503 3515\nf 3510 3498 3499 3511\nf 3506 3494 3495 3507\nf 3502 3490 3491 3503\nf 3498 3486 3487 3499\nf 3494 3482 3483 3495\nf 3490 3478 3479 3491\nf 3493 3481 3482 3494\nf 3497 3485 3486 3498\nf 3501 3489 3478 3490\nf 3505 3493 3494 3506\nf 3509 3497 3498 3510\nf 3513 3501 3490 3502\nf 3517 3505 3506 3518\nf 3521 3509 3510 3522\nf 3525 3513 3502 3514\nf 3529 3517 3518 3530\nf 3533 3521 3522 3534\nf 3537 3525 3514 3526\nf 3529 3530 3538\nf 3533 3534 3538\nf 3537 3526 3538\ng pupill\nusemtl black\nf 3477 3543 3542\nf 3477 3547 3546\nf 3477 3539 3550\nf 3477 3540 3539\nf 3477 3548 3547\nf 3477 3544 3543\nf 3477 3542 3541\nf 3477 3546 3545\nf 3477 3550 3549\nf 3477 3541 3540\nf 3477 3549 3548\nf 3477 3545 3544\n# 3442 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/cessna.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv -11.291303 -3.380100 -7.662957\nv -11.233731 -4.422688 -6.142551\nv -11.235865 -4.604924 -5.866001\nv -11.262565 -4.842384 -5.414276\nv -11.291083 -5.000181 -5.052441\nv -11.309235 -5.040996 -4.875421\nv -11.317637 -5.057852 -4.781623\nv -11.332597 -4.951740 -4.720358\nv -11.341170 -4.877923 -4.781272\nv -11.359620 -4.743738 -4.904384\nv -11.388743 -4.507391 -5.220870\nv -11.416195 -4.233170 -5.651370\nv -11.418804 -4.083868 -5.946932\nv -11.368421 -3.287205 -7.609324\nv -11.389328 -3.297963 -7.615536\nv -11.446899 -4.093379 -5.952425\nv -11.444764 -4.241761 -5.656329\nv -11.418064 -4.514236 -5.224821\nv -11.389547 -4.748696 -4.907247\nv -11.371397 -4.881592 -4.783389\nv -11.362994 -4.954396 -4.721891\nv -11.348034 -5.060508 -4.783156\nv -11.339460 -5.044665 -4.877539\nv -11.321012 -5.005138 -5.055304\nv -11.291885 -4.849229 -5.418229\nv -11.264436 -4.613515 -5.870960\nv -11.261827 -4.432200 -6.148043\nv -11.312210 -3.390858 -7.669169\nv -11.356193 -5.018537 -4.697665\nv -11.355005 -5.047538 -4.714411\nv -11.324437 -5.046762 -4.713963\nv -11.325626 -5.017760 -4.697219\nv -11.357211 -3.284271 -7.607631\nv -11.280399 -3.308201 -7.621447\nv -11.283389 -3.373195 -7.658970\nv -11.397240 -3.304868 -7.619522\nv -11.400230 -3.369862 -7.657046\nv -11.323419 -3.393791 -7.670863\nv -11.268784 -3.341072 -7.640425\nv -11.366652 -3.391431 -7.669500\nv -11.411845 -3.336991 -7.638068\nv -11.313978 -3.286632 -7.608994\nv -11.291303 -3.078313 -7.772318\nv -11.233731 -1.240308 -7.629613\nv -11.235865 -0.909691 -7.610068\nv -11.262565 -0.399756 -7.630284\nv -11.291083 -0.007499 -7.674544\nv -11.309235 0.166213 -7.727707\nv -11.317637 0.255872 -7.760009\nv -11.332597 0.255872 -7.882538\nv -11.341170 0.166213 -7.916008\nv -11.359620 -0.007499 -7.970659\nv -11.388743 -0.399757 -8.017099\nv -11.416195 -0.909692 -8.039331\nv -11.418804 -1.240307 -8.020849\nv -11.368421 -3.078313 -7.879584\nv -11.389328 -3.078313 -7.867161\nv -11.446899 -1.240308 -8.009867\nv -11.444764 -0.909691 -8.029412\nv -11.418064 -0.399756 -8.009195\nv -11.389547 -0.007500 -7.964934\nv -11.371397 0.166213 -7.911771\nv -11.362994 0.255873 -7.879471\nv -11.348034 0.255872 -7.756942\nv -11.339460 0.166213 -7.723472\nv -11.321012 -0.007499 -7.668820\nv -11.291885 -0.399756 -7.622379\nv -11.264436 -0.909691 -7.600148\nv -11.261827 -1.240308 -7.618630\nv -11.312210 -3.078313 -7.759895\nv -11.356193 0.308924 -7.836035\nv -11.355005 0.308922 -7.802548\nv -11.324437 0.308923 -7.803444\nv -11.325626 0.308922 -7.836932\nv -11.357211 -3.078313 -7.882971\nv -11.280399 -3.078313 -7.855339\nv -11.283389 -3.078313 -7.780292\nv -11.397240 -3.078313 -7.859188\nv -11.400230 -3.078313 -7.784140\nv -11.323419 -3.078313 -7.756508\nv -11.268784 -3.078313 -7.817383\nv -11.366652 -3.078313 -7.759235\nv -11.411845 -3.078313 -7.822096\nv -11.313978 -3.078313 -7.880245\nv -11.291303 -3.323916 -7.978993\nv -11.233731 -4.119332 -9.642104\nv -11.235865 -4.267713 -9.938200\nv -11.262565 -4.540189 -10.369709\nv -11.291083 -4.774648 -10.687283\nv -11.309235 -4.907545 -10.811140\nv -11.317637 -4.980348 -10.872637\nv -11.332597 -5.086461 -10.811373\nv -11.341170 -5.070617 -10.716990\nv -11.359620 -5.031091 -10.539226\nv -11.388743 -4.875180 -10.176299\nv -11.416195 -4.639466 -9.723567\nv -11.418804 -4.458153 -9.446486\nv -11.368421 -3.416811 -7.925360\nv -11.389328 -3.406052 -7.931572\nv -11.446899 -4.448640 -9.451978\nv -11.444764 -4.630876 -9.728527\nv -11.418064 -4.868336 -10.180253\nv -11.389547 -5.026133 -10.542088\nv -11.371397 -5.066948 -10.719108\nv -11.362994 -5.083805 -10.812906\nv -11.348034 -4.977692 -10.874170\nv -11.339460 -4.903876 -10.813258\nv -11.321012 -4.769691 -10.690145\nv -11.291885 -4.533343 -10.373660\nv -11.264436 -4.259123 -9.943160\nv -11.261827 -4.109820 -9.647596\nv -11.312210 -3.313157 -7.985204\nv -11.356193 -5.072715 -10.880568\nv -11.355005 -5.043713 -10.897310\nv -11.324437 -5.044489 -10.896863\nv -11.325626 -5.073490 -10.880118\nv -11.357211 -3.419744 -7.923667\nv -11.280399 -3.395814 -7.937481\nv -11.283389 -3.330821 -7.975006\nv -11.397240 -3.399147 -7.935558\nv -11.400230 -3.334153 -7.973081\nv -11.323419 -3.310224 -7.986898\nv -11.268784 -3.362943 -7.956460\nv -11.366652 -3.312584 -7.985535\nv -11.411845 -3.367024 -7.954104\nv -11.313978 -3.417383 -7.925029\nv -11.291303 -3.380100 7.663447\nv -11.233731 -4.422688 6.143041\nv -11.235865 -4.604924 5.866491\nv -11.262565 -4.842384 5.414766\nv -11.291083 -5.000181 5.052931\nv -11.309235 -5.040996 4.875911\nv -11.317637 -5.057852 4.782113\nv -11.332597 -4.951740 4.720848\nv -11.341170 -4.877923 4.781762\nv -11.359620 -4.743738 4.904874\nv -11.388743 -4.507391 5.221360\nv -11.416195 -4.233170 5.651860\nv -11.418804 -4.083868 5.947422\nv -11.368421 -3.287205 7.609814\nv -11.389328 -3.297963 7.616026\nv -11.446899 -4.093379 5.952915\nv -11.444764 -4.241761 5.656819\nv -11.418064 -4.514236 5.225311\nv -11.389547 -4.748696 4.907737\nv -11.371397 -4.881592 4.783879\nv -11.362994 -4.954396 4.722381\nv -11.348034 -5.060508 4.783646\nv -11.339460 -5.044665 4.878029\nv -11.321012 -5.005138 5.055794\nv -11.291885 -4.849229 5.418719\nv -11.264436 -4.613515 5.871450\nv -11.261827 -4.432200 6.148533\nv -11.312210 -3.390858 7.669659\nv -11.356193 -5.018537 4.698155\nv -11.355005 -5.047538 4.714901\nv -11.324437 -5.046762 4.714453\nv -11.325626 -5.017760 4.697709\nv -11.357211 -3.284271 7.608121\nv -11.280399 -3.308201 7.621937\nv -11.283389 -3.373195 7.659460\nv -11.397240 -3.304868 7.620012\nv -11.400230 -3.369862 7.657536\nv -11.323419 -3.393791 7.671353\nv -11.268784 -3.341072 7.640915\nv -11.366652 -3.391431 7.669990\nv -11.411845 -3.336991 7.638558\nv -11.313978 -3.286632 7.609484\nv -11.291303 -3.078313 7.772808\nv -11.233731 -1.240308 7.630103\nv -11.235865 -0.909691 7.610558\nv -11.262565 -0.399756 7.630774\nv -11.291083 -0.007499 7.675034\nv -11.309235 0.166213 7.728197\nv -11.317637 0.255872 7.760499\nv -11.332597 0.255872 7.883028\nv -11.341170 0.166213 7.916498\nv -11.359620 -0.007499 7.971149\nv -11.388743 -0.399757 8.017590\nv -11.416195 -0.909692 8.039822\nv -11.418804 -1.240307 8.021339\nv -11.368421 -3.078313 7.880074\nv -11.389328 -3.078313 7.867651\nv -11.446899 -1.240308 8.010357\nv -11.444764 -0.909691 8.029902\nv -11.418064 -0.399756 8.009686\nv -11.389547 -0.007500 7.965424\nv -11.371397 0.166213 7.912261\nv -11.362994 0.255873 7.879961\nv -11.348034 0.255872 7.757432\nv -11.339460 0.166213 7.723962\nv -11.321012 -0.007499 7.669310\nv -11.291885 -0.399756 7.622869\nv -11.264436 -0.909691 7.600638\nv -11.261827 -1.240308 7.619120\nv -11.312210 -3.078313 7.760385\nv -11.356193 0.308924 7.836525\nv -11.355005 0.308922 7.803038\nv -11.324437 0.308923 7.803934\nv -11.325626 0.308922 7.837422\nv -11.357211 -3.078313 7.883461\nv -11.280399 -3.078313 7.855829\nv -11.283389 -3.078313 7.780782\nv -11.397240 -3.078313 7.859678\nv -11.400230 -3.078313 7.784630\nv -11.323419 -3.078313 7.756998\nv -11.268784 -3.078313 7.817873\nv -11.366652 -3.078313 7.759725\nv -11.411845 -3.078313 7.822586\nv -11.313978 -3.078313 7.880735\nv -11.291303 -3.323916 7.979483\nv -11.233731 -4.119332 9.642594\nv -11.235865 -4.267713 9.938690\nv -11.262565 -4.540189 10.370199\nv -11.291083 -4.774648 10.687773\nv -11.309235 -4.907545 10.811630\nv -11.317637 -4.980348 10.873127\nv -11.332597 -5.086461 10.811863\nv -11.341170 -5.070617 10.717480\nv -11.359620 -5.031091 10.539716\nv -11.388743 -4.875180 10.176789\nv -11.416195 -4.639466 9.724057\nv -11.418804 -4.458153 9.446977\nv -11.368421 -3.416811 7.925850\nv -11.389328 -3.406052 7.932062\nv -11.446899 -4.448640 9.452468\nv -11.444764 -4.630876 9.729017\nv -11.418064 -4.868336 10.180743\nv -11.389547 -5.026133 10.542578\nv -11.371397 -5.066948 10.719598\nv -11.362994 -5.083805 10.813396\nv -11.348034 -4.977692 10.874660\nv -11.339460 -4.903876 10.813748\nv -11.321012 -4.769691 10.690636\nv -11.291885 -4.533343 10.374150\nv -11.264436 -4.259123 9.943650\nv -11.261827 -4.109820 9.648087\nv -11.312210 -3.313157 7.985694\nv -11.356193 -5.072715 10.881058\nv -11.355005 -5.043713 10.897800\nv -11.324437 -5.044489 10.897353\nv -11.325626 -5.073490 10.880609\nv -11.357211 -3.419744 7.924157\nv -11.280399 -3.395814 7.937971\nv -11.283389 -3.330821 7.975496\nv -11.397240 -3.399147 7.936048\nv -11.400230 -3.334153 7.973571\nv -11.323419 -3.310224 7.987388\nv -11.268784 -3.362943 7.956950\nv -11.366652 -3.312584 7.986025\nv -11.411845 -3.367024 7.954594\nv -11.313978 -3.417383 7.925519\nv -14.798487 -3.381376 2.062627\nv -14.798487 -2.831564 1.905587\nv -13.355517 -1.998298 0.932633\nv -13.355514 -1.877456 -0.004247\nv -14.798487 -3.964149 1.905587\nv -13.355517 -4.072501 2.163282\nv -15.590928 -2.862662 1.746123\nv -15.590928 -3.381376 1.890030\nv -15.590928 -3.919872 1.746123\nv -15.590928 -4.376385 1.336311\nv -15.590928 -4.681418 0.722983\nv -15.590924 -4.788533 -0.004814\nv -15.590924 -2.025917 -0.005694\nv -16.454647 -2.913885 1.535584\nv -16.454647 -3.381376 1.662083\nv -16.454647 -3.848866 1.535584\nv -16.454647 -4.245184 1.175342\nv -16.454647 -4.509995 0.636203\nv -16.454643 -4.602986 -0.005360\nv -17.521641 -2.421594 -0.006655\nv -17.521646 -2.494649 0.493705\nv -17.521646 -3.014081 1.191562\nv -17.521646 -3.381376 1.289717\nv -17.521646 -3.748669 1.191562\nv -17.521646 -4.060045 0.912040\nv -17.521646 -4.268101 0.493705\nv -17.521643 -4.341162 -0.006044\nv -18.580723 -2.704587 -0.007162\nv -18.580729 -2.756102 0.325807\nv -18.580729 -3.122377 0.786221\nv -18.580729 -3.381376 0.850980\nv -18.580729 -3.640372 0.786221\nv -18.580729 -3.859939 0.601805\nv -18.580729 -4.006649 0.325807\nv -18.580723 -4.058169 -0.006730\nv -19.563246 -3.570913 0.078754\nv -19.563242 -3.586532 -0.007434\nv -19.563242 -3.176223 -0.007565\nv -19.563246 -3.191837 0.078754\nv -19.563246 -3.302865 0.189783\nv -19.563246 -3.381376 0.205399\nv -19.563246 -3.459885 0.189783\nv -19.563246 -3.526441 0.145311\nv -10.202917 -4.098300 2.322444\nv -7.398799 -3.464981 2.472185\nv -7.398799 -2.831662 2.491490\nv -7.134799 -0.230840 -0.001268\nv -7.398799 -5.119924 0.000140\nv -7.398799 -4.993949 0.928765\nv -7.398799 -4.098300 2.342690\nv -5.935799 -3.464981 2.541785\nv -5.935799 -2.831662 2.563490\nv -5.935799 -2.084644 2.511908\nv -5.935799 -5.119923 0.000964\nv -4.520319 -5.119923 0.001761\nv -4.520318 -4.993949 0.928765\nv -4.520318 -3.464981 2.546585\nv -4.520318 -2.831662 2.561090\nv -4.520318 -2.063244 2.519683\nv -5.935799 -1.502198 2.389539\nv -7.398795 -1.502201 2.190341\nv -4.520318 -0.229735 0.825886\nv -5.699715 -0.243790 0.808998\nv -7.245679 -0.285168 0.764628\nv -7.316247 -0.289447 0.746967\nv -7.685028 -0.300965 0.479737\nv -7.755297 -0.319157 0.230873\nv -7.759315 -0.329901 -0.001588\nv -13.355517 -2.261923 1.780015\nv -10.202073 -2.220993 2.129972\nv -14.798487 -2.322961 1.488506\nv -14.798487 -2.453497 1.656930\nv -15.590928 -2.375589 1.292501\nv -15.590928 -2.507505 1.468078\nv -16.454647 -2.465032 1.068385\nv -16.454647 -2.598600 1.248999\nv -17.521646 -2.649695 0.805453\nv -17.521646 -2.784083 0.985093\nv -18.580729 -2.853913 0.509815\nv -18.580729 -2.975992 0.663271\nv -19.563246 -3.221487 0.123128\nv -19.563246 -3.258492 0.160134\nv -8.293849 -0.567902 0.398106\nv -8.257586 -0.549550 0.386225\nv -8.291709 -0.541209 -0.001776\nv -8.330144 -0.560327 -0.001792\nv -8.146480 -0.558919 0.839533\nv -8.113662 -0.539585 0.822445\nv -7.640476 -0.541506 1.290166\nv -7.458028 -0.523570 1.392414\nv -8.764829 -1.994284 2.023809\nv -9.655722 -1.832852 1.397308\nv -9.678568 -1.852530 1.419422\nv -10.176074 -1.771846 0.868290\nv -10.214072 -1.784235 0.872908\nv -10.191929 -1.790233 0.904013\nv -10.343266 -1.746313 -0.002706\nv -10.383420 -1.756656 -0.002726\nv -2.553078 -3.451479 2.546585\nv -2.553078 -2.828609 2.561090\nv -2.553078 -2.076565 2.543926\nv -2.553078 -0.269608 0.825886\nv -2.553079 -0.214042 0.001306\nv -2.553079 -5.079117 0.002856\nv -2.553078 -4.955222 0.928765\nv -2.553078 -4.074350 2.448290\nv -7.644913 -0.558836 1.327630\nv -7.655952 -0.554255 1.308227\nv -7.677263 -0.560244 1.300448\nv -8.411556 -1.456950 1.915636\nv -8.375423 -1.463147 1.936424\nv -8.763757 -1.970231 1.991719\nv -8.752401 -1.980053 2.010220\nv -8.724895 -1.974064 2.010267\nv -5.698438 -0.494595 1.553647\nv -7.398799 -2.138450 2.406684\nv -7.522644 -0.651731 1.498699\nv -7.557768 -0.641089 1.476339\nv -8.114378 -1.469342 2.001080\nv -8.075450 -1.479668 2.016990\nv -8.219734 -1.837326 2.117169\nv -8.262093 -1.834575 2.104541\nv -8.220016 -1.920460 2.150181\nv -8.262428 -1.935742 2.144692\nv -8.149944 -2.005010 2.204324\nv -8.174712 -2.040413 2.218444\nv -7.511488 -2.011372 2.380631\nv -7.398799 -2.017388 2.391873\nv -7.252597 -2.006241 2.401683\nv -7.398799 -1.978979 2.381985\nv -5.907800 -1.904824 2.481653\nv -5.945597 -1.868420 2.471296\nv -5.834778 -1.502198 2.388854\nv -5.878777 -1.502198 2.389153\nv -5.746347 -0.635398 1.714930\nv -5.698072 -0.613087 1.684516\nv -5.935799 -0.595765 1.683361\nv -5.935799 -0.620583 1.714730\nv -7.114847 -0.544479 1.453306\nv -7.339588 -0.541164 1.422163\nv -7.284212 -0.562498 1.452223\nv -7.368249 -0.539551 1.417212\nv -7.365273 -0.553796 1.435402\nv -7.448153 -0.591120 1.456931\nv -7.468851 -0.576500 1.436035\nv -1.808160 -4.948583 0.928765\nv -1.808160 -3.451081 2.546585\nv -1.808160 -2.830795 2.561090\nv -1.808160 -0.282415 0.825886\nv -1.808161 -5.071964 0.003273\nv -0.157718 -0.347626 0.825546\nv -0.157720 -5.038606 0.004192\nv -0.157718 -4.917765 0.928765\nv -0.157718 -3.451081 2.532618\nv -0.157718 -2.843561 2.544365\nv 0.431442 -0.347626 0.808136\nv 0.431440 -5.038606 0.004524\nv 0.431442 -4.917765 0.910126\nv 0.431442 -4.573632 2.219462\nv 0.431442 -4.058601 2.387306\nv 0.431442 -3.451081 2.477952\nv 0.431442 -2.843561 2.489386\nv 0.431442 -2.110053 2.472870\nv 2.060763 -3.451081 2.326947\nv 2.060763 -2.856064 2.337511\nv 2.060763 -2.137650 2.322001\nv 2.060763 -0.411494 0.760006\nv 2.060761 -5.005936 0.005431\nv 2.060763 -4.887581 0.855873\nv 2.060763 -4.550530 2.084952\nv 2.060763 -4.046099 2.242170\nv 4.301325 -4.869770 0.836259\nv 4.301325 -4.536898 2.036328\nv 4.301325 -4.038721 2.189708\nv 4.301325 -3.451081 2.272364\nv 4.301325 -2.863441 2.282609\nv 4.301325 -2.153937 2.267450\nv 4.301325 -0.449183 0.742584\nv 4.301324 -4.986657 0.005756\nv 5.352484 -0.535315 0.711438\nv 5.352482 -4.942598 0.006334\nv 5.352484 -4.829064 0.801238\nv 5.352484 -4.505744 1.949518\nv 5.352484 -4.021860 2.096056\nv 5.352484 -3.451081 2.174927\nv 5.352484 -2.880302 2.184595\nv 5.352484 -2.191156 2.170040\nv 5.936365 -1.708928 1.981850\nv 5.936365 -0.585722 0.694080\nv 5.936365 -4.902303 0.006650\nv 5.936365 -4.791105 0.781755\nv 5.936365 -4.474439 1.901233\nv 5.936365 -4.000513 2.043973\nv 5.936365 -3.441481 2.120742\nv 5.936365 -2.882450 2.130081\nv 5.936365 -2.207486 2.115844\nv 7.383525 -0.724757 0.651009\nv 7.383523 -4.696822 0.007400\nv 7.383525 -4.594499 0.732823\nv 7.383525 -4.303107 1.780213\nv 10.639086 -4.049765 0.620349\nv 10.639086 -3.822722 1.502499\nv 10.639086 -1.101680 0.552487\nv 10.639084 -4.129491 0.009052\nv 13.728323 -1.494673 0.454923\nv 13.728325 -3.570794 0.010614\nv 13.728323 -3.517312 0.509066\nv 13.728323 -3.365006 1.227497\nv 13.728323 -3.137066 1.320229\nv 13.728323 -2.868191 1.370772\nv 12.330127 -2.311794 1.508694\nv 13.728323 -2.034893 1.283917\nv 13.728323 -1.613951 0.837918\nv 17.934284 -2.341334 0.812849\nv 17.934284 -2.191887 0.533062\nv 17.934284 -2.149540 0.293120\nv 17.934284 -2.886618 0.012764\nv 17.934284 -2.867632 0.327126\nv 17.934284 -2.813559 0.777321\nv 17.934284 -2.732636 0.835625\nv 17.934284 -2.637177 0.867449\nv 17.934284 -2.426465 0.866733\nv 18.932642 -2.574771 0.589302\nv 18.932642 -2.541716 0.592561\nv 18.932642 -2.501806 0.588704\nv 18.932642 -2.472327 0.551858\nv 18.932642 -2.420577 0.363065\nv 18.932642 -2.405914 0.202680\nv 18.932642 -2.661148 0.013255\nv 18.932642 -2.654572 0.225796\nv 18.932642 -2.635848 0.527230\nv 18.932642 -2.607826 0.567216\nv -4.498320 -0.522622 1.556031\nv -4.520318 -0.503363 1.521084\nv -4.542313 -0.510388 1.539955\nv -2.575078 -0.557124 1.555994\nv -2.531080 -0.546270 1.539694\nv -2.553078 -0.538705 1.521043\nv -4.498318 -1.484070 2.371955\nv -4.542317 -1.502198 2.380088\nv -4.520318 -1.521605 2.384773\nv -2.575078 -1.502511 2.371993\nv -2.553078 -1.540260 2.385602\nv -2.531079 -1.521302 2.379939\nv -1.786169 -0.569782 1.556093\nv -1.808160 -0.550392 1.521032\nv -1.830157 -0.557242 1.539694\nv -1.786164 -1.510904 2.371717\nv -1.830159 -1.528466 2.379939\nv -1.808160 -1.547871 2.385625\nv -0.179716 -1.549413 2.359012\nv -0.157718 -1.587433 2.372573\nv -0.135803 -1.568253 2.364989\nv -0.179709 -0.627789 1.553268\nv -0.135732 -0.617135 1.535597\nv -0.157718 -0.610048 1.518120\nv 0.453368 -0.629707 1.518900\nv 0.431442 -0.609904 1.485289\nv 0.409454 -0.617135 1.505182\nv 2.038837 -0.686306 1.430602\nv 2.082679 -0.676737 1.411878\nv 2.060763 -0.667956 1.394542\nv 0.453359 -1.550313 2.306234\nv 0.409526 -1.568253 2.317730\nv 0.431442 -1.587462 2.321398\nv 2.038846 -1.588067 2.168831\nv 2.060763 -1.626274 2.180093\nv 2.082643 -1.607851 2.172850\nv 5.352484 -0.780858 1.302983\nv 5.352484 -0.800606 1.337394\nv 5.903344 -0.843235 1.306512\nv 5.936365 -0.864717 1.329414\nv 5.958236 -0.835522 1.287486\nv 5.936365 -0.826020 1.270249\nv 4.323196 -0.723569 1.394953\nv 4.301325 -0.702301 1.361703\nv 4.279412 -0.708592 1.381444\nv 4.323206 -1.612394 2.114367\nv 4.279446 -1.629018 2.125614\nv 4.301325 -1.649163 2.129011\nv 5.352484 -1.701438 2.037794\nv 5.376753 -1.683237 2.030470\nv 5.339001 -1.662903 2.026263\nv 0.136861 -0.347626 0.816841\nv -2.180619 -0.276011 0.825886\nv -4.579856 -4.593230 6.428693\nv -5.948994 -4.593230 6.428693\nv -6.617467 -4.509952 6.429058\nv -7.086757 -4.426674 6.429425\nv -7.356823 -4.343396 6.429791\nv -7.185760 -4.218762 6.429884\nv -6.713389 -4.094128 6.429978\nv -5.939729 -3.969494 6.430071\nv -4.570288 -3.969494 6.430114\nv -2.671683 -4.079836 6.430058\nv -1.934297 -4.150920 6.430019\nv -0.353089 -4.398919 6.429945\nv -0.361426 -4.540174 6.428693\nv -1.956635 -4.561637 6.428693\nv -2.677258 -4.566260 6.428693\nv -0.695374 -4.288306 10.258076\nv -2.206396 -4.309120 10.258076\nv -2.889112 -4.313816 10.258076\nv -4.691523 -4.340826 10.258076\nv -5.988598 -4.340789 10.258076\nv -6.624157 -4.257178 10.258076\nv -7.071047 -4.173569 10.258076\nv -7.329241 -4.089961 10.258076\nv -7.167758 -3.964773 10.258076\nv -6.720844 -3.839620 10.258076\nv -5.988512 -3.714496 10.258076\nv -4.691415 -3.714500 10.258076\nv -2.892432 -3.825329 10.258076\nv -2.546692 -3.861720 10.258076\nv -2.193571 -3.896659 10.258076\nv -0.695300 -4.145742 10.258076\nv -3.751528 -3.284422 19.111404\nv -3.187479 -3.639555 13.298750\nv -3.262358 -3.335729 19.111404\nv -2.560642 -3.704008 13.298750\nv -2.212817 -3.542248 19.111404\nv -1.216488 -3.938476 13.298750\nv -2.212825 -3.616951 19.111404\nv -1.216552 -4.057729 13.298750\nv -3.271298 -3.632256 19.111404\nv -2.572134 -4.076654 13.298750\nv -3.749216 -3.635607 19.111404\nv -3.184511 -4.080887 13.298750\nv -3.763177 -3.374487 19.115967\nv -3.199128 -3.729620 13.303310\nv -2.888988 -3.762496 13.303310\nv -3.521071 -3.400639 19.115967\nv -2.844355 -3.675720 13.298750\nv -2.874099 -3.674286 13.268952\nv -2.910116 -3.668956 13.298750\nv -2.881188 -3.702188 13.300258\nv -3.513270 -3.340331 19.112915\nv -3.542190 -3.307034 19.111404\nv -3.512661 -3.308719 19.141205\nv -3.476445 -3.313931 19.111404\nv -1.784267 -4.312072 2.361626\nv -1.795966 -4.356276 2.396202\nv -0.160072 -4.668743 2.318286\nv -0.157718 -4.681056 2.218976\nv -0.103839 -4.663034 2.263702\nv -0.157718 -4.622764 2.281945\nv -2.179510 -4.261569 2.382090\nv -2.555724 -4.209258 2.403878\nv -2.558075 -4.254558 2.438181\nv -4.006307 -4.092046 2.448290\nv -4.519951 -4.048891 2.455959\nv -4.520551 -4.096684 2.498261\nv -5.935667 -4.049463 2.413416\nv -6.152637 -4.098300 2.393792\nv -5.935708 -4.096702 2.452664\nv -6.753931 -4.233215 2.319253\nv -6.734722 -4.275051 2.352519\nv -7.257493 -4.417991 2.215880\nv -7.238678 -4.462557 2.251376\nv -7.398799 -4.561531 2.135309\nv -7.453540 -4.635202 2.097469\nv -7.398799 -4.662745 2.012229\nv -7.398314 -4.631839 2.152212\nv -7.159760 -4.764200 1.680339\nv -7.076895 -4.762356 1.745122\nv -6.663244 -4.885953 1.282052\nv -6.596850 -4.876521 1.360432\nv -6.036855 -4.993949 0.928765\nv -5.935799 -5.000671 0.879219\nv -5.880798 -4.993949 0.928765\nv -5.935939 -4.989656 0.987680\nv -2.683445 -4.162676 6.433543\nv -2.569837 -4.337398 2.441667\nv -2.192559 -4.389223 2.418949\nv -2.318410 -4.198893 6.433522\nv -2.126213 -4.313460 2.412731\nv -2.180369 -4.291446 2.404339\nv -2.235066 -4.298928 2.418730\nv -2.184719 -4.333993 2.416625\nv -2.310568 -4.143663 6.431199\nv -2.361324 -4.110628 6.430039\nv -2.309771 -4.112743 6.479845\nv -2.251908 -4.121178 6.430034\nv -4.051805 -3.148437 22.152081\nv -4.041749 -3.101686 22.102367\nv -5.122926 -3.079682 22.152081\nv -5.119182 -3.032554 22.102192\nv -3.846470 -3.170945 22.152081\nv -3.834668 -3.124376 22.102417\nv -3.638881 -3.192423 22.152081\nv -3.623440 -3.146221 22.102478\nv -2.755227 -3.350258 22.152081\nv -2.725555 -3.338342 22.102791\nv -2.755227 -3.367392 22.152081\nv -2.725559 -3.390110 22.102814\nv -3.637700 -3.349792 22.152081\nv -3.631076 -3.403578 22.102520\nv -4.045304 -3.352682 22.152081\nv -4.039792 -3.406483 22.102421\nv -5.121457 -3.369535 22.152081\nv -5.119187 -3.423394 22.102257\nv -5.891337 -3.369535 22.152081\nv -5.895853 -3.423396 22.102234\nv -6.265070 -3.318274 22.152081\nv -6.276415 -3.371212 22.102238\nv -6.526355 -3.267304 22.152081\nv -6.543997 -3.319028 22.102253\nv -6.608456 -3.248452 22.152081\nv -6.698588 -3.266844 22.102261\nv -6.576324 -3.222480 22.152081\nv -6.601938 -3.188748 22.102234\nv -6.318986 -3.156084 22.152081\nv -6.334359 -3.110652 22.102196\nv -5.890124 -3.079682 22.152081\nv -5.895853 -3.032556 22.102165\nv -6.733096 -4.261273 2.646448\nv -7.233682 -4.439531 2.646042\nv -7.392916 -4.594308 2.647541\nv -7.078817 -4.696913 2.658353\nv -4.888976 -3.487279 14.204475\nv -4.779165 -3.490516 14.207939\nv -4.832203 -3.490058 14.156220\nv -4.921752 -3.263200 18.155983\nv -5.031565 -3.259963 18.152519\nv -4.978396 -3.256997 18.204048\nv -4.924816 -3.344222 18.160553\nv -5.034627 -3.340985 18.157089\nv -4.892038 -3.568301 14.209044\nv -4.782226 -3.571537 14.212507\nv 15.823515 -2.350294 1.119130\nv 13.023331 -2.454372 1.428761\nv 13.724326 -2.362106 1.341982\nv 12.530944 -2.583685 1.491338\nv 12.330127 -2.586440 1.515602\nv 12.341058 -2.636135 1.515773\nv 12.620583 -2.681177 1.480600\nv 17.934284 -2.573535 0.870433\nv 17.986851 -2.541719 0.857215\nv 17.934284 -2.503305 0.870194\nv 17.455418 -2.479110 0.927143\nv 16.979753 -2.554169 6.949585\nv 17.672846 -2.568230 2.535411\nv 16.631844 -2.485570 6.961778\nv 17.229862 -2.480879 2.579929\nv 16.979753 -2.503147 6.949532\nv 17.672846 -2.503261 2.535223\nv 16.035742 -2.386620 2.699138\nv 15.720161 -2.361717 2.731257\nv 15.446341 -2.391983 7.002436\nv 15.761498 -2.416868 6.976952\nv 15.340427 -2.461226 8.614563\nv 15.347788 -2.402876 8.539692\nv 13.980525 -2.475433 8.614563\nv 16.404518 -2.509988 8.614563\nv 16.416451 -2.487260 8.540133\nv 16.700876 -2.518102 8.614563\nv 16.729973 -2.503105 8.540315\nv 16.700876 -2.533359 8.614563\nv 16.729973 -2.549101 8.540316\nv 13.269864 -2.591318 8.614563\nv 13.249383 -2.619652 8.539810\nv 13.250392 -2.570139 8.614563\nv 13.190639 -2.555774 8.539833\nv 13.529675 -2.518476 8.614563\nv 13.513301 -2.471045 8.539710\nv 14.163474 -2.398977 7.010291\nv 13.920511 -2.400399 7.029059\nv 13.890937 -2.421348 8.539620\nv 13.975257 -2.432207 8.564587\nv 14.216197 -2.409256 8.538622\nv 15.534164 -2.465970 6.979989\nv 15.439894 -2.458521 7.001622\nv 15.713715 -2.428255 2.730445\nv 15.808412 -2.435721 2.702177\nv 13.997207 -2.458594 8.541772\nv 13.892834 -2.488122 8.538920\nv 13.922408 -2.467173 7.028359\nv 13.944485 -2.448315 7.013441\nv 13.954028 -2.452776 -6.992678\nv 13.931973 -2.471643 -7.007609\nv 13.904457 -2.493555 -8.518188\nv 14.008835 -2.464029 -8.520941\nv 15.812078 -2.437435 -2.679327\nv 15.717422 -2.429987 -2.707706\nv 15.449419 -2.462974 -6.979169\nv 15.543660 -2.470409 -6.957424\nv 14.227820 -2.414688 -8.517576\nv 13.986914 -2.437657 -8.543797\nv 13.902560 -2.426781 -8.518933\nv 13.930077 -2.404870 -7.008353\nv 14.173014 -2.403435 -6.989313\nv 13.524924 -2.476478 -8.519416\nv 13.541401 -2.523956 -8.594221\nv 13.202264 -2.561207 -8.519850\nv 13.262118 -2.575620 -8.594502\nv 13.261006 -2.625086 -8.519719\nv 13.281590 -2.596799 -8.594466\nv 16.741596 -2.554533 -8.516350\nv 16.712599 -2.538839 -8.590639\nv 16.741596 -2.508538 -8.516377\nv 16.712599 -2.523582 -8.590650\nv 16.428072 -2.492692 -8.516560\nv 16.416243 -2.515468 -8.590988\nv 13.992251 -2.480913 -8.593740\nv 15.359409 -2.408309 -8.517375\nv 15.352152 -2.466706 -8.592217\nv 15.770989 -2.421305 -6.954163\nv 15.455866 -2.396437 -6.980017\nv 15.723866 -2.363450 -2.708553\nv 16.039406 -2.388332 -2.676063\nv 17.676285 -2.504867 -2.510231\nv 16.989206 -2.507567 -6.925315\nv 17.233360 -2.482515 -2.555449\nv 16.641315 -2.489997 -6.937965\nv 17.676285 -2.569837 -2.510377\nv 16.989206 -2.558588 -6.925336\nv 17.456663 -2.479692 -0.902413\nv 17.935453 -2.503851 -0.844908\nv 17.988001 -2.542257 -0.831846\nv 17.935453 -2.574081 -0.845103\nv 12.622589 -2.682114 -1.461185\nv 12.343109 -2.637094 -1.496702\nv 12.332180 -2.587400 -1.496575\nv 12.532967 -2.584629 -1.472086\nv 13.726139 -2.362955 -1.321527\nv 13.025266 -2.455275 -1.409038\nv 15.825026 -2.350999 -1.096319\nv -4.762860 -3.580590 -14.210253\nv -4.872677 -3.577352 -14.206915\nv -5.009885 -3.352551 -18.155262\nv -4.900068 -3.355790 -18.158600\nv -4.953589 -3.268593 -18.202209\nv -5.006827 -3.271526 -18.150742\nv -4.897011 -3.274765 -18.154079\nv -4.812915 -3.499074 -14.154075\nv -4.759804 -3.499565 -14.205732\nv -4.869621 -3.496327 -14.202394\nv -7.075194 -4.698606 -2.657979\nv -7.389308 -4.595995 -2.647586\nv -7.230073 -4.441216 -2.646007\nv -6.729491 -4.262959 -2.645962\nv -5.865735 -3.046635 -22.101501\nv -5.859938 -3.093793 -22.151379\nv -6.304240 -3.124731 -22.101978\nv -6.288800 -3.170195 -22.151814\nv -6.571820 -3.202827 -22.102268\nv -6.546136 -3.236592 -22.152061\nv -6.668468 -3.280924 -22.102348\nv -6.578270 -3.262563 -22.152081\nv -6.513877 -3.333108 -22.102135\nv -6.496168 -3.281415 -22.151978\nv -6.246297 -3.385292 -22.101788\nv -6.234884 -3.332385 -22.151649\nv -5.865736 -3.437475 -22.101318\nv -5.861151 -3.383646 -22.151196\nv -5.089069 -3.437473 -22.100468\nv -5.091272 -3.383646 -22.150330\nv -4.009674 -3.420561 -22.099426\nv -4.015119 -3.366792 -22.149128\nv -3.600959 -3.417657 -22.099068\nv -3.607516 -3.363902 -22.148670\nv -2.695442 -3.404189 -22.098354\nv -2.725044 -3.381502 -22.147667\nv -2.695437 -3.352421 -22.098358\nv -2.725044 -3.364368 -22.147678\nv -3.593323 -3.160299 -22.099182\nv -3.608696 -3.206533 -22.148773\nv -3.804550 -3.138455 -22.099373\nv -3.816285 -3.185055 -22.149021\nv -5.089064 -3.046633 -22.100651\nv -5.092739 -3.093792 -22.150517\nv -4.011631 -3.115765 -22.099567\nv -4.021619 -3.162547 -22.149265\nv -2.243150 -4.125273 -6.424587\nv -2.300946 -4.116869 -6.474469\nv -2.352566 -4.114722 -6.424722\nv -2.301810 -4.147758 -6.425803\nv -2.181429 -4.335531 -2.410970\nv -2.231772 -4.300467 -2.413155\nv -2.177096 -4.292976 -2.398707\nv -2.122929 -4.314995 -2.407024\nv -2.309646 -4.202989 -6.428100\nv -2.189267 -4.390762 -2.413268\nv -2.566514 -4.338952 -2.436444\nv -2.674681 -4.166773 -6.428555\nv -5.934596 -4.990285 -0.985834\nv -5.879534 -4.994540 -0.926854\nv -5.934601 -5.001230 -0.877366\nv -6.035588 -4.994540 -0.927030\nv -6.594995 -4.877387 -1.359402\nv -6.661497 -4.886769 -1.281091\nv -7.074517 -4.763467 -1.744706\nv -7.157470 -4.765270 -1.680014\nv -7.395381 -4.633210 -2.152240\nv -7.396057 -4.664027 -2.012237\nv -7.450680 -4.636538 -2.097557\nv -7.395889 -4.562891 -2.135382\nv -7.235610 -4.463991 -2.251332\nv -7.254473 -4.419402 -2.215885\nv -6.731516 -4.276549 -2.352027\nv -6.750771 -4.234693 -2.318809\nv -5.932367 -4.098264 -2.451386\nv -6.149375 -4.099825 -2.392757\nv -5.932382 -4.051000 -2.412167\nv -4.517150 -4.098274 -2.495388\nv -4.516607 -4.050455 -2.453116\nv -4.002973 -4.093604 -2.444841\nv -2.554755 -4.256110 -2.432998\nv -2.552451 -4.210788 -2.398721\nv -2.176268 -4.263084 -2.376476\nv -0.154614 -4.624215 -2.273824\nv -0.100760 -4.664473 -2.255495\nv -0.154699 -4.682466 -2.210818\nv -0.156918 -4.670217 -2.310139\nv -1.792704 -4.357800 -2.390096\nv -1.781053 -4.313574 -2.355535\nv -3.450405 -3.326105 -19.107841\nv -3.486580 -3.320911 -19.137684\nv -3.516149 -3.319207 -19.107918\nv -3.487227 -3.352505 -19.109371\nv -2.863067 -3.710659 -13.295780\nv -2.891997 -3.677427 -13.294326\nv -2.856019 -3.682737 -13.264486\nv -2.826234 -3.684190 -13.294249\nv -3.495024 -3.412815 -19.112396\nv -2.870864 -3.770969 -13.298804\nv -3.181003 -3.738093 -13.299173\nv -3.737130 -3.386663 -19.112686\nv -3.166391 -4.089357 -13.294374\nv -3.723175 -3.647781 -19.107944\nv -2.554013 -4.085123 -13.293687\nv -3.245257 -3.644429 -19.107407\nv -1.198434 -4.066199 -13.292171\nv -2.186786 -3.629123 -19.106224\nv -1.198370 -3.946946 -13.292248\nv -2.186777 -3.554421 -19.106274\nv -2.542521 -3.712478 -13.293911\nv -3.236317 -3.347902 -19.107586\nv -3.169357 -3.648025 -13.294657\nv -3.725486 -3.296596 -19.108170\nv -0.681327 -4.152274 -10.250855\nv -2.179596 -3.903192 -10.252703\nv -2.532715 -3.868253 -10.253122\nv -2.878456 -3.831862 -10.253534\nv -4.677439 -3.721034 -10.255631\nv -5.974535 -3.721030 -10.257092\nv -6.706865 -3.846154 -10.257837\nv -7.153779 -3.971308 -10.258261\nv -7.315262 -4.096496 -10.258364\nv -7.057065 -4.180103 -10.258019\nv -6.610178 -4.263712 -10.257463\nv -5.974622 -4.347323 -10.256693\nv -4.677547 -4.347359 -10.255232\nv -2.875136 -4.320349 -10.253220\nv -2.192421 -4.315653 -10.252454\nv -0.681399 -4.294838 -10.250765\nv -2.668501 -4.570353 -6.423442\nv -1.947879 -4.565730 -6.422633\nv -0.352670 -4.544267 -6.420849\nv -0.344331 -4.403013 -6.422183\nv -1.925539 -4.155014 -6.424195\nv -2.662924 -4.083930 -6.425110\nv -4.561526 -3.973590 -6.427375\nv -5.930967 -3.973590 -6.428874\nv -6.704627 -4.098224 -6.429573\nv -7.176998 -4.222858 -6.429932\nv -7.348061 -4.347492 -6.429951\nv -7.077995 -4.430770 -6.429227\nv -6.608706 -4.514047 -6.428280\nv -5.940236 -4.597324 -6.427109\nv -4.571097 -4.597324 -6.425567\nv -2.179010 -0.414637 -1.179630\nv -1.806562 -0.417150 -1.169877\nv -0.156125 -0.479581 -1.166353\nv 0.138449 -0.483123 -1.162801\nv -2.179495 -0.276537 -0.822814\nv 0.137971 -0.348144 -0.811113\nv -2.178523 -0.552736 -1.536446\nv -2.177378 -1.526399 -2.376070\nv -2.177155 -2.080839 -2.539703\nv -2.177132 -2.831331 -2.556389\nv -2.177152 -3.452900 -2.541488\nv -2.177286 -4.074416 -2.442798\nv 0.140144 -4.060136 -2.405484\nv 0.140271 -3.452674 -2.497578\nv 0.140286 -2.845162 -2.509556\nv 0.140263 -2.111643 -2.493321\nv 0.140048 -1.569743 -2.334852\nv 0.138929 -0.618102 -1.514489\nv 5.341754 -1.664191 -2.015697\nv 5.379513 -1.684527 -2.019848\nv 5.355255 -1.702733 -2.027189\nv 4.304221 -1.650516 -2.119622\nv 4.282336 -1.630370 -2.116263\nv 4.326080 -1.613738 -2.104977\nv 4.281289 -0.709469 -1.372680\nv 4.303177 -0.703166 -1.352918\nv 4.325089 -0.724455 -1.386130\nv 5.938090 -0.826825 -1.259544\nv 5.959981 -0.836339 -1.276751\nv 5.938169 -0.865560 -1.318684\nv 5.905118 -0.844064 -1.295833\nv 5.354302 -0.801455 -1.327363\nv 5.354255 -0.781684 -1.292964\nv 2.085599 -1.609232 -2.164127\nv 2.063729 -1.627660 -2.171383\nv 2.041794 -1.589446 -2.160170\nv 0.434600 -1.588939 -2.314547\nv 0.412679 -1.569727 -2.310916\nv 0.456496 -1.551781 -2.299381\nv 2.062657 -0.668841 -1.386443\nv 2.084595 -0.677634 -1.403749\nv 2.040781 -0.687214 -1.422516\nv 0.411502 -0.618092 -1.498975\nv 0.433461 -0.610849 -1.479061\nv 0.455435 -0.630673 -1.512635\nv -0.155652 -0.611013 -1.512556\nv -0.133643 -0.618111 -1.530004\nv -0.177595 -0.628776 -1.547717\nv -0.132584 -1.569758 -2.358789\nv -0.154490 -1.588943 -2.366386\nv -0.176505 -1.550913 -2.352874\nv -1.804912 -1.549389 -2.381322\nv -1.826919 -1.529981 -2.375673\nv -1.782934 -1.512413 -2.367412\nv -1.828061 -0.558222 -1.536047\nv -1.806088 -0.551360 -1.517364\nv -1.784050 -0.570772 -1.552389\nv -2.527838 -1.522817 -2.376467\nv -2.549830 -1.541779 -2.382142\nv -2.571847 -1.504021 -2.368582\nv -4.517068 -1.523124 -2.383541\nv -4.539075 -1.503713 -2.378893\nv -4.495087 -1.485581 -2.370722\nv -2.551008 -0.539674 -1.518222\nv -2.528981 -0.547250 -1.536844\nv -2.572958 -0.558114 -1.553186\nv -4.540214 -0.511368 -1.539392\nv -4.518246 -0.504332 -1.520501\nv -4.496199 -0.523613 -1.555411\nv 18.933395 -2.608179 -0.540740\nv 18.933340 -2.636175 -0.500736\nv 18.932932 -2.654708 -0.199291\nv 18.932898 -2.406034 -0.176333\nv 18.933117 -2.420800 -0.336708\nv 18.933374 -2.472670 -0.525469\nv 18.933424 -2.502173 -0.562296\nv 18.933430 -2.542085 -0.566127\nv 18.933424 -2.575138 -0.562847\nv 17.935448 -2.427009 -0.841496\nv 17.935448 -2.637721 -0.842079\nv 17.935406 -2.733160 -0.810194\nv 17.935324 -2.814046 -0.751838\nv 17.934713 -2.867832 -0.301609\nv 17.934669 -2.149720 -0.268060\nv 17.934996 -2.192219 -0.507976\nv 17.935379 -2.341844 -0.787667\nv 13.729454 -1.614479 -0.817936\nv 13.730061 -2.035706 -1.263667\nv 12.332172 -2.312749 -1.489841\nv 13.730178 -2.869058 -1.349990\nv 13.730110 -3.137901 -1.299277\nv 13.729982 -3.365782 -1.206400\nv 13.729003 -3.517630 -0.487872\nv 13.728929 -1.494956 -0.435018\nv 10.639824 -1.102027 -0.536311\nv 10.640467 -1.272892 -1.005571\nv 10.641212 -1.875182 -1.552171\nv 10.641356 -2.218146 -1.657449\nv 10.641369 -2.682370 -1.667828\nv 10.641360 -3.083177 -1.659567\nv 10.641276 -3.483952 -1.598015\nv 10.641121 -3.823673 -1.484589\nv 10.639918 -4.050154 -0.602295\nv 7.386127 -3.868221 -1.899528\nv 7.385942 -4.304236 -1.765663\nv 7.384515 -4.594961 -0.718088\nv 7.384404 -0.725168 -0.638740\nv 7.385163 -0.953728 -1.195080\nv 7.386046 -1.759495 -1.843077\nv 7.386217 -2.218343 -1.968075\nv 7.386233 -2.839443 -1.980889\nv 7.386224 -3.353851 -1.971745\nv 5.939242 -2.208830 -2.104258\nv 5.939260 -2.883803 -2.118065\nv 5.939249 -3.442827 -2.108370\nv 5.939143 -4.001811 -2.031246\nv 5.938946 -4.475646 -1.888203\nv 5.937422 -4.791599 -0.768525\nv 5.937306 -0.586161 -0.683528\nv 5.939059 -1.710186 -1.970582\nv 5.355438 -2.192535 -2.159122\nv 5.355453 -2.881690 -2.173239\nv 5.355444 -3.452462 -2.163207\nv 5.355336 -4.023191 -2.083972\nv 5.355134 -4.506981 -1.937126\nv 5.353567 -4.829570 -0.788641\nv 5.353447 -0.535766 -0.701577\nv 4.302333 -0.449654 -0.733961\nv 4.304411 -2.155378 -2.257740\nv 4.304431 -2.864892 -2.272447\nv 4.304417 -3.452525 -2.261827\nv 4.304304 -4.040112 -2.178797\nv 4.304092 -4.538192 -2.025100\nv 4.302457 -4.870299 -0.824820\nv 2.063812 -4.047524 -2.231918\nv 2.063598 -4.551855 -2.074379\nv 2.061923 -4.888123 -0.845086\nv 2.061795 -0.411976 -0.752071\nv 2.063919 -2.139126 -2.312964\nv 2.063943 -2.857550 -2.328017\nv 2.063927 -3.452560 -2.317074\nv 0.434807 -2.111626 -2.465686\nv 0.434829 -2.845144 -2.481735\nv 0.434812 -3.452657 -2.469913\nv 0.434689 -4.060119 -2.378881\nv 0.434459 -4.575043 -2.210709\nv 0.432676 -4.918342 -0.901155\nv 0.432539 -0.348139 -0.802076\nv -0.154278 -2.111660 -2.520957\nv -0.154255 -2.845179 -2.537376\nv -0.154272 -3.452692 -2.525243\nv -0.154399 -4.060153 -2.432087\nv -0.156457 -4.918354 -0.920457\nv -0.156597 -0.348150 -0.820149\nv -1.807036 -0.282940 -0.822390\nv -1.804696 -2.083493 -2.539282\nv -1.804673 -2.832425 -2.555969\nv -1.804693 -3.452701 -2.541069\nv -1.804827 -4.072924 -2.442379\nv -1.806898 -4.949173 -0.922297\nv -7.466892 -0.577416 -1.438726\nv -7.446166 -0.592049 -1.459590\nv -7.363316 -0.554712 -1.437991\nv -7.366315 -0.540455 -1.419813\nv -7.282230 -0.563424 -1.454715\nv -7.337648 -0.542071 -1.424731\nv -7.112864 -0.545406 -1.455619\nv -5.933462 -0.621676 -1.715666\nv -5.933504 -0.596837 -1.684313\nv -5.695775 -0.614160 -1.685189\nv -5.744010 -0.636491 -1.715643\nv -5.875520 -1.503720 -2.389463\nv -5.831522 -1.503720 -2.389115\nv -5.942231 -1.869994 -2.471448\nv -5.904419 -1.906405 -2.481739\nv -7.395551 -1.980496 -2.383703\nv -7.249321 -2.007771 -2.403218\nv -7.395539 -2.018912 -2.393566\nv -7.508242 -2.012888 -2.382455\nv -8.171686 -2.041827 -2.220997\nv -8.146940 -2.006415 -2.206872\nv -8.259504 -1.937109 -2.147411\nv -8.217083 -1.921831 -2.152861\nv -8.259223 -1.835916 -2.107324\nv -8.216847 -1.838675 -2.119902\nv -8.072699 -1.480954 -2.019788\nv -8.111649 -1.470618 -2.003929\nv -7.555754 -0.642030 -1.479090\nv -7.520599 -0.652686 -1.501403\nv -7.395518 -2.139984 -2.408300\nv -5.696321 -0.495585 -1.554396\nv -8.722152 -1.975346 -2.013482\nv -8.749660 -1.981334 -2.013462\nv -8.761040 -1.971501 -1.994980\nv -8.372781 -1.464381 -1.939571\nv -8.408943 -1.458171 -1.918828\nv -7.675488 -0.561074 -1.303384\nv -7.654167 -0.555089 -1.311143\nv -7.643102 -0.559683 -1.330531\nv -2.549745 -4.075907 -2.443216\nv -2.551815 -4.955812 -0.923131\nv -2.551954 -0.270133 -0.823237\nv -2.549614 -2.078185 -2.540124\nv -2.549589 -2.830239 -2.556810\nv -2.549611 -3.453099 -2.541907\nv -10.190742 -1.790788 -0.909219\nv -10.212924 -1.784771 -0.878142\nv -10.174934 -1.772380 -0.873488\nv -9.676630 -1.853435 -1.423789\nv -9.653814 -1.833743 -1.401662\nv -8.762068 -1.995573 -2.027056\nv -7.456127 -0.524457 -1.395127\nv -7.638713 -0.542328 -1.293073\nv -8.112538 -0.540110 -0.825886\nv -8.145332 -0.559455 -0.842999\nv -8.257060 -0.549798 -0.389823\nv -8.293303 -0.568157 -0.401733\nv -19.563017 -3.258599 -0.175210\nv -19.563068 -3.221570 -0.138228\nv -18.579813 -2.976419 -0.677420\nv -18.580023 -2.854242 -0.524042\nv -17.520296 -2.784715 -0.998172\nv -17.520542 -2.650212 -0.818618\nv -16.452938 -2.599400 -1.260994\nv -16.453184 -2.465717 -1.080465\nv -15.588919 -2.508444 -1.479158\nv -15.589158 -2.376415 -1.303666\nv -14.796223 -2.454555 -1.667152\nv -14.796452 -2.323912 -1.498811\nv -10.199278 -2.222300 -2.134902\nv -13.353087 -2.263059 -1.788262\nv -7.754981 -0.319305 -0.234052\nv -7.684372 -0.301272 -0.482849\nv -7.315228 -0.289924 -0.749670\nv -7.244634 -0.285656 -0.767254\nv -5.698612 -0.244307 -0.809909\nv -4.519192 -0.230261 -0.825478\nv -7.395809 -1.503596 -2.192363\nv -5.932541 -1.503720 -2.389913\nv -4.516885 -2.064849 -2.518105\nv -4.516829 -2.833293 -2.559023\nv -4.516850 -3.466602 -2.544114\nv -4.519054 -4.994539 -0.925322\nv -5.932376 -2.086244 -2.511911\nv -5.932304 -2.833295 -2.563017\nv -5.932336 -3.466600 -2.540908\nv -7.395607 -4.099792 -2.343058\nv -7.397533 -4.994540 -0.928564\nv -7.395403 -2.833250 -2.492665\nv -7.395430 -3.466556 -2.472956\nv -10.199873 -4.099724 -2.326131\nv -19.563038 -3.526538 -0.160217\nv -19.562979 -3.460010 -0.204731\nv -19.562958 -3.381512 -0.220398\nv -19.562979 -3.302991 -0.204831\nv -19.563131 -3.191892 -0.093873\nv -19.563131 -3.570968 -0.093632\nv -18.580275 -4.006861 -0.339300\nv -18.579897 -3.860326 -0.615392\nv -18.579649 -3.640877 -0.799947\nv -18.579557 -3.381923 -0.864871\nv -18.579649 -3.122882 -0.800277\nv -18.580275 -2.756314 -0.340097\nv -17.520966 -4.268419 -0.505838\nv -17.520397 -4.060630 -0.924306\nv -17.520016 -3.749432 -1.204026\nv -17.519880 -3.382202 -1.302415\nv -17.520016 -3.014844 -1.204494\nv -17.520966 -2.494968 -0.506968\nv -16.453773 -4.510404 -0.646981\nv -16.453039 -4.245936 -1.186288\nv -16.452547 -3.849847 -1.546782\nv -16.452375 -3.382439 -1.673579\nv -16.452545 -2.914867 -1.547378\nv -15.589935 -4.681882 -0.732679\nv -15.589100 -4.377240 -1.346201\nv -15.588540 -3.920987 -1.756303\nv -15.588345 -3.382584 -1.900553\nv -15.588540 -2.863778 -1.756977\nv -13.352566 -4.073881 -2.170375\nv -14.795884 -3.965366 -1.914846\nv -13.354242 -1.998895 -0.941049\nv -14.795883 -2.832781 -1.915567\nv -14.795671 -3.382693 -2.072257\nv -1.918141 -0.225155 0.001667\nv -0.157720 -0.300001 0.102464\nv -0.157585 -0.300065 -0.097099\nv 0.431440 -0.300145 0.102786\nv 0.431576 -0.300209 -0.096758\nv 2.060761 -0.365416 0.103705\nv 2.060897 -0.365479 -0.095799\nv 4.301325 -0.414225 0.104149\nv 4.301462 -0.414288 -0.095549\nv 5.352482 -0.491583 0.104656\nv 5.352619 -0.491647 -0.094822\nv 5.936365 -0.543070 0.104998\nv 5.936500 -0.543134 -0.094475\nv 7.383525 -0.685963 0.105868\nv 7.383661 -0.686026 -0.093623\nv 10.639084 -1.073667 0.243930\nv 10.639220 -1.073731 -0.203607\nv 13.728325 -1.476069 0.243930\nv 13.728461 -1.476132 -0.203607\nv 17.934288 -2.143864 0.243930\nv 17.934416 -2.143923 -0.203607\nv 18.932642 -2.403948 0.076335\nv 18.932726 -2.403988 -0.049990\nv 19.154490 -1.413264 -0.049990\nv 19.154406 -1.413264 0.076335\nv 17.934288 -1.413264 0.243930\nv 13.728325 -0.731665 0.243930\nv 13.728461 -0.731665 -0.203607\nv 17.934416 -1.413264 -0.203607\nv 21.633591 4.901125 -0.042054\nv 21.633541 4.901125 0.084271\nv 20.911066 4.901125 0.243065\nv 20.911150 4.901125 -0.195672\nv 14.421182 0.100072 0.245101\nv 14.421309 0.100072 -0.205523\nv 20.471605 3.968740 -0.196844\nv 18.373959 -0.480881 -0.202436\nv 20.471519 3.968740 0.243193\nv 18.373838 -0.480881 0.243802\nv 21.267473 3.968740 0.083099\nv 19.520473 -0.480881 0.077507\nv 21.267529 3.968740 -0.043226\nv 19.520552 -0.480881 -0.048818\nv 20.990547 5.119924 -0.114899\nv 20.991215 5.069869 -0.169877\nv 18.773880 5.070407 -0.190450\nv 18.773813 5.119924 -0.133510\nv 21.633574 5.119924 0.009308\nv 21.633591 5.070019 -0.031335\nv 18.059767 5.070426 -0.194290\nv 18.045620 5.119924 -0.064405\nv 18.773764 5.119924 0.183442\nv 18.773746 5.070106 0.237716\nv 20.990746 5.069621 0.227580\nv 20.990494 5.119924 0.175610\nv 18.059559 5.070139 0.234143\nv 18.045570 5.119924 0.102526\nv 21.633541 5.069923 0.084271\nv 21.633558 5.119924 0.046795\nv 17.602451 4.901125 0.111975\nv 17.635008 4.860352 0.249483\nv 16.723543 4.146643 0.111708\nv 16.761292 4.110290 0.247033\nv 12.529127 0.546017 0.110434\nv 12.566875 0.509663 0.244465\nv 11.650219 -0.208465 0.110167\nv 11.591815 -0.258429 0.243930\nv 11.712147 -0.224060 0.243930\nv 17.635141 4.860383 -0.223440\nv 17.602512 4.901125 -0.082082\nv 16.761385 4.110290 -0.218011\nv 16.723612 4.146643 -0.080741\nv 12.567000 0.509664 -0.206035\nv 12.529226 0.546017 -0.074342\nv 11.712283 -0.224060 -0.203607\nv 11.591939 -0.258442 -0.203607\nv 11.650327 -0.208465 -0.073001\nv 7.383661 -0.258465 -0.093623\nv 7.383627 -0.208465 -0.043623\nv 5.936500 -0.258465 -0.094475\nv 5.936467 -0.208465 -0.044475\nv 5.352619 -0.258465 -0.094822\nv 5.352586 -0.208465 -0.044822\nv 4.301462 -0.258465 -0.095549\nv 4.301430 -0.208465 -0.045549\nv 2.060897 -0.258465 -0.095799\nv 2.060863 -0.208465 -0.045799\nv 0.431576 -0.239043 -0.096758\nv 0.431541 -0.208465 -0.046758\nv -0.157585 -0.238995 -0.097099\nv -0.157620 -0.208465 -0.047099\nv -1.257934 -0.255914 -0.097727\nv -1.807957 -0.237224 -0.147927\nv -1.844726 -0.230946 -0.064809\nv -1.808058 -0.233826 -0.048042\nv 7.383558 -0.208465 0.055868\nv 7.383525 -0.258465 0.105868\nv 5.936399 -0.208465 0.054998\nv 5.936365 -0.258465 0.104998\nv 5.352515 -0.208465 0.054656\nv 5.352482 -0.258465 0.104656\nv 4.301359 -0.208465 0.054149\nv 4.301325 -0.258465 0.104149\nv 2.060794 -0.208465 0.053705\nv 2.060761 -0.258465 0.103705\nv 0.431474 -0.208465 0.052786\nv 0.431440 -0.239022 0.102786\nv -0.157687 -0.208465 0.052464\nv -0.157720 -0.238974 0.102464\nv -1.808127 -0.233795 0.051506\nv -1.844817 -0.230904 0.068230\nv -1.808161 -0.237128 0.151394\nv -1.258069 -0.255850 0.101825\nv 18.136242 4.064477 -0.213795\nv 17.661388 3.989668 -0.214481\nv 17.594517 4.075029 -0.215126\nv 18.276449 4.893645 -0.217840\nv 18.517706 4.947639 -0.209401\nv 18.833181 4.901125 -0.215422\nv 18.975275 4.023628 -0.206562\nv 19.498686 4.014501 -0.204946\nv 16.221365 -1.091159 -0.203607\nv 15.716079 -1.053770 -0.203607\nv 19.504560 4.023789 0.246609\nv 18.981144 4.032918 0.247289\nv 15.715946 -1.053770 0.243930\nv 16.221233 -1.091159 0.243930\nv 17.594421 4.075029 0.250189\nv 17.661299 3.989668 0.250581\nv 18.136982 4.065468 0.250328\nv 18.833107 4.901125 0.251378\nv 18.517834 4.947663 0.247969\nv 18.276350 4.893640 0.251428\nv 15.946528 -1.091033 0.155530\nv 15.715810 -1.053644 0.155530\nv 18.981020 4.033041 0.158889\nv 19.229876 4.023911 0.158209\nv 18.276356 4.893752 0.163028\nv 18.558554 4.901237 0.162978\nv 17.862429 4.065581 0.161928\nv 17.594427 4.075142 0.161789\nv 18.557884 4.901855 -0.127028\nv 18.275715 4.894377 -0.129445\nv 17.593779 4.075760 -0.126732\nv 17.860945 4.065207 -0.125401\nv 15.715745 -1.053555 -0.115208\nv 15.946465 -1.090944 -0.115208\nv 19.223793 4.014716 -0.116547\nv 18.974941 4.023845 -0.118163\nv -5.699579 -0.211462 -0.100361\nv -5.809696 -0.208678 -0.000529\nv -5.699715 -0.211399 0.099428\nv -4.520318 -0.180064 0.099952\nv -4.410347 -0.175518 0.000248\nv -4.520182 -0.180127 -0.099577\nv -3.444448 0.507804 -0.032592\nv -3.444493 0.507825 0.032052\nv -3.826599 0.497674 0.031882\nv -3.826555 0.497653 -0.032846\nv -0.157718 -0.485923 1.190535\nv -0.157718 -0.471750 1.153130\nv -1.808160 -0.409210 1.154797\nv -1.808160 -0.423597 1.192120\nv -2.158619 -4.053017 2.451423\nv -2.202618 -4.072946 2.448290\nv -2.180508 -4.091730 2.441670\nv -2.158619 -3.451268 2.546585\nv -2.202618 -3.451291 2.546585\nv -1.806298 -4.090116 2.441539\nv -1.808160 -4.051613 2.451420\nv -0.157718 -4.077861 2.434458\nv -0.157718 -4.038830 2.442868\nv 0.114970 -4.038831 2.418571\nv 0.158546 -4.078100 2.407019\nv 0.158748 -3.451081 2.503254\nv 0.114975 -3.451081 2.507315\nv 0.158747 -2.843561 2.514833\nv 0.114976 -2.843561 2.518917\nv 0.114976 -2.130047 2.502667\nv 0.158748 -2.110053 2.498145\nv 0.114956 -2.090878 2.496486\nv 0.158763 -1.568253 2.339461\nv 0.114961 -1.568253 2.343258\nv 0.158820 -0.617135 1.519165\nv 0.114903 -0.617135 1.521615\nv 0.114866 -0.489187 1.187564\nv 0.158859 -0.475468 1.149707\nv -2.158621 -0.421227 1.200906\nv -2.202616 -0.406523 1.164681\nv -2.202616 -0.551412 1.539694\nv -2.158621 -0.552101 1.539694\nv -2.202617 -1.524659 2.379939\nv -2.158620 -1.525109 2.379939\nv -2.158619 -2.060202 2.538237\nv -2.202618 -2.079063 2.543926\nv -2.158619 -2.099372 2.544385\nv -2.202618 -2.829637 2.561090\nv -2.158619 -2.829766 2.561090\nv -1.808160 -2.101869 2.544384\nv -1.808160 -2.062699 2.538242\nv -0.157718 -2.130047 2.527938\nv -0.157718 -2.090877 2.521794\nv 7.405435 -0.966610 1.222617\nv 7.383525 -0.945373 1.188989\nv 7.361656 -0.951160 1.208723\nv 7.361639 -1.757570 1.857910\nv 7.405405 -1.759096 1.854077\nv 7.361639 -2.216939 1.983332\nv 7.405408 -2.217085 1.979234\nv 7.361652 -2.838846 1.996555\nv 7.405377 -2.837124 1.992429\nv 7.361691 -3.353932 1.987728\nv 7.405317 -3.350781 1.983624\nv 7.405391 -3.844512 1.914717\nv 7.361660 -3.869023 1.915767\nv 7.383525 -3.886213 1.907917\nv 10.617217 -3.465587 1.620590\nv 10.639086 -3.501981 1.609361\nv 10.660923 -3.480484 1.613620\nv 10.660893 -3.080604 1.674844\nv 10.617293 -3.083925 1.679072\nv 10.660946 -2.680722 1.682837\nv 10.617234 -2.682355 1.687088\nv 10.660916 -2.218307 1.672198\nv 10.617203 -2.217085 1.676399\nv 10.660937 -1.875325 1.566825\nv 10.617205 -1.873410 1.570771\nv 10.617163 -1.281759 1.039363\nv 10.660882 -1.274657 1.020558\nv 10.639086 -1.265414 1.003054\nv -13.333441 -2.407623 1.934811\nv -13.355517 -2.375928 1.911035\nv -13.377250 -2.389827 1.923003\nv -10.224998 -2.360696 2.263416\nv -10.181048 -2.340244 2.258947\nv -10.181195 -2.339163 2.258796\nv -10.202819 -2.327751 2.242226\nv -10.224902 -2.831842 2.381583\nv -10.180986 -2.831662 2.383985\nv -10.224886 -3.445085 2.426904\nv -10.202917 -3.484721 2.426275\nv -10.180948 -3.464981 2.430724\nv -13.333550 -3.445061 2.261185\nv -13.377384 -3.463999 2.260179\nv -13.355517 -3.484719 2.259303\nv -13.333533 -2.857281 2.185619\nv -13.377222 -2.857159 2.181626\nv -13.355517 -4.571347 1.801173\nv -13.355517 -4.594987 1.770865\nv -10.224924 -4.641964 2.021731\nv -10.180921 -4.635202 2.043594\nv -10.202917 -4.617323 2.051805\nv -14.776566 -4.467560 1.443613\nv -14.798487 -4.443332 1.471831\nv -14.820151 -4.455963 1.455036\nv -14.820159 -4.785390 0.787264\nv -14.776644 -4.789995 0.790756\nv -14.820207 -4.901063 -0.004344\nv -14.776568 -4.905980 -0.004318\nv -14.819082 -4.785894 -0.796026\nv -14.775560 -4.790502 -0.799465\nv -14.774593 -4.468483 -1.452528\nv -14.818162 -4.456893 -1.464007\nv -14.796475 -4.444273 -1.480786\nv -13.353060 -4.572496 -1.807948\nv -13.353100 -4.596117 -1.777626\nv -10.222273 -4.643203 -2.025084\nv -10.200228 -4.618580 -2.055148\nv -10.178242 -4.636455 -2.046899\nv -10.223626 -4.987022 -0.969281\nv -10.179676 -4.994529 -0.949753\nv -10.223695 -4.996702 -0.929192\nv -13.332277 -4.935360 -0.919175\nv -13.376146 -4.930574 -0.937518\nv -13.354218 -4.924818 -0.957746\nv -13.333521 -5.052980 -0.003223\nv -13.377432 -5.050764 -0.003248\nv -13.333526 -4.934777 0.912655\nv -13.355517 -4.924210 0.951195\nv -13.377419 -4.929979 0.930945\nv -10.224895 -4.986429 0.966156\nv -10.224911 -4.996134 0.926073\nv -10.180919 -4.993949 0.946684\nv -10.224913 -5.119453 -0.001519\nv -10.180918 -5.119924 -0.001493\nv -13.330800 -2.408858 -1.942940\nv -13.374624 -2.391055 -1.931192\nv -13.352909 -2.377148 -1.919210\nv -13.330550 -2.858676 -2.193462\nv -13.374244 -2.858551 -2.189518\nv -10.222029 -2.362084 -2.268279\nv -10.199879 -2.329127 -2.247086\nv -10.178231 -2.340548 -2.263623\nv -10.178085 -2.341629 -2.263773\nv -10.177860 -2.833124 -2.388485\nv -10.221778 -2.833302 -2.386135\nv -10.221704 -3.446573 -2.431049\nv -10.177761 -3.466471 -2.434805\nv -10.199737 -3.486209 -2.430368\nv -13.330464 -3.446504 -2.268653\nv -13.352435 -3.486161 -2.266770\nv -13.374300 -3.465441 -2.267685\nv -14.820346 -1.946895 -0.005285\nv -14.776502 -1.943860 -0.005262\nv -14.819298 -2.053766 -0.777891\nv -14.775424 -2.053864 -0.801219\nv -14.797379 -2.061719 -0.818233\nv -14.820352 -2.053275 0.767389\nv -14.798487 -2.061202 0.807760\nv -14.776508 -2.053358 0.790766\nv -15.590928 -2.126290 0.703180\nv -15.590928 -2.137038 0.741338\nv -16.432953 -2.246833 0.618507\nv -16.475899 -2.257573 0.633365\nv -16.454647 -2.261576 0.654162\nv -16.432957 -2.156407 -0.006127\nv -16.475883 -2.164980 -0.006148\nv -16.432104 -2.247230 -0.630703\nv -16.453749 -2.261997 -0.666373\nv -16.475027 -2.257980 -0.645602\nv -15.589962 -2.126742 -0.714504\nv -15.589911 -2.137514 -0.752654\nv -1.786172 -0.840731 1.943147\nv -1.786170 -1.154407 2.214995\nv -0.179709 -1.200303 2.205607\nv -0.179708 -0.893126 1.937052\nv -1.830157 -0.835904 1.937752\nv -1.830158 -1.159613 2.217806\nv -2.158620 -0.831275 1.937752\nv -2.158620 -1.155579 2.217806\nv -2.202617 -0.830655 1.937752\nv -2.202617 -1.155038 2.217806\nv -2.531080 -0.826025 1.937752\nv -2.531080 -1.151003 2.217806\nv -2.575077 -0.829237 1.943185\nv -2.575077 -1.144335 2.215157\nv -4.498321 -0.799359 1.943197\nv -4.498320 -1.119810 2.215145\nv -4.542314 -0.795071 1.937615\nv -4.542316 -1.125641 2.217632\nv -5.736752 -0.829300 1.973449\nv -5.782314 -1.125641 2.208205\nv -5.782174 -0.836737 1.983139\nv -5.826312 -1.125641 2.207857\nv -5.935799 -0.831799 1.981691\nv -5.935799 -1.125641 2.206605\nv -7.360607 -0.812439 1.754991\nv -7.398797 -1.125642 2.001005\nv -7.683986 -0.857232 1.693958\nv -7.872765 -1.136420 1.862658\nv -7.720945 -0.848110 1.673454\nv -7.920537 -1.163418 1.869004\nv -7.909840 -0.859486 1.625158\nv -8.142458 -1.129980 1.775908\nv -7.941878 -0.830203 1.550622\nv -8.186617 -1.129075 1.755665\nv -7.939762 -0.831192 -1.553685\nv -8.184222 -1.130195 -1.758812\nv -7.919679 -0.846967 -1.611671\nv -8.116452 -1.131602 -1.789782\nv -7.718662 -0.849177 -1.676256\nv -7.880997 -1.106158 -1.846597\nv -7.681675 -0.858311 -1.696712\nv -7.819948 -1.136474 -1.880061\nv -7.358213 -0.813558 -1.757409\nv -7.396069 -1.126917 -2.003267\nv -5.933096 -0.833062 -1.982493\nv -5.932791 -1.127047 -2.207219\nv -5.779470 -0.838000 -1.983764\nv -5.823302 -1.127047 -2.208348\nv -5.734061 -0.830558 -1.974028\nv -5.779305 -1.127048 -2.208646\nv -4.539675 -0.796305 -1.936871\nv -4.539296 -1.127053 -2.216677\nv -4.495673 -0.800596 -1.942401\nv -4.495302 -1.121220 -2.214144\nv -2.572430 -0.830474 -1.940203\nv -2.572060 -1.145745 -2.211975\nv -2.528440 -0.827259 -1.934723\nv -2.528059 -1.152415 -2.214569\nv -2.177980 -0.832198 -1.934325\nv -2.177598 -1.156720 -2.214172\nv -1.827519 -0.837138 -1.933927\nv -1.827138 -1.161025 -2.213774\nv -1.783526 -0.841968 -1.939270\nv -1.783153 -1.155817 -2.210917\nv -0.177071 -0.894359 -1.931332\nv -0.176707 -1.201707 -2.199691\nv -0.133151 -0.891255 -1.924188\nv -0.132797 -1.208439 -2.200422\nv 0.139460 -0.891243 -1.904683\nv 0.139834 -1.208425 -2.178110\nv 0.412072 -0.891231 -1.885177\nv 0.412466 -1.208411 -2.155797\nv 0.455931 -0.895870 -1.887427\nv 0.456284 -1.202875 -2.149649\nv 2.041272 -0.947035 -1.774066\nv 2.041610 -1.247749 -2.019926\nv 2.085070 -0.945017 -1.765508\nv 2.085405 -1.255519 -2.018942\nv 4.281787 -0.973782 -1.726472\nv 4.282137 -1.280718 -1.974308\nv 4.325555 -0.980438 -1.728652\nv 4.325886 -1.276836 -1.968244\nv 5.354748 -1.049998 -1.654852\nv 5.350566 -1.337548 -1.884273\nv 5.742888 -1.069177 -1.624646\nv 5.609935 -1.304841 -1.841991\nv 5.811056 -1.107517 -1.655838\nv 5.622215 -1.363951 -1.869884\nv 5.938583 -1.096201 -1.621129\nv 5.938879 -1.377715 -1.838406\nv 7.385586 -1.184995 -1.503469\nv 7.385880 -1.453557 -1.719446\nv 10.640821 -1.445766 -1.265717\nv 10.641068 -1.646510 -1.447899\nv 13.729741 -1.735391 -1.030160\nv 13.729945 -1.875785 -1.178722\nv 17.935177 -2.235183 -0.641053\nv 17.935307 -2.285052 -0.734274\nv 18.933241 -2.435705 -0.426138\nv 18.933327 -2.452993 -0.489052\nv -0.135801 -1.207035 2.206392\nv -0.135777 -0.890028 1.929956\nv 0.114948 -1.207035 2.186155\nv 0.114929 -0.890028 1.912302\nv 0.158775 -1.207035 2.182618\nv 0.158794 -0.890028 1.909213\nv 0.409522 -1.207035 2.162381\nv 0.409499 -0.890028 1.891559\nv 0.453352 -1.201504 2.156279\nv 0.453355 -0.894665 1.893861\nv 2.038852 -1.246460 2.028370\nv 2.038849 -0.945903 1.782318\nv 2.082648 -1.254230 2.027440\nv 2.082660 -0.943890 1.773809\nv 4.279439 -1.279458 1.983437\nv 4.279430 -0.972680 1.735405\nv 4.323198 -1.275579 1.977419\nv 4.323194 -0.979334 1.737638\nv 5.347991 -1.336344 1.894641\nv 5.352484 -1.048941 1.665041\nv 5.469540 -1.329733 1.878760\nv 5.661867 -1.064243 1.641325\nv 5.541005 -1.359332 1.888301\nv 5.762447 -1.065154 1.618639\nv 5.936365 -1.376540 1.849463\nv 5.936365 -1.095164 1.632005\nv 7.361650 -1.451311 1.733953\nv 7.361656 -1.182534 1.517579\nv 7.405387 -1.453754 1.730382\nv 7.405396 -1.189619 1.519917\nv 10.617224 -1.644286 1.466221\nv 10.617211 -1.447089 1.289103\nv 10.660910 -1.647203 1.462546\nv 10.660892 -1.447000 1.280476\nv 13.728323 -1.875028 1.198871\nv 13.728323 -1.734728 1.050219\nv 17.934284 -2.284577 0.759420\nv 17.934284 -2.234766 0.666167\nv 18.932642 -2.452673 0.515429\nv 18.932642 -2.435425 0.452504\nv -9.471661 -1.332137 -0.831740\nv -9.722376 -1.534162 -0.895898\nv -9.878650 -1.515707 -0.550591\nv -9.580846 -1.321288 -0.511080\nv -8.884657 -1.356918 -1.501153\nv -9.087332 -1.582069 -1.547438\nv -9.490711 -1.547962 -1.223362\nv -9.239996 -1.345938 -1.159204\nv -9.053977 -1.048808 -0.735836\nv -9.253543 -1.190347 -0.794208\nv -9.362729 -1.179498 -0.473548\nv -9.131969 -1.040736 -0.451977\nv -9.895453 -1.506083 0.200266\nv -9.597604 -1.311686 0.161041\nv -9.597381 -1.311790 -0.165662\nv -9.895185 -1.506209 -0.205173\nv -9.368868 -1.172574 0.161125\nv -9.138081 -1.033826 0.139726\nv -9.137886 -1.033916 -0.144007\nv -9.368646 -1.172678 -0.165577\nv -9.132584 -1.040449 0.447707\nv -9.363371 -1.179198 0.469106\nv -9.254622 -1.189843 0.789896\nv -9.054978 -1.048340 0.731658\nv -9.581540 -1.320964 0.506483\nv -9.879391 -1.515362 0.545708\nv -9.723584 -1.533596 0.891240\nv -9.472791 -1.331609 0.827273\nv -8.872760 -1.061427 1.033661\nv -9.072404 -1.202930 1.091899\nv -8.717531 -1.213692 1.434254\nv -8.581161 -1.061522 1.348889\nv -8.823103 -0.910367 0.683259\nv -8.575202 -0.746543 0.595313\nv -8.626265 -0.744802 0.367455\nv -8.900708 -0.902476 0.399308\nv -8.893702 -0.897683 0.139820\nv -8.619257 -0.740008 0.107967\nv -8.619106 -0.740079 -0.111836\nv -8.893509 -0.897773 -0.143913\nv -8.900162 -0.902732 -0.403405\nv -8.625760 -0.745037 -0.371329\nv -8.574388 -0.746924 -0.599142\nv -8.822169 -0.910804 -0.687264\nv -8.579322 -1.062384 -1.352524\nv -8.715574 -1.214607 -1.437946\nv -9.070912 -1.203627 -1.095997\nv -8.871347 -1.062088 -1.037625\nv -8.692094 -0.918034 -0.953446\nv -8.444312 -0.754154 -0.865324\nv -8.244703 -0.757796 -1.136479\nv -8.400067 -0.918330 -1.268345\nv -8.401793 -0.917523 1.264821\nv -8.246251 -0.757073 1.133027\nv -8.445489 -0.753603 0.861646\nv -8.693390 -0.917428 0.949592\nv -9.492368 -1.547188 1.218973\nv -9.089437 -1.581084 1.543562\nv -8.886700 -1.355962 1.497362\nv -9.241572 -1.345200 1.155006\nv -12.745914 -3.260776 -7.804756\nv -11.020436 -3.683620 -7.804756\nv -11.230495 -3.683620 -7.804756\nv -11.230495 -3.601779 -7.804756\nv -11.350529 -3.601779 -7.804756\nv -11.350529 -3.683620 -7.804756\nv -11.545582 -3.683620 -7.804756\nv -11.830662 -3.642699 -7.804756\nv -12.250777 -3.492658 -7.804756\nv -11.020436 -3.662924 -7.935422\nv -11.230495 -3.662924 -7.935422\nv -11.230495 -3.585089 -7.910132\nv -11.350529 -3.585089 -7.910132\nv -11.350529 -3.662924 -7.935422\nv -11.545582 -3.662924 -7.935422\nv -11.830662 -3.624007 -7.922777\nv -12.250777 -3.481309 -7.876412\nv -11.020436 -3.602864 -8.053297\nv -11.230495 -3.602864 -8.053297\nv -11.230495 -3.536653 -8.005193\nv -11.350529 -3.536653 -8.005193\nv -11.350529 -3.602864 -8.053297\nv -11.545582 -3.602864 -8.053297\nv -11.830662 -3.569759 -8.029245\nv -12.250777 -3.448373 -7.941053\nv -11.020436 -3.509317 -8.146844\nv -11.230495 -3.509317 -8.146844\nv -11.230495 -3.461213 -8.080633\nv -11.350529 -3.461213 -8.080633\nv -11.350529 -3.509317 -8.146844\nv -11.545582 -3.509317 -8.146844\nv -11.830662 -3.485265 -8.113739\nv -12.250777 -3.397073 -7.992352\nv -11.020436 -3.391442 -8.206905\nv -11.230495 -3.391442 -8.206905\nv -11.230495 -3.366152 -8.129069\nv -11.350529 -3.366152 -8.129069\nv -11.350529 -3.391442 -8.206905\nv -11.545582 -3.391442 -8.206905\nv -11.830662 -3.378797 -8.167987\nv -12.250777 -3.332431 -8.025290\nv -11.020436 -3.260776 -8.227600\nv -11.230495 -3.260776 -8.227600\nv -11.230495 -3.260776 -8.145759\nv -11.350529 -3.260776 -8.145759\nv -11.350529 -3.260776 -8.227600\nv -11.545582 -3.260776 -8.227600\nv -11.830662 -3.260776 -8.186680\nv -12.250777 -3.260776 -8.036638\nv -11.020436 -3.130110 -8.206905\nv -11.230495 -3.130110 -8.206905\nv -11.230495 -3.155400 -8.129069\nv -11.350529 -3.155400 -8.129069\nv -11.350529 -3.130110 -8.206905\nv -11.545582 -3.130110 -8.206905\nv -11.830662 -3.142755 -8.167987\nv -12.250777 -3.189120 -8.025290\nv -11.020436 -3.012235 -8.146844\nv -11.230495 -3.012235 -8.146844\nv -11.230495 -3.060339 -8.080633\nv -11.350529 -3.060339 -8.080633\nv -11.350529 -3.012235 -8.146844\nv -11.545582 -3.012235 -8.146844\nv -11.830662 -3.036287 -8.113739\nv -12.250777 -3.124479 -7.992352\nv -11.020436 -2.918688 -8.053297\nv -11.230495 -2.918688 -8.053297\nv -11.230495 -2.984899 -8.005193\nv -11.350529 -2.984899 -8.005193\nv -11.350529 -2.918688 -8.053297\nv -11.545582 -2.918688 -8.053297\nv -11.830662 -2.951794 -8.029245\nv -12.250777 -3.073179 -7.941053\nv -11.020436 -2.858628 -7.935422\nv -11.230495 -2.858628 -7.935422\nv -11.230495 -2.936463 -7.910132\nv -11.350529 -2.936463 -7.910132\nv -11.350529 -2.858628 -7.935422\nv -11.545582 -2.858628 -7.935422\nv -11.830662 -2.897546 -7.922777\nv -12.250777 -3.040243 -7.876412\nv -11.020436 -2.837933 -7.804756\nv -11.230495 -2.837933 -7.804756\nv -11.230495 -2.919773 -7.804756\nv -11.350529 -2.919773 -7.804756\nv -11.350529 -2.837933 -7.804756\nv -11.545582 -2.837933 -7.804756\nv -11.830662 -2.878853 -7.804756\nv -12.250777 -3.028894 -7.804756\nv -11.020436 -2.858628 -7.674090\nv -11.230495 -2.858628 -7.674090\nv -11.230495 -2.936463 -7.699380\nv -11.350529 -2.936463 -7.699380\nv -11.350529 -2.858628 -7.674090\nv -11.545582 -2.858628 -7.674090\nv -11.830662 -2.897546 -7.686736\nv -12.250777 -3.040243 -7.733101\nv -11.020436 -2.918688 -7.556215\nv -11.230495 -2.918688 -7.556215\nv -11.230495 -2.984899 -7.604320\nv -11.350529 -2.984899 -7.604320\nv -11.350529 -2.918688 -7.556215\nv -11.545582 -2.918688 -7.556215\nv -11.830662 -2.951794 -7.580268\nv -12.250777 -3.073179 -7.668460\nv -11.020436 -3.012235 -7.462669\nv -11.230495 -3.012235 -7.462669\nv -11.230495 -3.060339 -7.528879\nv -11.350529 -3.060339 -7.528879\nv -11.350529 -3.012235 -7.462669\nv -11.545582 -3.012235 -7.462669\nv -11.830662 -3.036287 -7.495773\nv -12.250777 -3.124479 -7.617160\nv -11.020436 -3.130110 -7.402608\nv -11.230495 -3.130110 -7.402608\nv -11.230495 -3.155400 -7.480443\nv -11.350529 -3.155400 -7.480443\nv -11.350529 -3.130110 -7.402608\nv -11.545582 -3.130110 -7.402608\nv -11.830662 -3.142755 -7.441525\nv -12.250777 -3.189120 -7.584223\nv -11.020436 -3.260776 -7.381912\nv -11.230495 -3.260776 -7.381912\nv -11.230495 -3.260776 -7.463753\nv -11.350529 -3.260776 -7.463753\nv -11.350529 -3.260776 -7.381912\nv -11.545582 -3.260776 -7.381912\nv -11.830662 -3.260776 -7.422833\nv -12.250777 -3.260776 -7.572875\nv -11.020436 -3.391442 -7.402608\nv -11.230495 -3.391442 -7.402608\nv -11.230495 -3.366152 -7.480443\nv -11.350529 -3.366152 -7.480443\nv -11.350529 -3.391442 -7.402608\nv -11.545582 -3.391442 -7.402608\nv -11.830662 -3.378797 -7.441525\nv -12.250777 -3.332431 -7.584223\nv -11.020436 -3.509317 -7.462669\nv -11.230495 -3.509317 -7.462669\nv -11.230495 -3.461213 -7.528879\nv -11.350529 -3.461213 -7.528879\nv -11.350529 -3.509317 -7.462669\nv -11.545582 -3.509317 -7.462669\nv -11.830662 -3.485265 -7.495773\nv -12.250777 -3.397073 -7.617160\nv -11.020436 -3.602864 -7.556215\nv -11.230495 -3.602864 -7.556215\nv -11.230495 -3.536653 -7.604320\nv -11.350529 -3.536653 -7.604320\nv -11.350529 -3.602864 -7.556215\nv -11.545582 -3.602864 -7.556215\nv -11.830662 -3.569759 -7.580268\nv -12.250777 -3.448373 -7.668460\nv -11.020436 -3.662924 -7.674090\nv -11.230495 -3.662924 -7.674090\nv -11.230495 -3.585089 -7.699380\nv -11.350529 -3.585089 -7.699380\nv -11.350529 -3.662924 -7.674090\nv -11.545582 -3.662924 -7.674090\nv -11.830662 -3.624007 -7.686736\nv -12.250777 -3.481309 -7.733101\nv -5.604254 -3.045668 -6.915501\nv -5.606834 -3.083263 -6.557799\nv -5.626184 -3.365223 -6.302299\nv -5.675745 -4.218260 -6.353399\nv -5.687437 -4.406504 -6.608900\nv -5.698397 -4.582982 -7.400952\nv -5.699859 -4.606512 -7.809754\nv -8.793104 -4.447284 -7.809754\nv -8.772169 -4.077933 -6.353399\nv -8.782320 -4.257011 -6.608900\nv -8.791835 -4.424898 -7.262807\nv -9.429673 -4.171594 -6.667359\nv -9.438540 -4.328020 -7.289433\nv -9.439722 -4.348877 -7.809754\nv -9.409577 -3.817026 -6.375685\nv -9.420216 -4.004738 -6.424297\nv -10.099237 -3.700439 -6.490141\nv -10.108667 -3.866822 -6.534874\nv -10.117049 -4.014720 -6.758536\nv -10.124908 -4.153374 -7.330962\nv -10.125957 -4.171861 -7.809754\nv -10.050552 -2.840618 -7.026932\nv -10.052947 -2.875502 -6.713804\nv -10.095495 -2.845614 -7.036639\nv -10.097859 -2.880065 -6.727393\nv -10.115590 -3.138444 -6.506504\nv -10.143543 -3.695266 -6.506504\nv -10.152856 -3.859588 -6.550681\nv -10.161134 -4.005652 -6.771571\nv -10.165792 -4.087813 -7.102905\nv -10.168896 -4.142587 -7.336898\nv -10.169931 -4.160845 -7.809754\nv -10.095495 -2.845614 -7.809754\nv -10.849614 -3.734469 -7.387122\nv -10.852072 -3.770270 -7.809754\nv -10.790585 -2.874309 -7.809754\nv -10.793916 -2.922863 -7.118754\nv -10.795820 -2.950614 -6.842356\nv -10.810103 -3.158745 -6.644928\nv -10.829192 -3.436882 -6.644928\nv -10.836694 -3.546200 -6.684414\nv -10.843364 -3.643371 -6.881841\nv -10.847114 -3.698030 -7.177984\nv -10.903708 -3.505837 -6.730256\nv -10.909923 -3.596375 -6.919640\nv -10.913417 -3.647303 -7.203720\nv -10.915747 -3.681255 -7.404339\nv -10.919445 -3.735150 -7.809754\nv -10.861234 -2.886924 -7.809754\nv -10.865689 -2.951834 -7.146903\nv -10.867463 -2.977690 -6.881764\nv -10.880773 -3.171614 -6.692379\nv -10.896719 -3.403982 -6.692379\nv -10.940977 -3.177297 -6.721902\nv -10.954082 -3.368267 -6.721902\nv -10.959837 -3.452110 -6.753080\nv -10.965577 -3.535767 -6.928073\nv -10.969018 -3.585882 -7.207615\nv -10.971334 -3.619622 -7.407029\nv -10.976580 -3.696075 -7.809754\nv -10.976580 -2.919027 -7.809754\nv -10.927803 -2.985340 -7.148054\nv -10.929544 -3.010710 -6.887908\nv -10.927803 -2.985340 -7.367100\nv -10.976580 -3.134488 -7.461227\nv -10.976580 -3.210303 -7.432866\nv -10.976580 -3.302882 -7.420502\nv -10.976580 -3.399073 -7.431429\nv -10.976580 -3.482705 -7.462277\nv -10.976580 -3.075567 -7.497484\nv -10.976580 -3.005313 -7.565140\nv -10.976580 -2.942908 -7.675378\nv -10.976580 -3.544185 -7.501006\nv -10.976580 -3.614943 -7.571677\nv -10.976580 -3.674454 -7.681702\nv -10.864958 -2.941189 -7.366332\nv -10.793916 -2.922863 -7.347500\nv -10.791968 -2.894478 -7.655669\nv -10.793916 -2.922863 -7.501585\nv -10.862685 -2.908073 -7.661946\nv -10.864714 -2.937641 -7.514138\nv -10.976580 -2.969925 -7.617880\nv -10.976580 -2.926240 -7.741722\nv -10.861398 -2.889305 -7.735850\nv -10.790907 -2.879031 -7.732711\nv -10.095495 -2.845614 -7.734224\nv -10.793510 -2.916950 -7.578627\nv -10.864188 -2.929953 -7.588042\nv -10.916005 -3.685027 -7.539477\nv -10.918537 -3.721916 -7.674615\nv -10.849893 -3.738518 -7.527999\nv -10.851306 -3.759124 -7.668877\nv -10.169773 -4.158063 -7.737712\nv -10.976580 -3.650354 -7.623618\nv -10.976580 -3.691600 -7.744654\nv -10.919316 -3.733264 -7.742184\nv -10.917597 -3.708203 -7.607047\nv -10.850925 -3.753552 -7.598438\nv -10.852014 -3.769428 -7.739315\nv -10.966999 -3.556479 -7.210015\nv -10.969301 -3.590019 -7.407848\nv -10.969116 -3.587336 -7.502274\nv -10.967427 -3.562720 -7.477688\nv -10.962837 -3.495824 -7.435546\nv -10.956669 -3.405944 -7.402394\nv -10.949576 -3.302590 -7.390654\nv -10.942747 -3.203088 -7.403942\nv -10.937145 -3.121459 -7.434478\nv -10.932747 -3.057376 -7.473910\nv -10.930774 -3.028624 -7.501601\nv -10.929833 -3.014908 -7.365607\nv -10.929833 -3.014908 -7.148862\nv -10.931550 -3.039934 -6.892235\nv -10.941505 -3.184999 -6.744045\nv -10.953607 -3.361330 -6.744045\nv -10.958202 -3.428289 -6.768944\nv -10.963595 -3.506877 -6.933335\nv -10.938142 -3.135979 -6.764561\nv -10.947556 -3.273165 -6.744045\nv -10.703084 -3.602425 -7.502274\nv -10.701394 -3.577809 -7.477688\nv -10.695585 -3.493154 -7.428996\nv -10.690635 -3.421033 -7.402394\nv -10.683542 -3.317679 -7.390654\nv -10.675801 -3.204880 -7.408916\nv -10.671111 -3.136547 -7.434478\nv -10.667958 -3.090606 -7.462748\nv -10.664742 -3.043713 -7.501601\nv -10.663799 -3.029997 -7.365607\nv -10.663799 -3.029997 -7.148862\nv -10.665517 -3.055023 -6.892235\nv -10.672108 -3.151068 -6.764561\nv -10.675473 -3.200088 -6.744045\nv -10.681522 -3.288253 -6.744045\nv -10.687572 -3.376419 -6.744045\nv -10.692168 -3.443377 -6.768944\nv -10.697561 -3.521966 -6.933335\nv -10.700966 -3.571568 -7.210015\nv -10.703267 -3.605108 -7.407848\nv -10.679671 -3.261280 -7.399785\nv -10.678497 -3.244171 -6.744045\nv -10.684547 -3.332336 -6.744045\nv -10.687088 -3.369356 -7.396524\nv -10.666548 -3.070058 -6.894461\nv -10.667624 -3.085735 -6.858735\nv -10.666773 -3.073343 -7.454488\nv -10.665701 -3.057709 -7.467442\nv -10.665153 -3.049709 -7.364613\nv -10.665153 -3.049709 -7.149400\nv -10.669847 -3.118121 -6.792231\nv -10.670973 -3.134521 -6.785343\nv -10.670075 -3.121449 -7.425873\nv -10.669024 -3.106132 -7.435299\nv -10.673228 -3.167403 -6.771856\nv -10.674351 -3.183747 -6.765015\nv -10.674444 -3.185104 -7.395232\nv -10.672491 -3.156667 -7.405869\nv -10.676491 -3.214939 -6.755114\nv -10.677500 -3.229636 -6.755114\nv -10.678375 -3.242393 -7.383948\nv -10.677070 -3.223362 -7.387062\nv -10.682230 -3.298563 -7.374825\nv -10.680923 -3.279529 -7.377938\nv -10.679528 -3.259202 -6.755112\nv -10.680537 -3.273899 -6.755112\nv -10.682565 -3.303430 -6.755082\nv -10.683573 -3.318127 -6.755082\nv -10.685872 -3.351629 -7.377354\nv -10.684680 -3.334273 -7.375363\nv -10.689409 -3.403179 -7.383227\nv -10.688219 -3.385825 -7.381236\nv -10.685596 -3.347620 -6.755079\nv -10.686606 -3.362317 -6.755079\nv -10.689026 -3.397577 -6.768394\nv -10.690856 -3.424258 -6.778317\nv -10.694133 -3.471999 -7.400147\nv -10.691947 -3.440150 -7.388400\nv -10.693968 -3.469608 -6.867608\nv -10.696224 -3.502481 -6.936371\nv -10.699877 -3.555695 -7.442195\nv -10.696899 -3.512312 -7.417243\nv -10.763438 -3.052165 -7.467442\nv -10.762890 -3.044165 -7.364613\nv -10.762890 -3.044165 -7.149400\nv -10.764285 -3.064513 -6.894461\nv -10.765361 -3.080191 -6.858735\nv -10.764511 -3.067800 -7.454488\nv -10.768709 -3.128976 -6.785343\nv -10.767813 -3.115905 -7.425873\nv -10.766762 -3.100588 -7.435299\nv -10.767585 -3.112577 -6.792231\nv -10.772087 -3.178202 -6.765015\nv -10.772182 -3.179560 -7.395232\nv -10.770229 -3.151123 -7.405869\nv -10.770967 -3.161859 -6.771856\nv -10.775237 -3.224093 -6.755114\nv -10.776113 -3.236851 -7.383948\nv -10.774807 -3.217819 -7.387062\nv -10.774230 -3.209396 -6.755114\nv -10.778661 -3.273985 -7.377938\nv -10.777267 -3.253658 -6.755112\nv -10.778275 -3.268356 -6.755112\nv -10.779968 -3.293020 -7.374825\nv -10.781310 -3.312583 -6.755082\nv -10.783609 -3.346085 -7.377354\nv -10.782417 -3.328729 -7.375363\nv -10.780301 -3.297886 -6.755082\nv -10.785955 -3.380282 -7.381236\nv -10.783335 -3.342076 -6.755079\nv -10.784343 -3.356774 -6.755079\nv -10.787147 -3.397636 -7.383227\nv -10.788594 -3.418716 -6.778317\nv -10.791870 -3.466456 -7.400147\nv -10.789684 -3.434608 -7.388400\nv -10.786762 -3.392034 -6.768394\nv -10.793962 -3.496937 -6.936371\nv -10.797614 -3.550152 -7.442195\nv -10.794637 -3.506769 -7.417243\nv -10.791706 -3.464065 -6.867608\nv -10.178091 -4.145419 -7.731470\nv -10.177233 -4.130261 -7.333976\nv -10.174192 -4.076615 -7.103649\nv -10.169631 -3.996144 -6.775059\nv -10.161524 -3.853087 -6.555999\nv -10.152402 -3.692146 -6.512187\nv -10.125025 -3.144249 -6.512187\nv -10.107658 -2.891188 -6.731247\nv -10.105342 -2.857446 -7.037930\nv -10.105342 -2.857446 -7.728011\nv -10.060410 -2.852605 -7.028305\nv -10.062756 -2.886770 -6.717771\nv -10.080341 -3.143009 -6.495960\nv -10.108093 -3.697274 -6.495960\nv -10.117331 -3.860235 -6.540322\nv -10.125540 -4.005088 -6.762133\nv -10.130157 -4.086569 -7.094849\nv -10.133236 -4.140889 -7.328089\nv -10.134264 -4.158996 -7.802914\nv -10.178246 -4.148144 -7.802914\nv -10.107316 -3.017861 -6.550684\nv -10.101406 -2.931743 -6.624306\nv -10.792625 -2.985103 -6.747612\nv -10.803439 -3.061613 -6.684415\nv -10.116920 -3.026148 -6.556000\nv -10.111132 -2.941802 -6.629014\nv -10.076964 -3.017854 -6.536889\nv -10.067183 -2.931941 -6.618696\nv -10.064768 -3.012824 -6.531336\nv -10.055302 -2.920542 -6.607018\nv -5.617154 -3.233635 -6.353402\nv -5.610704 -3.139658 -6.438561\nv -10.872756 -3.010002 -6.784565\nv -10.874560 -3.081112 -6.730258\nv -10.918852 -3.027771 -6.805156\nv -10.927044 -3.096379 -6.744160\nv -10.933702 -3.071286 -6.820794\nv -10.935899 -3.103298 -6.778241\nv -10.667668 -3.086375 -6.820794\nv -10.668371 -3.096611 -6.809628\nv -10.668668 -3.100945 -6.858883\nv -10.669111 -3.107405 -6.787461\nv -10.669865 -3.118387 -6.778241\nv -9.376504 -3.164394 -6.375685\nv -9.374578 -3.136331 -6.380550\nv -10.070231 -3.123550 -6.494639\nv -10.074047 -3.139086 -6.492081\nv -10.071918 -3.151927 -6.490141\nv -8.744912 -3.183453 -6.304470\nv -8.705025 -3.170098 -6.302299\nv -8.723731 -3.155941 -6.307172\nv -8.740156 -3.860222 -6.302299\nv -8.779946 -3.874710 -6.304470\nv -8.761690 -3.893033 -6.306501\nv -5.663548 -4.021878 -6.306013\nv -5.661578 -3.990148 -6.302299\nv -5.694130 -4.514290 -7.003147\nv -5.693827 -4.509383 -6.981268\nv -8.787866 -4.354872 -6.981223\nv -8.788133 -4.359554 -7.003165\nv -9.434834 -4.262636 -7.021020\nv -9.435092 -4.267223 -7.042970\nv -10.121611 -4.095178 -7.083003\nv -10.124562 -4.094132 -7.094304\nv -10.121863 -4.099637 -7.105155\nv -9.352186 -3.184893 -6.372790\nv -8.772961 -3.217316 -6.307365\nv -8.783243 -3.367148 -6.307365\nv -9.362436 -3.334259 -6.372790\nv -8.769373 -3.217519 -6.317497\nv -8.779655 -3.367351 -6.317497\nv -9.358848 -3.334462 -6.382922\nv -9.348598 -3.185096 -6.382922\nv -8.797861 -3.351476 -6.319668\nv -9.338615 -3.320770 -6.380751\nv -9.330393 -3.200956 -6.380751\nv -8.789609 -3.231227 -6.319668\nv -9.345481 -3.320380 -6.361354\nv -9.337258 -3.200567 -6.361354\nv -8.796477 -3.230838 -6.300271\nv -8.804728 -3.351087 -6.300271\nv -9.375714 -2.866187 -6.619084\nv -9.336617 -2.865446 -6.616936\nv -9.333851 -2.828718 -6.946622\nv -9.353376 -2.827387 -6.970182\nv -9.372951 -2.827758 -6.960941\nv -9.378875 -2.922117 -6.508090\nv -9.340570 -2.922399 -6.503335\nv -9.346321 -3.007504 -6.430569\nv -9.385552 -3.016811 -6.427237\nv -9.367294 -3.030214 -6.419430\nv -8.688614 -2.930836 -6.438561\nv -8.727546 -2.929916 -6.440538\nv -8.733787 -3.019580 -6.363892\nv -8.715983 -3.043055 -6.348532\nv -8.695449 -3.030520 -6.353402\nv -8.684510 -2.871017 -6.557799\nv -8.723493 -2.870226 -6.559609\nv -8.721092 -2.831671 -6.905707\nv -8.681774 -2.831140 -6.915501\nv -8.701397 -2.830528 -6.926649\nv -5.564119 -3.085686 -6.557799\nv -5.561539 -3.048091 -6.915501\nv -5.657145 -4.609190 -7.809754\nv -5.655683 -4.585659 -7.400952\nv -5.651416 -4.516966 -7.003147\nv -5.651112 -4.512061 -6.981268\nv -5.644723 -4.409181 -6.608900\nv -5.633029 -4.220937 -6.353399\nv -5.620833 -4.024555 -6.306013\nv -5.618863 -3.992825 -6.302299\nv -5.583469 -3.367645 -6.302299\nv -5.574439 -3.236058 -6.353402\nv -5.567990 -3.142080 -6.438561\nv -3.714288 -3.534387 -6.310849\nv -3.706891 -3.426612 -6.360658\nv -3.701609 -3.349641 -6.444567\nv -3.698439 -3.303452 -6.562778\nv -3.696326 -3.272660 -6.918799\nv -3.780541 -4.673953 -7.809754\nv -3.779174 -4.651937 -7.402804\nv -3.775182 -4.587667 -7.007183\nv -3.774898 -4.583077 -6.985438\nv -3.768919 -4.486820 -6.615671\nv -3.757981 -4.310695 -6.362765\nv -3.746568 -4.126955 -6.316265\nv -2.405952 -4.367528 -6.402800\nv -2.396371 -4.213235 -6.357556\nv -2.369709 -3.694336 -6.352658\nv -2.363921 -3.610012 -6.401307\nv -2.359789 -3.549789 -6.483047\nv -2.357308 -3.513650 -6.598038\nv -2.355654 -3.489559 -6.944050\nv -2.426847 -4.703931 -7.809754\nv -2.420398 -4.600109 -7.029488\nv -2.420160 -4.596255 -7.008347\nv -2.415139 -4.515425 -6.648786\nv -1.080756 -4.602692 -7.051085\nv -1.080566 -4.599664 -7.030524\nv -1.076622 -4.536158 -6.680832\nv -1.069405 -4.419959 -6.441512\nv -1.061876 -4.298736 -6.397473\nv -1.040789 -3.852964 -6.393075\nv -1.036640 -3.792505 -6.440604\nv -1.033678 -3.749327 -6.520251\nv -1.031899 -3.723417 -6.632133\nv -1.030713 -3.706144 -6.968467\nv -1.089484 -4.743258 -7.809754\nv 0.107654 -4.757666 -7.809754\nv 0.120822 -4.545649 -7.070304\nv 0.120926 -4.543964 -7.050255\nv 0.123121 -4.508635 -6.709171\nv 0.127136 -4.443990 -6.475494\nv 0.131325 -4.376551 -6.432427\nv 0.145204 -4.028414 -6.428818\nv 0.148718 -3.977221 -6.475263\nv 0.151227 -3.940660 -6.552975\nv 0.152732 -3.918720 -6.662065\nv 0.153736 -3.904094 -6.989873\nv 1.882737 -4.200738 -6.704650\nv 1.882944 -4.197714 -7.020393\nv 1.875734 -4.302797 -7.809754\nv 1.875838 -4.301285 -7.448903\nv 1.876140 -4.296871 -7.097760\nv 1.876162 -4.296556 -7.078447\nv 1.876616 -4.289946 -6.749756\nv 1.877446 -4.277849 -6.524225\nv 1.878312 -4.265230 -6.482397\nv 1.881180 -4.223417 -6.479119\nv 1.881907 -4.212833 -6.524227\nv 1.882426 -4.205274 -6.599397\nv 0.120798 -4.546046 -7.809754\nv 0.110783 -4.707285 -7.389594\nv 0.114899 -4.641012 -7.296877\nv -1.083622 -4.648871 -7.281193\nv -1.086575 -4.696403 -7.377812\nv -2.423688 -4.653055 -7.268138\nv -2.425100 -4.675796 -7.390059\nv -2.425507 -4.682345 -7.438998\nv -2.426126 -4.692340 -7.561713\nv -1.088930 -4.734306 -7.572674\nv -1.088195 -4.722509 -7.450315\nv 0.107958 -4.752768 -7.582558\nv 0.108888 -4.737779 -7.461129\nv 0.120816 -4.545755 -7.267303\nv 0.120816 -4.545755 -8.352203\nv 0.108888 -4.737779 -8.158377\nv 0.107958 -4.752768 -8.036947\nv -1.088195 -4.722509 -8.169191\nv -1.088930 -4.734306 -8.046830\nv -2.426126 -4.692340 -8.057793\nv -2.425507 -4.682345 -8.180507\nv -2.425100 -4.675796 -8.229447\nv -2.423688 -4.653055 -8.351367\nv -1.086575 -4.696403 -8.241693\nv -1.083622 -4.648871 -8.338312\nv 0.114899 -4.641012 -8.322629\nv 0.110783 -4.707285 -8.229913\nv 1.882426 -4.205274 -9.020109\nv 1.881907 -4.212833 -9.095280\nv 1.881180 -4.223417 -9.140387\nv 1.878312 -4.265230 -9.137110\nv 1.877446 -4.277849 -9.095281\nv 1.876616 -4.289946 -8.869750\nv 1.876162 -4.296556 -8.541059\nv 1.876140 -4.296871 -8.521746\nv 1.875838 -4.301285 -8.170603\nv 1.882944 -4.197714 -8.599113\nv 1.882737 -4.200738 -8.914856\nv 0.153736 -3.904094 -8.629633\nv 0.152732 -3.918720 -8.957441\nv 0.151227 -3.940660 -9.066530\nv 0.148718 -3.977221 -9.144243\nv 0.145204 -4.028414 -9.190687\nv 0.131325 -4.376551 -9.187078\nv 0.127136 -4.443990 -9.144011\nv 0.123121 -4.508635 -8.910334\nv 0.120926 -4.543964 -8.569250\nv 0.120822 -4.545649 -8.549202\nv -1.030713 -3.706144 -8.651039\nv -1.031899 -3.723417 -8.987371\nv -1.033678 -3.749327 -9.099255\nv -1.036640 -3.792505 -9.178901\nv -1.040789 -3.852964 -9.226432\nv -1.061876 -4.298736 -9.222033\nv -1.069405 -4.419959 -9.177994\nv -1.076622 -4.536158 -8.938673\nv -1.080566 -4.599664 -8.588981\nv -1.080756 -4.602692 -8.568422\nv -2.415139 -4.515425 -8.970719\nv -2.420160 -4.596255 -8.611160\nv -2.420398 -4.600109 -8.590017\nv -2.355654 -3.489559 -8.675455\nv -2.357308 -3.513650 -9.021467\nv -2.359789 -3.549789 -9.136459\nv -2.363921 -3.610012 -9.218200\nv -2.369709 -3.694336 -9.266848\nv -2.396371 -4.213235 -9.261950\nv -2.405952 -4.367528 -9.216706\nv -3.746568 -4.126955 -9.303240\nv -3.757981 -4.310695 -9.256742\nv -3.768919 -4.486820 -9.003836\nv -3.774898 -4.583077 -8.634068\nv -3.775182 -4.587667 -8.612323\nv -3.779174 -4.651937 -8.216702\nv -3.696326 -3.272660 -8.700706\nv -3.698439 -3.303452 -9.056728\nv -3.701609 -3.349641 -9.174938\nv -3.706891 -3.426612 -9.258848\nv -3.714288 -3.534387 -9.308657\nv -5.567990 -3.142080 -9.180944\nv -5.574439 -3.236058 -9.266105\nv -5.583469 -3.367645 -9.317207\nv -5.618863 -3.992825 -9.317207\nv -5.620833 -4.024555 -9.313493\nv -5.633029 -4.220937 -9.266108\nv -5.644723 -4.409181 -9.010607\nv -5.651112 -4.512061 -8.638238\nv -5.651416 -4.516966 -8.616358\nv -5.655683 -4.585659 -8.218554\nv -5.561539 -3.048091 -8.704005\nv -5.564119 -3.085686 -9.061707\nv -8.701397 -2.830528 -8.692857\nv -8.681774 -2.831140 -8.704005\nv -8.721092 -2.831671 -8.713798\nv -8.723493 -2.870226 -9.059896\nv -8.684510 -2.871017 -9.061707\nv -8.695449 -3.030520 -9.266105\nv -8.715983 -3.043055 -9.270974\nv -8.733787 -3.019580 -9.255613\nv -8.727546 -2.929916 -9.178968\nv -8.688614 -2.930836 -9.180944\nv -9.367294 -3.030214 -9.200075\nv -9.385552 -3.016811 -9.192268\nv -9.346321 -3.007504 -9.188937\nv -9.340570 -2.922399 -9.116172\nv -9.378875 -2.922117 -9.111416\nv -9.372951 -2.827758 -8.658566\nv -9.353376 -2.827387 -8.649323\nv -9.333851 -2.828718 -8.672883\nv -9.336617 -2.865446 -9.002569\nv -9.375714 -2.866187 -9.000422\nv -8.804728 -3.351087 -9.319235\nv -8.796477 -3.230838 -9.319235\nv -9.337258 -3.200567 -9.258152\nv -9.345481 -3.320380 -9.258152\nv -8.789609 -3.231227 -9.299838\nv -9.330393 -3.200956 -9.238754\nv -9.338615 -3.320770 -9.238754\nv -8.797861 -3.351476 -9.299838\nv -9.348598 -3.185096 -9.236584\nv -9.358848 -3.334462 -9.236584\nv -8.779655 -3.367351 -9.302009\nv -8.769373 -3.217519 -9.302009\nv -9.362436 -3.334259 -9.246715\nv -8.783243 -3.367148 -9.312140\nv -8.772961 -3.217316 -9.312140\nv -9.352186 -3.184893 -9.246715\nv -10.121863 -4.099637 -8.514350\nv -10.124562 -4.094132 -8.525202\nv -10.121611 -4.095178 -8.536504\nv -9.435092 -4.267223 -8.576536\nv -9.434834 -4.262636 -8.598486\nv -8.788133 -4.359554 -8.616341\nv -8.787866 -4.354872 -8.638283\nv -5.693827 -4.509383 -8.638238\nv -5.694130 -4.514290 -8.616358\nv -5.661578 -3.990148 -9.317207\nv -5.663548 -4.021878 -9.313493\nv -8.761690 -3.893033 -9.313005\nv -8.779946 -3.874710 -9.315035\nv -8.740156 -3.860222 -9.317207\nv -8.723731 -3.155941 -9.312334\nv -8.705025 -3.170098 -9.317207\nv -8.744912 -3.183453 -9.315035\nv -10.071918 -3.151927 -9.129366\nv -10.074047 -3.139086 -9.127425\nv -10.070231 -3.123550 -9.124866\nv -9.374578 -3.136331 -9.238956\nv -9.376504 -3.164394 -9.243820\nv -10.669865 -3.118387 -8.841265\nv -10.669111 -3.107405 -8.832044\nv -10.668668 -3.100945 -8.760623\nv -10.668371 -3.096611 -8.809876\nv -10.667668 -3.086375 -8.798712\nv -10.935899 -3.103298 -8.841265\nv -10.933702 -3.071286 -8.798712\nv -10.927044 -3.096379 -8.875345\nv -10.918852 -3.027771 -8.814350\nv -10.874560 -3.081112 -8.889249\nv -10.872756 -3.010002 -8.834940\nv -5.610704 -3.139658 -9.180944\nv -5.617154 -3.233635 -9.266105\nv -10.055302 -2.920542 -9.012486\nv -10.064768 -3.012824 -9.088171\nv -10.067183 -2.931941 -9.000811\nv -10.076964 -3.017854 -9.082617\nv -10.111132 -2.941802 -8.990492\nv -10.116920 -3.026148 -9.063504\nv -10.803439 -3.061613 -8.935091\nv -10.792625 -2.985103 -8.871894\nv -10.101406 -2.931743 -8.995199\nv -10.107316 -3.017861 -9.068822\nv -10.178246 -4.148144 -7.816592\nv -10.134264 -4.158996 -7.816592\nv -10.133236 -4.140889 -8.291418\nv -10.130157 -4.086569 -8.524658\nv -10.125540 -4.005088 -8.857373\nv -10.117331 -3.860235 -9.079184\nv -10.108093 -3.697274 -9.123546\nv -10.080341 -3.143009 -9.123546\nv -10.062756 -2.886770 -8.901735\nv -10.060410 -2.852605 -8.591201\nv -10.105342 -2.857446 -7.891495\nv -10.105342 -2.857446 -8.581574\nv -10.107658 -2.891188 -8.888258\nv -10.125025 -3.144249 -9.107319\nv -10.152402 -3.692146 -9.107319\nv -10.161524 -3.853087 -9.063507\nv -10.169631 -3.996144 -8.844447\nv -10.174192 -4.076615 -8.515856\nv -10.177233 -4.130261 -8.285530\nv -10.178091 -4.145419 -7.888037\nv -10.791706 -3.464065 -8.751898\nv -10.794637 -3.506769 -8.202265\nv -10.797614 -3.550152 -8.177311\nv -10.793962 -3.496937 -8.683134\nv -10.786762 -3.392034 -8.851112\nv -10.789684 -3.434608 -8.231107\nv -10.791870 -3.466456 -8.219358\nv -10.788594 -3.418716 -8.841188\nv -10.787147 -3.397636 -8.236279\nv -10.784343 -3.356774 -8.864428\nv -10.783335 -3.342076 -8.864428\nv -10.785955 -3.380282 -8.238271\nv -10.780301 -3.297886 -8.864424\nv -10.782417 -3.328729 -8.244143\nv -10.783609 -3.346085 -8.242153\nv -10.781310 -3.312583 -8.864424\nv -10.779968 -3.293020 -8.244681\nv -10.778275 -3.268356 -8.864393\nv -10.777267 -3.253658 -8.864393\nv -10.778661 -3.273985 -8.241568\nv -10.774230 -3.209396 -8.864392\nv -10.774807 -3.217819 -8.232444\nv -10.776113 -3.236851 -8.235559\nv -10.775237 -3.224093 -8.864392\nv -10.770967 -3.161859 -8.847651\nv -10.770229 -3.151123 -8.213635\nv -10.772182 -3.179560 -8.224275\nv -10.772087 -3.178202 -8.854490\nv -10.767585 -3.112577 -8.827274\nv -10.766762 -3.100588 -8.184207\nv -10.767813 -3.115905 -8.193632\nv -10.768709 -3.128976 -8.834162\nv -10.764511 -3.067800 -8.165018\nv -10.765361 -3.080191 -8.760771\nv -10.764285 -3.064513 -8.725043\nv -10.762890 -3.044165 -8.470105\nv -10.762890 -3.044165 -8.254894\nv -10.763438 -3.052165 -8.152064\nv -10.696899 -3.512312 -8.202265\nv -10.699877 -3.555695 -8.177311\nv -10.696224 -3.502481 -8.683134\nv -10.693968 -3.469608 -8.751898\nv -10.691947 -3.440150 -8.231107\nv -10.694133 -3.471999 -8.219358\nv -10.690856 -3.424258 -8.841188\nv -10.689026 -3.397577 -8.851112\nv -10.686606 -3.362317 -8.864428\nv -10.685596 -3.347620 -8.864428\nv -10.688219 -3.385825 -8.238271\nv -10.689409 -3.403179 -8.236279\nv -10.684680 -3.334273 -8.244143\nv -10.685872 -3.351629 -8.242153\nv -10.683573 -3.318127 -8.864424\nv -10.682565 -3.303430 -8.864424\nv -10.680537 -3.273899 -8.864393\nv -10.679528 -3.259202 -8.864393\nv -10.680923 -3.279529 -8.241568\nv -10.682230 -3.298563 -8.244681\nv -10.677070 -3.223362 -8.232444\nv -10.678375 -3.242393 -8.235559\nv -10.677500 -3.229636 -8.864392\nv -10.676491 -3.214939 -8.864392\nv -10.672491 -3.156667 -8.213635\nv -10.674444 -3.185104 -8.224275\nv -10.674351 -3.183747 -8.854490\nv -10.673228 -3.167403 -8.847651\nv -10.669024 -3.106132 -8.184207\nv -10.670075 -3.121449 -8.193632\nv -10.670973 -3.134521 -8.834162\nv -10.669847 -3.118121 -8.827274\nv -10.665153 -3.049709 -8.470105\nv -10.665153 -3.049709 -8.254894\nv -10.665701 -3.057709 -8.152064\nv -10.666773 -3.073343 -8.165018\nv -10.667624 -3.085735 -8.760771\nv -10.666548 -3.070058 -8.725043\nv -10.687088 -3.369356 -8.222983\nv -10.684547 -3.332336 -8.875461\nv -10.678497 -3.244171 -8.875461\nv -10.679671 -3.261280 -8.219721\nv -10.703267 -3.605108 -8.211658\nv -10.700966 -3.571568 -8.409490\nv -10.697561 -3.521966 -8.686171\nv -10.692168 -3.443377 -8.850561\nv -10.687572 -3.376419 -8.875461\nv -10.681522 -3.288253 -8.875461\nv -10.675473 -3.200088 -8.875461\nv -10.672108 -3.151068 -8.854944\nv -10.665517 -3.055023 -8.727270\nv -10.663799 -3.029997 -8.470644\nv -10.663799 -3.029997 -8.253899\nv -10.664742 -3.043713 -8.117907\nv -10.667958 -3.090606 -8.156759\nv -10.671111 -3.136547 -8.185029\nv -10.675801 -3.204880 -8.210590\nv -10.683542 -3.317679 -8.228852\nv -10.690635 -3.421033 -8.217112\nv -10.695585 -3.493154 -8.190510\nv -10.701394 -3.577809 -8.141819\nv -10.703084 -3.602425 -8.117233\nv -10.947556 -3.273165 -8.875461\nv -10.938142 -3.135979 -8.854944\nv -10.963595 -3.506877 -8.686171\nv -10.958202 -3.428289 -8.850561\nv -10.953607 -3.361330 -8.875461\nv -10.941505 -3.184999 -8.875461\nv -10.931550 -3.039934 -8.727270\nv -10.929833 -3.014908 -8.470644\nv -10.929833 -3.014908 -8.253899\nv -10.930774 -3.028624 -8.117907\nv -10.932747 -3.057376 -8.145596\nv -10.937145 -3.121459 -8.185029\nv -10.942747 -3.203088 -8.215565\nv -10.949576 -3.302590 -8.228852\nv -10.956669 -3.405944 -8.217112\nv -10.962837 -3.495824 -8.183960\nv -10.967427 -3.562720 -8.141819\nv -10.969116 -3.587336 -8.117233\nv -10.969301 -3.590019 -8.211658\nv -10.966999 -3.556479 -8.409490\nv -10.852014 -3.769428 -7.880191\nv -10.850925 -3.753552 -8.021069\nv -10.917597 -3.708203 -8.012461\nv -10.919316 -3.733264 -7.877322\nv -10.976580 -3.691600 -7.874853\nv -10.976580 -3.650354 -7.995888\nv -10.169773 -4.158063 -7.881795\nv -10.851306 -3.759124 -7.950629\nv -10.849893 -3.738518 -8.091507\nv -10.918537 -3.721916 -7.944892\nv -10.916005 -3.685027 -8.080029\nv -10.864188 -2.929953 -8.031465\nv -10.793510 -2.916950 -8.040879\nv -10.095495 -2.845614 -7.885282\nv -10.790907 -2.879031 -7.886795\nv -10.861398 -2.889305 -7.883656\nv -10.976580 -2.926240 -7.877784\nv -10.976580 -2.969925 -8.001626\nv -10.864714 -2.937641 -8.105368\nv -10.862685 -2.908073 -7.957560\nv -10.793916 -2.922863 -8.117922\nv -10.791968 -2.894478 -7.963837\nv -10.793916 -2.922863 -8.272005\nv -10.864958 -2.941189 -8.253176\nv -10.976580 -3.674454 -7.937804\nv -10.976580 -3.614943 -8.047831\nv -10.976580 -3.544185 -8.118501\nv -10.976580 -2.942908 -7.944129\nv -10.976580 -3.005313 -8.054365\nv -10.976580 -3.075567 -8.122023\nv -10.976580 -3.482705 -8.157230\nv -10.976580 -3.399073 -8.188078\nv -10.976580 -3.302882 -8.199004\nv -10.976580 -3.210303 -8.186641\nv -10.976580 -3.134488 -8.158280\nv -10.927803 -2.985340 -8.252405\nv -10.929544 -3.010710 -8.731598\nv -10.927803 -2.985340 -8.471452\nv -10.971334 -3.619622 -8.212477\nv -10.969018 -3.585882 -8.411890\nv -10.965577 -3.535767 -8.691434\nv -10.959837 -3.452110 -8.866425\nv -10.954082 -3.368267 -8.897604\nv -10.940977 -3.177297 -8.897604\nv -10.896719 -3.403982 -8.927127\nv -10.880773 -3.171614 -8.927127\nv -10.867463 -2.977690 -8.737743\nv -10.865689 -2.951834 -8.472603\nv -10.915747 -3.681255 -8.215167\nv -10.913417 -3.647303 -8.415787\nv -10.909923 -3.596375 -8.699865\nv -10.903708 -3.505837 -8.889250\nv -10.847114 -3.698030 -8.441523\nv -10.843364 -3.643371 -8.737665\nv -10.836694 -3.546200 -8.935091\nv -10.829192 -3.436882 -8.974577\nv -10.810103 -3.158745 -8.974577\nv -10.795820 -2.950614 -8.777151\nv -10.793916 -2.922863 -8.500750\nv -10.849614 -3.734469 -8.232384\nv -10.168896 -4.142587 -8.282608\nv -10.165792 -4.087813 -8.516600\nv -10.161134 -4.005652 -8.847935\nv -10.152856 -3.859588 -9.068825\nv -10.143543 -3.695266 -9.113003\nv -10.115590 -3.138444 -9.113003\nv -10.097859 -2.880065 -8.892113\nv -10.095495 -2.845614 -8.582868\nv -10.052947 -2.875502 -8.905703\nv -10.050552 -2.840618 -8.592573\nv -10.124908 -4.153374 -8.288545\nv -10.117049 -4.014720 -8.860970\nv -10.108667 -3.866822 -9.084632\nv -10.099237 -3.700439 -9.129366\nv -9.420216 -4.004738 -9.195209\nv -9.409577 -3.817026 -9.243820\nv -9.438540 -4.328020 -8.330071\nv -9.429673 -4.171594 -8.952147\nv -8.791835 -4.424898 -8.356699\nv -8.782320 -4.257011 -9.010607\nv -8.772169 -4.077933 -9.266108\nv -5.698397 -4.582982 -8.218554\nv -5.687437 -4.406504 -9.010607\nv -5.675745 -4.218260 -9.266108\nv -5.626184 -3.365223 -9.317207\nv -5.606834 -3.083263 -9.061707\nv -5.604254 -3.045668 -8.704005\nv -0.912269 -3.725938 -8.648899\nv -0.793825 -3.745733 -8.646758\nv -0.675379 -3.765529 -8.644618\nv -0.556934 -3.785324 -8.642477\nv -0.438490 -3.805119 -8.640336\nv -0.320045 -3.824914 -8.638196\nv -0.201599 -3.844709 -8.636055\nv -0.083154 -3.864504 -8.633915\nv 0.035290 -3.884299 -8.631774\nv -0.912269 -3.725938 -6.970606\nv -0.793825 -3.745733 -6.972747\nv -0.675379 -3.765529 -6.974888\nv -0.556934 -3.785324 -6.977028\nv -0.438490 -3.805119 -6.979169\nv -0.320045 -3.824914 -6.981310\nv -0.201599 -3.844709 -6.983451\nv -0.083154 -3.864504 -6.985591\nv 0.035290 -3.884299 -6.987732\nv -0.940512 -3.761913 -6.998067\nv -1.022999 -3.748127 -6.995997\nv -1.022999 -3.748127 -8.623508\nv -0.940512 -3.761913 -8.621439\nv -0.822067 -3.781708 -7.000137\nv -0.904554 -3.767922 -6.998067\nv -0.904554 -3.767922 -8.621439\nv -0.822067 -3.781708 -8.619368\nv -0.786108 -3.787717 -8.619368\nv -0.703624 -3.801503 -8.617297\nv -0.703624 -3.801503 -7.002208\nv -0.786108 -3.787717 -7.000137\nv -0.585178 -3.821298 -7.004279\nv -0.667664 -3.807512 -7.002208\nv -0.667664 -3.807512 -8.617297\nv -0.585178 -3.821298 -8.615227\nv -0.466733 -3.841093 -7.006350\nv -0.549219 -3.827307 -7.004279\nv -0.549219 -3.827307 -8.615227\nv -0.466733 -3.841093 -8.613155\nv -0.430774 -3.847102 -8.613155\nv -0.348290 -3.860888 -8.611086\nv -0.348290 -3.860888 -7.008420\nv -0.430774 -3.847102 -7.006350\nv -0.229844 -3.880683 -7.010490\nv -0.312330 -3.866898 -7.008420\nv -0.312330 -3.866898 -8.611086\nv -0.229844 -3.880683 -8.609015\nv -0.193885 -3.886692 -8.609015\nv -0.111399 -3.900478 -8.606945\nv -0.111399 -3.900478 -7.012561\nv -0.193885 -3.886692 -7.010490\nv 0.007047 -3.920273 -7.014632\nv -0.075441 -3.906488 -7.012561\nv -0.075441 -3.906488 -8.606945\nv 0.007047 -3.920273 -8.604875\nv 0.125491 -3.940068 -7.016702\nv 0.043007 -3.926283 -7.014632\nv 0.043007 -3.926283 -8.604875\nv 0.125491 -3.940068 -8.602803\nv -5.604254 -3.045668 6.915991\nv -5.606834 -3.083263 6.558289\nv -5.626184 -3.365223 6.302789\nv -5.675745 -4.218260 6.353889\nv -5.687437 -4.406504 6.609390\nv -5.698397 -4.582982 7.401442\nv -5.699859 -4.606512 7.810244\nv -8.793104 -4.447284 7.810244\nv -8.772169 -4.077933 6.353889\nv -8.782320 -4.257011 6.609390\nv -8.791835 -4.424898 7.263297\nv -9.429673 -4.171594 6.667849\nv -9.438540 -4.328020 7.289923\nv -9.439722 -4.348877 7.810244\nv -9.409577 -3.817026 6.376175\nv -9.420216 -4.004738 6.424787\nv -10.099237 -3.700439 6.490631\nv -10.108667 -3.866822 6.535364\nv -10.117049 -4.014720 6.759026\nv -10.124908 -4.153374 7.331452\nv -10.125957 -4.171861 7.810244\nv -10.050552 -2.840618 7.027422\nv -10.052947 -2.875502 6.714294\nv -10.095495 -2.845614 7.037129\nv -10.097859 -2.880065 6.727883\nv -10.115590 -3.138444 6.506994\nv -10.143543 -3.695266 6.506994\nv -10.152856 -3.859588 6.551171\nv -10.161134 -4.005652 6.772061\nv -10.165792 -4.087813 7.103395\nv -10.168896 -4.142587 7.337388\nv -10.169931 -4.160845 7.810244\nv -10.095495 -2.845614 7.810244\nv -10.849614 -3.734469 7.387612\nv -10.852072 -3.770270 7.810244\nv -10.790585 -2.874309 7.810244\nv -10.793916 -2.922863 7.119244\nv -10.795820 -2.950614 6.842846\nv -10.810103 -3.158745 6.645418\nv -10.829192 -3.436882 6.645418\nv -10.836694 -3.546200 6.684904\nv -10.843364 -3.643371 6.882331\nv -10.847114 -3.698030 7.178474\nv -10.903708 -3.505837 6.730746\nv -10.909923 -3.596375 6.920130\nv -10.913417 -3.647303 7.204210\nv -10.915747 -3.681255 7.404829\nv -10.919445 -3.735150 7.810244\nv -10.861234 -2.886924 7.810244\nv -10.865689 -2.951834 7.147393\nv -10.867463 -2.977690 6.882254\nv -10.880773 -3.171614 6.692869\nv -10.896719 -3.403982 6.692869\nv -10.940977 -3.177297 6.722392\nv -10.954082 -3.368267 6.722392\nv -10.959837 -3.452110 6.753570\nv -10.965577 -3.535767 6.928563\nv -10.969018 -3.585882 7.208105\nv -10.971334 -3.619622 7.407519\nv -10.976580 -3.696075 7.810244\nv -10.976580 -2.919027 7.810244\nv -10.927803 -2.985340 7.148544\nv -10.929544 -3.010710 6.888398\nv -10.927803 -2.985340 7.367590\nv -10.976580 -3.134488 7.461717\nv -10.976580 -3.210303 7.433356\nv -10.976580 -3.302882 7.420992\nv -10.976580 -3.399073 7.431919\nv -10.976580 -3.482705 7.462767\nv -10.976580 -3.075567 7.497974\nv -10.976580 -3.005313 7.565630\nv -10.976580 -2.942908 7.675868\nv -10.976580 -3.544185 7.501496\nv -10.976580 -3.614943 7.572167\nv -10.976580 -3.674454 7.682192\nv -10.864958 -2.941189 7.366822\nv -10.793916 -2.922863 7.347990\nv -10.791968 -2.894478 7.656159\nv -10.793916 -2.922863 7.502075\nv -10.862685 -2.908073 7.662436\nv -10.864714 -2.937641 7.514628\nv -10.976580 -2.969925 7.618370\nv -10.976580 -2.926240 7.742212\nv -10.861398 -2.889305 7.736340\nv -10.790907 -2.879031 7.733201\nv -10.095495 -2.845614 7.734714\nv -10.793510 -2.916950 7.579117\nv -10.864188 -2.929953 7.588532\nv -10.916005 -3.685027 7.539967\nv -10.918537 -3.721916 7.675105\nv -10.849893 -3.738518 7.528489\nv -10.851306 -3.759124 7.669367\nv -10.169773 -4.158063 7.738202\nv -10.976580 -3.650354 7.624108\nv -10.976580 -3.691600 7.745144\nv -10.919316 -3.733264 7.742674\nv -10.917597 -3.708203 7.607537\nv -10.850925 -3.753552 7.598928\nv -10.852014 -3.769428 7.739805\nv -10.966999 -3.556479 7.210505\nv -10.969301 -3.590019 7.408338\nv -10.969116 -3.587336 7.502764\nv -10.967427 -3.562720 7.478178\nv -10.962837 -3.495824 7.436036\nv -10.956669 -3.405944 7.402884\nv -10.949576 -3.302590 7.391144\nv -10.942747 -3.203088 7.404432\nv -10.937145 -3.121459 7.434968\nv -10.932747 -3.057376 7.474400\nv -10.930774 -3.028624 7.502091\nv -10.929833 -3.014908 7.366097\nv -10.929833 -3.014908 7.149352\nv -10.931550 -3.039934 6.892725\nv -10.941505 -3.184999 6.744535\nv -10.953607 -3.361330 6.744535\nv -10.958202 -3.428289 6.769434\nv -10.963595 -3.506877 6.933825\nv -10.938142 -3.135979 6.765051\nv -10.947556 -3.273165 6.744535\nv -10.703084 -3.602425 7.502764\nv -10.701394 -3.577809 7.478178\nv -10.695585 -3.493154 7.429486\nv -10.690635 -3.421033 7.402884\nv -10.683542 -3.317679 7.391144\nv -10.675801 -3.204880 7.409406\nv -10.671111 -3.136547 7.434968\nv -10.667958 -3.090606 7.463238\nv -10.664742 -3.043713 7.502091\nv -10.663799 -3.029997 7.366097\nv -10.663799 -3.029997 7.149352\nv -10.665517 -3.055023 6.892725\nv -10.672108 -3.151068 6.765051\nv -10.675473 -3.200088 6.744535\nv -10.681522 -3.288253 6.744535\nv -10.687572 -3.376419 6.744535\nv -10.692168 -3.443377 6.769434\nv -10.697561 -3.521966 6.933825\nv -10.700966 -3.571568 7.210505\nv -10.703267 -3.605108 7.408338\nv -10.679671 -3.261280 7.400275\nv -10.678497 -3.244171 6.744535\nv -10.684547 -3.332336 6.744535\nv -10.687088 -3.369356 7.397014\nv -10.666548 -3.070058 6.894951\nv -10.667624 -3.085735 6.859225\nv -10.666773 -3.073343 7.454978\nv -10.665701 -3.057709 7.467932\nv -10.665153 -3.049709 7.365103\nv -10.665153 -3.049709 7.149890\nv -10.669847 -3.118121 6.792721\nv -10.670973 -3.134521 6.785833\nv -10.670075 -3.121449 7.426363\nv -10.669024 -3.106132 7.435789\nv -10.673228 -3.167403 6.772346\nv -10.674351 -3.183747 6.765505\nv -10.674444 -3.185104 7.395722\nv -10.672491 -3.156667 7.406359\nv -10.676491 -3.214939 6.755604\nv -10.677500 -3.229636 6.755604\nv -10.678375 -3.242393 7.384438\nv -10.677070 -3.223362 7.387552\nv -10.682230 -3.298563 7.375315\nv -10.680923 -3.279529 7.378428\nv -10.679528 -3.259202 6.755602\nv -10.680537 -3.273899 6.755602\nv -10.682565 -3.303430 6.755572\nv -10.683573 -3.318127 6.755572\nv -10.685872 -3.351629 7.377844\nv -10.684680 -3.334273 7.375853\nv -10.689409 -3.403179 7.383717\nv -10.688219 -3.385825 7.381726\nv -10.685596 -3.347620 6.755569\nv -10.686606 -3.362317 6.755569\nv -10.689026 -3.397577 6.768884\nv -10.690856 -3.424258 6.778807\nv -10.694133 -3.471999 7.400637\nv -10.691947 -3.440150 7.388890\nv -10.693968 -3.469608 6.868098\nv -10.696224 -3.502481 6.936861\nv -10.699877 -3.555695 7.442685\nv -10.696899 -3.512312 7.417733\nv -10.763438 -3.052165 7.467932\nv -10.762890 -3.044165 7.365103\nv -10.762890 -3.044165 7.149890\nv -10.764285 -3.064513 6.894951\nv -10.765361 -3.080191 6.859225\nv -10.764511 -3.067800 7.454978\nv -10.768709 -3.128976 6.785833\nv -10.767813 -3.115905 7.426363\nv -10.766762 -3.100588 7.435789\nv -10.767585 -3.112577 6.792721\nv -10.772087 -3.178202 6.765505\nv -10.772182 -3.179560 7.395722\nv -10.770229 -3.151123 7.406359\nv -10.770967 -3.161859 6.772346\nv -10.775237 -3.224093 6.755604\nv -10.776113 -3.236851 7.384438\nv -10.774807 -3.217819 7.387552\nv -10.774230 -3.209396 6.755604\nv -10.778661 -3.273985 7.378428\nv -10.777267 -3.253658 6.755602\nv -10.778275 -3.268356 6.755602\nv -10.779968 -3.293020 7.375315\nv -10.781310 -3.312583 6.755572\nv -10.783609 -3.346085 7.377844\nv -10.782417 -3.328729 7.375853\nv -10.780301 -3.297886 6.755572\nv -10.785955 -3.380282 7.381726\nv -10.783335 -3.342076 6.755569\nv -10.784343 -3.356774 6.755569\nv -10.787147 -3.397636 7.383717\nv -10.788594 -3.418716 6.778807\nv -10.791870 -3.466456 7.400637\nv -10.789684 -3.434608 7.388890\nv -10.786762 -3.392034 6.768884\nv -10.793962 -3.496937 6.936861\nv -10.797614 -3.550152 7.442685\nv -10.794637 -3.506769 7.417733\nv -10.791706 -3.464065 6.868098\nv -10.178091 -4.145419 7.731960\nv -10.177233 -4.130261 7.334466\nv -10.174192 -4.076615 7.104139\nv -10.169631 -3.996144 6.775549\nv -10.161524 -3.853087 6.556489\nv -10.152402 -3.692146 6.512677\nv -10.125025 -3.144249 6.512677\nv -10.107658 -2.891188 6.731737\nv -10.105342 -2.857446 7.038420\nv -10.105342 -2.857446 7.728501\nv -10.060410 -2.852605 7.028795\nv -10.062756 -2.886770 6.718261\nv -10.080341 -3.143009 6.496450\nv -10.108093 -3.697274 6.496450\nv -10.117331 -3.860235 6.540812\nv -10.125540 -4.005088 6.762623\nv -10.130157 -4.086569 7.095339\nv -10.133236 -4.140889 7.328579\nv -10.134264 -4.158996 7.803404\nv -10.178246 -4.148144 7.803404\nv -10.107316 -3.017861 6.551174\nv -10.101406 -2.931743 6.624796\nv -10.792625 -2.985103 6.748102\nv -10.803439 -3.061613 6.684905\nv -10.116920 -3.026148 6.556490\nv -10.111132 -2.941802 6.629504\nv -10.076964 -3.017854 6.537379\nv -10.067183 -2.931941 6.619186\nv -10.064768 -3.012824 6.531826\nv -10.055302 -2.920542 6.607508\nv -5.617154 -3.233635 6.353892\nv -5.610704 -3.139658 6.439051\nv -10.872756 -3.010002 6.785055\nv -10.874560 -3.081112 6.730748\nv -10.918852 -3.027771 6.805646\nv -10.927044 -3.096379 6.744650\nv -10.933702 -3.071286 6.821284\nv -10.935899 -3.103298 6.778731\nv -10.667668 -3.086375 6.821284\nv -10.668371 -3.096611 6.810118\nv -10.668668 -3.100945 6.859373\nv -10.669111 -3.107405 6.787951\nv -10.669865 -3.118387 6.778731\nv -9.376504 -3.164394 6.376175\nv -9.374578 -3.136331 6.381040\nv -10.070231 -3.123550 6.495129\nv -10.074047 -3.139086 6.492571\nv -10.071918 -3.151927 6.490631\nv -8.744912 -3.183453 6.304960\nv -8.705025 -3.170098 6.302789\nv -8.723731 -3.155941 6.307662\nv -8.740156 -3.860222 6.302789\nv -8.779946 -3.874710 6.304960\nv -8.761690 -3.893033 6.306991\nv -5.663548 -4.021878 6.306503\nv -5.661578 -3.990148 6.302789\nv -5.694130 -4.514290 7.003637\nv -5.693827 -4.509383 6.981758\nv -8.787866 -4.354872 6.981713\nv -8.788133 -4.359554 7.003655\nv -9.434834 -4.262636 7.021510\nv -9.435092 -4.267223 7.043460\nv -10.121611 -4.095178 7.083493\nv -10.124562 -4.094132 7.094794\nv -10.121863 -4.099637 7.105645\nv -9.352186 -3.184893 6.373280\nv -8.772961 -3.217316 6.307855\nv -8.783243 -3.367148 6.307855\nv -9.362436 -3.334259 6.373280\nv -8.769373 -3.217519 6.317987\nv -8.779655 -3.367351 6.317987\nv -9.358848 -3.334462 6.383412\nv -9.348598 -3.185096 6.383412\nv -8.797861 -3.351476 6.320158\nv -9.338615 -3.320770 6.381241\nv -9.330393 -3.200956 6.381241\nv -8.789609 -3.231227 6.320158\nv -9.345481 -3.320380 6.361844\nv -9.337258 -3.200567 6.361844\nv -8.796477 -3.230838 6.300761\nv -8.804728 -3.351087 6.300761\nv -9.375714 -2.866187 6.619574\nv -9.336617 -2.865446 6.617426\nv -9.333851 -2.828718 6.947112\nv -9.353376 -2.827387 6.970672\nv -9.372951 -2.827758 6.961431\nv -9.378875 -2.922117 6.508580\nv -9.340570 -2.922399 6.503825\nv -9.346321 -3.007504 6.431059\nv -9.385552 -3.016811 6.427727\nv -9.367294 -3.030214 6.419920\nv -8.688614 -2.930836 6.439051\nv -8.727546 -2.929916 6.441028\nv -8.733787 -3.019580 6.364382\nv -8.715983 -3.043055 6.349022\nv -8.695449 -3.030520 6.353892\nv -8.684510 -2.871017 6.558289\nv -8.723493 -2.870226 6.560099\nv -8.721092 -2.831671 6.906197\nv -8.681774 -2.831140 6.915991\nv -8.701397 -2.830528 6.927139\nv -5.564119 -3.085686 6.558289\nv -5.561539 -3.048091 6.915991\nv -5.657145 -4.609190 7.810244\nv -5.655683 -4.585659 7.401442\nv -5.651416 -4.516966 7.003637\nv -5.651112 -4.512061 6.981758\nv -5.644723 -4.409181 6.609390\nv -5.633029 -4.220937 6.353889\nv -5.620833 -4.024555 6.306503\nv -5.618863 -3.992825 6.302789\nv -5.583469 -3.367645 6.302789\nv -5.574439 -3.236058 6.353892\nv -5.567990 -3.142080 6.439051\nv -3.714288 -3.534387 6.311339\nv -3.706891 -3.426612 6.361148\nv -3.701609 -3.349641 6.445057\nv -3.698439 -3.303452 6.563268\nv -3.696326 -3.272660 6.919289\nv -3.780541 -4.673953 7.810244\nv -3.779174 -4.651937 7.403294\nv -3.775182 -4.587667 7.007673\nv -3.774898 -4.583077 6.985928\nv -3.768919 -4.486820 6.616161\nv -3.757981 -4.310695 6.363255\nv -3.746568 -4.126955 6.316755\nv -2.405952 -4.367528 6.403290\nv -2.396371 -4.213235 6.358046\nv -2.369709 -3.694336 6.353148\nv -2.363921 -3.610012 6.401797\nv -2.359789 -3.549789 6.483537\nv -2.357308 -3.513650 6.598528\nv -2.355654 -3.489559 6.944540\nv -2.426847 -4.703931 7.810244\nv -2.420398 -4.600109 7.029978\nv -2.420160 -4.596255 7.008837\nv -2.415139 -4.515425 6.649276\nv -1.080756 -4.602692 7.051575\nv -1.080566 -4.599664 7.031014\nv -1.076622 -4.536158 6.681322\nv -1.069405 -4.419959 6.442002\nv -1.061876 -4.298736 6.397963\nv -1.040789 -3.852964 6.393565\nv -1.036640 -3.792505 6.441094\nv -1.033678 -3.749327 6.520741\nv -1.031899 -3.723417 6.632623\nv -1.030713 -3.706144 6.968957\nv -1.089484 -4.743258 7.810244\nv 0.107654 -4.757666 7.810244\nv 0.120822 -4.545649 7.070794\nv 0.120926 -4.543964 7.050745\nv 0.123121 -4.508635 6.709661\nv 0.127136 -4.443990 6.475984\nv 0.131325 -4.376551 6.432917\nv 0.145204 -4.028414 6.429308\nv 0.148718 -3.977221 6.475753\nv 0.151227 -3.940660 6.553465\nv 0.152732 -3.918720 6.662555\nv 0.153736 -3.904094 6.990363\nv 1.882737 -4.200738 6.705140\nv 1.882944 -4.197714 7.020883\nv 1.875734 -4.302797 7.810244\nv 1.875838 -4.301285 7.449393\nv 1.876140 -4.296871 7.098250\nv 1.876162 -4.296556 7.078937\nv 1.876616 -4.289946 6.750246\nv 1.877446 -4.277849 6.524715\nv 1.878312 -4.265230 6.482887\nv 1.881180 -4.223417 6.479609\nv 1.881907 -4.212833 6.524717\nv 1.882426 -4.205274 6.599887\nv 0.120798 -4.546046 7.810244\nv 0.110783 -4.707285 7.390084\nv 0.114899 -4.641012 7.297367\nv -1.083622 -4.648871 7.281683\nv -1.086575 -4.696403 7.378302\nv -2.423688 -4.653055 7.268628\nv -2.425100 -4.675796 7.390549\nv -2.425507 -4.682345 7.439488\nv -2.426126 -4.692340 7.562203\nv -1.088930 -4.734306 7.573164\nv -1.088195 -4.722509 7.450805\nv 0.107958 -4.752768 7.583048\nv 0.108888 -4.737779 7.461619\nv 0.120816 -4.545755 7.267793\nv 0.120816 -4.545755 8.352694\nv 0.108888 -4.737779 8.158867\nv 0.107958 -4.752768 8.037437\nv -1.088195 -4.722509 8.169682\nv -1.088930 -4.734306 8.047320\nv -2.426126 -4.692340 8.058283\nv -2.425507 -4.682345 8.180997\nv -2.425100 -4.675796 8.229938\nv -2.423688 -4.653055 8.351857\nv -1.086575 -4.696403 8.242184\nv -1.083622 -4.648871 8.338802\nv 0.114899 -4.641012 8.323119\nv 0.110783 -4.707285 8.230403\nv 1.882426 -4.205274 9.020599\nv 1.881907 -4.212833 9.095770\nv 1.881180 -4.223417 9.140877\nv 1.878312 -4.265230 9.137600\nv 1.877446 -4.277849 9.095771\nv 1.876616 -4.289946 8.870240\nv 1.876162 -4.296556 8.541550\nv 1.876140 -4.296871 8.522236\nv 1.875838 -4.301285 8.171093\nv 1.882944 -4.197714 8.599603\nv 1.882737 -4.200738 8.915346\nv 0.153736 -3.904094 8.630123\nv 0.152732 -3.918720 8.957932\nv 0.151227 -3.940660 9.067020\nv 0.148718 -3.977221 9.144733\nv 0.145204 -4.028414 9.191177\nv 0.131325 -4.376551 9.187569\nv 0.127136 -4.443990 9.144501\nv 0.123121 -4.508635 8.910824\nv 0.120926 -4.543964 8.569740\nv 0.120822 -4.545649 8.549692\nv -1.030713 -3.706144 8.651529\nv -1.031899 -3.723417 8.987862\nv -1.033678 -3.749327 9.099745\nv -1.036640 -3.792505 9.179391\nv -1.040789 -3.852964 9.226922\nv -1.061876 -4.298736 9.222523\nv -1.069405 -4.419959 9.178484\nv -1.076622 -4.536158 8.939163\nv -1.080566 -4.599664 8.589471\nv -1.080756 -4.602692 8.568913\nv -2.415139 -4.515425 8.971210\nv -2.420160 -4.596255 8.611650\nv -2.420398 -4.600109 8.590508\nv -2.355654 -3.489559 8.675945\nv -2.357308 -3.513650 9.021957\nv -2.359789 -3.549789 9.136950\nv -2.363921 -3.610012 9.218690\nv -2.369709 -3.694336 9.267338\nv -2.396371 -4.213235 9.262440\nv -2.405952 -4.367528 9.217196\nv -3.746568 -4.126955 9.303730\nv -3.757981 -4.310695 9.257232\nv -3.768919 -4.486820 9.004326\nv -3.774898 -4.583077 8.634558\nv -3.775182 -4.587667 8.612813\nv -3.779174 -4.651937 8.217192\nv -3.696326 -3.272660 8.701197\nv -3.698439 -3.303452 9.057219\nv -3.701609 -3.349641 9.175428\nv -3.706891 -3.426612 9.259338\nv -3.714288 -3.534387 9.309147\nv -5.567990 -3.142080 9.181435\nv -5.574439 -3.236058 9.266595\nv -5.583469 -3.367645 9.317698\nv -5.618863 -3.992825 9.317698\nv -5.620833 -4.024555 9.313983\nv -5.633029 -4.220937 9.266598\nv -5.644723 -4.409181 9.011097\nv -5.651112 -4.512061 8.638728\nv -5.651416 -4.516966 8.616848\nv -5.655683 -4.585659 8.219044\nv -5.561539 -3.048091 8.704495\nv -5.564119 -3.085686 9.062197\nv -8.701397 -2.830528 8.693347\nv -8.681774 -2.831140 8.704495\nv -8.721092 -2.831671 8.714288\nv -8.723493 -2.870226 9.060387\nv -8.684510 -2.871017 9.062197\nv -8.695449 -3.030520 9.266595\nv -8.715983 -3.043055 9.271464\nv -8.733787 -3.019580 9.256104\nv -8.727546 -2.929916 9.179459\nv -8.688614 -2.930836 9.181435\nv -9.367294 -3.030214 9.200565\nv -9.385552 -3.016811 9.192759\nv -9.346321 -3.007504 9.189427\nv -9.340570 -2.922399 9.116662\nv -9.378875 -2.922117 9.111906\nv -9.372951 -2.827758 8.659056\nv -9.353376 -2.827387 8.649814\nv -9.333851 -2.828718 8.673373\nv -9.336617 -2.865446 9.003059\nv -9.375714 -2.866187 9.000912\nv -8.804728 -3.351087 9.319725\nv -8.796477 -3.230838 9.319725\nv -9.337258 -3.200567 9.258642\nv -9.345481 -3.320380 9.258642\nv -8.789609 -3.231227 9.300328\nv -9.330393 -3.200956 9.239244\nv -9.338615 -3.320770 9.239244\nv -8.797861 -3.351476 9.300328\nv -9.348598 -3.185096 9.237074\nv -9.358848 -3.334462 9.237074\nv -8.779655 -3.367351 9.302499\nv -8.769373 -3.217519 9.302499\nv -9.362436 -3.334259 9.247205\nv -8.783243 -3.367148 9.312631\nv -8.772961 -3.217316 9.312631\nv -9.352186 -3.184893 9.247205\nv -10.121863 -4.099637 8.514840\nv -10.124562 -4.094132 8.525692\nv -10.121611 -4.095178 8.536994\nv -9.435092 -4.267223 8.577026\nv -9.434834 -4.262636 8.598976\nv -8.788133 -4.359554 8.616831\nv -8.787866 -4.354872 8.638773\nv -5.693827 -4.509383 8.638728\nv -5.694130 -4.514290 8.616848\nv -5.661578 -3.990148 9.317698\nv -5.663548 -4.021878 9.313983\nv -8.761690 -3.893033 9.313496\nv -8.779946 -3.874710 9.315525\nv -8.740156 -3.860222 9.317698\nv -8.723731 -3.155941 9.312824\nv -8.705025 -3.170098 9.317698\nv -8.744912 -3.183453 9.315525\nv -10.071918 -3.151927 9.129856\nv -10.074047 -3.139086 9.127915\nv -10.070231 -3.123550 9.125356\nv -9.374578 -3.136331 9.239447\nv -9.376504 -3.164394 9.244310\nv -10.669865 -3.118387 8.841755\nv -10.669111 -3.107405 8.832534\nv -10.668668 -3.100945 8.761113\nv -10.668371 -3.096611 8.810367\nv -10.667668 -3.086375 8.799202\nv -10.935899 -3.103298 8.841755\nv -10.933702 -3.071286 8.799202\nv -10.927044 -3.096379 8.875835\nv -10.918852 -3.027771 8.814840\nv -10.874560 -3.081112 8.889739\nv -10.872756 -3.010002 8.835430\nv -5.610704 -3.139658 9.181435\nv -5.617154 -3.233635 9.266595\nv -10.055302 -2.920542 9.012977\nv -10.064768 -3.012824 9.088661\nv -10.067183 -2.931941 9.001301\nv -10.076964 -3.017854 9.083107\nv -10.111132 -2.941802 8.990982\nv -10.116920 -3.026148 9.063994\nv -10.803439 -3.061613 8.935581\nv -10.792625 -2.985103 8.872384\nv -10.101406 -2.931743 8.995689\nv -10.107316 -3.017861 9.069312\nv -10.178246 -4.148144 7.817082\nv -10.134264 -4.158996 7.817082\nv -10.133236 -4.140889 8.291908\nv -10.130157 -4.086569 8.525148\nv -10.125540 -4.005088 8.857863\nv -10.117331 -3.860235 9.079674\nv -10.108093 -3.697274 9.124036\nv -10.080341 -3.143009 9.124036\nv -10.062756 -2.886770 8.902225\nv -10.060410 -2.852605 8.591691\nv -10.105342 -2.857446 7.891985\nv -10.105342 -2.857446 8.582065\nv -10.107658 -2.891188 8.888748\nv -10.125025 -3.144249 9.107809\nv -10.152402 -3.692146 9.107809\nv -10.161524 -3.853087 9.063997\nv -10.169631 -3.996144 8.844937\nv -10.174192 -4.076615 8.516346\nv -10.177233 -4.130261 8.286020\nv -10.178091 -4.145419 7.888527\nv -10.791706 -3.464065 8.752388\nv -10.794637 -3.506769 8.202755\nv -10.797614 -3.550152 8.177801\nv -10.793962 -3.496937 8.683624\nv -10.786762 -3.392034 8.851603\nv -10.789684 -3.434608 8.231597\nv -10.791870 -3.466456 8.219849\nv -10.788594 -3.418716 8.841679\nv -10.787147 -3.397636 8.236770\nv -10.784343 -3.356774 8.864918\nv -10.783335 -3.342076 8.864918\nv -10.785955 -3.380282 8.238761\nv -10.780301 -3.297886 8.864914\nv -10.782417 -3.328729 8.244634\nv -10.783609 -3.346085 8.242643\nv -10.781310 -3.312583 8.864914\nv -10.779968 -3.293020 8.245172\nv -10.778275 -3.268356 8.864883\nv -10.777267 -3.253658 8.864883\nv -10.778661 -3.273985 8.242058\nv -10.774230 -3.209396 8.864882\nv -10.774807 -3.217819 8.232934\nv -10.776113 -3.236851 8.236050\nv -10.775237 -3.224093 8.864882\nv -10.770967 -3.161859 8.848141\nv -10.770229 -3.151123 8.214126\nv -10.772182 -3.179560 8.224765\nv -10.772087 -3.178202 8.854980\nv -10.767585 -3.112577 8.827765\nv -10.766762 -3.100588 8.184697\nv -10.767813 -3.115905 8.194122\nv -10.768709 -3.128976 8.834652\nv -10.764511 -3.067800 8.165508\nv -10.765361 -3.080191 8.761261\nv -10.764285 -3.064513 8.725533\nv -10.762890 -3.044165 8.470595\nv -10.762890 -3.044165 8.255384\nv -10.763438 -3.052165 8.152555\nv -10.696899 -3.512312 8.202755\nv -10.699877 -3.555695 8.177801\nv -10.696224 -3.502481 8.683624\nv -10.693968 -3.469608 8.752388\nv -10.691947 -3.440150 8.231597\nv -10.694133 -3.471999 8.219849\nv -10.690856 -3.424258 8.841679\nv -10.689026 -3.397577 8.851603\nv -10.686606 -3.362317 8.864918\nv -10.685596 -3.347620 8.864918\nv -10.688219 -3.385825 8.238761\nv -10.689409 -3.403179 8.236770\nv -10.684680 -3.334273 8.244634\nv -10.685872 -3.351629 8.242643\nv -10.683573 -3.318127 8.864914\nv -10.682565 -3.303430 8.864914\nv -10.680537 -3.273899 8.864883\nv -10.679528 -3.259202 8.864883\nv -10.680923 -3.279529 8.242058\nv -10.682230 -3.298563 8.245172\nv -10.677070 -3.223362 8.232934\nv -10.678375 -3.242393 8.236050\nv -10.677500 -3.229636 8.864882\nv -10.676491 -3.214939 8.864882\nv -10.672491 -3.156667 8.214126\nv -10.674444 -3.185104 8.224765\nv -10.674351 -3.183747 8.854980\nv -10.673228 -3.167403 8.848141\nv -10.669024 -3.106132 8.184697\nv -10.670075 -3.121449 8.194122\nv -10.670973 -3.134521 8.834652\nv -10.669847 -3.118121 8.827765\nv -10.665153 -3.049709 8.470595\nv -10.665153 -3.049709 8.255384\nv -10.665701 -3.057709 8.152555\nv -10.666773 -3.073343 8.165508\nv -10.667624 -3.085735 8.761261\nv -10.666548 -3.070058 8.725533\nv -10.687088 -3.369356 8.223474\nv -10.684547 -3.332336 8.875951\nv -10.678497 -3.244171 8.875951\nv -10.679671 -3.261280 8.220211\nv -10.703267 -3.605108 8.212148\nv -10.700966 -3.571568 8.409980\nv -10.697561 -3.521966 8.686661\nv -10.692168 -3.443377 8.851051\nv -10.687572 -3.376419 8.875951\nv -10.681522 -3.288253 8.875951\nv -10.675473 -3.200088 8.875951\nv -10.672108 -3.151068 8.855434\nv -10.665517 -3.055023 8.727760\nv -10.663799 -3.029997 8.471134\nv -10.663799 -3.029997 8.254389\nv -10.664742 -3.043713 8.118397\nv -10.667958 -3.090606 8.157249\nv -10.671111 -3.136547 8.185519\nv -10.675801 -3.204880 8.211081\nv -10.683542 -3.317679 8.229342\nv -10.690635 -3.421033 8.217602\nv -10.695585 -3.493154 8.191000\nv -10.701394 -3.577809 8.142309\nv -10.703084 -3.602425 8.117723\nv -10.947556 -3.273165 8.875951\nv -10.938142 -3.135979 8.855434\nv -10.963595 -3.506877 8.686661\nv -10.958202 -3.428289 8.851051\nv -10.953607 -3.361330 8.875951\nv -10.941505 -3.184999 8.875951\nv -10.931550 -3.039934 8.727760\nv -10.929833 -3.014908 8.471134\nv -10.929833 -3.014908 8.254389\nv -10.930774 -3.028624 8.118397\nv -10.932747 -3.057376 8.146086\nv -10.937145 -3.121459 8.185519\nv -10.942747 -3.203088 8.216055\nv -10.949576 -3.302590 8.229342\nv -10.956669 -3.405944 8.217602\nv -10.962837 -3.495824 8.184450\nv -10.967427 -3.562720 8.142309\nv -10.969116 -3.587336 8.117723\nv -10.969301 -3.590019 8.212148\nv -10.966999 -3.556479 8.409980\nv -10.852014 -3.769428 7.880681\nv -10.850925 -3.753552 8.021559\nv -10.917597 -3.708203 8.012951\nv -10.919316 -3.733264 7.877812\nv -10.976580 -3.691600 7.875343\nv -10.976580 -3.650354 7.996378\nv -10.169773 -4.158063 7.882285\nv -10.851306 -3.759124 7.951119\nv -10.849893 -3.738518 8.091997\nv -10.918537 -3.721916 7.945382\nv -10.916005 -3.685027 8.080520\nv -10.864188 -2.929953 8.031955\nv -10.793510 -2.916950 8.041369\nv -10.095495 -2.845614 7.885772\nv -10.790907 -2.879031 7.887285\nv -10.861398 -2.889305 7.884146\nv -10.976580 -2.926240 7.878274\nv -10.976580 -2.969925 8.002116\nv -10.864714 -2.937641 8.105858\nv -10.862685 -2.908073 7.958050\nv -10.793916 -2.922863 8.118412\nv -10.791968 -2.894478 7.964327\nv -10.793916 -2.922863 8.272495\nv -10.864958 -2.941189 8.253666\nv -10.976580 -3.674454 7.938294\nv -10.976580 -3.614943 8.048321\nv -10.976580 -3.544185 8.118991\nv -10.976580 -2.942908 7.944619\nv -10.976580 -3.005313 8.054855\nv -10.976580 -3.075567 8.122513\nv -10.976580 -3.482705 8.157721\nv -10.976580 -3.399073 8.188568\nv -10.976580 -3.302882 8.199494\nv -10.976580 -3.210303 8.187131\nv -10.976580 -3.134488 8.158771\nv -10.927803 -2.985340 8.252895\nv -10.929544 -3.010710 8.732088\nv -10.927803 -2.985340 8.471942\nv -10.971334 -3.619622 8.212967\nv -10.969018 -3.585882 8.412380\nv -10.965577 -3.535767 8.691924\nv -10.959837 -3.452110 8.866915\nv -10.954082 -3.368267 8.898094\nv -10.940977 -3.177297 8.898094\nv -10.896719 -3.403982 8.927617\nv -10.880773 -3.171614 8.927617\nv -10.867463 -2.977690 8.738234\nv -10.865689 -2.951834 8.473093\nv -10.915747 -3.681255 8.215657\nv -10.913417 -3.647303 8.416277\nv -10.909923 -3.596375 8.700356\nv -10.903708 -3.505837 8.889740\nv -10.847114 -3.698030 8.442013\nv -10.843364 -3.643371 8.738155\nv -10.836694 -3.546200 8.935581\nv -10.829192 -3.436882 8.975067\nv -10.810103 -3.158745 8.975067\nv -10.795820 -2.950614 8.777641\nv -10.793916 -2.922863 8.501240\nv -10.849614 -3.734469 8.232874\nv -10.168896 -4.142587 8.283098\nv -10.165792 -4.087813 8.517090\nv -10.161134 -4.005652 8.848425\nv -10.152856 -3.859588 9.069315\nv -10.143543 -3.695266 9.113493\nv -10.115590 -3.138444 9.113493\nv -10.097859 -2.880065 8.892603\nv -10.095495 -2.845614 8.583358\nv -10.052947 -2.875502 8.906193\nv -10.050552 -2.840618 8.593063\nv -10.124908 -4.153374 8.289035\nv -10.117049 -4.014720 8.861460\nv -10.108667 -3.866822 9.085122\nv -10.099237 -3.700439 9.129856\nv -9.420216 -4.004738 9.195699\nv -9.409577 -3.817026 9.244310\nv -9.438540 -4.328020 8.330562\nv -9.429673 -4.171594 8.952637\nv -8.791835 -4.424898 8.357189\nv -8.782320 -4.257011 9.011097\nv -8.772169 -4.077933 9.266598\nv -5.698397 -4.582982 8.219044\nv -5.687437 -4.406504 9.011097\nv -5.675745 -4.218260 9.266598\nv -5.626184 -3.365223 9.317698\nv -5.606834 -3.083263 9.062197\nv -5.604254 -3.045668 8.704495\nv -0.912269 -3.725938 8.649389\nv -0.793825 -3.745733 8.647248\nv -0.675379 -3.765529 8.645108\nv -0.556934 -3.785324 8.642967\nv -0.438490 -3.805119 8.640826\nv -0.320045 -3.824914 8.638686\nv -0.201599 -3.844709 8.636545\nv -0.083154 -3.864504 8.634405\nv 0.035290 -3.884299 8.632264\nv -0.912269 -3.725938 6.971096\nv -0.793825 -3.745733 6.973237\nv -0.675379 -3.765529 6.975378\nv -0.556934 -3.785324 6.977518\nv -0.438490 -3.805119 6.979659\nv -0.320045 -3.824914 6.981800\nv -0.201599 -3.844709 6.983941\nv -0.083154 -3.864504 6.986081\nv 0.035290 -3.884299 6.988222\nv -0.940512 -3.761913 6.998557\nv -1.022999 -3.748127 6.996487\nv -1.022999 -3.748127 8.623999\nv -0.940512 -3.761913 8.621929\nv -0.822067 -3.781708 7.000627\nv -0.904554 -3.767922 6.998557\nv -0.904554 -3.767922 8.621929\nv -0.822067 -3.781708 8.619858\nv -0.786108 -3.787717 8.619858\nv -0.703624 -3.801503 8.617787\nv -0.703624 -3.801503 7.002698\nv -0.786108 -3.787717 7.000627\nv -0.585178 -3.821298 7.004769\nv -0.667664 -3.807512 7.002698\nv -0.667664 -3.807512 8.617787\nv -0.585178 -3.821298 8.615717\nv -0.466733 -3.841093 7.006840\nv -0.549219 -3.827307 7.004769\nv -0.549219 -3.827307 8.615717\nv -0.466733 -3.841093 8.613646\nv -0.430774 -3.847102 8.613646\nv -0.348290 -3.860888 8.611576\nv -0.348290 -3.860888 7.008910\nv -0.430774 -3.847102 7.006840\nv -0.229844 -3.880683 7.010980\nv -0.312330 -3.866898 7.008910\nv -0.312330 -3.866898 8.611576\nv -0.229844 -3.880683 8.609505\nv -0.193885 -3.886692 8.609505\nv -0.111399 -3.900478 8.607435\nv -0.111399 -3.900478 7.013051\nv -0.193885 -3.886692 7.010980\nv 0.007047 -3.920273 7.015122\nv -0.075441 -3.906488 7.013051\nv -0.075441 -3.906488 8.607435\nv 0.007047 -3.920273 8.605365\nv 0.125491 -3.940068 7.017192\nv 0.043007 -3.926283 7.015122\nv 0.043007 -3.926283 8.605365\nv 0.125491 -3.940068 8.603293\nv -12.745914 -3.260776 7.805246\nv -11.020436 -3.683620 7.805246\nv -11.230495 -3.683620 7.805246\nv -11.230495 -3.601779 7.805246\nv -11.350529 -3.601779 7.805246\nv -11.350529 -3.683620 7.805246\nv -11.545582 -3.683620 7.805246\nv -11.830662 -3.642699 7.805246\nv -12.250777 -3.492658 7.805246\nv -11.020436 -3.662924 7.935912\nv -11.230495 -3.662924 7.935912\nv -11.230495 -3.585089 7.910622\nv -11.350529 -3.585089 7.910622\nv -11.350529 -3.662924 7.935912\nv -11.545582 -3.662924 7.935912\nv -11.830662 -3.624007 7.923267\nv -12.250777 -3.481309 7.876902\nv -11.020436 -3.602864 8.053787\nv -11.230495 -3.602864 8.053787\nv -11.230495 -3.536653 8.005683\nv -11.350529 -3.536653 8.005683\nv -11.350529 -3.602864 8.053787\nv -11.545582 -3.602864 8.053787\nv -11.830662 -3.569759 8.029736\nv -12.250777 -3.448373 7.941543\nv -11.020436 -3.509317 8.147334\nv -11.230495 -3.509317 8.147334\nv -11.230495 -3.461213 8.081123\nv -11.350529 -3.461213 8.081123\nv -11.350529 -3.509317 8.147334\nv -11.545582 -3.509317 8.147334\nv -11.830662 -3.485265 8.114229\nv -12.250777 -3.397073 7.992842\nv -11.020436 -3.391442 8.207396\nv -11.230495 -3.391442 8.207396\nv -11.230495 -3.366152 8.129560\nv -11.350529 -3.366152 8.129560\nv -11.350529 -3.391442 8.207396\nv -11.545582 -3.391442 8.207396\nv -11.830662 -3.378797 8.168477\nv -12.250777 -3.332431 8.025780\nv -11.020436 -3.260776 8.228090\nv -11.230495 -3.260776 8.228090\nv -11.230495 -3.260776 8.146249\nv -11.350529 -3.260776 8.146249\nv -11.350529 -3.260776 8.228090\nv -11.545582 -3.260776 8.228090\nv -11.830662 -3.260776 8.187170\nv -12.250777 -3.260776 8.037128\nv -11.020436 -3.130110 8.207396\nv -11.230495 -3.130110 8.207396\nv -11.230495 -3.155400 8.129560\nv -11.350529 -3.155400 8.129560\nv -11.350529 -3.130110 8.207396\nv -11.545582 -3.130110 8.207396\nv -11.830662 -3.142755 8.168477\nv -12.250777 -3.189120 8.025780\nv -11.020436 -3.012235 8.147334\nv -11.230495 -3.012235 8.147334\nv -11.230495 -3.060339 8.081123\nv -11.350529 -3.060339 8.081123\nv -11.350529 -3.012235 8.147334\nv -11.545582 -3.012235 8.147334\nv -11.830662 -3.036287 8.114229\nv -12.250777 -3.124479 7.992842\nv -11.020436 -2.918688 8.053787\nv -11.230495 -2.918688 8.053787\nv -11.230495 -2.984899 8.005683\nv -11.350529 -2.984899 8.005683\nv -11.350529 -2.918688 8.053787\nv -11.545582 -2.918688 8.053787\nv -11.830662 -2.951794 8.029736\nv -12.250777 -3.073179 7.941543\nv -11.020436 -2.858628 7.935912\nv -11.230495 -2.858628 7.935912\nv -11.230495 -2.936463 7.910622\nv -11.350529 -2.936463 7.910622\nv -11.350529 -2.858628 7.935912\nv -11.545582 -2.858628 7.935912\nv -11.830662 -2.897546 7.923267\nv -12.250777 -3.040243 7.876902\nv -11.020436 -2.837933 7.805246\nv -11.230495 -2.837933 7.805246\nv -11.230495 -2.919773 7.805246\nv -11.350529 -2.919773 7.805246\nv -11.350529 -2.837933 7.805246\nv -11.545582 -2.837933 7.805246\nv -11.830662 -2.878853 7.805246\nv -12.250777 -3.028894 7.805246\nv -11.020436 -2.858628 7.674580\nv -11.230495 -2.858628 7.674580\nv -11.230495 -2.936463 7.699870\nv -11.350529 -2.936463 7.699870\nv -11.350529 -2.858628 7.674580\nv -11.545582 -2.858628 7.674580\nv -11.830662 -2.897546 7.687226\nv -12.250777 -3.040243 7.733591\nv -11.020436 -2.918688 7.556705\nv -11.230495 -2.918688 7.556705\nv -11.230495 -2.984899 7.604810\nv -11.350529 -2.984899 7.604810\nv -11.350529 -2.918688 7.556705\nv -11.545582 -2.918688 7.556705\nv -11.830662 -2.951794 7.580758\nv -12.250777 -3.073179 7.668950\nv -11.020436 -3.012235 7.463159\nv -11.230495 -3.012235 7.463159\nv -11.230495 -3.060339 7.529369\nv -11.350529 -3.060339 7.529369\nv -11.350529 -3.012235 7.463159\nv -11.545582 -3.012235 7.463159\nv -11.830662 -3.036287 7.496263\nv -12.250777 -3.124479 7.617650\nv -11.020436 -3.130110 7.403098\nv -11.230495 -3.130110 7.403098\nv -11.230495 -3.155400 7.480933\nv -11.350529 -3.155400 7.480933\nv -11.350529 -3.130110 7.403098\nv -11.545582 -3.130110 7.403098\nv -11.830662 -3.142755 7.442015\nv -12.250777 -3.189120 7.584713\nv -11.020436 -3.260776 7.382402\nv -11.230495 -3.260776 7.382402\nv -11.230495 -3.260776 7.464243\nv -11.350529 -3.260776 7.464243\nv -11.350529 -3.260776 7.382402\nv -11.545582 -3.260776 7.382402\nv -11.830662 -3.260776 7.423323\nv -12.250777 -3.260776 7.573365\nv -11.020436 -3.391442 7.403098\nv -11.230495 -3.391442 7.403098\nv -11.230495 -3.366152 7.480933\nv -11.350529 -3.366152 7.480933\nv -11.350529 -3.391442 7.403098\nv -11.545582 -3.391442 7.403098\nv -11.830662 -3.378797 7.442015\nv -12.250777 -3.332431 7.584713\nv -11.020436 -3.509317 7.463159\nv -11.230495 -3.509317 7.463159\nv -11.230495 -3.461213 7.529369\nv -11.350529 -3.461213 7.529369\nv -11.350529 -3.509317 7.463159\nv -11.545582 -3.509317 7.463159\nv -11.830662 -3.485265 7.496263\nv -12.250777 -3.397073 7.617650\nv -11.020436 -3.602864 7.556705\nv -11.230495 -3.602864 7.556705\nv -11.230495 -3.536653 7.604810\nv -11.350529 -3.536653 7.604810\nv -11.350529 -3.602864 7.556705\nv -11.545582 -3.602864 7.556705\nv -11.830662 -3.569759 7.580758\nv -12.250777 -3.448373 7.668950\nv -11.020436 -3.662924 7.674580\nv -11.230495 -3.662924 7.674580\nv -11.230495 -3.585089 7.699870\nv -11.350529 -3.585089 7.699870\nv -11.350529 -3.662924 7.674580\nv -11.545582 -3.662924 7.674580\nv -11.830662 -3.624007 7.687226\nv -12.250777 -3.481309 7.733591\n\n# 3745 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng pstripe2\ns off\nusemtl yellow\nf 3 4 25 26\ns 2\nusemtl red\nf 11 4 3 12\nf 25 18 17 26\ns 1\nf 95 88 87 96\nf 87 88 109 110\nf 53 46 45 54\nf 45 46 67 68\nf 18 11 12 17\nf 67 60 59 68\nf 60 53 54 59\nf 109 102 101 110\nf 102 95 96 101\ng fuselage\ns off\nf 688 687 462\nf 773 1013 774\nf 1209 1316 1320\ns 31\nf 378 1443 379\nf 682 463 684\nf 1135 1111 1122\nf 1115 1107 1105\nf 374 371 363 366\nf 1667 1666 1668\nf 1657 1655 1654 1656\nf 1637 1635 1634 1636\nf 1629 1626 1628\nf 1621 1619 1618 1620\nf 1601 1599 1598 1600\nf 1581 1579 1578 1580\nf 1528 1512 1514 1529\nf 1522 1519 1518 1520\nf 1509 1497 1496 1507\nf 1498 1493 1495 1499\nf 1447 1450 1452 1448\nf 1437 1411 1410 1435\nf 1429 1431 1432 1430\nf 1414 1658 1656 1413\nf 1513 1514 1512\nf 1494 1495 1493\nf 1439 1440 1438\nf 1358 1359 1357\nf 1497 1509 1207\nf 1514 1513 1205 1154 1152\nf 1150 1529 1514 1152\nf 1192 272 1524 1527\nf 1186 280 272 1192\nf 350 1130 1205 256\nf 1134 1153 1132\nf 299 1358 1357 1159 1158\nf 1163 1164 1168 1167\nf 1118 1567 1569 1110\nf 1135 1136 1157 1158\nf 1154 1153 1499 1495\nf 1147 1145 1146 1148\nf 1127 1128 1165 1164\nf 1581 985 1096 1579\nf 1080 1081 934 933\nf 978 1590 1588 930\nf 1072 1073 1080 1079\nf 941 1598 1596 970\nf 939 938 1073 1072\nf 958 1062 1065 960\nf 1053 1054 1064 1063\nf 948 1608 1606 964\nf 1218 1050 1051 1216\nf 1042 951 956 1050\nf 943 1043 1036 1044 944\nf 1621 1032 1043 1619\nf 1021 1022 1034 1033\nf 1018 1019 1031 1030\nf 1011 1012 1021 1020\nf 1627 1009 1011\nf 1007 1008 1010 1017\nf 779 777 1012\nf 1629 998 1627\nf 1619 1043 943 1617\nf 961 960 1065 939 940\nf 1127 1126 932 933\nf 930 988 987 924\nf 774 775 776 773\nf 691 474 682 692\nf 496 495 353 1402 1399\nf 414 415 1387 1384\nf 511 510 408 1394 1391\nf 480 1229 1227 468\nf 1669 467 1667\nf 477 478 466\nf 685 683 463 686\nf 1667 467 465\nf 1436 465 457 455 1437\nf 1429 686 463 1431\nf 455 1223 1221 449\nf 1657 1412 525 524 1655\nf 1419 1417 447 446\nf 441 1219 1217 432\nf 438 439 429 428\nf 430 1215 1213 419\nf 429 532 531 520 519 418\nf 419 1213 1211 408\nf 416 417 414 413\nf 1446 298 368 1442\nf 367 391 389\nf 388 1548 1546 487\nf 343 322 1444 1443\nf 330 328 327 329\nf 322 321 1439 1444\nf 359 370 342\nf 1561 363 371 1559\nf 310 311 305 304\nf 365 343 378 366\nf 343 345 322\nf 347 350 256 255\nf 281 331 329 273\nf 1521 273 329 327 1522\nf 1522 327 325 1519\nf 259 260 253 254\nf 254 253 1451\nf 1440 324 254 1454\nf 1519 325 323 1516\nf 272 273 1521 1524\nf 280 281 273 272\nf 322 348 347\nf 380 379 1443\nf 383 381 305\nf 309 310 304 303\nf 391 367 315 316 342\nf 324 1440 1439 321 323\nf 332 330 329 331\nf 351 352 310 309\nf 492 1547 1549 385\nf 417 418 415 414\nf 428 429 418 417\nf 513 529 528 430 419 514\nf 439 533 532 429\nf 446 447 438 437\nf 1417 1415 448 447\nf 525 1412 1411 449 441 526\nf 462 687 1429 1427\nf 1665 465 1436 1663\nf 466 1664 464\nf 473 689 688 462\nf 464 474 466\nf 1666 466 478\nf 479 480 468 467\nf 1637 511 1391 1635\nf 413 414 1384 1382\nf 1541 496 1399 1539\nf 683 684 463\nf 979 978 930 924 925\nf 1586 988 930 1588\nf 1128 1127 933 934\nf 1601 961 940 1599\nf 1618 1616 953\nf 1628 1626 1008\nf 1009 998 999\nf 778 776 775 1012\nf 1008 1626 1624\nf 1017 1010 1019 1018\nf 1022 775 774\nf 1224 1018 1030 1222\nf 1020 1021 1033 1032\nf 1222 1030 1042 1220\nf 1032 1033 1036 1043\nf 1036 1037 1045 1044\nf 944 1044 1052 945\nf 1051 949 948 964 963 1061\nf 1052 1053 1063 1062\nf 972 940 939 1072 973\nf 1077 929 927 926\nf 973 1072 1079 975\nf 1078 925 924 928\nf 1079 1080 933 932\nf 1113 1101 1100 1167\nf 1114 1092 1090\nf 1126 1127 1164 1163\nf 1145 1143 1144 1146\nf 1495 1494 1151 1152 1154\nf 1135 1158 1159 1114\nf 984 1163 1167 1098 1096 985\nf 1110 1107 1115 1118\nf 1500 1102 1101 1113 1501\nf 1130 1153 1154 1205\nf 1144 1186 1192 1146\nf 1146 1192 1527 1526 1148\nf 1148 1526 1529 1150\nf 1511 256 1205 1513\nf 1436 1437 1435\nf 1442 1443 1441\nf 1498 1499 1500\nf 1508 1509 1507\nf 1526 1527 1525\nf 1416 1414 1413 1415\nf 1427 1429 1430 1428\nf 1663 1436 1435 1661\nf 1449 1446 1445 1447\nf 1497 1494 1493 1496\nf 1506 1508 1507 1504\nf 1519 1516 1515 1518\nf 1525 1528 1529 1526\nf 1546 1548 1549 1547\nf 1591 1589 1588 1590\nf 1619 1617 1616 1618\nf 1625 1624 1626\nf 1655 1653 1652 1654\nf 1663 1661 1660 1662\nf 1665 1664 1666\nf 1105 1103 1134\nf 1136 1122 1121\nf 1500 1499 1153 1134\nf 924 987 1125 928\nf 686 1429 687\nf 370 359 1560 1558\nf 1394 408 536\nf 775 1022 1021 1012\nf 1134 1103 1500\nf 1105 1134 1116\nf 376 374 366\nf 1666 1667 1665\nf 1656 1658 1659 1657\nf 1627 1625 1626\nf 1623 1621 1620 1622\nf 1599 1597 1596 1598\nf 1558 1560 1561 1559\nf 1538 1540 1541 1539\nf 1524 1521 1520 1523\nf 1512 1510 1511 1513\nf 1503 1498 1501 1502\nf 1450 1453 1454 1451\nf 1444 1439 1438 1441\nf 1431 1433 1434 1432\nf 1420 1418 1417 1419\nf 1659 1410 1412 1657\nf 1516 1517 1515\nf 1500 1501 1498\nf 1451 1452 1450\nf 1443 1444 1441\nf 1151 1494 1497 1206\nf 1202 1149 1151 1206\nf 1196 1197 1202 1201\nf 1190 1191 1197 1196\nf 1184 1185 1191 1190\nf 1130 1129 1153\nf 1168 1169 1173 1172\nf 1164 1165 1169 1168\nf 1114 1090 1089 1135\nf 1136 1137 1156 1157\nf 1149 1147 1148 1150\nf 1129 1132 1153\nf 990 1093 1114\nf 1114 1093 1092\nf 1172 1502 1501 1113\nf 1591 976 931 1589\nf 1073 1074 1081 1080\nf 1599 940 972 1597\nf 938 937 1074 1073\nf 1062 1063 1066 1065\nf 1609 946 957 1607\nf 1045 1046 1054 1053\nf 1220 1042 1050 1218\nf 1034 1035 1038 1037\nf 952 1031 1620 1618 953\nf 1022 1023 1035 1034\nf 1019 1622 1620 1031\nf 1226 1017 1018 1224\nf 1625 1011 1020 1623\nf 1008 1624 1010\nf 1228 1007 1017 1226\nf 999 1002 1009\nf 997 1628 1008\nf 1230 996 1007 1228\nf 929 1071 967 966 941 927\nf 1065 1066 938 939\nf 1126 982 981 931 932\nf 941 970 969 926 927\nf 778 1012 777\nf 690 691 689\nf 353 352 1404 1402\nf 415 517 516 1389 1387\nf 1655 524 1653\nf 478 1668 1666\nf 690 476 477 474 691\nf 464 682 474\nf 467 468 457 465\nf 466 1666 1664\nf 463 464 1433 1431\nf 1437 455 449 1411\nf 1413 1656 1654 440\nf 448 440 534 533 439\nf 526 441 432 521\nf 437 438 428 427\nf 531 1644 1642 520\nf 514 419 408 510\nf 298 304 305 368\nf 353 495 493 311\nf 348 322 345\nf 328 326 325 327\nf 391 342 392\nf 383 305 311 493 492 385\nf 1359 1358 299 316 315\nf 380 1443 1442 368\nf 322 347 255 321\nf 332 282 274 330\nf 330 274 266 328\nf 328 266 259 326\nf 256 1511 1517 255\nf 1454 254 1451\nf 255 1517 1516 323 321\nf 326 259 254 324\nf 266 267 260 259\nf 274 275 267 266\nf 282 283 275 274\nf 297 298 1446 1449\nf 303 304 298 297\nf 378 376 366\nf 316 299 317\nf 342 341 359\nf 341 342 316 317\nf 326 324 323 325\nf 1443 378 343\nf 352 353 311 310\nf 388 367 389\nf 380 368 305 381\nf 536 408 1211 1209\nf 418 519 517 415\nf 427 428 417 416\nf 1645 529 513 1643\nf 432 1217 1215 430\nf 521 432 430 528\nf 447 448 439 438\nf 1415 1413 440 448\nf 449 1221 1219 441\nf 457 1225 1223 455\nf 464 1664 1662 1433\nf 1667 465 1665\nf 468 1227 1225 457\nf 475 476 690 689 473\nf 466 474 477\nf 1669 479 467\nf 440 1654 1652 534\nf 516 1636 1634 1389\nf 352 351 1375 1404\nf 489 1540 1538 1397\nf 686 687 688 685\nf 969 979 925 926\nf 981 1587 1589 931\nf 1066 1067 937 938\nf 966 1600 1598 941\nf 996 997 1008 1007\nf 998 1009 1627\nf 1012 1011 779\nf 1627 1011 1625\nf 1010 1624 1622 1019\nf 774 1013 1023 1022\nf 1623 1020 1032 1621\nf 1030 1031 952 951 1042\nf 1033 1034 1037 1036\nf 1037 1038 1046 1045\nf 1044 1045 1053 1052\nf 1216 1051 1061 1214\nf 957 946 945 1052 1062 958\nf 1214 1061 1071 1212\nf 1063 1064 1067 1066\nf 1212 1071 929 1077 1210\nf 1078 1077 926 925\nf 1299 1210 1077 1078 1300\nf 976 975 1079 932 931\nf 1168 1172 1113 1167\nf 982 1126 1163 984\nf 1103 1102 1500\nf 1151 1149 1150 1152\nf 1137 1139 1155 1156\nf 1566 1122 1111 1568\nf 1160 991 990 1114 1159\nf 1357 1362 1160 1159\nf 1098 1167 1100\nf 1172 1173 1505 1502\nf 1185 1143 1145 1191\nf 1191 1145 1147 1197\nf 1197 1147 1149 1202\nf 1201 1202 1206 1207\nf 1206 1497 1207\nf 1300 1301 1302 1299\nf 1411 1412 1410\nf 1448 1449 1447\nf 1505 1506 1504\nf 1521 1522 1520\nf 1418 1416 1415 1417\nf 1433 1662 1660 1434\nf 1446 1442 1441 1445\nf 1453 1438 1440 1454\nf 1504 1503 1502 1505\nf 1517 1511 1510 1515\nf 1523 1525 1527 1524\nf 1569 1567 1566 1568\nf 1589 1587 1586 1588\nf 1609 1607 1606 1608\nf 1625 1623 1622 1624\nf 1629 1627 1626\nf 1645 1643 1642 1644\nf 1665 1663 1662 1664\nf 1668 1669 1667\nf 1105 1116 1115\nf 1122 1136 1135\nf 1093 990 1580 1578\nf 682 464 463\nf 359 341 360\ns 150\nf 482 481 995 994 993 1001 1000 999 998 1629 1628 997 996 1230 1229 480 479 1669 1668 478 477 476 475 484 483\ns 36\nf 1396 354 490 489 1397\nf 1158 1157 299\nf 1208 1301 1300 1078 928 1125 355\nf 336 340 318 319\nf 299 320 319\nf 299 319 318\nf 340 341 317 318\nf 354 355 1361 1360 314\nf 403 1209 1320 1319 401\nf 1061 963 967 1071\nf 1139 337 320 1155\nf 299 1156 1155\nf 1318 1319 1320 1317\nf 536 1209 403\nf 388 487 367\nf 1361 1362 1360\nf 1301 1208 1318 1317 1302\nf 1156 299 1157\nf 1125 987 991 1160\nf 354 1396 537\nf 537 401 1319 1318 1208\nf 337 336 319 320\nf 318 317 299\nf 1360 1359 315 314\nf 487 486 314 315 367\nf 490 354 314 486\nf 1361 355 1125 1160 1362\nf 299 1155 320\nf 537 1208 355 354\ns 103\nf 779 1009 1002\nf 999 1000 771 770 1002\nf 1002 770 769 779\nf 771 1000 1001 1003 772\nf 771 772 770\nf 772 1003 1013 773\nf 779 1011 1009\ns 129\nf 1050 956 949 1051\ns 147\nf 1210 1299 1297\ng access5\ns 31\nf 1468 1481 1484 1466\nf 1488 1457 1456 1486\nf 1487 1464 1466 1484\nf 1469 1473 1482 1481 1468\nf 1486 1456 1460 1464 1487\nf 1474 1477 1482 1473\ng fuslage2\nf 616 301 618\nf 1381 597 411 412\nf 845 1171 847\nf 1490 1458 1457 1488\nf 1479 1480 1482 1477\nf 1467 1470 1469 1468\nf 1460 1456 1455 1461\nf 1421 1420 1419 1422\nf 1478 1479 1477\nf 1458 1459 1457\nf 1204 1203 1472 1471\nf 264 1198 1467 1465\nf 1193 1194 1199 1198\nf 1187 1188 1194 1193\nf 1181 1182 1188 1187\nf 1171 300 1492 1478\nf 1171 843 841\nf 1165 858 856 1169\nf 1074 1075 1082 1081\nf 1069 1076 865\nf 937 936 1075 1074\nf 1064 1058 1068 1067\nf 1048 1049 1057 1056\nf 1041 442 433 1049\nf 1029 450 442 1041\nf 1025 1026 1029 1028\nf 1026 456 450 1029\nf 1014 1015 1025 1024\nf 1004 1005 1015\nf 995 481 469 1006\nf 993 994 1005\nf 859 1123 861\nf 846 847 848\nf 846 844 845 847\nf 619 617 616 618\nf 598 1378 1376 593\nf 412 413 1382 1381\nf 475 473 472\nf 472 473 462 461\nf 461 462 1427 1426\nf 454 1425 1423 452\nf 451 452 444 443\nf 443 444 435 434\nf 434 435 425 424\nf 423 416 413 412\nf 405 410 411\nf 404 405 398 402\nf 356 357 308 307\nf 306 621 620 301 300\nf 302 297 1449 1448 296\nf 296 1448 1452 258\nf 284 285 277 276\nf 276 277 269 268\nf 268 269 262 261\nf 261 262 1462 1461 257\nf 1452 1451 253 257 258\nf 262 263 1463 1462\nf 269 270 263 262\nf 277 278 270 269\nf 285 286 278 277\nf 1459 296 258\nf 300 301 1490 1492\nf 301 616 614\nf 307 308 622 621 306\nf 409 410 405 404\nf 420 421 410 409\nf 424 425 422 421\nf 431 424 421 420\nf 435 436 426 425\nf 444 445 436 435\nf 452 1423 1422 445 444\nf 456 453 451 450\nf 460 461 1426 1425 454\nf 471 472 461\nf 481 482 470 469\nf 483 484 471\nf 602 600 358\nf 613 614 615\nf 617 615 614 616\nf 844 842 843 845\nf 1075 863 868 1082\nf 1067 1068 936 937\nf 1001 1004 1003\nf 1003 1004 1014 1013\nf 1013 1014 1024 1023\nf 1024 1025 1028 1027\nf 1028 1029 1041 1040\nf 1040 1041 1049 1048\nf 1049 433 431 1057\nf 1054 1055 1058 1064\nf 1058 1059 1069 1068\nf 936 1068 1069 864 863 1075\nf 1076 404 402 1083\nf 1081 1082 935 934\nf 839 1166 307 306 840\nf 1170 851 849\nf 848 847 1171 1478 1476\nf 1174 1472 1203\nf 287 1181 1187 279\nf 279 1187 1193 271\nf 271 1193 1198 264\nf 1198 1199 1470 1467\nf 1207 1509 1508 1203 1204\nf 1461 1462 1460\nf 1481 1482 1480\nf 1424 1421 1423 1425\nf 1464 1460 1462 1463\nf 1471 1472 1473 1469\nf 1484 1481 1480 1483\nf 1492 1490 1489 1491\nf 853 1170 855\nf 618 301 620\nf 608 302 610\nf 843 1171 845\nf 1488 1486 1485 1489\nf 1477 1474 1476 1478\nf 1465 1467 1468 1466\nf 1459 1455 1456 1457\nf 1489 1490 1488\nf 1475 1476 1474\nf 1422 1423 1421\nf 1200 1201 1207 1204\nf 1194 1195 1200 1199\nf 1188 1189 1195 1194\nf 1182 1183 1189 1188\nf 1479 1491 1483 1480\nf 1174 1475 1472\nf 1505 1173 1170 1174 1506\nf 841 840 306 300 1171\nf 1124 356 307 1166\nf 1083 402 356 1124\nf 1070 409 404 1076\nf 1060 420 409 1070\nf 1056 1057 1060 1059\nf 1057 431 420 1060\nf 1047 1048 1056 1055\nf 1038 1039 1047 1046\nf 1035 1027 1039 1038\nf 1015 1016 1026 1025\nf 1005 1006 1016 1015\nf 994 995 1006 1005\nf 1001 993 1004\nf 935 862 861 1123\nf 839 840 841 838\nf 623 619 618 620\nf 613 615 612\nf 593 1376 1373 599\nf 351 358 1372 1375\nf 484 472 471\nf 471 461 460\nf 469 470 459 458\nf 458 459 453 456\nf 453 454 452 451\nf 450 451 443 442\nf 442 443 434 433\nf 433 434 424 431\nf 426 427 416 423\nf 422 423 412 411\nf 597 1381 1378 598\nf 602 358 351 309 603\nf 606 605 303 297 302\nf 1458 613 612 302 296 1459\nf 1459 258 1455\nf 1491 1489 1485 1483\nf 283 284 276 275\nf 275 276 268 267\nf 267 268 261 260\nf 260 261 257 253\nf 258 257 1461 1455\nf 263 264 1465 1463\nf 270 271 264 263\nf 278 279 271 270\nf 286 287 279 278\nf 301 614 613 1458 1490\nf 302 608 606\nf 603 309 303 605\nf 402 398 357 356\nf 411 597 596 405\nf 421 422 411 410\nf 425 426 423 422\nf 436 437 427 426\nf 445 446 437 436\nf 1422 1419 446 445\nf 459 460 454 453\nf 470 471 460 459\nf 482 483 471 470\nf 472 484 475\nf 599 1373 1372 358 600\nf 621 622 623 620\nf 842 838 841 843\nf 848 849 846\nf 1082 868 862 935\nf 1123 1128 934 935\nf 1005 1004 993\nf 1004 1015 1014\nf 1006 469 458 1016\nf 1016 458 456 1026\nf 1023 1024 1027 1035\nf 1027 1028 1040 1039\nf 1039 1040 1048 1047\nf 1046 1047 1055 1054\nf 1055 1056 1059 1058\nf 1059 1060 1070 1069\nf 864 1069 865\nf 1069 1070 1076\nf 1128 1123 859 858 1165\nf 1169 856 855 1170 1173\nf 1170 849 848 1476 1475 1174\nf 1506 1174 1203 1508\nf 1183 1184 1190 1189\nf 1189 1190 1196 1195\nf 1195 1196 1201 1200\nf 1470 1199 1200 1204 1471\nf 1425 1426 1424\nf 1470 1471 1469\nf 1486 1487 1485\nf 1426 1427 1428 1424\nf 1466 1464 1463 1465\nf 1474 1473 1472 1475\nf 1483 1485 1487 1484\nf 1491 1479 1478 1492\nf 851 1170 853\nf 610 302 612\ns off\nf 597 598 595\nf 864 866 863\nf 864 865 866\nf 595 596 597\ns 76\nf 609 607 606 608\nf 593 599 629 628 594\nf 603 604 602\nf 629 599 600 601 630\nf 611 609 608 610\nf 630 631 628\nf 629 630 628\nf 625 626 631 630 601\nf 603 605 607 604\nf 598 593 594 595\nf 606 607 605\nf 600 602 604 601\nf 615 611 610 612\ns 116\nf 868 863 866 867\nf 856 858 857 854\nf 830 835 836 860 831\nf 831 832 833\nf 854 852 853 855\nf 832 862 868 867 833\nf 855 856 854\nf 859 861 860 857\nf 850 846 849 851\nf 833 830 831\nf 852 850 851 853\nf 861 862 832 831 860\nf 858 859 857\ng access4\ns 31\nf 1525 1523 265 1528\nf 1498 1496 1493\nf 1445 1438 1453\nf 1523 1520 1518 265\nf 1503 1504 1507 1496\nf 1528 265 1510 1512\nf 1447 1445 1453 1450\nf 265 1518 1515 1510\nf 1445 1441 1438\nf 1498 1503 1496\ng nose\nusemtl black\nf 1142 1179 1186 1144\nf 1175 1176 1183 1182\nf 334 332 331 333\nf 292 293 283 282\nf 288 289 287 286\nf 334 292 282 332\nf 295 288 286 285\nf 1176 1177 1184 1183\nf 1179 290 280 1186\nf 1178 1141 1143 1185\nf 1180 1175 1182 1181\nf 293 294 284 283\nf 290 291 281 280\nf 291 333 331 281\nf 294 295 285 284\nf 1143 1141 1142 1144\nf 1177 1178 1185 1184\nf 289 1180 1181 287\ns off\nf 288 295 294 293 292 334 333 291 290 1179 1142 1141 1178 1177 1176 1175 1180 289\ng glass\ns 31\nusemtl glass\nf 1717 1718 1721 1714\nf 1684 1673 1672 1685\nf 1695 346 1696\nf 1700 1563 1701\nf 1723 339 1724\nf 1707 338 1708\nf 1716 1679 1678 1717\nf 1693 1702 1705 1690\nf 1683 1686 1689 1684\nf 1725 1722 1723 1724\nf 1709 1706 1707 1708\nf 1693 1690 1691 1692\nf 1676 1677 1674\nf 1649 1647 1646 1648\nf 1613 1611 1610 1612\nf 1585 1583 1582 1584\nf 1573 1571 1570 1572\nf 1681 1688 1709 1710\nf 1552 1554 1555 1553\nf 1133 1131 1676\nf 1577 1095 1162 1575\nf 1104 1106 1108 1109 1161 1099\nf 1162 1097 1099\nf 1086 1088 1572\nf 1570 1112 1085\nf 1595 974 977 1593\nf 1613 942 947 1611\nf 1651 523 522 1649\nf 1641 512 509 1639\nf 1552 1550 387 390\nf 494 1543 1545 491\nf 386 1551 1553 312\nf 346 344 1726\nf 1695 1682 349 346\nf 1691 1686 1683 1694\nf 1563 1728 362\nf 1723 1562 361 339\nf 372 373 375 377 382 313\nf 384 312 313\nf 396 369 1556 1554\nf 1554 1552 390 393\nf 1649 522 527 1647\nf 954 1614 1612 955\nf 1605 959 962 1603\nf 1162 1095 1097\nf 1573 1161 1109 1571\nf 1711 1708 338 1140\nf 1575 1162 1161 1573\nf 1689 1680 1673 1684\nf 1685 1672 1131 349\nf 1550 1552 1553 1551\nf 1562 1722 1701 1563\nf 1717 1678 1713 1718\nf 1595 1593 1592 1594\nf 1651 1649 1648 1650\nf 1681 1678 1679 1680\nf 1697 1694 1695 1696\nf 1713 1710 1711 1712\nf 1729 1726 1727 1728\nf 1691 1694 1697 1692\nf 1687 1706 1709 1688\nf 1712 1719 1718 1713\nf 1704 1707 1706 1705\nf 1701 1722 1725 1698\nf 1727 362 1728\nf 1682 1695 1694 1683\nf 1675 1133 1676\nf 1565 1715 1714\nf 1720 1564 1721\nf 1715 1674 1677 1716\nf 349 1682 1685\nf 1696 1726 1729 1697\nf 1699 1729 1728 1700\nf 1724 1703 1702 1725\nf 1708 1711 1710 1709\nf 1681 1710 1713 1678\nf 1686 1691 1690 1687\nf 1679 1670 1673 1680\nf 1721 1718 1719 1720\nf 1705 1702 1703 1704\nf 1689 1686 1687 1688\nf 1673 1670 1671 1672\nf 1615 1613 1612 1614\nf 1575 1573 1572 1574\nf 1705 1706 1687 1690\nf 1554 1556 1557 1555\nf 1542 1544 1545 1543\nf 1117 1133 1675 1119\nf 1715 1565 1119 1674\nf 1564 1720 1138 1120\nf 1585 983 986 1583\nf 1576 1574 1091 1094\nf 971 1594 1592 980\nf 955 1612 1610 950\nf 1650 1648 535\nf 518 1640 1638 515\nf 1554 393 395 396\nf 384 313 382\nf 1542 488 485 1544\nf 1707 1704 335 338\nf 312 1553 1555 313\nf 1563 1700 1728\nf 344 364 362 1727\nf 346 1726 1696\nf 1699 1692 1697 1729\nf 1703 1724 339 335\nf 313 1555 1557 372\nf 312 384 386\nf 535 1648 1646 530\nf 1615 942 1613\nf 965 1604 1602 968\nf 1574 1572 1088 1091\nf 1085 1086 1572 1570\nf 1162 1099 1161\nf 989 1584 1582 992\nf 1719 1712 1140 1138\nf 1679 1716 1677 1670\nf 1131 1671 1676\nf 1725 1702 1693 1698\nf 1565 1714 1721 1564\nf 1577 1575 1574 1576\nf 1605 1603 1602 1604\nf 1641 1639 1638 1640\nf 1674 1675 1676\nf 1685 1682 1683 1684\nf 1701 1698 1699 1700\nf 1717 1714 1715 1716\nf 1670 1677 1676 1671\nf 1692 1699 1698 1693\nf 1680 1689 1688 1681\nf 1711 1140 1712\nf 1703 335 1704\nf 1562 1723 1722\nf 1726 344 1727\nf 1671 1131 1672\nf 1674 1119 1675\nf 1719 1138 1720\ng wings\nusemtl white\nf 882 808 810\nf 838 922 923 1166 839\nf 907 908 911 910\nf 903 904 922 921\nf 810 812 884 882\nf 907 906 881 883\nf 811 813 812 810\nf 654 656 657 655\nf 649 647 646\nf 655 657 558 557\nf 556 557 539 538\nf 552 538 308 357\nf 538 539 623 622 308\nf 671 670 615 617\nf 555 556 538 552\nf 559 560 542 541\nf 653 655 557 556\nf 647 649 577 575\nf 652 654 655 653\nf 809 811 810 808\nf 815 814 812\nf 808 882 881 906 905\nf 902 903 921 920\nf 906 907 910 909\nf 791 790 844 846\nf 579 653 556 555 580\nf 671 619 540 541\nf 921 922 838 842\nf 923 909 1124 1166\nf 904 905 923 922\nf 883 885 908 907\nf 804 806 904 903\nf 812 813 815\nf 805 807 806 804\nf 648 650 651 649\nf 555 554 578 580\nf 576 578 554 553\nf 557 558 540 539\nf 553 554 551 550\nf 539 540 619 623\nf 619 671 617\nf 554 555 552 551\nf 558 559 541 540\nf 646 648 649\nf 650 652 653 651\nf 807 809 808 806\nf 812 814 886 884\nf 806 808 905 904\nf 901 902 920 919\nf 905 906 909 923\nf 790 920 921 842\nf 790 842 844\ns 78\nf 648 642 640 650\nf 642 648 646 644\nf 666 664 662 660 658 656 654 652 650 640 636 638\ns 67\nf 668 607 609\nf 674 564 563\nf 675 677 569\nf 666 638 639 667\nf 644 645 643\nf 635 628 631 632\nf 570 587 586 566 565\nf 586 585 572 567 566\nf 564 565 547 546\nf 560 561 543 542\nf 669 668 609 611\nf 668 544 545 607\nf 561 562 544 543\nf 565 566 634 633 547\nf 572 574 568 567\nf 674 570 565 564\nf 591 641 643 571 592\nf 640 642 643 641\nf 676 677 675\nf 677 639 637 569\nf 672 674 563\nf 667 677 676\nf 674 673 570\nf 664 666 667 665\nf 638 636 637 639\nf 643 645 573 571\nf 665 667 563 562\nf 567 568 549 548\nf 563 564 546 545\nf 546 547 601 604\nf 670 669 611 615\nf 545 546 604 607\nf 562 563 545 544\nf 634 566 567 548 635\nf 667 676 672 563\nf 637 641 591 590 569\nf 636 640 641 637\nf 643 642 644\nf 673 674 672\nf 667 639 677\nf 673 675 569 570\ns off\nf 827 828 829\nf 873 878 879 891 874\nf 869 870 871\nf 782 783 786 785\nf 681 678 675 673\nf 679 678 681 680\nf 624 625 601 547\nf 590 592 589\nf 582 583 588 587 570\nf 581 582 570 569\nf 587 588 585\nf 680 681 673 672\nf 781 782 785 789\nf 834 835 830 829\nf 874 875 876\nf 879 880 892 891\nf 634 635 632\nf 837 834 829 828 914\nf 633 634 632\nf 837 836 835 834\nf 874 876 873\nf 836 837 914 860\nf 783 782 781 780\nf 783 780 788 786\nf 678 679 676 675\nf 585 586 587\nf 625 624 627 626\nf 589 584 581 569 590\nf 590 591 592\nf 626 627 632 631\nf 679 680 672 676\nf 780 781 789 788\nf 871 872 869\nf 880 877 872 871 892\nf 632 627 624 547 633\nf 829 826 827\ns 69\nf 574 576 553 568\nf 645 647 575 573\nf 644 646 647 645\nf 568 553 550 549\ns 39\nf 649 651 579 577\nf 653 579 651\ns 106\nf 892 824 822 784\nf 787 789 898\nf 792 791 846 850\nf 914 915 857 860\nf 897 898 916 915\nf 893 894 913 912\nf 794 796 899 898\nf 870 820 824 892 871\nf 821 825 824 820\nf 817 819 818\nf 785 786 784\nf 818 820 870 869 890\nf 875 874 891 896 895\nf 887 889 894 893\nf 896 897 915 914\nf 900 901 919 918\nf 793 792 850 852\nf 789 785 794 898\nf 892 784 786\nf 793 854 916 917\nf 785 784 794\nf 891 892 786 788\nf 915 916 854 857\nf 898 899 917 916\nf 894 895 827 826 913\nf 787 898 897\nf 816 818 890 888\nf 819 821 820 818\nf 788 789 787\nf 818 816 817\nf 833 826 829 830\nf 891 787 897 896\nf 889 876 875 895 894\nf 827 895 896 914 828\nf 899 900 918 917\nf 854 793 852\nf 891 788 787\nf 784 822 794\ns 110\nf 823 795 794 822\nf 825 823 822 824\nf 795 797 796 794\ns 113\nf 815 817 816 814\nf 908 893 912 911\nf 814 816 888 886\nf 885 887 893 908\ns 112\nf 821 819 813 811\nf 821 811 809 807 805 803 801 799 797 795 823 825\nf 813 819 817 815\ng gtrim\ns 31\nusemtl dkgrey\nf 1084 1135 1087\nf 1615 1614 1616\nf 1597 1595 1594 1596\nf 1563 1561 1560\nf 1559 1557 1556 1558\nf 1547 1545 1544 1546\nf 1535 1531 1530 1534\nf 1121 1120 1138 1137 1136\nf 1121 1122 1120\nf 1118 1115 1117 1119\nf 1112 1570 1568 1111\nf 1106 1104 1103 1105\nf 1579 1096 1095 1577\nf 1086 1085 1084 1087\nf 991 992 990\nf 979 980 978\nf 967 968 966\nf 1583 986 985 1581\nf 980 1592 1590 978\nf 970 1596 1594 971\nf 962 959 958 960\nf 949 950 948\nf 950 1610 1608 948\nf 953 1616 1614 954\nf 530 1646 1644 531\nf 534 535 533\nf 1643 513 512 1641\nf 1639 509 511 1637\nf 505 1630 1532 503\nf 1540 489 488 1542\nf 1544 485 487 1546\nf 513 514 512\nf 501 502 500\nf 489 490 488\nf 393 390 389 391\nf 386 384 383 385\nf 382 378 379\nf 372 1557 1559 371\nf 363 1561 1563 362\nf 346 349 350 347\nf 335 339 340 336\nf 392 342 394\nf 339 361 360 341 340\nf 360 361 359\nf 366 363 362 364\nf 1556 369 370 1558\nf 377 375 376 378\nf 385 1549 1551 386\nf 396 395 394 397\nf 486 487 485\nf 498 499 497\nf 510 511 509\nf 490 486 485 488\nf 496 1541 1543 494\nf 503 500 502 504\nf 514 510 509 512\nf 520 1642 1640 518\nf 525 526 523\nf 526 521 522 523\nf 535 530 532 533\nf 1617 943 942 1615\nf 956 951 954 955\nf 952 953 954\nf 1607 957 959 1605\nf 979 969 971 980\nf 1593 977 976 1591\nf 986 983 982 984\nf 958 959 957\nf 976 977 975\nf 988 989 987\nf 1091 1088 1090 1092\nf 1097 1095 1096 1098\nf 1099 1102 1103\nf 1571 1109 1110 1569\nf 1567 1118 1119 1565\nf 349 1131 1130 350\nf 1138 1140 1139 1137\nf 1111 1135 1084\nf 1564 1566 1565\nf 1579 1577 1576 1578\nf 1587 1585 1584 1586\nf 1607 1605 1604 1606\nf 1631 1533 1532 1630\nf 1643 1641 1640 1642\nf 1087 1135 1089\nf 394 342 397\nf 1644 1646 1647 1645\nf 1636 1638 1639 1637\nf 1608 1610 1611 1609\nf 1600 1602 1603 1601\nf 1580 1582 1583 1581\nf 1568 1570 1571 1569\nf 1566 1567 1565\nf 1130 1131 1129\nf 1133 1117 1116 1134 1132\nf 1116 1117 1115\nf 1089 1090 1088\nf 1108 1106 1105 1107\nf 1103 1104 1099\nf 1093 1578 1576 1094\nf 1085 1112 1111 1084\nf 982 983 981\nf 970 971 969\nf 992 1582 1580 990\nf 988 1586 1584 989\nf 1597 972 974 1595\nf 1603 962 961 1601\nf 952 954 951\nf 946 947 945\nf 1611 947 946 1609\nf 1653 524 523 1651\nf 1647 527 529 1645\nf 531 532 530\nf 523 524 525\nf 515 1638 1636 516\nf 1631 507 506 1533\nf 1530 497 499 1534\nf 491 1545 1547 492\nf 516 517 515\nf 504 505 503\nf 492 493 491\nf 395 393 392 394\nf 388 389 390 387\nf 384 382 381 383\nf 373 372 371 374\nf 380 381 382 379\nf 361 1562 1560 359\nf 344 346 348 345\nf 338 335 336 337\nf 347 348 346\nf 365 364 344 345 343\nf 365 366 364\nf 392 393 391\nf 375 373 374 376\nf 382 377 378\nf 1548 388 387 1550\nf 369 396 397 370\nf 495 496 494\nf 507 508 506\nf 519 520 518\nf 494 491 493 495\nf 500 1531 1535 501\nf 508 498 497 506\nf 518 515 517 519\nf 528 529 527\nf 521 528 527 522\nf 534 1652 1650 535\nf 947 942 944 945\nf 943 944 942\nf 964 1606 1604 965\nf 968 1602 1600 966\nf 977 974 973 975\nf 1587 981 983 1585\nf 961 962 960\nf 973 974 972\nf 985 986 984\nf 1088 1086 1087 1089\nf 1092 1093 1094 1091\nf 1099 1097 1098 1100\nf 1109 1108 1107 1110\nf 1100 1101 1102 1099\nf 1564 1120 1122 1566\nf 1131 1133 1132 1129\nf 1140 338 337 1139\nf 1540 1542 1543 1541\nf 1548 1550 1551 1549\nf 1563 1560 1562\nf 1590 1592 1593 1591\nf 1617 1615 1616\nf 1653 1651 1650 1652\nf 397 342 370\ns 129\nf 949 956 955 950\ns 36\nf 967 963 965 968\nf 964 965 963\nf 991 987 989 992\ng door2a\ns 31\nusemtl red\nf 1377 1371 1373 1376\nf 1377 399 1374 1371\nf 1372 1373 1371\nf 1379 1377 1376 1378\nf 1381 1382 1383 1380\nf 1375 1372 1371 1374\nf 1379 406 399 1377\nf 1380 1383 406 1379\nf 1380 1379 1378 1381\ng door2\nf 1402 1404 1405 1403\nf 1385 1386 1408 407\nf 400 1406 1403 1405\nf 407 1408 1406 400\nf 1384 1387 1386 1385\nf 1404 1375 1374 1405\nf 1383 1385 407 406\nf 399 400 1405 1374\nf 406 407 400 399\nf 1382 1384 1385 1383\ng door\nf 1633 1631 1630 1632\nf 1388 1409 1408 1386\nf 1539 1399 1400 1537\nf 1367 1393 1394 1368\nf 1387 1389 1390 1388\nf 1387 1388 1386\nf 508 507 1392 1393 1367\nf 1409 504 502 1407\nf 1407 502 501 1400 1401\nf 1390 1632 1630 505\nf 498 508 1367 1370\nf 1389 1634 1632 1390\nf 1397 1538 1536 1398\nf 1409 1407 1406 1408\nf 1635 1633 1632 1634\nf 1534 1536 1537 1535\nf 1399 1402 1401 1400\nf 1391 1394 1393 1392\nf 1402 1403 1401\nf 1388 1390 505 504 1409\nf 501 1535 1537 1400\nf 1534 499 1398 1536\nf 1633 1392 507 1631\nf 1398 499 498 1370 1395\nf 1370 1367 1368 1369\nf 1635 1391 1392 1633\nf 1396 1397 1398 1395\nf 1407 1401 1403 1406\nf 1539 1537 1536 1538\ns 36\nf 1369 401 537 1396\nf 1395 1370 1369 1396\nf 536 403 1368 1394\nf 403 401 1369 1368\ng dglass\ns 31\nusemtl glass\nf 1533 506 497 1530\nf 1533 1530 1531 1532\nf 503 1532 1531 500\ng cargo2\nf 1424 1428 1420 1421\nf 1428 1430 1418 1420\ng cargo\nf 1661 1659 1658 1660\nf 1432 1434 1414 1416\nf 1434 1660 1658 1414\nf 1430 1432 1416 1418\nf 1661 1435 1410 1659\ng flaps\ns off\nf 582 581 584 583\nf 592 585 588 589\nf 583 584 589 588\ns 67\nf 571 573 574 572\nf 635 548 594 628\nf 548 549 595 594\nf 592 571 572 585\ns 69\nf 549 550 405\nf 595 549 405 596\nf 573 575 576 574\ns 31\nf 550 551 398 405\nf 551 552 357 398\nf 575 577 578 576\ns 39\nf 577 579 580 578\ng deicing\ns 31\nusemtl black\nf 802 804 903 902\nf 658 660 661 659\nf 659 661 560 559\nf 541 542 670 671\nf 801 803 802 800\nf 800 802 902 901\nf 919 920 790 791\nf 656 658 659 657\nf 657 659 559 558\nf 803 805 804 802\ns 67\nf 542 543 669\nf 662 664 665 663\nf 661 663 561 560\nf 543 544 668 669\nf 660 662 663 661\nf 663 665 562 561\nf 542 669 670\ns 87\nf 713 715 685 688\ns 80\nf 715 717 683 685\ns 90\nf 744 746 776 778\ns 95\nf 746 748 773 776\ns 106\nf 798 800 901 900\nf 918 919 791\nf 796 798 900 899\nf 918 791 792\nf 917 918 792 793\ns 110\nf 797 799 798 796\nf 799 801 800 798\ns 148\nf 1336 1335 1270 1272 1241\ns 36\nf 1269 1271 1272 1270\nf 1281 1271 1269 1279\nf 1278 1280 1281 1279\ns 147\nf 1322 1242 1280 1278 1323\ng elevator\ns 86\nusemtl white\nf 706 710 708\nf 716 714 712 710 706 703 705\ns 83\nf 694 698 697 693\ns 82\nf 710 712 713 711\nf 694 688 689\nf 694 693 711 713 688\ns 80\nf 718 684 719\nf 717 720 719 684 683\nf 717 715 714\nf 700 684 718 701\nf 714 716 717\nf 684 700 682\nf 716 705 721 720 717\ns 87\nf 712 714 715 713\ns 90\nf 743 777 761 760\nf 740 756 745 744 741\nf 747 746 744\nf 761 777 779\nf 742 741 744 778 777\nf 744 745 747\nf 777 743 742\ns 95\nf 747 749 748 746\ns 96\nf 767 773 748 750 768\nf 749 751 750 748\nf 773 767 772\ns 98\nf 755 751 749 747 745 756 758\nf 755 753 751\ng rflaps\ns off\nf 737 738 759\nf 735 736 761\nf 732 733 741 742\nf 700 725 726\nf 702 723 724\nf 724 725 700 701\nf 736 737 760 761\nf 724 701 702\nf 726 699 700\nf 728 729 719 720\nf 735 761 762\nf 737 759 760\ns 80\nf 729 728 727\nf 706 708 709 707\nf 724 723 726 725\nf 702 695 696 699\nf 696 698 691 692\nf 701 704 707 695 702\nf 706 707 704\nf 721 722 720\nf 730 727 722 718\nf 726 723 702 699\nf 703 706 704\nf 722 704 701 718\nf 707 709 697 695\nf 682 699 696 692\nf 698 696 695 697\nf 721 705 703 704 722\nf 727 730 729\nf 699 682 700\ns 83\nf 689 691 698 694\nf 708 710 711 709\nf 709 711 693 697\ns 89\nf 727 728 720\nf 727 720 722\ns 88\nf 719 730 718\nf 730 719 729\ns 90\nf 763 765 769 770\nf 754 757 760 759 766\nf 758 756 740 739 757\nf 740 741 739\nf 738 735 762 759\nf 734 732 731\nf 755 758 754\nf 765 763 764 766\nf 779 762 761\nf 762 779 769 765\nf 766 759 762 765\nf 757 739 743 760\nf 758 757 754\nf 734 733 732\nf 734 731 743 739\nf 753 755 754 752\nf 738 737 736 735\nf 752 754 766 764\ns 91\nf 731 742 743\nf 731 732 742\ns 92\nf 734 741 733\nf 741 734 739\ns 97\nf 751 753 752 750\nf 750 752 764 768\nf 763 767 768 764\nf 770 772 767 763\ng flaps2\ns off\nf 876 869 872 873\nf 877 878 873 872\nf 880 879 878 877\ns 106\nf 913 826 833 867\nf 890 869 876 889\nf 912 913 867 866\nf 888 890 889 887\ns 113\nf 911 912 866\nf 886 888 887 885\nf 911 866 865 1076\ns 31\nf 884 886 885 883\nf 910 911 1076 1083\nf 882 884 883 881\nf 909 910 1083 1124\ng tail\ns 147\nf 1242 1330 1235\nf 1325 1253 1252 1240 1326\nf 1236 1231 1230 1228\nf 1287 1285 1222 1220\nf 1295 1293 1214 1212\nf 1255 1251 1262 1266\nf 1293 1291 1216 1214\nf 1285 1283 1224 1222\nf 1235 1282 1280 1242\nf 1257 1253 1325 1324 1276\nf 1325 1326 1324\nf 1330 1226 1235\nf 1252 1256 1237 1240\nf 1330 1242 1322 1321 1327\nf 1226 1330 1329 1236 1228\nf 1289 1287 1220 1218\nf 1297 1295 1212 1210\nf 1251 1254 1259 1262\nf 1291 1289 1218 1216\nf 1283 1282 1235 1226 1224\nf 1276 1324 1323 1278\nf 1322 1323 1321\ns 36\nf 1309 1311 1312 1310\nf 1274 1273 1303\nf 1298 1296 1295 1297\nf 1290 1288 1287 1289\nf 1286 1283 1285\nf 1264 1267 1268 1263\nf 1259 1263 1260\nf 1254 1253 1257\nf 1274 1275 1273\nf 1254 1258 1264 1259\nf 1290 1292 1309 1307\nf 1296 1298 1315 1313\nf 1288 1290 1307 1305\nf 1317 1315 1298 1302\nf 1284 1273 1271 1281\nf 1252 1251 1255\nf 1262 1259 1260 1261\nf 1266 1262 1261\nf 1271 1273 1275 1272\nf 1280 1282 1284 1281\nf 1292 1290 1289 1291\nf 1296 1294 1295\nf 1303 1305 1306 1304\nf 1313 1314 1312\nf 1320 1316 1315 1317\nf 1311 1313 1312\nf 1307 1309 1310 1308\nf 1302 1298 1297 1299\nf 1294 1293 1295\nf 1288 1286 1285 1287\nf 1276 1278 1279 1277\nf 1267 1269 1270 1268\nf 1261 1265 1266\nf 1255 1256 1252\nf 1283 1284 1282\nf 1267 1277 1279 1269\nf 1284 1286 1303 1273\nf 1292 1294 1311 1309\nf 1294 1296 1313 1311\nf 1286 1288 1305 1303\nf 1264 1258 1277 1267\nf 1254 1251 1252 1253\nf 1257 1258 1254\nf 1259 1264 1263\nf 1257 1276 1277 1258\nf 1286 1284 1283\nf 1294 1292 1291 1293\nf 1303 1304 1274\nf 1305 1307 1308 1306\nf 1313 1315 1316 1314\ns 150\nf 1256 1255 1266 1265 1238 1237\nf 1231 1232 1229 1230\ns 148\nf 1336 1337 1335\nf 1333 1241 1234\nf 1314 1316 1209 1211\nf 1306 1308 1217 1219\nf 1225 1333 1234\nf 1234 1275 1274 1223 1225\nf 1308 1310 1215 1217\nf 1275 1234 1241 1272\nf 1339 1260 1263 1268 1340\nf 1241 1333 1332 1337 1336\nf 1339 1340 1338\nf 1265 1261 1239 1238\nf 1312 1314 1211 1213\nf 1304 1306 1219 1221\nf 1232 1233 1227 1229\nf 1274 1304 1221 1223\nf 1310 1312 1213 1215\nf 1340 1268 1270 1335\nf 1261 1260 1339 1338 1239\nf 1333 1225 1227 1233 1334\ns off\nf 1330 1353 1354\nf 1351 1352 1321 1323\nf 1347 1348 1335 1337\nf 1342 1343 1332 1333\nf 1341 1333 1334\nf 1350 1351 1323 1324\nf 1356 1353 1330 1327\nf 1348 1345 1340 1335\nf 1341 1342 1333\nf 1345 1346 1338 1340\nf 1349 1350 1324 1326\nf 1354 1329 1330\ng rudder\nf 1343 1344 1331 1332\nf 1355 1356 1327 1328\ns 150\nf 1250 1249 1247 1248\nf 1247 1249 1237 1238\nf 1250 1248 1232 1231\ns 148\nf 1246 1334 1233\nf 1334 1246 1245 1331\nf 1247 1245 1246 1248\nf 1346 1345 1348 1347\nf 1346 1347 1337 1338\nf 1331 1338 1337 1332\nf 1344 1341 1334 1331\nf 1331 1245 1239 1338\nf 1233 1232 1248 1246\nf 1342 1341 1344 1343\nf 1245 1247 1238 1239\ns 147\nf 1350 1349 1352 1351\nf 1231 1236 1244 1250\nf 1240 1237 1249 1243\nf 1354 1353 1356 1355\nf 1354 1355 1328 1329\nf 1244 1329 1328 1243\nf 1352 1349 1326 1321\nf 1250 1244 1243 1249\nf 1327 1321 1326 1328\nf 1244 1236 1329\nf 1328 1326 1240 1243\ng antanea\ns 31\nf 1364 1363 1366 1365\nf 1365 1366 1357 1359\ns off\nf 1366 1363 1362 1357\nf 1363 1364 1360 1362\nf 1364 1365 1359 1360\ng hub2\ns 171\nf 1884 1883 1875 1876\nf 1868 1867 1859 1860\nf 1852 1851 1843 1844\nf 1836 1835 1827 1828\nf 1820 1819 1811 1812\nf 1804 1803 1795 1796\nf 1788 1787 1779 1780\nf 1772 1771 1763 1764\nf 1756 1755 1747 1748\nf 1740 1739 1731 1732\nf 1748 1747 1739 1740\nf 1764 1763 1755 1756\nf 1780 1779 1771 1772\nf 1796 1795 1787 1788\nf 1812 1811 1803 1804\nf 1828 1827 1819 1820\nf 1844 1843 1835 1836\nf 1860 1859 1851 1852\nf 1876 1875 1867 1868\nf 1732 1731 1883 1884\ns 172\nf 1741 1740 1732 1733\nf 1757 1756 1748 1749\nf 1773 1772 1764 1765\nf 1789 1788 1780 1781\nf 1805 1804 1796 1797\nf 1821 1820 1812 1813\nf 1837 1836 1828 1829\nf 1853 1852 1844 1845\nf 1869 1868 1860 1861\nf 1885 1884 1876 1877\nf 1733 1732 1884 1885\nf 1877 1876 1868 1869\nf 1861 1860 1852 1853\nf 1845 1844 1836 1837\nf 1829 1828 1820 1821\nf 1813 1812 1804 1805\nf 1797 1796 1788 1789\nf 1781 1780 1772 1773\nf 1765 1764 1756 1757\nf 1749 1748 1740 1741\ns 173\nf 1886 1885 1877 1878\nf 1870 1869 1861 1862\nf 1854 1853 1845 1846\nf 1838 1837 1829 1830\nf 1822 1821 1813 1814\nf 1806 1805 1797 1798\nf 1790 1789 1781 1782\nf 1774 1773 1765 1766\nf 1758 1757 1749 1750\nf 1742 1741 1733 1734\nf 1750 1749 1741 1742\nf 1766 1765 1757 1758\nf 1782 1781 1773 1774\nf 1798 1797 1789 1790\nf 1814 1813 1805 1806\nf 1830 1829 1821 1822\nf 1846 1845 1837 1838\nf 1862 1861 1853 1854\nf 1878 1877 1869 1870\nf 1734 1733 1885 1886\ns 174\nf 1743 1742 1734 1735\nf 1759 1758 1750 1751\nf 1775 1774 1766 1767\nf 1791 1790 1782 1783\nf 1807 1806 1798 1799\nf 1823 1822 1814 1815\nf 1839 1838 1830 1831\nf 1855 1854 1846 1847\nf 1871 1870 1862 1863\nf 1887 1886 1878 1879\nf 1735 1734 1886 1887\nf 1879 1878 1870 1871\nf 1863 1862 1854 1855\nf 1847 1846 1838 1839\nf 1831 1830 1822 1823\nf 1815 1814 1806 1807\nf 1799 1798 1790 1791\nf 1783 1782 1774 1775\nf 1767 1766 1758 1759\nf 1751 1750 1742 1743\ns 170\nf 1736 1735 1887 1888\nf 1888 1887 1879 1880\nf 1880 1879 1871 1872\nf 1872 1871 1863 1864\nf 1864 1863 1855 1856\nf 1856 1855 1847 1848\nf 1848 1847 1839 1840\nf 1840 1839 1831 1832\nf 1832 1831 1823 1824\nf 1824 1823 1815 1816\nf 1816 1815 1807 1808\nf 1808 1807 1799 1800\nf 1800 1799 1791 1792\nf 1792 1791 1783 1784\nf 1784 1783 1775 1776\nf 1776 1775 1767 1768\nf 1768 1767 1759 1760\nf 1760 1759 1751 1752\nf 1752 1751 1743 1744\nf 1744 1743 1735 1736\nf 1746 1738 1730\nf 1754 1746 1730\nf 1762 1754 1730\nf 1770 1762 1730\nf 1778 1770 1730\nf 1786 1778 1730\nf 1794 1786 1730\nf 1802 1794 1730\nf 1810 1802 1730\nf 1818 1810 1730\nf 1826 1818 1730\nf 1834 1826 1730\nf 1842 1834 1730\nf 1850 1842 1730\nf 1858 1850 1730\nf 1866 1858 1730\nf 1874 1866 1730\nf 1882 1874 1730\nf 1890 1882 1730\nf 1738 1890 1730\nf 1737 1736 1888 1889\nf 1889 1888 1880 1881\nf 1881 1880 1872 1873\nf 1873 1872 1864 1865\nf 1865 1864 1856 1857\nf 1857 1856 1848 1849\nf 1849 1848 1840 1841\nf 1841 1840 1832 1833\nf 1833 1832 1824 1825\nf 1825 1824 1816 1817\nf 1817 1816 1808 1809\nf 1809 1808 1800 1801\nf 1801 1800 1792 1793\nf 1793 1792 1784 1785\nf 1785 1784 1776 1777\nf 1777 1776 1768 1769\nf 1769 1768 1760 1761\nf 1761 1760 1752 1753\nf 1753 1752 1744 1745\nf 1745 1744 1736 1737\nf 1746 1745 1737 1738\nf 1754 1753 1745 1746\nf 1762 1761 1753 1754\nf 1770 1769 1761 1762\nf 1778 1777 1769 1770\nf 1786 1785 1777 1778\nf 1794 1793 1785 1786\nf 1802 1801 1793 1794\nf 1810 1809 1801 1802\nf 1818 1817 1809 1810\nf 1826 1825 1817 1818\nf 1834 1833 1825 1826\nf 1842 1841 1833 1834\nf 1850 1849 1841 1842\nf 1858 1857 1849 1850\nf 1866 1865 1857 1858\nf 1874 1873 1865 1866\nf 1882 1881 1873 1874\nf 1890 1889 1881 1882\nf 1738 1737 1889 1890\ns off\nf 1739 1747 1755 1763 1771 1779 1787 1795 1803 1811 1819 1827 1835 1843 1851 1859 1867 1875 1883 1731\ng shroud\nf 2769 2758 3301 3300\nf 2453 2454 1911 1922\nf 2758 2769 2976 2975\nf 2128 2129 1922 1911\ns 183\nf 2642 2643 2646 2645\nf 2639 2640 2651 2650\nf 2644 2637 2648 2647\nf 2633 2634 2644 2643\nf 2629 2630 2640 2639\nf 2612 2604 2610\nf 2616 2628 2621 2611\nf 2604 2611 2621\nf 2641 2603 2618 2631\nf 2143 2133 2132 2142\nf 1961 1978 1972\nf 1954 1966 1971 1961\nf 1972 1970 1962\nf 1953 2144 2142 1941\nf 2145 1944 1942 2143\nf 1941 2142 2132 1928\nf 1974 1939 1951 1973\nf 2143 1942 1929 2133\nf 1944 1945 1943 1942\nf 1940 1927 1967 1966\nf 1966 1967 1969 1971\nf 1971 1969 1977 1978\nf 2145 2143 2144\nf 2439 2437 2438\nf 2641 2652 2601 2603\nf 2612 2620 2609 2608\nf 2605 2604 2612 2614\nf 2438 2629 2639 2440\nf 2634 2635 2637 2644\nf 2636 2437 2439\nf 2440 2639 2650 2450\nf 2641 2642 2645 2652\nf 1939 2608 2609 1951\nf 2643 2644 2647 2646\nf 1939 1926 2607 2608\nf 2637 2638 2649 2648\nf 2439 2638 2636\nf 2632 2633 2643 2642\nf 2651 2640 2616 2615\nf 2615 2616 2611 2613\nf 2613 2611 2604 2605\nf 2600 2602 2595 2594\nf 2438 2440 2439\nf 2143 2142 2144\nf 1962 1970 1974 1973\nf 1978 1977 1968 1970\nf 1952 1953 1941 1940\nf 1943 1934 1931 1930\nf 1940 1941 1928 1927\nf 1926 1939 1974 1975\nf 1942 1943 1930 1929\nf 1945 1946 1934 1943\nf 1952 1940 1966 1954\nf 1972 1978 1970\nf 1970 1968 1975 1974\nf 1961 1971 1978\nf 2449 2439 2440 2450\nf 2621 2610 2604\nf 2614 2612 2608 2607\nf 2610 2620 2612\nf 2640 2630 2628 2616\nf 2631 2632 2642 2641\nf 2635 2636 2638 2637\nf 2638 2439 2449 2649\nf 2595 2603 2601 2594\ns 176\nf 2466 2448 2446 2460\nf 2470 2469 2457 2456\nf 2453 2472 2454\nf 2460 2446 2444\nf 2426 2460 2427\nf 2409 2456 2457 2664 2410\nf 2444 2446 2445 2443\nf 2127 2128 1911 1910\nf 2123 2124 1908 1907\nf 2119 2118 2120\nf 2118 2117 2121 2120\nf 2662 2462 2120 1912\nf 2156 2122 2123 1907 2157\nf 2173 2126 2127 1910 2174\nf 2409 2410 2408\nf 2446 2447 2445\nf 2457 2458 2665 2664\nf 2445 2461 2661 2443\nf 2469 2468 2458 2457\nf 2447 2465 2461 2445\nf 2467 2466 2460 2459\nf 2471 2470 2456 2455\nf 2459 2460 2426 2425 2666\nf 2455 2456 2409 2408 2663\nf 2446 2448 2447\nf 2173 2174 2172\nf 2124 2125 1909 1908\nf 2121 2137 2139 1913\nf 2117 2135 2137 2121\nf 2462 2464 2463 2119 2120\nf 2120 2121 1913 1912\nf 2125 2126 2173 2172 1909\nf 2426 2427 2425\nf 2454 2455 2663 1911\nf 2458 2459 2666 2665\nf 2460 2444 2427\nf 2461 2462 2662 2661\nf 2472 2471 2455 2454\nf 2468 2467 2459 2458\nf 2465 2464 2462 2461\ns 178\nf 2139 2137 2136\nf 2138 2136 2122\nf 2112 2111 2127 2126\nf 2116 2115 2123 2122\nf 2134 2116 2122\nf 2113 2112 2126 2125\nf 2111 2110 2128 2127\nf 2134 2136 2137 2135\nf 2110 2129 2128\nf 2115 2114 2124 2123\nf 2122 2136 2134\nf 2114 2113 2125 2124\nf 2122 2156 2155 2138\nf 2136 2138 2139\nf 2156 2157 2155\ns 185\nf 2602 2600 2593 2596\nf 1965 1980 1987\nf 1982 1980 1986 1989\nf 1938 1925 1989 1986\nf 1964 1984 1979\nf 1936 1937 1924 1933\nf 1935 1936 1933 1932\nf 1946 1947 1935 1934\nf 1950 1938 1986 1985\nf 1980 1965 1985 1986\nf 2617 2602 2596 2597\nf 2603 2595 2598\nf 2598 2618 2603\nf 1938 1950 2597 2596\nf 1980 1982 1988 1987\nf 1924 1937 1979 1981\nf 1948 1949 1937 1936\nf 1979 1987 1988 1981\nf 1934 1935 1932 1931\nf 1947 1948 1936 1935\nf 1984 1987 1979\nf 1979 1937 1949 1964\nf 1965 1987 1984\nf 2602 2617 2598 2595\nf 1925 1938 2596 2593\ns 190\nf 2591 2631 2618\nf 2588 2589 2619 2623\nf 2584 2585 2626 2627\nf 2147 2145 2144 2146\nf 2005 2006 1946 1945\nf 2008 2004 2145\nf 2002 2003 1953 1952\nf 2001 1954 1961\nf 1996 1997 1956 1957\nf 1994 1995 1959\nf 1992 1993 1964\nf 1991 1992 1964 1949\nf 1995 1996 1957 1958\nf 1999 2000 1961 1960\nf 2146 2144 1953\nf 2009 2005 1945\nf 2006 2007 1947 1946\nf 2583 2584 2627 2622\nf 2588 2623 2624\nf 2589 2590 2618 2619\nf 2591 2592 2632 2631\nf 2587 2588 2624\nf 2585 2586 2625 2626\nf 1985 1965 1984 1964 1963 1959 1958 1957 1956 1955 1960 1961 1972 1962 1973 1951 2609 2620 2610 2621 2622 2627 2626 2625 2624 2623 2619 2618 2598 2617 2597 1950\nf 2004 2009 1945 1944\nf 2003 2146 1953\nf 2001 2002 1952 1954\nf 1997 1998 1955 1956\nf 1993 1994 1959 1963\nf 1990 1991 1949 1948\nf 1993 1963 1964\nf 1995 1958 1959\nf 1998 1999 1960 1955\nf 1961 2000 2001\nf 2147 2008 2145\nf 2004 1944 2145\nf 2007 1990 1948 1947\nf 2582 2583 2622 2621\nf 2586 2587 2624 2625\nf 2590 2591 2618\ns 184\nf 2471 2472 2599 2653\nf 2467 2468 2656 2657\nf 2464 2465 2659 2660\nf 2451 2447 2448 2452\nf 2119 2463 2606 1923 1976\nf 2116 2134 2130 1916\nf 2112 2113 1919 1920\nf 2111 2112 1920 1921\nf 2115 2116 1916 1917\nf 2118 2119 1976 1914\nf 2463 2464 2660 2606\nf 2466 2467 2657 2658\nf 2470 2471 2653 2654\nf 2468 2469 2655 2656\nf 2465 2447 2451 2659\nf 2129 2110 1983 1922\nf 2135 2117 1915 2131\nf 2113 2114 1918 1919\nf 2110 2111 1921 1983\nf 2114 2115 1917 1918\nf 2117 2118 1914 1915\nf 2135 2131 2130 2134\nf 2472 2453 1922 2599\nf 2448 2466 2658 2452\nf 2469 2470 2654 2655\ns 228\nf 2580 2581 2628 2630\nf 2436 2579 2438\nf 2577 2573 2635\nf 2437 2435 2436 2438\nf 2576 2577 2635 2634\nf 2636 2578 2574\nf 2579 2580 2630 2629\nf 2581 2621 2628\nf 2581 2582 2621\nf 2574 2437 2636\nf 2574 2435 2437\nf 2592 2575 2633 2632\nf 2575 2576 2634 2633\nf 2573 2578 2636 2635\nf 2579 2629 2438\ns 256\nf 3492 3493 3490 3489\nf 3497 3498 3487 3486\nf 3494 3495 3484 3491\nf 3490 3491 3481 3480\nf 3486 3487 3477 3476\nf 3451 3459 3467\nf 3458 3468 3475 3463\nf 3451 3457 3468\nf 3478 3465 3450 3488\nf 3285 3284 3286\nf 2991 2990 2992\nf 2825 2818 2808\nf 2808 2818 2813 2801\nf 2809 2825 2819\nf 2788 2989 2991 2800\nf 2990 2789 2791\nf 2776 2777 2790 2789\nf 2822 2821 2786 2773\nf 2774 2775 2788 2787\nf 2777 2778 2781 2790\nf 2787 2788 2800 2799\nf 2817 2815 2824 2825\nf 2820 2821 2817 2809\nf 2989 2979 2980 2990\nf 3441 3442 3449 3447\nf 3452 3451 3458 3460\nf 3460 3458 3463 3462\nf 3462 3463 3487 3498\nf 3489 3490 3480 3479\nf 3485 3286 3284 3483\nf 3297 3497 3486 3287\nf 3499 3492 3489 3488\nf 2798 3456 3455 2786\nf 3493 3494 3491 3490\nf 3455 3454 2773 2786\nf 3495 3496 3485 3484\nf 3491 3484 3482 3481\nf 3287 3486 3476 3285\nf 3461 3459 3451 3452\nf 3455 3456 3467 3459\nf 3450 3448 3499 3488\nf 3297 3287 3286 3296\nf 2825 2824 2816 2818\nf 2818 2816 2814 2813\nf 2813 2814 2774 2787\nf 2789 2790 2792 2791\nf 2980 2776 2789 2990\nf 2820 2798 2786 2821\nf 2775 2979 2989 2788\nf 2990 2791 2992\nf 2790 2781 2793 2792\nf 2801 2813 2787 2799\nf 2809 2817 2825\nf 2821 2822 2815 2817\nf 2808 2819 2825\nf 2991 2989 2990\nf 3286 3287 3285\nf 3451 3468 3458\nf 3454 3455 3459 3461\nf 3467 3457 3451\nf 3463 3475 3477 3487\nf 3488 3489 3479 3478\nf 3484 3485 3483 3482\nf 3496 3296 3286 3485\nf 3441 3448 3450 3442\ns 250\nf 2984 2983 2981\nf 2969 2983 2985\nf 2973 2974 2958 2959\nf 2969 2970 2962 2963\nf 2969 2963 2981\nf 2972 2973 2959 2960\nf 2975 2976 2957\nf 3002 3004 3003\nf 2984 2986 2985 2983\nf 2957 2958 2974 2975\nf 2970 2971 2961 2962\nf 2981 2983 2969\nf 2971 2972 2960 2961\nf 2985 3002 3003 2969\nf 2982 2984 2981\ns 248\nf 3308 3309 3311 3312\nf 3305 3306 3314 3315\nf 3319 3300 3301\nf 3290 3508 3308 3292\nf 3511 3512 3305 3304\nf 3292 3294 3295 3293\nf 3019 3021 3020\nf 2756 3019 3020 2973 2972\nf 2759 2760 2968 2967\nf 2967 2965 2966 3310 3309\nf 2968 2984 2982 2964\nf 2760 2986 2984 2968\nf 2755 2756 2972 2971\nf 3272 3274 3273\nf 3290 3293 3291\nf 3257 3511 3304 3303 3256\nf 3291 3293 3307\nf 3508 3509 3309 3308\nf 3304 3305 3315 3316\nf 3292 3308 3312 3294\nf 3306 3307 3313 3314\nf 3302 3303 3317 3318\nf 3274 3291 3307 3273\nf 3512 3513 3306 3305\nf 2758 3510 3302 3301\nf 3290 3292 3293\nf 3021 2757 2974 2973 3020\nf 3004 2754 2970 2969 3003\nf 2759 2967 3309 3509\nf 2967 2968 2964 2965\nf 3310 3311 3309\nf 2754 2755 2971 2970\nf 2757 2758 2975 2974\nf 3255 3257 3256\nf 3510 3255 3256 3303 3302\nf 3513 3272 3273 3307 3306\nf 3301 3302 3318 3319\nf 3303 3304 3316 3317\nf 3307 3293 3295 3313\ns 258\nf 3440 3443 2785 2772\nf 3442 3445 3464 3449\nf 2836 2833 2827 2829\nf 2833 2836 2772 2785\nf 2826 2831 2811\nf 2780 2771 2784 2783\nf 2779 2780 2783 2782\nf 2781 2782 2794 2793\nf 2832 2833 2785 2797\nf 2833 2832 2812 2827\nf 3444 3443 3449 3464\nf 3442 3450 3465 3445\nf 3443 3444 2797 2785\nf 2834 2835 2829 2827\nf 2828 2826 2784 2771\nf 2783 2784 2796 2795\nf 2828 2835 2834 2826\nf 2778 2779 2782 2781\nf 2782 2783 2795 2794\nf 2826 2834 2831\nf 2811 2796 2784 2826\nf 2831 2834 2827 2812\nf 3443 3440 3447 3449\ns 264\nf 3465 3478 3438 3437\nf 3471 3434 3433\nf 3474 3473 3432 3431\nf 2794 2795 2837 2854\nf 2855 2994 2992\nf 2992 2791 2855\nf 2805 2842 2841\nf 2811 2810 2840 2839\nf 2796 2811 2839 2838\nf 2804 2843 2842\nf 2991 2993 2850\nf 2791 2792 2852 2856 2851\nf 2993 2991 2992 2994\nf 3469 3474 3431 3430\nf 3470 3435 3434\nf 3436 3466 3465\nf 3478 3479 3439 3438\nf 3465 3437 3436\nf 3471 3470 3434\nf 3473 3472 3433 3432\nf 2797 3444 3464 3445 3465 3466 3470 3471 3472 3473 3474 3469 3468 3457 3467 3456 2798 2820 2809 2819 2808 2807 2802 2803 2804 2805 2806 2810 2811 2831 2812 2832\nf 2793 2794 2854 2853\nf 2800 2991 2850\nf 2805 2804 2842\nf 2810 2806 2841 2840\nf 2795 2796 2838 2837\nf 2806 2805 2841\nf 2799 2800 2850 2849\nf 2791 2851 2855\nf 2792 2793 2853 2852\nf 3468 3469 3430 3429\nf 3472 3471 3433\nf 3470 3466 3436 3435\ns 267\nf 2803 2802 2845 2844\nf 2802 2807 2846 2845\nf 2804 2803 2844 2843\nf 2807 2808 2847 2846\ns 265\nf 2808 2848 2847\nf 2801 2799 2849 2848\nf 2808 2801 2848\ns 257\nf 3501 3500 3318 3317\nf 3505 3504 3314 3313\nf 3453 3507 3311 3310\nf 2770 3453 3310\nf 2762 2761 2965 2964\nf 2765 2764 2962 2961\nf 2830 2768 2958 2957\nf 2766 2765 2961 2960\nf 2978 2762 2964 2982\nf 2981 2977 2978 2982\nf 3446 2769 3300 3319\nf 3299 3505 3313 3295\nf 3502 3501 3317 3316\nf 3500 3446 3319 3318\nf 3504 3503 3315 3314\nf 3507 3506 3312 3311\nf 3299 3295 3294 3298\nf 2761 2823 2966 2965\nf 2764 2763 2963 2962\nf 2768 2767 2959 2958\nf 2767 2766 2960 2959\nf 2763 2977 2981 2963\nf 2823 2770 3310 2966\nf 2769 2830 2957 2976\nf 3506 3298 3294 3312\nf 3503 3502 3316 3315\ns 307\nf 3476 3426 3283\nf 3482 3483 3425 3420 3424\nf 3285 3283 3282 3284\nf 3481 3482 3424 3423\nf 3421 3425 3284\nf 3476 3477 3427 3426\nf 3475 3468 3428\nf 3468 3429 3428\nf 3284 3282 3421\nf 3425 3483 3284\nf 3479 3480 3422 3439\nf 3480 3481 3423 3422\nf 3285 3476 3283\nf 3477 3475 3428 3427\ng engine\ns 183\nf 1926 1923 2606 2607\nf 2648 2649 2658 2657\nf 2652 2645 2654 2653\nf 2660 2651 2615 2613 2606\nf 2600 2594 2599\nf 1969 1976 1977\nf 1928 2132 2131 1915\nf 1927 1928 1915 1914\nf 1930 1931 1918 1917\nf 1977 1976 1968\nf 2452 2449 2450 2451\nf 2614 2607 2606\nf 2647 2648 2657 2656\nf 2650 2651 2660 2659\nf 2594 2601 2599\nf 2649 2449 2452 2658\nf 2645 2646 2655 2654\nf 2605 2614 2606\nf 2133 2130 2131 2132\nf 1968 1976 1975\nf 2133 1929 1916 2130\nf 1923 1926 1975 1976\nf 1929 1930 1917 1916\nf 1967 1927 1914 1976 1969\nf 2652 2653 2599 2601\nf 2613 2605 2606\nf 2646 2647 2656 2655\nf 2450 2650 2659 2451\ns off\nf 3103 3176 3547 3546\nf 2699 2700 2329 2256\nf 2698 2699 2256 2689\nf 2702 2703 2689 2690\nf 2706 2707 2682 2681\nf 2710 2711 2691 2692\nf 2714 2715 2692 2693\nf 2718 2719 2685 2684\nf 2722 2723 2694 2695\nf 2726 2727 2687 2686\nf 2730 2731 2696 2697\nf 2734 2735 2697 2268\nf 3126 3127 3116 3117 3164 3165 3155 3156 3157 3158 3159 3160 3161 3162 3163 3118 3119 3120 3121 3122 3123 3124 3125\nf 3176 3527 3548 3547\nf 3527 3528 3552 3551\nf 3538 3537 3556 3555\nf 3529 3530 3560 3559\nf 3530 3531 3564 3563\nf 3541 3540 3568 3567\nf 3532 3533 3572 3571\nf 3543 3542 3576 3575\nf 3534 3535 3580 3579\nf 3535 3166 3584 3583\nf 3115 3544 3582 3581\nf 3544 3543 3578 3577\nf 3533 3534 3574 3573\nf 3542 3541 3570 3569\nf 3531 3532 3566 3565\nf 3540 3539 3562 3561\nf 3539 3538 3558 3557\nf 3528 3529 3554 3553\nf 3537 3536 3550 3549\nf 3536 3103 3546 3545\nf 2736 2737 2319 2688\nf 2732 2733 2688 2687\nf 2728 2729 2695 2696\nf 2724 2725 2686 2685\nf 2720 2721 2693 2694\nf 2716 2717 2684 2683\nf 2712 2713 2683 2682\nf 2708 2709 2690 2691\nf 2704 2705 2681 2680\nf 2700 2701 2680 2329\nf 2278 2277 2276 2275 2274 2273 2272 2271 2316 2315 2314 2313 2312 2311 2310 2309 2308 2318 2317 2270 2269 2280 2279\nf 2737 2734 2268 2319\nf 3166 3115 3581 3584\ns 176\nf 2672 2673 2676 2675\nf 2412 2670 2672 2414\nf 2670 2667 2673 2672\nf 2410 2664 2670 2412\nf 2443 2661 2391 2386\nf 2429 2425 2427 2428\nf 2416 2413 2414 2415\nf 2405 2406 2424 2420\nf 2388 2389 2387\nf 2391 2387 2389 2390\nf 2380 2375 2376 2381\nf 2368 2369 2674 2416\nf 2364 2365 2676 2418\nf 2360 2361 2442 2441\nf 2356 2357 2360 2371\nf 2352 2353 2368 2367\nf 2362 2359 2349\nf 2364 2363 2349\nf 2344 2345 2358 2357\nf 2341 2303 2354 2353\nf 2337 2338 2341 2340\nf 2333 2334 2347 2346\nf 2329 2330 2343 2342\nf 2328 2306 2305\nf 2326 2327 2337 2336\nf 2324 2335 2334\nf 2320 2321 2331 2330\nf 2314 2315 2328 2327\nf 2312 2326 2325\nf 2308 2309 2322\nf 2301 2302 2304\nf 2302 2354 2303\nf 2304 2303 2305\nf 2300 2354 2301\nf 2291 2288 2289 2290\nf 2285 2288 2291\nf 2280 2267 2266\nf 2278 2265 2264\nf 2277 2263 2262\nf 2294 2281 2271 2272\nf 2269 2270 2268 2267\nf 2264 2265 2253 2252\nf 2262 2251 2250\nf 2259 2247 2284\nf 2284 2247 2244 2286\nf 2254 2255 2241 2240\nf 2252 2239 2238\nf 2248 2249 2246 2245\nf 2244 2245 2232 2231\nf 2241 2242 2228 2227\nf 2237 2238 2224 2235\nf 2220 2219 2224\nf 2233 2234 2218 2217\nf 2229 2230 2214 2213\nf 2225 2226 2223 2222\nf 2221 2222 2140 1893\nf 2217 2218 1894 1895\nf 2213 2214 1896 1897\nf 2207 2202 2201 2206\nf 2195 2191 2192 2193\nf 2194 2195 2193\nf 2176 2177 2162 2158\nf 2169 2166 2167 2168\nf 2157 2153 2154 2155\nf 2199 2138 2155 2154 2200\nf 1910 1911 1904 1903\nf 1907 1908 1906 1905\nf 2200 2154 2160 2204\nf 1901 1898 1897 1896\nf 2163 1899 1894 2164\nf 1899 1900 1895 1894\nf 1902 2170 2168 1900\nf 2162 1905 1906 1899 2163\nf 1908 1909 1902 1906\nf 2388 2387 2662 1912 2195 2194\nf 2138 2199 2196 2139\nf 2153 2158 2160 2154\nf 2171 2169 2168 2170\nf 2177 2178 1905 2162\nf 2209 2210 2208\nf 2205 2201 2202 2203\nf 2203 2198 2200 2204\nf 2214 2215 2166 1896\nf 2218 2219 2164 1894\nf 2222 2223 2141 2140\nf 2226 2227 2211 2223\nf 2230 2231 2215 2214\nf 2234 2235 2219 2218\nf 2238 2239 2225 2224\nf 2242 2342 2355 2228\nf 2245 2246 2233 2232\nf 2249 2250 2236 2246\nf 2253 2254 2240 2239\nf 2257 2290 2289 2243\nf 2259 2260 2248 2247\nf 2261 2250 2249\nf 2265 2266 2254 2253\nf 2692 2691 2690 2689 2255\nf 2267 2268 2697 2696\nf 2273 2274 2260 2259\nf 2275 2276 2261\nf 2279 2280 2266\nf 2287 2286 2230\nf 2285 2284 2286\nf 2289 2288 2230\nf 2301 2298 2299 2300\nf 2307 2305 2306\nf 2308 2321 2320\nf 2322 2309 2310\nf 2325 2324 2311\nf 2313 2314 2327 2326\nf 2315 2316 2295 2328\nf 2685 2686 2687 2320\nf 2682 2683 2330\nf 2680 2330 2329\nf 2323 2324 2334 2333\nf 2325 2336 2335\nf 2297 2258 2257 2299\nf 2330 2331 2344 2343\nf 2332 2346 2345\nf 2336 2337 2340 2339\nf 2340 2341 2353 2352\nf 2343 2344 2357 2356\nf 2347 2348 2350 2349\nf 2351 2352 2367 2366\nf 2355 2356 2371 2370\nf 2371 2360 2441 2678\nf 2363 2364 2418 2417\nf 2367 2368 2416 2415\nf 2384 2379 2378 2382\nf 2381 2377 2379 2380\nf 2373 2374 2372\nf 2404 2405 2420 2668\nf 2413 2411 2412 2414\nf 2424 2429 2428 2422\nf 2383 2444 2443 2386\nf 2661 2662 2387 2391\nf 2664 2665 2667 2670\nf 2667 2668 2420 2419 2673\nf 2669 2411 2413 2671\nf 2414 2672 2675 2415\nf 2673 2419 2418 2676\nf 1898 2671 2674 1897\nf 2428 2382 2378 2422\nf 2666 2425 2429 2668\nf 2663 2408 2411 2669\nf 2427 2444 2383 2382 2428\nf 2423 2424 2422\nf 2418 2419 2421 2417\nf 2406 2407 2429 2424\nf 2383 2384 2382\nf 2386 2391 2390 2385\nf 2375 2374 2373 2376\nf 2369 2213 1897 2674\nf 2365 2366 2675 2676\nf 2361 2362 2677 2442\nf 2357 2358 2361 2360\nf 2353 2354 2369 2368\nf 2349 2350 2365 2364\nf 2345 2346 2359 2358\nf 2300 2243 2229 2354\nf 2348 2339 2351 2350\nf 2334 2335 2348 2347\nf 2332 2333 2346\nf 2299 2257 2243 2300\nf 2327 2328 2338 2337\nf 2325 2326 2336\nf 2321 2322 2332 2331\nf 2680 2681 2682 2330\nf 2683 2684 2685 2320 2330\nf 2687 2688 2319 2320\nf 2316 2271 2281 2295\nf 2311 2312 2325\nf 2310 2323 2322\nf 2318 2308 2320\nf 2304 2307 2296 2298\nf 2307 2304 2305\nf 2301 2354 2302\nf 2293 2291 2290 2292\nf 2286 2287 2285\nf 2279 2266 2265\nf 2277 2278 2264 2263\nf 2276 2262 2261\nf 2270 2317 2319 2268\nf 2696 2695 2694 2693 2692 2255 2267\nf 2689 2256 2255\nf 2263 2264 2252 2251\nf 2261 2262 2250\nf 2258 2292 2290 2257\nf 2255 2256 2242 2241\nf 2251 2252 2238 2237\nf 2247 2248 2245 2244\nf 2286 2244 2231 2230\nf 2240 2241 2227 2226\nf 2236 2237 2235 2234\nf 2232 2233 2217 2216\nf 2228 2355 2370 2212\nf 2224 2225 2222 2221\nf 2220 2221 1893 2165\nf 2216 2217 1895 2167\nf 2212 2370 2679 1891\nf 2208 2207 2206 2209\nf 2191 2196 2197 2192\nf 2199 2200 2198\nf 2175 2176 2158 2153\nf 2163 2164 2165 2161\nf 2159 2160 2158\nf 1913 2139 2196 2191\nf 2174 1910 1903 2171\nf 2157 1907 1905 2153\nf 1903 1904 1898 1901\nf 2169 1901 1896 2166\nf 2373 2372 2210 2209 1891 2679\nf 1900 2168 2167 1895\nf 2171 1903 1901 2169\nf 1906 1902 1900 1899\nf 1909 2172 2170 1902\nf 1912 1913 2191 2195\nf 2162 2163 2161\nf 2158 2162 2161 2159\nf 2174 2171 2170 2172\nf 2178 2175 2153 1905\nf 2204 2205 2203\nf 2198 2197 2196 2199\nf 2211 2212 1891 1892\nf 2215 2216 2167 2166\nf 2219 2220 2165 2164\nf 2223 2211 1892 2141\nf 2227 2228 2212 2211\nf 2231 2232 2216 2215\nf 2224 2221 2220\nf 2219 2235 2224\nf 2239 2240 2226 2225\nf 2243 2289 2230 2229\nf 2246 2236 2234 2233\nf 2250 2251 2237 2236\nf 2252 2253 2239\nf 2256 2329 2342 2242\nf 2283 2259 2284\nf 2260 2261 2249 2248\nf 2262 2263 2251\nf 2266 2267 2255 2254\nf 2272 2273 2259 2294\nf 2274 2275 2261 2260\nf 2262 2276 2277\nf 2278 2279 2265\nf 2280 2269 2267\nf 2285 2287 2288\nf 2288 2287 2230\nf 2298 2296 2297 2299\nf 2304 2302 2303\nf 2304 2298 2301\nf 2308 2322 2321\nf 2310 2311 2324 2323\nf 2312 2313 2326\nf 2317 2318 2320 2319\nf 2322 2323 2333 2332\nf 2324 2325 2335\nf 2328 2305 2338\nf 2338 2305 2303 2341\nf 2331 2332 2345 2344\nf 2335 2336 2339 2348\nf 2339 2340 2352 2351\nf 2342 2343 2356 2355\nf 2346 2347 2349 2359\nf 2363 2362 2349\nf 2350 2351 2366 2365\nf 2354 2229 2213 2369\nf 2358 2359 2362 2361\nf 2362 2363 2417 2677\nf 2366 2367 2415 2675\nf 2370 2371 2678 2679\nf 2385 2384 2383 2386\nf 2378 2379 2377\nf 2407 2404 2668 2429\nf 2411 2408 2410 2412\nf 2420 2424 2423 2421\nf 2420 2421 2419\nf 1911 2663 2669 1904\nf 2665 2666 2668 2667\nf 1904 2669 2671 1898\nf 2671 2413 2416 2674\ns 185\nf 1921 1924 1981 1983\nf 1931 1932 1919 1918\nf 1932 1933 1920 1919\nf 1982 1989 1983\nf 1922 1925 2593 2599\nf 2600 2599 2593\nf 1925 1922 1983 1989\nf 1988 1983 1981\nf 1933 1924 1921 1920\nf 1982 1983 1988\ns 178\nf 2282 2283 2284\nf 2282 2285 2291 2293\nf 2284 2285 2282\ns 256\nf 3298 3506 3497 3297\nf 3502 3503 3494 3493\nf 3453 3452 3460\nf 3453 3460 3462 3507\nf 3446 3441 3447\nf 2979 2978 2977 2980\nf 2824 2823 2816\nf 2762 2978 2979 2775\nf 2761 2762 2775 2774\nf 2764 2765 2778 2777\nf 2815 2823 2824\nf 3453 3454 3461\nf 3503 3504 3495 3494\nf 3506 3507 3498 3497\nf 3446 3448 3441\nf 3505 3299 3296 3496\nf 3501 3502 3493 3492\nf 3453 3461 3452\nf 2822 2823 2815\nf 2977 2763 2776 2980\nf 2823 2822 2773 2770\nf 2763 2764 2777 2776\nf 2823 2761 2774 2814 2816\nf 3298 3297 3296 3299\nf 3448 3446 3500 3499\nf 3462 3498 3507\nf 3500 3501 3492 3499\nf 3504 3505 3496 3495\nf 3454 3453 2770 2773\ns 248\nf 3522 3523 3520 3519\nf 3261 3519 3517 3259\nf 3519 3520 3514 3517\nf 3259 3517 3511 3257\nf 3233 3238 3508 3290\nf 3269 3271 3270\nf 3264 3268 3266 3265\nf 3271 3276 3254 3253\nf 3229 3231 3230\nf 3232 3237 3238 3233\nf 3223 3220 3221 3222\nf 3521 2744 3060 3216\nf 3523 3522 3213 3212\nf 3289 3524 3209 3208\nf 3207 3208 3205 3204\nf 3215 3216 3201 3200\nf 3211 3212 3197 3196\nf 3205 3206 3193 3192\nf 3201 3076 3090 3147\nf 3197 3198 3186 3195\nf 3194 3195 3182 3181\nf 3192 3180 3179\nf 3147 3090 3104 3146\nf 3184 3185 3175 3174\nf 3182 3173 3172\nf 3178 3179 3169 3168\nf 3529 3528 3527 3177\nf 3532 3531 3530 3177 3167\nf 3167 3166 3535 3534\nf 3175 3142 3163 3162\nf 3172 3159 3158\nf 3169 3170 3157\nf 3167 3168 3155\nf 3152 3151 3154\nf 3149 3201 3148\nf 3139 3137 3138 3140\nf 3131 3132 3134\nf 3138 3135 3134\nf 3113 3114 3116\nf 3112 3126 3125\nf 3109 3110 3124\nf 3107 3108 3122 3121\nf 3141 3119 3118 3128\nf 3543 3544 3115 3114\nf 3536 3537 3538 3539 3102\nf 3100 3101 3113 3112\nf 3096 3097 3109\nf 3094 3095 3107 3106\nf 3090 3136 3137 3104\nf 3086 3087 3101 3100\nf 3093 3083 3097 3096\nf 3079 3080 3093 3092\nf 3075 3202 3189 3089\nf 3071 3072 3086 3085\nf 3065 3066 3082 3081\nf 3061 3062 3078 3077\nf 3070 3058 3074 3073\nf 2987 2988 3070 3069\nf 2741 3011 3066 3065\nf 2743 3013 3062 3061\nf 3051 3047 3045 3050\nf 3050 3049 3048 3052\nf 3055 3057 3056\nf 3009 2752 3025 3024\nf 3017 3015 3016 3018\nf 3001 3007 3005 3000\nf 3038 3043 2986 2760\nf 3018 2750 2757 3021\nf 3000 2752 2754 3004\nf 3051 3007 3001 3047\nf 2743 2744 2745 2748\nf 3011 2741 2746 3010\nf 2741 2742 2747 2746\nf 2747 3015 3017 2749\nf 2746 2747 2749 2753\nf 2749 3017 3019 2756\nf 3042 3038 2760 2759\nf 3002 3001 3000 3004\nf 3015 3014 3013 3016\nf 3005 3009 3024 3023\nf 3040 3042 3041\nf 3040 3039 3038 3042\nf 2739 2738 3059 3058\nf 3013 3014 3063 3062\nf 3011 3012 3067 3066\nf 2988 2739 3058 3070\nf 3058 3059 3075 3074\nf 3062 3063 3079 3078\nf 3067 3068 3071 3082\nf 3082 3071 3085 3084\nf 3074 3075 3089 3088\nf 3078 3079 3092 3091\nf 3092 3093 3096 3095\nf 3085 3086 3100\nf 3087 3088 3102 3101\nf 3133 3091 3094 3131\nf 3131 3106 3130\nf 3097 3098 3110\nf 3099 3100 3112 3111\nf 3115 3166 3164 3117\nf 3108 3109 3123\nf 3110 3111 3125 3124\nf 3112 3127 3126\nf 3077 3134 3135\nf 3152 3150 3149\nf 3150 3201 3149\nf 3168 3156 3155\nf 3172 3173 3160\nf 3174 3175 3162 3161\nf 3177 3178 3168 3167\nf 3181 3182 3172\nf 3183 3184 3174 3173\nf 3185 3153 3175\nf 3189 3190 3177 3176\nf 3193 3194 3181 3180\nf 3187 3188 3185 3184\nf 3200 3201 3150 3188\nf 3204 3205 3192 3191\nf 3210 3211 3196\nf 3212 3213 3198 3197\nf 3216 3060 3076 3201\nf 3208 3209 3206 3205\nf 3524 3264 3210 3209\nf 3522 3262 3214 3213\nf 3526 3525 3218 3217\nf 3233 3230 3231 3232\nf 3224 3226 3225\nf 3276 3515 3251 3254\nf 3259 3257 3255 3258\nf 3268 3270 3271 3267\nf 3266 3268 3267\nf 3238 3234 3509 3508\nf 3517 3514 3512 3511\nf 3520 3266 3267 3515 3514\nf 3518 3260 3258 3516\nf 3262 3522 3519 3261\nf 3523 3265 3266 3520\nf 2744 3521 3518 2745\nf 3269 3225 3229 3275\nf 3515 3276 3272 3513\nf 3516 3258 3255 3510\nf 3275 3229 3230 3291 3274\nf 3275 3274 3272 3276\nf 3262 3261 3260 3263\nf 3267 3271 3253 3252\nf 3234 3236 3235\nf 3237 3236 3234 3238\nf 3228 3223 3222 3227\nf 3263 3521 3216 3215\nf 3265 3523 3212 3211\nf 3288 3289 3208 3207\nf 3218 3207 3204 3203\nf 3214 3215 3200 3199\nf 3210 3196 3206 3209\nf 3206 3196 3194 3193\nf 3202 3203 3190 3189\nf 3198 3199 3187 3186\nf 3195 3186 3183 3182\nf 3191 3192 3179 3178\nf 3188 3150 3152 3185\nf 3185 3152 3153\nf 3181 3172 3171\nf 3179 3180 3170 3169\nf 3166 3167 3165 3164\nf 3172 3160 3159\nf 3170 3171 3158 3157\nf 3168 3169 3156\nf 3152 3149 3151\nf 3148 3201 3147\nf 3137 3136 3135 3138\nf 3112 3113 3127\nf 3108 3123 3122\nf 3106 3107 3121 3120\nf 3101 3102 3114 3113\nf 3097 3110 3109\nf 3095 3096 3108 3107\nf 3131 3094 3106\nf 3089 3189 3176 3103\nf 3085 3100 3099\nf 3083 3084 3098 3097\nf 3080 3081 3083 3093\nf 3076 3077 3136 3090\nf 3072 3073 3087 3086\nf 3066 3067 3082\nf 3064 3065 3081 3080\nf 3060 3061 3077 3076\nf 3069 3070 3073 3072\nf 2740 2987 3069 3068\nf 2742 2741 3065 3064\nf 2744 2743 3061 3060\nf 3053 3048 3049 3054\nf 3050 3052 3051\nf 2752 3000 3022 3025\nf 3019 3017 3018 3021\nf 3006 3008 3009 3005\nf 3008 3010 3009\nf 2750 2751 2758 2757\nf 2752 2753 2755 2754\nf 2748 2745 2751 2750\nf 3013 2743 2748 3016\nf 3526 2738 3056 3057 3219 3220\nf 2742 3014 3015 2747\nf 3016 2748 2750 3018\nf 3010 2746 2753 2752 3009\nf 2753 2749 2756 2755\nf 3041 3042 2759 3509 3234 3235\nf 3005 3007 3006\nf 3008 3012 3011 3010\nf 3000 3005 3023 3022\nf 3045 3047 3046\nf 3039 3044 3043 3038\nf 3056 3053 3054 3055\nf 2738 3526 3217 3059\nf 3014 2742 3064 3063\nf 3012 2740 3068 3067\nf 3068 3069 3072 3071\nf 3059 3217 3202 3075\nf 3063 3064 3080 3079\nf 3081 3082 3084 3083\nf 3073 3074 3088 3087\nf 3077 3078 3091 3133\nf 3091 3092 3095 3094\nf 3084 3085 3099 3098\nf 3088 3089 3103 3102\nf 3104 3137 3139 3105\nf 3096 3109 3108\nf 3098 3099 3111 3110\nf 3102 3103 3536\nf 3539 3540 3541 3542 3543 3114 3102\nf 3114 3115 3117 3116\nf 3141 3106 3120 3119\nf 3109 3124 3123\nf 3111 3112 3125\nf 3113 3116 3127\nf 3138 3134 3132\nf 3077 3133 3134\nf 3134 3133 3131\nf 3077 3135 3136\nf 3153 3152 3154\nf 3167 3155 3165\nf 3169 3157 3156\nf 3171 3172 3158\nf 3173 3174 3161 3160\nf 3142 3128 3118 3163\nf 3534 3533 3532 3167\nf 3530 3529 3177\nf 3527 3176 3177\nf 3180 3181 3171 3170\nf 3182 3183 3173\nf 3146 3104 3105 3144\nf 3190 3191 3178 3177\nf 3192 3193 3180\nf 3186 3187 3184 3183\nf 3199 3200 3188 3187\nf 3203 3204 3191 3190\nf 3196 3197 3195 3194\nf 3213 3214 3199 3198\nf 3217 3218 3203 3202\nf 3525 3288 3207 3218\nf 3264 3265 3211 3210\nf 3262 3263 3215 3214\nf 3229 3225 3226 3231\nf 3227 3226 3224 3228\nf 3219 3221 3220\nf 3515 3267 3252 3251\nf 3261 3259 3258 3260\nf 3269 3275 3276 3271\nf 3233 3290 3291 3230\nf 2751 3516 3510 2758\nf 3514 3515 3513 3512\nf 2745 3518 3516 2751\nf 3521 3263 3260 3518\ns 250\nf 3145 3143 3154 3151\nf 2986 3043 3046 2985\nf 3046 3043 3044 3045\nf 3132 3131 3130\nf 3146 3144 3143 3145\nf 3145 3151 3149\nf 3149 3148 3145\nf 3130 3129 3132\nf 3140 3138 3132 3129\nf 3047 3001 3002 2985 3046\nf 3147 3146 3145 3148\ns 258\nf 2830 2828 2771 2768\nf 2765 2766 2779 2778\nf 2766 2767 2780 2779\nf 2830 2836 2829\nf 3446 3440 2772 2769\nf 3440 3446 3447\nf 2836 2830 2769 2772\nf 2828 2830 2835\nf 2767 2768 2771 2780\nf 2835 2830 2829\ng access\ns 176\nf 2376 2373 2679 2678\nf 2421 2423 2677 2417\nf 1892 1891 2209 2206\nf 2159 2161 2165 1893\nf 2442 2377 2381 2441\nf 2423 2422 2378 2377 2442 2677\nf 2205 2140 2141 2201\nf 2206 2201 2141 1892\nf 2205 2204 2160 2159 1893 2140\nf 2441 2381 2376 2678\ns 248\nf 3525 3223 3228 3288\nf 3288 3228 3224 3289\nf 2987 2740 3006 3007 3051 3052\nf 2739 2988 3048 3053\nf 3524 3289 3224 3225 3269 3270\nf 2740 3012 3008 3006\nf 3053 3056 2738 2739\nf 3048 2988 2987 3052\nf 3264 3524 3270 3268\nf 3525 3526 3220 3223\ng access2\ns 176\nf 2379 2384 2385 2380\nf 2193 2208 2210 2194\nf 2193 2192 2207 2208\nf 2192 2197 2202 2207\nf 2390 2389 2374 2375\nf 2372 2388 2194 2210\nf 2198 2203 2202 2197\nf 2374 2389 2388 2372\nf 2385 2390 2375 2380\ns 248\nf 3055 3054 3039 3040\nf 3054 3049 3044 3039\nf 3041 3057 3055 3040\nf 3227 3232 3231 3226\nf 3222 3221 3236 3237\nf 3219 3235 3236 3221\nf 3044 3049 3050 3045\nf 3057 3041 3235 3219\nf 3227 3222 3237 3232\ng ahandles\ns off\nusemtl red\nf 3239 3240 3241 3242\nf 3254 3251 3248 3247\nf 3245 3246 3239 3242\nf 3032 3033 3036 3035\nf 3023 3024 3027 3026\nf 2401 2402 2405 2404\nf 2394 2395 2398 2397\nf 2189 2190 2183 2186\nf 2182 2179 2176 2175\nf 2188 2187 2190 2189\nf 2181 2182 2175 2178\nf 2190 2187 2184 2183\nf 2393 2394 2397 2396\nf 2402 2403 2406 2405\nf 3024 3025 3028 3027\nf 3031 3032 3035 3034\nf 3246 3243 3240 3239\nf 3253 3254 3247 3250\nf 3251 3252 3249 3248\nf 3244 3245 3242 3241\nf 3033 3030 3037 3036\nf 3022 3023 3026 3029\nf 3036 3037 3034 3035\nf 2400 2401 2404 2407\nf 2395 2392 2399 2398\nf 2188 2189 2186 2185\nf 2179 2180 2177 2176\nf 2180 2181 2178 2177\nf 2187 2188 2185 2184\nf 2392 2393 2396 2399\nf 2403 2400 2407 2406\nf 2395 2394 2393 2392\nf 3025 3022 3029 3028\nf 3030 3031 3034 3037\nf 3243 3244 3241 3240\nf 3252 3253 3250 3249\ns 214\nf 2183 2184 2181 2180\nf 2186 2183 2180 2179\nf 2184 2185 2182 2181\nf 2185 2186 2179 2182\ns 222\nf 2397 2398 2401 2400\nf 2396 2397 2400 2403\nf 2398 2399 2402 2401\nf 2399 2396 2403 2402\ns 290\nf 3028 3029 3032 3031\nf 3029 3026 3033 3032\nf 3027 3028 3031 3030\nf 3026 3027 3030 3033\ns 301\nf 3248 3249 3246 3245\nf 3249 3250 3243 3246\nf 3247 3248 3245 3244\nf 3250 3247 3244 3243\ng vents\ns 201\nf 2068 2069 2027 2026\nf 2064 2065 2026 2025\nf 2060 2061 2033 2013\nf 2056 2057 2032 2024\nf 2052 2053 2030 2014\nf 2055 2052 2014 2024\nf 2059 2056 2024 2014\nf 2063 2060 2013 2025\nf 2067 2064 2025 2013\nf 2071 2068 2026 2012\nf 2069 2070 2011 2027\nf 2065 2066 2012 2026\nf 2061 2062 2032 2033\nf 2057 2058 2033 2032\nf 2010 2029 2028 2027 2011\nf 2054 2055 2024 2031\nf 2058 2059 2014 2033\nf 2062 2063 2025 2032\nf 2066 2067 2013 2012\nf 2070 2071 2012 2011\ns off\nf 3393 3394 3353 3352\nf 3389 3386 3349 3348\nf 3385 3382 3345 3344\nf 3381 3378 3341 3340\nf 3377 3374 3337 3336\nf 3373 3370 3333 3332\nf 3369 3366 3329 3328\nf 3365 3362 3325 3324\nf 2917 2918 2955 2954\nf 2912 2913 2950 2949\nf 2908 2909 2946 2945\nf 2904 2905 2942 2941\nf 2900 2901 2938 2937\nf 2896 2897 2934 2933\nf 2892 2893 2930 2929\nf 2888 2889 2926 2925\nf 2510 2505 2546 2545\nf 2504 2501 2542 2541\nf 2500 2497 2538 2537\nf 2496 2493 2534 2533\nf 2492 2489 2530 2529\nf 2488 2485 2526 2525\nf 2484 2481 2522 2521\nf 2480 2477 2518 2517\nf 2107 2108 2071 2070\nf 2102 2103 2066 2065\nf 2098 2099 2062 2061\nf 2094 2095 2058 2057\nf 2090 2091 2054 2053\nf 2086 2087 2050 2049\nf 2082 2083 2046 2045\nf 2078 2079 2042 2041\nf 2077 2072 2037 2036\nf 2081 2078 2041 2040\nf 2085 2082 2045 2044\nf 2089 2086 2049 2048\nf 2093 2090 2053 2052\nf 2097 2094 2057 2056\nf 2101 2098 2061 2060\nf 2105 2102 2065 2064\nf 2473 2474 2511 2514\nf 2479 2480 2517 2516\nf 2483 2484 2521 2520\nf 2487 2488 2525 2524\nf 2491 2492 2529 2528\nf 2495 2496 2533 2532\nf 2499 2500 2537 2536\nf 2503 2504 2541 2540\nf 2883 2884 2919 2924\nf 2887 2888 2925 2928\nf 2891 2892 2929 2932\nf 2895 2896 2933 2936\nf 2899 2900 2937 2940\nf 2903 2904 2941 2944\nf 2907 2908 2945 2948\nf 2911 2912 2949 2952\nf 3358 3359 3322 3321\nf 3362 3363 3326 3325\nf 3366 3367 3330 3329\nf 3370 3371 3334 3333\nf 3374 3375 3338 3337\nf 3378 3379 3342 3341\nf 3382 3383 3346 3345\nf 3386 3387 3350 3349\nf 3392 3393 3352 3357\nf 3388 3389 3348 3351\nf 3384 3385 3344 3347\nf 3380 3381 3340 3343\nf 3376 3377 3336 3339\nf 3372 3373 3332 3335\nf 3368 3369 3328 3331\nf 3364 3365 3324 3327\nf 2918 2915 2956 2955\nf 2913 2914 2951 2950\nf 2909 2910 2947 2946\nf 2905 2906 2943 2942\nf 2901 2902 2939 2938\nf 2897 2898 2935 2934\nf 2893 2894 2931 2930\nf 2889 2890 2927 2926\nf 2505 2506 2547 2546\nf 2501 2502 2539 2542\nf 2497 2498 2535 2538\nf 2493 2494 2531 2534\nf 2489 2490 2527 2530\nf 2485 2486 2523 2526\nf 2481 2482 2519 2522\nf 2477 2478 2515 2518\nf 2108 2109 2068 2071\nf 2103 2104 2067 2066\nf 2099 2100 2063 2062\nf 2095 2096 2059 2058\nf 2091 2092 2055 2054\nf 2087 2088 2051 2050\nf 2083 2084 2047 2046\nf 2079 2080 2043 2042\nf 2076 2077 2036 2035\nf 2080 2081 2040 2043\nf 2084 2085 2044 2047\nf 2088 2089 2048 2051\nf 2092 2093 2052 2055\nf 2096 2097 2056 2059\nf 2100 2101 2060 2063\nf 2104 2105 2064 2067\nf 2474 2475 2512 2511\nf 2478 2479 2516 2515\nf 2482 2483 2520 2519\nf 2486 2487 2524 2523\nf 2490 2491 2528 2527\nf 2494 2495 2532 2531\nf 2498 2499 2536 2535\nf 2502 2503 2540 2539\nf 2882 2883 2924 2923\nf 2890 2887 2928 2927\nf 2894 2891 2932 2931\nf 2898 2895 2936 2935\nf 2902 2899 2940 2939\nf 2906 2903 2944 2943\nf 2910 2907 2948 2947\nf 2914 2911 2952 2951\nf 3361 3358 3321 3320\nf 3363 3364 3327 3326\nf 3367 3368 3331 3330\nf 3371 3372 3335 3334\nf 3375 3376 3339 3338\nf 3379 3380 3343 3342\nf 3383 3384 3347 3346\nf 3387 3388 3351 3350\ns 205\nf 2151 2152 2148\nf 2149 2150 2148\nf 2041 2042 2016 2022\nf 2037 2038 2019 2018\nf 2034 2035 2149 2148 2021\nf 2038 2039 2020 2019\nf 2042 2043 2017 2016\nf 2047 2044 2022 2016\nf 2044 2045 2023 2022\nf 2151 2040 2041 2022 2152\nf 2036 2037 2018 2017\nf 2149 2035 2036 2017 2150\nf 2039 2034 2021 2020\nf 2043 2040 2151 2150 2017\nf 2150 2151 2148\ns 204\nf 2050 2051 2015 2030\nf 2046 2047 2016 2015\nf 2049 2050 2030 2031\nf 2053 2054 2031 2030\nf 2051 2048 2023 2015\nf 2045 2046 2015 2023\nf 2048 2049 2031 2023\ns 208\nf 2073 2074 2039 2038\nf 2074 2075 2034 2039\nf 2072 2073 2038 2037\nf 2075 2076 2035 2034\ns 210\nf 2109 2106 2069 2068\nf 2106 2107 2070 2069\ns 216\nf 2281 2294 2283 2282 2293 2292 2258\nf 2328 2295 2306\nf 2258 2297 2296 2307 2306 2295 2281\nf 2259 2283 2294\ns 227\nf 2544 2545 2564 2563\nf 2540 2541 2560 2566\nf 2536 2537 2559 2567\nf 2433 2434 2430\nf 2431 2432 2430\nf 2537 2538 2560 2559\nf 2541 2542 2431 2430 2560\nf 2545 2546 2565 2564\nf 2433 2547 2548 2561 2434\nf 2543 2544 2563 2562\nf 2539 2540 2566 2565\nf 2535 2536 2567 2566\nf 2432 2433 2430\nf 2538 2535 2566 2560\nf 2431 2542 2539 2565 2432\nf 2548 2543 2562 2561\nf 2546 2547 2433 2432 2565\ns 231\nf 2476 2473 2514 2513\nf 2475 2476 2513 2512\ns 232\nf 2507 2508 2543 2548\nf 2508 2509 2544 2543\nf 2506 2507 2548 2547\nf 2509 2510 2545 2544\ns 233\nf 2520 2521 2549 2550\nf 2516 2517 2556 2570\nf 2512 2513 2555 2571\nf 2511 2512 2571 2570\nf 2515 2516 2570 2569\nf 2519 2520 2550 2557\nf 2521 2522 2569 2549\nf 2517 2518 2557 2556\nf 2513 2514 2556 2555\nf 2514 2511 2570 2556\nf 2518 2515 2569 2557\nf 2522 2519 2557 2569\nf 2554 2553 2572 2571 2555\ns 235\nf 2529 2530 2568 2552\nf 2525 2526 2558 2550\nf 2526 2523 2568 2558\nf 2530 2527 2558 2568\nf 2528 2529 2552 2551\nf 2524 2525 2550 2549\nf 2523 2524 2549 2568\nf 2527 2528 2551 2558\ns 237\nf 2534 2531 2567 2559\nf 2533 2534 2559 2551\nf 2531 2532 2552 2567\nf 2532 2533 2551 2552\ns 277\nf 2859 2873 2915 2918\nf 2860 2872 2911 2914\nf 2872 2860 2907 2910\nf 2861 2871 2903 2906\nf 2871 2861 2899 2902\nf 2861 2877 2900 2899\nf 2871 2879 2904 2903\nf 2860 2880 2908 2907\nf 2872 2873 2912 2911\nf 2873 2874 2916 2915\nf 2858 2859 2918 2917\nf 2859 2860 2914 2913\nf 2879 2872 2910 2909\nf 2880 2861 2906 2905\nf 2878 2871 2902 2901\nf 2858 2874 2875 2876 2857\nf 2879 2880 2905 2904\nf 2880 2879 2909 2908\nf 2873 2859 2913 2912\nf 2874 2858 2917 2916\ns 281\nf 2863 2869 2891 2894\nf 2863 2864 2890 2889\nf 2866 2867 2886 2885\nf 2868 2995 2996 2882 2881\nf 2865 2866 2885 2884\nf 2869 2863 2889 2888\nf 2999 2998 2997\nf 2995 2997 2996\nf 2995 2999 2997\nf 2864 2997 2998 2887 2890\nf 2867 2868 2881 2886\nf 2997 2864 2883 2882 2996\nf 2864 2865 2884 2883\nf 2999 2869 2888 2887 2998\nf 2869 2870 2892 2891\ns 280\nf 2877 2878 2901 2900\nf 2878 2877 2897 2896\nf 2862 2863 2894 2893\nf 2877 2862 2898 2897\nf 2870 2878 2896 2895\nf 2870 2862 2893 2892\nf 2862 2870 2895 2898\ns 285\nf 2884 2885 2920 2919\nf 2881 2882 2923 2922\nf 2885 2886 2921 2920\nf 2886 2881 2922 2921\ns 287\nf 2915 2916 2953 2956\nf 2916 2917 2954 2953\ns 293\nf 3128 3142 3153 3154 3143 3144 3105\nf 3141 3130 3106\nf 3130 3141 3128 3105 3139 3140 3129\nf 3153 3142 3175\ns 306\nf 3411 3412 3393 3392\nf 3407 3277 3278 3389 3388\nf 3406 3407 3385 3384\nf 3280 3279 3278\nf 3277 3281 3278\nf 3414 3406 3384 3383\nf 3413 3407 3388 3387\nf 3410 3411 3392 3391\nf 3412 3279 3280 3394 3393\nf 3408 3409 3390 3395\nf 3279 3412 3386 3389 3278\nf 3407 3413 3382 3385\nf 3281 3280 3278\nf 3413 3414 3383 3382\nf 3412 3413 3387 3386\nf 3409 3410 3391 3390\nf 3281 3408 3395 3394 3280\ns 310\nf 3359 3360 3323 3322\nf 3360 3361 3320 3323\ns 311\nf 3394 3395 3354 3353\nf 3391 3392 3357 3356\nf 3395 3390 3355 3354\nf 3390 3391 3356 3355\ns 312\nf 3396 3416 3369 3368\nf 3403 3404 3365 3364\nf 3402 3403 3361 3360\nf 3403 3417 3358 3361\nf 3404 3416 3362 3365\nf 3416 3404 3366 3369\nf 3397 3396 3368 3367\nf 3417 3403 3364 3363\nf 3418 3402 3360 3359\nf 3417 3418 3359 3358\nf 3416 3417 3363 3362\nf 3404 3397 3367 3366\nf 3402 3418 3419 3400 3401\ns 314\nf 3398 3399 3376 3375\nf 3396 3397 3372 3371\nf 3415 3396 3371 3370\nf 3405 3398 3375 3374\nf 3399 3415 3377 3376\nf 3397 3405 3373 3372\nf 3405 3415 3370 3373\nf 3415 3405 3374 3377\ns 316\nf 3414 3399 3379 3378\nf 3399 3398 3380 3379\nf 3406 3414 3378 3381\nf 3398 3406 3381 3380\ng fins\ns off\nf 3352 3353 3354 3355 3356 3357\nf 3344 3345 3346 3347\nf 3336 3337 3338 3339\nf 2927 2928 2925 2926\nf 2951 2952 2949 2950\nf 2476 2475 2474 2473\nf 2496 2495 2494 2493\nf 2091 2090 2093 2092\nf 2083 2082 2085 2084\nf 2075 2074 2073 2072 2077 2076\nf 2095 2094 2097 2096\nf 2099 2098 2101 2100\nf 2504 2503 2502 2501\nf 2480 2479 2478 2477\nf 2955 2956 2953 2954\nf 2935 2936 2933 2934\nf 3328 3329 3330 3331\nf 3332 3333 3334 3335\nf 3324 3325 3326 3327\nf 3348 3349 3350 3351\nf 2939 2940 2937 2938\nf 2931 2932 2929 2930\nf 2923 2924 2919 2920 2921 2922\nf 2488 2487 2486 2485\nf 2492 2491 2490 2489\nf 2079 2078 2081 2080\nf 2103 2102 2105 2104\nf 2107 2106 2109 2108\nf 2087 2086 2089 2088\nf 2484 2483 2482 2481\nf 2500 2499 2498 2497\nf 2510 2509 2508 2507 2506 2505\nf 2943 2944 2941 2942\nf 2947 2948 2945 2946\nf 3340 3341 3342 3343\nf 3320 3321 3322 3323\ng intake\ns 190\nusemtl black\nf 2568 2549 2569 2587 2586\nf 2564 2565 2583 2582\nf 2014 2030 2015 1997 1996\nf 2010 2011 1993 1992\nf 2013 2033 2014 1996 1995\nf 2017 2018 2000 1999\nf 2567 2552 2568 2586 2585\nf 2571 2572 2590 2589\nf 2569 2570 2588 2587\nf 2565 2566 2584 2583\nf 2015 2016 1998 1997\nf 2011 2012 1994 1993\nf 2012 2013 1995 1994\nf 2016 2017 1999 1998\nf 2566 2567 2585 2584\nf 2570 2571 2589 2588\ns 198\nf 2022 2023 2004 2008\nf 2019 2020 2002 2001\nf 2020 2021 2003 2002\nf 2023 2031 2024 2009 2004\nf 2152 2147 2146 2148\nf 2152 2022 2008 2147\nf 2018 2019 2001 2000\nf 2021 2148 2146 2003\ns 199\nf 2024 2032 2025 2005 2009\nf 2025 2026 2006 2005\ns 196\nf 2028 2029 1991 1990\nf 2027 2028 1990 2007\nf 2029 2010 1992 1991\nf 2026 2027 2007 2006\ns 226\nf 2562 2563 2581 2580\nf 2559 2560 2574 2578\nf 2557 2550 2573 2577\nf 2556 2557 2577 2576\nf 2560 2430 2435 2574\nf 2563 2564 2582 2581\nf 2561 2562 2580 2579\nf 2558 2551 2559 2578 2573\nf 2435 2430 2434 2436\nf 2550 2558 2573\nf 2434 2561 2579 2436\ns 241\nf 2553 2554 2592 2591\nf 2554 2555 2575 2592\nf 2572 2553 2591 2590\nf 2555 2556 2576 2575\ns 267\nf 2846 2847 2865 2864\nf 2842 2843 2861 2880 2860\nf 2839 2840 2858 2857\nf 2843 2844 2862 2877 2861\nf 2845 2846 2864 2863\nf 2841 2842 2860 2859\nf 2840 2841 2859 2858\nf 2844 2845 2863 2862\ns 274\nf 2851 2856 2871 2878 2870\nf 2849 2850 2868 2867\nf 2848 2849 2867 2866\nf 2855 2851 2870 2869\nf 2850 2993 2995 2868\nf 2847 2848 2866 2865\nf 2994 2855 2869 2999\nf 2995 2993 2994 2999\ns 275\nf 2856 2852 2872 2879\nf 2852 2853 2873 2872\nf 2879 2871 2856\ns 272\nf 2838 2839 2857 2876\nf 2853 2854 2874 2873\nf 2837 2838 2876 2875\nf 2854 2837 2875 2874\ns 264\nf 3433 3434 3416 3396 3415\nf 3429 3430 3412 3411\nf 3432 3433 3415 3399 3414\nf 3436 3437 3419 3418\nf 3434 3435 3417 3416\nf 3430 3431 3413 3412\nf 3431 3432 3414 3413\nf 3435 3436 3418 3417\ns 305\nf 3426 3427 3409 3408\nf 3420 3425 3406 3398 3405\nf 3283 3281 3277 3282\nf 3420 3405 3397\nf 3283 3426 3408 3281\nf 3427 3428 3410 3409\nf 3425 3421 3407 3406\nf 3397 3404 3424 3420\nf 3423 3424 3404 3403\nf 3421 3282 3277 3407\nf 3428 3429 3411 3410\ns 320\nf 3439 3422 3402 3401\nf 3438 3439 3401 3400\nf 3422 3423 3403 3402\nf 3437 3438 3400 3419\ng vents2\ns off\nf 3535 3544 3577 3580\nf 3542 3533 3573 3576\nf 3533 3542 3569 3572\nf 3540 3531 3565 3568\nf 3531 3540 3561 3564\nf 3530 3539 3557 3560\nf 3537 3528 3553 3556\nf 3528 3537 3549 3552\nf 3527 3536 3545 3548\nf 3575 3576 3573 3574\nf 3567 3568 3565 3566\nf 2735 2736 2688 2697\nf 2731 2732 2687 2696\nf 2727 2728 2696 2687\nf 2723 2724 2685 2694\nf 2719 2720 2694 2685\nf 2715 2716 2683 2692\nf 2711 2712 2682 2691\nf 2707 2708 2691 2682\nf 2703 2704 2680 2689\nf 2735 2734 2737 2736\nf 2707 2706 2709 2708\nf 2731 2730 2733 2732\nf 2711 2710 2713 2712\nf 2723 2722 2725 2724\nf 3547 3548 3545 3546\nf 3551 3552 3549 3550\nf 3563 3564 3561 3562\nf 3571 3572 3569 3570\nf 3559 3560 3557 3558\nf 2715 2714 2717 2716\nf 2703 2702 2705 2704\nf 2699 2698 2701 2700\nf 2719 2718 2721 2720\nf 2727 2726 2729 2728\nf 2701 2698 2689 2680\nf 2705 2702 2690 2681\nf 2709 2706 2681 2690\nf 2713 2710 2692 2683\nf 2717 2714 2693 2684\nf 2721 2718 2684 2693\nf 2725 2722 2695 2686\nf 2729 2726 2686 2695\nf 2733 2730 2697 2688\nf 3579 3580 3577 3578\nf 3555 3556 3553 3554\nf 3583 3584 3581 3582\nf 3536 3527 3551 3550\nf 3529 3538 3555 3554\nf 3538 3529 3559 3558\nf 3539 3530 3563 3562\nf 3532 3541 3567 3566\nf 3541 3532 3571 3570\nf 3534 3543 3575 3574\nf 3543 3534 3579 3578\nf 3544 3535 3583 3582\ng hub\nusemtl red\nf 3586 3738 3730 3722 3714 3706 3698 3690 3682 3674 3666 3658 3650 3642 3634 3626 3618 3610 3602 3594\ns 328\nf 3739 3738 3586 3587\nf 3723 3722 3730 3731\nf 3707 3706 3714 3715\nf 3691 3690 3698 3699\nf 3675 3674 3682 3683\nf 3659 3658 3666 3667\nf 3643 3642 3650 3651\nf 3627 3626 3634 3635\nf 3611 3610 3618 3619\nf 3595 3594 3602 3603\nf 3587 3586 3594 3595\nf 3603 3602 3610 3611\nf 3619 3618 3626 3627\nf 3635 3634 3642 3643\nf 3651 3650 3658 3659\nf 3667 3666 3674 3675\nf 3683 3682 3690 3691\nf 3699 3698 3706 3707\nf 3715 3714 3722 3723\nf 3731 3730 3738 3739\ns 329\nf 3596 3595 3603 3604\nf 3612 3611 3619 3620\nf 3628 3627 3635 3636\nf 3644 3643 3651 3652\nf 3660 3659 3667 3668\nf 3676 3675 3683 3684\nf 3692 3691 3699 3700\nf 3708 3707 3715 3716\nf 3724 3723 3731 3732\nf 3740 3739 3587 3588\nf 3732 3731 3739 3740\nf 3716 3715 3723 3724\nf 3700 3699 3707 3708\nf 3684 3683 3691 3692\nf 3668 3667 3675 3676\nf 3652 3651 3659 3660\nf 3636 3635 3643 3644\nf 3620 3619 3627 3628\nf 3604 3603 3611 3612\nf 3588 3587 3595 3596\ns 330\nf 3741 3740 3588 3589\nf 3725 3724 3732 3733\nf 3709 3708 3716 3717\nf 3693 3692 3700 3701\nf 3677 3676 3684 3685\nf 3661 3660 3668 3669\nf 3645 3644 3652 3653\nf 3629 3628 3636 3637\nf 3613 3612 3620 3621\nf 3597 3596 3604 3605\nf 3589 3588 3596 3597\nf 3605 3604 3612 3613\nf 3621 3620 3628 3629\nf 3637 3636 3644 3645\nf 3653 3652 3660 3661\nf 3669 3668 3676 3677\nf 3685 3684 3692 3693\nf 3701 3700 3708 3709\nf 3717 3716 3724 3725\nf 3733 3732 3740 3741\ns 331\nf 3598 3597 3605 3606\nf 3614 3613 3621 3622\nf 3630 3629 3637 3638\nf 3646 3645 3653 3654\nf 3662 3661 3669 3670\nf 3678 3677 3685 3686\nf 3694 3693 3701 3702\nf 3710 3709 3717 3718\nf 3726 3725 3733 3734\nf 3742 3741 3589 3590\nf 3734 3733 3741 3742\nf 3718 3717 3725 3726\nf 3702 3701 3709 3710\nf 3686 3685 3693 3694\nf 3670 3669 3677 3678\nf 3654 3653 3661 3662\nf 3638 3637 3645 3646\nf 3622 3621 3629 3630\nf 3606 3605 3613 3614\nf 3590 3589 3597 3598\ns 327\nf 3745 3744 3592 3593\nf 3737 3736 3744 3745\nf 3729 3728 3736 3737\nf 3721 3720 3728 3729\nf 3713 3712 3720 3721\nf 3705 3704 3712 3713\nf 3697 3696 3704 3705\nf 3689 3688 3696 3697\nf 3681 3680 3688 3689\nf 3673 3672 3680 3681\nf 3665 3664 3672 3673\nf 3657 3656 3664 3665\nf 3649 3648 3656 3657\nf 3641 3640 3648 3649\nf 3633 3632 3640 3641\nf 3625 3624 3632 3633\nf 3617 3616 3624 3625\nf 3609 3608 3616 3617\nf 3601 3600 3608 3609\nf 3593 3592 3600 3601\nf 3592 3591 3599 3600\nf 3600 3599 3607 3608\nf 3608 3607 3615 3616\nf 3616 3615 3623 3624\nf 3624 3623 3631 3632\nf 3632 3631 3639 3640\nf 3640 3639 3647 3648\nf 3648 3647 3655 3656\nf 3656 3655 3663 3664\nf 3664 3663 3671 3672\nf 3672 3671 3679 3680\nf 3680 3679 3687 3688\nf 3688 3687 3695 3696\nf 3696 3695 3703 3704\nf 3704 3703 3711 3712\nf 3712 3711 3719 3720\nf 3720 3719 3727 3728\nf 3728 3727 3735 3736\nf 3736 3735 3743 3744\nf 3744 3743 3591 3592\nf 3585 3745 3593\nf 3585 3737 3745\nf 3585 3729 3737\nf 3585 3721 3729\nf 3585 3713 3721\nf 3585 3705 3713\nf 3585 3697 3705\nf 3585 3689 3697\nf 3585 3681 3689\nf 3585 3673 3681\nf 3585 3665 3673\nf 3585 3657 3665\nf 3585 3649 3657\nf 3585 3641 3649\nf 3585 3633 3641\nf 3585 3625 3633\nf 3585 3617 3625\nf 3585 3609 3617\nf 3585 3601 3609\nf 3585 3593 3601\nf 3591 3590 3598 3599\nf 3599 3598 3606 3607\nf 3607 3606 3614 3615\nf 3615 3614 3622 3623\nf 3623 3622 3630 3631\nf 3631 3630 3638 3639\nf 3639 3638 3646 3647\nf 3647 3646 3654 3655\nf 3655 3654 3662 3663\nf 3663 3662 3670 3671\nf 3671 3670 3678 3679\nf 3679 3678 3686 3687\nf 3687 3686 3694 3695\nf 3695 3694 3702 3703\nf 3703 3702 3710 3711\nf 3711 3710 3718 3719\nf 3719 3718 3726 3727\nf 3727 3726 3734 3735\nf 3735 3734 3742 3743\nf 3743 3742 3590 3591\ng prop2\ns 7\nf 89 90 107 108\nf 117 97 126\nf 65 62 61 66\nf 20 9 10 19\nf 116 113 114 115\nf 2 34 13\nf 51 48 47 52\nf 63 50 51 62\nf 117 98 97\ns 9\nf 91 115 114 106\nf 71 74 50 63\nf 54 45 44 55\nf 16 15 36\nf 74 71 72 73\nf 36 41 16\nf 17 12 13 16\nf 72 71 63 64\nf 116 115 91 92\nf 103 94 95 102\ns 6\nf 100 97 98\nf 61 52 53 60\nf 74 73 49 50\nf 32 29 30 31\nf 49 73 72 64\nf 100 98 99\nf 86 87 110 111\ns 4\nf 88 89 108 109\nf 47 48 65 66\nf 28 38 40 37 41 36 15 14 33 42 34 39 35 1\nf 94 89 88 95\ns 3\nf 90 91 106 107\nf 70 80 82 79 83 78 57 56 75 84 76 81 77 43\nf 123 118 86\ns 2\nf 112 122 124 121 125 120 99 98 117 126 118 123 119 85\nf 110 101 100 111\ns 1\nf 113 116 92 105\nf 101 96 97 100\nf 121 124 111\nf 119 123 86\nf 122 111 124\nf 108 103 102 109\nf 86 112 85\nf 114 113 105 106\nf 92 91 90 93\nf 96 87 86 97\nf 86 118 97\nf 120 125 100\nf 59 54 55 58\nf 79 82 69\nf 77 81 44\nf 80 69 82\nf 66 61 60 67\nf 48 49 64 65\nf 44 69 70\nf 44 45 68 69\nf 81 76 44\nf 50 49 48 51\nf 58 56 57\nf 75 55 84\nf 44 76 55\nf 78 83 58\nf 21 8 9 20\nf 41 37 16\nf 2 1 35\nf 38 28 27\nf 22 21 20 23\nf 26 17 16 27\nf 4 5 24 25\nf 2 28 1\nf 5 6 23 24\nf 23 20 19 24\nf 16 37 27\nf 10 5 4 11\nf 16 13 14\nf 33 14 13\nf 32 31 7 8\nf 12 3 2 13\nf 34 42 13\nf 9 6 5 10\nf 33 13 42\nf 16 14 15\nf 8 7 6 9\nf 39 34 2\nf 30 29 21 22\nf 7 31 30 22\nf 2 3 26 27\nf 2 27 28\nf 6 7 22 23\nf 24 19 18 25\nf 38 27 40\nf 35 39 2\nf 37 40 27\nf 29 32 8 21\nf 19 10 11 18\nf 58 57 78\nf 76 84 55\nf 75 56 55\nf 58 55 56\nf 52 47 46 53\nf 58 79 69\nf 44 70 43\nf 46 47 66 67\nf 68 59 58 69\nf 64 63 62 65\nf 80 70 69\nf 44 43 77\nf 83 79 58\nf 62 51 52 61\nf 100 99 120\nf 118 126 97\nf 93 90 89 94\nf 100 121 111\nf 107 104 103 108\nf 86 111 112\nf 106 105 104 107\nf 122 112 111\nf 86 85 119\nf 125 121 100\nf 104 93 94 103\nf 105 92 93 104\ng prop\ns 24\nf 237 238 248\nf 218 217 241 242\nf 195 208 205\nf 183 182 184\nf 128 160 165\nf 144 137 136 145\nf 182 181 184\nf 189 176 200 197\nf 250 237 248\nf 226 223 222 227\ns 2\nf 148 147 155 156\nf 137 130 131 136\ns 1\nf 231 218 242 239\nf 228 221 220 229\nf 232 231 239 240\nf 232 240 241 217\nf 237 236 213 212\nf 211 238 212\nf 233 232 217 216\nf 235 228 229 234\nf 245 211 212\nf 237 250 247\nf 246 225 226\nf 223 244 212\nf 223 212 213 222\nf 223 224 243\nf 224 223 226\nf 219 216 217 218\nf 212 244 249\nf 187 178 177 188\nf 186 179 178 187\nf 190 189 197 198\nf 190 198 199 175\nf 195 194 171 170\nf 169 196 170\nf 191 190 175 174\nf 193 186 187 192\nf 195 196 206\nf 203 169 170\nf 184 205 209\nf 184 209 204\nf 181 210 202\nf 178 173 174 177\nf 181 182 201\nf 177 174 175 176\nf 170 202 207\nf 145 136 135 146\nf 146 135 134 147\nf 150 145 146 149\nf 150 149 132 131\nf 154 153 128\nf 151 150 131 130\nf 153 142 143 152\nf 149 146 147 148\nf 166 153 164\nf 128 165 161\nf 142 163 167\nf 199 198 197 200\nf 127 161 165 160 168 159 140 141 162 167 163 166 164 154\nf 211 245 249 244 252 243 224 225 246 251 247 250 248 238\nf 142 167 162\nf 139 168 160\nf 136 131 132 135\nf 139 140 159\nf 140 139 142\nf 135 132 133 134\nf 141 140 142\nf 168 139 159\nf 134 133 157 158\nf 139 128 129 138\nf 139 160 128\nf 162 141 142\nf 169 203 207 202 210 201 182 183 204 209 205 208 206 196\nf 157 156 155 158\nf 241 240 239 242\nf 153 166 163\nf 161 127 128\nf 153 154 164\nf 151 144 145 150\nf 149 148 133 132\nf 127 154 128\nf 153 152 129 128\nf 148 156 157 133\nf 153 163 142\nf 147 134 158 155\nf 142 139 138 143\nf 179 172 173 178\nf 210 181 201\nf 176 175 199 200\nf 181 170 171 180\nf 181 202 170\nf 204 183 184\nf 170 207 203\nf 208 195 206\nf 191 188 189 190\nf 195 184 185 194\nf 193 192 173 172\nf 196 195 170\nf 192 191 174 173\nf 192 187 188 191\nf 195 205 184\nf 188 177 176 189\nf 184 181 180 185\nf 221 214 215 220\nf 225 224 226\nf 252 223 243\nf 220 215 216 219\nf 223 252 244\nf 226 251 246\nf 226 247 251\nf 212 249 245\nf 233 230 231 232\nf 237 226 227 236\nf 235 234 215 214\nf 238 237 212\nf 234 233 216 215\nf 234 229 230 233\nf 237 247 226\nf 230 219 218 231\nf 229 220 219 230\ng pstripe\ns 17\nf 138 129 130 137\nf 152 151 130 129\ns 1\nf 227 222 221 228\nf 236 235 214 213\nf 185 180 179 186\nf 194 193 172 171\nf 152 143 144 151\nf 143 138 137 144\nf 194 185 186 193\nf 180 171 172 179\nf 236 227 228 235\nf 222 213 214 221\n\n# 3897 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/ciseau.obj",
    "content": "v 5.7 0.1 -97.5\nv 5.7 3.4 -97\nv 5.7 6.1 -95\nv 5.7 7.9 -92.2\nv 5.7 -7.8 -92.2\nv 5.7 -5.9 -95\nv 5.7 -3.2 -96.8\nv -5.7 3.2 -96.6\nv -5.7 -0.1 -97.2\nv -5.7 5.9 -94.8\nv -5.7 7.8 -92\nv -5.7 -7.9 -92\nv -5.7 -6.1 -94.8\nv -5.7 -3.3 -96.6\nv -5.2 3.6 -97.6\nv -5.2 -0.1 -98.3\nv -5.2 6.7 -95.5\nv -5.2 8.8 -92.4\nv -5.2 -8.9 -92.4\nv -5.2 -6.8 -95.5\nv -5.2 -3.7 -97.6\nv -4 4 -98.5\nv -4 -0.1 -99.3\nv -4 7.4 -96.2\nv -4 9.6 -92.8\nv -4 -9.8 -92.8\nv -4 -7.5 -96.2\nv -4 -4.1 -98.5\nv -2.1 4.2 -99\nv -2.1 -0.1 -99.9\nv -2.1 7.8 -96.6\nv -2.1 10.2 -93\nv -2.1 -10.3 -93\nv -2.1 -7.9 -96.6\nv -2.1 -4.3 -99\nv 2.1 4.2 -99\nv 2.1 -0.1 -99.9\nv 2.1 7.8 -96.6\nv 2.1 10.2 -93\nv 2.1 -10.3 -93\nv 2.1 -7.9 -96.6\nv 2.1 -4.3 -99\nv 4 4.1 -98.7\nv 4 0.1 -99.5\nv 4 7.5 -96.4\nv 4 9.8 -93\nv 4 -9.6 -93\nv 4 -7.4 -96.4\nv 4 -3.9 -98.7\nv 5.2 3.7 -97.8\nv 5.2 0.1 -98.6\nv 5.2 6.8 -95.8\nv 5.2 8.9 -92.7\nv 5.2 -8.8 -92.7\nv 5.2 -6.7 -95.8\nv 5.2 -3.6 -97.8\nv 5.7 8.6 -89\nv 5.2 9.6 -89\nv 4 10.6 -89\nv 2.1 11.1 -88.8\nv -2.1 11.1 -88.8\nv -4 10.5 -88.8\nv -5.2 9.5 -88.8\nv -5.7 8.5 -88.8\nv 5.2 -9.5 -89\nv 5.7 -8.4 -89\nv -5.7 -8.5 -88.8\nv -5.2 -9.6 -88.8\nv -4 -10.5 -88.8\nv -2.1 -11.2 -88.8\nv 2.1 -11.2 -88.8\nv 4 -10.4 -89\nv 5.7 8.6 -86.4\nv 5.2 9.6 -86.4\nv 4 10.6 -86.4\nv 2.1 11.1 -86.2\nv -2.1 11.1 -86.2\nv -4 10.5 -86.2\nv -5.2 9.5 -86.2\nv -5.7 8.5 -86.2\nv 5.2 -9.5 -86.4\nv 5.7 -8.4 -86.4\nv -5.7 -8.5 -86.2\nv -5.2 -9.6 -86.2\nv -4 -10.5 -86.2\nv -2.1 -11.2 -86.2\nv 2.1 -11.2 -86.2\nv 4 -10.4 -86.4\nv 5.2 -2.4 -8.6\nv 4.1 -5.4 -8.6\nv 5.6 0.3 -8.7\nv 5.3 2.9 -8.6\nv 4.2 5.8 -8.6\nv 2.2 7.7 -8.4\nv -2.1 7.6 -8.4\nv -4 5.7 -8.4\nv -5.2 2.7 -8.4\nv -5.2 -2.5 -8.4\nv -5.6 0.2 -8.5\nv -4 -5.4 -8.4\nv -2.1 -7.4 -8.4\nv 2.3 -7.4 -8.4\nv 1.1 -0.1 -100\nv 1.1 4.2 -99.1\nv 1.1 7.9 -96.7\nv 1.1 10.3 -93\nv 1.1 11.1 -88.8\nv 1.1 -11.3 -88.8\nv 1.1 -10.4 -93\nv 1.1 -8 -96.7\nv 1.1 -4.4 -99.1\nv 1.1 11.1 -86.2\nv 1.1 -11.3 -86.2\nv 1.1 8 -8.4\nv 1.1 -7.8 -8.4\nv -0.9 -0.1 -100\nv -0.9 4.2 -99.1\nv -0.9 7.9 -96.7\nv -0.9 10.3 -93.1\nv -0.9 11.2 -88.8\nv -0.9 -11.3 -88.8\nv -0.9 -10.4 -93.1\nv -0.9 -8 -96.7\nv -0.9 -4.4 -99.1\nv -0.9 11.2 -86.2\nv -0.9 -11.3 -86.2\nv -0.9 8 -8.4\nv -0.9 -7.8 -8.4\nv 0 -15.6 100\nv 0 15.5 100\nv 1.1 -7.8 5.6\nv -1.1 -7.8 5.6\nv 4.3 -4.9 -0.3\nv 2.9 -6.6 0.8\nv -1.8 7.6 2.4\nv -2.9 6.8 1\nv -4.3 4.9 0\nv 1.8 -7.5 2.4\nv 4.3 5.4 -0.3\nv 2.9 7 0.8\nv 5.3 2.9 -0.7\nv 1.2 7.9 5.6\nv 1.8 7.6 2.4\nv -4 -5.5 0.2\nv -4.9 -3.2 -0.3\nv -5.2 2.7 -0.4\nv 5.3 -2.5 -0.7\nv -2.9 -6.6 1\nv -1.8 -7.4 2.4\nv -1 7.9 5.6\nv -5.7 0 -0.6\nv 5.6 0.1 -0.7\nv 0 -15.6 100\nv 0 15.5 100\nv -1.1 -7.8 5.6\nv -1.8 7.6 2.4\nv -2.9 6.8 1\nv -4.3 4.9 0\nv -4 -5.5 0.2\nv -4.9 -3.2 -0.3\nv -5.2 2.7 -0.4\nv -2.9 -6.6 1\nv -1.8 -7.4 2.4\nv -1 7.9 5.6\nv -4.1 0 0.1\nv -2.9 0 1\nv -1.8 0 2.4\nv -5.1 0 -0.3\nv -5.7 0 -0.6\nv 0 -15.5 99.8\nv 0 15.6 99.8\nv 1.1 -7.7 5.4\nv 4.3 -4.9 -0.3\nv 2.9 -6.6 0.8\nv 1.8 -7.4 2.2\nv 4.3 5.4 -0.3\nv 2.9 7 0.8\nv 5.3 2.9 -0.7\nv 1.2 8.1 5.4\nv 1.8 7.8 2.2\nv 5.3 -2.5 -0.7\nv 2.9 0.1 0.8\nv 1.8 0.1 2.2\nv 5.3 0.1 -0.7\nv 4.3 0.1 -0.3\nv 5.6 0.1 -0.7\nv 5.7 0.4 -95\nv 5.7 0.4 -92.2\nv 5.7 0.4 -89\nv 5.7 0.4 -96.9\nv -5.7 0.3 -96.6\nv -5.7 0.3 -94.8\nv -5.7 0.3 -92\nv -5.7 0.3 -86.2\nv -5.7 0.3 -88.8\nv 5.7 0.4 -86.4\nv 5.5 -1.1 -22.3\nv -5.5 -1.3 -22\nv -5.7 1.3 -84.3\nv 5.7 -1.1 -83.5\nv -5.6 0.2 -23.6\nv -5.7 -1.3 -83.2\nv 5.7 1.4 -84.6\nv -5.7 1.3 -82.1\nv 5.7 1.4 -82.3\nv 5.7 1.9 -83.4\nv -5.6 1.4 -53\nv -5.6 0.3 -20.5\nv 5.6 1.5 -53.3\nv 5.6 0.4 -23.8\nv 5.6 0.4 -20.7\nv -5.6 -0.8 -50.8\nv -5.6 0.3 -50.4\nv -5.7 1.8 -83.2\nv -5.6 0.3 -53.5\nv 5.6 0.4 -53.7\nv -5.6 1.4 -50.8\nv -5.7 0.3 -84.7\nv -5.7 -0.8 -84.3\nv -5.5 -0.8 -20.9\nv 5.7 0.4 -85\nv 5.7 -0.7 -84.5\nv 5.6 -0.7 -21.2\nv -5.7 0.3 -81.6\nv -5.6 -0.7 -53.1\nv 5.7 -0.7 -82.3\nv -5.5 -0.8 -23.1\nv 5.6 1.5 -51.1\nv 5.6 2 -22.3\nv 5.6 0.4 -50.6\nv 5.6 -0.7 -23.4\nv -5.7 -0.8 -82.1\nv 5.7 0.4 -81.9\nv 5.6 1.5 -23.4\nv 5.6 1.5 -21.2\nv -5.6 -1.3 -52\nv -5.6 1.8 -52\nv 5.6 2 -52.2\nv -5.6 1.4 -23.1\nv 5.6 -0.6 -53.3\nv -5.6 1.9 -22\nv 5.6 -0.6 -51\nv -5.6 1.4 -20.9\nv 5.6 -1.2 -52.1\nv 5.3 4.1 -22.4\nv 4.1 6.6 -22.4\nv 2.2 8.3 -22.1\nv -0.9 8.6 -22.1\nv -2.1 8.2 -22.1\nv -4 6.5 -22.1\nv -5.2 3.9 -22.1\nv -5.2 -3.8 -22.1\nv -4 -6.3 -22.1\nv -2.1 -8.1 -22.1\nv -0.9 -8.4 -22.1\nv 1.1 -8.4 -22.1\nv 2.3 -8.1 -22.1\nv 4.1 -6.3 -22.4\nv 5.2 -3.7 -22.4\nv 1.1 8.6 -22.1\nv 5.3 6.7 -52.8\nv 4.1 8.5 -52.8\nv 2.2 9.6 -52.6\nv -0.9 9.8 -52.6\nv -2.1 9.6 -52.6\nv -4 8.4 -52.6\nv -5.2 6.6 -52.6\nv -5.2 -6.6 -52.6\nv -4 -8.3 -52.6\nv -2.1 -9.6 -52.6\nv -0.9 -9.8 -52.6\nv 1.1 -9.7 -52.6\nv 2.2 -9.6 -52.6\nv 4.1 -8.3 -52.8\nv 5.2 -6.5 -52.8\nv 1.1 9.8 -52.6\nv 5.2 9.4 -83.3\nv 4 10.4 -83.3\nv 2.2 10.9 -83.1\nv -0.9 11.1 -83.1\nv -2.1 10.9 -83.1\nv -4 10.3 -83.1\nv -5.2 9.2 -83.1\nv -5.2 -9.3 -83.1\nv -4 -10.3 -83.1\nv -2.1 -11 -83.1\nv -0.9 -11.2 -83.1\nv 1.1 -11.1 -83.1\nv 2.2 -11 -83.1\nv 4 -10.2 -83.3\nv 5.2 -9.2 -83.3\nv 1.1 11 -83.1\nv 5.4 -8 -83.2\nv 5.5 8.2 -83.4\nv -5.7 -8 -83\nv -5.7 7.9 -83.2\nusemtl rgb(204,170,136)\nf 15 16 9 8\nf 17 15 8 10\nf 18 17 10 11\nf 63 18 11 64\nf 19 68 67 12\nf 20 19 12 13\nf 21 20 13 14\nf 16 21 14 9\nf 22 23 16 15\nf 24 22 15 17\nf 25 24 17 18\nf 62 25 18 63\nf 26 69 68 19\nf 27 26 19 20\nf 28 27 20 21\nf 23 28 21 16\nf 29 30 23 22\nf 31 29 22 24\nf 32 31 24 25\nf 61 32 25 62\nf 33 70 69 26\nf 34 33 26 27\nf 35 34 27 28\nf 30 35 28 23\nf 117 116 30 29\nf 118 117 29 31\nf 119 118 31 32\nf 120 119 32 61\nf 122 121 70 33\nf 123 122 33 34\nf 124 123 34 35\nf 111 103 37 42\nf 43 44 37 36\nf 45 43 36 38\nf 46 45 38 39\nf 59 46 39 60\nf 47 72 71 40\nf 48 47 40 41\nf 49 48 41 42\nf 44 49 42 37\nf 50 51 44 43\nf 52 50 43 45\nf 53 52 45 46\nf 58 53 46 59\nf 54 65 72 47\nf 55 54 47 48\nf 56 55 48 49\nf 51 56 49 44\nf 2 1 51 50\nf 3 2 50 52\nf 4 3 52 53\nf 57 4 53 58\nf 5 66 65 54\nf 6 5 54 55\nf 7 6 55 56\nf 1 7 56 51\nf 74 73 57 58\nf 75 74 58 59\nf 76 75 59 60\nf 125 120 61 77\nf 78 77 61 62\nf 79 78 62 63\nf 80 79 63 64\nf 82 81 65 66\nf 84 83 67 68\nf 85 84 68 69\nf 86 85 69 70\nf 113 108 71 87\nf 88 87 71 72\nf 188 187 3 4\nf 189 188 4 57\nf 190 187 6 7\nf 192 191 14 13\nf 193 192 13 12\nf 195 194 80 64\nf 195 193 12 67\nf 278 277 74 75\nf 279 278 75 76\nf 281 280 125 77\nf 282 281 77 78\nf 283 282 78 79\nf 285 284 84 85\nf 286 285 85 86\nf 289 288 113 87\nf 88 72 65 81\nf 196 189 57 73\nf 291 290 88 81\nf 290 289 87 88\nf 104 36 37 103\nf 105 38 36 104\nf 106 39 38 105\nf 107 60 39 106\nf 109 40 71 108\nf 110 41 40 109\nf 111 42 41 110\nf 112 76 60 107\nf 292 279 76 112\nf 124 35 30 116\nf 126 86 70 121\nf 287 286 86 126\nf 188 5 6 187\nf 189 66 5 188\nf 190 2 3 187\nf 192 10 8 191\nf 193 11 10 192\nf 195 67 83 194\nf 195 64 11 193\nf 196 82 66 189\nf 190 1 2\nf 190 7 1\nf 191 9 14\nf 191 8 9\nf 99 208 220\nf 211 91 223\nf 91 211 235\nf 243 208 99\nf 210 230 228 234\nf 242 230 210 231\nf 209 216 233 205\nf 226 233 216 240\nf 224 232 225 215\nf 204 224 215 207\nf 213 212 227 201\nf 239 217 213 201\nf 246 93 92 245\nf 247 94 93 246\nf 249 95 127 248\nf 250 96 95 249\nf 251 97 96 250\nf 253 100 98 252\nf 254 101 100 253\nf 257 102 115 256\nf 259 89 90 258\nf 258 90 102 257\nf 260 114 94 247\nf 255 128 101 254\nf 262 246 245 261\nf 263 247 246 262\nf 265 249 248 264\nf 266 250 249 265\nf 267 251 250 266\nf 269 253 252 268\nf 270 254 253 269\nf 273 257 256 272\nf 275 259 258 274\nf 274 258 257 273\nf 276 260 247 263\nf 271 255 254 270\nf 278 262 261 277\nf 279 263 262 278\nf 281 265 264 280\nf 282 266 265 281\nf 283 267 266 282\nf 285 269 268 284\nf 286 270 269 285\nf 289 273 272 288\nf 291 275 274 290\nf 290 274 273 289\nf 292 276 263 279\nf 287 271 270 286\nf 275 291 293\nf 277 261 294\nf 206 203 73 294\nf 82 222 200 293\nf 293 291 81 82\nf 294 73 74 277\nf 82 196 221 222\nf 284 268 295\nf 267 283 296\nf 83 84 284 295\nf 283 79 80 296\nf 80 199 214 296\nf 202 219 83 295\nf 218 194 83 219\nf 199 80 194 218\nf 196 73 203 221\nf 229 234 245\nf 231 197 259\nf 244 242 275\nf 242 231 259 275\nf 240 244 275\nf 238 209 261\nf 234 228 261 245\nf 228 238 261\nf 200 226 293\nf 226 240 275 293\nf 209 205 294 261\nf 205 206 294\nf 197 223 259\nf 223 91 89 259\nf 92 91 235 245\nf 235 229 245\nf 214 204 296\nf 232 202 295\nf 236 225 268\nf 225 232 295 268\nf 204 207 267 296\nf 207 237 267\nf 212 236 268\nf 237 217 267\nf 198 227 252\nf 227 212 268 252\nf 217 239 251 267\nf 239 241 251\nf 99 220 252 98\nf 220 198 252\nf 241 243 251\nf 243 99 97 251\nusemtl rgb(204,204,204)\nf 124 116 103 111\nf 126 121 108 113\nf 288 287 126 113\nf 131 129 132\nf 130 142 150\nf 117 104 103 116\nf 118 105 104 117\nf 119 106 105 118\nf 120 107 106 119\nf 122 109 108 121\nf 123 110 109 122\nf 124 111 110 123\nf 125 112 107 120\nf 260 248 127 114\nf 179 171 170 172\nf 102 90 134\nf 100 101 148\nf 133 134 90\nf 137 136 96\nf 149 148 101\nf 160 168 169\nf 139 93 140\nf 178 184 186\nf 100 148 144\nf 168 161 169\nf 184 181 186\nf 173 181 184 185\nf 184 178 176 185\nf 176 177 182 185\nf 182 174 173 185\nf 183 182 177 180\nf 183 175 174 182\nf 180 179 183\nf 161 168 165 158\nf 168 160 159 165\nf 157 158 165 166\nf 165 159 162 166\nf 156 157 166 167\nf 166 162 163 167\nf 164 156 167\nf 99 98 145 151\nf 98 100 144 145\nf 146 97 99 151\nf 137 96 97 146\nf 133 90 89 147\nf 147 89 91 152\nf 91 92 141 152\nf 92 93 139 141\nf 179 172 183\nf 172 175 183\nf 155 153 154 164\nf 163 155 167\nf 155 164 167\nf 101 128 132 149\nf 138 102 134\nf 138 131 115 102\nf 94 114 142 143\nf 140 93 94 143\nf 95 96 136 135\nf 127 95 135 150\nf 132 128 115 131\nf 114 127 150 142\nf 256 115 128 255\nf 276 264 248 260\nf 272 256 255 271\nf 292 280 264 276\nf 288 272 271 287\nf 292 112 125 280\nusemtl rgb(153,153,153)\nf 211 223 197 231\nf 211 234 229 235\nf 211 231 210 234\nf 230 242 244 240\nf 209 230 240 216\nf 209 238 228 230\nf 233 226 200 222\nf 203 233 222 221\nf 203 206 205 233\nf 227 198 220 208\nf 243 241 239 208\nf 239 201 227 208\nf 236 212 213 225\nf 207 213 217 237\nf 215 225 213 207\nf 219 202 232 224\nf 204 214 199 224\nf 199 218 219 224\n"
  },
  {
    "path": "test/bgratutorial3d/obj/cube.obj",
    "content": "# cube.obj\n#\n \ng cube\n \nv  0.0  0.0  0.0\nv  0.0  0.0  1.0\nv  0.0  1.0  0.0\nv  0.0  1.0  1.0\nv  1.0  0.0  0.0\nv  1.0  0.0  1.0\nv  1.0  1.0  0.0\nv  1.0  1.0  1.0\n\nvn  0.0  0.0  1.0\nvn  0.0  0.0 -1.0\nvn  0.0  1.0  0.0\nvn  0.0 -1.0  0.0\nvn  1.0  0.0  0.0\nvn -1.0  0.0  0.0\n \nf  1//2  7//2  5//2\nf  1//2  3//2  7//2 \nf  1//6  4//6  3//6 \nf  1//6  2//6  4//6 \nf  3//3  8//3  7//3 \nf  3//3  4//3  8//3 \nf  5//5  7//5  8//5 \nf  5//5  8//5  6//5 \nf  1//4  5//4  6//4 \nf  1//4  6//4  2//4 \nf  2//1  6//1  8//1 \nf  2//1  8//1  4//1 \n"
  },
  {
    "path": "test/bgratutorial3d/obj/diamond.obj",
    "content": "# diamond.obj\n\ng Object001\n\nv 0.000000E+00 0.000000E+00 78.0000\nv 45.0000 45.0000 0.000000E+00\nv 45.0000 -45.0000 0.000000E+00\nv -45.0000 -45.0000 0.000000E+00\nv -45.0000 45.0000 0.000000E+00\nv 0.000000E+00 0.000000E+00 -78.0000\n\nf     1 2 3\nf     1 3 4\nf     1 4 5\nf     1 5 2\nf     6 5 4\nf     6 4 3\nf     6 3 2\nf     6 2 1\nf     6 1 5\n"
  },
  {
    "path": "test/bgratutorial3d/obj/dodecahedron.obj",
    "content": "# OBJ file created by ply_to_obj.c\n#\ng Object001\n\nv  -0.57735  -0.57735  0.57735\nv  0.934172  0.356822  0\nv  0.934172  -0.356822  0\nv  -0.934172  0.356822  0\nv  -0.934172  -0.356822  0\nv  0  0.934172  0.356822\nv  0  0.934172  -0.356822\nv  0.356822  0  -0.934172\nv  -0.356822  0  -0.934172\nv  0  -0.934172  -0.356822\nv  0  -0.934172  0.356822\nv  0.356822  0  0.934172\nv  -0.356822  0  0.934172\nv  0.57735  0.57735  -0.57735\nv  0.57735  0.57735  0.57735\nv  -0.57735  0.57735  -0.57735\nv  -0.57735  0.57735  0.57735\nv  0.57735  -0.57735  -0.57735\nv  0.57735  -0.57735  0.57735\nv  -0.57735  -0.57735  -0.57735\n\nf  19  3  2\nf  12  19  2\nf  15  12  2\nf  8  14  2\nf  18  8  2\nf  3  18  2\nf  20  5  4\nf  9  20  4\nf  16  9  4\nf  13  17  4\nf  1  13  4\nf  5  1  4\nf  7  16  4\nf  6  7  4\nf  17  6  4\nf  6  15  2\nf  7  6  2\nf  14  7  2\nf  10  18  3\nf  11  10  3\nf  19  11  3\nf  11  1  5\nf  10  11  5\nf  20  10  5\nf  20  9  8\nf  10  20  8\nf  18  10  8\nf  9  16  7\nf  8  9  7\nf  14  8  7\nf  12  15  6\nf  13  12  6\nf  17  13  6\nf  13  1  11\nf  12  13  11\nf  19  12  11\n"
  },
  {
    "path": "test/bgratutorial3d/obj/fourche.obj",
    "content": "v 1.5 -38.2 -15.1\nv 1.6 -37.9 -17.3\nv -0.9 -38 -17.3\nv -22.4 -38 -17.2\nv 22.1 -38 -17.1\nv -22.4 -38.1 -15.2\nv 22.2 -38 -15.1\nv 3 -24.4 -12.9\nv 2.9 -24.4 -12.2\nv 2.9 -24.4 -13.7\nv 2.6 -24.4 -11.5\nv 2.6 -24.3 -14.3\nv 2.2 -24.4 -10.9\nv 2.2 -24.3 -14.9\nv 1.6 -24.4 -10.4\nv 1.6 -24.3 -15.4\nv 0.9 -24.4 -10.2\nv 0.9 -24.3 -15.7\nv 0.2 -24.4 -10.1\nv 0.2 -24.3 -15.8\nv -0.6 -24.4 -10.2\nv -0.6 -24.3 -15.7\nv -1.3 -24.4 -10.4\nv -1.3 -24.3 -15.4\nv -1.9 -24.4 -10.9\nv -1.9 -24.3 -14.9\nv -2.3 -24.4 -11.5\nv -2.3 -24.3 -14.3\nv -2.6 -24.4 -12.2\nv -2.6 -24.4 -13.7\nv -2.7 -24.4 -12.9\nv -3.3 -17.9 -12.1\nv -3.2 -17.9 -11.3\nv -2.9 -17.9 -10.4\nv -2.3 -17.9 -9.7\nv -1.6 -17.9 -9.2\nv -0.8 -17.9 -8.9\nv 0.1 -17.9 -8.7\nv 1 -17.9 -8.9\nv 1.8 -17.9 -9.2\nv 2.5 -17.9 -9.7\nv 3 -17.9 -10.4\nv 3.3 -17.9 -11.3\nv 3.5 -17.9 -12.1\nv 3.4 -17.9 -13\nv 3 -17.9 -13.8\nv 2.5 -17.9 -14.5\nv 1.8 -17.9 -15.1\nv 1 -17.9 -15.4\nv 0.1 -17.9 -15.5\nv -0.8 -17.9 -15.4\nv -1.6 -17.9 -15.1\nv -2.3 -17.9 -14.6\nv -2.9 -17.9 -13.8\nv -3.2 -17.9 -13\nv -1.1 -38.3 -15.2\nv 3 97 -12.1\nv 2.9 97 -11.4\nv 2.9 97 -12.9\nv 2.6 97 -10.7\nv 2.6 97 -13.6\nv 2.1 97 -10.1\nv 2.1 97 -14.2\nv 1.5 97 -9.6\nv 1.5 97 -14.7\nv 0.8 97 -9.3\nv 0.8 97 -15\nv 0.1 97 -9.2\nv 0.1 97 -15.1\nv -0.7 97 -9.3\nv -0.7 97 -15\nv -1.4 97 -9.6\nv -1.4 97 -14.7\nv -2 97 -10.1\nv -2 97 -14.2\nv -2.5 97 -10.7\nv -2.5 97 -13.6\nv -2.8 97 -11.4\nv -2.8 97 -12.9\nv -2.9 97 -12.1\nv 14.2 94 -12.2\nv 14.2 94.1 -11.4\nv 14.2 94.1 -12.9\nv 14.2 94.4 -10.7\nv 14.2 94.4 -13.6\nv 14.2 94.9 -10.1\nv 14.2 94.9 -14.2\nv 14.2 95.5 -9.6\nv 14.2 95.5 -14.7\nv 14.2 96.2 -9.3\nv 14.2 96.2 -15\nv 14.2 97 -9.2\nv 14.2 97 -12.2\nv 14.2 97 -15.1\nv 14.2 97.8 -9.3\nv 14.2 97.8 -15\nv 14.2 98.5 -9.6\nv 14.2 98.5 -14.7\nv 14.2 99.1 -10.1\nv 14.2 99.1 -14.2\nv 14.2 99.6 -10.7\nv 14.2 99.6 -13.6\nv 14.2 99.9 -11.4\nv 14.2 99.9 -12.9\nv 14.2 100 -12.2\nv -14.6 94 -12.2\nv -14.6 94.1 -11.4\nv -14.6 94.1 -12.9\nv -14.6 94.4 -10.7\nv -14.6 94.4 -13.6\nv -14.6 94.9 -10.1\nv -14.6 94.9 -14.2\nv -14.6 95.5 -9.6\nv -14.6 95.5 -14.7\nv -14.6 96.2 -9.3\nv -14.6 96.2 -15\nv -14.6 97 -9.2\nv -14.6 97 -15.1\nv -14.6 97.8 -9.3\nv -14.6 97.8 -15\nv -14.6 98.5 -9.6\nv -14.6 98.5 -14.7\nv -14.6 99.1 -10.1\nv -14.6 99.1 -14.2\nv -14.6 99.6 -10.7\nv -14.6 99.6 -13.6\nv -14.6 99.9 -11.4\nv -14.6 99.9 -12.9\nv -14.6 100 -12.2\nv 3.5 0.8 -12.1\nv 3.3 0.7 -11.3\nv 3.3 0.8 -13\nv 3 0.7 -10.4\nv 3 0.8 -13.8\nv 2.5 0.7 -9.7\nv 2.5 0.8 -14.5\nv 1.8 0.7 -9.2\nv 1.8 0.8 -15.1\nv 0.9 0.7 -8.9\nv 0.9 0.8 -15.4\nv 0.1 0.7 -8.7\nv 0.1 0.8 -15.5\nv -0.8 0.7 -8.9\nv -0.8 0.8 -15.4\nv -1.6 0.7 -9.2\nv -1.6 0.8 -15.1\nv -2.3 0.7 -9.7\nv -2.3 0.8 -14.5\nv -2.9 0.7 -10.4\nv -2.9 0.8 -13.8\nv -3.2 0.7 -11.3\nv -3.2 0.8 -13\nv -3.3 0.8 -12.1\nv 3 0.8 -12.1\nv 2.9 0.8 -11.4\nv 2.9 0.8 -12.9\nv 2.6 0.8 -10.7\nv 2.6 0.8 -13.6\nv 2.1 0.8 -10.1\nv 2.1 0.8 -14.2\nv 1.5 0.8 -9.6\nv 1.5 0.8 -14.7\nv 0.8 0.8 -9.3\nv 0.8 0.8 -15\nv 0.1 0.8 -9.2\nv 0.1 0.8 -15.1\nv -0.7 0.8 -9.3\nv -0.7 0.8 -15\nv -1.4 0.8 -9.6\nv -1.4 0.8 -14.7\nv -2 0.8 -10.1\nv -2 0.8 -14.2\nv -2.5 0.8 -10.7\nv -2.5 0.8 -13.6\nv -2.8 0.8 -11.4\nv -2.8 0.8 -12.9\nv -2.9 0.8 -12.1\nv -14.6 97.2 -12.2\nv 0.7 -99.9 18.2\nv 1.5 -71.6 -10.4\nv 1.5 -66.1 -14.9\nv 1.5 -61.4 -16.9\nv 1.5 -70.5 -8.3\nv 1.5 -65 -12.8\nv 1.5 -60.5 -14.7\nv 1.5 -54.2 -16\nv 1.5 -54.8 -18.3\nv -0.9 -71.6 -10.4\nv -0.9 -66.1 -15\nv -0.9 -61.4 -16.9\nv -0.9 -54.2 -16\nv -0.9 -54.8 -18.3\nv -0.9 -70.5 -8.3\nv -0.9 -65 -12.8\nv -0.9 -60.5 -14.7\nv -24.6 -40.2 -17.3\nv 24.6 -40.3 -17.2\nv -24.5 -40.6 -15.2\nv 24.5 -40.4 -15.2\nv -1.1 -40.4 -15.3\nv 1.6 -40.4 -15.2\nv -0.8 -40.3 -17.4\nv 1.7 -40.1 -17.4\nv -0.9 -90.5 11\nv 1.5 -90.5 11\nv 1.5 -92.1 9.4\nv -0.9 -92.1 9.4\nv 12.9 -100 18.3\nv 13.7 -71.7 -10.3\nv 13.7 -66.2 -14.8\nv 13.7 -61.5 -16.8\nv 13.7 -70.6 -8.2\nv 13.7 -65.1 -12.7\nv 13.7 -60.6 -14.6\nv 13.7 -54.3 -15.9\nv 13.7 -54.9 -18.2\nv 11.3 -71.7 -10.3\nv 11.3 -66.2 -14.9\nv 11.3 -61.5 -16.8\nv 11.3 -54.3 -15.9\nv 11.3 -54.9 -18.2\nv 11.3 -70.6 -8.2\nv 11.3 -65.1 -12.7\nv 11.3 -60.6 -14.6\nv 11.3 -40.4 -17.3\nv 11.3 -90.6 11.1\nv 13.7 -90.6 11.1\nv 13.7 -92.2 9.5\nv 11.3 -92.2 9.5\nv 23.8 -100 18.3\nv 24.6 -71.8 -10.2\nv 24.6 -66.3 -14.8\nv 24.6 -61.6 -16.7\nv 24.6 -70.6 -8.2\nv 24.6 -65.1 -12.7\nv 24.6 -60.6 -14.6\nv 24.6 -54.3 -15.9\nv 24.6 -55 -18.1\nv 22.2 -71.8 -10.2\nv 22.2 -66.3 -14.8\nv 22.2 -61.6 -16.7\nv 22.2 -54.3 -15.9\nv 22.2 -55 -18.1\nv 22.2 -70.6 -8.2\nv 22.2 -65.1 -12.7\nv 22.2 -60.6 -14.6\nv 22.1 -40.4 -15.2\nv 22.2 -90.6 11.1\nv 24.6 -90.6 11.1\nv 24.6 -92.3 9.6\nv 22.2 -92.3 9.5\nv -12.9 -100 18.3\nv -13.7 -71.7 -10.3\nv -13.7 -66.2 -14.8\nv -13.7 -61.5 -16.8\nv -13.7 -70.6 -8.2\nv -13.7 -65.1 -12.7\nv -13.7 -60.6 -14.6\nv -13.7 -54.3 -15.9\nv -13.7 -54.9 -18.2\nv -11.2 -71.7 -10.3\nv -11.2 -66.2 -14.9\nv -11.2 -61.5 -16.8\nv -11.3 -54.3 -15.9\nv -11.2 -54.9 -18.2\nv -11.3 -70.6 -8.2\nv -11.3 -65.1 -12.7\nv -11.3 -60.6 -14.6\nv -11.3 -90.6 11.1\nv -13.7 -90.6 11.1\nv -13.7 -92.2 9.5\nv -11.2 -92.2 9.5\nv -23.8 -100 18.3\nv -24.6 -71.8 -10.2\nv -24.6 -66.3 -14.8\nv -24.6 -61.6 -16.7\nv -24.6 -70.6 -8.2\nv -24.6 -65.1 -12.7\nv -24.6 -60.6 -14.6\nv -24.6 -54.3 -15.9\nv -24.6 -55 -18.1\nv -22.2 -71.8 -10.2\nv -22.2 -66.3 -14.8\nv -22.2 -61.6 -16.7\nv -22.2 -54.3 -15.9\nv -22.2 -55 -18.1\nv -22.2 -70.6 -8.2\nv -22.2 -65.1 -12.7\nv -22.2 -60.6 -14.6\nv -22.2 -90.6 11.1\nv -24.6 -90.6 11.1\nv -24.6 -92.3 9.6\nv -22.2 -92.3 9.5\nv 12.5 -38.1 -15.1\nv 12.5 -38 -17.2\nv -12.2 -38 -17.1\nv -12.2 -38.1 -15.2\nv 22.3 -40.2 -17.2\nv 13.8 -40.4 -17.2\nv -11.3 -40.2 -17.4\nv -13.8 -40.3 -17.4\nv -22.3 -40.2 -17.4\nv -22.4 -40.3 -15.2\nv -13.6 -40.3 -15.2\nv -11 -40.4 -15.2\nv 13.5 -40.5 -15.3\nv 11.1 -40.4 -15.3\nv 23.9 -38.7 -17.2\nv 23.9 -38.6 -15.3\nv -23.8 -38.8 -17.2\nv -23.8 -38.8 -15.2\nusemtl rgb(204,170,136)\nf 78 80 177 175\nf 76 78 175 173\nf 74 76 173 171\nf 72 74 171 169\nf 70 72 169 167\nf 68 70 167 165\nf 66 68 165 163\nf 64 66 163 161\nf 62 64 161 159\nf 60 62 159 157\nf 58 60 157 155\nf 57 58 155 154\nf 59 57 154 156\nf 61 59 156 158\nf 63 61 158 160\nf 65 63 160 162\nf 67 65 162 164\nf 69 67 164 166\nf 71 69 166 168\nf 73 71 168 170\nf 75 73 170 172\nf 77 75 172 174\nf 79 77 174 176\nf 80 79 176 177\nf 96 94 118 120\nf 98 96 120 122\nf 100 98 122 124\nf 102 100 124 126\nf 104 102 126 128\nf 105 104 128 129\nf 103 105 129 127\nf 101 103 127 125\nf 99 101 125 123\nf 97 99 123 121\nf 95 97 121 119\nf 92 95 119 117\nf 90 92 117 115\nf 88 90 115 113\nf 86 88 113 111\nf 84 86 111 109\nf 82 84 109 107\nf 81 82 107 106\nf 83 81 106 108\nf 85 83 108 110\nf 87 85 110 112\nf 89 87 112 114\nf 91 89 114 116\nf 94 91 116 118\nf 93 94 96 98\nf 93 98 100 102\nf 93 102 104 105\nf 93 105 103 101\nf 93 101 99 97\nf 93 97 95 92\nf 93 92 90 88\nf 93 88 86 84\nf 93 84 82 81\nf 93 81 83 85\nf 93 85 87 89\nf 93 89 91 94\nf 118 116 178\nf 116 114 178\nf 114 112 178\nf 112 110 178\nf 110 108 178\nf 108 106 178\nf 106 107 178\nf 107 109 178\nf 109 111 178\nf 111 113 178\nf 113 115 178\nf 115 117 178\nf 117 119 178\nf 119 121 178\nf 121 123 178\nf 123 125 178\nf 125 127 178\nf 127 129 178\nf 129 128 178\nf 128 126 178\nf 126 124 178\nf 124 122 178\nf 122 120 178\nf 120 118 178\nusemtl rgb(204,204,204)\nf 25 27 56\nf 23 25 56\nf 21 23 56\nf 17 19 1\nf 15 17 1\nf 13 15 1\nf 11 13 1\nf 10 8 2\nf 12 10 2\nf 14 12 2\nf 16 14 2\nf 18 16 2\nf 20 18 2\nf 24 22 3\nf 26 24 3\nf 28 26 3\nf 30 28 3\nf 31 30 3\nf 33 32 31 29\nf 34 33 29 27\nf 35 34 27 25\nf 36 35 25 23\nf 37 36 23 21\nf 38 37 21 19\nf 39 38 19 17\nf 40 39 17 15\nf 41 40 15 13\nf 42 41 13 11\nf 43 42 11 9\nf 44 43 9 8\nf 45 44 8 10\nf 46 45 10 12\nf 47 46 12 14\nf 48 47 14 16\nf 49 48 16 18\nf 50 49 18 20\nf 51 50 20 22\nf 52 51 22 24\nf 53 52 24 26\nf 54 53 26 28\nf 55 54 28 30\nf 55 32 153 152\nf 153 151 175 177\nf 151 149 173 175\nf 149 147 171 173\nf 147 145 169 171\nf 145 143 167 169\nf 143 141 165 167\nf 141 139 163 165\nf 139 137 161 163\nf 137 135 159 161\nf 135 133 157 159\nf 133 131 155 157\nf 131 130 154 155\nf 130 132 156 154\nf 132 134 158 156\nf 134 136 160 158\nf 136 138 162 160\nf 138 140 164 162\nf 140 142 166 164\nf 142 144 168 166\nf 144 146 170 168\nf 146 148 172 170\nf 148 150 174 172\nf 150 152 176 174\nf 152 153 177 176\nf 33 151 153 32\nf 34 149 151 33\nf 35 147 149 34\nf 36 145 147 35\nf 37 143 145 36\nf 38 141 143 37\nf 39 139 141 38\nf 40 137 139 39\nf 41 135 137 40\nf 42 133 135 41\nf 43 131 133 42\nf 44 130 131 43\nf 45 132 130 44\nf 46 134 132 45\nf 47 136 134 46\nf 48 138 136 47\nf 49 140 138 48\nf 50 142 140 49\nf 51 144 142 50\nf 52 146 144 51\nf 53 148 146 52\nf 54 150 148 53\nf 55 152 150 54\nf 55 30 31 32\nf 56 27 29\nf 9 11 1\nf 8 9 1 2\nf 3 56 29 31\nf 22 20 3\nf 20 2 3\nf 19 56 1\nf 19 21 56\nf 295 294 7 5\nf 297 296 4 6\nf 205 204 179\nf 194 193 183 184\nf 195 194 184 185\nf 207 206 179\nf 189 181 180 188\nf 190 182 181 189\nf 192 187 182 190\nf 195 185 186 191\nf 300 296 3 202\nf 201 1 56 200\nf 202 3 2 203\nf 192 202 203 187\nf 186 201 200 191\nf 187 203 201 186\nf 182 187 186 185\nf 182 185 184 181\nf 184 183 180 181\nf 206 205 179\nf 202 192 191 200\nf 192 190 195 191\nf 190 189 194 195\nf 189 188 193 194\nf 207 204 193 188\nf 205 183 193 204\nf 207 188 180 206\nf 206 180 183 205\nf 207 179 204\nf 227 226 208\nf 223 222 212 213\nf 224 223 213 214\nf 229 228 208\nf 218 210 209 217\nf 219 211 210 218\nf 221 216 211 219\nf 224 214 215 220\nf 221 225 299 216\nf 215 306 307 220\nf 216 299 306 215\nf 211 216 215 214\nf 211 214 213 210\nf 213 212 209 210\nf 228 227 208\nf 225 221 220 307\nf 221 219 224 220\nf 219 218 223 224\nf 218 217 222 223\nf 229 226 222 217\nf 227 212 222 226\nf 229 217 209 228\nf 228 209 212 227\nf 229 208 226\nf 249 248 230\nf 245 244 234 235\nf 246 245 235 236\nf 251 250 230\nf 240 232 231 239\nf 241 233 232 240\nf 243 238 233 241\nf 246 236 237 242\nf 243 298 197 238\nf 237 199 247 242\nf 238 197 199 237\nf 233 238 237 236\nf 233 236 235 232\nf 235 234 231 232\nf 250 249 230\nf 298 243 242 247\nf 243 241 246 242\nf 241 240 245 246\nf 240 239 244 245\nf 251 248 244 239\nf 249 234 244 248\nf 251 239 231 250\nf 250 231 234 249\nf 251 230 248\nf 252 269 270\nf 257 256 266 267\nf 258 257 267 268\nf 252 271 272\nf 261 253 254 262\nf 262 254 255 263\nf 263 255 260 265\nf 264 259 258 268\nf 260 301 300 265\nf 264 305 304 259\nf 259 304 301 260\nf 258 259 260 255\nf 254 257 258 255\nf 254 253 256 257\nf 252 270 271\nf 305 264 265 300\nf 264 268 263 265\nf 268 267 262 263\nf 267 266 261 262\nf 261 266 269 272\nf 269 266 256 270\nf 271 253 261 272\nf 270 256 253 271\nf 269 252 272\nf 273 290 291\nf 278 277 287 288\nf 279 278 288 289\nf 273 292 293\nf 282 274 275 283\nf 283 275 276 284\nf 284 276 281 286\nf 285 280 279 289\nf 281 196 302 286\nf 285 303 198 280\nf 280 198 196 281\nf 279 280 281 276\nf 275 278 279 276\nf 275 274 277 278\nf 273 291 292\nf 303 285 286 302\nf 285 289 284 286\nf 289 288 283 284\nf 288 287 282 283\nf 282 287 290 293\nf 290 287 277 291\nf 292 274 282 293\nf 291 277 274 292\nf 290 273 293\nf 295 2 1 294\nf 297 56 3 296\nf 299 295 5 298\nf 225 295 299\nf 225 203 2 295\nf 296 300 301\nf 302 4 296 301\nf 304 297 6 303\nf 305 297 304\nf 305 200 56 297\nf 307 294 1 201\nf 307 306 294\nf 247 7 294 306\nf 247 306 299 298\nf 307 201 203 225\nf 300 202 200 305\nf 304 303 302 301\nf 309 247 199\nf 309 7 247\nf 308 298 5\nf 308 197 298\nf 310 302 196\nf 310 4 302\nf 311 303 6\nf 311 198 303\nf 311 310 196 198\nf 311 6 4 310\nf 309 308 5 7\nf 309 199 197 308\n"
  },
  {
    "path": "test/bgratutorial3d/obj/gourd.obj",
    "content": "v -0.23876920554499864 1.3103797270601687 0.13001260700009193\nv -0.27582915374543276 1.2582563331865875 0.12364597630502337\nv -0.2674888336016338 1.3474373225751202 0.15912747459742976\nv -0.3128662756980407 1.222713216834852 0.14623565543301947\nv -0.3018967864385568 1.3832552573955716 0.1992584345763206\nv -0.3291084911674431 1.4015778151496097 0.23515159787549716\nv -0.3393653203892503 1.1606446817887044 0.25033862660881895\nv -0.32933702685159627 1.3872894114706185 0.30297184764306634\nv -0.34413945029647036 1.1847846590886826 0.3161902839586921\nv -0.32731404147036136 1.3472171185436952 0.33599708012099205\nv -0.31993727304296354 1.2010232341929186 0.3533614819463716\nv -0.30726711945847285 1.2956437760677335 0.3643485926629952\nv -0.2877856463729185 1.2493470906219926 0.38230872912669633\nv -0.21034318989786122 1.3531672444828033 0.1537169917653439\nv -0.21145627080982005 1.3818523867813413 0.35175494063536605\nv -0.2338628137428242 1.3442372246769223 0.37948021085512573\nv -0.25614030179208813 1.2952633550210815 0.3911502328871025\nv -0.596105380500693 -0.6768462432797441 -0.9120215121805894\nv -0.10001338605742703 -0.9910441617396678 -0.7028175040329147\nv -0.16086384627984987 -1.127277664194341 -0.7434844726798386\nv -0.008083895898474806 -1.0921252683249256 -0.5243409146431066\nv -0.07976516143635025 -1.276866970105867 -0.5252506365091272\nv -0.020060506382965703 -1.2334385749192633 -0.301325040448603\nv -0.07990779791476262 -1.3509036976740292 -0.341070036161337\nv -0.10169053410627815 -1.2068870189299477 -0.04876722079973187\nv -0.1519817903091755 -1.365510665871866 -0.15692439889429793\nv -0.2601279041091756 -1.1885795093023326 0.10988970110975217\nv -0.31729579292888604 -1.321268264156361 0.059441628673455316\nv -0.848568870055825 -0.9383248633714683 0.23982837834317694\nv -0.2841115740583825 -1.2078773490579697 -0.8036506322954367\nv -0.22231836409372388 -1.3705711792653117 -0.6258835168322516\nv -0.19808583052036852 -1.4522159317791117 -0.3886956275749503\nv -0.31271194883273773 -1.4812229673897357 -0.1662599441498861\nv -0.4468655428183257 -1.4081208865117936 0.030309816870830293\nv -0.3988207279452833 -0.9783603900495396 -0.8833077012801736\nv -0.4261847167822431 -1.2538563022802836 -0.832657802483938\nv -0.38091428944031497 -1.4323612424714172 -0.6713096485927353\nv -0.34392672880812863 -1.5296402016703727 -0.4359666117195356\nv -0.47121275738702567 -1.5427481346322585 -0.212699971365956\nv -0.5840335467653923 -1.4499471972736035 -0.01688965681846319\nv -0.5965324664537639 -1.2310376567603918 0.15439728723762638\nv -0.603970626930515 -0.9730496272867387 -0.9442929048887062\nv -0.6584407430024051 -1.2331761333320834 -0.8746205623410716\nv -0.709409821847784 -1.4659429722203778 -0.7154020228441985\nv -0.6644813362834862 -1.5771682475681057 -0.51042113309235\nv -0.7894059105187994 -1.5638233094298595 -0.3088200440614581\nv -0.8162833445262949 -1.4310813233699453 -0.05752847701987319\nv -0.8117676576018125 -1.234439602574674 0.13414076435148883\nv -0.25834762010828993 -0.6951673252373165 -0.7923673206368221\nv -0.06248973045542924 -0.7665910821077954 -0.6540399700991502\nv 0.07611239708492351 -0.9156476836861951 -0.20536770047473785\nv -0.031081271477573048 -0.8994758181564453 0.04312489218518984\nv -0.2509457867081838 -0.9602191023294494 0.1949888000417654\nv -0.5314775775236663 -0.9170871483914047 0.27604867586122167\nv -0.698201286366758 -0.8975001213210745 -0.9599982435061234\nv -0.8293665978692493 -1.11509528462743 -0.9146490325020323\nv -0.9619048200796854 -1.343162090335404 -0.7880316555337348\nv -1.0472124286277014 -1.4730438773829664 -0.5605464015223269\nv -1.060765551847539 -1.4641134058825243 -0.2855663528073091\nv -1.0004246660561544 -1.3283874042894974 -0.03361413042981279\nv -0.9104906458141931 -1.1662066485845088 0.1470252534214227\nv -0.9586855869711515 -0.6710831333901544 -0.9367557030770179\nv -1.2445793305522892 -0.817542042890274 -0.8973407152418248\nv -1.2659871743768685 -0.6801247466768301 -0.8490486738261083\nv -1.4417357951365137 -0.892844113645334 -0.7517043712681761\nv -1.476802737695221 -0.7360019859679737 -0.6685856347091148\nv -1.5639841715332439 -0.9191614582919794 -0.5287575689432107\nv -1.5681656901876435 -0.7927271011174322 -0.4991311239237613\nv -1.5326259636093063 -1.0039824068887115 -0.28969248502613\nv -1.5489494701267934 -0.8242411750516833 -0.3018251138498018\nv -1.407890071989428 -1.018040171212245 -0.06605615148067337\nv -1.4223317944946532 -0.8723090313725681 -0.05316658252587531\nv -1.1652203387672957 -0.9337169196632413 0.1334184078263284\nv -1.1255438855619244 -0.45287889159761474 -0.7915489789158711\nv -1.3279205175383988 -0.42378587112767446 -0.6057450114372587\nv -1.453237253290355 -0.5055549645946847 -0.40734951169873873\nv -1.4148957872068073 -0.5304237767693063 -0.16308494761654216\nv -1.289436358384456 -0.6584542134820716 0.049305709577394455\nv -0.8874951265560681 -0.8248028576559522 -0.9565338521560323\nv -1.1657720297488638 -0.9232322177159897 -0.9113461515493453\nv -1.3737606650637482 -1.05988953884744 -0.7658589961519274\nv -1.5010039128600727 -1.0931510893936602 -0.5582767873636508\nv -1.4601034487302784 -1.1654443984569987 -0.3270400944072667\nv -1.3300721765655639 -1.126145329626444 -0.07288783559541256\nv -1.094027683771837 -1.084366608811451 0.10682087754556222\nv -1.0875937948798378 -1.0722876078076398 -0.8950930575225976\nv -1.2487802398372811 -1.199621201720314 -0.770810356893762\nv -1.3871797127872325 -1.2453352818416719 -0.5725538075637561\nv -1.3336683013633743 -1.303381182432141 -0.33953009810380114\nv -1.2386603306792545 -1.2586899629846382 -0.12341526133552151\nv -0.847389582770811 -0.478492980249323 -0.871016832402294\nv -1.0629050406633582 -0.33601400374427853 -0.7258100434517166\nv -1.2190735055805353 -0.29624060404360103 -0.5635619964306117\nv -1.3517105212108151 -0.3476974272688013 -0.3492936473235696\nv -1.3091051787212946 -0.40781276676789235 -0.10339425594585269\nv -1.2168089660357586 -0.5274920225978963 0.06741335477163105\nv -1.0511503152740245 -0.7416804143259951 0.2049141271815988\nv -0.6820493320101108 -0.4073454070130155 -0.8362462682349809\nv -0.8480346738093036 -0.22394454471293013 -0.6859356370420204\nv -0.9382037144425833 -0.08920601913082365 -0.4560668167387506\nv -1.0896315173661946 -0.13537742027486113 -0.24763788309746104\nv -1.0177578267683933 -0.19112387317463178 7.070529650376467E-4\nv -1.0348062333853838 -0.41038161623017794 0.1399093358829532\nv -0.9396488481908281 -0.6321302849485207 0.24387425328076773\nv -0.09560436290090499 1.339214093370152 0.1477579579447047\nv -0.15273510877349308 1.2957419873888067 0.10995645328754174\nv -0.062050527956707575 1.3692309912304754 0.1955267069140381\nv -1.521773942288455E-4 1.3554620235219368 0.3227203242573578\nv -0.10349110756088271 1.3137976974225336 0.4178816230110331\nv -0.15085642703030017 1.2694959538207045 0.43225990586812474\nv -0.21433174824491863 1.2202115319934645 0.42359844208844455\nv -0.21917009134413754 1.249857125588988 0.0995416059368744\nv -0.28246419070242684 1.2050401515702542 0.11644643644430475\nv -0.3129756717999029 1.163166153030332 0.14503962345021287\nv -0.32664932338661334 1.1471685974256742 0.3296679490818033\nv -0.2751151389208091 1.178548147296377 0.38859847543695397\nv -0.07117824697642426 1.2833923335104869 0.10155506218543657\nv 0.01952628579214415 1.2268383174511577 0.08762970595474523\nv -0.0533728492267706 1.1780899339795514 0.041486476961526436\nv -0.12159853328026078 1.2160393526967515 0.06191305596390384\nv -0.03216112253813483 1.3372853305457484 0.16511543805230214\nv 0.0731556655610805 1.26540329490592 0.1618196085705\nv -0.018012120440415495 1.3646669050570877 0.22983374254345476\nv 0.10367094281488036 1.2843407275170273 0.25238198525389427\nv 0.13140177353855467 1.2478160316648583 0.32763802931035096\nv -0.056021811076326464 1.3299507664867958 0.39305267822379214\nv 0.07522175402077194 1.2507143399891454 0.3956619662984644\nv -0.08281234911568472 1.2703421796138938 0.4402240123229857\nv 0.01795293748424096 1.1977292385399962 0.4495759996401428\nv -0.140084567072329 1.1981313068931814 0.4549247925876616\nv -0.055730483438343095 1.134204503245634 0.4743453892047482\nv -0.195843423418774 1.1250804448063756 0.4395501060994016\nv -0.13648241697035543 1.0762988502857962 0.4642071929538253\nv -0.1320833582585817 1.118879626710536 0.03027101424435127\nv -0.17789451123739403 1.1419876741742214 0.052250123394135074\nv -0.20244412759751665 1.062628011979282 0.0508408807532532\nv -0.23210941728461448 1.0796495973528117 0.07190570714367979\nv -0.26030340316362355 1.0179148935053772 0.10527188614157675\nv -0.29525684897940946 0.9675080117623716 0.1792173306975986\nv -0.28826541284389207 0.9677050604055095 0.2798794723956473\nv -0.2632513574265279 0.9931303693008816 0.3514136070432927\nv -0.28646037093541493 1.0185581755171358 0.3282172719023405\nv -0.2086964110925687 1.0259454248881235 0.4189416705014296\nv -0.2467883757867712 1.0595447508107605 0.3933816015630798\nv 0.17872313693801953 1.025246834722123 0.04349401870518004\nv 0.06748632295477272 1.0328368970330073 -0.0012005056093327012\nv 0.2561423061057405 1.0136281055295011 0.10835507124081907\nv 0.300950261734067 0.9431608110206416 0.28643187767591677\nv 0.18936841832020435 0.9319869673270735 0.44817741477373196\nv 0.09325438236168647 0.9204810011470623 0.4786885904815903\nv -0.026875929876898914 0.9171992918687374 0.4788032161574475\nv -0.050991484084989845 1.030898509265369 -0.008079474184983611\nv -0.16209114356370188 1.0159498925407309 0.024676756222088137\nv -0.229159459612385 0.9354422138631637 0.36859933084343927\nv -0.1391731970008425 0.9234519262530181 0.44119603386135564\nv 0.17861510065239114 0.9029942588889944 -0.005193118717157615\nv 0.20885071989207965 0.5755957905566027 -0.07667087792795438\nv 0.07966628487324764 0.8444141445957631 -0.05571698567292751\nv 0.10836530729913466 0.5997704001367645 -0.10999773301638337\nv 0.267798986856911 0.9395661466021183 0.07867890346497927\nv 0.2937291293341934 0.962459454773473 0.17552656684668122\nv 0.3397881281649465 0.4568368997780585 0.1767550046536417\nv 0.25272039926472245 0.9123418286838364 0.3839045766826548\nv 0.1960131812497361 0.8515960540706153 0.4438518114132365\nv 0.08617665401052353 0.7897714182096348 0.4648540365288201\nv 0.11695626676834338 0.46301165363215435 0.39082411170929\nv -0.018812474436488397 0.7237549378258146 0.44527487016595946\nv 0.009515024453930019 0.47867577559453145 0.3928715296525722\nv -0.012905137512460198 0.6217365064396034 -0.10774026933953917\nv -0.020542415672755155 0.7766143499424125 -0.07025333721081264\nv -0.11420333688264363 0.6301372081172665 -0.072320114787061\nv -0.12027343756275882 0.7162053532704167 -0.04479408000218762\nv -0.19469603733957327 0.6638012353563264 0.0019509816624666348\nv -0.24865269735816442 0.5979937949414752 0.09451062907589113\nv -0.23773508294912143 0.6112776440191625 0.21892825264540403\nv -0.18634370550533172 0.5413926271476547 0.2949493622643064\nv -0.1895051304036615 0.6312093666452024 0.3081881168248471\nv -0.10427297470446559 0.5097569398714669 0.35705778790619097\nv -0.11098916529176285 0.6655311694160618 0.39159830628358067\nv 0.1876342069811111 0.5033061437989215 -0.10483268880194742\nv 0.09809358624263935 0.17576055344835947 -0.22660111284413842\nv 9.980600042878598E-4 0.2776940657404102 -0.23833721224985494\nv 0.06202604473373216 0.5143367290533036 -0.14430238389579206\nv 0.2601771625596767 0.5132495618693441 -0.0419826119632792\nv 0.2267034323045877 -0.07934967297543495 0.02556359016082569\nv 0.18248639872254088 0.4180673661872462 0.35325990274594876\nv 0.09338059505857496 0.38783248945634874 0.3746744992397327\nv -0.005211606777756715 0.04917999260227923 0.2990491470058861\nv -0.03849106672839849 0.39120902770935095 0.367016939925659\nv -0.10848056289935136 0.1435512953626317 0.31865722665290575\nv -0.0932417226328324 0.3598705333665368 -0.2074025730478351\nv -0.06719701000163651 0.5066450508624447 -0.1397429150410627\nv -0.1804473794799147 0.41746664230742225 -0.1415871127280521\nv -0.16404691441086264 0.5008696549815044 -0.09943713866384862\nv -0.24991610243976733 0.46142536820852903 -0.04084433768174924\nv -0.28761411639861034 0.44737779602280475 0.051054453447751835\nv -0.28675863948263974 0.416295470137208 0.14635962931629456\nv -0.254500590852495 0.32669003381612766 0.23531552878884276\nv -0.231372001824006 0.41834268077179726 0.24280756749780402\nv -0.19207899925896893 0.23874733244600602 0.29550374929060313\nv -0.15628752178315608 0.3974920744082751 0.31353339526127444\nv -0.018720751877417497 0.062427271517513046 -0.3423575873860938\nv -0.05158961781091372 -0.2563933968214236 -0.49800580550559054\nv -0.20088495830404476 -0.13126411196599852 -0.5453441726394352\nv -0.18340769457458989 0.09825169285259472 -0.3943097123183823\nv 0.12115365957039037 0.014420223788874923 -0.24037782041932212\nv 0.056559451013174264 -0.36062459822625886 -0.40692266576968744\nv 0.12212578753997294 -0.6050598321387264 -0.12437295900412774\nv 0.025258295975196174 -0.10322945063945176 0.24768994532951785\nv -0.06640266552744624 -0.5010310085837314 0.19723160290838115\nv -0.145384934862913 -0.09303562620026448 0.3026990669448157\nv -0.2080530513736607 -0.4402766255051616 0.27854398626511434\nv -0.3201688747286834 -0.069472750700044 0.3021999728028007\nv -0.3764229875624985 -0.3372841738879878 0.3196175137825808\nv -0.37103840912195013 -0.018343714126245417 -0.5181695682676257\nv -0.3624876398424141 0.11792333476126983 -0.3885156944272048\nv -0.5369907859125455 0.05987335312325521 -0.420070558870981\nv -0.49722492713673616 0.13410703737954682 -0.3286188877172944\nv -0.6294317441594179 0.11556113739693963 -0.26391312063853545\nv -0.74173498336992 0.08053780182128528 -0.12522747001774567\nv -0.6901485280221654 0.042138462724677694 0.04298647182897286\nv -0.6583061345706847 -0.08271666421665431 0.17909368084528765\nv -0.5930778951386746 0.01940614282887867 0.15083850228675535\nv -0.5336280893809849 -0.20845754472929892 0.2850729045500069\nv -0.4863419744110133 -0.033084460741767234 0.24177778209818324\nv -0.16421418750489497 -0.3009066302678531 -0.613469962903272\nv -0.19121648139938338 -0.49736348828867183 -0.7024015487555098\nv -0.3804429066794447 -0.3517580490090136 -0.7461890303461363\nv -0.36911610223035285 -0.19924428750907905 -0.6606716953472738\nv 0.00764144937164241 -0.41591976904898176 -0.48949143091766145\nv -0.00703132676232705 -0.639152352439578 -0.5705632382430396\nv 0.11082364953963271 -0.46984782407830805 -0.3169906454178008\nv 0.07681783005303255 -0.7589168860036708 -0.4146953894835867\nv 0.023932473668473467 -0.5670301759646578 0.09632170271937375\nv -0.139698107729481 -0.5845442431079642 0.224328828951515\nv -0.12909344686888494 -0.82452130403786 0.17197986976368612\nv -0.35629678802794823 -0.5164555824199508 0.3146739763415395\nv -0.3207143923909673 -0.7555247084101276 0.27546974969494803\nv -0.5751666842740498 -0.42980212239695187 0.3247894461401142\nv -0.5608819388605969 -0.6300128226097699 0.3256888806317336\nv -0.6119993988065029 -0.2039436789589 -0.7058985888062624\nv -0.5690995198999165 -0.12062867425850417 -0.6367858256444157\nv -0.7745480379862542 -0.08299685419757988 -0.5533065828441973\nv -0.9059965161698623 -0.27579432003345206 0.1565710587409764\nv -0.7733491979650087 -0.48524750438686576 0.2900036375382926\nv -0.7448096323038795 -0.3254807309936029 0.26563969024312495\nv -0.1292811121767781 0.24541226127424362 -0.27813642684707096\nv -0.012722182411993922 0.17872354694047157 -0.2856442543998048\nv -0.2428141364892664 0.29395739556129535 -0.22349063319337525\nv -0.3411247577494312 0.31901208295467953 -0.12724776419557868\nv -0.3992091957752286 0.31073037338569687 -0.0036776738917693227\nv -0.39029961638808786 0.25895363915674446 0.12264318016053902\nv -0.3311242920511251 0.18560722865550605 0.22621753264795585\nv -0.24091339429176825 0.1083564943253534 0.2905482642422535\nv -0.12951005521262673 0.03536832888417705 0.30925230551932015\nv 0.09116388438362256 0.10905454185092361 -0.24903014897171805\nv 0.16893286792711723 0.09534659783694158 -0.17487528542655814\nv 0.08621995597156243 -0.006153152546389401 0.24651124997927\nv -0.013839682800429801 -0.01976756022956282 0.2857709647911246\nv -0.14224466965791016 1.3831523327333446 0.30144101500423315\nv -0.13605604833821014 1.393857595270661 0.2766140427570333\nv -0.13002715466520928 1.3934280277792825 0.2520685743777088\nv -0.12423922657418207 1.388769918728889 0.23066988277566788\nv -0.19518443866089988 1.3928509577654855 0.20378772481501994\nv -0.24148774025737788 1.3945399882729024 0.23016096348757714\nv -0.25791021093344335 1.4037411161856639 0.24787129664381718\nv -0.2620654518979459 1.3957442061286076 0.284527879789462\nv -0.20139872286954744 1.389485467634939 0.32349211851139514\nv -0.1488091510125688 1.3781207203872883 0.3200274224926117\nv -0.13158193764344558 1.4250679750579258 0.2807314628260412\nv -0.11595643515633988 1.4245682404098425 0.22163997660384924\nv -0.20627424326148192 1.4124911965266467 0.18741680061016427\nv -0.26445442393150115 1.400769211913228 0.22122294388061534\nv -0.2872685557740087 1.406883382542881 0.2444293361608223\nv -0.2899360821624794 1.3935839799698049 0.29084828102857163\nv -0.21178559249014803 1.3994915112001476 0.34039022323541024\nv -0.1429001429580068 1.3993976870289333 0.3353182110462305\nv -0.2857648326576529 1.5187468359348737 0.3082338172397895\nv -0.27727616014547757 1.530338168645061 0.2625549569640586\nv -0.3334604957630521 1.4880341091190048 0.23308840213734724\nv -0.36604087340725666 1.453055527215242 0.25713264595649266\nv -0.3828999421792846 1.4454714177478138 0.2753297576919234\nv -0.37751818239371726 1.4313472154601539 0.31006947817311087\nv -0.32631523474701046 1.4631317857783432 0.35061576401157374\nv -0.2807143588260308 1.4921408310497963 0.34796225284311\nv -0.359718447897886 1.5667423492396997 0.3249332982344497\nv -0.35604269069748223 1.5843518466712045 0.27844553809784006\nv -0.3980451782163092 1.5262919573931168 0.24430381106553892\nv -0.4181656377402749 1.4792909565111614 0.2664080870596363\nv -0.43194785784379036 1.4648905070555227 0.2846242013341748\nv -0.42130540631457 1.4501970581589543 0.31964088446057193\nv -0.3805277869148768 1.4954324349453687 0.3644531272029499\nv -0.34517821394105 1.5392865146237846 0.36417365388479916\nv -0.525253166509216 1.5797756350730938 0.3618339573500447\nv -0.5427781715907363 1.600035553232815 0.32113583567835097\nv -0.5227646170883478 1.5418236240694803 0.27390553690397157\nv -0.4933105257778895 1.4972331194307962 0.2843137977922944\nv -0.48710328833367594 1.4754098821989285 0.2977991260001166\nv -0.46547571828721857 1.4702527709605107 0.3292892793473014\nv -0.474604834039762 1.518936744884534 0.3841417968234773\nv -0.4907531253963674 1.570392934863122 0.3952265040148293\nv -0.6190130970388793 1.5696558595459142 0.38003232814495125\nv -0.6355019539055907 1.585899126949611 0.3462181836390502\nv -0.6139504237029327 1.5398059391590697 0.3053658122107581\nv -0.5784210799208646 1.4868135510777596 0.32414429004118506\nv -0.5598034658588011 1.483728452273698 0.350505735413888\nv -0.5714200313571158 1.5226275895992984 0.3975745784787094\nv -0.5892615137516267 1.5640904735931778 0.40790221218885614\nv -0.7207897200255293 1.5567789987446936 0.40116346301661054\nv -0.7290467383099924 1.5726640148199242 0.3702920060376821\nv -0.7270750137803762 1.525483825821082 0.33867446181335653\nv -0.71560668386606 1.4727027815509461 0.3595899705139178\nv -0.7013827394050692 1.4661328607881354 0.38307846161479897\nv -0.6976434083183529 1.504754391368148 0.4208247199303316\nv -0.6983812574358621 1.5446905536547915 0.42637673695906997\nv -0.9070526524958897 1.4960808856355494 0.4172580276830761\nv -0.8863039803791803 1.474513559264521 0.3901551190206042\nv -0.8554404727488869 1.4489886081267185 0.39960983011290785\nv -0.8436098200111913 1.4494922096871927 0.415802278250204\nv -0.875124048994981 1.4891447909953186 0.4545401079578815\nv -0.9884730850864034 1.4369108601544263 0.4354713488045925\nv -1.0097509656761623 1.402303016901423 0.41539549299271056\nv -1.0261663143967716 1.3653907886614334 0.43778258638601936\nv -1.0193881127383304 1.3571557442500386 0.4576102108491951\nv -0.9801045292318034 1.4108781558731749 0.4839256718868889\nv -1.0646015617123321 1.3754696203441494 0.4676547749135673\nf 1 2 3\nf 4 5 3\nf 4 3 2\nf 9 10 7\nf 10 8 7\nf 11 12 9\nf 12 10 9\nf 12 11 13\nf 1 3 14\nf 10 16 15\nf 10 15 8\nf 12 17 16\nf 12 16 10\nf 17 12 13\nf 21 22 20\nf 21 20 19\nf 23 24 22\nf 23 22 21\nf 25 26 23\nf 26 24 23\nf 27 28 25\nf 28 26 25\nf 22 31 20\nf 31 30 20\nf 24 32 22\nf 32 31 22\nf 26 33 32\nf 26 32 24\nf 28 34 33\nf 28 33 26\nf 31 37 30\nf 37 36 30\nf 32 38 31\nf 38 37 31\nf 33 39 38\nf 33 38 32\nf 34 40 39\nf 34 39 33\nf 18 35 42\nf 36 43 35\nf 43 42 35\nf 37 44 36\nf 44 43 36\nf 38 45 37\nf 45 44 37\nf 39 46 45\nf 39 45 38\nf 40 47 46\nf 40 46 39\nf 41 48 47\nf 41 47 40\nf 48 41 29\nf 51 23 21\nf 52 25 51\nf 25 23 51\nf 53 27 52\nf 27 25 52\nf 18 42 55\nf 43 56 42\nf 56 55 42\nf 44 57 43\nf 57 56 43\nf 45 58 44\nf 58 57 44\nf 46 59 58\nf 46 58 45\nf 47 60 59\nf 47 59 46\nf 48 61 60\nf 48 60 47\nf 61 48 29\nf 63 64 62\nf 65 66 64\nf 65 64 63\nf 67 68 66\nf 67 66 65\nf 69 70 67\nf 70 68 67\nf 71 72 69\nf 72 70 69\nf 73 72 71\nf 64 74 62\nf 66 75 64\nf 75 74 64\nf 68 76 66\nf 76 75 66\nf 70 77 76\nf 70 76 68\nf 72 78 77\nf 72 77 70\nf 73 78 72\nf 81 65 63\nf 81 63 80\nf 82 67 65\nf 82 65 81\nf 83 69 82\nf 69 67 82\nf 84 71 83\nf 71 69 83\nf 86 80 79\nf 87 81 80\nf 87 80 86\nf 88 82 81\nf 88 81 87\nf 89 83 88\nf 83 82 88\nf 90 84 89\nf 84 83 89\nf 85 84 90\nf 57 87 86\nf 57 86 56\nf 58 88 87\nf 58 87 57\nf 59 89 58\nf 89 88 58\nf 60 90 59\nf 90 89 59\nf 75 93 74\nf 93 92 74\nf 76 94 75\nf 94 93 75\nf 77 95 94\nf 77 94 76\nf 78 96 95\nf 78 95 77\nf 18 91 98\nf 92 99 91\nf 99 98 91\nf 93 100 92\nf 100 99 92\nf 94 101 93\nf 101 100 93\nf 95 102 101\nf 95 101 94\nf 96 103 102\nf 96 102 95\nf 97 104 103\nf 97 103 96\nf 104 97 29\nf 14 105 106\nf 14 106 1\nf 16 109 15\nf 17 110 16\nf 110 109 16\nf 13 111 17\nf 111 110 17\nf 112 2 1\nf 112 1 106\nf 113 4 2\nf 113 2 112\nf 114 4 113\nf 116 11 115\nf 11 9 115\nf 111 13 116\nf 13 11 116\nf 117 118 119\nf 117 119 120\nf 121 122 118\nf 121 118 117\nf 123 124 122\nf 123 122 121\nf 108 125 124\nf 108 124 123\nf 126 127 108\nf 127 125 108\nf 128 129 126\nf 129 127 126\nf 130 131 128\nf 131 129 128\nf 132 133 130\nf 133 131 130\nf 134 135 120\nf 134 120 119\nf 136 137 135\nf 136 135 134\nf 143 144 141\nf 144 142 141\nf 133 132 143\nf 132 144 143\nf 118 145 146\nf 118 146 119\nf 122 147 145\nf 122 145 118\nf 124 147 122\nf 129 149 127\nf 131 150 129\nf 150 149 129\nf 133 151 131\nf 151 150 131\nf 152 134 119\nf 152 119 146\nf 153 136 134\nf 153 134 152\nf 155 143 154\nf 143 141 154\nf 151 133 155\nf 133 143 155\nf 156 157 158\nf 157 159 158\nf 148 162 161\nf 163 162 148\nf 167 168 166\nf 167 166 165\nf 169 170 159\nf 170 158 159\nf 171 172 169\nf 172 170 169\nf 173 172 171\nf 176 177 175\nf 178 179 177\nf 178 177 176\nf 168 167 179\nf 168 179 178\nf 180 181 182\nf 180 182 183\nf 184 181 180\nf 187 188 186\nf 189 190 187\nf 190 188 187\nf 191 192 183\nf 191 183 182\nf 193 194 192\nf 193 192 191\nf 200 201 198\nf 201 199 198\nf 190 189 200\nf 189 201 200\nf 202 203 204\nf 202 204 205\nf 206 207 203\nf 206 203 202\nf 211 212 209\nf 212 210 209\nf 213 214 211\nf 214 212 211\nf 215 216 205\nf 215 205 204\nf 217 218 216\nf 217 216 215\nf 224 225 222\nf 225 223 222\nf 214 213 224\nf 213 225 224\nf 226 227 228\nf 226 228 229\nf 230 231 227\nf 230 227 226\nf 232 233 231\nf 232 231 230\nf 208 51 233\nf 208 233 232\nf 235 236 234\nf 237 238 235\nf 238 236 235\nf 239 240 237\nf 240 238 237\nf 241 242 229\nf 241 229 228\nf 240 239 245\nf 239 246 245\nf 242 215 229\nf 215 204 229\nf 243 217 242\nf 217 215 242\nf 246 224 222\nf 246 222 244\nf 239 214 224\nf 239 224 246\nf 203 226 204\nf 226 229 204\nf 207 230 203\nf 230 226 203\nf 232 230 207\nf 210 235 234\nf 212 237 235\nf 212 235 210\nf 214 239 237\nf 214 237 212\nf 216 247 205\nf 247 248 205\nf 218 249 216\nf 249 247 216\nf 219 250 218\nf 250 249 218\nf 220 251 219\nf 251 250 219\nf 221 252 251\nf 221 251 220\nf 223 253 252\nf 223 252 221\nf 225 254 253\nf 225 253 223\nf 213 255 254\nf 213 254 225\nf 256 202 248\nf 202 205 248\nf 257 206 256\nf 206 202 256\nf 259 211 209\nf 259 209 258\nf 255 213 211\nf 255 211 259\nf 247 191 182\nf 247 182 248\nf 249 193 191\nf 249 191 247\nf 250 193 249\nf 253 198 252\nf 254 200 253\nf 200 198 253\nf 255 190 254\nf 190 200 254\nf 181 256 248\nf 181 248 182\nf 190 255 188\nf 255 259 188\nf 192 169 183\nf 169 159 183\nf 194 171 192\nf 171 169 192\nf 196 174 195\nf 197 174 196\nf 201 178 176\nf 201 176 199\nf 189 168 178\nf 189 178 201\nf 157 180 159\nf 180 183 159\nf 184 180 157\nf 166 187 186\nf 168 189 187\nf 168 187 166\nf 170 152 158\nf 152 146 158\nf 172 153 170\nf 153 152 170\nf 174 139 173\nf 175 139 174\nf 179 155 154\nf 179 154 177\nf 167 151 155\nf 167 155 179\nf 145 156 146\nf 156 158 146\nf 147 160 145\nf 160 156 145\nf 161 160 147\nf 149 164 163\nf 150 165 164\nf 150 164 149\nf 151 167 165\nf 151 165 150\nf 135 112 120\nf 112 106 120\nf 137 113 135\nf 113 112 135\nf 138 114 137\nf 114 113 137\nf 144 116 115\nf 144 115 142\nf 132 111 116\nf 132 116 144\nf 105 117 106\nf 117 120 106\nf 107 121 105\nf 121 117 105\nf 123 121 107\nf 109 128 126\nf 110 130 128\nf 110 128 109\nf 111 132 130\nf 111 130 110\nf 29 240 245\nf 29 245 104\nf 241 98 99\nf 228 18 98\nf 228 98 241\nf 236 53 52\nf 238 54 53\nf 238 53 236\nf 240 29 54\nf 240 54 238\nf 50 231 233\nf 49 227 231\nf 49 231 50\nf 18 228 227\nf 18 227 49\nf 8 6 7\nf 7 6 5\nf 114 7 4\nf 7 114 138\nf 139 7 138\nf 140 7 139\nf 7 5 4\nf 18 49 35\nf 20 30 35\nf 30 36 35\nf 19 20 35\nf 50 19 35\nf 50 35 49\nf 41 34 28\nf 41 40 34\nf 41 54 29\nf 41 27 53\nf 41 28 27\nf 54 41 53\nf 18 79 62\nf 80 63 62\nf 80 62 79\nf 73 71 84\nf 73 85 29\nf 85 73 84\nf 18 55 79\nf 56 86 79\nf 56 79 55\nf 85 90 60\nf 85 61 29\nf 61 85 60\nf 18 62 91\nf 74 91 62\nf 74 92 91\nf 73 97 78\nf 97 73 29\nf 97 96 78\nf 115 9 7\nf 142 115 7\nf 142 7 140\nf 138 137 136\nf 141 142 140\nf 173 171 194\nf 174 173 195\nf 195 173 194\nf 197 175 174\nf 199 176 175\nf 199 175 197\nf 195 194 193\nf 250 195 193\nf 251 196 195\nf 251 195 250\nf 197 196 251\nf 198 199 197\nf 198 197 252\nf 252 197 251\nf 219 218 217\nf 219 217 243\nf 222 223 221\nf 244 222 221\nf 243 242 241\nf 241 99 243\nf 243 99 100\nf 245 246 244\nf 104 245 244\nf 104 244 103\nf 185 208 232\nf 234 208 185\nf 184 257 181\nf 257 256 181\nf 188 258 186\nf 188 259 258\nf 160 184 156\nf 184 157 156\nf 165 186 164\nf 165 166 186\nf 124 161 147\nf 125 161 124\nf 125 148 161\nf 127 163 125\nf 149 163 127\nf 163 148 125\nf 109 126 15\nf 234 52 208\nf 236 52 234\nf 52 51 208\nf 233 21 19\nf 51 21 233\nf 233 19 50\nf 138 136 153\nf 138 153 172\nf 139 138 173\nf 173 138 172\nf 175 140 139\nf 154 141 140\nf 177 154 140\nf 177 140 175\nf 100 219 243\nf 101 220 100\nf 220 219 100\nf 102 220 101\nf 103 244 102\nf 244 221 102\nf 102 221 220\nf 269 260 277\nf 270 277 260\nf 260 261 270\nf 261 262 270\nf 271 270 262\nf 262 263 271\nf 263 264 271\nf 272 271 264\nf 264 265 272\nf 273 272 265\nf 265 266 273\nf 274 273 266\nf 266 267 274\nf 275 274 267\nf 276 275 267\nf 267 268 276\nf 268 269 276\nf 277 276 269\nf 277 270 285\nf 278 285 270\nf 270 271 279\nf 279 278 270\nf 271 272 279\nf 280 279 272\nf 272 273 280\nf 281 280 273\nf 273 274 281\nf 282 281 274\nf 274 275 282\nf 283 282 275\nf 275 276 284\nf 284 283 275\nf 276 277 285\nf 285 284 276\nf 285 278 293\nf 286 293 278\nf 278 279 287\nf 287 286 278\nf 279 280 287\nf 288 287 280\nf 280 281 288\nf 289 288 281\nf 281 282 289\nf 290 289 282\nf 282 283 291\nf 291 290 282\nf 283 284 292\nf 292 291 283\nf 284 285 293\nf 293 292 284\nf 293 286 301\nf 294 301 286\nf 286 287 295\nf 295 294 286\nf 287 288 296\nf 296 295 287\nf 288 289 297\nf 297 296 288\nf 289 290 297\nf 298 297 290\nf 290 291 299\nf 299 298 290\nf 291 292 299\nf 300 299 292\nf 292 293 300\nf 301 300 293\nf 301 294 308\nf 302 308 294\nf 294 295 302\nf 303 302 295\nf 295 296 304\nf 304 303 295\nf 297 298 305\nf 298 299 306\nf 306 305 298\nf 299 300 306\nf 307 306 300\nf 300 301 307\nf 308 307 301\nf 308 302 315\nf 309 315 302\nf 302 303 309\nf 310 309 303\nf 303 304 311\nf 311 310 303\nf 305 306 313\nf 313 312 305\nf 306 307 313\nf 314 313 307\nf 307 308 314\nf 315 314 308\nf 315 309 320\nf 309 310 316\nf 310 311 317\nf 317 316 310\nf 312 313 319\nf 319 318 312\nf 313 314 319\nf 316 317 321\nf 322 321 317\nf 318 319 324\nf 324 323 318\nf 321 322 326\nf 323 324 326\nf 108 261 260\nf 260 126 108\nf 123 262 261\nf 261 108 123\nf 123 107 263\nf 262 123 263\nf 5 6 266\nf 265 5 266\nf 6 8 267\nf 266 6 267\nf 15 268 267\nf 267 8 15\nf 268 15 269\nf 126 260 269\nf 15 126 269\nf 185 206 257\nf 185 207 206\nf 185 232 207\nf 162 257 184\nf 162 184 160\nf 162 185 257\nf 161 162 160\nf 186 258 162\nf 164 186 162\nf 164 162 163\nf 258 185 162\nf 258 209 185\nf 210 234 185\nf 209 210 185\nf 5 264 3\nf 264 5 265\nf 264 14 3\nf 264 105 14\nf 264 107 105\nf 263 107 264\nf 296 297 305\nf 305 304 296\nf 304 305 312\nf 312 311 304\nf 316 320 309\nf 320 316 321\nf 311 312 317\nf 318 317 312\nf 320 319 314\nf 314 315 320\nf 321 325 320\nf 325 321 326\nf 323 322 317\nf 322 323 326\nf 317 318 323\nf 319 320 325\nf 325 324 319\nf 324 325 326\n#sl -0.2994557099206982 1.3807141495295285 0.1964113386009258 -0.302547238464886 1.373735680583609 0.19611437077175256 1\n#sl -0.302547238464886 1.373735680583609 0.19611437077175256 -0.3179173731405764 1.2880726694675424 0.22109901809873245 393\n#sl -0.3179173731405764 1.2880726694675424 0.22109901809873245 -0.33269387363748953 1.3173571057934743 0.24046038340901854 388\n#sl -0.33269387363748953 1.3173571057934743 0.24046038340901854 -0.33188433558688585 1.3297490374664154 0.28937428962385114 387\n#se 259 260 260 261 261 262 262 263 263 264 264 265 265 266 266 267 267 268 268 259\n"
  },
  {
    "path": "test/bgratutorial3d/obj/helice.obj",
    "content": "v 14.8 0 0.8\nv 14.5 0 1.1\nv 14.5 0 10.6\nv 15.5 0 0.1\nv 16.8 0 -1\nv 18.5 0 -2.5\nv 20.7 0 -4.2\nv 23.4 0.1 -6.2\nv 26.5 0.2 -8.3\nv 30 0.4 -10.5\nv 33.8 0.7 -12.8\nv 37.9 1.2 -15.1\nv 42.3 1.8 -17.2\nv 47 2.8 -19.3\nv 51.8 4 -21.2\nv 56.6 5.6 -22.8\nv 61.5 7.5 -24.2\nv 66.3 10 -25.3\nv 71 12.9 -26.1\nv 75.4 16.3 -26.5\nv 79.5 20.3 -26.6\nv 83.1 24.8 -26.3\nv 86.2 29.7 -25.6\nv 88.7 35.2 -24.6\nv 90.4 41 -23.2\nv 91.3 47.1 -21.5\nv 91.4 53.3 -19.4\nv 90.5 59.7 -17.1\nv 88.7 66 -14.5\nv 86.1 72 -11.6\nv 82.5 77.7 -8.6\nv 78.1 82.9 -5.5\nv 73 87.5 -2.2\nv 67.3 91.4 1.1\nv 61.1 94.4 4.3\nv 54.6 96.5 7.6\nv 47.8 97.7 10.7\nv 41.1 98 13.7\nv 34.5 97.3 16.6\nv 28.2 95.7 19.2\nv 22.3 93.2 21.5\nv 16.9 90 23.6\nv 12.1 86.2 25.3\nv 7.9 81.8 26.7\nv 4.4 77 27.7\nv 1.7 71.8 28.4\nv -0.4 66.4 28.7\nv -1.8 60.9 28.6\nv -2.5 55.4 28.2\nv -2.7 49.9 27.4\nv -2.4 44.5 26.3\nv -1.7 39.2 24.9\nv -0.7 34.2 23.3\nv 0.7 29.5 21.4\nv 2.2 25 19.4\nv 3.8 20.9 17.2\nv 5.5 17.1 14.9\nv 7.1 13.6 12.6\nv 8.7 10.5 10.4\nv 10.2 7.8 8.3\nv 11.4 5.4 6.3\nv 12.5 3.5 4.6\nv 13.4 2 3.1\nv 14 0.9 2\nv 14.4 0.2 1.3\nv 16.9 0 -0.2\nv 16.6 0 0\nv 17.6 0 -1\nv 18.9 0 -2.1\nv 20.6 0 -3.5\nv 22.9 0.1 -5.3\nv 25.5 0.1 -7.2\nv 28.6 0.2 -9.4\nv 32.1 0.5 -11.6\nv 35.9 0.8 -13.9\nv 40 1.3 -16.1\nv 44.5 2 -18.3\nv 49.1 2.9 -20.4\nv 53.9 4.2 -22.2\nv 58.7 5.8 -23.9\nv 63.6 7.9 -25.3\nv 68.4 10.4 -26.4\nv 73.1 13.4 -27.2\nv 77.5 16.9 -27.6\nv 81.5 20.9 -27.7\nv 85.1 25.5 -27.4\nv 88.2 30.6 -26.7\nv 90.6 36.1 -25.6\nv 92.3 42 -24.3\nv 93.1 48.2 -22.5\nv 93.1 54.5 -20.5\nv 92.2 61 -18.1\nv 90.3 67.4 -15.5\nv 87.5 73.5 -12.7\nv 83.9 79.3 -9.7\nv 79.4 84.6 -6.5\nv 74.2 89.3 -3.3\nv 68.3 93.2 0\nv 62 96.3 3.3\nv 55.4 98.5 6.5\nv 48.5 99.7 9.7\nv 41.7 100 12.7\nv 34.9 99.3 15.5\nv 28.5 97.8 18.1\nv 22.5 95.3 20.5\nv 16.9 92.2 22.5\nv 12 88.3 24.3\nv 7.7 83.9 25.6\nv 4.2 79.1 26.7\nv 1.3 73.9 27.4\nv -0.9 68.5 27.7\nv -2.3 63 27.6\nv -3.2 57.4 27.2\nv -3.4 51.9 26.4\nv -3.2 46.4 25.3\nv -2.5 41.2 23.9\nv -1.5 36.2 22.2\nv -0.2 31.4 20.4\nv 1.3 26.9 18.3\nv 2.9 22.7 16.1\nv 4.5 18.9 13.9\nv 6.1 15.4 11.6\nv 7.7 12.3 9.4\nv 9.1 9.6 7.2\nv 10.4 7.3 5.3\nv 11.5 5.3 3.5\nv 12.3 3.8 2.1\nv 13 2.7 1\nv 13.3 2 0.2\nv 13.5 1.8 0\nv 14.5 0 -1.1\nv 14.8 0 -1.3\nv 15.5 0 -2\nv 16.8 0 -3.1\nv 18.5 0 -4.6\nv 20.7 0 -6.3\nv 23.4 0.1 -8.3\nv 26.5 0.2 -10.4\nv 30 0.4 -12.6\nv 33.8 0.7 -14.9\nv 37.9 1.2 -17.2\nv 42.3 1.8 -19.4\nv 47 2.8 -21.4\nv 51.8 4 -23.3\nv 56.6 5.6 -24.9\nv 61.5 7.5 -26.3\nv 66.3 10 -27.4\nv 71 12.9 -28.2\nv 75.4 16.3 -28.6\nv 79.5 20.3 -28.7\nv 83.1 24.8 -28.4\nv 86.2 29.7 -27.7\nv 88.7 35.2 -26.7\nv 90.4 41 -25.3\nv 91.3 47.1 -23.6\nv 91.4 53.3 -21.5\nv 90.5 59.7 -19.2\nv 88.7 66 -16.6\nv 86.1 72 -13.7\nv 82.5 77.7 -10.7\nv 78.1 82.9 -7.6\nv 73 87.5 -4.3\nv 67.3 91.4 -1.1\nv 61.1 94.4 2.2\nv 54.6 96.5 5.5\nv 47.8 97.7 8.6\nv 41.1 98 11.6\nv 34.5 97.3 14.5\nv 28.2 95.7 17.1\nv 22.3 93.2 19.4\nv 16.9 90 21.5\nv 12.1 86.2 23.2\nv 7.9 81.8 24.6\nv 4.4 77 25.6\nv 1.7 71.8 26.3\nv -0.4 66.4 26.6\nv -1.8 60.9 26.5\nv -2.5 55.4 26.1\nv -2.7 49.9 25.3\nv -2.4 44.5 24.2\nv -1.7 39.2 22.8\nv -0.7 34.2 21.2\nv 0.7 29.5 19.3\nv 2.2 25 17.2\nv 3.8 20.9 15.1\nv 5.5 17.1 12.8\nv 7.1 13.6 10.5\nv 8.7 10.5 8.3\nv 10.2 7.8 6.2\nv 11.4 5.4 4.2\nv 12.5 3.5 2.5\nv 13.4 2 1\nv 14 0.9 -0.1\nv 14.4 0.2 -0.8\nv 14.5 0 -10.6\nv 14.4 0.2 0.8\nv 14 0.9 0.1\nv 13.4 2 -1\nv 12.5 3.5 -2.5\nv 11.4 5.4 -4.2\nv 10 7.7 -6.2\nv 8.3 10.3 -8.3\nv 6.4 13.2 -10.5\nv 4.3 16.3 -12.8\nv 1.8 19.7 -15.1\nv -1 23.2 -17.2\nv -4.1 26.7 -19.3\nv -7.5 30.3 -21.2\nv -11.3 33.7 -22.8\nv -15.5 36.9 -24.2\nv -20 39.9 -25.3\nv -24.9 42.5 -26.1\nv -30.1 44.6 -26.5\nv -35.6 46.1 -26.6\nv -41.3 47 -26.3\nv -47.1 47.2 -25.6\nv -53 46.6 -24.6\nv -58.9 45.2 -23.2\nv -64.6 43 -21.5\nv -70.1 39.9 -19.4\nv -75.2 36 -17.1\nv -79.7 31.3 -14.5\nv -83.6 25.9 -11.6\nv -86.8 20 -8.6\nv -89.1 13.6 -5.5\nv -90.5 6.9 -2.2\nv -91 0 1.1\nv -90.5 -6.9 4.3\nv -89.1 -13.6 7.6\nv -86.8 -20 10.7\nv -83.6 -25.9 13.7\nv -79.7 -31.3 16.6\nv -75.2 -36 19.2\nv -70.1 -39.9 21.5\nv -64.6 -43 23.6\nv -58.9 -45.2 25.3\nv -53 -46.6 26.7\nv -47.1 -47.2 27.7\nv -41.3 -47 28.4\nv -35.6 -46.1 28.7\nv -30.1 -44.6 28.6\nv -24.9 -42.5 28.2\nv -20 -39.9 27.4\nv -15.5 -36.9 26.3\nv -11.3 -33.7 24.9\nv -7.5 -30.3 23.3\nv -4.1 -26.7 21.4\nv -1 -23.2 19.4\nv 1.8 -19.7 17.2\nv 4.3 -16.3 14.9\nv 6.4 -13.2 12.6\nv 8.3 -10.3 10.4\nv 10 -7.7 8.3\nv 11.4 -5.4 6.3\nv 12.5 -3.5 4.6\nv 13.4 -2 3.1\nv 14 -0.9 2\nv 14.4 -0.2 1.3\nv 13.3 2 -0.2\nv 13 2.7 -1\nv 12.3 3.8 -2.1\nv 11.4 5.3 -3.5\nv 10.3 7.2 -5.3\nv 8.9 9.5 -7.2\nv 7.3 12.1 -9.4\nv 5.3 15 -11.6\nv 3.1 18.1 -13.9\nv 0.6 21.5 -16.1\nv -2.2 24.9 -18.3\nv -5.3 28.5 -20.4\nv -8.8 32 -22.2\nv -12.6 35.4 -23.9\nv -16.8 38.6 -25.3\nv -21.4 41.5 -26.4\nv -26.3 44 -27.2\nv -31.6 46.1 -27.6\nv -37.1 47.6 -27.7\nv -42.9 48.4 -27.4\nv -48.8 48.5 -26.7\nv -54.8 47.8 -25.6\nv -60.7 46.3 -24.3\nv -66.5 44 -22.5\nv -72 40.8 -20.5\nv -77.1 36.8 -18.1\nv -81.7 32 -15.5\nv -85.7 26.5 -12.7\nv -88.9 20.4 -9.7\nv -91.2 13.9 -6.5\nv -92.6 7 -3.3\nv -93.1 0 0\nv -92.6 -7 3.3\nv -91.2 -13.9 6.5\nv -88.9 -20.4 9.7\nv -85.7 -26.5 12.7\nv -81.7 -32 15.5\nv -77.1 -36.8 18.1\nv -72 -40.8 20.5\nv -66.5 -44 22.5\nv -60.7 -46.3 24.3\nv -54.8 -47.8 25.6\nv -48.8 -48.5 26.7\nv -42.9 -48.4 27.4\nv -37.1 -47.6 27.7\nv -31.6 -46.1 27.6\nv -26.3 -44 27.2\nv -21.4 -41.5 26.4\nv -16.8 -38.6 25.3\nv -12.6 -35.4 23.9\nv -8.8 -32 22.2\nv -5.3 -28.5 20.4\nv -2.2 -24.9 18.3\nv 0.6 -21.5 16.1\nv 3.1 -18.1 13.9\nv 5.3 -15 11.6\nv 7.3 -12.1 9.4\nv 8.9 -9.5 7.2\nv 10.3 -7.2 5.3\nv 11.4 -5.3 3.5\nv 12.3 -3.8 2.1\nv 13 -2.7 1\nv 13.3 -2 0.2\nv 13.5 -1.8 0\nv 14.4 0.2 -1.3\nv 14 0.9 -2\nv 13.4 2 -3.1\nv 12.5 3.5 -4.6\nv 11.4 5.4 -6.3\nv 10 7.7 -8.3\nv 8.3 10.3 -10.4\nv 6.4 13.2 -12.6\nv 4.3 16.3 -14.9\nv 1.8 19.7 -17.2\nv -1 23.2 -19.4\nv -4.1 26.7 -21.4\nv -7.5 30.3 -23.3\nv -11.3 33.7 -24.9\nv -15.5 36.9 -26.3\nv -20 39.9 -27.4\nv -24.9 42.5 -28.2\nv -30.1 44.6 -28.6\nv -35.6 46.1 -28.7\nv -41.3 47 -28.4\nv -47.1 47.2 -27.7\nv -53 46.6 -26.7\nv -58.9 45.2 -25.3\nv -64.6 43 -23.6\nv -70.1 39.9 -21.5\nv -75.2 36 -19.2\nv -79.7 31.3 -16.6\nv -83.6 25.9 -13.7\nv -86.8 20 -10.7\nv -89.1 13.6 -7.6\nv -90.5 6.9 -4.3\nv -91 0 -1.1\nv -90.5 -6.9 2.2\nv -89.1 -13.6 5.5\nv -86.8 -20 8.6\nv -83.6 -25.9 11.6\nv -79.7 -31.3 14.5\nv -75.2 -36 17.1\nv -70.1 -39.9 19.4\nv -64.6 -43 21.5\nv -58.9 -45.2 23.2\nv -53 -46.6 24.6\nv -47.1 -47.2 25.6\nv -41.3 -47 26.3\nv -35.6 -46.1 26.6\nv -30.1 -44.6 26.5\nv -24.9 -42.5 26.1\nv -20 -39.9 25.3\nv -15.5 -36.9 24.2\nv -11.3 -33.7 22.8\nv -7.5 -30.3 21.2\nv -4.1 -26.7 19.3\nv -1 -23.2 17.2\nv 1.8 -19.7 15.1\nv 4.3 -16.3 12.8\nv 6.4 -13.2 10.5\nv 8.3 -10.3 8.3\nv 10 -7.7 6.2\nv 11.4 -5.4 4.2\nv 12.5 -3.5 2.5\nv 13.4 -2 1\nv 14 -0.9 -0.1\nv 14.4 -0.2 -0.8\nv 14.4 -0.2 0.8\nv 14 -0.9 0.1\nv 13.4 -2 -1\nv 12.5 -3.5 -2.5\nv 11.4 -5.4 -4.2\nv 10.2 -7.8 -6.2\nv 8.7 -10.5 -8.3\nv 7.1 -13.6 -10.5\nv 5.5 -17.1 -12.8\nv 3.8 -20.9 -15.1\nv 2.2 -25 -17.2\nv 0.7 -29.5 -19.3\nv -0.7 -34.2 -21.2\nv -1.7 -39.2 -22.8\nv -2.4 -44.5 -24.2\nv -2.7 -49.9 -25.3\nv -2.5 -55.4 -26.1\nv -1.8 -60.9 -26.5\nv -0.4 -66.4 -26.6\nv 1.7 -71.8 -26.3\nv 4.4 -77 -25.6\nv 7.9 -81.8 -24.6\nv 12.1 -86.2 -23.2\nv 16.9 -90 -21.5\nv 22.3 -93.2 -19.4\nv 28.2 -95.7 -17.1\nv 34.5 -97.3 -14.5\nv 41.1 -98 -11.6\nv 47.8 -97.7 -8.6\nv 54.6 -96.5 -5.5\nv 61.1 -94.4 -2.2\nv 67.3 -91.4 1.1\nv 73 -87.5 4.3\nv 78.1 -82.9 7.6\nv 82.5 -77.7 10.7\nv 86.1 -72 13.7\nv 88.7 -66 16.6\nv 90.5 -59.7 19.2\nv 91.4 -53.3 21.5\nv 91.3 -47.1 23.6\nv 90.4 -41 25.3\nv 88.7 -35.2 26.7\nv 86.2 -29.7 27.7\nv 83.1 -24.8 28.4\nv 79.5 -20.3 28.7\nv 75.4 -16.3 28.6\nv 71 -12.9 28.2\nv 66.3 -10 27.4\nv 61.5 -7.5 26.3\nv 56.6 -5.6 24.9\nv 51.8 -4 23.3\nv 47 -2.8 21.4\nv 42.3 -1.8 19.4\nv 37.9 -1.2 17.2\nv 33.8 -0.7 14.9\nv 30 -0.4 12.6\nv 26.5 -0.2 10.4\nv 23.4 -0.1 8.3\nv 20.7 0 6.3\nv 18.5 0 4.6\nv 16.8 0 3.1\nv 15.5 0 2\nv 14.8 0 1.3\nv 13.3 -2 -0.2\nv 13 -2.7 -1\nv 12.3 -3.8 -2.1\nv 11.5 -5.3 -3.5\nv 10.4 -7.3 -5.3\nv 9.1 -9.6 -7.2\nv 7.7 -12.3 -9.4\nv 6.1 -15.4 -11.6\nv 4.5 -18.9 -13.9\nv 2.9 -22.7 -16.1\nv 1.3 -26.9 -18.3\nv -0.2 -31.4 -20.4\nv -1.5 -36.2 -22.2\nv -2.5 -41.2 -23.9\nv -3.2 -46.4 -25.3\nv -3.4 -51.9 -26.4\nv -3.2 -57.4 -27.2\nv -2.3 -63 -27.6\nv -0.9 -68.5 -27.7\nv 1.3 -73.9 -27.4\nv 4.2 -79.1 -26.7\nv 7.7 -83.9 -25.6\nv 12 -88.3 -24.3\nv 16.9 -92.2 -22.5\nv 22.5 -95.3 -20.5\nv 28.5 -97.8 -18.1\nv 34.9 -99.3 -15.5\nv 41.7 -100 -12.7\nv 48.5 -99.7 -9.7\nv 55.4 -98.5 -6.5\nv 62 -96.3 -3.3\nv 68.3 -93.2 0\nv 74.2 -89.3 3.3\nv 79.4 -84.6 6.5\nv 83.9 -79.3 9.7\nv 87.5 -73.5 12.7\nv 90.3 -67.4 15.5\nv 92.2 -61 18.1\nv 93.1 -54.5 20.5\nv 93.1 -48.2 22.5\nv 92.3 -42 24.3\nv 90.6 -36.1 25.6\nv 88.2 -30.6 26.7\nv 85.1 -25.5 27.4\nv 81.5 -20.9 27.7\nv 77.5 -16.9 27.6\nv 73.1 -13.4 27.2\nv 68.4 -10.4 26.4\nv 63.6 -7.9 25.3\nv 58.7 -5.8 23.9\nv 53.9 -4.2 22.2\nv 49.1 -2.9 20.4\nv 44.5 -2 18.3\nv 40 -1.3 16.1\nv 35.9 -0.8 13.9\nv 32.1 -0.5 11.6\nv 28.6 -0.2 9.4\nv 25.5 -0.1 7.2\nv 22.9 -0.1 5.3\nv 20.6 0 3.5\nv 18.9 0 2.1\nv 17.6 0 1\nv 16.9 0 0.2\nv 16.6 0 0\nv 14.4 -0.2 -1.3\nv 14 -0.9 -2\nv 13.4 -2 -3.1\nv 12.5 -3.5 -4.6\nv 11.4 -5.4 -6.3\nv 10.2 -7.8 -8.3\nv 8.7 -10.5 -10.4\nv 7.1 -13.6 -12.6\nv 5.5 -17.1 -14.9\nv 3.8 -20.9 -17.2\nv 2.2 -25 -19.4\nv 0.7 -29.5 -21.4\nv -0.7 -34.2 -23.3\nv -1.7 -39.2 -24.9\nv -2.4 -44.5 -26.3\nv -2.7 -49.9 -27.4\nv -2.5 -55.4 -28.2\nv -1.8 -60.9 -28.6\nv -0.4 -66.4 -28.7\nv 1.7 -71.8 -28.4\nv 4.4 -77 -27.7\nv 7.9 -81.8 -26.7\nv 12.1 -86.2 -25.3\nv 16.9 -90 -23.6\nv 22.3 -93.2 -21.5\nv 28.2 -95.7 -19.2\nv 34.5 -97.3 -16.6\nv 41.1 -98 -13.7\nv 47.8 -97.7 -10.7\nv 54.6 -96.5 -7.6\nv 61.1 -94.4 -4.3\nv 67.3 -91.4 -1.1\nv 73 -87.5 2.2\nv 78.1 -82.9 5.5\nv 82.5 -77.7 8.6\nv 86.1 -72 11.6\nv 88.7 -66 14.5\nv 90.5 -59.7 17.1\nv 91.4 -53.3 19.4\nv 91.3 -47.1 21.5\nv 90.4 -41 23.2\nv 88.7 -35.2 24.6\nv 86.2 -29.7 25.6\nv 83.1 -24.8 26.3\nv 79.5 -20.3 26.6\nv 75.4 -16.3 26.5\nv 71 -12.9 26.1\nv 66.3 -10 25.3\nv 61.5 -7.5 24.2\nv 56.6 -5.6 22.8\nv 51.8 -4 21.2\nv 47 -2.8 19.3\nv 42.3 -1.8 17.2\nv 37.9 -1.2 15.1\nv 33.8 -0.7 12.8\nv 30 -0.4 10.5\nv 26.5 -0.2 8.3\nv 23.4 -0.1 6.2\nv 20.7 0 4.2\nv 18.5 0 2.5\nv 16.8 0 1\nv 15.5 0 -0.1\nv 14.8 0 -0.8\nusemtl rgb(204,204,204)\nf 3 2 1\nf 3 1 4\nf 3 4 5\nf 3 5 6\nf 3 6 7\nf 3 7 8\nf 3 8 9\nf 3 9 10\nf 3 10 11\nf 3 11 12\nf 3 12 13\nf 3 13 14\nf 3 14 15\nf 3 15 16\nf 3 16 17\nf 3 17 18\nf 3 18 19\nf 3 19 20\nf 3 20 21\nf 3 21 22\nf 3 22 23\nf 3 23 24\nf 3 24 25\nf 3 25 26\nf 3 26 27\nf 3 27 28\nf 3 28 29\nf 3 29 30\nf 3 30 31\nf 3 31 32\nf 3 32 33\nf 3 33 34\nf 3 34 35\nf 3 35 36\nf 3 36 37\nf 3 37 38\nf 3 38 39\nf 3 39 40\nf 3 40 41\nf 3 41 42\nf 3 42 43\nf 3 43 44\nf 3 44 45\nf 3 45 46\nf 3 46 47\nf 3 47 48\nf 3 48 49\nf 3 49 50\nf 3 50 51\nf 3 51 52\nf 3 52 53\nf 3 53 54\nf 3 54 55\nf 3 55 56\nf 3 56 57\nf 3 57 58\nf 3 58 59\nf 3 59 60\nf 3 60 61\nf 3 61 62\nf 3 62 63\nf 3 63 64\nf 3 64 65\nf 3 65 2\nf 67 66 1 2\nf 66 68 4 1\nf 68 69 5 4\nf 69 70 6 5\nf 70 71 7 6\nf 71 72 8 7\nf 72 73 9 8\nf 73 74 10 9\nf 74 75 11 10\nf 75 76 12 11\nf 76 77 13 12\nf 77 78 14 13\nf 78 79 15 14\nf 79 80 16 15\nf 80 81 17 16\nf 81 82 18 17\nf 82 83 19 18\nf 83 84 20 19\nf 84 85 21 20\nf 85 86 22 21\nf 86 87 23 22\nf 87 88 24 23\nf 88 89 25 24\nf 89 90 26 25\nf 90 91 27 26\nf 91 92 28 27\nf 92 93 29 28\nf 93 94 30 29\nf 94 95 31 30\nf 95 96 32 31\nf 96 97 33 32\nf 97 98 34 33\nf 98 99 35 34\nf 99 100 36 35\nf 100 101 37 36\nf 101 102 38 37\nf 102 103 39 38\nf 103 104 40 39\nf 104 105 41 40\nf 105 106 42 41\nf 106 107 43 42\nf 107 108 44 43\nf 108 109 45 44\nf 109 110 46 45\nf 110 111 47 46\nf 111 112 48 47\nf 112 113 49 48\nf 113 114 50 49\nf 114 115 51 50\nf 115 116 52 51\nf 116 117 53 52\nf 117 118 54 53\nf 118 119 55 54\nf 119 120 56 55\nf 120 121 57 56\nf 121 122 58 57\nf 122 123 59 58\nf 123 124 60 59\nf 124 125 61 60\nf 125 126 62 61\nf 126 127 63 62\nf 127 128 64 63\nf 128 129 65 64\nf 129 130 2 65\nf 131 132 66 67\nf 132 133 68 66\nf 133 134 69 68\nf 134 135 70 69\nf 135 136 71 70\nf 136 137 72 71\nf 137 138 73 72\nf 138 139 74 73\nf 139 140 75 74\nf 140 141 76 75\nf 141 142 77 76\nf 142 143 78 77\nf 143 144 79 78\nf 144 145 80 79\nf 145 146 81 80\nf 146 147 82 81\nf 147 148 83 82\nf 148 149 84 83\nf 149 150 85 84\nf 150 151 86 85\nf 151 152 87 86\nf 152 153 88 87\nf 153 154 89 88\nf 154 155 90 89\nf 155 156 91 90\nf 156 157 92 91\nf 157 158 93 92\nf 158 159 94 93\nf 159 160 95 94\nf 160 161 96 95\nf 161 162 97 96\nf 162 163 98 97\nf 163 164 99 98\nf 164 165 100 99\nf 165 166 101 100\nf 166 167 102 101\nf 167 168 103 102\nf 168 169 104 103\nf 169 170 105 104\nf 170 171 106 105\nf 171 172 107 106\nf 172 173 108 107\nf 173 174 109 108\nf 174 175 110 109\nf 175 176 111 110\nf 176 177 112 111\nf 177 178 113 112\nf 178 179 114 113\nf 179 180 115 114\nf 180 181 116 115\nf 181 182 117 116\nf 182 183 118 117\nf 183 184 119 118\nf 184 185 120 119\nf 185 186 121 120\nf 186 187 122 121\nf 187 188 123 122\nf 188 189 124 123\nf 189 190 125 124\nf 190 191 126 125\nf 191 192 127 126\nf 192 193 128 127\nf 193 194 129 128\nf 194 131 130 129\nf 132 131 195\nf 133 132 195\nf 134 133 195\nf 135 134 195\nf 136 135 195\nf 137 136 195\nf 138 137 195\nf 139 138 195\nf 140 139 195\nf 141 140 195\nf 142 141 195\nf 143 142 195\nf 144 143 195\nf 145 144 195\nf 146 145 195\nf 147 146 195\nf 148 147 195\nf 149 148 195\nf 150 149 195\nf 151 150 195\nf 152 151 195\nf 153 152 195\nf 154 153 195\nf 155 154 195\nf 156 155 195\nf 157 156 195\nf 158 157 195\nf 159 158 195\nf 160 159 195\nf 161 160 195\nf 162 161 195\nf 163 162 195\nf 164 163 195\nf 165 164 195\nf 166 165 195\nf 167 166 195\nf 168 167 195\nf 169 168 195\nf 170 169 195\nf 171 170 195\nf 172 171 195\nf 173 172 195\nf 174 173 195\nf 175 174 195\nf 176 175 195\nf 177 176 195\nf 178 177 195\nf 179 178 195\nf 180 179 195\nf 181 180 195\nf 182 181 195\nf 183 182 195\nf 184 183 195\nf 185 184 195\nf 186 185 195\nf 187 186 195\nf 188 187 195\nf 189 188 195\nf 190 189 195\nf 191 190 195\nf 192 191 195\nf 193 192 195\nf 194 193 195\nf 131 194 195\nf 3 2 196\nf 3 196 197\nf 3 197 198\nf 3 198 199\nf 3 199 200\nf 3 200 201\nf 3 201 202\nf 3 202 203\nf 3 203 204\nf 3 204 205\nf 3 205 206\nf 3 206 207\nf 3 207 208\nf 3 208 209\nf 3 209 210\nf 3 210 211\nf 3 211 212\nf 3 212 213\nf 3 213 214\nf 3 214 215\nf 3 215 216\nf 3 216 217\nf 3 217 218\nf 3 218 219\nf 3 219 220\nf 3 220 221\nf 3 221 222\nf 3 222 223\nf 3 223 224\nf 3 224 225\nf 3 225 226\nf 3 226 227\nf 3 227 228\nf 3 228 229\nf 3 229 230\nf 3 230 231\nf 3 231 232\nf 3 232 233\nf 3 233 234\nf 3 234 235\nf 3 235 236\nf 3 236 237\nf 3 237 238\nf 3 238 239\nf 3 239 240\nf 3 240 241\nf 3 241 242\nf 3 242 243\nf 3 243 244\nf 3 244 245\nf 3 245 246\nf 3 246 247\nf 3 247 248\nf 3 248 249\nf 3 249 250\nf 3 250 251\nf 3 251 252\nf 3 252 253\nf 3 253 254\nf 3 254 255\nf 3 255 256\nf 3 256 257\nf 3 257 258\nf 3 258 2\nf 130 259 196 2\nf 259 260 197 196\nf 260 261 198 197\nf 261 262 199 198\nf 262 263 200 199\nf 263 264 201 200\nf 264 265 202 201\nf 265 266 203 202\nf 266 267 204 203\nf 267 268 205 204\nf 268 269 206 205\nf 269 270 207 206\nf 270 271 208 207\nf 271 272 209 208\nf 272 273 210 209\nf 273 274 211 210\nf 274 275 212 211\nf 275 276 213 212\nf 276 277 214 213\nf 277 278 215 214\nf 278 279 216 215\nf 279 280 217 216\nf 280 281 218 217\nf 281 282 219 218\nf 282 283 220 219\nf 283 284 221 220\nf 284 285 222 221\nf 285 286 223 222\nf 286 287 224 223\nf 287 288 225 224\nf 288 289 226 225\nf 289 290 227 226\nf 290 291 228 227\nf 291 292 229 228\nf 292 293 230 229\nf 293 294 231 230\nf 294 295 232 231\nf 295 296 233 232\nf 296 297 234 233\nf 297 298 235 234\nf 298 299 236 235\nf 299 300 237 236\nf 300 301 238 237\nf 301 302 239 238\nf 302 303 240 239\nf 303 304 241 240\nf 304 305 242 241\nf 305 306 243 242\nf 306 307 244 243\nf 307 308 245 244\nf 308 309 246 245\nf 309 310 247 246\nf 310 311 248 247\nf 311 312 249 248\nf 312 313 250 249\nf 313 314 251 250\nf 314 315 252 251\nf 315 316 253 252\nf 316 317 254 253\nf 317 318 255 254\nf 318 319 256 255\nf 319 320 257 256\nf 320 321 258 257\nf 321 322 2 258\nf 131 323 259 130\nf 323 324 260 259\nf 324 325 261 260\nf 325 326 262 261\nf 326 327 263 262\nf 327 328 264 263\nf 328 329 265 264\nf 329 330 266 265\nf 330 331 267 266\nf 331 332 268 267\nf 332 333 269 268\nf 333 334 270 269\nf 334 335 271 270\nf 335 336 272 271\nf 336 337 273 272\nf 337 338 274 273\nf 338 339 275 274\nf 339 340 276 275\nf 340 341 277 276\nf 341 342 278 277\nf 342 343 279 278\nf 343 344 280 279\nf 344 345 281 280\nf 345 346 282 281\nf 346 347 283 282\nf 347 348 284 283\nf 348 349 285 284\nf 349 350 286 285\nf 350 351 287 286\nf 351 352 288 287\nf 352 353 289 288\nf 353 354 290 289\nf 354 355 291 290\nf 355 356 292 291\nf 356 357 293 292\nf 357 358 294 293\nf 358 359 295 294\nf 359 360 296 295\nf 360 361 297 296\nf 361 362 298 297\nf 362 363 299 298\nf 363 364 300 299\nf 364 365 301 300\nf 365 366 302 301\nf 366 367 303 302\nf 367 368 304 303\nf 368 369 305 304\nf 369 370 306 305\nf 370 371 307 306\nf 371 372 308 307\nf 372 373 309 308\nf 373 374 310 309\nf 374 375 311 310\nf 375 376 312 311\nf 376 377 313 312\nf 377 378 314 313\nf 378 379 315 314\nf 379 380 316 315\nf 380 381 317 316\nf 381 382 318 317\nf 382 383 319 318\nf 383 384 320 319\nf 384 385 321 320\nf 385 131 322 321\nf 323 131 195\nf 324 323 195\nf 325 324 195\nf 326 325 195\nf 327 326 195\nf 328 327 195\nf 329 328 195\nf 330 329 195\nf 331 330 195\nf 332 331 195\nf 333 332 195\nf 334 333 195\nf 335 334 195\nf 336 335 195\nf 337 336 195\nf 338 337 195\nf 339 338 195\nf 340 339 195\nf 341 340 195\nf 342 341 195\nf 343 342 195\nf 344 343 195\nf 345 344 195\nf 346 345 195\nf 347 346 195\nf 348 347 195\nf 349 348 195\nf 350 349 195\nf 351 350 195\nf 352 351 195\nf 353 352 195\nf 354 353 195\nf 355 354 195\nf 356 355 195\nf 357 356 195\nf 358 357 195\nf 359 358 195\nf 360 359 195\nf 361 360 195\nf 362 361 195\nf 363 362 195\nf 364 363 195\nf 365 364 195\nf 366 365 195\nf 367 366 195\nf 368 367 195\nf 369 368 195\nf 370 369 195\nf 371 370 195\nf 372 371 195\nf 373 372 195\nf 374 373 195\nf 375 374 195\nf 376 375 195\nf 377 376 195\nf 378 377 195\nf 379 378 195\nf 380 379 195\nf 381 380 195\nf 382 381 195\nf 383 382 195\nf 384 383 195\nf 385 384 195\nf 131 385 195\nf 3 2 386\nf 3 386 387\nf 3 387 388\nf 3 388 389\nf 3 389 390\nf 3 390 391\nf 3 391 392\nf 3 392 393\nf 3 393 394\nf 3 394 395\nf 3 395 396\nf 3 396 397\nf 3 397 398\nf 3 398 399\nf 3 399 400\nf 3 400 401\nf 3 401 402\nf 3 402 403\nf 3 403 404\nf 3 404 405\nf 3 405 406\nf 3 406 407\nf 3 407 408\nf 3 408 409\nf 3 409 410\nf 3 410 411\nf 3 411 412\nf 3 412 413\nf 3 413 414\nf 3 414 415\nf 3 415 416\nf 3 416 417\nf 3 417 418\nf 3 418 419\nf 3 419 420\nf 3 420 421\nf 3 421 422\nf 3 422 423\nf 3 423 424\nf 3 424 425\nf 3 425 426\nf 3 426 427\nf 3 427 428\nf 3 428 429\nf 3 429 430\nf 3 430 431\nf 3 431 432\nf 3 432 433\nf 3 433 434\nf 3 434 435\nf 3 435 436\nf 3 436 437\nf 3 437 438\nf 3 438 439\nf 3 439 440\nf 3 440 441\nf 3 441 442\nf 3 442 443\nf 3 443 444\nf 3 444 445\nf 3 445 446\nf 3 446 447\nf 3 447 448\nf 3 448 2\nf 322 449 386 2\nf 449 450 387 386\nf 450 451 388 387\nf 451 452 389 388\nf 452 453 390 389\nf 453 454 391 390\nf 454 455 392 391\nf 455 456 393 392\nf 456 457 394 393\nf 457 458 395 394\nf 458 459 396 395\nf 459 460 397 396\nf 460 461 398 397\nf 461 462 399 398\nf 462 463 400 399\nf 463 464 401 400\nf 464 465 402 401\nf 465 466 403 402\nf 466 467 404 403\nf 467 468 405 404\nf 468 469 406 405\nf 469 470 407 406\nf 470 471 408 407\nf 471 472 409 408\nf 472 473 410 409\nf 473 474 411 410\nf 474 475 412 411\nf 475 476 413 412\nf 476 477 414 413\nf 477 478 415 414\nf 478 479 416 415\nf 479 480 417 416\nf 480 481 418 417\nf 481 482 419 418\nf 482 483 420 419\nf 483 484 421 420\nf 484 485 422 421\nf 485 486 423 422\nf 486 487 424 423\nf 487 488 425 424\nf 488 489 426 425\nf 489 490 427 426\nf 490 491 428 427\nf 491 492 429 428\nf 492 493 430 429\nf 493 494 431 430\nf 494 495 432 431\nf 495 496 433 432\nf 496 497 434 433\nf 497 498 435 434\nf 498 499 436 435\nf 499 500 437 436\nf 500 501 438 437\nf 501 502 439 438\nf 502 503 440 439\nf 503 504 441 440\nf 504 505 442 441\nf 505 506 443 442\nf 506 507 444 443\nf 507 508 445 444\nf 508 509 446 445\nf 509 510 447 446\nf 510 511 448 447\nf 511 512 2 448\nf 131 513 449 322\nf 513 514 450 449\nf 514 515 451 450\nf 515 516 452 451\nf 516 517 453 452\nf 517 518 454 453\nf 518 519 455 454\nf 519 520 456 455\nf 520 521 457 456\nf 521 522 458 457\nf 522 523 459 458\nf 523 524 460 459\nf 524 525 461 460\nf 525 526 462 461\nf 526 527 463 462\nf 527 528 464 463\nf 528 529 465 464\nf 529 530 466 465\nf 530 531 467 466\nf 531 532 468 467\nf 532 533 469 468\nf 533 534 470 469\nf 534 535 471 470\nf 535 536 472 471\nf 536 537 473 472\nf 537 538 474 473\nf 538 539 475 474\nf 539 540 476 475\nf 540 541 477 476\nf 541 542 478 477\nf 542 543 479 478\nf 543 544 480 479\nf 544 545 481 480\nf 545 546 482 481\nf 546 547 483 482\nf 547 548 484 483\nf 548 549 485 484\nf 549 550 486 485\nf 550 551 487 486\nf 551 552 488 487\nf 552 553 489 488\nf 553 554 490 489\nf 554 555 491 490\nf 555 556 492 491\nf 556 557 493 492\nf 557 558 494 493\nf 558 559 495 494\nf 559 560 496 495\nf 560 561 497 496\nf 561 562 498 497\nf 562 563 499 498\nf 563 564 500 499\nf 564 565 501 500\nf 565 566 502 501\nf 566 567 503 502\nf 567 568 504 503\nf 568 569 505 504\nf 569 570 506 505\nf 570 571 507 506\nf 571 572 508 507\nf 572 573 509 508\nf 573 574 510 509\nf 574 575 511 510\nf 575 131 512 511\nf 513 131 195\nf 514 513 195\nf 515 514 195\nf 516 515 195\nf 517 516 195\nf 518 517 195\nf 519 518 195\nf 520 519 195\nf 521 520 195\nf 522 521 195\nf 523 522 195\nf 524 523 195\nf 525 524 195\nf 526 525 195\nf 527 526 195\nf 528 527 195\nf 529 528 195\nf 530 529 195\nf 531 530 195\nf 532 531 195\nf 533 532 195\nf 534 533 195\nf 535 534 195\nf 536 535 195\nf 537 536 195\nf 538 537 195\nf 539 538 195\nf 540 539 195\nf 541 540 195\nf 542 541 195\nf 543 542 195\nf 544 543 195\nf 545 544 195\nf 546 545 195\nf 547 546 195\nf 548 547 195\nf 549 548 195\nf 550 549 195\nf 551 550 195\nf 552 551 195\nf 553 552 195\nf 554 553 195\nf 555 554 195\nf 556 555 195\nf 557 556 195\nf 558 557 195\nf 559 558 195\nf 560 559 195\nf 561 560 195\nf 562 561 195\nf 563 562 195\nf 564 563 195\nf 565 564 195\nf 566 565 195\nf 567 566 195\nf 568 567 195\nf 569 568 195\nf 570 569 195\nf 571 570 195\nf 572 571 195\nf 573 572 195\nf 574 573 195\nf 575 574 195\nf 131 575 195\n"
  },
  {
    "path": "test/bgratutorial3d/obj/helico.obj",
    "content": "v 80.7 2.2 28.5\nv 80.7 2.2 22.8\nv 83.3 2.2 28.5\nv 83.3 2.2 22.8\nv 85.1 0.4 28.5\nv 85.1 0.4 22.8\nv 85.1 -2.1 28.5\nv 85.1 -2.1 22.8\nv 83.3 -3.9 28.5\nv 83.3 -3.9 22.8\nv 80.7 -3.9 28.5\nv 80.7 -3.9 22.8\nv 78.9 -2.1 28.5\nv 78.9 -2.1 22.8\nv 78.9 0.4 28.5\nv 78.9 0.4 22.8\nv 80.6 2.7 28.8\nv 80.6 2.7 22.5\nv 83.4 2.7 28.8\nv 83.4 2.7 22.5\nv 85.5 0.6 28.8\nv 85.5 0.6 22.5\nv 85.5 -2.3 28.8\nv 85.5 -2.3 22.5\nv 83.4 -4.3 28.8\nv 83.4 -4.3 22.5\nv 80.6 -4.3 28.8\nv 80.6 -4.3 22.5\nv 78.5 -2.3 28.8\nv 78.5 -2.3 22.5\nv 78.5 0.6 28.8\nv 78.5 0.6 22.5\nv 80.2 3.4 28.3\nv 80.2 3.4 22.9\nv 83.7 3.4 28.3\nv 83.7 3.4 22.9\nv 86.1 0.9 28.3\nv 86.1 0.9 22.9\nv 86.1 -2.6 28.3\nv 86.1 -2.6 22.9\nv 83.7 -5 26.4\nv 83.7 -5 24.8\nv 80.2 -5 26.4\nv 80.2 -5 24.8\nv 77.7 -2.6 28.3\nv 77.7 -2.6 22.9\nv 77.7 0.9 28.3\nv 77.7 0.9 22.9\nv 76.3 1.9 26.4\nv 76.3 1.9 24.8\nv 78 3.8 26.4\nv 78 3.8 24.8\nv 86.7 13.7 26.4\nv 86.7 13.7 24.8\nv 89.2 13.7 26.4\nv 89.2 13.7 24.8\nv 91 13.7 26.4\nv 91 13.7 24.8\nv 92.7 -2.6 26.4\nv 92.7 -2.6 24.8\nv 88.8 0.9 26.4\nv 88.8 0.9 24.8\nv 90.2 -5 26.4\nv 90.2 -5 24.8\nv 85.3 13.6 26.4\nv 85.3 13.6 24.8\nv 87.1 3.4 26.4\nv 87.1 3.4 24.8\nv 76.3 1.8 25.7\nv 78.1 3.8 25.7\nv 87.2 14.2 25.6\nv 89.8 14.2 25.6\nv 91.7 14.2 25.6\nv 93.5 -2.8 25.6\nv 89.4 0.8 25.6\nv 90.9 -5.4 25.6\nv 85.7 14.1 25.6\nv 87.6 3.4 25.6\nv 70.6 -5.8 26.5\nv 70.6 -5.8 24.8\nv 70.6 -5.2 28\nv 70.6 -5.2 23.3\nv 70.6 -4.5 28.9\nv 70.6 -4.5 22.4\nv 70.6 -3 28.9\nv 70.6 -3 22.4\nv 70.6 -2 28\nv 70.6 -2 23.3\nv 70.6 -1.4 26.5\nv 70.6 -1.4 24.8\nv 35.6 -11.4 27.5\nv 35.6 -11.4 23.8\nv 35.6 -10.1 30.7\nv 35.6 -10.1 20.6\nv 35.6 -8.6 31.4\nv 35.6 -8.6 19.9\nv 35.6 -5.4 31.4\nv 35.6 -5.4 19.9\nv 35.6 -0.5 30.7\nv 35.6 -0.5 20.6\nv 35.6 0.8 27.5\nv 35.6 0.8 23.8\nv 25.5 -13.7 28.4\nv 25.5 -13.7 22.9\nv 25.5 -12 32.3\nv 25.5 -12 19\nv 25.5 -9.8 33.2\nv 25.5 -9.8 18.1\nv 25.5 -5.6 33.2\nv 25.5 -5.6 18.1\nv 25.5 1.3 32.3\nv 25.5 1.3 19\nv 25.5 3 28.4\nv 25.5 3 22.9\nv 17.4 -16.2 29.5\nv 17.4 -16.2 21.8\nv 17.4 -13.8 35\nv 17.4 -13.8 16.3\nv 17.4 -10.4 36.2\nv 17.4 -10.4 15.1\nv 17.4 -4.9 36.2\nv 17.4 -4.9 15.1\nv 17.4 5.6 33.9\nv 17.4 5.6 17.4\nv 17.4 8 29.5\nv 17.4 8 21.8\nv 7.1 -18.3 30.5\nv 7.1 -18.3 20.8\nv 7.1 -15.4 37.2\nv 7.1 -15.4 14\nv 7.1 -11 38.8\nv 7.1 -11 12.5\nv 7.1 -4.4 38.8\nv 7.1 -4.4 12.5\nv 7.1 10.2 36.1\nv 7.1 10.2 15.2\nv 7.1 13.2 30.5\nv 7.1 13.2 20.8\nv -9.8 -18.3 30.5\nv -9.8 -18.3 20.8\nv -9.8 -15.4 37.2\nv -9.8 -15.4 14\nv -9.8 -11 38.8\nv -9.8 -11 12.5\nv -9.8 -4.4 38.8\nv -9.8 -4.4 12.5\nv -9.8 13.2 30.5\nv -9.8 13.2 20.8\nv -22.2 -17.6 29.9\nv -22.2 -17.6 21.4\nv -22.2 -15 36\nv -22.2 -15 15.3\nv -22.2 -11 37.3\nv -22.2 -11 14\nv -21.7 -4.7 37.3\nv -21.7 -4.7 14\nv -19.6 8.4 36\nv -19.6 8.4 15.3\nv -19.2 12 29.9\nv -19.2 12 21.4\nv -34.4 -15.6 28.3\nv -34.4 -15.6 23\nv -34.4 -14 32\nv -34.4 -14 19.3\nv -34.4 -11.1 32.9\nv -34.4 -11.1 18.4\nv -34.4 -8.8 32.9\nv -34.4 -8.8 18.4\nv -34.4 -6.6 32\nv -34.4 -6.6 19.3\nv -34.4 -5.3 28.3\nv -34.4 -5.3 23\nv -38.1 -13.9 26.8\nv -38.1 -13.9 24.5\nv -38.1 -13.2 28.9\nv -38.1 -13.2 22.4\nv -38.1 -11.4 30.1\nv -38.1 -11.4 21.2\nv -38.1 -10.4 30.1\nv -38.1 -10.4 21.2\nv -38.1 -9.2 28.9\nv -38.1 -9.2 22.4\nv -38.1 -8.4 26.8\nv -38.1 -8.4 24.5\nv -38.9 -12.1 26\nv -38.9 -12.1 25.3\nv -38.9 -11.8 26.7\nv -38.9 -11.8 24.6\nv -38.9 -11.4 27.1\nv -38.9 -11.4 24.2\nv -38.9 -10.9 27.1\nv -38.9 -10.9 24.2\nv -38.9 -10.5 26.7\nv -38.9 -10.5 24.6\nv -38.9 -10.2 26\nv -38.9 -10.2 25.3\nv -39.1 -11.2 25.7\nv 74 0.2 26.8\nv 74 0.2 24.5\nv 74 -5.6 26.6\nv 74 -5.6 24.7\nv 74 -5.2 28\nv 74 -5.2 23.3\nv 74 -0.5 28.1\nv 74 -0.5 23.2\nv 74 -3.9 28.6\nv 74 -3.9 22.7\nv 78.9 -0.8 28.5\nv 78.9 -0.8 22.8\nv 78.5 -0.8 28.8\nv 78.5 -0.8 22.5\nv 77.7 -0.8 28.3\nv 77.7 -0.8 22.9\nv 74 -1.9 28.6\nv 74 -1.9 22.7\nv 70.6 -1.4 25.7\nv 35.6 0.8 25.7\nv 25.5 3 25.7\nv 17.4 8 25.7\nv 7.1 13.2 25.7\nv -9.8 13.2 25.7\nv -19.2 12 25.7\nv -34.4 -5.3 25.7\nv -38.1 -8.4 25.7\nv -38.9 -10.2 25.7\nv 74 0.2 25.7\nv 70.6 -5.8 25.7\nv 35.6 -11.4 25.7\nv 25.5 -13.7 25.7\nv 17.4 -16.2 25.7\nv 7.1 -18.3 25.7\nv -9.8 -18.3 25.7\nv -22.2 -17.6 25.7\nv -34.4 -15.6 25.7\nv -38.1 -13.9 25.7\nv -38.9 -12.1 25.7\nv 74 -5.6 25.7\nv 90.1 13.7 26.4\nv 90.1 13.7 24.8\nv 87.5 0.9 28\nv 87.5 0.9 23.3\nv 89.4 -2.6 28\nv 89.4 -2.6 23.3\nv 87 -5 26.4\nv 87 -5 24.8\nv 85.4 3.4 28\nv 85.4 3.4 23.3\nv 90.8 14.2 25.6\nv 87.5 -5.4 25.6\nv 84.7 -9.9 26.4\nv 84.7 -9.9 24.9\nv 84.9 -10 25.6\nv 83.7 -10 25.6\nv 83.6 -9.9 26.4\nv 83.6 -9.9 24.9\nv 82.4 -10 25.6\nv 80.2 -8.9 25.6\nv 80.2 -8.9 25.9\nv 80.2 -8.9 25.4\nv 80.2 -8.7 26.6\nv 80.2 -8.7 24.7\nv 82.3 -9.9 26.4\nv 82.3 -9.9 24.9\nv -29.7 -16.6 29.1\nv -29.7 -16.6 22.2\nv -29.7 -14.5 34\nv -29.7 -14.5 17.3\nv -29.7 -11.1 35.1\nv -29.7 -11.1 16.2\nv -29.4 -6.9 35.1\nv -29.4 -6.9 16.2\nv -29.7 -16.6 25.7\nv 80.7 2.2 25.6\nv 83.3 2.2 25.6\nv 85.1 0.4 25.6\nv 85.1 -2.1 25.6\nv 83.3 -3.9 25.6\nv 80.7 -3.9 25.6\nv 78.9 -2.1 25.6\nv 78.9 0.4 25.6\nv 78.9 -0.8 25.6\nv -33.4 -5.6 31.2\nv -33.4 -5.6 20.1\nv -29.1 -5.9 33.8\nv -29.1 -5.9 17.5\nv -33.4 -4.5 25.6\nv -28 1.6 25.6\nv -20.2 10.4 25.6\nv -22.4 -4 35.8\nv -22.4 -4 15.5\nv -33.4 -4.5 27.9\nv -33.4 -4.5 23.4\nv -20.2 10.4 29.4\nv -20.2 10.4 21.9\nv -20.6 7.3 34.6\nv -20.6 7.3 16.7\nv -28.5 -1.6 32.9\nv -28.5 -1.6 18.4\nv -28 1.6 28.6\nv -28 1.6 22.6\nv -9.8 10.2 36.1\nv -9.8 10.2 15.2\nv 5.2 -2.7 38.6\nv 5.2 -2.7 12.7\nv 5.2 8.6 36.5\nv 5.2 8.6 14.8\nv -7.9 -2.7 38.6\nv -7.9 -2.7 12.7\nv -7.9 8.6 36.5\nv -7.9 8.6 14.8\nv 5.2 8.6 35.8\nv 5.2 8.6 15.5\nv 5.2 -2.7 37.9\nv 5.2 -2.7 13.4\nv -7.9 -2.7 37.9\nv -7.9 -2.7 13.4\nv -7.9 8.6 35.8\nv -7.9 8.6 15.5\nv 71.1 -3.4 36.5\nv 71.1 -3.4 15.3\nv 67.9 -3.4 36.5\nv 67.9 -3.4 15.3\nv 70.5 -3.4 25.9\nv 66.2 -3.4 25.9\nv 66.2 -3.9 25.9\nv 70.5 -3.9 25.9\nv 67.9 -3.9 36.5\nv 67.9 -3.9 15.3\nv 71.1 -3.9 36.5\nv 71.1 -3.9 15.3\nv 71.2 -3.9 37\nv 71.2 -3.9 14.8\nv 68 -3.9 37\nv 68 -3.9 14.8\nv 68 -3.4 37\nv 68 -3.4 14.8\nv 71.2 -3.4 37\nv 71.2 -3.4 14.8\nv 69.6 -0.3 37\nv 69.6 -0.3 14.8\nv 71.2 -0.3 37\nv 71.2 -0.3 14.8\nv 69.5 -0.3 36.5\nv 69.5 -0.3 15.3\nv 71.1 -0.3 36.5\nv 71.1 -0.3 15.3\nv 69.5 -7 36.5\nv 69.5 -7 15.3\nv 69.6 -7 37\nv 69.6 -7 14.8\nv 71.2 -7 37\nv 71.2 -7 14.8\nv 71.1 -7 36.5\nv 71.1 -7 15.3\nv 81.9 -1 27.1\nv 82.3 -0.3 27.1\nv 82.1 -0.2 27.1\nv 81.9 -0.2 27.1\nv 81.7 -0.2 27.1\nv 81.5 -0.3 27.1\nv 81.3 -0.4 27.1\nv 81.1 -0.6 27.1\nv 81 -0.8 27.1\nv 81 -1 27.1\nv 81 -1.3 27.1\nv 81.1 -1.5 27.1\nv 81.3 -1.6 27.1\nv 81.5 -1.8 27.1\nv 81.7 -1.9 27.1\nv 81.9 -1.9 27.1\nv 82.1 -1.9 27.1\nv 82.3 -1.8 27.1\nv 82.5 -1.6 27.1\nv 82.6 -1.5 27.1\nv 82.7 -1.3 27.1\nv 82.8 -1 27.1\nv 82.7 -0.8 27.1\nv 82.6 -0.6 27.1\nv 82.5 -0.4 27.1\nv 82.8 -0.1 25.6\nv 83 -0.4 25.6\nv 83.1 -0.7 25.6\nv 83.2 -1 25.6\nv 83.1 -1.4 25.6\nv 83 -1.7 25.6\nv 82.8 -1.9 25.6\nv 82.5 -2.1 25.6\nv 82.2 -2.3 25.6\nv 81.9 -2.3 25.6\nv 81.6 -2.3 25.6\nv 81.2 -2.1 25.6\nv 81 -1.9 25.6\nv 80.8 -1.7 25.6\nv 80.6 -1.4 25.6\nv 80.6 -1 25.6\nv 80.6 -0.7 25.6\nv 80.8 -0.4 25.6\nv 81 -0.1 25.6\nv 81.2 0.1 25.6\nv 81.6 0.2 25.6\nv 81.9 0.3 25.6\nv 82.2 0.2 25.6\nv 82.5 0.1 25.6\nv 82.5 0.1 26.9\nv 82.2 0.2 26.9\nv 81.9 0.3 26.9\nv 81.6 0.2 26.9\nv 81.2 0.1 26.9\nv 81 -0.1 26.9\nv 80.8 -0.4 26.9\nv 80.6 -0.7 26.9\nv 80.6 -1 26.9\nv 80.6 -1.4 26.9\nv 80.8 -1.7 26.9\nv 81 -1.9 26.9\nv 81.2 -2.1 26.9\nv 81.6 -2.3 26.9\nv 81.9 -2.3 26.9\nv 82.2 -2.3 26.9\nv 82.5 -2.1 26.9\nv 82.8 -1.9 26.9\nv 83 -1.7 26.9\nv 83.1 -1.4 26.9\nv 83.2 -1 26.9\nv 83.1 -0.7 26.9\nv 83 -0.4 26.9\nv 82.8 -0.1 26.9\nv 82.8 -0.1 26.1\nv 83 -0.4 26.1\nv 83.1 -0.7 26.1\nv 83.1 -1 26.1\nv 83.1 -1.3 26.1\nv 83 -1.6 26.1\nv 82.8 -1.9 26.1\nv 82.5 -2.1 26.1\nv 82.2 -2.2 26.1\nv 81.9 -2.3 26.1\nv 81.6 -2.2 26.1\nv 81.3 -2.1 26.1\nv 81 -1.9 26.1\nv 80.8 -1.6 26.1\nv 80.7 -1.3 26.1\nv 80.6 -1 26.1\nv 80.7 -0.7 26.1\nv 80.8 -0.4 26.1\nv 81 -0.1 26.1\nv 81.3 0.1 26.1\nv 81.6 0.2 26.1\nv 81.9 0.2 26.1\nv 82.2 0.2 26.1\nv 82.5 0.1 26.1\nv 84.6 1.7 26.1\nv 85.2 0.9 26.1\nv 85.5 0 26.1\nv 85.7 -1 26.1\nv 85.5 -2 26.1\nv 85.2 -2.9 26.1\nv 84.6 -3.7 26.1\nv 83.8 -4.3 26.1\nv 82.9 -4.7 26.1\nv 81.9 -4.8 26.1\nv 80.9 -4.7 26.1\nv 80 -4.3 26.1\nv 79.2 -3.7 26.1\nv 78.6 -2.9 26.1\nv 78.2 -2 26.1\nv 78.1 -1 26.1\nv 78.2 0 26.1\nv 78.6 0.9 26.1\nv 79.2 1.7 26.1\nv 80 2.3 26.1\nv 80.9 2.6 26.1\nv 81.9 2.8 26.1\nv 82.9 2.6 26.1\nv 83.8 2.3 26.1\nv 83.8 2.3 25.3\nv 82.9 2.6 25.3\nv 81.9 2.8 25.3\nv 80.9 2.6 25.3\nv 80 2.3 25.3\nv 79.2 1.7 25.3\nv 78.6 0.9 25.3\nv 78.2 0 25.3\nv 78.1 -1 25.3\nv 78.2 -2 25.3\nv 78.6 -2.9 25.3\nv 79.2 -3.7 25.3\nv 80 -4.3 25.3\nv 80.9 -4.7 25.3\nv 81.9 -4.8 25.3\nv 82.9 -4.7 25.3\nv 83.8 -4.3 25.3\nv 84.6 -3.7 25.3\nv 85.2 -2.9 25.3\nv 85.5 -2 25.3\nv 85.7 -1 25.3\nv 85.5 0 25.3\nv 85.2 0.9 25.3\nv 84.6 1.7 25.3\nv 82.5 0.1 25.3\nv 82.2 0.2 25.3\nv 81.9 0.2 25.3\nv 81.6 0.2 25.3\nv 81.3 0.1 25.3\nv 81 -0.1 25.3\nv 80.8 -0.4 25.3\nv 80.7 -0.7 25.3\nv 80.6 -1 25.3\nv 80.7 -1.3 25.3\nv 80.8 -1.6 25.3\nv 81 -1.9 25.3\nv 81.3 -2.1 25.3\nv 81.6 -2.2 25.3\nv 81.9 -2.3 25.3\nv 82.2 -2.2 25.3\nv 82.5 -2.1 25.3\nv 82.8 -1.9 25.3\nv 83 -1.6 25.3\nv 83.1 -1.3 25.3\nv 83.1 -1 25.3\nv 83.1 -0.7 25.3\nv 83 -0.4 25.3\nv 82.8 -0.1 25.3\nv -0.5 18.1 24.2\nv 0.3 18.1 25.6\nv -0.5 18.1 27.1\nv -2.2 18.1 27.1\nv -3.1 18.1 25.6\nv -2.2 18.1 24.2\nv -0.5 22.2 24.2\nv 0.3 22.2 25.6\nv -0.5 22.2 27.1\nv -2.2 22.2 27.1\nv -3.1 22.2 25.6\nv -2.2 22.2 24.2\nv 0.3 23.4 25.6\nv -0.5 23.4 24.2\nv -0.5 23.4 27.1\nv -2.2 23.4 27.1\nv -3.1 23.4 25.6\nv -2.2 23.4 24.2\nv -0.3 23.9 25.6\nv -0.9 23.9 24.7\nv -0.9 23.9 26.6\nv -1.9 23.9 26.6\nv -2.5 23.9 25.6\nv -1.9 23.9 24.7\nv -3.1 22.2 25.6\nv -3.1 23.4 25.6\nv -2.2 23.4 27.1\nv -2.2 22.2 27.1\nv -2.2 22.2 27.1\nv -3.1 22.2 25.6\nv -2.2 23.4 27.1\nv -3.1 23.4 25.6\nv -3.1 23.4 25.6\nv -3.1 22.2 25.6\nv -2.2 23.4 27.1\nv -2.2 22.2 27.1\nv -3.1 22.2 25.6\nv -2.2 22.2 27.1\nv -2.2 23.4 27.1\nv -3.1 23.4 25.6\nv -7.1 22.2 27.9\nv -7.1 23.4 27.9\nv -6.2 23.4 29.4\nv -6.2 22.2 29.4\nv -0.5 23.4 24.2\nv -2.2 23.4 24.2\nv -2.2 22.2 24.2\nv -0.5 22.2 24.2\nv -0.5 22.2 19.6\nv -2.2 22.2 19.6\nv -0.5 23.4 19.6\nv -2.2 23.4 19.6\nv 3.4 22.2 29.4\nv 3.4 23.4 29.4\nv 4.3 23.4 27.9\nv 4.3 22.2 27.9\nv -6.1 22.7 29.3\nv -6.9 22.7 27.9\nv -100 22.7 81.3\nv -97.7 22.7 85.3\nv -28.3 22.7 40.2\nv -26.2 22.7 43.8\nv -31.4 22.7 50.3\nv -96.4 22.7 87.6\nv -97.7 22.9 85.3\nv -96.4 22.9 87.6\nv -31.4 22.9 50.3\nv -26.2 22.9 43.8\nv -6.1 22.9 29.3\nv -100 22.9 81.3\nv -28.3 22.9 40.2\nv -6.9 22.9 27.9\nv 4.1 22.7 27.9\nv 3.3 22.7 29.3\nv 96.4 22.7 82.8\nv 98.7 22.7 78.8\nv 24.7 22.7 41.6\nv 26.8 22.7 37.9\nv 35 22.7 39.2\nv 100 22.7 76.5\nv 98.7 22.9 78.8\nv 100 22.9 76.5\nv 35 22.9 39.2\nv 26.8 22.9 37.9\nv 4.1 22.9 27.9\nv 96.4 22.9 82.8\nv 24.7 22.9 41.6\nv 3.3 22.9 29.3\nv -2.2 22.9 19.7\nv -0.6 22.9 19.7\nv -0.5 22.9 -87.6\nv -5.1 22.9 -87.6\nv -0.5 22.9 -4.9\nv -4.8 22.9 -5\nv -7.8 22.9 -12.7\nv -7.7 22.9 -87.6\nv -5.1 22.7 -87.6\nv -7.7 22.7 -87.6\nv -7.8 22.7 -12.7\nv -4.8 22.7 -5\nv -2.2 22.7 19.7\nv -0.5 22.7 -87.6\nv -0.5 22.7 -4.9\nv -0.6 22.7 19.7\nv 4.9 14.5 25.6\nv 4.9 15.1 27\nv 4.9 16.6 27.6\nv 4.9 18.1 27\nv 4.9 18.7 25.6\nv 9.1 13.7 25.6\nv 9.1 14.5 27.6\nv 9.1 16.6 28.5\nv 9.1 18.7 27.6\nv 9.1 19.6 25.6\nv 14.4 14.2 25.6\nv 14.4 14.9 27.2\nv 14.4 16.6 27.9\nv 14.4 18.3 27.2\nv 14.4 19 25.6\nv 14.4 15 25.6\nv 14.4 15.5 26.7\nv 14.4 16.6 27.1\nv 14.4 17.8 26.7\nv 14.4 18.2 25.6\nv 15.5 15 25.6\nv 15.5 15.5 26.7\nv 15.5 16.6 27.1\nv 15.5 17.8 26.7\nv 15.5 18.2 25.6\nv 15.5 15.5 25.6\nv 15.5 15.9 26.3\nv 15.5 16.6 26.6\nv 15.5 17.4 26.3\nv 15.5 17.7 25.6\nv 16.8 15.5 25.6\nv 16.8 15.9 26.3\nv 16.8 16.6 26.6\nv 16.8 17.4 26.3\nv 16.8 17.7 25.6\nv 22.4 15.5 25.6\nv 22.4 15.9 26.6\nv 22.4 17 27.1\nv 22.4 18.1 26.6\nv 22.4 18.5 25.6\nv 22.4 16 25.6\nv 22.4 16.3 26.3\nv 22.4 17 26.6\nv 22.4 17.7 26.3\nv 22.4 18.1 25.6\nv 16.4 15.9 25.6\nv 16.4 16.1 26\nv 16.4 16.6 26.2\nv 16.4 17.1 26\nv 16.4 17.3 25.6\nv 4.4 14.9 25.6\nv 4.4 15.4 27\nv 4.4 16.6 27.5\nv 4.4 17.9 27\nv 4.4 18.4 25.6\nv 2.1 14.9 25.6\nv 2.1 15.4 27.6\nv 2.1 16.6 28.1\nv 2.1 17.9 27.6\nv 2.1 18.4 25.6\nv 1.9 14.7 25.6\nv 1.9 15.3 28.4\nv 1.9 16.6 28.2\nv 1.9 18 27.6\nv 1.9 18.5 25.6\nv 1 15 28.5\nv 1 16.6 28.4\nv 1 18.2 28.1\nv 1 18.9 25.6\nv -8 15 28.6\nv -7.4 16.6 28.4\nv -6.5 18.2 28.1\nv -6.3 18.9 25.6\nv 1 12.9 25.6\nv -8.5 12.9 25.6\nv -8.5 12.9 28.6\nv 1 12.9 28.5\nv 1.9 12.6 25.6\nv 1.9 12.9 28.4\nv -7.9 15.2 28\nv -7.5 16.5 27.9\nv -6.8 17.7 27.7\nv -6.5 18.2 25.6\nv -8.3 13.5 25.6\nv -8.2 14.1 28\nv -1.4 15.2 28\nv -0.9 16.5 27.9\nv -0.5 17.7 27.7\nv -0.3 18.2 25.6\nv -1.8 14.1 28\nv -2 13.5 25.6\nv -1.4 15.2 25.6\nv -0.9 16.5 25.6\nv 7.5 10.9 27.8\nv 10.7 11.1 27.6\nv 10.7 10.7 25.6\nv 7.5 10.3 25.6\nv 5 11.2 26.5\nv 5 10.9 25.6\nv 0.5 18.3 27.7\nv 0.5 18.8 25.6\nv -3.5 18.3 27.7\nv -3.3 18.8 25.6\nv 0.5 18.3 25.6\nv 0.5 17.8 27.7\nv -3.5 17.8 27.7\nv -3.3 18.3 25.6\nv -18.1 -22.3 39.7\nv -18.1 -22.3 11.6\nv -18.1 -22.9 40.3\nv -18.1 -22.9 11\nv -18.1 -23.7 40\nv -18.1 -23.7 11.3\nv -18.1 -23.9 39.2\nv -18.1 -23.9 12.1\nv -18.1 -23.3 38.6\nv -18.1 -23.3 12.7\nv -18.1 -22.5 38.9\nv -18.1 -22.5 12.4\nv 18.7 -22.3 39.7\nv 18.7 -22.3 11.6\nv 18.7 -22.9 40.3\nv 18.7 -22.9 11\nv 18.7 -23.7 40\nv 18.7 -23.7 11.3\nv 18.7 -23.9 39.2\nv 18.7 -23.9 12.1\nv 18.7 -23.3 38.6\nv 18.7 -23.3 12.7\nv 18.7 -22.5 38.9\nv 18.7 -22.5 12.4\nv -19.5 -22 39.7\nv -19.5 -22 11.6\nv -19.7 -22.6 40.3\nv -19.7 -22.6 11\nv -19.9 -23.4 40\nv -19.9 -23.4 11.3\nv -19.9 -23.6 39.2\nv -19.9 -23.6 12.1\nv -19.8 -23 38.6\nv -19.8 -23 12.7\nv -19.5 -22.2 38.9\nv -19.5 -22.2 12.4\nv -21.1 -22.1 40.3\nv -21.1 -22.1 11\nv -20.8 -21.6 39.7\nv -20.8 -21.6 11.6\nv -21.6 -22.8 40\nv -21.6 -22.8 11.3\nv -21.7 -22.9 39.2\nv -21.7 -22.9 12.1\nv -21.3 -22.4 38.6\nv -21.3 -22.4 12.7\nv -20.9 -21.7 38.9\nv -20.9 -21.7 12.4\nv -23.6 -20.5 40.4\nv -23.6 -20.5 10.9\nv -22.9 -20.2 39.7\nv -22.9 -20.2 11.6\nv -24.5 -20.8 40.1\nv -24.5 -20.8 11.2\nv -24.7 -20.9 39.1\nv -24.7 -20.9 12.2\nv -24 -20.6 38.4\nv -24 -20.6 12.8\nv -23.1 -20.3 38.8\nv -23.1 -20.3 12.5\nv 20.1 -22.3 39.7\nv 20.1 -22.3 11.6\nv 20.3 -22.9 40.3\nv 20.3 -22.9 11\nv 20.5 -23.7 40\nv 20.5 -23.7 11.3\nv 20.5 -23.9 39.2\nv 20.5 -23.9 12.1\nv 20.4 -23.3 38.6\nv 20.4 -23.3 12.7\nv 20.2 -22.5 38.9\nv 20.2 -22.5 12.4\nv 22 -21.3 39.7\nv 22 -21.3 11.6\nv 22.4 -21.8 40.3\nv 22.4 -21.8 11\nv 22.9 -22.4 40\nv 22.9 -22.4 11.3\nv 23 -22.6 39.2\nv 23 -22.6 12.1\nv 22.6 -22.1 38.6\nv 22.6 -22.1 12.7\nv 22.1 -21.5 38.9\nv 22.1 -21.5 12.4\nv 13.7 -22.9 40.2\nv 13.7 -22.9 11.1\nv 14.2 -23.1 39.4\nv 14.2 -23.1 11.9\nv 13.7 -23.2 38.6\nv 13.7 -23.2 12.7\nv 12.7 -23.2 38.6\nv 12.7 -23.2 12.7\nv 12.2 -23.1 39.4\nv 12.2 -23.1 11.9\nv 12.7 -22.9 40.2\nv 12.7 -22.9 11.1\nv 13.7 -19 39.4\nv 13.7 -19 11.9\nv 14.2 -19.3 38.6\nv 14.2 -19.3 12.7\nv 13.7 -19.6 37.8\nv 13.7 -19.6 13.4\nv 12.7 -19.6 37.8\nv 12.7 -19.6 13.4\nv 12.2 -19.3 38.6\nv 12.2 -19.3 12.7\nv 12.7 -19 39.4\nv 12.7 -19 11.9\nv 13.7 -17.2 39\nv 13.7 -17.2 12.3\nv 14.2 -17.7 38.3\nv 14.2 -17.7 13\nv 13.7 -18.3 37.6\nv 13.7 -18.3 13.7\nv 12.7 -18.3 37.6\nv 12.7 -18.3 13.7\nv 12.2 -17.7 38.3\nv 12.2 -17.7 13\nv 12.7 -17.2 39\nv 12.7 -17.2 12.3\nv 13.7 -16 37.3\nv 13.7 -16 14\nv 14.2 -16.9 37\nv 14.2 -16.9 14.2\nv 13.7 -17.7 36.8\nv 13.7 -17.7 14.5\nv 12.7 -17.7 36.8\nv 12.7 -17.7 14.5\nv 12.2 -16.9 37\nv 12.2 -16.9 14.2\nv 12.7 -16 37.3\nv 12.7 -16 14\nv 14.2 -16.1 34.1\nv 14.2 -16.1 17.2\nv 13.7 -15.3 34.4\nv 13.7 -15.3 16.9\nv 13.7 -16.9 33.9\nv 13.7 -16.9 17.4\nv 12.7 -16.9 33.9\nv 12.7 -16.9 17.4\nv 12.2 -16.1 34.1\nv 12.2 -16.1 17.2\nv 12.7 -15.3 34.4\nv 12.7 -15.3 16.9\nv 14.2 -16.1 28.7\nv 14.2 -16.1 22.6\nv 13.7 -15.3 28.7\nv 13.7 -15.3 22.6\nv 13.7 -16.9 28.7\nv 13.7 -16.9 22.6\nv 12.7 -16.9 28.7\nv 12.7 -16.9 22.6\nv 12.2 -16.1 28.7\nv 12.2 -16.1 22.6\nv 12.7 -15.3 28.7\nv 12.7 -15.3 22.6\nv -5.4 -22.9 40.2\nv -5.4 -22.9 11.1\nv -4.9 -23.1 39.4\nv -4.9 -23.1 11.9\nv -5.4 -23.2 38.6\nv -5.4 -23.2 12.7\nv -6.4 -23.2 38.6\nv -6.4 -23.2 12.7\nv -6.8 -23.1 39.4\nv -6.8 -23.1 11.9\nv -6.4 -22.9 40.2\nv -6.4 -22.9 11.1\nv -5.4 -19 39.4\nv -5.4 -19 11.9\nv -4.9 -19.3 38.6\nv -4.9 -19.3 12.7\nv -5.4 -19.6 37.8\nv -5.4 -19.6 13.4\nv -6.4 -19.6 37.8\nv -6.4 -19.6 13.4\nv -6.8 -19.3 38.6\nv -6.8 -19.3 12.7\nv -6.4 -19 39.4\nv -6.4 -19 11.9\nv -5.4 -17.2 39\nv -5.4 -17.2 12.3\nv -4.9 -17.7 38.3\nv -4.9 -17.7 13\nv -5.4 -18.3 37.6\nv -5.4 -18.3 13.7\nv -6.4 -18.3 37.6\nv -6.4 -18.3 13.7\nv -6.9 -17.7 38.3\nv -6.9 -17.7 13\nv -6.4 -17.2 39\nv -6.4 -17.2 12.3\nv -5.4 -16 37.3\nv -5.4 -16 14\nv -4.9 -16.9 37\nv -4.9 -16.9 14.2\nv -5.4 -17.7 36.8\nv -5.4 -17.7 14.5\nv -6.4 -17.7 36.8\nv -6.4 -17.7 14.5\nv -6.9 -16.9 37\nv -6.9 -16.9 14.2\nv -6.4 -16 37.3\nv -6.4 -16 14\nv -4.9 -16.1 34.1\nv -4.9 -16.1 17.2\nv -5.4 -15.3 34.4\nv -5.4 -15.3 16.9\nv -5.4 -16.9 33.9\nv -5.4 -16.9 17.4\nv -6.4 -16.9 33.9\nv -6.4 -16.9 17.4\nv -6.8 -16.1 34.1\nv -6.8 -16.1 17.2\nv -6.4 -15.3 34.4\nv -6.4 -15.3 16.9\nv -4.9 -16.1 28.7\nv -4.9 -16.1 22.6\nv -5.4 -15.3 28.7\nv -5.4 -15.3 22.6\nv -5.4 -16.9 28.7\nv -5.4 -16.9 22.6\nv -6.4 -16.9 28.7\nv -6.4 -16.9 22.6\nv -6.8 -16.1 28.7\nv -6.8 -16.1 22.6\nv -6.4 -15.3 28.7\nv -6.4 -15.3 22.6\nusemtl rgb(204,204,204)\nf 1 3 19 17\nf 20 4 2 18\nf 3 5 21 19\nf 22 6 4 20\nf 7 23 21 5\nf 22 24 8 6\nf 9 25 23 7\nf 24 26 10 8\nf 11 27 25 9\nf 26 28 12 10\nf 11 13 29 27\nf 30 14 12 28\nf 15 1 17 31\nf 18 2 16 32\nf 17 19 35 33\nf 36 20 18 34\nf 19 21 37 35\nf 38 22 20 36\nf 23 39 37 21\nf 38 40 24 22\nf 25 41 39 23\nf 40 42 26 24\nf 27 43 41 25\nf 42 44 28 26\nf 27 29 45 43\nf 46 30 28 44\nf 31 17 33 47\nf 34 18 32 48\nf 47 33 51 49\nf 52 34 48 50\nf 33 53 65 51\nf 66 54 34 52\nf 33 35 55 53\nf 56 36 34 54\nf 49 51 70 69\nf 70 52 50 69\nf 53 55 72 71\nf 72 56 54 71\nf 59 74 75 61\nf 75 74 60 62\nf 63 76 74 59\nf 74 76 64 60\nf 51 65 77 70\nf 77 66 52 70\nf 65 53 71 77\nf 71 54 66 77\nf 57 67 78 73\nf 78 68 58 73\nf 67 61 75 78\nf 75 62 68 78\nf 79 81 93 91\nf 94 82 80 92\nf 83 95 93 81\nf 94 96 84 82\nf 83 85 97 95\nf 98 86 84 96\nf 87 99 97 85\nf 98 100 88 86\nf 87 89 101 99\nf 102 90 88 100\nf 91 93 105 103\nf 106 94 92 104\nf 95 107 105 93\nf 106 108 96 94\nf 95 97 109 107\nf 110 98 96 108\nf 99 111 109 97\nf 110 112 100 98\nf 99 101 113 111\nf 114 102 100 112\nf 103 105 117 115\nf 118 106 104 116\nf 107 119 117 105\nf 118 120 108 106\nf 107 109 121 119\nf 122 110 108 120\nf 111 123 121 109\nf 122 124 112 110\nf 111 113 125 123\nf 126 114 112 124\nf 115 117 129 127\nf 130 118 116 128\nf 119 131 129 117\nf 130 132 120 118\nf 119 121 133 131\nf 134 122 120 132\nf 123 135 133 121\nf 134 136 124 122\nf 123 125 137 135\nf 138 126 124 136\nf 127 129 141 139\nf 142 130 128 140\nf 131 143 141 129\nf 142 144 132 130\nf 131 133 145 143\nf 146 134 132 144\nf 135 137 147 301\nf 148 138 136 302\nf 139 141 151 149\nf 152 142 140 150\nf 143 153 151 141\nf 152 154 144 142\nf 143 145 155 153\nf 156 146 144 154\nf 301 157 155 145\nf 156 158 302 146\nf 301 147 159 157\nf 160 148 302 158\nf 161 163 175 173\nf 176 164 162 174\nf 165 177 175 163\nf 176 178 166 164\nf 165 167 179 177\nf 180 168 166 178\nf 169 181 179 167\nf 180 182 170 168\nf 169 171 183 181\nf 184 172 170 182\nf 173 175 187 185\nf 188 176 174 186\nf 177 189 187 175\nf 188 190 178 176\nf 177 179 191 189\nf 192 180 178 190\nf 181 193 191 179\nf 192 194 182 180\nf 181 183 195 193\nf 196 184 182 194\nf 185 187 197\nf 197 188 186\nf 189 197 187\nf 188 197 190\nf 189 191 197\nf 197 192 190\nf 193 197 191\nf 192 197 194\nf 193 195 197\nf 197 196 194\nf 81 79 200 202\nf 201 80 82 203\nf 83 81 202 206\nf 203 82 84 207\nf 85 83 206 214\nf 207 84 86 215\nf 87 85 214 204\nf 215 86 88 205\nf 89 87 204 198\nf 205 88 90 199\nf 69 226 198 49\nf 199 226 69 50\nf 49 198 204 47\nf 205 199 50 48\nf 43 45 206 202\nf 207 46 44 203\nf 15 31 210 208\nf 211 32 16 209\nf 208 210 29 13\nf 30 211 209 14\nf 31 47 212 210\nf 213 48 32 211\nf 210 212 45 29\nf 46 213 211 30\nf 47 204 214 212\nf 215 205 48 213\nf 212 214 206 45\nf 207 215 213 46\nf 217 101 89 216\nf 90 102 217 216\nf 218 113 101 217\nf 102 114 218 217\nf 219 125 113 218\nf 114 126 219 218\nf 220 137 125 219\nf 126 138 220 219\nf 221 147 137 220\nf 138 148 221 220\nf 222 159 147 221\nf 148 160 222 221\nf 224 183 171 223\nf 172 184 224 223\nf 225 195 183 224\nf 184 196 225 224\nf 195 225 197\nf 197 225 196\nf 216 89 198 226\nf 199 90 216 226\nf 227 79 91 228\nf 92 80 227 228\nf 228 91 103 229\nf 104 92 228 229\nf 229 103 115 230\nf 116 104 229 230\nf 230 115 127 231\nf 128 116 230 231\nf 231 127 139 232\nf 140 128 231 232\nf 232 139 149 233\nf 150 140 232 233\nf 234 161 173 235\nf 174 162 234 235\nf 235 173 185 236\nf 186 174 235 236\nf 236 185 197\nf 197 186 236\nf 79 227 237 200\nf 237 227 80 201\nf 39 242 240 37\nf 241 243 40 38\nf 242 59 61 240\nf 62 60 243 241\nf 41 244 242 39\nf 243 245 42 40\nf 244 63 59 242\nf 60 64 245 243\nf 57 238 246 67\nf 247 239 58 68\nf 238 55 35 246\nf 36 56 239 247\nf 37 240 246 35\nf 247 241 38 36\nf 240 61 67 246\nf 68 62 241 247\nf 55 238 248 72\nf 248 239 56 72\nf 238 57 73 248\nf 73 58 239 248\nf 249 76 63 244\nf 64 76 249 245\nf 249 244 250 252\nf 251 245 249 252\nf 244 41 254 250\nf 255 42 245 251\nf 200 237 257 258\nf 257 237 201 259\nf 202 200 258 260\nf 259 201 203 261\nf 43 202 260 262\nf 261 203 44 263\nf 41 43 262 254\nf 263 44 42 255\nf 253 252 250 254\nf 251 252 253 255\nf 256 258 257\nf 257 259 256\nf 256 262 260 258\nf 261 263 256 259\nf 262 256 253 254\nf 253 256 263 255\nf 151 266 264 149\nf 265 267 152 150\nf 266 163 161 264\nf 162 164 267 265\nf 153 268 266 151\nf 267 269 154 152\nf 268 165 163 266\nf 164 166 269 267\nf 155 270 268 153\nf 269 271 156 154\nf 270 167 165 268\nf 166 168 271 269\nf 149 264 272 233\nf 272 265 150 233\nf 264 161 234 272\nf 234 162 265 272\nf 3 1 273 274\nf 273 2 4 274\nf 5 3 274 275\nf 274 4 6 275\nf 7 5 275 276\nf 275 6 8 276\nf 9 7 276 277\nf 276 8 10 277\nf 11 9 277 278\nf 277 10 12 278\nf 13 11 278 279\nf 278 12 14 279\nf 1 15 280 273\nf 280 16 2 273\nf 208 13 279 281\nf 279 14 209 281\nf 15 208 281 280\nf 281 209 16 280\nf 167 270 169\nf 170 271 168\nf 169 270 284 282\nf 285 271 170 283\nf 270 155 289 284\nf 290 156 271 285\nf 223 171 291 286\nf 292 172 223 286\nf 159 222 288 293\nf 288 222 160 294\nf 171 169 282 291\nf 283 170 172 292\nf 157 159 293 295\nf 294 160 158 296\nf 155 157 295 289\nf 296 158 156 290\nusemtl rgba(80,80,120,0.3)\nf 282 284 297\nf 298 285 283\nf 299 293 288 287\nf 288 294 300 287\nf 291 299 287 286\nf 287 300 292 286\nf 299 291 282 297\nf 283 292 300 298\nf 293 299 297 295\nf 298 300 294 296\nf 295 297 284 289\nf 285 298 296 290\nusemtl rgb(170,170,170)\nf 133 135 305 303\nf 306 136 134 304\nf 145 133 303 307\nf 304 134 146 308\nf 301 145 307 309\nf 308 146 302 310\nf 135 301 309 305\nf 310 302 136 306\nf 303 305 311 313\nf 312 306 304 314\nf 307 303 313 315\nf 314 304 308 316\nf 309 307 315 317\nf 316 308 310 318\nf 305 309 317 311\nf 318 310 306 312\nusemtl rgba(80,80,120,0.3)\nf 311 317 315 313\nf 316 318 312 314\nusemtl rgb(255,0,0)\nf 319 323 324 321\nf 324 323 320 322\nf 321 324 325 327\nf 325 324 322 328\nf 323 319 329 326\nf 330 320 323 326\nf 329 327 325 326\nf 325 328 330 326\nf 329 319 337 331\nf 338 320 330 332\nf 321 327 333 335\nf 334 328 322 336\nf 337 335 333 331\nf 334 336 338 332\nf 335 337 341 339\nf 342 338 336 340\nf 321 335 339 343\nf 340 336 322 344\nf 337 319 345 341\nf 346 320 338 342\nf 319 321 343 345\nf 344 322 320 346\nf 345 343 339 341\nf 340 344 346 342\nf 333 327 347 349\nf 348 328 334 350\nf 331 333 349 351\nf 350 334 332 352\nf 329 331 351 353\nf 352 332 330 354\nf 327 329 353 347\nf 354 330 328 348\nf 347 353 351 349\nf 352 354 348 350\nusemtl rgb(0,0,0)\nf 356 355 379\nf 357 355 356\nf 358 355 357\nf 359 355 358\nf 360 355 359\nf 361 355 360\nf 362 355 361\nf 363 355 362\nf 364 355 363\nf 365 355 364\nf 366 355 365\nf 367 355 366\nf 368 355 367\nf 369 355 368\nf 370 355 369\nf 371 355 370\nf 372 355 371\nf 373 355 372\nf 374 355 373\nf 375 355 374\nf 376 355 375\nf 377 355 376\nf 378 355 377\nf 379 355 378\nf 427 404 356 379\nf 404 405 357 356\nf 406 358 357 405\nf 406 407 359 358\nf 408 360 359 407\nf 408 409 361 360\nf 410 362 361 409\nf 410 411 363 362\nf 412 364 363 411\nf 412 413 365 364\nf 414 366 365 413\nf 414 415 367 366\nf 416 368 367 415\nf 416 417 369 368\nf 418 370 369 417\nf 418 419 371 370\nf 420 372 371 419\nf 420 421 373 372\nf 422 374 373 421\nf 422 423 375 374\nf 424 376 375 423\nf 424 425 377 376\nf 426 378 377 425\nf 379 378 426 427\nf 425 382 381 426\nf 423 384 383 424\nf 421 386 385 422\nf 419 388 387 420\nf 417 390 389 418\nf 415 392 391 416\nf 413 394 393 414\nf 411 396 395 412\nf 409 398 397 410\nf 407 400 399 408\nf 405 402 401 406\nf 380 403 404 427\nf 396 411 410 397\nf 398 409 408 399\nf 394 413 412 395\nf 392 415 414 393\nf 400 407 406 401\nf 402 405 404 403\nf 380 427 426 381\nf 382 425 424 383\nf 384 423 422 385\nf 386 421 420 387\nf 388 419 418 389\nf 390 417 416 391\nf 452 428 429 453\nf 431 455 454 430\nf 433 457 456 432\nf 435 459 458 434\nf 437 461 460 436\nf 439 463 462 438\nf 441 465 464 440\nf 443 467 466 442\nf 445 469 468 444\nf 447 471 470 446\nf 449 473 472 448\nf 451 475 474 450\nf 451 500 476 475\nf 475 476 477 474\nf 474 477 501 450\nf 449 502 478 473\nf 473 478 479 472\nf 472 479 503 448\nf 447 504 480 471\nf 471 480 481 470\nf 470 481 505 446\nf 445 506 482 469\nf 469 482 483 468\nf 468 483 507 444\nf 443 508 484 467\nf 467 484 485 466\nf 466 485 509 442\nf 441 510 486 465\nf 465 486 487 464\nf 464 487 511 440\nf 439 512 488 463\nf 463 488 489 462\nf 462 489 513 438\nf 437 514 490 461\nf 461 490 491 460\nf 460 491 515 436\nf 435 516 492 459\nf 459 492 493 458\nf 458 493 517 434\nf 433 518 494 457\nf 457 494 495 456\nf 456 495 519 432\nf 431 520 496 455\nf 455 496 497 454\nf 454 497 521 430\nf 429 522 498 453\nf 453 498 499 452\nf 523 428 452 499\nf 450 501 500 451\nf 448 503 502 449\nf 446 505 504 447\nf 444 507 506 445\nf 442 509 508 443\nf 440 511 510 441\nf 438 513 512 439\nf 436 515 514 437\nf 434 517 516 435\nf 432 519 518 433\nf 430 521 520 431\nf 428 523 522 429\nf 499 498 522 523\nf 497 496 520 521\nf 495 494 518 519\nf 493 492 516 517\nf 491 490 514 515\nf 489 488 512 513\nf 487 486 510 511\nf 485 484 508 509\nf 483 482 506 507\nf 481 480 504 505\nf 479 478 502 503\nf 477 476 500 501\nf 525 524 530 531\nf 526 525 531 532\nf 527 526 532 533\nf 528 527 533 534\nf 529 528 534 535\nf 529 524 530 535\nf 531 530 537 536\nf 533 532 538 539\nf 535 534 540 541\nf 536 537 543 542\nf 538 536 542 544\nf 539 538 544 545\nf 540 539 545 546\nf 541 540 546 547\nf 541 537 543 547\nf 542 546 545 544\nf 543 547 546 542\nf 540 534 548 549\nf 539 540 549 550\nf 533 539 550 551\nf 534 533 551 548\nf 548 551 552 553\nf 551 550 554 552\nf 550 549 555 554\nf 549 548 553 555\nf 555 553 557 556\nf 554 555 556 558\nf 552 554 558 559\nf 553 552 559 557\nf 557 559 561 560\nf 559 558 562 561\nf 558 556 563 562\nf 556 557 560 563\nf 563 560 564 565\nf 562 563 565 566\nf 561 562 566 567\nf 560 561 567 564\nf 564 567 566 565\nf 537 541 569 568\nf 541 535 570 569\nf 530 537 568 571\nf 535 530 571 570\nf 570 571 572 573\nf 571 568 574 572\nf 569 570 573 575\nf 568 569 575 574\nf 573 572 574 575\nf 538 532 576 577\nf 536 538 577 578\nf 531 536 578 579\nf 532 531 579 576\nf 576 579 578 577\nf 580 585 584 581\nf 585 583 582 584\nf 583 585 586 587\nf 583 587 589 588\nf 587 586 590 589\nf 586 585 591 590\nf 585 580 592 591\nf 584 582 593 594\nf 581 584 594 595\nf 582 583 588 593\nf 580 581 595 592\nf 589 590 591 588\nf 594 593 588 591\nf 595 594 591 592\nf 596 601 600 597\nf 601 599 598 600\nf 599 601 602 603\nf 599 603 605 604\nf 603 602 606 605\nf 602 601 607 606\nf 601 596 608 607\nf 600 598 609 610\nf 597 600 610 611\nf 598 599 604 609\nf 596 597 611 608\nf 605 606 607 604\nf 610 609 604 607\nf 611 610 607 608\nf 612 617 616 613\nf 617 615 614 616\nf 615 617 618 619\nf 615 619 621 620\nf 619 618 622 621\nf 618 617 623 622\nf 617 612 624 623\nf 616 614 625 626\nf 613 616 626 627\nf 614 615 620 625\nf 612 613 627 624\nf 621 622 623 620\nf 626 625 620 623\nf 627 626 623 624\nf 630 629 634 635\nf 631 630 635 636\nf 632 631 636 637\nf 635 634 639 640\nf 636 635 640 641\nf 637 636 641 642\nf 639 638 643 644\nf 640 639 644 645\nf 641 640 645 646\nf 642 641 646 647\nf 644 643 648 649\nf 645 644 649 650\nf 646 645 650 651\nf 647 646 651 652\nf 649 648 653 654\nf 650 649 654 655\nf 651 650 655 656\nf 652 651 656 657\nf 654 653 658 659\nf 655 654 659 660\nf 656 655 660 661\nf 657 656 661 662\nf 659 658 663 664\nf 660 659 664 665\nf 661 660 665 666\nf 662 661 666 667\nf 664 663 668 669\nf 665 664 669 670\nf 666 665 670 671\nf 667 666 671 672\nf 669 668 673 674\nf 670 669 674 675\nf 671 670 675 676\nf 672 671 676 677\nf 628 629 679 678\nf 629 630 680 679\nf 630 631 681 680\nf 631 632 682 681\nf 678 679 684 683\nf 679 680 685 684\nf 680 681 686 685\nf 681 682 687 686\nf 683 684 689 688\nf 684 685 690 689\nf 685 686 691 690\nf 686 687 692 691\nf 689 690 694 693\nf 690 691 695 694\nf 691 692 696 695\nf 693 694 698 697\nf 694 695 699 698\nf 693 697 703 704\nf 689 693 704 706\nf 688 689 706 705\nf 701 704 703 702\nf 705 706 704 701\nf 697 698 708 707\nf 698 699 709 708\nf 699 700 710 709\nf 702 703 712 711\nf 703 697 707 712\nf 707 708 714 713\nf 708 709 715 714\nf 709 710 716 715\nf 711 712 717 718\nf 712 707 713 717\nf 713 714 720 719\nf 713 719 718 717\nf 714 715 716 720\nf 639 634 721 722\nf 638 639 722 723\nf 633 638 723 724\nf 634 629 725 721\nf 628 633 724 726\nf 629 628 726 725\nf 721 724 723 722\nf 725 726 724 721\nf 695 696 728 727\nf 699 695 727 729\nf 700 699 729 730\nf 727 728 731 732\nf 729 727 732 733\nf 730 729 733 734\nf 731 734 733 732\nusemtl rgb(255,255,0)\nf 747 735 737 749\nf 738 736 748 750\nf 739 751 749 737\nf 750 752 740 738\nf 741 753 751 739\nf 752 754 742 740\nf 743 755 753 741\nf 754 756 744 742\nf 745 757 755 743\nf 756 758 746 744\nf 745 735 747 757\nf 748 736 746 758\nf 735 759 761 737\nf 762 760 736 738\nf 737 761 763 739\nf 764 762 738 740\nf 739 763 765 741\nf 766 764 740 742\nf 741 765 767 743\nf 768 766 742 744\nf 743 767 769 745\nf 770 768 744 746\nf 735 745 769 759\nf 770 746 736 760\nf 759 773 771 761\nf 772 774 760 762\nf 761 771 775 763\nf 776 772 762 764\nf 763 775 777 765\nf 778 776 764 766\nf 765 777 779 767\nf 780 778 766 768\nf 767 779 781 769\nf 782 780 768 770\nf 759 769 781 773\nf 782 770 760 774\nf 773 785 783 771\nf 784 786 774 772\nf 771 783 787 775\nf 788 784 772 776\nf 775 787 789 777\nf 790 788 776 778\nf 777 789 791 779\nf 792 790 778 780\nf 779 791 793 781\nf 794 792 780 782\nf 773 781 793 785\nf 794 782 774 786\nf 785 793 791 789\nf 792 794 786 790\nf 783 785 789 787\nf 790 786 784 788\nf 749 797 795 747\nf 796 798 750 748\nf 751 799 797 749\nf 798 800 752 750\nf 753 801 799 751\nf 800 802 754 752\nf 755 803 801 753\nf 802 804 756 754\nf 757 805 803 755\nf 804 806 758 756\nf 757 747 795 805\nf 796 748 758 806\nf 797 809 807 795\nf 808 810 798 796\nf 799 811 809 797\nf 810 812 800 798\nf 801 813 811 799\nf 812 814 802 800\nf 803 815 813 801\nf 814 816 804 802\nf 805 817 815 803\nf 816 818 806 804\nf 805 795 807 817\nf 808 796 806 818\nf 807 809 811 813\nf 812 810 808 814\nf 815 817 807 813\nf 808 818 816 814\nf 831 819 821 833\nf 822 820 832 834\nf 823 835 833 821\nf 834 836 824 822\nf 825 837 835 823\nf 836 838 826 824\nf 827 839 837 825\nf 838 840 828 826\nf 829 841 839 827\nf 840 842 830 828\nf 829 819 831 841\nf 832 820 830 842\nf 833 845 843 831\nf 844 846 834 832\nf 835 847 845 833\nf 846 848 836 834\nf 837 849 847 835\nf 848 850 838 836\nf 839 851 849 837\nf 850 852 840 838\nf 841 853 851 839\nf 852 854 842 840\nf 841 831 843 853\nf 844 832 842 854\nf 845 857 855 843\nf 856 858 846 844\nf 847 859 857 845\nf 858 860 848 846\nf 849 861 859 847\nf 860 862 850 848\nf 851 863 861 849\nf 862 864 852 850\nf 853 865 863 851\nf 864 866 854 852\nf 853 843 855 865\nf 856 844 854 866\nf 857 867 869 855\nf 870 868 858 856\nf 859 871 867 857\nf 868 872 860 858\nf 861 873 871 859\nf 872 874 862 860\nf 863 875 873 861\nf 874 876 864 862\nf 865 877 875 863\nf 876 878 866 864\nf 865 855 869 877\nf 870 856 866 878\nf 869 867 879 881\nf 880 868 870 882\nf 867 871 883 879\nf 884 872 868 880\nf 871 873 885 883\nf 886 874 872 884\nf 873 875 887 885\nf 888 876 874 886\nf 875 877 889 887\nf 890 878 876 888\nf 877 869 881 889\nf 882 870 878 890\nf 903 891 893 905\nf 894 892 904 906\nf 895 907 905 893\nf 906 908 896 894\nf 897 909 907 895\nf 908 910 898 896\nf 899 911 909 897\nf 910 912 900 898\nf 901 913 911 899\nf 912 914 902 900\nf 901 891 903 913\nf 904 892 902 914\nf 905 917 915 903\nf 916 918 906 904\nf 907 919 917 905\nf 918 920 908 906\nf 909 921 919 907\nf 920 922 910 908\nf 911 923 921 909\nf 922 924 912 910\nf 913 925 923 911\nf 924 926 914 912\nf 913 903 915 925\nf 916 904 914 926\nf 917 929 927 915\nf 928 930 918 916\nf 919 931 929 917\nf 930 932 920 918\nf 921 933 931 919\nf 932 934 922 920\nf 923 935 933 921\nf 934 936 924 922\nf 925 937 935 923\nf 936 938 926 924\nf 925 915 927 937\nf 928 916 926 938\nf 929 939 941 927\nf 942 940 930 928\nf 931 943 939 929\nf 940 944 932 930\nf 933 945 943 931\nf 944 946 934 932\nf 935 947 945 933\nf 946 948 936 934\nf 937 949 947 935\nf 948 950 938 936\nf 937 927 941 949\nf 942 928 938 950\nf 941 939 951 953\nf 952 940 942 954\nf 939 943 955 951\nf 956 944 940 952\nf 943 945 957 955\nf 958 946 944 956\nf 945 947 959 957\nf 960 948 946 958\nf 947 949 961 959\nf 962 950 948 960\nf 949 941 953 961\nf 954 942 950 962\n#center\nv 0 0 140"
  },
  {
    "path": "test/bgratutorial3d/obj/lampe.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv 0.000000 8.407028 0.000000\nv 0.000000 8.380042 -0.204985\nv 0.053054 8.380042 -0.198000\nv 0.102492 8.380042 -0.177522\nv 0.144946 8.380042 -0.144946\nv 0.177522 8.380042 -0.102492\nv 0.198000 8.380042 -0.053054\nv 0.204985 8.380042 0.000000\nv 0.198000 8.380042 0.053054\nv 0.177522 8.380042 0.102492\nv 0.144946 8.380042 0.144946\nv 0.102493 8.380042 0.177522\nv 0.053054 8.380042 0.198000\nv 0.000000 8.380042 0.204985\nv -0.053054 8.380042 0.198000\nv -0.102492 8.380042 0.177522\nv -0.144946 8.380042 0.144946\nv -0.177522 8.380042 0.102493\nv -0.198000 8.380042 0.053054\nv -0.204985 8.380042 0.000000\nv -0.198000 8.380042 -0.053054\nv -0.177522 8.380042 -0.102492\nv -0.144946 8.380042 -0.144946\nv -0.102493 8.380042 -0.177522\nv -0.053054 8.380042 -0.198000\nv 0.000000 8.300921 -0.396000\nv 0.102492 8.300921 -0.382507\nv 0.198000 8.300921 -0.342946\nv 0.280014 8.300921 -0.280014\nv 0.342946 8.300921 -0.198000\nv 0.382506 8.300921 -0.102493\nv 0.396000 8.300921 0.000000\nv 0.382507 8.300921 0.102492\nv 0.342946 8.300921 0.198000\nv 0.280015 8.300921 0.280014\nv 0.198000 8.300921 0.342946\nv 0.102493 8.300921 0.382506\nv 0.000000 8.300921 0.396000\nv -0.102492 8.300921 0.382507\nv -0.197999 8.300921 0.342946\nv -0.280014 8.300921 0.280015\nv -0.342946 8.300921 0.198000\nv -0.382506 8.300921 0.102493\nv -0.396000 8.300921 0.000000\nv -0.382507 8.300921 -0.102492\nv -0.342946 8.300921 -0.197999\nv -0.280015 8.300921 -0.280014\nv -0.198001 8.300921 -0.342946\nv -0.102493 8.300921 -0.382506\nv 0.000000 8.175057 -0.560028\nv 0.144946 8.175057 -0.540946\nv 0.280014 8.175057 -0.484999\nv 0.396000 8.175057 -0.396000\nv 0.484999 8.175057 -0.280015\nv 0.540946 8.175057 -0.144947\nv 0.560028 8.175057 0.000000\nv 0.540946 8.175057 0.144945\nv 0.484999 8.175057 0.280014\nv 0.396000 8.175057 0.395999\nv 0.280015 8.175057 0.484999\nv 0.144947 8.175057 0.540946\nv 0.000000 8.175057 0.560028\nv -0.144945 8.175057 0.540946\nv -0.280014 8.175057 0.484999\nv -0.395999 8.175057 0.396001\nv -0.484998 8.175057 0.280015\nv -0.540946 8.175057 0.144947\nv -0.560028 8.175057 0.000000\nv -0.540946 8.175057 -0.144945\nv -0.484999 8.175057 -0.280013\nv -0.396001 8.175057 -0.395999\nv -0.280015 8.175057 -0.484998\nv -0.144947 8.175057 -0.540946\nv 0.000000 8.011028 -0.685892\nv 0.177521 8.011028 -0.662521\nv 0.342946 8.011028 -0.594000\nv 0.484999 8.011028 -0.484999\nv 0.594000 8.011028 -0.342947\nv 0.662521 8.011028 -0.177523\nv 0.685892 8.011028 0.000000\nv 0.662521 8.011028 0.177521\nv 0.594000 8.011028 0.342945\nv 0.484999 8.011028 0.484998\nv 0.342947 8.011028 0.594000\nv 0.177523 8.011028 0.662521\nv 0.000000 8.011028 0.685892\nv -0.177521 8.011028 0.662521\nv -0.342945 8.011028 0.594000\nv -0.484998 8.011028 0.485000\nv -0.593999 8.011028 0.342947\nv -0.662521 8.011028 0.177523\nv -0.685892 8.011028 0.000001\nv -0.662521 8.011028 -0.177521\nv -0.594001 8.011028 -0.342945\nv -0.485000 8.011028 -0.484998\nv -0.342947 8.011028 -0.593999\nv -0.177523 8.011028 -0.662521\nv 0.000000 7.820013 -0.765013\nv 0.197999 7.820013 -0.738946\nv 0.382506 7.820013 -0.662521\nv 0.540946 7.820013 -0.540946\nv 0.662521 7.820013 -0.382507\nv 0.738946 7.820013 -0.198001\nv 0.765013 7.820013 0.000000\nv 0.738946 7.820013 0.197999\nv 0.662521 7.820013 0.382506\nv 0.540947 7.820013 0.540945\nv 0.382507 7.820013 0.662520\nv 0.198001 7.820013 0.738946\nv 0.000001 7.820013 0.765013\nv -0.197999 7.820013 0.738946\nv -0.382506 7.820013 0.662521\nv -0.540945 7.820013 0.540947\nv -0.662520 7.820013 0.382508\nv -0.738946 7.820013 0.198001\nv -0.765013 7.820013 0.000001\nv -0.738946 7.820013 -0.197999\nv -0.662522 7.820013 -0.382505\nv -0.540947 7.820013 -0.540945\nv -0.382508 7.820013 -0.662520\nv -0.198001 7.820013 -0.738946\nv 0.000000 7.615029 -0.792000\nv 0.204984 7.615029 -0.765013\nv 0.395999 7.615029 -0.685892\nv 0.560028 7.615029 -0.560029\nv 0.685892 7.615029 -0.396001\nv 0.765013 7.615029 -0.204985\nv 0.792000 7.615029 0.000000\nv 0.765013 7.615029 0.204984\nv 0.685893 7.615029 0.395999\nv 0.560029 7.615029 0.560028\nv 0.396001 7.615029 0.685892\nv 0.204986 7.615029 0.765013\nv 0.000001 7.615029 0.792000\nv -0.204984 7.615029 0.765014\nv -0.395999 7.615029 0.685893\nv -0.560028 7.615029 0.560029\nv -0.685892 7.615029 0.396001\nv -0.765013 7.615029 0.204986\nv -0.792000 7.615029 0.000001\nv -0.765014 7.615029 -0.204983\nv -0.685893 7.615029 -0.395999\nv -0.560030 7.615029 -0.560028\nv -0.396001 7.615029 -0.685891\nv -0.204986 7.615029 -0.765013\nv 0.000000 7.410044 -0.765013\nv 0.198000 7.410044 -0.738946\nv 0.382506 7.410044 -0.662521\nv 0.540946 7.410044 -0.540947\nv 0.662521 7.410044 -0.382507\nv 0.738946 7.410044 -0.198001\nv 0.765013 7.410044 0.000000\nv 0.738946 7.410044 0.197999\nv 0.662521 7.410044 0.382506\nv 0.540947 7.410044 0.540945\nv 0.382507 7.410044 0.662521\nv 0.198001 7.410044 0.738946\nv 0.000001 7.410044 0.765013\nv -0.197999 7.410044 0.738946\nv -0.382506 7.410044 0.662522\nv -0.540945 7.410044 0.540947\nv -0.662520 7.410044 0.382508\nv -0.738946 7.410044 0.198001\nv -0.765013 7.410044 0.000001\nv -0.738946 7.410044 -0.197999\nv -0.662522 7.410044 -0.382506\nv -0.540947 7.410044 -0.540945\nv -0.382508 7.410044 -0.662520\nv -0.198001 7.410044 -0.738946\nv 0.000000 7.219029 -0.685892\nv 0.177522 7.219029 -0.662521\nv 0.342946 7.219029 -0.594000\nv 0.484999 7.219029 -0.485000\nv 0.594000 7.219029 -0.342947\nv 0.662521 7.219029 -0.177523\nv 0.685892 7.219029 0.000000\nv 0.662521 7.219029 0.177521\nv 0.594001 7.219029 0.342946\nv 0.485000 7.219029 0.484999\nv 0.342947 7.219029 0.594000\nv 0.177523 7.219029 0.662521\nv 0.000000 7.219029 0.685892\nv -0.177521 7.219029 0.662521\nv -0.342945 7.219029 0.594001\nv -0.484998 7.219029 0.485000\nv -0.594000 7.219029 0.342947\nv -0.662521 7.219029 0.177523\nv -0.685892 7.219029 0.000001\nv -0.662521 7.219029 -0.177521\nv -0.594001 7.219029 -0.342945\nv -0.485000 7.219029 -0.484998\nv -0.342947 7.219029 -0.594000\nv -0.177523 7.219029 -0.662521\nv 0.000000 7.055001 -0.560029\nv 0.144946 7.055001 -0.540946\nv 0.280014 7.055001 -0.484999\nv 0.396000 7.055001 -0.396001\nv 0.484999 7.055001 -0.280015\nv 0.540946 7.055001 -0.144947\nv 0.560029 7.055001 0.000000\nv 0.540946 7.055001 0.144946\nv 0.485000 7.055001 0.280014\nv 0.396001 7.055001 0.396000\nv 0.280015 7.055001 0.484999\nv 0.144947 7.055001 0.540946\nv 0.000000 7.055001 0.560029\nv -0.144945 7.055001 0.540947\nv -0.280014 7.055001 0.485000\nv -0.396000 7.055001 0.396001\nv -0.484999 7.055001 0.280015\nv -0.540946 7.055001 0.144947\nv -0.560029 7.055001 0.000000\nv -0.540947 7.055001 -0.144945\nv -0.485000 7.055001 -0.280014\nv -0.396001 7.055001 -0.395999\nv -0.280015 7.055001 -0.484999\nv -0.144947 7.055001 -0.540946\nv 0.000000 6.929136 -0.396000\nv 0.102492 6.929136 -0.382507\nv 0.198000 6.929136 -0.342947\nv 0.280014 6.929136 -0.280015\nv 0.342946 6.929136 -0.198000\nv 0.382507 6.929136 -0.102493\nv 0.396000 6.929136 0.000000\nv 0.382507 6.929136 0.102492\nv 0.342947 6.929136 0.198000\nv 0.280015 6.929136 0.280014\nv 0.198001 6.929136 0.342946\nv 0.102493 6.929136 0.382507\nv 0.000000 6.929136 0.396000\nv -0.102492 6.929136 0.382507\nv -0.198000 6.929136 0.342947\nv -0.280014 6.929136 0.280015\nv -0.342946 6.929136 0.198001\nv -0.382507 6.929136 0.102493\nv -0.396000 6.929136 0.000000\nv -0.382507 6.929136 -0.102492\nv -0.342947 6.929136 -0.198000\nv -0.280015 6.929136 -0.280014\nv -0.198001 6.929136 -0.342946\nv -0.102493 6.929136 -0.382507\nv 0.000000 6.850015 -0.204985\nv 0.053054 6.850015 -0.198000\nv 0.102492 6.850015 -0.177522\nv 0.144946 6.850015 -0.144947\nv 0.177522 6.850015 -0.102493\nv 0.198000 6.850015 -0.053054\nv 0.204985 6.850015 0.000000\nv 0.198001 6.850015 0.053054\nv 0.177522 6.850015 0.102492\nv 0.144947 6.850015 0.144946\nv 0.102493 6.850015 0.177522\nv 0.053054 6.850015 0.198000\nv 0.000000 6.850015 0.204985\nv -0.053054 6.850015 0.198001\nv -0.102492 6.850015 0.177522\nv -0.144946 6.850015 0.144947\nv -0.177522 6.850015 0.102493\nv -0.198000 6.850015 0.053054\nv -0.204985 6.850015 0.000000\nv -0.198001 6.850015 -0.053054\nv -0.177523 6.850015 -0.102492\nv -0.144947 6.850015 -0.144946\nv -0.102493 6.850015 -0.177522\nv -0.053054 6.850015 -0.198000\nv 0.000000 6.823029 0.000000\nv 1.871946 7.231124 0.000000\nv 1.924999 7.204138 -0.198000\nv 1.871946 7.204138 -0.204985\nv 1.974438 7.204138 -0.177522\nv 2.016892 7.204138 -0.144946\nv 2.049468 7.204138 -0.102492\nv 2.069946 7.204138 -0.053054\nv 2.076930 7.204138 0.000000\nv 2.069946 7.204138 0.053054\nv 2.049468 7.204138 0.102492\nv 2.016892 7.204138 0.144946\nv 1.974438 7.204138 0.177522\nv 1.925000 7.204138 0.198000\nv 1.871946 7.204138 0.204985\nv 1.818892 7.204138 0.198000\nv 1.769454 7.204138 0.177522\nv 1.727000 7.204138 0.144946\nv 1.694424 7.204138 0.102493\nv 1.673946 7.204138 0.053054\nv 1.666961 7.204138 0.000000\nv 1.673946 7.204138 -0.053054\nv 1.694424 7.204138 -0.102492\nv 1.726999 7.204138 -0.144946\nv 1.769453 7.204138 -0.177522\nv 1.818891 7.204138 -0.198000\nv 1.974438 7.125016 -0.382507\nv 1.871946 7.125016 -0.396000\nv 2.069945 7.125016 -0.342946\nv 2.151960 7.125016 -0.280014\nv 2.214891 7.125016 -0.198000\nv 2.254452 7.125016 -0.102493\nv 2.267946 7.125016 0.000000\nv 2.254452 7.125016 0.102492\nv 2.214892 7.125016 0.198000\nv 2.151960 7.125016 0.280014\nv 2.069946 7.125016 0.342946\nv 1.974439 7.125016 0.382506\nv 1.871946 7.125016 0.396000\nv 1.769454 7.125016 0.382507\nv 1.673946 7.125016 0.342946\nv 1.591932 7.125016 0.280015\nv 1.529000 7.125016 0.198000\nv 1.489439 7.125016 0.102493\nv 1.475946 7.125016 0.000000\nv 1.489439 7.125016 -0.102492\nv 1.528999 7.125016 -0.197999\nv 1.591931 7.125016 -0.280014\nv 1.673945 7.125016 -0.342946\nv 1.769453 7.125016 -0.382506\nv 2.016891 6.999153 -0.540946\nv 1.871945 6.999153 -0.560028\nv 2.151960 6.999153 -0.484999\nv 2.267945 6.999153 -0.396000\nv 2.356944 6.999153 -0.280015\nv 2.412892 6.999153 -0.144947\nv 2.431974 6.999153 0.000000\nv 2.412892 6.999153 0.144945\nv 2.356945 6.999153 0.280014\nv 2.267946 6.999153 0.395999\nv 2.151961 6.999153 0.484999\nv 2.016892 6.999153 0.540946\nv 1.871946 6.999153 0.560028\nv 1.727000 6.999153 0.540946\nv 1.591932 6.999153 0.484999\nv 1.475946 6.999153 0.396001\nv 1.386947 6.999153 0.280015\nv 1.331000 6.999153 0.144947\nv 1.311917 6.999153 0.000000\nv 1.330999 6.999153 -0.144945\nv 1.386946 6.999153 -0.280013\nv 1.475945 6.999153 -0.395999\nv 1.591931 6.999153 -0.484998\nv 1.726999 6.999153 -0.540946\nv 2.049467 6.835124 -0.662521\nv 1.871945 6.835124 -0.685892\nv 2.214891 6.835124 -0.594000\nv 2.356944 6.835124 -0.484999\nv 2.465945 6.835124 -0.342947\nv 2.534467 6.835124 -0.177523\nv 2.557838 6.835124 0.000000\nv 2.534467 6.835124 0.177521\nv 2.465946 6.835124 0.342945\nv 2.356945 6.835124 0.484998\nv 2.214892 6.835124 0.594000\nv 2.049469 6.835124 0.662521\nv 1.871947 6.835124 0.685892\nv 1.694425 6.835124 0.662521\nv 1.529001 6.835124 0.594000\nv 1.386948 6.835124 0.485000\nv 1.277946 6.835124 0.342947\nv 1.209425 6.835124 0.177523\nv 1.186054 6.835124 0.000001\nv 1.209425 6.835124 -0.177521\nv 1.277945 6.835124 -0.342945\nv 1.386946 6.835124 -0.484998\nv 1.528999 6.835124 -0.593999\nv 1.694423 6.835124 -0.662521\nv 2.069945 6.644109 -0.738946\nv 1.871945 6.644109 -0.765013\nv 2.254452 6.644109 -0.662521\nv 2.412891 6.644109 -0.540946\nv 2.534466 6.644109 -0.382507\nv 2.610892 6.644109 -0.198001\nv 2.636959 6.644109 0.000000\nv 2.610892 6.644109 0.197999\nv 2.534467 6.644109 0.382506\nv 2.412892 6.644109 0.540945\nv 2.254453 6.644109 0.662520\nv 2.069947 6.644109 0.738946\nv 1.871947 6.644109 0.765013\nv 1.673947 6.644109 0.738946\nv 1.489440 6.644109 0.662521\nv 1.331001 6.644109 0.540947\nv 1.209425 6.644109 0.382508\nv 1.133000 6.644109 0.198001\nv 1.106933 6.644109 0.000001\nv 1.132999 6.644109 -0.197999\nv 1.209424 6.644109 -0.382505\nv 1.330999 6.644109 -0.540945\nv 1.489438 6.644109 -0.662520\nv 1.673944 6.644109 -0.738946\nv 2.076930 6.439125 -0.765013\nv 1.871945 6.439125 -0.792000\nv 2.267945 6.439125 -0.685892\nv 2.431974 6.439125 -0.560029\nv 2.557837 6.439125 -0.396001\nv 2.636959 6.439125 -0.204985\nv 2.663946 6.439125 0.000000\nv 2.636959 6.439125 0.204984\nv 2.557838 6.439125 0.395999\nv 2.431975 6.439125 0.560028\nv 2.267946 6.439125 0.685892\nv 2.076931 6.439125 0.765013\nv 1.871947 6.439125 0.792000\nv 1.666962 6.439125 0.765014\nv 1.475947 6.439125 0.685893\nv 1.311918 6.439125 0.560029\nv 1.186054 6.439125 0.396001\nv 1.106933 6.439125 0.204986\nv 1.079946 6.439125 0.000001\nv 1.106932 6.439125 -0.204983\nv 1.186053 6.439125 -0.395999\nv 1.311916 6.439125 -0.560028\nv 1.475945 6.439125 -0.685891\nv 1.666960 6.439125 -0.765013\nv 2.069945 6.234140 -0.738946\nv 1.871945 6.234140 -0.765013\nv 2.254452 6.234140 -0.662521\nv 2.412891 6.234140 -0.540947\nv 2.534466 6.234140 -0.382507\nv 2.610892 6.234140 -0.198001\nv 2.636959 6.234140 0.000000\nv 2.610892 6.234140 0.197999\nv 2.534467 6.234140 0.382506\nv 2.412892 6.234140 0.540945\nv 2.254453 6.234140 0.662521\nv 2.069947 6.234140 0.738946\nv 1.871947 6.234140 0.765013\nv 1.673947 6.234140 0.738946\nv 1.489440 6.234140 0.662522\nv 1.331000 6.234140 0.540947\nv 1.209425 6.234140 0.382508\nv 1.133000 6.234140 0.198001\nv 1.106932 6.234140 0.000001\nv 1.132999 6.234140 -0.197999\nv 1.209424 6.234140 -0.382506\nv 1.330999 6.234140 -0.540945\nv 1.489438 6.234140 -0.662520\nv 1.673944 6.234140 -0.738946\nv 2.049467 6.043124 -0.662521\nv 1.871945 6.043124 -0.685892\nv 2.214891 6.043124 -0.594000\nv 2.356945 6.043124 -0.485000\nv 2.465946 6.043124 -0.342947\nv 2.534467 6.043124 -0.177523\nv 2.557838 6.043124 0.000000\nv 2.534467 6.043124 0.177521\nv 2.465946 6.043124 0.342946\nv 2.356946 6.043124 0.484999\nv 2.214893 6.043124 0.594000\nv 2.049469 6.043124 0.662521\nv 1.871947 6.043124 0.685892\nv 1.694425 6.043124 0.662521\nv 1.529000 6.043124 0.594001\nv 1.386947 6.043124 0.485000\nv 1.277946 6.043124 0.342947\nv 1.209425 6.043124 0.177523\nv 1.186054 6.043124 0.000001\nv 1.209424 6.043124 -0.177521\nv 1.277945 6.043124 -0.342945\nv 1.386946 6.043124 -0.484998\nv 1.528998 6.043124 -0.594000\nv 1.694422 6.043124 -0.662521\nv 2.016891 5.879096 -0.540946\nv 1.871945 5.879096 -0.560029\nv 2.151960 5.879096 -0.484999\nv 2.267946 5.879096 -0.396001\nv 2.356945 5.879096 -0.280015\nv 2.412892 5.879096 -0.144947\nv 2.431975 5.879096 0.000000\nv 2.412892 5.879096 0.144946\nv 2.356945 5.879096 0.280014\nv 2.267946 5.879096 0.396000\nv 2.151961 5.879096 0.484999\nv 2.016892 5.879096 0.540946\nv 1.871946 5.879096 0.560029\nv 1.727000 5.879096 0.540947\nv 1.591932 5.879096 0.485000\nv 1.475946 5.879096 0.396001\nv 1.386947 5.879096 0.280015\nv 1.331000 5.879096 0.144947\nv 1.311917 5.879096 0.000000\nv 1.330999 5.879096 -0.144945\nv 1.386946 5.879096 -0.280014\nv 1.475945 5.879096 -0.395999\nv 1.591930 5.879096 -0.484999\nv 1.726999 5.879096 -0.540946\nv 1.974438 5.753232 -0.382507\nv 1.871946 5.753232 -0.396000\nv 2.069946 5.753232 -0.342947\nv 2.151960 5.753232 -0.280015\nv 2.214892 5.753232 -0.198000\nv 2.254453 5.753232 -0.102493\nv 2.267946 5.753232 0.000000\nv 2.254453 5.753232 0.102492\nv 2.214892 5.753232 0.198000\nv 2.151961 5.753232 0.280014\nv 2.069946 5.753232 0.342946\nv 1.974439 5.753232 0.382507\nv 1.871946 5.753232 0.396000\nv 1.769454 5.753232 0.382507\nv 1.673946 5.753232 0.342947\nv 1.591932 5.753232 0.280015\nv 1.529000 5.753232 0.198001\nv 1.489439 5.753232 0.102493\nv 1.475945 5.753232 0.000000\nv 1.489439 5.753232 -0.102492\nv 1.528999 5.753232 -0.198000\nv 1.591931 5.753232 -0.280014\nv 1.673945 5.753232 -0.342946\nv 1.769453 5.753232 -0.382507\nv 1.925000 5.674111 -0.198000\nv 1.871946 5.674111 -0.204985\nv 1.974438 5.674111 -0.177522\nv 2.016892 5.674111 -0.144947\nv 2.049468 5.674111 -0.102493\nv 2.069946 5.674111 -0.053054\nv 2.076931 5.674111 0.000000\nv 2.069946 5.674111 0.053054\nv 2.049468 5.674111 0.102492\nv 2.016892 5.674111 0.144946\nv 1.974439 5.674111 0.177522\nv 1.925000 5.674111 0.198000\nv 1.871946 5.674111 0.204985\nv 1.818892 5.674111 0.198001\nv 1.769453 5.674111 0.177522\nv 1.727000 5.674111 0.144947\nv 1.694424 5.674111 0.102493\nv 1.673945 5.674111 0.053054\nv 1.666961 5.674111 0.000000\nv 1.673945 5.674111 -0.053054\nv 1.694423 5.674111 -0.102492\nv 1.726999 5.674111 -0.144946\nv 1.769453 5.674111 -0.177522\nv 1.818891 5.674111 -0.198000\nv 1.871946 5.647125 0.000000\nv 0.309896 5.515944 -0.041455\nv 0.345870 5.486310 -0.041455\nv 0.424286 5.504072 -0.093361\nv 0.418141 5.501982 -0.113838\nv 0.396498 5.533141 -0.113838\nv 0.411730 5.534671 -0.093361\nv 0.454673 5.520028 -0.112858\nv 0.438094 5.507370 -0.092381\nv 0.425538 5.537968 -0.092381\nv 0.443761 5.538089 -0.112858\nv 0.453302 5.457216 -0.089738\nv 0.441317 5.475670 -0.110215\nv 0.481455 5.465744 -0.089738\nv 0.606229 5.515820 -0.123867\nv 0.602834 5.475719 -0.123867\nv 0.579542 5.483232 -0.123867\nv 0.582807 5.538704 -0.123867\nv 0.445729 5.233723 -0.123867\nv 0.821135 5.315813 -0.123867\nv 1.000863 5.651269 -0.123867\nv 0.998508 5.634236 -0.123867\nv 0.802170 5.613324 -0.123867\nv 0.877842 5.588543 -0.123867\nv 0.948260 5.556879 -0.123867\nv 0.919384 5.572126 -0.123867\nv 0.887220 5.368674 -0.123867\nv 0.394917 5.657471 -0.123867\nv 0.406946 5.503573 -0.123867\nv 0.381454 5.531240 -0.123867\nv 0.531150 5.719302 -0.123867\nv 0.736686 5.605947 -0.123867\nv 0.458223 5.412295 -0.113265\nv 0.428678 5.362868 -0.113265\nv 0.402774 5.356741 -0.092786\nv 0.439946 5.417790 -0.092786\nv 0.403944 5.274145 -0.113282\nv 0.376874 5.259162 -0.092804\nv 0.416054 5.201977 -0.113084\nv 0.399372 5.179461 -0.092606\nv 0.480014 5.144361 -0.113117\nv 0.478291 5.118040 -0.092638\nv 0.527722 5.136270 -0.113282\nv 0.573570 5.146466 -0.113282\nv 0.582210 5.122450 -0.092804\nv 0.525999 5.109948 -0.092804\nv 0.610153 5.170753 -0.112581\nv 0.623349 5.197310 -0.112581\nv 0.646468 5.194917 -0.092102\nv 0.618793 5.146736 -0.092102\nv 0.623135 5.227768 -0.112810\nv 0.606183 5.243670 -0.112810\nv 0.622495 5.253418 -0.092331\nv 0.646254 5.225375 -0.092331\nv 0.570921 5.255943 -0.114459\nv 0.513188 5.262099 -0.114459\nv 0.550742 5.267126 -0.093982\nv 0.587233 5.265692 -0.093982\nv 0.509146 5.282185 -0.114400\nv 0.560599 5.325606 -0.114400\nv 0.575304 5.316366 -0.093922\nv 0.546701 5.287212 -0.093922\nv 0.593234 5.371274 -0.113305\nv 0.607939 5.362035 -0.092826\nv 0.625473 5.470294 -0.113282\nv 0.628868 5.510393 -0.113282\nv 0.649330 5.520258 -0.092804\nv 0.645166 5.471096 -0.092804\nv 0.615937 5.547515 -0.112902\nv 0.592514 5.570402 -0.112902\nv 0.599770 5.592010 -0.092425\nv 0.636398 5.557381 -0.092425\nv 0.536419 5.601588 -0.113282\nv 0.537775 5.625658 -0.092804\nv 0.502804 5.605110 -0.112799\nv 0.504160 5.629180 -0.092322\nv 0.433839 5.604552 -0.091985\nv 0.450710 5.583147 -0.112462\nv 0.482219 5.499254 -0.114462\nv 0.530931 5.473194 -0.114462\nv 0.499634 5.474578 -0.093983\nv 0.465640 5.486594 -0.093983\nv 0.534608 5.457798 -0.114274\nv 0.493435 5.445159 -0.114274\nv 0.475158 5.450655 -0.093796\nv 0.503310 5.459183 -0.093796\nv 0.421121 5.612298 -0.093871\nv 0.418937 5.628274 -0.114350\nv 0.506708 5.666801 -0.113882\nv 0.501502 5.648447 -0.093404\nv 0.550349 5.662285 -0.114218\nv 0.545143 5.643930 -0.093740\nv 0.629492 5.612260 -0.113562\nv 0.664060 5.578382 -0.113562\nv 0.650154 5.569179 -0.093084\nv 0.613526 5.603806 -0.093084\nv 0.696662 5.549114 -0.114802\nv 0.682757 5.539909 -0.094323\nv 0.760234 5.486811 -0.113282\nv 0.730038 5.495645 -0.092804\nv 0.810358 5.424101 -0.113282\nv 0.786797 5.426218 -0.092804\nv 0.819314 5.365025 -0.113282\nv 0.797526 5.360498 -0.092804\nv 0.802562 5.320957 -0.113282\nv 0.788883 5.308403 -0.113282\nv 0.762682 5.295666 -0.092804\nv 0.779451 5.311057 -0.092804\nv 0.794186 5.297959 -0.111517\nv 0.804707 5.297311 -0.111517\nv 0.767983 5.285222 -0.091038\nv 0.836627 5.301105 -0.113282\nv 0.843061 5.281743 -0.092804\nv 0.896286 5.324542 -0.113282\nv 0.909790 5.306975 -0.092804\nv 0.928906 5.373504 -0.113282\nv 0.946826 5.360417 -0.092804\nv 0.926206 5.448348 -0.113700\nv 0.907602 5.497252 -0.113700\nv 0.930586 5.489536 -0.093222\nv 0.945004 5.442576 -0.093222\nv 0.919570 5.525727 -0.113282\nv 0.942554 5.518014 -0.092804\nv 0.984745 5.550106 -0.113325\nv 1.015682 5.544410 -0.092846\nv 1.023436 5.590175 -0.113106\nv 1.049458 5.591613 -0.092627\nv 1.029258 5.632510 -0.113424\nv 1.018718 5.655898 -0.113424\nv 1.039579 5.667114 -0.092946\nv 1.051585 5.640802 -0.092946\nv 1.005948 5.675226 -0.110215\nv 0.995631 5.701816 -0.089738\nv 1.026809 5.686442 -0.089738\nv 0.993280 5.668571 -0.114556\nv 0.978032 5.657892 -0.114556\nv 0.980578 5.679368 -0.094078\nv 0.982963 5.695159 -0.094078\nv 0.927556 5.636914 -0.113282\nv 0.923474 5.656149 -0.092804\nv 0.877212 5.640411 -0.113949\nv 0.802427 5.662618 -0.113949\nv 0.810786 5.676223 -0.093471\nv 0.873130 5.659646 -0.093471\nv 0.539941 5.773489 -0.113282\nv 0.526252 5.797686 -0.092804\nv 0.457298 5.767262 -0.113282\nv 0.434858 5.792035 -0.092804\nv 0.382350 5.721624 -0.113282\nv 0.350880 5.742265 -0.092804\nv 0.342812 5.652568 -0.113282\nv 0.306206 5.666270 -0.092804\nv 0.335251 5.577381 -0.113282\nv 0.296974 5.582496 -0.092804\nv 0.362685 5.519274 -0.113282\nv 0.392027 5.495102 -0.113282\nv 0.361985 5.488284 -0.092804\nv 0.326010 5.517920 -0.092804\nv 0.417923 5.476707 -0.110215\nv 0.429909 5.458251 -0.089737\nv 0.387881 5.469887 -0.089737\nv 0.439370 5.482518 -0.110215\nv 0.445514 5.484608 -0.089738\nv 0.479508 5.472592 -0.089738\nv 0.440389 5.273817 -0.123867\nv 0.802856 5.311946 -0.123867\nv 0.470522 5.538355 -0.123867\nv 0.479066 5.555797 -0.123867\nv 0.530146 5.494235 -0.123867\nv 0.481434 5.520294 -0.123867\nv 0.527090 5.570638 -0.123867\nv 0.549926 5.504280 -0.123867\nv 0.591474 5.219917 -0.123867\nv 0.547534 5.217666 -0.123867\nv 0.574522 5.235818 -0.123867\nv 0.510551 5.186327 -0.123867\nv 0.856916 5.339489 -0.123867\nv 0.785386 5.561415 -0.123867\nv 0.831140 5.511280 -0.123867\nv 0.970352 5.590698 -0.123867\nv 0.874926 5.424644 -0.123867\nv 0.861703 5.463790 -0.123867\nv 0.385730 5.608974 -0.123867\nv 0.490694 5.715039 -0.123867\nv 0.541191 5.438536 -0.123867\nv 0.564482 5.431025 -0.123867\nv 0.470473 5.376470 -0.123867\nv 0.500018 5.425898 -0.123867\nv 0.545513 5.349375 -0.123867\nv 0.494061 5.305954 -0.123867\nv 0.426899 5.454040 -0.000178\nv 0.384872 5.465675 -0.000178\nv 0.392157 5.356647 -0.000178\nv 0.429328 5.417697 -0.000178\nv 0.364079 5.254062 -0.000178\nv 0.389204 5.170083 -0.000178\nv 0.474331 5.106178 -0.000178\nv 0.583881 5.110291 -0.000178\nv 0.527670 5.097790 -0.000178\nv 0.653498 5.188813 -0.000178\nv 0.625824 5.140632 -0.000178\nv 0.631697 5.254966 -0.000178\nv 0.655456 5.226924 -0.000178\nv 0.565082 5.271138 -0.000178\nv 0.601572 5.269704 -0.000178\nv 0.589741 5.315586 -0.000178\nv 0.561138 5.286431 -0.000178\nv 0.616228 5.359894 -0.000178\nv 0.659029 5.522835 -0.000178\nv 0.654866 5.473672 -0.000178\nv 0.670598 5.539687 -0.000178\nv 0.717054 5.498289 -0.000178\nv 0.775843 5.425636 -0.000178\nv 0.786682 5.357014 -0.000178\nv 0.750770 5.290197 -0.000178\nv 0.767541 5.305588 -0.000178\nv 0.763965 5.278866 -0.000178\nv 0.847876 5.272824 -0.000178\nv 0.917379 5.299571 -0.000178\nv 0.955695 5.355863 -0.000178\nv 0.941216 5.485821 -0.000178\nv 0.955634 5.438861 -0.000178\nv 0.955578 5.514775 -0.000178\nv 1.029874 5.543750 -0.000178\nv 1.061003 5.594168 -0.000178\nv 1.050158 5.671900 -0.000178\nv 1.062163 5.645587 -0.000178\nv 0.997389 5.708117 -0.000178\nv 1.028566 5.692743 -0.000178\nv 0.978222 5.692117 -0.000178\nv 0.980607 5.707908 -0.000178\nv 0.923102 5.665982 -0.000178\nv 0.811612 5.684768 -0.000178\nv 0.873955 5.668191 -0.000178\nv 0.517526 5.809513 -0.000178\nv 0.421837 5.803005 -0.000178\nv 0.334437 5.750560 -0.000178\nv 0.288120 5.670815 -0.000178\nv 0.278871 5.583405 -0.000178\nv 0.345870 5.486310 -0.000178\nv 0.309896 5.515944 -0.000178\nv 0.494061 5.305954 0.123511\nv 0.545513 5.349375 0.123511\nv 0.500018 5.425898 0.123511\nv 0.470473 5.376470 0.123511\nv 0.564482 5.431025 0.123511\nv 0.541191 5.438536 0.123511\nv 0.490694 5.715039 0.123511\nv 0.385730 5.608974 0.123511\nv 0.861703 5.463790 0.123511\nv 0.874926 5.424644 0.123511\nv 0.970352 5.590698 0.123511\nv 0.831140 5.511280 0.123511\nv 0.785386 5.561415 0.123511\nv 0.856916 5.339489 0.123511\nv 0.510551 5.186327 0.123511\nv 0.574522 5.235818 0.123511\nv 0.547534 5.217666 0.123511\nv 0.591474 5.219917 0.123511\nv 0.549926 5.504280 0.123511\nv 0.527090 5.570638 0.123511\nv 0.481434 5.520294 0.123511\nv 0.530146 5.494235 0.123511\nv 0.479066 5.555797 0.123511\nv 0.470522 5.538355 0.123511\nv 0.802856 5.311946 0.123511\nv 0.440389 5.273817 0.123511\nv 0.479508 5.472592 0.089382\nv 0.445514 5.484608 0.089382\nv 0.439370 5.482518 0.109859\nv 0.387881 5.469887 0.089381\nv 0.429909 5.458251 0.089381\nv 0.417923 5.476707 0.109859\nv 0.326010 5.517920 0.092448\nv 0.361985 5.488284 0.092448\nv 0.392027 5.495102 0.112926\nv 0.362685 5.519274 0.112926\nv 0.296974 5.582496 0.092448\nv 0.335251 5.577381 0.112926\nv 0.306206 5.666270 0.092448\nv 0.342812 5.652568 0.112926\nv 0.350880 5.742265 0.092448\nv 0.382350 5.721624 0.112926\nv 0.434858 5.792035 0.092448\nv 0.457298 5.767262 0.112926\nv 0.526252 5.797686 0.092448\nv 0.539941 5.773489 0.112926\nv 0.873130 5.659646 0.093115\nv 0.810786 5.676223 0.093115\nv 0.802427 5.662618 0.113593\nv 0.877212 5.640411 0.113593\nv 0.923474 5.656149 0.092448\nv 0.927556 5.636914 0.112926\nv 0.982963 5.695159 0.093722\nv 0.980578 5.679368 0.093722\nv 0.978032 5.657892 0.114200\nv 0.993280 5.668571 0.114200\nv 1.026809 5.686442 0.089382\nv 0.995631 5.701816 0.089382\nv 1.005948 5.675226 0.109859\nv 1.051585 5.640802 0.092590\nv 1.039579 5.667114 0.092590\nv 1.018718 5.655898 0.113068\nv 1.029258 5.632510 0.113068\nv 1.049458 5.591613 0.092271\nv 1.023436 5.590175 0.112750\nv 1.015682 5.544410 0.092490\nv 0.984745 5.550106 0.112969\nv 0.942554 5.518014 0.092448\nv 0.919570 5.525727 0.112926\nv 0.945004 5.442576 0.092866\nv 0.930586 5.489536 0.092866\nv 0.907602 5.497252 0.113344\nv 0.926206 5.448348 0.113344\nv 0.946826 5.360417 0.092448\nv 0.928906 5.373504 0.112926\nv 0.909790 5.306975 0.092448\nv 0.896286 5.324542 0.112926\nv 0.843061 5.281743 0.092448\nv 0.836627 5.301105 0.112926\nv 0.767983 5.285222 0.090682\nv 0.804707 5.297311 0.111161\nv 0.794186 5.297959 0.111161\nv 0.779451 5.311057 0.092448\nv 0.762682 5.295666 0.092448\nv 0.788883 5.308403 0.112926\nv 0.802562 5.320957 0.112926\nv 0.797526 5.360498 0.092448\nv 0.819314 5.365025 0.112926\nv 0.786797 5.426218 0.092448\nv 0.810358 5.424101 0.112926\nv 0.730038 5.495645 0.092448\nv 0.760234 5.486811 0.112926\nv 0.682757 5.539909 0.093967\nv 0.696662 5.549114 0.114446\nv 0.613526 5.603806 0.092728\nv 0.650154 5.569179 0.092728\nv 0.664060 5.578382 0.113206\nv 0.629492 5.612260 0.113206\nv 0.545143 5.643930 0.093384\nv 0.550349 5.662285 0.113862\nv 0.501502 5.648447 0.093048\nv 0.506708 5.666801 0.113526\nv 0.418937 5.628274 0.113994\nv 0.421121 5.612298 0.093515\nv 0.503310 5.459183 0.093440\nv 0.475158 5.450655 0.093440\nv 0.493435 5.445159 0.113918\nv 0.534608 5.457798 0.113918\nv 0.465640 5.486594 0.093627\nv 0.499634 5.474578 0.093627\nv 0.530931 5.473194 0.114106\nv 0.482219 5.499254 0.114106\nv 0.450710 5.583147 0.112106\nv 0.433839 5.604552 0.091629\nv 0.504160 5.629180 0.091966\nv 0.502804 5.605110 0.112443\nv 0.537775 5.625658 0.092448\nv 0.536419 5.601588 0.112926\nv 0.636398 5.557381 0.092069\nv 0.599770 5.592010 0.092069\nv 0.592514 5.570402 0.112546\nv 0.615937 5.547515 0.112546\nv 0.645166 5.471096 0.092448\nv 0.649330 5.520258 0.092448\nv 0.628868 5.510393 0.112926\nv 0.625473 5.470294 0.112926\nv 0.607939 5.362035 0.092470\nv 0.593234 5.371274 0.112949\nv 0.546701 5.287212 0.093566\nv 0.575304 5.316366 0.093566\nv 0.560599 5.325606 0.114044\nv 0.509146 5.282185 0.114044\nv 0.587233 5.265692 0.093626\nv 0.550742 5.267126 0.093626\nv 0.513188 5.262099 0.114103\nv 0.570921 5.255943 0.114103\nv 0.646254 5.225375 0.091975\nv 0.622495 5.253418 0.091975\nv 0.606183 5.243670 0.112454\nv 0.623135 5.227768 0.112454\nv 0.618793 5.146736 0.091746\nv 0.646468 5.194917 0.091746\nv 0.623349 5.197310 0.112225\nv 0.610153 5.170753 0.112225\nv 0.525999 5.109948 0.092448\nv 0.582210 5.122450 0.092448\nv 0.573570 5.146466 0.112926\nv 0.527722 5.136270 0.112926\nv 0.478291 5.118040 0.092282\nv 0.480014 5.144361 0.112761\nv 0.399372 5.179461 0.092250\nv 0.416054 5.201977 0.112728\nv 0.376874 5.259162 0.092448\nv 0.403944 5.274145 0.112926\nv 0.439946 5.417790 0.092430\nv 0.402774 5.356741 0.092430\nv 0.428678 5.362868 0.112909\nv 0.458223 5.412295 0.112909\nv 0.736686 5.605947 0.123511\nv 0.531150 5.719302 0.123511\nv 0.381454 5.531240 0.123511\nv 0.406946 5.503573 0.123511\nv 0.394917 5.657471 0.123511\nv 0.887220 5.368674 0.123511\nv 0.919384 5.572126 0.123511\nv 0.948260 5.556879 0.123511\nv 0.877842 5.588543 0.123511\nv 0.802170 5.613324 0.123511\nv 0.998508 5.634236 0.123511\nv 1.000863 5.651269 0.123511\nv 0.821135 5.315813 0.123511\nv 0.445729 5.233723 0.123511\nv 0.582807 5.538704 0.123511\nv 0.579542 5.483232 0.123511\nv 0.602834 5.475719 0.123511\nv 0.606229 5.515820 0.123511\nv 0.481455 5.465744 0.089382\nv 0.441317 5.475670 0.109859\nv 0.453302 5.457216 0.089382\nv 0.443761 5.538089 0.112502\nv 0.425538 5.537968 0.092025\nv 0.438094 5.507370 0.092025\nv 0.454673 5.520028 0.112502\nv 0.411730 5.534671 0.093005\nv 0.396498 5.533141 0.113482\nv 0.418141 5.501982 0.113482\nv 0.424286 5.504072 0.093005\nv 0.345870 5.486310 0.041099\nv 0.309896 5.515944 0.041099\nv 2.041447 5.441407 0.000016\nv 1.902422 5.157276 0.000038\nv 2.000598 5.267411 -0.000016\nv 0.827715 5.464243 -0.018954\nv 1.649046 5.069851 -0.032847\nv 1.776509 5.091953 -0.036823\nv 1.898296 5.160740 -0.040898\nv 1.994962 5.269464 -0.045596\nv 2.035121 5.441407 -0.048052\nv 2.109306 5.441407 -0.067926\nv 2.146399 5.479807 -0.077862\nv 2.084578 5.531006 -0.061302\nv 1.991847 5.569407 -0.036460\nv 2.041304 5.595008 -0.049708\nv 2.096942 5.665406 -0.064614\nv 2.127852 5.665406 -0.072894\nv 2.127852 5.697407 -0.072894\nv 0.830914 5.470578 -0.036093\nv 0.836005 5.480661 -0.050811\nv 1.643436 5.101691 -0.088847\nv 1.758191 5.123687 -0.100293\nv 1.866940 5.187052 -0.111804\nv 1.952135 5.285051 -0.124545\nv 1.987059 5.441407 -0.131312\nv 2.041368 5.441407 -0.185614\nv 2.068523 5.479807 -0.212766\nv 2.023265 5.531006 -0.167514\nv 1.955379 5.569407 -0.099636\nv 1.991585 5.595008 -0.135838\nv 2.032317 5.665406 -0.176565\nv 2.054945 5.665406 -0.199190\nv 2.054945 5.697407 -0.199190\nv 0.850366 5.509098 -0.069204\nv 1.633711 5.156838 -0.121179\nv 1.726459 5.178650 -0.136939\nv 1.812627 5.232628 -0.152744\nv 1.877953 5.312052 -0.170130\nv 1.903806 5.441407 -0.179386\nv 1.923689 5.441407 -0.253568\nv 1.933629 5.479807 -0.290659\nv 1.917061 5.531006 -0.228842\nv 1.892206 5.569407 -0.136114\nv 1.905463 5.595008 -0.185568\nv 1.920375 5.665406 -0.241205\nv 1.928659 5.665406 -0.272114\nv 1.928659 5.697407 -0.272114\nv 0.866946 5.541935 -0.069204\nv 1.622482 5.220516 -0.121182\nv 1.689813 5.242119 -0.136943\nv 1.749908 5.285254 -0.152750\nv 1.792290 5.343229 -0.170137\nv 1.807669 5.441407 -0.179394\nv 1.787799 5.441407 -0.253579\nv 1.777863 5.479807 -0.290672\nv 1.794421 5.531006 -0.228851\nv 1.819260 5.569407 -0.136119\nv 1.806012 5.595008 -0.185577\nv 1.791109 5.665406 -0.241215\nv 1.782831 5.665406 -0.272125\nv 1.782831 5.697407 -0.272125\nv 0.881305 5.570374 -0.050811\nv 1.612755 5.275664 -0.088854\nv 1.658075 5.297085 -0.100303\nv 1.695589 5.330832 -0.111818\nv 1.718102 5.370231 -0.124564\nv 1.724408 5.441407 -0.131333\nv 1.670107 5.441407 -0.185643\nv 1.642957 5.479807 -0.212799\nv 1.688207 5.531006 -0.167541\nv 1.756084 5.569407 -0.099651\nv 1.719882 5.595008 -0.135859\nv 1.679158 5.665406 -0.176592\nv 1.656531 5.665406 -0.199222\nv 1.656531 5.697407 -0.199222\nv 1.733685 5.569407 -0.070469\nv 0.889594 5.586796 -0.018954\nv 1.607137 5.307508 -0.032856\nv 1.639748 5.328821 -0.036838\nv 1.664223 5.357145 -0.040918\nv 1.675264 5.385822 -0.045622\nv 1.676331 5.441407 -0.048081\nv 1.602150 5.441407 -0.067966\nv 1.565059 5.479807 -0.077909\nv 1.626877 5.531006 -0.061338\nv 1.719603 5.569407 -0.036482\nv 1.670149 5.595008 -0.049738\nv 1.614513 5.665406 -0.064651\nv 1.583606 5.665406 -0.072936\nv 1.583606 5.697407 -0.072936\nv 0.889594 5.586796 0.017833\nv 1.607132 5.307511 0.031806\nv 1.639743 5.328824 0.036450\nv 1.664215 5.357148 0.040955\nv 1.675255 5.385825 0.045538\nv 1.676321 5.441407 0.048057\nv 1.602136 5.441407 0.067926\nv 1.565044 5.479807 0.077860\nv 1.626865 5.531006 0.061302\nv 1.719597 5.569407 0.036466\nv 1.670139 5.595008 0.049711\nv 1.614500 5.665406 0.064614\nv 1.583589 5.665406 0.072893\nv 1.583589 5.697407 0.072893\nv 1.691782 5.379807 0.088014\nv 0.881302 5.570380 0.049690\nv 1.612743 5.275675 0.087806\nv 1.658060 5.297095 0.099922\nv 1.695569 5.330838 0.111863\nv 1.718076 5.370237 0.124489\nv 1.724379 5.441407 0.131318\nv 1.670067 5.441407 0.185618\nv 1.642911 5.479807 0.212767\nv 1.688171 5.531006 0.167518\nv 1.756062 5.569407 0.099644\nv 1.719855 5.595008 0.135843\nv 1.679120 5.665406 0.176567\nv 1.656490 5.665406 0.199191\nv 1.656490 5.697407 0.199191\nv 0.866942 5.541945 0.068085\nv 1.622465 5.220531 0.120141\nv 1.689792 5.242130 0.136571\nv 1.749879 5.285265 0.152806\nv 1.792256 5.343235 0.170078\nv 1.807631 5.441407 0.179396\nv 1.787743 5.441407 0.253577\nv 1.777802 5.479807 0.290667\nv 1.794373 5.531006 0.228850\nv 1.819231 5.569407 0.136125\nv 1.805974 5.595008 0.185578\nv 1.791058 5.665406 0.241213\nv 1.782773 5.665406 0.272123\nv 1.782773 5.697407 0.272123\nv 0.850362 5.509104 0.068087\nv 1.633698 5.156850 0.120147\nv 1.726436 5.178664 0.136579\nv 1.812598 5.232639 0.152818\nv 1.877919 5.312058 0.170090\nv 1.903767 5.441407 0.179410\nv 1.923634 5.441407 0.253595\nv 1.933568 5.479807 0.290689\nv 1.917012 5.531006 0.228866\nv 1.892178 5.569407 0.136134\nv 1.905423 5.595008 0.185592\nv 1.920323 5.665406 0.241231\nv 1.928601 5.665406 0.272141\nv 1.928601 5.697407 0.272141\nv 0.836002 5.480664 0.049696\nv 1.643425 5.101700 0.087822\nv 1.758174 5.123696 0.099943\nv 1.866919 5.187061 0.111890\nv 1.952110 5.285056 0.124521\nv 1.987030 5.441407 0.131352\nv 2.041330 5.441407 0.185667\nv 2.068478 5.479807 0.212822\nv 2.023230 5.531006 0.167562\nv 1.955357 5.569407 0.099670\nv 1.991556 5.595008 0.135879\nv 2.032280 5.665406 0.176614\nv 2.054904 5.665406 0.199245\nv 2.054904 5.697407 0.199245\nv 1.977757 5.569407 0.070487\nv 0.827713 5.464243 0.017841\nv 1.649043 5.069855 0.031826\nv 1.776505 5.091958 0.036479\nv 1.898288 5.160743 0.040991\nv 1.994951 5.269464 0.045582\nv 2.035112 5.441407 0.048103\nv 2.109293 5.441407 0.067991\nv 2.146382 5.479807 0.077937\nv 2.084566 5.531006 0.061362\nv 1.991841 5.569407 0.036501\nv 2.041295 5.595008 0.049761\nv 2.096928 5.665406 0.064676\nv 2.127837 5.665406 0.072964\nv 2.127837 5.697407 0.072964\nv 1.480159 5.243531 -0.106571\nv 1.502341 5.287462 -0.078158\nv 1.454546 5.192803 -0.106571\nv 1.432361 5.148871 -0.078157\nv 1.515146 5.312833 0.027885\nv 1.502338 5.287472 0.077100\nv 1.480153 5.243540 0.105516\nv 1.454540 5.192812 0.105519\nv 1.432358 5.148880 0.077109\nv 1.419550 5.123511 0.027896\nv 1.516179 5.312378 -0.028960\nv 1.419042 5.123801 -0.028934\nv 1.563461 5.304673 0.030392\nv 1.564023 5.304605 -0.031455\nv 1.558218 5.274195 -0.084999\nv 1.549126 5.221419 -0.115918\nv 1.529535 5.107703 -0.084997\nv 1.538628 5.160480 -0.115917\nv 1.558211 5.274205 0.083947\nv 1.549116 5.221431 0.114869\nv 1.538617 5.160491 0.114874\nv 1.529527 5.107712 0.083959\nv 1.523994 5.077298 -0.031438\nv 1.524280 5.077236 0.030408\nv -0.935916 7.231124 1.621186\nv -0.790965 7.204138 1.766126\nv -0.758390 7.204138 1.723672\nv -0.833417 7.204138 1.798704\nv -0.882855 7.204138 1.819184\nv -0.935909 7.204138 1.826170\nv -0.988963 7.204138 1.819188\nv -1.038402 7.204138 1.798711\nv -1.080857 7.204138 1.766137\nv -1.113434 7.204138 1.723684\nv -1.133914 7.204138 1.674246\nv -1.140901 7.204138 1.621192\nv -1.133918 7.204138 1.568139\nv -1.113442 7.204138 1.518699\nv -1.080867 7.204138 1.476245\nv -1.038415 7.204138 1.443668\nv -0.988977 7.204138 1.423187\nv -0.935924 7.204138 1.416201\nv -0.882869 7.204138 1.423184\nv -0.833430 7.204138 1.443660\nv -0.790975 7.204138 1.476234\nv -0.758398 7.204138 1.518687\nv -0.737918 7.204138 1.568124\nv -0.730931 7.204138 1.621178\nv -0.737914 7.204138 1.674232\nv -0.655892 7.125016 1.901190\nv -0.592963 7.125016 1.819174\nv -0.737904 7.125016 1.964124\nv -0.833411 7.125016 2.003688\nv -0.935902 7.125016 2.017184\nv -1.038394 7.125016 2.003695\nv -1.133904 7.125016 1.964139\nv -1.215920 7.125016 1.901209\nv -1.278855 7.125016 1.819197\nv -1.318419 7.125016 1.723691\nv -1.331916 7.125016 1.621200\nv -1.318426 7.125016 1.518708\nv -1.278869 7.125016 1.423198\nv -1.215941 7.125016 1.341181\nv -1.133928 7.125016 1.278246\nv -1.038423 7.125016 1.238682\nv -0.935930 7.125016 1.225186\nv -0.833438 7.125016 1.238675\nv -0.737928 7.125016 1.278233\nv -0.655912 7.125016 1.341161\nv -0.592978 7.125016 1.423172\nv -0.553413 7.125016 1.518679\nv -0.539916 7.125016 1.621171\nv -0.553406 7.125016 1.723664\nv -0.539902 6.999153 2.017171\nv -0.450907 6.999153 1.901182\nv -0.655885 6.999153 2.106174\nv -0.790951 6.999153 2.162126\nv -0.935896 6.999153 2.181214\nv -1.080843 6.999153 2.162137\nv -1.215913 6.999153 2.106194\nv -1.331902 6.999153 2.017200\nv -1.420905 6.999153 1.901217\nv -1.476856 6.999153 1.766151\nv -1.495945 6.999153 1.621206\nv -1.476867 6.999153 1.476258\nv -1.420925 6.999153 1.341189\nv -1.331930 6.999153 1.225199\nv -1.215948 6.999153 1.136197\nv -1.080882 6.999153 1.080244\nv -0.935937 6.999153 1.061157\nv -0.790990 6.999153 1.080234\nv -0.655919 6.999153 1.136176\nv -0.539931 6.999153 1.225170\nv -0.450928 6.999153 1.341153\nv -0.394976 6.999153 1.476219\nv -0.375888 6.999153 1.621165\nv -0.394965 6.999153 1.766112\nv -0.450900 6.835124 2.106167\nv -0.341904 6.835124 1.964110\nv -0.592949 6.835124 2.215173\nv -0.758371 6.835124 2.283700\nv -0.935891 6.835124 2.307077\nv -1.113414 6.835124 2.283713\nv -1.278841 6.835124 2.215197\nv -1.420897 6.835124 2.106202\nv -1.529903 6.835124 1.964153\nv -1.598430 6.835124 1.798731\nv -1.621808 6.835124 1.621209\nv -1.598444 6.835124 1.443688\nv -1.529929 6.835124 1.278261\nv -1.420933 6.835124 1.136204\nv -1.278884 6.835124 1.027199\nv -1.113463 6.835124 0.958671\nv -0.935941 6.835124 0.935293\nv -0.758418 6.835124 0.958658\nv -0.592992 6.835124 1.027173\nv -0.450935 6.835124 1.136169\nv -0.341929 6.835124 1.278217\nv -0.273402 6.835124 1.443639\nv -0.250024 6.835124 1.621160\nv -0.273389 6.835124 1.798683\nv -0.394951 6.644109 2.162112\nv -0.273382 6.644109 2.003668\nv -0.553386 6.644109 2.283693\nv -0.737890 6.644109 2.360124\nv -0.935889 6.644109 2.386198\nv -1.133890 6.644109 2.360139\nv -1.318400 6.644109 2.283720\nv -1.476843 6.644109 2.162151\nv -1.598423 6.644109 2.003716\nv -1.674855 6.644109 1.819212\nv -1.700929 6.644109 1.621213\nv -1.674870 6.644109 1.423212\nv -1.598451 6.644109 1.238703\nv -1.476882 6.644109 1.080259\nv -1.318446 6.644109 0.958678\nv -1.133944 6.644109 0.882247\nv -0.935944 6.644109 0.856172\nv -0.737943 6.644109 0.882232\nv -0.553434 6.644109 0.958651\nv -0.394989 6.644109 1.080219\nv -0.273410 6.644109 1.238654\nv -0.196978 6.644109 1.423158\nv -0.170903 6.644109 1.621157\nv -0.196962 6.644109 1.819158\nv -0.375868 6.439125 2.181194\nv -0.250010 6.439125 2.017161\nv -0.539892 6.439125 2.307063\nv -0.730904 6.439125 2.386191\nv -0.935887 6.439125 2.413185\nv -1.140874 6.439125 2.386206\nv -1.331892 6.439125 2.307091\nv -1.495925 6.439125 2.181234\nv -1.621794 6.439125 2.017210\nv -1.700922 6.439125 1.826198\nv -1.727916 6.439125 1.621213\nv -1.700937 6.439125 1.416228\nv -1.621823 6.439125 1.225210\nv -1.495965 6.439125 1.061177\nv -1.331942 6.439125 0.935308\nv -1.140928 6.439125 0.856180\nv -0.935945 6.439125 0.829185\nv -0.730960 6.439125 0.856165\nv -0.539941 6.439125 0.935279\nv -0.375908 6.439125 1.061136\nv -0.250038 6.439125 1.225160\nv -0.170910 6.439125 1.416173\nv -0.143917 6.439125 1.621156\nv -0.170895 6.439125 1.826142\nv -0.394951 6.234140 2.162112\nv -0.273382 6.234140 2.003668\nv -0.553386 6.234140 2.283693\nv -0.737889 6.234140 2.360124\nv -0.935889 6.234140 2.386198\nv -1.133890 6.234140 2.360139\nv -1.318400 6.234140 2.283720\nv -1.476843 6.234140 2.162151\nv -1.598423 6.234140 2.003716\nv -1.674855 6.234140 1.819212\nv -1.700930 6.234140 1.621213\nv -1.674870 6.234140 1.423212\nv -1.598451 6.234140 1.238703\nv -1.476882 6.234140 1.080259\nv -1.318447 6.234140 0.958678\nv -1.133943 6.234140 0.882246\nv -0.935944 6.234140 0.856172\nv -0.737943 6.234140 0.882232\nv -0.553433 6.234140 0.958650\nv -0.394989 6.234140 1.080219\nv -0.273409 6.234140 1.238654\nv -0.196978 6.234140 1.423158\nv -0.170903 6.234140 1.621157\nv -0.196962 6.234140 1.819158\nv -0.450900 6.043124 2.106167\nv -0.341904 6.043124 1.964110\nv -0.592949 6.043124 2.215173\nv -0.758370 6.043124 2.283701\nv -0.935891 6.043124 2.307078\nv -1.113414 6.043124 2.283713\nv -1.278841 6.043124 2.215197\nv -1.420897 6.043124 2.106202\nv -1.529904 6.043124 1.964153\nv -1.598432 6.043124 1.798732\nv -1.621809 6.043124 1.621211\nv -1.598444 6.043124 1.443688\nv -1.529929 6.043124 1.278261\nv -1.420933 6.043124 1.136204\nv -1.278884 6.043124 1.027197\nv -1.113462 6.043124 0.958670\nv -0.935941 6.043124 0.935293\nv -0.758418 6.043124 0.958658\nv -0.592992 6.043124 1.027173\nv -0.450935 6.043124 1.136168\nv -0.341929 6.043124 1.278217\nv -0.273402 6.043124 1.443639\nv -0.250023 6.043124 1.621160\nv -0.273388 6.043124 1.798683\nv -0.539902 5.879096 2.017171\nv -0.450907 5.879096 1.901182\nv -0.655885 5.879096 2.106174\nv -0.790950 5.879096 2.162127\nv -0.935896 5.879096 2.181215\nv -1.080843 5.879096 2.162137\nv -1.215914 5.879096 2.106194\nv -1.331902 5.879096 2.017200\nv -1.420905 5.879096 1.901217\nv -1.476857 5.879096 1.766150\nv -1.495945 5.879096 1.621206\nv -1.476867 5.879096 1.476258\nv -1.420925 5.879096 1.341188\nv -1.331931 5.879096 1.225199\nv -1.215949 5.879096 1.136196\nv -1.080882 5.879096 1.080244\nv -0.935937 5.879096 1.061157\nv -0.790990 5.879096 1.080234\nv -0.655919 5.879096 1.136176\nv -0.539931 5.879096 1.225170\nv -0.450927 5.879096 1.341153\nv -0.394976 5.879096 1.476219\nv -0.375887 5.879096 1.621165\nv -0.394965 5.879096 1.766112\nv -0.655892 5.753232 1.901190\nv -0.592963 5.753232 1.819174\nv -0.737903 5.753232 1.964125\nv -0.833410 5.753232 2.003689\nv -0.935902 5.753232 2.017185\nv -1.038395 5.753232 2.003696\nv -1.133904 5.753232 1.964139\nv -1.215921 5.753232 1.901210\nv -1.278855 5.753232 1.819197\nv -1.318419 5.753232 1.723692\nv -1.331916 5.753232 1.621200\nv -1.318427 5.753232 1.518707\nv -1.278869 5.753232 1.423198\nv -1.215941 5.753232 1.341181\nv -1.133929 5.753232 1.278246\nv -1.038423 5.753232 1.238682\nv -0.935931 5.753232 1.225185\nv -0.833438 5.753232 1.238675\nv -0.737928 5.753232 1.278232\nv -0.655912 5.753232 1.341161\nv -0.592977 5.753232 1.423173\nv -0.553413 5.753232 1.518679\nv -0.539916 5.753232 1.621171\nv -0.553405 5.753232 1.723664\nv -0.790965 5.674111 1.766127\nv -0.758390 5.674111 1.723672\nv -0.833417 5.674111 1.798704\nv -0.882854 5.674111 1.819184\nv -0.935909 5.674111 1.826171\nv -0.988963 5.674111 1.819188\nv -1.038403 5.674111 1.798711\nv -1.080857 5.674111 1.766137\nv -1.113434 5.674111 1.723684\nv -1.133914 5.674111 1.674246\nv -1.140901 5.674111 1.621193\nv -1.133918 5.674111 1.568139\nv -1.113442 5.674111 1.518699\nv -1.080868 5.674111 1.476244\nv -1.038415 5.674111 1.443667\nv -0.988978 5.674111 1.423187\nv -0.935924 5.674111 1.416201\nv -0.882869 5.674111 1.423183\nv -0.833430 5.674111 1.443660\nv -0.790975 5.674111 1.476233\nv -0.758398 5.674111 1.518686\nv -0.737918 5.674111 1.568124\nv -0.730931 5.674111 1.621178\nv -0.737914 5.674111 1.674232\nv -0.935916 5.647125 1.621186\nv -0.935916 7.231124 -1.621186\nv -1.133918 7.204138 -1.568138\nv -1.113442 7.204138 -1.518699\nv -1.140901 7.204138 -1.621192\nv -1.133914 7.204138 -1.674246\nv -1.113434 7.204138 -1.723684\nv -1.080857 7.204138 -1.766137\nv -1.038402 7.204138 -1.798711\nv -0.988963 7.204138 -1.819188\nv -0.935909 7.204138 -1.826170\nv -0.882855 7.204138 -1.819184\nv -0.833417 7.204138 -1.798704\nv -0.790965 7.204138 -1.766127\nv -0.758390 7.204138 -1.723672\nv -0.737914 7.204138 -1.674233\nv -0.730932 7.204138 -1.621179\nv -0.737918 7.204138 -1.568125\nv -0.758397 7.204138 -1.518687\nv -0.790975 7.204138 -1.476234\nv -0.833430 7.204138 -1.443660\nv -0.882869 7.204138 -1.423184\nv -0.935923 7.204138 -1.416201\nv -0.988977 7.204138 -1.423187\nv -1.038415 7.204138 -1.443667\nv -1.080867 7.204138 -1.476244\nv -1.318427 7.125016 -1.518706\nv -1.278869 7.125016 -1.423198\nv -1.331916 7.125016 -1.621199\nv -1.318419 7.125016 -1.723691\nv -1.278855 7.125016 -1.819197\nv -1.215921 7.125016 -1.901209\nv -1.133904 7.125016 -1.964139\nv -1.038395 7.125016 -2.003695\nv -0.935902 7.125016 -2.017185\nv -0.833411 7.125016 -2.003688\nv -0.737904 7.125016 -1.964125\nv -0.655893 7.125016 -1.901190\nv -0.592963 7.125016 -1.819174\nv -0.553406 7.125016 -1.723665\nv -0.539916 7.125016 -1.621172\nv -0.553413 7.125016 -1.518680\nv -0.592977 7.125016 -1.423174\nv -0.655911 7.125016 -1.341161\nv -0.737928 7.125016 -1.278233\nv -0.833437 7.125016 -1.238675\nv -0.935929 7.125016 -1.225185\nv -1.038421 7.125016 -1.238682\nv -1.133928 7.125016 -1.278245\nv -1.215940 7.125016 -1.341181\nv -1.476867 6.999153 -1.476258\nv -1.420924 6.999153 -1.341188\nv -1.495945 6.999153 -1.621205\nv -1.476857 6.999153 -1.766150\nv -1.420906 6.999153 -1.901216\nv -1.331903 6.999153 -2.017199\nv -1.215913 6.999153 -2.106194\nv -1.080844 6.999153 -2.162136\nv -0.935897 6.999153 -2.181214\nv -0.790952 6.999153 -2.162126\nv -0.655885 6.999153 -2.106175\nv -0.539902 6.999153 -2.017172\nv -0.450908 6.999153 -1.901183\nv -0.394965 6.999153 -1.766113\nv -0.375888 6.999153 -1.621166\nv -0.394974 6.999153 -1.476221\nv -0.450926 6.999153 -1.341155\nv -0.539929 6.999153 -1.225172\nv -0.655919 6.999153 -1.136176\nv -0.790988 6.999153 -1.080234\nv -0.935934 6.999153 -1.061157\nv -1.080880 6.999153 -1.080244\nv -1.215946 6.999153 -1.136196\nv -1.331930 6.999153 -1.225199\nv -1.598443 6.835124 -1.443686\nv -1.529928 6.835124 -1.278260\nv -1.621808 6.835124 -1.621209\nv -1.598431 6.835124 -1.798730\nv -1.529905 6.835124 -1.964151\nv -1.420899 6.835124 -2.106201\nv -1.278841 6.835124 -2.215197\nv -1.113416 6.835124 -2.283712\nv -0.935893 6.835124 -2.307077\nv -0.758372 6.835124 -2.283700\nv -0.592949 6.835124 -2.215173\nv -0.450901 6.835124 -2.106169\nv -0.341905 6.835124 -1.964112\nv -0.273390 6.835124 -1.798685\nv -0.250025 6.835124 -1.621162\nv -0.273401 6.835124 -1.443642\nv -0.341927 6.835124 -1.278219\nv -0.450933 6.835124 -1.136170\nv -0.592990 6.835124 -1.027174\nv -0.758417 6.835124 -0.958659\nv -0.935939 6.835124 -0.935293\nv -1.113460 6.835124 -0.958670\nv -1.278882 6.835124 -1.027197\nv -1.420932 6.835124 -1.136203\nv -1.674869 6.644109 -1.423211\nv -1.598450 6.644109 -1.238701\nv -1.700929 6.644109 -1.621212\nv -1.674855 6.644109 -1.819211\nv -1.598424 6.644109 -2.003714\nv -1.476844 6.644109 -2.162150\nv -1.318400 6.644109 -2.283720\nv -1.133891 6.644109 -2.360138\nv -0.935890 6.644109 -2.386199\nv -0.737891 6.644109 -2.360124\nv -0.553387 6.644109 -2.283693\nv -0.394952 6.644109 -2.162114\nv -0.273383 6.644109 -2.003670\nv -0.196964 6.644109 -1.819160\nv -0.170903 6.644109 -1.621159\nv -0.196977 6.644109 -1.423161\nv -0.273407 6.644109 -1.238656\nv -0.394988 6.644109 -1.080221\nv -0.553432 6.644109 -0.958652\nv -0.737941 6.644109 -0.882232\nv -0.935941 6.644109 -0.856172\nv -1.133941 6.644109 -0.882246\nv -1.318445 6.644109 -0.958677\nv -1.476880 6.644109 -1.080257\nv -1.700936 6.439125 -1.416227\nv -1.621822 6.439125 -1.225209\nv -1.727916 6.439125 -1.621213\nv -1.700922 6.439125 -1.826196\nv -1.621795 6.439125 -2.017208\nv -1.495925 6.439125 -2.181233\nv -1.331892 6.439125 -2.307091\nv -1.140875 6.439125 -2.386206\nv -0.935889 6.439125 -2.413185\nv -0.730905 6.439125 -2.386192\nv -0.539892 6.439125 -2.307064\nv -0.375868 6.439125 -2.181195\nv -0.250011 6.439125 -2.017163\nv -0.170896 6.439125 -1.826144\nv -0.143916 6.439125 -1.621159\nv -0.170910 6.439125 -1.416175\nv -0.250037 6.439125 -1.225162\nv -0.375906 6.439125 -1.061138\nv -0.539939 6.439125 -0.935280\nv -0.730957 6.439125 -0.856165\nv -0.935943 6.439125 -0.829185\nv -1.140927 6.439125 -0.856179\nv -1.331939 6.439125 -0.935307\nv -1.495964 6.439125 -1.061176\nv -1.674869 6.234140 -1.423211\nv -1.598450 6.234140 -1.238701\nv -1.700929 6.234140 -1.621212\nv -1.674856 6.234140 -1.819210\nv -1.598424 6.234140 -2.003714\nv -1.476844 6.234140 -2.162150\nv -1.318400 6.234140 -2.283720\nv -1.133891 6.234140 -2.360138\nv -0.935890 6.234140 -2.386199\nv -0.737891 6.234140 -2.360124\nv -0.553387 6.234140 -2.283693\nv -0.394952 6.234140 -2.162114\nv -0.273383 6.234140 -2.003670\nv -0.196964 6.234140 -1.819160\nv -0.170902 6.234140 -1.621160\nv -0.196976 6.234140 -1.423160\nv -0.273407 6.234140 -1.238656\nv -0.394988 6.234140 -1.080221\nv -0.553432 6.234140 -0.958651\nv -0.737941 6.234140 -0.882232\nv -0.935942 6.234140 -0.856172\nv -1.133941 6.234140 -0.882246\nv -1.318445 6.234140 -0.958677\nv -1.476880 6.234140 -1.080257\nv -1.598443 6.043124 -1.443686\nv -1.529928 6.043124 -1.278260\nv -1.621808 6.043124 -1.621209\nv -1.598432 6.043124 -1.798730\nv -1.529905 6.043124 -1.964152\nv -1.420899 6.043124 -2.106201\nv -1.278841 6.043124 -2.215197\nv -1.113416 6.043124 -2.283712\nv -0.935892 6.043124 -2.307078\nv -0.758372 6.043124 -2.283701\nv -0.592950 6.043124 -2.215174\nv -0.450901 6.043124 -2.106169\nv -0.341905 6.043124 -1.964112\nv -0.273390 6.043124 -1.798685\nv -0.250023 6.043124 -1.621162\nv -0.273401 6.043124 -1.443641\nv -0.341927 6.043124 -1.278219\nv -0.450933 6.043124 -1.136170\nv -0.592990 6.043124 -1.027174\nv -0.758416 6.043124 -0.958658\nv -0.935939 6.043124 -0.935293\nv -1.113460 6.043124 -0.958670\nv -1.278882 6.043124 -1.027196\nv -1.420931 6.043124 -1.136202\nv -1.476867 5.879096 -1.476258\nv -1.420925 5.879096 -1.341187\nv -1.495945 5.879096 -1.621205\nv -1.476858 5.879096 -1.766150\nv -1.420906 5.879096 -1.901217\nv -1.331903 5.879096 -2.017199\nv -1.215914 5.879096 -2.106194\nv -1.080844 5.879096 -2.162137\nv -0.935897 5.879096 -2.181214\nv -0.790951 5.879096 -2.162127\nv -0.655885 5.879096 -2.106175\nv -0.539902 5.879096 -2.017172\nv -0.450907 5.879096 -1.901183\nv -0.394964 5.879096 -1.766113\nv -0.375887 5.879096 -1.621167\nv -0.394974 5.879096 -1.476221\nv -0.450926 5.879096 -1.341155\nv -0.539929 5.879096 -1.225172\nv -0.655919 5.879096 -1.136176\nv -0.790988 5.879096 -1.080234\nv -0.935935 5.879096 -1.061156\nv -1.080880 5.879096 -1.080244\nv -1.215947 5.879096 -1.136195\nv -1.331930 5.879096 -1.225199\nv -1.318427 5.753232 -1.518706\nv -1.278869 5.753232 -1.423198\nv -1.331917 5.753232 -1.621199\nv -1.318420 5.753232 -1.723691\nv -1.278855 5.753232 -1.819197\nv -1.215922 5.753232 -1.901210\nv -1.133904 5.753232 -1.964139\nv -1.038396 5.753232 -2.003696\nv -0.935902 5.753232 -2.017185\nv -0.833411 5.753232 -2.003689\nv -0.737904 5.753232 -1.964125\nv -0.655892 5.753232 -1.901191\nv -0.592963 5.753232 -1.819174\nv -0.553406 5.753232 -1.723665\nv -0.539915 5.753232 -1.621172\nv -0.553413 5.753232 -1.518680\nv -0.592976 5.753232 -1.423174\nv -0.655911 5.753232 -1.341161\nv -0.737928 5.753232 -1.278232\nv -0.833437 5.753232 -1.238675\nv -0.935930 5.753232 -1.225185\nv -1.038421 5.753232 -1.238682\nv -1.133928 5.753232 -1.278245\nv -1.215940 5.753232 -1.341180\nv -1.133918 5.674111 -1.568139\nv -1.113442 5.674111 -1.518699\nv -1.140901 5.674111 -1.621192\nv -1.133915 5.674111 -1.674246\nv -1.113435 5.674111 -1.723684\nv -1.080857 5.674111 -1.766137\nv -1.038403 5.674111 -1.798711\nv -0.988963 5.674111 -1.819188\nv -0.935909 5.674111 -1.826170\nv -0.882855 5.674111 -1.819184\nv -0.833418 5.674111 -1.798705\nv -0.790965 5.674111 -1.766127\nv -0.758390 5.674111 -1.723672\nv -0.737913 5.674111 -1.674233\nv -0.730931 5.674111 -1.621178\nv -0.737917 5.674111 -1.568125\nv -0.758397 5.674111 -1.518687\nv -0.790975 5.674111 -1.476233\nv -0.833430 5.674111 -1.443660\nv -0.882869 5.674111 -1.423183\nv -0.935923 5.674111 -1.416200\nv -0.988977 5.674111 -1.423187\nv -1.038415 5.674111 -1.443667\nv -1.080867 5.674111 -1.476244\nv -0.935916 5.647125 -1.621186\nv -0.190840 5.515944 -0.247657\nv -0.243367 5.517920 -0.235939\nv -0.261354 5.488284 -0.267095\nv -0.208826 5.486310 -0.278812\nv -0.173079 5.486310 -0.299449\nv -0.155093 5.515944 -0.268294\nv -0.228850 5.582496 -0.210793\nv -0.139581 5.583405 -0.241425\nv -0.233466 5.666270 -0.218788\nv -0.144205 5.670815 -0.249435\nv -0.255802 5.742265 -0.257478\nv -0.167363 5.750560 -0.289548\nv -0.297788 5.792035 -0.330207\nv -0.211060 5.803005 -0.365240\nv -0.343482 5.797686 -0.409358\nv -0.258901 5.809513 -0.448111\nv -0.486318 5.676223 -0.655443\nv -0.405936 5.684768 -0.702802\nv -0.517488 5.659646 -0.709435\nv -0.437105 5.668191 -0.756794\nv -0.571735 5.679368 -0.802186\nv -0.542081 5.656149 -0.753369\nv -0.461677 5.665982 -0.799357\nv -0.489236 5.692117 -0.847093\nv -0.572927 5.695159 -0.804252\nv -0.490428 5.707908 -0.849159\nv -0.591090 5.686442 -0.844394\nv -0.575502 5.701816 -0.817393\nv -0.498818 5.708117 -0.863693\nv -0.514406 5.692743 -0.890693\nv -0.606256 5.640802 -0.864248\nv -0.600253 5.667114 -0.853850\nv -0.525201 5.671900 -0.909393\nv -0.531203 5.645587 -0.919790\nv -0.604916 5.591613 -0.862565\nv -0.530623 5.594168 -0.918785\nv -0.588219 5.544410 -0.833204\nv -0.515060 5.543750 -0.891826\nv -0.551621 5.518014 -0.769893\nv -0.477914 5.514775 -0.827483\nv -0.553208 5.442576 -0.771806\nv -0.545999 5.489536 -0.759319\nv -0.470734 5.485821 -0.815044\nv -0.477942 5.438861 -0.827531\nv -0.553757 5.360417 -0.773593\nv -0.477973 5.355863 -0.827584\nv -0.535240 5.306975 -0.741518\nv -0.458816 5.299571 -0.794401\nv -0.501877 5.281743 -0.683728\nv -0.424066 5.272824 -0.734208\nv -0.462811 5.285222 -0.619590\nv -0.382114 5.278866 -0.661537\nv -0.470074 5.311057 -0.628639\nv -0.461690 5.295666 -0.614116\nv -0.375516 5.290197 -0.650110\nv -0.383901 5.305588 -0.664634\nv -0.479111 5.360498 -0.644293\nv -0.393471 5.357014 -0.681211\nv -0.473747 5.426218 -0.635001\nv -0.388052 5.425636 -0.671824\nv -0.445369 5.495645 -0.585845\nv -0.358659 5.498289 -0.620911\nv -0.423046 5.539909 -0.544138\nv -0.335433 5.539687 -0.580678\nv -0.402936 5.471096 -0.512342\nv -0.405018 5.520258 -0.515948\nv -0.329649 5.522835 -0.570658\nv -0.327567 5.473672 -0.567053\nv -0.384342 5.362035 -0.480091\nv -0.308249 5.359894 -0.533591\nv -0.354674 5.287212 -0.426508\nv -0.368975 5.316366 -0.451280\nv -0.295007 5.315586 -0.510652\nv -0.280706 5.286431 -0.485881\nv -0.374991 5.265692 -0.461581\nv -0.356747 5.267126 -0.429978\nv -0.282678 5.271138 -0.489296\nv -0.300922 5.269704 -0.520898\nv -0.403070 5.225375 -0.513521\nv -0.391191 5.253418 -0.492945\nv -0.315984 5.254966 -0.546988\nv -0.327862 5.226924 -0.567564\nv -0.389142 5.146736 -0.489853\nv -0.402979 5.194917 -0.513821\nv -0.326883 5.188813 -0.565868\nv -0.313047 5.140632 -0.541901\nv -0.343356 5.109948 -0.409139\nv -0.371460 5.122450 -0.457820\nv -0.292077 5.110291 -0.505577\nv -0.263973 5.097790 -0.456896\nv -0.279875 5.179461 -0.299573\nv -0.319359 5.118040 -0.367904\nv -0.237305 5.106178 -0.410702\nv -0.194744 5.170083 -0.336978\nv -0.268798 5.259162 -0.279990\nv -0.182183 5.254062 -0.315219\nv -0.281731 5.356741 -0.302429\nv -0.196221 5.356647 -0.339536\nv -0.300316 5.417790 -0.334622\nv -0.214805 5.417697 -0.371727\nv -0.271645 5.469887 -0.291056\nv -0.292658 5.458251 -0.327454\nv -0.213591 5.454040 -0.369624\nv -0.192578 5.465675 -0.333227\nv -0.296826 5.533141 -0.286469\nv -0.286707 5.534671 -0.309898\nv -0.292985 5.504072 -0.320772\nv -0.307646 5.501982 -0.305212\nv -0.292762 5.537968 -0.322346\nv -0.319607 5.538089 -0.327890\nv -0.325063 5.520028 -0.337341\nv -0.299040 5.507370 -0.333220\nv -0.318430 5.465744 -0.372094\nv -0.304354 5.457216 -0.347713\nv -0.316096 5.475670 -0.327095\nv -0.397028 5.483232 -0.439979\nv -0.398660 5.538704 -0.442806\nv -0.410370 5.515820 -0.463091\nv -0.408673 5.475719 -0.460150\nv -0.381025 5.217666 -0.412258\nv -0.362534 5.186327 -0.380229\nv -0.330125 5.233723 -0.324091\nv -0.355705 5.262099 -0.387217\nv -0.546223 5.324542 -0.719585\nv -0.516395 5.301105 -0.667917\nv -0.517817 5.315813 -0.649208\nv -0.535706 5.339489 -0.680196\nv -0.588197 5.657892 -0.789743\nv -0.595820 5.668571 -0.802949\nv -0.607675 5.651269 -0.804861\nv -0.606498 5.634236 -0.802821\nv -0.522819 5.511280 -0.657873\nv -0.499943 5.561415 -0.618248\nv -0.508335 5.613324 -0.632784\nv -0.546169 5.588543 -0.698319\nv -0.592421 5.590698 -0.778437\nv -0.581375 5.556879 -0.759304\nv -0.566938 5.572126 -0.734296\nv -0.561544 5.448348 -0.745288\nv -0.562532 5.373504 -0.747835\nv -0.550857 5.368674 -0.706441\nv -0.544711 5.424644 -0.695794\nv -0.300127 5.608974 -0.272129\nv -0.265722 5.577381 -0.233704\nv -0.269503 5.652568 -0.240252\nv -0.304721 5.657471 -0.280085\nv -0.310735 5.503573 -0.290503\nv -0.297990 5.531240 -0.268426\nv -0.374076 5.662285 -0.419520\nv -0.351965 5.666801 -0.381893\nv -0.352606 5.715039 -0.363032\nv -0.372833 5.719302 -0.398069\nv -0.327190 5.412295 -0.340212\nv -0.312418 5.362868 -0.314624\nv -0.300067 5.274145 -0.293195\nv -0.305950 5.201977 -0.303782\nv -0.337957 5.144361 -0.359158\nv -0.361952 5.136270 -0.400392\nv -0.384875 5.146466 -0.440099\nv -0.402558 5.170753 -0.472132\nv -0.409156 5.197310 -0.483560\nv -0.409247 5.227768 -0.483260\nv -0.400771 5.243670 -0.468579\nv -0.384570 5.255943 -0.437216\nv -0.353633 5.282185 -0.383746\nv -0.379358 5.325606 -0.428306\nv -0.394726 5.371274 -0.457117\nv -0.410825 5.470294 -0.485049\nv -0.412522 5.510393 -0.487989\nv -0.379911 5.592010 -0.473217\nv -0.398224 5.557381 -0.504938\nv -0.405728 5.547515 -0.476980\nv -0.394017 5.570402 -0.456695\nv -0.349243 5.625658 -0.419337\nv -0.366300 5.601588 -0.407924\nv -0.296569 5.604552 -0.329733\nv -0.332020 5.629180 -0.390466\nv -0.349076 5.605110 -0.379054\nv -0.322738 5.583147 -0.334107\nv -0.331195 5.474578 -0.385716\nv -0.314199 5.486594 -0.356276\nv -0.340224 5.499254 -0.360395\nv -0.364578 5.473194 -0.402582\nv -0.318796 5.450655 -0.364612\nv -0.332871 5.459183 -0.388993\nv -0.366254 5.457798 -0.405860\nv -0.345669 5.445159 -0.370202\nv -0.308488 5.628274 -0.305646\nv -0.291844 5.612298 -0.317776\nv -0.331628 5.648447 -0.387623\nv -0.387359 5.603806 -0.484801\nv -0.353738 5.643930 -0.425250\nv -0.413076 5.612260 -0.488390\nv -0.405672 5.569179 -0.516522\nv -0.430359 5.578382 -0.518327\nv -0.447733 5.549114 -0.545942\nv -0.478201 5.486811 -0.601758\nv -0.503262 5.424101 -0.645167\nv -0.507739 5.365025 -0.652924\nv -0.499364 5.320957 -0.638416\nv -0.492525 5.308403 -0.626569\nv -0.493647 5.297959 -0.632044\nv -0.498908 5.297311 -0.641156\nv -0.552243 5.497252 -0.729176\nv -0.557864 5.525727 -0.739749\nv -0.590487 5.550106 -0.796172\nv -0.609642 5.590175 -0.829790\nv -0.612828 5.632510 -0.834673\nv -0.607558 5.655898 -0.825545\nv -0.598394 5.675226 -0.816090\nv -0.561857 5.636914 -0.746666\nv -0.537264 5.640411 -0.702732\nv -0.499874 5.662618 -0.637965\nv -0.368061 5.773489 -0.410975\nv -0.326742 5.767262 -0.339402\nv -0.289270 5.721624 -0.274494\nv -0.279439 5.519274 -0.257463\nv -0.294109 5.495102 -0.282875\nv -0.304400 5.476707 -0.306835\nv -0.317456 5.472592 -0.370408\nv -0.315123 5.482518 -0.325409\nv -0.300460 5.484608 -0.340968\nv -0.508678 5.311946 -0.633378\nv -0.372331 5.494235 -0.397199\nv -0.347977 5.520294 -0.355013\nv -0.342521 5.538355 -0.345562\nv -0.346793 5.555797 -0.352962\nv -0.370803 5.570638 -0.394553\nv -0.382220 5.504280 -0.414330\nv -0.394518 5.235818 -0.435631\nv -0.402993 5.219917 -0.450312\nv -0.538100 5.463790 -0.684342\nv -0.342496 5.376470 -0.345520\nv -0.357268 5.425898 -0.371107\nv -0.377853 5.438536 -0.406765\nv -0.389498 5.431025 -0.426936\nv -0.380014 5.349375 -0.410508\nv -0.354290 5.305954 -0.365948\nv -0.327455 5.273817 -0.319466\nv -0.475595 5.605947 -0.576072\nv -0.155791 5.282185 -0.497961\nv -0.140050 5.305954 -0.489630\nv -0.113215 5.273817 -0.443148\nv -0.115885 5.233723 -0.447772\nv -0.157760 5.262099 -0.501491\nv -0.233969 5.578382 -0.631704\nv -0.249195 5.549114 -0.660559\nv -0.261355 5.605947 -0.699753\nv -0.244751 5.569179 -0.609422\nv -0.238444 5.557381 -0.597180\nv -0.244581 5.520258 -0.608569\nv -0.259978 5.539909 -0.638278\nv -0.303458 5.320957 -0.751513\nv -0.321466 5.339489 -0.803878\nv -0.311833 5.365025 -0.766021\nv -0.216686 5.612260 -0.601767\nv -0.158593 5.719302 -0.521750\nv -0.176548 5.662285 -0.533553\nv -0.167981 5.504280 -0.538011\nv -0.184420 5.538704 -0.566488\nv -0.156563 5.570638 -0.518234\nv -0.285703 5.561415 -0.741930\nv -0.294095 5.613324 -0.756465\nv -0.294438 5.311946 -0.757060\nv -0.296619 5.308403 -0.739666\nv -0.300799 5.297959 -0.743376\nv -0.323860 5.463790 -0.808024\nv -0.308579 5.511280 -0.781555\nv -0.307356 5.424101 -0.758264\nv -0.191680 5.643930 -0.518806\nv -0.170152 5.648447 -0.480843\nv -0.172418 5.629180 -0.482604\nv -0.188807 5.625658 -0.511957\nv -0.170394 5.601588 -0.521021\nv -0.154006 5.605110 -0.491668\nv -0.165774 5.349375 -0.534189\nv -0.181516 5.325606 -0.542521\nv -0.198780 5.371274 -0.570237\nv -0.180278 5.235818 -0.559312\nv -0.205683 5.243670 -0.581204\nv -0.186625 5.255943 -0.551490\nv -0.188753 5.219917 -0.573994\nv -0.214464 5.197310 -0.595956\nv -0.214159 5.227768 -0.595885\nv -0.148294 5.186327 -0.503911\nv -0.188969 5.146466 -0.553196\nv -0.207866 5.170753 -0.584528\nv -0.166785 5.217666 -0.535940\nv -0.142337 5.144361 -0.472090\nv -0.166046 5.136270 -0.513489\nv -0.143028 5.425898 -0.494789\nv -0.148045 5.445159 -0.484291\nv -0.131314 5.412295 -0.453292\nv -0.397708 5.668571 -0.917320\nv -0.393435 5.651269 -0.928542\nv -0.411406 5.655898 -0.938784\nv -0.407801 5.675226 -0.926120\nv -0.163613 5.438536 -0.530446\nv -0.182788 5.483232 -0.563660\nv -0.158091 5.494235 -0.520881\nv -0.166629 5.473194 -0.516859\nv -0.168630 5.457798 -0.519949\nv -0.210480 5.547515 -0.589697\nv -0.196130 5.515820 -0.586772\nv -0.216616 5.510393 -0.601086\nv -0.162331 5.472592 -0.459963\nv -0.163304 5.465744 -0.461649\nv -0.170717 5.459183 -0.482605\nv -0.168717 5.474578 -0.479515\nv -0.133737 5.520294 -0.478694\nv -0.129891 5.520028 -0.450014\nv -0.142274 5.499254 -0.474672\nv -0.124529 5.482518 -0.435439\nv -0.110778 5.501982 -0.418866\nv -0.096495 5.503573 -0.414184\nv -0.098203 5.495102 -0.395972\nv -0.113806 5.476707 -0.416865\nv -0.125503 5.475670 -0.437126\nv -0.145335 5.484608 -0.430523\nv -0.151721 5.486594 -0.450075\nv -0.139336 5.507370 -0.425418\nv -0.131584 5.504072 -0.413950\nv -0.355613 5.497252 -0.842691\nv -0.361958 5.525727 -0.852847\nv -0.352698 5.572126 -0.857978\nv -0.331929 5.588543 -0.822001\nv -0.116542 5.362868 -0.427705\nv -0.128256 5.376470 -0.469202\nv -0.100918 5.488284 -0.359716\nv -0.116521 5.469887 -0.380609\nv -0.365951 5.636914 -0.859763\nv -0.381645 5.656149 -0.845989\nv -0.355897 5.659646 -0.802723\nv -0.340203 5.640411 -0.816496\nv -0.420377 5.701816 -0.906947\nv -0.410284 5.695159 -0.898146\nv -0.439571 5.667114 -0.946612\nv -0.435965 5.686442 -0.933949\nv -0.384839 5.489536 -0.852358\nv -0.391184 5.518014 -0.862513\nv -0.350317 5.324542 -0.832682\nv -0.366626 5.373504 -0.860932\nv -0.336617 5.368674 -0.830122\nv -0.301254 5.295666 -0.706737\nv -0.305434 5.285222 -0.710445\nv -0.303577 5.315813 -0.772890\nv -0.155020 5.666801 -0.495590\nv -0.128253 5.583147 -0.446384\nv -0.124435 5.538089 -0.440564\nv -0.128281 5.538355 -0.469244\nv -0.132553 5.555797 -0.476643\nv -0.133059 5.537968 -0.414544\nv -0.137552 5.604552 -0.421535\nv -0.129560 5.612298 -0.411464\nv -0.125306 5.534671 -0.403076\nv -0.198769 5.570402 -0.569412\nv -0.220131 5.592010 -0.565458\nv -0.226438 5.603806 -0.577701\nv -0.214919 5.470294 -0.598146\nv -0.194433 5.475719 -0.583832\nv -0.175258 5.431025 -0.550617\nv -0.206602 5.316366 -0.545018\nv -0.223868 5.362035 -0.572733\nv -0.194270 5.267126 -0.523776\nv -0.192302 5.287212 -0.520247\nv -0.231574 5.253418 -0.585092\nv -0.212515 5.265692 -0.555379\nv -0.243758 5.194917 -0.605739\nv -0.243453 5.225375 -0.605668\nv -0.211023 5.122450 -0.550440\nv -0.229922 5.146736 -0.581772\nv -0.159211 5.118040 -0.460359\nv -0.182920 5.109948 -0.501759\nv -0.110387 5.201977 -0.416681\nv -0.104161 5.274145 -0.406292\nv -0.139911 5.417790 -0.427224\nv -0.156642 5.450655 -0.458224\nv -0.282295 5.486811 -0.714855\nv -0.302813 5.662618 -0.751729\nv -0.172155 5.773489 -0.524072\nv -0.138366 5.715039 -0.486714\nv -0.130836 5.767262 -0.452499\nv -0.083750 5.531240 -0.392107\nv -0.083533 5.519274 -0.370560\nv -0.110732 5.628274 -0.419811\nv -0.085887 5.608974 -0.395810\nv -0.099957 5.533141 -0.400122\nv -0.090481 5.657471 -0.403767\nv -0.093365 5.721624 -0.387591\nv -0.073597 5.652568 -0.353349\nv -0.330471 5.424644 -0.819475\nv -0.367135 5.556879 -0.882986\nv -0.394507 5.550106 -0.909312\nv -0.378181 5.590698 -0.902118\nv -0.414041 5.590175 -0.942711\nv -0.392258 5.634236 -0.926503\nv -0.416676 5.632510 -0.947912\nv -0.390084 5.657892 -0.904114\nv -0.149229 5.457216 -0.437267\nv -0.137534 5.458251 -0.417007\nv -0.137331 5.486310 -0.320087\nv -0.069817 5.577381 -0.346801\nv -0.364914 5.448348 -0.858803\nv -0.306059 5.297311 -0.752488\nv -0.320489 5.301105 -0.781014\nv -0.082931 5.517920 -0.328560\nv -0.068414 5.582496 -0.303413\nv -0.073030 5.666270 -0.311409\nv -0.095365 5.742265 -0.350098\nv -0.137352 5.792035 -0.422827\nv -0.183046 5.797686 -0.501978\nv -0.324727 5.676223 -0.748730\nv -0.409092 5.679368 -0.896081\nv -0.445574 5.640802 -0.957010\nv -0.444787 5.591613 -0.955008\nv -0.427710 5.544410 -0.925866\nv -0.392047 5.442576 -0.864844\nv -0.393320 5.360417 -0.866213\nv -0.374803 5.306975 -0.834138\nv -0.341441 5.281743 -0.776348\nv -0.309638 5.311057 -0.721259\nv -0.318675 5.360498 -0.736913\nv -0.313311 5.426218 -0.727621\nv -0.284933 5.495645 -0.678465\nv -0.242500 5.471096 -0.604963\nv -0.119781 5.179461 -0.391995\nv -0.108362 5.259162 -0.372610\nv -0.121326 5.356741 -0.395032\nv -0.119345 5.515944 -0.288931\nv -0.398380 5.464243 -0.725755\nv -0.430247 5.464243 -0.707360\nv -0.734536 5.123801 -1.214485\nv -0.685573 5.123511 -1.243338\nv -0.796909 5.069855 -1.444054\nv -0.852920 5.069851 -1.411722\nv -0.920091 5.091953 -1.520123\nv -0.856606 5.091958 -1.556768\nv -0.913586 5.160743 -1.664493\nv -0.984510 5.160740 -1.623558\nv -0.951120 5.157276 -1.647598\nv -0.957939 5.269464 -1.750503\nv -1.036909 5.269464 -1.704926\nv -1.000252 5.267411 -1.732596\nv -0.975835 5.441407 -1.786544\nv -1.059114 5.441407 -1.738478\nv -1.020648 5.441407 -1.767989\nv -1.113416 5.441407 -1.792789\nv -0.995699 5.441407 -1.860732\nv -1.140566 5.479807 -1.819945\nv -1.005629 5.479807 -1.897825\nv -1.095316 5.531006 -1.774685\nv -0.989078 5.531006 -1.836003\nv -1.027439 5.569407 -1.706796\nv -0.964249 5.569407 -1.743269\nv -1.063639 5.595008 -1.743004\nv -0.977490 5.595008 -1.792728\nv -1.104366 5.665406 -1.783737\nv -0.992388 5.665406 -1.848366\nv -1.126991 5.665406 -1.806366\nv -1.000664 5.665406 -1.879278\nv -1.126991 5.697407 -1.806366\nv -1.000664 5.697407 -1.879278\nv -0.446690 5.470578 -0.701562\nv -0.461982 5.480661 -0.698612\nv -0.783824 5.148871 -1.201410\nv -0.898613 5.101691 -1.378865\nv -0.965900 5.123687 -1.472525\nv -1.030241 5.187052 -1.560951\nv -1.083870 5.285051 -1.628364\nv -1.107191 5.441407 -1.655226\nv -1.181372 5.441407 -1.675111\nv -1.218463 5.479807 -1.685053\nv -1.156646 5.531006 -1.668482\nv -1.063919 5.569407 -1.643627\nv -1.113374 5.595008 -1.656883\nv -1.169010 5.665406 -1.671797\nv -1.199917 5.665406 -1.680082\nv -1.199917 5.697407 -1.680082\nv -0.789177 5.077298 -1.304126\nv -0.838332 5.107703 -1.282147\nv -0.869656 5.160480 -1.274563\nv -0.921752 5.156838 -1.354278\nv -0.981772 5.178650 -1.426722\nv -1.038541 5.232628 -1.493445\nv -1.086259 5.312052 -1.541328\nv -1.107201 5.441407 -1.559090\nv -1.181387 5.441407 -1.539221\nv -1.218479 5.479807 -1.529285\nv -1.156659 5.531006 -1.545843\nv -1.063926 5.569407 -1.570679\nv -1.113384 5.595008 -1.557434\nv -1.169023 5.665406 -1.542532\nv -1.199933 5.665406 -1.534253\nv -1.199933 5.697407 -1.534253\nv -0.874906 5.221419 -1.283654\nv -0.916141 5.220516 -1.344552\nv -0.963454 5.242119 -1.394983\nv -1.007189 5.285254 -1.439125\nv -1.043437 5.343229 -1.467137\nv -1.059143 5.441407 -1.475827\nv -1.113456 5.441407 -1.421529\nv -1.140612 5.479807 -1.394378\nv -1.095351 5.531006 -1.439627\nv -1.027460 5.569407 -1.507502\nv -1.063669 5.595008 -1.471301\nv -1.104403 5.665406 -1.430577\nv -1.127033 5.665406 -1.407954\nv -1.127033 5.697407 -1.407954\nv -0.852675 5.274195 -1.306987\nv -0.883280 5.275664 -1.352291\nv -0.915854 5.297085 -1.385816\nv -0.944582 5.330832 -1.412547\nv -0.966877 5.370231 -1.425672\nv -0.975892 5.441407 -1.427749\nv -0.995778 5.441407 -1.353568\nv -1.005722 5.479807 -1.316478\nv -0.989150 5.531006 -1.378294\nv -0.964291 5.569407 -1.471022\nv -0.977549 5.595008 -1.421566\nv -0.992464 5.665406 -1.365932\nv -1.000750 5.665406 -1.335022\nv -1.000750 5.697407 -1.335022\nv -0.809206 5.304605 -1.338784\nv -0.831975 5.307508 -1.375422\nv -0.851728 5.328821 -1.401674\nv -0.867498 5.357145 -1.420831\nv -0.877092 5.385822 -1.428041\nv -0.879755 5.441407 -1.427736\nv -0.859888 5.441407 -1.353550\nv -0.849955 5.479807 -1.316456\nv -0.866511 5.531006 -1.378278\nv -0.891344 5.569407 -1.471010\nv -0.927819 5.569407 -1.466213\nv -0.878099 5.595008 -1.421553\nv -0.863198 5.665406 -1.365914\nv -0.854921 5.665406 -1.335005\nv -0.854921 5.697407 -1.335005\nv -0.755362 5.304673 -1.369219\nv -0.775972 5.307511 -1.407747\nv -0.788254 5.328824 -1.438312\nv -0.796588 5.357148 -1.461758\nv -0.798139 5.385825 -1.473610\nv -0.796490 5.441407 -1.475793\nv -0.742193 5.441407 -1.421479\nv -0.715044 5.479807 -1.394323\nv -0.760293 5.531006 -1.439584\nv -0.828165 5.569407 -1.507477\nv -0.791967 5.595008 -1.471266\nv -0.751243 5.665406 -1.430531\nv -0.728618 5.665406 -1.407900\nv -0.728618 5.697407 -1.407900\nv -0.706357 5.274205 -1.391448\nv -0.730279 5.275675 -1.440605\nv -0.742443 5.297095 -1.485909\nv -0.750855 5.330838 -1.524364\nv -0.751173 5.370237 -1.550168\nv -0.769616 5.379807 -1.509160\nv -0.748410 5.441407 -1.559041\nv -0.674230 5.441407 -1.539153\nv -0.637140 5.479807 -1.529208\nv -0.698957 5.531006 -1.545782\nv -0.791682 5.569407 -1.570644\nv -0.742229 5.595008 -1.557386\nv -0.686594 5.665406 -1.542468\nv -0.655687 5.665406 -1.534181\nv -0.655687 5.697407 -1.534181\nv -0.429326 5.586796 -0.779343\nv -0.397591 5.570380 -0.788089\nv -0.684352 5.287472 -1.339637\nv -0.733378 5.312833 -1.326123\nv -0.648650 5.243540 -1.334631\nv -0.675030 5.221431 -1.399032\nv -0.707136 5.220531 -1.465191\nv -0.726568 5.242130 -1.531714\nv -0.742550 5.285265 -1.591869\nv -0.748779 5.343235 -1.637205\nv -0.748396 5.441407 -1.655179\nv -0.674209 5.441407 -1.675043\nv -0.637117 5.479807 -1.684978\nv -0.698938 5.531006 -1.668422\nv -0.791670 5.569407 -1.643591\nv -0.742214 5.595008 -1.656834\nv -0.686574 5.665406 -1.671732\nv -0.655662 5.665406 -1.680011\nv -0.655662 5.697407 -1.680011\nv -0.635842 5.192812 -1.312450\nv -0.669776 5.160491 -1.389942\nv -0.712747 5.156850 -1.474922\nv -0.744882 5.178664 -1.563453\nv -0.773897 5.232639 -1.646192\nv -0.791597 5.312058 -1.711398\nv -0.796449 5.441407 -1.738443\nv -0.742135 5.441407 -1.792739\nv -0.714976 5.479807 -1.819889\nv -0.760240 5.531006 -1.774641\nv -0.828134 5.569407 -1.706770\nv -0.791923 5.595008 -1.742968\nv -0.751187 5.665406 -1.783690\nv -0.728556 5.665406 -1.806314\nv -0.728556 5.697407 -1.806314\nv -0.649356 5.148880 -1.279036\nv -0.692005 5.107712 -1.366613\nv -0.745605 5.101700 -1.467185\nv -0.792479 5.123696 -1.572623\nv -0.836501 5.187061 -1.672774\nv -0.868155 5.285056 -1.752868\nv -0.879698 5.441407 -1.786525\nv -0.859808 5.441407 -1.860707\nv -0.849863 5.479807 -1.897795\nv -0.866438 5.531006 -1.835980\nv -0.891301 5.569407 -1.743255\nv -0.878041 5.595008 -1.792708\nv -0.863123 5.665406 -1.848343\nv -0.854835 5.665406 -1.879251\nv -0.854835 5.697407 -1.879251\nv -0.735759 5.077236 -1.335295\nv -0.927774 5.569407 -1.748064\nv -0.374937 5.480664 -0.748860\nv -0.366189 5.509104 -0.770491\nv -0.374480 5.541945 -0.784849\nv -0.783124 5.312378 -1.298597\nv -0.461185 5.586796 -0.760950\nv -0.818813 5.287462 -1.262015\nv -0.484630 5.570374 -0.737844\nv -0.832330 5.243531 -1.228599\nv -0.493380 5.541935 -0.716213\nv -0.819524 5.192803 -1.206417\nv -0.485091 5.509098 -0.701854\nv -0.119037 5.515944 0.289109\nv -0.082623 5.517920 0.328738\nv -0.100609 5.488284 0.359894\nv -0.137023 5.486310 0.320264\nv -0.172770 5.486310 0.299627\nv -0.154784 5.515944 0.268472\nv -0.068106 5.582496 0.303591\nv -0.139273 5.583405 0.241603\nv -0.072721 5.666270 0.311587\nv -0.143897 5.670815 0.249613\nv -0.095057 5.742265 0.350276\nv -0.167054 5.750560 0.289726\nv -0.137044 5.792035 0.423005\nv -0.210752 5.803005 0.365418\nv -0.182738 5.797686 0.502156\nv -0.258593 5.809513 0.448289\nv -0.324419 5.676223 0.748908\nv -0.405627 5.684768 0.702980\nv -0.355589 5.659646 0.802901\nv -0.436797 5.668191 0.756972\nv -0.408784 5.679368 0.896259\nv -0.381337 5.656149 0.846167\nv -0.461369 5.665982 0.799535\nv -0.488927 5.692117 0.847271\nv -0.409976 5.695159 0.898324\nv -0.490120 5.707908 0.849337\nv -0.435656 5.686442 0.934127\nv -0.420068 5.701816 0.907125\nv -0.498510 5.708117 0.863871\nv -0.514098 5.692743 0.890871\nv -0.445265 5.640802 0.957188\nv -0.439263 5.667114 0.946790\nv -0.524893 5.671900 0.909571\nv -0.530895 5.645587 0.919968\nv -0.444478 5.591613 0.955186\nv -0.530315 5.594168 0.918963\nv -0.427402 5.544410 0.926044\nv -0.514752 5.543750 0.892004\nv -0.390876 5.518014 0.862691\nv -0.477606 5.514775 0.827661\nv -0.391739 5.442576 0.865022\nv -0.384531 5.489536 0.852536\nv -0.470425 5.485821 0.815222\nv -0.477634 5.438861 0.827709\nv -0.393012 5.360417 0.866391\nv -0.477664 5.355863 0.827762\nv -0.374495 5.306975 0.834316\nv -0.458508 5.299571 0.794579\nv -0.341133 5.281743 0.776526\nv -0.423758 5.272824 0.734386\nv -0.305125 5.285222 0.710622\nv -0.381805 5.278866 0.661715\nv -0.309330 5.311057 0.721437\nv -0.300946 5.295666 0.706915\nv -0.375208 5.290197 0.650288\nv -0.383593 5.305588 0.664812\nv -0.318367 5.360498 0.737091\nv -0.393163 5.357014 0.681389\nv -0.313002 5.426218 0.727799\nv -0.387744 5.425636 0.672002\nv -0.284625 5.495645 0.678643\nv -0.358351 5.498289 0.621089\nv -0.259670 5.539909 0.638456\nv -0.335124 5.539687 0.580856\nv -0.242191 5.471096 0.605141\nv -0.244273 5.520258 0.608747\nv -0.329340 5.522835 0.570836\nv -0.327259 5.473672 0.567231\nv -0.223560 5.362035 0.572911\nv -0.307941 5.359894 0.533769\nv -0.191993 5.287212 0.520425\nv -0.206294 5.316366 0.545196\nv -0.294698 5.315586 0.510830\nv -0.280398 5.286431 0.486059\nv -0.212206 5.265692 0.555557\nv -0.193962 5.267126 0.523954\nv -0.282370 5.271138 0.489474\nv -0.300614 5.269704 0.521076\nv -0.243145 5.225375 0.605846\nv -0.231266 5.253418 0.585270\nv -0.315675 5.254966 0.547166\nv -0.327554 5.226924 0.567742\nv -0.229613 5.146736 0.581950\nv -0.243450 5.194917 0.605917\nv -0.326575 5.188813 0.566046\nv -0.312739 5.140632 0.542079\nv -0.182611 5.109948 0.501937\nv -0.210715 5.122450 0.550618\nv -0.291769 5.110291 0.505755\nv -0.263665 5.097790 0.457074\nv -0.119473 5.179461 0.392173\nv -0.158903 5.118040 0.460537\nv -0.236997 5.106178 0.410880\nv -0.194436 5.170083 0.337156\nv -0.108053 5.259162 0.372788\nv -0.181874 5.254062 0.315397\nv -0.121018 5.356741 0.395210\nv -0.195912 5.356647 0.339714\nv -0.139603 5.417790 0.427402\nv -0.214497 5.417697 0.371905\nv -0.116213 5.469887 0.380787\nv -0.137225 5.458251 0.417185\nv -0.213282 5.454040 0.369802\nv -0.192270 5.465675 0.333405\nv -0.099648 5.533141 0.400300\nv -0.124998 5.534671 0.403254\nv -0.131276 5.504072 0.414128\nv -0.110469 5.501982 0.419044\nv -0.132750 5.537968 0.414722\nv -0.124127 5.538089 0.440742\nv -0.129583 5.520028 0.450192\nv -0.139028 5.507370 0.425596\nv -0.162996 5.465744 0.461827\nv -0.148920 5.457216 0.437445\nv -0.125194 5.475670 0.437304\nv -0.182479 5.483232 0.563838\nv -0.184112 5.538704 0.566666\nv -0.195822 5.515820 0.586950\nv -0.194125 5.475719 0.584010\nv -0.166476 5.217666 0.536118\nv -0.147986 5.186327 0.504089\nv -0.115577 5.233723 0.447950\nv -0.157452 5.262099 0.501669\nv -0.350009 5.324542 0.832860\nv -0.320181 5.301105 0.781192\nv -0.303268 5.315813 0.773068\nv -0.321158 5.339489 0.804056\nv -0.389776 5.657892 0.904292\nv -0.397399 5.668571 0.917498\nv -0.393127 5.651269 0.928720\nv -0.391950 5.634236 0.926681\nv -0.308271 5.511280 0.781733\nv -0.285395 5.561415 0.742108\nv -0.293787 5.613324 0.756643\nv -0.331620 5.588543 0.822179\nv -0.377872 5.590698 0.902296\nv -0.366827 5.556879 0.883164\nv -0.352390 5.572126 0.858156\nv -0.364606 5.448348 0.858981\nv -0.366318 5.373504 0.861110\nv -0.336309 5.368674 0.830300\nv -0.330162 5.424644 0.819653\nv -0.085579 5.608974 0.395988\nv -0.069508 5.577381 0.346979\nv -0.073289 5.652568 0.353527\nv -0.090172 5.657471 0.403945\nv -0.096187 5.503573 0.414362\nv -0.083441 5.531240 0.392285\nv -0.176240 5.662285 0.533731\nv -0.154712 5.666801 0.495768\nv -0.138058 5.715039 0.486892\nv -0.158285 5.719302 0.521928\nv -0.131005 5.412295 0.453470\nv -0.116234 5.362868 0.427883\nv -0.103853 5.274145 0.406470\nv -0.110079 5.201977 0.416859\nv -0.142028 5.144361 0.472268\nv -0.165738 5.136270 0.513667\nv -0.188661 5.146466 0.553374\nv -0.207558 5.170753 0.584706\nv -0.214156 5.197310 0.596134\nv -0.213850 5.227768 0.596063\nv -0.205375 5.243670 0.581382\nv -0.186317 5.255943 0.551668\nv -0.155482 5.282185 0.498139\nv -0.181207 5.325606 0.542699\nv -0.198472 5.371274 0.570415\nv -0.214610 5.470294 0.598324\nv -0.216308 5.510393 0.601264\nv -0.219823 5.592010 0.565636\nv -0.238136 5.557381 0.597358\nv -0.210172 5.547515 0.589875\nv -0.198461 5.570402 0.569590\nv -0.188499 5.625658 0.512135\nv -0.170086 5.601588 0.521199\nv -0.137243 5.604552 0.421713\nv -0.172110 5.629180 0.482782\nv -0.153698 5.605110 0.491846\nv -0.127944 5.583147 0.446562\nv -0.168409 5.474578 0.479693\nv -0.151413 5.486594 0.450253\nv -0.141966 5.499254 0.474850\nv -0.166320 5.473194 0.517037\nv -0.156333 5.450655 0.458402\nv -0.170408 5.459183 0.482783\nv -0.168322 5.457798 0.520127\nv -0.147736 5.445159 0.484469\nv -0.110424 5.628274 0.419989\nv -0.129251 5.612298 0.411642\nv -0.169844 5.648447 0.481021\nv -0.226130 5.603806 0.577879\nv -0.191372 5.643930 0.518984\nv -0.216377 5.612260 0.601945\nv -0.244443 5.569179 0.609600\nv -0.233660 5.578382 0.631882\nv -0.248886 5.549114 0.660737\nv -0.281987 5.486811 0.715033\nv -0.307047 5.424101 0.758442\nv -0.311525 5.365025 0.766199\nv -0.303150 5.320957 0.751691\nv -0.296311 5.308403 0.739844\nv -0.300490 5.297959 0.743554\nv -0.305751 5.297311 0.752666\nv -0.355304 5.497252 0.842869\nv -0.361650 5.525727 0.853025\nv -0.394198 5.550106 0.909490\nv -0.413732 5.590175 0.942889\nv -0.416368 5.632510 0.948090\nv -0.411098 5.655898 0.938962\nv -0.407493 5.675226 0.926298\nv -0.365643 5.636914 0.859941\nv -0.339895 5.640411 0.816674\nv -0.302504 5.662618 0.751907\nv -0.171847 5.773489 0.524250\nv -0.130528 5.767262 0.452677\nv -0.093056 5.721624 0.387769\nv -0.083224 5.519274 0.370738\nv -0.097895 5.495102 0.396150\nv -0.113498 5.476707 0.417043\nv -0.162023 5.472592 0.460141\nv -0.124221 5.482518 0.435617\nv -0.145027 5.484608 0.430701\nv -0.294130 5.311946 0.757238\nv -0.157783 5.494235 0.521059\nv -0.133428 5.520294 0.478872\nv -0.127973 5.538355 0.469422\nv -0.132244 5.555797 0.476821\nv -0.156255 5.570638 0.518412\nv -0.167672 5.504280 0.538189\nv -0.179969 5.235818 0.559490\nv -0.188445 5.219917 0.574172\nv -0.323551 5.463790 0.808201\nv -0.127948 5.376470 0.469380\nv -0.142720 5.425898 0.494967\nv -0.163305 5.438536 0.530624\nv -0.174950 5.431025 0.550795\nv -0.165466 5.349375 0.534367\nv -0.139741 5.305954 0.489808\nv -0.112907 5.273817 0.443326\nv -0.261047 5.605947 0.699931\nv -0.353325 5.282185 0.383924\nv -0.353981 5.305954 0.366126\nv -0.327147 5.273817 0.319644\nv -0.329817 5.233723 0.324269\nv -0.355397 5.262099 0.387395\nv -0.430051 5.578382 0.518505\nv -0.447425 5.549114 0.546120\nv -0.475286 5.605947 0.576250\nv -0.405364 5.569179 0.516700\nv -0.397915 5.557381 0.505116\nv -0.404709 5.520258 0.516126\nv -0.422737 5.539909 0.544316\nv -0.499055 5.320957 0.638594\nv -0.535398 5.339489 0.680374\nv -0.507431 5.365025 0.653102\nv -0.412768 5.612260 0.488568\nv -0.372525 5.719302 0.398247\nv -0.373767 5.662285 0.419698\nv -0.381912 5.504280 0.414508\nv -0.398352 5.538704 0.442984\nv -0.370495 5.570638 0.394731\nv -0.499635 5.561415 0.618426\nv -0.508026 5.613324 0.632962\nv -0.508370 5.311946 0.633556\nv -0.492216 5.308403 0.626747\nv -0.493339 5.297959 0.632222\nv -0.537791 5.463790 0.684520\nv -0.522511 5.511280 0.658051\nv -0.502953 5.424101 0.645345\nv -0.353430 5.643930 0.425428\nv -0.331319 5.648447 0.387801\nv -0.331711 5.629180 0.390644\nv -0.348935 5.625658 0.419515\nv -0.365992 5.601588 0.408102\nv -0.348767 5.605110 0.379232\nv -0.379706 5.349375 0.410686\nv -0.379050 5.325606 0.428484\nv -0.394418 5.371274 0.457295\nv -0.394209 5.235818 0.435809\nv -0.400463 5.243670 0.468757\nv -0.384261 5.255943 0.437394\nv -0.402685 5.219917 0.450490\nv -0.408847 5.197310 0.483738\nv -0.408939 5.227768 0.483438\nv -0.362226 5.186327 0.380407\nv -0.384566 5.146466 0.440277\nv -0.402250 5.170753 0.472310\nv -0.380716 5.217666 0.412436\nv -0.337648 5.144361 0.359336\nv -0.361644 5.136270 0.400570\nv -0.356960 5.425898 0.371285\nv -0.345360 5.445159 0.370380\nv -0.326882 5.412295 0.340390\nv -0.595512 5.668571 0.803127\nv -0.607367 5.651269 0.805039\nv -0.607250 5.655898 0.825723\nv -0.598086 5.675226 0.816268\nv -0.377545 5.438536 0.406943\nv -0.396719 5.483232 0.440156\nv -0.372023 5.494235 0.397377\nv -0.364270 5.473194 0.402759\nv -0.365946 5.457798 0.406038\nv -0.405419 5.547515 0.477158\nv -0.410062 5.515820 0.463269\nv -0.412214 5.510393 0.488167\nv -0.317148 5.472592 0.370586\nv -0.318122 5.465744 0.372272\nv -0.332563 5.459183 0.389171\nv -0.330887 5.474578 0.385894\nv -0.347668 5.520294 0.355191\nv -0.324754 5.520028 0.337519\nv -0.339916 5.499254 0.360573\nv -0.314814 5.482518 0.325587\nv -0.307338 5.501982 0.305390\nv -0.310426 5.503573 0.290681\nv -0.293800 5.495102 0.283053\nv -0.304091 5.476707 0.307013\nv -0.315788 5.475670 0.327273\nv -0.300152 5.484608 0.341146\nv -0.313891 5.486594 0.356454\nv -0.298731 5.507370 0.333398\nv -0.292676 5.504072 0.320950\nv -0.551934 5.497252 0.729354\nv -0.557556 5.525727 0.739928\nv -0.566630 5.572126 0.734474\nv -0.545860 5.588543 0.698497\nv -0.312110 5.362868 0.314802\nv -0.342188 5.376470 0.345698\nv -0.261045 5.488284 0.267273\nv -0.271337 5.469887 0.291234\nv -0.561549 5.636914 0.746844\nv -0.541773 5.656149 0.753547\nv -0.517180 5.659646 0.709613\nv -0.536956 5.640411 0.702910\nv -0.575194 5.701816 0.817571\nv -0.572619 5.695159 0.804430\nv -0.599945 5.667114 0.854028\nv -0.590782 5.686442 0.844572\nv -0.545691 5.489536 0.759497\nv -0.551312 5.518014 0.770071\nv -0.545915 5.324542 0.719763\nv -0.562224 5.373504 0.748013\nv -0.550549 5.368674 0.706619\nv -0.461382 5.295666 0.614294\nv -0.462503 5.285222 0.619768\nv -0.517508 5.315813 0.649386\nv -0.351657 5.666801 0.382071\nv -0.322430 5.583147 0.334285\nv -0.319299 5.538089 0.328068\nv -0.342213 5.538355 0.345740\nv -0.346484 5.555797 0.353140\nv -0.292454 5.537968 0.322524\nv -0.296261 5.604552 0.329911\nv -0.291536 5.612298 0.317954\nv -0.286399 5.534671 0.310076\nv -0.393709 5.570402 0.456873\nv -0.379603 5.592010 0.473395\nv -0.387051 5.603806 0.484979\nv -0.410516 5.470294 0.485227\nv -0.408365 5.475719 0.460328\nv -0.389190 5.431025 0.427114\nv -0.368667 5.316366 0.451458\nv -0.384034 5.362035 0.480269\nv -0.356438 5.267126 0.430156\nv -0.354366 5.287212 0.426686\nv -0.390883 5.253418 0.493123\nv -0.374683 5.265692 0.461759\nv -0.402670 5.194917 0.513999\nv -0.402762 5.225375 0.513699\nv -0.371151 5.122450 0.457998\nv -0.388834 5.146736 0.490031\nv -0.319051 5.118040 0.368082\nv -0.343047 5.109948 0.409317\nv -0.305642 5.201977 0.303960\nv -0.299758 5.274145 0.293373\nv -0.300008 5.417790 0.334800\nv -0.318488 5.450655 0.364790\nv -0.477893 5.486811 0.601936\nv -0.499566 5.662618 0.638143\nv -0.367753 5.773489 0.411153\nv -0.352298 5.715039 0.363210\nv -0.326434 5.767262 0.339580\nv -0.297681 5.531240 0.268604\nv -0.279130 5.519274 0.257641\nv -0.308179 5.628274 0.305824\nv -0.299819 5.608974 0.272307\nv -0.296517 5.533141 0.286647\nv -0.304412 5.657471 0.280263\nv -0.288962 5.721624 0.274672\nv -0.269194 5.652568 0.240430\nv -0.544402 5.424644 0.695972\nv -0.581067 5.556879 0.759482\nv -0.590179 5.550106 0.796350\nv -0.592112 5.590698 0.778615\nv -0.609333 5.590175 0.829968\nv -0.606190 5.634236 0.802999\nv -0.612520 5.632510 0.834851\nv -0.587888 5.657892 0.789921\nv -0.304046 5.457216 0.347891\nv -0.292349 5.458251 0.327632\nv -0.208518 5.486310 0.278990\nv -0.265414 5.577381 0.233882\nv -0.561236 5.448348 0.745466\nv -0.498599 5.297311 0.641334\nv -0.516087 5.301105 0.668095\nv -0.243059 5.517920 0.236117\nv -0.228542 5.582496 0.210971\nv -0.233158 5.666270 0.218966\nv -0.255493 5.742265 0.257656\nv -0.297480 5.792035 0.330384\nv -0.343174 5.797686 0.409536\nv -0.486010 5.676223 0.655621\nv -0.571427 5.679368 0.802365\nv -0.605947 5.640802 0.864426\nv -0.604608 5.591613 0.862743\nv -0.587911 5.544410 0.833382\nv -0.552899 5.442576 0.771984\nv -0.553448 5.360417 0.773771\nv -0.534931 5.306975 0.741696\nv -0.501569 5.281743 0.683906\nv -0.469766 5.311057 0.628817\nv -0.478803 5.360498 0.644471\nv -0.473439 5.426218 0.635179\nv -0.445061 5.495645 0.586023\nv -0.402627 5.471096 0.512520\nv -0.279566 5.179461 0.299751\nv -0.268490 5.259162 0.280168\nv -0.281423 5.356741 0.302607\nv -0.190532 5.515944 0.247835\nv -0.429282 5.464243 0.707915\nv -0.397417 5.464243 0.726313\nv -0.684420 5.123801 1.243417\nv -0.733891 5.123511 1.215444\nv -0.852034 5.069855 1.412230\nv -0.796026 5.069851 1.444567\nv -0.856310 5.091953 1.556943\nv -0.919791 5.091958 1.520291\nv -0.984586 5.160743 1.623505\nv -0.913671 5.160740 1.664454\nv -0.951186 5.157276 1.647560\nv -1.036891 5.269464 1.704924\nv -0.957932 5.269464 1.750519\nv -1.000224 5.267411 1.732612\nv -1.059154 5.441407 1.738444\nv -0.975884 5.441407 1.786527\nv -1.020675 5.441407 1.767973\nv -0.995762 5.441407 1.860711\nv -1.113466 5.441407 1.792745\nv -1.005703 5.479807 1.897802\nv -1.140623 5.479807 1.819893\nv -0.989136 5.531006 1.835983\nv -1.095362 5.531006 1.774645\nv -0.964287 5.569407 1.743254\nv -1.027472 5.569407 1.706770\nv -0.977541 5.595008 1.792709\nv -1.063681 5.595008 1.742970\nv -0.992449 5.665406 1.848347\nv -1.104413 5.665406 1.783694\nv -1.000732 5.665406 1.879256\nv -1.127044 5.665406 1.806318\nv -1.000732 5.697407 1.879256\nv -1.127044 5.697407 1.806318\nv -0.384174 5.470578 0.737653\nv -0.373973 5.480661 0.749420\nv -0.648450 5.148871 1.279562\nv -0.744723 5.101691 1.467707\nv -0.792184 5.123687 1.572812\nv -0.836586 5.187052 1.672749\nv -0.868147 5.285051 1.752901\nv -0.879747 5.441407 1.786530\nv -0.859872 5.441407 1.860714\nv -0.849934 5.479807 1.897806\nv -0.866497 5.531006 1.835986\nv -0.891341 5.569407 1.743257\nv -0.878091 5.595008 1.792713\nv -0.863184 5.665406 1.848351\nv -0.854903 5.665406 1.879260\nv -0.854903 5.697407 1.879260\nv -0.734724 5.077298 1.335562\nv -0.691110 5.107703 1.367139\nv -0.668878 5.160480 1.390473\nv -0.711860 5.156838 1.475450\nv -0.744582 5.178650 1.563653\nv -0.773976 5.232628 1.646180\nv -0.791580 5.312052 1.711448\nv -0.796489 5.441407 1.738465\nv -0.742185 5.441407 1.792774\nv -0.715033 5.479807 1.819926\nv -0.760285 5.531006 1.774671\nv -0.828165 5.569407 1.706784\nv -0.791964 5.595008 1.742991\nv -0.751235 5.665406 1.783722\nv -0.728609 5.665406 1.806350\nv -0.728609 5.697407 1.806350\nv -0.674126 5.221419 1.399565\nv -0.706243 5.220516 1.465726\nv -0.726257 5.242119 1.531918\nv -0.742613 5.285254 1.591866\nv -0.748745 5.343229 1.637263\nv -0.748417 5.441407 1.655210\nv -0.674235 5.441407 1.675092\nv -0.637143 5.479807 1.685033\nv -0.698961 5.531006 1.668464\nv -0.791690 5.569407 1.643613\nv -0.742234 5.595008 1.656867\nv -0.686598 5.665406 1.671777\nv -0.655689 5.665406 1.680062\nv -0.655689 5.697407 1.680062\nv -0.705449 5.274195 1.391981\nv -0.729377 5.275664 1.441139\nv -0.742121 5.297085 1.486113\nv -0.750904 5.330832 1.524358\nv -0.751121 5.370231 1.550228\nv -0.748412 5.441407 1.559074\nv -0.674228 5.441407 1.539200\nv -0.637136 5.479807 1.529264\nv -0.698955 5.531006 1.545825\nv -0.791687 5.569407 1.570667\nv -0.742229 5.595008 1.557417\nv -0.686592 5.665406 1.542514\nv -0.655681 5.665406 1.534232\nv -0.655681 5.697407 1.534232\nv -0.754723 5.304605 1.370238\nv -0.775065 5.307508 1.408277\nv -0.787921 5.328821 1.438510\nv -0.796624 5.357145 1.461746\nv -0.798071 5.385822 1.473660\nv -0.796475 5.441407 1.475814\nv -0.742165 5.441407 1.421512\nv -0.715010 5.479807 1.394360\nv -0.760268 5.531006 1.439612\nv -0.828154 5.569407 1.507490\nv -0.805761 5.569407 1.536678\nv -0.791949 5.595008 1.471288\nv -0.751217 5.665406 1.430561\nv -0.728589 5.665406 1.407937\nv -0.728589 5.697407 1.407937\nv -0.808004 5.304673 1.338829\nv -0.831063 5.307511 1.375943\nv -0.851389 5.328824 1.401864\nv -0.867526 5.357148 1.420805\nv -0.877015 5.385825 1.428075\nv -0.879729 5.441407 1.427739\nv -0.859846 5.441407 1.353558\nv -0.849905 5.479807 1.316468\nv -0.866473 5.531006 1.378286\nv -0.891328 5.569407 1.471013\nv -0.878071 5.595008 1.421558\nv -0.863160 5.665406 1.365921\nv -0.854875 5.665406 1.335012\nv -0.854875 5.697407 1.335012\nv -0.851760 5.274205 1.307507\nv -0.882366 5.275675 1.352804\nv -0.915516 5.297095 1.385993\nv -0.944611 5.330838 1.412507\nv -0.966799 5.370237 1.425687\nv -0.922064 5.379807 1.421152\nv -0.975864 5.441407 1.427731\nv -0.995736 5.441407 1.353546\nv -1.005671 5.479807 1.316454\nv -0.989112 5.531006 1.378275\nv -0.964274 5.569407 1.471006\nv -0.977521 5.595008 1.421551\nv -0.992424 5.665406 1.365912\nv -1.000703 5.665406 1.335002\nv -1.000703 5.697407 1.335002\nv -0.460214 5.586796 0.761511\nv -0.483658 5.570380 0.738402\nv -0.817895 5.287472 1.262542\nv -0.781677 5.312833 1.298240\nv -0.831413 5.243540 1.229121\nv -0.873993 5.221431 1.284170\nv -0.915231 5.220531 1.345057\nv -0.963121 5.242130 1.395151\nv -1.007223 5.285265 1.439072\nv -1.043369 5.343235 1.467137\nv -1.059125 5.441407 1.475793\nv -1.113426 5.441407 1.421481\nv -1.140577 5.479807 1.394328\nv -1.095326 5.531006 1.439586\nv -1.027450 5.569407 1.507474\nv -1.063651 5.595008 1.471268\nv -1.104375 5.665406 1.430534\nv -1.127003 5.665406 1.407905\nv -1.127003 5.697407 1.407905\nv -0.818610 5.192812 1.206938\nv -0.868748 5.160491 1.275075\nv -0.920852 5.156850 1.354783\nv -0.981449 5.178664 1.426882\nv -1.038591 5.232639 1.493383\nv -1.086208 5.312058 1.541319\nv -1.107203 5.441407 1.559044\nv -1.181383 5.441407 1.539160\nv -1.218475 5.479807 1.529217\nv -1.156656 5.531006 1.545789\nv -1.063930 5.569407 1.570644\nv -1.113384 5.595008 1.557388\nv -1.169020 5.665406 1.542474\nv -1.199928 5.665406 1.534189\nv -1.199928 5.697407 1.534189\nv -0.782915 5.148880 1.201931\nv -0.837429 5.107712 1.282659\nv -0.897720 5.101700 1.379368\nv -0.965589 5.123696 1.472686\nv -1.030305 5.187061 1.560890\nv -1.083836 5.285056 1.628354\nv -1.107211 5.441407 1.655181\nv -1.181399 5.441407 1.675052\nv -1.218489 5.479807 1.684986\nv -1.156670 5.531006 1.668428\nv -1.063938 5.569407 1.643591\nv -1.113395 5.595008 1.656838\nv -1.169034 5.665406 1.671740\nv -1.199944 5.665406 1.680019\nv -1.199944 5.697407 1.680019\nv -0.788428 5.077236 1.304889\nv -1.049863 5.569407 1.677581\nv -0.461015 5.480664 0.699167\nv -0.484121 5.509104 0.702409\nv -0.492409 5.541945 0.716769\nv -0.732963 5.312378 1.327555\nv -0.428355 5.586796 0.779903\nv -0.683437 5.287462 1.340168\nv -0.396621 5.570374 0.788652\nv -0.647740 5.243531 1.335163\nv -0.373513 5.541935 0.785412\nv -0.634934 5.192803 1.312981\nv -0.365224 5.509098 0.771053\nv -0.255882 6.871280 0.000000\nv -0.255882 6.823281 0.000000\nv -0.207882 6.815281 0.000000\nv -0.175883 6.775281 0.000000\nv -0.111882 6.751280 0.000000\nv -0.143882 6.727280 0.000000\nv -0.135882 6.671281 0.000000\nv -0.143882 6.607280 0.000000\nv -0.175883 6.535279 0.000000\nv -0.239882 6.479280 0.000000\nv -0.239882 6.439281 0.000000\nv -0.307844 6.439281 0.000000\nv -0.331844 6.391280 0.000000\nv -0.283844 6.359281 0.000000\nv -0.227844 6.287280 0.000000\nv -0.179844 6.135281 0.000000\nv -0.171844 5.991281 0.000000\nv -0.243844 5.991281 0.000000\nv -0.243844 5.927280 0.000000\nv -0.187844 5.927280 0.000000\nv -0.187844 5.847281 0.000000\nv -0.239774 5.847281 0.000000\nv -0.295774 5.791280 0.000000\nv -0.295774 5.023280 0.000000\nv -0.351774 5.023280 0.000000\nv -0.399774 4.967279 0.000000\nv -0.401771 4.865267 0.000000\nv -0.355758 4.767281 0.000000\nv -0.411919 -0.855625 0.000000\nv -0.525026 -0.855625 0.000000\nv -0.581026 -0.903625 0.000000\nv -0.581026 -1.079625 0.000000\nv -0.541026 -1.127625 0.000000\nv -0.449117 -1.127625 0.000000\nv -0.425117 -1.183625 0.000000\nv -0.441708 -1.365037 0.000000\nv -0.511333 -1.530860 0.000000\nv -0.564391 -1.673745 0.000000\nv -0.660251 -1.819721 0.000000\nv -0.932420 -1.996708 0.000000\nv -1.076103 -2.040090 0.000000\nv -1.100103 -2.072090 0.000000\nv -1.100103 -2.128090 0.000000\nv -1.076103 -2.160089 0.000000\nv -1.012103 -2.192089 0.000000\nv -1.004103 -2.256090 0.000000\nv -1.028103 -2.356090 0.000000\nv -1.108103 -2.524090 0.000000\nv -1.192103 -2.600090 0.000000\nv -1.256103 -2.602085 0.000000\nv -1.304103 -2.642078 0.000000\nv -1.304103 -2.728091 0.000000\nv -1.272103 -2.760090 0.000000\nv -1.224103 -2.760090 0.000000\nv -1.224103 -3.284090 0.000000\nv -1.182394 -3.284090 0.316816\nv -1.182394 -2.760090 0.316816\nv -1.228759 -2.760090 0.329239\nv -1.259668 -2.728091 0.337521\nv -1.259668 -2.642078 0.337521\nv -1.213304 -2.602085 0.325098\nv -1.151484 -2.600090 0.308534\nv -1.070347 -2.524090 0.286793\nv -0.993072 -2.356090 0.266088\nv -0.969890 -2.256090 0.259877\nv -0.977618 -2.192089 0.261947\nv -1.039437 -2.160089 0.278511\nv -1.062619 -2.128090 0.284723\nv -1.062619 -2.072090 0.284723\nv -1.039437 -2.040090 0.278511\nv -0.900649 -1.996708 0.241324\nv -0.637754 -1.819721 0.170883\nv -0.545161 -1.673745 0.146073\nv -0.493910 -1.530860 0.132340\nv -0.426657 -1.365037 0.114321\nv -0.410632 -1.183625 0.110027\nv -0.433814 -1.127625 0.116238\nv -0.522592 -1.127625 0.140026\nv -0.561229 -1.079625 0.150378\nv -0.561229 -0.903625 0.150378\nv -0.507137 -0.855625 0.135884\nv -0.397884 -0.855625 0.106611\nv -0.386152 4.967279 0.103467\nv -0.131252 6.671281 0.035168\nv -0.108070 6.751280 0.028957\nv -1.060110 -3.284090 0.612042\nv -1.060110 -2.760090 0.612042\nv -1.101679 -2.760090 0.636042\nv -1.129392 -2.728091 0.652042\nv -1.129392 -2.642078 0.652042\nv -1.087823 -2.602085 0.628042\nv -1.032397 -2.600090 0.596043\nv -0.959650 -2.524090 0.554043\nv -0.890368 -2.356090 0.514044\nv -0.869583 -2.256090 0.502044\nv -0.876511 -2.192089 0.506044\nv -0.931937 -2.160089 0.538043\nv -0.952722 -2.128090 0.550043\nv -0.952722 -2.072090 0.550043\nv -0.931937 -2.040090 0.538043\nv -0.807503 -1.996708 0.466203\nv -0.571797 -1.819721 0.330120\nv -0.488780 -1.673745 0.282191\nv -0.442829 -1.530860 0.255662\nv -0.382532 -1.365037 0.220851\nv -0.368164 -1.183625 0.212555\nv -0.388949 -1.127625 0.224555\nv -0.468545 -1.127625 0.270509\nv -0.503186 -1.079625 0.290509\nv -0.503186 -0.903625 0.290509\nv -0.454688 -0.855625 0.262509\nv -0.356734 -0.855625 0.205956\nv -0.308097 4.767281 0.177876\nv -0.347946 4.865267 0.200882\nv -0.346216 4.967279 0.199884\nv -0.304647 5.023280 0.175884\nv -0.256149 5.023280 0.147885\nv -0.256149 5.791280 0.147885\nv -0.207651 5.847281 0.119885\nv -0.162678 5.847281 0.093921\nv -0.162678 5.927280 0.093921\nv -0.211176 5.927280 0.121920\nv -0.211176 5.991281 0.121920\nv -0.148822 5.991281 0.085921\nv -0.155750 6.135281 0.089921\nv -0.197320 6.287280 0.113920\nv -0.245817 6.359281 0.141920\nv -0.287387 6.391280 0.165919\nv -0.266602 6.439281 0.153920\nv -0.207745 6.439281 0.119939\nv -0.207745 6.479280 0.119939\nv -0.152320 6.535279 0.087940\nv -0.124606 6.607280 0.071940\nv -0.117678 6.671281 0.067940\nv -0.124606 6.727280 0.071940\nv -0.096893 6.751280 0.055940\nv -0.152320 6.775281 0.087940\nv -0.180032 6.815281 0.103939\nv -0.221601 6.823281 0.127939\nv -0.221601 6.871280 0.127939\nv -0.865583 -3.284090 0.865560\nv -0.865583 -2.760090 0.865560\nv -0.899524 -2.760090 0.899501\nv -0.922152 -2.728091 0.922128\nv -0.922152 -2.642078 0.922128\nv -0.888211 -2.602085 0.888187\nv -0.842955 -2.600090 0.842933\nv -0.783557 -2.524090 0.783537\nv -0.726988 -2.356090 0.726969\nv -0.710017 -2.256090 0.709999\nv -0.715674 -2.192089 0.715655\nv -0.760930 -2.160089 0.760910\nv -0.777901 -2.128090 0.777880\nv -0.777901 -2.072090 0.777880\nv -0.760930 -2.040090 0.760910\nv -0.659329 -1.996708 0.659312\nv -0.466874 -1.819721 0.466862\nv -0.399090 -1.673745 0.399080\nv -0.361571 -1.530860 0.361562\nv -0.312339 -1.365037 0.312330\nv -0.300607 -1.183625 0.300599\nv -0.317578 -1.127625 0.317569\nv -0.382568 -1.127625 0.382558\nv -0.410853 -1.079625 0.410842\nv -0.410853 -0.903625 0.410842\nv -0.371254 -0.855625 0.371245\nv -0.291275 -0.855625 0.291267\nv -0.132827 5.927280 0.132824\nv -0.172426 5.927280 0.172421\nv -0.161112 6.287280 0.161108\nv -0.200711 6.359281 0.200705\nv -0.234652 6.391280 0.234646\nv -0.101741 6.727280 0.101739\nv -0.079114 6.751280 0.079111\nv -0.612070 -3.284090 1.060094\nv -0.612070 -2.760090 1.060094\nv -0.636071 -2.760090 1.101662\nv -0.652071 -2.728091 1.129375\nv -0.652071 -2.642078 1.129375\nv -0.628071 -2.602085 1.087806\nv -0.596070 -2.600090 1.032381\nv -0.554068 -2.524090 0.959636\nv -0.514067 -2.356090 0.890354\nv -0.502067 -2.256090 0.869570\nv -0.506067 -2.192089 0.876498\nv -0.538068 -2.160089 0.931923\nv -0.550068 -2.128090 0.952708\nv -0.550068 -2.072090 0.952708\nv -0.538068 -2.040090 0.931923\nv -0.466224 -1.996708 0.807491\nv -0.330135 -1.819721 0.571788\nv -0.282204 -1.673745 0.488772\nv -0.255674 -1.530860 0.442823\nv -0.220861 -1.365037 0.382526\nv -0.212565 -1.183625 0.368158\nv -0.224565 -1.127625 0.388943\nv -0.270521 -1.127625 0.468538\nv -0.290522 -1.079625 0.503178\nv -0.290522 -0.903625 0.503178\nv -0.262521 -0.855625 0.454681\nv -0.205966 -0.855625 0.356729\nv -0.177884 4.767281 0.308092\nv -0.200892 4.865267 0.347940\nv -0.199893 4.967279 0.346211\nv -0.175892 5.023280 0.304642\nv -0.147891 5.023280 0.256145\nv -0.147891 5.791280 0.256145\nv -0.119891 5.847281 0.207648\nv -0.093925 5.847281 0.162676\nv -0.093925 5.927280 0.162676\nv -0.121926 5.927280 0.211173\nv -0.121926 5.991281 0.211173\nv -0.085925 5.991281 0.148820\nv -0.089925 6.135281 0.155748\nv -0.113925 6.287280 0.197317\nv -0.141926 6.359281 0.245814\nv -0.165927 6.391280 0.287382\nv -0.153927 6.439281 0.266598\nv -0.119945 6.439281 0.207742\nv -0.119945 6.479280 0.207742\nv -0.087944 6.535279 0.152318\nv -0.071943 6.607280 0.124604\nv -0.067943 6.671281 0.117676\nv -0.071943 6.727280 0.124604\nv -0.055943 6.751280 0.096892\nv -0.087944 6.775281 0.152318\nv -0.103944 6.815281 0.180029\nv -0.127945 6.823281 0.221598\nv -0.127945 6.871280 0.221598\nv -0.316847 -3.284090 1.182386\nv -0.316847 -2.760090 1.182386\nv -0.329271 -2.760090 1.228750\nv -0.337554 -2.728091 1.259659\nv -0.337554 -2.642078 1.259659\nv -0.325130 -2.602085 1.213295\nv -0.308564 -2.600090 1.151476\nv -0.286822 -2.524090 1.070339\nv -0.266114 -2.356090 0.993065\nv -0.259902 -2.256090 0.969883\nv -0.261973 -2.192089 0.977611\nv -0.278539 -2.160089 1.039430\nv -0.284751 -2.128090 1.062612\nv -0.284751 -2.072090 1.062612\nv -0.278539 -2.040090 1.039430\nv -0.241348 -1.996708 0.900643\nv -0.170899 -1.819721 0.637750\nv -0.146087 -1.673745 0.545157\nv -0.132353 -1.530860 0.493906\nv -0.114332 -1.365037 0.426654\nv -0.110037 -1.183625 0.410629\nv -0.116250 -1.127625 0.433811\nv -0.140039 -1.127625 0.522588\nv -0.150393 -1.079625 0.561225\nv -0.150393 -0.903625 0.561225\nv -0.135898 -0.855625 0.507133\nv -0.106621 -0.855625 0.397881\nv -0.092084 4.767281 0.343634\nv -0.091053 5.023280 0.339786\nv -0.037242 6.727280 0.138978\nv -0.028960 6.751280 0.108069\nv -0.000032 -3.284090 1.224103\nv -0.000032 -2.760090 1.224103\nv -0.000033 -2.760090 1.272103\nv -0.000034 -2.728091 1.304103\nv -0.000034 -2.642078 1.304103\nv -0.000033 -2.602085 1.256103\nv -0.000031 -2.600090 1.192103\nv -0.000029 -2.524090 1.108103\nv -0.000027 -2.356090 1.028103\nv -0.000026 -2.256090 1.004103\nv -0.000027 -2.192089 1.012103\nv -0.000028 -2.160089 1.076103\nv -0.000029 -2.128090 1.100103\nv -0.000029 -2.072090 1.100103\nv -0.000028 -2.040090 1.076103\nv -0.000025 -1.996708 0.932420\nv -0.000017 -1.819721 0.660251\nv -0.000015 -1.673745 0.564391\nv -0.000013 -1.530860 0.511333\nv -0.000012 -1.365037 0.441708\nv -0.000011 -1.183625 0.425117\nv -0.000012 -1.127625 0.449117\nv -0.000014 -1.127625 0.541026\nv -0.000015 -1.079625 0.581026\nv -0.000015 -0.903625 0.581026\nv -0.000014 -0.855625 0.525026\nv -0.000011 -0.855625 0.411919\nv -0.000009 4.767281 0.355758\nv -0.000011 4.865267 0.401771\nv -0.000011 4.967279 0.399774\nv -0.000009 5.023280 0.351774\nv -0.000008 5.023280 0.295774\nv -0.000008 5.791280 0.295774\nv -0.000006 5.847281 0.239774\nv -0.000005 5.847281 0.187844\nv -0.000005 5.927280 0.187844\nv -0.000006 5.927280 0.243844\nv -0.000006 5.991281 0.243844\nv -0.000005 5.991281 0.171844\nv -0.000005 6.135281 0.179844\nv -0.000006 6.287280 0.227844\nv -0.000007 6.359281 0.283844\nv -0.000009 6.391280 0.331844\nv -0.000008 6.439281 0.307844\nv -0.000006 6.439281 0.239882\nv -0.000006 6.479280 0.239882\nv -0.000005 6.535279 0.175883\nv -0.000004 6.607280 0.143882\nv -0.000004 6.671281 0.135882\nv -0.000004 6.727280 0.143882\nv -0.000003 6.751280 0.111882\nv -0.000005 6.775281 0.175883\nv -0.000005 6.815281 0.207882\nv -0.000007 6.823281 0.255882\nv -0.000007 6.871280 0.255882\nv 0.316785 -3.284090 1.182402\nv 0.316785 -2.760090 1.182402\nv 0.329207 -2.760090 1.228767\nv 0.337488 -2.728091 1.259677\nv 0.337488 -2.642078 1.259677\nv 0.325066 -2.602085 1.213312\nv 0.308504 -2.600090 1.151493\nv 0.286765 -2.524090 1.070354\nv 0.266062 -2.356090 0.993079\nv 0.259851 -2.256090 0.969897\nv 0.261921 -2.192089 0.977624\nv 0.278484 -2.160089 1.039444\nv 0.284695 -2.128090 1.062627\nv 0.284695 -2.072090 1.062627\nv 0.278484 -2.040090 1.039444\nv 0.241300 -1.996708 0.900656\nv 0.170866 -1.819721 0.637759\nv 0.146058 -1.673745 0.545165\nv 0.132327 -1.530860 0.493913\nv 0.114309 -1.365037 0.426660\nv 0.110016 -1.183625 0.410635\nv 0.116227 -1.127625 0.433817\nv 0.140012 -1.127625 0.522595\nv 0.150363 -1.079625 0.561233\nv 0.150363 -0.903625 0.561233\nv 0.135871 -0.855625 0.507140\nv 0.106600 -0.855625 0.397886\nv 0.092066 4.767281 0.343639\nv 0.612014 -3.284090 1.060126\nv 0.612014 -2.760090 1.060126\nv 0.636013 -2.760090 1.101696\nv 0.652012 -2.728091 1.129409\nv 0.652012 -2.642078 1.129409\nv 0.628013 -2.602085 1.087839\nv 0.596015 -2.600090 1.032412\nv 0.554018 -2.524090 0.959665\nv 0.514020 -2.356090 0.890381\nv 0.502021 -2.256090 0.869596\nv 0.506021 -2.192089 0.876525\nv 0.538019 -2.160089 0.931951\nv 0.550018 -2.128090 0.952736\nv 0.550018 -2.072090 0.952736\nv 0.538019 -2.040090 0.931951\nv 0.466182 -1.996708 0.807515\nv 0.330105 -1.819721 0.571806\nv 0.282179 -1.673745 0.488787\nv 0.255651 -1.530860 0.442836\nv 0.220840 -1.365037 0.382538\nv 0.212546 -1.183625 0.368170\nv 0.224545 -1.127625 0.388955\nv 0.270497 -1.127625 0.468552\nv 0.290495 -1.079625 0.503193\nv 0.290495 -0.903625 0.503193\nv 0.262497 -0.855625 0.454695\nv 0.205947 -0.855625 0.356740\nv 0.177868 4.767281 0.308102\nv 0.200873 4.865267 0.347951\nv 0.199875 4.967279 0.346221\nv 0.175876 5.023280 0.304651\nv 0.147878 5.023280 0.256153\nv 0.147878 5.791280 0.256153\nv 0.119880 5.847281 0.207655\nv 0.093916 5.847281 0.162681\nv 0.093916 5.927280 0.162681\nv 0.121915 5.927280 0.211179\nv 0.121915 5.991281 0.211179\nv 0.085917 5.991281 0.148824\nv 0.089917 6.135281 0.155753\nv 0.113915 6.287280 0.197323\nv 0.141913 6.359281 0.245821\nv 0.165912 6.391280 0.287391\nv 0.153913 6.439281 0.266606\nv 0.119934 6.439281 0.207748\nv 0.119934 6.479280 0.207748\nv 0.087936 6.535279 0.152322\nv 0.071937 6.607280 0.124608\nv 0.067937 6.671281 0.117680\nv 0.071937 6.727280 0.124608\nv 0.055938 6.751280 0.096895\nv 0.087936 6.775281 0.152322\nv 0.103935 6.815281 0.180035\nv 0.127933 6.823281 0.221605\nv 0.127933 6.871280 0.221605\nv 0.865537 -3.284090 0.865606\nv 0.865537 -2.760090 0.865606\nv 0.899477 -2.760090 0.899548\nv 0.922104 -2.728091 0.922177\nv 0.922104 -2.642078 0.922177\nv 0.888164 -2.602085 0.888234\nv 0.842911 -2.600090 0.842978\nv 0.783516 -2.524090 0.783578\nv 0.726950 -2.356090 0.727007\nv 0.709980 -2.256090 0.710036\nv 0.715637 -2.192089 0.715693\nv 0.760890 -2.160089 0.760950\nv 0.777860 -2.128090 0.777921\nv 0.777860 -2.072090 0.777921\nv 0.760890 -2.040090 0.760950\nv 0.659294 -1.996708 0.659346\nv 0.466849 -1.819721 0.466886\nv 0.399069 -1.673745 0.399101\nv 0.361552 -1.530860 0.361581\nv 0.312322 -1.365037 0.312347\nv 0.300591 -1.183625 0.300615\nv 0.317561 -1.127625 0.317586\nv 0.382548 -1.127625 0.382578\nv 0.410831 -1.079625 0.410864\nv 0.410831 -0.903625 0.410864\nv 0.371235 -0.855625 0.371264\nv 0.291259 -0.855625 0.291282\nv 0.132821 5.927280 0.132831\nv 0.172417 5.927280 0.172431\nv 0.172417 5.991281 0.172431\nv 0.121507 5.991281 0.121517\nv 0.127164 6.135281 0.127174\nv 0.161104 6.287280 0.161116\nv 0.096079 6.671281 0.096087\nv 0.101736 6.727280 0.101744\nv 0.079109 6.751280 0.079116\nv 1.060077 -3.284090 0.612098\nv 1.060077 -2.760090 0.612098\nv 1.101646 -2.760090 0.636100\nv 1.129358 -2.728091 0.652101\nv 1.129358 -2.642078 0.652101\nv 1.087790 -2.602085 0.628099\nv 1.032365 -2.600090 0.596097\nv 0.959621 -2.524090 0.554094\nv 0.890341 -2.356090 0.514091\nv 0.869557 -2.256090 0.502090\nv 0.876485 -2.192089 0.506090\nv 0.931909 -2.160089 0.538092\nv 0.952693 -2.128090 0.550093\nv 0.952693 -2.072090 0.550093\nv 0.931909 -2.040090 0.538092\nv 0.807479 -1.996708 0.466245\nv 0.571779 -1.819721 0.330150\nv 0.488765 -1.673745 0.282217\nv 0.442816 -1.530860 0.255686\nv 0.382520 -1.365037 0.220871\nv 0.368153 -1.183625 0.212575\nv 0.388937 -1.127625 0.224576\nv 0.468530 -1.127625 0.270534\nv 0.503170 -1.079625 0.290535\nv 0.503170 -0.903625 0.290535\nv 0.454674 -0.855625 0.262533\nv 0.356723 -0.855625 0.205975\nv 0.308088 4.767281 0.177893\nv 0.347935 4.865267 0.200901\nv 0.346206 4.967279 0.199902\nv 0.304637 5.023280 0.175900\nv 0.256141 5.023280 0.147898\nv 0.256141 5.791280 0.147898\nv 0.207645 5.847281 0.119896\nv 0.162674 5.847281 0.093929\nv 0.162674 5.927280 0.093929\nv 0.211170 5.927280 0.121931\nv 0.211170 5.991281 0.121931\nv 0.148817 5.991281 0.085929\nv 0.155746 6.135281 0.089929\nv 0.197314 6.287280 0.113931\nv 0.245810 6.359281 0.141933\nv 0.287378 6.391280 0.165935\nv 0.266594 6.439281 0.153934\nv 0.207739 6.439281 0.119950\nv 0.207739 6.479280 0.119950\nv 0.152315 6.535279 0.087948\nv 0.124602 6.607280 0.071946\nv 0.117674 6.671281 0.067946\nv 0.124602 6.727280 0.071946\nv 0.096890 6.751280 0.055945\nv 0.152315 6.775281 0.087948\nv 0.180027 6.815281 0.103949\nv 0.221595 6.823281 0.127951\nv 0.221595 6.871280 0.127951\nv 1.182377 -3.284090 0.316878\nv 1.182377 -2.760090 0.316878\nv 1.228741 -2.760090 0.329304\nv 1.259650 -2.728091 0.337587\nv 1.259650 -2.642078 0.337587\nv 1.213287 -2.602085 0.325162\nv 1.151468 -2.600090 0.308595\nv 1.070332 -2.524090 0.286850\nv 0.993058 -2.356090 0.266141\nv 0.969876 -2.256090 0.259928\nv 0.977604 -2.192089 0.261999\nv 1.039422 -2.160089 0.278566\nv 1.062604 -2.128090 0.284779\nv 1.062604 -2.072090 0.284779\nv 1.039422 -2.040090 0.278566\nv 0.900637 -1.996708 0.241371\nv 0.637745 -1.819721 0.170916\nv 0.545153 -1.673745 0.146102\nv 0.493903 -1.530860 0.132366\nv 0.426651 -1.365037 0.114343\nv 0.410626 -1.183625 0.110048\nv 0.433808 -1.127625 0.116261\nv 0.522584 -1.127625 0.140053\nv 0.561221 -1.079625 0.150408\nv 0.561221 -0.903625 0.150408\nv 0.507130 -0.855625 0.135911\nv 0.397878 -0.855625 0.106632\nv 0.131250 6.671281 0.035175\nv 0.108068 6.751280 0.028962\nv 1.224103 -3.284090 0.000064\nv 1.224103 -2.760090 0.000064\nv 1.272103 -2.760090 0.000067\nv 1.304103 -2.728091 0.000069\nv 1.304103 -2.642078 0.000069\nv 1.256103 -2.602085 0.000066\nv 1.192103 -2.600090 0.000063\nv 1.108103 -2.524090 0.000058\nv 1.028103 -2.356090 0.000054\nv 1.004103 -2.256090 0.000053\nv 1.012103 -2.192089 0.000053\nv 1.076103 -2.160089 0.000057\nv 1.100103 -2.128090 0.000058\nv 1.100103 -2.072090 0.000058\nv 1.076103 -2.040090 0.000057\nv 0.932420 -1.996708 0.000049\nv 0.660251 -1.819721 0.000035\nv 0.564391 -1.673745 0.000030\nv 0.511333 -1.530860 0.000027\nv 0.441708 -1.365037 0.000023\nv 0.425117 -1.183625 0.000022\nv 0.449117 -1.127625 0.000024\nv 0.541026 -1.127625 0.000028\nv 0.581026 -1.079625 0.000031\nv 0.581026 -0.903625 0.000031\nv 0.525026 -0.855625 0.000028\nv 0.411919 -0.855625 0.000022\nv 0.355758 4.767281 0.000019\nv 0.401771 4.865267 0.000021\nv 0.399774 4.967279 0.000021\nv 0.351774 5.023280 0.000019\nv 0.295774 5.023280 0.000016\nv 0.295774 5.791280 0.000016\nv 0.239774 5.847281 0.000013\nv 0.187844 5.847281 0.000010\nv 0.187844 5.927280 0.000010\nv 0.243844 5.927280 0.000013\nv 0.243844 5.991281 0.000013\nv 0.171844 5.991281 0.000009\nv 0.179844 6.135281 0.000009\nv 0.227844 6.287280 0.000012\nv 0.283844 6.359281 0.000015\nv 0.331844 6.391280 0.000017\nv 0.307844 6.439281 0.000016\nv 0.239882 6.439281 0.000013\nv 0.239882 6.479280 0.000013\nv 0.175883 6.535279 0.000009\nv 0.143882 6.607280 0.000008\nv 0.135882 6.671281 0.000007\nv 0.143882 6.727280 0.000008\nv 0.111882 6.751280 0.000006\nv 0.175883 6.775281 0.000009\nv 0.207882 6.815281 0.000011\nv 0.255882 6.823281 0.000013\nv 0.255882 6.871280 0.000013\nv 1.182411 -3.284090 -0.316754\nv 1.182411 -2.760090 -0.316754\nv 1.228776 -2.760090 -0.329174\nv 1.259686 -2.728091 -0.337455\nv 1.259686 -2.642078 -0.337455\nv 1.213321 -2.602085 -0.325034\nv 1.151501 -2.600090 -0.308473\nv 1.070362 -2.524090 -0.286737\nv 0.993086 -2.356090 -0.266036\nv 0.969904 -2.256090 -0.259826\nv 0.977631 -2.192089 -0.261896\nv 1.039451 -2.160089 -0.278457\nv 1.062634 -2.128090 -0.284667\nv 1.062634 -2.072090 -0.284667\nv 1.039451 -2.040090 -0.278457\nv 0.900662 -1.996708 -0.241277\nv 0.637763 -1.819721 -0.170849\nv 0.545169 -1.673745 -0.146044\nv 0.493917 -1.530860 -0.132314\nv 0.426663 -1.365037 -0.114298\nv 0.410638 -1.183625 -0.110005\nv 0.433820 -1.127625 -0.116215\nv 0.522599 -1.127625 -0.139998\nv 0.561237 -1.079625 -0.150349\nv 0.561237 -0.903625 -0.150349\nv 0.507144 -0.855625 -0.135858\nv 0.397889 -0.855625 -0.106590\nv 0.138981 6.727280 -0.037231\nv 1.060142 -3.284090 -0.611986\nv 1.060142 -2.760090 -0.611986\nv 1.101713 -2.760090 -0.635984\nv 1.129426 -2.728091 -0.651982\nv 1.129426 -2.642078 -0.651982\nv 1.087856 -2.602085 -0.627985\nv 1.032428 -2.600090 -0.595988\nv 0.959679 -2.524090 -0.553992\nv 0.890395 -2.356090 -0.513997\nv 0.869610 -2.256090 -0.501998\nv 0.876538 -2.192089 -0.505998\nv 0.931966 -2.160089 -0.537994\nv 0.952751 -2.128090 -0.549993\nv 0.952751 -2.072090 -0.549993\nv 0.931966 -2.040090 -0.537994\nv 0.807528 -1.996708 -0.466160\nv 0.571814 -1.819721 -0.330090\nv 0.488795 -1.673745 -0.282166\nv 0.442843 -1.530860 -0.255639\nv 0.382544 -1.365037 -0.220830\nv 0.368175 -1.183625 -0.212536\nv 0.388961 -1.127625 -0.224535\nv 0.468559 -1.127625 -0.270484\nv 0.503201 -1.079625 -0.290482\nv 0.503201 -0.903625 -0.290482\nv 0.454702 -0.855625 -0.262485\nv 0.356745 -0.855625 -0.205938\nv 0.308106 4.767281 -0.177860\nv 0.347956 4.865267 -0.200864\nv 0.346227 4.967279 -0.199866\nv 0.304656 5.023280 -0.175868\nv 0.256157 5.023280 -0.147871\nv 0.256157 5.791280 -0.147871\nv 0.207658 5.847281 -0.119874\nv 0.162683 5.847281 -0.093912\nv 0.162683 5.927280 -0.093912\nv 0.211183 5.927280 -0.121909\nv 0.211183 5.991281 -0.121909\nv 0.148827 5.991281 -0.085913\nv 0.155755 6.135281 -0.089912\nv 0.197326 6.287280 -0.113910\nv 0.245825 6.359281 -0.141907\nv 0.287396 6.391280 -0.165904\nv 0.266610 6.439281 -0.153906\nv 0.207751 6.439281 -0.119928\nv 0.207751 6.479280 -0.119928\nv 0.152325 6.535279 -0.087932\nv 0.124610 6.607280 -0.071933\nv 0.117681 6.671281 -0.067934\nv 0.124610 6.727280 -0.071933\nv 0.096896 6.751280 -0.055935\nv 0.152325 6.775281 -0.087932\nv 0.180037 6.815281 -0.103930\nv 0.221608 6.823281 -0.127927\nv 0.221608 6.871280 -0.127927\nv 0.865629 -3.284090 -0.865515\nv 0.865629 -2.760090 -0.865515\nv 0.899572 -2.760090 -0.899453\nv 0.922201 -2.728091 -0.922079\nv 0.922201 -2.642078 -0.922079\nv 0.888258 -2.602085 -0.888140\nv 0.843000 -2.600090 -0.842889\nv 0.783599 -2.524090 -0.783496\nv 0.727027 -2.356090 -0.726931\nv 0.710055 -2.256090 -0.709961\nv 0.715712 -2.192089 -0.715618\nv 0.760970 -2.160089 -0.760870\nv 0.777942 -2.128090 -0.777839\nv 0.777942 -2.072090 -0.777839\nv 0.760970 -2.040090 -0.760870\nv 0.659364 -1.996708 -0.659277\nv 0.466899 -1.819721 -0.466837\nv 0.399111 -1.673745 -0.399059\nv 0.361591 -1.530860 -0.361543\nv 0.312355 -1.365037 -0.312314\nv 0.300623 -1.183625 -0.300583\nv 0.317595 -1.127625 -0.317553\nv 0.382588 -1.127625 -0.382538\nv 0.410874 -1.079625 -0.410820\nv 0.410874 -0.903625 -0.410820\nv 0.371274 -0.855625 -0.371225\nv 0.291290 -0.855625 -0.291252\nv 0.132835 5.927280 -0.132817\nv 0.101747 6.607280 -0.101733\nv 0.180948 6.823281 -0.180924\nv 0.612126 -3.284090 -1.060061\nv 0.612126 -2.760090 -1.060061\nv 0.636129 -2.760090 -1.101629\nv 0.652131 -2.728091 -1.129341\nv 0.652131 -2.642078 -1.129341\nv 0.628128 -2.602085 -1.087773\nv 0.596124 -2.600090 -1.032350\nv 0.554119 -2.524090 -0.959607\nv 0.514114 -2.356090 -0.890327\nv 0.502112 -2.256090 -0.869543\nv 0.506113 -2.192089 -0.876471\nv 0.538117 -2.160089 -0.931895\nv 0.550118 -2.128090 -0.952679\nv 0.550118 -2.072090 -0.952679\nv 0.538117 -2.040090 -0.931895\nv 0.466266 -1.996708 -0.807466\nv 0.330165 -1.819721 -0.571771\nv 0.282230 -1.673745 -0.488758\nv 0.255697 -1.530860 -0.442809\nv 0.220881 -1.365037 -0.382515\nv 0.212584 -1.183625 -0.368147\nv 0.224586 -1.127625 -0.388931\nv 0.270546 -1.127625 -0.468523\nv 0.290548 -1.079625 -0.503163\nv 0.290548 -0.903625 -0.503163\nv 0.262545 -0.855625 -0.454667\nv 0.205984 -0.855625 -0.356718\nv 0.177901 4.767281 -0.308083\nv 0.200910 4.865267 -0.347930\nv 0.199911 4.967279 -0.346200\nv 0.175908 5.023280 -0.304633\nv 0.147905 5.023280 -0.256137\nv 0.147905 5.791280 -0.256137\nv 0.119902 5.847281 -0.207642\nv 0.093933 5.847281 -0.162671\nv 0.093933 5.927280 -0.162671\nv 0.121937 5.927280 -0.211167\nv 0.121937 5.991281 -0.211167\nv 0.085932 5.991281 -0.148815\nv 0.089933 6.135281 -0.155743\nv 0.113936 6.287280 -0.197311\nv 0.141939 6.359281 -0.245806\nv 0.165942 6.391280 -0.287374\nv 0.153941 6.439281 -0.266590\nv 0.119956 6.439281 -0.207736\nv 0.119956 6.479280 -0.207736\nv 0.087952 6.535279 -0.152313\nv 0.071950 6.607280 -0.124600\nv 0.067949 6.671281 -0.117672\nv 0.071950 6.727280 -0.124600\nv 0.055948 6.751280 -0.096889\nv 0.087952 6.775281 -0.152313\nv 0.103954 6.815281 -0.180024\nv 0.127956 6.823281 -0.221591\nv 0.127956 6.871280 -0.221591\nv 0.316910 -3.284090 -1.182369\nv 0.316910 -2.760090 -1.182369\nv 0.329336 -2.760090 -1.228732\nv 0.337621 -2.728091 -1.259642\nv 0.337621 -2.642078 -1.259642\nv 0.325194 -2.602085 -1.213278\nv 0.308625 -2.600090 -1.151460\nv 0.286878 -2.524090 -1.070324\nv 0.266167 -2.356090 -0.993051\nv 0.259953 -2.256090 -0.969869\nv 0.262025 -2.192089 -0.977597\nv 0.278594 -2.160089 -1.039415\nv 0.284807 -2.128090 -1.062597\nv 0.284807 -2.072090 -1.062597\nv 0.278594 -2.040090 -1.039415\nv 0.241395 -1.996708 -0.900630\nv 0.170933 -1.819721 -0.637740\nv 0.146116 -1.673745 -0.545149\nv 0.132380 -1.530860 -0.493899\nv 0.114354 -1.365037 -0.426648\nv 0.110059 -1.183625 -0.410623\nv 0.116272 -1.127625 -0.433805\nv 0.140067 -1.127625 -0.522581\nv 0.150423 -1.079625 -0.561217\nv 0.150423 -0.903625 -0.561217\nv 0.135925 -0.855625 -0.507126\nv 0.106642 -0.855625 -0.397875\nv 0.000097 -3.284090 -1.224103\nv 0.000097 -2.760090 -1.224103\nv 0.000101 -2.760090 -1.272103\nv 0.000103 -2.728091 -1.304103\nv 0.000103 -2.642078 -1.304103\nv 0.000099 -2.602085 -1.256103\nv 0.000094 -2.600090 -1.192103\nv 0.000088 -2.524090 -1.108103\nv 0.000081 -2.356090 -1.028103\nv 0.000079 -2.256090 -1.004103\nv 0.000080 -2.192089 -1.012103\nv 0.000085 -2.160089 -1.076103\nv 0.000087 -2.128090 -1.100103\nv 0.000087 -2.072090 -1.100103\nv 0.000085 -2.040090 -1.076103\nv 0.000074 -1.996708 -0.932420\nv 0.000052 -1.819721 -0.660251\nv 0.000045 -1.673745 -0.564391\nv 0.000040 -1.530860 -0.511333\nv 0.000035 -1.365037 -0.441708\nv 0.000034 -1.183625 -0.425117\nv 0.000036 -1.127625 -0.449117\nv 0.000043 -1.127625 -0.541026\nv 0.000046 -1.079625 -0.581026\nv 0.000046 -0.903625 -0.581026\nv 0.000042 -0.855625 -0.525026\nv 0.000033 -0.855625 -0.411919\nv 0.000028 4.767281 -0.355758\nv 0.000032 4.865267 -0.401771\nv 0.000032 4.967279 -0.399774\nv 0.000028 5.023280 -0.351774\nv 0.000023 5.023280 -0.295774\nv 0.000023 5.791280 -0.295774\nv 0.000019 5.847281 -0.239774\nv 0.000015 5.847281 -0.187844\nv 0.000015 5.927280 -0.187844\nv 0.000019 5.927280 -0.243844\nv 0.000019 5.991281 -0.243844\nv 0.000014 5.991281 -0.171844\nv 0.000014 6.135281 -0.179844\nv 0.000018 6.287280 -0.227844\nv 0.000022 6.359281 -0.283844\nv 0.000026 6.391280 -0.331844\nv 0.000024 6.439281 -0.307844\nv 0.000019 6.439281 -0.239882\nv 0.000019 6.479280 -0.239882\nv 0.000014 6.535279 -0.175883\nv 0.000011 6.607280 -0.143882\nv 0.000011 6.671281 -0.135882\nv 0.000011 6.727280 -0.143882\nv 0.000009 6.751280 -0.111882\nv 0.000014 6.775281 -0.175883\nv 0.000016 6.815281 -0.207882\nv 0.000020 6.823281 -0.255882\nv 0.000020 6.871280 -0.255882\nv -0.316722 -3.284090 -1.182419\nv -0.316722 -2.760090 -1.182419\nv -0.329142 -2.760090 -1.228785\nv -0.337422 -2.728091 -1.259695\nv -0.337422 -2.642078 -1.259695\nv -0.325002 -2.602085 -1.213330\nv -0.308443 -2.600090 -1.151509\nv -0.286709 -2.524090 -1.070369\nv -0.266010 -2.356090 -0.993093\nv -0.259800 -2.256090 -0.969911\nv -0.261870 -2.192089 -0.977638\nv -0.278429 -2.160089 -1.039459\nv -0.284639 -2.128090 -1.062642\nv -0.284639 -2.072090 -1.062642\nv -0.278429 -2.040090 -1.039459\nv -0.241253 -1.996708 -0.900668\nv -0.170832 -1.819721 -0.637768\nv -0.146030 -1.673745 -0.545173\nv -0.132301 -1.530860 -0.493920\nv -0.114287 -1.365037 -0.426666\nv -0.109994 -1.183625 -0.410641\nv -0.116204 -1.127625 -0.433823\nv -0.139984 -1.127625 -0.522603\nv -0.150334 -1.079625 -0.561241\nv -0.150334 -0.903625 -0.561241\nv -0.135844 -0.855625 -0.507147\nv -0.106579 -0.855625 -0.397892\nv -0.037228 6.727280 -0.138982\nv -0.028948 6.751280 -0.108072\nv -0.611958 -3.284090 -1.060158\nv -0.611958 -2.760090 -1.060158\nv -0.635955 -2.760090 -1.101729\nv -0.651952 -2.728091 -1.129444\nv -0.651952 -2.642078 -1.129444\nv -0.627956 -2.602085 -1.087872\nv -0.595961 -2.600090 -1.032444\nv -0.553967 -2.524090 -0.959694\nv -0.513973 -2.356090 -0.890408\nv -0.501975 -2.256090 -0.869623\nv -0.505975 -2.192089 -0.876551\nv -0.537970 -2.160089 -0.931980\nv -0.549968 -2.128090 -0.952765\nv -0.549968 -2.072090 -0.952765\nv -0.537970 -2.040090 -0.931980\nv -0.466139 -1.996708 -0.807540\nv -0.330075 -1.819721 -0.571823\nv -0.282153 -1.673745 -0.488802\nv -0.255627 -1.530860 -0.442849\nv -0.220820 -1.365037 -0.382550\nv -0.212526 -1.183625 -0.368181\nv -0.224524 -1.127625 -0.388966\nv -0.270472 -1.127625 -0.468566\nv -0.290469 -1.079625 -0.503209\nv -0.290469 -0.903625 -0.503209\nv -0.262473 -0.855625 -0.454709\nv -0.205928 -0.855625 -0.356750\nv -0.177852 4.767281 -0.308111\nv -0.200855 4.865267 -0.347962\nv -0.199857 4.967279 -0.346232\nv -0.175860 5.023280 -0.304661\nv -0.147864 5.023280 -0.256161\nv -0.147864 5.791280 -0.256161\nv -0.119869 5.847281 -0.207661\nv -0.093908 5.847281 -0.162686\nv -0.093908 5.927280 -0.162686\nv -0.121903 5.927280 -0.211186\nv -0.121903 5.991281 -0.211186\nv -0.085909 5.991281 -0.148829\nv -0.089908 6.135281 -0.155757\nv -0.113905 6.287280 -0.197329\nv -0.141900 6.359281 -0.245829\nv -0.165897 6.391280 -0.287400\nv -0.153899 6.439281 -0.266614\nv -0.119923 6.439281 -0.207754\nv -0.119923 6.479280 -0.207754\nv -0.087928 6.535279 -0.152327\nv -0.071930 6.607280 -0.124612\nv -0.067931 6.671281 -0.117683\nv -0.071930 6.727280 -0.124612\nv -0.055932 6.751280 -0.096898\nv -0.087928 6.775281 -0.152327\nv -0.103925 6.815281 -0.180040\nv -0.127922 6.823281 -0.221612\nv -0.127922 6.871280 -0.221612\nv -0.865492 -3.284090 -0.865651\nv -0.865492 -2.760090 -0.865651\nv -0.899430 -2.760090 -0.899596\nv -0.922055 -2.728091 -0.922225\nv -0.922055 -2.642078 -0.922225\nv -0.888117 -2.602085 -0.888281\nv -0.842866 -2.600090 -0.843022\nv -0.783475 -2.524090 -0.783619\nv -0.726912 -2.356090 -0.727046\nv -0.709943 -2.256090 -0.710073\nv -0.715599 -2.192089 -0.715731\nv -0.760850 -2.160089 -0.760990\nv -0.777819 -2.128090 -0.777962\nv -0.777819 -2.072090 -0.777962\nv -0.760850 -2.040090 -0.760990\nv -0.659259 -1.996708 -0.659381\nv -0.466825 -1.819721 -0.466911\nv -0.399048 -1.673745 -0.399122\nv -0.361533 -1.530860 -0.361600\nv -0.312306 -1.365037 -0.312363\nv -0.300575 -1.183625 -0.300631\nv -0.317544 -1.127625 -0.317603\nv -0.382528 -1.127625 -0.382598\nv -0.410810 -1.079625 -0.410885\nv -0.410810 -0.903625 -0.410885\nv -0.371215 -0.855625 -0.371284\nv -0.291244 -0.855625 -0.291298\nv -0.251536 4.767281 -0.251582\nv -0.284069 4.865267 -0.284121\nv -0.132814 5.847281 -0.132838\nv -0.132814 5.927280 -0.132838\nv -0.172408 5.927280 -0.172440\nv -0.121501 5.991281 -0.121523\nv -0.127157 6.135281 -0.127181\nv -0.161095 6.287280 -0.161125\nv -0.200690 6.359281 -0.200727\nv -0.169607 6.439281 -0.169638\nv -0.124357 6.535279 -0.124380\nv -0.101731 6.607280 -0.101749\nv -0.096074 6.671281 -0.096092\nv -0.101731 6.727280 -0.101749\nv -0.079105 6.751280 -0.079120\nv -0.124357 6.775281 -0.124380\nv -0.146981 6.815281 -0.147008\nv -0.180919 6.871280 -0.180953\nv -1.060045 -3.284090 -0.612154\nv -1.060045 -2.760090 -0.612154\nv -1.101612 -2.760090 -0.636158\nv -1.129323 -2.728091 -0.652160\nv -1.129323 -2.642078 -0.652160\nv -1.087757 -2.602085 -0.628156\nv -1.032334 -2.600090 -0.596151\nv -0.959592 -2.524090 -0.554144\nv -0.890314 -2.356090 -0.514137\nv -0.869530 -2.256090 -0.502135\nv -0.876458 -2.192089 -0.506136\nv -0.931881 -2.160089 -0.538141\nv -0.952664 -2.128090 -0.550143\nv -0.952664 -2.072090 -0.550143\nv -0.931881 -2.040090 -0.538141\nv -0.807454 -1.996708 -0.466288\nv -0.571762 -1.819721 -0.330181\nv -0.488750 -1.673745 -0.282243\nv -0.442802 -1.530860 -0.255709\nv -0.382509 -1.365037 -0.220891\nv -0.368142 -1.183625 -0.212594\nv -0.388925 -1.127625 -0.224596\nv -0.468516 -1.127625 -0.270558\nv -0.503155 -1.079625 -0.290562\nv -0.503155 -0.903625 -0.290562\nv -0.454661 -0.855625 -0.262557\nv -0.356712 -0.855625 -0.205994\nv -0.308078 4.767281 -0.177909\nv -0.347925 4.865267 -0.200919\nv -0.346195 4.967279 -0.199920\nv -0.304628 5.023280 -0.175916\nv -0.256134 5.023280 -0.147912\nv -0.256134 5.791280 -0.147912\nv -0.207639 5.847281 -0.119907\nv -0.162669 5.847281 -0.093938\nv -0.162669 5.927280 -0.093938\nv -0.211163 5.927280 -0.121942\nv -0.211163 5.991281 -0.121942\nv -0.148813 5.991281 -0.085936\nv -0.155741 6.135281 -0.089937\nv -0.197308 6.287280 -0.113941\nv -0.245802 6.359281 -0.141946\nv -0.287369 6.391280 -0.165950\nv -0.266586 6.439281 -0.153948\nv -0.207732 6.439281 -0.119961\nv -0.207732 6.479280 -0.119961\nv -0.152311 6.535279 -0.087956\nv -0.124599 6.607280 -0.071953\nv -0.117671 6.671281 -0.067952\nv -0.124599 6.727280 -0.071953\nv -0.096887 6.751280 -0.055950\nv -0.152311 6.775281 -0.087956\nv -0.180021 6.815281 -0.103958\nv -0.221588 6.823281 -0.127962\nv -0.221588 6.871280 -0.127962\nv -1.182361 -3.284090 -0.316940\nv -1.182361 -2.760090 -0.316940\nv -1.228724 -2.760090 -0.329368\nv -1.259633 -2.728091 -0.337654\nv -1.259633 -2.642078 -0.337654\nv -1.213270 -2.602085 -0.325226\nv -1.151452 -2.600090 -0.308655\nv -1.070316 -2.524090 -0.286906\nv -0.993044 -2.356090 -0.266193\nv -0.969863 -2.256090 -0.259979\nv -0.977590 -2.192089 -0.262050\nv -1.039407 -2.160089 -0.278621\nv -1.062589 -2.128090 -0.284835\nv -1.062589 -2.072090 -0.284835\nv -1.039407 -2.040090 -0.278621\nv -0.900624 -1.996708 -0.241419\nv -0.637736 -1.819721 -0.170950\nv -0.545146 -1.673745 -0.146130\nv -0.493896 -1.530860 -0.132392\nv -0.426645 -1.365037 -0.114365\nv -0.410620 -1.183625 -0.110070\nv -0.433802 -1.127625 -0.116284\nv -0.522577 -1.127625 -0.140081\nv -0.561213 -1.079625 -0.150437\nv -0.561213 -0.903625 -0.150437\nv -0.507122 -0.855625 -0.135938\nv -0.397872 -0.855625 -0.106653\nv -0.343627 4.767281 -0.092112\nv -0.138976 6.727280 -0.037253\nv -0.215708 4.671280 0.000000\nv -0.271708 4.671280 0.000000\nv -0.303708 4.639273 0.000000\nv -0.303708 4.591273 0.000000\nv -0.275705 4.561275 0.000000\nv -0.331920 0.793487 0.000000\nv -0.403919 0.779474 0.000000\nv -0.419919 0.707474 0.000000\nv -0.403919 0.641487 0.000000\nv -0.363919 0.601487 0.000000\nv -0.403919 -0.543625 0.000000\nv -0.451919 -0.543625 0.000000\nv -0.483920 -0.583625 0.000000\nv -0.483920 -0.665634 0.000000\nv -0.453928 -0.695625 0.000000\nv -0.411927 -0.695618 0.000000\nv -0.397891 -0.695618 0.106613\nv -0.438461 -0.695625 0.117483\nv -0.467431 -0.665634 0.125246\nv -0.467431 -0.583625 0.125246\nv -0.436521 -0.543625 0.116963\nv -0.390156 -0.543625 0.104540\nv -0.351519 0.601487 0.094188\nv -0.390156 0.641487 0.104540\nv -0.405611 0.707474 0.108681\nv -0.390156 0.779474 0.104540\nv -0.320610 0.793487 0.085906\nv -0.231540 4.559279 0.062040\nv -0.356741 -0.695618 0.205960\nv -0.393115 -0.695625 0.226961\nv -0.419089 -0.665634 0.241956\nv -0.419089 -0.583625 0.241956\nv -0.391375 -0.543625 0.225956\nv -0.349806 -0.543625 0.201956\nv -0.315165 0.601487 0.181957\nv -0.349806 0.641487 0.201956\nv -0.363662 0.707474 0.209956\nv -0.349806 0.779474 0.201956\nv -0.287453 0.793487 0.165957\nv -0.207594 4.559279 0.119852\nv -0.238769 4.561275 0.137850\nv -0.263020 4.591273 0.151852\nv -0.263020 4.639273 0.151852\nv -0.235307 4.671280 0.135852\nv -0.186810 4.671280 0.107852\nv -0.291280 -0.695618 0.291273\nv -0.320980 -0.695625 0.320971\nv -0.342188 -0.665634 0.342179\nv -0.342188 -0.583625 0.342179\nv -0.319559 -0.543625 0.319551\nv -0.285618 -0.543625 0.285610\nv -0.257333 0.601487 0.257326\nv -0.285618 0.641487 0.285610\nv -0.296931 0.707474 0.296924\nv -0.285618 0.779474 0.285610\nv -0.234706 0.793487 0.234700\nv -0.169501 4.559279 0.169497\nv -0.205970 -0.695618 0.356736\nv -0.226971 -0.695625 0.393109\nv -0.241967 -0.665634 0.419083\nv -0.241967 -0.583625 0.419083\nv -0.225966 -0.543625 0.391369\nv -0.201966 -0.543625 0.349801\nv -0.181965 0.601487 0.315160\nv -0.201966 0.641487 0.349801\nv -0.209966 0.707474 0.363657\nv -0.201966 0.779474 0.349801\nv -0.165965 0.793487 0.287448\nv -0.119858 4.559279 0.207591\nv -0.137857 4.561275 0.238765\nv -0.151859 4.591273 0.263016\nv -0.151859 4.639273 0.263016\nv -0.135858 4.671280 0.235304\nv -0.107857 4.671280 0.186807\nv -0.106623 -0.695618 0.397889\nv -0.117495 -0.695625 0.438458\nv -0.125258 -0.665634 0.467428\nv -0.125258 -0.583625 0.467428\nv -0.116975 -0.543625 0.436518\nv -0.104550 -0.543625 0.390153\nv -0.094197 0.601487 0.351517\nv -0.104550 0.641487 0.390153\nv -0.108692 0.707474 0.405608\nv -0.104550 0.779474 0.390153\nv -0.085914 0.793487 0.320608\nv -0.062046 4.559279 0.231539\nv -0.078612 4.639273 0.293358\nv -0.070329 4.671280 0.262448\nv -0.055834 4.671280 0.208357\nv -0.000011 -0.695618 0.411927\nv -0.000012 -0.695625 0.453928\nv -0.000013 -0.665634 0.483920\nv -0.000013 -0.583625 0.483920\nv -0.000012 -0.543625 0.451919\nv -0.000011 -0.543625 0.403919\nv -0.000010 0.601487 0.363919\nv -0.000011 0.641487 0.403919\nv -0.000011 0.707474 0.419919\nv -0.000011 0.779474 0.403919\nv -0.000009 0.793487 0.331920\nv -0.000006 4.559279 0.239708\nv -0.000007 4.561275 0.275705\nv -0.000008 4.591273 0.303708\nv -0.000008 4.639273 0.303708\nv -0.000007 4.671280 0.271708\nv -0.000006 4.671280 0.215708\nv 0.106602 -0.695618 0.397894\nv 0.117472 -0.695625 0.438464\nv 0.125233 -0.665634 0.467435\nv 0.125233 -0.583625 0.467435\nv 0.116952 -0.543625 0.436524\nv 0.104530 -0.543625 0.390159\nv 0.094178 0.601487 0.351522\nv 0.104530 0.641487 0.390159\nv 0.108671 0.707474 0.405614\nv 0.104530 0.779474 0.390159\nv 0.085897 0.793487 0.320613\nv 0.062034 4.559279 0.231542\nv 0.078596 4.591273 0.293362\nv 0.078596 4.639273 0.293362\nv 0.055823 4.671280 0.208360\nv 0.205951 -0.695618 0.356746\nv 0.226950 -0.695625 0.393121\nv 0.241945 -0.665634 0.419095\nv 0.241945 -0.583625 0.419095\nv 0.225946 -0.543625 0.391381\nv 0.201947 -0.543625 0.349811\nv 0.181948 0.601487 0.315169\nv 0.201947 0.641487 0.349811\nv 0.209947 0.707474 0.363668\nv 0.201947 0.779474 0.349811\nv 0.165950 0.793487 0.287457\nv 0.119847 4.559279 0.207597\nv 0.137844 4.561275 0.238772\nv 0.151845 4.591273 0.263024\nv 0.151845 4.639273 0.263024\nv 0.135846 4.671280 0.235311\nv 0.107847 4.671280 0.186812\nv 0.291265 -0.695618 0.291288\nv 0.320963 -0.695625 0.320988\nv 0.342170 -0.665634 0.342197\nv 0.342170 -0.583625 0.342197\nv 0.319542 -0.543625 0.319568\nv 0.285603 -0.543625 0.285625\nv 0.257319 0.601487 0.257340\nv 0.285603 0.641487 0.285625\nv 0.296916 0.707474 0.296939\nv 0.285603 0.779474 0.285625\nv 0.234694 0.793487 0.234712\nv 0.169492 4.559279 0.169506\nv 0.214745 4.591273 0.214762\nv 0.356730 -0.695618 0.205979\nv 0.393103 -0.695625 0.226981\nv 0.419076 -0.665634 0.241978\nv 0.419076 -0.583625 0.241978\nv 0.391363 -0.543625 0.225977\nv 0.349795 -0.543625 0.201975\nv 0.315155 0.601487 0.181973\nv 0.349795 0.641487 0.201975\nv 0.363651 0.707474 0.209975\nv 0.349795 0.779474 0.201975\nv 0.287444 0.793487 0.165973\nv 0.207588 4.559279 0.119863\nv 0.238761 4.561275 0.137863\nv 0.263012 4.591273 0.151866\nv 0.263012 4.639273 0.151866\nv 0.235300 4.671280 0.135864\nv 0.186804 4.671280 0.107862\nv 0.397886 -0.695618 0.106634\nv 0.438455 -0.695625 0.117506\nv 0.467425 -0.665634 0.125270\nv 0.467425 -0.583625 0.125270\nv 0.436515 -0.543625 0.116986\nv 0.390151 -0.543625 0.104561\nv 0.351514 0.601487 0.094206\nv 0.390151 0.641487 0.104561\nv 0.405605 0.707474 0.108703\nv 0.390151 0.779474 0.104561\nv 0.320606 0.793487 0.085923\nv 0.231537 4.559279 0.062052\nv 0.208355 4.671280 0.055839\nv 0.411927 -0.695618 0.000022\nv 0.453928 -0.695625 0.000024\nv 0.483920 -0.665634 0.000025\nv 0.483920 -0.583625 0.000025\nv 0.451919 -0.543625 0.000024\nv 0.403919 -0.543625 0.000021\nv 0.363919 0.601487 0.000019\nv 0.403919 0.641487 0.000021\nv 0.419919 0.707474 0.000022\nv 0.403919 0.779474 0.000021\nv 0.331920 0.793487 0.000017\nv 0.239708 4.559279 0.000013\nv 0.275705 4.561275 0.000015\nv 0.303708 4.591273 0.000016\nv 0.303708 4.639273 0.000016\nv 0.271708 4.671280 0.000014\nv 0.215708 4.671280 0.000011\nv 0.397897 -0.695618 -0.106592\nv 0.438467 -0.695625 -0.117460\nv 0.467438 -0.665634 -0.125221\nv 0.467438 -0.583625 -0.125221\nv 0.436527 -0.543625 -0.116940\nv 0.390162 -0.543625 -0.104520\nv 0.351524 0.601487 -0.094169\nv 0.390162 0.641487 -0.104520\nv 0.405617 0.707474 -0.108660\nv 0.390162 0.779474 -0.104520\nv 0.320615 0.793487 -0.085889\nv 0.231544 4.559279 -0.062028\nv 0.356752 -0.695618 -0.205942\nv 0.393127 -0.695625 -0.226940\nv 0.419102 -0.665634 -0.241934\nv 0.419102 -0.583625 -0.241934\nv 0.391387 -0.543625 -0.225935\nv 0.349817 -0.543625 -0.201938\nv 0.315174 0.601487 -0.181940\nv 0.349817 0.641487 -0.201938\nv 0.363673 0.707474 -0.209937\nv 0.349817 0.779474 -0.201938\nv 0.287461 0.793487 -0.165942\nv 0.207601 4.559279 -0.119841\nv 0.238776 4.561275 -0.137838\nv 0.263028 4.591273 -0.151838\nv 0.263028 4.639273 -0.151838\nv 0.235314 4.671280 -0.135840\nv 0.186815 4.671280 -0.107842\nv 0.291296 -0.695618 -0.291257\nv 0.320997 -0.695625 -0.320954\nv 0.342206 -0.665634 -0.342161\nv 0.342206 -0.583625 -0.342161\nv 0.319576 -0.543625 -0.319534\nv 0.285633 -0.543625 -0.285595\nv 0.257347 0.601487 -0.257313\nv 0.285633 0.641487 -0.285595\nv 0.296947 0.707474 -0.296908\nv 0.285633 0.779474 -0.285595\nv 0.234718 0.793487 -0.234687\nv 0.169510 4.559279 -0.169488\nv 0.205988 -0.695618 -0.356725\nv 0.226992 -0.695625 -0.393097\nv 0.241989 -0.665634 -0.419070\nv 0.241989 -0.583625 -0.419070\nv 0.225987 -0.543625 -0.391358\nv 0.201984 -0.543625 -0.349790\nv 0.181982 0.601487 -0.315150\nv 0.201984 0.641487 -0.349790\nv 0.209985 0.707474 -0.363646\nv 0.201984 0.779474 -0.349790\nv 0.165980 0.793487 -0.287440\nv 0.119869 4.559279 -0.207585\nv 0.137869 4.561275 -0.238758\nv 0.151872 4.591273 -0.263008\nv 0.151872 4.639273 -0.263008\nv 0.135870 4.671280 -0.235297\nv 0.107867 4.671280 -0.186801\nv 0.106644 -0.695618 -0.397883\nv 0.117518 -0.695625 -0.438452\nv 0.125283 -0.665634 -0.467421\nv 0.125283 -0.583625 -0.467421\nv 0.116998 -0.543625 -0.436511\nv 0.104571 -0.543625 -0.390148\nv 0.094215 0.601487 -0.351512\nv 0.104571 0.641487 -0.390148\nv 0.108713 0.707474 -0.405602\nv 0.104571 0.779474 -0.390148\nv 0.085931 0.793487 -0.320604\nv 0.062058 4.559279 -0.231535\nv 0.070343 4.671280 -0.262444\nv 0.000033 -0.695618 -0.411927\nv 0.000036 -0.695625 -0.453928\nv 0.000038 -0.665634 -0.483920\nv 0.000038 -0.583625 -0.483920\nv 0.000036 -0.543625 -0.451919\nv 0.000032 -0.543625 -0.403919\nv 0.000029 0.601487 -0.363919\nv 0.000032 0.641487 -0.403919\nv 0.000033 0.707474 -0.419919\nv 0.000032 0.779474 -0.403919\nv 0.000026 0.793487 -0.331920\nv 0.000019 4.559279 -0.239708\nv 0.000022 4.561275 -0.275705\nv 0.000024 4.591273 -0.303708\nv 0.000024 4.639273 -0.303708\nv 0.000022 4.671280 -0.271708\nv 0.000017 4.671280 -0.215708\nv -0.106581 -0.695618 -0.397900\nv -0.117449 -0.695625 -0.438471\nv -0.125209 -0.665634 -0.467441\nv -0.125209 -0.583625 -0.467441\nv -0.116929 -0.543625 -0.436530\nv -0.104509 -0.543625 -0.390165\nv -0.094160 0.601487 -0.351527\nv -0.104509 0.641487 -0.390165\nv -0.108649 0.707474 -0.405620\nv -0.104509 0.779474 -0.390165\nv -0.085880 0.793487 -0.320617\nv -0.062022 4.559279 -0.231545\nv -0.078581 4.591273 -0.293366\nv -0.205932 -0.695618 -0.356757\nv -0.226929 -0.695625 -0.393133\nv -0.241923 -0.665634 -0.419108\nv -0.241923 -0.583625 -0.419108\nv -0.225925 -0.543625 -0.391393\nv -0.201929 -0.543625 -0.349822\nv -0.181932 0.601487 -0.315179\nv -0.201929 0.641487 -0.349822\nv -0.209928 0.707474 -0.363679\nv -0.201929 0.779474 -0.349822\nv -0.165935 0.793487 -0.287466\nv -0.119836 4.559279 -0.207604\nv -0.137832 4.561275 -0.238780\nv -0.151831 4.591273 -0.263032\nv -0.151831 4.639273 -0.263032\nv -0.135833 4.671280 -0.235318\nv -0.107838 4.671280 -0.186818\nv -0.291250 -0.695618 -0.291303\nv -0.320946 -0.695625 -0.321005\nv -0.342152 -0.665634 -0.342215\nv -0.342152 -0.583625 -0.342215\nv -0.319526 -0.543625 -0.319584\nv -0.285588 -0.543625 -0.285640\nv -0.257306 0.601487 -0.257353\nv -0.285588 0.641487 -0.285640\nv -0.296900 0.707474 -0.296955\nv -0.285588 0.779474 -0.285640\nv -0.234681 0.793487 -0.234725\nv -0.169484 4.559279 -0.169515\nv -0.152515 4.671280 -0.152543\nv -0.356719 -0.695618 -0.205998\nv -0.393091 -0.695625 -0.227002\nv -0.419064 -0.665634 -0.242000\nv -0.419064 -0.583625 -0.242000\nv -0.391352 -0.543625 -0.225997\nv -0.349785 -0.543625 -0.201993\nv -0.315146 0.601487 -0.181990\nv -0.349785 0.641487 -0.201993\nv -0.363640 0.707474 -0.209995\nv -0.349785 0.779474 -0.201993\nv -0.287435 0.793487 -0.165988\nv -0.207582 4.559279 -0.119874\nv -0.238754 4.561275 -0.137876\nv -0.263004 4.591273 -0.151879\nv -0.263004 4.639273 -0.151879\nv -0.235293 4.671280 -0.135877\nv -0.186798 4.671280 -0.107872\nv -0.397880 -0.695618 -0.106655\nv -0.438449 -0.695625 -0.117529\nv -0.467418 -0.665634 -0.125295\nv -0.467418 -0.583625 -0.125295\nv -0.436508 -0.543625 -0.117009\nv -0.390145 -0.543625 -0.104581\nv -0.351509 0.601487 -0.094225\nv -0.390145 0.641487 -0.104581\nv -0.405600 0.707474 -0.108724\nv -0.390145 0.779474 -0.104581\nv -0.320601 0.793487 -0.085940\nv -0.231534 4.559279 -0.062064\nv -0.208352 4.671280 -0.055850\nv 0.042099 0.760516 0.319849\nv 0.049195 0.755443 0.373756\nv 0.049945 0.707794 0.379455\nv 0.048430 0.657846 0.367941\nv 0.043001 0.613739 0.326701\nv 0.047878 -0.544789 0.363746\nv -0.140407 -0.544789 0.338953\nv -0.291071 -0.544789 0.223341\nv -0.363745 -0.544789 0.047887\nv 0.223334 -0.544789 0.291076\nv 0.200588 0.613739 0.261432\nv 0.225910 0.657846 0.294434\nv 0.232979 0.707794 0.303647\nv 0.229480 0.755443 0.299087\nv 0.196382 0.760516 0.255949\nv -0.123463 0.760516 0.298048\nv -0.255945 0.760516 0.196388\nv -0.319848 0.760516 0.042108\nv -0.373755 0.755443 0.049205\nv -0.299081 0.755444 0.229487\nv -0.144271 0.755443 0.348281\nv -0.142026 0.657846 0.342863\nv -0.126108 0.613739 0.304434\nv -0.146471 0.707794 0.353592\nv -0.303641 0.707794 0.232987\nv -0.261427 0.613739 0.200596\nv -0.294428 0.657846 0.225917\nv -0.379454 0.707794 0.049955\nv -0.367940 0.657846 0.048439\nv -0.326700 0.613739 0.043010\nv -0.298039 0.760516 -0.123487\nv -0.196368 0.760516 -0.255960\nv -0.042083 0.760516 -0.319851\nv -0.049175 0.755443 -0.373759\nv -0.049925 0.707794 -0.379458\nv -0.048410 0.657846 -0.367944\nv -0.042984 0.613739 -0.326704\nv -0.200575 0.613739 -0.261443\nv -0.225894 0.657846 -0.294446\nv -0.232963 0.707794 -0.303660\nv -0.229464 0.755443 -0.299099\nv -0.348270 0.755443 -0.144298\nv -0.353580 0.707794 -0.146499\nv -0.342852 0.657846 -0.142053\nv -0.304424 0.613739 -0.126132\nv -0.338942 -0.544789 -0.140434\nv -0.223319 -0.544789 -0.291089\nv -0.047858 -0.544789 -0.363749\nv 0.140425 -0.544789 -0.338946\nv 0.291083 -0.544789 -0.223326\nv 0.363748 -0.544789 -0.047868\nv 0.123478 0.760516 -0.298043\nv 0.144289 0.755444 -0.348273\nv 0.146489 0.707794 -0.353584\nv 0.142044 0.657846 -0.342855\nv 0.126124 0.613739 -0.304427\nv 0.261438 0.613739 -0.200582\nv 0.294440 0.657846 -0.225902\nv 0.303653 0.707794 -0.232971\nv 0.299093 0.755444 -0.229471\nv 0.255955 0.760516 -0.196375\nv 0.319851 0.760516 -0.042092\nv 0.373758 0.755443 -0.049186\nv 0.379457 0.707794 -0.049935\nv 0.367943 0.657846 -0.048420\nv 0.326702 0.613739 -0.042993\nv 0.298045 0.760516 0.123471\nv 0.348277 0.755444 0.144280\nv 0.353588 0.707794 0.146480\nv 0.342859 0.657846 0.142035\nv 0.304430 0.613739 0.126115\nv 0.338950 -0.544789 0.140416\nv -0.026067 4.543957 0.197960\nv -0.038002 0.778164 0.288601\nv -0.121553 4.543957 0.158406\nv -0.177209 0.778164 0.230936\nv -0.184470 4.543957 0.076408\nv -0.268934 0.778164 0.111395\nv -0.197958 4.543957 -0.026072\nv -0.288597 0.778165 -0.038010\nv 0.184475 4.543957 -0.076399\nv 0.268941 0.778164 -0.111380\nv 0.121561 4.543957 -0.158400\nv 0.177221 0.778164 -0.230926\nv 0.026077 4.543957 -0.197959\nv 0.038017 0.778164 -0.288599\nv -0.076395 4.543957 -0.184476\nv -0.111373 0.778164 -0.268943\nv -0.158396 4.543957 -0.121565\nv -0.230922 0.778164 -0.177227\nv 0.197959 4.543957 0.026072\nv 0.288599 0.778164 0.038010\nv 0.158403 4.543957 0.121557\nv 0.230932 0.778164 0.177215\nv 0.076404 4.543957 0.184472\nv 0.111387 0.778164 0.268937\nv -0.231537 4.559279 -0.000012\n# 4440 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng globes\nusemtl globes\nf 1669 1692 1691\nf 1688 1692 1687\nf 1684 1692 1683\nf 1680 1692 1679\nf 1676 1692 1675\nf 1672 1692 1671\nf 1645 1669 1691 1667\nf 1664 1688 1687 1663\nf 1660 1684 1683 1659\nf 1656 1680 1679 1655\nf 1652 1676 1675 1651\nf 1648 1672 1671 1647\nf 1621 1645 1667 1643\nf 1640 1664 1663 1639\nf 1636 1660 1659 1635\nf 1632 1656 1655 1631\nf 1628 1652 1651 1627\nf 1624 1648 1647 1623\nf 1597 1621 1643 1619\nf 1616 1640 1639 1615\nf 1612 1636 1635 1611\nf 1608 1632 1631 1607\nf 1604 1628 1627 1603\nf 1600 1624 1623 1599\nf 1573 1597 1619 1595\nf 1592 1616 1615 1591\nf 1588 1612 1611 1587\nf 1584 1608 1607 1583\nf 1580 1604 1603 1579\nf 1576 1600 1599 1575\nf 1549 1573 1595 1571\nf 1568 1592 1591 1567\nf 1564 1588 1587 1563\nf 1560 1584 1583 1559\nf 1556 1580 1579 1555\nf 1552 1576 1575 1551\nf 1525 1549 1571 1547\nf 1544 1568 1567 1543\nf 1540 1564 1563 1539\nf 1536 1560 1559 1535\nf 1532 1556 1555 1531\nf 1528 1552 1551 1527\nf 1501 1525 1547 1523\nf 1520 1544 1543 1519\nf 1516 1540 1539 1515\nf 1512 1536 1535 1511\nf 1508 1532 1531 1507\nf 1504 1528 1527 1503\nf 1477 1501 1523 1499\nf 1496 1520 1519 1495\nf 1492 1516 1515 1491\nf 1488 1512 1511 1487\nf 1484 1508 1507 1483\nf 1480 1504 1503 1479\nf 1453 1477 1499 1475\nf 1472 1496 1495 1471\nf 1468 1492 1491 1467\nf 1464 1488 1487 1463\nf 1460 1484 1483 1459\nf 1456 1480 1479 1455\nf 1429 1453 1475 1451\nf 1448 1472 1471 1447\nf 1444 1468 1467 1443\nf 1440 1464 1463 1439\nf 1436 1460 1459 1435\nf 1432 1456 1455 1431\nf 1427 1429 1451\nf 1427 1448 1447\nf 1427 1444 1443\nf 1427 1440 1439\nf 1427 1436 1435\nf 1427 1432 1431\nf 1403 1426 1425\nf 1422 1426 1421\nf 1418 1426 1417\nf 1414 1426 1413\nf 1410 1426 1409\nf 1406 1426 1405\nf 1379 1403 1425 1401\nf 1398 1422 1421 1397\nf 1394 1418 1417 1393\nf 1390 1414 1413 1389\nf 1386 1410 1409 1385\nf 1382 1406 1405 1381\nf 1355 1379 1401 1377\nf 1374 1398 1397 1373\nf 1370 1394 1393 1369\nf 1366 1390 1389 1365\nf 1362 1386 1385 1361\nf 1358 1382 1381 1357\nf 1331 1355 1377 1353\nf 1350 1374 1373 1349\nf 1346 1370 1369 1345\nf 1342 1366 1365 1341\nf 1338 1362 1361 1337\nf 1334 1358 1357 1333\nf 1307 1331 1353 1329\nf 1326 1350 1349 1325\nf 1322 1346 1345 1321\nf 1318 1342 1341 1317\nf 1314 1338 1337 1313\nf 1310 1334 1333 1309\nf 1283 1307 1329 1305\nf 1302 1326 1325 1301\nf 1298 1322 1321 1297\nf 1294 1318 1317 1293\nf 1290 1314 1313 1289\nf 1286 1310 1309 1285\nf 1259 1283 1305 1281\nf 1278 1302 1301 1277\nf 1274 1298 1297 1273\nf 1270 1294 1293 1269\nf 1266 1290 1289 1265\nf 1262 1286 1285 1261\nf 1235 1259 1281 1257\nf 1254 1278 1277 1253\nf 1250 1274 1273 1249\nf 1246 1270 1269 1245\nf 1242 1266 1265 1241\nf 1238 1262 1261 1237\nf 1211 1235 1257 1233\nf 1230 1254 1253 1229\nf 1226 1250 1249 1225\nf 1222 1246 1245 1221\nf 1218 1242 1241 1217\nf 1214 1238 1237 1213\nf 1187 1211 1233 1209\nf 1206 1230 1229 1205\nf 1202 1226 1225 1201\nf 1198 1222 1221 1197\nf 1194 1218 1217 1193\nf 1190 1214 1213 1189\nf 1163 1187 1209 1185\nf 1182 1206 1205 1181\nf 1178 1202 1201 1177\nf 1174 1198 1197 1173\nf 1170 1194 1193 1169\nf 1166 1190 1189 1165\nf 1161 1163 1185\nf 1161 1182 1181\nf 1161 1178 1177\nf 1161 1174 1173\nf 1161 1170 1169\nf 1161 1166 1165\nf 531 532 530\nf 527 532 526\nf 523 532 522\nf 519 532 518\nf 515 532 514\nf 511 532 510\nf 507 531 530 506\nf 503 527 526 502\nf 499 523 522 498\nf 495 519 518 494\nf 491 515 514 490\nf 487 511 510 486\nf 483 507 506 482\nf 479 503 502 478\nf 475 499 498 474\nf 471 495 494 470\nf 467 491 490 466\nf 463 487 486 462\nf 459 483 482 458\nf 455 479 478 454\nf 451 475 474 450\nf 447 471 470 446\nf 443 467 466 442\nf 439 463 462 438\nf 435 459 458 434\nf 431 455 454 430\nf 427 451 450 426\nf 423 447 446 422\nf 419 443 442 418\nf 415 439 438 414\nf 411 435 434 410\nf 407 431 430 406\nf 403 427 426 402\nf 399 423 422 398\nf 395 419 418 394\nf 391 415 414 390\nf 387 411 410 386\nf 383 407 406 382\nf 379 403 402 378\nf 375 399 398 374\nf 371 395 394 370\nf 367 391 390 366\nf 363 387 386 362\nf 359 383 382 358\nf 355 379 378 354\nf 351 375 374 350\nf 347 371 370 346\nf 343 367 366 342\nf 339 363 362 338\nf 335 359 358 334\nf 331 355 354 330\nf 327 351 350 326\nf 323 347 346 322\nf 319 343 342 318\nf 315 339 338 314\nf 311 335 334 310\nf 307 331 330 306\nf 303 327 326 302\nf 299 323 322 298\nf 295 319 318 294\nf 291 315 314 290\nf 287 311 310 286\nf 283 307 306 282\nf 279 303 302 278\nf 275 299 298 274\nf 271 295 294 270\nf 267 291 290\nf 267 287 286\nf 267 283 282\nf 267 279 278\nf 267 275 274\nf 267 271 270\nf 265 266 264\nf 261 266 260\nf 257 266 256\nf 253 266 252\nf 249 266 248\nf 245 266 244\nf 241 265 264 240\nf 237 261 260 236\nf 233 257 256 232\nf 229 253 252 228\nf 225 249 248 224\nf 221 245 244 220\nf 217 241 240 216\nf 213 237 236 212\nf 209 233 232 208\nf 205 229 228 204\nf 201 225 224 200\nf 197 221 220 196\nf 193 217 216 192\nf 189 213 212 188\nf 185 209 208 184\nf 181 205 204 180\nf 177 201 200 176\nf 173 197 196 172\nf 169 193 192 168\nf 165 189 188 164\nf 161 185 184 160\nf 157 181 180 156\nf 153 177 176 152\nf 149 173 172 148\nf 145 169 168 144\nf 141 165 164 140\nf 137 161 160 136\nf 133 157 156 132\nf 129 153 152 128\nf 125 149 148 124\nf 121 145 144 120\nf 117 141 140 116\nf 113 137 136 112\nf 109 133 132 108\nf 105 129 128 104\nf 101 125 124 100\nf 97 121 120 96\nf 93 117 116 92\nf 89 113 112 88\nf 85 109 108 84\nf 81 105 104 80\nf 77 101 100 76\nf 73 97 96 72\nf 69 93 92 68\nf 65 89 88 64\nf 61 85 84 60\nf 57 81 80 56\nf 53 77 76 52\nf 49 73 72 48\nf 45 69 68 44\nf 41 65 64 40\nf 37 61 60 36\nf 33 57 56 32\nf 29 53 52 28\nf 25 49 48 24\nf 21 45 44 20\nf 17 41 40 16\nf 13 37 36 12\nf 9 33 32 8\nf 5 29 28 4\nf 1 25 24\nf 1 21 20\nf 1 17 16\nf 1 13 12\nf 1 9 8\nf 1 5 4\nf 1 4 3\nf 1 8 7\nf 1 12 11\nf 1 16 15\nf 1 20 19\nf 1 24 23\nf 4 28 27 3\nf 8 32 31 7\nf 12 36 35 11\nf 16 40 39 15\nf 20 44 43 19\nf 24 48 47 23\nf 28 52 51 27\nf 32 56 55 31\nf 36 60 59 35\nf 40 64 63 39\nf 44 68 67 43\nf 48 72 71 47\nf 52 76 75 51\nf 56 80 79 55\nf 60 84 83 59\nf 64 88 87 63\nf 68 92 91 67\nf 72 96 95 71\nf 76 100 99 75\nf 80 104 103 79\nf 84 108 107 83\nf 88 112 111 87\nf 92 116 115 91\nf 96 120 119 95\nf 100 124 123 99\nf 104 128 127 103\nf 108 132 131 107\nf 112 136 135 111\nf 116 140 139 115\nf 120 144 143 119\nf 124 148 147 123\nf 128 152 151 127\nf 132 156 155 131\nf 136 160 159 135\nf 140 164 163 139\nf 144 168 167 143\nf 148 172 171 147\nf 152 176 175 151\nf 156 180 179 155\nf 160 184 183 159\nf 164 188 187 163\nf 168 192 191 167\nf 172 196 195 171\nf 176 200 199 175\nf 180 204 203 179\nf 184 208 207 183\nf 188 212 211 187\nf 192 216 215 191\nf 196 220 219 195\nf 200 224 223 199\nf 204 228 227 203\nf 208 232 231 207\nf 212 236 235 211\nf 216 240 239 215\nf 220 244 243 219\nf 224 248 247 223\nf 228 252 251 227\nf 232 256 255 231\nf 236 260 259 235\nf 240 264 263 239\nf 244 266 243\nf 248 266 247\nf 252 266 251\nf 256 266 255\nf 260 266 259\nf 264 266 263\nf 267 270 268\nf 267 274 273\nf 267 278 277\nf 267 282 281\nf 267 286 285\nf 267 290 289\nf 270 294 292 268\nf 274 298 297 273\nf 278 302 301 277\nf 282 306 305 281\nf 286 310 309 285\nf 290 314 313 289\nf 294 318 316 292\nf 298 322 321 297\nf 302 326 325 301\nf 306 330 329 305\nf 310 334 333 309\nf 314 338 337 313\nf 318 342 340 316\nf 322 346 345 321\nf 326 350 349 325\nf 330 354 353 329\nf 334 358 357 333\nf 338 362 361 337\nf 342 366 364 340\nf 346 370 369 345\nf 350 374 373 349\nf 354 378 377 353\nf 358 382 381 357\nf 362 386 385 361\nf 366 390 388 364\nf 370 394 393 369\nf 374 398 397 373\nf 378 402 401 377\nf 382 406 405 381\nf 386 410 409 385\nf 390 414 412 388\nf 394 418 417 393\nf 398 422 421 397\nf 402 426 425 401\nf 406 430 429 405\nf 410 434 433 409\nf 414 438 436 412\nf 418 442 441 417\nf 422 446 445 421\nf 426 450 449 425\nf 430 454 453 429\nf 434 458 457 433\nf 438 462 460 436\nf 442 466 465 441\nf 446 470 469 445\nf 450 474 473 449\nf 454 478 477 453\nf 458 482 481 457\nf 462 486 484 460\nf 466 490 489 465\nf 470 494 493 469\nf 474 498 497 473\nf 478 502 501 477\nf 482 506 505 481\nf 486 510 508 484\nf 490 514 513 489\nf 494 518 517 493\nf 498 522 521 497\nf 502 526 525 501\nf 506 530 529 505\nf 510 532 508\nf 514 532 513\nf 518 532 517\nf 522 532 521\nf 526 532 525\nf 530 532 529\nf 1161 1162 1163\nf 1161 1167 1166\nf 1161 1171 1170\nf 1161 1175 1174\nf 1161 1179 1178\nf 1161 1183 1182\nf 1162 1186 1187 1163\nf 1167 1191 1190 1166\nf 1171 1195 1194 1170\nf 1175 1199 1198 1174\nf 1179 1203 1202 1178\nf 1183 1207 1206 1182\nf 1186 1210 1211 1187\nf 1191 1215 1214 1190\nf 1195 1219 1218 1194\nf 1199 1223 1222 1198\nf 1203 1227 1226 1202\nf 1207 1231 1230 1206\nf 1210 1234 1235 1211\nf 1215 1239 1238 1214\nf 1219 1243 1242 1218\nf 1223 1247 1246 1222\nf 1227 1251 1250 1226\nf 1231 1255 1254 1230\nf 1234 1258 1259 1235\nf 1239 1263 1262 1238\nf 1243 1267 1266 1242\nf 1247 1271 1270 1246\nf 1251 1275 1274 1250\nf 1255 1279 1278 1254\nf 1258 1282 1283 1259\nf 1263 1287 1286 1262\nf 1267 1291 1290 1266\nf 1271 1295 1294 1270\nf 1275 1299 1298 1274\nf 1279 1303 1302 1278\nf 1282 1306 1307 1283\nf 1287 1311 1310 1286\nf 1291 1315 1314 1290\nf 1295 1319 1318 1294\nf 1299 1323 1322 1298\nf 1303 1327 1326 1302\nf 1306 1330 1331 1307\nf 1311 1335 1334 1310\nf 1315 1339 1338 1314\nf 1319 1343 1342 1318\nf 1323 1347 1346 1322\nf 1327 1351 1350 1326\nf 1330 1354 1355 1331\nf 1335 1359 1358 1334\nf 1339 1363 1362 1338\nf 1343 1367 1366 1342\nf 1347 1371 1370 1346\nf 1351 1375 1374 1350\nf 1354 1378 1379 1355\nf 1359 1383 1382 1358\nf 1363 1387 1386 1362\nf 1367 1391 1390 1366\nf 1371 1395 1394 1370\nf 1375 1399 1398 1374\nf 1378 1402 1403 1379\nf 1383 1407 1406 1382\nf 1387 1411 1410 1386\nf 1391 1415 1414 1390\nf 1395 1419 1418 1394\nf 1399 1423 1422 1398\nf 1402 1426 1403\nf 1407 1426 1406\nf 1411 1426 1410\nf 1415 1426 1414\nf 1419 1426 1418\nf 1423 1426 1422\nf 1427 1428 1429\nf 1427 1433 1432\nf 1427 1437 1436\nf 1427 1441 1440\nf 1427 1445 1444\nf 1427 1449 1448\nf 1428 1452 1453 1429\nf 1433 1457 1456 1432\nf 1437 1461 1460 1436\nf 1441 1465 1464 1440\nf 1445 1469 1468 1444\nf 1449 1473 1472 1448\nf 1452 1476 1477 1453\nf 1457 1481 1480 1456\nf 1461 1485 1484 1460\nf 1465 1489 1488 1464\nf 1469 1493 1492 1468\nf 1473 1497 1496 1472\nf 1476 1500 1501 1477\nf 1481 1505 1504 1480\nf 1485 1509 1508 1484\nf 1489 1513 1512 1488\nf 1493 1517 1516 1492\nf 1497 1521 1520 1496\nf 1500 1524 1525 1501\nf 1505 1529 1528 1504\nf 1509 1533 1532 1508\nf 1513 1537 1536 1512\nf 1517 1541 1540 1516\nf 1521 1545 1544 1520\nf 1524 1548 1549 1525\nf 1529 1553 1552 1528\nf 1533 1557 1556 1532\nf 1537 1561 1560 1536\nf 1541 1565 1564 1540\nf 1545 1569 1568 1544\nf 1548 1572 1573 1549\nf 1553 1577 1576 1552\nf 1557 1581 1580 1556\nf 1561 1585 1584 1560\nf 1565 1589 1588 1564\nf 1569 1593 1592 1568\nf 1572 1596 1597 1573\nf 1577 1601 1600 1576\nf 1581 1605 1604 1580\nf 1585 1609 1608 1584\nf 1589 1613 1612 1588\nf 1593 1617 1616 1592\nf 1596 1620 1621 1597\nf 1601 1625 1624 1600\nf 1605 1629 1628 1604\nf 1609 1633 1632 1608\nf 1613 1637 1636 1612\nf 1617 1641 1640 1616\nf 1620 1644 1645 1621\nf 1625 1649 1648 1624\nf 1629 1653 1652 1628\nf 1633 1657 1656 1632\nf 1637 1661 1660 1636\nf 1641 1665 1664 1640\nf 1644 1668 1669 1645\nf 1649 1673 1672 1648\nf 1653 1677 1676 1652\nf 1657 1681 1680 1656\nf 1661 1685 1684 1660\nf 1665 1689 1688 1664\nf 1668 1692 1669\nf 1673 1692 1672\nf 1677 1692 1676\nf 1681 1692 1680\nf 1685 1692 1684\nf 1689 1692 1688\nf 1691 1692 1690\nf 1687 1692 1686\nf 1683 1692 1682\nf 1679 1692 1678\nf 1675 1692 1674\nf 1671 1692 1670\nf 1667 1691 1690 1666\nf 1663 1687 1686 1662\nf 1659 1683 1682 1658\nf 1655 1679 1678 1654\nf 1651 1675 1674 1650\nf 1647 1671 1670 1646\nf 1643 1667 1666 1642\nf 1639 1663 1662 1638\nf 1635 1659 1658 1634\nf 1631 1655 1654 1630\nf 1627 1651 1650 1626\nf 1623 1647 1646 1622\nf 1619 1643 1642 1618\nf 1615 1639 1638 1614\nf 1611 1635 1634 1610\nf 1607 1631 1630 1606\nf 1603 1627 1626 1602\nf 1599 1623 1622 1598\nf 1595 1619 1618 1594\nf 1591 1615 1614 1590\nf 1587 1611 1610 1586\nf 1583 1607 1606 1582\nf 1579 1603 1602 1578\nf 1575 1599 1598 1574\nf 1571 1595 1594 1570\nf 1567 1591 1590 1566\nf 1563 1587 1586 1562\nf 1559 1583 1582 1558\nf 1555 1579 1578 1554\nf 1551 1575 1574 1550\nf 1547 1571 1570 1546\nf 1543 1567 1566 1542\nf 1539 1563 1562 1538\nf 1535 1559 1558 1534\nf 1531 1555 1554 1530\nf 1527 1551 1550 1526\nf 1523 1547 1546 1522\nf 1519 1543 1542 1518\nf 1515 1539 1538 1514\nf 1511 1535 1534 1510\nf 1507 1531 1530 1506\nf 1503 1527 1526 1502\nf 1499 1523 1522 1498\nf 1495 1519 1518 1494\nf 1491 1515 1514 1490\nf 1487 1511 1510 1486\nf 1483 1507 1506 1482\nf 1479 1503 1502 1478\nf 1475 1499 1498 1474\nf 1471 1495 1494 1470\nf 1467 1491 1490 1466\nf 1463 1487 1486 1462\nf 1459 1483 1482 1458\nf 1455 1479 1478 1454\nf 1451 1475 1474 1450\nf 1447 1471 1470 1446\nf 1443 1467 1466 1442\nf 1439 1463 1462 1438\nf 1435 1459 1458 1434\nf 1431 1455 1454 1430\nf 1427 1451 1450\nf 1427 1447 1446\nf 1427 1443 1442\nf 1427 1439 1438\nf 1427 1435 1434\nf 1427 1431 1430\nf 1425 1426 1424\nf 1421 1426 1420\nf 1417 1426 1416\nf 1413 1426 1412\nf 1409 1426 1408\nf 1405 1426 1404\nf 1401 1425 1424 1400\nf 1397 1421 1420 1396\nf 1393 1417 1416 1392\nf 1389 1413 1412 1388\nf 1385 1409 1408 1384\nf 1381 1405 1404 1380\nf 1377 1401 1400 1376\nf 1373 1397 1396 1372\nf 1369 1393 1392 1368\nf 1365 1389 1388 1364\nf 1361 1385 1384 1360\nf 1357 1381 1380 1356\nf 1353 1377 1376 1352\nf 1349 1373 1372 1348\nf 1345 1369 1368 1344\nf 1341 1365 1364 1340\nf 1337 1361 1360 1336\nf 1333 1357 1356 1332\nf 1329 1353 1352 1328\nf 1325 1349 1348 1324\nf 1321 1345 1344 1320\nf 1317 1341 1340 1316\nf 1313 1337 1336 1312\nf 1309 1333 1332 1308\nf 1305 1329 1328 1304\nf 1301 1325 1324 1300\nf 1297 1321 1320 1296\nf 1293 1317 1316 1292\nf 1289 1313 1312 1288\nf 1285 1309 1308 1284\nf 1281 1305 1304 1280\nf 1277 1301 1300 1276\nf 1273 1297 1296 1272\nf 1269 1293 1292 1268\nf 1265 1289 1288 1264\nf 1261 1285 1284 1260\nf 1257 1281 1280 1256\nf 1253 1277 1276 1252\nf 1249 1273 1272 1248\nf 1245 1269 1268 1244\nf 1241 1265 1264 1240\nf 1237 1261 1260 1236\nf 1233 1257 1256 1232\nf 1229 1253 1252 1228\nf 1225 1249 1248 1224\nf 1221 1245 1244 1220\nf 1217 1241 1240 1216\nf 1213 1237 1236 1212\nf 1209 1233 1232 1208\nf 1205 1229 1228 1204\nf 1201 1225 1224 1200\nf 1197 1221 1220 1196\nf 1193 1217 1216 1192\nf 1189 1213 1212 1188\nf 1185 1209 1208 1184\nf 1181 1205 1204 1180\nf 1177 1201 1200 1176\nf 1173 1197 1196 1172\nf 1169 1193 1192 1168\nf 1165 1189 1188 1164\nf 1161 1185 1184\nf 1161 1181 1180\nf 1161 1177 1176\nf 1161 1173 1172\nf 1161 1169 1168\nf 1161 1165 1164\nf 509 532 531\nf 528 532 527\nf 524 532 523\nf 520 532 519\nf 516 532 515\nf 512 532 511\nf 485 509 531 507\nf 504 528 527 503\nf 500 524 523 499\nf 496 520 519 495\nf 492 516 515 491\nf 488 512 511 487\nf 461 485 507 483\nf 480 504 503 479\nf 476 500 499 475\nf 472 496 495 471\nf 468 492 491 467\nf 464 488 487 463\nf 437 461 483 459\nf 456 480 479 455\nf 452 476 475 451\nf 448 472 471 447\nf 444 468 467 443\nf 440 464 463 439\nf 413 437 459 435\nf 432 456 455 431\nf 428 452 451 427\nf 424 448 447 423\nf 420 444 443 419\nf 416 440 439 415\nf 389 413 435 411\nf 408 432 431 407\nf 404 428 427 403\nf 400 424 423 399\nf 396 420 419 395\nf 392 416 415 391\nf 365 389 411 387\nf 384 408 407 383\nf 380 404 403 379\nf 376 400 399 375\nf 372 396 395 371\nf 368 392 391 367\nf 341 365 387 363\nf 360 384 383 359\nf 356 380 379 355\nf 352 376 375 351\nf 348 372 371 347\nf 344 368 367 343\nf 317 341 363 339\nf 336 360 359 335\nf 332 356 355 331\nf 328 352 351 327\nf 324 348 347 323\nf 320 344 343 319\nf 293 317 339 315\nf 312 336 335 311\nf 308 332 331 307\nf 304 328 327 303\nf 300 324 323 299\nf 296 320 319 295\nf 269 293 315 291\nf 288 312 311 287\nf 284 308 307 283\nf 280 304 303 279\nf 276 300 299 275\nf 272 296 295 271\nf 267 269 291\nf 267 288 287\nf 267 284 283\nf 267 280 279\nf 267 276 275\nf 267 272 271\nf 242 266 265\nf 262 266 261\nf 258 266 257\nf 254 266 253\nf 250 266 249\nf 246 266 245\nf 218 242 265 241\nf 238 262 261 237\nf 234 258 257 233\nf 230 254 253 229\nf 226 250 249 225\nf 222 246 245 221\nf 194 218 241 217\nf 214 238 237 213\nf 210 234 233 209\nf 206 230 229 205\nf 202 226 225 201\nf 198 222 221 197\nf 170 194 217 193\nf 190 214 213 189\nf 186 210 209 185\nf 182 206 205 181\nf 178 202 201 177\nf 174 198 197 173\nf 146 170 193 169\nf 166 190 189 165\nf 162 186 185 161\nf 158 182 181 157\nf 154 178 177 153\nf 150 174 173 149\nf 122 146 169 145\nf 142 166 165 141\nf 138 162 161 137\nf 134 158 157 133\nf 130 154 153 129\nf 126 150 149 125\nf 98 122 145 121\nf 118 142 141 117\nf 114 138 137 113\nf 110 134 133 109\nf 106 130 129 105\nf 102 126 125 101\nf 74 98 121 97\nf 94 118 117 93\nf 90 114 113 89\nf 86 110 109 85\nf 82 106 105 81\nf 78 102 101 77\nf 50 74 97 73\nf 70 94 93 69\nf 66 90 89 65\nf 62 86 85 61\nf 58 82 81 57\nf 54 78 77 53\nf 26 50 73 49\nf 46 70 69 45\nf 42 66 65 41\nf 38 62 61 37\nf 34 58 57 33\nf 30 54 53 29\nf 2 26 49 25\nf 22 46 45 21\nf 18 42 41 17\nf 14 38 37 13\nf 10 34 33 9\nf 6 30 29 5\nf 1 2 25\nf 1 22 21\nf 1 18 17\nf 1 14 13\nf 1 10 9\nf 1 6 5\nf 1 3 2\nf 1 7 6\nf 1 11 10\nf 1 15 14\nf 1 19 18\nf 1 23 22\nf 3 27 26 2\nf 7 31 30 6\nf 11 35 34 10\nf 15 39 38 14\nf 19 43 42 18\nf 23 47 46 22\nf 27 51 50 26\nf 31 55 54 30\nf 35 59 58 34\nf 39 63 62 38\nf 43 67 66 42\nf 47 71 70 46\nf 51 75 74 50\nf 55 79 78 54\nf 59 83 82 58\nf 63 87 86 62\nf 67 91 90 66\nf 71 95 94 70\nf 75 99 98 74\nf 79 103 102 78\nf 83 107 106 82\nf 87 111 110 86\nf 91 115 114 90\nf 95 119 118 94\nf 99 123 122 98\nf 103 127 126 102\nf 107 131 130 106\nf 111 135 134 110\nf 115 139 138 114\nf 119 143 142 118\nf 123 147 146 122\nf 127 151 150 126\nf 131 155 154 130\nf 135 159 158 134\nf 139 163 162 138\nf 143 167 166 142\nf 147 171 170 146\nf 151 175 174 150\nf 155 179 178 154\nf 159 183 182 158\nf 163 187 186 162\nf 167 191 190 166\nf 171 195 194 170\nf 175 199 198 174\nf 179 203 202 178\nf 183 207 206 182\nf 187 211 210 186\nf 191 215 214 190\nf 195 219 218 194\nf 199 223 222 198\nf 203 227 226 202\nf 207 231 230 206\nf 211 235 234 210\nf 215 239 238 214\nf 219 243 242 218\nf 223 247 246 222\nf 227 251 250 226\nf 231 255 254 230\nf 235 259 258 234\nf 239 263 262 238\nf 243 266 242\nf 247 266 246\nf 251 266 250\nf 255 266 254\nf 259 266 258\nf 263 266 262\nf 267 268 269\nf 267 273 272\nf 267 277 276\nf 267 281 280\nf 267 285 284\nf 267 289 288\nf 268 292 293 269\nf 273 297 296 272\nf 277 301 300 276\nf 281 305 304 280\nf 285 309 308 284\nf 289 313 312 288\nf 292 316 317 293\nf 297 321 320 296\nf 301 325 324 300\nf 305 329 328 304\nf 309 333 332 308\nf 313 337 336 312\nf 316 340 341 317\nf 321 345 344 320\nf 325 349 348 324\nf 329 353 352 328\nf 333 357 356 332\nf 337 361 360 336\nf 340 364 365 341\nf 345 369 368 344\nf 349 373 372 348\nf 353 377 376 352\nf 357 381 380 356\nf 361 385 384 360\nf 364 388 389 365\nf 369 393 392 368\nf 373 397 396 372\nf 377 401 400 376\nf 381 405 404 380\nf 385 409 408 384\nf 388 412 413 389\nf 393 417 416 392\nf 397 421 420 396\nf 401 425 424 400\nf 405 429 428 404\nf 409 433 432 408\nf 412 436 437 413\nf 417 441 440 416\nf 421 445 444 420\nf 425 449 448 424\nf 429 453 452 428\nf 433 457 456 432\nf 436 460 461 437\nf 441 465 464 440\nf 445 469 468 444\nf 449 473 472 448\nf 453 477 476 452\nf 457 481 480 456\nf 460 484 485 461\nf 465 489 488 464\nf 469 493 492 468\nf 473 497 496 472\nf 477 501 500 476\nf 481 505 504 480\nf 484 508 509 485\nf 489 513 512 488\nf 493 517 516 492\nf 497 521 520 496\nf 501 525 524 500\nf 505 529 528 504\nf 508 532 509\nf 513 532 512\nf 517 532 516\nf 521 532 520\nf 525 532 524\nf 529 532 528\nf 1161 1164 1162\nf 1161 1168 1167\nf 1161 1172 1171\nf 1161 1176 1175\nf 1161 1180 1179\nf 1161 1184 1183\nf 1164 1188 1186 1162\nf 1168 1192 1191 1167\nf 1172 1196 1195 1171\nf 1176 1200 1199 1175\nf 1180 1204 1203 1179\nf 1184 1208 1207 1183\nf 1188 1212 1210 1186\nf 1192 1216 1215 1191\nf 1196 1220 1219 1195\nf 1200 1224 1223 1199\nf 1204 1228 1227 1203\nf 1208 1232 1231 1207\nf 1212 1236 1234 1210\nf 1216 1240 1239 1215\nf 1220 1244 1243 1219\nf 1224 1248 1247 1223\nf 1228 1252 1251 1227\nf 1232 1256 1255 1231\nf 1236 1260 1258 1234\nf 1240 1264 1263 1239\nf 1244 1268 1267 1243\nf 1248 1272 1271 1247\nf 1252 1276 1275 1251\nf 1256 1280 1279 1255\nf 1260 1284 1282 1258\nf 1264 1288 1287 1263\nf 1268 1292 1291 1267\nf 1272 1296 1295 1271\nf 1276 1300 1299 1275\nf 1280 1304 1303 1279\nf 1284 1308 1306 1282\nf 1288 1312 1311 1287\nf 1292 1316 1315 1291\nf 1296 1320 1319 1295\nf 1300 1324 1323 1299\nf 1304 1328 1327 1303\nf 1308 1332 1330 1306\nf 1312 1336 1335 1311\nf 1316 1340 1339 1315\nf 1320 1344 1343 1319\nf 1324 1348 1347 1323\nf 1328 1352 1351 1327\nf 1332 1356 1354 1330\nf 1336 1360 1359 1335\nf 1340 1364 1363 1339\nf 1344 1368 1367 1343\nf 1348 1372 1371 1347\nf 1352 1376 1375 1351\nf 1356 1380 1378 1354\nf 1360 1384 1383 1359\nf 1364 1388 1387 1363\nf 1368 1392 1391 1367\nf 1372 1396 1395 1371\nf 1376 1400 1399 1375\nf 1380 1404 1402 1378\nf 1384 1408 1407 1383\nf 1388 1412 1411 1387\nf 1392 1416 1415 1391\nf 1396 1420 1419 1395\nf 1400 1424 1423 1399\nf 1404 1426 1402\nf 1408 1426 1407\nf 1412 1426 1411\nf 1416 1426 1415\nf 1420 1426 1419\nf 1424 1426 1423\nf 1427 1430 1428\nf 1427 1434 1433\nf 1427 1438 1437\nf 1427 1442 1441\nf 1427 1446 1445\nf 1427 1450 1449\nf 1430 1454 1452 1428\nf 1434 1458 1457 1433\nf 1438 1462 1461 1437\nf 1442 1466 1465 1441\nf 1446 1470 1469 1445\nf 1450 1474 1473 1449\nf 1454 1478 1476 1452\nf 1458 1482 1481 1457\nf 1462 1486 1485 1461\nf 1466 1490 1489 1465\nf 1470 1494 1493 1469\nf 1474 1498 1497 1473\nf 1478 1502 1500 1476\nf 1482 1506 1505 1481\nf 1486 1510 1509 1485\nf 1490 1514 1513 1489\nf 1494 1518 1517 1493\nf 1498 1522 1521 1497\nf 1502 1526 1524 1500\nf 1506 1530 1529 1505\nf 1510 1534 1533 1509\nf 1514 1538 1537 1513\nf 1518 1542 1541 1517\nf 1522 1546 1545 1521\nf 1526 1550 1548 1524\nf 1530 1554 1553 1529\nf 1534 1558 1557 1533\nf 1538 1562 1561 1537\nf 1542 1566 1565 1541\nf 1546 1570 1569 1545\nf 1550 1574 1572 1548\nf 1554 1578 1577 1553\nf 1558 1582 1581 1557\nf 1562 1586 1585 1561\nf 1566 1590 1589 1565\nf 1570 1594 1593 1569\nf 1574 1598 1596 1572\nf 1578 1602 1601 1577\nf 1582 1606 1605 1581\nf 1586 1610 1609 1585\nf 1590 1614 1613 1589\nf 1594 1618 1617 1593\nf 1598 1622 1620 1596\nf 1602 1626 1625 1601\nf 1606 1630 1629 1605\nf 1610 1634 1633 1609\nf 1614 1638 1637 1613\nf 1618 1642 1641 1617\nf 1622 1646 1644 1620\nf 1626 1650 1649 1625\nf 1630 1654 1653 1629\nf 1634 1658 1657 1633\nf 1638 1662 1661 1637\nf 1642 1666 1665 1641\nf 1646 1670 1668 1644\nf 1650 1674 1673 1649\nf 1654 1678 1677 1653\nf 1658 1682 1681 1657\nf 1662 1686 1685 1661\nf 1666 1690 1689 1665\nf 1670 1692 1668\nf 1674 1692 1673\nf 1678 1692 1677\nf 1682 1692 1681\nf 1686 1692 1685\nf 1690 1692 1689\ng arms\nusemtl bronze\nf 2106 2107 1728 1726 1725 2029\nf 2936 2922 2921 2753\nf 2892 2907 2908 2893\nf 2829 2815 2945 2943\nf 2945 2947 2948 2946\nf 2858 2890 2889 2872\nf 2753 2921 2938 2750\nf 2932 2776 2778 2933\nf 2928 2768 2770 2929\nf 2924 2757 2758 2925\nf 2918 2933 2934 2919\nf 2914 2929 2930 2915\nf 2910 2925 2926 2911\nf 2904 2919 2920 2905\nf 2900 2915 2916 2901\nf 2896 2911 2912 2897\nf 2891 2906 2907 2892\nf 2882 2901 2902 2883\nf 2878 2897 2898 2879\nf 2873 2893 2894 2874\nf 2869 2884 2885 2870\nf 2865 2880 2881 2866\nf 2861 2875 2876 2877 2862\nf 2856 2870 2871 2857\nf 2851 2866 2867 2852\nf 2847 2862 2863 2848\nf 2843 2858 2859 2844\nf 2838 2853 2852 2854 2839\nf 2834 2848 2849 2835\nf 2830 2844 2845 2831\nf 2825 2839 2840 2826\nf 2821 2835 2836 2822\nf 2817 2831 2832 2818\nf 2812 2826 2827 2813\nf 2808 2822 2823 2809\nf 2804 2818 2819 2805\nf 2797 2813 2814 2798\nf 2793 2809 2810 2794\nf 2789 2805 2806 2790\nf 2800 2801 2802 2786\nf 2775 2795 2796 2777\nf 2767 2791 2792 2769\nf 2756 2787 2788 2759\nf 2778 2777 2779 2780\nf 2770 2769 2771 2772\nf 2761 2758 2760 2759 2762 2763\nf 2721 2649 2726 2749 2326 2325\nf 2729 2730 2334 2332\nf 2652 2733 2344 2343\nf 2736 2660 2360 2358\nf 2739 2740 2370 2368\nf 2742 2743 2380 2378\nf 2745 2683 2390 2388\nf 2688 2691 2406 2405\nf 2747 2748 2418 2416\nf 2669 2672 2641 2631\nf 2725 2661 2574 2666\nf 2662 2723 2711 2663\nf 2696 2748 2647 2613\nf 2693 2690 2606 2610\nf 2685 2682 2597 2561\nf 2677 2593 2594 2676\nf 2628 2697 2612 2622\nf 2678 2569 2566 2576\nf 2742 2741 2573 2575\nf 2739 2738 2662 2661\nf 2736 2735 2715 2713\nf 2656 2733 2718 2614\nf 2731 2730 2702 2700\nf 2727 2726 2704 2722\nf 2586 2724 2725 2666 2584\nf 2606 2605 2610\nf 2723 2643 2587 2711\nf 2681 2648 2562 2596\nf 2658 2657 2353 2350\nf 2683 2682 2393 2390\nf 2691 2690 2409 2406\nf 2642 2634 2633 2639\nf 2627 2719 2697 2628\nf 2624 2680 2679 2625\nf 2651 2714 2716 2718\nf 2714 2712 2713 2715\nf 2705 2667 2701 2708 2706\nf 2583 2699 2700 2577 2568\nf 2613 2647 2648 2611\nf 2606 2690 2691 2607\nf 2600 2686 2687 2601\nf 2597 2682 2683 2598\nf 2677 2678 2590 2593\nf 2668 2671 2581 2595\nf 2632 2621 2620 2630\nf 2566 2569 2572 2567\nf 2643 2659 2660 2644\nf 2636 2649 2650 2637\nf 2633 2634 2635 2636 2637 2638\nf 2618 2619 2579 2620 2621 2622\nf 2605 2606 2607 2608\nf 2581 2594 2595\nf 2582 2583 2568\nf 2569 2570 2571 2572\nf 2515 2560 2516\nf 2549 2548 2437\nf 2510 2512 2494 2497\nf 2551 2482 2481\nf 2450 2449 2530 2529\nf 2545 2502 2431\nf 2559 2474 2553 2558\nf 2352 2529 2530 2347\nf 2521 2520 2446 2543\nf 2500 2503 2506 2505\nf 2496 2429 2426 2509\nf 2495 2493 2437 2548\nf 2556 2439 2488 2487 2557\nf 2443 2484 2550 2440\nf 2481 2480 2440 2551\nf 2474 2559 2475\nf 2517 2516 2560 2453\nf 2463 2508 2425 2468\nf 2458 2457 2526 2525\nf 2451 2450 2529 2528\nf 2436 2439 2556 2555\nf 2435 2434 2422 2539\nf 2431 2430 2546 2545\nf 2412 2407 2410 2413\nf 2396 2391 2394 2397\nf 2362 2359 2360 2363\nf 2324 2323 2421 2424 2325\nf 2537 2464 2463 2468\nf 2519 2461 2447\nf 2544 2545 2546 2547\nf 2323 2322 2537 2538\nf 2331 2333 2535 2536\nf 2342 2341 2448 2531\nf 2351 2355 2527 2528\nf 2361 2365 2460 2459\nf 2374 2373 2520 2521\nf 2381 2383 2516 2517\nf 2425 2508 2509 2426\nf 2496 2497 2498 2499\nf 2385 2389 2487 2488\nf 2404 2403 2480 2481\nf 2415 2417 2474 2475\nf 2463 2464 2465 2466\nf 2448 2449 2450 2451\nf 2433 2434 2435\nf 2419 2417 2418 2420\nf 2407 2408 2409 2410\nf 2391 2392 2393 2394\nf 2381 2379 2380 2382\nf 2371 2369 2370 2372\nf 2361 2362 2363 2364\nf 2351 2352 2353 2354\nf 2339 2337 2338 2340\nf 2331 2329 2330 2332\nf 2153 2170 2186 2200 2214 2229 2243 2258 2277 2292 2307 2154\nf 2172 2171 2124 2157\nf 2173 2172 2157 2319\nf 2230 2215 2313 2262\nf 2313 2315 2316 2314\nf 2278 2263 2312 2311\nf 2306 2152 2154 2307\nf 2302 2144 2146 2309 2303\nf 2298 2133 2136 2299\nf 2294 2308 2126 2295\nf 2288 2303 2304 2289\nf 2284 2299 2300 2285\nf 2280 2295 2296 2281\nf 2274 2289 2290 2275\nf 2270 2285 2286 2271\nf 2266 2281 2282 2267\nf 2256 2275 2276 2257\nf 2252 2271 2272 2253\nf 2247 2267 2268 2248\nf 2259 2260 2261 2262\nf 2239 2254 2255 2240\nf 2235 2250 2251 2236\nf 2231 2245 2246 2232\nf 2226 2240 2241 2227\nf 2221 2236 2237 2222\nf 2217 2232 2233 2218\nf 2212 2227 2228 2213\nf 2208 2222 2223 2209\nf 2204 2218 2219 2205\nf 2199 2213 2214 2200\nf 2195 2209 2210 2196\nf 2191 2205 2206 2192\nf 2187 2201 2202 2188\nf 2182 2196 2197 2183\nf 2178 2192 2193 2179\nf 2174 2188 2189 2175\nf 2167 2183 2184 2168\nf 2163 2179 2180 2164\nf 2159 2175 2176 2160\nf 2151 2169 2170 2153\nf 2143 2165 2166 2145\nf 2134 2161 2162 2137\nf 2123 2155 2156 2157 2124\nf 2146 2145 2147 2148\nf 2136 2138 2137 2139 2140\nf 2126 2127 2128 2129\nf 2099 2100 1702 1700\nf 2103 2104 1710 1708\nf 2027 2030 1722 1721\nf 2109 2110 1738 1736\nf 2036 2113 1748 1747\nf 2116 1944 1756 1754\nf 2056 2059 1770 1769\nf 2064 2118 1786 1785\nf 2092 2022 1796 1795\nf 1952 1991 2052 1996\nf 1954 1960 2018 1955\nf 2006 2079 2075 2007\nf 2119 2118 2066 2067\nf 2061 2058 1972 1976\nf 2117 1943 1997 2051\nf 2044 2041 2040 2045\nf 2046 1963 2039 2077\nf 2116 2115 1961 2070\nf 2037 2112 2097 2096 1958\nf 2109 2031 2015 2095\nf 2106 2029 1988 2089\nf 2025 2104 2071 2026\nf 2101 2100 2082 2081\nf 2022 2092 2009\nf 2043 1992 1951 1953\nf 2070 1961 1960 1954\nf 2074 2081 2080 2073\nf 2025 2024 1715 1712\nf 2037 2036 1747 1744\nf 2059 2058 1773 1770\nf 2068 2069 2091 2092 1795 1792\nf 2003 2013 2012 2004\nf 1991 1952 1951\nf 1936 1935 2067 2066\nf 2086 2023 2026 2018 2017\nf 1959 1961 1947 2035 2083\nf 2007 2075 2076 2008\nf 1940 1948 1938\nf 2066 1981 1977 1936\nf 1975 2060 2061 1976\nf 1937 2056 2057 1933\nf 1997 1943 1942 1995\nf 1966 1965 1964 1967\nf 2040 2041 2042 2043\nf 1994 1984 1983 1990\nf 1957 2036 2037 1958\nf 1989 2027 2028 1986\nf 2015 2016 2017 2018 1960 1959\nf 1998 1999 2000 2001\nf 1983 1984 1985\nf 1971 1972 1973\nf 1959 1960 1961\nf 1948 1940 1949 1950\nf 1933 1934 1935 1936 1937\nf 1892 1891 1819\nf 1915 1894 1893\nf 1929 1859 1858\nf 1813 1850 1849\nf 1864 1861 1810\nf 1873 1914 1799 1804\nf 1714 1903 1904 1711\nf 1832 1816 1819 1833\nf 1882 1842 1841 1884\nf 1873 1872 1912 1914\nf 1869 1868 1881 1882\nf 1863 1862 1883 1886\nf 1858 1857 1930 1929\nf 1855 1854 1923 1922\nf 1784 1849 1850 1779\nf 1845 1791 1876 1879\nf 1844 1843 1907 1906\nf 1838 1837 1908\nf 1827 1826 1905 1904\nf 1892 1819 1818\nf 1810 1809 1865 1864\nf 1805 1807 1913 1912\nf 1799 1798 1801 1804\nf 1776 1771 1774 1777\nf 1758 1755 1756 1759\nf 1720 1717 1718 1721\nf 1925 1926 1927 1928\nf 1900 1899 1828 1823\nf 1922 1923 1812\nf 1912 1913 1914\nf 1699 1701 1837 1836\nf 1707 1709 1905 1906\nf 1719 1902 1720\nf 1729 1731 1897 1898\nf 1739 1741 1817 1816\nf 1749 1751 1890 1891\nf 1883 1884 1841 1885\nf 1872 1873 1874 1875\nf 1862 1863 1864 1865\nf 1768 1767 1856 1815\nf 1784 1783 1848 1849\nf 1841 1842 1843 1844\nf 1828 1829 1830\nf 1812 1813 1814 1815\nf 1797 1798 1799 1800\nf 1787 1783 1786 1788\nf 1771 1772 1773 1774\nf 1757 1758 1759 1760\nf 1749 1745 1748 1750\nf 1739 1737 1738 1740\nf 1729 1727 1728 1730\nf 1717 1713 1716 1718\nf 1707 1705 1706 1708\nf 1699 1694 1693 1698 1700\nf 1160 1158 1145 1146\nf 1156 1157 1095 1081\nf 1151 1152 1137 1138\nf 1137 1139 994 1008\nf 1149 1141 1142 1155\nf 1146 1145 1108 1123\nf 1118 1133 1134 1119\nf 1114 1129 1130 1115\nf 1110 1125 1126 1111\nf 1105 1119 1120 1106\nf 1101 1115 1116 1102\nf 1097 1111 1112 1098\nf 1092 1106 1107 1093\nf 1088 1102 1103 1089\nf 1084 1098 1099 1085\nf 1143 1144 1157 1156\nf 1075 1089 1090 1076\nf 1071 1085 1086 1072\nf 1067 1081 1082 1068\nf 1062 1077 1078 1063\nf 1058 1073 1074 1059\nf 1054 1069 1070 1065 1055\nf 1049 1063 1064 1050\nf 1045 1059 1060 1046\nf 1041 1055 1056 1042\nf 1150 1149 1052 1038\nf 1031 1036 1046 1047 1032\nf 1027 1042 1043 1028\nf 1023 1038 1039 1024\nf 1018 1032 1033 1019\nf 1014 1028 1029 1015\nf 1010 1024 1025 1011\nf 1005 1019 1020 1006\nf 1001 1015 1016 1002\nf 997 1011 1012 998\nf 992 1006 1007 993\nf 988 1002 1003 989\nf 984 998 999 985\nf 1153 1154 995 981\nf 975 990 991 976\nf 971 986 987 972\nf 967 982 983 968\nf 1134 976 977 1135\nf 1130 972 973 1131\nf 1127 1126 963 968 969 964\nf 960 806 805 961 772 771\nf 813 815 767 768\nf 823 826 761 763\nf 832 836 756 758\nf 842 846 751 753\nf 856 855 747 746\nf 863 865 742 743\nf 906 905 736 735\nf 921 923 727 728\nf 803 802 723 722\nf 945 946 947 948\nf 785 784 939 940\nf 958 957 933 934\nf 925 923 924 926\nf 909 910 911 912\nf 895 896 897 898\nf 953 952 885 886\nf 876 873 874 875\nf 863 861 862 864\nf 852 850 851 853 854\nf 842 843 844 845\nf 832 833 834 835\nf 819 820 821 822\nf 813 811 812 814\nf 802 803 804\nf 795 794 791 792\nf 864 862 784 785\nf 816 814 935 779\nf 819 823 763 765\nf 852 856 746 748\nf 905 910 733 736\nf 927 878 951 803 722 725\nf 955 954 881 884\nf 946 945 791\nf 944 798 926 924\nf 783 824 822 939 937\nf 781 862 860 936 782\nf 934 933 808 807\nf 931 870 869\nf 924 922 787 944\nf 915 914 909 912\nf 907 906 901 904\nf 897 896 891 894\nf 890 889 887 888\nf 885 952 796 795\nf 880 879 775 778\nf 857 856 852 854\nf 831 830 825 828\nf 844 841 937 939 784 781\nf 799 949 877 882\nf 775 879 930\nf 788 911 908\nf 781 784 862\nf 870 931 932 872\nf 904 773 798 944 907\nf 636 634 708\nf 697 640 637\nf 720 594 591\nf 707 574 572\nf 600 597 546\nf 613 694 535 540\nf 671 670 672 675\nf 647 645 708 558\nf 621 620 622 623\nf 613 612 695 694\nf 607 608 618 621\nf 603 602 627 626\nf 591 590 721 720\nf 583 582 704 706\nf 573 572 574 577\nf 564 567 616 615\nf 562 715 678 676\nf 559 682 680\nf 555 554 673 672\nf 636 708 551\nf 546 549 601 600\nf 545 544 693 695\nf 535 538 541 540\nf 580 585 734 731\nf 598 629 742 740\nf 664 669 762 759\nf 718 719 716 717\nf 659 657 711 553\nf 706 704 705\nf 695 693 694\nf 685 683 682 684\nf 677 674 673 676\nf 665 663 664\nf 656 654 653 655\nf 646 644 643 645\nf 635 633 632 634\nf 627 623 622 624\nf 612 613 610 611\nf 602 603 600 601\nf 588 589 586 587\nf 573 571 570 572\nf 622 620 715 562\nf 711 556 557\nf 705 707 550 587\nf 537 538 535 536\nf 569 571 727 726\nf 585 584 733 734\nf 599 598 740 741\nf 635 639 747 745\nf 646 648 751 750\nf 656 658 756 755\nf 669 668 761 762\nf 677 679 767 766\nf 685 689 533 772 770\nf 683 685 770 769\nf 674 677 766 764\nf 665 664 759 760\nf 654 656 755 754\nf 644 646 750 749\nf 633 635 745 744\nf 595 599 741 739\nf 581 580 731 732\nf 566 569 726 724\nf 541 542 539 540\nf 645 643 551 708\nf 649 647 558 712\nf 566 567 564 565\nf 576 577 574 575\nf 592 593 590 591\nf 605 602 601 604\nf 616 617 614 615\nf 626 627 624 625\nf 639 635 634 636\nf 648 646 645 647\nf 658 656 655 657\nf 668 669 666 667\nf 679 677 676 678\nf 689 685 684 686\nf 643 641 640 697 551\nf 575 574 707\nf 650 649 712 713\nf 718 717 720 721\nf 661 665 760 757\nf 592 595 739 737\nf 576 581 732 729\nf 536 535 694 693\nf 543 545 617 616\nf 547 546 597 596\nf 711 670 667 553\nf 556 711 657 655\nf 715 620 619 714 559\nf 676 673 554 563 562\nf 565 564 719 718\nf 576 575 578 581\nf 584 583 586 589\nf 592 591 594 595\nf 627 602 605 623\nf 699 609 606 702\nf 611 610 701 700\nf 626 625 628 629\nf 651 650 653 654\nf 688 687 690 692\nf 687 560 536 693 544 690\nf 700 703 548 716 614 611\nf 575 707 705 578\nf 702 606 604\nf 709 563 554\nf 603 626 629 598\nf 869 866 931\nf 791 945 792\nf 871 873 887 889\nf 790 915 912\nf 828 942 834 831\nf 793 955 884\nf 929 798 773 776\nf 834 833 829 831\nf 858 857 797 943\nf 883 882 877 880\nf 953 886 876 956\nf 893 890 792 945\nf 898 947 777 774 900\nf 908 907 789 788\nf 916 915 790 789\nf 929 926 798\nf 866 864 785 931\nf 875 780 933 957\nf 938 937 841 839\nf 942 941 835 834\nf 947 946 778 777\nf 951 950 804 803\nf 952 955 793 796\nf 917 921 728 730\nf 901 906 735 738\nf 840 843 752 754\nf 802 806 960 771 723\nf 810 808 933 780\nf 860 786 936\nf 793 794 795 796\nf 805 806 807 808\nf 815 813 814 816\nf 826 823 824 827\nf 836 832 835 837\nf 846 842 845 847\nf 855 856 857 858\nf 865 863 864 866\nf 875 957 956 876\nf 887 886 885 888\nf 899 895 898 900\nf 913 914 915 916\nf 928 925 926 929\nf 810 780 935 812\nf 828 827 941 942\nf 949 950 951\nf 928 927 725 724\nf 918 917 730 729\nf 902 901 738 737\nf 861 863 743 744\nf 850 852 748 749\nf 843 842 753 752\nf 833 832 758 757\nf 820 819 765 764\nf 811 813 768 769\nf 1123 965 1148 1146\nf 1128 1127 964 969 970 962\nf 1131 973 974 1132\nf 1135 977 978 1136\nf 968 983 984 969\nf 972 987 988 973\nf 976 991 992 977\nf 981 995 996 982\nf 985 999 1000 986\nf 989 1003 1004 990\nf 1154 1152 1009 995\nf 998 1012 1013 999\nf 1002 1016 1017 1003\nf 1006 1020 1021 1007\nf 1011 1025 1026 1012\nf 1015 1029 1030 1016\nf 1019 1033 1034 1020\nf 1024 1039 1040 1025\nf 1028 1043 1044 1029\nf 1032 1047 1048 1033\nf 1038 1052 1053 1039\nf 1042 1056 1057 1043\nf 1046 1060 1061 1047\nf 1149 1155 1067 1052\nf 1055 1065 1070 1071 1056\nf 1059 1074 1075 1060\nf 1063 1078 1079 1064\nf 1068 1082 1083 1069\nf 1072 1086 1087 1073\nf 1076 1090 1091 1077\nf 1081 1095 1096 1082\nf 1085 1099 1100 1086\nf 1089 1103 1104 1090\nf 1144 1145 1158 1157\nf 1098 1112 1113 1099\nf 1102 1116 1117 1103\nf 1106 1120 1121 1107\nf 1111 1126 1127 1112\nf 1115 1130 1131 1116\nf 1119 1134 1135 1120\nf 1145 1144 1094 1108\nf 1141 1147 1037 1051\nf 1139 1140 980 994\nf 1152 1154 1139 1137\nf 1157 1158 1109 1095\nf 1080 1066 1051 1037 1022 1008 994 980 979 965 1123 1108 1094\nf 1701 1699 1700 1702\nf 1709 1707 1708 1710\nf 1719 1720 1721 1722\nf 1731 1729 1730 1732\nf 1741 1739 1740 1742\nf 1751 1749 1750 1752\nf 1761 1757 1760 1762\nf 1775 1776 1777 1778\nf 1789 1787 1788 1790\nf 1801 1802 1803 1804\nf 1816 1817 1818 1819\nf 1831 1832 1833 1834\nf 1789 1791 1845 1846\nf 1780 1779 1850 1851\nf 1764 1763 1857 1858\nf 1866 1862 1865 1867\nf 1876 1877 1878 1879\nf 1886 1883 1885 1887\nf 1745 1749 1891 1892\nf 1737 1739 1816 1832\nf 1727 1729 1898 1899\nf 1713 1717 1821 1820\nf 1705 1707 1906 1907\nf 1694 1699 1836 1909\nf 1817 1895 1894 1915 1818\nf 1851 1850 1813\nf 1896 1831 1834 1924\nf 1925 1928 1929 1930\nf 1724 1719 1722 1725\nf 1764 1761 1762 1765\nf 1780 1775 1778 1781\nf 1800 1799 1914 1913\nf 1806 1805 1877 1876\nf 1811 1810 1861 1860\nf 1828 1903 1820 1823\nf 1829 1828 1899 1898\nf 1843 1842 1880 1835 1838\nf 1906 1905 1826 1932 1844\nf 1846 1845 1926 1925\nf 1780 1851 1852 1775\nf 1772 1855 1856 1767\nf 1764 1858 1859 1761\nf 1883 1862 1866 1884\nf 1919 1871 1870 1920\nf 1875 1874 1917 1916\nf 1886 1887 1888 1755\nf 1734 1896 1897 1731\nf 1695 1910 1911 1793\nf 1910 1839 1800 1913 1807 1911\nf 1916 1921 1808 1927 1878 1875\nf 1851 1813 1812 1852\nf 1920 1870 1867\nf 1825 1932 1826\nf 1863 1886 1755 1758\nf 1938 1939 1940\nf 1951 1952 1953\nf 1962 1963 1964 1965\nf 1974 1975 1976\nf 1986 1987 1988 1989\nf 2002 2003 2004\nf 2019 1935 1934 2020\nf 1988 2029 2030 1989\nf 1945 1957 1956 2038\nf 1993 2001 2000 1994\nf 2044 2045 2046 2047\nf 2048 1966 1953 1952\nf 2051 2052 2053 1968 1970\nf 1973 1937 1980 1971\nf 1979 1975 1974 1980\nf 2019 2067 1935\nf 1939 2070 1954 1940\nf 2077 2078 2075 2079\nf 2084 2017 2016 2085\nf 1987 2088 2089 1988\nf 2052 1991 1990 2053\nf 2091 2010 2009 2092\nf 2041 2003 2002 2042\nf 2065 2064 1785 1782\nf 2057 2056 1769 1766\nf 2032 2031 1735 1732\nf 2022 2021 2093 1697 1796\nf 2094 2076 2075 2078\nf 1947 1946 2035\nf 2002 1992 2043 2042\nf 2098 2021 2008 2076\nf 2102 2101 2081 2074\nf 2105 2024 2023 2090\nf 2107 2106 2089 2087\nf 2110 2109 2095 2034\nf 2113 2036 1957 1945\nf 1944 2116 2070 1939\nf 2077 2079 2047 2046\nf 1964 2045 2040 1967\nf 2055 2117 2051 1970\nf 2063 2060 1975 1979\nf 2120 2119 2067 2019\nf 2094 2078 2080 2082\nf 1986 2090 2088 1987\nf 1999 2010 2091\nf 2120 2068 1792 1790\nf 2062 2065 1782 1781\nf 2054 2057 1766 1765\nf 2115 2116 1754 1752\nf 2112 2037 1744 1742\nf 2031 2109 1736 1735\nf 2105 2028 1718 1716\nf 2102 2103 1708 1706\nf 2121 2098 2099 1700 1698\nf 2130 2129 2128 2131 2132\nf 2140 2139 2141 2142\nf 2148 2147 2149 2150\nf 2127 2158 2159 2128\nf 2137 2162 2163 2139\nf 2145 2166 2167 2147\nf 2127 2171 2172 2158\nf 2160 2176 2177 2161\nf 2164 2180 2181 2165\nf 2168 2184 2185 2169\nf 2175 2189 2190 2176\nf 2179 2193 2194 2180\nf 2183 2197 2198 2184\nf 2188 2202 2203 2189\nf 2192 2206 2207 2193\nf 2196 2210 2211 2197\nf 2201 2215 2216 2202\nf 2205 2219 2220 2206\nf 2209 2223 2224 2225 2210\nf 2213 2228 2229 2214\nf 2218 2233 2234 2219\nf 2222 2237 2238 2223\nf 2227 2241 2242 2228\nf 2232 2246 2247 2233\nf 2236 2251 2252 2237\nf 2240 2255 2256 2241\nf 2261 2263 2264 2244\nf 2248 2268 2269 2250\nf 2253 2272 2273 2254\nf 2257 2276 2277 2258\nf 2267 2282 2283 2268\nf 2271 2286 2287 2272\nf 2275 2290 2291 2276\nf 2281 2296 2297 2282\nf 2285 2300 2301 2286\nf 2289 2304 2305 2290\nf 2295 2126 2129 2296\nf 2299 2136 2140 2300\nf 2303 2309 2146 2148 2304\nf 2308 2171 2127 2126\nf 2263 2261 2260 2312\nf 2315 2317 2318 2316\nf 2215 2201 2315 2313\nf 2244 2264 2265 2245\nf 2171 2308 2125 2124\nf 2321 2322 2323 2324 2325 2326\nf 2333 2331 2332 2334\nf 2341 2342 2343 2344\nf 2355 2351 2354 2356\nf 2365 2361 2364 2366\nf 2373 2374 2375 2376\nf 2383 2381 2382 2384\nf 2395 2396 2397 2398\nf 2411 2412 2413 2414\nf 2421 2422 2423 2424\nf 2436 2437 2438 2439\nf 2452 2453 2454 2455\nf 2425 2428 2467 2468\nf 2411 2415 2475 2476\nf 2400 2399 2482 2483\nf 2386 2385 2488 2489\nf 2430 2429 2496 2499\nf 2510 2509 2508 2470\nf 2379 2381 2517 2518\nf 2445 2369 2371 2522 2523\nf 2362 2361 2459 2524\nf 2352 2351 2528 2529\nf 2337 2339 2532 2533\nf 2329 2331 2536 2465\nf 2421 2539 2422\nf 2544 2547 2548 2549\nf 2518 2517 2453 2452\nf 2536 2535 2471 2466\nf 2342 2339 2340 2343\nf 2374 2371 2372 2375\nf 2400 2395 2398 2401\nf 2422 2434 2504 2419 2420 2423\nf 2432 2431 2502 2501\nf 2436 2549 2437\nf 2559 2442 2476 2475\nf 2532 2531 2456 2458 2455\nf 2519 2518 2552 2462 2461\nf 2468 2467 2538 2537\nf 2560 2515 2513\nf 2477 2476 2442 2441\nf 2404 2481 2482 2399\nf 2396 2443 2485 2391\nf 2386 2489 2492 2491\nf 2494 2495 2498 2497\nf 2430 2499 2547 2546\nf 2507 2506 2555 2554\nf 2374 2521 2522 2371\nf 2348 2530 2449 2345\nf 2455 2458 2525 2524 2552 2452\nf 2433 2540 2500 2505\nf 2554 2473 2507\nf 2550 2484 2483\nf 2552 2518 2452\nf 2560 2513 2469 2472\nf 2559 2558 2485 2443 2442\nf 2573 2574 2575\nf 2584 2585 2586\nf 2596 2597 2598\nf 2605 2609 2610\nf 2623 2624 2625\nf 2639 2640 2641 2642\nf 2651 2652 2653 2654\nf 2661 2662 2663 2574\nf 2667 2591 2590 2578\nf 2629 2640 2639 2626\nf 2673 2592 2591 2674\nf 2677 2570 2569 2678\nf 2561 2597 2596 2562\nf 2604 2600 2599 2602\nf 2609 2692 2693 2610\nf 2696 2613 2612 2697\nf 2701 2577 2700 2702\nf 2708 2709 2710\nf 2583 2646 2654 2699\nf 2573 2666 2574\nf 2580 2624 2623 2676\nf 2638 2627 2626 2633\nf 2675 2642 2641 2672\nf 2689 2688 2405 2402\nf 2572 2571 2387 2384\nf 2656 2655 2349 2346\nf 2611 2648 2681 2618\nf 2715 2717 2716 2714\nf 2599 2608 2602\nf 2626 2639 2633\nf 2728 2727 2722 2710\nf 2732 2731 2700 2699\nf 2658 2655 2617\nf 2660 2736 2713 2644\nf 2740 2739 2661 2725\nf 2743 2742 2575 2589\nf 2590 2678 2576 2578\nf 2640 2629 2621 2632\nf 2570 2677 2676 2623\nf 2687 2684 2565 2601\nf 2746 2692 2609 2694\nf 2667 2578 2577 2701\nf 2714 2645 2712\nf 2605 2608 2565 2564\nf 2675 2707 2634 2642\nf 2746 2747 2416 2414\nf 2686 2689 2402 2401\nf 2571 2745 2388 2387\nf 2741 2742 2378 2376\nf 2738 2739 2368 2366\nf 2735 2736 2358 2356\nf 2732 2653 2340 2338\nf 2728 2729 2332 2330\nf 2750 2751 2752 2753\nf 2764 2761 2763 2762 2765 2766\nf 2772 2771 2773 2774\nf 2780 2779 2781 2782\nf 2759 2788 2789 2762\nf 2769 2792 2793 2771\nf 2777 2796 2797 2779\nf 2786 2802 2803 2787\nf 2790 2806 2807 2791\nf 2794 2810 2811 2795\nf 2801 2815 2816 2802\nf 2805 2819 2820 2806\nf 2809 2823 2824 2810\nf 2813 2827 2828 2814\nf 2818 2832 2833 2819\nf 2822 2836 2837 2823\nf 2826 2840 2841 2827\nf 2831 2845 2846 2832\nf 2835 2849 2850 2836\nf 2839 2854 2855 2840\nf 2844 2859 2860 2845\nf 2848 2863 2864 2849\nf 2852 2867 2868 2854\nf 2858 2872 2873 2859\nf 2862 2877 2876 2878 2863\nf 2866 2881 2882 2867\nf 2870 2885 2886 2871\nf 2874 2894 2895 2875\nf 2879 2898 2899 2880\nf 2883 2902 2903 2884\nf 2893 2908 2909 2894\nf 2897 2912 2913 2898\nf 2901 2916 2917 2902\nf 2906 2921 2922 2907\nf 2911 2926 2927 2912\nf 2915 2930 2931 2916\nf 2919 2934 2935 2920\nf 2925 2758 2761 2926\nf 2929 2770 2772 2930\nf 2933 2778 2780 2934\nf 2921 2906 2939 2938\nf 2890 2941 2942 2887\nf 2947 2785 2784 2948\nf 2815 2801 2947 2945\nf 2907 2922 2923 2908\nf 2940 2888 2887 2942 2944 2946 2948 2784 2783 2751 2750 2938 2939\nf 2799 2936 2753 2752\nf 2872 2892 2893 2873\nf 2843 2829 2943 2941\nf 2943 2945 2946 2944\nf 2891 2889 2888 2940\nf 2936 2799 2755 2754\nf 2931 2937 2774 2776 2932\nf 2927 2764 2768 2928\nf 2923 2754 2757 2924\nf 2917 2932 2933 2918\nf 2913 2928 2929 2914\nf 2909 2924 2925 2910\nf 2903 2918 2919 2904\nf 2899 2914 2915 2900\nf 2895 2910 2911 2896\nf 2885 2904 2905 2886\nf 2881 2900 2901 2882\nf 2876 2896 2897 2878\nf 2889 2891 2892 2872\nf 2868 2883 2884 2869\nf 2864 2879 2880 2865\nf 2860 2874 2875 2861\nf 2855 2869 2870 2856\nf 2850 2865 2866 2851\nf 2846 2861 2862 2847\nf 2841 2856 2857 2842\nf 2837 2851 2852 2853 2838\nf 2833 2847 2848 2834\nf 2829 2843 2844 2830\nf 2824 2838 2839 2825\nf 2820 2834 2835 2821\nf 2816 2830 2831 2817\nf 2811 2825 2826 2812\nf 2807 2821 2822 2808\nf 2803 2817 2818 2804\nf 2796 2812 2813 2797\nf 2792 2808 2809 2793\nf 2788 2804 2805 2789\nf 2755 2799 2800 2786\nf 2773 2794 2795 2775\nf 2765 2790 2791 2767\nf 2755 2786 2787 2756\nf 2776 2775 2777 2778\nf 2768 2767 2769 2770\nf 2758 2757 2756 2759 2760\nf 2749 2726 2727 2328 2326\nf 2730 2731 2336 2334\nf 2733 2656 2346 2344\nf 2659 2737 2364 2363\nf 2740 2665 2372 2370\nf 2743 2744 2382 2380\nf 2682 2685 2394 2393\nf 2690 2693 2410 2409\nf 2748 2696 2420 2418\nf 2627 2638 2719\nf 2614 2718 2716 2615\nf 2722 2706 2708 2710\nf 2748 2747 2695 2647\nf 2691 2688 2603 2607\nf 2683 2745 2679 2598\nf 2592 2673 2668 2595\nf 2705 2707 2675 2674\nf 2572 2744 2698 2567\nf 2741 2664 2585 2573\nf 2738 2737 2723 2662\nf 2735 2734 2717 2715\nf 2733 2652 2651 2718\nf 2730 2729 2709 2702\nf 2726 2649 2636 2704\nf 2630 2620 2671 2670\nf 2575 2574 2663\nf 2722 2704 2703 2706\nf 2650 2649 2721 2325 2424\nf 2660 2659 2363 2360\nf 2685 2684 2397 2394\nf 2693 2692 2413 2410\nf 2669 2631 2630 2670\nf 2719 2638 2637 2720\nf 2680 2619 2618 2681\nf 2615 2716 2717 2616\nf 2712 2645 2644 2713\nf 2705 2706 2703 2707\nf 2567 2698 2582 2568\nf 2647 2695 2563\nf 2607 2603 2602 2608\nf 2601 2565 2608 2599\nf 2679 2680 2681 2596 2598\nf 2676 2594 2581 2580\nf 2672 2673 2674 2675\nf 2621 2629 2628 2622\nf 2573 2585 2584 2666\nf 2616 2657 2658 2617\nf 2647 2563 2562 2648\nf 2630 2631 2632\nf 2614 2615 2616 2617\nf 2602 2603 2604\nf 2590 2591 2592 2593\nf 2579 2580 2581\nf 2566 2567 2568\nf 2491 2514 2383 2386\nf 2453 2560 2454\nf 2548 2498 2495\nf 2479 2441 2440 2480\nf 2544 2549 2436 2555 2506 2503\nf 2538 2467 2428 2541 2435 2539\nf 2323 2538 2539 2421\nf 2362 2524 2525 2359\nf 2514 2515 2516 2383\nf 2503 2502 2545 2544\nf 2547 2499 2498 2548\nf 2511 2490 2494 2512\nf 2392 2486 2487 2389\nf 2400 2483 2484 2395\nf 2408 2479 2480 2403\nf 2474 2473 2554 2553\nf 2534 2533 2454 2560 2472\nf 2471 2470 2508 2463 2466\nf 2457 2456 2527 2526\nf 2456 2531 2448 2451\nf 2439 2438 2489 2488\nf 2434 2433 2505 2504\nf 2428 2427 2542 2541\nf 2408 2403 2406 2409\nf 2392 2389 2390 2393\nf 2352 2347 2350 2353\nf 2553 2556 2557 2558\nf 2524 2459 2462 2552\nf 2479 2478 2441\nf 2445 2523 2522 2543 2446\nf 2322 2327 2464 2537\nf 2333 2335 2534 2535\nf 2341 2345 2449 2448\nf 2355 2357 2526 2527\nf 2365 2367 2444 2460\nf 2373 2377 2519 2520\nf 2514 2511 2513 2515\nf 2504 2505 2506 2507\nf 2494 2490 2493 2495\nf 2392 2391 2485 2486\nf 2408 2407 2478 2479\nf 2417 2419 2473 2474\nf 2459 2460 2461 2462\nf 2444 2445 2446 2447\nf 2429 2430 2431 2432\nf 2417 2415 2416 2418\nf 2403 2404 2405 2406\nf 2389 2385 2388 2390\nf 2379 2377 2378 2380\nf 2369 2367 2368 2370\nf 2359 2357 2358 2360\nf 2347 2348 2349 2350\nf 2337 2335 2336 2338\nf 2329 2327 2328 2330\nf 2312 2260 2259 2314 2316 2318 2320 2156 2155 2123 2122 2310 2311\nf 2279 2294 2295 2280\nf 2187 2173 2319 2317\nf 2319 2157 2156 2320\nf 2262 2313 2314 2259\nf 2293 2278 2311 2310\nf 2305 2150 2152 2306\nf 2301 2142 2144 2302\nf 2297 2130 2133 2298\nf 2291 2306 2307 2292\nf 2287 2302 2303 2288\nf 2283 2298 2299 2284\nf 2278 2293 2294 2279\nf 2273 2288 2289 2274\nf 2269 2284 2285 2270\nf 2265 2280 2281 2266\nf 2255 2274 2275 2256\nf 2251 2270 2271 2252\nf 2246 2266 2267 2247\nf 2242 2257 2258 2243\nf 2238 2253 2254 2239\nf 2234 2249 2248 2250 2235\nf 2230 2244 2245 2231\nf 2224 2239 2240 2226\nf 2220 2235 2236 2221\nf 2216 2231 2232 2217\nf 2211 2226 2227 2212\nf 2207 2221 2222 2208\nf 2203 2217 2218 2204\nf 2198 2212 2213 2199\nf 2194 2208 2209 2195\nf 2190 2204 2205 2191\nf 2185 2199 2200 2186\nf 2181 2195 2196 2182\nf 2177 2191 2192 2178\nf 2173 2187 2188 2174\nf 2166 2182 2183 2167\nf 2162 2178 2179 2163\nf 2158 2174 2175 2159\nf 2149 2168 2169 2151\nf 2141 2164 2165 2143\nf 2131 2160 2161 2134\nf 2152 2151 2153 2154\nf 2144 2143 2145 2146\nf 2136 2133 2135 2134 2137 2138\nf 2122 2123 2124 2125\nf 2100 2101 1704 1702\nf 2104 2025 1712 1710\nf 2107 2108 1730 1728\nf 2110 2111 1740 1738\nf 2113 2114 1750 1748\nf 1943 2117 1760 1759\nf 2058 2061 1774 1773\nf 2118 2119 1788 1786\nf 2047 2079 2006 2014\nf 1977 1980 1937 1936\nf 2086 2017 2084\nf 2039 1950 1949 2073\nf 2118 2064 1981 2066\nf 2059 2056 1937 1973\nf 1942 2049 2048 1995\nf 2012 2001 1993 2004\nf 1962 2050 1948 1950\nf 2115 2114 1947 1961\nf 2112 2111 2033 2097\nf 2032 2108 2085 2016\nf 2030 2027 1989\nf 2104 2103 2072 2071\nf 2100 2099 2094 2082\nf 1998 2011 2005\nf 1971 1980 1974\nf 2087 2089 2088 2086\nf 1983 2020 2053 1990\nf 2028 2027 1721 1718\nf 1944 1943 1759 1756\nf 2061 2060 1777 1774\nf 2047 2014 2013 2044\nf 2010 1999 1998 2005\nf 1952 1996 1995 2048\nf 1945 2038 1946\nf 1955 2018 2026 2071\nf 2080 2081 2082\nf 2073 1949 2072 2074\nf 2068 1985 1984 2069\nf 1981 2064 2065 1982\nf 1976 1972 1971 1974\nf 1933 1969 1968 1934\nf 2049 1942 1941 2050\nf 2045 1964 1963 2046\nf 2001 2012 2011 1998\nf 2039 1963 1962 1950\nf 2033 2034 2035 1946\nf 2023 2024 2025 2026\nf 2011 2012 2013 2014\nf 1995 1996 1997\nf 1977 1981 1982\nf 1968 1969 1970\nf 1956 1957 1958\nf 1945 1946 1947\nf 1931 1930 1857 1815 1814\nf 1932 1885 1841 1844\nf 1924 1890 1824\nf 1922 1856 1855\nf 1926 1845 1879\nf 1805 1912 1872 1877\nf 1827 1830 1897 1896 1924 1824\nf 1720 1902 1821 1717\nf 1746 1893 1894 1743\nf 1879 1878 1927 1926\nf 1802 1871 1919 1918\nf 1866 1867 1870 1869\nf 1758 1861 1864 1863\nf 1768 1815 1857 1763\nf 1776 1853 1854 1771\nf 1849 1848 1814 1813\nf 1932 1887 1885\nf 1840 1839 1910 1909\nf 1891 1890 1924 1834 1833\nf 1904 1903 1828 1830 1827\nf 1931 1814 1848 1847\nf 1808 1921 1809\nf 1804 1803 1874 1873\nf 1794 1806 1876 1791 1792 1795\nf 1772 1767 1770 1773\nf 1746 1743 1744 1747\nf 1714 1711 1712 1715\nf 1908 1907 1843 1838\nf 1890 1889 1825 1824\nf 1916 1919 1920 1921\nf 1793 1911 1794\nf 1701 1703 1908 1837\nf 1709 1711 1904 1905\nf 1724 1723 1900 1901\nf 1734 1733 1831 1896\nf 1817 1741 1743 1894 1895\nf 1751 1753 1889 1890\nf 1882 1881 1880 1842\nf 1802 1801 1868 1871\nf 1758 1757 1860 1861\nf 1772 1771 1854 1855\nf 1783 1787 1847 1848\nf 1797 1800 1839 1840\nf 1824 1825 1826 1827\nf 1808 1809 1810 1811\nf 1793 1794 1795 1796\nf 1783 1784 1785 1786\nf 1767 1768 1769 1770\nf 1755 1753 1754 1756\nf 1745 1746 1747 1748\nf 1737 1733 1736 1738\nf 1727 1723 1726 1728\nf 1713 1714 1715 1716\nf 1705 1703 1704 1706\nf 1693 1694 1695 1696 1697 1698\nf 1159 1160 1146 1148\nf 1155 1156 1081 1067\nf 1150 1151 1138 1147\nf 1138 1137 1008 1022\nf 1143 1142 1066 1080\nf 1160 1159 966 1124\nf 1117 1122 1132 1133 1118\nf 1113 1128 1129 1114\nf 1109 1124 1125 1110\nf 1104 1118 1119 1105\nf 1100 1114 1115 1101\nf 1096 1110 1111 1097\nf 1091 1105 1106 1092\nf 1087 1101 1102 1088\nf 1083 1097 1098 1084\nf 1078 1092 1093 1079\nf 1074 1088 1089 1075\nf 1070 1084 1085 1071\nf 1142 1143 1156 1155\nf 1061 1076 1077 1062\nf 1057 1072 1073 1058\nf 1053 1068 1069 1054\nf 1048 1062 1063 1049\nf 1044 1058 1059 1045\nf 1040 1054 1055 1041\nf 1034 1049 1050 1035\nf 1030 1045 1046 1036 1031\nf 1026 1041 1042 1027\nf 1151 1150 1038 1023\nf 1017 1031 1032 1018\nf 1013 1027 1028 1014\nf 1009 1023 1024 1010\nf 1004 1018 1019 1005\nf 1000 1014 1015 1001\nf 996 1010 1011 997\nf 991 1005 1006 992\nf 987 1001 1002 988\nf 983 997 998 984\nf 966 1159 1153 981\nf 974 989 990 975\nf 970 985 986 971\nf 966 981 982 967\nf 1133 975 976 1134\nf 1129 971 972 1130\nf 1126 1125 967 968 963\nf 961 805 809 770 772\nf 815 817 766 767\nf 826 825 762 761\nf 836 838 755 756\nf 846 848 750 751\nf 855 859 745 747\nf 896 895 741 740\nf 910 909 734 733\nf 923 925 726 727\nf 956 957 958 959\nf 787 789 907 944\nf 783 937 938\nf 874 872 932 779\nf 923 921 922 924\nf 905 906 907 908\nf 891 892 893 894\nf 881 882 883 884\nf 871 867 870 872\nf 861 859 860 862\nf 850 848 849 851\nf 840 838 839 841\nf 829 830 831\nf 820 817 818 821\nf 811 809 810 812\nf 799 800 801\nf 788 789 790\nf 837 835 941 783\nf 775 776 777 778\nf 825 830 759 762\nf 865 896 740 742\nf 909 914 731 734\nf 956 959 954 953\nf 950 949 799 801\nf 945 948 894 893\nf 858 943 786\nf 940 939 822 821\nf 935 814 812\nf 779 932 818 816\nf 927 930 879 878\nf 922 921 917 920\nf 912 911 788 790\nf 904 903 774 773\nf 892 891 868 867\nf 886 887 873 876\nf 882 881 800 799\nf 874 873 871 872\nf 849 847 936 786\nf 824 823 819 822\nf 800 881 954 959\nf 894 948 897\nf 787 922 920\nf 774 903 900\nf 797 857 854\nf 858 786 860\nf 696 721 590 587 550\nf 563 624 622 562\nf 713 632 710\nf 706 586 583\nf 719 564 615\nf 545 695 612 617\nf 555 557 653 650 713 710\nf 664 663 666 669\nf 638 637 640 642\nf 615 614 716 719\nf 542 609 699 698\nf 605 604 606 607\nf 598 597 600 603\nf 588 587 590 593\nf 580 579 582 585\nf 572 570 550 707\nf 563 625 624\nf 561 560 687 686\nf 634 632 713 712 558\nf 672 670 711 557 555\nf 696 550 570 568\nf 548 703 549\nf 540 539 610 613\nf 691 543 616 567 725 722\nf 584 589 736 733\nf 638 642 748 746\nf 671 675 765 763\nf 680 678 715 559\nf 632 630 709 710\nf 700 699 702 703\nf 692 690 691\nf 683 681 680 682\nf 674 675 672 673\nf 661 662 659 660\nf 651 652 649 650\nf 643 644 642 640 641\nf 633 631 630 632\nf 621 618 619 620\nf 542 541 608 609\nf 598 599 596 597\nf 584 585 582 583\nf 571 569 568 570\nf 537 536 560 561\nf 710 709 554 555\nf 548 549 546 547\nf 692 691 722 723\nf 571 573 728 727\nf 589 588 735 736\nf 629 631 743 742\nf 639 638 746 747\nf 648 652 753 751\nf 658 662 758 756\nf 668 671 763 761\nf 679 681 768 767\nf 533 689 688 534 771 772\nf 681 683 769 768\nf 675 674 764 765\nf 662 661 757 758\nf 652 651 752 753\nf 642 644 749 748\nf 631 633 744 743\nf 593 592 737 738\nf 577 576 729 730\nf 567 566 724 725\nf 545 543 544\nf 667 666 552 553\nf 714 684 682 559\nf 569 566 565 568\nf 580 581 578 579\nf 599 595 594 596\nf 608 607 606 609\nf 537 619 618 538\nf 631 629 628 630\nf 638 639 636 637\nf 652 648 647 649\nf 662 658 657 659\nf 671 668 667 670\nf 681 679 678 680\nf 688 689 686 687\nf 700 701 698 699\nf 634 558 708\nf 686 684 714 561\nf 534 688 692 723 771\nf 651 654 754 752\nf 588 593 738 735\nf 573 577 730 728\nf 539 542 698 701\nf 544 543 691 690\nf 548 547 717 716\nf 553 552 660 659\nf 557 556 655 653\nf 714 619 537 561\nf 630 628 563 709\nf 565 696 568\nf 579 578 705 704\nf 587 586 706 705\nf 717 547 596 594 720\nf 604 601 549 702\nf 608 541 538 618\nf 612 611 614 617\nf 637 636 551 697\nf 661 660 663 665\nf 696 565 718 721\nf 701 610 539\nf 552 666 663 660\nf 704 582 579\nf 621 623 605 607\nf 703 702 549\nf 625 563 628\nf 868 891 896 865\nf 785 940 931\nf 792 890 888\nf 787 919 916 789\nf 778 946 791 794 883 880\nf 801 958 934 807 804 950\nf 807 806 802 804\nf 844 843 840 841\nf 869 868 865 866\nf 884 883 794 793\nf 885 795 792 888\nf 892 867 871 889\nf 903 902 899 900\nf 911 910 905 908\nf 919 918 913 916\nf 930 929 776 775\nf 940 821 818 932 931\nf 875 874 779 935 780\nf 783 938 839 837\nf 824 783 941 827\nf 948 947 898 897\nf 949 951 878 877\nf 959 958 801 800\nf 913 918 729 732\nf 899 902 737 739\nf 829 833 757 760\nf 777 776 773 774\nf 845 844 781 782\nf 919 787 920\nf 854 853 851 943 797\nf 809 805 808 810\nf 817 815 816 818\nf 825 826 827 828\nf 838 836 837 839\nf 848 846 847 849\nf 859 855 858 860\nf 867 868 869 870\nf 877 878 879 880\nf 892 889 890 893\nf 901 902 903 904\nf 917 918 919 920\nf 927 928 929 930\nf 847 845 782 936\nf 851 849 786 943\nf 952 953 954 955\nf 925 928 724 726\nf 914 913 732 731\nf 895 899 739 741\nf 859 861 744 745\nf 848 850 749 750\nf 838 840 754 755\nf 830 829 760 759\nf 817 820 764 766\nf 809 811 769 770\nf 1124 966 967 1125\nf 1128 962 970 971 1129\nf 1132 974 975 1133\nf 965 979 980 1140 1148\nf 969 984 985 970\nf 973 988 989 974\nf 977 992 993 978\nf 982 996 997 983\nf 986 1000 1001 987\nf 990 1004 1005 991\nf 995 1009 1010 996\nf 999 1013 1014 1000\nf 1003 1017 1018 1004\nf 1152 1151 1023 1009\nf 1012 1026 1027 1013\nf 1016 1030 1031 1017\nf 1020 1034 1035 1021\nf 1025 1040 1041 1026\nf 1029 1044 1045 1030\nf 1033 1048 1049 1034\nf 1039 1053 1054 1040\nf 1043 1057 1058 1044\nf 1047 1061 1062 1048\nf 1052 1067 1068 1053\nf 1056 1071 1072 1057\nf 1060 1075 1076 1061\nf 1051 1066 1142 1141\nf 1069 1083 1084 1070\nf 1073 1087 1088 1074\nf 1077 1091 1092 1078\nf 1082 1096 1097 1083\nf 1086 1100 1101 1087\nf 1090 1104 1105 1091\nf 1095 1109 1110 1096\nf 1099 1113 1114 1100\nf 1103 1117 1118 1104\nf 1158 1160 1124 1109\nf 1112 1127 1128 1113\nf 1116 1131 1132 1122 1117\nf 1120 1135 1136 1121\nf 1144 1143 1080 1094\nf 1147 1138 1022 1037\nf 1149 1150 1147 1141\nf 1154 1153 1140 1139\nf 1153 1159 1148 1140\nf 978 993 1007 1021 1035 1050 1064 1079 1093 1107 1121 1136\nf 1703 1701 1702 1704\nf 1711 1709 1710 1712\nf 1723 1724 1725 1726\nf 1733 1734 1735 1736\nf 1743 1741 1742 1744\nf 1753 1751 1752 1754\nf 1763 1764 1765 1766\nf 1779 1780 1781 1782\nf 1791 1789 1790 1792\nf 1805 1806 1807\nf 1820 1821 1822 1823\nf 1835 1836 1837 1838\nf 1787 1789 1846 1847\nf 1776 1775 1852 1853\nf 1757 1761 1859 1860\nf 1868 1869 1870 1871\nf 1797 1880 1881 1798\nf 1753 1755 1888 1889\nf 1746 1745 1892 1893\nf 1733 1737 1832 1831\nf 1723 1727 1899 1900\nf 1714 1713 1820 1903\nf 1703 1705 1907 1908\nf 1695 1694 1909 1910\nf 1916 1917 1918 1919\nf 1891 1833 1819\nf 1909 1836 1835 1840\nf 1696 1695 1793 1796 1697\nf 1734 1731 1732 1735\nf 1768 1763 1766 1769\nf 1784 1779 1782 1785\nf 1803 1802 1918 1917\nf 1807 1806 1794 1911\nf 1808 1811 1928 1927\nf 1823 1822 1901 1900\nf 1830 1829 1898 1897\nf 1835 1880 1797 1840\nf 1889 1888 1932 1825\nf 1846 1931 1847\nf 1853 1852 1812 1923\nf 1815 1856 1922 1812\nf 1928 1811 1860 1859 1929\nf 1867 1865 1809 1920\nf 1868 1801 1798 1881\nf 1872 1875 1878 1877\nf 1893 1892 1818 1915\nf 1724 1901 1902 1719\nf 1931 1846 1925 1930\nf 1917 1874 1803\nf 1822 1821 1902 1901\nf 1923 1854 1853\nf 1882 1884 1866 1869\nf 1921 1920 1809\nf 1887 1932 1888\nf 1941 1942 1943 1944\nf 1954 1955 1940\nf 1953 1966 1967\nf 1977 1978 1979 1980\nf 1990 1991 1951 1992 1993 1994\nf 2005 2006 2007 2008 2009 2010\nf 2008 2021 2022 2009\nf 2015 2031 2032 2016\nf 1938 1941 1944 1939\nf 2004 1993 1992 2002\nf 2040 2043 1953 1967\nf 2049 2050 1962 1965\nf 1969 2054 2055 1970\nf 1972 2058 2059 1973\nf 1978 2062 2063 1979\nf 1985 2019 2020 1983\nf 1955 2071 2072 1949 1940\nf 2077 2039 2073 2080 2078\nf 2086 2084 2085 2087\nf 2023 2086 2088 2090\nf 1996 2052 2051 1997\nf 1999 2091 2069 2000\nf 2014 2006 2005 2011\nf 2063 2062 1781 1778\nf 2055 2054 1765 1762\nf 2030 2029 1725 1722\nf 2053 2020 1934 1968\nf 2095 2015 1959 2083\nf 1978 1977 1982\nf 1958 2096 2097 2038 1956\nf 2099 2098 2076 2094\nf 2103 2102 2074 2072\nf 2028 2105 2090 1986\nf 2108 2107 2087 2085\nf 2111 2110 2034 2033\nf 2114 2113 1945 1947\nf 2050 1941 1938 1948\nf 2000 2069 1984 1994\nf 2049 1965 1966 2048\nf 2057 2054 1969 1933\nf 2065 2062 1978 1982\nf 2068 2120 2019 1985\nf 2034 2095 2083 2035\nf 2097 2033 1946 2038\nf 2041 2044 2013 2003\nf 2119 2120 1790 1788\nf 2060 2063 1778 1777\nf 2117 2055 1762 1760\nf 2114 2115 1752 1750\nf 2111 2112 1742 1740\nf 2108 2032 1732 1730\nf 2024 2105 1716 1715\nf 2101 2102 1706 1704\nf 2093 2021 2098 2121 1698 1697\nf 2133 2130 2132 2131 2134 2135\nf 2142 2141 2143 2144\nf 2150 2149 2151 2152\nf 2128 2159 2160 2131\nf 2139 2163 2164 2141\nf 2147 2167 2168 2149\nf 2172 2173 2174 2158\nf 2161 2177 2178 2162\nf 2165 2181 2182 2166\nf 2169 2185 2186 2170\nf 2176 2190 2191 2177\nf 2180 2194 2195 2181\nf 2184 2198 2199 2185\nf 2189 2203 2204 2190\nf 2193 2207 2208 2194\nf 2197 2211 2212 2198\nf 2202 2216 2217 2203\nf 2206 2220 2221 2207\nf 2210 2225 2224 2226 2211\nf 2215 2230 2231 2216\nf 2219 2234 2235 2220\nf 2223 2238 2239 2224\nf 2228 2242 2243 2229\nf 2233 2247 2248 2249 2234\nf 2237 2252 2253 2238\nf 2241 2256 2257 2242\nf 2245 2265 2266 2246\nf 2250 2269 2270 2251\nf 2254 2273 2274 2255\nf 2263 2278 2279 2264\nf 2268 2283 2284 2269\nf 2272 2287 2288 2273\nf 2276 2291 2292 2277\nf 2282 2297 2298 2283\nf 2286 2301 2302 2287\nf 2290 2305 2306 2291\nf 2296 2129 2130 2297\nf 2300 2140 2142 2301\nf 2304 2148 2150 2305\nf 2125 2293 2310 2122\nf 2230 2262 2261 2244\nf 2317 2319 2320 2318\nf 2201 2187 2317 2315\nf 2264 2279 2280 2265\nf 2308 2294 2293 2125\nf 2327 2322 2321 2326 2328\nf 2335 2333 2334 2336\nf 2345 2341 2344 2346\nf 2357 2355 2356 2358\nf 2367 2365 2366 2368\nf 2377 2373 2376 2378\nf 2385 2386 2387 2388\nf 2399 2400 2401 2402\nf 2415 2411 2414 2416\nf 2425 2426 2427 2428\nf 2440 2441 2442 2443\nf 2456 2457 2458\nf 2469 2470 2471 2472\nf 2412 2411 2476 2477\nf 2396 2395 2484 2443\nf 2490 2491 2492 2493\nf 2500 2501 2502 2503\nf 2511 2512 2469 2513\nf 2377 2379 2518 2519\nf 2367 2369 2445 2444\nf 2357 2359 2525 2526\nf 2347 2530 2348\nf 2335 2337 2533 2534\nf 2327 2329 2465 2464\nf 2540 2541 2542\nf 2550 2551 2440\nf 2528 2527 2456 2451\nf 2553 2554 2555 2556\nf 2348 2345 2346 2349\nf 2386 2383 2384 2387\nf 2404 2399 2402 2405\nf 2427 2426 2429 2432\nf 2433 2435 2541 2540\nf 2438 2437 2493 2492\nf 2520 2447 2446\nf 2455 2454 2533 2532\nf 2466 2465 2536\nf 2472 2471 2535 2534\nf 2473 2419 2504 2507\nf 2412 2477 2478 2407\nf 2483 2482 2551 2550\nf 2486 2485 2558 2557\nf 2491 2490 2511 2514\nf 2497 2496 2509 2510\nf 2501 2500 2540 2542\nf 2510 2470 2469 2512\nf 2460 2444 2447 2461\nf 2342 2531 2532 2339\nf 2501 2542 2427 2432\nf 2492 2489 2438\nf 2441 2478 2477\nf 2557 2487 2486\nf 2543 2522 2521\nf 2520 2519 2447\nf 2561 2562 2563 2564 2565\nf 2576 2568 2577 2578\nf 2587 2588 2589\nf 2599 2600 2601\nf 2611 2612 2613\nf 2626 2627 2628 2629\nf 2643 2644 2645 2646 2588 2587\nf 2617 2655 2656 2614\nf 2585 2664 2665 2586\nf 2622 2612 2611 2618\nf 2668 2669 2670 2671\nf 2594 2593 2592 2595\nf 2625 2571 2570 2623\nf 2565 2684 2685 2561\nf 2603 2688 2689 2604\nf 2694 2609 2605 2564\nf 2568 2576 2566\nf 2635 2703 2704 2636\nf 2587 2589 2575 2663 2711\nf 2714 2651 2654 2646 2645\nf 2564 2563 2695 2694\nf 2619 2580 2579\nf 2631 2641 2640 2632\nf 2696 2697 2719 2720 2423 2420\nf 2687 2686 2401 2398\nf 2665 2664 2375 2372\nf 2653 2652 2343 2340\nf 2702 2709 2708 2701\nf 2698 2589 2588 2582\nf 2671 2620 2579 2581\nf 2650 2720 2637\nf 2729 2728 2710 2709\nf 2653 2732 2699 2654\nf 2734 2657 2616 2717\nf 2737 2659 2643 2723\nf 2665 2740 2725 2724 2586\nf 2744 2743 2589 2698\nf 2674 2591 2667 2705\nf 2672 2669 2668 2673\nf 2745 2571 2625 2679\nf 2689 2686 2600 2604\nf 2747 2746 2694 2695\nf 2634 2707 2703 2635\nf 2582 2588 2646 2583\nf 2580 2619 2680 2624\nf 2720 2650 2424 2423\nf 2692 2746 2414 2413\nf 2684 2687 2398 2397\nf 2744 2572 2384 2382\nf 2664 2741 2376 2375\nf 2737 2738 2366 2364\nf 2655 2658 2350 2349\nf 2731 2732 2338 2336\nf 2727 2728 2330 2328\nf 2754 2755 2756 2757\nf 2764 2766 2765 2767 2768\nf 2774 2773 2775 2776\nf 2751 2783 2784 2785 2752\nf 2762 2789 2790 2765\nf 2771 2793 2794 2773\nf 2779 2797 2798 2781\nf 2787 2803 2804 2788\nf 2791 2807 2808 2792\nf 2795 2811 2812 2796\nf 2802 2816 2817 2803\nf 2806 2820 2821 2807\nf 2810 2824 2825 2811\nf 2815 2829 2830 2816\nf 2819 2833 2834 2820\nf 2823 2837 2838 2824\nf 2827 2841 2842 2828\nf 2832 2846 2847 2833\nf 2836 2850 2851 2837\nf 2840 2855 2856 2841\nf 2845 2860 2861 2846\nf 2849 2864 2865 2850\nf 2854 2868 2869 2855\nf 2859 2873 2874 2860\nf 2863 2878 2879 2864\nf 2867 2882 2883 2868\nf 2887 2888 2889 2890\nf 2875 2895 2896 2876\nf 2880 2899 2900 2881\nf 2884 2903 2904 2885\nf 2894 2909 2910 2895\nf 2898 2913 2914 2899\nf 2902 2917 2918 2903\nf 2908 2923 2924 2909\nf 2912 2927 2928 2913\nf 2916 2931 2932 2917\nf 2922 2936 2754 2923\nf 2926 2761 2764 2927\nf 2930 2772 2774 2937 2931\nf 2934 2780 2782 2935\nf 2906 2891 2940 2939\nf 2941 2943 2944 2942\nf 2858 2843 2941 2890\nf 2801 2800 2785 2947\nf 2800 2799 2752 2785\nf 2781 2798 2814 2828 2842 2857 2871 2886 2905 2920 2935 2782\nf 2734 2735 2356 2354 2353 2657\ng post\nf 4422 4440 4342\nf 4147 4134 4436\nf 4163 4176 4435\nf 4324 4325 4432 4433\nf 4265 4252 4428\nf 4222 4234 4427\nf 4205 4206 4424 4425\nf 4023 4024 4420 4421\nf 4085 4070 4416\nf 4401 4400 4218 4219\nf 4396 4395 4234 4233\nf 4392 4399 4230 4229\nf 4380 4379 4261 4260\nf 4383 4382 4308 4309\nf 4386 4385 4323 4322\nf 4373 4352 4006 4007\nf 4361 4362 4010 4011\nf 4369 4370 4020 4019\nf 4367 4365 4066 4067\nf 4346 4345 4083 4082\nf 4354 4353 4128 4129\nf 4358 4357 4132 4133\nf 4409 4408 4173 4172\nf 4413 4412 4144 4143\nf 4340 3991 3990 4341\nf 4336 3995 3994 4337\nf 4332 3999 3998 4333\nf 4329 3986 3985 4343 4330\nf 4325 4342 4440 3989 4326\nf 4387 4338 4339 4386\nf 4317 4334 4335 4318\nf 3927 3982 4331 4314\nf 4308 4321 4322 4309\nf 4304 4317 4318 4305\nf 3882 3927 4314 4301\nf 4297 4327 4328 4298\nf 4384 4375 4294 4293\nf 4390 4381 4290 4289\nf 4285 4302 4303 4286\nf 4280 4293 4294 4281\nf 4276 4289 4290 4277\nf 4272 4285 4286 4273\nf 4269 4299 4300 4270\nf 4265 4282 4295 4296 4266\nf 4379 4278 4279 4378\nf 4257 4274 4275 4258\nf 3743 3798 4271 4254\nf 4248 4261 4262 4249\nf 4244 4257 4258 4245\nf 3716 3743 4254 4241\nf 4237 4267 4268 4238\nf 4396 4250 4251 4395\nf 4392 4246 4247 4399\nf 4225 4242 4243 4226\nf 4221 4233 4234 4222\nf 4217 4229 4230 4218\nf 4213 4225 4226 4214\nf 4210 4239 4240 4211\nf 4206 4223 4235 4236 4207\nf 4401 4402 4203 4202\nf 4198 4215 4216 4199\nf 3576 3631 4212 4195\nf 4190 4202 4203 4191\nf 4186 4198 4199 4187\nf 3548 3576 4195 4183\nf 4179 4208 4209 4180\nf 4406 4192 4193 4405\nf 4394 4188 4189 4409\nf 4167 4184 4185 4168\nf 4162 4175 4176 4163\nf 4158 4171 4172 4159\nf 4154 4167 4168 4155\nf 4151 4181 4182 4165 4152\nf 4147 4164 4177 4178 4148\nf 4413 4160 4161 4412\nf 4139 4156 4157 4140\nf 3409 3464 4153 4136\nf 4130 4143 4144 4131\nf 4126 4139 4140 4127\nf 3373 3409 4136 4123\nf 4119 4135 4149 4150 4120\nf 4357 4358 4116 4115\nf 4353 4354 4112 4111\nf 4107 4124 4125 4108\nf 4100 4115 4116 4101\nf 4096 4111 4112 4097\nf 4092 4107 4108 4093\nf 4089 4121 4122 4105 4090\nf 4085 4102 4117 4118 4086\nf 4347 4098 4099 4346\nf 4077 4094 4095 4078\nf 3235 3290 4091 4074\nf 4066 4081 4082 4067\nf 4062 4077 4078 4063\nf 3204 3235 4074 4059\nf 4055 4087 4088 4071 4056\nf 4364 4359 4052 4051\nf 4350 4366 4048 4047\nf 4043 4060 4061 4044\nf 4039 4051 4052 4040\nf 4035 4047 4048 4036\nf 4031 4043 4044 4032\nf 4028 4057 4058 4029\nf 4024 4041 4053 4054 4025\nf 4370 4037 4038 4368\nf 4016 4033 4034 4017\nf 3060 3115 4030 4013\nf 4008 4020 4021 4009\nf 4004 4016 4017 4005\nf 3030 3060 4013 4001\nf 3988 4026 4027 3987\nf 4362 4361 3990 3991\nf 4352 4373 3994 3995\nf 3999 4002 4003 3998\nf 3772 3717 3690 3635 3605 3550 3522 3467 3438 3383 3347 3292 3264 3209 3178 3123 3089 3034 3004 3003 3956 3901 3856 3801\nf 2980 3979 3978 2981\nf 2984 3975 3974 2985\nf 2988 3971 3970 2989\nf 2992 3967 3966 2993\nf 2996 3963 3962 2997\nf 3000 3959 3958 3001\nf 2951 2950 3954 3953\nf 2955 2954 3984 3950 3949\nf 2959 2958 3946 3945\nf 2963 2962 3942 3941\nf 2967 2966 3938 3937\nf 2971 2970 3934 3933\nf 2975 2974 3930 3929\nf 3980 3925 3924 3979\nf 3976 3921 3920 3975\nf 3972 3917 3916 3971\nf 3968 3913 3912 3967\nf 3964 3909 3908 3963\nf 3960 3905 3904 3959\nf 3927 3882 3881 3926\nf 3923 3878 3877 3922\nf 3919 3874 3873 3918\nf 3915 3870 3869 3914\nf 3911 3866 3865 3910\nf 3907 3862 3861 3906\nf 3903 3858 3857 3902\nf 3952 3953 3899 3853 3852 3898\nf 3948 3949 3895 3849 3848 3894\nf 3944 3945 3892 3845 3844\nf 3940 3941 3890 3841 3840 3889\nf 3936 3937 3887 3837 3836 3886\nf 3932 3933 3833 3832\nf 3928 3929 3884 3829 3828 3883\nf 3879 3824 3823 3878\nf 3875 3820 3819 3874\nf 3871 3816 3815 3870\nf 3867 3812 3811 3866\nf 3863 3808 3807 3862\nf 3859 3804 3803 3858\nf 3826 3797 3796 3825\nf 3822 3793 3792 3821\nf 3818 3789 3788 3817\nf 3814 3785 3784 3813\nf 3810 3781 3780 3809\nf 3806 3777 3776 3805\nf 3802 3773 3772 3801\nf 3851 3852 3768 3767 3800\nf 3847 3848 3764 3763\nf 3843 3844 3760 3759\nf 3839 3840 3756 3755\nf 3835 3836 3752 3751\nf 3831 3832 3748 3747\nf 3798 3743 3742 3797\nf 3794 3739 3738 3793\nf 3790 3735 3734 3789\nf 3786 3731 3730 3785\nf 3782 3727 3726 3781\nf 3778 3723 3722 3777\nf 3774 3719 3718 3773\nf 3741 3714 3713 3740\nf 3737 3710 3709 3736\nf 3733 3706 3705 3732\nf 3729 3702 3701 3728\nf 3725 3698 3697 3724\nf 3721 3694 3693 3720\nf 3770 3771 3689 3688\nf 3766 3767 3685 3684\nf 3762 3763 3681 3680\nf 3758 3759 3677 3676\nf 3754 3755 3673 3672\nf 3750 3751 3669 3668\nf 3746 3747 3665 3664\nf 3715 3660 3659 3714\nf 3711 3656 3655 3710\nf 3707 3652 3651 3706\nf 3703 3648 3647 3702\nf 3699 3644 3643 3698\nf 3695 3640 3639 3694\nf 3691 3636 3635 3690\nf 3658 3628 3627 3657\nf 3654 3624 3623 3653\nf 3650 3620 3619 3649\nf 3646 3616 3615 3645\nf 3642 3612 3611 3641\nf 3638 3608 3607 3637\nf 3687 3688 3634 3603 3602\nf 3683 3684 3599 3598\nf 3679 3680 3595 3594\nf 3675 3676 3591 3590\nf 3671 3672 3587 3586\nf 3667 3668 3583 3582\nf 3663 3664 3579 3578\nf 3629 3574 3573 3628\nf 3625 3570 3569 3624\nf 3621 3566 3565 3620\nf 3617 3562 3561 3616\nf 3613 3558 3557 3612\nf 3609 3554 3553 3608\nf 3576 3548 3547 3575\nf 3572 3544 3543 3571\nf 3568 3540 3539 3567\nf 3564 3536 3535 3563\nf 3560 3532 3531 3559\nf 3556 3528 3527 3555\nf 3552 3524 3523 3551\nf 3601 3602 3519 3518\nf 3597 3598 3515 3514\nf 3593 3594 3511 3510\nf 3589 3590 3507 3506\nf 3585 3586 3503 3502\nf 3581 3582 3499 3498\nf 3578 3495 3494 3577\nf 3545 3490 3489 3544\nf 3541 3486 3485 3540\nf 3537 3482 3481 3536\nf 3533 3478 3477 3532\nf 3529 3474 3473 3528\nf 3525 3470 3469 3524\nf 3492 3463 3462 3491\nf 3488 3459 3458 3487\nf 3484 3455 3454 3483\nf 3480 3451 3450 3479\nf 3476 3447 3446 3475\nf 3472 3443 3442 3471\nf 3468 3439 3438 3467\nf 3517 3518 3434 3433 3466\nf 3513 3514 3430 3429\nf 3509 3510 3426 3425\nf 3505 3506 3422 3421\nf 3501 3502 3418 3417\nf 3497 3498 3414 3413\nf 3464 3409 3408 3463\nf 3460 3405 3404 3459\nf 3456 3401 3400 3455\nf 3452 3397 3396 3451\nf 3448 3393 3392 3447\nf 3444 3389 3388 3443\nf 3440 3385 3384 3439\nf 3407 3371 3370 3406\nf 3403 3367 3366 3402\nf 3399 3363 3362 3398\nf 3395 3359 3358 3394\nf 3391 3355 3354 3390\nf 3387 3351 3350 3386\nf 3436 3437 3346 3345\nf 3432 3433 3382 3342 3341 3381\nf 3428 3429 3338 3337\nf 3424 3425 3334 3333\nf 3420 3421 3377 3330 3329 3376\nf 3416 3417 3326 3325\nf 3412 3413 3322 3321\nf 3372 3317 3316 3371\nf 3368 3313 3312 3367\nf 3364 3309 3308 3363\nf 3360 3305 3304 3359\nf 3356 3301 3300 3355\nf 3352 3297 3296 3351\nf 3348 3293 3292 3347\nf 3315 3287 3286 3314\nf 3311 3283 3282 3310\nf 3307 3279 3278 3306\nf 3303 3275 3274 3302\nf 3299 3271 3270 3298\nf 3295 3267 3266 3294\nf 3344 3345 3262 3261\nf 3340 3341 3258 3257\nf 3336 3337 3254 3253\nf 3332 3333 3250 3249\nf 3328 3329 3246 3245\nf 3324 3325 3242 3241\nf 3320 3321 3238 3237\nf 3288 3233 3232 3287\nf 3284 3229 3228 3283\nf 3280 3225 3224 3279\nf 3276 3221 3220 3275\nf 3272 3217 3216 3271\nf 3268 3213 3212 3267\nf 3235 3204 3203 3234\nf 3231 3200 3199 3230\nf 3227 3196 3195 3226\nf 3223 3192 3191 3222\nf 3219 3188 3187 3218\nf 3215 3184 3183 3214\nf 3211 3180 3179 3210\nf 3260 3261 3175 3174\nf 3256 3257 3171 3170\nf 3252 3253 3167 3166\nf 3248 3249 3163 3162\nf 3244 3245 3159 3158\nf 3240 3241 3155 3154\nf 3236 3237 3151 3150 3205\nf 3201 3146 3145 3200\nf 3197 3142 3141 3196\nf 3193 3138 3137 3192\nf 3189 3134 3133 3188\nf 3185 3130 3129 3184\nf 3181 3126 3125 3180\nf 3148 3114 3113 3147\nf 3144 3110 3109 3143\nf 3140 3106 3105 3139\nf 3136 3102 3101 3135\nf 3132 3098 3097 3131\nf 3128 3094 3093 3127\nf 3124 3090 3089 3123\nf 3173 3174 3085 3084 3122\nf 3169 3170 3081 3080\nf 3165 3166 3077 3076 3120\nf 3161 3162 3073 3072\nf 3157 3158 3116 3069 3068\nf 3153 3154 3065 3064\nf 3115 3060 3059 3114\nf 3111 3056 3055 3110\nf 3107 3052 3051 3106\nf 3103 3048 3047 3102\nf 3099 3044 3043 3098\nf 3095 3040 3039 3094\nf 3091 3036 3035 3090\nf 3058 3028 3027 3057\nf 3054 3024 3023 3053\nf 3050 3020 3019 3049\nf 3046 3016 3015 3045\nf 3042 3012 3011 3041\nf 3038 3008 3007 3037\nf 3087 3088 2949 2950\nf 3083 3084 3033 2953 2954\nf 3079 3080 2957 2958\nf 3075 3076 2961 2962\nf 3071 3072 2965 2966\nf 3067 3068 2969 2970\nf 3063 3064 2973 2974 3031\nf 3029 2978 2979 3028\nf 3025 2982 2983 3024\nf 3021 2986 2987 3020\nf 3017 2990 2991 3016\nf 3013 2994 2995 3012\nf 3009 2998 2999 3008\nf 3005 3002 3003 3004\nf 3008 2999 3000 3007\nf 3012 2995 2996 3011\nf 3016 2991 2992 3015\nf 3020 2987 2988 3019\nf 3024 2983 2984 3023\nf 3028 2979 2980 3027\nf 3062 3063 3031 2974 2975\nf 3066 3067 2970 2971\nf 3070 3071 2966 2967\nf 3074 3075 2962 2963\nf 3078 3079 2958 2959\nf 3082 3083 2954 2955 3032\nf 3086 3087 2950 2951\nf 3037 3007 3006 3036\nf 3041 3011 3010 3040\nf 3045 3015 3014 3044\nf 3049 3019 3018 3048\nf 3053 3023 3022 3052\nf 3057 3027 3026 3056\nf 3090 3035 3034 3089\nf 3094 3039 3038 3093\nf 3098 3043 3042 3097\nf 3102 3047 3046 3101\nf 3106 3051 3050 3105\nf 3110 3055 3054 3109\nf 3114 3059 3058 3113\nf 3152 3153 3064 3063\nf 3156 3157 3068 3067\nf 3160 3161 3072 3071\nf 3164 3165 3120 3076 3075 3119\nf 3168 3169 3080 3079\nf 3172 3173 3122 3084 3083 3121\nf 3176 3177 3088 3087\nf 3127 3093 3092 3126\nf 3131 3097 3096 3130\nf 3135 3101 3100 3134\nf 3139 3105 3104 3138\nf 3143 3109 3108 3142\nf 3147 3113 3112 3146\nf 3180 3125 3124 3179\nf 3184 3129 3128 3183\nf 3188 3133 3132 3187\nf 3192 3137 3136 3191\nf 3196 3141 3140 3195\nf 3200 3145 3144 3199\nf 3204 3149 3148 3203\nf 3239 3240 3154 3153 3206\nf 3243 3244 3158 3157\nf 3247 3248 3162 3161\nf 3251 3252 3166 3165\nf 3255 3256 3170 3169\nf 3259 3260 3174 3173 3208\nf 3210 3179 3178 3209\nf 3214 3183 3182 3213\nf 3218 3187 3186 3217\nf 3222 3191 3190 3221\nf 3226 3195 3194 3225\nf 3230 3199 3198 3229\nf 3234 3203 3202 3233\nf 3267 3212 3211 3266\nf 3271 3216 3215 3270\nf 3275 3220 3219 3274\nf 3279 3224 3223 3278\nf 3283 3228 3227 3282\nf 3287 3232 3231 3286\nf 3319 3320 3237 3236 3291\nf 3323 3324 3241 3240\nf 3327 3328 3245 3244\nf 3331 3332 3249 3248\nf 3335 3336 3253 3252\nf 3339 3340 3257 3256\nf 3343 3344 3261 3260\nf 3294 3266 3265 3293\nf 3298 3270 3269 3297\nf 3302 3274 3273 3301\nf 3306 3278 3277 3305\nf 3310 3282 3281 3309\nf 3314 3286 3285 3313\nf 3318 3290 3289 3317\nf 3351 3296 3295 3350\nf 3355 3300 3299 3354\nf 3359 3304 3303 3358\nf 3363 3308 3307 3362\nf 3367 3312 3311 3366\nf 3371 3316 3315 3370\nf 3411 3412 3321 3320\nf 3415 3416 3325 3324\nf 3419 3420 3376 3329 3328 3375\nf 3423 3424 3333 3332 3379\nf 3427 3428 3337 3336\nf 3431 3432 3381 3341 3340 3380\nf 3435 3436 3345 3344\nf 3386 3350 3349 3385\nf 3390 3354 3353 3389\nf 3394 3358 3357 3393\nf 3398 3362 3361 3397\nf 3402 3366 3365 3401\nf 3406 3370 3369 3405\nf 3439 3384 3383 3438\nf 3443 3388 3387 3442\nf 3447 3392 3391 3446\nf 3451 3396 3395 3450\nf 3455 3400 3399 3454\nf 3459 3404 3403 3458\nf 3463 3408 3407 3462\nf 3496 3497 3413 3412\nf 3500 3501 3417 3416\nf 3504 3505 3421 3420\nf 3508 3509 3425 3424\nf 3512 3513 3429 3428\nf 3516 3517 3466 3433 3432\nf 3520 3521 3437 3436\nf 3471 3442 3441 3470\nf 3475 3446 3445 3474\nf 3479 3450 3449 3478\nf 3483 3454 3453 3482\nf 3487 3458 3457 3486\nf 3491 3462 3461 3490\nf 3524 3469 3468 3523\nf 3528 3473 3472 3527\nf 3532 3477 3476 3531\nf 3536 3481 3480 3535\nf 3540 3485 3484 3539\nf 3544 3489 3488 3543\nf 3548 3493 3492 3547\nf 3580 3581 3498 3497\nf 3584 3585 3502 3501\nf 3588 3589 3506 3505\nf 3592 3593 3510 3509\nf 3596 3597 3514 3513\nf 3600 3601 3518 3517\nf 3551 3523 3522 3550\nf 3555 3527 3526 3554\nf 3559 3531 3530 3558\nf 3563 3535 3534 3562\nf 3567 3539 3538 3566\nf 3571 3543 3542 3570\nf 3575 3547 3546 3574\nf 3608 3553 3552 3607\nf 3612 3557 3556 3611\nf 3616 3561 3560 3615\nf 3620 3565 3564 3619\nf 3624 3569 3568 3623\nf 3628 3573 3572 3627\nf 3663 3578 3577 3662\nf 3666 3667 3582 3581\nf 3670 3671 3586 3585 3632\nf 3674 3675 3590 3589\nf 3678 3679 3594 3593\nf 3682 3683 3598 3597 3633\nf 3686 3687 3602 3601\nf 3637 3607 3606 3636\nf 3641 3611 3610 3640\nf 3645 3615 3614 3644\nf 3649 3619 3618 3648\nf 3653 3623 3622 3652\nf 3657 3627 3626 3656\nf 3661 3631 3630 3660\nf 3694 3639 3638 3693\nf 3698 3643 3642 3697\nf 3702 3647 3646 3701\nf 3706 3651 3650 3705\nf 3710 3655 3654 3709\nf 3714 3659 3658 3713\nf 3745 3746 3664 3663\nf 3749 3750 3668 3667\nf 3753 3754 3672 3671\nf 3757 3758 3676 3675\nf 3761 3762 3680 3679\nf 3765 3766 3684 3683\nf 3769 3770 3688 3687\nf 3720 3693 3692 3719\nf 3724 3697 3696 3723\nf 3728 3701 3700 3727\nf 3732 3705 3704 3731\nf 3736 3709 3708 3735\nf 3740 3713 3712 3739\nf 3773 3718 3717 3772\nf 3777 3722 3721 3776\nf 3781 3726 3725 3780\nf 3785 3730 3729 3784\nf 3789 3734 3733 3788\nf 3793 3738 3737 3792\nf 3797 3742 3741 3796\nf 3830 3831 3747 3746\nf 3834 3835 3751 3750\nf 3838 3839 3755 3754\nf 3842 3843 3759 3758\nf 3846 3847 3763 3762\nf 3850 3851 3800 3767 3766 3799\nf 3854 3855 3771 3770\nf 3805 3776 3775 3804\nf 3809 3780 3779 3808\nf 3813 3784 3783 3812\nf 3817 3788 3787 3816\nf 3821 3792 3791 3820\nf 3825 3796 3795 3824\nf 3858 3803 3802 3857\nf 3862 3807 3806 3861\nf 3866 3811 3810 3865\nf 3870 3815 3814 3869\nf 3874 3819 3818 3873\nf 3878 3823 3822 3877\nf 3882 3827 3826 3881\nf 3931 3932 3832 3831\nf 3935 3936 3886 3836 3835 3885\nf 3939 3940 3889 3840 3839 3888\nf 3943 3944 3844 3843\nf 3947 3948 3894 3848 3847 3893\nf 3951 3952 3898 3852 3851 3897\nf 3902 3857 3856 3901\nf 3906 3861 3860 3905\nf 3910 3865 3864 3909\nf 3914 3869 3868 3913\nf 3918 3873 3872 3917\nf 3922 3877 3876 3921\nf 3926 3881 3880 3925\nf 3959 3904 3903 3958\nf 3963 3908 3907 3962\nf 3967 3912 3911 3966\nf 3971 3916 3915 3970\nf 3975 3920 3919 3974\nf 3979 3924 3923 3978\nf 2976 2975 3929 3928 3983\nf 2972 2971 3933 3932\nf 2968 2967 3937 3936\nf 2964 2963 3941 3940\nf 2960 2959 3945 3944\nf 2956 2955 3949 3948\nf 2952 2951 3953 3952\nf 3001 3958 3957 3002\nf 2997 3962 3961 2998\nf 2993 3966 3965 2994\nf 2989 3970 3969 2990\nf 2985 3974 3973 2986\nf 2981 3978 3977 2982\nf 2977 3982 3981 2978\nf 4000 4001 4002 3999\nf 3995 3996 4005 4006 4352\nf 4371 4362 3991 3992\nf 3989 4025 4026 3988\nf 3985 4029 3061 2976\nf 4003 4015 4016 4004\nf 4007 4019 4020 4008\nf 4012 4011 4421 4420\nf 4015 4032 4033 4016\nf 4369 4036 4037 4370\nf 4023 4360 4040 4041 4024\nf 4027 4056 4057 4028\nf 4030 4042 4043 4031\nf 4034 4046 4047 4035\nf 4038 4050 4051 4039\nf 4042 4059 4060 4043\nf 4047 4046 4063 4064 4350\nf 4367 4364 4051 4050\nf 4054 4086 4087 4055\nf 4058 4073 4090 3236 3205 3150\nf 4061 4076 4077 4062\nf 4065 4080 4081 4066\nf 4070 4069 4417 4416\nf 4076 4093 4094 4077\nf 4348 4097 4098 4347\nf 4084 4344 4101 4102 4085\nf 4088 4104 4120 4121 4089\nf 4091 4106 4107 4092\nf 4095 4110 4111 4096\nf 4099 4114 4115 4100\nf 4106 4123 4124 4107\nf 4111 4110 4127 4128 4353\nf 4356 4357 4115 4114\nf 4118 4148 4149 4135 4119\nf 4122 4152 3410 3319\nf 4125 4138 4139 4126\nf 4129 4142 4143 4130\nf 4134 4133 4437 4436\nf 4138 4155 4156 4139\nf 4414 4159 4160 4413\nf 4146 4410 4163 4164 4147\nf 4150 4180 4181 4151\nf 4153 4166 4167 4154\nf 4157 4170 4171 4158\nf 4161 4174 4175 4162\nf 4166 4183 4184 4167\nf 4171 4170 4187 4188 4394\nf 4407 4191 4192 4406\nf 4178 4207 4208 4179\nf 4182 4211 3577 3494\nf 4185 4197 4198 4186\nf 4189 4201 4202 4190\nf 4194 4193 4425 4424\nf 4197 4214 4215 4198\nf 4400 4401 4202 4201\nf 4205 4404 4222 4223 4206\nf 4209 4238 4239 4210\nf 4212 4224 4225 4213\nf 4216 4228 4229 4217\nf 4220 4232 4233 4221\nf 4224 4241 4242 4225\nf 4229 4228 4245 4246 4392\nf 4397 4249 4250 4396\nf 4236 4266 4267 4237\nf 4240 4270 3744 3662\nf 4243 4256 4257 4244\nf 4247 4260 4261 4248\nf 4252 4251 4429 4428\nf 4256 4273 4274 4257\nf 4380 4277 4278 4379\nf 4264 4376 4281 4282 4265\nf 4268 4298 4299 4269\nf 4271 4284 4285 4272\nf 4275 4288 4289 4276\nf 4279 4292 4293 4280\nf 4284 4301 4302 4285\nf 4289 4288 4305 4306 4390\nf 4383 4384 4293 4292\nf 4296 4326 4327 4297\nf 4300 4313 4330 3928 3883 3828\nf 4303 4316 4317 4304\nf 4307 4320 4321 4308\nf 4312 4311 4433 4432\nf 4316 4333 4334 4317\nf 4388 4337 4338 4387\nf 4324 4374 4341 4342 4325\nf 4328 3987 3986 4329\nf 4331 4000 3999 4332\nf 4335 3996 3995 4336\nf 4339 3992 3991 4340\nf 4414 4413 4143 4142\nf 4394 4409 4172 4171\nf 4406 4405 4176 4175\nf 4355 4354 4129 4130\nf 4347 4346 4082 4081\nf 4364 4367 4067 4068\nf 4351 4369 4019 4018\nf 4363 4360 4023 4022\nf 4372 4373 4007 4008\nf 4387 4386 4322 4321\nf 4384 4383 4309 4310\nf 4391 4380 4260 4259\nf 4377 4376 4264 4263\nf 4397 4396 4233 4232\nf 4402 4401 4219 4220\nf 4069 4084 4417\nf 4053 4041 4418\nf 4341 3990 4423\nf 4234 4235 4426 4427\nf 4251 4264 4429\nf 4295 4282 4430\nf 4176 4177 4434 4435\nf 4133 4146 4437\nf 4117 4102 4438\nf 4440 4422 4423 3990\nf 4116 4117 4438 4439\nf 4177 4164 4434\nf 4311 4324 4433\nf 4294 4295 4430 4431\nf 4235 4223 4426\nf 4193 4205 4425\nf 4011 4023 4421\nf 4052 4053 4418 4419\nf 4400 4393 4217 4218\nf 4404 4403 4221 4222\nf 4399 4398 4231 4230\nf 4379 4378 4262 4261\nf 4382 4381 4307 4308\nf 4385 4374 4324 4323\nf 4389 4388 4320 4319\nf 4362 4371 4009 4010\nf 4370 4368 4021 4020\nf 4365 4366 4065 4066\nf 4344 4084 4083 4345\nf 4349 4348 4080 4079\nf 4357 4356 4131 4132\nf 4408 4407 4174 4173\nf 4412 4411 4145 4144\nf 4342 4341 4423 4422\nf 4337 3994 3993 4338\nf 4333 3998 3997 4334\nf 4330 4343 3985 2976 3983 3928\nf 4326 3989 3988 4327\nf 4386 4339 4340 4385\nf 4319 4318 4335 4336 4389\nf 4314 4331 4332 4315\nf 4309 4322 4323 4310\nf 4305 4318 4319 4306\nf 4301 4314 4315 4302\nf 4298 4328 4329 4299\nf 4294 4375 4311 4312 4295\nf 4381 4382 4291 4290\nf 4286 4303 4304 4287\nf 4282 4281 4431 4430\nf 4277 4290 4291 4278\nf 4273 4286 4287 4274\nf 4270 4300 3828 3744\nf 4266 4296 4297 4283 4267\nf 4378 4279 4280 4377\nf 4259 4258 4275 4276 4391\nf 4254 4271 4272 4255\nf 4249 4262 4263 4250\nf 4245 4258 4259 4246\nf 4241 4254 4255 4242\nf 4238 4268 4269 4253 4239\nf 4234 4395 4251 4252 4235\nf 4399 4247 4248 4398\nf 4226 4243 4244 4227\nf 4223 4222 4427 4426\nf 4218 4230 4231 4219\nf 4214 4226 4227 4215\nf 4211 4240 3662 3577\nf 4207 4236 4237 4208\nf 4402 4403 4204 4203\nf 4200 4199 4216 4217 4393\nf 4195 4212 4213 4196\nf 4191 4203 4204 4192\nf 4187 4199 4200 4188\nf 4183 4195 4196 4184\nf 4180 4209 4210 4181\nf 4176 4405 4193 4194 4177\nf 4409 4189 4190 4408\nf 4168 4185 4186 4169\nf 4164 4163 4435 4434\nf 4159 4172 4173 4160\nf 4155 4168 4169 4156\nf 4152 4165 4182 3494 3410\nf 4148 4178 4179 4149\nf 4412 4161 4162 4411\nf 4141 4140 4157 4158 4415\nf 4136 4153 4154 4137\nf 4131 4144 4145 4132\nf 4127 4140 4141 4128\nf 4123 4136 4137 4124\nf 4120 4150 4151 4121\nf 4116 4358 4133 4134 4117\nf 4354 4355 4113 4112\nf 4108 4125 4126 4109\nf 4102 4101 4439 4438\nf 4097 4112 4113 4098\nf 4093 4108 4109 4094\nf 4090 4105 4122 3319 3291 3236\nf 4086 4118 4119 4103 4087\nf 4346 4099 4100 4345\nf 4079 4078 4095 4096 4349\nf 4074 4091 4092 4075\nf 4067 4082 4083 4068\nf 4063 4078 4079 4064\nf 4059 4074 4075 4060\nf 4056 4071 4088 4089 4072 4057\nf 4052 4359 4069 4070 4053\nf 4366 4365 4049 4048\nf 4044 4061 4062 4045\nf 4041 4040 4419 4418\nf 4036 4048 4049 4037\nf 4032 4044 4045 4033\nf 4029 4058 3150 3061\nf 4025 4054 4055 4026\nf 4368 4038 4039 4363\nf 4018 4017 4034 4035 4351\nf 4013 4030 4031 4014\nf 4009 4021 4022 4010\nf 4005 4017 4018 4006\nf 4001 4013 4014 4002\nf 3987 4027 4028 3986\nf 4440 3990 4361 4011 4012\nf 4373 4372 3993 3994\nf 3998 4003 4004 3997\nf 3088 3177 3263 3346 3437 3521 3604 3689 3771 3855 3900 3955 2949\nf 2979 3980 3979 2980\nf 2983 3976 3975 2984\nf 2987 3972 3971 2988\nf 2991 3968 3967 2992\nf 2995 3964 3963 2996\nf 2999 3960 3959 3000\nf 2950 2949 3955 3954\nf 2954 2953 3951 3950 3984\nf 2958 2957 3947 3946\nf 2962 2961 3943 3942\nf 2966 2965 3939 3938\nf 2970 2969 3935 3934\nf 2974 2973 3931 3930\nf 3981 3926 3925 3980\nf 3977 3922 3921 3976\nf 3973 3918 3917 3972\nf 3969 3914 3913 3968\nf 3965 3910 3909 3964\nf 3961 3906 3905 3960\nf 3957 3902 3901 3956\nf 3924 3879 3878 3923\nf 3920 3875 3874 3919\nf 3916 3871 3870 3915\nf 3912 3867 3866 3911\nf 3908 3863 3862 3907\nf 3904 3859 3858 3903\nf 3953 3954 3854 3853 3899\nf 3949 3950 3896 3850 3849 3895\nf 3945 3946 3846 3845 3892\nf 3941 3942 3891 3842 3841 3890\nf 3937 3938 3838 3837 3887\nf 3933 3934 3834 3833\nf 3929 3930 3830 3829 3884\nf 3880 3825 3824 3879\nf 3876 3821 3820 3875\nf 3872 3817 3816 3871\nf 3868 3813 3812 3867\nf 3864 3809 3808 3863\nf 3860 3805 3804 3859\nf 3827 3798 3797 3826\nf 3823 3794 3793 3822\nf 3819 3790 3789 3818\nf 3815 3786 3785 3814\nf 3811 3782 3781 3810\nf 3807 3778 3777 3806\nf 3803 3774 3773 3802\nf 3852 3853 3769 3768\nf 3848 3849 3765 3764\nf 3844 3845 3761 3760\nf 3840 3841 3757 3756\nf 3836 3837 3753 3752\nf 3832 3833 3749 3748\nf 3829 3745 3744 3828\nf 3795 3740 3739 3794\nf 3791 3736 3735 3790\nf 3787 3732 3731 3786\nf 3783 3728 3727 3782\nf 3779 3724 3723 3778\nf 3775 3720 3719 3774\nf 3742 3715 3714 3741\nf 3738 3711 3710 3737\nf 3734 3707 3706 3733\nf 3730 3703 3702 3729\nf 3726 3699 3698 3725\nf 3722 3695 3694 3721\nf 3718 3691 3690 3717\nf 3767 3768 3686 3685\nf 3763 3764 3682 3681\nf 3759 3760 3678 3677\nf 3755 3756 3674 3673\nf 3751 3752 3670 3669\nf 3747 3748 3666 3665\nf 3716 3661 3660 3715\nf 3712 3657 3656 3711\nf 3708 3653 3652 3707\nf 3704 3649 3648 3703\nf 3700 3645 3644 3699\nf 3696 3641 3640 3695\nf 3692 3637 3636 3691\nf 3659 3629 3628 3658\nf 3655 3625 3624 3654\nf 3651 3621 3620 3650\nf 3647 3617 3616 3646\nf 3643 3613 3612 3642\nf 3639 3609 3608 3638\nf 3688 3689 3604 3603 3634\nf 3684 3685 3600 3599\nf 3680 3681 3596 3595\nf 3676 3677 3592 3591\nf 3672 3673 3588 3587\nf 3668 3669 3584 3583\nf 3664 3665 3580 3579\nf 3630 3575 3574 3629\nf 3626 3571 3570 3625\nf 3622 3567 3566 3621\nf 3618 3563 3562 3617\nf 3614 3559 3558 3613\nf 3610 3555 3554 3609\nf 3606 3551 3550 3605\nf 3573 3545 3544 3572\nf 3569 3541 3540 3568\nf 3565 3537 3536 3564\nf 3561 3533 3532 3560\nf 3557 3529 3528 3556\nf 3553 3525 3524 3552\nf 3602 3603 3520 3519\nf 3598 3599 3549 3516 3515\nf 3594 3595 3512 3511\nf 3590 3591 3508 3507\nf 3586 3587 3504 3503\nf 3582 3583 3500 3499\nf 3578 3579 3496 3495\nf 3546 3491 3490 3545\nf 3542 3487 3486 3541\nf 3538 3483 3482 3537\nf 3534 3479 3478 3533\nf 3530 3475 3474 3529\nf 3526 3471 3470 3525\nf 3493 3464 3463 3492\nf 3489 3460 3459 3488\nf 3485 3456 3455 3484\nf 3481 3452 3451 3480\nf 3477 3448 3447 3476\nf 3473 3444 3443 3472\nf 3469 3440 3439 3468\nf 3518 3519 3435 3434\nf 3514 3515 3465 3431 3430\nf 3510 3511 3427 3426\nf 3506 3507 3423 3422\nf 3502 3503 3419 3418\nf 3498 3499 3415 3414\nf 3495 3411 3410 3494\nf 3461 3406 3405 3460\nf 3457 3402 3401 3456\nf 3453 3398 3397 3452\nf 3449 3394 3393 3448\nf 3445 3390 3389 3444\nf 3441 3386 3385 3440\nf 3408 3372 3371 3407\nf 3404 3368 3367 3403\nf 3400 3364 3363 3399\nf 3396 3360 3359 3395\nf 3392 3356 3355 3391\nf 3388 3352 3351 3387\nf 3384 3348 3347 3383\nf 3433 3434 3343 3342 3382\nf 3429 3430 3339 3338\nf 3425 3426 3335 3334\nf 3421 3422 3378 3331 3330 3377\nf 3417 3418 3374 3327 3326\nf 3413 3414 3323 3322\nf 3373 3318 3317 3372\nf 3369 3314 3313 3368\nf 3365 3310 3309 3364\nf 3361 3306 3305 3360\nf 3357 3302 3301 3356\nf 3353 3298 3297 3352\nf 3349 3294 3293 3348\nf 3316 3288 3287 3315\nf 3312 3284 3283 3311\nf 3308 3280 3279 3307\nf 3304 3276 3275 3303\nf 3300 3272 3271 3299\nf 3296 3268 3267 3295\nf 3345 3346 3263 3262\nf 3341 3342 3259 3258\nf 3337 3338 3255 3254\nf 3333 3334 3251 3250\nf 3329 3330 3247 3246\nf 3325 3326 3243 3242\nf 3321 3322 3239 3238\nf 3289 3234 3233 3288\nf 3285 3230 3229 3284\nf 3281 3226 3225 3280\nf 3277 3222 3221 3276\nf 3273 3218 3217 3272\nf 3269 3214 3213 3268\nf 3265 3210 3209 3264\nf 3232 3201 3200 3231\nf 3228 3197 3196 3227\nf 3224 3193 3192 3223\nf 3220 3189 3188 3219\nf 3216 3185 3184 3215\nf 3212 3181 3180 3211\nf 3261 3262 3176 3175\nf 3257 3258 3207 3172 3171\nf 3253 3254 3168 3167\nf 3249 3250 3164 3163\nf 3245 3246 3160 3159\nf 3241 3242 3156 3155\nf 3237 3238 3152 3151\nf 3202 3147 3146 3201\nf 3198 3143 3142 3197\nf 3194 3139 3138 3193\nf 3190 3135 3134 3189\nf 3186 3131 3130 3185\nf 3182 3127 3126 3181\nf 3149 3115 3114 3148\nf 3145 3111 3110 3144\nf 3141 3107 3106 3140\nf 3137 3103 3102 3136\nf 3133 3099 3098 3132\nf 3129 3095 3094 3128\nf 3125 3091 3090 3124\nf 3174 3175 3086 3085\nf 3170 3171 3082 3081\nf 3166 3167 3078 3077\nf 3162 3163 3118 3074 3073\nf 3158 3159 3117 3070 3069 3116\nf 3154 3155 3066 3065\nf 3151 3062 3061 3150\nf 3112 3057 3056 3111\nf 3108 3053 3052 3107\nf 3104 3049 3048 3103\nf 3100 3045 3044 3099\nf 3096 3041 3040 3095\nf 3092 3037 3036 3091\nf 3059 3029 3028 3058\nf 3055 3025 3024 3054\nf 3051 3021 3020 3050\nf 3047 3017 3016 3046\nf 3043 3013 3012 3042\nf 3039 3009 3008 3038\nf 3035 3005 3004 3034\nf 3084 3085 2952 2953 3033\nf 3080 3081 2956 2957\nf 3076 3077 2960 2961\nf 3072 3073 2964 2965\nf 3068 3069 2968 2969\nf 3064 3065 2972 2973\nf 3030 2977 2978 3029\nf 3026 2981 2982 3025\nf 3022 2985 2986 3021\nf 3018 2989 2990 3017\nf 3014 2993 2994 3013\nf 3010 2997 2998 3009\nf 3006 3001 3002 3005\nf 3007 3000 3001 3006\nf 3011 2996 2997 3010\nf 3015 2992 2993 3014\nf 3019 2988 2989 3018\nf 3023 2984 2985 3022\nf 3027 2980 2981 3026\nf 3062 2975 2976 3061\nf 3065 3066 2971 2972\nf 3069 3070 2967 2968\nf 3073 3074 2963 2964\nf 3077 3078 2959 2960\nf 3081 3082 3032 2955 2956\nf 3085 3086 2951 2952\nf 3036 3006 3005 3035\nf 3040 3010 3009 3039\nf 3044 3014 3013 3043\nf 3048 3018 3017 3047\nf 3052 3022 3021 3051\nf 3056 3026 3025 3055\nf 3060 3030 3029 3059\nf 3093 3038 3037 3092\nf 3097 3042 3041 3096\nf 3101 3046 3045 3100\nf 3105 3050 3049 3104\nf 3109 3054 3053 3108\nf 3113 3058 3057 3112\nf 3151 3152 3063 3062\nf 3155 3156 3067 3066\nf 3159 3160 3071 3070 3117\nf 3163 3164 3119 3075 3074 3118\nf 3167 3168 3079 3078\nf 3171 3172 3121 3083 3082\nf 3175 3176 3087 3086\nf 3126 3092 3091 3125\nf 3130 3096 3095 3129\nf 3134 3100 3099 3133\nf 3138 3104 3103 3137\nf 3142 3108 3107 3141\nf 3146 3112 3111 3145\nf 3179 3124 3123 3178\nf 3183 3128 3127 3182\nf 3187 3132 3131 3186\nf 3191 3136 3135 3190\nf 3195 3140 3139 3194\nf 3199 3144 3143 3198\nf 3203 3148 3147 3202\nf 3238 3239 3206 3153 3152\nf 3242 3243 3157 3156\nf 3246 3247 3161 3160\nf 3250 3251 3165 3164\nf 3254 3255 3169 3168\nf 3258 3259 3208 3173 3172 3207\nf 3262 3263 3177 3176\nf 3213 3182 3181 3212\nf 3217 3186 3185 3216\nf 3221 3190 3189 3220\nf 3225 3194 3193 3224\nf 3229 3198 3197 3228\nf 3233 3202 3201 3232\nf 3266 3211 3210 3265\nf 3270 3215 3214 3269\nf 3274 3219 3218 3273\nf 3278 3223 3222 3277\nf 3282 3227 3226 3281\nf 3286 3231 3230 3285\nf 3290 3235 3234 3289\nf 3322 3323 3240 3239\nf 3326 3327 3244 3243\nf 3330 3331 3248 3247\nf 3334 3335 3252 3251\nf 3338 3339 3256 3255\nf 3342 3343 3260 3259\nf 3293 3265 3264 3292\nf 3297 3269 3268 3296\nf 3301 3273 3272 3300\nf 3305 3277 3276 3304\nf 3309 3281 3280 3308\nf 3313 3285 3284 3312\nf 3317 3289 3288 3316\nf 3350 3295 3294 3349\nf 3354 3299 3298 3353\nf 3358 3303 3302 3357\nf 3362 3307 3306 3361\nf 3366 3311 3310 3365\nf 3370 3315 3314 3369\nf 3411 3320 3319 3410\nf 3414 3415 3324 3323\nf 3418 3419 3375 3328 3327 3374\nf 3422 3423 3379 3332 3331 3378\nf 3426 3427 3336 3335\nf 3430 3431 3380 3340 3339\nf 3434 3435 3344 3343\nf 3385 3349 3348 3384\nf 3389 3353 3352 3388\nf 3393 3357 3356 3392\nf 3397 3361 3360 3396\nf 3401 3365 3364 3400\nf 3405 3369 3368 3404\nf 3409 3373 3372 3408\nf 3442 3387 3386 3441\nf 3446 3391 3390 3445\nf 3450 3395 3394 3449\nf 3454 3399 3398 3453\nf 3458 3403 3402 3457\nf 3462 3407 3406 3461\nf 3495 3496 3412 3411\nf 3499 3500 3416 3415\nf 3503 3504 3420 3419\nf 3507 3508 3424 3423\nf 3511 3512 3428 3427\nf 3515 3516 3432 3431 3465\nf 3519 3520 3436 3435\nf 3470 3441 3440 3469\nf 3474 3445 3444 3473\nf 3478 3449 3448 3477\nf 3482 3453 3452 3481\nf 3486 3457 3456 3485\nf 3490 3461 3460 3489\nf 3523 3468 3467 3522\nf 3527 3472 3471 3526\nf 3531 3476 3475 3530\nf 3535 3480 3479 3534\nf 3539 3484 3483 3538\nf 3543 3488 3487 3542\nf 3547 3492 3491 3546\nf 3579 3580 3497 3496\nf 3583 3584 3501 3500\nf 3587 3588 3505 3504\nf 3591 3592 3509 3508\nf 3595 3596 3513 3512\nf 3599 3600 3517 3516 3549\nf 3603 3604 3521 3520\nf 3554 3526 3525 3553\nf 3558 3530 3529 3557\nf 3562 3534 3533 3561\nf 3566 3538 3537 3565\nf 3570 3542 3541 3569\nf 3574 3546 3545 3573\nf 3607 3552 3551 3606\nf 3611 3556 3555 3610\nf 3615 3560 3559 3614\nf 3619 3564 3563 3618\nf 3623 3568 3567 3622\nf 3627 3572 3571 3626\nf 3631 3576 3575 3630\nf 3665 3666 3581 3580\nf 3669 3670 3632 3585 3584\nf 3673 3674 3589 3588\nf 3677 3678 3593 3592\nf 3681 3682 3633 3597 3596\nf 3685 3686 3601 3600\nf 3636 3606 3605 3635\nf 3640 3610 3609 3639\nf 3644 3614 3613 3643\nf 3648 3618 3617 3647\nf 3652 3622 3621 3651\nf 3656 3626 3625 3655\nf 3660 3630 3629 3659\nf 3693 3638 3637 3692\nf 3697 3642 3641 3696\nf 3701 3646 3645 3700\nf 3705 3650 3649 3704\nf 3709 3654 3653 3708\nf 3713 3658 3657 3712\nf 3745 3663 3662 3744\nf 3748 3749 3667 3666\nf 3752 3753 3671 3670\nf 3756 3757 3675 3674\nf 3760 3761 3679 3678\nf 3764 3765 3683 3682\nf 3768 3769 3687 3686\nf 3719 3692 3691 3718\nf 3723 3696 3695 3722\nf 3727 3700 3699 3726\nf 3731 3704 3703 3730\nf 3735 3708 3707 3734\nf 3739 3712 3711 3738\nf 3743 3716 3715 3742\nf 3776 3721 3720 3775\nf 3780 3725 3724 3779\nf 3784 3729 3728 3783\nf 3788 3733 3732 3787\nf 3792 3737 3736 3791\nf 3796 3741 3740 3795\nf 3829 3830 3746 3745\nf 3833 3834 3750 3749\nf 3837 3838 3754 3753\nf 3841 3842 3758 3757\nf 3845 3846 3762 3761\nf 3849 3850 3799 3766 3765\nf 3853 3854 3770 3769\nf 3804 3775 3774 3803\nf 3808 3779 3778 3807\nf 3812 3783 3782 3811\nf 3816 3787 3786 3815\nf 3820 3791 3790 3819\nf 3824 3795 3794 3823\nf 3857 3802 3801 3856\nf 3861 3806 3805 3860\nf 3865 3810 3809 3864\nf 3869 3814 3813 3868\nf 3873 3818 3817 3872\nf 3877 3822 3821 3876\nf 3881 3826 3825 3880\nf 3930 3931 3831 3830\nf 3934 3935 3885 3835 3834\nf 3938 3939 3888 3839 3838\nf 3942 3943 3843 3842 3891\nf 3946 3947 3893 3847 3846\nf 3950 3951 3897 3851 3850 3896\nf 3954 3955 3900 3855 3854\nf 3905 3860 3859 3904\nf 3909 3864 3863 3908\nf 3913 3868 3867 3912\nf 3917 3872 3871 3916\nf 3921 3876 3875 3920\nf 3925 3880 3879 3924\nf 3958 3903 3902 3957\nf 3962 3907 3906 3961\nf 3966 3911 3910 3965\nf 3970 3915 3914 3969\nf 3974 3919 3918 3973\nf 3978 3923 3922 3977\nf 3982 3927 3926 3981\nf 2973 2972 3932 3931\nf 2969 2968 3936 3935\nf 2965 2964 3940 3939\nf 2961 2960 3944 3943\nf 2957 2956 3948 3947\nf 2953 2952 3952 3951\nf 3002 3957 3956 3003\nf 2998 3961 3960 2999\nf 2994 3965 3964 2995\nf 2990 3969 3968 2991\nf 2986 3973 3972 2987\nf 2982 3977 3976 2983\nf 2978 3981 3980 2979\nf 2977 3030 4001 4000\nf 3997 4004 4005 3996\nf 4372 4371 3992 3993\nf 4440 4012 4024 4025 3989\nf 3986 4028 4029 3985\nf 4002 4014 4015 4003\nf 4006 4018 4019 4007\nf 4010 4022 4023 4011\nf 4014 4031 4032 4015\nf 4351 4035 4036 4369\nf 4363 4039 4040 4360\nf 4026 4055 4056 4027\nf 3115 3149 4042 4030\nf 4033 4045 4046 4034\nf 4037 4049 4050 4038\nf 3149 3204 4059 4042\nf 4045 4062 4063 4046\nf 4365 4367 4050 4049\nf 4053 4070 4085 4086 4054\nf 4057 4072 4089 4090 4073 4058\nf 4060 4075 4076 4061\nf 4064 4079 4080 4065\nf 4068 4083 4084 4069\nf 4075 4092 4093 4076\nf 4349 4096 4097 4348\nf 4345 4100 4101 4344\nf 4087 4103 4119 4120 4104 4088\nf 3290 3318 4106 4091\nf 4094 4109 4110 4095\nf 4098 4113 4114 4099\nf 3318 3373 4123 4106\nf 4109 4126 4127 4110\nf 4355 4356 4114 4113\nf 4117 4134 4147 4148 4118\nf 4121 4151 4152 4122\nf 4124 4137 4138 4125\nf 4128 4141 4142 4129\nf 4132 4145 4146 4133\nf 4137 4154 4155 4138\nf 4415 4158 4159 4414\nf 4411 4162 4163 4410\nf 4149 4179 4180 4150\nf 3464 3493 4166 4153\nf 4156 4169 4170 4157\nf 4160 4173 4174 4161\nf 3493 3548 4183 4166\nf 4169 4186 4187 4170\nf 4408 4190 4191 4407\nf 4177 4194 4206 4207 4178\nf 4181 4210 4211 4182\nf 4184 4196 4197 4185\nf 4188 4200 4201 4189\nf 4192 4204 4205 4193\nf 4196 4213 4214 4197\nf 4393 4400 4201 4200\nf 4403 4404 4205 4204\nf 4208 4237 4238 4209\nf 3631 3661 4224 4212\nf 4215 4227 4228 4216\nf 4219 4231 4232 4220\nf 3661 3716 4241 4224\nf 4227 4244 4245 4228\nf 4398 4248 4249 4397\nf 4235 4252 4265 4266 4236\nf 4239 4253 4269 4270 4240\nf 4242 4255 4256 4243\nf 4246 4259 4260 4247\nf 4250 4263 4264 4251\nf 4255 4272 4273 4256\nf 4391 4276 4277 4380\nf 4377 4280 4281 4376\nf 4267 4283 4297 4298 4268\nf 3798 3827 4284 4271\nf 4274 4287 4288 4275\nf 4278 4291 4292 4279\nf 3827 3882 4301 4284\nf 4287 4304 4305 4288\nf 4382 4383 4292 4291\nf 4295 4312 4325 4326 4296\nf 4299 4329 4330 4313 4300\nf 4302 4315 4316 4303\nf 4306 4319 4320 4307\nf 4310 4323 4324 4311\nf 4315 4332 4333 4316\nf 4389 4336 4337 4388\nf 4385 4340 4341 4374\nf 4327 3988 3987 4328\nf 3982 2977 4000 4331\nf 4334 3997 3996 4335\nf 4338 3993 3992 4339\nf 4415 4414 4142 4141\nf 4411 4410 4146 4145\nf 4407 4406 4175 4174\nf 4356 4355 4130 4131\nf 4348 4347 4081 4080\nf 4359 4364 4068 4069\nf 4366 4350 4064 4065\nf 4368 4363 4022 4021\nf 4371 4372 4008 4009\nf 4388 4387 4321 4320\nf 4375 4384 4310 4311\nf 4381 4390 4306 4307\nf 4378 4377 4263 4262\nf 4398 4397 4232 4231\nf 4403 4402 4220 4221\nf 4084 4085 4416 4417\nf 4040 4052 4419\nf 4024 4012 4420\nf 4206 4194 4424\nf 4264 4265 4428 4429\nf 4281 4294 4431\nf 4325 4312 4432\nf 4146 4147 4436 4437\nf 4101 4116 4439\n# 4404 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/magnolia.obj",
    "content": "#  magnolia.obj\n#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv -3.269770 -39.572201 0.876128\nv -3.263720 -39.507999 2.160890\nv -4.361250 -39.332500 1.513280\nv -4.367300 -39.396702 0.228512\nv -3.275810 -39.636398 -0.408635\nv -2.178280 -39.811901 0.238979\nv -2.172240 -39.747700 1.523740\nv 0.000000 -12.512000 1.769480\nv 0.004603 -11.787600 2.070020\nv -1.532410 -12.512000 0.884735\nv -1.784210 -11.802700 1.032280\nv -1.532410 -12.512000 -0.884735\nv -1.784210 -11.802700 -1.032280\nv 0.000000 -12.512000 -1.769480\nv 0.004603 -11.787600 -2.070020\nv 1.532410 -12.512000 -0.884735\nv 1.802300 -11.768900 -1.037260\nv 1.802300 -11.768900 1.037260\nv 1.532410 -12.512000 0.884735\nv -0.342363 -10.514400 0.000000\nv -0.342363 -10.514400 3.256500\nv 2.477850 -10.514400 1.628240\nv 2.477850 -10.514400 -1.628240\nv -0.342363 -10.514400 -3.256500\nv -3.162580 -10.514400 -1.628240\nv -3.162580 -10.514400 1.628240\nv 1.532410 -15.855300 0.884735\nv 1.532410 -15.855300 -0.884735\nv 0.000000 -15.855300 -1.769480\nv -1.532410 -15.855300 -0.884735\nv -1.532410 -15.855300 0.884735\nv 0.000000 -15.855300 1.769480\nv 1.419910 -16.416700 0.819785\nv 1.419910 -16.416700 -0.819785\nv 0.000000 -16.416700 -1.639580\nv -1.419910 -16.416700 -0.819785\nv -1.419910 -16.416700 0.819785\nv 0.000000 -16.416700 1.639580\nv -1.242540 -22.913401 0.677622\nv -1.245200 -22.956100 -0.608047\nv -0.141091 -23.115700 -1.248570\nv 0.965681 -23.232401 -0.603439\nv 0.968344 -23.189699 0.682230\nv -0.135770 -23.030100 1.322760\nv -1.114040 -21.885599 0.643190\nv -1.116700 -21.928301 -0.642479\nv -0.012590 -22.087799 -1.283010\nv 1.094180 -22.204599 -0.637871\nv 1.096840 -22.161800 0.647798\nv -0.007268 -22.002399 1.288330\nv -1.114040 -21.041100 0.643190\nv -1.114040 -21.041100 -0.643190\nv 0.000000 -21.041100 -1.286380\nv 1.114040 -21.041100 -0.643190\nv 1.114040 -21.041100 0.643190\nv 0.000000 -21.041100 1.286380\nv -1.419910 -19.726999 0.819785\nv -1.419910 -19.726999 -0.819785\nv 0.000000 -19.726999 -1.639580\nv 1.419910 -19.726999 -0.819785\nv 1.419910 -19.726999 0.819785\nv 0.000000 -19.726999 1.639580\nv -3.600090 -9.887410 -0.837305\nv -2.506010 -9.791520 -2.472480\nv -4.679120 -9.414780 -7.558720\nv -6.593500 -7.477730 -12.657700\nv -7.578360 -2.546730 -15.239300\nv -11.160200 -4.135240 -18.241501\nv -15.218400 0.667015 -16.717899\nv -18.079300 -2.709820 -11.358800\nv -16.571100 -4.235930 -7.261560\nv -14.014500 -7.339670 -6.955150\nv -9.684460 -9.344090 -3.795180\nv -5.114200 -9.771070 -0.100799\nv -7.262780 -9.530920 -5.779100\nv -10.964900 -7.827300 -10.697700\nv -13.669300 -5.849850 -14.224200\nv -15.416600 -4.056280 -16.460199\nv -7.262780 -10.158300 -5.779100\nv -10.964900 -8.454650 -10.697700\nv -13.669300 -6.477200 -14.224200\nv -15.416600 -4.683630 -16.460199\nv -8.985110 -8.675960 3.144430\nv -3.580970 -10.308400 1.684980\nv -3.269010 -10.460400 0.041159\nv -3.738310 -10.275300 -1.832370\nv -8.724660 -8.675960 -3.500030\nv -11.106900 -5.725990 -4.962940\nv -10.795300 -0.584257 -6.696050\nv -12.313900 4.515380 -3.738320\nv -10.534500 8.528950 -0.353300\nv -12.653800 4.431030 3.380820\nv -10.323100 -0.607539 6.206840\nv -11.419500 -5.700490 4.394910\nv -8.903030 -9.300910 -0.192910\nv -12.156900 -6.528500 -0.320459\nv -14.400500 -1.515000 -0.408402\nv -13.581100 4.225250 -0.376284\nv -9.577730 -9.488330 -0.192910\nv -12.831600 -6.528500 -0.320459\nv -15.075200 -1.515000 -0.408402\nv -14.255800 4.225250 -0.376284\nv -7.538110 -8.040600 12.698600\nv -5.665260 -10.122400 8.070320\nv -2.651660 -10.752000 2.297090\nv -3.648330 -10.839500 0.592795\nv -5.838550 -10.744200 0.031097\nv -10.710300 -10.071000 3.711780\nv -15.133700 -7.726410 6.214020\nv -17.231701 -4.987620 6.306330\nv -19.143299 -2.843210 12.669900\nv -18.166700 -1.756520 17.238701\nv -13.346600 -4.335280 17.658701\nv -7.045670 -5.208110 15.741600\nv -8.315630 -10.280800 6.069100\nv -12.300900 -8.388950 10.666200\nv -14.596800 -6.793080 13.270700\nv -17.353399 -3.591280 16.299601\nv -8.315630 -10.925800 6.069100\nv -12.300900 -9.033910 10.666200\nv -14.596800 -7.438040 13.270700\nv -17.353399 -4.236250 16.299601\nv 9.647400 -7.664860 3.788650\nv 10.925600 -4.395800 5.235360\nv 10.642900 -0.248701 6.474830\nv 11.893900 4.401950 3.635890\nv 10.083700 6.675500 0.109575\nv 12.055000 3.963610 -3.704690\nv 9.670920 -3.521370 -6.445080\nv 10.800300 -6.250010 -4.909060\nv 9.647400 -7.723540 -3.788650\nv 6.206360 -9.723320 -2.760440\nv 3.055560 -10.332900 -1.654780\nv 2.796610 -10.327200 -0.405788\nv 3.110920 -10.317400 1.617360\nv 6.214160 -9.746830 2.780560\nv 12.588600 4.425290 -0.423963\nv 13.794200 -0.254914 -0.419294\nv 5.868800 -9.981370 -0.427490\nv 9.868220 -8.334050 -0.429383\nv 12.588900 -5.054320 -0.428116\nv 13.270000 4.425290 -0.423963\nv 14.475600 -0.254914 -0.419294\nv 6.550240 -10.217800 -0.427490\nv 10.549700 -8.334050 -0.429383\nv 13.270300 -5.054320 -0.428116\nv 14.512000 -4.802390 8.343610\nv 12.701700 -5.852190 7.196180\nv 10.663500 -7.011020 6.239840\nv 7.955850 -8.646970 4.518260\nv 2.729380 -10.577600 0.841481\nv 1.141100 -10.707600 1.489330\nv 0.166075 -10.543000 3.558770\nv 2.297370 -8.627050 8.830770\nv 3.153800 -7.382430 11.994500\nv 3.084820 -8.628980 15.894900\nv 7.726480 -5.363900 19.308001\nv 11.352100 -5.237060 21.316200\nv 16.725300 -5.324340 22.009701\nv 17.485100 -5.185200 15.803200\nv 5.381560 -9.021220 7.023900\nv 7.677820 -7.564880 10.020900\nv 10.328100 -6.707970 13.480000\nv 13.251800 -6.535950 16.610500\nv 15.784600 -6.258280 20.601801\nv 5.381560 -9.502770 7.023900\nv 7.677820 -8.046410 10.020900\nv 10.328100 -7.189500 13.480000\nv 13.251800 -7.017480 16.610500\nv 15.784600 -6.739810 20.601801\nv 3.735710 -10.710900 0.168373\nv 7.773300 -10.534200 -2.626440\nv 12.611000 -8.965240 -6.163630\nv 16.288500 -5.725840 -7.382210\nv 18.187599 -3.679460 -14.044500\nv 15.774000 -2.130750 -16.828300\nv 12.549400 -3.543800 -18.745001\nv 6.457870 -5.444580 -15.755000\nv 5.825270 -8.926270 -11.734900\nv 3.249440 -10.519500 -6.362230\nv 1.454540 -10.817900 -2.175920\nv 2.251290 -10.828100 -0.576272\nv 5.563890 -10.739100 -4.557460\nv 9.740730 -9.468050 -9.577310\nv 14.975800 -6.414190 -15.869000\nv 16.322599 -4.000780 -17.487700\nv 5.563890 -11.202500 -4.557460\nv 9.740730 -9.931480 -9.577310\nv 14.975800 -6.877620 -15.869000\nv 16.755800 -4.332380 -18.008301\nv 1.353010 -10.464200 -3.150680\nv 2.329450 -9.158210 -7.345020\nv 3.909260 -4.624990 -11.006300\nv 4.528420 -1.073070 -10.689000\nv 3.439360 4.147330 -12.282300\nv -0.804521 9.231520 -11.786400\nv -5.530920 4.919860 -12.235400\nv -7.323990 0.618153 -12.575500\nv -5.820710 -4.496160 -10.523300\nv -3.931230 -9.129310 -7.117230\nv -2.532030 -10.480400 -2.712530\nv -0.650877 -10.678600 -2.232950\nv -0.968354 -5.365580 -12.045600\nv -1.020360 0.479889 -14.112400\nv -0.820490 -9.789970 -7.181030\nv -0.996529 4.870470 -13.833800\nv -0.968354 -5.365580 -12.661300\nv -1.020360 0.479889 -14.728100\nv -0.820490 -9.974470 -7.796700\nv -0.996529 4.870470 -14.449500\nv -3.549040 -10.202300 2.913940\nv -4.794790 -8.198370 7.956570\nv -5.756820 -4.742700 9.474420\nv -6.675340 -0.490764 8.363640\nv -4.301600 3.077760 10.367900\nv -1.095320 4.954070 9.935340\nv 2.769360 3.089680 10.876000\nv 7.264460 -1.264050 8.949460\nv 5.453600 -5.074840 9.676800\nv 2.744100 -8.446810 7.882030\nv 0.609976 -10.210400 2.505470\nv -1.427140 -10.409500 1.698330\nv -0.719197 -5.300940 11.576700\nv -0.418861 -0.522925 12.637800\nv -0.676284 2.925440 11.360400\nv -1.196210 -8.910490 8.164830\nv -0.719197 -5.300940 12.080900\nv -0.418861 -0.522925 13.142000\nv -0.676284 2.925440 11.864600\nv -1.196210 -8.996130 8.669000\nv -45.128399 -27.028400 -66.550102\nv -33.189602 -23.682600 -64.948700\nv -28.886101 -24.797899 -63.498600\nv -21.036699 -22.340500 -59.192001\nv -14.310500 -16.026199 -53.311798\nv -9.496810 -17.026300 -45.867298\nv -6.601860 -15.215000 -35.203602\nv -4.130720 -13.263600 -30.253500\nv -2.048560 -15.187200 -22.930799\nv -2.372190 -15.811000 -6.873370\nv -0.420713 -18.630100 -3.523100\nv 0.502893 -21.275999 -0.842292\nv -0.608069 -21.399099 -0.174199\nv -1.118600 -18.636600 -3.163940\nv -3.247640 -15.811900 -6.443650\nv -18.288200 -15.318700 -14.959400\nv -23.973801 -14.873000 -20.503500\nv -28.165300 -14.089500 -24.618900\nv -38.720600 -17.311199 -31.522499\nv -43.965099 -19.654400 -38.755402\nv -48.300800 -19.636299 -47.577099\nv -49.405800 -23.950001 -53.426300\nv -49.278900 -24.648500 -57.078899\nv -40.990501 -26.815500 -61.147400\nv -39.071701 -26.324699 -58.521801\nv -34.386902 -24.094700 -52.648998\nv -16.434000 -15.769500 -30.377399\nv -23.011499 -18.088699 -39.233501\nv -28.862101 -21.139299 -46.168900\nv -10.110500 -15.778500 -18.930799\nv -13.495500 -15.612500 -25.646900\nv -3.247640 -14.961400 -6.443650\nv -1.118600 -17.786100 -3.163940\nv -0.608069 -20.548599 -0.174199\nv 0.502893 -20.425501 -0.842292\nv -0.420713 -17.779600 -3.523100\nv -2.372190 -14.960500 -6.873370\nv -40.990501 -25.965000 -61.147400\nv -39.071701 -25.474199 -58.521801\nv -34.386902 -23.244200 -52.648998\nv -16.434000 -14.919000 -30.377399\nv -23.011499 -17.238199 -39.233501\nv -28.862101 -20.288799 -46.168900\nv -10.110500 -14.928000 -18.930799\nv -13.495500 -14.762000 -25.646900\nv -43.058498 -10.621000 38.440498\nv -48.095299 -16.700600 43.617699\nv -54.929100 -20.513800 50.274502\nv -65.899200 -27.764200 50.942200\nv -64.056099 -20.807800 31.999300\nv -60.512501 -15.830400 18.754601\nv -56.019798 -16.279699 12.487800\nv -49.935398 -14.564500 8.581660\nv -37.080101 -3.695370 5.486920\nv -25.473700 -11.331200 2.740950\nv -7.236160 -11.984900 2.797330\nv -3.295330 -14.593300 0.875862\nv -1.284490 -17.424601 0.238456\nv -0.796189 -17.497499 1.254530\nv -3.183520 -14.790200 1.726490\nv -6.839370 -12.185200 3.591850\nv -12.832500 -11.609000 13.609200\nv -19.315701 -9.304080 19.508301\nv -25.438000 -13.742500 24.573299\nv -37.095402 -12.038500 34.291500\nv -53.213902 -19.773199 33.368698\nv -58.530201 -23.521000 43.111000\nv -49.030499 -17.711100 26.482599\nv -42.149799 -15.372600 20.125299\nv -20.068001 -12.153400 9.656760\nv -28.631599 -11.483300 13.933600\nv -6.839370 -11.194800 3.591850\nv -3.183520 -13.799800 1.726490\nv -0.796189 -16.507099 1.254530\nv -1.284490 -16.434200 0.238456\nv -3.295330 -13.602900 0.875862\nv -7.236160 -10.994500 2.797330\nv -53.213902 -18.782801 33.368698\nv -58.530201 -22.530600 43.111000\nv -49.030499 -16.720699 26.482599\nv -42.149799 -14.382200 20.125299\nv -20.068001 -11.163000 9.656760\nv -28.631599 -10.492900 13.933600\nv 17.270100 -9.858780 -77.667900\nv 5.208810 -10.631000 -69.805000\nv 0.835288 -12.358600 -63.111099\nv -2.925900 -3.999150 -51.843399\nv -2.827200 -12.132900 -37.463001\nv -2.727530 -13.059000 -31.863100\nv -2.637040 -9.254290 -26.095699\nv -2.201420 -11.559200 -17.723499\nv 1.409700 -11.194800 -7.487320\nv 0.846044 -12.367100 -4.682140\nv 0.053056 -16.507099 -0.843621\nv 0.917594 -16.434200 -0.511246\nv 1.517860 -12.100300 -4.392410\nv 2.195260 -11.193900 -7.367600\nv 8.292860 -10.995900 -13.682400\nv 11.342700 -7.852400 -18.961901\nv 13.482600 -10.513100 -23.639200\nv 18.171301 -9.623970 -34.263000\nv 23.990601 -16.056700 -49.511002\nv 24.929501 -10.739000 -59.430199\nv 23.699800 -11.185100 -66.987099\nv 14.935500 -9.701400 -68.343399\nv 11.346400 -14.711100 -51.437901\nv 7.735520 -11.701600 -35.843899\nv 13.446600 -12.985000 -61.189201\nv 5.847790 -11.194100 -26.745800\nv 3.292050 -11.163000 -14.428000\nv 4.448430 -10.764400 -20.001400\nv 2.195260 -12.084800 -7.367600\nv 1.517860 -12.991200 -4.392410\nv 0.917594 -17.325100 -0.511246\nv 0.053056 -17.398001 -0.843621\nv 0.846044 -13.258000 -4.682140\nv 1.409700 -12.085700 -7.487320\nv 14.935500 -10.592300 -68.343399\nv 11.346400 -15.602000 -51.437901\nv 7.735520 -12.592500 -35.843899\nv 13.446600 -13.875900 -61.189201\nv 5.847790 -12.085000 -26.745800\nv 3.292050 -12.053900 -14.428000\nv 4.448430 -11.655300 -20.001400\nv 19.899599 -36.900398 77.417900\nv 27.167200 -27.419201 69.912201\nv 28.808001 -16.631901 59.895199\nv 28.894899 -16.883900 52.894901\nv 24.929899 -9.420260 44.239201\nv 22.337999 -10.276900 37.126099\nv 19.531799 -10.028400 31.721600\nv 15.813600 -11.738400 24.318001\nv 11.340700 -11.966200 16.308800\nv 2.637580 -11.377300 7.464100\nv 1.620300 -13.375100 3.647790\nv 0.974475 -19.450600 1.008530\nv -0.096654 -20.106400 1.118630\nv 0.886864 -13.627700 4.011600\nv 1.755260 -11.378200 7.589420\nv -2.073480 -12.037700 18.199800\nv -2.329110 -9.651880 26.885599\nv -2.177570 -14.242400 34.795700\nv -2.066510 -13.117700 44.378300\nv -1.851010 -12.490000 49.895500\nv 0.721853 -14.683100 60.579700\nv 3.634550 -14.864900 66.649597\nv 9.441160 -26.503599 72.611000\nv 14.726200 -17.302900 54.907398\nv 16.222700 -21.120600 62.867298\nv 18.627100 -31.314301 70.344498\nv 11.076600 -13.875700 42.502300\nv 9.219440 -11.491800 33.170200\nv 12.477400 -15.013000 46.007999\nv 6.802530 -11.495100 25.588600\nv 4.692560 -11.551700 17.238701\nv 1.755260 -12.533700 7.589420\nv 0.886864 -14.783200 4.011600\nv -0.096654 -21.261900 1.118630\nv 0.974475 -20.606100 1.008530\nv 1.620300 -14.530600 3.647790\nv 2.637580 -12.532800 7.464100\nv 14.726200 -17.661699 54.907398\nv 16.222700 -21.479401 62.867298\nv 18.627100 -31.673100 70.344498\nv 11.076600 -14.234500 42.502300\nv 9.219440 -11.850600 33.170200\nv 12.477400 -15.371800 46.007999\nv 6.802530 -11.853900 25.588600\nv 4.692560 -11.910500 17.238701\nv -78.017700 -27.576500 -13.366200\nv -73.414902 -22.006901 -6.513850\nv -66.727303 -17.610701 -2.473130\nv -62.271500 -16.600000 -0.476506\nv -50.671001 -9.553250 2.353840\nv -43.536701 -12.151500 2.620190\nv -34.195900 -13.641900 2.437060\nv -26.484699 -9.203450 2.401790\nv -18.012100 -11.508400 2.012840\nv -10.886300 -11.399800 0.400729\nv -7.564270 -10.995300 -1.343220\nv -3.335740 -13.169100 -0.694919\nv -1.083740 -16.507099 -0.394045\nv -0.549946 -16.390100 -1.085050\nv -3.315260 -13.265000 -1.378410\nv -7.420500 -10.994500 -2.078530\nv -21.711800 -11.394300 -11.917200\nv -34.135899 -9.573130 -17.089199\nv -42.597099 -14.959200 -20.588600\nv -49.375500 -16.204399 -22.568899\nv -56.180199 -12.665200 -23.421400\nv -62.644501 -18.472799 -23.279400\nv -70.772499 -22.988800 -19.898300\nv -64.657097 -20.052601 -13.060800\nv -72.167900 -24.817600 -12.892000\nv -44.772099 -14.382200 -9.465110\nv -48.228001 -15.238800 -10.140800\nv -58.388500 -18.345600 -12.127500\nv -32.415501 -11.359400 -6.619000\nv -21.429600 -11.163000 -4.471010\nv -7.420500 -11.783700 -2.078530\nv -3.315260 -14.054200 -1.378410\nv -0.549946 -17.179300 -1.085050\nv -1.083740 -17.296301 -0.394045\nv -3.335740 -13.958300 -0.694919\nv -7.564270 -11.784500 -1.343220\nv -64.657097 -20.841801 -13.060800\nv -72.167900 -25.606800 -12.892000\nv -44.772099 -15.171400 -9.465110\nv -48.228001 -16.028000 -10.140800\nv -58.388500 -19.134800 -12.127500\nv -32.415501 -12.148600 -6.619000\nv -21.429600 -11.952200 -4.471010\nv 65.925301 -15.599700 -16.764999\nv 73.591797 -19.888599 -14.666100\nv 76.969398 -20.552700 -12.801700\nv 83.962700 -22.815500 -4.889700\nv 78.001602 -20.341700 2.932930\nv 73.591797 -20.694700 6.718290\nv 65.925301 -18.547001 9.960470\nv 57.278099 -12.554500 12.557400\nv 49.905899 -13.274700 14.000200\nv 34.757301 -10.933300 11.500100\nv 30.885700 -9.727800 10.614400\nv 24.786200 -11.546700 9.173980\nv 8.747380 -11.804800 0.850284\nv 1.383170 -17.343100 0.807454\nv 1.315880 -17.351700 -0.030442\nv 8.747380 -11.804800 -0.257751\nv 13.302400 -11.681800 -4.353550\nv 24.776800 -11.596800 -8.629090\nv 30.876499 -11.258000 -10.069600\nv 34.757301 -10.677000 -10.909900\nv 49.905899 -14.010200 -17.329201\nv 59.121201 -16.264999 -17.094700\nv 73.613297 -22.168800 -3.885600\nv 78.028999 -22.901600 -4.230570\nv 65.925301 -20.173300 -2.946220\nv 57.278099 -17.363300 -1.623440\nv 49.905899 -14.998100 -0.510045\nv 30.876499 -12.108400 0.850284\nv 24.776800 -12.266200 0.335991\nv 34.741100 -12.136900 0.823047\nv 8.747380 -11.005200 -0.257751\nv 1.315880 -16.552099 -0.030442\nv 1.383170 -16.543501 0.807454\nv 8.747380 -11.005200 0.850284\nv 73.613297 -21.065599 -3.885600\nv 78.028999 -21.798401 -4.230570\nv 65.925301 -19.070101 -2.946220\nv 57.278099 -16.260099 -1.623440\nv 49.905899 -13.894900 -0.510045\nv 30.876499 -11.005200 0.850284\nv 24.776800 -11.163000 0.335991\nv 34.741100 -11.033700 0.823047\nv -48.252499 -19.574900 47.588501\nv -45.429600 -20.047800 41.954899\nv -38.673000 -17.247000 31.545799\nv -29.634600 -14.393800 25.955500\nv -21.053600 -15.250800 17.614201\nv -3.543130 -15.692100 6.767640\nv -1.118600 -18.584600 3.177070\nv -0.594626 -21.394400 0.504674\nv 0.502893 -21.224001 0.418124\nv -0.420713 -18.578100 3.524120\nv -2.506140 -15.560600 7.277130\nv -0.881442 -15.161300 14.725000\nv -3.048450 -14.586600 26.462099\nv -4.130720 -13.237700 30.253500\nv -9.496810 -17.000401 45.867298\nv -14.310500 -16.000299 53.311798\nv -21.036699 -22.314600 59.192001\nv -33.189602 -23.656700 64.948700\nv -45.128399 -27.002501 66.550102\nv -49.454498 -24.551600 54.645802\nv -17.960400 -16.101299 31.685900\nv -23.504601 -18.201599 38.991402\nv -31.231501 -22.380400 48.924198\nv -39.738701 -26.378599 59.414902\nv -35.421001 -24.555500 53.899300\nv -11.987700 -15.726600 22.064199\nv -2.506140 -14.762000 7.277130\nv -0.420713 -17.779600 3.524120\nv 0.502893 -20.425501 0.418124\nv -0.594626 -20.595900 0.504674\nv -1.118600 -17.786100 3.177070\nv -3.543130 -14.893500 6.767640\nv -17.960400 -15.302800 31.685900\nv -23.504601 -17.403099 38.991402\nv -31.231501 -21.581900 48.924198\nv -39.738701 -25.580099 59.414902\nv -35.421001 -23.757000 53.899300\nv -11.987700 -14.928000 22.064199\nv 69.302101 -29.148199 56.917702\nv 68.717102 -24.553101 47.345001\nv 65.491203 -20.636801 39.176399\nv 61.123901 -17.307800 33.170799\nv 52.693699 -12.350900 25.428600\nv 34.705101 -14.142000 15.787900\nv 27.013201 -9.391940 11.866800\nv 18.379200 -11.858800 7.916040\nv 6.232080 -11.542400 5.981900\nv 3.160680 -13.763800 3.684010\nv 0.865996 -17.275900 1.216970\nv 0.441842 -17.266701 1.920280\nv 2.743000 -13.758000 4.227500\nv 5.757620 -11.177500 6.592050\nv 11.127700 -11.742500 19.235800\nv 16.215599 -11.506900 25.752300\nv 24.462799 -9.787580 35.696499\nv 35.269699 -16.190100 47.835400\nv 44.644798 -16.376499 54.362499\nv 51.441700 -20.448200 57.213402\nv 60.023701 -25.110701 58.476700\nv 58.437901 -22.052799 48.246799\nv 52.564800 -19.663200 44.177601\nv 64.347900 -26.979601 52.963699\nv 43.648102 -16.354300 37.061001\nv 31.147100 -11.920900 27.083700\nv 21.583700 -11.449900 18.832800\nv 15.314300 -11.508400 13.829100\nv 5.757620 -11.983400 6.592050\nv 2.743000 -14.563900 4.227500\nv 0.441842 -18.072599 1.920280\nv 0.865996 -18.081800 1.216970\nv 3.160680 -14.569700 3.684010\nv 6.232080 -12.348300 5.981900\nv 58.437901 -22.858700 48.246799\nv 52.564800 -20.469101 44.177601\nv 64.347900 -27.785500 52.963699\nv 43.648102 -17.160200 37.061001\nv 31.147100 -12.726800 27.083700\nv 21.583700 -12.255800 18.832800\nv 15.314300 -12.314300 13.829100\nv 39.725300 -13.585400 -47.810299\nv 32.531601 -12.718500 -41.401100\nv 27.196301 -13.403000 -35.314499\nv 23.144501 -14.318300 -30.479799\nv 17.506399 -9.655890 -24.016100\nv 12.285200 -11.771500 -17.689800\nv 6.364180 -11.550300 -5.023870\nv 4.065330 -12.991300 -3.253270\nv 0.936490 -17.340300 -0.799290\nv 1.401420 -17.263599 0.080913\nv 4.268000 -12.711000 -2.432220\nv 6.799570 -11.549400 -4.274290\nv 20.418800 -11.963000 -6.049420\nv 25.985399 -11.759200 -9.399230\nv 33.833302 -9.996020 -12.077400\nv 39.288300 -10.248200 -14.516500\nv 46.256302 -9.266200 -17.772100\nv 54.237202 -16.955099 -22.826099\nv 60.686100 -17.222900 -29.291401\nv 64.850998 -26.041300 -37.063099\nv 66.013199 -37.197498 -49.111900\nv 55.457199 -25.045700 -53.575199\nv 47.423000 -14.290700 -52.141602\nv 39.669800 -15.108100 -29.111700\nv 47.245499 -17.564600 -34.863300\nv 33.894299 -12.388100 -23.783001\nv 28.733200 -11.665600 -20.824900\nv 53.969700 -21.251900 -39.968300\nv 59.667301 -30.165300 -44.293999\nv 16.758600 -11.726400 -12.325800\nv 22.227400 -11.554200 -15.869200\nv 6.799570 -12.354300 -4.274290\nv 4.268000 -13.515900 -2.432220\nv 1.401420 -18.068501 0.080913\nv 0.936490 -18.145201 -0.799290\nv 4.065330 -13.796200 -3.253270\nv 6.364180 -12.355200 -5.023870\nv 39.669800 -15.913000 -29.111700\nv 47.245499 -18.369499 -34.863300\nv 33.894299 -13.193000 -23.783001\nv 28.733200 -12.470500 -20.824900\nv 53.969700 -22.056801 -39.968300\nv 59.667301 -30.970200 -44.293999\nv 16.758600 -12.531300 -12.325800\nv 22.227400 -12.359100 -15.869200\nv -0.297942 -9.472550 -0.718572\nv -1.623080 -3.532100 -2.787830\nv -1.453010 -3.690950 -3.257340\nv -1.140480 -3.489860 -2.887910\nv -0.089257 -9.472550 -0.772754\nv -0.795506 -3.532100 -3.126269\nv -0.503093 -3.690950 -3.531062\nv -0.303972 -3.489860 -3.090035\nv 0.223661 -9.472550 -0.745044\nv 0.505864 -3.532100 -3.185983\nv 0.934537 -3.690950 -3.442113\nv 0.942986 -3.489860 -2.958293\nv 0.613460 -9.472550 -0.478312\nv 2.255791 -3.532100 -2.306034\nv 2.753622 -3.690950 -2.266951\nv 2.480611 -3.489860 -1.867428\nv 0.770054 -9.472550 -0.110142\nv 3.103590 -3.532100 -0.879841\nv 3.516150 -3.690950 -0.598492\nv 3.080675 -3.489860 -0.387506\nv 0.719179 -9.472550 0.296473\nv 3.120078 -3.532100 0.819450\nv 3.332416 -3.690950 1.271419\nv 2.850144 -3.489860 1.231827\nv 0.404001 -9.472550 0.664754\nv 2.029097 -3.532100 2.507818\nv 1.932588 -3.690950 2.997766\nv 1.567394 -3.489860 2.680297\nv -0.133509 -9.472550 0.766349\nv -0.123547 -3.532100 3.223526\nv -0.518734 -3.690950 3.528798\nv -0.584636 -3.489860 3.049413\nv -0.407590 -9.472550 0.662560\nv -1.307515 -3.532100 2.949032\nv -1.787607 -3.690950 3.086416\nv -1.671455 -3.489860 2.616668\nv -0.631040 -9.472550 0.454866\nv -2.341047 -3.532100 2.219433\nv -2.837052 -3.690950 2.161628\nv -2.549187 -3.489860 1.772671\nv -0.743138 -9.472550 0.229917\nv -2.926525 -3.532100 1.357144\nv -3.378210 -3.690950 1.144203\nv -2.981350 -3.489860 0.867335\nv -0.766379 -9.472550 -0.133337\nv -3.223554 -3.532100 -0.122828\nv -3.528914 -3.690950 -0.517946\nv -3.049543 -3.489860 -0.583956\nv -0.679542 -9.472550 -0.378599\nv -3.002741 -3.532100 -1.178953\nv -3.160728 -3.690950 -1.652665\nv -2.686403 -3.489860 -1.556906\nv -0.212172 -9.902050 -0.594590\nv -2.052240 -3.046190 -5.189420\nv -1.925010 -3.583360 -6.071730\nv -1.408470 -2.894240 -5.487340\nv 0.039860 -9.902050 -0.630052\nv 0.163717 -3.046190 -5.578079\nv 0.629010 -3.583360 -6.338448\nv 0.872812 -2.894240 -5.597579\nv 0.261156 -9.902050 -0.574763\nv 2.135276 -3.046190 -5.155809\nv 2.840407 -3.583360 -5.701198\nv 2.805017 -2.894240 -4.922049\nv 0.420036 -9.902050 -0.471300\nv 3.569837 -3.046190 -4.289293\nv 4.405104 -3.583360 -4.600720\nv 4.139966 -2.894240 -3.867217\nv 0.588787 -9.902050 -0.227781\nv 5.133486 -3.046190 -2.188400\nv 6.018845 -3.583360 -2.084485\nv 5.448281 -2.894240 -1.552711\nv 0.627931 -9.902050 0.065242\nv 5.566936 -3.046190 0.388587\nv 6.307917 -3.583360 0.884174\nv 5.557816 -2.894240 1.097891\nv 0.451043 -9.902050 0.441717\nv 4.116819 -3.046190 3.767436\nv 4.388655 -3.583360 4.616414\nv 3.668420 -2.894240 4.317103\nv 0.032870 -9.902050 0.630455\nv 0.478931 -3.046190 5.559892\nv 0.104178 -3.583360 6.368730\nv -0.223215 -2.894240 5.660818\nv -0.381397 -9.902050 0.503082\nv -3.218975 -3.046190 4.558506\nv -4.026959 -3.583360 4.935097\nv -3.820736 -2.894240 4.182901\nv -0.604349 -9.902050 0.182528\nv -5.284502 -3.046190 1.793272\nv -6.159446 -3.583360 1.622592\nv -5.550241 -2.894240 1.135564\nv -0.615037 -9.902050 -0.142421\nv -5.476104 -3.046190 -1.074277\nv -6.150084 -3.583360 -1.657722\nv -5.379307 -2.894240 -1.777005\nv -0.456555 -9.902050 -0.436019\nv -4.163803 -3.046190 -3.715445\nv -4.446278 -3.583360 -4.560943\nv -3.722340 -2.894240 -4.270700\nv -1.110200 -9.535970 -0.613446\nv -7.035410 -2.971160 -3.628670\nv -7.283450 -3.654520 -4.432720\nv -6.476310 -2.943080 -4.564590\nv -0.814301 -9.535970 -0.972509\nv -5.253594 -2.971160 -5.921485\nv -5.195008 -3.654520 -6.760883\nv -4.394619 -2.943080 -6.592829\nv -0.536627 -9.535970 -1.149300\nv -3.552922 -2.971160 -7.073965\nv -3.280310 -3.654520 -7.870020\nv -2.550119 -2.943080 -7.501664\nv -0.107782 -9.535970 -1.263821\nv -0.898070 -2.971160 -7.864967\nv -0.367873 -3.654520 -8.518353\nv 0.190692 -2.943080 -7.920966\nv 0.503067 -9.535970 -1.164381\nv 2.930410 -2.971160 -7.353702\nv 3.706666 -3.654520 -7.678431\nv 3.916067 -2.943080 -6.887850\nv 0.737574 -9.535970 -1.031913\nv 4.417009 -2.971160 -6.569191\nv 5.244328 -3.654520 -6.722699\nv 5.282085 -2.943080 -5.905729\nv 1.069679 -9.535970 -0.681651\nv 6.551356 -2.971160 -4.443419\nv 7.376122 -3.654520 -4.276738\nv 7.105937 -2.943080 -3.504814\nv 1.267058 -9.535970 -0.058512\nv 7.893961 -2.971160 -0.591279\nv 8.526217 -3.654520 -0.036053\nv 7.907542 -2.943080 0.498838\nv 1.161292 -9.535970 0.510158\nv 7.335696 -2.971160 2.975198\nv 7.655684 -3.654520 3.753420\nv 6.863842 -2.943080 3.957997\nv 1.000245 -9.535970 0.779981\nv 6.379203 -2.971160 4.687217\nv 6.498064 -3.654520 5.520221\nv 5.680229 -2.943080 5.523862\nv 0.346304 -9.535970 1.220219\nv 2.378278 -2.971160 7.550366\nv 1.982100 -3.654520 8.292705\nv 1.320065 -2.943080 7.812521\nv -0.418477 -9.535970 1.197387\nv -2.396808 -2.971160 7.544505\nv -3.147844 -3.654520 7.923935\nv -3.413268 -2.943080 7.150361\nv -0.825786 -9.535970 0.962776\nv -4.979656 -2.971160 6.153638\nv -5.817297 -3.654520 6.233516\nv -5.782789 -2.943080 5.416401\nv -1.050967 -9.535970 0.710160\nv -6.429536 -2.971160 4.617932\nv -7.258486 -3.654520 4.473482\nv -7.009149 -2.943080 3.694574\nv -1.235540 -9.535970 0.286881\nv -7.656559 -2.971160 2.010308\nv -8.378866 -3.654520 1.578689\nv -7.867225 -2.943080 0.940654\nv -1.267182 -9.535970 -0.055771\nv -7.915140 -2.971160 -0.121639\nv -8.494854 -3.654520 -0.731520\nv -7.830546 -2.943080 -1.208554\nv 0.000000 -5.019850 1.872540\nv 0.000000 -9.551180 0.602904\nv 1.324090 -5.019850 1.324090\nv 0.426318 -9.551180 0.426317\nv 1.872540 -5.019850 0.000000\nv 0.602904 -9.551180 0.000000\nv 1.324090 -5.019850 -1.324090\nv 0.426317 -9.551180 -0.426317\nv 0.000000 -5.019850 -1.872540\nv 0.000000 -9.551180 -0.602904\nv -1.324090 -5.019850 -1.324090\nv -0.426317 -9.551180 -0.426318\nv -1.872540 -5.019850 0.000000\nv -0.602904 -9.551180 0.000000\nv -1.324090 -5.019850 1.324090\nv -0.426318 -9.551180 0.426317\nv -0.426318 2.354000 0.426317\nv -1.324090 -2.177330 1.324090\nv -0.602904 2.354000 0.000000\nv -1.872540 -2.177330 0.000000\nv -0.426317 2.354000 -0.426318\nv -1.324090 -2.177330 -1.324090\nv 0.000000 2.354000 -0.602904\nv 0.000000 -2.177330 -1.872540\nv 0.426317 2.354000 -0.426317\nv 1.324090 -2.177330 -1.324090\nv 0.602904 2.354000 0.000000\nv 1.872540 -2.177330 0.000000\nv 0.426318 2.354000 0.426317\nv 1.324090 -2.177330 1.324090\nv 0.000000 2.354000 0.602904\nv 0.000000 -2.177330 1.872540\nv 0.000000 2.791360 0.000000\nv 0.000000 -9.988540 0.000000\n\n# 806 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng stem\ns 1\nusemtl brownskn\nf 8 9 11 10\nf 12 13 15 14\nf 16 17 18 19\nf 18 22 21 9\nf 17 15 24 23\nf 13 11 26 25\nf 27 19 8 32\nf 29 14 16 28\nf 31 10 12 30\nf 33 27 32 38\nf 35 29 28 34\nf 37 31 30 36\nf 44 39 3 2\nf 40 41 5 4\nf 42 43 7 6\nf 45 39 44 50\nf 47 41 40 46\nf 49 43 42 48\nf 46 45 51 52\nf 53 54 48 47\nf 55 56 50 49\nf 62 57 51 56\nf 58 59 53 52\nf 60 61 55 54\nf 38 37 57 62\nf 36 35 59 58\nf 34 33 61 60\nf 38 62 61 33\nf 35 34 60 59\nf 37 36 58 57\nf 61 62 56 55\nf 59 60 54 53\nf 57 58 52 51\nf 56 51 45 50\nf 54 55 49 48\nf 52 53 47 46\nf 50 44 43 49\nf 48 42 41 47\nf 46 40 39 45\nf 43 44 2 7\nf 41 42 6 5\nf 40 4 3 39\nf 38 32 31 37\nf 36 30 29 35\nf 34 28 27 33\nf 32 8 10 31\nf 30 12 14 29\nf 28 16 19 27\nf 11 9 21 26\nf 15 13 25 24\nf 18 17 23 22\nf 14 15 17 16\nf 10 11 13 12\nf 19 18 9 8\ng stem2\ns 2\nf 4 1 3\nf 6 1 5\nf 2 1 7\nf 23 20 22\nf 25 20 24\nf 21 20 26\nf 26 20 25\nf 24 20 23\nf 22 20 21\nf 7 1 6\nf 5 1 4\nf 3 1 2\ng pt2dx2\nusemtl bone1\nf 64 65 75\nf 73 75 76\nf 72 76 77\nf 68 78 77\nf 70 78 69\nf 77 78 70\nf 72 77 71\nf 73 76 72\nf 63 75 74\nf 63 64 75\nf 75 65 76\nf 66 67 77\nf 77 67 68\nf 78 68 69\nf 77 76 66\nf 70 71 77\nf 65 66 76\nf 75 73 74\ng pt2dx\ns 1\nf 74 73 79\nf 80 66 65\nf 81 71 70\nf 66 80 81\nf 69 68 82\nf 68 67 81\nf 81 67 66\nf 80 65 79\nf 79 64 63\nf 63 74 79\nf 73 72 80\nf 72 71 81\nf 70 82 81\nf 70 69 82\nf 81 82 68\nf 81 80 72\nf 80 79 73\nf 79 65 64\ng pt2cx2\ns 2\nf 84 85 95\nf 87 88 96\nf 94 96 97\nf 90 98 97\nf 92 98 91\nf 93 97 92\nf 94 97 93\nf 83 96 94\nf 95 83 84\nf 86 87 95\nf 95 87 96\nf 96 88 97\nf 97 89 90\nf 98 90 91\nf 88 89 97\nf 97 98 92\nf 83 95 96\nf 95 85 86\ng pt2cx\ns 1\nf 86 85 99\nf 100 99 83\nf 92 102 101\nf 101 89 88\nf 91 90 102\nf 90 89 101\nf 101 88 100\nf 100 87 99\nf 99 87 86\nf 84 83 99\nf 83 94 100\nf 94 93 101\nf 93 92 101\nf 92 91 102\nf 101 102 90\nf 101 100 94\nf 100 88 87\nf 99 85 84\ng pt2bx2\ns 2\nf 115 104 105\nf 108 109 116\nf 117 114 103\nf 111 118 117\nf 113 118 112\nf 114 117 113\nf 103 116 117\nf 104 116 103\nf 106 115 105\nf 107 108 115\nf 115 108 116\nf 109 110 117\nf 117 110 111\nf 118 111 112\nf 117 116 109\nf 117 118 113\nf 104 115 116\nf 115 106 107\ng pt2bx\ns 1\nf 107 106 119\nf 120 119 104\nf 113 122 121\nf 109 120 121\nf 112 111 122\nf 111 110 121\nf 121 110 109\nf 120 108 119\nf 119 108 107\nf 106 105 119\nf 104 103 120\nf 121 120 103\nf 114 113 121\nf 113 112 122\nf 121 122 111\nf 103 114 121\nf 120 109 108\nf 105 104 119\ng pt2ax2\ns 2\nf 126 137 138\nf 140 139 136\nf 141 130 131\nf 128 129 138\nf 139 134 135\nf 128 137 127\nf 138 137 128\nf 130 138 129\nf 131 140 141\nf 132 139 140\nf 134 139 133\nf 135 136 139\nf 136 123 140\nf 123 124 141\nf 141 124 138\nf 138 125 126\nf 137 126 127\nf 139 132 133\nf 130 141 138\nf 140 131 132\nf 141 140 123\nf 124 125 138\ng pt2ax\ns 1\nf 143 125 124\nf 123 145 146\nf 132 131 145\nf 143 146 130\nf 133 132 144\nf 127 126 142\nf 126 125 143\nf 143 124 146\nf 146 124 123\nf 145 123 136\nf 144 136 135\nf 134 133 144\nf 145 144 132\nf 146 145 131\nf 130 129 143\nf 128 142 143\nf 128 127 142\nf 135 134 144\nf 143 129 128\nf 131 130 146\nf 136 144 145\nf 143 142 126\ng pt1dx2\ns 2\nf 150 161 162\nf 148 163 164\nf 158 165 164\nf 156 163 162\nf 153 154 161\nf 160 165 159\nf 164 165 160\nf 148 164 147\nf 162 163 148\nf 150 162 149\nf 152 161 151\nf 152 153 161\nf 154 155 162\nf 162 155 156\nf 156 157 164\nf 164 157 158\nf 165 158 159\nf 161 150 151\nf 162 161 154\nf 164 163 156\nf 160 147 164\nf 148 149 162\ng pt1dx\ns 1\nf 167 149 148\nf 169 147 160\nf 156 168 169\nf 154 166 167\nf 151 150 166\nf 159 158 170\nf 158 157 169\nf 169 157 156\nf 156 155 167\nf 167 155 154\nf 166 153 152\nf 152 151 166\nf 150 149 167\nf 148 168 167\nf 148 147 169\nf 160 170 169\nf 160 159 170\nf 166 154 153\nf 167 168 156\nf 169 170 158\nf 169 168 148\nf 167 166 150\ng pt1cx2\ns 2\nf 180 183 184\nf 171 172 183\nf 179 184 185\nf 185 174 175\nf 177 186 176\nf 185 186 177\nf 179 185 178\nf 180 184 179\nf 183 172 184\nf 182 171 183\nf 183 180 181\nf 184 173 185\nf 185 175 186\nf 186 175 176\nf 173 174 185\nf 177 178 185\nf 181 182 183\nf 172 173 184\ng pt1cx\ns 1\nf 188 173 172\nf 187 182 181\nf 189 178 177\nf 189 174 173\nf 176 175 190\nf 190 175 189\nf 189 173 188\nf 181 180 187\nf 187 171 182\nf 188 172 187\nf 180 179 188\nf 179 178 189\nf 177 190 189\nf 177 176 190\nf 175 174 189\nf 189 188 179\nf 187 172 171\nf 188 187 180\ng pt1bx2\ns 2\nf 192 193 203\nf 199 203 204\nf 204 194 195\nf 205 200 201\nf 197 206 196\nf 204 206 197\nf 204 203 193\nf 200 205 203\nf 202 205 201\nf 202 191 205\nf 205 192 203\nf 199 204 198\nf 204 195 206\nf 206 195 196\nf 191 192 205\nf 193 194 204\nf 197 198 204\nf 203 199 200\ng pt1bx\ns 1\nf 200 199 207\nf 208 198 197\nf 208 194 193\nf 209 192 191\nf 196 195 210\nf 210 195 208\nf 199 198 208\nf 207 192 209\nf 209 191 202\nf 202 201 209\nf 207 209 200\nf 193 207 208\nf 197 210 208\nf 197 196 210\nf 201 200 209\nf 195 194 208\nf 208 207 199\nf 207 193 192\ng pt1ax2\ns 2\nf 219 223 224\nf 215 225 224\nf 220 226 223\nf 211 212 226\nf 217 225 216\nf 218 224 217\nf 219 224 218\nf 220 223 219\nf 222 226 221\nf 222 211 226\nf 226 212 223\nf 213 214 224\nf 224 214 215\nf 225 215 216\nf 226 220 221\nf 212 213 223\nf 224 223 213\nf 224 225 217\ng pt1ax\ns 1\nf 217 229 228\nf 213 227 228\nf 227 213 212\nf 221 220 230\nf 216 215 229\nf 215 214 228\nf 228 214 213\nf 227 212 230\nf 230 211 222\nf 222 221 230\nf 220 219 227\nf 219 218 228\nf 218 217 228\nf 217 216 229\nf 230 212 211\nf 227 230 220\nf 228 229 215\nf 228 227 219\ng lf9x\nusemtl greenskn\nf 263 262 245 244\nf 265 264 243 242\nf 267 266 241 240\nf 239 267 240\nf 266 265 242 241\nf 264 263 244 243\nf 262 246 245\ng lf9x3\ns 3\nf 256 255 233\nf 236 258 259\nf 252 253 254\nf 250 251 256\nf 257 248 249\nf 257 261 247\nf 261 238 239\nf 245 240 241\nf 231 254 253\nf 254 255 252\nf 252 256 251\nf 256 259 250\nf 259 258 249\nf 249 258 257\nf 248 257 247\nf 247 261 260\nf 246 260 245\nf 245 241 244\nf 241 242 243\nf 260 239 240\nf 261 239 260\nf 237 238 261\nf 258 236 257\nf 259 235 236\nf 234 235 259\nf 233 234 256\nf 254 233 255\nf 231 232 254\nf 243 244 241\nf 240 245 260\nf 261 257 237\nf 260 246 247\nf 249 250 259\nf 252 255 256\nf 259 256 234\nf 236 237 257\nf 254 232 233\ng lf9x2\ns 2\nf 233 269 270\nf 273 272 236\nf 268 253 252\nf 270 251 250\nf 249 248 271\nf 247 275 271\nf 239 238 275\nf 266 267 262\nf 231 253 268\nf 252 269 268\nf 252 251 270\nf 250 273 270\nf 249 272 273\nf 271 272 249\nf 248 247 271\nf 274 275 247\nf 262 274 246\nf 263 266 262\nf 264 265 266\nf 267 239 274\nf 274 239 275\nf 275 238 237\nf 271 236 272\nf 236 235 273\nf 273 235 234\nf 270 234 233\nf 269 233 268\nf 268 232 231\nf 266 263 264\nf 274 262 267\nf 237 271 275\nf 247 246 274\nf 273 250 249\nf 270 269 252\nf 234 270 273\nf 271 237 236\nf 233 232 268\ng lf8x\ns 1\nf 306 305 288 287\nf 285 307 286\nf 303 302 291 290\nf 304 303 290 289\nf 302 292 291\nf 307 306 287 286\nf 305 304 289 288\ng lf8x3\ns 3\nf 296 277 278\nf 296 281 282\nf 298 276 277\nf 294 295 299\nf 301 299 283\nf 286 291 300\nf 289 290 287\nf 279 280 297\nf 280 281 296\nf 296 282 298\nf 282 283 299\nf 294 301 293\nf 293 301 292\nf 292 300 291\nf 291 286 287\nf 287 288 289\nf 300 285 286\nf 301 284 285\nf 283 284 301\nf 299 301 294\nf 276 298 295\nf 277 296 298\nf 278 297 296\nf 279 297 278\nf 287 290 291\nf 285 300 301\nf 301 300 292\nf 298 299 295\nf 299 298 282\nf 296 297 280\ng lf8x2\ns 2\nf 280 309 308\nf 282 310 311\nf 295 311 310\nf 292 312 313\nf 313 312 285\nf 302 303 306\nf 279 278 309\nf 308 309 278\nf 310 308 277\nf 276 295 310\nf 294 313 311\nf 313 284 283\nf 285 284 313\nf 307 285 312\nf 304 305 306\nf 306 307 302\nf 302 312 292\nf 293 292 313\nf 294 293 313\nf 311 283 282\nf 310 282 308\nf 308 281 280\nf 309 280 279\nf 306 303 304\nf 312 302 307\nf 283 311 313\nf 311 295 294\nf 277 276 310\nf 282 281 308\nf 278 277 308\ng lf7x\ns 1\nf 323 322 347 346\nf 325 324 345 344\nf 327 326 343 342\nf 328 327 342\nf 326 325 344 343\nf 324 323 346 345\nf 322 321 347\ng lf7x3\ns 3\nf 335 315 316\nf 318 337 336\nf 332 333 338\nf 340 322 327\nf 319 320 341\nf 328 329 341\nf 326 323 324\nf 316 338 335\nf 318 336 317\nf 338 333 334\nf 336 331 332\nf 319 339 337 318\nf 341 339 319\nf 321 340 341\nf 322 340 321\nf 326 327 322\nf 324 325 326\nf 327 328 340\nf 340 328 341\nf 341 329 330\nf 330 331 337\nf 337 331 336\nf 336 332 338\nf 335 334 314\nf 316 336 338\nf 315 335 314\nf 322 323 326\nf 330 339 341\nf 341 320 321\nf 337 339 330\nf 334 335 338\nf 316 317 336\ng lf7x2\ns 2\nf 349 317 316\nf 351 348 334\nf 330 352 350\nf 321 320 354\nf 354 352 330\nf 343 346 347\nf 315 314 348\nf 351 349 316\nf 314 334 348\nf 351 332 349\nf 349 331 350\nf 350 331 330\nf 330 329 354\nf 354 328 353\nf 353 328 342\nf 343 344 345\nf 347 342 343\nf 321 353 347\nf 354 353 321\nf 319 352 354\nf 319 318 350 352\nf 332 331 349\nf 334 333 351\nf 318 317 349\nf 348 351 316\nf 345 346 343\nf 354 329 328\nf 354 320 319\nf 342 347 353\nf 351 333 332\nf 349 350 318\nf 316 315 348\ng lf6x\ns 1\nf 365 364 391 390\nf 367 366 389 388\nf 369 368 387 386\nf 370 369 386\nf 368 367 388 387\nf 366 365 390 389\nf 364 363 391\ng lf6x3\ns 3\nf 379 378 375\nf 356 357 379\nf 373 381 382\nf 358 359 383\nf 373 374 383\nf 382 361 362\nf 384 371 372\nf 364 365 368\nf 356 380 355\nf 379 380 356\nf 358 378 379\nf 383 378 358\nf 360 381 383\nf 361 382 360\nf 362 384 382\nf 363 385 384\nf 364 385 363\nf 368 369 364\nf 366 367 368\nf 364 369 385\nf 370 371 384\nf 384 372 382\nf 382 372 373\nf 381 373 383\nf 383 374 375\nf 375 376 379\nf 379 376 377\nf 380 377 355\nf 368 365 366\nf 384 385 370\nf 382 381 360\nf 384 362 363\nf 375 378 383\nf 383 359 360\nf 379 357 358\nf 377 380 379\ns off\nf 369 370 385\ng lf6x2\ns 2\nf 393 394 377\nf 358 357 393\nf 360 359 397\nf 397 392 375\nf 363 362 398\nf 360 395 396\nf 370 399 398\nf 389 390 387\nf 355 377 394\nf 377 376 393\nf 393 376 375\nf 375 374 397\nf 397 373 395\nf 373 372 396\nf 396 372 398\nf 398 371 370\nf 399 386 391\nf 387 388 389\nf 391 386 387\nf 363 399 391\nf 398 399 363\nf 396 398 362\nf 361 360 396\nf 397 395 360\nf 358 392 397\nf 393 392 358\nf 356 394 393\nf 356 355 394\nf 387 390 391\nf 372 371 398\nf 362 361 396\nf 397 374 373\nf 397 359 358\nf 396 395 373\nf 393 357 356\nf 375 392 393\ns off\nf 399 370 386\ng lf4x\ns 1\nf 411 410 435 434\nf 413 412 433 432\nf 415 414 431 430\nf 416 415 430\nf 414 413 432 431\nf 412 411 434 433\nf 410 409 435\ng lf4x3\ns 3\nf 401 402 423\nf 405 425 426\nf 421 423 427\nf 418 419 426\nf 428 429 416\nf 425 405 406\nf 429 410 415\nf 414 411 412\nf 424 422 400\nf 421 422 424\nf 427 420 421\nf 426 419 427\nf 425 418 426\nf 407 428 406\nf 408 428 407\nf 410 429 409\nf 414 415 410\nf 412 413 414\nf 415 416 429\nf 416 417 428\nf 428 417 418\nf 406 428 425\nf 405 426 404\nf 426 427 403\nf 403 427 423\nf 423 424 401\nf 401 424 400\nf 410 411 414\nf 429 408 409\nf 408 429 428\nf 418 425 428\nf 419 420 427\nf 403 404 426\nf 423 402 403\nf 424 423 421\ng lf4x2\ns 2\nf 436 402 401\nf 439 438 405\nf 440 436 421\nf 439 419 418\nf 416 442 441\nf 406 405 438\nf 430 435 442\nf 433 434 431\nf 400 422 437\nf 437 422 421\nf 421 420 440\nf 440 419 439\nf 439 418 438\nf 407 406 441\nf 408 407 441\nf 409 442 435\nf 435 430 431\nf 431 432 433\nf 442 416 430\nf 441 417 416\nf 418 417 441\nf 438 441 406\nf 405 404 439\nf 403 440 439\nf 436 440 403\nf 401 437 436\nf 401 400 437\nf 431 434 435\nf 409 408 442\nf 441 442 408\nf 441 438 418\nf 440 420 419\nf 439 404 403\nf 403 402 436\nf 421 436 437\ng lf1x\ns 1\nf 474 473 458 457\nf 476 475 456 455\nf 454 476 455\nf 475 474 457 456\nf 473 459 458\ng lf1x3\ns 3\nf 465 444 445\nf 449 467 465\nf 467 443 444\nf 469 463 464\nf 470 461 462\nf 472 469 451\nf 470 472 452\nf 459 460 471\nf 457 458 455\nf 446 447 466\nf 447 448 465\nf 465 448 449\nf 449 450 468\nf 468 450 451\nf 451 452 472\nf 452 453 470\nf 470 454 471\nf 471 455 458\nf 455 456 457\nf 459 471 458\nf 461 471 460\nf 462 472 470\nf 463 469 462\nf 464 468 469\nf 467 468 464\nf 444 465 467\nf 445 466 465\nf 446 466 445\nf 471 454 455\nf 470 453 454\nf 451 469 468\nf 469 472 462\nf 461 470 471\nf 464 443 467\nf 468 467 449\nf 465 466 447\ng lf1x2\ns 2\nf 447 478 477\nf 449 479 480\nf 479 443 464\nf 483 482 461\nf 462 484 481\nf 480 481 451\nf 454 453 482\nf 476 454 483\nf 446 445 478\nf 477 478 445\nf 479 477 444\nf 464 480 479\nf 481 480 464\nf 463 462 481\nf 482 484 462\nf 461 460 483\nf 473 483 459\nf 474 475 476\nf 473 476 483\nf 483 454 482\nf 482 453 452\nf 484 452 451\nf 451 450 480\nf 480 450 449\nf 449 448 477\nf 477 448 447\nf 478 447 446\nf 476 473 474\nf 483 460 459\nf 452 484 482\nf 451 481 484\nf 462 461 482\nf 464 463 481\nf 444 443 479\nf 477 479 449\nf 445 444 477\ng lf2x\ns 1\nf 512 511 495 494\nf 514 513 493 492\nf 516 515 491 490\nf 489 516 490\nf 515 514 492 491\nf 513 512 494 493\nf 511 496 495\ng lf2x3\ns 3\nf 506 505 498\nf 486 487 506\nf 507 500 501\nf 509 508 504\nf 510 497 498\nf 496 497 510\nf 494 495 490\nf 503 508 502\nf 508 509 501\nf 501 509 507\nf 507 506 499\nf 499 506 498\nf 498 505 510\nf 496 510 495\nf 490 491 494\nf 491 492 493\nf 510 490 495\nf 505 489 510\nf 487 488 505\nf 507 486 506\nf 509 485 486\nf 504 485 509\nf 503 504 508\nf 493 494 491\nf 510 489 490\nf 505 488 489\nf 486 507 509\nf 501 502 508\nf 499 500 507\nf 505 506 487\ng lf2x2\ns 2\nf 487 518 517\nf 519 500 499\nf 520 502 501\nf 521 519 486\nf 489 488 517\nf 516 489 522\nf 515 512 513\nf 520 504 503\nf 521 485 504\nf 486 485 521\nf 518 486 519\nf 517 488 487\nf 522 489 517\nf 511 516 522\nf 513 514 515\nf 512 515 516\nf 511 522 496\nf 522 517 498\nf 499 498 518\nf 499 518 519\nf 519 521 501\nf 501 521 520\nf 503 502 520\nf 516 511 512\nf 522 497 496\nf 498 497 522\nf 504 520 521\nf 501 500 519\nf 518 487 486\nf 498 517 518\ng lf3x\ns 1\nf 532 531 556 555\nf 534 533 554 553\nf 536 535 552 551\nf 537 536 551\nf 535 534 553 552\nf 533 532 555 554\nf 531 530 556\ng lf3x3\ns 3\nf 524 525 544\nf 543 546 544\nf 545 547 540\nf 528 548 547\nf 540 547 548\nf 538 549 550\nf 531 532 535\nf 524 546 523\nf 544 546 524\nf 545 544 525\nf 547 545 526\nf 528 547 527\nf 549 548 528\nf 530 550 549\nf 531 550 530\nf 535 536 531\nf 533 534 535\nf 531 536 537 550\nf 550 537 538\nf 538 539 548\nf 548 539 540\nf 540 541 545\nf 545 541 542\nf 544 542 543\nf 546 543 523\nf 535 532 533\nf 549 529 530\nf 548 549 538\nf 528 529 549\nf 526 527 547\nf 542 544 545\nf 525 526 545\ng lf3x2\ns 2\nf 558 526 525\nf 558 557 542\nf 560 527 526\nf 562 529 528\nf 538 562 561\nf 530 529 562\nf 554 555 552\nf 523 543 559\nf 543 542 557\nf 542 541 558\nf 558 541 540\nf 540 539 561\nf 561 539 538\nf 538 537 563\nf 563 537 551 556\nf 552 553 554\nf 556 551 552\nf 530 563 556\nf 562 563 530\nf 528 561 562\nf 528 527 560\nf 526 558 560\nf 525 557 558\nf 524 559 557\nf 524 523 559\nf 552 555 556\nf 563 562 538\nf 561 560 540\nf 560 561 528\nf 540 560 558\nf 557 559 543\nf 557 525 524\ng lf5x\ns 1\nf 571 570 600 599\nf 573 572 598 597\nf 575 574 596 595\nf 576 575 595\nf 574 573 597 596\nf 572 571 599 598\nf 570 569 600\ng lf5x3\ns 3\nf 565 566 589\nf 564 588 591\nf 583 592 591\nf 581 588 587\nf 579 589 590\nf 577 578 590\nf 594 568 569\nf 570 571 574\nf 585 592 584\nf 591 592 585\nf 564 591 586\nf 565 588 564\nf 589 587 565\nf 567 589 566\nf 568 594 567\nf 569 593 594\nf 570 593 569\nf 574 575 570\nf 572 573 574\nf 575 576 593\nf 593 577 594\nf 594 577 590\nf 590 578 579\nf 579 580 587\nf 587 580 581\nf 581 582 591\nf 591 582 583\nf 592 583 584\nf 574 571 572\nf 593 570 575\nf 594 590 567\nf 593 576 577\nf 587 589 579\nf 591 588 581\nf 585 586 591\nf 567 590 589\nf 565 587 588\ng lf5x2\ns 2\nf 603 566 565\nf 605 602 564\nf 605 606 583\nf 601 602 581\nf 604 603 579\nf 604 578 577\nf 569 568 608\nf 596 599 600\nf 585 584 606\nf 585 606 605\nf 564 586 605\nf 565 564 602\nf 565 601 603\nf 567 566 603\nf 568 567 608\nf 608 607 569\nf 569 607 600\nf 600 595 596\nf 596 597 598\nf 607 576 595\nf 608 577 607\nf 604 577 608\nf 579 578 604\nf 601 580 579\nf 581 580 601\nf 605 582 581\nf 583 582 605\nf 584 583 606\nf 598 599 596\nf 595 600 607\nf 567 604 608\nf 577 576 607\nf 579 603 601\nf 581 602 605\nf 605 586 585\nf 603 604 567\nf 602 601 565\ng fr3low\ns off\nusemtl brzskin\nf 657 660 658\nf 657 659 660\nf 653 656 654\nf 653 655 656\nf 649 652 650\nf 649 651 652\nf 645 648 646\nf 645 647 648\nf 641 644 642\nf 641 643 644\nf 637 640 638\nf 637 639 640\nf 633 636 634\nf 633 635 636\nf 629 632 630\nf 629 631 632\nf 625 628 626\nf 625 627 628\nf 621 624 622\nf 621 623 624\nf 617 620 618\nf 617 619 620\nf 613 616 614\nf 613 615 616\nf 609 612 610\nf 609 611 612\nf 609 610 611\nf 612 611 610\nf 613 614 615\nf 616 615 614\nf 617 618 619\nf 620 619 618\nf 621 622 623\nf 624 623 622\nf 625 626 627\nf 628 627 626\nf 629 630 631\nf 632 631 630\nf 633 634 635\nf 636 635 634\nf 637 638 639\nf 640 639 638\nf 641 642 643\nf 644 643 642\nf 645 646 647\nf 648 647 646\nf 649 650 651\nf 652 651 650\nf 653 654 655\nf 656 655 654\nf 657 658 659\nf 660 659 658\ng fr2low\nf 708 707 706\nf 705 706 707\nf 704 703 702\nf 701 702 703\nf 700 699 698\nf 697 698 699\nf 696 695 694\nf 693 694 695\nf 692 691 690\nf 689 690 691\nf 688 687 686\nf 685 686 687\nf 684 683 682\nf 681 682 683\nf 680 679 678\nf 677 678 679\nf 676 675 674\nf 673 674 675\nf 672 671 670\nf 669 670 671\nf 668 667 666\nf 665 666 667\nf 664 663 662\nf 661 662 663\nf 661 663 664\nf 661 664 662\nf 665 667 668\nf 665 668 666\nf 669 671 672\nf 669 672 670\nf 673 675 676\nf 673 676 674\nf 677 679 680\nf 677 680 678\nf 681 683 684\nf 681 684 682\nf 685 687 688\nf 685 688 686\nf 689 691 692\nf 689 692 690\nf 693 695 696\nf 693 696 694\nf 697 699 700\nf 697 700 698\nf 701 703 704\nf 701 704 702\nf 705 707 708\nf 705 708 706\ng fr1low\nf 770 769 772\nf 769 771 772\nf 766 765 768\nf 765 767 768\nf 762 761 764\nf 761 763 764\nf 758 757 760\nf 757 759 760\nf 754 753 756\nf 753 755 756\nf 750 749 752\nf 749 751 752\nf 746 745 748\nf 745 747 748\nf 742 741 744\nf 741 743 744\nf 738 737 740\nf 737 739 740\nf 734 733 736\nf 733 735 736\nf 730 729 732\nf 729 731 732\nf 726 725 728\nf 725 727 728\nf 722 721 724\nf 721 723 724\nf 718 717 720\nf 717 719 720\nf 714 713 716\nf 713 715 716\nf 710 709 712\nf 709 711 712\nf 709 710 711\nf 712 711 710\nf 713 714 715\nf 716 715 714\nf 717 718 719\nf 720 719 718\nf 721 722 723\nf 724 723 722\nf 725 726 727\nf 728 727 726\nf 729 730 731\nf 732 731 730\nf 733 734 735\nf 736 735 734\nf 737 738 739\nf 740 739 738\nf 741 742 743\nf 744 743 742\nf 745 746 747\nf 748 747 746\nf 749 750 751\nf 752 751 750\nf 753 754 755\nf 756 755 754\nf 757 758 759\nf 760 759 758\nf 761 762 763\nf 764 763 762\nf 765 766 767\nf 768 767 766\nf 769 770 771\nf 772 771 770\ng bud2\ns 1\nusemtl areola3\nf 786 806 788\nf 782 806 784\nf 778 806 780\nf 799 805 801\nf 795 805 797\nf 791 805 793\nf 803 805 789\nf 802 800 799 801\nf 798 796 795 797\nf 794 792 791 793\nf 790 804 803 789\nf 777 800 802 775\nf 781 796 798 779\nf 785 792 794 783\nf 773 804 790 787\nf 774 806 776\nf 786 788 787 785\nf 782 784 783 781\nf 778 780 779 777\nf 774 776 775 773\nf 776 778 777 775\nf 780 782 781 779\nf 784 786 785 783\nf 788 774 773 787\nf 775 802 804 773\nf 787 790 792 785\nf 783 794 796 781\nf 779 798 800 777\nf 801 805 803\nf 792 790 789 791\nf 796 794 793 795\nf 800 798 797 799\nf 804 802 801 803\nf 789 805 791\nf 793 805 795\nf 797 805 799\nf 776 806 778\nf 780 806 782\nf 784 806 786\nf 788 806 774\n\n# 1247 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/mario.obj",
    "content": "v 48.8 -41.5 7.3\nv 8.1 -52.8 -15.4\nv 0 -51.2 7.3\nv 48.8 -43.1 -20.3\nv 14.6 -52.8 -23.6\nv 29.3 -49.6 17.1\nv 0 -54.5 -13.8\nv 0 -44.7 30.1\nv -14.6 -54.5 -23.6\nv -48.8 -43.1 -20.3\nv -8.1 -52.8 -15.4\nv -48.8 -41.5 7.3\nv -29.3 -49.6 17.1\nv 47.2 -28.5 77.2\nv 19.5 -46.3 38.2\nv 0 -38.2 83.7\nv 66.7 -8.9 15.4\nv 0 -46.3 38.2\nv -19.5 -46.3 38.2\nv -47.2 -28.5 77.2\nv -66.7 -8.9 15.4\nv 19.5 -46.3 38.2\nv 39 -57.7 23.6\nv 0 -82.1 26.8\nv 66.7 -8.9 15.4\nv 0 -44.7 30.1\nv 0 -46.3 38.2\nv -39 -59.3 23.6\nv -19.5 -46.3 38.2\nv -66.7 -8.9 15.4\nv -19.5 -46.3 38.2\nv 0 -46.3 38.2\nv 30.9 77.2 -44.7\nv 63.4 39.8 -49.6\nv 58.5 48 -26.8\nv 0 77.2 -44.7\nv 0 67.5 -61\nv 14.6 78.9 -59.3\nv 35.8 88.6 -65.9\nv 39 57.7 -62.6\nv 27.6 69.1 -77.2\nv 0 51.2 -70.7\nv 0 43.1 -75.6\nv 39 57.7 -62.6\nv 0 43.1 -75.6\nv -58.5 48 -26.8\nv -63.4 39.8 -49.6\nv -30.9 77.2 -44.7\nv -16.3 78.9 -59.3\nv -39 57.7 -62.6\nv -35.8 88.6 -65.9\nv -27.6 69.1 -77.2\nv -39 57.7 -62.6\nv 0 -67.5 -12.2\nv 19.5 -72.4 -20.3\nv 0 -87 -12.2\nv 19.5 -91.9 -20.3\nv 22.8 -93.5 -38.2\nv 22.8 -72.4 -38.2\nv 19.5 -72.4 -52.8\nv 19.5 -93.5 -52.8\nv 0 -90.2 -64.2\nv 0 -72.4 -64.2\nv 0 -98.4 -23.6\nv 0 -100 -46.3\nv 8.1 -52.8 -15.4\nv 14.6 -52.8 -23.6\nv 21.1 -57.7 -36.6\nv 16.3 -57.7 -52.8\nv 0 -57.7 -61\nv 0 -54.5 -13.8\nv -17.9 -93.5 -20.3\nv -17.9 -72.4 -20.3\nv -22.8 -93.5 -38.2\nv -22.8 -72.4 -38.2\nv -19.5 -93.5 -52.8\nv -19.5 -72.4 -52.8\nv -14.6 -54.5 -23.6\nv -8.1 -52.8 -15.4\nv -21.1 -57.7 -36.6\nv -16.3 -57.7 -52.8\nv 65 20.3 -7.3\nv 66.7 -8.9 15.4\nv 73.2 17.1 39.8\nv 47.2 -28.5 77.2\nv 60.2 -18.7 -23.6\nv 66.7 26.8 -33.3\nv 61.8 10.6 -62.6\nv 52 -18.7 -59.3\nv 48.8 -41.5 7.3\nv 53.7 -44.7 -26.8\nv 37.4 -52.8 -59.3\nv 0 -23.6 -85.4\nv 48.8 -43.1 -20.3\nv 76.4 28.5 -46.3\nv 78 33.3 -22\nv 63.4 39.8 -49.6\nv 58.5 48 -26.8\nv 0 -51.2 -69.1\nv 14.6 -52.8 -23.6\nv 21.1 -57.7 -36.6\nv 30.9 -54.5 -43.1\nv 16.3 -57.7 -52.8\nv 0 -57.7 -61\nv 29.3 -49.6 17.1\nv 0 -44.7 30.1\nv 30.9 98.4 -33.3\nv 71.5 49.6 2.4\nv 32.5 100 -5.7\nv 30.9 70.7 20.3\nv 43.9 43.1 41.5\nv 21.1 12.2 85.4\nv 0 -38.2 83.7\nv 30.9 77.2 -44.7\nv 0 43.1 -75.6\nv 0 12.2 85.4\nv 0 43.1 41.5\nv 0 70.7 20.3\nv 0 100 -5.7\nv 0 98.4 -33.3\nv 0 77.2 -44.7\nv -73.2 15.4 39.8\nv -66.7 -8.9 15.4\nv -65 20.3 -7.3\nv -47.2 -28.5 77.2\nv -60.2 -18.7 -23.6\nv -66.7 25.2 -33.3\nv -63.4 10.6 -62.6\nv -52 -18.7 -59.3\nv -48.8 -41.5 7.3\nv -53.7 -44.7 -26.8\nv -37.4 -52.8 -59.3\nv -48.8 -43.1 -20.3\nv -76.4 28.5 -46.3\nv -78 31.7 -22\nv -63.4 39.8 -49.6\nv -58.5 48 -26.8\nv -21.1 -57.7 -36.6\nv -14.6 -54.5 -23.6\nv -30.9 -54.5 -43.1\nv -16.3 -57.7 -52.8\nv -29.3 -49.6 17.1\nv -32.5 100 -5.7\nv -71.5 49.6 2.4\nv -32.5 98.4 -33.3\nv -32.5 70.7 20.3\nv -43.9 43.1 41.5\nv -21.1 12.2 85.4\nv -30.9 77.2 -44.7\nv 6.5 -54.5 -75.6\nv 0 -56.1 -72.4\nv 0 -62.6 -61\nv 13 -62.6 -59.3\nv 13 -54.5 -75.6\nv 21.1 -57.7 -72.4\nv 26 -62.6 -54.5\nv 27.6 -56.1 -72.4\nv 34.1 -57.7 -70.7\nv 37.4 -59.3 -64.2\nv 45.5 -57.7 -59.3\nv 30.9 -62.6 -46.3\nv 50.4 -57.7 -49.6\nv 48.8 -59.3 -41.5\nv 35.8 -62.6 -35\nv -6.5 -54.5 -75.6\nv -13 -62.6 -59.3\nv -13 -54.5 -75.6\nv -21.1 -57.7 -72.4\nv -27.6 -56.1 -72.4\nv -26 -62.6 -54.5\nv -34.1 -57.7 -70.7\nv -37.4 -59.3 -64.2\nv -45.5 -59.3 -59.3\nv -30.9 -62.6 -46.3\nv -50.4 -59.3 -49.6\nv -48.8 -59.3 -41.5\nv -34.1 -62.6 -35\nusemtl rgb(0,0,0)\nf 3 2 1\nf 5 4 2\nf 4 1 2\nf 1 6 3\nf 11 3 12\nf 11 10 9\nf 12 10 11\nf 13 12 3\nusemtl rgb(226,144,144)\nf 7 2 3\nf 8 3 6\nf 3 11 7\nf 13 3 8\nusemtl rgb(255,0,0)\nf 16 15 14\nf 14 15 17\nf 16 18 15\nf 20 19 16\nf 21 19 20\nf 19 18 16\nf 24 23 22\nf 23 25 22\nf 26 23 24\nf 26 25 23\nf 24 22 27\nf 29 28 24\nf 29 30 28\nf 24 28 26\nf 28 30 26\nf 32 31 24\nusemtl rgb(128,50,8)\nf 35 34 33\nf 33 37 36\nf 38 37 33\nf 33 40 39\nf 39 40 41\nf 41 38 39\nf 37 38 41\nf 41 42 37\nf 34 40 33\nf 41 43 42\nf 43 41 44\nf 34 45 40\nf 38 33 39\nf 48 47 46\nf 36 37 48\nf 48 37 49\nf 51 50 48\nf 52 50 51\nf 51 49 52\nf 52 49 37\nf 37 42 52\nf 48 50 47\nf 42 43 52\nf 53 52 43\nf 50 45 47\nf 51 48 49\nusemtl rgb(226,144,144)\nf 56 55 54\nf 57 55 56\nf 57 58 55\nf 58 59 55\nf 58 60 59\nf 61 60 58\nf 61 62 60\nf 62 63 60\nf 65 58 64\nf 64 58 57\nf 58 65 61\nf 65 62 61\nf 64 57 56\nf 55 66 54\nf 55 67 66\nf 55 68 67\nf 59 68 55\nf 59 60 68\nf 60 69 68\nf 60 63 69\nf 63 70 69\nf 54 66 71\nf 73 72 56\nf 54 73 56\nf 73 74 72\nf 73 75 74\nf 77 76 74\nf 75 77 74\nf 77 62 76\nf 77 63 62\nf 74 65 64\nf 74 64 72\nf 76 65 74\nf 76 62 65\nf 56 72 64\nf 79 78 73\nf 79 73 54\nf 78 80 73\nf 73 80 75\nf 80 77 75\nf 80 81 77\nf 81 63 77\nf 81 70 63\nf 71 79 54\nusemtl rgb(255,0,0)\nf 84 83 82\nf 85 83 84\nusemtl rgb(226,144,144)\nf 83 86 82\nf 86 87 82\nf 86 88 87\nf 86 89 88\nf 90 86 83\nf 86 91 89\nf 91 92 89\nf 92 93 89\nf 89 93 88\nf 94 91 86\nf 90 94 86\nf 87 88 95\nf 96 87 95\nf 82 87 96\nf 95 97 96\nf 96 97 98\nf 82 96 98\nf 95 88 97\nf 92 99 93\nf 101 91 100\nf 101 102 91\nf 102 92 91\nf 92 102 103\nf 101 103 102\nf 103 99 92\nf 103 104 99\nf 100 91 94\nf 105 90 83\nf 83 106 105\nusemtl rgb(255,0,0)\nf 109 108 107\nf 109 110 108\nf 111 84 108\nf 110 111 108\nf 111 112 84\nf 113 85 112\nf 85 84 112\nf 108 82 98\nf 108 84 82\nf 98 114 107\nf 108 98 107\nusemtl rgb(226,144,144)\nf 88 93 115\nf 88 115 97\nusemtl rgb(255,0,0)\nf 112 116 113\nf 112 117 116\nf 112 111 117\nf 111 118 117\nf 111 110 118\nf 110 109 118\nf 109 119 118\nf 109 120 119\nf 109 107 120\nf 114 121 107\nf 121 120 107\nf 124 123 122\nf 122 123 125\nusemtl rgb(226,144,144)\nf 124 126 123\nf 124 127 126\nf 127 128 126\nf 128 129 126\nf 123 126 130\nf 129 131 126\nf 129 132 131\nf 129 93 132\nf 128 93 129\nf 126 131 133\nf 126 133 130\nf 134 128 127\nf 134 127 135\nf 135 127 124\nf 137 136 135\nf 136 134 135\nf 137 135 124\nf 136 128 134\nf 93 99 132\nf 139 131 138\nf 131 140 138\nf 131 132 140\nf 138 140 141\nf 132 141 140\nf 132 99 141\nf 99 104 141\nf 133 131 139\nf 123 130 142\nf 142 106 123\nusemtl rgb(255,0,0)\nf 145 144 143\nf 144 146 143\nf 144 147 146\nf 122 147 144\nf 122 148 147\nf 148 125 113\nf 148 122 125\nf 137 124 144\nf 124 122 144\nf 145 137 144\nf 149 137 145\nusemtl rgb(226,144,144)\nf 115 93 128\nf 136 115 128\nusemtl rgb(255,0,0)\nf 113 116 148\nf 116 117 148\nf 117 147 148\nf 117 118 147\nf 118 146 147\nf 118 143 146\nf 118 119 143\nf 119 120 143\nf 120 145 143\nf 145 121 149\nf 145 120 121\nusemtl rgb(128,50,8)\nf 152 151 150\nf 150 153 152\nf 150 154 153\nf 154 155 153\nf 157 156 153\nf 153 155 157\nf 157 158 156\nf 158 159 156\nf 159 160 156\nf 160 161 156\nf 160 162 161\nf 162 163 161\nf 163 164 161\nf 165 151 152\nf 152 166 165\nf 166 167 165\nf 166 168 167\nf 166 170 169\nf 169 168 166\nf 170 171 169\nf 170 172 171\nf 170 173 172\nf 170 174 173\nf 174 175 173\nf 174 176 175\nf 174 177 176\n"
  },
  {
    "path": "test/bgratutorial3d/obj/pelle.obj",
    "content": "v 3.6 97 -12.4\nv 3.5 97 -11.7\nv 3.5 97 -13.2\nv 3.2 97 -11\nv 3.2 97 -13.9\nv 2.8 97 -10.4\nv 2.8 97 -14.5\nv 2.1 97 -9.9\nv 2.1 97 -15\nv 1.4 97 -9.6\nv 1.4 97 -15.3\nv 0.7 97 -9.5\nv 0.7 97 -15.4\nv -0.1 97 -9.6\nv -0.1 97 -15.3\nv -0.8 97 -9.9\nv -0.8 97 -15\nv -1.4 97 -10.4\nv -1.4 97 -14.5\nv -1.9 97 -11\nv -1.9 97 -13.9\nv -2.2 97 -11.7\nv -2.2 97 -13.2\nv -2.3 97 -12.4\nv 3.6 0.2 -12.4\nv 3.5 0.2 -11.7\nv 3.5 0.2 -13.2\nv 3.2 0.2 -11\nv 3.2 0.2 -13.9\nv 2.8 0.2 -10.4\nv 2.8 0.2 -14.5\nv 2.1 0.2 -9.9\nv 2.1 0.2 -15\nv 1.4 0.2 -9.6\nv 1.4 0.2 -15.3\nv 0.7 0.2 -9.5\nv 0.7 0.2 -15.4\nv -0.1 0.2 -9.6\nv -0.1 0.2 -15.3\nv -0.8 0.2 -9.9\nv -0.8 0.2 -15\nv -1.4 0.2 -10.4\nv -1.4 0.2 -14.5\nv -1.9 0.2 -11\nv -1.9 0.2 -13.9\nv -2.2 0.2 -11.7\nv -2.2 0.2 -13.2\nv -2.3 0.2 -12.4\nv 14.9 94 -12.5\nv 14.9 94.1 -11.7\nv 14.9 94.1 -13.2\nv 14.9 94.4 -11\nv 14.9 94.4 -13.9\nv 14.9 94.8 -10.4\nv 14.9 94.8 -14.6\nv 14.9 95.5 -9.9\nv 14.9 95.5 -15\nv 14.9 96.2 -9.6\nv 14.9 96.2 -15.3\nv 14.9 97 -9.5\nv 14.9 97 -15.4\nv 14.9 97.8 -9.6\nv 14.9 97.8 -15.3\nv 14.9 98.5 -9.9\nv 14.9 98.5 -15\nv 14.9 99.1 -10.4\nv 14.9 99.1 -14.6\nv 14.9 99.6 -11\nv 14.9 99.6 -13.9\nv 14.9 99.9 -11.7\nv 14.9 99.9 -13.2\nv 14.9 100 -12.5\nv -14.1 94 -12.5\nv -14.1 94.1 -11.7\nv -14.1 94.1 -13.2\nv -14.1 94.4 -11\nv -14.1 94.4 -13.9\nv -14.1 94.8 -10.4\nv -14.1 94.8 -14.6\nv -14.1 95.5 -9.9\nv -14.1 95.5 -15\nv -14.1 96.2 -9.6\nv -14.1 96.2 -15.3\nv -14.1 97 -9.5\nv -14.1 97 -15.4\nv -14.1 97.8 -9.6\nv -14.1 97.8 -15.3\nv -14.1 98.5 -9.9\nv -14.1 98.5 -15\nv -14.1 99.1 -10.4\nv -14.1 99.1 -14.6\nv -14.1 99.6 -11\nv -14.1 99.6 -13.9\nv -14.1 99.9 -11.7\nv -14.1 99.9 -13.2\nv -14.1 100 -12.5\nv 14.9 94 -12.5\nv 14.9 94.1 -11.7\nv 14.9 94.1 -13.2\nv 14.9 94.4 -11\nv 14.9 94.4 -13.9\nv 14.9 94.8 -10.4\nv 14.9 94.8 -14.6\nv 14.9 95.5 -9.9\nv 14.9 95.5 -15\nv 14.9 96.2 -9.6\nv 14.9 96.2 -15.3\nv 14.9 97 -9.5\nv 14.9 97 -12.5\nv 14.9 97 -15.4\nv 14.9 97.8 -9.6\nv 14.9 97.8 -15.3\nv 14.9 98.5 -9.9\nv 14.9 98.5 -15\nv 14.9 99.1 -10.4\nv 14.9 99.1 -14.6\nv 14.9 99.6 -11\nv 14.9 99.6 -13.9\nv 14.9 99.9 -11.7\nv 14.9 99.9 -13.2\nv 14.9 100 -12.5\nv -14.1 94 -12.5\nv -14.1 94.1 -11.7\nv -14.1 94.1 -13.2\nv -14.1 94.4 -11\nv -14.1 94.4 -13.9\nv -14.1 94.8 -10.4\nv -14.1 94.8 -14.6\nv -14.1 95.5 -9.9\nv -14.1 95.5 -15\nv -14.1 96.2 -9.6\nv -14.1 96.2 -15.3\nv -14.1 97 -9.5\nv -14.1 97 -15.4\nv -14.1 97.8 -9.6\nv -14.1 97.8 -15.3\nv -14.1 98.5 -9.9\nv -14.1 98.5 -15\nv -14.1 99.1 -10.4\nv -14.1 99.1 -14.6\nv -14.1 99.6 -11\nv -14.1 99.6 -13.9\nv -14.1 99.9 -11.7\nv -14.1 99.9 -13.2\nv -14.1 100 -12.5\nv -14.1 97.2 -12.5\nv 20.9 -38.2 -12.7\nv 22.5 -99.9 17.8\nv -22.4 -100 17.7\nv -20.4 -38.4 -12.7\nv -18.2 -38.8 -16\nv 18.7 -38.7 -16\nv -14.8 -70 -6.9\nv -13.6 -71 -8.4\nv -12.3 -71.7 -9.5\nv 13.1 -71.7 -9.5\nv 14.7 -70.8 -8.5\nv 15.3 -70.1 -6.6\nv -14.2 -54.2 -15.1\nv -12.6 -54.7 -16.4\nv -10.4 -55.3 -17.3\nv 11.8 -55.3 -17.2\nv 13.2 -54.8 -16.3\nv 14.7 -53.9 -14.5\nv -14 -64.7 -11.3\nv -12.4 -65.7 -12.8\nv -10.4 -66.2 -14.1\nv 11.6 -66.2 -13.9\nv 13.3 -65.6 -12.9\nv 14.7 -64.6 -11.1\nv -13.6 -60.3 -13.4\nv -11.9 -61.3 -15.3\nv -9.9 -61.6 -15.9\nv 11.2 -61.6 -16\nv 12.9 -61.2 -15.3\nv 14.2 -60.1 -13.1\nv 22.5 -99.9 17.8\nv -22.4 -100 17.7\nv 22.5 -99.9 18.8\nv -22.5 -99.9 18.7\nv -20.4 -38.4 -12.7\nv -18.2 -38.8 -16\nv -20.4 -38.2 -11.7\nv -18.2 -38.7 -15\nv -1.9 -38.9 -16.2\nv -1.7 -38.8 -15.1\nv 3.3 -38.8 -16.2\nv 20.9 -38.2 -12.7\nv 18.7 -38.7 -16\nv 18.7 -38.5 -15.1\nv 20.9 -38 -11.8\nv 3.1 -38.8 -15.2\nv 22.5 -99.9 18.8\nv -22.5 -99.9 18.7\nv -20.4 -38.2 -11.7\nv -18.2 -38.7 -15\nv 18.7 -38.5 -15.1\nv -14.8 -69.9 -5.9\nv -13.6 -70.8 -7.5\nv -12.3 -71.5 -8.6\nv 13.1 -71.5 -8.6\nv 14.7 -70.6 -7.6\nv 15.3 -70 -5.7\nv -14.2 -54 -14.1\nv -12.6 -54.5 -15.4\nv -10.4 -55.2 -16.3\nv 11.8 -55.1 -16.3\nv 13.2 -54.6 -15.3\nv 14.7 -53.7 -13.6\nv -14 -64.6 -10.4\nv -12.4 -65.5 -11.9\nv -10.4 -66 -13.1\nv 11.6 -66 -13\nv 13.3 -65.4 -11.9\nv 14.7 -64.5 -10.2\nv -13.6 -60.1 -12.5\nv -11.9 -61.1 -14.3\nv -9.9 -61.4 -14.9\nv 11.2 -61.4 -15\nv 12.9 -61.1 -14.3\nv 14.2 -59.9 -12.2\nv 20.9 -38 -11.8\nv 3.3 -38.8 -16.2\nv 3.2 -38.8 -16.8\nv 2.9 -38.8 -17.5\nv 2.5 -38.9 -14.3\nv 2.5 -38.8 -18\nv 2 -38.9 -13.9\nv 2 -38.8 -18.4\nv 1.3 -38.9 -13.7\nv 1.3 -38.8 -18.7\nv 0.7 -38.9 -13.6\nv 0.7 -38.8 -18.8\nv 0 -38.9 -13.7\nv 0 -38.8 -18.7\nv -0.6 -38.9 -13.9\nv -0.6 -38.8 -18.4\nv -1.2 -38.9 -14.3\nv -1.2 -38.8 -18\nv -1.6 -38.8 -17.5\nv -1.8 -38.8 -16.8\nv 3.7 -25.1 -13.2\nv 3.6 -25.1 -12.5\nv 3.6 -25.1 -14\nv 3.3 -25.1 -11.8\nv 3.3 -25.1 -14.7\nv 2.8 -25.2 -11.2\nv 2.8 -25.1 -15.2\nv 2.2 -25.2 -10.7\nv 2.2 -25.1 -15.7\nv 1.5 -25.2 -10.4\nv 1.5 -25.1 -16\nv 0.8 -25.2 -10.3\nv 0.8 -25.1 -16.1\nv 0 -25.2 -10.4\nv 0 -25.1 -16\nv -0.7 -25.2 -10.7\nv -0.7 -25.1 -15.7\nv -1.3 -25.2 -11.2\nv -1.3 -25.1 -15.2\nv -1.7 -25.1 -11.8\nv -1.7 -25.1 -14.7\nv -2 -25.1 -12.5\nv -2 -25.1 -14\nv -2.1 -25.1 -13.2\nv -2.7 -18.6 -12.4\nv -2.6 -18.6 -11.6\nv -2.3 -18.6 -10.7\nv -1.7 -18.6 -10\nv -1 -18.6 -9.4\nv -0.2 -18.6 -9.1\nv 0.7 -18.6 -9\nv 1.6 -18.6 -9.2\nv 2.4 -18.6 -9.5\nv 3.1 -18.6 -10\nv 3.7 -18.6 -10.7\nv 4 -18.6 -11.6\nv 4.1 -18.6 -12.4\nv 4 -18.6 -13.3\nv 3.6 -18.6 -14.1\nv 3.1 -18.6 -14.8\nv 2.4 -18.6 -15.4\nv 1.6 -18.6 -15.7\nv 0.7 -18.6 -15.8\nv -0.2 -18.6 -15.7\nv -1 -18.6 -15.4\nv -1.7 -18.6 -14.9\nv -2.3 -18.6 -14.1\nv -2.6 -18.6 -13.3\nv 0.9 -55.1 -17.3\nv 0.8 -55.1 -16.3\nv -1.9 -38.9 -16.2\nv -1.7 -38.8 -15.1\nv 3.1 -38.8 -15.2\nv 4.1 0.2 -12.4\nv 4 0.2 -11.6\nv 4 0.2 -13.3\nv 3.6 0.1 -10.7\nv 3.6 0.2 -14.1\nv 3.1 0.1 -10\nv 3.1 0.2 -14.9\nv 2.4 0.1 -9.5\nv 2.4 0.2 -15.4\nv 1.6 0.1 -9.1\nv 1.6 0.3 -15.7\nv 0.7 0.1 -9\nv 0.7 0.3 -15.9\nv -0.2 0.1 -9.1\nv -0.2 0.3 -15.7\nv -1 0.1 -9.5\nv -1 0.2 -15.4\nv -1.7 0.1 -10\nv -1.7 0.2 -14.9\nv -2.3 0.1 -10.7\nv -2.3 0.2 -14.1\nv -2.6 0.2 -11.6\nv -2.6 0.2 -13.3\nv -2.8 0.2 -12.4\nv 4.1 0.2 -12.4\nv 4 0.2 -11.6\nv 4 0.2 -13.3\nv 3.6 0.1 -10.7\nv 3.6 0.2 -14.1\nv 3.1 0.1 -10\nv 3.1 0.2 -14.9\nv 2.4 0.1 -9.5\nv 2.4 0.2 -15.4\nv 1.6 0.1 -9.1\nv 1.6 0.3 -15.7\nv 0.7 0.1 -9\nv 0.7 0.3 -15.9\nv -0.2 0.1 -9.1\nv -0.2 0.3 -15.7\nv -1 0.1 -9.5\nv -1 0.2 -15.4\nv -1.7 0.1 -10\nv -1.7 0.2 -14.9\nv -2.3 0.1 -10.7\nv -2.3 0.2 -14.1\nv -2.6 0.2 -11.6\nv -2.6 0.2 -13.3\nv -2.8 0.2 -12.4\nv 3.6 0.2 -12.4\nv 3.5 0.2 -11.7\nv 3.5 0.2 -13.2\nv 3.2 0.2 -11\nv 3.2 0.2 -13.9\nv 2.8 0.2 -10.4\nv 2.8 0.2 -14.5\nv 2.1 0.2 -9.9\nv 2.1 0.2 -15\nv 1.4 0.2 -9.6\nv 1.4 0.2 -15.3\nv 0.7 0.2 -9.5\nv 0.7 0.2 -15.4\nv -0.1 0.2 -9.6\nv -0.1 0.2 -15.3\nv -0.8 0.2 -9.9\nv -0.8 0.2 -15\nv -1.4 0.2 -10.4\nv -1.4 0.2 -14.5\nv -1.9 0.2 -11\nv -1.9 0.2 -13.9\nv -2.2 0.2 -11.7\nv -2.2 0.2 -13.2\nv -2.3 0.2 -12.4\nusemtl rgb(204,170,136)\nf 22 24 48 46\nf 20 22 46 44\nf 18 20 44 42\nf 16 18 42 40\nf 14 16 40 38\nf 12 14 38 36\nf 10 12 36 34\nf 8 10 34 32\nf 6 8 32 30\nf 4 6 30 28\nf 2 4 28 26\nf 1 2 26 25\nf 3 1 25 27\nf 5 3 27 29\nf 7 5 29 31\nf 9 7 31 33\nf 11 9 33 35\nf 13 11 35 37\nf 15 13 37 39\nf 17 15 39 41\nf 19 17 41 43\nf 21 19 43 45\nf 23 21 45 47\nf 24 23 47 48\nf 63 61 85 87\nf 65 63 87 89\nf 67 65 89 91\nf 69 67 91 93\nf 71 69 93 95\nf 72 71 95 96\nf 70 72 96 94\nf 68 70 94 92\nf 66 68 92 90\nf 64 66 90 88\nf 62 64 88 86\nf 60 62 86 84\nf 58 60 84 82\nf 56 58 82 80\nf 54 56 80 78\nf 52 54 78 76\nf 50 52 76 74\nf 49 50 74 73\nf 51 49 73 75\nf 53 51 75 77\nf 55 53 77 79\nf 57 55 79 81\nf 59 57 81 83\nf 61 59 83 85\nf 109 110 112 114\nf 109 114 116 118\nf 109 118 120 121\nf 109 121 119 117\nf 109 117 115 113\nf 109 113 111 108\nf 109 108 106 104\nf 109 104 102 100\nf 109 100 98 97\nf 109 97 99 101\nf 109 101 103 105\nf 109 105 107 110\nf 134 132 146\nf 132 130 146\nf 130 128 146\nf 128 126 146\nf 126 124 146\nf 124 122 146\nf 122 123 146\nf 123 125 146\nf 125 127 146\nf 127 129 146\nf 129 131 146\nf 131 133 146\nf 133 135 146\nf 135 137 146\nf 137 139 146\nf 139 141 146\nf 141 143 146\nf 143 145 146\nf 145 144 146\nf 144 142 146\nf 142 140 146\nf 140 138 146\nf 138 136 146\nf 136 134 146\nusemtl rgb(204,204,204)\nf 160 159 151\nf 161 160 151\nf 163 162 152\nf 165 153 151\nf 153 149 151\nf 158 148 157\nf 164 163 152\nf 170 158 157 169\nf 156 148 149 155\nf 166 154 153 165\nf 154 149 153\nf 168 156 155 167\nf 167 155 154 166\nf 155 149 154\nf 151 149 150\nf 169 157 156 168\nf 157 148 156\nf 152 158 170\nf 152 148 158\nf 152 147 148\nf 159 171 151\nf 171 165 151\nf 160 172 171 159\nf 172 166 165 171\nf 161 173 172 160\nf 173 167 166 172\nf 174 168 167 173\nf 163 175 174 162\nf 175 169 168 174\nf 164 176 175 163\nf 176 170 169 175\nf 152 176 164\nf 152 170 176\nf 195 150 149 194\nf 177 179 180 178\nf 182 181 183 184\nf 148 147 222 193\nf 191 188 189 190\nf 196 204 205\nf 196 205 206\nf 197 207 208\nf 196 198 210\nf 202 193 203\nf 197 208 209\nf 214 202 203 215\nf 200 194 193 201\nf 210 198 199 211\nf 198 194 199\nf 212 200 201 213\nf 211 199 200 212\nf 199 194 200\nf 213 201 202 214\nf 201 193 202\nf 215 203 197\nf 203 193 197\nf 193 222 197\nf 196 216 204\nf 196 210 216\nf 204 216 217 205\nf 216 210 211 217\nf 205 217 218 206\nf 217 211 212 218\nf 218 212 213 219\nf 207 219 220 208\nf 219 213 214 220\nf 208 220 221 209\nf 220 214 215 221\nf 209 221 197\nf 221 215 197\nf 161 151 292\nf 196 206 293\nf 206 291 293\nf 294 207 197\nf 294 291 207\nf 223 162 290\nf 223 152 162\nf 290 162 174\nf 290 173 161\nf 290 174 173\nf 291 219 207\nf 291 218 219\nf 291 206 218\nf 192 190 189 187\nf 185 182 184 186\nf 292 290 161\nf 292 241 290\nf 194 196 195\nf 194 198 196\nf 238 293 291\nf 236 238 291\nf 234 236 291\nf 232 234 291\nf 230 232 291\nf 228 230 291\nf 226 228 291\nf 294 226 291\nf 225 224 290\nf 227 225 290\nf 229 227 290\nf 231 229 290\nf 233 231 290\nf 235 233 290\nf 237 235 290\nf 239 237 290\nf 240 239 290\nf 241 240 290\nf 259 261 293 238\nf 257 259 238 236\nf 255 257 236 234\nf 253 255 234 232\nf 251 253 232 230\nf 249 251 230 228\nf 247 249 228 226\nf 245 247 226 294\nf 244 242 223 224\nf 246 244 224 225\nf 248 246 225 227\nf 250 248 227 229\nf 252 250 229 231\nf 254 252 231 233\nf 256 254 233 235\nf 258 256 235 237\nf 260 258 237 239\nf 262 260 239 240\nf 264 262 240 241\nf 265 264 241 292\nf 267 266 265 263\nf 268 267 263 261\nf 269 268 261 259\nf 270 269 259 257\nf 271 270 257 255\nf 272 271 255 253\nf 273 272 253 251\nf 274 273 251 249\nf 275 274 249 247\nf 276 275 247 245\nf 277 276 245 243\nf 278 277 243 242\nf 279 278 242 244\nf 280 279 244 246\nf 281 280 246 248\nf 282 281 248 250\nf 283 282 250 252\nf 284 283 252 254\nf 285 284 254 256\nf 286 285 256 258\nf 287 286 258 260\nf 288 287 260 262\nf 289 288 262 264\nf 289 266 318 317\nf 342 340 364 366\nf 340 338 362 364\nf 338 336 360 362\nf 336 334 358 360\nf 334 332 356 358\nf 332 330 354 356\nf 330 328 352 354\nf 328 326 350 352\nf 326 324 348 350\nf 324 322 346 348\nf 322 320 344 346\nf 320 319 343 344\nf 319 321 345 343\nf 321 323 347 345\nf 323 325 349 347\nf 325 327 351 349\nf 327 329 353 351\nf 329 331 355 353\nf 331 333 357 355\nf 333 335 359 357\nf 335 337 361 359\nf 337 339 363 361\nf 339 341 365 363\nf 341 342 366 365\nf 267 316 318 266\nf 268 314 316 267\nf 269 312 314 268\nf 270 310 312 269\nf 271 308 310 270\nf 272 306 308 271\nf 273 304 306 272\nf 274 302 304 273\nf 275 300 302 274\nf 276 298 300 275\nf 277 296 298 276\nf 278 295 296 277\nf 279 297 295 278\nf 280 299 297 279\nf 281 301 299 280\nf 282 303 301 281\nf 283 305 303 282\nf 284 307 305 283\nf 285 309 307 284\nf 286 311 309 285\nf 287 313 311 286\nf 288 315 313 287\nf 289 317 315 288\nf 289 264 265 266\nf 293 261 263\nf 290 224 223\nf 243 245 294\nf 242 243 294 223\nf 292 293 263 265\n"
  },
  {
    "path": "test/bgratutorial3d/obj/roue.obj",
    "content": "v 5.8 91.3 40.6\nv 8.4 0 0\nv -8.4 0 0\nv 27.2 89.2 34.2\nv 11.3 86.2 49.8\nv 8.6 80.3 43.6\nv 5.8 81.5 41.5\nv 2.9 80.5 43.7\nv -2.9 87.9 47.7\nv -11.3 90.9 40.5\nv -5.8 86.5 50\nv -16.4 90.3 40.2\nv -20.9 81.7 36.4\nv -24.5 80.7 35.9\nv -27.2 87.3 38.9\nv -27.2 85.1 43.4\nv -28.9 76.4 38.9\nv -5.8 76.7 49.8\nv -8.6 75.3 51.7\nv -2.9 75.5 51.9\nv 2.9 82.4 56.7\nv 5.8 80.8 58.7\nv 16.4 85.6 49.4\nv 20.9 77.5 44.7\nv 28.9 78.3 34.9\nv 24.5 76.5 44.2\nv 29.5 77 34.3\nv 29.4 49.4 22\nv 8.4 46.3 20.6\nv 31.9 46.3 20.6\nv 32.7 47.1 21\nv 32.7 48.6 21.6\nv 31.9 49.4 22\nv -29.4 46.8 27\nv -31.9 46.8 27\nv -32.7 46.1 26.6\nv -32.7 44.6 25.8\nv -31.9 43.9 25.3\nv -8.4 43.9 25.3\nv -29.5 73 42.1\nv -28.9 74.2 42.9\nv 28.9 71.9 46.7\nv 27.2 80.1 52\nv 27.2 82.7 47.8\nv 11.3 73.9 66.6\nv 8.6 69.4 59.3\nv 5.8 71.1 57.6\nv 2.9 69.7 59.5\nv -2.9 76.1 65\nv -11.3 80.5 58.5\nv -5.8 74.3 66.9\nv -16.4 80 58.1\nv -20.9 72.4 52.6\nv -24.5 71.5 51.9\nv -27.2 77.3 56.1\nv -27.2 74.2 60.1\nv -28.9 66.6 53.9\nv -5.8 64.7 64.7\nv -8.6 62.9 66.2\nv -2.9 63.1 66.4\nv 2.9 68.9 72.6\nv 5.8 66.9 74.3\nv 16.4 73.4 66.1\nv 20.9 66.5 59.9\nv 28.9 69.3 50.4\nv 24.5 65.7 59.1\nv 29.5 68.2 49.5\nv 29.4 43.7 31.8\nv 8.4 41 29.8\nv 31.9 41 29.8\nv 32.7 41.7 30.3\nv 32.7 43 31.3\nv 31.9 43.7 31.8\nv -29.4 40.2 36.2\nv -31.9 40.2 36.2\nv -32.7 39.5 35.6\nv -32.7 38.3 34.5\nv -31.9 37.7 33.9\nv -8.4 37.7 33.9\nv -29.5 62.6 56.4\nv -28.9 63.7 57.3\nv 28.9 60.6 60.6\nv 27.2 67.5 67.5\nv 27.2 71 63.9\nv 11.3 58.5 80.5\nv 8.6 55.6 72.5\nv 5.8 57.6 71.1\nv 2.9 55.8 72.7\nv -2.9 60.9 79.4\nv -11.3 66.6 73.9\nv -5.8 58.7 80.8\nv -16.4 66.1 73.4\nv -20.9 59.9 66.5\nv -24.5 59.1 65.7\nv -27.2 63.9 71\nv -27.2 60.1 74.2\nv -28.9 53.9 66.6\nv -5.8 49.8 76.7\nv -8.6 47.7 77.9\nv -2.9 47.9 78.1\nv 2.9 52.3 85.3\nv 5.8 50 86.5\nv 16.4 58.1 80\nv 20.9 52.6 72.4\nv 28.9 57.3 63.7\nv 24.5 51.9 71.5\nv 29.5 56.4 62.6\nv 29.4 36.2 40.2\nv 8.4 33.9 37.7\nv 31.9 33.9 37.7\nv 32.7 34.5 38.3\nv 32.7 35.6 39.5\nv 31.9 36.2 40.2\nv -29.4 31.8 43.7\nv -31.9 31.8 43.7\nv -32.7 31.3 43\nv -32.7 30.3 41.7\nv -31.9 29.8 41\nv -8.4 29.8 41\nv -29.5 49.5 68.2\nv -28.9 50.4 69.3\nv 28.9 46.7 71.9\nv 27.2 52 80.1\nv 27.2 56.1 77.3\nv 11.3 40.5 90.9\nv 8.6 39.3 82.4\nv 5.8 41.5 81.5\nv 2.9 39.4 82.7\nv -2.9 43.1 90.3\nv -11.3 49.8 86.2\nv -5.8 40.6 91.3\nv -16.4 49.4 85.6\nv -20.9 44.7 77.5\nv -24.5 44.2 76.5\nv -27.2 47.8 82.7\nv -27.2 43.4 85.1\nv -28.9 38.9 76.4\nv -5.8 32.8 85.4\nv -8.6 30.5 86.1\nv -2.9 30.6 86.4\nv 2.9 33.4 94.3\nv 5.8 30.9 95\nv 16.4 40.2 90.3\nv 20.9 36.4 81.7\nv 28.9 42.9 74.2\nv 24.5 35.9 80.7\nv 29.5 42.1 73\nv 29.4 27 46.8\nv 8.4 25.3 43.9\nv 31.9 25.3 43.9\nv 32.7 25.8 44.6\nv 32.7 26.6 46.1\nv 31.9 27 46.8\nv -29.4 22 49.4\nv -31.9 22 49.4\nv -32.7 21.6 48.6\nv -32.7 21 47.1\nv -31.9 20.6 46.3\nv -8.4 20.6 46.3\nv -29.5 34.3 77\nv -28.9 34.9 78.3\nv 28.9 30.7 80\nv 27.2 34.2 89.2\nv 27.2 38.9 87.3\nv 11.3 20.7 97.3\nv 8.6 21.3 88.8\nv 5.8 23.7 88.4\nv 2.9 21.4 89.1\nv -2.9 23.4 97.3\nv -11.3 30.7 94.6\nv -5.8 20.8 97.7\nv -16.4 30.5 94\nv -20.9 27.7 85.1\nv -24.5 27.3 84\nv -27.2 29.5 90.8\nv -27.2 24.7 92.3\nv -28.9 22.2 82.8\nv -5.8 14.3 90.4\nv -8.6 11.9 90.5\nv -2.9 12 90.8\nv 2.9 13.1 99.2\nv 5.8 10.4 99.4\nv 16.4 20.5 96.7\nv 20.9 18.6 87.5\nv 28.9 26.5 81.5\nv 24.5 18.4 86.4\nv 29.5 26 80.1\nv 29.4 16.7 51.4\nv 8.4 15.7 48.2\nv 31.9 15.7 48.2\nv 32.7 15.9 49\nv 32.7 16.4 50.6\nv 31.9 16.7 51.4\nv -29.4 11.2 52.9\nv -31.9 11.2 52.9\nv -32.7 11.1 52\nv -32.7 10.7 50.4\nv -31.9 10.5 49.6\nv -8.4 10.5 49.6\nv -29.5 17.5 82.4\nv -28.9 17.8 83.8\nv 28.9 13.4 84.7\nv 27.2 14.9 94.3\nv 27.2 19.9 93.4\nv 11.3 0 99.5\nv 8.6 2.4 91.3\nv 5.8 4.8 91.4\nv 2.9 2.4 91.6\nv -2.9 2.6 100\nv -11.3 10.4 99\nv -5.8 0 99.9\nv -16.4 10.3 98.3\nv -20.9 9.4 89\nv -24.5 9.2 87.9\nv -27.2 10 95\nv -27.2 5 95.4\nv -28.9 4.5 85.6\nv -5.8 -4.8 91.4\nv -8.6 -7.2 91\nv -2.9 -7.2 91.3\nv 2.9 -7.8 99.7\nv 5.8 -10.4 99.4\nv 16.4 0 98.8\nv 20.9 0 89.5\nv 28.9 9 85.2\nv 24.5 0 88.4\nv 29.5 8.8 83.8\nv 29.4 5.7 53.8\nv 8.4 5.3 50.4\nv 31.9 5.3 50.4\nv 32.7 5.4 51.2\nv 32.7 5.6 52.9\nv 31.9 5.7 53.8\nv -29.4 0 54.1\nv -31.9 0 54.1\nv -32.7 0 53.2\nv -32.7 0 51.5\nv -31.9 0 50.7\nv -8.4 0 50.7\nv -29.5 0 84.3\nv -28.9 0 85.7\nv 28.9 -4.5 85.6\nv 27.2 -5 95.4\nv 27.2 0 95.5\nv 11.3 -20.7 97.3\nv 8.6 -16.6 89.8\nv 5.8 -14.3 90.4\nv 2.9 -16.7 90.1\nv -2.9 -18.2 98.4\nv -11.3 -10.4 99\nv -5.8 -20.8 97.7\nv -16.4 -10.3 98.3\nv -20.9 -9.4 89\nv -24.5 -9.2 87.9\nv -27.2 -10 95\nv -27.2 -14.9 94.3\nv -28.9 -13.4 84.7\nv -5.8 -23.7 88.4\nv -8.6 -25.9 87.6\nv -2.9 -26 87.8\nv 2.9 -28.4 95.9\nv 5.8 -30.9 95\nv 16.4 -20.5 96.7\nv 20.9 -18.6 87.5\nv 28.9 -9 85.2\nv 24.5 -18.4 86.4\nv 29.5 -8.8 83.8\nv 29.4 -5.7 53.8\nv 8.4 -5.3 50.4\nv 31.9 -5.3 50.4\nv 32.7 -5.4 51.2\nv 32.7 -5.6 52.9\nv 31.9 -5.7 53.8\nv -29.4 -11.2 52.9\nv -31.9 -11.2 52.9\nv -32.7 -11.1 52\nv -32.7 -10.7 50.4\nv -31.9 -10.5 49.6\nv -8.4 -10.5 49.6\nv -29.5 -17.5 82.4\nv -28.9 -17.8 83.8\nv 28.9 -22.2 82.8\nv 27.2 -24.7 92.3\nv 27.2 -19.9 93.4\nv 11.3 -40.5 90.9\nv 8.6 -34.9 84.4\nv 5.8 -32.8 85.4\nv 2.9 -35.1 84.6\nv -2.9 -38.3 92.4\nv -11.3 -30.7 94.6\nv -5.8 -40.6 91.3\nv -16.4 -30.5 94\nv -20.9 -27.7 85.1\nv -24.5 -27.3 84\nv -27.2 -29.5 90.8\nv -27.2 -34.2 89.2\nv -28.9 -30.7 80\nv -5.8 -41.5 81.5\nv -8.6 -43.6 80.3\nv -2.9 -43.7 80.5\nv 2.9 -47.7 87.9\nv 5.8 -50 86.5\nv 16.4 -40.2 90.3\nv 20.9 -36.4 81.7\nv 28.9 -26.5 81.5\nv 24.5 -35.9 80.7\nv 29.5 -26 80.1\nv 29.4 -16.7 51.4\nv 8.4 -15.7 48.2\nv 31.9 -15.7 48.2\nv 32.7 -15.9 49\nv 32.7 -16.4 50.6\nv 31.9 -16.7 51.4\nv -29.4 -22 49.4\nv -31.9 -22 49.4\nv -32.7 -21.6 48.6\nv -32.7 -21 47.1\nv -31.9 -20.6 46.3\nv -8.4 -20.6 46.3\nv -29.5 -34.3 77\nv -28.9 -34.9 78.3\nv 28.9 -38.9 76.4\nv 27.2 -43.4 85.1\nv 27.2 -38.9 87.3\nv 11.3 -58.5 80.5\nv 8.6 -51.7 75.3\nv 5.8 -49.8 76.7\nv 2.9 -51.9 75.5\nv -2.9 -56.7 82.4\nv -11.3 -49.8 86.2\nv -5.8 -58.7 80.8\nv -16.4 -49.4 85.6\nv -20.9 -44.7 77.5\nv -24.5 -44.2 76.5\nv -27.2 -47.8 82.7\nv -27.2 -52 80.1\nv -28.9 -46.7 71.9\nv -5.8 -57.6 71.1\nv -8.6 -59.3 69.4\nv -2.9 -59.5 69.7\nv 2.9 -65 76.1\nv 5.8 -66.9 74.3\nv 16.4 -58.1 80\nv 20.9 -52.6 72.4\nv 28.9 -42.9 74.2\nv 24.5 -51.9 71.5\nv 29.5 -42.1 73\nv 29.4 -27 46.8\nv 8.4 -25.3 43.9\nv 31.9 -25.3 43.9\nv 32.7 -25.8 44.6\nv 32.7 -26.6 46.1\nv 31.9 -27 46.8\nv -29.4 -31.8 43.7\nv -31.9 -31.8 43.7\nv -32.7 -31.3 43\nv -32.7 -30.3 41.7\nv -31.9 -29.8 41\nv -8.4 -29.8 41\nv -29.5 -49.5 68.2\nv -28.9 -50.4 69.3\nv 28.9 -53.9 66.6\nv 27.2 -60.1 74.2\nv 27.2 -56.1 77.3\nv 11.3 -73.9 66.6\nv 8.6 -66.2 62.9\nv 5.8 -64.7 64.7\nv 2.9 -66.4 63.1\nv -2.9 -72.6 68.9\nv -11.3 -66.6 73.9\nv -5.8 -74.3 66.9\nv -16.4 -66.1 73.4\nv -20.9 -59.9 66.5\nv -24.5 -59.1 65.7\nv -27.2 -63.9 71\nv -27.2 -67.5 67.5\nv -28.9 -60.6 60.6\nv -5.8 -71.1 57.6\nv -8.6 -72.5 55.6\nv -2.9 -72.7 55.8\nv 2.9 -79.4 60.9\nv 5.8 -80.8 58.7\nv 16.4 -73.4 66.1\nv 20.9 -66.5 59.9\nv 28.9 -57.3 63.7\nv 24.5 -65.7 59.1\nv 29.5 -56.4 62.6\nv 29.4 -36.2 40.2\nv 8.4 -33.9 37.7\nv 31.9 -33.9 37.7\nv 32.7 -34.5 38.3\nv 32.7 -35.6 39.5\nv 31.9 -36.2 40.2\nv -29.4 -40.2 36.2\nv -31.9 -40.2 36.2\nv -32.7 -39.5 35.6\nv -32.7 -38.3 34.5\nv -31.9 -37.7 33.9\nv -8.4 -37.7 33.9\nv -29.5 -62.6 56.4\nv -28.9 -63.7 57.3\nv 28.9 -66.6 53.9\nv 27.2 -74.2 60.1\nv 27.2 -71 63.9\nv 11.3 -86.2 49.8\nv 8.6 -77.9 47.7\nv 5.8 -76.7 49.8\nv 2.9 -78.1 47.9\nv -2.9 -85.3 52.3\nv -11.3 -80.5 58.5\nv -5.8 -86.5 50\nv -16.4 -80 58.1\nv -20.9 -72.4 52.6\nv -24.5 -71.5 51.9\nv -27.2 -77.3 56.1\nv -27.2 -80.1 52\nv -28.9 -71.9 46.7\nv -5.8 -81.5 41.5\nv -8.6 -82.4 39.3\nv -2.9 -82.7 39.4\nv 2.9 -90.3 43.1\nv 5.8 -91.3 40.6\nv 16.4 -85.6 49.4\nv 20.9 -77.5 44.7\nv 28.9 -69.3 50.4\nv 24.5 -76.5 44.2\nv 29.5 -68.2 49.5\nv 29.4 -43.7 31.8\nv 8.4 -41 29.8\nv 31.9 -41 29.8\nv 32.7 -41.7 30.3\nv 32.7 -43 31.3\nv 31.9 -43.7 31.8\nv -29.4 -46.8 27\nv -31.9 -46.8 27\nv -32.7 -46.1 26.6\nv -32.7 -44.6 25.8\nv -31.9 -43.9 25.3\nv -8.4 -43.9 25.3\nv -29.5 -73 42.1\nv -28.9 -74.2 42.9\nv 28.9 -76.4 38.9\nv 27.2 -85.1 43.4\nv 27.2 -82.7 47.8\nv 11.3 -94.6 30.7\nv 8.6 -86.1 30.5\nv 5.8 -85.4 32.8\nv 2.9 -86.4 30.6\nv -2.9 -94.3 33.4\nv -11.3 -90.9 40.5\nv -5.8 -95 30.9\nv -16.4 -90.3 40.2\nv -20.9 -81.7 36.4\nv -24.5 -80.7 35.9\nv -27.2 -87.3 38.9\nv -27.2 -89.2 34.2\nv -28.9 -80 30.7\nv -5.8 -88.4 23.7\nv -8.6 -88.8 21.3\nv -2.9 -89.1 21.4\nv 2.9 -97.3 23.4\nv 5.8 -97.7 20.8\nv 16.4 -94 30.5\nv 20.9 -85.1 27.7\nv 28.9 -78.3 34.9\nv 24.5 -84 27.3\nv 29.5 -77 34.3\nv 29.4 -49.4 22\nv 8.4 -46.3 20.6\nv 31.9 -46.3 20.6\nv 32.7 -47.1 21\nv 32.7 -48.6 21.6\nv 31.9 -49.4 22\nv -29.4 -51.4 16.7\nv -31.9 -51.4 16.7\nv -32.7 -50.6 16.4\nv -32.7 -49 15.9\nv -31.9 -48.2 15.7\nv -8.4 -48.2 15.7\nv -29.5 -80.1 26\nv -28.9 -81.5 26.5\nv 28.9 -82.8 22.2\nv 27.2 -92.3 24.7\nv 27.2 -90.8 29.5\nv 11.3 -99 10.4\nv 8.6 -90.5 11.9\nv 5.8 -90.4 14.3\nv 2.9 -90.8 12\nv -2.9 -99.2 13.1\nv -11.3 -97.3 20.7\nv -5.8 -99.4 10.4\nv -16.4 -96.7 20.5\nv -20.9 -87.5 18.6\nv -24.5 -86.4 18.4\nv -27.2 -93.4 19.9\nv -27.2 -94.3 14.9\nv -28.9 -84.7 13.4\nv -5.8 -91.4 4.8\nv -8.6 -91.3 2.4\nv -2.9 -91.6 2.4\nv 2.9 -100 2.6\nv 5.8 -99.9 0\nv 16.4 -98.3 10.3\nv 20.9 -89 9.4\nv 28.9 -83.8 17.8\nv 24.5 -87.9 9.2\nv 29.5 -82.4 17.5\nv 29.4 -52.9 11.2\nv 8.4 -49.6 10.5\nv 31.9 -49.6 10.5\nv 32.7 -50.4 10.7\nv 32.7 -52 11.1\nv 31.9 -52.9 11.2\nv -29.4 -53.8 5.7\nv -31.9 -53.8 5.7\nv -32.7 -52.9 5.6\nv -32.7 -51.2 5.4\nv -31.9 -50.4 5.3\nv -8.4 -50.4 5.3\nv -29.5 -83.8 8.8\nv -28.9 -85.2 9\nv 28.9 -85.6 4.5\nv 27.2 -95.4 5\nv 27.2 -95 10\nv 11.3 -99 -10.4\nv 8.6 -91 -7.2\nv 5.8 -91.4 -4.8\nv 2.9 -91.3 -7.2\nv -2.9 -99.7 -7.8\nv -11.3 -99.5 0\nv -5.8 -99.4 -10.4\nv -16.4 -98.8 0\nv -20.9 -89.5 0\nv -24.5 -88.4 0\nv -27.2 -95.5 0\nv -27.2 -95.4 -5\nv -28.9 -85.6 -4.5\nv -5.8 -90.4 -14.3\nv -8.6 -89.8 -16.6\nv -2.9 -90.1 -16.7\nv 2.9 -98.4 -18.2\nv 5.8 -97.7 -20.8\nv 16.4 -98.3 -10.3\nv 20.9 -89 -9.4\nv 28.9 -85.7 0\nv 24.5 -87.9 -9.2\nv 29.5 -84.3 0\nv 29.4 -54.1 0\nv 8.4 -50.7 0\nv 31.9 -50.7 0\nv 32.7 -51.5 0\nv 32.7 -53.2 0\nv 31.9 -54.1 0\nv -29.4 -53.8 -5.7\nv -31.9 -53.8 -5.7\nv -32.7 -52.9 -5.6\nv -32.7 -51.2 -5.4\nv -31.9 -50.4 -5.3\nv -8.4 -50.4 -5.3\nv -29.5 -83.8 -8.8\nv -28.9 -85.2 -9\nv 28.9 -84.7 -13.4\nv 27.2 -94.3 -14.9\nv 27.2 -95 -10\nv 11.3 -94.6 -30.7\nv 8.6 -87.6 -25.9\nv 5.8 -88.4 -23.7\nv 2.9 -87.8 -26\nv -2.9 -95.9 -28.4\nv -11.3 -97.3 -20.7\nv -5.8 -95 -30.9\nv -16.4 -96.7 -20.5\nv -20.9 -87.5 -18.6\nv -24.5 -86.4 -18.4\nv -27.2 -93.4 -19.9\nv -27.2 -92.3 -24.7\nv -28.9 -82.8 -22.2\nv -5.8 -85.4 -32.8\nv -8.6 -84.4 -34.9\nv -2.9 -84.6 -35.1\nv 2.9 -92.4 -38.3\nv 5.8 -91.3 -40.6\nv 16.4 -94 -30.5\nv 20.9 -85.1 -27.7\nv 28.9 -83.8 -17.8\nv 24.5 -84 -27.3\nv 29.5 -82.4 -17.5\nv 29.4 -52.9 -11.2\nv 8.4 -49.6 -10.5\nv 31.9 -49.6 -10.5\nv 32.7 -50.4 -10.7\nv 32.7 -52 -11.1\nv 31.9 -52.9 -11.2\nv -29.4 -51.4 -16.7\nv -31.9 -51.4 -16.7\nv -32.7 -50.6 -16.4\nv -32.7 -49 -15.9\nv -31.9 -48.2 -15.7\nv -8.4 -48.2 -15.7\nv -29.5 -80.1 -26\nv -28.9 -81.5 -26.5\nv 28.9 -80 -30.7\nv 27.2 -89.2 -34.2\nv 27.2 -90.8 -29.5\nv 11.3 -86.2 -49.8\nv 8.6 -80.3 -43.6\nv 5.8 -81.5 -41.5\nv 2.9 -80.5 -43.7\nv -2.9 -87.9 -47.7\nv -11.3 -90.9 -40.5\nv -5.8 -86.5 -50\nv -16.4 -90.3 -40.2\nv -20.9 -81.7 -36.4\nv -24.5 -80.7 -35.9\nv -27.2 -87.3 -38.9\nv -27.2 -85.1 -43.4\nv -28.9 -76.4 -38.9\nv -5.8 -76.7 -49.8\nv -8.6 -75.3 -51.7\nv -2.9 -75.5 -51.9\nv 2.9 -82.4 -56.7\nv 5.8 -80.8 -58.7\nv 16.4 -85.6 -49.4\nv 20.9 -77.5 -44.7\nv 28.9 -78.3 -34.9\nv 24.5 -76.5 -44.2\nv 29.5 -77 -34.3\nv 29.4 -49.4 -22\nv 8.4 -46.3 -20.6\nv 31.9 -46.3 -20.6\nv 32.7 -47.1 -21\nv 32.7 -48.6 -21.6\nv 31.9 -49.4 -22\nv -29.4 -46.8 -27\nv -31.9 -46.8 -27\nv -32.7 -46.1 -26.6\nv -32.7 -44.6 -25.8\nv -31.9 -43.9 -25.3\nv -8.4 -43.9 -25.3\nv -29.5 -73 -42.1\nv -28.9 -74.2 -42.9\nv 28.9 -71.9 -46.7\nv 27.2 -80.1 -52\nv 27.2 -82.7 -47.8\nv 11.3 -73.9 -66.6\nv 8.6 -69.4 -59.3\nv 5.8 -71.1 -57.6\nv 2.9 -69.7 -59.5\nv -2.9 -76.1 -65\nv -11.3 -80.5 -58.5\nv -5.8 -74.3 -66.9\nv -16.4 -80 -58.1\nv -20.9 -72.4 -52.6\nv -24.5 -71.5 -51.9\nv -27.2 -77.3 -56.1\nv -27.2 -74.2 -60.1\nv -28.9 -66.6 -53.9\nv -5.8 -64.7 -64.7\nv -8.6 -62.9 -66.2\nv -2.9 -63.1 -66.4\nv 2.9 -68.9 -72.6\nv 5.8 -66.9 -74.3\nv 16.4 -73.4 -66.1\nv 20.9 -66.5 -59.9\nv 28.9 -69.3 -50.4\nv 24.5 -65.7 -59.1\nv 29.5 -68.2 -49.5\nv 29.4 -43.7 -31.8\nv 8.4 -41 -29.8\nv 31.9 -41 -29.8\nv 32.7 -41.7 -30.3\nv 32.7 -43 -31.3\nv 31.9 -43.7 -31.8\nv -29.4 -40.2 -36.2\nv -31.9 -40.2 -36.2\nv -32.7 -39.5 -35.6\nv -32.7 -38.3 -34.5\nv -31.9 -37.7 -33.9\nv -8.4 -37.7 -33.9\nv -29.5 -62.6 -56.4\nv -28.9 -63.7 -57.3\nv 28.9 -60.6 -60.6\nv 27.2 -67.5 -67.5\nv 27.2 -71 -63.9\nv 11.3 -58.5 -80.5\nv 8.6 -55.6 -72.5\nv 5.8 -57.6 -71.1\nv 2.9 -55.8 -72.7\nv -2.9 -60.9 -79.4\nv -11.3 -66.6 -73.9\nv -5.8 -58.7 -80.8\nv -16.4 -66.1 -73.4\nv -20.9 -59.9 -66.5\nv -24.5 -59.1 -65.7\nv -27.2 -63.9 -71\nv -27.2 -60.1 -74.2\nv -28.9 -53.9 -66.6\nv -5.8 -49.8 -76.7\nv -8.6 -47.7 -77.9\nv -2.9 -47.9 -78.1\nv 2.9 -52.3 -85.3\nv 5.8 -50 -86.5\nv 16.4 -58.1 -80\nv 20.9 -52.6 -72.4\nv 28.9 -57.3 -63.7\nv 24.5 -51.9 -71.5\nv 29.5 -56.4 -62.6\nv 29.4 -36.2 -40.2\nv 8.4 -33.9 -37.7\nv 31.9 -33.9 -37.7\nv 32.7 -34.5 -38.3\nv 32.7 -35.6 -39.5\nv 31.9 -36.2 -40.2\nv -29.4 -31.8 -43.7\nv -31.9 -31.8 -43.7\nv -32.7 -31.3 -43\nv -32.7 -30.3 -41.7\nv -31.9 -29.8 -41\nv -8.4 -29.8 -41\nv -29.5 -49.5 -68.2\nv -28.9 -50.4 -69.3\nv 28.9 -46.7 -71.9\nv 27.2 -52 -80.1\nv 27.2 -56.1 -77.3\nv 11.3 -40.5 -90.9\nv 8.6 -39.3 -82.4\nv 5.8 -41.5 -81.5\nv 2.9 -39.4 -82.7\nv -2.9 -43.1 -90.3\nv -11.3 -49.8 -86.2\nv -5.8 -40.6 -91.3\nv -16.4 -49.4 -85.6\nv -20.9 -44.7 -77.5\nv -24.5 -44.2 -76.5\nv -27.2 -47.8 -82.7\nv -27.2 -43.4 -85.1\nv -28.9 -38.9 -76.4\nv -5.8 -32.8 -85.4\nv -8.6 -30.5 -86.1\nv -2.9 -30.6 -86.4\nv 2.9 -33.4 -94.3\nv 5.8 -30.9 -95\nv 16.4 -40.2 -90.3\nv 20.9 -36.4 -81.7\nv 28.9 -42.9 -74.2\nv 24.5 -35.9 -80.7\nv 29.5 -42.1 -73\nv 29.4 -27 -46.8\nv 8.4 -25.3 -43.9\nv 31.9 -25.3 -43.9\nv 32.7 -25.8 -44.6\nv 32.7 -26.6 -46.1\nv 31.9 -27 -46.8\nv -29.4 -22 -49.4\nv -31.9 -22 -49.4\nv -32.7 -21.6 -48.6\nv -32.7 -21 -47.1\nv -31.9 -20.6 -46.3\nv -8.4 -20.6 -46.3\nv -29.5 -34.3 -77\nv -28.9 -34.9 -78.3\nv 28.9 -30.7 -80\nv 27.2 -34.2 -89.2\nv 27.2 -38.9 -87.3\nv 11.3 -20.7 -97.3\nv 8.6 -21.3 -88.8\nv 5.8 -23.7 -88.4\nv 2.9 -21.4 -89.1\nv -2.9 -23.4 -97.3\nv -11.3 -30.7 -94.6\nv -5.8 -20.8 -97.7\nv -16.4 -30.5 -94\nv -20.9 -27.7 -85.1\nv -24.5 -27.3 -84\nv -27.2 -29.5 -90.8\nv -27.2 -24.7 -92.3\nv -28.9 -22.2 -82.8\nv -5.8 -14.3 -90.4\nv -8.6 -11.9 -90.5\nv -2.9 -12 -90.8\nv 2.9 -13.1 -99.2\nv 5.8 -10.4 -99.4\nv 16.4 -20.5 -96.7\nv 20.9 -18.6 -87.5\nv 28.9 -26.5 -81.5\nv 24.5 -18.4 -86.4\nv 29.5 -26 -80.1\nv 29.4 -16.7 -51.4\nv 8.4 -15.7 -48.2\nv 31.9 -15.7 -48.2\nv 32.7 -15.9 -49\nv 32.7 -16.4 -50.6\nv 31.9 -16.7 -51.4\nv -29.4 -11.2 -52.9\nv -31.9 -11.2 -52.9\nv -32.7 -11.1 -52\nv -32.7 -10.7 -50.4\nv -31.9 -10.5 -49.6\nv -8.4 -10.5 -49.6\nv -29.5 -17.5 -82.4\nv -28.9 -17.8 -83.8\nv 28.9 -13.4 -84.7\nv 27.2 -14.9 -94.3\nv 27.2 -19.9 -93.4\nv 11.3 0 -99.5\nv 8.6 -2.4 -91.3\nv 5.8 -4.8 -91.4\nv 2.9 -2.4 -91.6\nv -2.9 -2.6 -100\nv -11.3 -10.4 -99\nv -5.8 0 -99.9\nv -16.4 -10.3 -98.3\nv -20.9 -9.4 -89\nv -24.5 -9.2 -87.9\nv -27.2 -10 -95\nv -27.2 -5 -95.4\nv -28.9 -4.5 -85.6\nv -5.8 4.8 -91.4\nv -8.6 7.2 -91\nv -2.9 7.2 -91.3\nv 2.9 7.8 -99.7\nv 5.8 10.4 -99.4\nv 16.4 0 -98.8\nv 20.9 0 -89.5\nv 28.9 -9 -85.2\nv 24.5 0 -88.4\nv 29.5 -8.8 -83.8\nv 29.4 -5.7 -53.8\nv 8.4 -5.3 -50.4\nv 31.9 -5.3 -50.4\nv 32.7 -5.4 -51.2\nv 32.7 -5.6 -52.9\nv 31.9 -5.7 -53.8\nv -29.4 0 -54.1\nv -31.9 0 -54.1\nv -32.7 0 -53.2\nv -32.7 0 -51.5\nv -31.9 0 -50.7\nv -8.4 0 -50.7\nv -29.5 0 -84.3\nv -28.9 0 -85.7\nv 28.9 4.5 -85.6\nv 27.2 5 -95.4\nv 27.2 0 -95.5\nv 11.3 20.7 -97.3\nv 8.6 16.6 -89.8\nv 5.8 14.3 -90.4\nv 2.9 16.7 -90.1\nv -2.9 18.2 -98.4\nv -11.3 10.4 -99\nv -5.8 20.8 -97.7\nv -16.4 10.3 -98.3\nv -20.9 9.4 -89\nv -24.5 9.2 -87.9\nv -27.2 10 -95\nv -27.2 14.9 -94.3\nv -28.9 13.4 -84.7\nv -5.8 23.7 -88.4\nv -8.6 25.9 -87.6\nv -2.9 26 -87.8\nv 2.9 28.4 -95.9\nv 5.8 30.9 -95\nv 16.4 20.5 -96.7\nv 20.9 18.6 -87.5\nv 28.9 9 -85.2\nv 24.5 18.4 -86.4\nv 29.5 8.8 -83.8\nv 29.4 5.7 -53.8\nv 8.4 5.3 -50.4\nv 31.9 5.3 -50.4\nv 32.7 5.4 -51.2\nv 32.7 5.6 -52.9\nv 31.9 5.7 -53.8\nv -29.4 11.2 -52.9\nv -31.9 11.2 -52.9\nv -32.7 11.1 -52\nv -32.7 10.7 -50.4\nv -31.9 10.5 -49.6\nv -8.4 10.5 -49.6\nv -29.5 17.5 -82.4\nv -28.9 17.8 -83.8\nv 28.9 22.2 -82.8\nv 27.2 24.7 -92.3\nv 27.2 19.9 -93.4\nv 11.3 40.5 -90.9\nv 8.6 34.9 -84.4\nv 5.8 32.8 -85.4\nv 2.9 35.1 -84.6\nv -2.9 38.3 -92.4\nv -11.3 30.7 -94.6\nv -5.8 40.6 -91.3\nv -16.4 30.5 -94\nv -20.9 27.7 -85.1\nv -24.5 27.3 -84\nv -27.2 29.5 -90.8\nv -27.2 34.2 -89.2\nv -28.9 30.7 -80\nv -5.8 41.5 -81.5\nv -8.6 43.6 -80.3\nv -2.9 43.7 -80.5\nv 2.9 47.7 -87.9\nv 5.8 50 -86.5\nv 16.4 40.2 -90.3\nv 20.9 36.4 -81.7\nv 28.9 26.5 -81.5\nv 24.5 35.9 -80.7\nv 29.5 26 -80.1\nv 29.4 16.7 -51.4\nv 8.4 15.7 -48.2\nv 31.9 15.7 -48.2\nv 32.7 15.9 -49\nv 32.7 16.4 -50.6\nv 31.9 16.7 -51.4\nv -29.4 22 -49.4\nv -31.9 22 -49.4\nv -32.7 21.6 -48.6\nv -32.7 21 -47.1\nv -31.9 20.6 -46.3\nv -8.4 20.6 -46.3\nv -29.5 34.3 -77\nv -28.9 34.9 -78.3\nv 28.9 38.9 -76.4\nv 27.2 43.4 -85.1\nv 27.2 38.9 -87.3\nv 11.3 58.5 -80.5\nv 8.6 51.7 -75.3\nv 5.8 49.8 -76.7\nv 2.9 51.9 -75.5\nv -2.9 56.7 -82.4\nv -11.3 49.8 -86.2\nv -5.8 58.7 -80.8\nv -16.4 49.4 -85.6\nv -20.9 44.7 -77.5\nv -24.5 44.2 -76.5\nv -27.2 47.8 -82.7\nv -27.2 52 -80.1\nv -28.9 46.7 -71.9\nv -5.8 57.6 -71.1\nv -8.6 59.3 -69.4\nv -2.9 59.5 -69.7\nv 2.9 65 -76.1\nv 5.8 66.9 -74.3\nv 16.4 58.1 -80\nv 20.9 52.6 -72.4\nv 28.9 42.9 -74.2\nv 24.5 51.9 -71.5\nv 29.5 42.1 -73\nv 29.4 27 -46.8\nv 8.4 25.3 -43.9\nv 31.9 25.3 -43.9\nv 32.7 25.8 -44.6\nv 32.7 26.6 -46.1\nv 31.9 27 -46.8\nv -29.4 31.8 -43.7\nv -31.9 31.8 -43.7\nv -32.7 31.3 -43\nv -32.7 30.3 -41.7\nv -31.9 29.8 -41\nv -8.4 29.8 -41\nv -29.5 49.5 -68.2\nv -28.9 50.4 -69.3\nv 28.9 53.9 -66.6\nv 27.2 60.1 -74.2\nv 27.2 56.1 -77.3\nv 11.3 73.9 -66.6\nv 8.6 66.2 -62.9\nv 5.8 64.7 -64.7\nv 2.9 66.4 -63.1\nv -2.9 72.6 -68.9\nv -11.3 66.6 -73.9\nv -5.8 74.3 -66.9\nv -16.4 66.1 -73.4\nv -20.9 59.9 -66.5\nv -24.5 59.1 -65.7\nv -27.2 63.9 -71\nv -27.2 67.5 -67.5\nv -28.9 60.6 -60.6\nv -5.8 71.1 -57.6\nv -8.6 72.5 -55.6\nv -2.9 72.7 -55.8\nv 2.9 79.4 -60.9\nv 5.8 80.8 -58.7\nv 16.4 73.4 -66.1\nv 20.9 66.5 -59.9\nv 28.9 57.3 -63.7\nv 24.5 65.7 -59.1\nv 29.5 56.4 -62.6\nv 29.4 36.2 -40.2\nv 8.4 33.9 -37.7\nv 31.9 33.9 -37.7\nv 32.7 34.5 -38.3\nv 32.7 35.6 -39.5\nv 31.9 36.2 -40.2\nv -29.4 40.2 -36.2\nv -31.9 40.2 -36.2\nv -32.7 39.5 -35.6\nv -32.7 38.3 -34.5\nv -31.9 37.7 -33.9\nv -8.4 37.7 -33.9\nv -29.5 62.6 -56.4\nv -28.9 63.7 -57.3\nv 28.9 66.6 -53.9\nv 27.2 74.2 -60.1\nv 27.2 71 -63.9\nv 11.3 86.2 -49.8\nv 8.6 77.9 -47.7\nv 5.8 76.7 -49.8\nv 2.9 78.1 -47.9\nv -2.9 85.3 -52.3\nv -11.3 80.5 -58.5\nv -5.8 86.5 -50\nv -16.4 80 -58.1\nv -20.9 72.4 -52.6\nv -24.5 71.5 -51.9\nv -27.2 77.3 -56.1\nv -27.2 80.1 -52\nv -28.9 71.9 -46.7\nv -5.8 81.5 -41.5\nv -8.6 82.4 -39.3\nv -2.9 82.7 -39.4\nv 2.9 90.3 -43.1\nv 5.8 91.3 -40.6\nv 16.4 85.6 -49.4\nv 20.9 77.5 -44.7\nv 28.9 69.3 -50.4\nv 24.5 76.5 -44.2\nv 29.5 68.2 -49.5\nv 29.4 43.7 -31.8\nv 8.4 41 -29.8\nv 31.9 41 -29.8\nv 32.7 41.7 -30.3\nv 32.7 43 -31.3\nv 31.9 43.7 -31.8\nv -29.4 46.8 -27\nv -31.9 46.8 -27\nv -32.7 46.1 -26.6\nv -32.7 44.6 -25.8\nv -31.9 43.9 -25.3\nv -8.4 43.9 -25.3\nv -29.5 73 -42.1\nv -28.9 74.2 -42.9\nv 28.9 76.4 -38.9\nv 27.2 85.1 -43.4\nv 27.2 82.7 -47.8\nv 11.3 94.6 -30.7\nv 8.6 86.1 -30.5\nv 5.8 85.4 -32.8\nv 2.9 86.4 -30.6\nv -2.9 94.3 -33.4\nv -11.3 90.9 -40.5\nv -5.8 95 -30.9\nv -16.4 90.3 -40.2\nv -20.9 81.7 -36.4\nv -24.5 80.7 -35.9\nv -27.2 87.3 -38.9\nv -27.2 89.2 -34.2\nv -28.9 80 -30.7\nv -5.8 88.4 -23.7\nv -8.6 88.8 -21.3\nv -2.9 89.1 -21.4\nv 2.9 97.3 -23.4\nv 5.8 97.7 -20.8\nv 16.4 94 -30.5\nv 20.9 85.1 -27.7\nv 28.9 78.3 -34.9\nv 24.5 84 -27.3\nv 29.5 77 -34.3\nv 29.4 49.4 -22\nv 8.4 46.3 -20.6\nv 31.9 46.3 -20.6\nv 32.7 47.1 -21\nv 32.7 48.6 -21.6\nv 31.9 49.4 -22\nv -29.4 51.4 -16.7\nv -31.9 51.4 -16.7\nv -32.7 50.6 -16.4\nv -32.7 49 -15.9\nv -31.9 48.2 -15.7\nv -8.4 48.2 -15.7\nv -29.5 80.1 -26\nv -28.9 81.5 -26.5\nv 28.9 82.8 -22.2\nv 27.2 92.3 -24.7\nv 27.2 90.8 -29.5\nv 11.3 99 -10.4\nv 8.6 90.5 -11.9\nv 5.8 90.4 -14.3\nv 2.9 90.8 -12\nv -2.9 99.2 -13.1\nv -11.3 97.3 -20.7\nv -5.8 99.4 -10.4\nv -16.4 96.7 -20.5\nv -20.9 87.5 -18.6\nv -24.5 86.4 -18.4\nv -27.2 93.4 -19.9\nv -27.2 94.3 -14.9\nv -28.9 84.7 -13.4\nv -5.8 91.4 -4.8\nv -8.6 91.3 -2.4\nv -2.9 91.6 -2.4\nv 2.9 100 -2.6\nv 16.4 98.3 -10.3\nv 20.9 89 -9.4\nv 28.9 83.8 -17.8\nv 24.5 87.9 -9.2\nv 29.5 82.4 -17.5\nv 29.4 52.9 -11.2\nv 8.4 49.6 -10.5\nv 31.9 49.6 -10.5\nv 32.7 50.4 -10.7\nv 32.7 52 -11.1\nv 31.9 52.9 -11.2\nv -29.4 53.8 -5.7\nv -31.9 53.8 -5.7\nv -32.7 52.9 -5.6\nv -32.7 51.2 -5.4\nv -31.9 50.4 -5.3\nv -8.4 50.4 -5.3\nv -29.5 83.8 -8.8\nv -28.9 85.2 -9\nv 28.9 85.6 -4.5\nv 27.2 95.4 -5\nv 27.2 95 -10\nv -24.5 88.4 0\nv -27.2 95.5 0\nv -27.2 95.4 5\nv -28.9 85.6 4.5\nv -5.8 90.4 14.3\nv -8.6 89.8 16.6\nv -2.9 90.1 16.7\nv 2.9 98.4 18.2\nv 5.8 97.7 20.8\nv 16.4 98.3 10.3\nv 20.9 89 9.4\nv 28.9 85.7 0\nv 24.5 87.9 9.2\nv 29.5 84.3 0\nv 29.4 54.1 0\nv 8.4 50.7 0\nv 31.9 50.7 0\nv 32.7 51.5 0\nv 32.7 53.2 0\nv 31.9 54.1 0\nv -29.4 53.8 5.7\nv -31.9 53.8 5.7\nv -32.7 52.9 5.6\nv -32.7 51.2 5.4\nv -31.9 50.4 5.3\nv -8.4 50.4 5.3\nv -29.5 83.8 8.8\nv -28.9 85.2 9\nv 28.9 84.7 13.4\nv 27.2 94.3 14.9\nv 27.2 95 10\nv 11.3 94.6 30.7\nv 8.6 87.6 25.9\nv 5.8 88.4 23.7\nv 2.9 87.8 26\nv -2.9 95.9 28.4\nv -11.3 97.3 20.7\nv -5.8 95 30.9\nv -16.4 96.7 20.5\nv -20.9 87.5 18.6\nv -24.5 86.4 18.4\nv -27.2 93.4 19.9\nv -27.2 92.3 24.7\nv -28.9 82.8 22.2\nv -5.8 85.4 32.8\nv -8.6 84.4 34.9\nv -2.9 84.6 35.1\nv 2.9 92.4 38.3\nv 5.8 99.9 0\nv 16.4 94 30.5\nv 20.9 85.1 27.7\nv 28.9 83.8 17.8\nv 24.5 84 27.3\nv 29.5 82.4 17.5\nv 29.4 52.9 11.2\nv 8.4 49.6 10.5\nv 31.9 49.6 10.5\nv 32.7 50.4 10.7\nv 32.7 52 11.1\nv 31.9 52.9 11.2\nv -29.4 51.4 16.7\nv -31.9 51.4 16.7\nv -32.7 50.6 16.4\nv -32.7 49 15.9\nv -31.9 48.2 15.7\nv -8.4 48.2 15.7\nv -29.5 80.1 26\nv -28.9 81.5 26.5\nv 28.9 80 30.7\nv 27.2 90.8 29.5\nv 11.3 99 10.4\nv 8.6 91 7.2\nv 5.8 91.4 4.8\nv 2.9 91.3 7.2\nv -2.9 99.7 7.8\nv -11.3 99.5 0\nv -5.8 99.4 10.4\nv -16.4 98.8 0\nv -20.9 89.5 0\nv -16.9 33.7 -8.4\nv -16.9 26.4 -4.2\nv 16.9 26.4 -4.2\nv 16.9 33.7 -8.4\nv -16.9 41 -4.2\nv 16.9 41 -4.2\nv -16.9 41 4.2\nv 16.9 41 4.2\nv -16.9 33.7 8.4\nv 16.9 33.7 8.4\nv -16.9 26.4 4.2\nv 16.9 26.4 4.2\nv -16.9 16.9 20.8\nv -16.9 9.6 25\nv 16.9 9.6 25\nv 16.9 16.9 20.8\nv -16.9 24.2 25\nv 16.9 24.2 25\nv -16.9 24.2 33.4\nv 16.9 24.2 33.4\nv -16.9 16.9 37.6\nv 16.9 16.9 37.6\nv -16.9 9.6 33.4\nv 16.9 9.6 33.4\nv -16.9 -16.9 20.8\nv -16.9 -24.2 25\nv 16.9 -24.2 25\nv 16.9 -16.9 20.8\nv -16.9 -9.6 25\nv 16.9 -9.6 25\nv -16.9 -9.6 33.4\nv 16.9 -9.6 33.4\nv -16.9 -16.9 37.6\nv 16.9 -16.9 37.6\nv -16.9 -24.2 33.4\nv 16.9 -24.2 33.4\nv -16.9 -33.7 -8.4\nv -16.9 -41 -4.2\nv 16.9 -41 -4.2\nv 16.9 -33.7 -8.4\nv -16.9 -26.4 -4.2\nv 16.9 -26.4 -4.2\nv -16.9 -26.4 4.2\nv 16.9 -26.4 4.2\nv -16.9 -33.7 8.4\nv 16.9 -33.7 8.4\nv -16.9 -41 4.2\nv 16.9 -41 4.2\nv -16.9 -16.9 -37.6\nv -16.9 -24.2 -33.4\nv 16.9 -24.2 -33.4\nv 16.9 -16.9 -37.6\nv -16.9 -9.6 -33.4\nv 16.9 -9.6 -33.4\nv -16.9 -9.6 -25\nv 16.9 -9.6 -25\nv -16.9 -16.9 -20.8\nv 16.9 -16.9 -20.8\nv -16.9 -24.2 -25\nv 16.9 -24.2 -25\nv -16.9 16.9 -37.6\nv -16.9 9.6 -33.4\nv 16.9 9.6 -33.4\nv 16.9 16.9 -37.6\nv -16.9 24.2 -33.4\nv 16.9 24.2 -33.4\nv -16.9 24.2 -25\nv 16.9 24.2 -25\nv -16.9 16.9 -20.8\nv 16.9 16.9 -20.8\nv -16.9 9.6 -25\nv 16.9 9.6 -25\nusemtl rgb(0,0,0)\nf 1173 1155 1171 1\nf 1176 6 5 1193\nf 1174 7 6 1176\nf 1173 1 7 1174\nf 1170 7 1 1171\nf 1170 1169 8 7\nf 1169 10 9 8\nf 10 12 11 9\nf 1167 13 12 1166\nf 1167 1191 14 13\nf 1191 15 14\nf 17 16 15 1191\nf 13 14 19 18\nf 12 13 18 11\nf 8 9 11 18\nf 6 8 18 20\nf 5 6 20 21\nf 23 5 21 22\nf 5 23 4 1193\nf 4 23 24 1192\nf 24 26 25 1192\nf 1164 1165 10 1169\nf 1165 1166 12 10\nf 6 7 8\nf 1192 25 27\nf 1175 1192 27 1177\nf 1177 27 28 1178\nf 1184 34 40 1190\nf 1190 40 17 1191\nf 40 41 17\nf 44 43 42 25\nf 26 44 25\nf 26 46 45 44\nf 24 47 46 26\nf 23 22 47 24\nf 20 47 22 21\nf 19 20 18\nf 20 19 48 47\nf 19 50 49 48\nf 50 52 51 49\nf 17 53 52 16\nf 17 41 54 53\nf 41 55 54\nf 57 56 55 41\nf 53 54 59 58\nf 52 53 58 51\nf 48 49 51 58\nf 46 48 58 60\nf 45 46 60 61\nf 63 45 61 62\nf 45 63 43 44\nf 43 63 64 42\nf 64 66 65 42\nf 14 15 50 19\nf 15 16 52 50\nf 46 47 48\nf 42 65 67\nf 25 42 67 27\nf 27 67 68 28\nf 34 74 80 40\nf 40 80 57 41\nf 80 81 57\nf 84 83 82 65\nf 66 84 65\nf 66 86 85 84\nf 64 87 86 66\nf 63 62 87 64\nf 60 87 62 61\nf 59 60 58\nf 60 59 88 87\nf 59 90 89 88\nf 90 92 91 89\nf 57 93 92 56\nf 57 81 94 93\nf 81 95 94\nf 97 96 95 81\nf 93 94 99 98\nf 92 93 98 91\nf 88 89 91 98\nf 86 88 98 100\nf 85 86 100 101\nf 103 85 101 102\nf 85 103 83 84\nf 83 103 104 82\nf 104 106 105 82\nf 54 55 90 59\nf 55 56 92 90\nf 86 87 88\nf 82 105 107\nf 65 82 107 67\nf 67 107 108 68\nf 74 114 120 80\nf 80 120 97 81\nf 120 121 97\nf 124 123 122 105\nf 106 124 105\nf 106 126 125 124\nf 104 127 126 106\nf 103 102 127 104\nf 100 127 102 101\nf 99 100 98\nf 100 99 128 127\nf 99 130 129 128\nf 130 132 131 129\nf 97 133 132 96\nf 97 121 134 133\nf 121 135 134\nf 137 136 135 121\nf 133 134 139 138\nf 132 133 138 131\nf 128 129 131 138\nf 126 128 138 140\nf 125 126 140 141\nf 143 125 141 142\nf 125 143 123 124\nf 123 143 144 122\nf 144 146 145 122\nf 94 95 130 99\nf 95 96 132 130\nf 126 127 128\nf 122 145 147\nf 105 122 147 107\nf 107 147 148 108\nf 114 154 160 120\nf 120 160 137 121\nf 160 161 137\nf 164 163 162 145\nf 146 164 145\nf 146 166 165 164\nf 144 167 166 146\nf 143 142 167 144\nf 140 167 142 141\nf 139 140 138\nf 140 139 168 167\nf 139 170 169 168\nf 170 172 171 169\nf 137 173 172 136\nf 137 161 174 173\nf 161 175 174\nf 177 176 175 161\nf 173 174 179 178\nf 172 173 178 171\nf 168 169 171 178\nf 166 168 178 180\nf 165 166 180 181\nf 183 165 181 182\nf 165 183 163 164\nf 163 183 184 162\nf 184 186 185 162\nf 134 135 170 139\nf 135 136 172 170\nf 166 167 168\nf 162 185 187\nf 145 162 187 147\nf 147 187 188 148\nf 154 194 200 160\nf 160 200 177 161\nf 200 201 177\nf 204 203 202 185\nf 186 204 185\nf 186 206 205 204\nf 184 207 206 186\nf 183 182 207 184\nf 180 207 182 181\nf 179 180 178\nf 180 179 208 207\nf 179 210 209 208\nf 210 212 211 209\nf 177 213 212 176\nf 177 201 214 213\nf 201 215 214\nf 217 216 215 201\nf 213 214 219 218\nf 212 213 218 211\nf 208 209 211 218\nf 206 208 218 220\nf 205 206 220 221\nf 223 205 221 222\nf 205 223 203 204\nf 203 223 224 202\nf 224 226 225 202\nf 174 175 210 179\nf 175 176 212 210\nf 206 207 208\nf 202 225 227\nf 185 202 227 187\nf 187 227 228 188\nf 194 234 240 200\nf 200 240 217 201\nf 240 241 217\nf 244 243 242 225\nf 226 244 225\nf 226 246 245 244\nf 224 247 246 226\nf 223 222 247 224\nf 220 247 222 221\nf 219 220 218\nf 220 219 248 247\nf 219 250 249 248\nf 250 252 251 249\nf 217 253 252 216\nf 217 241 254 253\nf 241 255 254\nf 257 256 255 241\nf 253 254 259 258\nf 252 253 258 251\nf 248 249 251 258\nf 246 248 258 260\nf 245 246 260 261\nf 263 245 261 262\nf 245 263 243 244\nf 243 263 264 242\nf 264 266 265 242\nf 214 215 250 219\nf 215 216 252 250\nf 246 247 248\nf 242 265 267\nf 225 242 267 227\nf 227 267 268 228\nf 234 274 280 240\nf 240 280 257 241\nf 280 281 257\nf 284 283 282 265\nf 266 284 265\nf 266 286 285 284\nf 264 287 286 266\nf 263 262 287 264\nf 260 287 262 261\nf 259 260 258\nf 260 259 288 287\nf 259 290 289 288\nf 290 292 291 289\nf 257 293 292 256\nf 257 281 294 293\nf 281 295 294\nf 297 296 295 281\nf 293 294 299 298\nf 292 293 298 291\nf 288 289 291 298\nf 286 288 298 300\nf 285 286 300 301\nf 303 285 301 302\nf 285 303 283 284\nf 283 303 304 282\nf 304 306 305 282\nf 254 255 290 259\nf 255 256 292 290\nf 286 287 288\nf 282 305 307\nf 265 282 307 267\nf 267 307 308 268\nf 274 314 320 280\nf 280 320 297 281\nf 320 321 297\nf 324 323 322 305\nf 306 324 305\nf 306 326 325 324\nf 304 327 326 306\nf 303 302 327 304\nf 300 327 302 301\nf 299 300 298\nf 300 299 328 327\nf 299 330 329 328\nf 330 332 331 329\nf 297 333 332 296\nf 297 321 334 333\nf 321 335 334\nf 337 336 335 321\nf 333 334 339 338\nf 332 333 338 331\nf 328 329 331 338\nf 326 328 338 340\nf 325 326 340 341\nf 343 325 341 342\nf 325 343 323 324\nf 323 343 344 322\nf 344 346 345 322\nf 294 295 330 299\nf 295 296 332 330\nf 326 327 328\nf 322 345 347\nf 305 322 347 307\nf 307 347 348 308\nf 314 354 360 320\nf 320 360 337 321\nf 360 361 337\nf 364 363 362 345\nf 346 364 345\nf 346 366 365 364\nf 344 367 366 346\nf 343 342 367 344\nf 340 367 342 341\nf 339 340 338\nf 340 339 368 367\nf 339 370 369 368\nf 370 372 371 369\nf 337 373 372 336\nf 337 361 374 373\nf 361 375 374\nf 377 376 375 361\nf 373 374 379 378\nf 372 373 378 371\nf 368 369 371 378\nf 366 368 378 380\nf 365 366 380 381\nf 383 365 381 382\nf 365 383 363 364\nf 363 383 384 362\nf 384 386 385 362\nf 334 335 370 339\nf 335 336 372 370\nf 366 367 368\nf 362 385 387\nf 345 362 387 347\nf 347 387 388 348\nf 354 394 400 360\nf 360 400 377 361\nf 400 401 377\nf 404 403 402 385\nf 386 404 385\nf 386 406 405 404\nf 384 407 406 386\nf 383 382 407 384\nf 380 407 382 381\nf 379 380 378\nf 380 379 408 407\nf 379 410 409 408\nf 410 412 411 409\nf 377 413 412 376\nf 377 401 414 413\nf 401 415 414\nf 417 416 415 401\nf 413 414 419 418\nf 412 413 418 411\nf 408 409 411 418\nf 406 408 418 420\nf 405 406 420 421\nf 423 405 421 422\nf 405 423 403 404\nf 403 423 424 402\nf 424 426 425 402\nf 374 375 410 379\nf 375 376 412 410\nf 406 407 408\nf 402 425 427\nf 385 402 427 387\nf 387 427 428 388\nf 394 434 440 400\nf 400 440 417 401\nf 440 441 417\nf 444 443 442 425\nf 426 444 425\nf 426 446 445 444\nf 424 447 446 426\nf 423 422 447 424\nf 420 447 422 421\nf 419 420 418\nf 420 419 448 447\nf 419 450 449 448\nf 450 452 451 449\nf 417 453 452 416\nf 417 441 454 453\nf 441 455 454\nf 457 456 455 441\nf 453 454 459 458\nf 452 453 458 451\nf 448 449 451 458\nf 446 448 458 460\nf 445 446 460 461\nf 463 445 461 462\nf 445 463 443 444\nf 443 463 464 442\nf 464 466 465 442\nf 414 415 450 419\nf 415 416 452 450\nf 446 447 448\nf 442 465 467\nf 425 442 467 427\nf 427 467 468 428\nf 434 474 480 440\nf 440 480 457 441\nf 480 481 457\nf 484 483 482 465\nf 466 484 465\nf 466 486 485 484\nf 464 487 486 466\nf 463 462 487 464\nf 460 487 462 461\nf 459 460 458\nf 460 459 488 487\nf 459 490 489 488\nf 490 492 491 489\nf 457 493 492 456\nf 457 481 494 493\nf 481 495 494\nf 497 496 495 481\nf 493 494 499 498\nf 492 493 498 491\nf 488 489 491 498\nf 486 488 498 500\nf 485 486 500 501\nf 503 485 501 502\nf 485 503 483 484\nf 483 503 504 482\nf 504 506 505 482\nf 454 455 490 459\nf 455 456 492 490\nf 486 487 488\nf 482 505 507\nf 465 482 507 467\nf 467 507 508 468\nf 474 514 520 480\nf 480 520 497 481\nf 520 521 497\nf 524 523 522 505\nf 506 524 505\nf 506 526 525 524\nf 504 527 526 506\nf 503 502 527 504\nf 500 527 502 501\nf 499 500 498\nf 500 499 528 527\nf 499 530 529 528\nf 530 532 531 529\nf 497 533 532 496\nf 497 521 534 533\nf 521 535 534\nf 537 536 535 521\nf 533 534 539 538\nf 532 533 538 531\nf 528 529 531 538\nf 526 528 538 540\nf 525 526 540 541\nf 543 525 541 542\nf 525 543 523 524\nf 523 543 544 522\nf 544 546 545 522\nf 494 495 530 499\nf 495 496 532 530\nf 526 527 528\nf 522 545 547\nf 505 522 547 507\nf 507 547 548 508\nf 514 554 560 520\nf 520 560 537 521\nf 560 561 537\nf 564 563 562 545\nf 546 564 545\nf 546 566 565 564\nf 544 567 566 546\nf 543 542 567 544\nf 540 567 542 541\nf 539 540 538\nf 540 539 568 567\nf 539 570 569 568\nf 570 572 571 569\nf 537 573 572 536\nf 537 561 574 573\nf 561 575 574\nf 577 576 575 561\nf 573 574 579 578\nf 572 573 578 571\nf 568 569 571 578\nf 566 568 578 580\nf 565 566 580 581\nf 583 565 581 582\nf 565 583 563 564\nf 563 583 584 562\nf 584 586 585 562\nf 534 535 570 539\nf 535 536 572 570\nf 566 567 568\nf 562 585 587\nf 545 562 587 547\nf 547 587 588 548\nf 554 594 600 560\nf 560 600 577 561\nf 600 601 577\nf 604 603 602 585\nf 586 604 585\nf 586 606 605 604\nf 584 607 606 586\nf 583 582 607 584\nf 580 607 582 581\nf 579 580 578\nf 580 579 608 607\nf 579 610 609 608\nf 610 612 611 609\nf 577 613 612 576\nf 577 601 614 613\nf 601 615 614\nf 617 616 615 601\nf 613 614 619 618\nf 612 613 618 611\nf 608 609 611 618\nf 606 608 618 620\nf 605 606 620 621\nf 623 605 621 622\nf 605 623 603 604\nf 603 623 624 602\nf 624 626 625 602\nf 574 575 610 579\nf 575 576 612 610\nf 606 607 608\nf 602 625 627\nf 585 602 627 587\nf 587 627 628 588\nf 594 634 640 600\nf 600 640 617 601\nf 640 641 617\nf 644 643 642 625\nf 626 644 625\nf 626 646 645 644\nf 624 647 646 626\nf 623 622 647 624\nf 620 647 622 621\nf 619 620 618\nf 620 619 648 647\nf 619 650 649 648\nf 650 652 651 649\nf 617 653 652 616\nf 617 641 654 653\nf 641 655 654\nf 657 656 655 641\nf 653 654 659 658\nf 652 653 658 651\nf 648 649 651 658\nf 646 648 658 660\nf 645 646 660 661\nf 663 645 661 662\nf 645 663 643 644\nf 643 663 664 642\nf 664 666 665 642\nf 614 615 650 619\nf 615 616 652 650\nf 646 647 648\nf 642 665 667\nf 625 642 667 627\nf 627 667 668 628\nf 634 674 680 640\nf 640 680 657 641\nf 680 681 657\nf 684 683 682 665\nf 666 684 665\nf 666 686 685 684\nf 664 687 686 666\nf 663 662 687 664\nf 660 687 662 661\nf 659 660 658\nf 660 659 688 687\nf 659 690 689 688\nf 690 692 691 689\nf 657 693 692 656\nf 657 681 694 693\nf 681 695 694\nf 697 696 695 681\nf 693 694 699 698\nf 692 693 698 691\nf 688 689 691 698\nf 686 688 698 700\nf 685 686 700 701\nf 703 685 701 702\nf 685 703 683 684\nf 683 703 704 682\nf 704 706 705 682\nf 654 655 690 659\nf 655 656 692 690\nf 686 687 688\nf 682 705 707\nf 665 682 707 667\nf 667 707 708 668\nf 674 714 720 680\nf 680 720 697 681\nf 720 721 697\nf 724 723 722 705\nf 706 724 705\nf 706 726 725 724\nf 704 727 726 706\nf 703 702 727 704\nf 700 727 702 701\nf 699 700 698\nf 700 699 728 727\nf 699 730 729 728\nf 730 732 731 729\nf 697 733 732 696\nf 697 721 734 733\nf 721 735 734\nf 737 736 735 721\nf 733 734 739 738\nf 732 733 738 731\nf 728 729 731 738\nf 726 728 738 740\nf 725 726 740 741\nf 743 725 741 742\nf 725 743 723 724\nf 723 743 744 722\nf 744 746 745 722\nf 694 695 730 699\nf 695 696 732 730\nf 726 727 728\nf 722 745 747\nf 705 722 747 707\nf 707 747 748 708\nf 714 754 760 720\nf 720 760 737 721\nf 760 761 737\nf 764 763 762 745\nf 746 764 745\nf 746 766 765 764\nf 744 767 766 746\nf 743 742 767 744\nf 740 767 742 741\nf 739 740 738\nf 740 739 768 767\nf 739 770 769 768\nf 770 772 771 769\nf 737 773 772 736\nf 737 761 774 773\nf 761 775 774\nf 777 776 775 761\nf 773 774 779 778\nf 772 773 778 771\nf 768 769 771 778\nf 766 768 778 780\nf 765 766 780 781\nf 783 765 781 782\nf 765 783 763 764\nf 763 783 784 762\nf 784 786 785 762\nf 734 735 770 739\nf 735 736 772 770\nf 766 767 768\nf 762 785 787\nf 745 762 787 747\nf 747 787 788 748\nf 754 794 800 760\nf 760 800 777 761\nf 800 801 777\nf 804 803 802 785\nf 786 804 785\nf 786 806 805 804\nf 784 807 806 786\nf 783 782 807 784\nf 780 807 782 781\nf 779 780 778\nf 780 779 808 807\nf 779 810 809 808\nf 810 812 811 809\nf 777 813 812 776\nf 777 801 814 813\nf 801 815 814\nf 817 816 815 801\nf 813 814 819 818\nf 812 813 818 811\nf 808 809 811 818\nf 806 808 818 820\nf 805 806 820 821\nf 823 805 821 822\nf 805 823 803 804\nf 803 823 824 802\nf 824 826 825 802\nf 774 775 810 779\nf 775 776 812 810\nf 806 807 808\nf 802 825 827\nf 785 802 827 787\nf 787 827 828 788\nf 794 834 840 800\nf 800 840 817 801\nf 840 841 817\nf 844 843 842 825\nf 826 844 825\nf 826 846 845 844\nf 824 847 846 826\nf 823 822 847 824\nf 820 847 822 821\nf 819 820 818\nf 820 819 848 847\nf 819 850 849 848\nf 850 852 851 849\nf 817 853 852 816\nf 817 841 854 853\nf 841 855 854\nf 857 856 855 841\nf 853 854 859 858\nf 852 853 858 851\nf 848 849 851 858\nf 846 848 858 860\nf 845 846 860 861\nf 863 845 861 862\nf 845 863 843 844\nf 843 863 864 842\nf 864 866 865 842\nf 814 815 850 819\nf 815 816 852 850\nf 846 847 848\nf 842 865 867\nf 825 842 867 827\nf 827 867 868 828\nf 834 874 880 840\nf 840 880 857 841\nf 880 881 857\nf 884 883 882 865\nf 866 884 865\nf 866 886 885 884\nf 864 887 886 866\nf 863 862 887 864\nf 860 887 862 861\nf 859 860 858\nf 860 859 888 887\nf 859 890 889 888\nf 890 892 891 889\nf 857 893 892 856\nf 857 881 894 893\nf 881 895 894\nf 897 896 895 881\nf 893 894 899 898\nf 892 893 898 891\nf 888 889 891 898\nf 886 888 898 900\nf 885 886 900 901\nf 903 885 901 902\nf 885 903 883 884\nf 883 903 904 882\nf 904 906 905 882\nf 854 855 890 859\nf 855 856 892 890\nf 886 887 888\nf 882 905 907\nf 865 882 907 867\nf 867 907 908 868\nf 874 914 920 880\nf 880 920 897 881\nf 920 921 897\nf 924 923 922 905\nf 906 924 905\nf 906 926 925 924\nf 904 927 926 906\nf 903 902 927 904\nf 900 927 902 901\nf 899 900 898\nf 900 899 928 927\nf 899 930 929 928\nf 930 932 931 929\nf 897 933 932 896\nf 897 921 934 933\nf 921 935 934\nf 937 936 935 921\nf 933 934 939 938\nf 932 933 938 931\nf 928 929 931 938\nf 926 928 938 940\nf 925 926 940 941\nf 943 925 941 942\nf 925 943 923 924\nf 923 943 944 922\nf 944 946 945 922\nf 894 895 930 899\nf 895 896 932 930\nf 926 927 928\nf 922 945 947\nf 905 922 947 907\nf 907 947 948 908\nf 914 954 960 920\nf 920 960 937 921\nf 960 961 937\nf 964 963 962 945\nf 946 964 945\nf 946 966 965 964\nf 944 967 966 946\nf 943 942 967 944\nf 940 967 942 941\nf 939 940 938\nf 940 939 968 967\nf 939 970 969 968\nf 970 972 971 969\nf 937 973 972 936\nf 937 961 974 973\nf 961 975 974\nf 977 976 975 961\nf 973 974 979 978\nf 972 973 978 971\nf 968 969 971 978\nf 966 968 978 980\nf 965 966 980 981\nf 983 965 981 982\nf 965 983 963 964\nf 963 983 984 962\nf 984 986 985 962\nf 934 935 970 939\nf 935 936 972 970\nf 966 967 968\nf 962 985 987\nf 945 962 987 947\nf 947 987 988 948\nf 954 994 1000 960\nf 960 1000 977 961\nf 1000 1001 977\nf 1004 1003 1002 985\nf 986 1004 985\nf 986 1006 1005 1004\nf 984 1007 1006 986\nf 983 982 1007 984\nf 980 1007 982 981\nf 979 980 978\nf 980 979 1008 1007\nf 979 1010 1009 1008\nf 1010 1012 1011 1009\nf 977 1013 1012 976\nf 977 1001 1014 1013\nf 1001 1015 1014\nf 1017 1016 1015 1001\nf 1013 1014 1019 1018\nf 1012 1013 1018 1011\nf 1008 1009 1011 1018\nf 1006 1008 1018 1020\nf 1005 1006 1020 1021\nf 1023 1005 1021 1022\nf 1005 1023 1003 1004\nf 1003 1023 1024 1002\nf 1024 1026 1025 1002\nf 974 975 1010 979\nf 975 976 1012 1010\nf 1006 1007 1008\nf 1002 1025 1027\nf 985 1002 1027 987\nf 987 1027 1028 988\nf 994 1034 1040 1000\nf 1000 1040 1017 1001\nf 1040 1041 1017\nf 1044 1043 1042 1025\nf 1026 1044 1025\nf 1026 1046 1045 1044\nf 1024 1047 1046 1026\nf 1023 1022 1047 1024\nf 1020 1047 1022 1021\nf 1019 1020 1018\nf 1020 1019 1048 1047\nf 1019 1050 1049 1048\nf 1050 1052 1051 1049\nf 1017 1053 1052 1016\nf 1017 1041 1054 1053\nf 1041 1055 1054\nf 1057 1056 1055 1041\nf 1053 1054 1059 1058\nf 1052 1053 1058 1051\nf 1048 1049 1051 1058\nf 1046 1048 1058 1060\nf 1045 1046 1060 1061\nf 1063 1045 1061 1062\nf 1045 1063 1043 1044\nf 1043 1063 1064 1042\nf 1064 1066 1065 1042\nf 1014 1015 1050 1019\nf 1015 1016 1052 1050\nf 1046 1047 1048\nf 1042 1065 1067\nf 1025 1042 1067 1027\nf 1027 1067 1068 1028\nf 1034 1074 1080 1040\nf 1040 1080 1057 1041\nf 1080 1081 1057\nf 1084 1083 1082 1065\nf 1066 1084 1065\nf 1066 1086 1085 1084\nf 1064 1087 1086 1066\nf 1063 1062 1087 1064\nf 1060 1087 1062 1061\nf 1059 1060 1058\nf 1060 1059 1088 1087\nf 1059 1090 1089 1088\nf 1090 1092 1091 1089\nf 1057 1093 1092 1056\nf 1057 1081 1094 1093\nf 1081 1095 1094\nf 1097 1096 1095 1081\nf 1093 1094 1099 1098\nf 1092 1093 1098 1091\nf 1088 1089 1091 1098\nf 1086 1088 1098 1100\nf 1085 1086 1100 1101\nf 1102 1085 1101 1172\nf 1085 1102 1083 1084\nf 1083 1102 1103 1082\nf 1103 1105 1104 1082\nf 1054 1055 1090 1059\nf 1055 1056 1092 1090\nf 1086 1087 1088\nf 1082 1104 1106\nf 1065 1082 1106 1067\nf 1067 1106 1107 1068\nf 1074 1113 1119 1080\nf 1080 1119 1097 1081\nf 1119 1120 1097\nf 1123 1122 1121 1104\nf 1105 1123 1104\nf 1105 1195 1194 1123\nf 1103 1196 1195 1105\nf 1102 1172 1196 1103\nf 1100 1196 1172 1101\nf 1099 1100 1098\nf 1100 1099 1197 1196\nf 1099 1199 1198 1197\nf 1097 1202 1201 1096\nf 1097 1120 1124 1202\nf 1120 1125 1124\nf 1127 1126 1125 1120\nf 1194 1133 1122 1123\nf 1122 1133 1134 1121\nf 1134 1136 1135 1121\nf 1094 1095 1199 1099\nf 1095 1096 1201 1199\nf 1121 1135 1137\nf 1104 1121 1137 1106\nf 1106 1137 1138 1107\nf 1113 1144 1150 1119\nf 1119 1150 1127 1120\nf 1154 1153 1152 1135\nf 1136 1154 1135\nf 1136 1156 1155 1154\nf 1134 1157 1156 1136\nf 1133 1132 1157 1134\nf 1130 1157 1132 1131\nf 1129 1130 1128\nf 1129 1160 1159 1158\nf 1160 1162 1161 1159\nf 1127 1163 1162 1126\nf 1127 1151 1164 1163\nf 1151 1165 1164\nf 1167 1166 1165 1151\nf 1163 1164 1169 1168\nf 1162 1163 1168 1161\nf 1158 1159 1161 1168\nf 1156 1158 1168 1170\nf 1155 1156 1170 1171\nf 1155 1173 1153 1154\nf 1153 1173 1174 1152\nf 1174 1176 1175 1152\nf 1124 1125 1160 1129\nf 1125 1126 1162 1160\nf 1156 1157 1158\nf 1152 1175 1177\nf 1135 1152 1177 1137\nf 1144 1184 1190 1150\nf 1150 1190 1167 1151\nf 1190 1191 1167\nf 1193 4 1192 1175\nf 1176 1193 1175\nf 1169 1170 1168\nf 1199 1201 1200 1198\nf 1202 1124 1129 1128\nf 1201 1202 1128 1200\nf 1197 1198 1200 1128\nf 1195 1197 1128 1130\nf 1194 1195 1130 1131\nf 1133 1194 1131 1132\nf 1195 1196 1197\nf 1178 1138 1137 1177\nf 1150 1151 1127\nf 1157 1130 1129 1158\nusemtl rgb(238,238,238)\nf 1179 29 2\nf 1180 30 29 1179\nf 1181 31 30 1180\nf 1182 32 31 1181\nf 1183 33 32 1182\nf 1178 28 33 1183\nf 1185 35 34 1184\nf 1186 36 35 1185\nf 1187 37 36 1186\nf 1188 38 37 1187\nf 1189 39 38 1188\nf 3 39 1189\nf 29 69 2\nf 30 70 69 29\nf 31 71 70 30\nf 32 72 71 31\nf 33 73 72 32\nf 28 68 73 33\nf 35 75 74 34\nf 36 76 75 35\nf 37 77 76 36\nf 38 78 77 37\nf 39 79 78 38\nf 3 79 39\nf 69 109 2\nf 70 110 109 69\nf 71 111 110 70\nf 72 112 111 71\nf 73 113 112 72\nf 68 108 113 73\nf 75 115 114 74\nf 76 116 115 75\nf 77 117 116 76\nf 78 118 117 77\nf 79 119 118 78\nf 3 119 79\nf 109 149 2\nf 110 150 149 109\nf 111 151 150 110\nf 112 152 151 111\nf 113 153 152 112\nf 108 148 153 113\nf 115 155 154 114\nf 116 156 155 115\nf 117 157 156 116\nf 118 158 157 117\nf 119 159 158 118\nf 3 159 119\nf 149 189 2\nf 150 190 189 149\nf 151 191 190 150\nf 152 192 191 151\nf 153 193 192 152\nf 148 188 193 153\nf 155 195 194 154\nf 156 196 195 155\nf 157 197 196 156\nf 158 198 197 157\nf 159 199 198 158\nf 3 199 159\nf 189 229 2\nf 190 230 229 189\nf 191 231 230 190\nf 192 232 231 191\nf 193 233 232 192\nf 188 228 233 193\nf 195 235 234 194\nf 196 236 235 195\nf 197 237 236 196\nf 198 238 237 197\nf 199 239 238 198\nf 3 239 199\nf 229 269 2\nf 230 270 269 229\nf 231 271 270 230\nf 232 272 271 231\nf 233 273 272 232\nf 228 268 273 233\nf 235 275 274 234\nf 236 276 275 235\nf 237 277 276 236\nf 238 278 277 237\nf 239 279 278 238\nf 3 279 239\nf 269 309 2\nf 270 310 309 269\nf 271 311 310 270\nf 272 312 311 271\nf 273 313 312 272\nf 268 308 313 273\nf 275 315 314 274\nf 276 316 315 275\nf 277 317 316 276\nf 278 318 317 277\nf 279 319 318 278\nf 3 319 279\nf 309 349 2\nf 310 350 349 309\nf 311 351 350 310\nf 312 352 351 311\nf 313 353 352 312\nf 308 348 353 313\nf 315 355 354 314\nf 316 356 355 315\nf 317 357 356 316\nf 318 358 357 317\nf 319 359 358 318\nf 3 359 319\nf 349 389 2\nf 350 390 389 349\nf 351 391 390 350\nf 352 392 391 351\nf 353 393 392 352\nf 348 388 393 353\nf 355 395 394 354\nf 356 396 395 355\nf 357 397 396 356\nf 358 398 397 357\nf 359 399 398 358\nf 3 399 359\nf 389 429 2\nf 390 430 429 389\nf 391 431 430 390\nf 392 432 431 391\nf 393 433 432 392\nf 388 428 433 393\nf 395 435 434 394\nf 396 436 435 395\nf 397 437 436 396\nf 398 438 437 397\nf 399 439 438 398\nf 3 439 399\nf 429 469 2\nf 430 470 469 429\nf 431 471 470 430\nf 432 472 471 431\nf 433 473 472 432\nf 428 468 473 433\nf 435 475 474 434\nf 436 476 475 435\nf 437 477 476 436\nf 438 478 477 437\nf 439 479 478 438\nf 3 479 439\nf 469 509 2\nf 470 510 509 469\nf 471 511 510 470\nf 472 512 511 471\nf 473 513 512 472\nf 468 508 513 473\nf 475 515 514 474\nf 476 516 515 475\nf 477 517 516 476\nf 478 518 517 477\nf 479 519 518 478\nf 3 519 479\nf 509 549 2\nf 510 550 549 509\nf 511 551 550 510\nf 512 552 551 511\nf 513 553 552 512\nf 508 548 553 513\nf 515 555 554 514\nf 516 556 555 515\nf 517 557 556 516\nf 518 558 557 517\nf 519 559 558 518\nf 3 559 519\nf 549 589 2\nf 550 590 589 549\nf 551 591 590 550\nf 552 592 591 551\nf 553 593 592 552\nf 548 588 593 553\nf 555 595 594 554\nf 556 596 595 555\nf 557 597 596 556\nf 558 598 597 557\nf 559 599 598 558\nf 3 599 559\nf 589 629 2\nf 590 630 629 589\nf 591 631 630 590\nf 592 632 631 591\nf 593 633 632 592\nf 588 628 633 593\nf 595 635 634 594\nf 596 636 635 595\nf 597 637 636 596\nf 598 638 637 597\nf 599 639 638 598\nf 3 639 599\nf 629 669 2\nf 630 670 669 629\nf 631 671 670 630\nf 632 672 671 631\nf 633 673 672 632\nf 628 668 673 633\nf 635 675 674 634\nf 636 676 675 635\nf 637 677 676 636\nf 638 678 677 637\nf 639 679 678 638\nf 3 679 639\nf 669 709 2\nf 670 710 709 669\nf 671 711 710 670\nf 672 712 711 671\nf 673 713 712 672\nf 668 708 713 673\nf 675 715 714 674\nf 676 716 715 675\nf 677 717 716 676\nf 678 718 717 677\nf 679 719 718 678\nf 3 719 679\nf 709 749 2\nf 710 750 749 709\nf 711 751 750 710\nf 712 752 751 711\nf 713 753 752 712\nf 708 748 753 713\nf 715 755 754 714\nf 716 756 755 715\nf 717 757 756 716\nf 718 758 757 717\nf 719 759 758 718\nf 3 759 719\nf 749 789 2\nf 750 790 789 749\nf 751 791 790 750\nf 752 792 791 751\nf 753 793 792 752\nf 748 788 793 753\nf 755 795 794 754\nf 756 796 795 755\nf 757 797 796 756\nf 758 798 797 757\nf 759 799 798 758\nf 3 799 759\nf 789 829 2\nf 790 830 829 789\nf 791 831 830 790\nf 792 832 831 791\nf 793 833 832 792\nf 788 828 833 793\nf 795 835 834 794\nf 796 836 835 795\nf 797 837 836 796\nf 798 838 837 797\nf 799 839 838 798\nf 3 839 799\nf 829 869 2\nf 830 870 869 829\nf 831 871 870 830\nf 832 872 871 831\nf 833 873 872 832\nf 828 868 873 833\nf 835 875 874 834\nf 836 876 875 835\nf 837 877 876 836\nf 838 878 877 837\nf 839 879 878 838\nf 3 879 839\nf 869 909 2\nf 870 910 909 869\nf 871 911 910 870\nf 872 912 911 871\nf 873 913 912 872\nf 868 908 913 873\nf 875 915 914 874\nf 876 916 915 875\nf 877 917 916 876\nf 878 918 917 877\nf 879 919 918 878\nf 3 919 879\nf 909 949 2\nf 910 950 949 909\nf 911 951 950 910\nf 912 952 951 911\nf 913 953 952 912\nf 908 948 953 913\nf 915 955 954 914\nf 916 956 955 915\nf 917 957 956 916\nf 918 958 957 917\nf 919 959 958 918\nf 3 959 919\nf 949 989 2\nf 950 990 989 949\nf 951 991 990 950\nf 952 992 991 951\nf 953 993 992 952\nf 948 988 993 953\nf 955 995 994 954\nf 956 996 995 955\nf 957 997 996 956\nf 958 998 997 957\nf 959 999 998 958\nf 3 999 959\nf 989 1029 2\nf 990 1030 1029 989\nf 991 1031 1030 990\nf 992 1032 1031 991\nf 993 1033 1032 992\nf 988 1028 1033 993\nf 995 1035 1034 994\nf 996 1036 1035 995\nf 997 1037 1036 996\nf 998 1038 1037 997\nf 999 1039 1038 998\nf 3 1039 999\nf 1029 1069 2\nf 1030 1070 1069 1029\nf 1031 1071 1070 1030\nf 1032 1072 1071 1031\nf 1033 1073 1072 1032\nf 1028 1068 1073 1033\nf 1035 1075 1074 1034\nf 1036 1076 1075 1035\nf 1037 1077 1076 1036\nf 1038 1078 1077 1037\nf 1039 1079 1078 1038\nf 3 1079 1039\nf 1069 1108 2\nf 1070 1109 1108 1069\nf 1071 1110 1109 1070\nf 1072 1111 1110 1071\nf 1073 1112 1111 1072\nf 1068 1107 1112 1073\nf 1075 1114 1113 1074\nf 1076 1115 1114 1075\nf 1077 1116 1115 1076\nf 1078 1117 1116 1077\nf 1079 1118 1117 1078\nf 3 1118 1079\nf 1108 1139 2\nf 1109 1140 1139 1108\nf 1110 1141 1140 1109\nf 1111 1142 1141 1110\nf 1112 1143 1142 1111\nf 1107 1138 1143 1112\nf 1114 1145 1144 1113\nf 1115 1146 1145 1114\nf 1116 1147 1146 1115\nf 1117 1148 1147 1116\nf 1118 1149 1148 1117\nf 3 1149 1118\nf 1143 1183 1182 1142\nf 1145 1185 1184 1144\nf 1148 1188 1187 1147\nf 2 1139 1179\nf 1179 1139 1140 1180\nf 1180 1140 1141 1181\nf 1181 1141 1142 1182\nf 1183 1143 1138 1178\nf 1185 1145 1146 1186\nf 1186 1146 1147 1187\nf 1188 1148 1149 1189\nf 1189 1149 3\nusemtl rgb(204,204,204)\nf 1206 1205 1204 1203\nf 1208 1206 1203 1207\nf 1210 1208 1207 1209\nf 1212 1210 1209 1211\nf 1214 1212 1211 1213\nf 1205 1214 1213 1204\nf 1209 1207 1203\nf 1211 1209 1203\nf 1213 1211 1203\nf 1204 1213 1203\nf 1206 1208 1210\nf 1206 1210 1212\nf 1206 1212 1214\nf 1206 1214 1205\nf 1218 1217 1216 1215\nf 1220 1218 1215 1219\nf 1222 1220 1219 1221\nf 1224 1222 1221 1223\nf 1226 1224 1223 1225\nf 1217 1226 1225 1216\nf 1221 1219 1215\nf 1223 1221 1215\nf 1225 1223 1215\nf 1216 1225 1215\nf 1218 1220 1222\nf 1218 1222 1224\nf 1218 1224 1226\nf 1218 1226 1217\nf 1230 1229 1228 1227\nf 1232 1230 1227 1231\nf 1234 1232 1231 1233\nf 1236 1234 1233 1235\nf 1238 1236 1235 1237\nf 1229 1238 1237 1228\nf 1233 1231 1227\nf 1235 1233 1227\nf 1237 1235 1227\nf 1228 1237 1227\nf 1230 1232 1234\nf 1230 1234 1236\nf 1230 1236 1238\nf 1230 1238 1229\nf 1242 1241 1240 1239\nf 1244 1242 1239 1243\nf 1246 1244 1243 1245\nf 1248 1246 1245 1247\nf 1250 1248 1247 1249\nf 1241 1250 1249 1240\nf 1245 1243 1239\nf 1247 1245 1239\nf 1249 1247 1239\nf 1240 1249 1239\nf 1242 1244 1246\nf 1242 1246 1248\nf 1242 1248 1250\nf 1242 1250 1241\nf 1254 1253 1252 1251\nf 1256 1254 1251 1255\nf 1258 1256 1255 1257\nf 1260 1258 1257 1259\nf 1262 1260 1259 1261\nf 1253 1262 1261 1252\nf 1257 1255 1251\nf 1259 1257 1251\nf 1261 1259 1251\nf 1252 1261 1251\nf 1254 1256 1258\nf 1254 1258 1260\nf 1254 1260 1262\nf 1254 1262 1253\nf 1266 1265 1264 1263\nf 1268 1266 1263 1267\nf 1270 1268 1267 1269\nf 1272 1270 1269 1271\nf 1274 1272 1271 1273\nf 1265 1274 1273 1264\nf 1269 1267 1263\nf 1271 1269 1263\nf 1273 1271 1263\nf 1264 1273 1263\nf 1266 1268 1270\nf 1266 1270 1272\nf 1266 1272 1274\nf 1266 1274 1265\n"
  },
  {
    "path": "test/bgratutorial3d/obj/sandal.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv 2.275656 0.254170 -0.589662\nv 2.045461 0.277858 -0.559827\nv 1.543314 0.430955 -0.485060\nv 1.257853 0.546411 -0.434712\nv 0.782654 0.962839 -0.333540\nv 0.222963 1.099577 -0.269246\nv -1.069812 1.643532 -0.283202\nv -1.523047 1.586146 -0.444300\nv -1.728016 1.344536 -0.656323\nv -1.815546 1.037839 -0.906679\nv -1.810727 0.682244 -1.158979\nv -1.788165 0.455138 -1.301172\nv -1.764957 0.177459 -1.467339\nv -1.701842 -0.448811 -1.830056\nv -1.672400 -1.013893 -2.108265\nv -1.626917 -1.431036 -2.280596\nv -1.703426 -1.507439 -1.654671\nv -1.813526 -1.568119 -0.884709\nv -1.934581 -1.572616 -0.164067\nv -2.085154 -1.548759 0.671415\nv -2.223489 -1.516222 1.435532\nv -2.363722 -1.437592 2.263513\nv -2.447603 -1.388010 2.855440\nv -2.519762 -1.330896 3.456814\nv -2.563498 -1.243940 3.861104\nv -2.571512 -1.022484 3.809650\nv -2.524592 -0.431876 3.627506\nv -1.795045 0.269981 3.397730\nv -1.384242 0.421227 3.304328\nv -0.849895 0.527273 3.173982\nv -0.583469 0.542373 3.102929\nv -0.287254 0.507046 3.054743\nv 0.007708 0.429886 3.018246\nv 0.545858 0.486348 2.993968\nv 0.809354 0.314136 2.977201\nv 1.069038 0.213489 2.970135\nv 1.418655 0.104377 2.958501\nv 1.564040 0.078228 2.928645\nv 1.660429 0.068400 2.870976\nv 1.746018 0.064677 2.788187\nv 1.815855 0.066667 2.669640\nv 1.870365 0.076872 2.449710\nv 1.895772 0.088258 2.239023\nv 1.831862 0.106980 2.001863\nv 1.659383 0.132911 1.925040\nv 1.496550 0.166111 1.908656\nv 0.909893 0.370963 1.910126\nv 0.637912 0.548642 1.914771\nv 0.010103 0.493065 1.887794\nv -1.039281 0.625632 1.881664\nv -1.848619 0.448024 1.832353\nv -2.185941 0.119003 1.638573\nv -2.243565 0.018472 1.560680\nv -2.262382 -0.079020 1.430750\nv -2.237195 -0.111385 1.238857\nv -2.213392 -0.076970 0.914727\nv -2.177079 0.008599 0.667062\nv -2.141183 0.108648 0.512757\nv -2.106112 0.239081 0.462536\nv -2.076790 0.404706 0.471561\nv -1.804711 0.963142 0.747409\nv -1.528445 1.191917 0.857370\nv -1.049631 1.301038 0.930129\nv 0.331601 0.950167 0.845836\nv 0.885842 0.803998 0.719162\nv 1.354517 0.398554 0.585561\nv 1.616173 0.263164 0.531770\nv 1.900721 0.153159 0.491153\nv 2.193276 0.093259 0.430440\nv 2.351903 0.083406 0.379706\nv 2.460336 0.089628 0.315872\nv 2.583167 0.118757 0.166860\nv 2.611215 0.136187 0.081729\nv 2.626887 0.200360 -0.256580\nv 2.558583 0.238118 -0.491777\nv 2.493900 0.244479 -0.547566\nv 2.397624 0.248334 -0.580007\nv 0.724021 0.426181 2.485624\nv 0.702333 0.441092 2.481169\nv 0.685928 0.453831 2.465020\nv 0.679042 0.461186 2.440705\nv 0.684150 0.460789 2.414511\nv 0.698751 0.453457 2.393888\nv 0.719614 0.440721 2.384128\nv 0.741296 0.425808 2.388581\nv 0.757701 0.413064 2.404739\nv 0.764586 0.405712 2.429070\nv 0.759480 0.406110 2.455245\nv 0.744883 0.413445 2.475862\nv 0.137432 0.499740 2.493534\nv 0.112606 0.492268 2.487185\nv 0.093735 0.487296 2.469543\nv 0.085682 0.486144 2.444507\nv 0.091334 0.489354 2.418621\nv 0.107877 0.495639 2.399166\nv 0.131653 0.503577 2.391171\nv 0.156482 0.511050 2.397497\nv 0.175355 0.516023 2.415133\nv 0.183409 0.517175 2.440165\nv 0.177756 0.513969 2.466050\nv 0.161212 0.507681 2.485518\nv 0.440213 0.532875 2.492312\nv 0.414455 0.537138 2.486754\nv 0.394837 0.541300 2.469719\nv 0.386421 0.544343 2.444976\nv 0.392204 0.545337 2.418933\nv 0.409298 0.544198 2.398974\nv 0.433929 0.541131 2.390242\nv 0.459686 0.536867 2.395779\nv 0.479302 0.532698 2.412801\nv 0.487726 0.529662 2.437556\nv 0.481936 0.528666 2.463591\nv 0.464844 0.529803 2.483561\nv -0.189611 0.509647 2.500166\nv -0.214671 0.517151 2.494867\nv -0.233825 0.523595 2.478027\nv -0.242135 0.527354 2.453336\nv -0.236653 0.527220 2.427226\nv -0.220146 0.523583 2.407059\nv -0.196252 0.517211 2.398039\nv -0.171191 0.509707 2.403341\nv -0.152035 0.503264 2.420186\nv -0.143724 0.499502 2.444873\nv -0.149208 0.499637 2.470993\nv -0.165719 0.503269 2.491153\nv -0.504226 0.568861 2.519583\nv -0.530068 0.572635 2.514067\nv -0.549803 0.576333 2.497072\nv -0.558346 0.579035 2.472336\nv -0.552649 0.579937 2.446257\nv -0.535589 0.578941 2.426246\nv -0.510935 0.576232 2.417436\nv -0.485095 0.572454 2.422950\nv -0.465360 0.568755 2.439964\nv -0.456822 0.566053 2.464709\nv -0.462512 0.565154 2.490769\nv -0.479571 0.566152 2.510782\nv 1.457825 0.402053 0.085287\nv 1.434586 0.414762 0.084091\nv 1.416351 0.426448 0.070298\nv 1.406826 0.434611 0.046763\nv 1.409184 0.436598 0.020262\nv 1.422336 0.432080 -0.001342\nv 1.443629 0.422071 -0.013570\nv 1.466947 0.409453 -0.012363\nv 1.485369 0.397979 0.001445\nv 1.495007 0.389949 0.024991\nv 1.492559 0.387868 0.051486\nv 1.479229 0.392178 0.073072\nv 0.939031 0.783208 0.192202\nv 0.920935 0.802818 0.191642\nv 0.906419 0.819438 0.178302\nv 0.898482 0.829631 0.154942\nv 0.899792 0.830067 0.128288\nv 0.909619 0.820971 0.106254\nv 0.925936 0.804212 0.093396\nv 0.944041 0.784604 0.093962\nv 0.958559 0.767984 0.107303\nv 0.966486 0.757788 0.130658\nv 0.965183 0.757351 0.157315\nv 0.955354 0.766454 0.179351\nv 1.188970 0.575375 0.141709\nv 1.169795 0.591367 0.140540\nv 1.153635 0.605498 0.127034\nv 1.144680 0.613999 0.102773\nv 1.146667 0.615305 0.076854\nv 1.157727 0.608549 0.054646\nv 1.175365 0.596052 0.042910\nv 1.195622 0.579483 0.043727\nv 1.211812 0.565120 0.057255\nv 1.220488 0.555865 0.080681\nv 1.218715 0.554668 0.107269\nv 1.207405 0.561630 0.129113\nv 0.735915 0.960924 0.247722\nv 0.712489 0.973657 0.246468\nv 0.694076 0.985239 0.232620\nv 0.684480 0.993276 0.209042\nv 0.686944 0.995191 0.182534\nv 0.700322 0.990649 0.160957\nv 0.721830 0.980580 0.148775\nv 0.745250 0.967854 0.150033\nv 0.763666 0.956272 0.163881\nv 0.773260 0.948237 0.187456\nv 0.770793 0.946322 0.213964\nv 0.757425 0.950860 0.235541\nv 0.463805 1.031626 0.302652\nv 0.437605 1.028112 0.298968\nv 0.417087 1.027794 0.283348\nv 0.406502 1.030750 0.259023\nv 0.409418 1.036196 0.233058\nv 0.424516 1.042452 0.213110\nv 0.448658 1.048225 0.203302\nv 0.474859 1.051741 0.206986\nv 0.495376 1.052057 0.222606\nv 0.505962 1.049104 0.246928\nv 0.503038 1.043656 0.272895\nv 0.487944 1.037398 0.292845\nv 1.472298 0.132484 2.425648\nv 1.747567 0.119127 1.946359\nv 1.883456 0.097893 2.090021\nv -0.703965 0.635241 1.890735\nv 1.181465 0.265467 1.902415\nv 1.181351 0.238175 2.205989\nv 1.133912 0.214644 2.672798\nv -0.342579 0.586924 1.899231\nv 0.886374 0.354285 2.197339\nv 0.836750 0.330356 2.678267\nv 0.604561 0.538401 2.198010\nv 0.567156 0.506459 2.694422\nv 0.318169 0.593054 1.907784\nv 0.281782 0.520093 3.002874\nv 0.309075 0.574818 2.181556\nv 0.008012 0.477155 2.164008\nv -0.333369 0.569326 2.169293\nv -0.675656 0.612728 2.186552\nv -0.619049 0.567691 2.778184\nv -0.307858 0.530486 2.738300\nv 0.003829 0.445331 2.716439\nv 0.289300 0.540022 2.708853\nv -0.899543 0.552522 2.841830\nv -0.992702 0.601262 2.201718\nv -1.538924 0.535313 1.882177\nv -2.272801 -0.006425 3.515402\nv -2.459544 -0.201914 3.562181\nv -2.373165 -0.098217 3.540223\nv -2.055198 0.157038 3.462908\nv -2.037664 0.307211 1.765302\nv -2.115110 -1.067448 0.683886\nv -2.380667 -1.045259 2.226215\nv -1.853812 -1.088163 -0.804895\nv -2.251689 -1.056651 1.445138\nv -1.962372 -1.084387 -0.165933\nv -1.747127 -1.052942 -1.527195\nv -2.469395 -1.037701 2.869508\nv -1.800287 -0.502677 -1.261378\nv -2.523133 -1.048833 3.336360\nv -2.136906 -0.722410 0.694638\nv -1.872987 -0.869810 -0.763738\nv -1.983795 -0.798853 -0.138137\nv -1.760316 -0.943017 -1.478364\nv -2.379635 -0.577589 2.169598\nv -2.277426 -0.647827 1.457376\nv -2.460895 -0.504199 2.888357\nv -2.475925 -0.503147 3.040903\nv -2.168203 -0.355366 0.751490\nv -2.018954 -0.423887 -0.062228\nv -2.347119 -0.319216 2.133609\nv -2.068788 -0.393293 0.206979\nv -2.270958 -0.316763 1.474235\nv -1.909621 -0.463283 -0.661801\nv -2.413048 -0.253452 2.885178\nv -1.753432 -0.133036 -1.643377\nv 2.317320 0.170908 -0.118913\nv 0.979278 0.751602 -0.376833\nv 0.553176 1.085508 -0.310973\nv 1.075588 0.599208 0.659465\nv 0.642755 0.935214 0.776421\nv 1.787580 0.338185 -0.524703\nv 1.815865 0.291917 -0.270740\nv 1.872437 0.199403 0.237189\nv 1.567556 0.384932 -0.222341\nv 1.597923 0.305076 0.277560\nv 1.336646 0.439812 0.330227\nv 1.298686 0.523121 -0.175977\nv 1.011795 0.726242 -0.117552\nv 1.060938 0.637337 0.399150\nv 0.861827 0.848274 0.457228\nv 0.815051 0.936294 -0.072188\nv 0.575184 1.058370 -0.039222\nv 0.634427 0.989093 0.500939\nv 0.231551 1.071121 0.011498\nv 0.308568 1.006225 0.569628\nv -0.441380 1.127613 0.920704\nv -0.532071 1.380107 -0.231935\nv 2.082405 0.231580 -0.312279\nv 2.156307 0.139285 0.182853\nv 2.629569 0.170906 -0.097351\nv 2.530491 0.102227 0.246654\nv 2.606513 0.222870 -0.387716\nv -0.508314 1.314560 0.058740\nv -0.465149 1.186763 0.640700\nv -1.967062 0.693698 0.608398\nv 2.279878 0.311761 -0.579854\nv 2.056232 0.334690 -0.550787\nv 1.568418 0.483341 -0.478201\nv 1.286620 0.596929 -0.428542\nv 0.820053 1.007646 -0.329397\nv 0.227224 1.157132 -0.259654\nv -1.055897 1.693881 -0.269815\nv -1.547110 1.637216 -0.428934\nv -1.767880 1.386153 -0.646232\nv -1.866051 1.067326 -0.905031\nv -1.864622 0.704451 -1.163992\nv -1.844913 0.466279 -1.310037\nv -1.821453 0.188605 -1.477687\nv -1.759346 -0.452134 -1.840324\nv -1.730364 -1.017205 -2.115567\nv -1.686495 -1.434434 -2.286883\nv -1.761298 -1.510753 -1.662647\nv -1.871225 -1.571431 -0.893818\nv -1.992092 -1.575929 -0.174242\nv -2.142658 -1.552070 0.661148\nv -2.280994 -1.519535 1.425358\nv -2.421509 -1.440905 2.255007\nv -2.505562 -1.391328 2.848124\nv -2.577864 -1.334209 3.450699\nv -2.621684 -1.247254 3.855793\nv -2.629689 -1.025798 3.804234\nv -2.582929 -0.430870 3.623008\nv -1.815081 0.324515 3.404622\nv -1.396575 0.478113 3.310230\nv -0.851586 0.585561 3.178666\nv -0.575787 0.600260 3.106598\nv -0.271101 0.563189 3.057854\nv -0.009852 0.485608 3.021319\nv 0.578076 0.534868 2.999518\nv 0.830538 0.368454 2.982098\nv 1.088699 0.267904 2.974893\nv 1.431516 0.161278 2.962800\nv 1.574194 0.135869 2.932744\nv 1.668873 0.126440 2.874947\nv 1.752998 0.123010 2.792042\nv 1.821737 0.125199 2.673408\nv 1.875586 0.135509 2.453433\nv 1.900855 0.146913 2.242730\nv 1.838503 0.165373 2.005695\nv 1.669353 0.190584 1.929124\nv 1.509641 0.222933 1.912972\nv 0.931075 0.425288 1.915011\nv 0.670135 0.597169 1.920321\nv -0.007458 0.548790 1.890872\nv -1.040975 0.683930 1.886347\nv -1.868660 0.502558 1.839246\nv -2.227395 0.160296 1.638120\nv -2.290998 0.052592 1.557743\nv -2.317123 -0.059300 1.424581\nv -2.295216 -0.110386 1.231409\nv -2.270898 -0.080282 0.904457\nv -2.234444 0.012668 0.656293\nv -2.197682 0.119795 0.502409\nv -2.162861 0.250223 0.453671\nv -2.130684 0.426915 0.466547\nv -1.844573 1.004760 0.757499\nv -1.552504 1.242987 0.872738\nv -1.035172 1.355098 0.947193\nv 0.335862 1.007731 0.855427\nv 0.923239 0.848809 0.723307\nv 1.383509 0.448939 0.591686\nv 1.641984 0.315205 0.538502\nv 1.918412 0.208352 0.499229\nv 2.202582 0.150324 0.439667\nv 2.356624 0.140955 0.389466\nv 2.461846 0.147314 0.325960\nv 2.580848 0.176357 0.177302\nv 2.607884 0.193723 0.092259\nv 2.622213 0.257782 -0.245942\nv 2.555183 0.295651 -0.481241\nv 2.492146 0.302108 -0.537174\nv 2.398477 0.306023 -0.569856\nv 0.756239 0.474703 2.491171\nv 0.734552 0.489616 2.486715\nv 0.718151 0.502352 2.470571\nv 0.711262 0.509708 2.446254\nv 0.716365 0.509308 2.420062\nv 0.730970 0.501975 2.399439\nv 0.751830 0.489239 2.389678\nv 0.773517 0.474327 2.394131\nv 0.789919 0.461585 2.410287\nv 0.796805 0.454234 2.434617\nv 0.791699 0.454628 2.460794\nv 0.777101 0.461965 2.481411\nv 0.119870 0.555467 2.496606\nv 0.095041 0.547994 2.490266\nv 0.076173 0.543020 2.472615\nv 0.068124 0.541869 2.447589\nv 0.073773 0.545075 2.421706\nv 0.090317 0.551369 2.402241\nv 0.114092 0.559298 2.394246\nv 0.138923 0.566773 2.400573\nv 0.157796 0.571750 2.418212\nv 0.165843 0.572905 2.443239\nv 0.160195 0.569693 2.469126\nv 0.143648 0.563403 2.488597\nv 0.448877 0.590589 2.496446\nv 0.423119 0.594852 2.490886\nv 0.403504 0.599016 2.473855\nv 0.395086 0.602057 2.449107\nv 0.400868 0.603050 2.423069\nv 0.417962 0.601914 2.403106\nv 0.442590 0.598843 2.394373\nv 0.468349 0.594578 2.399908\nv 0.487965 0.590418 2.416935\nv 0.496384 0.587379 2.441684\nv 0.490603 0.586380 2.467727\nv 0.473509 0.587522 2.487695\nv -0.173453 0.565796 2.503278\nv -0.198517 0.573300 2.497975\nv -0.217667 0.579739 2.481133\nv -0.225979 0.583496 2.456450\nv -0.220497 0.583366 2.430338\nv -0.203988 0.579733 2.410166\nv -0.180093 0.573354 2.401151\nv -0.155034 0.565856 2.406444\nv -0.135880 0.559411 2.423293\nv -0.127564 0.555648 2.447987\nv -0.133048 0.555782 2.474098\nv -0.149564 0.559417 2.494262\nv -0.496549 0.626750 2.523248\nv -0.522388 0.630526 2.517743\nv -0.542124 0.634221 2.500740\nv -0.550666 0.636923 2.476009\nv -0.544969 0.637819 2.449932\nv -0.527914 0.636829 2.429917\nv -0.503255 0.634117 2.421114\nv -0.477414 0.630338 2.426620\nv -0.457684 0.626642 2.443631\nv -0.449143 0.623941 2.468378\nv -0.454835 0.623042 2.494440\nv -0.471894 0.624035 2.514452\nv 1.485027 0.453408 0.091763\nv 1.462057 0.465974 0.090509\nv 1.444029 0.477551 0.076683\nv 1.434587 0.485672 0.053130\nv 1.436889 0.487692 0.026643\nv 1.449858 0.483266 0.005073\nv 1.470885 0.473400 -0.007110\nv 1.493932 0.460921 -0.005848\nv 1.512149 0.449556 0.007999\nv 1.521698 0.441559 0.031563\nv 1.519321 0.439456 0.058046\nv 1.506171 0.443666 0.079597\nv 0.981939 0.822890 0.194955\nv 0.963838 0.842499 0.194392\nv 0.949326 0.859121 0.181052\nv 0.941393 0.869313 0.157693\nv 0.942694 0.869752 0.131038\nv 0.952525 0.860647 0.109005\nv 0.968848 0.843897 0.096147\nv 0.986947 0.824286 0.096713\nv 1.001465 0.807663 0.110053\nv 1.009394 0.797472 0.133411\nv 1.008091 0.797035 0.160068\nv 0.998258 0.806131 0.182099\nv 1.225318 0.620912 0.146199\nv 1.205387 0.637364 0.145327\nv 1.189590 0.651767 0.131773\nv 1.181107 0.661070 0.108332\nv 1.182750 0.662230 0.081754\nv 1.193690 0.655218 0.059936\nv 1.211761 0.641549 0.047387\nv 1.231783 0.625173 0.048264\nv 1.247791 0.610947 0.061830\nv 1.256404 0.601749 0.085276\nv 1.254671 0.600520 0.111848\nv 1.243508 0.607355 0.133658\nv 0.763438 1.012172 0.253987\nv 0.740012 1.024908 0.252732\nv 0.721599 1.036489 0.238884\nv 0.712002 1.044522 0.215307\nv 0.714468 1.046441 0.188798\nv 0.727842 1.041896 0.167222\nv 0.749355 1.031833 0.155039\nv 0.772776 1.019100 0.156296\nv 0.791190 1.007520 0.170145\nv 0.800781 0.999486 0.193722\nv 0.798321 0.997566 0.220230\nv 0.784946 1.002110 0.241807\nv 0.454655 1.088383 0.313527\nv 0.428456 1.084866 0.309843\nv 0.407940 1.084550 0.294222\nv 0.397353 1.087507 0.269899\nv 0.400275 1.092952 0.243935\nv 0.415367 1.099210 0.223984\nv 0.439508 1.104978 0.214178\nv 0.465709 1.108497 0.217861\nv 0.486223 1.108812 0.233483\nv 0.496812 1.105858 0.257804\nv 0.493891 1.100412 0.283769\nv 0.478796 1.094155 0.303722\nv 1.485006 0.189426 2.429930\nv 1.755856 0.177188 1.950307\nv 1.888999 0.156473 2.093769\nv -0.696285 0.693128 1.894402\nv 1.200718 0.320050 1.907151\nv 1.200087 0.292983 2.210693\nv 1.152790 0.269393 2.677508\nv -0.326422 0.643074 1.902336\nv 0.907558 0.408606 2.202229\nv 0.857929 0.384679 2.683156\nv 0.636779 0.586924 2.203561\nv 0.599377 0.554983 2.699970\nv 0.326832 0.650772 1.911919\nv 0.290447 0.577808 3.007011\nv 0.317736 0.632528 2.185690\nv -0.009549 0.532882 2.167092\nv -0.317212 0.625474 2.172405\nv -0.667978 0.670606 2.190226\nv -0.611367 0.625573 2.781853\nv -0.291700 0.586634 2.741408\nv -0.013731 0.501053 2.719522\nv 0.297969 0.597736 2.712987\nv -0.901235 0.610819 2.846517\nv -0.994396 0.659562 2.206407\nv -1.551256 0.592201 1.888074\nv -2.314251 0.034867 3.514951\nv -2.514614 -0.182202 3.560349\nv -2.420605 -0.064097 3.537289\nv -2.085191 0.207143 3.466554\nv -2.067658 0.357314 1.768947\nv -2.172614 -1.070760 0.673618\nv -2.438443 -1.048574 2.217624\nv -1.911489 -1.091477 -0.814114\nv -2.309197 -1.059961 1.434976\nv -2.019885 -1.087703 -0.176097\nv -1.804972 -1.056257 -1.535349\nv -2.527354 -1.041013 2.862211\nv -1.857790 -0.505992 -1.271647\nv -2.581207 -1.052145 3.330000\nv -2.194410 -0.725723 0.684369\nv -1.930657 -0.873127 -0.773015\nv -2.041301 -0.802168 -0.148340\nv -1.818150 -0.946340 -1.486588\nv -2.437661 -0.576586 2.162184\nv -2.334942 -0.651139 1.447230\nv -2.519097 -0.503197 2.882388\nv -2.534158 -0.502148 3.035233\nv -2.225711 -0.358678 0.741222\nv -2.076458 -0.427198 -0.072497\nv -2.405312 -0.318217 2.127626\nv -2.126292 -0.396605 0.196711\nv -2.328990 -0.315765 1.466930\nv -1.967123 -0.466593 -0.672070\nv -2.471383 -0.252451 2.880703\nv -1.810796 -0.128968 -1.654145\nv 2.321661 0.228488 -0.109115\nv 1.020050 0.793311 -0.373432\nv 0.578661 1.137754 -0.304335\nv 1.116492 0.640779 0.662832\nv 0.668240 0.987456 0.783059\nv 1.805699 0.393243 -0.516685\nv 1.833880 0.347006 -0.262712\nv 1.890242 0.254563 0.245251\nv 1.592692 0.437302 -0.215484\nv 1.623564 0.357210 0.284323\nv 1.365552 0.490242 0.336370\nv 1.327476 0.573632 -0.169804\nv 1.045397 0.773436 -0.112589\nv 1.092789 0.684999 0.404360\nv 0.899221 0.893081 0.461372\nv 0.852450 0.981097 -0.068043\nv 0.600673 1.110617 -0.032582\nv 0.659913 1.041336 0.507575\nv 0.235812 1.128679 0.021094\nv 0.312836 1.063784 0.579222\nv -0.434090 1.184037 0.934352\nv -0.522532 1.420784 -0.220756\nv 2.092809 0.288475 -0.303189\nv 2.165989 0.196295 0.192036\nv 2.625235 0.228366 -0.086741\nv 2.529851 0.159899 0.256947\nv 2.602058 0.280317 -0.377094\nv -0.498765 1.356474 0.070094\nv -0.457874 1.239475 0.653825\nv -2.017566 0.723188 0.610045\nv -1.311882 1.674446 -0.355531\nv -1.311285 1.728759 -0.338129\nv -1.305439 1.336506 0.915207\nv -1.306035 1.282192 0.897805\nv 0.398502 1.077461 0.453835\nv 0.407697 1.047821 0.636787\nv 0.413248 1.014591 0.809010\nv 0.421090 1.006630 0.834961\nv 0.438680 0.990585 0.851849\nv 0.466030 0.967297 0.854770\nv 0.544793 0.906357 0.839145\nv 0.629025 0.848754 0.823147\nv 0.690880 0.801592 0.950172\nv 0.549448 0.895990 0.969432\nv 0.424532 0.998010 0.981444\nv 0.375625 1.043941 0.972751\nv 0.331080 1.089314 0.941526\nv 0.295129 1.128604 0.881618\nv 0.273559 1.153522 0.807317\nv 0.258040 1.197151 0.682083\nv 0.234469 1.242907 0.496846\nv 0.700417 0.822276 0.906258\nv 0.564243 0.912262 0.927453\nv 0.443471 1.009631 0.939221\nv 0.396123 1.053406 0.931220\nv 0.352977 1.096623 0.901957\nv 0.318214 1.133999 0.845626\nv 0.297479 1.157630 0.775684\nv 0.283001 1.199651 0.657711\nv 0.260764 1.243437 0.483236\nv 0.400067 1.102520 0.467565\nv 0.410183 1.071697 0.661094\nv 0.416552 1.037384 0.843270\nv 0.424764 1.028943 0.870713\nv 0.443028 1.011987 0.888606\nv 0.471454 0.987358 0.891755\nv 0.553333 0.923129 0.875393\nv 0.641194 0.862622 0.858652\nv 0.872439 0.741764 0.849242\nv 0.804008 0.780134 0.861119\nv 0.735606 0.818492 0.872992\nv 0.644585 0.873703 0.888444\nv 0.554286 0.936859 0.901737\nv 0.470411 1.003812 0.916487\nv 0.437003 1.033228 0.916839\nv 0.406908 1.061512 0.902857\nv 0.382691 1.085775 0.870087\nv 0.359613 1.135716 0.718132\nv 0.337391 1.179057 0.505918\nv 0.365363 1.104990 0.793958\nv 0.618207 0.864206 0.260243\nv 0.644847 0.845553 0.284010\nv 0.679625 0.822874 0.288497\nv 0.712296 0.802898 0.271682\nv 0.733223 0.791472 0.239221\nv 0.814019 0.740239 0.226663\nv 0.841366 0.721090 0.251052\nv 0.877044 0.697823 0.255682\nv 0.910421 0.677420 0.238431\nv 0.931941 0.665667 0.205112\nv 0.994106 0.624116 0.229225\nv 0.961635 0.640708 0.297646\nv 0.927891 0.660107 0.334549\nv 0.884392 0.686561 0.359234\nv 0.845692 0.709776 0.386215\nv 0.830007 0.718426 0.409205\nv 0.850211 0.713008 0.520858\nv 0.866642 0.710358 0.630493\nv 0.882209 0.706056 0.740145\nv 0.887661 0.702143 0.751380\nv 0.899979 0.694030 0.766390\nv 0.917264 0.683771 0.771512\nv 0.713717 0.797896 0.806840\nv 0.729379 0.789683 0.795999\nv 0.738275 0.785901 0.777308\nv 0.741323 0.785048 0.764597\nv 0.723636 0.789523 0.655405\nv 0.705435 0.793151 0.546080\nv 0.688535 0.807891 0.435061\nv 0.666663 0.823190 0.415777\nv 0.621771 0.853032 0.400944\nv 0.579283 0.880561 0.398264\nv 0.568322 0.888702 0.381095\nv 0.560748 0.896590 0.333354\nv 0.554071 0.905010 0.268100\nv 0.556222 0.905403 0.264825\nv 0.558715 0.905586 0.261487\nv 0.729732 0.809466 0.841582\nv 0.795872 0.772383 0.830103\nv 0.861960 0.735329 0.818633\nv 0.928073 0.698260 0.807158\nv 0.797361 0.754030 0.642715\nv 0.780034 0.757176 0.533237\nv 0.759247 0.763175 0.422138\nv 0.806139 0.762998 0.791535\nv 0.839196 0.744463 0.785797\nv 0.813832 0.754300 0.738565\nv 1.216780 0.619348 0.311905\nv 1.234792 0.584762 0.493326\nv 1.248876 0.546760 0.664070\nv 1.245083 0.545310 0.692039\nv 1.227451 0.548984 0.715035\nv 1.195463 0.558930 0.728250\nv 1.102158 0.594311 0.742469\nv 1.008850 0.636048 0.757258\nv 0.831295 0.722074 0.927180\nv 0.972129 0.644023 0.901376\nv 1.124884 0.573832 0.869623\nv 1.274007 0.522411 0.834100\nv 1.333927 0.507376 0.806526\nv 1.385458 0.498923 0.758630\nv 1.420261 0.498545 0.686443\nv 1.432405 0.504575 0.606295\nv 1.443996 0.532998 0.476352\nv 1.445858 0.564506 0.286705\nv 0.837026 0.744847 0.886431\nv 0.973322 0.669372 0.858909\nv 1.120345 0.600919 0.830996\nv 1.263545 0.550498 0.796977\nv 1.321088 0.535517 0.770780\nv 1.370620 0.526808 0.725435\nv 1.404203 0.525880 0.657245\nv 1.415971 0.531295 0.581662\nv 1.427619 0.558672 0.459157\nv 1.429963 0.588689 0.280417\nv 1.240390 0.632046 0.321808\nv 1.259727 0.596057 0.513738\nv 1.275048 0.556730 0.694360\nv 1.271114 0.555099 0.723911\nv 1.252658 0.558703 0.748174\nv 1.219115 0.568789 0.762075\nv 1.121293 0.605152 0.776878\nv 1.023591 0.648475 0.792318\nv 0.944357 0.701463 0.836763\nv 1.038854 0.652916 0.820051\nv 1.139100 0.609454 0.800300\nv 1.239666 0.573139 0.783060\nv 1.280622 0.560914 0.770513\nv 1.315261 0.552931 0.745297\nv 1.338850 0.550411 0.704233\nv 1.352544 0.579756 0.545901\nv 1.344708 0.615029 0.331187\nv 1.343701 0.557211 0.624257\nv 0.386668 1.105832 0.272782\nv 0.361742 1.123979 0.091745\nv 0.333815 1.141305 -0.090903\nv 0.304354 1.152380 -0.263544\nv 0.306705 1.151371 -0.291683\nv 0.320194 1.140512 -0.315182\nv 0.345825 1.119402 -0.329201\nv 0.424550 1.058506 -0.345202\nv 0.508792 1.000892 -0.361095\nv 0.543106 0.988579 -0.505338\nv 0.403085 1.081191 -0.472184\nv 0.280892 1.179766 -0.433354\nv 0.235855 1.220802 -0.403935\nv 0.199528 1.255772 -0.354192\nv 0.177145 1.277896 -0.280472\nv 0.171335 1.282871 -0.199553\nv 0.182003 1.293367 -0.066855\nv 0.196697 1.290702 0.124817\nv 0.216423 1.278362 0.312232\nv 0.561643 0.997875 -0.460609\nv 0.426297 1.086812 -0.431253\nv 0.308098 1.180927 -0.394157\nv 0.264393 1.220090 -0.366258\nv 0.228998 1.253500 -0.319177\nv 0.207024 1.274696 -0.249561\nv 0.201137 1.279539 -0.173257\nv 0.211342 1.290323 -0.048083\nv 0.225170 1.288478 0.132650\nv 0.243902 1.277268 0.309331\nv 0.372770 1.127162 0.276562\nv 0.361194 1.151709 0.084679\nv 0.332054 1.170558 -0.108442\nv 0.301398 1.183097 -0.290948\nv 0.303803 1.182002 -0.320696\nv 0.317731 1.170531 -0.345509\nv 0.344336 1.148208 -0.360308\nv 0.426178 1.084029 -0.377048\nv 0.514046 1.023510 -0.393697\nv 0.739440 0.910059 -0.460750\nv 0.671010 0.948425 -0.448873\nv 0.602606 0.986784 -0.437001\nv 0.511759 1.041777 -0.419832\nv 0.422249 1.103935 -0.398770\nv 0.338846 1.170291 -0.379395\nv 0.306784 1.198003 -0.365777\nv 0.280775 1.221117 -0.339495\nv 0.264143 1.235782 -0.297576\nv 0.272847 1.245505 -0.136483\nv 0.294134 1.233791 0.079859\nv 0.294191 1.239331 0.299322\nv 0.262705 1.234892 -0.217188\nv 0.604916 0.875311 0.219849\nv 0.609759 0.874895 0.177031\nv 0.630691 0.863465 0.144571\nv 0.663306 0.843526 0.127750\nv 0.698138 0.820812 0.132243\nv 0.724775 0.802162 0.156010\nv 0.737973 0.791174 0.195469\nv 0.800276 0.751771 0.184128\nv 0.805128 0.751488 0.139100\nv 0.826620 0.739749 0.105800\nv 0.860076 0.719295 0.088535\nv 0.895675 0.696080 0.093179\nv 0.923049 0.676916 0.117548\nv 0.936697 0.665504 0.159150\nv 0.996961 0.627394 0.148135\nv 0.978146 0.644311 0.072017\nv 0.933219 0.676666 0.017743\nv 0.893345 0.703822 -0.005722\nv 0.846506 0.734497 -0.013910\nv 0.803842 0.762732 -0.025990\nv 0.784144 0.776456 -0.042513\nv 0.782221 0.800380 -0.152341\nv 0.776139 0.824832 -0.260347\nv 0.769680 0.848444 -0.368218\nv 0.772700 0.847610 -0.380939\nv 0.781599 0.843822 -0.399600\nv 0.797263 0.835615 -0.410440\nv 0.593717 0.949741 -0.375112\nv 0.611000 0.939476 -0.369992\nv 0.623312 0.931368 -0.355013\nv 0.628794 0.927437 -0.343765\nv 0.633942 0.905513 -0.235660\nv 0.638267 0.882057 -0.127350\nv 0.642673 0.865922 -0.016656\nv 0.625442 0.875351 0.009775\nv 0.585145 0.899380 0.040178\nv 0.544734 0.924276 0.057993\nv 0.537599 0.927576 0.078484\nv 0.539818 0.923076 0.127205\nv 0.546394 0.914725 0.192477\nv 0.548362 0.914847 0.195401\nv 0.551469 0.914250 0.198118\nv 0.560511 0.907555 0.228546\nv 0.602833 0.970041 -0.408328\nv 0.668974 0.932954 -0.419807\nv 0.735061 0.895903 -0.431277\nv 0.801175 0.858832 -0.442752\nv 0.707408 0.869114 -0.247244\nv 0.712600 0.845169 -0.139084\nv 0.713384 0.821206 -0.029580\nv 0.686424 0.914480 -0.387617\nv 0.719481 0.895947 -0.393354\nv 0.704213 0.893004 -0.341127\nv 1.199406 0.650809 0.131811\nv 1.180018 0.665865 -0.050186\nv 1.160912 0.678246 -0.234364\nv 1.139985 0.684548 -0.408485\nv 1.130699 0.690047 -0.434605\nv 1.108965 0.698910 -0.451995\nv 1.075257 0.711033 -0.455720\nv 0.981915 0.746462 -0.441877\nv 0.888616 0.788186 -0.426983\nv 0.683210 0.909454 -0.531392\nv 0.824358 0.831009 -0.554133\nv 0.978520 0.759033 -0.571993\nv 1.130367 0.704165 -0.580697\nv 1.194155 0.684238 -0.570159\nv 1.253909 0.665381 -0.537086\nv 1.302276 0.647837 -0.475647\nv 1.330182 0.633927 -0.400575\nv 1.367960 0.629212 -0.272585\nv 1.408086 0.612300 -0.085325\nv 1.436566 0.595053 0.100571\nv 0.697462 0.921445 -0.488222\nv 0.834547 0.844973 -0.507959\nv 0.982398 0.775470 -0.527709\nv 1.128171 0.721796 -0.536400\nv 1.189359 0.702201 -0.526700\nv 1.246642 0.683684 -0.495698\nv 1.293013 0.666577 -0.437941\nv 1.319626 0.653205 -0.367278\nv 1.355961 0.649344 -0.246638\nv 1.394369 0.633728 -0.070170\nv 1.421502 0.617809 0.105053\nv 1.221866 0.664852 0.131335\nv 1.201516 0.681234 -0.061078\nv 1.181597 0.694919 -0.255799\nv 1.159894 0.702442 -0.439857\nv 1.150154 0.708159 -0.467497\nv 1.127363 0.717248 -0.485940\nv 1.091997 0.729640 -0.489988\nv 0.994135 0.766052 -0.475561\nv 0.896443 0.809363 -0.460032\nv 0.811357 0.869757 -0.473229\nv 0.906030 0.820987 -0.488224\nv 1.007062 0.776529 -0.500205\nv 1.108099 0.739619 -0.512823\nv 1.150401 0.725691 -0.512104\nv 1.189130 0.712535 -0.497053\nv 1.220301 0.700418 -0.463429\nv 1.265778 0.689546 -0.308716\nv 1.301453 0.669762 -0.094871\nv 1.327583 0.649679 0.118653\nv 1.241041 0.687110 -0.386888\nv 0.311054 1.222654 0.295496\nv 0.348808 1.179967 0.374718\nv 0.331156 1.202303 0.200850\nv 0.398598 1.120975 0.380107\nv 0.377524 1.147642 0.172541\nv 0.320435 1.187068 0.334565\nv 0.339970 1.164208 0.360465\nv 0.382077 1.119697 0.360200\nv 0.324953 1.207179 0.344104\nv 0.313953 1.220919 0.242964\nv 0.311554 1.198305 0.247095\nv 0.324994 1.183157 0.212966\nv 0.309096 1.199319 0.292333\nv 0.366108 1.140240 0.193550\nv 0.395292 1.094698 0.363426\nv 0.376911 1.117958 0.182381\nv 0.512111 0.899876 0.263678\nv 0.519001 0.898487 0.261714\nv 0.524984 0.897492 0.257987\nv 0.529839 0.896910 0.252803\nv 0.533345 0.896756 0.246470\nv 0.535273 0.897054 0.239293\nv 0.535405 0.897823 0.231582\nv 0.533655 0.899000 0.224125\nv 0.530269 0.900453 0.217664\nv 0.525531 0.902090 0.212440\nv 0.519724 0.903820 0.208691\nv 0.513124 0.905556 0.206657\nv 0.506016 0.907206 0.206578\nv 0.506989 0.906037 0.215689\nv 0.516883 0.901846 0.234076\nv 0.511192 0.900983 0.255065\nv 0.527609 0.937635 0.266871\nv 0.532971 0.932510 0.264591\nv 0.537581 0.928155 0.260579\nv 0.541271 0.924724 0.255154\nv 0.543874 0.922372 0.248634\nv 0.545227 0.921252 0.241337\nv 0.545152 0.921519 0.233584\nv 0.543607 0.923199 0.226168\nv 0.540802 0.926070 0.219829\nv 0.536963 0.929906 0.214790\nv 0.532318 0.934483 0.211283\nv 0.527094 0.939578 0.209534\nv 0.521512 0.944965 0.209772\nv 0.522485 0.943795 0.218883\nv 0.530674 0.935427 0.236915\nv 0.526690 0.938740 0.258258\nv 0.557780 0.957095 0.266149\nv 0.560161 0.950050 0.263940\nv 0.562093 0.943967 0.259992\nv 0.563513 0.939071 0.254622\nv 0.564366 0.935584 0.248144\nv 0.564584 0.933737 0.240874\nv 0.564108 0.933745 0.233130\nv 0.562963 0.935683 0.225705\nv 0.561291 0.939284 0.219338\nv 0.559204 0.944253 0.214258\nv 0.556830 0.950295 0.210697\nv 0.554285 0.957117 0.208884\nv 0.551684 0.964426 0.209049\nv 0.552656 0.963258 0.218161\nv 0.557515 0.952741 0.236273\nv 0.556861 0.958203 0.257536\nv 0.593316 0.961097 0.262869\nv 0.592189 0.953655 0.260984\nv 0.590964 0.947218 0.257328\nv 0.589711 0.942021 0.252203\nv 0.588494 0.938305 0.245916\nv 0.587380 0.936302 0.238769\nv 0.586434 0.936260 0.231069\nv 0.585760 0.938252 0.223600\nv 0.585421 0.942002 0.217111\nv 0.585402 0.947203 0.211840\nv 0.585702 0.953548 0.208031\nv 0.586311 0.960726 0.205927\nv 0.587221 0.968426 0.205769\nv 0.588192 0.967260 0.214880\nv 0.589131 0.956302 0.233354\nv 0.592395 0.962204 0.254257\nv 0.626657 0.948786 0.257729\nv 0.622236 0.942562 0.256352\nv 0.618052 0.937216 0.253152\nv 0.614291 0.932946 0.248415\nv 0.611135 0.929941 0.242427\nv 0.608769 0.928406 0.235473\nv 0.607379 0.928525 0.227840\nv 0.607150 0.930354 0.220304\nv 0.608060 0.933642 0.213621\nv 0.609982 0.938130 0.208051\nv 0.612791 0.943545 0.203856\nv 0.616359 0.949630 0.201296\nv 0.620561 0.956118 0.200630\nv 0.621536 0.954949 0.209741\nv 0.618792 0.945351 0.228782\nv 0.625738 0.949895 0.249117\nv 0.650711 0.922784 0.251823\nv 0.643915 0.919127 0.251030\nv 0.637593 0.916091 0.248354\nv 0.632023 0.913777 0.244061\nv 0.627469 0.912286 0.238417\nv 0.624201 0.911726 0.231684\nv 0.622491 0.912189 0.224130\nv 0.622581 0.913673 0.216515\nv 0.624394 0.915987 0.209610\nv 0.627714 0.918959 0.203698\nv 0.632332 0.922419 0.199058\nv 0.638037 0.926193 0.195973\nv 0.644615 0.930114 0.194724\nv 0.645587 0.928947 0.203835\nv 0.640191 0.922217 0.223529\nv 0.649791 0.923891 0.243211\nv 0.659113 0.889975 0.246714\nv 0.651362 0.889689 0.246455\nv 0.644188 0.889687 0.244260\nv 0.637890 0.889942 0.240375\nv 0.632773 0.890442 0.235046\nv 0.629144 0.891161 0.228517\nv 0.627305 0.892078 0.221034\nv 0.627524 0.893106 0.213348\nv 0.629699 0.894139 0.206240\nv 0.633581 0.895126 0.200012\nv 0.638925 0.896015 0.194965\nv 0.645487 0.896758 0.191399\nv 0.653018 0.897305 0.189615\nv 0.653990 0.896135 0.198726\nv 0.647528 0.893176 0.219017\nv 0.658194 0.891081 0.238101\nv 0.652265 0.854718 0.242919\nv 0.645189 0.857899 0.243033\nv 0.638619 0.861007 0.241174\nv 0.632831 0.863904 0.237572\nv 0.628112 0.866440 0.232462\nv 0.624737 0.868474 0.226074\nv 0.622988 0.869857 0.218642\nv 0.623119 0.870421 0.210905\nv 0.625037 0.870138 0.203656\nv 0.628523 0.869085 0.197209\nv 0.633356 0.867337 0.191878\nv 0.639312 0.864966 0.187977\nv 0.646172 0.862048 0.185820\nv 0.647144 0.860881 0.194931\nv 0.641435 0.861789 0.215638\nv 0.651347 0.855825 0.234307\nv 0.630327 0.826069 0.241584\nv 0.625404 0.832061 0.241828\nv 0.620769 0.837702 0.240086\nv 0.616624 0.842741 0.236585\nv 0.613174 0.846935 0.231552\nv 0.610619 0.850034 0.225214\nv 0.609161 0.851795 0.217800\nv 0.608999 0.851982 0.210045\nv 0.610099 0.850631 0.202747\nv 0.612315 0.847923 0.196222\nv 0.615506 0.844030 0.190790\nv 0.619527 0.839130 0.186772\nv 0.624230 0.833400 0.184484\nv 0.625204 0.832229 0.193595\nv 0.621901 0.836282 0.214448\nv 0.629408 0.827173 0.232972\nv 0.597962 0.810114 0.242990\nv 0.596218 0.817673 0.243097\nv 0.594441 0.824721 0.241231\nv 0.592719 0.830952 0.237624\nv 0.591139 0.836073 0.232510\nv 0.589791 0.839768 0.226120\nv 0.588760 0.841739 0.218686\nv 0.588171 0.841713 0.210950\nv 0.588063 0.839771 0.203704\nv 0.588411 0.836137 0.197260\nv 0.589179 0.831050 0.191934\nv 0.590340 0.824742 0.188041\nv 0.591866 0.817444 0.185891\nv 0.592838 0.816272 0.195002\nv 0.593088 0.822077 0.215701\nv 0.597044 0.811218 0.234378\nv 0.562056 0.810250 0.246840\nv 0.563839 0.817796 0.246569\nv 0.565233 0.824832 0.244363\nv 0.566197 0.831054 0.240468\nv 0.566692 0.836163 0.235131\nv 0.566684 0.839854 0.228598\nv 0.566128 0.841827 0.221114\nv 0.565065 0.841801 0.213428\nv 0.563618 0.839862 0.206326\nv 0.561888 0.836237 0.200105\nv 0.559970 0.831160 0.195067\nv 0.557964 0.824863 0.191512\nv 0.555960 0.817579 0.189741\nv 0.556933 0.816408 0.198852\nv 0.561121 0.822199 0.219129\nv 0.561135 0.811353 0.238228\nv 0.530248 0.826446 0.252315\nv 0.535154 0.832403 0.251506\nv 0.539356 0.838006 0.248816\nv 0.542702 0.843018 0.244511\nv 0.545040 0.847191 0.238858\nv 0.546215 0.850279 0.232120\nv 0.546080 0.852036 0.224564\nv 0.544595 0.852227 0.216951\nv 0.541964 0.850889 0.210053\nv 0.538393 0.848202 0.204149\nv 0.534095 0.844335 0.199520\nv 0.529279 0.839470 0.196449\nv 0.524152 0.833776 0.195216\nv 0.525127 0.832608 0.204327\nv 0.532804 0.836618 0.224003\nv 0.529329 0.827553 0.243703\nv 0.509385 0.855066 0.258216\nv 0.516350 0.858190 0.256825\nv 0.522401 0.861253 0.253611\nv 0.527312 0.864109 0.248862\nv 0.530862 0.866613 0.242865\nv 0.532818 0.868626 0.235906\nv 0.532961 0.870004 0.228271\nv 0.531198 0.870573 0.220737\nv 0.527787 0.870312 0.214059\nv 0.523005 0.869290 0.208499\nv 0.517139 0.867582 0.204315\nv 0.510473 0.865260 0.201767\nv 0.503291 0.862396 0.201116\nv 0.504264 0.861225 0.210227\nv 0.514240 0.862077 0.229253\nv 0.508467 0.856171 0.249604\nv 0.490696 0.909383 0.267185\nv 0.497520 0.912730 0.265835\nv 0.503450 0.915983 0.262660\nv 0.508260 0.918996 0.257942\nv 0.511733 0.921622 0.251968\nv 0.513644 0.923709 0.245024\nv 0.513769 0.925112 0.237395\nv 0.512024 0.925655 0.229855\nv 0.508659 0.925320 0.223163\nv 0.503952 0.924178 0.217578\nv 0.498188 0.922313 0.213364\nv 0.491641 0.919798 0.210779\nv 0.484600 0.916713 0.210085\nv 0.485573 0.915544 0.219196\nv 0.495393 0.916640 0.238269\nv 0.489774 0.910488 0.258572\nv 0.467630 0.968273 0.277207\nv 0.474348 0.971847 0.275898\nv 0.480181 0.975305 0.272760\nv 0.484912 0.978493 0.268073\nv 0.488320 0.981251 0.262124\nv 0.490188 0.983426 0.255194\nv 0.490301 0.984861 0.247571\nv 0.488570 0.985374 0.240026\nv 0.485246 0.984949 0.233318\nv 0.480604 0.983675 0.227710\nv 0.474918 0.981634 0.223463\nv 0.468469 0.978915 0.220842\nv 0.461534 0.975602 0.220107\nv 0.462508 0.974431 0.229218\nv 0.472210 0.975784 0.248336\nv 0.466713 0.969376 0.268594\nv 0.442263 1.026678 0.287413\nv 0.448866 1.030477 0.286146\nv 0.454598 1.034139 0.283043\nv 0.459241 1.037499 0.278388\nv 0.462581 1.040389 0.272463\nv 0.464407 1.042651 0.265549\nv 0.464503 1.044114 0.257931\nv 0.462787 1.044598 0.250380\nv 0.459506 1.044086 0.243657\nv 0.454932 1.042681 0.238025\nv 0.449335 1.040468 0.233748\nv 0.442990 1.037547 0.231089\nv 0.436169 1.034008 0.230313\nv 0.437143 1.032840 0.239424\nv 0.446714 1.034442 0.258589\nv 0.441346 1.027783 0.278801\nv 0.414604 1.084516 0.297790\nv 0.421082 1.088537 0.296565\nv 0.426703 1.092398 0.293499\nv 0.431253 1.095923 0.288876\nv 0.434525 1.098945 0.282975\nv 0.436304 1.101289 0.276077\nv 0.436381 1.102782 0.268464\nv 0.434684 1.103235 0.260908\nv 0.431448 1.102643 0.254169\nv 0.426943 1.101106 0.248513\nv 0.421442 1.098724 0.244204\nv 0.415205 1.095604 0.241508\nv 0.408510 1.091845 0.240691\nv 0.409480 1.090677 0.249802\nv 0.418917 1.092526 0.269013\nv 0.413683 1.085623 0.289178\nv 0.384654 1.141696 0.308328\nv 0.391001 1.145934 0.307144\nv 0.396506 1.149989 0.304116\nv 0.400956 1.153679 0.299525\nv 0.404150 1.156828 0.293649\nv 0.405881 1.159254 0.286767\nv 0.405945 1.160778 0.279160\nv 0.404263 1.161200 0.271598\nv 0.401078 1.160527 0.264843\nv 0.396649 1.158862 0.259161\nv 0.391242 1.156318 0.254821\nv 0.385123 1.153001 0.252088\nv 0.378558 1.149025 0.251228\nv 0.379531 1.147859 0.260339\nv 0.388819 1.149948 0.279597\nv 0.383735 1.142803 0.299715\nv 0.352424 1.198130 0.319013\nv 0.358637 1.202579 0.317871\nv 0.364018 1.206823 0.314882\nv 0.368364 1.210676 0.310322\nv 0.371479 1.213950 0.304470\nv 0.373157 1.216457 0.297604\nv 0.373199 1.218009 0.290002\nv 0.371538 1.218404 0.282435\nv 0.368404 1.217648 0.275664\nv 0.364055 1.215858 0.269958\nv 0.358754 1.213152 0.265585\nv 0.352759 1.209647 0.262814\nv 0.346328 1.205462 0.261914\nv 0.347302 1.204291 0.271025\nv 0.356440 1.206617 0.290328\nv 0.351504 1.199235 0.310401\nv 0.750424 0.700542 0.050364\nv 0.710147 0.722488 0.113554\nv 0.701214 0.723347 0.191119\nv 0.726015 0.702889 0.262275\nv 0.777909 0.666593 0.307954\nv 0.842986 0.624185 0.315920\nv 0.903812 0.587031 0.284036\nv 0.944088 0.565081 0.220845\nv 0.953021 0.564225 0.143280\nv 0.928219 0.584684 0.072123\nv 0.876326 0.620980 0.026444\nv 0.811249 0.663386 0.018479\nv 0.783872 0.679191 0.099204\nv 0.760381 0.691991 0.136058\nv 0.755171 0.692492 0.181295\nv 0.769637 0.680560 0.222795\nv 0.799899 0.659390 0.249437\nv 0.837856 0.634657 0.254082\nv 0.873330 0.612988 0.235487\nv 0.896820 0.600188 0.198632\nv 0.902031 0.599686 0.153394\nv 0.887565 0.611620 0.111894\nv 0.857301 0.632788 0.085253\nv 0.819346 0.657521 0.080608\nv 0.791991 0.681432 0.106447\nv 0.770878 0.692937 0.139574\nv 0.766194 0.693387 0.180236\nv 0.779198 0.682662 0.217540\nv 0.806401 0.663633 0.241488\nv 0.840518 0.641403 0.245663\nv 0.872406 0.621923 0.228949\nv 0.893520 0.610418 0.195820\nv 0.898202 0.609968 0.155158\nv 0.885200 0.620695 0.117855\nv 0.857997 0.639722 0.093907\nv 0.823880 0.661951 0.089731\nv 0.803631 0.699509 0.107587\nv 0.782518 0.711014 0.140715\nv 0.777835 0.711463 0.181377\nv 0.790836 0.700737 0.218681\nv 0.818040 0.681711 0.242629\nv 0.852157 0.659480 0.246803\nv 0.884046 0.640001 0.230089\nv 0.905160 0.628496 0.196961\nv 0.909843 0.628044 0.156298\nv 0.896841 0.638770 0.118996\nv 0.869637 0.657800 0.095047\nv 0.835521 0.680029 0.090872\nv 0.830697 0.741540 0.110240\nv 0.809583 0.753046 0.143366\nv 0.804898 0.753497 0.184030\nv 0.817903 0.742770 0.221333\nv 0.845106 0.723742 0.245281\nv 0.879221 0.701510 0.249455\nv 0.911110 0.682032 0.232741\nv 0.932226 0.670525 0.199613\nv 0.936908 0.670076 0.158950\nv 0.923905 0.680803 0.121648\nv 0.896701 0.699830 0.097699\nv 0.862586 0.722062 0.093524\nv 0.829774 0.745727 0.106657\nv 0.807374 0.757933 0.141803\nv 0.802405 0.758409 0.184943\nv 0.816200 0.747033 0.224519\nv 0.845061 0.726844 0.249926\nv 0.881256 0.703256 0.254357\nv 0.915089 0.682592 0.236622\nv 0.937489 0.670386 0.201477\nv 0.942458 0.669906 0.158336\nv 0.928664 0.681288 0.118759\nv 0.899801 0.701474 0.093353\nv 0.863606 0.725059 0.088923\nv 0.821362 0.750061 0.095017\nv 0.794977 0.764439 0.136414\nv 0.789125 0.765000 0.187229\nv 0.805375 0.751598 0.233845\nv 0.839369 0.727819 0.263771\nv 0.882002 0.700038 0.268990\nv 0.921852 0.675698 0.248101\nv 0.948237 0.661320 0.206704\nv 0.954089 0.660756 0.155888\nv 0.937841 0.674159 0.109274\nv 0.903845 0.697939 0.079346\nv 0.861211 0.725721 0.074128\nv 0.823194 0.750613 0.096621\nv 0.797333 0.764707 0.137194\nv 0.791596 0.765256 0.187000\nv 0.807522 0.752120 0.232688\nv 0.840842 0.728814 0.262019\nv 0.882628 0.701585 0.267133\nv 0.921685 0.677728 0.246660\nv 0.947544 0.663636 0.206086\nv 0.953279 0.663084 0.156281\nv 0.937356 0.676220 0.110593\nv 0.904036 0.699527 0.081261\nv 0.862250 0.726756 0.076148\nv -0.010161 0.580740 2.626777\nv -0.011851 0.560655 2.811244\nv -0.014760 0.535723 2.984926\nv -0.007667 0.531322 3.011920\nv 0.012077 0.521989 3.031289\nv 0.044746 0.508387 3.038109\nv 0.139515 0.474343 3.033494\nv 0.238487 0.445155 3.028807\nv 0.297913 0.423078 3.163592\nv 0.133250 0.469664 3.164040\nv -0.017332 0.528394 3.158350\nv -0.076689 0.556696 3.142447\nv -0.129356 0.585169 3.104585\nv -0.168991 0.609690 3.039371\nv -0.189109 0.624581 2.962039\nv -0.203792 0.657667 2.833518\nv -0.220373 0.688566 2.644487\nv 0.305305 0.444428 3.119585\nv 0.146755 0.488501 3.122704\nv 0.001537 0.544083 3.117430\nv -0.055761 0.570835 3.102491\nv -0.106654 0.597747 3.066837\nv -0.144962 0.620919 3.005401\nv -0.164360 0.634968 2.932555\nv -0.178337 0.667058 2.811444\nv -0.194199 0.696803 2.633352\nv -0.017766 0.605438 2.639064\nv -0.019350 0.584818 2.834199\nv -0.022208 0.559394 3.017918\nv -0.014777 0.554695 3.046456\nv 0.005773 0.544733 3.066941\nv 0.039846 0.530194 3.074168\nv 0.138646 0.493967 3.069301\nv 0.242013 0.463117 3.064389\nv 0.498705 0.419411 3.083596\nv 0.420986 0.435080 3.086792\nv 0.343297 0.450749 3.089989\nv 0.238688 0.475553 3.093647\nv 0.132571 0.508069 3.094751\nv 0.031224 0.546222 3.097668\nv -0.009393 0.563872 3.093173\nv -0.045009 0.581061 3.074807\nv -0.071841 0.595703 3.038549\nv -0.092763 0.631684 2.882393\nv -0.104470 0.659933 2.666819\nv -0.086014 0.606431 2.960132\nv 0.283290 0.440347 2.467393\nv 0.311663 0.431530 2.494590\nv 0.351013 0.420846 2.503615\nv 0.389805 0.411470 2.491111\nv 0.416540 0.406141 2.461462\nv 0.509953 0.382045 2.459498\nv 0.539082 0.372989 2.487408\nv 0.579446 0.362029 2.496694\nv 0.619083 0.352452 2.483846\nv 0.646568 0.346975 2.453417\nv 0.715508 0.327374 2.485606\nv 0.672455 0.335075 2.549625\nv 0.630691 0.344150 2.582032\nv 0.578840 0.356563 2.600970\nv 0.532273 0.367451 2.622829\nv 0.512352 0.371487 2.643715\nv 0.521275 0.375784 2.756880\nv 0.525998 0.381486 2.867521\nv 0.530405 0.385352 2.978203\nv 0.535565 0.383641 2.990107\nv 0.548102 0.380165 3.006645\nv 0.567044 0.375901 3.013946\nv 0.335869 0.422508 3.023455\nv 0.354347 0.419231 3.014617\nv 0.365902 0.417844 2.997085\nv 0.370396 0.417614 2.984785\nv 0.363882 0.413268 2.874356\nv 0.357152 0.407958 2.763798\nv 0.348452 0.413561 2.651011\nv 0.325137 0.420794 2.628911\nv 0.275131 0.434866 2.608241\nv 0.226815 0.447828 2.600011\nv 0.215784 0.451688 2.581447\nv 0.211279 0.455476 2.532824\nv 0.209322 0.459544 2.466846\nv 0.211584 0.460489 2.463764\nv 0.214244 0.461338 2.460666\nv 0.343819 0.439453 3.058769\nv 0.418937 0.424307 3.055679\nv 0.493996 0.409176 3.052591\nv 0.569081 0.394037 3.049503\nv 0.445824 0.401945 2.870666\nv 0.440085 0.396439 2.760067\nv 0.430374 0.392530 2.647364\nv 0.435607 0.417452 3.018854\nv 0.473150 0.409883 3.017309\nv 0.451158 0.410039 2.967438\nv 0.918961 0.394021 2.588593\nv 0.927285 0.371914 2.772649\nv 0.934066 0.345039 2.945935\nv 0.927947 0.343292 2.973470\nv 0.907698 0.341995 2.994484\nv 0.872987 0.341945 3.004073\nv 0.772384 0.347157 3.007483\nv 0.669781 0.358424 3.011080\nv 0.457481 0.390214 3.158449\nv 0.617296 0.358794 3.150461\nv 0.786636 0.338357 3.137188\nv 0.947219 0.334535 3.118710\nv 1.011444 0.337968 3.097726\nv 1.067881 0.344481 3.055378\nv 1.108601 0.352805 2.986859\nv 1.126768 0.359990 2.907954\nv 1.142878 0.386861 2.778163\nv 1.155177 0.411949 2.587948\nv 0.460297 0.412465 3.117110\nv 0.615215 0.382044 3.106841\nv 0.778191 0.361598 3.096755\nv 0.932705 0.356939 3.079163\nv 0.994516 0.359727 3.059327\nv 1.048868 0.365451 3.019345\nv 1.088177 0.372988 2.954718\nv 1.105689 0.379605 2.880355\nv 1.121383 0.405715 2.758024\nv 1.133433 0.429844 2.578783\nv 0.936393 0.413670 2.599851\nv 0.945282 0.390941 2.794558\nv 0.952588 0.363473 2.977854\nv 0.946223 0.361553 3.006962\nv 0.925079 0.359975 3.029160\nv 0.888782 0.359597 3.039281\nv 0.783544 0.364362 3.042799\nv 0.676229 0.375798 3.046542\nv 0.580378 0.402962 3.080237\nv 0.686382 0.385532 3.075246\nv 0.796604 0.374626 3.067460\nv 0.904684 0.370684 3.061772\nv 0.948507 0.371359 3.053808\nv 0.986403 0.373749 3.032417\nv 1.013859 0.377464 2.993929\nv 1.034691 0.405050 2.836056\nv 1.039325 0.429999 2.619808\nv 1.024867 0.383133 2.914476\nv -0.010782 0.598857 2.444029\nv -0.020688 0.603214 2.260705\nv -0.033011 0.605815 2.075551\nv -0.045945 0.602284 1.900578\nv -0.040426 0.601244 1.872886\nv -0.021856 0.594417 1.851424\nv 0.010322 0.581864 1.841118\nv 0.105082 0.547843 1.836122\nv 0.204054 0.518647 1.831543\nv 0.255594 0.513406 1.692076\nv 0.091336 0.559132 1.706570\nv -0.058468 0.616197 1.727992\nv -0.116716 0.642133 1.750621\nv -0.167030 0.665580 1.794619\nv -0.202780 0.681812 1.864501\nv -0.218384 0.687067 1.944097\nv -0.225567 0.704149 2.076343\nv -0.231191 0.711654 2.268367\nv -0.228655 0.711397 2.457203\nv 0.265562 0.529256 1.737685\nv 0.107250 0.572823 1.749056\nv -0.037230 0.626833 1.769389\nv -0.093486 0.651356 1.790743\nv -0.142159 0.673532 1.832273\nv -0.176805 0.688888 1.898170\nv -0.191951 0.693864 1.973179\nv -0.198860 0.710860 2.097888\nv -0.204394 0.718562 2.278910\nv -0.202002 0.718765 2.456920\nv -0.030836 0.614950 2.445225\nv -0.028898 0.629203 2.251967\nv -0.041722 0.632575 2.056201\nv -0.055187 0.629785 1.871226\nv -0.049418 0.628634 1.841945\nv -0.030110 0.621322 1.819254\nv 0.003442 0.607896 1.808335\nv 0.102230 0.571694 1.803088\nv 0.205600 0.540838 1.798266\nv 0.460616 0.500709 1.759197\nv 0.382899 0.516379 1.762394\nv 0.305209 0.532047 1.765589\nv 0.200648 0.556747 1.770985\nv 0.094756 0.588781 1.779943\nv -0.006453 0.626647 1.787534\nv -0.046685 0.643473 1.796452\nv -0.081133 0.658163 1.818792\nv -0.105790 0.668168 1.858044\nv -0.117611 0.684722 2.018380\nv -0.116858 0.686372 2.236074\nv -0.141787 0.697953 2.453880\nv -0.115412 0.669183 1.937866\nv 0.271615 0.445640 2.425354\nv 0.280871 0.445513 2.383267\nv 0.307611 0.440182 2.353618\nv 0.346339 0.430822 2.341101\nv 0.385749 0.420123 2.350140\nv 0.414121 0.411305 2.377335\nv 0.425771 0.406071 2.418430\nv 0.497946 0.387540 2.415263\nv 0.507407 0.387478 2.370972\nv 0.534860 0.382005 2.340559\nv 0.574588 0.372402 2.327708\nv 0.614863 0.361467 2.336997\nv 0.644021 0.352407 2.364891\nv 0.655999 0.346970 2.408183\nv 0.725818 0.329046 2.405073\nv 0.710937 0.337130 2.326669\nv 0.664317 0.352450 2.266642\nv 0.620797 0.365267 2.238017\nv 0.567989 0.379721 2.223722\nv 0.520287 0.393030 2.206091\nv 0.499218 0.399518 2.187029\nv 0.501771 0.418516 2.076254\nv 0.500033 0.436782 1.966877\nv 0.498179 0.454138 1.857650\nv 0.502644 0.453913 1.845335\nv 0.514199 0.452524 1.827833\nv 0.532677 0.449252 1.818996\nv 0.301503 0.495863 1.828505\nv 0.320446 0.491592 1.835802\nv 0.332980 0.488116 1.852313\nv 0.338172 0.486397 1.864232\nv 0.338243 0.470249 1.973471\nv 0.337985 0.452395 2.082930\nv 0.335318 0.441594 2.194326\nv 0.313332 0.445991 2.218443\nv 0.264642 0.457256 2.243508\nv 0.216920 0.468945 2.255997\nv 0.206985 0.470466 2.275508\nv 0.205284 0.468272 2.324408\nv 0.207124 0.464238 2.390392\nv 0.208638 0.465047 2.393472\nv 0.211473 0.465517 2.396494\nv 0.218841 0.462820 2.427972\nv 0.307478 0.517024 1.795114\nv 0.382595 0.501876 1.792024\nv 0.457653 0.486744 1.788937\nv 0.532740 0.471605 1.785848\nv 0.420099 0.458015 1.970911\nv 0.420824 0.439959 2.080329\nv 0.417239 0.420565 2.190679\nv 0.401323 0.490630 1.826736\nv 0.438866 0.483062 1.825192\nv 0.419767 0.477045 1.875871\nv 0.912052 0.413391 2.406103\nv 0.908435 0.416491 2.222520\nv 0.906128 0.417073 2.036955\nv 0.902882 0.411600 1.861584\nv 0.895191 0.413211 1.834437\nv 0.873764 0.414420 1.814618\nv 0.838561 0.415423 1.807081\nv 0.737947 0.420658 1.810113\nv 0.635347 0.431918 1.813817\nv 0.415072 0.480733 1.683837\nv 0.574980 0.449124 1.678946\nv 0.744718 0.427825 1.679720\nv 0.906086 0.422337 1.688354\nv 0.971413 0.423405 1.705902\nv 1.030207 0.424893 1.745412\nv 1.074811 0.424924 1.811988\nv 1.097494 0.422477 1.890011\nv 1.121105 0.433343 2.020991\nv 1.144360 0.435036 2.211826\nv 1.156837 0.432776 2.400254\nv 0.420330 0.497776 1.727341\nv 0.575471 0.466872 1.724943\nv 0.738685 0.445920 1.723106\nv 0.893935 0.439689 1.731122\nv 0.956792 0.440247 1.747578\nv 1.013363 0.441235 1.784783\nv 1.056334 0.440957 1.847488\nv 1.078097 0.438498 1.920976\nv 1.100862 0.449516 2.044466\nv 1.123240 0.451602 2.224341\nv 1.135174 0.449882 2.401957\nv 0.929087 0.433668 2.406858\nv 0.925260 0.437433 2.212754\nv 0.922907 0.438700 2.016558\nv 0.919609 0.433863 1.831164\nv 0.911583 0.435495 1.802452\nv 0.889200 0.436564 1.781474\nv 0.852378 0.437301 1.773448\nv 0.747126 0.442090 1.776586\nv 0.639815 0.453520 1.780419\nv 0.542289 0.484263 1.755839\nv 0.648344 0.466725 1.752584\nv 0.758788 0.455336 1.752654\nv 0.867006 0.451106 1.751638\nv 0.911214 0.450960 1.757087\nv 0.950282 0.450851 1.776404\nv 0.979907 0.449929 1.813424\nv 1.009845 0.458086 1.972043\nv 1.026939 0.456438 2.189066\nv 1.035124 0.451546 2.404907\nv 0.995468 0.445883 1.892210\nv -0.120340 0.687201 2.452632\nv -0.080014 0.660561 2.537412\nv -0.085069 0.671350 2.361632\nv -0.015494 0.620020 2.550894\nv -0.021530 0.632904 2.341046\nv -0.104772 0.657392 2.494462\nv -0.082068 0.642439 2.523376\nv -0.028629 0.613129 2.529662\nv -0.107631 0.678179 2.503152\nv -0.111491 0.684940 2.400789\nv -0.107314 0.662820 2.406030\nv -0.086357 0.651593 2.374255\nv -0.114752 0.664322 2.450706\nv -0.032312 0.622942 2.361319\nv -0.008850 0.593541 2.535586\nv -0.014115 0.604779 2.352551\nv 0.171635 0.441571 2.458892\nv 0.178788 0.442325 2.457657\nv 0.185151 0.443121 2.454564\nv 0.190475 0.443918 2.449894\nv 0.194511 0.444672 2.443932\nv 0.197008 0.445347 2.436957\nv 0.197717 0.445897 2.429259\nv 0.196493 0.446263 2.421615\nv 0.193532 0.446411 2.414795\nv 0.189104 0.446354 2.409068\nv 0.183477 0.446096 2.404703\nv 0.176917 0.445648 2.401969\nv 0.169695 0.445020 2.401137\nv 0.170006 0.444470 2.410352\nv 0.178695 0.444071 2.429789\nv 0.171344 0.442095 2.450180\nv 0.174470 0.482346 2.461229\nv 0.181348 0.479066 2.459765\nv 0.187464 0.476237 2.456462\nv 0.192578 0.473960 2.451616\nv 0.196450 0.472339 2.445517\nv 0.198846 0.471483 2.438456\nv 0.199515 0.471492 2.430727\nv 0.198328 0.472399 2.423113\nv 0.195472 0.474079 2.416382\nv 0.191207 0.476395 2.410790\nv 0.185788 0.479211 2.406602\nv 0.179477 0.482391 2.404075\nv 0.172529 0.485792 2.403474\nv 0.172838 0.485244 2.412691\nv 0.181223 0.480335 2.431870\nv 0.174178 0.482867 2.452518\nv 0.197181 0.510151 2.462125\nv 0.201814 0.504123 2.460571\nv 0.205913 0.498825 2.457191\nv 0.209319 0.494455 2.452276\nv 0.211875 0.491219 2.446126\nv 0.213415 0.489320 2.439032\nv 0.213785 0.488959 2.431290\nv 0.212899 0.490235 2.423688\nv 0.210895 0.492959 2.416988\nv 0.207948 0.496893 2.411449\nv 0.204238 0.501800 2.407330\nv 0.199943 0.507447 2.404883\nv 0.195241 0.513595 2.404370\nv 0.195549 0.513047 2.413587\nv 0.201426 0.505071 2.432666\nv 0.196888 0.510671 2.453413\nv 0.229948 0.524841 2.461900\nv 0.231348 0.517364 2.460369\nv 0.232536 0.510761 2.457009\nv 0.233476 0.505285 2.452111\nv 0.234124 0.501198 2.445972\nv 0.234436 0.498744 2.438886\nv 0.234372 0.498190 2.431148\nv 0.233919 0.499662 2.423543\nv 0.233146 0.502934 2.416838\nv 0.232104 0.507722 2.411285\nv 0.230861 0.513736 2.407147\nv 0.229475 0.520687 2.404680\nv 0.228009 0.528285 2.404146\nv 0.228318 0.527737 2.413361\nv 0.230579 0.518141 2.432467\nv 0.229654 0.525359 2.453189\nv 0.265803 0.523293 2.460604\nv 0.263659 0.515968 2.459200\nv 0.261665 0.509503 2.455955\nv 0.259909 0.504146 2.451156\nv 0.258472 0.500142 2.445093\nv 0.257439 0.497751 2.438055\nv 0.256896 0.497216 2.430334\nv 0.256920 0.498667 2.422713\nv 0.257491 0.501883 2.415956\nv 0.258536 0.506582 2.410328\nv 0.259991 0.512479 2.406093\nv 0.261787 0.519292 2.403513\nv 0.263861 0.526738 2.402850\nv 0.264174 0.526189 2.412064\nv 0.262476 0.516764 2.431313\nv 0.265510 0.523814 2.451893\nv 0.297115 0.505838 2.458509\nv 0.291881 0.500238 2.457313\nv 0.287104 0.495320 2.454253\nv 0.282992 0.491277 2.449610\nv 0.279735 0.488291 2.443670\nv 0.277527 0.486553 2.436711\nv 0.276569 0.486250 2.429017\nv 0.277010 0.487469 2.421368\nv 0.278755 0.490031 2.414534\nv 0.281620 0.493714 2.408784\nv 0.285431 0.498295 2.404391\nv 0.290009 0.503559 2.401625\nv 0.295174 0.509283 2.400754\nv 0.295483 0.508733 2.409970\nv 0.290333 0.501234 2.429451\nv 0.296822 0.506356 2.449798\nv 0.315601 0.477097 2.456172\nv 0.308378 0.474423 2.455219\nv 0.301822 0.472139 2.452375\nv 0.296194 0.470327 2.447918\nv 0.291764 0.469068 2.442119\nv 0.288803 0.468442 2.435252\nv 0.287579 0.468529 2.427591\nv 0.288287 0.469356 2.419909\nv 0.290785 0.470806 2.412982\nv 0.294820 0.472765 2.407091\nv 0.300143 0.475115 2.402514\nv 0.306508 0.477748 2.399530\nv 0.313661 0.480543 2.398418\nv 0.313970 0.479992 2.407633\nv 0.306602 0.475764 2.427383\nv 0.315310 0.477616 2.447461\nv 0.320257 0.441355 2.453883\nv 0.312577 0.442196 2.453152\nv 0.305610 0.443068 2.450514\nv 0.299631 0.443928 2.446227\nv 0.294936 0.444736 2.440560\nv 0.291799 0.445441 2.433779\nv 0.290511 0.446003 2.426148\nv 0.291285 0.446357 2.418437\nv 0.293956 0.446475 2.411424\nv 0.298260 0.446365 2.405400\nv 0.303933 0.446045 2.400652\nv 0.310706 0.445519 2.397466\nv 0.318318 0.444802 2.396128\nv 0.318626 0.444254 2.405344\nv 0.310747 0.443948 2.425345\nv 0.319965 0.441877 2.445172\nv 0.308356 0.407303 2.452251\nv 0.301846 0.411484 2.451682\nv 0.295924 0.415365 2.449185\nv 0.290839 0.418775 2.445021\nv 0.286831 0.421550 2.439450\nv 0.284141 0.423526 2.432728\nv 0.283011 0.424539 2.425118\nv 0.283624 0.424443 2.417384\nv 0.285852 0.423288 2.410314\nv 0.289466 0.421210 2.404195\nv 0.294248 0.418339 2.399324\nv 0.299974 0.414809 2.395994\nv 0.306413 0.410750 2.394497\nv 0.306724 0.410201 2.403713\nv 0.300150 0.413630 2.423893\nv 0.308063 0.407823 2.443541\nv 0.282428 0.382177 2.451622\nv 0.278464 0.388827 2.451114\nv 0.274832 0.394922 2.448674\nv 0.271690 0.400211 2.444556\nv 0.269177 0.404444 2.439022\nv 0.267456 0.407356 2.432324\nv 0.266668 0.408701 2.424722\nv 0.266940 0.408271 2.416981\nv 0.268198 0.406181 2.409885\nv 0.270317 0.402650 2.403730\nv 0.273159 0.397899 2.398812\nv 0.276590 0.392151 2.395427\nv 0.280486 0.385624 2.393868\nv 0.280797 0.385070 2.403083\nv 0.277066 0.391259 2.423332\nv 0.282137 0.382695 2.442912\nv 0.247991 0.371319 2.452132\nv 0.247409 0.379039 2.451574\nv 0.246819 0.386093 2.449088\nv 0.246250 0.392195 2.444933\nv 0.245730 0.397052 2.439368\nv 0.245293 0.400372 2.432652\nv 0.244960 0.401859 2.425045\nv 0.244778 0.401288 2.417307\nv 0.244753 0.398792 2.410233\nv 0.244879 0.394633 2.404107\nv 0.245144 0.389071 2.399227\nv 0.245539 0.382362 2.395885\nv 0.246048 0.374767 2.394377\nv 0.246360 0.374217 2.403594\nv 0.246408 0.381597 2.423786\nv 0.247696 0.371839 2.443421\nv 0.212369 0.377046 2.453671\nv 0.215284 0.384201 2.452963\nv 0.217842 0.390750 2.450341\nv 0.219938 0.396424 2.446069\nv 0.221483 0.400951 2.440416\nv 0.222370 0.404055 2.433642\nv 0.222510 0.405469 2.426014\nv 0.221853 0.404973 2.418299\nv 0.220504 0.402690 2.411280\nv 0.218566 0.398862 2.405244\nv 0.216166 0.393726 2.400479\nv 0.213414 0.387523 2.397274\nv 0.210427 0.380492 2.395916\nv 0.210738 0.379944 2.405133\nv 0.214695 0.386693 2.425157\nv 0.212075 0.377566 2.444959\nv 0.183279 0.397976 2.455899\nv 0.189068 0.403059 2.454969\nv 0.194206 0.407747 2.452149\nv 0.198488 0.411844 2.447709\nv 0.201722 0.415149 2.441926\nv 0.203699 0.417466 2.435069\nv 0.204226 0.418602 2.427411\nv 0.203184 0.418382 2.419726\nv 0.200744 0.416888 2.412790\nv 0.197118 0.414279 2.406885\nv 0.192529 0.410723 2.402288\nv 0.187196 0.406382 2.399280\nv 0.181338 0.401421 2.398143\nv 0.181651 0.400872 2.407359\nv 0.188814 0.405309 2.427137\nv 0.182987 0.398494 2.447187\nv 0.148097 0.444094 2.459833\nv 0.153681 0.449343 2.458920\nv 0.158641 0.454178 2.456116\nv 0.162778 0.458392 2.451688\nv 0.165900 0.461793 2.445914\nv 0.167810 0.464166 2.439062\nv 0.168311 0.465320 2.431406\nv 0.167294 0.465081 2.423719\nv 0.164921 0.463529 2.416778\nv 0.161407 0.460831 2.410861\nv 0.156967 0.457156 2.406254\nv 0.151810 0.452668 2.403231\nv 0.146157 0.447540 2.402078\nv 0.146467 0.446992 2.411293\nv 0.153404 0.451614 2.431090\nv 0.147803 0.444611 2.451120\nv 0.107269 0.493235 2.464137\nv 0.112678 0.498670 2.463241\nv 0.117479 0.503672 2.460451\nv 0.121485 0.508029 2.456037\nv 0.124504 0.511533 2.450274\nv 0.126345 0.513982 2.443428\nv 0.126823 0.515159 2.435775\nv 0.125831 0.514898 2.428086\nv 0.123525 0.513274 2.421137\nv 0.120113 0.510467 2.415212\nv 0.115805 0.506647 2.410591\nv 0.110805 0.501994 2.407553\nv 0.105328 0.496680 2.406382\nv 0.105639 0.496129 2.415598\nv 0.112381 0.500962 2.435414\nv 0.106978 0.493755 2.455426\nv 0.064390 0.541212 2.468441\nv 0.069619 0.546828 2.467563\nv 0.074258 0.551989 2.464787\nv 0.078124 0.556487 2.460387\nv 0.081035 0.560095 2.454632\nv 0.082810 0.562611 2.447793\nv 0.083264 0.563813 2.440142\nv 0.082293 0.563527 2.432450\nv 0.080056 0.561834 2.425496\nv 0.076753 0.558923 2.419561\nv 0.072582 0.554965 2.414926\nv 0.067748 0.550154 2.411874\nv 0.062451 0.544659 2.410687\nv 0.062761 0.544110 2.419903\nv 0.069300 0.549141 2.439737\nv 0.064098 0.541733 2.459730\nv 0.019496 0.587945 2.472738\nv 0.024535 0.593735 2.471877\nv 0.029005 0.599053 2.469117\nv 0.032729 0.603678 2.464729\nv 0.035531 0.607391 2.458984\nv 0.037235 0.609972 2.452151\nv 0.037661 0.611196 2.444502\nv 0.036720 0.610887 2.436809\nv 0.034553 0.609130 2.429847\nv 0.031355 0.606114 2.423903\nv 0.027331 0.602026 2.419256\nv 0.022663 0.597058 2.416188\nv 0.017557 0.591392 2.414984\nv 0.017864 0.590843 2.424200\nv 0.024195 0.596066 2.444054\nv 0.019202 0.588468 2.464027\nv -0.027382 0.633349 2.477024\nv -0.022538 0.639306 2.476177\nv -0.018241 0.644773 2.473433\nv -0.014666 0.649528 2.469058\nv -0.011977 0.653338 2.463323\nv -0.010347 0.655982 2.456497\nv -0.009943 0.657230 2.448850\nv -0.010861 0.656897 2.441154\nv -0.012953 0.655077 2.434187\nv -0.016036 0.651964 2.428231\nv -0.019918 0.647751 2.423572\nv -0.024411 0.642631 2.420489\nv -0.029324 0.636796 2.419268\nv -0.029014 0.636250 2.428484\nv -0.022901 0.641656 2.448356\nv -0.027675 0.633872 2.468311\nv -0.076209 0.677345 2.481290\nv -0.071562 0.683460 2.480460\nv -0.067442 0.689073 2.477730\nv -0.064018 0.693948 2.473367\nv -0.061444 0.697856 2.467642\nv -0.059891 0.700562 2.460822\nv -0.059516 0.701830 2.453177\nv -0.060406 0.701476 2.445479\nv -0.062424 0.699595 2.438505\nv -0.065390 0.696386 2.432540\nv -0.069118 0.692049 2.427868\nv -0.073432 0.686785 2.424771\nv -0.078151 0.680792 2.423536\nv -0.077839 0.680243 2.432750\nv -0.071947 0.685832 2.452640\nv -0.076501 0.677864 2.472578\nv 0.480554 0.319597 2.280787\nv 0.429039 0.329829 2.338565\nv 0.412089 0.330109 2.414786\nv 0.434243 0.320366 2.489022\nv 0.489566 0.303208 2.541384\nv 0.563234 0.283232 2.557842\nv 0.635508 0.265793 2.533985\nv 0.687025 0.255560 2.476206\nv 0.703974 0.255279 2.399986\nv 0.681822 0.265021 2.325749\nv 0.626497 0.282181 2.273387\nv 0.552830 0.302157 2.256930\nv 0.513533 0.311036 2.333695\nv 0.483488 0.317005 2.367392\nv 0.473602 0.317169 2.411844\nv 0.486523 0.311487 2.455142\nv 0.518788 0.301476 2.485681\nv 0.561753 0.289828 2.495279\nv 0.603904 0.279656 2.481366\nv 0.633950 0.273688 2.447666\nv 0.643837 0.273523 2.403213\nv 0.630914 0.279207 2.359916\nv 0.598650 0.289213 2.329377\nv 0.555684 0.300865 2.319778\nv 0.519767 0.315883 2.341506\nv 0.492763 0.321248 2.371797\nv 0.483876 0.321393 2.411754\nv 0.495491 0.316287 2.450675\nv 0.524494 0.307290 2.478125\nv 0.563114 0.296820 2.486752\nv 0.601004 0.287677 2.474246\nv 0.628009 0.282313 2.443954\nv 0.636894 0.282166 2.403996\nv 0.625282 0.287276 2.365078\nv 0.596278 0.296270 2.337628\nv 0.557659 0.306740 2.329000\nv 0.525161 0.336698 2.342629\nv 0.498156 0.342061 2.372919\nv 0.489271 0.342209 2.412878\nv 0.500885 0.337101 2.451796\nv 0.529885 0.328106 2.479247\nv 0.568507 0.317634 2.487875\nv 0.606396 0.308490 2.475368\nv 0.633403 0.303127 2.445077\nv 0.642290 0.302980 2.405119\nv 0.630675 0.308088 2.366202\nv 0.601672 0.317085 2.338750\nv 0.563052 0.327554 2.330123\nv 0.537701 0.385094 2.345240\nv 0.510696 0.390458 2.375529\nv 0.501806 0.390607 2.415488\nv 0.513424 0.385496 2.454406\nv 0.542426 0.376501 2.481858\nv 0.581046 0.366030 2.490483\nv 0.618934 0.356887 2.477978\nv 0.645943 0.351524 2.447686\nv 0.654828 0.351376 2.407729\nv 0.643214 0.356483 2.368812\nv 0.614211 0.365480 2.341359\nv 0.575593 0.375952 2.332732\nv 0.535933 0.388686 2.341343\nv 0.507284 0.394378 2.373480\nv 0.497854 0.394532 2.415871\nv 0.510175 0.389115 2.457161\nv 0.540948 0.379569 2.486284\nv 0.581921 0.368458 2.495438\nv 0.622119 0.358760 2.482168\nv 0.650770 0.353069 2.450033\nv 0.660198 0.352912 2.407640\nv 0.647877 0.358331 2.366350\nv 0.617107 0.367874 2.337227\nv 0.576134 0.378985 2.328074\nv 0.527887 0.389872 2.328738\nv 0.494139 0.396574 2.366590\nv 0.483034 0.396759 2.416525\nv 0.497550 0.390377 2.465159\nv 0.533792 0.379135 2.499462\nv 0.582054 0.366050 2.510245\nv 0.629400 0.354623 2.494614\nv 0.663149 0.347922 2.456762\nv 0.674255 0.347736 2.406828\nv 0.659742 0.354119 2.358195\nv 0.623497 0.365362 2.323889\nv 0.575236 0.378447 2.313108\nv 0.529284 0.391011 2.330468\nv 0.496205 0.397580 2.367567\nv 0.485319 0.397759 2.416509\nv 0.499546 0.391504 2.464175\nv 0.535069 0.380485 2.497798\nv 0.582371 0.367658 2.508364\nv 0.628778 0.356462 2.493046\nv 0.661854 0.349891 2.455945\nv 0.672738 0.349711 2.407005\nv 0.658514 0.355967 2.359337\nv 0.622993 0.366986 2.325716\nv 0.575690 0.379812 2.315149\nv -1.126628 -0.550682 -4.901671\nv -0.958738 -0.608560 -5.255512\nv -0.645402 -0.669981 -5.595134\nv -1.086337 -0.463765 5.821405\nv -1.736469 -0.427956 5.769049\nv -2.045379 -0.422835 5.636683\nv 1.648854 -0.622336 2.087982\nv 1.577499 -0.571205 2.610161\nv 1.442225 -0.489395 3.318349\nv -0.624004 -1.169362 -4.807834\nv -0.417297 -1.174479 -5.067314\nv -0.075517 -1.179603 -5.209530\nv -1.385555 -0.847228 5.280600\nv -1.568609 -0.877900 5.170437\nv -1.694511 -0.923912 4.971712\nv 0.991101 -0.954660 3.108997\nv 0.841586 -0.949544 3.632966\nv 0.666593 -0.903524 4.095329\nv -0.210725 -1.261404 -3.883492\nv -0.203359 -1.261405 -4.219665\nv -0.032493 -1.271635 -4.511428\nv 0.471030 -1.261422 -4.422631\nv 0.365563 -1.266535 -4.648895\nv 0.125921 -1.271639 -4.909214\nv -1.371704 -0.995502 4.701556\nv -1.465606 -1.051743 4.498085\nv -1.589450 -1.072190 4.258190\nv -0.125917 -0.729663 -5.829640\nv -2.486975 -0.622229 4.952985\nv -2.566017 -0.739825 4.459776\nv -2.569618 -0.831856 3.903615\nv -2.544140 -0.877873 3.399307\nv -2.511342 -0.893214 3.020896\nv -2.408905 -0.898329 2.192692\nv -2.275107 -0.806300 1.463470\nv -2.156397 -0.734721 0.908110\nv -2.062845 -0.663144 0.524831\nv -1.965292 -0.596677 0.048810\nv -1.870931 -0.525098 -0.422610\nv -1.788752 -0.468858 -0.911696\nv -1.712694 -0.438182 -1.490154\nv -1.660772 -0.438183 -1.937881\nv -1.601179 -0.438622 -2.400401\nv -1.527749 -0.433075 -3.009904\nv -1.458201 -0.451189 -3.522013\nv -1.374731 -0.468869 -3.995327\nv -1.254831 -0.499550 -4.498556\nv -2.247102 -0.458621 5.455738\nv 0.966089 -0.412688 4.428506\nv 0.658696 -0.402454 4.846749\nv 0.266230 -0.402444 5.221823\nv -0.124344 -0.438225 5.518588\nv -0.571250 -0.456862 5.710801\nv 1.247103 -0.433148 3.865425\nv 0.517977 -0.770582 -5.836914\nv 0.989524 -0.755255 -5.655104\nv 1.344100 -0.693909 -5.281064\nv 1.490163 -0.637670 -4.902266\nv 1.576036 -0.596770 -4.424447\nv 1.588436 -0.581431 -3.976359\nv 1.597442 -0.573001 -3.514504\nv 1.585859 -0.567114 -2.957727\nv 1.576193 -0.571204 -2.444004\nv 1.566194 -0.585710 -1.783885\nv 1.577001 -0.612108 -1.190304\nv 1.629913 -0.668353 -0.101128\nv 1.660174 -0.682552 0.345519\nv 1.677406 -0.693920 0.836592\nv 1.683378 -0.699031 1.273760\nv 1.670987 -0.673468 1.697306\nv -0.143381 -0.969968 -5.590125\nv -0.539356 -0.929056 -5.405542\nv -0.820401 -0.872806 -5.107262\nv -0.981487 -0.831897 -4.782617\nv -1.092222 -0.780765 -4.449106\nv -1.167704 -0.750085 -4.021118\nv -1.221851 -0.755197 -3.537442\nv -1.254367 -0.755196 -2.940923\nv -1.233269 -0.729634 -2.324562\nv -1.205066 -0.714294 -1.748485\nv -1.221303 -0.709181 -1.273698\nv -1.281670 -0.744969 -0.754776\nv -1.342034 -0.775647 -0.235852\nv -1.438246 -0.862564 0.250789\nv -1.582734 -0.975044 0.775648\nv -1.658203 -1.056849 1.115383\nv -1.815715 -1.128426 1.684667\nv -1.998965 -1.133534 2.399977\nv -2.129196 -1.061950 3.197317\nv -2.175663 -1.021045 3.490248\nv -2.240768 -0.995479 3.977183\nv -2.289878 -0.908558 4.461750\nv -2.238880 -0.811414 4.938014\nv -1.808264 -0.975038 4.733593\nv -1.934469 -1.056842 4.389447\nv -1.916134 -1.107973 4.138270\nv -1.733443 -1.092639 3.838212\nv -1.665041 -1.174447 3.538763\nv -1.558805 -1.251144 2.789110\nv -1.412272 -1.297164 2.046560\nv -1.252715 -1.133556 1.259578\nv -1.167161 -1.041523 0.833359\nv -1.078248 -0.969946 0.388008\nv -1.011636 -0.918817 -0.078026\nv -0.947118 -0.877915 -0.591024\nv -0.917561 -0.872804 -1.141339\nv -0.925878 -0.898367 -1.654900\nv -0.936265 -0.944383 -2.217539\nv -0.962520 -1.041529 -2.804047\nv -0.950546 -1.082433 -3.487499\nv -0.907018 -1.097772 -3.967140\nv -0.831046 -1.118226 -4.337700\nv -0.768573 -1.138680 -4.544729\nv -2.087487 -0.744949 5.286598\nv -1.895529 -0.698938 5.522938\nv -1.604980 -0.678494 5.641674\nv -1.099097 -0.688733 5.658204\nv -0.722059 -0.678517 5.610475\nv -0.288155 -0.693868 5.417017\nv 0.092416 -0.698989 5.172625\nv 0.403968 -0.714339 4.848565\nv 0.737132 -0.714347 4.460813\nv 0.486548 -0.877953 4.380281\nv 0.234827 -0.852382 4.688934\nv -0.093312 -0.842148 4.989309\nv -0.430944 -0.821687 5.225704\nv -0.827540 -0.821676 5.295944\nv 0.968996 -0.755256 4.029245\nv 1.179223 -0.796165 3.484835\nv 1.341463 -0.837073 2.859275\nv 1.439724 -0.918882 2.243200\nv 1.451517 -0.944446 1.793592\nv 1.472497 -0.964899 1.350792\nv 1.440460 -0.995576 0.914219\nv 1.413448 -0.990462 0.390267\nv 1.382591 -0.970010 -0.082441\nv 1.360910 -0.929106 -0.636598\nv 1.334786 -0.898427 -1.165583\nv 1.299852 -0.877974 -1.742147\nv 1.274037 -0.862635 -2.370415\nv 1.280389 -0.872862 -2.866094\nv 1.279039 -0.872862 -3.423482\nv 1.250654 -0.877973 -3.926898\nv 1.228688 -0.888198 -4.361691\nv 1.159929 -0.903536 -4.737247\nv 1.030163 -0.929097 -5.061260\nv 0.790216 -0.949543 -5.378744\nv 0.326370 -0.985321 -5.574768\nv 0.244358 -1.194948 -5.256955\nv 0.597731 -1.194958 -5.023298\nv 0.738142 -1.189848 -4.847982\nv 0.855164 -1.164288 -4.598895\nv 0.901400 -1.143837 -4.331149\nv 0.957130 -1.128499 -3.911171\nv 0.980117 -1.113162 -3.393836\nv 0.981247 -1.082484 -2.811446\nv 1.001824 -1.051806 -2.313880\nv 1.014664 -1.102937 -1.705582\nv 1.048074 -1.143841 -1.159034\nv 1.059657 -1.174519 -0.606479\nv 1.064093 -1.200085 -0.071291\nv 1.075204 -1.220535 0.424070\nv 1.101327 -1.220536 0.953058\nv 1.118854 -1.200086 1.413031\nv 1.120097 -1.159182 1.906474\nv 1.119521 -1.138729 2.056940\nv 1.117504 -1.072261 2.539420\nv -0.083189 -1.276747 -4.930517\nv -0.304425 -1.261402 -4.824169\nv -0.439175 -1.256285 -4.707749\nv -0.544584 -1.256283 -4.404446\nv -0.586926 -1.256281 -4.282117\nv -0.623264 -1.246056 -3.928867\nv -0.638824 -1.240942 -3.428476\nv -0.609256 -1.194926 -2.712935\nv -0.599417 -1.087554 -2.150482\nv -0.577731 -1.015975 -1.596316\nv -0.579446 -0.985297 -1.056666\nv -0.580568 -0.980185 -0.490953\nv -0.649231 -0.990408 0.016122\nv -0.705752 -1.026197 0.483803\nv -0.801950 -1.082437 0.970452\nv -0.883639 -1.164242 1.521958\nv -0.968565 -1.292063 2.239032\nv -1.061787 -1.246045 2.944255\nv -1.152344 -1.143785 3.722639\nv -1.185455 -0.990394 4.116569\nv -0.962096 -0.944383 4.498626\nv -0.648170 -0.964843 4.102298\nv -0.611212 -1.113121 3.745383\nv -0.552340 -1.240945 3.028906\nv -0.447867 -1.286965 2.289324\nv -0.387509 -1.205159 1.682138\nv -0.330998 -1.113128 1.126192\nv -0.295225 -1.077337 0.540624\nv -0.250261 -1.056886 0.050137\nv -0.224256 -1.067113 -0.480035\nv -0.199209 -1.067114 -1.034221\nv -0.186173 -1.102905 -1.579181\nv -0.174095 -1.154033 -2.148159\nv -0.188374 -1.220502 -2.685436\nv -0.177498 -1.251179 -3.394789\nv 0.105263 -1.276752 -4.232729\nv 0.128108 -1.276752 -3.891235\nv 0.143567 -1.271640 -3.390093\nv 0.179188 -1.230738 -2.708876\nv 0.181397 -1.174495 -2.191481\nv 0.199156 -1.179609 -1.615063\nv 0.218469 -1.169384 -1.076897\nv 0.211426 -1.154045 -0.507036\nv 0.189569 -1.143818 0.029059\nv 0.169488 -1.138704 0.555085\nv 0.175470 -1.164270 1.080522\nv 0.164572 -1.215399 1.613360\nv 0.131753 -1.266528 2.152719\nv 0.077021 -1.235849 2.698590\nv 0.024965 -1.138701 3.317622\nv -0.024154 -1.000650 3.713921\nv -0.063225 -1.005762 3.935470\nv -0.134588 -1.015986 4.104602\nv 0.335456 -0.995547 4.088851\nv 0.457148 -1.016002 3.752075\nv 0.590390 -1.005780 3.349844\nv 0.633574 -1.143830 2.869426\nv 0.689786 -1.220525 2.344581\nv 0.744246 -1.246093 2.006331\nv 0.760775 -1.261431 1.500448\nv 0.781160 -1.256320 1.031584\nv 0.767768 -1.246093 0.489265\nv 0.744907 -1.235867 -0.028759\nv 0.694308 -1.230751 -0.567161\nv 0.650908 -1.225638 -1.114943\nv 0.634245 -1.194959 -1.668128\nv 0.597749 -1.138716 -2.256056\nv 0.557658 -1.205183 -2.764725\nv 0.547739 -1.246087 -3.385609\nv 0.506337 -1.251197 -3.886826\nv 0.485561 -1.266538 -4.269497\nv -1.074853 -0.826784 5.314630\nv -0.923511 -0.847240 5.221909\nv -0.614003 -0.893264 5.027279\nv -0.279336 -0.918837 4.837090\nv -0.022276 -0.939295 4.586482\nv 0.180574 -0.980205 4.289980\nv -0.283535 -1.005756 4.389853\nv -0.482251 -0.985299 4.604016\nv -0.756798 -0.929050 4.835959\nv -1.024541 -0.888139 4.970454\nv -1.196931 -0.934151 4.888131\nv -1.269504 -0.954601 4.828608\nv 1.594753 -0.640231 -0.652472\nv -2.029571 -1.537456 0.530923\nv -2.105907 -1.517003 0.916084\nv -2.205329 -1.496548 1.476672\nv -2.338925 -1.419850 2.207967\nv -2.471788 -1.327814 3.027278\nv -2.515888 -1.302249 3.402455\nv -2.546490 -1.219440 3.903844\nv -2.544273 -1.118181 4.456557\nv -2.472618 -1.009540 4.948106\nv -2.260490 -0.913673 5.465374\nv -2.060303 -0.877887 5.660025\nv -1.743330 -0.843247 5.796679\nv -1.083070 -0.821670 5.856977\nv -0.553219 -0.837023 5.748896\nv -0.096176 -0.852373 5.564408\nv 0.346633 -0.847273 5.270144\nv 0.742701 -0.837058 4.912805\nv 1.072891 -0.831952 4.495604\nv 1.381777 -0.847300 3.921184\nv 1.598358 -0.923999 3.352642\nv 1.759617 -1.036488 2.637232\nv 1.816230 -1.148975 2.105307\nv 1.830922 -1.256347 1.691537\nv 1.823302 -1.322815 1.274915\nv 1.809881 -1.363717 0.837628\nv 1.784144 -1.393476 0.349004\nv -0.121793 -1.435248 -5.814811\nv -0.660607 -1.409670 -5.609144\nv -1.008314 -1.414773 -5.289559\nv -1.192258 -1.394752 -4.923010\nv -1.314161 -1.370649 -4.515502\nv -1.399931 -1.353406 -3.999768\nv -1.458470 -1.368307 -3.522059\nv -1.518131 -1.394743 -3.009139\nv -1.594360 -1.427320 -2.399816\nv -1.648947 -1.463110 -1.936806\nv -1.702529 -1.501674 -1.489066\nv -1.784552 -1.527236 -0.911165\nv -1.869864 -1.544751 -0.422389\nv -1.948424 -1.541482 0.051703\nv 1.755939 -1.404619 -0.106525\nv 1.719206 -1.404618 -0.663929\nv 1.684578 -1.407050 -1.194110\nv 1.641274 -1.432666 -1.791456\nv 1.597552 -1.455745 -2.444326\nv 1.583388 -1.459366 -2.957855\nv 1.565435 -1.466897 -3.514187\nv 1.544239 -1.474432 -3.977108\nv 1.498716 -1.471080 -4.421948\nv 1.392192 -1.471078 -4.887226\nv 1.234896 -1.468298 -5.227161\nv 0.934800 -1.465954 -5.576045\nv 0.481960 -1.444654 -5.787587\nv -0.121797 -1.619171 -5.814811\nv -0.660610 -1.593593 -5.609141\nv -1.008319 -1.598696 -5.289563\nv -1.192263 -1.578682 -4.923016\nv -1.314167 -1.554571 -4.515508\nv -1.399929 -1.537329 -3.999764\nv -1.458470 -1.552231 -3.522058\nv -1.518130 -1.578667 -3.009136\nv -1.594358 -1.611250 -2.399814\nv -1.648938 -1.647035 -1.936802\nv -1.702524 -1.685597 -1.489063\nv -1.784546 -1.711163 -0.911163\nv -1.869868 -1.728676 -0.422387\nv -1.948428 -1.725406 0.051705\nv -2.029575 -1.721379 0.530926\nv -2.105912 -1.700926 0.916084\nv -2.205334 -1.680471 1.476673\nv -2.338930 -1.603773 2.207967\nv -2.471794 -1.511737 3.027279\nv -2.515894 -1.486172 3.402457\nv -2.546495 -1.403363 3.903843\nv -2.544279 -1.302104 4.456560\nv -2.472622 -1.193463 4.948104\nv -2.260494 -1.097596 5.465383\nv -2.060308 -1.061810 5.660026\nv -1.743318 -1.027170 5.796693\nv -1.083060 -1.005592 5.856988\nv -0.553223 -1.020947 5.748902\nv -0.096182 -1.036296 5.564410\nv 0.346629 -1.031194 5.270148\nv 0.742696 -1.020981 4.912805\nv 1.072885 -1.015875 4.495607\nv 1.381772 -1.031221 3.921182\nv 1.598353 -1.107922 3.352642\nv 1.759612 -1.220411 2.637231\nv 1.816225 -1.332898 2.105305\nv 1.830917 -1.440270 1.691536\nv 1.823298 -1.506738 1.274915\nv 1.809876 -1.547648 0.837628\nv 1.784140 -1.577405 0.349005\nv 1.755934 -1.588542 -0.106523\nv 1.719201 -1.588547 -0.663927\nv 1.684574 -1.590979 -1.194108\nv 1.641269 -1.616589 -1.791458\nv 1.597548 -1.639674 -2.444329\nv 1.583384 -1.643297 -2.957851\nv 1.565432 -1.650820 -3.514186\nv 1.544235 -1.658355 -3.977114\nv 1.498712 -1.655010 -4.421953\nv 1.392187 -1.655000 -4.887226\nv 1.234893 -1.652228 -5.227168\nv 0.934798 -1.649883 -5.576052\nv 0.481956 -1.628576 -5.787586\nv 0.053482 -1.601525 -3.518121\nv -0.346298 -1.496455 2.338691\nv 0.195898 -0.755810 -5.857012\nv 0.180084 -1.436866 -5.825199\nv 0.180080 -1.623873 -5.825198\nv -0.406947 -1.609153 -5.730082\nv -0.406943 -1.418220 -5.730083\nv -0.401701 -0.699023 -5.730768\nv -0.822151 -0.641025 -5.434637\nv -0.856061 -1.409665 -5.459778\nv -0.856065 -1.595123 -5.459779\nv 0.717256 -1.641417 -5.704118\nv 0.717261 -1.453689 -5.704113\nv 0.762630 -0.770588 -5.768306\nv 1.107531 -1.465959 -5.409437\nv 1.107530 -1.649891 -5.409444\nv 1.192687 -0.727465 -5.478509\nv -2.389245 -0.540424 5.213467\nv -2.388760 -0.961605 5.215845\nv -2.388765 -1.145528 5.215849\nv -1.413587 -0.445859 5.819130\nv -1.415385 -0.832457 5.850730\nv -1.415374 -1.016381 5.850743\nv 0.314534 0.371475 3.400165\nv 0.744841 0.325187 2.472573\nv 0.626601 0.308884 3.394081\nv 0.486174 0.421049 1.563210\nv 0.852102 0.343198 1.549736\nv 0.400016 0.396355 2.489795\nv -0.560269 0.444247 2.522841\nv -0.230104 0.452345 2.511174\nv -0.544472 0.437187 2.845298\nv -0.506832 0.432728 3.084978\nv -0.451743 0.430657 3.224211\nv -0.359055 0.428428 3.337862\nv 0.055869 0.405271 3.404706\nv -0.546197 0.452806 2.202920\nv -0.508144 0.461179 1.951268\nv -0.455857 0.467990 1.791699\nv -0.404054 0.472164 1.720084\nv -0.338474 0.475543 1.673741\nv -0.235317 0.478174 1.632073\nv -0.031239 0.474772 1.600154\nv -0.084325 0.447838 2.503166\nv 0.198468 0.459017 1.576791\nv 0.120965 0.432925 2.495740\nv -0.137526 0.420157 3.406157\nv 1.217205 0.230911 1.530260\nv 1.079972 0.226287 2.460224\nv 0.941850 0.220052 3.390086\nv 1.584397 -0.111676 2.461492\nv 1.818157 -0.383781 2.212866\nv 1.719821 -0.402997 2.776013\nv 1.436971 -0.136681 3.445073\nv 1.556757 -0.408128 3.465383\nv 1.731816 -0.086662 1.477916\nv 1.847465 -0.192022 1.421499\nv -0.266491 0.425702 3.389990\nv 1.246789 0.075273 3.416397\nv 1.385021 0.077388 2.464988\nv 1.522540 0.078186 1.507331\nv -0.057201 1.213796 -0.424424\nv 0.143344 1.068454 0.360078\nv -0.115576 1.224951 -0.355977\nv -0.148653 1.226225 -0.275183\nv -0.168009 1.222734 -0.190291\nv -0.184311 1.215419 -0.080066\nv -0.189730 1.203004 0.049018\nv -0.175370 1.175531 0.268925\nv -0.147106 1.148916 0.447784\nv -0.102222 1.116390 0.640472\nv -0.041911 1.080607 0.822416\nv 0.006114 1.055696 0.929514\nv 0.076228 1.023576 1.037307\nv 0.146046 0.994191 1.108035\nv 0.239481 0.955980 1.170569\nv 0.029092 1.189730 -0.475246\nv 0.315912 1.003839 0.334089\nv 0.415000 0.883639 1.217196\nv 0.200185 1.131172 -0.551220\nv 0.408360 1.043159 -0.633130\nv 0.506238 0.921171 0.285462\nv 0.611141 0.794870 1.213965\nv 0.676181 0.901692 -0.737579\nv 0.766748 0.783687 0.208264\nv 0.866571 0.659193 1.164551\nv 0.916600 0.754655 -0.860935\nv 1.124357 0.500787 1.070944\nv 1.016016 0.629422 0.126936\nv 1.347597 0.351009 0.989051\nv 1.243145 0.478063 0.019114\nv 1.138399 0.606998 -0.983398\nv 1.333115 0.467273 -1.104660\nv 1.462717 0.319083 -0.086608\nv 1.583723 0.177516 0.931891\nv 1.492224 0.302504 -1.245473\nv 1.616750 0.153019 -0.158868\nv 1.732948 0.012929 0.911662\nv 1.738626 -0.073182 -0.238592\nv 1.833457 -0.146419 0.954467\nv 1.634559 0.016334 -1.458410\nv 1.684372 -0.274759 -1.710038\nv 1.748333 -0.302851 -0.829026\nv 1.817555 -0.331328 0.130709\nv 1.865801 -0.222990 1.110316\nv 1.866538 -0.238934 1.304060\nv 1.871393 -0.370566 1.406453\nv 1.855803 -0.342772 1.077390\nv 1.758841 -0.623903 2.863078\nv 1.610924 -0.601947 3.449848\nv 1.815337 -0.897101 2.890554\nv 1.665005 -0.810117 3.425231\nv 1.636216 -0.962283 3.362130\nv 1.762934 -1.057762 2.876631\nv 1.863444 -0.664314 2.130520\nv 1.924183 -1.028136 2.071391\nv 1.857942 -1.187162 2.056946\nv 1.894887 -0.696713 1.509865\nv 1.918627 -1.088339 1.530748\nv 1.869900 -1.278741 1.546203\nv 1.879559 -0.709139 1.033458\nv 1.912356 -1.132394 1.033226\nv 1.856073 -1.344826 1.035695\nv 1.836845 -0.539913 0.211861\nv 1.830834 -0.742857 0.293108\nv 1.752687 -0.542691 -1.007048\nv 1.731429 -0.770041 -1.172429\nv 1.867389 -1.190442 0.355933\nv 1.818234 -1.414135 0.360413\nv 1.756527 -1.216192 -1.290847\nv 1.705112 -1.493980 -1.374062\nv 1.688839 -0.512192 -1.896556\nv 1.686369 -0.759078 -2.111943\nv 1.685172 -0.967864 -2.298298\nv 1.677606 -1.234688 -2.462806\nv 1.619037 -1.474470 -2.577138\nv 0.444573 0.388798 2.488020\nv 0.462900 0.388470 2.420421\nv 0.469410 0.381474 2.553278\nv 0.527751 0.368585 2.591239\nv 0.597112 0.354331 2.587366\nv 0.651025 0.344377 2.543142\nv 0.669154 0.343414 2.475511\nv 0.517323 0.380277 2.376289\nv 0.644699 0.352109 2.410322\nv 0.586786 0.366479 2.372437\nv 0.790660 0.774343 0.126586\nv 0.832228 0.751748 0.074371\nv 0.782409 0.774905 0.196161\nv 0.944425 0.679027 0.087492\nv 0.890993 0.715342 0.059438\nv 0.810832 0.753378 0.256526\nv 0.864838 0.717744 0.284614\nv 0.923544 0.681277 0.269679\nv 0.964529 0.657913 0.217424\nv 0.972448 0.656975 0.147832\nv 0.304885 0.312522 3.397625\nv 0.730228 0.267293 2.469706\nv 0.612598 0.250821 3.391214\nv 0.476200 0.362151 1.560737\nv 0.837039 0.285400 1.546884\nv 0.390190 0.337430 2.487290\nv -0.556766 0.384562 2.521392\nv -0.231157 0.392571 2.509354\nv -0.541550 0.377487 2.843789\nv -0.504687 0.372983 3.083385\nv -0.450535 0.370886 3.222550\nv -0.359250 0.368659 3.336082\nv 0.049812 0.345824 3.402450\nv -0.542529 0.393123 2.201495\nv -0.504725 0.401503 1.949840\nv -0.452983 0.408266 1.790234\nv -0.401800 0.412413 1.718567\nv -0.337095 0.415779 1.672157\nv -0.235320 0.418377 1.630378\nv -0.034040 0.415073 1.598239\nv -0.087414 0.388157 2.501186\nv 0.192482 0.399547 1.574628\nv 0.115016 0.373455 2.493536\nv -0.140883 0.360479 3.404111\nv 1.197093 0.174699 1.527049\nv 1.060720 0.169769 2.457028\nv 0.923462 0.163258 3.386916\nv 1.540164 -0.151175 2.453856\nv 1.762268 -0.403450 2.204751\nv 1.665210 -0.422954 2.762074\nv 1.392893 -0.176418 3.435501\nv 1.503363 -0.421967 3.449999\nv 1.687577 -0.126163 1.470277\nv 1.791457 -0.211648 1.414290\nv -0.268043 0.365949 3.388090\nv 1.219590 0.022210 3.412237\nv 1.357008 0.024749 2.460832\nv 1.493722 0.025990 1.503175\nv -0.075452 1.157127 -0.430120\nv 0.123257 1.012371 0.354680\nv -0.132692 1.167937 -0.361853\nv -0.165041 1.169038 -0.281171\nv -0.183905 1.165406 -0.196358\nv -0.199732 1.157961 -0.086205\nv -0.204777 1.145451 0.042822\nv -0.190239 1.117927 0.262700\nv -0.162073 1.091345 0.441576\nv -0.117555 1.058907 0.634321\nv -0.057918 1.023287 0.816366\nv -0.010501 0.998560 0.923558\nv 0.058669 0.966710 1.031501\nv 0.127430 0.937649 1.102395\nv 0.219401 0.899913 1.165172\nv 0.009280 1.133571 -0.480687\nv 0.292847 0.948904 0.329199\nv 0.392037 0.828654 1.212287\nv 0.177311 1.076144 -0.556141\nv 0.381761 0.989775 -0.637386\nv 0.479844 0.867691 0.281171\nv 0.584825 0.741351 1.209656\nv 0.644830 0.850880 -0.740910\nv 0.735757 0.732686 0.204856\nv 0.835796 0.608037 1.161098\nv 0.883296 0.705077 -0.863869\nv 1.091195 0.451119 1.067980\nv 0.982843 0.579746 0.123978\nv 1.312740 0.302486 0.986450\nv 1.208238 0.429586 0.016525\nv 1.103414 0.558603 -0.985968\nv 1.296627 0.419988 -1.106896\nv 1.426128 0.271859 -0.088827\nv 1.547119 0.130291 0.929671\nv 1.448141 0.262190 -1.245965\nv 1.572620 0.112737 -0.159352\nv 1.688808 -0.027352 0.911177\nv 1.684951 -0.099373 -0.235935\nv 1.779772 -0.172612 0.957125\nv 1.580879 -0.009856 -1.455751\nv 1.626082 -0.287454 -1.706210\nv 1.690043 -0.315541 -0.825200\nv 1.759249 -0.344012 0.134538\nv 1.806882 -0.232355 1.114269\nv 1.808812 -0.254080 1.307740\nv 1.812400 -0.380211 1.405870\nv 1.796883 -0.352137 1.081290\nv 1.700474 -0.629300 2.851229\nv 1.556865 -0.607585 3.432837\nv 1.756906 -0.898884 2.877987\nv 1.608343 -0.812265 3.406228\nv 1.605468 -0.970249 3.352884\nv 1.733096 -1.059608 2.868863\nv 1.804120 -0.669333 2.125018\nv 1.864469 -1.029337 2.068751\nv 1.826544 -1.188373 2.054138\nv 1.835285 -0.701412 1.509783\nv 1.858974 -1.089138 1.534703\nv 1.838556 -1.279542 1.550189\nv 1.820075 -0.713579 1.037536\nv 1.852715 -1.133195 1.037253\nv 1.824739 -1.345620 1.039724\nv 1.777360 -0.544363 0.215977\nv 1.771335 -0.747299 0.297226\nv 1.693188 -0.547135 -1.002931\nv 1.671929 -0.774485 -1.168313\nv 1.807752 -1.191237 0.359963\nv 1.786901 -1.414925 0.364445\nv 1.696874 -1.216988 -1.286819\nv 1.673822 -1.494745 -1.369420\nv 1.629357 -0.516641 -1.892439\nv 1.626888 -0.763521 -2.107825\nv 1.625531 -0.968666 -2.294269\nv 1.617973 -1.235480 -2.458776\nv 1.587773 -1.475199 -2.572073\nv 0.434131 0.329978 2.485464\nv 0.452275 0.329679 2.417858\nv 0.458544 0.322722 2.550693\nv 0.516031 0.310007 2.588586\nv 0.584428 0.295966 2.584638\nv 0.637632 0.286175 2.540365\nv 0.655602 0.285250 2.472724\nv 0.505979 0.321631 2.373674\nv 0.631550 0.293852 2.407569\nv 0.574481 0.308027 2.369750\nv 0.759118 0.723653 0.123293\nv 0.800358 0.701267 0.071146\nv 0.750980 0.724132 0.192842\nv 0.911727 0.629035 0.084433\nv 0.858666 0.665131 0.056304\nv 0.779237 0.702689 0.253240\nv 0.832903 0.667303 0.281402\nv 0.891169 0.631099 0.266554\nv 0.931794 0.607957 0.214372\nv 0.939609 0.607098 0.144802\nv 1.351807 -0.018424 3.432387\nv 1.316168 -0.064824 3.425519\n# 2636 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng strap02a\nusemtl flltbrown\ns 1\nf 546 426 427 543\nf 545 422 423 546\nf 447 448 547\nf 550 438 439 547\nf 459 460 551\nf 551 462 463 550\nf 478 479 552\nf 191 190 271\nf 270 272 187\nf 179 178 269\nf 154 153 268\nf 161 160 266\nf 266 163 162 263\nf 146 145 261\nf 142 141 264\nf 406 407 500\nf 491 363 364 490\nf 386 387 501\nf 494 390 391 490\nf 501 383 372 500\nf 498 410 411 497\nf 411 412 497\nf 83 82 208\nf 102 113 209\nf 218 91 90 219\nf 95 94 213\nf 218 124 123 213\nf 214 133 132 215\ng strap02\ns 6\nf 417 416 134 135\nf 126 127 409 408\nf 122 404 403 121\nf 377 95 96 378\nf 99 381 380 98\nf 386 104 105 387\nf 366 365 83 84\nf 367 366 84 85\nf 188 470 469 187\nf 181 182 464 463\nf 467 185 174 456\nf 155 156 438 437\nf 167 449 448 166\nf 454 172 173 455\nf 142 143 425 424\ng strap02a\ns 1\nf 62 8 565 568\nf 565 7 63\ng strap02\ns 6\nf 22 23 305 304\nf 223 226 508 505\nf 211 34 316 493\nf 41 42 324 323\nf 202 47 329 484\nf 222 51 333 504\nf 57 58 340 339\nf 64 257 539 346\nf 70 71 353 352\nf 75 76 358 357\nf 254 5 287 536\nf 294 293 11 12\ng strap02a\ns 1\nf 292 342 564\nf 563 554 553 562\nf 553 551 537 288\nf 348 349 544 545\nf 283 284 557\nf 535 352 353\nf 338 339 527\nf 341 294 340\nf 530 339 528\nf 525 526 533\nf 510 519 521 514\nf 512 514 521 520\nf 506 507 335\nf 311 502 503 504\nf 389 494 388\nf 494 490 330 492\nf 319 480 486\nf 319 320 480\nf 282 10 9\nf 274 6 271 280\nf 255 5 268 269\nf 3 258 259 261\nf 70 69 276\nf 73 72 253\nf 239 238 250 246\nf 13 59 58\nf 249 245 55\nf 235 250 238 240\nf 234 236 24 23\nf 15 14 235 240\nf 223 52 227\nf 30 220 216 31\nf 201 205 214 215\nf 79 209 80\nf 203 46 198\nf 198 40 39\nf 41 40 198\nf 202 46 203\nf 34 209 207 35\nf 32 217 218 33\nf 221 215 216 220\nf 51 226 227\nf 15 240 233\nf 22 229 234 23\nf 244 27 26 236\nf 55 54 249\nf 250 57 246\nf 239 246 248\nf 253 277 73\nf 276 253 70\nf 67 262 260 68\nf 65 267 266 256\nf 188 272 271 189\nf 61 8 62\nf 480 322 323\nf 485 328 484\nf 316 317 489 491\nf 314 315 500 499\nf 502 498 497 503\nf 508 310 333\nf 515 522 297\nf 305 516 511 304\nf 518 308 309 526\nf 531 336 337\nf 528 339 532\nf 519 524 531 527\nf 357 358 535\nf 535 561 357\nf 544 542 541 543\nf 538 348 545 548\nf 443 548 442\nf 563 562 289 345\ng strap02\ns 6\nf 296 534 252 14\nf 6 274 556 288\nf 1 2 284 283\nf 72 73 355 354\nf 256 66 348 538\nf 60 282 564 342\nf 54 55 336\nf 205 201 483 487\nf 199 45 327 481\nf 38 39 321 320\nf 31 32 314 313\nf 27 224 506 309\nf 19 20 302 301\nf 7 565 566 289\nf 149 138 420 431\nf 145 146 428 427\nf 449 167 168 450\nf 150 151 433 432\nf 153 435 434 152\nf 177 459 458 176\nf 193 194 476 475\nf 473 472 190 191\nf 78 79 361 360\nf 109 391 390 108\nf 113 102 384 395\nf 91 373 372 90\nf 125 407 406 124\nf 401 400 118 119\nf 129 130 412 411\ng strap02a\ns 1\nf 131 130 215\nf 127 126 216\nf 116 115 217\nf 212 97 96 213\nf 104 103 219\nf 111 110 208\nf 207 88 87 206\nf 496 416 417 499\nf 494 381 382 501\nf 495 378 379 494\nf 392 393 490\nf 490 366 367 488\nf 364 365 490\nf 398 399 499\nf 138 149 262\nf 167 166 265\nf 264 169 168 265\nf 267 151 150 266\nf 180 179 269\nf 271 269 192\nf 195 194 269\nf 476 477 551\nf 475 551 553\nf 550 465 466 549\nf 433 434 549\nf 439 440 547\nf 547 450 451 546\nf 431 420 544\nf 269 176 270\nf 423 424 546\nf 546 453 454 545\nf 548 446 447 547\nf 443 432 548\nf 457 458 552\nf 553 474 475\nf 469 554 552\nf 193 192 269\nf 192 191 271\nf 183 182 268\nf 266 160 159 265\nf 166 165 265\nf 263 172 171 264\nf 263 139 138 262\nf 400 401 496\nf 396 397 499\nf 368 369 488\nf 395 384 491\nf 377 378 495\nf 500 375 376 495\nf 418 419 499\nf 206 85 84 208\nf 89 88 207\nf 108 107 212\nf 213 94 93 218\nf 214 118 117 217\nf 122 121 213\nf 217 135 134 214\ng strap02\ns 6\nf 131 132 414 413\nf 135 136 418 417\nf 398 116 117 399\nf 374 92 93 375\nf 99 100 382 381\nf 394 112 113 395\nf 363 362 80 81\nf 369 87 88 370\nf 196 197 479 478\nf 178 179 461 460\nf 465 183 184 466\nf 441 159 160 442\nf 163 164 446 445\nf 453 452 170 171\nf 139 140 422 421\nf 565 8 290 566\nf 17 18 300 299\nf 25 26 308 307\nf 29 30 312 311\nf 36 37 319 318\nf 200 44 326 482\nf 331 492 210 49\nf 52 53 335 334\nf 58 59 341 340\nf 257 65 347 539\nf 560 353 71 278\nf 76 77 359 358\nf 5 255 537 287\nf 13 295 294 12\ng strap02a\ns 1\nf 291 292 564\nf 476 551 475\nf 347 538 548 549\nf 349 350 542 544\nf 352 535 558\nf 355 559 535\nf 530 528 521\nf 340 294 295\nf 337 338 527\nf 526 309 506 533\nf 306 307 308 518\nf 512 520 522 515\nf 507 505 334\nf 503 332 504\nf 313 314 499 498\nf 317 318 486 489\nf 485 486 480\nf 480 320 321\nf 10 282 60\nf 273 281 272 64\nf 257 270 267 65\nf 4 3 261 264\nf 275 1 253\nf 253 278 71\nf 57 245 248\nf 59 12 11\nf 245 56 55\nf 244 251 224 27\nf 236 26 25 24\nf 233 240 238 230\nf 225 53 52\nf 222 50 221\nf 31 216 217 32\nf 207 204 36 35\nf 198 204 203\nf 39 38 198\nf 198 42 41\nf 46 45 198\nf 48 47 206 208\nf 205 49 213 214\nf 50 201 215 221\nf 223 227 226\nf 233 230 18 17\nf 21 231 229 22\nf 243 244 236 234\nf 54 247 249\nf 235 57 250\nf 245 237 239 248\nf 279 74 253\nf 275 253 276\nf 260 259 275 276\nf 5 254 265 268\nf 174 270 175\nf 9 61 282\nf 321 322 480\nf 480 328 485\nf 366 490 365\nf 497 496 487 483\nf 312 313 498 502\nf 505 508 509\nf 522 517 296 297\nf 305 306 518 516\nf 522 520 532 517\nf 337 527 531\nf 339 340 295\nf 528 532 520 521\nf 535 354 355\nf 558 351 352\nf 543 541 540 285\nf 551 550 287 537\nf 562 553 288 556\nf 290 291 343\ng strap02\ns 6\nf 534 295 13 252\nf 255 6 288 537\nf 283 359 77 1\nf 278 72 354 560\nf 65 256 538 347\nf 59 60 342 341\nf 227 52 334 509\nf 48 210 492 330\nf 43 200 482 325\nf 35 36 318 317\nf 28 29 311 310\nf 24 25 307 306\nf 299 298 16 17\nf 568 567 344 62\nf 140 141 423 422\nf 170 452 451 169\nf 164 165 447 446\nf 154 436 435 153\nf 183 465 464 182\nf 179 180 462 461\nf 468 479 197 186\nf 368 86 87 369\nf 364 363 81 82\nf 104 386 385 103\nf 100 101 383 382\nf 375 93 94 376\nf 124 406 405 123\nf 137 419 418 136\nf 132 133 415 414\ng strap02a\ns 1\nf 136 135 217\nf 125 124 218\nf 115 114 217\nf 101 100 219\nf 105 104 219\nf 78 89 207\nf 81 80 209\nf 499 419 408 498\nf 372 373 500\nf 491 384 385 501\nf 501 387 388 494\nf 370 371 489\nf 495 405 406 500\nf 401 402 496\nf 147 146 261\nf 173 172 263\nf 155 154 268\nf 156 155 268\nf 267 184 183 268\nf 187 186 270\nf 195 269 270\nf 552 551 477\nf 473 474 553\nf 549 456 457 552\nf 435 436 550\nf 445 446 548\nf 454 455 545\nf 427 428 543\nf 543 429 430 544\nf 544 420 421 545\nf 448 449 547\nf 547 441 442 548\nf 436 437 550\nf 463 464 550\nf 479 468 552\nf 471 472 553\nf 194 193 269\nf 176 175 270\nf 270 174 185 267\nf 152 151 267\nf 170 169 264\nf 261 145 144 264\nf 149 148 262\nf 397 398 499\nf 362 363 491\nf 488 369 370 489\nf 391 392 490\nf 374 375 500\nf 413 414 497\nf 415 416 496\nf 87 86 206\nf 110 109 208\nf 113 112 209\nf 96 95 213\nf 213 121 120 214\nf 130 129 215\nf 137 136 217\ng strap02\ns 6\nf 410 128 129 411\nf 402 401 119 120\nf 396 407 125 114\nf 97 379 378 96\nf 388 106 107 389\nf 392 391 109 110\nf 371 89 78 360\nf 190 472 471 189\nf 194 195 477 476\nf 175 176 458 457\nf 157 158 440 439\nf 161 150 432 443\nf 450 168 169 451\nf 426 144 145 427\nf 148 149 431 430\ng strap02a\ns 1\nf 63 568 565\ng strap02\ns 6\nf 20 21 303 302\nf 224 225 507 506\nf 32 33 315 314\nf 39 40 322 321\nf 45 46 328 327\nf 201 50 332 483\nf 55 56 338 337\nf 63 273 555 345\nf 68 69 351 350\nf 74 279 561 356\nf 286 285 3 4\nf 9 10 292 291\ng strap02a\ns 1\nf 292 293 342\nf 555 563 345\nf 445 548 545 444\nf 547 546 286 536\nf 557 284 540 541\nf 560 354 535\nf 535 358 359\nf 524 523 529 531\nf 534 339 295\nf 533 506 336\nf 511 523 524 513\nf 301 302 510 514\nf 335 336 506\nf 310 311 504 333\nf 404 495 403\nf 315 493 501 500\nf 488 485 484 329\nf 480 326 481\nf 325 482 480\nf 7 274 280\nf 6 255 269 271\nf 66 263 262 67\nf 275 2 1\nf 71 70 253\nf 245 57 56\nf 13 12 59\nf 246 57 248\nf 251 244 243\nf 232 239 237 228\nf 238 239 232 230\nf 53 224 54\nf 29 222 221 220\nf 108 212 208 109\nf 210 48 208 212\nf 204 198 37\nf 198 38 37\nf 43 42 198\nf 198 45 199\nf 206 203 204 207\nf 49 210 212 213\nf 137 217 216 126\nf 51 28 226\nf 16 15 233 17\nf 228 231 21 20\nf 241 243 234 229\nf 251 247 54\nf 252 57 235\nf 237 245 249 242\nf 253 76 75\nf 75 279 253\nf 262 261 259 260\nf 256 266 263 66\nf 152 267 268 153\nf 61 9 8\nf 480 324 325\nf 481 327 480\nf 489 486 485 488\nf 495 494 492 331\nf 415 496 497 414\nf 333 509 508\nf 299 515 297 298\nf 302 303 513 510\nf 511 516 525 523\nf 336 529 533\nf 517 339 534\nf 293 294 341\nf 359 283 535\nf 559 356 535\nf 350 351 558 542\nf 431 544 430\nf 346 539 552 554\nf 562 556 289\ng strap02\ns 6\nf 16 298 297 15\nf 291 290 8 9\nf 258 3 285 540\nf 277 74 356 559\nf 67 68 350 349\nf 61 62 344 343\nf 55 337 336\nf 50 222 504 332\nf 46 202 484 328\nf 40 41 323 322\nf 33 211 493 315\nf 225 223 505 507\nf 21 22 304 303\ng strap02a\ns 1\nf 289 566 345\ng strap02\ns 6\nf 147 148 430 429\nf 143 144 426 425\nf 455 173 162 444\nf 160 161 443 442\nf 438 156 157 439\nf 174 175 457 456\nf 195 196 478 477\nf 189 471 470 188\nf 370 88 89 371\nf 111 393 392 110\nf 387 105 106 388\nf 380 379 97 98\nf 114 115 397 396\nf 121 403 402 120\nf 409 127 128 410\ng strap02a\ns 1\nf 128 127 216\nf 215 129 128 216\nf 120 119 214\nf 98 97 212\nf 219 100 99 212\nf 219 103 102 209\nf 86 85 206\nf 417 418 499\nf 412 413 497\nf 373 374 500\nf 389 390 494\nf 489 360 361 491\nf 361 362 491\nf 500 407 396 499\nf 143 142 264\nf 144 143 264\nf 171 170 264\nf 150 161 266\nf 185 184 267\nf 178 177 269\nf 197 196 270\nf 469 470 554\nf 554 470 471 553\nf 461 462 551\nf 552 458 459 551\nf 437 438 550\nf 451 452 546\nf 421 422 545\nf 425 426 546\nf 424 425 546\nf 455 444 545\nf 452 453 546\nf 549 434 435 550\nf 467 456 549\nf 466 467 549\nf 552 468 469\nf 190 189 271\nf 188 187 272\nf 268 181 180 269\nf 265 157 156 268\nf 158 157 265\nf 162 173 263\nf 262 148 147 261\nf 281 280 271 272\nf 404 405 495\nf 371 360 489\nf 385 386 501\nf 490 393 394 491\nf 382 383 501\nf 409 410 498\nf 208 82 81 209\nf 209 79 78 207\nf 212 106 105 219\nf 90 101 219\nf 92 91 218\nf 123 122 213\nf 132 131 215\ng strap02\ns 6\nf 416 415 133 134\nf 419 137 126 408\nf 404 122 123 405\nf 376 94 95 377\nf 383 101 90 372\nf 103 385 384 102\nf 365 364 82 83\nf 86 368 367 85\nf 469 468 186 187\nf 463 462 180 181\nf 466 184 185 467\nf 154 155 437 436\nf 165 166 448 447\nf 453 171 172 454\nf 141 142 424 423\ng strap02a\ns 1\nf 344 567 566 290\nf 566 567 345\ng strap02\ns 6\nf 306 305 23 24\nf 508 226 28 310\nf 34 35 317 316\nf 42 43 325 324\nf 47 48 330 329\nf 51 227 509 333\nf 56 57 339 338\nf 273 64 346 555\nf 69 70 352 351\nf 279 75 357 561\nf 536 286 4 254\nf 10 11 293 292\ng strap02a\ns 1\nf 564 343 291\nf 555 346 554 563\nf 539 347 549 552\nf 546 543 285 286\nf 535 283 557\nf 353 560 535\nf 530 527 339\nf 341 342 293\nf 517 534 296\nf 523 525 533 529\nf 510 513 524 519\nf 300 301 514 512\nf 507 334 335\nf 312 502 311\nf 380 494 379\nf 493 316 491 501\nf 486 318 319\nf 482 326 480\nf 10 60 11\nf 63 281 273\nf 64 272 270 257\nf 141 140 263 264\nf 68 260 276 69\nf 253 74 277\nf 253 1 77\nf 59 11 60\nf 14 252 235\nf 241 247 251 243\nf 237 242 231 228\nf 230 232 19 18\nf 225 52 223\nf 29 220 30\nf 98 212 99\nf 211 219 209 34\nf 37 36 204\nf 198 44 200\nf 198 200 43\nf 199 44 198\nf 47 202 203 206\nf 33 218 219 211\nf 125 218 217 114\nf 28 51 222 29\nf 53 225 224\nf 232 228 20 19\nf 231 242 241 229\nf 54 224 251\nf 13 58 57 252\nf 242 249 247 241\nf 77 76 253\nf 253 72 278\nf 259 258 2 275\nf 254 4 264 265\nf 165 164 266 265\nf 63 7 280 281\nf 323 324 480\nf 480 327 328\nf 490 488 329 330\nf 496 495 331 487\nf 503 497 483 332\nf 505 509 334\nf 299 300 512 515\nf 304 511 513 303\nf 516 518 526 525\nf 531 529 336\nf 532 339 517\nf 530 521 519 527\nf 535 356 561\nf 558 535 557\nf 558 557 541 542\nf 550 547 536 287\nf 461 551 460\nf 343 344 290\ng strap02\ns 6\nf 15 297 296 14\nf 289 556 274 7\nf 2 258 540 284\nf 73 277 559 355\nf 66 67 349 348\nf 282 61 343 564\nf 53 54 336 335\nf 49 205 487 331\nf 44 199 481 326\nf 37 38 320 319\nf 30 31 313 312\nf 26 27 309 308\nf 18 19 301 300\nf 63 345 567 568\nf 138 139 421 420\nf 146 147 429 428\nf 162 163 445 444\nf 152 434 433 151\nf 440 158 159 441\nf 178 460 459 177\nf 192 193 475 474\nf 192 474 473 191\nf 79 80 362 361\nf 393 111 112 394\nf 108 390 389 107\nf 91 92 374 373\nf 397 115 116 398\nf 400 399 117 118\nf 412 130 131 413\ng strap02a\ns 1\nf 134 133 214\nf 119 118 214\nf 117 116 217\nf 93 92 218\nf 107 106 212\nf 209 112 111 208\nf 84 83 208\nf 408 409 498\nf 380 381 494\nf 376 377 495\nf 394 395 491\nf 367 368 488\nf 499 399 400 496\nf 496 402 403 495\nf 140 139 263\nf 164 163 266\nf 168 167 265\nf 159 158 265\nf 182 181 268\nf 186 197 270\nf 270 196 195\nf 477 478 552\nf 472 473 553\nf 464 465 550\nf 548 432 433 549\nf 440 441 547\nf 449 450 547\nf 428 429 543\nf 269 177 176\ng buckle\nusemtl silver\ns 2\nf 622 623 624 772 771 770 769 768 767 766 620 621\ng buckle1a\nf 585 725 724\nf 585 723 583\nf 579 580 581 582 583 723\nf 830 831 679\nf 830 678 677\nf 828 829 677\nf 828 676 675 674 673\nf 824 825 826 827 828 672\nf 822 823 672\nf 822 671 670\nf 822 577 578\nf 822 722 721\nf 822 720 719\nf 718 717 821\ng buckle\nf 1275 1276 1263\nf 1271 1272 1259\nf 1267 1268 1255\nf 1260 1261 1249 1248\nf 1252 1253 1241 1240\nf 1244 1245 1233 1232\nf 1236 1237 1225 1224\nf 1228 1229 1217 1216\nf 1220 1221 1209 1208\nf 1215 1216 1203\nf 1211 1212 1199\nf 1207 1208 1195\ng buckle1a\nf 1203 1204 1191\nf 1199 1200 1187\nf 1195 1196 1183\ng buckle\nf 1173 1174 1181\nf 1182 1166 1151 1167\nf 1175 1159 1160 1176\nf 1167 1151 1152 1168\nf 1160 1144 1145 1161\nf 1152 1136 1137 1153\nf 1145 1129 1130 1146\nf 1137 1121 1122 1138\nf 1130 1114 1115 1131\nf 1122 1106 1107 1123\nf 1115 1099 1100 1116\nf 1107 1091 1092 1108\nf 1100 1084 1085 1101\nf 1092 1076 1077 1093\nf 1069 1070 1086\nf 1077 1061 1062 1078\nf 1069 1053 1054 1070\nf 1061 1045 1046 1062\nf 1053 1037 1038 1054\nf 1045 1029 1030 1046\nf 1037 1021 1022 1038\nf 1029 1013 1014 1030\nf 1021 1005 1006 1022\nf 1013 997 998 1014\nf 1005 989 990 1006\nf 997 981 982 998\nf 989 973 974 990\nf 981 965 966 982\nf 973 957 958 974\nf 965 949 950 966\nf 957 941 942 958\nf 949 933 934 950\nf 941 925 926 942\nf 933 917 918 934\nf 925 909 910 926\nf 917 901 902 918\nf 909 893 894 910\nf 901 885 886 902\nf 894 882 881\nf 893 889 888\ng buckle1a\nf 708 878 737\ng buckle\nf 757 594 613\ng buckle1a\nf 876 865 874\ng buckle\nf 864 871 613\ng buckle1a\nf 849 818 817 848\ng buckle\nf 845 859 862\nf 858 838 837\ng buckle1a\nf 843 844 813 812\ng buckle\nf 850 849 855 854\nf 805 851 853 852\ng buckle1a\nf 784 805 804\nf 809 788 789\nf 808 779 780 807\nf 763 779 808 762\nf 795 796 761\ng buckle\nf 867 738 865\nf 753 754 740 741\nf 752 729 730\nf 733 755 758\nf 718 719 729 728\nf 717 718 728 727\nf 747 748 802 803\nf 694 695 701 702\nf 684 703 702\nf 704 686 707\nf 677 678 688 687\ng buckle1a\nf 696 695 667 668\nf 655 697 669 636\nf 634 660 635\nf 661 659 660\nf 772 624 625 773\nf 621 630 629\nf 615 649 648\nf 599 573 572 598\ng buckle\nf 614 597 596\nf 590 581 580 589\nf 613 594 593 612\ng buckle1a\nf 575 574 600 601\nf 637 576 602 652\ng buckle\nf 603 604 680\nf 586 606 587\nf 587 608 588\ng buckle1a\nf 595 596 570 569\ng buckle\nf 610 590 589\ng buckle1a\nf 571 597 598 572\ng buckle\nf 613 595 864\ng buckle1a\nf 616 647 646\nf 618 617 658 630\nf 658 657 631 630\nf 640 639 659\nf 655 635 660\ng buckle\nf 670 671 681 680\nf 682 700 699\nf 688 678 679 689\nf 685 675 676 686\nf 701 683 702\nf 693 694 702 703\nf 832 747 746\nf 728 749 727\nf 729 751 728\ng buckle1a\nf 738 709 710 739\ng buckle\nf 730 731 753\ng buckle1a\nf 712 741 740 711\ng buckle\nf 756 872 865\ng buckle1a\nf 796 797 761\nf 792 793 762\nf 808 807 791 792\nf 809 789 811\nf 802 786 787\ng buckle\nf 852 853 833\nf 854 855 834\nf 860 841 840 859\nf 837 826 825 836\nf 862 846 845\ng buckle1a\nf 848 817 816 847\ng buckle\nf 864 595 866\ng buckle1a\nf 873 875 737\nf 866 870 869\nf 877 866 595 569\ng buckle\nf 880 879 894\nf 893 884 883\nf 898 882 883 899\nf 906 890 891 907\nf 914 898 899 915\nf 922 906 907 923\nf 930 914 915 931\nf 938 922 923 939\nf 946 930 931 947\nf 954 938 939 955\nf 962 946 947 963\nf 970 954 955 971\nf 978 962 963 979\nf 986 970 971 987\nf 994 978 979 995\nf 1002 986 987 1003\nf 1010 994 995 1011\nf 1018 1002 1003 1019\nf 1026 1010 1011 1027\nf 1034 1018 1019 1035\nf 1042 1026 1027 1043\nf 1050 1034 1035 1051\nf 1058 1042 1043 1059\nf 1066 1050 1051 1067\nf 1074 1058 1059 1075\nf 1082 1066 1067 1083\nf 1089 1073 1074 1090\nf 1097 1081 1082 1098\nf 1104 1088 1089 1105\nf 1112 1096 1097 1113\nf 1119 1103 1104 1120\nf 1127 1111 1112 1128\nf 1134 1118 1103 1119\nf 1142 1126 1127 1143\nf 1133 1150 1149\nf 1157 1141 1142 1158\nf 1149 1150 1166\nf 1172 1156 1157 1173\nf 1180 1164 1165 1181\nf 1176 1177 1181\nf 1169 1170 1182\ng buckle1a\nf 1199 1187 1186\nf 1203 1191 1190\nf 1195 1183 1194\ng buckle\nf 1211 1199 1198\nf 1215 1203 1202\nf 1207 1195 1206\nf 1225 1226 1214 1213\nf 1233 1234 1222 1221\nf 1241 1242 1230 1229\nf 1249 1250 1238 1237\nf 1257 1258 1246 1245\nf 1265 1266 1254 1253\nf 1271 1259 1258\nf 1275 1263 1262\nf 1267 1255 1266\nf 1276 1264 1263\nf 1272 1260 1259\nf 1268 1256 1255\nf 1259 1260 1248 1247\nf 1251 1252 1240 1239\nf 1243 1244 1232 1231\nf 1235 1236 1224 1223\nf 1227 1228 1216 1215\nf 1219 1220 1208 1207\nf 1216 1204 1203\nf 1212 1200 1199\nf 1208 1196 1195\ng buckle1a\nf 1204 1192 1191\nf 1200 1188 1187\nf 1196 1184 1183\ng buckle\nf 1174 1175 1181\nf 1165 1182 1181\nf 1174 1158 1159 1175\nf 1166 1150 1135 1151\nf 1159 1143 1144 1160\nf 1151 1135 1136 1152\nf 1144 1128 1129 1145\nf 1136 1120 1121 1137\nf 1129 1113 1114 1130\nf 1121 1105 1106 1122\nf 1114 1098 1099 1115\nf 1106 1090 1091 1107\nf 1099 1083 1084 1100\nf 1091 1075 1076 1092\nf 1084 1068 1069 1085\nf 1076 1060 1061 1077\nf 1068 1052 1053 1069\nf 1060 1044 1045 1061\nf 1052 1036 1037 1053\nf 1044 1028 1029 1045\nf 1036 1020 1021 1037\nf 1028 1012 1013 1029\nf 1020 1004 1005 1021\nf 1012 996 997 1013\nf 1004 988 989 1005\nf 996 980 981 997\nf 988 972 973 989\nf 980 964 965 981\nf 972 956 957 973\nf 964 948 949 965\nf 956 940 941 957\nf 948 932 933 949\nf 940 924 925 941\nf 932 916 917 933\nf 924 908 909 925\nf 916 900 901 917\nf 908 892 893 909\nf 900 884 885 901\nf 894 883 882\nf 893 892 889\ng buckle1a\nf 877 737 870\nf 864 866 869\nf 876 874 737\ng buckle\nf 756 757 863\nf 827 838 839 828\ng buckle1a\nf 814 845 846 815\ng buckle\nf 858 837 857\nf 860 859 845 844\nf 834 835 824 823\nf 833 834 823 822\nf 804 805 852 746\ng buckle1a\nf 809 787 788\nf 807 806 790 791\nf 769 777 778 768\nf 794 795 761\nf 798 799 760\ng buckle\nf 741 742 752 753\nf 751 729 752\nf 731 721 722 732\nf 735 725 726 736\ng buckle1a\nf 745 744 715 716\ng buckle\nf 747 727 748\ng buckle1a\nf 695 694 666 667\ng buckle\nf 707 705 691\nf 685 686 704\ng buckle1a\nf 843 812 662 690\ng buckle\nf 700 701 695 696\nf 698 699 697 655\ng buckle1a\nf 655 660 654\nf 659 638 652\nf 657 656 632 631\nf 623 622 628 627\nf 616 645 644 617\nf 615 651 650\ng buckle\nf 610 609 599 598\nf 609 588 608\nf 591 582 581 590\nf 736 726 585 594\ng buckle1a\nf 576 575 601 602\ng buckle\nf 605 586 604\nf 604 586 680\nf 602 601 607 606\nf 594 585 584 593\nf 614 591 611\nf 609 610 589\nf 609 608 600 599\ng buckle1a\nf 759 651 615\nf 766 765 619 620\nf 623 627 626\nf 656 641 640 661\nf 633 661 660\ng buckle\nf 680 681 603\nf 699 700 696 697\nf 689 679 831 842\nf 687 705 707\nf 702 683 684\nf 703 704 692 693\nf 804 746 747 803\nf 727 749 748\nf 728 751 750\nf 756 738 739 755\nf 753 731 754\ng buckle1a\nf 711 740 739 710\ng buckle\nf 722 723 733 732\ng buckle1a\nf 761 797 760\nf 779 763 768\nf 808 792 762\nf 810 804 803 809\nf 804 810 784\ng buckle\nf 821 832 833 822\nf 853 854 834\nf 841 830 829 840\nf 838 827 826 837\nf 856 835 855\nf 857 856 848 847\nf 865 738 756\ng buckle1a\nf 737 874 873\nf 869 868 871 864\nf 708 737 877\ng buckle\nf 892 890 889\nf 894 893 883\nf 899 883 884 900\nf 907 891 892 908\nf 915 899 900 916\nf 923 907 908 924\nf 931 915 916 932\nf 939 923 924 940\nf 947 931 932 948\nf 955 939 940 956\nf 963 947 948 964\nf 971 955 956 972\nf 979 963 964 980\nf 987 971 972 988\nf 995 979 980 996\nf 1003 987 988 1004\nf 1011 995 996 1012\nf 1019 1003 1004 1020\nf 1027 1011 1012 1028\nf 1035 1019 1020 1036\nf 1043 1027 1028 1044\nf 1051 1035 1036 1052\nf 1059 1043 1044 1060\nf 1067 1051 1052 1068\nf 1075 1059 1060 1076\nf 1083 1067 1068 1084\nf 1090 1074 1075 1091\nf 1098 1082 1083 1099\nf 1105 1089 1090 1106\nf 1113 1097 1098 1114\nf 1120 1104 1105 1121\nf 1128 1112 1113 1129\nf 1135 1119 1120 1136\nf 1143 1127 1128 1144\nf 1150 1134 1119 1135\nf 1158 1142 1143 1159\nf 1149 1166 1165\nf 1173 1157 1158 1174\nf 1165 1166 1182\nf 1175 1176 1181\nf 1169 1182 1168\ng buckle1a\nf 1198 1199 1186\nf 1202 1203 1190\nf 1206 1195 1194\ng buckle\nf 1210 1211 1198\nf 1214 1215 1202\nf 1218 1207 1206\nf 1226 1227 1215 1214\nf 1234 1235 1223 1222\nf 1242 1231 1219 1230\nf 1250 1251 1239 1238\nf 1258 1259 1247 1246\nf 1266 1255 1243 1254\nf 1270 1271 1258\nf 1274 1275 1262\nf 1278 1267 1266\ng buckle1a\nf 642 643 644 645 646\nf 709 878 708\nf 789 788 787 786 716\nf 570 571 574 575\ng buckle\nf 651 801 800\nf 651 800 799\ng buckle1a\nf 714 713 712 711\nf 715 711 710\nf 877 569 576 641\nf 710 709 642\nf 716 715 642\nf 651 798 797\nf 795 791 716\nf 716 642 646\nf 716 646 650\nf 716 650 796\nf 617 618 619 765 764 763 762 761 760 759 615 616\nf 627 628 629 630\nf 626 627 631\nf 626 632 633\nf 625 626 636 669\nf 625 668 667\nf 773 667 666\nf 820 785 784 783 782\nf 780 779 778 777\nf 781 777 776\nf 781 775 774\nf 773 664 662 812\nf 774 812 813\nf 820 781 813 814\nf 815 816 817 818 819\ng buckle\nf 1268 1267 1278 1277 1276 1275 1274 1273 1272 1271 1270 1269\ng buckle1a\nf 819 820 814 815\nf 781 774 813\nf 774 773 812\nf 773 665 664\nf 781 776 775\nf 781 780 777\nf 820 782 781\nf 773 666 665\nf 773 625 667\nf 625 669 668\nf 626 633 634 635 636\nf 626 631 632\nf 627 630 631\nf 664 663 662\nf 796 795 716\nf 650 797 796\nf 646 647 648 650\nf 648 649 650\nf 650 651 797\nf 791 790 716\nf 715 710 642\nf 709 877 641 642\nf 569 570 575 576\nf 715 714 711\nf 790 789 716\nf 799 798 651\nf 576 640 641\nf 571 572 573 574\nf 709 708 877\nf 795 794 793 792 791\nf 576 637 638 639 640\ng buckle\nf 1276 1277 1264\nf 1272 1273 1260\nf 1268 1269 1256\nf 1262 1263 1251 1250\nf 1254 1243 1231 1242\nf 1246 1247 1235 1234\nf 1238 1239 1227 1226\nf 1230 1219 1207 1218\nf 1222 1223 1211 1210\nf 1216 1217 1204\nf 1212 1213 1200\nf 1208 1209 1196\ng buckle1a\nf 1204 1205 1192\nf 1200 1201 1188\nf 1196 1197 1184\ng buckle\nf 1171 1172 1181\nf 1182 1167 1168\nf 1177 1161 1162 1178\nf 1169 1153 1154 1170\nf 1162 1146 1147 1163\nf 1154 1138 1139 1155\nf 1147 1131 1132 1148\nf 1139 1123 1124 1140\nf 1132 1116 1117 1133\nf 1124 1108 1109 1125\nf 1101 1102 1118\nf 1109 1093 1094 1110\nf 1085 1102 1101\nf 1094 1078 1079 1095\nf 1086 1070 1055 1071\nf 1079 1063 1064 1080\nf 1071 1055 1056 1072\nf 1063 1047 1048 1064\nf 1055 1039 1040 1056\nf 1047 1031 1032 1048\nf 1039 1023 1024 1040\nf 1031 1015 1016 1032\nf 1023 1007 1008 1024\nf 1015 999 1000 1016\nf 1007 991 992 1008\nf 999 983 984 1000\nf 991 975 976 992\nf 983 967 968 984\nf 975 959 960 976\nf 967 951 952 968\nf 959 943 944 960\nf 951 935 936 952\nf 943 927 928 944\nf 935 919 920 936\nf 927 911 912 928\nf 919 903 904 920\nf 911 895 896 912\nf 903 887 888 904\nf 895 879 880 896\nf 893 887 886\ng buckle1a\nf 878 867 876\ng buckle\nf 756 735 757\ng buckle1a\nf 876 867 865\nf 737 875 868\ng buckle\nf 862 839 838\nf 862 858 846\nf 836 825 824 835\nf 859 840 839\nf 834 855 835\nf 833 853 834\ng buckle1a\nf 784 785 805\nf 809 803 802 787\nf 780 781 806 807\nf 770 776 777 769\nf 762 793 794 761\nf 799 800 760\ng buckle\nf 742 743 751 752\nf 730 753 752\nf 754 732 758\nf 734 724 725 735\nf 749 750 744 745\nf 832 727 747\ng buckle1a\nf 694 693 665 666\ng buckle\nf 691 692 707\nf 684 674 675 685\nf 705 688 689 706\nf 682 701 700\nf 681 699 698\ng buckle1a\nf 638 637 652\nf 661 640 659\nf 658 643 642 657\nf 617 644 643\nf 616 648 647\ng buckle\nf 582 591 592 583\ng buckle1a\nf 570 596 597 571\ng buckle\nf 611 590 610\nf 613 612 596 595\nf 607 608 587\nf 605 606 586\nf 653 604 603 654\nf 652 602 606 605\nf 601 600 608 607\nf 612 593 592\nf 589 580 579 588\nf 614 611 597\nf 614 592 591\ng buckle1a\nf 615 648 616\nf 621 618 630\nf 617 643 658\nf 659 653 654 660\nf 660 634 633\ng buckle\nf 603 681 698\ng buckle1a\nf 697 696 668 669\ng buckle\nf 706 689 842 861\ng buckle1a\nf 690 662 663 691\ng buckle\nf 684 685 703\ng buckle1a\nf 665 693 692 664\ng buckle\nf 690 706 861 843\nf 748 749 745 802\nf 750 751 743 744\nf 733 734 755\nf 730 729 719 720\nf 740 754 758\nf 732 733 758\ng buckle1a\nf 797 798 760\nf 778 779 768\nf 772 773 774 771\nf 810 809 811\nf 784 810 783\nf 785 820 851 805\nf 819 818 849 850\ng buckle\nf 828 839 840 829\nf 862 838 858\nf 856 857 836\nf 856 855 849 848\nf 871 863 613\ng buckle1a\nf 868 869 737\nf 868 875 863 871\ng buckle\nf 757 735 736\ng buckle1a\nf 878 709 738 867\ng buckle\nf 893 886 885\nf 896 880 881 897\nf 904 888 889 905\nf 912 896 897 913\nf 920 904 905 921\nf 928 912 913 929\nf 936 920 921 937\nf 944 928 929 945\nf 952 936 937 953\nf 960 944 945 961\nf 968 952 953 969\nf 976 960 961 977\nf 984 968 969 985\nf 992 976 977 993\nf 1000 984 985 1001\nf 1008 992 993 1009\nf 1016 1000 1001 1017\nf 1024 1008 1009 1025\nf 1032 1016 1017 1033\nf 1040 1024 1025 1041\nf 1048 1032 1033 1049\nf 1056 1040 1041 1057\nf 1064 1048 1049 1065\nf 1072 1056 1057 1073\nf 1080 1064 1065 1081\nf 1087 1071 1072 1088\nf 1095 1079 1080 1096\nf 1102 1086 1071 1087\nf 1110 1094 1095 1111\nf 1101 1118 1117\nf 1125 1109 1110 1126\nf 1117 1118 1134\nf 1140 1124 1125 1141\nf 1148 1132 1133 1149\nf 1155 1139 1140 1156\nf 1163 1147 1148 1164\nf 1170 1154 1155 1171\nf 1178 1162 1163 1179\nf 1177 1178 1180\nf 1171 1181 1182\ng buckle1a\nf 1198 1186 1185\nf 1202 1190 1189\nf 1206 1194 1193\ng buckle\nf 1210 1198 1197\nf 1214 1202 1201\nf 1218 1206 1205\nf 1223 1224 1212 1211\nf 1231 1232 1220 1219\nf 1239 1240 1228 1227\nf 1247 1248 1236 1235\nf 1255 1256 1244 1243\nf 1263 1264 1252 1251\nf 1270 1258 1257\nf 1274 1262 1261\nf 1278 1266 1265\nf 1277 1265 1264\nf 1273 1261 1260\nf 1269 1257 1256\nf 1261 1262 1250 1249\nf 1253 1254 1242 1241\nf 1245 1246 1234 1233\nf 1237 1238 1226 1225\nf 1229 1230 1218 1217\nf 1221 1222 1210 1209\nf 1217 1205 1204\nf 1213 1201 1200\nf 1209 1197 1196\ng buckle1a\nf 1205 1193 1192\nf 1201 1189 1188\nf 1197 1185 1184\ng buckle\nf 1172 1173 1181\nf 1178 1179 1180\nf 1176 1160 1161 1177\nf 1168 1152 1153 1169\nf 1161 1145 1146 1162\nf 1153 1137 1138 1154\nf 1146 1130 1131 1147\nf 1138 1122 1123 1139\nf 1131 1115 1116 1132\nf 1123 1107 1108 1124\nf 1116 1100 1101 1117\nf 1108 1092 1093 1109\nf 1085 1086 1102\nf 1093 1077 1078 1094\nf 1069 1086 1085\nf 1078 1062 1063 1079\nf 1070 1054 1039 1055\nf 1062 1046 1047 1063\nf 1054 1038 1023 1039\nf 1046 1030 1031 1047\nf 1038 1022 1007 1023\nf 1030 1014 1015 1031\nf 1022 1006 991 1007\nf 1014 998 999 1015\nf 1006 990 975 991\nf 998 982 983 999\nf 990 974 959 975\nf 982 966 967 983\nf 974 958 943 959\nf 966 950 951 967\nf 958 942 927 943\nf 950 934 935 951\nf 942 926 911 927\nf 934 918 919 935\nf 926 910 895 911\nf 918 902 903 919\nf 910 894 879 895\nf 902 886 887 903\nf 880 894 881\nf 893 888 887\ng buckle1a\nf 737 878 876\ng buckle\nf 757 736 594\ng buckle1a\nf 874 865 872 873\ng buckle\nf 756 863 872\nf 863 757 613\nf 857 847 846 858\nf 836 835 856\nf 862 859 839\nf 842 831 830 841\nf 851 850 854 853\nf 746 833 832\ng buckle1a\nf 810 811 782\nf 811 789 790 806\nf 775 776 770\nf 767 764 765 766\nf 760 800 759\nf 743 742 713 714\ng buckle\nf 758 755 739\nf 731 732 754\nf 723 724 734 733\nf 728 750 749\nf 821 717 727 832\nf 686 687 707\nf 692 704 707\nf 684 683 673 674\nf 687 688 705\nf 683 701 682\nf 682 699 681\ng buckle1a\nf 655 636 635\nf 652 653 659\nf 633 632 656 661\nf 624 623 626 625\nf 620 619 618 621\ng buckle\nf 759 801 651\ng buckle1a\nf 600 574 573 599\ng buckle\nf 596 612 614\nf 611 591 590\nf 583 592 593 584\nf 606 607 587\nf 670 680 586 577\nf 653 652 605 604\nf 586 587 578 577\nf 587 588 579 578\nf 614 612 592\nf 589 588 609\nf 610 598 597 611\ng buckle1a\nf 615 650 649\nf 616 646 645\nf 621 629 628 622\nf 657 642 641 656\nf 639 638 659\ng buckle\nf 603 698 655 654\nf 671 672 682 681\nf 672 673 683 682\nf 706 690 691 705\nf 703 685 704\ng buckle1a\nf 664 692 691 663\ng buckle\nf 676 677 687 686\ng buckle1a\nf 802 745 716 786\nf 744 743 714 715\ng buckle\nf 755 734 735 756\nf 730 720 721 731\nf 739 740 758\ng buckle1a\nf 742 741 712 713\ng buckle\nf 800 801 759\ng buckle1a\nf 768 763 764 767\nf 771 774 775 770\nf 782 811 806 781\nf 782 783 810\ng buckle\nf 852 833 746\ng buckle1a\nf 820 819 850 851\ng buckle\nf 861 842 841 860\ng buckle1a\nf 844 845 814 813\ng buckle\nf 857 837 836\ng buckle1a\nf 815 846 847 816\ng buckle\nf 844 843 861 860\ng buckle1a\nf 737 869 870\nf 873 872 863 875\nf 877 870 866\ng buckle\nf 892 891 890\nf 893 885 884\nf 897 881 882 898\nf 905 889 890 906\nf 913 897 898 914\nf 921 905 906 922\nf 929 913 914 930\nf 937 921 922 938\nf 945 929 930 946\nf 953 937 938 954\nf 961 945 946 962\nf 969 953 954 970\nf 977 961 962 978\nf 985 969 970 986\nf 993 977 978 994\nf 1001 985 986 1002\nf 1009 993 994 1010\nf 1017 1001 1002 1018\nf 1025 1009 1010 1026\nf 1033 1017 1018 1034\nf 1041 1025 1026 1042\nf 1049 1033 1034 1050\nf 1057 1041 1042 1058\nf 1065 1049 1050 1066\nf 1073 1057 1058 1074\nf 1081 1065 1066 1082\nf 1088 1072 1073 1089\nf 1096 1080 1081 1097\nf 1103 1087 1088 1104\nf 1111 1095 1096 1112\nf 1118 1102 1087 1103\nf 1126 1110 1111 1127\nf 1117 1134 1133\nf 1141 1125 1126 1142\nf 1133 1134 1150\nf 1156 1140 1141 1157\nf 1164 1148 1149 1165\nf 1171 1155 1156 1172\nf 1179 1163 1164 1180\nf 1177 1180 1181\nf 1170 1171 1182\ng buckle1a\nf 1197 1198 1185\nf 1201 1202 1189\nf 1205 1206 1193\ng buckle\nf 1209 1210 1197\nf 1213 1214 1201\nf 1217 1218 1205\nf 1224 1225 1213 1212\nf 1232 1233 1221 1220\nf 1240 1241 1229 1228\nf 1248 1249 1237 1236\nf 1256 1257 1245 1244\nf 1264 1265 1253 1252\nf 1269 1270 1257\nf 1273 1274 1261\nf 1277 1278 1265\ng buckle1a\nf 821 822 719 718\nf 822 721 720\nf 822 578 723 722\nf 822 670 577\nf 822 672 671\nf 823 824 672\nf 828 673 672\nf 828 677 676\nf 829 830 677\nf 830 679 678\nf 578 579 723\nf 583 584 585\nf 585 724 723\nf 585 726 725\nf 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1183 1184\ng buckle2\ns 3\nf 1978 1977 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979\ng buckle2a\nf 1337 1338 1339 1340\nf 1336 1337 1341\nf 1336 1342 1343\nf 1335 1336 1346 1379\nf 1335 1378 1377\nf 1483 1377 1376\nf 1530 1495 1494 1493 1492\nf 1490 1489 1488 1487\nf 1491 1487 1486\nf 1491 1485 1484\nf 1372 1522 1483\nf 1484 1483 1522\nf 1491 1484 1523\nf 1529 1530 1524 1525\nf 1327 1328 1329 1475 1474 1473 1472 1471 1470 1469 1325 1326\nf 1352 1353 1354 1355 1356\nf 1418 1587 1419\nf 1499 1498 1497 1496 1426\nf 1280 1281 1284 1285\nf 1361 1511 1510\nf 1361 1510 1509\nf 1424 1423 1422 1421\nf 1425 1421 1420\nf 1587 1279 1286 1351\nf 1420 1419 1352\nf 1426 1425 1352\nf 1361 1508 1507\nf 1505 1501 1426\nf 1426 1352 1356\nf 1426 1356 1360\nf 1426 1360 1506\ng buckle2\nf 1988 1977 1976\nf 1984 1985 1972\nf 1980 1981 1968\nf 1976 1965 1953 1964\nf 1968 1969 1957 1956\nf 1960 1961 1949 1948\nf 1952 1941 1929 1940\nf 1944 1945 1933 1932\nf 1936 1937 1925 1924\nf 1928 1917 1916\nf 1924 1925 1912\nf 1920 1921 1908\ng buckle2a\nf 1916 1905 1904\nf 1912 1913 1900\nf 1908 1909 1896\ng buckle2\nf 1879 1892 1878\nf 1885 1886 1891\nf 1875 1876 1892\nf 1883 1867 1868 1884\nf 1859 1876 1875\nf 1868 1852 1853 1869\nf 1860 1844 1829 1845\nf 1853 1837 1838 1854\nf 1845 1829 1830 1846\nf 1838 1822 1823 1839\nf 1830 1814 1815 1831\nf 1823 1807 1808 1824\nf 1815 1799 1800 1816\nf 1808 1792 1793 1809\nf 1800 1784 1785 1801\nf 1793 1777 1778 1794\nf 1785 1769 1770 1786\nf 1777 1761 1762 1778\nf 1769 1753 1754 1770\nf 1761 1745 1746 1762\nf 1753 1737 1738 1754\nf 1745 1729 1730 1746\nf 1737 1721 1722 1738\nf 1729 1713 1714 1730\nf 1721 1705 1706 1722\nf 1713 1697 1698 1714\nf 1705 1689 1690 1706\nf 1697 1681 1682 1698\nf 1689 1673 1674 1690\nf 1681 1665 1666 1682\nf 1673 1657 1658 1674\nf 1665 1649 1650 1666\nf 1657 1641 1642 1658\nf 1649 1633 1634 1650\nf 1641 1625 1626 1642\nf 1633 1617 1618 1634\nf 1625 1609 1610 1626\nf 1617 1601 1602 1618\nf 1609 1593 1594 1610\nf 1604 1603 1593\nf 1602 1600 1599\ng buckle2a\nf 1418 1447 1587\nf 1579 1578 1581 1574\nf 1447 1584 1583\ng buckle2\nf 1575 1448 1466\nf 1567 1566 1558 1557\nf 1566 1545 1565\nf 1548 1537 1536 1547\nf 1551 1540 1539 1550\nf 1563 1564 1544\nf 1531 1542 1543 1532\ng buckle2a\nf 1514 1520 1494\nf 1520 1514 1513 1519\nf 1518 1502 1472\nf 1489 1473 1478\nf 1471 1507 1470\ng buckle2\nf 1432 1433 1443 1442\ng buckle2a\nf 1421 1450 1449 1420\ng buckle2\nf 1463 1441 1464\nf 1466 1448 1449 1465\nf 1438 1461 1460\nf 1437 1459 1458\nf 1514 1456 1457 1513\nf 1413 1414 1402 1403\nf 1412 1393 1394\nf 1397 1415 1417\nf 1399 1389 1541 1552\nf 1409 1410 1406 1407\nf 1390 1391 1313\ng buckle2a\nf 1343 1371 1370\nf 1366 1351 1350 1371\nf 1333 1337 1336\nf 1476 1475 1329 1330\nf 1469 1361 1325\ng buckle2\nf 1319 1318 1310 1309\nf 1319 1320 1299\nf 1324 1301 1321\nf 1304 1295 1294 1303\nf 1312 1311 1317 1316\nf 1314 1296 1390\nf 1315 1296 1314\ng buckle2a\nf 1286 1285 1311 1312\ng buckle2\nf 1446 1436 1295 1304\nf 1301 1292 1291 1300\nf 1319 1298 1318\nf 1320 1319 1309 1308\ng buckle2a\nf 1325 1361 1360\nf 1326 1355 1354 1327\nf 1333 1332 1338 1337\nf 1367 1366 1342 1341\nf 1369 1348 1362\nf 1365 1370 1364\ng buckle2\nf 1408 1409 1407 1365\nf 1410 1411 1405 1406\ng buckle2a\nf 1553 1522 1372 1400\ng buckle2\nf 1395 1396 1414\nf 1417 1415 1401\ng buckle2a\nf 1405 1404 1376 1377\ng buckle2\nf 1457 1437 1458\ng buckle2a\nf 1455 1454 1425 1426\ng buckle2\nf 1445 1435 1436 1446\nf 1441 1431 1432 1442\nf 1461 1439 1462\nf 1451 1452 1462 1463\ng buckle2a\nf 1508 1509 1470\nf 1504 1505 1471\nf 1479 1487 1488 1478\nf 1517 1516 1500 1501\nf 1519 1497 1498\ng buckle2\nf 1514 1515 1562 1456\nf 1543 1544 1533 1532\nf 1544 1545 1534 1533\nf 1570 1569 1555 1554\nf 1568 1547 1567\ng buckle2a\nf 1524 1555 1556 1525\ng buckle2\nf 1537 1548 1549 1538\nf 1466 1467 1573\ng buckle2a\nf 1586 1584 1447\nf 1574 1576 1579\nf 1587 1447 1580\ng buckle2\nf 1603 1602 1599\nf 1604 1593 1592\nf 1610 1594 1595 1611\nf 1618 1602 1603 1619\nf 1626 1610 1611 1627\nf 1634 1618 1619 1635\nf 1642 1626 1627 1643\nf 1650 1634 1635 1651\nf 1658 1642 1643 1659\nf 1666 1650 1651 1667\nf 1674 1658 1659 1675\nf 1682 1666 1667 1683\nf 1690 1674 1675 1691\nf 1698 1682 1683 1699\nf 1706 1690 1691 1707\nf 1714 1698 1699 1715\nf 1722 1706 1707 1723\nf 1730 1714 1715 1731\nf 1738 1722 1723 1739\nf 1746 1730 1731 1747\nf 1754 1738 1739 1755\nf 1762 1746 1747 1763\nf 1770 1754 1755 1771\nf 1778 1762 1763 1779\nf 1786 1770 1771 1787\nf 1794 1778 1779 1795\nf 1801 1785 1786 1802\nf 1809 1793 1794 1810\nf 1816 1800 1801 1817\nf 1824 1808 1809 1825\nf 1831 1815 1816 1832\nf 1839 1823 1824 1840\nf 1846 1830 1831 1847\nf 1854 1838 1839 1855\nf 1861 1845 1846 1862\nf 1869 1853 1854 1870\nf 1876 1860 1845 1861\nf 1884 1868 1869 1885\nf 1875 1892 1891\nf 1884 1885 1891\ng buckle2a\nf 1906 1894 1893\nf 1910 1898 1897\nf 1914 1902 1901\ng buckle2\nf 1918 1906 1905\nf 1922 1910 1909\nf 1926 1914 1913\nf 1929 1930 1918 1917\nf 1937 1938 1926 1925\nf 1945 1946 1934 1933\nf 1953 1954 1942 1941\nf 1961 1962 1950 1949\nf 1969 1970 1958 1957\nf 1978 1966 1965\nf 1982 1970 1969\nf 1986 1974 1973\nf 1977 1965 1976\nf 1985 1973 1972\nf 1981 1969 1968\nf 1975 1976 1964 1963\nf 1967 1968 1956 1955\nf 1959 1960 1948 1947\nf 1951 1952 1940 1939\nf 1943 1944 1932 1931\nf 1935 1936 1924 1923\nf 1917 1905 1916\nf 1925 1913 1912\nf 1921 1909 1908\ng buckle2a\nf 1905 1893 1904\nf 1913 1901 1900\nf 1909 1897 1896\ng buckle2\nf 1879 1880 1892\nf 1886 1887 1891\nf 1890 1874 1875 1891\nf 1882 1866 1867 1883\nf 1859 1860 1876\nf 1867 1851 1852 1868\nf 1843 1860 1859\nf 1852 1836 1837 1853\nf 1844 1828 1813 1829\nf 1837 1821 1822 1838\nf 1829 1813 1814 1830\nf 1822 1806 1807 1823\nf 1814 1798 1799 1815\nf 1807 1791 1792 1808\nf 1799 1783 1784 1800\nf 1792 1776 1777 1793\nf 1784 1768 1769 1785\nf 1776 1760 1761 1777\nf 1768 1752 1753 1769\nf 1760 1744 1745 1761\nf 1752 1736 1737 1753\nf 1744 1728 1729 1745\nf 1736 1720 1721 1737\nf 1728 1712 1713 1729\nf 1720 1704 1705 1721\nf 1712 1696 1697 1713\nf 1704 1688 1689 1705\nf 1696 1680 1681 1697\nf 1688 1672 1673 1689\nf 1680 1664 1665 1681\nf 1672 1656 1657 1673\nf 1664 1648 1649 1665\nf 1656 1640 1641 1657\nf 1648 1632 1633 1649\nf 1640 1624 1625 1641\nf 1632 1616 1617 1633\nf 1624 1608 1609 1625\nf 1616 1600 1601 1617\nf 1608 1592 1593 1609\nf 1603 1594 1593\nf 1590 1589 1604\ng buckle2a\nf 1587 1576 1305 1279\nf 1576 1580 1579\nf 1583 1585 1447\ng buckle2\nf 1574 1305 1576\ng buckle2a\nf 1558 1527 1526 1557\ng buckle2\nf 1572 1556 1555\nf 1547 1536 1535 1546\nf 1570 1551 1550 1569\nf 1564 1565 1544\nf 1562 1563 1543\ng buckle2a\nf 1512 1496 1497\nf 1519 1499 1521\nf 1518 1517 1501 1502\nf 1502 1503 1472\nf 1506 1507 1471\ng buckle2\nf 1466 1582 1575\ng buckle2a\nf 1422 1451 1450 1421\ng buckle2\nf 1440 1441 1463\ng buckle2a\nf 1448 1419 1420 1449\ng buckle2\nf 1439 1461 1438\nf 1438 1459 1437\nf 1542 1457 1456\nf 1403 1404 1412 1413\nf 1411 1393 1412\nf 1395 1385 1386 1396\nf 1398 1388 1389 1399\nf 1392 1410 1409\nf 1380 1381 1391 1390\ng buckle2a\nf 1365 1345 1370\nf 1350 1349 1369\nf 1368 1367 1341 1340\nf 1328 1327 1368 1340\nf 1326 1357 1356\ng buckle2\nf 1323 1305 1574\ng buckle2a\nf 1281 1307 1308 1282\ng buckle2\nf 1320 1300 1299\ng buckle2a\nf 1305 1306 1280 1279\ng buckle2\nf 1297 1318 1298\nf 1296 1316 1297\nf 1313 1314 1390\ng buckle2a\nf 1347 1286 1312 1362\nf 1285 1284 1310 1311\ng buckle2\nf 1323 1304 1303 1322\nf 1300 1291 1290 1299\nf 1324 1307 1306\ng buckle2a\nf 1309 1283 1282 1308\nf 1325 1359 1358\nf 1331 1340 1339\nf 1482 1334 1335 1483\nf 1371 1369 1370\nf 1344 1370 1345\nf 1365 1407 1379 1346\nf 1406 1405 1377 1378\ng buckle2\nf 1387 1388 1398 1397\nf 1414 1396 1417\nf 1394 1413 1412\nf 1404 1405 1411 1412\nf 1457 1458 1512 1513\nf 1427 1428 1438 1437\nf 1428 1429 1439 1438\nf 1443 1465 1468\nf 1462 1439 1440\nf 1463 1464 1450 1451\nf 1577 1448 1575\ng buckle2a\nf 1505 1506 1471\nf 1473 1489 1518 1472\nf 1518 1489 1490 1517\nf 1519 1498 1499\nf 1494 1515 1514\ng buckle2\nf 1515 1561 1563 1562\nf 1560 1559 1565 1564\ng buckle2a\nf 1553 1554 1523 1522\ng buckle2\nf 1568 1548 1547\nf 1555 1569 1572\ng buckle2a\nf 1559 1528 1527 1558\ng buckle2\nf 1574 1581 1323\ng buckle2a\nf 1586 1575 1584\ng buckle2\nf 1467 1304 1323\ng buckle2a\nf 1418 1588 1447\ng buckle2\nf 1603 1599 1598\nf 1604 1592 1591\nf 1611 1595 1596 1612\nf 1619 1603 1604 1620\nf 1627 1611 1612 1628\nf 1635 1619 1620 1636\nf 1643 1627 1628 1644\nf 1651 1635 1636 1652\nf 1659 1643 1644 1660\nf 1667 1651 1652 1668\nf 1675 1659 1660 1676\nf 1683 1667 1668 1684\nf 1691 1675 1676 1692\nf 1699 1683 1684 1700\nf 1707 1691 1692 1708\nf 1715 1699 1700 1716\nf 1723 1707 1708 1724\nf 1731 1715 1716 1732\nf 1739 1723 1724 1740\nf 1747 1731 1732 1748\nf 1755 1739 1740 1756\nf 1763 1747 1748 1764\nf 1771 1755 1756 1772\nf 1779 1763 1764 1780\nf 1787 1771 1772 1788\nf 1779 1780 1796\nf 1802 1786 1787 1803\nf 1810 1794 1795 1811\nf 1817 1801 1802 1818\nf 1825 1809 1810 1826\nf 1832 1816 1817 1833\nf 1840 1824 1825 1841\nf 1847 1831 1832 1848\nf 1855 1839 1840 1856\nf 1862 1846 1847 1863\nf 1870 1854 1855 1871\nf 1877 1861 1862 1878\nf 1885 1869 1870 1886\nf 1892 1876 1861 1877\nf 1883 1884 1891\ng buckle2a\nf 1905 1906 1893\nf 1909 1910 1897\nf 1913 1914 1901\ng buckle2\nf 1917 1918 1905\nf 1921 1922 1909\nf 1925 1926 1913\nf 1930 1931 1919 1918\nf 1938 1939 1927 1926\nf 1946 1947 1935 1934\nf 1954 1955 1943 1942\nf 1962 1963 1951 1950\nf 1970 1971 1959 1958\nf 1977 1978 1965\nf 1981 1982 1969\nf 1985 1986 1973\ng buckle2a\nf 1295 1436 1435\nf 1295 1434 1433\nf 1293 1294 1295\nf 1288 1289 1433\nf 1540 1389 1388\nf 1539 1540 1387\nf 1538 1387 1386\nf 1538 1383 1382\nf 1533 1534 1382\nf 1532 1382 1381\nf 1532 1380 1287\nf 1532 1288 1433 1432\nf 1532 1431 1430\nf 1531 1532 1429 1428\ng buckle2\nf 1332 1333 1334 1482 1481 1480 1479 1478 1477 1476 1330 1331\ng buckle2a\nf 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1893 1894\nf 1428 1427 1531\nf 1532 1430 1429\nf 1532 1432 1431\nf 1532 1287 1288\nf 1532 1381 1380\nf 1532 1533 1382\nf 1534 1535 1536 1537 1538 1382\nf 1538 1386 1385 1384 1383\nf 1538 1539 1387\nf 1540 1388 1387\nf 1540 1541 1389\nf 1289 1290 1291 1292 1293 1433\nf 1295 1433 1293\nf 1295 1435 1434\ng buckle2\nf 1987 1988 1975\nf 1983 1984 1971\nf 1979 1980 1967\nf 1974 1975 1963 1962\nf 1966 1967 1955 1954\nf 1958 1959 1947 1946\nf 1950 1951 1939 1938\nf 1942 1943 1931 1930\nf 1934 1935 1923 1922\nf 1927 1928 1915\nf 1923 1924 1911\nf 1919 1920 1907\ng buckle2a\nf 1915 1916 1903\nf 1911 1912 1899\nf 1907 1908 1895\ng buckle2\nf 1880 1881 1892\nf 1887 1890 1891\nf 1889 1873 1874 1890\nf 1881 1865 1866 1882\nf 1874 1858 1859 1875\nf 1866 1850 1851 1867\nf 1843 1844 1860\nf 1851 1835 1836 1852\nf 1827 1844 1843\nf 1836 1820 1821 1837\nf 1828 1812 1797 1813\nf 1821 1805 1806 1822\nf 1813 1797 1798 1814\nf 1806 1790 1791 1807\nf 1798 1782 1783 1799\nf 1791 1775 1776 1792\nf 1783 1767 1768 1784\nf 1775 1759 1760 1776\nf 1767 1751 1752 1768\nf 1759 1743 1744 1760\nf 1751 1735 1736 1752\nf 1743 1727 1728 1744\nf 1735 1719 1720 1736\nf 1727 1711 1712 1728\nf 1719 1703 1704 1720\nf 1711 1695 1696 1712\nf 1703 1687 1688 1704\nf 1695 1679 1680 1696\nf 1687 1671 1672 1688\nf 1679 1663 1664 1680\nf 1671 1655 1656 1672\nf 1663 1647 1648 1664\nf 1655 1639 1640 1656\nf 1647 1631 1632 1648\nf 1639 1623 1624 1640\nf 1631 1615 1616 1632\nf 1623 1607 1608 1624\nf 1615 1599 1600 1616\nf 1607 1591 1592 1608\nf 1603 1595 1594\nf 1602 1601 1600\ng buckle2a\nf 1587 1580 1576\nf 1583 1582 1573 1585\nf 1447 1579 1580\ng buckle2\nf 1554 1553 1571 1570\ng buckle2a\nf 1525 1556 1557 1526\ng buckle2\nf 1567 1547 1546\ng buckle2a\nf 1554 1555 1524 1523\ng buckle2\nf 1571 1552 1551 1570\ng buckle2a\nf 1530 1529 1560 1561\ng buckle2\nf 1562 1543 1456\ng buckle2a\nf 1492 1493 1520\nf 1492 1521 1516 1491\nf 1481 1484 1485 1480\nf 1478 1473 1474 1477\nf 1510 1511 1469\nf 1452 1451 1422 1423\ng buckle2\nf 1449 1450 1468\nf 1440 1430 1431 1441\nf 1465 1444 1445 1466\ng buckle2a\nf 1454 1453 1424 1425\nf 1512 1455 1426 1496\ng buckle2\nf 1386 1387 1397 1396\ng buckle2a\nf 1374 1402 1401 1373\ng buckle2\nf 1413 1395 1414\nf 1416 1400 1401 1415\nf 1382 1383 1393 1392\nf 1381 1382 1392 1391\nf 1313 1408 1365 1364\ng buckle2a\nf 1349 1348 1369\nf 1367 1352 1351 1366\nf 1331 1339 1338 1332\nf 1326 1356 1355\nf 1325 1360 1359\ng buckle2\nf 1320 1308 1307 1321\nf 1299 1298 1319\nf 1324 1322 1302\nf 1297 1298 1289 1288\nf 1296 1297 1288 1287\nf 1363 1362 1315 1314\nf 1380 1390 1296 1287\nf 1316 1317 1297\nf 1293 1302 1303 1294\nf 1321 1301 1300\nf 1306 1322 1324\ng buckle2a\nf 1310 1284 1283 1309\ng buckle2\nf 1469 1511 1361\ng buckle2a\nf 1330 1329 1328 1331\nf 1334 1333 1336 1335\nf 1343 1342 1366 1371\nf 1362 1363 1369\nf 1365 1346 1345\ng buckle2\nf 1392 1409 1391\nf 1393 1411 1392\nf 1397 1398 1415\nf 1394 1393 1383 1384\nf 1402 1414 1417\nf 1396 1397 1417\nf 1531 1427 1437 1542\nf 1438 1460 1459\nf 1433 1434 1444 1443\nf 1441 1442 1464\nf 1468 1465 1449\ng buckle2a\nf 1453 1452 1423 1424\nf 1470 1510 1469\nf 1477 1474 1475 1476\nf 1485 1486 1480\nf 1521 1499 1500 1516\nf 1520 1521 1492\ng buckle2\nf 1456 1543 1542\nf 1561 1560 1564 1563\nf 1552 1541 1540 1551\nf 1572 1569 1549\nf 1546 1545 1566\nf 1567 1557 1556 1568\nf 1573 1467 1323\nf 1466 1573 1582\ng buckle2a\nf 1584 1575 1582 1583\ng buckle2\nf 1467 1446 1304\ng buckle2a\nf 1447 1588 1586\ng buckle2\nf 1603 1598 1597\nf 1590 1604 1591\nf 1612 1596 1597 1613\nf 1620 1604 1589 1605\nf 1628 1612 1613 1629\nf 1636 1620 1605 1621\nf 1644 1628 1629 1645\nf 1652 1636 1621 1637\nf 1660 1644 1645 1661\nf 1668 1652 1637 1653\nf 1676 1660 1661 1677\nf 1684 1668 1653 1669\nf 1692 1676 1677 1693\nf 1700 1684 1669 1685\nf 1708 1692 1693 1709\nf 1716 1700 1685 1701\nf 1724 1708 1709 1725\nf 1732 1716 1701 1717\nf 1740 1724 1725 1741\nf 1748 1732 1717 1733\nf 1756 1740 1741 1757\nf 1764 1748 1733 1749\nf 1772 1756 1757 1773\nf 1780 1764 1749 1765\nf 1788 1772 1773 1789\nf 1779 1796 1795\nf 1803 1787 1788 1804\nf 1795 1796 1812\nf 1818 1802 1803 1819\nf 1826 1810 1811 1827\nf 1833 1817 1818 1834\nf 1841 1825 1826 1842\nf 1848 1832 1833 1849\nf 1856 1840 1841 1857\nf 1863 1847 1848 1864\nf 1871 1855 1856 1872\nf 1878 1862 1863 1879\nf 1886 1870 1871 1887\nf 1888 1889 1890\nf 1882 1883 1891\ng buckle2a\nf 1907 1895 1894\nf 1911 1899 1898\nf 1915 1903 1902\ng buckle2\nf 1919 1907 1906\nf 1923 1911 1910\nf 1927 1915 1914\nf 1931 1932 1920 1919\nf 1939 1940 1928 1927\nf 1947 1948 1936 1935\nf 1955 1956 1944 1943\nf 1963 1964 1952 1951\nf 1971 1972 1960 1959\nf 1979 1967 1966\nf 1983 1971 1970\nf 1987 1975 1974\nf 1988 1976 1975\nf 1984 1972 1971\nf 1980 1968 1967\nf 1973 1974 1962 1961\nf 1965 1966 1954 1953\nf 1957 1958 1946 1945\nf 1949 1950 1938 1937\nf 1941 1942 1930 1929\nf 1933 1934 1922 1921\nf 1928 1916 1915\nf 1924 1912 1911\nf 1920 1908 1907\ng buckle2a\nf 1916 1904 1903\nf 1912 1900 1899\nf 1908 1896 1895\ng buckle2\nf 1881 1891 1892\nf 1887 1888 1890\nf 1888 1872 1873 1889\nf 1880 1864 1865 1881\nf 1873 1857 1858 1874\nf 1865 1849 1850 1866\nf 1858 1842 1843 1859\nf 1850 1834 1835 1851\nf 1827 1828 1844\nf 1835 1819 1820 1836\nf 1811 1828 1827\nf 1820 1804 1805 1821\nf 1812 1796 1781 1797\nf 1805 1789 1790 1806\nf 1797 1781 1782 1798\nf 1790 1774 1775 1791\nf 1782 1766 1767 1783\nf 1774 1758 1759 1775\nf 1766 1750 1751 1767\nf 1758 1742 1743 1759\nf 1750 1734 1735 1751\nf 1742 1726 1727 1743\nf 1734 1718 1719 1735\nf 1726 1710 1711 1727\nf 1718 1702 1703 1719\nf 1710 1694 1695 1711\nf 1702 1686 1687 1703\nf 1694 1678 1679 1695\nf 1686 1670 1671 1687\nf 1678 1662 1663 1679\nf 1670 1654 1655 1671\nf 1662 1646 1647 1663\nf 1654 1638 1639 1655\nf 1646 1630 1631 1647\nf 1638 1622 1623 1639\nf 1630 1614 1615 1631\nf 1622 1606 1607 1623\nf 1614 1598 1599 1615\nf 1606 1590 1591 1607\nf 1603 1596 1595\ng buckle2a\nf 1588 1419 1448 1577\ng buckle2\nf 1467 1445 1446\ng buckle2a\nf 1578 1585 1573 1581\nf 1578 1579 1447\ng buckle2\nf 1581 1573 1323\nf 1566 1565 1559 1558\nf 1566 1567 1546\nf 1572 1548 1568\nf 1538 1549 1550 1539\ng buckle2a\nf 1529 1528 1559 1560\nf 1495 1530 1561 1515\nf 1494 1520 1493\nf 1520 1519 1521\nf 1482 1483 1484 1481\nf 1488 1489 1478\nf 1507 1508 1470\ng buckle2\nf 1442 1443 1468\nf 1450 1464 1468\nf 1440 1439 1429 1430\nf 1443 1444 1465\nf 1460 1461 1453 1454\nf 1458 1459 1455 1512\nf 1400 1416 1571 1553\ng buckle2a\nf 1375 1403 1402 1374\ng buckle2\nf 1394 1395 1413\ng buckle2a\nf 1400 1372 1373 1401\ng buckle2\nf 1416 1399 1552 1571\ng buckle2a\nf 1407 1406 1378 1379\ng buckle2\nf 1313 1391 1408\ng buckle2a\nf 1370 1344 1343\nf 1369 1363 1364 1370\nf 1327 1353 1368\nf 1331 1328 1340\nf 1325 1358 1326\ng buckle2\nf 1324 1302 1301\nf 1324 1321 1307\nf 1299 1290 1289 1298\nf 1322 1303 1302\nf 1311 1310 1318 1317\nf 1362 1312 1316 1315\nf 1363 1314 1313 1364\nf 1315 1316 1296\nf 1317 1318 1297\nf 1323 1322 1306 1305\nf 1321 1300 1320\ng buckle2a\nf 1280 1306 1307 1281\ng buckle2\nf 1292 1301 1302 1293\ng buckle2a\nf 1326 1358 1357\nf 1327 1354 1353\nf 1368 1353 1352 1367\nf 1371 1350 1369\nf 1348 1347 1362\ng buckle2\nf 1391 1409 1408\nf 1392 1411 1410\nf 1415 1398 1399 1416\nf 1394 1384 1385 1395\nf 1401 1402 1417\ng buckle2a\nf 1404 1403 1375 1376\ng buckle2\nf 1542 1437 1457\nf 1459 1460 1454 1455\nf 1444 1434 1435 1445\nf 1464 1442 1468\nf 1440 1463 1462\nf 1452 1453 1461 1462\ng buckle2a\nf 1509 1510 1470\nf 1472 1503 1504 1471\nf 1480 1486 1487 1479\nf 1490 1491 1516 1517\nf 1519 1513 1512 1497\nf 1494 1495 1515\ng buckle2\nf 1543 1563 1544\nf 1544 1565 1545\nf 1569 1550 1549\nf 1546 1535 1534 1545\nf 1572 1568 1556\nf 1572 1549 1548\ng buckle2a\nf 1447 1585 1578\nf 1586 1577 1575\ng buckle2\nf 1466 1445 1467\ng buckle2a\nf 1588 1577 1586\ng buckle2\nf 1603 1597 1596\nf 1605 1589 1590 1606\nf 1613 1597 1598 1614\nf 1621 1605 1606 1622\nf 1629 1613 1614 1630\nf 1637 1621 1622 1638\nf 1645 1629 1630 1646\nf 1653 1637 1638 1654\nf 1661 1645 1646 1662\nf 1669 1653 1654 1670\nf 1677 1661 1662 1678\nf 1685 1669 1670 1686\nf 1693 1677 1678 1694\nf 1701 1685 1686 1702\nf 1709 1693 1694 1710\nf 1717 1701 1702 1718\nf 1725 1709 1710 1726\nf 1733 1717 1718 1734\nf 1741 1725 1726 1742\nf 1749 1733 1734 1750\nf 1757 1741 1742 1758\nf 1765 1749 1750 1766\nf 1773 1757 1758 1774\nf 1781 1765 1766 1782\nf 1789 1773 1774 1790\nf 1796 1780 1765 1781\nf 1804 1788 1789 1805\nf 1795 1812 1811\nf 1819 1803 1804 1820\nf 1811 1812 1828\nf 1834 1818 1819 1835\nf 1842 1826 1827 1843\nf 1849 1833 1834 1850\nf 1857 1841 1842 1858\nf 1864 1848 1849 1865\nf 1872 1856 1857 1873\nf 1879 1863 1864 1880\nf 1887 1871 1872 1888\nf 1892 1877 1878\nf 1881 1882 1891\ng buckle2a\nf 1906 1907 1894\nf 1910 1911 1898\nf 1914 1915 1902\ng buckle2\nf 1918 1919 1906\nf 1922 1923 1910\nf 1926 1927 1914\nf 1932 1933 1921 1920\nf 1940 1929 1917 1928\nf 1948 1949 1937 1936\nf 1956 1957 1945 1944\nf 1964 1953 1941 1952\nf 1972 1973 1961 1960\nf 1978 1979 1966\nf 1982 1983 1970\nf 1986 1987 1974\ng buckle2a\nf 1506 1505 1426\nf 1360 1507 1506\nf 1356 1357 1358 1360\nf 1358 1359 1360\nf 1360 1361 1507\nf 1501 1500 1426\nf 1425 1420 1352\nf 1419 1587 1351 1352\nf 1279 1280 1285 1286\nf 1425 1424 1421\nf 1500 1499 1426\nf 1509 1508 1361\nf 1286 1350 1351\nf 1281 1282 1283 1284\nf 1419 1588 1418\nf 1505 1504 1503 1502 1501\nf 1286 1347 1348 1349 1350\nf 1525 1526 1527 1528 1529\nf 1530 1491 1523 1524\nf 1484 1522 1523\nf 1483 1374 1372\nf 1483 1375 1374\nf 1491 1486 1485\nf 1491 1490 1487\nf 1530 1492 1491\nf 1483 1376 1375\nf 1483 1335 1377\nf 1335 1379 1378\nf 1336 1343 1344 1345 1346\nf 1336 1341 1342\nf 1337 1340 1341\nf 1374 1373 1372\ng sandle2\nusemtl flblack\ns 7\nf 2044 2291 2358 2359\nf 2301 2274 2273 2300\nf 2242 2241 2308 2309\nf 2333 2280 2265 2332\nf 2246 2245 2312 2313\nf 2254 2253 2320 2321\nf 2361 2360 2290 2343\nf 2272 2271 2298 2299\ng sandle\ns 5\nf 2347 2312 2311\nf 2320 2319 2347\nf 2328 2327 2347\nf 2336 2335 2304 2303\nf 2346 2341 2340\nf 2346 2296 2295\ng sandle2\ns 7\nf 2283 2284 2051 2052\nf 2030 2275 2276 2029\nf 2355 2354 1991 2267\nf 2253 2041 1992 2252\nf 2254 2255 2039 2040\nf 2024 2241 2242 2023\nf 2025 2240 2241 2024\ng sandle\ns 5\nf 2081 2080 2018 2017\nf 2014 2015 2083 2082\nf 2083 2084 2079 2080\nf 2236 2235 2176\nf 2235 2229 2230 2234\nf 2109 2038 2037 2110\nf 2078 2085 2086 2077\nf 2086 2174 2173 2087\nf 2084 2015 2085\nf 2154 2120 2153\nf 2119 2118 1996 1995\nf 2206 2207 2210 2211\nf 2090 2089 2171 2170\nf 2201 2200 2183 2182\nf 2199 2184 2183 2200\nf 2199 2198 2185 2184\nf 2197 2186 2185 2198\nf 2197 2196 2187 2186\nf 2195 2188 2187 2196\nf 2067 2097 2066\nf 2129 2144 2145 2128\nf 2129 2130 2143 2144\nf 2142 2143 2130 2131\nf 1989 2035 2063 2062\nf 2059 2348 2016\nf 1999 2000 2059 2060\nf 2134 2133 2046 2045\nf 2009 2191 2010 2011\nf 2162 2190 2007 2161\nf 2170 2182 2183 2169\nf 2175 2177 2178 2174\nf 2167 2185 2186 2166\nf 2008 2191 2009\nf 2156 2012 2137\nf 2138 2139 2134 2135\nf 2157 2156 2000 1999\nf 2160 2159 2101 2100\nf 2063 2100 2101 2062\nf 2143 2142 2225 2224\nf 2144 2143 2224 2223\nf 2145 2144 2223 2222\nf 2032 2031 2066\nf 2096 2095 2165 2164\nf 2095 2094 2166 2165\nf 2093 2167 2166 2094\nf 2168 2167 2093 2092\nf 2169 2168 2092 2091\nf 2170 2169 2091 2090\nf 2073 2025 2024 2074\nf 2211 2210 2005 2004\nf 2179 2178 2205 2204\nf 2214 2213 2154 2153\nf 2085 2078 2079\nf 2088 2087 2173 2172\nf 2020 2078 2077 2021\nf 2112 2109 2110 2111\nf 2176 2235 2234\nf 2233 2231 2232 2208\nf 2083 2015 2084\nf 2013 2014 2082 2003\nf 2080 2079 2019 2018\nf 2105 1992 2041 2106\ng sandle2\ns 7\nf 1997 2042 2258 2259\nf 2255 2256 2038 2039\nf 2367 2252 1992 2366\nf 1991 2353 2352 2267\nf 2031 2274 2275 2030\nf 2284 2285 2050 2051\ng sandle\ns 5\nf 2346 2297 2296\nf 2346 2342 2341\nf 2336 2303 2302 2337\nf 2347 2329 2328\nf 2347 2321 2320\nf 2313 2312 2347\ng sandle2\ns 7\nf 2342 2289 2288 2341\nf 2345 2292 2358 2357\nf 2255 2254 2321 2322\nf 2247 2246 2313 2314\nf 2332 2265 2264 2331\nf 2243 2242 2309 2310\nf 2301 2302 2275 2274\nf 2291 2344 2357 2358\nf 1993 2251 2367 2366\nf 2291 2044 2362 2360\nf 2273 2272 2299 2300\nf 2241 2240 2307 2308\nf 2334 2281 2280 2333\nf 2312 2245 2244 2311\nf 2253 2252 2319 2320\nf 2290 2289 2342 2343\nf 2271 2270 2297 2298\ng sandle\ns 5\nf 2311 2310 2347\nf 2347 2319 2368 2318\nf 2347 2327 2326\nf 2334 2305 2304 2335\nf 2346 2340 2339\nf 2346 2295 2356 2294\ng sandle2\ns 7\nf 2282 2283 2052 2053\nf 2029 2276 2277 2028\nf 2269 1989 1990 2268\nf 2289 2290 2045 2046\nf 2253 2254 2040 2041\nf 2242 2243 2022 2023\nf 2264 2265 2055 2056\ng sandle\ns 5\nf 2102 2081 2017 2363\nf 2106 2115 2227 2105\nf 2236 2228 2229 2235\nf 2237 2236 2176\nf 2229 2114 2113 2230\nf 2108 2039 2038 2109\nf 2110 2037 2042 2116\nf 2085 2175 2174 2086\nf 2084 2085 2079\nf 2180 2179 2204 2203\nf 2213 2212 2155 2154\nf 2118 2117 1997 1996\nf 2208 2209 2210 2207\nf 2122 2121 2057 2056\nf 2072 2071 2027 2026\nf 2071 2070 2028 2027\nf 2069 2029 2028 2070\nf 2069 2068 2030 2029\nf 2068 2067 2031 2030\nf 2097 2096 2164 2163\nf 2195 2194 2189 2188\nf 2194 2193 2190 2189\nf 2007 2190 2193 2192\nf 2131 2132 2141 2142\nf 2353 1991 2060\nf 2009 2157 2158\nf 2135 2044 2359\nf 2156 2137 2000\nf 2010 2226 2141 2140\nf 2165 2187 2188 2164\nf 2173 2179 2180 2172\nf 2172 2180 2181 2171\nf 2164 2188 2189 2163\nf 2140 2141 2132 2133\nf 2011 2139 2138\nf 2009 2156 2157\nf 2101 1998 2061 2062\nf 2354 1990 2061\nf 2008 2007 2192 2191\nf 2064 2063 2035 2034\nf 2065 2064 2034 2033\nf 2065 2033 2032 2066\nf 2222 2221 2146 2145\nf 2147 2146 2221 2220\nf 2220 2219 2148 2147\nf 2149 2148 2219 2218\nf 2150 2149 2218 2217\nf 2151 2150 2217 2216\nf 2215 2216 2201 2202\nf 2116 2042 1997 2117\nf 2212 2211 2004 2155\nf 2121 2120 2058 2057\nf 2202 2181 2180 2203\nf 2088 2172 2171 2089\nf 2077 2076 2022 2021\nf 2231 2112 2111 2232\nf 2176 2234 2177\nf 2228 2115 2114 2229\nf 2176 2175 2014\nf 2238 2013 2003 2002\nf 2082 2083 2080 2081\nf 2104 1993 2366\ng sandle2\ns 7\nf 2259 2260 1996 1997\nf 2038 2256 2257 2037\nf 2251 1993 1994 2250\nf 2349 2266 2016 2348\nf 2274 2031 2032 2273\nf 2285 2286 2049 2050\ng sandle\ns 5\nf 2346 2298 2297\nf 2346 2343 2342\nf 2337 2302 2301\nf 2330 2329 2347\nf 2322 2321 2347\nf 2347 2314 2313\ng sandle2\ns 7\nf 2341 2288 2287 2340\nf 2349 2350 2293 2266\nf 2323 2256 2255 2322\nf 2248 2247 2314 2315\nf 2331 2264 2263 2330\nf 2339 2286 2285 2338\nf 2276 2275 2302 2303\nf 2292 2345 2350 2349\nf 2251 2318 2368 2367\nf 2344 2291 2360 2361\nf 2268 1990 2354 2355\nf 2240 2279 2306 2307\nf 2335 2282 2281 2334\nf 2244 2243 2310 2311\nf 2319 2252 2367 2368\nf 2324 2257 2256 2323\nf 2269 2296 2297 2270\ng sandle\ns 5\nf 2347 2310 2309\nf 2318 2317 2347\nf 2326 2325 2347\nf 2333 2306 2305 2334\nf 2346 2300 2299\nf 2346 2294 2351 2293\ng sandle2\ns 7\nf 2281 2282 2053 2239\nf 2028 2277 2278 2027\nf 1989 2269 2270 2035\nf 2288 2289 2046 2047\nf 2246 2247 2018 2019\nf 2243 2244 2021 2022\nf 2263 2264 2056 2057\ng sandle\ns 5\nf 2036 1994 2103 2102\nf 2105 2227 2001 2104\nf 2115 2228 2227\nf 2238 2237 2176\nf 2114 2107 2108 2113\nf 2113 2108 2109 2112\nf 2111 2110 2116 2006\nf 2075 2074 2024 2023\nf 2079 2078 2020 2019\nf 2203 2204 2213 2214\nf 2204 2205 2212 2213\nf 2004 2005 2117 2118\nf 2177 2208 2207\nf 2073 2072 2026 2025\nf 2092 2071 2072 2091\nf 2093 2070 2071 2092\nf 2094 2069 2070 2093\nf 2068 2069 2094 2095\nf 2095 2096 2067 2068\nf 2067 2096 2097\nf 2223 2194 2195 2222\nf 2223 2224 2193 2194\nf 2192 2193 2224 2225\nf 2132 2131 2048 2047\nf 2059 2136 2043 2348\nf 2158 2157 1999 1998\nf 2135 2134 2045 2362 2044\nf 2009 2012 2156\nf 2008 2159 2160\nf 2168 2184 2185 2167\nf 2176 2177 2175\nf 2169 2183 2184 2168\nf 2161 2007 2008 2160\nf 2009 2011 2012\nf 2139 2140 2133 2134\nf 2012 2011 2138 2137\nf 2159 2158 1998 2101\nf 1990 1989 2062 2061\nf 2131 2130 2049 2048\nf 2130 2129 2050 2049\nf 2051 2050 2129 2128\nf 2031 2067 2066\nf 2221 2222 2195 2196\nf 2221 2196 2197 2220\nf 2219 2220 2197 2198\nf 2219 2198 2199 2218\nf 2217 2218 2199 2200\nf 2200 2201 2216 2217\nf 2201 2182 2181 2202\nf 2177 2207 2206\nf 2155 2004 2118 2119\nf 2120 2121 2152 2153\nf 2015 2175 2085\nf 2075 2088 2089 2074\nf 2086 2087 2076 2077\nf 2233 2208 2177\nf 2234 2233 2177\nf 2040 2107 2106 2041\nf 2014 2013 2176\nf 2001 2237 2238 2002\nf 2102 2003 2082 2081\nf 2103 1994 1993 2104\ng sandle2\ns 7\nf 2260 2261 1995 1996\nf 2257 2258 2042 2037\nf 2250 1994 2036 2249\nf 2358 2292 2043 2359\nf 2033 2272 2273 2032\nf 2286 2287 2048 2049\ng sandle\ns 5\nf 2346 2299 2298\nf 2346 2344 2361 2343\nf 2337 2301 2300 2338\nf 2347 2331 2330\nf 2347 2323 2322\nf 2315 2314 2347\ng sandle2\ns 7\nf 2340 2287 2286 2339\nf 2294 2267 2352 2351\nf 2327 2260 2259 2326\nf 2316 2249 2364 2365\nf 2330 2263 2262 2329\nf 2338 2285 2284 2337\nf 2277 2276 2303 2304\nf 2016 2266 2352 2353\nf 2017 2248 2364 2363\nf 2043 2292 2349 2348\nf 2295 2268 2355 2356\nf 2279 2278 2305 2306\nf 2336 2283 2282 2335\nf 2328 2261 2260 2327\nf 2251 2250 2317 2318\nf 2325 2258 2257 2324\nf 2269 2268 2295 2296\ng sandle\ns 5\nf 2309 2308 2347\nf 2347 2317 2316\nf 2347 2325 2324\nf 2306 2333 2332 2307\nf 2300 2346 2338\nf 2346 2293 2350 2345\ng sandle2\ns 7\nf 2280 2281 2239 2054\nf 2027 2278 2279 2026\nf 2035 2270 2271 2034\nf 2287 2288 2047 2048\nf 2247 2248 2017 2018\nf 2021 2244 2245 2020\nf 2262 2263 2057 2058\ng sandle\ns 5\nf 2363 2036 2102\nf 2104 2001 2002 2103\nf 2227 2228 2236\nf 2013 2238 2176\nf 2107 2040 2039 2108\nf 2112 2231 2230 2113\nf 2006 2209 2232 2111\nf 2087 2088 2075 2076\nf 2073 2090 2091 2072\nf 2214 2215 2202 2203\nf 2120 2119 1995 2058\nf 2205 2206 2211 2212\nf 2006 2116 2117 2005\nf 2151 2216 2215 2152\nf 2123 2150 2151 2122\nf 2124 2149 2150 2123\nf 2125 2148 2149 2124\nf 2147 2148 2125 2126\nf 2127 2146 2147 2126\nf 2127 2128 2145 2146\nf 2097 2098 2065 2066\nf 2098 2099 2064 2065\nf 2099 2100 2063 2064\nf 2191 2192 2225 2226\nf 2060 2059 2016 2353\nf 1998 1999 2060 2061\nf 2136 2135 2359 2043\nf 2011 2010 2140 2139\nf 2133 2132 2047 2046\nf 2163 2189 2190 2162\nf 2171 2181 2182 2170\nf 2174 2178 2179 2173\nf 2166 2186 2187 2165\nf 2191 2226 2010\nf 2000 2137 2136 2059\nf 2137 2138 2135 2136\nf 2008 2009 2158 2159\nf 2061 2060 1991 2354\nf 2226 2225 2142 2141\nf 2161 2160 2100 2099\nf 2162 2161 2099 2098\nf 2098 2097 2163 2162\nf 2052 2051 2128 2127\nf 2053 2052 2127 2126\nf 2239 2053 2126 2125\nf 2054 2239 2125 2124\nf 2055 2054 2124 2123\nf 2056 2055 2123 2122\nf 2121 2122 2151 2152\nf 2209 2006 2005 2210\nf 2178 2177 2206 2205\nf 2154 2155 2119 2120\nf 2152 2215 2214 2153\nf 2074 2089 2090 2073\nf 2076 2075 2023 2022\nf 2232 2209 2208\nf 2234 2230 2231 2233\nf 2107 2114 2115 2106\nf 2015 2014 2175\nf 2227 2236 2237 2001\nf 2003 2102 2103 2002\nf 2104 2366 1992 2105\ng sandle2\ns 7\nf 1995 2261 2262 2058\nf 2245 2246 2019 2020\nf 2249 2036 2363 2364\nf 2045 2290 2360 2362\nf 2034 2271 2272 2033\nf 2026 2279 2240 2025\nf 2265 2280 2054 2055\ng sandle\ns 5\nf 2346 2345 2357 2344\nf 2338 2346 2339\nf 2307 2332 2331 2308\nf 2324 2323 2347\nf 2347 2316 2365 2315\nf 2347 2308 2331\ng sandle2\ns 7\nf 2355 2267 2294 2356\nf 2326 2259 2258 2325\nf 2250 2249 2316 2317\nf 2329 2262 2261 2328\nf 2337 2284 2283 2336\nf 2278 2277 2304 2305\nf 2266 2293 2351 2352\nf 2248 2315 2365 2364\ng strap01a\nusemtl flltbrown\ns 4\nf 2488 2487 2370\nf 2429 2493 2496 2432\nf 2617 2618 2502\nf 2567 2634 2628 2565\ng strap01\ns 6\nf 2636 2635 2404 2537\ng strap01a\ns 4\nf 2490 2623 2621 2488\nf 2487 2620 2619 2486\nf 2498 2499 2632 2631\ng strap01\ns 6\nf 2607 2609 2476 2474\nf 2579 2574 2441 2446\nf 2555 2540 2407 2422\nf 2548 2549 2416 2415\nf 2561 2564 2431 2428\nf 2584 2535 2402 2451\nf 2521 2520 2387 2388\nf 2510 2511 2378 2377\nf 2504 2528 2395 2371\ng strap01a\ns 4\nf 2605 2611 2612\nf 2602 2582 2581 2604\nf 2596 2593 2530 2585\nf 2586 2585 2584 2583\nf 2578 2576 2575 2577\nf 2627 2563 2562 2625\nf 2554 2553 2541\nf 2546 2545 2541\nf 2536 2513 2509\nf 2528 2504 2503 2527\nf 2517 2518 2509\nf 2510 2508 2509\nf 2471 2477 2447 2448\nf 2470 2453 2466\nf 2456 2459 2462 2461\nf 2450 2451 2452\nf 2445 2444 2442 2443\nf 2501 2434 2432 2495\nf 2408 2420 2421\nf 2408 2412 2413\nf 2376 2380 2403\nf 2393 2373 2370 2394\nf 2376 2384 2383\nf 2488 2370 2490\nf 2374 2391 2381 2369\nf 2391 2390 2388 2389\nf 2402 2401 2396\nf 2408 2409 2410\nf 2408 2417 2418\nf 2428 2427 2423 2424\nf 2440 2439 2436 2435\nf 2449 2445 2450\nf 2456 2457 2458 2459\nf 2464 2461 2465\nf 2471 2469 2470 2472\nf 2472 2475 2479\nf 2513 2512 2509\nf 2522 2509 2520 2521\nf 2529 2534 2535\nf 2543 2542 2541\nf 2551 2550 2541\nf 2561 2557 2556 2560\nf 2573 2568 2569 2572\nf 2583 2578 2582\nf 2587 2531 2530 2593\nf 2600 2601 2598 2597\nf 2609 2607 2606 2608\ng strap01\ns 6\nf 2455 2400 2533 2588\nf 2513 2536 2403 2380\nf 2518 2517 2384 2385\nf 2539 2526 2393 2406\nf 2576 2578 2445 2443\nf 2553 2554 2421 2420\nf 2545 2546 2413 2412\nf 2426 2429 2562 2559\nf 2580 2579 2447\nf 2601 2607 2474 2468\ng strap01a\ns 4\nf 2499 2500 2633 2632\nf 2495 2496 2629 2628\nf 2488 2621 2620 2487\nf 2532 2636 2529\nf 2628 2629 2565\nf 2507 2615 2617 2502\nf 2430 2494 2492 2429\nf 2370 2487 2486 2371\nf 2373 2491 2490 2370\nf 2498 2497 2431\nf 2622 2616 2505\nf 2632 2633 2566\nf 2538 2636 2537\nf 2483 2616 2622 2489\nf 2493 2626 2629 2496\ng strap01\ns 6\nf 2591 2592 2458\nf 2609 2614 2481 2476\nf 2579 2446 2447\nf 2558 2555 2422 2425\nf 2547 2548 2415 2414\nf 2557 2561 2428 2424\nf 2583 2584 2451 2450\nf 2506 2505 2372 2373\nf 2516 2515 2382 2383\nf 2525 2514 2381 2392\ng strap01a\ns 4\nf 2609 2608 2613 2614\nf 2607 2601 2600 2606\nf 2596 2585 2586 2599\nf 2589 2590 2588 2587\nf 2582 2577 2581\nf 2567 2565 2570 2569\nf 2556 2541 2555 2558\nf 2549 2548 2541\nf 2534 2529 2538 2539\nf 2531 2529 2530\nf 2518 2519 2509\nf 2511 2510 2509\nf 2477 2471 2472 2478\nf 2469 2453 2470\nf 2461 2462 2465\nf 2455 2454 2398 2400\nf 2448 2444 2449\nf 2436 2437 2432 2434\nf 2423 2425 2422 2408\nf 2408 2415 2416\nf 2406 2405 2396 2401\nf 2398 2396 2399\nf 2376 2387 2386\nf 2376 2378 2379\nf 2376 2377 2378\nf 2376 2386 2385\nf 2397 2396 2398\nf 2405 2406 2393 2394\nf 2408 2414 2415\nf 2424 2423 2408 2421\nf 2434 2433 2435 2436\nf 2448 2447 2446 2444\nf 2453 2449 2450\nf 2460 2461 2464 2463\nf 2469 2471 2448 2449\nf 2479 2478 2472\nf 2512 2511 2509\nf 2519 2520 2509\nf 2533 2532 2531\nf 2538 2527 2526 2539\nf 2548 2547 2541\nf 2557 2554 2541 2556\nf 2567 2569 2568 2566\nf 2581 2577 2579 2580\nf 2588 2533 2531 2587\nf 2597 2598 2595 2594\nf 2600 2599 2603 2606\nf 2608 2612 2613\ng strap01\ns 6\nf 2514 2502 2369 2381\nf 2515 2508 2375 2382\nf 2505 2523 2390 2372\nf 2578 2583 2450 2445\nf 2424 2421 2554 2557\nf 2546 2547 2414 2413\nf 2559 2558 2425 2426\nf 2610 2580 2447 2477\nf 2598 2601 2468 2465\ng strap01a\ns 4\nf 2630 2627 2494 2497\nf 2617 2484 2485 2618\ng strap01\ns 6\nf 2591 2458 2457 2590\ng strap01a\ns 4\nf 2630 2631 2564\nf 2506 2624 2622 2505\nf 2433 2499 2498 2431\nf 2372 2489 2491 2373\nf 2371 2486 2485 2369\nf 2492 2493 2429\nf 2504 2619 2620 2503\nf 2565 2629 2626 2562\nf 2538 2529 2636\nf 2489 2622 2624 2491\nf 2495 2628 2634 2501\nf 2500 2501 2634 2633\ng strap01\ns 6\nf 2614 2613 2480 2481\nf 2571 2570 2437 2438\nf 2542 2543 2410 2409\nf 2550 2551 2418 2417\nf 2566 2568 2435 2433\nf 2534 2539 2406 2401\nf 2519 2518 2385 2386\nf 2512 2513 2380 2379\nf 2400 2399 2532 2533\ng strap01a\ns 4\nf 2604 2581 2580 2610\nf 2602 2586 2582\nf 2594 2589 2587 2593\nf 2530 2535 2584\nf 2575 2572 2571 2574\nf 2563 2560 2559 2562\nf 2552 2551 2541\nf 2544 2543 2541\nf 2530 2529 2535\nf 2514 2525 2522 2524\nf 2515 2516 2509\nf 2620 2621 2503\nf 2473 2475 2472 2470\nf 2464 2465 2468 2467\nf 2454 2460 2397 2398\nf 2451 2402 2397\nf 2442 2441 2438 2439\nf 2430 2429 2426 2427\nf 2408 2418 2419\nf 2408 2410 2411\nf 2402 2396 2397\nf 2374 2372 2390 2391\nf 2376 2382 2375\nf 2482 2374 2369 2484\nf 2376 2383 2382\nf 2391 2389 2392 2381\nf 2389 2376 2403 2392\nf 2408 2411 2412\nf 2408 2419 2420\nf 2431 2430 2427 2428\nf 2443 2442 2439 2440\nf 2451 2397 2452\nf 2460 2454 2456 2461\nf 2466 2463 2464 2467\nf 2473 2467 2468 2474\nf 2481 2480 2475 2476\nf 2508 2515 2509\nf 2507 2524 2523 2505\nf 2525 2536 2509 2522\nf 2545 2544 2541\nf 2553 2552 2541\nf 2564 2561 2560 2563\nf 2576 2573 2572 2575\nf 2585 2530 2584\nf 2594 2595 2592 2589\nf 2599 2586 2602 2603\nf 2611 2605 2604 2610\ng strap01\ns 6\nf 2528 2537 2404 2395\nf 2379 2378 2511 2512\nf 2520 2519 2386 2387\nf 2534 2401 2402\nf 2568 2573 2440 2435\nf 2419 2418 2551 2552\nf 2543 2544 2411 2410\nf 2570 2565 2432 2437\nf 2611 2610 2477 2478\nf 2595 2598 2465 2462\ng strap01a\ns 4\nf 2631 2630 2497 2498\nf 2618 2485 2486 2619\nf 2623 2490 2491 2624\ng strap01\ns 6\nf 2635 2636 2532 2399\ng strap01a\ns 4\nf 2626 2625 2562\nf 2502 2618 2619 2504\nf 2496 2495 2432\nf 2485 2484 2369\nf 2483 2489 2372\nf 2500 2499 2433\nf 2621 2623 2503\nf 2563 2627 2630 2564\nf 2396 2635 2399\nf 2484 2617 2615 2482\nf 2627 2625 2492 2494\ng strap01\ns 6\nf 2592 2459 2458\nf 2613 2612 2479 2480\nf 2574 2571 2438 2441\nf 2540 2542 2409 2407\nf 2549 2550 2417 2416\nf 2564 2566 2433 2431\nf 2535 2534 2402\nf 2523 2521 2388 2390\nf 2508 2510 2377 2375\nf 2371 2369 2502 2504\ng strap01a\ns 4\nf 2612 2608 2605\nf 2605 2603 2602 2604\nf 2596 2597 2594 2593\nf 2583 2582 2586\nf 2577 2575 2574 2579\nf 2634 2567 2566 2633\nf 2540 2555 2541\nf 2547 2546 2541\nf 2537 2528 2527 2538\nf 2527 2503 2506 2526\nf 2516 2517 2509\nf 2616 2615 2507 2505\nf 2475 2473 2474 2476\nf 2449 2453 2469\nf 2452 2397 2460 2463\nf 2452 2453 2450\nf 2444 2446 2441 2442\nf 2494 2430 2431 2497\nf 2408 2422 2407\nf 2408 2413 2414\nf 2404 2405 2394 2395\nf 2395 2394 2370 2371\nf 2376 2385 2384\nf 2376 2375 2377\nf 2376 2379 2380\nf 2388 2387 2376 2389\nf 2398 2399 2400\nf 2408 2407 2409\nf 2408 2416 2417\nf 2427 2426 2425 2423\nf 2439 2438 2437 2436\nf 2449 2444 2445\nf 2454 2455 2457 2456\nf 2463 2466 2453 2452\nf 2467 2473 2470 2466\nf 2480 2479 2475\nf 2502 2514 2524 2507\nf 2524 2522 2521 2523\nf 2532 2529 2531\nf 2542 2540 2541\nf 2550 2549 2541\nf 2560 2556 2558 2559\nf 2572 2569 2570 2571\nf 2578 2577 2582\nf 2589 2592 2591 2590\nf 2600 2597 2596 2599\nf 2606 2603 2605 2608\ng strap01\ns 6\nf 2588 2590 2457 2455\nf 2536 2525 2392 2403\nf 2517 2516 2383 2384\nf 2526 2506 2373 2393\nf 2573 2576 2443 2440\nf 2552 2553 2420 2419\nf 2544 2545 2412 2411\nf 2429 2432 2565 2562\nf 2612 2611 2478 2479\nf 2592 2595 2462 2459\ng strap01a\ns 4\nf 2625 2626 2493 2492\nf 2615 2616 2483 2482\nf 2404 2635 2396 2405\nf 2564 2631 2632 2566\nf 2503 2623 2624 2506\nf 2434 2501 2500 2433\nf 2374 2482 2483 2372\n# 3196 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/shuttle.obj",
    "content": "#  Viewpoint Datalabs International, Inc.  Copyright 1996\n\n\nmtllib ./vp.mtl\n\ng\nv 3.070224 -0.119728 0.996443\nv 5.942016 -0.012019 4.157199\nv 6.614015 -0.063428 4.157199\nv 5.759114 0.000000 1.664500\nv 3.070224 -0.449143 0.929434\nv 5.000295 -0.539011 1.315104\nv 3.070224 -0.604752 0.872464\nv 3.070224 -0.866525 0.730690\nv 3.070224 -0.959007 0.650256\nv 3.070224 -1.053631 0.163277\nv 2.983248 -1.080021 -0.880639\nv 6.130317 -1.100022 -1.106943\nv 3.739287 -4.334102 -0.876958\nv 4.400283 -4.682100 -0.952940\nv 3.038248 -4.334102 -0.811319\nv 3.180259 -4.550090 -0.921939\nv 2.700250 -4.334102 -0.947940\nv 0.840214 -2.480049 -1.050312\nv 1.208789 -1.060728 0.203820\nv 1.208789 -1.054148 0.411073\nv 1.208789 -0.958092 0.610367\nv 1.208789 -0.875165 0.685964\nv 1.208789 -0.621528 0.854704\nv 1.208789 -0.467365 0.922276\nv -4.649089 -1.039587 0.209476\nv -4.649345 -0.922345 0.432259\nv -4.649708 -0.652575 0.753550\nv -4.999902 -1.012545 0.094530\nv -4.999240 -0.870266 0.347384\nv -4.999321 -0.802315 0.416133\nv -4.906714 -0.620194 0.686502\nv -4.999759 -0.491153 0.805206\nv -5.568033 -0.119200 0.568687\nv -5.349121 -0.814175 0.247113\nv -5.348800 -0.938377 -0.030175\nv -6.499984 -0.676000 -0.433500\nv -6.499984 -0.610000 -0.164800\nv -6.499984 -0.240000 0.109600\nv -7.649984 0.000000 -0.620000\nv 1.209237 -1.080021 -1.321617\nv 3.070224 0.119728 0.996443\nv 3.093016 0.040804 1.276300\nv 6.614015 0.063428 4.157199\nv 3.070224 0.449143 0.929434\nv 5.000295 0.539011 1.315104\nv 3.070224 0.604752 0.872464\nv 3.070224 0.866525 0.730690\nv 5.000295 1.149023 1.260104\nv 3.070224 0.959007 0.650256\nv 3.070224 1.053627 0.449897\nv 5.000295 1.428028 0.442095\nv 3.070224 1.053631 0.163277\nv 2.983248 1.080021 -0.880639\nv 5.000295 1.302926 -1.259946\nv 3.739287 4.334102 -0.876958\nv 4.400283 4.682100 -0.952940\nv 3.038248 4.334102 -0.811319\nv 3.180259 4.550090 -0.921939\nv 1.209237 1.080021 -0.636414\nv 2.700250 4.334102 -0.947940\nv 0.169216 1.990039 -1.063281\nv 1.208789 1.060728 0.203820\nv 1.208789 1.054148 0.411073\nv 1.208789 0.958092 0.610367\nv 1.208789 0.875165 0.685964\nv 1.208789 0.621528 0.854704\nv 1.208789 0.467365 0.922276\nv -4.649089 1.039587 0.209476\nv -4.649345 0.922345 0.432259\nv -4.649708 0.652575 0.753550\nv -4.649856 0.514670 0.885149\nv -4.649964 0.160748 0.994500\nv -4.999902 1.012545 0.094530\nv -4.999240 0.870266 0.347384\nv -4.999321 0.802315 0.416133\nv -4.999759 0.491153 0.805206\nv -4.999948 0.160720 0.980689\nv -5.299752 0.147914 0.811038\nv -5.349121 0.814175 0.247113\nv -5.348800 0.938377 -0.030175\nv -6.499984 0.676000 -0.433500\nv -6.499931 0.693962 -0.748535\nv -6.499984 0.610000 -0.164800\nv -6.499984 0.523000 -0.048800\nv -6.499984 0.240000 0.109600\nv 1.209237 1.080021 -1.321617\nv -5.568033 0.119200 0.568687\nv -5.299752 -0.147914 0.811038\nv -4.999948 -0.160720 0.980689\nv -4.649964 -0.160748 0.994500\nv 1.208789 -0.130179 0.996071\nv 1.208789 0.130179 0.996071\nv 3.093016 -0.040804 1.276300\nv 5.942016 0.012019 4.157199\nv 7.043714 0.000000 4.157199\nv 4.998233 -0.130896 1.193100\nv 5.171283 -1.310384 -1.055942\nv 6.130317 1.100022 -1.106943\nv 2.983248 -1.080021 -1.351649\nv 2.983248 1.080021 -1.351649\nv -6.499931 -0.693962 -0.748535\nv -4.999902 -1.000020 -0.943979\nv 0.169216 -1.990039 -1.063281\nv 5.000295 -1.510030 0.750093\nv 5.000295 -0.874017 1.399122\nv 5.000295 -1.149023 1.260104\nv 5.000295 0.874017 1.399122\nv -7.074984 -0.304058 -0.264426\nv -7.074984 0.139529 -0.169387\nv -7.074984 0.304058 -0.264426\nv -7.074957 0.403450 -0.684268\nv -7.074984 0.393008 -0.495246\nv -7.074984 0.354637 -0.334026\nv -7.074984 0.057454 -0.155083\nv -7.074984 -0.354637 -0.334026\nv -7.074984 -0.393008 -0.495246\nv -7.074957 -0.403450 -0.684268\nv -7.074984 -0.139529 -0.169387\nv -7.074984 -0.057454 -0.155083\nv 5.257180 -0.244260 -0.448877\nv 5.275361 -0.389797 -0.446328\nv 5.534085 -0.255527 -0.410058\nv 5.858724 -0.171973 -0.364548\nv 6.246687 -0.127423 -0.310161\nv 6.245811 -0.209802 -0.310283\nv 5.957494 -0.242908 -0.350702\nv 5.684797 -0.367023 -0.388930\nv 5.030259 -0.310424 -0.039389\nv 5.218888 -0.403501 -0.175729\nv 5.254566 -0.476272 -0.297997\nv 5.497149 -0.409135 -0.146573\nv 5.811742 -0.367356 -0.029404\nv 6.194348 -0.345081 0.063191\nv 6.203377 -0.386271 -0.007583\nv 5.919040 -0.402825 -0.076394\nv 5.661265 -0.464884 -0.221067\nv 5.030257 -0.815056 -0.039376\nv 5.218887 -0.721987 -0.175721\nv 5.254566 -0.649223 -0.297993\nv 5.497147 -0.716354 -0.146565\nv 5.811740 -0.758129 -0.029394\nv 6.194347 -0.780403 0.063202\nv 6.203376 -0.739216 -0.007574\nv 5.919039 -0.722663 -0.076386\nv 5.661264 -0.660610 -0.221062\nv 5.533661 -0.562752 -0.410117\nv 5.257178 -0.881243 -0.448860\nv 5.275359 -0.735706 -0.446319\nv 5.534083 -0.869976 -0.410042\nv 5.858722 -0.953530 -0.364528\nv 6.246684 -0.998080 -0.310138\nv 6.245809 -0.915701 -0.310265\nv 5.957492 -0.882595 -0.350685\nv 5.684796 -0.758480 -0.388920\nv 5.151601 -0.815102 -0.904963\nv 5.295470 -0.722016 -0.722016\nv 5.296154 -0.649239 -0.594654\nv 5.571022 -0.716382 -0.673535\nv 5.905705 -0.758165 -0.699682\nv 6.299025 -0.780442 -0.683500\nv 6.288245 -0.739248 -0.612975\nv 5.995947 -0.722692 -0.625000\nv 5.708329 -0.660628 -0.556788\nv 5.295474 -0.403530 -0.722041\nv 5.296155 -0.476288 -0.594668\nv 5.571025 -0.409163 -0.673559\nv 5.905710 -0.367392 -0.699712\nv 6.299029 -0.345120 -0.683534\nv 6.288249 -0.386303 -0.613002\nv 5.995951 -0.402854 -0.625025\nv 5.708331 -0.464902 -0.556803\nv 5.218888 0.403501 -0.175729\nv 5.257180 0.244260 -0.448877\nv 5.254566 0.476272 -0.297997\nv 5.275361 0.389797 -0.446328\nv 5.497149 0.409135 -0.146573\nv 5.534085 0.255527 -0.410058\nv 5.811742 0.367356 -0.029404\nv 5.858724 0.171973 -0.364548\nv 6.194348 0.345081 0.063191\nv 6.246687 0.127423 -0.310161\nv 6.203377 0.386271 -0.007583\nv 6.245811 0.209802 -0.310283\nv 5.919040 0.402825 -0.076394\nv 5.957494 0.242908 -0.350702\nv 5.661265 0.464884 -0.221067\nv 5.684797 0.367023 -0.388930\nv 5.218887 0.721987 -0.175721\nv 5.254566 0.649223 -0.297993\nv 5.497147 0.716354 -0.146565\nv 5.811740 0.758129 -0.029394\nv 6.194347 0.780403 0.063202\nv 6.203376 0.739216 -0.007574\nv 5.919039 0.722663 -0.076386\nv 5.661264 0.660610 -0.221062\nv 5.257178 0.881243 -0.448860\nv 5.275359 0.735706 -0.446319\nv 5.534083 0.869976 -0.410042\nv 5.858722 0.953530 -0.364528\nv 6.246684 0.998080 -0.310138\nv 6.245809 0.915701 -0.310265\nv 5.957492 0.882595 -0.350685\nv 5.684796 0.758480 -0.388920\nv 5.533661 0.562752 -0.410117\nv 5.295470 0.722016 -0.722016\nv 5.296154 0.649239 -0.594654\nv 5.571022 0.716382 -0.673535\nv 5.905705 0.758165 -0.699682\nv 6.299025 0.780442 -0.683500\nv 6.288245 0.739248 -0.612975\nv 5.995947 0.722692 -0.625000\nv 5.708329 0.660628 -0.556788\nv 5.295474 0.403530 -0.722041\nv 5.296155 0.476288 -0.594668\nv 5.571025 0.409163 -0.673559\nv 5.905710 0.367392 -0.699712\nv 6.299029 0.345120 -0.683534\nv 6.288249 0.386303 -0.613002\nv 5.995951 0.402854 -0.625025\nv 5.708331 0.464902 -0.556803\nv 5.165639 -0.318491 0.637328\nv 5.166101 -0.159250 0.913146\nv 4.998497 -0.252327 1.074635\nv 5.183997 -0.172954 0.637297\nv 5.184248 -0.086480 0.787078\nv 5.445252 -0.307224 0.636859\nv 5.445698 -0.153617 0.902920\nv 5.773065 -0.390779 0.636310\nv 5.773632 -0.195395 0.974730\nv 6.164821 -0.435329 0.635652\nv 6.165453 -0.217671 1.012654\nv 6.163937 -0.352950 0.635654\nv 6.164450 -0.176480 0.941314\nv 5.872800 -0.319843 0.636142\nv 5.873264 -0.159926 0.913131\nv 5.597437 -0.195729 0.636604\nv 5.597722 -0.097867 0.806108\nv 5.444824 0.000000 0.636860\nv 5.166102 0.159236 0.913155\nv 5.184248 0.086472 0.787083\nv 5.445698 0.153603 0.902928\nv 5.773632 0.195378 0.974740\nv 6.165453 0.217651 1.012665\nv 6.164450 0.176464 0.941323\nv 5.873265 0.159912 0.913140\nv 5.597722 0.097858 0.806113\nv 5.165639 0.318491 0.637345\nv 4.997765 0.504639 0.637636\nv 5.183997 0.172954 0.637307\nv 5.445252 0.307224 0.636875\nv 5.773065 0.390779 0.636330\nv 6.164821 0.435329 0.635675\nv 6.163937 0.352950 0.635673\nv 5.872800 0.319843 0.636159\nv 5.597437 0.195729 0.636614\nv 5.165176 0.159265 0.361518\nv 4.997031 0.252350 0.200598\nv 5.183746 0.086488 0.487521\nv 5.444806 0.153631 0.370806\nv 5.772497 0.195413 0.297899\nv 6.164188 0.217691 0.258662\nv 6.163424 0.176496 0.330003\nv 5.872335 0.159941 0.359162\nv 5.597153 0.097876 0.467105\nv 5.165176 -0.159221 0.361493\nv 4.997031 -0.252281 0.200558\nv 5.183746 -0.086464 0.487507\nv 5.444806 -0.153589 0.370782\nv 5.772497 -0.195360 0.297868\nv 6.164188 -0.217631 0.258628\nv 6.163424 -0.176448 0.329975\nv 5.872335 -0.159897 0.359136\nv 5.597153 -0.097850 0.467090\nv 5.090927 -1.067391 -0.472156\nv 5.171283 1.310384 -1.055942\nv 5.151606 0.310470 -0.905003\nv 5.151606 -0.310470 -0.905003\nv 5.030257 0.815056 -0.039376\nv 5.030259 0.310424 -0.039389\nv 5.090930 -0.058113 -0.472183\nv 5.090930 0.058113 -0.472183\nv 5.000295 -1.210004 0.173074\nv 5.000295 1.210004 0.173074\nv 5.000295 -1.428028 0.442095\nv 4.997764 -0.504639 0.637610\nv 4.998497 0.252304 1.074648\nv 4.998233 0.130896 1.193100\nv 5.000295 1.510030 0.750093\nv 5.151601 0.815102 -0.904963\nv 5.090927 1.067391 -0.472156\nv 3.070224 -1.053627 0.449897\nv -5.349205 0.737229 0.323968\nv -5.349205 -0.737229 0.323968\nv -5.349476 -0.470935 0.566062\nv -6.499984 -0.098825 0.133439\nv -6.499984 0.098825 0.133439\nv -6.499984 -0.523000 -0.048800\nv -5.349476 0.470935 0.566062\nv -4.999902 1.000020 -0.943979\nv 0.840214 2.480049 -1.050312\nv 1.209237 -1.080021 -0.636414\nv 3.804262 4.682100 -0.938960\nv 5.000295 -1.302926 -1.259946\nv 3.804262 -4.682100 -0.938960\nv -4.649856 -0.514670 0.885149\nv -4.999492 0.681710 0.569242\nv -4.649417 0.860391 0.497003\nv -4.906714 0.620194 0.686502\nv -4.649417 -0.860391 0.497003\nv -4.999492 -0.681710 0.569242\n# 310 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng windows\nusemtl glass\ns 1\nf 310 32 294\nf 76 308 306\nf 294 88 33\nf 310 31 32\nf 88 294 32\nf 87 33 88 78\nf 87 78 298\nf 298 76 306\nf 298 78 76\ng tail\nusemtl bone\ns 4\nf 95 3 96 4\nf 4 287 43 95\nf 94 2 3 43\nf 3 2 93 96\nf 41 1 93 42\nf 41 42 287\nf 43 3 95\nf 287 42 94 43\nf 42 93 2 94\nf 96 93 1\ng rearbody\ns 6\nf 275 98 54\nf 96 223 286 287\nf 97 277 155\nf 276 281 280 277\nf 276 275 289\nf 283 282 128 279\nf 283 290 275\nf 257 51 248\nf 282 303 97\nf 96 6 106\nf 303 12 97\nf 104 285 223\nf 97 155 274\nf 284 282 266\nf 286 288 287\nf 137 128 282\nf 283 279 278\nf 248 288 286\nf 6 105 106\nf 275 54 283\nf 284 266 285\nf 96 287 4\nf 284 285 104\nf 248 51 288\nf 283 278 290\nf 274 137 282\nf 289 275 290\nf 97 12 98 275\nf 48 107 45\nf 96 106 104\nf 282 283 257 266\nf 97 275 276 277\nf 104 223 96\nf 257 283 51\nf 97 274 282\nf 128 280 281 279\nf 287 288 48\nf 287 48 45\ng body\ns 7\nf 309 31 310\nf 294 33 295\nf 108 118 39\nf 80 79 74 73\nf 49 47 48\nf 5 1 91 24\nf 10 291 20 19\nf 294 295 38\nf 78 77 76\nf 81 82 111 112\nf 65 66 46 47\nf 30 309 310\nf 5 105 6\nf 30 29 26 309\nf 68 62 59 299\nf 78 88 89 77\nf 118 38 295 119\nf 83 81 112 113\nf 64 65 47 49\nf 35 37 36\nf 23 8 7\nf 24 91 90 305\nf 62 52 53 59\nf 296 85 109 114\nf 79 292 75 74\nf 50 49 288\nf 22 23 27\nf 282 10 11 303\nf 293 294 297\nf 71 72 92 67\nf 112 39 113\nf 310 294 293\nf 305 90 89\nf 308 70 307\nf 296 87 298\nf 114 39 119\nf 71 77 72\nf 45 107 44\nf 8 23 22\nf 7 5 24 23\nf 287 44 41\nf 307 69 74 75\nf 92 91 1 41\nf 63 62 68\nf 28 29 34 35\nf 105 7 8 106\nf 32 89 88\nf 49 48 288\nf 82 81 299\nf 115 37 297 108\nf 113 39 110\nf 73 74 69 68\nf 29 30 293 34\nf 291 104 9\nf 22 27 309\nf 54 53 52 283\nf 83 79 80\nf 83 80 81\nf 48 47 46 107\nf 25 20 21 26\nf 301 11 10 19\nf 39 115 108\nf 306 307 75\nf 110 39 109\nf 292 298 306\nf 306 308 307\nf 70 66 65\nf 294 38 297\nf 5 6 96\nf 85 84 110 109\nf 62 63 50 52\nf 102 25 28\nf 9 106 8\nf 310 293 30\nf 70 71 66\nf 77 89 90 72\nf 66 71 67\nf 297 37 34 293\nf 106 9 104\nf 25 19 20\nf 44 107 46\nf 85 296 298\nf 117 101 36 116\nf 111 39 112\nf 307 70 65\nf 35 34 37\nf 23 305 27\nf 102 301 19 25\nf 50 288 51\nf 80 73 299\nf 84 298 292\nf 49 50 63 64\nf 32 305 89\nf 1 5 96\nf 32 31 27 305\nf 66 67 44 46\nf 296 295 33 87\nf 291 10 282\nf 81 80 299\nf 309 27 31\nf 84 85 298\nf 116 36 37 115\nf 292 79 83 84\nf 283 52 51\nf 309 26 21 22\nf 284 291 282\nf 102 36 101\nf 65 64 69 307\nf 295 296 114 119\nf 73 68 299\nf 39 116 115\nf 105 5 7\nf 23 24 305\nf 39 117 116\nf 77 71 76\nf 109 39 114\nf 297 38 118 108\nf 75 292 306\nf 39 118 119\nf 21 20 291 9\nf 9 8 22 21\nf 287 45 44\nf 71 70 308 76\nf 84 83 113 110\nf 67 92 41 44\nf 25 26 29 28\nf 104 291 284\nf 102 28 35\nf 69 64 63 68\nf 72 90 91 92\nf 52 50 51\nf 102 35 36\ng wings\ns 5\nf 16 15 17\nf 304 15 16\nf 300 57 60\nf 14 13 304\nf 59 53 55 57\nf 60 57 58\nf 18 301 103\nf 300 59 57\nf 304 13 15\nf 56 55 53 54\nf 15 13 11 301\nf 61 59 300\nf 57 55 302\nf 103 301 102\nf 17 15 301\nf 303 11 13 14\nf 58 57 302\nf 302 55 56\nf 17 301 18\nf 299 59 61\ng tiles\nusemtl fldkdkgrey\ns 3\nf 302 56 54\nf 18 103 40\nf 16 17 99\nf 86 61 300\nf 99 304 16\nf 303 14 304\nf 99 303 304\nf 17 18 99\nf 302 54 100\nf 58 302 100\nf 100 86 300\nf 18 40 99\nf 100 60 58\nf 100 300 60\nf 101 117 111 82\nf 102 101 82 299\nf 117 39 111\nf 99 100 54 303\nf 303 54 98 12\nf 86 100 99 40\nf 40 103 61 86\nf 299 61 103 102\ng enginside\nusemtl redbrick\ns 9\nf 238 255 246\nf 194 202 201 193\nf 153 162 163 154\nf 144 153 154 145\nf 184 194 193 182\nf 238 246 237\nf 272 234 232 271\nf 236 237 235 234\nf 204 195 186\nf 134 143 144 135\nf 143 152 153 144\nf 204 203 195\nf 237 246 245 235\nf 273 236 234 272\nf 238 237 236\nf 185 184 182 183\nf 135 144 145 136\nf 154 163 146\nf 195 203 202 194\nf 235 245 244 233\nf 264 273 272 263\nf 219 185 183 218\nf 187 186 184 185\nf 136 145 146\nf 161 169 170 162\nf 204 220 212\nf 255 264 263 254\nf 234 235 233 232\nf 186 195 194 184\nf 145 154 146\nf 152 161 162 153\nf 204 212 203\nf 246 255 254 245\nf 238 236 273\nf 204 187 220\nf 169 125 126 170\nf 126 135 136 127\nf 163 171 146\nf 203 212 211 202\nf 245 254 253 244\nf 238 273 264\nf 211 219 218 210\nf 170 126 127 171\nf 127 136 146\nf 162 170 171 163\nf 202 211 210 201\nf 238 264 255\nf 254 263 262 253\nf 212 220 219 211\nf 171 127 146\nf 125 134 135 126\nf 204 186 187\nf 220 187 185 219\nf 263 272 271 262\ng engout\nusemtl black\nf 251 260 259 250\nf 209 217 216 208\nf 157 165 166 158\nf 132 141 142 133\nf 179 178 176 177\nf 215 177 175 214\nf 270 230 228 269\nf 227 241 240 225\nf 191 199 198 190\nf 150 159 160 151\nf 131 140 141 132\nf 177 176 174 175\nf 230 231 229 228\nf 269 228 226 268\nf 229 242 241 227\nf 192 200 199 191\nf 139 148 149 140\nf 130 139 140 131\nf 180 192 191 178\nf 228 229 227 226\nf 268 226 224 267\nf 231 243 242 229\nf 176 190 189 174\nf 140 149 150 141\nf 149 158 159 150\nf 190 198 197 189\nf 243 252 251 242\nf 259 268 267 258\nf 216 179 177 215\nf 181 180 178 179\nf 121 130 131 122\nf 167 123 124 168\nf 208 216 215 207\nf 250 259 258 249\nf 252 261 260 251\nf 198 207 206 197\nf 158 166 167 159\nf 123 132 133 124\nf 166 122 123 167\nf 207 215 214 206\nf 261 270 269 260\nf 241 250 249 240\nf 199 208 207 198\nf 159 167 168 160\nf 122 131 132 123\nf 165 121 122 166\nf 217 181 179 216\nf 260 269 268 259\nf 242 251 250 241\nf 200 209 208 199\nf 148 157 158 149\nf 141 150 151 142\nf 178 191 190 176\nf 226 227 225 224\ng engmount\nusemtl brass\ns 11\nf 225 240 239 222\nf 164 120 121 165\nf 128 137 138 129\nf 196 205 289 290\nf 265 221 285 266\nf 206 214 213 205\nf 138 147 148 139\nf 174 189 188 172\nf 249 258 256 247\nf 221 222 223 285\nf 155 277 164 156\nf 274 155 156 147\nf 213 173 281 276\nf 258 267 265 256\nf 189 197 196 188\nf 120 129 130 121\nf 173 172 279 281\nf 239 247 248 286\nf 205 213 276 289\nf 137 274 147 138\nf 156 164 165 157\nf 224 225 222 221\nf 247 256 257 248\nf 172 188 278 279\nf 280 128 129 120\nf 188 196 290 278\nf 256 265 266 257\nf 214 175 173 213\nf 147 156 157 148\nf 175 174 172 173\nf 240 249 247 239\nf 222 239 286 223\nf 277 280 120 164\nf 129 138 139 130\nf 197 206 205 196\nf 267 224 221 265\ng engrim\nusemtl dkdkgrey\ns off\nf 233 244 243 231\nf 124 133 134 125\nf 262 271 270 261\nf 142 151 152 143\nf 253 262 261 252\nf 151 160 161 152\nf 244 253 252 243\nf 160 168 169 161\nf 201 210 209 200\nf 271 232 230 270\nf 133 142 143 134\nf 232 233 231 230\nf 183 182 180 181\nf 218 183 181 217\nf 182 193 192 180\nf 210 218 217 209\nf 193 201 200 192\nf 168 124 125 169\n# 393 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/teapot.obj",
    "content": "# OBJ file created by ply_to_obj.c\n#\ng Object001\nusemtl rgb(255,255,255,0.1)\n\nv  40.6266  28.3457  -1.10804\nv  40.0714  30.4443  -1.10804\nv  40.7155  31.1438  -1.10804\nv  42.0257  30.4443  -1.10804\nv  43.4692  28.3457  -1.10804\nv  37.5425  28.3457  14.5117\nv  37.0303  30.4443  14.2938\nv  37.6244  31.1438  14.5466\nv  38.8331  30.4443  15.0609\nv  40.1647  28.3457  15.6274\nv  29.0859  28.3457  27.1468\nv  28.6917  30.4443  26.7527\nv  29.149  31.1438  27.2099\nv  30.0792  30.4443  28.1402\nv  31.1041  28.3457  29.165\nv  16.4508  28.3457  35.6034\nv  16.2329  30.4443  35.0912\nv  16.4857  31.1438  35.6853\nv  16.9999  30.4443  36.894\nv  17.5665  28.3457  38.2256\nv  0.831025  28.3457  38.6876\nv  0.831025  30.4443  38.1324\nv  0.831025  31.1438  38.7764\nv  0.831025  30.4443  40.0866\nv  0.831025  28.3457  41.5301\nv  -15.868  28.3457  35.6034\nv  -15.0262  30.4443  35.0912\nv  -14.9585  31.1438  35.6853\nv  -15.3547  30.4443  36.894\nv  -15.9044  28.3457  38.2256\nv  -28.3832  28.3457  27.1468\nv  -27.4344  30.4443  26.7527\nv  -27.6068  31.1438  27.2099\nv  -28.4322  30.4443  28.1402\nv  -29.4421  28.3457  29.165\nv  -36.2402  28.3457  14.5117\nv  -35.52  30.4443  14.2938\nv  -36.0073  31.1438  14.5466\nv  -37.1767  30.4443  15.0609\nv  -38.5027  28.3457  15.6274\nv  -38.9646  28.3457  -1.10804\nv  -38.4094  30.4443  -1.10804\nv  -39.0534  31.1438  -1.10804\nv  -40.3636  30.4443  -1.10804\nv  -41.8071  28.3457  -1.10804\nv  -35.8804  28.3457  -16.7278\nv  -35.3683  30.4443  -16.5099\nv  -35.9624  31.1438  -16.7627\nv  -37.1711  30.4443  -17.2769\nv  -38.5027  28.3457  -17.8435\nv  -27.4238  28.3457  -29.3629\nv  -27.0297  30.4443  -28.9687\nv  -27.4869  31.1438  -29.426\nv  -28.4172  30.4443  -30.3562\nv  -29.4421  28.3457  -31.3811\nv  -14.7887  28.3457  -37.8195\nv  -14.5708  30.4443  -37.3073\nv  -14.8236  31.1438  -37.9014\nv  -15.3379  30.4443  -39.1101\nv  -15.9044  28.3457  -40.4417\nv  0.831025  28.3457  -40.9036\nv  0.831025  30.4443  -40.3484\nv  0.831025  31.1438  -40.9925\nv  0.831025  30.4443  -42.3027\nv  0.831025  28.3457  -43.7462\nv  16.4508  28.3457  -37.8195\nv  16.2329  30.4443  -37.3073\nv  16.4857  31.1438  -37.9014\nv  16.9999  30.4443  -39.1101\nv  17.5665  28.3457  -40.4417\nv  29.0859  28.3457  -29.3629\nv  28.6917  30.4443  -28.9687\nv  29.149  31.1438  -29.426\nv  30.0792  30.4443  -30.3562\nv  31.1041  28.3457  -31.3811\nv  37.5425  28.3457  -16.7278\nv  37.0303  30.4443  -16.5099\nv  37.6244  31.1438  -16.7627\nv  38.8331  30.4443  -17.2769\nv  40.1647  28.3457  -17.8435\nv  48.6879  17.1865  -1.10804\nv  53.2404  6.22714  -1.10804\nv  56.4605  -4.33246  -1.10804\nv  57.6819  -14.2925  -1.10804\nv  44.979  17.1865  17.6758\nv  49.1787  6.22714  19.4626\nv  52.1492  -4.33246  20.7265\nv  53.2759  -14.2925  21.2059\nv  34.8094  17.1865  32.8703\nv  38.0417  6.22714  36.1026\nv  40.3279  -4.33246  38.3889\nv  41.1951  -14.2925  39.2561\nv  19.6148  17.1865  43.0399\nv  21.4017  6.22714  47.2396\nv  22.6656  -4.33246  50.2101\nv  23.145  -14.2925  51.3369\nv  0.831025  17.1865  46.7488\nv  0.831025  6.22714  51.3013\nv  0.831025  -4.33246  54.5214\nv  0.831025  -14.2925  55.7428\nv  -17.9528  17.1865  43.0399\nv  -19.7397  6.22714  47.2396\nv  -21.0035  -4.33246  50.2101\nv  -21.4829  -14.2925  51.3369\nv  -33.1474  17.1865  32.8703\nv  -36.3796  6.22714  36.1026\nv  -38.6659  -4.33246  38.3889\nv  -39.5331  -14.2925  39.2561\nv  -43.3169  17.1865  17.6758\nv  -47.5166  6.22714  19.4626\nv  -50.4871  -4.33246  20.7265\nv  -51.6139  -14.2925  21.2059\nv  -47.0258  17.1865  -1.10804\nv  -51.5784  6.22714  -1.10804\nv  -54.7984  -4.33246  -1.10804\nv  -56.0198  -14.2925  -1.10804\nv  -43.3169  17.1865  -19.8919\nv  -47.5166  6.22714  -21.6787\nv  -50.4871  -4.33246  -22.9426\nv  -51.6139  -14.2925  -23.422\nv  -33.1474  17.1865  -35.0864\nv  -36.3796  6.22714  -38.3187\nv  -38.6659  -4.33246  -40.6049\nv  -39.5331  -14.2925  -41.4721\nv  -17.9528  17.1865  -45.256\nv  -19.7397  6.22714  -49.4557\nv  -21.0035  -4.33246  -52.4262\nv  -21.4829  -14.2925  -53.5529\nv  0.831025  17.1865  -48.9649\nv  0.831025  6.22714  -53.5174\nv  0.831025  -4.33246  -56.7375\nv  0.831025  -14.2925  -57.9589\nv  19.6148  17.1865  -45.256\nv  21.4017  6.22714  -49.4557\nv  22.6656  -4.33246  -52.4262\nv  23.145  -14.2925  -53.5529\nv  34.8094  17.1865  -35.0864\nv  38.0417  6.22714  -38.3187\nv  40.3279  -4.33246  -40.6049\nv  41.1951  -14.2925  -41.4721\nv  44.979  17.1865  -19.8919\nv  49.1787  6.22714  -21.6787\nv  52.1492  -4.33246  -22.9426\nv  53.2759  -14.2925  -23.422\nv  55.4611  -22.7202  -1.10804\nv  50.5755  -28.9493  -1.10804\nv  45.6899  -33.1798  -1.10804\nv  43.4692  -35.6115  -1.10804\nv  51.2273  -22.7202  20.3343\nv  46.7203  -28.9493  18.4167\nv  42.2133  -33.1798  16.4991\nv  40.1647  -35.6115  15.6274\nv  39.6184  -22.7202  37.6793\nv  36.1496  -28.9493  34.2106\nv  32.6808  -33.1798  30.7418\nv  31.1041  -35.6115  29.165\nv  22.2733  -22.7202  49.2882\nv  20.3557  -28.9493  44.7813\nv  18.4381  -33.1798  40.2743\nv  17.5665  -35.6115  38.2256\nv  0.831025  -22.7202  53.5221\nv  0.831025  -28.9493  48.6365\nv  0.831025  -33.1798  43.7508\nv  0.831025  -35.6115  41.5301\nv  -20.6113  -22.7202  49.2882\nv  -18.6937  -28.9493  44.7813\nv  -16.7761  -33.1798  40.2743\nv  -15.9044  -35.6115  38.2256\nv  -37.9564  -22.7202  37.6793\nv  -34.4876  -28.9493  34.2106\nv  -31.0188  -33.1798  30.7418\nv  -29.4421  -35.6115  29.165\nv  -49.5653  -22.7202  20.3343\nv  -45.0583  -28.9493  18.4167\nv  -40.5513  -33.1798  16.4991\nv  -38.5027  -35.6115  15.6274\nv  -53.7991  -22.7202  -1.10804\nv  -48.9135  -28.9493  -1.10804\nv  -44.0279  -33.1798  -1.10804\nv  -41.8071  -35.6115  -1.10804\nv  -49.5653  -22.7202  -22.5504\nv  -45.0583  -28.9493  -20.6327\nv  -40.5513  -33.1798  -18.7151\nv  -38.5027  -35.6115  -17.8435\nv  -37.9564  -22.7202  -39.8954\nv  -34.4876  -28.9493  -36.4266\nv  -31.0188  -33.1798  -32.9578\nv  -29.4421  -35.6115  -31.3811\nv  -20.6113  -22.7202  -51.5043\nv  -18.6937  -28.9493  -46.9973\nv  -16.7761  -33.1798  -42.4903\nv  -15.9044  -35.6115  -40.4417\nv  0.831025  -22.7202  -55.7382\nv  0.831025  -28.9493  -50.8525\nv  0.831025  -33.1798  -45.9669\nv  0.831025  -35.6115  -43.7462\nv  22.2733  -22.7202  -51.5043\nv  20.3557  -28.9493  -46.9973\nv  18.4381  -33.1798  -42.4903\nv  17.5665  -35.6115  -40.4417\nv  39.6184  -22.7202  -39.8954\nv  36.1496  -28.9493  -36.4266\nv  32.6808  -33.1798  -32.9578\nv  31.1041  -35.6115  -31.3811\nv  51.2273  -22.7202  -22.5504\nv  46.7203  -28.9493  -20.6327\nv  42.2133  -33.1798  -18.7151\nv  40.1647  -35.6115  -17.8435\nv  42.5031  -37.1772  -1.10804\nv  37.3399  -38.5429  -1.10804\nv  24.5818  -39.5089  -1.10804\nv  0.831025  -39.8754  -1.10804\nv  39.2736  -37.1772  15.2483\nv  34.5105  -38.5429  13.2217\nv  22.7411  -39.5089  8.21414\nv  30.4182  -37.1772  28.4792\nv  26.7523  -38.5429  24.8133\nv  17.6941  -39.5089  15.755\nv  17.1873  -37.1772  37.3345\nv  15.1608  -38.5429  32.5714\nv  10.1532  -39.5089  20.8021\nv  0.831025  -37.1772  40.5641\nv  0.831025  -38.5429  35.4009\nv  0.831025  -39.5089  22.6427\nv  -15.5253  -37.1772  37.3345\nv  -13.4987  -38.5429  32.5714\nv  -8.49115  -39.5089  20.8021\nv  -28.7562  -37.1772  28.4792\nv  -25.0903  -38.5429  24.8133\nv  -16.032  -39.5089  15.755\nv  -37.6115  -37.1772  15.2483\nv  -32.8484  -38.5429  13.2217\nv  -21.0791  -39.5089  8.21414\nv  -40.8411  -37.1772  -1.10804\nv  -35.6779  -38.5429  -1.10804\nv  -22.9198  -39.5089  -1.10804\nv  -37.6115  -37.1772  -17.4643\nv  -32.8484  -38.5429  -15.4378\nv  -21.0791  -39.5089  -10.4302\nv  -28.7562  -37.1772  -30.6952\nv  -25.0903  -38.5429  -27.0294\nv  -16.032  -39.5089  -17.9711\nv  -15.5253  -37.1772  -39.5506\nv  -13.4987  -38.5429  -34.7875\nv  -8.49115  -39.5089  -23.0181\nv  0.831025  -37.1772  -42.7802\nv  0.831025  -38.5429  -37.6169\nv  0.831025  -39.5089  -24.8588\nv  17.1873  -37.1772  -39.5506\nv  15.1608  -38.5429  -34.7875\nv  10.1532  -39.5089  -23.0181\nv  30.4182  -37.1772  -30.6952\nv  26.7523  -38.5429  -27.0294\nv  17.6941  -39.5089  -17.9711\nv  39.2736  -37.1772  -17.4643\nv  34.5105  -38.5429  -15.4378\nv  22.7411  -39.5089  -10.4302\nv  -44.6497  17.6861  -1.10804\nv  -57.9297  17.5862  -1.10804\nv  -67.7453  16.8867  -1.10804\nv  -73.8301  14.9879  -1.10804\nv  -75.9176  11.2904  -1.10804\nv  -44.2055  18.6855  3.68876\nv  -58.3252  18.5699  3.68876\nv  -68.6891  17.7611  3.68876\nv  -75.0724  15.5657  3.68876\nv  -77.2501  11.2904  3.68876\nv  -43.2284  20.884  5.28769\nv  -59.1955  20.7341  5.28769\nv  -70.7655  19.6848  5.28769\nv  -77.8053  16.8367  5.28769\nv  -80.1814  11.2904  5.28769\nv  -42.2513  23.0825  3.68876\nv  -60.0657  22.8983  3.68876\nv  -72.8419  21.6085  3.68876\nv  -80.5381  18.1077  3.68876\nv  -83.1128  11.2904  3.68876\nv  -41.8071  24.0819  -1.10804\nv  -60.4613  23.882  -1.10804\nv  -73.7857  22.4829  -1.10804\nv  -81.7804  18.6855  -1.10804\nv  -84.4453  11.2904  -1.10804\nv  -42.2513  23.0825  -5.90483\nv  -60.0657  22.8983  -5.90483\nv  -72.8419  21.6085  -5.90483\nv  -80.5381  18.1077  -5.90483\nv  -83.1128  11.2904  -5.90483\nv  -43.2284  20.884  -7.50376\nv  -59.1955  20.7341  -7.50376\nv  -70.7655  19.6848  -7.50376\nv  -77.8053  16.8367  -7.50376\nv  -80.1814  11.2904  -7.50376\nv  -44.2055  18.6855  -5.90483\nv  -58.3252  18.5699  -5.90483\nv  -68.6891  17.7611  -5.90483\nv  -75.0724  15.5657  -5.90483\nv  -77.2501  11.2904  -5.90483\nv  -74.8073  5.4943  -1.10804\nv  -71.2985  -1.50103  -1.10804\nv  -65.1248  -8.49634  -1.10804\nv  -56.0198  -14.2925  -1.10804\nv  -76.0183  4.93477  3.68876\nv  -72.159  -2.35462  3.68876\nv  -65.4267  -9.55033  3.68876\nv  -55.5757  -15.6249  3.68876\nv  -78.6824  3.70383  5.28769\nv  -74.0522  -4.23253  5.28769\nv  -66.0909  -11.8691  5.28769\nv  -54.5986  -18.5563  5.28769\nv  -81.3466  2.47288  3.68876\nv  -75.9454  -6.11044  3.68876\nv  -66.755  -14.1878  3.68876\nv  -53.6214  -21.4877  3.68876\nv  -82.5576  1.91336  -1.10804\nv  -76.8059  -6.96404  -1.10804\nv  -67.0569  -15.2418  -1.10804\nv  -53.1773  -22.8201  -1.10804\nv  -81.3466  2.47288  -5.90483\nv  -75.9454  -6.11044  -5.90483\nv  -66.755  -14.1878  -5.90483\nv  -53.6214  -21.4877  -5.90483\nv  -78.6824  3.70383  -7.50376\nv  -74.0522  -4.23253  -7.50376\nv  -66.0909  -11.8691  -7.50376\nv  -54.5986  -18.5563  -7.50376\nv  -76.0183  4.93477  -5.90483\nv  -72.159  -2.35462  -5.90483\nv  -65.4267  -9.55033  -5.90483\nv  -55.5757  -15.6249  -5.90483\nv  49.1543  0.630882  -1.10804\nv  62.7896  3.76212  -1.10804\nv  68.6967  11.2904  -1.10804\nv  71.939  20.4176  -1.10804\nv  77.5797  28.3457  -1.10804\nv  49.1543  -3.03333  9.4449\nv  63.8305  1.04519  8.42059\nv  70.0292  9.70814  6.1671\nv  73.5629  19.8451  3.91361\nv  80.2446  28.3457  2.88929\nv  49.1543  -11.0946  12.9626\nv  66.1207  -4.93206  11.5968\nv  72.9605  6.22714  8.59214\nv  77.1355  18.5855  5.58749\nv  86.1073  28.3457  4.22173\nv  49.1543  -19.1559  9.4449\nv  68.4108  -10.9093  8.42059\nv  75.8919  2.74614  6.1671\nv  80.7081  17.326  3.91361\nv  91.97  28.3457  2.88929\nv  49.1543  -22.8201  -1.10804\nv  69.4518  -13.6262  -1.10804\nv  77.2244  1.16386  -1.10804\nv  82.3321  16.7534  -1.10804\nv  94.6349  28.3457  -1.10804\nv  49.1543  -19.1559  -11.661\nv  68.4108  -10.9093  -10.6367\nv  75.8919  2.74614  -8.38317\nv  80.7081  17.326  -6.12968\nv  91.97  28.3457  -5.10536\nv  49.1543  -11.0946  -15.1786\nv  66.1207  -4.93206  -13.8129\nv  72.9605  6.22714  -10.8082\nv  77.1355  18.5855  -7.80356\nv  86.1073  28.3457  -6.4378\nv  49.1543  -3.03333  -11.661\nv  63.8305  1.04519  -10.6367\nv  70.0292  9.70814  -8.38317\nv  73.5629  19.8451  -6.12968\nv  80.2446  28.3457  -5.10536\nv  79.6227  29.5449  -1.10804\nv  81.1329  29.9446  -1.10804\nv  81.577  29.5449  -1.10804\nv  80.4222  28.3457  -1.10804\nv  82.4767  29.6034  2.63946\nv  83.8116  30.0383  2.08983\nv  83.8515  29.6268  1.54019\nv  82.1988  28.3457  1.29036\nv  88.7555  29.7322  3.88862\nv  89.7049  30.2444  3.15578\nv  88.8555  29.8072  2.42294\nv  86.1073  28.3457  2.08983\nv  95.0343  29.8611  2.63946\nv  95.5982  30.4505  2.08983\nv  93.8594  29.9875  1.54019\nv  90.0158  28.3457  1.29036\nv  97.8883  29.9196  -1.10804\nv  98.2769  30.5442  -1.10804\nv  96.1339  30.0695  -1.10804\nv  91.7924  28.3457  -1.10804\nv  95.0343  29.8611  -4.85553\nv  95.5982  30.4505  -4.3059\nv  93.8594  29.9875  -3.75626\nv  90.0158  28.3457  -3.50643\nv  88.7555  29.7322  -6.10469\nv  89.7049  30.2444  -5.37185\nv  88.8555  29.8072  -4.63901\nv  86.1073  28.3457  -4.3059\nv  82.4767  29.6034  -4.85553\nv  83.8116  30.0383  -4.3059\nv  83.8515  29.6268  -3.75626\nv  82.1988  28.3457  -3.50643\nv  0.831025  49.6647  -1.10804\nv  10.5134  48.2657  -1.10804\nv  10.0693  44.868  -1.10804\nv  6.42728  40.6708  -1.10804\nv  6.51611  36.8733  -1.10804\nv  9.76642  48.2657  2.70243\nv  9.35632  44.868  2.52698\nv  5.9947  40.6708  1.09187\nv  6.07552  36.8733  1.12336\nv  7.71453  48.2657  5.77547\nv  7.39819  44.868  5.45913\nv  4.80736  40.6708  2.8683\nv  4.86744  36.8733  2.92838\nv  4.64149  48.2657  7.82736\nv  4.46604  44.868  7.41726\nv  3.03093  40.6708  4.05564\nv  3.06242  36.8733  4.13646\nv  0.831025  48.2657  8.57438\nv  0.831025  44.868  8.13023\nv  0.831025  40.6708  4.48822\nv  0.831025  36.8733  4.57705\nv  -2.97944  48.2657  7.82736\nv  -2.80399  44.868  7.41726\nv  -1.36888  40.6708  4.05564\nv  -1.40037  36.8733  4.13646\nv  -6.05248  48.2657  5.77547\nv  -5.73614  44.868  5.45913\nv  -3.14531  40.6708  2.8683\nv  -3.20539  36.8733  2.92838\nv  -8.10437  48.2657  2.70243\nv  -7.69427  44.868  2.52698\nv  -4.33265  40.6708  1.09187\nv  -4.41347  36.8733  1.12336\nv  -8.85139  48.2657  -1.10804\nv  -8.40724  44.868  -1.10804\nv  -4.76523  40.6708  -1.10804\nv  -4.85406  36.8733  -1.10804\nv  -8.10437  48.2657  -4.9185\nv  -7.69427  44.868  -4.74305\nv  -4.33265  40.6708  -3.30794\nv  -4.41347  36.8733  -3.33943\nv  -6.05248  48.2657  -7.99154\nv  -5.73614  44.868  -7.6752\nv  -3.14531  40.6708  -5.08437\nv  -3.20539  36.8733  -5.14445\nv  -2.97944  48.2657  -10.0434\nv  -2.80399  44.868  -9.63333\nv  -1.36888  40.6708  -6.27171\nv  -1.40037  36.8733  -6.35253\nv  0.831025  48.2657  -10.7904\nv  0.831025  44.868  -10.3463\nv  0.831025  40.6708  -6.70429\nv  0.831025  36.8733  -6.79312\nv  4.64149  48.2657  -10.0434\nv  4.46604  44.868  -9.63333\nv  3.03093  40.6708  -6.27171\nv  3.06242  36.8733  -6.35253\nv  7.71453  48.2657  -7.99154\nv  7.39819  44.868  -7.6752\nv  4.80736  40.6708  -5.08437\nv  4.86744  36.8733  -5.14445\nv  9.76642  48.2657  -4.9185\nv  9.35632  44.868  -4.74305\nv  5.9947  40.6708  -3.30794\nv  6.07552  36.8733  -3.33943\nv  13.8001  34.3417  -1.10804\nv  24.282  32.6095  -1.10804\nv  33.6979  30.8773  -1.10804\nv  37.7841  28.3457  -1.10804\nv  12.795  34.3417  3.98234\nv  22.4646  32.6095  8.09647\nv  31.1507  30.8773  11.7922\nv  34.9202  28.3457  13.396\nv  10.0391  34.3417  8.10003\nv  17.4812  32.6095  15.5422\nv  24.1665  30.8773  22.2275\nv  27.0677  28.3457  25.1286\nv  5.9214  34.3417  10.856\nv  10.0355  32.6095  20.5255\nv  13.7313  30.8773  29.2117\nv  15.3351  28.3457  32.9812\nv  0.831025  34.3417  11.8611\nv  0.831025  32.6095  22.3429\nv  0.831025  30.8773  31.7589\nv  0.831025  28.3457  35.845\nv  -4.25935  34.3417  10.856\nv  -8.37348  32.6095  20.5255\nv  -12.0692  30.8773  29.2117\nv  -13.673  28.3457  32.9812\nv  -8.37704  34.3417  8.10003\nv  -15.8192  32.6095  15.5422\nv  -22.5045  30.8773  22.2275\nv  -25.4056  28.3457  25.1286\nv  -11.133  34.3417  3.98234\nv  -20.8025  32.6095  8.09647\nv  -29.4887  30.8773  11.7922\nv  -33.2582  28.3457  13.396\nv  -12.1381  34.3417  -1.10804\nv  -22.62  32.6095  -1.10804\nv  -32.0359  30.8773  -1.10804\nv  -36.122  28.3457  -1.10804\nv  -11.133  34.3417  -6.19841\nv  -20.8025  32.6095  -10.3125\nv  -29.4887  30.8773  -14.0083\nv  -33.2582  28.3457  -15.6121\nv  -8.37704  34.3417  -10.3161\nv  -15.8192  32.6095  -17.7582\nv  -22.5045  30.8773  -24.4435\nv  -25.4056  28.3457  -27.3447\nv  -4.25935  34.3417  -13.072\nv  -8.37348  32.6095  -22.7416\nv  -12.0692  30.8773  -31.4277\nv  -13.673  28.3457  -35.1972\nv  0.831025  34.3417  -14.0771\nv  0.831025  32.6095  -24.559\nv  0.831025  30.8773  -33.9749\nv  0.831025  28.3457  -38.0611\nv  5.9214  34.3417  -13.072\nv  10.0355  32.6095  -22.7416\nv  13.7313  30.8773  -31.4277\nv  15.3351  28.3457  -35.1972\nv  10.0391  34.3417  -10.3161\nv  17.4812  32.6095  -17.7582\nv  24.1665  30.8773  -24.4435\nv  27.0677  28.3457  -27.3447\nv  12.795  34.3417  -6.19841\nv  22.4646  32.6095  -10.3125\nv  31.1507  30.8773  -14.0083\nv  34.9202  28.3457  -15.6121\n\nvn  -0.966742  -0.255752  9.97231e-09\nvn  -0.966824  0.255443  3.11149e-08\nvn  -0.092052  0.995754  4.45989e-08\nvn  0.68205  0.731305  0\nvn  0.870301  0.492521  -4.87195e-09\nvn  -0.893014  -0.256345  -0.369882\nvn  -0.893437  0.255997  -0.369102\nvn  -0.0838771  0.995843  -0.0355068\nvn  0.629724  0.73186  0.260439\nvn  0.803725  0.49337  0.332584\nvn  -0.683407  -0.256729  -0.683407\nvn  -0.683531  0.256067  -0.683531\nvn  -0.0649249  0.995776  -0.0649248\nvn  0.481398  0.732469  0.481398\nvn  0.614804  0.493997  0.614804\nvn  -0.369882  -0.256345  -0.893014\nvn  -0.369102  0.255997  -0.893437\nvn  -0.0355067  0.995843  -0.0838772\nvn  0.260439  0.73186  0.629724\nvn  0.332584  0.49337  0.803725\nvn  -0.00284834  -0.257863  -0.966177\nvn  -0.00192311  0.254736  -0.967009\nvn  -0.000266114  0.995734  -0.0922702\nvn  2.39288e-05  0.731295  0.682061\nvn  2.43342e-09  0.492521  0.870301\nvn  0.379058  -0.3593  -0.852771\nvn  0.37711  0.149086  -0.914091\nvn  0.0275022  0.992081  -0.122551\nvn  -0.26101  0.726762  0.635367\nvn  -0.332485  0.492546  0.804271\nvn  0.663548  -0.410791  -0.625264\nvn  0.712664  0.0737216  -0.697621\nvn  0.0997268  0.987509  -0.121984\nvn  -0.48732  0.723754  0.488568\nvn  -0.615242  0.492602  0.615484\nvn  0.880028  -0.332908  -0.338709\nvn  0.917276  0.167113  -0.361493\nvn  0.113584  0.992365  -0.0480695\nvn  -0.63415  0.727508  0.261889\nvn  -0.804126  0.492634  0.332705\nvn  0.96669  -0.255738  0.0104537\nvn  0.967442  0.252962  0.00810329\nvn  0.0934365  0.995624  0.00128063\nvn  -0.682167  0.731196  -0.00034353\nvn  -0.870322  0.492483  -5.42436e-05\nvn  0.893014  -0.256345  0.369882\nvn  0.893437  0.255997  0.369102\nvn  0.0838768  0.995843  0.0355066\nvn  -0.629724  0.73186  -0.260439\nvn  -0.803725  0.49337  -0.332584\nvn  0.683407  -0.256729  0.683407\nvn  0.683531  0.256067  0.683531\nvn  0.0649249  0.995776  0.0649249\nvn  -0.481398  0.732469  -0.481398\nvn  -0.614804  0.493997  -0.614804\nvn  0.369882  -0.256345  0.893014\nvn  0.369102  0.255997  0.893437\nvn  0.0355067  0.995843  0.083877\nvn  -0.260439  0.73186  -0.629724\nvn  -0.332584  0.49337  -0.803725\nvn  3.83985e-09  -0.255752  0.966742\nvn  2.59359e-09  0.255443  0.966824\nvn  3.99081e-08  0.995754  0.092052\nvn  1.03862e-08  0.731305  -0.68205\nvn  -2.43342e-09  0.492521  -0.870301\nvn  -0.369882  -0.256345  0.893014\nvn  -0.369102  0.255996  0.893437\nvn  -0.0355068  0.995843  0.0838771\nvn  0.260439  0.73186  -0.629724\nvn  0.332584  0.49337  -0.803725\nvn  -0.683407  -0.256729  0.683407\nvn  -0.683531  0.256067  0.683531\nvn  -0.0649249  0.995776  0.064925\nvn  0.481398  0.732469  -0.481398\nvn  0.614804  0.493997  -0.614804\nvn  -0.893014  -0.256345  0.369882\nvn  -0.893437  0.255997  0.369102\nvn  -0.0838767  0.995843  0.0355066\nvn  0.629724  0.73186  -0.260439\nvn  0.803725  0.49337  -0.332584\nvn  0.915321  0.402725  4.83311e-09\nvn  0.941808  0.336151  -4.85769e-09\nvn  0.97869  0.205342  4.90003e-09\nvn  0.997804  -0.0662397  1.0073e-08\nvn  0.845438  0.403546  0.349835\nvn  0.869996  0.336859  0.360047\nvn  0.904193  0.205791  0.37428\nvn  0.921879  -0.0663697  0.381752\nvn  0.646802  0.404096  0.646802\nvn  0.665655  0.337351  0.665655\nvn  0.691923  0.20612  0.691923\nvn  0.705542  -0.0664796  0.705543\nvn  0.349835  0.403546  0.845438\nvn  0.360047  0.336859  0.869996\nvn  0.37428  0.205791  0.904193\nvn  0.381752  -0.0663697  0.921879\nvn  -1.31462e-09  0.402725  0.915321\nvn  9.76689e-10  0.336151  0.941808\nvn  -1.9304e-08  0.205342  0.97869\nvn  -2.15056e-08  -0.0662397  0.997804\nvn  -0.349835  0.403546  0.845438\nvn  -0.360047  0.336859  0.869996\nvn  -0.37428  0.205791  0.904193\nvn  -0.381752  -0.0663697  0.921879\nvn  -0.646802  0.404096  0.646802\nvn  -0.665655  0.337351  0.665655\nvn  -0.691923  0.20612  0.691923\nvn  -0.705543  -0.0664796  0.705543\nvn  -0.845438  0.403546  0.349835\nvn  -0.869996  0.336859  0.360047\nvn  -0.904193  0.205791  0.37428\nvn  -0.921879  -0.0663697  0.381752\nvn  -0.915321  0.402725  -2.41655e-09\nvn  -0.941808  0.336151  -1.21442e-08\nvn  -0.97869  0.205342  -3.18502e-08\nvn  -0.997804  -0.0662397  -2.26643e-08\nvn  -0.845438  0.403546  -0.349835\nvn  -0.869996  0.336859  -0.360047\nvn  -0.904193  0.205791  -0.37428\nvn  -0.921879  -0.0663697  -0.381752\nvn  -0.646802  0.404096  -0.646802\nvn  -0.665655  0.337351  -0.665655\nvn  -0.691923  0.20612  -0.691923\nvn  -0.705542  -0.0664796  -0.705543\nvn  -0.349835  0.403546  -0.845438\nvn  -0.360047  0.336859  -0.869996\nvn  -0.37428  0.205791  -0.904193\nvn  -0.381752  -0.0663697  -0.921879\nvn  1.31462e-09  0.402725  -0.915321\nvn  -9.76689e-10  0.336151  -0.941808\nvn  1.9304e-08  0.205342  -0.97869\nvn  2.15056e-08  -0.0662397  -0.997804\nvn  0.349835  0.403546  -0.845438\nvn  0.360047  0.336859  -0.869996\nvn  0.37428  0.205791  -0.904193\nvn  0.381752  -0.0663697  -0.921879\nvn  0.646802  0.404096  -0.646802\nvn  0.665655  0.337351  -0.665655\nvn  0.691923  0.20612  -0.691923\nvn  0.705543  -0.0664796  -0.705542\nvn  0.845438  0.403546  -0.349835\nvn  0.869996  0.336859  -0.360047\nvn  0.904193  0.205791  -0.37428\nvn  0.921879  -0.0663697  -0.381752\nvn  0.900182  -0.435513  -1.50883e-08\nvn  0.729611  -0.683863  -9.71212e-09\nvn  0.693951  -0.720022  -9.54282e-09\nvn  0.79395  -0.607984  2.6277e-08\nvn  0.831437  -0.43618  0.344179\nvn  0.673512  -0.684665  0.278594\nvn  0.640399  -0.720924  0.264874\nvn  0.732949  -0.608996  0.303166\nvn  0.636092  -0.436777  0.636092\nvn  0.514965  -0.685289  0.514965\nvn  0.489651  -0.721446  0.489651\nvn  0.560555  -0.609554  0.560555\nvn  0.344179  -0.43618  0.831437\nvn  0.278594  -0.684665  0.673512\nvn  0.264874  -0.720924  0.640399\nvn  0.303166  -0.608996  0.732949\nvn  1.18057e-08  -0.435513  0.900182\nvn  -4.75784e-09  -0.683863  0.729611\nvn  9.10217e-09  -0.720022  0.693951\nvn  -2.68996e-08  -0.607984  0.79395\nvn  -0.344179  -0.43618  0.831437\nvn  -0.278594  -0.684665  0.673512\nvn  -0.264874  -0.720924  0.640399\nvn  -0.303166  -0.608996  0.732949\nvn  -0.636092  -0.436777  0.636092\nvn  -0.514965  -0.685289  0.514965\nvn  -0.489651  -0.721446  0.489651\nvn  -0.560555  -0.609554  0.560555\nvn  -0.831437  -0.43618  0.344179\nvn  -0.673512  -0.684665  0.278595\nvn  -0.640399  -0.720924  0.264874\nvn  -0.732949  -0.608996  0.303166\nvn  -0.900182  -0.435513  -7.54414e-09\nvn  -0.729611  -0.683863  -7.28409e-09\nvn  -0.693951  -0.720022  4.77141e-09\nvn  -0.79395  -0.607983  -2.6277e-08\nvn  -0.831437  -0.43618  -0.344179\nvn  -0.673512  -0.684665  -0.278594\nvn  -0.640399  -0.720924  -0.264874\nvn  -0.732949  -0.608996  -0.303166\nvn  -0.636092  -0.436777  -0.636092\nvn  -0.514965  -0.685289  -0.514965\nvn  -0.489651  -0.721446  -0.489651\nvn  -0.560555  -0.609554  -0.560555\nvn  -0.344179  -0.43618  -0.831437\nvn  -0.278594  -0.684665  -0.673512\nvn  -0.264874  -0.720924  -0.640399\nvn  -0.303166  -0.608996  -0.732949\nvn  -1.18057e-08  -0.435513  -0.900182\nvn  4.75784e-09  -0.683863  -0.729611\nvn  -9.10217e-09  -0.720022  -0.693951\nvn  2.68996e-08  -0.607984  -0.79395\nvn  0.344179  -0.43618  -0.831437\nvn  0.278594  -0.684665  -0.673512\nvn  0.264874  -0.720924  -0.640399\nvn  0.303167  -0.608996  -0.732949\nvn  0.636092  -0.436777  -0.636092\nvn  0.514965  -0.685289  -0.514965\nvn  0.489651  -0.721446  -0.489651\nvn  0.560555  -0.609554  -0.560555\nvn  0.831437  -0.43618  -0.344179\nvn  0.673512  -0.684665  -0.278595\nvn  0.640399  -0.720924  -0.264874\nvn  0.732949  -0.608996  -0.303166\nvn  0.62386  -0.781536  3.04248e-08\nvn  0.177291  -0.984159  -3.28321e-09\nvn  0.0492072  -0.998789  1.48326e-09\nvn  1.94668e-11  -1  -7.78368e-10\nvn  0.576229  -0.781801  0.238217\nvn  0.163629  -0.984208  0.0675273\nvn  0.0454217  -0.998792  0.0187357\nvn  0.440416  -0.782348  0.440416\nvn  0.124903  -0.984276  0.124903\nvn  0.0346621  -0.998798  0.0346621\nvn  0.238217  -0.781801  0.576229\nvn  0.0675273  -0.984208  0.163629\nvn  0.0187357  -0.998792  0.0454217\nvn  -3.18434e-08  -0.781536  0.62386\nvn  3.33958e-09  -0.984159  0.177291\nvn  -1.80438e-09  -0.998789  0.0492072\nvn  -0.238216  -0.781801  0.576229\nvn  -0.0675273  -0.984208  0.163629\nvn  -0.0187357  -0.998792  0.0454217\nvn  -0.440416  -0.782348  0.440416\nvn  -0.124903  -0.984276  0.124903\nvn  -0.0346621  -0.998798  0.0346621\nvn  -0.576229  -0.781801  0.238217\nvn  -0.163629  -0.984208  0.0675273\nvn  -0.0454217  -0.998792  0.0187357\nvn  -0.62386  -0.781536  -3.17476e-08\nvn  -0.177291  -0.984159  3.13397e-09\nvn  -0.0492072  -0.998789  -1.33493e-09\nvn  -0.576229  -0.781801  -0.238217\nvn  -0.163629  -0.984208  -0.0675273\nvn  -0.0454217  -0.998792  -0.0187357\nvn  -0.440416  -0.782348  -0.440416\nvn  -0.124903  -0.984276  -0.124903\nvn  -0.0346621  -0.998798  -0.0346621\nvn  -0.238217  -0.781801  -0.576229\nvn  -0.0675273  -0.984208  -0.163629\nvn  -0.0187357  -0.998792  -0.0454217\nvn  3.18434e-08  -0.781536  -0.62386\nvn  -3.28168e-09  -0.984159  -0.177291\nvn  1.46144e-09  -0.998789  -0.0492072\nvn  0.238217  -0.781801  -0.576229\nvn  0.0675273  -0.984208  -0.163629\nvn  0.0187357  -0.998792  -0.0454217\nvn  0.440416  -0.782348  -0.440416\nvn  0.124903  -0.984276  -0.124903\nvn  0.0346621  -0.998798  -0.0346621\nvn  0.576229  -0.781801  -0.238217\nvn  0.163629  -0.984208  -0.0675273\nvn  0.0454217  -0.998792  -0.0187357\nvn  0.00778619  -0.99997  -0.000215809\nvn  0.0391385  -0.999233  -0.000988567\nvn  0.179511  -0.983746  -0.00436856\nvn  0.6123  -0.790556  -0.0104598\nvn  0.986152  -0.165707  -0.00666949\nvn  0.00703893  -0.812495  0.582926\nvn  0.0361273  -0.837257  0.545614\nvn  0.161845  -0.810421  0.563048\nvn  0.482365  -0.595148  0.642746\nvn  0.73872  -0.114593  0.664199\nvn  -0.00190867  0.162121  0.986769\nvn  0.0027616  0.0171073  0.99985\nvn  0.0105326  0.0733989  0.997247\nvn  -0.0660406  0.130069  0.989303\nvn  -0.0944272  0.0165946  0.995393\nvn  -0.009203  0.871509  0.490293\nvn  -0.0486064  0.840609  0.539457\nvn  -0.223298  0.802881  0.552739\nvn  -0.596365  0.559971  0.575135\nvn  -0.803337  0.0682361  0.591602\nvn  -0.0105609  0.999944  0.000103364\nvn  -0.0587986  0.99827  0.000709759\nvn  -0.28071  0.959787  0.00326876\nvn  -0.749723  0.661738  0.0042684\nvn  -0.997351  0.0727144  0.00205923\nvn  -0.00879197  0.871493  -0.49033\nvn  -0.0464937  0.841178  -0.538756\nvn  -0.217909  0.806807  -0.549161\nvn  -0.597291  0.560026  -0.574121\nvn  -0.804  0.0629127  -0.591291\nvn  -0.00180555  0.161691  -0.98684\nvn  0.00203087  0.014555  -0.999892\nvn  0.00921499  0.0600698  -0.998152\nvn  -0.0593333  0.113865  -0.991723\nvn  -0.0868992  0.0122903  -0.996141\nvn  0.00641779  -0.812379  -0.583094\nvn  0.0337833  -0.837512  -0.545373\nvn  0.157112  -0.811947  -0.56219\nvn  0.484407  -0.589365  -0.646528\nvn  0.73887  -0.10132  -0.666187\nvn  0.946512  0.32265  -0.0033571\nvn  0.82583  0.56387  -0.00745213\nvn  0.650011  0.759893  -0.00693681\nvn  0.532429  0.846458  -0.00524544\nvn  0.725608  0.259351  0.637362\nvn  0.645945  0.461988  0.607719\nvn  0.531614  0.63666  0.558615\nvn  0.424964  0.681717  0.59554\nvn  -0.0495616  -0.019755  0.998576\nvn  -0.0378162  -0.0356243  0.99865\nvn  -0.0379139  -0.0365122  0.998614\nvn  -0.168854  -0.297946  0.93953\nvn  -0.742342  -0.299166  0.599523\nvn  -0.619602  -0.529406  0.579503\nvn  -0.483708  -0.685761  0.543837\nvn  -0.445293  -0.794355  0.413176\nvn  -0.926513  -0.376257  0.00199587\nvn  -0.75392  -0.656952  0.00431723\nvn  -0.566224  -0.824244  0.00346105\nvn  -0.481804  -0.876277  0.00185047\nvn  -0.744675  -0.294424  -0.598977\nvn  -0.621949  -0.528114  -0.578165\nvn  -0.481171  -0.68834  -0.542828\nvn  -0.438055  -0.797035  -0.415744\nvn  -0.0443368  -0.0170558  -0.998871\nvn  -0.0261761  -0.0281665  -0.99926\nvn  -0.0252939  -0.0283323  -0.999278\nvn  -0.157482  -0.289392  -0.944167\nvn  0.728244  0.25241  -0.637142\nvn  0.647055  0.459725  -0.608254\nvn  0.522994  0.640657  -0.562171\nvn  0.409978  0.682857  -0.604669\nvn  -0.230787  0.972982  -0.00652338\nvn  -0.548936  0.835863  -0.00151111\nvn  -0.875671  0.482807  0.00989278\nvn  -0.877554  0.479097  0.0190923\nvn  -0.69619  0.717439  0.024497\nvn  -0.152878  0.687211  0.71019\nvn  -0.316721  0.63775  0.702113\nvn  -0.601067  0.471452  0.64533\nvn  -0.635889  0.44609  0.6298\nvn  -0.435746  0.601008  0.670011\nvn  0.111112  -0.0850694  0.99016\nvn  0.22331  0.00654036  0.974726\nvn  0.190097  0.154964  0.969458\nvn  0.00527077  0.189482  0.98187\nvn  -0.0117518  0.246688  0.969024\nvn  0.343906  -0.722796  0.599412\nvn  0.572489  -0.567656  0.591627\nvn  0.787436  -0.256459  0.560512\nvn  0.647097  -0.306374  0.698141\nvn  0.427528  -0.499343  0.753576\nvn  0.410926  -0.911668  0.00128446\nvn  0.67152  -0.740986  -0.000899122\nvn  0.922026  -0.38706  -0.00725269\nvn  0.84691  -0.531556  -0.0138542\nvn  0.535925  -0.8442  -0.0105045\nvn  0.341188  -0.722822  -0.600931\nvn  0.578664  -0.561139  -0.591838\nvn  0.784869  -0.25102  -0.566542\nvn  0.642681  -0.302257  -0.70399\nvn  0.418589  -0.500042  -0.758117\nvn  0.115806  -0.0791394  -0.990114\nvn  0.232811  0.0125652  -0.972441\nvn  0.206662  0.153601  -0.96628\nvn  0.0244996  0.161443  -0.986578\nvn  0.00338193  0.211115  -0.977455\nvn  -0.134912  0.687491  -0.713551\nvn  -0.31954  0.633073  -0.705062\nvn  -0.603902  0.461442  -0.649903\nvn  -0.631816  0.437169  -0.640072\nvn  -0.424306  0.612706  -0.66675\nvn  -0.4258  0.904753  0.0108049\nvn  0.0220472  0.999756  0.00162273\nvn  0.999599  0.0258705  0.0115556\nvn  0.709585  -0.704553  0.00967183\nvn  -0.259858  0.791936  0.552549\nvn  0.00953916  0.99972  -0.0216718\nvn  0.410156  0.332912  -0.849083\nvn  0.541523  -0.54862  -0.637\nvn  0.0463104  0.455224  0.889172\nvn  -0.0106883  0.988794  0.148901\nvn  -0.0443756  0.682947  -0.729118\nvn  0.122825  0.00923214  -0.992385\nvn  0.481839  -0.180439  0.85748\nvn  0.455272  0.736752  0.499925\nvn  -0.220542  0.907193  -0.358276\nvn  -0.23592  0.657249  -0.715797\nvn  0.728092  -0.685302  -0.0155853\nvn  0.888739  0.45811  -0.0166791\nvn  -0.260097  0.965582  0.000800195\nvn  -0.371612  0.928378  -0.00441745\nvn  0.480166  -0.17836  -0.858853\nvn  0.488103  0.716801  -0.497947\nvn  -0.222004  0.905399  0.361893\nvn  -0.235405  0.66318  0.710477\nvn  0.0587203  0.437704  -0.8972\nvn  0.00132612  0.986459  -0.164003\nvn  -0.0441901  0.681677  0.730317\nvn  0.138801  -0.0341896  0.98973\nvn  -0.25889  0.797206  -0.54538\nvn  0.0122703  0.999739  0.0192865\nvn  0.39863  0.35489  0.845663\nvn  0.537564  -0.5814  0.610737\nvn  -7.79193e-10  1  6.50944e-09\nvn  0.82454  0.565804  1.72913e-05\nvn  0.917701  -0.397272  3.35502e-05\nvn  0.935269  -0.353939  0.000112842\nvn  0.780712  0.624891  7.51916e-05\nvn  0.762641  0.565035  0.314825\nvn  0.847982  -0.397998  0.350034\nvn  0.864141  -0.355261  0.356441\nvn  0.720991  0.625625  0.297933\nvn  0.583357  0.565165  0.583338\nvn  0.648485  -0.398726  0.648448\nvn  0.660872  -0.355894  0.660748\nvn  0.551862  0.62529  0.55178\nvn  0.314824  0.565051  0.762629\nvn  0.350045  -0.397976  0.847988\nvn  0.356474  -0.3552  0.864153\nvn  0.297983  0.625515  0.721067\nvn  -1.7299e-05  0.565804  0.82454\nvn  -3.35448e-05  -0.397272  0.917701\nvn  -0.000112839  -0.353939  0.935269\nvn  -7.51869e-05  0.624891  0.780712\nvn  -0.314825  0.565035  0.762641\nvn  -0.350034  -0.397998  0.847982\nvn  -0.356441  -0.355261  0.864141\nvn  -0.297933  0.625625  0.720991\nvn  -0.583338  0.565165  0.583357\nvn  -0.648448  -0.398726  0.648485\nvn  -0.660748  -0.355894  0.660872\nvn  -0.55178  0.62529  0.551862\nvn  -0.762629  0.565051  0.314824\nvn  -0.847988  -0.397976  0.350045\nvn  -0.864153  -0.3552  0.356474\nvn  -0.721067  0.625515  0.297983\nvn  -0.82454  0.565804  -1.72877e-05\nvn  -0.917701  -0.397272  -3.35262e-05\nvn  -0.935269  -0.353939  -0.000112839\nvn  -0.780712  0.624891  -7.51882e-05\nvn  -0.76264  0.565035  -0.314825\nvn  -0.847982  -0.397998  -0.350034\nvn  -0.864141  -0.355261  -0.356441\nvn  -0.720991  0.625625  -0.297933\nvn  -0.583357  0.565165  -0.583338\nvn  -0.648485  -0.398726  -0.648448\nvn  -0.660872  -0.355894  -0.660748\nvn  -0.551862  0.62529  -0.55178\nvn  -0.314824  0.565051  -0.762629\nvn  -0.350045  -0.397976  -0.847988\nvn  -0.356474  -0.3552  -0.864153\nvn  -0.297983  0.625515  -0.721067\nvn  1.72918e-05  0.565804  -0.82454\nvn  3.35344e-05  -0.397272  -0.917701\nvn  0.000112839  -0.353939  -0.935269\nvn  7.51869e-05  0.624891  -0.780712\nvn  0.314825  0.565035  -0.762641\nvn  0.350034  -0.397998  -0.847982\nvn  0.356441  -0.355261  -0.864141\nvn  0.297933  0.625625  -0.720991\nvn  0.583338  0.565165  -0.583357\nvn  0.648448  -0.398726  -0.648485\nvn  0.660748  -0.355894  -0.660872\nvn  0.55178  0.62529  -0.551862\nvn  0.762629  0.565051  -0.314824\nvn  0.847988  -0.397976  -0.350045\nvn  0.864153  -0.3552  -0.356474\nvn  0.721067  0.625515  -0.297983\nvn  0.236584  0.971611  8.31862e-09\nvn  0.173084  0.984907  -1.18677e-09\nvn  0.379703  0.925108  2.44118e-09\nvn  0.526673  0.850068  2.66504e-09\nvn  0.217978  0.971775  0.0902162\nvn  0.15959  0.984977  0.0659615\nvn  0.350498  0.925312  0.14474\nvn  0.48559  0.850653  0.201474\nvn  0.166631  0.971838  0.166631\nvn  0.121908  0.985026  0.121908\nvn  0.267668  0.925585  0.267668\nvn  0.371315  0.851029  0.371315\nvn  0.0902162  0.971775  0.217978\nvn  0.0659615  0.984977  0.15959\nvn  0.14474  0.925312  0.350498\nvn  0.201474  0.850653  0.48559\nvn  -8.2649e-09  0.971611  0.236584\nvn  1.37744e-09  0.984907  0.173084\nvn  2.79781e-10  0.925108  0.379703\nvn  2.55497e-09  0.850068  0.526673\nvn  -0.0902162  0.971775  0.217978\nvn  -0.0659615  0.984977  0.15959\nvn  -0.14474  0.925312  0.350498\nvn  -0.201474  0.850653  0.48559\nvn  -0.166631  0.971838  0.166631\nvn  -0.121908  0.985026  0.121908\nvn  -0.267668  0.925585  0.267668\nvn  -0.371315  0.851029  0.371315\nvn  -0.217978  0.971775  0.0902162\nvn  -0.15959  0.984977  0.0659615\nvn  -0.350498  0.925312  0.14474\nvn  -0.48559  0.850653  0.201474\nvn  -0.236583  0.971611  -6.23897e-09\nvn  -0.173084  0.984907  2.37354e-09\nvn  -0.379703  0.925108  -2.44118e-09\nvn  -0.526673  0.850068  0\nvn  -0.217978  0.971775  -0.0902162\nvn  -0.15959  0.984977  -0.0659615\nvn  -0.350498  0.925312  -0.14474\nvn  -0.48559  0.850653  -0.201474\nvn  -0.166631  0.971838  -0.166631\nvn  -0.121908  0.985026  -0.121908\nvn  -0.267668  0.925585  -0.267668\nvn  -0.371315  0.851029  -0.371315\nvn  -0.0902162  0.971775  -0.217978\nvn  -0.0659615  0.984977  -0.15959\nvn  -0.14474  0.925312  -0.350498\nvn  -0.201474  0.850653  -0.485589\nvn  6.16189e-09  0.971611  -0.236584\nvn  -1.37744e-09  0.984907  -0.173084\nvn  -2.79781e-10  0.925108  -0.379703\nvn  -2.55497e-09  0.850068  -0.526673\nvn  0.0902162  0.971775  -0.217978\nvn  0.0659615  0.984977  -0.15959\nvn  0.14474  0.925312  -0.350498\nvn  0.201474  0.850653  -0.48559\nvn  0.166631  0.971838  -0.166631\nvn  0.121908  0.985026  -0.121908\nvn  0.267668  0.925585  -0.267668\nvn  0.371315  0.851029  -0.371315\nvn  0.217978  0.971775  -0.0902162\nvn  0.15959  0.984977  -0.0659615\nvn  0.350498  0.925312  -0.14474\nvn  0.48559  0.850653  -0.201474\n\nf  7  6  1\nf  1  2  7\nf  8  7  2\nf  2  3  8\nf  9  8  3\nf  3  4  9\nf  10  9  4\nf  4  5  10\nf  12  11  6\nf  6  7  12\nf  13  12  7\nf  7  8  13\nf  14  13  8\nf  8  9  14\nf  15  14  9\nf  9  10  15\nf  17  16  11\nf  11  12  17\nf  18  17  12\nf  12  13  18\nf  19  18  13\nf  13  14  19\nf  20  19  14\nf  14  15  20\nf  22  21  16\nf  16  17  22\nf  23  22  17\nf  17  18  23\nf  24  23  18\nf  18  19  24\nf  25  24  19\nf  19  20  25\nf  27  26  21\nf  21  22  27\nf  28  27  22\nf  22  23  28\nf  29  28  23\nf  23  24  29\nf  30  29  24\nf  24  25  30\nf  32  31  26\nf  26  27  32\nf  33  32  27\nf  27  28  33\nf  34  33  28\nf  28  29  34\nf  35  34  29\nf  29  30  35\nf  37  36  31\nf  31  32  37\nf  38  37  32\nf  32  33  38\nf  39  38  33\nf  33  34  39\nf  40  39  34\nf  34  35  40\nf  42  41  36\nf  36  37  42\nf  43  42  37\nf  37  38  43\nf  44  43  38\nf  38  39  44\nf  45  44  39\nf  39  40  45\nf  47  46  41\nf  41  42  47\nf  48  47  42\nf  42  43  48\nf  49  48  43\nf  43  44  49\nf  50  49  44\nf  44  45  50\nf  52  51  46\nf  46  47  52\nf  53  52  47\nf  47  48  53\nf  54  53  48\nf  48  49  54\nf  55  54  49\nf  49  50  55\nf  57  56  51\nf  51  52  57\nf  58  57  52\nf  52  53  58\nf  59  58  53\nf  53  54  59\nf  60  59  54\nf  54  55  60\nf  62  61  56\nf  56  57  62\nf  63  62  57\nf  57  58  63\nf  64  63  58\nf  58  59  64\nf  65  64  59\nf  59  60  65\nf  67  66  61\nf  61  62  67\nf  68  67  62\nf  62  63  68\nf  69  68  63\nf  63  64  69\nf  70  69  64\nf  64  65  70\nf  72  71  66\nf  66  67  72\nf  73  72  67\nf  67  68  73\nf  74  73  68\nf  68  69  74\nf  75  74  69\nf  69  70  75\nf  77  76  71\nf  71  72  77\nf  78  77  72\nf  72  73  78\nf  79  78  73\nf  73  74  79\nf  80  79  74\nf  74  75  80\nf  2  1  76\nf  76  77  2\nf  3  2  77\nf  77  78  3\nf  4  3  78\nf  78  79  4\nf  5  4  79\nf  79  80  5\nf  85  10  5\nf  5  81  85\nf  86  85  81\nf  81  82  86\nf  87  86  82\nf  82  83  87\nf  88  87  83\nf  83  84  88\nf  89  15  10\nf  10  85  89\nf  90  89  85\nf  85  86  90\nf  91  90  86\nf  86  87  91\nf  92  91  87\nf  87  88  92\nf  93  20  15\nf  15  89  93\nf  94  93  89\nf  89  90  94\nf  95  94  90\nf  90  91  95\nf  96  95  91\nf  91  92  96\nf  97  25  20\nf  20  93  97\nf  98  97  93\nf  93  94  98\nf  99  98  94\nf  94  95  99\nf  100  99  95\nf  95  96  100\nf  101  30  25\nf  25  97  101\nf  102  101  97\nf  97  98  102\nf  103  102  98\nf  98  99  103\nf  104  103  99\nf  99  100  104\nf  105  35  30\nf  30  101  105\nf  106  105  101\nf  101  102  106\nf  107  106  102\nf  102  103  107\nf  108  107  103\nf  103  104  108\nf  109  40  35\nf  35  105  109\nf  110  109  105\nf  105  106  110\nf  111  110  106\nf  106  107  111\nf  112  111  107\nf  107  108  112\nf  113  45  40\nf  40  109  113\nf  114  113  109\nf  109  110  114\nf  115  114  110\nf  110  111  115\nf  116  115  111\nf  111  112  116\nf  117  50  45\nf  45  113  117\nf  118  117  113\nf  113  114  118\nf  119  118  114\nf  114  115  119\nf  120  119  115\nf  115  116  120\nf  121  55  50\nf  50  117  121\nf  122  121  117\nf  117  118  122\nf  123  122  118\nf  118  119  123\nf  124  123  119\nf  119  120  124\nf  125  60  55\nf  55  121  125\nf  126  125  121\nf  121  122  126\nf  127  126  122\nf  122  123  127\nf  128  127  123\nf  123  124  128\nf  129  65  60\nf  60  125  129\nf  130  129  125\nf  125  126  130\nf  131  130  126\nf  126  127  131\nf  132  131  127\nf  127  128  132\nf  133  70  65\nf  65  129  133\nf  134  133  129\nf  129  130  134\nf  135  134  130\nf  130  131  135\nf  136  135  131\nf  131  132  136\nf  137  75  70\nf  70  133  137\nf  138  137  133\nf  133  134  138\nf  139  138  134\nf  134  135  139\nf  140  139  135\nf  135  136  140\nf  141  80  75\nf  75  137  141\nf  142  141  137\nf  137  138  142\nf  143  142  138\nf  138  139  143\nf  144  143  139\nf  139  140  144\nf  81  5  80\nf  80  141  81\nf  82  81  141\nf  141  142  82\nf  83  82  142\nf  142  143  83\nf  84  83  143\nf  143  144  84\nf  149  88  84\nf  84  145  149\nf  150  149  145\nf  145  146  150\nf  151  150  146\nf  146  147  151\nf  152  151  147\nf  147  148  152\nf  153  92  88\nf  88  149  153\nf  154  153  149\nf  149  150  154\nf  155  154  150\nf  150  151  155\nf  156  155  151\nf  151  152  156\nf  157  96  92\nf  92  153  157\nf  158  157  153\nf  153  154  158\nf  159  158  154\nf  154  155  159\nf  160  159  155\nf  155  156  160\nf  161  100  96\nf  96  157  161\nf  162  161  157\nf  157  158  162\nf  163  162  158\nf  158  159  163\nf  164  163  159\nf  159  160  164\nf  165  104  100\nf  100  161  165\nf  166  165  161\nf  161  162  166\nf  167  166  162\nf  162  163  167\nf  168  167  163\nf  163  164  168\nf  169  108  104\nf  104  165  169\nf  170  169  165\nf  165  166  170\nf  171  170  166\nf  166  167  171\nf  172  171  167\nf  167  168  172\nf  173  112  108\nf  108  169  173\nf  174  173  169\nf  169  170  174\nf  175  174  170\nf  170  171  175\nf  176  175  171\nf  171  172  176\nf  177  116  112\nf  112  173  177\nf  178  177  173\nf  173  174  178\nf  179  178  174\nf  174  175  179\nf  180  179  175\nf  175  176  180\nf  181  120  116\nf  116  177  181\nf  182  181  177\nf  177  178  182\nf  183  182  178\nf  178  179  183\nf  184  183  179\nf  179  180  184\nf  185  124  120\nf  120  181  185\nf  186  185  181\nf  181  182  186\nf  187  186  182\nf  182  183  187\nf  188  187  183\nf  183  184  188\nf  189  128  124\nf  124  185  189\nf  190  189  185\nf  185  186  190\nf  191  190  186\nf  186  187  191\nf  192  191  187\nf  187  188  192\nf  193  132  128\nf  128  189  193\nf  194  193  189\nf  189  190  194\nf  195  194  190\nf  190  191  195\nf  196  195  191\nf  191  192  196\nf  197  136  132\nf  132  193  197\nf  198  197  193\nf  193  194  198\nf  199  198  194\nf  194  195  199\nf  200  199  195\nf  195  196  200\nf  201  140  136\nf  136  197  201\nf  202  201  197\nf  197  198  202\nf  203  202  198\nf  198  199  203\nf  204  203  199\nf  199  200  204\nf  205  144  140\nf  140  201  205\nf  206  205  201\nf  201  202  206\nf  207  206  202\nf  202  203  207\nf  208  207  203\nf  203  204  208\nf  145  84  144\nf  144  205  145\nf  146  145  205\nf  205  206  146\nf  147  146  206\nf  206  207  147\nf  148  147  207\nf  207  208  148\nf  213  152  148\nf  148  209  213\nf  214  213  209\nf  209  210  214\nf  215  214  210\nf  210  211  215\nf  212  215  211\nf  211  212  212\nf  216  156  152\nf  152  213  216\nf  217  216  213\nf  213  214  217\nf  218  217  214\nf  214  215  218\nf  212  218  215\nf  215  212  212\nf  219  160  156\nf  156  216  219\nf  220  219  216\nf  216  217  220\nf  221  220  217\nf  217  218  221\nf  212  221  218\nf  218  212  212\nf  222  164  160\nf  160  219  222\nf  223  222  219\nf  219  220  223\nf  224  223  220\nf  220  221  224\nf  212  224  221\nf  221  212  212\nf  225  168  164\nf  164  222  225\nf  226  225  222\nf  222  223  226\nf  227  226  223\nf  223  224  227\nf  212  227  224\nf  224  212  212\nf  228  172  168\nf  168  225  228\nf  229  228  225\nf  225  226  229\nf  230  229  226\nf  226  227  230\nf  212  230  227\nf  227  212  212\nf  231  176  172\nf  172  228  231\nf  232  231  228\nf  228  229  232\nf  233  232  229\nf  229  230  233\nf  212  233  230\nf  230  212  212\nf  234  180  176\nf  176  231  234\nf  235  234  231\nf  231  232  235\nf  236  235  232\nf  232  233  236\nf  212  236  233\nf  233  212  212\nf  237  184  180\nf  180  234  237\nf  238  237  234\nf  234  235  238\nf  239  238  235\nf  235  236  239\nf  212  239  236\nf  236  212  212\nf  240  188  184\nf  184  237  240\nf  241  240  237\nf  237  238  241\nf  242  241  238\nf  238  239  242\nf  212  242  239\nf  239  212  212\nf  243  192  188\nf  188  240  243\nf  244  243  240\nf  240  241  244\nf  245  244  241\nf  241  242  245\nf  212  245  242\nf  242  212  212\nf  246  196  192\nf  192  243  246\nf  247  246  243\nf  243  244  247\nf  248  247  244\nf  244  245  248\nf  212  248  245\nf  245  212  212\nf  249  200  196\nf  196  246  249\nf  250  249  246\nf  246  247  250\nf  251  250  247\nf  247  248  251\nf  212  251  248\nf  248  212  212\nf  252  204  200\nf  200  249  252\nf  253  252  249\nf  249  250  253\nf  254  253  250\nf  250  251  254\nf  212  254  251\nf  251  212  212\nf  255  208  204\nf  204  252  255\nf  256  255  252\nf  252  253  256\nf  257  256  253\nf  253  254  257\nf  212  257  254\nf  254  212  212\nf  209  148  208\nf  208  255  209\nf  210  209  255\nf  255  256  210\nf  211  210  256\nf  256  257  211\nf  212  211  257\nf  257  212  212\nf  264  263  258\nf  258  259  264\nf  265  264  259\nf  259  260  265\nf  266  265  260\nf  260  261  266\nf  267  266  261\nf  261  262  267\nf  269  268  263\nf  263  264  269\nf  270  269  264\nf  264  265  270\nf  271  270  265\nf  265  266  271\nf  272  271  266\nf  266  267  272\nf  274  273  268\nf  268  269  274\nf  275  274  269\nf  269  270  275\nf  276  275  270\nf  270  271  276\nf  277  276  271\nf  271  272  277\nf  279  278  273\nf  273  274  279\nf  280  279  274\nf  274  275  280\nf  281  280  275\nf  275  276  281\nf  282  281  276\nf  276  277  282\nf  284  283  278\nf  278  279  284\nf  285  284  279\nf  279  280  285\nf  286  285  280\nf  280  281  286\nf  287  286  281\nf  281  282  287\nf  289  288  283\nf  283  284  289\nf  290  289  284\nf  284  285  290\nf  291  290  285\nf  285  286  291\nf  292  291  286\nf  286  287  292\nf  294  293  288\nf  288  289  294\nf  295  294  289\nf  289  290  295\nf  296  295  290\nf  290  291  296\nf  297  296  291\nf  291  292  297\nf  259  258  293\nf  293  294  259\nf  260  259  294\nf  294  295  260\nf  261  260  295\nf  295  296  261\nf  262  261  296\nf  296  297  262\nf  302  267  262\nf  262  298  302\nf  303  302  298\nf  298  299  303\nf  304  303  299\nf  299  300  304\nf  305  304  300\nf  300  301  305\nf  306  272  267\nf  267  302  306\nf  307  306  302\nf  302  303  307\nf  308  307  303\nf  303  304  308\nf  309  308  304\nf  304  305  309\nf  310  277  272\nf  272  306  310\nf  311  310  306\nf  306  307  311\nf  312  311  307\nf  307  308  312\nf  313  312  308\nf  308  309  313\nf  314  282  277\nf  277  310  314\nf  315  314  310\nf  310  311  315\nf  316  315  311\nf  311  312  316\nf  317  316  312\nf  312  313  317\nf  318  287  282\nf  282  314  318\nf  319  318  314\nf  314  315  319\nf  320  319  315\nf  315  316  320\nf  321  320  316\nf  316  317  321\nf  322  292  287\nf  287  318  322\nf  323  322  318\nf  318  319  323\nf  324  323  319\nf  319  320  324\nf  325  324  320\nf  320  321  325\nf  326  297  292\nf  292  322  326\nf  327  326  322\nf  322  323  327\nf  328  327  323\nf  323  324  328\nf  329  328  324\nf  324  325  329\nf  298  262  297\nf  297  326  298\nf  299  298  326\nf  326  327  299\nf  300  299  327\nf  327  328  300\nf  301  300  328\nf  328  329  301\nf  336  335  330\nf  330  331  336\nf  337  336  331\nf  331  332  337\nf  338  337  332\nf  332  333  338\nf  339  338  333\nf  333  334  339\nf  341  340  335\nf  335  336  341\nf  342  341  336\nf  336  337  342\nf  343  342  337\nf  337  338  343\nf  344  343  338\nf  338  339  344\nf  346  345  340\nf  340  341  346\nf  347  346  341\nf  341  342  347\nf  348  347  342\nf  342  343  348\nf  349  348  343\nf  343  344  349\nf  351  350  345\nf  345  346  351\nf  352  351  346\nf  346  347  352\nf  353  352  347\nf  347  348  353\nf  354  353  348\nf  348  349  354\nf  356  355  350\nf  350  351  356\nf  357  356  351\nf  351  352  357\nf  358  357  352\nf  352  353  358\nf  359  358  353\nf  353  354  359\nf  361  360  355\nf  355  356  361\nf  362  361  356\nf  356  357  362\nf  363  362  357\nf  357  358  363\nf  364  363  358\nf  358  359  364\nf  366  365  360\nf  360  361  366\nf  367  366  361\nf  361  362  367\nf  368  367  362\nf  362  363  368\nf  369  368  363\nf  363  364  369\nf  331  330  365\nf  365  366  331\nf  332  331  366\nf  366  367  332\nf  333  332  367\nf  367  368  333\nf  334  333  368\nf  368  369  334\nf  374  339  334\nf  334  370  374\nf  375  374  370\nf  370  371  375\nf  376  375  371\nf  371  372  376\nf  377  376  372\nf  372  373  377\nf  378  344  339\nf  339  374  378\nf  379  378  374\nf  374  375  379\nf  380  379  375\nf  375  376  380\nf  381  380  376\nf  376  377  381\nf  382  349  344\nf  344  378  382\nf  383  382  378\nf  378  379  383\nf  384  383  379\nf  379  380  384\nf  385  384  380\nf  380  381  385\nf  386  354  349\nf  349  382  386\nf  387  386  382\nf  382  383  387\nf  388  387  383\nf  383  384  388\nf  389  388  384\nf  384  385  389\nf  390  359  354\nf  354  386  390\nf  391  390  386\nf  386  387  391\nf  392  391  387\nf  387  388  392\nf  393  392  388\nf  388  389  393\nf  394  364  359\nf  359  390  394\nf  395  394  390\nf  390  391  395\nf  396  395  391\nf  391  392  396\nf  397  396  392\nf  392  393  397\nf  398  369  364\nf  364  394  398\nf  399  398  394\nf  394  395  399\nf  400  399  395\nf  395  396  400\nf  401  400  396\nf  396  397  401\nf  370  334  369\nf  369  398  370\nf  371  370  398\nf  398  399  371\nf  372  371  399\nf  399  400  372\nf  373  372  400\nf  400  401  373\nf  407  402  402\nf  402  403  407\nf  408  407  403\nf  403  404  408\nf  409  408  404\nf  404  405  409\nf  410  409  405\nf  405  406  410\nf  411  402  402\nf  402  407  411\nf  412  411  407\nf  407  408  412\nf  413  412  408\nf  408  409  413\nf  414  413  409\nf  409  410  414\nf  415  402  402\nf  402  411  415\nf  416  415  411\nf  411  412  416\nf  417  416  412\nf  412  413  417\nf  418  417  413\nf  413  414  418\nf  419  402  402\nf  402  415  419\nf  420  419  415\nf  415  416  420\nf  421  420  416\nf  416  417  421\nf  422  421  417\nf  417  418  422\nf  423  402  402\nf  402  419  423\nf  424  423  419\nf  419  420  424\nf  425  424  420\nf  420  421  425\nf  426  425  421\nf  421  422  426\nf  427  402  402\nf  402  423  427\nf  428  427  423\nf  423  424  428\nf  429  428  424\nf  424  425  429\nf  430  429  425\nf  425  426  430\nf  431  402  402\nf  402  427  431\nf  432  431  427\nf  427  428  432\nf  433  432  428\nf  428  429  433\nf  434  433  429\nf  429  430  434\nf  435  402  402\nf  402  431  435\nf  436  435  431\nf  431  432  436\nf  437  436  432\nf  432  433  437\nf  438  437  433\nf  433  434  438\nf  439  402  402\nf  402  435  439\nf  440  439  435\nf  435  436  440\nf  441  440  436\nf  436  437  441\nf  442  441  437\nf  437  438  442\nf  443  402  402\nf  402  439  443\nf  444  443  439\nf  439  440  444\nf  445  444  440\nf  440  441  445\nf  446  445  441\nf  441  442  446\nf  447  402  402\nf  402  443  447\nf  448  447  443\nf  443  444  448\nf  449  448  444\nf  444  445  449\nf  450  449  445\nf  445  446  450\nf  451  402  402\nf  402  447  451\nf  452  451  447\nf  447  448  452\nf  453  452  448\nf  448  449  453\nf  454  453  449\nf  449  450  454\nf  455  402  402\nf  402  451  455\nf  456  455  451\nf  451  452  456\nf  457  456  452\nf  452  453  457\nf  458  457  453\nf  453  454  458\nf  459  402  402\nf  402  455  459\nf  460  459  455\nf  455  456  460\nf  461  460  456\nf  456  457  461\nf  462  461  457\nf  457  458  462\nf  463  402  402\nf  402  459  463\nf  464  463  459\nf  459  460  464\nf  465  464  460\nf  460  461  465\nf  466  465  461\nf  461  462  466\nf  403  402  402\nf  402  463  403\nf  404  403  463\nf  463  464  404\nf  405  404  464\nf  464  465  405\nf  406  405  465\nf  465  466  406\nf  471  410  406\nf  406  467  471\nf  472  471  467\nf  467  468  472\nf  473  472  468\nf  468  469  473\nf  474  473  469\nf  469  470  474\nf  475  414  410\nf  410  471  475\nf  476  475  471\nf  471  472  476\nf  477  476  472\nf  472  473  477\nf  478  477  473\nf  473  474  478\nf  479  418  414\nf  414  475  479\nf  480  479  475\nf  475  476  480\nf  481  480  476\nf  476  477  481\nf  482  481  477\nf  477  478  482\nf  483  422  418\nf  418  479  483\nf  484  483  479\nf  479  480  484\nf  485  484  480\nf  480  481  485\nf  486  485  481\nf  481  482  486\nf  487  426  422\nf  422  483  487\nf  488  487  483\nf  483  484  488\nf  489  488  484\nf  484  485  489\nf  490  489  485\nf  485  486  490\nf  491  430  426\nf  426  487  491\nf  492  491  487\nf  487  488  492\nf  493  492  488\nf  488  489  493\nf  494  493  489\nf  489  490  494\nf  495  434  430\nf  430  491  495\nf  496  495  491\nf  491  492  496\nf  497  496  492\nf  492  493  497\nf  498  497  493\nf  493  494  498\nf  499  438  434\nf  434  495  499\nf  500  499  495\nf  495  496  500\nf  501  500  496\nf  496  497  501\nf  502  501  497\nf  497  498  502\nf  503  442  438\nf  438  499  503\nf  504  503  499\nf  499  500  504\nf  505  504  500\nf  500  501  505\nf  506  505  501\nf  501  502  506\nf  507  446  442\nf  442  503  507\nf  508  507  503\nf  503  504  508\nf  509  508  504\nf  504  505  509\nf  510  509  505\nf  505  506  510\nf  511  450  446\nf  446  507  511\nf  512  511  507\nf  507  508  512\nf  513  512  508\nf  508  509  513\nf  514  513  509\nf  509  510  514\nf  515  454  450\nf  450  511  515\nf  516  515  511\nf  511  512  516\nf  517  516  512\nf  512  513  517\nf  518  517  513\nf  513  514  518\nf  519  458  454\nf  454  515  519\nf  520  519  515\nf  515  516  520\nf  521  520  516\nf  516  517  521\nf  522  521  517\nf  517  518  522\nf  523  462  458\nf  458  519  523\nf  524  523  519\nf  519  520  524\nf  525  524  520\nf  520  521  525\nf  526  525  521\nf  521  522  526\nf  527  466  462\nf  462  523  527\nf  528  527  523\nf  523  524  528\nf  529  528  524\nf  524  525  529\nf  530  529  525\nf  525  526  530\nf  467  406  466\nf  466  527  467\nf  468  467  527\nf  527  528  468\nf  469  468  528\nf  528  529  469\nf  470  469  529\nf  529  530  470\n"
  },
  {
    "path": "test/bgratutorial3d/obj/trumpet.obj",
    "content": "# Mon Jul 24 13:30:42 1995\n#\n#\n\ng\nv 9.804816 -554.003418 228.321411\nv 9.804343 -544.468018 227.281357\nv 10.110670 -554.212646 226.402039\nv 10.110197 -544.677307 225.361984\nv 10.998173 -554.401489 224.670609\nv 10.997698 -544.866150 223.630569\nv 12.380445 -554.551270 223.296585\nv 12.379971 -545.015930 222.256577\nv 14.122183 -554.647400 222.414398\nv 14.121710 -545.112061 221.374359\nv 16.052893 -554.680420 222.110474\nv 16.052420 -545.145081 221.070404\nv 17.983583 -554.647217 222.414505\nv 17.983109 -545.111877 221.374466\nv 19.725266 -554.550903 223.296783\nv 19.724791 -545.015564 222.256775\nv 21.107450 -554.400940 224.670868\nv 21.106976 -544.865601 223.630829\nv 21.994841 -554.212036 226.402359\nv 21.994366 -544.676697 225.362305\nv 22.300573 -554.002747 228.321732\nv 22.300098 -544.467346 227.281677\nv 21.994717 -553.793396 230.241043\nv 21.994242 -544.258118 229.201004\nv 21.107216 -553.604553 231.972412\nv 21.106743 -544.069214 230.932388\nv 19.724943 -553.454834 233.346497\nv 19.724470 -543.919434 232.306442\nv 17.983204 -553.358643 234.228592\nv 17.982729 -543.823303 233.188599\nv 16.052494 -553.325623 234.532654\nv 16.052019 -543.790222 233.492538\nv 14.121804 -553.358826 234.228485\nv 14.121330 -543.823486 233.188492\nv 12.380124 -553.455200 233.346298\nv 12.379649 -543.919800 232.306244\nv 10.997938 -553.605103 231.972153\nv 10.997464 -544.069763 230.932129\nv 10.110547 -553.794006 230.240723\nv 10.110073 -544.258728 229.200684\nv 13.297250 -544.568115 245.329056\nv 13.297047 -537.652954 239.194000\nv 13.433599 -545.868713 243.862976\nv 13.433397 -538.953613 237.727997\nv 13.829089 -547.042053 242.540466\nv 13.828887 -540.126953 236.405457\nv 14.445004 -547.973267 241.490860\nv 14.444802 -541.058105 235.355865\nv 15.221054 -548.571106 240.817062\nv 15.220853 -541.655884 234.681992\nv 16.081276 -548.776978 240.584839\nv 16.081074 -541.861816 234.449814\nv 16.941463 -548.570984 240.817108\nv 16.941261 -541.655762 234.682037\nv 17.717417 -547.973083 241.490952\nv 17.717215 -541.057922 235.355957\nv 18.333178 -547.041809 242.540588\nv 18.332975 -540.126709 236.405579\nv 18.728476 -545.868469 243.863113\nv 18.728273 -538.953369 237.728134\nv 18.864611 -544.567810 245.329208\nv 18.864408 -537.652649 239.194153\nv 18.728262 -543.267151 246.795227\nv 18.728058 -536.351990 240.660248\nv 18.332773 -542.093811 248.117798\nv 18.332569 -535.178650 241.982742\nv 17.716856 -541.162659 249.167343\nv 17.716654 -534.247498 243.032303\nv 16.940805 -540.564880 249.841217\nv 16.940603 -533.649719 243.706161\nv 16.080585 -540.358887 250.073395\nv 16.080381 -533.443726 243.938385\nv 15.220397 -540.565002 249.841171\nv 15.220195 -533.649841 243.706116\nv 14.444445 -541.162842 249.167252\nv 14.444242 -534.247681 243.032211\nv 13.828682 -542.094055 248.117676\nv 13.828480 -535.178894 241.982620\nv 13.433386 -543.267395 246.795090\nv 13.433183 -536.352234 240.660110\nv 13.562503 -546.675781 244.706528\nv 13.432792 -545.438354 246.101166\nv 13.562299 -544.201050 247.495895\nv 13.938351 -543.084839 248.754074\nv 14.524137 -542.198975 249.752594\nv 15.262313 -541.630188 250.393646\nv 16.080626 -541.434143 250.614563\nv 16.898972 -541.630066 250.393692\nv 17.637241 -542.198792 249.752670\nv 18.223175 -543.084595 248.754181\nv 18.599409 -544.200806 247.496033\nv 18.729120 -545.438110 246.101303\nv 18.599613 -546.675537 244.706665\nv 18.223562 -547.791748 243.448471\nv 17.637775 -548.677673 242.450012\nv 16.899599 -549.246399 241.808960\nv 16.081285 -549.442383 241.587982\nv 15.262940 -549.246521 241.808914\nv 14.524669 -548.677856 242.449936\nv 13.938737 -547.791992 243.448364\nv 15.394068 -549.484741 243.249695\nv 14.774117 -549.007141 243.787949\nv 14.282092 -548.263367 244.626450\nv 13.966156 -547.326050 245.682892\nv 13.857231 -546.286987 246.854050\nv 13.965985 -545.247925 248.025238\nv 14.281768 -544.310669 249.081802\nv 14.773668 -543.566711 249.920242\nv 15.393542 -543.089050 250.458618\nv 16.080704 -542.924438 250.644089\nv 16.767893 -543.088989 250.458649\nv 17.387844 -543.566589 249.920319\nv 17.879869 -544.310486 249.081894\nv 18.195808 -545.247681 248.025345\nv 18.304729 -546.286743 246.854172\nv 18.195978 -547.325806 245.682999\nv 17.880196 -548.263184 244.626541\nv 17.388290 -549.007019 243.788025\nv 16.768419 -549.484680 243.249725\nv 16.081257 -549.649231 243.064178\nv 16.848700 -548.748352 245.820282\nv 16.484694 -549.028809 245.504105\nv 16.081167 -549.125488 245.395187\nv 15.677629 -549.028870 245.504089\nv 15.313575 -548.748474 245.820236\nv 15.024643 -548.311646 246.312561\nv 14.839116 -547.761169 246.932999\nv 14.775151 -547.151062 247.620712\nv 14.839015 -546.540894 248.308502\nv 15.024452 -545.990417 248.928894\nv 15.313313 -545.553589 249.421265\nv 15.677318 -545.273132 249.737427\nv 16.080845 -545.176514 249.846390\nv 16.484383 -545.273071 249.737442\nv 16.848438 -545.553467 249.421310\nv 17.137369 -545.990295 248.928955\nv 17.322897 -546.540771 248.308563\nv 17.386860 -547.150940 247.620789\nv 17.322998 -547.761047 246.933060\nv 17.137560 -548.311523 246.312622\nv 7.724612 -556.763794 228.538910\nv 7.941626 -554.389832 228.279968\nv 8.146574 -557.052612 225.891022\nv 8.352961 -554.671326 225.698730\nv 9.370983 -557.313049 223.502274\nv 9.546527 -554.925293 223.370255\nv 11.277990 -557.519714 221.606659\nv 11.405496 -555.126709 221.522385\nv 13.680921 -557.652344 220.389618\nv 13.747892 -555.256042 220.335953\nv 16.344561 -557.697998 219.970276\nv 16.344435 -555.300537 219.927200\nv 19.008171 -557.652100 220.389755\nv 18.940950 -555.255798 220.336090\nv 21.411022 -557.519226 221.606934\nv 21.283270 -555.126221 221.522644\nv 23.317907 -557.312317 223.502640\nv 23.142122 -554.924561 223.370621\nv 24.542164 -557.051758 225.891449\nv 24.335537 -554.670471 225.699158\nv 24.963957 -556.762939 228.539368\nv 24.746706 -554.388977 228.280411\nv 24.541994 -556.474121 231.187271\nv 24.335373 -554.107361 230.861588\nv 23.317585 -556.213684 233.575974\nv 23.141808 -553.853577 233.190231\nv 21.410578 -556.007019 235.471619\nv 21.282837 -553.652100 235.038040\nv 19.007648 -555.874329 236.688660\nv 18.940441 -553.522705 236.224411\nv 16.344009 -555.828735 237.107986\nv 16.343899 -553.478333 236.633209\nv 13.680398 -555.874573 236.688522\nv 13.747383 -553.522949 236.224274\nv 11.277546 -556.007507 235.471344\nv 11.405063 -553.652588 235.037781\nv 9.370661 -556.214417 233.575607\nv 9.546212 -553.854309 233.189865\nv 8.146404 -556.474976 231.186844\nv 8.352796 -554.108215 230.861160\nv 8.976436 -554.452698 225.878738\nv 8.146489 -555.338745 225.704041\nv 7.724527 -555.049988 228.351990\nv 8.597196 -554.193176 228.258560\nv 10.076880 -554.686707 223.731857\nv 9.370898 -555.599243 223.315414\nv 11.790807 -554.872498 222.028152\nv 11.277905 -555.805908 221.419769\nv 13.950448 -554.991638 220.934280\nv 13.680836 -555.938477 220.202667\nv 16.344404 -555.032715 220.557434\nv 16.344475 -555.984131 219.783371\nv 18.738333 -554.991394 220.934402\nv 19.008085 -555.938232 220.202805\nv 20.897905 -554.872009 222.028397\nv 21.410938 -555.805420 221.420044\nv 22.611727 -554.686096 223.732193\nv 23.317823 -555.598511 223.315781\nv 23.712029 -554.451965 225.879135\nv 24.542080 -555.337891 225.704468\nv 24.091118 -554.192322 228.258972\nv 24.963871 -555.049133 228.352448\nv 23.711878 -553.932800 230.638809\nv 24.541910 -554.760193 231.000290\nv 22.611437 -553.698669 232.785629\nv 23.317501 -554.499817 233.389069\nv 20.897505 -553.512939 234.489365\nv 21.410494 -554.293152 235.284698\nv 18.737864 -553.393677 235.583160\nv 19.007563 -554.160461 236.501724\nv 16.343910 -553.352661 235.960022\nv 16.343925 -554.114868 236.921066\nv 13.949979 -553.393921 235.583038\nv 13.680313 -554.160706 236.501587\nv 11.790407 -553.513428 234.489120\nv 11.277461 -554.293640 235.284424\nv 10.076589 -553.699280 232.785294\nv 9.370575 -554.500549 233.388702\nv 8.976283 -553.933533 230.638412\nv 8.146319 -554.761047 230.999863\nv 8.625915 -557.035767 226.045837\nv 8.228621 -556.763794 228.538925\nv 8.625754 -556.491943 231.032089\nv 9.778426 -556.246521 233.281113\nv 11.573809 -556.051758 235.066025\nv 13.836161 -555.926575 236.212021\nv 16.344027 -555.883484 236.606995\nv 18.851917 -555.926331 236.212158\nv 21.114342 -556.051270 235.066269\nv 22.909842 -556.245789 233.281464\nv 24.062656 -556.491089 231.032486\nv 24.459949 -556.762939 228.539352\nv 24.062817 -557.034912 226.046234\nv 22.910145 -557.280273 223.797211\nv 21.114761 -557.475037 222.012253\nv 18.852407 -557.600098 220.866272\nv 16.344543 -557.643311 220.471329\nv 13.836653 -557.600342 220.866135\nv 11.574226 -557.475525 222.012009\nv 9.778730 -557.281006 223.796860\nv 13.836666 -557.867065 220.895172\nv 11.574240 -557.742187 222.041153\nv 9.778743 -557.547668 223.825928\nv 8.625928 -557.302429 226.074936\nv 8.228635 -557.030457 228.568039\nv 8.625769 -556.758545 231.061111\nv 9.778440 -556.513123 233.310211\nv 11.573822 -556.318359 235.095078\nv 13.836175 -556.193237 236.241104\nv 16.344040 -556.150024 236.636032\nv 18.851929 -556.192993 236.241241\nv 21.114355 -556.317871 235.095322\nv 22.909855 -556.512390 233.310562\nv 24.062670 -556.757690 231.061508\nv 24.459961 -557.029602 228.568466\nv 24.062830 -557.301575 226.075333\nv 22.910160 -557.546936 223.826279\nv 21.114773 -557.741699 222.041397\nv 18.852423 -557.866821 220.895309\nv 16.344557 -557.909912 220.500381\nv 21.424311 -557.787903 221.617859\nv 19.015165 -557.921082 220.397446\nv 16.344574 -557.967102 219.976898\nv 13.673955 -557.921326 220.397308\nv 11.264729 -557.788391 221.617584\nv 9.352731 -557.581238 223.518173\nv 8.125113 -557.320007 225.913147\nv 7.702042 -557.030457 228.568024\nv 8.124943 -556.740906 231.222885\nv 9.352407 -556.479614 233.617844\nv 11.264284 -556.272156 235.518600\nv 13.673431 -556.138916 236.738998\nv 16.344025 -556.092896 237.159531\nv 19.014641 -556.138672 236.739136\nv 21.423866 -556.271667 235.518875\nv 23.335865 -556.478882 233.618210\nv 24.563482 -556.740051 231.223312\nv 24.986553 -557.029541 228.568481\nv 24.563652 -557.319153 225.913574\nv 23.336189 -557.580505 223.518539\nv 24.634542 -557.794006 228.651840\nv 24.228867 -558.071716 226.105087\nv 23.051407 -558.322449 223.807663\nv 21.217411 -558.521362 221.984375\nv 18.906403 -558.649109 220.813675\nv 16.344601 -558.693237 220.410217\nv 13.782772 -558.649353 220.813538\nv 11.471688 -558.521851 221.984116\nv 9.637577 -558.323181 223.807312\nv 8.459967 -558.072571 226.104675\nv 8.054130 -557.794861 228.651413\nv 8.459805 -557.517029 231.198120\nv 9.637266 -557.266418 233.495590\nv 11.471261 -557.067383 235.318863\nv 13.782270 -556.939575 236.489456\nv 16.344072 -556.895447 236.892929\nv 18.905901 -556.939331 236.489594\nv 21.216982 -557.066895 235.319122\nv 23.051096 -557.265686 233.495941\nv 24.228704 -557.516174 231.198532\nv 20.754166 -558.184204 234.800034\nv 22.414047 -558.364014 233.149994\nv 23.479797 -558.590759 231.070877\nv 23.847080 -558.842163 228.766129\nv 23.479942 -559.093628 226.461365\nv 22.414330 -559.320374 224.382111\nv 20.754555 -559.500488 222.732025\nv 18.663074 -559.616089 221.672531\nv 16.344627 -559.656067 221.307495\nv 14.026156 -559.616333 221.672409\nv 11.934610 -559.500977 222.731796\nv 10.274728 -559.320984 224.381790\nv 9.208982 -559.094360 226.460999\nv 8.841697 -558.842957 228.765732\nv 9.208834 -558.591492 231.070511\nv 10.274446 -558.364624 233.149673\nv 11.934224 -558.184692 234.799805\nv 14.025702 -558.068970 235.859299\nv 16.344151 -558.029053 236.224350\nv 18.662621 -558.068726 235.859421\nv 14.492168 -559.572998 234.579575\nv 16.344265 -559.541016 234.871201\nv 18.196381 -559.572754 234.579666\nv 19.867214 -559.664978 233.733368\nv 21.193216 -559.808716 232.415268\nv 22.044590 -559.989807 230.754303\nv 22.337996 -560.190613 228.913162\nv 22.044708 -560.391418 227.071976\nv 21.193441 -560.572754 225.411026\nv 19.867523 -560.716614 224.092865\nv 18.196745 -560.808899 223.246460\nv 16.344648 -560.840820 222.954758\nv 14.492531 -560.809143 223.246368\nv 12.821695 -560.716980 224.092682\nv 11.495692 -560.573242 225.410767\nv 10.644321 -560.392029 227.071671\nv 10.350914 -560.191223 228.912842\nv 10.644203 -559.990417 230.753998\nv 11.495468 -559.809204 232.415009\nv 12.821386 -559.665344 233.733185\nv 12.407148 -561.022156 230.290466\nv 12.995146 -560.896973 231.437759\nv 13.911001 -560.797607 232.348251\nv 15.065066 -560.733765 232.932861\nv 16.344372 -560.711670 233.134277\nv 17.623692 -560.733643 232.932922\nv 18.777792 -560.797363 232.348373\nv 19.693707 -560.896606 231.437943\nv 20.281778 -561.021790 230.290680\nv 20.484442 -561.160461 229.018906\nv 20.281858 -561.299072 227.747070\nv 19.693861 -561.424255 226.599777\nv 18.778006 -561.523621 225.689224\nv 17.623941 -561.587463 225.104691\nv 16.344637 -561.609497 224.903214\nv 15.065317 -561.587585 225.104630\nv 13.911214 -561.523865 225.689102\nv 12.995301 -561.424622 226.599594\nv 12.407229 -561.299438 227.746857\nv 12.204565 -561.160950 229.018692\nv 14.720250 -562.229797 227.948135\nv 14.435047 -562.169250 228.504578\nv 14.336759 -562.101990 229.121414\nv 14.435008 -562.034607 229.738113\nv 14.720176 -561.973938 230.294540\nv 15.164349 -561.925720 230.736130\nv 15.724049 -561.894775 231.019684\nv 16.344486 -561.884094 231.117386\nv 16.964931 -561.894714 231.019714\nv 17.524649 -561.925598 230.736191\nv 17.968851 -561.973816 230.294632\nv 18.254053 -562.034363 229.738205\nv 18.352343 -562.101746 229.121521\nv 18.254093 -562.169006 228.504669\nv 17.968927 -562.229675 227.948227\nv 17.524754 -562.277893 227.506668\nv 16.965054 -562.308899 227.223190\nv 16.344614 -562.319519 227.125458\nv 15.724169 -562.308960 227.223160\nv 15.164452 -562.278015 227.506607\nv 17.818609 -504.480713 265.121368\nv 16.811384 -504.351562 264.969391\nv 16.770683 -503.656616 265.062225\nv 17.673388 -503.719849 265.100861\nv 18.430511 -504.934692 266.035858\nv 18.797314 -505.249664 265.882202\nv 18.480566 -504.779449 265.426086\nv 18.335287 -504.015808 265.407928\nv 16.710682 -504.655914 266.181671\nv 17.734951 -504.736664 266.135468\nv 17.639727 -503.819153 265.505524\nv 16.737007 -503.755615 265.466858\nv 18.783398 -511.684082 267.944061\nv 18.786097 -509.870667 267.613464\nv 18.402393 -509.960815 268.180450\nv 18.397194 -511.808472 268.757324\nv 16.657816 -511.963593 269.566467\nv 17.688646 -511.901154 269.298218\nv 17.693542 -510.047546 268.721710\nv 16.665932 -510.035004 268.882202\nv 17.716461 -506.461975 267.138550\nv 16.692190 -506.379761 267.186951\nv 16.677326 -508.173218 268.088104\nv 17.705008 -508.186279 267.928833\nv 18.778749 -506.979919 266.876068\nv 18.411999 -506.662231 267.035217\nv 18.400499 -508.388123 267.821594\nv 18.784500 -508.303986 267.254059\nv 17.683460 -513.891907 269.869537\nv 16.652775 -513.957092 270.137909\nv 16.650625 -515.997864 270.589722\nv 17.681051 -515.950623 270.255585\nv 18.773279 -515.763184 268.696655\nv 18.777393 -513.658508 268.516907\nv 18.391685 -513.792847 269.329102\nv 18.388935 -515.844666 269.715759\nv 18.772593 -520.070068 268.712860\nv 18.771761 -517.901550 268.762543\nv 18.388197 -517.997925 269.781219\nv 18.390083 -520.128906 269.919556\nv 16.654028 -520.209106 271.125977\nv 17.683815 -520.173523 270.724274\nv 17.681341 -518.032043 270.585205\nv 16.651125 -518.082947 270.919769\nv 17.688574 -522.332153 270.803833\nv 16.659071 -522.372620 271.206360\nv 16.665951 -524.553101 271.158661\nv 17.695295 -524.522766 270.700226\nv 18.780842 -524.407532 268.508484\nv 18.775873 -522.201721 268.791321\nv 18.394253 -522.277039 269.998474\nv 18.400354 -524.456177 269.894440\nv 18.795237 -528.824341 267.588989\nv 18.787380 -526.616516 268.107849\nv 18.408100 -526.687622 269.494171\nv 18.416660 -528.880676 269.130188\nv 16.684153 -528.947632 270.676392\nv 17.712820 -528.918518 270.160187\nv 17.703396 -526.709900 270.522980\nv 16.674398 -526.746338 270.982330\nv 17.723185 -531.115845 269.723206\nv 16.694942 -531.152405 270.240356\nv 16.706421 -533.338867 269.677551\nv 17.734959 -533.458557 269.098511\nv 18.813658 -533.461426 266.363922\nv 18.803448 -530.982117 267.150574\nv 18.426163 -531.062439 268.692535\nv 18.436996 -533.387573 268.067322\nv 18.833368 -539.222290 264.259888\nv 18.823997 -536.210205 265.407471\nv 18.449396 -536.172607 267.114502\nv 18.459742 -538.439392 266.216248\nv 16.730505 -537.637207 268.175018\nv 17.758280 -537.901855 267.520844\nv 17.746311 -535.613342 268.406036\nv 16.718355 -535.502197 268.988800\nv 17.769650 -539.993225 266.576752\nv 16.742645 -539.738770 267.237305\nv 16.754477 -541.786072 266.184570\nv 17.662172 -541.613586 265.930420\nv 18.485634 -543.460510 263.531982\nv 18.840887 -541.259888 263.288025\nv 18.469564 -540.509399 265.260620\nv 18.360952 -542.114502 264.605347\nv 16.776567 -545.698608 263.744202\nv 17.797430 -544.944336 263.674988\nv 17.673401 -543.597717 264.767426\nv 16.765837 -543.774292 265.019379\nv 17.807823 -546.799927 262.305267\nv 16.786516 -547.554382 262.361816\nv 16.795502 -549.323303 260.886047\nv 17.817686 -548.634338 260.774078\nv 18.869730 -545.425049 259.984955\nv 18.853405 -543.111023 261.984161\nv 18.496897 -545.314697 262.188538\nv 18.507704 -547.148865 260.683990\nv 18.888763 -548.894592 256.705292\nv 18.880920 -547.346313 258.218384\nv 18.518293 -549.082336 258.882812\nv 18.526281 -550.724487 257.193848\nv 16.810337 -552.585571 257.669739\nv 17.833450 -551.958191 257.509644\nv 17.826008 -550.312134 259.219849\nv 16.803459 -551.001587 259.320740\nv 17.839478 -553.443176 255.786469\nv 16.816084 -554.071716 255.937057\nv 16.820665 -555.445923 254.140076\nv 17.914003 -554.731201 253.745163\nv 18.899393 -551.082153 253.600861\nv 18.896149 -550.371094 255.032349\nv 18.532862 -552.206299 255.490677\nv 18.608011 -553.492859 253.468689\nv 18.900475 -551.071533 250.235611\nv 18.900721 -551.315613 251.998688\nv 18.608099 -553.711670 251.853882\nv 18.907688 -553.022583 250.022980\nv 18.917559 -555.859680 248.346573\nv 18.913496 -554.623962 249.388443\nv 18.614828 -555.335144 251.212387\nv 18.548689 -556.847290 249.351135\nv 16.826496 -557.849548 250.371384\nv 17.851671 -557.510742 250.025894\nv 17.917566 -555.985962 251.899170\nv 16.824118 -556.705811 252.283340\nv 17.852940 -558.531067 248.068100\nv 16.827868 -558.875122 248.408722\nv 16.828320 -559.773560 246.414673\nv 17.853563 -559.499817 246.008316\nv 18.919685 -557.804077 244.563614\nv 18.918346 -556.852600 246.415955\nv 18.549761 -557.856689 247.403961\nv 18.550201 -558.814453 245.355453\nv 18.915977 -559.917786 239.604248\nv 18.919426 -558.835815 242.293030\nv 18.550030 -559.860535 243.065964\nv 18.548288 -560.551941 240.963394\nv 16.827002 -561.187622 242.350174\nv 17.851898 -560.972839 241.880463\nv 17.853029 -560.264282 243.991623\nv 16.827984 -560.544556 244.393707\nv 17.850132 -561.480103 239.822388\nv 16.825521 -561.702759 240.288208\nv 16.823717 -562.086792 238.227936\nv 17.732330 -561.885803 238.259308\nv 18.544146 -561.436768 235.842072\nv 18.912859 -560.384644 237.568100\nv 18.545975 -561.043091 238.913940\nv 18.427761 -561.436462 237.357574\nv 16.819923 -562.465820 234.126373\nv 17.845995 -562.122925 234.691895\nv 17.730541 -562.141541 236.205322\nv 16.821785 -562.340576 236.172882\nv 17.845007 -562.133789 232.655319\nv 16.818314 -562.463867 232.091614\nv 16.829842 -562.191101 230.925201\nv 17.735762 -562.059998 231.347290\nv 18.582853 -560.709534 233.319412\nv 18.915075 -560.459656 235.525970\nv 18.544428 -561.473267 233.802841\nv 18.435959 -561.415833 232.492172\nv 16.895796 -560.928528 231.153763\nv 17.909277 -560.855042 231.864578\nv 17.761597 -561.547180 231.036469\nv 16.855684 -561.677246 230.615982\nv 17.961252 -559.836243 233.234085\nv 16.948389 -559.921448 232.523209\nv 16.986864 -558.935913 234.034851\nv 17.882830 -559.026428 234.225281\nv 18.667484 -558.167603 237.176331\nv 18.963854 -559.383118 236.892090\nv 18.633566 -559.667664 234.688004\nv 18.554188 -558.840759 235.677872\nv 17.018461 -556.979553 237.475861\nv 18.018919 -557.366760 237.367416\nv 17.906185 -558.044495 235.878036\nv 17.010342 -557.957947 235.685150\nv 18.011662 -556.381836 239.306915\nv 17.010828 -555.991943 239.408661\nv 17.003391 -555.062622 241.082138\nv 18.006069 -555.419128 241.183807\nv 18.961559 -557.344604 241.520447\nv 18.958469 -558.412354 238.862640\nv 18.660976 -557.188171 239.128418\nv 18.656099 -556.230713 241.017365\nv 18.652287 -554.396729 244.612457\nv 18.960003 -555.385559 245.594299\nv 18.961544 -556.325745 243.764374\nv 18.655800 -555.219849 243.241379\nv 16.996988 -554.206177 242.497971\nv 16.992348 -553.434998 243.658310\nv 17.996405 -553.746643 243.966919\nv 17.999777 -554.561157 242.604965\nv 17.875813 -547.205811 245.722931\nv 16.861170 -547.042297 245.267334\nv 16.834764 -545.744324 245.520370\nv 17.736938 -545.970703 245.685577\nv 18.547728 -546.409729 247.896698\nv 18.891657 -548.088013 248.090042\nv 18.552721 -547.556885 246.662415\nv 18.413584 -546.315674 246.626633\nv 16.851257 -544.771912 247.702621\nv 17.867529 -545.307007 247.761887\nv 17.733734 -545.217590 246.494736\nv 16.831562 -544.993042 246.326813\nv 17.949017 -543.822327 254.707581\nv 16.942846 -543.254883 254.534485\nv 16.938015 -542.099670 255.425812\nv 17.942766 -542.558655 255.770065\nv 18.914783 -545.244019 257.078278\nv 18.922958 -546.774536 255.600754\nv 18.609060 -544.992004 255.068634\nv 18.603140 -543.723389 256.147430\nv 18.583124 -539.993286 259.147827\nv 18.886612 -541.058716 260.751892\nv 18.903254 -543.345154 258.802124\nv 18.591488 -541.843323 257.839966\nv 16.927347 -538.958313 257.564850\nv 17.930037 -539.293213 258.085419\nv 17.937819 -541.122742 256.791779\nv 16.933098 -540.669434 256.439911\nv 17.922285 -537.283569 259.314545\nv 16.919914 -536.959961 258.786407\nv 16.912880 -534.916809 259.912384\nv 17.915405 -535.092834 260.426361\nv 18.870655 -536.036682 263.161743\nv 18.877258 -538.994751 262.016785\nv 18.574730 -537.961792 260.391449\nv 18.567152 -535.747925 261.517853\nv 18.554253 -530.798218 263.376282\nv 18.854967 -530.901123 264.903412\nv 18.862864 -533.336731 264.116852\nv 18.561108 -533.084534 262.467529\nv 16.900627 -530.713196 261.871613\nv 17.902664 -530.732361 262.366669\nv 17.908503 -532.998352 261.459625\nv 16.906393 -532.833252 260.941315\nv 17.897293 -528.569946 263.198029\nv 16.895742 -528.560852 262.701874\nv 16.891972 -526.392639 263.426605\nv 17.892975 -526.403381 263.868439\nv 18.840887 -526.513794 266.255524\nv 18.847118 -528.690369 265.737396\nv 18.547894 -528.616333 264.208984\nv 18.542616 -526.431213 264.880219\nv 18.536907 -522.078552 265.740662\nv 18.832575 -522.158691 266.939545\nv 18.835960 -524.335083 266.656158\nv 18.538877 -524.275146 265.280334\nv 16.888636 -522.025818 264.558685\nv 17.888845 -522.032532 264.947479\nv 17.890102 -524.214844 264.488251\nv 16.889528 -524.212891 264.045685\nv 17.889353 -519.834778 265.355530\nv 16.889509 -519.835510 264.965973\nv 16.892382 -517.659241 265.265625\nv 17.891586 -517.668640 265.589966\nv 18.831499 -517.777771 267.397827\nv 18.831257 -519.925293 267.349365\nv 18.536682 -519.866333 266.149597\nv 18.538210 -517.686707 266.384583\nv 18.548292 -513.451172 266.342438\nv 18.839201 -513.574585 267.150940\nv 18.834063 -515.659668 267.331146\nv 18.541555 -515.583923 266.317017\nv 16.905094 -513.363831 265.546753\nv 17.903570 -513.380493 265.807831\nv 17.896402 -515.503967 265.784058\nv 16.897493 -515.500732 265.458771\nv 17.913668 -511.263763 265.792969\nv 16.915421 -511.252197 265.530884\nv 16.910940 -509.295898 265.456451\nv 17.913574 -509.368134 265.657745\nv 18.851385 -509.632751 266.805847\nv 18.848215 -511.434998 267.139709\nv 18.557953 -511.325195 266.329224\nv 18.557467 -509.421417 266.195251\nv 18.527891 -506.281891 265.614014\nv 18.844803 -506.759735 266.063416\nv 18.850201 -508.075714 266.443665\nv 18.556595 -507.872070 265.830261\nv 16.858521 -505.845612 265.164398\nv 17.865814 -505.977814 265.313812\nv 17.894400 -507.562439 265.535065\nv 16.891905 -507.494110 265.331818\nv 14.484788 -506.076080 265.325531\nv 15.506395 -505.886627 265.174469\nv 15.539763 -507.534454 265.342346\nv 14.513789 -507.661743 265.556732\nv 13.440081 -508.226898 266.457764\nv 13.434540 -506.911987 266.071838\nv 13.794150 -506.417145 265.625000\nv 13.823249 -508.007721 265.851837\nv 13.824656 -511.457031 266.357758\nv 13.438151 -511.581879 267.161926\nv 13.441331 -509.782166 266.824524\nv 13.824203 -509.555634 266.221069\nv 15.558782 -509.335541 265.467468\nv 15.563245 -511.291138 265.542450\nv 14.533001 -511.359711 265.818085\nv 14.532913 -509.465607 265.680725\nv 14.352693 -504.829132 266.121307\nv 15.357723 -504.692657 266.174835\nv 15.384067 -503.792847 265.459808\nv 14.482952 -503.906372 265.490906\nv 13.746052 -504.912384 265.419098\nv 13.386285 -505.399933 265.872314\nv 13.695563 -505.065033 266.020691\nv 13.825839 -504.141418 265.392059\nv 15.417745 -503.693909 265.055176\nv 15.458433 -504.388458 264.962494\nv 14.436787 -504.575897 265.115326\nv 14.516621 -503.807251 265.086273\nv 14.306174 -511.985046 269.290802\nv 15.304739 -511.996552 269.561798\nv 15.312883 -510.068939 268.876984\nv 14.311101 -510.133423 268.712128\nv 13.375151 -510.014221 267.615967\nv 13.372433 -511.824860 267.950165\nv 13.662095 -511.928253 268.753418\nv 13.667348 -510.083435 268.173889\nv 13.367608 -507.126770 266.868164\nv 13.373494 -508.449585 267.251923\nv 13.665387 -508.512512 267.810638\nv 13.676946 -506.789398 267.021729\nv 15.324309 -508.208038 268.082275\nv 15.339197 -506.415588 267.180634\nv 14.334127 -506.552155 267.125610\nv 14.322640 -508.274414 267.917816\nv 14.301090 -520.248047 270.723694\nv 15.300846 -520.238220 271.124115\nv 15.297967 -518.113098 270.917206\nv 14.298677 -518.108948 270.582764\nv 13.360518 -518.031677 268.776550\nv 13.361265 -520.196655 268.729828\nv 13.654643 -520.235901 269.925232\nv 13.652836 -518.108154 269.784393\nv 13.366333 -513.795776 268.525421\nv 13.362123 -515.896912 268.707886\nv 13.653656 -515.958069 269.716370\nv 13.656496 -513.909546 269.327423\nv 15.297492 -516.028931 270.586426\nv 15.299671 -513.989075 270.133972\nv 14.300920 -513.973511 269.863770\nv 14.298447 -516.029785 270.251343\nv 14.329895 -528.983948 270.167511\nv 15.330889 -528.973083 270.677734\nv 15.321152 -526.772705 270.982819\nv 14.320515 -526.777649 270.528198\nv 13.375838 -526.732727 268.134094\nv 13.383635 -528.937134 267.618530\nv 13.680958 -528.975220 269.146973\nv 13.672453 -526.785217 269.508026\nv 13.364469 -522.324829 268.811157\nv 13.369366 -524.527222 268.531525\nv 13.664773 -524.556885 269.905457\nv 13.658740 -522.380859 270.006744\nv 15.312721 -524.580383 271.158417\nv 15.305865 -522.400818 271.205292\nv 14.305794 -522.404419 270.805115\nv 14.312464 -524.592651 270.703491\nv 14.375165 -537.958008 267.536560\nv 15.377180 -537.659058 268.179871\nv 15.365040 -535.524902 268.992767\nv 14.363250 -535.671936 268.419647\nv 13.412090 -536.310974 265.446411\nv 13.421268 -539.317322 264.301727\nv 13.723700 -538.519897 266.244324\nv 13.713415 -536.256287 267.139526\nv 13.391793 -531.091797 267.183380\nv 13.401901 -533.567078 266.399963\nv 13.701168 -533.475830 268.089722\nv 13.690406 -531.153992 268.712219\nv 15.353120 -533.362488 269.680603\nv 15.341658 -531.176880 270.242523\nv 14.340217 -531.179077 269.732727\nv 14.351933 -533.519165 269.109894\nv 14.414255 -544.993774 263.698914\nv 15.423214 -545.717346 263.752930\nv 15.412488 -543.793762 265.027130\nv 14.515724 -543.644653 264.787384\nv 13.733491 -540.587280 265.291931\nv 13.428761 -541.352173 263.333496\nv 13.749536 -543.534485 263.568176\nv 13.850353 -542.186279 264.636902\nv 15.401134 -541.806335 266.191376\nv 15.389310 -539.759827 267.243134\nv 14.386511 -540.047363 266.594849\nv 14.504509 -541.662231 265.948120\nv 14.450326 -552.001587 257.543976\nv 15.456979 -552.601624 257.682312\nv 15.450102 -551.018311 259.332397\nv 14.442853 -550.356750 259.251373\nv 13.469039 -547.432251 258.279846\nv 13.476943 -548.978882 256.770844\nv 13.790335 -550.790649 257.245789\nv 13.782312 -549.150269 258.931030\nv 13.441266 -543.200562 262.033112\nv 13.457743 -545.512695 260.040833\nv 13.771616 -547.218323 260.727112\nv 13.760790 -545.386230 262.227936\nv 15.442145 -549.340698 260.896759\nv 15.433158 -547.572449 262.371521\nv 14.424643 -546.847595 262.331604\nv 14.434527 -548.680603 260.803284\nv 14.468608 -557.548767 250.069885\nv 15.473165 -557.863525 250.387802\nv 15.470776 -556.720337 252.298813\nv 14.399258 -556.027954 251.943344\nv 13.501909 -554.701660 249.470230\nv 13.505859 -555.934509 248.429718\nv 13.812837 -556.905518 249.417313\nv 13.743718 -555.397949 251.277802\nv 13.489534 -551.160156 250.319229\nv 13.496353 -553.104980 250.104919\nv 13.737250 -553.778992 251.919708\nv 13.489353 -551.400269 252.076477\nv 13.484345 -550.453369 255.101395\nv 13.487741 -551.164673 253.673721\nv 13.736873 -553.558105 253.529816\nv 13.796930 -552.270508 255.545807\nv 15.467315 -555.460876 254.154602\nv 15.462730 -554.087219 255.950638\nv 14.456362 -553.485107 255.823181\nv 14.395677 -554.774536 253.786987\nv 14.468885 -561.006287 241.932632\nv 15.473710 -561.199951 242.369995\nv 15.474677 -560.557251 244.412735\nv 14.470016 -560.298889 244.041840\nv 13.507694 -558.904175 242.384674\nv 13.504148 -559.982422 239.698654\nv 13.812431 -560.602783 241.040390\nv 13.814156 -559.912964 243.140381\nv 13.506684 -556.925842 246.502319\nv 13.508009 -557.875366 244.652649\nv 13.814391 -558.869629 245.427475\nv 13.813945 -557.913513 247.473175\nv 15.475003 -559.786682 246.432861\nv 15.474545 -558.888611 248.426041\nv 14.469899 -558.567993 248.114304\nv 14.470521 -559.535339 246.056503\nv 14.463089 -562.153992 234.750427\nv 15.466677 -562.477051 234.149200\nv 15.468530 -562.352112 236.195007\nv 14.573086 -562.170227 236.258331\nv 13.810160 -561.092957 238.993591\nv 13.501080 -560.448364 237.665512\nv 13.808397 -561.485352 235.925354\nv 13.917453 -561.482666 237.434998\nv 15.470447 -562.098511 238.249374\nv 15.472238 -561.714844 240.308914\nv 14.467150 -561.512756 239.876465\nv 14.574844 -561.914978 238.310593\nv 14.526953 -560.892700 231.929504\nv 15.542565 -560.939819 231.176880\nv 15.502458 -561.688354 230.639664\nv 14.604209 -561.574951 231.092697\nv 13.808722 -561.521240 233.888428\nv 13.503345 -560.522583 235.625778\nv 13.847694 -560.764465 233.409897\nv 13.925748 -561.460693 232.574524\nv 15.476615 -562.202026 230.948914\nv 15.465080 -562.474854 232.115143\nv 14.462133 -562.164368 232.715515\nv 14.578373 -562.087524 231.403793\nv 14.638116 -557.426453 237.442276\nv 15.666269 -557.005066 237.507080\nv 15.658162 -557.983215 235.717148\nv 14.750884 -558.100769 235.950272\nv 13.899455 -559.736633 234.786819\nv 13.553170 -559.460083 237.000092\nv 13.933851 -558.244507 237.276733\nv 14.046066 -558.914062 235.776245\nv 15.634700 -558.960999 234.067566\nv 15.596240 -559.946228 232.556534\nv 14.579989 -559.887817 233.308121\nv 14.727558 -559.082092 234.299240\nv 14.615542 -553.809448 244.035568\nv 15.640112 -553.461365 243.686981\nv 15.644757 -554.232422 242.527176\nv 14.618911 -554.622986 242.674652\nv 13.550950 -556.410156 243.863983\nv 13.549423 -555.471863 245.691559\nv 13.918643 -554.479492 244.703918\nv 13.922156 -555.301453 243.334625\nv 13.547727 -558.490601 238.967056\nv 13.550912 -557.426392 241.622437\nv 13.922400 -556.309998 241.112366\nv 13.927292 -557.266113 239.225861\nv 15.651170 -555.088623 241.111862\nv 15.658618 -556.017700 239.439133\nv 14.630820 -556.442139 239.379761\nv 14.625227 -555.480408 241.255142\nv 14.486740 -545.376465 247.822662\nv 15.498995 -544.800476 247.727432\nv 15.479305 -545.021423 246.351929\nv 14.578375 -545.282593 246.552139\nv 13.819418 -547.649841 246.748291\nv 13.481808 -548.190369 248.183792\nv 13.814405 -546.503845 247.980347\nv 13.905705 -546.405518 246.707291\nv 15.482512 -545.772522 245.545883\nv 15.508918 -547.070190 245.293335\nv 14.495041 -547.273926 245.786224\nv 14.581592 -546.035339 245.744064\nv 14.548985 -539.365540 258.134613\nv 15.575052 -538.988525 257.586182\nv 15.580802 -540.699219 256.462006\nv 14.556792 -541.193970 256.843353\nv 13.492328 -543.445068 258.869720\nv 13.475533 -541.160156 260.812775\nv 13.849143 -540.089355 259.210144\nv 13.857530 -541.937683 257.905701\nv 13.875251 -545.084229 255.141373\nv 13.512207 -546.871460 255.677475\nv 13.503967 -545.342407 257.151093\nv 13.869299 -543.816711 256.217712\nv 15.585722 -542.128967 255.448517\nv 15.590556 -543.283936 254.557678\nv 14.568026 -543.891907 254.762665\nv 14.561747 -542.628845 255.823257\nv 14.521697 -530.811646 262.407959\nv 15.548336 -530.745789 261.889618\nv 15.554102 -532.865173 260.960114\nv 14.527493 -533.075623 261.502716\nv 13.452115 -533.450684 264.168610\nv 13.444306 -531.018738 264.952087\nv 13.820493 -530.905762 263.427856\nv 13.827295 -533.189392 262.521820\nv 13.840754 -538.060120 260.450684\nv 13.466187 -539.098877 262.074036\nv 13.459770 -536.146118 263.216278\nv 13.833214 -535.848877 261.574188\nv 15.560583 -534.948181 259.932037\nv 15.567618 -536.990662 258.806824\nv 14.541232 -537.357361 259.361603\nv 14.534385 -535.168396 260.471527\nv 13.814163 -528.726501 264.257690\nv 13.436502 -528.811096 265.782776\nv 13.430321 -526.637573 266.297729\nv 13.808922 -526.543823 264.925995\nv 15.539699 -526.426514 263.443115\nv 15.543463 -528.594116 262.719116\nv 14.516340 -528.650879 263.237335\nv 14.512049 -526.486084 263.905731\nv 14.507975 -522.118896 264.980988\nv 15.536382 -522.061096 264.573669\nv 15.537266 -524.247498 264.061371\nv 14.509201 -524.299316 264.523712\nv 13.425447 -524.461853 266.695160\nv 13.422124 -522.288757 266.975586\nv 13.803301 -522.196472 265.781219\nv 13.805226 -524.390442 265.323578\nv 14.522855 -513.474487 265.834503\nv 15.552900 -513.402039 265.558960\nv 15.545282 -515.538269 265.471649\nv 14.515644 -515.596008 265.812378\nv 13.423827 -515.799622 267.358582\nv 13.429050 -513.717896 267.175781\nv 13.814924 -513.580200 266.373260\nv 13.808123 -515.710083 266.350159\nv 13.803127 -519.987061 266.187531\nv 13.420874 -520.058716 267.382416\nv 13.421185 -517.914429 267.427979\nv 13.804714 -517.810120 266.420105\nv 15.540154 -517.695984 265.279175\nv 15.537270 -519.871582 264.980225\nv 14.508515 -519.922974 265.387238\nv 14.510785 -517.758728 265.619995\nv 16.990101 -552.759277 244.565308\nv 16.975718 -551.773254 245.189087\nv 17.985268 -552.013733 245.572601\nv 17.994104 -553.067688 244.877365\nv 18.954119 -553.479309 247.547424\nv 18.957436 -554.690552 246.520950\nv 18.649881 -553.711243 245.529434\nv 18.640917 -552.649841 246.231873\nv 18.603142 -549.430908 246.942078\nv 18.942583 -549.972900 248.367767\nv 18.949057 -551.901367 248.167877\nv 18.636379 -551.088928 246.841888\nv 16.949333 -550.485413 245.520447\nv 16.911089 -548.905090 245.549774\nv 17.925896 -549.072449 246.004242\nv 17.958763 -550.721802 245.906693\nv 15.558837 -548.932495 245.576385\nv 15.597082 -550.512512 245.547653\nv 14.577935 -550.787048 245.972382\nv 14.545129 -549.139465 246.069183\nv 13.538811 -551.995728 248.262436\nv 13.532733 -550.073425 248.464172\nv 13.869838 -549.522278 247.030304\nv 13.903019 -551.178223 246.931503\nv 13.916218 -553.794617 245.619354\nv 13.546831 -554.777649 246.616318\nv 13.543625 -553.569153 247.641663\nv 13.907302 -552.734985 246.320786\nv 15.623473 -551.800049 245.216827\nv 15.637856 -552.785828 244.593536\nv 14.613229 -553.130859 244.944885\nv 14.604446 -552.078186 245.639603\nv 15.595942 -544.169495 253.799240\nv 15.589635 -544.771912 252.729355\nv 14.572453 -545.369080 252.877686\nv 14.573297 -544.778931 253.998886\nv 13.521490 -548.483276 253.482956\nv 13.516861 -547.765869 254.885376\nv 13.880281 -545.974182 254.366379\nv 13.879138 -546.565063 253.235886\nv 13.857447 -546.809937 249.942383\nv 13.525604 -548.508423 250.149277\nv 13.524292 -548.730835 251.901062\nv 13.882737 -546.820129 251.665253\nv 15.571465 -545.082947 251.355820\nv 15.541290 -545.094849 249.686218\nv 14.529280 -545.674622 249.782410\nv 14.554099 -545.678894 251.500809\nv 17.910091 -545.605347 249.722214\nv 16.893562 -545.066284 249.661575\nv 16.923742 -545.054443 251.331512\nv 17.934992 -545.610046 251.442108\nv 18.934599 -548.632507 251.813995\nv 18.935486 -548.406128 250.056427\nv 18.590796 -546.715942 249.859436\nv 18.616175 -546.726501 251.584030\nv 18.614082 -545.882874 254.292084\nv 18.927603 -547.670044 254.806778\nv 18.932083 -548.387146 253.400681\nv 18.612860 -546.473755 253.159271\nv 16.941919 -544.743286 252.705322\nv 16.948231 -544.140625 253.775604\nv 17.954281 -544.709961 253.942734\nv 17.953360 -545.299988 252.819702\nv -36.059700 -587.511292 89.044327\nv -36.060158 -578.418152 88.113220\nv -35.768234 -587.698669 87.214058\nv -35.768688 -578.605530 86.282875\nv -34.922482 -587.867737 85.562958\nv -34.922935 -578.774536 84.631760\nv -33.605228 -588.001892 84.252609\nv -33.605679 -578.908691 83.321442\nv -31.945415 -588.087952 83.411316\nv -31.945869 -578.994812 82.480148\nv -30.105520 -588.117493 83.121490\nv -30.105974 -579.024414 82.190308\nv -28.265646 -588.087708 83.411415\nv -28.266100 -578.994568 82.480247\nv -26.605888 -588.001526 84.252792\nv -26.606342 -578.908325 83.321625\nv -25.288719 -587.867249 85.563210\nv -25.289173 -578.774048 84.632011\nv -24.443069 -587.698059 87.214355\nv -24.443523 -578.604919 86.283173\nv -24.151718 -587.510681 89.044640\nv -24.152172 -578.417542 88.113533\nv -24.443184 -587.323242 90.875000\nv -24.443638 -578.230042 89.943787\nv -25.288940 -587.154175 92.526115\nv -25.289394 -578.061035 91.594933\nv -26.606194 -587.020081 93.836441\nv -26.606646 -577.926941 92.905273\nv -28.266005 -586.934021 94.677681\nv -28.266459 -577.840881 93.746544\nv -30.105898 -586.904419 94.967514\nv -30.106350 -577.811279 94.036331\nv -31.945774 -586.934265 94.677582\nv -31.946228 -577.841125 93.746445\nv -33.605530 -587.020447 93.836258\nv -33.605988 -577.927307 92.905090\nv -34.922699 -587.154663 92.525864\nv -34.923157 -578.061523 91.594681\nv -35.768353 -587.323853 90.874702\nv -35.768803 -578.230652 89.943489\nv -32.814369 -584.023193 108.429146\nv -32.814754 -575.208130 105.644768\nv -32.678043 -584.613586 106.560310\nv -32.678436 -575.798462 103.775948\nv -32.282578 -585.145996 104.874352\nv -32.282970 -576.331055 102.090050\nv -31.666685 -585.568665 103.536415\nv -31.667074 -576.753540 100.752083\nv -30.890644 -585.839905 102.677444\nv -30.891033 -577.024841 99.893082\nv -30.030426 -585.933350 102.381470\nv -30.030817 -577.118286 99.597092\nv -29.170235 -585.839783 102.677483\nv -29.170624 -577.024719 99.893120\nv -28.394274 -585.568481 103.536499\nv -28.394663 -576.753357 100.752167\nv -27.778488 -585.145752 104.874466\nv -27.778879 -576.330811 102.090164\nv -27.383167 -584.613342 106.560455\nv -27.383558 -575.798218 103.776093\nv -27.247005 -584.022949 108.429291\nv -27.247396 -575.207886 105.644913\nv -27.383327 -583.432678 110.298096\nv -27.383720 -574.617615 107.513763\nv -27.778793 -582.900146 111.984024\nv -27.779184 -574.085083 109.199631\nv -28.394693 -582.477478 113.321930\nv -28.395082 -573.662476 110.537552\nv -29.170729 -582.206299 114.180931\nv -29.171118 -573.391174 111.396538\nv -30.030947 -582.112854 114.476944\nv -30.031336 -573.297729 111.692551\nv -30.891138 -582.206421 114.180893\nv -30.891527 -573.391296 111.396500\nv -31.667105 -582.477661 113.321846\nv -31.667494 -573.662659 110.537468\nv -32.282883 -582.900391 111.983910\nv -32.283276 -574.085327 109.199516\nv -32.678204 -583.432922 110.297951\nv -32.678593 -574.617859 107.513618\nv -32.549118 -585.694275 107.001724\nv -32.678802 -585.132690 108.779579\nv -32.549267 -584.571167 110.557480\nv -32.173195 -584.064514 112.161278\nv -31.587389 -583.662415 113.434151\nv -30.849199 -583.404297 114.251312\nv -30.030884 -583.315247 114.532944\nv -29.212543 -583.404175 114.251350\nv -28.474285 -583.662292 113.434235\nv -27.888372 -584.064270 112.161392\nv -27.512159 -584.570923 110.557610\nv -27.382473 -585.132446 108.779724\nv -27.512007 -585.694031 107.001854\nv -27.888081 -586.200562 105.397995\nv -28.473886 -586.602722 104.125168\nv -29.212076 -586.860840 103.307884\nv -30.030390 -586.949829 103.026306\nv -30.848732 -586.860962 103.307846\nv -31.586990 -586.602844 104.125084\nv -32.172909 -586.200806 105.397881\nv -30.717567 -587.665527 104.526505\nv -31.337511 -587.448914 105.212723\nv -31.829519 -587.111267 106.281540\nv -32.145435 -586.685913 107.628304\nv -32.254337 -586.214355 109.121269\nv -32.145565 -585.742859 110.614204\nv -31.829762 -585.317383 111.960999\nv -31.337847 -584.979797 113.029892\nv -30.717962 -584.763000 113.716110\nv -30.030796 -584.688232 113.952499\nv -29.343611 -584.762939 113.716148\nv -28.723671 -584.979675 113.029961\nv -28.231659 -585.317200 111.961098\nv -27.915743 -585.742615 110.614319\nv -27.806841 -586.214111 109.121384\nv -27.915615 -586.685669 107.628418\nv -28.231417 -587.111084 106.281639\nv -28.723335 -587.448792 105.212791\nv -29.343216 -587.665466 104.526543\nv -30.030382 -587.740234 104.290070\nv -29.262880 -588.040710 107.174049\nv -29.626894 -588.168030 106.771042\nv -30.030418 -588.211914 106.632141\nv -30.433956 -588.168030 106.771019\nv -30.798004 -588.040833 107.174011\nv -31.086929 -587.842590 107.801659\nv -31.272444 -587.592773 108.592514\nv -31.336395 -587.315857 109.469193\nv -31.272520 -587.039001 110.345932\nv -31.087072 -586.789124 111.136803\nv -30.798201 -586.590881 111.764465\nv -30.434189 -586.463501 112.167473\nv -30.030663 -586.419678 112.306290\nv -29.627127 -586.463501 112.167496\nv -29.263077 -586.590759 111.764503\nv -28.974155 -586.789001 111.136856\nv -28.788639 -587.038879 110.346001\nv -28.724688 -587.315735 109.469261\nv -28.788563 -587.592651 108.592583\nv -28.974012 -587.842468 107.801712\nv -38.042057 -590.143250 89.234322\nv -37.835251 -587.879333 89.002487\nv -37.639946 -590.401733 86.709183\nv -37.443268 -588.131409 86.540993\nv -36.473125 -590.634949 84.431259\nv -36.305843 -588.358704 84.320442\nv -34.655827 -590.820068 82.623558\nv -34.534317 -588.539062 82.558296\nv -32.365925 -590.938782 81.462906\nv -32.302101 -588.654785 81.426857\nv -29.827576 -590.979614 81.063026\nv -29.827694 -588.694641 81.037071\nv -27.289251 -590.938538 81.463043\nv -27.353313 -588.654541 81.426987\nv -24.999426 -590.819580 82.623810\nv -25.121168 -588.538574 82.558540\nv -23.182236 -590.634277 84.431610\nv -23.349754 -588.358032 84.320786\nv -22.015564 -590.400940 86.709595\nv -22.212473 -588.130615 86.541389\nv -21.613613 -590.142395 89.234749\nv -21.820644 -587.878479 89.002907\nv -22.015724 -589.883728 91.759903\nv -22.212629 -587.626404 91.464439\nv -23.182541 -589.650574 94.037827\nv -23.350050 -587.399048 93.684937\nv -24.999846 -589.465576 95.845535\nv -25.121576 -587.218750 95.447151\nv -27.289745 -589.346802 97.006149\nv -27.353794 -587.103027 96.578522\nv -29.828093 -589.306030 97.406029\nv -29.828199 -587.063232 96.968361\nv -32.366417 -589.347046 97.006012\nv -32.302582 -587.103271 96.578392\nv -34.656246 -589.466064 95.845284\nv -34.534729 -587.219238 95.446907\nv -36.473431 -589.651245 94.037476\nv -36.306141 -587.399719 93.684593\nv -37.640106 -589.884521 91.759491\nv -37.443424 -587.627197 91.464043\nv -36.849117 -587.924133 86.713844\nv -37.640026 -588.767334 86.541840\nv -38.042141 -588.508850 89.066917\nv -37.210522 -587.691711 88.983322\nv -35.800438 -588.133667 84.666557\nv -36.473209 -589.000549 84.263885\nv -34.167133 -588.299988 83.041824\nv -34.655907 -589.185608 82.456139\nv -32.109070 -588.406799 81.998772\nv -32.366009 -589.304382 81.295532\nv -29.827724 -588.443481 81.639336\nv -29.827658 -589.345215 80.895683\nv -27.546398 -588.406555 81.998894\nv -27.289335 -589.304138 81.295670\nv -25.488407 -588.299561 83.042053\nv -24.999508 -589.185120 82.456390\nv -23.855204 -588.133057 84.666870\nv -23.182318 -588.999878 84.264236\nv -22.806652 -587.923401 86.714211\nv -22.015644 -588.766541 86.542252\nv -22.445395 -587.690918 88.983711\nv -21.613693 -588.507996 89.067345\nv -22.806793 -587.458557 91.253181\nv -22.015806 -588.249390 91.592514\nv -23.855476 -587.248962 93.300415\nv -23.182621 -588.016174 93.870407\nv -25.488785 -587.082642 94.925171\nv -24.999926 -587.831177 95.678146\nv -27.546841 -586.975891 95.968269\nv -27.289825 -587.712402 96.838776\nv -29.828190 -586.939331 96.327644\nv -29.828176 -587.671631 97.238640\nv -32.109516 -586.976135 95.968147\nv -32.366501 -587.712646 96.838638\nv -34.167503 -587.083069 94.924942\nv -34.656326 -587.831665 95.677895\nv -35.800709 -587.249573 93.300102\nv -36.473515 -588.016846 93.870056\nv -36.849258 -587.459290 91.252815\nv -37.640186 -588.250183 91.592102\nv -37.183151 -590.386597 86.856888\nv -37.561752 -590.143188 89.234337\nv -37.183304 -589.899658 91.611816\nv -36.084850 -589.679993 93.756622\nv -34.373917 -589.505615 95.458725\nv -32.217983 -589.393616 96.551598\nv -29.828079 -589.354919 96.928215\nv -27.438152 -589.393372 96.551720\nv -25.282146 -589.505127 95.458961\nv -23.571106 -589.679321 93.756950\nv -22.472517 -589.898865 91.612206\nv -22.093912 -590.142395 89.234741\nv -22.472368 -590.385803 86.857277\nv -23.570820 -590.605530 84.712486\nv -25.281754 -590.779907 83.010338\nv -27.437691 -590.891968 81.917473\nv -29.827591 -590.930664 81.540855\nv -32.217518 -590.892212 81.917351\nv -34.373520 -590.780396 83.010101\nv -36.084564 -590.606201 84.712158\nv -32.217503 -591.146545 81.943413\nv -34.373512 -591.034729 83.036148\nv -36.084549 -590.860535 84.738190\nv -37.183136 -590.640930 86.882950\nv -37.561741 -590.397461 89.260368\nv -37.183289 -590.153992 91.637863\nv -36.084839 -589.934326 93.782654\nv -34.373901 -589.759888 95.484787\nv -32.217968 -589.647949 96.577660\nv -29.828066 -589.609253 96.954247\nv -27.438141 -589.647705 96.577782\nv -25.282135 -589.759399 95.485023\nv -23.571093 -589.933655 93.782982\nv -22.472506 -590.153198 91.638252\nv -22.093899 -590.396667 89.260773\nv -22.472355 -590.640137 86.883339\nv -23.570808 -590.859863 84.738518\nv -25.281740 -591.034241 83.036385\nv -27.437677 -591.146301 81.943535\nv -29.827579 -591.184937 81.566948\nv -24.986761 -591.075623 82.632507\nv -27.282587 -591.194885 81.468750\nv -29.827562 -591.236084 81.067680\nv -32.372562 -591.195129 81.468613\nv -34.668461 -591.076111 82.632248\nv -36.490524 -590.890503 84.444717\nv -37.660397 -590.656738 86.728607\nv -38.063568 -590.397522 89.260353\nv -37.660557 -590.138184 91.792130\nv -36.490829 -589.904236 94.076080\nv -34.668880 -589.718567 95.888626\nv -32.373055 -589.599304 97.052414\nv -29.828083 -589.558105 97.453484\nv -27.283081 -589.599060 97.052551\nv -24.987181 -589.718079 95.888885\nv -23.165119 -589.903564 94.076431\nv -21.995249 -590.137390 91.792542\nv -21.592077 -590.396667 89.260788\nv -21.995087 -590.655945 86.729019\nv -23.164814 -590.889832 84.445068\nv -21.927530 -591.125549 89.335434\nv -22.314123 -591.374268 86.906837\nv -23.436201 -591.598694 84.715889\nv -25.183929 -591.776855 82.977119\nv -27.386236 -591.891235 81.860779\nv -29.827538 -591.930786 81.476006\nv -32.268860 -591.891479 81.860649\nv -34.471237 -591.777344 82.976875\nv -36.219074 -591.599365 84.715553\nv -37.341290 -591.375061 86.906441\nv -37.728039 -591.126404 89.335022\nv -37.341446 -590.877686 91.763649\nv -36.219368 -590.653259 93.954552\nv -34.471642 -590.475159 95.693291\nv -32.269333 -590.360657 96.809639\nv -29.828033 -590.321167 97.194344\nv -27.386709 -590.360413 96.809769\nv -25.184334 -590.474670 95.693535\nv -23.436495 -590.652588 93.954887\nv -22.314278 -590.876892 91.764046\nv -25.625381 -591.536011 95.191879\nv -24.043577 -591.697083 93.618370\nv -23.027962 -591.900024 91.635689\nv -22.677952 -592.125183 89.437759\nv -23.027822 -592.350281 87.239861\nv -24.043312 -592.553345 85.257057\nv -25.625015 -592.714539 83.683472\nv -27.618118 -592.818115 82.673195\nv -29.827511 -592.853882 82.325005\nv -32.036922 -592.818359 82.673080\nv -34.030090 -592.714966 83.683250\nv -35.611897 -592.553955 85.256752\nv -36.627514 -592.351013 87.239502\nv -36.977520 -592.125916 89.437386\nv -36.627651 -591.900757 91.635330\nv -35.612160 -591.697693 93.618065\nv -34.030453 -591.536438 95.191658\nv -32.037350 -591.432922 96.201996\nv -29.827961 -591.397217 96.550148\nv -27.618547 -591.432678 96.202110\nv -31.592831 -592.858093 94.973000\nv -29.827850 -592.829529 95.251106\nv -28.062857 -592.857910 94.973091\nv -26.470613 -592.940491 94.166084\nv -25.206984 -593.069092 92.909096\nv -24.395657 -593.231262 91.325165\nv -24.116053 -593.411072 89.569359\nv -24.395546 -593.590881 87.813599\nv -25.206772 -593.753113 86.229622\nv -26.470322 -593.881897 84.972588\nv -28.062513 -593.964600 84.165443\nv -29.827492 -593.993225 83.887321\nv -31.592487 -593.964783 84.165352\nv -33.184731 -593.882263 84.972412\nv -34.448360 -593.753601 86.229378\nv -35.259686 -593.591431 87.813309\nv -35.539291 -593.411682 89.569054\nv -35.259800 -593.231812 91.324875\nv -34.448574 -593.069580 92.908852\nv -33.185020 -592.940857 94.165909\nv -33.579777 -594.212097 90.876678\nv -33.019436 -594.099976 91.970764\nv -32.146660 -594.011108 92.839043\nv -31.046879 -593.953979 93.396523\nv -29.827751 -593.934265 93.588661\nv -28.608606 -593.953857 93.396584\nv -27.508791 -594.010864 92.839165\nv -26.635960 -594.099670 91.970932\nv -26.075550 -594.211670 90.876877\nv -25.882418 -594.335876 89.664055\nv -26.075474 -594.460083 88.451263\nv -26.635815 -594.572205 87.357147\nv -27.508591 -594.661133 86.488853\nv -28.608370 -594.718323 85.931404\nv -29.827501 -594.737976 85.739265\nv -31.046642 -594.718445 85.931343\nv -32.146458 -594.661377 86.488731\nv -33.019287 -594.572510 87.356979\nv -33.579700 -594.460510 88.451065\nv -33.772827 -594.336304 89.663849\nv -31.375477 -595.348328 88.637039\nv -31.647264 -595.294006 89.167671\nv -31.740931 -595.233704 89.755775\nv -31.647303 -595.173523 90.343987\nv -31.375547 -595.119202 90.874619\nv -30.952269 -595.076050 91.295723\nv -30.418896 -595.048279 91.566109\nv -29.827641 -595.038757 91.659264\nv -29.236380 -595.048218 91.566139\nv -28.702990 -595.075928 91.295784\nv -28.279682 -595.119019 90.874702\nv -28.007895 -595.173340 90.344078\nv -27.914230 -595.233521 89.755875\nv -28.007856 -595.293823 89.167763\nv -28.279612 -595.348145 88.637123\nv -28.702892 -595.391235 88.215996\nv -29.236265 -595.419006 87.945671\nv -29.827520 -595.428589 87.852470\nv -30.418781 -595.419067 87.945641\nv -30.952171 -595.391357 88.215935\nv -28.303713 -562.079346 148.180740\nv -29.126724 -561.904663 148.191147\nv -29.153311 -561.437927 148.726578\nv -28.416542 -561.507996 148.686569\nv -27.796213 -562.863525 148.475632\nv -27.501261 -563.021484 148.151932\nv -27.761894 -562.451538 148.167923\nv -27.874706 -561.880066 148.675034\nv -29.195827 -562.721985 148.803787\nv -28.361074 -562.763550 148.692963\nv -28.439598 -561.779968 148.891388\nv -29.176369 -561.709778 148.931458\nv -27.536266 -568.728882 145.366928\nv -27.524498 -567.244385 146.297272\nv -27.831501 -567.578369 146.636902\nv -27.842779 -569.200928 145.858154\nv -29.253948 -569.689026 146.356003\nv -28.415342 -569.520935 146.188065\nv -28.404150 -567.896667 146.968002\nv -29.240803 -567.959900 147.109222\nv -28.377092 -564.516663 148.220673\nv -29.211813 -564.475342 148.332535\nv -29.226784 -566.221619 147.767914\nv -28.390095 -566.158875 147.626984\nv -27.517418 -564.773437 147.675735\nv -27.812284 -564.616211 148.001770\nv -27.825352 -566.257751 147.406525\nv -27.518270 -565.925415 147.065506\nv -28.427740 -571.238953 145.340408\nv -29.266302 -571.407898 145.507919\nv -29.277845 -573.102295 144.571045\nv -28.440311 -572.917175 144.345551\nv -27.565166 -572.067078 143.347488\nv -27.548883 -570.442505 144.523117\nv -27.855265 -570.917236 145.011963\nv -27.867931 -572.593506 144.018753\nv -27.594683 -575.236023 140.761002\nv -27.580406 -573.665344 142.093430\nv -27.882944 -574.196289 142.761597\nv -27.894398 -575.817261 141.591095\nv -29.298843 -576.412537 142.430740\nv -28.462473 -576.209106 142.148163\nv -28.451200 -574.584656 143.320404\nv -29.288664 -574.770935 143.545258\nv -28.472185 -577.820557 140.945709\nv -29.308462 -578.025757 141.227692\nv -29.317533 -579.596924 139.945358\nv -28.481901 -579.376770 139.615845\nv -27.617271 -578.341492 138.084396\nv -27.604858 -576.838989 139.563416\nv -27.904297 -577.425415 140.390488\nv -27.914207 -578.978027 139.062683\nv -27.639687 -581.219177 134.924011\nv -27.628857 -579.802002 136.537689\nv -27.925413 -580.445496 137.511932\nv -27.934608 -581.907471 136.028168\nv -29.334339 -582.607727 137.145370\nv -28.499531 -582.369568 136.769470\nv -28.490616 -580.902527 138.255737\nv -29.326134 -581.124695 138.584412\nv -28.507565 -583.803833 135.254120\nv -29.342230 -584.044495 135.628998\nv -29.349815 -585.422974 134.047668\nv -28.516090 -585.275757 133.541824\nv -27.659317 -584.168274 131.493698\nv -27.648418 -582.640686 133.415344\nv -27.942921 -583.336731 134.515488\nv -27.951756 -584.802979 132.806030\nv -27.685471 -587.660767 126.903572\nv -27.671497 -585.843811 129.325073\nv -27.963230 -586.490967 130.632385\nv -27.972193 -587.829590 128.790359\nv -29.364313 -587.999878 130.694275\nv -28.531979 -587.939514 130.055283\nv -28.523649 -586.591064 131.896820\nv -29.357159 -586.741882 132.402390\nv -28.539314 -589.130737 128.285263\nv -29.371349 -589.195801 128.924576\nv -29.378254 -590.319397 127.107948\nv -28.638586 -590.094604 126.989113\nv -27.990541 -590.580933 124.238342\nv -27.694296 -588.828491 125.133553\nv -27.980124 -589.011414 127.020187\nv -28.079840 -589.968323 125.723640\nv -29.391808 -592.346130 123.339943\nv -28.556469 -591.753052 123.636871\nv -28.645424 -591.144226 125.128471\nv -29.385061 -591.369873 125.245949\nv -28.562958 -592.656921 121.692657\nv -29.398523 -593.247620 121.391624\nv -29.405174 -594.066467 119.417198\nv -28.569624 -593.504089 119.638855\nv -27.706497 -590.780090 120.529312\nv -27.699644 -589.744751 123.211403\nv -27.996574 -591.489746 122.302864\nv -28.002758 -592.342285 120.257820\nv -27.718777 -592.295776 116.294952\nv -27.713125 -591.626831 118.222687\nv -28.009785 -593.186035 117.937950\nv -28.016165 -593.867615 115.843925\nv -29.418299 -595.454834 115.396889\nv -28.582710 -594.920715 115.542168\nv -28.576029 -594.242004 117.643776\nv -29.411766 -594.802307 117.418419\nv -28.589045 -595.490662 113.502968\nv -29.424776 -596.023254 113.354362\nv -29.431135 -596.503418 111.307869\nv -28.539341 -595.825195 111.291290\nv -27.729832 -592.952393 112.793823\nv -27.724382 -592.872559 114.273514\nv -28.022207 -594.440308 113.811745\nv -27.972193 -594.778076 111.606659\nv -27.743593 -591.867126 110.052490\nv -27.736290 -592.616699 111.385834\nv -27.979170 -594.434753 110.196350\nv -27.741007 -593.325439 108.998215\nv -27.741699 -595.034729 106.370361\nv -27.740351 -594.382263 107.768524\nv -27.978193 -595.498047 108.961380\nv -28.040255 -596.109131 106.782219\nv -29.443367 -597.198608 107.209755\nv -28.607473 -596.830505 107.061958\nv -28.545462 -596.217102 109.246780\nv -29.437340 -596.895264 109.259193\nv -28.613317 -597.044678 105.015862\nv -29.449186 -597.413818 105.161362\nv -29.454704 -597.539368 103.130905\nv -28.618845 -597.208374 102.897606\nv -27.751867 -595.461792 102.378525\nv -27.747641 -595.244080 104.336853\nv -28.046135 -596.321289 104.741051\nv -28.051702 -596.483154 102.628014\nv -27.764523 -595.784485 97.274719\nv -27.757277 -595.645691 100.023392\nv -28.057129 -596.668823 100.264702\nv -28.062260 -596.647888 98.191322\nv -29.464643 -597.523682 99.129272\nv -28.628990 -597.227112 98.810417\nv -28.624081 -597.243164 100.888680\nv -29.459875 -597.575745 101.119705\nv -28.633398 -597.084656 96.844109\nv -29.468948 -597.383423 97.160706\nv -29.472696 -597.157043 95.230637\nv -28.731186 -597.004761 95.333565\nv -28.071102 -596.040222 93.395958\nv -27.769444 -595.630859 95.320404\nv -28.066877 -596.500977 96.229744\nv -28.164818 -596.417664 94.722908\nv -29.478233 -596.449646 91.489365\nv -28.640911 -596.309875 92.118767\nv -28.734247 -596.694092 93.443047\nv -29.475815 -596.845581 93.339905\nv -28.642302 -595.835022 90.307365\nv -29.479883 -595.970337 89.679947\nv -29.470772 -595.483582 88.736969\nv -28.731598 -595.473389 89.165031\nv -28.041676 -594.845581 91.448051\nv -27.769497 -595.179443 93.500397\nv -28.071960 -595.574829 91.581047\nv -28.160925 -595.218933 90.436180\nv -29.418802 -594.517029 89.425972\nv -28.591644 -594.621155 90.091896\nv -28.711233 -594.988892 89.081123\nv -29.450401 -594.998962 88.653687\nv -28.550076 -594.122864 91.716827\nv -29.376968 -594.023193 91.049660\nv -29.345879 -593.591370 92.792580\nv -28.614359 -593.710266 92.923103\nv -27.971642 -593.758179 95.874222\nv -27.729279 -594.658569 95.130112\nv -28.000645 -594.338257 93.074944\nv -28.065331 -593.919006 94.282570\nv -29.317852 -592.883972 96.634911\nv -28.501215 -593.166199 96.374619\nv -28.594648 -593.330444 94.785591\nv -29.326126 -593.212585 94.653801\nv -28.504402 -592.887146 98.479294\nv -29.321211 -592.602722 98.737648\nv -29.323912 -592.315796 100.583504\nv -28.505283 -592.627930 100.512268\nv -27.724602 -594.251282 99.980347\nv -27.731632 -594.390381 97.243912\nv -27.974493 -593.483459 97.982635\nv -27.975054 -593.228333 100.019073\nv -27.968826 -592.784180 103.877136\nv -27.715288 -593.849731 104.274368\nv -27.719368 -594.067444 102.325027\nv -27.969992 -593.043762 102.355957\nv -29.325613 -592.028809 102.171394\nv -29.326006 -591.746826 103.500816\nv -28.505732 -592.083313 103.619186\nv -28.506926 -592.341431 102.102173\nv -28.593340 -587.425049 108.111412\nv -29.423100 -587.155029 107.814445\nv -29.442234 -586.203430 108.656593\nv -28.705458 -586.435120 108.677269\nv -28.034996 -587.472656 110.307533\nv -27.755714 -588.854919 109.663223\nv -28.037519 -587.992310 108.726875\nv -28.149733 -587.000488 109.294106\nv -29.418180 -586.117615 110.961250\nv -28.589203 -586.559998 110.737953\nv -28.703794 -586.090027 109.724770\nv -29.440586 -585.858459 109.702965\nv -28.484804 -587.696777 117.140488\nv -29.305647 -587.195801 117.293999\nv -29.301460 -586.611145 118.585197\nv -28.480545 -587.088257 118.617828\nv -27.686579 -589.616089 118.325417\nv -27.691917 -590.286255 116.412086\nv -27.946859 -588.726807 116.848862\nv -27.942387 -588.120056 118.332382\nv -27.928854 -586.328308 122.570969\nv -27.673876 -587.731567 123.276329\nv -27.680313 -588.768188 120.614662\nv -27.936356 -587.271912 120.608521\nv -29.287539 -584.952942 121.883766\nv -28.466740 -585.402161 122.106796\nv -28.474358 -586.341919 120.152130\nv -29.295309 -585.865112 120.116096\nv -28.457804 -584.316589 124.111847\nv -29.278540 -583.869507 123.884621\nv -29.268585 -582.731812 125.845070\nv -28.447140 -583.064636 126.132828\nv -27.650364 -584.835815 127.713478\nv -27.665255 -586.635803 125.301796\nv -27.920042 -585.238647 124.584229\nv -27.909512 -583.982239 126.613724\nv -27.883713 -580.967529 130.703583\nv -27.625685 -581.662170 131.787369\nv -27.637342 -583.175781 129.873306\nv -27.895947 -582.333008 128.765762\nv -29.245646 -580.297241 129.640579\nv -28.423740 -580.511780 129.988846\nv -28.436300 -581.870972 128.055023\nv -29.257633 -581.540771 127.764061\nv -28.410830 -579.213806 131.823898\nv -29.232580 -579.002197 131.473541\nv -29.218464 -577.664001 133.251663\nv -28.397474 -577.858215 133.556458\nv -27.602222 -578.941711 135.239609\nv -27.613565 -580.349243 133.631790\nv -27.871119 -579.663574 132.542496\nv -27.858070 -578.302368 134.278580\nv -27.830112 -575.416931 137.438553\nv -27.577217 -575.997437 138.254395\nv -27.590128 -577.490662 136.780640\nv -27.845600 -576.858337 135.815384\nv -29.186840 -574.862610 136.640228\nv -28.366674 -575.038208 136.900940\nv -28.382378 -576.475464 135.280838\nv -29.203238 -576.283691 134.974136\nv -28.349152 -573.575195 138.511734\nv -29.169212 -573.401733 138.249298\nv -29.150394 -571.911011 139.791214\nv -28.331474 -572.066162 139.997437\nv -27.545656 -572.959229 141.200317\nv -27.560246 -574.523926 139.872437\nv -27.812809 -573.949707 139.052261\nv -27.795343 -572.436584 140.540665\nv -27.759315 -569.282898 143.139740\nv -27.513527 -569.748108 143.621796\nv -27.530109 -571.366882 142.450226\nv -27.779572 -570.848694 141.787292\nv -29.108881 -568.845581 142.672241\nv -28.291103 -568.982056 142.823456\nv -28.311470 -570.545410 141.473312\nv -29.130308 -570.391968 141.265671\nv -28.268312 -567.408508 144.163361\nv -29.086039 -567.273315 144.010895\nv -29.076599 -565.790833 145.228973\nv -28.256390 -565.943970 145.297348\nv -27.479153 -566.686646 145.894379\nv -27.491014 -568.168762 144.967392\nv -27.736635 -567.707031 144.481995\nv -27.724810 -566.240356 145.618011\nv -27.732508 -563.649231 147.287399\nv -27.471916 -564.219543 147.267700\nv -27.472839 -565.369812 146.659821\nv -27.718443 -564.924988 146.381042\nv -29.097294 -563.102051 147.314651\nv -28.274300 -563.276794 147.302704\nv -28.260204 -564.552246 146.399063\nv -29.080397 -564.399719 146.329330\nv -31.034433 -563.338379 147.328003\nv -30.201059 -563.130493 147.327286\nv -30.184162 -564.428284 146.342300\nv -31.019865 -564.620178 146.429276\nv -31.889414 -565.463013 146.698425\nv -31.888706 -564.310059 147.303360\nv -31.596979 -563.731506 147.320251\nv -31.582443 -565.013367 146.419174\nv -31.600456 -567.797424 144.523880\nv -31.907373 -568.264404 145.010315\nv -31.895582 -566.781616 145.935410\nv -31.588667 -566.330505 145.658417\nv -30.180359 -565.819214 145.242279\nv -30.189796 -567.301636 144.024460\nv -31.027933 -567.476440 144.195419\nv -31.016048 -566.011536 145.328232\nv -31.122503 -562.807983 148.705597\nv -30.300457 -562.739014 148.808289\nv -30.280996 -561.726868 148.935806\nv -31.016964 -561.821106 148.902390\nv -31.627232 -562.522461 148.191818\nv -31.918913 -563.100830 148.178513\nv -31.661982 -562.928589 148.495712\nv -31.556416 -561.942017 148.693314\nv -30.257940 -561.454956 148.730896\nv -30.231352 -561.921692 148.195618\nv -31.064711 -562.129578 148.197266\nv -30.993908 -561.549072 148.697556\nv -31.176712 -569.565125 146.204956\nv -30.358582 -569.705566 146.362030\nv -30.345436 -567.976562 147.114838\nv -31.165554 -567.940674 146.983704\nv -31.941801 -567.327637 146.330643\nv -31.953495 -568.812683 145.402344\nv -31.708345 -569.267578 145.884903\nv -31.697104 -567.644897 146.662079\nv -31.935080 -564.852295 147.703659\nv -31.935715 -566.006958 147.096466\nv -31.691093 -566.322693 147.429382\nv -31.678061 -564.680969 148.023087\nv -30.331417 -566.238342 147.773132\nv -30.316448 -564.492249 148.337463\nv -31.138525 -564.560852 148.234253\nv -31.151497 -566.203186 147.641754\nv -31.223839 -576.252258 142.169022\nv -30.403477 -576.428650 142.438400\nv -30.393303 -574.787170 143.552444\nv -31.212572 -574.628113 143.340286\nv -31.997629 -573.748047 142.133484\nv -32.011898 -575.318481 140.802658\nv -31.759962 -575.882507 141.623306\nv -31.748507 -574.261902 142.792374\nv -31.966110 -570.525879 144.559937\nv -31.982391 -572.150085 143.386017\nv -31.733498 -572.659485 144.048080\nv -31.720831 -570.983582 145.040009\nv -30.382481 -573.118652 144.577805\nv -30.370937 -571.424255 145.514221\nv -31.189110 -571.282898 145.358261\nv -31.201687 -572.960876 144.364410\nv -31.260883 -582.411804 136.794556\nv -30.438969 -582.623413 137.154724\nv -30.430767 -581.140442 138.593292\nv -31.251976 -580.945007 138.279755\nv -32.046047 -579.883484 136.584259\nv -32.056866 -581.300415 134.972229\nv -31.800144 -581.971619 136.066238\nv -31.790956 -580.509949 137.548553\nv -32.022072 -576.921143 139.606628\nv -32.034466 -578.423279 138.129242\nv -31.779758 -579.042725 139.097733\nv -31.769852 -577.490356 140.424149\nv -30.422167 -579.612793 139.953842\nv -30.413097 -578.041748 141.235718\nv -31.233553 -577.863525 140.967621\nv -31.243265 -579.419495 139.638794\nv -31.293354 -587.980469 130.084488\nv -30.468937 -588.015259 130.705353\nv -30.461784 -586.757324 132.413010\nv -31.285007 -586.632507 131.925079\nv -32.088768 -585.922363 129.377853\nv -32.102852 -587.737305 126.957741\nv -31.837820 -587.890869 128.833923\nv -31.828846 -586.552795 130.674530\nv -32.065590 -582.721680 133.465179\nv -32.076515 -584.248352 131.545013\nv -31.817295 -584.866333 132.847015\nv -31.808449 -583.400635 134.554901\nv -30.454445 -585.438477 134.057831\nv -30.446857 -584.060181 135.638779\nv -31.268913 -583.845947 135.280304\nv -31.277454 -585.317383 133.569000\nv -31.317806 -591.793640 123.669907\nv -30.496410 -592.361389 123.352791\nv -30.489670 -591.385132 125.258308\nv -31.222727 -591.181519 125.158218\nv -31.845737 -589.072510 127.065247\nv -32.111656 -588.904846 125.189339\nv -31.856133 -590.641907 124.285660\nv -31.761400 -590.025940 125.767448\nv -30.482866 -590.334717 127.119896\nv -30.475965 -589.211060 128.936066\nv -31.300676 -589.171570 128.315567\nv -31.215900 -590.131958 127.017822\nv -31.343952 -594.961609 115.579636\nv -30.522886 -595.469849 115.411400\nv -30.516356 -594.817505 117.432533\nv -31.337307 -594.282593 117.680038\nv -32.130199 -591.705933 118.285393\nv -32.135780 -592.375427 116.359459\nv -31.881550 -593.930115 115.898010\nv -31.875210 -593.248230 117.990479\nv -32.116993 -589.820923 123.268761\nv -32.123680 -590.858032 120.589760\nv -31.868292 -592.403259 120.308121\nv -31.862146 -591.550476 122.351562\nv -30.509771 -594.081604 119.430840\nv -30.503122 -593.262756 121.404793\nv -31.324286 -592.697327 121.726685\nv -31.330914 -593.544739 119.674164\nv -31.368654 -596.871277 107.103333\nv -30.547930 -597.213623 107.225838\nv -30.541910 -596.910278 109.274803\nv -31.417027 -596.260803 109.289276\nv -32.157143 -594.463684 107.839775\nv -32.158588 -595.114563 106.442039\nv -31.905539 -596.171631 106.842148\nv -31.953869 -595.563354 109.021988\nv -32.159847 -591.956665 110.124580\nv -32.157585 -593.410095 109.069572\nv -31.954630 -594.503296 110.257233\nv -32.152901 -592.701355 111.455437\nv -32.141361 -592.952271 114.339439\nv -32.146683 -593.033813 112.861443\nv -31.947899 -594.843384 111.665405\nv -31.887566 -594.502869 113.867203\nv -30.535709 -596.518494 111.323158\nv -30.529358 -596.038391 113.369255\nv -31.350269 -595.531555 113.541397\nv -31.410913 -595.868835 111.332718\nv -31.390150 -597.267334 98.854904\nv -30.569178 -597.538757 99.146660\nv -30.564421 -597.590820 101.136772\nv -31.385237 -597.283691 100.932510\nv -32.174217 -595.723694 100.098335\nv -32.181561 -595.860718 97.350624\nv -31.927588 -596.708618 98.255402\nv -31.922457 -596.729797 100.327759\nv -32.164505 -595.323975 104.409843\nv -32.168747 -595.541077 102.452477\nv -31.916967 -596.545349 102.690170\nv -31.911402 -596.383911 104.802216\nv -30.559256 -597.554382 103.147591\nv -30.553741 -597.428833 105.177788\nv -31.374481 -597.085510 105.058075\nv -31.380014 -597.248962 102.940643\nv -31.402020 -596.350342 92.165787\nv -30.582747 -596.464844 91.507942\nv -30.580334 -596.860718 93.358131\nv -31.311337 -596.731140 93.486206\nv -31.932182 -596.561768 96.294830\nv -32.186459 -595.707153 95.397453\nv -31.936377 -596.101135 93.462387\nv -31.846083 -596.475159 94.785492\nv -30.577219 -597.172241 95.248634\nv -30.573479 -597.398560 97.178444\nv -31.394547 -597.125000 96.889374\nv -31.308292 -597.041809 95.376129\nv -31.352280 -594.668396 90.141602\nv -30.523310 -594.532227 89.444618\nv -30.554907 -595.014160 88.672523\nv -31.288292 -595.026184 89.125519\nv -31.937212 -595.635864 91.648346\nv -32.186489 -595.255920 93.578392\nv -31.906473 -594.913330 91.517548\nv -31.842144 -595.276611 90.500549\nv -30.575277 -595.498779 88.755882\nv -30.584391 -595.985535 89.698738\nv -31.403393 -595.875671 90.354980\nv -31.308657 -595.510681 89.209564\nv -31.260542 -593.232971 96.428894\nv -30.421473 -592.912292 96.657204\nv -30.429741 -593.240906 94.676384\nv -31.169937 -593.393799 94.837212\nv -31.864548 -594.419067 93.148209\nv -32.145382 -594.748108 95.211800\nv -31.835129 -593.845337 95.948318\nv -31.744770 -594.002930 94.354240\nv -30.449488 -593.619751 92.815376\nv -30.480572 -594.051575 91.072762\nv -31.309813 -594.183228 91.770508\nv -31.189627 -593.773804 92.975372\nv -31.265078 -592.150330 103.671112\nv -30.429655 -591.774963 103.522041\nv -30.429258 -592.057007 102.192894\nv -31.266279 -592.408142 102.154541\nv -32.135345 -594.159790 102.403603\nv -32.131245 -593.942627 104.352058\nv -31.832275 -592.872803 103.947830\nv -31.833447 -593.132141 102.427368\nv -32.147766 -594.479736 97.324242\nv -32.140636 -594.342529 100.059868\nv -31.838570 -593.315613 100.091125\nv -31.838009 -593.570496 98.055649\nv -30.427551 -592.343994 100.605217\nv -30.424839 -592.630981 98.759621\nv -31.263750 -592.953796 98.532867\nv -31.264626 -592.694763 100.565170\nv -31.348499 -586.628723 110.786667\nv -30.521858 -586.145691 110.980919\nv -30.544258 -585.886597 109.722771\nv -31.279102 -586.154602 109.770615\nv -31.900690 -588.085876 108.795425\nv -32.171070 -588.957642 109.739693\nv -31.898186 -587.566284 110.375153\nv -31.828930 -587.089966 109.358856\nv -30.545904 -586.231567 108.676598\nv -30.526762 -587.183105 107.834648\nv -31.352613 -587.493713 108.161209\nv -31.280754 -586.499817 108.723511\nv -31.226278 -585.468201 122.150696\nv -30.391245 -584.980957 121.902092\nv -30.399015 -585.893066 120.134697\nv -31.233858 -586.408264 120.197128\nv -32.096603 -588.858948 120.680138\nv -32.090328 -587.820496 123.338875\nv -31.792641 -586.414612 122.629608\nv -31.800102 -587.358582 120.668640\nv -31.810457 -588.815125 116.912064\nv -32.108028 -590.378906 116.481468\nv -32.102753 -589.708130 118.393120\nv -31.806021 -588.208069 118.394485\nv -30.405159 -586.639038 118.604042\nv -30.409342 -587.223755 117.313148\nv -31.244261 -587.763489 117.186905\nv -31.240034 -587.154663 118.663513\nv -31.183287 -580.578613 130.029236\nv -30.349373 -580.325256 129.657394\nv -30.361357 -581.568726 127.781258\nv -31.195854 -581.937439 128.096237\nv -32.053638 -583.268311 129.931671\nv -32.041954 -581.755493 131.844269\nv -31.747442 -581.056274 130.757370\nv -31.759676 -582.421265 128.820770\nv -31.783848 -585.325073 124.641602\nv -32.081726 -586.724854 125.362724\nv -32.066727 -584.926941 127.773155\nv -31.773315 -584.069153 126.669693\nv -30.372307 -582.759827 125.862587\nv -30.382257 -583.897461 123.902504\nv -31.217358 -584.382690 124.154861\nv -31.206686 -583.131042 126.174927\nv -31.734859 -579.752380 132.594849\nv -32.029850 -580.442749 133.686966\nv -32.018517 -579.035461 135.293335\nv -31.721823 -578.391296 134.329559\nv -30.322205 -577.692017 133.267761\nv -30.336313 -579.030212 131.489975\nv -31.170387 -579.280701 131.863358\nv -31.157042 -577.925354 133.594971\nv -31.126261 -575.105469 136.937607\nv -30.290585 -574.890747 136.655640\nv -30.306980 -576.311768 134.989853\nv -31.141954 -576.542603 135.318390\nv -32.006432 -577.584656 136.832901\nv -31.993532 -576.091675 138.305008\nv -31.693890 -575.506226 137.486954\nv -31.709368 -576.947449 135.865143\nv -31.050718 -569.049866 142.856400\nv -30.212639 -568.873901 142.686188\nv -30.234064 -570.420166 141.279953\nv -31.071075 -570.613098 141.507187\nv -31.946455 -571.461975 142.496231\nv -31.929878 -569.843384 143.666260\nv -31.623125 -569.373047 143.182922\nv -31.643373 -570.938538 141.831711\nv -31.676600 -574.039124 139.099319\nv -31.976574 -574.618347 139.921356\nv -31.961994 -573.054016 141.247818\nv -31.659140 -572.526306 140.586411\nv -30.254147 -571.939270 139.805817\nv -30.272963 -573.429810 138.264267\nv -31.108747 -573.642639 138.547409\nv -31.091076 -572.133667 140.032135\nv -29.324835 -591.474182 104.571098\nv -29.333973 -590.877258 105.541893\nv -28.508875 -591.181702 105.749680\nv -28.504566 -591.809998 104.691055\nv -27.712595 -592.927063 106.743546\nv -27.714176 -593.573669 105.353714\nv -27.967680 -592.509827 104.952042\nv -27.972012 -591.880249 106.014038\nv -27.997366 -589.556885 108.078163\nv -27.715374 -590.423096 109.012405\nv -27.713017 -591.875854 107.965408\nv -27.972271 -590.833130 107.230240\nv -29.353409 -589.957397 106.409050\nv -29.383125 -588.716125 107.168129\nv -28.553307 -588.987366 107.464233\nv -28.528345 -590.260925 106.618301\nv -30.486788 -588.744263 107.188606\nv -30.457069 -589.985474 106.429787\nv -31.287661 -590.328796 106.669083\nv -31.312574 -589.056030 107.514694\nv -32.128681 -591.973572 108.042244\nv -32.130718 -590.525635 109.090019\nv -31.860527 -589.650330 108.147720\nv -31.835480 -590.925720 107.300339\nv -31.831144 -592.598328 105.022125\nv -32.130146 -593.666504 105.430672\nv -32.128471 -593.021484 106.820168\nv -31.835430 -591.969604 106.083817\nv -30.437628 -590.905273 105.562843\nv -30.428486 -591.502197 104.592201\nv -31.263922 -591.877014 104.742569\nv -31.268183 -591.249451 105.800980\nv -30.411264 -587.650940 116.264214\nv -30.423464 -587.757935 115.102852\nv -31.254177 -588.270752 114.941269\nv -31.246260 -588.190063 116.135986\nv -32.115150 -590.890869 113.949593\nv -32.110409 -590.802185 115.420113\nv -31.812609 -589.240356 115.857025\nv -31.820684 -589.319336 114.659058\nv -31.854774 -588.431824 111.851501\nv -32.127354 -589.828247 111.215614\nv -32.120853 -590.565552 112.547005\nv -31.826036 -588.998962 113.259186\nv -30.445953 -587.543518 113.832848\nv -30.478746 -587.006470 112.457832\nv -31.305290 -587.491089 112.263306\nv -31.276751 -588.055176 113.670364\nv -28.545980 -587.422485 112.214752\nv -29.375067 -586.978394 112.438164\nv -29.342268 -587.515564 113.813347\nv -28.517378 -587.987610 113.622437\nv -27.705128 -590.468018 112.473343\nv -27.711983 -589.725708 111.139389\nv -27.991570 -588.338501 111.784058\nv -27.962761 -588.906555 113.192520\nv -27.949026 -589.152039 115.793137\nv -27.694315 -590.709473 115.349998\nv -27.699183 -590.796570 113.877892\nv -27.957170 -589.230225 114.594330\nv -29.319778 -587.729919 115.083427\nv -29.307577 -587.622925 116.244881\nv -28.486813 -588.123352 116.089172\nv -28.494795 -588.203186 114.893677\nv 0.021406 -367.002594 -79.865036\nv 0.912333 -367.002502 -79.787071\nv 1.776188 -367.002533 -79.555573\nv 2.586708 -367.002502 -79.177574\nv 3.319284 -367.002472 -78.664635\nv 3.951647 -367.002472 -78.032227\nv 4.464589 -367.002472 -77.299629\nv 4.842548 -367.002502 -76.489067\nv 5.073975 -367.002533 -75.625221\nv 5.151912 -367.002594 -74.734268\nv 5.073928 -367.002625 -73.843346\nv 4.842455 -367.002716 -72.979485\nv 4.464454 -367.002747 -72.168999\nv 3.951474 -367.002808 -71.436401\nv 3.319077 -367.002899 -70.804054\nv 2.586474 -367.002960 -70.291069\nv 1.775934 -367.003021 -69.913162\nv 0.912068 -367.003052 -69.681709\nv 0.021136 -367.003113 -69.603775\nv -0.869792 -367.003174 -69.681755\nv -1.733645 -367.003204 -69.913254\nv -2.544166 -367.003204 -70.291206\nv -3.276743 -367.003265 -70.804222\nv -3.909106 -367.003235 -71.436607\nv -4.422046 -367.003235 -72.169228\nv -4.800005 -367.003204 -72.979744\nv -5.031432 -367.003174 -73.843605\nv -5.109368 -367.003143 -74.734543\nv -5.031385 -367.003082 -75.625481\nv -4.799912 -367.002991 -76.489326\nv -4.421911 -367.002960 -77.299858\nv -3.908933 -367.002899 -78.032433\nv -3.276536 -367.002838 -78.664803\nv -2.543932 -367.002747 -79.177711\nv -1.733392 -367.002716 -79.555664\nv -0.869527 -367.002625 -79.787117\nv -0.871010 -339.187134 -79.785667\nv 0.019943 -339.187073 -79.863586\nv 0.910870 -339.187012 -79.785622\nv 1.774704 -339.186981 -79.554108\nv 2.585234 -339.186981 -79.176109\nv 3.317821 -339.186951 -78.663155\nv 3.950174 -339.186920 -78.030746\nv 4.463125 -339.186951 -77.298164\nv 4.841064 -339.187012 -76.487617\nv 5.072511 -339.187042 -75.623772\nv 5.150417 -339.187042 -74.732803\nv 5.072464 -339.187103 -73.841896\nv 4.840971 -339.187164 -72.978020\nv 4.462990 -339.187225 -72.167519\nv 3.950001 -339.187286 -71.434937\nv 3.317614 -339.187347 -70.802574\nv 2.585001 -339.187439 -70.289635\nv 1.774451 -339.187500 -69.911697\nv 0.910605 -339.187531 -69.680260\nv 0.019673 -339.187622 -69.602325\nv -0.871275 -339.187653 -69.680305\nv -1.735109 -339.187683 -69.911789\nv -2.545629 -339.187683 -70.289772\nv -3.278216 -339.187714 -70.802742\nv -3.910569 -339.187714 -71.435143\nv -4.423520 -339.187714 -72.167747\nv -4.801469 -339.187653 -72.978279\nv -5.032906 -339.187653 -73.842155\nv -5.110833 -339.187592 -74.733078\nv -5.032859 -339.187592 -75.624031\nv -4.801376 -339.187500 -76.487877\nv -4.423385 -339.187439 -77.298393\nv -3.910396 -339.187347 -78.030952\nv -3.278009 -339.187317 -78.663322\nv -2.545396 -339.187225 -79.176247\nv -1.734856 -339.187164 -79.554199\nv -9.061417 -339.187256 -85.556107\nv -7.044031 -339.187042 -86.968636\nv -4.812014 -339.186890 -88.009361\nv -2.433187 -339.186707 -88.646698\nv 0.020179 -339.186584 -88.861275\nv 2.473523 -339.186462 -88.646568\nv 4.852316 -339.186401 -88.009102\nv 7.084270 -339.186310 -86.968269\nv 9.101603 -339.186279 -85.555634\nv 10.842948 -339.186249 -83.814201\nv 12.255454 -339.186310 -81.796768\nv 13.296195 -339.186401 -79.564774\nv 13.933513 -339.186462 -77.185928\nv 14.148098 -339.186584 -74.732567\nv 13.933383 -339.186707 -72.279236\nv 13.295941 -339.186859 -69.900436\nv 12.255082 -339.187073 -67.668472\nv 10.842470 -339.187225 -65.651146\nv 9.101033 -339.187408 -63.909840\nv 7.083626 -339.187622 -62.497295\nv 4.851618 -339.187805 -61.456554\nv 2.472791 -339.187958 -60.819225\nv 0.019436 -339.188049 -60.604630\nv -2.433918 -339.188202 -60.819355\nv -4.812712 -339.188293 -61.456806\nv -7.044674 -339.188354 -62.497669\nv -9.061986 -339.188385 -63.910316\nv -10.803341 -339.188385 -65.651711\nv -12.215858 -339.188354 -67.669113\nv -13.256599 -339.188263 -69.901138\nv -13.893927 -339.188171 -72.279968\nv -14.108492 -339.188049 -74.733315\nv -13.893797 -339.187927 -77.186661\nv -13.256346 -339.187805 -79.565475\nv -12.215487 -339.187592 -81.797409\nv -10.802863 -339.187408 -83.814766\nv -13.256484 -336.552521 -79.565338\nv -12.215625 -336.552338 -81.797272\nv -10.803001 -336.552155 -83.814613\nv -9.061555 -336.552002 -85.555984\nv -7.044168 -336.551819 -86.968491\nv -4.812151 -336.551605 -88.009224\nv -2.433326 -336.551453 -88.646545\nv 0.020041 -336.551331 -88.861153\nv 2.473386 -336.551208 -88.646416\nv 4.852179 -336.551117 -88.008965\nv 7.084130 -336.551086 -86.968124\nv 9.101464 -336.551025 -85.555511\nv 10.842810 -336.550995 -83.814049\nv 12.255316 -336.551056 -81.796631\nv 13.296057 -336.551117 -79.564636\nv 13.933374 -336.551178 -77.185791\nv 14.147960 -336.551331 -74.732430\nv 13.933245 -336.551453 -72.279053\nv 13.295803 -336.551605 -69.900299\nv 12.254944 -336.551788 -67.668350\nv 10.842332 -336.551941 -65.651009\nv 9.100895 -336.552124 -63.909657\nv 7.083487 -336.552368 -62.497143\nv 4.851480 -336.552490 -61.456432\nv 2.472654 -336.552673 -60.819073\nv 0.019298 -336.552795 -60.604523\nv -2.434057 -336.552917 -60.819202\nv -4.812850 -336.552979 -61.456684\nv -7.044812 -336.553070 -62.497532\nv -9.062124 -336.553101 -63.910133\nv -10.803479 -336.553101 -65.651573\nv -12.215997 -336.553070 -67.668991\nv -13.256738 -336.553009 -69.901001\nv -13.894065 -336.552917 -72.279785\nv -14.108630 -336.552795 -74.733177\nv -13.893935 -336.552643 -77.186523\nv -14.558568 -336.552979 -72.162674\nv -14.783392 -336.552856 -74.733192\nv -14.247255 -336.552673 -77.220329\nv -13.579359 -336.552521 -79.712761\nv -12.799966 -336.552338 -82.134659\nv -11.319880 -336.552155 -84.248344\nv -9.495262 -336.551941 -86.072861\nv -7.381523 -336.551788 -87.552818\nv -4.959543 -336.551636 -88.332130\nv -2.467115 -336.551422 -88.999870\nv 0.020059 -336.551300 -89.535912\nv 2.590572 -336.551147 -89.310921\nv 5.082975 -336.551056 -88.642998\nv 7.421525 -336.550995 -87.552429\nv 9.307392 -336.550995 -85.844582\nv 11.131914 -336.550995 -84.019958\nv 12.839664 -336.550995 -82.133987\nv 13.930123 -336.551025 -79.795395\nv 14.597888 -336.551178 -77.302963\nv 14.822709 -336.551270 -74.732414\nv 14.286583 -336.551422 -72.245277\nv 13.618689 -336.551605 -69.752892\nv 12.839275 -336.551758 -67.330948\nv 11.359220 -336.551941 -65.217278\nv 9.534601 -336.552185 -63.392754\nv 7.420851 -336.552338 -61.912800\nv 4.998871 -336.552521 -61.133537\nv 2.506444 -336.552673 -60.465755\nv 0.019280 -336.552856 -59.929749\nv -2.551234 -336.552948 -60.154732\nv -5.043647 -336.553070 -60.822613\nv -7.382197 -336.553131 -61.913189\nv -9.268063 -336.553162 -63.621063\nv -11.092586 -336.553131 -65.445679\nv -12.800335 -336.553101 -67.331619\nv -13.890804 -336.553070 -69.670227\nv -4.642966 -332.205811 -61.923813\nv -6.796350 -332.205902 -62.928020\nv -8.742663 -332.205902 -64.290894\nv -10.422700 -332.205933 -65.971024\nv -11.785499 -332.205872 -67.917412\nv -12.789612 -332.205811 -70.070847\nv -13.404482 -332.205719 -72.365921\nv -13.611520 -332.205597 -74.732933\nv -13.404358 -332.205475 -77.099922\nv -12.789366 -332.205322 -79.394966\nv -11.785140 -332.205170 -81.548401\nv -10.422238 -332.204987 -83.494675\nv -8.742085 -332.204803 -85.174728\nv -6.795729 -332.204651 -86.537529\nv -4.642292 -332.204468 -87.541618\nv -2.347196 -332.204315 -88.156525\nv 0.019799 -332.204193 -88.363548\nv 2.386774 -332.204071 -88.156403\nv 4.681838 -332.203979 -87.541374\nv 6.835231 -332.203918 -86.537170\nv 8.781515 -332.203888 -85.174271\nv 10.461572 -332.203888 -83.494125\nv 11.824361 -332.203949 -81.547775\nv 12.828473 -332.203979 -79.394295\nv 13.443354 -332.204071 -77.099220\nv 13.650392 -332.204193 -74.732216\nv 13.443230 -332.204315 -72.365219\nv 12.828227 -332.204468 -70.070175\nv 11.824002 -332.204651 -67.916786\nv 10.461110 -332.204834 -65.970474\nv 8.780966 -332.204987 -64.290436\nv 6.834610 -332.205170 -62.927662\nv 4.681164 -332.205322 -61.923569\nv 2.386067 -332.205475 -61.308640\nv 0.019082 -332.205627 -61.101654\nv -2.347903 -332.205719 -61.308762\nv 4.527490 -330.970673 -62.345524\nv 4.681120 -331.359772 -61.923508\nv 6.609975 -330.970520 -63.316536\nv 6.834566 -331.359558 -62.927601\nv 2.308034 -330.970825 -61.750885\nv 2.386024 -331.359894 -61.308609\nv 0.019029 -330.970947 -61.550690\nv 0.019038 -331.360046 -61.101608\nv -2.269976 -330.971069 -61.751007\nv -2.347948 -331.360138 -61.308731\nv -4.489410 -330.971161 -62.345760\nv -4.643010 -331.360260 -61.923752\nv -6.571855 -330.971191 -63.316883\nv -6.796394 -331.360291 -62.927959\nv -8.454009 -330.971252 -64.634880\nv -8.742708 -331.360321 -64.290848\nv -10.078708 -330.971222 -66.259682\nv -10.422744 -331.360352 -65.970993\nv -11.396598 -330.971222 -68.141884\nv -11.785543 -331.360291 -67.917381\nv -12.367622 -330.971130 -70.224388\nv -12.789657 -331.360260 -70.070816\nv -12.962244 -330.971039 -72.443871\nv -13.404527 -331.360138 -72.365891\nv -13.162444 -330.970978 -74.732857\nv -13.611565 -331.360046 -74.732933\nv -12.962124 -330.970795 -77.021820\nv -13.404403 -331.359924 -77.099892\nv -12.367386 -330.970673 -79.241310\nv -12.789411 -331.359741 -79.394936\nv -11.396251 -330.970520 -81.323746\nv -11.785185 -331.359589 -81.548363\nv -10.078261 -330.970367 -83.205902\nv -10.422282 -331.359436 -83.494637\nv -8.453478 -330.970184 -84.830612\nv -8.742130 -331.359222 -85.174683\nv -6.571254 -330.970001 -86.148506\nv -6.795774 -331.359070 -86.537506\nv -4.488759 -330.969849 -87.119522\nv -4.642336 -331.358887 -87.541588\nv -2.269293 -330.969666 -87.714134\nv -2.347241 -331.358734 -88.156502\nv 0.019722 -330.969574 -87.914368\nv 0.019754 -331.358612 -88.363510\nv 2.308717 -330.969421 -87.714012\nv 2.386730 -331.358490 -88.156380\nv 4.528141 -330.969360 -87.119286\nv 4.681793 -331.358398 -87.541344\nv 6.610576 -330.969330 -86.148155\nv 6.835187 -331.358337 -86.537148\nv 8.492762 -330.969269 -84.830170\nv 8.781470 -331.358307 -85.174225\nv 10.117450 -330.969330 -83.205368\nv 10.461527 -331.358337 -83.494087\nv 11.435328 -330.969299 -81.323151\nv 11.824316 -331.358368 -81.547737\nv 12.406354 -330.969391 -79.240654\nv 12.828428 -331.358398 -79.394264\nv 13.000985 -330.969482 -77.021194\nv 13.443309 -331.358521 -77.099190\nv 13.201186 -330.969574 -74.732162\nv 13.650347 -331.358643 -74.732216\nv 13.000865 -330.969696 -72.443184\nv 13.443185 -331.358734 -72.365189\nv 12.406117 -330.969849 -70.223732\nv 12.828182 -331.358917 -70.070145\nv 11.434981 -330.970001 -68.141289\nv 11.823957 -331.359070 -67.916756\nv 10.117003 -330.970184 -66.259148\nv 10.461065 -331.359253 -65.970444\nv 8.492230 -330.970337 -64.634438\nv 8.780921 -331.359406 -64.290390\nv -12.462249 -332.205963 -67.526695\nv -12.800544 -332.595032 -67.331421\nv -11.092794 -332.595062 -65.445450\nv -11.021342 -332.205994 -65.468735\nv -13.523929 -332.205872 -69.803596\nv -13.891013 -332.594971 -69.670029\nv -14.174055 -332.205750 -72.230293\nv -14.558777 -332.594879 -72.162460\nv -14.392949 -332.205658 -74.732956\nv -14.783600 -332.594788 -74.732994\nv -14.173923 -332.205505 -77.235626\nv -14.247465 -332.594604 -77.220116\nv -13.523660 -332.205353 -79.662277\nv -13.579568 -332.594391 -79.712517\nv -12.461869 -332.205200 -81.939110\nv -12.800175 -332.594238 -82.134483\nv -11.020855 -332.204987 -83.996986\nv -11.320089 -332.594086 -84.248146\nv -9.244377 -332.204803 -85.773376\nv -9.495471 -332.593872 -86.072655\nv -7.186441 -332.204620 -87.214294\nv -7.381732 -332.593658 -87.552620\nv -4.909534 -332.204468 -88.275963\nv -4.959751 -332.593536 -88.331917\nv -2.482886 -332.204254 -88.926102\nv -2.467324 -332.593353 -88.999657\nv 0.019820 -332.204163 -89.144989\nv 0.019850 -332.593140 -89.535683\nv 2.522494 -332.204010 -88.925964\nv 2.590364 -332.593079 -89.310722\nv 4.949117 -332.203979 -88.275703\nv 5.082767 -332.592957 -88.642799\nv 7.225959 -332.203888 -87.213913\nv 7.421318 -332.592865 -87.552231\nv 9.283832 -332.203827 -85.772888\nv 9.307183 -332.592896 -85.844360\nv 11.060215 -332.203827 -83.996407\nv 11.131705 -332.592896 -84.019775\nv 12.501110 -332.203857 -81.938454\nv 12.839456 -332.592896 -82.133812\nv 13.562780 -332.203949 -79.661560\nv 13.929914 -332.592957 -79.795189\nv 14.212927 -332.204041 -77.234879\nv 14.597679 -332.593079 -77.302757\nv 14.431810 -332.204132 -74.732193\nv 14.822500 -332.593201 -74.732216\nv 14.212795 -332.204285 -72.229546\nv 14.286374 -332.593353 -72.245094\nv 13.562541 -332.204468 -69.802879\nv 13.618480 -332.593536 -69.752693\nv 12.500731 -332.204620 -67.526039\nv 12.839067 -332.593689 -67.330750\nv 11.059728 -332.204834 -65.468155\nv 11.359011 -332.593872 -65.217079\nv 9.283251 -332.205017 -63.691788\nv 9.534392 -332.594116 -63.392540\nv 7.225303 -332.205200 -62.250893\nv 7.420643 -332.594269 -61.912586\nv 4.948404 -332.205383 -61.189217\nv 4.998664 -332.594421 -61.133339\nv 2.521747 -332.205536 -60.539074\nv 2.506235 -332.594604 -60.465557\nv 0.019062 -332.205658 -60.320190\nv 0.019072 -332.594727 -59.929535\nv -2.483633 -332.205780 -60.539204\nv -2.551443 -332.594849 -60.154518\nv -4.910246 -332.205872 -61.189476\nv -5.043855 -332.594971 -60.822430\nv -7.187098 -332.205933 -62.251274\nv -7.382406 -332.595062 -61.912975\nv -9.244958 -332.205994 -63.692276\nv -9.268271 -332.595032 -63.620865\nv -19.986666 -366.246521 -74.850334\nv -19.986378 -371.734924 -74.850594\nv -19.662754 -366.246704 -71.146881\nv -19.662466 -371.735138 -71.147171\nv -17.364088 -366.246918 -64.830841\nv -17.363800 -371.735352 -64.831161\nv -15.231850 -366.246948 -61.785526\nv -15.231562 -371.735352 -61.785831\nv -10.083133 -366.246918 -57.465034\nv -10.082845 -371.735321 -57.465309\nv -6.713894 -366.246826 -55.893822\nv -6.713605 -371.735229 -55.894081\nv -0.094715 -366.246521 -54.726490\nv -0.094427 -371.734924 -54.726780\nv 3.608734 -366.246338 -55.050426\nv 3.609022 -371.734741 -55.050671\nv 9.924755 -366.245880 -57.349060\nv 9.925043 -371.734283 -57.349350\nv 12.970079 -366.245605 -59.481289\nv 12.970367 -371.734039 -59.481579\nv 17.290596 -366.245117 -64.630005\nv 17.290884 -371.733521 -64.630295\nv 18.861805 -366.244873 -67.999260\nv 18.862093 -371.733276 -67.999550\nv 20.029129 -366.244446 -74.618431\nv 20.029417 -371.732849 -74.618706\nv 19.705217 -366.244263 -78.321899\nv 19.705505 -371.732666 -78.322159\nv 17.406551 -366.244049 -84.637939\nv 17.406839 -371.732483 -84.638214\nv 15.274312 -366.243958 -87.683220\nv 15.274601 -371.732422 -87.683540\nv 10.125595 -366.244049 -92.003777\nv 10.125884 -371.732452 -92.004066\nv 6.756357 -366.244141 -93.574944\nv 6.756645 -371.732513 -93.575249\nv 0.137178 -366.244446 -94.742294\nv 0.137466 -371.732788 -94.742569\nv -3.566271 -366.244629 -94.418365\nv -3.565983 -371.733032 -94.418640\nv -9.882292 -366.245087 -92.119720\nv -9.882003 -371.733459 -92.119995\nv -12.927617 -366.245361 -89.987480\nv -12.927328 -371.733734 -89.987770\nv -17.248133 -366.245850 -84.838768\nv -17.247845 -371.734283 -84.839058\nv -18.819342 -366.246094 -81.469536\nv -18.819054 -371.734528 -81.469841\nv -18.712185 -366.246643 -71.431694\nv -19.001078 -366.246490 -74.734879\nv -18.712011 -366.246277 -78.038063\nv -17.853727 -366.246063 -81.240891\nv -16.452328 -366.245850 -84.245995\nv -14.550387 -366.245575 -86.962097\nv -12.205696 -366.245331 -89.306671\nv -9.489487 -366.245117 -91.208443\nv -6.484318 -366.244904 -92.609695\nv -3.281466 -366.244690 -93.467812\nv 0.021732 -366.244446 -93.756683\nv 3.324914 -366.244324 -93.467644\nv 6.527722 -366.244232 -92.609360\nv 9.532814 -366.244141 -91.207939\nv 12.248924 -366.244049 -89.306030\nv 14.593492 -366.244049 -86.961334\nv 16.495293 -366.244141 -84.245125\nv 17.896532 -366.244171 -81.239944\nv 18.754648 -366.244324 -78.037071\nv 19.043543 -366.244476 -74.733871\nv 18.754475 -366.244690 -71.430702\nv 17.896191 -366.244873 -68.227875\nv 16.494791 -366.245117 -65.222786\nv 14.592850 -366.245361 -62.506695\nv 12.248158 -366.245636 -60.162125\nv 9.531948 -366.245850 -58.260323\nv 6.526782 -366.246124 -56.859097\nv 3.323929 -366.246277 -56.000996\nv 0.020731 -366.246521 -55.712067\nv -3.282451 -366.246643 -56.001171\nv -6.485259 -366.246796 -56.859440\nv -9.490352 -366.246826 -58.260822\nv -12.206462 -366.246918 -60.162766\nv -14.551029 -366.246887 -62.507462\nv -16.452829 -366.246826 -65.223656\nv -17.854069 -366.246765 -68.228821\nv -13.057740 -361.837372 -63.760338\nv -14.764634 -361.837311 -66.198189\nv -16.022255 -361.837250 -68.895332\nv -16.792408 -361.837097 -71.769943\nv -17.051710 -361.836945 -74.734596\nv -16.792253 -361.836823 -77.699249\nv -16.021948 -361.836609 -80.573769\nv -14.764185 -361.836395 -83.270897\nv -13.057162 -361.836212 -85.708656\nv -10.952786 -361.835968 -87.812897\nv -8.514962 -361.835785 -89.519798\nv -5.817790 -361.835571 -90.777435\nv -2.943208 -361.835358 -91.547577\nv 0.021449 -361.835175 -91.806870\nv 2.986092 -361.835052 -91.547424\nv 5.860631 -361.834961 -90.777130\nv 8.557738 -361.834869 -89.519356\nv 10.995473 -361.834808 -87.812317\nv 13.099738 -361.834808 -85.707970\nv 14.806634 -361.834869 -83.270119\nv 16.064253 -361.834900 -80.572929\nv 16.834406 -361.835052 -77.698364\nv 17.093710 -361.835175 -74.733696\nv 16.834251 -361.835327 -71.769058\nv 16.063946 -361.835541 -68.894493\nv 14.806185 -361.835785 -66.197411\nv 13.099160 -361.835968 -63.759651\nv 10.994784 -361.836212 -61.655380\nv 8.556960 -361.836395 -59.948521\nv 5.859787 -361.836609 -58.690918\nv 2.985208 -361.836823 -57.920727\nv 0.020551 -361.836975 -57.661438\nv -2.944093 -361.837128 -57.920883\nv -5.818633 -361.837219 -58.691223\nv -8.515740 -361.837311 -59.948971\nv -10.953475 -361.837372 -61.655960\nv -5.463926 -361.837158 -59.665657\nv -7.997216 -361.837250 -60.847027\nv -10.286884 -361.837280 -62.450344\nv -12.263342 -361.837280 -64.426910\nv -13.866542 -361.837219 -66.716660\nv -15.047775 -361.837158 -69.250015\nv -15.771164 -361.837067 -71.949982\nv -16.014700 -361.836914 -74.734566\nv -15.771017 -361.836761 -77.519150\nv -15.047487 -361.836609 -80.219086\nv -13.866120 -361.836395 -82.752350\nv -12.262800 -361.836182 -85.042038\nv -10.286238 -361.835999 -87.018486\nv -7.996485 -361.835785 -88.621704\nv -5.463134 -361.835571 -89.802940\nv -2.763165 -361.835388 -90.526321\nv 0.021421 -361.835205 -90.769852\nv 2.805995 -361.835083 -90.526169\nv 5.505924 -361.835022 -89.802650\nv 8.039225 -361.834930 -88.621277\nv 10.328882 -361.834900 -87.017944\nv 12.305340 -361.834900 -85.041397\nv 13.908539 -361.834930 -82.751617\nv 15.089773 -361.835022 -80.218292\nv 15.813162 -361.835114 -77.518318\nv 16.056700 -361.835205 -74.733727\nv 15.813015 -361.835419 -71.949150\nv 15.089485 -361.835571 -69.249222\nv 13.908117 -361.835754 -66.715927\nv 12.304798 -361.835999 -64.426270\nv 10.328236 -361.836182 -62.449802\nv 8.038494 -361.836395 -60.846607\nv 5.505132 -361.836609 -59.665367\nv 2.805164 -361.836761 -58.941975\nv 0.020578 -361.836914 -58.698441\nv -2.763996 -361.837067 -58.942120\nv 2.805312 -364.648407 -58.942142\nv 0.020726 -364.648560 -58.698608\nv -2.763848 -364.648712 -58.942287\nv -5.463778 -364.648773 -59.665794\nv -7.997068 -364.648865 -60.847164\nv -10.286736 -364.648926 -62.450481\nv -12.263194 -364.648895 -64.427063\nv -13.866394 -364.648865 -66.716782\nv -15.047627 -364.648804 -69.250168\nv -15.771016 -364.648682 -71.950119\nv -16.014551 -364.648560 -74.734734\nv -15.770869 -364.648376 -77.519287\nv -15.047339 -364.648193 -80.219238\nv -13.865973 -364.648041 -82.752502\nv -12.262652 -364.647827 -85.042191\nv -10.286090 -364.647644 -87.018669\nv -7.996337 -364.647400 -88.621857\nv -5.462985 -364.647186 -89.803078\nv -2.763018 -364.647064 -90.526459\nv 0.021569 -364.646851 -90.770004\nv 2.806142 -364.646759 -90.526306\nv 5.506073 -364.646637 -89.802788\nv 8.039372 -364.646545 -88.621429\nv 10.329030 -364.646545 -87.018127\nv 12.305488 -364.646545 -85.041550\nv 13.908688 -364.646576 -82.751770\nv 15.089921 -364.646606 -80.218445\nv 15.813310 -364.646729 -77.518456\nv 16.056849 -364.646851 -74.733894\nv 15.813163 -364.647034 -71.949287\nv 15.089633 -364.647217 -69.249374\nv 13.908266 -364.647400 -66.716049\nv 12.304946 -364.647614 -64.426422\nv 10.328383 -364.647827 -62.449940\nv 8.038642 -364.648010 -60.846745\nv 5.505280 -364.648224 -59.665504\nv 6.502014 -364.647797 -67.010300\nv 5.062288 -364.647919 -66.002281\nv 3.469388 -364.648041 -65.259537\nv 1.771726 -364.648163 -64.804703\nv 0.020882 -364.648254 -64.651535\nv -1.729954 -364.648346 -64.804794\nv -3.427592 -364.648407 -65.259720\nv -5.020452 -364.648468 -66.002541\nv -6.460125 -364.648468 -67.010635\nv -7.702853 -364.648468 -68.253441\nv -8.710896 -364.648437 -69.693176\nv -9.453614 -364.648376 -71.286049\nv -9.908459 -364.648346 -72.983734\nv -10.061593 -364.648224 -74.734581\nv -9.908367 -364.648132 -76.485397\nv -9.453433 -364.648041 -78.183037\nv -8.710631 -364.647919 -79.775894\nv -7.702512 -364.647797 -81.215584\nv -6.459719 -364.647675 -82.458298\nv -5.019993 -364.647522 -83.466331\nv -3.427093 -364.647400 -84.209091\nv -1.729431 -364.647308 -84.663910\nv 0.021413 -364.647217 -84.817062\nv 1.772249 -364.647125 -84.663818\nv 3.469886 -364.647034 -84.208908\nv 5.062747 -364.646973 -83.466072\nv 6.502420 -364.647003 -82.457962\nv 7.745148 -364.647003 -81.215172\nv 8.753189 -364.647003 -79.775436\nv 9.495908 -364.647064 -78.182533\nv 9.950752 -364.647095 -76.484879\nv 10.103887 -364.647186 -74.734047\nv 9.950661 -364.647308 -72.983215\nv 9.495727 -364.647400 -71.285545\nv 8.752924 -364.647522 -69.692719\nv 7.744807 -364.647675 -68.253029\nv 9.495652 -363.226013 -71.285454\nv 8.752850 -363.226166 -69.692612\nv 7.744732 -363.226288 -68.252953\nv 6.501939 -363.226410 -67.010239\nv 5.062213 -363.226532 -66.002159\nv 3.469313 -363.226624 -65.259430\nv 1.771652 -363.226776 -64.804626\nv 0.020807 -363.226868 -64.651474\nv -1.730029 -363.226959 -64.804718\nv -3.427667 -363.226990 -65.259613\nv -5.020527 -363.227081 -66.002419\nv -6.460201 -363.227081 -67.010574\nv -7.702928 -363.227081 -68.253365\nv -8.710970 -363.227081 -69.693069\nv -9.453689 -363.226990 -71.285957\nv -9.908533 -363.226959 -72.983643\nv -10.061667 -363.226837 -74.734474\nv -9.908442 -363.226776 -76.485291\nv -9.453507 -363.226624 -78.182930\nv -8.710705 -363.226532 -79.775803\nv -7.702587 -363.226410 -81.215492\nv -6.459795 -363.226257 -82.458221\nv -5.020068 -363.226166 -83.466270\nv -3.427168 -363.226013 -84.209030\nv -1.729506 -363.225891 -84.663834\nv 0.021338 -363.225769 -84.816971\nv 1.772174 -363.225708 -84.663742\nv 3.469812 -363.225647 -84.208847\nv 5.062672 -363.225616 -83.466011\nv 6.502346 -363.225586 -82.457886\nv 7.745073 -363.225616 -81.215080\nv 8.753115 -363.225616 -79.775345\nv 9.495833 -363.225647 -78.182426\nv 9.950678 -363.225739 -76.484772\nv 10.103812 -363.225800 -74.733940\nv 9.950586 -363.225922 -72.983124\nv 6.262362 -363.225922 -75.834534\nv 6.358613 -363.225983 -74.734039\nv 6.262304 -363.226074 -73.633575\nv 5.976356 -363.226166 -72.566475\nv 5.509469 -363.226227 -71.565315\nv 4.875806 -363.226318 -70.660408\nv 4.094635 -363.226379 -69.879288\nv 3.189708 -363.226471 -69.245659\nv 2.188476 -363.226501 -68.778839\nv 1.121408 -363.226624 -68.492905\nv 0.020906 -363.226654 -68.396667\nv -1.079592 -363.226746 -68.492966\nv -2.146644 -363.226746 -68.778954\nv -3.147852 -363.226776 -69.245827\nv -4.052745 -363.226807 -69.879501\nv -4.833874 -363.226807 -70.660667\nv -5.467491 -363.226776 -71.565605\nv -5.934324 -363.226776 -72.566788\nv -6.220216 -363.226746 -73.633904\nv -6.316467 -363.226654 -74.734375\nv -6.220159 -363.226593 -75.834862\nv -5.934210 -363.226532 -76.901932\nv -5.467324 -363.226471 -77.903145\nv -4.833660 -363.226379 -78.808037\nv -4.052490 -363.226318 -79.589157\nv -3.147563 -363.226196 -80.222740\nv -2.146331 -363.226135 -80.689613\nv -1.079263 -363.226074 -80.975525\nv 0.021239 -363.226013 -81.071777\nv 1.121737 -363.225952 -80.975464\nv 2.188789 -363.225891 -80.689499\nv 3.189997 -363.225891 -80.222572\nv 4.094890 -363.225891 -79.588943\nv 4.876020 -363.225891 -78.807777\nv 5.509636 -363.225922 -77.902855\nv 5.976470 -363.225922 -76.901619\nv 4.876219 -367.002380 -78.807961\nv 5.509835 -367.002441 -77.903038\nv 5.976669 -367.002441 -76.901817\nv 6.262561 -367.002472 -75.834732\nv 6.358811 -367.002533 -74.734238\nv 6.262503 -367.002594 -73.633743\nv 5.976555 -367.002686 -72.566673\nv 5.509668 -367.002777 -71.565514\nv 4.876005 -367.002808 -70.660606\nv 4.094834 -367.002899 -69.879456\nv 3.189907 -367.002991 -69.245857\nv 2.188675 -367.003052 -68.779007\nv 1.121606 -367.003113 -68.493118\nv 0.021104 -367.003204 -68.396881\nv -1.079394 -367.003235 -68.493179\nv -2.146446 -367.003296 -68.779121\nv -3.147654 -367.003296 -69.246025\nv -4.052547 -367.003326 -69.879669\nv -4.833675 -367.003296 -70.660866\nv -5.467292 -367.003326 -71.565804\nv -5.934125 -367.003296 -72.566986\nv -6.220017 -367.003265 -73.634071\nv -6.316268 -367.003204 -74.734573\nv -6.219959 -367.003143 -75.835060\nv -5.934011 -367.003052 -76.902130\nv -5.467125 -367.002991 -77.903328\nv -4.833461 -367.002869 -78.808220\nv -4.052291 -367.002838 -79.589355\nv -3.147365 -367.002747 -80.222954\nv -2.146133 -367.002686 -80.689827\nv -1.079065 -367.002594 -80.975723\nv 0.021437 -367.002563 -81.071960\nv 1.121935 -367.002472 -80.975662\nv 2.188988 -367.002441 -80.689713\nv 3.190196 -367.002441 -80.222786\nv 4.095089 -367.002411 -79.589142\nv 1.776188 -367.002533 -79.555573\nv 2.586708 -367.002502 -79.177574\nv 3.319284 -367.002472 -78.664635\nv 3.951647 -367.002472 -78.032227\nv 4.464589 -367.002472 -77.299629\nv 4.842548 -367.002502 -76.489067\nv 5.073975 -367.002533 -75.625221\nv 5.151912 -367.002594 -74.734268\nv 5.073928 -367.002625 -73.843346\nv 4.842455 -367.002716 -72.979485\nv 4.464454 -367.002747 -72.168999\nv 3.951474 -367.002808 -71.436401\nv 3.319077 -367.002899 -70.804054\nv 2.586474 -367.002960 -70.291069\nv 1.775934 -367.003021 -69.913162\nv 0.912068 -367.003052 -69.681709\nv 0.021136 -367.003113 -69.603775\nv -0.869792 -367.003174 -69.681755\nv -1.733645 -367.003204 -69.913254\nv -2.544166 -367.003204 -70.291206\nv -3.276743 -367.003265 -70.804222\nv -3.909106 -367.003235 -71.436607\nv -4.422046 -367.003235 -72.169228\nv -4.800005 -367.003204 -72.979744\nv -5.031432 -367.003174 -73.843605\nv -5.109368 -367.003143 -74.734543\nv -5.031385 -367.003082 -75.625481\nv -4.799912 -367.002991 -76.489326\nv -4.421911 -367.002960 -77.299858\nv -3.908933 -367.002899 -78.032433\nv -3.276536 -367.002838 -78.664803\nv -2.543932 -367.002747 -79.177711\nv -1.733392 -367.002716 -79.555664\nv -0.869527 -367.002625 -79.787117\nv 0.021406 -367.002594 -79.865036\nv 0.912333 -367.002502 -79.787071\nv -4.046713 -371.390839 -53.991364\nv -3.251338 -371.390808 -53.851082\nv -3.251590 -366.591125 -53.850838\nv -4.046966 -366.591156 -53.991135\nv -13.873317 -371.391113 -58.804581\nv -13.254622 -371.391083 -58.285397\nv -13.254873 -366.591400 -58.285152\nv -13.873569 -366.591431 -58.804306\nv -19.976797 -371.390930 -67.886192\nv -19.700586 -371.390961 -67.127258\nv -19.700840 -366.591278 -67.126984\nv -19.977051 -366.591248 -67.885948\nv -20.721769 -371.390411 -78.802849\nv -20.862030 -371.390442 -78.007477\nv -20.862284 -366.590759 -78.007233\nv -20.722023 -366.590729 -78.802620\nv 6.869956 -371.390198 -54.736347\nv 7.628914 -371.390167 -55.012539\nv 7.628661 -366.590485 -55.012295\nv 6.869704 -366.590515 -54.736103\nv 15.951596 -371.389435 -60.839836\nv 16.470762 -371.389374 -61.458519\nv 16.470509 -366.589661 -61.458260\nv 15.951344 -366.589752 -60.839577\nv -15.908593 -371.389618 -88.629478\nv -16.427757 -371.389679 -88.010780\nv -16.428011 -366.590027 -88.010536\nv -15.908846 -366.589935 -88.629234\nv -6.826952 -371.388855 -94.733002\nv -7.585910 -371.388885 -94.456802\nv -7.586162 -366.589203 -94.456497\nv -6.827205 -366.589142 -94.732697\nv 4.089717 -371.388214 -95.477936\nv 3.294341 -371.388245 -95.618217\nv 3.294089 -366.588562 -95.617973\nv 4.089465 -366.588531 -95.477692\nv 13.916320 -371.387939 -90.664764\nv 13.297625 -371.387970 -91.183914\nv 13.297372 -366.588287 -91.183655\nv 13.916067 -366.588257 -90.664490\nv 20.019802 -371.388153 -81.583138\nv 19.743591 -371.388092 -82.342041\nv 19.743338 -366.588379 -82.341812\nv 20.019548 -366.588440 -81.582832\nv 20.764774 -371.388641 -70.666397\nv 20.905035 -371.388611 -71.461792\nv 20.904781 -366.588928 -71.461563\nv 20.764521 -366.588989 -70.666183\nv 20.040646 -585.002563 -74.968208\nv 20.040358 -579.514099 -74.967918\nv 19.716539 -585.002747 -71.264771\nv 19.716251 -579.514343 -71.264526\nv 17.417542 -585.003235 -64.948853\nv 17.417253 -579.514832 -64.948608\nv 15.285142 -585.003479 -61.903652\nv 15.284853 -579.515076 -61.903378\nv 10.136198 -585.003967 -57.583382\nv 10.135909 -579.515503 -57.583138\nv 6.766876 -585.004211 -56.012394\nv 6.766587 -579.515808 -56.012089\nv 0.147636 -585.004639 -54.845425\nv 0.147347 -579.516235 -54.845150\nv -3.555796 -585.004822 -55.169529\nv -3.556085 -579.516418 -55.169224\nv -9.871696 -585.005066 -57.468552\nv -9.871984 -579.516663 -57.468216\nv -12.916908 -585.005066 -59.600834\nv -12.917197 -579.516663 -59.600590\nv -17.237154 -585.005066 -64.749840\nv -17.237442 -579.516602 -64.749565\nv -18.808186 -585.004944 -68.119209\nv -18.808474 -579.516479 -68.118874\nv -19.975161 -585.004639 -74.738396\nv -19.975449 -579.516235 -74.738136\nv -19.651054 -585.004456 -78.441849\nv -19.651342 -579.515991 -78.441605\nv -17.352057 -585.003967 -84.757782\nv -17.352345 -579.515564 -84.757492\nv -15.219658 -585.003723 -87.802963\nv -15.219947 -579.515320 -87.802719\nv -10.070714 -585.003235 -92.123192\nv -10.071003 -579.514832 -92.122917\nv -6.701393 -585.002930 -93.694252\nv -6.701682 -579.514526 -93.693932\nv -0.082152 -585.002563 -94.861191\nv -0.082441 -579.514160 -94.860901\nv 3.621279 -585.002380 -94.537109\nv 3.620991 -579.513977 -94.536804\nv 9.937180 -585.002136 -92.238129\nv 9.936891 -579.513672 -92.237823\nv 12.982392 -585.002136 -90.105721\nv 12.982103 -579.513733 -90.105415\nv 17.302639 -585.002136 -84.956772\nv 17.302351 -579.513733 -84.956467\nv 18.873669 -585.002258 -81.587471\nv 18.873381 -579.513855 -81.587196\nv 18.765985 -585.002808 -71.549644\nv 19.055052 -585.002625 -74.852783\nv 18.766159 -585.002441 -78.156013\nv 17.908043 -585.002380 -81.358871\nv 16.506802 -585.002258 -84.364021\nv 14.605003 -585.002136 -87.080246\nv 12.260435 -585.002136 -89.424911\nv 9.544327 -585.002258 -91.326866\nv 6.539232 -585.002319 -92.728233\nv 3.336424 -585.002441 -93.586525\nv 0.033242 -585.002563 -93.875626\nv -3.269956 -585.002808 -93.586693\nv -6.472808 -585.003052 -92.728577\nv -9.477975 -585.003235 -91.327370\nv -12.194185 -585.003479 -89.425552\nv -14.538876 -585.003723 -87.081009\nv -16.440819 -585.003967 -84.364891\nv -17.842216 -585.004211 -81.359818\nv -18.700500 -585.004395 -78.156998\nv -18.989569 -585.004578 -74.853783\nv -18.700674 -585.004761 -71.550629\nv -17.842560 -585.004822 -68.347702\nv -16.441319 -585.004883 -65.342567\nv -14.539519 -585.005066 -62.626389\nv -12.194951 -585.005066 -60.281693\nv -9.478842 -585.004944 -58.379765\nv -6.473748 -585.004883 -56.978321\nv -3.270941 -585.004761 -56.120083\nv 0.032241 -585.004639 -55.831024\nv 3.335439 -585.004395 -56.119907\nv 6.538292 -585.004150 -56.977978\nv 9.543460 -585.003967 -58.379265\nv 12.259669 -585.003723 -60.281048\nv 14.604360 -585.003479 -62.625622\nv 16.506302 -585.003174 -65.341698\nv 17.907700 -585.002991 -68.346756\nv 13.553537 -588.510254 -63.507763\nv 15.318295 -588.510010 -66.027977\nv 16.618608 -588.509827 -68.816307\nv 17.414988 -588.509583 -71.788055\nv 17.683216 -588.509460 -74.853050\nv 17.415148 -588.509277 -77.917984\nv 16.618925 -588.509216 -80.889809\nv 15.318759 -588.509094 -83.678261\nv 13.554133 -588.509094 -86.198524\nv 11.378681 -588.509033 -88.374092\nv 8.858468 -588.509094 -90.138832\nv 6.070112 -588.509216 -91.439171\nv 3.098333 -588.509216 -92.235512\nv 0.033390 -588.509399 -92.503769\nv -3.031567 -588.509583 -92.235672\nv -6.003388 -588.509827 -91.439491\nv -8.791812 -588.510071 -90.139297\nv -11.312119 -588.510254 -88.374687\nv -13.487685 -588.510559 -86.199242\nv -15.252442 -588.510681 -83.679070\nv -16.552755 -588.510925 -80.890678\nv -17.349134 -588.511108 -77.918900\nv -17.617363 -588.511292 -74.853981\nv -17.349295 -588.511414 -71.788971\nv -16.553072 -588.511536 -68.817177\nv -15.252907 -588.511597 -66.028786\nv -13.488281 -588.511719 -63.508472\nv -11.312829 -588.511658 -61.332848\nv -8.792616 -588.511658 -59.568104\nv -6.004260 -588.511536 -58.267826\nv -3.032481 -588.511414 -57.471424\nv 0.032463 -588.511292 -57.203186\nv 3.097419 -588.511047 -57.471264\nv 6.069241 -588.510925 -58.267509\nv 8.857664 -588.510681 -59.567638\nv 11.377971 -588.510437 -61.332253\nv 4.801536 -589.993774 -75.694267\nv 4.583097 -589.993652 -76.509521\nv 4.226417 -589.993652 -77.274513\nv 3.742326 -589.993591 -77.965874\nv 3.145511 -589.993652 -78.562721\nv 2.454144 -589.993652 -79.046875\nv 1.689204 -589.993713 -79.403580\nv 0.873949 -589.993713 -79.622032\nv 0.033131 -589.993774 -79.695602\nv -0.807691 -589.993835 -79.622078\nv -1.622956 -589.993835 -79.403671\nv -2.387916 -589.993896 -79.046997\nv -3.079309 -589.994019 -78.562889\nv -3.676154 -589.993958 -77.966072\nv -4.160282 -589.994141 -77.274734\nv -4.517002 -589.994141 -76.509766\nv -4.735483 -589.994263 -75.694519\nv -4.809046 -589.994263 -74.853706\nv -4.735528 -589.994263 -74.012848\nv -4.517089 -589.994385 -73.197632\nv -4.160409 -589.994385 -72.432632\nv -3.676318 -589.994324 -71.741280\nv -3.079504 -589.994446 -71.144463\nv -2.388137 -589.994385 -70.660278\nv -1.623195 -589.994324 -70.303574\nv -0.807941 -589.994324 -70.085136\nv 0.032877 -589.994263 -70.011505\nv 0.873699 -589.994202 -70.085091\nv 1.688965 -589.994202 -70.303482\nv 2.453923 -589.994141 -70.660156\nv 3.145316 -589.994080 -71.144295\nv 3.742162 -589.993958 -71.741081\nv 4.226290 -589.993896 -72.432411\nv 4.583010 -589.993896 -73.197388\nv 4.801491 -589.993774 -74.012596\nv 4.875054 -589.993774 -74.853447\nv 4.582664 -583.416016 -73.197021\nv 4.801147 -583.416016 -74.012260\nv 4.874709 -583.415894 -74.853096\nv 4.801191 -583.415894 -75.693901\nv 4.582751 -583.415894 -76.509201\nv 4.226072 -583.415833 -77.274147\nv 3.741980 -583.415894 -77.965569\nv 3.145166 -583.415833 -78.562355\nv 2.453799 -583.415833 -79.046539\nv 1.688857 -583.415955 -79.403259\nv 0.873603 -583.415894 -79.621712\nv 0.032785 -583.415955 -79.695282\nv -0.808037 -583.416016 -79.621758\nv -1.623303 -583.416077 -79.403351\nv -2.388262 -583.416077 -79.046661\nv -3.079655 -583.416199 -78.562523\nv -3.676499 -583.416260 -77.965767\nv -4.160628 -583.416321 -77.274368\nv -4.517348 -583.416382 -76.509445\nv -4.735829 -583.416382 -75.694153\nv -4.809391 -583.416382 -74.853355\nv -4.735874 -583.416504 -74.012512\nv -4.517435 -583.416504 -73.197266\nv -4.160755 -583.416626 -72.432358\nv -3.676663 -583.416565 -71.740944\nv -3.079850 -583.416626 -71.144096\nv -2.388483 -583.416504 -70.659912\nv -1.623542 -583.416565 -70.303238\nv -0.808288 -583.416565 -70.084801\nv 0.032531 -583.416504 -70.011139\nv 0.873352 -583.416443 -70.084755\nv 1.688618 -583.416443 -70.303146\nv 2.453578 -583.416260 -70.659790\nv 3.144971 -583.416260 -71.143929\nv 3.741816 -583.416199 -71.740746\nv 4.225945 -583.416138 -72.432137\nv 18.750221 -579.513977 -78.152992\nv 19.034864 -579.514160 -75.244156\nv 18.678066 -579.514404 -71.167130\nv 17.892494 -579.514587 -68.351929\nv 16.684603 -579.514771 -65.690536\nv 14.337074 -579.515076 -62.338123\nv 12.249170 -579.515259 -60.292953\nv 9.872396 -579.515503 -58.592026\nv 6.163159 -579.515808 -56.862511\nv 3.332402 -579.515930 -56.135258\nv 0.423603 -579.516235 -55.850605\nv -3.653458 -579.516296 -56.207401\nv -6.468597 -579.516479 -56.992970\nv -9.130015 -579.516541 -58.200863\nv -12.482453 -579.516541 -60.548424\nv -14.527658 -579.516663 -62.636276\nv -16.228546 -579.516479 -65.013062\nv -17.958076 -579.516479 -68.722290\nv -18.685312 -579.516357 -71.553055\nv -18.969955 -579.516174 -74.461906\nv -18.613159 -579.515991 -78.538925\nv -17.827585 -579.515747 -81.354088\nv -16.619694 -579.515503 -84.015465\nv -14.272169 -579.515259 -87.367943\nv -12.184264 -579.515076 -89.413132\nv -9.807489 -579.514771 -91.113983\nv -6.098254 -579.514587 -92.843559\nv -3.267495 -579.514404 -93.570824\nv -0.358697 -579.514160 -93.855415\nv 3.718363 -579.513977 -93.498589\nv 6.533503 -579.513855 -92.713081\nv 9.194921 -579.513794 -91.505188\nv 12.547359 -579.513733 -89.157661\nv 14.592564 -579.513733 -87.069763\nv 16.293453 -579.513794 -84.692963\nv 18.022985 -579.513855 -80.983749\nv 14.592341 -575.291138 -87.069534\nv 16.293230 -575.291138 -84.692734\nv 18.022762 -575.291199 -80.983521\nv 18.749998 -575.291443 -78.152763\nv 19.034641 -575.291565 -75.243942\nv 18.677843 -575.291748 -71.166885\nv 17.892271 -575.291992 -68.351761\nv 16.684380 -575.292175 -65.690323\nv 14.336852 -575.292480 -62.337879\nv 12.248948 -575.292603 -60.292679\nv 9.872173 -575.292908 -58.591812\nv 6.162937 -575.293152 -56.862297\nv 3.332179 -575.293396 -56.135014\nv 0.423381 -575.293579 -55.850391\nv -3.653680 -575.293701 -56.207218\nv -6.468819 -575.293823 -56.992786\nv -9.130238 -575.293945 -58.200649\nv -12.482676 -575.294006 -60.548210\nv -14.527881 -575.294006 -62.636093\nv -16.228769 -575.293945 -65.012878\nv -17.958300 -575.293823 -68.722107\nv -18.685535 -575.293701 -71.552872\nv -18.970179 -575.293579 -74.461647\nv -18.613382 -575.293335 -78.538757\nv -17.827808 -575.293152 -81.353828\nv -16.619917 -575.292969 -84.015282\nv -14.272390 -575.292603 -87.367699\nv -12.184486 -575.292419 -89.412903\nv -9.807712 -575.292175 -91.113831\nv -6.098476 -575.291809 -92.843315\nv -3.267717 -575.291748 -93.570564\nv -0.358919 -575.291565 -93.855232\nv 3.718141 -575.291382 -93.498405\nv 6.533280 -575.291260 -92.712852\nv 9.194699 -575.291138 -91.504944\nv 12.547137 -575.291138 -89.157433\nv 13.926455 -579.919067 -58.922180\nv 13.307732 -579.919128 -58.403061\nv 13.307979 -584.600037 -58.403366\nv 13.926702 -584.599976 -58.922455\nv 20.030415 -579.918274 -68.003487\nv 19.754164 -579.918274 -67.244598\nv 19.754410 -584.599243 -67.244812\nv 20.030661 -584.599182 -68.003807\nv 20.775961 -579.917603 -78.920166\nv 20.916180 -579.917664 -78.124802\nv 20.916426 -584.598633 -78.125015\nv 20.776207 -584.598511 -78.920349\nv 15.963300 -579.917358 -88.747017\nv 16.482433 -579.917419 -88.128349\nv 16.482679 -584.598328 -88.128548\nv 15.963547 -584.598267 -88.747276\nv 6.881981 -579.917480 -94.850983\nv 7.640924 -579.917480 -94.574768\nv 7.641170 -584.598389 -94.574951\nv 6.882227 -584.598450 -94.851196\nv 4.099599 -579.919800 -54.109543\nv 3.304215 -579.919861 -53.969334\nv 3.304461 -584.600769 -53.969547\nv 4.099845 -584.600708 -54.109818\nv -6.817031 -579.920410 -54.855129\nv -7.575975 -579.920471 -55.131363\nv -7.575728 -584.601318 -55.131607\nv -6.816785 -584.601318 -54.855343\nv -15.898352 -579.920532 -60.959068\nv -16.417484 -579.920471 -61.577793\nv -16.417238 -584.601440 -61.578007\nv -15.898105 -584.601440 -60.959282\nv -20.711012 -579.920227 -70.785896\nv -20.851231 -579.920227 -71.581345\nv -20.850985 -584.601135 -71.581543\nv -20.710766 -584.601196 -70.786125\nv -19.965464 -579.919617 -81.702553\nv -19.689215 -579.919617 -82.461517\nv -19.688969 -584.600525 -82.461746\nv -19.965218 -584.600525 -81.702797\nv -13.861506 -579.918823 -90.783875\nv -13.242784 -579.918762 -91.303009\nv -13.242537 -584.599670 -91.303268\nv -13.861259 -584.599731 -90.784134\nv -4.034650 -579.918091 -95.596542\nv -3.239267 -579.918030 -95.736763\nv -3.239020 -584.598938 -95.737007\nv -4.034404 -584.598999 -95.596771\nv -19.453751 -370.894501 -74.842491\nv -19.449629 -449.257507 -74.846642\nv -19.079651 -370.894684 -71.043076\nv -19.075529 -449.257660 -71.047211\nv -17.971487 -370.894806 -67.389648\nv -17.967365 -449.257843 -67.393784\nv -16.171875 -370.894897 -64.022598\nv -16.167753 -449.257904 -64.026733\nv -13.749943 -370.894958 -61.071316\nv -13.745821 -449.257935 -61.075451\nv -10.798818 -370.894928 -58.649239\nv -10.794695 -449.257904 -58.653343\nv -7.431855 -370.894867 -56.849438\nv -7.427732 -449.257843 -56.853603\nv -3.778454 -370.894684 -55.741112\nv -3.774332 -449.257660 -55.745216\nv 0.020966 -370.894531 -55.366791\nv 0.025088 -449.257507 -55.370911\nv 3.820406 -370.894257 -55.740913\nv 3.824528 -449.257233 -55.745018\nv 7.473866 -370.894073 -56.849045\nv 7.477987 -449.257050 -56.853210\nv 10.840922 -370.893768 -58.648670\nv 10.845045 -449.256744 -58.652775\nv 13.792175 -370.893494 -61.070591\nv 13.796297 -449.256470 -61.074726\nv 16.214264 -370.893188 -64.021744\nv 16.218386 -449.256195 -64.025879\nv 18.014051 -370.892914 -67.388702\nv 18.018173 -449.255951 -67.392838\nv 19.122410 -370.892670 -71.042068\nv 19.126532 -449.255646 -71.046204\nv 19.496708 -370.892426 -74.841469\nv 19.500830 -449.255432 -74.845619\nv 19.122608 -370.892273 -78.640930\nv 19.126730 -449.255280 -78.645081\nv 18.014444 -370.892120 -82.294388\nv 18.018566 -449.255157 -82.298523\nv 16.214832 -370.892059 -85.661469\nv 16.218954 -449.255066 -85.665558\nv 13.792900 -370.892029 -88.612717\nv 13.797022 -449.255005 -88.616852\nv 10.841775 -370.892059 -91.034828\nv 10.845897 -449.255066 -91.038933\nv 7.474812 -370.892151 -92.834625\nv 7.478934 -449.255127 -92.838745\nv 3.821411 -370.892242 -93.942970\nv 3.825533 -449.255219 -93.947060\nv 0.021991 -370.892456 -94.317261\nv 0.026113 -449.255463 -94.321411\nv -3.777449 -370.892670 -93.943169\nv -3.773327 -449.255646 -93.947258\nv -7.430908 -370.892944 -92.835022\nv -7.426786 -449.255920 -92.839142\nv -10.797965 -370.893219 -91.035393\nv -10.793843 -449.256226 -91.039497\nv -13.749218 -370.893494 -88.613441\nv -13.745096 -449.256470 -88.617577\nv -16.171307 -370.893768 -85.662323\nv -16.167185 -449.256775 -85.666412\nv -17.971094 -370.894012 -82.295334\nv -17.966972 -449.257050 -82.299469\nv -19.079453 -370.894287 -78.641937\nv -19.075331 -449.257294 -78.646088\nv -20.232470 -449.693085 -78.876312\nv -20.629446 -449.693298 -74.846703\nv -20.232681 -449.693451 -70.817108\nv -19.057394 -449.693634 -66.942322\nv -17.148739 -449.693726 -63.371269\nv -14.580111 -449.693756 -60.241184\nv -11.450176 -449.693726 -57.672405\nv -7.879217 -449.693665 -55.763573\nv -4.004519 -449.693512 -54.588089\nv 0.025080 -449.693298 -54.191101\nv 4.054702 -449.693085 -54.587875\nv 7.929462 -449.692810 -55.763157\nv 11.500522 -449.692505 -57.671803\nv 14.630588 -449.692230 -60.240414\nv 17.199383 -449.691895 -63.370365\nv 19.108225 -449.691620 -66.941315\nv 20.283718 -449.691315 -70.816040\nv 20.680693 -449.691101 -74.845619\nv 20.283930 -449.690948 -78.875244\nv 19.108641 -449.690765 -82.750031\nv 17.199986 -449.690674 -86.321068\nv 14.631356 -449.690704 -89.451187\nv 11.501425 -449.690674 -92.019958\nv 7.930466 -449.690796 -93.928780\nv 4.055767 -449.690887 -95.104248\nv 0.026167 -449.691132 -95.501251\nv -4.003454 -449.691315 -95.104462\nv -7.878214 -449.691650 -93.929192\nv -11.449273 -449.691895 -92.020561\nv -14.579342 -449.692230 -89.451950\nv -17.148136 -449.692505 -86.321968\nv -19.056978 -449.692780 -82.751038\nv 14.631419 -450.863068 -89.451202\nv 11.501487 -450.863068 -92.020004\nv 7.930528 -450.863159 -93.928825\nv 4.055829 -450.863312 -95.104324\nv 0.026229 -450.863525 -95.501328\nv -4.003392 -450.863739 -95.104538\nv -7.878152 -450.864014 -93.929237\nv -11.449211 -450.864288 -92.020607\nv -14.579280 -450.864594 -89.451965\nv -17.148075 -450.864929 -86.322029\nv -19.056917 -450.865173 -82.751099\nv -20.232409 -450.865448 -78.876343\nv -20.629385 -450.865723 -74.846748\nv -20.232620 -450.865875 -70.817154\nv -19.057333 -450.866058 -66.942368\nv -17.148678 -450.866089 -63.371330\nv -14.580049 -450.866119 -60.241276\nv -11.450114 -450.866089 -57.672482\nv -7.879156 -450.866028 -55.763618\nv -4.004457 -450.865875 -54.588150\nv 0.025142 -450.865662 -54.191162\nv 4.054763 -450.865448 -54.587936\nv 7.929524 -450.865173 -55.763203\nv 11.500584 -450.864868 -57.671879\nv 14.630651 -450.864594 -60.240505\nv 17.199444 -450.864258 -63.370426\nv 19.108286 -450.864044 -66.941360\nv 20.283779 -450.863739 -70.816086\nv 20.680754 -450.863525 -74.845665\nv 20.283991 -450.863312 -78.875275\nv 19.108702 -450.863159 -82.750092\nv 17.200047 -450.863098 -86.321129\nv 19.217840 -451.693390 -78.663300\nv 18.104383 -451.693268 -82.334167\nv 16.296194 -451.693176 -85.717209\nv 13.862754 -451.693176 -88.682602\nv 10.897557 -451.693146 -91.116211\nv 7.514564 -451.693268 -92.924606\nv 3.843763 -451.693390 -94.038200\nv 0.026243 -451.693604 -94.414291\nv -3.791296 -451.693817 -94.038399\nv -7.462156 -451.694061 -92.925003\nv -10.845243 -451.694305 -91.116783\nv -13.810567 -451.694641 -88.683334\nv -16.244165 -451.694885 -85.718063\nv -18.052534 -451.695160 -82.335114\nv -19.166182 -451.695404 -78.664307\nv -19.542261 -451.695648 -74.846779\nv -19.166384 -451.695831 -71.029266\nv -18.052927 -451.695953 -67.358398\nv -16.244738 -451.696014 -63.975311\nv -13.811295 -451.696045 -61.009975\nv -10.846099 -451.696045 -58.576351\nv -7.463106 -451.695953 -56.768002\nv -3.792305 -451.695831 -55.654381\nv 0.025215 -451.695618 -55.278290\nv 3.842754 -451.695404 -55.654182\nv 7.513614 -451.695160 -56.767609\nv 10.896701 -451.694885 -58.575779\nv 13.862026 -451.694580 -61.009247\nv 16.295622 -451.694305 -63.974457\nv 18.103991 -451.694061 -67.357452\nv 19.217638 -451.693817 -71.028259\nv 19.593718 -451.693573 -74.845749\nv 16.880596 -451.694122 -67.864243\nv 17.918865 -451.693817 -71.286575\nv 18.269508 -451.693665 -74.845787\nv 17.919052 -451.693451 -78.404984\nv 16.880962 -451.693359 -81.827454\nv 15.195146 -451.693268 -84.981537\nv 12.926378 -451.693298 -87.746223\nv 10.161819 -451.693268 -90.015160\nv 7.007772 -451.693359 -91.701172\nv 3.585390 -451.693481 -92.739426\nv 0.026208 -451.693665 -93.090088\nv -3.532990 -451.693848 -92.739609\nv -6.955427 -451.694092 -91.701538\nv -10.109561 -451.694305 -90.015694\nv -12.874241 -451.694641 -87.746902\nv -15.143153 -451.694855 -84.982330\nv -16.829140 -451.695129 -81.828339\nv -17.867409 -451.695343 -78.405930\nv -18.218052 -451.695557 -74.846748\nv -17.867596 -451.695709 -71.287521\nv -16.829506 -451.695892 -67.865128\nv -15.143686 -451.695953 -64.710999\nv -12.874920 -451.695923 -61.946339\nv -10.110359 -451.695953 -59.677376\nv -6.956314 -451.695862 -57.991364\nv -3.533931 -451.695740 -56.953156\nv 0.025250 -451.695587 -56.602524\nv 3.584449 -451.695374 -56.952969\nv 7.006886 -451.695129 -57.990997\nv 10.161020 -451.694916 -59.676842\nv 12.925699 -451.694580 -61.945660\nv 15.194613 -451.694366 -64.710205\nv 10.167595 -576.683228 -59.683449\nv 12.932275 -576.683044 -61.952236\nv 15.201187 -576.682678 -64.716751\nv 16.887171 -576.682434 -67.870834\nv 17.925440 -576.682251 -71.293228\nv 18.276083 -576.682007 -74.852364\nv 17.925627 -576.681885 -78.411575\nv 16.887537 -576.681702 -81.833984\nv 15.201720 -576.681702 -84.988129\nv 12.932953 -576.681641 -87.752861\nv 10.168393 -576.681641 -90.021721\nv 7.014347 -576.681763 -91.707764\nv 3.591964 -576.681824 -92.745987\nv 0.032784 -576.682007 -93.096649\nv -3.526416 -576.682190 -92.746170\nv -6.948852 -576.682495 -91.708130\nv -10.102986 -576.682739 -90.022255\nv -12.867666 -576.682983 -87.753540\nv -15.136579 -576.683289 -84.988922\nv -16.822565 -576.683533 -81.834869\nv -17.860834 -576.683716 -78.412521\nv -18.211477 -576.683960 -74.853325\nv -17.861021 -576.684082 -71.294174\nv -16.822931 -576.684265 -67.871719\nv -15.137112 -576.684265 -64.717545\nv -12.868344 -576.684387 -61.952915\nv -10.103785 -576.684326 -59.683983\nv -6.949739 -576.684204 -57.997986\nv -3.527357 -576.684143 -56.959747\nv 0.031824 -576.683960 -56.609070\nv 3.591023 -576.683777 -56.959560\nv 7.013461 -576.683472 -57.997620\nv 0.018848 -367.007721 17.401123\nv 0.909776 -367.007690 17.479120\nv 1.773630 -367.007629 17.710617\nv 2.584150 -367.007629 18.088585\nv 3.316727 -367.007599 18.601559\nv 3.949090 -367.007599 19.233959\nv 4.462031 -367.007599 19.966564\nv 4.839990 -367.007690 20.777121\nv 5.071417 -367.007660 21.640972\nv 5.149354 -367.007721 22.531904\nv 5.071370 -367.007751 23.422863\nv 4.839897 -367.007843 24.286718\nv 4.461896 -367.007904 25.097210\nv 3.948917 -367.007965 25.829800\nv 3.316520 -367.008026 26.462154\nv 2.583916 -367.008118 26.975105\nv 1.773377 -367.008179 27.353043\nv 0.909510 -367.008179 27.584482\nv 0.018578 -367.008240 27.662384\nv -0.872350 -367.008301 27.584435\nv -1.736203 -367.008362 27.352951\nv -2.546724 -367.008362 26.974970\nv -3.279300 -367.008392 26.461981\nv -3.911663 -367.008392 25.829594\nv -4.424604 -367.008392 25.096975\nv -4.802563 -367.008331 24.286465\nv -5.033990 -367.008301 23.422598\nv -5.111927 -367.008270 22.531635\nv -5.033943 -367.008209 21.640707\nv -4.802471 -367.008179 20.776867\nv -4.424469 -367.008087 19.966330\nv -3.911490 -367.008026 19.233753\nv -3.279093 -367.007965 18.601385\nv -2.546490 -367.007874 18.088449\nv -1.735950 -367.007812 17.710526\nv -0.872084 -367.007812 17.479073\nv -0.873567 -339.192261 17.480522\nv 0.017385 -339.192200 17.402618\nv 0.908313 -339.192139 17.480570\nv 1.772147 -339.192108 17.712082\nv 2.582677 -339.192078 18.090050\nv 3.315264 -339.192078 18.603039\nv 3.947617 -339.192078 19.235439\nv 4.460568 -339.192078 19.968044\nv 4.838507 -339.192139 20.778585\nv 5.069953 -339.192169 21.642452\nv 5.147861 -339.192169 22.533369\nv 5.069907 -339.192261 23.424313\nv 4.838414 -339.192322 24.288153\nv 4.460433 -339.192383 25.098675\nv 3.947443 -339.192444 25.831234\nv 3.315057 -339.192474 26.463619\nv 2.582443 -339.192566 26.976555\nv 1.771894 -339.192657 27.354523\nv 0.908047 -339.192688 27.585962\nv 0.017115 -339.192688 27.663849\nv -0.873833 -339.192810 27.585915\nv -1.737666 -339.192841 27.354431\nv -2.548187 -339.192810 26.976419\nv -3.280773 -339.192841 26.463446\nv -3.913126 -339.192871 25.831028\nv -4.426077 -339.192871 25.098440\nv -4.804026 -339.192810 24.287899\nv -5.035463 -339.192810 23.424047\nv -5.113389 -339.192719 22.533098\nv -5.035416 -339.192719 21.642187\nv -4.803934 -339.192627 20.778332\nv -4.425942 -339.192566 19.967810\nv -3.912953 -339.192505 19.235233\nv -3.280566 -339.192444 18.602865\nv -2.547953 -339.192322 18.089914\nv -1.737413 -339.192291 17.711990\nv -9.063975 -339.192383 11.710073\nv -7.046588 -339.192200 10.297575\nv -4.814570 -339.192017 9.256831\nv -2.435745 -339.191864 8.619489\nv 0.017622 -339.191711 8.404907\nv 2.470966 -339.191620 8.619617\nv 4.849759 -339.191528 9.257086\nv 7.081712 -339.191467 10.297946\nv 9.099044 -339.191406 11.710551\nv 10.840389 -339.191376 13.451991\nv 12.252895 -339.191437 15.469393\nv 13.293637 -339.191498 17.701414\nv 13.930954 -339.191589 20.080231\nv 14.145540 -339.191711 22.533606\nv 13.930825 -339.191833 24.986984\nv 13.293383 -339.192017 27.365767\nv 12.252524 -339.192169 29.597704\nv 10.839911 -339.192352 31.615030\nv 9.098475 -339.192566 33.356396\nv 7.081069 -339.192749 34.768894\nv 4.849061 -339.192932 35.809620\nv 2.470234 -339.193054 36.446964\nv 0.016879 -339.193237 36.661560\nv -2.436477 -339.193298 36.446835\nv -4.815269 -339.193420 35.809368\nv -7.047232 -339.193481 34.768520\nv -9.064545 -339.193542 33.355919\nv -10.805900 -339.193512 31.614462\nv -12.218416 -339.193451 29.597061\nv -13.259158 -339.193420 27.365068\nv -13.896484 -339.193298 24.986252\nv -14.111050 -339.193176 22.532862\nv -13.896356 -339.193054 20.079498\nv -13.258904 -339.192902 17.700716\nv -12.218045 -339.192719 15.468749\nv -10.805422 -339.192535 13.451422\nv -13.259042 -336.557648 17.700853\nv -12.218184 -336.557465 15.468917\nv -10.805560 -336.557281 13.451575\nv -9.064114 -336.557098 11.710211\nv -7.046727 -336.556885 10.297682\nv -4.814710 -336.556732 9.256984\nv -2.435883 -336.556580 8.619626\nv 0.017483 -336.556458 8.405045\nv 2.470827 -336.556335 8.619755\nv 4.849620 -336.556244 9.257238\nv 7.081573 -336.556152 10.298053\nv 9.098906 -336.556122 11.710689\nv 10.840251 -336.556122 13.452145\nv 12.252757 -336.556183 15.469561\nv 13.293499 -336.556244 17.701551\nv 13.930816 -336.556335 20.080368\nv 14.145402 -336.556458 22.533773\nv 13.930687 -336.556580 24.987106\nv 13.293244 -336.556732 27.365873\nv 12.252386 -336.556915 29.597826\nv 10.839773 -336.557098 31.615168\nv 9.098336 -336.557251 33.356503\nv 7.080929 -336.557465 34.769047\nv 4.848922 -336.557617 35.809772\nv 2.470095 -336.557800 36.447117\nv 0.016740 -336.557922 36.661697\nv -2.436615 -336.558044 36.446987\nv -4.815408 -336.558105 35.809521\nv -7.047370 -336.558197 34.768673\nv -9.064683 -336.558228 33.356026\nv -10.806038 -336.558258 31.614599\nv -12.218554 -336.558197 29.597183\nv -13.259296 -336.558136 27.365175\nv -13.896623 -336.558044 24.986374\nv -14.111188 -336.557922 22.533030\nv -13.896494 -336.557800 20.079636\nv -14.561126 -336.558075 25.103514\nv -14.785950 -336.557983 22.533012\nv -14.249814 -336.557831 20.045845\nv -13.581917 -336.557587 17.553461\nv -12.802524 -336.557495 15.131499\nv -11.322438 -336.557312 13.017845\nv -9.497821 -336.557068 11.193308\nv -7.384081 -336.556915 9.713352\nv -4.962101 -336.556732 8.934043\nv -2.469673 -336.556580 8.266323\nv 0.017501 -336.556427 7.730317\nv 2.588015 -336.556274 7.955283\nv 5.080417 -336.556183 8.623165\nv 7.418968 -336.556122 9.713742\nv 9.304833 -336.556091 11.421601\nv 11.129356 -336.556122 13.246203\nv 12.837107 -336.556152 15.132174\nv 13.927565 -336.556183 17.470795\nv 14.595329 -336.556305 19.963243\nv 14.820151 -336.556396 22.533791\nv 14.284025 -336.556549 25.020914\nv 13.616130 -336.556732 27.513298\nv 12.836717 -336.556885 29.935274\nv 11.356661 -336.557068 32.048912\nv 9.532043 -336.557312 33.873421\nv 7.418294 -336.557465 35.353374\nv 4.996314 -336.557617 36.132668\nv 2.503886 -336.557831 36.800434\nv 0.016722 -336.557983 37.336426\nv -2.553792 -336.558105 37.111458\nv -5.046205 -336.558197 36.443562\nv -7.384756 -336.558258 35.352985\nv -9.270621 -336.558228 33.645126\nv -11.095144 -336.558258 31.820539\nv -12.802894 -336.558228 29.934599\nv -13.893362 -336.558197 27.595947\nv -4.645525 -332.210937 35.342407\nv -6.798908 -332.211029 34.338184\nv -8.745221 -332.211029 32.975296\nv -10.425258 -332.211060 31.295151\nv -11.788056 -332.210999 29.348780\nv -12.792170 -332.210937 27.195343\nv -13.407041 -332.210876 24.900251\nv -13.614078 -332.210724 22.533241\nv -13.406916 -332.210602 20.166273\nv -12.791924 -332.210449 17.871216\nv -11.787698 -332.210266 15.717814\nv -10.424797 -332.210144 13.771516\nv -8.744642 -332.209930 12.091460\nv -6.798287 -332.209778 10.728658\nv -4.644851 -332.209595 9.724564\nv -2.349755 -332.209473 9.109664\nv 0.017241 -332.209290 8.902649\nv 2.384215 -332.209229 9.109789\nv 4.679279 -332.209106 9.724809\nv 6.832673 -332.209045 10.729015\nv 8.778957 -332.209015 12.091921\nv 10.459013 -332.209045 13.772064\nv 11.821803 -332.209045 15.718435\nv 12.825914 -332.209106 17.871889\nv 13.440796 -332.209198 20.166979\nv 13.647834 -332.209320 22.533958\nv 13.440671 -332.209473 24.900957\nv 12.825669 -332.209595 27.196016\nv 11.821445 -332.209778 29.349401\nv 10.458552 -332.209961 31.295700\nv 8.778408 -332.210114 32.975758\nv 6.832052 -332.210297 34.338543\nv 4.678606 -332.210449 35.342651\nv 2.383509 -332.210632 35.957550\nv 0.016524 -332.210754 36.164551\nv -2.350461 -332.210876 35.957428\nv 4.524931 -330.975769 34.920666\nv 4.678562 -331.364868 35.342651\nv 6.607417 -330.975647 33.949623\nv 6.832008 -331.364685 34.338589\nv 2.305476 -330.975952 35.515305\nv 2.383465 -331.365051 35.957565\nv 0.016471 -330.976074 35.715500\nv 0.016480 -331.365173 36.164597\nv -2.272534 -330.976196 35.515182\nv -2.350505 -331.365295 35.957443\nv -4.491968 -330.976257 34.920429\nv -4.645568 -331.365356 35.342407\nv -6.574413 -330.976318 33.949276\nv -6.798952 -331.365417 34.338230\nv -8.456568 -330.976379 32.631340\nv -8.745265 -331.365448 32.975327\nv -10.081265 -330.976349 31.006525\nv -10.425302 -331.365479 31.295212\nv -11.399156 -330.976318 29.124289\nv -11.788100 -331.365417 29.348810\nv -12.370181 -330.976288 27.041788\nv -12.792213 -331.365356 27.195374\nv -12.964803 -330.976196 24.822306\nv -13.407084 -331.365265 24.900297\nv -13.165002 -330.976105 22.533329\nv -13.614121 -331.365143 22.533272\nv -12.964682 -330.975952 20.244349\nv -13.406960 -331.365021 20.166304\nv -12.369944 -330.975800 18.024897\nv -12.791969 -331.364868 17.871262\nv -11.398809 -330.975647 15.942434\nv -11.787743 -331.364685 15.717860\nv -10.080820 -330.975464 14.060266\nv -10.424841 -331.364532 13.771546\nv -8.456037 -330.975311 12.435569\nv -8.744688 -331.364380 12.091491\nv -6.573812 -330.975128 11.117702\nv -6.798331 -331.364197 10.728703\nv -4.491317 -330.974976 10.146656\nv -4.644895 -331.364014 9.724609\nv -2.271851 -330.974823 9.552049\nv -2.349799 -331.363861 9.109694\nv 0.017164 -330.974670 9.351852\nv 0.017197 -331.363770 8.902664\nv 2.306159 -330.974579 9.552170\nv 2.384171 -331.363617 9.109819\nv 4.525583 -330.974487 10.146894\nv 4.679235 -331.363525 9.724854\nv 6.608018 -330.974457 11.118048\nv 6.832629 -331.363464 10.729061\nv 8.490203 -330.974396 12.436014\nv 8.778913 -331.363464 12.091951\nv 10.114891 -330.974426 14.060798\nv 10.458968 -331.363434 13.772095\nv 11.432770 -330.974426 15.943034\nv 11.821758 -331.363464 15.718481\nv 12.403796 -330.974518 18.025549\nv 12.825870 -331.363525 17.871935\nv 12.998427 -330.974609 20.245001\nv 13.440752 -331.363617 20.167009\nv 13.198628 -330.974701 22.534023\nv 13.647790 -331.363739 22.533989\nv 12.998306 -330.974854 24.822989\nv 13.440627 -331.363861 24.901003\nv 12.403559 -330.975006 27.042440\nv 12.825625 -331.364014 27.196047\nv 11.432424 -330.975098 29.124889\nv 11.821401 -331.364197 29.349432\nv 10.114446 -330.975311 31.007055\nv 10.458509 -331.364380 31.295761\nv 8.489672 -330.975464 32.631786\nv 8.778364 -331.364532 32.975788\nv -12.464807 -332.211090 29.739479\nv -12.803102 -332.600159 29.934767\nv -11.095352 -332.600159 31.820738\nv -11.023901 -332.211090 31.797440\nv -13.526486 -332.210968 27.462595\nv -13.893570 -332.600098 27.596161\nv -14.176613 -332.210876 25.035929\nv -14.561334 -332.600006 25.103712\nv -14.395507 -332.210785 22.533222\nv -14.786157 -332.599915 22.533180\nv -14.176481 -332.210632 20.030558\nv -14.250022 -332.599731 20.046028\nv -13.526218 -332.210480 17.603922\nv -13.582125 -332.599518 17.553675\nv -12.464428 -332.210327 15.327065\nv -12.802732 -332.599396 15.131728\nv -11.023414 -332.210114 13.269196\nv -11.322646 -332.599182 13.018044\nv -9.246936 -332.209961 11.492814\nv -9.498029 -332.598999 11.193537\nv -7.188999 -332.209747 10.051920\nv -7.384290 -332.598816 9.713566\nv -4.912092 -332.209564 8.990258\nv -4.962309 -332.598663 8.934257\nv -2.485444 -332.209412 8.340083\nv -2.469882 -332.598450 8.266506\nv 0.017261 -332.209290 8.121201\nv 0.017293 -332.598328 7.730530\nv 2.519936 -332.209167 8.340216\nv 2.587807 -332.598206 7.955467\nv 4.946558 -332.209076 8.990517\nv 5.080209 -332.598114 8.623363\nv 7.223401 -332.209015 10.052299\nv 7.418759 -332.598022 9.713956\nv 9.281273 -332.208984 11.493301\nv 9.304626 -332.598022 11.421830\nv 11.057656 -332.208954 13.269776\nv 11.129148 -332.598053 13.246417\nv 12.498551 -332.208984 15.327722\nv 12.836898 -332.598053 15.132402\nv 13.560222 -332.209076 17.604635\nv 13.927357 -332.598114 17.470993\nv 14.210369 -332.209167 20.031303\nv 14.595121 -332.598206 19.963442\nv 14.429253 -332.209259 22.533979\nv 14.819943 -332.598328 22.533958\nv 14.210238 -332.209412 25.036674\nv 14.283817 -332.598480 25.021112\nv 13.559983 -332.209564 27.463308\nv 13.615922 -332.598663 27.513512\nv 12.498173 -332.209747 29.740135\nv 12.836508 -332.598816 29.935442\nv 11.057169 -332.209930 31.798019\nv 11.356453 -332.598999 32.049110\nv 9.280692 -332.210144 33.574387\nv 9.531836 -332.599182 33.873619\nv 7.222744 -332.210297 35.015282\nv 7.418085 -332.599396 35.353619\nv 4.945846 -332.210510 36.076988\nv 4.996106 -332.599548 36.132866\nv 2.519189 -332.210632 36.727116\nv 2.503678 -332.599731 36.800648\nv 0.016503 -332.210815 36.945969\nv 0.016514 -332.599884 37.336639\nv -2.486191 -332.210876 36.726986\nv -2.554000 -332.599976 37.111671\nv -4.912804 -332.210999 36.076729\nv -5.046413 -332.600128 36.443775\nv -7.189656 -332.211029 35.014900\nv -7.384964 -332.600189 35.353230\nv -9.247517 -332.211121 33.573898\nv -9.270829 -332.600159 33.645325\nv -19.989223 -366.251648 22.415855\nv -19.988935 -371.740051 22.415581\nv -19.665312 -366.251831 26.119310\nv -19.665024 -371.740234 26.119005\nv -17.366646 -366.252075 32.435333\nv -17.366358 -371.740448 32.435043\nv -15.234408 -366.252075 35.480679\nv -15.234119 -371.740479 35.480358\nv -10.085691 -366.252045 39.801155\nv -10.085402 -371.740448 39.800880\nv -6.716452 -366.251953 41.372368\nv -6.716163 -371.740387 41.372093\nv -0.097273 -366.251648 42.539715\nv -0.096984 -371.740082 42.539425\nv 3.606176 -366.251465 42.215778\nv 3.606465 -371.739868 42.215534\nv 9.922196 -366.251007 39.917130\nv 9.922485 -371.739410 39.916855\nv 12.967522 -366.250732 37.784916\nv 12.967811 -371.739136 37.784611\nv 17.288038 -366.250244 32.636196\nv 17.288326 -371.738647 32.635876\nv 18.859245 -366.250000 29.266945\nv 18.859533 -371.738403 29.266655\nv 20.026571 -366.249573 22.647743\nv 20.026859 -371.737976 22.647469\nv 19.702660 -366.249390 18.944305\nv 19.702948 -371.737793 18.944046\nv 17.403994 -366.249176 12.628265\nv 17.404282 -371.737549 12.627960\nv 15.271755 -366.249146 9.582936\nv 15.272043 -371.737549 9.582662\nv 10.123038 -366.249176 5.262412\nv 10.123326 -371.737579 5.262122\nv 6.753799 -366.249237 3.691233\nv 6.754088 -371.737671 3.690943\nv 0.134620 -366.249573 2.523899\nv 0.134909 -371.737946 2.523609\nv -3.568829 -366.249756 2.847822\nv -3.568540 -371.738159 2.847532\nv -9.884850 -366.250214 5.146453\nv -9.884562 -371.738617 5.146179\nv -12.930175 -366.250488 7.278713\nv -12.929887 -371.738892 7.278392\nv -17.250690 -366.250977 12.427418\nv -17.250402 -371.739380 12.427128\nv -18.821899 -366.251251 15.796685\nv -18.821611 -371.739624 15.796380\nv -18.714743 -366.251770 25.834515\nv -19.003637 -366.251617 22.531315\nv -18.714569 -366.251404 19.228146\nv -17.856285 -366.251190 16.025303\nv -16.454887 -366.250946 13.020197\nv -14.552944 -366.250702 10.304107\nv -12.208254 -366.250458 7.959548\nv -9.492043 -366.250214 6.057703\nv -6.486876 -366.250000 4.656476\nv -3.284024 -366.249817 3.798406\nv 0.019174 -366.249634 3.509460\nv 3.322356 -366.249451 3.798579\nv 6.525164 -366.249329 4.656819\nv 9.530256 -366.249237 6.058204\nv 12.246367 -366.249176 7.960191\nv 14.590935 -366.249176 10.304873\nv 16.492733 -366.249237 13.021064\nv 17.893974 -366.249298 16.026243\nv 18.752090 -366.249451 19.229132\nv 19.040983 -366.249603 22.532316\nv 18.751917 -366.249817 25.835501\nv 17.893633 -366.250031 29.038298\nv 16.492233 -366.250244 32.043404\nv 14.590291 -366.250488 34.759510\nv 12.245601 -366.250763 37.104095\nv 9.529389 -366.250977 39.005867\nv 6.524223 -366.251190 40.407124\nv 3.321371 -366.251404 41.265194\nv 0.018173 -366.251617 41.554123\nv -3.285009 -366.251770 41.265018\nv -6.487817 -366.251862 40.406780\nv -9.492910 -366.251953 39.005367\nv -12.209020 -366.252045 37.103455\nv -14.553588 -366.252014 34.758743\nv -16.455387 -366.251953 32.042538\nv -17.856627 -366.251923 29.037357\nv -13.060297 -361.842499 33.505821\nv -14.767193 -361.842438 31.068016\nv -16.024813 -361.842377 28.370871\nv -16.794968 -361.842255 25.496246\nv -17.054270 -361.842072 22.531595\nv -16.794811 -361.841949 19.566940\nv -16.024506 -361.841797 16.692404\nv -14.766744 -361.841522 13.995294\nv -13.059720 -361.841339 11.557549\nv -10.955344 -361.841095 9.453295\nv -8.517520 -361.840912 7.746389\nv -5.820347 -361.840698 6.488769\nv -2.945766 -361.840485 5.718612\nv 0.018890 -361.840332 5.459321\nv 2.983534 -361.840179 5.718768\nv 5.858073 -361.840088 6.489076\nv 8.555181 -361.839996 7.746838\nv 10.992915 -361.839935 9.453872\nv 13.097180 -361.839935 11.558236\nv 14.804076 -361.839996 13.996071\nv 16.061695 -361.840088 16.693247\nv 16.831848 -361.840179 19.567825\nv 17.091150 -361.840302 22.532494\nv 16.831692 -361.840485 25.497131\nv 16.061388 -361.840668 28.371714\nv 14.803627 -361.840912 31.068794\nv 13.096603 -361.841095 33.506508\nv 10.992228 -361.841339 35.610809\nv 8.554403 -361.841522 37.317654\nv 5.857229 -361.841736 38.575287\nv 2.982649 -361.841949 39.345448\nv 0.017992 -361.842102 39.604752\nv -2.946651 -361.842255 39.345291\nv -5.821191 -361.842346 38.574982\nv -8.518297 -361.842438 37.317204\nv -10.956032 -361.842499 35.610229\nv -5.466484 -361.842285 37.600548\nv -7.999774 -361.842407 36.419193\nv -10.289441 -361.842407 34.815861\nv -12.265900 -361.842407 32.839291\nv -13.869100 -361.842346 30.549532\nv -15.050333 -361.842316 28.016174\nv -15.773721 -361.842194 25.316204\nv -16.017260 -361.842041 22.531622\nv -15.773575 -361.841888 19.747051\nv -15.050044 -361.841736 17.047104\nv -13.868677 -361.841522 14.513811\nv -12.265357 -361.841339 12.224150\nv -10.288795 -361.841125 10.247684\nv -7.999043 -361.840881 8.644473\nv -5.465692 -361.840668 7.463265\nv -2.765723 -361.840546 6.739856\nv 0.018863 -361.840363 6.496307\nv 2.803437 -361.840240 6.740003\nv 5.503366 -361.840118 7.463554\nv 8.036668 -361.840027 8.644896\nv 10.326324 -361.840027 10.248227\nv 12.302783 -361.840057 12.224795\nv 13.905983 -361.840057 14.514542\nv 15.087216 -361.840149 17.047897\nv 15.810604 -361.840240 19.747883\nv 16.054140 -361.840332 22.532465\nv 15.810458 -361.840546 25.317036\nv 15.086927 -361.840729 28.016968\nv 13.905560 -361.840881 30.550262\nv 12.302240 -361.841125 32.839939\nv 10.325679 -361.841309 34.816402\nv 8.035937 -361.841553 36.419613\nv 5.502574 -361.841736 37.600838\nv 2.802606 -361.841888 38.324200\nv 0.018020 -361.842041 38.567749\nv -2.766554 -361.842194 38.324055\nv 2.802754 -364.653534 38.324078\nv 0.018168 -364.653687 38.567581\nv -2.766406 -364.653839 38.323933\nv -5.466336 -364.653931 37.600365\nv -7.999626 -364.654022 36.419025\nv -10.289293 -364.654053 34.815708\nv -12.265752 -364.654022 32.839123\nv -13.868952 -364.653992 30.549395\nv -15.050185 -364.653931 28.016022\nv -15.773573 -364.653809 25.316036\nv -16.017111 -364.653717 22.531485\nv -15.773427 -364.653534 19.746899\nv -15.049896 -364.653320 17.046967\nv -13.868529 -364.653168 14.513674\nv -12.265209 -364.652954 12.224012\nv -10.288648 -364.652740 10.247532\nv -7.998896 -364.652527 8.644320\nv -5.465543 -364.652313 7.463129\nv -2.765575 -364.652161 6.739719\nv 0.019011 -364.652008 6.496185\nv 2.803585 -364.651855 6.739866\nv 5.503515 -364.651764 7.463417\nv 8.036816 -364.651672 8.644743\nv 10.326472 -364.651642 10.248075\nv 12.302931 -364.651672 12.224658\nv 13.906131 -364.651703 14.514404\nv 15.087364 -364.651733 17.047760\nv 15.810752 -364.651886 19.747730\nv 16.054289 -364.652008 22.532328\nv 15.810606 -364.652161 25.316868\nv 15.087075 -364.652344 28.016815\nv 13.905708 -364.652527 30.550125\nv 12.302388 -364.652740 32.839771\nv 10.325827 -364.652954 34.816250\nv 8.036085 -364.653168 36.419445\nv 5.502722 -364.653381 37.600655\nv 6.499456 -364.652924 30.255909\nv 5.059730 -364.653046 31.263943\nv 3.466830 -364.653137 32.006653\nv 1.769168 -364.653290 32.461502\nv 0.018324 -364.653381 32.614639\nv -1.732512 -364.653473 32.461411\nv -3.430150 -364.653503 32.006470\nv -5.023010 -364.653595 31.263678\nv -6.462684 -364.653595 30.255568\nv -7.705411 -364.653595 29.012753\nv -8.713452 -364.653564 27.573029\nv -9.456172 -364.653503 25.980129\nv -9.911017 -364.653473 24.282484\nv -10.064150 -364.653381 22.531641\nv -9.910925 -364.653290 20.780775\nv -9.455990 -364.653137 19.083126\nv -8.713187 -364.653046 17.490280\nv -7.705070 -364.652893 16.050594\nv -6.462277 -364.652771 14.807890\nv -5.022551 -364.652679 13.799840\nv -3.429651 -364.652527 13.057069\nv -1.731989 -364.652435 12.602280\nv 0.018855 -364.652344 12.449159\nv 1.769691 -364.652252 12.602372\nv 3.467329 -364.652161 13.057251\nv 5.060189 -364.652130 13.800106\nv 6.499862 -364.652100 14.808230\nv 7.742590 -364.652100 16.051001\nv 8.750632 -364.652130 17.490740\nv 9.493351 -364.652161 19.083624\nv 9.948195 -364.652252 20.781298\nv 10.101330 -364.652344 22.532171\nv 9.948103 -364.652435 24.283007\nv 9.493169 -364.652527 25.980627\nv 8.750367 -364.652649 27.573488\nv 7.742249 -364.652802 29.013159\nv 9.493093 -363.231140 25.980688\nv 8.750292 -363.231293 27.573580\nv 7.742175 -363.231415 29.013250\nv 6.499381 -363.231537 30.255970\nv 5.059655 -363.231659 31.264004\nv 3.466755 -363.231812 32.006760\nv 1.769093 -363.231903 32.461594\nv 0.018249 -363.231995 32.614731\nv -1.732587 -363.232086 32.461502\nv -3.430225 -363.232178 32.006577\nv -5.023085 -363.232208 31.263739\nv -6.462759 -363.232208 30.255629\nv -7.705486 -363.232208 29.012844\nv -8.713528 -363.232208 27.573120\nv -9.456247 -363.232117 25.980190\nv -9.911092 -363.232086 24.282560\nv -10.064225 -363.231964 22.531702\nv -9.910999 -363.231903 20.780851\nv -9.456065 -363.231812 19.083233\nv -8.713263 -363.231659 17.490387\nv -7.705145 -363.231537 16.050701\nv -6.462353 -363.231415 14.807966\nv -5.022626 -363.231262 13.799916\nv -3.429726 -363.231140 13.057190\nv -1.732064 -363.231049 12.602356\nv 0.018780 -363.230927 12.449203\nv 1.769616 -363.230865 12.602448\nv 3.467254 -363.230774 13.057372\nv 5.060114 -363.230713 13.800182\nv 6.499787 -363.230743 14.808307\nv 7.742515 -363.230743 16.051107\nv 8.750557 -363.230743 17.490847\nv 9.493276 -363.230835 19.083731\nv 9.948120 -363.230865 20.781374\nv 10.101254 -363.230927 22.532232\nv 9.948028 -363.231049 24.283083\nv 6.259803 -363.231079 21.431637\nv 6.356054 -363.231110 22.532135\nv 6.259745 -363.231171 23.632626\nv 5.973797 -363.231293 24.699711\nv 5.506911 -363.231354 25.700890\nv 4.873247 -363.231445 26.605795\nv 4.092076 -363.231476 27.386902\nv 3.187150 -363.231598 28.020515\nv 2.185918 -363.231628 28.487347\nv 1.118850 -363.231750 28.773268\nv 0.018348 -363.231812 28.869507\nv -1.082150 -363.231873 28.773211\nv -2.149202 -363.231873 28.487232\nv -3.150410 -363.231903 28.020350\nv -4.055304 -363.231903 27.386688\nv -4.836432 -363.231934 26.605539\nv -5.470049 -363.231903 25.700602\nv -5.936882 -363.231903 24.699398\nv -6.222775 -363.231842 23.632298\nv -6.319026 -363.231781 22.531801\nv -6.222717 -363.231750 21.431309\nv -5.936769 -363.231659 20.364269\nv -5.469882 -363.231567 19.363047\nv -4.836218 -363.231506 18.458155\nv -4.055048 -363.231415 17.677017\nv -3.150121 -363.231354 17.043421\nv -2.148889 -363.231262 16.576557\nv -1.081821 -363.231201 16.290651\nv 0.018681 -363.231140 16.194412\nv 1.119179 -363.231079 16.290709\nv 2.186231 -363.231018 16.576672\nv 3.187439 -363.231049 17.043587\nv 4.092332 -363.230988 17.677231\nv 4.873462 -363.231018 18.458410\nv 5.507078 -363.231018 19.363335\nv 5.973911 -363.231049 20.364582\nv 4.873661 -367.007568 18.458212\nv 5.507277 -367.007538 19.363136\nv 5.974111 -367.007568 20.364368\nv 6.260003 -367.007599 21.431438\nv 6.356253 -367.007660 22.531937\nv 6.259944 -367.007721 23.632427\nv 5.973997 -367.007812 24.699497\nv 5.507110 -367.007904 25.700676\nv 4.873446 -367.007965 26.605566\nv 4.092276 -367.008026 27.386719\nv 3.187349 -367.008148 28.020332\nv 2.186117 -367.008179 28.487179\nv 1.119049 -367.008240 28.773054\nv 0.018547 -367.008331 28.869308\nv -1.081951 -367.008362 28.772997\nv -2.149003 -367.008423 28.487064\nv -3.150211 -367.008453 28.020166\nv -4.055105 -367.008453 27.386505\nv -4.836234 -367.008453 26.605310\nv -5.469850 -367.008453 25.700388\nv -5.936684 -367.008423 24.699184\nv -6.222576 -367.008392 23.632099\nv -6.318827 -367.008331 22.531603\nv -6.222517 -367.008270 21.431110\nv -5.936570 -367.008179 20.364056\nv -5.469683 -367.008087 19.362848\nv -4.836020 -367.008057 18.457956\nv -4.054849 -367.007965 17.676819\nv -3.149922 -367.007843 17.043222\nv -2.148690 -367.007782 16.576344\nv -1.081622 -367.007721 16.290499\nv 0.018880 -367.007660 16.194199\nv 1.119378 -367.007599 16.290556\nv 2.186430 -367.007538 16.576458\nv 3.187638 -367.007538 17.043388\nv 4.092531 -367.007538 17.677032\nv 1.773630 -367.007629 17.710617\nv 2.584150 -367.007629 18.088585\nv 3.316727 -367.007599 18.601559\nv 3.949090 -367.007599 19.233959\nv 4.462031 -367.007599 19.966564\nv 4.839990 -367.007690 20.777121\nv 5.071417 -367.007660 21.640972\nv 5.149354 -367.007721 22.531904\nv 5.071370 -367.007751 23.422863\nv 4.839897 -367.007843 24.286718\nv 4.461896 -367.007904 25.097210\nv 3.948917 -367.007965 25.829800\nv 3.316520 -367.008026 26.462154\nv 2.583916 -367.008118 26.975105\nv 1.773377 -367.008179 27.353043\nv 0.909510 -367.008179 27.584482\nv 0.018578 -367.008240 27.662384\nv -0.872350 -367.008301 27.584435\nv -1.736203 -367.008362 27.352951\nv -2.546724 -367.008362 26.974970\nv -3.279300 -367.008392 26.461981\nv -3.911663 -367.008392 25.829594\nv -4.424604 -367.008392 25.096975\nv -4.802563 -367.008331 24.286465\nv -5.033990 -367.008301 23.422598\nv -5.111927 -367.008270 22.531635\nv -5.033943 -367.008209 21.640707\nv -4.802471 -367.008179 20.776867\nv -4.424469 -367.008087 19.966330\nv -3.911490 -367.008026 19.233753\nv -3.279093 -367.007965 18.601385\nv -2.546490 -367.007874 18.088449\nv -1.735950 -367.007812 17.710526\nv -0.872084 -367.007812 17.479073\nv 0.018848 -367.007721 17.401123\nv 0.909776 -367.007690 17.479120\nv -4.049271 -371.395966 43.274796\nv -3.253895 -371.395935 43.415077\nv -3.254148 -366.596252 43.415352\nv -4.049524 -366.596283 43.275070\nv -13.875875 -371.396240 38.461639\nv -13.257178 -371.396240 38.980793\nv -13.257431 -366.596527 38.981037\nv -13.876127 -366.596558 38.461884\nv -19.979355 -371.396057 29.380014\nv -19.703146 -371.396088 30.138916\nv -19.703400 -366.596436 30.139191\nv -19.979609 -366.596375 29.380274\nv -20.724329 -371.395538 18.463322\nv -20.864590 -371.395599 19.258698\nv -20.864843 -366.595886 19.258972\nv -20.724583 -366.595886 18.463581\nv 6.867397 -371.395325 42.529858\nv 7.626356 -371.395294 42.253666\nv 7.626102 -366.595612 42.253910\nv 6.867146 -366.595642 42.530102\nv 15.949039 -371.394562 36.426353\nv 16.468204 -371.394531 35.807671\nv 16.467951 -366.594788 35.807899\nv 15.948786 -366.594879 36.426582\nv -15.911151 -371.394745 8.636743\nv -16.430317 -371.394775 9.255412\nv -16.430571 -366.595123 9.255641\nv -15.911403 -366.595062 8.636956\nv -6.829510 -371.393982 2.533237\nv -7.588468 -371.394012 2.809432\nv -7.588720 -366.594330 2.809660\nv -6.829763 -366.594299 2.533467\nv 4.087159 -371.393341 1.788239\nv 3.291783 -371.393372 1.647974\nv 3.291531 -366.593689 1.648234\nv 4.086907 -366.593658 1.788514\nv 13.913762 -371.393066 6.601425\nv 13.295066 -371.393097 6.082259\nv 13.294814 -366.593414 6.082519\nv 13.913510 -366.593384 6.601700\nv 20.017244 -371.393250 15.683052\nv 19.741034 -371.393219 14.924164\nv 19.740780 -366.593506 14.924393\nv 20.016991 -366.593567 15.683311\nv 20.762217 -371.393799 26.599773\nv 20.902477 -371.393738 25.804413\nv 20.902224 -366.594055 25.804642\nv 20.761963 -366.594116 26.600018\nv 20.038088 -585.007629 22.298012\nv 20.037800 -579.519287 22.298256\nv 19.713980 -585.007874 26.001404\nv 19.713692 -579.519470 26.001678\nv 17.414982 -585.008362 32.317291\nv 17.414694 -579.519897 32.317657\nv 15.282584 -585.008606 35.362522\nv 15.282295 -579.520203 35.362827\nv 10.133640 -585.009094 39.682762\nv 10.133351 -579.520691 39.683067\nv 6.764318 -585.009338 41.253811\nv 6.764030 -579.520874 41.254086\nv 0.145077 -585.009766 42.420750\nv 0.144789 -579.521362 42.421055\nv -3.558354 -585.009949 42.096676\nv -3.558642 -579.521545 42.096951\nv -9.874254 -585.010193 39.797684\nv -9.874543 -579.521790 39.797928\nv -12.919467 -585.010193 37.665279\nv -12.919756 -579.521790 37.665585\nv -17.239712 -585.010193 32.516300\nv -17.240000 -579.521729 32.516636\nv -18.810743 -585.010071 29.146997\nv -18.811031 -579.521606 29.147303\nv -19.977720 -585.009766 22.527796\nv -19.978008 -579.521362 22.528070\nv -19.653614 -585.009583 18.824373\nv -19.653902 -579.521118 18.824648\nv -17.354614 -585.009094 12.508454\nv -17.354902 -579.520691 12.508729\nv -15.222217 -585.008850 9.463223\nv -15.222506 -579.520447 9.463528\nv -10.073273 -585.008362 5.142985\nv -10.073562 -579.519836 5.143259\nv -6.703951 -585.008057 3.571968\nv -6.704239 -579.519653 3.572242\nv -0.084710 -585.007690 2.404997\nv -0.084999 -579.519287 2.405302\nv 3.618721 -585.007507 2.729068\nv 3.618433 -579.519104 2.729404\nv 9.934621 -585.007263 5.028063\nv 9.934332 -579.518860 5.028368\nv 12.979835 -585.007263 7.160468\nv 12.979546 -579.518860 7.160802\nv 17.300079 -585.007263 12.309444\nv 17.299791 -579.518860 12.309659\nv 18.871111 -585.007446 15.678719\nv 18.870823 -579.518982 15.679024\nv 18.763426 -585.007935 25.716558\nv 19.052494 -585.007751 22.413374\nv 18.763599 -585.007568 19.110205\nv 17.905485 -585.007446 15.907301\nv 16.504244 -585.007385 12.902137\nv 14.602445 -585.007263 10.185931\nv 12.257877 -585.007263 7.841234\nv 9.541768 -585.007385 5.939338\nv 6.536674 -585.007446 4.537922\nv 3.333866 -585.007507 3.679653\nv 0.030684 -585.007690 3.390565\nv -3.272514 -585.007874 3.679479\nv -6.475366 -585.008179 4.537580\nv -9.480534 -585.008362 5.938838\nv -12.196743 -585.008606 7.840591\nv -14.541434 -585.008850 10.185164\nv -16.443377 -585.009094 12.901271\nv -17.844774 -585.009277 15.906361\nv -18.703060 -585.009521 19.109219\nv -18.992126 -585.009705 22.412373\nv -18.703234 -585.009888 25.715572\nv -17.845118 -585.009949 28.918446\nv -16.443876 -585.010071 31.923578\nv -14.542077 -585.010132 34.639816\nv -12.197510 -585.010193 36.984512\nv -9.481400 -585.010132 38.886440\nv -6.476306 -585.010010 40.287792\nv -3.273499 -585.009827 41.146091\nv 0.029683 -585.009705 41.435181\nv 3.332881 -585.009460 41.146267\nv 6.535734 -585.009277 40.288136\nv 9.540902 -585.009155 38.886940\nv 12.257111 -585.008850 36.985157\nv 14.601802 -585.008545 34.640583\nv 16.503744 -585.008362 31.924446\nv 17.905142 -585.008118 28.919386\nv 13.550979 -588.515381 33.758442\nv 15.315737 -588.515198 31.238256\nv 16.616051 -588.514893 28.449930\nv 17.412430 -588.514709 25.478088\nv 17.680658 -588.514587 22.413155\nv 17.412590 -588.514404 19.348206\nv 16.616367 -588.514343 16.376383\nv 15.316201 -588.514221 13.587957\nv 13.551576 -588.514160 11.067678\nv 11.376123 -588.514160 8.892084\nv 8.855909 -588.514160 7.127339\nv 6.067555 -588.514282 5.826973\nv 3.095776 -588.514343 5.030630\nv 0.030833 -588.514587 4.762391\nv -3.034124 -588.514709 5.030468\nv -6.005945 -588.514893 5.826655\nv -8.794371 -588.515137 7.126875\nv -11.314676 -588.515381 8.891487\nv -13.490243 -588.515625 11.066967\nv -15.254999 -588.515808 13.587153\nv -16.555313 -588.516052 16.375511\nv -17.351692 -588.516235 19.347292\nv -17.619921 -588.516418 22.412226\nv -17.351852 -588.516541 25.477175\nv -16.555630 -588.516602 28.449059\nv -15.255464 -588.516785 31.237453\nv -13.490839 -588.516846 33.757732\nv -11.315387 -588.516846 35.933327\nv -8.795174 -588.516785 37.698071\nv -6.006818 -588.516663 38.998379\nv -3.035039 -588.516541 39.794781\nv 0.029904 -588.516357 40.062958\nv 3.094861 -588.516174 39.794941\nv 6.066682 -588.516052 38.998695\nv 8.855106 -588.515808 37.698536\nv 11.375413 -588.515625 35.933922\nv 4.798978 -589.998840 21.571964\nv 4.580540 -589.998779 20.756620\nv 4.223860 -589.998779 19.991657\nv 3.739769 -589.998779 19.300301\nv 3.142954 -589.998779 18.703451\nv 2.451587 -589.998779 18.219334\nv 1.686646 -589.998840 17.862593\nv 0.871392 -589.998840 17.644096\nv 0.030574 -589.998901 17.570587\nv -0.810248 -589.998962 17.644053\nv -1.625514 -589.998962 17.862507\nv -2.390473 -589.999023 18.219206\nv -3.081866 -589.999146 18.703289\nv -3.678712 -589.999146 19.300104\nv -4.162840 -589.999268 19.991438\nv -4.519560 -589.999268 20.756382\nv -4.738041 -589.999329 21.571714\nv -4.811604 -589.999390 22.412533\nv -4.738086 -589.999451 23.253325\nv -4.519647 -589.999451 24.068577\nv -4.162967 -589.999512 24.833509\nv -3.678875 -589.999451 25.524927\nv -3.082061 -589.999512 26.121746\nv -2.390694 -589.999512 26.605894\nv -1.625753 -589.999451 26.962605\nv -0.810499 -589.999451 27.181070\nv 0.030319 -589.999390 27.254639\nv 0.871141 -589.999329 27.181114\nv 1.686407 -589.999329 26.962690\nv 2.451366 -589.999268 26.606022\nv 3.142759 -589.999146 26.121908\nv 3.739605 -589.999084 25.525124\nv 4.223733 -589.999023 24.833729\nv 4.580453 -589.998962 24.068815\nv 4.798934 -589.998962 23.253574\nv 4.872497 -589.998901 22.412786\nv 4.580106 -583.421143 24.069120\nv 4.798588 -583.421143 23.253880\nv 4.872150 -583.421143 22.413122\nv 4.798633 -583.421082 21.572300\nv 4.580193 -583.421021 20.756956\nv 4.223514 -583.420959 19.992054\nv 3.739422 -583.420959 19.300636\nv 3.142608 -583.420959 18.703787\nv 2.451241 -583.421021 18.219669\nv 1.686300 -583.421021 17.862928\nv 0.871046 -583.421021 17.644493\nv 0.030228 -583.421082 17.570892\nv -0.810594 -583.421143 17.644449\nv -1.625860 -583.421143 17.862843\nv -2.390819 -583.421265 18.219542\nv -3.082212 -583.421326 18.703625\nv -3.679058 -583.421326 19.300440\nv -4.163186 -583.421448 19.991835\nv -4.519906 -583.421509 20.756718\nv -4.738388 -583.421570 21.572050\nv -4.811949 -583.421631 22.412868\nv -4.738432 -583.421631 23.253630\nv -4.519993 -583.421631 24.068882\nv -4.163313 -583.421753 24.833876\nv -3.679221 -583.421692 25.525324\nv -3.082407 -583.421692 26.122112\nv -2.391040 -583.421692 26.606230\nv -1.626099 -583.421631 26.962940\nv -0.810845 -583.421631 27.181437\nv 0.029973 -583.421570 27.254974\nv 0.870795 -583.421509 27.181480\nv 1.686061 -583.421509 26.963026\nv 2.451020 -583.421448 26.606358\nv 3.142413 -583.421326 26.122274\nv 3.739259 -583.421326 25.525520\nv 4.223387 -583.421265 24.834095\nv 18.747662 -579.519165 19.113256\nv 19.032305 -579.519287 22.022045\nv 18.675508 -579.519531 26.099064\nv 17.889935 -579.519714 28.914228\nv 16.682045 -579.519897 31.575634\nv 14.334517 -579.520264 34.928082\nv 12.246612 -579.520447 36.973282\nv 9.869837 -579.520691 38.674179\nv 6.160601 -579.520935 40.403694\nv 3.329843 -579.521057 41.131008\nv 0.421046 -579.521240 41.415600\nv -3.656015 -579.521423 41.058773\nv -6.471154 -579.521606 40.273205\nv -9.132573 -579.521606 39.065281\nv -12.485012 -579.521729 36.717781\nv -14.530216 -579.521729 34.629868\nv -16.231104 -579.521667 32.253143\nv -17.960636 -579.521606 28.543839\nv -18.687872 -579.521484 25.713100\nv -18.972513 -579.521301 22.804310\nv -18.615717 -579.521118 18.727262\nv -17.830143 -579.520935 15.912128\nv -16.622253 -579.520630 13.250723\nv -14.274728 -579.520386 9.898275\nv -12.186823 -579.520203 7.853074\nv -9.810048 -579.519897 6.152147\nv -6.100811 -579.519653 4.422630\nv -3.270053 -579.519470 3.695379\nv -0.361255 -579.519287 3.410758\nv 3.715805 -579.519104 3.767585\nv 6.530945 -579.519043 4.553120\nv 9.192363 -579.518921 5.761015\nv 12.544801 -579.518860 8.108576\nv 14.590006 -579.518860 10.196398\nv 16.290895 -579.518921 12.573274\nv 18.020426 -579.518982 16.282457\nv 14.589784 -575.296204 10.196642\nv 16.290672 -575.296265 12.573457\nv 18.020203 -575.296387 16.282700\nv 18.747438 -575.296509 19.113409\nv 19.032082 -575.296631 22.022228\nv 18.675285 -575.296875 26.099308\nv 17.889711 -575.297058 28.914412\nv 16.681822 -575.297363 31.575848\nv 14.334294 -575.297607 34.928326\nv 12.246390 -575.297791 36.973495\nv 9.869616 -575.298035 38.674393\nv 6.160379 -575.298279 40.403938\nv 3.329621 -575.298462 41.131161\nv 0.420823 -575.298706 41.415813\nv -3.656238 -575.298889 41.058987\nv -6.471376 -575.298950 40.273449\nv -9.132794 -575.299011 39.065525\nv -12.485234 -575.299072 36.717995\nv -14.530438 -575.299133 34.630112\nv -16.231327 -575.299011 32.253326\nv -17.960859 -575.298950 28.544113\nv -18.688095 -575.298828 25.713314\nv -18.972736 -575.298645 22.804523\nv -18.615940 -575.298462 18.727446\nv -17.830366 -575.298279 15.912342\nv -16.622477 -575.298035 13.250937\nv -14.274949 -575.297729 9.898489\nv -12.187045 -575.297607 7.853287\nv -9.810270 -575.297302 6.152360\nv -6.101033 -575.297058 4.422843\nv -3.270275 -575.296814 3.695593\nv -0.361478 -575.296692 3.410940\nv 3.715584 -575.296509 3.767798\nv 6.530722 -575.296387 4.553364\nv 9.192141 -575.296326 5.761259\nv 12.544579 -575.296204 8.108759\nv 13.923898 -579.924194 38.343964\nv 13.305174 -579.924255 38.863113\nv 13.305420 -584.605164 38.862869\nv 13.924144 -584.605103 38.343719\nv 20.027855 -579.923401 29.262642\nv 19.751606 -579.923401 30.021545\nv 19.751852 -584.604309 30.021362\nv 20.028101 -584.604309 29.262398\nv 20.773403 -579.922729 18.346035\nv 20.913622 -579.922852 19.141388\nv 20.913868 -584.603638 19.141144\nv 20.773649 -584.603638 18.345760\nv 15.960742 -579.922485 8.519188\nv 16.479876 -579.922485 9.137855\nv 16.480122 -584.603455 9.137641\nv 15.960988 -584.603394 8.518913\nv 6.879423 -579.922668 2.415190\nv 7.638365 -579.922607 2.691424\nv 7.638611 -584.603455 2.691211\nv 6.879669 -584.603516 2.414976\nv 4.097041 -579.924927 43.156601\nv 3.301657 -579.924988 43.296871\nv 3.301903 -584.605896 43.296566\nv 4.097287 -584.605835 43.156387\nv -6.819589 -579.925476 42.411076\nv -7.578533 -579.925598 42.134872\nv -7.578286 -584.606384 42.134598\nv -6.819343 -584.606384 42.410831\nv -15.900908 -579.925659 36.307137\nv -16.420042 -579.925659 35.688412\nv -16.419796 -584.606506 35.688168\nv -15.900662 -584.606567 36.306892\nv -20.713570 -579.925415 26.480259\nv -20.853788 -579.925293 25.684875\nv -20.853542 -584.606262 25.684662\nv -20.713324 -584.606262 26.480045\nv -19.968023 -579.924744 15.563653\nv -19.691772 -579.924744 14.804719\nv -19.691526 -584.605652 14.804475\nv -19.967777 -584.605652 15.563409\nv -13.864065 -579.923950 6.482332\nv -13.245340 -579.923889 5.963182\nv -13.245094 -584.604797 5.962969\nv -13.863818 -584.604858 6.482057\nv -4.037208 -579.923218 1.669694\nv -3.241824 -579.923157 1.529456\nv -3.241578 -584.604065 1.529181\nv -4.036962 -584.604126 1.669419\nv -19.456308 -370.899658 22.423683\nv -19.452187 -449.262665 22.419548\nv -19.082211 -370.899811 26.223085\nv -19.078089 -449.262787 26.218981\nv -17.974045 -370.899963 29.876541\nv -17.969923 -449.262939 29.872406\nv -16.174433 -370.900024 33.243591\nv -16.170311 -449.263031 33.239475\nv -13.752501 -370.900085 36.194874\nv -13.748378 -449.263062 36.190723\nv -10.801375 -370.900055 38.616951\nv -10.797253 -449.263031 38.612816\nv -7.434413 -370.899963 40.416752\nv -7.430290 -449.262970 40.412617\nv -3.781011 -370.899811 41.525093\nv -3.776889 -449.262817 41.520958\nv 0.018408 -370.899628 41.899399\nv 0.022531 -449.262634 41.895264\nv 3.817848 -370.899384 41.525291\nv 3.821970 -449.262390 41.521156\nv 7.471307 -370.899170 40.417145\nv 7.475429 -449.262177 40.413010\nv 10.838365 -370.898895 38.617519\nv 10.842487 -449.261871 38.613384\nv 13.789618 -370.898621 36.195599\nv 13.793740 -449.261597 36.191448\nv 16.211706 -370.898315 33.244446\nv 16.215828 -449.261322 33.240326\nv 18.011494 -370.898071 29.877487\nv 18.015615 -449.261047 29.873352\nv 19.119850 -370.897797 26.224091\nv 19.123972 -449.260773 26.219986\nv 19.494150 -370.897583 22.424707\nv 19.498272 -449.260590 22.420572\nv 19.120050 -370.897400 18.625259\nv 19.124172 -449.260406 18.621124\nv 18.011887 -370.897278 14.971787\nv 18.016008 -449.260284 14.967652\nv 16.212275 -370.897186 11.604735\nv 16.216396 -449.260193 11.600646\nv 13.790341 -370.897156 8.653484\nv 13.794463 -449.260162 8.649349\nv 10.839216 -370.897186 6.231379\nv 10.843338 -449.260162 6.227259\nv 7.472254 -370.897278 4.431562\nv 7.476376 -449.260254 4.427443\nv 3.818852 -370.897369 3.323235\nv 3.822975 -449.260376 3.319086\nv 0.019432 -370.897552 2.948930\nv 0.023555 -449.260559 2.944779\nv -3.780008 -370.897797 3.323035\nv -3.775884 -449.260803 3.318886\nv -7.433466 -370.898071 4.431170\nv -7.429343 -449.261047 4.427051\nv -10.800524 -370.898346 6.230810\nv -10.796402 -449.261322 6.226690\nv -13.751777 -370.898621 8.652761\nv -13.747655 -449.261627 8.648625\nv -16.173864 -370.898895 11.603884\nv -16.169743 -449.261902 11.599794\nv -17.973652 -370.899170 14.970840\nv -17.969530 -449.262177 14.966705\nv -19.082010 -370.899414 18.624254\nv -19.077888 -449.262421 18.620119\nv -20.235029 -449.698212 18.389864\nv -20.632004 -449.698425 22.419487\nv -20.235241 -449.698639 26.449099\nv -19.059952 -449.698761 30.323885\nv -17.151297 -449.698853 33.894920\nv -14.582667 -449.698883 37.024975\nv -11.452735 -449.698853 39.593784\nv -7.881775 -449.698792 41.502602\nv -4.007078 -449.698639 42.678085\nv 0.022523 -449.698425 43.075089\nv 4.052144 -449.698212 42.678299\nv 7.926904 -449.697937 41.503017\nv 11.497964 -449.697632 39.594387\nv 14.628032 -449.697357 37.025745\nv 17.196825 -449.697021 33.895824\nv 19.105667 -449.696747 30.324888\nv 20.281158 -449.696503 26.450165\nv 20.678135 -449.696228 22.420572\nv 20.281370 -449.696075 18.390930\nv 19.106083 -449.695953 14.516159\nv 17.197428 -449.695862 10.945139\nv 14.628799 -449.695831 7.815052\nv 11.498867 -449.695831 5.246213\nv 7.927907 -449.695923 3.337428\nv 4.053209 -449.696075 2.161911\nv 0.023609 -449.696228 1.764924\nv -4.006012 -449.696503 2.161699\nv -7.880772 -449.696777 3.337012\nv -11.451832 -449.697052 5.245610\nv -14.581900 -449.697357 7.814284\nv -17.150694 -449.697693 10.944236\nv -19.059536 -449.697968 14.515155\nv 14.628860 -450.868195 7.814975\nv 11.498928 -450.868225 5.246167\nv 7.927969 -450.868286 3.337352\nv 4.053270 -450.868439 2.161849\nv 0.023671 -450.868652 1.764863\nv -4.005950 -450.868866 2.161638\nv -7.880711 -450.869141 3.336936\nv -11.451770 -450.869446 5.245564\nv -14.581839 -450.869720 7.814207\nv -17.150631 -450.870026 10.944175\nv -19.059473 -450.870300 14.515078\nv -20.234966 -450.870575 18.389818\nv -20.631941 -450.870850 22.419426\nv -20.235178 -450.871002 26.449068\nv -19.059889 -450.871124 30.323809\nv -17.151234 -450.871277 33.894859\nv -14.582606 -450.871246 37.024929\nv -11.452673 -450.871246 39.593723\nv -7.881713 -450.871155 41.502525\nv -4.007016 -450.871002 42.678024\nv 0.022584 -450.870819 43.075012\nv 4.052206 -450.870575 42.678238\nv 7.926966 -450.870300 41.502941\nv 11.498025 -450.870026 39.594326\nv 14.628093 -450.869720 37.025700\nv 17.196888 -450.869446 33.895763\nv 19.105730 -450.869110 30.324812\nv 20.281221 -450.868866 26.450134\nv 20.678198 -450.868652 22.420511\nv 20.281433 -450.868439 18.390884\nv 19.106146 -450.868286 14.516082\nv 17.197491 -450.868195 10.945078\nv 19.215281 -451.698517 18.602892\nv 18.101826 -451.698364 14.932010\nv 16.293636 -451.698303 11.548966\nv 13.860195 -451.698273 8.583632\nv 10.894999 -451.698334 6.149991\nv 7.512007 -451.698395 4.341612\nv 3.841206 -451.698517 3.227976\nv 0.023686 -451.698669 2.851899\nv -3.793854 -451.698944 3.227775\nv -7.464713 -451.699188 4.341218\nv -10.847801 -451.699493 6.149419\nv -13.813126 -451.699738 8.582904\nv -16.246723 -451.700012 11.548111\nv -18.055092 -451.700256 14.931059\nv -19.168741 -451.700531 18.601883\nv -19.544817 -451.700745 22.419437\nv -19.168940 -451.700928 26.236969\nv -18.055483 -451.701080 29.907789\nv -16.247293 -451.701172 33.290878\nv -13.813853 -451.701233 36.256229\nv -10.848657 -451.701141 38.689823\nv -7.465664 -451.701080 40.498219\nv -3.794863 -451.700958 41.611839\nv 0.022657 -451.700745 41.987915\nv 3.840197 -451.700531 41.612038\nv 7.511056 -451.700287 40.498611\nv 10.894143 -451.699982 38.690395\nv 13.859468 -451.699768 36.256958\nv 16.293066 -451.699463 33.291733\nv 18.101435 -451.699188 29.908741\nv 19.215082 -451.698914 26.237978\nv 19.591162 -451.698669 22.420467\nv 16.878040 -451.699188 29.401949\nv 17.916309 -451.698975 25.979582\nv 18.266953 -451.698761 22.420433\nv 17.916494 -451.698639 18.861219\nv 16.878405 -451.698486 15.438753\nv 15.192587 -451.698425 12.284640\nv 12.923820 -451.698395 9.519917\nv 10.159260 -451.698425 7.251060\nv 7.005215 -451.698456 5.564988\nv 3.582832 -451.698608 4.526797\nv 0.023651 -451.698761 4.176103\nv -3.535548 -451.698975 4.526610\nv -6.957985 -451.699188 5.564621\nv -10.112120 -451.699463 7.250527\nv -12.876800 -451.699738 9.519238\nv -15.145712 -451.700012 12.283842\nv -16.831697 -451.700256 15.437866\nv -17.869967 -451.700531 18.860279\nv -18.220608 -451.700653 22.419474\nv -17.870152 -451.700867 25.978642\nv -16.832062 -451.700958 29.401062\nv -15.146245 -451.701050 32.555191\nv -12.877478 -451.701080 35.319866\nv -10.112918 -451.701080 37.588783\nv -6.958872 -451.700989 39.274796\nv -3.536489 -451.700867 40.313034\nv 0.022691 -451.700684 40.663681\nv 3.581891 -451.700500 40.313221\nv 7.004328 -451.700256 39.275162\nv 10.158462 -451.700043 37.589317\nv 12.923141 -451.699738 35.320545\nv 15.192054 -451.699463 32.555988\nv 10.165037 -576.688354 37.582756\nv 12.929716 -576.688110 35.313938\nv 15.198628 -576.687866 32.549412\nv 16.884615 -576.687561 29.395342\nv 17.922884 -576.687317 25.972975\nv 18.273527 -576.687134 22.413780\nv 17.923071 -576.686951 18.854628\nv 16.884981 -576.686829 15.432146\nv 15.199162 -576.686829 12.278018\nv 12.930395 -576.686768 9.513371\nv 10.165834 -576.686768 7.244470\nv 7.011789 -576.686890 5.558474\nv 3.589406 -576.686951 4.520175\nv 0.030226 -576.687134 4.169526\nv -3.528974 -576.687317 4.519988\nv -6.951410 -576.687622 5.558106\nv -10.105545 -576.687866 7.243937\nv -12.870224 -576.688110 9.512692\nv -15.139137 -576.688416 12.277220\nv -16.825121 -576.688660 15.431259\nv -17.863390 -576.688782 18.853687\nv -18.214033 -576.689087 22.412821\nv -17.863577 -576.689148 25.972034\nv -16.825487 -576.689392 29.394455\nv -15.139670 -576.689453 32.548615\nv -12.870903 -576.689453 35.313259\nv -10.106342 -576.689453 37.582222\nv -6.952297 -576.689392 39.268188\nv -3.529914 -576.689270 40.306458\nv 0.029267 -576.689087 40.657074\nv 3.588466 -576.688904 40.306644\nv 7.010902 -576.688660 39.268555\nv 0.020127 -367.005157 -31.231964\nv 0.911055 -367.005127 -31.153997\nv 1.774909 -367.005096 -30.922470\nv 2.585429 -367.005066 -30.544487\nv 3.318006 -367.005035 -30.031498\nv 3.950369 -367.005035 -29.399143\nv 4.463310 -367.005066 -28.666538\nv 4.841269 -367.005096 -27.855982\nv 5.072696 -367.005096 -26.992115\nv 5.150633 -367.005157 -26.101183\nv 5.072649 -367.005219 -25.210239\nv 4.841177 -367.005280 -24.346399\nv 4.463175 -367.005310 -23.535877\nv 3.950196 -367.005402 -22.803288\nv 3.317799 -367.005432 -22.170948\nv 2.585196 -367.005554 -21.658012\nv 1.774656 -367.005585 -21.280060\nv 0.910790 -367.005615 -21.048620\nv 0.019858 -367.005707 -20.970688\nv -0.871070 -367.005737 -21.048668\nv -1.734924 -367.005768 -21.280151\nv -2.545444 -367.005798 -21.658148\nv -3.278021 -367.005798 -22.171122\nv -3.910384 -367.005829 -22.803493\nv -4.423325 -367.005798 -23.536112\nv -4.801284 -367.005768 -24.346653\nv -5.032711 -367.005768 -25.210505\nv -5.110647 -367.005707 -26.101452\nv -5.032664 -367.005646 -26.992380\nv -4.801192 -367.005585 -27.856236\nv -4.423190 -367.005554 -28.666773\nv -3.910211 -367.005463 -29.399349\nv -3.277814 -367.005402 -30.031672\nv -2.545211 -367.005310 -30.544622\nv -1.734671 -367.005280 -30.922562\nv -0.870805 -367.005249 -31.154045\nv -0.872289 -339.189697 -31.152565\nv 0.018663 -339.189636 -31.230484\nv 0.909591 -339.189575 -31.152517\nv 1.773425 -339.189545 -30.921005\nv 2.583956 -339.189545 -30.543037\nv 3.316543 -339.189514 -30.030064\nv 3.948896 -339.189484 -29.397633\nv 4.461846 -339.189514 -28.665043\nv 4.839785 -339.189545 -27.854502\nv 5.071232 -339.189575 -26.990650\nv 5.149138 -339.189606 -26.099733\nv 5.071185 -339.189667 -25.208775\nv 4.839693 -339.189758 -24.344919\nv 4.461711 -339.189789 -23.534443\nv 3.948723 -339.189850 -22.801838\nv 3.316336 -339.189941 -22.169468\nv 2.583723 -339.190002 -21.656532\nv 1.773172 -339.190033 -21.278595\nv 0.909326 -339.190125 -21.047155\nv 0.018394 -339.190186 -20.969223\nv -0.872554 -339.190247 -21.047203\nv -1.736388 -339.190216 -21.278687\nv -2.546907 -339.190247 -21.656668\nv -3.279494 -339.190308 -22.169641\nv -3.911847 -339.190277 -22.802044\nv -4.424799 -339.190277 -23.534678\nv -4.802748 -339.190247 -24.345173\nv -5.034185 -339.190216 -25.209040\nv -5.112112 -339.190155 -26.100004\nv -5.034138 -339.190125 -26.990915\nv -4.802656 -339.190033 -27.854755\nv -4.424664 -339.190002 -28.665277\nv -3.911674 -339.189911 -29.397839\nv -3.279287 -339.189880 -30.030237\nv -2.546674 -339.189789 -30.543173\nv -1.736135 -339.189728 -30.921097\nv -9.062696 -339.189819 -36.923012\nv -7.045310 -339.189606 -38.335514\nv -4.813293 -339.189453 -39.376286\nv -2.434466 -339.189270 -40.013615\nv 0.018900 -339.189148 -40.228195\nv 2.472244 -339.189026 -40.013485\nv 4.851038 -339.188965 -39.376034\nv 7.082991 -339.188873 -38.335140\nv 9.100323 -339.188843 -36.922535\nv 10.841668 -339.188843 -35.181095\nv 12.254175 -339.188873 -33.163696\nv 13.294916 -339.188934 -30.931673\nv 13.932233 -339.189026 -28.552841\nv 14.146819 -339.189148 -26.099497\nv 13.932104 -339.189301 -23.646133\nv 13.294662 -339.189453 -21.267336\nv 12.253803 -339.189636 -19.035398\nv 10.841190 -339.189789 -17.018057\nv 9.099753 -339.189972 -15.276723\nv 7.082347 -339.190186 -13.864179\nv 4.850339 -339.190369 -12.823465\nv 2.471514 -339.190521 -12.186138\nv 0.018157 -339.190643 -11.971542\nv -2.435198 -339.190765 -12.186267\nv -4.813991 -339.190857 -12.823720\nv -7.045953 -339.190887 -13.864565\nv -9.063266 -339.190948 -15.277201\nv -10.804621 -339.190948 -17.018625\nv -12.217137 -339.190918 -19.036041\nv -13.257878 -339.190857 -21.268034\nv -13.895205 -339.190765 -23.646866\nv -14.109771 -339.190613 -26.100241\nv -13.895077 -339.190491 -28.553574\nv -13.257625 -339.190338 -30.932371\nv -12.216765 -339.190155 -33.164337\nv -10.804143 -339.190002 -35.181664\nv -13.257763 -336.555054 -30.932234\nv -12.216904 -336.554901 -33.164185\nv -10.804281 -336.554718 -35.181526\nv -9.062835 -336.554535 -36.922874\nv -7.045447 -336.554352 -38.335392\nv -4.813430 -336.554169 -39.376102\nv -2.434604 -336.554016 -40.013447\nv 0.018762 -336.553894 -40.228058\nv 2.472106 -336.553772 -40.013317\nv 4.850900 -336.553680 -39.375851\nv 7.082852 -336.553619 -38.335018\nv 9.100184 -336.553558 -36.922398\nv 10.841530 -336.553558 -35.180958\nv 12.254037 -336.553619 -33.163544\nv 13.294778 -336.553650 -30.931536\nv 13.932095 -336.553772 -28.552704\nv 14.146681 -336.553894 -26.099360\nv 13.931966 -336.554016 -23.645981\nv 13.294524 -336.554169 -21.267214\nv 12.253665 -336.554352 -19.035246\nv 10.841052 -336.554535 -17.017920\nv 9.099615 -336.554718 -15.276586\nv 7.082209 -336.554871 -13.864057\nv 4.850201 -336.555084 -12.823328\nv 2.471375 -336.555237 -12.185970\nv 0.018019 -336.555359 -11.971420\nv -2.435336 -336.555481 -12.186099\nv -4.814129 -336.555573 -12.823583\nv -7.046091 -336.555634 -13.864443\nv -9.063404 -336.555695 -15.277063\nv -10.804759 -336.555695 -17.018488\nv -12.217276 -336.555634 -19.035889\nv -13.258017 -336.555573 -21.267912\nv -13.895344 -336.555481 -23.646713\nv -14.109909 -336.555359 -26.100103\nv -13.895215 -336.555237 -28.553436\nv -14.559847 -336.555511 -23.529573\nv -14.784671 -336.555420 -26.100121\nv -14.248535 -336.555267 -28.587242\nv -13.580638 -336.555084 -31.079641\nv -12.801245 -336.554901 -33.501587\nv -11.321159 -336.554718 -35.615242\nv -9.496541 -336.554535 -37.439793\nv -7.382802 -336.554352 -38.919735\nv -4.960822 -336.554169 -39.699028\nv -2.468394 -336.554016 -40.366779\nv 0.018780 -336.553833 -40.902771\nv 2.589294 -336.553711 -40.677834\nv 5.081697 -336.553619 -40.009922\nv 7.420248 -336.553558 -38.919346\nv 9.306112 -336.553528 -37.211472\nv 11.130635 -336.553558 -35.386883\nv 12.838386 -336.553558 -33.500912\nv 13.928843 -336.553619 -31.162308\nv 14.596609 -336.553741 -28.669874\nv 14.821430 -336.553833 -26.099342\nv 14.285304 -336.553986 -23.612188\nv 13.617409 -336.554169 -21.119804\nv 12.837996 -336.554352 -18.697844\nv 11.357940 -336.554504 -16.584188\nv 9.533322 -336.554749 -14.759652\nv 7.419573 -336.554901 -13.279712\nv 4.997593 -336.555084 -12.500433\nv 2.505165 -336.555237 -11.832667\nv 0.018001 -336.555420 -11.296677\nv -2.552513 -336.555542 -11.521627\nv -5.044926 -336.555634 -12.189509\nv -7.383477 -336.555695 -13.280102\nv -9.269342 -336.555725 -14.987961\nv -11.093864 -336.555695 -16.812578\nv -12.801614 -336.555695 -18.698519\nv -13.892083 -336.555603 -21.037125\nv -4.644246 -332.208374 -13.290710\nv -6.797629 -332.208466 -14.294887\nv -8.743942 -332.208466 -15.657823\nv -10.423979 -332.208496 -17.337952\nv -11.786777 -332.208435 -19.284307\nv -12.790891 -332.208374 -21.437759\nv -13.405761 -332.208282 -23.732851\nv -13.612799 -332.208160 -26.099846\nv -13.405637 -332.208038 -28.466829\nv -12.790646 -332.207886 -30.761887\nv -11.786419 -332.207703 -32.915287\nv -10.423518 -332.207520 -34.861572\nv -8.743363 -332.207367 -36.541641\nv -6.797008 -332.207214 -37.904446\nv -4.643572 -332.207031 -38.908524\nv -2.348475 -332.206879 -39.523438\nv 0.018520 -332.206757 -39.730423\nv 2.385494 -332.206635 -39.523315\nv 4.680558 -332.206543 -38.908279\nv 6.833952 -332.206482 -37.904087\nv 8.780236 -332.206451 -36.541180\nv 10.460292 -332.206421 -34.861023\nv 11.823082 -332.206482 -32.914665\nv 12.827193 -332.206543 -30.761213\nv 13.442075 -332.206635 -28.466124\nv 13.649113 -332.206757 -26.099129\nv 13.441951 -332.206879 -23.732145\nv 12.826948 -332.207031 -21.437086\nv 11.822723 -332.207214 -19.283686\nv 10.459831 -332.207397 -17.337402\nv 8.779687 -332.207550 -15.657362\nv 6.833331 -332.207733 -14.294529\nv 4.679884 -332.207886 -13.290465\nv 2.384788 -332.208069 -12.675566\nv 0.017803 -332.208191 -12.468521\nv -2.349182 -332.208313 -12.675691\nv 4.526210 -330.973236 -13.712451\nv 4.679841 -331.362335 -13.290420\nv 6.608696 -330.973114 -14.683481\nv 6.833287 -331.362152 -14.294498\nv 2.306755 -330.973389 -13.117813\nv 2.384744 -331.362488 -12.675505\nv 0.017750 -330.973511 -12.917618\nv 0.017759 -331.362610 -12.468491\nv -2.271255 -330.973633 -13.117934\nv -2.349226 -331.362732 -12.675630\nv -4.490689 -330.973724 -13.712688\nv -4.644289 -331.362823 -13.290665\nv -6.573134 -330.973785 -14.683827\nv -6.797673 -331.362885 -14.294856\nv -8.455289 -330.973785 -16.001764\nv -8.743987 -331.362885 -15.657731\nv -10.079987 -330.973785 -17.626562\nv -10.424023 -331.362915 -17.337906\nv -11.397877 -330.973755 -19.508799\nv -11.786822 -331.362854 -19.284277\nv -12.368902 -330.973724 -21.591314\nv -12.790936 -331.362793 -21.437729\nv -12.963523 -330.973633 -23.810766\nv -13.405806 -331.362701 -23.732821\nv -13.163723 -330.973541 -26.099758\nv -13.612844 -331.362579 -26.099800\nv -12.963403 -330.973389 -28.388754\nv -13.405682 -331.362488 -28.466768\nv -12.368665 -330.973236 -30.608206\nv -12.790690 -331.362335 -30.761826\nv -11.397530 -330.973083 -32.690655\nv -11.786464 -331.362122 -32.915257\nv -10.079541 -330.972870 -34.572807\nv -10.423562 -331.361969 -34.861557\nv -8.454758 -330.972748 -36.197502\nv -8.743409 -331.361786 -36.541611\nv -6.572534 -330.972565 -37.515400\nv -6.797052 -331.361633 -37.904415\nv -4.490037 -330.972412 -38.486416\nv -4.643616 -331.361450 -38.908478\nv -2.270572 -330.972260 -39.081055\nv -2.348521 -331.361328 -39.523392\nv 0.018443 -330.972137 -39.281265\nv 0.018476 -331.361145 -39.730408\nv 2.307438 -330.972015 -39.080933\nv 2.385451 -331.361084 -39.523270\nv 4.526862 -330.971924 -38.486179\nv 4.680514 -331.360962 -38.908234\nv 6.609297 -330.971893 -37.515053\nv 6.833908 -331.360901 -37.904057\nv 8.491482 -330.971832 -36.197056\nv 8.780191 -331.360870 -36.541149\nv 10.116170 -330.971832 -34.572273\nv 10.460247 -331.360870 -34.861008\nv 11.434050 -330.971863 -32.690052\nv 11.823037 -331.360901 -32.914635\nv 12.405075 -330.971954 -30.607553\nv 12.827148 -331.360992 -30.761152\nv 12.999706 -330.972046 -28.388086\nv 13.442030 -331.361084 -28.466063\nv 13.199907 -330.972137 -26.099064\nv 13.649068 -331.361176 -26.099083\nv 12.999586 -330.972290 -23.810083\nv 13.441906 -331.361298 -23.732115\nv 12.404838 -330.972443 -21.590662\nv 12.826903 -331.361450 -21.437056\nv 11.433702 -330.972534 -19.508198\nv 11.822679 -331.361633 -19.283655\nv 10.115725 -330.972748 -17.626032\nv 10.459786 -331.361816 -17.337357\nv 8.490951 -330.972870 -16.001318\nv 8.779642 -331.361969 -15.657270\nv -12.463528 -332.208557 -18.893608\nv -12.801823 -332.597595 -18.698320\nv -11.094073 -332.597626 -16.812365\nv -11.022622 -332.208557 -16.835663\nv -13.525208 -332.208405 -21.170523\nv -13.892292 -332.597534 -21.036957\nv -14.175334 -332.208313 -23.597174\nv -14.560056 -332.597443 -23.529345\nv -14.394228 -332.208221 -26.099865\nv -14.784879 -332.597321 -26.099892\nv -14.175202 -332.208069 -28.602530\nv -14.248745 -332.597137 -28.587059\nv -13.524939 -332.207916 -31.029165\nv -13.580847 -332.596954 -31.079443\nv -12.463148 -332.207764 -33.306023\nv -12.801454 -332.596802 -33.501373\nv -11.022135 -332.207550 -35.363907\nv -11.321368 -332.596680 -35.615044\nv -9.245657 -332.207397 -37.140274\nv -9.496750 -332.596436 -37.439579\nv -7.187720 -332.207153 -38.581184\nv -7.383010 -332.596222 -38.919537\nv -4.910812 -332.206970 -39.642860\nv -4.961030 -332.596100 -39.698830\nv -2.484165 -332.206848 -40.293034\nv -2.468602 -332.595886 -40.366550\nv 0.018541 -332.206726 -40.511917\nv 0.018572 -332.595764 -40.902588\nv 2.521215 -332.206604 -40.292904\nv 2.589086 -332.595642 -40.677605\nv 4.947838 -332.206482 -39.642601\nv 5.081489 -332.595551 -40.009724\nv 7.224680 -332.206421 -38.580803\nv 7.420039 -332.595428 -38.919147\nv 9.282552 -332.206421 -37.139786\nv 9.305903 -332.595459 -37.211273\nv 11.058935 -332.206390 -35.363327\nv 11.130426 -332.595459 -35.386684\nv 12.499831 -332.206421 -33.305367\nv 12.838177 -332.595459 -33.500698\nv 13.561502 -332.206512 -31.028452\nv 13.928635 -332.595551 -31.162094\nv 14.211648 -332.206604 -28.601784\nv 14.596400 -332.595673 -28.669630\nv 14.430532 -332.206696 -26.099108\nv 14.821221 -332.595734 -26.099113\nv 14.211516 -332.206848 -23.596428\nv 14.285095 -332.595917 -23.612005\nv 13.561262 -332.207001 -21.169809\nv 13.617200 -332.596100 -21.119576\nv 12.499452 -332.207214 -18.892952\nv 12.837788 -332.596252 -18.697645\nv 11.058448 -332.207397 -16.835083\nv 11.357731 -332.596436 -16.583975\nv 9.281971 -332.207581 -15.058716\nv 9.533114 -332.596619 -14.759454\nv 7.224023 -332.207764 -13.617822\nv 7.419364 -332.596832 -13.279498\nv 4.947125 -332.207947 -12.556129\nv 4.997385 -332.596985 -12.500219\nv 2.520468 -332.208130 -11.905970\nv 2.504957 -332.597168 -11.832469\nv 0.017782 -332.208252 -11.687088\nv 0.017793 -332.597351 -11.296448\nv -2.484912 -332.208374 -11.906102\nv -2.552721 -332.597412 -11.521414\nv -4.911525 -332.208435 -12.556388\nv -5.045135 -332.597565 -12.189342\nv -7.188377 -332.208496 -13.618200\nv -7.383685 -332.597626 -13.279888\nv -9.246238 -332.208557 -15.059203\nv -9.269551 -332.597595 -14.987762\nv -19.987944 -366.249084 -26.217216\nv -19.987656 -371.737488 -26.217522\nv -19.664034 -366.249268 -22.513777\nv -19.663746 -371.737671 -22.514097\nv -17.365368 -366.249481 -16.197767\nv -17.365080 -371.737915 -16.198042\nv -15.233129 -366.249512 -13.152424\nv -15.232841 -371.737915 -13.152699\nv -10.084412 -366.249481 -8.831930\nv -10.084124 -371.737885 -8.832174\nv -6.715173 -366.249390 -7.260720\nv -6.714884 -371.737793 -7.261011\nv -0.095994 -366.249084 -6.093371\nv -0.095705 -371.737518 -6.093677\nv 3.607455 -366.248901 -6.417294\nv 3.607744 -371.737305 -6.417584\nv 9.923475 -366.248444 -8.715956\nv 9.923763 -371.736847 -8.716261\nv 12.968801 -366.248199 -10.848200\nv 12.969089 -371.736572 -10.848475\nv 17.289318 -366.247681 -15.996920\nv 17.289606 -371.736084 -15.997211\nv 18.860525 -366.247437 -19.366173\nv 18.860813 -371.735809 -19.366447\nv 20.027849 -366.247009 -25.985313\nv 20.028137 -371.735413 -25.985634\nv 19.703938 -366.246826 -29.688782\nv 19.704226 -371.735229 -29.689087\nv 17.405272 -366.246643 -36.004852\nv 17.405561 -371.734985 -36.005112\nv 15.273034 -366.246582 -39.050152\nv 15.273322 -371.734985 -39.050457\nv 10.124317 -366.246613 -43.370705\nv 10.124605 -371.735016 -43.370949\nv 6.755078 -366.246704 -44.941868\nv 6.755367 -371.735107 -44.942158\nv 0.135899 -366.246979 -46.109188\nv 0.136187 -371.735413 -46.109493\nv -3.567550 -366.247192 -45.785282\nv -3.567262 -371.735596 -45.785572\nv -9.883571 -366.247650 -43.486633\nv -9.883283 -371.736053 -43.486923\nv -12.928895 -366.247925 -41.354389\nv -12.928607 -371.736328 -41.354679\nv -17.249413 -366.248444 -36.205685\nv -17.249125 -371.736847 -36.205929\nv -18.820620 -366.248657 -32.836433\nv -18.820332 -371.737091 -32.836708\nv -18.713465 -366.249207 -22.798603\nv -19.002357 -366.249054 -26.101788\nv -18.713291 -366.248840 -29.404957\nv -17.855005 -366.248627 -32.607800\nv -16.453608 -366.248413 -35.612858\nv -14.551665 -366.248199 -38.328995\nv -12.206974 -366.247894 -40.673538\nv -9.490765 -366.247681 -42.575352\nv -6.485597 -366.247437 -43.976582\nv -3.282745 -366.247253 -44.834698\nv 0.020453 -366.247040 -45.123611\nv 3.323635 -366.246887 -44.834522\nv 6.526443 -366.246765 -43.976238\nv 9.531535 -366.246704 -42.574852\nv 12.247646 -366.246613 -40.672897\nv 14.592214 -366.246674 -38.328228\nv 16.494013 -366.246704 -35.611992\nv 17.895254 -366.246735 -32.606861\nv 18.753368 -366.246887 -29.403971\nv 19.042263 -366.247040 -26.100786\nv 18.753195 -366.247253 -22.797617\nv 17.894911 -366.247437 -19.594790\nv 16.493513 -366.247711 -16.589701\nv 14.591571 -366.247955 -13.873594\nv 12.246880 -366.248138 -11.529005\nv 9.530669 -366.248413 -9.627236\nv 6.525503 -366.248627 -8.225994\nv 3.322650 -366.248840 -7.367879\nv 0.019452 -366.249023 -7.078964\nv -3.283730 -366.249207 -7.368052\nv -6.486537 -366.249298 -8.226336\nv -9.491631 -366.249390 -9.627737\nv -12.207741 -366.249420 -11.529649\nv -14.552308 -366.249481 -13.874360\nv -16.454107 -366.249420 -16.590567\nv -17.855349 -366.249329 -19.595730\nv -13.059019 -361.839935 -15.127251\nv -14.765914 -361.839874 -17.565071\nv -16.023535 -361.839783 -20.262232\nv -16.793688 -361.839691 -23.136856\nv -17.052990 -361.839539 -26.101507\nv -16.793531 -361.839355 -29.066147\nv -16.023228 -361.839203 -31.940699\nv -14.765465 -361.838959 -34.637794\nv -13.058441 -361.838776 -37.075554\nv -10.954065 -361.838562 -39.179810\nv -8.516241 -361.838318 -40.886684\nv -5.819067 -361.838104 -42.144333\nv -2.944487 -361.837921 -42.914490\nv 0.020170 -361.837738 -43.173767\nv 2.984813 -361.837616 -42.914333\nv 5.859353 -361.837494 -42.144028\nv 8.556459 -361.837402 -40.886234\nv 10.994194 -361.837402 -39.179230\nv 13.098459 -361.837372 -37.074867\nv 14.805354 -361.837433 -34.637016\nv 16.062973 -361.837494 -31.939856\nv 16.833128 -361.837585 -29.065262\nv 17.092430 -361.837769 -26.100609\nv 16.832972 -361.837921 -23.135971\nv 16.062666 -361.838074 -20.261389\nv 14.804905 -361.838348 -17.564293\nv 13.097881 -361.838531 -15.126563\nv 10.993505 -361.838776 -13.022279\nv 8.555681 -361.838959 -11.315434\nv 5.858509 -361.839203 -10.057814\nv 2.983928 -361.839386 -9.287657\nv 0.019271 -361.839539 -9.028350\nv -2.945372 -361.839691 -9.287812\nv -5.819911 -361.839813 -10.058122\nv -8.517019 -361.839874 -11.315883\nv -10.954754 -361.839935 -13.022856\nv -5.465205 -361.839691 -11.032554\nv -7.998495 -361.839783 -12.213910\nv -10.288163 -361.839844 -13.817272\nv -12.264621 -361.839874 -15.793810\nv -13.867821 -361.839813 -18.083570\nv -15.049054 -361.839722 -20.616913\nv -15.772443 -361.839630 -23.316898\nv -16.015980 -361.839508 -26.101480\nv -15.772296 -361.839325 -28.886036\nv -15.048766 -361.839172 -31.585968\nv -13.867399 -361.838928 -34.119278\nv -12.264079 -361.838776 -36.408939\nv -10.287517 -361.838562 -38.385403\nv -7.997764 -361.838348 -39.988613\nv -5.464412 -361.838104 -41.169853\nv -2.764444 -361.837982 -41.893215\nv 0.020142 -361.837830 -42.136780\nv 2.804716 -361.837677 -41.893070\nv 5.504646 -361.837555 -41.169563\nv 8.037946 -361.837494 -39.988194\nv 10.327603 -361.837463 -38.384861\nv 12.304061 -361.837494 -36.408291\nv 13.907260 -361.837463 -34.118546\nv 15.088494 -361.837585 -31.585175\nv 15.811883 -361.837677 -28.885204\nv 16.055420 -361.837799 -26.100637\nv 15.811736 -361.837982 -23.316067\nv 15.088206 -361.838135 -20.616119\nv 13.906838 -361.838348 -18.082840\nv 12.303519 -361.838593 -15.793164\nv 10.326957 -361.838745 -13.816730\nv 8.037215 -361.838928 -12.213488\nv 5.503853 -361.839142 -11.032265\nv 2.803885 -361.839325 -10.308887\nv 0.019299 -361.839478 -10.065352\nv -2.765275 -361.839630 -10.309032\nv 2.804033 -364.650970 -10.309039\nv 0.019447 -364.651123 -10.065520\nv -2.765127 -364.651276 -10.309185\nv -5.465056 -364.651367 -11.032691\nv -7.998347 -364.651428 -12.214078\nv -10.288014 -364.651489 -13.817394\nv -12.264472 -364.651459 -15.793962\nv -13.867672 -364.651428 -18.083708\nv -15.048905 -364.651367 -20.617096\nv -15.772294 -364.651276 -23.317020\nv -16.015831 -364.651123 -26.101603\nv -15.772148 -364.650970 -28.886189\nv -15.048618 -364.650757 -31.586151\nv -13.867251 -364.650604 -34.119431\nv -12.263931 -364.650360 -36.409092\nv -10.287369 -364.650208 -38.385555\nv -7.997616 -364.649994 -39.988781\nv -5.464264 -364.649780 -41.170006\nv -2.764296 -364.649628 -41.893383\nv 0.020290 -364.649445 -42.136917\nv 2.804864 -364.649323 -41.893238\nv 5.504794 -364.649231 -41.169716\nv 8.038094 -364.649139 -39.988361\nv 10.327751 -364.649109 -38.385014\nv 12.304209 -364.649078 -36.408443\nv 13.907409 -364.649139 -34.118698\nv 15.088642 -364.649170 -31.585358\nv 15.812031 -364.649323 -28.885357\nv 16.055569 -364.649414 -26.100760\nv 15.811885 -364.649628 -23.316189\nv 15.088355 -364.649780 -20.616302\nv 13.906988 -364.649963 -18.082977\nv 12.303668 -364.650177 -15.793317\nv 10.327106 -364.650391 -13.816852\nv 8.037364 -364.650574 -12.213655\nv 5.504002 -364.650818 -11.032402\nv 6.500735 -364.650360 -18.377209\nv 5.061009 -364.650482 -17.369160\nv 3.468109 -364.650635 -16.626434\nv 1.770447 -364.650726 -16.171600\nv 0.019603 -364.650818 -16.018448\nv -1.731233 -364.650909 -16.171692\nv -3.428871 -364.651001 -16.626616\nv -5.021731 -364.651031 -17.369425\nv -6.461404 -364.651031 -18.377550\nv -7.704132 -364.651031 -19.620335\nv -8.712173 -364.651001 -21.060059\nv -9.454892 -364.650940 -22.652927\nv -9.909738 -364.650909 -24.350618\nv -10.062872 -364.650787 -26.101446\nv -9.909646 -364.650726 -27.852327\nv -9.454712 -364.650574 -29.549931\nv -8.711910 -364.650482 -31.142807\nv -7.703791 -364.650360 -32.582462\nv -6.460998 -364.650177 -33.825214\nv -5.021272 -364.650085 -34.833263\nv -3.428372 -364.649963 -35.576004\nv -1.730710 -364.649872 -36.030807\nv 0.020134 -364.649750 -36.183975\nv 1.770970 -364.649689 -36.030716\nv 3.468608 -364.649597 -35.575821\nv 5.061468 -364.649536 -34.832996\nv 6.501142 -364.649506 -33.824871\nv 7.743869 -364.649567 -32.582058\nv 8.751910 -364.649567 -31.142347\nv 9.494629 -364.649597 -29.549433\nv 9.949473 -364.649689 -27.851805\nv 10.102608 -364.649750 -26.100916\nv 9.949383 -364.649872 -24.350096\nv 9.494449 -364.649963 -22.652430\nv 8.751646 -364.650085 -21.059599\nv 7.743528 -364.650238 -19.619928\nv 9.494373 -363.228577 -22.652384\nv 8.751571 -363.228668 -21.059507\nv 7.743453 -363.228851 -19.619852\nv 6.500660 -363.228973 -18.377132\nv 5.060934 -363.229065 -17.369068\nv 3.468034 -363.229218 -16.626358\nv 1.770372 -363.229340 -16.171524\nv 0.019528 -363.229431 -16.018387\nv -1.731308 -363.229523 -16.171616\nv -3.428946 -363.229584 -16.626539\nv -5.021806 -363.229614 -17.369333\nv -6.461480 -363.229645 -18.377474\nv -7.704207 -363.229645 -19.620258\nv -8.712249 -363.229584 -21.059967\nv -9.454967 -363.229553 -22.652882\nv -9.909812 -363.229523 -24.350527\nv -10.062946 -363.229401 -26.101385\nv -9.909720 -363.229340 -27.852251\nv -9.454786 -363.229187 -29.549870\nv -8.711984 -363.229095 -31.142731\nv -7.703866 -363.228943 -32.582386\nv -6.461073 -363.228851 -33.825153\nv -5.021347 -363.228729 -34.833172\nv -3.428447 -363.228577 -35.575928\nv -1.730785 -363.228455 -36.030716\nv 0.020059 -363.228363 -36.183884\nv 1.770895 -363.228271 -36.030624\nv 3.468533 -363.228210 -35.575745\nv 5.061393 -363.228180 -34.832905\nv 6.501067 -363.228180 -33.824810\nv 7.743794 -363.228149 -32.581982\nv 8.751836 -363.228180 -31.142271\nv 9.494555 -363.228210 -29.549372\nv 9.949399 -363.228302 -27.851728\nv 10.102533 -363.228363 -26.100855\nv 9.949307 -363.228485 -24.350004\nv 6.261082 -363.228485 -27.201450\nv 6.357334 -363.228546 -26.100952\nv 6.261024 -363.228607 -25.000477\nv 5.975076 -363.228729 -23.933422\nv 5.508190 -363.228790 -22.932198\nv 4.874527 -363.228882 -22.027308\nv 4.093356 -363.228912 -21.246170\nv 3.188429 -363.229034 -20.612587\nv 2.187197 -363.229065 -20.145725\nv 1.120129 -363.229187 -19.859850\nv 0.019627 -363.229248 -19.763580\nv -1.080871 -363.229309 -19.859907\nv -2.147923 -363.229309 -20.145840\nv -3.149131 -363.229340 -20.612753\nv -4.054024 -363.229340 -21.246384\nv -4.835154 -363.229370 -22.027563\nv -5.468770 -363.229340 -22.932486\nv -5.935604 -363.229340 -23.933735\nv -6.221496 -363.229279 -25.000805\nv -6.317746 -363.229218 -26.101286\nv -6.221438 -363.229156 -27.201778\nv -5.935490 -363.229126 -28.268833\nv -5.468604 -363.229004 -29.270041\nv -4.834939 -363.228943 -30.174948\nv -4.053769 -363.228851 -30.956085\nv -3.148842 -363.228729 -31.589666\nv -2.147610 -363.228699 -32.056545\nv -1.080542 -363.228638 -32.342419\nv 0.019960 -363.228577 -32.438690\nv 1.120458 -363.228516 -32.342361\nv 2.187510 -363.228455 -32.056431\nv 3.188718 -363.228424 -31.589500\nv 4.093611 -363.228424 -30.955872\nv 4.874741 -363.228455 -30.174692\nv 5.508357 -363.228455 -29.269753\nv 5.975190 -363.228516 -28.268520\nv 4.874939 -367.004944 -30.174891\nv 5.508555 -367.004974 -29.269966\nv 5.975389 -367.005005 -28.268719\nv 6.261281 -367.005035 -27.201649\nv 6.357533 -367.005096 -26.101151\nv 6.261224 -367.005157 -25.000675\nv 5.975276 -367.005249 -23.933605\nv 5.508389 -367.005341 -22.932411\nv 4.874725 -367.005402 -22.027521\nv 4.093555 -367.005493 -21.246353\nv 3.188628 -367.005585 -20.612770\nv 2.187396 -367.005646 -20.145908\nv 1.120328 -367.005707 -19.860018\nv 0.019826 -367.005768 -19.763763\nv -1.080672 -367.005829 -19.860075\nv -2.147724 -367.005890 -20.146023\nv -3.148932 -367.005890 -20.612936\nv -4.053825 -367.005920 -21.246567\nv -4.834955 -367.005890 -22.027777\nv -5.468571 -367.005890 -22.932699\nv -5.935405 -367.005859 -23.933918\nv -6.221296 -367.005829 -25.001003\nv -6.317547 -367.005768 -26.101484\nv -6.221239 -367.005707 -27.201977\nv -5.935291 -367.005615 -28.269032\nv -5.468404 -367.005524 -29.270254\nv -4.834741 -367.005432 -30.175146\nv -4.053570 -367.005402 -30.956268\nv -3.148643 -367.005280 -31.589880\nv -2.147411 -367.005249 -32.056728\nv -1.080343 -367.005157 -32.342617\nv 0.020159 -367.005096 -32.438873\nv 1.120657 -367.005035 -32.342560\nv 2.187709 -367.005005 -32.056614\nv 3.188917 -367.004974 -31.589714\nv 4.093810 -367.004974 -30.956055\nv 1.774909 -367.005096 -30.922470\nv 2.585429 -367.005066 -30.544487\nv 3.318006 -367.005035 -30.031498\nv 3.950369 -367.005035 -29.399143\nv 4.463310 -367.005066 -28.666538\nv 4.841269 -367.005096 -27.855982\nv 5.072696 -367.005096 -26.992115\nv 5.150633 -367.005157 -26.101183\nv 5.072649 -367.005219 -25.210239\nv 4.841177 -367.005280 -24.346399\nv 4.463175 -367.005310 -23.535877\nv 3.950196 -367.005402 -22.803288\nv 3.317799 -367.005432 -22.170948\nv 2.585196 -367.005554 -21.658012\nv 1.774656 -367.005585 -21.280060\nv 0.910790 -367.005615 -21.048620\nv 0.019858 -367.005707 -20.970688\nv -0.871070 -367.005737 -21.048668\nv -1.734924 -367.005768 -21.280151\nv -2.545444 -367.005798 -21.658148\nv -3.278021 -367.005798 -22.171122\nv -3.910384 -367.005829 -22.803493\nv -4.423325 -367.005798 -23.536112\nv -4.801284 -367.005768 -24.346653\nv -5.032711 -367.005768 -25.210505\nv -5.110647 -367.005707 -26.101452\nv -5.032664 -367.005646 -26.992380\nv -4.801192 -367.005585 -27.856236\nv -4.423190 -367.005554 -28.666773\nv -3.910211 -367.005463 -29.399349\nv -3.277814 -367.005402 -30.031672\nv -2.545211 -367.005310 -30.544622\nv -1.734671 -367.005280 -30.922562\nv -0.870805 -367.005249 -31.154045\nv 0.020127 -367.005157 -31.231964\nv 0.911055 -367.005127 -31.153997\nv -4.047992 -371.393402 -5.358291\nv -3.252616 -371.393372 -5.218011\nv -3.252869 -366.593689 -5.217752\nv -4.048245 -366.593719 -5.358016\nv -13.874596 -371.393677 -10.171462\nv -13.255900 -371.393646 -9.652327\nv -13.256152 -366.593964 -9.652037\nv -13.874847 -366.593964 -10.171203\nv -19.978077 -371.393494 -19.253103\nv -19.701866 -371.393524 -18.494141\nv -19.702120 -366.593811 -18.493912\nv -19.978331 -366.593811 -19.252844\nv -20.723049 -371.393005 -30.169765\nv -20.863310 -371.393005 -29.374390\nv -20.863564 -366.593353 -29.374146\nv -20.723303 -366.593262 -30.169506\nv 6.868677 -371.392761 -6.103258\nv 7.627635 -371.392731 -6.379453\nv 7.627382 -366.593048 -6.379209\nv 6.868425 -366.593109 -6.102999\nv 15.950317 -371.391998 -12.206718\nv 16.469484 -371.391937 -12.825403\nv 16.469231 -366.592255 -12.825159\nv 15.950066 -366.592316 -12.206474\nv -15.909872 -371.392181 -39.996376\nv -16.429037 -371.392242 -39.377689\nv -16.429291 -366.592590 -39.377460\nv -15.910124 -366.592499 -39.996147\nv -6.828230 -371.391388 -46.099850\nv -7.587189 -371.391449 -45.823669\nv -7.587440 -366.591766 -45.823410\nv -6.828484 -366.591736 -46.099621\nv 4.088438 -371.390778 -46.844833\nv 3.293062 -371.390808 -46.985096\nv 3.292810 -366.591125 -46.984852\nv 4.088186 -366.591095 -46.844604\nv 13.915041 -371.390533 -42.031662\nv 13.296346 -371.390503 -42.550827\nv 13.296094 -366.590820 -42.550552\nv 13.914789 -366.590820 -42.031403\nv 20.018522 -371.390686 -32.950035\nv 19.742313 -371.390625 -33.708969\nv 19.742060 -366.591003 -33.708725\nv 20.018269 -366.591003 -32.949745\nv 20.763496 -371.391235 -22.033344\nv 20.903757 -371.391174 -22.828720\nv 20.903503 -366.591492 -22.828476\nv 20.763243 -366.591522 -22.033085\nv 20.039366 -585.005127 -26.335106\nv 20.039078 -579.516663 -26.334831\nv 19.715260 -585.005310 -22.631683\nv 19.714972 -579.516907 -22.631439\nv 17.416262 -585.005798 -16.315796\nv 17.415974 -579.517395 -16.315460\nv 15.283863 -585.006042 -13.270563\nv 15.283574 -579.517639 -13.270259\nv 10.134919 -585.006531 -8.950294\nv 10.134630 -579.518066 -8.950021\nv 6.765597 -585.006836 -7.379308\nv 6.765309 -579.518372 -7.378972\nv 0.146356 -585.007202 -6.212337\nv 0.146067 -579.518799 -6.212032\nv -3.557075 -585.007385 -6.536439\nv -3.557364 -579.518982 -6.536165\nv -9.872974 -585.007629 -8.835434\nv -9.873263 -579.519226 -8.835159\nv -12.918188 -585.007629 -10.967777\nv -12.918477 -579.519226 -10.967503\nv -17.238434 -585.007629 -16.116756\nv -17.238722 -579.519226 -16.116451\nv -18.809464 -585.007446 -19.486120\nv -18.809752 -579.519043 -19.485754\nv -19.976440 -585.007263 -26.105291\nv -19.976728 -579.518799 -26.105078\nv -19.652334 -585.007019 -29.808775\nv -19.652622 -579.518616 -29.808470\nv -17.353336 -585.006531 -36.124695\nv -17.353624 -579.518127 -36.124359\nv -15.220938 -585.006287 -39.169865\nv -15.221227 -579.517883 -39.169590\nv -10.071994 -585.005798 -43.490101\nv -10.072283 -579.517334 -43.489826\nv -6.702672 -585.005493 -45.061150\nv -6.702961 -579.517090 -45.060844\nv -0.083431 -585.005127 -46.228123\nv -0.083720 -579.516724 -46.227818\nv 3.620000 -585.004944 -45.903988\nv 3.619712 -579.516541 -45.903713\nv 9.935901 -585.004700 -43.605026\nv 9.935612 -579.516296 -43.604721\nv 12.981113 -585.004700 -41.472622\nv 12.980824 -579.516296 -41.472317\nv 17.301359 -585.004700 -36.323704\nv 17.301071 -579.516296 -36.323399\nv 18.872389 -585.004822 -32.954369\nv 18.872101 -579.516357 -32.954094\nv 18.764706 -585.005371 -22.916529\nv 19.053774 -585.005188 -26.219713\nv 18.764879 -585.005005 -29.522913\nv 17.906763 -585.004944 -32.725788\nv 16.505524 -585.004822 -35.730949\nv 14.603724 -585.004700 -38.447124\nv 12.259156 -585.004700 -40.791821\nv 9.543047 -585.004761 -42.693779\nv 6.537953 -585.004883 -44.095135\nv 3.335145 -585.004944 -44.953465\nv 0.031963 -585.005127 -45.242523\nv -3.271235 -585.005310 -44.953640\nv -6.474087 -585.005615 -44.095478\nv -9.479255 -585.005737 -42.694279\nv -12.195464 -585.006042 -40.792465\nv -14.540155 -585.006287 -38.447891\nv -16.442097 -585.006531 -35.731815\nv -17.843496 -585.006775 -32.726727\nv -18.701780 -585.006958 -29.523899\nv -18.990847 -585.007141 -26.220715\nv -18.701954 -585.007324 -22.917515\nv -17.843838 -585.007385 -19.714672\nv -16.442598 -585.007507 -16.709478\nv -14.540798 -585.007629 -13.993272\nv -12.196231 -585.007629 -11.648575\nv -9.480121 -585.007507 -9.746709\nv -6.475028 -585.007507 -8.345294\nv -3.272220 -585.007324 -7.486963\nv 0.030962 -585.007202 -7.197936\nv 3.334160 -585.006958 -7.486789\nv 6.537013 -585.006775 -8.344952\nv 9.542181 -585.006531 -9.746209\nv 12.258389 -585.006287 -11.647932\nv 14.603081 -585.006042 -13.992505\nv 16.505022 -585.005798 -16.708611\nv 17.906422 -585.005554 -19.713732\nv 13.552258 -588.512817 -14.874704\nv 15.317016 -588.512573 -17.394892\nv 16.617329 -588.512329 -20.183187\nv 17.413708 -588.512146 -23.155029\nv 17.681938 -588.512024 -26.219933\nv 17.413870 -588.511841 -29.284851\nv 16.617647 -588.511719 -32.256702\nv 15.317480 -588.511658 -35.045128\nv 13.552855 -588.511597 -37.565441\nv 11.377402 -588.511597 -39.740974\nv 8.857189 -588.511597 -41.505749\nv 6.068834 -588.511780 -42.806114\nv 3.097054 -588.511780 -43.602489\nv 0.032112 -588.511963 -43.870667\nv -3.032846 -588.512146 -43.602650\nv -6.004666 -588.512390 -42.806431\nv -8.793091 -588.512573 -41.506214\nv -11.313397 -588.512817 -39.741570\nv -13.488964 -588.513062 -37.566151\nv -15.253721 -588.513245 -35.045933\nv -16.554033 -588.513428 -32.257576\nv -17.350412 -588.513672 -29.285765\nv -17.618641 -588.513855 -26.220861\nv -17.350574 -588.513977 -23.155943\nv -16.554352 -588.514038 -20.184059\nv -15.254186 -588.514160 -17.395695\nv -13.489561 -588.514282 -14.875416\nv -11.314109 -588.514282 -12.699821\nv -8.793895 -588.514221 -10.935016\nv -6.005539 -588.514099 -9.634710\nv -3.033760 -588.513977 -8.838337\nv 0.031183 -588.513855 -8.570098\nv 3.096140 -588.513611 -8.838176\nv 6.067961 -588.513489 -9.634393\nv 8.856385 -588.513245 -10.934551\nv 11.376691 -588.513062 -12.699224\nv 4.800257 -589.996277 -27.061153\nv 4.581819 -589.996277 -27.876436\nv 4.225138 -589.996216 -28.641430\nv 3.741048 -589.996216 -29.332787\nv 3.144233 -589.996216 -29.929636\nv 2.452866 -589.996216 -30.413784\nv 1.687925 -589.996216 -30.770494\nv 0.872671 -589.996277 -30.988960\nv 0.031853 -589.996338 -31.062531\nv -0.808969 -589.996399 -30.989004\nv -1.624235 -589.996338 -30.770580\nv -2.389194 -589.996460 -30.413912\nv -3.080587 -589.996582 -29.929798\nv -3.677433 -589.996582 -29.332983\nv -4.161561 -589.996704 -28.641649\nv -4.518281 -589.996765 -27.876675\nv -4.736762 -589.996765 -27.061403\nv -4.810326 -589.996826 -26.220585\nv -4.736806 -589.996887 -25.379793\nv -4.518368 -589.996887 -24.564541\nv -4.161688 -589.996948 -23.799547\nv -3.677596 -589.997009 -23.108160\nv -3.080782 -589.997009 -22.511341\nv -2.389415 -589.996948 -22.027163\nv -1.624474 -589.996887 -21.670483\nv -0.809220 -589.996887 -21.452047\nv 0.031598 -589.996826 -21.378418\nv 0.872420 -589.996765 -21.452003\nv 1.687686 -589.996765 -21.670397\nv 2.452645 -589.996704 -22.027035\nv 3.144038 -589.996643 -22.511179\nv 3.740884 -589.996643 -23.107964\nv 4.225011 -589.996460 -23.799328\nv 4.581731 -589.996399 -24.564302\nv 4.800212 -589.996399 -25.379543\nv 4.873775 -589.996338 -26.220331\nv 4.581385 -583.418579 -24.563936\nv 4.799868 -583.418579 -25.379177\nv 4.873429 -583.418518 -26.220026\nv 4.799912 -583.418457 -27.060848\nv 4.581472 -583.418457 -27.876101\nv 4.224793 -583.418396 -28.641064\nv 3.740701 -583.418396 -29.332451\nv 3.143887 -583.418396 -29.929300\nv 2.452520 -583.418457 -30.413387\nv 1.687579 -583.418396 -30.770159\nv 0.872325 -583.418457 -30.988625\nv 0.031507 -583.418579 -31.062164\nv -0.809315 -583.418579 -30.988668\nv -1.624581 -583.418518 -30.770245\nv -2.389540 -583.418701 -30.413515\nv -3.080933 -583.418762 -29.929462\nv -3.677778 -583.418762 -29.332647\nv -4.161907 -583.418884 -28.641283\nv -4.518627 -583.418945 -27.876339\nv -4.737108 -583.418945 -27.061098\nv -4.810670 -583.419006 -26.220280\nv -4.737153 -583.419067 -25.379427\nv -4.518714 -583.419067 -24.564175\nv -4.162034 -583.419189 -23.799273\nv -3.677942 -583.419128 -23.107824\nv -3.081128 -583.419128 -22.511005\nv -2.389761 -583.419067 -22.026827\nv -1.624820 -583.419067 -21.670116\nv -0.809566 -583.419067 -21.451681\nv 0.031252 -583.419006 -21.378082\nv 0.872074 -583.418945 -21.451637\nv 1.687340 -583.418945 -21.670031\nv 2.452299 -583.418823 -22.026699\nv 3.143692 -583.418762 -22.510843\nv 3.740538 -583.418762 -23.107628\nv 4.224666 -583.418701 -23.799053\nv 18.748941 -579.516602 -29.519861\nv 19.033585 -579.516724 -26.611103\nv 18.676788 -579.516968 -22.533993\nv 17.891214 -579.517151 -19.718859\nv 16.683323 -579.517334 -17.057453\nv 14.335795 -579.517700 -13.705007\nv 12.247891 -579.517883 -11.659803\nv 9.871117 -579.518127 -9.958939\nv 6.161880 -579.518372 -8.229391\nv 3.331122 -579.518494 -7.502140\nv 0.422324 -579.518738 -7.217518\nv -3.654737 -579.518982 -7.574345\nv -6.469875 -579.519043 -8.359880\nv -9.131294 -579.519043 -9.567776\nv -12.483732 -579.519104 -11.915337\nv -14.528937 -579.519165 -14.003190\nv -16.229824 -579.519043 -16.380005\nv -17.959356 -579.519043 -20.089218\nv -18.686592 -579.518921 -22.919956\nv -18.971235 -579.518799 -25.828808\nv -18.614439 -579.518555 -29.905855\nv -17.828865 -579.518372 -32.721020\nv -16.620974 -579.518127 -35.382397\nv -14.273449 -579.517822 -38.734840\nv -12.185543 -579.517639 -40.780045\nv -9.808768 -579.517334 -42.480911\nv -6.099533 -579.517090 -44.210457\nv -3.268774 -579.516907 -44.937740\nv -0.359977 -579.516724 -45.222359\nv 3.717084 -579.516541 -44.865532\nv 6.532223 -579.516479 -44.079998\nv 9.193642 -579.516357 -42.872074\nv 12.546081 -579.516296 -40.524544\nv 14.591285 -579.516296 -38.436657\nv 16.292173 -579.516357 -36.059875\nv 18.021706 -579.516479 -32.350632\nv 14.591063 -575.293640 -38.436443\nv 16.291950 -575.293701 -36.059631\nv 18.021482 -575.293823 -32.350449\nv 18.748718 -575.293945 -29.519678\nv 19.033361 -575.294067 -26.610828\nv 18.676565 -575.294373 -22.533810\nv 17.890991 -575.294495 -19.718645\nv 16.683100 -575.294739 -17.057209\nv 14.335573 -575.295044 -13.704793\nv 12.247669 -575.295166 -11.659590\nv 9.870894 -575.295410 -9.958725\nv 6.161658 -575.295715 -8.229208\nv 3.330899 -575.295898 -7.501926\nv 0.422102 -575.296143 -7.217274\nv -3.654959 -575.296265 -7.574101\nv -6.470097 -575.296448 -8.359636\nv -9.131516 -575.296509 -9.567593\nv -12.483954 -575.296509 -11.915123\nv -14.529160 -575.296570 -14.002976\nv -16.230047 -575.296509 -16.379791\nv -17.959579 -575.296387 -20.088974\nv -18.686815 -575.296265 -22.919773\nv -18.971458 -575.296082 -25.828564\nv -18.614662 -575.295898 -29.905642\nv -17.829088 -575.295654 -32.720745\nv -16.621197 -575.295471 -35.382183\nv -14.273670 -575.295166 -38.734596\nv -12.185765 -575.294983 -40.779800\nv -9.808990 -575.294800 -42.480698\nv -6.099754 -575.294495 -44.210213\nv -3.268996 -575.294312 -44.937496\nv -0.360199 -575.294067 -45.222145\nv 3.716862 -575.293945 -44.865288\nv 6.532001 -575.293823 -44.079754\nv 9.193419 -575.293701 -42.871861\nv 12.545858 -575.293640 -40.524330\nv 13.925177 -579.921631 -10.289093\nv 13.306453 -579.921692 -9.769975\nv 13.306699 -584.602600 -9.770249\nv 13.925423 -584.602539 -10.289368\nv 20.029135 -579.920837 -19.370415\nv 19.752886 -579.920837 -18.611511\nv 19.753132 -584.601746 -18.611755\nv 20.029381 -584.601746 -19.370689\nv 20.774683 -579.920166 -30.287022\nv 20.914902 -579.920288 -29.491699\nv 20.915148 -584.601135 -29.491943\nv 20.774929 -584.601074 -30.287327\nv 15.962020 -579.919922 -40.113960\nv 16.481155 -579.919922 -39.495232\nv 16.481401 -584.600830 -39.495445\nv 15.962267 -584.600830 -40.114174\nv 6.880702 -579.920105 -46.217899\nv 7.639644 -579.920105 -45.941631\nv 7.639890 -584.600952 -45.941875\nv 6.880948 -584.601013 -46.218143\nv 4.098320 -579.922363 -5.476454\nv 3.302936 -579.922424 -5.336247\nv 3.303182 -584.603333 -5.336491\nv 4.098566 -584.603271 -5.476699\nv -6.818310 -579.922974 -6.222011\nv -7.577254 -579.923035 -6.498215\nv -7.577007 -584.603821 -6.498521\nv -6.818064 -584.603760 -6.222255\nv -15.899630 -579.923096 -12.325950\nv -16.418764 -579.923096 -12.944676\nv -16.418518 -584.604004 -12.944951\nv -15.899384 -584.604004 -12.326194\nv -20.712292 -579.922852 -22.152767\nv -20.852510 -579.922791 -22.948212\nv -20.852264 -584.603638 -22.948456\nv -20.712046 -584.603760 -22.153072\nv -19.966743 -579.922180 -33.069466\nv -19.690495 -579.922180 -33.828369\nv -19.690248 -584.603027 -33.828644\nv -19.966497 -584.603088 -33.069679\nv -13.862786 -579.921387 -42.150787\nv -13.244062 -579.921326 -42.669933\nv -13.243815 -584.602234 -42.670116\nv -13.862539 -584.602295 -42.151031\nv -4.035929 -579.920654 -46.963455\nv -3.240545 -579.920593 -47.103661\nv -3.240299 -584.601501 -47.103935\nv -4.035683 -584.601562 -46.963669\nv -19.455030 -370.897095 -26.209435\nv -19.450909 -449.260071 -26.213539\nv -19.080931 -370.897247 -22.409971\nv -19.076809 -449.260284 -22.414137\nv -17.972765 -370.897369 -18.756561\nv -17.968643 -449.260345 -18.760681\nv -16.173155 -370.897461 -15.389494\nv -16.169033 -449.260468 -15.393660\nv -13.751222 -370.897522 -12.438197\nv -13.747100 -449.260498 -12.442363\nv -10.800097 -370.897461 -10.016138\nv -10.795975 -449.260498 -10.020273\nv -7.433134 -370.897369 -8.216336\nv -7.429011 -449.260376 -8.220487\nv -3.779733 -370.897247 -7.108009\nv -3.775610 -449.260284 -7.112129\nv 0.019687 -370.897095 -6.733673\nv 0.023809 -449.260040 -6.737792\nv 3.819127 -370.896820 -7.107810\nv 3.823249 -449.259857 -7.111929\nv 7.472586 -370.896576 -8.215944\nv 7.476708 -449.259583 -8.220095\nv 10.839643 -370.896301 -10.015569\nv 10.843765 -449.259338 -10.019704\nv 13.790896 -370.896057 -12.437473\nv 13.795018 -449.259033 -12.441639\nv 16.212984 -370.895752 -15.388642\nv 16.217106 -449.258759 -15.392808\nv 18.012774 -370.895477 -18.755615\nv 18.016895 -449.258453 -18.759735\nv 19.121130 -370.895233 -22.408966\nv 19.125252 -449.258270 -22.413132\nv 19.495428 -370.895020 -26.208410\nv 19.499550 -449.257996 -26.212515\nv 19.121330 -370.894836 -30.007858\nv 19.125452 -449.257843 -30.011963\nv 18.013165 -370.894714 -33.661331\nv 18.017286 -449.257690 -33.665451\nv 16.213554 -370.894623 -37.028351\nv 16.217676 -449.257629 -37.032486\nv 13.791621 -370.894592 -39.979618\nv 13.795743 -449.257568 -39.983738\nv 10.840495 -370.894623 -42.401691\nv 10.844618 -449.257599 -42.405827\nv 7.473533 -370.894684 -44.201523\nv 7.477654 -449.257721 -44.205643\nv 3.820132 -370.894806 -45.309883\nv 3.824254 -449.257843 -45.314018\nv 0.020712 -370.895020 -45.684204\nv 0.024834 -449.257996 -45.688339\nv -3.778728 -370.895233 -45.310081\nv -3.774606 -449.258270 -45.314217\nv -7.432188 -370.895477 -44.201916\nv -7.428064 -449.258514 -44.206036\nv -10.799245 -370.895782 -42.402260\nv -10.795122 -449.258759 -42.406395\nv -13.750497 -370.896057 -39.980343\nv -13.746375 -449.259033 -39.984463\nv -16.172585 -370.896332 -37.029205\nv -16.168463 -449.259338 -37.033337\nv -17.972374 -370.896606 -33.662277\nv -17.968252 -449.259583 -33.666397\nv -19.080730 -370.896851 -30.008863\nv -19.076609 -449.259857 -30.012968\nv -20.233749 -449.695648 -30.243193\nv -20.630726 -449.695892 -26.213600\nv -20.233961 -449.696075 -22.184004\nv -19.058674 -449.696198 -18.309217\nv -17.150019 -449.696320 -14.738183\nv -14.581389 -449.696320 -11.608095\nv -11.451456 -449.696289 -9.039303\nv -7.880497 -449.696228 -7.130487\nv -4.005799 -449.696075 -5.954986\nv 0.023801 -449.695862 -5.558029\nv 4.053422 -449.695648 -5.954773\nv 7.928183 -449.695374 -7.130072\nv 11.499242 -449.695068 -9.038699\nv 14.629309 -449.694794 -11.607327\nv 17.198103 -449.694489 -14.737280\nv 19.106945 -449.694183 -18.308214\nv 20.282438 -449.693939 -22.182938\nv 20.679413 -449.693695 -26.212515\nv 20.282650 -449.693512 -30.242126\nv 19.107361 -449.693329 -34.116913\nv 17.198708 -449.693268 -37.687962\nv 14.630077 -449.693268 -40.818050\nv 11.500146 -449.693298 -43.386875\nv 7.929186 -449.693329 -45.295658\nv 4.054488 -449.693512 -46.471176\nv 0.024888 -449.693695 -46.868179\nv -4.004733 -449.693939 -46.471390\nv -7.879493 -449.694183 -45.296074\nv -11.450552 -449.694519 -43.387478\nv -14.580621 -449.694794 -40.818821\nv -17.149414 -449.695099 -37.688866\nv -19.058258 -449.695343 -34.117916\nv 14.630140 -450.865631 -40.818127\nv 11.500208 -450.865662 -43.386906\nv 7.929248 -450.865723 -45.295719\nv 4.054549 -450.865875 -46.471222\nv 0.024950 -450.866089 -46.868240\nv -4.004671 -450.866302 -46.471436\nv -7.879432 -450.866577 -45.296135\nv -11.450490 -450.866882 -43.387508\nv -14.580559 -450.867157 -40.818897\nv -17.149351 -450.867432 -37.688927\nv -19.058195 -450.867767 -34.118008\nv -20.233686 -450.868011 -30.243284\nv -20.630663 -450.868286 -26.213676\nv -20.233898 -450.868439 -22.184065\nv -19.058611 -450.868591 -18.309278\nv -17.149956 -450.868713 -14.738259\nv -14.581327 -450.868744 -11.608171\nv -11.451394 -450.868652 -9.039363\nv -7.880435 -450.868591 -7.130548\nv -4.005737 -450.868439 -5.955076\nv 0.023863 -450.868256 -5.558060\nv 4.053483 -450.868011 -5.954864\nv 7.928245 -450.867737 -7.130133\nv 11.499304 -450.867432 -9.038759\nv 14.629372 -450.867218 -11.607404\nv 17.198166 -450.866882 -14.737356\nv 19.107008 -450.866577 -18.308275\nv 20.282501 -450.866302 -22.182999\nv 20.679476 -450.866089 -26.212591\nv 20.282713 -450.865875 -30.242218\nv 19.107424 -450.865753 -34.117004\nv 17.198771 -450.865601 -37.688023\nv 19.216560 -451.695953 -30.030165\nv 18.103106 -451.695831 -33.701061\nv 16.294914 -451.695740 -37.084122\nv 13.861475 -451.695740 -40.049469\nv 10.896278 -451.695740 -42.483097\nv 7.513286 -451.695831 -44.291473\nv 3.842484 -451.695953 -45.405098\nv 0.024965 -451.696106 -45.781174\nv -3.792575 -451.696381 -45.405296\nv -7.463434 -451.696625 -44.291866\nv -10.846521 -451.696899 -42.483669\nv -13.811846 -451.697205 -40.050198\nv -16.245445 -451.697449 -37.084976\nv -18.053812 -451.697723 -33.702011\nv -19.167461 -451.697968 -30.031174\nv -19.543541 -451.698212 -26.213680\nv -19.167662 -451.698364 -22.396164\nv -18.054207 -451.698517 -18.725298\nv -16.246016 -451.698608 -15.342209\nv -13.812574 -451.698639 -12.376874\nv -10.847378 -451.698639 -9.943278\nv -7.464385 -451.698517 -8.134886\nv -3.793584 -451.698395 -7.021264\nv 0.023936 -451.698181 -6.645203\nv 3.841476 -451.697968 -7.021063\nv 7.512335 -451.697723 -8.134492\nv 10.895422 -451.697479 -9.942707\nv 13.860746 -451.697174 -12.376146\nv 16.294344 -451.696899 -15.341353\nv 18.102711 -451.696625 -18.724346\nv 19.216360 -451.696350 -22.395155\nv 19.592438 -451.696136 -26.212650\nv 16.879316 -451.696625 -19.231138\nv 17.917585 -451.696381 -22.653521\nv 18.268229 -451.696228 -26.212685\nv 17.917774 -451.696045 -29.771883\nv 16.879684 -451.695892 -33.194351\nv 15.193866 -451.695862 -36.348476\nv 12.925099 -451.695801 -39.113140\nv 10.160539 -451.695831 -41.382027\nv 7.006494 -451.695923 -43.068069\nv 3.584111 -451.696045 -44.106319\nv 0.024930 -451.696228 -44.456970\nv -3.534269 -451.696411 -44.106506\nv -6.956706 -451.696655 -43.068436\nv -10.110841 -451.696869 -41.382561\nv -12.875520 -451.697144 -39.113819\nv -15.144433 -451.697449 -36.349274\nv -16.830418 -451.697662 -33.195236\nv -17.868687 -451.697937 -29.772823\nv -18.219332 -451.698120 -26.213644\nv -17.868876 -451.698273 -22.654461\nv -16.830786 -451.698395 -19.232025\nv -15.144966 -451.698486 -16.077898\nv -12.876199 -451.698486 -13.313235\nv -10.111638 -451.698486 -11.044318\nv -6.957593 -451.698425 -9.358293\nv -3.535210 -451.698273 -8.320070\nv 0.023971 -451.698120 -7.969390\nv 3.583170 -451.697906 -8.319882\nv 7.005607 -451.697693 -9.357925\nv 10.159741 -451.697449 -11.043785\nv 12.924420 -451.697144 -13.312557\nv 15.193333 -451.696899 -16.077099\nv 10.166316 -576.685791 -11.050331\nv 12.930995 -576.685547 -13.319148\nv 15.199908 -576.685242 -16.083675\nv 16.885893 -576.684998 -19.237745\nv 17.924162 -576.684814 -22.660112\nv 18.274807 -576.684570 -26.219276\nv 17.924351 -576.684448 -29.778490\nv 16.886259 -576.684265 -33.200943\nv 15.200441 -576.684265 -36.355068\nv 12.931674 -576.684204 -39.119717\nv 10.167113 -576.684265 -41.388649\nv 7.013068 -576.684326 -43.074646\nv 3.590685 -576.684387 -44.112911\nv 0.031504 -576.684570 -44.463623\nv -3.527695 -576.684753 -44.113098\nv -6.950131 -576.685059 -43.075012\nv -10.104266 -576.685364 -41.389183\nv -12.868945 -576.685547 -39.120396\nv -15.137857 -576.685852 -36.355865\nv -16.823843 -576.686096 -33.201828\nv -17.862110 -576.686279 -29.779430\nv -18.212753 -576.686523 -26.220236\nv -17.862299 -576.686646 -22.661053\nv -16.824209 -576.686829 -19.238632\nv -15.138391 -576.686829 -16.084475\nv -12.869624 -576.686890 -13.319827\nv -10.105063 -576.686890 -11.050864\nv -6.951017 -576.686768 -9.364868\nv -3.528636 -576.686707 -8.326661\nv 0.030545 -576.686523 -7.976012\nv 3.589744 -576.686340 -8.326474\nv 7.012182 -576.686035 -9.364501\nv -7.871932 -554.890564 24.721716\nv -7.869536 -554.885681 -66.352699\nv -7.602624 -556.935364 24.721632\nv -7.600229 -556.930481 -66.352859\nv -6.813253 -558.840698 24.721531\nv -6.810858 -558.835876 -66.352882\nv -5.557647 -560.476868 24.721502\nv -5.555253 -560.472046 -66.352959\nv -3.921341 -561.732239 24.721485\nv -3.918946 -561.727478 -66.352982\nv -2.015850 -562.521484 24.721443\nv -2.013455 -562.516663 -66.352943\nv 0.028955 -562.790527 24.721527\nv 0.031349 -562.785706 -66.352905\nv 2.073730 -562.521240 24.721552\nv 2.076125 -562.516418 -66.352837\nv 3.979139 -561.731873 24.721693\nv 3.981534 -561.727112 -66.352768\nv 5.615313 -560.476257 24.721796\nv 5.617708 -560.471436 -66.352669\nv 6.870747 -558.839966 24.721891\nv 6.873142 -558.835144 -66.352524\nv 7.659915 -556.934509 24.722034\nv 7.662311 -556.929626 -66.352463\nv 7.929008 -554.889709 24.722132\nv 7.931403 -554.884827 -66.352287\nv 7.659700 -552.844849 24.722248\nv 7.662096 -552.840027 -66.352203\nv 6.870331 -550.939453 24.722319\nv 6.872726 -550.934631 -66.352081\nv 5.614725 -549.303284 24.722345\nv 5.617120 -549.298523 -66.352089\nv 3.978419 -548.047852 24.722364\nv 3.980814 -548.043030 -66.352020\nv 2.072928 -547.258667 24.722376\nv 2.075322 -547.253906 -66.352058\nv 0.028123 -546.989624 24.722321\nv 0.030518 -546.984741 -66.352097\nv -2.016652 -547.258911 24.722267\nv -2.014258 -547.254150 -66.352165\nv -3.922061 -548.048218 24.722157\nv -3.919666 -548.043396 -66.352234\nv -5.558235 -549.303894 24.722052\nv -5.555840 -549.299133 -66.352379\nv -6.813669 -550.940186 24.721958\nv -6.811274 -550.935364 -66.352440\nv -7.602839 -552.845703 24.721846\nv -7.600444 -552.840881 -66.352600\nv -7.876499 -468.051270 24.726294\nv -7.874104 -468.046448 -66.348122\nv -7.607193 -470.096039 24.726210\nv -7.604797 -470.091217 -66.348236\nv -6.817822 -472.001404 24.726093\nv -6.815427 -471.996643 -66.348312\nv -5.562215 -473.637573 24.726065\nv -5.559820 -473.632812 -66.348366\nv -3.925910 -474.893036 24.726032\nv -3.923514 -474.888275 -66.348404\nv -2.020418 -475.682251 24.726082\nv -2.018023 -475.677399 -66.348366\nv 0.024387 -475.951263 24.726105\nv 0.026781 -475.946503 -66.348373\nv 2.069162 -475.682007 24.726191\nv 2.071557 -475.677155 -66.348259\nv 3.974571 -474.892609 24.726240\nv 3.976965 -474.887848 -66.348190\nv 5.610744 -473.636963 24.726358\nv 5.613140 -473.632202 -66.348076\nv 6.866179 -472.000671 24.726454\nv 6.868573 -471.995911 -66.347946\nv 7.655348 -470.095245 24.726612\nv 7.657743 -470.090424 -66.347839\nv 7.924440 -468.050415 24.726709\nv 7.926835 -468.045593 -66.347710\nv 7.655133 -466.005646 24.726841\nv 7.657528 -466.000824 -66.347656\nv 6.865763 -464.100220 24.726912\nv 6.868158 -464.095459 -66.347549\nv 5.610157 -462.464050 24.726954\nv 5.612552 -462.459229 -66.347481\nv 3.973850 -461.208588 24.726973\nv 3.976246 -461.203766 -66.347443\nv 2.068360 -460.419464 24.726984\nv 2.070754 -460.414612 -66.347496\nv 0.023555 -460.150360 24.726944\nv 0.025950 -460.145538 -66.347519\nv -2.021221 -460.419708 24.726875\nv -2.018826 -460.414856 -66.347603\nv -3.926629 -461.209015 24.726765\nv -3.924234 -461.204193 -66.347656\nv -5.562803 -462.464661 24.726660\nv -5.560408 -462.459839 -66.347771\nv -6.818237 -464.100952 24.726551\nv -6.815842 -464.096191 -66.347916\nv -7.607408 -466.006439 24.726439\nv -7.605012 -466.001617 -66.348053\nv -9.699121 -508.635803 -28.231243\nv -9.697995 -508.633514 -71.079292\nv -9.367559 -511.153168 -28.231371\nv -9.366433 -511.150909 -71.079391\nv -8.395745 -513.499023 -28.231483\nv -8.394619 -513.496765 -71.079521\nv -6.849900 -515.513428 -28.231548\nv -6.848773 -515.511108 -71.079605\nv -4.835369 -517.059021 -28.231558\nv -4.834241 -517.056763 -71.079643\nv -2.489438 -518.030579 -28.231571\nv -2.488311 -518.028320 -71.079628\nv 0.028010 -518.361877 -28.231537\nv 0.029137 -518.359619 -71.079559\nv 2.545423 -518.030334 -28.231440\nv 2.546550 -518.028076 -71.079491\nv 4.891252 -517.058533 -28.231302\nv 4.892379 -517.056274 -71.079384\nv 6.905621 -515.512695 -28.231188\nv 6.906747 -515.510376 -71.079239\nv 8.451255 -513.498169 -28.231039\nv 8.452381 -513.495911 -71.079079\nv 9.422821 -511.152191 -28.230877\nv 9.423947 -511.149933 -71.078903\nv 9.754118 -508.634766 -28.230732\nv 9.755244 -508.632477 -71.078781\nv 9.422557 -506.117340 -28.230618\nv 9.423682 -506.115051 -71.078690\nv 8.450743 -503.771515 -28.230520\nv 8.451869 -503.769257 -71.078560\nv 6.904896 -501.757141 -28.230425\nv 6.906024 -501.754822 -71.078506\nv 4.890366 -500.211487 -28.230387\nv 4.891492 -500.209259 -71.078468\nv 2.544435 -499.239929 -28.230448\nv 2.545560 -499.237671 -71.078484\nv 0.026987 -498.908630 -28.230453\nv 0.028113 -498.906372 -71.078522\nv -2.490426 -499.240173 -28.230579\nv -2.489300 -499.237915 -71.078621\nv -4.836255 -500.211975 -28.230642\nv -4.835128 -500.209747 -71.078728\nv -6.850624 -501.757874 -28.230785\nv -6.849496 -501.755554 -71.078873\nv -8.396257 -503.772430 -28.230965\nv -8.395131 -503.770172 -71.079002\nv -9.367825 -506.118317 -28.231112\nv -9.366698 -506.116028 -71.079178\nv -9.699661 -519.469543 13.942800\nv -9.698978 -519.468140 -11.994838\nv -9.368099 -521.986938 13.942625\nv -9.367416 -521.985596 -11.994982\nv -8.396286 -524.332825 13.942574\nv -8.395603 -524.331421 -11.995094\nv -6.850439 -526.347168 13.942508\nv -6.849756 -526.345764 -11.995114\nv -4.835907 -527.892822 13.942470\nv -4.835225 -527.891418 -11.995122\nv -2.489977 -528.864380 13.942470\nv -2.489295 -528.863037 -11.995122\nv 0.027470 -529.195679 13.942536\nv 0.028152 -529.194336 -11.995086\nv 2.544883 -528.864136 13.942602\nv 2.545565 -528.862793 -11.994989\nv 4.890711 -527.892334 13.942725\nv 4.891394 -527.890930 -11.994866\nv 6.905080 -526.346436 13.942869\nv 6.905763 -526.345032 -11.994753\nv 8.450714 -524.331970 13.943017\nv 8.451397 -524.330566 -11.994651\nv 9.422281 -521.985962 13.943119\nv 9.422964 -521.984619 -11.994488\nv 9.753578 -519.468567 13.943311\nv 9.754261 -519.467163 -11.994327\nv 9.422016 -516.951111 13.943439\nv 9.422699 -516.949707 -11.994228\nv 8.450203 -514.605286 13.943521\nv 8.450886 -514.603943 -11.994102\nv 6.904357 -512.590942 13.943571\nv 6.905040 -512.589539 -11.994020\nv 4.889826 -511.045288 13.943610\nv 4.890509 -511.043884 -11.994027\nv 2.543894 -510.073700 13.943594\nv 2.544576 -510.072327 -11.994059\nv 0.026447 -509.742432 13.943574\nv 0.027129 -509.741028 -11.994079\nv -2.490966 -510.073944 13.943461\nv -2.490283 -510.072571 -11.994191\nv -4.836794 -511.045776 13.943355\nv -4.836112 -511.044373 -11.994283\nv -6.851163 -512.591675 13.943210\nv -6.850481 -512.590271 -11.994382\nv -8.396797 -514.606140 13.943077\nv -8.396114 -514.604797 -11.994545\nv -9.368364 -516.952087 13.942945\nv -9.367682 -516.950684 -11.994722\nv -57.482662 -400.687317 -238.802902\nv -57.151100 -403.204742 -238.801041\nv -56.179287 -405.550568 -238.799179\nv -54.633430 -407.564911 -238.797546\nv -52.618912 -409.110565 -238.796188\nv -50.272980 -410.082123 -238.795212\nv -47.755524 -410.413361 -238.794678\nv -45.238110 -410.081818 -238.794662\nv -42.892281 -409.110016 -238.795105\nv -40.877911 -407.564209 -238.796036\nv -39.332279 -405.549683 -238.797363\nv -38.360710 -403.203735 -238.799026\nv -38.029415 -400.686310 -238.800812\nv -38.360973 -398.168854 -238.802704\nv -39.332787 -395.823029 -238.804535\nv -40.878632 -393.808685 -238.806183\nv -42.893162 -392.263031 -238.807556\nv -45.239094 -391.291473 -238.808533\nv -47.756542 -390.960175 -238.809036\nv -50.273956 -391.291779 -238.809082\nv -52.619793 -392.263550 -238.808609\nv -54.634151 -393.809387 -238.807678\nv -56.179794 -395.823944 -238.806381\nv -57.151363 -398.169861 -238.804733\nv -57.517387 -400.449768 82.991501\nv -57.185806 -402.967377 82.751595\nv -56.213959 -405.313385 82.521667\nv -54.668102 -407.327881 82.317230\nv -52.653553 -408.873627 82.152313\nv -50.307590 -409.845306 82.038200\nv -47.790138 -410.176605 81.982521\nv -45.272717 -409.845062 81.989182\nv -42.926899 -408.873199 82.057693\nv -40.912556 -407.327271 82.183388\nv -39.366936 -405.312622 82.357742\nv -38.395382 -402.966522 82.568817\nv -38.064114 -400.448914 82.802238\nv -38.395706 -397.931274 83.042114\nv -39.367550 -395.585327 83.272095\nv -40.913418 -393.570801 83.476479\nv -42.927959 -392.025024 83.641388\nv -45.273891 -391.053375 83.755554\nv -47.791363 -390.722046 83.811211\nv -50.308765 -391.053619 83.804543\nv -52.654598 -392.025482 83.736008\nv -54.668949 -393.571411 83.610336\nv -56.214565 -395.586090 83.435989\nv -57.186111 -397.932159 83.224922\nv -57.327335 -402.282135 92.612411\nv -57.003319 -404.726654 91.989098\nv -56.038742 -407.002655 91.391518\nv -54.499329 -408.954956 90.860291\nv -52.489998 -410.450470 90.431709\nv -50.147652 -411.387329 90.134972\nv -47.631939 -411.701721 89.990219\nv -45.114326 -411.372192 90.007416\nv -42.766350 -410.421143 90.185341\nv -40.748028 -408.913452 90.511871\nv -39.196903 -406.951843 90.964745\nv -38.218700 -404.669983 91.513123\nv -37.880066 -402.223419 92.119667\nv -38.204079 -399.778870 92.742950\nv -39.168659 -397.502899 93.340569\nv -40.708061 -395.550598 93.871750\nv -42.717400 -394.055054 94.300362\nv -45.059727 -393.118195 94.597130\nv -47.575424 -392.803802 94.741837\nv -50.093052 -393.133362 94.724632\nv -52.441048 -394.084381 94.546730\nv -54.459362 -395.592102 94.220200\nv -56.010487 -397.553680 93.767326\nv -56.988689 -399.835510 93.218933\nv -56.947567 -405.941315 104.250748\nv -56.635849 -408.267517 103.250877\nv -55.683048 -410.429932 102.292191\nv -54.154110 -412.281311 101.440041\nv -52.153221 -413.695435 100.752487\nv -49.816727 -414.575928 100.276352\nv -47.303879 -414.862793 100.044167\nv -44.785931 -414.536469 100.071701\nv -42.434433 -413.619232 100.357056\nv -40.409683 -412.173553 100.880836\nv -38.849628 -410.297974 101.607300\nv -37.860607 -408.120239 102.486946\nv -37.510014 -405.788940 103.459877\nv -37.821743 -403.462738 104.459778\nv -38.774532 -401.300323 105.418457\nv -40.303463 -399.448975 106.270638\nv -42.304359 -398.034821 106.958160\nv -44.640831 -397.154327 107.434280\nv -47.153683 -396.867462 107.666481\nv -49.671635 -397.193787 107.638969\nv -52.023140 -398.111023 107.353584\nv -54.047901 -399.556671 106.829819\nv -55.607941 -401.432281 106.103348\nv -56.596966 -403.609985 105.223686\nv -56.364914 -411.553009 114.586777\nv -56.078094 -413.639374 113.145195\nv -55.149178 -415.571838 111.762985\nv -53.641438 -417.218781 110.534340\nv -51.657681 -418.468048 109.543030\nv -49.333054 -419.234283 108.856537\nv -46.825989 -419.465424 108.521736\nv -44.307339 -419.145721 108.561363\nv -41.948750 -418.296906 108.972801\nv -39.910961 -416.976837 109.727905\nv -38.332832 -415.275482 110.775269\nv -37.321911 -413.308746 112.043510\nv -36.947075 -411.210724 113.446251\nv -37.233891 -409.124390 114.887863\nv -38.162823 -407.191833 116.270035\nv -39.670540 -405.544861 117.498695\nv -41.654297 -404.295685 118.490021\nv -43.978920 -403.529419 119.176483\nv -46.485981 -403.298218 119.511292\nv -49.004620 -403.617981 119.471672\nv -51.363216 -404.466797 119.060265\nv -53.401016 -405.786865 118.305130\nv -54.979160 -407.488251 117.257751\nv -55.990097 -409.454926 115.989494\nv -55.582134 -419.090576 123.558578\nv -55.325905 -420.882477 121.766487\nv -54.426292 -422.532654 120.048203\nv -52.944626 -423.928558 118.520836\nv -50.981892 -424.975281 117.288483\nv -48.671822 -425.601318 116.435089\nv -46.171875 -425.764099 116.018822\nv -43.652401 -425.452423 116.068115\nv -41.285088 -424.687653 116.579468\nv -39.231262 -423.521820 117.518196\nv -37.630913 -422.034393 118.820236\nv -36.593075 -420.326752 120.396866\nv -36.188496 -418.515259 122.140633\nv -36.444736 -416.723419 123.932770\nv -37.344326 -415.073242 125.651009\nv -38.825996 -413.677246 127.178375\nv -40.788712 -412.630554 128.410751\nv -43.098778 -412.004517 129.264130\nv -45.598728 -411.841827 129.680389\nv -48.118221 -412.153412 129.631119\nv -50.485535 -412.918182 129.119705\nv -52.539360 -414.084076 128.181015\nv -54.139717 -415.571442 126.878975\nv -55.177544 -417.279144 125.302353\nv -54.618877 -428.365234 131.583694\nv -54.392471 -429.869843 129.543015\nv -53.521481 -431.244568 127.586441\nv -52.065243 -432.395721 125.847191\nv -50.123024 -433.244843 124.443932\nv -47.827171 -433.734070 123.472145\nv -45.334148 -433.830048 122.998154\nv -42.813839 -433.526306 123.054245\nv -40.438011 -432.843506 123.636559\nv -38.368572 -431.828125 124.705444\nv -36.746540 -430.549377 126.188057\nv -35.682465 -429.094482 127.983376\nv -35.248856 -427.562531 129.969040\nv -35.475262 -426.057892 132.009720\nv -36.346256 -424.683197 133.966263\nv -37.802475 -423.532043 135.705551\nv -39.744678 -422.682922 137.108826\nv -42.040543 -422.193665 138.080597\nv -44.533569 -422.097687 138.554596\nv -47.053864 -422.401428 138.498520\nv -49.429699 -423.084259 137.916199\nv -51.499142 -424.099640 136.847260\nv -53.121174 -425.378357 135.364639\nv -54.185253 -426.833282 133.569336\nv -53.476013 -439.368286 138.669998\nv -53.276470 -440.614349 136.462799\nv -52.431225 -441.741180 134.346542\nv -50.997898 -442.671936 132.465378\nv -49.074142 -443.343262 130.947540\nv -46.791073 -443.709381 129.896515\nv -44.304291 -443.745270 129.383804\nv -41.783241 -443.448669 129.444473\nv -39.399765 -442.839569 130.074341\nv -37.316246 -441.959656 131.230453\nv -35.674717 -440.868805 132.834076\nv -34.586987 -439.641357 134.775864\nv -34.127251 -438.361023 136.923569\nv -34.326794 -437.114960 139.130722\nv -35.172050 -435.988129 141.247009\nv -36.605370 -435.057343 143.128159\nv -38.529121 -434.386047 144.645981\nv -40.812191 -434.019958 145.697052\nv -43.298988 -433.984039 146.209732\nv -45.820007 -434.280670 146.149063\nv -48.203499 -434.889740 145.519226\nv -50.287022 -435.769684 144.363083\nv -51.928562 -436.860535 142.759460\nv -53.016281 -438.087982 140.817703\nv -52.366158 -450.053894 144.096115\nv -52.192738 -451.048340 141.761154\nv -51.372559 -451.933929 139.522369\nv -49.961475 -452.650269 137.532364\nv -48.055683 -453.148590 135.926636\nv -45.785076 -453.394867 134.814728\nv -43.304363 -453.372406 134.272415\nv -40.782608 -453.082642 134.336594\nv -38.391659 -452.545349 135.002869\nv -36.294456 -451.797211 136.225906\nv -34.633919 -450.889160 137.922348\nv -33.523235 -449.882996 139.976532\nv -33.038063 -448.847473 142.248520\nv -33.211475 -447.852936 144.583466\nv -34.031662 -446.967407 146.822250\nv -35.442726 -446.251068 148.812256\nv -37.348507 -445.752747 150.417969\nv -39.619133 -445.506409 151.529846\nv -42.099842 -445.528961 152.072189\nv -44.621605 -445.818695 152.008057\nv -47.012558 -446.355957 151.341751\nv -49.109749 -447.104156 150.118713\nv -50.770275 -448.012207 148.422256\nv -51.880985 -449.018311 146.368073\nv -51.287823 -460.435669 147.866913\nv -51.143429 -461.150726 145.430481\nv -50.351055 -461.768463 143.094391\nv -48.964722 -462.246643 141.017914\nv -47.078907 -462.552826 139.342422\nv -44.822117 -462.666077 138.182190\nv -42.348129 -462.578674 137.616257\nv -39.825573 -462.296570 137.683182\nv -37.426342 -461.839020 138.378433\nv -35.313953 -461.237244 139.654694\nv -33.632332 -460.532104 141.424820\nv -32.496113 -459.771790 143.568253\nv -31.982702 -459.008057 145.939041\nv -32.127094 -458.292999 148.375427\nv -32.919468 -457.675323 150.711472\nv -34.305798 -457.197113 152.788040\nv -36.191620 -456.890930 154.463486\nv -38.448414 -456.777710 155.623718\nv -40.922398 -456.865082 156.189651\nv -43.444946 -457.147186 156.122711\nv -45.844177 -457.604706 155.427444\nv -47.956585 -458.206543 154.151260\nv -49.638191 -458.911682 152.381119\nv -50.774403 -459.671997 150.237610\nv -50.215977 -470.753723 150.324692\nv -50.101753 -471.178284 147.819122\nv -49.338337 -471.517426 145.416672\nv -47.977718 -471.748077 143.281174\nv -46.112663 -471.854492 141.558121\nv -43.870224 -471.829346 140.364899\nv -41.403267 -471.674438 139.782944\nv -38.879883 -471.400330 139.851761\nv -36.472038 -471.025635 140.566772\nv -34.343845 -470.575897 141.879181\nv -32.640312 -470.081848 143.699631\nv -31.477539 -469.577087 145.903961\nv -30.934778 -469.095978 148.342010\nv -31.049004 -468.671448 150.847626\nv -31.812426 -468.332306 153.250046\nv -33.173019 -468.101624 155.385529\nv -35.038094 -467.995239 157.108673\nv -37.280533 -468.020355 158.301804\nv -39.747490 -468.175262 158.883804\nv -42.270874 -468.449432 158.814972\nv -44.678707 -468.824066 158.099960\nv -46.806908 -469.273834 156.787521\nv -48.510441 -469.767883 154.967102\nv -49.673206 -470.272644 152.762741\nv -49.151890 -480.996063 151.466827\nv -49.065907 -481.148743 148.930893\nv -48.329559 -481.227203 146.499466\nv -46.993031 -481.226074 144.338043\nv -45.147388 -481.145477 142.594162\nv -42.918419 -480.990845 141.386536\nv -40.458027 -480.772766 140.797485\nv -37.933857 -480.506134 140.867187\nv -35.517971 -480.208984 141.590836\nv -33.374973 -479.901764 142.919128\nv -31.650908 -479.605194 144.761566\nv -30.463291 -479.339630 146.992599\nv -29.893038 -479.123108 149.460159\nv -29.979012 -478.970459 151.996063\nv -30.715353 -478.891968 154.427582\nv -32.051888 -478.893097 156.588913\nv -33.897530 -478.973694 158.332825\nv -36.126492 -479.128296 159.540466\nv -38.586906 -479.346405 160.129532\nv -41.111061 -479.613068 160.059830\nv -43.526951 -479.910187 159.336151\nv -45.669945 -480.217438 158.007874\nv -47.394012 -480.513977 156.165421\nv -48.581619 -480.779572 153.934433\nv -47.996246 -492.119812 151.647339\nv -47.933189 -492.051880 149.107819\nv -47.218819 -491.918793 146.672897\nv -45.901814 -491.729645 144.508514\nv -44.071926 -491.497253 142.762100\nv -41.853882 -491.237579 141.552795\nv -39.398804 -490.968262 140.962921\nv -36.874023 -490.707672 141.032669\nv -34.451580 -490.473511 141.757370\nv -32.296585 -490.281830 143.087540\nv -30.555870 -490.145599 144.932571\nv -29.348082 -490.074127 147.166733\nv -28.755526 -490.072357 149.637802\nv -28.818579 -490.140320 152.177322\nv -29.532928 -490.273346 154.612228\nv -30.849943 -490.462555 156.776657\nv -32.679817 -490.694855 158.523010\nv -34.897877 -490.954529 159.732361\nv -37.352943 -491.223816 160.322220\nv -39.877735 -491.484467 160.252487\nv -42.300167 -491.718597 159.527802\nv -44.455185 -491.910370 158.197617\nv -46.195889 -492.046570 156.352554\nv -47.403667 -492.118011 154.118408\nv -46.744358 -504.170013 150.868042\nv -46.710701 -503.819122 148.346848\nv -46.024513 -503.414764 145.929474\nv -44.732571 -502.984467 143.780670\nv -42.922897 -502.557556 142.046860\nv -40.718834 -502.163147 140.846252\nv -38.270580 -501.828125 140.260620\nv -35.745010 -501.575287 140.329880\nv -33.314186 -501.421814 141.049362\nv -31.143759 -501.378326 142.369934\nv -29.381714 -501.447601 144.201660\nv -28.148066 -501.625092 146.419769\nv -27.526905 -501.898590 148.873016\nv -27.560553 -502.249481 151.394226\nv -28.246735 -502.653839 153.811584\nv -29.538689 -503.084106 155.960373\nv -31.348352 -503.511017 157.694214\nv -33.552422 -503.905426 158.894852\nv -36.000671 -504.240479 159.480438\nv -38.526253 -504.493286 159.411179\nv -40.957081 -504.646759 158.691742\nv -43.127483 -504.690308 157.371155\nv -44.889545 -504.620941 155.539413\nv -46.123199 -504.443481 153.321350\nv -45.559513 -515.574341 148.446167\nv -45.563957 -514.856873 146.002853\nv -44.914288 -514.101013 143.660065\nv -43.654797 -513.358215 141.577637\nv -41.871323 -512.679199 139.897415\nv -39.685413 -512.110168 138.733841\nv -37.246010 -511.690002 138.166290\nv -34.719368 -511.447174 138.233398\nv -32.277672 -511.398437 138.930664\nv -30.087328 -511.546875 140.210480\nv -28.297588 -511.882538 141.985657\nv -27.030428 -512.382507 144.135284\nv -26.372208 -513.012756 146.512772\nv -26.367794 -513.730225 148.956146\nv -27.017445 -514.486084 151.298874\nv -28.276930 -515.228760 153.381317\nv -30.060410 -515.907837 155.061539\nv -32.246330 -516.476807 156.225098\nv -34.685741 -516.897034 156.792648\nv -37.212379 -517.139832 156.725540\nv -39.654057 -517.188599 156.028290\nv -41.844414 -517.040161 154.748474\nv -43.634151 -516.704468 152.973267\nv -44.901302 -516.204529 150.823700\nv -44.445915 -526.292419 144.383743\nv -44.486568 -525.226379 142.072495\nv -43.871616 -524.136414 139.856415\nv -42.643002 -523.096619 137.886566\nv -40.884415 -522.177856 136.297134\nv -38.715748 -521.442871 135.196518\nv -36.284756 -520.941711 134.659637\nv -33.757133 -520.708496 134.723175\nv -31.305098 -520.759155 135.382736\nv -29.095781 -521.090149 136.593353\nv -27.279747 -521.679077 138.272552\nv -25.980726 -522.485596 140.305923\nv -25.287275 -523.454956 142.554901\nv -25.246639 -524.520996 144.866180\nv -25.861580 -525.611023 147.082230\nv -27.090185 -526.650818 149.052124\nv -28.848768 -527.569519 150.641525\nv -31.017450 -528.304504 151.742172\nv -33.448429 -528.805725 152.278976\nv -35.976067 -529.038879 152.215500\nv -38.428089 -528.988281 151.555954\nv -40.637405 -528.657227 150.345291\nv -42.453465 -528.068420 148.666107\nv -43.752472 -527.261841 146.632706\nv -43.321033 -537.118591 138.399216\nv -43.391888 -535.761780 136.248688\nv -42.805908 -534.392944 134.186722\nv -41.603054 -533.105286 132.353867\nv -39.865257 -531.986633 130.875046\nv -37.710976 -531.113159 129.850922\nv -35.287006 -530.544434 129.351395\nv -32.758526 -530.319153 129.410492\nv -30.297888 -530.452759 130.024216\nv -28.072750 -530.936096 131.150635\nv -26.234739 -531.736267 132.713074\nv -24.909155 -532.798645 134.605042\nv -24.186302 -534.051025 136.697617\nv -24.115448 -535.407776 138.848114\nv -24.701420 -536.776611 140.910049\nv -25.904291 -538.064270 142.742905\nv -27.642080 -539.182983 144.221786\nv -29.796371 -540.056458 145.245865\nv -32.220345 -540.625183 145.745377\nv -34.748791 -540.850403 145.686264\nv -37.209454 -540.716736 145.072632\nv -39.434586 -540.233459 143.946182\nv -41.272579 -539.433289 142.383728\nv -42.598175 -538.370911 140.491745\nv -42.185757 -548.044189 130.507095\nv -42.278561 -546.476074 128.509186\nv -41.713634 -544.904724 126.593536\nv -40.529469 -543.437012 124.890778\nv -38.806782 -542.172974 123.516861\nv -36.662952 -541.198975 122.565445\nv -34.244076 -540.581177 122.101410\nv -31.715006 -540.361694 122.156319\nv -29.248102 -540.555542 122.726463\nv -27.011473 -541.149536 123.772972\nv -25.157528 -542.103210 125.224495\nv -23.812609 -543.351501 126.982208\nv -23.068394 -544.809387 128.926270\nv -22.975580 -546.377441 130.924164\nv -23.540520 -547.948792 132.839813\nv -24.724678 -549.416565 134.542587\nv -26.447367 -550.680542 135.916504\nv -28.591200 -551.654602 136.867920\nv -31.010071 -552.272461 137.332001\nv -33.539139 -552.491882 137.277069\nv -36.006054 -552.297974 136.706940\nv -38.242683 -551.703979 135.660431\nv -40.096626 -550.750366 134.208847\nv -41.441540 -549.502075 132.451187\nv -41.217430 -557.362549 122.477402\nv -41.329025 -555.613770 120.635239\nv -40.782112 -553.869019 118.868889\nv -39.613968 -552.247314 117.298866\nv -37.904175 -550.859070 116.032036\nv -35.769291 -549.798889 115.154793\nv -33.354782 -549.139099 114.726952\nv -30.825203 -548.924622 114.777542\nv -28.352924 -549.170044 115.303253\nv -26.106464 -549.858765 116.268188\nv -24.238863 -550.943665 117.606659\nv -22.877439 -552.350891 119.227364\nv -22.114954 -553.984558 121.019852\nv -22.003357 -555.733459 122.862045\nv -22.550274 -557.478088 124.628342\nv -23.718431 -559.099854 126.198410\nv -25.428209 -560.488159 127.465179\nv -27.563097 -561.548279 128.342438\nv -29.977606 -562.208130 128.770309\nv -32.507191 -562.422607 128.719727\nv -34.979462 -562.177124 128.194000\nv -37.225929 -561.488464 127.229065\nv -39.093510 -560.403564 125.890617\nv -40.454956 -558.996277 124.269920\nv -40.407940 -565.152161 114.226921\nv -40.555737 -563.054749 112.753922\nv -40.043556 -560.975830 111.341660\nv -38.906281 -559.057007 110.086273\nv -37.221416 -557.428955 109.073334\nv -35.103760 -556.202881 108.371941\nv -32.697681 -555.462036 108.029839\nv -30.167105 -555.257202 108.070267\nv -27.684486 -555.602051 108.490669\nv -25.419043 -556.473328 109.262222\nv -23.525139 -557.811462 110.332420\nv -22.131842 -559.525391 111.628311\nv -21.334105 -561.498291 113.061584\nv -21.186296 -563.595703 114.534569\nv -21.698473 -565.674622 115.946846\nv -22.835745 -567.593506 117.202248\nv -24.520626 -569.221436 118.215157\nv -26.638252 -570.447632 118.916595\nv -29.044342 -571.188416 119.258728\nv -31.574928 -571.393250 119.218208\nv -34.057526 -571.048401 118.797844\nv -36.322994 -570.177124 118.026283\nv -38.216892 -568.838989 116.956085\nv -39.610188 -567.125000 115.660194\nv -39.888336 -570.150940 104.168121\nv -40.070343 -567.724731 103.356873\nv -39.590927 -565.330444 102.579056\nv -38.482788 -563.131287 101.887718\nv -36.821423 -561.277222 101.329872\nv -34.720074 -559.894409 100.943649\nv -32.321915 -559.077271 100.755226\nv -29.790394 -558.881409 100.777534\nv -27.298044 -559.320190 101.009094\nv -25.014692 -560.363647 101.434006\nv -23.095945 -561.940735 102.023376\nv -21.672569 -563.944031 102.737083\nv -20.841568 -566.236877 103.526428\nv -20.659573 -568.663147 104.337685\nv -21.138977 -571.057373 105.115486\nv -22.247126 -573.256531 105.806816\nv -23.908485 -575.110779 106.364639\nv -26.009853 -576.493408 106.750946\nv -28.407995 -577.310608 106.939301\nv -30.939514 -577.506531 106.916969\nv -33.431873 -577.067749 106.685478\nv -35.715225 -576.024231 106.260551\nv -37.633984 -574.447083 105.671143\nv -39.057339 -572.443909 104.957436\nv -39.668201 -572.267578 92.508553\nv -39.858299 -569.763306 92.126839\nv -39.386673 -567.294312 91.760773\nv -38.285442 -565.028748 91.435455\nv -36.629658 -563.120972 91.172928\nv -34.532154 -561.701111 90.991219\nv -32.135891 -560.865845 90.902596\nv -29.604149 -560.672119 90.913132\nv -27.109467 -561.132996 91.022102\nv -24.821877 -562.217346 91.222122\nv -22.897236 -563.851196 91.499535\nv -21.466736 -565.923035 91.835388\nv -20.627842 -568.291809 92.206856\nv -20.437729 -570.796021 92.588638\nv -20.909370 -573.265015 92.954636\nv -22.010597 -575.530579 93.279953\nv -23.666388 -577.438354 93.542480\nv -25.763885 -578.858276 93.724236\nv -28.160156 -579.693481 93.812813\nv -30.691895 -579.887268 93.802307\nv -33.186577 -579.426270 93.693298\nv -35.474171 -578.341980 93.493301\nv -37.398804 -576.708130 93.215965\nv -38.829304 -574.636292 92.880051\nv -39.558525 -573.321167 83.817963\nv -39.751514 -570.789307 83.663948\nv -39.282642 -568.293823 83.516304\nv -38.183861 -566.004700 83.385040\nv -36.530037 -564.077942 83.279190\nv -34.433910 -562.644897 83.205894\nv -32.038315 -561.803223 83.170166\nv -29.506496 -561.610168 83.174500\nv -27.011003 -562.079102 83.218529\nv -24.721895 -563.177856 83.299202\nv -22.795162 -564.831665 83.411217\nv -21.362137 -566.927856 83.546722\nv -20.520454 -569.323486 83.696571\nv -20.327463 -571.855286 83.850662\nv -20.796335 -574.350830 83.998276\nv -21.895119 -576.639954 84.129494\nv -23.548943 -578.566650 84.235390\nv -25.645069 -579.999634 84.308640\nv -28.040665 -580.841370 84.344368\nv -30.572485 -581.034302 84.340080\nv -33.067974 -580.565491 84.296097\nv -35.357086 -579.466675 84.215347\nv -37.283817 -577.812866 84.103386\nv -38.716843 -575.716736 83.967873\nv -39.553696 -573.303101 -132.807480\nv -39.746700 -570.771362 -132.486053\nv -39.277821 -568.275879 -132.177780\nv -38.179047 -565.986816 -131.903763\nv -36.525253 -564.060059 -131.682617\nv -34.429134 -562.627075 -131.529449\nv -32.033524 -561.785400 -131.454681\nv -29.501711 -561.592346 -131.463470\nv -27.006205 -562.061218 -131.555130\nv -24.717112 -563.159973 -131.723389\nv -22.790369 -564.813843 -131.956894\nv -21.357319 -566.909912 -132.239700\nv -20.515625 -569.305542 -132.552414\nv -20.322643 -571.837280 -132.873917\nv -20.791502 -574.332764 -133.182190\nv -21.890276 -576.621826 -133.456192\nv -23.544069 -578.548523 -133.677292\nv -25.640213 -579.981567 -133.830490\nv -28.035805 -580.823242 -133.905228\nv -30.567625 -581.016235 -133.896500\nv -33.063122 -580.547424 -133.804855\nv -35.352238 -579.448608 -133.636551\nv -37.278965 -577.794800 -133.403076\nv -38.712002 -575.698730 -133.120300\nv -39.702618 -571.867920 -138.414230\nv -39.881336 -569.473755 -137.555099\nv -39.398762 -567.110229 -136.731369\nv -38.287834 -564.938416 -135.999100\nv -36.624195 -563.106384 -135.408218\nv -34.521271 -561.738892 -134.999008\nv -32.122360 -560.929199 -134.799332\nv -29.590929 -560.732422 -134.822815\nv -27.099518 -561.162048 -135.067932\nv -24.817881 -562.188721 -135.517822\nv -22.901525 -563.742554 -136.141861\nv -21.481039 -565.717590 -136.897659\nv -20.653242 -567.979248 -137.733566\nv -20.474524 -570.373413 -138.592667\nv -20.957075 -572.736877 -139.416412\nv -22.068024 -574.908752 -140.148727\nv -23.731659 -576.740723 -140.739578\nv -25.834568 -578.108215 -141.148819\nv -28.233490 -578.917969 -141.348450\nv -30.764912 -579.114746 -141.324951\nv -33.256336 -578.685120 -141.079895\nv -35.537971 -577.658508 -140.630035\nv -37.454334 -576.104614 -140.005920\nv -38.874817 -574.129639 -139.250153\nv -39.996761 -569.034485 -144.533859\nv -40.156471 -566.823303 -143.279572\nv -39.655701 -564.635132 -142.076843\nv -38.528568 -562.619324 -141.007767\nv -36.851887 -560.913147 -140.145157\nv -34.739922 -559.632812 -139.547699\nv -32.336582 -558.865601 -139.256241\nv -29.805691 -558.663818 -139.290558\nv -27.319679 -559.041260 -139.648392\nv -25.047993 -559.972046 -140.305298\nv -23.145435 -561.392944 -141.216522\nv -21.741661 -563.206970 -142.319901\nv -20.932350 -565.290588 -143.540421\nv -20.772631 -567.501770 -144.794708\nv -21.273403 -569.689819 -145.997406\nv -22.400530 -571.705627 -147.066483\nv -24.077227 -573.411926 -147.929199\nv -26.189196 -574.692261 -148.526520\nv -28.592524 -575.459534 -148.818039\nv -31.123425 -575.661255 -148.783768\nv -33.609425 -575.283875 -148.425888\nv -35.881119 -574.352966 -147.768936\nv -37.783680 -572.932190 -146.857758\nv -39.187447 -571.118042 -145.754318\nv -40.416714 -564.990295 -150.547501\nv -40.554909 -562.986328 -148.984924\nv -40.033489 -560.997009 -147.486694\nv -38.888000 -559.157959 -146.154861\nv -37.196514 -557.594238 -145.080215\nv -35.074295 -556.412598 -144.335999\nv -32.665970 -555.693542 -143.972931\nv -30.135651 -555.486084 -144.015732\nv -27.655792 -555.804321 -144.461487\nv -25.395382 -556.626587 -145.279861\nv -23.508463 -557.896851 -146.415039\nv -22.123629 -559.528503 -147.789658\nv -21.335262 -561.410400 -149.310104\nv -21.197065 -563.414307 -150.872650\nv -21.718483 -565.403625 -152.370850\nv -22.863958 -567.242737 -153.702698\nv -24.555460 -568.806396 -154.777374\nv -26.677675 -569.988037 -155.521591\nv -29.085999 -570.707031 -155.884644\nv -31.616310 -570.914551 -155.841888\nv -34.096180 -570.596252 -155.396088\nv -36.356590 -569.774048 -154.577728\nv -38.243511 -568.503845 -153.442566\nv -39.628345 -566.872131 -152.067902\nv -40.962658 -559.733215 -156.473206\nv -41.076263 -557.966003 -154.643784\nv -40.531292 -556.203796 -152.889679\nv -39.364841 -554.566345 -151.330383\nv -37.656452 -553.165466 -150.072205\nv -35.522522 -552.096619 -149.200928\nv -33.108467 -551.432617 -148.775864\nv -30.578831 -551.218567 -148.826035\nv -28.105995 -551.469238 -149.347885\nv -25.858459 -552.167542 -150.306076\nv -23.989399 -553.265808 -151.635056\nv -22.626190 -554.689270 -153.244507\nv -21.861738 -556.340759 -155.024551\nv -21.748156 -558.107910 -156.853973\nv -22.293129 -559.870178 -158.608047\nv -23.459558 -561.507568 -160.167343\nv -25.167961 -562.908508 -161.425491\nv -27.301895 -563.977356 -162.296783\nv -29.715939 -564.641418 -162.721878\nv -32.245567 -564.855408 -162.671738\nv -34.718426 -564.604736 -162.149826\nv -36.965958 -563.906433 -161.191696\nv -38.835003 -562.808167 -159.862640\nv -40.198208 -561.384766 -158.253220\nv -41.608009 -553.519775 -161.681580\nv -41.692852 -552.029541 -159.619965\nv -41.120281 -550.532898 -157.643219\nv -39.929325 -549.131531 -155.886047\nv -38.201134 -547.921204 -154.468246\nv -36.053497 -546.984192 -153.486343\nv -33.632774 -546.384521 -153.007324\nv -31.103924 -546.162964 -153.063812\nv -28.639301 -546.334595 -153.651978\nv -26.406820 -546.887756 -154.731766\nv -24.558678 -547.784790 -156.229523\nv -23.220787 -548.964478 -158.043167\nv -22.484331 -550.346497 -160.049179\nv -22.399479 -551.836609 -162.110794\nv -22.972067 -553.333374 -164.087524\nv -24.163017 -554.734741 -165.844696\nv -25.891197 -555.945007 -167.262558\nv -28.038832 -556.882019 -168.244446\nv -30.459568 -557.481689 -168.723404\nv -32.988407 -557.703247 -168.666885\nv -35.453041 -557.531738 -168.078751\nv -37.685520 -556.978577 -166.999008\nv -39.533657 -556.081421 -165.501236\nv -40.871555 -554.901672 -163.687576\nv -42.355026 -546.327942 -166.186966\nv -42.401161 -545.210388 -163.891891\nv -41.791477 -544.070984 -161.691315\nv -40.567535 -542.987244 -159.735199\nv -38.812740 -542.033142 -158.156830\nv -36.646656 -541.273682 -157.063751\nv -34.216938 -540.760559 -156.530502\nv -31.689159 -540.528748 -156.593475\nv -29.235569 -540.594055 -157.248215\nv -27.023367 -540.952026 -158.450256\nv -25.203339 -541.578369 -160.117554\nv -23.899490 -542.430237 -162.136642\nv -23.200697 -543.449707 -164.369766\nv -23.154570 -544.567139 -166.664825\nv -23.764252 -545.706604 -168.865433\nv -24.988194 -546.790344 -170.821548\nv -26.742994 -547.744385 -172.399918\nv -28.909056 -548.503845 -173.492935\nv -31.338783 -549.017029 -174.026215\nv -33.866573 -549.248840 -173.963272\nv -36.320164 -549.183472 -173.308533\nv -38.532352 -548.825500 -172.106491\nv -40.352390 -548.199219 -170.439163\nv -41.656235 -547.347290 -168.420105\nv -43.155006 -538.626282 -168.997131\nv -43.148518 -538.015442 -166.517181\nv -42.488354 -537.361877 -164.139359\nv -41.219566 -536.710022 -162.025681\nv -39.428562 -536.104370 -160.320145\nv -37.237442 -535.586121 -159.139023\nv -34.795498 -535.190674 -158.562820\nv -32.269146 -534.945068 -158.630814\nv -29.830574 -534.865784 -159.338318\nv -27.645933 -534.958435 -160.637192\nv -25.864143 -535.216614 -162.438843\nv -24.606606 -535.622803 -164.620483\nv -23.959015 -536.149231 -167.033539\nv -23.965508 -536.760071 -169.513489\nv -24.625671 -537.413635 -171.891357\nv -25.894463 -538.065491 -174.005035\nv -27.685453 -538.671204 -175.710587\nv -29.876585 -539.189392 -176.891693\nv -32.318523 -539.584839 -177.467865\nv -34.844868 -539.830444 -177.399902\nv -37.283455 -539.909729 -176.692352\nv -39.468090 -539.817139 -175.393555\nv -41.249874 -539.558899 -173.591858\nv -42.507416 -539.152771 -171.410172\nv -43.999561 -530.495850 -170.081177\nv -43.947720 -530.321533 -167.543030\nv -43.244095 -530.086426 -165.109390\nv -41.936646 -529.806641 -162.946075\nv -40.114460 -529.501221 -161.200531\nv -37.901749 -529.190979 -159.991730\nv -35.449265 -528.896912 -159.401993\nv -32.924152 -528.639221 -159.471588\nv -30.498518 -528.435425 -160.195679\nv -28.337641 -528.299438 -161.525040\nv -26.588778 -528.240540 -163.368973\nv -25.371126 -528.262695 -165.601868\nv -24.767666 -528.364319 -168.071548\nv -24.819519 -528.538635 -170.609695\nv -25.523134 -528.773743 -173.043335\nv -26.830572 -529.053528 -175.206619\nv -28.652761 -529.358948 -176.952209\nv -30.865480 -529.669312 -178.161026\nv -33.317963 -529.963257 -178.750717\nv -35.843056 -530.221008 -178.681183\nv -38.268707 -530.424744 -177.957031\nv -40.429588 -530.560730 -176.627716\nv -42.178452 -530.619629 -174.783783\nv -43.396088 -530.597534 -172.550888\nv -44.839855 -522.406677 -170.083984\nv -44.753487 -522.564880 -167.545731\nv -44.016747 -522.648621 -165.111954\nv -42.679844 -522.652222 -162.948578\nv -40.833923 -522.575378 -161.202927\nv -38.604733 -522.423401 -159.994034\nv -36.144238 -522.206604 -159.404266\nv -33.620090 -521.939880 -159.473892\nv -31.204298 -521.641235 -160.198044\nv -29.061508 -521.331055 -161.527405\nv -27.337744 -521.030640 -163.371445\nv -26.150480 -520.760254 -165.604492\nv -25.580627 -520.538330 -168.074280\nv -25.667007 -520.380127 -170.612488\nv -26.403740 -520.296448 -173.046280\nv -27.740633 -520.292847 -175.209732\nv -29.586563 -520.369690 -176.955322\nv -31.815731 -520.521545 -178.164215\nv -34.276249 -520.738403 -178.753922\nv -36.800396 -521.005188 -178.684387\nv -39.216175 -521.303772 -177.960220\nv -41.358974 -521.613953 -176.630814\nv -43.082748 -521.914429 -174.786789\nv -44.270000 -522.184814 -172.553848\nv -45.683971 -514.281128 -169.006210\nv -45.553478 -514.863892 -166.524231\nv -44.774445 -515.354797 -164.144440\nv -43.399960 -515.720154 -162.029037\nv -41.523705 -515.935425 -160.322144\nv -39.273525 -515.985596 -159.140076\nv -36.802773 -515.867493 -158.563400\nv -34.279835 -515.589050 -158.631470\nv -31.876640 -515.169189 -159.339539\nv -29.756943 -514.636719 -160.639465\nv -28.065229 -514.027710 -162.442520\nv -26.916763 -513.383789 -164.626007\nv -26.389824 -512.748840 -167.041000\nv -26.520308 -512.166016 -169.522949\nv -27.299353 -511.675201 -171.902725\nv -28.673826 -511.309723 -174.018143\nv -30.550102 -511.094574 -175.725082\nv -32.800274 -511.044342 -176.907120\nv -35.271019 -511.162445 -177.483780\nv -37.793968 -511.440887 -177.415741\nv -40.197166 -511.860687 -176.707626\nv -42.316841 -512.393188 -175.407745\nv -44.008572 -513.002258 -173.604675\nv -45.157032 -513.646179 -171.421188\nv -46.508434 -506.346130 -166.202133\nv -46.328667 -507.403076 -163.887726\nv -45.502396 -508.348572 -161.668610\nv -44.085941 -509.118164 -159.696014\nv -42.175781 -509.659393 -158.104355\nv -39.902145 -509.935394 -157.002075\nv -37.419949 -509.927460 -156.464355\nv -34.898373 -509.635925 -156.527756\nv -32.509224 -509.080780 -157.188034\nv -30.415358 -508.299866 -158.400146\nv -28.759434 -507.346375 -160.081512\nv -27.654314 -506.285278 -162.117569\nv -27.175312 -505.188873 -164.369492\nv -27.355068 -504.131989 -166.683899\nv -28.181339 -503.186493 -168.903030\nv -29.597809 -502.416840 -170.875641\nv -31.507954 -501.875641 -172.467316\nv -33.781586 -501.599609 -173.569595\nv -36.263786 -501.607635 -174.107300\nv -38.785362 -501.899139 -174.043884\nv -41.174511 -502.454254 -173.383606\nv -43.268391 -503.235138 -172.171478\nv -44.924316 -504.188660 -170.490097\nv -46.029434 -505.249695 -168.454071\nv -47.309319 -498.639343 -161.682785\nv -47.085072 -500.124359 -159.619431\nv -46.216156 -501.480316 -157.640961\nv -44.761768 -502.614716 -155.882294\nv -42.821037 -503.450409 -154.463272\nv -40.526207 -503.930298 -153.480560\nv -38.033684 -504.021729 -153.001129\nv -35.513317 -503.718414 -153.057617\nv -33.136868 -503.041229 -153.646317\nv -31.066292 -502.036102 -154.726959\nv -29.442680 -500.771576 -156.225937\nv -28.376717 -499.333862 -158.041122\nv -27.940994 -497.820923 -160.048813\nv -28.165239 -496.335907 -162.112198\nv -29.034166 -494.979980 -164.090622\nv -30.488550 -493.845551 -165.849243\nv -32.429287 -493.009888 -167.268265\nv -34.724106 -492.529968 -168.251038\nv -37.216652 -492.438538 -168.730423\nv -39.737003 -492.741791 -168.673920\nv -42.113453 -493.419037 -168.085236\nv -44.184032 -494.424194 -167.004654\nv -45.807644 -495.688690 -165.505630\nv -46.873604 -497.126434 -163.690475\nv -47.919228 -492.770782 -156.409546\nv -47.650288 -494.685760 -154.732529\nv -46.738525 -496.453949 -153.124527\nv -45.246044 -497.954865 -151.695160\nv -43.274590 -499.086243 -150.541840\nv -40.958469 -499.770905 -149.743103\nv -38.455563 -499.962219 -149.353409\nv -35.936428 -499.647186 -149.399368\nv -33.572727 -498.847260 -149.877777\nv -31.525549 -497.616943 -150.756088\nv -29.934418 -496.040100 -151.974411\nv -28.907736 -494.224060 -153.449677\nv -28.515516 -492.292786 -155.081482\nv -28.784443 -490.377808 -156.758484\nv -29.696215 -488.609619 -158.366486\nv -31.188673 -487.108673 -159.795898\nv -33.160152 -485.977325 -160.949188\nv -35.476261 -485.292633 -161.747955\nv -37.979160 -485.101318 -162.137589\nv -40.498302 -485.416321 -162.091644\nv -42.861996 -486.216278 -161.613251\nv -44.909172 -487.446594 -160.734909\nv -46.500324 -489.023499 -159.516632\nv -47.526993 -490.839478 -158.041306\nv -48.332119 -488.798035 -150.418060\nv -48.033424 -490.999420 -149.172913\nv -47.093113 -493.042206 -147.979126\nv -45.575268 -494.787262 -146.917831\nv -43.583344 -496.115540 -146.061508\nv -41.253063 -496.936615 -145.468475\nv -38.743217 -497.194458 -145.179169\nv -36.224892 -496.871582 -145.213257\nv -33.869690 -495.989929 -145.568481\nv -31.838106 -494.609589 -146.220566\nv -30.268595 -492.824677 -147.125092\nv -29.268105 -490.756805 -148.220459\nv -28.904829 -488.546814 -149.431992\nv -29.203531 -486.345428 -150.677124\nv -30.143839 -484.302643 -151.870987\nv -31.661686 -482.557587 -152.932220\nv -33.653622 -481.229279 -153.788544\nv -35.983898 -480.408295 -154.381577\nv -38.493725 -480.150330 -154.670868\nv -41.012051 -480.473297 -154.636795\nv -43.367249 -481.354889 -154.281555\nv -45.398846 -482.735229 -153.629486\nv -46.968369 -484.520172 -152.724930\nv -47.968838 -486.588104 -151.629608\nv -48.621807 -486.010925 -144.373932\nv -48.304943 -488.387054 -143.507751\nv -47.347221 -490.597412 -142.677231\nv -45.813900 -492.491425 -141.939011\nv -43.809467 -493.939880 -141.343323\nv -41.470528 -494.844238 -140.930771\nv -38.956482 -495.142670 -140.729507\nv -36.438660 -494.814941 -140.753204\nv -34.088634 -493.883514 -141.000336\nv -32.066559 -492.411621 -141.453934\nv -30.510241 -490.499756 -142.083191\nv -29.525728 -488.278076 -142.845123\nv -29.180141 -485.898071 -143.687927\nv -29.497005 -483.521942 -144.554031\nv -30.454718 -481.311615 -145.384583\nv -31.988047 -479.417633 -146.122833\nv -33.992466 -477.969177 -146.718536\nv -36.331409 -477.064911 -147.131088\nv -38.845448 -476.766388 -147.332306\nv -41.363277 -477.094055 -147.308594\nv -43.713295 -478.025543 -147.061508\nv -45.735382 -479.497406 -146.607895\nv -47.291710 -481.409332 -145.978653\nv -48.276199 -483.630951 -145.216705\nv -48.789333 -484.399231 -138.272690\nv -48.463226 -486.864471 -137.743774\nv -47.496620 -489.160217 -137.236572\nv -45.955410 -491.130096 -136.785706\nv -43.944607 -492.639862 -136.421921\nv -41.601269 -493.586609 -136.169968\nv -39.085072 -493.905731 -136.047043\nv -36.567497 -493.575592 -136.061462\nv -34.220104 -492.618713 -136.212372\nv -32.202877 -491.100220 -136.489395\nv -30.653292 -489.123566 -136.873657\nv -29.676918 -486.823578 -137.338943\nv -29.340345 -484.356934 -137.853638\nv -29.666473 -481.891693 -138.382584\nv -30.633068 -479.595978 -138.889771\nv -32.174282 -477.626038 -139.340607\nv -34.185081 -476.116302 -139.704437\nv -36.528423 -475.169586 -139.956375\nv -39.044617 -474.850403 -140.079285\nv -41.562199 -475.180542 -140.064835\nv -43.909569 -476.137482 -139.913971\nv -45.926800 -477.655975 -139.636963\nv -47.476395 -479.632568 -139.252701\nv -48.452755 -481.932587 -138.787415\nv -48.873436 -483.590851 -133.227707\nv -48.541893 -486.108368 -133.024887\nv -47.570068 -488.454224 -132.830383\nv -46.024212 -490.468658 -132.657455\nv -44.009678 -492.014313 -132.517914\nv -41.663742 -492.985901 -132.421249\nv -39.146286 -493.317200 -132.374054\nv -36.628864 -492.985687 -132.379517\nv -34.283035 -492.013824 -132.437347\nv -32.268654 -490.467987 -132.543549\nv -30.723017 -488.453339 -132.690842\nv -29.751436 -486.107391 -132.869293\nv -29.420141 -483.589935 -133.066650\nv -29.751698 -481.072388 -133.269440\nv -30.723509 -478.726532 -133.463974\nv -32.269360 -476.712097 -133.636871\nv -34.283897 -475.166412 -133.776443\nv -36.629826 -474.194824 -133.873077\nv -39.147282 -473.863525 -133.920288\nv -41.664719 -474.195068 -133.914810\nv -44.010532 -475.166931 -133.856979\nv -46.024925 -476.712738 -133.750778\nv -47.570564 -478.727356 -133.603485\nv -48.542145 -481.073334 -133.425034\nv -48.874256 -483.638733 48.848919\nv -48.542690 -486.156189 48.848255\nv -47.570881 -488.502045 48.847702\nv -46.025036 -490.516418 48.847195\nv -44.010494 -492.062073 48.846806\nv -41.664558 -493.033630 48.846561\nv -39.147102 -493.364960 48.846519\nv -36.629669 -493.033356 48.846600\nv -34.283833 -492.061554 48.846863\nv -32.269463 -490.515686 48.847282\nv -30.723820 -488.501190 48.847763\nv -29.752243 -486.155243 48.848385\nv -29.420944 -483.637787 48.848988\nv -29.752508 -481.120331 48.849651\nv -30.724319 -478.774506 48.850220\nv -32.270168 -476.760132 48.850746\nv -34.284706 -475.214508 48.851135\nv -36.630638 -474.242889 48.851376\nv -39.148098 -473.911621 48.851433\nv -41.665527 -474.243164 48.851307\nv -44.011368 -475.214966 48.851078\nv -46.025726 -476.760834 48.850628\nv -47.571384 -478.775360 48.850143\nv -48.542957 -481.121338 48.849567\nv -48.874268 -483.639404 51.270885\nv -48.542702 -486.156708 50.721226\nv -47.570881 -488.502441 50.194244\nv -46.025024 -490.516632 49.725811\nv -44.010494 -492.062256 49.347889\nv -41.664555 -493.033722 49.086155\nv -39.147087 -493.364990 48.958519\nv -36.629665 -493.033447 48.973705\nv -34.283840 -492.061676 49.130569\nv -32.269470 -490.515869 49.418526\nv -30.723833 -488.501434 49.817886\nv -29.752249 -486.155609 50.301434\nv -29.420946 -483.638336 50.836308\nv -29.752523 -481.121002 51.385952\nv -30.724340 -478.775299 51.912918\nv -32.270187 -476.761047 52.381371\nv -34.284733 -475.215485 52.759323\nv -36.630669 -474.243988 53.021038\nv -39.148117 -473.912781 53.148705\nv -41.665539 -474.244263 53.133488\nv -44.011375 -475.216064 52.976658\nv -46.025761 -476.761810 52.688656\nv -47.571392 -478.776245 52.289291\nv -48.542965 -481.122070 51.805714\nv -48.677486 -485.534393 55.466019\nv -48.376766 -487.754578 54.258568\nv -47.434544 -489.815369 53.100849\nv -45.914978 -491.576355 52.071743\nv -43.921661 -492.917603 51.241428\nv -41.590427 -493.747620 50.666447\nv -39.080128 -494.009796 50.385967\nv -36.561867 -493.686432 50.419189\nv -34.207226 -492.799408 50.763733\nv -32.176693 -491.409302 51.396202\nv -30.608631 -489.610687 52.273457\nv -29.609926 -487.526215 53.335693\nv -29.248606 -485.298004 54.510597\nv -29.549303 -483.077881 55.718063\nv -30.491541 -481.017059 56.875755\nv -32.011101 -479.256042 57.904842\nv -34.004425 -477.914886 58.735222\nv -36.335655 -477.084839 59.310139\nv -38.845947 -476.822571 59.590591\nv -41.364216 -477.145966 59.557461\nv -43.718861 -478.032990 59.212902\nv -45.749393 -479.423187 58.580433\nv -47.317444 -481.221802 57.703178\nv -48.316170 -483.306152 56.640926\nv -48.297581 -489.192230 61.296062\nv -48.024071 -491.150360 59.671009\nv -47.107937 -492.959930 58.112835\nv -45.611580 -494.497650 56.727791\nv -43.636967 -495.658661 55.610302\nv -41.318691 -496.363892 54.836407\nv -38.814720 -496.565216 54.458908\nv -36.295700 -496.249054 54.503563\nv -33.933304 -495.436829 54.967278\nv -31.888523 -494.183868 55.818497\nv -30.300697 -492.575623 56.999172\nv -29.278034 -490.721771 58.428841\nv -28.890242 -488.748474 60.010120\nv -29.163734 -486.790283 61.635174\nv -30.079870 -484.980713 63.193363\nv -31.576229 -483.443054 64.578362\nv -33.550831 -482.282043 65.695892\nv -35.869114 -481.576843 66.469757\nv -38.373085 -481.375488 66.847260\nv -40.892101 -481.691681 66.802605\nv -43.254505 -482.503937 66.338890\nv -45.299286 -483.756836 65.487671\nv -46.887115 -485.365021 64.306992\nv -47.909775 -487.218964 62.877312\nv -47.773743 -494.235535 66.086159\nv -47.546738 -495.746185 64.036011\nv -46.675163 -497.126648 62.070351\nv -45.218414 -498.282959 60.322998\nv -43.275772 -499.136200 58.913155\nv -40.979630 -499.628326 57.936878\nv -38.486465 -499.725708 57.460659\nv -35.966171 -499.421753 57.516968\nv -33.590508 -498.737244 58.102036\nv -31.521364 -497.718689 59.175838\nv -29.899763 -496.435608 60.665337\nv -28.836205 -494.975464 62.468967\nv -28.403179 -493.437592 64.463867\nv -28.630192 -491.927032 66.514000\nv -29.501776 -490.546539 68.479706\nv -30.958513 -489.390289 70.227013\nv -32.901154 -488.537018 71.636864\nv -35.197296 -488.044952 72.613182\nv -37.690464 -487.947510 73.089371\nv -40.210758 -488.251465 73.033073\nv -42.586430 -488.935974 72.448051\nv -44.655563 -489.954468 71.374191\nv -46.277157 -491.237579 69.884689\nv -47.340721 -492.697784 68.081032\nv -47.110451 -500.621429 69.785492\nv -46.937897 -501.607758 67.431580\nv -46.118542 -502.485443 65.174644\nv -44.708221 -503.194824 63.168411\nv -42.803032 -503.687469 61.549671\nv -40.532825 -503.929871 60.428745\nv -38.052307 -503.905487 59.881950\nv -35.530510 -503.615936 59.946606\nv -33.139320 -503.081024 60.618301\nv -31.041655 -502.337158 61.851265\nv -29.380486 -501.435028 63.561405\nv -28.269020 -500.436127 65.632286\nv -27.782997 -499.408508 67.922729\nv -27.955549 -498.422211 70.276657\nv -28.774904 -497.544495 72.533562\nv -30.185226 -496.835083 74.539780\nv -32.090416 -496.342438 76.158501\nv -34.360626 -496.100006 77.279434\nv -36.841152 -496.124451 77.826225\nv -39.362923 -496.413971 77.761581\nv -41.754139 -496.948914 77.089905\nv -43.851807 -497.692810 75.856941\nv -45.512962 -498.594940 74.146782\nv -46.624428 -499.593811 72.075920\nv -46.463760 -506.846924 71.584290\nv -46.360466 -507.166504 69.037735\nv -45.607498 -507.405151 66.596153\nv -44.256195 -507.546356 64.425743\nv -42.398640 -507.580566 62.674561\nv -40.161415 -507.505524 61.461864\nv -37.696953 -507.326263 60.870346\nv -35.173279 -507.055054 60.940296\nv -32.762329 -506.710297 61.666939\nv -30.628384 -506.315552 63.000751\nv -28.916904 -505.897705 64.850861\nv -27.744526 -505.485229 67.091217\nv -27.191130 -505.106232 69.569046\nv -27.294432 -504.786591 72.115555\nv -28.047392 -504.547974 74.557182\nv -29.398705 -504.406769 76.727562\nv -31.256262 -504.372498 78.478760\nv -33.493500 -504.447571 79.691490\nv -35.957935 -504.626892 80.283005\nv -38.481632 -504.898071 80.213051\nv -40.892586 -505.242889 79.486412\nv -43.026508 -505.637634 78.152573\nv -44.737991 -506.055420 76.302429\nv -45.910366 -506.467896 74.062103\nv -45.836891 -512.881104 71.443619\nv -45.809544 -512.469666 68.914108\nv -45.129417 -512.007202 66.488831\nv -43.842834 -511.525330 64.332954\nv -42.037506 -511.056793 62.593498\nv -39.836445 -510.633514 61.388935\nv -37.389664 -510.284363 60.801338\nv -34.863884 -510.033142 60.870789\nv -32.431259 -509.897034 61.592590\nv -30.257544 -509.885254 62.917507\nv -28.490885 -509.998566 64.755280\nv -27.251682 -510.229279 66.980576\nv -26.624390 -510.561707 69.441864\nv -26.651733 -510.973145 71.971344\nv -27.331873 -511.435577 74.396652\nv -28.618437 -511.917450 76.552498\nv -30.423769 -512.386047 78.291969\nv -32.624828 -512.809265 79.496567\nv -35.071621 -513.158386 80.084068\nv -37.597389 -513.409546 80.014603\nv -40.030033 -513.545776 79.292847\nv -42.203735 -513.557556 77.967949\nv -43.970387 -513.444275 76.130188\nv -45.209591 -513.213501 73.904846\nv -45.204220 -518.970581 69.580215\nv -45.239822 -517.953186 67.236176\nv -44.620056 -516.909668 64.988632\nv -43.387138 -515.911316 62.990818\nv -41.625111 -515.026062 61.378849\nv -39.454033 -514.314087 60.262634\nv -37.021873 -513.824219 59.718143\nv -34.494366 -513.589722 59.782539\nv -32.043781 -513.626465 60.451382\nv -29.837088 -513.932007 61.679207\nv -28.024693 -514.485596 63.382229\nv -26.730099 -515.249451 65.444443\nv -26.041538 -516.171509 67.725250\nv -26.005938 -517.188843 70.069305\nv -26.625692 -518.232361 72.316818\nv -27.858601 -519.230774 74.314651\nv -29.620638 -520.116089 75.926590\nv -31.791710 -520.827881 77.042847\nv -34.223877 -521.317871 77.587341\nv -36.751373 -521.552368 77.522942\nv -39.201981 -521.515625 76.854057\nv -41.408661 -521.210083 75.626289\nv -43.221062 -520.656433 73.923256\nv -44.515652 -519.892639 71.861076\nv -44.563332 -525.138367 66.010712\nv -44.654968 -523.581909 63.978607\nv -44.088917 -522.021484 62.030273\nv -42.903736 -520.563538 60.298355\nv -41.180233 -519.307495 58.901001\nv -39.035835 -518.338989 57.933331\nv -36.616699 -517.723816 57.461319\nv -34.087662 -517.503967 57.517124\nv -31.621063 -517.694519 58.097038\nv -29.385044 -518.282532 59.161396\nv -27.531961 -519.227783 60.637718\nv -26.188084 -520.465942 62.425472\nv -25.445009 -521.912537 64.402756\nv -25.353380 -523.469055 66.434792\nv -25.919432 -525.029419 68.383110\nv -27.104589 -526.487366 70.115059\nv -28.828110 -527.743469 71.512444\nv -30.972506 -528.712097 72.480125\nv -33.391655 -529.327148 72.952095\nv -35.920685 -529.546936 72.896225\nv -38.387264 -529.356384 72.316406\nv -40.623299 -528.768433 71.252045\nv -42.476379 -527.823181 69.775635\nv -43.820259 -526.585083 67.987968\nv -44.072647 -529.860229 61.260208\nv -44.215145 -527.814087 59.720699\nv -43.697876 -525.784180 58.244656\nv -42.556080 -523.909058 56.932568\nv -40.867565 -522.316284 55.873940\nv -38.747387 -521.114502 55.140842\nv -36.340069 -520.385559 54.783283\nv -33.809628 -520.179321 54.825588\nv -31.328543 -520.509583 55.264908\nv -29.065863 -521.353943 56.071289\nv -27.175814 -522.654846 57.189808\nv -25.787169 -524.323730 58.544197\nv -24.994596 -526.246826 60.042130\nv -24.852079 -528.292908 61.581638\nv -25.369350 -530.322754 63.057728\nv -26.511137 -532.197937 64.369789\nv -28.199673 -533.790771 65.428429\nv -30.319826 -534.992493 66.161507\nv -32.727150 -535.721436 66.519066\nv -35.257595 -535.927734 66.476746\nv -37.738689 -535.597473 66.037445\nv -40.001377 -534.753052 65.231049\nv -41.891426 -533.452087 64.112564\nv -43.280060 -531.783264 62.758171\nv -43.735069 -533.107788 55.328743\nv -43.916588 -530.686401 54.474598\nv -43.436687 -528.296936 53.655323\nv -42.328106 -526.102295 52.926743\nv -40.666351 -524.251953 52.338501\nv -38.564701 -522.872070 51.930702\nv -36.166378 -522.056702 51.731136\nv -33.634804 -521.861328 51.753342\nv -31.142490 -522.299377 51.995930\nv -28.859329 -523.340881 52.442234\nv -26.940886 -524.914856 53.061943\nv -25.517899 -526.914185 53.812775\nv -24.687349 -529.202576 54.643532\nv -24.505823 -531.623962 55.497692\nv -24.985731 -534.013428 56.316956\nv -26.094316 -536.208069 57.045563\nv -27.756073 -538.058411 57.633778\nv -29.857710 -539.438293 58.041573\nv -32.256042 -540.253662 58.241142\nv -34.787628 -540.449036 58.218903\nv -37.279930 -540.010925 57.976360\nv -39.563091 -538.969482 57.530041\nv -41.481541 -537.395386 56.910347\nv -42.904522 -535.396118 56.159546\nv -43.579750 -534.699951 46.201019\nv -43.772045 -532.168030 45.980583\nv -43.302483 -529.672668 45.768330\nv -42.203056 -527.383911 45.578770\nv -40.548714 -525.457947 45.424774\nv -38.452156 -524.025696 45.316875\nv -36.056301 -523.184998 45.262386\nv -33.524380 -522.993103 45.265125\nv -31.028975 -523.463013 45.324715\nv -28.740131 -524.562805 45.437233\nv -26.813828 -526.217346 45.595058\nv -25.381323 -528.314209 45.787266\nv -24.540281 -530.710144 46.000912\nv -24.347986 -533.242126 46.221359\nv -24.817541 -535.737427 46.433613\nv -25.916956 -538.026123 46.623173\nv -27.571308 -539.952209 46.777138\nv -29.667866 -541.384399 46.885036\nv -32.063732 -542.225098 46.939526\nv -34.595642 -542.416992 46.936863\nv -37.091045 -541.947144 46.877213\nv -39.379898 -540.847351 46.764679\nv -41.306206 -539.192749 46.606884\nv -42.738701 -537.095886 46.414661\nv -43.601143 -534.698486 42.927593\nv -43.793098 -532.166565 42.916008\nv -43.323139 -529.671204 42.945408\nv -42.223293 -527.382568 43.013935\nv -40.568512 -525.456543 43.116852\nv -38.471573 -524.024414 43.247112\nv -36.075352 -523.183655 43.395840\nv -33.543194 -522.991821 43.553013\nv -31.047634 -523.461792 43.707741\nv -28.758741 -524.561523 43.849663\nv -26.832495 -526.216125 43.968945\nv -25.400179 -528.312927 44.057590\nv -24.559385 -530.708862 44.109463\nv -24.367430 -533.240784 44.121063\nv -24.837400 -535.736023 44.091602\nv -25.937235 -538.024719 44.023106\nv -27.592022 -539.950806 43.920219\nv -29.688963 -541.382935 43.789989\nv -32.085175 -542.223633 43.641171\nv -34.617340 -542.415527 43.484043\nv -37.112892 -541.945557 43.329269\nv -39.401787 -540.845764 43.187439\nv -41.328053 -539.191162 43.068066\nv -42.760357 -537.094421 42.979435\nv -42.303013 -534.697388 32.644302\nv -42.488796 -532.165588 32.583874\nv -42.033798 -529.670227 32.731895\nv -40.969036 -527.381592 33.078392\nv -39.367065 -525.455627 33.599628\nv -37.337067 -524.023499 34.260220\nv -35.017361 -523.182861 35.015026\nv -32.566059 -522.991028 35.812649\nv -30.150188 -523.461060 36.598755\nv -27.934410 -524.560852 37.319805\nv -26.069687 -526.215515 37.926559\nv -24.683149 -528.312317 38.377739\nv -23.869261 -530.708313 38.642544\nv -23.683468 -533.240173 38.702976\nv -24.138474 -535.735535 38.554955\nv -25.203224 -538.024170 38.208473\nv -26.805210 -539.950134 37.687222\nv -28.835197 -541.382263 37.026646\nv -31.154911 -542.222839 36.271839\nv -33.606220 -542.414734 35.474197\nv -36.022087 -541.944702 34.688126\nv -38.237873 -540.844910 33.967072\nv -40.102577 -539.190247 33.360321\nv -41.489113 -537.093445 32.909172\nv -38.621368 -534.698059 25.962393\nv -38.773296 -532.166138 25.840502\nv -38.400803 -529.670837 26.138287\nv -37.529255 -527.382141 26.835453\nv -36.218060 -525.456177 27.884455\nv -34.556572 -524.023987 29.213873\nv -32.658009 -523.183350 30.733028\nv -30.651768 -522.991394 32.338490\nv -28.674576 -523.461365 33.920662\nv -26.861147 -524.561035 35.371929\nv -25.335091 -526.215698 36.593296\nv -24.200386 -528.312378 37.501499\nv -23.534363 -530.708374 38.034752\nv -23.382435 -533.240295 38.156612\nv -23.754925 -535.735596 37.858795\nv -24.626474 -538.024231 37.161674\nv -25.937668 -539.950317 36.112659\nv -27.599157 -541.382446 34.783226\nv -29.497713 -542.223145 33.264103\nv -31.503962 -542.415039 31.658733\nv -33.481163 -541.945129 30.076481\nv -35.294582 -540.845337 28.625200\nv -36.820641 -539.190796 27.403831\nv -37.955345 -537.094055 26.495600\nv -33.148811 -534.698669 21.117262\nv -33.254288 -532.166687 20.954294\nv -32.995571 -529.671387 21.352861\nv -32.390297 -527.382751 22.285769\nv -31.479702 -525.456604 23.689465\nv -30.325865 -524.024414 25.468304\nv -29.007393 -523.183655 27.501022\nv -27.614161 -522.991699 29.649160\nv -26.241098 -523.461609 31.766262\nv -24.981792 -524.561279 33.708084\nv -23.922028 -526.215881 35.342281\nv -23.134083 -528.312561 36.557468\nv -22.671597 -530.708496 37.270889\nv -22.566135 -533.240295 37.433899\nv -22.824854 -535.735718 37.035351\nv -23.430128 -538.024353 36.102455\nv -24.340710 -539.950439 34.698792\nv -25.494558 -541.382629 32.919952\nv -26.813011 -542.223389 30.887203\nv -28.206251 -542.415405 28.739035\nv -29.579321 -541.945557 26.621964\nv -30.838629 -540.845886 24.680159\nv -31.898384 -539.191284 23.045914\nv -32.686344 -537.094604 21.830683\nv -26.597809 -534.699097 18.143801\nv -26.658459 -532.167175 17.960449\nv -26.509523 -529.671875 18.408863\nv -26.161169 -527.383179 19.458403\nv -25.637131 -525.457031 21.037579\nv -24.973110 -524.024841 23.038712\nv -24.214354 -523.184021 25.325459\nv -23.412609 -522.991943 27.742060\nv -22.622465 -523.461792 30.123810\nv -21.897799 -524.561462 32.308277\nv -21.287989 -526.216003 34.146717\nv -20.834583 -528.312683 35.513794\nv -20.568491 -530.708618 36.316322\nv -20.507849 -533.240540 36.499645\nv -20.656788 -535.735840 36.051262\nv -21.005148 -538.024536 35.001751\nv -21.529198 -539.950623 33.422592\nv -22.193207 -541.382874 31.421413\nv -22.951954 -542.223694 29.134621\nv -23.753719 -542.415710 26.718002\nv -24.543854 -541.945862 24.336330\nv -25.268513 -540.846191 22.151833\nv -25.878323 -539.191650 20.313375\nv -26.331715 -537.095032 18.946329\nv -19.733412 -534.699402 16.647736\nv -19.757988 -532.167542 16.456512\nv -19.697382 -529.672180 16.924194\nv -19.555731 -527.383484 18.018757\nv -19.342676 -525.457397 19.665689\nv -19.072727 -524.025085 21.752764\nv -18.764305 -523.184326 24.137690\nv -18.438410 -522.992249 26.658009\nv -18.117262 -523.462036 29.141918\nv -17.822742 -524.561646 31.420170\nv -17.574926 -526.216187 33.337460\nv -17.390684 -528.312866 34.763184\nv -17.282600 -530.708801 35.600163\nv -17.258013 -533.240662 35.791370\nv -17.318617 -535.736023 35.323719\nv -17.460279 -538.024719 34.229141\nv -17.673344 -539.950867 32.582237\nv -17.943274 -541.383118 30.495165\nv -18.251709 -542.223999 28.110237\nv -18.577591 -542.416016 25.589905\nv -18.898752 -541.946167 23.105978\nv -19.193268 -540.846619 20.827742\nv -19.441095 -539.192078 18.910378\nv -19.625317 -537.095398 17.484713\nv -13.090174 -534.699646 16.364614\nv -13.098232 -532.167786 16.172720\nv -13.078105 -529.672424 16.642082\nv -13.031163 -527.383728 17.740700\nv -12.960630 -525.457581 19.393732\nv -12.871291 -524.025391 21.488447\nv -12.769238 -523.184509 23.882217\nv -12.661424 -522.992493 26.411806\nv -12.555214 -523.462280 28.904852\nv -12.457816 -524.561951 31.191490\nv -12.375900 -526.216492 33.115932\nv -12.315018 -528.313110 34.546886\nv -12.279344 -530.708984 35.386944\nv -12.271286 -533.240906 35.578838\nv -12.291411 -535.736267 35.109447\nv -12.338352 -538.024963 34.010845\nv -12.408888 -539.951111 32.357857\nv -12.498228 -541.383362 30.263100\nv -12.600281 -542.224182 27.869389\nv -12.708094 -542.416199 25.339785\nv -12.814303 -541.946472 22.846708\nv -12.911701 -540.846863 20.560055\nv -12.993617 -539.192322 18.635675\nv -13.054489 -537.095642 17.204643\nv 54.166176 -382.918518 -204.767105\nv 53.316608 -385.306885 -204.593170\nv 51.876694 -387.393982 -204.431168\nv 49.944641 -389.037354 -204.291992\nv 47.652054 -390.125244 -204.185272\nv 45.155186 -390.583344 -204.118134\nv 42.624210 -390.380615 -204.095306\nv 40.231606 -389.530701 -204.118210\nv 38.140427 -388.091492 -204.185394\nv 36.493168 -386.161255 -204.292191\nv 35.402088 -383.871399 -204.431396\nv 34.941544 -381.378052 -204.593445\nv 35.142944 -378.851044 -204.767380\nv 35.992542 -376.462646 -204.941330\nv 37.432449 -374.375610 -205.103348\nv 39.364506 -372.732147 -205.242493\nv 41.657104 -371.644287 -205.349243\nv 44.153950 -371.186157 -205.416351\nv 46.684917 -371.388977 -205.439240\nv 49.077522 -372.238861 -205.416275\nv 51.168728 -373.678040 -205.349106\nv 52.815987 -375.608307 -205.242310\nv 53.907051 -377.898102 -205.103134\nv 54.367577 -380.391510 -204.941055\nv 53.956657 -383.899139 -214.091690\nv 53.112526 -386.261993 -213.674484\nv 51.677910 -388.324341 -213.277771\nv 49.750561 -389.945679 -212.928528\nv 47.461823 -391.015564 -212.650620\nv 44.967659 -391.461029 -212.462982\nv 42.438076 -391.251709 -212.378372\nv 40.045444 -390.401917 -212.402573\nv 37.952808 -388.969543 -212.533859\nv 36.302795 -387.052155 -212.763412\nv 35.207825 -384.780518 -213.075577\nv 34.742558 -382.309326 -213.448959\nv 34.938656 -379.807068 -213.858200\nv 35.782791 -377.444275 -214.275406\nv 37.217411 -375.381927 -214.672134\nv 39.144768 -373.760590 -215.021439\nv 41.433502 -372.690735 -215.299301\nv 43.927639 -372.245239 -215.486969\nv 46.457241 -372.454559 -215.571579\nv 48.849876 -373.304321 -215.547363\nv 50.942486 -374.736694 -215.416061\nv 52.592537 -376.654083 -215.186508\nv 53.687485 -378.925751 -214.874359\nv 54.152752 -381.396881 -214.500977\nv 53.296093 -385.895752 -223.347260\nv 52.473549 -388.193329 -222.627563\nv 51.060131 -390.191528 -221.933594\nv 49.152168 -391.754272 -221.312561\nv 46.879700 -392.774963 -220.806808\nv 44.397572 -393.184113 -220.450790\nv 41.874916 -392.953796 -220.268768\nv 39.483711 -392.099731 -220.273193\nv 37.386848 -390.680145 -220.463669\nv 35.727272 -388.791656 -220.827301\nv 34.618046 -386.563110 -221.339264\nv 34.134762 -384.146362 -221.964722\nv 34.310387 -381.706024 -222.660995\nv 35.132935 -379.408386 -223.380600\nv 36.546356 -377.410217 -224.074600\nv 38.454311 -375.847473 -224.695648\nv 40.726784 -374.826813 -225.201447\nv 43.208908 -374.417633 -225.557404\nv 45.731552 -374.647919 -225.739395\nv 48.122768 -375.502014 -225.735031\nv 50.219627 -376.921600 -225.544495\nv 51.879230 -378.810028 -225.180893\nv 52.988422 -381.038605 -224.668930\nv 53.471695 -383.455414 -224.043518\nv 52.187378 -388.946594 -232.234772\nv 51.404724 -391.134399 -231.195358\nv 50.028526 -393.030243 -230.203003\nv 48.152603 -394.504852 -229.325333\nv 45.904732 -395.457825 -228.622147\nv 43.438183 -395.824097 -228.141373\nv 40.920982 -395.578857 -227.915756\nv 38.524700 -394.738708 -227.960648\nv 36.412636 -393.360870 -228.273056\nv 34.728733 -391.539368 -228.831650\nv 33.587734 -389.398315 -229.598358\nv 33.067394 -387.083496 -230.520981\nv 33.203178 -384.752777 -231.536591\nv 33.985844 -382.564972 -232.575989\nv 35.362034 -380.669128 -233.568314\nv 37.237984 -379.194580 -234.446014\nv 39.485821 -378.241608 -235.149200\nv 41.952377 -377.875305 -235.629990\nv 44.469582 -378.120544 -235.855621\nv 46.865856 -378.960785 -235.810684\nv 48.977917 -380.338531 -235.498322\nv 50.661846 -382.160004 -234.939682\nv 51.802845 -384.301117 -234.173004\nv 52.323170 -386.615906 -233.250366\nv 51.067192 -393.143890 -240.329285\nv 50.328014 -395.168823 -238.975708\nv 48.990528 -396.919525 -237.703552\nv 47.145924 -398.276764 -236.599426\nv 44.919884 -399.147980 -235.738693\nv 42.464111 -399.473846 -235.179855\nv 39.945980 -399.232117 -234.961136\nv 37.537052 -398.439331 -235.097366\nv 35.401546 -397.149445 -235.579300\nv 33.684948 -395.450409 -236.374054\nv 32.504261 -393.457977 -237.427490\nv 31.939951 -391.307953 -238.667831\nv 32.030472 -389.146851 -240.010559\nv 32.769650 -387.121948 -241.364120\nv 34.107113 -385.371185 -242.636276\nv 35.951721 -384.013947 -243.740387\nv 38.177765 -383.142700 -244.601181\nv 40.633545 -382.816895 -245.159973\nv 43.151684 -383.058594 -245.378693\nv 45.560604 -383.851379 -245.242447\nv 47.696129 -385.141296 -244.760544\nv 49.412720 -386.840332 -243.965775\nv 50.593403 -388.832733 -242.912354\nv 51.157722 -390.982788 -241.672012\nv 49.894562 -398.628784 -247.936279\nv 49.197273 -400.457672 -246.310806\nv 47.898029 -402.029633 -244.790726\nv 46.085339 -403.237579 -243.479630\nv 43.882729 -403.999146 -242.466766\nv 41.440327 -404.262543 -241.821259\nv 38.924580 -404.009583 -241.587021\nv 36.506893 -403.257782 -241.780090\nv 34.352062 -402.058258 -242.387314\nv 32.606930 -400.492676 -243.367249\nv 31.390427 -398.667847 -244.653076\nv 30.785440 -396.708038 -246.157333\nv 30.833214 -394.746918 -247.777328\nv 31.530478 -392.918030 -249.402771\nv 32.829727 -391.346039 -250.922821\nv 34.642429 -390.138092 -252.233994\nv 36.845020 -389.376556 -253.246841\nv 39.287437 -389.113190 -253.892334\nv 41.803181 -389.366058 -254.126541\nv 44.220860 -390.117859 -253.933502\nv 46.375687 -391.317444 -253.326294\nv 48.120827 -392.883026 -252.346405\nv 49.337334 -394.707825 -251.060532\nv 49.942322 -396.667603 -249.556274\nv 48.543159 -404.949646 -254.704361\nv 47.892864 -406.558777 -252.843613\nv 46.637539 -407.925323 -251.103531\nv 44.862747 -408.956024 -249.602615\nv 42.689407 -409.580627 -248.443085\nv 40.265678 -409.756775 -247.704239\nv 37.756664 -409.472229 -247.436111\nv 35.333424 -408.746490 -247.657059\nv 33.161045 -407.628998 -248.352188\nv 31.387600 -406.195892 -249.473907\nv 30.133919 -404.544861 -250.945923\nv 29.485453 -402.788422 -252.667831\nv 29.486412 -401.046265 -254.522308\nv 30.136694 -399.437103 -256.383057\nv 31.392019 -398.070618 -258.123138\nv 33.166824 -397.039886 -259.624054\nv 35.340149 -396.415222 -260.783508\nv 37.763901 -396.239166 -261.522461\nv 40.272907 -396.523712 -261.790558\nv 42.696148 -397.249390 -261.569550\nv 44.868515 -398.366943 -260.874481\nv 46.641979 -399.799957 -259.752747\nv 47.895653 -401.450989 -258.280762\nv 48.544109 -403.207428 -256.558807\nv 47.008396 -412.128052 -260.613312\nv 46.413540 -413.477875 -258.539124\nv 45.211349 -414.595856 -256.594482\nv 43.483757 -415.405792 -254.911819\nv 41.348499 -415.852509 -253.605881\nv 38.951046 -415.905518 -252.765610\nv 36.454830 -415.561249 -252.448318\nv 34.029938 -414.843140 -252.675598\nv 31.841633 -413.800140 -253.432007\nv 30.039040 -412.503296 -254.665924\nv 28.745003 -411.041107 -256.293335\nv 28.047705 -409.513062 -258.203278\nv 27.994671 -408.023376 -260.265625\nv 28.589523 -406.673553 -262.339783\nv 29.791714 -405.555603 -264.284515\nv 31.519318 -404.745667 -265.967163\nv 33.654587 -404.298920 -267.273071\nv 36.052025 -404.245911 -268.113342\nv 38.548252 -404.590210 -268.430664\nv 40.973145 -405.308258 -268.203369\nv 43.161449 -406.351288 -267.446960\nv 44.964031 -407.648102 -266.213013\nv 46.258076 -409.110352 -264.585663\nv 46.955360 -410.638397 -262.675720\nv 45.124489 -419.885040 -265.413300\nv 44.601746 -420.937897 -263.155426\nv 43.470222 -421.764954 -261.030670\nv 41.807045 -422.309692 -259.183929\nv 39.725525 -422.535034 -257.740967\nv 37.367546 -422.425598 -256.800171\nv 34.893772 -421.988831 -256.425690\nv 32.472813 -421.254578 -256.642975\nv 30.269640 -420.272827 -257.437256\nv 28.434393 -419.110382 -258.754364\nv 27.092142 -417.846710 -260.504608\nv 26.334370 -416.567749 -262.568665\nv 26.212704 -415.360626 -264.805878\nv 26.735437 -414.307678 -267.063812\nv 27.866968 -413.480713 -269.188538\nv 29.530157 -412.935944 -271.035339\nv 31.611673 -412.710602 -272.478210\nv 33.969658 -412.820038 -273.419037\nv 36.443432 -413.256744 -273.793549\nv 38.864391 -413.991058 -273.576233\nv 41.067574 -414.972809 -272.782013\nv 42.902798 -416.135162 -271.464813\nv 44.245052 -417.398926 -269.714600\nv 45.002811 -418.677887 -267.650513\nv 42.965572 -427.924774 -268.937561\nv 42.536842 -428.627686 -266.526215\nv 41.493343 -429.126862 -264.257812\nv 39.906193 -429.388428 -262.286896\nv 37.883568 -429.394440 -260.747803\nv 35.563309 -429.144592 -259.745483\nv 33.103512 -428.655823 -259.348175\nv 30.671822 -427.961517 -259.583038\nv 28.433945 -427.108917 -260.433899\nv 26.542425 -426.156128 -261.842926\nv 25.126122 -425.168182 -263.713989\nv 24.281569 -424.212341 -265.919739\nv 24.066338 -423.353668 -268.309662\nv 24.495083 -422.650818 -270.721069\nv 25.538576 -422.151581 -272.989471\nv 27.125725 -421.890045 -274.960388\nv 29.148355 -421.884033 -276.499481\nv 31.468636 -422.133881 -277.501801\nv 33.928432 -422.622650 -277.899139\nv 36.360107 -423.316986 -277.664307\nv 38.597973 -424.169617 -276.813446\nv 40.489506 -425.122314 -275.404358\nv 41.905800 -426.110321 -273.533295\nv 42.750343 -427.066162 -271.327545\nv 40.890919 -436.623413 -271.032074\nv 40.553444 -436.943604 -268.528564\nv 39.592022 -437.098694 -266.177338\nv 38.072166 -437.078094 -264.138428\nv 36.097443 -436.883301 -262.551025\nv 33.802452 -436.527374 -261.523102\nv 31.343576 -436.034790 -261.124908\nv 28.888369 -435.439026 -261.383453\nv 26.604179 -434.780670 -262.281128\nv 24.646652 -434.104675 -263.756775\nv 23.149179 -433.456970 -265.709839\nv 22.213852 -432.881744 -268.007172\nv 21.904383 -432.418274 -270.492340\nv 22.241852 -432.098114 -272.995880\nv 23.203255 -431.942963 -275.347107\nv 24.723118 -431.963593 -277.385956\nv 26.697840 -432.158417 -278.973419\nv 28.992834 -432.514252 -280.001282\nv 31.451723 -433.006897 -280.399506\nv 33.906918 -433.602661 -280.140991\nv 36.191105 -434.260986 -279.243286\nv 38.148636 -434.937042 -277.767670\nv 39.646091 -435.584747 -275.814575\nv 40.581436 -436.159882 -273.517212\nv 38.844952 -446.192291 -271.781219\nv 38.570412 -446.218170 -269.254669\nv 37.665028 -446.111145 -266.882874\nv 36.190533 -445.878510 -264.827393\nv 34.247360 -445.536102 -263.228424\nv 31.967983 -445.107147 -262.194794\nv 29.507694 -444.621063 -261.797058\nv 27.034214 -444.110870 -262.062286\nv 24.716051 -443.611420 -262.972443\nv 22.711218 -443.156616 -264.465363\nv 21.156319 -442.777527 -266.439453\nv 20.157326 -442.500031 -268.760162\nv 19.782322 -442.342957 -271.269257\nv 20.056879 -442.317047 -273.795807\nv 20.962257 -442.424133 -276.167633\nv 22.436764 -442.656738 -278.223145\nv 24.379934 -442.999207 -279.822083\nv 26.659311 -443.428040 -280.855682\nv 29.119589 -443.914124 -281.253387\nv 31.593090 -444.424316 -280.988159\nv 33.911240 -444.923859 -280.078033\nv 35.916077 -445.378601 -278.585114\nv 37.470974 -445.757629 -276.611023\nv 38.469948 -446.035187 -274.290314\nv 36.962223 -456.005493 -271.649780\nv 36.728409 -455.819183 -269.126068\nv 35.858700 -455.526215 -266.756744\nv 34.412365 -455.146729 -264.703217\nv 32.487957 -454.706482 -263.105560\nv 30.216646 -454.235535 -262.072510\nv 27.753202 -453.765930 -261.674622\nv 25.265507 -453.329773 -261.938812\nv 22.923101 -452.956665 -262.847229\nv 20.885603 -452.672119 -264.337982\nv 19.291876 -452.495422 -266.309296\nv 18.250525 -452.438751 -268.627014\nv 17.832504 -452.505859 -271.133179\nv 18.066332 -452.692261 -273.656860\nv 18.936049 -452.985138 -276.026184\nv 20.382381 -453.364716 -278.079681\nv 22.306780 -453.804901 -279.677338\nv 24.578102 -454.275848 -280.710388\nv 27.041534 -454.745392 -281.108337\nv 29.529232 -455.181580 -280.844055\nv 31.871635 -455.554657 -279.935638\nv 33.909134 -455.839294 -278.444946\nv 35.502857 -456.015900 -276.473572\nv 36.544209 -456.072601 -274.155884\nv 35.210114 -466.255646 -270.617096\nv 35.027164 -465.771729 -268.123291\nv 34.205082 -465.200134 -265.782043\nv 32.799915 -464.579803 -263.752869\nv 30.907410 -463.953003 -262.173950\nv 28.656542 -463.362457 -261.152985\nv 26.200686 -462.848389 -260.759491\nv 23.707251 -462.445892 -261.020386\nv 21.346102 -462.182373 -261.917786\nv 19.278194 -462.075714 -263.390472\nv 17.644417 -462.133301 -265.338318\nv 16.556149 -462.351166 -267.628326\nv 16.087515 -462.714386 -270.104614\nv 16.270475 -463.198364 -272.598389\nv 17.092546 -463.769928 -274.939575\nv 18.497713 -464.390289 -276.968842\nv 20.390228 -465.017059 -278.547699\nv 22.641096 -465.607666 -279.568726\nv 25.096933 -466.121674 -279.962128\nv 27.590385 -466.524139 -279.701294\nv 29.951530 -466.787689 -278.803925\nv 32.019455 -466.894318 -277.331116\nv 33.653214 -466.836792 -275.383423\nv 34.741478 -466.618927 -273.093384\nv 33.415386 -475.699463 -268.129364\nv 33.308537 -474.815155 -265.741089\nv 32.560215 -473.855438 -263.502075\nv 31.221436 -472.885712 -261.564880\nv 29.383408 -471.972198 -260.061615\nv 27.171440 -471.177032 -259.094452\nv 24.736229 -470.554413 -258.729614\nv 22.243742 -470.146820 -258.991791\nv 19.863836 -469.982025 -259.863190\nv 17.758709 -470.071167 -261.284332\nv 16.071836 -470.408295 -263.158508\nv 14.918134 -470.970337 -265.357880\nv 14.376245 -471.719086 -267.732666\nv 14.483106 -472.603455 -270.120850\nv 15.231424 -473.563141 -272.359924\nv 16.570206 -474.532837 -274.297119\nv 18.408224 -475.446411 -275.800476\nv 20.620203 -476.241577 -276.767548\nv 23.055416 -476.864166 -277.132385\nv 25.547909 -477.271790 -276.870239\nv 27.927794 -477.436615 -275.998871\nv 30.032921 -477.347443 -274.577698\nv 31.719814 -477.010284 -272.703522\nv 32.873508 -476.448212 -270.504120\nv 31.654089 -483.936737 -264.291901\nv 31.618147 -482.720795 -262.058136\nv 30.936182 -481.450684 -259.963654\nv 29.654661 -480.213226 -258.151245\nv 27.860914 -479.092621 -256.744385\nv 25.677193 -478.165314 -255.838837\nv 23.252298 -477.494415 -255.496490\nv 20.751507 -477.125671 -255.740479\nv 18.345215 -477.084290 -256.554443\nv 16.197435 -477.372955 -257.882629\nv 14.454512 -477.972137 -259.634766\nv 13.235230 -478.840912 -261.691254\nv 12.622686 -479.920135 -263.912018\nv 12.658620 -481.136169 -266.145782\nv 13.340581 -482.406219 -268.240265\nv 14.622094 -483.643677 -270.052643\nv 16.415850 -484.764282 -271.459534\nv 18.599573 -485.691589 -272.365051\nv 21.024458 -486.362488 -272.707397\nv 23.525249 -486.731262 -272.463379\nv 25.931551 -486.772583 -271.649506\nv 28.079330 -486.483917 -270.321228\nv 29.822262 -485.884766 -268.569153\nv 31.041544 -485.015930 -266.512634\nv 30.167978 -491.932434 -259.326111\nv 30.176105 -490.479309 -257.239563\nv 29.533134 -488.999390 -255.275436\nv 28.282907 -487.593628 -253.567581\nv 26.510607 -486.357666 -252.232300\nv 24.337002 -485.375793 -251.360672\nv 21.910248 -484.715027 -251.012085\nv 19.395710 -484.420258 -251.210236\nv 16.964752 -484.511566 -251.941605\nv 14.783031 -484.982849 -253.156509\nv 12.999235 -485.801910 -254.772003\nv 11.734924 -486.912964 -256.678040\nv 11.076268 -488.240265 -258.744690\nv 11.068140 -489.693359 -260.831238\nv 11.711100 -491.173248 -262.795349\nv 12.961339 -492.579071 -264.503174\nv 14.733639 -493.815033 -265.838470\nv 16.907223 -494.796875 -266.710144\nv 19.333977 -495.457733 -267.058807\nv 21.848528 -495.752472 -266.860596\nv 24.279482 -495.661102 -266.129181\nv 26.461216 -495.189819 -264.914307\nv 28.245001 -494.370758 -263.298767\nv 29.509314 -493.259705 -261.392792\nv 28.877211 -500.128723 -252.944427\nv 28.930489 -498.388916 -251.081207\nv 28.330671 -496.634979 -249.330368\nv 27.118645 -494.986572 -247.811386\nv 25.377001 -493.556000 -246.627625\nv 23.224398 -492.440735 -245.859818\nv 20.807594 -491.716797 -245.560303\nv 18.291225 -491.433563 -245.749573\nv 15.846821 -491.610260 -246.414505\nv 13.640973 -492.234894 -247.509979\nv 11.823956 -493.264893 -248.961288\nv 10.519631 -494.629974 -250.669495\nv 9.816885 -496.237213 -252.518173\nv 9.763586 -497.977081 -254.381424\nv 10.363405 -499.731018 -256.132263\nv 11.575441 -501.379395 -257.651276\nv 13.317097 -502.809967 -258.835022\nv 15.469677 -503.925201 -259.602783\nv 17.886492 -504.649139 -259.902313\nv 20.402853 -504.932404 -259.713074\nv 22.847256 -504.755707 -259.048096\nv 25.053123 -504.131073 -257.952637\nv 26.870131 -503.101135 -256.501373\nv 28.174465 -501.735992 -254.793137\nv 27.383890 -507.112335 -245.049438\nv 27.502253 -505.068085 -243.530258\nv 26.967251 -503.011169 -242.122025\nv 25.815315 -501.081726 -240.920792\nv 24.124973 -499.411102 -240.008347\nv 22.011431 -498.113342 -239.446945\nv 19.618704 -497.276733 -239.274765\nv 17.109842 -496.958466 -239.503662\nv 14.655828 -497.179993 -240.117859\nv 12.423934 -497.926361 -241.075653\nv 10.566210 -499.146759 -242.311691\nv 9.209272 -500.757935 -243.741837\nv 8.445611 -502.650055 -245.268417\nv 8.327248 -504.694275 -246.787674\nv 8.862275 -506.751190 -248.195847\nv 10.014188 -508.680664 -249.397125\nv 11.704529 -510.351196 -250.309494\nv 13.818064 -511.649048 -250.871002\nv 16.210812 -512.485596 -251.043076\nv 18.719662 -512.803955 -250.814240\nv 21.173664 -512.582336 -250.199997\nv 23.405569 -511.835968 -249.242249\nv 25.263302 -510.615570 -248.006165\nv 26.620220 -509.004425 -246.576080\nv 25.775219 -512.476013 -236.102249\nv 25.953588 -510.231720 -234.916733\nv 25.475780 -507.983948 -233.826843\nv 24.374418 -505.885986 -232.906662\nv 22.724483 -504.080658 -232.219025\nv 20.638470 -502.691071 -231.810760\nv 18.258512 -501.811920 -231.709732\nv 15.746800 -501.503052 -231.922607\nv 13.274519 -501.785614 -232.435181\nv 11.010144 -502.640320 -233.212372\nv 9.107972 -504.008850 -234.201187\nv 7.697647 -505.798004 -235.334305\nv 6.875278 -507.885925 -236.534470\nv 6.696906 -510.130157 -237.719955\nv 7.174694 -512.377930 -238.809891\nv 8.276078 -514.475891 -239.730026\nv 9.926010 -516.281189 -240.417709\nv 12.012026 -517.670837 -240.825928\nv 14.391973 -518.549988 -240.927002\nv 16.903685 -518.858826 -240.714081\nv 19.375977 -518.576233 -240.201477\nv 21.640360 -517.721558 -239.424347\nv 23.542524 -516.353088 -238.435516\nv 24.952837 -514.563843 -237.302368\nv 24.712851 -516.397217 -227.171509\nv 24.927689 -514.018372 -226.292664\nv 24.482506 -511.650238 -225.476746\nv 23.407631 -509.454346 -224.779465\nv 21.776308 -507.580353 -224.248245\nv 19.699736 -506.155945 -223.919296\nv 17.319405 -505.278137 -223.815125\nv 14.797544 -505.006805 -223.942719\nv 12.306013 -505.360413 -224.293472\nv 10.014588 -506.314850 -224.843369\nv 8.079455 -507.805084 -225.555038\nv 6.632457 -509.729645 -226.379990\nv 5.772237 -511.957214 -227.261871\nv 5.557396 -514.336121 -228.140732\nv 6.002582 -516.704224 -228.956650\nv 7.077465 -518.900024 -229.653946\nv 8.708778 -520.774048 -230.185150\nv 10.785352 -522.198486 -230.514053\nv 13.165682 -523.076294 -230.618271\nv 15.687542 -523.347656 -230.490631\nv 18.179075 -522.994019 -230.139954\nv 20.470499 -522.039490 -229.590027\nv 22.405630 -520.549316 -228.878387\nv 23.852629 -518.624756 -228.053436\nv 24.148296 -519.036926 -217.993256\nv 24.384192 -516.559509 -217.456848\nv 23.957861 -514.103333 -216.947479\nv 22.898336 -511.835724 -216.499924\nv 21.277859 -509.911041 -216.144592\nv 19.206825 -508.460754 -215.905838\nv 16.826387 -507.583435 -215.799789\nv 14.298755 -507.339020 -215.833771\nv 11.796200 -507.744110 -216.005386\nv 9.489282 -508.771149 -216.303070\nv 7.535166 -510.350067 -216.706375\nv 6.067053 -512.373352 -217.187927\nv 5.184991 -514.703064 -217.714844\nv 4.949086 -517.180420 -218.251251\nv 5.375419 -519.636658 -218.760681\nv 6.434939 -521.904297 -219.208221\nv 8.055429 -523.828918 -219.563507\nv 10.126463 -525.279236 -219.802322\nv 12.506902 -526.156555 -219.908310\nv 15.034513 -526.400940 -219.874329\nv 17.537069 -525.995911 -219.702713\nv 19.844007 -524.968811 -219.405045\nv 21.798122 -523.389954 -219.001724\nv 23.266222 -521.366638 -218.520203\nv 24.074780 -520.427673 -208.147736\nv 24.313272 -517.901428 -207.957367\nv 23.889246 -515.401428 -207.758316\nv 22.831629 -513.097900 -207.563980\nv 21.212473 -511.148041 -207.387650\nv 19.142122 -509.684662 -207.241379\nv 16.761684 -508.807404 -207.135132\nv 14.233369 -508.576111 -207.076080\nv 11.729482 -509.006561 -207.068329\nv 9.420649 -510.069458 -207.112427\nv 7.464226 -511.692230 -207.205292\nv 5.993520 -513.764404 -207.340561\nv 5.108789 -516.144775 -207.509125\nv 4.870296 -518.671021 -207.699463\nv 5.294323 -521.171021 -207.898590\nv 6.351940 -523.474548 -208.092911\nv 7.971087 -525.424377 -208.269226\nv 10.041437 -526.887756 -208.415497\nv 12.421877 -527.765015 -208.521729\nv 14.950199 -527.996277 -208.580719\nv 17.454079 -527.565857 -208.588516\nv 19.762913 -526.502991 -208.544434\nv 21.719343 -524.880188 -208.451584\nv 23.190042 -522.808044 -208.316254\nv 24.498610 -520.566650 -197.518051\nv 24.731024 -518.038330 -197.480133\nv 24.301510 -515.536499 -197.419037\nv 23.239328 -513.231567 -197.338943\nv 21.616873 -511.280609 -197.245224\nv 19.544714 -509.816528 -197.144363\nv 17.164074 -508.939209 -197.043167\nv 14.637180 -508.708435 -196.948578\nv 12.136230 -509.139862 -196.867020\nv 9.831675 -510.204102 -196.804062\nv 7.880549 -511.828583 -196.763977\nv 6.415818 -513.902710 -196.749512\nv 5.537323 -516.285095 -196.761627\nv 5.304907 -518.813354 -196.799545\nv 5.734431 -521.315247 -196.860641\nv 6.796604 -523.620117 -196.940750\nv 8.419059 -525.571106 -197.034470\nv 10.491199 -527.035217 -197.135315\nv 12.871848 -527.912476 -197.236511\nv 15.398743 -528.143372 -197.331146\nv 17.899693 -527.711914 -197.412628\nv 20.204258 -526.647705 -197.475647\nv 22.155384 -525.023132 -197.515762\nv 23.620106 -522.949036 -197.530197\nv 24.696281 -520.713257 -190.865601\nv 24.929138 -518.185364 -190.865494\nv 24.499977 -515.683777 -190.865387\nv 23.438046 -513.378967 -190.865265\nv 21.815714 -511.428009 -190.865204\nv 19.743526 -509.964050 -190.865204\nv 17.362730 -509.086578 -190.865173\nv 14.835539 -508.855560 -190.865234\nv 12.334189 -509.286682 -190.865326\nv 10.029156 -510.350555 -190.865463\nv 8.077512 -511.974670 -190.865601\nv 6.612261 -514.048401 -190.865768\nv 5.733256 -516.430420 -190.865875\nv 5.500389 -518.958313 -190.866028\nv 5.929540 -521.459961 -190.866165\nv 6.991492 -523.764709 -190.866241\nv 8.613825 -525.715637 -190.866318\nv 10.685990 -527.179687 -190.866333\nv 13.066808 -528.057068 -190.866287\nv 15.593990 -528.288147 -190.866257\nv 18.095327 -527.856995 -190.866150\nv 20.400372 -526.793091 -190.866074\nv 22.352016 -525.169006 -190.865921\nv 23.817268 -523.095276 -190.865753\nv 61.396732 -367.896240 75.976608\nv 63.562965 -372.448273 75.976402\nv 64.476715 -377.405121 75.976151\nv 64.075661 -382.429169 75.975883\nv 62.387146 -387.177917 75.975594\nv 59.526257 -391.327728 75.975304\nv 55.687946 -394.595917 75.975037\nv 51.133823 -396.759674 75.974777\nv 46.174194 -397.671509 75.974602\nv 41.147076 -397.269379 75.974518\nv 36.395061 -395.580597 75.974464\nv 32.241978 -392.720337 75.974525\nv 28.970858 -388.883423 75.974640\nv 26.804640 -384.331390 75.974823\nv 25.890909 -379.374420 75.975014\nv 26.291964 -374.350464 75.975319\nv 27.980463 -369.601685 75.975616\nv 30.841345 -365.451904 75.975906\nv 34.679649 -362.183716 75.976166\nv 39.233810 -360.019897 75.976418\nv 44.193432 -359.108093 75.976578\nv 49.220543 -359.510223 75.976700\nv 53.972553 -361.199005 75.976746\nv 58.125633 -364.059296 75.976700\nv 49.992668 -355.892883 163.994720\nv 55.535160 -357.862549 164.010986\nv 60.379105 -361.198700 164.058624\nv 64.194366 -365.673889 164.134293\nv 66.720947 -370.983124 164.232849\nv 67.786674 -376.764618 164.347610\nv 67.318909 -382.624390 164.470703\nv 65.349525 -388.163055 164.593826\nv 62.012699 -393.003235 164.708557\nv 57.535900 -396.815063 164.807022\nv 52.224178 -399.338745 164.882523\nv 46.439533 -400.402344 164.929993\nv 40.576160 -399.933289 164.946106\nv 35.033646 -397.963562 164.929810\nv 30.189703 -394.627441 164.882141\nv 26.374428 -390.152313 164.806534\nv 23.847862 -384.843018 164.707993\nv 22.782141 -379.061554 164.593185\nv 23.249918 -373.201782 164.470062\nv 25.219297 -367.663055 164.346970\nv 28.556105 -362.822906 164.232285\nv 33.032909 -359.011078 164.133804\nv 38.344639 -356.487366 164.058289\nv 44.129280 -355.423828 164.010803\nv 31.986444 -356.948547 197.297867\nv 37.783123 -354.193695 197.313583\nv 44.095802 -353.032532 197.323425\nv 50.494324 -353.544281 197.327011\nv 56.542637 -355.693939 197.323624\nv 61.828556 -359.334961 197.313980\nv 65.991829 -364.219421 197.298370\nv 68.748772 -370.014343 197.278076\nv 69.911491 -376.324677 197.254318\nv 69.400749 -382.720551 197.228729\nv 67.251297 -388.766113 197.203156\nv 63.609753 -394.049225 197.179443\nv 58.724136 -398.210052 197.158997\nv 52.927467 -400.964935 197.143265\nv 46.614769 -402.126038 197.133331\nv 40.216221 -401.614380 197.129868\nv 34.167927 -399.464722 197.133148\nv 28.882027 -395.823608 197.142883\nv 24.718729 -390.939178 197.158463\nv 21.961813 -385.144287 197.178802\nv 20.799082 -378.833893 197.202469\nv 21.309835 -372.438049 197.228043\nv 23.459246 -366.392517 197.253601\nv 27.100828 -361.109375 197.277451\nv 17.860575 -371.827820 228.280334\nv 20.315952 -364.921722 228.309616\nv 24.475901 -358.886566 228.336823\nv 30.056952 -354.133453 228.360123\nv 36.678764 -350.986481 228.378143\nv 43.890045 -349.660095 228.389374\nv 51.199364 -350.244659 228.393463\nv 58.108627 -352.700226 228.389572\nv 64.146973 -356.859650 228.378555\nv 68.902901 -362.439301 228.360703\nv 72.052261 -369.059143 228.337524\nv 73.380478 -376.267731 228.310364\nv 72.797035 -383.574097 228.281174\nv 70.341652 -390.480194 228.251938\nv 66.181702 -396.515350 228.224869\nv 60.600647 -401.268433 228.201477\nv 53.978855 -404.415375 228.183517\nv 46.767563 -405.741760 228.172241\nv 39.458233 -405.157318 228.168213\nv 32.548973 -402.701691 228.172058\nv 26.510632 -398.542236 228.183105\nv 21.754728 -392.962555 228.200928\nv 18.605350 -386.342773 228.224182\nv 17.277130 -379.134216 228.251205\nv 17.693655 -395.690094 257.434387\nv 14.005095 -387.936951 257.461548\nv 12.449460 -379.494141 257.493256\nv 13.132799 -370.936829 257.527435\nv 16.008541 -362.848389 257.561676\nv 20.880730 -355.779968 257.593536\nv 27.417328 -350.213043 257.620850\nv 35.172844 -346.527313 257.641937\nv 43.618774 -344.973846 257.655090\nv 52.179520 -345.658508 257.659882\nv 60.271729 -348.534485 257.655304\nv 67.343887 -353.406006 257.642395\nv 72.914070 -359.940948 257.621521\nv 76.602654 -367.694092 257.594391\nv 78.158287 -376.136932 257.562561\nv 77.474960 -384.694183 257.528412\nv 74.599174 -392.782684 257.494141\nv 69.727028 -399.851135 257.462372\nv 63.190407 -405.417969 257.435059\nv 55.434879 -409.103699 257.413971\nv 46.988953 -410.657288 257.400818\nv 38.428185 -409.972717 257.396088\nv 30.336004 -407.096680 257.400543\nv 23.263819 -402.225098 257.413513\nv 37.293316 -415.278381 285.968323\nv 27.894178 -411.937805 285.973572\nv 19.679789 -406.279449 285.988586\nv 13.209999 -398.688965 286.012817\nv 8.925694 -389.683655 286.044342\nv 7.118818 -379.877319 286.081238\nv 7.912535 -369.937927 286.120880\nv 11.252730 -360.543152 286.160583\nv 16.911795 -352.333038 286.197662\nv 24.504095 -345.867157 286.229370\nv 33.512218 -341.585999 286.253845\nv 43.322224 -339.781677 286.269135\nv 53.265594 -340.576904 286.274750\nv 62.664761 -343.917450 286.269409\nv 70.879189 -349.575623 286.254395\nv 77.348976 -357.166168 286.230133\nv 81.633293 -366.171448 286.198669\nv 83.440178 -375.977875 286.161682\nv 82.646477 -385.917206 286.122009\nv 79.306236 -395.312012 286.082275\nv 73.647186 -403.522095 286.045319\nv 66.054878 -409.988037 286.013641\nv 57.046741 -414.269104 285.989136\nv 47.236736 -416.073517 285.973877\nv 69.192146 -414.941376 307.369812\nv 58.815823 -419.872650 307.341522\nv 47.515785 -421.951080 307.323914\nv 36.062096 -421.035217 307.317535\nv 25.235332 -417.187286 307.323578\nv 15.773289 -410.669464 307.340851\nv 8.320799 -401.926117 307.368866\nv 3.385782 -391.552948 307.405182\nv 1.304457 -380.257141 307.447632\nv 2.218732 -368.808136 307.493286\nv 6.066262 -357.986389 307.539093\nv 12.584873 -348.529236 307.581665\nv 21.330362 -341.081207 307.618256\nv 31.706713 -336.149872 307.646454\nv 43.006733 -334.071472 307.664001\nv 54.460361 -334.987518 307.670502\nv 65.287163 -338.835327 307.664337\nv 74.749229 -345.353058 307.647095\nv 82.201736 -354.096436 307.619141\nv 87.136772 -364.469635 307.582825\nv 89.218079 -375.765442 307.540314\nv 88.303825 -387.214447 307.494568\nv 84.456253 -398.036224 307.448883\nv 77.937653 -407.493256 307.406281\nv 97.144897 -389.188568 327.933411\nv 92.505486 -402.237610 327.878326\nv 84.645309 -413.640900 327.826935\nv 74.099892 -422.621887 327.782898\nv 61.588043 -428.568085 327.748901\nv 47.962353 -431.074310 327.727570\nv 34.151409 -429.969971 327.719940\nv 21.096424 -425.330078 327.727234\nv 9.687010 -417.470825 327.748077\nv 0.700745 -406.928040 327.781799\nv -5.249935 -394.419952 327.825592\nv -7.759613 -380.799408 327.876770\nv -6.657180 -366.994080 327.931824\nv -2.017797 -353.945129 327.987061\nv 5.842391 -342.541748 328.038452\nv 16.387766 -333.560791 328.082489\nv 28.899632 -327.614624 328.116516\nv 42.525291 -325.108459 328.137817\nv 56.336166 -326.212952 328.145508\nv 69.391235 -330.852783 328.138214\nv 80.800652 -338.711823 328.117310\nv 89.786926 -349.254639 328.083588\nv 95.737663 -361.762665 328.039856\nv 98.247322 -375.383331 327.988556\nv 98.496468 -343.667084 343.229492\nv 105.612480 -358.624451 343.177185\nv 108.613602 -374.912292 343.115814\nv 107.295334 -391.420837 343.049896\nv 101.747360 -407.025146 342.984039\nv 92.348015 -420.661469 342.922485\nv 79.737625 -431.401062 342.869843\nv 64.775665 -438.511597 342.829102\nv 48.481819 -441.508606 342.803741\nv 31.966408 -440.188049 342.794678\nv 16.354998 -434.639587 342.803284\nv 2.711382 -425.241302 342.828186\nv -8.034562 -412.634033 342.868530\nv -15.150500 -397.676666 342.920837\nv -18.151630 -381.388916 342.982178\nv -16.833328 -364.880219 343.047974\nv -11.285452 -349.276031 343.113983\nv -1.886090 -335.639648 343.175476\nv 10.724283 -324.900085 343.228149\nv 25.686235 -317.789429 343.268799\nv 41.980064 -314.792572 343.294250\nv 58.495377 -316.113373 343.303467\nv 74.106857 -321.661804 343.294769\nv 87.750481 -331.059753 343.269775\nv 60.627056 -306.142761 355.846252\nv 78.759911 -312.587280 355.836182\nv 94.607117 -323.503174 355.807129\nv 107.088707 -338.146637 355.760315\nv 115.354027 -355.519775 355.699524\nv 118.839836 -374.438232 355.628326\nv 117.308632 -393.613068 355.551758\nv 110.864677 -411.737518 355.475220\nv 99.947189 -427.576324 355.403778\nv 85.300064 -440.050476 355.342651\nv 67.921638 -448.309479 355.295380\nv 48.996197 -451.790527 355.265808\nv 29.813391 -450.256622 355.255280\nv 11.680613 -443.811981 355.265259\nv -4.166543 -432.895905 355.294250\nv -16.648056 -418.252411 355.341095\nv -24.913300 -400.879211 355.401917\nv -28.399137 -381.960907 355.473175\nv -26.867889 -362.785950 355.549591\nv -20.424023 -344.661499 355.626190\nv -9.506589 -328.822754 355.697601\nv 5.140484 -316.348602 355.758759\nv 22.518908 -308.089539 355.806000\nv 41.444324 -304.608643 355.835663\nv -2.715434 -304.271606 364.628723\nv 18.066023 -294.395264 364.685211\nv 40.697411 -290.232666 364.720581\nv 63.636482 -292.067169 364.733276\nv 85.320122 -299.773651 364.721252\nv 104.270508 -312.827057 364.686493\nv 119.196190 -330.338104 364.630524\nv 129.080017 -351.113251 364.557861\nv 133.248352 -373.736237 364.472717\nv 131.417343 -396.665894 364.381165\nv 123.711563 -418.339539 364.289673\nv 110.656311 -437.279877 364.204163\nv 93.140953 -452.196655 364.131073\nv 72.359520 -462.072876 364.074493\nv 49.728081 -466.235596 364.039215\nv 26.788906 -464.401367 364.026642\nv 5.105358 -456.694733 364.038574\nv -13.844969 -443.641052 364.073242\nv -28.770643 -426.130157 364.129272\nv -38.654335 -405.354950 364.201965\nv -42.822731 -382.731995 364.287140\nv -40.991669 -359.802277 364.378571\nv -33.285999 -338.128693 364.470184\nv -20.230686 -319.188354 364.555542\nv -56.983418 -356.409607 370.873077\nv -47.851292 -330.715515 370.981750\nv -32.380627 -308.256500 371.082947\nv -11.621119 -290.562378 371.169678\nv 13.016025 -278.841522 371.236694\nv 39.852394 -273.897217 371.278717\nv 67.056877 -276.069702 371.293762\nv 92.771210 -285.211975 371.279480\nv 115.239281 -300.698395 371.238251\nv 132.929184 -321.469360 371.171875\nv 144.637833 -346.105713 371.085602\nv 149.571518 -372.927460 370.984680\nv 147.397949 -400.109406 370.876160\nv 138.265839 -425.803650 370.767609\nv 122.795212 -448.262482 370.666321\nv 102.035561 -465.956757 370.579590\nv 77.398491 -477.677582 370.512573\nv 50.561993 -482.621918 370.470612\nv 23.357479 -480.449371 370.455688\nv -2.356732 -471.307129 370.469849\nv -24.824818 -455.820648 370.510986\nv -42.514671 -435.049744 370.577393\nv -54.223362 -410.413239 370.663635\nv -59.157051 -383.591644 370.764648\nv 147.983505 -359.355499 371.036560\nv 149.375153 -386.589844 370.930939\nv 143.673660 -413.255493 370.821442\nv 131.266602 -437.539490 370.715637\nv 112.995789 -457.789429 370.620758\nv 90.101830 -472.624329 370.543213\nv 64.142853 -481.029358 370.488312\nv 36.888706 -482.427582 370.459595\nv 10.200462 -476.721222 370.459198\nv -14.098881 -464.300140 370.487122\nv -34.351017 -446.014435 370.541382\nv -49.176651 -423.114471 370.618317\nv -57.569027 -397.163574 370.712738\nv -58.960655 -369.929260 370.818390\nv -53.259159 -343.263641 370.927826\nv -40.852066 -318.979614 371.033691\nv -22.581259 -298.729706 371.128448\nv 0.312651 -283.894775 371.206024\nv 26.271576 -275.489746 371.261017\nv 53.525642 -274.091583 371.289764\nv 80.213959 -279.797852 371.290161\nv 104.513374 -292.219025 371.262177\nv 124.765480 -310.504669 371.207916\nv 139.591080 -333.404510 371.130951\nv 140.765640 -332.843597 370.356049\nv 145.875076 -345.702881 370.310211\nv 149.262360 -359.117310 370.260529\nv 150.870178 -372.858093 370.208038\nv 150.671326 -386.690338 370.153564\nv 148.669495 -400.378113 370.098114\nv 144.898911 -413.687683 370.042755\nv 139.423874 -426.391876 369.988220\nv 132.337585 -438.273651 369.935577\nv 123.760849 -449.130096 369.885651\nv 113.839523 -458.775513 369.839569\nv 102.742996 -467.044373 369.797882\nv 90.660858 -473.794922 369.761047\nv 77.799522 -478.910980 369.730011\nv 64.378983 -482.304474 369.705414\nv 50.629242 -483.916870 369.687561\nv 36.785900 -483.720032 369.676392\nv 23.086386 -481.717255 369.672424\nv 9.765759 -477.942749 369.675964\nv -2.947610 -472.461304 369.686737\nv -14.835804 -465.367187 369.704254\nv -25.695135 -456.782257 369.728424\nv -35.339787 -446.854065 369.759155\nv -43.605015 -435.752960 369.795624\nv -50.349808 -423.669342 369.837128\nv -55.459301 -410.810120 369.882935\nv -58.846588 -397.395630 369.932739\nv -60.454372 -383.654907 369.985260\nv -60.255516 -369.822601 370.039612\nv -58.253670 -356.134796 370.094971\nv -54.483086 -342.825317 370.150452\nv -49.008011 -330.121124 370.205017\nv -41.921730 -318.239258 370.257629\nv -33.344948 -307.382874 370.307465\nv -23.423660 -297.737518 370.353577\nv -12.327215 -289.468658 370.395294\nv -0.245051 -282.718109 370.432129\nv 12.616329 -277.601990 370.463196\nv 26.036760 -274.208588 370.487793\nv 39.786484 -272.596161 370.505676\nv 53.629772 -272.792999 370.516846\nv 67.329308 -274.795715 370.520905\nv 80.650017 -278.570251 370.517303\nv 93.363426 -284.051697 370.506470\nv 105.251625 -291.145844 370.488953\nv 116.110947 -299.730713 370.464691\nv 125.755592 -309.658966 370.433990\nv 134.020844 -320.760071 370.397552\nv 116.981941 -298.766083 370.469238\nv 126.745087 -308.816254 370.438141\nv 135.111801 -320.053741 370.401184\nv 141.939499 -332.285767 370.359222\nv 147.111725 -345.302887 370.312805\nv 150.540619 -358.882233 370.262512\nv 152.168152 -372.791779 370.209381\nv 151.966843 -386.793976 370.154266\nv 149.940445 -400.649841 370.098114\nv 146.123520 -414.122925 370.042084\nv 140.581207 -426.983154 369.986877\nv 133.407913 -439.010925 369.933624\nv 124.725800 -450.000732 369.883118\nv 114.682640 -459.764587 369.836456\nv 103.449745 -468.135071 369.794159\nv 91.219170 -474.968536 369.756958\nv 78.199852 -480.147400 369.725494\nv 64.614487 -483.582642 369.700623\nv 50.695862 -485.214783 369.682495\nv 36.682449 -485.015625 369.671234\nv 22.814651 -482.988159 369.667206\nv 9.330383 -479.167297 369.670837\nv -3.539159 -473.618530 369.681732\nv -15.573386 -466.437225 369.699432\nv -26.566135 -457.746887 369.723907\nv -36.329231 -447.696716 369.755035\nv -44.696007 -436.459259 369.791962\nv -51.523663 -424.227173 369.833923\nv -56.695908 -411.209991 369.880310\nv -60.124794 -397.630768 369.930725\nv -61.752338 -383.721222 369.983856\nv -61.551033 -369.718964 370.038940\nv -59.524628 -355.863068 370.094971\nv -55.707706 -342.390045 370.151123\nv -50.165356 -329.529877 370.206360\nv -42.992039 -317.502045 370.259521\nv -34.309864 -306.512207 370.310059\nv -24.266743 -296.748474 370.356750\nv -13.033981 -288.377930 370.398987\nv -0.803393 -281.544464 370.436218\nv 12.215964 -276.365570 370.467651\nv 25.801252 -272.930359 370.492584\nv 39.719875 -271.298248 370.510712\nv 53.733234 -271.497406 370.522064\nv 67.601021 -273.524811 370.526154\nv 81.085396 -277.345703 370.522491\nv 93.954987 -282.894440 370.511566\nv 105.989212 -290.075745 370.493774\nv 81.520073 -276.124298 371.336914\nv 94.545837 -281.740448 371.325867\nv 106.726135 -289.008820 371.307861\nv 117.852226 -297.804657 371.283051\nv 127.733856 -307.976776 371.251556\nv 136.202118 -319.350555 371.214172\nv 143.112640 -331.731140 371.171692\nv 148.347595 -344.906189 371.124725\nv 151.818130 -358.650269 371.073792\nv 153.465378 -372.728638 371.020020\nv 153.261673 -386.900696 370.964203\nv 151.210693 -400.924713 370.907440\nv 147.347473 -414.561310 370.850677\nv 141.737915 -427.577606 370.794800\nv 134.477554 -439.751343 370.740906\nv 125.690071 -450.874542 370.689758\nv 115.525002 -460.756897 370.642578\nv 104.155815 -469.228943 370.599792\nv 91.776871 -476.145294 370.562042\nv 78.599533 -481.387054 370.530243\nv 64.849297 -484.863953 370.505096\nv 50.761753 -486.515900 370.486725\nv 36.578297 -486.314301 370.475342\nv 22.542221 -484.262268 370.471222\nv 8.894317 -480.395050 370.474915\nv -4.131399 -474.778931 370.485901\nv -16.311672 -467.510529 370.503876\nv -27.437796 -458.714630 370.528656\nv -37.319382 -448.542572 370.560120\nv -45.787663 -437.168732 370.597565\nv -52.698181 -424.788239 370.640076\nv -57.933216 -411.613098 370.686981\nv -61.403725 -397.869019 370.737976\nv -63.050995 -383.790710 370.791748\nv -62.847271 -369.618561 370.847504\nv -60.796227 -355.594543 370.904266\nv -56.933014 -341.957977 370.961060\nv -51.323425 -328.941681 371.016937\nv -44.063053 -316.767944 371.070770\nv -35.275505 -305.644806 371.121948\nv -25.110514 -295.762390 371.169128\nv -13.741432 -287.290436 371.211945\nv -1.362435 -280.374023 371.249634\nv 11.814928 -275.132294 371.281433\nv 25.565065 -271.655426 371.306671\nv 39.652599 -270.003418 371.325043\nv 53.836006 -270.205078 371.336487\nv 67.872078 -272.257019 371.340668\nv 39.651409 -270.008942 372.715271\nv 53.834808 -270.210480 372.726715\nv 67.870888 -272.262482 372.730835\nv 81.518890 -276.129730 372.727081\nv 94.544655 -281.745880 372.716064\nv 106.724960 -289.014282 372.698059\nv 117.851028 -297.810120 372.673279\nv 127.732658 -307.982239 372.641785\nv 136.200958 -319.356049 372.604431\nv 143.111435 -331.736511 372.561890\nv 148.346436 -344.911591 372.514954\nv 151.816956 -358.655670 372.463959\nv 153.464218 -372.734070 372.410217\nv 153.260498 -386.906189 372.354431\nv 151.209503 -400.930176 372.297638\nv 147.346313 -414.566772 372.240906\nv 141.736725 -427.583099 372.185059\nv 134.476364 -439.756775 372.131134\nv 125.688866 -450.879913 372.079895\nv 115.523827 -460.762329 372.032806\nv 104.154648 -469.234375 371.989990\nv 91.775673 -476.150757 371.952271\nv 78.598335 -481.392517 371.920471\nv 64.848114 -484.869385 371.895294\nv 50.760571 -486.521362 371.876923\nv 36.577110 -486.319733 371.865540\nv 22.541033 -484.267731 371.861420\nv 8.893129 -480.400513 371.865112\nv -4.132586 -474.784393 371.876099\nv -16.312847 -467.515930 371.894073\nv -27.438982 -458.720093 371.918884\nv -37.320572 -448.548035 371.950348\nv -45.788868 -437.174164 371.987762\nv -52.699379 -424.793671 372.030243\nv -57.934406 -411.618500 372.077179\nv -61.404919 -397.874451 372.128204\nv -63.052185 -383.796173 372.181976\nv -62.848438 -369.623993 372.237732\nv -60.797417 -355.599915 372.294434\nv -56.934177 -341.963440 372.351288\nv -51.324615 -328.947113 372.407166\nv -44.064220 -316.773376 372.461029\nv -35.276688 -305.650177 372.512146\nv -25.111691 -295.767822 372.559326\nv -13.742627 -287.295837 372.602142\nv -1.363612 -280.379486 372.639832\nv 11.813732 -275.137726 372.671692\nv 25.563877 -271.660858 372.696899\nv -0.997950 -281.154419 373.726532\nv 12.075705 -275.953796 373.758118\nv 25.717583 -272.504333 373.783112\nv 39.694206 -270.865417 373.801361\nv 53.765957 -271.065399 373.812744\nv 67.691521 -273.101257 373.816803\nv 81.232109 -276.938049 373.813171\nv 94.155304 -282.509979 373.802185\nv 106.239723 -289.721161 373.784393\nv 117.278221 -298.447693 373.759735\nv 127.082054 -308.539856 373.728485\nv 135.483627 -319.824097 373.691376\nv 142.339783 -332.107086 373.649261\nv 147.533569 -345.178528 373.602631\nv 150.976791 -358.814362 373.552155\nv 152.611084 -372.781891 373.498749\nv 152.408936 -386.842438 373.443420\nv 150.374069 -400.756073 373.387054\nv 146.541275 -414.285248 373.330688\nv 140.975906 -427.199158 373.275421\nv 133.772690 -439.276947 373.221771\nv 125.054321 -450.312561 373.171112\nv 114.969337 -460.117187 373.124268\nv 103.689644 -468.522491 373.081787\nv 91.408127 -475.384399 373.044464\nv 78.334564 -480.584869 373.012817\nv 64.692558 -484.034454 372.987885\nv 50.715916 -485.673462 372.969757\nv 36.644112 -485.473419 372.958374\nv 22.718521 -483.437500 372.954315\nv 9.178059 -479.600739 372.957947\nv -3.745125 -474.028809 372.968903\nv -15.829484 -466.817566 372.986633\nv -26.868015 -458.090973 373.011261\nv -36.671822 -447.998962 373.042511\nv -45.073437 -436.714691 373.079590\nv -51.929588 -424.431671 373.121765\nv -57.123379 -411.360199 373.168335\nv -60.566547 -397.724335 373.218903\nv -62.200912 -383.756897 373.272308\nv -61.998734 -369.696320 373.327606\nv -59.963886 -355.782623 373.383850\nv -56.131050 -342.253479 373.440308\nv -50.565639 -329.339661 373.495697\nv -43.362408 -317.261749 373.549225\nv -34.644039 -306.226135 373.599854\nv -24.559084 -296.421631 373.646698\nv -13.279498 -288.016327 373.689178\nv -58.692928 -356.054413 373.383911\nv -54.906448 -342.688721 373.439667\nv -49.408253 -329.930939 373.494354\nv -42.292088 -317.999023 373.547211\nv -33.679092 -307.096832 373.597290\nv -23.715992 -297.410706 373.643585\nv -12.572750 -289.106964 373.685486\nv -0.439598 -282.328033 373.722412\nv 12.476050 -277.190308 373.753632\nv 25.953081 -273.782501 373.778320\nv 39.760796 -272.163300 373.796326\nv 53.662506 -272.360901 373.807526\nv 67.419792 -274.372162 373.811646\nv 80.796738 -278.162659 373.808014\nv 93.563759 -283.667206 373.797119\nv 105.502121 -290.791260 373.779510\nv 116.407204 -299.412323 373.755188\nv 126.092567 -309.382507 373.724304\nv 134.392654 -320.530396 373.687653\nv 141.165939 -332.664917 373.646057\nv 146.296921 -345.578369 373.600037\nv 149.698532 -359.049438 373.550171\nv 151.313095 -372.848206 373.497345\nv 151.113403 -386.738831 373.442719\nv 149.103149 -400.484253 373.386993\nv 145.316635 -413.850067 373.331360\nv 139.818542 -426.607819 373.276703\nv 132.702377 -438.539734 373.223785\nv 124.089394 -449.441986 373.173737\nv 114.126251 -459.128021 373.127411\nv 102.982887 -467.431854 373.085541\nv 90.849777 -474.210785 373.048584\nv 77.934196 -479.348450 373.017334\nv 64.457077 -482.756256 372.992676\nv 50.649307 -484.375458 372.974731\nv 36.747581 -484.177826 372.963501\nv 22.990274 -482.166565 372.959534\nv 9.613434 -478.376129 372.963074\nv -3.153565 -472.871613 372.973907\nv -15.091901 -465.747498 372.991486\nv -25.997034 -457.126373 373.015808\nv -35.682381 -447.156311 373.046692\nv -43.982468 -436.008423 373.083313\nv -50.755753 -423.873779 373.124908\nv -55.886734 -410.960327 373.170959\nv -59.288368 -397.489258 373.220917\nv -60.902908 -383.690582 373.273682\nv -60.703239 -369.799927 373.328308\nv -58.009483 -397.251068 372.444733\nv -59.604286 -383.621185 372.496887\nv -59.407032 -369.900421 372.550751\nv -57.421326 -356.323090 372.605774\nv -53.681133 -343.120911 372.660767\nv -48.250244 -330.519226 372.714844\nv -41.221119 -318.733246 372.767059\nv -32.713482 -307.964355 372.816498\nv -22.872271 -298.396790 372.862244\nv -11.865293 -290.194611 372.903625\nv 0.119424 -283.498566 372.940094\nv 12.877095 -278.423706 372.970917\nv 26.189240 -275.057587 372.995331\nv 39.828075 -273.458160 373.013123\nv 53.559715 -273.653381 373.024231\nv 67.148720 -275.640076 373.028229\nv 80.362015 -279.384094 373.024628\nv 92.972885 -284.821411 373.013947\nv 104.765182 -291.858246 372.996521\nv 115.536919 -300.373871 372.972534\nv 125.103775 -310.222046 372.941956\nv 133.302292 -321.233612 372.905792\nv 139.992752 -333.219757 372.864746\nv 145.060959 -345.975220 372.819275\nv 148.420990 -359.281525 372.769958\nv 150.015778 -372.911499 372.717834\nv 149.818573 -386.632141 372.663818\nv 147.832901 -400.209473 372.608795\nv 144.092728 -413.411743 372.553833\nv 138.661804 -426.013489 372.499939\nv 131.632736 -437.799408 372.447571\nv 123.125107 -448.568298 372.398102\nv 113.283821 -458.135864 372.352356\nv 102.276817 -466.338104 372.311005\nv 90.292107 -473.034119 372.274536\nv 77.534500 -478.108917 372.243683\nv 64.222252 -481.475098 372.219330\nv 50.583393 -483.074463 372.201660\nv 36.851696 -482.879242 372.190521\nv 23.262690 -480.892639 372.186584\nv 10.049480 -477.148529 372.190094\nv -2.561337 -471.711304 372.200836\nv -14.353666 -464.674408 372.218170\nv -25.125376 -456.158691 372.242126\nv -34.692276 -446.310577 372.272644\nv -42.890812 -435.299042 372.308868\nv -49.581226 -423.312866 372.349945\nv -54.649490 -410.557404 372.395447\nv -25.739305 -417.835480 363.697418\nv -33.571136 -398.125519 363.767792\nv -36.035625 -377.064056 363.848236\nv -32.967281 -356.083832 363.933136\nv -24.575159 -336.611206 364.016693\nv -11.428694 -319.970917 364.093140\nv 5.579657 -307.296936 364.157227\nv 25.293003 -299.455383 364.204529\nv 46.367851 -296.984192 364.232300\nv 67.365685 -300.053986 364.238251\nv 86.852165 -308.455505 364.221771\nv 103.496841 -321.613892 364.184479\nv 116.165688 -338.629059 364.128693\nv 123.997505 -358.338959 364.058289\nv 126.462013 -379.400452 363.977936\nv 123.393700 -400.380646 363.892914\nv 115.001564 -419.853210 363.809387\nv 101.855072 -436.493591 363.732941\nv 84.846642 -449.167694 363.668915\nv 65.133331 -457.009155 363.621490\nv 44.058407 -459.480377 363.593903\nv 23.060604 -456.410553 363.587891\nv 3.574203 -448.009003 363.604279\nv -13.070519 -434.850647 363.641571\nv 9.370889 -438.275513 355.731140\nv -4.959378 -426.946747 355.763123\nv -15.866559 -412.297607 355.811279\nv -22.609373 -395.328278 355.871857\nv -24.731159 -377.195557 355.941193\nv -22.089460 -359.132568 356.014252\nv -14.864287 -342.367676 356.086182\nv -3.545811 -328.041199 356.151947\nv 11.097472 -317.129486 356.207123\nv 28.069666 -310.378479 356.247955\nv 46.214054 -308.250793 356.271790\nv 64.292091 -310.893677 356.276917\nv 81.068954 -318.127045 356.262756\nv 95.399170 -329.455719 356.230682\nv 106.306381 -344.104889 356.182587\nv 113.049210 -361.074158 356.122040\nv 115.171043 -379.206940 356.052826\nv 112.529350 -397.269867 355.979614\nv 105.304138 -414.034851 355.907684\nv 93.985657 -428.361298 355.841949\nv 79.342339 -439.273041 355.786774\nv 62.370155 -446.024170 355.745941\nv 44.225739 -448.151733 355.722137\nv 26.147690 -445.508759 355.716949\nv 59.996578 -436.541931 342.666748\nv 44.375149 -438.373718 342.646271\nv 28.810877 -436.098236 342.641846\nv 14.366900 -429.870758 342.654022\nv 2.029277 -420.117340 342.681519\nv -7.361268 -407.505096 342.723053\nv -13.166478 -392.895416 342.775146\nv -14.993220 -377.283997 342.834778\nv -12.718851 -361.732697 342.897827\nv -6.498351 -347.298981 342.959717\nv 3.246278 -334.964600 343.016296\nv 15.853403 -325.570251 343.063751\nv 30.465618 -319.757843 343.098999\nv 46.086998 -317.926147 343.119476\nv 61.651279 -320.201508 343.123901\nv 76.095291 -326.429047 343.111755\nv 88.432877 -336.182495 343.084198\nv 97.823433 -348.794586 343.042633\nv 103.628632 -363.404327 342.990509\nv 105.455414 -379.015778 342.930969\nv 103.181091 -394.567017 342.867889\nv 96.960548 -409.000763 342.805939\nv 87.215942 -421.335144 342.749451\nv 74.608780 -430.729584 342.701904\nv 88.683144 -403.995636 327.338684\nv 80.500298 -414.353241 327.291260\nv 69.913651 -422.242096 327.251312\nv 57.643333 -427.122894 327.221863\nv 44.525532 -428.661072 327.204651\nv 31.455721 -426.750336 327.200989\nv 19.326668 -421.520905 327.211151\nv 8.966356 -413.330627 327.234253\nv 1.080847 -402.739777 327.269165\nv -3.794009 -390.471527 327.312836\nv -5.327960 -377.362152 327.362976\nv -3.418108 -364.303223 327.415894\nv 1.805443 -352.182770 327.467896\nv 9.988307 -341.825226 327.515381\nv 20.574921 -333.936432 327.555298\nv 32.845253 -329.055573 327.584839\nv 45.963017 -327.517395 327.601990\nv 59.032833 -329.428101 327.605682\nv 71.161926 -334.657562 327.595551\nv 81.522194 -342.847870 327.572327\nv 89.407730 -353.438690 327.537537\nv 94.282555 -365.706970 327.493744\nv 95.816536 -378.816315 327.443756\nv 93.906723 -391.875244 327.390717\nv 86.099174 -367.699341 307.517059\nv 87.376671 -378.616547 307.475403\nv 85.786201 -389.491608 307.431274\nv 81.436134 -399.585327 307.387970\nv 74.621635 -408.210815 307.348541\nv 65.805344 -414.780426 307.315216\nv 55.586941 -418.845032 307.290680\nv 44.662743 -420.126038 307.276367\nv 33.778519 -418.534790 307.273254\nv 23.677738 -414.179810 307.281738\nv 15.049915 -407.359192 307.301025\nv 8.483071 -398.539337 307.330109\nv 4.423403 -388.322723 307.366516\nv 3.145958 -377.405548 307.408325\nv 4.736434 -366.530365 307.452332\nv 9.086502 -356.436707 307.495605\nv 15.900986 -347.811249 307.535156\nv 24.717262 -341.241608 307.568359\nv 34.935688 -337.177032 307.592957\nv 45.859859 -335.895966 307.607269\nv 56.744083 -337.487183 307.610352\nv 66.844894 -341.842194 307.601898\nv 75.472687 -348.662903 307.582581\nv 82.039543 -357.482635 307.553558\nv 63.862030 -346.787140 286.061859\nv 71.290100 -352.659424 286.045227\nv 76.943871 -360.252777 286.020203\nv 80.438995 -369.048889 285.988831\nv 81.538834 -378.448029 285.952972\nv 80.169518 -387.810913 285.915009\nv 76.424324 -396.501038 285.877686\nv 70.557419 -403.927216 285.843689\nv 62.967018 -409.583313 285.815094\nv 54.169483 -413.082764 285.794006\nv 44.764324 -414.185577 285.781616\nv 35.393543 -412.815643 285.778961\nv 26.697292 -409.066254 285.786224\nv 19.269182 -403.194000 285.802795\nv 13.615453 -395.600647 285.827881\nv 10.120298 -386.804535 285.859222\nv 9.020483 -377.405396 285.895203\nv 10.389800 -368.042419 285.933075\nv 14.134991 -359.352356 285.970367\nv 20.001900 -351.926178 286.004364\nv 27.592293 -346.270081 286.033020\nv 36.389820 -342.770630 286.054077\nv 45.794979 -341.667755 286.066498\nv 55.165733 -343.037750 286.069092\nv 38.927326 -352.394653 229.639969\nv 45.698715 -351.600555 229.648880\nv 52.445362 -352.586945 229.650757\nv 58.706360 -355.286377 229.645538\nv 64.054321 -359.514252 229.633606\nv 68.124817 -364.981201 229.615524\nv 70.641228 -371.314117 229.593018\nv 71.433075 -378.081146 229.567169\nv 70.447205 -384.822174 229.539841\nv 67.750786 -391.078766 229.512985\nv 63.526829 -396.425323 229.488495\nv 58.061977 -400.497498 229.467880\nv 51.728081 -403.016998 229.452713\nv 44.956654 -403.811005 229.443817\nv 38.210037 -402.824646 229.441864\nv 31.949034 -400.125214 229.447113\nv 26.601040 -395.897430 229.459061\nv 22.530563 -390.430450 229.477097\nv 20.014168 -384.097595 229.499680\nv 19.222342 -377.330505 229.525528\nv 20.208199 -370.589508 229.552811\nv 22.904608 -364.332916 229.579681\nv 27.128595 -358.986328 229.604172\nv 32.593410 -354.914124 229.624756\nv 27.546892 -366.802704 162.052444\nv 30.907209 -362.549286 162.071899\nv 35.254658 -359.309723 162.088303\nv 40.293518 -357.305389 162.100372\nv 45.680393 -356.673676 162.107498\nv 51.047596 -357.458344 162.108978\nv 56.028450 -359.605835 162.104843\nv 60.282967 -362.969269 162.095322\nv 63.521206 -367.318451 162.080978\nv 65.523071 -372.356506 162.063034\nv 66.153008 -377.739899 162.042480\nv 65.368736 -383.102631 162.020737\nv 63.223644 -388.079987 161.999313\nv 59.863316 -392.333374 161.979919\nv 55.515850 -395.572968 161.963501\nv 50.476978 -397.577301 161.951447\nv 45.090076 -398.208954 161.944366\nv 39.722893 -397.424347 161.942841\nv 34.742023 -395.276764 161.946976\nv 30.487518 -391.913422 161.956497\nv 27.249308 -387.564209 161.970840\nv 25.247421 -382.526215 161.988785\nv 24.617487 -377.142761 162.009338\nv 25.401785 -371.780060 162.031097\nv 35.116043 -379.299255 -36.580788\nv 34.789528 -376.508728 -36.570068\nv 35.196064 -373.728943 -36.558857\nv 36.307964 -371.148926 -36.547768\nv 38.049801 -368.944214 -36.537697\nv 40.303310 -367.264954 -36.529167\nv 42.915195 -366.225983 -36.522934\nv 45.707489 -365.898529 -36.519230\nv 48.489567 -366.305267 -36.518471\nv 51.071411 -367.418457 -36.520599\nv 53.276730 -369.161865 -36.525532\nv 54.955269 -371.416290 -36.533024\nv 55.992928 -374.027771 -36.542259\nv 56.319462 -376.818268 -36.552948\nv 55.912952 -379.598022 -36.564186\nv 54.801025 -382.178040 -36.575279\nv 53.059223 -384.382782 -36.585365\nv 50.805702 -386.062012 -36.593895\nv 48.193794 -387.100983 -36.600143\nv 45.401474 -387.428406 -36.603802\nv 42.619400 -387.021698 -36.604591\nv 40.037586 -385.908478 -36.602448\nv 37.832253 -384.165100 -36.597515\nv 36.153728 -381.910706 -36.590054\nv 24.926470 -518.190491 -87.540283\nv 24.693623 -520.718445 -87.540428\nv 23.814610 -523.100464 -87.540558\nv 22.349369 -525.174133 -87.540718\nv 20.397715 -526.798340 -87.540878\nv 18.092669 -527.862183 -87.540955\nv 15.591331 -528.293335 -87.541061\nv 13.064139 -528.062317 -87.541084\nv 10.683344 -527.184875 -87.541130\nv 8.611157 -525.720825 -87.541107\nv 6.988825 -523.769897 -87.541046\nv 5.926894 -521.465149 -87.540955\nv 5.497722 -518.963501 -87.540825\nv 5.730588 -516.435608 -87.540710\nv 6.609594 -514.053589 -87.540504\nv 8.074844 -511.979858 -87.540405\nv 10.026488 -510.355743 -87.540260\nv 12.331533 -509.291870 -87.540138\nv 14.832880 -508.860718 -87.540047\nv 17.360062 -509.091736 -87.540024\nv 19.740870 -509.969177 -87.540009\nv 21.813046 -511.433197 -87.540001\nv 23.435387 -513.384155 -87.540062\nv 24.497318 -515.688904 -87.540176\nv 6.290243 -506.218170 38.968838\nv 6.621806 -508.735626 38.968681\nv 7.593620 -511.081390 38.968613\nv 9.139465 -513.095703 38.968533\nv 11.153996 -514.641357 38.968555\nv 13.499928 -515.612976 38.968555\nv 16.017376 -515.944275 38.968590\nv 18.534798 -515.612732 38.968689\nv 20.880617 -514.640869 38.968811\nv 22.894985 -513.094971 38.968895\nv 24.440620 -511.080505 38.969059\nv 25.412197 -508.734619 38.969173\nv 25.743484 -506.217163 38.969353\nv 25.411932 -503.699707 38.969463\nv 24.440119 -501.353943 38.969578\nv 22.894272 -499.339508 38.969566\nv 20.879751 -497.793884 38.969635\nv 18.533810 -496.822327 38.969650\nv 16.016363 -496.491028 38.969582\nv 13.498940 -496.822601 38.969517\nv 11.153131 -497.794403 38.969379\nv 9.138742 -499.340210 38.969204\nv 7.593108 -501.354767 38.969070\nv 6.621542 -503.700714 38.968971\nv 6.285370 -506.227325 224.267151\nv 6.616937 -508.744720 224.101990\nv 7.588755 -511.090546 223.948151\nv 9.134604 -513.104919 223.816040\nv 11.149137 -514.650513 223.714737\nv 13.495071 -515.622070 223.651047\nv 16.012518 -515.953369 223.629364\nv 18.529940 -515.621826 223.651184\nv 20.875759 -514.650024 223.714996\nv 22.890123 -513.104187 223.816391\nv 24.435755 -511.089661 223.948593\nv 25.407328 -508.743713 224.102493\nv 25.738609 -506.226318 224.267654\nv 25.407053 -503.708923 224.432800\nv 24.435236 -501.363098 224.586594\nv 22.889387 -499.348724 224.718704\nv 20.874863 -497.803101 224.820053\nv 18.528919 -496.831543 224.883728\nv 16.011473 -496.500214 224.905441\nv 13.494050 -496.831818 224.883591\nv 11.148243 -497.803619 224.819809\nv 9.133857 -499.349426 224.718353\nv 7.588226 -501.363953 224.586166\nv 6.616664 -503.709869 224.432236\nv 6.285293 -506.750885 228.242203\nv 6.616870 -509.203461 227.584869\nv 7.588696 -511.488861 226.972412\nv 9.134554 -513.451355 226.446487\nv 11.149093 -514.957153 226.042908\nv 13.495029 -515.903687 225.789261\nv 16.012480 -516.226440 225.702789\nv 18.529898 -515.903442 225.789398\nv 20.875713 -514.956665 226.043167\nv 22.890072 -513.450623 226.446838\nv 24.435696 -511.487976 226.972855\nv 25.407259 -509.202454 227.585373\nv 25.738535 -506.749878 228.242706\nv 25.406967 -504.297272 228.900040\nv 24.435141 -502.011841 229.512482\nv 22.889284 -500.049377 230.038467\nv 20.874752 -498.543518 230.442017\nv 18.528807 -497.596985 230.695679\nv 16.011358 -497.274200 230.782104\nv 13.493938 -497.597260 230.695541\nv 11.148134 -498.544037 230.441757\nv 9.133755 -500.050079 230.038116\nv 7.588131 -502.012726 229.512039\nv 6.616578 -504.298248 228.899506\nv 6.285276 -508.285400 231.946304\nv 6.616856 -510.484283 230.676544\nv 7.588685 -512.533264 229.493469\nv 9.134545 -514.292725 228.477493\nv 11.149085 -515.642822 227.697937\nv 13.495024 -516.491455 227.207901\nv 16.012472 -516.780823 227.040848\nv 18.529892 -516.491211 227.208038\nv 20.875706 -515.642334 227.698196\nv 22.890062 -514.291992 228.477844\nv 24.435684 -512.532410 229.493912\nv 25.407246 -510.483276 230.677048\nv 25.738518 -508.284393 231.946808\nv 25.406946 -506.085449 233.216461\nv 24.435120 -504.036469 234.399582\nv 22.889259 -502.277008 235.415558\nv 20.874727 -500.926941 236.195129\nv 18.528780 -500.078339 236.685165\nv 16.011332 -499.788940 236.852234\nv 13.493911 -500.078613 236.685028\nv 11.148108 -500.927460 236.194870\nv 9.133730 -502.277710 235.415207\nv 7.588109 -504.037323 234.399170\nv 6.616558 -506.086456 233.215973\nv 6.285322 -510.726349 235.127090\nv 6.616893 -512.521606 233.331528\nv 7.588715 -514.194641 231.658371\nv 9.134569 -515.631226 230.221649\nv 11.149105 -516.733459 229.119217\nv 13.495040 -517.426331 228.426178\nv 16.012487 -517.662598 228.189865\nv 18.529909 -517.426086 228.426300\nv 20.875727 -516.732971 229.119476\nv 22.890087 -515.630493 230.222000\nv 24.435717 -514.193787 231.658813\nv 25.407282 -512.520630 233.332031\nv 25.738562 -510.725342 235.127594\nv 25.407000 -508.929962 236.923096\nv 24.435179 -507.257019 238.596268\nv 22.889324 -505.820465 240.033066\nv 20.874798 -504.718201 241.135498\nv 18.528852 -504.025299 241.828491\nv 16.011404 -503.789062 242.064804\nv 13.493983 -504.025574 241.828354\nv 11.148177 -504.718719 241.135239\nv 9.133795 -505.821167 240.032715\nv 7.588167 -507.257874 238.595840\nv 6.616610 -508.930969 236.922684\nv 6.285425 -513.907349 237.567642\nv 6.616979 -515.176758 235.368622\nv 7.588785 -516.359619 233.319458\nv 9.134626 -517.375366 231.559845\nv 11.149152 -518.154785 230.209641\nv 13.495080 -518.644592 229.360931\nv 16.012526 -518.811584 229.071442\nv 18.529949 -518.644348 229.361069\nv 20.875772 -518.154297 230.209900\nv 22.890144 -517.374634 231.560196\nv 24.435787 -516.358765 233.319901\nv 25.407368 -515.175781 235.369125\nv 25.738665 -513.906372 237.568176\nv 25.407120 -512.636841 239.767166\nv 24.435314 -511.453979 241.816360\nv 22.889473 -510.438202 243.575958\nv 20.874958 -509.658875 244.926193\nv 18.529018 -509.169006 245.774948\nv 16.011574 -509.002014 246.064407\nv 13.494150 -509.169281 245.774811\nv 11.148337 -509.659393 244.925934\nv 9.133945 -510.438934 243.575653\nv 7.588304 -511.454865 241.815918\nv 6.616730 -512.637817 239.766754\nv 6.285580 -517.611633 239.101807\nv 6.617109 -518.268677 236.649170\nv 7.588891 -518.880798 234.363632\nv 9.134711 -519.406555 232.401031\nv 11.149220 -519.809937 230.895142\nv 13.495139 -520.063354 229.948486\nv 16.012583 -520.149780 229.625687\nv 18.530008 -520.063110 229.948624\nv 20.875841 -519.809448 230.895401\nv 22.890228 -519.405823 232.401382\nv 24.435890 -518.880005 234.364044\nv 25.407497 -518.267700 236.649673\nv 25.738819 -517.610596 239.102310\nv 25.407299 -516.953491 241.554962\nv 24.435518 -516.341370 243.840469\nv 22.889698 -515.815613 245.803040\nv 20.875198 -515.412292 247.309021\nv 18.529270 -515.158813 248.255615\nv 16.011826 -515.072388 248.578430\nv 13.494399 -515.159058 248.255478\nv 11.148577 -515.412781 247.308762\nv 9.134170 -515.816345 245.802689\nv 7.588508 -516.342224 243.840042\nv 6.616910 -516.954468 241.554459\nv 6.285775 -521.586731 239.624939\nv 6.617271 -521.586548 237.085785\nv 7.589024 -521.586365 234.719666\nv 9.134818 -521.586182 232.687897\nv 11.149308 -521.585999 231.128922\nv 13.495214 -521.585815 230.148849\nv 16.012651 -521.585693 229.814651\nv 18.530083 -521.585571 230.148987\nv 20.875929 -521.585510 231.129166\nv 22.890335 -521.585449 232.688248\nv 24.436024 -521.585510 234.720108\nv 25.407661 -521.585571 237.086288\nv 25.739016 -521.585693 239.625443\nv 25.407528 -521.585876 242.164597\nv 24.435776 -521.586060 244.530701\nv 22.889982 -521.586182 246.562469\nv 20.875502 -521.586426 248.121567\nv 18.529585 -521.586609 249.101501\nv 16.012146 -521.586731 249.435745\nv 13.494716 -521.586853 249.101364\nv 11.148881 -521.586914 248.121307\nv 9.134453 -521.586914 246.562119\nv 7.588766 -521.586914 244.530258\nv 6.617138 -521.586853 242.164093\nv 6.285997 -525.561829 239.101379\nv 6.617458 -524.904419 236.648773\nv 7.589175 -524.291870 234.363358\nv 9.134940 -523.765869 232.400833\nv 11.149407 -523.362061 230.894943\nv 13.495299 -523.108276 229.948349\nv 16.012733 -523.021606 229.625488\nv 18.530169 -523.108032 229.948486\nv 20.876028 -523.361572 230.895203\nv 22.890457 -523.765137 232.401184\nv 24.436176 -524.291016 234.363785\nv 25.407846 -524.903442 236.649277\nv 25.739239 -525.560791 239.101883\nv 25.407787 -526.218140 241.554474\nv 24.436071 -526.830688 243.839890\nv 22.890305 -527.356750 245.802414\nv 20.875847 -527.760437 247.308319\nv 18.529945 -528.014282 248.254929\nv 16.012512 -528.100952 248.577805\nv 13.495075 -528.014526 248.254791\nv 11.149226 -527.760925 247.308060\nv 9.134776 -527.357483 245.802063\nv 7.589059 -526.831543 243.839493\nv 6.617398 -526.219116 241.553970\nv 6.286232 -529.265930 237.566833\nv 6.617654 -527.996216 235.367966\nv 7.589335 -526.812988 233.318924\nv 9.135069 -525.796875 231.559402\nv 11.149512 -525.017151 230.209259\nv 13.495389 -524.526978 229.360596\nv 16.012817 -524.359619 229.071182\nv 18.530258 -524.526733 229.360748\nv 20.876135 -525.016663 230.209518\nv 22.890587 -525.796143 231.559753\nv 24.436337 -526.812134 233.319366\nv 25.408043 -527.995239 235.368454\nv 25.739473 -529.264893 237.567337\nv 25.408062 -530.534607 239.766266\nv 24.436378 -531.717834 241.815308\nv 22.890646 -532.733887 243.574799\nv 20.876213 -533.513611 244.924942\nv 18.530325 -534.003845 245.773621\nv 16.012897 -534.171143 246.063065\nv 13.495457 -534.004089 245.773483\nv 11.149592 -533.514160 244.924667\nv 9.135118 -532.734619 243.574448\nv 7.589370 -531.718689 241.814865\nv 6.617672 -530.535583 239.765762\nv 6.286464 -532.446655 235.125946\nv 6.617847 -530.651001 233.330566\nv 7.589493 -528.977783 231.657623\nv 9.135196 -527.540894 230.220993\nv 11.149615 -526.438293 229.118652\nv 13.495478 -525.745117 228.425751\nv 16.012901 -525.508606 228.189499\nv 18.530348 -525.744873 228.425888\nv 20.876238 -526.437805 229.118927\nv 22.890713 -527.540161 230.221344\nv 24.436495 -528.976929 231.658066\nv 25.408236 -530.650024 233.331070\nv 25.739704 -532.445618 235.126450\nv 25.408331 -534.241211 236.921738\nv 24.436686 -535.914429 238.594803\nv 22.890984 -537.351318 240.031372\nv 20.876572 -538.453979 241.133698\nv 18.530699 -539.147156 241.826645\nv 16.013277 -539.383606 242.062912\nv 13.495831 -539.147400 241.826508\nv 11.149952 -538.454468 241.133438\nv 9.135453 -537.352051 240.031021\nv 7.589676 -535.915283 238.594330\nv 6.617942 -534.242187 236.921295\nv 6.286676 -534.887268 231.944885\nv 6.618024 -532.688171 230.675400\nv 7.589637 -530.638977 229.492493\nv 9.135312 -528.879272 228.476746\nv 11.149711 -527.528809 227.697342\nv 13.495560 -526.679932 227.207397\nv 16.012978 -526.390320 227.040359\nv 18.530428 -526.679687 227.207535\nv 20.876331 -527.528320 227.697601\nv 22.890829 -528.878540 228.477097\nv 24.436638 -530.638123 229.492935\nv 25.408413 -532.687195 230.675903\nv 25.739918 -534.886230 231.945419\nv 25.408577 -537.085327 233.214844\nv 24.436966 -539.134521 234.397736\nv 22.891291 -540.894287 235.413528\nv 20.876902 -542.244629 236.192963\nv 18.531042 -543.093567 236.682907\nv 16.013624 -543.383179 236.849960\nv 13.496172 -543.093811 236.682770\nv 11.150281 -542.245117 236.192703\nv 9.135762 -540.895020 235.413193\nv 7.589955 -539.135437 234.397369\nv 6.618188 -537.086304 233.214340\nv 6.286854 -536.421448 228.240616\nv 6.618172 -533.968689 227.583588\nv 7.589758 -531.683105 226.971329\nv 9.135410 -529.720398 226.445587\nv 11.149790 -528.214355 226.042221\nv 13.495627 -527.267517 225.788651\nv 16.013042 -526.944458 225.702255\nv 18.530497 -527.267273 225.788788\nv 20.876411 -528.213867 226.042480\nv 22.890926 -529.719666 226.445938\nv 24.436758 -531.682251 226.971771\nv 25.408562 -533.967712 227.584091\nv 25.740095 -536.420349 228.241150\nv 25.408787 -538.873047 228.898209\nv 24.437201 -541.158630 229.510406\nv 22.891550 -543.121399 230.036209\nv 20.877176 -544.627441 230.439575\nv 18.531332 -545.574219 230.693161\nv 16.013916 -545.897278 230.779572\nv 13.496462 -545.574524 230.693008\nv 11.150558 -544.627930 230.439316\nv 9.136021 -543.122131 230.035858\nv 7.590191 -541.159546 229.510025\nv 6.618395 -538.874023 228.897705\nv 6.286986 -536.944580 224.265533\nv 6.618288 -534.427063 224.100723\nv 7.589859 -532.081116 223.947083\nv 9.135497 -530.066528 223.815186\nv 11.149867 -528.520752 223.714066\nv 13.495699 -527.548889 223.650467\nv 16.013111 -527.217285 223.628830\nv 18.530567 -527.548645 223.650604\nv 20.876488 -528.520264 223.714325\nv 22.891016 -530.065796 223.815536\nv 24.436859 -532.080261 223.947525\nv 25.408678 -534.426086 224.101227\nv 25.740225 -536.943542 224.266052\nv 25.408934 -539.460937 224.430862\nv 24.437365 -541.806885 224.584457\nv 22.891726 -543.821411 224.716293\nv 20.877365 -545.367310 224.817505\nv 18.531525 -546.339111 224.881073\nv 16.014112 -546.670654 224.902710\nv 13.496655 -546.339355 224.880936\nv 11.150745 -545.367798 224.817245\nv 9.136197 -543.822205 224.716003\nv 7.590354 -541.807739 224.584015\nv 6.618544 -539.461914 224.430359\nv 6.291859 -536.932007 38.967236\nv 6.623158 -534.414551 38.967354\nv 7.594723 -532.068604 38.967606\nv 9.140358 -530.054077 38.967709\nv 11.154726 -528.508240 38.967899\nv 13.500555 -527.536377 38.968037\nv 16.017967 -527.204834 38.968117\nv 18.535425 -527.536133 38.968170\nv 20.881348 -528.507751 38.968155\nv 22.895876 -530.053345 38.968071\nv 24.441725 -532.067749 38.968052\nv 25.413548 -534.413574 38.967846\nv 25.745100 -536.930969 38.967751\nv 25.413813 -539.448425 38.967541\nv 24.442245 -541.794312 38.967350\nv 22.896612 -543.808838 38.967186\nv 20.882252 -545.354736 38.967026\nv 18.536413 -546.326538 38.966858\nv 16.019001 -546.658081 38.966774\nv 13.501544 -546.326782 38.966724\nv 11.155632 -545.355225 38.966770\nv 9.141082 -543.809570 38.966824\nv 7.595235 -541.795166 38.966904\nv 6.623421 -539.449402 38.967049\nv 6.621604 -503.700531 36.209175\nv 6.297764 -506.218048 36.278912\nv 6.621869 -508.735443 36.208931\nv 7.571877 -511.081207 36.004028\nv 9.083013 -513.095581 35.678158\nv 11.052295 -514.641235 35.253510\nv 13.345538 -515.612793 34.759079\nv 15.806450 -515.944031 34.228474\nv 18.267324 -515.612427 33.697960\nv 20.560467 -514.640625 33.203606\nv 22.529598 -513.094788 32.779156\nv 24.040510 -511.080231 32.453453\nv 24.990253 -508.734253 32.248779\nv 25.314112 -506.216827 32.179104\nv 24.989988 -503.699371 32.249039\nv 24.039999 -501.353607 32.453896\nv 22.528854 -499.339264 32.779812\nv 20.559563 -497.793640 33.204399\nv 18.266327 -496.822052 33.698891\nv 15.805408 -496.490784 34.229465\nv 13.344540 -496.822357 34.759979\nv 11.051409 -497.794250 35.254303\nv 9.082279 -499.340088 35.678829\nv 7.571346 -501.354645 36.004471\nv 6.623230 -534.414307 36.207588\nv 6.299380 -536.931824 36.277294\nv 6.623484 -539.449219 36.207268\nv 7.573473 -541.795044 36.002319\nv 9.084598 -543.809448 35.676388\nv 11.053881 -545.355042 35.251770\nv 13.347114 -546.326599 34.757263\nv 15.808036 -546.657837 34.226704\nv 18.268902 -546.326233 33.696129\nv 20.562052 -545.354370 33.201836\nv 22.531185 -543.808533 32.777416\nv 24.042109 -541.794006 32.451729\nv 24.991859 -539.448059 32.247116\nv 25.315727 -536.930603 32.177395\nv 24.991613 -534.413147 32.247452\nv 24.041626 -532.067383 32.452415\nv 22.530500 -530.053040 32.778301\nv 20.561216 -528.507385 33.202950\nv 18.267984 -527.535889 33.697441\nv 15.807062 -527.204590 34.228001\nv 13.346186 -527.536194 34.758560\nv 11.053045 -528.507996 35.252884\nv 9.083914 -530.053894 35.677334\nv 7.572991 -532.068420 36.002930\nv 9.941326 -497.794159 32.656101\nv 8.125905 -499.340057 33.528915\nv 6.732924 -501.354584 34.198616\nv 5.857305 -503.700500 34.619583\nv 5.558745 -506.217957 34.763069\nv 5.857580 -508.735382 34.619308\nv 6.733445 -511.081238 34.198158\nv 8.126649 -513.095581 33.528259\nv 9.942243 -514.641113 32.655262\nv 12.056499 -515.612671 31.638699\nv 14.325338 -515.943970 30.547817\nv 16.594139 -515.612366 29.457010\nv 18.708292 -514.640503 28.440540\nv 20.523718 -513.094543 27.567663\nv 21.916698 -511.080048 26.897976\nv 22.792294 -508.734131 26.477039\nv 23.090866 -506.216644 26.333538\nv 22.792030 -503.699249 26.477253\nv 21.916155 -501.353394 26.898479\nv 20.522970 -499.339081 27.568350\nv 18.707378 -497.793488 28.441334\nv 16.593121 -496.821899 29.457911\nv 14.324284 -496.490692 30.548794\nv 12.055482 -496.822296 31.639599\nv 9.943011 -528.507874 32.654606\nv 8.127570 -530.053772 33.527435\nv 6.734579 -532.068359 34.197075\nv 5.858942 -534.414307 34.618011\nv 5.560361 -536.931763 34.761452\nv 5.859186 -539.449158 34.617676\nv 6.735021 -541.794983 34.196465\nv 8.128203 -543.809326 33.526505\nv 9.943789 -545.354919 32.653492\nv 12.058035 -546.326477 31.636883\nv 14.326873 -546.657715 30.546032\nv 16.595673 -546.326111 29.455210\nv 18.709839 -545.354248 28.438725\nv 20.525282 -543.808350 27.565969\nv 21.918272 -541.793762 26.896267\nv 22.793901 -539.447876 26.475330\nv 23.092482 -536.930420 26.331905\nv 22.793655 -534.412964 26.475712\nv 21.917810 -532.067139 26.896923\nv 20.524628 -530.052795 27.566870\nv 18.709064 -528.507202 28.439854\nv 16.594816 -527.535767 29.456446\nv 14.325980 -527.204468 30.547329\nv 12.057167 -527.536072 31.638180\nv 12.574459 -496.821930 25.294535\nv 10.786837 -496.490631 27.067179\nv 8.999256 -496.822327 28.839760\nv 7.333533 -497.794159 30.491449\nv 5.903198 -499.340088 31.909822\nv 4.805685 -501.354645 32.998081\nv 4.115830 -503.700531 33.682236\nv 3.880627 -506.218018 33.915401\nv 4.116115 -508.735443 33.681946\nv 4.806227 -511.081268 32.997623\nv 5.903951 -513.095581 31.909121\nv 7.334480 -514.641174 30.490610\nv 9.000295 -515.612732 28.838783\nv 10.787910 -515.943970 27.066202\nv 12.575477 -515.612305 25.293650\nv 14.241200 -514.640503 23.641899\nv 15.671556 -513.094604 22.223557\nv 16.769039 -511.079987 21.135267\nv 17.458902 -508.734070 20.451143\nv 17.694107 -506.216583 20.217903\nv 17.458618 -503.699219 20.451387\nv 16.768507 -501.353363 21.135756\nv 15.670792 -499.339081 22.224213\nv 14.240264 -497.793427 23.642738\nv 12.576204 -527.535645 25.293055\nv 10.788582 -527.204468 27.065683\nv 9.001001 -527.536011 28.838249\nv 7.335259 -528.507935 30.489954\nv 5.904904 -530.053833 31.908281\nv 4.807360 -532.068359 32.996571\nv 4.117486 -534.414307 33.680634\nv 3.882242 -536.931824 33.913830\nv 4.117701 -539.449219 33.680267\nv 4.807772 -541.795044 32.995945\nv 5.905487 -543.809326 31.907412\nv 7.335976 -545.354980 30.488871\nv 9.001780 -546.326416 28.837059\nv 10.789395 -546.657715 27.064432\nv 12.576982 -546.326050 25.291834\nv 14.242716 -545.354248 23.640175\nv 15.673082 -543.808289 22.221848\nv 16.770605 -541.793762 21.133497\nv 17.460480 -539.447815 20.449495\nv 17.695723 -536.930359 20.216286\nv 17.460264 -534.412903 20.449800\nv 16.770184 -532.067139 21.134184\nv 15.672498 -530.052795 22.222702\nv 14.242000 -528.507202 23.641243\nv -22.294029 -506.214905 -40.742104\nv -22.550695 -508.732422 -40.532696\nv -23.303427 -511.078369 -39.918522\nv -24.500935 -513.092896 -38.941380\nv -26.061619 -514.638794 -37.667862\nv -27.879126 -515.610718 -36.184814\nv -29.829569 -515.942322 -34.593254\nv -31.780060 -515.611084 -33.001583\nv -33.597660 -514.639587 -31.518461\nv -35.158493 -513.093933 -30.244776\nv -36.356213 -511.079620 -29.267389\nv -37.109184 -508.733826 -28.652924\nv -37.366096 -506.216400 -28.443258\nv -37.109428 -503.698975 -28.652664\nv -36.356701 -501.353027 -29.266840\nv -35.159184 -499.338440 -30.243998\nv -33.598507 -497.792542 -31.517454\nv -31.780996 -496.820709 -33.000546\nv -29.830553 -496.489044 -34.592110\nv -27.880064 -496.820312 -36.183701\nv -26.062464 -497.791779 -37.666901\nv -24.501640 -499.337402 -38.940601\nv -23.303907 -501.351746 -39.917957\nv -22.550936 -503.697540 -40.532421\nv -27.479500 -506.214813 -46.875156\nv -27.631824 -508.732300 -46.537975\nv -28.287361 -511.078186 -45.804623\nv -29.401382 -513.092712 -44.725155\nv -30.898027 -514.638733 -43.373158\nv -32.675251 -515.610535 -41.840778\nv -34.611992 -515.942139 -40.232372\nv -36.576191 -515.610901 -38.657593\nv -38.434055 -514.639404 -37.223774\nv -40.058971 -513.093811 -36.028641\nv -41.340160 -511.079437 -35.153538\nv -42.190361 -508.733734 -34.658230\nv -42.551586 -506.216217 -34.576359\nv -42.399223 -503.698822 -34.913605\nv -41.743721 -501.352844 -35.646957\nv -40.629688 -499.338287 -36.726395\nv -39.133053 -497.792419 -38.078407\nv -37.355793 -496.820496 -39.610771\nv -35.419079 -496.488922 -41.219208\nv -33.454861 -496.820129 -42.793987\nv -31.596991 -497.791656 -44.227806\nv -29.972090 -499.337280 -45.422955\nv -28.690910 -501.351562 -46.298042\nv -27.840723 -503.697388 -46.793320\nv -29.992601 -506.738098 -49.955090\nv -29.833780 -509.190765 -49.236504\nv -30.199358 -511.476318 -48.147827\nv -31.064402 -513.439026 -46.763268\nv -32.369976 -514.945190 -45.177120\nv -34.027100 -515.892029 -43.497494\nv -35.922859 -516.215149 -41.838928\nv -37.928051 -515.892395 -40.314323\nv -39.906025 -514.945862 -39.027721\nv -41.721970 -513.440063 -38.066681\nv -43.252144 -511.477631 -37.496788\nv -44.392311 -509.192230 -37.356789\nv -45.064709 -506.739563 -37.656261\nv -45.223541 -504.286865 -38.374863\nv -44.857986 -502.001312 -39.463535\nv -43.992939 -500.038635 -40.848125\nv -42.687347 -498.532471 -42.434258\nv -41.030216 -497.585632 -44.113888\nv -39.134476 -497.262573 -45.772484\nv -37.129272 -497.585297 -47.297058\nv -35.151318 -498.531769 -48.583687\nv -33.335354 -500.037598 -49.544731\nv -31.805164 -502.000092 -50.114651\nv -30.665031 -504.285492 -50.254620\nv -32.334423 -508.272400 -52.825130\nv -31.788462 -510.471466 -51.632076\nv -31.793232 -512.520630 -50.101269\nv -32.348484 -514.280396 -48.336971\nv -33.416367 -515.630798 -46.459526\nv -34.924030 -516.479675 -44.596760\nv -36.768837 -516.769409 -42.875679\nv -38.824970 -516.480042 -41.413589\nv -40.952400 -515.631409 -40.310112\nv -43.006042 -514.281372 -39.640400\nv -44.846035 -512.521912 -39.450153\nv -46.346954 -510.472809 -39.752350\nv -47.406509 -508.273834 -40.526318\nv -47.952469 -506.074799 -41.719357\nv -47.947693 -504.025604 -43.250164\nv -47.392445 -502.265930 -45.014446\nv -46.324581 -500.915527 -46.891949\nv -44.816891 -500.066559 -48.754704\nv -42.972111 -499.776855 -50.475769\nv -40.915962 -500.066193 -51.937874\nv -38.788555 -500.914825 -53.041332\nv -36.734879 -502.264832 -53.711048\nv -34.894901 -504.024384 -53.901279\nv -33.393974 -506.073486 -53.599098\nv -34.345383 -510.713196 -55.289814\nv -33.466949 -512.508667 -53.689297\nv -33.161953 -514.181824 -51.778767\nv -33.451160 -515.618713 -49.688427\nv -34.314888 -516.721375 -47.560780\nv -35.694256 -517.414490 -45.540733\nv -37.495270 -517.651062 -43.766048\nv -39.595200 -517.414917 -42.357609\nv -41.850910 -516.722046 -41.411350\nv -44.108727 -515.619751 -40.991867\nv -46.214733 -514.183105 -41.127682\nv -48.025440 -512.510071 -41.809566\nv -49.417454 -510.714569 -42.991016\nv -50.295895 -508.919098 -44.591503\nv -50.600883 -507.245880 -46.502048\nv -50.311684 -505.809052 -48.592342\nv -49.447945 -504.706451 -50.720051\nv -48.068581 -504.013214 -52.740047\nv -46.267574 -503.776733 -54.514812\nv -44.167645 -504.012878 -55.923267\nv -41.911922 -504.705719 -56.869450\nv -39.654137 -505.808044 -57.288960\nv -37.548115 -507.244659 -57.153164\nv -35.737404 -508.917694 -56.471275\nv -35.888325 -513.893982 -57.181011\nv -34.754807 -515.163635 -55.267853\nv -34.212105 -516.346802 -53.065948\nv -34.297199 -517.362854 -50.725418\nv -35.004261 -518.142517 -48.405781\nv -36.285202 -518.632751 -46.265038\nv -38.052631 -518.800110 -44.449226\nv -40.186131 -518.633118 -43.081867\nv -42.540321 -518.143250 -42.256351\nv -44.954750 -517.363831 -42.028847\nv -47.264896 -516.348083 -42.414833\nv -49.313301 -515.165100 -43.388123\nv -50.960430 -513.895508 -44.882214\nv -52.093941 -512.625854 -46.795452\nv -52.636669 -511.442719 -48.997341\nv -52.551548 -510.426666 -51.337822\nv -51.844490 -509.646912 -53.657505\nv -50.563560 -509.156738 -55.798191\nv -48.796120 -508.989380 -57.614090\nv -46.662624 -509.156311 -58.981407\nv -44.308437 -509.646179 -59.806892\nv -41.894001 -510.425598 -60.034428\nv -39.583855 -511.441406 -59.648396\nv -37.535450 -512.624390 -58.675167\nv -36.858173 -517.598206 -58.370033\nv -35.564316 -518.255432 -56.260258\nv -34.872189 -518.867920 -53.875198\nv -34.828979 -519.393982 -51.377396\nv -35.437634 -519.797668 -48.937073\nv -36.656628 -520.051514 -46.720493\nv -38.402981 -520.138184 -44.878666\nv -40.557583 -520.051819 -43.537292\nv -42.973660 -519.798340 -42.787628\nv -45.486557 -519.394958 -42.680794\nv -47.924980 -518.869202 -43.224129\nv -50.122818 -518.256775 -44.380531\nv -51.930252 -517.599609 -46.071175\nv -53.224136 -516.942383 -48.180996\nv -53.916248 -516.329895 -50.566040\nv -53.959461 -515.803955 -53.063828\nv -53.350796 -515.400208 -55.504227\nv -52.131794 -515.146362 -57.720776\nv -50.385448 -515.059631 -59.562542\nv -48.230846 -515.145996 -60.903980\nv -45.814777 -515.399475 -61.653610\nv -43.301872 -515.802856 -61.760464\nv -40.863449 -516.328613 -61.217125\nv -38.665607 -516.940979 -60.060757\nv -37.188850 -521.573303 -58.775726\nv -35.840317 -521.573303 -56.598919\nv -35.097240 -521.573364 -54.151360\nv -35.010300 -521.573486 -51.599812\nv -35.585361 -521.573730 -49.118290\nv -36.783283 -521.573914 -46.875847\nv -38.522411 -521.574036 -45.025246\nv -40.684227 -521.574280 -43.692692\nv -43.121418 -521.574402 -42.968861\nv -45.667866 -521.574524 -42.903255\nv -48.150059 -521.574707 -43.500214\nv -50.398842 -521.574646 -44.719128\nv -52.260956 -521.574707 -46.476929\nv -53.609470 -521.574707 -48.653740\nv -54.352539 -521.574585 -51.101345\nv -54.439503 -521.574463 -53.652828\nv -53.864449 -521.574280 -56.134350\nv -52.666519 -521.574036 -58.376842\nv -50.927402 -521.573975 -60.227413\nv -48.765564 -521.573730 -61.559982\nv -46.328407 -521.573547 -62.283794\nv -43.781956 -521.573486 -62.349403\nv -41.299751 -521.573364 -61.752460\nv -39.050983 -521.573364 -60.533512\nv -36.857754 -525.548401 -58.370461\nv -35.563969 -524.891296 -56.260639\nv -34.871902 -524.278931 -53.875488\nv -34.828751 -523.753174 -51.377625\nv -35.437412 -523.349792 -48.937195\nv -36.656467 -523.096313 -46.720615\nv -38.402821 -523.009949 -44.878849\nv -40.557411 -523.096680 -43.537415\nv -42.973473 -523.350525 -42.787811\nv -45.486309 -523.754150 -42.681068\nv -47.924694 -524.280151 -43.224373\nv -50.122471 -524.892639 -44.380882\nv -51.929832 -525.549805 -46.071648\nv -53.223648 -526.206970 -48.181454\nv -53.915695 -526.819275 -50.566605\nv -53.958855 -527.345093 -53.064438\nv -53.350147 -527.748413 -55.504898\nv -52.131126 -528.001892 -57.721493\nv -50.384781 -528.088196 -59.563259\nv -48.230171 -528.001587 -60.904636\nv -45.814129 -527.747803 -61.654266\nv -43.301266 -527.344055 -61.761074\nv -40.862896 -526.818054 -61.217690\nv -38.665119 -526.205566 -60.061230\nv -35.887516 -529.252563 -57.181850\nv -34.754131 -527.983032 -55.268555\nv -34.211555 -526.800171 -53.066498\nv -34.296738 -525.784302 -50.725906\nv -35.003899 -525.004944 -48.406147\nv -36.284870 -524.515015 -46.265358\nv -38.052330 -524.348145 -44.449501\nv -40.185814 -524.515442 -43.082203\nv -42.539932 -525.005615 -42.256687\nv -44.954308 -525.785339 -42.029320\nv -47.264339 -526.801331 -42.415443\nv -49.312626 -527.984436 -43.388779\nv -50.959621 -529.254028 -44.883038\nv -52.092999 -530.523621 -46.796368\nv -52.635605 -531.706482 -48.998409\nv -52.550396 -532.722290 -51.339012\nv -51.843235 -533.501770 -53.658756\nv -50.562256 -533.991577 -55.799519\nv -48.794807 -534.158569 -57.615448\nv -46.661320 -533.991211 -58.982719\nv -44.307194 -533.500977 -59.808186\nv -41.892830 -532.721313 -60.035603\nv -39.582806 -531.705261 -59.649464\nv -37.534508 -530.522156 -58.676098\nv -34.344238 -532.433472 -55.290974\nv -33.465996 -530.638062 -53.690273\nv -33.161175 -528.965027 -51.779560\nv -33.450523 -527.528381 -49.689068\nv -34.314377 -526.426147 -47.561253\nv -35.693817 -525.733337 -45.541222\nv -37.494858 -525.497070 -43.766430\nv -39.594749 -525.733643 -42.358021\nv -41.850399 -526.426880 -41.411869\nv -44.108082 -527.529419 -40.992493\nv -46.213943 -528.966309 -41.128414\nv -48.024487 -530.639465 -41.810452\nv -49.416313 -532.434998 -42.992130\nv -50.294563 -534.230347 -44.592846\nv -50.599377 -535.903381 -46.503590\nv -50.310036 -537.339966 -48.594036\nv -49.446171 -538.442261 -50.721806\nv -48.066734 -539.135071 -52.741940\nv -46.265720 -539.371338 -54.516689\nv -44.165806 -539.134705 -55.925098\nv -41.910168 -538.441528 -56.871265\nv -39.652477 -537.338928 -57.290607\nv -37.546608 -535.902100 -57.154644\nv -35.736073 -534.228943 -56.472588\nv -32.333023 -534.874268 -52.826534\nv -31.787292 -532.675293 -51.633236\nv -31.792269 -530.626221 -50.102200\nv -32.347710 -528.866760 -48.337749\nv -33.415710 -527.516724 -46.460136\nv -34.923492 -526.668091 -44.597248\nv -36.768299 -526.378906 -42.876167\nv -38.824413 -526.668457 -41.414093\nv -40.951729 -527.517395 -40.310707\nv -43.005268 -528.867798 -39.641148\nv -44.845081 -530.627502 -39.451084\nv -46.345787 -532.676758 -39.753494\nv -47.405109 -534.875732 -40.527706\nv -47.950848 -537.074646 -41.720974\nv -47.945854 -539.123718 -43.252056\nv -47.390430 -540.883240 -45.016552\nv -46.322426 -542.233276 -46.894115\nv -44.814659 -543.081848 -48.757008\nv -42.969837 -543.371155 -50.478073\nv -40.913715 -543.081482 -51.940147\nv -38.786381 -542.232483 -53.043545\nv -36.732864 -540.882202 -53.713078\nv -34.893063 -539.122437 -53.903172\nv -33.392357 -537.073303 -53.600746\nv -29.991039 -536.408630 -49.956661\nv -29.832478 -533.956055 -49.237801\nv -30.198265 -531.670593 -48.148880\nv -31.063534 -529.708130 -46.764091\nv -32.369267 -528.202332 -45.177731\nv -34.026489 -527.255798 -43.498089\nv -35.922283 -526.933167 -41.839478\nv -37.927425 -527.256165 -40.314949\nv -39.905300 -528.203003 -39.028378\nv -41.721107 -529.709167 -38.067505\nv -43.251080 -531.671875 -37.497795\nv -44.391010 -533.957397 -37.358086\nv -45.063148 -536.410095 -37.657848\nv -45.221722 -538.862671 -38.376709\nv -44.855927 -541.148132 -39.465611\nv -43.990685 -543.110596 -40.850399\nv -42.684944 -544.616394 -42.436760\nv -41.027733 -545.562866 -44.116421\nv -39.131916 -545.885620 -45.775063\nv -37.126770 -545.562561 -47.299591\nv -35.148903 -544.615662 -48.586128\nv -33.333088 -543.109558 -49.546974\nv -31.803118 -541.146790 -50.116726\nv -30.663214 -538.861267 -50.256374\nv -27.477884 -536.932007 -46.876820\nv -27.630472 -534.414612 -46.539318\nv -28.286257 -532.068787 -45.805752\nv -29.400501 -530.054443 -44.726131\nv -30.897297 -528.508850 -43.373920\nv -32.674644 -527.537354 -41.841434\nv -34.611412 -527.206116 -40.233013\nv -36.575603 -527.537720 -38.658264\nv -38.433357 -528.509521 -37.224552\nv -40.058090 -530.055481 -36.029541\nv -41.339069 -532.070068 -35.154713\nv -42.189011 -534.415955 -34.659573\nv -42.549969 -536.933411 -34.578007\nv -42.397343 -539.450867 -34.915512\nv -41.741581 -541.796631 -35.649078\nv -40.627338 -543.810974 -36.728714\nv -39.130531 -545.356628 -38.080879\nv -37.353180 -546.328125 -39.613350\nv -35.416439 -546.659363 -41.221832\nv -33.452244 -546.327759 -42.796535\nv -31.594469 -545.355896 -44.230278\nv -29.969749 -543.809998 -45.425320\nv -28.688774 -541.795410 -46.300148\nv -27.838842 -539.449463 -46.795242\nv -22.292414 -536.931702 -40.743721\nv -22.549351 -534.414246 -40.534084\nv -23.302341 -532.068481 -39.919636\nv -24.500084 -530.054138 -38.942341\nv -26.060949 -528.508545 -37.668671\nv -27.878548 -527.537048 -36.185471\nv -29.829027 -527.205811 -34.593880\nv -31.779472 -527.537354 -33.002300\nv -33.596970 -528.509277 -31.519239\nv -35.157631 -530.055115 -30.245691\nv -36.355122 -532.069702 -29.268549\nv -37.107845 -534.415710 -28.654343\nv -37.364479 -536.933167 -28.444845\nv -37.107536 -539.450562 -28.654510\nv -36.354549 -541.796326 -29.268961\nv -35.156807 -543.810669 -30.246286\nv -33.595955 -545.356262 -31.519957\nv -31.778353 -546.327820 -33.003094\nv -29.827866 -546.659058 -34.594749\nv -27.877419 -546.327454 -36.186295\nv -26.059935 -545.355469 -37.669373\nv -24.499258 -543.809631 -38.942890\nv -23.301771 -541.795105 -39.920017\nv -22.549046 -539.449158 -40.534283\nv -20.867844 -534.414307 -38.479599\nv -20.646027 -536.931641 -38.726112\nv -20.867540 -539.449158 -38.479828\nv -21.517307 -541.795105 -37.757568\nv -22.551031 -543.809631 -36.608532\nv -23.898270 -545.355591 -35.111042\nv -25.467226 -546.327454 -33.367126\nv -27.150967 -546.659058 -31.495678\nv -28.834743 -546.327820 -29.624142\nv -30.403820 -545.356323 -27.880163\nv -31.751249 -543.810608 -26.382549\nv -32.785236 -541.796326 -25.233315\nv -33.435280 -539.450500 -24.510889\nv -33.657101 -536.933167 -24.264374\nv -33.435585 -534.415649 -24.510660\nv -32.785816 -532.069702 -25.232903\nv -31.752104 -530.055115 -26.381924\nv -30.404856 -528.509216 -27.879461\nv -28.835901 -527.537415 -29.623333\nv -27.152159 -527.205750 -31.494823\nv -25.468382 -527.536987 -33.366333\nv -23.899315 -528.508545 -35.110294\nv -22.551874 -530.054077 -36.607952\nv -21.517887 -532.068481 -37.757126\nv -20.869431 -503.697571 -38.477982\nv -20.647642 -506.214996 -38.724464\nv -20.869177 -508.732483 -38.478241\nv -21.518972 -511.078400 -37.755966\nv -22.552727 -513.092957 -36.607010\nv -23.899996 -514.638855 -35.109516\nv -25.468960 -515.610718 -33.365631\nv -27.152693 -515.942322 -31.494183\nv -28.836479 -515.611145 -29.622692\nv -30.405527 -514.639587 -27.878668\nv -31.752956 -513.093933 -26.381023\nv -32.786900 -511.079712 -25.231804\nv -33.436924 -508.733887 -24.509302\nv -33.658726 -506.216492 -24.262772\nv -33.437168 -503.699005 -24.509043\nv -32.787384 -501.353058 -25.231255\nv -31.753641 -499.338501 -26.380245\nv -30.406372 -497.792542 -27.877737\nv -28.837397 -496.820740 -29.621609\nv -27.153666 -496.489105 -31.493053\nv -25.469889 -496.820343 -33.364578\nv -23.900829 -497.791901 -35.108570\nv -22.553411 -499.337433 -36.606262\nv -21.519453 -501.351776 -37.755447\nv -21.514933 -528.508484 -33.677582\nv -20.567326 -530.054077 -35.455299\nv -19.840143 -532.068420 -36.819584\nv -19.382946 -534.414246 -37.677162\nv -19.226906 -536.931702 -37.969746\nv -19.382631 -539.449097 -37.677361\nv -19.839521 -541.794983 -36.819996\nv -20.566441 -543.809631 -35.455956\nv -21.513870 -545.355530 -33.678345\nv -22.617210 -546.327393 -31.608200\nv -23.801283 -546.658997 -29.386673\nv -24.985386 -546.327759 -27.165026\nv -26.088854 -545.356262 -25.094833\nv -27.036459 -543.810547 -23.317057\nv -27.763643 -541.796265 -21.952848\nv -28.220837 -539.450439 -21.095224\nv -28.376879 -536.932983 -20.802626\nv -28.221151 -534.415527 -21.095011\nv -27.764265 -532.069641 -21.952421\nv -27.037325 -530.054993 -23.316355\nv -26.089920 -528.509216 -25.094025\nv -24.986584 -527.537354 -27.164141\nv -23.802504 -527.205688 -29.385712\nv -22.618399 -527.536987 -31.607330\nv -21.516430 -497.791809 -33.675858\nv -20.568840 -499.337463 -35.453667\nv -19.841688 -501.351715 -36.817875\nv -19.384521 -503.697540 -37.675453\nv -19.228521 -506.214935 -37.968082\nv -19.384277 -508.732422 -37.675774\nv -19.841217 -511.078369 -36.818394\nv -20.568165 -513.092957 -35.454430\nv -21.515594 -514.638855 -33.676819\nv -22.618967 -515.610718 -31.606689\nv -23.803047 -515.942322 -29.385132\nv -24.987143 -515.611084 -27.163485\nv -26.090601 -514.639587 -25.093262\nv -27.038176 -513.093872 -23.315470\nv -27.765327 -511.079590 -21.951262\nv -28.222494 -508.733765 -21.093607\nv -28.378506 -506.216370 -20.801008\nv -28.222729 -503.698883 -21.093378\nv -27.765808 -501.352966 -21.950758\nv -27.038853 -499.338409 -23.314661\nv -26.091423 -497.792511 -25.092361\nv -24.988070 -496.820648 -27.162477\nv -23.803991 -496.489044 -29.384064\nv -22.619883 -496.820282 -31.605698\nv -20.882473 -527.537109 -26.099411\nv -20.220686 -527.205505 -28.528334\nv -19.558865 -527.536804 -30.957241\nv -18.942095 -528.508301 -33.220654\nv -18.412424 -530.053955 -35.164364\nv -18.005928 -532.068359 -36.655838\nv -17.750330 -534.414124 -37.593468\nv -17.663050 -536.931458 -37.913368\nv -17.750015 -539.449036 -37.593697\nv -18.005308 -541.794983 -36.656311\nv -18.411528 -543.809509 -35.164989\nv -18.941021 -545.355347 -33.221539\nv -19.557657 -546.327209 -30.958157\nv -20.219435 -546.658752 -28.529280\nv -20.881256 -546.327515 -26.100372\nv -21.498026 -545.356018 -23.836929\nv -22.027699 -543.810364 -21.893250\nv -22.434183 -541.795959 -20.401773\nv -22.689781 -539.450256 -19.464159\nv -22.777073 -536.932800 -19.144245\nv -22.690115 -534.415344 -19.463884\nv -22.434816 -532.069397 -20.401270\nv -22.028582 -530.054871 -21.892563\nv -21.499111 -528.508972 -23.836105\nv -20.883928 -496.820496 -26.097794\nv -20.222155 -496.488922 -28.526655\nv -19.560331 -496.820190 -30.955608\nv -18.943571 -497.791718 -33.219036\nv -18.413918 -499.337341 -35.162701\nv -18.007463 -501.351654 -36.654160\nv -17.751905 -503.697479 -37.591805\nv -17.664665 -506.214874 -37.911751\nv -17.751671 -508.732361 -37.592079\nv -18.007004 -511.078278 -36.654709\nv -18.413263 -513.092896 -35.163448\nv -18.942745 -514.638733 -33.219921\nv -19.559412 -515.610596 -30.956600\nv -20.221220 -515.942139 -28.527693\nv -20.883022 -515.610901 -26.098816\nv -21.499771 -514.639343 -23.835373\nv -22.029423 -513.093750 -21.891678\nv -22.435881 -511.079407 -20.400171\nv -22.691441 -508.733612 -19.462557\nv -22.778688 -506.216095 -19.142628\nv -22.691690 -503.698700 -19.462252\nv -22.436352 -501.352814 -20.399637\nv -22.030098 -499.338196 -21.890915\nv -21.500595 -497.792328 -23.834412\nv -13.967856 -532.068970 -19.631990\nv -13.985421 -530.054443 -21.177553\nv -14.008268 -528.508606 -23.191790\nv -14.034789 -527.536743 -25.537510\nv -14.063250 -527.205200 -28.054829\nv -14.091625 -527.536499 -30.572147\nv -14.118012 -528.508057 -32.917912\nv -14.140649 -530.053711 -34.932320\nv -14.157972 -532.068115 -36.478081\nv -14.168783 -534.413879 -37.449867\nv -14.172363 -536.931335 -37.781364\nv -14.168468 -539.448792 -37.450127\nv -14.157361 -541.794678 -36.478630\nv -14.139756 -543.809204 -34.933018\nv -14.116927 -545.355103 -32.918827\nv -14.090408 -546.326904 -30.573093\nv -14.061976 -546.658447 -28.055820\nv -14.033571 -546.327209 -25.538486\nv -14.007172 -545.355591 -23.192690\nv -13.984547 -543.809937 -21.178316\nv -13.967244 -541.795593 -19.632540\nv -13.956412 -539.449768 -18.660706\nv -13.952835 -536.932312 -18.329193\nv -13.956727 -534.414917 -18.660461\nv -13.969401 -501.352356 -19.630358\nv -13.986926 -499.337830 -21.175905\nv -14.009745 -497.791992 -23.190187\nv -14.036255 -496.820160 -25.535892\nv -14.064705 -496.488586 -28.053211\nv -14.093092 -496.819885 -30.570499\nv -14.119498 -497.791443 -32.916340\nv -14.142155 -499.337097 -34.930672\nv -14.159508 -501.351440 -36.476433\nv -14.170369 -503.697296 -37.448219\nv -14.173979 -506.214722 -37.779747\nv -14.170124 -508.732147 -37.448494\nv -14.159037 -511.078064 -36.476952\nv -14.141491 -513.092651 -34.931419\nv -14.118672 -514.638489 -32.917179\nv -14.092163 -515.610291 -30.571476\nv -14.063772 -515.941895 -28.054249\nv -14.035346 -515.610596 -25.536839\nv -14.008927 -514.639038 -23.191072\nv -13.986263 -513.093384 -21.176638\nv -13.968920 -511.078979 -19.630892\nv -13.958068 -508.733154 -18.659103\nv -13.954451 -506.215698 -18.327530\nv -13.958323 -503.698273 -18.658844\nv -4.214322 -506.211761 -89.323265\nv -4.545599 -508.729248 -89.323029\nv -5.517167 -511.075195 -89.321968\nv -7.062800 -513.089661 -89.320145\nv -9.077170 -514.635559 -89.317757\nv -11.422998 -515.607361 -89.314903\nv -13.940412 -515.938904 -89.311844\nv -16.457857 -515.607605 -89.308754\nv -18.803782 -514.636047 -89.305779\nv -20.818302 -513.090454 -89.303223\nv -22.364168 -511.076080 -89.301216\nv -23.335981 -508.730225 -89.299881\nv -23.667543 -506.212799 -89.299332\nv -23.336246 -503.695374 -89.299591\nv -22.364679 -501.349457 -89.300682\nv -20.819046 -499.334930 -89.302444\nv -18.804676 -497.789062 -89.304848\nv -16.458845 -496.817230 -89.307686\nv -13.941434 -496.485657 -89.310760\nv -11.423986 -496.816986 -89.313866\nv -9.078075 -497.788574 -89.316811\nv -7.063545 -499.334167 -89.319366\nv -5.517699 -501.348572 -89.321388\nv -4.545865 -503.694336 -89.322708\nv -4.336836 -506.207275 -166.375534\nv -4.667927 -508.724731 -166.210281\nv -5.639298 -511.070709 -166.055496\nv -7.184776 -513.085205 -165.921616\nv -9.199008 -514.631104 -165.817978\nv -11.544750 -515.602905 -165.751404\nv -14.062152 -515.934448 -165.726608\nv -16.579628 -515.603149 -165.745239\nv -18.925619 -514.631592 -165.806000\nv -20.940277 -513.085937 -165.904724\nv -22.486288 -511.071564 -166.034775\nv -23.458298 -508.725739 -166.187195\nv -23.790056 -506.208313 -166.351685\nv -23.458975 -503.690857 -166.516937\nv -22.487583 -501.344940 -166.671738\nv -20.942116 -499.330383 -166.805603\nv -18.927876 -497.784515 -166.909256\nv -16.582123 -496.812744 -166.975830\nv -14.064751 -496.481140 -167.000565\nv -11.547264 -496.812439 -166.982010\nv -9.201274 -497.783997 -166.921249\nv -7.186616 -499.329651 -166.822510\nv -5.640604 -501.344025 -166.692459\nv -4.668595 -503.689880 -166.540024\nv -4.341684 -506.730408 -170.350708\nv -4.672173 -509.183105 -169.693314\nv -5.642988 -511.468689 -169.079803\nv -7.187979 -513.431396 -168.552155\nv -9.201851 -514.937500 -168.146240\nv -11.547368 -515.884277 -167.889740\nv -14.064672 -516.207336 -167.800125\nv -16.582228 -515.884521 -167.883530\nv -18.928461 -514.937988 -168.134247\nv -20.943480 -513.432129 -168.535248\nv -22.489990 -511.469604 -169.059113\nv -23.462542 -509.184082 -169.670181\nv -23.794903 -506.731415 -170.326813\nv -23.464424 -504.278717 -170.984238\nv -22.493610 -501.993195 -171.597733\nv -20.948610 -500.030457 -172.125381\nv -18.934729 -498.524384 -172.531311\nv -16.589220 -497.577545 -172.787811\nv -14.071916 -497.254517 -172.877411\nv -11.554360 -497.577271 -172.794022\nv -9.208127 -498.523895 -172.543289\nv -7.193099 -500.029663 -172.142288\nv -5.646610 -501.992310 -171.618454\nv -4.674057 -504.277771 -171.007401\nv -4.346156 -508.264557 -174.055008\nv -4.675913 -510.463623 -172.785187\nv -5.646047 -512.512878 -171.601044\nv -7.190442 -514.272583 -170.583328\nv -9.203860 -515.622986 -169.801453\nv -11.549089 -516.471863 -169.308563\nv -14.066298 -516.761536 -169.138351\nv -16.583948 -516.472107 -169.302368\nv -18.930473 -515.623474 -169.789490\nv -20.945942 -514.273315 -170.566437\nv -22.493027 -512.513733 -171.580322\nv -23.466284 -510.464630 -172.762024\nv -23.799395 -508.265533 -174.031067\nv -23.469639 -506.066528 -175.300919\nv -22.499516 -504.017273 -176.485077\nv -20.955109 -502.257507 -177.502762\nv -18.941690 -500.907166 -178.284714\nv -16.596464 -500.058258 -178.777573\nv -14.079254 -499.768585 -178.947800\nv -11.561603 -500.057922 -178.783752\nv -9.215079 -500.906616 -178.296677\nv -7.199601 -502.256744 -177.519653\nv -5.652524 -504.016357 -176.505768\nv -4.679267 -506.065491 -175.324066\nv -4.349945 -510.705170 -177.236160\nv -4.679067 -512.500732 -175.440399\nv -5.648612 -514.174011 -173.766220\nv -7.192516 -515.610840 -172.327667\nv -9.205546 -516.713501 -171.222839\nv -11.550518 -517.406616 -170.526947\nv -14.067662 -517.643188 -170.287506\nv -16.585398 -517.406860 -170.520752\nv -18.932146 -516.713989 -171.210861\nv -20.948015 -515.611572 -172.310760\nv -22.495594 -514.174866 -173.745529\nv -23.469427 -512.501709 -175.417297\nv -23.803164 -510.706146 -177.212219\nv -23.474043 -508.910614 -179.007980\nv -22.504496 -507.237335 -180.682175\nv -20.960594 -505.800415 -182.120682\nv -18.947552 -504.697845 -183.225571\nv -16.602570 -504.004608 -183.921417\nv -14.085447 -503.768127 -184.160889\nv -11.567710 -504.004333 -183.927628\nv -9.220942 -504.697327 -183.237518\nv -7.205074 -505.799744 -182.137665\nv -5.657495 -507.236450 -180.702896\nv -4.683661 -508.909637 -179.031097\nv -4.352792 -513.885925 -179.677094\nv -4.681453 -515.155640 -177.477768\nv -5.650555 -516.338867 -175.427551\nv -7.194088 -517.354919 -173.666092\nv -9.206833 -518.134644 -172.313461\nv -11.551629 -518.624878 -171.461823\nv -14.068687 -518.792114 -171.169205\nv -16.586491 -518.625061 -171.455612\nv -18.933434 -518.135132 -172.301453\nv -20.949587 -517.355591 -173.649109\nv -22.497557 -516.339661 -175.406799\nv -23.471832 -515.156555 -177.454620\nv -23.806034 -513.886902 -179.653152\nv -23.477371 -512.617187 -181.852463\nv -22.508268 -511.433929 -183.902710\nv -20.964746 -510.417877 -185.664154\nv -18.952003 -509.638214 -187.016846\nv -16.607185 -509.147919 -187.868423\nv -14.090139 -508.980652 -188.161011\nv -11.572327 -509.147705 -187.874634\nv -9.225392 -509.637695 -187.028793\nv -7.209237 -510.417145 -185.681122\nv -5.661280 -511.433105 -183.923462\nv -4.687001 -512.616211 -181.875626\nv -4.354477 -517.590027 -181.211624\nv -4.682858 -518.247375 -178.758636\nv -5.651704 -518.859924 -176.471970\nv -7.195009 -519.385925 -174.507477\nv -9.207577 -519.789673 -172.999069\nv -11.552279 -520.043518 -172.049545\nv -14.069314 -520.130188 -171.723541\nv -16.587139 -520.043762 -172.043350\nv -18.934189 -519.790161 -172.987137\nv -20.950510 -519.386719 -174.490555\nv -22.498705 -518.860779 -176.451233\nv -23.473227 -518.248291 -178.735489\nv -23.807718 -517.591064 -181.187683\nv -23.479338 -516.933716 -183.640717\nv -22.510490 -516.321106 -185.927383\nv -20.967186 -515.795044 -187.891846\nv -18.954617 -515.391357 -189.400223\nv -16.609915 -515.137512 -190.349823\nv -14.092901 -515.050842 -190.675812\nv -11.575056 -515.137268 -190.356018\nv -9.228007 -515.390869 -189.412186\nv -7.211686 -515.794312 -187.908752\nv -5.663509 -516.320251 -185.948090\nv -4.688967 -516.932739 -183.663834\nv -4.354914 -521.565063 -181.735184\nv -4.683211 -521.565247 -179.195618\nv -5.651993 -521.565430 -176.828293\nv -7.195237 -521.565613 -174.794556\nv -9.207767 -521.565796 -173.233002\nv -11.552433 -521.565979 -172.250061\nv -14.069462 -521.566101 -171.912659\nv -16.587305 -521.566162 -172.243866\nv -18.934368 -521.566284 -173.221054\nv -20.950739 -521.566284 -174.777618\nv -22.498995 -521.566223 -176.807556\nv -23.473593 -521.566162 -179.172455\nv -23.808146 -521.566101 -181.711243\nv -23.479837 -521.565918 -184.250824\nv -22.511066 -521.565735 -186.618103\nv -20.967813 -521.565552 -188.651871\nv -18.955282 -521.565430 -190.213425\nv -16.610605 -521.565186 -191.196396\nv -14.093596 -521.565063 -191.533737\nv -11.575745 -521.564941 -191.202545\nv -9.228681 -521.564880 -190.225357\nv -7.212312 -521.564819 -188.668777\nv -5.664065 -521.564880 -186.638855\nv -4.689457 -521.564941 -184.273911\nv -4.354059 -525.540222 -181.212036\nv -4.682508 -524.883179 -178.759003\nv -5.651421 -524.270935 -176.472260\nv -7.194779 -523.745178 -174.507675\nv -9.207390 -523.341858 -172.999283\nv -11.552117 -523.088379 -172.049698\nv -14.069162 -523.002014 -171.723694\nv -16.586979 -523.088623 -172.043503\nv -18.934002 -523.342407 -172.987350\nv -20.950281 -523.745972 -174.490799\nv -22.498421 -524.271790 -176.451538\nv -23.472878 -524.884094 -178.735840\nv -23.807301 -525.541199 -181.188126\nv -23.478851 -526.198242 -183.641205\nv -22.509939 -526.810425 -185.927917\nv -20.966579 -527.336182 -187.892426\nv -18.953966 -527.739563 -189.400940\nv -16.609238 -527.993042 -190.350494\nv -14.092216 -528.079407 -190.676514\nv -11.574380 -527.992798 -190.356705\nv -9.227358 -527.739014 -189.412857\nv -7.211079 -527.335510 -187.909332\nv -5.662957 -526.809631 -185.948639\nv -4.688480 -526.197266 -183.664337\nv -4.351984 -529.244446 -179.677872\nv -4.680779 -527.975037 -177.478500\nv -5.650005 -526.792053 -175.428116\nv -7.193645 -525.776367 -173.666534\nv -9.206471 -524.997009 -172.313797\nv -11.551319 -524.507080 -171.462128\nv -14.068396 -524.340088 -171.169479\nv -16.586182 -524.507385 -171.455917\nv -18.933073 -524.997498 -172.301819\nv -20.949144 -525.777100 -173.649567\nv -22.497007 -526.793030 -175.407333\nv -23.471159 -527.976013 -177.455292\nv -23.805227 -529.245544 -179.653976\nv -23.476431 -530.514954 -181.853409\nv -22.507202 -531.697815 -183.903763\nv -20.963573 -532.713623 -185.665344\nv -18.950748 -533.492920 -187.018021\nv -16.605879 -533.982849 -187.869720\nv -14.088815 -534.149780 -188.162323\nv -11.571020 -533.982605 -187.875931\nv -9.224137 -533.492432 -187.030045\nv -7.208064 -532.712830 -185.682281\nv -5.660213 -531.696960 -183.924484\nv -4.686060 -530.513916 -181.876526\nv -4.348802 -532.425476 -177.237350\nv -4.678102 -530.630127 -175.441391\nv -5.647834 -528.957092 -173.766983\nv -7.191889 -527.520508 -172.328339\nv -9.205036 -526.418274 -171.223343\nv -11.550080 -525.725403 -170.527435\nv -14.067249 -525.489136 -170.287933\nv -16.584961 -525.725586 -170.521210\nv -18.931637 -526.418762 -171.211395\nv -20.947388 -527.521301 -172.311401\nv -22.494816 -528.957947 -173.746246\nv -23.468485 -530.631104 -175.418259\nv -23.802021 -532.426514 -177.213364\nv -23.472712 -534.221863 -179.009323\nv -22.502987 -535.894836 -180.683670\nv -20.958937 -537.331421 -182.122345\nv -18.945776 -538.433716 -183.227341\nv -16.600721 -539.126587 -183.923248\nv -14.083575 -539.362793 -184.162766\nv -11.565863 -539.126282 -183.929474\nv -9.219167 -538.433167 -183.239304\nv -7.203415 -537.330627 -182.139297\nv -5.655987 -535.893921 -180.704391\nv -4.682329 -534.220825 -179.032440\nv -4.344756 -534.866394 -174.056412\nv -4.674745 -532.667480 -172.786331\nv -5.645095 -530.618469 -171.601990\nv -7.189673 -528.859009 -170.584122\nv -9.203236 -527.508911 -169.802032\nv -11.548553 -526.660278 -169.309113\nv -14.065792 -526.370911 -169.138840\nv -16.583412 -526.660583 -169.302887\nv -18.929848 -527.509460 -169.790070\nv -20.945185 -528.859741 -170.567215\nv -22.492075 -530.619324 -171.581268\nv -23.465115 -532.668518 -172.763229\nv -23.797997 -534.867432 -174.032516\nv -23.468008 -537.066284 -175.302551\nv -22.497669 -539.115295 -176.486893\nv -20.953077 -540.874817 -177.504837\nv -18.939518 -542.224854 -178.286880\nv -16.594202 -543.073547 -178.779861\nv -14.076962 -543.362915 -178.950073\nv -11.559340 -543.073303 -178.786072\nv -9.212907 -542.224365 -178.298828\nv -7.197570 -540.874146 -177.521729\nv -5.650679 -539.114502 -176.507645\nv -4.677638 -537.065369 -175.325668\nv -4.340124 -536.400940 -170.352295\nv -4.670870 -533.948364 -169.694580\nv -5.641926 -531.662964 -169.080872\nv -7.187123 -529.700378 -168.552979\nv -9.201154 -528.194580 -168.146927\nv -11.546770 -527.248108 -167.890366\nv -14.064109 -526.925354 -167.800720\nv -16.581631 -527.248291 -167.884140\nv -18.927773 -528.195129 -168.134964\nv -20.942623 -529.701111 -168.536072\nv -22.488928 -531.663879 -169.060211\nv -23.461239 -533.949341 -169.671463\nv -23.793354 -536.401917 -170.328384\nv -23.462606 -538.854492 -170.986069\nv -22.491552 -541.139954 -171.599808\nv -20.946344 -543.102417 -172.127655\nv -18.932304 -544.608276 -172.533752\nv -16.586697 -545.554810 -172.790344\nv -14.069358 -545.877563 -172.879974\nv -11.551836 -545.554565 -172.796555\nv -9.205703 -544.607788 -172.545731\nv -7.190834 -543.101685 -172.144562\nv -5.644550 -541.139099 -171.620483\nv -4.672217 -538.853577 -171.009232\nv -4.335220 -536.924500 -166.377151\nv -4.666566 -534.407043 -166.211670\nv -5.638195 -532.061218 -166.056595\nv -7.183884 -530.046875 -165.922577\nv -9.198278 -528.501282 -165.818771\nv -11.544122 -527.529663 -165.752136\nv -14.061560 -527.198364 -165.727264\nv -16.579000 -527.529907 -165.745895\nv -18.924889 -528.501709 -165.806747\nv -20.939384 -530.047607 -165.905701\nv -22.485193 -532.062073 -166.035873\nv -23.456947 -534.408081 -166.188568\nv -23.788450 -536.925537 -166.353302\nv -23.457094 -539.442871 -166.518784\nv -22.485477 -541.788757 -166.673874\nv -20.939775 -543.803101 -166.807846\nv -18.925373 -545.348755 -166.911728\nv -16.579519 -546.320312 -166.978333\nv -14.062111 -546.651611 -167.003189\nv -11.544660 -546.320068 -166.984573\nv -9.198772 -545.348267 -166.923721\nv -7.184266 -543.802368 -166.824783\nv -5.638475 -541.787842 -166.694595\nv -4.666704 -539.441956 -166.541885\nv -4.212687 -536.927002 -89.324898\nv -4.544249 -534.409607 -89.324356\nv -5.516063 -532.063782 -89.323097\nv -7.061909 -530.049377 -89.321121\nv -9.076441 -528.503784 -89.318611\nv -11.422371 -527.532227 -89.315666\nv -13.939818 -527.200867 -89.312531\nv -16.457230 -527.532471 -89.309517\nv -18.803061 -528.504272 -89.306633\nv -20.817430 -530.050171 -89.304199\nv -22.363064 -532.064636 -89.302376\nv -23.334639 -534.410522 -89.301254\nv -23.665928 -536.927979 -89.300903\nv -23.334375 -539.445435 -89.301453\nv -22.362553 -541.791260 -89.302742\nv -20.816706 -543.805664 -89.304672\nv -18.802174 -545.351257 -89.307228\nv -16.456242 -546.322876 -89.310173\nv -13.938795 -546.654114 -89.313263\nv -11.421383 -546.322571 -89.316353\nv -9.075573 -545.350769 -89.319191\nv -7.061184 -543.804932 -89.321640\nv -5.515551 -541.790405 -89.323463\nv -4.543983 -539.444458 -89.324554\nv -4.285446 -503.694427 -87.743706\nv -3.958473 -506.211884 -87.798767\nv -4.285181 -508.729340 -87.744026\nv -5.243362 -511.075287 -87.583359\nv -6.767673 -513.089844 -87.327614\nv -8.754272 -514.635681 -86.994278\nv -11.067749 -515.607544 -86.606140\nv -13.550444 -515.939087 -86.189507\nv -16.033182 -515.607788 -85.772850\nv -18.346754 -514.636230 -85.384514\nv -20.333502 -513.090698 -85.051010\nv -21.858036 -511.076263 -84.795067\nv -22.816463 -508.730469 -84.634132\nv -23.143448 -506.213043 -84.579147\nv -22.816719 -503.695587 -84.633812\nv -21.858547 -501.349670 -84.794502\nv -20.334227 -499.335114 -85.050293\nv -18.347639 -497.789246 -85.383553\nv -16.034159 -496.817444 -85.771782\nv -13.551467 -496.485870 -86.188423\nv -11.068728 -496.817108 -86.605072\nv -8.755157 -497.788635 -86.993347\nv -6.768396 -499.334290 -87.326866\nv -5.243875 -501.348602 -87.582794\nv -4.283831 -534.409668 -87.745384\nv -3.956847 -536.927063 -87.800369\nv -4.283565 -539.444580 -87.745583\nv -5.241736 -541.790466 -87.584885\nv -6.766047 -543.804993 -87.329079\nv -8.752625 -545.350891 -86.995773\nv -11.066113 -546.322754 -86.607590\nv -13.548808 -546.654297 -86.190956\nv -16.031546 -546.322998 -85.774284\nv -18.345118 -545.351440 -85.385963\nv -20.331877 -543.805847 -85.052536\nv -21.856421 -541.791504 -84.796638\nv -22.814848 -539.445679 -84.635704\nv -23.141842 -536.928223 -84.580765\nv -22.815111 -534.410767 -84.635506\nv -21.856941 -532.064880 -84.796257\nv -20.332621 -530.050293 -85.052017\nv -18.346054 -528.504456 -85.385368\nv -16.032574 -527.532593 -85.773552\nv -13.549881 -527.201050 -86.190224\nv -11.067132 -527.532288 -86.606842\nv -8.753551 -528.503906 -86.995148\nv -6.766791 -530.049438 -87.328590\nv -5.242259 -532.063843 -87.584518\nv -7.592487 -497.788727 -84.714844\nv -5.725985 -499.334320 -85.472916\nv -4.293745 -501.348663 -86.054665\nv -3.393331 -503.694458 -86.420410\nv -3.086126 -506.211884 -86.545250\nv -3.393066 -508.729370 -86.420700\nv -4.293242 -511.075256 -86.055199\nv -5.725272 -513.089844 -85.473663\nv -7.591621 -514.635803 -84.715775\nv -9.765062 -515.607544 -83.833237\nv -12.097490 -515.939148 -82.886063\nv -14.429942 -515.607910 -81.938751\nv -16.603466 -514.636353 -81.056068\nv -18.469957 -513.090759 -80.297974\nv -19.902210 -511.076477 -79.716240\nv -20.802633 -508.730652 -79.350464\nv -21.109827 -506.213226 -79.225685\nv -20.802879 -503.695740 -79.350204\nv -19.902712 -501.349823 -79.715706\nv -18.470661 -499.335266 -80.297195\nv -16.604332 -497.789398 -81.055107\nv -14.430901 -496.817535 -81.937683\nv -12.098494 -496.485931 -82.884979\nv -9.766030 -496.817200 -83.832169\nv -7.590921 -528.503967 -84.716644\nv -5.724410 -530.049500 -85.474701\nv -4.292159 -532.063843 -86.056389\nv -3.391715 -534.409668 -86.422089\nv -3.084500 -536.927063 -86.546898\nv -3.391431 -539.444519 -86.422256\nv -4.291586 -541.790466 -86.056755\nv -5.723606 -543.804993 -85.475189\nv -7.589945 -545.350952 -84.717270\nv -9.763387 -546.322754 -83.834671\nv -12.095794 -546.654297 -82.887497\nv -14.428257 -546.323059 -81.940216\nv -16.601801 -545.351562 -81.057503\nv -18.468302 -543.805969 -80.299469\nv -19.900564 -541.791565 -79.717766\nv -20.800999 -539.445801 -79.352066\nv -21.108221 -536.928406 -79.227287\nv -20.801291 -534.410889 -79.351868\nv -19.901134 -532.065002 -79.717430\nv -18.469097 -530.050415 -80.298935\nv -16.602776 -528.504517 -81.056892\nv -14.429343 -527.532654 -81.939499\nv -12.096938 -527.201111 -82.886719\nv -9.764475 -527.532349 -83.833954\nv -11.640645 -496.817566 -78.334671\nv -9.638614 -496.485962 -79.860893\nv -7.636526 -496.817200 -81.387070\nv -5.770817 -497.788757 -82.809219\nv -4.168693 -499.334320 -84.030624\nv -2.939313 -501.348663 -84.967834\nv -2.166414 -503.694489 -85.557106\nv -1.902706 -506.211853 -85.758141\nv -2.166159 -508.729340 -85.557335\nv -2.938821 -511.075287 -84.968430\nv -4.167990 -513.089844 -84.031372\nv -5.769971 -514.635742 -82.810196\nv -7.635568 -515.607605 -81.388153\nv -9.637630 -515.939209 -79.861961\nv -11.639698 -515.608032 -78.335739\nv -13.505376 -514.636475 -76.913506\nv -15.107489 -513.090881 -75.692154\nv -16.336889 -511.076538 -74.754898\nv -17.109789 -508.730713 -74.165657\nv -17.373486 -506.213318 -73.964630\nv -17.110033 -503.695892 -74.165398\nv -16.337372 -501.349915 -74.754333\nv -15.108194 -499.335358 -75.691330\nv -13.506224 -497.789459 -76.912575\nv -11.639140 -527.532715 -78.336487\nv -9.637106 -527.201111 -79.862663\nv -7.635009 -527.532410 -81.388840\nv -5.769301 -528.503845 -82.811005\nv -4.167148 -530.049438 -84.032394\nv -2.937747 -532.063843 -84.969589\nv -2.164808 -534.409607 -85.558708\nv -1.901090 -536.927063 -85.759789\nv -2.164504 -539.444458 -85.558952\nv -2.937155 -541.790466 -84.969971\nv -4.166294 -543.805054 -84.032867\nv -5.768245 -545.350830 -82.811630\nv -7.633852 -546.322815 -81.389587\nv -9.635913 -546.654358 -79.863457\nv -11.637981 -546.323120 -78.337173\nv -13.503669 -545.351624 -76.914986\nv -15.105803 -543.805969 -75.693649\nv -16.335213 -541.791626 -74.756439\nv -17.108143 -539.445862 -74.167274\nv -17.371870 -536.928467 -73.966248\nv -17.108446 -534.410950 -74.167061\nv -16.335825 -532.065063 -74.756042\nv -15.106666 -530.050415 -75.693085\nv -13.504717 -528.504639 -76.914314\nv -9.981281 -501.349884 -69.439789\nv -9.187283 -499.335297 -70.765808\nv -8.152478 -497.789429 -72.494034\nv -6.947326 -496.817566 -74.506607\nv -5.654067 -496.485962 -76.666466\nv -4.360693 -496.817200 -78.826332\nv -3.155409 -497.788727 -80.838936\nv -2.120441 -499.334351 -82.567345\nv -1.326261 -501.348633 -83.893654\nv -0.826916 -503.694397 -84.727455\nv -0.656536 -506.211823 -85.011932\nv -0.826671 -508.729309 -84.727730\nv -1.325789 -511.075195 -83.894218\nv -2.119768 -513.089783 -82.568123\nv -3.154582 -514.635742 -80.839882\nv -4.359774 -515.607544 -78.827415\nv -5.653093 -515.939148 -76.667580\nv -6.946408 -515.607910 -74.507675\nv -8.151643 -514.636414 -72.494995\nv -9.186599 -513.090820 -70.766586\nv -9.980808 -511.076508 -69.440323\nv -10.480134 -508.730713 -68.606522\nv -10.650535 -506.213226 -68.322014\nv -10.480380 -503.695801 -68.606201\nv -9.979755 -532.065002 -69.441422\nv -9.185796 -530.050415 -70.767517\nv -8.151003 -528.504517 -72.495728\nv -6.945870 -527.532654 -74.508347\nv -5.652611 -527.201050 -76.668205\nv -4.359247 -527.532227 -78.828056\nv -3.153943 -528.503845 -80.840675\nv -2.118946 -530.049438 -82.569054\nv -1.324725 -532.063782 -83.895332\nv -0.825339 -534.409607 -84.729134\nv -0.654910 -536.927002 -85.013565\nv -0.825015 -539.444458 -84.729317\nv -1.324093 -541.790344 -83.895805\nv -2.118012 -543.804932 -82.569633\nv -3.152817 -545.350891 -80.841408\nv -4.357999 -546.322754 -78.828880\nv -5.651328 -546.654297 -76.669060\nv -6.944632 -546.323059 -74.509216\nv -8.149896 -545.351501 -72.496506\nv -9.184883 -543.805908 -70.768143\nv -9.979115 -541.791687 -69.441833\nv -10.478479 -539.445801 -68.608093\nv -10.648919 -536.928345 -68.323662\nv -10.478813 -534.410889 -68.607880\nv -2.090887 -508.730377 -65.864006\nv -2.165478 -506.212982 -65.540901\nv -2.091122 -503.695526 -65.863716\nv -1.872880 -501.349579 -66.810425\nv -1.525666 -499.335022 -68.316521\nv -1.073107 -497.789185 -70.279449\nv -0.546027 -496.817322 -72.565292\nv 0.019580 -496.485718 -75.018448\nv 0.585312 -496.817017 -77.471451\nv 1.112583 -497.788544 -79.757355\nv 1.565276 -499.334137 -81.720360\nv 1.912661 -501.348480 -83.226738\nv 2.131150 -503.694275 -84.173775\nv 2.205730 -506.211731 -84.496826\nv 2.131395 -508.729187 -84.174004\nv 1.913123 -511.075165 -83.227333\nv 1.565929 -513.089661 -81.721153\nv 1.113390 -514.635559 -79.758301\nv 0.586211 -515.607422 -77.472488\nv 0.020523 -515.938965 -75.019470\nv -0.545128 -515.607666 -72.566330\nv -1.072301 -514.636169 -70.280304\nv -1.524993 -513.090515 -68.317299\nv -1.872419 -511.076202 -66.810989\nv -2.089231 -539.445496 -65.865623\nv -2.163882 -536.928101 -65.542503\nv -2.089556 -534.410645 -65.865318\nv -1.871385 -532.064697 -66.812073\nv -1.524191 -530.050110 -68.318245\nv -1.071661 -528.504272 -70.281097\nv -0.544601 -527.532410 -72.566956\nv 0.021015 -527.200806 -75.020065\nv 0.586748 -527.532104 -77.473099\nv 1.114019 -528.503601 -79.759018\nv 1.566751 -530.049255 -81.722099\nv 1.914187 -532.063538 -83.228432\nv 2.132716 -534.409424 -84.175362\nv 2.207346 -536.926819 -84.498459\nv 2.133070 -539.444275 -84.175652\nv 1.914829 -541.790222 -83.228889\nv 1.567706 -543.804810 -81.722740\nv 1.115175 -545.350647 -79.759842\nv 0.588016 -546.322510 -77.474045\nv 0.022339 -546.654053 -75.020981\nv -0.543313 -546.322754 -72.567902\nv -1.070534 -545.351318 -70.281967\nv -1.523247 -543.805603 -68.318886\nv -1.870713 -541.791321 -66.812546\nv 13.494762 -497.409760 98.179649\nv 20.790092 -497.409363 98.179840\nv 13.494649 -497.086731 101.873787\nv 20.789978 -497.086334 101.873978\nv 13.494505 -496.127167 105.455727\nv 20.789835 -496.126770 105.455917\nv 13.494333 -494.560150 108.816628\nv 20.789663 -494.559753 108.816818\nv 13.494142 -492.433411 111.854332\nv 20.789473 -492.433014 111.854523\nv 13.493935 -489.811432 114.476540\nv 20.789265 -489.811035 114.476730\nv 13.493719 -486.773895 116.603691\nv 20.789049 -486.773499 116.603882\nv 13.493501 -483.413208 118.171043\nv 20.788830 -483.412811 118.171234\nv 13.493287 -479.831360 119.130959\nv 20.788616 -479.830963 119.131149\nv 13.493085 -476.137268 119.454369\nv 20.788414 -476.136871 119.454559\nv 13.492898 -472.443176 119.131401\nv 20.788229 -472.442780 119.131592\nv 13.492736 -468.861237 118.171822\nv 20.788065 -468.860840 118.172012\nv 13.492600 -465.500336 116.604820\nv 20.787930 -465.499939 116.605011\nv 13.492496 -462.462646 114.477959\nv 20.787825 -462.462250 114.478149\nv 13.492427 -459.840363 111.855995\nv 20.787758 -459.839966 111.856186\nv 13.492395 -457.713287 108.818535\nv 20.787724 -457.712891 108.818726\nv 13.492401 -456.145935 105.457817\nv 20.787731 -456.145538 105.458008\nv 13.492444 -455.185974 101.875999\nv 20.787775 -455.185577 101.876190\nv 13.492524 -454.862579 98.181892\nv 20.787855 -454.862183 98.182083\nv 13.492639 -455.185577 94.487785\nv 20.787970 -455.185181 94.487976\nv 13.492784 -456.145172 90.905846\nv 20.788113 -456.144775 90.906036\nv 13.492955 -457.712158 87.544991\nv 20.788284 -457.711761 87.545181\nv 13.493146 -459.838959 84.507256\nv 20.788477 -459.838562 84.507446\nv 13.493354 -462.460937 81.885002\nv 20.788683 -462.460541 81.885193\nv 13.493569 -465.498413 79.757927\nv 20.788898 -465.498016 79.758118\nv 13.493788 -468.859131 78.190559\nv 20.789118 -468.858734 78.190750\nv 13.494000 -472.440948 77.230614\nv 20.789331 -472.440552 77.230804\nv 13.494204 -476.135040 76.907204\nv 20.789532 -476.134644 76.907394\nv 13.494390 -479.829163 77.230202\nv 20.789719 -479.828766 77.230392\nv 13.494553 -483.411102 78.189796\nv 20.789883 -483.410706 78.189987\nv 13.494688 -486.771973 79.756752\nv 20.790018 -486.771576 79.756943\nv 13.494792 -489.809723 81.883614\nv 20.790123 -489.809326 81.883804\nv 13.494861 -492.431976 84.505562\nv 20.790192 -492.431580 84.505753\nv 13.494893 -494.559052 87.543022\nv 20.790224 -494.558655 87.543213\nv 13.494887 -496.126373 90.903740\nv 20.790216 -496.125977 90.903931\nv 13.494843 -497.086334 94.485527\nv 20.790173 -497.085937 94.485718\nv 13.494404 -491.979614 100.973549\nv 13.494490 -492.223877 98.179924\nv 13.494551 -491.979340 95.386360\nv 13.494584 -491.253387 92.677681\nv 13.494588 -490.068146 90.136223\nv 13.494564 -488.459564 87.839165\nv 13.494512 -486.476471 85.856331\nv 13.494434 -484.179291 84.248009\nv 13.494330 -481.637695 83.062965\nv 13.494207 -478.928925 82.337349\nv 13.494067 -476.135345 82.093056\nv 13.493914 -473.341705 82.337639\nv 13.493752 -470.633057 83.063560\nv 13.493587 -468.091583 84.248863\nv 13.493423 -465.794525 85.857414\nv 13.493267 -463.811676 87.840462\nv 13.493122 -462.203400 90.137672\nv 13.492993 -461.018402 92.679268\nv 13.492884 -460.292694 95.388039\nv 13.492798 -460.048462 98.181633\nv 13.492737 -460.292999 100.975227\nv 13.492703 -461.018951 103.683891\nv 13.492699 -462.204193 106.225380\nv 13.492723 -463.812775 108.522408\nv 13.492776 -465.795807 110.505257\nv 13.492854 -468.093048 112.113594\nv 13.492956 -470.634644 113.298607\nv 13.493080 -473.343414 114.024254\nv 13.493221 -476.137024 114.268532\nv 13.493374 -478.930573 114.023964\nv 13.493535 -481.639313 113.297997\nv 13.493701 -484.180756 112.112740\nv 13.493863 -486.477783 110.504143\nv 13.494020 -488.460602 108.521141\nv 13.494164 -490.068939 106.223900\nv 13.494295 -491.253937 103.682335\nv 20.789881 -491.978943 95.386551\nv 20.789820 -492.223480 98.180115\nv 20.789734 -491.979218 100.973740\nv 20.789623 -491.253540 103.682526\nv 20.789495 -490.068542 106.224091\nv 20.789351 -488.460205 108.521332\nv 20.789194 -486.477386 110.504333\nv 20.789030 -484.180359 112.112930\nv 20.788866 -481.638916 113.298187\nv 20.788706 -478.930176 114.024155\nv 20.788549 -476.136627 114.268723\nv 20.788410 -473.343018 114.024445\nv 20.788288 -470.634247 113.298798\nv 20.788185 -468.092621 112.113754\nv 20.788105 -465.795410 110.505447\nv 20.788055 -463.812378 108.522598\nv 20.788029 -462.203796 106.225571\nv 20.788034 -461.018555 103.684082\nv 20.788069 -460.292603 100.975418\nv 20.788128 -460.048065 98.181824\nv 20.788216 -460.292297 95.388229\nv 20.788324 -461.018005 92.679459\nv 20.788452 -462.203003 90.137863\nv 20.788599 -463.811279 87.840652\nv 20.788754 -465.794067 85.857620\nv 20.788918 -468.091187 84.249039\nv 20.789083 -470.632660 83.063751\nv 20.789244 -473.341309 82.337830\nv 20.789396 -476.134949 82.093246\nv 20.789537 -478.928528 82.337540\nv 20.789661 -481.637299 83.063156\nv 20.789762 -484.178894 84.248184\nv 20.789843 -486.476074 85.856522\nv 20.789894 -488.459167 87.839355\nv 20.789919 -490.067749 90.136414\nv 20.789913 -491.252991 92.677872\nv 20.787273 -496.131897 202.861526\nv 20.787323 -497.091675 202.861481\nv 13.491993 -497.092072 202.861282\nv 13.491942 -496.132294 202.861328\nv 13.491859 -494.565155 202.861420\nv 13.491748 -492.438171 202.861542\nv 13.491610 -489.816071 202.861633\nv 20.786942 -489.815674 202.861832\nv 20.787079 -492.437775 202.861740\nv 20.787191 -494.564758 202.861618\nv 11.695759 -499.451721 159.480087\nv 11.695186 -488.561401 159.480652\nv 11.694767 -488.562225 175.380981\nv 11.695340 -499.452515 175.380386\nv 22.585682 -499.451935 175.380676\nv 22.585108 -488.561646 175.381271\nv 22.585526 -488.560822 159.480942\nv 22.586098 -499.451141 159.480377\nv 21.582478 -498.448883 175.380722\nv 12.698438 -498.449341 175.380493\nv 12.697970 -489.565308 175.380981\nv 21.582010 -489.564850 175.381210\nv 12.698856 -498.448517 159.480164\nv 21.582895 -498.448059 159.480392\nv 21.582428 -489.563995 159.480865\nv 12.698389 -489.564453 159.480637\nv 14.738252 -488.561798 169.865952\nv 14.761180 -488.561523 164.975418\nv 19.507771 -488.561218 164.961853\nv 19.522470 -488.561523 169.889450\nv 20.433216 -488.561371 167.459000\nv 17.112099 -488.561737 170.788620\nv 13.859808 -488.561707 167.402130\nv 17.167624 -488.561340 164.086563\nv 20.215193 -488.561279 166.100510\nv 18.436985 -488.561646 170.563812\nv 14.079432 -488.561798 168.757156\nv 15.844478 -488.561432 164.305344\nv 20.203590 -488.561432 168.804504\nv 15.798173 -488.561798 170.558990\nv 14.084052 -488.561615 166.058243\nv 18.477987 -488.561279 164.317932\nv 18.477970 -488.229309 164.317947\nv 19.507753 -488.229279 164.961884\nv 20.215176 -488.229279 166.100540\nv 20.433199 -488.229401 167.459015\nv 20.203573 -488.229462 168.804504\nv 19.522453 -488.229492 169.889465\nv 18.436968 -488.229614 170.563812\nv 17.112082 -488.229736 170.788620\nv 15.798156 -488.229767 170.558990\nv 14.738234 -488.229828 169.865967\nv 14.079414 -488.229767 168.757141\nv 13.859791 -488.229706 167.402145\nv 14.084035 -488.229614 166.058258\nv 14.761163 -488.229584 164.975449\nv 15.844460 -488.229401 164.305374\nv 17.167606 -488.229340 164.086578\nv 15.331953 -487.581116 165.549133\nv 16.128677 -487.580994 165.063110\nv 17.163181 -487.580933 164.895889\nv 18.187727 -487.580902 165.073395\nv 18.934664 -487.580872 165.533325\nv 19.457062 -487.580872 166.383789\nv 19.623903 -487.580933 167.455093\nv 19.447546 -487.581024 168.515839\nv 18.951546 -487.581085 169.315933\nv 18.150351 -487.581146 169.807037\nv 17.114037 -487.581238 169.979340\nv 16.095312 -487.581299 169.806320\nv 15.322596 -487.581299 169.306183\nv 14.840016 -487.581238 168.480942\nv 14.669015 -487.581268 167.404099\nv 14.840792 -487.581116 166.344940\nv 14.079346 -486.932861 168.757187\nv 13.859722 -486.932800 167.402222\nv 14.083966 -486.932770 166.058319\nv 14.761094 -486.932648 164.975525\nv 15.844392 -486.932556 164.305435\nv 17.167538 -486.932465 164.086639\nv 18.477901 -486.932373 164.318008\nv 19.507685 -486.932373 164.961945\nv 20.215107 -486.932404 166.100586\nv 20.433130 -486.932465 167.459091\nv 20.203505 -486.932526 168.804626\nv 19.522385 -486.932648 169.889542\nv 18.436899 -486.932739 170.563904\nv 17.112013 -486.932831 170.788666\nv 15.798087 -486.932892 170.559082\nv 14.738166 -486.932953 169.866058\nv 17.113968 -486.284332 169.979401\nv 16.095243 -486.284363 169.806381\nv 15.322528 -486.284393 169.306229\nv 14.839949 -486.284393 168.480988\nv 14.668947 -486.284332 167.404144\nv 14.840724 -486.284302 166.345016\nv 15.331885 -486.284210 165.549164\nv 16.128609 -486.284119 165.063187\nv 17.163113 -486.284058 164.895950\nv 18.187658 -486.284027 165.073441\nv 18.934595 -486.283997 165.533386\nv 19.456993 -486.284027 166.383881\nv 19.623835 -486.284088 167.455154\nv 19.447477 -486.284210 168.515915\nv 18.951477 -486.284210 169.315994\nv 18.150282 -486.284271 169.807144\nv 20.203436 -485.635651 168.804657\nv 19.522316 -485.635742 169.889572\nv 18.436831 -485.635864 170.563950\nv 17.111944 -485.635956 170.788757\nv 15.798018 -485.636017 170.559158\nv 14.738098 -485.636017 169.866104\nv 14.079278 -485.635986 168.757248\nv 13.859654 -485.635925 167.402298\nv 14.083899 -485.635864 166.058380\nv 14.761026 -485.635742 164.975555\nv 15.844324 -485.635681 164.305542\nv 17.167469 -485.635559 164.086670\nv 18.477833 -485.635498 164.318039\nv 19.507616 -485.635437 164.961975\nv 20.215038 -485.635529 166.100708\nv 20.433062 -485.635590 167.459152\nv 18.934528 -484.987091 165.533463\nv 19.456926 -484.987122 166.383911\nv 19.623768 -484.987183 167.455231\nv 19.447411 -484.987274 168.515976\nv 18.951410 -484.987335 169.316055\nv 18.150215 -484.987396 169.807175\nv 17.113901 -484.987457 169.979477\nv 16.095177 -484.987488 169.806427\nv 15.322459 -484.987549 169.306305\nv 14.839880 -484.987488 168.481033\nv 14.668879 -484.987457 167.404205\nv 14.840655 -484.987366 166.345093\nv 15.331817 -484.987366 165.549225\nv 16.128542 -484.987244 165.063248\nv 17.163046 -484.987183 164.895981\nv 18.187592 -484.987152 165.073502\nv 15.844255 -484.338776 164.305603\nv 17.167402 -484.338684 164.086777\nv 18.477766 -484.338654 164.318146\nv 19.507549 -484.338623 164.962067\nv 20.214972 -484.338654 166.100739\nv 20.432995 -484.338745 167.459259\nv 20.203369 -484.338776 168.804749\nv 19.522249 -484.338867 169.889679\nv 18.436764 -484.338989 170.564011\nv 17.111877 -484.339081 170.788818\nv 15.797951 -484.339142 170.559219\nv 14.738029 -484.339142 169.866135\nv 14.079209 -484.339111 168.757355\nv 13.859586 -484.339050 167.402313\nv 14.083830 -484.338959 166.058411\nv 14.760958 -484.338898 164.975616\nv 18.187523 -483.690277 165.073608\nv 17.162977 -483.690308 164.896072\nv 16.128473 -483.690369 165.063309\nv 15.331749 -483.690430 165.549301\nv 14.840588 -483.690491 166.345108\nv 14.668811 -483.690582 167.404266\nv 14.839812 -483.690613 168.481140\nv 15.322392 -483.690613 169.306366\nv 16.095108 -483.690613 169.806519\nv 17.113832 -483.690582 169.979568\nv 18.150146 -483.690521 169.807251\nv 18.951342 -483.690460 169.316116\nv 19.447342 -483.690369 168.516022\nv 19.623699 -483.690308 167.455276\nv 19.456858 -483.690247 166.383987\nv 18.934460 -483.690216 165.533478\nv 12.245798 -483.699158 167.446579\nv 13.200635 -483.679291 170.385437\nv 15.700586 -483.666901 172.201797\nv 18.790756 -483.666748 172.201874\nv 21.290804 -483.678864 170.385651\nv 22.245798 -483.698639 167.446838\nv 21.290964 -483.718475 164.507904\nv 18.791012 -483.730865 162.691544\nv 15.700840 -483.731018 162.691467\nv 13.200791 -483.718903 164.507690\nv 11.167636 -483.669464 171.862366\nv 9.732924 -483.699280 167.446518\nv 11.167872 -483.728973 163.030670\nv 14.924383 -483.747192 160.301620\nv 19.567595 -483.746948 160.301743\nv 23.323961 -483.728333 163.030991\nv 24.758673 -483.698486 167.446915\nv 23.323725 -483.668823 171.862686\nv 19.567213 -483.650604 174.591736\nv 14.924003 -483.650848 174.591614\nv 23.323587 -481.044067 171.844986\nv 19.567076 -481.025848 174.574036\nv 14.923865 -481.026093 174.573914\nv 11.167500 -481.044708 171.844666\nv 9.732785 -481.074524 167.428818\nv 11.167734 -481.104218 163.012939\nv 14.924246 -481.122437 160.283890\nv 19.567457 -481.122192 160.284012\nv 23.323822 -481.103577 163.013260\nv 24.758535 -481.073730 167.429214\nv -53.330784 -401.009827 -164.112823\nv -55.579670 -401.006104 -238.283783\nv -53.121174 -402.601349 -164.112900\nv -55.293339 -403.180145 -238.283890\nv -52.506786 -404.084381 -164.112976\nv -54.454071 -405.206024 -238.283997\nv -51.529507 -405.357849 -164.113022\nv -53.119049 -406.945709 -238.284058\nv -50.255917 -406.335022 -164.113052\nv -51.379288 -408.280518 -238.284073\nv -48.772835 -406.949249 -164.113037\nv -49.353340 -409.119568 -238.284073\nv -47.181301 -407.158630 -164.112976\nv -47.179237 -409.405640 -238.283997\nv -45.589798 -406.949097 -164.112961\nv -45.005173 -409.119354 -238.283966\nv -44.106770 -406.334686 -164.112885\nv -42.979294 -408.280060 -238.283844\nv -42.833290 -405.357391 -164.112793\nv -41.239670 -406.945068 -238.283737\nv -41.856133 -404.083801 -164.112686\nv -39.904842 -405.205261 -238.283615\nv -41.241901 -402.600708 -164.112579\nv -39.065788 -403.179291 -238.283463\nv -41.032467 -401.009186 -164.112503\nv -38.779678 -401.005219 -238.283340\nv -41.242069 -399.417694 -164.112411\nv -39.066017 -398.831146 -238.283218\nv -41.856457 -397.934631 -164.112366\nv -39.905285 -396.805298 -238.283157\nv -42.833748 -396.661163 -164.112320\nv -41.240295 -395.065674 -238.283127\nv -44.107330 -395.684021 -164.112320\nv -42.980061 -393.730835 -238.283081\nv -45.590424 -395.069794 -164.112320\nv -45.006027 -392.891785 -238.283081\nv -47.181950 -394.860321 -164.112350\nv -47.180119 -392.605682 -238.283127\nv -48.773460 -395.069946 -164.112396\nv -49.354195 -392.891998 -238.283188\nv -50.256477 -395.684357 -164.112488\nv -51.380054 -393.731293 -238.283310\nv -51.529964 -396.661621 -164.112549\nv -53.119675 -395.066315 -238.283447\nv -52.507111 -397.935211 -164.112656\nv -54.454514 -396.806061 -238.283539\nv -53.121342 -399.418335 -164.112732\nv -55.293568 -398.832001 -238.283646\nv -52.554382 -399.564087 -267.305054\nv -52.743935 -401.004425 -267.305145\nv -52.554230 -402.444733 -267.305176\nv -51.998222 -403.786865 -267.305267\nv -51.113773 -404.939392 -267.305298\nv -49.961178 -405.823730 -267.305328\nv -48.618973 -406.379639 -267.305298\nv -47.178623 -406.569153 -267.305298\nv -45.738300 -406.379486 -267.305206\nv -44.396145 -405.823456 -267.305176\nv -43.243645 -404.938995 -267.305084\nv -42.359322 -403.786346 -267.305023\nv -41.803444 -402.444153 -267.304901\nv -41.613892 -401.003845 -267.304871\nv -41.803596 -399.563507 -267.304779\nv -42.359615 -398.221344 -267.304718\nv -43.244061 -397.068878 -267.304657\nv -44.396652 -396.184509 -267.304626\nv -45.738865 -395.628662 -267.304657\nv -47.179207 -395.439087 -267.304687\nv -48.619537 -395.628815 -267.304749\nv -49.961685 -396.184784 -267.304779\nv -51.114189 -397.069275 -267.304871\nv -51.998516 -398.221863 -267.304962\nv -44.712070 -396.730865 -267.304687\nv -45.902119 -396.238068 -267.304718\nv -47.179173 -396.069977 -267.304718\nv -48.456223 -396.238220 -267.304779\nv -49.646221 -396.731140 -267.304810\nv -50.668076 -397.515320 -267.304932\nv -51.452137 -398.537262 -267.304962\nv -51.944996 -399.727356 -267.305084\nv -52.113064 -401.004395 -267.305145\nv -51.944862 -402.281433 -267.305206\nv -51.451878 -403.471466 -267.305237\nv -50.667709 -404.493256 -267.305267\nv -49.645771 -405.277374 -267.305298\nv -48.455723 -405.770264 -267.305298\nv -47.178654 -405.938263 -267.305267\nv -45.901619 -405.770111 -267.305237\nv -44.711620 -405.277100 -267.305176\nv -43.689762 -404.492889 -267.305084\nv -42.905682 -403.471008 -267.305023\nv -42.412827 -402.280914 -267.304962\nv -42.244766 -401.003876 -267.304871\nv -42.412960 -399.726837 -267.304840\nv -42.905941 -398.536804 -267.304749\nv -43.690128 -397.514954 -267.304749\nv -42.412846 -399.726593 -271.650421\nv -42.905827 -398.536621 -271.650330\nv -43.690014 -397.514740 -271.650330\nv -44.711956 -396.730652 -271.650330\nv -45.902004 -396.237823 -271.650330\nv -47.179058 -396.069733 -271.650360\nv -48.456108 -396.237976 -271.650391\nv -49.646107 -396.730927 -271.650452\nv -50.667961 -397.515106 -271.650513\nv -51.452023 -398.537079 -271.650543\nv -51.944881 -399.727112 -271.650665\nv -52.112949 -401.004181 -271.650726\nv -51.944748 -402.281219 -271.650787\nv -51.451763 -403.471222 -271.650818\nv -50.667595 -404.493042 -271.650879\nv -49.645657 -405.277161 -271.650909\nv -48.455608 -405.770050 -271.650909\nv -47.178539 -405.938049 -271.650879\nv -45.901505 -405.769897 -271.650848\nv -44.711506 -405.276886 -271.650787\nv -43.689648 -404.492676 -271.650696\nv -42.905567 -403.470764 -271.650604\nv -42.412712 -402.280701 -271.650543\nv -42.244652 -401.003662 -271.650452\nv -41.369076 -404.357605 -273.657684\nv -40.699009 -402.739655 -273.657532\nv -40.470516 -401.003448 -273.657471\nv -40.699192 -399.267242 -273.657410\nv -41.369431 -397.649353 -273.657318\nv -42.435562 -396.260132 -273.657257\nv -43.824932 -395.194153 -273.657257\nv -45.442879 -394.524048 -273.657257\nv -47.179100 -394.295563 -273.657288\nv -48.915314 -394.524231 -273.657349\nv -50.533173 -395.194489 -273.657440\nv -51.922421 -396.260651 -273.657501\nv -52.988422 -397.649963 -273.657623\nv -53.658485 -399.267944 -273.657745\nv -53.886974 -401.004150 -273.657806\nv -53.658302 -402.740356 -273.657867\nv -52.988068 -404.358215 -273.657990\nv -51.921921 -405.747498 -273.657990\nv -50.532562 -406.813446 -273.658051\nv -48.914631 -407.483521 -273.658020\nv -47.178394 -407.712036 -273.657990\nv -45.442196 -407.483337 -273.657928\nv -43.824322 -406.813110 -273.657867\nv -42.435062 -405.746979 -273.657745\nv -45.442142 -407.483276 -275.745605\nv -43.824268 -406.813049 -275.745575\nv -42.435009 -405.746887 -275.745453\nv -41.369022 -404.357483 -275.745361\nv -40.698956 -402.739563 -275.745270\nv -40.470463 -401.003357 -275.745148\nv -40.699139 -399.267120 -275.745056\nv -41.369377 -397.649261 -275.744995\nv -42.435509 -396.260010 -275.744965\nv -43.824879 -395.194000 -275.744904\nv -45.442825 -394.523926 -275.744904\nv -47.179047 -394.295471 -275.744965\nv -48.915260 -394.524109 -275.744995\nv -50.533119 -395.194336 -275.745087\nv -51.922367 -396.260529 -275.745209\nv -52.988369 -397.649872 -275.745300\nv -53.658432 -399.267822 -275.745392\nv -53.886921 -401.004059 -275.745483\nv -53.658249 -402.740265 -275.745605\nv -52.988014 -404.358093 -275.745667\nv -51.921867 -405.747406 -275.745697\nv -50.532509 -406.813385 -275.745758\nv -48.914577 -407.483459 -275.745697\nv -47.178341 -407.711945 -275.745697\nv -49.645493 -405.276794 -277.833282\nv -48.455444 -405.769684 -277.833252\nv -47.178375 -405.937714 -277.833252\nv -45.901340 -405.769531 -277.833191\nv -44.711342 -405.276520 -277.833160\nv -43.689484 -404.492371 -277.833130\nv -42.905403 -403.470398 -277.833008\nv -42.412548 -402.280365 -277.832947\nv -42.244488 -401.003296 -277.832855\nv -42.412682 -399.726288 -277.832825\nv -42.905663 -398.536285 -277.832764\nv -43.689850 -397.514374 -277.832703\nv -44.711792 -396.730347 -277.832733\nv -45.901840 -396.237488 -277.832733\nv -47.178894 -396.069397 -277.832764\nv -48.455944 -396.237640 -277.832794\nv -49.645943 -396.730621 -277.832855\nv -50.667797 -397.514740 -277.832886\nv -51.451859 -398.536743 -277.832977\nv -51.944717 -399.726807 -277.833069\nv -52.112785 -401.003815 -277.833130\nv -51.944584 -402.280884 -277.833191\nv -51.451599 -403.470856 -277.833221\nv -50.667431 -404.492737 -277.833313\nv -48.936153 -394.446289 -274.701172\nv -48.748276 -395.147675 -272.440216\nv -50.573467 -395.124573 -274.701294\nv -50.210495 -395.753448 -272.440308\nv -51.979420 -396.203552 -274.701385\nv -51.466095 -396.717010 -272.440399\nv -53.058228 -397.609650 -274.701477\nv -52.429535 -397.972687 -272.440460\nv -53.736359 -399.246979 -274.701569\nv -53.035145 -399.434998 -272.440582\nv -53.967587 -401.004120 -274.701691\nv -53.241646 -401.004211 -272.440674\nv -53.736172 -402.761200 -274.701752\nv -53.034981 -402.573334 -272.440765\nv -53.057873 -404.398499 -274.701843\nv -52.429218 -404.035553 -272.440765\nv -51.978912 -405.804474 -274.701874\nv -51.465645 -405.291229 -272.440857\nv -50.572849 -406.883240 -274.701904\nv -50.209942 -406.254639 -272.440826\nv -48.935463 -407.561340 -274.701874\nv -48.747662 -406.860229 -272.440857\nv -47.178364 -407.792572 -274.701843\nv -47.178463 -407.066711 -272.440826\nv -45.421284 -407.561157 -274.701782\nv -45.609287 -406.860077 -272.440765\nv -43.783981 -406.882904 -274.701721\nv -44.147068 -406.254303 -272.440674\nv -42.378014 -405.803955 -274.701630\nv -42.891464 -405.290771 -272.440643\nv -41.299213 -404.397858 -274.701538\nv -41.928032 -404.035004 -272.440491\nv -40.621082 -402.760498 -274.701416\nv -41.322422 -402.572723 -272.440460\nv -40.389851 -401.003418 -274.701324\nv -41.115906 -401.003571 -272.440338\nv -40.621269 -399.246277 -274.701233\nv -41.322586 -399.434387 -272.440277\nv -41.299568 -397.609009 -274.701172\nv -41.928349 -397.972137 -272.440186\nv -42.378521 -396.203033 -274.701141\nv -42.891914 -396.716553 -272.440186\nv -43.784599 -395.124237 -274.701111\nv -44.147621 -395.753113 -272.440155\nv -45.421974 -394.446106 -274.701080\nv -45.609901 -395.147522 -272.440125\nv -47.179077 -394.214874 -274.701141\nv -47.179100 -394.940979 -272.440155\nv -51.468891 -396.713867 -276.997894\nv -52.432987 -397.970367 -276.997955\nv -53.038994 -399.433655 -276.998108\nv -53.245640 -401.003937 -276.998169\nv -53.038830 -402.574188 -276.998230\nv -52.432671 -404.037384 -276.998291\nv -51.468437 -405.293854 -276.998322\nv -50.211884 -406.257935 -276.998383\nv -48.748615 -406.863953 -276.998383\nv -47.178341 -407.070587 -276.998352\nv -45.608105 -406.863800 -276.998291\nv -44.144886 -406.257599 -276.998230\nv -42.888432 -405.293396 -276.998108\nv -41.924335 -404.036835 -276.998016\nv -41.318325 -402.573578 -276.997925\nv -41.111675 -401.003296 -276.997833\nv -41.318489 -399.433044 -276.997803\nv -41.924652 -397.969818 -276.997681\nv -42.888885 -396.713409 -276.997681\nv -44.145439 -395.749268 -276.997650\nv -45.608719 -395.143280 -276.997620\nv -47.178978 -394.936584 -276.997681\nv -48.749229 -395.143433 -276.997711\nv -50.212437 -395.749603 -276.997803\nv -51.944397 -402.280548 -285.001190\nv -51.451412 -403.470490 -285.001221\nv -50.667244 -404.492371 -285.001282\nv -49.645306 -405.276428 -285.001251\nv -48.455257 -405.769287 -285.001282\nv -47.178188 -405.937347 -285.001251\nv -45.901154 -405.769135 -285.001221\nv -44.711155 -405.276154 -285.001129\nv -43.689297 -404.492004 -285.001099\nv -42.905216 -403.470032 -285.001007\nv -42.412361 -402.280029 -285.000946\nv -42.244301 -401.002930 -285.000824\nv -42.412495 -399.725891 -285.000793\nv -42.905476 -398.535889 -285.000763\nv -43.689663 -397.514038 -285.000732\nv -44.711605 -396.729980 -285.000702\nv -45.901653 -396.237091 -285.000732\nv -47.178707 -396.069031 -285.000732\nv -48.455757 -396.237244 -285.000793\nv -49.645756 -396.730255 -285.000824\nv -50.667610 -397.514404 -285.000916\nv -51.451672 -398.536346 -285.000977\nv -51.944530 -399.726410 -285.001038\nv -52.112598 -401.003448 -285.001099\nv -52.267239 -398.065521 -285.233887\nv -52.854168 -399.482697 -285.234009\nv -53.054310 -401.003479 -285.234100\nv -52.854008 -402.524261 -285.234131\nv -52.266930 -403.941406 -285.234222\nv -51.333088 -405.158295 -285.234253\nv -50.116116 -406.091949 -285.234253\nv -48.698936 -406.678925 -285.234253\nv -47.178131 -406.879059 -285.234222\nv -45.657360 -406.678772 -285.234161\nv -44.240234 -406.091644 -285.234100\nv -43.023357 -405.157837 -285.234039\nv -42.089634 -403.940887 -285.233948\nv -41.502716 -402.523682 -285.233826\nv -41.302574 -401.002869 -285.233795\nv -41.502876 -399.482117 -285.233704\nv -42.089943 -398.065002 -285.233612\nv -43.023796 -396.848083 -285.233612\nv -44.240772 -395.914368 -285.233582\nv -45.657959 -395.327484 -285.233582\nv -47.178749 -395.127319 -285.233643\nv -48.699535 -395.327637 -285.233673\nv -50.116653 -395.914673 -285.233734\nv -51.333527 -396.848541 -285.233826\nv -49.106407 -393.809265 -286.756714\nv -50.902611 -394.553375 -286.756836\nv -52.445019 -395.737030 -286.756927\nv -53.628513 -397.279541 -286.757019\nv -54.372459 -399.075867 -286.757141\nv -54.626133 -401.003479 -286.757263\nv -54.372257 -402.931122 -286.757355\nv -53.628120 -404.727325 -286.757446\nv -52.444466 -406.269714 -286.757446\nv -50.901932 -407.453217 -286.757507\nv -49.105648 -408.197174 -286.757477\nv -47.178013 -408.450806 -286.757446\nv -45.250416 -408.196960 -286.757385\nv -43.454201 -407.452820 -286.757294\nv -41.911789 -406.269165 -286.757172\nv -40.728283 -404.726654 -286.757111\nv -39.984344 -402.930359 -286.756958\nv -39.730671 -401.002716 -286.756866\nv -39.984547 -399.075104 -286.756744\nv -40.728676 -397.278870 -286.756683\nv -41.912342 -395.736481 -286.756653\nv -43.454880 -394.552979 -286.756622\nv -45.251175 -393.809052 -286.756622\nv -47.178795 -393.555359 -286.756683\nv -42.194969 -392.370483 -291.062408\nv -44.598999 -391.374786 -291.062408\nv -47.178814 -391.035278 -291.062469\nv -49.758595 -391.375061 -291.062561\nv -52.162518 -392.371002 -291.062683\nv -54.226788 -393.955139 -291.062836\nv -55.810703 -396.019531 -291.062988\nv -56.806347 -398.423584 -291.063110\nv -57.145851 -401.003387 -291.063232\nv -56.806076 -403.583191 -291.063385\nv -55.810181 -405.987122 -291.063477\nv -54.226044 -408.051392 -291.063568\nv -52.161610 -409.635315 -291.063599\nv -49.757584 -410.630951 -291.063568\nv -47.177765 -410.970428 -291.063538\nv -44.597988 -410.630676 -291.063416\nv -42.194061 -409.634796 -291.063324\nv -40.129780 -408.050629 -291.063202\nv -38.545876 -405.986206 -291.063019\nv -37.550220 -403.582184 -291.062866\nv -37.210712 -401.002319 -291.062714\nv -37.550491 -398.422577 -291.062592\nv -38.546398 -396.018616 -291.062531\nv -40.130524 -393.954376 -291.062469\nv -35.905376 -397.981354 -298.108978\nv -37.071434 -395.166718 -298.108856\nv -38.926224 -392.749756 -298.108826\nv -41.343365 -390.895203 -298.108765\nv -44.158138 -389.729431 -298.108765\nv -47.178719 -389.331940 -298.108826\nv -50.199261 -389.729767 -298.108917\nv -53.013920 -390.895813 -298.109070\nv -55.430859 -392.750641 -298.109253\nv -57.285389 -395.167786 -298.109375\nv -58.451153 -397.982544 -298.109558\nv -58.848663 -401.003113 -298.109772\nv -58.450836 -404.023651 -298.109894\nv -57.284775 -406.838318 -298.110016\nv -55.429993 -409.255280 -298.110107\nv -53.012856 -411.109772 -298.110138\nv -50.198074 -412.275543 -298.110107\nv -47.177490 -412.673035 -298.110077\nv -44.156952 -412.275208 -298.109955\nv -41.342300 -411.109161 -298.109833\nv -38.925358 -409.254395 -298.109680\nv -37.070820 -406.837250 -298.109497\nv -35.905060 -404.022461 -298.109314\nv -35.507549 -401.001892 -298.109161\nv -36.420052 -407.212524 -303.906586\nv -35.179256 -404.216583 -303.906403\nv -34.756168 -401.001526 -303.906219\nv -35.179596 -397.786591 -303.906067\nv -36.420704 -394.790741 -303.905914\nv -38.394897 -392.218201 -303.905853\nv -40.967628 -390.244293 -303.905823\nv -43.963593 -389.003540 -303.905853\nv -47.178608 -388.580383 -303.905914\nv -50.393578 -389.003876 -303.906006\nv -53.389416 -390.244934 -303.906158\nv -55.961941 -392.219147 -303.906311\nv -57.935860 -394.791870 -303.906494\nv -59.176640 -397.787842 -303.906708\nv -59.599739 -401.002838 -303.906860\nv -59.176300 -404.217834 -303.907043\nv -57.935207 -407.213654 -303.907166\nv -55.961014 -409.786194 -303.907227\nv -53.388283 -411.760101 -303.907257\nv -50.392315 -413.000885 -303.907257\nv -47.177299 -413.423981 -303.907196\nv -43.962330 -413.000549 -303.907104\nv -40.966496 -411.759460 -303.906921\nv -38.393970 -409.785248 -303.906769\nv -43.743889 -413.815613 -303.907135\nv -40.544544 -412.490234 -303.907013\nv -37.797249 -410.381897 -303.906799\nv -35.689251 -407.634430 -303.906616\nv -34.364182 -404.434906 -303.906372\nv -33.912338 -401.001495 -303.906189\nv -34.364544 -397.568146 -303.906067\nv -35.689949 -394.368774 -303.905914\nv -37.798237 -391.621490 -303.905853\nv -40.545753 -389.513519 -303.905762\nv -43.745235 -388.188416 -303.905792\nv -47.178650 -387.736542 -303.905853\nv -50.612019 -388.188782 -303.905975\nv -53.811371 -389.514221 -303.906097\nv -56.558662 -391.622498 -303.906342\nv -58.666660 -394.369965 -303.906525\nv -59.991730 -397.569489 -303.906738\nv -60.443577 -401.002869 -303.906891\nv -59.991367 -404.436249 -303.907043\nv -58.665962 -407.635620 -303.907227\nv -56.557674 -410.382904 -303.907288\nv -53.810162 -412.490936 -303.907349\nv -50.610672 -413.815979 -303.907318\nv -47.177254 -414.267822 -303.907257\nv -53.810112 -412.490814 -305.672333\nv -50.610622 -413.815887 -305.672394\nv -47.177204 -414.267731 -305.672302\nv -43.743839 -413.815521 -305.672211\nv -40.544495 -412.490112 -305.671997\nv -37.797199 -410.381836 -305.671844\nv -35.689201 -407.634308 -305.671631\nv -34.364132 -404.434814 -305.671448\nv -33.912289 -401.001434 -305.671234\nv -34.364494 -397.567993 -305.671051\nv -35.689899 -394.368713 -305.670929\nv -37.798187 -391.621368 -305.670868\nv -40.545704 -389.513397 -305.670807\nv -43.745186 -388.188293 -305.670807\nv -47.178600 -387.736450 -305.670898\nv -50.611969 -388.188660 -305.670990\nv -53.811321 -389.514099 -305.671143\nv -56.558613 -391.622375 -305.671356\nv -58.666611 -394.369904 -305.671539\nv -59.991680 -397.569336 -305.671722\nv -60.443527 -401.002808 -305.671936\nv -59.991318 -404.436157 -305.672119\nv -58.665913 -407.635498 -305.672241\nv -56.557625 -410.382843 -305.672333\nv -60.816074 -404.657135 -307.437286\nv -59.405331 -408.062408 -307.437439\nv -57.161350 -410.986572 -307.437500\nv -54.236973 -413.230286 -307.437561\nv -50.831543 -414.640625 -307.437561\nv -47.177116 -415.121552 -307.437500\nv -43.522739 -414.640228 -307.437378\nv -40.117466 -413.229523 -307.437195\nv -37.193333 -410.985504 -307.436981\nv -34.949627 -408.061127 -307.436798\nv -33.539257 -404.655701 -307.436584\nv -33.058331 -401.001282 -307.436371\nv -33.539642 -397.346924 -307.436188\nv -34.950371 -393.941589 -307.436005\nv -37.194382 -391.017456 -307.435944\nv -40.118752 -388.773834 -307.435913\nv -43.524174 -387.363403 -307.435974\nv -47.178600 -386.882477 -307.436005\nv -50.832977 -387.363800 -307.436157\nv -54.238258 -388.774597 -307.436279\nv -57.162399 -391.018524 -307.436462\nv -59.406075 -393.942871 -307.436646\nv -60.816460 -397.348358 -307.436890\nv -61.297398 -401.002777 -307.437134\nv -59.872421 -393.673553 -308.959930\nv -61.336590 -397.208923 -308.960175\nv -61.835854 -401.002686 -308.960358\nv -61.336189 -404.796478 -308.960571\nv -59.871651 -408.331604 -308.960724\nv -57.542080 -411.367249 -308.960815\nv -54.506165 -413.696533 -308.960876\nv -50.970848 -415.160706 -308.960815\nv -47.177048 -415.659943 -308.960724\nv -43.383308 -415.160309 -308.960602\nv -39.848152 -413.695770 -308.960480\nv -36.812489 -411.366180 -308.960266\nv -34.483219 -408.330261 -308.960052\nv -33.019051 -404.794983 -308.959808\nv -32.519783 -401.001129 -308.959595\nv -33.019451 -397.207428 -308.959412\nv -34.483990 -393.672211 -308.959259\nv -36.813580 -390.636627 -308.959167\nv -39.849487 -388.307373 -308.959106\nv -43.384800 -386.843170 -308.959137\nv -47.178593 -386.343903 -308.959229\nv -50.972340 -386.843567 -308.959351\nv -54.507500 -388.308136 -308.959503\nv -57.543171 -390.637695 -308.959717\nv -51.185478 -386.048340 -308.959320\nv -54.919182 -387.595154 -308.959442\nv -58.125355 -390.055542 -308.959717\nv -60.585449 -393.261963 -308.959930\nv -62.131847 -396.995911 -308.960175\nv -62.659153 -401.002716 -308.960388\nv -62.131424 -405.009613 -308.960602\nv -60.584637 -408.743286 -308.960754\nv -58.124203 -411.949463 -308.960876\nv -54.917774 -414.409576 -308.960907\nv -51.183903 -415.955963 -308.960876\nv -47.177006 -416.483246 -308.960785\nv -43.170177 -415.955536 -308.960663\nv -39.436462 -414.408752 -308.960510\nv -36.230297 -411.948334 -308.960297\nv -33.770195 -408.741882 -308.960052\nv -32.223797 -405.008057 -308.959808\nv -31.696486 -401.001099 -308.959564\nv -32.224220 -396.994354 -308.959381\nv -33.771008 -393.260559 -308.959229\nv -36.231449 -390.054413 -308.959137\nv -39.437870 -387.594330 -308.959045\nv -43.171753 -386.047913 -308.959106\nv -47.178635 -385.520599 -308.959198\nv -39.242256 -387.255493 -310.643555\nv -43.070492 -385.669983 -310.643555\nv -47.178608 -385.129333 -310.643616\nv -51.286690 -385.670410 -310.643768\nv -55.114754 -387.256317 -310.643982\nv -58.401920 -389.778900 -310.644135\nv -60.924152 -393.066315 -310.644409\nv -62.509640 -396.894562 -310.644653\nv -63.050278 -401.002655 -310.644897\nv -62.509209 -405.110748 -310.645081\nv -60.923317 -408.938782 -310.645264\nv -58.400742 -412.225983 -310.645325\nv -55.113308 -414.748230 -310.645386\nv -51.285076 -416.333679 -310.645325\nv -47.176941 -416.874298 -310.645294\nv -43.068878 -416.333252 -310.645111\nv -39.240822 -414.747406 -310.644958\nv -35.953644 -412.224792 -310.644745\nv -33.431385 -408.937347 -310.644531\nv -31.845900 -405.109131 -310.644257\nv -31.305271 -401.000977 -310.644073\nv -31.846333 -396.892944 -310.643829\nv -33.432220 -393.064880 -310.643677\nv -35.954823 -389.777710 -310.643555\nv -31.846279 -396.892853 -312.731537\nv -33.432167 -393.064789 -312.731415\nv -35.954769 -389.777588 -312.731262\nv -39.242203 -387.255341 -312.731232\nv -43.070438 -385.669861 -312.731232\nv -47.178555 -385.129242 -312.731323\nv -51.286636 -385.670288 -312.731445\nv -55.114700 -387.256165 -312.731659\nv -58.401867 -389.778778 -312.731842\nv -60.924099 -393.066223 -312.732147\nv -62.509586 -396.894470 -312.732361\nv -63.050224 -401.002594 -312.732574\nv -62.509155 -405.110657 -312.732788\nv -60.923264 -408.938690 -312.732941\nv -58.400688 -412.225891 -312.733032\nv -55.113255 -414.748077 -312.733063\nv -51.285023 -416.333527 -312.733002\nv -47.176888 -416.874237 -312.732971\nv -43.068825 -416.333099 -312.732788\nv -39.240768 -414.747253 -312.732635\nv -35.953590 -412.224701 -312.732452\nv -33.431332 -408.937256 -312.732208\nv -31.845846 -405.109039 -312.731964\nv -31.305218 -401.000916 -312.731750\nv -34.422764 -408.364777 -314.416687\nv -32.951637 -404.812714 -314.416473\nv -32.449997 -401.000854 -314.416260\nv -32.952038 -397.189117 -314.416077\nv -34.423538 -393.637115 -314.415924\nv -36.764198 -390.587067 -314.415802\nv -39.814526 -388.246765 -314.415741\nv -43.366638 -386.775604 -314.415771\nv -47.178448 -386.273956 -314.415863\nv -50.990223 -386.776001 -314.415985\nv -54.542187 -388.247528 -314.416138\nv -57.592262 -390.588165 -314.416351\nv -59.932590 -393.638458 -314.416595\nv -61.403706 -397.190613 -314.416840\nv -61.905350 -401.002411 -314.417023\nv -61.403305 -404.814209 -314.417236\nv -59.931816 -408.366119 -314.417358\nv -57.591167 -411.416199 -314.417480\nv -54.540848 -413.756531 -314.417480\nv -50.988724 -415.227661 -314.417450\nv -47.176899 -415.729279 -314.417389\nv -43.365131 -415.227264 -314.417236\nv -39.813187 -413.755768 -314.417084\nv -36.763103 -411.415100 -314.416931\nv -43.854038 -413.402893 -315.295258\nv -40.757599 -412.120087 -315.295105\nv -38.098656 -410.079590 -315.294952\nv -36.058460 -407.420471 -315.294739\nv -34.775997 -404.323914 -315.294556\nv -34.338688 -401.000885 -315.294373\nv -34.776344 -397.678009 -315.294189\nv -36.059135 -394.581512 -315.294067\nv -38.099613 -391.922577 -315.294006\nv -40.758755 -389.882416 -315.293915\nv -43.855343 -388.599976 -315.293976\nv -47.178326 -388.162567 -315.294037\nv -50.501278 -388.600311 -315.294159\nv -53.597721 -389.883087 -315.294250\nv -56.256660 -391.923523 -315.294464\nv -58.296856 -394.582703 -315.294647\nv -59.579311 -397.679321 -315.294830\nv -60.016640 -401.002258 -315.295044\nv -59.578964 -404.325226 -315.295197\nv -58.296181 -407.421661 -315.295319\nv -56.255703 -410.080536 -315.295410\nv -53.596550 -412.120758 -315.295441\nv -50.499973 -413.403229 -315.295441\nv -47.176975 -413.840546 -315.295380\nv -52.844666 -391.187256 -315.204773\nv -55.191734 -392.988373 -315.204956\nv -56.992607 -395.335632 -315.205078\nv -58.124638 -398.069000 -315.205261\nv -58.510666 -401.002197 -315.205414\nv -58.124329 -403.935364 -315.205566\nv -56.992008 -406.668610 -315.205688\nv -55.190891 -409.015625 -315.205750\nv -52.843632 -410.816528 -315.205780\nv -50.110268 -411.948547 -315.205719\nv -47.177059 -412.334564 -315.205719\nv -44.243889 -411.948242 -315.205566\nv -41.510647 -410.815948 -315.205475\nv -39.163605 -409.014801 -315.205322\nv -37.362705 -406.667572 -315.205170\nv -36.230679 -403.934235 -315.204987\nv -35.844654 -401.001007 -315.204834\nv -36.230988 -398.067871 -315.204681\nv -37.363304 -395.334595 -315.204559\nv -39.164448 -392.987549 -315.204529\nv -41.511681 -391.186676 -315.204468\nv -44.245041 -390.054626 -315.204468\nv -47.178253 -389.668579 -315.204529\nv -50.111420 -390.054932 -315.204620\nv -44.646645 -391.553680 -314.156250\nv -47.178196 -391.220490 -314.156311\nv -49.709732 -391.553955 -314.156403\nv -52.068722 -392.531219 -314.156494\nv -54.094383 -394.085663 -314.156647\nv -55.648666 -396.111511 -314.156769\nv -56.625687 -398.470612 -314.156891\nv -56.958832 -401.002197 -314.157074\nv -56.625420 -403.533752 -314.157196\nv -55.648151 -405.892700 -314.157288\nv -54.093655 -407.918365 -314.157379\nv -52.067833 -409.472626 -314.157379\nv -49.708736 -410.449646 -314.157349\nv -47.177170 -410.782776 -314.157288\nv -44.645649 -410.449371 -314.157196\nv -42.286671 -409.472107 -314.157104\nv -40.260994 -407.917633 -314.157013\nv -38.706707 -405.891785 -314.156830\nv -37.729687 -403.532745 -314.156708\nv -37.396530 -401.001190 -314.156555\nv -37.729954 -398.469604 -314.156403\nv -38.707222 -396.110626 -314.156311\nv -40.261723 -394.084930 -314.156281\nv -42.287560 -392.530701 -314.156219\nv -40.234150 -396.992371 -312.140381\nv -41.508442 -395.331879 -312.140289\nv -43.169098 -394.057739 -312.140259\nv -45.102928 -393.256836 -312.140259\nv -47.178158 -392.983704 -312.140350\nv -49.253361 -393.257050 -312.140350\nv -51.187119 -394.058167 -312.140472\nv -52.847645 -395.332458 -312.140594\nv -54.121758 -396.993103 -312.140747\nv -54.922657 -398.926971 -312.140808\nv -55.195759 -401.002167 -312.140961\nv -54.922440 -403.077362 -312.141052\nv -54.121334 -405.011108 -312.141144\nv -52.847046 -406.671631 -312.141235\nv -51.186390 -407.945740 -312.141205\nv -49.252548 -408.746674 -312.141205\nv -47.177315 -409.019775 -312.141174\nv -45.102116 -408.746460 -312.141113\nv -43.168369 -407.945312 -312.140991\nv -41.507843 -406.671051 -312.140930\nv -40.233727 -405.010376 -312.140778\nv -39.432827 -403.076538 -312.140656\nv -39.159725 -401.001343 -312.140533\nv -39.433044 -398.926147 -312.140411\nv -41.716568 -402.465118 -306.486877\nv -41.523991 -401.001770 -306.486816\nv -41.716724 -399.538422 -306.486725\nv -42.281616 -398.174835 -306.486664\nv -43.180191 -397.003906 -306.486603\nv -44.351196 -396.105499 -306.486603\nv -45.714840 -395.540741 -306.486603\nv -47.178181 -395.348114 -306.486694\nv -48.641510 -395.540894 -306.486694\nv -50.005104 -396.105804 -306.486755\nv -51.176029 -397.004333 -306.486816\nv -52.074436 -398.175354 -306.486938\nv -52.639221 -399.539001 -306.487000\nv -52.831791 -401.002350 -306.487122\nv -52.639065 -402.465698 -306.487152\nv -52.074139 -403.829285 -306.487213\nv -51.175606 -405.000183 -306.487274\nv -50.004589 -405.898651 -306.487305\nv -48.640934 -406.463379 -306.487274\nv -47.177586 -406.655945 -306.487244\nv -45.714264 -406.463226 -306.487183\nv -44.350681 -405.898346 -306.487152\nv -43.179768 -404.999756 -306.487061\nv -42.281319 -403.828705 -306.486938\nv -45.617142 -403.705139 -305.519348\nv -44.970737 -403.209076 -305.519318\nv -44.474731 -402.562622 -305.519287\nv -44.162964 -401.809784 -305.519226\nv -44.056652 -401.001984 -305.519165\nv -44.163052 -400.194092 -305.519135\nv -44.474895 -399.441376 -305.519104\nv -44.970970 -398.794922 -305.519073\nv -45.617428 -398.298981 -305.519043\nv -46.370239 -397.987183 -305.519073\nv -47.178074 -397.880829 -305.519104\nv -47.985905 -397.987274 -305.519104\nv -48.738689 -398.299133 -305.519135\nv -49.385113 -398.795135 -305.519196\nv -49.881084 -399.441650 -305.519257\nv -50.192860 -400.194427 -305.519287\nv -50.299175 -401.002319 -305.519318\nv -50.192772 -401.810120 -305.519379\nv -49.880920 -402.562927 -305.519409\nv -49.384880 -403.209290 -305.519440\nv -48.738403 -403.705292 -305.519440\nv -47.985600 -404.017059 -305.519409\nv -47.177746 -404.123383 -305.519409\nv -46.369923 -404.016968 -305.519379\nv -47.986607 -404.019196 -267.206451\nv -47.178753 -404.125488 -267.206482\nv -46.370930 -404.019104 -267.206421\nv -45.618149 -403.707245 -267.206390\nv -44.971745 -403.211182 -267.206390\nv -44.475739 -402.564697 -267.206299\nv -44.163971 -401.811890 -267.206268\nv -44.057659 -401.004028 -267.206238\nv -44.164055 -400.196198 -267.206177\nv -44.475903 -399.443451 -267.206116\nv -44.971977 -398.796997 -267.206116\nv -45.618435 -398.301056 -267.206116\nv -46.371246 -397.989258 -267.206146\nv -47.179081 -397.882904 -267.206146\nv -47.986912 -397.989349 -267.206177\nv -48.739697 -398.301208 -267.206207\nv -49.386120 -398.797211 -267.206238\nv -49.882092 -399.443726 -267.206268\nv -50.193863 -400.196533 -267.206329\nv -50.300182 -401.004364 -267.206390\nv -50.193779 -401.812225 -267.206421\nv -49.881927 -402.564972 -267.206451\nv -49.385887 -403.211395 -267.206512\nv -48.739410 -403.707397 -267.206482\nv -52.392769 -402.406128 -164.112854\nv -52.576691 -401.009796 -164.112808\nv -52.392918 -399.613434 -164.112747\nv -51.854015 -398.312195 -164.112610\nv -50.996704 -397.194824 -164.112579\nv -49.879395 -396.337402 -164.112518\nv -48.578251 -395.798340 -164.112427\nv -47.181911 -395.614441 -164.112381\nv -45.785564 -395.798187 -164.112350\nv -44.484344 -396.337128 -164.112381\nv -43.366940 -397.194427 -164.112381\nv -42.509499 -398.311707 -164.112366\nv -41.970478 -399.612885 -164.112473\nv -41.786564 -401.009216 -164.112518\nv -41.970329 -402.405579 -164.112579\nv -42.509216 -403.706818 -164.112686\nv -43.366539 -404.824219 -164.112778\nv -44.483852 -405.681641 -164.112839\nv -45.785015 -406.220673 -164.112900\nv -47.181343 -406.404572 -164.112961\nv -48.577702 -406.220825 -164.112976\nv -49.878902 -405.681915 -164.112976\nv -50.996304 -404.824615 -164.112976\nv -51.853733 -403.707306 -164.112930\n# 11908 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng flow2\nusemtl grey\ns 1\nf 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2\nf 2 1 39 40\nf 38 37 35 36\nf 34 33 31 32\nf 30 29 27 28\nf 26 25 23 24\nf 22 21 19 20\nf 18 17 15 16\nf 14 13 11 12\nf 10 9 7 8\nf 6 5 3 4\nf 4 3 1 2\nf 8 7 5 6\nf 12 11 9 10\nf 16 15 13 14\nf 20 19 17 18\nf 24 23 21 22\nf 28 27 25 26\nf 32 31 29 30\nf 36 35 33 34\nf 40 39 37 38\nf 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 1\ng hinge2\nf 139 140 117 116\nf 137 138 115 114\nf 135 136 113 112\nf 133 134 111 110\nf 131 132 109 108\nf 129 130 107 106\nf 127 128 105 104\nf 125 126 103 102\nf 123 124 101 120\nf 121 122 119 118\nf 119 120 97 96\nf 117 118 95 94\nf 115 116 93 92\nf 113 114 91 90\nf 111 112 89 88\nf 109 110 87 86\nf 107 108 85 84\nf 105 106 83 82\nf 103 104 81 100\nf 101 102 99 98\nf 99 100 45 47\nf 97 98 49 51\nf 95 96 53 55\nf 93 94 57 59\nf 91 92 61 63\nf 89 90 65 67\nf 87 88 69 71\nf 85 86 73 75\nf 83 84 77 79\nf 81 82 41 43\nf 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 140 139\nf 80 79 77 78\nf 76 75 73 74\nf 72 71 69 70\nf 68 67 65 66\nf 64 63 61 62\nf 60 59 57 58\nf 56 55 53 54\nf 52 51 49 50\nf 48 47 45 46\nf 44 43 41 42\nf 46 45 43 44\nf 50 49 47 48\nf 54 53 51 52\nf 58 57 55 56\nf 62 61 59 60\nf 66 65 63 64\nf 70 69 67 68\nf 74 73 71 72\nf 78 77 75 76\nf 42 41 79 80\nf 80 78 76 74 72 70 68 66 64 62 60 58 56 54 52 50 48 46 44 42\nf 82 83 79 41\nf 84 85 75 77\nf 86 87 71 73\nf 88 89 67 69\nf 90 91 63 65\nf 92 93 59 61\nf 94 95 55 57\nf 96 97 51 53\nf 98 99 47 49\nf 100 81 43 45\nf 102 103 100 99\nf 104 105 82 81\nf 106 107 84 83\nf 108 109 86 85\nf 110 111 88 87\nf 112 113 90 89\nf 114 115 92 91\nf 116 117 94 93\nf 118 119 96 95\nf 120 101 98 97\nf 122 123 120 119\nf 124 125 102 101\nf 126 127 104 103\nf 128 129 106 105\nf 130 131 108 107\nf 132 133 110 109\nf 134 135 112 111\nf 136 137 114 113\nf 138 139 116 115\nf 140 121 118 117\ng cloth2\nusemtl bone\ns 2\nf 220 180 142 183\nf 218 178 180 220\nf 216 176 178 218\nf 214 174 176 216\nf 212 172 174 214\nf 210 170 172 212\nf 208 168 170 210\nf 206 166 168 208\nf 204 164 166 206\nf 202 162 164 204\nf 200 160 162 202\nf 198 158 160 200\nf 196 156 158 198\nf 194 154 156 196\nf 192 152 154 194\nf 190 150 152 192\nf 188 148 150 190\nf 186 146 148 188\nf 182 144 146 186\nf 183 142 144 182\nf 183 141 179 220\nf 218 177 175 216\nf 214 173 171 212\nf 210 169 167 208\nf 206 165 163 204\nf 202 161 159 200\nf 198 157 155 196\nf 194 153 151 192\nf 190 149 147 188\nf 186 145 143 182\nf 182 143 141 183\nf 188 147 145 186\nf 192 151 149 190\nf 196 155 153 194\nf 200 159 157 198\nf 204 163 161 202\nf 208 167 165 206\nf 212 171 169 210\nf 216 175 173 214\nf 220 179 177 218\nf 219 217 215 213 211 209 207 205 203 201 199 197 195 193 191 189 187 185 181 184\nf 142 184 181 144\nf 144 181 185 146\nf 146 185 187 148\nf 148 187 189 150\nf 150 189 191 152\nf 152 191 193 154\nf 154 193 195 156\nf 156 195 197 158\nf 158 197 199 160\nf 160 199 201 162\nf 162 201 203 164\nf 164 203 205 166\nf 166 205 207 168\nf 168 207 209 170\nf 170 209 211 172\nf 172 211 213 174\nf 174 213 215 176\nf 176 215 217 178\nf 178 217 219 180\nf 180 219 184 142\ng topcloth2\nf 379 380 357 356\nf 377 378 355 354\nf 375 376 353 352\nf 373 374 351 350\nf 371 372 349 348\nf 369 370 347 346\nf 367 368 345 344\nf 365 366 343 342\nf 363 364 341 360\nf 361 362 359 358\nf 359 360 337 336\nf 357 358 335 334\nf 355 356 333 332\nf 353 354 331 330\nf 351 352 329 328\nf 349 350 327 326\nf 347 348 325 324\nf 345 346 323 322\nf 343 344 321 340\nf 341 342 339 338\nf 339 340 317 316\nf 337 338 315 314\nf 335 336 313 312\nf 333 334 311 310\nf 331 332 309 308\nf 329 330 307 306\nf 327 328 305 304\nf 325 326 303 302\nf 323 324 301 320\nf 321 322 319 318\nf 319 320 297 296\nf 317 318 295 294\nf 315 316 293 292\nf 313 314 291 290\nf 311 312 289 288\nf 309 310 287 286\nf 307 308 285 284\nf 305 306 283 282\nf 303 304 281 300\nf 301 302 299 298\nf 299 300 277 276\nf 297 298 275 274\nf 295 296 273 272\nf 293 294 271 270\nf 291 292 269 268\nf 289 290 267 266\nf 287 288 265 264\nf 285 286 263 262\nf 283 284 261 280\nf 281 282 279 278\nf 279 280 257 256\nf 277 278 255 254\nf 275 276 253 252\nf 273 274 251 250\nf 271 272 249 248\nf 269 270 247 246\nf 267 268 245 244\nf 265 266 243 242\nf 263 264 241 260\nf 261 262 259 258\nf 259 260 237 236\nf 257 258 235 234\nf 255 256 233 232\nf 253 254 231 230\nf 251 252 229 228\nf 249 250 227 226\nf 247 248 225 224\nf 245 246 223 222\nf 243 244 221 240\nf 241 242 239 238\nf 239 240 145 147\nf 237 238 149 151\nf 235 236 153 155\nf 233 234 157 159\nf 231 232 161 163\nf 229 230 165 167\nf 227 228 169 171\nf 225 226 173 175\nf 223 224 177 179\nf 221 222 141 143\nf 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361 380 379\nf 222 223 179 141\nf 224 225 175 177\nf 226 227 171 173\nf 228 229 167 169\nf 230 231 163 165\nf 232 233 159 161\nf 234 235 155 157\nf 236 237 151 153\nf 238 239 147 149\nf 240 221 143 145\nf 242 243 240 239\nf 244 245 222 221\nf 246 247 224 223\nf 248 249 226 225\nf 250 251 228 227\nf 252 253 230 229\nf 254 255 232 231\nf 256 257 234 233\nf 258 259 236 235\nf 260 241 238 237\nf 262 263 260 259\nf 264 265 242 241\nf 266 267 244 243\nf 268 269 246 245\nf 270 271 248 247\nf 272 273 250 249\nf 274 275 252 251\nf 276 277 254 253\nf 278 279 256 255\nf 280 261 258 257\nf 282 283 280 279\nf 284 285 262 261\nf 286 287 264 263\nf 288 289 266 265\nf 290 291 268 267\nf 292 293 270 269\nf 294 295 272 271\nf 296 297 274 273\nf 298 299 276 275\nf 300 281 278 277\nf 302 303 300 299\nf 304 305 282 281\nf 306 307 284 283\nf 308 309 286 285\nf 310 311 288 287\nf 312 313 290 289\nf 314 315 292 291\nf 316 317 294 293\nf 318 319 296 295\nf 320 301 298 297\nf 322 323 320 319\nf 324 325 302 301\nf 326 327 304 303\nf 328 329 306 305\nf 330 331 308 307\nf 332 333 310 309\nf 334 335 312 311\nf 336 337 314 313\nf 338 339 316 315\nf 340 321 318 317\nf 342 343 340 339\nf 344 345 322 321\nf 346 347 324 323\nf 348 349 326 325\nf 350 351 328 327\nf 352 353 330 329\nf 354 355 332 331\nf 356 357 334 333\nf 358 359 336 335\nf 360 341 338 337\nf 362 363 360 359\nf 364 365 342 341\nf 366 367 344 343\nf 368 369 346 345\nf 370 371 348 347\nf 372 373 350 349\nf 374 375 352 351\nf 376 377 354 353\nf 378 379 356 355\nf 380 361 358 357\ng lever2\nusemtl grey\ns 1\nf 865 810 809 866\nf 826 838 837 827\nf 850 865 868 851\nf 386 658 657 387\nf 661 382 381 662\nf 690 666 665 691\nf 389 402 401 390\nf 706 682 681 707\nf 397 410 409 398\nf 722 694 693 723\nf 421 426 425 422\nf 738 710 709 739\nf 437 442 441 438\nf 754 726 725 755\nf 453 458 457 454\nf 766 742 741 767\nf 465 470 469 466\nf 782 758 757 783\nf 481 486 485 482\nf 802 770 769 803\nf 501 506 505 502\nf 818 786 785 819\nf 517 522 521 518\nf 830 806 805 831\nf 529 534 533 530\nf 842 822 821 843\nf 541 546 545 542\nf 854 834 833 855\nf 553 558 557 554\nf 870 846 845 871\nf 965 962 961 966\nf 574 882 881 575\nf 581 998 997 582\nf 994 874 873 995\nf 597 602 601 598\nf 914 886 885 915\nf 613 618 617 614\nf 922 902 901 923\nf 629 634 633 630\nf 946 926 925 947\nf 645 650 649 646\nf 678 934 933 679\nf 949 978 977 950\nf 858 570 569 859\nf 981 1010 1009 982\nf 586 898 897 587\nf 393 654 653 394\nf 642 414 413 643\nf 477 590 589 478\nf 1006 490 489 1007\nf 513 562 561 514\nf 550 538 537 551\nf 526 513 516 527\nf 1002 578 577 1003\nf 958 493 496 959\nf 954 566 565 955\nf 510 497 500 511\nf 606 594 593 607\nf 474 462 461 475\nf 433 622 621 434\nf 610 446 445 611\nf 417 638 637 418\nf 626 430 429 627\nf 701 670 669 702\nf 686 701 704 687\nf 890 910 909 891\nf 746 762 761 747\nf 749 906 905 750\nf 918 730 729 919\nf 733 930 929 734\nf 942 714 713 943\nf 717 938 937 718\nf 674 698 697 675\nf 813 862 861 814\nf 974 790 789 975\nf 797 986 985 798\nf 894 774 773 895\nf 793 970 969 794\nf 878 990 989 879\nf 1012 1000 999 1009\nf 1004 1008 1007 1001\nf 996 983 982 993\nf 988 992 991 985\nf 980 967 966 977\nf 972 976 975 969\nf 964 951 950 961\nf 956 960 959 953\nf 948 936 935 945\nf 940 944 943 937\nf 932 920 919 929\nf 924 928 927 921\nf 916 904 903 913\nf 908 912 911 905\nf 900 888 887 897\nf 892 896 895 889\nf 884 876 875 881\nf 880 884 883 877\nf 860 864 863 857\nf 867 872 871 868\nf 848 852 851 845\nf 844 836 835 841\nf 840 844 843 837\nf 824 828 827 821\nf 820 808 807 817\nf 812 815 814 809\nf 804 788 787 801\nf 792 795 794 789\nf 799 804 803 800\nf 772 776 775 769\nf 779 784 783 780\nf 760 764 763 757\nf 756 744 743 753\nf 748 751 750 745\nf 740 728 727 737\nf 732 735 734 729\nf 724 712 711 721\nf 716 719 718 713\nf 708 696 695 705\nf 700 703 702 697\nf 692 684 683 689\nf 688 692 691 685\nf 668 672 671 665\nf 676 680 679 673\nf 652 656 655 649\nf 660 663 662 657\nf 636 640 639 633\nf 644 647 646 641\nf 620 624 623 617\nf 628 631 630 625\nf 604 608 607 601\nf 612 615 614 609\nf 588 592 591 585\nf 596 599 598 593\nf 576 580 579 573\nf 572 560 559 569\nf 564 568 567 561\nf 555 548 547 556\nf 552 555 554 549\nf 536 540 539 533\nf 531 524 523 532\nf 528 531 530 525\nf 508 512 511 505\nf 515 519 518 516\nf 488 492 491 485\nf 495 499 498 496\nf 483 472 471 484\nf 476 479 478 473\nf 467 460 459 468\nf 464 467 466 461\nf 444 448 447 441\nf 451 455 454 452\nf 428 432 431 425\nf 435 439 438 436\nf 412 416 415 409\nf 419 423 422 420\nf 395 399 398 396\nf 404 407 406 401\nf 384 388 387 381\nf 1010 1011 1012 1009\nf 1002 1003 1004 1001\nf 994 995 996 993\nf 986 987 988 985\nf 978 979 980 977\nf 970 971 972 969\nf 962 963 964 961\nf 954 955 956 953\nf 946 947 948 945\nf 938 939 940 937\nf 930 931 932 929\nf 922 923 924 921\nf 914 915 916 913\nf 906 907 908 905\nf 898 899 900 897\nf 890 891 892 889\nf 882 883 884 881\nf 874 876 873\nf 876 874 875\nf 866 867 868 865\nf 858 859 860 857\nf 850 851 852 849\nf 842 843 844 841\nf 834 836 833\nf 834 835 836\nf 826 827 828 825\nf 818 819 820 817\nf 810 811 812 809\nf 802 803 804 801\nf 794 795 796 793\nf 786 787 788 785\nf 778 779 780 777\nf 770 771 772 769\nf 762 763 764 761\nf 754 755 756 753\nf 746 747 748 745\nf 738 739 740 737\nf 730 731 732 729\nf 722 723 724 721\nf 714 715 716 713\nf 706 707 708 705\nf 698 699 700 697\nf 690 692 689\nf 690 691 692\nf 682 683 684 681\nf 674 675 676 673\nf 666 667 668 665\nf 658 659 660 657\nf 650 651 652 649\nf 642 643 644 641\nf 634 635 636 633\nf 626 627 628 625\nf 618 619 620 617\nf 610 611 612 609\nf 602 603 604 601\nf 594 595 596 593\nf 586 587 588 585\nf 578 579 580 577\nf 570 571 572 569\nf 562 563 564 561\nf 554 555 556 553\nf 546 547 548 545\nf 538 539 540 537\nf 530 531 532 529\nf 522 523 524 521\nf 514 515 516 513\nf 506 507 508 505\nf 498 499 500 497\nf 490 491 492 489\nf 482 483 484 481\nf 474 475 476 473\nf 466 467 468 465\nf 458 459 460 457\nf 450 451 452 449\nf 442 443 444 441\nf 434 435 436 433\nf 426 427 428 425\nf 418 419 420 417\nf 410 411 412 409\nf 402 403 404 401\nf 394 395 396 393\nf 386 388 385\nf 386 387 388\nf 931 941 947 925\nf 671 685 691 665\nf 699 720 723 693\nf 731 752 755 725\nf 763 780 783 757\nf 791 816 819 785\nf 827 837 843 821\nf 851 868 871 845\nf 971 877 883 968\nf 987 893 899 984\nf 907 917 923 901\nf 387 657 662 381\nf 639 625 630 633\nf 607 593 598 601\nf 1003 577 582 997\nf 955 565 571 952\nf 551 537 542 545\nf 527 516 518 521\nf 491 480 482 485\nf 463 452 454 457\nf 431 420 422 425\nf 383 689 683 392\nf 403 705 695 400\nf 427 737 727 440\nf 459 765 759 468\nf 487 801 787 504\nf 523 829 823 532\nf 547 853 847 556\nf 966 961 950 977\nf 999 993 982 1009\nf 887 600 587 897\nf 635 945 935 648\nf 478 589 595 473\nf 494 1001 1007 489\nf 450 605 611 445\nf 418 637 643 413\nf 778 889 895 773\nf 734 929 919 729\nf 814 861 866 809\nf 794 969 975 789\nf 399 395 407\nf 399 407 404\nf 435 432 428 439\nf 464 460 467\nf 499 492 488 503\nf 492 499 495\nf 528 524 531\nf 552 548 555\nf 580 576 583\nf 612 608 604 615\nf 644 640 636 647\nf 676 672 668 680\nf 703 700 696 708\nf 735 732 728 740\nf 764 760 768\nf 799 792 788 804\nf 799 795 792\nf 828 824 832\nf 852 848 856\nf 880 876 884\nf 912 908 904 916\nf 944 940 936 948\nf 976 972 967 980\nf 1008 1004 1000 1012\nf 774 894 986 797\nf 698 674 938 717\nf 730 918 906 749\nf 686 670 701\nf 446 610 622 433\nf 510 566 954 497\nf 526 538 550 562 513\nf 414 642 654 393\nf 570 858 978 949\nf 926 946 634 629\nf 886 914 602 597\nf 882 574 962 965\nf 834 854 546 541\nf 806 830 522 517\nf 770 802 486 481\nf 742 766 458 453\nf 710 738 426 421\nf 682 706 402 389\nf 658 386 405\nf 838 826 810 865\nf 838 865 850\nf 666 690 382 661\nf 694 722 410 397\nf 726 754 442 437\nf 758 782 470 465\nf 786 818 506 501\nf 822 842 534 529\nf 846 870 558 553\nf 874 994 998 581\nf 902 922 618 613\nf 934 678 650 645\nf 898 586 1010 981\nf 490 1006 590 477\nf 958 578 1002 493\nf 462 474 594 606 449\nf 430 626 638 417\nf 762 746 910 890 777\nf 714 942 930 733\nf 790 974 862 813\nf 990 878 970 793\nf 992 988 983 996\nf 960 956 951 964\nf 928 924 920 932\nf 896 892 888 900\nf 867 864 860 872\nf 840 836 844\nf 815 812 808 820\nf 779 776 772 784\nf 751 748 744 756\nf 719 716 712 724\nf 688 684 692\nf 660 656 652 663\nf 628 624 620 631\nf 596 592 588 599\nf 568 564 560 572\nf 540 536 543\nf 515 512 508 519\nf 479 476 472 483\nf 451 448 444 455\nf 419 416 412 423\nf 388 384 391\nf 798 985 991 796\nf 718 937 943 713\nf 750 905 911 745\nf 702 669 675 697\nf 434 621 627 429\nf 498 953 959 496\nf 514 561 567 509\nf 394 653 659 408\nf 619 921 927 632\nf 603 913 903 616\nf 575 881 875 584\nf 559 869 859 569\nf 535 841 835 544\nf 507 817 807 520\nf 471 781 771 484\nf 443 753 743 456\nf 411 721 711 424\nf 667 664 651 677\nf 415 396 398 409\nf 447 436 438 441\nf 475 461 466 469\nf 511 500 502 505\nf 539 525 530 533\nf 563 549 554 557\nf 579 957 963 573\nf 591 1005 1011 585\nf 623 609 614 617\nf 655 641 646 649\nf 406 385 390 401\nf 891 909 915 885\nf 879 989 995 873\nf 863 973 979 857\nf 839 849 855 833\nf 811 825 831 805\nf 775 800 803 769\nf 747 761 767 741\nf 715 736 739 709\nf 687 704 707 681\nf 939 673 679 933\nf 382 383 384 381\nf 390 391 392 389\nf 398 399 400 397\nf 406 407 408 405\nf 414 415 416 413\nf 422 423 424 421\nf 430 431 432 429\nf 438 439 440 437\nf 446 447 448 445\nf 454 455 456 453\nf 462 463 464 461\nf 470 471 472 469\nf 478 479 480 477\nf 486 487 488 485\nf 494 495 496 493\nf 502 503 504 501\nf 510 511 512 509\nf 518 519 520 517\nf 526 527 528 525\nf 534 536 533\nf 534 535 536\nf 542 543 541\nf 543 544 541\nf 550 551 552 549\nf 558 559 560 557\nf 566 567 568 565\nf 574 576 573\nf 574 575 576\nf 582 583 581\nf 581 583 584\nf 590 591 592 589\nf 598 599 600 597\nf 606 607 608 605\nf 614 615 616 613\nf 622 623 624 621\nf 630 631 632 629\nf 638 639 640 637\nf 646 647 648 645\nf 654 655 656 653\nf 662 663 664 661\nf 670 671 672 669\nf 678 679 680 677\nf 686 688 685\nf 688 686 687\nf 694 695 696 693\nf 702 703 704 701\nf 710 711 712 709\nf 718 719 720 717\nf 726 727 728 725\nf 734 735 736 733\nf 742 743 744 741\nf 750 751 752 749\nf 758 759 760 757\nf 766 767 768 765\nf 774 775 776 773\nf 782 783 784 781\nf 790 791 792 789\nf 798 799 800 797\nf 806 807 808 805\nf 814 815 816 813\nf 822 823 824 821\nf 830 831 832 829\nf 838 839 840 837\nf 846 847 848 845\nf 854 855 856 853\nf 862 863 864 861\nf 870 871 872 869\nf 878 880 877\nf 880 878 879\nf 886 887 888 885\nf 894 895 896 893\nf 902 903 904 901\nf 910 911 912 909\nf 918 919 920 917\nf 926 927 928 925\nf 934 935 936 933\nf 942 943 944 941\nf 950 951 952 949\nf 958 959 960 957\nf 966 967 968 965\nf 974 975 976 973\nf 982 983 984 981\nf 990 991 992 989\nf 998 999 1000 997\nf 1006 1007 1008 1005\nf 388 391 390 385\nf 391 384 383 392\nf 399 404 403 400\nf 407 395 394 408\nf 416 419 418 413\nf 423 412 411 424\nf 432 435 434 429\nf 439 428 427 440\nf 448 451 450 445\nf 455 444 443 456\nf 460 464 463 457\nf 479 483 482 480\nf 472 476 475 469\nf 499 503 502 500\nf 492 495 494 489\nf 503 488 487 504\nf 512 515 514 509\nf 519 508 507 520\nf 524 528 527 521\nf 540 543 542 537\nf 543 536 535 544\nf 548 552 551 545\nf 568 572 571 565\nf 560 564 563 557\nf 580 583 582 577\nf 583 576 575 584\nf 592 596 595 589\nf 599 588 587 600\nf 608 612 611 605\nf 615 604 603 616\nf 624 628 627 621\nf 631 620 619 632\nf 640 644 643 637\nf 647 636 635 648\nf 656 660 659 653\nf 663 652 651 664\nf 672 676 675 669\nf 680 668 667 677\nf 684 688 687 681\nf 703 708 707 704\nf 696 700 699 693\nf 719 724 723 720\nf 712 716 715 709\nf 735 740 739 736\nf 728 732 731 725\nf 751 756 755 752\nf 744 748 747 741\nf 764 768 767 761\nf 768 760 759 765\nf 776 779 778 773\nf 784 772 771 781\nf 795 799 798 796\nf 788 792 791 785\nf 815 820 819 816\nf 808 812 811 805\nf 828 832 831 825\nf 832 824 823 829\nf 836 840 839 833\nf 852 856 855 849\nf 856 848 847 853\nf 864 867 866 861\nf 872 860 859 869\nf 876 880 879 873\nf 896 900 899 893\nf 888 892 891 885\nf 912 916 915 909\nf 904 908 907 901\nf 928 932 931 925\nf 920 924 923 917\nf 944 948 947 941\nf 936 940 939 933\nf 960 964 963 957\nf 951 956 955 952\nf 976 980 979 973\nf 967 972 971 968\nf 992 996 995 989\nf 983 988 987 984\nf 1008 1012 1011 1005\nf 1000 1004 1003 997\nf 990 793 796 991\nf 970 878 877 971\nf 774 797 800 775\nf 986 894 893 987\nf 790 813 816 791\nf 862 974 973 863\nf 698 717 720 699\nf 938 674 673 939\nf 714 733 736 715\nf 930 942 941 931\nf 730 749 752 731\nf 906 918 917 907\nf 762 777 780 763\nf 910 746 745 911\nf 777 890 889 778\nf 670 686 685 671\nf 430 417 420 431\nf 638 626 625 639\nf 446 433 436 447\nf 622 610 609 623\nf 462 449 452 463\nf 594 474 473 595\nf 449 606 605 450\nf 566 510 509 567\nf 497 954 953 498\nf 578 958 957 579\nf 493 1002 1001 494\nf 538 526 525 539\nf 562 550 549 563\nf 490 477 480 491\nf 590 1006 1005 591\nf 414 393 396 415\nf 654 642 641 655\nf 898 981 984 899\nf 1010 586 585 1011\nf 570 949 952 571\nf 978 858 857 979\nf 934 645 648 935\nf 650 678 677 651\nf 926 629 632 927\nf 634 946 945 635\nf 902 613 616 903\nf 618 922 921 619\nf 886 597 600 887\nf 602 914 913 603\nf 874 581 584 875\nf 998 994 993 999\nf 882 965 968 883\nf 962 574 573 963\nf 846 553 556 847\nf 558 870 869 559\nf 834 541 544 835\nf 546 854 853 547\nf 822 529 532 823\nf 534 842 841 535\nf 806 517 520 807\nf 522 830 829 523\nf 786 501 504 787\nf 506 818 817 507\nf 770 481 484 771\nf 486 802 801 487\nf 758 465 468 759\nf 470 782 781 471\nf 742 453 456 743\nf 458 766 765 459\nf 726 437 440 727\nf 442 754 753 443\nf 710 421 424 711\nf 426 738 737 427\nf 694 397 400 695\nf 410 722 721 411\nf 682 389 392 683\nf 402 706 705 403\nf 666 661 664 667\nf 382 690 689 383\nf 658 405 408 659\nf 405 386 385 406\nf 838 850 849 839\nf 810 826 825 811\ng flow\nf 1015 1017 1019 1021 1023 1025 1027 1029 1031 1033 1035 1037 1039 1041 1043 1045 1047 1049 1051 1013\nf 1052 1051 1049 1050\nf 1048 1047 1045 1046\nf 1044 1043 1041 1042\nf 1040 1039 1037 1038\nf 1036 1035 1033 1034\nf 1032 1031 1029 1030\nf 1028 1027 1025 1026\nf 1024 1023 1021 1022\nf 1020 1019 1017 1018\nf 1016 1015 1013 1014\nf 1018 1017 1015 1016\nf 1022 1021 1019 1020\nf 1026 1025 1023 1024\nf 1030 1029 1027 1028\nf 1034 1033 1031 1032\nf 1038 1037 1035 1036\nf 1042 1041 1039 1040\nf 1046 1045 1043 1044\nf 1050 1049 1047 1048\nf 1014 1013 1051 1052\nf 1052 1050 1048 1046 1044 1042 1040 1038 1036 1034 1032 1030 1028 1026 1024 1022 1020 1018 1016 1014\ng hinge\nf 1152 1133 1130 1129\nf 1150 1151 1128 1127\nf 1148 1149 1126 1125\nf 1146 1147 1124 1123\nf 1144 1145 1122 1121\nf 1142 1143 1120 1119\nf 1140 1141 1118 1117\nf 1138 1139 1116 1115\nf 1136 1137 1114 1113\nf 1134 1135 1132 1131\nf 1132 1113 1110 1109\nf 1130 1131 1108 1107\nf 1128 1129 1106 1105\nf 1126 1127 1104 1103\nf 1124 1125 1102 1101\nf 1122 1123 1100 1099\nf 1120 1121 1098 1097\nf 1118 1119 1096 1095\nf 1116 1117 1094 1093\nf 1114 1115 1112 1111\nf 1112 1093 1055 1057\nf 1110 1111 1059 1061\nf 1108 1109 1063 1065\nf 1106 1107 1067 1069\nf 1104 1105 1071 1073\nf 1102 1103 1075 1077\nf 1100 1101 1079 1081\nf 1098 1099 1083 1085\nf 1096 1097 1087 1089\nf 1094 1095 1091 1053\nf 1092 1090 1088 1086 1084 1082 1080 1078 1076 1074 1072 1070 1068 1066 1064 1062 1060 1058 1056 1054\nf 1054 1053 1091 1092\nf 1090 1089 1087 1088\nf 1086 1085 1083 1084\nf 1082 1081 1079 1080\nf 1078 1077 1075 1076\nf 1074 1073 1071 1072\nf 1070 1069 1067 1068\nf 1066 1065 1063 1064\nf 1062 1061 1059 1060\nf 1058 1057 1055 1056\nf 1056 1055 1053 1054\nf 1060 1059 1057 1058\nf 1064 1063 1061 1062\nf 1068 1067 1065 1066\nf 1072 1071 1069 1070\nf 1076 1075 1073 1074\nf 1080 1079 1077 1078\nf 1084 1083 1081 1082\nf 1088 1087 1085 1086\nf 1092 1091 1089 1090\nf 1150 1149 1148 1147 1146 1145 1144 1143 1142 1141 1140 1139 1138 1137 1136 1135 1134 1133 1152 1151\nf 1093 1094 1053 1055\nf 1095 1096 1089 1091\nf 1097 1098 1085 1087\nf 1099 1100 1081 1083\nf 1101 1102 1077 1079\nf 1103 1104 1073 1075\nf 1105 1106 1069 1071\nf 1107 1108 1065 1067\nf 1109 1110 1061 1063\nf 1111 1112 1057 1059\nf 1113 1114 1111 1110\nf 1115 1116 1093 1112\nf 1117 1118 1095 1094\nf 1119 1120 1097 1096\nf 1121 1122 1099 1098\nf 1123 1124 1101 1100\nf 1125 1126 1103 1102\nf 1127 1128 1105 1104\nf 1129 1130 1107 1106\nf 1131 1132 1109 1108\nf 1133 1134 1131 1130\nf 1135 1136 1113 1132\nf 1137 1138 1115 1114\nf 1139 1140 1117 1116\nf 1141 1142 1119 1118\nf 1143 1144 1121 1120\nf 1145 1146 1123 1122\nf 1147 1148 1125 1124\nf 1149 1150 1127 1126\nf 1151 1152 1129 1128\ng cloth\nusemtl bone\ns 2\nf 1192 1231 1196 1154\nf 1190 1229 1231 1192\nf 1188 1227 1229 1190\nf 1186 1225 1227 1188\nf 1184 1223 1225 1186\nf 1182 1221 1223 1184\nf 1180 1219 1221 1182\nf 1178 1217 1219 1180\nf 1176 1215 1217 1178\nf 1174 1213 1215 1176\nf 1172 1211 1213 1174\nf 1170 1209 1211 1172\nf 1168 1207 1209 1170\nf 1166 1205 1207 1168\nf 1164 1203 1205 1166\nf 1162 1201 1203 1164\nf 1160 1199 1201 1162\nf 1158 1197 1199 1160\nf 1156 1193 1197 1158\nf 1154 1196 1193 1156\nf 1231 1229 1227 1225 1223 1221 1219 1217 1215 1213 1211 1209 1207 1205 1203 1201 1199 1197 1193 1196\nf 1232 1191 1189 1230\nf 1228 1187 1185 1226\nf 1224 1183 1181 1222\nf 1220 1179 1177 1218\nf 1216 1175 1173 1214\nf 1212 1171 1169 1210\nf 1208 1167 1165 1206\nf 1204 1163 1161 1202\nf 1200 1159 1157 1198\nf 1194 1155 1153 1195\nf 1198 1157 1155 1194\nf 1202 1161 1159 1200\nf 1206 1165 1163 1204\nf 1210 1169 1167 1208\nf 1214 1173 1171 1212\nf 1218 1177 1175 1216\nf 1222 1181 1179 1220\nf 1226 1185 1183 1224\nf 1230 1189 1187 1228\nf 1195 1153 1191 1232\nf 1195 1154 1156 1194\nf 1194 1156 1158 1198\nf 1198 1158 1160 1200\nf 1200 1160 1162 1202\nf 1202 1162 1164 1204\nf 1204 1164 1166 1206\nf 1206 1166 1168 1208\nf 1208 1168 1170 1210\nf 1210 1170 1172 1212\nf 1212 1172 1174 1214\nf 1214 1174 1176 1216\nf 1216 1176 1178 1218\nf 1218 1178 1180 1220\nf 1220 1180 1182 1222\nf 1222 1182 1184 1224\nf 1224 1184 1186 1226\nf 1226 1186 1188 1228\nf 1228 1188 1190 1230\nf 1230 1190 1192 1232\nf 1232 1192 1154 1195\ng topcloth\nf 1392 1373 1370 1369\nf 1390 1391 1368 1367\nf 1388 1389 1366 1365\nf 1386 1387 1364 1363\nf 1384 1385 1362 1361\nf 1382 1383 1360 1359\nf 1380 1381 1358 1357\nf 1378 1379 1356 1355\nf 1376 1377 1354 1353\nf 1374 1375 1372 1371\nf 1372 1353 1350 1349\nf 1370 1371 1348 1347\nf 1368 1369 1346 1345\nf 1366 1367 1344 1343\nf 1364 1365 1342 1341\nf 1362 1363 1340 1339\nf 1360 1361 1338 1337\nf 1358 1359 1336 1335\nf 1356 1357 1334 1333\nf 1354 1355 1352 1351\nf 1352 1333 1330 1329\nf 1350 1351 1328 1327\nf 1348 1349 1326 1325\nf 1346 1347 1324 1323\nf 1344 1345 1322 1321\nf 1342 1343 1320 1319\nf 1340 1341 1318 1317\nf 1338 1339 1316 1315\nf 1336 1337 1314 1313\nf 1334 1335 1332 1331\nf 1332 1313 1310 1309\nf 1330 1331 1308 1307\nf 1328 1329 1306 1305\nf 1326 1327 1304 1303\nf 1324 1325 1302 1301\nf 1322 1323 1300 1299\nf 1320 1321 1298 1297\nf 1318 1319 1296 1295\nf 1316 1317 1294 1293\nf 1314 1315 1312 1311\nf 1312 1293 1290 1289\nf 1310 1311 1288 1287\nf 1308 1309 1286 1285\nf 1306 1307 1284 1283\nf 1304 1305 1282 1281\nf 1302 1303 1280 1279\nf 1300 1301 1278 1277\nf 1298 1299 1276 1275\nf 1296 1297 1274 1273\nf 1294 1295 1292 1291\nf 1292 1273 1270 1269\nf 1290 1291 1268 1267\nf 1288 1289 1266 1265\nf 1286 1287 1264 1263\nf 1284 1285 1262 1261\nf 1282 1283 1260 1259\nf 1280 1281 1258 1257\nf 1278 1279 1256 1255\nf 1276 1277 1254 1253\nf 1274 1275 1272 1271\nf 1272 1253 1250 1249\nf 1270 1271 1248 1247\nf 1268 1269 1246 1245\nf 1266 1267 1244 1243\nf 1264 1265 1242 1241\nf 1262 1263 1240 1239\nf 1260 1261 1238 1237\nf 1258 1259 1236 1235\nf 1256 1257 1234 1233\nf 1254 1255 1252 1251\nf 1252 1233 1155 1157\nf 1250 1251 1159 1161\nf 1248 1249 1163 1165\nf 1246 1247 1167 1169\nf 1244 1245 1171 1173\nf 1242 1243 1175 1177\nf 1240 1241 1179 1181\nf 1238 1239 1183 1185\nf 1236 1237 1187 1189\nf 1234 1235 1191 1153\nf 1390 1389 1388 1387 1386 1385 1384 1383 1382 1381 1380 1379 1378 1377 1376 1375 1374 1373 1392 1391\nf 1233 1234 1153 1155\nf 1235 1236 1189 1191\nf 1237 1238 1185 1187\nf 1239 1240 1181 1183\nf 1241 1242 1177 1179\nf 1243 1244 1173 1175\nf 1245 1246 1169 1171\nf 1247 1248 1165 1167\nf 1249 1250 1161 1163\nf 1251 1252 1157 1159\nf 1253 1254 1251 1250\nf 1255 1256 1233 1252\nf 1257 1258 1235 1234\nf 1259 1260 1237 1236\nf 1261 1262 1239 1238\nf 1263 1264 1241 1240\nf 1265 1266 1243 1242\nf 1267 1268 1245 1244\nf 1269 1270 1247 1246\nf 1271 1272 1249 1248\nf 1273 1274 1271 1270\nf 1275 1276 1253 1272\nf 1277 1278 1255 1254\nf 1279 1280 1257 1256\nf 1281 1282 1259 1258\nf 1283 1284 1261 1260\nf 1285 1286 1263 1262\nf 1287 1288 1265 1264\nf 1289 1290 1267 1266\nf 1291 1292 1269 1268\nf 1293 1294 1291 1290\nf 1295 1296 1273 1292\nf 1297 1298 1275 1274\nf 1299 1300 1277 1276\nf 1301 1302 1279 1278\nf 1303 1304 1281 1280\nf 1305 1306 1283 1282\nf 1307 1308 1285 1284\nf 1309 1310 1287 1286\nf 1311 1312 1289 1288\nf 1313 1314 1311 1310\nf 1315 1316 1293 1312\nf 1317 1318 1295 1294\nf 1319 1320 1297 1296\nf 1321 1322 1299 1298\nf 1323 1324 1301 1300\nf 1325 1326 1303 1302\nf 1327 1328 1305 1304\nf 1329 1330 1307 1306\nf 1331 1332 1309 1308\nf 1333 1334 1331 1330\nf 1335 1336 1313 1332\nf 1337 1338 1315 1314\nf 1339 1340 1317 1316\nf 1341 1342 1319 1318\nf 1343 1344 1321 1320\nf 1345 1346 1323 1322\nf 1347 1348 1325 1324\nf 1349 1350 1327 1326\nf 1351 1352 1329 1328\nf 1353 1354 1351 1350\nf 1355 1356 1333 1352\nf 1357 1358 1335 1334\nf 1359 1360 1337 1336\nf 1361 1362 1339 1338\nf 1363 1364 1341 1340\nf 1365 1366 1343 1342\nf 1367 1368 1345 1344\nf 1369 1370 1347 1346\nf 1371 1372 1349 1348\nf 1373 1374 1371 1370\nf 1375 1376 1353 1372\nf 1377 1378 1355 1354\nf 1379 1380 1357 1356\nf 1381 1382 1359 1358\nf 1383 1384 1361 1360\nf 1385 1386 1363 1362\nf 1387 1388 1365 1364\nf 1389 1390 1367 1366\nf 1391 1392 1369 1368\ng lever\nusemtl grey\ns 1\nf 1822 1838 1837 1823\nf 1850 1862 1861 1851\nf 1417 1398 1397 1418\nf 1670 1417 1420 1671\nf 1394 1702 1701 1395\nf 1678 1673 1676 1679\nf 1414 1718 1717 1415\nf 1694 1401 1404 1695\nf 1422 1734 1733 1423\nf 1706 1409 1412 1707\nf 1438 1750 1749 1439\nf 1722 1433 1436 1723\nf 1454 1766 1765 1455\nf 1738 1449 1452 1739\nf 1470 1778 1777 1471\nf 1754 1465 1468 1755\nf 1482 1794 1793 1483\nf 1770 1477 1480 1771\nf 1498 1814 1813 1499\nf 1782 1493 1496 1783\nf 1518 1830 1829 1519\nf 1798 1513 1516 1799\nf 1534 1842 1841 1535\nf 1818 1529 1532 1819\nf 1546 1854 1853 1547\nf 1834 1541 1544 1835\nf 1558 1866 1865 1559\nf 1846 1553 1556 1847\nf 1570 1882 1881 1571\nf 1858 1565 1568 1859\nf 1974 1586 1585 1975\nf 1894 1977 1980 1895\nf 2010 2006 2005 2011\nf 1886 1593 1596 1887\nf 1614 1926 1925 1615\nf 1898 1609 1612 1899\nf 1630 1934 1933 1631\nf 1914 1625 1628 1915\nf 1646 1958 1957 1647\nf 1938 1641 1644 1939\nf 1662 1690 1689 1663\nf 1946 1657 1660 1947\nf 1990 1870 1869 1991\nf 1582 1961 1964 1583\nf 2022 1598 1597 2023\nf 1910 1993 1996 1911\nf 1666 1654 1653 1667\nf 1426 1405 1408 1427\nf 1602 2018 2017 1603\nf 1502 1489 1492 1503\nf 1574 1562 1561 1575\nf 1550 1538 1537 1551\nf 1505 2014 2013 1506\nf 1590 1970 1969 1591\nf 1509 1966 1965 1510\nf 1578 1522 1521 1579\nf 1461 1618 1617 1462\nf 1606 1486 1485 1607\nf 1474 1461 1464 1475\nf 1634 1622 1621 1635\nf 1458 1445 1448 1459\nf 1650 1638 1637 1651\nf 1442 1429 1432 1443\nf 1682 1698 1697 1683\nf 1789 1902 1901 1790\nf 1922 1758 1757 1923\nf 1774 1789 1792 1775\nf 1918 1930 1929 1919\nf 1742 1761 1764 1743\nf 1942 1954 1953 1943\nf 1726 1745 1748 1727\nf 1950 1686 1685 1951\nf 1710 1729 1732 1711\nf 1874 1986 1985 1875\nf 1802 1825 1828 1803\nf 1998 1906 1905 1999\nf 1786 1809 1812 1787\nf 1982 1890 1889 1983\nf 2002 1805 1808 2003\nf 2012 2016 2015 2009\nf 2020 2024 2023 2017\nf 1995 2000 1999 1996\nf 2004 2008 2007 2001\nf 1979 1984 1983 1980\nf 1988 1992 1991 1985\nf 1963 1968 1967 1964\nf 1972 1976 1975 1969\nf 1948 1952 1951 1945\nf 1956 1960 1959 1953\nf 1932 1936 1935 1929\nf 1940 1944 1943 1937\nf 1916 1920 1919 1913\nf 1924 1928 1927 1921\nf 1900 1904 1903 1897\nf 1908 1912 1911 1905\nf 1888 1892 1891 1885\nf 1884 1872 1871 1881\nf 1876 1879 1878 1873\nf 1868 1860 1859 1865\nf 1864 1868 1867 1861\nf 1848 1852 1851 1845\nf 1844 1836 1835 1841\nf 1840 1844 1843 1837\nf 1820 1824 1823 1817\nf 1827 1832 1831 1828\nf 1800 1804 1803 1797\nf 1807 1811 1810 1808\nf 1796 1784 1783 1793\nf 1788 1791 1790 1785\nf 1780 1772 1771 1777\nf 1776 1780 1779 1773\nf 1756 1760 1759 1753\nf 1763 1768 1767 1764\nf 1740 1744 1743 1737\nf 1747 1752 1751 1748\nf 1724 1728 1727 1721\nf 1731 1736 1735 1732\nf 1708 1712 1711 1705\nf 1715 1720 1719 1716\nf 1696 1700 1699 1693\nf 1692 1680 1679 1689\nf 1684 1688 1687 1681\nf 1675 1664 1663 1676\nf 1668 1672 1671 1665\nf 1659 1648 1647 1660\nf 1652 1656 1655 1649\nf 1643 1632 1631 1644\nf 1636 1640 1639 1633\nf 1627 1616 1615 1628\nf 1620 1624 1623 1617\nf 1611 1600 1599 1612\nf 1604 1608 1607 1601\nf 1595 1588 1587 1596\nf 1592 1595 1594 1589\nf 1572 1576 1575 1569\nf 1580 1584 1583 1577\nf 1560 1564 1563 1557\nf 1555 1548 1547 1556\nf 1552 1555 1554 1549\nf 1536 1540 1539 1533\nf 1531 1520 1519 1532\nf 1524 1527 1526 1521\nf 1515 1500 1499 1516\nf 1504 1507 1506 1501\nf 1511 1515 1514 1512\nf 1484 1488 1487 1481\nf 1491 1495 1494 1492\nf 1472 1476 1475 1469\nf 1467 1456 1455 1468\nf 1460 1463 1462 1457\nf 1451 1440 1439 1452\nf 1444 1447 1446 1441\nf 1435 1424 1423 1436\nf 1428 1431 1430 1425\nf 1419 1407 1406 1420\nf 1411 1416 1415 1412\nf 1403 1396 1395 1404\nf 1400 1403 1402 1397\nf 2018 2019 2020 2017\nf 2010 2011 2012 2009\nf 2002 2003 2004 2001\nf 1994 1995 1996 1993\nf 1986 1987 1988 1985\nf 1978 1979 1980 1977\nf 1970 1971 1972 1969\nf 1962 1963 1964 1961\nf 1954 1955 1956 1953\nf 1946 1947 1948 1945\nf 1938 1939 1940 1937\nf 1930 1931 1932 1929\nf 1922 1923 1924 1921\nf 1914 1915 1916 1913\nf 1906 1907 1908 1905\nf 1898 1899 1900 1897\nf 1890 1892 1889\nf 1892 1890 1891\nf 1882 1883 1884 1881\nf 1874 1875 1876 1873\nf 1866 1867 1868 1865\nf 1858 1859 1860 1857\nf 1850 1852 1849\nf 1852 1850 1851\nf 1842 1843 1844 1841\nf 1834 1835 1836 1833\nf 1826 1827 1828 1825\nf 1818 1819 1820 1817\nf 1810 1811 1812 1809\nf 1802 1803 1804 1801\nf 1794 1795 1796 1793\nf 1786 1787 1788 1785\nf 1778 1779 1780 1777\nf 1770 1771 1772 1769\nf 1762 1763 1764 1761\nf 1754 1755 1756 1753\nf 1746 1747 1748 1745\nf 1738 1739 1740 1737\nf 1730 1731 1732 1729\nf 1722 1723 1724 1721\nf 1714 1715 1716 1713\nf 1706 1707 1708 1705\nf 1698 1700 1697\nf 1700 1698 1699\nf 1690 1691 1692 1689\nf 1682 1683 1684 1681\nf 1674 1675 1676 1673\nf 1666 1667 1668 1665\nf 1658 1659 1660 1657\nf 1650 1651 1652 1649\nf 1642 1643 1644 1641\nf 1634 1635 1636 1633\nf 1626 1627 1628 1625\nf 1618 1619 1620 1617\nf 1610 1611 1612 1609\nf 1602 1603 1604 1601\nf 1594 1595 1593\nf 1593 1595 1596\nf 1586 1588 1585\nf 1586 1587 1588\nf 1578 1579 1580 1577\nf 1570 1571 1572 1569\nf 1562 1563 1564 1561\nf 1554 1555 1553\nf 1553 1555 1556\nf 1546 1548 1545\nf 1546 1547 1548\nf 1538 1539 1540 1537\nf 1530 1531 1532 1529\nf 1522 1523 1524 1521\nf 1514 1515 1516 1513\nf 1506 1507 1508 1505\nf 1498 1499 1500 1497\nf 1490 1491 1492 1489\nf 1482 1483 1484 1481\nf 1474 1475 1476 1473\nf 1466 1467 1468 1465\nf 1458 1459 1460 1457\nf 1450 1451 1452 1449\nf 1442 1443 1444 1441\nf 1434 1435 1436 1433\nf 1426 1427 1428 1425\nf 1418 1419 1420 1417\nf 1410 1411 1412 1409\nf 1402 1403 1404 1401\nf 1394 1395 1396 1393\nf 1951 1685 1691 1945\nf 1699 1716 1719 1693\nf 1727 1748 1751 1721\nf 1759 1773 1779 1753\nf 1787 1812 1815 1781\nf 1823 1837 1843 1817\nf 1851 1861 1867 1845\nf 1875 1985 1991 1869\nf 1891 2001 2007 1885\nf 1903 1921 1927 1897\nf 1418 1397 1402 1413\nf 1667 1653 1658 1661\nf 1635 1621 1626 1629\nf 1603 2017 2023 1597\nf 1591 1969 1975 1585\nf 1575 1561 1566 1569\nf 1551 1537 1542 1545\nf 1523 1512 1514 1517\nf 1487 1473 1478 1481\nf 1459 1448 1450 1453\nf 1427 1408 1410 1421\nf 1679 1676 1663 1689\nf 1423 1733 1723 1436\nf 1455 1765 1755 1468\nf 1483 1793 1783 1496\nf 1519 1829 1819 1532\nf 1547 1853 1847 1556\nf 1571 1881 1871 1581\nf 1587 1893 1887 1596\nf 1615 1925 1915 1628\nf 1631 1933 1939 1644\nf 1406 1665 1671 1420\nf 1526 1573 1579 1521\nf 1510 1965 1971 1508\nf 1446 1633 1639 1441\nf 1714 1681 1687 1709\nf 1762 1917 1923 1757\nf 1730 1949 1955 1725\nf 1810 1997 2003 1808\nf 1400 1396 1403\nf 1431 1428 1424 1435\nf 1463 1460 1456 1467\nf 1491 1488 1484 1495\nf 1527 1524 1520 1531\nf 1552 1548 1555\nf 1580 1576 1572 1584\nf 1608 1604 1600 1611\nf 1640 1636 1632 1643\nf 1672 1668 1664 1675\nf 1700 1696 1704\nf 1731 1728 1724 1736\nf 1763 1760 1756 1768\nf 1791 1788 1784 1796\nf 1827 1824 1820 1832\nf 1852 1848 1856\nf 1879 1876 1872 1884\nf 1908 1904 1900 1912\nf 1940 1936 1932 1944\nf 1972 1968 1963 1976\nf 2004 2000 1995 2008\nf 2002 1890 1982 1805\nf 1802 1986 1874 1825\nf 1726 1954 1942 1745\nf 1774 1758 1922 1902 1789\nf 1442 1638 1650 1429\nf 1474 1486 1606 1618 1461\nf 1970 1590 2014 1505\nf 1502 2018 1602 1489\nf 1910 1598 2022 1993\nf 1946 1690 1662 1657\nf 1914 1934 1630 1625\nf 1886 2006 2010 1593\nf 1858 1882 1570 1565\nf 1834 1854 1546 1541\nf 1798 1830 1518 1513\nf 1770 1794 1482 1477\nf 1738 1766 1454 1449\nf 1706 1734 1422 1409\nf 1678 1702 1394 1673\nf 1850 1838 1822 1877\nf 1850 1877 1862\nf 1670 1398 1417\nf 1694 1718 1414 1401\nf 1722 1750 1438 1433\nf 1754 1778 1470 1465\nf 1782 1814 1498 1493\nf 1818 1842 1534 1529\nf 1846 1866 1558 1553\nf 1894 1586 1974 1977\nf 1898 1926 1614 1609\nf 1938 1958 1646 1641\nf 1582 1870 1990 1961\nf 1426 1654 1666 1405\nf 1538 1550 1562 1574 1525\nf 1522 1578 1966 1509\nf 1458 1622 1634 1445\nf 1698 1682 1713\nf 1742 1930 1918 1761\nf 1710 1686 1950 1729\nf 1786 1906 1998 1809\nf 2020 2016 2012 2024\nf 1988 1984 1979 1992\nf 1956 1952 1948 1960\nf 1924 1920 1916 1928\nf 1892 1888 1896\nf 1864 1860 1868\nf 1840 1836 1844\nf 1811 1804 1800 1816\nf 1811 1807 1804\nf 1776 1772 1780\nf 1747 1744 1740 1752\nf 1715 1712 1708 1720\nf 1688 1684 1680 1692\nf 1656 1652 1648 1659\nf 1624 1620 1616 1627\nf 1592 1588 1595\nf 1564 1560 1567\nf 1540 1536 1543\nf 1511 1504 1500 1515\nf 1504 1511 1507\nf 1476 1472 1479\nf 1447 1444 1440 1451\nf 1411 1407 1419\nf 1411 1419 1416\nf 1806 1981 1987 1801\nf 1826 1873 1878 1821\nf 1746 1941 1931 1741\nf 1790 1901 1907 1785\nf 1430 1649 1655 1425\nf 1462 1617 1623 1457\nf 1506 2013 2019 1501\nf 1490 1601 1607 1485\nf 1647 1957 1947 1660\nf 1899 1612 1599 1909\nf 2011 2005 1994 2021\nf 1978 1973 1962 1989\nf 1559 1865 1859 1568\nf 1535 1841 1835 1544\nf 1499 1813 1799 1516\nf 1471 1777 1771 1480\nf 1439 1749 1739 1452\nf 1415 1717 1707 1412\nf 1395 1701 1695 1404\nf 1443 1432 1434 1437\nf 1475 1464 1466 1469\nf 1503 1492 1494 1497\nf 1539 1528 1530 1533\nf 1563 1549 1554 1557\nf 1967 1577 1583 1964\nf 2015 1589 1594 2009\nf 1619 1605 1610 1613\nf 1651 1637 1642 1645\nf 1399 1669 1674 1393\nf 1919 1929 1935 1913\nf 1999 1905 1911 1996\nf 1983 1889 1895 1980\nf 1863 1880 1883 1857\nf 1839 1849 1855 1833\nf 1803 1828 1831 1797\nf 1775 1792 1795 1769\nf 1743 1764 1767 1737\nf 1711 1732 1735 1705\nf 1683 1697 1703 1677\nf 1943 1953 1959 1937\nf 1398 1400 1397\nf 1400 1398 1399\nf 1406 1407 1408 1405\nf 1414 1415 1416 1413\nf 1422 1423 1424 1421\nf 1430 1431 1432 1429\nf 1438 1439 1440 1437\nf 1446 1447 1448 1445\nf 1454 1455 1456 1453\nf 1462 1463 1464 1461\nf 1470 1471 1472 1469\nf 1478 1479 1480 1477\nf 1486 1487 1488 1485\nf 1494 1495 1496 1493\nf 1502 1503 1504 1501\nf 1510 1511 1512 1509\nf 1518 1519 1520 1517\nf 1526 1527 1528 1525\nf 1534 1535 1536 1533\nf 1542 1543 1544 1541\nf 1550 1551 1552 1549\nf 1558 1559 1560 1557\nf 1566 1567 1568 1565\nf 1574 1575 1576 1573\nf 1582 1583 1584 1581\nf 1590 1591 1592 1589\nf 1598 1599 1600 1597\nf 1606 1607 1608 1605\nf 1614 1615 1616 1613\nf 1622 1623 1624 1621\nf 1630 1631 1632 1629\nf 1638 1639 1640 1637\nf 1646 1647 1648 1645\nf 1654 1655 1656 1653\nf 1662 1663 1664 1661\nf 1670 1671 1672 1669\nf 1678 1679 1680 1677\nf 1686 1687 1688 1685\nf 1694 1695 1696 1693\nf 1702 1704 1701\nf 1702 1703 1704\nf 1710 1711 1712 1709\nf 1718 1719 1720 1717\nf 1726 1727 1728 1725\nf 1734 1735 1736 1733\nf 1742 1743 1744 1741\nf 1750 1751 1752 1749\nf 1758 1759 1760 1757\nf 1766 1767 1768 1765\nf 1774 1775 1776 1773\nf 1782 1783 1784 1781\nf 1790 1791 1792 1789\nf 1798 1799 1800 1797\nf 1806 1807 1808 1805\nf 1814 1815 1816 1813\nf 1822 1823 1824 1821\nf 1830 1831 1832 1829\nf 1838 1839 1840 1837\nf 1846 1848 1845\nf 1848 1846 1847\nf 1854 1855 1856 1853\nf 1862 1863 1864 1861\nf 1870 1871 1872 1869\nf 1878 1879 1880 1877\nf 1886 1888 1885\nf 1888 1886 1887\nf 1894 1895 1896 1893\nf 1902 1903 1904 1901\nf 1910 1911 1912 1909\nf 1918 1919 1920 1917\nf 1926 1927 1928 1925\nf 1934 1935 1936 1933\nf 1942 1943 1944 1941\nf 1950 1951 1952 1949\nf 1958 1959 1960 1957\nf 1966 1967 1968 1965\nf 1974 1975 1976 1973\nf 1982 1983 1984 1981\nf 1990 1991 1992 1989\nf 1998 1999 2000 1997\nf 2006 2007 2008 2005\nf 2014 2015 2016 2013\nf 2022 2023 2024 2021\nf 1396 1400 1399 1393\nf 1416 1419 1418 1413\nf 1407 1411 1410 1408\nf 1431 1435 1434 1432\nf 1424 1428 1427 1421\nf 1447 1451 1450 1448\nf 1440 1444 1443 1437\nf 1463 1467 1466 1464\nf 1456 1460 1459 1453\nf 1476 1479 1478 1473\nf 1479 1472 1471 1480\nf 1488 1491 1490 1485\nf 1495 1484 1483 1496\nf 1507 1511 1510 1508\nf 1500 1504 1503 1497\nf 1527 1531 1530 1528\nf 1520 1524 1523 1517\nf 1540 1543 1542 1537\nf 1543 1536 1535 1544\nf 1548 1552 1551 1545\nf 1564 1567 1566 1561\nf 1567 1560 1559 1568\nf 1576 1580 1579 1573\nf 1584 1572 1571 1581\nf 1588 1592 1591 1585\nf 1608 1611 1610 1605\nf 1600 1604 1603 1597\nf 1624 1627 1626 1621\nf 1616 1620 1619 1613\nf 1640 1643 1642 1637\nf 1632 1636 1635 1629\nf 1656 1659 1658 1653\nf 1648 1652 1651 1645\nf 1672 1675 1674 1669\nf 1664 1668 1667 1661\nf 1688 1692 1691 1685\nf 1680 1684 1683 1677\nf 1700 1704 1703 1697\nf 1704 1696 1695 1701\nf 1712 1715 1714 1709\nf 1720 1708 1707 1717\nf 1728 1731 1730 1725\nf 1736 1724 1723 1733\nf 1744 1747 1746 1741\nf 1752 1740 1739 1749\nf 1760 1763 1762 1757\nf 1768 1756 1755 1765\nf 1772 1776 1775 1769\nf 1791 1796 1795 1792\nf 1784 1788 1787 1781\nf 1811 1816 1815 1812\nf 1804 1807 1806 1801\nf 1816 1800 1799 1813\nf 1824 1827 1826 1821\nf 1832 1820 1819 1829\nf 1836 1840 1839 1833\nf 1852 1856 1855 1849\nf 1856 1848 1847 1853\nf 1860 1864 1863 1857\nf 1879 1884 1883 1880\nf 1872 1876 1875 1869\nf 1892 1896 1895 1889\nf 1896 1888 1887 1893\nf 1904 1908 1907 1901\nf 1912 1900 1899 1909\nf 1920 1924 1923 1917\nf 1928 1916 1915 1925\nf 1936 1940 1939 1933\nf 1944 1932 1931 1941\nf 1952 1956 1955 1949\nf 1960 1948 1947 1957\nf 1968 1972 1971 1965\nf 1976 1963 1962 1973\nf 1984 1988 1987 1981\nf 1992 1979 1978 1989\nf 2000 2004 2003 1997\nf 2008 1995 1994 2005\nf 2016 2020 2019 2013\nf 2024 2012 2011 2021\nf 1890 2002 2001 1891\nf 1805 1982 1981 1806\nf 1906 1786 1785 1907\nf 1809 1998 1997 1810\nf 1986 1802 1801 1987\nf 1825 1874 1873 1826\nf 1686 1710 1709 1687\nf 1729 1950 1949 1730\nf 1954 1726 1725 1955\nf 1745 1942 1941 1746\nf 1930 1742 1741 1931\nf 1761 1918 1917 1762\nf 1758 1774 1773 1759\nf 1902 1922 1921 1903\nf 1698 1713 1716 1699\nf 1713 1682 1681 1714\nf 1638 1442 1441 1639\nf 1429 1650 1649 1430\nf 1622 1458 1457 1623\nf 1445 1634 1633 1446\nf 1486 1474 1473 1487\nf 1618 1606 1605 1619\nf 1522 1509 1512 1523\nf 1966 1578 1577 1967\nf 1970 1505 1508 1971\nf 2014 1590 1589 2015\nf 1538 1525 1528 1539\nf 1562 1550 1549 1563\nf 1525 1574 1573 1526\nf 2018 1502 1501 2019\nf 1489 1602 1601 1490\nf 1654 1426 1425 1655\nf 1405 1666 1665 1406\nf 1598 1910 1909 1599\nf 1993 2022 2021 1994\nf 1870 1582 1581 1871\nf 1961 1990 1989 1962\nf 1690 1946 1945 1691\nf 1657 1662 1661 1658\nf 1958 1938 1937 1959\nf 1641 1646 1645 1642\nf 1934 1914 1913 1935\nf 1625 1630 1629 1626\nf 1926 1898 1897 1927\nf 1609 1614 1613 1610\nf 2006 1886 1885 2007\nf 1593 2010 2009 1594\nf 1586 1894 1893 1587\nf 1977 1974 1973 1978\nf 1882 1858 1857 1883\nf 1565 1570 1569 1566\nf 1866 1846 1845 1867\nf 1553 1558 1557 1554\nf 1854 1834 1833 1855\nf 1541 1546 1545 1542\nf 1842 1818 1817 1843\nf 1529 1534 1533 1530\nf 1830 1798 1797 1831\nf 1513 1518 1517 1514\nf 1814 1782 1781 1815\nf 1493 1498 1497 1494\nf 1794 1770 1769 1795\nf 1477 1482 1481 1478\nf 1778 1754 1753 1779\nf 1465 1470 1469 1466\nf 1766 1738 1737 1767\nf 1449 1454 1453 1450\nf 1750 1722 1721 1751\nf 1433 1438 1437 1434\nf 1734 1706 1705 1735\nf 1409 1422 1421 1410\nf 1718 1694 1693 1719\nf 1401 1414 1413 1402\nf 1702 1678 1677 1703\nf 1673 1394 1393 1674\nf 1398 1670 1669 1399\nf 1862 1877 1880 1863\nf 1838 1850 1849 1839\nf 1877 1822 1821 1878\ng keys\ns 3\nf 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4657 4658\nf 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3341 3342\nf 2311 2309 2307 2305 2303 2301 2299 2297 2295 2293 2291 2289 2287 2285 2283 2281 2279 2277 2275 2273 2271 2269 2267 2265 2263 2261 2259 2257 2255 2253 2251 2249 2247 2245 2241 2243\nf 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2025 2026\nf 3627 3625 3623 3621 3619 3617 3615 3613 3611 3609 3607 3605 3603 3601 3599 3597 3595 3593 3591 3589 3587 3585 3583 3581 3579 3577 3575 3573 3571 3569 3567 3565 3563 3561 3557 3559\nf 4943 4941 4939 4937 4935 4933 4931 4929 4927 4925 4923 4921 4919 4917 4915 4913 4911 4909 4907 4905 4903 4901 4899 4897 4895 4893 4891 4889 4887 4885 4883 4881 4879 4877 4873 4875\nf 2095 2096 2059 2058\nf 2093 2094 2057 2056\nf 2091 2092 2055 2054\nf 2089 2090 2053 2052\nf 2087 2088 2051 2050\nf 2085 2086 2049 2048\nf 2083 2084 2047 2046\nf 2081 2082 2045 2044\nf 2079 2080 2043 2042\nf 2077 2078 2041 2040\nf 2075 2076 2039 2038\nf 2073 2074 2037 2036\nf 2071 2072 2035 2034\nf 2069 2070 2033 2032\nf 2067 2068 2031 2030\nf 2065 2066 2029 2028\nf 2063 2064 2027 2026\nf 2061 2062 2025 2060\nf 2062 2063 2026 2025\nf 2064 2065 2028 2027\nf 2066 2067 2030 2029\nf 2068 2069 2032 2031\nf 2070 2071 2034 2033\nf 2072 2073 2036 2035\nf 2074 2075 2038 2037\nf 2076 2077 2040 2039\nf 2078 2079 2042 2041\nf 2080 2081 2044 2043\nf 2082 2083 2046 2045\nf 2084 2085 2048 2047\nf 2086 2087 2050 2049\nf 2088 2089 2052 2051\nf 2090 2091 2054 2053\nf 2092 2093 2056 2055\nf 2094 2095 2058 2057\nf 2096 2061 2060 2059\nf 2132 2097 2094 2093\nf 2130 2131 2092 2091\nf 2128 2129 2090 2089\nf 2126 2127 2088 2087\nf 2124 2125 2086 2085\nf 2122 2123 2084 2083\nf 2120 2121 2082 2081\nf 2118 2119 2080 2079\nf 2116 2117 2078 2077\nf 2114 2115 2076 2075\nf 2112 2113 2074 2073\nf 2110 2111 2072 2071\nf 2108 2109 2070 2069\nf 2106 2107 2068 2067\nf 2104 2105 2066 2065\nf 2102 2103 2064 2063\nf 2100 2101 2062 2061\nf 2098 2099 2096 2095\nf 2097 2098 2095 2094\nf 2099 2100 2061 2096\nf 2101 2102 2063 2062\nf 2103 2104 2065 2064\nf 2105 2106 2067 2066\nf 2107 2108 2069 2068\nf 2109 2110 2071 2070\nf 2111 2112 2073 2072\nf 2113 2114 2075 2074\nf 2115 2116 2077 2076\nf 2117 2118 2079 2078\nf 2119 2120 2081 2080\nf 2121 2122 2083 2082\nf 2123 2124 2085 2084\nf 2125 2126 2087 2086\nf 2127 2128 2089 2088\nf 2129 2130 2091 2090\nf 2131 2132 2093 2092\nf 2167 2168 2129 2128\nf 2165 2166 2127 2126\nf 2163 2164 2125 2124\nf 2161 2162 2123 2122\nf 2159 2160 2121 2120\nf 2157 2158 2119 2118\nf 2155 2156 2117 2116\nf 2153 2154 2115 2114\nf 2151 2152 2113 2112\nf 2149 2150 2111 2110\nf 2147 2148 2109 2108\nf 2145 2146 2107 2106\nf 2143 2144 2105 2104\nf 2141 2142 2103 2102\nf 2139 2140 2101 2100\nf 2137 2138 2099 2098\nf 2135 2136 2097 2132\nf 2133 2134 2131 2130\nf 2134 2135 2132 2131\nf 2136 2137 2098 2097\nf 2138 2139 2100 2099\nf 2140 2141 2102 2101\nf 2142 2143 2104 2103\nf 2144 2145 2106 2105\nf 2146 2147 2108 2107\nf 2148 2149 2110 2109\nf 2150 2151 2112 2111\nf 2152 2153 2114 2113\nf 2154 2155 2116 2115\nf 2156 2157 2118 2117\nf 2158 2159 2120 2119\nf 2160 2161 2122 2121\nf 2162 2163 2124 2123\nf 2164 2165 2126 2125\nf 2166 2167 2128 2127\nf 2168 2133 2130 2129\nf 2204 2169 2166 2165\nf 2202 2203 2164 2163\nf 2200 2201 2162 2161\nf 2198 2199 2160 2159\nf 2196 2197 2158 2157\nf 2194 2195 2156 2155\nf 2192 2193 2154 2153\nf 2190 2191 2152 2151\nf 2188 2189 2150 2149\nf 2186 2187 2148 2147\nf 2184 2185 2146 2145\nf 2182 2183 2144 2143\nf 2180 2181 2142 2141\nf 2178 2179 2140 2139\nf 2176 2177 2138 2137\nf 2174 2175 2136 2135\nf 2172 2173 2134 2133\nf 2170 2171 2168 2167\nf 2169 2170 2167 2166\nf 2171 2172 2133 2168\nf 2173 2174 2135 2134\nf 2175 2176 2137 2136\nf 2177 2178 2139 2138\nf 2179 2180 2141 2140\nf 2181 2182 2143 2142\nf 2183 2184 2145 2144\nf 2185 2186 2147 2146\nf 2187 2188 2149 2148\nf 2189 2190 2151 2150\nf 2191 2192 2153 2152\nf 2193 2194 2155 2154\nf 2195 2196 2157 2156\nf 2197 2198 2159 2158\nf 2199 2200 2161 2160\nf 2201 2202 2163 2162\nf 2203 2204 2165 2164\nf 2383 2316 2315 2384\nf 2379 2381 2382 2380\nf 2375 2377 2378 2376\nf 2371 2373 2374 2372\nf 2367 2369 2370 2368\nf 2363 2365 2366 2364\nf 2359 2361 2362 2360\nf 2355 2357 2358 2356\nf 2351 2353 2354 2352\nf 2347 2349 2350 2348\nf 2343 2345 2346 2344\nf 2339 2341 2342 2340\nf 2335 2337 2338 2336\nf 2331 2333 2334 2332\nf 2327 2329 2330 2328\nf 2323 2325 2326 2324\nf 2319 2321 2322 2320\nf 2313 2317 2318 2314\nf 2382 2384 2201 2200\nf 2378 2380 2199 2198\nf 2374 2376 2197 2196\nf 2370 2372 2195 2194\nf 2366 2368 2193 2192\nf 2362 2364 2191 2190\nf 2358 2360 2189 2188\nf 2354 2356 2187 2186\nf 2350 2352 2185 2184\nf 2346 2348 2183 2182\nf 2342 2344 2181 2180\nf 2338 2340 2179 2178\nf 2334 2336 2177 2176\nf 2330 2332 2175 2174\nf 2326 2328 2173 2172\nf 2322 2324 2171 2170\nf 2318 2320 2169 2204\nf 2315 2314 2203 2202\nf 2314 2318 2204 2203\nf 2320 2322 2170 2169\nf 2324 2326 2172 2171\nf 2328 2330 2174 2173\nf 2332 2334 2176 2175\nf 2336 2338 2178 2177\nf 2340 2342 2180 2179\nf 2344 2346 2182 2181\nf 2348 2350 2184 2183\nf 2352 2354 2186 2185\nf 2356 2358 2188 2187\nf 2360 2362 2190 2189\nf 2364 2366 2192 2191\nf 2368 2370 2194 2193\nf 2372 2374 2196 2195\nf 2376 2378 2198 2197\nf 2380 2382 2200 2199\nf 2384 2315 2202 2201\nf 2316 2314 2315\nf 2314 2316 2313\nf 2317 2319 2320 2318\nf 2321 2323 2324 2322\nf 2325 2328 2326\nf 2328 2325 2327\nf 2329 2331 2332 2330\nf 2333 2335 2336 2334\nf 2337 2340 2338\nf 2340 2337 2339\nf 2341 2343 2344 2342\nf 2345 2347 2348 2346\nf 2349 2352 2350\nf 2352 2349 2351\nf 2353 2355 2356 2354\nf 2357 2359 2360 2358\nf 2361 2364 2362\nf 2364 2361 2363\nf 2365 2367 2368 2366\nf 2369 2371 2372 2370\nf 2373 2376 2374\nf 2376 2373 2375\nf 2377 2379 2380 2378\nf 2381 2383 2384 2382\nf 2240 2205 2379 2377\nf 2238 2239 2375 2373\nf 2236 2237 2371 2369\nf 2234 2235 2367 2365\nf 2232 2233 2363 2361\nf 2230 2231 2359 2357\nf 2228 2229 2355 2353\nf 2226 2227 2351 2349\nf 2224 2225 2347 2345\nf 2222 2223 2343 2341\nf 2220 2221 2339 2337\nf 2218 2219 2335 2333\nf 2216 2217 2331 2329\nf 2214 2215 2327 2325\nf 2212 2213 2323 2321\nf 2210 2211 2319 2317\nf 2208 2209 2313 2316\nf 2206 2207 2383 2381\nf 2205 2206 2381 2379\nf 2207 2208 2316 2383\nf 2209 2210 2317 2313\nf 2211 2212 2321 2319\nf 2213 2214 2325 2323\nf 2215 2216 2329 2327\nf 2217 2218 2333 2331\nf 2219 2220 2337 2335\nf 2221 2222 2341 2339\nf 2223 2224 2345 2343\nf 2225 2226 2349 2347\nf 2227 2228 2353 2351\nf 2229 2230 2357 2355\nf 2231 2232 2361 2359\nf 2233 2234 2365 2363\nf 2235 2236 2369 2367\nf 2237 2238 2373 2371\nf 2239 2240 2377 2375\nf 2244 2242 2237 2236\nf 2310 2312 2235 2234\nf 2306 2308 2233 2232\nf 2302 2304 2231 2230\nf 2298 2300 2229 2228\nf 2294 2296 2227 2226\nf 2290 2292 2225 2224\nf 2286 2288 2223 2222\nf 2282 2284 2221 2220\nf 2278 2280 2219 2218\nf 2274 2276 2217 2216\nf 2270 2272 2215 2214\nf 2266 2268 2213 2212\nf 2262 2264 2211 2210\nf 2258 2260 2209 2208\nf 2254 2256 2207 2206\nf 2250 2252 2205 2240\nf 2246 2248 2239 2238\nf 2248 2250 2240 2239\nf 2252 2254 2206 2205\nf 2256 2258 2208 2207\nf 2260 2262 2210 2209\nf 2264 2266 2212 2211\nf 2268 2270 2214 2213\nf 2272 2274 2216 2215\nf 2276 2278 2218 2217\nf 2280 2282 2220 2219\nf 2284 2286 2222 2221\nf 2288 2290 2224 2223\nf 2292 2294 2226 2225\nf 2296 2298 2228 2227\nf 2300 2302 2230 2229\nf 2304 2306 2232 2231\nf 2308 2310 2234 2233\nf 2312 2244 2236 2235\nf 2242 2246 2238 2237\nf 2311 2243 2244 2312\nf 2307 2309 2310 2308\nf 2303 2305 2306 2304\nf 2299 2301 2302 2300\nf 2295 2297 2298 2296\nf 2291 2293 2294 2292\nf 2287 2289 2290 2288\nf 2283 2285 2286 2284\nf 2279 2281 2282 2280\nf 2275 2277 2278 2276\nf 2271 2273 2274 2272\nf 2267 2269 2270 2268\nf 2263 2265 2266 2264\nf 2259 2261 2262 2260\nf 2255 2257 2258 2256\nf 2251 2253 2254 2252\nf 2247 2249 2250 2248\nf 2241 2245 2246 2242\nf 2243 2241 2242 2244\nf 2245 2247 2248 2246\nf 2249 2251 2252 2250\nf 2253 2255 2256 2254\nf 2257 2259 2260 2258\nf 2261 2263 2264 2262\nf 2265 2267 2268 2266\nf 2269 2271 2272 2270\nf 2273 2275 2276 2274\nf 2277 2279 2280 2278\nf 2281 2283 2284 2282\nf 2285 2287 2288 2286\nf 2289 2291 2292 2290\nf 2293 2295 2296 2294\nf 2297 2299 2300 2298\nf 2301 2303 2304 2302\nf 2305 2307 2308 2306\nf 2309 2311 2312 2310\nf 3412 3377 3376 3375\nf 3410 3411 3374 3373\nf 3408 3409 3372 3371\nf 3406 3407 3370 3369\nf 3404 3405 3368 3367\nf 3402 3403 3366 3365\nf 3400 3401 3364 3363\nf 3398 3399 3362 3361\nf 3396 3397 3360 3359\nf 3394 3395 3358 3357\nf 3392 3393 3356 3355\nf 3390 3391 3354 3353\nf 3388 3389 3352 3351\nf 3386 3387 3350 3349\nf 3384 3385 3348 3347\nf 3382 3383 3346 3345\nf 3380 3381 3344 3343\nf 3378 3379 3342 3341\nf 3377 3378 3341 3376\nf 3379 3380 3343 3342\nf 3381 3382 3345 3344\nf 3383 3384 3347 3346\nf 3385 3386 3349 3348\nf 3387 3388 3351 3350\nf 3389 3390 3353 3352\nf 3391 3392 3355 3354\nf 3393 3394 3357 3356\nf 3395 3396 3359 3358\nf 3397 3398 3361 3360\nf 3399 3400 3363 3362\nf 3401 3402 3365 3364\nf 3403 3404 3367 3366\nf 3405 3406 3369 3368\nf 3407 3408 3371 3370\nf 3409 3410 3373 3372\nf 3411 3412 3375 3374\nf 3447 3448 3409 3408\nf 3445 3446 3407 3406\nf 3443 3444 3405 3404\nf 3441 3442 3403 3402\nf 3439 3440 3401 3400\nf 3437 3438 3399 3398\nf 3435 3436 3397 3396\nf 3433 3434 3395 3394\nf 3431 3432 3393 3392\nf 3429 3430 3391 3390\nf 3427 3428 3389 3388\nf 3425 3426 3387 3386\nf 3423 3424 3385 3384\nf 3421 3422 3383 3382\nf 3419 3420 3381 3380\nf 3417 3418 3379 3378\nf 3415 3416 3377 3412\nf 3413 3414 3411 3410\nf 3414 3415 3412 3411\nf 3416 3417 3378 3377\nf 3418 3419 3380 3379\nf 3420 3421 3382 3381\nf 3422 3423 3384 3383\nf 3424 3425 3386 3385\nf 3426 3427 3388 3387\nf 3428 3429 3390 3389\nf 3430 3431 3392 3391\nf 3432 3433 3394 3393\nf 3434 3435 3396 3395\nf 3436 3437 3398 3397\nf 3438 3439 3400 3399\nf 3440 3441 3402 3401\nf 3442 3443 3404 3403\nf 3444 3445 3406 3405\nf 3446 3447 3408 3407\nf 3448 3413 3410 3409\nf 3484 3449 3446 3445\nf 3482 3483 3444 3443\nf 3480 3481 3442 3441\nf 3478 3479 3440 3439\nf 3476 3477 3438 3437\nf 3474 3475 3436 3435\nf 3472 3473 3434 3433\nf 3470 3471 3432 3431\nf 3468 3469 3430 3429\nf 3466 3467 3428 3427\nf 3464 3465 3426 3425\nf 3462 3463 3424 3423\nf 3460 3461 3422 3421\nf 3458 3459 3420 3419\nf 3456 3457 3418 3417\nf 3454 3455 3416 3415\nf 3452 3453 3414 3413\nf 3450 3451 3448 3447\nf 3449 3450 3447 3446\nf 3451 3452 3413 3448\nf 3453 3454 3415 3414\nf 3455 3456 3417 3416\nf 3457 3458 3419 3418\nf 3459 3460 3421 3420\nf 3461 3462 3423 3422\nf 3463 3464 3425 3424\nf 3465 3466 3427 3426\nf 3467 3468 3429 3428\nf 3469 3470 3431 3430\nf 3471 3472 3433 3432\nf 3473 3474 3435 3434\nf 3475 3476 3437 3436\nf 3477 3478 3439 3438\nf 3479 3480 3441 3440\nf 3481 3482 3443 3442\nf 3483 3484 3445 3444\nf 3519 3520 3481 3480\nf 3517 3518 3479 3478\nf 3515 3516 3477 3476\nf 3513 3514 3475 3474\nf 3511 3512 3473 3472\nf 3509 3510 3471 3470\nf 3507 3508 3469 3468\nf 3505 3506 3467 3466\nf 3503 3504 3465 3464\nf 3501 3502 3463 3462\nf 3499 3500 3461 3460\nf 3497 3498 3459 3458\nf 3495 3496 3457 3456\nf 3493 3494 3455 3454\nf 3491 3492 3453 3452\nf 3489 3490 3451 3450\nf 3487 3488 3449 3484\nf 3485 3486 3483 3482\nf 3486 3487 3484 3483\nf 3488 3489 3450 3449\nf 3490 3491 3452 3451\nf 3492 3493 3454 3453\nf 3494 3495 3456 3455\nf 3496 3497 3458 3457\nf 3498 3499 3460 3459\nf 3500 3501 3462 3461\nf 3502 3503 3464 3463\nf 3504 3505 3466 3465\nf 3506 3507 3468 3467\nf 3508 3509 3470 3469\nf 3510 3511 3472 3471\nf 3512 3513 3474 3473\nf 3514 3515 3476 3475\nf 3516 3517 3478 3477\nf 3518 3519 3480 3479\nf 3520 3485 3482 3481\nf 3697 3699 3700 3698\nf 3693 3695 3696 3694\nf 3689 3692 3690\nf 3692 3689 3691\nf 3685 3687 3688 3686\nf 3681 3683 3684 3682\nf 3677 3680 3678\nf 3680 3677 3679\nf 3673 3675 3676 3674\nf 3669 3671 3672 3670\nf 3665 3668 3666\nf 3668 3665 3667\nf 3661 3663 3664 3662\nf 3657 3659 3660 3658\nf 3653 3656 3654\nf 3656 3653 3655\nf 3649 3651 3652 3650\nf 3645 3647 3648 3646\nf 3641 3644 3642\nf 3644 3641 3643\nf 3637 3639 3640 3638\nf 3633 3635 3636 3634\nf 3632 3630 3631\nf 3630 3632 3629\nf 3700 3631 3518 3517\nf 3696 3698 3516 3515\nf 3692 3694 3514 3513\nf 3688 3690 3512 3511\nf 3684 3686 3510 3509\nf 3680 3682 3508 3507\nf 3676 3678 3506 3505\nf 3672 3674 3504 3503\nf 3668 3670 3502 3501\nf 3664 3666 3500 3499\nf 3660 3662 3498 3497\nf 3656 3658 3496 3495\nf 3652 3654 3494 3493\nf 3648 3650 3492 3491\nf 3644 3646 3490 3489\nf 3640 3642 3488 3487\nf 3636 3638 3486 3485\nf 3630 3634 3520 3519\nf 3631 3630 3519 3518\nf 3634 3636 3485 3520\nf 3638 3640 3487 3486\nf 3642 3644 3489 3488\nf 3646 3648 3491 3490\nf 3650 3652 3493 3492\nf 3654 3656 3495 3494\nf 3658 3660 3497 3496\nf 3662 3664 3499 3498\nf 3666 3668 3501 3500\nf 3670 3672 3503 3502\nf 3674 3676 3505 3504\nf 3678 3680 3507 3506\nf 3682 3684 3509 3508\nf 3686 3688 3511 3510\nf 3690 3692 3513 3512\nf 3694 3696 3515 3514\nf 3698 3700 3517 3516\nf 3629 3633 3634 3630\nf 3635 3637 3638 3636\nf 3639 3641 3642 3640\nf 3643 3645 3646 3644\nf 3647 3649 3650 3648\nf 3651 3653 3654 3652\nf 3655 3657 3658 3656\nf 3659 3661 3662 3660\nf 3663 3665 3666 3664\nf 3667 3669 3670 3668\nf 3671 3673 3674 3672\nf 3675 3677 3678 3676\nf 3679 3681 3682 3680\nf 3683 3685 3686 3684\nf 3687 3689 3690 3688\nf 3691 3693 3694 3692\nf 3695 3697 3698 3696\nf 3699 3632 3631 3700\nf 3555 3556 3693 3691\nf 3553 3554 3689 3687\nf 3551 3552 3685 3683\nf 3549 3550 3681 3679\nf 3547 3548 3677 3675\nf 3545 3546 3673 3671\nf 3543 3544 3669 3667\nf 3541 3542 3665 3663\nf 3539 3540 3661 3659\nf 3537 3538 3657 3655\nf 3535 3536 3653 3651\nf 3533 3534 3649 3647\nf 3531 3532 3645 3643\nf 3529 3530 3641 3639\nf 3527 3528 3637 3635\nf 3525 3526 3633 3629\nf 3523 3524 3632 3699\nf 3521 3522 3697 3695\nf 3522 3523 3699 3697\nf 3524 3525 3629 3632\nf 3526 3527 3635 3633\nf 3528 3529 3639 3637\nf 3530 3531 3643 3641\nf 3532 3533 3647 3645\nf 3534 3535 3651 3649\nf 3536 3537 3655 3653\nf 3538 3539 3659 3657\nf 3540 3541 3663 3661\nf 3542 3543 3667 3665\nf 3544 3545 3671 3669\nf 3546 3547 3675 3673\nf 3548 3549 3679 3677\nf 3550 3551 3683 3681\nf 3552 3553 3687 3685\nf 3554 3555 3691 3689\nf 3556 3521 3695 3693\nf 3558 3562 3554 3553\nf 3628 3560 3552 3551\nf 3624 3626 3550 3549\nf 3620 3622 3548 3547\nf 3616 3618 3546 3545\nf 3612 3614 3544 3543\nf 3608 3610 3542 3541\nf 3604 3606 3540 3539\nf 3600 3602 3538 3537\nf 3596 3598 3536 3535\nf 3592 3594 3534 3533\nf 3588 3590 3532 3531\nf 3584 3586 3530 3529\nf 3580 3582 3528 3527\nf 3576 3578 3526 3525\nf 3572 3574 3524 3523\nf 3568 3570 3522 3521\nf 3564 3566 3556 3555\nf 3562 3564 3555 3554\nf 3566 3568 3521 3556\nf 3570 3572 3523 3522\nf 3574 3576 3525 3524\nf 3578 3580 3527 3526\nf 3582 3584 3529 3528\nf 3586 3588 3531 3530\nf 3590 3592 3533 3532\nf 3594 3596 3535 3534\nf 3598 3600 3537 3536\nf 3602 3604 3539 3538\nf 3606 3608 3541 3540\nf 3610 3612 3543 3542\nf 3614 3616 3545 3544\nf 3618 3620 3547 3546\nf 3622 3624 3549 3548\nf 3626 3628 3551 3550\nf 3560 3558 3553 3552\nf 3625 3627 3628 3626\nf 3621 3623 3624 3622\nf 3617 3619 3620 3618\nf 3613 3615 3616 3614\nf 3609 3611 3612 3610\nf 3605 3607 3608 3606\nf 3601 3603 3604 3602\nf 3597 3599 3600 3598\nf 3593 3595 3596 3594\nf 3589 3591 3592 3590\nf 3585 3587 3588 3586\nf 3581 3583 3584 3582\nf 3577 3579 3580 3578\nf 3573 3575 3576 3574\nf 3569 3571 3572 3570\nf 3565 3567 3568 3566\nf 3561 3563 3564 3562\nf 3559 3557 3558 3560\nf 3557 3561 3562 3558\nf 3563 3565 3566 3564\nf 3567 3569 3570 3568\nf 3571 3573 3574 3572\nf 3575 3577 3578 3576\nf 3579 3581 3582 3580\nf 3583 3585 3586 3584\nf 3587 3589 3590 3588\nf 3591 3593 3594 3592\nf 3595 3597 3598 3596\nf 3599 3601 3602 3600\nf 3603 3605 3606 3604\nf 3607 3609 3610 3608\nf 3611 3613 3614 3612\nf 3615 3617 3618 3616\nf 3619 3621 3622 3620\nf 3623 3625 3626 3624\nf 3627 3559 3560 3628\nf 4728 4693 4692 4691\nf 4726 4727 4690 4689\nf 4724 4725 4688 4687\nf 4722 4723 4686 4685\nf 4720 4721 4684 4683\nf 4718 4719 4682 4681\nf 4716 4717 4680 4679\nf 4714 4715 4678 4677\nf 4712 4713 4676 4675\nf 4710 4711 4674 4673\nf 4708 4709 4672 4671\nf 4706 4707 4670 4669\nf 4704 4705 4668 4667\nf 4702 4703 4666 4665\nf 4700 4701 4664 4663\nf 4698 4699 4662 4661\nf 4696 4697 4660 4659\nf 4694 4695 4658 4657\nf 4693 4694 4657 4692\nf 4695 4696 4659 4658\nf 4697 4698 4661 4660\nf 4699 4700 4663 4662\nf 4701 4702 4665 4664\nf 4703 4704 4667 4666\nf 4705 4706 4669 4668\nf 4707 4708 4671 4670\nf 4709 4710 4673 4672\nf 4711 4712 4675 4674\nf 4713 4714 4677 4676\nf 4715 4716 4679 4678\nf 4717 4718 4681 4680\nf 4719 4720 4683 4682\nf 4721 4722 4685 4684\nf 4723 4724 4687 4686\nf 4725 4726 4689 4688\nf 4727 4728 4691 4690\nf 4763 4764 4725 4724\nf 4761 4762 4723 4722\nf 4759 4760 4721 4720\nf 4757 4758 4719 4718\nf 4755 4756 4717 4716\nf 4753 4754 4715 4714\nf 4751 4752 4713 4712\nf 4749 4750 4711 4710\nf 4747 4748 4709 4708\nf 4745 4746 4707 4706\nf 4743 4744 4705 4704\nf 4741 4742 4703 4702\nf 4739 4740 4701 4700\nf 4737 4738 4699 4698\nf 4735 4736 4697 4696\nf 4733 4734 4695 4694\nf 4731 4732 4693 4728\nf 4729 4730 4727 4726\nf 4730 4731 4728 4727\nf 4732 4733 4694 4693\nf 4734 4735 4696 4695\nf 4736 4737 4698 4697\nf 4738 4739 4700 4699\nf 4740 4741 4702 4701\nf 4742 4743 4704 4703\nf 4744 4745 4706 4705\nf 4746 4747 4708 4707\nf 4748 4749 4710 4709\nf 4750 4751 4712 4711\nf 4752 4753 4714 4713\nf 4754 4755 4716 4715\nf 4756 4757 4718 4717\nf 4758 4759 4720 4719\nf 4760 4761 4722 4721\nf 4762 4763 4724 4723\nf 4764 4729 4726 4725\nf 4800 4765 4762 4761\nf 4798 4799 4760 4759\nf 4796 4797 4758 4757\nf 4794 4795 4756 4755\nf 4792 4793 4754 4753\nf 4790 4791 4752 4751\nf 4788 4789 4750 4749\nf 4786 4787 4748 4747\nf 4784 4785 4746 4745\nf 4782 4783 4744 4743\nf 4780 4781 4742 4741\nf 4778 4779 4740 4739\nf 4776 4777 4738 4737\nf 4774 4775 4736 4735\nf 4772 4773 4734 4733\nf 4770 4771 4732 4731\nf 4768 4769 4730 4729\nf 4766 4767 4764 4763\nf 4765 4766 4763 4762\nf 4767 4768 4729 4764\nf 4769 4770 4731 4730\nf 4771 4772 4733 4732\nf 4773 4774 4735 4734\nf 4775 4776 4737 4736\nf 4777 4778 4739 4738\nf 4779 4780 4741 4740\nf 4781 4782 4743 4742\nf 4783 4784 4745 4744\nf 4785 4786 4747 4746\nf 4787 4788 4749 4748\nf 4789 4790 4751 4750\nf 4791 4792 4753 4752\nf 4793 4794 4755 4754\nf 4795 4796 4757 4756\nf 4797 4798 4759 4758\nf 4799 4800 4761 4760\nf 4835 4836 4797 4796\nf 4833 4834 4795 4794\nf 4831 4832 4793 4792\nf 4829 4830 4791 4790\nf 4827 4828 4789 4788\nf 4825 4826 4787 4786\nf 4823 4824 4785 4784\nf 4821 4822 4783 4782\nf 4819 4820 4781 4780\nf 4817 4818 4779 4778\nf 4815 4816 4777 4776\nf 4813 4814 4775 4774\nf 4811 4812 4773 4772\nf 4809 4810 4771 4770\nf 4807 4808 4769 4768\nf 4805 4806 4767 4766\nf 4803 4804 4765 4800\nf 4801 4802 4799 4798\nf 4802 4803 4800 4799\nf 4804 4805 4766 4765\nf 4806 4807 4768 4767\nf 4808 4809 4770 4769\nf 4810 4811 4772 4771\nf 4812 4813 4774 4773\nf 4814 4815 4776 4775\nf 4816 4817 4778 4777\nf 4818 4819 4780 4779\nf 4820 4821 4782 4781\nf 4822 4823 4784 4783\nf 4824 4825 4786 4785\nf 4826 4827 4788 4787\nf 4828 4829 4790 4789\nf 4830 4831 4792 4791\nf 4832 4833 4794 4793\nf 4834 4835 4796 4795\nf 4836 4801 4798 4797\nf 5013 5015 5016 5014\nf 5009 5011 5012 5010\nf 5005 5008 5006\nf 5008 5005 5007\nf 5001 5003 5004 5002\nf 4997 4999 5000 4998\nf 4993 4996 4994\nf 4996 4993 4995\nf 4989 4991 4992 4990\nf 4985 4987 4988 4986\nf 4981 4984 4982\nf 4984 4981 4983\nf 4977 4979 4980 4978\nf 4973 4975 4976 4974\nf 4969 4972 4970\nf 4972 4969 4971\nf 4965 4967 4968 4966\nf 4961 4963 4964 4962\nf 4957 4960 4958\nf 4960 4957 4959\nf 4953 4955 4956 4954\nf 4949 4951 4952 4950\nf 4948 4946 4947\nf 4946 4948 4945\nf 5016 4947 4834 4833\nf 5012 5014 4832 4831\nf 5008 5010 4830 4829\nf 5004 5006 4828 4827\nf 5000 5002 4826 4825\nf 4996 4998 4824 4823\nf 4992 4994 4822 4821\nf 4988 4990 4820 4819\nf 4984 4986 4818 4817\nf 4980 4982 4816 4815\nf 4976 4978 4814 4813\nf 4972 4974 4812 4811\nf 4968 4970 4810 4809\nf 4964 4966 4808 4807\nf 4960 4962 4806 4805\nf 4956 4958 4804 4803\nf 4952 4954 4802 4801\nf 4946 4950 4836 4835\nf 4947 4946 4835 4834\nf 4950 4952 4801 4836\nf 4954 4956 4803 4802\nf 4958 4960 4805 4804\nf 4962 4964 4807 4806\nf 4966 4968 4809 4808\nf 4970 4972 4811 4810\nf 4974 4976 4813 4812\nf 4978 4980 4815 4814\nf 4982 4984 4817 4816\nf 4986 4988 4819 4818\nf 4990 4992 4821 4820\nf 4994 4996 4823 4822\nf 4998 5000 4825 4824\nf 5002 5004 4827 4826\nf 5006 5008 4829 4828\nf 5010 5012 4831 4830\nf 5014 5016 4833 4832\nf 4945 4949 4950 4946\nf 4951 4953 4954 4952\nf 4955 4957 4958 4956\nf 4959 4961 4962 4960\nf 4963 4965 4966 4964\nf 4967 4969 4970 4968\nf 4971 4973 4974 4972\nf 4975 4977 4978 4976\nf 4979 4981 4982 4980\nf 4983 4985 4986 4984\nf 4987 4989 4990 4988\nf 4991 4993 4994 4992\nf 4995 4997 4998 4996\nf 4999 5001 5002 5000\nf 5003 5005 5006 5004\nf 5007 5009 5010 5008\nf 5011 5013 5014 5012\nf 5015 4948 4947 5016\nf 4871 4872 5009 5007\nf 4869 4870 5005 5003\nf 4867 4868 5001 4999\nf 4865 4866 4997 4995\nf 4863 4864 4993 4991\nf 4861 4862 4989 4987\nf 4859 4860 4985 4983\nf 4857 4858 4981 4979\nf 4855 4856 4977 4975\nf 4853 4854 4973 4971\nf 4851 4852 4969 4967\nf 4849 4850 4965 4963\nf 4847 4848 4961 4959\nf 4845 4846 4957 4955\nf 4843 4844 4953 4951\nf 4841 4842 4949 4945\nf 4839 4840 4948 5015\nf 4837 4838 5013 5011\nf 4838 4839 5015 5013\nf 4840 4841 4945 4948\nf 4842 4843 4951 4949\nf 4844 4845 4955 4953\nf 4846 4847 4959 4957\nf 4848 4849 4963 4961\nf 4850 4851 4967 4965\nf 4852 4853 4971 4969\nf 4854 4855 4975 4973\nf 4856 4857 4979 4977\nf 4858 4859 4983 4981\nf 4860 4861 4987 4985\nf 4862 4863 4991 4989\nf 4864 4865 4995 4993\nf 4866 4867 4999 4997\nf 4868 4869 5003 5001\nf 4870 4871 5007 5005\nf 4872 4837 5011 5009\nf 4874 4878 4870 4869\nf 4944 4876 4868 4867\nf 4940 4942 4866 4865\nf 4936 4938 4864 4863\nf 4932 4934 4862 4861\nf 4928 4930 4860 4859\nf 4924 4926 4858 4857\nf 4920 4922 4856 4855\nf 4916 4918 4854 4853\nf 4912 4914 4852 4851\nf 4908 4910 4850 4849\nf 4904 4906 4848 4847\nf 4900 4902 4846 4845\nf 4896 4898 4844 4843\nf 4892 4894 4842 4841\nf 4888 4890 4840 4839\nf 4884 4886 4838 4837\nf 4880 4882 4872 4871\nf 4878 4880 4871 4870\nf 4882 4884 4837 4872\nf 4886 4888 4839 4838\nf 4890 4892 4841 4840\nf 4894 4896 4843 4842\nf 4898 4900 4845 4844\nf 4902 4904 4847 4846\nf 4906 4908 4849 4848\nf 4910 4912 4851 4850\nf 4914 4916 4853 4852\nf 4918 4920 4855 4854\nf 4922 4924 4857 4856\nf 4926 4928 4859 4858\nf 4930 4932 4861 4860\nf 4934 4936 4863 4862\nf 4938 4940 4865 4864\nf 4942 4944 4867 4866\nf 4876 4874 4869 4868\nf 4941 4943 4944 4942\nf 4937 4939 4940 4938\nf 4933 4935 4936 4934\nf 4929 4931 4932 4930\nf 4925 4927 4928 4926\nf 4921 4923 4924 4922\nf 4917 4919 4920 4918\nf 4913 4915 4916 4914\nf 4909 4911 4912 4910\nf 4905 4907 4908 4906\nf 4901 4903 4904 4902\nf 4897 4899 4900 4898\nf 4893 4895 4896 4894\nf 4889 4891 4892 4890\nf 4885 4887 4888 4886\nf 4881 4883 4884 4882\nf 4877 4879 4880 4878\nf 4875 4873 4874 4876\nf 4873 4877 4878 4874\nf 4879 4881 4882 4880\nf 4883 4885 4886 4884\nf 4887 4889 4890 4888\nf 4891 4893 4894 4892\nf 4895 4897 4898 4896\nf 4899 4901 4902 4900\nf 4903 4905 4906 4904\nf 4907 4909 4910 4908\nf 4911 4913 4914 4912\nf 4915 4917 4918 4916\nf 4919 4921 4922 4920\nf 4923 4925 4926 4924\nf 4927 4929 4930 4928\nf 4931 4933 4934 4932\nf 4935 4937 4938 4936\nf 4939 4941 4942 4940\nf 4943 4875 4876 4944\ng vtop\ns 4\nf 2800 2797 2798 2799\nf 2792 2789 2790 2791\nf 2784 2781 2782 2783\nf 2768 2765 2766 2767\nf 2769 2772 2431 2432\nf 2430 2429 2783 2782\nf 2428 2427 2425 2426\nf 2785 2788 2423 2424\nf 2422 2421 2791 2790\nf 2420 2419 2417 2418\nf 2793 2796 2415 2416\nf 2414 2413 2799 2798\nf 2412 2411 2409 2410\nf 2801 2804 2407 2408\nf 2406 2405 2779 2778\nf 2761 2764 2391 2392\nf 2390 2389 2767 2766\nf 2388 2387 2385 2386\nf 2765 2768 2387 2388\nf 2392 2391 2389 2390\nf 2408 2407 2405 2406\nf 2410 2409 2803 2802\nf 2797 2800 2411 2412\nf 2416 2415 2413 2414\nf 2418 2417 2795 2794\nf 2789 2792 2419 2420\nf 2424 2423 2421 2422\nf 2426 2425 2787 2786\nf 2781 2784 2427 2428\nf 2432 2431 2429 2430\nf 2386 2385 2771 2770\nf 2764 2761 2762 2763\nf 2772 2769 2770 2771\nf 2788 2785 2786 2787\nf 2796 2793 2794 2795\nf 2804 2801 2802 2803\nf 2760 2757 2758 2759\nf 2757 2760 2395 2396\nf 2394 2393 2763 2762\nf 2396 2395 2393 2394\nf 2776 2773 2774 2775\nf 2404 2403 2401 2402\nf 2773 2776 2399 2400\nf 2398 2397 2759 2758\nf 2400 2399 2397 2398\nf 2402 2401 2775 2774\nf 2777 2780 2403 2404\nf 2780 2777 2778 2779\nf 2755 2756 2717 2716\nf 2753 2754 2715 2714\nf 2751 2752 2713 2712\nf 2749 2750 2711 2710\nf 2747 2748 2709 2708\nf 2745 2746 2707 2706\nf 2743 2744 2705 2704\nf 2741 2742 2703 2702\nf 2739 2740 2701 2700\nf 2737 2738 2699 2698\nf 2735 2736 2697 2696\nf 2733 2734 2695 2694\nf 2731 2732 2693 2692\nf 2729 2730 2691 2690\nf 2727 2728 2689 2688\nf 2725 2726 2687 2686\nf 2723 2724 2685 2720\nf 2721 2722 2719 2718\nf 2754 2753 2752 2751 2750 2749 2748 2747 2746 2745 2744 2743 2742 2741 2740 2739 2738 2737 2736 2735 2734 2733 2732 2731 2730 2729 2728 2727 2726 2725 2724 2723 2722 2721 2756 2755\nf 2722 2723 2720 2719\nf 2724 2725 2686 2685\nf 2726 2727 2688 2687\nf 2728 2729 2690 2689\nf 2730 2731 2692 2691\nf 2732 2733 2694 2693\nf 2734 2735 2696 2695\nf 2736 2737 2698 2697\nf 2738 2739 2700 2699\nf 2740 2741 2702 2701\nf 2742 2743 2704 2703\nf 2744 2745 2706 2705\nf 2746 2747 2708 2707\nf 2748 2749 2710 2709\nf 2750 2751 2712 2711\nf 2752 2753 2714 2713\nf 2754 2755 2716 2715\nf 2756 2721 2718 2717\nf 2424 2790 2418 2416 2798 2410 2408 2778 2402 2392 2766 2765 2386\nf 2402 2400 2758 2394 2392\nf 2386 2432 2782 2426 2424\nf 2394 2758 2396\nf 2758 2757 2396\nf 2402 2778 2404\nf 2778 2777 2404\nf 2410 2798 2412\nf 2798 2797 2412\nf 2418 2790 2420\nf 2790 2789 2420\nf 2426 2782 2428\nf 2782 2781 2428\nf 2386 2765 2388\nf 2766 2392 2390\nf 2394 2762 2761 2392\nf 2758 2400 2398\nf 2402 2774 2773 2400\nf 2778 2408 2406\nf 2410 2802 2801 2408\nf 2798 2416 2414\nf 2418 2794 2793 2416\nf 2790 2424 2422\nf 2426 2786 2785 2424\nf 2782 2432 2430\nf 2386 2770 2769 2432\nf 3740 4106 3734 3732 4114 3726 3724 4094 3718 3708 4082 4081 3702\nf 3718 3716 4074 3710 3708\nf 3702 3748 4098 3742 3740\nf 3710 4074 3712\nf 4074 4073 3712\nf 3718 4094 3720\nf 4094 4093 3720\nf 3726 4114 3728\nf 4114 4113 3728\nf 3734 4106 3736\nf 4106 4105 3736\nf 3742 4098 3744\nf 4098 4097 3744\nf 3702 4081 3704\nf 4082 3708 3706\nf 3710 4078 4077 3708\nf 4074 3716 3714\nf 3718 4090 4089 3716\nf 4094 3724 3722\nf 3726 4118 4117 3724\nf 4114 3732 3730\nf 3734 4110 4109 3732\nf 4106 3740 3738\nf 3742 4102 4101 3740\nf 4098 3748 3746\nf 3702 4086 4085 3748\nf 5056 5422 5050 5048 5430 5042 5040 5410 5034 5024 5398 5397 5018\nf 5034 5032 5390 5026 5024\nf 5018 5064 5414 5058 5056\nf 5026 5390 5028\nf 5390 5389 5028\nf 5034 5410 5036\nf 5410 5409 5036\nf 5042 5430 5044\nf 5430 5429 5044\nf 5050 5422 5052\nf 5422 5421 5052\nf 5058 5414 5060\nf 5414 5413 5060\nf 5018 5397 5020\nf 5398 5024 5022\nf 5026 5394 5393 5024\nf 5390 5032 5030\nf 5034 5406 5405 5032\nf 5410 5040 5038\nf 5042 5434 5433 5040\nf 5430 5048 5046\nf 5050 5426 5425 5048\nf 5422 5056 5054\nf 5058 5418 5417 5056\nf 5414 5064 5062\nf 5018 5402 5401 5064\nf 2772 2771 2435\nf 2764 2763 2465\nf 2776 2775 2459\nf 2804 2803 2453\nf 2796 2795 2447\nf 2788 2787 2441\nf 2468 2433 2387 2768\nf 2466 2467 2389 2391\nf 2464 2465 2763 2393\nf 2462 2463 2395 2760\nf 2460 2461 2397 2399\nf 2458 2459 2775 2401\nf 2456 2457 2403 2780\nf 2454 2455 2405 2407\nf 2452 2453 2803 2409\nf 2450 2451 2411 2800\nf 2448 2449 2413 2415\nf 2446 2447 2795 2417\nf 2444 2445 2419 2792\nf 2442 2443 2421 2423\nf 2440 2441 2787 2425\nf 2438 2439 2427 2784\nf 2436 2437 2429 2431\nf 2434 2435 2771 2385\nf 2433 2434 2385 2387\nf 2435 2436 2431 2772\nf 2437 2438 2783 2429\nf 2439 2440 2425 2427\nf 2441 2442 2423 2788\nf 2443 2444 2791 2421\nf 2445 2446 2417 2419\nf 2447 2448 2415 2796\nf 2449 2450 2799 2413\nf 2451 2452 2409 2411\nf 2453 2454 2407 2804\nf 2455 2456 2779 2405\nf 2457 2458 2401 2403\nf 2459 2460 2399 2776\nf 2461 2462 2759 2397\nf 2463 2464 2393 2395\nf 2465 2466 2391 2764\nf 2467 2468 2767 2389\nf 2792 2791 2444\nf 2800 2799 2450\nf 2780 2779 2456\nf 2760 2759 2462\nf 2768 2767 2468\nf 2784 2783 2438\nf 2503 2504 2465 2464\nf 2501 2502 2463 2462\nf 2499 2500 2461 2460\nf 2497 2498 2459 2458\nf 2495 2496 2457 2456\nf 2493 2494 2455 2454\nf 2491 2492 2453 2452\nf 2489 2490 2451 2450\nf 2487 2488 2449 2448\nf 2485 2486 2447 2446\nf 2483 2484 2445 2444\nf 2481 2482 2443 2442\nf 2479 2480 2441 2440\nf 2477 2478 2439 2438\nf 2475 2476 2437 2436\nf 2473 2474 2435 2434\nf 2471 2472 2433 2468\nf 2469 2470 2467 2466\nf 2470 2471 2468 2467\nf 2472 2473 2434 2433\nf 2474 2475 2436 2435\nf 2476 2477 2438 2437\nf 2478 2479 2440 2439\nf 2480 2481 2442 2441\nf 2482 2483 2444 2443\nf 2484 2485 2446 2445\nf 2486 2487 2448 2447\nf 2488 2489 2450 2449\nf 2490 2491 2452 2451\nf 2492 2493 2454 2453\nf 2494 2495 2456 2455\nf 2496 2497 2458 2457\nf 2498 2499 2460 2459\nf 2500 2501 2462 2461\nf 2502 2503 2464 2463\nf 2504 2469 2466 2465\nf 2540 2505 2502 2501\nf 2538 2539 2500 2499\nf 2536 2537 2498 2497\nf 2534 2535 2496 2495\nf 2532 2533 2494 2493\nf 2530 2531 2492 2491\nf 2528 2529 2490 2489\nf 2526 2527 2488 2487\nf 2524 2525 2486 2485\nf 2522 2523 2484 2483\nf 2520 2521 2482 2481\nf 2518 2519 2480 2479\nf 2516 2517 2478 2477\nf 2514 2515 2476 2475\nf 2512 2513 2474 2473\nf 2510 2511 2472 2471\nf 2508 2509 2470 2469\nf 2506 2507 2504 2503\nf 2505 2506 2503 2502\nf 2507 2508 2469 2504\nf 2509 2510 2471 2470\nf 2511 2512 2473 2472\nf 2513 2514 2475 2474\nf 2515 2516 2477 2476\nf 2517 2518 2479 2478\nf 2519 2520 2481 2480\nf 2521 2522 2483 2482\nf 2523 2524 2485 2484\nf 2525 2526 2487 2486\nf 2527 2528 2489 2488\nf 2529 2530 2491 2490\nf 2531 2532 2493 2492\nf 2533 2534 2495 2494\nf 2535 2536 2497 2496\nf 2537 2538 2499 2498\nf 2539 2540 2501 2500\nf 2575 2576 2537 2536\nf 2573 2574 2535 2534\nf 2571 2572 2533 2532\nf 2569 2570 2531 2530\nf 2567 2568 2529 2528\nf 2565 2566 2527 2526\nf 2563 2564 2525 2524\nf 2561 2562 2523 2522\nf 2559 2560 2521 2520\nf 2557 2558 2519 2518\nf 2555 2556 2517 2516\nf 2553 2554 2515 2514\nf 2551 2552 2513 2512\nf 2549 2550 2511 2510\nf 2547 2548 2509 2508\nf 2545 2546 2507 2506\nf 2543 2544 2505 2540\nf 2541 2542 2539 2538\nf 2542 2543 2540 2539\nf 2544 2545 2506 2505\nf 2546 2547 2508 2507\nf 2548 2549 2510 2509\nf 2550 2551 2512 2511\nf 2552 2553 2514 2513\nf 2554 2555 2516 2515\nf 2556 2557 2518 2517\nf 2558 2559 2520 2519\nf 2560 2561 2522 2521\nf 2562 2563 2524 2523\nf 2564 2565 2526 2525\nf 2566 2567 2528 2527\nf 2568 2569 2530 2529\nf 2570 2571 2532 2531\nf 2572 2573 2534 2533\nf 2574 2575 2536 2535\nf 2576 2541 2538 2537\nf 2612 2577 2574 2573\nf 2610 2611 2572 2571\nf 2608 2609 2570 2569\nf 2606 2607 2568 2567\nf 2604 2605 2566 2565\nf 2602 2603 2564 2563\nf 2600 2601 2562 2561\nf 2598 2599 2560 2559\nf 2596 2597 2558 2557\nf 2594 2595 2556 2555\nf 2592 2593 2554 2553\nf 2590 2591 2552 2551\nf 2588 2589 2550 2549\nf 2586 2587 2548 2547\nf 2584 2585 2546 2545\nf 2582 2583 2544 2543\nf 2580 2581 2542 2541\nf 2578 2579 2576 2575\nf 2577 2578 2575 2574\nf 2579 2580 2541 2576\nf 2581 2582 2543 2542\nf 2583 2584 2545 2544\nf 2585 2586 2547 2546\nf 2587 2588 2549 2548\nf 2589 2590 2551 2550\nf 2591 2592 2553 2552\nf 2593 2594 2555 2554\nf 2595 2596 2557 2556\nf 2597 2598 2559 2558\nf 2599 2600 2561 2560\nf 2601 2602 2563 2562\nf 2603 2604 2565 2564\nf 2605 2606 2567 2566\nf 2607 2608 2569 2568\nf 2609 2610 2571 2570\nf 2611 2612 2573 2572\nf 2647 2648 2609 2608\nf 2645 2646 2607 2606\nf 2643 2644 2605 2604\nf 2641 2642 2603 2602\nf 2639 2640 2601 2600\nf 2637 2638 2599 2598\nf 2635 2636 2597 2596\nf 2633 2634 2595 2594\nf 2631 2632 2593 2592\nf 2629 2630 2591 2590\nf 2627 2628 2589 2588\nf 2625 2626 2587 2586\nf 2623 2624 2585 2584\nf 2621 2622 2583 2582\nf 2619 2620 2581 2580\nf 2617 2618 2579 2578\nf 2615 2616 2577 2612\nf 2613 2614 2611 2610\nf 2614 2615 2612 2611\nf 2616 2617 2578 2577\nf 2618 2619 2580 2579\nf 2620 2621 2582 2581\nf 2622 2623 2584 2583\nf 2624 2625 2586 2585\nf 2626 2627 2588 2587\nf 2628 2629 2590 2589\nf 2630 2631 2592 2591\nf 2632 2633 2594 2593\nf 2634 2635 2596 2595\nf 2636 2637 2598 2597\nf 2638 2639 2600 2599\nf 2640 2641 2602 2601\nf 2642 2643 2604 2603\nf 2644 2645 2606 2605\nf 2646 2647 2608 2607\nf 2648 2613 2610 2609\nf 2684 2649 2646 2645\nf 2682 2683 2644 2643\nf 2680 2681 2642 2641\nf 2678 2679 2640 2639\nf 2676 2677 2638 2637\nf 2674 2675 2636 2635\nf 2672 2673 2634 2633\nf 2670 2671 2632 2631\nf 2668 2669 2630 2629\nf 2666 2667 2628 2627\nf 2664 2665 2626 2625\nf 2662 2663 2624 2623\nf 2660 2661 2622 2621\nf 2658 2659 2620 2619\nf 2656 2657 2618 2617\nf 2654 2655 2616 2615\nf 2652 2653 2614 2613\nf 2650 2651 2648 2647\nf 2649 2650 2647 2646\nf 2651 2652 2613 2648\nf 2653 2654 2615 2614\nf 2655 2656 2617 2616\nf 2657 2658 2619 2618\nf 2659 2660 2621 2620\nf 2661 2662 2623 2622\nf 2663 2664 2625 2624\nf 2665 2666 2627 2626\nf 2667 2668 2629 2628\nf 2669 2670 2631 2630\nf 2671 2672 2633 2632\nf 2673 2674 2635 2634\nf 2675 2676 2637 2636\nf 2677 2678 2639 2638\nf 2679 2680 2641 2640\nf 2681 2682 2643 2642\nf 2683 2684 2645 2644\nf 2719 2720 2681 2680\nf 2717 2718 2679 2678\nf 2715 2716 2677 2676\nf 2713 2714 2675 2674\nf 2711 2712 2673 2672\nf 2709 2710 2671 2670\nf 2707 2708 2669 2668\nf 2705 2706 2667 2666\nf 2703 2704 2665 2664\nf 2701 2702 2663 2662\nf 2699 2700 2661 2660\nf 2697 2698 2659 2658\nf 2695 2696 2657 2656\nf 2693 2694 2655 2654\nf 2691 2692 2653 2652\nf 2689 2690 2651 2650\nf 2687 2688 2649 2684\nf 2685 2686 2683 2682\nf 2686 2687 2684 2683\nf 2688 2689 2650 2649\nf 2690 2691 2652 2651\nf 2692 2693 2654 2653\nf 2694 2695 2656 2655\nf 2696 2697 2658 2657\nf 2698 2699 2660 2659\nf 2700 2701 2662 2661\nf 2702 2703 2664 2663\nf 2704 2705 2666 2665\nf 2706 2707 2668 2667\nf 2708 2709 2670 2669\nf 2710 2711 2672 2671\nf 2712 2713 2674 2673\nf 2714 2715 2676 2675\nf 2716 2717 2678 2677\nf 2718 2719 2680 2679\nf 2720 2685 2682 2681\nf 4116 4113 4114 4115\nf 4108 4105 4106 4107\nf 4100 4097 4098 4099\nf 4084 4081 4082 4083\nf 3702 3701 4087 4086\nf 3748 3747 3745 3746\nf 4097 4100 3743 3744\nf 3742 3741 4103 4102\nf 3740 3739 3737 3738\nf 4105 4108 3735 3736\nf 3734 3733 4111 4110\nf 3732 3731 3729 3730\nf 4113 4116 3727 3728\nf 3726 3725 4119 4118\nf 3724 3723 3721 3722\nf 3708 3707 3705 3706\nf 4081 4084 3703 3704\nf 3704 3703 3701 3702\nf 3706 3705 4083 4082\nf 4077 4080 3707 3708\nf 3722 3721 4095 4094\nf 4117 4120 3723 3724\nf 3728 3727 3725 3726\nf 3730 3729 4115 4114\nf 4109 4112 3731 3732\nf 3736 3735 3733 3734\nf 3738 3737 4107 4106\nf 4101 4104 3739 3740\nf 3744 3743 3741 3742\nf 3746 3745 4099 4098\nf 4085 4088 3747 3748\nf 4080 4077 4078 4079\nf 4088 4085 4086 4087\nf 4104 4101 4102 4103\nf 4112 4109 4110 4111\nf 4120 4117 4118 4119\nf 4076 4073 4074 4075\nf 3712 3711 3709 3710\nf 3710 3709 4079 4078\nf 4073 4076 3711 3712\nf 4092 4089 4090 4091\nf 4093 4096 3719 3720\nf 3718 3717 4091 4090\nf 3716 3715 3713 3714\nf 3714 3713 4075 4074\nf 4089 4092 3715 3716\nf 3720 3719 3717 3718\nf 4096 4093 4094 4095\nf 4071 4072 4033 4032\nf 4069 4070 4031 4030\nf 4067 4068 4029 4028\nf 4065 4066 4027 4026\nf 4063 4064 4025 4024\nf 4061 4062 4023 4022\nf 4059 4060 4021 4020\nf 4057 4058 4019 4018\nf 4055 4056 4017 4016\nf 4053 4054 4015 4014\nf 4051 4052 4013 4012\nf 4049 4050 4011 4010\nf 4047 4048 4009 4008\nf 4045 4046 4007 4006\nf 4043 4044 4005 4004\nf 4041 4042 4003 4002\nf 4039 4040 4001 4036\nf 4037 4038 4035 4034\nf 4070 4069 4068 4067 4066 4065 4064 4063 4062 4061 4060 4059 4058 4057 4056 4055 4054 4053 4052 4051 4050 4049 4048 4047 4046 4045 4044 4043 4042 4041 4040 4039 4038 4037 4072 4071\nf 4038 4039 4036 4035\nf 4040 4041 4002 4001\nf 4042 4043 4004 4003\nf 4044 4045 4006 4005\nf 4046 4047 4008 4007\nf 4048 4049 4010 4009\nf 4050 4051 4012 4011\nf 4052 4053 4014 4013\nf 4054 4055 4016 4015\nf 4056 4057 4018 4017\nf 4058 4059 4020 4019\nf 4060 4061 4022 4021\nf 4062 4063 4024 4023\nf 4064 4065 4026 4025\nf 4066 4067 4028 4027\nf 4068 4069 4030 4029\nf 4070 4071 4032 4031\nf 4072 4037 4034 4033\nf 4088 4087 3751\nf 4080 4079 3781\nf 4092 4091 3775\nf 4120 4119 3769\nf 4112 4111 3763\nf 4104 4103 3757\nf 3784 3749 3703 4084\nf 3782 3783 3705 3707\nf 3780 3781 4079 3709\nf 3778 3779 3711 4076\nf 3776 3777 3713 3715\nf 3774 3775 4091 3717\nf 3772 3773 3719 4096\nf 3770 3771 3721 3723\nf 3768 3769 4119 3725\nf 3766 3767 3727 4116\nf 3764 3765 3729 3731\nf 3762 3763 4111 3733\nf 3760 3761 3735 4108\nf 3758 3759 3737 3739\nf 3756 3757 4103 3741\nf 3754 3755 3743 4100\nf 3752 3753 3745 3747\nf 3750 3751 4087 3701\nf 3749 3750 3701 3703\nf 3751 3752 3747 4088\nf 3753 3754 4099 3745\nf 3755 3756 3741 3743\nf 3757 3758 3739 4104\nf 3759 3760 4107 3737\nf 3761 3762 3733 3735\nf 3763 3764 3731 4112\nf 3765 3766 4115 3729\nf 3767 3768 3725 3727\nf 3769 3770 3723 4120\nf 3771 3772 4095 3721\nf 3773 3774 3717 3719\nf 3775 3776 3715 4092\nf 3777 3778 4075 3713\nf 3779 3780 3709 3711\nf 3781 3782 3707 4080\nf 3783 3784 4083 3705\nf 4108 4107 3760\nf 4116 4115 3766\nf 4096 4095 3772\nf 4076 4075 3778\nf 4084 4083 3784\nf 4100 4099 3754\nf 3819 3820 3781 3780\nf 3817 3818 3779 3778\nf 3815 3816 3777 3776\nf 3813 3814 3775 3774\nf 3811 3812 3773 3772\nf 3809 3810 3771 3770\nf 3807 3808 3769 3768\nf 3805 3806 3767 3766\nf 3803 3804 3765 3764\nf 3801 3802 3763 3762\nf 3799 3800 3761 3760\nf 3797 3798 3759 3758\nf 3795 3796 3757 3756\nf 3793 3794 3755 3754\nf 3791 3792 3753 3752\nf 3789 3790 3751 3750\nf 3787 3788 3749 3784\nf 3785 3786 3783 3782\nf 3786 3787 3784 3783\nf 3788 3789 3750 3749\nf 3790 3791 3752 3751\nf 3792 3793 3754 3753\nf 3794 3795 3756 3755\nf 3796 3797 3758 3757\nf 3798 3799 3760 3759\nf 3800 3801 3762 3761\nf 3802 3803 3764 3763\nf 3804 3805 3766 3765\nf 3806 3807 3768 3767\nf 3808 3809 3770 3769\nf 3810 3811 3772 3771\nf 3812 3813 3774 3773\nf 3814 3815 3776 3775\nf 3816 3817 3778 3777\nf 3818 3819 3780 3779\nf 3820 3785 3782 3781\nf 3856 3821 3818 3817\nf 3854 3855 3816 3815\nf 3852 3853 3814 3813\nf 3850 3851 3812 3811\nf 3848 3849 3810 3809\nf 3846 3847 3808 3807\nf 3844 3845 3806 3805\nf 3842 3843 3804 3803\nf 3840 3841 3802 3801\nf 3838 3839 3800 3799\nf 3836 3837 3798 3797\nf 3834 3835 3796 3795\nf 3832 3833 3794 3793\nf 3830 3831 3792 3791\nf 3828 3829 3790 3789\nf 3826 3827 3788 3787\nf 3824 3825 3786 3785\nf 3822 3823 3820 3819\nf 3821 3822 3819 3818\nf 3823 3824 3785 3820\nf 3825 3826 3787 3786\nf 3827 3828 3789 3788\nf 3829 3830 3791 3790\nf 3831 3832 3793 3792\nf 3833 3834 3795 3794\nf 3835 3836 3797 3796\nf 3837 3838 3799 3798\nf 3839 3840 3801 3800\nf 3841 3842 3803 3802\nf 3843 3844 3805 3804\nf 3845 3846 3807 3806\nf 3847 3848 3809 3808\nf 3849 3850 3811 3810\nf 3851 3852 3813 3812\nf 3853 3854 3815 3814\nf 3855 3856 3817 3816\nf 3891 3892 3853 3852\nf 3889 3890 3851 3850\nf 3887 3888 3849 3848\nf 3885 3886 3847 3846\nf 3883 3884 3845 3844\nf 3881 3882 3843 3842\nf 3879 3880 3841 3840\nf 3877 3878 3839 3838\nf 3875 3876 3837 3836\nf 3873 3874 3835 3834\nf 3871 3872 3833 3832\nf 3869 3870 3831 3830\nf 3867 3868 3829 3828\nf 3865 3866 3827 3826\nf 3863 3864 3825 3824\nf 3861 3862 3823 3822\nf 3859 3860 3821 3856\nf 3857 3858 3855 3854\nf 3858 3859 3856 3855\nf 3860 3861 3822 3821\nf 3862 3863 3824 3823\nf 3864 3865 3826 3825\nf 3866 3867 3828 3827\nf 3868 3869 3830 3829\nf 3870 3871 3832 3831\nf 3872 3873 3834 3833\nf 3874 3875 3836 3835\nf 3876 3877 3838 3837\nf 3878 3879 3840 3839\nf 3880 3881 3842 3841\nf 3882 3883 3844 3843\nf 3884 3885 3846 3845\nf 3886 3887 3848 3847\nf 3888 3889 3850 3849\nf 3890 3891 3852 3851\nf 3892 3857 3854 3853\nf 3928 3893 3890 3889\nf 3926 3927 3888 3887\nf 3924 3925 3886 3885\nf 3922 3923 3884 3883\nf 3920 3921 3882 3881\nf 3918 3919 3880 3879\nf 3916 3917 3878 3877\nf 3914 3915 3876 3875\nf 3912 3913 3874 3873\nf 3910 3911 3872 3871\nf 3908 3909 3870 3869\nf 3906 3907 3868 3867\nf 3904 3905 3866 3865\nf 3902 3903 3864 3863\nf 3900 3901 3862 3861\nf 3898 3899 3860 3859\nf 3896 3897 3858 3857\nf 3894 3895 3892 3891\nf 3893 3894 3891 3890\nf 3895 3896 3857 3892\nf 3897 3898 3859 3858\nf 3899 3900 3861 3860\nf 3901 3902 3863 3862\nf 3903 3904 3865 3864\nf 3905 3906 3867 3866\nf 3907 3908 3869 3868\nf 3909 3910 3871 3870\nf 3911 3912 3873 3872\nf 3913 3914 3875 3874\nf 3915 3916 3877 3876\nf 3917 3918 3879 3878\nf 3919 3920 3881 3880\nf 3921 3922 3883 3882\nf 3923 3924 3885 3884\nf 3925 3926 3887 3886\nf 3927 3928 3889 3888\nf 3963 3964 3925 3924\nf 3961 3962 3923 3922\nf 3959 3960 3921 3920\nf 3957 3958 3919 3918\nf 3955 3956 3917 3916\nf 3953 3954 3915 3914\nf 3951 3952 3913 3912\nf 3949 3950 3911 3910\nf 3947 3948 3909 3908\nf 3945 3946 3907 3906\nf 3943 3944 3905 3904\nf 3941 3942 3903 3902\nf 3939 3940 3901 3900\nf 3937 3938 3899 3898\nf 3935 3936 3897 3896\nf 3933 3934 3895 3894\nf 3931 3932 3893 3928\nf 3929 3930 3927 3926\nf 3930 3931 3928 3927\nf 3932 3933 3894 3893\nf 3934 3935 3896 3895\nf 3936 3937 3898 3897\nf 3938 3939 3900 3899\nf 3940 3941 3902 3901\nf 3942 3943 3904 3903\nf 3944 3945 3906 3905\nf 3946 3947 3908 3907\nf 3948 3949 3910 3909\nf 3950 3951 3912 3911\nf 3952 3953 3914 3913\nf 3954 3955 3916 3915\nf 3956 3957 3918 3917\nf 3958 3959 3920 3919\nf 3960 3961 3922 3921\nf 3962 3963 3924 3923\nf 3964 3929 3926 3925\nf 4000 3965 3962 3961\nf 3998 3999 3960 3959\nf 3996 3997 3958 3957\nf 3994 3995 3956 3955\nf 3992 3993 3954 3953\nf 3990 3991 3952 3951\nf 3988 3989 3950 3949\nf 3986 3987 3948 3947\nf 3984 3985 3946 3945\nf 3982 3983 3944 3943\nf 3980 3981 3942 3941\nf 3978 3979 3940 3939\nf 3976 3977 3938 3937\nf 3974 3975 3936 3935\nf 3972 3973 3934 3933\nf 3970 3971 3932 3931\nf 3968 3969 3930 3929\nf 3966 3967 3964 3963\nf 3965 3966 3963 3962\nf 3967 3968 3929 3964\nf 3969 3970 3931 3930\nf 3971 3972 3933 3932\nf 3973 3974 3935 3934\nf 3975 3976 3937 3936\nf 3977 3978 3939 3938\nf 3979 3980 3941 3940\nf 3981 3982 3943 3942\nf 3983 3984 3945 3944\nf 3985 3986 3947 3946\nf 3987 3988 3949 3948\nf 3989 3990 3951 3950\nf 3991 3992 3953 3952\nf 3993 3994 3955 3954\nf 3995 3996 3957 3956\nf 3997 3998 3959 3958\nf 3999 4000 3961 3960\nf 4035 4036 3997 3996\nf 4033 4034 3995 3994\nf 4031 4032 3993 3992\nf 4029 4030 3991 3990\nf 4027 4028 3989 3988\nf 4025 4026 3987 3986\nf 4023 4024 3985 3984\nf 4021 4022 3983 3982\nf 4019 4020 3981 3980\nf 4017 4018 3979 3978\nf 4015 4016 3977 3976\nf 4013 4014 3975 3974\nf 4011 4012 3973 3972\nf 4009 4010 3971 3970\nf 4007 4008 3969 3968\nf 4005 4006 3967 3966\nf 4003 4004 3965 4000\nf 4001 4002 3999 3998\nf 4002 4003 4000 3999\nf 4004 4005 3966 3965\nf 4006 4007 3968 3967\nf 4008 4009 3970 3969\nf 4010 4011 3972 3971\nf 4012 4013 3974 3973\nf 4014 4015 3976 3975\nf 4016 4017 3978 3977\nf 4018 4019 3980 3979\nf 4020 4021 3982 3981\nf 4022 4023 3984 3983\nf 4024 4025 3986 3985\nf 4026 4027 3988 3987\nf 4028 4029 3990 3989\nf 4030 4031 3992 3991\nf 4032 4033 3994 3993\nf 4034 4035 3996 3995\nf 4036 4001 3998 3997\nf 5432 5429 5430 5431\nf 5424 5421 5422 5423\nf 5416 5413 5414 5415\nf 5400 5397 5398 5399\nf 5018 5017 5403 5402\nf 5064 5063 5061 5062\nf 5413 5416 5059 5060\nf 5058 5057 5419 5418\nf 5056 5055 5053 5054\nf 5421 5424 5051 5052\nf 5050 5049 5427 5426\nf 5048 5047 5045 5046\nf 5429 5432 5043 5044\nf 5042 5041 5435 5434\nf 5040 5039 5037 5038\nf 5024 5023 5021 5022\nf 5397 5400 5019 5020\nf 5020 5019 5017 5018\nf 5022 5021 5399 5398\nf 5393 5396 5023 5024\nf 5038 5037 5411 5410\nf 5433 5436 5039 5040\nf 5044 5043 5041 5042\nf 5046 5045 5431 5430\nf 5425 5428 5047 5048\nf 5052 5051 5049 5050\nf 5054 5053 5423 5422\nf 5417 5420 5055 5056\nf 5060 5059 5057 5058\nf 5062 5061 5415 5414\nf 5401 5404 5063 5064\nf 5396 5393 5394 5395\nf 5404 5401 5402 5403\nf 5420 5417 5418 5419\nf 5428 5425 5426 5427\nf 5436 5433 5434 5435\nf 5392 5389 5390 5391\nf 5028 5027 5025 5026\nf 5026 5025 5395 5394\nf 5389 5392 5027 5028\nf 5408 5405 5406 5407\nf 5409 5412 5035 5036\nf 5034 5033 5407 5406\nf 5032 5031 5029 5030\nf 5030 5029 5391 5390\nf 5405 5408 5031 5032\nf 5036 5035 5033 5034\nf 5412 5409 5410 5411\nf 5387 5388 5349 5348\nf 5385 5386 5347 5346\nf 5383 5384 5345 5344\nf 5381 5382 5343 5342\nf 5379 5380 5341 5340\nf 5377 5378 5339 5338\nf 5375 5376 5337 5336\nf 5373 5374 5335 5334\nf 5371 5372 5333 5332\nf 5369 5370 5331 5330\nf 5367 5368 5329 5328\nf 5365 5366 5327 5326\nf 5363 5364 5325 5324\nf 5361 5362 5323 5322\nf 5359 5360 5321 5320\nf 5357 5358 5319 5318\nf 5355 5356 5317 5352\nf 5353 5354 5351 5350\nf 5386 5385 5384 5383 5382 5381 5380 5379 5378 5377 5376 5375 5374 5373 5372 5371 5370 5369 5368 5367 5366 5365 5364 5363 5362 5361 5360 5359 5358 5357 5356 5355 5354 5353 5388 5387\nf 5354 5355 5352 5351\nf 5356 5357 5318 5317\nf 5358 5359 5320 5319\nf 5360 5361 5322 5321\nf 5362 5363 5324 5323\nf 5364 5365 5326 5325\nf 5366 5367 5328 5327\nf 5368 5369 5330 5329\nf 5370 5371 5332 5331\nf 5372 5373 5334 5333\nf 5374 5375 5336 5335\nf 5376 5377 5338 5337\nf 5378 5379 5340 5339\nf 5380 5381 5342 5341\nf 5382 5383 5344 5343\nf 5384 5385 5346 5345\nf 5386 5387 5348 5347\nf 5388 5353 5350 5349\nf 5404 5403 5067\nf 5396 5395 5097\nf 5408 5407 5091\nf 5436 5435 5085\nf 5428 5427 5079\nf 5420 5419 5073\nf 5100 5065 5019 5400\nf 5098 5099 5021 5023\nf 5096 5097 5395 5025\nf 5094 5095 5027 5392\nf 5092 5093 5029 5031\nf 5090 5091 5407 5033\nf 5088 5089 5035 5412\nf 5086 5087 5037 5039\nf 5084 5085 5435 5041\nf 5082 5083 5043 5432\nf 5080 5081 5045 5047\nf 5078 5079 5427 5049\nf 5076 5077 5051 5424\nf 5074 5075 5053 5055\nf 5072 5073 5419 5057\nf 5070 5071 5059 5416\nf 5068 5069 5061 5063\nf 5066 5067 5403 5017\nf 5065 5066 5017 5019\nf 5067 5068 5063 5404\nf 5069 5070 5415 5061\nf 5071 5072 5057 5059\nf 5073 5074 5055 5420\nf 5075 5076 5423 5053\nf 5077 5078 5049 5051\nf 5079 5080 5047 5428\nf 5081 5082 5431 5045\nf 5083 5084 5041 5043\nf 5085 5086 5039 5436\nf 5087 5088 5411 5037\nf 5089 5090 5033 5035\nf 5091 5092 5031 5408\nf 5093 5094 5391 5029\nf 5095 5096 5025 5027\nf 5097 5098 5023 5396\nf 5099 5100 5399 5021\nf 5424 5423 5076\nf 5432 5431 5082\nf 5412 5411 5088\nf 5392 5391 5094\nf 5400 5399 5100\nf 5416 5415 5070\nf 5135 5136 5097 5096\nf 5133 5134 5095 5094\nf 5131 5132 5093 5092\nf 5129 5130 5091 5090\nf 5127 5128 5089 5088\nf 5125 5126 5087 5086\nf 5123 5124 5085 5084\nf 5121 5122 5083 5082\nf 5119 5120 5081 5080\nf 5117 5118 5079 5078\nf 5115 5116 5077 5076\nf 5113 5114 5075 5074\nf 5111 5112 5073 5072\nf 5109 5110 5071 5070\nf 5107 5108 5069 5068\nf 5105 5106 5067 5066\nf 5103 5104 5065 5100\nf 5101 5102 5099 5098\nf 5102 5103 5100 5099\nf 5104 5105 5066 5065\nf 5106 5107 5068 5067\nf 5108 5109 5070 5069\nf 5110 5111 5072 5071\nf 5112 5113 5074 5073\nf 5114 5115 5076 5075\nf 5116 5117 5078 5077\nf 5118 5119 5080 5079\nf 5120 5121 5082 5081\nf 5122 5123 5084 5083\nf 5124 5125 5086 5085\nf 5126 5127 5088 5087\nf 5128 5129 5090 5089\nf 5130 5131 5092 5091\nf 5132 5133 5094 5093\nf 5134 5135 5096 5095\nf 5136 5101 5098 5097\nf 5172 5137 5134 5133\nf 5170 5171 5132 5131\nf 5168 5169 5130 5129\nf 5166 5167 5128 5127\nf 5164 5165 5126 5125\nf 5162 5163 5124 5123\nf 5160 5161 5122 5121\nf 5158 5159 5120 5119\nf 5156 5157 5118 5117\nf 5154 5155 5116 5115\nf 5152 5153 5114 5113\nf 5150 5151 5112 5111\nf 5148 5149 5110 5109\nf 5146 5147 5108 5107\nf 5144 5145 5106 5105\nf 5142 5143 5104 5103\nf 5140 5141 5102 5101\nf 5138 5139 5136 5135\nf 5137 5138 5135 5134\nf 5139 5140 5101 5136\nf 5141 5142 5103 5102\nf 5143 5144 5105 5104\nf 5145 5146 5107 5106\nf 5147 5148 5109 5108\nf 5149 5150 5111 5110\nf 5151 5152 5113 5112\nf 5153 5154 5115 5114\nf 5155 5156 5117 5116\nf 5157 5158 5119 5118\nf 5159 5160 5121 5120\nf 5161 5162 5123 5122\nf 5163 5164 5125 5124\nf 5165 5166 5127 5126\nf 5167 5168 5129 5128\nf 5169 5170 5131 5130\nf 5171 5172 5133 5132\nf 5207 5208 5169 5168\nf 5205 5206 5167 5166\nf 5203 5204 5165 5164\nf 5201 5202 5163 5162\nf 5199 5200 5161 5160\nf 5197 5198 5159 5158\nf 5195 5196 5157 5156\nf 5193 5194 5155 5154\nf 5191 5192 5153 5152\nf 5189 5190 5151 5150\nf 5187 5188 5149 5148\nf 5185 5186 5147 5146\nf 5183 5184 5145 5144\nf 5181 5182 5143 5142\nf 5179 5180 5141 5140\nf 5177 5178 5139 5138\nf 5175 5176 5137 5172\nf 5173 5174 5171 5170\nf 5174 5175 5172 5171\nf 5176 5177 5138 5137\nf 5178 5179 5140 5139\nf 5180 5181 5142 5141\nf 5182 5183 5144 5143\nf 5184 5185 5146 5145\nf 5186 5187 5148 5147\nf 5188 5189 5150 5149\nf 5190 5191 5152 5151\nf 5192 5193 5154 5153\nf 5194 5195 5156 5155\nf 5196 5197 5158 5157\nf 5198 5199 5160 5159\nf 5200 5201 5162 5161\nf 5202 5203 5164 5163\nf 5204 5205 5166 5165\nf 5206 5207 5168 5167\nf 5208 5173 5170 5169\nf 5244 5209 5206 5205\nf 5242 5243 5204 5203\nf 5240 5241 5202 5201\nf 5238 5239 5200 5199\nf 5236 5237 5198 5197\nf 5234 5235 5196 5195\nf 5232 5233 5194 5193\nf 5230 5231 5192 5191\nf 5228 5229 5190 5189\nf 5226 5227 5188 5187\nf 5224 5225 5186 5185\nf 5222 5223 5184 5183\nf 5220 5221 5182 5181\nf 5218 5219 5180 5179\nf 5216 5217 5178 5177\nf 5214 5215 5176 5175\nf 5212 5213 5174 5173\nf 5210 5211 5208 5207\nf 5209 5210 5207 5206\nf 5211 5212 5173 5208\nf 5213 5214 5175 5174\nf 5215 5216 5177 5176\nf 5217 5218 5179 5178\nf 5219 5220 5181 5180\nf 5221 5222 5183 5182\nf 5223 5224 5185 5184\nf 5225 5226 5187 5186\nf 5227 5228 5189 5188\nf 5229 5230 5191 5190\nf 5231 5232 5193 5192\nf 5233 5234 5195 5194\nf 5235 5236 5197 5196\nf 5237 5238 5199 5198\nf 5239 5240 5201 5200\nf 5241 5242 5203 5202\nf 5243 5244 5205 5204\nf 5279 5280 5241 5240\nf 5277 5278 5239 5238\nf 5275 5276 5237 5236\nf 5273 5274 5235 5234\nf 5271 5272 5233 5232\nf 5269 5270 5231 5230\nf 5267 5268 5229 5228\nf 5265 5266 5227 5226\nf 5263 5264 5225 5224\nf 5261 5262 5223 5222\nf 5259 5260 5221 5220\nf 5257 5258 5219 5218\nf 5255 5256 5217 5216\nf 5253 5254 5215 5214\nf 5251 5252 5213 5212\nf 5249 5250 5211 5210\nf 5247 5248 5209 5244\nf 5245 5246 5243 5242\nf 5246 5247 5244 5243\nf 5248 5249 5210 5209\nf 5250 5251 5212 5211\nf 5252 5253 5214 5213\nf 5254 5255 5216 5215\nf 5256 5257 5218 5217\nf 5258 5259 5220 5219\nf 5260 5261 5222 5221\nf 5262 5263 5224 5223\nf 5264 5265 5226 5225\nf 5266 5267 5228 5227\nf 5268 5269 5230 5229\nf 5270 5271 5232 5231\nf 5272 5273 5234 5233\nf 5274 5275 5236 5235\nf 5276 5277 5238 5237\nf 5278 5279 5240 5239\nf 5280 5245 5242 5241\nf 5316 5281 5278 5277\nf 5314 5315 5276 5275\nf 5312 5313 5274 5273\nf 5310 5311 5272 5271\nf 5308 5309 5270 5269\nf 5306 5307 5268 5267\nf 5304 5305 5266 5265\nf 5302 5303 5264 5263\nf 5300 5301 5262 5261\nf 5298 5299 5260 5259\nf 5296 5297 5258 5257\nf 5294 5295 5256 5255\nf 5292 5293 5254 5253\nf 5290 5291 5252 5251\nf 5288 5289 5250 5249\nf 5286 5287 5248 5247\nf 5284 5285 5246 5245\nf 5282 5283 5280 5279\nf 5281 5282 5279 5278\nf 5283 5284 5245 5280\nf 5285 5286 5247 5246\nf 5287 5288 5249 5248\nf 5289 5290 5251 5250\nf 5291 5292 5253 5252\nf 5293 5294 5255 5254\nf 5295 5296 5257 5256\nf 5297 5298 5259 5258\nf 5299 5300 5261 5260\nf 5301 5302 5263 5262\nf 5303 5304 5265 5264\nf 5305 5306 5267 5266\nf 5307 5308 5269 5268\nf 5309 5310 5271 5270\nf 5311 5312 5273 5272\nf 5313 5314 5275 5274\nf 5315 5316 5277 5276\nf 5351 5352 5313 5312\nf 5349 5350 5311 5310\nf 5347 5348 5309 5308\nf 5345 5346 5307 5306\nf 5343 5344 5305 5304\nf 5341 5342 5303 5302\nf 5339 5340 5301 5300\nf 5337 5338 5299 5298\nf 5335 5336 5297 5296\nf 5333 5334 5295 5294\nf 5331 5332 5293 5292\nf 5329 5330 5291 5290\nf 5327 5328 5289 5288\nf 5325 5326 5287 5286\nf 5323 5324 5285 5284\nf 5321 5322 5283 5282\nf 5319 5320 5281 5316\nf 5317 5318 5315 5314\nf 5318 5319 5316 5315\nf 5320 5321 5282 5281\nf 5322 5323 5284 5283\nf 5324 5325 5286 5285\nf 5326 5327 5288 5287\nf 5328 5329 5290 5289\nf 5330 5331 5292 5291\nf 5332 5333 5294 5293\nf 5334 5335 5296 5295\nf 5336 5337 5298 5297\nf 5338 5339 5300 5299\nf 5340 5341 5302 5301\nf 5342 5343 5304 5303\nf 5344 5345 5306 5305\nf 5346 5347 5308 5307\nf 5348 5349 5310 5309\nf 5350 5351 5312 5311\nf 5352 5317 5314 5313\ng vbot\ns 5\nf 3116 3113 3114 3115\nf 3084 3081 3082 3083\nf 3076 3073 3074 3075\nf 3077 3080 2851 2852\nf 2850 2849 3083 3082\nf 2848 2847 2845 2846\nf 3085 3088 2843 2844\nf 2842 2841 3115 3114\nf 2840 2839 2837 2838\nf 2812 2811 2809 2810\nf 3073 3076 2807 2808\nf 2808 2807 2805 2806\nf 2810 2809 3075 3074\nf 3069 3072 2811 2812\nf 2838 2837 3111 3110\nf 3113 3116 2839 2840\nf 2844 2843 2841 2842\nf 2846 2845 3087 3086\nf 3081 3084 2847 2848\nf 2852 2851 2849 2850\nf 2806 2805 3079 3078\nf 3072 3069 3070 3071\nf 3080 3077 3078 3079\nf 3088 3085 3086 3087\nf 3108 3105 3106 3107\nf 3100 3097 3098 3099\nf 3092 3089 3090 3091\nf 3109 3112 2835 2836\nf 2834 2833 3107 3106\nf 2832 2831 2829 2830\nf 3101 3104 2827 2828\nf 2826 2825 3099 3098\nf 2824 2823 2821 2822\nf 3093 3096 2819 2820\nf 2818 2817 3091 3090\nf 2816 2815 2813 2814\nf 2814 2813 3071 3070\nf 3089 3092 2815 2816\nf 2820 2819 2817 2818\nf 2822 2821 3095 3094\nf 3097 3100 2823 2824\nf 2828 2827 2825 2826\nf 2830 2829 3103 3102\nf 3105 3108 2831 2832\nf 2836 2835 2833 2834\nf 3096 3093 3094 3095\nf 3104 3101 3102 3103\nf 3112 3109 3110 3111\nf 5698 5697 5696 5695 5694 5693 5692 5691 5690 5689 5688 5687 5686 5685 5684 5683 5682 5681 5680 5679 5678 5677 5676 5675 5674 5673 5672 5671 5670 5669 5668 5667 5666 5665 5700 5699\nf 4382 4381 4380 4379 4378 4377 4376 4375 4374 4373 4372 4371 4370 4369 4368 4367 4366 4365 4364 4363 4362 4361 4360 4359 4358 4357 4356 4355 4354 4353 4352 4351 4350 4349 4384 4383\nf 2994 2993 2992 2991 2990 2989 2988 2987 2986 2985 2984 2983 2982 2981 2980 2979 2978 2977 2976 2975 2974 2973 2972 2971 2970 2969 2968 2967 2966 2965 2964 2963 2962 2961 2996 2995\nf 3066 3065 3064 3063 3062 3061 3060 3059 3058 3057 3056 3055 3054 3053 3052 3051 3050 3049 3048 3047 3046 3045 3044 3043 3042 3041 3040 3039 3038 3037 3036 3035 3034 3033 3068 3067\nf 4310 4309 4308 4307 4306 4305 4304 4303 4302 4301 4300 4299 4298 4297 4296 4295 4294 4293 4292 4291 4290 4289 4288 4287 4286 4285 4284 4283 4282 4281 4280 4279 4278 4277 4312 4311\nf 5626 5625 5624 5623 5622 5621 5620 5619 5618 5617 5616 5615 5614 5613 5612 5611 5610 5609 5608 5607 5606 5605 5604 5603 5602 5601 5600 5599 5598 5597 5596 5595 5594 5593 5628 5627\nf 3092 3091 2882\nf 3100 3099 2876\nf 3108 3107 2870\nf 3116 3115 2864\nf 3084 3083 2858\nf 3076 3075 2888\nf 2888 2853 2807 3076\nf 2886 2887 2809 2811\nf 2884 2885 3071 2813\nf 2882 2883 2815 3092\nf 2880 2881 2817 2819\nf 2878 2879 3095 2821\nf 2876 2877 2823 3100\nf 2874 2875 2825 2827\nf 2872 2873 3103 2829\nf 2870 2871 2831 3108\nf 2868 2869 2833 2835\nf 2866 2867 3111 2837\nf 2864 2865 2839 3116\nf 2862 2863 2841 2843\nf 2860 2861 3087 2845\nf 2858 2859 2847 3084\nf 2856 2857 2849 2851\nf 2854 2855 3079 2805\nf 2853 2854 2805 2807\nf 2855 2856 2851 3080\nf 2857 2858 3083 2849\nf 2859 2860 2845 2847\nf 2861 2862 2843 3088\nf 2863 2864 3115 2841\nf 2865 2866 2837 2839\nf 2867 2868 2835 3112\nf 2869 2870 3107 2833\nf 2871 2872 2829 2831\nf 2873 2874 2827 3104\nf 2875 2876 3099 2825\nf 2877 2878 2821 2823\nf 2879 2880 2819 3096\nf 2881 2882 3091 2817\nf 2883 2884 2813 2815\nf 2885 2886 2811 3072\nf 2887 2888 3075 2809\nf 3072 3071 2885\nf 3080 3079 2855\nf 3088 3087 2861\nf 3112 3111 2867\nf 3104 3103 2873\nf 3096 3095 2879\nf 2923 2924 2885 2884\nf 2921 2922 2883 2882\nf 2919 2920 2881 2880\nf 2917 2918 2879 2878\nf 2915 2916 2877 2876\nf 2913 2914 2875 2874\nf 2911 2912 2873 2872\nf 2909 2910 2871 2870\nf 2907 2908 2869 2868\nf 2905 2906 2867 2866\nf 2903 2904 2865 2864\nf 2901 2902 2863 2862\nf 2899 2900 2861 2860\nf 2897 2898 2859 2858\nf 2895 2896 2857 2856\nf 2893 2894 2855 2854\nf 2891 2892 2853 2888\nf 2889 2890 2887 2886\nf 2890 2891 2888 2887\nf 2892 2893 2854 2853\nf 2894 2895 2856 2855\nf 2896 2897 2858 2857\nf 2898 2899 2860 2859\nf 2900 2901 2862 2861\nf 2902 2903 2864 2863\nf 2904 2905 2866 2865\nf 2906 2907 2868 2867\nf 2908 2909 2870 2869\nf 2910 2911 2872 2871\nf 2912 2913 2874 2873\nf 2914 2915 2876 2875\nf 2916 2917 2878 2877\nf 2918 2919 2880 2879\nf 2920 2921 2882 2881\nf 2922 2923 2884 2883\nf 2924 2889 2886 2885\nf 2959 2960 2893 2892\nf 2957 2958 2891 2890\nf 2955 2956 2889 2924\nf 2953 2954 2923 2922\nf 2951 2952 2921 2920\nf 2949 2950 2919 2918\nf 2947 2948 2917 2916\nf 2945 2946 2915 2914\nf 2943 2944 2913 2912\nf 2941 2942 2911 2910\nf 2939 2940 2909 2908\nf 2937 2938 2907 2906\nf 2935 2936 2905 2904\nf 2933 2934 2903 2902\nf 2931 2932 2901 2900\nf 2929 2930 2899 2898\nf 2927 2928 2897 2896\nf 2925 2926 2895 2894\nf 2926 2927 2896 2895\nf 2928 2929 2898 2897\nf 2930 2931 2900 2899\nf 2932 2933 2902 2901\nf 2934 2935 2904 2903\nf 2936 2937 2906 2905\nf 2938 2939 2908 2907\nf 2940 2941 2910 2909\nf 2942 2943 2912 2911\nf 2944 2945 2914 2913\nf 2946 2947 2916 2915\nf 2948 2949 2918 2917\nf 2950 2951 2920 2919\nf 2952 2953 2922 2921\nf 2954 2955 2924 2923\nf 2956 2957 2890 2889\nf 2958 2959 2892 2891\nf 2960 2925 2894 2893\nf 2996 2961 2958 2957\nf 2994 2995 2956 2955\nf 2992 2993 2954 2953\nf 2990 2991 2952 2951\nf 2988 2989 2950 2949\nf 2986 2987 2948 2947\nf 2984 2985 2946 2945\nf 2982 2983 2944 2943\nf 2980 2981 2942 2941\nf 2978 2979 2940 2939\nf 2976 2977 2938 2937\nf 2974 2975 2936 2935\nf 2972 2973 2934 2933\nf 2970 2971 2932 2931\nf 2968 2969 2930 2929\nf 2966 2967 2928 2927\nf 2964 2965 2926 2925\nf 2962 2963 2960 2959\nf 2961 2962 2959 2958\nf 2963 2964 2925 2960\nf 2965 2966 2927 2926\nf 2967 2968 2929 2928\nf 2969 2970 2931 2930\nf 2971 2972 2933 2932\nf 2973 2974 2935 2934\nf 2975 2976 2937 2936\nf 2977 2978 2939 2938\nf 2979 2980 2941 2940\nf 2981 2982 2943 2942\nf 2983 2984 2945 2944\nf 2985 2986 2947 2946\nf 2987 2988 2949 2948\nf 2989 2990 2951 2950\nf 2991 2992 2953 2952\nf 2993 2994 2955 2954\nf 2995 2996 2957 2956\nf 3086 3085 3027\nf 3110 3109 3021\nf 3102 3101 3015\nf 3094 3093 3009\nf 3070 3069 3003\nf 3078 3077 2997\nf 3031 3032 2852 2850\nf 3029 3030 3081 2848\nf 3027 3028 2846 3086\nf 3025 3026 2844 2842\nf 3023 3024 3113 2840\nf 3021 3022 2838 3110\nf 3019 3020 2836 2834\nf 3017 3018 3105 2832\nf 3015 3016 2830 3102\nf 3013 3014 2828 2826\nf 3011 3012 3097 2824\nf 3009 3010 2822 3094\nf 3007 3008 2820 2818\nf 3005 3006 3089 2816\nf 3003 3004 2814 3070\nf 3001 3002 2812 2810\nf 2999 3000 3073 2808\nf 2997 2998 2806 3078\nf 2998 2999 2808 2806\nf 3000 3001 2810 3074\nf 3002 3003 3069 2812\nf 3004 3005 2816 2814\nf 3006 3007 2818 3090\nf 3008 3009 3093 2820\nf 3010 3011 2824 2822\nf 3012 3013 2826 3098\nf 3014 3015 3101 2828\nf 3016 3017 2832 2830\nf 3018 3019 2834 3106\nf 3020 3021 3109 2836\nf 3022 3023 2840 2838\nf 3024 3025 2842 3114\nf 3026 3027 3085 2844\nf 3028 3029 2848 2846\nf 3030 3031 2850 3082\nf 3032 2997 3077 2852\nf 3082 3081 3030\nf 3074 3073 3000\nf 3090 3089 3006\nf 3098 3097 3012\nf 3106 3105 3018\nf 3114 3113 3024\nf 3068 3033 3030 3029\nf 3066 3067 3028 3027\nf 3064 3065 3026 3025\nf 3062 3063 3024 3023\nf 3060 3061 3022 3021\nf 3058 3059 3020 3019\nf 3056 3057 3018 3017\nf 3054 3055 3016 3015\nf 3052 3053 3014 3013\nf 3050 3051 3012 3011\nf 3048 3049 3010 3009\nf 3046 3047 3008 3007\nf 3044 3045 3006 3005\nf 3042 3043 3004 3003\nf 3040 3041 3002 3001\nf 3038 3039 3000 2999\nf 3036 3037 2998 2997\nf 3034 3035 3032 3031\nf 3033 3034 3031 3030\nf 3035 3036 2997 3032\nf 3037 3038 2999 2998\nf 3039 3040 3001 3000\nf 3041 3042 3003 3002\nf 3043 3044 3005 3004\nf 3045 3046 3007 3006\nf 3047 3048 3009 3008\nf 3049 3050 3011 3010\nf 3051 3052 3013 3012\nf 3053 3054 3015 3014\nf 3055 3056 3017 3016\nf 3057 3058 3019 3018\nf 3059 3060 3021 3020\nf 3061 3062 3023 3022\nf 3063 3064 3025 3024\nf 3065 3066 3027 3026\nf 3067 3068 3029 3028\nf 4404 4401 4402 4403\nf 4396 4393 4394 4395\nf 4388 4385 4386 4387\nf 4393 4396 4167 4168\nf 4166 4165 4399 4398\nf 4164 4163 4161 4162\nf 4401 4404 4159 4160\nf 4158 4157 4431 4430\nf 4156 4155 4153 4154\nf 4128 4127 4125 4126\nf 4389 4392 4123 4124\nf 4124 4123 4121 4122\nf 4126 4125 4391 4390\nf 4385 4388 4127 4128\nf 4154 4153 4427 4426\nf 4429 4432 4155 4156\nf 4160 4159 4157 4158\nf 4162 4161 4403 4402\nf 4397 4400 4163 4164\nf 4168 4167 4165 4166\nf 4122 4121 4395 4394\nf 4392 4389 4390 4391\nf 4400 4397 4398 4399\nf 4432 4429 4430 4431\nf 4428 4425 4426 4427\nf 4420 4417 4418 4419\nf 4412 4409 4410 4411\nf 4425 4428 4151 4152\nf 4150 4149 4423 4422\nf 4148 4147 4145 4146\nf 4417 4420 4143 4144\nf 4142 4141 4415 4414\nf 4140 4139 4137 4138\nf 4409 4412 4135 4136\nf 4134 4133 4407 4406\nf 4132 4131 4129 4130\nf 4130 4129 4387 4386\nf 4405 4408 4131 4132\nf 4136 4135 4133 4134\nf 4138 4137 4411 4410\nf 4413 4416 4139 4140\nf 4144 4143 4141 4142\nf 4146 4145 4419 4418\nf 4421 4424 4147 4148\nf 4152 4151 4149 4150\nf 4408 4405 4406 4407\nf 4416 4413 4414 4415\nf 4424 4421 4422 4423\nf 4412 4411 4195\nf 4420 4419 4189\nf 4428 4427 4183\nf 4404 4403 4177\nf 4396 4395 4171\nf 4388 4387 4201\nf 4203 4204 4391 4125\nf 4201 4202 4127 4388\nf 4199 4200 4129 4131\nf 4197 4198 4407 4133\nf 4195 4196 4135 4412\nf 4193 4194 4137 4139\nf 4191 4192 4415 4141\nf 4189 4190 4143 4420\nf 4187 4188 4145 4147\nf 4185 4186 4423 4149\nf 4183 4184 4151 4428\nf 4181 4182 4153 4155\nf 4179 4180 4431 4157\nf 4177 4178 4159 4404\nf 4175 4176 4161 4163\nf 4173 4174 4399 4165\nf 4171 4172 4167 4396\nf 4169 4170 4121 4123\nf 4170 4171 4395 4121\nf 4172 4173 4165 4167\nf 4174 4175 4163 4400\nf 4176 4177 4403 4161\nf 4178 4179 4157 4159\nf 4180 4181 4155 4432\nf 4182 4183 4427 4153\nf 4184 4185 4149 4151\nf 4186 4187 4147 4424\nf 4188 4189 4419 4145\nf 4190 4191 4141 4143\nf 4192 4193 4139 4416\nf 4194 4195 4411 4137\nf 4196 4197 4133 4135\nf 4198 4199 4131 4408\nf 4200 4201 4387 4129\nf 4202 4203 4125 4127\nf 4204 4169 4123 4392\nf 4392 4391 4204\nf 4400 4399 4174\nf 4432 4431 4180\nf 4424 4423 4186\nf 4416 4415 4192\nf 4408 4407 4198\nf 4240 4205 4202 4201\nf 4238 4239 4200 4199\nf 4236 4237 4198 4197\nf 4234 4235 4196 4195\nf 4232 4233 4194 4193\nf 4230 4231 4192 4191\nf 4228 4229 4190 4189\nf 4226 4227 4188 4187\nf 4224 4225 4186 4185\nf 4222 4223 4184 4183\nf 4220 4221 4182 4181\nf 4218 4219 4180 4179\nf 4216 4217 4178 4177\nf 4214 4215 4176 4175\nf 4212 4213 4174 4173\nf 4210 4211 4172 4171\nf 4208 4209 4170 4169\nf 4206 4207 4204 4203\nf 4205 4206 4203 4202\nf 4207 4208 4169 4204\nf 4209 4210 4171 4170\nf 4211 4212 4173 4172\nf 4213 4214 4175 4174\nf 4215 4216 4177 4176\nf 4217 4218 4179 4178\nf 4219 4220 4181 4180\nf 4221 4222 4183 4182\nf 4223 4224 4185 4184\nf 4225 4226 4187 4186\nf 4227 4228 4189 4188\nf 4229 4230 4191 4190\nf 4231 4232 4193 4192\nf 4233 4234 4195 4194\nf 4235 4236 4197 4196\nf 4237 4238 4199 4198\nf 4239 4240 4201 4200\nf 4276 4241 4210 4209\nf 4274 4275 4208 4207\nf 4272 4273 4206 4205\nf 4270 4271 4240 4239\nf 4268 4269 4238 4237\nf 4266 4267 4236 4235\nf 4264 4265 4234 4233\nf 4262 4263 4232 4231\nf 4260 4261 4230 4229\nf 4258 4259 4228 4227\nf 4256 4257 4226 4225\nf 4254 4255 4224 4223\nf 4252 4253 4222 4221\nf 4250 4251 4220 4219\nf 4248 4249 4218 4217\nf 4246 4247 4216 4215\nf 4244 4245 4214 4213\nf 4242 4243 4212 4211\nf 4241 4242 4211 4210\nf 4243 4244 4213 4212\nf 4245 4246 4215 4214\nf 4247 4248 4217 4216\nf 4249 4250 4219 4218\nf 4251 4252 4221 4220\nf 4253 4254 4223 4222\nf 4255 4256 4225 4224\nf 4257 4258 4227 4226\nf 4259 4260 4229 4228\nf 4261 4262 4231 4230\nf 4263 4264 4233 4232\nf 4265 4266 4235 4234\nf 4267 4268 4237 4236\nf 4269 4270 4239 4238\nf 4271 4272 4205 4240\nf 4273 4274 4207 4206\nf 4275 4276 4209 4208\nf 4311 4312 4273 4272\nf 4309 4310 4271 4270\nf 4307 4308 4269 4268\nf 4305 4306 4267 4266\nf 4303 4304 4265 4264\nf 4301 4302 4263 4262\nf 4299 4300 4261 4260\nf 4297 4298 4259 4258\nf 4295 4296 4257 4256\nf 4293 4294 4255 4254\nf 4291 4292 4253 4252\nf 4289 4290 4251 4250\nf 4287 4288 4249 4248\nf 4285 4286 4247 4246\nf 4283 4284 4245 4244\nf 4281 4282 4243 4242\nf 4279 4280 4241 4276\nf 4277 4278 4275 4274\nf 4278 4279 4276 4275\nf 4280 4281 4242 4241\nf 4282 4283 4244 4243\nf 4284 4285 4246 4245\nf 4286 4287 4248 4247\nf 4288 4289 4250 4249\nf 4290 4291 4252 4251\nf 4292 4293 4254 4253\nf 4294 4295 4256 4255\nf 4296 4297 4258 4257\nf 4298 4299 4260 4259\nf 4300 4301 4262 4261\nf 4302 4303 4264 4263\nf 4304 4305 4266 4265\nf 4306 4307 4268 4267\nf 4308 4309 4270 4269\nf 4310 4311 4272 4271\nf 4312 4277 4274 4273\nf 4430 4429 4340\nf 4422 4421 4334\nf 4414 4413 4328\nf 4406 4405 4322\nf 4390 4389 4316\nf 4398 4397 4346\nf 4348 4313 4393 4168\nf 4346 4347 4166 4398\nf 4344 4345 4164 4162\nf 4342 4343 4401 4160\nf 4340 4341 4158 4430\nf 4338 4339 4156 4154\nf 4336 4337 4425 4152\nf 4334 4335 4150 4422\nf 4332 4333 4148 4146\nf 4330 4331 4417 4144\nf 4328 4329 4142 4414\nf 4326 4327 4140 4138\nf 4324 4325 4409 4136\nf 4322 4323 4134 4406\nf 4320 4321 4132 4130\nf 4318 4319 4385 4128\nf 4316 4317 4126 4390\nf 4314 4315 4124 4122\nf 4313 4314 4122 4394\nf 4315 4316 4389 4124\nf 4317 4318 4128 4126\nf 4319 4320 4130 4386\nf 4321 4322 4405 4132\nf 4323 4324 4136 4134\nf 4325 4326 4138 4410\nf 4327 4328 4413 4140\nf 4329 4330 4144 4142\nf 4331 4332 4146 4418\nf 4333 4334 4421 4148\nf 4335 4336 4152 4150\nf 4337 4338 4154 4426\nf 4339 4340 4429 4156\nf 4341 4342 4160 4158\nf 4343 4344 4162 4402\nf 4345 4346 4397 4164\nf 4347 4348 4168 4166\nf 4394 4393 4313\nf 4386 4385 4319\nf 4410 4409 4325\nf 4418 4417 4331\nf 4426 4425 4337\nf 4402 4401 4343\nf 4383 4384 4345 4344\nf 4381 4382 4343 4342\nf 4379 4380 4341 4340\nf 4377 4378 4339 4338\nf 4375 4376 4337 4336\nf 4373 4374 4335 4334\nf 4371 4372 4333 4332\nf 4369 4370 4331 4330\nf 4367 4368 4329 4328\nf 4365 4366 4327 4326\nf 4363 4364 4325 4324\nf 4361 4362 4323 4322\nf 4359 4360 4321 4320\nf 4357 4358 4319 4318\nf 4355 4356 4317 4316\nf 4353 4354 4315 4314\nf 4351 4352 4313 4348\nf 4349 4350 4347 4346\nf 4350 4351 4348 4347\nf 4352 4353 4314 4313\nf 4354 4355 4316 4315\nf 4356 4357 4318 4317\nf 4358 4359 4320 4319\nf 4360 4361 4322 4321\nf 4362 4363 4324 4323\nf 4364 4365 4326 4325\nf 4366 4367 4328 4327\nf 4368 4369 4330 4329\nf 4370 4371 4332 4331\nf 4372 4373 4334 4333\nf 4374 4375 4336 4335\nf 4376 4377 4338 4337\nf 4378 4379 4340 4339\nf 4380 4381 4342 4341\nf 4382 4383 4344 4343\nf 4384 4349 4346 4345\nf 5720 5717 5718 5719\nf 5712 5709 5710 5711\nf 5704 5701 5702 5703\nf 5709 5712 5483 5484\nf 5482 5481 5715 5714\nf 5480 5479 5477 5478\nf 5717 5720 5475 5476\nf 5474 5473 5747 5746\nf 5472 5471 5469 5470\nf 5444 5443 5441 5442\nf 5705 5708 5439 5440\nf 5440 5439 5437 5438\nf 5442 5441 5707 5706\nf 5701 5704 5443 5444\nf 5470 5469 5743 5742\nf 5745 5748 5471 5472\nf 5476 5475 5473 5474\nf 5478 5477 5719 5718\nf 5713 5716 5479 5480\nf 5484 5483 5481 5482\nf 5438 5437 5711 5710\nf 5708 5705 5706 5707\nf 5716 5713 5714 5715\nf 5748 5745 5746 5747\nf 5744 5741 5742 5743\nf 5736 5733 5734 5735\nf 5728 5725 5726 5727\nf 5741 5744 5467 5468\nf 5466 5465 5739 5738\nf 5464 5463 5461 5462\nf 5733 5736 5459 5460\nf 5458 5457 5731 5730\nf 5456 5455 5453 5454\nf 5725 5728 5451 5452\nf 5450 5449 5723 5722\nf 5448 5447 5445 5446\nf 5446 5445 5703 5702\nf 5721 5724 5447 5448\nf 5452 5451 5449 5450\nf 5454 5453 5727 5726\nf 5729 5732 5455 5456\nf 5460 5459 5457 5458\nf 5462 5461 5735 5734\nf 5737 5740 5463 5464\nf 5468 5467 5465 5466\nf 5724 5721 5722 5723\nf 5732 5729 5730 5731\nf 5740 5737 5738 5739\nf 5728 5727 5511\nf 5736 5735 5505\nf 5744 5743 5499\nf 5720 5719 5493\nf 5712 5711 5487\nf 5704 5703 5517\nf 5519 5520 5707 5441\nf 5517 5518 5443 5704\nf 5515 5516 5445 5447\nf 5513 5514 5723 5449\nf 5511 5512 5451 5728\nf 5509 5510 5453 5455\nf 5507 5508 5731 5457\nf 5505 5506 5459 5736\nf 5503 5504 5461 5463\nf 5501 5502 5739 5465\nf 5499 5500 5467 5744\nf 5497 5498 5469 5471\nf 5495 5496 5747 5473\nf 5493 5494 5475 5720\nf 5491 5492 5477 5479\nf 5489 5490 5715 5481\nf 5487 5488 5483 5712\nf 5485 5486 5437 5439\nf 5486 5487 5711 5437\nf 5488 5489 5481 5483\nf 5490 5491 5479 5716\nf 5492 5493 5719 5477\nf 5494 5495 5473 5475\nf 5496 5497 5471 5748\nf 5498 5499 5743 5469\nf 5500 5501 5465 5467\nf 5502 5503 5463 5740\nf 5504 5505 5735 5461\nf 5506 5507 5457 5459\nf 5508 5509 5455 5732\nf 5510 5511 5727 5453\nf 5512 5513 5449 5451\nf 5514 5515 5447 5724\nf 5516 5517 5703 5445\nf 5518 5519 5441 5443\nf 5520 5485 5439 5708\nf 5708 5707 5520\nf 5716 5715 5490\nf 5748 5747 5496\nf 5740 5739 5502\nf 5732 5731 5508\nf 5724 5723 5514\nf 5556 5521 5518 5517\nf 5554 5555 5516 5515\nf 5552 5553 5514 5513\nf 5550 5551 5512 5511\nf 5548 5549 5510 5509\nf 5546 5547 5508 5507\nf 5544 5545 5506 5505\nf 5542 5543 5504 5503\nf 5540 5541 5502 5501\nf 5538 5539 5500 5499\nf 5536 5537 5498 5497\nf 5534 5535 5496 5495\nf 5532 5533 5494 5493\nf 5530 5531 5492 5491\nf 5528 5529 5490 5489\nf 5526 5527 5488 5487\nf 5524 5525 5486 5485\nf 5522 5523 5520 5519\nf 5521 5522 5519 5518\nf 5523 5524 5485 5520\nf 5525 5526 5487 5486\nf 5527 5528 5489 5488\nf 5529 5530 5491 5490\nf 5531 5532 5493 5492\nf 5533 5534 5495 5494\nf 5535 5536 5497 5496\nf 5537 5538 5499 5498\nf 5539 5540 5501 5500\nf 5541 5542 5503 5502\nf 5543 5544 5505 5504\nf 5545 5546 5507 5506\nf 5547 5548 5509 5508\nf 5549 5550 5511 5510\nf 5551 5552 5513 5512\nf 5553 5554 5515 5514\nf 5555 5556 5517 5516\nf 5592 5557 5526 5525\nf 5590 5591 5524 5523\nf 5588 5589 5522 5521\nf 5586 5587 5556 5555\nf 5584 5585 5554 5553\nf 5582 5583 5552 5551\nf 5580 5581 5550 5549\nf 5578 5579 5548 5547\nf 5576 5577 5546 5545\nf 5574 5575 5544 5543\nf 5572 5573 5542 5541\nf 5570 5571 5540 5539\nf 5568 5569 5538 5537\nf 5566 5567 5536 5535\nf 5564 5565 5534 5533\nf 5562 5563 5532 5531\nf 5560 5561 5530 5529\nf 5558 5559 5528 5527\nf 5557 5558 5527 5526\nf 5559 5560 5529 5528\nf 5561 5562 5531 5530\nf 5563 5564 5533 5532\nf 5565 5566 5535 5534\nf 5567 5568 5537 5536\nf 5569 5570 5539 5538\nf 5571 5572 5541 5540\nf 5573 5574 5543 5542\nf 5575 5576 5545 5544\nf 5577 5578 5547 5546\nf 5579 5580 5549 5548\nf 5581 5582 5551 5550\nf 5583 5584 5553 5552\nf 5585 5586 5555 5554\nf 5587 5588 5521 5556\nf 5589 5590 5523 5522\nf 5591 5592 5525 5524\nf 5627 5628 5589 5588\nf 5625 5626 5587 5586\nf 5623 5624 5585 5584\nf 5621 5622 5583 5582\nf 5619 5620 5581 5580\nf 5617 5618 5579 5578\nf 5615 5616 5577 5576\nf 5613 5614 5575 5574\nf 5611 5612 5573 5572\nf 5609 5610 5571 5570\nf 5607 5608 5569 5568\nf 5605 5606 5567 5566\nf 5603 5604 5565 5564\nf 5601 5602 5563 5562\nf 5599 5600 5561 5560\nf 5597 5598 5559 5558\nf 5595 5596 5557 5592\nf 5593 5594 5591 5590\nf 5594 5595 5592 5591\nf 5596 5597 5558 5557\nf 5598 5599 5560 5559\nf 5600 5601 5562 5561\nf 5602 5603 5564 5563\nf 5604 5605 5566 5565\nf 5606 5607 5568 5567\nf 5608 5609 5570 5569\nf 5610 5611 5572 5571\nf 5612 5613 5574 5573\nf 5614 5615 5576 5575\nf 5616 5617 5578 5577\nf 5618 5619 5580 5579\nf 5620 5621 5582 5581\nf 5622 5623 5584 5583\nf 5624 5625 5586 5585\nf 5626 5627 5588 5587\nf 5628 5593 5590 5589\nf 5746 5745 5656\nf 5738 5737 5650\nf 5730 5729 5644\nf 5722 5721 5638\nf 5706 5705 5632\nf 5714 5713 5662\nf 5664 5629 5709 5484\nf 5662 5663 5482 5714\nf 5660 5661 5480 5478\nf 5658 5659 5717 5476\nf 5656 5657 5474 5746\nf 5654 5655 5472 5470\nf 5652 5653 5741 5468\nf 5650 5651 5466 5738\nf 5648 5649 5464 5462\nf 5646 5647 5733 5460\nf 5644 5645 5458 5730\nf 5642 5643 5456 5454\nf 5640 5641 5725 5452\nf 5638 5639 5450 5722\nf 5636 5637 5448 5446\nf 5634 5635 5701 5444\nf 5632 5633 5442 5706\nf 5630 5631 5440 5438\nf 5629 5630 5438 5710\nf 5631 5632 5705 5440\nf 5633 5634 5444 5442\nf 5635 5636 5446 5702\nf 5637 5638 5721 5448\nf 5639 5640 5452 5450\nf 5641 5642 5454 5726\nf 5643 5644 5729 5456\nf 5645 5646 5460 5458\nf 5647 5648 5462 5734\nf 5649 5650 5737 5464\nf 5651 5652 5468 5466\nf 5653 5654 5470 5742\nf 5655 5656 5745 5472\nf 5657 5658 5476 5474\nf 5659 5660 5478 5718\nf 5661 5662 5713 5480\nf 5663 5664 5484 5482\nf 5710 5709 5629\nf 5702 5701 5635\nf 5726 5725 5641\nf 5734 5733 5647\nf 5742 5741 5653\nf 5718 5717 5659\nf 5699 5700 5661 5660\nf 5697 5698 5659 5658\nf 5695 5696 5657 5656\nf 5693 5694 5655 5654\nf 5691 5692 5653 5652\nf 5689 5690 5651 5650\nf 5687 5688 5649 5648\nf 5685 5686 5647 5646\nf 5683 5684 5645 5644\nf 5681 5682 5643 5642\nf 5679 5680 5641 5640\nf 5677 5678 5639 5638\nf 5675 5676 5637 5636\nf 5673 5674 5635 5634\nf 5671 5672 5633 5632\nf 5669 5670 5631 5630\nf 5667 5668 5629 5664\nf 5665 5666 5663 5662\nf 5666 5667 5664 5663\nf 5668 5669 5630 5629\nf 5670 5671 5632 5631\nf 5672 5673 5634 5633\nf 5674 5675 5636 5635\nf 5676 5677 5638 5637\nf 5678 5679 5640 5639\nf 5680 5681 5642 5641\nf 5682 5683 5644 5643\nf 5684 5685 5646 5645\nf 5686 5687 5648 5647\nf 5688 5689 5650 5649\nf 5690 5691 5652 5651\nf 5692 5693 5654 5653\nf 5694 5695 5656 5655\nf 5696 5697 5658 5657\nf 5698 5699 5660 5659\nf 5700 5665 5662 5661\ng valves\ns 1\nf 3180 3179 3177 3178\nf 3176 3175 3173 3174\nf 3172 3171 3169 3170\nf 3168 3167 3165 3166\nf 3164 3163 3161 3162\nf 3160 3159 3157 3158\nf 3156 3155 3153 3154\nf 3152 3151 3149 3150\nf 3148 3147 3145 3146\nf 3144 3143 3141 3142\nf 3140 3139 3137 3138\nf 3136 3135 3133 3134\nf 3132 3131 3129 3130\nf 3128 3127 3125 3126\nf 3124 3123 3121 3122\nf 3120 3119 3117 3118\nf 3122 3121 3119 3120\nf 3126 3125 3123 3124\nf 3130 3129 3127 3128\nf 3134 3133 3131 3132\nf 3138 3137 3135 3136\nf 3142 3141 3139 3140\nf 3146 3145 3143 3144\nf 3150 3149 3147 3148\nf 3154 3153 3151 3152\nf 3158 3157 3155 3156\nf 3162 3161 3159 3160\nf 3166 3165 3163 3164\nf 3170 3169 3167 3168\nf 3174 3173 3171 3172\nf 3178 3177 3175 3176\nf 3118 3117 3179 3180\nf 3119 3121 3123 3125 3127 3129 3131 3133 3135 3137 3139 3141 3143 3145 3147 3149 3151 3153 3155 3157 3159 3161 3163 3165 3167 3169 3171 3173 3175 3177 3179 3117\nf 3338 3337 3336 3335 3334 3333 3332 3331 3330 3329 3328 3327 3326 3325 3324 3323 3322 3321 3320 3319 3318 3317 3316 3315 3314 3313 3312 3311 3310 3309 3340 3339\nf 4435 4437 4439 4441 4443 4445 4447 4449 4451 4453 4455 4457 4459 4461 4463 4465 4467 4469 4471 4473 4475 4477 4479 4481 4483 4485 4487 4489 4491 4493 4495 4433\nf 4654 4653 4652 4651 4650 4649 4648 4647 4646 4645 4644 4643 4642 4641 4640 4639 4638 4637 4636 4635 4634 4633 4632 4631 4630 4629 4628 4627 4626 4625 4656 4655\nf 5751 5753 5755 5757 5759 5761 5763 5765 5767 5769 5771 5773 5775 5777 5779 5781 5783 5785 5787 5789 5791 5793 5795 5797 5799 5801 5803 5805 5807 5809 5811 5749\nf 5970 5969 5968 5967 5966 5965 5964 5963 5962 5961 5960 5959 5958 5957 5956 5955 5954 5953 5952 5951 5950 5949 5948 5947 5946 5945 5944 5943 5942 5941 5972 5971\nf 3212 3181 3180 3178\nf 3210 3211 3176 3174\nf 3208 3209 3172 3170\nf 3206 3207 3168 3166\nf 3204 3205 3164 3162\nf 3202 3203 3160 3158\nf 3200 3201 3156 3154\nf 3198 3199 3152 3150\nf 3196 3197 3148 3146\nf 3194 3195 3144 3142\nf 3192 3193 3140 3138\nf 3190 3191 3136 3134\nf 3188 3189 3132 3130\nf 3186 3187 3128 3126\nf 3184 3185 3124 3122\nf 3182 3183 3120 3118\nf 3181 3182 3118 3180\nf 3183 3184 3122 3120\nf 3185 3186 3126 3124\nf 3187 3188 3130 3128\nf 3189 3190 3134 3132\nf 3191 3192 3138 3136\nf 3193 3194 3142 3140\nf 3195 3196 3146 3144\nf 3197 3198 3150 3148\nf 3199 3200 3154 3152\nf 3201 3202 3158 3156\nf 3203 3204 3162 3160\nf 3205 3206 3166 3164\nf 3207 3208 3170 3168\nf 3209 3210 3174 3172\nf 3211 3212 3178 3176\nf 3244 3213 3202 3201\nf 3242 3243 3200 3199\nf 3240 3241 3198 3197\nf 3238 3239 3196 3195\nf 3236 3237 3194 3193\nf 3234 3235 3192 3191\nf 3232 3233 3190 3189\nf 3230 3231 3188 3187\nf 3228 3229 3186 3185\nf 3226 3227 3184 3183\nf 3224 3225 3182 3181\nf 3222 3223 3212 3211\nf 3220 3221 3210 3209\nf 3218 3219 3208 3207\nf 3216 3217 3206 3205\nf 3214 3215 3204 3203\nf 3213 3214 3203 3202\nf 3215 3216 3205 3204\nf 3217 3218 3207 3206\nf 3219 3220 3209 3208\nf 3221 3222 3211 3210\nf 3223 3224 3181 3212\nf 3225 3226 3183 3182\nf 3227 3228 3185 3184\nf 3229 3230 3187 3186\nf 3231 3232 3189 3188\nf 3233 3234 3191 3190\nf 3235 3236 3193 3192\nf 3237 3238 3195 3194\nf 3239 3240 3197 3196\nf 3241 3242 3199 3198\nf 3243 3244 3201 3200\nf 3275 3276 3241 3240\nf 3273 3274 3239 3238\nf 3271 3272 3237 3236\nf 3269 3270 3235 3234\nf 3267 3268 3233 3232\nf 3265 3266 3231 3230\nf 3263 3264 3229 3228\nf 3261 3262 3227 3226\nf 3259 3260 3225 3224\nf 3257 3258 3223 3222\nf 3255 3256 3221 3220\nf 3253 3254 3219 3218\nf 3251 3252 3217 3216\nf 3249 3250 3215 3214\nf 3247 3248 3213 3244\nf 3245 3246 3243 3242\nf 3246 3247 3244 3243\nf 3248 3249 3214 3213\nf 3250 3251 3216 3215\nf 3252 3253 3218 3217\nf 3254 3255 3220 3219\nf 3256 3257 3222 3221\nf 3258 3259 3224 3223\nf 3260 3261 3226 3225\nf 3262 3263 3228 3227\nf 3264 3265 3230 3229\nf 3266 3267 3232 3231\nf 3268 3269 3234 3233\nf 3270 3271 3236 3235\nf 3272 3273 3238 3237\nf 3274 3275 3240 3239\nf 3276 3245 3242 3241\nf 3308 3277 3274 3273\nf 3306 3307 3272 3271\nf 3304 3305 3270 3269\nf 3302 3303 3268 3267\nf 3300 3301 3266 3265\nf 3298 3299 3264 3263\nf 3296 3297 3262 3261\nf 3294 3295 3260 3259\nf 3292 3293 3258 3257\nf 3290 3291 3256 3255\nf 3288 3289 3254 3253\nf 3286 3287 3252 3251\nf 3284 3285 3250 3249\nf 3282 3283 3248 3247\nf 3280 3281 3246 3245\nf 3278 3279 3276 3275\nf 3277 3278 3275 3274\nf 3279 3280 3245 3276\nf 3281 3282 3247 3246\nf 3283 3284 3249 3248\nf 3285 3286 3251 3250\nf 3287 3288 3253 3252\nf 3289 3290 3255 3254\nf 3291 3292 3257 3256\nf 3293 3294 3259 3258\nf 3295 3296 3261 3260\nf 3297 3298 3263 3262\nf 3299 3300 3265 3264\nf 3301 3302 3267 3266\nf 3303 3304 3269 3268\nf 3305 3306 3271 3270\nf 3307 3308 3273 3272\nf 3339 3340 3305 3304\nf 3337 3338 3303 3302\nf 3335 3336 3301 3300\nf 3333 3334 3299 3298\nf 3331 3332 3297 3296\nf 3329 3330 3295 3294\nf 3327 3328 3293 3292\nf 3325 3326 3291 3290\nf 3323 3324 3289 3288\nf 3321 3322 3287 3286\nf 3319 3320 3285 3284\nf 3317 3318 3283 3282\nf 3315 3316 3281 3280\nf 3313 3314 3279 3278\nf 3311 3312 3277 3308\nf 3309 3310 3307 3306\nf 3310 3311 3308 3307\nf 3312 3313 3278 3277\nf 3314 3315 3280 3279\nf 3316 3317 3282 3281\nf 3318 3319 3284 3283\nf 3320 3321 3286 3285\nf 3322 3323 3288 3287\nf 3324 3325 3290 3289\nf 3326 3327 3292 3291\nf 3328 3329 3294 3293\nf 3330 3331 3296 3295\nf 3332 3333 3298 3297\nf 3334 3335 3300 3299\nf 3336 3337 3302 3301\nf 3338 3339 3304 3303\nf 3340 3309 3306 3305\nf 4434 4433 4495 4496\nf 4494 4493 4491 4492\nf 4490 4489 4487 4488\nf 4486 4485 4483 4484\nf 4482 4481 4479 4480\nf 4478 4477 4475 4476\nf 4474 4473 4471 4472\nf 4470 4469 4467 4468\nf 4466 4465 4463 4464\nf 4462 4461 4459 4460\nf 4458 4457 4455 4456\nf 4454 4453 4451 4452\nf 4450 4449 4447 4448\nf 4446 4445 4443 4444\nf 4442 4441 4439 4440\nf 4438 4437 4435 4436\nf 4436 4435 4433 4434\nf 4440 4439 4437 4438\nf 4444 4443 4441 4442\nf 4448 4447 4445 4446\nf 4452 4451 4449 4450\nf 4456 4455 4453 4454\nf 4460 4459 4457 4458\nf 4464 4463 4461 4462\nf 4468 4467 4465 4466\nf 4472 4471 4469 4470\nf 4476 4475 4473 4474\nf 4480 4479 4477 4478\nf 4484 4483 4481 4482\nf 4488 4487 4485 4486\nf 4492 4491 4489 4490\nf 4496 4495 4493 4494\nf 4528 4497 4496 4494\nf 4526 4527 4492 4490\nf 4524 4525 4488 4486\nf 4522 4523 4484 4482\nf 4520 4521 4480 4478\nf 4518 4519 4476 4474\nf 4516 4517 4472 4470\nf 4514 4515 4468 4466\nf 4512 4513 4464 4462\nf 4510 4511 4460 4458\nf 4508 4509 4456 4454\nf 4506 4507 4452 4450\nf 4504 4505 4448 4446\nf 4502 4503 4444 4442\nf 4500 4501 4440 4438\nf 4498 4499 4436 4434\nf 4497 4498 4434 4496\nf 4499 4500 4438 4436\nf 4501 4502 4442 4440\nf 4503 4504 4446 4444\nf 4505 4506 4450 4448\nf 4507 4508 4454 4452\nf 4509 4510 4458 4456\nf 4511 4512 4462 4460\nf 4513 4514 4466 4464\nf 4515 4516 4470 4468\nf 4517 4518 4474 4472\nf 4519 4520 4478 4476\nf 4521 4522 4482 4480\nf 4523 4524 4486 4484\nf 4525 4526 4490 4488\nf 4527 4528 4494 4492\nf 4560 4529 4518 4517\nf 4558 4559 4516 4515\nf 4556 4557 4514 4513\nf 4554 4555 4512 4511\nf 4552 4553 4510 4509\nf 4550 4551 4508 4507\nf 4548 4549 4506 4505\nf 4546 4547 4504 4503\nf 4544 4545 4502 4501\nf 4542 4543 4500 4499\nf 4540 4541 4498 4497\nf 4538 4539 4528 4527\nf 4536 4537 4526 4525\nf 4534 4535 4524 4523\nf 4532 4533 4522 4521\nf 4530 4531 4520 4519\nf 4529 4530 4519 4518\nf 4531 4532 4521 4520\nf 4533 4534 4523 4522\nf 4535 4536 4525 4524\nf 4537 4538 4527 4526\nf 4539 4540 4497 4528\nf 4541 4542 4499 4498\nf 4543 4544 4501 4500\nf 4545 4546 4503 4502\nf 4547 4548 4505 4504\nf 4549 4550 4507 4506\nf 4551 4552 4509 4508\nf 4553 4554 4511 4510\nf 4555 4556 4513 4512\nf 4557 4558 4515 4514\nf 4559 4560 4517 4516\nf 4591 4592 4557 4556\nf 4589 4590 4555 4554\nf 4587 4588 4553 4552\nf 4585 4586 4551 4550\nf 4583 4584 4549 4548\nf 4581 4582 4547 4546\nf 4579 4580 4545 4544\nf 4577 4578 4543 4542\nf 4575 4576 4541 4540\nf 4573 4574 4539 4538\nf 4571 4572 4537 4536\nf 4569 4570 4535 4534\nf 4567 4568 4533 4532\nf 4565 4566 4531 4530\nf 4563 4564 4529 4560\nf 4561 4562 4559 4558\nf 4562 4563 4560 4559\nf 4564 4565 4530 4529\nf 4566 4567 4532 4531\nf 4568 4569 4534 4533\nf 4570 4571 4536 4535\nf 4572 4573 4538 4537\nf 4574 4575 4540 4539\nf 4576 4577 4542 4541\nf 4578 4579 4544 4543\nf 4580 4581 4546 4545\nf 4582 4583 4548 4547\nf 4584 4585 4550 4549\nf 4586 4587 4552 4551\nf 4588 4589 4554 4553\nf 4590 4591 4556 4555\nf 4592 4561 4558 4557\nf 4624 4593 4590 4589\nf 4622 4623 4588 4587\nf 4620 4621 4586 4585\nf 4618 4619 4584 4583\nf 4616 4617 4582 4581\nf 4614 4615 4580 4579\nf 4612 4613 4578 4577\nf 4610 4611 4576 4575\nf 4608 4609 4574 4573\nf 4606 4607 4572 4571\nf 4604 4605 4570 4569\nf 4602 4603 4568 4567\nf 4600 4601 4566 4565\nf 4598 4599 4564 4563\nf 4596 4597 4562 4561\nf 4594 4595 4592 4591\nf 4593 4594 4591 4590\nf 4595 4596 4561 4592\nf 4597 4598 4563 4562\nf 4599 4600 4565 4564\nf 4601 4602 4567 4566\nf 4603 4604 4569 4568\nf 4605 4606 4571 4570\nf 4607 4608 4573 4572\nf 4609 4610 4575 4574\nf 4611 4612 4577 4576\nf 4613 4614 4579 4578\nf 4615 4616 4581 4580\nf 4617 4618 4583 4582\nf 4619 4620 4585 4584\nf 4621 4622 4587 4586\nf 4623 4624 4589 4588\nf 4655 4656 4621 4620\nf 4653 4654 4619 4618\nf 4651 4652 4617 4616\nf 4649 4650 4615 4614\nf 4647 4648 4613 4612\nf 4645 4646 4611 4610\nf 4643 4644 4609 4608\nf 4641 4642 4607 4606\nf 4639 4640 4605 4604\nf 4637 4638 4603 4602\nf 4635 4636 4601 4600\nf 4633 4634 4599 4598\nf 4631 4632 4597 4596\nf 4629 4630 4595 4594\nf 4627 4628 4593 4624\nf 4625 4626 4623 4622\nf 4626 4627 4624 4623\nf 4628 4629 4594 4593\nf 4630 4631 4596 4595\nf 4632 4633 4598 4597\nf 4634 4635 4600 4599\nf 4636 4637 4602 4601\nf 4638 4639 4604 4603\nf 4640 4641 4606 4605\nf 4642 4643 4608 4607\nf 4644 4645 4610 4609\nf 4646 4647 4612 4611\nf 4648 4649 4614 4613\nf 4650 4651 4616 4615\nf 4652 4653 4618 4617\nf 4654 4655 4620 4619\nf 4656 4625 4622 4621\nf 5750 5749 5811 5812\nf 5810 5809 5807 5808\nf 5806 5805 5803 5804\nf 5802 5801 5799 5800\nf 5798 5797 5795 5796\nf 5794 5793 5791 5792\nf 5790 5789 5787 5788\nf 5786 5785 5783 5784\nf 5782 5781 5779 5780\nf 5778 5777 5775 5776\nf 5774 5773 5771 5772\nf 5770 5769 5767 5768\nf 5766 5765 5763 5764\nf 5762 5761 5759 5760\nf 5758 5757 5755 5756\nf 5754 5753 5751 5752\nf 5752 5751 5749 5750\nf 5756 5755 5753 5754\nf 5760 5759 5757 5758\nf 5764 5763 5761 5762\nf 5768 5767 5765 5766\nf 5772 5771 5769 5770\nf 5776 5775 5773 5774\nf 5780 5779 5777 5778\nf 5784 5783 5781 5782\nf 5788 5787 5785 5786\nf 5792 5791 5789 5790\nf 5796 5795 5793 5794\nf 5800 5799 5797 5798\nf 5804 5803 5801 5802\nf 5808 5807 5805 5806\nf 5812 5811 5809 5810\nf 5844 5813 5812 5810\nf 5842 5843 5808 5806\nf 5840 5841 5804 5802\nf 5838 5839 5800 5798\nf 5836 5837 5796 5794\nf 5834 5835 5792 5790\nf 5832 5833 5788 5786\nf 5830 5831 5784 5782\nf 5828 5829 5780 5778\nf 5826 5827 5776 5774\nf 5824 5825 5772 5770\nf 5822 5823 5768 5766\nf 5820 5821 5764 5762\nf 5818 5819 5760 5758\nf 5816 5817 5756 5754\nf 5814 5815 5752 5750\nf 5813 5814 5750 5812\nf 5815 5816 5754 5752\nf 5817 5818 5758 5756\nf 5819 5820 5762 5760\nf 5821 5822 5766 5764\nf 5823 5824 5770 5768\nf 5825 5826 5774 5772\nf 5827 5828 5778 5776\nf 5829 5830 5782 5780\nf 5831 5832 5786 5784\nf 5833 5834 5790 5788\nf 5835 5836 5794 5792\nf 5837 5838 5798 5796\nf 5839 5840 5802 5800\nf 5841 5842 5806 5804\nf 5843 5844 5810 5808\nf 5876 5845 5834 5833\nf 5874 5875 5832 5831\nf 5872 5873 5830 5829\nf 5870 5871 5828 5827\nf 5868 5869 5826 5825\nf 5866 5867 5824 5823\nf 5864 5865 5822 5821\nf 5862 5863 5820 5819\nf 5860 5861 5818 5817\nf 5858 5859 5816 5815\nf 5856 5857 5814 5813\nf 5854 5855 5844 5843\nf 5852 5853 5842 5841\nf 5850 5851 5840 5839\nf 5848 5849 5838 5837\nf 5846 5847 5836 5835\nf 5845 5846 5835 5834\nf 5847 5848 5837 5836\nf 5849 5850 5839 5838\nf 5851 5852 5841 5840\nf 5853 5854 5843 5842\nf 5855 5856 5813 5844\nf 5857 5858 5815 5814\nf 5859 5860 5817 5816\nf 5861 5862 5819 5818\nf 5863 5864 5821 5820\nf 5865 5866 5823 5822\nf 5867 5868 5825 5824\nf 5869 5870 5827 5826\nf 5871 5872 5829 5828\nf 5873 5874 5831 5830\nf 5875 5876 5833 5832\nf 5907 5908 5873 5872\nf 5905 5906 5871 5870\nf 5903 5904 5869 5868\nf 5901 5902 5867 5866\nf 5899 5900 5865 5864\nf 5897 5898 5863 5862\nf 5895 5896 5861 5860\nf 5893 5894 5859 5858\nf 5891 5892 5857 5856\nf 5889 5890 5855 5854\nf 5887 5888 5853 5852\nf 5885 5886 5851 5850\nf 5883 5884 5849 5848\nf 5881 5882 5847 5846\nf 5879 5880 5845 5876\nf 5877 5878 5875 5874\nf 5878 5879 5876 5875\nf 5880 5881 5846 5845\nf 5882 5883 5848 5847\nf 5884 5885 5850 5849\nf 5886 5887 5852 5851\nf 5888 5889 5854 5853\nf 5890 5891 5856 5855\nf 5892 5893 5858 5857\nf 5894 5895 5860 5859\nf 5896 5897 5862 5861\nf 5898 5899 5864 5863\nf 5900 5901 5866 5865\nf 5902 5903 5868 5867\nf 5904 5905 5870 5869\nf 5906 5907 5872 5871\nf 5908 5877 5874 5873\nf 5940 5909 5906 5905\nf 5938 5939 5904 5903\nf 5936 5937 5902 5901\nf 5934 5935 5900 5899\nf 5932 5933 5898 5897\nf 5930 5931 5896 5895\nf 5928 5929 5894 5893\nf 5926 5927 5892 5891\nf 5924 5925 5890 5889\nf 5922 5923 5888 5887\nf 5920 5921 5886 5885\nf 5918 5919 5884 5883\nf 5916 5917 5882 5881\nf 5914 5915 5880 5879\nf 5912 5913 5878 5877\nf 5910 5911 5908 5907\nf 5909 5910 5907 5906\nf 5911 5912 5877 5908\nf 5913 5914 5879 5878\nf 5915 5916 5881 5880\nf 5917 5918 5883 5882\nf 5919 5920 5885 5884\nf 5921 5922 5887 5886\nf 5923 5924 5889 5888\nf 5925 5926 5891 5890\nf 5927 5928 5893 5892\nf 5929 5930 5895 5894\nf 5931 5932 5897 5896\nf 5933 5934 5899 5898\nf 5935 5936 5901 5900\nf 5937 5938 5903 5902\nf 5939 5940 5905 5904\nf 5971 5972 5937 5936\nf 5969 5970 5935 5934\nf 5967 5968 5933 5932\nf 5965 5966 5931 5930\nf 5963 5964 5929 5928\nf 5961 5962 5927 5926\nf 5959 5960 5925 5924\nf 5957 5958 5923 5922\nf 5955 5956 5921 5920\nf 5953 5954 5919 5918\nf 5951 5952 5917 5916\nf 5949 5950 5915 5914\nf 5947 5948 5913 5912\nf 5945 5946 5911 5910\nf 5943 5944 5909 5940\nf 5941 5942 5939 5938\nf 5942 5943 5940 5939\nf 5944 5945 5910 5909\nf 5946 5947 5912 5911\nf 5948 5949 5914 5913\nf 5950 5951 5916 5915\nf 5952 5953 5918 5917\nf 5954 5955 5920 5919\nf 5956 5957 5922 5921\nf 5958 5959 5924 5923\nf 5960 5961 5926 5925\nf 5962 5963 5928 5927\nf 5964 5965 5930 5929\nf 5966 5967 5932 5931\nf 5968 5969 5934 5933\nf 5970 5971 5936 5935\nf 5972 5941 5938 5937\ng vholes\nf 5974 5973 6019 6020\nf 6018 6017 6015 6016\nf 6014 6013 6011 6012\nf 6010 6009 6007 6008\nf 6006 6005 6003 6004\nf 6002 6001 5999 6000\nf 5998 5997 5995 5996\nf 5994 5993 5991 5992\nf 5990 5989 5987 5988\nf 5986 5985 5983 5984\nf 5982 5981 5979 5980\nf 5978 5977 5975 5976\nf 5976 5975 5973 5974\nf 5980 5979 5977 5978\nf 5984 5983 5981 5982\nf 5988 5987 5985 5986\nf 5992 5991 5989 5990\nf 5996 5995 5993 5994\nf 6000 5999 5997 5998\nf 6004 6003 6001 6002\nf 6008 6007 6005 6006\nf 6012 6011 6009 6010\nf 6016 6015 6013 6014\nf 6020 6019 6017 6018\nf 6164 6162 6160 6158 6156 6154 6152 6150 6148 6146 6144 6142 6140 6138 6136 6134 6132 6130 6128 6126 6124 6122 6120 6118\nf 6071 6073 6075 6077 6079 6081 6083 6085 6087 6089 6091 6093 6095 6097 6099 6101 6103 6105 6107 6109 6111 6113 6115 6069\nf 6068 6066 6064 6062 6060 6058 6056 6054 6052 6050 6048 6046 6044 6042 6040 6038 6036 6034 6032 6030 6028 6026 6024 6022\nf 5975 5977 5979 5981 5983 5985 5987 5989 5991 5993 5995 5997 5999 6001 6003 6005 6007 6009 6011 6013 6015 6017 6019 5973\nf 6020 6018 6016 6014 6012 6010 6008 6006 6004 6002 6000 5998 5996 5994 5992 5990 5988 5986 5984 5982 5980 5978 5976 5974\nf 6023 6025 6027 6029 6031 6033 6035 6037 6039 6041 6043 6045 6047 6049 6051 6053 6055 6057 6059 6061 6063 6065 6067 6021\nf 6116 6114 6112 6110 6108 6106 6104 6102 6100 6098 6096 6094 6092 6090 6088 6086 6084 6082 6080 6078 6076 6074 6072 6070\nf 6119 6121 6123 6125 6127 6129 6131 6133 6135 6137 6139 6141 6143 6145 6147 6149 6151 6153 6155 6157 6159 6161 6163 6117\nf 6022 6021 6067 6068\nf 6066 6065 6063 6064\nf 6062 6061 6059 6060\nf 6058 6057 6055 6056\nf 6054 6053 6051 6052\nf 6050 6049 6047 6048\nf 6046 6045 6043 6044\nf 6042 6041 6039 6040\nf 6038 6037 6035 6036\nf 6034 6033 6031 6032\nf 6030 6029 6027 6028\nf 6026 6025 6023 6024\nf 6024 6023 6021 6022\nf 6028 6027 6025 6026\nf 6032 6031 6029 6030\nf 6036 6035 6033 6034\nf 6040 6039 6037 6038\nf 6044 6043 6041 6042\nf 6048 6047 6045 6046\nf 6052 6051 6049 6050\nf 6056 6055 6053 6054\nf 6060 6059 6057 6058\nf 6064 6063 6061 6062\nf 6068 6067 6065 6066\nf 6116 6115 6113 6114\nf 6112 6111 6109 6110\nf 6108 6107 6105 6106\nf 6104 6103 6101 6102\nf 6100 6099 6097 6098\nf 6096 6095 6093 6094\nf 6092 6091 6089 6090\nf 6088 6087 6085 6086\nf 6084 6083 6081 6082\nf 6080 6079 6077 6078\nf 6076 6075 6073 6074\nf 6072 6071 6069 6070\nf 6074 6073 6071 6072\nf 6078 6077 6075 6076\nf 6082 6081 6079 6080\nf 6086 6085 6083 6084\nf 6090 6089 6087 6088\nf 6094 6093 6091 6092\nf 6098 6097 6095 6096\nf 6102 6101 6099 6100\nf 6106 6105 6103 6104\nf 6110 6109 6107 6108\nf 6114 6113 6111 6112\nf 6070 6069 6115 6116\nf 6118 6117 6163 6164\nf 6162 6161 6159 6160\nf 6158 6157 6155 6156\nf 6154 6153 6151 6152\nf 6150 6149 6147 6148\nf 6146 6145 6143 6144\nf 6142 6141 6139 6140\nf 6138 6137 6135 6136\nf 6134 6133 6131 6132\nf 6130 6129 6127 6128\nf 6126 6125 6123 6124\nf 6122 6121 6119 6120\nf 6120 6119 6117 6118\nf 6124 6123 6121 6122\nf 6128 6127 6125 6126\nf 6132 6131 6129 6130\nf 6136 6135 6133 6134\nf 6140 6139 6137 6138\nf 6144 6143 6141 6142\nf 6148 6147 6145 6146\nf 6152 6151 6149 6150\nf 6156 6155 6153 6154\nf 6160 6159 6157 6158\nf 6164 6163 6161 6162\ng blow\nf 6188 6187 6186 6185 6184 6183 6182 6181 6180 6179 6178 6177 6176 6175 6174 6173 6172 6171 6170 6169 6168 6167 6166 6165\nf 7461 7484 7460 7437\nf 7483 7482 7458 7459\nf 7481 7480 7456 7457\nf 7479 7478 7454 7455\nf 7477 7476 7452 7453\nf 7475 7474 7450 7451\nf 7471 7470 7446 7447\nf 7469 7468 7444 7445\nf 7467 7466 7442 7443\nf 7465 7464 7440 7441\nf 7463 7462 7438 7439\nf 7437 7460 7436 7413\nf 7459 7458 7434 7435\nf 7457 7456 7432 7433\nf 7455 7454 7430 7431\nf 7453 7452 7428 7429\nf 7451 7450 7426 7427\nf 7449 7448 7424 7425\nf 7447 7446 7422 7423\nf 7445 7444 7420 7421\nf 7443 7442 7418 7419\nf 7441 7440 7416 7417\nf 7439 7438 7414 7415\nf 7413 7436 7412 7389\nf 7435 7434 7410 7411\nf 7433 7432 7408 7409\nf 7431 7430 7406 7407\nf 7429 7428 7404 7405\nf 7427 7426 7402 7403\nf 7425 7424 7400 7401\nf 7423 7422 7398 7399\nf 7421 7420 7396 7397\nf 7419 7418 7394 7395\nf 7417 7416 7392 7393\nf 7415 7414 7390 7391\nf 7389 7412 7388 7365\nf 7411 7410 7386 7387\nf 7409 7408 7384 7385\nf 7407 7406 7382 7383\nf 7405 7404 7380 7381\nf 7403 7402 7378 7379\nf 7401 7400 7376 7377\nf 7399 7398 7374 7375\nf 7397 7396 7372 7373\nf 7395 7394 7370 7371\nf 7393 7392 7368 7369\nf 7391 7390 7366 7367\nf 7365 7388 7364 7341\nf 7387 7386 7362 7363\nf 7385 7384 7360 7361\nf 7383 7382 7358 7359\nf 7381 7380 7356 7357\nf 7379 7378 7354 7355\nf 7377 7376 7352 7353\nf 7375 7374 7350 7351\nf 7373 7372 7348 7349\nf 7371 7370 7346 7347\nf 7369 7368 7344 7345\nf 7367 7366 7342 7343\nf 7341 7364 7340 7317\nf 7363 7362 7338 7339\nf 7361 7360 7336 7337\nf 7359 7358 7334 7335\nf 7357 7356 7332 7333\nf 7355 7354 7330 7331\nf 7353 7352 7328 7329\nf 7351 7350 7326 7327\nf 7349 7348 7324 7325\nf 7347 7346 7322 7323\nf 7345 7344 7320 7321\nf 7343 7342 7318 7319\nf 7317 7340 7316 7293\nf 7339 7338 7314 7315\nf 7337 7336 7312 7313\nf 7335 7334 7310 7311\nf 7333 7332 7308 7309\nf 7331 7330 7306 7307\nf 7329 7328 7304 7305\nf 7327 7326 7302 7303\nf 7325 7324 7300 7301\nf 7323 7322 7298 7299\nf 7321 7320 7296 7297\nf 7319 7318 7294 7295\nf 7293 7316 7292 7269\nf 7315 7314 7290 7291\nf 7313 7312 7288 7289\nf 7311 7310 7286 7287\nf 7309 7308 7284 7285\nf 7307 7306 7282 7283\nf 7305 7304 7280 7281\nf 7303 7302 7278 7279\nf 7301 7300 7276 7277\nf 7299 7298 7274 7275\nf 7297 7296 7272 7273\nf 7295 7294 7270 7271\nf 7269 7292 7268 7245\nf 7291 7290 7266 7267\nf 7289 7288 7264 7265\nf 7287 7286 7262 7263\nf 7285 7284 7260 7261\nf 7283 7282 7258 7259\nf 7281 7280 7256 7257\nf 7279 7278 7254 7255\nf 7277 7276 7252 7253\nf 7275 7274 7250 7251\nf 7273 7272 7248 7249\nf 7271 7270 7246 7247\nf 7245 7268 7244 7221\nf 7267 7266 7242 7243\nf 7265 7264 7240 7241\nf 7263 7262 7238 7239\nf 7261 7260 7236 7237\nf 7259 7258 7234 7235\nf 7257 7256 7232 7233\nf 7255 7254 7230 7231\nf 7253 7252 7228 7229\nf 7251 7250 7226 7227\nf 7249 7248 7224 7225\nf 7247 7246 7222 7223\nf 7221 7244 7220 7197\nf 7243 7242 7218 7219\nf 7241 7240 7216 7217\nf 7239 7238 7214 7215\nf 7237 7236 7212 7213\nf 7235 7234 7210 7211\nf 7233 7232 7208 7209\nf 7231 7230 7206 7207\nf 7229 7228 7204 7205\nf 7227 7226 7202 7203\nf 7225 7224 7200 7201\nf 7223 7222 7198 7199\nf 7197 7220 7196 7173\nf 7219 7218 7194 7195\nf 7217 7216 7192 7193\nf 7215 7214 7190 7191\nf 7213 7212 7188 7189\nf 7211 7210 7186 7187\nf 7209 7208 7184 7185\nf 7207 7206 7182 7183\nf 7205 7204 7180 7181\nf 7203 7202 7178 7179\nf 7201 7200 7176 7177\nf 7199 7198 7174 7175\nf 7173 7196 7172 7149\nf 7195 7194 7170 7171\nf 7193 7192 7168 7169\nf 7191 7190 7166 7167\nf 7189 7188 7164 7165\nf 7187 7186 7162 7163\nf 7185 7184 7160 7161\nf 7183 7182 7158 7159\nf 7181 7180 7156 7157\nf 7179 7178 7154 7155\nf 7177 7176 7152 7153\nf 7175 7174 7150 7151\nf 7125 7148 7124 7101\nf 7147 7146 7122 7123\nf 7145 7144 7120 7121\nf 7143 7142 7118 7119\nf 7141 7140 7116 7117\nf 7139 7138 7114 7115\nf 7137 7136 7112 7113\nf 7135 7134 7110 7111\nf 7133 7132 7108 7109\nf 7131 7130 7106 7107\nf 7129 7128 7104 7105\nf 7127 7126 7102 7103\nf 7101 7124 7100 7077\nf 7123 7122 7098 7099\nf 7121 7120 7096 7097\nf 7119 7118 7094 7095\nf 7117 7116 7092 7093\nf 7115 7114 7090 7091\nf 7113 7112 7088 7089\nf 7111 7110 7086 7087\nf 7109 7108 7084 7085\nf 7107 7106 7082 7083\nf 7105 7104 7080 7081\nf 7103 7102 7078 7079\nf 7077 7100 7076 7053\nf 7099 7098 7074 7075\nf 7097 7096 7072 7073\nf 7095 7094 7070 7071\nf 7093 7092 7068 7069\nf 7091 7090 7066 7067\nf 7089 7088 7064 7065\nf 7087 7086 7062 7063\nf 7085 7084 7060 7061\nf 7083 7082 7058 7059\nf 7081 7080 7056 7057\nf 7079 7078 7054 7055\nf 7053 7076 7052 7029\nf 7075 7074 7050 7051\nf 7073 7072 7048 7049\nf 7071 7070 7046 7047\nf 7069 7068 7044 7045\nf 7067 7066 7042 7043\nf 7065 7064 7040 7041\nf 7063 7062 7038 7039\nf 7061 7060 7036 7037\nf 7059 7058 7034 7035\nf 7057 7056 7032 7033\nf 7055 7054 7030 7031\nf 7029 7052 7028 7005\nf 7051 7050 7026 7027\nf 7049 7048 7024 7025\nf 7047 7046 7022 7023\nf 7045 7044 7020 7021\nf 7043 7042 7018 7019\nf 7041 7040 7016 7017\nf 7039 7038 7014 7015\nf 7037 7036 7012 7013\nf 7035 7034 7010 7011\nf 7033 7032 7008 7009\nf 7031 7030 7006 7007\nf 7005 7028 7004 6981\nf 7027 7026 7002 7003\nf 7025 7024 7000 7001\nf 7023 7022 6998 6999\nf 7021 7020 6996 6997\nf 7019 7018 6994 6995\nf 7017 7016 6992 6993\nf 7015 7014 6990 6991\nf 7013 7012 6988 6989\nf 7011 7010 6986 6987\nf 7009 7008 6984 6985\nf 7007 7006 6982 6983\nf 6981 7004 6980 6957\nf 7003 7002 6978 6979\nf 7001 7000 6976 6977\nf 6999 6998 6974 6975\nf 6997 6996 6972 6973\nf 6995 6994 6970 6971\nf 6993 6992 6968 6969\nf 6991 6990 6966 6967\nf 6989 6988 6964 6965\nf 6987 6986 6962 6963\nf 6985 6984 6960 6961\nf 6983 6982 6958 6959\nf 6957 6980 6956 6933\nf 6979 6978 6954 6955\nf 6977 6976 6952 6953\nf 6975 6974 6950 6951\nf 6973 6972 6948 6949\nf 6971 6970 6946 6947\nf 6969 6968 6944 6945\nf 6967 6966 6942 6943\nf 6965 6964 6940 6941\nf 6963 6962 6938 6939\nf 6961 6960 6936 6937\nf 6959 6958 6934 6935\nf 6933 6956 6932 6909\nf 6955 6954 6930 6931\nf 6953 6952 6928 6929\nf 6951 6950 6926 6927\nf 6949 6948 6924 6925\nf 6947 6946 6922 6923\nf 6945 6944 6920 6921\nf 6943 6942 6918 6919\nf 6941 6940 6916 6917\nf 6939 6938 6914 6915\nf 6937 6936 6912 6913\nf 6935 6934 6910 6911\nf 6909 6932 6908 6885\nf 6931 6930 6906 6907\nf 6929 6928 6904 6905\nf 6927 6926 6902 6903\nf 6925 6924 6900 6901\nf 6923 6922 6898 6899\nf 6921 6920 6896 6897\nf 6919 6918 6894 6895\nf 6917 6916 6892 6893\nf 6915 6914 6890 6891\nf 6913 6912 6888 6889\nf 6911 6910 6886 6887\nf 6885 6908 6884 6861\nf 6907 6906 6882 6883\nf 6905 6904 6880 6881\nf 6903 6902 6878 6879\nf 6901 6900 6876 6877\nf 6899 6898 6874 6875\nf 6897 6896 6872 6873\nf 6895 6894 6870 6871\nf 6893 6892 6868 6869\nf 6891 6890 6866 6867\nf 6889 6888 6864 6865\nf 6887 6886 6862 6863\nf 6861 6884 6860 6837\nf 6883 6882 6858 6859\nf 6881 6880 6856 6857\nf 6879 6878 6854 6855\nf 6877 6876 6852 6853\nf 6875 6874 6850 6851\nf 6873 6872 6848 6849\nf 6871 6870 6846 6847\nf 6869 6868 6844 6845\nf 6867 6866 6842 6843\nf 6865 6864 6840 6841\nf 6863 6862 6838 6839\nf 6837 6860 6836 6813\nf 6859 6858 6834 6835\nf 6857 6856 6832 6833\nf 6855 6854 6830 6831\nf 6853 6852 6828 6829\nf 6851 6850 6826 6827\nf 6849 6848 6824 6825\nf 6847 6846 6822 6823\nf 6845 6844 6820 6821\nf 6843 6842 6818 6819\nf 6841 6840 6816 6817\nf 6839 6838 6814 6815\nf 6813 6836 6812 6789\nf 6835 6834 6810 6811\nf 6833 6832 6808 6809\nf 6831 6830 6806 6807\nf 6829 6828 6804 6805\nf 6827 6826 6802 6803\nf 6825 6824 6800 6801\nf 6823 6822 6798 6799\nf 6821 6820 6796 6797\nf 6819 6818 6794 6795\nf 6817 6816 6792 6793\nf 6815 6814 6790 6791\nf 6789 6812 6788 6765\nf 6811 6810 6786 6787\nf 6809 6808 6784 6785\nf 6807 6806 6782 6783\nf 6805 6804 6780 6781\nf 6803 6802 6778 6779\nf 6801 6800 6776 6777\nf 6799 6798 6774 6775\nf 6797 6796 6772 6773\nf 6795 6794 6770 6771\nf 6793 6792 6768 6769\nf 6791 6790 6766 6767\nf 6765 6788 6764 6741\nf 6787 6786 6762 6763\nf 6785 6784 6760 6761\nf 6783 6782 6758 6759\nf 6781 6780 6756 6757\nf 6779 6778 6754 6755\nf 6777 6776 6752 6753\nf 6775 6774 6750 6751\nf 6773 6772 6748 6749\nf 6771 6770 6746 6747\nf 6769 6768 6744 6745\nf 6767 6766 6742 6743\nf 6741 6764 6740 6717\nf 6763 6762 6738 6739\nf 6761 6760 6736 6737\nf 6759 6758 6734 6735\nf 6757 6756 6732 6733\nf 6755 6754 6730 6731\nf 6753 6752 6728 6729\nf 6751 6750 6726 6727\nf 6749 6748 6724 6725\nf 6747 6746 6722 6723\nf 6745 6744 6720 6721\nf 6743 6742 6718 6719\nf 6716 6715 6691 6692\nf 6714 6713 6689 6690\nf 6712 6711 6687 6688\nf 6710 6709 6685 6686\nf 6708 6707 6683 6684\nf 6706 6705 6681 6682\nf 6704 6703 6679 6680\nf 6702 6701 6677 6678\nf 6700 6699 6675 6676\nf 6698 6697 6673 6674\nf 6696 6695 6671 6672\nf 6694 6693 6669 6670\nf 6692 6691 6667 6668\nf 6690 6689 6665 6666\nf 6688 6687 6663 6664\nf 6686 6685 6661 6662\nf 6684 6683 6659 6660\nf 6682 6681 6657 6658\nf 6680 6679 6655 6656\nf 6678 6677 6653 6654\nf 6676 6675 6651 6652\nf 6674 6673 6649 6650\nf 6672 6671 6647 6648\nf 6670 6669 6645 6646\nf 6668 6667 6643 6644\nf 6666 6665 6641 6642\nf 6664 6663 6639 6640\nf 6662 6661 6637 6638\nf 6660 6659 6635 6636\nf 6658 6657 6633 6634\nf 6656 6655 6631 6632\nf 6654 6653 6629 6630\nf 6652 6651 6627 6628\nf 6650 6649 6625 6626\nf 6648 6647 6623 6624\nf 6646 6645 6621 6622\nf 6644 6643 6619 6620\nf 6642 6641 6617 6618\nf 6640 6639 6615 6616\nf 6638 6637 6613 6614\nf 6636 6635 6611 6612\nf 6634 6633 6609 6610\nf 6632 6631 6607 6608\nf 6630 6629 6605 6606\nf 6628 6627 6603 6604\nf 6626 6625 6601 6602\nf 6624 6623 6599 6600\nf 6622 6621 6597 6598\nf 6620 6619 6595 6596\nf 6618 6617 6593 6594\nf 6616 6615 6591 6592\nf 6614 6613 6589 6590\nf 6612 6611 6587 6588\nf 6610 6609 6585 6586\nf 6608 6607 6583 6584\nf 6606 6605 6581 6582\nf 6604 6603 6579 6580\nf 6602 6601 6577 6578\nf 6600 6599 6575 6576\nf 6598 6597 6573 6574\nf 6596 6595 6571 6572\nf 6594 6593 6569 6570\nf 6592 6591 6567 6568\nf 6590 6589 6565 6566\nf 6588 6587 6563 6564\nf 6586 6585 6561 6562\nf 6584 6583 6559 6560\nf 6582 6581 6557 6558\nf 6580 6579 6555 6556\nf 6578 6577 6553 6554\nf 6576 6575 6551 6552\nf 6574 6573 6549 6550\nf 6572 6571 6547 6548\nf 6570 6569 6545 6546\nf 6568 6567 6543 6544\nf 6566 6565 6541 6542\nf 6564 6563 6539 6540\nf 6562 6561 6537 6538\nf 6560 6559 6535 6536\nf 6558 6557 6533 6534\nf 6556 6555 6531 6532\nf 6554 6553 6529 6530\nf 6552 6551 6527 6528\nf 6550 6549 6525 6526\nf 6548 6547 6523 6524\nf 6546 6545 6521 6522\nf 6544 6543 6519 6520\nf 6542 6541 6517 6518\nf 6540 6539 6515 6516\nf 6538 6537 6513 6514\nf 6536 6535 6511 6512\nf 6534 6533 6509 6510\nf 6532 6531 6507 6508\nf 6530 6529 6505 6506\nf 6528 6527 6503 6504\nf 6526 6525 6501 6502\nf 6524 6523 6499 6500\nf 6522 6521 6497 6498\nf 6520 6519 6495 6496\nf 6518 6517 6493 6494\nf 6516 6515 6491 6492\nf 6514 6513 6489 6490\nf 6512 6511 6487 6488\nf 6510 6509 6485 6486\nf 6508 6507 6483 6484\nf 6506 6505 6481 6482\nf 6504 6503 6479 6480\nf 6502 6501 6477 6478\nf 6500 6499 6475 6476\nf 6498 6497 6473 6474\nf 6496 6495 6471 6472\nf 6494 6493 6469 6470\nf 6492 6491 6467 6468\nf 6490 6489 6465 6466\nf 6488 6487 6463 6464\nf 6486 6485 6461 6462\nf 6484 6483 6459 6460\nf 6482 6481 6457 6458\nf 6480 6479 6455 6456\nf 6478 6477 6453 6454\nf 6476 6475 6451 6452\nf 6474 6473 6449 6450\nf 6472 6471 6447 6448\nf 6470 6469 6445 6446\nf 6468 6467 6443 6444\nf 6466 6465 6441 6442\nf 6464 6463 6439 6440\nf 6462 6461 6437 6438\nf 6460 6459 6435 6436\nf 6458 6457 6433 6434\nf 6456 6455 6431 6432\nf 6454 6453 6429 6430\nf 6452 6451 6427 6428\nf 6450 6449 6425 6426\nf 6448 6447 6423 6424\nf 6446 6445 6421 6422\nf 6444 6443 6419 6420\nf 6442 6441 6417 6418\nf 6440 6439 6415 6416\nf 6438 6437 6413 6414\nf 6436 6435 6411 6412\nf 6434 6433 6409 6410\nf 6432 6431 6407 6408\nf 6430 6429 6405 6406\nf 6428 6427 6403 6404\nf 6426 6425 6401 6402\nf 6424 6423 6399 6400\nf 6422 6421 6397 6398\nf 6420 6419 6395 6396\nf 6418 6417 6393 6394\nf 6416 6415 6391 6392\nf 6414 6413 6389 6390\nf 6412 6411 6387 6388\nf 6410 6409 6385 6386\nf 6408 6407 6383 6384\nf 6406 6405 6381 6382\nf 6404 6403 6379 6380\nf 6402 6401 6377 6378\nf 6400 6399 6375 6376\nf 6398 6397 6373 6374\nf 6396 6395 6371 6372\nf 6394 6393 6369 6370\nf 6392 6391 6367 6368\nf 6390 6389 6365 6366\nf 6388 6387 6363 6364\nf 6386 6385 6361 6362\nf 6384 6383 6359 6360\nf 6382 6381 6357 6358\nf 6380 6379 6355 6356\nf 6378 6377 6353 6354\nf 6376 6375 6351 6352\nf 6374 6373 6349 6350\nf 6372 6371 6347 6348\nf 6370 6369 6345 6346\nf 6368 6367 6343 6344\nf 6366 6365 6341 6342\nf 6364 6363 6339 6340\nf 6362 6361 6337 6338\nf 6360 6359 6335 6336\nf 6358 6357 6333 6334\nf 6356 6355 6331 6332\nf 6354 6353 6329 6330\nf 6352 6351 6327 6328\nf 6350 6349 6325 6326\nf 6348 6347 6323 6324\nf 6346 6345 6321 6322\nf 6344 6343 6319 6320\nf 6342 6341 6317 6318\nf 6340 6339 6315 6316\nf 6338 6337 6313 6314\nf 6336 6335 6311 6312\nf 6334 6333 6309 6310\nf 6332 6331 6307 6308\nf 6330 6329 6305 6306\nf 6328 6327 6303 6304\nf 6326 6325 6301 6302\nf 6324 6323 6299 6300\nf 6322 6321 6297 6298\nf 6320 6319 6295 6296\nf 6318 6317 6293 6294\nf 6316 6315 6291 6292\nf 6314 6313 6289 6290\nf 6312 6311 6287 6288\nf 6310 6309 6285 6286\nf 6308 6307 6283 6284\nf 6306 6305 6281 6282\nf 6304 6303 6279 6280\nf 6302 6301 6277 6278\nf 6300 6299 6275 6276\nf 6298 6297 6273 6274\nf 6296 6295 6271 6272\nf 6294 6293 6269 6270\nf 6292 6291 6267 6268\nf 6290 6289 6265 6266\nf 6288 6287 6263 6264\nf 6286 6285 6261 6262\nf 6284 6283 6259 6260\nf 6282 6281 6257 6258\nf 6280 6279 6255 6256\nf 6278 6277 6253 6254\nf 6276 6275 6251 6252\nf 6274 6273 6249 6250\nf 6272 6271 6247 6248\nf 6270 6269 6245 6246\nf 6268 6267 6243 6244\nf 6266 6265 6241 6242\nf 6264 6263 6239 6240\nf 6262 6261 6237 6238\nf 6260 6259 6235 6236\nf 6258 6257 6233 6234\nf 6256 6255 6231 6232\nf 6254 6253 6229 6230\nf 6252 6251 6227 6228\nf 6250 6249 6225 6226\nf 6248 6247 6223 6224\nf 6246 6245 6221 6222\nf 6244 6243 6219 6220\nf 6242 6241 6217 6218\nf 6240 6239 6215 6216\nf 6238 6237 6213 6214\nf 6236 6235 6211 6212\nf 6234 6233 6209 6210\nf 6232 6231 6207 6208\nf 6230 6229 6205 6206\nf 6228 6227 6203 6204\nf 6226 6225 6201 6202\nf 6224 6223 6199 6200\nf 6222 6221 6197 6198\nf 6220 6219 6195 6196\nf 6218 6217 6193 6194\nf 6216 6215 6191 6192\nf 6214 6213 6189 6190\nf 6212 6211 6187 6188\nf 6210 6209 6185 6186\nf 6208 6207 6183 6184\nf 6206 6205 6181 6182\nf 6204 6203 6179 6180\nf 6202 6201 6177 6178\nf 6200 6199 6175 6176\nf 6198 6197 6173 6174\nf 6196 6195 6171 6172\nf 6194 6193 6169 6170\nf 6192 6191 6167 6168\nf 6190 6189 6165 6166\nf 6191 6190 6166 6167\nf 6193 6192 6168 6169\nf 6195 6194 6170 6171\nf 6197 6196 6172 6173\nf 6199 6198 6174 6175\nf 6201 6200 6176 6177\nf 6203 6202 6178 6179\nf 6205 6204 6180 6181\nf 6207 6206 6182 6183\nf 6209 6208 6184 6185\nf 6211 6210 6186 6187\nf 6189 6212 6188 6165\nf 6215 6214 6190 6191\nf 6217 6216 6192 6193\nf 6219 6218 6194 6195\nf 6221 6220 6196 6197\nf 6223 6222 6198 6199\nf 6225 6224 6200 6201\nf 6227 6226 6202 6203\nf 6229 6228 6204 6205\nf 6231 6230 6206 6207\nf 6233 6232 6208 6209\nf 6235 6234 6210 6211\nf 6213 6236 6212 6189\nf 6239 6238 6214 6215\nf 6241 6240 6216 6217\nf 6243 6242 6218 6219\nf 6245 6244 6220 6221\nf 6247 6246 6222 6223\nf 6249 6248 6224 6225\nf 6251 6250 6226 6227\nf 6253 6252 6228 6229\nf 6255 6254 6230 6231\nf 6257 6256 6232 6233\nf 6259 6258 6234 6235\nf 6237 6260 6236 6213\nf 6263 6262 6238 6239\nf 6265 6264 6240 6241\nf 6267 6266 6242 6243\nf 6269 6268 6244 6245\nf 6271 6270 6246 6247\nf 6273 6272 6248 6249\nf 6275 6274 6250 6251\nf 6277 6276 6252 6253\nf 6279 6278 6254 6255\nf 6281 6280 6256 6257\nf 6283 6282 6258 6259\nf 6261 6284 6260 6237\nf 6287 6286 6262 6263\nf 6289 6288 6264 6265\nf 6291 6290 6266 6267\nf 6293 6292 6268 6269\nf 6295 6294 6270 6271\nf 6297 6296 6272 6273\nf 6299 6298 6274 6275\nf 6301 6300 6276 6277\nf 6303 6302 6278 6279\nf 6305 6304 6280 6281\nf 6307 6306 6282 6283\nf 6285 6308 6284 6261\nf 6311 6310 6286 6287\nf 6313 6312 6288 6289\nf 6315 6314 6290 6291\nf 6317 6316 6292 6293\nf 6319 6318 6294 6295\nf 6321 6320 6296 6297\nf 6323 6322 6298 6299\nf 6325 6324 6300 6301\nf 6327 6326 6302 6303\nf 6329 6328 6304 6305\nf 6331 6330 6306 6307\nf 6309 6332 6308 6285\nf 6335 6334 6310 6311\nf 6337 6336 6312 6313\nf 6339 6338 6314 6315\nf 6341 6340 6316 6317\nf 6343 6342 6318 6319\nf 6345 6344 6320 6321\nf 6347 6346 6322 6323\nf 6349 6348 6324 6325\nf 6351 6350 6326 6327\nf 6353 6352 6328 6329\nf 6355 6354 6330 6331\nf 6333 6356 6332 6309\nf 6359 6358 6334 6335\nf 6361 6360 6336 6337\nf 6363 6362 6338 6339\nf 6365 6364 6340 6341\nf 6367 6366 6342 6343\nf 6369 6368 6344 6345\nf 6371 6370 6346 6347\nf 6373 6372 6348 6349\nf 6375 6374 6350 6351\nf 6377 6376 6352 6353\nf 6379 6378 6354 6355\nf 6357 6380 6356 6333\nf 6383 6382 6358 6359\nf 6385 6384 6360 6361\nf 6387 6386 6362 6363\nf 6389 6388 6364 6365\nf 6391 6390 6366 6367\nf 6393 6392 6368 6369\nf 6395 6394 6370 6371\nf 6397 6396 6372 6373\nf 6399 6398 6374 6375\nf 6401 6400 6376 6377\nf 6403 6402 6378 6379\nf 6381 6404 6380 6357\nf 6407 6406 6382 6383\nf 6409 6408 6384 6385\nf 6411 6410 6386 6387\nf 6413 6412 6388 6389\nf 6415 6414 6390 6391\nf 6417 6416 6392 6393\nf 6419 6418 6394 6395\nf 6421 6420 6396 6397\nf 6423 6422 6398 6399\nf 6425 6424 6400 6401\nf 6427 6426 6402 6403\nf 6405 6428 6404 6381\nf 6431 6430 6406 6407\nf 6433 6432 6408 6409\nf 6435 6434 6410 6411\nf 6437 6436 6412 6413\nf 6439 6438 6414 6415\nf 6441 6440 6416 6417\nf 6443 6442 6418 6419\nf 6445 6444 6420 6421\nf 6447 6446 6422 6423\nf 6449 6448 6424 6425\nf 6451 6450 6426 6427\nf 6429 6452 6428 6405\nf 6455 6454 6430 6431\nf 6457 6456 6432 6433\nf 6459 6458 6434 6435\nf 6461 6460 6436 6437\nf 6463 6462 6438 6439\nf 6465 6464 6440 6441\nf 6467 6466 6442 6443\nf 6469 6468 6444 6445\nf 6471 6470 6446 6447\nf 6473 6472 6448 6449\nf 6475 6474 6450 6451\nf 6453 6476 6452 6429\nf 6479 6478 6454 6455\nf 6481 6480 6456 6457\nf 6483 6482 6458 6459\nf 6485 6484 6460 6461\nf 6487 6486 6462 6463\nf 6489 6488 6464 6465\nf 6491 6490 6466 6467\nf 6493 6492 6468 6469\nf 6495 6494 6470 6471\nf 6497 6496 6472 6473\nf 6499 6498 6474 6475\nf 6477 6500 6476 6453\nf 6503 6502 6478 6479\nf 6505 6504 6480 6481\nf 6507 6506 6482 6483\nf 6509 6508 6484 6485\nf 6511 6510 6486 6487\nf 6513 6512 6488 6489\nf 6515 6514 6490 6491\nf 6517 6516 6492 6493\nf 6519 6518 6494 6495\nf 6521 6520 6496 6497\nf 6523 6522 6498 6499\nf 6501 6524 6500 6477\nf 6527 6526 6502 6503\nf 6529 6528 6504 6505\nf 6531 6530 6506 6507\nf 6533 6532 6508 6509\nf 6535 6534 6510 6511\nf 6537 6536 6512 6513\nf 6539 6538 6514 6515\nf 6541 6540 6516 6517\nf 6543 6542 6518 6519\nf 6545 6544 6520 6521\nf 6547 6546 6522 6523\nf 6525 6548 6524 6501\nf 6551 6550 6526 6527\nf 6553 6552 6528 6529\nf 6555 6554 6530 6531\nf 6557 6556 6532 6533\nf 6559 6558 6534 6535\nf 6561 6560 6536 6537\nf 6563 6562 6538 6539\nf 6565 6564 6540 6541\nf 6567 6566 6542 6543\nf 6569 6568 6544 6545\nf 6571 6570 6546 6547\nf 6549 6572 6548 6525\nf 6575 6574 6550 6551\nf 6577 6576 6552 6553\nf 6579 6578 6554 6555\nf 6581 6580 6556 6557\nf 6583 6582 6558 6559\nf 6585 6584 6560 6561\nf 6587 6586 6562 6563\nf 6589 6588 6564 6565\nf 6591 6590 6566 6567\nf 6593 6592 6568 6569\nf 6595 6594 6570 6571\nf 6573 6596 6572 6549\nf 6599 6598 6574 6575\nf 6601 6600 6576 6577\nf 6603 6602 6578 6579\nf 6605 6604 6580 6581\nf 6607 6606 6582 6583\nf 6609 6608 6584 6585\nf 6611 6610 6586 6587\nf 6613 6612 6588 6589\nf 6615 6614 6590 6591\nf 6617 6616 6592 6593\nf 6619 6618 6594 6595\nf 6597 6620 6596 6573\nf 6623 6622 6598 6599\nf 6625 6624 6600 6601\nf 6627 6626 6602 6603\nf 6629 6628 6604 6605\nf 6631 6630 6606 6607\nf 6633 6632 6608 6609\nf 6635 6634 6610 6611\nf 6637 6636 6612 6613\nf 6639 6638 6614 6615\nf 6641 6640 6616 6617\nf 6643 6642 6618 6619\nf 6621 6644 6620 6597\nf 6647 6646 6622 6623\nf 6649 6648 6624 6625\nf 6651 6650 6626 6627\nf 6653 6652 6628 6629\nf 6655 6654 6630 6631\nf 6657 6656 6632 6633\nf 6659 6658 6634 6635\nf 6661 6660 6636 6637\nf 6663 6662 6638 6639\nf 6665 6664 6640 6641\nf 6667 6666 6642 6643\nf 6645 6668 6644 6621\nf 6671 6670 6646 6647\nf 6673 6672 6648 6649\nf 6675 6674 6650 6651\nf 6677 6676 6652 6653\nf 6679 6678 6654 6655\nf 6681 6680 6656 6657\nf 6683 6682 6658 6659\nf 6685 6684 6660 6661\nf 6687 6686 6662 6663\nf 6689 6688 6664 6665\nf 6691 6690 6666 6667\nf 6669 6692 6668 6645\nf 6695 6694 6670 6671\nf 6697 6696 6672 6673\nf 6699 6698 6674 6675\nf 6701 6700 6676 6677\nf 6703 6702 6678 6679\nf 6705 6704 6680 6681\nf 6707 6706 6682 6683\nf 6709 6708 6684 6685\nf 6711 6710 6686 6687\nf 6713 6712 6688 6689\nf 6715 6714 6690 6691\nf 6693 6716 6692 6669\nf 6742 6741 6717 6718\nf 6744 6743 6719 6720\nf 6746 6745 6721 6722\nf 6748 6747 6723 6724\nf 6750 6749 6725 6726\nf 6752 6751 6727 6728\nf 6754 6753 6729 6730\nf 6756 6755 6731 6732\nf 6758 6757 6733 6734\nf 6760 6759 6735 6736\nf 6762 6761 6737 6738\nf 6764 6763 6739 6740\nf 6766 6765 6741 6742\nf 6768 6767 6743 6744\nf 6770 6769 6745 6746\nf 6772 6771 6747 6748\nf 6774 6773 6749 6750\nf 6776 6775 6751 6752\nf 6778 6777 6753 6754\nf 6780 6779 6755 6756\nf 6782 6781 6757 6758\nf 6784 6783 6759 6760\nf 6786 6785 6761 6762\nf 6788 6787 6763 6764\nf 6790 6789 6765 6766\nf 6792 6791 6767 6768\nf 6794 6793 6769 6770\nf 6796 6795 6771 6772\nf 6798 6797 6773 6774\nf 6800 6799 6775 6776\nf 6802 6801 6777 6778\nf 6804 6803 6779 6780\nf 6806 6805 6781 6782\nf 6808 6807 6783 6784\nf 6810 6809 6785 6786\nf 6812 6811 6787 6788\nf 6814 6813 6789 6790\nf 6816 6815 6791 6792\nf 6818 6817 6793 6794\nf 6820 6819 6795 6796\nf 6822 6821 6797 6798\nf 6824 6823 6799 6800\nf 6826 6825 6801 6802\nf 6828 6827 6803 6804\nf 6830 6829 6805 6806\nf 6832 6831 6807 6808\nf 6834 6833 6809 6810\nf 6836 6835 6811 6812\nf 6838 6837 6813 6814\nf 6840 6839 6815 6816\nf 6842 6841 6817 6818\nf 6844 6843 6819 6820\nf 6846 6845 6821 6822\nf 6848 6847 6823 6824\nf 6850 6849 6825 6826\nf 6852 6851 6827 6828\nf 6854 6853 6829 6830\nf 6856 6855 6831 6832\nf 6858 6857 6833 6834\nf 6860 6859 6835 6836\nf 6862 6861 6837 6838\nf 6864 6863 6839 6840\nf 6866 6865 6841 6842\nf 6868 6867 6843 6844\nf 6870 6869 6845 6846\nf 6872 6871 6847 6848\nf 6874 6873 6849 6850\nf 6876 6875 6851 6852\nf 6878 6877 6853 6854\nf 6880 6879 6855 6856\nf 6882 6881 6857 6858\nf 6884 6883 6859 6860\nf 6886 6885 6861 6862\nf 6888 6887 6863 6864\nf 6890 6889 6865 6866\nf 6892 6891 6867 6868\nf 6894 6893 6869 6870\nf 6896 6895 6871 6872\nf 6898 6897 6873 6874\nf 6900 6899 6875 6876\nf 6902 6901 6877 6878\nf 6904 6903 6879 6880\nf 6906 6905 6881 6882\nf 6908 6907 6883 6884\nf 6910 6909 6885 6886\nf 6912 6911 6887 6888\nf 6914 6913 6889 6890\nf 6916 6915 6891 6892\nf 6918 6917 6893 6894\nf 6920 6919 6895 6896\nf 6922 6921 6897 6898\nf 6924 6923 6899 6900\nf 6926 6925 6901 6902\nf 6928 6927 6903 6904\nf 6930 6929 6905 6906\nf 6932 6931 6907 6908\nf 6934 6933 6909 6910\nf 6936 6935 6911 6912\nf 6938 6937 6913 6914\nf 6940 6939 6915 6916\nf 6942 6941 6917 6918\nf 6944 6943 6919 6920\nf 6946 6945 6921 6922\nf 6948 6947 6923 6924\nf 6950 6949 6925 6926\nf 6952 6951 6927 6928\nf 6954 6953 6929 6930\nf 6956 6955 6931 6932\nf 6958 6957 6933 6934\nf 6960 6959 6935 6936\nf 6962 6961 6937 6938\nf 6964 6963 6939 6940\nf 6966 6965 6941 6942\nf 6968 6967 6943 6944\nf 6970 6969 6945 6946\nf 6972 6971 6947 6948\nf 6974 6973 6949 6950\nf 6976 6975 6951 6952\nf 6978 6977 6953 6954\nf 6980 6979 6955 6956\nf 6982 6981 6957 6958\nf 6984 6983 6959 6960\nf 6986 6985 6961 6962\nf 6988 6987 6963 6964\nf 6990 6989 6965 6966\nf 6992 6991 6967 6968\nf 6994 6993 6969 6970\nf 6996 6995 6971 6972\nf 6998 6997 6973 6974\nf 7000 6999 6975 6976\nf 7002 7001 6977 6978\nf 7004 7003 6979 6980\nf 7006 7005 6981 6982\nf 7008 7007 6983 6984\nf 7010 7009 6985 6986\nf 7012 7011 6987 6988\nf 7014 7013 6989 6990\nf 7016 7015 6991 6992\nf 7018 7017 6993 6994\nf 7020 7019 6995 6996\nf 7022 7021 6997 6998\nf 7024 7023 6999 7000\nf 7026 7025 7001 7002\nf 7028 7027 7003 7004\nf 7030 7029 7005 7006\nf 7032 7031 7007 7008\nf 7034 7033 7009 7010\nf 7036 7035 7011 7012\nf 7038 7037 7013 7014\nf 7040 7039 7015 7016\nf 7042 7041 7017 7018\nf 7044 7043 7019 7020\nf 7046 7045 7021 7022\nf 7048 7047 7023 7024\nf 7050 7049 7025 7026\nf 7052 7051 7027 7028\nf 7054 7053 7029 7030\nf 7056 7055 7031 7032\nf 7058 7057 7033 7034\nf 7060 7059 7035 7036\nf 7062 7061 7037 7038\nf 7064 7063 7039 7040\nf 7066 7065 7041 7042\nf 7068 7067 7043 7044\nf 7070 7069 7045 7046\nf 7072 7071 7047 7048\nf 7074 7073 7049 7050\nf 7076 7075 7051 7052\nf 7078 7077 7053 7054\nf 7080 7079 7055 7056\nf 7082 7081 7057 7058\nf 7084 7083 7059 7060\nf 7086 7085 7061 7062\nf 7088 7087 7063 7064\nf 7090 7089 7065 7066\nf 7092 7091 7067 7068\nf 7094 7093 7069 7070\nf 7096 7095 7071 7072\nf 7098 7097 7073 7074\nf 7100 7099 7075 7076\nf 7102 7101 7077 7078\nf 7104 7103 7079 7080\nf 7106 7105 7081 7082\nf 7108 7107 7083 7084\nf 7110 7109 7085 7086\nf 7112 7111 7087 7088\nf 7114 7113 7089 7090\nf 7116 7115 7091 7092\nf 7118 7117 7093 7094\nf 7120 7119 7095 7096\nf 7122 7121 7097 7098\nf 7124 7123 7099 7100\nf 7126 7125 7101 7102\nf 7128 7127 7103 7104\nf 7130 7129 7105 7106\nf 7132 7131 7107 7108\nf 7134 7133 7109 7110\nf 7136 7135 7111 7112\nf 7138 7137 7113 7114\nf 7140 7139 7115 7116\nf 7142 7141 7117 7118\nf 7144 7143 7119 7120\nf 7146 7145 7121 7122\nf 7148 7147 7123 7124\nf 7174 7173 7149 7150\nf 7176 7175 7151 7152\nf 7178 7177 7153 7154\nf 7180 7179 7155 7156\nf 7182 7181 7157 7158\nf 7184 7183 7159 7160\nf 7186 7185 7161 7162\nf 7188 7187 7163 7164\nf 7190 7189 7165 7166\nf 7192 7191 7167 7168\nf 7194 7193 7169 7170\nf 7196 7195 7171 7172\nf 7198 7197 7173 7174\nf 7200 7199 7175 7176\nf 7202 7201 7177 7178\nf 7204 7203 7179 7180\nf 7206 7205 7181 7182\nf 7208 7207 7183 7184\nf 7210 7209 7185 7186\nf 7212 7211 7187 7188\nf 7214 7213 7189 7190\nf 7216 7215 7191 7192\nf 7218 7217 7193 7194\nf 7220 7219 7195 7196\nf 7222 7221 7197 7198\nf 7224 7223 7199 7200\nf 7226 7225 7201 7202\nf 7228 7227 7203 7204\nf 7230 7229 7205 7206\nf 7232 7231 7207 7208\nf 7234 7233 7209 7210\nf 7236 7235 7211 7212\nf 7238 7237 7213 7214\nf 7240 7239 7215 7216\nf 7242 7241 7217 7218\nf 7244 7243 7219 7220\nf 7246 7245 7221 7222\nf 7248 7247 7223 7224\nf 7250 7249 7225 7226\nf 7252 7251 7227 7228\nf 7254 7253 7229 7230\nf 7256 7255 7231 7232\nf 7258 7257 7233 7234\nf 7260 7259 7235 7236\nf 7262 7261 7237 7238\nf 7264 7263 7239 7240\nf 7266 7265 7241 7242\nf 7268 7267 7243 7244\nf 7270 7269 7245 7246\nf 7272 7271 7247 7248\nf 7274 7273 7249 7250\nf 7276 7275 7251 7252\nf 7278 7277 7253 7254\nf 7280 7279 7255 7256\nf 7282 7281 7257 7258\nf 7284 7283 7259 7260\nf 7286 7285 7261 7262\nf 7288 7287 7263 7264\nf 7290 7289 7265 7266\nf 7292 7291 7267 7268\nf 7294 7293 7269 7270\nf 7296 7295 7271 7272\nf 7298 7297 7273 7274\nf 7300 7299 7275 7276\nf 7302 7301 7277 7278\nf 7304 7303 7279 7280\nf 7306 7305 7281 7282\nf 7308 7307 7283 7284\nf 7310 7309 7285 7286\nf 7312 7311 7287 7288\nf 7314 7313 7289 7290\nf 7316 7315 7291 7292\nf 7318 7317 7293 7294\nf 7320 7319 7295 7296\nf 7322 7321 7297 7298\nf 7324 7323 7299 7300\nf 7326 7325 7301 7302\nf 7328 7327 7303 7304\nf 7330 7329 7305 7306\nf 7332 7331 7307 7308\nf 7334 7333 7309 7310\nf 7336 7335 7311 7312\nf 7338 7337 7313 7314\nf 7340 7339 7315 7316\nf 7342 7341 7317 7318\nf 7344 7343 7319 7320\nf 7346 7345 7321 7322\nf 7348 7347 7323 7324\nf 7350 7349 7325 7326\nf 7352 7351 7327 7328\nf 7354 7353 7329 7330\nf 7356 7355 7331 7332\nf 7358 7357 7333 7334\nf 7360 7359 7335 7336\nf 7362 7361 7337 7338\nf 7364 7363 7339 7340\nf 7366 7365 7341 7342\nf 7368 7367 7343 7344\nf 7370 7369 7345 7346\nf 7372 7371 7347 7348\nf 7374 7373 7349 7350\nf 7376 7375 7351 7352\nf 7378 7377 7353 7354\nf 7380 7379 7355 7356\nf 7382 7381 7357 7358\nf 7384 7383 7359 7360\nf 7386 7385 7361 7362\nf 7388 7387 7363 7364\nf 7390 7389 7365 7366\nf 7392 7391 7367 7368\nf 7394 7393 7369 7370\nf 7396 7395 7371 7372\nf 7398 7397 7373 7374\nf 7400 7399 7375 7376\nf 7402 7401 7377 7378\nf 7404 7403 7379 7380\nf 7406 7405 7381 7382\nf 7408 7407 7383 7384\nf 7410 7409 7385 7386\nf 7412 7411 7387 7388\nf 7414 7413 7389 7390\nf 7416 7415 7391 7392\nf 7418 7417 7393 7394\nf 7420 7419 7395 7396\nf 7422 7421 7397 7398\nf 7424 7423 7399 7400\nf 7426 7425 7401 7402\nf 7428 7427 7403 7404\nf 7430 7429 7405 7406\nf 7432 7431 7407 7408\nf 7434 7433 7409 7410\nf 7436 7435 7411 7412\nf 7438 7437 7413 7414\nf 7440 7439 7415 7416\nf 7442 7441 7417 7418\nf 7444 7443 7419 7420\nf 7446 7445 7421 7422\nf 7448 7447 7423 7424\nf 7450 7449 7425 7426\nf 7452 7451 7427 7428\nf 7454 7453 7429 7430\nf 7456 7455 7431 7432\nf 7458 7457 7433 7434\nf 7460 7459 7435 7436\nf 7462 7461 7437 7438\nf 7464 7463 7439 7440\nf 7466 7465 7441 7442\nf 7468 7467 7443 7444\nf 7470 7469 7445 7446\nf 7472 7471 7447 7448\nf 7476 7475 7451 7452\nf 7478 7477 7453 7454\nf 7480 7479 7455 7456\nf 7482 7481 7457 7458\nf 7484 7483 7459 7460\ng slide\nf 7605 7628 7604 7581\nf 7627 7626 7602 7603\nf 7625 7624 7600 7601\nf 7623 7622 7598 7599\nf 7621 7620 7596 7597\nf 7619 7618 7594 7595\nf 7617 7616 7592 7593\nf 7615 7614 7590 7591\nf 7613 7612 7588 7589\nf 7611 7610 7586 7587\nf 7609 7608 7584 7585\nf 7607 7606 7582 7583\nf 7581 7604 7580 7557\nf 7603 7602 7578 7579\nf 7601 7600 7576 7577\nf 7599 7598 7574 7575\nf 7597 7596 7572 7573\nf 7595 7594 7570 7571\nf 7593 7592 7568 7569\nf 7591 7590 7566 7567\nf 7589 7588 7564 7565\nf 7587 7586 7562 7563\nf 7585 7584 7560 7561\nf 7583 7582 7558 7559\nf 7557 7580 7556 7533\nf 7579 7578 7554 7555\nf 7577 7576 7552 7553\nf 7575 7574 7550 7551\nf 7573 7572 7548 7549\nf 7571 7570 7546 7547\nf 7569 7568 7544 7545\nf 7567 7566 7542 7543\nf 7565 7564 7540 7541\nf 7563 7562 7538 7539\nf 7561 7560 7536 7537\nf 7559 7558 7534 7535\nf 7533 7556 7532 7509\nf 7555 7554 7530 7531\nf 7553 7552 7528 7529\nf 7551 7550 7526 7527\nf 7549 7548 7524 7525\nf 7547 7546 7522 7523\nf 7545 7544 7520 7521\nf 7543 7542 7518 7519\nf 7541 7540 7516 7517\nf 7539 7538 7514 7515\nf 7537 7536 7512 7513\nf 7535 7534 7510 7511\nf 7509 7532 7508 7485\nf 7531 7530 7506 7507\nf 7529 7528 7504 7505\nf 7527 7526 7502 7503\nf 7525 7524 7500 7501\nf 7523 7522 7498 7499\nf 7521 7520 7496 7497\nf 7519 7518 7494 7495\nf 7517 7516 7492 7493\nf 7515 7514 7490 7491\nf 7513 7512 7488 7489\nf 7511 7510 7486 7487\nf 7485 7508 7484 7461\nf 7507 7506 7482 7483\nf 7505 7504 7480 7481\nf 7503 7502 7478 7479\nf 7501 7500 7476 7477\nf 7499 7498 7474 7475\nf 7497 7496 7472 7473\nf 7495 7494 7470 7471\nf 7493 7492 7468 7469\nf 7491 7490 7466 7467\nf 7489 7488 7464 7465\nf 7487 7486 7462 7463\nf 7473 7472 7448 7449\nf 7149 7172 7148 7125\nf 7171 7170 7146 7147\nf 7169 7168 7144 7145\nf 7167 7166 7142 7143\nf 7165 7164 7140 7141\nf 7163 7162 7138 7139\nf 7161 7160 7136 7137\nf 7159 7158 7134 7135\nf 7157 7156 7132 7133\nf 7155 7154 7130 7131\nf 7153 7152 7128 7129\nf 7151 7150 7126 7127\nf 6717 6740 6716 6693\nf 6739 6738 6714 6715\nf 6737 6736 6712 6713\nf 6735 6734 6710 6711\nf 6733 6732 6708 6709\nf 6731 6730 6706 6707\nf 6729 6728 6704 6705\nf 6727 6726 6702 6703\nf 6725 6724 6700 6701\nf 6723 6722 6698 6699\nf 6721 6720 6696 6697\nf 6719 6718 6694 6695\nf 6718 6717 6693 6694\nf 6720 6719 6695 6696\nf 6722 6721 6697 6698\nf 6724 6723 6699 6700\nf 6726 6725 6701 6702\nf 6728 6727 6703 6704\nf 6730 6729 6705 6706\nf 6732 6731 6707 6708\nf 6734 6733 6709 6710\nf 6736 6735 6711 6712\nf 6738 6737 6713 6714\nf 6740 6739 6715 6716\nf 7150 7149 7125 7126\nf 7152 7151 7127 7128\nf 7154 7153 7129 7130\nf 7156 7155 7131 7132\nf 7158 7157 7133 7134\nf 7160 7159 7135 7136\nf 7162 7161 7137 7138\nf 7164 7163 7139 7140\nf 7166 7165 7141 7142\nf 7168 7167 7143 7144\nf 7170 7169 7145 7146\nf 7172 7171 7147 7148\nf 7474 7473 7449 7450\nf 7486 7485 7461 7462\nf 7488 7487 7463 7464\nf 7490 7489 7465 7466\nf 7492 7491 7467 7468\nf 7494 7493 7469 7470\nf 7496 7495 7471 7472\nf 7498 7497 7473 7474\nf 7500 7499 7475 7476\nf 7502 7501 7477 7478\nf 7504 7503 7479 7480\nf 7506 7505 7481 7482\nf 7508 7507 7483 7484\nf 7510 7509 7485 7486\nf 7512 7511 7487 7488\nf 7514 7513 7489 7490\nf 7516 7515 7491 7492\nf 7518 7517 7493 7494\nf 7520 7519 7495 7496\nf 7522 7521 7497 7498\nf 7524 7523 7499 7500\nf 7526 7525 7501 7502\nf 7528 7527 7503 7504\nf 7530 7529 7505 7506\nf 7532 7531 7507 7508\nf 7534 7533 7509 7510\nf 7536 7535 7511 7512\nf 7538 7537 7513 7514\nf 7540 7539 7515 7516\nf 7542 7541 7517 7518\nf 7544 7543 7519 7520\nf 7546 7545 7521 7522\nf 7548 7547 7523 7524\nf 7550 7549 7525 7526\nf 7552 7551 7527 7528\nf 7554 7553 7529 7530\nf 7556 7555 7531 7532\nf 7558 7557 7533 7534\nf 7560 7559 7535 7536\nf 7562 7561 7537 7538\nf 7564 7563 7539 7540\nf 7566 7565 7541 7542\nf 7568 7567 7543 7544\nf 7570 7569 7545 7546\nf 7572 7571 7547 7548\nf 7574 7573 7549 7550\nf 7576 7575 7551 7552\nf 7578 7577 7553 7554\nf 7580 7579 7555 7556\nf 7582 7581 7557 7558\nf 7584 7583 7559 7560\nf 7586 7585 7561 7562\nf 7588 7587 7563 7564\nf 7590 7589 7565 7566\nf 7592 7591 7567 7568\nf 7594 7593 7569 7570\nf 7596 7595 7571 7572\nf 7598 7597 7573 7574\nf 7600 7599 7575 7576\nf 7602 7601 7577 7578\nf 7604 7603 7579 7580\nf 7606 7605 7581 7582\nf 7608 7607 7583 7584\nf 7610 7609 7585 7586\nf 7612 7611 7587 7588\nf 7614 7613 7589 7590\nf 7616 7615 7591 7592\nf 7618 7617 7593 7594\nf 7620 7619 7595 7596\nf 7622 7621 7597 7598\nf 7624 7623 7599 7600\nf 7626 7625 7601 7602\nf 7628 7627 7603 7604\nf 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7605\ng horn\ns 6\nf 9090 9089 9088 9087 9086 9085 9084 9083 9082 9081 9080 9079 9078 9077 9076 9075 9074 9073 9072 9071 9070 9069 9092 9091\nf 9114 9113 9112 9111 9110 9109 9108 9107 9106 9105 9104 9103 9102 9101 9100 9099 9098 9097 9096 9095 9094 9093 9116 9115\nf 9116 9093 8206 8207\nf 9114 9115 8208 8209\nf 9112 9113 8210 8211\nf 9110 9111 8212 8213\nf 9108 9109 8214 8215\nf 9106 9107 8216 8217\nf 9104 9105 8218 8219\nf 9102 9103 8220 8221\nf 9100 9101 8222 8223\nf 9098 9099 8224 8225\nf 9096 9097 8226 8227\nf 9094 9095 8228 8205\nf 8515 8529 8516 8489 8488\nf 8513 8527 8514 8487 8486\nf 8511 8525 8512 8485 8484\nf 8509 8523 8510 8483 8482\nf 8507 8521 8508 8481 8480\nf 8505 8519 8506 8479 8478\nf 8503 8517 8504 8477 8476\nf 8501 8539 8502 8475 8474\nf 8499 8537 8500 8473 8472\nf 8497 8535 8498 8471 8470\nf 8495 8533 8496 8469 8492\nf 8493 8531 8494 8491 8490\nf 8491 8492 8465 8464\nf 8489 8490 8463 8462\nf 8487 8488 8461 8460\nf 8485 8486 8459 8458\nf 8483 8484 8457 8456\nf 8481 8482 8455 8454\nf 8479 8480 8453 8452\nf 8477 8478 8451 8450\nf 8475 8476 8449 8448\nf 8473 8474 8447 8446\nf 8471 8472 8445 8468\nf 8469 8470 8467 8466\nf 8467 8468 8441 8440\nf 8465 8466 8439 8438\nf 8463 8464 8437 8436\nf 8461 8462 8435 8434\nf 8459 8460 8433 8432\nf 8457 8458 8431 8430\nf 8455 8456 8429 8428\nf 8453 8454 8427 8426\nf 8451 8452 8425 8424\nf 8449 8450 8423 8422\nf 8447 8448 8421 8444\nf 8445 8446 8443 8442\nf 8443 8444 8417 8416\nf 8441 8442 8415 8414\nf 8439 8440 8413 8412\nf 8437 8438 8411 8410\nf 8435 8436 8409 8408\nf 8433 8434 8407 8406\nf 8431 8432 8405 8404\nf 8429 8430 8403 8402\nf 8427 8428 8401 8400\nf 8425 8426 8399 8398\nf 8423 8424 8397 8420\nf 8421 8422 8419 8418\nf 8419 8420 8393 8392\nf 8417 8418 8391 8390\nf 8415 8416 8389 8388\nf 8413 8414 8387 8386\nf 8411 8412 8385 8384\nf 8409 8410 8383 8382\nf 8407 8408 8381 8380\nf 8405 8406 8379 8378\nf 8403 8404 8377 8376\nf 8401 8402 8375 8374\nf 8399 8400 8373 8396\nf 8397 8398 8395 8394\nf 8395 8396 8369 8368\nf 8393 8394 8367 8366\nf 8391 8392 8365 8364\nf 8389 8390 8363 8362\nf 8387 8388 8361 8360\nf 8385 8386 8359 8358\nf 8383 8384 8357 8356\nf 8381 8382 8355 8354\nf 8379 8380 8353 8352\nf 8377 8378 8351 8350\nf 8375 8376 8349 8372\nf 8373 8374 8371 8370\nf 8371 8372 8345 8344\nf 8369 8370 8343 8342\nf 8367 8368 8341 8340\nf 8365 8366 8339 8338\nf 8363 8364 8337 8336\nf 8361 8362 8335 8334\nf 8359 8360 8333 8332\nf 8357 8358 8331 8330\nf 8355 8356 8329 8328\nf 8353 8354 8327 8326\nf 8351 8352 8325 8348\nf 8349 8350 8347 8346\nf 8347 8348 8321 8320\nf 8345 8346 8319 8318\nf 8343 8344 8317 8316\nf 8341 8342 8315 8314\nf 8339 8340 8313 8312\nf 8337 8338 8311 8310\nf 8335 8336 8309 8308\nf 8333 8334 8307 8306\nf 8331 8332 8305 8304\nf 8329 8330 8303 8302\nf 8327 8328 8301 8324\nf 8325 8326 8323 8322\nf 8323 8324 8297 8296\nf 8321 8322 8295 8294\nf 8319 8320 8293 8292\nf 8317 8318 8291 8290\nf 8315 8316 8289 8288\nf 8313 8314 8287 8286\nf 8311 8312 8285 8284\nf 8309 8310 8283 8282\nf 8307 8308 8281 8280\nf 8305 8306 8279 8278\nf 8303 8304 8277 8300\nf 8301 8302 8299 8298\nf 8299 8300 8273 8272\nf 8297 8298 8271 8270\nf 8295 8296 8269 8268\nf 8293 8294 8267 8266\nf 8291 8292 8265 8264\nf 8289 8290 8263 8262\nf 8287 8288 8261 8260\nf 8285 8286 8259 8258\nf 8283 8284 8257 8256\nf 8281 8282 8255 8254\nf 8279 8280 8253 8276\nf 8277 8278 8275 8274\nf 8275 8276 8249 8248\nf 8273 8274 8247 8246\nf 8271 8272 8245 8244\nf 8269 8270 8243 8242\nf 8267 8268 8241 8240\nf 8265 8266 8239 8238\nf 8263 8264 8237 8236\nf 8261 8262 8235 8234\nf 8259 8260 8233 8232\nf 8257 8258 8231 8230\nf 8255 8256 8229 8252\nf 8253 8254 8251 8250\nf 8251 8252 7649 7648\nf 8249 8250 7647 7646\nf 8247 8248 7645 7644\nf 8245 8246 7643 7642\nf 8243 8244 7641 7640\nf 8241 8242 7639 7638\nf 8239 8240 7637 7636\nf 8237 8238 7635 7634\nf 8235 8236 7633 7632\nf 8233 8234 7631 7630\nf 8231 8232 7629 7652\nf 8229 8230 7651 7650\nf 8228 8227 8203 8204\nf 8226 8225 8201 8202\nf 8224 8223 8199 8200\nf 8222 8221 8197 8198\nf 8220 8219 8195 8196\nf 8218 8217 8193 8194\nf 8216 8215 8191 8192\nf 8214 8213 8189 8190\nf 8212 8211 8187 8188\nf 8210 8209 8185 8186\nf 8208 8207 8183 8184\nf 8206 8205 8181 8182\nf 8204 8203 8179 8180\nf 8202 8201 8177 8178\nf 8200 8199 8175 8176\nf 8198 8197 8173 8174\nf 8196 8195 8171 8172\nf 8194 8193 8169 8170\nf 8192 8191 8167 8168\nf 8190 8189 8165 8166\nf 8188 8187 8163 8164\nf 8186 8185 8161 8162\nf 8184 8183 8159 8160\nf 8182 8181 8157 8158\nf 8180 8179 8155 8156\nf 8178 8177 8153 8154\nf 8176 8175 8151 8152\nf 8174 8173 8149 8150\nf 8172 8171 8147 8148\nf 8170 8169 8145 8146\nf 8168 8167 8143 8144\nf 8166 8165 8141 8142\nf 8164 8163 8139 8140\nf 8162 8161 8137 8138\nf 8160 8159 8135 8136\nf 8158 8157 8133 8134\nf 8156 8155 8131 8132\nf 8154 8153 8129 8130\nf 8152 8151 8127 8128\nf 8150 8149 8125 8126\nf 8148 8147 8123 8124\nf 8146 8145 8121 8122\nf 8144 8143 8119 8120\nf 8142 8141 8117 8118\nf 8140 8139 8115 8116\nf 8138 8137 8113 8114\nf 8136 8135 8111 8112\nf 8134 8133 8109 8110\nf 8132 8131 8107 8108\nf 8130 8129 8105 8106\nf 8128 8127 8103 8104\nf 8126 8125 8101 8102\nf 8124 8123 8099 8100\nf 8122 8121 8097 8098\nf 8120 8119 8095 8096\nf 8118 8117 8093 8094\nf 8116 8115 8091 8092\nf 8114 8113 8089 8090\nf 8112 8111 8087 8088\nf 8110 8109 8085 8086\nf 8108 8107 8083 8084\nf 8106 8105 8081 8082\nf 8104 8103 8079 8080\nf 8102 8101 8077 8078\nf 8100 8099 8075 8076\nf 8098 8097 8073 8074\nf 8096 8095 8071 8072\nf 8094 8093 8069 8070\nf 8092 8091 8067 8068\nf 8090 8089 8065 8066\nf 8088 8087 8063 8064\nf 8086 8085 8061 8062\nf 8084 8083 8059 8060\nf 8082 8081 8057 8058\nf 8080 8079 8055 8056\nf 8078 8077 8053 8054\nf 8076 8075 8051 8052\nf 8074 8073 8049 8050\nf 8072 8071 8047 8048\nf 8070 8069 8045 8046\nf 8068 8067 8043 8044\nf 8066 8065 8041 8042\nf 8064 8063 8039 8040\nf 8062 8061 8037 8038\nf 8060 8059 8035 8036\nf 8058 8057 8033 8034\nf 8056 8055 8031 8032\nf 8054 8053 8029 8030\nf 8052 8051 8027 8028\nf 8050 8049 8025 8026\nf 8048 8047 8023 8024\nf 8046 8045 8021 8022\nf 8044 8043 8019 8020\nf 8042 8041 8017 8018\nf 8040 8039 8015 8016\nf 8038 8037 8013 8014\nf 8036 8035 8011 8012\nf 8034 8033 8009 8010\nf 8032 8031 8007 8008\nf 8030 8029 8005 8006\nf 8028 8027 8003 8004\nf 8026 8025 8001 8002\nf 8024 8023 7999 8000\nf 8022 8021 7997 7998\nf 8020 8019 7995 7996\nf 8018 8017 7993 7994\nf 8016 8015 7991 7992\nf 8014 8013 7989 7990\nf 8012 8011 7987 7988\nf 8010 8009 7985 7986\nf 8008 8007 7983 7984\nf 8006 8005 7981 7982\nf 8004 8003 7979 7980\nf 8002 8001 7977 7978\nf 8000 7999 7975 7976\nf 7998 7997 7973 7974\nf 7996 7995 7971 7972\nf 7994 7993 7969 7970\nf 7992 7991 7967 7968\nf 7990 7989 7965 7966\nf 7988 7987 7963 7964\nf 7986 7985 7961 7962\nf 7984 7983 7959 7960\nf 7982 7981 7957 7958\nf 7980 7979 7955 7956\nf 7978 7977 7953 7954\nf 7976 7975 7951 7952\nf 7974 7973 7949 7950\nf 7972 7971 7947 7948\nf 7970 7969 7945 7946\nf 7968 7967 7943 7944\nf 7966 7965 7941 7942\nf 7964 7963 7939 7940\nf 7962 7961 7937 7938\nf 7960 7959 7935 7936\nf 7958 7957 7933 7934\nf 7956 7955 7931 7932\nf 7954 7953 7929 7930\nf 7952 7951 7927 7928\nf 7950 7949 7925 7926\nf 7948 7947 7923 7924\nf 7946 7945 7921 7922\nf 7944 7943 7919 7920\nf 7942 7941 7917 7918\nf 7940 7939 7915 7916\nf 7938 7937 7913 7914\nf 7936 7935 7911 7912\nf 7934 7933 7909 7910\nf 7932 7931 7907 7908\nf 7930 7929 7905 7906\nf 7928 7927 7903 7904\nf 7926 7925 7901 7902\nf 7924 7923 7899 7900\nf 7922 7921 7897 7898\nf 7920 7919 7895 7896\nf 7918 7917 7893 7894\nf 7916 7915 7891 7892\nf 7914 7913 7889 7890\nf 7912 7911 7887 7888\nf 7910 7909 7885 7886\nf 7908 7907 7883 7884\nf 7906 7905 7881 7882\nf 7904 7903 7879 7880\nf 7902 7901 7877 7878\nf 7900 7899 7875 7876\nf 7898 7897 7873 7874\nf 7896 7895 7871 7872\nf 7894 7893 7869 7870\nf 7892 7891 7867 7868\nf 7890 7889 7865 7866\nf 7888 7887 7863 7864\nf 7886 7885 7861 7862\nf 7884 7883 7859 7860\nf 7882 7881 7857 7858\nf 7880 7879 7855 7856\nf 7878 7877 7853 7854\nf 7876 7875 7851 7852\nf 7874 7873 7849 7850\nf 7872 7871 7847 7848\nf 7870 7869 7845 7846\nf 7868 7867 7843 7844\nf 7866 7865 7841 7842\nf 7864 7863 7839 7840\nf 7862 7861 7837 7838\nf 7860 7859 7835 7836\nf 7858 7857 7833 7834\nf 7856 7855 7831 7832\nf 7854 7853 7829 7830\nf 7852 7851 7827 7828\nf 7850 7849 7825 7826\nf 7848 7847 7823 7824\nf 7846 7845 7821 7822\nf 7844 7843 7819 7820\nf 7842 7841 7817 7818\nf 7840 7839 7815 7816\nf 7838 7837 7813 7814\nf 7836 7835 7811 7812\nf 7834 7833 7809 7810\nf 7832 7831 7807 7808\nf 7830 7829 7805 7806\nf 7828 7827 7803 7804\nf 7826 7825 7801 7802\nf 7824 7823 7799 7800\nf 7822 7821 7797 7798\nf 7820 7819 7795 7796\nf 7818 7817 7793 7794\nf 7816 7815 7791 7792\nf 7814 7813 7789 7790\nf 7812 7811 7787 7788\nf 7810 7809 7785 7786\nf 7808 7807 7783 7784\nf 7806 7805 7781 7782\nf 7804 7803 7779 7780\nf 7802 7801 7777 7778\nf 7800 7799 7775 7776\nf 7798 7797 7773 7774\nf 7796 7795 7771 7772\nf 7794 7793 7769 7770\nf 7792 7791 7767 7768\nf 7790 7789 7765 7766\nf 7788 7787 7763 7764\nf 7786 7785 7761 7762\nf 7784 7783 7759 7760\nf 7782 7781 7757 7758\nf 7780 7779 7755 7756\nf 7778 7777 7753 7754\nf 7776 7775 7751 7752\nf 7774 7773 7749 7750\nf 7772 7771 7747 7748\nf 7770 7769 7745 7746\nf 7768 7767 7743 7744\nf 7766 7765 7741 7742\nf 7764 7763 7739 7740\nf 7762 7761 7737 7738\nf 7760 7759 7735 7736\nf 7758 7757 7733 7734\nf 7756 7755 7731 7732\nf 7754 7753 7729 7730\nf 7752 7751 7727 7728\nf 7750 7749 7725 7726\nf 7748 7747 7723 7724\nf 7746 7745 7721 7722\nf 7744 7743 7719 7720\nf 7742 7741 7717 7718\nf 7740 7739 7715 7716\nf 7738 7737 7713 7714\nf 7736 7735 7711 7712\nf 7734 7733 7709 7710\nf 7732 7731 7707 7708\nf 7730 7729 7705 7706\nf 7728 7727 7703 7704\nf 7726 7725 7701 7702\nf 7724 7723 7699 7700\nf 7722 7721 7697 7698\nf 7720 7719 7695 7696\nf 7718 7717 7693 7694\nf 7716 7715 7691 7692\nf 7714 7713 7689 7690\nf 7712 7711 7687 7688\nf 7710 7709 7685 7686\nf 7708 7707 7683 7684\nf 7706 7705 7681 7682\nf 7704 7703 7679 7680\nf 7702 7701 7677 7678\nf 7700 7699 7675 7676\nf 7698 7697 7673 7674\nf 7696 7695 7671 7672\nf 7694 7693 7669 7670\nf 7692 7691 7667 7668\nf 7690 7689 7665 7666\nf 7688 7687 7663 7664\nf 7686 7685 7661 7662\nf 7684 7683 7659 7660\nf 7682 7681 7657 7658\nf 7680 7679 7655 7656\nf 7678 7677 7653 7654\nf 7676 7675 7651 7652\nf 7674 7673 7649 7650\nf 7672 7671 7647 7648\nf 7670 7669 7645 7646\nf 7668 7667 7643 7644\nf 7666 7665 7641 7642\nf 7664 7663 7639 7640\nf 7662 7661 7637 7638\nf 7660 7659 7635 7636\nf 7658 7657 7633 7634\nf 7656 7655 7631 7632\nf 7654 7653 7629 7630\nf 7655 7654 7630 7631\nf 7657 7656 7632 7633\nf 7659 7658 7634 7635\nf 7661 7660 7636 7637\nf 7663 7662 7638 7639\nf 7665 7664 7640 7641\nf 7667 7666 7642 7643\nf 7669 7668 7644 7645\nf 7671 7670 7646 7647\nf 7673 7672 7648 7649\nf 7675 7674 7650 7651\nf 7653 7676 7652 7629\nf 7679 7678 7654 7655\nf 7681 7680 7656 7657\nf 7683 7682 7658 7659\nf 7685 7684 7660 7661\nf 7687 7686 7662 7663\nf 7689 7688 7664 7665\nf 7691 7690 7666 7667\nf 7693 7692 7668 7669\nf 7695 7694 7670 7671\nf 7697 7696 7672 7673\nf 7699 7698 7674 7675\nf 7677 7700 7676 7653\nf 7703 7702 7678 7679\nf 7705 7704 7680 7681\nf 7707 7706 7682 7683\nf 7709 7708 7684 7685\nf 7711 7710 7686 7687\nf 7713 7712 7688 7689\nf 7715 7714 7690 7691\nf 7717 7716 7692 7693\nf 7719 7718 7694 7695\nf 7721 7720 7696 7697\nf 7723 7722 7698 7699\nf 7701 7724 7700 7677\nf 7727 7726 7702 7703\nf 7729 7728 7704 7705\nf 7731 7730 7706 7707\nf 7733 7732 7708 7709\nf 7735 7734 7710 7711\nf 7737 7736 7712 7713\nf 7739 7738 7714 7715\nf 7741 7740 7716 7717\nf 7743 7742 7718 7719\nf 7745 7744 7720 7721\nf 7747 7746 7722 7723\nf 7725 7748 7724 7701\nf 7751 7750 7726 7727\nf 7753 7752 7728 7729\nf 7755 7754 7730 7731\nf 7757 7756 7732 7733\nf 7759 7758 7734 7735\nf 7761 7760 7736 7737\nf 7763 7762 7738 7739\nf 7765 7764 7740 7741\nf 7767 7766 7742 7743\nf 7769 7768 7744 7745\nf 7771 7770 7746 7747\nf 7749 7772 7748 7725\nf 7775 7774 7750 7751\nf 7777 7776 7752 7753\nf 7779 7778 7754 7755\nf 7781 7780 7756 7757\nf 7783 7782 7758 7759\nf 7785 7784 7760 7761\nf 7787 7786 7762 7763\nf 7789 7788 7764 7765\nf 7791 7790 7766 7767\nf 7793 7792 7768 7769\nf 7795 7794 7770 7771\nf 7773 7796 7772 7749\nf 7799 7798 7774 7775\nf 7801 7800 7776 7777\nf 7803 7802 7778 7779\nf 7805 7804 7780 7781\nf 7807 7806 7782 7783\nf 7809 7808 7784 7785\nf 7811 7810 7786 7787\nf 7813 7812 7788 7789\nf 7815 7814 7790 7791\nf 7817 7816 7792 7793\nf 7819 7818 7794 7795\nf 7797 7820 7796 7773\nf 7823 7822 7798 7799\nf 7825 7824 7800 7801\nf 7827 7826 7802 7803\nf 7829 7828 7804 7805\nf 7831 7830 7806 7807\nf 7833 7832 7808 7809\nf 7835 7834 7810 7811\nf 7837 7836 7812 7813\nf 7839 7838 7814 7815\nf 7841 7840 7816 7817\nf 7843 7842 7818 7819\nf 7821 7844 7820 7797\nf 7847 7846 7822 7823\nf 7849 7848 7824 7825\nf 7851 7850 7826 7827\nf 7853 7852 7828 7829\nf 7855 7854 7830 7831\nf 7857 7856 7832 7833\nf 7859 7858 7834 7835\nf 7861 7860 7836 7837\nf 7863 7862 7838 7839\nf 7865 7864 7840 7841\nf 7867 7866 7842 7843\nf 7845 7868 7844 7821\nf 7871 7870 7846 7847\nf 7873 7872 7848 7849\nf 7875 7874 7850 7851\nf 7877 7876 7852 7853\nf 7879 7878 7854 7855\nf 7881 7880 7856 7857\nf 7883 7882 7858 7859\nf 7885 7884 7860 7861\nf 7887 7886 7862 7863\nf 7889 7888 7864 7865\nf 7891 7890 7866 7867\nf 7869 7892 7868 7845\nf 7895 7894 7870 7871\nf 7897 7896 7872 7873\nf 7899 7898 7874 7875\nf 7901 7900 7876 7877\nf 7903 7902 7878 7879\nf 7905 7904 7880 7881\nf 7907 7906 7882 7883\nf 7909 7908 7884 7885\nf 7911 7910 7886 7887\nf 7913 7912 7888 7889\nf 7915 7914 7890 7891\nf 7893 7916 7892 7869\nf 7919 7918 7894 7895\nf 7921 7920 7896 7897\nf 7923 7922 7898 7899\nf 7925 7924 7900 7901\nf 7927 7926 7902 7903\nf 7929 7928 7904 7905\nf 7931 7930 7906 7907\nf 7933 7932 7908 7909\nf 7935 7934 7910 7911\nf 7937 7936 7912 7913\nf 7939 7938 7914 7915\nf 7917 7940 7916 7893\nf 7943 7942 7918 7919\nf 7945 7944 7920 7921\nf 7947 7946 7922 7923\nf 7949 7948 7924 7925\nf 7951 7950 7926 7927\nf 7953 7952 7928 7929\nf 7955 7954 7930 7931\nf 7957 7956 7932 7933\nf 7959 7958 7934 7935\nf 7961 7960 7936 7937\nf 7963 7962 7938 7939\nf 7941 7964 7940 7917\nf 7967 7966 7942 7943\nf 7969 7968 7944 7945\nf 7971 7970 7946 7947\nf 7973 7972 7948 7949\nf 7975 7974 7950 7951\nf 7977 7976 7952 7953\nf 7979 7978 7954 7955\nf 7981 7980 7956 7957\nf 7983 7982 7958 7959\nf 7985 7984 7960 7961\nf 7987 7986 7962 7963\nf 7965 7988 7964 7941\nf 7991 7990 7966 7967\nf 7993 7992 7968 7969\nf 7995 7994 7970 7971\nf 7997 7996 7972 7973\nf 7999 7998 7974 7975\nf 8001 8000 7976 7977\nf 8003 8002 7978 7979\nf 8005 8004 7980 7981\nf 8007 8006 7982 7983\nf 8009 8008 7984 7985\nf 8011 8010 7986 7987\nf 7989 8012 7988 7965\nf 8015 8014 7990 7991\nf 8017 8016 7992 7993\nf 8019 8018 7994 7995\nf 8021 8020 7996 7997\nf 8023 8022 7998 7999\nf 8025 8024 8000 8001\nf 8027 8026 8002 8003\nf 8029 8028 8004 8005\nf 8031 8030 8006 8007\nf 8033 8032 8008 8009\nf 8035 8034 8010 8011\nf 8013 8036 8012 7989\nf 8039 8038 8014 8015\nf 8041 8040 8016 8017\nf 8043 8042 8018 8019\nf 8045 8044 8020 8021\nf 8047 8046 8022 8023\nf 8049 8048 8024 8025\nf 8051 8050 8026 8027\nf 8053 8052 8028 8029\nf 8055 8054 8030 8031\nf 8057 8056 8032 8033\nf 8059 8058 8034 8035\nf 8037 8060 8036 8013\nf 8063 8062 8038 8039\nf 8065 8064 8040 8041\nf 8067 8066 8042 8043\nf 8069 8068 8044 8045\nf 8071 8070 8046 8047\nf 8073 8072 8048 8049\nf 8075 8074 8050 8051\nf 8077 8076 8052 8053\nf 8079 8078 8054 8055\nf 8081 8080 8056 8057\nf 8083 8082 8058 8059\nf 8061 8084 8060 8037\nf 8087 8086 8062 8063\nf 8089 8088 8064 8065\nf 8091 8090 8066 8067\nf 8093 8092 8068 8069\nf 8095 8094 8070 8071\nf 8097 8096 8072 8073\nf 8099 8098 8074 8075\nf 8101 8100 8076 8077\nf 8103 8102 8078 8079\nf 8105 8104 8080 8081\nf 8107 8106 8082 8083\nf 8085 8108 8084 8061\nf 8111 8110 8086 8087\nf 8113 8112 8088 8089\nf 8115 8114 8090 8091\nf 8117 8116 8092 8093\nf 8119 8118 8094 8095\nf 8121 8120 8096 8097\nf 8123 8122 8098 8099\nf 8125 8124 8100 8101\nf 8127 8126 8102 8103\nf 8129 8128 8104 8105\nf 8131 8130 8106 8107\nf 8109 8132 8108 8085\nf 8135 8134 8110 8111\nf 8137 8136 8112 8113\nf 8139 8138 8114 8115\nf 8141 8140 8116 8117\nf 8143 8142 8118 8119\nf 8145 8144 8120 8121\nf 8147 8146 8122 8123\nf 8149 8148 8124 8125\nf 8151 8150 8126 8127\nf 8153 8152 8128 8129\nf 8155 8154 8130 8131\nf 8133 8156 8132 8109\nf 8159 8158 8134 8135\nf 8161 8160 8136 8137\nf 8163 8162 8138 8139\nf 8165 8164 8140 8141\nf 8167 8166 8142 8143\nf 8169 8168 8144 8145\nf 8171 8170 8146 8147\nf 8173 8172 8148 8149\nf 8175 8174 8150 8151\nf 8177 8176 8152 8153\nf 8179 8178 8154 8155\nf 8157 8180 8156 8133\nf 8183 8182 8158 8159\nf 8185 8184 8160 8161\nf 8187 8186 8162 8163\nf 8189 8188 8164 8165\nf 8191 8190 8166 8167\nf 8193 8192 8168 8169\nf 8195 8194 8170 8171\nf 8197 8196 8172 8173\nf 8199 8198 8174 8175\nf 8201 8200 8176 8177\nf 8203 8202 8178 8179\nf 8181 8204 8180 8157\nf 8207 8206 8182 8183\nf 8209 8208 8184 8185\nf 8211 8210 8186 8187\nf 8213 8212 8188 8189\nf 8215 8214 8190 8191\nf 8217 8216 8192 8193\nf 8219 8218 8194 8195\nf 8221 8220 8196 8197\nf 8223 8222 8198 8199\nf 8225 8224 8200 8201\nf 8227 8226 8202 8203\nf 8205 8228 8204 8181\nf 8230 8231 7652 7651\nf 8232 8233 7630 7629\nf 8234 8235 7632 7631\nf 8236 8237 7634 7633\nf 8238 8239 7636 7635\nf 8240 8241 7638 7637\nf 8242 8243 7640 7639\nf 8244 8245 7642 7641\nf 8246 8247 7644 7643\nf 8248 8249 7646 7645\nf 8250 8251 7648 7647\nf 8252 8229 7650 7649\nf 8254 8255 8252 8251\nf 8256 8257 8230 8229\nf 8258 8259 8232 8231\nf 8260 8261 8234 8233\nf 8262 8263 8236 8235\nf 8264 8265 8238 8237\nf 8266 8267 8240 8239\nf 8268 8269 8242 8241\nf 8270 8271 8244 8243\nf 8272 8273 8246 8245\nf 8274 8275 8248 8247\nf 8276 8253 8250 8249\nf 8278 8279 8276 8275\nf 8280 8281 8254 8253\nf 8282 8283 8256 8255\nf 8284 8285 8258 8257\nf 8286 8287 8260 8259\nf 8288 8289 8262 8261\nf 8290 8291 8264 8263\nf 8292 8293 8266 8265\nf 8294 8295 8268 8267\nf 8296 8297 8270 8269\nf 8298 8299 8272 8271\nf 8300 8277 8274 8273\nf 8302 8303 8300 8299\nf 8304 8305 8278 8277\nf 8306 8307 8280 8279\nf 8308 8309 8282 8281\nf 8310 8311 8284 8283\nf 8312 8313 8286 8285\nf 8314 8315 8288 8287\nf 8316 8317 8290 8289\nf 8318 8319 8292 8291\nf 8320 8321 8294 8293\nf 8322 8323 8296 8295\nf 8324 8301 8298 8297\nf 8326 8327 8324 8323\nf 8328 8329 8302 8301\nf 8330 8331 8304 8303\nf 8332 8333 8306 8305\nf 8334 8335 8308 8307\nf 8336 8337 8310 8309\nf 8338 8339 8312 8311\nf 8340 8341 8314 8313\nf 8342 8343 8316 8315\nf 8344 8345 8318 8317\nf 8346 8347 8320 8319\nf 8348 8325 8322 8321\nf 8350 8351 8348 8347\nf 8352 8353 8326 8325\nf 8354 8355 8328 8327\nf 8356 8357 8330 8329\nf 8358 8359 8332 8331\nf 8360 8361 8334 8333\nf 8362 8363 8336 8335\nf 8364 8365 8338 8337\nf 8366 8367 8340 8339\nf 8368 8369 8342 8341\nf 8370 8371 8344 8343\nf 8372 8349 8346 8345\nf 8374 8375 8372 8371\nf 8376 8377 8350 8349\nf 8378 8379 8352 8351\nf 8380 8381 8354 8353\nf 8382 8383 8356 8355\nf 8384 8385 8358 8357\nf 8386 8387 8360 8359\nf 8388 8389 8362 8361\nf 8390 8391 8364 8363\nf 8392 8393 8366 8365\nf 8394 8395 8368 8367\nf 8396 8373 8370 8369\nf 8398 8399 8396 8395\nf 8400 8401 8374 8373\nf 8402 8403 8376 8375\nf 8404 8405 8378 8377\nf 8406 8407 8380 8379\nf 8408 8409 8382 8381\nf 8410 8411 8384 8383\nf 8412 8413 8386 8385\nf 8414 8415 8388 8387\nf 8416 8417 8390 8389\nf 8418 8419 8392 8391\nf 8420 8397 8394 8393\nf 8422 8423 8420 8419\nf 8424 8425 8398 8397\nf 8426 8427 8400 8399\nf 8428 8429 8402 8401\nf 8430 8431 8404 8403\nf 8432 8433 8406 8405\nf 8434 8435 8408 8407\nf 8436 8437 8410 8409\nf 8438 8439 8412 8411\nf 8440 8441 8414 8413\nf 8442 8443 8416 8415\nf 8444 8421 8418 8417\nf 8446 8447 8444 8443\nf 8448 8449 8422 8421\nf 8450 8451 8424 8423\nf 8452 8453 8426 8425\nf 8454 8455 8428 8427\nf 8456 8457 8430 8429\nf 8458 8459 8432 8431\nf 8460 8461 8434 8433\nf 8462 8463 8436 8435\nf 8464 8465 8438 8437\nf 8466 8467 8440 8439\nf 8468 8445 8442 8441\nf 8470 8471 8468 8467\nf 8472 8473 8446 8445\nf 8474 8475 8448 8447\nf 8476 8477 8450 8449\nf 8478 8479 8452 8451\nf 8480 8481 8454 8453\nf 8482 8483 8456 8455\nf 8484 8485 8458 8457\nf 8486 8487 8460 8459\nf 8488 8489 8462 8461\nf 8490 8491 8464 8463\nf 8492 8469 8466 8465\nf 8494 8532 8495 8492 8491\nf 8496 8534 8497 8470 8469\nf 8498 8536 8499 8472 8471\nf 8500 8538 8501 8474 8473\nf 8502 8540 8503 8476 8475\nf 8504 8518 8505 8478 8477\nf 8506 8520 8507 8480 8479\nf 8508 8522 8509 8482 8481\nf 8510 8524 8511 8484 8483\nf 8512 8526 8513 8486 8485\nf 8514 8528 8515 8488 8487\nf 8516 8530 8493 8490 8489\nf 9093 9094 8205 8206\nf 9095 9096 8227 8228\nf 9097 9098 8225 8226\nf 9099 9100 8223 8224\nf 9101 9102 8221 8222\nf 9103 9104 8219 8220\nf 9105 9106 8217 8218\nf 9107 9108 8215 8216\nf 9109 9110 8213 8214\nf 9111 9112 8211 8212\nf 9113 9114 8209 8210\nf 9115 9116 8207 8208\nf 8587 8588 8502 8539\nf 8585 8586 8501 8538\nf 8583 8584 8500 8537\nf 8581 8582 8499 8536\nf 8579 8580 8498 8535\nf 8577 8578 8497 8534\nf 8575 8576 8496 8533\nf 8573 8574 8495 8532\nf 8571 8572 8494 8531\nf 8569 8570 8493 8530\nf 8567 8568 8516 8529\nf 8542 8543 8517 8503\nf 8541 8542 8503 8540\nf 8568 8569 8530 8516\nf 8570 8571 8531 8493\nf 8572 8573 8532 8494\nf 8574 8575 8533 8495\nf 8576 8577 8534 8496\nf 8578 8579 8535 8497\nf 8580 8581 8536 8498\nf 8582 8583 8537 8499\nf 8584 8585 8538 8500\nf 8586 8587 8539 8501\nf 8588 8541 8540 8502\nf 8565 8566 8515 8528\nf 8563 8564 8514 8527\nf 8561 8562 8513 8526\nf 8559 8560 8512 8525\nf 8557 8558 8511 8524\nf 8555 8556 8510 8523\nf 8553 8554 8509 8522\nf 8551 8552 8508 8521\nf 8549 8550 8507 8520\nf 8547 8548 8506 8519\nf 8545 8546 8505 8518\nf 8543 8544 8504 8517\nf 8544 8545 8518 8504\nf 8546 8547 8519 8505\nf 8548 8549 8520 8506\nf 8550 8551 8521 8507\nf 8552 8553 8522 8508\nf 8554 8555 8523 8509\nf 8556 8557 8524 8510\nf 8558 8559 8525 8511\nf 8560 8561 8526 8512\nf 8562 8563 8527 8513\nf 8564 8565 8528 8514\nf 8566 8567 8529 8515\nf 8636 8589 8586 8585\nf 8634 8635 8584 8583\nf 8632 8633 8582 8581\nf 8630 8631 8580 8579\nf 8628 8629 8578 8577\nf 8626 8627 8576 8575\nf 8624 8625 8574 8573\nf 8622 8623 8572 8571\nf 8620 8621 8570 8569\nf 8618 8619 8568 8567\nf 8616 8617 8566 8565\nf 8614 8615 8564 8563\nf 8612 8613 8562 8561\nf 8610 8611 8560 8559\nf 8608 8609 8558 8557\nf 8606 8607 8556 8555\nf 8604 8605 8554 8553\nf 8602 8603 8552 8551\nf 8600 8601 8550 8549\nf 8598 8599 8548 8547\nf 8596 8597 8546 8545\nf 8594 8595 8544 8543\nf 8592 8593 8542 8541\nf 8590 8591 8588 8587\nf 8589 8590 8587 8586\nf 8591 8592 8541 8588\nf 8593 8594 8543 8542\nf 8595 8596 8545 8544\nf 8597 8598 8547 8546\nf 8599 8600 8549 8548\nf 8601 8602 8551 8550\nf 8603 8604 8553 8552\nf 8605 8606 8555 8554\nf 8607 8608 8557 8556\nf 8609 8610 8559 8558\nf 8611 8612 8561 8560\nf 8613 8614 8563 8562\nf 8615 8616 8565 8564\nf 8617 8618 8567 8566\nf 8619 8620 8569 8568\nf 8621 8622 8571 8570\nf 8623 8624 8573 8572\nf 8625 8626 8575 8574\nf 8627 8628 8577 8576\nf 8629 8630 8579 8578\nf 8631 8632 8581 8580\nf 8633 8634 8583 8582\nf 8635 8636 8585 8584\nf 8683 8684 8633 8632\nf 8681 8682 8631 8630\nf 8679 8680 8629 8628\nf 8677 8678 8627 8626\nf 8675 8676 8625 8624\nf 8673 8674 8623 8622\nf 8671 8672 8621 8620\nf 8669 8670 8619 8618\nf 8667 8668 8617 8616\nf 8665 8666 8615 8614\nf 8663 8664 8613 8612\nf 8661 8662 8611 8610\nf 8659 8660 8609 8608\nf 8657 8658 8607 8606\nf 8655 8656 8605 8604\nf 8653 8654 8603 8602\nf 8651 8652 8601 8600\nf 8649 8650 8599 8598\nf 8647 8648 8597 8596\nf 8645 8646 8595 8594\nf 8643 8644 8593 8592\nf 8641 8642 8591 8590\nf 8639 8640 8589 8636\nf 8637 8638 8635 8634\nf 8638 8639 8636 8635\nf 8640 8641 8590 8589\nf 8642 8643 8592 8591\nf 8644 8645 8594 8593\nf 8646 8647 8596 8595\nf 8648 8649 8598 8597\nf 8650 8651 8600 8599\nf 8652 8653 8602 8601\nf 8654 8655 8604 8603\nf 8656 8657 8606 8605\nf 8658 8659 8608 8607\nf 8660 8661 8610 8609\nf 8662 8663 8612 8611\nf 8664 8665 8614 8613\nf 8666 8667 8616 8615\nf 8668 8669 8618 8617\nf 8670 8671 8620 8619\nf 8672 8673 8622 8621\nf 8674 8675 8624 8623\nf 8676 8677 8626 8625\nf 8678 8679 8628 8627\nf 8680 8681 8630 8629\nf 8682 8683 8632 8631\nf 8684 8637 8634 8633\nf 8732 8685 8682 8681\nf 8730 8731 8680 8679\nf 8728 8729 8678 8677\nf 8726 8727 8676 8675\nf 8724 8725 8674 8673\nf 8722 8723 8672 8671\nf 8720 8721 8670 8669\nf 8718 8719 8668 8667\nf 8716 8717 8666 8665\nf 8714 8715 8664 8663\nf 8712 8713 8662 8661\nf 8710 8711 8660 8659\nf 8708 8709 8658 8657\nf 8706 8707 8656 8655\nf 8704 8705 8654 8653\nf 8702 8703 8652 8651\nf 8700 8701 8650 8649\nf 8698 8699 8648 8647\nf 8696 8697 8646 8645\nf 8694 8695 8644 8643\nf 8692 8693 8642 8641\nf 8690 8691 8640 8639\nf 8688 8689 8638 8637\nf 8686 8687 8684 8683\nf 8685 8686 8683 8682\nf 8687 8688 8637 8684\nf 8689 8690 8639 8638\nf 8691 8692 8641 8640\nf 8693 8694 8643 8642\nf 8695 8696 8645 8644\nf 8697 8698 8647 8646\nf 8699 8700 8649 8648\nf 8701 8702 8651 8650\nf 8703 8704 8653 8652\nf 8705 8706 8655 8654\nf 8707 8708 8657 8656\nf 8709 8710 8659 8658\nf 8711 8712 8661 8660\nf 8713 8714 8663 8662\nf 8715 8716 8665 8664\nf 8717 8718 8667 8666\nf 8719 8720 8669 8668\nf 8721 8722 8671 8670\nf 8723 8724 8673 8672\nf 8725 8726 8675 8674\nf 8727 8728 8677 8676\nf 8729 8730 8679 8678\nf 8731 8732 8681 8680\nf 8779 8780 8729 8728\nf 8777 8778 8727 8726\nf 8775 8776 8725 8724\nf 8773 8774 8723 8722\nf 8771 8772 8721 8720\nf 8769 8770 8719 8718\nf 8767 8768 8717 8716\nf 8765 8766 8715 8714\nf 8763 8764 8713 8712\nf 8761 8762 8711 8710\nf 8759 8760 8709 8708\nf 8757 8758 8707 8706\nf 8755 8756 8705 8704\nf 8753 8754 8703 8702\nf 8751 8752 8701 8700\nf 8749 8750 8699 8698\nf 8747 8748 8697 8696\nf 8745 8746 8695 8694\nf 8743 8744 8693 8692\nf 8741 8742 8691 8690\nf 8739 8740 8689 8688\nf 8737 8738 8687 8686\nf 8735 8736 8685 8732\nf 8733 8734 8731 8730\nf 8734 8735 8732 8731\nf 8736 8737 8686 8685\nf 8738 8739 8688 8687\nf 8740 8741 8690 8689\nf 8742 8743 8692 8691\nf 8744 8745 8694 8693\nf 8746 8747 8696 8695\nf 8748 8749 8698 8697\nf 8750 8751 8700 8699\nf 8752 8753 8702 8701\nf 8754 8755 8704 8703\nf 8756 8757 8706 8705\nf 8758 8759 8708 8707\nf 8760 8761 8710 8709\nf 8762 8763 8712 8711\nf 8764 8765 8714 8713\nf 8766 8767 8716 8715\nf 8768 8769 8718 8717\nf 8770 8771 8720 8719\nf 8772 8773 8722 8721\nf 8774 8775 8724 8723\nf 8776 8777 8726 8725\nf 8778 8779 8728 8727\nf 8780 8733 8730 8729\nf 8827 8828 8773 8772\nf 8825 8826 8771 8770\nf 8823 8824 8769 8768\nf 8821 8822 8767 8766\nf 8819 8820 8765 8764\nf 8817 8818 8763 8762\nf 8815 8816 8761 8760\nf 8813 8814 8759 8758\nf 8811 8812 8757 8756\nf 8809 8810 8755 8754\nf 8807 8808 8753 8752\nf 8805 8806 8751 8750\nf 8803 8804 8749 8748\nf 8801 8802 8747 8746\nf 8799 8800 8745 8744\nf 8797 8798 8743 8742\nf 8795 8796 8741 8740\nf 8793 8794 8739 8738\nf 8791 8792 8737 8736\nf 8789 8790 8735 8734\nf 8787 8788 8733 8780\nf 8785 8786 8779 8778\nf 8783 8784 8777 8776\nf 8781 8782 8775 8774\nf 8782 8783 8776 8775\nf 8784 8785 8778 8777\nf 8786 8787 8780 8779\nf 8788 8789 8734 8733\nf 8790 8791 8736 8735\nf 8792 8793 8738 8737\nf 8794 8795 8740 8739\nf 8796 8797 8742 8741\nf 8798 8799 8744 8743\nf 8800 8801 8746 8745\nf 8802 8803 8748 8747\nf 8804 8805 8750 8749\nf 8806 8807 8752 8751\nf 8808 8809 8754 8753\nf 8810 8811 8756 8755\nf 8812 8813 8758 8757\nf 8814 8815 8760 8759\nf 8816 8817 8762 8761\nf 8818 8819 8764 8763\nf 8820 8821 8766 8765\nf 8822 8823 8768 8767\nf 8824 8825 8770 8769\nf 8826 8827 8772 8771\nf 8828 8781 8774 8773\nf 9092 9069 9066 9065\nf 9090 9091 9064 9063\nf 9088 9089 9062 9061\nf 9086 9087 9060 9059\nf 9084 9085 9058 9057\nf 9082 9083 9056 9055\nf 9080 9081 9054 9053\nf 9078 9079 9052 9051\nf 9076 9077 9050 9049\nf 9074 9075 9048 9047\nf 9072 9073 9046 9045\nf 9070 9071 9068 9067\nf 9068 9045 9042 9041\nf 9066 9067 9040 9039\nf 9064 9065 9038 9037\nf 9062 9063 9036 9035\nf 9060 9061 9034 9033\nf 9058 9059 9032 9031\nf 9056 9057 9030 9029\nf 9054 9055 9028 9027\nf 9052 9053 9026 9025\nf 9050 9051 9024 9023\nf 9048 9049 9022 9021\nf 9046 9047 9044 9043\nf 9044 9021 9018 9017\nf 9042 9043 9016 9015\nf 9040 9041 9014 9013\nf 9038 9039 9012 9011\nf 9036 9037 9010 9009\nf 9034 9035 9008 9007\nf 9032 9033 9006 9005\nf 9030 9031 9004 9003\nf 9028 9029 9002 9001\nf 9026 9027 9000 8999\nf 9024 9025 8998 8997\nf 9022 9023 9020 9019\nf 9020 8997 8994 8993\nf 9018 9019 8992 8991\nf 9016 9017 8990 8989\nf 9014 9015 8988 8987\nf 9012 9013 8986 8985\nf 9010 9011 8984 8983\nf 9008 9009 8982 8981\nf 9006 9007 8980 8979\nf 9004 9005 8978 8977\nf 9002 9003 8976 8975\nf 9000 9001 8974 8973\nf 8998 8999 8996 8995\nf 8996 8973 8970 8969\nf 8994 8995 8968 8967\nf 8992 8993 8966 8965\nf 8990 8991 8964 8963\nf 8988 8989 8962 8961\nf 8986 8987 8960 8959\nf 8984 8985 8958 8957\nf 8982 8983 8956 8955\nf 8980 8981 8954 8953\nf 8978 8979 8952 8951\nf 8976 8977 8950 8949\nf 8974 8975 8972 8971\nf 8972 8949 8946 8945\nf 8970 8971 8944 8943\nf 8968 8969 8942 8941\nf 8966 8967 8940 8939\nf 8964 8965 8938 8937\nf 8962 8963 8936 8935\nf 8960 8961 8934 8933\nf 8958 8959 8932 8931\nf 8956 8957 8930 8929\nf 8954 8955 8928 8927\nf 8952 8953 8926 8925\nf 8950 8951 8948 8947\nf 8948 8925 8922 8921\nf 8946 8947 8920 8919\nf 8944 8945 8918 8917\nf 8942 8943 8916 8915\nf 8940 8941 8914 8913\nf 8938 8939 8912 8911\nf 8936 8937 8910 8909\nf 8934 8935 8908 8907\nf 8932 8933 8906 8905\nf 8930 8931 8904 8903\nf 8928 8929 8902 8901\nf 8926 8927 8924 8923\nf 8924 8901 8899 8898\nf 8922 8923 8897 8896\nf 8920 8921 8895 8894\nf 8918 8919 8893 8892\nf 8916 8917 8891 8890\nf 8914 8915 8889 8888\nf 8912 8913 8887 8886\nf 8910 8911 8885 8884\nf 8908 8909 8883 8882\nf 8906 8907 8881 8880\nf 8904 8905 8879 8878\nf 8902 8903 8877 8900\nf 8900 8877 8874 8873\nf 8899 8900 8872 8871\nf 8898 8899 8870 8869\nf 8897 8898 8868 8867\nf 8896 8897 8866 8865\nf 8895 8896 8864 8863\nf 8894 8895 8862 8861\nf 8893 8894 8860 8859\nf 8892 8893 8858 8857\nf 8891 8892 8856 8855\nf 8890 8891 8854 8853\nf 8889 8890 8852 8851\nf 8888 8889 8850 8849\nf 8887 8888 8848 8847\nf 8886 8887 8846 8845\nf 8885 8886 8844 8843\nf 8884 8885 8842 8841\nf 8883 8884 8840 8839\nf 8882 8883 8838 8837\nf 8881 8882 8836 8835\nf 8880 8881 8834 8833\nf 8879 8880 8832 8831\nf 8878 8879 8830 8829\nf 8877 8878 8876 8875\nf 8876 8829 8826 8825\nf 8874 8875 8824 8823\nf 8872 8873 8822 8821\nf 8870 8871 8820 8819\nf 8868 8869 8818 8817\nf 8866 8867 8816 8815\nf 8864 8865 8814 8813\nf 8862 8863 8812 8811\nf 8860 8861 8810 8809\nf 8858 8859 8808 8807\nf 8856 8857 8806 8805\nf 8854 8855 8804 8803\nf 8852 8853 8802 8801\nf 8850 8851 8800 8799\nf 8848 8849 8798 8797\nf 8846 8847 8796 8795\nf 8844 8845 8794 8793\nf 8842 8843 8792 8791\nf 8840 8841 8790 8789\nf 8838 8839 8788 8787\nf 8836 8837 8786 8785\nf 8834 8835 8784 8783\nf 8832 8833 8782 8781\nf 8830 8831 8828 8827\nf 8829 8830 8827 8826\nf 8831 8832 8781 8828\nf 8833 8834 8783 8782\nf 8835 8836 8785 8784\nf 8837 8838 8787 8786\nf 8839 8840 8789 8788\nf 8841 8842 8791 8790\nf 8843 8844 8793 8792\nf 8845 8846 8795 8794\nf 8847 8848 8797 8796\nf 8849 8850 8799 8798\nf 8851 8852 8801 8800\nf 8853 8854 8803 8802\nf 8855 8856 8805 8804\nf 8857 8858 8807 8806\nf 8859 8860 8809 8808\nf 8861 8862 8811 8810\nf 8863 8864 8813 8812\nf 8865 8866 8815 8814\nf 8867 8868 8817 8816\nf 8869 8870 8819 8818\nf 8871 8872 8821 8820\nf 8873 8874 8823 8822\nf 8875 8876 8825 8824\nf 8877 8875 8874\nf 8878 8829 8876\nf 8879 8831 8830\nf 8880 8833 8832\nf 8881 8835 8834\nf 8882 8837 8836\nf 8883 8839 8838\nf 8884 8841 8840\nf 8885 8843 8842\nf 8886 8845 8844\nf 8887 8847 8846\nf 8888 8849 8848\nf 8889 8851 8850\nf 8890 8853 8852\nf 8891 8855 8854\nf 8892 8857 8856\nf 8893 8859 8858\nf 8894 8861 8860\nf 8895 8863 8862\nf 8896 8865 8864\nf 8897 8867 8866\nf 8898 8869 8868\nf 8899 8871 8870\nf 8900 8873 8872\nf 8901 8902 8900 8899\nf 8903 8904 8878 8877\nf 8905 8906 8880 8879\nf 8907 8908 8882 8881\nf 8909 8910 8884 8883\nf 8911 8912 8886 8885\nf 8913 8914 8888 8887\nf 8915 8916 8890 8889\nf 8917 8918 8892 8891\nf 8919 8920 8894 8893\nf 8921 8922 8896 8895\nf 8923 8924 8898 8897\nf 8925 8926 8923 8922\nf 8927 8928 8901 8924\nf 8929 8930 8903 8902\nf 8931 8932 8905 8904\nf 8933 8934 8907 8906\nf 8935 8936 8909 8908\nf 8937 8938 8911 8910\nf 8939 8940 8913 8912\nf 8941 8942 8915 8914\nf 8943 8944 8917 8916\nf 8945 8946 8919 8918\nf 8947 8948 8921 8920\nf 8949 8950 8947 8946\nf 8951 8952 8925 8948\nf 8953 8954 8927 8926\nf 8955 8956 8929 8928\nf 8957 8958 8931 8930\nf 8959 8960 8933 8932\nf 8961 8962 8935 8934\nf 8963 8964 8937 8936\nf 8965 8966 8939 8938\nf 8967 8968 8941 8940\nf 8969 8970 8943 8942\nf 8971 8972 8945 8944\nf 8973 8974 8971 8970\nf 8975 8976 8949 8972\nf 8977 8978 8951 8950\nf 8979 8980 8953 8952\nf 8981 8982 8955 8954\nf 8983 8984 8957 8956\nf 8985 8986 8959 8958\nf 8987 8988 8961 8960\nf 8989 8990 8963 8962\nf 8991 8992 8965 8964\nf 8993 8994 8967 8966\nf 8995 8996 8969 8968\nf 8997 8998 8995 8994\nf 8999 9000 8973 8996\nf 9001 9002 8975 8974\nf 9003 9004 8977 8976\nf 9005 9006 8979 8978\nf 9007 9008 8981 8980\nf 9009 9010 8983 8982\nf 9011 9012 8985 8984\nf 9013 9014 8987 8986\nf 9015 9016 8989 8988\nf 9017 9018 8991 8990\nf 9019 9020 8993 8992\nf 9021 9022 9019 9018\nf 9023 9024 8997 9020\nf 9025 9026 8999 8998\nf 9027 9028 9001 9000\nf 9029 9030 9003 9002\nf 9031 9032 9005 9004\nf 9033 9034 9007 9006\nf 9035 9036 9009 9008\nf 9037 9038 9011 9010\nf 9039 9040 9013 9012\nf 9041 9042 9015 9014\nf 9043 9044 9017 9016\nf 9045 9046 9043 9042\nf 9047 9048 9021 9044\nf 9049 9050 9023 9022\nf 9051 9052 9025 9024\nf 9053 9054 9027 9026\nf 9055 9056 9029 9028\nf 9057 9058 9031 9030\nf 9059 9060 9033 9032\nf 9061 9062 9035 9034\nf 9063 9064 9037 9036\nf 9065 9066 9039 9038\nf 9067 9068 9041 9040\nf 9069 9070 9067 9066\nf 9071 9072 9045 9068\nf 9073 9074 9047 9046\nf 9075 9076 9049 9048\nf 9077 9078 9051 9050\nf 9079 9080 9053 9052\nf 9081 9082 9055 9054\nf 9083 9084 9057 9056\nf 9085 9086 9059 9058\nf 9087 9088 9061 9060\nf 9089 9090 9063 9062\nf 9091 9092 9065 9064\ng t1\ns 1\nf 9620 9597 9570 9569\nf 9618 9619 9568 9567\nf 9616 9617 9566 9565\nf 9614 9615 9564 9563\nf 9612 9613 9562 9561\nf 9610 9611 9560 9559\nf 9608 9609 9558 9557\nf 9606 9607 9556 9555\nf 9604 9605 9554 9553\nf 9602 9603 9552 9551\nf 9600 9601 9550 9549\nf 9598 9599 9572 9571\nf 9596 9573 9546 9545\nf 9594 9595 9544 9543\nf 9592 9593 9542 9541\nf 9590 9591 9540 9539\nf 9588 9589 9538 9537\nf 9586 9587 9536 9535\nf 9584 9585 9534 9533\nf 9582 9583 9532 9531\nf 9580 9581 9530 9529\nf 9578 9579 9528 9527\nf 9576 9577 9526 9525\nf 9574 9575 9548 9547\nf 9572 9549 9522 9521\nf 9570 9571 9520 9519\nf 9568 9569 9518 9517\nf 9566 9567 9516 9515\nf 9564 9565 9514 9513\nf 9562 9563 9512 9511\nf 9560 9561 9510 9509\nf 9558 9559 9508 9507\nf 9556 9557 9506 9505\nf 9554 9555 9504 9503\nf 9552 9553 9502 9501\nf 9550 9551 9524 9523\nf 9548 9525 9498 9497\nf 9546 9547 9496 9495\nf 9544 9545 9494 9493\nf 9542 9543 9492 9491\nf 9540 9541 9490 9489\nf 9538 9539 9488 9487\nf 9536 9537 9486 9485\nf 9534 9535 9484 9483\nf 9532 9533 9482 9481\nf 9530 9531 9480 9479\nf 9528 9529 9478 9477\nf 9526 9527 9500 9499\nf 9524 9501 9454 9455\nf 9522 9523 9456 9457\nf 9520 9521 9458 9459\nf 9518 9519 9460 9461\nf 9516 9517 9462 9463\nf 9514 9515 9464 9465\nf 9512 9513 9466 9467\nf 9510 9511 9468 9469\nf 9508 9509 9470 9471\nf 9506 9507 9472 9473\nf 9504 9505 9474 9475\nf 9502 9503 9476 9453\nf 9500 9477 9140 9139\nf 9498 9499 9138 9137\nf 9496 9497 9136 9135\nf 9494 9495 9134 9133\nf 9492 9493 9132 9131\nf 9490 9491 9130 9129\nf 9488 9489 9128 9127\nf 9486 9487 9126 9125\nf 9484 9485 9124 9123\nf 9482 9483 9122 9121\nf 9480 9481 9120 9119\nf 9478 9479 9118 9117\nf 9476 9475 9451 9452\nf 9474 9473 9449 9450\nf 9472 9471 9447 9448\nf 9470 9469 9445 9446\nf 9468 9467 9443 9444\nf 9466 9465 9441 9442\nf 9464 9463 9439 9440\nf 9462 9461 9437 9438\nf 9460 9459 9435 9436\nf 9458 9457 9433 9434\nf 9456 9455 9431 9432\nf 9454 9453 9429 9430\nf 9452 9451 9427 9428\nf 9450 9449 9425 9426\nf 9448 9447 9423 9424\nf 9446 9445 9421 9422\nf 9444 9443 9419 9420\nf 9442 9441 9417 9418\nf 9440 9439 9415 9416\nf 9438 9437 9413 9414\nf 9436 9435 9411 9412\nf 9434 9433 9409 9410\nf 9432 9431 9407 9408\nf 9430 9429 9405 9406\nf 9428 9427 9403 9404\nf 9426 9425 9401 9402\nf 9424 9423 9399 9400\nf 9422 9421 9397 9398\nf 9420 9419 9395 9396\nf 9418 9417 9393 9394\nf 9416 9415 9391 9392\nf 9414 9413 9389 9390\nf 9412 9411 9387 9388\nf 9410 9409 9385 9386\nf 9408 9407 9383 9384\nf 9406 9405 9381 9382\nf 9404 9403 9379 9380\nf 9402 9401 9377 9378\nf 9400 9399 9375 9376\nf 9398 9397 9373 9374\nf 9396 9395 9371 9372\nf 9394 9393 9369 9370\nf 9392 9391 9367 9368\nf 9390 9389 9365 9366\nf 9388 9387 9363 9364\nf 9386 9385 9361 9362\nf 9384 9383 9359 9360\nf 9382 9381 9357 9358\nf 9380 9379 9355 9356\nf 9378 9377 9353 9354\nf 9376 9375 9351 9352\nf 9374 9373 9349 9350\nf 9372 9371 9347 9348\nf 9370 9369 9345 9346\nf 9368 9367 9343 9344\nf 9366 9365 9341 9342\nf 9364 9363 9339 9340\nf 9362 9361 9337 9338\nf 9360 9359 9335 9336\nf 9358 9357 9333 9334\nf 9356 9355 9331 9332\nf 9354 9353 9329 9330\nf 9352 9351 9327 9328\nf 9350 9349 9325 9326\nf 9348 9347 9323 9324\nf 9346 9345 9321 9322\nf 9344 9343 9319 9320\nf 9342 9341 9317 9318\nf 9340 9339 9315 9316\nf 9338 9337 9313 9314\nf 9336 9335 9311 9312\nf 9334 9333 9309 9310\nf 9332 9331 9307 9308\nf 9330 9329 9305 9306\nf 9328 9327 9303 9304\nf 9326 9325 9301 9302\nf 9324 9323 9299 9300\nf 9322 9321 9297 9298\nf 9320 9319 9295 9296\nf 9318 9317 9293 9294\nf 9316 9315 9291 9292\nf 9314 9313 9289 9290\nf 9312 9311 9287 9288\nf 9310 9309 9285 9286\nf 9308 9307 9283 9284\nf 9306 9305 9281 9282\nf 9304 9303 9279 9280\nf 9302 9301 9277 9278\nf 9300 9299 9275 9276\nf 9298 9297 9273 9274\nf 9296 9295 9271 9272\nf 9294 9293 9269 9270\nf 9292 9291 9267 9268\nf 9290 9289 9265 9266\nf 9288 9287 9263 9264\nf 9286 9285 9261 9262\nf 9284 9283 9259 9260\nf 9282 9281 9257 9258\nf 9280 9279 9255 9256\nf 9278 9277 9253 9254\nf 9276 9275 9251 9252\nf 9274 9273 9249 9250\nf 9272 9271 9247 9248\nf 9270 9269 9245 9246\nf 9268 9267 9243 9244\nf 9266 9265 9241 9242\nf 9264 9263 9239 9240\nf 9262 9261 9237 9238\nf 9260 9259 9235 9236\nf 9258 9257 9233 9234\nf 9256 9255 9231 9232\nf 9254 9253 9229 9230\nf 9252 9251 9227 9228\nf 9250 9249 9225 9226\nf 9248 9247 9223 9224\nf 9246 9245 9221 9222\nf 9244 9243 9219 9220\nf 9242 9241 9217 9218\nf 9240 9239 9215 9216\nf 9238 9237 9213 9214\nf 9236 9235 9211 9212\nf 9234 9233 9209 9210\nf 9232 9231 9207 9208\nf 9230 9229 9205 9206\nf 9228 9227 9203 9204\nf 9226 9225 9201 9202\nf 9224 9223 9199 9200\nf 9222 9221 9197 9198\nf 9220 9219 9195 9196\nf 9218 9217 9193 9194\nf 9216 9215 9191 9192\nf 9214 9213 9189 9190\nf 9212 9211 9187 9188\nf 9210 9209 9185 9186\nf 9208 9207 9183 9184\nf 9206 9205 9181 9182\nf 9204 9203 9179 9180\nf 9202 9201 9177 9178\nf 9200 9199 9175 9176\nf 9198 9197 9173 9174\nf 9196 9195 9171 9172\nf 9194 9193 9169 9170\nf 9192 9191 9167 9168\nf 9190 9189 9165 9166\nf 9188 9187 9163 9164\nf 9186 9185 9161 9162\nf 9184 9183 9159 9160\nf 9182 9181 9157 9158\nf 9180 9179 9155 9156\nf 9178 9177 9153 9154\nf 9176 9175 9151 9152\nf 9174 9173 9149 9150\nf 9172 9171 9147 9148\nf 9170 9169 9145 9146\nf 9168 9167 9143 9144\nf 9166 9165 9141 9142\nf 9164 9163 9139 9140\nf 9162 9161 9137 9138\nf 9160 9159 9135 9136\nf 9158 9157 9133 9134\nf 9156 9155 9131 9132\nf 9154 9153 9129 9130\nf 9152 9151 9127 9128\nf 9150 9149 9125 9126\nf 9148 9147 9123 9124\nf 9146 9145 9121 9122\nf 9144 9143 9119 9120\nf 9142 9141 9117 9118\nf 9143 9142 9118 9119\nf 9145 9144 9120 9121\nf 9147 9146 9122 9123\nf 9149 9148 9124 9125\nf 9151 9150 9126 9127\nf 9153 9152 9128 9129\nf 9155 9154 9130 9131\nf 9157 9156 9132 9133\nf 9159 9158 9134 9135\nf 9161 9160 9136 9137\nf 9163 9162 9138 9139\nf 9141 9164 9140 9117\nf 9167 9166 9142 9143\nf 9169 9168 9144 9145\nf 9171 9170 9146 9147\nf 9173 9172 9148 9149\nf 9175 9174 9150 9151\nf 9177 9176 9152 9153\nf 9179 9178 9154 9155\nf 9181 9180 9156 9157\nf 9183 9182 9158 9159\nf 9185 9184 9160 9161\nf 9187 9186 9162 9163\nf 9165 9188 9164 9141\nf 9191 9190 9166 9167\nf 9193 9192 9168 9169\nf 9195 9194 9170 9171\nf 9197 9196 9172 9173\nf 9199 9198 9174 9175\nf 9201 9200 9176 9177\nf 9203 9202 9178 9179\nf 9205 9204 9180 9181\nf 9207 9206 9182 9183\nf 9209 9208 9184 9185\nf 9211 9210 9186 9187\nf 9189 9212 9188 9165\nf 9215 9214 9190 9191\nf 9217 9216 9192 9193\nf 9219 9218 9194 9195\nf 9221 9220 9196 9197\nf 9223 9222 9198 9199\nf 9225 9224 9200 9201\nf 9227 9226 9202 9203\nf 9229 9228 9204 9205\nf 9231 9230 9206 9207\nf 9233 9232 9208 9209\nf 9235 9234 9210 9211\nf 9213 9236 9212 9189\nf 9239 9238 9214 9215\nf 9241 9240 9216 9217\nf 9243 9242 9218 9219\nf 9245 9244 9220 9221\nf 9247 9246 9222 9223\nf 9249 9248 9224 9225\nf 9251 9250 9226 9227\nf 9253 9252 9228 9229\nf 9255 9254 9230 9231\nf 9257 9256 9232 9233\nf 9259 9258 9234 9235\nf 9237 9260 9236 9213\nf 9263 9262 9238 9239\nf 9265 9264 9240 9241\nf 9267 9266 9242 9243\nf 9269 9268 9244 9245\nf 9271 9270 9246 9247\nf 9273 9272 9248 9249\nf 9275 9274 9250 9251\nf 9277 9276 9252 9253\nf 9279 9278 9254 9255\nf 9281 9280 9256 9257\nf 9283 9282 9258 9259\nf 9261 9284 9260 9237\nf 9287 9286 9262 9263\nf 9289 9288 9264 9265\nf 9291 9290 9266 9267\nf 9293 9292 9268 9269\nf 9295 9294 9270 9271\nf 9297 9296 9272 9273\nf 9299 9298 9274 9275\nf 9301 9300 9276 9277\nf 9303 9302 9278 9279\nf 9305 9304 9280 9281\nf 9307 9306 9282 9283\nf 9285 9308 9284 9261\nf 9311 9310 9286 9287\nf 9313 9312 9288 9289\nf 9315 9314 9290 9291\nf 9317 9316 9292 9293\nf 9319 9318 9294 9295\nf 9321 9320 9296 9297\nf 9323 9322 9298 9299\nf 9325 9324 9300 9301\nf 9327 9326 9302 9303\nf 9329 9328 9304 9305\nf 9331 9330 9306 9307\nf 9309 9332 9308 9285\nf 9335 9334 9310 9311\nf 9337 9336 9312 9313\nf 9339 9338 9314 9315\nf 9341 9340 9316 9317\nf 9343 9342 9318 9319\nf 9345 9344 9320 9321\nf 9347 9346 9322 9323\nf 9349 9348 9324 9325\nf 9351 9350 9326 9327\nf 9353 9352 9328 9329\nf 9355 9354 9330 9331\nf 9333 9356 9332 9309\nf 9359 9358 9334 9335\nf 9361 9360 9336 9337\nf 9363 9362 9338 9339\nf 9365 9364 9340 9341\nf 9367 9366 9342 9343\nf 9369 9368 9344 9345\nf 9371 9370 9346 9347\nf 9373 9372 9348 9349\nf 9375 9374 9350 9351\nf 9377 9376 9352 9353\nf 9379 9378 9354 9355\nf 9357 9380 9356 9333\nf 9383 9382 9358 9359\nf 9385 9384 9360 9361\nf 9387 9386 9362 9363\nf 9389 9388 9364 9365\nf 9391 9390 9366 9367\nf 9393 9392 9368 9369\nf 9395 9394 9370 9371\nf 9397 9396 9372 9373\nf 9399 9398 9374 9375\nf 9401 9400 9376 9377\nf 9403 9402 9378 9379\nf 9381 9404 9380 9357\nf 9407 9406 9382 9383\nf 9409 9408 9384 9385\nf 9411 9410 9386 9387\nf 9413 9412 9388 9389\nf 9415 9414 9390 9391\nf 9417 9416 9392 9393\nf 9419 9418 9394 9395\nf 9421 9420 9396 9397\nf 9423 9422 9398 9399\nf 9425 9424 9400 9401\nf 9427 9426 9402 9403\nf 9405 9428 9404 9381\nf 9431 9430 9406 9407\nf 9433 9432 9408 9409\nf 9435 9434 9410 9411\nf 9437 9436 9412 9413\nf 9439 9438 9414 9415\nf 9441 9440 9416 9417\nf 9443 9442 9418 9419\nf 9445 9444 9420 9421\nf 9447 9446 9422 9423\nf 9449 9448 9424 9425\nf 9451 9450 9426 9427\nf 9429 9452 9428 9405\nf 9455 9454 9430 9431\nf 9457 9456 9432 9433\nf 9459 9458 9434 9435\nf 9461 9460 9436 9437\nf 9463 9462 9438 9439\nf 9465 9464 9440 9441\nf 9467 9466 9442 9443\nf 9469 9468 9444 9445\nf 9471 9470 9446 9447\nf 9473 9472 9448 9449\nf 9475 9474 9450 9451\nf 9453 9476 9452 9429\nf 9477 9478 9117 9140\nf 9479 9480 9119 9118\nf 9481 9482 9121 9120\nf 9483 9484 9123 9122\nf 9485 9486 9125 9124\nf 9487 9488 9127 9126\nf 9489 9490 9129 9128\nf 9491 9492 9131 9130\nf 9493 9494 9133 9132\nf 9495 9496 9135 9134\nf 9497 9498 9137 9136\nf 9499 9500 9139 9138\nf 9501 9502 9453 9454\nf 9503 9504 9475 9476\nf 9505 9506 9473 9474\nf 9507 9508 9471 9472\nf 9509 9510 9469 9470\nf 9511 9512 9467 9468\nf 9513 9514 9465 9466\nf 9515 9516 9463 9464\nf 9517 9518 9461 9462\nf 9519 9520 9459 9460\nf 9521 9522 9457 9458\nf 9523 9524 9455 9456\nf 9525 9526 9499 9498\nf 9527 9528 9477 9500\nf 9529 9530 9479 9478\nf 9531 9532 9481 9480\nf 9533 9534 9483 9482\nf 9535 9536 9485 9484\nf 9537 9538 9487 9486\nf 9539 9540 9489 9488\nf 9541 9542 9491 9490\nf 9543 9544 9493 9492\nf 9545 9546 9495 9494\nf 9547 9548 9497 9496\nf 9549 9550 9523 9522\nf 9551 9552 9501 9524\nf 9553 9554 9503 9502\nf 9555 9556 9505 9504\nf 9557 9558 9507 9506\nf 9559 9560 9509 9508\nf 9561 9562 9511 9510\nf 9563 9564 9513 9512\nf 9565 9566 9515 9514\nf 9567 9568 9517 9516\nf 9569 9570 9519 9518\nf 9571 9572 9521 9520\nf 9573 9574 9547 9546\nf 9575 9576 9525 9548\nf 9577 9578 9527 9526\nf 9579 9580 9529 9528\nf 9581 9582 9531 9530\nf 9583 9584 9533 9532\nf 9585 9586 9535 9534\nf 9587 9588 9537 9536\nf 9589 9590 9539 9538\nf 9591 9592 9541 9540\nf 9593 9594 9543 9542\nf 9595 9596 9545 9544\nf 9597 9598 9571 9570\nf 9599 9600 9549 9572\nf 9601 9602 9551 9550\nf 9603 9604 9553 9552\nf 9605 9606 9555 9554\nf 9607 9608 9557 9556\nf 9609 9610 9559 9558\nf 9611 9612 9561 9560\nf 9613 9614 9563 9562\nf 9615 9616 9565 9564\nf 9617 9618 9567 9566\nf 9619 9620 9569 9568\nf 9618 9617 9616 9615 9614 9613 9612 9611 9610 9609 9608 9607 9606 9605 9604 9603 9602 9601 9600 9599 9598 9597 9620 9619\nf 9594 9593 9592 9591 9590 9589 9588 9587 9586 9585 9584 9583 9582 9581 9580 9579 9578 9577 9576 9575 9574 9573 9596 9595\ng t2\nf 10172 10149 10122 10121\nf 10170 10171 10120 10119\nf 10168 10169 10118 10117\nf 10166 10167 10116 10115\nf 10164 10165 10114 10113\nf 10162 10163 10112 10111\nf 10160 10161 10110 10109\nf 10158 10159 10108 10107\nf 10156 10157 10106 10105\nf 10154 10155 10104 10103\nf 10152 10153 10102 10101\nf 10150 10151 10124 10123\nf 10148 10125 10098 10097\nf 10146 10147 10096 10095\nf 10144 10145 10094 10093\nf 10142 10143 10092 10091\nf 10140 10141 10090 10089\nf 10138 10139 10088 10087\nf 10136 10137 10086 10085\nf 10134 10135 10084 10083\nf 10132 10133 10082 10081\nf 10130 10131 10080 10079\nf 10128 10129 10078 10077\nf 10126 10127 10100 10099\nf 10124 10101 10074 10073\nf 10122 10123 10072 10071\nf 10120 10121 10070 10069\nf 10118 10119 10068 10067\nf 10116 10117 10066 10065\nf 10114 10115 10064 10063\nf 10112 10113 10062 10061\nf 10110 10111 10060 10059\nf 10108 10109 10058 10057\nf 10106 10107 10056 10055\nf 10104 10105 10054 10053\nf 10102 10103 10076 10075\nf 10100 10077 10050 10049\nf 10098 10099 10048 10047\nf 10096 10097 10046 10045\nf 10094 10095 10044 10043\nf 10092 10093 10042 10041\nf 10090 10091 10040 10039\nf 10088 10089 10038 10037\nf 10086 10087 10036 10035\nf 10084 10085 10034 10033\nf 10082 10083 10032 10031\nf 10080 10081 10030 10029\nf 10078 10079 10052 10051\nf 10076 10053 10026 10025\nf 10074 10075 10024 10023\nf 10072 10073 10022 10021\nf 10070 10071 10020 10019\nf 10068 10069 10018 10017\nf 10066 10067 10016 10015\nf 10064 10065 10014 10013\nf 10062 10063 10012 10011\nf 10060 10061 10010 10009\nf 10058 10059 10008 10007\nf 10056 10057 10006 10005\nf 10054 10055 10028 10027\nf 10052 10029 10002 10001\nf 10050 10051 10000 9999\nf 10048 10049 9998 9997\nf 10046 10047 9996 9995\nf 10044 10045 9994 9993\nf 10042 10043 9992 9991\nf 10040 10041 9990 9989\nf 10038 10039 9988 9987\nf 10036 10037 9986 9985\nf 10034 10035 9984 9983\nf 10032 10033 9982 9981\nf 10030 10031 10004 10003\nf 10028 10005 9644 9643\nf 10026 10027 9642 9641\nf 10024 10025 9640 9639\nf 10022 10023 9638 9637\nf 10020 10021 9636 9635\nf 10018 10019 9634 9633\nf 10016 10017 9632 9631\nf 10014 10015 9630 9629\nf 10012 10013 9628 9627\nf 10010 10011 9626 9625\nf 10008 10009 9624 9623\nf 10006 10007 9622 9621\nf 10004 9981 9958 9959\nf 10002 10003 9960 9961\nf 10000 10001 9962 9963\nf 9998 9999 9964 9965\nf 9996 9997 9966 9967\nf 9994 9995 9968 9969\nf 9992 9993 9970 9971\nf 9990 9991 9972 9973\nf 9988 9989 9974 9975\nf 9986 9987 9976 9977\nf 9984 9985 9978 9979\nf 9982 9983 9980 9957\nf 9980 9979 9955 9956\nf 9978 9977 9953 9954\nf 9976 9975 9951 9952\nf 9974 9973 9949 9950\nf 9972 9971 9947 9948\nf 9970 9969 9945 9946\nf 9968 9967 9943 9944\nf 9966 9965 9941 9942\nf 9964 9963 9939 9940\nf 9962 9961 9937 9938\nf 9960 9959 9935 9936\nf 9958 9957 9933 9934\nf 9956 9955 9931 9932\nf 9954 9953 9929 9930\nf 9952 9951 9927 9928\nf 9950 9949 9925 9926\nf 9948 9947 9923 9924\nf 9946 9945 9921 9922\nf 9944 9943 9919 9920\nf 9942 9941 9917 9918\nf 9940 9939 9915 9916\nf 9938 9937 9913 9914\nf 9936 9935 9911 9912\nf 9934 9933 9909 9910\nf 9932 9931 9907 9908\nf 9930 9929 9905 9906\nf 9928 9927 9903 9904\nf 9926 9925 9901 9902\nf 9924 9923 9899 9900\nf 9922 9921 9897 9898\nf 9920 9919 9895 9896\nf 9918 9917 9893 9894\nf 9916 9915 9891 9892\nf 9914 9913 9889 9890\nf 9912 9911 9887 9888\nf 9910 9909 9885 9886\nf 9908 9907 9883 9884\nf 9906 9905 9881 9882\nf 9904 9903 9879 9880\nf 9902 9901 9877 9878\nf 9900 9899 9875 9876\nf 9898 9897 9873 9874\nf 9896 9895 9871 9872\nf 9894 9893 9869 9870\nf 9892 9891 9867 9868\nf 9890 9889 9865 9866\nf 9888 9887 9863 9864\nf 9886 9885 9861 9862\nf 9884 9883 9859 9860\nf 9882 9881 9857 9858\nf 9880 9879 9855 9856\nf 9878 9877 9853 9854\nf 9876 9875 9851 9852\nf 9874 9873 9849 9850\nf 9872 9871 9847 9848\nf 9870 9869 9845 9846\nf 9868 9867 9843 9844\nf 9866 9865 9841 9842\nf 9864 9863 9839 9840\nf 9862 9861 9837 9838\nf 9860 9859 9835 9836\nf 9858 9857 9833 9834\nf 9856 9855 9831 9832\nf 9854 9853 9829 9830\nf 9852 9851 9827 9828\nf 9850 9849 9825 9826\nf 9848 9847 9823 9824\nf 9846 9845 9821 9822\nf 9844 9843 9819 9820\nf 9842 9841 9817 9818\nf 9840 9839 9815 9816\nf 9838 9837 9813 9814\nf 9836 9835 9811 9812\nf 9834 9833 9809 9810\nf 9832 9831 9807 9808\nf 9830 9829 9805 9806\nf 9828 9827 9803 9804\nf 9826 9825 9801 9802\nf 9824 9823 9799 9800\nf 9822 9821 9797 9798\nf 9820 9819 9795 9796\nf 9818 9817 9793 9794\nf 9816 9815 9791 9792\nf 9814 9813 9789 9790\nf 9812 9811 9787 9788\nf 9810 9809 9785 9786\nf 9808 9807 9783 9784\nf 9806 9805 9781 9782\nf 9804 9803 9779 9780\nf 9802 9801 9777 9778\nf 9800 9799 9775 9776\nf 9798 9797 9773 9774\nf 9796 9795 9771 9772\nf 9794 9793 9769 9770\nf 9792 9791 9767 9768\nf 9790 9789 9765 9766\nf 9788 9787 9763 9764\nf 9786 9785 9761 9762\nf 9784 9783 9759 9760\nf 9782 9781 9757 9758\nf 9780 9779 9755 9756\nf 9778 9777 9753 9754\nf 9776 9775 9751 9752\nf 9774 9773 9749 9750\nf 9772 9771 9747 9748\nf 9770 9769 9745 9746\nf 9768 9767 9743 9744\nf 9766 9765 9741 9742\nf 9764 9763 9739 9740\nf 9762 9761 9737 9738\nf 9760 9759 9735 9736\nf 9758 9757 9733 9734\nf 9756 9755 9731 9732\nf 9754 9753 9729 9730\nf 9752 9751 9727 9728\nf 9750 9749 9725 9726\nf 9748 9747 9723 9724\nf 9746 9745 9721 9722\nf 9744 9743 9719 9720\nf 9742 9741 9717 9718\nf 9740 9739 9715 9716\nf 9738 9737 9713 9714\nf 9736 9735 9711 9712\nf 9734 9733 9709 9710\nf 9732 9731 9707 9708\nf 9730 9729 9705 9706\nf 9728 9727 9703 9704\nf 9726 9725 9701 9702\nf 9724 9723 9699 9700\nf 9722 9721 9697 9698\nf 9720 9719 9695 9696\nf 9718 9717 9693 9694\nf 9716 9715 9691 9692\nf 9714 9713 9689 9690\nf 9712 9711 9687 9688\nf 9710 9709 9685 9686\nf 9708 9707 9683 9684\nf 9706 9705 9681 9682\nf 9704 9703 9679 9680\nf 9702 9701 9677 9678\nf 9700 9699 9675 9676\nf 9698 9697 9673 9674\nf 9696 9695 9671 9672\nf 9694 9693 9669 9670\nf 9692 9691 9667 9668\nf 9690 9689 9665 9666\nf 9688 9687 9663 9664\nf 9686 9685 9661 9662\nf 9684 9683 9659 9660\nf 9682 9681 9657 9658\nf 9680 9679 9655 9656\nf 9678 9677 9653 9654\nf 9676 9675 9651 9652\nf 9674 9673 9649 9650\nf 9672 9671 9647 9648\nf 9670 9669 9645 9646\nf 9668 9667 9643 9644\nf 9666 9665 9641 9642\nf 9664 9663 9639 9640\nf 9662 9661 9637 9638\nf 9660 9659 9635 9636\nf 9658 9657 9633 9634\nf 9656 9655 9631 9632\nf 9654 9653 9629 9630\nf 9652 9651 9627 9628\nf 9650 9649 9625 9626\nf 9648 9647 9623 9624\nf 9646 9645 9621 9622\nf 9647 9646 9622 9623\nf 9649 9648 9624 9625\nf 9651 9650 9626 9627\nf 9653 9652 9628 9629\nf 9655 9654 9630 9631\nf 9657 9656 9632 9633\nf 9659 9658 9634 9635\nf 9661 9660 9636 9637\nf 9663 9662 9638 9639\nf 9665 9664 9640 9641\nf 9667 9666 9642 9643\nf 9645 9668 9644 9621\nf 9671 9670 9646 9647\nf 9673 9672 9648 9649\nf 9675 9674 9650 9651\nf 9677 9676 9652 9653\nf 9679 9678 9654 9655\nf 9681 9680 9656 9657\nf 9683 9682 9658 9659\nf 9685 9684 9660 9661\nf 9687 9686 9662 9663\nf 9689 9688 9664 9665\nf 9691 9690 9666 9667\nf 9669 9692 9668 9645\nf 9695 9694 9670 9671\nf 9697 9696 9672 9673\nf 9699 9698 9674 9675\nf 9701 9700 9676 9677\nf 9703 9702 9678 9679\nf 9705 9704 9680 9681\nf 9707 9706 9682 9683\nf 9709 9708 9684 9685\nf 9711 9710 9686 9687\nf 9713 9712 9688 9689\nf 9715 9714 9690 9691\nf 9693 9716 9692 9669\nf 9719 9718 9694 9695\nf 9721 9720 9696 9697\nf 9723 9722 9698 9699\nf 9725 9724 9700 9701\nf 9727 9726 9702 9703\nf 9729 9728 9704 9705\nf 9731 9730 9706 9707\nf 9733 9732 9708 9709\nf 9735 9734 9710 9711\nf 9737 9736 9712 9713\nf 9739 9738 9714 9715\nf 9717 9740 9716 9693\nf 9743 9742 9718 9719\nf 9745 9744 9720 9721\nf 9747 9746 9722 9723\nf 9749 9748 9724 9725\nf 9751 9750 9726 9727\nf 9753 9752 9728 9729\nf 9755 9754 9730 9731\nf 9757 9756 9732 9733\nf 9759 9758 9734 9735\nf 9761 9760 9736 9737\nf 9763 9762 9738 9739\nf 9741 9764 9740 9717\nf 9767 9766 9742 9743\nf 9769 9768 9744 9745\nf 9771 9770 9746 9747\nf 9773 9772 9748 9749\nf 9775 9774 9750 9751\nf 9777 9776 9752 9753\nf 9779 9778 9754 9755\nf 9781 9780 9756 9757\nf 9783 9782 9758 9759\nf 9785 9784 9760 9761\nf 9787 9786 9762 9763\nf 9765 9788 9764 9741\nf 9791 9790 9766 9767\nf 9793 9792 9768 9769\nf 9795 9794 9770 9771\nf 9797 9796 9772 9773\nf 9799 9798 9774 9775\nf 9801 9800 9776 9777\nf 9803 9802 9778 9779\nf 9805 9804 9780 9781\nf 9807 9806 9782 9783\nf 9809 9808 9784 9785\nf 9811 9810 9786 9787\nf 9789 9812 9788 9765\nf 9815 9814 9790 9791\nf 9817 9816 9792 9793\nf 9819 9818 9794 9795\nf 9821 9820 9796 9797\nf 9823 9822 9798 9799\nf 9825 9824 9800 9801\nf 9827 9826 9802 9803\nf 9829 9828 9804 9805\nf 9831 9830 9806 9807\nf 9833 9832 9808 9809\nf 9835 9834 9810 9811\nf 9813 9836 9812 9789\nf 9839 9838 9814 9815\nf 9841 9840 9816 9817\nf 9843 9842 9818 9819\nf 9845 9844 9820 9821\nf 9847 9846 9822 9823\nf 9849 9848 9824 9825\nf 9851 9850 9826 9827\nf 9853 9852 9828 9829\nf 9855 9854 9830 9831\nf 9857 9856 9832 9833\nf 9859 9858 9834 9835\nf 9837 9860 9836 9813\nf 9863 9862 9838 9839\nf 9865 9864 9840 9841\nf 9867 9866 9842 9843\nf 9869 9868 9844 9845\nf 9871 9870 9846 9847\nf 9873 9872 9848 9849\nf 9875 9874 9850 9851\nf 9877 9876 9852 9853\nf 9879 9878 9854 9855\nf 9881 9880 9856 9857\nf 9883 9882 9858 9859\nf 9861 9884 9860 9837\nf 9887 9886 9862 9863\nf 9889 9888 9864 9865\nf 9891 9890 9866 9867\nf 9893 9892 9868 9869\nf 9895 9894 9870 9871\nf 9897 9896 9872 9873\nf 9899 9898 9874 9875\nf 9901 9900 9876 9877\nf 9903 9902 9878 9879\nf 9905 9904 9880 9881\nf 9907 9906 9882 9883\nf 9885 9908 9884 9861\nf 9911 9910 9886 9887\nf 9913 9912 9888 9889\nf 9915 9914 9890 9891\nf 9917 9916 9892 9893\nf 9919 9918 9894 9895\nf 9921 9920 9896 9897\nf 9923 9922 9898 9899\nf 9925 9924 9900 9901\nf 9927 9926 9902 9903\nf 9929 9928 9904 9905\nf 9931 9930 9906 9907\nf 9909 9932 9908 9885\nf 9935 9934 9910 9911\nf 9937 9936 9912 9913\nf 9939 9938 9914 9915\nf 9941 9940 9916 9917\nf 9943 9942 9918 9919\nf 9945 9944 9920 9921\nf 9947 9946 9922 9923\nf 9949 9948 9924 9925\nf 9951 9950 9926 9927\nf 9953 9952 9928 9929\nf 9955 9954 9930 9931\nf 9933 9956 9932 9909\nf 9959 9958 9934 9935\nf 9961 9960 9936 9937\nf 9963 9962 9938 9939\nf 9965 9964 9940 9941\nf 9967 9966 9942 9943\nf 9969 9968 9944 9945\nf 9971 9970 9946 9947\nf 9973 9972 9948 9949\nf 9975 9974 9950 9951\nf 9977 9976 9952 9953\nf 9979 9978 9954 9955\nf 9957 9980 9956 9933\nf 9981 9982 9957 9958\nf 9983 9984 9979 9980\nf 9985 9986 9977 9978\nf 9987 9988 9975 9976\nf 9989 9990 9973 9974\nf 9991 9992 9971 9972\nf 9993 9994 9969 9970\nf 9995 9996 9967 9968\nf 9997 9998 9965 9966\nf 9999 10000 9963 9964\nf 10001 10002 9961 9962\nf 10003 10004 9959 9960\nf 10005 10006 9621 9644\nf 10007 10008 9623 9622\nf 10009 10010 9625 9624\nf 10011 10012 9627 9626\nf 10013 10014 9629 9628\nf 10015 10016 9631 9630\nf 10017 10018 9633 9632\nf 10019 10020 9635 9634\nf 10021 10022 9637 9636\nf 10023 10024 9639 9638\nf 10025 10026 9641 9640\nf 10027 10028 9643 9642\nf 10029 10030 10003 10002\nf 10031 10032 9981 10004\nf 10033 10034 9983 9982\nf 10035 10036 9985 9984\nf 10037 10038 9987 9986\nf 10039 10040 9989 9988\nf 10041 10042 9991 9990\nf 10043 10044 9993 9992\nf 10045 10046 9995 9994\nf 10047 10048 9997 9996\nf 10049 10050 9999 9998\nf 10051 10052 10001 10000\nf 10053 10054 10027 10026\nf 10055 10056 10005 10028\nf 10057 10058 10007 10006\nf 10059 10060 10009 10008\nf 10061 10062 10011 10010\nf 10063 10064 10013 10012\nf 10065 10066 10015 10014\nf 10067 10068 10017 10016\nf 10069 10070 10019 10018\nf 10071 10072 10021 10020\nf 10073 10074 10023 10022\nf 10075 10076 10025 10024\nf 10077 10078 10051 10050\nf 10079 10080 10029 10052\nf 10081 10082 10031 10030\nf 10083 10084 10033 10032\nf 10085 10086 10035 10034\nf 10087 10088 10037 10036\nf 10089 10090 10039 10038\nf 10091 10092 10041 10040\nf 10093 10094 10043 10042\nf 10095 10096 10045 10044\nf 10097 10098 10047 10046\nf 10099 10100 10049 10048\nf 10101 10102 10075 10074\nf 10103 10104 10053 10076\nf 10105 10106 10055 10054\nf 10107 10108 10057 10056\nf 10109 10110 10059 10058\nf 10111 10112 10061 10060\nf 10113 10114 10063 10062\nf 10115 10116 10065 10064\nf 10117 10118 10067 10066\nf 10119 10120 10069 10068\nf 10121 10122 10071 10070\nf 10123 10124 10073 10072\nf 10125 10126 10099 10098\nf 10127 10128 10077 10100\nf 10129 10130 10079 10078\nf 10131 10132 10081 10080\nf 10133 10134 10083 10082\nf 10135 10136 10085 10084\nf 10137 10138 10087 10086\nf 10139 10140 10089 10088\nf 10141 10142 10091 10090\nf 10143 10144 10093 10092\nf 10145 10146 10095 10094\nf 10147 10148 10097 10096\nf 10149 10150 10123 10122\nf 10151 10152 10101 10124\nf 10153 10154 10103 10102\nf 10155 10156 10105 10104\nf 10157 10158 10107 10106\nf 10159 10160 10109 10108\nf 10161 10162 10111 10110\nf 10163 10164 10113 10112\nf 10165 10166 10115 10114\nf 10167 10168 10117 10116\nf 10169 10170 10119 10118\nf 10171 10172 10121 10120\nf 10146 10145 10144 10143 10142 10141 10140 10139 10138 10137 10136 10135 10134 10133 10132 10131 10130 10129 10128 10127 10126 10125 10148 10147\nf 10170 10169 10168 10167 10166 10165 10164 10163 10162 10161 10160 10159 10158 10157 10156 10155 10154 10153 10152 10151 10150 10149 10172 10171\ng t3\nf 10772 10749 10722 10721\nf 10770 10771 10720 10719\nf 10768 10769 10718 10717\nf 10766 10767 10716 10715\nf 10764 10765 10714 10713\nf 10762 10763 10712 10711\nf 10760 10761 10710 10709\nf 10758 10759 10708 10707\nf 10756 10757 10706 10705\nf 10754 10755 10704 10703\nf 10752 10753 10702 10701\nf 10750 10751 10724 10723\nf 10748 10725 10698 10697\nf 10746 10747 10696 10695\nf 10744 10745 10694 10693\nf 10742 10743 10692 10691\nf 10740 10741 10690 10689\nf 10738 10739 10688 10687\nf 10736 10737 10686 10685\nf 10734 10735 10684 10683\nf 10732 10733 10682 10681\nf 10730 10731 10680 10679\nf 10728 10729 10678 10677\nf 10726 10727 10700 10699\nf 10724 10701 10674 10673\nf 10722 10723 10672 10671\nf 10720 10721 10670 10669\nf 10718 10719 10668 10667\nf 10716 10717 10666 10665\nf 10714 10715 10664 10663\nf 10712 10713 10662 10661\nf 10710 10711 10660 10659\nf 10708 10709 10658 10657\nf 10706 10707 10656 10655\nf 10704 10705 10654 10653\nf 10702 10703 10676 10675\nf 10700 10677 10650 10649\nf 10698 10699 10648 10647\nf 10696 10697 10646 10645\nf 10694 10695 10644 10643\nf 10692 10693 10642 10641\nf 10690 10691 10640 10639\nf 10688 10689 10638 10637\nf 10686 10687 10636 10635\nf 10684 10685 10634 10633\nf 10682 10683 10632 10631\nf 10680 10681 10630 10629\nf 10678 10679 10652 10651\nf 10676 10653 10626 10625\nf 10674 10675 10624 10623\nf 10672 10673 10622 10621\nf 10670 10671 10620 10619\nf 10668 10669 10618 10617\nf 10666 10667 10616 10615\nf 10664 10665 10614 10613\nf 10662 10663 10612 10611\nf 10660 10661 10610 10609\nf 10658 10659 10608 10607\nf 10656 10657 10606 10605\nf 10654 10655 10628 10627\nf 10652 10629 10602 10601\nf 10650 10651 10600 10599\nf 10648 10649 10598 10597\nf 10646 10647 10596 10595\nf 10644 10645 10594 10593\nf 10642 10643 10592 10591\nf 10640 10641 10590 10589\nf 10638 10639 10588 10587\nf 10636 10637 10586 10585\nf 10634 10635 10584 10583\nf 10632 10633 10582 10581\nf 10630 10631 10604 10603\nf 10628 10605 10578 10577\nf 10626 10627 10576 10575\nf 10624 10625 10574 10573\nf 10622 10623 10572 10571\nf 10620 10621 10570 10569\nf 10618 10619 10568 10567\nf 10616 10617 10566 10565\nf 10614 10615 10564 10563\nf 10612 10613 10562 10561\nf 10610 10611 10560 10559\nf 10608 10609 10558 10557\nf 10606 10607 10580 10579\nf 10604 10581 10554 10553\nf 10602 10603 10552 10551\nf 10600 10601 10550 10549\nf 10598 10599 10548 10547\nf 10596 10597 10546 10545\nf 10594 10595 10544 10543\nf 10592 10593 10542 10541\nf 10590 10591 10540 10539\nf 10588 10589 10538 10537\nf 10586 10587 10536 10535\nf 10584 10585 10534 10533\nf 10582 10583 10556 10555\nf 10580 10557 10510 10511\nf 10578 10579 10512 10513\nf 10576 10577 10514 10515\nf 10574 10575 10516 10517\nf 10572 10573 10518 10519\nf 10570 10571 10520 10521\nf 10568 10569 10522 10523\nf 10566 10567 10524 10525\nf 10564 10565 10526 10527\nf 10562 10563 10528 10529\nf 10560 10561 10530 10531\nf 10558 10559 10532 10509\nf 10556 10533 10196 10195\nf 10554 10555 10194 10193\nf 10552 10553 10192 10191\nf 10550 10551 10190 10189\nf 10548 10549 10188 10187\nf 10546 10547 10186 10185\nf 10544 10545 10184 10183\nf 10542 10543 10182 10181\nf 10540 10541 10180 10179\nf 10538 10539 10178 10177\nf 10536 10537 10176 10175\nf 10534 10535 10174 10173\nf 10532 10531 10507 10508\nf 10530 10529 10505 10506\nf 10528 10527 10503 10504\nf 10526 10525 10501 10502\nf 10524 10523 10499 10500\nf 10522 10521 10497 10498\nf 10520 10519 10495 10496\nf 10518 10517 10493 10494\nf 10516 10515 10491 10492\nf 10514 10513 10489 10490\nf 10512 10511 10487 10488\nf 10510 10509 10485 10486\nf 10508 10507 10483 10484\nf 10506 10505 10481 10482\nf 10504 10503 10479 10480\nf 10502 10501 10477 10478\nf 10500 10499 10475 10476\nf 10498 10497 10473 10474\nf 10496 10495 10471 10472\nf 10494 10493 10469 10470\nf 10492 10491 10467 10468\nf 10490 10489 10465 10466\nf 10488 10487 10463 10464\nf 10486 10485 10461 10462\nf 10484 10483 10459 10460\nf 10482 10481 10457 10458\nf 10480 10479 10455 10456\nf 10478 10477 10453 10454\nf 10476 10475 10451 10452\nf 10474 10473 10449 10450\nf 10472 10471 10447 10448\nf 10470 10469 10445 10446\nf 10468 10467 10443 10444\nf 10466 10465 10441 10442\nf 10464 10463 10439 10440\nf 10462 10461 10437 10438\nf 10460 10459 10435 10436\nf 10458 10457 10433 10434\nf 10456 10455 10431 10432\nf 10454 10453 10429 10430\nf 10452 10451 10427 10428\nf 10450 10449 10425 10426\nf 10448 10447 10423 10424\nf 10446 10445 10421 10422\nf 10444 10443 10419 10420\nf 10442 10441 10417 10418\nf 10440 10439 10415 10416\nf 10438 10437 10413 10414\nf 10436 10435 10411 10412\nf 10434 10433 10409 10410\nf 10432 10431 10407 10408\nf 10430 10429 10405 10406\nf 10428 10427 10403 10404\nf 10426 10425 10401 10402\nf 10424 10423 10399 10400\nf 10422 10421 10397 10398\nf 10420 10419 10395 10396\nf 10418 10417 10393 10394\nf 10416 10415 10391 10392\nf 10414 10413 10389 10390\nf 10412 10411 10387 10388\nf 10410 10409 10385 10386\nf 10408 10407 10383 10384\nf 10406 10405 10381 10382\nf 10404 10403 10379 10380\nf 10402 10401 10377 10378\nf 10400 10399 10375 10376\nf 10398 10397 10373 10374\nf 10396 10395 10371 10372\nf 10394 10393 10369 10370\nf 10392 10391 10367 10368\nf 10390 10389 10365 10366\nf 10388 10387 10363 10364\nf 10386 10385 10361 10362\nf 10384 10383 10359 10360\nf 10382 10381 10357 10358\nf 10380 10379 10355 10356\nf 10378 10377 10353 10354\nf 10376 10375 10351 10352\nf 10374 10373 10349 10350\nf 10372 10371 10347 10348\nf 10370 10369 10345 10346\nf 10368 10367 10343 10344\nf 10366 10365 10341 10342\nf 10364 10363 10339 10340\nf 10362 10361 10337 10338\nf 10360 10359 10335 10336\nf 10358 10357 10333 10334\nf 10356 10355 10331 10332\nf 10354 10353 10329 10330\nf 10352 10351 10327 10328\nf 10350 10349 10325 10326\nf 10348 10347 10323 10324\nf 10346 10345 10321 10322\nf 10344 10343 10319 10320\nf 10342 10341 10317 10318\nf 10340 10339 10315 10316\nf 10338 10337 10313 10314\nf 10336 10335 10311 10312\nf 10334 10333 10309 10310\nf 10332 10331 10307 10308\nf 10330 10329 10305 10306\nf 10328 10327 10303 10304\nf 10326 10325 10301 10302\nf 10324 10323 10299 10300\nf 10322 10321 10297 10298\nf 10320 10319 10295 10296\nf 10318 10317 10293 10294\nf 10316 10315 10291 10292\nf 10314 10313 10289 10290\nf 10312 10311 10287 10288\nf 10310 10309 10285 10286\nf 10308 10307 10283 10284\nf 10306 10305 10281 10282\nf 10304 10303 10279 10280\nf 10302 10301 10277 10278\nf 10300 10299 10275 10276\nf 10298 10297 10273 10274\nf 10296 10295 10271 10272\nf 10294 10293 10269 10270\nf 10292 10291 10267 10268\nf 10290 10289 10265 10266\nf 10288 10287 10263 10264\nf 10286 10285 10261 10262\nf 10284 10283 10259 10260\nf 10282 10281 10257 10258\nf 10280 10279 10255 10256\nf 10278 10277 10253 10254\nf 10276 10275 10251 10252\nf 10274 10273 10249 10250\nf 10272 10271 10247 10248\nf 10270 10269 10245 10246\nf 10268 10267 10243 10244\nf 10266 10265 10241 10242\nf 10264 10263 10239 10240\nf 10262 10261 10237 10238\nf 10260 10259 10235 10236\nf 10258 10257 10233 10234\nf 10256 10255 10231 10232\nf 10254 10253 10229 10230\nf 10252 10251 10227 10228\nf 10250 10249 10225 10226\nf 10248 10247 10223 10224\nf 10246 10245 10221 10222\nf 10244 10243 10219 10220\nf 10242 10241 10217 10218\nf 10240 10239 10215 10216\nf 10238 10237 10213 10214\nf 10236 10235 10211 10212\nf 10234 10233 10209 10210\nf 10232 10231 10207 10208\nf 10230 10229 10205 10206\nf 10228 10227 10203 10204\nf 10226 10225 10201 10202\nf 10224 10223 10199 10200\nf 10222 10221 10197 10198\nf 10220 10219 10195 10196\nf 10218 10217 10193 10194\nf 10216 10215 10191 10192\nf 10214 10213 10189 10190\nf 10212 10211 10187 10188\nf 10210 10209 10185 10186\nf 10208 10207 10183 10184\nf 10206 10205 10181 10182\nf 10204 10203 10179 10180\nf 10202 10201 10177 10178\nf 10200 10199 10175 10176\nf 10198 10197 10173 10174\nf 10199 10198 10174 10175\nf 10201 10200 10176 10177\nf 10203 10202 10178 10179\nf 10205 10204 10180 10181\nf 10207 10206 10182 10183\nf 10209 10208 10184 10185\nf 10211 10210 10186 10187\nf 10213 10212 10188 10189\nf 10215 10214 10190 10191\nf 10217 10216 10192 10193\nf 10219 10218 10194 10195\nf 10197 10220 10196 10173\nf 10223 10222 10198 10199\nf 10225 10224 10200 10201\nf 10227 10226 10202 10203\nf 10229 10228 10204 10205\nf 10231 10230 10206 10207\nf 10233 10232 10208 10209\nf 10235 10234 10210 10211\nf 10237 10236 10212 10213\nf 10239 10238 10214 10215\nf 10241 10240 10216 10217\nf 10243 10242 10218 10219\nf 10221 10244 10220 10197\nf 10247 10246 10222 10223\nf 10249 10248 10224 10225\nf 10251 10250 10226 10227\nf 10253 10252 10228 10229\nf 10255 10254 10230 10231\nf 10257 10256 10232 10233\nf 10259 10258 10234 10235\nf 10261 10260 10236 10237\nf 10263 10262 10238 10239\nf 10265 10264 10240 10241\nf 10267 10266 10242 10243\nf 10245 10268 10244 10221\nf 10271 10270 10246 10247\nf 10273 10272 10248 10249\nf 10275 10274 10250 10251\nf 10277 10276 10252 10253\nf 10279 10278 10254 10255\nf 10281 10280 10256 10257\nf 10283 10282 10258 10259\nf 10285 10284 10260 10261\nf 10287 10286 10262 10263\nf 10289 10288 10264 10265\nf 10291 10290 10266 10267\nf 10269 10292 10268 10245\nf 10295 10294 10270 10271\nf 10297 10296 10272 10273\nf 10299 10298 10274 10275\nf 10301 10300 10276 10277\nf 10303 10302 10278 10279\nf 10305 10304 10280 10281\nf 10307 10306 10282 10283\nf 10309 10308 10284 10285\nf 10311 10310 10286 10287\nf 10313 10312 10288 10289\nf 10315 10314 10290 10291\nf 10293 10316 10292 10269\nf 10319 10318 10294 10295\nf 10321 10320 10296 10297\nf 10323 10322 10298 10299\nf 10325 10324 10300 10301\nf 10327 10326 10302 10303\nf 10329 10328 10304 10305\nf 10331 10330 10306 10307\nf 10333 10332 10308 10309\nf 10335 10334 10310 10311\nf 10337 10336 10312 10313\nf 10339 10338 10314 10315\nf 10317 10340 10316 10293\nf 10343 10342 10318 10319\nf 10345 10344 10320 10321\nf 10347 10346 10322 10323\nf 10349 10348 10324 10325\nf 10351 10350 10326 10327\nf 10353 10352 10328 10329\nf 10355 10354 10330 10331\nf 10357 10356 10332 10333\nf 10359 10358 10334 10335\nf 10361 10360 10336 10337\nf 10363 10362 10338 10339\nf 10341 10364 10340 10317\nf 10367 10366 10342 10343\nf 10369 10368 10344 10345\nf 10371 10370 10346 10347\nf 10373 10372 10348 10349\nf 10375 10374 10350 10351\nf 10377 10376 10352 10353\nf 10379 10378 10354 10355\nf 10381 10380 10356 10357\nf 10383 10382 10358 10359\nf 10385 10384 10360 10361\nf 10387 10386 10362 10363\nf 10365 10388 10364 10341\nf 10391 10390 10366 10367\nf 10393 10392 10368 10369\nf 10395 10394 10370 10371\nf 10397 10396 10372 10373\nf 10399 10398 10374 10375\nf 10401 10400 10376 10377\nf 10403 10402 10378 10379\nf 10405 10404 10380 10381\nf 10407 10406 10382 10383\nf 10409 10408 10384 10385\nf 10411 10410 10386 10387\nf 10389 10412 10388 10365\nf 10415 10414 10390 10391\nf 10417 10416 10392 10393\nf 10419 10418 10394 10395\nf 10421 10420 10396 10397\nf 10423 10422 10398 10399\nf 10425 10424 10400 10401\nf 10427 10426 10402 10403\nf 10429 10428 10404 10405\nf 10431 10430 10406 10407\nf 10433 10432 10408 10409\nf 10435 10434 10410 10411\nf 10413 10436 10412 10389\nf 10439 10438 10414 10415\nf 10441 10440 10416 10417\nf 10443 10442 10418 10419\nf 10445 10444 10420 10421\nf 10447 10446 10422 10423\nf 10449 10448 10424 10425\nf 10451 10450 10426 10427\nf 10453 10452 10428 10429\nf 10455 10454 10430 10431\nf 10457 10456 10432 10433\nf 10459 10458 10434 10435\nf 10437 10460 10436 10413\nf 10463 10462 10438 10439\nf 10465 10464 10440 10441\nf 10467 10466 10442 10443\nf 10469 10468 10444 10445\nf 10471 10470 10446 10447\nf 10473 10472 10448 10449\nf 10475 10474 10450 10451\nf 10477 10476 10452 10453\nf 10479 10478 10454 10455\nf 10481 10480 10456 10457\nf 10483 10482 10458 10459\nf 10461 10484 10460 10437\nf 10487 10486 10462 10463\nf 10489 10488 10464 10465\nf 10491 10490 10466 10467\nf 10493 10492 10468 10469\nf 10495 10494 10470 10471\nf 10497 10496 10472 10473\nf 10499 10498 10474 10475\nf 10501 10500 10476 10477\nf 10503 10502 10478 10479\nf 10505 10504 10480 10481\nf 10507 10506 10482 10483\nf 10485 10508 10484 10461\nf 10511 10510 10486 10487\nf 10513 10512 10488 10489\nf 10515 10514 10490 10491\nf 10517 10516 10492 10493\nf 10519 10518 10494 10495\nf 10521 10520 10496 10497\nf 10523 10522 10498 10499\nf 10525 10524 10500 10501\nf 10527 10526 10502 10503\nf 10529 10528 10504 10505\nf 10531 10530 10506 10507\nf 10509 10532 10508 10485\nf 10533 10534 10173 10196\nf 10535 10536 10175 10174\nf 10537 10538 10177 10176\nf 10539 10540 10179 10178\nf 10541 10542 10181 10180\nf 10543 10544 10183 10182\nf 10545 10546 10185 10184\nf 10547 10548 10187 10186\nf 10549 10550 10189 10188\nf 10551 10552 10191 10190\nf 10553 10554 10193 10192\nf 10555 10556 10195 10194\nf 10557 10558 10509 10510\nf 10559 10560 10531 10532\nf 10561 10562 10529 10530\nf 10563 10564 10527 10528\nf 10565 10566 10525 10526\nf 10567 10568 10523 10524\nf 10569 10570 10521 10522\nf 10571 10572 10519 10520\nf 10573 10574 10517 10518\nf 10575 10576 10515 10516\nf 10577 10578 10513 10514\nf 10579 10580 10511 10512\nf 10581 10582 10555 10554\nf 10583 10584 10533 10556\nf 10585 10586 10535 10534\nf 10587 10588 10537 10536\nf 10589 10590 10539 10538\nf 10591 10592 10541 10540\nf 10593 10594 10543 10542\nf 10595 10596 10545 10544\nf 10597 10598 10547 10546\nf 10599 10600 10549 10548\nf 10601 10602 10551 10550\nf 10603 10604 10553 10552\nf 10605 10606 10579 10578\nf 10607 10608 10557 10580\nf 10609 10610 10559 10558\nf 10611 10612 10561 10560\nf 10613 10614 10563 10562\nf 10615 10616 10565 10564\nf 10617 10618 10567 10566\nf 10619 10620 10569 10568\nf 10621 10622 10571 10570\nf 10623 10624 10573 10572\nf 10625 10626 10575 10574\nf 10627 10628 10577 10576\nf 10629 10630 10603 10602\nf 10631 10632 10581 10604\nf 10633 10634 10583 10582\nf 10635 10636 10585 10584\nf 10637 10638 10587 10586\nf 10639 10640 10589 10588\nf 10641 10642 10591 10590\nf 10643 10644 10593 10592\nf 10645 10646 10595 10594\nf 10647 10648 10597 10596\nf 10649 10650 10599 10598\nf 10651 10652 10601 10600\nf 10653 10654 10627 10626\nf 10655 10656 10605 10628\nf 10657 10658 10607 10606\nf 10659 10660 10609 10608\nf 10661 10662 10611 10610\nf 10663 10664 10613 10612\nf 10665 10666 10615 10614\nf 10667 10668 10617 10616\nf 10669 10670 10619 10618\nf 10671 10672 10621 10620\nf 10673 10674 10623 10622\nf 10675 10676 10625 10624\nf 10677 10678 10651 10650\nf 10679 10680 10629 10652\nf 10681 10682 10631 10630\nf 10683 10684 10633 10632\nf 10685 10686 10635 10634\nf 10687 10688 10637 10636\nf 10689 10690 10639 10638\nf 10691 10692 10641 10640\nf 10693 10694 10643 10642\nf 10695 10696 10645 10644\nf 10697 10698 10647 10646\nf 10699 10700 10649 10648\nf 10701 10702 10675 10674\nf 10703 10704 10653 10676\nf 10705 10706 10655 10654\nf 10707 10708 10657 10656\nf 10709 10710 10659 10658\nf 10711 10712 10661 10660\nf 10713 10714 10663 10662\nf 10715 10716 10665 10664\nf 10717 10718 10667 10666\nf 10719 10720 10669 10668\nf 10721 10722 10671 10670\nf 10723 10724 10673 10672\nf 10725 10726 10699 10698\nf 10727 10728 10677 10700\nf 10729 10730 10679 10678\nf 10731 10732 10681 10680\nf 10733 10734 10683 10682\nf 10735 10736 10685 10684\nf 10737 10738 10687 10686\nf 10739 10740 10689 10688\nf 10741 10742 10691 10690\nf 10743 10744 10693 10692\nf 10745 10746 10695 10694\nf 10747 10748 10697 10696\nf 10749 10750 10723 10722\nf 10751 10752 10701 10724\nf 10753 10754 10703 10702\nf 10755 10756 10705 10704\nf 10757 10758 10707 10706\nf 10759 10760 10709 10708\nf 10761 10762 10711 10710\nf 10763 10764 10713 10712\nf 10765 10766 10715 10714\nf 10767 10768 10717 10716\nf 10769 10770 10719 10718\nf 10771 10772 10721 10720\nf 10770 10769 10768 10767 10766 10765 10764 10763 10762 10761 10760 10759 10758 10757 10756 10755 10754 10753 10752 10751 10750 10749 10772 10771\nf 10746 10745 10744 10743 10742 10741 10740 10739 10738 10737 10736 10735 10734 10733 10732 10731 10730 10729 10728 10727 10726 10725 10748 10747\ng ring\nf 10918 10919 10775 10776\nf 10844 10843 10841 10842\nf 10840 10839 10837 10838\nf 10836 10835 10833 10834\nf 10832 10831 10829 10830\nf 10828 10827 10825 10826\nf 10824 10823 10821 10822\nf 10820 10819 10817 10818\nf 10816 10815 10813 10814\nf 10812 10811 10809 10810\nf 10808 10807 10805 10806\nf 10804 10803 10801 10802\nf 10800 10799 10797 10798\nf 10796 10795 10793 10794\nf 10792 10791 10789 10790\nf 10788 10787 10785 10786\nf 10776 10775 10773 10774\nf 10786 10785 10783 10784\nf 10790 10789 10787 10788\nf 10794 10793 10791 10792\nf 10798 10797 10795 10796\nf 10802 10801 10799 10800\nf 10806 10805 10803 10804\nf 10810 10809 10807 10808\nf 10814 10813 10811 10812\nf 10818 10817 10815 10816\nf 10822 10821 10819 10820\nf 10826 10825 10823 10824\nf 10830 10829 10827 10828\nf 10834 10833 10831 10832\nf 10838 10837 10835 10836\nf 10842 10841 10839 10840\nf 10774 10773 10843 10844\nf 10924 10919 10918\nf 10921 10923 10922\nf 10920 10923 10921\nf 10919 10923 10920\nf 10919 10924 10923\nf 10926 10918 10917\nf 10925 10918 10926\nf 10925 10924 10918\nf 10923 10924 10784 10783\nf 10922 10923 10783 10781\nf 10920 10921 10779 10777\nf 10880 10845 10775 10777\nf 10878 10879 10779 10781\nf 10876 10877 10783 10785\nf 10874 10875 10787 10789\nf 10872 10873 10791 10793\nf 10870 10871 10795 10797\nf 10868 10869 10799 10801\nf 10866 10867 10803 10805\nf 10864 10865 10807 10809\nf 10862 10863 10811 10813\nf 10860 10861 10815 10817\nf 10858 10859 10819 10821\nf 10856 10857 10823 10825\nf 10854 10855 10827 10829\nf 10852 10853 10831 10833\nf 10850 10851 10835 10837\nf 10848 10849 10839 10841\nf 10846 10847 10843 10773\nf 10845 10846 10773 10775\nf 10847 10848 10841 10843\nf 10849 10850 10837 10839\nf 10851 10852 10833 10835\nf 10853 10854 10829 10831\nf 10855 10856 10825 10827\nf 10857 10858 10821 10823\nf 10859 10860 10817 10819\nf 10861 10862 10813 10815\nf 10863 10864 10809 10811\nf 10865 10866 10805 10807\nf 10867 10868 10801 10803\nf 10869 10870 10797 10799\nf 10871 10872 10793 10795\nf 10873 10874 10789 10791\nf 10875 10876 10785 10787\nf 10877 10878 10781 10783\nf 10879 10880 10777 10779\nf 10919 10920 10777 10775\nf 10921 10922 10781 10779\nf 10926 10917 10778 10780\nf 10924 10925 10782 10784\nf 10915 10916 10842 10840\nf 10913 10914 10838 10836\nf 10911 10912 10834 10832\nf 10909 10910 10830 10828\nf 10907 10908 10826 10824\nf 10905 10906 10822 10820\nf 10903 10904 10818 10816\nf 10901 10902 10814 10812\nf 10899 10900 10810 10808\nf 10897 10898 10806 10804\nf 10895 10896 10802 10800\nf 10893 10894 10798 10796\nf 10891 10892 10794 10792\nf 10889 10890 10790 10788\nf 10887 10888 10786 10784\nf 10885 10886 10782 10780\nf 10883 10884 10778 10776\nf 10881 10882 10774 10844\nf 10882 10883 10776 10774\nf 10884 10885 10780 10778\nf 10886 10887 10784 10782\nf 10888 10889 10788 10786\nf 10890 10891 10792 10790\nf 10892 10893 10796 10794\nf 10894 10895 10800 10798\nf 10896 10897 10804 10802\nf 10898 10899 10808 10806\nf 10900 10901 10812 10810\nf 10902 10903 10816 10814\nf 10904 10905 10820 10818\nf 10906 10907 10824 10822\nf 10908 10909 10828 10826\nf 10910 10911 10832 10830\nf 10912 10913 10836 10834\nf 10914 10915 10840 10838\nf 10916 10881 10844 10842\nf 10917 10918 10776 10778\nf 10925 10926 10780 10782\nf 10885 10879 10878 10886\nf 10887 10877 10876 10888\nf 10889 10875 10874 10890\nf 10891 10873 10872 10892\nf 10893 10871 10870 10894\nf 10895 10869 10868 10896\nf 10897 10867 10866 10898\nf 10899 10865 10864 10900\nf 10901 10863 10862 10902\nf 10903 10861 10860 10904\nf 10905 10859 10858 10906\nf 10907 10857 10856 10908\nf 10909 10855 10854 10910\nf 10911 10853 10852 10912\nf 10913 10851 10850 10914\nf 10915 10849 10848 10916\nf 10881 10847 10846 10882\nf 10883 10845 10880 10884\nf 10884 10880 10879 10885\nf 10882 10846 10845 10883\nf 10916 10848 10847 10881\nf 10914 10850 10849 10915\nf 10912 10852 10851 10913\nf 10910 10854 10853 10911\nf 10908 10856 10855 10909\nf 10906 10858 10857 10907\nf 10904 10860 10859 10905\nf 10902 10862 10861 10903\nf 10900 10864 10863 10901\nf 10898 10866 10865 10899\nf 10896 10868 10867 10897\nf 10894 10870 10869 10895\nf 10892 10872 10871 10893\nf 10890 10874 10873 10891\nf 10888 10876 10875 10889\nf 10886 10878 10877 10887\ng screw\nf 11089 11088 11087 11096 11095 11094 11093 11092 11091 11090\nf 11115 11116 11103 11102\nf 11113 11114 11101 11100\nf 11111 11112 11099 11098\nf 11109 11110 11097 11106\nf 11107 11108 11105 11104\nf 11105 11106 11089 11090\nf 11103 11104 11091 11092\nf 11101 11102 11093 11094\nf 11099 11100 11095 11096\nf 11097 11098 11087 11088\nf 11084 11085 11086 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083\nf 10942 10937 10936 10939\nf 10940 10935 10938 10941\nf 10931 10930 10927 10934\nf 10930 10929 10928 10927\nf 10934 10933 10932 10931\nf 10941 10938 10937 10942\nf 10939 10936 10935 10940\nf 11114 11113 11112 11111 11110 11109 11108 11107 11116 11115\nf 11098 11099 11096 11087\nf 11100 11101 11094 11095\nf 11102 11103 11092 11093\nf 11104 11105 11090 11091\nf 11106 11097 11088 11089\nf 11108 11109 11106 11105\nf 11110 11111 11098 11097\nf 11112 11113 11100 11099\nf 11114 11115 11102 11101\nf 11116 11107 11104 11103\nf 10937 10938 10932 10929\nf 10935 10936 10930 10931\nf 10936 10937 10929 10930\nf 10938 10935 10931 10932\nf 10942 10939 10927 10928\nf 10940 10941 10933 10934\nf 10939 10940 10934 10927\nf 10941 10942 10928 10933\nf 10946 10933 10947 10955\nf 10951 10947 10945\nf 10947 10933 10945\nf 10946 10932 10933\nf 10944 10929 10949 10957\nf 10953 10949 10943\nf 10949 10929 10943\nf 10944 10928 10929\nf 10954 10950 10958 10945\nf 10945 10944 10954\nf 10944 10945 10933 10928\nf 10948 10956 10943\nf 10943 10946 10952 10948\nf 10946 10943 10929 10932\nf 10974 10959 10958 10950\nf 10960 10961 10951 10945\nf 10959 10960 10945 10958\nf 10973 10974 10950 10954\nf 10963 10964 10946 10955\nf 10961 10962 10947 10951\nf 10962 10963 10955 10947\nf 10964 10965 10952 10946\nf 10972 10973 10954 10944\nf 10970 10971 10957 10949\nf 10968 10969 10953 10943\nf 10966 10967 10956 10948\nf 10965 10966 10948 10952\nf 10967 10968 10943 10956\nf 10969 10970 10949 10953\nf 10971 10972 10944 10957\nf 10989 10990 10971 10970\nf 10987 10988 10969 10968\nf 10985 10986 10967 10966\nf 10983 10984 10965 10964\nf 10981 10982 10963 10962\nf 10979 10980 10961 10960\nf 10977 10978 10959 10974\nf 10975 10976 10973 10972\nf 10976 10977 10974 10973\nf 10978 10979 10960 10959\nf 10980 10981 10962 10961\nf 10982 10983 10964 10963\nf 10984 10985 10966 10965\nf 10986 10987 10968 10967\nf 10988 10989 10970 10969\nf 10990 10975 10972 10971\nf 11006 10991 10988 10987\nf 11004 11005 10986 10985\nf 11002 11003 10984 10983\nf 11000 11001 10982 10981\nf 10998 10999 10980 10979\nf 10996 10997 10978 10977\nf 10994 10995 10976 10975\nf 10992 10993 10990 10989\nf 10991 10992 10989 10988\nf 10993 10994 10975 10990\nf 10995 10996 10977 10976\nf 10997 10998 10979 10978\nf 10999 11000 10981 10980\nf 11001 11002 10983 10982\nf 11003 11004 10985 10984\nf 11005 11006 10987 10986\nf 11021 11022 11003 11002\nf 11019 11020 11001 11000\nf 11017 11018 10999 10998\nf 11015 11016 10997 10996\nf 11013 11014 10995 10994\nf 11011 11012 10993 10992\nf 11009 11010 10991 11006\nf 11007 11008 11005 11004\nf 11008 11009 11006 11005\nf 11010 11011 10992 10991\nf 11012 11013 10994 10993\nf 11014 11015 10996 10995\nf 11016 11017 10998 10997\nf 11018 11019 11000 10999\nf 11020 11021 11002 11001\nf 11022 11007 11004 11003\nf 11038 11023 11020 11019\nf 11036 11037 11018 11017\nf 11034 11035 11016 11015\nf 11032 11033 11014 11013\nf 11030 11031 11012 11011\nf 11028 11029 11010 11009\nf 11026 11027 11008 11007\nf 11024 11025 11022 11021\nf 11023 11024 11021 11020\nf 11025 11026 11007 11022\nf 11027 11028 11009 11008\nf 11029 11030 11011 11010\nf 11031 11032 11013 11012\nf 11033 11034 11015 11014\nf 11035 11036 11017 11016\nf 11037 11038 11019 11018\nf 11053 11054 11035 11034\nf 11051 11052 11033 11032\nf 11049 11050 11031 11030\nf 11047 11048 11029 11028\nf 11045 11046 11027 11026\nf 11043 11044 11025 11024\nf 11041 11042 11023 11038\nf 11039 11040 11037 11036\nf 11040 11041 11038 11037\nf 11042 11043 11024 11023\nf 11044 11045 11026 11025\nf 11046 11047 11028 11027\nf 11048 11049 11030 11029\nf 11050 11051 11032 11031\nf 11052 11053 11034 11033\nf 11054 11039 11036 11035\nf 11070 11055 11052 11051\nf 11068 11069 11050 11049\nf 11066 11067 11048 11047\nf 11064 11065 11046 11045\nf 11062 11063 11044 11043\nf 11060 11061 11042 11041\nf 11058 11059 11040 11039\nf 11056 11057 11054 11053\nf 11055 11056 11053 11052\nf 11057 11058 11039 11054\nf 11059 11060 11041 11040\nf 11061 11062 11043 11042\nf 11063 11064 11045 11044\nf 11065 11066 11047 11046\nf 11067 11068 11049 11048\nf 11069 11070 11051 11050\nf 11057 11056 11072 11071\nf 11059 11058 11086 11085\nf 11061 11060 11084 11083\nf 11063 11062 11082 11081\nf 11065 11064 11080 11079\nf 11067 11066 11078 11077\nf 11069 11068 11076 11075\nf 11055 11070 11074 11073\nf 11070 11069 11075 11074\nf 11068 11067 11077 11076\nf 11066 11065 11079 11078\nf 11064 11063 11081 11080\nf 11062 11061 11083 11082\nf 11060 11059 11085 11084\nf 11058 11057 11071 11086\nf 11056 11055 11073 11072\ng mouthp\ns 7\nf 11867 11899 11898 11868\nf 11869 11897 11896 11870\nf 11871 11895 11894 11872\nf 11873 11893 11892 11874\nf 11875 11891 11890 11876\nf 11877 11889 11888 11878\nf 11879 11887 11886 11880\nf 11881 11885 11908 11882\nf 11883 11907 11906 11884\nf 11861 11905 11904 11862\nf 11863 11903 11902 11864\nf 11865 11901 11900 11866\nf 11907 11908 11121 11123\nf 11905 11906 11125 11127\nf 11903 11904 11129 11131\nf 11901 11902 11133 11135\nf 11899 11900 11137 11139\nf 11897 11898 11141 11143\nf 11895 11896 11145 11147\nf 11893 11894 11149 11151\nf 11891 11892 11153 11155\nf 11889 11890 11157 11159\nf 11887 11888 11161 11163\nf 11885 11886 11117 11119\nf 11883 11884 11857 11856\nf 11881 11882 11855 11854\nf 11879 11880 11853 11852\nf 11877 11878 11851 11850\nf 11875 11876 11849 11848\nf 11873 11874 11847 11846\nf 11871 11872 11845 11844\nf 11869 11870 11843 11842\nf 11867 11868 11841 11840\nf 11865 11866 11839 11838\nf 11863 11864 11837 11860\nf 11861 11862 11859 11858\nf 11859 11860 11833 11832\nf 11857 11858 11831 11830\nf 11855 11856 11829 11828\nf 11853 11854 11827 11826\nf 11851 11852 11825 11824\nf 11849 11850 11823 11822\nf 11847 11848 11821 11820\nf 11845 11846 11819 11818\nf 11843 11844 11817 11816\nf 11841 11842 11815 11814\nf 11839 11840 11813 11836\nf 11837 11838 11835 11834\nf 11835 11836 11809 11808\nf 11833 11834 11807 11806\nf 11831 11832 11805 11804\nf 11829 11830 11803 11802\nf 11827 11828 11801 11800\nf 11825 11826 11799 11798\nf 11823 11824 11797 11796\nf 11821 11822 11795 11794\nf 11819 11820 11793 11792\nf 11817 11818 11791 11790\nf 11815 11816 11789 11812\nf 11813 11814 11811 11810\nf 11811 11812 11785 11784\nf 11809 11810 11783 11782\nf 11807 11808 11781 11780\nf 11805 11806 11779 11778\nf 11803 11804 11777 11776\nf 11801 11802 11775 11774\nf 11799 11800 11773 11772\nf 11797 11798 11771 11770\nf 11795 11796 11769 11768\nf 11793 11794 11767 11766\nf 11791 11792 11765 11788\nf 11789 11790 11787 11786\nf 11787 11788 11761 11760\nf 11785 11786 11759 11758\nf 11783 11784 11757 11756\nf 11781 11782 11755 11754\nf 11779 11780 11753 11752\nf 11777 11778 11751 11750\nf 11775 11776 11749 11748\nf 11773 11774 11747 11746\nf 11771 11772 11745 11744\nf 11769 11770 11743 11742\nf 11767 11768 11741 11764\nf 11765 11766 11763 11762\nf 11763 11764 11729 11728\nf 11761 11762 11727 11726\nf 11759 11760 11725 11724\nf 11757 11758 11723 11722\nf 11755 11756 11721 11720\nf 11753 11754 11719 11718\nf 11751 11752 11717 11740\nf 11749 11750 11739 11738\nf 11747 11748 11737 11736\nf 11745 11746 11735 11734\nf 11743 11744 11733 11732\nf 11741 11742 11731 11730\nf 11739 11740 11713 11712\nf 11737 11738 11711 11710\nf 11735 11736 11709 11708\nf 11733 11734 11707 11706\nf 11731 11732 11705 11704\nf 11729 11730 11703 11702\nf 11727 11728 11701 11700\nf 11725 11726 11699 11698\nf 11723 11724 11697 11696\nf 11721 11722 11695 11694\nf 11719 11720 11693 11716\nf 11717 11718 11715 11714\nf 11715 11716 11689 11688\nf 11713 11714 11687 11686\nf 11711 11712 11685 11684\nf 11709 11710 11683 11682\nf 11707 11708 11681 11680\nf 11705 11706 11679 11678\nf 11703 11704 11677 11676\nf 11701 11702 11675 11674\nf 11699 11700 11673 11672\nf 11697 11698 11671 11670\nf 11695 11696 11669 11692\nf 11693 11694 11691 11690\nf 11691 11692 11665 11664\nf 11689 11690 11663 11662\nf 11687 11688 11661 11660\nf 11685 11686 11659 11658\nf 11683 11684 11657 11656\nf 11681 11682 11655 11654\nf 11679 11680 11653 11652\nf 11677 11678 11651 11650\nf 11675 11676 11649 11648\nf 11673 11674 11647 11646\nf 11671 11672 11645 11668\nf 11669 11670 11667 11666\nf 11667 11668 11641 11640\nf 11665 11666 11639 11638\nf 11663 11664 11637 11636\nf 11661 11662 11635 11634\nf 11659 11660 11633 11632\nf 11657 11658 11631 11630\nf 11655 11656 11629 11628\nf 11653 11654 11627 11626\nf 11651 11652 11625 11624\nf 11649 11650 11623 11622\nf 11647 11648 11621 11644\nf 11645 11646 11643 11642\nf 11643 11644 11617 11616\nf 11641 11642 11615 11614\nf 11639 11640 11613 11612\nf 11637 11638 11611 11610\nf 11635 11636 11609 11608\nf 11633 11634 11607 11606\nf 11631 11632 11605 11604\nf 11629 11630 11603 11602\nf 11627 11628 11601 11600\nf 11625 11626 11599 11598\nf 11623 11624 11597 11620\nf 11621 11622 11619 11618\nf 11619 11620 11593 11592\nf 11617 11618 11591 11590\nf 11615 11616 11589 11588\nf 11613 11614 11587 11586\nf 11611 11612 11585 11584\nf 11609 11610 11583 11582\nf 11607 11608 11581 11580\nf 11605 11606 11579 11578\nf 11603 11604 11577 11576\nf 11601 11602 11575 11574\nf 11599 11600 11573 11596\nf 11597 11598 11595 11594\nf 11595 11596 11569 11568\nf 11593 11594 11567 11566\nf 11591 11592 11565 11564\nf 11589 11590 11563 11562\nf 11587 11588 11561 11560\nf 11585 11586 11559 11558\nf 11583 11584 11557 11556\nf 11581 11582 11555 11554\nf 11579 11580 11553 11552\nf 11577 11578 11551 11550\nf 11575 11576 11549 11572\nf 11573 11574 11571 11570\nf 11571 11572 11545 11544\nf 11569 11570 11543 11542\nf 11567 11568 11541 11540\nf 11565 11566 11539 11538\nf 11563 11564 11537 11536\nf 11561 11562 11535 11534\nf 11559 11560 11533 11532\nf 11557 11558 11531 11530\nf 11555 11556 11529 11528\nf 11553 11554 11527 11526\nf 11551 11552 11525 11548\nf 11549 11550 11547 11546\nf 11547 11548 11521 11520\nf 11545 11546 11519 11518\nf 11543 11544 11517 11516\nf 11541 11542 11515 11514\nf 11539 11540 11513 11512\nf 11537 11538 11511 11510\nf 11535 11536 11509 11508\nf 11533 11534 11507 11506\nf 11531 11532 11505 11504\nf 11529 11530 11503 11502\nf 11527 11528 11501 11524\nf 11525 11526 11523 11522\nf 11523 11524 11497 11496\nf 11521 11522 11495 11494\nf 11519 11520 11493 11492\nf 11517 11518 11491 11490\nf 11515 11516 11489 11488\nf 11513 11514 11487 11486\nf 11511 11512 11485 11484\nf 11509 11510 11483 11482\nf 11507 11508 11481 11480\nf 11505 11506 11479 11478\nf 11503 11504 11477 11500\nf 11501 11502 11499 11498\nf 11499 11500 11473 11472\nf 11497 11498 11471 11470\nf 11495 11496 11469 11468\nf 11493 11494 11467 11466\nf 11491 11492 11465 11464\nf 11489 11490 11463 11462\nf 11487 11488 11461 11460\nf 11485 11486 11459 11458\nf 11483 11484 11457 11456\nf 11481 11482 11455 11454\nf 11479 11480 11453 11476\nf 11477 11478 11475 11474\nf 11475 11476 11449 11448\nf 11473 11474 11447 11446\nf 11471 11472 11445 11444\nf 11469 11470 11443 11442\nf 11467 11468 11441 11440\nf 11465 11466 11439 11438\nf 11463 11464 11437 11436\nf 11461 11462 11435 11434\nf 11459 11460 11433 11432\nf 11457 11458 11431 11430\nf 11455 11456 11429 11452\nf 11453 11454 11451 11450\nf 11451 11452 11425 11424\nf 11449 11450 11423 11422\nf 11447 11448 11421 11420\nf 11445 11446 11419 11418\nf 11443 11444 11417 11416\nf 11441 11442 11415 11414\nf 11439 11440 11413 11412\nf 11437 11438 11411 11410\nf 11435 11436 11409 11408\nf 11433 11434 11407 11406\nf 11431 11432 11405 11428\nf 11429 11430 11427 11426\nf 11427 11428 11401 11400\nf 11425 11426 11399 11398\nf 11423 11424 11397 11396\nf 11421 11422 11395 11394\nf 11419 11420 11393 11392\nf 11417 11418 11391 11390\nf 11415 11416 11389 11388\nf 11413 11414 11387 11386\nf 11411 11412 11385 11384\nf 11409 11410 11383 11382\nf 11407 11408 11381 11404\nf 11405 11406 11403 11402\nf 11403 11404 11305 11304\nf 11401 11402 11303 11302\nf 11399 11400 11301 11300\nf 11397 11398 11299 11298\nf 11395 11396 11297 11296\nf 11393 11394 11295 11294\nf 11391 11392 11293 11292\nf 11389 11390 11291 11290\nf 11387 11388 11289 11288\nf 11385 11386 11287 11286\nf 11383 11384 11285 11308\nf 11381 11382 11307 11306\nf 11275 11274 11380 11357\nf 11273 11274 11311 11309\nf 11275 11276 11315 11313\nf 11277 11278 11319 11317\nf 11279 11280 11323 11321\nf 11281 11282 11327 11325\nf 11283 11284 11331 11329\nf 11261 11262 11335 11333\nf 11263 11264 11339 11337\nf 11265 11266 11343 11341\nf 11267 11268 11347 11345\nf 11269 11270 11351 11349\nf 11271 11272 11355 11353\nf 11303 11304 11359 11358\nf 11305 11306 11361 11360\nf 11307 11308 11363 11362\nf 11285 11286 11365 11364\nf 11287 11288 11367 11366\nf 11289 11290 11369 11368\nf 11291 11292 11371 11370\nf 11293 11294 11373 11372\nf 11295 11296 11375 11374\nf 11297 11298 11377 11376\nf 11299 11300 11379 11378\nf 11246 11247 11312 11310\nf 11248 11249 11316 11314\nf 11250 11251 11320 11318\nf 11252 11253 11324 11322\nf 11254 11255 11328 11326\nf 11256 11257 11332 11330\nf 11258 11259 11336 11334\nf 11260 11237 11340 11338\nf 11238 11239 11344 11342\nf 11240 11241 11348 11346\nf 11242 11243 11352 11350\nf 11244 11245 11356 11354\nf 11362 11363 11281 11280\nf 11360 11361 11279 11278\nf 11358 11359 11277 11276\nf 11301 11302 11357 11380\nf 11378 11379 11273 11272\nf 11376 11377 11271 11270\nf 11374 11375 11269 11268\nf 11372 11373 11267 11266\nf 11370 11371 11265 11264\nf 11368 11369 11263 11262\nf 11366 11367 11261 11284\nf 11364 11365 11283 11282\nf 11329 11331 11257 11256\nf 11325 11327 11255 11254\nf 11321 11323 11253 11252\nf 11317 11319 11251 11250\nf 11313 11315 11249 11248\nf 11309 11311 11247 11246\nf 11353 11355 11245 11244\nf 11349 11351 11243 11242\nf 11345 11347 11241 11240\nf 11341 11343 11239 11238\nf 11337 11339 11237 11260\nf 11333 11335 11259 11258\nf 11336 11338 11233 11232\nf 11332 11334 11231 11230\nf 11328 11330 11229 11228\nf 11324 11326 11227 11226\nf 11320 11322 11225 11224\nf 11316 11318 11223 11222\nf 11312 11314 11221 11220\nf 11245 11246 11310 11356\nf 11352 11354 11217 11216\nf 11348 11350 11215 11214\nf 11344 11346 11213 11236\nf 11340 11342 11235 11234\nf 11235 11236 11209 11208\nf 11233 11234 11207 11206\nf 11231 11232 11205 11204\nf 11229 11230 11203 11202\nf 11227 11228 11201 11200\nf 11225 11226 11199 11198\nf 11223 11224 11197 11196\nf 11221 11222 11195 11194\nf 11219 11220 11193 11192\nf 11217 11218 11191 11190\nf 11215 11216 11189 11212\nf 11213 11214 11211 11210\nf 11211 11212 11181 11180\nf 11209 11210 11179 11178\nf 11207 11208 11177 11176\nf 11205 11206 11175 11174\nf 11203 11204 11173 11172\nf 11201 11202 11171 11170\nf 11199 11200 11169 11168\nf 11197 11198 11167 11166\nf 11195 11196 11165 11188\nf 11193 11194 11187 11186\nf 11191 11192 11185 11184\nf 11189 11190 11183 11182\nf 11187 11188 11162 11160\nf 11185 11186 11158 11156\nf 11183 11184 11154 11152\nf 11181 11182 11150 11148\nf 11179 11180 11146 11144\nf 11177 11178 11142 11140\nf 11175 11176 11138 11136\nf 11173 11174 11134 11132\nf 11171 11172 11130 11128\nf 11169 11170 11126 11124\nf 11167 11168 11122 11120\nf 11165 11166 11118 11164\nf 11164 11163 11161 11162\nf 11160 11159 11157 11158\nf 11156 11155 11153 11154\nf 11152 11151 11149 11150\nf 11148 11147 11145 11146\nf 11144 11143 11141 11142\nf 11140 11139 11137 11138\nf 11136 11135 11133 11134\nf 11132 11131 11129 11130\nf 11128 11127 11125 11126\nf 11124 11123 11121 11122\nf 11120 11119 11117 11118\nf 11122 11121 11119 11120\nf 11126 11125 11123 11124\nf 11130 11129 11127 11128\nf 11134 11133 11131 11132\nf 11138 11137 11135 11136\nf 11142 11141 11139 11140\nf 11146 11145 11143 11144\nf 11150 11149 11147 11148\nf 11154 11153 11151 11152\nf 11158 11157 11155 11156\nf 11162 11161 11159 11160\nf 11118 11117 11163 11164\nf 11166 11167 11120 11118\nf 11168 11169 11124 11122\nf 11170 11171 11128 11126\nf 11172 11173 11132 11130\nf 11174 11175 11136 11134\nf 11176 11177 11140 11138\nf 11178 11179 11144 11142\nf 11180 11181 11148 11146\nf 11182 11183 11152 11150\nf 11184 11185 11156 11154\nf 11186 11187 11160 11158\nf 11188 11165 11164 11162\nf 11190 11191 11184 11183\nf 11192 11193 11186 11185\nf 11194 11195 11188 11187\nf 11196 11197 11166 11165\nf 11198 11199 11168 11167\nf 11200 11201 11170 11169\nf 11202 11203 11172 11171\nf 11204 11205 11174 11173\nf 11206 11207 11176 11175\nf 11208 11209 11178 11177\nf 11210 11211 11180 11179\nf 11212 11189 11182 11181\nf 11214 11215 11212 11211\nf 11216 11217 11190 11189\nf 11218 11219 11192 11191\nf 11220 11221 11194 11193\nf 11222 11223 11196 11195\nf 11224 11225 11198 11197\nf 11226 11227 11200 11199\nf 11228 11229 11202 11201\nf 11230 11231 11204 11203\nf 11232 11233 11206 11205\nf 11234 11235 11208 11207\nf 11236 11213 11210 11209\nf 11342 11344 11236 11235\nf 11346 11348 11214 11213\nf 11350 11352 11216 11215\nf 11354 11356 11218 11217\nf 11310 11312 11220 11219\nf 11314 11316 11222 11221\nf 11318 11320 11224 11223\nf 11322 11324 11226 11225\nf 11326 11328 11228 11227\nf 11330 11332 11230 11229\nf 11334 11336 11232 11231\nf 11338 11340 11234 11233\nf 11335 11337 11260 11259\nf 11339 11341 11238 11237\nf 11343 11345 11240 11239\nf 11347 11349 11242 11241\nf 11351 11353 11244 11243\nf 11272 11273 11309 11355\nf 11311 11313 11248 11247\nf 11315 11317 11250 11249\nf 11319 11321 11252 11251\nf 11323 11325 11254 11253\nf 11327 11329 11256 11255\nf 11331 11333 11258 11257\nf 11365 11366 11284 11283\nf 11367 11368 11262 11261\nf 11369 11370 11264 11263\nf 11371 11372 11266 11265\nf 11373 11374 11268 11267\nf 11375 11376 11270 11269\nf 11377 11378 11272 11271\nf 11379 11380 11274 11273\nf 11357 11358 11276 11275\nf 11359 11360 11278 11277\nf 11361 11362 11280 11279\nf 11363 11364 11282 11281\nf 11243 11244 11354 11352\nf 11241 11242 11350 11348\nf 11239 11240 11346 11344\nf 11237 11238 11342 11340\nf 11259 11260 11338 11336\nf 11257 11258 11334 11332\nf 11255 11256 11330 11328\nf 11253 11254 11326 11324\nf 11251 11252 11322 11320\nf 11249 11250 11318 11316\nf 11247 11248 11314 11312\nf 11300 11301 11380 11379\nf 11298 11299 11378 11377\nf 11296 11297 11376 11375\nf 11294 11295 11374 11373\nf 11292 11293 11372 11371\nf 11290 11291 11370 11369\nf 11288 11289 11368 11367\nf 11286 11287 11366 11365\nf 11308 11285 11364 11363\nf 11306 11307 11362 11361\nf 11304 11305 11360 11359\nf 11302 11303 11358 11357\nf 11270 11271 11353 11351\nf 11268 11269 11349 11347\nf 11266 11267 11345 11343\nf 11264 11265 11341 11339\nf 11262 11263 11337 11335\nf 11284 11261 11333 11331\nf 11282 11283 11329 11327\nf 11280 11281 11325 11323\nf 11278 11279 11321 11319\nf 11276 11277 11317 11315\nf 11274 11275 11313 11311\nf 11246 11245 11355 11309\nf 11219 11218 11356 11310\nf 11382 11383 11308 11307\nf 11384 11385 11286 11285\nf 11386 11387 11288 11287\nf 11388 11389 11290 11289\nf 11390 11391 11292 11291\nf 11392 11393 11294 11293\nf 11394 11395 11296 11295\nf 11396 11397 11298 11297\nf 11398 11399 11300 11299\nf 11400 11401 11302 11301\nf 11402 11403 11304 11303\nf 11404 11381 11306 11305\nf 11406 11407 11404 11403\nf 11408 11409 11382 11381\nf 11410 11411 11384 11383\nf 11412 11413 11386 11385\nf 11414 11415 11388 11387\nf 11416 11417 11390 11389\nf 11418 11419 11392 11391\nf 11420 11421 11394 11393\nf 11422 11423 11396 11395\nf 11424 11425 11398 11397\nf 11426 11427 11400 11399\nf 11428 11405 11402 11401\nf 11430 11431 11428 11427\nf 11432 11433 11406 11405\nf 11434 11435 11408 11407\nf 11436 11437 11410 11409\nf 11438 11439 11412 11411\nf 11440 11441 11414 11413\nf 11442 11443 11416 11415\nf 11444 11445 11418 11417\nf 11446 11447 11420 11419\nf 11448 11449 11422 11421\nf 11450 11451 11424 11423\nf 11452 11429 11426 11425\nf 11454 11455 11452 11451\nf 11456 11457 11430 11429\nf 11458 11459 11432 11431\nf 11460 11461 11434 11433\nf 11462 11463 11436 11435\nf 11464 11465 11438 11437\nf 11466 11467 11440 11439\nf 11468 11469 11442 11441\nf 11470 11471 11444 11443\nf 11472 11473 11446 11445\nf 11474 11475 11448 11447\nf 11476 11453 11450 11449\nf 11478 11479 11476 11475\nf 11480 11481 11454 11453\nf 11482 11483 11456 11455\nf 11484 11485 11458 11457\nf 11486 11487 11460 11459\nf 11488 11489 11462 11461\nf 11490 11491 11464 11463\nf 11492 11493 11466 11465\nf 11494 11495 11468 11467\nf 11496 11497 11470 11469\nf 11498 11499 11472 11471\nf 11500 11477 11474 11473\nf 11502 11503 11500 11499\nf 11504 11505 11478 11477\nf 11506 11507 11480 11479\nf 11508 11509 11482 11481\nf 11510 11511 11484 11483\nf 11512 11513 11486 11485\nf 11514 11515 11488 11487\nf 11516 11517 11490 11489\nf 11518 11519 11492 11491\nf 11520 11521 11494 11493\nf 11522 11523 11496 11495\nf 11524 11501 11498 11497\nf 11526 11527 11524 11523\nf 11528 11529 11502 11501\nf 11530 11531 11504 11503\nf 11532 11533 11506 11505\nf 11534 11535 11508 11507\nf 11536 11537 11510 11509\nf 11538 11539 11512 11511\nf 11540 11541 11514 11513\nf 11542 11543 11516 11515\nf 11544 11545 11518 11517\nf 11546 11547 11520 11519\nf 11548 11525 11522 11521\nf 11550 11551 11548 11547\nf 11552 11553 11526 11525\nf 11554 11555 11528 11527\nf 11556 11557 11530 11529\nf 11558 11559 11532 11531\nf 11560 11561 11534 11533\nf 11562 11563 11536 11535\nf 11564 11565 11538 11537\nf 11566 11567 11540 11539\nf 11568 11569 11542 11541\nf 11570 11571 11544 11543\nf 11572 11549 11546 11545\nf 11574 11575 11572 11571\nf 11576 11577 11550 11549\nf 11578 11579 11552 11551\nf 11580 11581 11554 11553\nf 11582 11583 11556 11555\nf 11584 11585 11558 11557\nf 11586 11587 11560 11559\nf 11588 11589 11562 11561\nf 11590 11591 11564 11563\nf 11592 11593 11566 11565\nf 11594 11595 11568 11567\nf 11596 11573 11570 11569\nf 11598 11599 11596 11595\nf 11600 11601 11574 11573\nf 11602 11603 11576 11575\nf 11604 11605 11578 11577\nf 11606 11607 11580 11579\nf 11608 11609 11582 11581\nf 11610 11611 11584 11583\nf 11612 11613 11586 11585\nf 11614 11615 11588 11587\nf 11616 11617 11590 11589\nf 11618 11619 11592 11591\nf 11620 11597 11594 11593\nf 11622 11623 11620 11619\nf 11624 11625 11598 11597\nf 11626 11627 11600 11599\nf 11628 11629 11602 11601\nf 11630 11631 11604 11603\nf 11632 11633 11606 11605\nf 11634 11635 11608 11607\nf 11636 11637 11610 11609\nf 11638 11639 11612 11611\nf 11640 11641 11614 11613\nf 11642 11643 11616 11615\nf 11644 11621 11618 11617\nf 11646 11647 11644 11643\nf 11648 11649 11622 11621\nf 11650 11651 11624 11623\nf 11652 11653 11626 11625\nf 11654 11655 11628 11627\nf 11656 11657 11630 11629\nf 11658 11659 11632 11631\nf 11660 11661 11634 11633\nf 11662 11663 11636 11635\nf 11664 11665 11638 11637\nf 11666 11667 11640 11639\nf 11668 11645 11642 11641\nf 11670 11671 11668 11667\nf 11672 11673 11646 11645\nf 11674 11675 11648 11647\nf 11676 11677 11650 11649\nf 11678 11679 11652 11651\nf 11680 11681 11654 11653\nf 11682 11683 11656 11655\nf 11684 11685 11658 11657\nf 11686 11687 11660 11659\nf 11688 11689 11662 11661\nf 11690 11691 11664 11663\nf 11692 11669 11666 11665\nf 11694 11695 11692 11691\nf 11696 11697 11670 11669\nf 11698 11699 11672 11671\nf 11700 11701 11674 11673\nf 11702 11703 11676 11675\nf 11704 11705 11678 11677\nf 11706 11707 11680 11679\nf 11708 11709 11682 11681\nf 11710 11711 11684 11683\nf 11712 11713 11686 11685\nf 11714 11715 11688 11687\nf 11716 11693 11690 11689\nf 11718 11719 11716 11715\nf 11720 11721 11694 11693\nf 11722 11723 11696 11695\nf 11724 11725 11698 11697\nf 11726 11727 11700 11699\nf 11728 11729 11702 11701\nf 11730 11731 11704 11703\nf 11732 11733 11706 11705\nf 11734 11735 11708 11707\nf 11736 11737 11710 11709\nf 11738 11739 11712 11711\nf 11740 11717 11714 11713\nf 11742 11743 11732 11731\nf 11744 11745 11734 11733\nf 11746 11747 11736 11735\nf 11748 11749 11738 11737\nf 11750 11751 11740 11739\nf 11752 11753 11718 11717\nf 11754 11755 11720 11719\nf 11756 11757 11722 11721\nf 11758 11759 11724 11723\nf 11760 11761 11726 11725\nf 11762 11763 11728 11727\nf 11764 11741 11730 11729\nf 11766 11767 11764 11763\nf 11768 11769 11742 11741\nf 11770 11771 11744 11743\nf 11772 11773 11746 11745\nf 11774 11775 11748 11747\nf 11776 11777 11750 11749\nf 11778 11779 11752 11751\nf 11780 11781 11754 11753\nf 11782 11783 11756 11755\nf 11784 11785 11758 11757\nf 11786 11787 11760 11759\nf 11788 11765 11762 11761\nf 11790 11791 11788 11787\nf 11792 11793 11766 11765\nf 11794 11795 11768 11767\nf 11796 11797 11770 11769\nf 11798 11799 11772 11771\nf 11800 11801 11774 11773\nf 11802 11803 11776 11775\nf 11804 11805 11778 11777\nf 11806 11807 11780 11779\nf 11808 11809 11782 11781\nf 11810 11811 11784 11783\nf 11812 11789 11786 11785\nf 11814 11815 11812 11811\nf 11816 11817 11790 11789\nf 11818 11819 11792 11791\nf 11820 11821 11794 11793\nf 11822 11823 11796 11795\nf 11824 11825 11798 11797\nf 11826 11827 11800 11799\nf 11828 11829 11802 11801\nf 11830 11831 11804 11803\nf 11832 11833 11806 11805\nf 11834 11835 11808 11807\nf 11836 11813 11810 11809\nf 11838 11839 11836 11835\nf 11840 11841 11814 11813\nf 11842 11843 11816 11815\nf 11844 11845 11818 11817\nf 11846 11847 11820 11819\nf 11848 11849 11822 11821\nf 11850 11851 11824 11823\nf 11852 11853 11826 11825\nf 11854 11855 11828 11827\nf 11856 11857 11830 11829\nf 11858 11859 11832 11831\nf 11860 11837 11834 11833\nf 11862 11863 11860 11859\nf 11864 11865 11838 11837\nf 11866 11867 11840 11839\nf 11868 11869 11842 11841\nf 11870 11871 11844 11843\nf 11872 11873 11846 11845\nf 11874 11875 11848 11847\nf 11876 11877 11850 11849\nf 11878 11879 11852 11851\nf 11880 11881 11854 11853\nf 11882 11883 11856 11855\nf 11884 11861 11858 11857\nf 11886 11887 11163 11117\nf 11888 11889 11159 11161\nf 11890 11891 11155 11157\nf 11892 11893 11151 11153\nf 11894 11895 11147 11149\nf 11896 11897 11143 11145\nf 11898 11899 11139 11141\nf 11900 11901 11135 11137\nf 11902 11903 11131 11133\nf 11904 11905 11127 11129\nf 11906 11907 11123 11125\nf 11908 11885 11119 11121\nf 11864 11902 11901 11865\nf 11862 11904 11903 11863\nf 11884 11906 11905 11861\nf 11882 11908 11907 11883\nf 11880 11886 11885 11881\nf 11878 11888 11887 11879\nf 11876 11890 11889 11877\nf 11874 11892 11891 11875\nf 11872 11894 11893 11873\nf 11870 11896 11895 11871\nf 11868 11898 11897 11869\nf 11866 11900 11899 11867\n# 11362 elements\n"
  },
  {
    "path": "test/bgratutorial3d/obj/violin_case.obj",
    "content": "# Mon Jul 22 12:55:34 1996\n#\n#\n\nmtllib ./vp.mtl\ng\nv 1.277130 0.241420 -0.073923\nv 1.268642 0.242133 -0.073929\nv 1.258972 0.242945 -0.068545\nv 1.255746 0.243219 -0.061002\nv 1.253589 0.243404 -0.046365\nv 1.247140 0.243948 -0.037745\nv 1.235205 0.244952 -0.030207\nv 1.223386 0.245948 -0.021592\nv 1.218010 0.246401 -0.012972\nv 1.218120 0.246401 -0.001567\nv 1.223370 0.245957 0.005355\nv 1.228740 0.245506 0.006436\nv 1.220536 0.246198 0.012388\nv 1.216236 0.246562 0.019932\nv 1.216232 0.246568 0.028612\nv 1.223573 0.245954 0.035083\nv 1.232338 0.245216 0.037187\nv 1.244833 0.244165 0.039860\nv 1.253422 0.243446 0.046332\nv 1.262011 0.242726 0.051727\nv 1.271677 0.241915 0.053887\nv 1.276859 0.241481 0.053891\nv 1.259619 0.250653 -0.068547\nv 1.269289 0.249840 -0.073930\nv 1.277776 0.249128 -0.073925\nv 1.229386 0.253214 0.006434\nv 1.224017 0.253665 0.005352\nv 1.218767 0.254109 -0.001570\nv 1.218658 0.254109 -0.012974\nv 1.224032 0.253655 -0.021594\nv 1.235852 0.252660 -0.030210\nv 1.247787 0.251656 -0.037748\nv 1.254236 0.251112 -0.046367\nv 1.256393 0.250927 -0.061004\nv 1.221661 0.259582 0.012385\nv 1.229863 0.258890 0.006432\nv 1.277981 0.254863 0.053887\nv 1.272801 0.255298 0.053883\nv 1.263136 0.256109 0.051722\nv 1.254546 0.256829 0.046328\nv 1.245956 0.257548 0.039856\nv 1.233461 0.258598 0.037182\nv 1.224698 0.259337 0.035079\nv 1.217356 0.259951 0.028608\nv 1.217361 0.259945 0.019927\nv 1.262710 0.250400 -0.050279\nv 1.253512 0.251189 0.006449\nv 1.262691 0.250408 -0.027277\nv 1.253549 0.251176 -0.027262\nv 1.253989 0.256864 0.006447\nv 1.253964 0.256873 0.028722\nv 1.278032 0.254853 0.030174\nv 1.254023 0.256847 -0.023184\nv 1.263165 0.256080 -0.023199\nv 1.263397 0.258612 -0.045181\nv 1.278465 0.260019 0.030172\nv 1.254398 0.262040 0.028721\nv 1.254453 0.262017 -0.015535\nv 1.263594 0.261248 -0.015551\nv 1.263827 0.263781 -0.038553\nv 1.278517 0.260006 0.005723\nv 1.263583 0.261258 0.005642\nv 1.264144 0.267950 0.005640\nv 1.264156 0.267940 -0.015553\nv 1.264169 0.267935 -0.029375\nv 1.278530 0.260930 0.035268\nv 1.278102 0.255845 0.036180\nv 1.259743 0.257385 0.034731\nv 1.260212 0.262468 0.033820\nv 1.278349 0.258953 0.042309\nv 1.270160 0.259640 0.041703\nv 1.270708 0.264132 0.039172\nv 1.278733 0.263459 0.039777\nv 1.276994 0.241450 -0.010016\nv 1.286762 0.262785 0.039206\nv 1.286541 0.258267 0.041738\nv 1.296856 0.259394 0.033898\nv 1.296466 0.254305 0.034810\nv 1.294147 0.265420 -0.029305\nv 1.294106 0.265428 -0.015484\nv 1.294036 0.265441 0.005709\nv 1.293474 0.258750 0.005711\nv 1.293830 0.261265 -0.038483\nv 1.293545 0.258736 -0.015481\nv 1.302671 0.257971 -0.015432\nv 1.302538 0.258001 0.028825\nv 1.293419 0.256094 -0.045111\nv 1.293137 0.253565 -0.023129\nv 1.302266 0.252800 -0.023079\nv 1.302105 0.252833 0.028827\nv 1.302175 0.252821 0.006551\nv 1.301806 0.247127 -0.027158\nv 1.292676 0.247892 -0.027207\nv 1.301700 0.247146 0.006553\nv 1.292748 0.247880 -0.050209\nv 1.338747 0.249761 0.020189\nv 1.338716 0.249771 0.028869\nv 1.331346 0.250390 0.035310\nv 1.322572 0.251122 0.037375\nv 1.310066 0.252169 0.039994\nv 1.301449 0.252894 0.046430\nv 1.292837 0.253617 0.051786\nv 1.283163 0.254430 0.053906\nv 1.326300 0.250799 0.006640\nv 1.334479 0.250117 0.012628\nv 1.299105 0.247343 -0.060912\nv 1.301200 0.247172 -0.046266\nv 1.307613 0.246637 -0.037618\nv 1.319515 0.245641 -0.030029\nv 1.331298 0.244656 -0.021362\nv 1.336637 0.244212 -0.012719\nv 1.336480 0.244234 -0.001316\nv 1.331199 0.244673 0.005585\nv 1.325825 0.245124 0.006642\nv 1.286263 0.248417 -0.073894\nv 1.295911 0.247609 -0.068468\nv 1.282041 0.241046 0.053910\nv 1.291715 0.240235 0.051791\nv 1.300328 0.239511 0.046434\nv 1.308945 0.238787 0.039998\nv 1.321450 0.237740 0.037379\nv 1.330225 0.237007 0.035314\nv 1.337594 0.236387 0.028874\nv 1.337625 0.236378 0.020193\nv 1.333357 0.236734 0.012632\nv 1.325179 0.237416 0.006644\nv 1.330553 0.236965 0.005586\nv 1.335834 0.236526 -0.001313\nv 1.335991 0.236504 -0.012717\nv 1.330653 0.236949 -0.021360\nv 1.318869 0.237934 -0.030027\nv 1.306967 0.238930 -0.037617\nv 1.300554 0.239465 -0.046264\nv 1.298459 0.239635 -0.060909\nv 1.295265 0.239901 -0.068467\nv 1.285617 0.240708 -0.073891\nv 1.285335 0.259440 0.019769\nv 1.285203 0.259449 0.014239\nv 1.271776 0.260576 0.019720\nv 1.271947 0.260560 0.014191\nv 1.278576 0.260002 0.009889\nv 1.278553 0.260011 0.024441\nv 1.273061 0.273858 0.014185\nv 1.279690 0.273301 0.009882\nv 1.286318 0.272747 0.014233\nv 1.286449 0.272739 0.019763\nv 1.279667 0.273310 0.024434\nv 1.272890 0.273875 0.019714\nv -0.073043 0.000005 0.243562\nv 0.131140 0.000005 0.236960\nv 0.300677 0.000005 0.230527\nv 1.256693 0.000005 0.202218\nv 1.665038 0.000005 0.159805\nv -0.314826 0.000005 0.251365\nv -0.544382 0.000005 0.259483\nv -0.808711 0.000005 0.267810\nv -1.104800 0.000005 0.242924\nv -1.356584 0.000005 0.200770\nv -1.538307 0.000005 0.161569\nv -1.581217 0.000005 0.139170\nv -1.602310 0.000005 0.095638\nv -1.617646 0.000005 0.095638\nv -1.631448 0.000005 0.000000\nv 1.693989 0.000005 0.145457\nv 1.714671 0.000005 0.095638\nv 1.730753 0.000005 0.095638\nv 1.734593 0.000005 0.000000\nv 1.445923 0.000005 0.181012\nv -0.956756 0.000005 0.255367\nv -0.972806 0.000005 -0.259651\nv 1.470178 0.000005 -0.184047\nv 1.730753 0.000005 -0.095638\nv 1.722405 0.000005 -0.147897\nv -1.617646 0.000005 -0.095638\nv -1.607740 0.000005 -0.141504\nv -1.564112 0.000005 -0.164280\nv -1.379340 0.000005 -0.204139\nv -1.123333 0.000005 -0.246999\nv -0.822277 0.000005 -0.272303\nv -0.553513 0.000005 -0.263836\nv -0.320107 0.000005 -0.255581\nv 1.692968 0.000005 -0.162485\nv 1.277774 0.000005 -0.205610\nv 0.305721 0.000005 -0.234393\nv 0.133339 0.000005 -0.240934\nv -0.074269 0.000005 -0.247648\nv -0.067031 -0.100089 -0.236854\nv 0.138959 -0.095787 -0.224609\nv 0.314455 -0.099284 -0.212659\nv 1.276835 -0.080507 -0.188035\nv 1.660573 -0.075763 -0.160570\nv -0.066430 -0.212449 -0.197360\nv 0.136487 -0.198257 -0.186117\nv 0.315644 -0.192482 -0.173137\nv 1.273167 -0.173655 -0.160492\nv 1.575057 -0.163112 -0.150674\nv -0.064065 -0.313883 -0.158992\nv 0.143561 -0.242036 -0.165420\nv 0.323337 -0.220652 -0.152144\nv 1.277949 -0.199895 -0.140505\nv 1.597590 -0.172059 -0.133423\nv -0.317455 -0.109568 -0.244670\nv -0.546972 -0.108697 -0.253024\nv -0.809877 -0.113739 -0.261643\nv -1.120450 -0.121735 -0.237175\nv -1.377404 -0.113245 -0.199822\nv -1.567334 -0.108960 -0.161991\nv -1.605129 -0.110149 -0.137205\nv -1.610842 -0.101625 -0.095638\nv -0.318268 -0.218145 -0.210629\nv -0.544214 -0.221624 -0.212505\nv -0.800983 -0.229412 -0.220157\nv -1.588478 -0.222680 -0.095638\nv -1.586898 -0.229691 -0.134347\nv -1.549315 -0.225039 -0.158046\nv -1.376681 -0.222389 -0.188861\nv -1.112922 -0.231537 -0.220899\nv -1.543123 -0.346443 -0.095638\nv -1.448648 -0.447376 -0.095638\nv -1.466831 -0.431859 -0.123164\nv -1.548347 -0.333055 -0.126563\nv -1.520927 -0.310954 -0.152208\nv -1.460832 -0.401849 -0.150634\nv -1.377153 -0.424164 -0.148215\nv -1.383948 -0.456272 -0.125000\nv -1.087409 -0.478033 -0.151529\nv -1.095605 -0.447557 -0.170855\nv -1.069720 -0.505481 -0.095638\nv -1.369072 -0.476359 -0.095638\nv -0.769517 -0.437026 -0.095638\nv -0.531488 -0.412509 -0.095638\nv -0.790757 -0.415256 -0.144904\nv -0.794155 -0.383786 -0.165435\nv -0.540956 -0.373135 -0.151076\nv -0.541163 -0.392307 -0.137887\nv -0.306904 -0.416862 -0.095638\nv -0.310317 -0.391667 -0.144093\nv -0.310003 -0.367998 -0.160309\nv -0.062966 -0.341334 -0.137279\nv -0.070065 -0.366723 -0.095638\nv 0.137555 -0.295814 -0.095638\nv 0.145027 -0.263853 -0.142635\nv 0.324650 -0.249436 -0.095638\nv 0.329370 -0.244611 -0.124082\nv 1.261296 -0.228504 -0.095638\nv 1.281888 -0.224469 -0.115225\nv 1.590655 -0.182681 -0.095638\nv 1.700596 -0.076089 -0.147336\nv 1.712297 -0.081722 -0.095638\nv 1.476557 -0.213829 -0.095638\nv 1.501275 -0.196023 -0.145589\nv 1.501298 -0.203565 -0.124970\nv 1.470178 -0.168383 -0.155583\nv 1.470178 -0.078135 -0.174303\nv -0.919618 -0.481454 -0.095638\nv -0.944880 -0.426043 -0.168145\nv -0.939083 -0.457016 -0.148216\nv -0.956952 -0.230475 -0.220528\nv -0.965165 -0.117738 -0.249409\nv -1.497102 -0.367810 -0.152295\nv -1.513811 -0.393865 -0.124863\nv -1.502005 -0.408130 -0.095638\nv 1.658671 -0.136824 -0.095638\nv 1.650187 -0.127033 -0.140216\nv 1.617814 -0.119437 -0.155622\nv 1.591124 -0.117467 0.153054\nv 1.622963 -0.124938 0.137902\nv 1.640849 -0.129374 0.095638\nv 1.658671 -0.136824 0.095638\nv 1.664651 -0.133884 0.000000\nv -1.502640 -0.406892 0.000000\nv -1.502005 -0.408130 0.095638\nv -1.492110 -0.400174 0.095638\nv -1.488836 -0.387367 0.122804\nv -1.472403 -0.361741 0.149782\nv -0.949242 -0.115795 0.245294\nv -0.941165 -0.226673 0.216889\nv -0.923590 -0.449476 0.145771\nv -0.929291 -0.419014 0.165370\nv -0.920533 -0.467818 0.095638\nv -0.919618 -0.481454 0.095638\nv -0.919103 -0.493882 0.000000\nv 1.445923 -0.076845 0.171427\nv 1.445923 -0.165606 0.153016\nv 1.476530 -0.200206 0.122909\nv 1.476547 -0.202954 0.095638\nv 1.476507 -0.192788 0.143187\nv 1.476557 -0.213829 0.095638\nv 1.476555 -0.229338 0.000000\nv 1.718374 -0.076028 0.000000\nv 1.712297 -0.081722 0.095638\nv 1.697424 -0.069960 0.095638\nv 1.672539 -0.074834 0.144905\nv 1.581651 -0.174410 0.095638\nv 1.590655 -0.182681 0.095638\nv 1.596535 -0.182498 0.000000\nv 1.260739 -0.207375 0.113325\nv 1.262343 -0.212026 0.095638\nv 1.261296 -0.228504 0.095638\nv 1.249863 -0.243388 0.000000\nv 0.323936 -0.227185 0.122035\nv 0.325853 -0.236394 0.095638\nv 0.324650 -0.249436 0.095638\nv 0.311612 -0.279499 0.000000\nv 0.142634 -0.259500 0.140281\nv 0.139104 -0.277240 0.095638\nv 0.137555 -0.295814 0.095638\nv 0.129350 -0.314219 0.000000\nv -0.078330 -0.377586 0.000000\nv -0.070065 -0.366723 0.095638\nv -0.075375 -0.353045 0.095638\nv -0.061928 -0.335702 0.135014\nv -0.304888 -0.361927 0.157665\nv -0.305198 -0.385206 0.141715\nv -0.305153 -0.406157 0.095638\nv -0.306904 -0.416862 0.095638\nv -0.307347 -0.427293 0.000000\nv -0.532234 -0.385835 0.135612\nv -0.532032 -0.366979 0.148583\nv -0.781053 -0.377454 0.162705\nv -0.777711 -0.408406 0.142514\nv -0.769111 -0.422643 0.095638\nv -0.532898 -0.400962 0.095638\nv -0.531488 -0.412509 0.095638\nv -0.530031 -0.420043 0.000000\nv -0.769517 -0.437026 0.095638\nv -0.766488 -0.446236 0.000000\nv -1.369072 -0.476359 0.095638\nv -1.069720 -0.505481 0.095638\nv -1.071718 -0.521128 0.000000\nv -1.349267 -0.492049 0.000000\nv -1.441813 -0.453178 0.000000\nv -1.077529 -0.440173 0.168037\nv -1.069469 -0.470146 0.149029\nv -1.071954 -0.492593 0.095638\nv -1.363900 -0.465458 0.095638\nv -1.361116 -0.448744 0.122938\nv -1.354433 -0.417166 0.145770\nv -1.436731 -0.395220 0.148149\nv -1.495834 -0.305823 0.149696\nv -1.522803 -0.327560 0.124476\nv -1.442631 -0.424734 0.121132\nv -1.441241 -0.440429 0.095638\nv -1.448648 -0.447376 0.095638\nv -1.551228 -0.338164 0.000000\nv -1.530739 -0.337480 0.095638\nv -1.543123 -0.346443 0.095638\nv -1.094561 -0.227718 0.217254\nv -1.353968 -0.218720 0.185745\nv -1.523754 -0.221326 0.155439\nv -1.560717 -0.225902 0.132130\nv -1.575123 -0.226290 0.095638\nv -1.588478 -0.222680 0.095638\nv -1.595780 -0.211279 0.000000\nv -0.787768 -0.225627 0.216525\nv -0.535237 -0.217968 0.208999\nv -0.313017 -0.214546 0.207154\nv -1.618269 -0.099121 0.000000\nv -1.610842 -0.101625 0.095638\nv -1.596448 -0.108916 0.095638\nv -1.578648 -0.108332 0.134942\nv -1.541476 -0.107162 0.159319\nv -1.354679 -0.111376 0.196526\nv -1.101966 -0.119727 0.233261\nv -0.796516 -0.111863 0.257326\nv -0.537948 -0.106904 0.248850\nv -0.312217 -0.107760 0.240633\nv 1.571234 -0.169220 0.131221\nv 1.256864 -0.196597 0.138187\nv 0.318003 -0.217012 0.149634\nv 0.141193 -0.238043 0.162691\nv -0.063009 -0.308705 0.156369\nv 1.549072 -0.160421 0.148188\nv 1.252161 -0.170791 0.157844\nv 0.310437 -0.189306 0.170281\nv 0.134235 -0.194986 0.183046\nv -0.065334 -0.208944 0.194104\nv 1.633176 -0.074513 0.157921\nv 1.255770 -0.079179 0.184934\nv 0.309267 -0.097646 0.209151\nv 0.136666 -0.094206 0.220904\nv -0.065925 -0.098439 0.232948\nv -1.610842 0.101625 0.095638\nv -1.596448 0.108916 0.095638\nv 0.138959 0.095787 -0.224609\nv 0.314455 0.099284 -0.212659\nv 1.276835 0.080507 -0.188035\nv 1.470178 0.078135 -0.174303\nv 1.660573 0.075763 -0.160570\nv -0.066430 0.212449 -0.197360\nv -0.067031 0.100089 -0.236854\nv 0.136487 0.198257 -0.186117\nv 0.315644 0.192482 -0.173137\nv 1.273167 0.173655 -0.160492\nv 1.470178 0.168383 -0.155583\nv 1.575057 0.163112 -0.150674\nv -0.064065 0.313883 -0.158992\nv 0.143561 0.242036 -0.165420\nv 0.323337 0.220652 -0.152144\nv 1.277949 0.199895 -0.140505\nv 1.501298 0.203565 -0.124970\nv 1.501275 0.196023 -0.145589\nv 1.597590 0.172059 -0.133423\nv -0.546972 0.108697 -0.253024\nv -0.809877 0.113739 -0.261643\nv -0.965165 0.117738 -0.249409\nv -1.377404 0.113245 -0.199822\nv -1.120450 0.121735 -0.237175\nv -1.567334 0.108960 -0.161991\nv -1.605129 0.110149 -0.137205\nv -1.610842 0.101625 -0.095638\nv -1.618269 0.099121 0.000000\nv -0.317455 0.109568 -0.244670\nv -0.318268 0.218145 -0.210629\nv -0.544214 0.221624 -0.212505\nv -0.800983 0.229412 -0.220157\nv -1.588478 0.222680 -0.095638\nv -1.595780 0.211279 0.000000\nv -1.586898 0.229691 -0.134347\nv -1.549315 0.225039 -0.158046\nv -1.376681 0.222389 -0.188861\nv -1.112922 0.231537 -0.220899\nv -0.956952 0.230475 -0.220528\nv -1.543123 0.346443 -0.095638\nv -1.551228 0.338164 0.000000\nv -1.513811 0.393865 -0.124863\nv -1.502005 0.408130 -0.095638\nv -1.548347 0.333055 -0.126563\nv -1.520927 0.310954 -0.152208\nv -1.497102 0.367810 -0.152295\nv -1.466831 0.431859 -0.123164\nv -1.460832 0.401849 -0.150634\nv -1.377153 0.424164 -0.148215\nv -1.383948 0.456272 -0.125000\nv -1.095605 0.447557 -0.170855\nv -1.087409 0.478033 -0.151529\nv -1.502640 0.406892 0.000000\nv -1.071718 0.521128 0.000000\nv -1.349267 0.492049 0.000000\nv -1.369072 0.476359 -0.095638\nv -1.069720 0.505481 -0.095638\nv -0.769517 0.437026 -0.095638\nv -0.766488 0.446236 0.000000\nv -0.919103 0.493882 0.000000\nv -0.919618 0.481454 -0.095638\nv -1.448648 0.447376 -0.095638\nv -1.441813 0.453178 0.000000\nv -0.531488 0.412509 -0.095638\nv -0.530031 0.420043 0.000000\nv -0.939083 0.457016 -0.148216\nv -0.790757 0.415256 -0.144904\nv -0.794155 0.383786 -0.165435\nv -0.944880 0.426043 -0.168145\nv -0.540956 0.373135 -0.151076\nv -0.541163 0.392307 -0.137887\nv -0.306904 0.416862 -0.095638\nv -0.307347 0.427293 0.000000\nv -0.310317 0.391667 -0.144093\nv -0.310003 0.367998 -0.160309\nv -0.062966 0.341334 -0.137279\nv -0.070065 0.366723 -0.095638\nv -0.078330 0.377586 0.000000\nv 0.129350 0.314219 0.000000\nv 0.137555 0.295814 -0.095638\nv 0.145027 0.263853 -0.142635\nv 0.311612 0.279499 0.000000\nv 0.324650 0.249436 -0.095638\nv 0.329370 0.244611 -0.124082\nv 1.249863 0.243388 0.000000\nv 1.261296 0.228504 -0.095638\nv 1.281888 0.224469 -0.115225\nv 1.476555 0.229338 0.000000\nv 1.476557 0.213829 -0.095638\nv 1.590655 0.182681 -0.095638\nv 1.596535 0.182498 0.000000\nv 1.617814 0.119437 -0.155622\nv 1.650187 0.127033 -0.140216\nv 1.700596 0.076089 -0.147336\nv 1.712297 0.081722 -0.095638\nv 1.658671 0.136824 -0.095638\nv 1.664651 0.133884 0.000000\nv 1.718374 0.076028 0.000000\nv 1.591124 0.117467 0.153054\nv 1.445923 0.076845 0.171427\nv 1.549072 0.160421 0.148188\nv 1.633176 0.074513 0.157921\nv 1.476507 0.192788 0.143187\nv 1.445923 0.165606 0.153016\nv 1.672539 0.074834 0.144905\nv 1.622963 0.124938 0.137902\nv 1.697424 0.069960 0.095638\nv 1.640849 0.129374 0.095638\nv 1.712297 0.081722 0.095638\nv 1.658671 0.136824 0.095638\nv -1.436731 0.395220 0.148149\nv -1.354433 0.417166 0.145770\nv -1.353968 0.218720 0.185745\nv -1.472403 0.361741 0.149782\nv -1.442631 0.424734 0.121132\nv -1.488836 0.387367 0.122804\nv -1.441241 0.440429 0.095638\nv -1.492110 0.400174 0.095638\nv -1.448648 0.447376 0.095638\nv -1.502005 0.408130 0.095638\nv -1.069720 0.505481 0.095638\nv -0.919618 0.481454 0.095638\nv -1.071954 0.492593 0.095638\nv -0.920533 0.467818 0.095638\nv -1.069469 0.470146 0.149029\nv -0.923590 0.449476 0.145771\nv -1.077529 0.440173 0.168037\nv -0.929291 0.419014 0.165370\nv -1.094561 0.227718 0.217254\nv -0.941165 0.226673 0.216889\nv -1.101966 0.119727 0.233261\nv -0.949242 0.115795 0.245294\nv 1.256864 0.196597 0.138187\nv 1.260739 0.207375 0.113325\nv 1.476530 0.200206 0.122909\nv 1.252161 0.170791 0.157844\nv 1.261296 0.228504 0.095638\nv 1.476557 0.213829 0.095638\nv 1.262343 0.212026 0.095638\nv 1.476547 0.202954 0.095638\nv 1.255770 0.079179 0.184934\nv 1.590655 0.182681 0.095638\nv 1.581651 0.174410 0.095638\nv 1.571234 0.169220 0.131221\nv 0.323936 0.227185 0.122035\nv 0.318003 0.217012 0.149634\nv 0.325853 0.236394 0.095638\nv 0.324650 0.249436 0.095638\nv 0.142634 0.259500 0.140281\nv 0.141193 0.238043 0.162691\nv 0.139104 0.277240 0.095638\nv 0.137555 0.295814 0.095638\nv -0.537948 0.106904 0.248850\nv -0.312217 0.107760 0.240633\nv -0.065925 0.098439 0.232948\nv 0.136666 0.094206 0.220904\nv -0.061928 0.335702 0.135014\nv -0.063009 0.308705 0.156369\nv -0.075375 0.353045 0.095638\nv -0.070065 0.366723 0.095638\nv -0.306904 0.416862 0.095638\nv -0.305153 0.406157 0.095638\nv -0.305198 0.385206 0.141715\nv -0.304888 0.361927 0.157665\nv -0.065334 0.208944 0.194104\nv -0.313017 0.214546 0.207154\nv -0.532032 0.366979 0.148583\nv -0.535237 0.217968 0.208999\nv -0.532234 0.385835 0.135612\nv -0.532898 0.400962 0.095638\nv -0.531488 0.412509 0.095638\nv -0.777711 0.408406 0.142514\nv -0.769111 0.422643 0.095638\nv -0.781053 0.377454 0.162705\nv -0.787768 0.225627 0.216525\nv -0.769517 0.437026 0.095638\nv -1.369072 0.476359 0.095638\nv -1.363900 0.465458 0.095638\nv -1.543123 0.346443 0.095638\nv -1.361116 0.448744 0.122938\nv -1.495834 0.305823 0.149696\nv -1.523754 0.221326 0.155439\nv -1.522803 0.327560 0.124476\nv -1.560717 0.225902 0.132130\nv -1.530739 0.337480 0.095638\nv -1.575123 0.226290 0.095638\nv -1.588478 0.222680 0.095638\nv -0.796516 0.111863 0.257326\nv -1.354679 0.111376 0.196526\nv -1.541476 0.107162 0.159319\nv -1.578648 0.108332 0.134942\nv 0.310437 0.189306 0.170281\nv 0.134235 0.194986 0.183046\nv 0.309267 0.097646 0.209151\nv -0.615006 0.424091 0.033391\nv -0.615006 0.433393 0.033391\nv -0.473825 0.433393 0.033391\nv -0.473825 0.424091 0.033391\nv -0.473825 0.424091 -0.033391\nv -0.473825 0.433393 -0.033391\nv -0.615006 0.433393 -0.033391\nv -0.615006 0.424091 -0.033391\nv -0.633384 0.424091 -0.011130\nv -0.633384 0.424091 0.011130\nv -0.633384 0.433393 0.011130\nv -0.633384 0.433393 -0.011130\nv -0.455446 0.433393 -0.011130\nv -0.455446 0.433393 0.011130\nv -0.455446 0.424091 0.011130\nv -0.455446 0.424091 -0.011130\nv -0.588656 0.433393 0.021236\nv -0.588656 0.433393 -0.021236\nv -0.500173 0.433393 -0.021236\nv -0.500173 0.433393 0.021236\nv -0.582797 0.433393 -0.021236\nv -0.506033 0.433393 -0.021236\nv -0.506033 0.433393 0.021236\nv -0.582797 0.433393 0.021236\nv -0.500173 0.493949 0.021236\nv -0.506033 0.493949 0.021236\nv -0.506033 0.493949 -0.021236\nv -0.500173 0.493949 -0.021236\nv -0.588656 0.493949 -0.021236\nv -0.582797 0.493949 -0.021236\nv -0.582797 0.493949 0.021236\nv -0.588656 0.493949 0.021236\nv -0.582797 0.505326 -0.010080\nv -0.582797 0.505326 0.010080\nv -0.588656 0.505326 0.010080\nv -0.588656 0.505326 -0.010080\nv -0.500173 0.505326 -0.010080\nv -0.500173 0.505326 0.010080\nv -0.506033 0.505326 0.010080\nv -0.506033 0.505326 -0.010080\nv -0.495481 0.492210 0.000004\nv -0.495493 0.486134 0.010531\nv -0.495493 0.473979 0.010531\nv -0.495481 0.467900 0.000005\nv -0.495468 0.473977 -0.010521\nv -0.495468 0.486131 -0.010524\nv -0.593349 0.492210 -0.000003\nv -0.593361 0.486134 0.010523\nv -0.593361 0.473979 0.010524\nv -0.593349 0.467900 -0.000002\nv -0.593337 0.473977 -0.010529\nv -0.593337 0.486131 -0.010531\nv 0.016584 0.376842 0.000000\nv 0.022085 0.526763 0.023888\nv 0.030307 0.484572 0.023888\nv 0.016584 0.376842 0.023888\nv -0.037533 0.384439 0.023888\nv -0.027296 0.480040 0.023888\nv -0.036284 0.500320 0.023888\nv -0.059680 0.512036 0.023888\nv -0.106504 0.517946 0.023888\nv -0.149886 0.511307 0.023888\nv -0.200666 0.532592 0.023888\nv -0.260685 0.529706 0.023888\nv -0.131640 0.590813 0.023888\nv -0.058877 0.574929 0.023888\nv -0.004130 0.551671 0.023888\nv -0.144934 0.581969 0.036430\nv -0.072172 0.566085 0.036430\nv -0.017424 0.542827 0.036430\nv 0.008791 0.517919 0.036430\nv 0.017013 0.475728 0.036430\nv 0.002796 0.378772 0.036430\nv -0.028341 0.383155 0.036430\nv -0.017920 0.480062 0.036430\nv -0.040163 0.515596 0.036430\nv -0.063560 0.527311 0.036430\nv -0.110384 0.533220 0.036430\nv -0.153766 0.526581 0.036430\nv -0.204546 0.547867 0.036430\nv -0.258655 0.544150 0.036430\nv -0.131640 0.590813 0.005313\nv -0.058877 0.574929 0.005313\nv -0.004130 0.551671 0.005313\nv 0.022085 0.526763 0.005313\nv 0.030307 0.484572 0.005313\nv 0.016584 0.376842 0.005313\nv -0.130794 0.596832 0.005313\nv -0.056501 0.580522 0.005313\nv -0.001754 0.557264 0.005313\nv 0.028050 0.527926 0.005313\nv 0.036272 0.485734 0.005313\nv 0.026943 0.409776 0.000000\nv 0.026943 0.409776 0.005313\nv 0.019827 0.407429 0.005313\nv 0.019837 0.407401 0.000000\nv 0.019827 0.407429 -0.005313\nv 0.026943 0.409776 -0.005313\nv 0.036272 0.485734 -0.005313\nv 0.028050 0.527926 -0.005313\nv -0.001754 0.557264 -0.005313\nv -0.056501 0.580522 -0.005313\nv -0.130794 0.596832 -0.005313\nv 0.016584 0.376842 -0.005313\nv 0.030307 0.484572 -0.005313\nv 0.022085 0.526763 -0.005313\nv -0.004130 0.551671 -0.005313\nv -0.058877 0.574929 -0.005313\nv -0.131640 0.590813 -0.005313\nv -0.258655 0.544150 -0.036430\nv -0.204546 0.547867 -0.036430\nv -0.153766 0.526581 -0.036430\nv -0.110384 0.533220 -0.036430\nv -0.063560 0.527311 -0.036430\nv -0.040163 0.515596 -0.036430\nv -0.017920 0.480062 -0.036430\nv -0.028341 0.383155 -0.036430\nv 0.002796 0.378772 -0.036430\nv 0.017013 0.475728 -0.036430\nv 0.008791 0.517919 -0.036430\nv -0.017424 0.542827 -0.036430\nv -0.072172 0.566085 -0.036430\nv -0.144934 0.581969 -0.036430\nv -0.004130 0.551671 -0.023888\nv -0.058877 0.574929 -0.023888\nv -0.131640 0.590813 -0.023888\nv -0.260685 0.529706 -0.023888\nv -0.200666 0.532592 -0.023888\nv -0.149886 0.511307 -0.023888\nv -0.106504 0.517946 -0.023888\nv -0.059680 0.512036 -0.023888\nv -0.036284 0.500320 -0.023888\nv -0.027296 0.480040 -0.023888\nv -0.037533 0.384439 -0.023888\nv 0.016584 0.376842 -0.023888\nv 0.030307 0.484572 -0.023888\nv 0.022085 0.526763 -0.023888\nv -0.533314 0.604804 -0.023888\nv -0.552845 0.566513 -0.023888\nv -0.569343 0.459173 -0.023888\nv -0.515227 0.451562 -0.023888\nv -0.498721 0.546282 -0.023888\nv -0.484493 0.563300 -0.023888\nv -0.458774 0.568115 -0.023888\nv -0.412135 0.560891 -0.023888\nv -0.372261 0.542554 -0.023888\nv -0.317583 0.549021 -0.023888\nv -0.367891 0.624010 -0.023888\nv -0.442214 0.628793 -0.023888\nv -0.501250 0.621523 -0.023888\nv -0.357549 0.611844 -0.036430\nv -0.431871 0.616627 -0.036430\nv -0.490907 0.609358 -0.036430\nv -0.522972 0.592639 -0.036430\nv -0.542502 0.554348 -0.036430\nv -0.555556 0.457229 -0.036430\nv -0.524418 0.452860 -0.036430\nv -0.507729 0.548887 -0.036430\nv -0.476554 0.576915 -0.036430\nv -0.450835 0.581728 -0.036430\nv -0.404196 0.574505 -0.036430\nv -0.364323 0.556168 -0.036430\nv -0.309644 0.562635 -0.036430\nv -0.367891 0.624010 -0.005313\nv -0.442214 0.628793 -0.005313\nv -0.501250 0.621523 -0.005313\nv -0.533314 0.604804 -0.005313\nv -0.552845 0.566513 -0.005313\nv -0.569343 0.459173 -0.005313\nv -0.367045 0.630028 -0.005313\nv -0.442956 0.634825 -0.005313\nv -0.501993 0.627556 -0.005313\nv -0.538728 0.607566 -0.005313\nv -0.558259 0.569275 -0.005313\nv -0.570224 0.493686 -0.005313\nv -0.564031 0.489469 -0.005313\nv -0.564048 0.489444 0.000000\nv -0.564031 0.489469 0.005313\nv -0.570224 0.493686 0.005313\nv -0.570224 0.493686 0.000000\nv -0.558259 0.569275 0.005313\nv -0.538728 0.607566 0.005313\nv -0.501993 0.627556 0.005313\nv -0.442956 0.634825 0.005313\nv -0.367045 0.630028 0.005313\nv -0.569343 0.459173 0.005313\nv -0.552845 0.566513 0.005313\nv -0.533314 0.604804 0.005313\nv -0.501250 0.621523 0.005313\nv -0.442214 0.628793 0.005313\nv -0.367891 0.624010 0.005313\nv -0.309644 0.562635 0.036430\nv -0.364323 0.556168 0.036430\nv -0.404196 0.574505 0.036430\nv -0.450835 0.581728 0.036430\nv -0.476554 0.576915 0.036430\nv -0.507729 0.548887 0.036430\nv -0.524418 0.452860 0.036430\nv -0.555556 0.457229 0.036430\nv -0.542502 0.554348 0.036430\nv -0.522972 0.592639 0.036430\nv -0.490907 0.609358 0.036430\nv -0.431871 0.616627 0.036430\nv -0.357549 0.611844 0.036430\nv -0.501250 0.621523 0.023888\nv -0.442214 0.628793 0.023888\nv -0.367891 0.624010 0.023888\nv -0.317583 0.549021 0.023888\nv -0.372261 0.542554 0.023888\nv -0.412135 0.560891 0.023888\nv -0.458774 0.568115 0.023888\nv -0.484493 0.563300 0.023888\nv -0.498721 0.546282 0.023888\nv -0.515227 0.451562 0.023888\nv -0.569343 0.459173 0.023888\nv -0.552845 0.566513 0.023888\nv -0.533314 0.604804 0.023888\nv -0.569343 0.459173 0.000000\nv 0.050178 0.333036 0.033391\nv 0.052908 0.341927 0.033391\nv -0.082053 0.383371 0.033391\nv -0.084782 0.374480 0.033391\nv -0.084782 0.374480 -0.033391\nv -0.082053 0.383371 -0.033391\nv 0.052908 0.341927 -0.033391\nv 0.050178 0.333036 -0.033391\nv -0.033487 0.431805 -0.021236\nv -0.039088 0.433525 -0.021236\nv -0.035748 0.444401 -0.010080\nv -0.030147 0.442681 -0.010080\nv 0.067747 0.327641 -0.011130\nv 0.067747 0.327641 0.011130\nv -0.102351 0.379875 0.011130\nv -0.102351 0.379875 -0.011130\nv 0.070478 0.336532 -0.011130\nv -0.099621 0.388767 0.011130\nv -0.099621 0.388767 -0.011130\nv 0.070478 0.336532 0.011130\nv -0.056865 0.375637 0.021236\nv -0.056865 0.375637 -0.021236\nv -0.051264 0.373918 -0.021236\nv 0.022120 0.351382 -0.021236\nv 0.027720 0.349662 -0.021236\nv 0.027720 0.349662 0.021236\nv 0.022120 0.351382 0.021236\nv -0.051264 0.373918 0.021236\nv 0.043236 0.420146 -0.010080\nv 0.048837 0.418426 -0.010080\nv 0.045497 0.407550 -0.021236\nv 0.039896 0.409270 -0.021236\nv 0.045497 0.407550 0.021236\nv 0.039896 0.409270 0.021236\nv 0.043236 0.420146 0.010080\nv 0.048837 0.418426 0.010080\nv -0.030147 0.442681 0.010080\nv -0.033487 0.431805 0.021236\nv -0.039088 0.433525 0.021236\nv -0.035748 0.444401 0.010080\nv 0.049473 0.404511 0.000004\nv 0.047677 0.398705 0.010531\nv 0.044109 0.387086 0.010531\nv 0.042337 0.381272 0.000005\nv 0.044132 0.387076 -0.010521\nv 0.047700 0.398696 -0.010524\nv -0.045857 0.427426 -0.010531\nv -0.049424 0.415806 -0.010529\nv -0.051220 0.410002 -0.000002\nv -0.049448 0.415816 0.010524\nv -0.045880 0.427434 0.010523\nv -0.044084 0.433241 -0.000003\nv 0.449973 0.267568 -0.093164\nv 0.449973 0.280576 -0.093164\nv 0.314732 0.280576 -0.093244\nv 0.314732 0.267568 -0.093244\nv 0.314676 0.267568 0.000158\nv 0.314676 0.280576 0.000158\nv 0.449918 0.280576 0.000239\nv 0.449918 0.267568 0.000239\nv 0.467541 0.267568 -0.030886\nv 0.467560 0.267567 -0.062019\nv 0.467560 0.280576 -0.062019\nv 0.467541 0.280576 -0.030886\nv 0.297089 0.280576 -0.030986\nv 0.297108 0.280576 -0.062121\nv 0.297108 0.267567 -0.062121\nv 0.297089 0.267568 -0.030986\nv 0.427190 0.280576 -0.064734\nv 0.427169 0.280576 -0.028218\nv 0.389753 0.280576 -0.028240\nv 0.389774 0.280576 -0.064756\nv 0.436972 0.280576 -0.046470\nv 0.427190 0.294890 -0.064734\nv 0.436972 0.294890 -0.046470\nv 0.427169 0.294890 -0.028218\nv 0.389753 0.294890 -0.028240\nv 0.389774 0.294890 -0.064756\nv 0.424641 0.300432 -0.031770\nv 0.394502 0.300432 -0.031788\nv 0.394520 0.300432 -0.061203\nv 0.424659 0.300432 -0.061186\nv 0.432538 0.300432 -0.046473\nv 0.328038 0.267300 0.068978\nv 0.308206 0.267300 0.066811\nv 0.282344 0.267297 0.055585\nv 0.281925 0.267290 0.034459\nv 0.298308 0.267290 0.034037\nv 0.328038 0.281818 0.068974\nv 0.308206 0.281818 0.066806\nv 0.282344 0.281814 0.055581\nv 0.281925 0.281808 0.034455\nv 0.298308 0.281808 0.034033\nv 0.298321 0.281802 0.013769\nv 0.314211 0.281801 0.009036\nv 0.318095 0.281800 0.004296\nv 0.318203 0.281777 -0.069946\nv 0.324673 0.281776 -0.074253\nv 0.334160 0.281776 -0.076834\nv 0.298330 0.281812 0.047868\nv 0.298314 0.267288 0.023905\nv 0.298314 0.281805 0.023901\nv 0.298336 0.295919 0.037664\nv 0.298321 0.295912 0.013765\nv 0.314211 0.295911 0.009032\nv 0.318095 0.295909 0.004292\nv 0.318203 0.295888 -0.069950\nv 0.324673 0.295886 -0.074257\nv 0.334160 0.295886 -0.076838\nv 0.339705 0.281805 0.023902\nv 0.345370 0.295886 -0.076832\nv 0.354854 0.295886 -0.074239\nv 0.361318 0.295888 -0.069924\nv 0.361339 0.295909 0.004317\nv 0.365217 0.295911 0.009062\nv 0.381102 0.295912 0.013814\nv 0.381058 0.295919 0.037713\nv 0.381096 0.281805 0.023950\nv 0.381096 0.267288 0.023955\nv 0.381052 0.281812 0.047917\nv 0.345370 0.281776 -0.076828\nv 0.354854 0.281776 -0.074236\nv 0.361318 0.281777 -0.069920\nv 0.361339 0.281800 0.004321\nv 0.365217 0.281801 0.009066\nv 0.381102 0.281802 0.013818\nv 0.381090 0.281808 0.034082\nv 0.397473 0.281808 0.034523\nv 0.397029 0.281814 0.055650\nv 0.371153 0.281818 0.066843\nv 0.351319 0.281818 0.068988\nv 0.381090 0.267290 0.034087\nv 0.397473 0.267290 0.034527\nv 0.397029 0.267297 0.055654\nv 0.371153 0.267300 0.066847\nv 0.351319 0.267300 0.068992\nv -1.280975 0.491962 -0.073891\nv -1.271331 0.492809 -0.068467\nv -1.268138 0.493090 -0.060909\nv -1.266045 0.493279 -0.046264\nv -1.289598 0.491226 -0.010016\nv -1.312995 0.489169 -0.046365\nv -1.310838 0.489353 -0.061002\nv -1.307612 0.489632 -0.068545\nv -1.297945 0.490476 -0.073929\nv -1.289460 0.491219 -0.073923\nv -1.285729 0.505065 0.053906\nv -1.276058 0.505912 0.051786\nv -1.267447 0.506665 0.046430\nv -1.258834 0.507417 0.039994\nv -1.266791 0.506717 0.028827\nv -1.290857 0.504608 0.030174\nv -1.290909 0.504611 0.053887\nv -1.308286 0.497338 -0.068547\nv -1.298618 0.498182 -0.073930\nv -1.290134 0.498924 -0.073925\nv -1.296088 0.504158 0.053883\nv -1.294917 0.490780 0.053887\nv -1.289737 0.491232 0.053891\nv -1.305750 0.503313 0.051722\nv -1.304580 0.489933 0.051727\nv -1.314336 0.502560 0.046328\nv -1.313167 0.489181 0.046332\nv -1.322923 0.501807 0.039856\nv -1.321753 0.488428 0.039860\nv -1.335414 0.500715 0.037182\nv -1.334244 0.487336 0.037187\nv -1.344176 0.499952 0.035079\nv -1.343007 0.486572 0.035083\nv -1.351515 0.499308 0.028608\nv -1.350346 0.485929 0.028612\nv -1.351509 0.499303 0.019927\nv -1.350340 0.485924 0.019932\nv -1.347210 0.499676 0.012385\nv -1.346040 0.486297 0.012388\nv -1.339009 0.500390 0.006432\nv -1.338513 0.494717 0.006434\nv -1.337839 0.487011 0.006436\nv -1.343881 0.494246 0.005352\nv -1.343207 0.486542 0.005355\nv -1.349130 0.493791 -0.001570\nv -1.348457 0.486085 -0.001567\nv -1.349239 0.493773 -0.012974\nv -1.348565 0.486067 -0.012972\nv -1.343865 0.494240 -0.021594\nv -1.343191 0.486534 -0.021592\nv -1.332048 0.495271 -0.030210\nv -1.331374 0.487565 -0.030207\nv -1.320116 0.496312 -0.037748\nv -1.319442 0.488607 -0.037745\nv -1.313668 0.496873 -0.046367\nv -1.311512 0.497058 -0.061004\nv -1.268813 0.500796 -0.060912\nv -1.272005 0.500514 -0.068468\nv -1.281650 0.499667 -0.073894\nv -1.305197 0.497614 -0.050279\nv -1.275168 0.500243 -0.050209\nv -1.314395 0.496827 0.006449\nv -1.314356 0.496820 -0.027262\nv -1.305218 0.497619 -0.027277\nv -1.314892 0.502500 0.006447\nv -1.314917 0.502504 0.028722\nv -1.306172 0.508456 -0.015551\nv -1.315311 0.507656 -0.015535\nv -1.315369 0.507669 0.028721\nv -1.306185 0.508462 0.005642\nv -1.305918 0.505824 -0.045181\nv -1.275905 0.508451 -0.045111\nv -1.314855 0.502489 -0.023184\nv -1.305716 0.503288 -0.023199\nv -1.299427 0.507988 0.041703\nv -1.291241 0.508705 0.042309\nv -1.291630 0.513210 0.039777\nv -1.299653 0.512507 0.039172\nv -1.306743 0.515142 -0.029375\nv -1.306374 0.510990 -0.038553\nv -1.276380 0.513616 -0.038483\nv -1.306770 0.515152 0.005640\nv -1.276889 0.517767 0.005709\nv -1.276816 0.517766 -0.015484\nv -1.276775 0.517766 -0.029305\nv -1.306758 0.515145 -0.015553\nv -1.276304 0.511078 0.005711\nv -1.291255 0.509770 0.005723\nv -1.291197 0.509776 0.009889\nv -1.284572 0.510359 0.014239\nv -1.290956 0.505599 0.036180\nv -1.309309 0.503993 0.034731\nv -1.309713 0.509081 0.033820\nv -1.291400 0.510683 0.035268\nv -1.291309 0.509774 0.030172\nv -1.259635 0.493842 -0.037617\nv -1.241430 0.495451 0.006644\nv -1.257661 0.494039 0.039998\nv -1.266275 0.493286 0.046434\nv -1.274884 0.492533 0.051791\nv -1.284557 0.491686 0.053910\nv -1.247736 0.494887 -0.030027\nv -1.235957 0.495921 -0.021360\nv -1.230620 0.496392 -0.012717\nv -1.230779 0.496386 -0.001313\nv -1.236057 0.495921 0.005586\nv -1.233256 0.496170 0.012632\nv -1.228988 0.496546 0.020193\nv -1.229021 0.496550 0.028874\nv -1.236388 0.495905 0.035314\nv -1.245159 0.495134 0.037379\nv -1.283605 0.513913 0.039206\nv -1.273080 0.512287 0.033898\nv -1.283052 0.509422 0.041738\nv -1.272598 0.507206 0.034810\nv -1.267244 0.511882 0.028825\nv -1.275752 0.505912 -0.023129\nv -1.276231 0.511077 -0.015481\nv -1.266222 0.501044 0.006553\nv -1.266115 0.501043 -0.027158\nv -1.266627 0.506711 -0.023079\nv -1.267108 0.511876 -0.015432\nv -1.266719 0.506716 0.006551\nv -1.275241 0.500243 -0.027207\nv -1.284441 0.510372 0.019769\nv -1.242602 0.508830 0.006640\nv -1.242105 0.503156 0.006642\nv -1.246331 0.508513 0.037375\nv -1.237561 0.509284 0.035310\nv -1.230193 0.509929 0.028869\nv -1.230161 0.509925 0.020189\nv -1.234428 0.509549 0.012628\nv -1.266720 0.500983 -0.046266\nv -1.260309 0.501548 -0.037618\nv -1.236733 0.503626 0.005585\nv -1.231454 0.504093 -0.001316\nv -1.231296 0.504097 -0.012719\nv -1.236633 0.503627 -0.021362\nv -1.248411 0.502592 -0.030029\nv -1.285606 0.523666 0.019763\nv -1.285737 0.523653 0.014233\nv -1.292362 0.523070 0.009882\nv -1.298989 0.522492 0.014185\nv -1.299160 0.522479 0.019714\nv -1.292385 0.523075 0.024434\nv -1.291221 0.509781 0.024441\nv -1.297995 0.509186 0.019720\nv -1.297824 0.509198 0.014191\n# 1080 vertices\n\n# 0 vertex parms\n\n# 0 texture vertices\n\n# 0 normals\n\ng latch\nf 1076 1075 1080 1079\nf 1072 1077 1078 1057\nf 1074 1073 1022 1021\nf 1002 1080 1021 1020\nf 1054 1050 1019 1048\nf 1048 1057 1078 1027\nf 1016 1015 1019 1050 1017\nf 991 990 934 933\nf 943 949 955 1033\nf 945 944 1032 1031\nf 1060 946 1030 1043\nf 1062 1061 1042 1041\nf 1064 1063 1040 1039\nf 1067 1059 1029 1038\nf 1069 1068 1037 1036\nf 1071 1070 1035 1034\nf 1065 1066 1028 936\nf 990 989 935 934\nf 1065 993 1056 1052 1066\nf 1060 1061 1062 1063 1064 1058 1055 947 946\nf 1048 1019 1022 1057\nf 1049 1053 1052 1056\nf 1008 1046 1044 1009\nf 1051 1052 1053 1054 1055\nf 1047 1023 948 947\nf 1026 1045 1048 1027\nf 1044 1046 1047 1045\nf 1039 1040 1041 1042 1043 1030 1029\nf 1028 937 936\nf 937 1028 1029 1030 1031 1032 1033 955 954 957 959 961 974 986\nf 963 965 967 969 971 974 961\nf 1007 1010 1025 1024\nf 1025 1026 1027 1001\nf 1023 1024 998 948\nf 1011 1017 1013 1012\nf 1019 1015 1014 1002 1020\nf 1005 995 994 997 1000\nf 999 1011 1012 1003 1006\nf 1007 1008 1009 1010\nf 1005 1006 996 995\nf 993 992 1003 1004\nf 973 972 997 994\nf 988 987 992\nf 983 981 979 977 975 973 994 995 985\nf 988 950 940 939\nf 985 987 938 986\nf 981 983 984 982\nf 977 979 980 978\nf 973 975 976 974\nf 968 970 971 969\nf 964 966 967 965\nf 960 962 963 961\nf 956 958 959 957\nf 949 953 954 955\nf 950 951 941 940\nf 933 934 935 936 937 938 939 940 941 942\nf 147 148 139 142\nf 145 146 137 138\nf 143 144 141 140\nf 139 57 56 142\nf 139 140 62 57\nf 146 145 144 143 148 147\nf 51 41 40 39 38 37 52\nf 25 115 136 1\nf 102 103 117 118\nf 100 101 119 120\nf 98 99 121 122\nf 96 97 123 124\nf 114 104 105 125 126\nf 112 113 127 128\nf 110 111 129 130\nf 108 109 131 132\nf 106 107 133 134\nf 94 114 113 112 111 110 109 108 92\nf 106 95 107\nf 104 114 94 91\nf 86 90 91 85\nf 87 88 93 95\nf 84 85 89 88\nf 88 87 83 79 84\nf 77 78 90 86\nf 76 70 67 78\nf 73 75 77 66\nf 131 130 129 128 127 126 132\nf 6 5 74\nf 11 10 9 8 7 6 12\nf 72 73 66 69\nf 70 71 68 67\nf 68 69 57 51\nf 141 138 82 61\nf 63 64 65 59 62\nf 63 81 80 79 65 64\nf 60 83 87 55\nf 58 59 54 53\nf 54 55 46 48\nf 51 57 58 50\nf 59 58 57 62\nf 50 36 35 45 44 43 42 41 51\nf 48 46 33 32 49\nf 106 116 115 25 24 23 34 46 95\nf 33 34 4 5\nf 31 32 6 7\nf 29 30 8 9\nf 27 28 10 11\nf 35 36 26 12 13\nf 44 45 14 15\nf 42 43 16 17\nf 40 41 18 19\nf 38 39 20 21\nf 24 25 1 2\nf 103 102 101 100 90 52 37\nf 136 135 134 133 74 5 4 3 2 1\nf 23 24 2 3\nf 37 38 21 22\nf 39 40 19 20\nf 41 42 17 18\nf 43 44 15 16\nf 45 35 13 14\nf 26 27 11 12\nf 28 29 9 10\nf 30 31 7 8\nf 32 33 5 6\nf 34 23 3 4\nf 31 30 29 28 27 26 47 49 32\nf 34 33 46\nf 26 36 50 47\nf 95 46 55 87\nf 53 54 48 49\nf 71 70 73 72\nf 59 65 60 55 54\nf 53 49 47 50 58\nf 82 81 63 62 61\nf 65 79 83 60\nf 67 68 51 52\nf 69 66 56 57\nf 71 72 69 68\nf 17 16 15 14 13 12 18\nf 74 132 126 120 119 118 117 22 21 20 19 18 12 6\nf 132 74 133\nf 125 124 123 122 121 120 126\nf 75 76 78 77\nf 66 77 86 56\nf 78 67 52 90\nf 94 92 89 85 91\nf 70 76 75 73\nf 88 89 92 93\nf 86 82 138 137\nf 99 98 97 96 105 104 91 90 100\nf 107 95 93 92 108\nf 116 106 134 135\nf 107 108 132 133\nf 109 110 130 131\nf 111 112 128 129\nf 113 114 126 127\nf 105 96 124 125\nf 97 98 122 123\nf 99 100 120 121\nf 101 102 118 119\nf 103 37 22 117\nf 115 116 135 136\nf 80 81 82 84 79\nf 86 137 142 56\nf 85 84 82 86\nf 62 140 141 61\nf 144 145 138 141\nf 146 147 142 137\nf 148 143 140 139\nf 943 944 945 946 947 948 949\nf 951 952 942 941\nf 953 956 957 954\nf 958 960 961 959\nf 962 964 965 963\nf 966 968 969 967\nf 970 972 973 974 971\nf 975 977 978 976\nf 979 981 982 980\nf 983 985 986 984\nf 987 988 939 938\nf 989 990 991 952 951 950 988 992 993\nf 996 992 987 985 995\nf 997 972 970 968 966 964 962 960 998\nf 999 1000 1001 1002\nf 998 1001 1000 997\nf 1006 1003 992 996\nf 1000 999 1006 1005\nf 1012 1013 1004 1003\nf 1014 1015 1016 1017 1011 1018\nf 1014 1018 1011 999 1002\nf 1021 1022 1019 1020\nf 1024 1025 1001 998\nf 1008 1007 1024 1023\nf 1010 1009 1026 1025\nf 976 978 980 982 984 986 974\nf 986 938 937\nf 1034 1035 1036 1037 1038 1029 1028\nf 1009 1044 1045 1026\nf 1046 1008 1023 1047\nf 1045 1047 947 1048\nf 1049 1004 1013 1017 1050\nf 1050 1054 1053 1049\nf 1004 1049 1056 993\nf 1048 947 1055 1054\nf 1058 1059 1051 1055\nf 989 993 1065\nf 1051 1059 1067 1068 1069 1070 1071 1066 1052\nf 989 1065 936 935\nf 1066 1071 1034 1028\nf 1070 1069 1036 1035\nf 1068 1067 1038 1037\nf 1059 1058 1064 1039 1029\nf 1063 1062 1041 1040\nf 1061 1060 1043 1042\nf 946 945 1031 1030\nf 944 943 1033 1032\nf 952 991 933 942\nf 998 960 958 956 953 949 948\nf 1072 1073 1074 1075 1076 1077\nf 1079 1080 1002 1001\nf 1079 1001 1027 1078\nf 1075 1074 1021 1080\nf 1073 1072 1057 1022\nf 1077 1076 1079 1078\ng case\nusemtl brown\nf 491 165 166 493\nf 152 525 578 151\nf 540 577 549 539\nf 525 520 576 578\nf 577 534 542 549\nf 520 517 530 576\nf 537 572 156 155\nf 157 515 573 158\nf 159 574 575 160\nf 162 383 412 163\nf 550 552 537 538\nf 571 418 412 383\nf 568 570 384 575\nf 573 497 566 574\nf 572 559 514 516\nf 425 418 571 563\nf 569 567 500 502\nf 566 565 567 568\nf 497 498 565\nf 496 564 499 495\nf 509 564 496 511\nf 425 563 504 437\nf 562 507 505 561\nf 501 562 561 503\nf 555 449 443 560\nf 506 508 557 560\nf 510 512 558 556\nf 514 559 558 512\nf 556 558 551 553\nf 545 457 449 555\nf 553 547 546 554\nf 552 550 548 551\nf 542 541 547 548\nf 543 544 545 546\nf 544 536 463 462\nf 541 533 535 543\nf 539 538 154 149\nf 538 537 155 154\nf 535 531 532 536\nf 534 530 529 533\nf 531 523 521 532\nf 530 517 518 529\nf 522 524 527 526\nf 483 490 528 485\nf 165 491 489 164\nf 492 494 526 527\nf 166 167 482 493\nf 484 488 520 525\nf 524 522 521 523\nf 488 487 517 520\nf 169 516 515 157\nf 514 512 511 513\nf 510 508 507 509\nf 506 444 438 505\nf 504 502 501 503\nf 500 498 495 499\nf 481 494 493 482\nf 492 490 489 491\nf 488 485 487\nf 485 484 483\nf 388 476 389\nf 476 477 478 389\nf 480 481 482 479\nf 430 426 431 432\nf 444 445 441 438\nf 450 453 435 436\nf 423 406 408 422\nf 401 402 400 471\nf 472 473 470 469\nf 395 388 387 394\nf 167 172 479 482\nf 474 480 477 403\nf 173 182 389 478\nf 403 401 473 474\nf 400 399 468 471\nf 470 467 466 469\nf 468 465 464 467\nf 404 413 181 180\nf 413 391 186 181\nf 465 460 461 464\nf 462 461 456 457\nf 460 397 459 458\nf 414 415 454 459\nf 458 455 448 456\nf 448 455 451 442\nf 454 415 416 452\nf 421 433 435 422\nf 451 450 445 442\nf 439 440 446 447\nf 445 444 443 442\nf 441 440 439 438\nf 434 436 435 433\nf 421 420 429\nf 426 430 429 428\nf 419 417 424 428\nf 418 425 424 417\nf 422 408 407 421\nf 409 410 419 420\nf 418 417 411 412\nf 415 414 413 404\nf 411 174 163 412\nf 409 176 175 410\nf 408 178 177 407\nf 405 404 180 179\nf 400 394 393 399\nf 398 392 390 397\nf 394 387 386 393\nf 392 385 391 390\nf 387 183 184 386\nf 161 384 383 162\nf 150 381 380 151\nf 168 283 378 153\nf 381 376 375 380\nf 284 373 283\nf 376 371 370 375\nf 287 285 368 373\nf 169 276 365 156\nf 159 362 363 158\nf 161 360 361 160\nf 382 367 357 377\nf 356 366 365 355\nf 360 359 353 352\nf 351 350 362 361\nf 363 349 348 364\nf 352 353 347 346\nf 346 347 272 273\nf 346 341 351 352\nf 340 341 274 275\nf 340 349 350\nf 334 337 336 335\nf 342 343 336 337\nf 331 330 329 328\nf 327 326 281 282\nf 344 332 331 328\nf 324 323 322 326\nf 322 321 278 280\nf 333 348 349 338\nf 355 320 319 356\nf 321 322 323 318\nf 316 315 323 324\nf 318 314 313 319\nf 313 372 377 357\nf 314 315 311 312\nf 316 317 309 310\nf 310 307 306 311\nf 312 305 371 372\nf 382 381 150 149\nf 308 304 303 307\nf 306 302 301 305\nf 304 300 299 303\nf 302 298 297 301\nf 288 289 296 295\nf 294 368 285 286\nf 378 293 164 153\nf 368 294 268 267\nf 295 296 270 269\nf 152 379 283 168\nf 297 298 286 285\nf 299 300 289 288\nf 369 297 285 287\nf 364 348 277 276\nf 333 334 278 279\nf 335 329 281 280\nf 262 219 332 344 272 271\nf 343 342 274 273\nf 339 338 349 275\nf 291 292 268 269\nf 293 378 266 267\nf 378 283 266\nf 265 196 254\nf 251 253 196\nf 248 249 263 264\nf 224 223 260 216\nf 220 219 262 261\nf 228 226 257 255\nf 227 217 258 256\nf 205 178 170 259\nf 200 195 253 251\nf 245 246 252 250\nf 190 183 171 254\nf 296 247 263 270\nf 172 249 248 173\nf 201 196 265 264\nf 289 250 247 296\nf 245 243 244 246\nf 244 242 198 199\nf 304 308 241 243\nf 188 187 186 185\nf 242 239 197 198\nf 308 309 240 241\nf 237 239 240 236\nf 197 238 210 192\nf 237 235 234 238\nf 325 231 236 317\nf 234 235 232 233\nf 233 256 258 212\nf 233 232 257 256\nf 327 230 231 325\nf 220 225 229 219\nf 225 226 228 229\nf 262 271 345 218\nf 220 223 224 225\nf 222 216 260\nf 221 214 215 222\nf 261 262 218 221\nf 258 259 204 212\nf 215 207 206 216\nf 209 208 214 213\nf 203 211 212 204\nf 202 187 192 210\nf 175 208 209 174\nf 207 176 177 206\nf 259 170 179 204\nf 252 251 196 201\nf 198 193 194 199\nf 253 254 196\nf 193 188 189 194\nf 254 171 182 191\nf 188 185 184 189\nf 162 359 360 161\nf 189 184 183 190\nf 192 187 188 193\nf 194 189 190 195\nf 197 192 193 198\nf 199 194 195 200\nf 179 180 203 204\nf 206 177 178 205\nf 208 175 176 207\nf 358 163 174 209\nf 203 202 210 211\nf 358 209 213 354\nf 215 214 208 207\nf 216 206 205 217\nf 213 218 345 354\nf 221 218 213 214\nf 221 222 260 261\nf 222 215 216\nf 224 227 226 225\nf 330 331 229 228\nf 230 327 282 255\nf 332 219 229 331\nf 230 255 257 232\nf 217 227 224 216\nf 233 212 211 234\nf 230 232 235 231\nf 236 231 235 237\nf 238 234 211 210\nf 237 238 197 239\nf 317 236 240 309\nf 241 240 239 242\nf 181 186 187 202\nf 180 181 202 203\nf 243 241 242 244\nf 300 304 243 245\nf 246 244 199 200\nf 247 250 252 201\nf 248 191 182 173\nf 201 264 263 247\nf 290 249 172 167\nf 195 190 254 253\nf 300 245 250 289\nf 246 200 251 252\nf 217 205 259 258\nf 226 227 256 257\nf 330 228 255 282\nf 223 220 261 260\nf 249 290 270 263\nf 191 248 264 265\nf 191 265 254\nf 266 283 373\nf 287 373 284\nf 292 293 267 268\nf 290 291 269 270\nf 342 339 275 274\nf 344 343 273 272\nf 329 330 282 281\nf 334 335 280 278\nf 348 333 279 277\nf 157 364 276 169\nf 374 369 287 284\nf 298 299 288 286\nf 379 374 284 283\nf 291 290 167 166\nf 294 295 269 268\nf 164 293 292 165\nf 373 368 267 266\nf 295 294 286 288\nf 301 297 369 370\nf 303 299 298 302\nf 305 301 370 371\nf 307 303 302 306\nf 154 155 366 367\nf 149 154 367 382\nf 311 306 305 312\nf 309 308 307 310\nf 315 316 310 311\nf 313 314 312 372\nf 319 313 357 356\nf 323 315 314 318\nf 324 325 317 316\nf 318 319 320 321\nf 279 320 355 277\nf 321 320 279 278\nf 326 322 280 281\nf 326 327 325 324\nf 344 328 336 343\nf 328 329 335 336\nf 271 272 347 345\nf 333 338 337 334\nf 339 342 337 338\nf 340 275 349\nf 351 341 340 350\nf 273 274 341 346\nf 347 353 354 345\nf 276 277 355 365\nf 362 350 349 363\nf 361 360 352 351\nf 359 358 354 353\nf 367 366 356 357\nf 163 358 359 162\nf 160 361 362 159\nf 158 363 364 157\nf 155 156 365 366\nf 375 370 369 374\nf 377 372 371 376\nf 380 375 374 379\nf 382 377 376 381\nf 151 380 379 152\nf 291 166 165 292\nf 386 184 185 385\nf 389 182 171 388\nf 393 386 385 392\nf 396 388 395\nf 399 393 392 398\nf 403 396 402 401\nf 405 179 170 406\nf 407 177 176 409\nf 174 411 410 175\nf 414 390 391 413\nf 405 416 415 404\nf 417 419 410 411\nf 421 407 409 420\nf 416 405 406 423\nf 428 424 427 426\nf 429 420 419 428\nf 430 421 429\nf 434 433 432 431\nf 424 425 437 427\nf 440 441 436 434\nf 446 440 434 431\nf 449 448 442 443\nf 453 450 451 452\nf 416 423 453 452\nf 452 451 455 454\nf 457 456 448 449\nf 459 454 455 458\nf 390 414 459 397\nf 456 461 460 458\nf 464 461 462 463\nf 398 397 460 465\nf 185 186 391 385\nf 467 464 463 466\nf 399 398 465 468\nf 471 468 467 470\nf 475 474 473 472\nf 477 476 396 403\nf 173 478 479 172\nf 481 480 474 475\nf 388 171 183 387\nf 473 401 471 470\nf 402 395 394 400\nf 406 170 178 408\nf 453 423 422 435\nf 445 450 436 441\nf 426 427 446 431\nf 421 430 432 433\nf 477 480 479 478\nf 396 395 402\nf 388 396 476\nf 483 484 486\nf 490 483 486 489\nf 494 492 491 493\nf 498 497 496 495\nf 502 500 499 501\nf 437 504 503 447 446 427\nf 508 506 505 507\nf 512 510 509 511\nf 516 514 513 515\nf 487 519 518 517\nf 522 472 469 521\nf 519 524 523 518\nf 168 484 525 152\nf 494 481 475 526\nf 490 492 527 528\nf 153 164 489 486\nf 524 519 528 527\nf 526 475 472 522\nf 529 518 523 531\nf 532 521 469 466\nf 533 529 531 535\nf 536 532 466 463\nf 149 150 540 539\nf 542 534 533 541\nf 543 535 536 544\nf 544 462 457 545\nf 541 543 546 547\nf 550 549 542 548\nf 551 548 547 553\nf 555 554 546 545\nf 553 554 557 556\nf 552 551 558 559\nf 496 497 513 511\nf 508 510 556 557\nf 560 557 554 555\nf 561 439 447 503\nf 444 506 560 443\nf 561 505 438 439\nf 564 562 501 499\nf 507 562 564 509\nf 566 497 565\nf 498 500 567 565\nf 570 568 567 569\nf 502 504 563 569\nf 569 563 571 570\nf 515 513 497 573\nf 575 574 566 568\nf 570 571 383 384\nf 559 572 537 552\nf 549 550 538 539\nf 160 575 384 161\nf 158 573 574 159\nf 156 572 516 169\nf 485 528 519 487\nf 576 530 534 577\nf 484 485 488\nf 578 576 577 540\nf 153 486 484 168\nf 151 578 540 150\ng holder\nusemtl silver\nf 841 844 843 842\nf 839 846 845 840\nf 837 848 847 838\nf 837 838 839 840 841 842\nf 830 829 832 831\nf 831 832 826 825\nf 834 835 817 824\nf 806 805 819 818\nf 828 827 821 820\nf 829 830 823 822\nf 825 826 827 828\nf 821 822 798 816 813 803\nf 817 818 802 815 814 799\nf 802 801 812 815\nf 798 797 810 816\nf 804 803 813 809\nf 805 806 807 808\nf 797 798 799 800\nf 623 629 630 624\nf 621 627 628 622\nf 619 625 626 620\nf 619 620 621 622 623 624\nf 604 603 616 617\nf 617 616 615 618\nf 609 610 595 602\nf 607 608 599 596\nf 605 606 597 600\nf 603 604 601 598\nf 618 615 606 605\nf 597 598 581 592 591 584\nf 595 596 585 590 589 580\nf 585 586 587 590\nf 581 582 593 592\nf 583 584 591 594\nf 608 607 614 611\nf 582 581 580 579\nf 586 585 584 583\nf 586 583 594 593 582 579 588 587\nf 588 589 590 587\nf 594 591 592 593\nf 579 580 589 588\nf 596 599 600 597 584 585\nf 598 601 602 595 580 581\nf 601 600 599 602\nf 604 617 618 605 600 601\nf 606 615 616 603 598 597\nf 608 611 612 609 602 599\nf 610 613 614 607 596 595\nf 613 612 611 614\nf 610 609 612 613\nf 630 629 628 627 626 625\nf 620 626 627 621\nf 622 628 629 623\nf 624 630 625 619\nf 801 802 803 804\nf 801 804 809 810 797 800 811 812\nf 811 814 815 812\nf 809 813 816 810\nf 800 799 814 811\nf 818 819 820 821 803 802\nf 822 823 824 817 799 798\nf 823 820 819 824\nf 830 831 825 828 820 823\nf 827 826 832 829 822 821\nf 805 808 833 834 824 819\nf 835 836 807 806 818 817\nf 836 833 808 807\nf 835 834 833 836\nf 843 844 845 846 847 848\nf 838 847 846 839\nf 840 845 844 841\nf 842 843 848 837\ng handle\nusemtl black\nf 760 751 752 759\nf 777 793 764 796 747 718 734 735 719 792 776\nf 720 721 790 791\nf 722 723 788 789\nf 724 725 786 787\nf 762 749 750 761\nf 781 782 785 784\nf 779 780 783 795\nf 777 778 794 793\nf 774 775 791 790\nf 772 773 789 788\nf 770 771 787 786\nf 771 770 782 772\nf 773 781 780 774\nf 764 793 794 765 756\nf 795 783 767 766\nf 784 785 769 768\nf 760 759 765 766\nf 748 749 762 763\nf 752 753 758 757 759\nf 757 758 755 756\nf 752 746 754 753\nf 752 751 745 746\nf 726 727 743 742\nf 728 716 745 744\nf 717 718 747 754 746\nf 730 738 737 731\nf 741 740 739 729\nf 740 741 725 724\nf 738 739 723 722\nf 736 737 721 720\nf 733 734 718 717\nf 731 732 716 728\nf 729 730 727 726\nf 747 796 755 754\nf 696 695 694 697\nf 684 685 679 678\nf 699 700 703 702\nf 697 698 715 714\nf 694 695 712 711\nf 692 693 710 709\nf 690 691 708 707\nf 688 689 706 705\nf 690 689 701 691\nf 691 701 700 692\nf 693 699 698 697 694\nf 714 715 684 683\nf 702 703 686 685\nf 704 726 742 687\nf 680 679 685 686\nf 686 687 681 680\nf 676 671 674 675\nf 670 664 673 672\nf 678 679 668 669\nf 660 661 667 666\nf 668 667 661 662\nf 785 643 660 769\nf 644 645 662 661\nf 632 633 664 663\nf 649 648 654 653 650\nf 646 656 655 647\nf 658 657 656 646\nf 658 659 642 641\nf 656 657 640 639\nf 654 655 638 637\nf 652 653 636 635\nf 649 650 633 632\nf 647 648 645 644\nf 662 663 669 668\nf 748 763 666 681\nf 706 707 640 641\nf 708 709 638 639\nf 710 711 636 637\nf 712 695 696 713 682 631 665 634 651 652 635\nf 678 669 670 677\nf 652 651 650 653\nf 665 631 674 673\nf 711 712 635 636\nf 709 710 637 638\nf 707 708 639 640\nf 705 706 641 642\nf 680 667 668 679\nf 646 647 644 643\nf 648 649 632 645\nf 650 651 634 633\nf 653 654 637 636\nf 655 656 639 638\nf 657 658 641 640\nf 785 782 646 643\nf 782 770 659 658 646\nf 647 655 654 648\nf 633 634 665 673 664\nf 645 632 663 662\nf 643 644 661 660\nf 666 763 769 660\nf 670 669 663 664\nf 680 681 666 667\nf 671 676 677 670 672\nf 671 672 673 674\nf 683 677 676 675\nf 678 677 683 684\nf 748 681 687 742\nf 703 704 687 686\nf 715 702 685 684\nf 682 713 714 683 675\nf 692 700 699 693\nf 688 741 729 701 689\nf 701 729 726 704\nf 689 690 707 706\nf 691 692 709 708\nf 693 694 711 710\nf 696 697 714 713\nf 698 699 702 715\nf 700 701 704 703\nf 631 682 675 674\nf 735 734 733 736\nf 744 745 751 750\nf 730 731 728 727\nf 732 733 717 716\nf 735 736 720 719\nf 737 738 722 721\nf 739 740 724 723\nf 741 688 705 725\nf 729 739 738 730\nf 732 731 737 736 733\nf 716 717 746 745\nf 727 728 744 743\nf 750 749 743 744\nf 742 743 749 748\nf 758 753 754 755\nf 765 759 757 756\nf 750 751 760 761\nf 768 769 763 762\nf 762 761 767 768\nf 783 784 768 767\nf 794 795 766 765\nf 774 780 779 778 775\nf 772 782 781 773\nf 659 770 786 642\nf 771 772 788 787\nf 773 774 790 789\nf 775 776 792 791\nf 778 779 795 794\nf 780 781 784 783\nf 766 767 761 760\nf 725 705 642 786\nf 723 724 787 788\nf 721 722 789 790\nf 719 720 791 792\nf 796 764 756 755\nf 777 776 775 778\ng lock\nusemtl silver\nf 926 927 932 931\nf 924 925 930 929\nf 914 923 928 915\nf 911 912 922 921\nf 909 910 920 919\nf 907 908 918 917\nf 921 906 920\nf 898 890 891 906\nf 905 907 917 895\nf 903 904 894 893\nf 901 902 892 891\nf 899 900 890 898 889 896\nf 928 929 930 931 932 880 881 882 883 884 897 915\nf 899 913 912 911 910 909 908 907 905 904 903 902 901 900\nf 888 889 884 883\nf 886 887 882 881\nf 927 885 880 932\nf 889 888 887 896\nf 878 879 871 870\nf 876 877 874 873\nf 874 870 865 868\nf 872 873 867 866\nf 870 871 869 865\nf 877 876 875 879 878\nf 867 868 851 862 861 854\nf 866 855 860 859 869\nf 855 856 857 860\nf 851 852 863 862\nf 853 854 861 864\nf 856 855 854 853\nf 852 851 850 849\nf 856 853 864 863 852 849 858 857\nf 858 859 860 857\nf 864 861 862 863\nf 849 850 859 858\nf 866 867 854 855\nf 868 865 850 851\nf 850 865 869 859\nf 871 872 866 869\nf 873 874 868 867\nf 875 876 873 872\nf 877 878 870 874\nf 879 875 872 871\nf 918 919 920 906 892 893 894 895 917\nf 885 886 881 880\nf 887 888 883 882\nf 889 898 897 884\nf 886 885 927 926 925 916 896 887\nf 916 913 899 896\nf 900 901 891 890\nf 902 903 893 892\nf 904 905 895 894\nf 914 915 897 898 906\nf 891 892 906\nf 922 914 906 921\nf 908 909 919 918\nf 910 911 921 920\nf 914 922 912 913 916 923\nf 923 924 929 928\nf 925 926 931 930\nf 924 923 916 925\n# 944 elements\n"
  },
  {
    "path": "test/bgratutorial3d/ubgrasamples.pas",
    "content": "unit ubgrasamples;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Controls, Graphics,\n  BGRABitmapTypes, BGRABitmap, BGRAGradients;\n\n{ Drawings }\nprocedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);\nprocedure DrawFlashPlayerButtonPanel(ABitmap: TBGRABitmap);\nprocedure DrawWin7ToolBar(ABitmap: TBGRABitmap; ADir: TAlign);\n\nimplementation\n\n{ Drawings }\n\nprocedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);\nbegin\n  with ABitmap do begin\n    GradientFill(0,0,Width,Height,BGRA(203,19,23,255),BGRA(110,3,20,255),\n    gtLinear,PointF(0,0),PointF(0,Height),dmSet);\n    Rectangle(0,0,Width,Height+1,BGRA(0,0,0,215),dmDrawWithTransparency);\n  end;\nend;\n\nprocedure DrawFlashPlayerButtonPanel(ABitmap: TBGRABitmap);\nbegin\n  with ABitmap do begin\n    DrawHorizLine(0,0,Width,BGRA(30,30,30,255));\n    DrawHorizLine(0,Height-1,Width,BGRA(62,62,62,255));\n    Rectangle(0,1,Width,Height-1,BGRA(91,91,91,255),BGRA(76,76,76,255),dmSet);\n  end;\nend;\n\nprocedure DrawWin7ToolBar(ABitmap: TBGRABitmap; ADir: TAlign);\nvar\n  tempBmp: TBGRABitmap;\nbegin\n  tempBmp := DoubleGradientAlphaFill(Rect(0,0,ABitmap.Width,ABitmap.Height),\n  BGRA(245,250,255,255),BGRA(230,240,250,255),\n  BGRA(220,230,244,255),BGRA(221,233,247,255),\n  gdVertical,gdVertical,gdVertical,0.50);\n  ABitmap.PutImage(0,0,tempBmp,dmSet);\n  tempBmp.Free;\n  case ADir of\n    alLeft :  with ABitmap do begin\n      Rectangle(0,0,Width-2,Height,BGRA(255,255,255,100),dmDrawWithTransparency);\n      SetVertLine(Width-1,0,Height-1,BGRA(160,175,195,255));\n      SetVertLine(Width-2,0,Height-1,BGRA(205,218,234,255));\n    end;\n    alTop : with ABitmap do begin\n      Rectangle(0,0,Width,Height-2,BGRA(255,255,255,100),dmDrawWithTransparency);\n      SetHorizLine(0,Height-1,Width-1,BGRA(160,175,195,255));\n      SetHorizLine(0,Height-2,Width-1,BGRA(205,218,234,255));\n    end;\n    alRight : with ABitmap do begin\n      Rectangle(2,0,Width,Height,BGRA(255,255,255,100),dmDrawWithTransparency);\n      SetVertLine(0,0,Height,BGRA(160,175,195,255));\n      SetVertLine(1,0,Height,BGRA(205,218,234,255));\n    end;\n    alBottom : with ABitmap do begin\n      Rectangle(0,2,Width,Height,BGRA(255,255,255,100),dmDrawWithTransparency);\n      SetHorizLine(0,0,Width-1,BGRA(160,175,195,255));\n      SetHorizLine(0,1,Width-1,BGRA(205,218,234,255));\n    end;\n    alClient, alCustom, alNone : with ABitmap do begin\n      Rectangle(0,0,Width,Height,BGRA(255,255,255,100),dmDrawWithTransparency);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/umain.lfm",
    "content": "object Form1: TForm1\n  Left = 481\n  Height = 415\n  Top = 125\n  Width = 778\n  Caption = 'BGRATutorial3D'\n  ClientHeight = 415\n  ClientWidth = 778\n  KeyPreview = True\n  OnClose = FormClose\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnKeyPress = FormKeyPress\n  OnResize = FormResize\n  OnShow = FormShow\n  LCLVersion = '1.8.4.0'\n  object BGRASurface: TBGRAVirtualScreen\n    Left = 0\n    Height = 381\n    Top = 0\n    Width = 360\n    OnRedraw = BGRASurfaceRedraw\n    Align = alLeft\n    Alignment = taLeftJustify\n    Color = clGray\n    ParentColor = False\n    TabOrder = 1\n    OnMouseDown = SurfaceMouseDown\n    OnMouseEnter = BGRASurfaceMouseEnter\n    OnMouseMove = SurfaceMouseMove\n    OnMouseUp = SurfaceMouseUp\n  end\n  object vsToolbar: TBCPanel\n    Left = 0\n    Height = 34\n    Top = 381\n    Width = 778\n    Align = alBottom\n    Background.Color = clBtnFace\n    Background.ColorOpacity = 255\n    Background.Gradient1.StartColor = 16775925\n    Background.Gradient1.StartColorOpacity = 255\n    Background.Gradient1.DrawMode = dmSet\n    Background.Gradient1.EndColor = 16445670\n    Background.Gradient1.EndColorOpacity = 255\n    Background.Gradient1.ColorCorrection = True\n    Background.Gradient1.GradientType = gtLinear\n    Background.Gradient1.Point1XPercent = 0\n    Background.Gradient1.Point1YPercent = 0\n    Background.Gradient1.Point2XPercent = 0\n    Background.Gradient1.Point2YPercent = 100\n    Background.Gradient1.Sinus = False\n    Background.Gradient2.StartColor = 16049884\n    Background.Gradient2.StartColorOpacity = 255\n    Background.Gradient2.DrawMode = dmSet\n    Background.Gradient2.EndColor = 16247261\n    Background.Gradient2.EndColorOpacity = 255\n    Background.Gradient2.ColorCorrection = True\n    Background.Gradient2.GradientType = gtLinear\n    Background.Gradient2.Point1XPercent = 0\n    Background.Gradient2.Point1YPercent = 0\n    Background.Gradient2.Point2XPercent = 0\n    Background.Gradient2.Point2YPercent = 100\n    Background.Gradient2.Sinus = False\n    Background.Gradient1EndPercent = 50\n    Background.Style = bbsGradient\n    BevelInner = bvNone\n    BevelOuter = bvRaised\n    BevelWidth = 1\n    Border.Color = 12824480\n    Border.ColorOpacity = 200\n    Border.LightColor = clWhite\n    Border.LightOpacity = 200\n    Border.LightWidth = 1\n    Border.Style = bboSolid\n    Border.Width = 1\n    BorderBCStyle = bpsBorder\n    FontEx.Color = clDefault\n    FontEx.EndEllipsis = False\n    FontEx.FontQuality = fqSystemClearType\n    FontEx.Height = 0\n    FontEx.SingleLine = True\n    FontEx.Shadow = False\n    FontEx.ShadowColor = clBlack\n    FontEx.ShadowColorOpacity = 255\n    FontEx.ShadowRadius = 5\n    FontEx.ShadowOffsetX = 5\n    FontEx.ShadowOffsetY = 5\n    FontEx.Style = []\n    FontEx.TextAlignment = bcaCenter\n    FontEx.WordBreak = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TabOrder = 0\n    OnMouseEnter = vsToolbarMouseEnter\n    object BCButton1: TBCButton\n      Left = 3\n      Height = 28\n      Top = 3\n      Width = 48\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = '1. Color'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton1Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton2: TBCButton\n      Left = 57\n      Height = 28\n      Top = 3\n      Width = 40\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = '2. Tex'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton2Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton3: TBCButton\n      Left = 96\n      Height = 28\n      Top = 3\n      Width = 32\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = 'Dir.'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton3Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton4: TBCButton\n      Left = 128\n      Height = 28\n      Top = 3\n      Width = 48\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = 'Phong'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton4Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton5: TBCButton\n      Left = 184\n      Height = 28\n      Top = 3\n      Width = 64\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = '3. Gouraud'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton5Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton6: TBCButton\n      Left = 248\n      Height = 28\n      Top = 3\n      Width = 32\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = 'Mix'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton6Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton7: TBCButton\n      Left = 280\n      Height = 28\n      Top = 3\n      Width = 40\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = 'Vertex'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton7Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton8: TBCButton\n      Left = 328\n      Height = 28\n      Top = 3\n      Width = 64\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = '4. Models'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton8Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object BCButton9: TBCButton\n      Left = 432\n      Height = 28\n      Top = 3\n      Width = 80\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = '5. First person'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton9Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object SpinEdit_AA: TSpinEdit\n      Left = 587\n      Height = 21\n      Top = 5\n      Width = 50\n      Enabled = False\n      MaxValue = 8\n      MinValue = 1\n      OnChange = SpinEdit_AAChange\n      TabOrder = 0\n      Value = 1\n    end\n    object Label1: TLabel\n      Left = 520\n      Height = 13\n      Top = 10\n      Width = 54\n      Caption = 'Antialiasing'\n      ParentColor = False\n    end\n    object BCButton10: TBCButton\n      Left = 392\n      Height = 28\n      Top = 3\n      Width = 32\n      StateClicked.Background.Color = clBlack\n      StateClicked.Background.ColorOpacity = 255\n      StateClicked.Background.Gradient1.StartColor = 16116962\n      StateClicked.Background.Gradient1.StartColorOpacity = 255\n      StateClicked.Background.Gradient1.DrawMode = dmSet\n      StateClicked.Background.Gradient1.EndColor = 15852760\n      StateClicked.Background.Gradient1.EndColorOpacity = 255\n      StateClicked.Background.Gradient1.ColorCorrection = True\n      StateClicked.Background.Gradient1.GradientType = gtLinear\n      StateClicked.Background.Gradient1.Point1XPercent = 0\n      StateClicked.Background.Gradient1.Point1YPercent = 0\n      StateClicked.Background.Gradient1.Point2XPercent = 0\n      StateClicked.Background.Gradient1.Point2YPercent = 100\n      StateClicked.Background.Gradient1.Sinus = False\n      StateClicked.Background.Gradient2.StartColor = 15522767\n      StateClicked.Background.Gradient2.StartColorOpacity = 255\n      StateClicked.Background.Gradient2.DrawMode = dmSet\n      StateClicked.Background.Gradient2.EndColor = 15588559\n      StateClicked.Background.Gradient2.EndColorOpacity = 255\n      StateClicked.Background.Gradient2.ColorCorrection = True\n      StateClicked.Background.Gradient2.GradientType = gtLinear\n      StateClicked.Background.Gradient2.Point1XPercent = 0\n      StateClicked.Background.Gradient2.Point1YPercent = 0\n      StateClicked.Background.Gradient2.Point2XPercent = 0\n      StateClicked.Background.Gradient2.Point2YPercent = 100\n      StateClicked.Background.Gradient2.Sinus = False\n      StateClicked.Background.Gradient1EndPercent = 50\n      StateClicked.Background.Style = bbsGradient\n      StateClicked.Border.Color = 14404283\n      StateClicked.Border.ColorOpacity = 255\n      StateClicked.Border.LightColor = clSilver\n      StateClicked.Border.LightOpacity = 100\n      StateClicked.Border.LightWidth = 1\n      StateClicked.Border.Style = bboSolid\n      StateClicked.Border.Width = 1\n      StateClicked.FontEx.Color = clBlack\n      StateClicked.FontEx.EndEllipsis = False\n      StateClicked.FontEx.FontQuality = fqSystemClearType\n      StateClicked.FontEx.Height = 0\n      StateClicked.FontEx.SingleLine = True\n      StateClicked.FontEx.Shadow = False\n      StateClicked.FontEx.ShadowColor = clBlack\n      StateClicked.FontEx.ShadowColorOpacity = 255\n      StateClicked.FontEx.ShadowRadius = 5\n      StateClicked.FontEx.ShadowOffsetX = 5\n      StateClicked.FontEx.ShadowOffsetY = 5\n      StateClicked.FontEx.Style = []\n      StateClicked.FontEx.TextAlignment = bcaCenter\n      StateClicked.FontEx.WordBreak = False\n      StateHover.Background.Color = clBlack\n      StateHover.Background.ColorOpacity = 255\n      StateHover.Background.Gradient1.StartColor = 16710648\n      StateHover.Background.Gradient1.StartColorOpacity = 255\n      StateHover.Background.Gradient1.DrawMode = dmSet\n      StateHover.Background.Gradient1.EndColor = 16446189\n      StateHover.Background.Gradient1.EndColorOpacity = 255\n      StateHover.Background.Gradient1.ColorCorrection = True\n      StateHover.Background.Gradient1.GradientType = gtLinear\n      StateHover.Background.Gradient1.Point1XPercent = 0\n      StateHover.Background.Gradient1.Point1YPercent = 0\n      StateHover.Background.Gradient1.Point2XPercent = 0\n      StateHover.Background.Gradient1.Point2YPercent = 100\n      StateHover.Background.Gradient1.Sinus = False\n      StateHover.Background.Gradient2.StartColor = 16049367\n      StateHover.Background.Gradient2.StartColorOpacity = 255\n      StateHover.Background.Gradient2.DrawMode = dmSet\n      StateHover.Background.Gradient2.EndColor = 15258305\n      StateHover.Background.Gradient2.EndColorOpacity = 255\n      StateHover.Background.Gradient2.ColorCorrection = True\n      StateHover.Background.Gradient2.GradientType = gtLinear\n      StateHover.Background.Gradient2.Point1XPercent = 0\n      StateHover.Background.Gradient2.Point1YPercent = 0\n      StateHover.Background.Gradient2.Point2XPercent = 0\n      StateHover.Background.Gradient2.Point2YPercent = 100\n      StateHover.Background.Gradient2.Sinus = False\n      StateHover.Background.Gradient1EndPercent = 50\n      StateHover.Background.Style = bbsGradient\n      StateHover.Border.Color = 14404283\n      StateHover.Border.ColorOpacity = 255\n      StateHover.Border.LightColor = clWhite\n      StateHover.Border.LightOpacity = 200\n      StateHover.Border.LightWidth = 1\n      StateHover.Border.Style = bboSolid\n      StateHover.Border.Width = 1\n      StateHover.FontEx.Color = clBlack\n      StateHover.FontEx.EndEllipsis = False\n      StateHover.FontEx.FontQuality = fqSystemClearType\n      StateHover.FontEx.Height = 0\n      StateHover.FontEx.SingleLine = True\n      StateHover.FontEx.Shadow = False\n      StateHover.FontEx.ShadowColor = clBlack\n      StateHover.FontEx.ShadowColorOpacity = 255\n      StateHover.FontEx.ShadowRadius = 5\n      StateHover.FontEx.ShadowOffsetX = 5\n      StateHover.FontEx.ShadowOffsetY = 5\n      StateHover.FontEx.Style = []\n      StateHover.FontEx.TextAlignment = bcaCenter\n      StateHover.FontEx.WordBreak = False\n      StateNormal.Background.Color = clBlack\n      StateNormal.Background.ColorOpacity = 255\n      StateNormal.Background.Gradient1.StartColor = 15722194\n      StateNormal.Background.Gradient1.StartColorOpacity = 255\n      StateNormal.Background.Gradient1.DrawMode = dmSet\n      StateNormal.Background.Gradient1.EndColor = 13137169\n      StateNormal.Background.Gradient1.EndColorOpacity = 255\n      StateNormal.Background.Gradient1.ColorCorrection = True\n      StateNormal.Background.Gradient1.GradientType = gtLinear\n      StateNormal.Background.Gradient1.Point1XPercent = 0\n      StateNormal.Background.Gradient1.Point1YPercent = 0\n      StateNormal.Background.Gradient1.Point2XPercent = 0\n      StateNormal.Background.Gradient1.Point2YPercent = 100\n      StateNormal.Background.Gradient1.Sinus = False\n      StateNormal.Background.Gradient2.StartColor = 13137169\n      StateNormal.Background.Gradient2.StartColorOpacity = 255\n      StateNormal.Background.Gradient2.DrawMode = dmSet\n      StateNormal.Background.Gradient2.EndColor = 15722194\n      StateNormal.Background.Gradient2.EndColorOpacity = 255\n      StateNormal.Background.Gradient2.ColorCorrection = True\n      StateNormal.Background.Gradient2.GradientType = gtLinear\n      StateNormal.Background.Gradient2.Point1XPercent = 0\n      StateNormal.Background.Gradient2.Point1YPercent = 0\n      StateNormal.Background.Gradient2.Point2XPercent = 0\n      StateNormal.Background.Gradient2.Point2YPercent = 100\n      StateNormal.Background.Gradient2.Sinus = False\n      StateNormal.Background.Gradient1EndPercent = 35\n      StateNormal.Background.Style = bbsClear\n      StateNormal.Border.Color = 11235643\n      StateNormal.Border.ColorOpacity = 255\n      StateNormal.Border.LightColor = clWhite\n      StateNormal.Border.LightOpacity = 255\n      StateNormal.Border.LightWidth = 0\n      StateNormal.Border.Style = bboNone\n      StateNormal.Border.Width = 1\n      StateNormal.FontEx.Color = clBlack\n      StateNormal.FontEx.EndEllipsis = False\n      StateNormal.FontEx.FontQuality = fqSystemClearType\n      StateNormal.FontEx.Height = 0\n      StateNormal.FontEx.SingleLine = True\n      StateNormal.FontEx.Shadow = False\n      StateNormal.FontEx.ShadowColor = clBlack\n      StateNormal.FontEx.ShadowColorOpacity = 255\n      StateNormal.FontEx.ShadowRadius = 5\n      StateNormal.FontEx.ShadowOffsetX = 5\n      StateNormal.FontEx.ShadowOffsetY = 5\n      StateNormal.FontEx.Style = []\n      StateNormal.FontEx.TextAlignment = bcaCenter\n      StateNormal.FontEx.WordBreak = False\n      Caption = 'Next'\n      Color = clNone\n      DropDownWidth = 16\n      DropDownArrowSize = 8\n      GlobalOpacity = 255\n      InnerMargin = 0\n      OnClick = BCButton10Click\n      ParentColor = False\n      Rounding.RoundX = 2\n      Rounding.RoundY = 2\n      Rounding.RoundOptions = []\n      RoundingDropDown.RoundX = 1\n      RoundingDropDown.RoundY = 1\n      RoundingDropDown.RoundOptions = []\n      TextApplyGlobalOpacity = False\n      MemoryUsage = bmuHigh\n    end\n    object ComboBox_Render: TComboBox\n      Left = 648\n      Height = 21\n      Top = 5\n      Width = 124\n      ItemHeight = 13\n      ItemIndex = 0\n      Items.Strings = (\n        'OpenGL'\n        'BGRA'\n        'BGRA&OpenGL'\n      )\n      OnChange = ComboBox_RenderChange\n      Style = csDropDownList\n      TabOrder = 1\n      Text = 'OpenGL'\n    end\n  end\n  object Timer1: TTimer\n    Enabled = False\n    Interval = 1\n    OnTimer = Timer1Timer\n    left = 8\n    top = 8\n  end\nend\n"
  },
  {
    "path": "test/bgratutorial3d/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This unit provides a user interface for showing the scenes, create the\n  scene objects with different parameters, and handle mouse interaction. \n  \n  It also show information about rendering counters and speed. \n  \n  Scene 5 is handled differently in BGRASurfaceMouseMove because it is\n  a first-person view, whereas in other scenes, it is the viewed object\n  that gets rotated. }\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  Spin, StdCtrls, BGRAVirtualScreen, BCButton, BCPanel, BGRABitmap, BGRAScene3D,\n  EpikTimer{$IFNDEF NO_OPENGL_SURFACE}, BGLVirtualScreen, BGRAOpenGL, BGRAOpenGL3D{$ENDIF};\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BCButton1: TBCButton;\n    BCButton10: TBCButton;\n    BCButton2: TBCButton;\n    BCButton3: TBCButton;\n    BCButton4: TBCButton;\n    BCButton5: TBCButton;\n    BCButton6: TBCButton;\n    BCButton7: TBCButton;\n    BCButton8: TBCButton;\n    BCButton9: TBCButton;\n    BGRASurface: TBGRAVirtualScreen;\n    ComboBox_Render: TComboBox;\n    Label1: TLabel;\n    SpinEdit_AA: TSpinEdit;\n    Timer1: TTimer;\n    vsToolbar: TBCPanel;\n    procedure BCButton10Click(Sender: TObject);\n    procedure BCButton1Click(Sender: TObject);\n    procedure BCButton2Click(Sender: TObject);\n    procedure BCButton3Click(Sender: TObject);\n    procedure BCButton4Click(Sender: TObject);\n    procedure BCButton5Click(Sender: TObject);\n    procedure BCButton6Click(Sender: TObject);\n    procedure BCButton7Click(Sender: TObject);\n    procedure BCButton8Click(Sender: TObject);\n    procedure BCButton9Click(Sender: TObject);\n    {$IFNDEF NO_OPENGL_SURFACE}\n    procedure BGLSurfaceMouseEnter(Sender: TObject);\n    procedure BGLSurfaceRedraw(Sender: TObject; BGLContext: TBGLContext);\n    {$ENDIF}\n    procedure SurfaceMouseDown(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure BGRASurfaceMouseEnter(Sender: TObject);\n    procedure SurfaceMouseMove(Sender: TObject; {%H-}Shift: TShiftState; X,\n      Y: Integer);\n    procedure SurfaceMouseUp(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);\n    procedure BGRASurfaceRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure ComboBox_RenderChange(Sender: TObject);\n    procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormKeyPress(Sender: TObject; var Key: char);\n    procedure FormResize(Sender: TObject);\n    procedure FormShow(Sender: TObject);\n    procedure SpinEdit_AAChange(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n    procedure vsToolbarMouseEnter(Sender: TObject);\n    procedure vsToolbarRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n  private\n    { private declarations }\n  public\n    { public declarations }\n    {$IFNDEF NO_OPENGL_SURFACE}\n    BGLSurface: TBGLVirtualScreen;\n    glFont: IBGLFont;\n    scene: TBGLScene3D;\n    {$ELSE}\n    scene: TBGRAScene3D;\n    {$ENDIF}\n    moving: boolean;\n    moveOrigin: TPoint;\n    timer: TEpikTimer;\n    procedure AdjustSceneSize;\n    procedure RedrawScene;\n  end; \n\nvar\n  Form1: TForm1; \n\nimplementation\n\n{$R *.lfm}\n\nuses ubgrasamples, ex1, ex2, ex3, ex4, ex5, BGRABitmapTypes;\n\n{ TForm1 }\n\nprocedure TForm1.vsToolbarRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nbegin\n  DrawWin7ToolBar(Bitmap,vsToolBar.Align);\nend;\n\nprocedure TForm1.AdjustSceneSize;\nbegin\n  {$IFNDEF NO_OPENGL_SURFACE}\n  if ComboBox_Render.Text = 'BGRA' then\n  begin\n    if BGLSurface.Visible then\n    begin\n      BGRASurface.Visible := false;\n      BGLSurface.Visible := false;\n\n      BGRASurface.Visible := true;\n      BGRASurface.Align := alClient;\n    end;\n  end else\n  if ComboBox_Render.Text = 'OpenGL' then\n  begin\n    if BGRASurface.Visible then\n    begin\n      BGRASurface.Visible := false;\n      BGLSurface.Visible := false;\n\n      BGLSurface.Visible := true;\n      BGLSurface.Align := alClient;\n    end;\n  end else //BGRA&OpenGL\n  begin\n    if not BGRASurface.Visible or not BGLSurface.Visible then\n    begin\n      BGRASurface.Visible := false;\n      BGLSurface.Visible := false;\n\n      BGRASurface.Visible := true;\n      BGLSurface.Visible := true;\n      BGRASurface.Align := alLeft;\n      BGLSurface.Align := alClient;\n    end;\n    BGRASurface.Width := ClientWidth div 2;\n  end;\n  {$ENDIF}\nend;\n\nprocedure TForm1.RedrawScene;\nbegin\n  if BGRASurface.Visible then BGRASurface.DiscardBitmap;\n  {$IFNDEF NO_OPENGL_SURFACE}\n  if Assigned(BGLSurface) and BGLSurface.Visible then BGLSurface.Invalidate;\n  {$ENDIF}\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  scene := nil;\n  timer := TEpikTimer.Create(nil);\n  timer.TimebaseSource := HardwareTimebase;\n\n  {$IFNDEF NO_OPENGL_SURFACE}\n  BGLSurface := TBGLVirtualScreen.Create(self);\n  BGLSurface.Color := clGray;\n  BGLSurface.OnMouseEnter:= @BGLSurfaceMouseEnter;\n  BGLSurface.OnMouseDown:= @SurfaceMouseDown;\n  BGLSurface.OnMouseMove:= @SurfaceMouseMove;\n  BGLSurface.OnMouseUp:= @SurfaceMouseUp;\n  BGLSurface.OnRedraw:= @BGLSurfaceRedraw;\n  BGLSurface.Align := alClient;\n  BGLSurface.Parent := self;\n  {$ELSE}\n  BGRASurface.Align := alClient;\n  ComboBox_Render.Items.Clear;\n  ComboBox_Render.Items.Add('BGRA');\n  ComboBox_Render.ItemIndex := 0;\n  {$ENDIF}\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  timer.Free;\nend;\n\nprocedure TForm1.FormKeyPress(Sender: TObject; var Key: char);\nbegin\n  if Key = '+' then\n  begin\n    if scene <> nil then\n    begin\n      scene.Zoom := scene.Zoom*1.5;\n      Key := #0;\n    end;\n  end;\n  if Key = '-' then\n  begin\n    if scene <> nil then\n    begin\n      scene.Zoom := scene.Zoom*(1/1.5);\n      Key := #0;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormResize(Sender: TObject);\nbegin\n  AdjustSceneSize;\nend;\n\nprocedure TForm1.FormShow(Sender: TObject);\nbegin\n  AdjustSceneSize;\nend;\n\nprocedure TForm1.SpinEdit_AAChange(Sender: TObject);\nbegin\n\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  Timer1.Enabled := false;\n  if assigned(scene) and (scene is TExample2) then\n    TExample2(scene).Elapse else\n  if assigned(scene) and (scene is TExample4) then\n    TExample4(scene).Elapse;\n  RedrawScene;\nend;\n\nprocedure TForm1.vsToolbarMouseEnter(Sender: TObject);\nbegin\n  SpinEdit_AA.Enabled := true;\nend;\n\nprocedure TForm1.BGRASurfaceRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar h,cury: integer;\n\n  procedure TextLine(str: string);\n  var\n    c: TBGRAPixel;\n  begin\n    c := Bitmap.GetPixel(0,cury+h div 2);\n    if GetLightness(GammaExpansion(c)) > 32768 then\n      c := BGRABlack else c := BGRAWhite;\n    Bitmap.TextOut(0,cury,str,c);\n    inc(cury, h);\n  end;\n\nbegin\n  if scene <> nil then\n  begin\n    timer.Clear;\n    timer.Start;\n\n    scene.RenderingOptions.AntialiasingMode := am3dResample;\n    scene.RenderingOptions.AntialiasingResampleLevel := SpinEdit_AA.Value;\n    scene.RenderingOptions.MinZ := 1;\n\n    scene.Surface := Bitmap;\n    scene.Render;\n    scene.Surface := nil;\n\n    timer.Stop;\n\n    Bitmap.FontFullHeight := 20;\n    Bitmap.FontQuality := fqSystemClearType;\n    h := Bitmap.FontFullHeight;\n\n    cury := 0;\n    TextLine(inttostr(round(timer.Elapsed*1000)) + ' ms');\n    TextLine(inttostr(scene.Object3DCount) + ' object(s)');\n    TextLine(inttostr(scene.VertexCount) + ' vertices');\n    TextLine(inttostr(scene.FaceCount) + ' faces');\n    TextLine(inttostr(scene.RenderedFaceCount) + ' rendered');\n    TextLine(inttostr(scene.LightCount) + ' light(s)');\n    Timer1.Enabled := true;\n  end;\nend;\n\nprocedure TForm1.ComboBox_RenderChange(Sender: TObject);\nbegin\n  AdjustSceneSize;\nend;\n\nprocedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);\nbegin\n  {$IFNDEF NO_OPENGL_SURFACE}\n  if Assigned(BGLSurface) then BGLSurface.UnloadTextures;\n  {$ENDIF}\nend;\n\nprocedure TForm1.BCButton1Click(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  scene := TExample1.Create;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton10Click(Sender: TObject);\nbegin\n  if not (scene is TExample4) then\n  begin\n    FreeAndNil(scene);\n    scene := TExample4.Create;\n    RedrawScene;\n  end;\n  TExample4(scene).NextModel;\nend;\n\nprocedure TForm1.BCButton2Click(Sender: TObject);\nbegin\n  if scene is TExample2 then\n    TExample2(scene).Lighting := e2lNone\n  else\n  begin\n    FreeAndNil(scene);\n    scene := TExample2.Create(e2lNone);\n  end;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton3Click(Sender: TObject);\nbegin\n  if scene is TExample2 then\n    TExample2(scene).Lighting := e2lLightness\n  else\n  begin\n    FreeAndNil(scene);\n    scene := TExample2.Create(e2lLightness);\n  end;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton4Click(Sender: TObject);\nbegin\n  if scene is TExample2 then\n    TExample2(scene).Lighting := e2lColored\n  else\n  begin\n    FreeAndNil(scene);\n    scene := TExample2.Create(e2lColored);\n  end;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton5Click(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  scene := TExample3.Create;\n  scene.DefaultLightingNormal := lnFace;\n  scene.RenderingOptions.LightingInterpolation := liLowQuality;\n  scene.RenderingOptions.AntialiasingMode := am3dMultishape;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton6Click(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  scene := TExample3.Create;\n  scene.DefaultLightingNormal := lnFaceVertexMix;\n  scene.RenderingOptions.LightingInterpolation := liLowQuality;\n  scene.RenderingOptions.AntialiasingMode := am3dResample;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton7Click(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  scene := TExample3.Create;\n  scene.DefaultLightingNormal := lnVertex;\n  scene.RenderingOptions.LightingInterpolation := liSpecularHighQuality;\n  RedrawScene;\nend;\n\nprocedure TForm1.BCButton8Click(Sender: TObject);\nbegin\n  if not (scene is TExample4) then\n  begin\n    FreeAndNil(scene);\n    scene := TExample4.Create;\n    RedrawScene;\n  end;\nend;\n\nprocedure TForm1.BCButton9Click(Sender: TObject);\nbegin\n  FreeAndNil(scene);\n  scene := TExample5.Create;\n  RedrawScene;\nend;\n\n{$IFNDEF NO_OPENGL_SURFACE}\nprocedure TForm1.BGLSurfaceMouseEnter(Sender: TObject);\nbegin\n  SpinEdit_AA.Enabled := false;\nend;\n\nprocedure TForm1.BGLSurfaceRedraw(Sender: TObject; BGLContext: TBGLContext);\nvar h,cury: integer;\n\n  procedure TextLine(str: string);\n  var\n    c: TBGRAPixel;\n  begin\n    {c := Bitmap.GetPixel(0,cury+h div 2);\n    if GetLightness(GammaExpansion(c)) > 32768 then\n      c := BGRABlack else }c := BGRAWhite;\n    glFont.TextOut(0,cury,str,c);\n    inc(cury, h);\n  end;\nbegin\n  if scene <> nil then\n  begin\n    timer.Clear;\n    timer.Start;\n\n    scene.RenderingOptions.AntialiasingMode := am3dResample;\n    scene.RenderingOptions.AntialiasingResampleLevel := SpinEdit_AA.Value;\n    scene.RenderingOptions.MinZ := 1;\n    scene.RenderGL(BGLContext.Canvas);\n    BGLContext.Canvas.WaitForGPU(wfgFinishAllCommands);\n\n    timer.Stop;\n\n    h := 20;\n    if glFont = nil then\n      glFont := BGLFont('Arial',-h);\n\n    cury := 0;\n    TextLine(inttostr(round(timer.Elapsed*1000)) + ' ms');\n    TextLine(inttostr(scene.Object3DCount) + ' object(s)');\n    TextLine(inttostr(scene.VertexCount) + ' vertices');\n    TextLine(inttostr(scene.FaceCount) + ' faces');\n    TextLine(inttostr(scene.RenderedFaceCount) + ' rendered');\n    TextLine(inttostr(scene.LightCount) + ' light(s)');\n    Timer1.Enabled := true;\n  end;\nend;\n{$ENDIF}\n\nprocedure TForm1.SurfaceMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if (button = mbLeft) and (scene <> nil) then\n  begin\n    moving := true;\n    moveOrigin := point(x,y);\n  end;\nend;\n\nprocedure TForm1.BGRASurfaceMouseEnter(Sender: TObject);\nbegin\n  SpinEdit_AA.Enabled := false;\nend;\n\nprocedure TForm1.SurfaceMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nbegin\n  if moving then\n  begin\n    if scene is TExample5 then\n    begin\n      scene.LookRight(X-moveOrigin.X);\n      scene.LookDown(Y-moveOrigin.Y);\n    end else\n    if scene.Object3DCount > 0 then\n    begin\n      scene.Object3D[0].MainPart.RotateYDeg(-(X-moveOrigin.X),False);\n      scene.Object3D[0].MainPart.RotateXDeg(Y-moveOrigin.Y,False);\n    end;\n    RedrawScene;\n    moveOrigin := point(x,y);\n  end;\nend;\n\nprocedure TForm1.SurfaceMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if button = mbLeft then moving := false;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/bgratutorial3d/utexture.pas",
    "content": "unit utexture;\n\n{$mode objfpc}{$H+}\n\ninterface\n\n{ This unit creates textures. It is mainly based on Perlin noise maps,\n  which are random maps that have a natural look. Then a color is applied\n  by linear interpolation. The water texture is achieved by using\n  a Phong lighting based on the Perlin noise map. }\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes;\n\nfunction CreateGrassTexture(tx,ty: integer): TBGRABitmap;\nfunction CreateVerticalWoodTexture(tx, ty: integer): TBGRABitmap;\nfunction CreateWoodTexture(tx,ty: integer): TBGRABitmap;\nfunction CreateWaterTexture(tx,ty: integer): TBGRABitmap;\n\nimplementation\n\nuses {$IFNDEF NO_OPENGL_SURFACE}BGRAOpenGL, {$ENDIF}BGRAGradients;\n\nfunction Interp256(value1,value2,position: integer): integer; inline;\nbegin\n     result := (value1*(256-position)+value2*position) shr 8;\nend;\n\nfunction Interp256(color1,color2: TBGRAPixel; position: integer): TBGRAPixel; inline;\nbegin\n     result.red := Interp256(color1.red,color2.red,position);\n     result.green := Interp256(color1.green,color2.green,position);\n     result.blue := Interp256(color1.blue,color2.blue,position);\n     result.alpha := Interp256(color1.alpha,color2.alpha,position);\nend;\n\nfunction CreateWoodTexture(tx,ty: integer): TBGRABitmap;\nvar\n  colorOscillation, globalColorVariation: integer;\n  p: PBGRAPixel;\n  i: Integer;\nbegin\n  result := CreateCyclicPerlinNoiseMap(tx,ty,1.5,1.5,1,rfBestQuality);\n  p := result.Data;\n  for i := 0 to result.NbPixels-1 do\n  begin\n    colorOscillation := round(sqrt((sin(p^.red*Pi/16)+1)/2)*256);\n    globalColorVariation := p^.red;\n    p^:= Interp256( Interp256(BGRA(247,188,120),BGRA(255,218,170),colorOscillation),\n                    Interp256(BGRA(157,97,60),BGRA(202,145,112),colorOscillation), globalColorVariation);\n    inc(p);\n  end;\n  {$IFNDEF NO_OPENGL_SURFACE}\n  BGRAReplace(result, TBGLBitmap.Create(result));\n  {$ENDIF}\nend;\n\nfunction CreateVerticalWoodTexture(tx, ty: integer): TBGRABitmap;\nvar\n  globalPos: single;\n  colorOscillation, globalColorVariation: integer;\n  p: PBGRAPixel;\n  i: Integer;\n  x,nbVertical: integer;\nbegin\n  result := CreateCyclicPerlinNoiseMap(tx,ty,1,1,1,rfBestQuality);\n  p := result.Data;\n  x := 0;\n  nbVertical := tx div 128;\n  if nbVertical = 0 then nbVertical := 1;\n  for i := 0 to result.NbPixels-1 do\n  begin\n    globalPos := p^.red*Pi/32 + nbVertical*x*2*Pi/tx*8;\n    colorOscillation := round(sqrt((sin(globalPos)+1)/2)*256);\n    globalColorVariation := p^.red; //round(sin(globalPos/8)*128+128);\n    p^:= Interp256( Interp256(BGRA(247,188,120),BGRA(255,218,170),colorOscillation),\n                    Interp256(BGRA(157,97,60),BGRA(202,145,112),colorOscillation), globalColorVariation);\n    inc(p);\n    inc(x);\n    if x = tx then x := 0;\n  end;\n  {$IFNDEF NO_OPENGL_SURFACE}\n  BGRAReplace(result, TBGLBitmap.Create(result));\n  {$ENDIF}\nend;\n\nfunction CreateGrassTexture(tx,ty: integer): TBGRABitmap;\nvar\n  p: PBGRAPixel;\n  i: Integer;\nbegin\n  result := CreateCyclicPerlinNoiseMap(tx,ty,1,1,1,rfBestQuality);\n  p := result.Data;\n  for i := 0 to result.NbPixels-1 do\n  begin\n    p^ := Interp256( BGRA(0,128,0), BGRA(192,255,0), p^.red );\n    inc(p);\n  end;\n  {$IFNDEF NO_OPENGL_SURFACE}\n  BGRAReplace(result, TBGLBitmap.Create(result));\n  {$ENDIF}\nend;\n\nfunction CreateWaterTexture(tx,ty: integer): TBGRABitmap;\nconst blurSize = 5;\nvar\n  map: TBGRABitmap;\n  phong: TPhongShading;\nbegin\n  result := TBGRABitmap.Create(tx,ty);\n  map := CreateCyclicPerlinNoiseMap(tx,ty,1,1,1.2,rfBestQuality);\n  BGRAReplace(map,map.GetPart(rect(-blurSize,-blurSize,tx+blurSize,ty+blurSize)));\n  BGRAReplace(map,map.FilterBlurRadial(blurSize,rbFast));\n  phong := TPhongShading.Create;\n  phong.LightSourceDistanceFactor := 0;\n  phong.LightDestFactor := 0;\n  phong.LightSourceIntensity := 150;\n  phong.LightPositionZ := 80;\n  phong.LightColor := BGRA(105,233,240);\n  phong.NegativeDiffusionFactor := 0.3;\n  phong.SpecularIndex := 20;\n  phong.AmbientFactor := 0.4;\n  phong.Draw(result,map,20,-blurSize,-blurSize,BGRA(28,139,166));\n  phong.Free;\n  map.Free;\n  {$IFNDEF NO_OPENGL_SURFACE}\n  BGRAReplace(result, TBGLBitmap.Create(result));\n  {$ENDIF}\nend;\n\n\nend.\n\n"
  },
  {
    "path": "test/colorspace/ColorsDemo.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"ColorsDemo\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"3\">\n      <Unit0>\n        <Filename Value=\"ColorsDemo.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"colorsdemounit.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"ColorsDemoUnit\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"bgracolorex.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"BGRAColorEx\"/>\n      </Unit2>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"ColorsDemo\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/colorspace/ColorsDemo.lpr",
    "content": "program ColorsDemo;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, ColorsDemoUnit, BGRAColorEx\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/colorspace/HorseShoe.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"HorseShoe\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"HorseShoe.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"uhorseshoe.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"HorseShoe\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/colorspace/HorseShoe.lpr",
    "content": "program HorseShoe;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, uhorseshoe\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/colorspace/bgracolorex.pas",
    "content": "unit BGRAColorEx;\n\n{$mode objfpc}{$H+}\n{$MODESWITCH ADVANCEDRECORDS}\n\ninterface\n\nuses\n  Classes, SysUtils, FPimage, BGRAGraphics, BGRABitmapTypes;\n\ntype\n\n  { TColorEx }\n\n  TColorEx = object\n  private\n    FColorspace: TColorspaceAny;\n    FValue: array[0..31] of byte;\n  private\n    function GetAlpha: byte;\n    function GetAlphaPercent: single;\n    function GetBlack: single;\n    function GetBlackPercent: single;\n    function GetBlue: byte;\n    function GetBluePercent: single;\n    function GetCyan: single;\n    function GetCyanPercent: single;\n    function GetGreen: byte;\n    function GetGreenPercent: single;\n    function GetIsOpaque: boolean;\n    function GetIsTransparent: boolean;\n    function GetLightness: single;\n    function GetLightnessPercent: single;\n    function GetRed: byte;\n    function GetRedPercent: single;\n    function GetSaturation: single;\n    function GetSaturationPercent: single;\n    function GetYellow: single;\n    function GetYellowPercent: single;\n    function GetHue: single;\n    function GetHuePercent: single;\n    function GetMagenta: single;\n    function GetMagentaPercent: single;\n    procedure SetYellow(AValue: single);\n    procedure SetYellowPercent(AValue: single);\n    procedure SetAlpha(AValue: byte);\n    procedure SetAlphaPercent(AValue: single);\n    procedure SetBlack(AValue: single);\n    procedure SetBlackPercent(AValue: single);\n    procedure SetBlue(AValue: byte);\n    procedure SetBluePercent(AValue: single);\n    procedure SetCyan(AValue: single);\n    procedure SetCyanPercent(AValue: single);\n    procedure SetGreen(AValue: byte);\n    procedure SetGreenPercent(AValue: single);\n    procedure SetLightness(AValue: single);\n    procedure SetLightnessPercent(AValue: single);\n    procedure SetRed(AValue: byte);\n    procedure SetRedPercent(AValue: single);\n    procedure SetSaturation(AValue: single);\n    procedure SetSaturationPercent(AValue: single);\n    procedure SetHue(AValue: single);\n    procedure SetHuePercent(AValue: single);\n    procedure SetMagenta(AValue: single);\n    procedure SetMagentaPercent(AValue: single);\n  public\n    class function New: TColorEx; overload; static;\n    class function New(const AValue: TColorEx): TColorEx; overload; static;\n    class function New(const AValue: string): TColorEx; overload; static;\n    class function New(const AValue: TColor): TColorEx; overload; static;\n    class function New(const AValue: TBGRAPixel): TColorEx; overload; static;\n    class function New(const AValue: TExpandedPixel): TColorEx; overload; static;\n    class function New(const AValue: TStdRGBA): TColorEx; overload; static;\n    class function New(const AValue: TLinearRGBA): TColorEx; overload; static;\n    class function New(const AValue: TXYZA): TColorEx; overload; static;\n    class function New(const AValue: TLabA): TColorEx; overload; static;\n    class function New(const AValue: TStdHSLA): TColorEx; overload; static;\n    class function New(const AValue: TStdHSVA): TColorEx; overload; static;\n    class function New(const AValue: TStdCMYK): TColorEx; overload; static;\n    class function New(const AValue: TLChA): TColorEx; overload; static;\n    class function New(const ARed, AGreen, ABlue: byte; const AAlpha: byte = 255): TColorEx; overload; static;\n    procedure SetValue(const AValue; AColorspace: TColorspaceAny);\n    procedure GetValue(out AValue; AColorspace: TColorspaceAny);\n  public\n    function ToBGRAPixel: TBGRAPixel;\n    function ToColor: TColor;\n    function ToDecimal: integer;\n    function ToGrayscale: TColorEx;\n    function ToHex: string;\n    function ToStdRGBA: TStdRGBA;\n    function ToStdHSLA: TStdHSLA;\n    function ToStdHSVA: TStdHSVA;\n    function ToStdCMYK: TStdCMYK;\n    function ToExpandedPixel: TExpandedPixel;\n    function ToLinearRGBA: TLinearRGBA;\n    function ToAdobeRGBA: TAdobeRGBA;\n    function ToHSLAPixel: THSLAPixel;\n    function ToGSBAPixel: TGSBAPixel;\n    function ToXYZA: TXYZA;\n    function ToLabA: TLabA;\n    function ToLChA: TLChA;\n    function ToName: string;\n    function ToString: string;\n    function ToInvert: TColorEx;\n    procedure FromBGRAPixel(AValue: TBGRAPixel);\n    procedure FromColor(AValue: TColor);\n    procedure FromDecimal(AValue: integer);\n    procedure FromHex(AValue: string);\n    procedure FromStdRGBA(const AValue: TStdRGBA);\n    procedure FromStdHSLA(const AValue: TStdHSLA);\n    procedure FromStdHSVA(const AValue: TStdHSVA);\n    procedure FromStdCMYK(const AValue: TStdCMYK);\n    procedure FromExpandedPixel(const AValue: TExpandedPixel);\n    procedure FromLinearRGBA(const AValue: TLinearRGBA);\n    procedure FromAdobeRGBA(const AValue: TAdobeRGBA);\n    procedure FromHSLAPixel(const AValue: THSLAPixel);\n    procedure FromGSBAPixel(const AValue: TGSBAPixel);\n    procedure FromXYZA(AValue: TXYZA);\n    procedure FromLabA(AValue: TLabA);\n    procedure FromLChA(AValue: TLChA);\n    procedure FromName(AValue: string);\n    procedure FromString(AValue: string);\n  public\n    function Fade(APercent: single): TColorEx;\n    function Darken(APercent: single): TColorEx;\n    function Lighten(APercent: single): TColorEx;\n    function Premultiply: TColorEx;\n  public\n    property Colorspace: TColorspaceAny read FColorspace;\n    property Red: byte read GetRed write SetRed;\n    property Green: byte read GetGreen write SetGreen;\n    property Blue: byte read GetBlue write SetBlue;\n    property Alpha: byte read GetAlpha write SetAlpha;\n    property Hue: single read GetHue write SetHue;\n    property Saturation: single read GetSaturation write SetSaturation;\n    property Lightness: single read GetLightness write SetLightness;\n    property Cyan: single read GetCyan write SetCyan;\n    property Magenta: single read GetMagenta write SetMagenta;\n    property Yellow: single read GetYellow write SetYellow;\n    property Black: single read GetBlack write SetBlack;\n    property RedPercent: single read GetRedPercent write SetRedPercent;\n    property GreenPercent: single read GetGreenPercent write SetGreenPercent;\n    property BluePercent: single read GetBluePercent write SetBluePercent;\n    property AlphaPercent: single read GetAlphaPercent write SetAlphaPercent;\n    property HuePercent: single read GetHuePercent write SetHuePercent;\n    property SaturationPercent: single read GetSaturationPercent write SetSaturationPercent;\n    property LightnessPercent: single read GetLightnessPercent write SetLightnessPercent;\n    property CyanPercent: single read GetCyanPercent write SetCyanPercent;\n    property MagentaPercent: single read GetMagentaPercent write SetMagentaPercent;\n    property YellowPercent: single read GetYellowPercent write SetYellowPercent;\n    property BlackPercent: single read GetBlackPercent write SetBlackPercent;\n    property Name: string read ToName write FromName;\n    property AsHex: string read ToHex write FromHex;\n    property AsDecimal: integer read ToDecimal write FromDecimal;\n    property AsString: string read ToString write FromString;\n    property AsColor: TColor read ToColor write FromColor;\n    property AsBGRAPixel: TBGRAPixel read ToBGRAPixel write FromBGRAPixel;\n    property AsStdRGBA: TStdRGBA read ToStdRGBA write FromStdRGBA;\n    property AsStdHSLA: TStdHSLA read ToStdHSLA write FromStdHSLA;\n    property AsStdHSVA: TStdHSVA read ToStdHSVA write FromStdHSVA;\n    property AsStdCMYK: TStdCMYK read ToStdCMYK write FromStdCMYK;\n    property AsExpandedPixel: TExpandedPixel read ToExpandedPixel write FromExpandedPixel;\n    property AsLinearRGBA: TLinearRGBA read ToLinearRGBA write FromLinearRGBA;\n    property AsAdobeRGBA: TAdobeRGBA read ToAdobeRGBA write FromAdobeRGBA;\n    property AsHSLAPixel: THSLAPixel read ToHSLAPixel write FromHSLAPixel;\n    property AsGSBAPixel: TGSBAPixel read ToGSBAPixel write FromGSBAPixel;\n    property AsXYZA: TXYZA read ToXYZA write FromXYZA;\n    property AsLabA: TLabA read ToLabA write FromLabA;\n    property AsLChA: TLChA read ToLChA write FromLChA;\n    property AsGrayscale: TColorEx read ToGrayscale;\n    property AsInvert: TColorEx read ToInvert;\n    property IsTransparent: boolean read GetIsTransparent;\n    property IsOpaque: boolean read GetIsOpaque;\n  end;\n\nfunction ColorEx(const ARed, AGreen, ABlue: byte; const AAlpha: byte = 255): TColorEx;\nfunction ColorEx(const AValue: string): TColorEx;\nfunction ColorEx(const AValue: string; const AAlpha: single): TColorEx;\nfunction clRandom: TColorEx;\n\noperator := (const AValue: TColorEx): string;\noperator := (const AValue: TColorEx): TColor;\noperator := (const AValue: TColorEx): TBGRAPixel;\noperator := (const AValue: TColorEx): TExpandedPixel;\noperator := (const AValue: TColorEx): TStdRGBA;\noperator := (const AValue: TColorEx): TLinearRGBA;\noperator := (const AValue: TColorEx): TXYZA;\noperator := (const AValue: TColorEx): TLabA;\noperator := (const AValue: TColorEx): TStdHSLA;\noperator := (const AValue: TColorEx): TStdHSVA;\noperator := (const AValue: TColorEx): TStdCMYK;\noperator := (const AValue: TColorEx): TLChA;\n\noperator := (const AValue: string): TColorEx;\noperator := (const AValue: TColor): TColorEx;\noperator := (const AValue: TBGRAPixel): TColorEx;\noperator := (const AValue: TExpandedPixel): TColorEx;\noperator := (const AValue: TStdRGBA): TColorEx;\noperator := (const AValue: TLinearRGBA): TColorEx;\noperator := (const AValue: TXYZA): TColorEx;\noperator := (const AValue: TLabA): TColorEx;\noperator := (const AValue: TStdHSLA): TColorEx;\noperator := (const AValue: TStdHSVA): TColorEx;\noperator := (const AValue: TStdCMYK): TColorEx;\noperator := (const AValue: TLChA): TColorEx;\n\nimplementation\n\nfunction ColorEx(const ARed, AGreen, ABlue: byte; const AAlpha: byte): TColorEx;\nbegin\n  Result := TColorEx.New(ARed, AGreen, ABlue, AAlpha);\nend;\n\nfunction ColorEx(const AValue: string): TColorEx;\nbegin\n  Result := TColorEx.New(AValue);\nend;\n\nfunction ColorEx(const AValue: string; const AAlpha: single): TColorEx;\nbegin\n  Result := TColorEx.New(AValue);\n  Result.AlphaPercent := AAlpha;\nend;\n\nfunction clRandom: TColorEx;\nbegin\n  Result := TStdHSLA.New(Random(360), 0.5, 0.5);\nend;\n\noperator := (const AValue: TColorEx): string;\nbegin\n  Result := AValue.AsString;\nend;\n\noperator := (const AValue: TColorEx): TColor;\nbegin\n  Result := AValue.AsColor;\nend;\n\noperator := (const AValue: TColorEx): TBGRAPixel;\nbegin\n  Result := AValue.AsBGRAPixel;\nend;\n\noperator := (const AValue: TColorEx): TExpandedPixel;\nbegin\n  Result := AValue.AsExpandedPixel;\nend;\n\noperator := (const AValue: TColorEx): TStdRGBA;\nbegin\n  Result := AValue.AsStdRGBA;\nend;\n\noperator := (const AValue: TColorEx): TLinearRGBA;\nbegin\n  Result := AValue.AsLinearRGBA;\nend;\n\noperator := (const AValue: TColorEx): TXYZA;\nbegin\n  Result := AValue.AsXYZA;\nend;\n\noperator := (const AValue: TColorEx): TLabA;\nbegin\n  Result := AValue.AsLabA;\nend;\n\noperator := (const AValue: TColorEx): TStdHSLA;\nbegin\n  Result := AValue.AsStdHSLA;\nend;\n\noperator := (const AValue: TColorEx): TStdHSVA;\nbegin\n  Result := AValue.AsStdHSVA;\nend;\n\noperator := (const AValue: TColorEx): TStdCMYK;\nbegin\n  Result := AValue.AsStdCMYK;\nend;\n\noperator := (const AValue: TColorEx): TLChA;\nbegin\n  Result := AValue.AsLChA;\nend;\n\noperator := (const AValue: string): TColorEx;\nbegin\n  Result.AsString := AValue;\nend;\n\noperator := (const AValue: TColor): TColorEx;\nbegin\n  Result.AsColor := AValue;\nend;\n\noperator := (const AValue: TBGRAPixel): TColorEx;\nbegin\n  Result.AsBGRAPixel := AValue;\nend;\n\noperator := (const AValue: TExpandedPixel): TColorEx;\nbegin\n  Result.AsExpandedPixel := AValue;\nend;\n\noperator := (const AValue: TStdRGBA): TColorEx;\nbegin\n  Result.AsStdRGBA := AValue;\nend;\n\noperator := (const AValue: TLinearRGBA): TColorEx;\nbegin\n  Result.AsLinearRGBA := AValue;\nend;\n\noperator := (const AValue: TXYZA): TColorEx;\nbegin\n  Result.AsXYZA := AValue;\nend;\n\noperator := (const AValue: TLabA): TColorEx;\nbegin\n  Result.AsLabA := AValue;\nend;\n\noperator := (const AValue: TStdHSLA): TColorEx;\nbegin\n  Result.AsStdHSLA := AValue;\nend;\n\noperator := (const AValue: TStdHSVA): TColorEx;\nbegin\n  Result.AsStdHSVA := AValue;\nend;\n\noperator := (const AValue: TStdCMYK): TColorEx;\nbegin\n  Result.AsStdCMYK := AValue;\nend;\n\noperator := (const AValue: TLChA): TColorEx;\nbegin\n  Result.AsLChA := AValue;\nend;\n\n{ TColorEx }\n\nfunction TColorEx.GetAlpha: byte;\nbegin\n  Result := round(AsStdRGBA.alpha * 255);\nend;\n\nfunction TColorEx.GetAlphaPercent: single;\nbegin\n  Result := AsStdRGBA.alpha * 100;\nend;\n\nfunction TColorEx.ToBGRAPixel: TBGRAPixel;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.GetBlack: single;\nbegin\n  Result := AsStdCMYK.K;\nend;\n\nfunction TColorEx.GetBlackPercent: single;\nbegin\n  Result := Black * 100;\nend;\n\nfunction TColorEx.GetBlue: byte;\nbegin\n  Result := round(AsStdRGBA.blue * 255);\nend;\n\nfunction TColorEx.GetBluePercent: single;\nbegin\n  Result := AsStdRGBA.blue * 100;\nend;\n\nfunction TColorEx.ToStdCMYK: TStdCMYK;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToColor: TColor;\nbegin\n  GetValue(result, TColorColorspace);\nend;\n\nfunction TColorEx.GetCyan: single;\nbegin\n  Result := AsStdCMYK.C;\nend;\n\nfunction TColorEx.GetCyanPercent: single;\nbegin\n  Result := Cyan * 100;\nend;\n\nfunction TColorEx.ToDecimal: integer;\nbegin\n  with AsBGRAPixel do\n    Result := (red shl 16) or (green shl 8) or blue;\nend;\n\nfunction TColorEx.ToExpandedPixel: TExpandedPixel;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToGrayscale: TColorEx;\nbegin\n  Result.AsStdRGBA := AsBGRAPixel.ToGrayscale(True);\nend;\n\nfunction TColorEx.GetGreen: byte;\nbegin\n  Result := round(AsStdRGBA.green * 255);\nend;\n\nfunction TColorEx.GetGreenPercent: single;\nbegin\n  Result := AsStdRGBA.green * 100;\nend;\n\nfunction TColorEx.GetIsOpaque: boolean;\nbegin\n  Result := AlphaPercent >= 100;\nend;\n\nfunction TColorEx.GetIsTransparent: boolean;\nbegin\n  Result := AlphaPercent <= 0;\nend;\n\nfunction TColorEx.ToHex: string;\nbegin\n  with AsBGRAPixel do\n  begin\n    Result := '#' + IntToHex(red, 2) + IntToHex(green, 2) + IntToHex(blue, 2);\n    if alpha <> 255 then\n      Result := Result + IntToHex(alpha, 2);\n  end;\nend;\n\nfunction TColorEx.ToStdHSLA: TStdHSLA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToStdHSVA: TStdHSVA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.GetHue: single;\nbegin\n  Result := AsStdHSLA.hue * 100;\nend;\n\nfunction TColorEx.GetHuePercent: single;\nbegin\n  Result := Hue / 3.6;\nend;\n\nfunction TColorEx.ToInvert: TColorEx;\nbegin\n  with AsStdRGBA do\n  begin\n    Result.AsStdRGBA := TStdRGBA.New(1 - red, 1 - green, 1 - blue, alpha);\n  end;\nend;\n\nfunction TColorEx.ToLabA: TLabA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToLChA: TLChA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.GetLightness: single;\nbegin\n  Result := AsStdHSLA.lightness;\nend;\n\nfunction TColorEx.GetLightnessPercent: single;\nbegin\n  Result := Lightness * 100;\nend;\n\nfunction TColorEx.ToLinearRGBA: TLinearRGBA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToAdobeRGBA: TAdobeRGBA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToHSLAPixel: THSLAPixel;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToGSBAPixel: TGSBAPixel;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.GetMagenta: single;\nbegin\n  Result := AsStdCMYK.M;\nend;\n\nfunction TColorEx.GetMagentaPercent: single;\nbegin\n  Result := Magenta * 100;\nend;\n\nfunction TColorEx.ToName: string;\nvar\n  idx: integer;\n  c: TBGRAPixel;\nbegin\n  Result := '';\n  c := AsBGRAPixel;\n  if Assigned(CSSColors) then\n  begin\n    idx := CSSColors.IndexOfColor(c, 1000);\n    if idx <> -1 then\n    begin\n      Result := CSSColors.Name[idx];\n      exit;\n    end;\n  end;\nend;\n\nfunction TColorEx.GetRed: byte;\nbegin\n  Result := round(AsStdRGBA.red * 255);\nend;\n\nfunction TColorEx.GetRedPercent: single;\nbegin\n  Result := AsStdRGBA.red * 100;\nend;\n\nfunction TColorEx.GetSaturation: single;\nbegin\n  Result := AsStdHSLA.saturation;\nend;\n\nfunction TColorEx.GetSaturationPercent: single;\nbegin\n  Result := Saturation * 100;\nend;\n\nfunction TColorEx.ToStdRGBA: TStdRGBA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.ToString: string;\nbegin\n  Result := BGRAToStr(AsBGRAPixel);\nend;\n\nfunction TColorEx.ToXYZA: TXYZA;\nbegin\n  GetValue(result, result.Colorspace);\nend;\n\nfunction TColorEx.GetYellow: single;\nbegin\n  Result := AsStdCMYK.Y;\nend;\n\nfunction TColorEx.GetYellowPercent: single;\nbegin\n  Result := Yellow * 100;\nend;\n\nprocedure TColorEx.SetAlpha(AValue: byte);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, green, blue, AValue / 255);\nend;\n\nprocedure TColorEx.SetAlphaPercent(AValue: single);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, green, blue, AValue / 100);\nend;\n\nprocedure TColorEx.FromBGRAPixel(AValue: TBGRAPixel);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetBlack(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, M, Y, AValue);\nend;\n\nprocedure TColorEx.SetBlackPercent(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, M, Y, AValue / 100);\nend;\n\nprocedure TColorEx.SetBlue(AValue: byte);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, green, AValue / 255, alpha);\nend;\n\nprocedure TColorEx.SetBluePercent(AValue: single);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, green, AValue / 100, alpha);\nend;\n\nprocedure TColorEx.FromStdCMYK(const AValue: TStdCMYK);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromColor(AValue: TColor);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetCyan(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK:= TStdCMYK.New(AValue, M, Y, K);\nend;\n\nprocedure TColorEx.SetCyanPercent(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(AValue / 100, M, Y, K);\nend;\n\nprocedure TColorEx.FromDecimal(AValue: integer);\nvar\n  r, g, b: byte;\nbegin\n  r := (AValue shr 16) and $000000ff;\n  g := (AValue shr 8) and $000000ff;\n  b := AValue and $000000ff;\n  AsBGRAPixel := TBGRAPixel.New(r, g, b);\nend;\n\nprocedure TColorEx.FromExpandedPixel(const AValue: TExpandedPixel);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetGreen(AValue: byte);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, AValue / 255, blue, alpha);\nend;\n\nprocedure TColorEx.SetGreenPercent(AValue: single);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(red, AValue / 100, blue, alpha);\nend;\n\nprocedure TColorEx.FromHex(AValue: string);\nvar\n  missingValues, error: boolean;\n  c: TBGRAPixel;\nbegin\n  c := BGRAPixelTransparent;\n  TryStrToBGRA(AValue, c, missingValues, error);\n  if not (missingValues or error) then\n    AsBGRAPixel := c;\nend;\n\nprocedure TColorEx.FromStdHSLA(const AValue: TStdHSLA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromStdHSVA(const AValue: TStdHSVA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromHSLAPixel(const AValue: THSLAPixel);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromGSBAPixel(const AValue: TGSBAPixel);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetHue(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(AValue, saturation, lightness, alpha);\nend;\n\nprocedure TColorEx.SetHuePercent(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(AValue / 3.6, saturation, lightness, alpha);\nend;\n\nprocedure TColorEx.FromLabA(AValue: TLabA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromLChA(AValue: TLChA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetLightness(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(hue, saturation, AValue, alpha);\nend;\n\nprocedure TColorEx.SetLightnessPercent(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(hue, saturation, AValue / 100, alpha);\nend;\n\nprocedure TColorEx.FromLinearRGBA(const AValue: TLinearRGBA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromAdobeRGBA(const AValue: TAdobeRGBA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.SetMagenta(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, AValue, Y, K);\nend;\n\nprocedure TColorEx.SetMagentaPercent(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, AValue / 100, Y, K);\nend;\n\nclass function TColorEx.New: TColorEx;\nbegin\n  Result := BGRAPixelTransparent;\nend;\n\nprocedure TColorEx.FromName(AValue: string);\nvar\n  missingValues, error: boolean;\n  c: TBGRAPixel;\nbegin\n  c := BGRAPixelTransparent;\n  TryStrToBGRA(AValue, c, missingValues, error);\n  if not (missingValues or error) then\n    AsBGRAPixel := c;\nend;\n\nprocedure TColorEx.SetRed(AValue: byte);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(AValue / 255, green, blue, alpha);\nend;\n\nprocedure TColorEx.SetRedPercent(AValue: single);\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA := TStdRGBA.New(AValue / 100, green, blue, alpha);\nend;\n\nprocedure TColorEx.SetSaturation(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(hue, AValue, lightness, alpha);\nend;\n\nprocedure TColorEx.SetSaturationPercent(AValue: single);\nbegin\n  with AsStdHSLA do\n    Self.AsStdHSLA := TStdHSLA.New(hue, AValue / 100, lightness, alpha);\nend;\n\nprocedure TColorEx.FromStdRGBA(const AValue: TStdRGBA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nprocedure TColorEx.FromString(AValue: string);\nbegin\n  AsBGRAPixel := StrToBGRA(AValue);\nend;\n\nprocedure TColorEx.FromXYZA(AValue: TXYZA);\nbegin\n  SetValue(AValue, AValue.Colorspace);\nend;\n\nfunction TColorEx.Fade(APercent: single): TColorEx;\nbegin\n  Result := Self;\n  if APercent = 1 then\n    Exit;\n  Result.AlphaPercent := Result.AlphaPercent * APercent;\nend;\n\nfunction TColorEx.Darken(APercent: single): TColorEx;\nbegin\n  Result := Self;\n  Result.LightnessPercent := Result.LightnessPercent - APercent;\nend;\n\nfunction TColorEx.Lighten(APercent: single): TColorEx;\nbegin\n  Result := Self;\n  Result.LightnessPercent := Result.LightnessPercent + APercent;\nend;\n\nfunction TColorEx.Premultiply: TColorEx;\nbegin\n  with AsStdRGBA do\n    Self.AsStdRGBA:= TStdRGBA.New(red*alpha,green*alpha,blue*alpha,alpha);\n  Result:=Self;\nend;\n\nprocedure TColorEx.SetYellow(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, M, AValue, K);\nend;\n\nprocedure TColorEx.SetYellowPercent(AValue: single);\nbegin\n  with AsStdCMYK do\n    Self.AsStdCMYK := TStdCMYK.New(C, M, AValue / 100, K);\nend;\n\nclass function TColorEx.New(const AValue: TColorEx): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: string): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TColor): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TBGRAPixel): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TExpandedPixel): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TStdRGBA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TLinearRGBA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TXYZA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TLabA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TStdHSLA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TStdHSVA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TStdCMYK): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const AValue: TLChA): TColorEx;\nbegin\n  Result := AValue;\nend;\n\nclass function TColorEx.New(const ARed, AGreen, ABlue: byte; const AAlpha: byte): TColorEx;\nbegin\n  Result := TStdRGBA.New(ARed / 255, AGreen / 255, ABlue / 255, AAlpha / 255);\nend;\n\nprocedure TColorEx.SetValue(const AValue; AColorspace: TColorspaceAny);\nbegin\n  FColorspace:= AColorspace;\n  move(AValue, FValue, AColorspace.GetSize);\nend;\n\nprocedure TColorEx.GetValue(out AValue; AColorspace: TColorspaceAny);\nbegin\n  if Assigned(FColorspace) then\n    FColorspace.Convert(FValue, AValue, AColorspace)\n  else\n    TBGRAPixelColorspace.Convert(BGRAPixelTransparent, AValue, AColorspace)\nend;\n\nend.\n"
  },
  {
    "path": "test/colorspace/colorsdemounit.lfm",
    "content": "object Form1: TForm1\n  Left = 336\n  Height = 609\n  Top = 116\n  Width = 941\n  Caption = 'Colors'\n  ClientHeight = 609\n  ClientWidth = 941\n  OnCreate = FormCreate\n  Position = poDesktopCenter\n  LCLVersion = '2.0.0.4'\n  object lR_tb: TTrackBar\n    Tag = 1\n    Left = 339\n    Height = 37\n    Top = 75\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 0\n  end\n  object Label1: TLabel\n    Left = 323\n    Height = 17\n    Hint = 'Red intensity'\n    Top = 77\n    Width = 7\n    Caption = 'R'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lG_tb: TTrackBar\n    Tag = 2\n    Left = 339\n    Height = 37\n    Top = 110\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 2\n  end\n  object Label2: TLabel\n    Left = 323\n    Height = 17\n    Hint = 'Green intensity'\n    Top = 113\n    Width = 9\n    Caption = 'G'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lB_tb: TTrackBar\n    Tag = 3\n    Left = 339\n    Height = 37\n    Top = 145\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 4\n  end\n  object Label3: TLabel\n    Left = 323\n    Height = 17\n    Hint = 'Blue intensity'\n    Top = 148\n    Width = 8\n    Caption = 'B'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object H_tb: TTrackBar\n    Tag = 4\n    Left = 24\n    Height = 37\n    Top = 207\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 12\n  end\n  object Label4: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Hue angle'\n    Top = 210\n    Width = 9\n    Caption = 'H'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object S_tb: TTrackBar\n    Tag = 5\n    Left = 24\n    Height = 37\n    Top = 242\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 14\n  end\n  object Label5: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Color saturation (~ chroma)'\n    Top = 244\n    Width = 7\n    Caption = 'S'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object L_tb: TTrackBar\n    Tag = 6\n    Left = 24\n    Height = 37\n    Top = 278\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 16\n  end\n  object Label6: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Black/White composition'\n    Top = 280\n    Width = 6\n    Caption = 'L'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object H2_tb: TTrackBar\n    Tag = 7\n    Left = 24\n    Height = 37\n    Top = 342\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 18\n  end\n  object Label7: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Hue angle'\n    Top = 345\n    Width = 9\n    Caption = 'H'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object S2_tb: TTrackBar\n    Tag = 8\n    Left = 24\n    Height = 37\n    Top = 378\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 20\n  end\n  object Label8: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Color saturation (~ chroma)'\n    Top = 380\n    Width = 7\n    Caption = 'S'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object V_tb: TTrackBar\n    Tag = 9\n    Left = 24\n    Height = 37\n    Top = 413\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 22\n  end\n  object Label9: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Value (maximum per channel)'\n    Top = 415\n    Width = 7\n    Caption = 'V'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object L2_tb: TTrackBar\n    Tag = 10\n    Left = 652\n    Height = 37\n    Top = 355\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 30\n  end\n  object Label10: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Perceived lightness'\n    Top = 355\n    Width = 6\n    Caption = 'L'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object A_tb: TTrackBar\n    Tag = 11\n    Left = 652\n    Height = 37\n    Top = 390\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 32\n  end\n  object Label11: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Mint/Pink contrast'\n    Top = 390\n    Width = 7\n    Caption = 'a'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object B2_tb: TTrackBar\n    Tag = 12\n    Left = 652\n    Height = 37\n    Top = 425\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 34\n  end\n  object Label12: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Blue/Yellow contrast'\n    Top = 426\n    Width = 7\n    Caption = 'b'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object C_tb: TTrackBar\n    Tag = 13\n    Left = 24\n    Height = 37\n    Top = 476\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 42\n  end\n  object Label13: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Cyan (negative red)'\n    Top = 478\n    Width = 8\n    Caption = 'C'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object M_tb: TTrackBar\n    Tag = 14\n    Left = 24\n    Height = 37\n    Top = 507\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 44\n  end\n  object Label14: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Magenta (negative green)'\n    Top = 509\n    Width = 11\n    Caption = 'M'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Y_tb: TTrackBar\n    Tag = 15\n    Left = 24\n    Height = 37\n    Top = 538\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 46\n  end\n  object Label15: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Yellow (negative blue)'\n    Top = 540\n    Width = 7\n    Caption = 'Y'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object K_tb: TTrackBar\n    Tag = 16\n    Left = 24\n    Height = 37\n    Top = 569\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 48\n  end\n  object Label16: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Black (negative white)'\n    Top = 571\n    Width = 7\n    Caption = 'K'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lR_se: TFloatSpinEdit\n    Tag = 1\n    Left = 547\n    Height = 27\n    Top = 79\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 1\n    Value = 0\n  end\n  object lG_se: TFloatSpinEdit\n    Tag = 2\n    Left = 547\n    Height = 27\n    Top = 114\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 3\n    Value = 0\n  end\n  object lB_se: TFloatSpinEdit\n    Tag = 3\n    Left = 547\n    Height = 27\n    Top = 149\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 5\n    Value = 0\n  end\n  object H_se: TFloatSpinEdit\n    Tag = 4\n    Left = 232\n    Height = 27\n    Top = 216\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 13\n    Value = 0\n  end\n  object S_se: TFloatSpinEdit\n    Tag = 5\n    Left = 232\n    Height = 27\n    Top = 250\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 15\n    Value = 0\n  end\n  object L_se: TFloatSpinEdit\n    Tag = 6\n    Left = 232\n    Height = 27\n    Top = 286\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 17\n    Value = 0\n  end\n  object H2_se: TFloatSpinEdit\n    Tag = 7\n    Left = 232\n    Height = 27\n    Top = 348\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 19\n    Value = 0\n  end\n  object S2_se: TFloatSpinEdit\n    Tag = 8\n    Left = 232\n    Height = 27\n    Top = 384\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 21\n    Value = 0\n  end\n  object V_se: TFloatSpinEdit\n    Tag = 9\n    Left = 232\n    Height = 27\n    Top = 419\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 23\n    Value = 0\n  end\n  object L2_se: TFloatSpinEdit\n    Tag = 10\n    Left = 860\n    Height = 27\n    Top = 361\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 31\n    Value = 0\n  end\n  object A_se: TFloatSpinEdit\n    Tag = 11\n    Left = 860\n    Height = 27\n    Top = 396\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 33\n    Value = 0\n  end\n  object B2_se: TFloatSpinEdit\n    Tag = 12\n    Left = 860\n    Height = 27\n    Top = 431\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 35\n    Value = 0\n  end\n  object C_se: TFloatSpinEdit\n    Tag = 13\n    Left = 232\n    Height = 27\n    Top = 476\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 43\n    Value = 0\n  end\n  object M_se: TFloatSpinEdit\n    Tag = 14\n    Left = 232\n    Height = 27\n    Top = 507\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 45\n    Value = 0\n  end\n  object Y_se: TFloatSpinEdit\n    Tag = 15\n    Left = 232\n    Height = 27\n    Top = 538\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 47\n    Value = 0\n  end\n  object K_se: TFloatSpinEdit\n    Tag = 16\n    Left = 232\n    Height = 27\n    Top = 569\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 49\n    Value = 0\n  end\n  object Label17: TLabel\n    Left = 544\n    Height = 17\n    Top = 4\n    Width = 73\n    Caption = 'Hexadecimal'\n    ParentColor = False\n  end\n  object Hex_edt: TEdit\n    Tag = 23\n    Left = 624\n    Height = 27\n    Top = 0\n    Width = 96\n    TabOrder = 50\n  end\n  object Name_edt: TEdit\n    Tag = 28\n    Left = 624\n    Height = 27\n    Top = 26\n    Width = 96\n    TabOrder = 51\n  end\n  object Label18: TLabel\n    Left = 544\n    Height = 17\n    Top = 30\n    Width = 34\n    Caption = 'Name'\n    ParentColor = False\n  end\n  object X_tb: TTrackBar\n    Tag = 17\n    Left = 652\n    Height = 37\n    Top = 75\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 24\n  end\n  object Label19: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Pinkness'\n    Top = 77\n    Width = 7\n    Caption = 'X'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Y2_tb: TTrackBar\n    Tag = 18\n    Left = 652\n    Height = 37\n    Top = 110\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 26\n  end\n  object Label20: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Luminance'\n    Top = 112\n    Width = 7\n    Caption = 'Y'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Z_tb: TTrackBar\n    Tag = 19\n    Left = 652\n    Height = 37\n    Top = 145\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 28\n  end\n  object Label21: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Blueness (S cones)'\n    Top = 147\n    Width = 7\n    Caption = 'Z'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object X_se: TFloatSpinEdit\n    Tag = 17\n    Left = 860\n    Height = 27\n    Top = 81\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 25\n    Value = 0\n  end\n  object Y2_se: TFloatSpinEdit\n    Tag = 18\n    Left = 860\n    Height = 27\n    Top = 116\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 27\n    Value = 0\n  end\n  object Z_se: TFloatSpinEdit\n    Tag = 19\n    Left = 860\n    Height = 27\n    Top = 151\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 29\n    Value = 0\n  end\n  object L3_tb: TTrackBar\n    Tag = 20\n    Left = 652\n    Height = 37\n    Top = 210\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 36\n  end\n  object Label22: TLabel\n    Left = 635\n    Height = 17\n    Hint = 'Perceived lightness'\n    Top = 214\n    Width = 6\n    Caption = 'L'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object C2_tb: TTrackBar\n    Tag = 21\n    Left = 652\n    Height = 37\n    Top = 246\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 38\n  end\n  object Label23: TLabel\n    Left = 635\n    Height = 17\n    Hint = 'Chroma (color saturation)'\n    Top = 250\n    Width = 8\n    Caption = 'C'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object H3_tb: TTrackBar\n    Tag = 22\n    Left = 652\n    Height = 37\n    Top = 283\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 40\n  end\n  object Label24: TLabel\n    Left = 635\n    Height = 17\n    Hint = 'Hue angle'\n    Top = 287\n    Width = 12\n    Caption = 'h°'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object L3_se: TFloatSpinEdit\n    Tag = 20\n    Left = 860\n    Height = 27\n    Top = 222\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 37\n    Value = 0\n  end\n  object C2_se: TFloatSpinEdit\n    Tag = 21\n    Left = 860\n    Height = 27\n    Top = 258\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 39\n    Value = 0\n  end\n  object H3_se: TFloatSpinEdit\n    Tag = 22\n    Left = 860\n    Height = 27\n    Top = 295\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 41\n    Value = 0\n  end\n  object Color_pnl: TPanel\n    Left = 448\n    Height = 41\n    Hint = 'Selected color'\n    Top = 0\n    Width = 40\n    ParentShowHint = False\n    ShowHint = True\n    TabOrder = 54\n  end\n  object gamma_tb: TTrackBar\n    Left = 96\n    Height = 37\n    Top = 0\n    Width = 256\n    Frequency = 10\n    Max = 300\n    Min = 100\n    OnChange = gamma_tbChange\n    Position = 100\n    TabOrder = 52\n  end\n  object Label25: TLabel\n    Left = 5\n    Height = 17\n    Top = 8\n    Width = 81\n    Caption = 'Gamma factor'\n    ParentColor = False\n  end\n  object gamma_se: TFloatSpinEdit\n    Left = 359\n    Height = 27\n    Top = 6\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    OnChange = gamma_seChange\n    TabOrder = 53\n    Value = 0\n  end\n  object sR_tb: TTrackBar\n    Tag = 25\n    Left = 24\n    Height = 37\n    Top = 75\n    Width = 200\n    Frequency = 16\n    Max = 255\n    Position = 0\n    TabOrder = 6\n  end\n  object Label26: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Red (gamma compressed)'\n    Top = 77\n    Width = 7\n    Caption = 'R'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object sG_tb: TTrackBar\n    Tag = 26\n    Left = 24\n    Height = 37\n    Top = 110\n    Width = 200\n    Frequency = 16\n    Max = 255\n    Position = 0\n    TabOrder = 8\n  end\n  object Label27: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Green (gamma compressed)'\n    Top = 112\n    Width = 9\n    Caption = 'G'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object sB_tb: TTrackBar\n    Tag = 27\n    Left = 24\n    Height = 37\n    Top = 145\n    Width = 200\n    Frequency = 16\n    Max = 255\n    Position = 0\n    TabOrder = 10\n  end\n  object Label28: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Blue (gamma compressed)'\n    Top = 147\n    Width = 8\n    Caption = 'B'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object sR_se: TFloatSpinEdit\n    Tag = 25\n    Left = 232\n    Height = 27\n    Top = 81\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 7\n    Value = 0\n  end\n  object sG_se: TFloatSpinEdit\n    Tag = 26\n    Left = 232\n    Height = 27\n    Top = 116\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 9\n    Value = 0\n  end\n  object sB_se: TFloatSpinEdit\n    Tag = 27\n    Left = 232\n    Height = 27\n    Top = 151\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 11\n    Value = 0\n  end\n  object Label29: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Legacy colorspace (Web)'\n    Top = 56\n    Width = 163\n    Caption = 'sRGB (gamma compressed)'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label30: TLabel\n    Left = 323\n    Height = 17\n    Hint = 'Legacy primary colors (linear intensity)'\n    Top = 56\n    Width = 186\n    Caption = 'Linear RGB (gamma expanded)'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label31: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Hue and saturation (gamma compressed)'\n    Top = 190\n    Width = 29\n    Caption = 'sHSL'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label32: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Hue and saturation (gamma compressed)'\n    Top = 324\n    Width = 65\n    Caption = 'sHSV/sHSB'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label33: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Color matching curves integrals'\n    Top = 56\n    Width = 22\n    Caption = 'XYZ'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label34: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Perceived color contrast'\n    Top = 331\n    Width = 43\n    Caption = 'L*a*b*'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label35: TLabel\n    Left = 8\n    Height = 17\n    Hint = 'Cyan/magenta/yellow/black composition (gamma compressed)'\n    Top = 458\n    Width = 40\n    Caption = 'sCMYK'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Label36: TLabel\n    Left = 635\n    Height = 17\n    Hint = 'Perceived hue and chroma'\n    Top = 190\n    Width = 42\n    Caption = 'L*C*h°'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Dec_edt: TEdit\n    Tag = 24\n    Left = 799\n    Height = 27\n    Top = 0\n    Width = 96\n    TabOrder = 55\n  end\n  object Label37: TLabel\n    Left = 736\n    Height = 17\n    Top = 4\n    Width = 46\n    Caption = 'Decimal'\n    ParentColor = False\n  end\n  object Alpha_se: TFloatSpinEdit\n    Tag = 29\n    Left = 547\n    Height = 27\n    Top = 182\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 56\n    Value = 0\n  end\n  object Alpha_tb: TTrackBar\n    Tag = 29\n    Left = 339\n    Height = 37\n    Top = 180\n    Width = 201\n    Max = 255\n    Position = 0\n    TabOrder = 57\n  end\n  object Label38: TLabel\n    Left = 323\n    Height = 17\n    Hint = 'Transparency (alpha channel)'\n    Top = 182\n    Width = 8\n    Caption = 'A'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object Grayscale_pnl: TPanel\n    Left = 488\n    Height = 20\n    Hint = 'Grayscale'\n    Top = 1\n    Width = 37\n    ParentShowHint = False\n    ShowHint = True\n    TabOrder = 58\n  end\n  object Invert_pnl: TPanel\n    Left = 488\n    Height = 20\n    Hint = 'Inverted color'\n    Top = 21\n    Width = 37\n    ParentShowHint = False\n    ShowHint = True\n    TabOrder = 59\n  end\n  object lH_tb: TTrackBar\n    Tag = 50\n    Left = 336\n    Height = 37\n    Top = 239\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 60\n  end\n  object Label39: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Hue angle'\n    Top = 242\n    Width = 9\n    Caption = 'H'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lS_tb: TTrackBar\n    Tag = 51\n    Left = 336\n    Height = 37\n    Top = 272\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 61\n  end\n  object Label40: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Color saturation (~ chroma)'\n    Top = 274\n    Width = 7\n    Caption = 'S'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lL_tb: TTrackBar\n    Tag = 52\n    Left = 336\n    Height = 37\n    Top = 304\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 62\n  end\n  object Label41: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Black/White composition'\n    Top = 306\n    Width = 6\n    Caption = 'L'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lH_se: TFloatSpinEdit\n    Tag = 50\n    Left = 544\n    Height = 27\n    Top = 248\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 63\n    Value = 0\n  end\n  object lS_se: TFloatSpinEdit\n    Tag = 51\n    Left = 544\n    Height = 27\n    Top = 280\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 64\n    Value = 0\n  end\n  object lL_se: TFloatSpinEdit\n    Tag = 52\n    Left = 544\n    Height = 27\n    Top = 312\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 65\n    Value = 0\n  end\n  object Label42: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Hue and saturation (linear intensity)'\n    Top = 219\n    Width = 64\n    Caption = 'Linear HSL'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lH2_tb: TTrackBar\n    Tag = 53\n    Left = 336\n    Height = 37\n    Top = 370\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 66\n  end\n  object Label43: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Hue angle'\n    Top = 373\n    Width = 9\n    Caption = 'G'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lS2_tb: TTrackBar\n    Tag = 54\n    Left = 336\n    Height = 37\n    Top = 403\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 67\n  end\n  object Label44: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Color saturation (~ chroma)'\n    Top = 405\n    Width = 7\n    Caption = 'S'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lL2_tb: TTrackBar\n    Tag = 55\n    Left = 336\n    Height = 37\n    Top = 436\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 68\n  end\n  object Label45: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Brightness (luminance)'\n    Top = 438\n    Width = 8\n    Caption = 'B'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lH2_se: TFloatSpinEdit\n    Tag = 53\n    Left = 544\n    Height = 27\n    Top = 376\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 69\n    Value = 0\n  end\n  object lS2_se: TFloatSpinEdit\n    Tag = 54\n    Left = 544\n    Height = 27\n    Top = 409\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 70\n    Value = 0\n  end\n  object lL2_se: TFloatSpinEdit\n    Tag = 55\n    Left = 544\n    Height = 27\n    Top = 442\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 71\n    Value = 0\n  end\n  object Label46: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Hue and saturation with luminance'\n    Top = 350\n    Width = 117\n    Caption = 'GSB (corrected HSL)'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lR_tb1: TTrackBar\n    Tag = 60\n    Left = 336\n    Height = 37\n    Top = 501\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 72\n  end\n  object Label47: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Red (gamma compressed)'\n    Top = 503\n    Width = 7\n    Caption = 'R'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lG_tb1: TTrackBar\n    Tag = 61\n    Left = 336\n    Height = 37\n    Top = 535\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 73\n  end\n  object Label48: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Mint leaf green (gamma compressed)'\n    Top = 538\n    Width = 9\n    Caption = 'G'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lB_tb1: TTrackBar\n    Tag = 62\n    Left = 336\n    Height = 37\n    Top = 569\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 74\n  end\n  object Label49: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Blue (gamma compressed)'\n    Top = 572\n    Width = 8\n    Caption = 'B'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lR_se1: TFloatSpinEdit\n    Tag = 60\n    Left = 544\n    Height = 27\n    Top = 505\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 75\n    Value = 0\n  end\n  object lG_se1: TFloatSpinEdit\n    Tag = 61\n    Left = 544\n    Height = 27\n    Top = 539\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 76\n    Value = 0\n  end\n  object lB_se1: TFloatSpinEdit\n    Tag = 62\n    Left = 544\n    Height = 27\n    Top = 573\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 77\n    Value = 0\n  end\n  object Label50: TLabel\n    Left = 320\n    Height = 17\n    Hint = 'Adobe colorspace (green primary is slightly mint)'\n    Top = 481\n    Width = 66\n    Caption = 'Adobe RGB'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object LIsReal: TLabel\n    Left = 800\n    Height = 17\n    Top = 30\n    Width = 97\n    Caption = 'Real or imaginary'\n    Font.Style = [fsItalic]\n    ParentColor = False\n    ParentFont = False\n  end\n  object Label51: TLabel\n    Left = 736\n    Height = 17\n    Top = 30\n    Width = 24\n    Caption = 'Kind'\n    ParentColor = False\n  end\n  object reflectance_tb: TTrackBar\n    Tag = 70\n    Left = 652\n    Height = 37\n    Top = 494\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 78\n  end\n  object Label52: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Reflectance'\n    Top = 494\n    Width = 7\n    Caption = 'R'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lambda1_tb: TTrackBar\n    Tag = 71\n    Left = 652\n    Height = 37\n    Top = 529\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 79\n  end\n  object Label53: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Starting wavelength'\n    Top = 529\n    Width = 14\n    Caption = 'λ1'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object lambda2_tb: TTrackBar\n    Tag = 72\n    Left = 652\n    Height = 37\n    Top = 564\n    Width = 200\n    Max = 255\n    Position = 0\n    TabOrder = 80\n  end\n  object Label54: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Ending wavelength'\n    Top = 565\n    Width = 14\n    Caption = 'λ2'\n    ParentColor = False\n    ParentShowHint = False\n    ShowHint = True\n  end\n  object reflectance_se: TFloatSpinEdit\n    Tag = 70\n    Left = 860\n    Height = 27\n    Top = 500\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 81\n    Value = 0\n  end\n  object lambda1_se: TFloatSpinEdit\n    Tag = 71\n    Left = 860\n    Height = 27\n    Top = 535\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 82\n    Value = 0\n  end\n  object lambda2_se: TFloatSpinEdit\n    Tag = 72\n    Left = 860\n    Height = 27\n    Top = 570\n    Width = 75\n    MaxValue = 255\n    MinValue = 0\n    TabOrder = 83\n    Value = 0\n  end\n  object Label55: TLabel\n    Left = 636\n    Height = 17\n    Hint = 'Color reflected by a surface'\n    Top = 470\n    Width = 42\n    Caption = 'R λ1 λ2'\n    Font.Style = [fsBold]\n    ParentColor = False\n    ParentFont = False\n    ParentShowHint = False\n    ShowHint = True\n  end\nend\n"
  },
  {
    "path": "test/colorspace/colorsdemounit.pas",
    "content": "unit ColorsDemoUnit;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, Spin, ExtCtrls,\n  BGRABitmap, BGRABitmapTypes, BGRAColorEx;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    A_se: TFloatSpinEdit;\n    lambda1_se: TFloatSpinEdit;\n    A_tb: TTrackBar;\n    lambda1_tb: TTrackBar;\n    B2_se: TFloatSpinEdit;\n    lambda2_se: TFloatSpinEdit;\n    B2_tb: TTrackBar;\n    lambda2_tb: TTrackBar;\n    Dec_edt: TEdit;\n    Alpha_se: TFloatSpinEdit;\n    Alpha_tb: TTrackBar;\n    reflectance_se: TFloatSpinEdit;\n    reflectance_tb: TTrackBar;\n    Label47: TLabel;\n    Label48: TLabel;\n    Label49: TLabel;\n    Label50: TLabel;\n    Label51: TLabel;\n    Label52: TLabel;\n    Label53: TLabel;\n    Label54: TLabel;\n    Label55: TLabel;\n    LIsReal: TLabel;\n    lB_se1: TFloatSpinEdit;\n    lB_tb1: TTrackBar;\n    lG_se1: TFloatSpinEdit;\n    lG_tb1: TTrackBar;\n    lH2_se: TFloatSpinEdit;\n    lH2_tb: TTrackBar;\n    Label43: TLabel;\n    Label44: TLabel;\n    Label45: TLabel;\n    Label46: TLabel;\n    lH_se: TFloatSpinEdit;\n    lH_tb: TTrackBar;\n    Label31: TLabel;\n    Label32: TLabel;\n    Label33: TLabel;\n    Label34: TLabel;\n    Label35: TLabel;\n    Label36: TLabel;\n    Label37: TLabel;\n    Label38: TLabel;\n    Label39: TLabel;\n    Label40: TLabel;\n    Label41: TLabel;\n    Label42: TLabel;\n    lB_se: TFloatSpinEdit;\n    Label30: TLabel;\n    Grayscale_pnl: TPanel;\n    Invert_pnl: TPanel;\n    lL_se: TFloatSpinEdit;\n    lL_tb: TTrackBar;\n    lR_se1: TFloatSpinEdit;\n    lR_tb1: TTrackBar;\n    lS2_se: TFloatSpinEdit;\n    lS2_tb: TTrackBar;\n    sB_se: TFloatSpinEdit;\n    lB_tb: TTrackBar;\n    sB_tb: TTrackBar;\n    C2_se: TFloatSpinEdit;\n    C2_tb: TTrackBar;\n    C_se: TFloatSpinEdit;\n    C_tb: TTrackBar;\n    lG_se: TFloatSpinEdit;\n    sG_se: TFloatSpinEdit;\n    lG_tb: TTrackBar;\n    sG_tb: TTrackBar;\n    H2_se: TFloatSpinEdit;\n    H2_tb: TTrackBar;\n    H3_se: TFloatSpinEdit;\n    H3_tb: TTrackBar;\n    Hex_edt: TEdit;\n    H_se: TFloatSpinEdit;\n    H_tb: TTrackBar;\n    K_se: TFloatSpinEdit;\n    K_tb: TTrackBar;\n    L2_se: TFloatSpinEdit;\n    L2_tb: TTrackBar;\n    L3_se: TFloatSpinEdit;\n    L3_tb: TTrackBar;\n    Label1: TLabel;\n    Label10: TLabel;\n    Label11: TLabel;\n    Label12: TLabel;\n    Label13: TLabel;\n    Label14: TLabel;\n    Label15: TLabel;\n    Label16: TLabel;\n    Label17: TLabel;\n    Label18: TLabel;\n    Label19: TLabel;\n    Label2: TLabel;\n    Label20: TLabel;\n    Label21: TLabel;\n    Label22: TLabel;\n    Label23: TLabel;\n    Label24: TLabel;\n    Label25: TLabel;\n    Label26: TLabel;\n    Label27: TLabel;\n    Label28: TLabel;\n    Label29: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    Label5: TLabel;\n    Label6: TLabel;\n    Label7: TLabel;\n    Label8: TLabel;\n    Label9: TLabel;\n    L_se: TFloatSpinEdit;\n    L_tb: TTrackBar;\n    M_se: TFloatSpinEdit;\n    M_tb: TTrackBar;\n    Name_edt: TEdit;\n    Color_pnl: TPanel;\n    lR_se: TFloatSpinEdit;\n    sR_se: TFloatSpinEdit;\n    lR_tb: TTrackBar;\n    sR_tb: TTrackBar;\n    S2_se: TFloatSpinEdit;\n    S2_tb: TTrackBar;\n    S_se: TFloatSpinEdit;\n    lS_se: TFloatSpinEdit;\n    S_tb: TTrackBar;\n    gamma_tb: TTrackBar;\n    lS_tb: TTrackBar;\n    V_se: TFloatSpinEdit;\n    gamma_se: TFloatSpinEdit;\n    lL2_se: TFloatSpinEdit;\n    V_tb: TTrackBar;\n    lL2_tb: TTrackBar;\n    X_se: TFloatSpinEdit;\n    X_tb: TTrackBar;\n    Y2_se: TFloatSpinEdit;\n    Y2_tb: TTrackBar;\n    Y_se: TFloatSpinEdit;\n    Y_tb: TTrackBar;\n    Z_se: TFloatSpinEdit;\n    Z_tb: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure gamma_seChange(Sender: TObject);\n    procedure gamma_tbChange(Sender: TObject);\n  private\n    col: TColorEx;\n    ChangingColors: boolean;\n    procedure InitControls;\n    procedure UserInputChange(Sender: TObject);\n    procedure UpdateColorControls(SourceTag: integer);\n    function FindComponentByTag(ATag: integer; AClassName: string): TComponent;\n  public\n\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses XYZABitmap;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  BGRASetGamma(2.2);\n  XYZToRGBOverflowMax:= xroPreserveHue;\n  XYZToRGBOverflowMin:= xroPreserveHue;\n  InitControls;\nend;\n\nprocedure TForm1.gamma_seChange(Sender: TObject);\nbegin\n  if ChangingColors then\n    exit;\n  ChangingColors := True;\n  BGRASetGamma(gamma_se.Value);\n  gamma_tb.Position := round(gamma_se.Value * 100);\n  UpdateColorControls(-1);\n  ChangingColors := False;\nend;\n\nprocedure TForm1.gamma_tbChange(Sender: TObject);\nbegin\n  if ChangingColors then\n    exit;\n  ChangingColors := True;\n  gamma_se.Value := gamma_tb.Position / 100;\n  BGRASetGamma(gamma_se.Value);\n  UpdateColorControls(-1);\n  ChangingColors := False;\nend;\n\nprocedure TForm1.InitControls;\nvar\n  i: integer;\n  tb: TTrackBar;\n  fse: TFloatSpinEdit;\n\n  procedure SetControlsValues(ca: array of TTrackBar; Mi, Mx, Fr: integer);\n  var\n    i: integer;\n  begin\n    for i := 0 to Length(ca) - 1 do\n    begin\n      with ca[i] do\n      begin\n        Max := Mx;\n        Min := Mi;\n        Frequency := Fr;\n      end;\n    end;\n  end;\n\nbegin\n  ChangingColors := True;\n\n  SetControlsValues([lR_tb, lG_tb, lB_tb], 0, 100, 10);\n  SetControlsValues([sR_tb, sG_tb, sB_tb], 0, 255, 10);\n  SetControlsValues([lR_tb1, lG_tb1, lB_tb1], 0, 255, 10);\n  SetControlsValues([H_tb], 0, 360, 10);\n  SetControlsValues([S_tb, L_tb], 0, 100, 10);\n  SetControlsValues([H2_tb], 0, 360, 10);\n  SetControlsValues([S2_tb, V_tb], 0, 100, 10);\n  SetControlsValues([Y2_tb], 0, 100, 10);\n  SetControlsValues([X_tb, Z_tb], 0, 120, 10);\n  SetControlsValues([L2_tb], 0, 100, 10);\n  SetControlsValues([A_tb], -160, 160, 10);\n  SetControlsValues([B2_tb], -140, 140, 10);\n  SetControlsValues([C_tb, M_tb, Y_tb, K_tb], 0, 100, 10);\n  SetControlsValues([L3_tb], 0, 100, 10);\n  SetControlsValues([C2_tb], 0, round(TLChAColorspace.GetMaxValue(1)), 10);\n  SetControlsValues([H3_tb], 0, 360, 10);\n  SetControlsValues([Alpha_tb], 0, 100, 10);\n  SetControlsValues([lH_tb, lH2_tb], 0, 360, 10);\n  SetControlsValues([lS_tb, lL_tb, lS2_tb, lL2_tb], 0, 100, 10);\n  SetControlsValues([reflectance_tb], 0, 100, 10);\n  SetControlsValues([lambda1_tb,lambda2_tb], 360, 830, 10);\n\n  for i := 0 to ComponentCount - 1 do\n  begin\n    if Components[i] is TTrackBar then\n    begin\n      if Components[i].Tag <> 0 then\n      begin\n        tb := TTrackBar(Components[i]);\n        tb.OnChange := @UserInputChange;\n        fse := TFloatSpinEdit(FindComponentByTag(Components[i].Tag, 'TFloatSpinEdit'));\n        if (fse <> nil) then\n        begin\n          fse.MinValue := tb.Min;\n          fse.MaxValue := tb.Max;\n          fse.OnChange := @UserInputChange;\n        end;\n      end;\n    end;\n  end;\n\n  Hex_edt.OnChange := @UserInputChange;\n  Dec_edt.OnChange := @UserInputChange;\n  Name_edt.OnChange := @UserInputChange;\n\n  gamma_se.Value := BGRAGetGamma;\n  gamma_tb.Position := round(gamma_se.Value * 100);\n\n  col.AsBGRAPixel := BGRABlack;\n  UpdateColorControls(-1);\n  ChangingColors := False;\nend;\n\nprocedure TForm1.UserInputChange(Sender: TObject);\nvar\n  t: integer;\n  v: single;\nbegin\n  if ChangingColors then\n    Exit;\n  ChangingColors := True;\n  t := TComponent(Sender).Tag;\n  if Sender is TFloatSpinEdit then\n  begin\n    if not TryStrToFloat(TFloatSpinEdit(Sender).Text, v) then\n      v := 0;\n    TTrackBar(FindComponentByTag(t, 'TTrackBar')).Position := round(v);\n  end;\n  if Sender is TTrackBar then\n    TFloatSpinEdit(FindComponentByTag(t, 'TFloatSpinEdit')).Text := IntToStr(TTrackBar(Sender).Position);\n\n  UpdateColorControls(t);\n\n  ChangingColors := False;\nend;\n\nprocedure TForm1.UpdateColorControls(SourceTag: integer);\nvar\n  i,decVal,errPos: integer;\n  tb: TTrackBar;\n  fse: TFloatSpinEdit;\n  viewBmp: TBGRABitmap;\nbegin\n  case SourceTag of\n    1, 2, 3: col.AsLinearRGBA := TLinearRGBA.New(lR_se.Value / 100, lG_se.Value / 100, lB_se.Value / 100, Alpha_se.Value / 100);\n    4, 5, 6: col.AsStdHSLA := TStdHSLA.New(H_se.Value, S_se.Value / 100, L_se.Value / 100, Alpha_se.Value / 100);\n    7, 8, 9: col.AsStdHSVA := TStdHSVA.New(H2_se.Value, S2_se.Value / 100, V_se.Value / 100, Alpha_se.Value / 100);\n    17, 18, 19: col.AsXYZA := TXYZA.New(X_se.Value / 100, Y2_se.Value / 100, Z_se.Value / 100, Alpha_se.Value / 100);\n    10, 11, 12: col.AsLabA := TLabA.New(L2_se.Value, A_se.Value, B2_se.Value, Alpha_se.Value / 100);\n    13, 14, 15, 16: col.AsStdCMYK := TStdCMYK.New(C_se.Value / 100, M_se.Value / 100, Y_se.Value / 100, K_se.Value / 100);\n    20, 21, 22: col.AsLChA := TLChA.New(L3_se.Value, C2_se.Value, H3_se.Value, Alpha_se.Value / 100);\n    23: col.AsHex := Hex_edt.Text;\n    24: begin\n          val(Dec_edt.Text, decVal, errPos);\n          if (errPos = 0) and (decVal>=0) then\n            col.AsDecimal := decVal;\n        end;\n    25, 26, 27: col.AsStdRGBA := TStdRGBA.New(sR_se.Value / 255, sG_se.Value / 255, sB_se.Value / 255, Alpha_se.Value / 100);\n    28: col.Name := Name_edt.Text;\n    29: col.AlphaPercent := Alpha_se.Value;\n    50, 51, 52: col.AsHSLAPixel := THSLAPixel.New(round(lH_se.Value/360*65536) and $ffff, round(lS_se.Value / 100*65535), round(lL_se.Value / 100*65535), round(Alpha_se.Value / 100*65535));\n    53, 54, 55: col.AsGSBAPixel := TGSBAPixel.New(round(lH2_se.Value/360*65536) and $ffff, round(lS2_se.Value / 100*65535), round(lL2_se.Value / 100*65535), round(Alpha_se.Value / 100*65535));\n    60, 61, 62: col.AsAdobeRGBA := TAdobeRGBA.New(round(lR_se1.Value), round(lG_se1.Value), round(lB_se1.Value), round(Alpha_se.Value / 100 * 255));\n    70, 71, 72: col.AsXYZA := SpectrumRangeReflectToXYZA(reflectance_se.Value / 100, lambda1_se.Value, lambda2_se.Value, Alpha_se.Value / 100);\n  end;\n\n  if not (SourceTag in [1, 2, 3]) then\n    with col.AsLinearRGBA do\n    begin\n      lR_se.Value := red * 100;\n      lG_se.Value := green * 100;\n      lB_se.Value := blue * 100;\n    end;\n  if not (SourceTag in [4, 5, 6]) then\n    with col.AsStdHSLA do\n    begin\n      H_se.Value := hue;\n      S_se.Value := saturation * 100;\n      L_se.Value := lightness * 100;\n    end;\n  if not (SourceTag in [7, 8, 9]) then\n    with col.AsStdHSVA do\n    begin\n      H2_se.Value := hue;\n      S2_se.Value := saturation * 100;\n      V_se.Value := value * 100;\n    end;\n  if not (SourceTag in [17, 18, 19]) then\n    with col.AsXYZA do\n    begin\n      X_se.Value := X * 100;\n      Y2_se.Value := Y * 100;\n      Z_se.Value := Z * 100;\n    end;\n  if not (SourceTag in [10, 11, 12]) then\n    with col.AsLabA do\n    begin\n      L2_se.Value := L;\n      A_se.Value := a;\n      B2_se.Value := b;\n    end;\n  if not (SourceTag in [25, 26, 27]) then\n    with col.AsStdRGBA do\n    begin\n      sR_se.Value := red * 255;\n      sG_se.Value := green * 255;\n      sB_se.Value := blue * 255;\n    end;\n  if not (SourceTag in [13, 14, 15, 16]) then\n    with col.AsStdCMYK do\n    begin\n      C_se.Value := C * 100;\n      M_se.Value := M * 100;\n      Y_se.Value := Y * 100;\n      K_se.Value := K * 100;\n    end;\n  if not (SourceTag in [20, 21, 22]) then\n    with col.AsLchA do\n    begin\n      L3_se.Value := L;\n      C2_se.Value := c;\n      H3_se.Value := h;\n    end;\n  if SourceTag <> 23 then\n    Hex_edt.Text := col.AsHex;\n  if SourceTag <> 24 then\n    Dec_edt.Text := IntToStr(col.AsDecimal);\n  if SourceTag <> 28 then\n    Name_edt.Text := col.Name;\n  if SourceTag <> 29 then\n    Alpha_se.Value := col.AlphaPercent;\n  if not (SourceTag in [50,51,52]) then\n    with col.AsHSLAPixel do\n    begin\n      lH_se.Value := hue/65536 * 360;\n      lS_se.Value := saturation/65535 * 100;\n      lL_se.Value := lightness/65535 * 100;\n    end;\n  if not (SourceTag in [53,54,55]) then\n    with col.AsGSBAPixel do\n    begin\n      lH2_se.Value := hue/65536 * 360;\n      lS2_se.Value := saturation/65535 * 100;\n      lL2_se.Value := lightness/65535 * 100;\n    end;\n  if not (SourceTag in [60,61,62]) then\n    with col.AsAdobeRGBA do\n    begin\n      lR_se1.Value := red;\n      lG_se1.Value := green;\n      lB_se1.Value := blue;\n    end;\n\n  for i := 0 to ComponentCount - 1 do\n  begin\n    if Components[i] is TTrackBar then\n    begin\n      if Components[i].Tag <> 0 then\n      begin\n        tb := TTrackBar(Components[i]);\n        tb.OnChange := @UserInputChange;\n        fse := TFloatSpinEdit(FindComponentByTag(Components[i].Tag, 'TFloatSpinEdit'));\n        if (fse <> nil) then\n          tb.Position := round(fse.Value);\n      end;\n    end;\n  end;\n\n  viewBmp := TBGRABitmap.Create(3,1, clBtnFace);\n  viewBmp.DrawPixel(0,0, col.AsBGRAPixel, dmDrawWithTransparency);\n  viewBmp.DrawPixel(1,0, col.AsGrayscale.AsBGRAPixel, dmDrawWithTransparency);\n  viewBmp.DrawPixel(2,0, col.AsInvert.AsBGRAPixel, dmDrawWithTransparency);\n  Color_pnl.Color := viewBmp.GetPixel(0,0);\n  Grayscale_pnl.Color := viewBmp.GetPixel(1,0);\n  Invert_pnl.Color := viewBmp.GetPixel(2,0);\n  viewBmp.Free;\n\n  if IsRealColor(col.AsXYZA) then\n    LIsReal.Caption := 'Real color'\n  else\n    LIsReal.Caption := 'Imaginary color';\nend;\n\nfunction TForm1.FindComponentByTag(ATag: integer; AClassName: string): TComponent;\nvar\n  i: integer;\nbegin\n  Result := nil;\n  for i := 0 to ComponentCount - 1 do\n    if (Components[i].Tag = ATag) and (Components[i].ClassName = AClassName) then\n      Result := Components[i];\nend;\n\nend.\n"
  },
  {
    "path": "test/colorspace/uhorseshoe.lfm",
    "content": "object Form1: TForm1\n  Left = 257\n  Height = 622\n  Top = 140\n  Width = 1239\n  Caption = 'XYZ horseshoe'\n  ClientHeight = 622\n  ClientWidth = 1239\n  DesignTimePPI = 144\n  Font.Height = -20\n  OnCreate = FormCreate\n  LCLVersion = '2.1.0.0'\n  object Panel1: TPanel\n    Left = 0\n    Height = 622\n    Top = 0\n    Width = 620\n    Align = alLeft\n    ClientHeight = 622\n    ClientWidth = 620\n    TabOrder = 0\n    object cbYAxis: TComboBox\n      Left = 6\n      Height = 36\n      Top = 6\n      Width = 150\n      ItemHeight = 0\n      OnChange = cbYAxisChange\n      TabOrder = 1\n      Text = 'cbYAxis'\n    end\n    object vsGradient: TBGRAVirtualScreen\n      Left = 6\n      Height = 408\n      Top = 48\n      Width = 602\n      OnRedraw = vsGradientRedraw\n      Alignment = taLeftJustify\n      Anchors = [akTop, akLeft, akRight, akBottom]\n      Color = clWhite\n      ParentColor = False\n      TabOrder = 2\n    end\n    object cbXAxis: TComboBox\n      Left = 458\n      Height = 36\n      Top = 462\n      Width = 150\n      Anchors = [akRight, akBottom]\n      ItemHeight = 0\n      OnChange = cbXAxisChange\n      TabOrder = 0\n      Text = 'cbXAxis'\n    end\n    object cbColorspace: TComboBox\n      Left = 452\n      Height = 36\n      Top = 6\n      Width = 160\n      Anchors = [akTop, akRight]\n      ItemHeight = 0\n      OnChange = cbColorspaceChange\n      TabOrder = 3\n      Text = 'cbColorspace'\n    end\n    object Label1: TLabel\n      Left = 334\n      Height = 24\n      Top = 12\n      Width = 110\n      Anchors = [akTop, akRight]\n      Caption = 'Colorspace'\n      ParentColor = False\n    end\n    object lblMaxY: TLabel\n      Left = 160\n      Height = 24\n      Top = 12\n      Width = 53\n      Caption = 'MaxY'\n      ParentColor = False\n    end\n    object lblMaxX: TLabel\n      Left = 389\n      Height = 24\n      Top = 468\n      Width = 55\n      Alignment = taRightJustify\n      Anchors = [akRight, akBottom]\n      Caption = 'MaxX'\n      ParentColor = False\n    end\n    object lblMin: TLabel\n      Left = 6\n      Height = 24\n      Top = 468\n      Width = 117\n      Anchors = [akLeft, akBottom]\n      Caption = 'MinY / MinX'\n      ParentColor = False\n    end\n    object tbZ: TTrackBar\n      Left = 120\n      Height = 68\n      Top = 491\n      Width = 488\n      OnChange = tbZChange\n      Position = 0\n      Anchors = [akRight, akBottom]\n      TabOrder = 4\n    end\n    object lblZ: TLabel\n      Left = 12\n      Height = 24\n      Top = 517\n      Width = 97\n      Anchors = [akLeft, akBottom]\n      Caption = 'ChannelZ'\n      ParentColor = False\n    end\n    object lblZ2: TLabel\n      Left = 12\n      Height = 24\n      Top = 577\n      Width = 110\n      Anchors = [akLeft, akBottom]\n      Caption = 'ChannelZ2'\n      ParentColor = False\n    end\n    object tbZ2: TTrackBar\n      Left = 124\n      Height = 68\n      Top = 551\n      Width = 484\n      OnChange = tbZChange\n      Position = 0\n      Anchors = [akRight, akBottom]\n      TabOrder = 5\n    end\n    object cbFluorescent: TCheckBox\n      Left = 227\n      Height = 28\n      Hint = 'Include fluorescent colors or light sources'\n      Top = 10\n      Width = 90\n      Anchors = [akTop, akLeft, akRight]\n      Caption = 'Fluo'\n      OnClick = cbFluorescentClick\n      ParentFont = False\n      ParentShowHint = False\n      ShowHint = True\n      TabOrder = 6\n    end\n  end\n  object Splitter1: TSplitter\n    Left = 620\n    Height = 622\n    Top = 0\n    Width = 8\n  end\n  object Panel2: TPanel\n    Left = 628\n    Height = 622\n    Top = 0\n    Width = 611\n    Align = alClient\n    ClientHeight = 622\n    ClientWidth = 611\n    TabOrder = 2\n    object vsHorseshoe: TBGRAVirtualScreen\n      Left = 1\n      Height = 572\n      Top = 49\n      Width = 609\n      OnRedraw = vsHorseshoeRedraw\n      Align = alClient\n      Alignment = taLeftJustify\n      Color = clWhite\n      ParentColor = False\n      TabOrder = 0\n    end\n    object Panel3: TPanel\n      Left = 1\n      Height = 48\n      Top = 1\n      Width = 609\n      Align = alTop\n      BevelOuter = bvNone\n      ClientHeight = 48\n      ClientWidth = 609\n      TabOrder = 1\n      object Label2: TLabel\n        Left = 8\n        Height = 24\n        Top = 9\n        Width = 98\n        Caption = 'Ref. white'\n        ParentColor = False\n      end\n      object cbReferenceWhite: TComboBox\n        Left = 120\n        Height = 36\n        Top = 4\n        Width = 136\n        ItemHeight = 0\n        OnChange = cbReferenceWhiteChange\n        TabOrder = 0\n        Text = 'cbReferenceWhite'\n      end\n      object Label3: TLabel\n        Left = 264\n        Height = 24\n        Top = 9\n        Width = 89\n        Caption = 'Overflow'\n        ParentColor = False\n      end\n      object cbOverflow: TComboBox\n        Left = 360\n        Height = 34\n        Top = 4\n        Width = 240\n        ItemHeight = 0\n        Items.Strings = (\n          'Clip to RGB display'\n          'Saturate per channel'\n          'Preserve hue'\n        )\n        OnChange = cbOverflowChange\n        Style = csDropDownList\n        TabOrder = 1\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "test/colorspace/uhorseshoe.pas",
    "content": "unit uhorseshoe;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,\n  ExtCtrls, ComCtrls, BGRAVirtualScreen, BGRABitmap, BGRAClasses, BGRABitmapTypes,\n  BGRAGradientScanner;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    cbColorspace: TComboBox;\n    cbReferenceWhite: TComboBox;\n    cbOverflow: TComboBox;\n    cbFluorescent: TCheckBox;\n    Label1: TLabel;\n    Label2: TLabel;\n    Label3: TLabel;\n    lblZ: TLabel;\n    lblZ2: TLabel;\n    lblMaxY: TLabel;\n    lblMaxX: TLabel;\n    lblMin: TLabel;\n    Panel2: TPanel;\n    Panel3: TPanel;\n    tbZ: TTrackBar;\n    tbZ2: TTrackBar;\n    vsGradient: TBGRAVirtualScreen;\n    cbYAxis: TComboBox;\n    cbXAxis: TComboBox;\n    Panel1: TPanel;\n    Splitter1: TSplitter;\n    vsHorseshoe: TBGRAVirtualScreen;\n    procedure cbColorspaceChange(Sender: TObject);\n    procedure cbFluorescentClick(Sender: TObject);\n    procedure cbOverflowChange(Sender: TObject);\n    procedure cbReferenceWhiteChange(Sender: TObject);\n    procedure cbXAxisChange(Sender: TObject);\n    procedure cbYAxisChange(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure tbZChange(Sender: TObject);\n    procedure vsGradientRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure vsHorseshoeRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure UpdateSelectedAxis;\n    procedure UpdateSelectedColorspace;\n    procedure UpdateRGBOverlow;\n  private\n    ZName, Z2Name: string;\n    ZFactor, Z2Factor: single;\n    function SelectedColorspace: TColorspaceAny;\n    procedure UpdateReferenceWhiteFromCombo;\n  public\n\n  end;\n\n  { THorseShoeScanner }\n\n  THorseShoeScanner = class(TBGRACustomScanner)\n  protected\n    FOrigin: TPointF;\n    FWidth,FHeight,FXStep,FYStep: single;\n    FXYZ: TXYZA;\n    FHorseShoeGrayAmount,FHorseShoeGrayLevel: single;\n  public\n    constructor Create(AOrigin: TPointF; AWidth,AHeight: single;\n                       AHorseShoeGrayAmount,AHorseShoeGrayLevel: single);\n    procedure AdaptColorToRGBDisplay(var xyz: TXYZA);\n    function ScanAtXYZ(X,Y: Single): TXYZA;\n    function ScanAt(X,Y: Single): TBGRAPixel; override;\n    procedure ScanMoveTo(X,Y: Integer); override;\n    function ScanNextPixel: TBGRAPixel; override;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses XYZABitmap;\n\nconst\n  OptimalReflectStep = 250;\n  OptimalReflectArraySize = OptimalReflectStep;\n  OptimalReflectBorderStep = OptimalReflectStep div 10;\n\nvar\n  OptimalReflectXYZ: array[0..OptimalReflectArraySize,0..OptimalReflectArraySize] of record\n                       min,max: single;\n                     end;\n{  optimalXYZMin,optimalXYZMax: TXYZA; }\n{  labMin,labMax: TLabA;\n  lchMin,lchMax: TLChA;}\n\nfunction IsOptimalReflect(xyz: TXYZA): boolean;\nbegin\n  with GetReferenceWhite do\n  begin\n    xyz.X /= X;\n    xyz.Y /= Y;\n    xyz.Z /= Z;\n  end;\n  if (xyz.Y >= 0) and (xyz.Y <= 1) and\n     (xyz.X >= 0) and (xyz.X <= 1) and\n     (xyz.Z >= 0) and (xyz.Z <= 1) then\n  begin\n    xyz.X := sqrt(xyz.X);\n    xyz.Z := sqrt(xyz.Z);\n    with OptimalReflectXYZ[round(xyz.X*OptimalReflectStep),round(xyz.Z*OptimalReflectStep)] do\n      if (min <> EmptySingle) and (xyz.Y >= min) and (xyz.Y <= max) then exit(true);\n  end;\n  result := false;\nend;\n\nprocedure AddOptimalReflect(xyz: TXYZA);\n{var\n  lab: TLabA;\n  lch: TLChA; }\nbegin\n{  if xyz.X < optimalXYZMin.X then optimalXYZMin.X := xyz.X;\n  if xyz.Y < optimalXYZMin.Y then optimalXYZMin.Y := xyz.Y;\n  if xyz.Z < optimalXYZMin.Z then optimalXYZMin.Z := xyz.Z;\n  if xyz.X > optimalXYZMax.X then optimalXYZMax.X := xyz.X;\n  if xyz.Y > optimalXYZMax.Y then optimalXYZMax.Y := xyz.Y;\n  if xyz.Z > optimalXYZMax.Z then optimalXYZMax.Z := xyz.Z;  }\n{  lab := xyz.ToLabA(ReferenceWhite2E);\n  if lab.L < labMin.L then labMin.L := lab.L;\n  if lab.a < labMin.a then labMin.a := lab.a;\n  if lab.b < labMin.b then labMin.b := lab.b;\n  if lab.L > labMax.L then labMax.L := lab.L;\n  if lab.a > labMax.a then labMax.a := lab.a;\n  if lab.b > labMax.b then labMax.b := lab.b;\n\n  lch := lab.ToLChA;\n  if lch.L < lchMin.L then lchMin.L := lch.L;\n  if lch.C < lchMin.C then lchMin.C := lch.C;\n  if lch.h < lchMin.h then lchMin.h := lch.h;\n  if lch.L > lchMax.L then lchMax.L := lch.L;\n  if lch.C > lchMax.C then lchMax.C := lch.C;\n  if lch.h > lchMax.h then lchMax.h := lch.h; }\n\n  if (xyz.Y >= 0) and (xyz.Y <= 1) and\n     (xyz.X >= 0) and (xyz.X <= 1) and\n     (xyz.Z >= 0) and (xyz.Z <= 1) then\n  begin\n    xyz.X := sqrt(xyz.X);\n    xyz.Z := sqrt(xyz.Z);\n\n    with OptimalReflectXYZ[round(xyz.X*OptimalReflectStep),\n      round(xyz.Z*OptimalReflectStep)] do\n    begin\n      if min = EmptySingle then\n      begin\n        min := xyz.Y;\n        max := xyz.Y;\n      end else\n      begin\n        if xyz.Y < min then min := xyz.Y;\n        if xyz.Y > max then max := xyz.Y;\n      end;\n    end;\n  end;\nend;\n\n{$R *.lfm}\n\n{ THorseShoeScanner }\n\nconstructor THorseShoeScanner.Create(AOrigin: TPointF; AWidth, AHeight: single;\n                   AHorseShoeGrayAmount,AHorseShoeGrayLevel: single);\nbegin\n  FOrigin := AOrigin;\n  FWidth:= AWidth;\n  FHeight:= AHeight;\n  FHorseShoeGrayAmount:= AHorseShoeGrayAmount;\n  FHorseShoeGrayLevel:= AHorseShoeGrayLevel;\n  FXStep := 1/FWidth*(1-FHorseShoeGrayAmount);\n  FYStep := 1/FHeight*(1-FHorseShoeGrayAmount);\nend;\n\nprocedure THorseShoeScanner.AdaptColorToRGBDisplay(var xyz:TXYZA);\nbegin\n  xyz.X := xyz.X*(1-FHorseShoeGrayAmount) + FHorseShoeGrayLevel*FHorseShoeGrayAmount;\n  xyz.Y := xyz.Y*(1-FHorseShoeGrayAmount) + FHorseShoeGrayLevel*FHorseShoeGrayAmount;\n  xyz.Z := xyz.Z*(1-FHorseShoeGrayAmount) + FHorseShoeGrayLevel*FHorseShoeGrayAmount;\nend;\n\nfunction THorseShoeScanner.ScanAtXYZ(X, Y: Single): TXYZA;\nbegin\n  result := TXYZA.New((X-FOrigin.X)/FWidth,(Y-FOrigin.Y)/FHeight,0);\n  result.Z := 1-(result.X+result.Y);\n  AdaptColorToRGBDisplay(result);\nend;\n\nfunction THorseShoeScanner.ScanAt(X, Y: Single): TBGRAPixel;\nbegin\n  result := ScanAtXYZ(X,Y).ToBGRAPixel;\nend;\n\nprocedure THorseShoeScanner.ScanMoveTo(X, Y: Integer);\nbegin\n  FXYZ := ScanAtXYZ(X,Y);\nend;\n\nfunction THorseShoeScanner.ScanNextPixel: TBGRAPixel;\nbegin\n  result := FXYZ.ToBGRAPixel;\n  IncF(FXYZ.X, FXStep);\n  DecF(FXYZ.Z, FXStep);\nend;\n\n{ TForm1 }\n\nprocedure TForm1.vsHorseshoeRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  squareWidth,squareHeight: single;\n  squareOrigin: TPointF;\n\n  function xyzToPointF(xyz: TXYZA): TPointF;\n  var\n    n: single;\n  begin\n    n := xyz.X+xyz.Y+xyz.Z;\n    if (n <= 0) or (xyz.X < 0) or (xyz.Y < 0) or (xyz.Z < 0) then\n      result := EmptyPointF\n    else\n      result := PointF(squareOrigin.x+xyz.X/n*squareWidth,squareOrigin.y+xyz.Y/n*squareHeight);\n  end;\n\n  procedure DrawHorseShoe;\n  const HorseShoeMargin = 0.02;\n  var\n    i,j: Integer;\n    xyz: TXYZA;\n    pts: array of TPointF;\n    scan: THorseShoeScanner;\n    min,max: TPointF;\n    marginX,marginY: single;\n    prevRefWhite: TXYZReferenceWhite;\n  begin\n    squareOrigin := PointF(0,0);\n    squareWidth:= 1;\n    squareHeight:= 1;\n\n    setlength(pts, length(SpectralLocus));\n    xyz.alpha := 1;\n    j := 0;\n    for i := low(SpectralLocus) to high(SpectralLocus) do\n    begin\n      xyz.X := SpectralLocus[i].X;\n      xyz.Y := SpectralLocus[i].Y;\n      xyz.Z := SpectralLocus[i].Z;\n      pts[j] := xyzToPointF(xyz);\n      if i = low(SpectralLocus) then\n      begin\n        min := pts[j];\n        max := pts[j];\n      end else\n      begin\n        if pts[j].x < min.x then min.x := pts[j].x\n        else if pts[j].x > max.x then max.x := pts[j].x;\n        if pts[j].y < min.y then min.y := pts[j].y\n        else if pts[j].y > max.y then max.y := pts[j].y;\n      end;\n      inc(j);\n    end;\n\n    marginX := Bitmap.Width * HorseShoeMargin;\n    marginY := Bitmap.Height * HorseShoeMargin;\n    squareWidth:= (Bitmap.Width-1-2*marginX)/max.x;\n    squareHeight := -(Bitmap.Height-1-2*marginY)/max.y;\n    squareOrigin := PointF(marginX,Bitmap.Height-1-marginY);\n\n    for j := 0 to high(pts) do\n      pts[j] := squareOrigin + PointF(pts[j].x*squareWidth,pts[j].y*squareHeight);\n\n    // spectral locus is normalized for equal illuminant\n    prevRefWhite := GetReferenceWhite;\n    SetReferenceWhite(2, 'E');\n\n    if XYZToRGBOverflowMin = xroClipToTarget then\n      scan := THorseShoeScanner.Create(squareOrigin, squareWidth, squareHeight, 0.36, 0)\n    else\n      scan := THorseShoeScanner.Create(squareOrigin, squareWidth, squareHeight, 0.5, 0.25);\n\n    pts := Bitmap.ComputeOpenedSpline(pts, ssCrossingWithEnds);\n    Bitmap.FillPolyAntialias(pts,scan);\n    Bitmap.DrawPolygonAntialias(pts,BGRABlack, (Bitmap.Width+Bitmap.Height)/600);\n    scan.Free;\n\n    SetReferenceWhite(prevRefWhite);\n  end;\n\n  procedure DrawColorspace;\n  const bitsPerChannel = 3;\n    maxPerChannel = (1 shl bitsPerChannel)-1;\n  var\n    xyz: TXYZA;\n    i,j, channelCount, bitCount: Integer;\n    colorspace: TColorspaceAny;\n    colorValue: pointer;\n    dotSize: single;\n    pt: TPointF;\n    min,max: array of single;\n  begin\n    dotSize := (Bitmap.Width+Bitmap.Height)/400;\n    colorspace := SelectedColorspace;\n    getmem(colorValue, colorspace.GetSize);\n    channelCount:= colorspace.GetChannelCount;\n    setlength(min, channelCount);\n    setlength(max, channelCount);\n    for j := 0 to channelCount-1 do\n    begin\n      min[j] := colorspace.GetMinValue(j);\n      max[j] := colorspace.GetMaxValue(j);\n    end;\n\n    if colorspace.IndexOfAlphaChannel = channelCount-1 then\n    begin\n      colorspace.SetChannel(colorValue, channelCount-1, max[channelCount-1]);\n      dec(channelCount);\n    end;\n    bitCount := channelCount*bitsPerChannel;\n\n    for i := 0 to (1 shl bitCount) - 1 do\n    begin\n      for j := 0 to channelCount-1 do\n        colorspace.SetChannel(colorValue, j, min[j] + (max[j]-min[j]) * ((i shr (j*bitsPerChannel)) and maxPerChannel)/maxPerChannel);\n      colorspace.Convert(colorValue^, xyz, TXYZAColorspace);\n      pt := xyzToPointF(xyz);\n      if not isEmptyPointF(pt) then\n        Bitmap.FillEllipseAntialias(pt.x,pt.y, dotSize,dotSize, BGRA(0,0,0,128));\n    end;\n    freemem(colorValue);\n  end;\n\n\nbegin\n  Bitmap.Fill(CSSGray);\n\n  DrawHorseShoe;\n\n  DrawColorspace;\n\nend;\n\nprocedure TForm1.UpdateSelectedAxis;\nvar\n  colorspace: TColorspaceAny;\n\n  procedure UpdateZCombo(zIndex: integer; var ZName: string; var zFactor: single; lblZ: TLabel; tbZ: TTrackBar);\n  begin\n    if zIndex = -1 then\n    begin\n      lblZ.Caption := '';\n      tbZ.Enabled := false;\n    end else\n    begin\n      ZName := colorspace.GetChannelName(zIndex);\n      lblZ.Caption := ZName;\n      tbZ.Enabled := true;\n      if colorspace.GetMaxValue(zIndex)-colorspace.GetMinValue(zIndex) < 10 then\n        zFactor:= 100\n      else\n        zFactor := 1;\n      tbZ.Min := round(colorspace.GetMinValue(zIndex)*zFactor);\n      tbZ.Max := round(colorspace.GetMaxValue(zIndex)*zFactor);\n      if ZName = 'Alpha' then\n        tbZ.Position := tbZ.Max\n      else\n        tbZ.Position := (tbZ.Max+tbZ.Min) div 2;\n    end;\n  end;\n\nvar\n  i,j: Integer;\n  zIndex,z2Index: integer;\nbegin\n  colorspace := SelectedColorspace;\n  j := 0;\n  zIndex := -1;\n  z2Index:= -1;\n  for i := 0 to colorspace.GetChannelCount-1 do\n  begin\n    if (colorspace.GetChannelName(i) <> cbXAxis.Text) and\n       (colorspace.GetChannelName(i) <> cbYAxis.Text) then\n    begin\n      case j of\n      0: zIndex := i;\n      1: z2Index:= i;\n      end;\n      inc(j);\n    end;\n  end;\n\n  UpdateZCombo(zIndex, ZName, zFactor, lblZ, tbZ);\n  UpdateZCombo(z2Index, Z2Name, z2Factor, lblZ2, tbZ2);\n\n  vsGradient.DiscardBitmap;\nend;\n\nprocedure TForm1.UpdateSelectedColorspace;\nvar\n  colorspace: TColorspaceAny;\n  i: Integer;\nbegin\n  colorspace := SelectedColorspace;\n  cbXAxis.Items.Clear;\n  cbXAxis.Style := csDropDownList;\n  for i := 0 to colorspace.GetChannelCount-1 do\n    cbXAxis.Items.Add(colorspace.GetChannelName(i));\n\n  cbYAxis.Items.Clear;\n  cbYAxis.Style := csDropDownList;\n  for i := 0 to colorspace.GetChannelCount-1 do\n    cbYAxis.Items.Add(colorspace.GetChannelName(i));\n\n  if (colorspace = TXYZAColorspace) or (colorspace = TWordXYZAColorspace) then\n  begin\n    cbXAxis.ItemIndex:= colorspace.IndexOfChannel('X');\n    cbYAxis.ItemIndex:= colorspace.IndexOfChannel('Z');\n  end else\n  if (colorspace = TYCbCr601Colorspace) or (colorspace = TYCbCr601JPEGColorspace) or\n   (colorspace = TYCbCr709Colorspace) or (colorspace = TYCbCr709JPEGColorspace) then\n  begin\n    cbXAxis.ItemIndex:= colorspace.IndexOfChannel('BlueDiff');\n    cbYAxis.ItemIndex:= colorspace.IndexOfChannel('RedDiff');\n  end else\n  if colorspace = TLabAColorspace then\n  begin\n    cbXAxis.ItemIndex:= colorspace.IndexOfChannel('a');\n    cbYAxis.ItemIndex:= colorspace.IndexOfChannel('b');\n  end else\n  if colorspace = TLChAColorspace then\n  begin\n    cbXAxis.ItemIndex:= colorspace.IndexOfChannel('Hue');\n    cbYAxis.ItemIndex:= colorspace.IndexOfChannel('Chroma');\n  end else\n  begin\n    cbXAxis.ItemIndex:= 0;\n    if colorspace.GetChannelCount> 1 then\n      cbYAxis.ItemIndex:= 1\n    else\n      cbYAxis.ItemIndex:= 0;\n  end;\n\n  cbReferenceWhite.Enabled := cfReferenceWhiteIndependent in colorspace.GetFlags;\n  if (colorspace = TXYZAColorspace) or (colorspace = TWordXYZAColorspace) then SetReferenceWhite(2, 'E')\n  else UpdateReferenceWhiteFromCombo;\n\n  UpdateSelectedAxis;\n  vsHorseshoe.DiscardBitmap;\nend;\n\nprocedure TForm1.UpdateRGBOverlow;\nbegin\n  XYZToRGBOverflowMin:= TColorspaceOverflow(cbOverflow.ItemIndex);\n  XYZToRGBOverflowMax:= TColorspaceOverflow(cbOverflow.ItemIndex);\nend;\n\nfunction TForm1.SelectedColorspace: TColorspaceAny;\nvar\n  i: Integer;\nbegin\n  for i := 0 to ColorspaceCollection.GetCount-1 do\n    if ColorspaceCollection.GetItem(i).GetName = cbColorspace.Text then\n      exit(ColorspaceCollection.GetItem(i));\n\n  result := TBGRAPixelColorspace;\nend;\n\nprocedure TForm1.UpdateReferenceWhiteFromCombo;\nbegin\n  if cbReferenceWhite.ItemIndex <> -1 then\n  begin\n    SetReferenceWhite(GetReferenceWhiteByIndex(cbReferenceWhite.ItemIndex));\n    vsGradient.DiscardBitmap;\n    vsHorseshoe.DiscardBitmap;\n  end;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar\n  i: Integer;\n  csName: String;\nbegin\n  cbColorspace.Items.Clear;\n  cbColorspace.Style := csDropDownList;\n  for i := 0 to ColorspaceCollection.GetCount-1 do\n  begin\n    csName := ColorspaceCollection.GetItem(i).GetName;\n    if (csName <> 'Color') and (csName <> 'BGRAPixel') and (csName <> 'ExpandedPixel')\n     and (csName <> 'FPColor') then\n      cbColorspace.Items.Add(csName);\n  end;\n  cbColorspace.ItemIndex := 0;\n\n  cbReferenceWhite.Items.Clear;\n  cbReferenceWhite.Style := csDropDownList;\n  for i := 0 to GetReferenceWhiteCount-1 do\n    with GetReferenceWhiteByIndex(i) do\n    begin\n      cbReferenceWhite.Items.Add(inttostr(ObserverAngle)+'° '+Illuminant);\n      if (ObserverAngle = GetReferenceWhite.ObserverAngle) and (Illuminant = GetReferenceWhite.Illuminant) then\n        cbReferenceWhite.ItemIndex := cbReferenceWhite.Items.Count-1;\n    end;\n\n  UpdateSelectedColorspace;\n\n  cbOverflow.ItemIndex:= ord(xroPreserveHue);\n  UpdateRGBOverlow;\nend;\n\nprocedure TForm1.tbZChange(Sender: TObject);\nbegin\n  vsGradient.DiscardBitmap;\nend;\n\nprocedure TForm1.cbColorspaceChange(Sender: TObject);\nbegin\n  UpdateSelectedColorspace;\nend;\n\nprocedure TForm1.cbFluorescentClick(Sender: TObject);\nbegin\n  vsGradient.DiscardBitmap;\nend;\n\nprocedure TForm1.cbOverflowChange(Sender: TObject);\nbegin\n  vsGradient.DiscardBitmap;\n  vsHorseshoe.DiscardBitmap;\n  UpdateRGBOverlow;\nend;\n\nprocedure TForm1.cbReferenceWhiteChange(Sender: TObject);\nbegin\n  UpdateReferenceWhiteFromCombo;\nend;\n\nprocedure TForm1.cbXAxisChange(Sender: TObject);\nbegin\n  UpdateSelectedAxis;\nend;\n\nprocedure TForm1.cbYAxisChange(Sender: TObject);\nbegin\n  UpdateSelectedAxis;\nend;\n\nprocedure TForm1.vsGradientRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  colorspace: TColorspaceAny;\n  rowData, p: PByte;\n  valueSize, rowDataSize, y, x: integer;\n  idxAlpha, idxChX, idxChY, idxZ: integer;\n  maxAlpha, zValue, minChX, minChY, maxChX, maxChY, valX, valXStep, valY: single;\n  s: string;\n  temp: TBGRABitmap;\n  xyzaBuf: array of TXYZA;\nbegin\n  colorspace := SelectedColorspace;\n  valueSize := colorspace.GetSize;\n  rowDataSize := Bitmap.Width * valueSize;\n  getmem(rowData, rowDataSize);\n  fillchar(rowData^, rowDataSize, 0);\n\n  idxAlpha := colorspace.IndexOfAlphaChannel;\n  if idxAlpha <> -1 then\n  begin\n    maxAlpha := colorspace.GetMaxValue(idxAlpha);\n    p := rowData;\n    for x := 0 to Bitmap.Width-1 do\n    begin\n      colorspace.SetChannel(p, idxAlpha, maxAlpha);\n      inc(p, valueSize);\n    end;\n  end;\n\n  idxZ := colorspace.IndexOfChannel(ZName);\n  if idxZ <> -1 then\n  begin\n    zValue := tbZ.Position/ZFactor;\n    p := rowData;\n    for x := 0 to Bitmap.Width-1 do\n    begin\n      colorspace.SetChannel(p, idxZ, zValue);\n      inc(p, valueSize);\n    end;\n  end;\n\n  idxZ := colorspace.IndexOfChannel(Z2Name);\n  if idxZ <> -1 then\n  begin\n    zValue := tbZ2.Position/Z2Factor;\n    p := rowData;\n    for x := 0 to Bitmap.Width-1 do\n    begin\n      colorspace.SetChannel(p, idxZ, zValue);\n      inc(p, valueSize);\n    end;\n  end;\n\n  idxChX := cbXAxis.ItemIndex;\n  minChX := colorspace.GetMinValue(idxChX);\n  maxChX := colorspace.GetMaxValue(idxChX);\n  idxChY := cbYAxis.ItemIndex;\n  if idxChY = -1 then\n  begin\n    minChY := 0;\n    maxChY := 1;\n  end else\n  begin\n    minChY := colorspace.GetMinValue(idxChY);\n    maxChY := colorspace.GetMaxValue(idxChY);\n  end;\n\n  WriteStr(s, minChY:0:2, '\\', minChX:0:2);\n  lblMin.Caption := s;\n  if maxChX > 250 then\n    WriteStr(s, maxChX:0:0)\n  else\n    WriteStr(s, maxChX:0:2);\n  lblMaxX.Caption := s;\n  if maxChY > 250 then\n    WriteStr(s, maxChY:0:0)\n  else\n    WriteStr(s, maxChY:0:2);\n  lblMaxY.Caption := s;\n\n  temp := TBGRABitmap.Create(Bitmap.Width,Bitmap.Height);\n  for y := 0 to Bitmap.Height-1 do\n  begin\n    valY := (1-y/(Bitmap.Height-1))*(maxChY-minChY) + minChY;\n    p := rowData;\n    for x := 0 to Bitmap.Width-1 do\n    begin\n      colorspace.SetChannel(p, idxChY, valY);\n      inc(p, valueSize);\n    end;\n\n    valX := minChX;\n    valXStep := 1/(Bitmap.Width-1)*(maxChX-minChX);\n    p := rowData;\n    for x := 0 to Bitmap.Width-1 do\n    begin\n      colorspace.SetChannel(p, idxChX, valX);\n      IncF(valX, valXStep);\n      if valX>maxChX then valX := maxChX;\n      inc(p, valueSize);\n    end;\n\n    if (cfHasImaginaryColors in colorspace.GetFlags) and (XYZToRGBOverflowMin <> xroClipToTarget) then\n    begin\n      setlength(xyzaBuf, Bitmap.Width);\n      colorspace.Convert(rowData^, xyzaBuf[0], TXYZAColorspace, Bitmap.Width);\n      if cbFluorescent.Checked then\n      begin\n        for x := 0 to Bitmap.Width-1 do\n        begin\n          if not IsRealColor(xyzaBuf[x]) then\n            xyzaBuf[x] := XYZATransparent;\n        end;\n      end else\n      begin\n        for x := 0 to Bitmap.Width-1 do\n        begin\n          if not IsOptimalReflect(xyzaBuf[x]) then\n            xyzaBuf[x] := XYZATransparent;\n        end;\n      end;\n      TXYZAColorspace.Convert(xyzaBuf[0], temp.ScanLine[y]^, TBGRAPixelColorspace, Bitmap.Width, @ReferenceWhite2D65);\n    end else\n    if (not cbFluorescent.Checked) and ((cfHasImaginaryColors in colorspace.GetFlags) or (colorspace = TAdobeRGBAColorspace)) then\n    begin\n      setlength(xyzaBuf, Bitmap.Width);\n      colorspace.Convert(rowData^, xyzaBuf[0], TXYZAColorspace, Bitmap.Width);\n      for x := 0 to Bitmap.Width-1 do\n      begin\n        if not IsOptimalReflect(xyzaBuf[x]) then\n          xyzaBuf[x] := XYZATransparent;\n      end;\n      TXYZAColorspace.Convert(xyzaBuf[0], temp.ScanLine[y]^, TBGRAPixelColorspace, Bitmap.Width);\n    end else\n      colorspace.Convert(rowData^, temp.ScanLine[y]^, TBGRAPixelColorspace, Bitmap.Width);\n  end;\n  Bitmap.DrawCheckers(Bitmap.ClipRect, CSSGray, CSSSilver);\n  Bitmap.PutImage(0,0, temp, dmDrawWithTransparency);\n  temp.Free;\n\n  freemem(rowData, rowDataSize);\nend;\n\nvar i,j,k,l,m,jMod: integer;\n  xyz, xyzMax, xyzMain: TXYZA;\n  spectralLocusNormalizedSum: array[low(SpectralLocus)..high(SpectralLocus)] of TXYZA;\n\ninitialization\n\n  //writeln('Computing reflective color bounds...');\n  for i := 0 to OptimalReflectArraySize do\n    for j := 0 to OptimalReflectArraySize do\n      OptimalReflectXYZ[i,j].min := EmptySingle;\n  xyzMax.X := 0;\n  xyzMax.Y := 0;\n  xyzMax.Z := 0;\n  for i := 0 to high(SpectralLocus) do\n  begin\n    IncF(xyzMax.X, SpectralLocus[i].X);\n    IncF(xyzMax.Y, SpectralLocus[i].Y);\n    IncF(xyzMax.Z, SpectralLocus[i].Z);\n  end;\n  for i := 0 to high(SpectralLocus) do\n    spectralLocusNormalizedSum[i] := TXYZA.New(SpectralLocus[i].X/xyzMax.X/OptimalReflectBorderStep,\n      SpectralLocus[i].Y/xyzMax.Y/OptimalReflectBorderStep,\n      SpectralLocus[i].Z/xyzMax.Z/OptimalReflectBorderStep);\n  {optimalXYZMin := CSSSilver;\n  optimalXYZMax := CSSSilver;}\n  {labMin := CSSSilver;\n  labMax := CSSSilver;\n  lchMin := CSSSilver;\n  lchMax := CSSSilver;}\n  AddOptimalReflect(BGRABlack);\n\n  for i := 0 to high(SpectralLocus) do\n  begin\n    xyzMain.X := 0;\n    xyzMain.Y := 0;\n    xyzMain.Z := 0;\n    jMod := i;\n    for k := 1 to length(SpectralLocus) do\n    begin\n      if k = 1 then\n      begin\n        xyz := xyzMain;\n        for l := 1 to OptimalReflectBorderStep*8 do\n        begin\n          with spectralLocusNormalizedSum[i] do\n          begin\n            IncF(xyz.X, X*0.125);\n            IncF(xyz.Y, Y*0.125);\n            IncF(xyz.Z, Z*0.125);\n          end;\n          AddOptimalReflect(xyz);\n        end;\n      end else\n      for l := 1 to OptimalReflectBorderStep do\n      begin\n        xyz := xyzMain;\n        with spectralLocusNormalizedSum[i] do\n        begin\n          IncF(xyz.X, l*X);\n          IncF(xyz.Y, l*Y);\n          IncF(xyz.Z, l*Z);\n        end;\n        for m := 1 to OptimalReflectBorderStep do\n        begin\n          with spectralLocusNormalizedSum[jMod] do\n          begin\n            IncF(xyz.X, X);\n            IncF(xyz.Y, Y);\n            IncF(xyz.Z, Z);\n          end;\n          AddOptimalReflect(xyz);\n        end;\n      end;\n\n      if k >= 2 then\n      begin\n        with spectralLocusNormalizedSum[jMod] do\n        begin\n          IncF(xyzMain.X, X*OptimalReflectBorderStep);\n          IncF(xyzMain.Y, Y*OptimalReflectBorderStep);\n          IncF(xyzMain.Z, Z*OptimalReflectBorderStep);\n        end;\n      end;\n      inc(jMod);\n      if jMod = length(SpectralLocus) then jMod := 0;\n    end;\n  end;\n\n  //writeln('xyz min ',optimalXYZMin.x,', ',optimalXYZMin.y,', ',optimalXYZMin.z);\n  //writeln('xyz max ',optimalXYZMax.x,', ',optimalXYZMax.y,', ',optimalXYZMax.z);\n  {writeln('Lab min ',labMin.L,', ',labMin.a,', ',labMin.b);\n  writeln('Lab max ',labMax.L,', ',labMax.a,', ',labMax.b);\n  writeln('LCh min ',lChMin.L,', ',lChMin.C,', ',lChMin.h);\n  writeln('LCh max ',lChMax.L,', ',lChMax.C,', ',lChMax.h);}\nend.\n\n"
  },
  {
    "path": "test/createbitmap/createbitmap.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"createbitmap\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"LCL\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"createbitmap.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"FMain\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"createbitmap\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/createbitmap/createbitmap.lpr",
    "content": "program createbitmap;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TFMain, FMain);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/createbitmap/umain.lfm",
    "content": "object FMain: TFMain\n  Left = 454\n  Height = 289\n  Top = 226\n  Width = 430\n  Caption = 'Test CreateBitmap'\n  OnPaint = FormPaint\n  LCLVersion = '1.6.0.4'\nend\n"
  },
  {
    "path": "test/createbitmap/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, LCLType;\n\ntype\n\n  { TFMain }\n\n  TFMain = class(TForm)\n    procedure FormPaint(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n  end;\n\nvar\n  FMain: TFMain;\n\nimplementation\n\nuses GraphType, LCLIntf;\n\n{$R *.lfm}\n\n{ TFMain }\n\nprocedure TFMain.FormPaint(Sender: TObject);\n\n  procedure DrawTestBitmap(Left,Top,Right,Bottom: integer; AName: string);\n  var\n    bmp: TBitmap;\n    imgWidth,imgHeight, ty: integer;\n    RawImage: TRawImage;\n    BitmapHandle, MaskHandle: HBitmap;\n    p: pbyte;\n    cx,cy,x,y: integer;\n    RedOfs,GreenOfs,BlueOfs,AlphaOfs: integer;\n  begin\n    ty := (Bottom-Top) div 8;\n    Canvas.Font.Height := ty*7 div 10;\n    Canvas.Brush.Style := bsClear;\n    Canvas.TextOut(Left,Top,AName);\n\n    RedOfs := pos('R',AName)-1;\n    GreenOfs := pos('G',AName)-1;\n    BlueOfs := pos('B',AName)-1;\n    AlphaOfs := pos('A',AName)-1;\n\n    imgWidth := Right-Left;\n    imgHeight := Bottom-(Top+ty);\n    bmp := TBitmap.Create;\n    RawImage.Init;\n    RawImage.Description.Init_BPP32_B8G8R8A8_BIO_TTB(imgWidth, imgHeight);\n    RawImage.Description.RedShift := RedOfs*8;\n    RawImage.Description.GreenShift := GreenOfs*8;\n    RawImage.Description.BlueShift := BlueOfs*8;\n    if AlphaOfs >= 0 then\n      RawImage.Description.AlphaShift := AlphaOfs*8\n    else\n    begin\n      RawImage.Description.Depth := 24;\n      RawImage.Description.AlphaShift := 0;\n      RawImage.Description.AlphaPrec := 0;\n    end;\n    RawImage.CreateData(true);\n    for y := 0 to imgHeight-1 do\n    begin\n      cy := y*9 div imgHeight;\n      p := RawImage.GetLineStart(y);\n      for x := 0 to imgWidth-1 do\n      begin\n        cx := x*9 div imgWidth;\n        (p+RedOfs)^ := (cx mod 3)*255 div 2;\n        (p+GreenOfs)^ := (cx div 3)*255 div 2;\n        (p+BlueOfs)^ := (cy mod 3)*255 div 2;\n        if AlphaOfs >= 0 then (p+AlphaOfs)^ := (cy div 3)*255 div 2;\n        inc(p,4);\n      end;\n    end;\n    if RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False) then\n    begin\n      bmp := TBitmap.Create;\n      bmp.Handle := BitmapHandle;\n      bmp.MaskHandle := MaskHandle;\n      Canvas.Draw(Left,Top+ty,bmp);\n      bmp.Free;\n    end else\n      Canvas.TextOut(Left,Top+ty,'Unable to create');\n    RawImage.FreeData;\n  end;\n\nbegin\n  DrawTestBitmap(0,0,ClientWidth div 4,ClientHeight div 2,'RGBA');\n  DrawTestBitmap(ClientWidth div 4,0,ClientWidth div 2,ClientHeight div 2,'BGRA');\n  DrawTestBitmap(0,ClientHeight div 2,ClientWidth div 4,ClientHeight,'ARGB');\n  DrawTestBitmap(ClientWidth div 4,ClientHeight div 2,ClientWidth div 2,ClientHeight,'ABGR');\n  DrawTestBitmap(ClientWidth div 2,0,3*ClientWidth div 4,ClientHeight div 2,'RGB.');\n  DrawTestBitmap(3*ClientWidth div 4,0,ClientWidth,ClientHeight div 2,'BGR.');\n  DrawTestBitmap(ClientWidth div 2,ClientHeight div 2,3*ClientWidth div 4,ClientHeight,'.RGB');\n  DrawTestBitmap(3*ClientWidth div 4,ClientHeight div 2,ClientWidth,ClientHeight,'.BGR');\nend;\n\nend.\n\n"
  },
  {
    "path": "test/gammafactor/gammafactor.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<CONFIG>\r\n  <ProjectOptions>\r\n    <Version Value=\"10\"/>\r\n    <PathDelim Value=\"\\\"/>\r\n    <General>\r\n      <SessionStorage Value=\"InProjectDir\"/>\r\n      <MainUnit Value=\"0\"/>\r\n      <Title Value=\"gammafactor\"/>\r\n      <ResourceType Value=\"res\"/>\r\n      <UseXPManifest Value=\"True\"/>\r\n      <Icon Value=\"0\"/>\r\n    </General>\r\n    <i18n>\r\n      <EnableI18N LFM=\"False\"/>\r\n    </i18n>\r\n    <BuildModes Count=\"1\">\r\n      <Item1 Name=\"Default\" Default=\"True\"/>\r\n    </BuildModes>\r\n    <PublishOptions>\r\n      <Version Value=\"2\"/>\r\n    </PublishOptions>\r\n    <RunParams>\r\n      <local>\r\n        <FormatVersion Value=\"1\"/>\r\n      </local>\r\n    </RunParams>\r\n    <RequiredPackages Count=\"3\">\r\n      <Item1>\r\n        <PackageName Value=\"bgracontrols\"/>\r\n      </Item1>\r\n      <Item2>\r\n        <PackageName Value=\"BGRABitmapPack\"/>\r\n      </Item2>\r\n      <Item3>\r\n        <PackageName Value=\"LCL\"/>\r\n      </Item3>\r\n    </RequiredPackages>\r\n    <Units Count=\"2\">\r\n      <Unit0>\r\n        <Filename Value=\"gammafactor.lpr\"/>\r\n        <IsPartOfProject Value=\"True\"/>\r\n      </Unit0>\r\n      <Unit1>\r\n        <Filename Value=\"umain.pas\"/>\r\n        <IsPartOfProject Value=\"True\"/>\r\n        <ComponentName Value=\"Form1\"/>\r\n        <HasResources Value=\"True\"/>\r\n        <ResourceBaseClass Value=\"Form\"/>\r\n      </Unit1>\r\n    </Units>\r\n  </ProjectOptions>\r\n  <CompilerOptions>\r\n    <Version Value=\"11\"/>\r\n    <PathDelim Value=\"\\\"/>\r\n    <Target>\r\n      <Filename Value=\"gammafactor\"/>\r\n    </Target>\r\n    <SearchPaths>\r\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\r\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\r\n    </SearchPaths>\r\n    <Linking>\r\n      <Options>\r\n        <Win32>\r\n          <GraphicApplication Value=\"True\"/>\r\n        </Win32>\r\n      </Options>\r\n    </Linking>\r\n  </CompilerOptions>\r\n  <Debugging>\r\n    <Exceptions Count=\"3\">\r\n      <Item1>\r\n        <Name Value=\"EAbort\"/>\r\n      </Item1>\r\n      <Item2>\r\n        <Name Value=\"ECodetoolError\"/>\r\n      </Item2>\r\n      <Item3>\r\n        <Name Value=\"EFOpenError\"/>\r\n      </Item3>\r\n    </Exceptions>\r\n  </Debugging>\r\n</CONFIG>\r\n"
  },
  {
    "path": "test/gammafactor/gammafactor.lpr",
    "content": "program gammafactor;\r\n\r\n{$mode objfpc}{$H+}\r\n\r\nuses\r\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\r\n  cthreads,\r\n  {$ENDIF}{$ENDIF}\r\n  Interfaces, // this includes the LCL widgetset\r\n  Forms, umain\r\n  { you can add units after this };\r\n\r\n{$R *.res}\r\n\r\nbegin\r\n  RequireDerivedFormResource:=True;\r\n  Application.Initialize;\r\n  Application.CreateForm(TForm1, Form1);\r\n  Application.Run;\r\nend.\r\n\r\n"
  },
  {
    "path": "test/gammafactor/umain.lfm",
    "content": "object Form1: TForm1\r\n  Left = 294\r\n  Height = 304\r\n  Top = 176\r\n  Width = 423\r\n  Caption = 'Gamma factor'\r\n  ClientHeight = 304\r\n  ClientWidth = 423\r\n  OnCreate = FormCreate\r\n  Position = poDefault\r\n  LCLVersion = '1.8.2.0'\r\n  WindowState = wsMaximized\r\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\r\n    Left = 0\r\n    Height = 160\r\n    Top = 144\r\n    Width = 423\r\n    OnRedraw = BGRAVirtualScreen1Redraw\r\n    Align = alClient\r\n    Alignment = taLeftJustify\r\n    Color = clWhite\r\n    ParentColor = False\r\n    TabOrder = 0\r\n  end\r\n  object Panel1: TPanel\r\n    Left = 0\r\n    Height = 144\r\n    Top = 0\r\n    Width = 423\r\n    Align = alTop\r\n    ClientHeight = 144\r\n    ClientWidth = 423\r\n    TabOrder = 1\r\n    object TrackBar_Gamma: TTrackBar\r\n      Left = 16\r\n      Height = 37\r\n      Top = 32\r\n      Width = 392\r\n      Frequency = 2\r\n      Max = 60\r\n      Min = 20\r\n      OnChange = TrackBar_GammaChange\r\n      Position = 20\r\n      Anchors = [akTop, akLeft, akRight]\r\n      TabOrder = 0\r\n    end\r\n    object Label1: TLabel\r\n      Left = 14\r\n      Height = 17\r\n      Top = 8\r\n      Width = 84\r\n      Caption = 'Gamma factor:'\r\n      ParentColor = False\r\n    end\r\n    object Label_GammaValue: TLabel\r\n      Left = 104\r\n      Height = 17\r\n      Top = 8\r\n      Width = 5\r\n      Caption = '?'\r\n      ParentColor = False\r\n    end\r\n    object Label2: TLabel\r\n      Left = 16\r\n      Height = 57\r\n      Top = 80\r\n      Width = 392\r\n      Anchors = [akTop, akLeft, akRight]\r\n      AutoSize = False\r\n      Caption = 'With the right gamma value, the lightness should be uniform. For LCD screen this can be impossible. In that case, the lightness should be equal in the middle of the screen.'\r\n      ParentColor = False\r\n      WordWrap = True\r\n    end\r\n  end\r\nend\r\n"
  },
  {
    "path": "test/gammafactor/umain.pas",
    "content": "unit umain;\r\n\r\n{$mode objfpc}{$H+}\r\n\r\ninterface\r\n\r\nuses\r\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\r\n  ComCtrls, StdCtrls, BGRAVirtualScreen, BGRABitmap, BGRABitmapTypes;\r\n\r\ntype\r\n\r\n  { TForm1 }\r\n\r\n  TForm1 = class(TForm)\r\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\r\n    Label1: TLabel;\r\n    Label2: TLabel;\r\n    Label_GammaValue: TLabel;\r\n    Panel1: TPanel;\r\n    TrackBar_Gamma: TTrackBar;\r\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\r\n    procedure FormCreate(Sender: TObject);\r\n    procedure TrackBar_GammaChange(Sender: TObject);\r\n  private\r\n    { private declarations }\r\n    FInitialised: boolean;\r\n  public\r\n    { public declarations }\r\n    procedure UpdateLabelGamma;\r\n  end;\r\n\r\nvar\r\n  Form1: TForm1;\r\n\r\nimplementation\r\n\r\n{$R *.lfm}\r\n\r\n{ TForm1 }\r\n\r\nprocedure TForm1.FormCreate(Sender: TObject);\r\nbegin\r\n  FInitialised:= false;\r\n  UpdateLabelGamma;\r\n  TrackBar_Gamma.Position := round(BGRAGetGamma*20);\r\n  FInitialised:= true;\r\n  BGRAVirtualScreen1.BitmapAutoScale:= false;\r\nend;\r\n\r\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\r\nvar c: TBGRAPixel;\r\n  pattern: TBGRABitmap;\r\n  i, stripSize: Integer;\r\nbegin\r\n  c := clWhite;\r\n  c.Lightness := 32768;\r\n  pattern := TBGRABitmap.Create(2,2);\r\n  stripSize := round(20 * PixelsPerInch * GetCanvasScaleFactor / 96);\r\n  pattern.SetPixel(0,0,BGRABlack);\r\n  pattern.SetPixel(1,0,BGRAWhite);\r\n  pattern.SetPixel(0,1,BGRAWhite);\r\n  pattern.SetPixel(1,1,BGRABlack);\r\n  for i := 0 to Bitmap.Width div stripSize do\r\n  begin\r\n    Bitmap.FillRect(stripSize*i,0,stripSize*i+ stripSize div 2,Bitmap.Height,c,dmSet);\r\n    Bitmap.FillRect(stripSize*i+ stripSize div 2,0,stripSize*(i+1),Bitmap.Height,pattern,dmSet);\r\n  end;\r\n  pattern.Free;\r\nend;\r\n\r\nprocedure TForm1.TrackBar_GammaChange(Sender: TObject);\r\nbegin\r\n  if FInitialised then\r\n  begin\r\n    BGRASetGamma(TrackBar_Gamma.Position/20);\r\n    UpdateLabelGamma;\r\n    BGRAVirtualScreen1.RedrawBitmap;\r\n  end;\r\nend;\r\n\r\nprocedure TForm1.UpdateLabelGamma;\r\nbegin\r\n  Label_GammaValue.Caption:= FloatToStrF(BGRAGetGamma, ffFixed, 2,2);\r\nend;\r\n\r\nend.\r\n\r\n"
  },
  {
    "path": "test/layeroriginal/layeroriginal.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"layeroriginal\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"3\">\n      <Item1 Name=\"Debug\" Default=\"True\"/>\n      <Item2 Name=\"Release\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"layeroriginal\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <CodeGeneration>\n            <SmartLinkUnit Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"3\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <GenerateDebugInfo Value=\"False\"/>\n            </Debugging>\n            <LinkSmart Value=\"True\"/>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item2>\n      <Item3 Name=\"Release macOS\">\n        <MacroValues Count=\"1\">\n          <Macro1 Name=\"LCLWidgetType\" Value=\"cocoa\"/>\n        </MacroValues>\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"layeroriginal\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <CodeGeneration>\n            <SmartLinkUnit Value=\"True\"/>\n            <TargetCPU Value=\"x86_64\"/>\n            <TargetOS Value=\"darwin\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"3\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <GenerateDebugInfo Value=\"False\"/>\n            </Debugging>\n            <LinkSmart Value=\"True\"/>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item3>\n      <SharedMatrixOptions Count=\"1\">\n        <Item1 ID=\"024990494567\" Modes=\"Release macOS\" Type=\"IDEMacro\" MacroName=\"LCLWidgetType\" Value=\"cocoa\"/>\n      </SharedMatrixOptions>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"layeroriginal.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"layeroriginal\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <IncludeAssertionCode Value=\"True\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <Checks>\n        <IOChecks Value=\"True\"/>\n        <RangeChecks Value=\"True\"/>\n        <OverflowChecks Value=\"True\"/>\n        <StackChecks Value=\"True\"/>\n      </Checks>\n      <VerifyObjMethodCallValidity Value=\"True\"/>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf2Set\"/>\n        <UseHeaptrc Value=\"True\"/>\n        <TrashVariables Value=\"True\"/>\n        <UseExternalDbgSyms Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/layeroriginal/layeroriginal.lpr",
    "content": "program layeroriginal;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1;\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/layeroriginal/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 367\n  Height = 577\n  Top = 121\n  Width = 745\n  Caption = 'Test layer original'\n  ClientHeight = 577\n  ClientWidth = 745\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '2.0.0.4'\n  object BCFlipX: TBCButton\n    Left = 88\n    Height = 33\n    Top = 8\n    Width = 48\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'FlipX'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCFlipXClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\n    Left = 8\n    Height = 521\n    Top = 48\n    Width = 729\n    OnRedraw = BGRAVirtualScreen1Redraw\n    Alignment = taLeftJustify\n    Anchors = [akTop, akLeft, akRight, akBottom]\n    Color = clWhite\n    ParentColor = False\n    TabOrder = 0\n    OnMouseDown = BGRAVirtualScreen1MouseDown\n    OnMouseMove = BGRAVirtualScreen1MouseMove\n    OnMouseUp = BGRAVirtualScreen1MouseUp\n  end\n  object BCFlipY: TBCButton\n    Left = 136\n    Height = 33\n    Top = 8\n    Width = 48\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'FlipY'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCFlipYClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BCRotCW: TBCButton\n    Left = 184\n    Height = 33\n    Top = 8\n    Width = 56\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'RotCW'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCRotCWClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BCRotCCW: TBCButton\n    Left = 240\n    Height = 33\n    Top = 8\n    Width = 64\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'RotCCW'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCRotCCWClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BCColor1: TBCButton\n    Left = 368\n    Height = 33\n    Top = 8\n    Width = 56\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'Color1'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCColor1Click\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BCColor2: TBCButton\n    Left = 424\n    Height = 33\n    Top = 8\n    Width = 56\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'Color2'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCColor2Click\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object cbInterp: TComboBox\n    Left = 592\n    Height = 27\n    Top = 8\n    Width = 92\n    ItemHeight = 0\n    Items.Strings = (\n      'sRGB'\n      'RGB'\n      'HSL+'\n      'HSL-'\n      'GSB+'\n      'GSB-'\n    )\n    OnChange = cbInterpChange\n    Style = csDropDownList\n    TabOrder = 1\n  end\n  object cbRepeat: TComboBox\n    Left = 688\n    Height = 27\n    Top = 8\n    Width = 100\n    ItemHeight = 0\n    Items.Strings = (\n      'Pad'\n      'Repeat'\n      'Reflect'\n      'Sine'\n    )\n    OnChange = cbRepeatChange\n    Style = csDropDownList\n    TabOrder = 2\n  end\n  object cbGradientType: TComboBox\n    Left = 488\n    Height = 27\n    Top = 8\n    Width = 100\n    ItemHeight = 0\n    Items.Strings = (\n      'Linear'\n      'Reflected'\n      'Diamond'\n      'Radial'\n      'Angular'\n    )\n    OnChange = cbGradientTypeChange\n    Style = csDropDownList\n    TabOrder = 3\n  end\n  object BCSave: TBCButton\n    Left = 8\n    Height = 33\n    Top = 8\n    Width = 64\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'Save...'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCSaveClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object BCRotUD: TBCButton\n    Left = 304\n    Height = 33\n    Top = 8\n    Width = 56\n    StateClicked.Background.Color = clBlack\n    StateClicked.Background.ColorOpacity = 255\n    StateClicked.Background.Gradient1.StartColor = 6052956\n    StateClicked.Background.Gradient1.StartColorOpacity = 255\n    StateClicked.Background.Gradient1.DrawMode = dmSet\n    StateClicked.Background.Gradient1.EndColor = 6052956\n    StateClicked.Background.Gradient1.EndColorOpacity = 255\n    StateClicked.Background.Gradient1.ColorCorrection = True\n    StateClicked.Background.Gradient1.GradientType = gtLinear\n    StateClicked.Background.Gradient1.Point1XPercent = 0\n    StateClicked.Background.Gradient1.Point1YPercent = 0\n    StateClicked.Background.Gradient1.Point2XPercent = 0\n    StateClicked.Background.Gradient1.Point2YPercent = 100\n    StateClicked.Background.Gradient1.Sinus = False\n    StateClicked.Background.Gradient2.StartColor = 5987163\n    StateClicked.Background.Gradient2.StartColorOpacity = 255\n    StateClicked.Background.Gradient2.DrawMode = dmSet\n    StateClicked.Background.Gradient2.EndColor = 4079166\n    StateClicked.Background.Gradient2.EndColorOpacity = 255\n    StateClicked.Background.Gradient2.ColorCorrection = True\n    StateClicked.Background.Gradient2.GradientType = gtLinear\n    StateClicked.Background.Gradient2.Point1XPercent = 0\n    StateClicked.Background.Gradient2.Point1YPercent = 0\n    StateClicked.Background.Gradient2.Point2XPercent = 0\n    StateClicked.Background.Gradient2.Point2YPercent = 100\n    StateClicked.Background.Gradient2.Sinus = False\n    StateClicked.Background.Gradient1EndPercent = 35\n    StateClicked.Background.Style = bbsGradient\n    StateClicked.Border.Color = 1579032\n    StateClicked.Border.ColorOpacity = 255\n    StateClicked.Border.LightColor = clBlack\n    StateClicked.Border.LightOpacity = 100\n    StateClicked.Border.LightWidth = 1\n    StateClicked.Border.Style = bboSolid\n    StateClicked.Border.Width = 1\n    StateClicked.FontEx.Color = clWhite\n    StateClicked.FontEx.EndEllipsis = False\n    StateClicked.FontEx.FontQuality = fqSystemClearType\n    StateClicked.FontEx.Height = 0\n    StateClicked.FontEx.SingleLine = True\n    StateClicked.FontEx.Shadow = True\n    StateClicked.FontEx.ShadowColor = clBlack\n    StateClicked.FontEx.ShadowColorOpacity = 255\n    StateClicked.FontEx.ShadowRadius = 2\n    StateClicked.FontEx.ShadowOffsetX = 1\n    StateClicked.FontEx.ShadowOffsetY = 1\n    StateClicked.FontEx.Style = []\n    StateClicked.FontEx.TextAlignment = bcaCenter\n    StateClicked.FontEx.WordBreak = False\n    StateHover.Background.Color = clBlack\n    StateHover.Background.ColorOpacity = 255\n    StateHover.Background.Gradient1.StartColor = 7763574\n    StateHover.Background.Gradient1.StartColorOpacity = 255\n    StateHover.Background.Gradient1.DrawMode = dmSet\n    StateHover.Background.Gradient1.EndColor = 7763574\n    StateHover.Background.Gradient1.EndColorOpacity = 255\n    StateHover.Background.Gradient1.ColorCorrection = True\n    StateHover.Background.Gradient1.GradientType = gtLinear\n    StateHover.Background.Gradient1.Point1XPercent = 0\n    StateHover.Background.Gradient1.Point1YPercent = 0\n    StateHover.Background.Gradient1.Point2XPercent = 0\n    StateHover.Background.Gradient1.Point2YPercent = 100\n    StateHover.Background.Gradient1.Sinus = False\n    StateHover.Background.Gradient2.StartColor = 7697781\n    StateHover.Background.Gradient2.StartColorOpacity = 255\n    StateHover.Background.Gradient2.DrawMode = dmSet\n    StateHover.Background.Gradient2.EndColor = 5329233\n    StateHover.Background.Gradient2.EndColorOpacity = 255\n    StateHover.Background.Gradient2.ColorCorrection = True\n    StateHover.Background.Gradient2.GradientType = gtLinear\n    StateHover.Background.Gradient2.Point1XPercent = 0\n    StateHover.Background.Gradient2.Point1YPercent = 0\n    StateHover.Background.Gradient2.Point2XPercent = 0\n    StateHover.Background.Gradient2.Point2YPercent = 100\n    StateHover.Background.Gradient2.Sinus = False\n    StateHover.Background.Gradient1EndPercent = 35\n    StateHover.Background.Style = bbsGradient\n    StateHover.Border.Color = 1579032\n    StateHover.Border.ColorOpacity = 255\n    StateHover.Border.LightColor = clWhite\n    StateHover.Border.LightOpacity = 100\n    StateHover.Border.LightWidth = 1\n    StateHover.Border.Style = bboSolid\n    StateHover.Border.Width = 1\n    StateHover.FontEx.Color = clWhite\n    StateHover.FontEx.EndEllipsis = False\n    StateHover.FontEx.FontQuality = fqSystemClearType\n    StateHover.FontEx.Height = 0\n    StateHover.FontEx.SingleLine = True\n    StateHover.FontEx.Shadow = True\n    StateHover.FontEx.ShadowColor = clBlack\n    StateHover.FontEx.ShadowColorOpacity = 255\n    StateHover.FontEx.ShadowRadius = 2\n    StateHover.FontEx.ShadowOffsetX = 1\n    StateHover.FontEx.ShadowOffsetY = 1\n    StateHover.FontEx.Style = []\n    StateHover.FontEx.TextAlignment = bcaCenter\n    StateHover.FontEx.WordBreak = False\n    StateNormal.Background.Color = clBlack\n    StateNormal.Background.ColorOpacity = 255\n    StateNormal.Background.Gradient1.StartColor = 6842472\n    StateNormal.Background.Gradient1.StartColorOpacity = 255\n    StateNormal.Background.Gradient1.DrawMode = dmSet\n    StateNormal.Background.Gradient1.EndColor = 6842472\n    StateNormal.Background.Gradient1.EndColorOpacity = 255\n    StateNormal.Background.Gradient1.ColorCorrection = True\n    StateNormal.Background.Gradient1.GradientType = gtLinear\n    StateNormal.Background.Gradient1.Point1XPercent = 0\n    StateNormal.Background.Gradient1.Point1YPercent = 0\n    StateNormal.Background.Gradient1.Point2XPercent = 0\n    StateNormal.Background.Gradient1.Point2YPercent = 100\n    StateNormal.Background.Gradient1.Sinus = False\n    StateNormal.Background.Gradient2.StartColor = 6776679\n    StateNormal.Background.Gradient2.StartColorOpacity = 255\n    StateNormal.Background.Gradient2.DrawMode = dmSet\n    StateNormal.Background.Gradient2.EndColor = 4671303\n    StateNormal.Background.Gradient2.EndColorOpacity = 255\n    StateNormal.Background.Gradient2.ColorCorrection = True\n    StateNormal.Background.Gradient2.GradientType = gtLinear\n    StateNormal.Background.Gradient2.Point1XPercent = 0\n    StateNormal.Background.Gradient2.Point1YPercent = 0\n    StateNormal.Background.Gradient2.Point2XPercent = 0\n    StateNormal.Background.Gradient2.Point2YPercent = 100\n    StateNormal.Background.Gradient2.Sinus = False\n    StateNormal.Background.Gradient1EndPercent = 35\n    StateNormal.Background.Style = bbsGradient\n    StateNormal.Border.Color = 1579032\n    StateNormal.Border.ColorOpacity = 255\n    StateNormal.Border.LightColor = clWhite\n    StateNormal.Border.LightOpacity = 100\n    StateNormal.Border.LightWidth = 1\n    StateNormal.Border.Style = bboSolid\n    StateNormal.Border.Width = 1\n    StateNormal.FontEx.Color = clWhite\n    StateNormal.FontEx.EndEllipsis = False\n    StateNormal.FontEx.FontQuality = fqSystemClearType\n    StateNormal.FontEx.Height = 0\n    StateNormal.FontEx.SingleLine = True\n    StateNormal.FontEx.Shadow = True\n    StateNormal.FontEx.ShadowColor = clBlack\n    StateNormal.FontEx.ShadowColorOpacity = 255\n    StateNormal.FontEx.ShadowRadius = 2\n    StateNormal.FontEx.ShadowOffsetX = 1\n    StateNormal.FontEx.ShadowOffsetY = 1\n    StateNormal.FontEx.Style = []\n    StateNormal.FontEx.TextAlignment = bcaCenter\n    StateNormal.FontEx.WordBreak = False\n    Caption = 'RotUD'\n    Color = clNone\n    DropDownWidth = 16\n    DropDownArrowSize = 8\n    GlobalOpacity = 255\n    InnerMargin = 0\n    OnClick = BCRotUDClick\n    ParentColor = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    RoundingDropDown.RoundX = 1\n    RoundingDropDown.RoundY = 1\n    RoundingDropDown.RoundOptions = [rrTopLeftSquare, rrTopRightSquare, rrBottomRightSquare, rrBottomLeftSquare]\n    TextApplyGlobalOpacity = False\n    MemoryUsage = bmuHigh\n  end\n  object ColorDialog1: TColorDialog\n    Color = clBlack\n    CustomColors.Strings = (\n      'ColorA=000000'\n      'ColorB=000080'\n      'ColorC=008000'\n      'ColorD=008080'\n      'ColorE=800000'\n      'ColorF=800080'\n      'ColorG=808000'\n      'ColorH=808080'\n      'ColorI=C0C0C0'\n      'ColorJ=0000FF'\n      'ColorK=00FF00'\n      'ColorL=00FFFF'\n      'ColorM=FF0000'\n      'ColorN=FF00FF'\n      'ColorO=FFFF00'\n      'ColorP=FFFFFF'\n      'ColorQ=C0DCC0'\n      'ColorR=F0CAA6'\n      'ColorS=F0FBFF'\n      'ColorT=A4A0A0'\n    )\n    left = 357\n    top = 264\n  end\n  object SaveDialog1: TSaveDialog\n    DefaultExt = '.lzp'\n    Filter = 'LazPaint file (*.lzp)|*.lzp'\n    left = 230\n    top = 264\n  end\nend\n"
  },
  {
    "path": "test/layeroriginal/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, BCButton, BGRAVirtualScreen, BGRALayers, BGRAStreamLayers,\n  BGRABitmap, BGRABitmapTypes, BGRALayerOriginal;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BCFlipX: TBCButton;\n    BCRotUD: TBCButton;\n    BCSave: TBCButton;\n    BCFlipY: TBCButton;\n    BCRotCW: TBCButton;\n    BCRotCCW: TBCButton;\n    BCColor1: TBCButton;\n    BCColor2: TBCButton;\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\n    ColorDialog1: TColorDialog;\n    cbInterp: TComboBox;\n    cbRepeat: TComboBox;\n    cbGradientType: TComboBox;\n    SaveDialog1: TSaveDialog;\n    procedure BCRotUDClick(Sender: TObject);\n    procedure BCSaveClick(Sender: TObject);\n    procedure BCFlipXClick(Sender: TObject);\n    procedure BCFlipYClick(Sender: TObject);\n    procedure BCRotCWClick(Sender: TObject);\n    procedure BCRotCCWClick(Sender: TObject);\n    procedure BCColor1Click(Sender: TObject);\n    procedure BCColor2Click(Sender: TObject);\n    procedure BGRAVirtualScreen1MouseDown(Sender: TObject;\n      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\n    procedure BGRAVirtualScreen1MouseMove(Sender: TObject; {%H-}Shift: TShiftState;\n      {%H-}X, {%H-}Y: Integer);\n    procedure BGRAVirtualScreen1MouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure cbGradientTypeChange(Sender: TObject);\n    procedure cbInterpChange(Sender: TObject);\n    procedure cbRepeatChange(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n  private\n    procedure OriginalChange(Sender: TObject; {%H-}AOriginal: TBGRALayerCustomOriginal;\n                var {%H-}ADiff: TBGRAOriginalDiff);\n    procedure SetVSCursor(ACursor: TOriginalEditorCursor);\n  public\n    FLayers: TBGRALayeredBitmap;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses BGRATransform, BGRASVGOriginal, BGRAGradientOriginal, BGRALazPaint;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.BCFlipXClick(Sender: TObject);\nbegin\n  FLayers.HorizontalFlip;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BCSaveClick(Sender: TObject);\nbegin\n  if SaveDialog1.Execute then\n  begin\n    RegisterLazPaintFormat;\n    try\n      FLayers.SaveToFile(SaveDialog1.FileName);\n    except\n      on ex:exception do\n        ShowMessage(ex.Message);\n    end;\n  end;\nend;\n\nprocedure TForm1.BCRotUDClick(Sender: TObject);\nbegin\n  FLayers.RotateUD;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BCFlipYClick(Sender: TObject);\nbegin\n  FLayers.VerticalFlip;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BCRotCWClick(Sender: TObject);\nbegin\n  FLayers.RotateCW;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BCRotCCWClick(Sender: TObject);\nbegin\n  FLayers.RotateCCW;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.BCColor1Click(Sender: TObject);\nvar\n  orig: TBGRALayerGradientOriginal;\nbegin\n  orig := FLayers.Original[0] as TBGRALayerGradientOriginal;\n  ColorDialog1.Color:= orig.StartColor;\n  if ColorDialog1.Execute then orig.StartColor := ColorToBGRA(ColorDialog1.Color);\nend;\n\nprocedure TForm1.BCColor2Click(Sender: TObject);\nvar\n  orig: TBGRALayerGradientOriginal;\nbegin\n  orig := FLayers.Original[0] as TBGRALayerGradientOriginal;\n  ColorDialog1.Color:= orig.EndColor;\n  if ColorDialog1.Execute then orig.EndColor := ColorToBGRA(ColorDialog1.Color);\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseDown(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nvar\n  newCursor: TOriginalEditorCursor;\nbegin\n  FLayers.MouseDown(Button=mbRight,Shift,X,Y,newCursor);\n  SetVSCursor(newCursor);\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseMove(Sender: TObject;\n  Shift: TShiftState; X, Y: Integer);\nvar\n  newCursor: TOriginalEditorCursor;\nbegin\n  FLayers.MouseMove(Shift,X,Y,newCursor);\n  SetVSCursor(newCursor);\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseUp(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nvar\n  newCursor: TOriginalEditorCursor;\nbegin\n  FLayers.MouseUp(Button=mbRight,Shift,X,Y,newCursor);\n  SetVSCursor(newCursor);\nend;\n\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nbegin\n  FLayers.Draw(Bitmap, 0,0);\n  FLayers.DrawEditor(Bitmap, 0, 0,0, 8);\nend;\n\nprocedure TForm1.cbGradientTypeChange(Sender: TObject);\nvar\n  orig: TBGRALayerGradientOriginal;\nbegin\n  orig := FLayers.Original[0] as TBGRALayerGradientOriginal;\n  orig.GradientType := TGradientType(cbGradientType.ItemIndex);\nend;\n\nprocedure TForm1.cbInterpChange(Sender: TObject);\nvar\n  orig: TBGRALayerGradientOriginal;\nbegin\n  orig := FLayers.Original[0] as TBGRALayerGradientOriginal;\n  orig.ColorInterpolation := TBGRAColorInterpolation(cbInterp.ItemIndex);\nend;\n\nprocedure TForm1.cbRepeatChange(Sender: TObject);\nvar\n  orig: TBGRALayerGradientOriginal;\nbegin\n  orig := FLayers.Original[0] as TBGRALayerGradientOriginal;\n  orig.Repetition := TBGRAGradientRepetition(cbRepeat.ItemIndex);\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar\n  grad: TBGRALayerGradientOriginal;\n  svg: TBGRALayerSVGOriginal;\n  img: TBGRALayerImageOriginal;\n  gradStream: TMemoryStream;\n  idxBike, idxImg: Integer;\nbegin\n  FLayers := TBGRALayeredBitmap.Create(640,480);\n  flayers.OnOriginalChange := @OriginalChange;\n\n  cbGradientType.ItemIndex:= 0;\n  cbInterp.ItemIndex := 0;\n  cbRepeat.ItemIndex := 0;\n\n  gradStream := TMemoryStream.Create;\n  grad := TBGRALayerGradientOriginal.Create;\n  grad.SetColors([CSSWhite, CSSSkyBlue, CSSOrange, CSSRed],\n                 [0, 0.2, 0.8, 1]);\n  grad.GradientType:= gtLinear;\n  grad.Origin := PointF(FLayers.Width/2,40);\n  grad.XAxis := grad.origin+PointF(0,400);\n  grad.SaveToStream(gradStream);    //save original definition\n  grad.Free;\n\n  grad := TBGRALayerGradientOriginal.Create;\n  gradStream.Position:= 0;\n  grad.LoadFromStream(gradStream); // load original definition\n  FLayers.AddLayerFromOwnedOriginal(grad);\n  gradStream.free;\n\n  svg := TBGRALayerSVGOriginal.Create;\n  svg.LoadFromFile(Application.Location + 'bicycling.svg');\n  idxBike := FLayers.AddLayerFromOwnedOriginal(svg);\n  FLayers.LayerOpacity[idxBike] := 192;\n  FLayers.LayerOriginalMatrix[idxBike] := AffineMatrixTranslation((FLayers.Width-svg.Width*0.5)/2,(FLayers.Height-svg.Height*0.5)/2)*\n                                          AffineMatrixScale(0.5,0.5)*\n                                          AffineMatrixTranslation(svg.Width/2,svg.Height/2)*\n                                          AffineMatrixRotationDeg(30)*\n                                          AffineMatrixTranslation(-svg.Width/2,-svg.Height/2);\n  FLayers.RenderLayerFromOriginal(idxBike);\n\n  img := TBGRALayerImageOriginal.Create;\n  img.LoadFromFile(Application.Location + 'lazarus.jpg');\n  idxImg := FLayers.AddLayerFromOwnedOriginal(img);\n  FLayers.LayerOriginalMatrix[idxImg] := AffineMatrixTranslation(0, FLayers.Height - img.Height);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  FLayers.Free;\nend;\n\nprocedure TForm1.OriginalChange(Sender: TObject;\n  AOriginal: TBGRALayerCustomOriginal;\n  var ADiff: TBGRAOriginalDiff);\nbegin\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.SetVSCursor(ACursor: TOriginalEditorCursor);\nbegin\n  case ACursor of\n  oecDefault: BGRAVirtualScreen1.Cursor := crDefault;\n  oecMove: BGRAVirtualScreen1.Cursor := crSize;\n  oecMoveE: BGRAVirtualScreen1.Cursor := crSizeE;\n  oecMoveW: BGRAVirtualScreen1.Cursor := crSizeW;\n  oecMoveN: BGRAVirtualScreen1.Cursor := crSizeN;\n  oecMoveS: BGRAVirtualScreen1.Cursor := crSizeS;\n  oecMoveNE: BGRAVirtualScreen1.Cursor := crSizeNE;\n  oecMoveNW: BGRAVirtualScreen1.Cursor := crSizeNW;\n  oecMoveSW: BGRAVirtualScreen1.Cursor := crSizeSW;\n  oecMoveSE: BGRAVirtualScreen1.Cursor := crSizeSE;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/rationalbezier/rationalbezier.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"rationalbezier\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <XPManifest>\n        <DpiAware Value=\"True\"/>\n      </XPManifest>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"rationalbezier.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"rationalbezier\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/rationalbezier/rationalbezier.lpr",
    "content": "program rationalbezier;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1;\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n//  Application.Scaled:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/rationalbezier/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 533\n  Height = 365\n  Top = 210\n  Width = 533\n  Caption = 'Rational Bezier Curve'\n  ClientHeight = 365\n  ClientWidth = 533\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnMouseDown = FormMouseDown\n  OnMouseMove = FormMouseMove\n  OnMouseUp = FormMouseUp\n  OnPaint = FormPaint\n  LCLVersion = '1.6.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 37\n    Top = 0\n    Width = 533\n    Align = alTop\n    BevelOuter = bvNone\n    ClientHeight = 37\n    ClientWidth = 533\n    TabOrder = 0\n    object Label1: TLabel\n      AnchorSideLeft.Control = Owner\n      AnchorSideTop.Control = Owner\n      AnchorSideRight.Control = Owner\n      AnchorSideRight.Side = asrBottom\n      Left = 248\n      Height = 17\n      Top = 0\n      Width = 37\n      Caption = 'Label1'\n      ParentColor = False\n    end\n    object Label2: TLabel\n      AnchorSideLeft.Control = Owner\n      AnchorSideTop.Control = Label1\n      AnchorSideTop.Side = asrBottom\n      AnchorSideRight.Control = Owner\n      AnchorSideRight.Side = asrBottom\n      Left = 248\n      Height = 17\n      Top = 17\n      Width = 37\n      Caption = 'Label2'\n      ParentColor = False\n    end\n    object FloatSpinEdit1: TFloatSpinEdit\n      Left = 52\n      Height = 27\n      Top = 0\n      Width = 50\n      Increment = 0.05\n      MaxValue = 5\n      MinValue = 0\n      OnChange = FloatSpinEdit1Change\n      TabOrder = 0\n      Value = 2\n    end\n    object Label3: TLabel\n      Left = 8\n      Height = 17\n      Top = 5\n      Width = 39\n      Caption = 'Weight'\n      ParentColor = False\n    end\n    object Label4: TLabel\n      Left = 116\n      Height = 17\n      Top = 5\n      Width = 51\n      Caption = 'Precision'\n      ParentColor = False\n    end\n    object FloatSpinEdit2: TFloatSpinEdit\n      Left = 180\n      Height = 27\n      Top = 0\n      Width = 50\n      Increment = 0.05\n      MaxValue = 5\n      MinValue = 0.1\n      OnChange = FloatSpinEdit2Change\n      TabOrder = 1\n      Value = 0.4\n    end\n  end\nend\n"
  },
  {
    "path": "test/rationalbezier/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Spin,\n  ExtCtrls, BGRABitmapTypes, BGRABitmap, BGRACanvas2D;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    FloatSpinEdit1: TFloatSpinEdit;\n    FloatSpinEdit2: TFloatSpinEdit;\n    Label1: TLabel;\n    Label2: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    Panel1: TPanel;\n    procedure FloatSpinEdit1Change(Sender: TObject);\n    procedure FloatSpinEdit2Change(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure FormPaint(Sender: TObject);\n  private\n    Center: TPoint;\n    B, B2: TRationalQuadraticBezierCurve;\n    CurPoint: integer;\n    PrevMouse: TPoint;\n    Img : TBGRABitmap;\n    procedure UpdateLength;\n  public\n\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  B:=BezierCurve(PointF(-150,80), PointF(0,0), PointF(150,80), FloatSpinEdit1.Value);\n  B2:=BezierCurve(PointF(-150,80), PointF(0,0), PointF(150,80), -FloatSpinEdit1.Value);\n  UpdateLength;\n  Img := TBGRABitmap.Create;\n  CurPoint := -1;\nend;\n\nprocedure TForm1.FloatSpinEdit1Change(Sender: TObject);\nbegin\n  B.weight := FloatSpinEdit1.Value;\n  B2.weight := -FloatSpinEdit1.Value;\n  UpdateLength;\n  invalidate;\nend;\n\nprocedure TForm1.FloatSpinEdit2Change(Sender: TObject);\nbegin\n  Invalidate;\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  Img.free\nend;\n\nprocedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nvar\n  MinDist: single;\n\n  function TryPoint(APoint: TPointF): boolean;\n  var\n    dist: single;\n  begin\n    dist:= sqr(APoint.x-x)+sqr(APoint.y-y);\n    if dist < MinDist then\n    begin\n      MinDist := dist;\n      exit(true)\n    end\n    else exit(false);\n  end;\n\nbegin\n  dec(y, Center.Y);\n  dec(x, Center.X);\n  if Button = mbLeft then\n  begin\n    CurPoint:= -1;\n    MinDist := sqr(15);\n    if TryPoint(B.p1) then CurPoint := 0;\n    if TryPoint(B.c) then CurPoint := 1;\n    if TryPoint(B.p2) then CurPoint := 2;\n    PrevMouse := Point(X,Y);\n  end;\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  d: TPointF;\nbegin\n  dec(y, Center.Y);\n  dec(x, Center.X);\n  if CurPoint <> -1 then\n  begin\n    d := PointF(X-PrevMouse.x,Y-PrevMouse.y);\n    case CurPoint of\n    0: begin B.p1.Offset(d); B2.p1.Offset(d); end;\n    1: begin B.c.Offset(d); B2.c.Offset(d); end;\n    2: begin B.p2.Offset(d); B2.p2.Offset(d); end;\n    end;\n    PrevMouse := Point(X,Y);\n    UpdateLength;\n    Invalidate;\n  end;\nend;\n\nprocedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then CurPoint := -1;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nvar\n  f: TBGRACanvas2D;\n  R, boundsF: TrectF;\n  Aleft, Aright : TRationalQuadraticBezierCurve;\n  precision: single;\nbegin\n  precision := FloatSpinEdit2.Value;\n  Img.SetSize(ClientWidth,ClientHeight-Panel1.Height);\n  Img.Fill(clWhite);\n  f := Img.Canvas2D;\n  Center := Point(ClientWidth div 2, (ClientHeight - Panel1.Height) div 2 + Panel1.Height);\n  boundsF := RectF(0,0, Img.Width,Img.Height);\n  boundsF.Offset(-Center.X, -Center.Y + Panel1.Height);\n  f.resetTransform;\n  f.translate(Center.X,Center.Y - Panel1.Height);\n  f.lineJoinLCL:= pjsBevel;\n  // arc d'ellipse en rouge, poids 0.4 (petit arc)\n  f.beginPath;\n  f.moveto(B.p1);\n  f.lineTo(B.c);\n  f.lineTo(B.p2);\n  f.moveto(B2.p1);\n  f.lineTo(B2.c);\n  f.lineTo(B2.p2);\n  f.moveto(B.p1.x+5,B.p1.y);\n  f.circle(B.p1.x,B.p1.y,5);\n  f.moveto(B.c.x+5,B.c.y);\n  f.circle(B.c.x,B.c.y,5);\n  f.moveto(B.p2.x+5,B.p2.y);\n  f.circle(B.p2.x,B.p2.y,5);\n  f.strokeStyle(clblack);\n  f.linewidth := 1;\n  f.stroke();\n  f.beginPath;\n  f.lineWidth := 4;\n  f.strokeStyle(BGRA(255,0,96,255));\n  f.moveTo(B.p1);\n  f.polylineTo(B.ToPoints(boundsF,precision));\n  f.stroke();\n  // arc d'ellipse en vert, poids -0.4 (grand arc, complétant le précédent)\n  f.beginPath;\n  f.strokeStyle(BGRA(96,160,0,255));\n  f.polylineTo(B2.ToPoints(boundsF,precision));\n  f.stroke();\n  if not B2.IsInfinite then\n  begin\n    // arc en bleu, c'est la deuxième moitié de l'arc en vert\n    B2.Split(Aleft, Aright);\n    f.strokeStyle(BGRA(0,96,255,255));\n    f.beginPath;\n    f.moveTo(Aright.p1);\n    f.polylineTo(Aright.ToPoints(boundsF,precision*2));\n    f.stroke;\n\n    // bounding box de l'arc en vert\n    R:=B2.GetBounds();\n    f.beginPath;\n    f.rect(round(R.Left)-1, round(R.Top)-1, round(R.Width)+2, round(R.Height)+2);\n    f.strokeStyle(BGRABlack);\n    f.lineWidth := 1;\n    f.stroke();\n  end;\n  Img.draw(Canvas,0,Panel1.Height)\nend;\n\nprocedure TForm1.UpdateLength;\nvar\n  len: Single;\nbegin\n  len := B2.ComputeLength;\n  if len = EmptySingle then\n    Label1.caption:='Green arc length = infinity'\n  else\n    Label1.caption:='Green arc length = '+FloatToStrF(len, ffFixed, 7,1);\n  len := B.ComputeLength;\n  if len = EmptySingle then\n    Label2.caption:='Red arc length = infinity'\n  else\n    Label2.caption:='Red arc length = '+FloatToStrF(len, ffFixed, 7,1);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/test4ideu/fractal_tree/fractal_tree.pas",
    "content": "\nprogram demo;\n\n{$IFDEF FPC}{$MODE objfpc}{$H+}{$ENDIF}\n{$IFDEF FPC}\n{$IFDEF mswindows}{$APPTYPE gui}{$ENDIF}\n{$ENDIF}\n\nuses\n{$IFDEF FPC}{$IFDEF unix}\n  cthreads, \n{$ENDIF}{$ENDIF}\n  msegui, mseforms, main;\n  \nbegin\n  application.createform(tmainfo, mainfo);\n  application.run;\nend.\n"
  },
  {
    "path": "test/test4ideu/fractal_tree/fractal_tree.prj",
    "content": "[componentpalette]\norder0=0\norder1=0\norder2=0\norder3=0\norder4=0\norder5=0\norder6=0\norder7=0\norder8=0\norder9=0\norder10=0\norder11=0\norder12=0\norder13=0\norder14=0\norder15=0\norder16=0\norder17=0\norder18=0\n[projectoptions]\noptions=114\n [projectoptionsfo.toolshortcuts]\n dropdowncolwidths=3\n  70\n  70\n  70\n [projectoptionsfo.twidgetgrid3]\n propcolwidthref=770\n sortdescend0=0\n sortdescend1=0\n sortdescend2=0\n sortdescend3=0\n width4=280\n sortdescend4=0\n width5=308\n sortdescend5=0\n width6=53\n sortdescend6=0\n width7=53\n sortdescend7=0\n width8=1\n sortdescend8=0\n width9=315\n sortdescend9=0\n [projectoptionsfo.twidgetgrid4]\n propcolwidthref=578\n width0=96\n sortdescend0=0\n sortdescend1=0\n width2=100\n sortdescend2=0\n width3=278\n sortdescend3=0\n width4=290\n sortdescend4=0\n sorted=0\n col=-1073741823\n row=-1073741823\n rowheight=22\n [projectoptionsfo.newfile]\n firsttab=0\n index=2\n [projectoptionsfo.fontaliasgrid]\n propcolwidthref=471\n width0=98\n sortdescend0=0\n width1=460\n sortdescend1=0\n width2=30\n sortdescend2=0\n width3=50\n sortdescend3=0\n width4=50\n sortdescend4=0\n width5=50\n sortdescend5=0\n width6=70\n sortdescend6=0\n [projectoptionsfo.macrosplitter]\n x=0\n y=170\n xprop=1\n yprop=0.34393638170974\n [projectoptionsfo.macrogrid]\n propcolwidthref=543\n sortdescend0=0\n sortdescend1=0\n sortdescend2=0\n sortdescend3=0\n sortdescend4=0\n sortdescend5=0\n sortdescend6=0\n sortdescend7=0\n sortdescend8=0\n sortdescend9=0\n width10=146\n sortdescend10=0\n width11=527\n sortdescend11=0\n [projectoptionsfo.comment_1]\n value=\n [projectoptionsfo.comment_B]\n value=\n [projectoptionsfo.comment_M]\n value=\n [projectoptionsfo.makegroupbox]\n firsttab=0\n index=3\n [projectoptionsfo.exceptionsgrid]\n propcolwidthref=761\n width0=47\n sortdescend0=0\n width1=755\n sortdescend1=0\n [projectoptionsfo.ttabwidget1]\n firsttab=0\n index=1\n [projectoptionsfo.filefiltergrid]\n propcolwidthref=734\n width0=112\n sortdescend0=0\n width1=727\n sortdescend1=0\n [projectoptionsfo.ttabwidget2]\n firsttab=0\n index=0\n [projectoptionsfo.setting_tab]\n firsttab=0\n index=2\n [projectoptionsfo]\n stackedunder=\n x=151\n y=68\n cx=821\n cy=572\nsettings=8\n [settings_form]\n x=570\n y=29\n cx=518\n cy=820\n wsize=0\n active=1\n visible=1\nmainfile=${PROJECTNAME}.pas\ntargetfile=${PROJECTNAME}${EXEEXT}\nmessageoutputfile=\nmakecommand=${COMPILER}\nmakedir=\nunitdirs=7\n ${BGRACONTROLSDIR}\n ${BGRAGUIDIR}\n ${MSEDIR}lib/addon/*/\n ${MSELIBDIR}kernel/$TARGETOSDIR/\n ${MSELIBDIR}kernel/\n ${MSELIBDIR}*/\n ${BGRABITMAPDIR}/bgrabitmap\nunitpref=-Fu\nincpref=-Fi\nlibpref=-Fl\nobjpref=-Fo\ntargpref=-o\nbefcommand=0\naftcommand=0\nmakeoptions=8\n -l -Mobjfpc -Sh -Fcutf8 \n -gl -O-\n -B\n -O2 -XX -Xs -CX\n -FUunits\n -dclass_bridge\n -dBGRABITMAP_USE_MSEGUI\n -Fuunits\nmakeoptpurpose=8\n \n \n \n \n \n \n \n \ncompilerused=29\n ${COMPILER} (Default)\n Pascal 1\n Pascal 2\n Pascal 3\n Pascal 4\n Pascal 5\n Pascal 6\n Pascal 7\n Pascal 8\n C 1\n C 2\n C 3\n C 4\n C 5\n C 6\n C 7\n C 8\n Java 1\n Java 2\n Java 3\n Java 4\n Python 1\n Python 2\n Python 3\n Python 4\n Other 1\n Other 2\n Other 3\n Other 4\ndebuggerused=6\n ${DEBUGGER} (Default)\n Debugger 1\n Debugger 2\n Debugger 3\n Debugger 4\n None\nexeused=15\n ${EXEEXT} (Default)\n No Extension\n .exe\n .com\n .bin\n .prog\n .pyc\n .class\n .java\n .so\n .dll\n .lib\n .o\n .res\n .inf\ncodetemplatedirs=1\n ${TEMPLATEDIR}\ntoolmenus=0\ntoolfiles=0\ntoolparams=0\nfontnames=0\nscriptbeforecopy=\nscriptaftercopy=\nnewprojectfiles=4\n ${TEMPLATEDIR}default/project.pas\n ${TEMPLATEDIR}default/main.pas\n ${TEMPLATEDIR}default/main.mfm\n ${TEMPLATEDIR}default/main_mfm.pas\nnewprojectfilesdest=4\n ${%PROJECTNAME%}.pas\n \n \n \nnewfinames=3\n Программа\n Модуль\n Текстовый файл\nnewfifilters=3\n \"*.pas\" \"*.pp\"\n \"*.pas\" \"*.pp\"\n \nnewfiexts=3\n pas\n pas\n \nnewfisources=3\n ${TEMPLATEDIR}default/program.pas\n ${TEMPLATEDIR}default/unit.pas\n \nnewfonames=11\n Главная форма\n Простая форма\n Пристыкуемая форма\n Модуль данных\n Встраиваемая форма\n Форма с прокруткой\n Форма с табами\n Панель закрепления\n Отчёт\n Форма со сценариями\n Наследуемая форма\nnewfonamebases=11\n form\n form\n form\n module\n form\n form\n form\n form\n report\n script\n form\nnewfosources=11\n ${TEMPLATEDIR}default/mainform.pas\n ${TEMPLATEDIR}default/simpleform.pas\n ${TEMPLATEDIR}default/dockingform.pas\n ${TEMPLATEDIR}default/datamodule.pas\n ${TEMPLATEDIR}default/subform.pas\n ${TEMPLATEDIR}default/scrollboxform.pas\n ${TEMPLATEDIR}default/tabform.pas\n ${TEMPLATEDIR}default/dockpanelform.pas\n ${TEMPLATEDIR}default/report.pas\n ${TEMPLATEDIR}default/pascform.pas\n ${TEMPLATEDIR}default/inheritedform.pas\nnewfoforms=11\n ${TEMPLATEDIR}default/mainform.mfm\n ${TEMPLATEDIR}default/simpleform.mfm\n ${TEMPLATEDIR}default/dockingform.mfm\n ${TEMPLATEDIR}default/datamodule.mfm\n ${TEMPLATEDIR}default/subform.mfm\n ${TEMPLATEDIR}default/scrollboxform.mfm\n ${TEMPLATEDIR}default/tabform.mfm\n ${TEMPLATEDIR}default/dockpanelform.mfm\n ${TEMPLATEDIR}default/report.mfm\n ${TEMPLATEDIR}default/pascform.mfm\n ${TEMPLATEDIR}default/inheritedform.mfm\nforcezorder=0\nstripmessageesc=0\ncopymessages=0\nclosemessages=0\nenablepurpose=0\nenablesource=1\ncheckmethods=1\ncolorerror=-1610612717\ncolorwarning=-1610612712\ncolornote=-1610612716\ncolorhint=15134207\nusercolors=30\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\nusercolorcomment=30\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nformatmacronames=0\nformatmacrovalues=0\nsettingsfile=\nsettingseditor=0\nsettingsdebugger=0\nsettingsstorage=0\nsettingsprojecttree=0\nsettingsautoload=0\nsettingsautosave=0\nbefcommandon=0\nmakeoptionson=8\n 63\n 3\n 63\n 36\n 4095\n 4095\n 4095\n 4095\ncompilerusedon=29\n 4095\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\ndebuggerusedon=6\n 4095\n 0\n 0\n 0\n 0\n 0\nexeusedon=15\n 4095\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\ncomment_M=\ncomment_B=\ncomment_1=\ncomment_2=\ncomment_3=\ncomment_4=\ncomment_5=\ncomment_6=\ncomment_7=\ncomment_8=\ncomment_9=\ncomment_0=\nproject_name=\nproject_creator=\nproject_copyright=\nproject_license=\nproject_time=\nproject_date=23:17:12 09/08/23\nproject_comment=\naftcommandon=0\nunitdirson=7\n 987135\n 65599\n 196671\n 65599\n 196671\n 65599\n 200703\nmacroon=0\nmacronames=0\nmacrovalues=0\nmacrogroup=0\ngroupcomments=10\n \n \n \n \n \n \n \n \n \n \ntoolsave=0\ntoolhide=0\ntoolparse=0\ntoolmessages=0\ntoolshortcuts=0\nfontalias=0\nfontancestors=0\nfontheights=0\nfontwidths=0\nfontoptions=0\nfontxscales=0\nexpandprojectfilemacros=4\n 1\n 1\n 1\n 0\nloadprojectfile=4\n 1\n 1\n 1\n 0\nnewinheritedforms=11\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 0\n 1\nuid=0\nsourcefilemasks=3\n \"*.pas\" \"*.dpr\" \"*.lpr\" \"*.pp\" \"*.inc\"\n \"*.c\" \"*.cc\" \"*.h\"\n \"*.mfm\"\nsyntaxdeffiles=3\n ${SYNTAXDEFDIR}pascal.sdef\n ${SYNTAXDEFDIR}cpp.sdef\n ${SYNTAXDEFDIR}objecttext.sdef\nfilemasknames=3\n Source\n Forms\n All Files\nfilemasks=3\n \"*.pp\" \"*.pas\" \"*.inc\" \"*.dpr\" \"*.lpr\"\n *.mfm\n *\nshowgrid=1\nsnaptogrid=1\nmoveonfirstclick=1\nnoformdesignerdocking=0\ncomponenthints=1\ngridsizex=8\ngridsizey=8\nautoindent=1\nblockindent=1\nlinenumberson=0\nrightmarginon=1\nrightmarginchars=80\nscrollheight=0\ntabstops=4\nspacetabs=0\nshowtabs=0\ntabindent=0\neditfontname=mseide_source\neditfontheight=0\neditfontwidth=0\neditfontextraspace=0\neditfontcolor=-1879048183\neditbkcolor=-1879048186\nstatementcolor=14745599\npairmarkcolor=-2147483642\neditfontantialiased=1\neditmarkbrackets=1\neditmarkpairwords=0\nfpgdesigner=1\nbackupfilecount=0\nencoding=1\neolstyle=1\ntrimtrailingwhitespace=0\ncodetemplatedirs=1\n ${TEMPLATEDIR}\ndebugcommand=${DEBUGGER}\ndebugoptions=\ndebugtarget=\nruncommand=\nxtermcommand=xterm -S${PTSN}/${PTSH}\nremoteconnection=\nuploadcommand=\ngdbprocessor=Auto\ngdbservercommand=\ngdbservercommandattach=\nbeforeconnect=\nafterconnect=\nbeforeload=\nafterload=\nbeforerun=\nsourcebase=\nsourcedirs=4\n ${MSEDIR}lib/addon/*/\n ${MSEDIR}lib/common/kernel/$TARGETOSDIR/\n ${MSEDIR}lib/common/*/\n ./\ndefines=0\nprogparameters=\nprogworkingdirectory=\nenvvarnames=0\nenvvarvalues=0\ndefineson=0\nstoponexception=0\nvaluehints=1\nactivateonbreak=1\nraiseonbreak=1\nshowconsole=0\nexternalconsole=0\nsettty=1\ngdbdownload=0\ndownloadalways=0\nrestartgdbbeforeload=0\nstartupbkpt=0\nstartupbkpton=0\ngdbsimulator=0\ngdbserverstartonce=0\ngdbloadtimeout=\ngdbserverwait=0\nnogdbserverexit=0\ngdbservertty=0\nexceptclassnames=1\n EconvertError\nexceptignore=1\n 0\nnodebugbeginend=0\nfpcgdbworkaround=1\nsigsettings=27\n 1,1,T,F\n 3,3,T,F\n 4,4,T,F\n 6,6,T,F\n 7,7,T,F\n 8,8,T,F\n 9,9,T,F\n 10,10,T,F\n 11,11,T,F\n 12,12,T,F\n 13,13,T,F\n 15,15,T,F\n 16,16,T,F\n 17,17,F,F\n 18,18,T,F\n 19,19,T,F\n 20,20,T,F\n 21,21,T,F\n 22,22,T,F\n 23,23,T,F\n 24,24,T,F\n 25,25,T,F\n 26,26,T,F\n 27,27,T,F\n 28,28,T,F\n 29,29,F,F\n 30,30,T,F\ndefaultmake=1\n[breakpoints]\non=0\npath=0\nline=0\naddress=0\naddbkpt=0\nignore=0\ncondition=0\npanels=1\n panel1\nunits=\n (\n a=0,8229,6,Pascal Units\n )\ncmodules=\n (\n a=0,8228,6,C Modules\n )\nfiles=\n (\n a=0,8229,6,Text Files\n )\n[componentstore]\nfilename=\n[components]\n[selecteditpage]\ncolwidth=100\nx=0\ny=0\ncx=0\ncy=0\n[progparams]\nprogparamhistory=0\nworkdirparamhistory=0\nenvvarons=0\n[edit]\nhintwidth=0\nhintheight=0\nfinddtext=\nfindhistory=0\nfindoptions=1\neditpos=2\n 0,27\n 0,2\nbookmarks0=0\nbookmarks1=0\nsourcefiles=2\n ${PROJECTDIR}/main.pas\n ${PROJECTDIR}/fractal_tree.pas\nrelpaths=2\n main.pas\n fractal_tree.pas\nismoduletexts=2\n 0\n 0\n[sourcefo.files_tab]\norder=2\n 2\n 0\nfirsttab=0\nindex=0\n[layout]\nwindowlayout=551\n [mainfo.basedock]\n splitdir=2\n useroptions=268450944\n [mainfo]\n splitdir=0\n useroptions=301990011\n stackedunder=\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=124\n y=115\n cx=1224\n cy=621\n rcx=0\n rcy=0\n wsize=0\n active=1\n visible=1\n [findmessagefo.findtext]\n value=\n history=0\n [findmessagefo.casesensitive]\n value=0\n [findmessagefo.copytoclip]\n value=0\n [targetconsolefo]\n splitdir=0\n useroptions=268451945\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=493\n y=171\n cx=497\n cy=314\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [threadsfo]\n splitdir=0\n useroptions=268451945\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=444\n y=431\n cx=418\n cy=126\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [memoryfo]\n splitdir=0\n useroptions=268451963\n stackedunder=dialogfilesfo\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=100\n y=100\n cx=453\n cy=354\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [memoryfo.add]\n value=0\n [memoryfo.memon]\n value=0\n [memoryfo.bitwidth]\n value=0\n [memoryfo.cnt]\n value=0\n [disassfo]\n splitdir=0\n useroptions=268451947\n stackedunder=\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=162\n y=502\n cx=564\n cy=210\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [findinfilefo]\n splitdir=0\n useroptions=268451947\n stackedunder=\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=239\n y=115\n cx=678\n cy=414\n rcx=0\n rcy=0\n [projecttreefo]\n splitdir=0\n useroptions=268484715\n parent=mainfo.panel1.container\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=0\n y=0\n cx=205\n cy=430\n rcx=0\n rcy=0\n [projecttreefo.grid]\n propcolwidthref=88\n width0=117\n sortdescend0=0\n width1=86\n sortdescend1=0\n sorted=0\n col=1\n row=-1073741823\n rowheight=19\n [stackfo]\n splitdir=0\n useroptions=268460137\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=423\n y=321\n cx=344\n cy=155\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [watchpointsfo]\n splitdir=0\n useroptions=268451945\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=537\n y=26\n cx=483\n cy=210\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [watchpointsfo.grid]\n propcolwidthref=332\n sortdescend0=0\n values1=1\n  0\n values1_ci=-1\n width1=33\n sortdescend1=0\n values2=1\n  pinteger(0x126c6b4)^\n width2=149\n sortdescend2=0\n width4=34\n sortdescend4=0\n values5=1\n  0\n values5_ci=-1\n width5=38\n sortdescend5=0\n values6=1\n  \n width6=172\n sortdescend6=0\n [breakpointsfo]\n splitdir=0\n useroptions=268451947\n stackedunder=conflangfo\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=107\n y=404\n cx=477\n cy=128\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [breakpointsfo.bkptson]\n value=1\n [objectinspectorfo.grid]\n propcolwidthref=363\n width0=161\n sortdescend0=0\n width1=196\n sortdescend1=0\n [symbolfo]\n splitdir=0\n useroptions=268451963\n stackedunder=\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=142\n y=257\n cx=361\n cy=137\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [symbolfo.grid]\n propcolwidthref=207\n values0=18\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n width0=111\n sortdescend0=0\n width1=125\n sortdescend1=0\n [symbolfo.symbol]\n [watchfo]\n splitdir=0\n useroptions=268460137\n parent=mainfo.basedock\n visible=0\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=53\n y=0\n cx=247\n cy=44\n rcx=1262\n rcy=583\n [watchfo.grid]\n propcolwidthref=121\n values0=0\n values0_ci=-1\n sortdescend0=0\n values1=0\n width1=66\n sortdescend1=0\n values3=0\n values3_ci=-1\n sortdescend3=0\n values4=0\n values4_ci=-1\n width4=13\n sortdescend4=0\n [watchfo.watchon]\n [watchfo.expression]\n [watchfo.watcheson]\n value=1\n [messagefo]\n splitdir=0\n useroptions=268517483\n parent=mainfo.basedock\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=0\n y=499\n cx=1210\n cy=96\n rcx=0\n rcy=0\n [componentstorefo]\n splitdir=0\n useroptions=268460155\n stackedunder=\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=100\n y=100\n cx=445\n cy=354\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [componentstorefo.grid]\n propcolwidthref=435\n width0=111\n sortdescend0=0\n sortdescend1=0\n width2=103\n sortdescend2=0\n width3=185\n sortdescend3=0\n [componentstorefo.storefiledialog]\n filenames=1\n  /home/mse/test/msegui/apps/ide/compstore/\n filecolwidth=0\n x=0\n y=0\n cx=0\n cy=0\n lastdir=/home/mse/test/msegui/apps/ide/compstore/\n filehistory=0\n filefilterindex=0\n filefilter=\n [componentstorefo.groupfiledialog]\n filenames=1\n  /home/mse/test/msegui/apps/ide/compstore/\n filecolwidth=0\n x=0\n y=0\n cx=0\n cy=0\n lastdir=/home/mse/test/msegui/apps/ide/compstore/\n filehistory=0\n filefilterindex=0\n filefilter=\n [componentstorefo.compfiledialog]\n filenames=0\n filecolwidth=0\n x=0\n y=0\n cx=0\n cy=0\n lastdir=\n filehistory=0\n filefilterindex=0\n filefilter=\n [componentpalettefo]\n splitdir=0\n useroptions=268460139\n stackedunder=confdebuggerfo\n parent=\n mdistate=3\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=240\n y=139\n cx=956\n cy=77\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [componentpalettefo.componentpages]\n activetab=0\n [debuggerfo]\n splitdir=0\n useroptions=24683\n parent=mainfo.basedock\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=0\n y=0\n cx=1210\n cy=63\n rcx=0\n rcy=0\n [debuggerfo.basedock]\n splitdir=2\n useroptions=268582019\n parent=debuggerfo.container\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=1210\n ncy=99\n x=0\n y=0\n cx=1210\n cy=72\n rcx=0\n rcy=0\n [debuggerfo.edit_options]\n value=X\n [debuggerfo.edit_compilernum]\n value=0\n [debuggerfo.edit_compiler]\n value=Pascal\n [debuggerfo.project_options]\n value=1\n [debuggerfo.hints]\n value=1\n [sourcefo]\n splitdir=0\n useroptions=16489\n parent=mainfo.panel1.container\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=208\n y=0\n cx=1002\n cy=430\n rcx=0\n rcy=0\n [sourcefo.files_tab]\n order=2\n  2\n  0\n firsttab=0\n index=0\n [confideufo.usedefaulteditoroptions]\n value=0\n [cpuc86_64fo]\n irqoff=0\n splitdir=0\n useroptions=268451947\n stackedunder=componentpalettefo\n parent=\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=183\n y=113\n cx=352\n cy=277\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=0\n [mainfo.panel1]\n splitdir=1\n useroptions=302087659\n parent=mainfo.basedock\n visible=1\n mdistate=0\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=0\n y=66\n cx=1210\n cy=430\n rcx=0\n rcy=0\n [_mse_mainfo_mse_]\n splitdir=0\n useroptions=268451963\n stackedunder=mainfo\n parent=\n mdistate=3\n nx=0\n ny=0\n ncx=0\n ncy=0\n x=634\n y=219\n cx=430\n cy=420\n rcx=0\n rcy=0\n wsize=0\n active=0\n visible=1\n[targetconsole]\nfinddtext=\nfindhistory=0\nfindoptions=1\n"
  },
  {
    "path": "test/test4ideu/fractal_tree/main.mfm",
    "content": "object mainfo: tmainfo\r\n  bounds_x = 634\r\n  bounds_y = 219\r\n  bounds_cx = 420\r\n  bounds_cy = 420\r\n  bounds_cxmin = 120\r\n  bounds_cymin = 120\r\n  container.frame.localprops = []\r\n  container.frame.localprops1 = []\r\n  container.bounds = (\r\n    0\r\n    0\r\n    420\r\n    420\r\n  )\r\n  caption = 'Fractal Tree by Lainz'\r\n  windowopacity = -Inf\r\n  moduleclassname = 'tmainform'\r\n  object tpaintbox1: tpaintbox\r\n    optionswidget = [ow_mousefocus, ow_tabfocus, ow_arrowfocus, ow_mousewheel, ow_destroywidgets]\r\n    color = -1610612712\r\n    frame.localprops = []\r\n    frame.localprops1 = []\r\n    onpaint = tpaintbox1_onpaint\r\n    bounds_x = 0\r\n    bounds_y = 0\r\n    bounds_cx = 420\r\n    bounds_cy = 420\r\n    anchors = []\r\n  end\r\nend\r\n"
  },
  {
    "path": "test/test4ideu/fractal_tree/main.pas",
    "content": "\r\nunit main;\r\n\r\n{$IFDEF FPC}{$MODE objfpc}{$H+}{$ENDIF}\r\n\r\ninterface\r\n  \r\nuses\r\n  mseglob, mseguiglob, mseguiintf, mseapplication, msestat, msemenus, msegui,\r\n  msegraphics, msegraphutils, mseevent, mseclasses, mseforms, msesimplewidgets,\r\n  msewidgets, math;\r\n\r\ntype\r\n  tmainfo = class(tmainform)\r\n    tpaintbox1: tpaintbox;\r\n    procedure tpaintbox1_onpaint(const sender: twidget; const acanvas: tcanvas);\r\n  end;\r\n\r\nconst\r\n  deg_to_rad = pi / 180;            \r\n\r\nvar  \r\n  mainfo: tmainfo;\r\n  \r\nimplementation\r\n\r\nuses\r\n BGRABitmap, BGRABitmapTypes, BGRAGraphics, BGRAClasses, BGRAUTF8, \r\n BGRAGradientScanner, main_mfm;\r\n\r\nprocedure drawTree(x1, y1, angle, depth, multiplier: single; bgra : tbgrabitmap);\r\nvar\r\n  x2, y2: single;\r\nbegin\r\n  if (depth > 0) then\r\n  begin\r\n    x2 := x1 + (cos(angle * deg_to_rad) * depth * multiplier);\r\n    y2 := y1 + (sin(angle * deg_to_rad) * depth * multiplier);\r\n \r\n    bgra.DrawLineAntialias(x1, y1, x2, y2, BGRABlack, depth, False);\r\n    \r\n    // Use even values without randomness to get a 'real' fractal image\r\n    \r\n    drawTree(x2, y2, angle - randomrange(15,50), depth - 1.44, multiplier, bgra);\r\n    drawTree(x2, y2, angle + randomrange(10,25), depth - 0.72, multiplier, bgra);\r\n    drawTree(x2, y2, angle - randomrange(10,25), depth - 3, multiplier, bgra);\r\n    drawTree(x2, y2, angle + randomrange(15,50), depth - 4, multiplier, bgra);\r\n  end;\r\nend;       \r\n  \r\nprocedure tmainfo.tpaintbox1_onpaint(const sender: twidget; const acanvas: tcanvas);\r\nconst \r\n  SampleText = 'HellÔ green tree';\r\n  MarginX = 20;\r\n  MarginY = 20;\r\nvar\r\n  bmp : tbgrabitmap;\r\n  multiplier : single;\r\n  grad: TBGRACustomGradient;\r\n  scan: TBGRACustomScanner;\r\n  textWidth: integer;\r\nbegin\r\n  bmp := tbgrabitmap.create(sender.bounds_cx, sender.bounds_cy);\r\n  \r\n  multiplier := sender.bounds_cy / 50;\r\n \r\n  bmp.GradientFill(0, 0, bmp.Width, bmp.Height, cl_dkgreen, BGRA(0,125,0), \r\n  gtLinear, PointF(0,0), PointF(0, bmp.Height), dmSet);\r\n\r\n  drawTree(bmp.Width div 2, bmp.Height, -91, 9, multiplier, bmp); \r\n  \r\n  bmp.FontFullHeight := 30;\r\n  textWidth := bmp.TextSize(SampleText).cx;\r\n  bmp.TextOut(MarginX, MarginY, SampleText, BGRAWhite);\r\n  bmp.HorizLine(MarginX, MarginY, MarginX + bmp.TextSize(SampleText).cx-1, BGRAWhite);\r\n  bmp.HorizLine(MarginX, MarginY + bmp.FontFullHeight, MarginX + textWidth-1, BGRAWhite);\r\n  \r\n  bmp.FontFullHeight := 40;\r\n  bmp.FontStyle := [fsBold];\r\n  textWidth := bmp.TextSize(SampleText).cx;\r\n  grad := TBGRAHueGradient.Create(0,0,65535,40000,[hgoRepeat,hgoPositiveDirection,hgoLightnessCorrection]);\r\n  scan := TBGRAGradientScanner.Create(grad, gtLinear, PointF(0, bmp.Height - MarginY), PointF(0, bmp.Height - MarginY - textWidth));\r\n  bmp.TextOutAngle(bmp.Width - MarginX - bmp.FontFullHeight, bmp.Height - MarginY, 900, SampleText, scan);\r\n  scan.Free;\r\n  grad.Free;\r\n  \r\n  bmp.Rectangle(0, 0, bmp.Width, bmp.Height, BGRABlack);\r\n\r\n  bmp.Rectangle(5, 5, bmp.Width - 5, bmp.Height - 5, BGRABlack);\r\n  \r\n  bmp.CanvasBGRA.TextStyle.ShowPrefix := true;\r\n  bmp.CanvasBGRA.TextStyle.Alignment := taLeftJustify;\r\n  bmp.CanvasBGRA.TextStyle.Layout := tlBottom;\r\n  bmp.CanvasBGRA.Font.Height := 40;\r\n  bmp.CanvasBGRA.Font.Color := CSSYellow;\r\n  bmp.CanvasBGRA.TextRect(rect(0, 0, bmp.Width, bmp.Height), 0,0, \r\n    '&File &Edit'#10+\r\n    '&Open'#10 +\r\n    '&Quit');\r\n\r\n  bmp.draw(acanvas, 0, 0, false);\r\n  bmp.free;\r\nend;\r\n\r\nend.\r\n"
  },
  {
    "path": "test/test4ideu/fractal_tree/main_mfm.pas",
    "content": "unit main_mfm;\r\n{$ifdef FPC}{$mode objfpc}{$h+}{$endif}\r\n\r\ninterface\r\n\r\nimplementation\r\nuses\r\n mseclasses,main;\r\n\r\nconst\r\n objdata: record size: integer; data: array[0..518] of byte end =\r\n      (size: 519; data: (\r\n  84,80,70,48,7,116,109,97,105,110,102,111,6,109,97,105,110,102,111,8,\r\n  98,111,117,110,100,115,95,120,3,122,2,8,98,111,117,110,100,115,95,121,\r\n  3,219,0,9,98,111,117,110,100,115,95,99,120,3,164,1,9,98,111,117,\r\n  110,100,115,95,99,121,3,164,1,12,98,111,117,110,100,115,95,99,120,109,\r\n  105,110,2,120,12,98,111,117,110,100,115,95,99,121,109,105,110,2,120,26,\r\n  99,111,110,116,97,105,110,101,114,46,102,114,97,109,101,46,108,111,99,97,\r\n  108,112,114,111,112,115,11,0,27,99,111,110,116,97,105,110,101,114,46,102,\r\n  114,97,109,101,46,108,111,99,97,108,112,114,111,112,115,49,11,0,16,99,\r\n  111,110,116,97,105,110,101,114,46,98,111,117,110,100,115,1,2,0,2,0,\r\n  3,164,1,3,164,1,0,7,99,97,112,116,105,111,110,6,21,70,114,97,\r\n  99,116,97,108,32,84,114,101,101,32,98,121,32,76,97,105,110,122,13,119,\r\n  105,110,100,111,119,111,112,97,99,105,116,121,5,0,0,0,0,0,0,0,\r\n  128,255,255,15,109,111,100,117,108,101,99,108,97,115,115,110,97,109,101,6,\r\n  9,116,109,97,105,110,102,111,114,109,0,9,116,112,97,105,110,116,98,111,\r\n  120,10,116,112,97,105,110,116,98,111,120,49,13,111,112,116,105,111,110,115,\r\n  119,105,100,103,101,116,11,13,111,119,95,109,111,117,115,101,102,111,99,117,\r\n  115,11,111,119,95,116,97,98,102,111,99,117,115,13,111,119,95,97,114,114,\r\n  111,119,102,111,99,117,115,13,111,119,95,109,111,117,115,101,119,104,101,101,\r\n  108,17,111,119,95,100,101,115,116,114,111,121,119,105,100,103,101,116,115,0,\r\n  5,99,111,108,111,114,4,24,0,0,160,16,102,114,97,109,101,46,108,111,\r\n  99,97,108,112,114,111,112,115,11,0,17,102,114,97,109,101,46,108,111,99,\r\n  97,108,112,114,111,112,115,49,11,0,7,111,110,112,97,105,110,116,7,18,\r\n  116,112,97,105,110,116,98,111,120,49,95,111,110,112,97,105,110,116,8,98,\r\n  111,117,110,100,115,95,120,2,0,8,98,111,117,110,100,115,95,121,2,0,\r\n  9,98,111,117,110,100,115,95,99,120,3,164,1,9,98,111,117,110,100,115,\r\n  95,99,121,3,164,1,7,97,110,99,104,111,114,115,11,0,0,0,0)\r\n );\r\n\r\ninitialization\r\n registerobjectdata(@objdata,tmainfo,'');\r\nend.\r\n"
  },
  {
    "path": "test/test4lcl/test4lcl.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"test4lcl\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"test4lcl.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"bin\\$(TargetCPU)-$(TargetOS)\\test4lcl\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <VariablesInRegisters Value=\"True\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl/test4lcl.lpr",
    "content": "program test4lcl;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl/umain.lfm",
    "content": "object Form1: TForm1\n  Left = 504\n  Height = 395\n  Top = 204\n  Width = 450\n  Caption = 'BGRABitmap with LCL'\n  ClientHeight = 395\n  ClientWidth = 450\n  DesignTimePPI = 120\n  object Panel1: TPanel\n    Left = 0\n    Height = 95\n    Top = 0\n    Width = 450\n    Align = alTop\n    ClientHeight = 95\n    ClientWidth = 450\n    TabOrder = 0\n    object rbFull: TRadioButton\n      Left = 2\n      Height = 25\n      Top = 2\n      Width = 50\n      Caption = 'Full'\n      Checked = True\n      TabOrder = 1\n      TabStop = True\n      OnClick = rbFullClick\n    end\n    object rbCustom: TRadioButton\n      Left = 64\n      Height = 25\n      Top = 2\n      Width = 83\n      Caption = 'Custom'\n      TabOrder = 0\n      OnClick = rbFullClick\n    end\n    object edX: TSpinEdit\n      Left = 216\n      Height = 33\n      Top = 24\n      Width = 63\n      MaxValue = 1000\n      TabOrder = 2\n      Value = 100\n    end\n    object Label1: TLabel\n      Left = 146\n      Height = 23\n      Top = 25\n      Width = 66\n      Caption = 'Position:'\n    end\n    object edY: TSpinEdit\n      Left = 280\n      Height = 33\n      Top = 24\n      Width = 63\n      MaxValue = 1000\n      TabOrder = 3\n      Value = 100\n    end\n    object Label2: TLabel\n      Left = 179\n      Height = 23\n      Top = 57\n      Width = 33\n      Caption = 'Size:'\n    end\n    object edW: TSpinEdit\n      Left = 216\n      Height = 33\n      Top = 56\n      Width = 63\n      MaxValue = 1000\n      TabOrder = 4\n      Value = 100\n    end\n    object edH: TSpinEdit\n      Left = 280\n      Height = 33\n      Top = 56\n      Width = 63\n      MaxValue = 1000\n      TabOrder = 5\n      Value = 100\n    end\n    object Button1: TButton\n      Left = 352\n      Height = 31\n      Top = 56\n      Width = 96\n      Caption = 'UpdateDraw'\n      TabOrder = 6\n      OnClick = rbFullClick\n    end\n    object cbTransparent: TCheckBox\n      Left = 2\n      Height = 25\n      Top = 32\n      Width = 115\n      Caption = 'Transparent'\n      TabOrder = 7\n      OnChange = rbFullClick\n    end\n    object cbImageFile: TCheckBox\n      Left = 2\n      Height = 25\n      Top = 56\n      Width = 101\n      Caption = 'Image File'\n      TabOrder = 8\n      OnChange = rbFullClick\n    end\n    object Label3: TLabel\n      Left = 232\n      Height = 23\n      Top = 2\n      Width = 9\n      Caption = 'X'\n    end\n    object Label4: TLabel\n      Left = 296\n      Height = 23\n      Top = 2\n      Width = 9\n      Caption = 'Y'\n    end\n    object btFileSel: TButton\n      Left = 112\n      Height = 24\n      Top = 56\n      Width = 24\n      Caption = '...'\n      TabOrder = 9\n      OnClick = btImageFileClick\n    end\n  end\n  object PanelDraw: TPanel\n    Left = 0\n    Height = 300\n    Top = 95\n    Width = 450\n    Align = alClient\n    Caption = 'Panel Draw'\n    TabOrder = 1\n    OnPaint = DrawPaint\n  end\n  object openPict: TOpenPictureDialog\n    Left = 272\n    Top = 82\n  end\nend\n"
  },
  {
    "path": "test/test4lcl/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, Spin, ExtDlgs;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Button1: TButton;\n    btFileSel: TButton;\n    cbTransparent: TCheckBox;\n    cbImageFile: TCheckBox;\n    edW: TSpinEdit;\n    edH: TSpinEdit;\n    Label1: TLabel;\n    Label2: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    openPict: TOpenPictureDialog;\n    Panel1: TPanel;\n    PanelDraw: TPanel;\n    rbFull: TRadioButton;\n    rbCustom: TRadioButton;\n    edX: TSpinEdit;\n    edY: TSpinEdit;\n    procedure btImageFileClick(Sender: TObject);\n    procedure DrawPaint(Sender: TObject);\n    procedure rbFullClick(Sender: TObject);\n  private\n    { private declarations }\n    Filename: String;\n\n  public\n    { public declarations }\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses BGRABitmap, BGRABitmapTypes;\n\n{$R *.lfm}\n\nprocedure DrawEllipseHello(bmp: TBGRABitmap);\nvar br: TBGRACustomBitmap;\nbegin\n  bmp.Fill(BGRABlack);\n  bmp.CustomPenStyle := BGRAPenStyle(2,1);\n  bmp.FillEllipseLinearColorAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5, BGRAPixelTransparent, BGRAWhite);\n  bmp.EllipseAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5,CSSRed,5);\n  if bmp.Height div 10 < 10 then\n    bmp.FontHeight := 10\n  else\n    bmp.FontHeight := bmp.Height div 10;\n  with bmp.FontPixelMetric do\n    bmp.TextOut(bmp.Width/2,bmp.Height/2 - (CapLine+Baseline)/2,'Hello world', BGRABlack, taCenter);\n  bmp.Canvas.Pen.Color := clBlue;\n  bmp.Canvas.MoveTo(0,0);\n  bmp.Canvas.LineTo(bmp.Width,bmp.Height);\n  br := bmp.CreateBrushTexture(bsDiagCross, CSSYellow,CSSRed);\n  bmp.FillPieInRect(rect(10,10,100,100),0,3*Pi/2,br);\n  bmp.TextOutAngle(50,50, -300, 'Test angle', CSSGreen, taLeftJustify);\n  br.Free;\nend;\n\n{ TForm1 }\n\nprocedure TForm1.DrawPaint(Sender: TObject);\nvar\n  bmp: TBGRABitmap;\n  ARect: TRect;\n\nbegin\n  try\n  if cbImageFile.Checked and FileExists(Filename)\n  then bmp:= TBGRABitmap.Create(Filename)\n  else begin\n         bmp:= TBGRABitmap.Create(PanelDraw.Width,PanelDraw.Height);\n         DrawEllipseHello(bmp);\n       end;\n\n  if rbFull.Checked\n  then ARect:=Rect(0, 0, PanelDraw.Width,PanelDraw.Height)\n  else ARect:=Rect(edX.Value, edY.Value, edX.Value+edW.Value, edY.Value+edH.Value);\n\n  bmp.Draw(PanelDraw.Canvas, ARect, not(cbTransparent.Checked));\n\n  finally\n    bmp.Free;\n  end;\nend;\n\nprocedure TForm1.btImageFileClick(Sender: TObject);\nbegin\n  if openPict.Execute then\n  begin\n    Filename:=openPict.FileName;\n    PanelDraw.Invalidate;\n  end;\nend;\n\nprocedure TForm1.rbFullClick(Sender: TObject);\nbegin\n  PanelDraw.Invalidate;\nend;\n\n\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest0/ptestvirtualscreen.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"ptestvirtualscreen\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGLControls\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"ptestvirtualscreen.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"ptestvirtualscreen\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest0/ptestvirtualscreen.lpr",
    "content": "program ptestvirtualscreen;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest0/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 598\n  Height = 240\n  Top = 229\n  Width = 320\n  Caption = 'Form1'\n  ClientHeight = 240\n  ClientWidth = 320\n  LCLVersion = '1.8.2.0'\n  object BGLVirtualScreen1: TBGLVirtualScreen\n    Left = 0\n    Height = 240\n    Top = 0\n    Width = 320\n    OnRedraw = BGLVirtualScreen1Redraw\n    Align = alClient\n    BevelWidth = 0\n    TabOrder = 0\n    UseDockManager = False\n    OnDblClick = BGLVirtualScreen1DblClick\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest0/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,\n  BGLVirtualScreen, BGRAOpenGL;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BGLVirtualScreen1: TBGLVirtualScreen;\n    procedure BGLVirtualScreen1DblClick(Sender: TObject);\n    procedure BGLVirtualScreen1Redraw(Sender: TObject; BGLContext: TBGLContext);\n  private\n    OriginalBounds: TRect;\n    OriginalWindowState: TWindowState;\n    procedure SwitchFullScreen;\n  public\n\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nuses BGRABitmapTypes;\n\n{ TForm1 }\n\nprocedure TForm1.SwitchFullScreen;\nbegin\n  if BorderStyle <> bsNone then begin\n    // To full screen\n    OriginalWindowState := WindowState;\n    OriginalBounds := BoundsRect;\n\n    BorderStyle := bsNone;\n    BoundsRect := Screen.MonitorFromWindow(Handle).BoundsRect;\n  end else begin\n    // From full screen\n    BorderStyle := bsSizeable;\n    if OriginalWindowState = wsMaximized then\n      WindowState := wsMaximized\n    else\n      BoundsRect := OriginalBounds;\n  end;\nend;\n\nprocedure TForm1.BGLVirtualScreen1Redraw(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  BGLContext.Canvas.FillRect(10,10,100,100, CSSRed);\nend;\n\n// double-clic to switch to fullscreen\nprocedure TForm1.BGLVirtualScreen1DblClick(Sender: TObject);\nbegin\n  SwitchFullScreen;\nend;\n\nend.\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest1/opengltest1.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"opengltest1\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"lazopenglcontext\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"opengltest1.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"opengltest1\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest1/opengltest1.lpr",
    "content": "program opengltest1;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, lazopenglcontext, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest1/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 230\n  Height = 240\n  Top = 121\n  Width = 320\n  Caption = 'Ground test'\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '1.4.0.4'\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest1/unit1.pas",
    "content": "unit Unit1;\n{\n-For using OpenGl with BGRABitmap and LCl:\n-Add two packages (take a look at project inspector!)\n-Then you need a TOpenGLControl and do create stuff and setting events\n-If you want OpenGl speed you should use a texture again and again, dont make it each time unless it is necceray so here we will load them once\n-For making texture you can use TBGLBitmap or IBGLTexture\n-TBGLBitmap is like a TBGRABitmap with OpenGl stuff and a texture property, you can draw, load and whatever here and then use its texture and if you dont need it later free it.\n-IBGLTexture is an interface so you dont need to free it,just use it and note that it will use less memory\n-After loading you need to draw background with BGLViewPort\n-After that draw your textures with BGLCanvas. for more info just take a look at it's class\n-In the end do SwapBuffers so all you paint goes to buffer and will draw\n\n-For more info you should check other demos, classes, Wiki or ask on the forum\nhttp://forum.lazarus.freepascal.org/index.php?board=46.0\n}\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,\n  OpenGLContext, BGRABitmap, BGRABitmapTypes, BGRAOpenGL;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n  private\n    { private declarations }\n    OriginalBounds: TRect;\n    OriginalWindowState: TWindowState;\n    procedure SwitchFullScreen;\n  public\n    bmp: TBGLBitmap;\n    Tex: IBGLTexture;\n    OpenGLControl: TOpenGLControl;\n    DataLoaded: boolean;\n    procedure Load;  \n    procedure Unload;\n    procedure OpenGLControlDblClick(Sender: TObject);\n    procedure OpenGLControlPaint(Sender: TObject);\n    procedure OpenGLControlMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: integer);\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.SwitchFullScreen;\nbegin\n  if BorderStyle <> bsNone then begin\n    // To full screen\n    OriginalWindowState := WindowState;\n    OriginalBounds := BoundsRect;\n\n    BorderStyle := bsNone;\n    BoundsRect := Screen.MonitorFromWindow(Handle).BoundsRect;\n  end else begin\n    // From full screen\n    BorderStyle := bsSizeable;\n    if OriginalWindowState = wsMaximized then\n      WindowState := wsMaximized\n    else\n      BoundsRect := OriginalBounds;\n  end;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  OpenGLControl := TOpenGLControl.Create(Self);\n  with OpenGLControl do\n  begin\n    Align := alClient;\n    Parent := Self;\n    OnPaint := @OpenGLControlPaint;\n    OnMouseMove := @OpenGLControlMouseMove;\n    OnDblClick := @OpenGLControlDblClick;\n    //If you dont do it,you will have some problems\n    AutoResizeViewport := True;\n  end;\n  DataLoaded := False;\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  OpenGLControl.Free;\nend;\n\nprocedure TForm1.Load;\nvar path: string;\nbegin\n  if not DataLoaded then\n  begin\n    path := ExtractFilePath(Application.ExeName) + '..' + PathDelim + 'tux_game' + PathDelim + 'ground.png';\n    //Do this :\n    //Way1\n    //Tex := BGLTexture(path);\n\n    //Or this for more editing options\n    //Way2\n    bmp := TBGLBitmap.Create(path);\n    bmp.Rectangle(0,0,bmp.Width,bmp.Height,BGRABlack,dmSet);\n    Tex:=bmp.MakeTextureAndFree;\n\n    //Or whatever you want!\n\n    DataLoaded := True;\n  end;\nend;\n\nprocedure TForm1.Unload;\nbegin\n  if DataLoaded then\n  begin\n    Tex := nil;\n    DataLoaded := False;\n  end;\nend;\n\n// double-click to switch to full screen\nprocedure TForm1.OpenGLControlDblClick(Sender: TObject);\nbegin\n  Unload; //context may change when switching to full-screen\n  SwitchFullScreen;\nend;\n\nprocedure TForm1.OpenGLControlPaint(Sender: TObject);\nvar\n  mousePos: TPoint;\nbegin\n  { Load data }\n  Load;\n  { Draw Background }\n  BGLViewPort(OpenGLControl.Width, OpenGLControl.Height, BGRAWhite);\n  { Draw Texture }\n  mousePos := ScreenToClient(Mouse.CursorPos);\n  BGLCanvas.PutImage(mousePos.x - Tex.Width div 2, mousePos.y - Tex.Height div 2, Tex);\n  { Update }\n  OpenGLControl.SwapBuffers;\nend;\n\nprocedure TForm1.OpenGLControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);\nbegin\n  OpenGLControl.DoOnPaint;\nend;\n\nend.\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest2/opengltest2.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"opengltest2\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"lazopenglcontext\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"opengltest2.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"opengltest2\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest2/opengltest2.lpr",
    "content": "program opengltest2;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, lazopenglcontext, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest2/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 231\n  Height = 240\n  Top = 114\n  Width = 320\n  Caption = 'Rotate and zoom'\n  OnCreate = FormCreate\n  LCLVersion = '1.4.0.4'\n  object Timer1: TTimer\n    Interval = 15\n    OnTimer = Timer1Timer\n    left = 19\n    top = 16\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest2/unit1.pas",
    "content": "unit Unit1;\n\n{\n-If you didnt saw opengltest1, go see it first then come back\n\n-OpenGL is fast, so we want to test it a bit\n-Here you will see that you can update your painting much fast without any particular cpu using or whatever\n}\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  OpenGLContext, BGRABitmap, BGRAClasses, BGRABitmapTypes, BGRAOpenGL;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Timer1: TTimer;\n    procedure FormCreate(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n  private\n    { private declarations }\n  public\n    TexBig,TexSmall: IBGLTexture;\n    OpenGLControl: TOpenGLControl;\n    DataLoaded: boolean;\n    angle: single;\n    GoBack: boolean;\n    procedure Load;\n    procedure OpenGLControlPaint(Sender: TObject);\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  OpenGLControl := TOpenGLControl.Create(Self);\n  with OpenGLControl do\n  begin\n    Align := alClient;\n    Parent := Self;\n    OnPaint := @OpenGLControlPaint;\n    AutoResizeViewport := True;\n  end;\n  DataLoaded := False;\n  GoBack := False;\n  angle := 0;\n  WindowState := wsMaximized;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  if not GoBack then\n  begin\n    if angle = 360 then\n      GoBack := True;\n    IncF(angle, 1);\n  end\n  else\n  begin\n    if angle = 0 then\n      GoBack := False;\n    DecF(angle, 1);\n  end;\n  OpenGLControl.DoOnPaint;\nend;\n\nprocedure TForm1.Load;\nvar bmp, bmpSmall : TBGLBitmap;\nbegin\n  if not DataLoaded then\n  begin\n    bmp := TBGLBitmap.Create(ExtractFilePath(Application.ExeName) + 'earth.png');\n    bmp.ResampleFilter := rfBestQuality;\n    bmpSmall := bmp.Resample(bmp.Width div 2,bmp.Height div 2) as TBGLBitmap;\n    TexBig := bmp.MakeTextureAndFree;\n    TexSmall := bmpSmall.MakeTextureAndFree;\n\n    DataLoaded := True;\n  end;\nend;\n\nprocedure TForm1.OpenGLControlPaint(Sender: TObject);\nvar\n  x, y, w: single;\n  tex: IBGLTexture;\nbegin\n  Load;\n  BGLViewPort(OpenGLControl.Width, OpenGLControl.Height, BGRABlack);\n\n  x := OpenGLControl.Width / 2;\n  y := OpenGLControl.Height / 2;\n  w := (angle / 360) * OpenGLControl.Width;\n  if w < TexSmall.Width then\n    tex := TexSmall\n  else\n    tex := TexBig;\n  tex.StretchDrawAngle(x, y, w, w/tex.Width*tex.Height, angle, PointF(tex.Width/2,tex.Height/2), False);\n\n  OpenGLControl.SwapBuffers;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest3/opengltest3.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"opengltest3\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"lazopenglcontext\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"opengltest3.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"opengltest3\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest3/opengltest3.lpr",
    "content": "program opengltest3;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, lazopenglcontext, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource := True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest3/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 230\n  Height = 705\n  Top = 119\n  Width = 1223\n  Caption = 'Masking'\n  ClientHeight = 705\n  ClientWidth = 1223\n  OnCreate = FormCreate\n  OnShow = FormShow\n  LCLVersion = '1.6.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 705\n    Top = 0\n    Width = 144\n    Align = alLeft\n    ClientHeight = 705\n    ClientWidth = 144\n    TabOrder = 0\n    object RadioGroup1: TRadioGroup\n      Left = 1\n      Height = 79\n      Top = 1\n      Width = 142\n      Align = alTop\n      AutoFill = True\n      Caption = 'Mode'\n      ChildSizing.LeftRightSpacing = 6\n      ChildSizing.EnlargeHorizontal = crsHomogenousChildResize\n      ChildSizing.EnlargeVertical = crsHomogenousChildResize\n      ChildSizing.ShrinkHorizontal = crsScaleChilds\n      ChildSizing.ShrinkVertical = crsScaleChilds\n      ChildSizing.Layout = cclLeftToRightThenTopToBottom\n      ChildSizing.ControlsPerLine = 1\n      ClientHeight = 59\n      ClientWidth = 138\n      Items.Strings = (\n        'Texture'\n        'Mask'\n        'Texture+Mask'\n      )\n      TabOrder = 0\n    end\n    object GroupBox1: TGroupBox\n      Left = 1\n      Height = 64\n      Top = 80\n      Width = 142\n      Align = alTop\n      Caption = 'Masking'\n      ClientHeight = 44\n      ClientWidth = 138\n      TabOrder = 1\n      object TrackBar1: TTrackBar\n        Left = 5\n        Height = 25\n        Top = -1\n        Width = 130\n        Frequency = 15\n        Max = 255\n        Min = 1\n        Position = 128\n        Anchors = [akTop, akLeft, akRight]\n        TabOrder = 0\n      end\n      object Label1: TLabel\n        Left = 7\n        Height = 15\n        Top = 25\n        Width = 22\n        Caption = 'Add'\n        ParentColor = False\n      end\n      object Label2: TLabel\n        Left = 87\n        Height = 15\n        Top = 25\n        Width = 44\n        Anchors = [akTop, akRight]\n        Caption = 'Multiply'\n        ParentColor = False\n      end\n    end\n  end\n  object Panel2: TPanel\n    Left = 144\n    Height = 705\n    Top = 0\n    Width = 1079\n    Align = alClient\n    TabOrder = 1\n  end\n  object Timer1: TTimer\n    Enabled = False\n    Interval = 15\n    OnTimer = Timer1Timer\n    left = 40\n    top = 192\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest3/unit1.pas",
    "content": "unit Unit1;\n\n{\n-So lets put things together and play with masks\n-Just read the code, it should be clear\n-As you can see this demo will uses more cpu because it create mask every time it paints but still it is very fast\n}\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  ComCtrls, StdCtrls, OpenGLContext, BGRABitmap, BGRAClasses, BGRABitmapTypes, BGRAOpenGL;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    GroupBox1: TGroupBox;\n    Label1: TLabel;\n    Label2: TLabel;\n    Panel1: TPanel;\n    Panel2: TPanel;\n    RadioGroup1: TRadioGroup;\n    Timer1: TTimer;\n    TrackBar1: TTrackBar;\n    procedure FormCreate(Sender: TObject);\n    procedure FormShow(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n  private\n    OpenGLControl: TOpenGLControl;\n  public\n    Tex, Mask: IBGLTexture;\n    rectMask: TRect;\n    MainFont: IBGLFont;\n    r: single;\n    GoBack: boolean;\n    procedure OpenGLControlPaint(Sender: TObject);\n    procedure UpdateMask;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses Types,Math;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  OpenGLControl := TOpenGLControl.Create(Self);\n  with OpenGLControl do\n  begin\n    Align := alClient;\n    Parent := Panel2;\n    OnPaint := @OpenGLControlPaint;\n    AutoResizeViewport := True;\n  end;\n  RadioGroup1.ItemIndex := 0;\nend;\n\nprocedure TForm1.FormShow(Sender: TObject);\nbegin\n  //You can not make textures before form show\n  Tex := BGLTexture('Background.jpg');\n  MainFont := BGLFont('Arial',20);\n  Timer1.Enabled := True;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  if not GoBack then\n  begin\n    if r = 200 then\n      GoBack := True;\n    IncF(r, 1);\n  end\n  else\n  begin\n    if r = 50 then\n      GoBack := False;\n    DecF(r, 1);\n  end;\n  OpenGLControl.Invalidate;\nend;\n\nprocedure TForm1.OpenGLControlPaint(Sender: TObject);\nbegin\n  //Dont forget this\n  BGLViewPort(OpenGLControl.Width, OpenGLControl.Height, BGRABlack);\n\n  case RadioGroup1.ItemIndex of\n    0:\n    begin\n      //Draw just texture\n      //StretchPutImage will resample image to prefered size\n      BGLCanvas.StretchPutImage(0, 0, OpenGLControl.Width, OpenGLControl.Height, Tex);\n    end;\n    1:\n    begin\n      UpdateMask;\n      //See how mask looks\n      if Assigned(Mask) then\n      begin\n        Mask.BlendMode := obmNormal;\n        BGLCanvas.PutImage(rectMask.Left, rectMask.Top, Mask);\n      end;\n    end;\n    2:\n    begin\n      UpdateMask;\n      //Now see them together\n      if Assigned(Mask) then\n      begin\n        //draw only the part of the image that overlaps with the mask\n        BGLCanvas.ClipRect := rectMask;\n        BGLCanvas.StretchPutImage(0, 0, OpenGLControl.Width, OpenGLControl.Height, Tex);\n        BGLCanvas.NoClip;\n\n        //apply the mask\n        Mask.BlendMode := obmMultiply;\n        BGLCanvas.PutImage(rectMask.Left, rectMask.Top, Mask);\n      end;\n\n      //draw the whole picture without mask\n      BGLCanvas.StretchPutImage(0, 0, OpenGLControl.Width, OpenGLControl.Height, Tex, 255-TrackBar1.Position);\n\n      if Assigned(Mask) then\n      begin\n        //draw the mask\n        Mask.BlendMode := obmAdd;\n        BGLCanvas.PutImage(rectMask.Left, rectMask.Top, Mask, (255-TrackBar1.Position) div 4);\n      end;\n    end;\n  end;\n\n  MainFont.TextOut(0,0, inttostr(OpenGLControl.FrameDiffTimeInMSecs) + ' ms');\n\n  //And dont forget this\n  OpenGLControl.SwapBuffers;\nend;\n\nprocedure TForm1.UpdateMask;\nvar rectEllipse: TRect;\n    mousePos: TPoint;\n    bmp: TBGLBitmap;\nbegin\n  mousePos := Panel2.ScreenToControl(Mouse.CursorPos);\n\n  //determine area of the ellipse\n  rectEllipse := Rect(mousePos.x - ceil(r), mousePos.y - ceil(r),\n                 mousePos.x + ceil(r) + 1, mousePos.y + ceil(r) + 1);\n  rectMask := EmptyRect;\n  if IntersectRect(rectMask, rect(0,0, BGLCanvas.Width, BGLCanvas.Height), rectEllipse) then\n  begin\n    //render the ellipse\n    bmp := TBGLBitmap.Create(rectMask.Right-rectMask.Left, rectMask.Bottom-rectMask.Top, BGRABlack);\n    bmp.FillEllipseAntialias(mousePos.x-rectMask.Left, mousePos.y-rectMask.Top, r, r, BGRAWhite);\n    Mask := bmp.MakeTextureAndFree;\n  end else\n    Mask := nil;\nend;\n\nend.\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest4/opengltest4.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"opengltest4\"/>\n      <Scaled Value=\"True\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <XPManifest>\n        <DpiAware Value=\"True\"/>\n      </XPManifest>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes>\n      <Item Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages>\n      <Item>\n        <PackageName Value=\"BGLControls\"/>\n      </Item>\n      <Item>\n        <PackageName Value=\"LCL\"/>\n      </Item>\n    </RequiredPackages>\n    <Units>\n      <Unit>\n        <Filename Value=\"opengltest4.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit>\n      <Unit>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"opengltest4\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions>\n      <Item>\n        <Name Value=\"EAbort\"/>\n      </Item>\n      <Item>\n        <Name Value=\"ECodetoolError\"/>\n      </Item>\n      <Item>\n        <Name Value=\"EFOpenError\"/>\n      </Item>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest4/opengltest4.lpr",
    "content": "program opengltest4;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}\n  cthreads,\n  {$ENDIF}\n  {$IFDEF HASAMIGA}\n  athreads,\n  {$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Scaled:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest4/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 3241\n  Height = 668\n  Top = -541\n  Width = 675\n  Caption = 'Form1'\n  ClientHeight = 668\n  ClientWidth = 675\n  DesignTimePPI = 192\n  LCLVersion = '3.4.0.0'\n  object BGLVirtualScreen1: TBGLVirtualScreen\n    Left = 0\n    Height = 626\n    Top = 42\n    Width = 675\n    OnRedraw = BGLVirtualScreen1Redraw\n    Align = alClient\n    BevelWidth = 0\n    TabOrder = 0\n    UseDockManager = False\n    OnLoadTextures = BGLVirtualScreen1LoadTextures\n    OnUnloadTextures = BGLVirtualScreen1UnloadTextures\n  end\n  object Panel1: TPanel\n    Left = 0\n    Height = 42\n    Top = 0\n    Width = 675\n    Align = alTop\n    AutoSize = True\n    ChildSizing.HorizontalSpacing = 12\n    ChildSizing.VerticalSpacing = 12\n    ChildSizing.EnlargeHorizontal = crsHomogenousChildResize\n    ChildSizing.Layout = cclTopToBottomThenLeftToRight\n    ClientHeight = 42\n    ClientWidth = 675\n    TabOrder = 1\n    object Label1: TLabel\n      Left = 1\n      Height = 40\n      Top = 1\n      Width = 170\n      Caption = 'Blur radius'\n    end\n    object SpinEdit_Radius: TSpinEdit\n      Left = 183\n      Height = 40\n      Top = 1\n      Width = 157\n      MaxValue = 1000\n      OnChange = SpinEdit_RadiusChange\n      TabOrder = 0\n      Value = 100\n    end\n    object Direction: TLabel\n      Left = 352\n      Height = 40\n      Top = 1\n      Width = 154\n      Caption = 'Direction'\n    end\n    object SpinEdit_Direction: TSpinEdit\n      Left = 518\n      Height = 40\n      Top = 1\n      Width = 156\n      MinValue = 360\n      OnChange = SpinEdit_DirectionChange\n      TabOrder = 1\n    end\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest4/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,\n  Spin, BGLVirtualScreen, BGRAOpenGL, BGRABlurGL;\n\ntype\n  TForm1 = class(TForm)\n    BGLVirtualScreen1: TBGLVirtualScreen;\n    Label1: TLabel;\n    Direction: TLabel;\n    Panel1: TPanel;\n    SpinEdit_Radius: TSpinEdit;\n    SpinEdit_Direction: TSpinEdit;\n    procedure BGLVirtualScreen1LoadTextures(Sender: TObject;\n      BGLContext: TBGLContext);\n    procedure BGLVirtualScreen1Redraw(Sender: TObject; BGLContext: TBGLContext);\n    procedure BGLVirtualScreen1UnloadTextures(Sender: TObject;\n      BGLContext: TBGLContext);\n    procedure SpinEdit_DirectionChange(Sender: TObject);\n    procedure SpinEdit_RadiusChange(Sender: TObject);\n  private\n    FBackground: IBGLTexture;\n    FBlurShader: TBGLBlurShader;\n  public\n\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses BGRATransform, BGRABitmapTypes, GL;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.BGLVirtualScreen1Redraw(Sender: TObject;\n  BGLContext: TBGLContext);\nvar blurred: IBGLTexture;\nbegin\n  FBlurShader.Radius:= SpinEdit_Radius.Value;\n  blurred := FBlurShader.FilterBlurMotion(FBackground,\n    AffineMatrixRotationDeg(SpinEdit_Direction.Value) * PointF(1, 0));\n  BGLContext.Canvas.StretchPutImage(0, 0, BGLContext.Canvas.Width, BGLContext.Canvas.Height, blurred);\nend;\n\nprocedure TForm1.BGLVirtualScreen1LoadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  FBackground := BGLTexture(ResourceFile('Background1024.jpg'));\n  FBlurShader := TBGLBlurShader.Create(BGLContext.Canvas, rbNormal);\nend;\n\nprocedure TForm1.BGLVirtualScreen1UnloadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  FBackground := nil;\n  FreeAndNil(FBlurShader);\nend;\n\nprocedure TForm1.SpinEdit_DirectionChange(Sender: TObject);\nbegin\n  BGLVirtualScreen1.Invalidate;\nend;\n\nprocedure TForm1.SpinEdit_RadiusChange(Sender: TObject);\nbegin\n  BGLVirtualScreen1.Invalidate;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest5/ptestvirtualscreen.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"ptestvirtualscreen\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGLControls\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"ptestvirtualscreen.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"ptestvirtualscreen\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest5/ptestvirtualscreen.lpr",
    "content": "program ptestvirtualscreen;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest5/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 598\n  Height = 480\n  Top = 229\n  Width = 640\n  Caption = 'Form1'\n  ClientHeight = 480\n  ClientWidth = 640\n  DesignTimePPI = 192\n  LCLVersion = '3.4.0.0'\n  object BGLVirtualScreen1: TBGLVirtualScreen\n    Left = 0\n    Height = 480\n    Top = 0\n    Width = 640\n    OnRedraw = BGLVirtualScreen1Redraw\n    Align = alClient\n    BevelWidth = 0\n    TabOrder = 0\n    UseDockManager = False\n    OnElapse = BGLVirtualScreen1Elapse\n  end\n  object Timer1: TTimer\n    Interval = 15\n    OnTimer = Timer1Timer\n    Left = 188\n    Top = 164\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/opengltest5/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  BGLVirtualScreen, BGRAOpenGL;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BGLVirtualScreen1: TBGLVirtualScreen;\n    Timer1: TTimer;\n    procedure BGLVirtualScreen1Elapse(Sender: TObject; BGLContext: TBGLContext;\n      ElapsedMs: integer);\n    procedure BGLVirtualScreen1Redraw(Sender: TObject; BGLContext: TBGLContext);\n    procedure Timer1Timer(Sender: TObject);\n  private\n    FTime: single;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nuses BGRABitmapTypes, BGRAOpenGLType;\n\n{ TForm1 }\n\nprocedure TForm1.BGLVirtualScreen1Redraw(Sender: TObject;\n  BGLContext: TBGLContext);\nvar\n  i, j, tx, ty: Integer;\n  previousFramebuffer, framebuffer: TBGLCustomFrameBuffer;\n  texture: IBGLTexture;\n  time: single;\nbegin\n  BGLContext.Canvas.Fill(BGRABlack);\n\n  previousFramebuffer := BGLContext.Canvas.ActiveFrameBuffer;\n  framebuffer := TBGLFrameBuffer.Create(256, 256);\n  BGLContext.Canvas.ActiveFrameBuffer := framebuffer;\n  BGLContext.Canvas.Fill(BGRABlack);\n  BGLContext.Canvas.FillEllipse(128, 128, 128, 128, BGRAWhite);\n  BGLContext.Canvas.FillEllipse(128 + cos(FTime * 2*Pi/3)*32,\n    128 + sin(FTime * 2*Pi/3)*32, 64, 64, BGRABlack);\n  BGLContext.Canvas.ActiveFrameBuffer := previousFramebuffer;\n  texture := framebuffer.MakeTextureAndFree;\n\n  tx := texture.Width div 2;\n  ty := texture.Height div 2;\n  texture.BlendMode := obmAdd;\n  for i := -1 to (BGLContext.Canvas.Width+tx-1) div tx do\n    for j := -1 to (BGLContext.Canvas.Width+ty-1) div ty do\n      BGLContext.Canvas.PutImage(i * tx + cos((j + FTime) * 2*Pi/6)*tx/2,\n        j * ty + sin((i + FTime*0.7) * 2*Pi/6)*tx/2, texture,\n        BGRA((i and 3)*40, (j and 3)*40, ((i+j+1) and 3)*40));\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  BGLVirtualScreen1.Invalidate;\nend;\n\nprocedure TForm1.BGLVirtualScreen1Elapse(Sender: TObject;\n  BGLContext: TBGLContext; ElapsedMs: integer);\nbegin\n  FTime += ElapsedMs/1000;\nend;\n\nend.\n"
  },
  {
    "path": "test/test4lcl_opengl/tux_game/mainunit.lfm",
    "content": "object Form1: TForm1\n  Left = 388\n  Height = 600\n  Top = 110\n  Width = 800\n  HorzScrollBar.Page = 399\n  VertScrollBar.Page = 299\n  Caption = 'BGRABitmapPack + LCL + OpenGL'\n  ClientHeight = 600\n  ClientWidth = 800\n  OnClose = FormClose\n  OnCreate = FormCreate\n  OnKeyDown = FormKeyDown\n  OnKeyUp = FormKeyUp\n  OnResize = FormResize\n  LCLVersion = '1.4.0.4'\n  object Panel1: TPanel\n    Left = 0\n    Height = 29\n    Top = 0\n    Width = 800\n    Align = alTop\n    ClientHeight = 29\n    ClientWidth = 800\n    TabOrder = 2\n    object Label1: TLabel\n      Left = 8\n      Height = 15\n      Top = 4\n      Width = 39\n      Caption = 'Games:'\n      ParentColor = False\n    end\n    object Button1: TButton\n      Left = 56\n      Height = 25\n      Top = 0\n      Width = 32\n      Caption = '1'\n      Enabled = False\n      OnClick = Button1Click\n      TabOrder = 1\n      TabStop = False\n    end\n    object Button2: TButton\n      Left = 90\n      Height = 25\n      Top = 0\n      Width = 32\n      Caption = '2'\n      OnClick = Button2Click\n      TabOrder = 0\n      TabStop = False\n    end\n    object Label2: TLabel\n      Left = 140\n      Height = 15\n      Top = 4\n      Width = 265\n      Caption = 'Use arrow keys to move parent tux in game 1 (top)'\n      ParentColor = False\n    end\n  end\n  object BGLVirtualScreen1: TBGLVirtualScreen\n    Left = 0\n    Height = 563\n    Top = 29\n    Width = 800\n    OnRedraw = BGLVirtualScreen1Redraw\n    Align = alClient\n    BevelWidth = 0\n    Color = clNone\n    ParentColor = False\n    RedrawOnIdle = True\n    TabOrder = 0\n    UseDockManager = False\n    OnElapse = BGLVirtualScreen1Elapse\n    OnFramesPerSecond = BGLVirtualScreen1FramesPerSecond\n    OnLoadTextures = BGLVirtualScreen1LoadTextures\n    OnUnloadTextures = BGLVirtualScreen1UnloadTextures\n    OnMouseDown = BGLVirtualScreen1MouseDown\n    OnMouseMove = BGLVirtualScreen1MouseMove\n    OnMouseUp = BGLVirtualScreen1MouseUp\n  end\n  object BGLVirtualScreen2: TBGLVirtualScreen\n    Left = 0\n    Height = 8\n    Top = 592\n    Width = 800\n    OnRedraw = BGLVirtualScreen2Redraw\n    Align = alBottom\n    BevelWidth = 0\n    Color = clNone\n    ParentColor = False\n    RedrawOnIdle = True\n    TabOrder = 1\n    UseDockManager = False\n    OnClick = BGLVirtualScreen2Click\n    OnElapse = BGLVirtualScreen2Elapse\n    OnFramesPerSecond = BGLVirtualScreen2FramesPerSecond\n    OnLoadTextures = BGLVirtualScreen2LoadTextures\n    OnUnloadTextures = BGLVirtualScreen2UnloadTextures\n  end\nend\n"
  },
  {
    "path": "test/test4lcl_opengl/tux_game/mainunit.pas",
    "content": "unit MainUnit;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs,\n  ExtCtrls, StdCtrls, OpenGLContext, BGRAOpenGL, BGLVirtualScreen, UGame;\n\ntype\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BGLVirtualScreen1: TBGLVirtualScreen;\n    BGLVirtualScreen2: TBGLVirtualScreen;\n    Button1: TButton;\n    Button2: TButton;\n    Label1: TLabel;\n    Label2: TLabel;\n    Panel1: TPanel;\n\n    procedure BGLVirtualScreen2Click(Sender: TObject);\n    procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);\n    procedure FormCreate(Sender: TObject);\n    procedure FormResize(Sender: TObject);\n    procedure Button1Click(Sender: TObject);\n    procedure Button2Click(Sender: TObject);\n\n    { HANDLE MOUSE AND KEY STROKES }\n    procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);\n    procedure FormKeyUp(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);\n    procedure BGLVirtualScreen1MouseDown(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure BGLVirtualScreen1MouseMove(Sender: TObject; {%H-}Shift: TShiftState;\n      X, Y: Integer);\n    procedure BGLVirtualScreen1MouseUp(Sender: TObject; Button: TMouseButton;\n      {%H-}Shift: TShiftState; X, Y: Integer);\n\n    { VIRTUAL SCREEN 1 }\n    procedure BGLVirtualScreen1LoadTextures(Sender: TObject; BGLContext: TBGLContext);\n    procedure BGLVirtualScreen1Redraw(Sender: TObject; BGLContext: TBGLContext);\n    procedure BGLVirtualScreen1Elapse(Sender: TObject; BGLContext: TBGLContext; ElapsedMs: integer);\n    procedure BGLVirtualScreen1FramesPerSecond(Sender: TObject; {%H-}BGLContext: TBGLContext; FramesPerSecond: integer);\n    procedure BGLVirtualScreen1UnloadTextures(Sender: TObject; BGLContext: TBGLContext);\n\n    { VIRTUAL SCREEN 2 }\n    procedure BGLVirtualScreen2LoadTextures(Sender: TObject; BGLContext: TBGLContext);\n    procedure BGLVirtualScreen2Redraw(Sender: TObject; BGLContext: TBGLContext);\n    procedure BGLVirtualScreen2Elapse(Sender: TObject; BGLContext: TBGLContext; ElapsedMs: integer);\n    procedure BGLVirtualScreen2FramesPerSecond(Sender: TObject; {%H-}BGLContext: TBGLContext; FramesPerSecond: integer);\n    procedure BGLVirtualScreen2UnloadTextures(Sender: TObject; BGLContext: TBGLContext);\n  protected\n    procedure AdjustHeight;\n  public\n    GameContext1: TGameContext;\n    GameContext2: TGameContext;\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\nuses LCLType, BGRABitmapTypes;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  Position := poScreenCenter;\n  ClientWidth := 800;\n  ClientHeight := 600;\n  Constraints.MaxWidth := Width;\n\n  ResourceDir := {$IFDEF DARWIN}ExtractFilePath(Application.ExeName)+'../../../../'{$ELSE}\n                 '..'+PathDelim{$ENDIF};\n  GameContext1 := TGameContext.Create(False);\n  GameContext2 := nil;\n  { Textures are loaded in the LoadTextures event }\n\n  AdjustHeight;\nend;\n\nprocedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);\nbegin\n  { Textures must be freed while the virtual screens exist }\n  if Assigned(GameContext1) then\n  begin\n    BGLVirtualScreen1.UnloadTextures;\n    FreeAndNil(GameContext1);\n  end;\n  if Assigned(GameContext2) then\n  begin\n    BGLVirtualScreen2.UnloadTextures;\n    FreeAndNil(GameContext2);\n  end;\nend;\n\nprocedure TForm1.BGLVirtualScreen2Click(Sender: TObject);\nbegin\n  if not Assigned(GameContext2) then\n    Button2Click(Sender);\nend;\n\nprocedure TForm1.FormResize(Sender: TObject);\nbegin\n  AdjustHeight;\nend;\n\nprocedure TForm1.AdjustHeight;\nbegin\n  if Assigned(GameContext2) then\n  begin\n    BGLVirtualScreen2.Height := (ClientHeight-Panel1.Height) div 2;\n    BGLVirtualScreen2.Cursor := crDefault;\n  end\n  else\n  begin\n    BGLVirtualScreen2.Height := 8;\n    BGLVirtualScreen2.Cursor := crHandPoint;\n  end;\nend;\n\nprocedure TForm1.Button1Click(Sender: TObject);\nbegin\n  Button1.Enabled := false;\n  Button2.Enabled := true;\n\n  if Assigned(GameContext2) then\n  begin\n    BGLVirtualScreen2.UnloadTextures;\n    FreeAndNil(GameContext2);\n    AdjustHeight;\n  end;\nend;\n\nprocedure TForm1.Button2Click(Sender: TObject);\nbegin\n  Button1.Enabled := true;\n  Button2.Enabled := false;\n\n  if not Assigned(GameContext2) then\n  begin\n    GameContext2 := TGameContext.Create(True);\n    BGLVirtualScreen2.QueryLoadTextures; //query the event LoadTextures\n    AdjustHeight;\n  end;\nend;\n\n{---------------- HANDLE MOUSE AND KEY STROKES --------------}\n\nprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);\nbegin\n  GameContext1.KeyDown(Key,Shift);\nend;\n\nprocedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);\nbegin\n  GameContext1.KeyUp(Key,Shift);\nend;\n\nprocedure TForm1.BGLVirtualScreen1MouseDown(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nbegin\n  GameContext1.MouseDown(Button,X,Y);\nend;\n\nprocedure TForm1.BGLVirtualScreen1MouseMove(Sender: TObject;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n  GameContext1.MouseMove(X,Y);\nend;\n\nprocedure TForm1.BGLVirtualScreen1MouseUp(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nbegin\n  GameContext1.MouseMove(X,Y);\n  GameContext1.MouseUp(Button);\nend;\n\n\n{------------------ VIRTUAL SCREEN 1 ----------------}\n\nprocedure TForm1.BGLVirtualScreen1LoadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext1) then\n    GameContext1.LoadTextures(BGLContext);\nend;\n\nprocedure TForm1.BGLVirtualScreen1Redraw(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext1) then\n    GameContext1.Render(BGLContext);\nend;\n\nprocedure TForm1.BGLVirtualScreen1Elapse(Sender: TObject; BGLContext: TBGLContext; ElapsedMs: integer);\nbegin\n  if Assigned(GameContext1) then\n    GameContext1.Elapse(BGLContext, ElapsedMs);\nend;\n\nprocedure TForm1.BGLVirtualScreen1FramesPerSecond(Sender: TObject;\n  BGLContext: TBGLContext; FramesPerSecond: integer);\nbegin\n  if Assigned(GameContext1) then\n    GameContext1.FPS := FramesPerSecond;\nend;\n\nprocedure TForm1.BGLVirtualScreen1UnloadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext1) then\n    GameContext1.UnloadTextures(BGLContext);\nend;\n\n{-------------------- VIRTUAL SCREEN 2 -----------------}\n\nprocedure TForm1.BGLVirtualScreen2LoadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext2) then\n    GameContext2.LoadTextures(BGLContext);\nend;\n\nprocedure TForm1.BGLVirtualScreen2Redraw(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext2) then\n  begin\n    //draw an horizontal line to seperate visually from the other game\n    BGLContext.Canvas.Line(0,0,BGLContext.Width-1,0,BGRABlack,True);\n    BGLContext.Canvas.Translate(0,1);\n    GameContext2.Render(BGLContext);\n  end else\n  begin\n    //draw a handle to indicate it is reduced\n    BGLContext.Canvas.Fill(ColorToBGRA(clBtnFace));\n    BGLContext.Canvas.Line(1,3,BGLContext.Width-2,3, ColorToBGRA(clBtnHighlight));\n    BGLContext.Canvas.Line(1,4,BGLContext.Width-2,4, ColorToBGRA(clBtnShadow));\n  end;\nend;\n\nprocedure TForm1.BGLVirtualScreen2Elapse(Sender: TObject;\n  BGLContext: TBGLContext; ElapsedMs: integer);\nbegin\n  if Assigned(GameContext2) then\n    GameContext2.Elapse(BGLContext, ElapsedMs);\nend;\n\nprocedure TForm1.BGLVirtualScreen2FramesPerSecond(Sender: TObject;\n  BGLContext: TBGLContext; FramesPerSecond: integer);\nbegin\n  if Assigned(GameContext2) then\n    GameContext2.FPS := FramesPerSecond;\nend;\n\nprocedure TForm1.BGLVirtualScreen2UnloadTextures(Sender: TObject;\n  BGLContext: TBGLContext);\nbegin\n  if Assigned(GameContext2) then\n    GameContext2.UnloadTextures(BGLContext);\nend;\n\n\n\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/tux_game/tux_game.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <LRSInOutputDirectory Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"tux_game\"/>\n      <ResourceType Value=\"res\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IgnoreBinaries Value=\"False\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n        <LaunchingApplication PathPlusParams=\"\\usr\\X11R6\\bin\\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\\tools\\runwait.sh $(TargetCmdLine)\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"BGLControls\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"3\">\n      <Unit0>\n        <Filename Value=\"tux_game.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"mainunit.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"ugame.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit2>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <SearchPaths>\n      <UnitOutputDirectory Value=\"lib\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <UseAnsiStrings Value=\"False\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n</CONFIG>\n"
  },
  {
    "path": "test/test4lcl_opengl/tux_game/tux_game.lpr",
    "content": "program tux_game;\n\n{$mode objfpc}{$H+}\n\nuses\n  Interfaces, // this includes the LCL widgetset\n  Forms\n  { add your units here }, MainUnit, UGame;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/test4lcl_opengl/tux_game/ugame.pas",
    "content": "unit UGame;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, sysutils, BGRAGraphics, BGRABitmap, BGRAClasses, BGRABitmapTypes,\n  BGRAOpenGL, Controls;\n\nconst\n  FrameDurationMs = 15;\n\ntype\n  TTux = class;\n\n  { TGameContext }\n\n  TGameContext = class\n  protected\n    TexturesLoaded: boolean;\n    LeftKey,RightKey,UpKey: boolean;\n    texWalking,texGround: IBGLTexture;\n    tux,smallTux: TTux;\n    elapsedMs: single;\n    sun: IBGLTexture;\n    font, bubbleFont: IBGLRenderedFont;\n    CenterOnSmallTux: boolean;\n    infoTextAnimTime: single;\n    procedure AddGround(x,y,w: single);\n    function FindGround(x: single; var y: single): boolean;\n\n  public\n    FPS: integer;\n    constructor Create(ACenterOnSmallTux: boolean);\n    destructor Destroy; override;\n\n    procedure LoadTextures({%H-}ctx: TBGLContext);\n    procedure UnloadTextures({%H-}ctx: TBGLContext);\n    procedure Render(ctx: TBGLContext);\n    procedure Elapse(ctx: TBGLContext; ms: single);\n\n    procedure MouseDown({%H-}Button: TMouseButton; {%H-}X,{%H-}Y: integer);\n    procedure MouseMove({%H-}X,{%H-}Y: integer);\n    procedure MouseUp({%H-}Button: TMouseButton);\n    procedure KeyDown(var Key: Word; {%H-}Shift: TShiftState);\n    procedure KeyUp(var Key: Word; {%H-}Shift: TShiftState);\n  end;\n\n  { TTextBubble }\n\n  TTextBubble = class\n  protected\n    FText: string;\n    FFont: IBGLFont;\n  public\n    constructor Create(AText: string; AFont: IBGLFont);\n    procedure Draw(AXCenter, AYBottom: single);\n  end;\n\n  { TTux }\n\n  TTux = class(TBGLSprite)\n    Speed: TPointF;\n    LookingLeft: boolean;\n    Context: TGameContext;\n    Autoplay: boolean;\n    Parent: TTux;\n    OnTheGround: boolean;\n    Bubble,BubbleTooFar: TTextBubble;\n    BubbleTime: integer;\n    ShowBubbleTooFar: boolean;\n    goRight,goLeft,goUp: boolean;\n    waiting: integer;\n    JumpStrength: single;\n    procedure OnInit; override;\n    procedure OnDraw; override;\n    procedure OnTimer; override;\n    constructor Create(ATexture: IBGLTexture; AContext: TGameContext);\n    destructor Destroy; override;\n  end;\n\n  { TSmallTux }\n\n  TSmallTux = class(TTux)\n    procedure OnInit; override;\n    procedure OnTimer; override;\n  end;\n\n  { TGround }\n\n  TGround = class(TBGLSprite)\n    constructor Create(ATexture: IBGLTexture; AX,AY: Single; AFrame: integer);\n    procedure OnInit; override;\n  end;\n\nvar\n  ResourceDir : string;\n\nimplementation\n\nuses LCLType;\n\n{ TTextBubble }\n\nconstructor TTextBubble.Create(AText: string; AFont: IBGLFont);\nbegin\n  FText := AText;\n  FFont := AFont;\nend;\n\nprocedure TTextBubble.Draw(AXCenter, AYBottom: single);\nconst horizMargin = 6; vertMargin = 4;\nvar tw,x,y,tx,ty: integer;\nbegin\n  tw := round(FFont.TextWidth(FText));\n  tx := tw+horizMargin*2;\n  ty := round(FFont.TextHeight(FText))+2*vertMargin;\n  x := round(AXCenter)-tx div 2;\n  y := round(AYBottom)-ty;\n  BGLCanvas.RoundRect(x,y,x+tx,y+ty,12,12,BGRABlack, BGRA(255,255,250));\n  FFont.SetGradientColors(CSSBlack,CSSBlack,CSSDodgerBlue,CSSDodgerBlue);\n  FFont.TextOut(x+horizMargin,y+vertMargin,FText, taLeftJustify, tlTop, BGRABlack);\n  FFont.GradientColors := false;\nend;\n\n{ TSmallTux }\n\nprocedure TSmallTux.OnInit;\nbegin\n  inherited OnInit;\n  Autoplay:= true;\n  H := H*0.75;\n  W := W*0.75;\n  LookingLeft := true;\n  Bubble := TTextBubble.Create('Where are my parents?',Context.bubbleFont);\n  BubbleTooFar := TTextBubble.Create('Please stay close to me!',Context.bubbleFont);\n  //JumpStrength := 4;\nend;\n\nprocedure TSmallTux.OnTimer;\nbegin\n  inherited OnTimer;\n  if Parent = nil then\n  begin\n    if sqr(X-Context.tux.X)+sqr(Y-Context.tux.Y) < sqr(50) then\n    begin\n      Parent := Context.tux;\n      FreeAndNil(Bubble);\n      Bubble := TTextBubble.Create('Hey my parent!',Context.bubbleFont);\n      BubbleTime := 400;\n    end;\n  end;\nend;\n\n{ TGameContext }\n\nconstructor TGameContext.Create(ACenterOnSmallTux: boolean);\nbegin\n  LeftKey := false;\n  RightKey := false;\n  UpKey := false;\n  TexturesLoaded:= false;\n  CenterOnSmallTux:= ACenterOnSmallTux;\n  infoTextAnimTime := 0;\nend;\n\ndestructor TGameContext.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TGameContext.LoadTextures({%H-}ctx: TBGLContext);\nvar sunBmp: TBGLBitmap;\nbegin\n  if TexturesLoaded then exit;\n  Randomize;\n  texWalking := BGLTexture(ResourceDir+'tux_walking.png');\n  texWalking.SetFrameSize(64,64);\n\n  texGround := BGLTexture(ResourceDir+'ground.png');\n  texGround.SetFrameSize(32,32);\n\n  font := BGLFont('Arial', 20, CSSLightYellow,CSSBlack, [fsBold]);\n  bubbleFont := BGLFont('Arial', 16);\n  bubbleFont.HorizontalAlign := taCenter;\n  bubbleFont.Justify:= true;\n  bubbleFont.Padding := RectF(10,10,10,10);\n\n  AddGround(32,128,200);\n  AddGround(400,128,200);\n  AddGround(200,250,200);\n  AddGround(-32,250,150);\n  AddGround(400,380,200);\n  AddGround(300,500,150);\n  AddGround(-32,600-32,800+64);\n\n  tux := TTux.Create(texWalking,self);\n  tux.Location := PointF(128,128);\n\n  smallTux := TSmallTux.Create(texWalking,self);\n  smallTux.Location := PointF(450,128);\n\n  sunBmp := TBGLBitmap.Create(100,100);\n  sunBmp.FillEllipseLinearColorAntialias(50,50,49,49,BGRA(255,255,random(100)),BGRA(255,random(200),0));\n  sun := sunBmp.MakeTextureAndFree;\n  TBGLSprite.Create(sun,-2).Location := PointF(random(200),0);\n\n  TexturesLoaded:= true;\nend;\n\nprocedure TGameContext.Render(ctx: TBGLContext);\nconst infoText = 'Welcome to this demo showing how to use BGRABitmap with OpenGL';\nvar ofsX,ofsY,h: single;\n  r:TRectF;\n  alpha: byte;\nbegin\n  ctx.Canvas.FillRectLinearColor(Rect(0,0,ctx.Width,ctx.Height),\n       CSSSkyBlue,CSSSkyBlue,MergeBGRA(CSSSkyBlue,CSSBlue),MergeBGRA(CSSSkyBlue,CSSBlue));\n\n  if CenterOnSmallTux then\n  begin\n    ofsX := smallTux.X;\n    ofsY := smallTux.Y;\n  end else\n  begin\n    ofsX := tux.X;\n    ofsY := tux.Y;\n  end;\n  DecF(ofsX, ctx.Width div 2);\n  DecF(ofsY, ctx.Height div 2);\n  if ofsX > 800-ctx.Width then ofsX := 800-ctx.Width;\n  if ofsY > 600-ctx.Height then ofsY := 600-ctx.Height;\n  if ofsX < 0 then ofsX := 0;\n  if ofsY < 0 then ofsY := 0;\n\n  ctx.Canvas.Translate(-ofsX,-ofsY);\n  ctx.Sprites.OnDraw;\n  ctx.Canvas.Translate(ofsX,ofsY);\n\n  if infoTextAnimTime <= 500 then\n    alpha := round(infoTextAnimTime*255/500)\n  else if infoTextAnimTime <= 3500 then\n    alpha := 255\n  else if infoTextAnimTime <= 4000 then\n    alpha := round((4000-infoTextAnimTime)*255/500)\n  else\n    alpha := 0;\n\n  if alpha <> 0 then\n  begin\n    h := bubbleFont.TextHeight(infoText, 300)+bubbleFont.Padding.Top+bubbleFont.Padding.Bottom+4;\n    if infoTextAnimTime <= 500 then\n      h := h*infoTextAnimTime/500;\n    r.Left := ctx.Width/2-150;\n    r.Right := r.Left + 300;\n    r.Top := ctx.Height/2-h/2;\n    r.Bottom := r.Top + h;\n    ctx.Canvas.FillRect(r, BGRA(0,0,0,alpha div 2));\n    bubbleFont.Clipped:= true;\n    bubbleFont.TextRect(r, infoText, BGRA(255,255,255,alpha));\n    bubbleFont.Clipped:= false;\n  end;\n\n  if FPS <> 0 then\n     font.TextOut(ctx.Width-5,0,inttostr(FPS)+' FPS',taRightJustify);\nend;\n\nprocedure TGameContext.UnloadTextures(ctx: TBGLContext);\nbegin\n  if TexturesLoaded then\n  begin\n    ctx.Sprites.Clear;\n    TexturesLoaded := false;\n  end;\nend;\n\nprocedure TGameContext.AddGround(x, y, w: single);\nbegin\n  TGround.Create(texGround,x,y,1);\n  IncF(x, 32);\n  DecF(w, 32);\n  while w > 32 do\n  begin\n    TGround.Create(texGround,x,y,2);\n    IncF(x, 32);\n    DecF(w, 32);\n  end;\n  TGround.Create(texGround,x,y,3);\nend;\n\nprocedure TGameContext.Elapse(ctx: TBGLContext; ms: single);\nbegin\n  IncF(infoTextAnimTime, ms);\n  IncF(elapsedMs, ms);\n  while elapsedMs > FrameDurationMs do\n  begin\n    ctx.Sprites.OnTimer;\n    DecF(elapsedMs, FrameDurationMs);\n  end;\nend;\n\nfunction TGameContext.FindGround(x: single; var y: single): boolean;\nvar\n  i: Integer;\n  s: TBGLSprite;\n  g: TGround;\nbegin\n  for i := 0 to BGLSpriteEngine.Count-1 do\n  begin\n    s := BGLSpriteEngine.Sprite[i] as TBGLSprite;\n    if s is TGround then\n    begin\n      g := TGround(s);\n      if (x >= g.X-g.W/2) and (x <= g.X+g.W/2) then\n      begin\n        if (y >= g.Y-4) and (Y <= g.Y-4+16) then\n        begin\n          result := true;\n          y := g.Y-4;\n          exit;\n        end;\n      end;\n    end;\n  end;\n  result := false;\nend;\n\nprocedure TGameContext.MouseDown(Button: TMouseButton; X, Y: integer);\nbegin\n\nend;\n\nprocedure TGameContext.MouseMove(X, Y: integer);\nbegin\n\nend;\n\nprocedure TGameContext.MouseUp(Button: TMouseButton);\nbegin\n\nend;\n\nprocedure TGameContext.KeyDown(var Key: Word; Shift: TShiftState);\nbegin\n  If Key = VK_LEFT then begin LeftKey := true; Key := 0; end;\n  If Key = VK_RIGHT then begin RightKey := true; Key := 0; end;\n  If Key = VK_UP then begin UpKey := true; Key := 0; end;\nend;\n\nprocedure TGameContext.KeyUp(var Key: Word; Shift: TShiftState);\nbegin\n  If Key = VK_LEFT then begin LeftKey := false; Key := 0; end;\n  If Key = VK_RIGHT then begin RightKey := false; Key := 0; end;\n  If Key = VK_UP then begin UpKey := false; Key := 0; end;\nend;\n\n{ TGround }\n\nconstructor TGround.Create(ATexture: IBGLTexture; AX, AY: Single;\n  AFrame: integer);\nbegin\n  inherited Create(ATexture, -1);\n  Location := PointF(AX,AY+4);\n  Frame := AFrame;\nend;\n\nprocedure TGround.OnInit;\nbegin\n  HorizontalAlign := taCenter;\n  VerticalAlign := tlCenter;\nend;\n\n{ TTux }\n\nprocedure TTux.OnInit;\nbegin\n  HorizontalAlign := taCenter;\n  VerticalAlign := tlBottom;\n  Frame := 1;\n  Speed := PointF(0,0);\n  FrameLoopStart := 1;\n  FrameLoopEnd := 10;\n  LookingLeft:= false;\n  goRight:= false;\n  goLeft:= false;\n  goUp := false;\n  waiting := 0;\n  JumpStrength:= 5;\n  Parent := nil;\n  Autoplay:= false;\nend;\n\nprocedure TTux.OnDraw;\nbegin\n  if lookingLeft then Texture.ToggleFlipX;\n  inherited OnDraw;\n  if lookingLeft then Texture.ToggleFlipX;\n  if Bubble <> nil then\n  begin\n    if BubbleTime mod 500 > 400 then\n    begin\n      if ShowBubbleTooFar then\n        BubbleTooFar.Draw(x,y-H)\n      else\n        Bubble.Draw(x,y-H);\n    end;\n  end;\nend;\n\nprocedure TTux.OnTimer;\nvar curY: single;\n  nearParent: boolean;\nbegin\n  if not OnTheGround then\n  begin\n    //jumping\n  end else\n  begin\n    nearParent:= false;\n    if Autoplay then\n    begin\n      if waiting > 0 then\n        dec(waiting)\n      else\n      begin\n        goRight:= false;\n        goLeft:= false;\n        goUp := false;\n        if Parent<> nil then\n          nearParent := (abs(X-Parent.X) < 100) and (abs(Y-Parent.Y) < 150);\n\n        ShowBubbleTooFar := (Parent <> nil) and not nearParent;\n        if (Parent<> nil) and (abs(X-Parent.X) < 200) and (abs(Y-Parent.Y) < 200) then\n        begin\n          if BubbleTime > 500 then\n          begin\n            if not nearParent then\n              BubbleTime := 0\n            else\n              BubbleTime := 500;\n          end;\n          if (abs(X-Parent.X) > 40) then\n          begin\n            waiting := random(150);\n            if X > Parent.X then goLeft := true\n            else goRight := true;\n          end else\n          if (Parent.Y < Y-40) and (Parent.Y > Y-200) then\n          begin\n            waiting := random(150);\n            goUp := true;\n            waiting := 0;\n          end;\n        end else\n        begin\n          waiting := random(300);\n          case random(10) of\n            0..2: goLeft:= true;\n            3..5: goRight:= true;\n            9: begin goUp:= true; waiting := 0; end;\n          end;\n        end;\n      end;\n      curY := Y+5;\n      if goLeft and (X < 1) then\n      begin\n        goLeft := false;\n        waiting:= 0;\n      end;\n      if goRight and (X > 799) then\n      begin\n        goRight := false;\n        waiting:= 0;\n      end;\n      if not nearParent then\n      begin\n        if goLeft and not Context.FindGround(X-20,curY) then\n        begin\n          goLeft:= false;\n          waiting:= 0;\n        end;\n        if goRight and not Context.FindGround(X+20,curY) then\n        begin\n          goRight:= false;\n          waiting := 0;\n        end;\n      end else\n      if (Parent <> nil) and (abs(X-Parent.X) < 5) then\n      begin\n        goLeft:= false;\n        goRight:= false;\n      end;\n    end else\n    begin\n      goRight:= Context.RightKey;\n      goLeft:= Context.LeftKey;\n      goUp := Context.UpKey;\n    end;\n    if not goRight and not goLeft and not goUp then\n    begin\n      speed.X := speed.X*0.9;\n      if abs(speed.X)<0.1 then speed.X := 0;\n    end else\n    begin\n      //on the ground and can move\n      if goRight then IncF(Speed.X, 0.1);\n      if Speed.X > 1.3 then Speed.X := 1.3;\n      if goLeft then DecF(Speed.X, 0.1);\n      if Speed.X < -1.3 then Speed.X := -1.3;\n      if goUp then Speed.Y := -JumpStrength;\n\n      if (Speed.X < 0) and not LookingLeft and (round(Frame) = 1) then\n        lookingLeft:= true;\n      if (Speed.X > 0) and LookingLeft and (round(Frame) = 1) then\n        lookingLeft := false;\n    end;\n    if LookingLeft xor (Speed.X < 0) then\n      Frame := Frame-Speed.X*0.5\n    else\n      Frame := Frame+Speed.X*0.5;\n  end;\n\n  IncF(Speed.Y, 0.1);\n  Location := Location+Speed;\n  curY := Y;\n  OnTheGround:= Context.FindGround(X,curY);\n  if OnTheGround then Speed.Y := 0;\n  Y := curY;\n  if X < 0 then X := 0;\n  if X > 800 then X := 800;\n  inc(BubbleTime);\nend;\n\nconstructor TTux.Create(ATexture: IBGLTexture; AContext: TGameContext);\nbegin\n  Context := AContext;\n  inherited Create(ATexture, 0);\nend;\n\ndestructor TTux.Destroy;\nbegin\n  FreeAndNil(Bubble);\n  FreeAndNil(BubbleTooFar);\n  inherited Destroy;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/test4other/test4fpgui.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"test4fpgui\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4fpGUI\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"fpgui_toolkit\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"test4fpgui.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"test4fpgui\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n        <VariablesInRegisters Value=\"True\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n      </Debugging>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/test4fpgui.lpr",
    "content": "program test4fpgui;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Classes, SysUtils,\n  fpg_base, fpg_main, fpg_form,\n  BGRABitmapTypes, BGRABitmap;\n\ntype\n\n  { TMainForm }\n\n  TMainForm = class(TfpgForm)\n    procedure   FormPaint(Sender: TObject);\n  protected\n    FBmp: TBGRABitmap;\n  public\n    constructor Create(AOwner: TComponent); override;\n    destructor  Destroy; override;\n    procedure   AfterCreate; override;\n  end;\n\nprocedure DrawEllipseHello(bmp: TBGRABitmap);\nbegin\n  bmp.Fill(BGRABlack);\n  bmp.CustomPenStyle := BGRAPenStyle(2,1);\n  bmp.FillEllipseLinearColorAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5, BGRAPixelTransparent, BGRAWhite);\n  bmp.EllipseAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5,CSSRed,5);\n  if bmp.Height div 10 < 10 then\n    bmp.FontHeight := 10\n  else\n    bmp.FontHeight := bmp.Height div 10;\n  with bmp.FontPixelMetric do\n    bmp.TextOut(bmp.Width/2,bmp.Height/2 - (CapLine+Baseline)/2,'Hello world', BGRABlack, taCenter);\n  bmp.Canvas.Pen.Color := clBlue;\n  bmp.Canvas.MoveTo(0,0);\n  bmp.Canvas.LineTo(bmp.Width,bmp.Height);\nend;\n\n{ TMainForm }\n\nprocedure TMainForm.FormPaint(Sender: TObject);\nbegin\n  FBmp.SetSize(Width,Height);\n  DrawEllipseHello(FBmp);\n  FBmp.Draw(Canvas,0,0);\nend;\n\nconstructor TMainForm.Create(AOwner: TComponent);\nbegin\n  inherited Create(AOwner);\n  FBmp := TBGRABitmap.Create;\nend;\n\ndestructor TMainForm.Destroy;\nbegin\n  FBmp.Free;\n  inherited Destroy;\nend;\n\nprocedure TMainForm.AfterCreate;\nbegin\n  {%region 'Auto-generated GUI code' -fold}\n  {@VFD_BODY_BEGIN: MainForm}\n  Name := 'MainForm';\n  SetPosition(50, 50, 500, 400);\n  WindowTitle := 'BGRABitmap and fpGUI';\n  Hint := '';\n  WindowPosition := wpOneThirdDown;\n  OnPaint := @FormPaint;\n  {@VFD_BODY_END: MainForm}\n  {%endregion}\nend;\n\nprocedure MainProc;\nvar\n  frm: TMainForm;\nbegin\n  fpgApplication.Initialize;\n  TBGRABitmap.AddFreeTypeFontFolder(GetCurrentDir);\n  frm := TMainForm.Create(nil);\n  frm.Show;\n  fpgApplication.Run;\n  frm.Free;\nend;\n\n{$R *.res}\n\nbegin\n  MainProc;\nend.\n\n\n"
  },
  {
    "path": "test/test4other/test4nogui.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"TestBGRANoGui\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4NoGUI\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"test4nogui.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"test4nogui\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n        <VariablesInRegisters Value=\"True\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n      </Debugging>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/test4nogui.lpr",
    "content": "program test4nogui;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Classes, SysUtils, CustApp,\n  BGRAGraphics,\n  BGRABitmap,\n  BGRABitmapTypes;\n\ntype\n\n  { TTestBGRANoGui }\n\n  TTestBGRANoGui = class(TCustomApplication)\n  protected\n    procedure DoRun; override;\n  public\n    constructor Create(TheOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\nprocedure DrawEllipseHello(bmp: TBGRABitmap);\nbegin\n  bmp.Fill(BGRABlack);\n  bmp.CustomPenStyle := BGRAPenStyle(2,1);\n  bmp.FillEllipseLinearColorAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5, BGRAPixelTransparent, BGRAWhite);\n  bmp.EllipseAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5,CSSRed,5);\n  if bmp.Height div 10 < 10 then\n    bmp.FontHeight := 10\n  else\n    bmp.FontHeight := bmp.Height div 10;\n  with bmp.FontPixelMetric do\n  begin\n    bmp.TextOut(bmp.Width/2,bmp.Height/2 - (CapLine+Baseline)/2,'Hello world', BGRABlack, taCenter);\n    bmp.TextOutAngle(bmp.Width/6,bmp.Height/2 - (CapLine+Baseline)/2, -300, 'Going down!', BGRABlack, taLeftJustify);\n    bmp.TextOutAngle(bmp.Width*5/6,bmp.Height/2 - (CapLine+Baseline)/2, 300, 'Going up!', BGRABlack, taRightJustify);\n  end;\n  bmp.Canvas.Pen.Color := clBlue;\n  bmp.Canvas.MoveTo(0,0);\n  bmp.Canvas.LineTo(bmp.Width,bmp.Height);\nend;\n\n{ TTestBGRANoGui }\n\nprocedure TTestBGRANoGui.DoRun;\nvar\n  bmp: TBGRABitmap;\nbegin\n  TBGRABitmap.AddFreeTypeFontFolder(GetCurrentDir);\n\n  bmp := TBGRABitmap.Create(800,600,BGRABlack);\n  DrawEllipseHello(bmp);\n  bmp.SaveToFile('test.png');\n  bmp.free;\n\n  Terminate;\nend;\n\nconstructor TTestBGRANoGui.Create(TheOwner: TComponent);\nbegin\n  inherited Create(TheOwner);\nend;\n\ndestructor TTestBGRANoGui.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nvar\n  Application: TTestBGRANoGui;\n\n{$R *.res}\n\nbegin\n  Application:=TTestBGRANoGui.Create(nil);\n  Application.Title:='TestBGRANoGui';\n  Application.Run;\n  Application.Free;\nend.\n\n"
  },
  {
    "path": "test/test4other/test4nolcl.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"TestBGRANoLCL\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes>\n      <Item Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages>\n      <Item>\n        <PackageName Value=\"BGRABitmapPack4NoLCL\"/>\n      </Item>\n    </RequiredPackages>\n    <Units>\n      <Unit>\n        <Filename Value=\"test4nolcl.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"test4nolcl\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Other>\n      <ConfigFile>\n        <WriteConfigFilePath Value=\"\"/>\n      </ConfigFile>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions>\n      <Item>\n        <Name Value=\"EAbort\"/>\n      </Item>\n      <Item>\n        <Name Value=\"ECodetoolError\"/>\n      </Item>\n      <Item>\n        <Name Value=\"EFOpenError\"/>\n      </Item>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/test4nolcl.lpr",
    "content": "program test4nolcl_freetype;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}\n  cthreads, cwstring,\n  {$ENDIF}\n  Classes, SysUtils, CustApp,\n  BGRAGraphics,\n  BGRABitmap,\n  BGRABitmapTypes;\n\ntype\n\n  { TTestBGRANoLCL }\n\n  TTestBGRANoLCL = class(TCustomApplication)\n  protected\n    procedure DoRun; override;\n  public\n    constructor Create(TheOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\nprocedure DrawEllipseHello(bmp: TBGRABitmap);\nbegin\n  bmp.Fill(BGRABlack);\n  bmp.CustomPenStyle := BGRAPenStyle(2,1);\n  bmp.FillEllipseLinearColorAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5, BGRAPixelTransparent, BGRAWhite);\n  bmp.EllipseAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5,CSSRed,5);\n  bmp.Canvas.Pen.Color := clBlue;\n  bmp.Canvas.MoveTo(0,0);\n  bmp.Canvas.LineTo(bmp.Width,bmp.Height);\nend;\n\n{ TTestBGRANoLCL }\n\nprocedure TTestBGRANoLCL.DoRun;\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := TBGRABitmap.Create(800,600,BGRABlack);\n  DrawEllipseHello(bmp);\n  bmp.SaveToFile(ExtractFilePath(ExeName)+'test.png');\n  bmp.free;\n\n  // stop program loop\n  Terminate;\nend;\n\nconstructor TTestBGRANoLCL.Create(TheOwner: TComponent);\nbegin\n  inherited Create(TheOwner);\n  StopOnException:=True;\nend;\n\ndestructor TTestBGRANoLCL.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nvar\n  Application: TTestBGRANoLCL;\n\n{$R *.res}\n\nbegin\n  Application:=TTestBGRANoLCL.Create(nil);\n  Application.Title:='TestBGRANoLCL';\n  Application.Run;\n  Application.Free;\nend.\n\n"
  },
  {
    "path": "test/test4other/test4nolcl_freetype.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"TestBGRANoLCL_FreeType\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes>\n      <Item Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages>\n      <Item>\n        <PackageName Value=\"BGRABitmapPack4NoLCL_FreeType\"/>\n      </Item>\n    </RequiredPackages>\n    <Units>\n      <Unit>\n        <Filename Value=\"test4nolcl_freetype.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"test4nolcl_freetype\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Other>\n      <ConfigFile>\n        <WriteConfigFilePath Value=\"\"/>\n      </ConfigFile>\n      <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions>\n      <Item>\n        <Name Value=\"EAbort\"/>\n      </Item>\n      <Item>\n        <Name Value=\"ECodetoolError\"/>\n      </Item>\n      <Item>\n        <Name Value=\"EFOpenError\"/>\n      </Item>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/test4nolcl_freetype.lpr",
    "content": "program test4nolcl;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}\n  cthreads, cwstring,\n  {$ENDIF}\n  Classes, SysUtils, CustApp,\n  BGRAGraphics,\n  BGRABitmap,\n  BGRABitmapTypes;\n\ntype\n\n  { TTestBGRANoLCL }\n\n  TTestBGRANoLCL = class(TCustomApplication)\n  protected\n    procedure DoRun; override;\n  public\n    constructor Create(TheOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\nprocedure DrawEllipseHello(bmp: TBGRABitmap);\nbegin\n  bmp.Fill(BGRABlack);\n  bmp.CustomPenStyle := BGRAPenStyle(2,1);\n  bmp.FillEllipseLinearColorAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5, BGRAPixelTransparent, BGRAWhite);\n  bmp.EllipseAntialias(bmp.Width/2,bmp.Height/2,bmp.Width/2-5,bmp.Height/2-5,CSSRed,5);\n  if bmp.Height div 10 < 10 then\n    bmp.FontHeight := 10\n  else\n    bmp.FontHeight := bmp.Height div 10;\n  with bmp.FontPixelMetric do\n    bmp.TextOut(bmp.Width/2,bmp.Height/2 - (CapLine+Baseline)/2,'Hello world', BGRABlack, taCenter);\n  bmp.Canvas.Pen.Color := clBlue;\n  bmp.Canvas.MoveTo(0,0);\n  bmp.Canvas.LineTo(bmp.Width,bmp.Height);\nend;\n\n{ TTestBGRANoLCL }\n\nprocedure TTestBGRANoLCL.DoRun;\nvar\n  bmp: TBGRABitmap;\nbegin\n  bmp := TBGRABitmap.Create(800,600,BGRABlack);\n  DrawEllipseHello(bmp);\n  bmp.SaveToFile(ExtractFilePath(ExeName)+'test.png');\n  bmp.free;\n\n  // stop program loop\n  Terminate;\nend;\n\nconstructor TTestBGRANoLCL.Create(TheOwner: TComponent);\nvar\n  fs: TFileStream;\nbegin\n  inherited Create(TheOwner);\n  fs:= TFileStream.Create(ExtractFilePath(ExeName)+'arial.ttf', fmOpenRead);\n  TBGRABitmap.AddFreeTypeFontStream(fs, true);\n  StopOnException:=True;\nend;\n\ndestructor TTestBGRANoLCL.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nvar\n  Application: TTestBGRANoLCL;\n\n{$R *.res}\n\nbegin\n  Application:=TTestBGRANoLCL.Create(nil);\n  Application.Title:='TestBGRANoLCL_FreeType';\n  Application.Run;\n  Application.Free;\nend.\n\n"
  },
  {
    "path": "test/test4other/zengl/06 - Text (BGRABitmap)/demo06.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo06\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <VerifyObjMethodCallValidity Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4NoGUI\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo06.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo06\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/06 - Text (BGRABitmap)/demo06.lpr",
    "content": "program demo06;\n\n{$I zglCustomConfig.cfg}\n\n{$IFDEF WINDOWS}\n  {$R *.res}\n{$ENDIF}\n\nuses\n  Classes,BGRAGraphics,\n  BGRABitmapTypes,\n  BGRAZenGL in '..\\BGRAZenGL.pas',\n  {$IFDEF USE_ZENGL_STATIC}\n  zgl_main,\n  zgl_screen,\n  zgl_window,\n  zgl_timers,\n  zgl_keyboard,\n  zgl_render_2d,\n  zgl_fx,\n  zgl_primitives_2d,\n  zgl_math_2d,\n  zgl_utils\n  {$ELSE}\n  zglHeader\n  {$ENDIF}\n  ;\n\nvar\n  dirRes  : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};\n  fntMain : IBGLFont;\n\nprocedure Init;\n  //var\n  //  i : Integer;\nbegin\n  // RU: Загружаем данные о шрифте.\n  // EN: Load the font.\n  fntMain := BGLZenFont( dirRes + 'font.zfi' );\n  //fntMain.Clipped := true;\n  // RU: Если же текстуры именуются без использования маски вида \"$(имя_шрифта)FontName-page$(номер).$(расширение)\", то загрузку можно произвести следующим образом(для png):\n  // EN: If textures were named without special mask - \"$(font_name)-page$(number).$(extension)\", then use this method to load them(for png):\n  //for i := 0 to fntMain.Count.Pages - 1 do\n  //  fntMain.Pages[ i ] := tex_LoadFromFile( dirRes + 'font-page' + u_IntToStr( i ) + '.png' );\nend;\n\nprocedure Draw;\n  var\n    r : zglTRect;\n    s : UTF8String;\nbegin\n  batch2d_Begin();\n\n  // RU: ZenGL работает исключительно с кодировкой UTF-8, поэтому весь текст должен быть в UTF-8.\n  // EN: ZenGL works only with UTF-8 encoding, so all text should be encoded with UTF-8.\n\n  fntMain.TextOut(400, 25, 'String with center alignment', taCenter);\n\n  fntMain.Scale := 2;\n  fntMain.TextOut(400, 65, 'Scaling', taCenter);\n  fntMain.Scale := 1;\n\n  fntMain.SetGradientColors(CSSRed,CSSLime,CSSBlue,CSSWhite);\n  fntMain.TextOut( 400, 125, 'Gradient color for every symbol', taCenter);\n  fntMain.GradientColors := false;\n\n  r.X := 0;\n  r.Y := 300 - 128;\n  r.W := 192;\n  r.H := 256;\n  with r do fntMain.TextRect(X,Y,W,H, 'Simple text rendering in rectangle' );\n  pr2d_Rect( r.X, r.Y, r.W, r.H, $FF0000 );\n\n  r.X := 800 - 192;\n  r.Y := 300 - 128;\n  r.W := 192;\n  r.H := 256;\n  with r do fntMain.TextRect(X,Y,W,H, 'Text rendering using horizontal right alignment and vertical bottom alignment', taRightJustify, tlBottom);\n  pr2d_Rect( r.X, r.Y, r.W, r.H, $FF0000 );\n\n  r.X := 400 - 192;\n  r.Y := 300 - 128;\n  r.W := 384-200;\n  r.H := 256-190;\n  fntMain.Clipped:= true;\n  fntMain.Justify:= true;\n  with r do fntMain.TextRect(X,Y,W,H, 'This text uses justify alignment and centered vertically. Text which doesn''t fit inside the rectangle will be cropped.',\n                    tlCenter);\n  fntMain.Justify:= false;\n  fntMain.Clipped:= false;\n  pr2d_Rect( r.X, r.Y, r.W, r.H, $FF0000 );\n\n  r.X := 400 - 320;\n  r.Y := 300 + 160;\n  r.W := 640;\n  r.H := 128;\n  with r do fntMain.TextRect(X,Y,W,H, 'For starting new line LF symbol can be used' + #10 + 'code of which is equal to 10 and named in Unicode as \"Line Feed\"',\n                    taCenter, tlCenter);\n  pr2d_Rect( r.X, r.Y, r.W, r.H, $FF0000 );\n\n  // RU: Выводим количество FPS в правом углу\n  // EN: Render FPS in the top right corner\n  s := 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) );\n  fntMain.TextOut(800,0, s, taRightJustify);\n\n  batch2d_End();\nend;\n\nprocedure Timer;\nbegin\n  if key_Press( K_ESCAPE ) Then zgl_Exit();\n\n  key_ClearState();\nend;\n\nBegin\n  {$IFNDEF USE_ZENGL_STATIC}\n  if not zglLoad( libZenGL ) Then exit;\n  {$ENDIF}\n\n  randomize();\n\n  timer_Add( @Timer, 16 );\n\n  zgl_Reg( SYS_LOAD, @Init );\n  zgl_Reg( SYS_DRAW, @Draw );\n\n  wnd_SetCaption( '06 - Text' );\n\n  wnd_ShowCursor( TRUE );\n\n  scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );\n\n  zgl_Init();\nEnd.\n"
  },
  {
    "path": "test/test4other/zengl/06 - Text (BGRABitmap)/demo06_macosx.lpi",
    "content": "<?xml version=\"1.0\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/demo06\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <VerifyObjMethodCallValidity Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <PassLinkerOptions Value=\"True\"/>\n              <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n            <CompilerMessages>\n              <UseMsgFile Value=\"True\"/>\n            </CompilerMessages>\n            <CompilerPath Value=\"$(CompPath)\"/>\n            <ExecuteAfter>\n              <Command Value=\"sh macosx_postbuild.sh\"/>\n            </ExecuteAfter>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo06.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"demo06\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/demo06\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <PassLinkerOptions Value=\"True\"/>\n        <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n      <CompilerMessages>\n        <UseMsgFile Value=\"True\"/>\n      </CompilerMessages>\n      <CompilerPath Value=\"$(CompPath)\"/>\n      <ExecuteAfter>\n        <Command Value=\"sh macosx_postbuild.sh\"/>\n      </ExecuteAfter>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/06 - Text (BGRABitmap)/demo06_macosx.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleExecutable</key>\n  <string>demo06</string>\n  <key>CFBundleIconFile</key>\n  <string>demo06</string>\n  <key>CFBundleName</key>\n  <string>demo06</string>\n  <key>CFBundleIdentifier</key>\n  <string>zengl.demo06</string>\n  <key>CFBundlePackageType</key>\n  <string>APPL</string>\n  <key>CFBundleSignature</key>\n  <string>demo</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0</string>\n  <key>CFBundleVersion</key>\n  <string>1</string>\n  <key>CSResourcesFileMapped</key>\n  <true/>\n</dict>\n</plist>"
  },
  {
    "path": "test/test4other/zengl/06 - Text (BGRABitmap)/macosx_postbuild.sh",
    "content": "# copy resources\ncp ../../../bin/data/font* ../../../bin/demo06.app/Contents/Resources/\n# copy binary into bundle\nrm ../../../bin/demo06.app/Contents/MacOS/demo06\ncp ../../../bin/demo06 ../../../bin/demo06.app/Contents/MacOS/demo06\n# make Info.plist and copy icon\ncp -f demo06_macosx.plist ../../../bin/demo06.app/Contents/Info.plist\ncp ../../../bin/data/zengl.icns ../../../bin/demo06.app/Contents/Resources/demo06.icns"
  },
  {
    "path": "test/test4other/zengl/07 - Sprites (BGRABitmap)/demo07.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo07\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4NoGUI\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo07.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo07\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/07 - Sprites (BGRABitmap)/demo07.lpr",
    "content": "program demo07;\n\n{$I zglCustomConfig.cfg}\n\n{$IFDEF WINDOWS}\n  {$R *.res}\n{$ENDIF}\n\nuses\n  Classes,sysutils,\n  BGRABitmapTypes,BGRAGraphics,\n  BGRAZenGL in '..\\BGRAZenGl.pas',\n  {$IFDEF USE_ZENGL_STATIC}\n  zgl_main,\n  zgl_screen,\n  zgl_window,\n  zgl_timers,\n  zgl_keyboard,\n  zgl_camera_2d,\n  zgl_render_2d\n  {$ELSE}\n  zglHeader\n  {$ENDIF}\n  ;\n\ntype\n  TTux = record\n    Texture : IBGLTexture;\n    Frame   : Integer;\n    Pos     : TPointF;\n  end;\n\nconst\n  tuxSpeech : array[0..10] of string =\n    ('Hello!', '', 'This is an example with BGRABitmap and ZenGL.', 'Text bubbles are rendered with BGRABitmap and LazFreeType.',\n    'Then they are used as textures in OpenGL', '', 'In order to keep a high frame rate,',\n    'textures are rather prepared in advance.', 'However, some textures can be generated on the fly',\n    'as long as they are small enough.', '');\n\nvar\n  dirRes      : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};\n  texBack     : IBGLTexture;\n  texLogo     : IBGLTexture;\n  texGround   : IBGLTexture;\n  texTuxWalk  : IBGLTexture;\n  texTuxStand : IBGLTexture;\n  texBublRed  : IBGLTexture;\n  texBublBig  : IBGLTexture;\n  texBublGhost: IBGLTexture;\n  texSpeech   : IBGLTexture;\n  bmpTime     : TBGLBitmap;\n  fntMain     : IBGLFont;\n  tux         : array[ 0..20 ] of TTux;\n  speechIndex : integer;\n  camMain     : zglTCamera2D;\n  time        : Integer;\n  tuxHorizMargin: single;\n\nfunction CreateTextBubble(AText: string): IBGLTexture;\nconst horizMargin = 6; vertMargin = 4;\nvar bmp: TBGLBitmap;\nbegin\n  bmp := TBGLBitmap.Create;\n  bmp.FontHeight := 14;\n  bmp.FontStyle := [fsBold];\n  bmp.SetSize(((bmp.TextSize(AText).cx+2*horizMargin+2)+1) and not 1, bmp.FontPixelMetric.DescentLine+vertMargin*2+2);\n  bmp.FillTransparent;\n  bmp.RoundRectAntialias(1,1,bmp.Width-2,bmp.Height-2,12,12, BGRABlack, 1, BGRA(255,255,250));\n  bmp.TextOut(horizMargin+1,vertMargin+1,AText, BGRABlack);\n  result := bmp.MakeTextureAndFree;\nend;\n\nprocedure Init;\nconst rectBorder=1;\n  var\n    i : Integer;\nbegin\n  TBGLBitmap.AddFreeTypeFontFolder(StringReplace(dirRes, '/', PathDelim, [rfReplaceAll]), true);\n\n  // RU: Т.к. по умолчанию вся структура камеры заполняется нулями, следует инициализировать её стандартными значениями.\n  // EN: Camera must be initialized, because camera structure is zero-filled by default.\n  cam2d_Init( camMain );\n\n  texLogo := BGLTexture(dirRes + 'zengl.png');\n  texBack := BGLTexture(dirRes + 'back01.jpg');\n\n  texGround := BGLTexture(dirRes + 'ground.png');\n  // RU: Указываем размер кадра в текстуре.\n  // EN: Set the size of single frame for texture.\n  texGround.SetFrameSize(32,32);\n\n  texTuxWalk := BGLTexture( dirRes + 'tux_walking.png' );\n  texTuxWalk.SetFrameSize( 64, 64 );\n\n  texBublRed := CreateTextBubble('I''m so red...');\n  texBublBig := CreateTextBubble('I''m so big...');\n  texBublGhost := CreateTextBubble('???');\n\n  texTuxStand := BGLTexture( dirRes + 'tux_stand.png' );\n  texTuxStand.SetFrameSize( 64, 64 );\n\n  speechIndex := -1;\n  texSpeech := nil;\n\n  tuxHorizMargin:= 10*96 - 800;\n  for i := 0 to 9 do\n    begin\n      tux[ i ].Texture := texTuxWalk;\n      tux[ i ].Frame   := random( 19 ) + 2;\n      tux[ i ].Pos.X   := i * 96 - tuxHorizMargin/2;\n      tux[ i ].Pos.Y   := 32 + 64;\n    end;\n  for i := 10 to 19 do\n    begin\n      tux[ i ].Texture := texTuxWalk;\n      tux[ i ].Frame   := random( 19 ) + 2;\n      tux[ i ].Pos.X   := ( i - 9 ) * 96 - tuxHorizMargin/2;\n      tux[ i ].Pos.Y   := 600 - 32;\n    end;\n  tux[ 20 ].Texture := texTuxStand;\n  tux[ 20 ].Frame   := random( 19 ) + 2;\n  tux[ 20 ].Pos.X   := 400;\n  tux[ 20 ].Pos.Y   := 300 - 4;\n\n  fntMain := BGLFont('Arial', 20, BGRAWhite,BGRABlack);\nend;\n\nprocedure ExitProg;\nbegin\n  bmpTime.Free;\nend;\n\nprocedure UpdateBmpTime;\nvar\n  x : Single;\n  timeMask: TBGLBitmap;\nbegin\n  //prepare texture for rotating text\n  if bmpTime = nil then\n    bmpTime := TBGLBitmap.Create(256,32);\n  //draw gradient background\n  bmpTime.GradientFill(0,0,bmpTime.Width,bmpTime.Height, BGRABlack,BGRAPixelTransparent, gtReflected,\n                       PointF(0,bmpTime.Height/2),PointF(0,0),dmSet);\n  bmpTime.FontHeight := bmpTime.Height;\n  x := time - trunc(time/(2*bmpTime.width))*bmpTime.width*2;\n  if x > bmpTime.Width then x := 2*bmpTime.width-x;\n  bmpTime.TextOut(x, bmpTime.Height/2 - bmpTime.FontFullHeight/2, TimeToStr(Now), BGRAWhite, taCenter);\n  //apply alpha gradient\n  timeMask := TBGLBitmap.Create(bmpTime.width,bmpTime.Height);\n  timeMask.GradientFill(0,0,timeMask.width,timeMask.Height, BGRAWhite,BGRABlack, gtLinear, PointF(timeMask.Width-64,0),PointF(timeMask.Width,0),dmSet,false);\n  bmpTime.ApplyMask(timeMask,Rect(0,0,bmpTime.Width,bmpTime.Height),Point(0,0));\n  timeMask.Free;\nend;\n\nprocedure Draw;\n  var\n    i : Integer;\n    a,t : Single;\n    pt : TPointF;\n    newSpeechIndex: Integer;\nbegin\n  batch2d_Begin();\n  if time > 255 Then\n    begin\n      // RU: Для увеличения быстродействия можно отключить очистку буфера цвета, учитывая что экран полностью заполнен.\n      // EN: Rendering perfomance can be increased by disabling clearing the color buffer. This is a good idea because screen is full of objects.\n      zgl_Disable( COLOR_BUFFER_CLEAR );\n\n\n      // RU: Рисуем задний фон с размерами 800х600 используя текстуру \"texBack\".\n      // EN: Render the background with size 800x600 and using texture \"texBack\".\n      texBack.StretchDraw(0,0,800,600);\n\n      UpdateBmpTime;\n\n      //draw in four directions\n      if time > 512 then\n        a := (time-512)/3\n      else\n        a := 0;\n      pt := PointF(0,bmpTime.Height*0.5);\n      bmpTime.Texture.DrawAngle(400,300, 0 + a, pt, False, CSSOrange);\n      bmpTime.Texture.Mask.DrawAngle(400,300, 90 + a, pt, False, CSSSkyBlue);\n      bmpTime.Texture.DrawAngle(400,300, 180 + a, pt, False, CSSYellowGreen);\n      bmpTime.Texture.Mask.DrawAngle(400,300, 270 + a, pt, False);\n\n      // RU: Установить текущую камеру.\n      // EN: Set the current camera.\n      cam2d_Set( @camMain );\n\n      // RU: Рисуем землю.\n      // EN: Render the ground.\n      for i := -2 to 800 div texGround.FrameWidth + 1 do\n        texGround.Frame[2].Draw(i * texGround.FrameWidth, 96 - 12);\n      for i := -2 to 800 div texGround.FrameWidth + 1 do\n        texGround.Frame[2].Draw(i * texGround.FrameWidth, 600 - texGround.FrameHeight - 12);\n\n      // RU: Рисуем шагающих пингвинов.\n      // EN: Render penguins\n      for i := 0 to 9 do\n        if i = 2 Then\n          begin\n            // RU: Рисуем надпись в \"рамочке\" над пингвином.\n            // EN: Render the text in frame over penguins.\n            texBublRed.StretchDrawAngle(tux[ i ].Pos.X, tux[ i ].Pos.Y - tux[i].Texture.FrameHeight, texBublRed.Width*1.5,texBublRed.Height*1.5, sin(time*Pi/500)*30, taCenter,tlBottom);\n            // RU: Рисуем красного пингвина\n            // EN: Render red penguin\n            tux[i].Texture.SetGradientColors(CSSWhite,CSSWhite,CSSRed,CSSRed);\n            tux[i].Texture.Frame[tux[ i ].Frame div 2].Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y, taCenter,tlBottom);\n            tux[i].Texture.GradientColors := false;\n          end else\n            if i = 7 Then\n              begin\n                texBublGhost.Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y - tux[i].Texture.FrameHeight,taCenter,tlBottom,128);\n                // RU: Рисуем пингвина приведение\n                // EN: Render penguin ghost\n                tux[i].Texture.Frame[tux[ i ].Frame div 2].Mask.Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y, taCenter,tlBottom, 155);\n              end else\n                tux[i].Texture.Frame[tux[ i ].Frame div 2].Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y, taCenter,tlBottom);\n\n      // RU: Рисуем пингвинов шагающих в обратную сторону\n      // EN: Render penguins, that go another way\n      for i := 10 to 19 do\n        if i = 13 Then\n          begin\n            texBublBig.Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y-80, taCenter,tlBottom);\n            // RU: Рисуем \"большего\" пингвина\n            // EN: Render \"big\" penguin\n            tux[i].Texture.Frame[tux[ i ].Frame div 2].FlipX.StretchDraw(tux[ i ].Pos.X, tux[ i ].Pos.Y, 80, 80, taCenter, tlBottom);\n          end else\n            if i = 17 Then\n              begin\n                // RU: Рисуем \"высокого\" пингвина\n                // EN: Render \"tall\" penguin\n                tux[i].Texture.Frame[tux[ i ].Frame div 2].FlipX.StretchDraw(tux[ i ].Pos.X, tux[ i ].Pos.Y, 64, 80, taCenter, tlBottom);\n              end else\n                tux[i].Texture.Frame[tux[ i ].Frame div 2].FlipX.Draw(tux[ i ].Pos.X, tux[ i ].Pos.Y, taCenter, tlBottom);\n\n      // RU: Сбросить камеру.\n      // EN: Reset the camera.\n      cam2d_Set( nil );\n\n      // RU: Рисуем участок земли по центру экрана.\n      // EN: Render piece of ground in the center of screen.\n      texGround.Frame[1].Draw(11 * texGround.FrameWidth, 300 - 16);\n      texGround.Frame[2].Draw(12 * texGround.FrameWidth, 300 - 16);\n      texGround.Frame[3].Draw(13 * texGround.FrameWidth, 300 - 16);\n\n      newSpeechIndex := trunc(time/500) mod length(tuxSpeech);\n      if newSpeechIndex <> speechIndex then\n      begin\n        if texSpeech<> nil then\n        begin\n          texSpeech.FreeMemory;\n          texSpeech := nil;\n        end;\n        speechIndex:= newSpeechIndex;\n        if tuxSpeech[speechIndex]<>'' then\n          texSpeech := CreateTextBubble(tuxSpeech[speechIndex]);\n      end;\n      if texSpeech <> nil then texSpeech.Draw(tux[ 20 ].Pos.X, tux[ 20 ].Pos.Y - tux[ 20 ].Texture.FrameHeight, taCenter, tlBottom);\n\n      tux[ 20 ].Texture.Frame[tux[ 20 ].Frame div 2].Draw(tux[ 20 ].Pos.X, tux[ 20 ].Pos.Y, taCenter, tlBottom);\n    end;\n\n  if time <= 255 Then\n    texLogo.Draw(400,300, taCenter,tlCenter, time)\n  else\n    if time < 510 Then\n      begin\n        BGLCanvas.FillRect(RectF( 0, 0, 800, 600), BGRA(0,0,0,510 - time));\n        texLogo.Draw(400,300, taCenter,tlCenter, 510-time);\n      end;\n\n  if time > 255 Then\n    fntMain.TextOut(0, 0, 'FPS: ' + IntToStr( zgl_Get( RENDER_FPS ) ));\n  batch2d_End();\nend;\n\nprocedure Timer;\n  var\n    i : Integer;\nbegin\n  INC( time, 2 );\n\n  if time > 1000*Pi then\n    camMain.Angle := camMain.Angle + cos( time / 1000 ) / 10;\n\n  for i := 0 to 20 do\n    if (i <> 20) or (texSpeech <> nil) then\n    begin\n      INC( tux[ i ].Frame );\n      if tux[ i ].Frame > 20 Then\n        tux[ i ].Frame := 2;\n    end;\n  for i := 0 to 9 do\n    begin\n      tux[ i ].Pos.X := tux[ i ].Pos.X + 1.5;\n      if tux[ i ].Pos.X >= 800 + tuxHorizMargin/2 Then\n        tux[ i ].Pos.X := -tuxHorizMargin/2;\n    end;\n  for i := 10 to 19 do\n    begin\n      tux[ i ].Pos.X := tux[ i ].Pos.X - 1.5;\n      if tux[ i ].Pos.X <= -tuxHorizMargin/2 Then\n        tux[ i ].Pos.X := 800+tuxHorizMargin/2;\n    end;\n\n  if key_Press( K_ESCAPE ) Then zgl_Exit();\n  key_ClearState();\nend;\n\nBegin\n  {$IFNDEF USE_ZENGL_STATIC}\n  if not zglLoad( libZenGL ) Then exit;\n  {$ENDIF}\n\n  if not FileExists(dirRes+'arial.ttf') then\n     raise exception.Create('Please copy \"arial.ttf\" in directory \"'+dirRes+'\"');\n\n  randomize();\n\n  timer_Add( @Timer, 16 );\n\n  zgl_Reg( SYS_LOAD, @Init );\n  zgl_Reg( SYS_DRAW, @Draw );\n  zgl_Reg( SYS_EXIT, @ExitProg );\n\n  wnd_SetCaption( '07 - Sprites' );\n\n  wnd_ShowCursor( TRUE );\n\n  scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );\n\n  zgl_Init();\nEnd.\n"
  },
  {
    "path": "test/test4other/zengl/07 - Sprites (BGRABitmap)/demo07_macosx.lpi",
    "content": "<?xml version=\"1.0\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/demo07\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <VerifyObjMethodCallValidity Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <PassLinkerOptions Value=\"True\"/>\n              <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n            <CompilerMessages>\n              <UseMsgFile Value=\"True\"/>\n            </CompilerMessages>\n            <CompilerPath Value=\"$(CompPath)\"/>\n            <ExecuteAfter>\n              <Command Value=\"sh macosx_postbuild.sh\"/>\n            </ExecuteAfter>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo07.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"demo07\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/demo07\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <PassLinkerOptions Value=\"True\"/>\n        <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n      <CompilerMessages>\n        <UseMsgFile Value=\"True\"/>\n      </CompilerMessages>\n      <CompilerPath Value=\"$(CompPath)\"/>\n      <ExecuteAfter>\n        <Command Value=\"sh macosx_postbuild.sh\"/>\n      </ExecuteAfter>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/07 - Sprites (BGRABitmap)/demo07_macosx.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleExecutable</key>\n  <string>demo07</string>\n  <key>CFBundleIconFile</key>\n  <string>demo07</string>\n  <key>CFBundleName</key>\n  <string>demo07</string>\n  <key>CFBundleIdentifier</key>\n  <string>zengl.demo07</string>\n  <key>CFBundlePackageType</key>\n  <string>APPL</string>\n  <key>CFBundleSignature</key>\n  <string>demo</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0</string>\n  <key>CFBundleVersion</key>\n  <string>1</string>\n  <key>CSResourcesFileMapped</key>\n  <true/>\n</dict>\n</plist>"
  },
  {
    "path": "test/test4other/zengl/07 - Sprites (BGRABitmap)/macosx_postbuild.sh",
    "content": "# copy resources\ncp ../../../bin/data/zengl.png ../../../bin/demo07.app/Contents/Resources/\ncp ../../../bin/data/back01.jpg ../../../bin/demo07.app/Contents/Resources/\ncp ../../../bin/data/ground.png ../../../bin/demo07.app/Contents/Resources/\ncp ../../../bin/data/tux_walking.png ../../../bin/demo07.app/Contents/Resources/\ncp ../../../bin/data/tux_stand.png ../../../bin/demo07.app/Contents/Resources/\ncp ../../../bin/data/font* ../../../bin/demo07.app/Contents/Resources/\n# copy binary into bundle\nrm ../../../bin/demo07.app/Contents/MacOS/demo07\ncp ../../../bin/demo07 ../../../bin/demo07.app/Contents/MacOS/demo07\n# make Info.plist and copy icon\ncp -f demo07_macosx.plist ../../../bin/demo07.app/Contents/Info.plist\ncp ../../../bin/data/zengl.icns ../../../bin/demo07.app/Contents/Resources/demo07.icns"
  },
  {
    "path": "test/test4other/zengl/08 - Sprite Engine (BGRABitmap)/demo08.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo08\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"1\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack4NoGUI\"/>\n      </Item1>\n    </RequiredPackages>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo08.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/$(TargetCPU)-$(TargetOS)/demo08\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/08 - Sprite Engine (BGRABitmap)/demo08.lpr",
    "content": "program demo08;\n\n{$I zglCustomConfig.cfg}\n\n{$IFDEF WINDOWS}\n  {$R *.res}\n{$ENDIF}\n\nuses\n  BGRAZenGL in '..\\BGRAZenGL.pas',\n  BGRABitmapTypes,\n  {$IFDEF USE_ZENGL_STATIC}\n  zgl_main,\n  zgl_screen,\n  zgl_window,\n  zgl_timers,\n  zgl_keyboard,\n  zgl_render_2d,\n  zgl_primitives_2d,\n  zgl_utils\n  {$ELSE}\n  zglHeader\n  {$ENDIF}\n  ;\n\ntype\n  { TMikuSprite }\n\n  TMikuSprite = class(TBGLSprite)\n    Speed: TPointF;\n    procedure OnInit; override;\n    procedure OnTimer; override;\n    procedure OnDraw; override;\n  end;\n\nvar\n  dirRes    : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};\n  fntMain   : IBGLFont;\n  texLogo   : IBGLTexture;\n  texMiku   : IBGLTexture;\n  time      : Integer;\n\n{ TMikuSprite }\n\nprocedure TMikuSprite.OnInit;\nvar ratio: single;\nbegin\n  X := 800 + random( 800 ) + W/2;\n  Y := random( 600 - round(H) ) + H/2;\n  HorizontalAlign:= taCenter;\n  VerticalAlign:= tlCenter;\n\n  // RU: Задаем скорость движения.\n  // EN: Set the moving speed.\n  Speed.X := -random( 10 ) / 5 - 0.5;\n  Speed.Y := ( random( 10 ) - 5 ) / 5;\n\n  ratio := (Layer+3)/(9+3);\n  W := W*ratio;\n  H := H*ratio;\n\n  Color := BGRA(round(255*ratio),round(255*ratio),round(255*ratio));\nend;\n\nprocedure TMikuSprite.OnTimer;\nbegin\n  Location := Location + Speed;\n  Frame := Frame + ( abs( speed.X ) + abs( speed.Y ) ) / 25;\n  if Frame >= 8.49 Then\n    Frame := 0.51;\n\n  // RU: Если спрайт выходит за пределы по X, сразу же удаляем его.\n  // EN: Delete the sprite if it goes beyond X.\n  if X < -W/2 Then QueryDestroy;\n\n  // RU: Если спрайт выходит за пределы по Y, ставим его в очередь на удаление.\n  // EN: Add sprite to queue for delete if it goes beyond Y.\n  if Y < -H/2 Then QueryDestroy;\n  if Y > 600+H/2  Then QueryDestroy;\nend;\n\nprocedure TMikuSprite.OnDraw;\nbegin\n  if Layer = 9 then\n    Texture.BlendMode := obmAdd\n  else\n    Texture.BlendMode := obmNormal;\n  inherited OnDraw;\nend;\n\n// RU: Добавить 100 спрайтов.\n// EN: Add 100 sprites.\nprocedure AddMiku;\n  var\n    i : Integer;\nbegin\n  for i := 1 to 100 do\n    TMikuSprite.Create( texMiku, random( 91 ) div 10 );\nend;\n\n// RU: Удалить 100 спрайтов.\n// EN: Delete 100 sprites.\nprocedure DelMiku;\n  var\n    i : Integer;\nbegin\n  // RU: Удалим 100 спрайтов со случайным ID.\n  // EN: Delete 100 sprites with random ID.\n  for i := 1 to 100 do\n    BGLSpriteEngine.Delete( random( BGLSpriteEngine.Count ));\nend;\n\nprocedure Init;\n  var\n    i : Integer;\nbegin\n  texLogo := BGLTexture( dirRes + 'zengl.png' );\n\n  texMiku := BGLTexture( dirRes + 'miku.png' );\n  texMiku.SetFrameSize( 128, 128 );\n\n  // RU: Создадим 200 спрайтов Miku-chan :)\n  // EN: Create 200 sprites of Miku-chan :)\n  for i := 1 to 2 do\n    AddMiku();\n\n  fntMain := BGLZenFont( dirRes + 'font.zfi' );\nend;\n\nprocedure Draw;\nbegin\n  batch2d_Begin();\n  // RU: Рисуем все спрайты находящиеся в текущем спрайтовом менеджере.\n  // EN: Render all sprites contained in current sprite engine.\n  if time > 255 Then\n  begin\n    BGLSpriteEngine.OnDraw;\n    BGLCanvas.BlendMode := obmAdd;\n    BGLCanvas.FillEllipse(400,300,100,100, BGRA(255,0,0,128),False);\n    BGLCanvas.BlendMode := obmNormal;\n  end;\n\n  if time <= 255 Then\n    texLogo.Draw( 400, 300, taCenter, tlCenter, time )\n  else\n    if time < 510 Then\n      begin\n        BGLCanvas.FillRect(RectF(0, 0, 800, 600), BGRA(0,0,0,510 - time));\n        texLogo.Draw( 400, 300, taCenter, tlCenter, 510 - time)\n      end;\n\n  if time > 255 Then\n    begin\n      BGLCanvas.FillRect(RectF(0, 0, fntMain.TextWidth('Up/Down - Add/Delete Miku :)')+4, 64), BGRA(0,0,0,200));\n\n      fntMain.TextOut( 0, 0, 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) );\n      fntMain.TextOut( 0, 20, 'Sprites: ' + u_IntToStr( BGLSpriteEngine.Count ) );\n      fntMain.TextOut( 0, 40, 'Up/Down - Add/Delete Miku :)' );\n    end;\n  batch2d_End();\nend;\n\nprocedure Timer;\nbegin\n  INC( time, 2 );\n\n  // RU: Выполняем обработку всех спрайтов в текущем спрайтовом менеджере.\n  // EN: Process all sprites contained in current sprite engine.\n  BGLSpriteEngine.OnTimer;\n\n  // RU: По нажатию пробела очистить все спрайты.\n  // EN: Delete all sprites if space was pressed.\n  if key_Press( K_SPACE ) Then BGLSpriteEngine.Clear;\n  if key_Press( K_UP ) Then AddMiku();\n  if key_Press( K_DOWN ) Then DelMiku();\n\n  if key_Press( K_ESCAPE ) Then zgl_Exit();\n\n  key_ClearState();\nend;\n\nprocedure Quit;\nbegin\n  // RU: Очищаем память от созданных спрайтов.\n  // EN: Free allocated memory for sprites.\n  BGLSpriteEngine.Clear;\nend;\n\nBegin\n  {$IFNDEF USE_ZENGL_STATIC}\n  if not zglLoad( libZenGL ) Then exit;\n  {$ENDIF}\n\n  randomize;\n\n  timer_Add( @Timer, 16 );\n  timer_Add( @AddMiku, 1000 );\n\n  zgl_Reg( SYS_LOAD, @Init );\n  zgl_Reg( SYS_DRAW, @Draw );\n  zgl_Reg( SYS_EXIT, @Quit );\n\n  wnd_SetCaption( '08 - Sprite Engine' );\n\n  wnd_ShowCursor( TRUE );\n\n  scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );\n\n  zgl_Init();\nEnd.\n"
  },
  {
    "path": "test/test4other/zengl/08 - Sprite Engine (BGRABitmap)/demo08_macosx.lpi",
    "content": "<?xml version=\"1.0\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <Flags>\n        <SaveOnlyProjectUnits Value=\"True\"/>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"2\">\n      <Item1 Name=\"Release\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <Target>\n            <Filename Value=\"../../../bin/demo08\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n            <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n            <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <SyntaxMode Value=\"Delphi\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <VerifyObjMethodCallValidity Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"0\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <UseHeaptrc Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <PassLinkerOptions Value=\"True\"/>\n              <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n          <Other>\n            <Verbosity>\n              <ShowNotes Value=\"False\"/>\n              <ShowHints Value=\"False\"/>\n              <ShowGenInfo Value=\"False\"/>\n            </Verbosity>\n            <CompilerMessages>\n              <UseMsgFile Value=\"True\"/>\n            </CompilerMessages>\n            <CompilerPath Value=\"$(CompPath)\"/>\n            <ExecuteAfter>\n              <Command Value=\"sh macosx_postbuild.sh\"/>\n            </ExecuteAfter>\n          </Other>\n        </CompilerOptions>\n      </Item2>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <IncludeFileFilter Value=\"*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)\"/>\n      <ExcludeFileFilter Value=\"*.(bak|ppu|ppw|o|so);*~;backup\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <Units Count=\"1\">\n      <Unit0>\n        <Filename Value=\"demo08.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"demo08\"/>\n      </Unit0>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"../../../bin/demo08\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir);../../../headers\"/>\n      <OtherUnitFiles Value=\"../../../headers;../../../extra;../../../src;../../../lib/jpeg/$(TargetCPU)-$(TargetOS);../../../lib/msvcrt/$(TargetCPU);../../../lib/ogg/$(TargetCPU)-$(TargetOS);../../../lib/theora/$(TargetCPU)-$(TargetOS);../../../lib/zlib/$(TargetCPU)-$(TargetOS);../../../lib/zip/$(TargetCPU)-$(TargetOS)\"/>\n      <UnitOutputDirectory Value=\"../tmp/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <SyntaxMode Value=\"Delphi\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <CodeGeneration>\n      <SmartLinkUnit Value=\"True\"/>\n      <Optimizations>\n        <OptimizationLevel Value=\"3\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <UseLineInfoUnit Value=\"False\"/>\n        <StripSymbols Value=\"True\"/>\n      </Debugging>\n      <LinkSmart Value=\"True\"/>\n      <Options>\n        <PassLinkerOptions Value=\"True\"/>\n        <LinkerOptions Value=\"-macosx_version_min 10.4\"/>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n    <Other>\n      <Verbosity>\n        <ShowNotes Value=\"False\"/>\n        <ShowHints Value=\"False\"/>\n        <ShowGenInfo Value=\"False\"/>\n      </Verbosity>\n      <CompilerMessages>\n        <UseMsgFile Value=\"True\"/>\n      </CompilerMessages>\n      <CompilerPath Value=\"$(CompPath)\"/>\n      <ExecuteAfter>\n        <Command Value=\"sh macosx_postbuild.sh\"/>\n      </ExecuteAfter>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/test4other/zengl/08 - Sprite Engine (BGRABitmap)/demo08_macosx.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleExecutable</key>\n  <string>demo08</string>\n  <key>CFBundleIconFile</key>\n  <string>demo08</string>\n  <key>CFBundleName</key>\n  <string>demo08</string>\n  <key>CFBundleIdentifier</key>\n  <string>zengl.demo08</string>\n  <key>CFBundlePackageType</key>\n  <string>APPL</string>\n  <key>CFBundleSignature</key>\n  <string>demo</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0</string>\n  <key>CFBundleVersion</key>\n  <string>1</string>\n  <key>CSResourcesFileMapped</key>\n  <true/>\n</dict>\n</plist>"
  },
  {
    "path": "test/test4other/zengl/08 - Sprite Engine (BGRABitmap)/macosx_postbuild.sh",
    "content": "# copy resources\ncp ../../../bin/data/zengl.png ../../../bin/demo08.app/Contents/Resources/\ncp ../../../bin/data/miku.png ../../../bin/demo08.app/Contents/Resources/\ncp ../../../bin/data/font* ../../../bin/demo08.app/Contents/Resources/\n# copy binary into bundle\nrm ../../../bin/demo08.app/Contents/MacOS/demo08\ncp ../../../bin/demo08 ../../../bin/demo08.app/Contents/MacOS/demo08\n# make Info.plist and copy icon\ncp -f demo08_macosx.plist ../../../bin/demo08.app/Contents/Info.plist\ncp ../../../bin/data/zengl.icns ../../../bin/demo08.app/Contents/Resources/demo08.icns"
  },
  {
    "path": "test/test4other/zengl/bgrazengl.pas",
    "content": "unit BGRAZenGL;\n\n{ This unit is to be used with BGRABitmapPack4NoGUI_OpenGL\n\n  Add this unit to the Uses clause of your application.\n  Note that it is not registered in BGRABitmap package,\n  in order to be linked to ZenGL.\n\n  So you must either:\n  - supply the full path for this unit like this\n  \n    Uses BGRAZenGL in '..\\bgrabitmap\\bgrazengl.pas'; \n\t\n  - or copy this unit into ZenGL source path \n    \n  Other units do not require copying }  \n\n{$mode delphi}\n\ninterface\n\n{$DEFINE USE_ZENGL_SPRITE_ENGINE}\n\nuses\n  Classes,\n  BGRAOpenGLType, BGRASpriteGL, BGRACanvasGL,\n  BGRAGraphics, BGRABitmap, BGRABitmapTypes,\n  BGRAFontGL,\n  zgl_textures, zgl_memory, FPimage, zgl_font,\n  zgl_math_2d, zgl_sengine_2d;\n\ntype\n  TAlignment = Classes.TAlignment;\n  TTextLayout = BGRAGraphics.TTextLayout;\n\n  TOpenGLResampleFilter = BGRAOpenGLType.TOpenGLResampleFilter;\n  TOpenGLBlendMode = BGRAOpenGLType.TOpenGLBlendMode;\n\nconst\n  taLeftJustify = Classes.taLeftJustify;\n  taCenter = Classes.taCenter;\n  taRightJustify = Classes.taRightJustify;\n\n  tlTop = BGRAGraphics.tlTop;\n  tlCenter = BGRAGraphics.tlCenter;\n  tlBottom = BGRAGraphics.tlBottom;\n\n  orfBox = BGRAOpenGLType.orfBox;\n  orfLinear = BGRAOpenGLType.orfLinear;\n  obmNormal = BGRAOpenGLType.obmNormal;\n  obmAdd = BGRAOpenGLType.obmAdd;\n  obmMultiply = BGRAOpenGLType.obmMultiply;\n\ntype\n  IBGLFont = BGRAOpenGLType.IBGLFont;\n  IBGLTexture = BGRAOpenGLType.IBGLTexture;\n\n  { TBGLBitmap }\n\n  TBGLBitmap = class(TBGLCustomBitmap)\n  protected\n    class function GetOpenGLMaxTexSize: integer; override;\n    procedure NotifySizeTooBigForOpenGL; override;\n  public\n    constructor Create(AFilename: string); override; overload; //UTF8 by default\n    constructor Create(var AMemory: zglTMemory); overload;\n    function NewBitmap(Filename: string): TBGRACustomBitmap; override; overload;  //UTF8 by default\n    procedure LoadFromFile(const filename: string); override; overload; //UTF8 by default\n    procedure LoadFromFile(const filename: String; Handler: TFPCustomImageReader); override; overload; //UTF8 by default\n    procedure SaveToFile(const filename: string); override; overload; //UTF8 by default\n    procedure SaveToFile(const filename: string; Handler: TFPCustomImageWriter); override; overload; //UTF8 by default\n  end;\n\n  { TBGLSprite }\n\n{$IFDEF USE_ZENGL_SPRITE_ENGINE}\n  TBGLSprite = class(TBGLCustomSprite)\n  private\n    function GetZenSprite: zglPSprite2D;\n  protected\n    FColor  : TBGRAPixel;\n    FHorizontalAlign: TAlignment;\n    FVerticalAlign: TTextLayout;\n    function GetHorizontalAlign: TAlignment; override;\n    function GetVerticalAlign: TTextLayout; override;\n    procedure SetHorizontalAlign(AValue: TAlignment); override;\n    procedure SetVerticalAlign(AValue: TTextLayout); override;\n    function GetAlpha: Integer; override;\n    function GetAngle: Single; override;\n    function GetColor: TBGRAPixel; override;\n    function GetDestroy: Boolean;\n    function GetActualFrame: Single; override;\n    function GetH: Single; override;\n    function GetLayer: Integer; override;\n    function GetW: Single; override;\n    function GetX: Single; override;\n    function GetY: Single; override;\n    procedure SetAlpha(AValue: Integer); override;\n    procedure SetAngle(AValue: Single); override;\n    procedure SetColor(AValue: TBGRAPixel); override;\n    procedure SetDestroy(AValue: Boolean);\n    procedure SetActualFrame(AValue: Single); override;\n    procedure SetH(AValue: Single); override;\n    procedure SetLayer(AValue: Integer); override;\n    procedure SetW(AValue: Single); override;\n    procedure SetX(AValue: Single); override;\n    procedure SetY(AValue: Single); override;\n    property ZenSprite: zglPSprite2D read GetZenSprite;\n    procedure CreateHandle(ATexture: IBGLTexture; ALayer: Integer); override;\n  public\n    procedure QueryDestroy; override;\n  end;\n{$ELSE}\n  TBGLSprite = TBGLDefaultSprite;\n{$ENDIF}\n\nfunction BGRAToZenGL(AColor: TBGRAPixel): Longword;\nfunction ZenGLToBGRA(AColor: LongWord): TBGRAPixel; overload;\nfunction ZenGLToBGRA(AColor: LongWord; AAlpha: byte): TBGRAPixel; overload;\nfunction ColorToZenGL(AColor: TColor): Longword;\n\nfunction BGLZenFont(AFilename: UTF8String): IBGLFont; overload;\nfunction BGLZenFont(AZenFont: zglPFont): IBGLFont; overload;\nfunction BGLFont(AName: string; AEmHeight: integer; AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel; AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel; AOutlineColor: TBGRAPixel; AStyle: TFontStyles = []): IBGLRenderedFont; overload;\nfunction BGLFont(AName: string; AEmHeight: integer; ARenderer: TBGRACustomFontRenderer; ARendererOwned: boolean = true): IBGLRenderedFont; overload;\n\nfunction BGLTexture(ATexture: TBGLTextureHandle; AWidth,AHeight: integer): IBGLTexture; overload;\nfunction BGLTexture(ARGBAData: PLongWord; AllocatedWidth,AllocatedHeight, ActualWidth,ActualHeight: integer): IBGLTexture; overload;\nfunction BGLTexture(AFPImage: TFPCustomImage): IBGLTexture; overload;\nfunction BGLTexture(ABitmap: TBitmap): IBGLTexture; overload;\nfunction BGLTexture(AWidth, AHeight: integer; Color: TColor): IBGLTexture; overload;\nfunction BGLTexture(AWidth, AHeight: integer; Color: TBGRAPixel): IBGLTexture; overload;\nfunction BGLTexture(AFilenameUTF8: string): IBGLTexture; overload;\nfunction BGLTexture(AStream: TStream): IBGLTexture; overload;\nfunction BGLTexture(var AMemory: zglTMemory): IBGLTexture; overload;\n\nfunction BGLSpriteEngine: TBGLCustomSpriteEngine;\n\nfunction BGLCanvas: TBGLCustomCanvas;\n\nimplementation\n\nuses Types, zgl_utils, zgl_opengl_all, zgl_opengl, zgl_render_2d,\n  zgl_sprite_2d, zgl_log, zgl_fx, zgl_file, zgl_text,\n  zgl_camera_2d,\n  BGRATransform, BGRAFreeType,\n  BGRAMatrix3D;\n\nconst\n  GL_LINE_LOOP                      = $0002;\n  GL_LINE_STRIP                     = $0003;\n\nvar\n  BGLCanvasInstance: TBGLCustomCanvas;\n\ntype\n  PSpriteData = ^TSpriteData;\n  TSpriteData = record\n    ZenSprite: zglTSprite2D;\n    Obj: TBGLCustomSprite;\n  end;\n\n  { TZenMemoryStream }\n\n  TZenMemoryStream = class(TStream)\n  private\n    function GetHandle: zglPMemory;\n  protected\n    FZenMemory: zglPMemory;\n    FZenMemoryOwned: boolean;\n    function GetSize: Int64; override;\n    procedure SetSize(NewSize: Longint); override; overload;\n    function GetPosition: Int64; override;\n  public\n    constructor Create; overload;\n    constructor Create(AHandle: zglPMemory); overload;\n    destructor Destroy; override;\n    function Read(var Buffer; Count: Longint): Longint; override;\n    function Write(const Buffer; Count: Longint): Longint; override;\n    function Seek(Offset: Longint; Origin: Word): Longint; override;\n    property Handle: zglPMemory read FZenMemory;\n  end;\n\n  { TBGLTexture }\n\n  TBGLTexture = class(TBGLCustomTexture)\n  protected\n    FZenFlags: LongWord;\n\n    function GetFlags: LongWord; virtual;\n\n    class function GetOpenGLMaxTexSize: integer; override;\n    function CreateOpenGLTexture(ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer; RGBAOrder: boolean): TBGLTextureHandle; override;\n    procedure UpdateOpenGLTexture(ATexture: TBGLTextureHandle; ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth,AActualHeight: integer; RGBAOrder: boolean); override;\n    procedure SetOpenGLTextureSize(ATexture: TBGLTextureHandle; AAllocatedWidth, AAllocatedHeight, AActualWidth, AActualHeight: integer); override;\n    procedure ComputeOpenGLFramesCoord(ATexture: TBGLTextureHandle; FramesX: Integer=1; FramesY: Integer=1); override;\n    function GetOpenGLFrameCount(ATexture: TBGLTextureHandle): integer; override;\n    function GetEmptyTexture: TBGLTextureHandle; override;\n    procedure FreeOpenGLTexture(ATexture: TBGLTextureHandle); override;\n    procedure UpdateGLResampleFilter(ATexture: TBGLTextureHandle; AFilter: TOpenGLResampleFilter); override;\n\n    procedure DoDrawAffine(Origin, HAxis, VAxis: TPointF; AColor: TBGRAPixel); override;\n    procedure DoStretchDraw(x,y,w,h: single; AColor: TBGRAPixel); override;\n    procedure DoStretchDrawAngle(x,y,w,h,angleDeg: single; rotationCenter: TPointF; AColor: TBGRAPixel); override;\n    procedure ToggleFlipX; override;\n    procedure ToggleFlipY; override;\n    procedure Init(ATexture: TBGLTextureHandle; AWidth,AHeight: integer; AOwned: boolean); override;\n    procedure NotifyInvalidFrameSize; override;\n    procedure NotifyErrorLoadingFile(AFilename: string); override;\n\n    function NewEmpty: TBGLCustomTexture; override;\n    function NewFromTexture(ATexture: TBGLTextureHandle; AWidth,AHeight: integer): TBGLCustomTexture; override;\n    function Duplicate: TBGLCustomTexture; override;\n    procedure FreeMemoryOnDestroy; override;\n  public\n    constructor Create(var AMemory: zglTMemory); overload;\n  end;\n\n  { TBGRAZenFont }\n\n  TBGRAZenFont = class(TBGLCustomFont)\n  protected\n    FZenFont: zglPFont;\n    FZenFontOwned: boolean;\n    FFlags: LongWord;\n    FGradientColors: array[1..4] of TBGRAPixel;\n    function LoadFromFile(AFilename: UTF8String): boolean; override;\n    function GetPage(AIndex: integer): zglPTexture;\n    procedure SetPage(AIndex: integer; AValue: zglPTexture);\n    function GetFlags: LongWord;\n\n    procedure Init; override;\n    procedure FreeMemoryOnDestroy; override;\n    procedure DoTextOut(X, Y: Single; const Text : UTF8String; AColor: TBGRAPixel); override;\n    procedure DoTextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel); override;\n\n    function GetClipped: boolean; override;\n    function GetUseGradientColors: boolean; override;\n    function GetJustify: boolean; override;\n    procedure SetClipped(AValue: boolean); override;\n    procedure SetUseGradientColors(AValue: boolean); override;\n    procedure SetJustify(AValue: boolean); override;\n  public\n    constructor Create(AHandle: zglPFont); overload;\n    procedure FreeMemory; override;\n    procedure SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel); override;\n    function TextWidth(const Text: UTF8String): single; override;\n    function TextHeight(const Text: UTF8String): single; override; overload;\n    function TextHeight(const Text: UTF8String; AWidth: single): single; override; overload;\n  end;\n\n  { TBGLZenSpriteEngine }\n\n  TBGLZenSpriteEngine = class(TBGLCustomSpriteEngine)\n  protected\n    FSprites: array of TBGLCustomSprite;\n    function GetCount: integer; override;\n    function GetSprite(AIndex: integer): TBGLCustomSprite; override;\n  public\n    procedure Add(ASprite: TBGLCustomSprite); override;\n    procedure Remove(ASprite: TBGLCustomSprite); override;\n    procedure OnDraw; override;\n    procedure OnTimer; override;\n    procedure Clear; override;\n    procedure Delete(AIndex: integer); override;\n  end;\n\n  { TBGLZenCanvas }\n\n  TBGLZenCanvas = class(TBGLCustomCanvas)\n  protected\n    FMatrix: TAffineMatrix;\n    FOldBlendMode : TOpenGLBlendMode;\n    FFaceCulling: TFaceCulling;\n    function GetMatrix: TAffineMatrix; override;\n    procedure SetMatrix(const AValue: TAffineMatrix); override;\n\n    procedure InternalSetColor(const AColor: TBGRAPixel); override;\n    procedure InternalSetColorF(const AColor: TColorF); override;\n    procedure InternalStartPutPixel(const pt: TPointF); override;\n    procedure InternalStartPolyline(const pt: TPointF); override;\n    procedure InternalStartPolygon(const pt: TPointF); override;\n    procedure InternalStartTriangleFan(const pt: TPointF); override;\n    procedure InternalContinueShape(const pt: TPointF); override;\n    procedure InternalEndShape; override;\n\n    procedure InternalStartBlend; override;\n    procedure InternalEndBlend; override;\n\n    procedure InternalStartBlendTriangles; override;\n    procedure InternalStartBlendQuads; override;\n    procedure InternalEndBlendTriangles; override;\n    procedure InternalEndBlendQuads; override;\n\n    procedure EnableScissor(AValue: TRect); override;\n    procedure DisableScissor; override;\n\n    function GetBlendMode: TOpenGLBlendMode; override;\n    procedure SetBlendMode(AValue: TOpenGLBlendMode); override;\n\n    function GetFaceCulling: TFaceCulling; override;\n    procedure SetFaceCulling(AValue: TFaceCulling); override;\n  public\n    procedure Fill(AColor: TBGRAPixel); override;\n\n    procedure Translate(x,y: single); override;\n    procedure Scale(sx,sy: single); override;\n    procedure RotateDeg(angleCW: single); override;\n    procedure RotateRad(angleCCW: single); override;\n  end;\n\nfunction GetZenBlendMode: TOpenGLBlendMode;\nbegin\n  case b2dCurBlendMode and 255 of\n    FX_BLEND_ADD: result := obmAdd;\n    FX_BLEND_MULT, FX_BLEND_MASK: result := obmMultiply;\n    else result := obmNormal;\n  end;\nend;\n\nfunction ToZenBlendMode(ABlendMode: TOpenGLBlendMode): Byte;\nbegin\n  case ABlendMode of\n    obmAdd: result := FX_BLEND_ADD;\n    obmMultiply: result := FX_BLEND_MULT;\n  else\n    result := FX_BLEND_NORMAL;\n  end;\nend;\n\nprocedure SetZenBlendMode(ABlendMode: TOpenGLBlendMode);\nvar ZenMode : Byte;\nbegin\n  fx_SetBlendMode(ToZenBlendMode(ABlendMode));\nend;\n\nfunction BGRAToZenGL(AColor: TBGRAPixel): Longword;\nbegin\n  result := (AColor.red shl 16) + (AColor.green shl 8) + AColor.blue;\nend;\n\nfunction ZenGLToBGRA(AColor: LongWord): TBGRAPixel;\nbegin\n  result := ZenGLToBGRA(AColor,255);\nend;\n\nfunction ZenGLToBGRA(AColor: LongWord; AAlpha: byte): TBGRAPixel;\nbegin\n  result.red := AColor shr 16 and $ff;\n  result.green := AColor shr 8 and $ff;\n  result.blue := AColor and $ff;\n  result.alpha := AAlpha;\nend;\n\nfunction ColorToZenGL(AColor: TColor): Longword;\nvar r,g,b: byte;\nbegin\n  RedGreenBlue(AColor,r,g,b);\n  result := (r shl 16) + (g shl 8) + b;\nend;\n\nfunction BGLZenFont(AFilename: UTF8String): IBGLFont;\nbegin\n  result := TBGRAZenFont.Create(AFilename);\nend;\n\nfunction BGLZenFont(AZenFont: zglPFont): IBGLFont;\nbegin\n  result := TBGRAZenFont.Create(AZenFont);\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AStyle: TFontStyles = []): IBGLRenderedFont;\nbegin\n  result := BGLFont(AName, AEmHeight, TBGRAFreeTypeFontRenderer.Create);\n  result.Style := AStyle;\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel;\n  AStyle: TFontStyles): IBGLRenderedFont;\nbegin\n  result := BGLFont(AName, AEmHeight, TBGRAFreeTypeFontRenderer.Create);\n  result.Color := AColor;\n  result.Style := AStyle;\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer; AColor: TBGRAPixel;\n  AOutlineColor: TBGRAPixel; AStyle: TFontStyles): IBGLRenderedFont; overload;\nvar\n  renderer: TBGRAFreeTypeFontRenderer;\nbegin\n  renderer := TBGRAFreeTypeFontRenderer.Create;\n  renderer.OuterOutlineOnly:= true;\n  renderer.OutlineColor := AOutlineColor;\n  renderer.OutlineVisible := true;\n  result := BGLFont(AName, AEmHeight, renderer);\n  result.Color := AColor;\n  result.Style := AStyle;\nend;\n\nfunction BGLFont(AName: string; AEmHeight: integer;\n  ARenderer: TBGRACustomFontRenderer;\n  ARendererOwned: boolean): IBGLRenderedFont;\nvar f: TBGLRenderedFont;\nbegin\n  f:= TBGLRenderedFont.Create(ARenderer, ARendererOwned);\n  f.Name := AName;\n  f.EmHeight := AEmHeight;\n  result := f;\nend;\n\nfunction BGLTexture(ATexture: TBGLTextureHandle; AWidth, AHeight: integer\n  ): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(ATexture, AWidth,AHeight);\nend;\n\nfunction BGLTexture(ARGBAData: PLongWord; AllocatedWidth, AllocatedHeight,\n  ActualWidth, ActualHeight: integer): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(ARGBAData, AllocatedWidth,AllocatedHeight,ActualWidth,ActualHeight);\nend;\n\nfunction BGLTexture(AFPImage: TFPCustomImage): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AFPImage);\nend;\n\nfunction BGLTexture(ABitmap: TBitmap): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(ABitmap);\nend;\n\nfunction BGLTexture(AWidth, AHeight: integer; Color: TColor): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AWidth,AHeight,Color);\nend;\n\nfunction BGLTexture(AWidth, AHeight: integer; Color: TBGRAPixel): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AWidth,AHeight,Color);\nend;\n\nfunction BGLTexture(AFilenameUTF8: string): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AFilenameUTF8);\nend;\n\nfunction BGLTexture(AStream: TStream): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AStream);\nend;\n\nfunction BGLTexture(var AMemory: zglTMemory): IBGLTexture;\nbegin\n  result := TBGLTexture.Create(AMemory);\nend;\n\nfunction BGLSpriteEngine: TBGLCustomSpriteEngine;\nbegin\n  result := BGRASpriteGL.BGLSpriteEngine;\nend;\n\nfunction BGLCanvas: TBGLCustomCanvas;\nbegin\n  result := BGLCanvasInstance;\nend;\n\n{ TBGLZenCanvas }\n\nfunction TBGLZenCanvas.GetMatrix: TAffineMatrix;\nbegin\n  result := FMatrix;\nend;\n\nprocedure TBGLZenCanvas.SetMatrix(const AValue: TAffineMatrix);\nvar m: TMatrix4D;\nbegin\n  if Assigned(cam2d.Global) then\n    cam2d_Set(nil);\n\n  batch2d_Flush;\n\n  glMatrixMode(GL_MODELVIEW);\n  m := AffineMatrixToMatrix4D(AValue);\n  glLoadMatrixf(@m);\n  FMatrix := AValue;\nend;\n\nprocedure TBGLZenCanvas.InternalSetColor(const AColor: TBGRAPixel);\nbegin\n  if TBGRAPixel_RGBAOrder then\n    glColor4ubv(@AColor)\n  else\n    glColor4ub(AColor.red,AColor.green,AColor.blue,AColor.alpha);\nend;\n\nprocedure TBGLZenCanvas.InternalSetColorF(const AColor: TColorF);\nbegin\n  glColor4f(AColor[1],AColor[2],AColor[3],AColor[4]);\nend;\n\nprocedure TBGLZenCanvas.InternalStartPutPixel(const pt: TPointF);\nbegin\n  glBegin(GL_POINTS);\n  glVertex2f(pt.x,pt.y);\nend;\n\nprocedure TBGLZenCanvas.InternalStartPolyline(const pt: TPointF);\nbegin\n  glBegin(GL_LINE_STRIP);\n  glVertex2f(pt.x,pt.y);\nend;\n\nprocedure TBGLZenCanvas.InternalStartPolygon(const pt: TPointF);\nbegin\n  glBegin(GL_LINE_LOOP);\n  glVertex2f(pt.x,pt.y);\nend;\n\nprocedure TBGLZenCanvas.InternalStartTriangleFan(const pt: TPointF);\nbegin\n  glBegin(GL_TRIANGLE_FAN);\n  glVertex2f(pt.x,pt.y);\nend;\n\nprocedure TBGLZenCanvas.InternalContinueShape(const pt: TPointF);\nbegin\n  glVertex2f(pt.x,pt.y);\nend;\n\nprocedure TBGLZenCanvas.InternalEndShape;\nbegin\n  glEnd();\nend;\n\nprocedure TBGLZenCanvas.InternalStartBlend;\nbegin\n  batch2d_Flush;\n  glEnable( GL_BLEND );\nend;\n\nprocedure TBGLZenCanvas.InternalEndBlend;\nbegin\n  glDisable(GL_BLEND);\nend;\n\nprocedure TBGLZenCanvas.InternalStartBlendTriangles;\nbegin\n  if not b2dStarted or batch2d_Check( GL_TRIANGLES, FX_BLEND, nil ) then\n  begin\n    glEnable( GL_BLEND );\n    glBegin( GL_TRIANGLES );\n  end;\nend;\n\nprocedure TBGLZenCanvas.InternalStartBlendQuads;\nbegin\n  if not b2dStarted or batch2d_Check( GL_QUADS, FX_BLEND, nil ) then\n  begin\n    glEnable( GL_BLEND );\n    glBegin( GL_QUADS );\n  end;\nend;\n\nprocedure TBGLZenCanvas.InternalEndBlendTriangles;\nbegin\n  if not b2dStarted Then\n  begin\n    glEnd();\n    glDisable( GL_BLEND );\n  end;\nend;\n\nprocedure TBGLZenCanvas.InternalEndBlendQuads;\nbegin\n  if not b2dStarted Then\n  begin\n    glEnd();\n    glDisable( GL_BLEND );\n  end;\nend;\n\nprocedure TBGLZenCanvas.Fill(AColor: TBGRAPixel);\nbegin\n  glClearColor(AColor.Red/255, AColor.green/255, AColor.blue/255, AColor.alpha/255);\n  glClear(GL_COLOR_BUFFER_BIT);\nend;\n\nprocedure TBGLZenCanvas.Translate(x, y: single);\nbegin\n  batch2d_Flush;\n  FMatrix := FMatrix*AffineMatrixTranslation(x,y);\n  glTranslatef(x,y,0);\nend;\n\nprocedure TBGLZenCanvas.Scale(sx, sy: single);\nbegin\n  batch2d_Flush;\n  FMatrix := FMatrix*AffineMatrixScale(sx,sy);\n  glScalef(sx,sy,1);\nend;\n\nprocedure TBGLZenCanvas.RotateDeg(angleCW: single);\nbegin\n  batch2d_Flush;\n  FMatrix := FMatrix*AffineMatrixRotationDeg(angleCW);\n  glRotatef(angleCW,0,0,1);\nend;\n\nprocedure TBGLZenCanvas.RotateRad(angleCCW: single);\nbegin\n  batch2d_Flush;\n  FMatrix := FMatrix*AffineMatrixRotationRad(angleCCW);\n  glRotatef(-angleCCW*180/Pi,0,0,1);\nend;\n\nprocedure TBGLZenCanvas.EnableScissor(AValue: TRect);\nbegin\n  glScissor(AValue.left,Height-AValue.bottom,AValue.right-AValue.left,AValue.Bottom-AValue.Top);\n  glEnable(GL_SCISSOR_TEST);\nend;\n\nprocedure TBGLZenCanvas.DisableScissor;\nbegin\n  glDisable(GL_SCISSOR_TEST);\nend;\n\nfunction TBGLZenCanvas.GetBlendMode: TOpenGLBlendMode;\nbegin\n  Result:= GetZenBlendMode;\nend;\n\nprocedure TBGLZenCanvas.SetBlendMode(AValue: TOpenGLBlendMode);\nbegin\n  SetZenBlendMode(AValue);\nend;\n\nfunction TBGLZenCanvas.GetFaceCulling: TFaceCulling;\nbegin\n  result := FFaceCulling;\nend;\n\nprocedure TBGLZenCanvas.SetFaceCulling(AValue: TFaceCulling);\nconst GL_CULL_FACE = $0B44;\nbegin\n  if AValue = FFaceCulling then exit;\n  if FFaceCulling = fcNone then\n    glEnable(GL_CULL_FACE);\n  case AValue of\n    fcNone: glDisable(GL_CULL_FACE);\n    fcKeepCW: {not available};\n    fcKeepCCW: ;\n  end;\n  FFaceCulling:= AValue;\nend;\n\n{ TBGLZenSpriteEngine }\n\nfunction TBGLZenSpriteEngine.GetCount: integer;\nbegin\n  result := sengine2d_Get.Count;\nend;\n\nfunction TBGLZenSpriteEngine.GetSprite(AIndex: integer): TBGLCustomSprite;\nbegin\n  if (AIndex < 0) or (AIndex >= Count) then\n    result := nil\n  else\n    result := PSpriteData(sengine2d_Get.List[AIndex])^.Obj;\nend;\n\nprocedure TBGLZenSpriteEngine.Add(ASprite: TBGLCustomSprite);\nbegin\n  //nothing, already added when creating handle\nend;\n\nprocedure TBGLZenSpriteEngine.Remove(ASprite: TBGLCustomSprite);\nbegin\n  //nothing, can only be freed using QueryDestroy\nend;\n\nprocedure TBGLZenSpriteEngine.OnDraw;\nvar oldBlendMode: TOpenGLBlendMode;\nbegin\n  oldBlendMode:= GetZenBlendMode;\n  sengine2d_Draw();\n  SetZenBlendMode(oldBlendMode);\nend;\n\nprocedure TBGLZenSpriteEngine.OnTimer;\nbegin\n  sengine2d_Proc();\nend;\n\nprocedure TBGLZenSpriteEngine.Clear;\nbegin\n  sengine2d_ClearAll();\nend;\n\nprocedure TBGLZenSpriteEngine.Delete(AIndex: integer);\nbegin\n  sengine2d_DelSprite( AIndex );\nend;\n\n{ TBGLSprite }\n\n{$IFDEF USE_ZENGL_SPRITE_ENGINE}\nfunction TBGLSprite.GetZenSprite: zglPSprite2D;\nbegin\n  result := zglPSprite2D(FHandle);\nend;\n\nfunction TBGLSprite.GetHorizontalAlign: TAlignment;\nbegin\n  result := FHorizontalAlign;\nend;\n\nfunction TBGLSprite.GetVerticalAlign: TTextLayout;\nbegin\n  result := FVerticalAlign;\nend;\n\nprocedure TBGLSprite.SetHorizontalAlign(AValue: TAlignment);\nbegin\n  FHorizontalAlign := AValue;\nend;\n\nprocedure TBGLSprite.SetVerticalAlign(AValue: TTextLayout);\nbegin\n  FVerticalAlign := AValue;\nend;\n\nfunction TBGLSprite.GetAlpha: Integer;\nbegin\n  result := ZenSprite.Alpha;\nend;\n\nfunction TBGLSprite.GetAngle: Single;\nbegin\n  result := ZenSprite.Angle;\nend;\n\nfunction TBGLSprite.GetColor: TBGRAPixel;\nbegin\n  result := FColor;\n  result.alpha:= ZenSprite.Alpha;\nend;\n\nfunction TBGLSprite.GetDestroy: Boolean;\nbegin\n  result := ZenSprite.Destroy;\nend;\n\nfunction TBGLSprite.GetActualFrame: Single;\nbegin\n  result := ZenSprite.Frame;\nend;\n\nfunction TBGLSprite.GetH: Single;\nbegin\n  result := ZenSprite.H;\nend;\n\nfunction TBGLSprite.GetLayer: Integer;\nbegin\n  result := ZenSprite.Layer;\nend;\n\nfunction TBGLSprite.GetW: Single;\nbegin\n  result := ZenSprite.W;\nend;\n\nfunction TBGLSprite.GetX: Single;\nbegin\n  result := ZenSprite.X;\nend;\n\nfunction TBGLSprite.GetY: Single;\nbegin\n  result := ZenSprite.Y;\nend;\n\nprocedure TBGLSprite.SetAlpha(AValue: Integer);\nbegin\n  ZenSprite.Alpha := AValue;\nend;\n\nprocedure TBGLSprite.SetAngle(AValue: Single);\nbegin\n  ZenSprite.Angle := AValue;\nend;\n\nprocedure TBGLSprite.SetColor(AValue: TBGRAPixel);\nbegin\n  FColor := AValue;\n  ZenSprite.Alpha := AValue.alpha;\nend;\n\nprocedure TBGLSprite.SetDestroy(AValue: Boolean);\nbegin\n  ZenSprite.Destroy := AValue;\nend;\n\nprocedure TBGLSprite.SetActualFrame(AValue: Single);\nbegin\n  ZenSprite.Frame := AValue;\nend;\n\nprocedure TBGLSprite.SetH(AValue: Single);\nbegin\n  ZenSprite.H := AValue;\nend;\n\nprocedure TBGLSprite.SetLayer(AValue: Integer);\nbegin\n  ZenSprite.Layer := AValue;\nend;\n\nprocedure TBGLSprite.SetW(AValue: Single);\nbegin\n  ZenSprite.W := AValue;\nend;\n\nprocedure TBGLSprite.SetX(AValue: Single);\nbegin\n  ZenSprite.X := AValue;\nend;\n\nprocedure TBGLSprite.SetY(AValue: Single);\nbegin\n  ZenSprite.Y := AValue;\nend;\n\nprocedure SpriteDrawHandler( var Sprite : TSpriteData);\nbegin\n  if Assigned(Sprite.Obj) then\n    Sprite.Obj.OnDraw;\nend;\n\nprocedure SpriteProcHandler( var Sprite : TSpriteData);\nbegin\n  if Assigned(Sprite.Obj) then\n    Sprite.Obj.OnTimer;\nend;\n\nprocedure SpriteFreeHandler( var Sprite : TSpriteData);\nbegin\n  if Assigned(Sprite.Obj) then\n  begin\n    Sprite.Obj.Free;\n    Sprite.Obj := nil;\n  end;\nend;\n\nprocedure TBGLSprite.CreateHandle(ATexture: IBGLTexture; ALayer: Integer);\nbegin\n  FHandle := sengine2d_AddCustom(ATexture.Handle, SizeOf(TSpriteData), ALayer, nil, @SpriteDrawHandler, @SpriteProcHandler, @SpriteFreeHandler);\n  TSpriteData(FHandle^).Obj := self;\nend;\n\nprocedure TBGLSprite.QueryDestroy;\nbegin\n  SetDestroy(True);\nend;\n{$ENDIF}\n\n{ TBGRAZenFont }\n\nfunction TBGRAZenFont.GetClipped: boolean;\nbegin\n  result := (FFlags and TEXT_CLIP_RECT)<>0;\nend;\n\nfunction TBGRAZenFont.GetJustify: boolean;\nbegin\n  result := (FFlags and TEXT_HALIGN_JUSTIFY)<>0;\nend;\n\nfunction TBGRAZenFont.GetPage(AIndex: integer): zglPTexture;\nbegin\n  if FZenFont = nil then\n    result := nil\n  else\n    result := FZenFont.Pages[AIndex];\nend;\n\nfunction TBGRAZenFont.GetUseGradientColors: boolean;\nbegin\n  result := (FFlags and TEXT_FX_VCA)<>0;\nend;\n\nprocedure TBGRAZenFont.SetClipped(AValue: boolean);\nbegin\n  if AValue then\n    FFlags:= FFlags or TEXT_CLIP_RECT\n  else\n    FFlags:= FFlags and not TEXT_CLIP_RECT;\nend;\n\nprocedure TBGRAZenFont.SetJustify(AValue: boolean);\nbegin\n  if AValue then\n    FFlags:= FFlags or TEXT_HALIGN_JUSTIFY\n  else\n    FFlags:= FFlags and not TEXT_HALIGN_JUSTIFY;\nend;\n\nprocedure TBGRAZenFont.SetPage(AIndex: integer; AValue: zglPTexture);\nbegin\n  if FZenFont <> nil then\n  begin\n    if (AIndex >= 0) and (AIndex < length(FZenFont.Pages)) then\n      FZenFont.Pages[AIndex] := AValue;\n  end;\nend;\n\nprocedure TBGRAZenFont.SetUseGradientColors(AValue: boolean);\nbegin\n  if AValue then\n    FFlags:= FFlags or TEXT_FX_VCA\n  else\n    FFlags:= FFlags and not TEXT_FX_VCA;\nend;\n\nprocedure TBGRAZenFont.Init;\nbegin\n  inherited Init;\n  FZenFont := nil;\n  FZenFontOwned := false;\n  FFlags:= 0;\n  FGradientColors[1] := BGRAWhite;\n  FGradientColors[2] := BGRAWhite;\n  FGradientColors[3] := BGRAWhite;\n  FGradientColors[4] := BGRAWhite;\nend;\n\nprocedure TBGRAZenFont.FreeMemoryOnDestroy;\nbegin\n  //do not free memory because it is taken care of by ZenGL\nend;\n\nfunction TBGRAZenFont.LoadFromFile(AFilename: UTF8String): boolean;\nvar\n  fntMem : zglTMemory;\n  i, j   : Integer;\n  dir    : UTF8String;\n  name   : UTF8String;\n  tmp    : UTF8String;\n  imgFormat: TBGRAImageFormat;\n  tempBmp: TBGLBitmap;\n  newFont: zglPFont;\nbegin\n  Result := false;\n  newFont := nil;\n\n  if not file_Exists( AFilename ) Then\n    begin\n      log_Add( 'Cannot read \"' + AFilename + '\"' );\n      exit;\n    end;\n\n  mem_LoadFromFile( fntMem, AFilename );\n  font_Load( newFont, fntMem );\n  mem_Free( fntMem );\n\n  if not Assigned( newFont ) Then\n    begin\n      log_Add( 'Unable to load font: \"' + AFilename + '\"' );\n      exit;\n    end;\n\n  FZenFont := newFont;\n  FZenFontOwned := true;\n  dir  := file_GetDirectory( AFilename );\n  name := file_GetName( AFilename );\n  for i := 0 to newFont.Count.Pages - 1 do\n    for imgFormat:= low(TBGRAImageFormat) to high(TBGRAImageFormat) do\n      if Assigned(DefaultBGRAImageReader[imgFormat]) then\n      begin\n        tmp := dir + name + '-page' + u_IntToStr( i ) + '.' + SuggestImageExtension(imgFormat);\n        if file_Exists( tmp ) Then\n          begin\n            tempBmp := TBGLBitmap.Create(tmp, True);\n            tempBmp.VerticalFlip;\n            newFont.Pages[ i ] := tempBmp.MakeTextureAndFree.Handle;\n            break;\n          end;\n      end;\nend;\n\nprocedure TBGRAZenFont.DoTextOut(X, Y: Single;\n  const Text: UTF8String; AColor: TBGRAPixel);\nbegin\n  text_DrawEx(FZenFont, X,Y,FScale,FStepX, Text, AColor.alpha, BGRAToZenGL(AColor), GetFlags);\nend;\n\nprocedure TBGRAZenFont.DoTextRect(X, Y, Width, Height: Single; const Text : UTF8String; AColor: TBGRAPixel);\nvar r: zglTRect;\nbegin\n  r.X := X;\n  r.Y := Y;\n  r.W := Width;\n  r.H := Height;\n  text_DrawInRectEx(FZenFont, r, FScale,FStepX, Text, AColor.alpha, BGRAToZenGL(AColor), GetFlags);\nend;\n\nfunction TBGRAZenFont.GetFlags: LongWord;\nbegin\n  result := FFlags;\n  if GetJustify then\n    result := result OR TEXT_HALIGN_JUSTIFY\n  else\n    case GetHorizontalAlign of\n      taCenter: result:= result or TEXT_HALIGN_CENTER;\n      taRightJustify: result:= result or TEXT_HALIGN_RIGHT;\n      else\n        result:= result or TEXT_HALIGN_LEFT;\n    end;\n  case GetVerticalAlign of\n    tlCenter: result:= result or TEXT_VALIGN_CENTER;\n    tlBottom: result:= result or TEXT_VALIGN_BOTTOM;\n    else\n      result:= result or TEXT_VALIGN_TOP;\n  end;\n  if GradientColors then\n    fx2d_SetVCA( BGRAToZenGL(FGradientColors[1]), BGRAToZenGL(FGradientColors[2]), BGRAToZenGL(FGradientColors[3]), BGRAToZenGL(FGradientColors[4]),\n       FGradientColors[1].alpha, FGradientColors[2].alpha, FGradientColors[3].alpha, FGradientColors[4].alpha );\nend;\n\nconstructor TBGRAZenFont.Create(AHandle: zglPFont);\nbegin\n  Init;\n  FZenFont := AHandle;\n  FZenFontOwned := false;\nend;\n\nfunction TBGRAZenFont.TextWidth(const Text: UTF8String): single;\nbegin\n  result := text_GetWidth(FZenFont, Text, FStepX)*FScale;\nend;\n\nfunction TBGRAZenFont.TextHeight(const Text: UTF8String): single;\nbegin\n  result := FZenFont.MaxHeight*FScale;\nend;\n\nfunction TBGRAZenFont.TextHeight(const Text: UTF8String; AWidth: single\n  ): single;\nbegin\n  result := text_GetHeight(FZenFont, AWidth, Text, FScale, FStepX);\nend;\n\nprocedure TBGRAZenFont.FreeMemory;\nbegin\n  if FZenFontOwned then\n  begin\n    font_Del(FZenFont);\n    FZenFont := nil;\n  end;\nend;\n\nprocedure TBGRAZenFont.SetGradientColors(ATopLeft, ATopRight, ABottomRight, ABottomLeft: TBGRAPixel);\nbegin\n  FGradientColors[1] := ATopLeft;\n  FGradientColors[2] := ATopRight;\n  FGradientColors[3] := ABottomRight;\n  FGradientColors[4] := ABottomLeft;\n  GradientColors := true;\nend;\n\n{ TZenMemoryStream }\n\nfunction TZenMemoryStream.GetHandle: zglPMemory;\nbegin\n  result := @FZenMemory;\nend;\n\nfunction TZenMemoryStream.GetSize: Int64;\nbegin\n  Result:= FZenMemory^.Size;\nend;\n\nprocedure TZenMemoryStream.SetSize(NewSize: Longint);\nbegin\n  if NewSize < 0 then NewSize := 0;\n  mem_SetSize(FZenMemory^, NewSize);\nend;\n\nfunction TZenMemoryStream.GetPosition: Int64;\nbegin\n  Result:= FZenMemory.Position;\nend;\n\nconstructor TZenMemoryStream.Create;\nbegin\n  New(FZenMemory);\n  FillChar(FZenMemory, SizeOf(zglTMemory), 0);\n  FZenMemoryOwned := true;\nend;\n\nconstructor TZenMemoryStream.Create(AHandle: zglPMemory);\nbegin\n  FZenMemory := AHandle;\n  FZenMemoryOwned := false;\nend;\n\ndestructor TZenMemoryStream.Destroy;\nbegin\n  if FZenMemoryOwned then\n  begin\n    Dispose(FZenMemory);\n    FZenMemory := nil;\n  end;\n  inherited Destroy;\nend;\n\nfunction TZenMemoryStream.Read(var Buffer; Count: Longint): Longint;\nbegin\n  if Count < 0 then Count := 0;\n  result := mem_Read(FZenMemory^, Buffer, Count);\nend;\n\nfunction TZenMemoryStream.Write(const Buffer; Count: Longint): Longint;\nbegin\n  if Count < 0 then Count := 0;\n  result := mem_Write(FZenMemory^, Buffer, Count);\nend;\n\nfunction TZenMemoryStream.Seek(Offset: Longint; Origin: Word): Longint;\nbegin\n  result := mem_Seek(FZenMemory^, Offset, Origin+1);\nend;\n\n{ TBGLTexture }\n\nprocedure TBGLTexture.ComputeOpenGLFramesCoord( ATexture : TBGLTextureHandle; FramesX : Integer = 1; FramesY : Integer = 1 );\n  var\n    i,ix,iy : Integer;\n    tX, tY, fU, fV : Single;\nbegin\n  with (zglPTexture(ATexture)^) do\n  begin\n    if FramesX <= 0 Then FramesX := 1;\n    if FramesY <= 0 Then FramesY := 1;\n\n    SetLength( FramesCoord, FramesX * FramesY + 1 );\n    fU := U / FramesX;\n    fV := V / FramesY;\n\n    FramesCoord[ 0, 0 ].X := 0;\n    FramesCoord[ 0, 0 ].Y := 0;\n    FramesCoord[ 0, 1 ].X := U;\n    FramesCoord[ 0, 1 ].Y := 0;\n    FramesCoord[ 0, 2 ].X := U;\n    FramesCoord[ 0, 2 ].Y := V;\n    FramesCoord[ 0, 3 ].X := 0;\n    FramesCoord[ 0, 3 ].Y := V;\n    ix := 1;\n    iy := 1;\n    for i := 1 to FramesX * FramesY do\n      begin\n        tX := ix * fU;\n        tY := iy * fV;\n\n        FramesCoord[ i, 0 ].X := tX - fU;\n        FramesCoord[ i, 0 ].Y := tY - fV;\n\n        FramesCoord[ i, 1 ].X := tX;\n        FramesCoord[ i, 1 ].Y := tY - fV;\n\n        FramesCoord[ i, 2 ].X := tX;\n        FramesCoord[ i, 2 ].Y := tY;\n\n        FramesCoord[ i, 3 ].X := tX - fU;\n        FramesCoord[ i, 3 ].Y := tY;\n\n        inc(ix);\n        if ix > FramesX then\n        begin\n          ix := 1;\n          inc(iy);\n        end;\n      end;\n  end;\nend;\n\nfunction TBGLTexture.GetOpenGLFrameCount(ATexture: TBGLTextureHandle): integer;\nbegin\n  if ATexture = nil then\n    result := 0\n  else\n  begin\n    result := length(zglPTexture(ATexture)^.FramesCoord);\n    if result > 0 then dec(result); //frame 0 is the whole picture\n  end;\nend;\n\nfunction TBGLTexture.GetEmptyTexture: TBGLTextureHandle;\nbegin\n  result := managerZeroTexture;\nend;\n\nprocedure TBGLTexture.SetOpenGLTextureSize(ATexture: TBGLTextureHandle; AAllocatedWidth,AAllocatedHeight, AActualWidth,AActualHeight: integer);\nbegin\n  with (zglPTexture(ATexture)^) do\n  begin\n    Width := AActualWidth;\n    Height:= AActualHeight;\n    U := AActualWidth/AAllocatedWidth;\n    V := AActualHeight/AAllocatedHeight;\n  end;\nend;\n\nprocedure TBGLTexture.UpdateOpenGLTexture(ATexture: TBGLTextureHandle;\n  ARGBAData: PLongWord; AAllocatedWidth, AAllocatedHeight, AActualWidth,\n  AActualHeight: integer; RGBAOrder: boolean);\nbegin\n  batch2d_Flush;\n  SetOpenGLTextureSize(ATexture, AAllocatedWidth,AAllocatedHeight, AActualWidth,AActualHeight);\n  with (zglPTexture(ATexture)^) do\n  begin\n    dec(oglVRAMUsed, Round(Width/U) * Round(Height/V)*4);\n    glBindTexture( GL_TEXTURE_2D, ID );\n    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, AAllocatedWidth, AAllocatedHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, ARGBAData );\n    inc(oglVRAMUsed, AAllocatedWidth*AAllocatedHeight*4);\n  end;\nend;\n\nfunction TBGLTexture.GetFlags: LongWord;\nbegin\n  result := FZenFlags;\n  if GradientColors then\n  begin\n    result := result or FX2D_VCA;\n    fx2d_SetVCA( BGRAToZenGL(FGradTopLeft), BGRAToZenGL(FGradTopRight), BGRAToZenGL(FGradBottomRight), BGRAToZenGL(FGradBottomLeft),\n       FGradTopLeft.alpha, FGradTopRight.alpha, FGradBottomRight.alpha, FGradBottomLeft.alpha);\n  end;\nend;\n\nclass function TBGLTexture.GetOpenGLMaxTexSize: integer;\nbegin\n  result := oglMaxTexSize;\nend;\n\nfunction TBGLTexture.CreateOpenGLTexture(ARGBAData: PLongWord; AAllocatedWidth,\n  AAllocatedHeight, AActualWidth, AActualHeight: integer;\n  RGBAOrder: boolean): TBGLTextureHandle;\nvar tex: zglPTexture;\nbegin\n  tex := tex_Add;\n  tex.Format := TEX_FORMAT_RGBA;\n  tex.Flags := TEX_FILTER_LINEAR;\n  tex.Width := AAllocatedWidth;\n  tex.Height := AAllocatedHeight;\n  tex.U := 1;\n  tex.V := 1;\n  batch2d_Flush;\n  tex_CreateGL(tex^, Pointer(ARGBAData));\n  SetOpenGLTextureSize(tex, AAllocatedWidth,AAllocatedHeight, AActualWidth,AActualHeight);\n  result := tex;\nend;\n\nprocedure TBGLTexture.DoStretchDraw(x, y, w, h: single; AColor: TBGRAPixel);\nbegin\n  if AColor.Alpha = 0 then exit;\n  SetZenBlendMode(BlendMode);\n  if (BGRAToColor(AColor)=clWhite) and not FIsMask then\n  begin\n    if FFrame > 0 then\n     asprite2d_Draw( FOpenGLTexture, x, y, w, h, 0, FFrame, AColor.Alpha, GetFlags)\n    else\n     ssprite2d_Draw( FOpenGLTexture, x, y, w, h, 0, AColor.Alpha, GetFlags);\n  end else\n  begin\n    fx2d_SetColor(BGRAToZenGL(AColor));\n    if FIsMask then fx_SetColorMode( FX_COLOR_SET );\n    if FFrame > 0 then\n      asprite2d_Draw( FOpenGLTexture, x, y, w, h, 0, FFrame, AColor.Alpha, GetFlags OR FX_COLOR)\n    else\n      ssprite2d_Draw( FOpenGLTexture, x, y, w, h, 0, AColor.Alpha, GetFlags OR FX_COLOR);\n    if FIsMask then fx_SetColorMode( FX_COLOR_MIX );\n  end;\nend;\n\nprocedure TBGLTexture.DoStretchDrawAngle(x, y, w,h, angleDeg: single;\n  rotationCenter: TPointF; AColor: TBGRAPixel);\nbegin\n  if AColor.Alpha = 0 then exit;\n  SetZenBlendMode(BlendMode);\n  fx2d_SetRotatingPivot(rotationCenter.X-x,rotationCenter.Y-y);\n  if (BGRAToColor(AColor)=clWhite) and not FIsMask then\n  begin\n    if FFrame > 0 then\n      asprite2d_Draw( FOpenGLTexture, x,y, w, h, angleDeg, FFrame, AColor.Alpha , GetFlags OR FX2D_RPIVOT)\n    else\n      ssprite2d_Draw( FOpenGLTexture, x,y, w, h, angleDeg, AColor.Alpha , GetFlags OR FX2D_RPIVOT)\n  end\n  else\n  begin\n    fx2d_SetColor(BGRAToZenGL(AColor));\n    if FIsMask then fx_SetColorMode( FX_COLOR_SET );\n    if FFrame > 0 then\n      asprite2d_Draw( FOpenGLTexture, x,y, w, h, angleDeg, FFrame, AColor.Alpha , GetFlags OR FX2D_RPIVOT or FX_COLOR)\n    else\n      ssprite2d_Draw( FOpenGLTexture, x,y, w, h, angleDeg, AColor.Alpha , GetFlags OR FX2D_RPIVOT or FX_COLOR);\n    if FIsMask then fx_SetColorMode( FX_COLOR_MIX );\n  end;\nend;\n\nprocedure TBGLTexture.ToggleFlipX;\nbegin\n  FZenFlags := FZenFlags xor FX2D_FLIPX;\nend;\n\nprocedure TBGLTexture.ToggleFlipY;\nbegin\n  FZenFlags := FZenFlags xor FX2D_FLIPY;\nend;\n\nprocedure TBGLTexture.Init(ATexture: TBGLTextureHandle; AWidth, AHeight: integer; AOwned: boolean);\nbegin\n  inherited Init(ATexture,AWidth,AHeight,AOwned);\n  FZenFlags:= FX_BLEND;\nend;\n\nprocedure TBGLTexture.NotifyInvalidFrameSize;\nbegin\n  log_Add('Invalid frame size');\nend;\n\nprocedure TBGLTexture.NotifyErrorLoadingFile(AFilename: string);\nbegin\n  log_Add('Cannot load \"'+AFilename+'\"');\nend;\n\nfunction TBGLTexture.NewEmpty: TBGLCustomTexture;\nbegin\n  result := TBGLTexture.Create;\nend;\n\nfunction TBGLTexture.NewFromTexture(ATexture: TBGLTextureHandle;\n  AWidth, AHeight: integer): TBGLCustomTexture;\nbegin\n  result := TBGLTexture.Create(ATexture,AWidth,AHeight);\nend;\n\nfunction TBGLTexture.Duplicate: TBGLCustomTexture;\nbegin\n  result := inherited Duplicate;\n  if (result is TBGLTexture) then\n    TBGLTexture(result).FZenFlags := FZenFlags;\nend;\n\nprocedure TBGLTexture.FreeMemoryOnDestroy;\nbegin\n  //do not free handle, ZenGL takes care of it\nend;\n\nconstructor TBGLTexture.Create(var AMemory: zglTMemory);\nvar s: TStream;\nbegin\n  s := TZenMemoryStream.Create(@AMemory);\n  InitFromStream(s);\n  s.Free;\nend;\n\nprocedure TBGLTexture.FreeOpenGLTexture(ATexture: TBGLTextureHandle);\nbegin\n  if (ATexture <> nil) and (ATexture <> managerZeroTexture) then\n  begin\n    tex_Del(ATexture);\n    FOpenGLTexture:= nil;\n  end;\nend;\n\nprocedure TBGLTexture.UpdateGLResampleFilter(ATexture: TBGLTextureHandle;\n  AFilter: TOpenGLResampleFilter);\nbegin\n  batch2d_Flush;\n  glBindTexture( GL_TEXTURE_2D, zglTSprite2D(ATexture^).ID );\n  if AFilter = orfLinear then\n  begin\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );\n  end else\n  begin\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );\n    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );\n  end;\nend;\n\nprocedure TBGLTexture.DoDrawAffine(Origin, HAxis, VAxis: TPointF;\n  AColor: TBGRAPixel);\nvar p2,p3,p4: TPointF;\nbegin\n  if AColor.Alpha = 0 then exit;\n  p2 := HAxis-Origin;\n  p4 := VAxis-Origin;\n  p3 := p2+p4;\n  SetZenBlendMode(BlendMode);\n  fx2d_SetVertexes(0,0,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y);\n  if (BGRAToColor(AColor)=clWhite) and not FIsMask then\n  begin\n    if FFrame > 0 then\n     asprite2d_Draw( FOpenGLTexture, Origin.x, Origin.y, 0, 0, 0, FFrame, AColor.Alpha, GetFlags or FX2D_VCHANGE)\n    else\n     ssprite2d_Draw( FOpenGLTexture, Origin.x, Origin.y, 0, 0, 0, AColor.Alpha, GetFlags or FX2D_VCHANGE);\n  end else\n  begin\n    fx2d_SetColor(BGRAToZenGL(AColor));\n    if FIsMask then fx_SetColorMode( FX_COLOR_SET );\n    if FFrame > 0 then\n      asprite2d_Draw( FOpenGLTexture, Origin.x, Origin.y, 0, 0, 0, FFrame, AColor.Alpha, GetFlags OR FX_COLOR or FX2D_VCHANGE)\n    else\n      ssprite2d_Draw( FOpenGLTexture, Origin.x, Origin.y, 0, 0, 0, AColor.Alpha, GetFlags OR FX_COLOR or FX2D_VCHANGE);\n    if FIsMask then fx_SetColorMode( FX_COLOR_MIX );\n  end;\nend;\n\n{ TBGLBitmap }\n\nclass function TBGLBitmap.GetOpenGLMaxTexSize: integer;\nbegin\n  result := oglMaxTexSize;\nend;\n\nprocedure TBGLBitmap.NotifySizeTooBigForOpenGL;\nbegin\n  log_Add('Size too big for OpenGL');\nend;\n\nconstructor TBGLBitmap.Create(AFilename: string);\nbegin\n  inherited Create(AFilename, True);\nend;\n\nconstructor TBGLBitmap.Create(var AMemory: zglTMemory);\nvar s: TStream;\nbegin\n  s := TZenMemoryStream.Create(@AMemory);\n  try\n    inherited Create(s);\n  finally\n    s.Free;\n  end;\nend;\n\nfunction TBGLBitmap.NewBitmap(Filename: string): TBGRACustomBitmap;\nbegin\n  Result:=inherited NewBitmap(Filename, True);\nend;\n\nprocedure TBGLBitmap.LoadFromFile(const filename: string);\nbegin\n  inherited LoadFromFileUTF8(filename);\nend;\n\nprocedure TBGLBitmap.LoadFromFile(const filename: String;\n  Handler: TFPCustomImageReader);\nbegin\n  inherited LoadFromFileUTF8(filename, Handler);\nend;\n\nprocedure TBGLBitmap.SaveToFile(const filename: string);\nbegin\n  inherited SaveToFileUTF8(filename);\nend;\n\nprocedure TBGLBitmap.SaveToFile(const filename: string;\n  Handler: TFPCustomImageWriter);\nbegin\n  inherited SaveToFileUTF8(filename, Handler);\nend;\n\ninitialization\n\n  BGLBitmapFactory := TBGLBitmap;\n  BGLTextureFactory := TBGLTexture;\n{$IFDEF USE_ZENGL_SPRITE_ENGINE}\n  BGRASpriteGL.BGLSpriteEngine := TBGLZenSpriteEngine.Create;\n{$ELSE}\n  BGRASpriteGL.BGLSpriteEngine := TBGLDefaultSpriteEngine.Create;\n{$ENDIF}\n  BGLCanvasInstance := TBGLZenCanvas.Create;\n\nfinalization\n\n  BGLCanvasInstance.Free;\n  BGRASpriteGL.BGLSpriteEngine.Free;\n  BGRASpriteGL.BGLSpriteEngine := nil;\n\nend.\n\n"
  },
  {
    "path": "test/test4other/zengl/readme.txt",
    "content": "Copy the files from here to ZenGL folder in the \"demos\\Lazarus\" subfolder.\n\nOpen BGRABitmapPack4NoGUI_OpenGL package and then open one of the demos.\n\nNote that one demo requires \"arial.ttf\" to be copied next to the executable."
  },
  {
    "path": "test/testbgrafunc/COPYING.LGPL.txt",
    "content": "\t\t  GNU LIBRARY GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1991 Free Software Foundation, Inc.\n    \t\t    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the library GPL.  It is\n numbered 2 because it goes with version 2 of the ordinary GPL.]\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Library General Public License, applies to some\nspecially designated Free Software Foundation software, and to any\nother libraries whose authors decide to use it.  You can use it for\nyour libraries, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if\nyou distribute copies of the library, or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link a program with the library, you must provide\ncomplete object files to the recipients so that they can relink them\nwith the library, after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  Our method of protecting your rights has two steps: (1) copyright\nthe library, and (2) offer you this license which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  Also, for each distributor's protection, we want to make certain\nthat everyone understands that there is no warranty for this free\nlibrary.  If the library is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original\nversion, so that any problems introduced by others will not reflect on\nthe original authors' reputations.\n\f\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that companies distributing free\nsoftware will individually obtain patent licenses, thus in effect\ntransforming the program into proprietary software.  To prevent this,\nwe have made it clear that any patent must be licensed for everyone's\nfree use or not licensed at all.\n\n  Most GNU software, including some libraries, is covered by the ordinary\nGNU General Public License, which was designed for utility programs.  This\nlicense, the GNU Library General Public License, applies to certain\ndesignated libraries.  This license is quite different from the ordinary\none; be sure to read it in full, and don't assume that anything in it is\nthe same as in the ordinary license.\n\n  The reason we have a separate public license for some libraries is that\nthey blur the distinction we usually make between modifying or adding to a\nprogram and simply using it.  Linking a program with a library, without\nchanging the library, is in some sense simply using the library, and is\nanalogous to running a utility program or application program.  However, in\na textual and legal sense, the linked executable is a combined work, a\nderivative of the original library, and the ordinary General Public License\ntreats it as such.\n\n  Because of this blurred distinction, using the ordinary General\nPublic License for libraries did not effectively promote software\nsharing, because most developers did not use the libraries.  We\nconcluded that weaker conditions might promote sharing better.\n\n  However, unrestricted linking of non-free programs would deprive the\nusers of those programs of all benefit from the free status of the\nlibraries themselves.  This Library General Public License is intended to\npermit developers of non-free programs to use free libraries, while\npreserving your freedom as a user of such programs to change the free\nlibraries that are incorporated in them.  (We have not seen how to achieve\nthis as regards changes in header files, but we have achieved it as regards\nchanges in the actual functions of the Library.)  The hope is that this\nwill lead to faster development of free libraries.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, while the latter only\nworks together with the library.\n\n  Note that it is possible for a library to be covered by the ordinary\nGeneral Public License rather than by this special one.\n\f\n\t\t  GNU LIBRARY GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library which\ncontains a notice placed by the copyright holder or other authorized\nparty saying it may be distributed under the terms of this Library\nGeneral Public License (also called \"this License\").  Each licensee is\naddressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\f\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n  6. As an exception to the Sections above, you may also compile or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    c) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    d) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe source code distributed need not include anything that is normally\ndistributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\f\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Library General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n           How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Library General Public\n    License as published by the Free Software Foundation; either\n    version 2 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Library General Public License for more details.\n\n    You should have received a copy of the GNU Library General Public\n    License along with this library; if not, write to the Free\n    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n"
  },
  {
    "path": "test/testbgrafunc/COPYING.modifiedLGPL.txt",
    "content": "This is the file COPYING.modifiedLGPL, it applies to all units of the\nBGRABitmap library.\n\nThese files are distributed under the Library GNU General Public License\n(see the file COPYING.LGPL) with the following modification:\n\nAs a special exception, the copyright holders of this library give you\npermission to link this library with independent modules to produce an\nexecutable, regardless of the license terms of these independent modules,\nand to copy and distribute the resulting executable under terms of your choice,\nprovided that you also meet, for each linked independent module, the terms\nand conditions of the license of that module. An independent module is a\nmodule which is not derived from or based on this library. If you modify this\nlibrary, you may extend this exception to your version of the library, but\nyou are not obligated to do so. If you do not wish to do so, delete this\nexception statement from your version.\n\n\nIf you didn't receive a copy of the file COPYING.LGPL, contact:\n      Free Software Foundation, Inc.,\n      675 Mass Ave\n      Cambridge, MA  02139\n      USA\n\n"
  },
  {
    "path": "test/testbgrafunc/readme.txt",
    "content": "Test for BGRABitmap functions - v2.0\n\nThis code is under modified LGPL (see COPYING.modifiedLGPL.txt). This means that you can link this library inside your programs for any purpose. Only the included part of the code must remain LGPL.\n\nIf you make some improvements to this library, please notify here:\nhttp://www.lazarus.freepascal.org/index.php/topic,12037.0.html\n\nContact : circular at operamail.com"
  },
  {
    "path": "test/testbgrafunc/testbgrafunc.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <Title Value=\"testbgrafunc\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <VersionInfo>\n      <Language Value=\"\"/>\n      <CharSet Value=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"3\">\n      <Item1 Name=\"default\" Default=\"True\"/>\n      <Item2 Name=\"gtk2\">\n        <MacroValues Count=\"1\">\n          <Macro2 Name=\"LCLWidgetType\" Value=\"gtk2\"/>\n        </MacroValues>\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <PathDelim Value=\"\\\"/>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <UnitOutputDirectory Value=\"lib\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <UseAnsiStrings Value=\"False\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <Linking>\n            <Debugging>\n              <DebugInfoType Value=\"dsDwarf3\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item2>\n      <Item3 Name=\"gtk3\">\n        <MacroValues Count=\"1\">\n          <Macro1 Name=\"LCLWidgetType\" Value=\"gtk3\"/>\n        </MacroValues>\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <PathDelim Value=\"\\\"/>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <UnitOutputDirectory Value=\"lib\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <UseAnsiStrings Value=\"False\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <Linking>\n            <Debugging>\n              <DebugInfoType Value=\"dsDwarf3\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item3>\n      <SharedMatrixOptions Count=\"2\">\n        <Item1 ID=\"221972512338\" Modes=\"gtk3\" Type=\"IDEMacro\" MacroName=\"LCLWidgetType\" Value=\"gtk3\"/>\n        <Item2 ID=\"264310545295\" Modes=\"gtk2\" Type=\"IDEMacro\" MacroName=\"LCLWidgetType\" Value=\"gtk2\"/>\n      </SharedMatrixOptions>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <LaunchingApplication PathPlusParams=\"\\usr\\X11R6\\bin\\xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)\\tools\\runwait.sh $(TargetCmdLine)\"/>\n      </local>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\">\n          <local>\n            <LaunchingApplication PathPlusParams=\"\\usr\\X11R6\\bin\\xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)\\tools\\runwait.sh $(TargetCmdLine)\"/>\n          </local>\n        </Mode0>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"etpackage\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"159\">\n      <Unit0>\n        <Filename Value=\"testbgrafunc.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <EditorIndex Value=\"3\"/>\n        <CursorPos X=\"31\" Y=\"8\"/>\n        <UsageCount Value=\"200\"/>\n        <Loaded Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"FMain\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <TopLine Value=\"136\"/>\n        <CursorPos X=\"66\" Y=\"144\"/>\n        <UsageCount Value=\"200\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"utestpacrect.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"5\"/>\n        <TopLine Value=\"15\"/>\n        <CursorPos X=\"3\" Y=\"15\"/>\n        <UsageCount Value=\"200\"/>\n        <Loaded Value=\"True\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"utest.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"15\" Y=\"14\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"utest1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2\"/>\n        <CursorPos Y=\"2\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"utest2.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"5\" Y=\"15\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"utest3.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"4\"/>\n        <TopLine Value=\"10\"/>\n        <CursorPos X=\"71\" Y=\"41\"/>\n        <UsageCount Value=\"200\"/>\n        <Loaded Value=\"True\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"utest4.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"4\"/>\n        <CursorPos X=\"31\" Y=\"62\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"utest5.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"1\"/>\n        <CursorPos X=\"20\" Y=\"13\"/>\n        <UsageCount Value=\"200\"/>\n        <Loaded Value=\"True\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"utest6.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"51\"/>\n        <CursorPos X=\"48\" Y=\"76\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"utest7.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"91\"/>\n        <CursorPos X=\"48\" Y=\"116\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit10>\n      <Unit11>\n        <Filename Value=\"utest8.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"58\"/>\n        <CursorPos X=\"42\" Y=\"86\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit11>\n      <Unit12>\n        <Filename Value=\"utest9.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"50\"/>\n        <CursorPos X=\"48\" Y=\"82\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit12>\n      <Unit13>\n        <Filename Value=\"utestback.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <CursorPos X=\"3\" Y=\"13\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit13>\n      <Unit14>\n        <Filename Value=\"..\\testbgrafuncold\\umain.pas\"/>\n        <ComponentName Value=\"FMain\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <TopLine Value=\"7\"/>\n        <CursorPos Y=\"98\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit14>\n      <Unit15>\n        <Filename Value=\"utest10.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"74\"/>\n        <CursorPos X=\"48\" Y=\"99\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit15>\n      <Unit16>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <CursorPos X=\"61\" Y=\"4\"/>\n        <UsageCount Value=\"28\"/>\n      </Unit16>\n      <Unit17>\n        <Filename Value=\"utest11.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"46\"/>\n        <CursorPos X=\"50\" Y=\"91\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit17>\n      <Unit18>\n        <Filename Value=\"utest14.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"39\"/>\n        <CursorPos X=\"48\" Y=\"66\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit18>\n      <Unit19>\n        <Filename Value=\"utest15.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"50\"/>\n        <CursorPos X=\"50\" Y=\"85\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit19>\n      <Unit20>\n        <Filename Value=\"utest16.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"159\"/>\n        <CursorPos X=\"40\" Y=\"174\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit20>\n      <Unit21>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.2.4\\source\\rtl\\objpas\\sysutils\\datih.inc\"/>\n        <TopLine Value=\"101\"/>\n        <CursorPos X=\"10\" Y=\"119\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit21>\n      <Unit22>\n        <Filename Value=\"..\\bgrabitmap\\bgragradients.pas\"/>\n        <CursorPos X=\"78\" Y=\"10\"/>\n        <UsageCount Value=\"44\"/>\n      </Unit22>\n      <Unit23>\n        <Filename Value=\"..\\bgrabitmap\\bgraanimatedgif.pas\"/>\n        <TopLine Value=\"110\"/>\n        <CursorPos X=\"32\" Y=\"122\"/>\n        <UsageCount Value=\"27\"/>\n      </Unit23>\n      <Unit24>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"3997\"/>\n        <CursorPos X=\"42\" Y=\"4002\"/>\n        <UsageCount Value=\"83\"/>\n      </Unit24>\n      <Unit25>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <TopLine Value=\"166\"/>\n        <CursorPos X=\"27\" Y=\"177\"/>\n        <ExtraEditorCount Value=\"1\"/>\n        <ExtraEditor1>\n          <TopLine Value=\"790\"/>\n          <CursorPos X=\"69\" Y=\"800\"/>\n        </ExtraEditor1>\n        <UsageCount Value=\"64\"/>\n      </Unit25>\n      <Unit26>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"962\"/>\n        <CursorPos Y=\"990\"/>\n        <UsageCount Value=\"76\"/>\n      </Unit26>\n      <Unit27>\n        <Filename Value=\"..\\bgrabitmap\\bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"385\"/>\n        <CursorPos Y=\"404\"/>\n        <UsageCount Value=\"70\"/>\n      </Unit27>\n      <Unit28>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <TopLine Value=\"1295\"/>\n        <CursorPos X=\"3\" Y=\"1325\"/>\n        <UsageCount Value=\"55\"/>\n      </Unit28>\n      <Unit29>\n        <Filename Value=\"..\\bgrabitmap\\bgrapaintnet.pas\"/>\n        <TopLine Value=\"160\"/>\n        <CursorPos X=\"29\" Y=\"167\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit29>\n      <Unit30>\n        <Filename Value=\"..\\bgrabitmap\\bgradnetdeserial.pas\"/>\n        <CursorPos X=\"25\" Y=\"5\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit30>\n      <Unit31>\n        <Filename Value=\"utest17.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"65\"/>\n        <CursorPos X=\"42\" Y=\"83\"/>\n        <UsageCount Value=\"200\"/>\n      </Unit31>\n      <Unit32>\n        <Filename Value=\"D:\\lazarus\\lcl\\graphics.pp\"/>\n        <TopLine Value=\"43\"/>\n        <CursorPos X=\"42\" Y=\"61\"/>\n        <UsageCount Value=\"25\"/>\n      </Unit32>\n      <Unit33>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.2.4\\source\\packages\\fcl-image\\src\\fpcanvas.pp\"/>\n        <TopLine Value=\"105\"/>\n        <CursorPos X=\"65\" Y=\"105\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit33>\n      <Unit34>\n        <Filename Value=\"..\\bgrabitmap\\bgrapen.pas\"/>\n        <CursorPos X=\"85\" Y=\"3\"/>\n        <UsageCount Value=\"32\"/>\n      </Unit34>\n      <Unit35>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.2.4\\source\\packages\\fcl-image\\src\\fpimage.pp\"/>\n        <TopLine Value=\"19\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit35>\n      <Unit36>\n        <Filename Value=\"D:\\lazarus\\lcl\\graphtype.pp\"/>\n        <TopLine Value=\"77\"/>\n        <CursorPos X=\"3\" Y=\"95\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit36>\n      <Unit37>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpash.inc\"/>\n        <TopLine Value=\"176\"/>\n        <CursorPos X=\"31\" Y=\"192\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit37>\n      <Unit38>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpas.inc\"/>\n        <TopLine Value=\"782\"/>\n        <CursorPos Y=\"788\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit38>\n      <Unit39>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpimage.pp\"/>\n        <TopLine Value=\"227\"/>\n        <CursorPos X=\"17\" Y=\"245\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit39>\n      <Unit40>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\classes\\classesh.inc\"/>\n        <TopLine Value=\"15\"/>\n        <CursorPos X=\"18\" Y=\"33\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit40>\n      <Unit41>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\i386\\i386.inc\"/>\n        <TopLine Value=\"1254\"/>\n        <CursorPos X=\"10\" Y=\"1272\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit41>\n      <Unit42>\n        <Filename Value=\"..\\bgrabitmap\\bgrawinbitmap.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"102\"/>\n        <CursorPos Y=\"122\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit42>\n      <Unit43>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\win\\wininc\\struct.inc\"/>\n        <TopLine Value=\"215\"/>\n        <CursorPos X=\"6\" Y=\"233\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit43>\n      <Unit44>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\types.pp\"/>\n        <TopLine Value=\"80\"/>\n        <CursorPos X=\"3\" Y=\"98\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit44>\n      <Unit45>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmap.pas\"/>\n        <TopLine Value=\"39\"/>\n        <CursorPos X=\"9\" Y=\"44\"/>\n        <UsageCount Value=\"31\"/>\n      </Unit45>\n      <Unit46>\n        <Filename Value=\"..\\bgrabitmap\\bgracompressablebitmap.pas\"/>\n        <TopLine Value=\"13\"/>\n        <CursorPos X=\"107\" Y=\"16\"/>\n        <UsageCount Value=\"23\"/>\n      </Unit46>\n      <Unit47>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpreadpcx.pas\"/>\n        <TopLine Value=\"29\"/>\n        <CursorPos Y=\"46\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit47>\n      <Unit48>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpwritepcx.pas\"/>\n        <TopLine Value=\"12\"/>\n        <CursorPos X=\"3\" Y=\"30\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit48>\n      <Unit49>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpreadxpm.pp\"/>\n        <TopLine Value=\"5\"/>\n        <CursorPos X=\"23\" Y=\"33\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit49>\n      <Unit50>\n        <Filename Value=\"utest18.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"49\"/>\n        <CursorPos X=\"48\" Y=\"79\"/>\n        <UsageCount Value=\"202\"/>\n      </Unit50>\n      <Unit51>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1273\"/>\n        <CursorPos Y=\"1298\"/>\n        <UsageCount Value=\"35\"/>\n      </Unit51>\n      <Unit52>\n        <Filename Value=\"utest19.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"97\"/>\n        <CursorPos X=\"48\" Y=\"114\"/>\n        <UsageCount Value=\"199\"/>\n      </Unit52>\n      <Unit53>\n        <Filename Value=\"ucalc3d.pas\"/>\n        <CursorPos X=\"25\" Y=\"295\"/>\n        <UsageCount Value=\"126\"/>\n      </Unit53>\n      <Unit54>\n        <Filename Value=\"..\\bgrabitmap\\bgragradientscanner.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"43\"/>\n      </Unit54>\n      <Unit55>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpimgcanv.pp\"/>\n        <TopLine Value=\"13\"/>\n        <CursorPos X=\"35\" Y=\"23\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit55>\n      <Unit56>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fppixlcanv.pp\"/>\n        <TopLine Value=\"25\"/>\n        <CursorPos X=\"32\" Y=\"31\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit56>\n      <Unit57>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpcanvas.pp\"/>\n        <TopLine Value=\"162\"/>\n        <CursorPos X=\"19\" Y=\"186\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit57>\n      <Unit58>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpinterpolation.inc\"/>\n        <CursorPos X=\"59\" Y=\"8\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit58>\n      <Unit59>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\math.pp\"/>\n        <TopLine Value=\"308\"/>\n        <CursorPos X=\"10\" Y=\"326\"/>\n        <UsageCount Value=\"20\"/>\n      </Unit59>\n      <Unit60>\n        <Filename Value=\"utest22.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"58\"/>\n        <CursorPos X=\"48\" Y=\"82\"/>\n        <UsageCount Value=\"175\"/>\n      </Unit60>\n      <Unit61>\n        <Filename Value=\"utest23.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"44\"/>\n        <CursorPos X=\"48\" Y=\"73\"/>\n        <UsageCount Value=\"168\"/>\n      </Unit61>\n      <Unit62>\n        <Filename Value=\"utest24.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"61\"/>\n        <CursorPos X=\"48\" Y=\"77\"/>\n        <UsageCount Value=\"168\"/>\n      </Unit62>\n      <Unit63>\n        <Filename Value=\"utexture.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"168\"/>\n      </Unit63>\n      <Unit64>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygonaliased.pas\"/>\n        <TopLine Value=\"327\"/>\n        <CursorPos X=\"33\" Y=\"335\"/>\n        <ExtraEditorCount Value=\"1\"/>\n        <ExtraEditor1>\n          <CursorPos X=\"77\" Y=\"16\"/>\n        </ExtraEditor1>\n        <UsageCount Value=\"28\"/>\n      </Unit64>\n      <Unit65>\n        <Filename Value=\"utest25.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"48\"/>\n        <CursorPos Y=\"74\"/>\n        <UsageCount Value=\"139\"/>\n      </Unit65>\n      <Unit66>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas.pas\"/>\n        <TopLine Value=\"261\"/>\n        <CursorPos X=\"29\" Y=\"279\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit66>\n      <Unit67>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\sysutils\\sysstrh.inc\"/>\n        <TopLine Value=\"66\"/>\n        <CursorPos X=\"10\" Y=\"84\"/>\n        <UsageCount Value=\"2\"/>\n      </Unit67>\n      <Unit68>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\sysutils\\sysstr.inc\"/>\n        <TopLine Value=\"167\"/>\n        <CursorPos X=\"3\" Y=\"183\"/>\n        <UsageCount Value=\"2\"/>\n      </Unit68>\n      <Unit69>\n        <Filename Value=\"..\\bgrabitmap\\phongdraw.inc\"/>\n        <TopLine Value=\"90\"/>\n        <CursorPos Y=\"195\"/>\n        <UsageCount Value=\"19\"/>\n      </Unit69>\n      <Unit70>\n        <Filename Value=\"utest26.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"49\"/>\n        <CursorPos X=\"48\" Y=\"65\"/>\n        <UsageCount Value=\"122\"/>\n      </Unit70>\n      <Unit71>\n        <Filename Value=\"..\\bgrabitmap\\filldensity256.inc\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit71>\n      <Unit72>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan.inc\"/>\n        <TopLine Value=\"106\"/>\n        <CursorPos X=\"3\" Y=\"127\"/>\n        <UsageCount Value=\"7\"/>\n      </Unit72>\n      <Unit73>\n        <Filename Value=\"..\\bgrabitmap\\lineartexscan.inc\"/>\n        <CursorPos X=\"65\" Y=\"3\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit73>\n      <Unit74>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\i386\\mmx.pp\"/>\n        <TopLine Value=\"33\"/>\n        <CursorPos X=\"18\" Y=\"43\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit74>\n      <Unit75>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <TopLine Value=\"214\"/>\n        <CursorPos X=\"59\" Y=\"227\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit75>\n      <Unit76>\n        <Filename Value=\"..\\bgrabitmap\\filldensitysegment256.inc\"/>\n        <CursorPos X=\"50\" Y=\"15\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit76>\n      <Unit77>\n        <Filename Value=\"..\\bgrabitmap\\renderdensity256.inc\"/>\n        <TopLine Value=\"26\"/>\n        <CursorPos Y=\"62\"/>\n        <UsageCount Value=\"7\"/>\n      </Unit77>\n      <Unit78>\n        <Filename Value=\"..\\bgrabitmap\\multishapeline.inc\"/>\n        <TopLine Value=\"24\"/>\n        <CursorPos X=\"18\" Y=\"43\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit78>\n      <Unit79>\n        <Filename Value=\"..\\..\\..\\..\\..\\..\\ELSASS\\Downloads\\uEControls_v5.10\\uEControls_v5.10\\uerotimage.pas\"/>\n        <UsageCount Value=\"6\"/>\n      </Unit79>\n      <Unit80>\n        <Filename Value=\"ucube3d.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <TopLine Value=\"23\"/>\n        <CursorPos X=\"16\" Y=\"41\"/>\n        <UsageCount Value=\"89\"/>\n      </Unit80>\n      <Unit81>\n        <Filename Value=\"..\\bgrabitmap\\bgrascene3d.pas\"/>\n        <TopLine Value=\"2510\"/>\n        <CursorPos X=\"42\" Y=\"2571\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit81>\n      <Unit82>\n        <Filename Value=\"utest27.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"62\"/>\n        <CursorPos X=\"48\" Y=\"84\"/>\n        <UsageCount Value=\"88\"/>\n      </Unit82>\n      <Unit83>\n        <Filename Value=\"utore3d.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <TopLine Value=\"84\"/>\n        <CursorPos X=\"12\" Y=\"91\"/>\n        <UsageCount Value=\"88\"/>\n      </Unit83>\n      <Unit84>\n        <Filename Value=\"utest31.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"124\"/>\n        <CursorPos X=\"48\" Y=\"153\"/>\n        <UsageCount Value=\"84\"/>\n      </Unit84>\n      <Unit85>\n        <Filename Value=\"..\\bgrabitmap\\bgratextfx.pas\"/>\n        <TopLine Value=\"579\"/>\n        <CursorPos X=\"25\" Y=\"589\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit85>\n      <Unit86>\n        <Filename Value=\"..\\bgrabitmap\\bgraphongtypes.pas\"/>\n        <CursorPos X=\"14\" Y=\"26\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit86>\n      <Unit87>\n        <Filename Value=\"..\\bgrabitmap\\bgratext.pas\"/>\n        <TopLine Value=\"75\"/>\n        <CursorPos X=\"32\" Y=\"98\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit87>\n      <Unit88>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas2d.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1365\"/>\n        <CursorPos X=\"17\" Y=\"1369\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit88>\n      <Unit89>\n        <Filename Value=\"..\\bgrabitmap\\bgrasse.pas\"/>\n        <TopLine Value=\"440\"/>\n        <CursorPos X=\"38\" Y=\"520\"/>\n        <UsageCount Value=\"7\"/>\n      </Unit89>\n      <Unit90>\n        <Filename Value=\"..\\bgrabitmap\\lightingclasses3d.inc\"/>\n        <TopLine Value=\"534\"/>\n        <CursorPos X=\"12\" Y=\"555\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit90>\n      <Unit91>\n        <Filename Value=\"..\\bgrabitmap\\phonglight.inc\"/>\n        <TopLine Value=\"19\"/>\n        <CursorPos X=\"63\" Y=\"26\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit91>\n      <Unit92>\n        <Filename Value=\"..\\bgrabitmap\\phongdrawsse.inc\"/>\n        <CursorPos X=\"58\" Y=\"8\"/>\n        <UsageCount Value=\"7\"/>\n      </Unit92>\n      <Unit93>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmappack.pas\"/>\n        <TopLine Value=\"6\"/>\n        <CursorPos X=\"18\" Y=\"14\"/>\n        <UsageCount Value=\"7\"/>\n      </Unit93>\n      <Unit94>\n        <Filename Value=\"..\\bgrabitmap\\bgragrayscalemask.pas\"/>\n        <CursorPos X=\"3\" Y=\"13\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit94>\n      <Unit95>\n        <Filename Value=\"..\\bgrabitmap\\bgrautf8.pas\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit95>\n      <Unit96>\n        <Filename Value=\"C:\\lazarus\\lcl\\graphics.pp\"/>\n        <TopLine Value=\"154\"/>\n        <CursorPos Y=\"174\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit96>\n      <Unit97>\n        <Filename Value=\"C:\\lazarus\\lcl\\graphtype.pp\"/>\n        <TopLine Value=\"21\"/>\n        <CursorPos Y=\"44\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit97>\n      <Unit98>\n        <Filename Value=\"..\\bgrabitmap\\bgralclbitmap.pas\"/>\n        <TopLine Value=\"575\"/>\n        <CursorPos X=\"60\" Y=\"578\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit98>\n      <Unit99>\n        <Filename Value=\"..\\bgrabitmap\\bgraqtbitmap.pas\"/>\n        <TopLine Value=\"27\"/>\n        <CursorPos X=\"46\" Y=\"37\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit99>\n      <Unit100>\n        <Filename Value=\"..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit100>\n      <Unit101>\n        <Filename Value=\"..\\bgrabitmap\\bgratypewriter.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"18\"/>\n      </Unit101>\n      <Unit102>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\win\\wininc\\base.inc\"/>\n        <TopLine Value=\"92\"/>\n        <CursorPos X=\"6\" Y=\"104\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit102>\n      <Unit103>\n        <Filename Value=\"C:\\lazarus\\components\\lazutils\\lazutf8.pas\"/>\n        <TopLine Value=\"367\"/>\n        <CursorPos Y=\"401\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit103>\n      <Unit104>\n        <Filename Value=\"C:\\lazarus\\lcl\\lclproc.pas\"/>\n        <TopLine Value=\"2630\"/>\n        <CursorPos X=\"10\" Y=\"2639\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit104>\n      <Unit105>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\inc\\wstringh.inc\"/>\n        <TopLine Value=\"10\"/>\n        <CursorPos X=\"10\" Y=\"41\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit105>\n      <Unit106>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\inc\\wstrings.inc\"/>\n        <TopLine Value=\"1233\"/>\n        <CursorPos X=\"5\" Y=\"1239\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit106>\n      <Unit107>\n        <Filename Value=\"..\\bgrabitmap\\bgrafreetype.pas\"/>\n        <TopLine Value=\"13\"/>\n        <CursorPos X=\"33\" Y=\"37\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit107>\n      <Unit108>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.2\\source\\rtl\\objpas\\types.pp\"/>\n        <TopLine Value=\"79\"/>\n        <CursorPos X=\"3\" Y=\"98\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit108>\n      <Unit109>\n        <Filename Value=\"..\\bgrabitmap\\bgracustomtextfx.pas\"/>\n        <CursorPos X=\"86\" Y=\"6\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit109>\n      <Unit110>\n        <Filename Value=\"..\\bgrabitmap\\bgragraphics.pas\"/>\n        <CursorPos X=\"34\" Y=\"8\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit110>\n      <Unit111>\n        <Filename Value=\"..\\bgrabitmap\\bgrareadico.pas\"/>\n        <TopLine Value=\"53\"/>\n        <CursorPos X=\"53\" Y=\"66\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit111>\n      <Unit112>\n        <Filename Value=\"utest32.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"124\"/>\n        <CursorPos X=\"48\" Y=\"148\"/>\n        <UsageCount Value=\"42\"/>\n      </Unit112>\n      <Unit113>\n        <Filename Value=\"..\\bgrabitmap\\bgracustombitmap.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"9\"/>\n        <CursorPos X=\"14\" Y=\"23\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit113>\n      <Unit114>\n        <Filename Value=\"..\\bgrabitmap\\bgrapath.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"138\"/>\n        <CursorPos Y=\"155\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit114>\n      <Unit115>\n        <Filename Value=\"..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"239\"/>\n        <CursorPos X=\"50\" Y=\"261\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit115>\n      <Unit116>\n        <Filename Value=\"C:\\lazarus\\lcl\\interfaces\\win32\\win32callback.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2710\"/>\n        <CursorPos X=\"33\" Y=\"2722\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit116>\n      <Unit117>\n        <Filename Value=\"C:\\lazarus\\lcl\\customtimer.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"161\"/>\n        <CursorPos Y=\"181\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit117>\n      <Unit118>\n        <Filename Value=\"C:\\lazarus\\components\\lazutils\\easylazfreetype.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos Y=\"3\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit118>\n      <Unit119>\n        <Filename Value=\"utest33.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"52\"/>\n        <CursorPos X=\"22\" Y=\"59\"/>\n        <UsageCount Value=\"35\"/>\n      </Unit119>\n      <Unit120>\n        <Filename Value=\"..\\bgrabitmap\\bgrapixel.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"29\"/>\n        <CursorPos X=\"12\" Y=\"34\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit120>\n      <Unit121>\n        <Filename Value=\"C:\\lazarus\\fpc\\2.6.4\\source\\packages\\fcl-image\\src\\fpimage.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"121\"/>\n        <CursorPos X=\"17\" Y=\"137\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit121>\n      <Unit122>\n        <Filename Value=\"..\\bgrabitmap\\perspectivescan2.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"111\"/>\n        <CursorPos X=\"102\" Y=\"126\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit122>\n      <Unit123>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\components\\lazutils\\laztracer.pas\"/>\n        <UnitName Value=\"LazTracer\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"39\"/>\n        <CursorPos Y=\"58\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit123>\n      <Unit124>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\wincontrol.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"8343\"/>\n        <CursorPos X=\"3\" Y=\"8353\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit124>\n      <Unit125>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\scrollingwincontrol.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos Y=\"31\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit125>\n      <Unit126>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\customform.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"3181\"/>\n        <CursorPos Y=\"3200\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit126>\n      <Unit127>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\customtimer.pas\"/>\n        <UnitName Value=\"CustomTimer\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"160\"/>\n        <CursorPos Y=\"179\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit127>\n      <Unit128>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <UnitName Value=\"BGRAGtkBitmap\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"106\"/>\n        <CursorPos X=\"40\" Y=\"130\"/>\n        <UsageCount Value=\"14\"/>\n        <Loaded Value=\"True\"/>\n      </Unit128>\n      <Unit129>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3bindings\\lazgdk3.pas\"/>\n        <UnitName Value=\"LazGdk3\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"4901\"/>\n        <CursorPos X=\"11\" Y=\"4918\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit129>\n      <Unit130>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"25\" Y=\"8\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit130>\n      <Unit131>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n        <EditorIndex Value=\"8\"/>\n        <TopLine Value=\"115\"/>\n        <CursorPos X=\"17\" Y=\"99\"/>\n        <UsageCount Value=\"12\"/>\n        <Loaded Value=\"True\"/>\n      </Unit131>\n      <Unit132>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgralclbitmap.pas\"/>\n        <UnitName Value=\"BGRALCLBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"15\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit132>\n      <Unit133>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3bindings\\lazgtk3.pas\"/>\n        <UnitName Value=\"LazGtk3\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"11166\"/>\n        <CursorPos X=\"28\" Y=\"11184\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit133>\n      <Unit134>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3bindings\\lazgdkpixbuf2.pas\"/>\n        <UnitName Value=\"LazGdkPixbuf2\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"489\"/>\n        <CursorPos X=\"241\" Y=\"507\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit134>\n      <Unit135>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\winapih.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"175\"/>\n        <CursorPos X=\"10\" Y=\"192\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit135>\n      <Unit136>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3widgets.pas\"/>\n        <UnitName Value=\"Gtk3Widgets\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2588\"/>\n        <CursorPos Y=\"2606\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit136>\n      <Unit137>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3wscalendar.pp\"/>\n        <UnitName Value=\"Gtk3WSCalendar\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"113\"/>\n        <CursorPos X=\"17\" Y=\"59\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit137>\n      <Unit138>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\graphics.pp\"/>\n        <UnitName Value=\"Graphics\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1102\"/>\n        <CursorPos X=\"15\" Y=\"1118\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit138>\n      <Unit139>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\canvas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"17\"/>\n        <CursorPos X=\"3\" Y=\"24\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit139>\n      <Unit140>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3cellrenderer.pas\"/>\n        <UnitName Value=\"Gtk3CellRenderer\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"40\" Y=\"454\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit140>\n      <Unit141>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\forms.pp\"/>\n        <UnitName Value=\"Forms\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"520\"/>\n        <CursorPos X=\"3\" Y=\"520\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit141>\n      <Unit142>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\controls.pp\"/>\n        <UnitName Value=\"Controls\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2257\"/>\n        <CursorPos X=\"15\" Y=\"2276\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit142>\n      <Unit143>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\customcontrol.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"24\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit143>\n      <Unit144>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\controlcanvas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"78\"/>\n        <CursorPos X=\"3\" Y=\"77\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit144>\n      <Unit145>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\control.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"5308\"/>\n        <CursorPos X=\"3\" Y=\"5317\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit145>\n      <Unit146>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\include\\winapi.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"694\"/>\n        <CursorPos X=\"3\" Y=\"696\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit146>\n      <Unit147>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3winapih.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"100\"/>\n        <CursorPos X=\"10\" Y=\"118\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit147>\n      <Unit148>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3winapi.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1955\"/>\n        <CursorPos X=\"3\" Y=\"1959\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit148>\n      <Unit149>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3objects.pas\"/>\n        <UnitName Value=\"Gtk3Objects\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"217\"/>\n        <CursorPos X=\"3\" Y=\"199\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit149>\n      <Unit150>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"640\"/>\n        <CursorPos X=\"3\" Y=\"648\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit150>\n      <Unit151>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgrapixel.inc\"/>\n        <EditorIndex Value=\"6\"/>\n        <TopLine Value=\"79\"/>\n        <CursorPos X=\"3\" Y=\"90\"/>\n        <UsageCount Value=\"13\"/>\n        <Loaded Value=\"True\"/>\n      </Unit151>\n      <Unit152>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3bindings\\lazcairo1.pas\"/>\n        <UnitName Value=\"Lazcairo1\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"226\"/>\n        <CursorPos X=\"23\" Y=\"245\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit152>\n      <Unit153>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk3\\gtk3lclintf.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"998\"/>\n        <CursorPos X=\"43\" Y=\"1012\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit153>\n      <Unit154>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\share\\fpcsrc\\3.2.2\\packages\\gtk2\\src\\gtk+\\gdk\\gdkrgb.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"6\" Y=\"7\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit154>\n      <Unit155>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\share\\fpcsrc\\3.2.2\\packages\\gtk2\\src\\gtk+\\gdk-pixbuf\\gdk2pixbuf.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"130\"/>\n        <CursorPos X=\"59\" Y=\"144\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit155>\n      <Unit156>\n        <Filename Value=\"..\\..\\bgrabitmap\\unibitmap.inc\"/>\n        <EditorIndex Value=\"7\"/>\n        <TopLine Value=\"975\"/>\n        <CursorPos Y=\"996\"/>\n        <UsageCount Value=\"11\"/>\n        <Loaded Value=\"True\"/>\n      </Unit156>\n      <Unit157>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\share\\fpcsrc\\3.2.2\\packages\\gtk2\\src\\gtk+\\gdk\\gdk2.pas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"28\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit157>\n      <Unit158>\n        <Filename Value=\"..\\..\\..\\..\\..\\usr\\lib\\lazarus\\3.0\\lcl\\interfaces\\gtk2\\gtk2lclintf.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"411\"/>\n        <CursorPos Y=\"428\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit158>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"542\" Column=\"12\" TopLine=\"523\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"541\" TopLine=\"523\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"544\" TopLine=\"523\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"546\" TopLine=\"523\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"544\" TopLine=\"523\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"113\" Column=\"25\" TopLine=\"90\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"99\" Column=\"41\" TopLine=\"83\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"33\" Column=\"16\" TopLine=\"21\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"392\" Column=\"3\" TopLine=\"389\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"32\" Column=\"15\" TopLine=\"15\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"382\" Column=\"3\" TopLine=\"380\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"21\" Column=\"20\" TopLine=\"14\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"132\" Column=\"3\" TopLine=\"130\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"20\" Column=\"15\" TopLine=\"3\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"utest3.pas\"/>\n        <Caret Line=\"40\" Column=\"32\" TopLine=\"10\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"utest3.pas\"/>\n        <Caret Line=\"41\" Column=\"70\" TopLine=\"10\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"120\" Column=\"12\" TopLine=\"103\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"90\" Column=\"55\" TopLine=\"80\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"102\" Column=\"26\" TopLine=\"80\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"295\" Column=\"108\" TopLine=\"267\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"302\" Column=\"95\" TopLine=\"274\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"499\" Column=\"103\" TopLine=\"471\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"506\" Column=\"95\" TopLine=\"478\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"134\" Column=\"39\" TopLine=\"106\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"129\" Column=\"58\" TopLine=\"115\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"85\" Column=\"48\" TopLine=\"68\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"20\" Column=\"50\" TopLine=\"15\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"126\" Column=\"30\" TopLine=\"106\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"125\" Column=\"48\" TopLine=\"106\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgragtkbitmap.pas\"/>\n        <Caret Line=\"130\" Column=\"40\" TopLine=\"106\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\"/>\n    </SearchPaths>\n    <Parsing>\n      <SyntaxOptions>\n        <UseAnsiStrings Value=\"False\"/>\n      </SyntaxOptions>\n    </Parsing>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testbgrafunc/testbgrafunc.lpr",
    "content": "program testbgrafunc;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain, utest1, utest2, utest3, utest4, utest5, utest6, utest7, utest8,\n  utest9, utest10, utest11, utest14, utest15, utest16, utest17, utest18,\n  utest19, utestback, utestpacrect, etpackage, utest22, utest23, utest24,\n  utexture, utest25, utest26, ucube3d, utest27, utore3d, utest31, utest32,\n  utest33;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TFMain, FMain);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/ucube3d.pas",
    "content": "unit ucube3d;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRAScene3D, BGRABitmapTypes;\n\ntype\n\n  { TCubeScene3D }\n\n  TCubeScene3D = class(TBGRAScene3D)\n    cube: IBGRAObject3D;\n    constructor Create;\n    procedure SetCubeTexture(ATexture: TBGRACustomBitmap);\n    procedure SetCubeTexture(ATexture: IBGRAScanner; tx,ty: single);\n  end;\n\nimplementation\n\n{ TCubeScene3D }\n\nconstructor TCubeScene3D.Create;\nvar v: arrayOfIBGRAVertex3D;\nbegin\n  inherited Create;\n\n  cube := CreateObject;\n  v := cube.MainPart.Add([-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1,\n                          -1,-1,+1, 1,-1,+1, 1,1,+1, -1,1,+1]);\n\n  cube.AddFace([v[0],v[1],v[2],v[3]],BGRA(255,0,0));\n  cube.AddFace([v[4],v[5],v[1],v[0]],BGRA(128,160,255));\n  cube.AddFace([v[7],v[6],v[5],v[4]],BGRA(96,224,0));\n  cube.AddFace([v[3],v[2],v[6],v[7]],BGRA(192,0,255));\n  cube.AddFace([v[1],v[5],v[6],v[2]],BGRA(255,192,0));\n  cube.AddFace([v[4],v[0],v[3],v[7]],BGRAWhite);\n\n  cube.MainPart.Scale(20);\n\n  AmbiantLightness := 0.5;\n  AddDirectionalLight(Point3D(1,1,1),1,-0.5);\nend;\n\nprocedure TCubeScene3D.SetCubeTexture(ATexture: TBGRACustomBitmap);\nbegin\n  SetCubeTexture(ATexture,ATexture.Width-1,ATexture.Height-1);\nend;\n\nprocedure TCubeScene3D.SetCubeTexture(ATexture: IBGRAScanner; tx, ty: single);\nvar\n  i: Integer;\nbegin\n  for i := 0 to cube.FaceCount-1 do\n  with cube.Face[i] do\n  begin\n    Texture := ATexture;\n    TexCoord[0] := PointF(0,0);\n    TexCoord[1] := PointF(tx,0);\n    TexCoord[2] := PointF(tx,ty);\n    TexCoord[3] := PointF(0,ty);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/umain.lfm",
    "content": "object FMain: TFMain\n  Left = 424\n  Height = 386\n  Top = 162\n  Width = 650\n  Caption = 'BGRABitmap functions test'\n  ClientHeight = 386\n  ClientWidth = 650\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnHide = FormHide\n  OnPaint = FormPaint\n  OnShow = FormShow\n  LCLVersion = '3.0.0.3'\n  object Panel1: TPanel\n    Left = 0\n    Height = 88\n    Top = 0\n    Width = 650\n    Align = alTop\n    ClientHeight = 88\n    ClientWidth = 650\n    TabOrder = 0\n    object Label_TestName: TLabel\n      Left = 1\n      Height = 39\n      Top = 1\n      Width = 648\n      Align = alTop\n      AutoSize = False\n      Caption = 'Label_TestName'\n      Font.Height = -12\n      Layout = tlCenter\n      ParentColor = False\n      ParentFont = False\n      WordWrap = True\n    end\n    object Button_First: TButton\n      Left = 7\n      Height = 30\n      Top = 48\n      Width = 75\n      Caption = 'First'\n      TabOrder = 0\n      OnClick = Button_FirstClick\n    end\n    object Button_Prev: TButton\n      Left = 88\n      Height = 30\n      Top = 48\n      Width = 75\n      Caption = '<< Prev'\n      TabOrder = 1\n      OnClick = Button_PrevClick\n    end\n    object Button_Next: TButton\n      Left = 168\n      Height = 30\n      Top = 48\n      Width = 75\n      Caption = 'Next >>'\n      TabOrder = 2\n      OnClick = Button_NextClick\n    end\n    object Button_Last: TButton\n      Left = 248\n      Height = 30\n      Top = 48\n      Width = 75\n      Caption = 'Last'\n      TabOrder = 3\n      OnClick = Button_LastClick\n    end\n    object CheckBox_TransparentDraw: TCheckBox\n      Left = 508\n      Height = 21\n      Top = 54\n      Width = 135\n      Anchors = [akTop, akRight]\n      Caption = 'Transparent draw'\n      TabOrder = 4\n    end\n  end\n  object Timer1: TTimer\n    Enabled = False\n    Interval = 30\n    OnTimer = Timer1Timer\n    Left = 568\n    Top = 96\n  end\nend\n"
  },
  {
    "path": "test/testbgrafunc/umain.lrs",
    "content": "{ This is an automatically generated lazarus resource file }\n\nLazarusResources.Add('TFMain','FORMDATA',[\n  'TPF0'#6'TFMain'#5'FMain'#4'Left'#3#168#1#6'Height'#3#130#1#3'Top'#3#162#0#5\n  +'Width'#3#138#2#7'Caption'#6#25'BGRABitmap functions test'#12'ClientHeight'#3\n  +#130#1#11'ClientWidth'#3#138#2#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11\n  +'FormDestroy'#6'OnHide'#7#8'FormHide'#7'OnPaint'#7#9'FormPaint'#6'OnShow'#7#8\n  +'FormShow'#10'LCLVersion'#6#7'3.0.0.3'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'H'\n  +'eight'#2'X'#3'Top'#2#0#5'Width'#3#138#2#5'Align'#7#5'alTop'#12'ClientHeight'\n  +#2'X'#11'ClientWidth'#3#138#2#8'TabOrder'#2#0#0#6'TLabel'#14'Label_TestName'\n  +#4'Left'#2#1#6'Height'#2''''#3'Top'#2#1#5'Width'#3#136#2#5'Align'#7#5'alTop'\n  +#8'AutoSize'#8#7'Caption'#6#14'Label_TestName'#11'Font.Height'#2#244#6'Layou'\n  +'t'#7#8'tlCenter'#11'ParentColor'#8#10'ParentFont'#8#8'WordWrap'#9#0#0#7'TBu'\n  +'tton'#12'Button_First'#4'Left'#2#7#6'Height'#2#30#3'Top'#2'0'#5'Width'#2'K'\n  +#7'Caption'#6#5'First'#8'TabOrder'#2#0#7'OnClick'#7#17'Button_FirstClick'#0#0\n  +#7'TButton'#11'Button_Prev'#4'Left'#2'X'#6'Height'#2#30#3'Top'#2'0'#5'Width'\n  +#2'K'#7'Caption'#6#7'<< Prev'#8'TabOrder'#2#1#7'OnClick'#7#16'Button_PrevCli'\n  +'ck'#0#0#7'TButton'#11'Button_Next'#4'Left'#3#168#0#6'Height'#2#30#3'Top'#2\n  +'0'#5'Width'#2'K'#7'Caption'#6#7'Next >>'#8'TabOrder'#2#2#7'OnClick'#7#16'Bu'\n  +'tton_NextClick'#0#0#7'TButton'#11'Button_Last'#4'Left'#3#248#0#6'Height'#2\n  +#30#3'Top'#2'0'#5'Width'#2'K'#7'Caption'#6#4'Last'#8'TabOrder'#2#3#7'OnClick'\n  +#7#16'Button_LastClick'#0#0#9'TCheckBox'#24'CheckBox_TransparentDraw'#4'Left'\n  +#3#252#1#6'Height'#2#21#3'Top'#2'6'#5'Width'#3#135#0#7'Anchors'#11#5'akTop'#7\n  +'akRight'#0#7'Caption'#6#16'Transparent draw'#8'TabOrder'#2#4#0#0#0#6'TTimer'\n  +#6'Timer1'#7'Enabled'#8#8'Interval'#2#30#7'OnTimer'#7#11'Timer1Timer'#4'Left'\n  +#3'8'#2#3'Top'#2'`'#0#0#0\n]);\n"
  },
  {
    "path": "test/testbgrafunc/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,\n  StdCtrls, ExtCtrls, utest, EpikTimer;\n\ntype\n\n  { TFMain }\n\n  TFMain = class(TForm)\n    Button_First: TButton;\n    Button_Last: TButton;\n    Button_Next: TButton;\n    Button_Prev: TButton;\n    CheckBox_TransparentDraw: TCheckBox;\n    Label_TestName: TLabel;\n    Panel1: TPanel;\n    Timer1: TTimer;\n    procedure Button_LastClick(Sender: TObject);\n    procedure Button_NextClick(Sender: TObject);\n    procedure Button_FirstClick(Sender: TObject);\n    procedure Button_PrevClick(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormHide(Sender: TObject);\n    procedure FormPaint(Sender: TObject);\n    procedure FormShow(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n  public\n    NumTest: integer;\n    CurrentTest: TTest;\n    stopwatch, timeMeasure: TEpikTimer;\n    procedure SetNumTest(value: integer);\n  end; \n\nvar\n  FMain: TFMain;\n\nimplementation\n\nuses utest1, utest2, utest3, utest4, utest5, utest6, utest7,\n     utest8, utest9, utest10, utest11, utest14, utest15, utest16, utest17,\n     utest18, utest19, utest22, utest23, utest24, utest25, utest26,\n     utest27, utest31, utest32, utest33, BGRAScene3D,\n     BGRABitmapTypes, LCLIntf, BGRAText;\n\nconst\n    TestCount = 33;\n\n{ TFMain }\n\nprocedure TFMain.SetNumTest(value: integer);\nbegin\n  FreeAndNil(CurrentTest);\n  numTest := value;\n  Button_Prev.Enabled := TestCount >=2;\n  Button_Next.Enabled := TestCount >=2;\n  case numTest of\n  1: currentTest := TTest1.Create;\n  2: currentTest := TTest2.Create;\n  3: currentTest := TTest3.Create;\n  4: currentTest := TTest4.Create;\n  5: currentTest := TTest5.Create;\n  6: currentTest := TTest6.Create;\n  7: currentTest := TTest7.create;\n  8: currentTest := TTest8.create;\n  9: currentTest := TTest9.create;\n  10: currentTest := TTest10.create;\n  11: currentTest := TTest11.create('');\n  12: currentTest := TTest11.create('Emboss');\n  13: currentTest := TTest11.create('Contour');\n  14: currentTest := TTest14.create;\n  15: currentTest := TTest15.create;\n  16: currentTest := TTest16.create;\n  17: currentTest := TTest17.create;\n  18: currentTest := TTest18.create;\n  19: currentTest := TTest19.create(False,False);\n  20: currentTest := TTest19.create(True,False);\n  21: currentTest := TTest19.create(True,True);\n  22: currentTest := TTest22.create;\n  23: currentTest := TTest23.create;\n  24: currentTest := TTest24.create;\n  25: currentTest := TTest25.create;\n  26: currentTest := TTest26.create;\n  27: currentTest := TTest27.create(lnFace, liLowQuality);\n  28: currentTest := TTest27.create(lnFaceVertexMix, liLowQuality);\n  29: currentTest := TTest27.create(lnVertex, liLowQuality);\n  30: currentTest := TTest27.create(lnVertex, liAlwaysHighQuality);\n  31: currentTest := TTest31.create;\n  32: currentTest := TTest32.create;\n  33: currentTest := TTest33.create;\n  else\n    raise exception.Create('Test number unknown ('+IntToStr(numTest)+')');\n  end;\n  Label_TestName.Caption := 'Test n°'+inttostr(Value)+': '+currentTest.Name;\nend;\n\nprocedure TFMain.FormCreate(Sender: TObject);\nbegin\n  CurrentTest := nil;\n  {$IFDEF DARWIN}\n  ResourceDir := ExtractFilePath(Application.ExeName)+'../../../../'+'img'+pathdelim;\n  If not FileExists(ResourceDir+'pac_d1.bmp') then\n  {$ENDIF}\n  ResourceDir:= ExtractFilePath(Application.ExeName)+'..'+pathdelim+'img'+pathdelim;\n\n  SetNumTest(1);\n  stopwatch := TEpikTimer.Create(Application);\n  timeMeasure := TEpikTimer.Create(Application);\n  timeMeasure.Start;\n\n  if TBGRAPixel_RGBAOrder then\n    Caption := Caption + ' (RGBA 32-bit)'\n  else\n    Caption := Caption + ' (BGRA 32-bit)';\nend;\n\nprocedure TFMain.FormDestroy(Sender: TObject);\nbegin\n  FreeAndNil(CurrentTest);\nend;\n\nprocedure TFMain.FormHide(Sender: TObject);\nbegin\n  Timer1.Enabled:= false;\nend;\n\nprocedure TFMain.FormPaint(Sender: TObject);\nvar\n  strTime: string;\n  ptText: TPoint;\n  drawElapsed: extended;\nbegin\n  if CurrentTest <> nil then\n  begin\n    stopwatch.clear;\n    stopwatch.Start;\n\n    CurrentTest.OpaqueDraw:= not CheckBox_TransparentDraw.Checked;\n    CurrentTest.OnPaint(self.Canvas,0,Panel1.Height,ClientWidth,ClientHeight-Panel1.Height);\n\n    drawElapsed := stopwatch.Elapsed;\n\n    if drawElapsed > 0.0001 then\n    begin\n      strTime := IntToStr(round(drawElapsed*1000))+ ' ms';\n      strTime := strTime + ', ' + IntToStr(round(1/drawElapsed)) + ' FPS';\n      ptText := Point(3,ClientHeight-25);\n      with self.Canvas do\n      begin\n        Font.Height := FixLCLFontFullHeight(Font.Name,25);\n        Font.Style := [fsBold];\n        Brush.Style := bsClear;\n        Font.Color := clBlack;\n        TextOut(ptText.X-1,ptText.Y-1,strTime);\n        TextOut(ptText.X+1,ptText.Y-1,strTime);\n        TextOut(ptText.X+1,ptText.Y+1,strTime);\n        TextOut(ptText.X-1,ptText.Y+1,strTime);\n        Font.Color := clWhite;\n        TextOut(ptText.X,ptText.Y,strTime);\n      end;\n    end;\n\n  end;\nend;\n\nprocedure TFMain.FormShow(Sender: TObject);\nbegin\n  Timer1.Enabled:= true;\nend;\n\nprocedure TFMain.Timer1Timer(Sender: TObject);\nvar\n  elapsed: Extended;\n  r: TRect;\nbegin\n  if (CurrentTest <> nil) and Visible then\n  begin\n    Timer1.Enabled := false;\n    elapsed := timeMeasure.Elapsed;\n    timeMeasure.clear;\n    timeMeasure.Start;\n\n    CurrentTest.OnTimer(ClientWidth,ClientHeight-Panel1.Height,elapsed);\n    r := rect(0,Panel1.Height,ClientWidth,ClientHeight);\n    InvalidateRect(self.Handle,@r,False);\n    self.Update;\n    Timer1.Enabled := true;\n  end;\nend;\n\nprocedure TFMain.Button_NextClick(Sender: TObject);\nbegin\n  if NumTest < TestCount then\n    SetNumTest(NumTest+1) else\n      SetNumTest(1);\nend;\n\nprocedure TFMain.Button_LastClick(Sender: TObject);\nbegin\n  SetNumTest(TestCount);\nend;\n\nprocedure TFMain.Button_FirstClick(Sender: TObject);\nbegin\n  SetNumTest(1);\nend;\n\nprocedure TFMain.Button_PrevClick(Sender: TObject);\nbegin\n  if NumTest > 1 then\n    SetNumTest(NumTest-1) else\n      SetNumTest(TestCount);\nend;\n\ninitialization\n  {$I umain.lrs}\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest.pas",
    "content": "unit utest;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Graphics;\n\ntype\n  TTest = class\n  public\n    Name: string;\n    OpaqueDraw: boolean;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); virtual; abstract;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); virtual; abstract;\n  end;\n\nvar\n  ResourceDir: string;\n\nimplementation\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest1.pas",
    "content": "unit utest1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utestpacrect;\n\ntype\n  { TTest1 }\n\n  TTest1 = class(TTestPacRect)\n  public\n    constructor Create;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n  end;\n\nimplementation\n\n{ TTest1 }\n\nconstructor TTest1.Create;\nbegin\n  inherited Create;\n  Name := 'Canvas.Draw(TBitmap) on Form. NOT RECOMMENDED! Flickering pacmans walking with a rectangle. Rectangle opacity depends on the standard Canvas rendering capacities on windows.';\nend;\n\nprocedure TTest1.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar i: integer;\nbegin\n  if backgroundImg = nil then exit;\n\n  //draw background as TBitmap\n  Canvas.Draw(Left,Top,backgroundImg.Bitmap);\n\n  //draw sprites as TBitmaps\n  for i := 0 to high(pacLoc) do\n    Canvas.Draw(Left+pacLoc[i].x,Top+pacLoc[i].y,pacImg[numPacImg].Bitmap);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest10.pas",
    "content": "unit utest10;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes;\n\nconst\n  sinTabPrecision = 12;\n\ntype\n  { TTest10 }\n\n  TTest10 = class(TTest)\n  protected\n    virtualScreen: TBGRABitmap;\n    time: single;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest10 }\n\nconstructor TTest10.Create;\nbegin\n  inherited Create;\n  Name := 'Plasma rendered by Scanline access';\n  virtualScreen := nil;\n  time := 0;\nend;\n\ndestructor TTest10.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest10.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar xb,yb: integer;\n    p: PBGRAPixel;\n    value: integer;\n    center: TPointF;\n    intTime1, intTime2, intTime3: integer;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  center := pointF((sin(time)+1)/4+0.2,(cos(time*0.3)+1)/4+0.3);\n  intTime1 := round(time*65536*7/10);\n  intTime2 := round(time*65536*11/10);\n  intTime3 := round(time*65536*13/10);\n  for yb := 0 to virtualscreen.Height-1 do\n  begin\n    p := virtualScreen.ScanLine[yb];\n    for xb := 0 to virtualScreen.Width-1 do\n    begin\n      {$push}{$r-}\n      value := Sin65536(\n                        (xb shl 8 + (height-yb)*(Sin65536(intTime2 shr 2) shr 8 - 128) + intTime1 shr 5 + Sin65536(yb shl 16 div height + intTime3) shr 4)*\n                        ( Sin65536(intTime1 shr 3) shr 9 - 64 + 256 )*2 div Width);\n      inc(value, Sin65536(yb * ( Sin65536(intTime1 shr 2) shr 9 - 64 + 256 )*256 div Height + intTime1 shr 1 +\n                        xb*(Sin65536(intTime2 shr 4) shr 8 - 128) ) );\n\n      inc(value, Sin65536( round( sqrt(sqr(xb/width-center.x)+sqr(yb/height-center.y))\n                          * ( (Sin65536(intTime3 shr 3)+ 2*65536)  ) ) + intTime2 shr 2) );\n      {$pop}\n\n      value := value div (3*128);\n\n      if value > 255 then\n      begin\n        if value < 511 then value := value-256 else\n          value := 255;\n        p^.red := 255;\n        p^.green := 64+value shr 1;\n        p^.blue := 0;\n      end else\n      begin\n        p^.red := value;\n        p^.green := value shr 2;\n        p^.blue := 0;\n      end;\n      p^.alpha := 255;\n      inc(p);\n    end;\n  end;\n  virtualScreen.InvalidateBitmap;\n\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest10.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest11.pas",
    "content": "unit utest11;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, BGRAGrayscaleMask;\n\nconst\n  nbPoints = 6;\n\ntype\n  { TTest11 }\n\n  TTest11 = class(TTest)\n  protected\n    virtualScreen: TBGRABitmap;\n    mask: TGrayscaleMask;\n    pts: array of TPointF;\n    dirs: array of TPointF;\n    FFilter: string;\n\n  public\n    constructor Create(filter: string);\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest11 }\n\nconstructor TTest11.Create(filter: string);\nbegin\n  inherited Create;\n  Name := 'Antialiased lines and splines';\n  if filter <> '' then Name := Name + ' with filter '+filter;\n  randomize;\n  virtualScreen := nil;\n  FFilter := filter;\nend;\n\ndestructor TTest11.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest11.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar filtered: TBGRABitmap;\n  filteredMask: TGrayscaleMask;\nbegin\n  if pts = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n  if (mask <> nil) and ((mask.width <> width) or (mask.Height <> height)) then\n    FreeAndNil(mask);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  if ffilter = 'Emboss' then\n  begin\n    virtualScreen.Fill(BGRABlack);\n    virtualScreen.DrawPolyLineAntialias(virtualScreen.ComputeOpenedSpline(pts,ssCrossing),BGRAWhite,(width+height)/80,True);\n    filtered := virtualScreen.FilterEmbossHighlight(True);\n    virtualScreen.Fill(clForm);\n    virtualScreen.PutImage(0,0,filtered,dmDrawWithTransparency);\n    filtered.Free;\n    virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\n  end else\n  if ffilter = 'Contour' then\n  begin\n    if mask = nil then\n      mask := TGrayscaleMask.Create(virtualScreen.Width, virtualScreen.Height);\n    mask.Fill(ByteMaskBlack);\n    mask.DrawPolyLineAntialias(virtualScreen.ComputeOpenedSpline(pts,ssCrossing),\n      ByteMaskWhite, (width+height)/80, True);\n    filteredMask := mask.FilterContour;\n    filteredMask.Draw(virtualScreen, 0, 0, true);\n    filteredMask.Free;\n    virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\n  end else\n  begin\n    virtualScreen.Fill(BGRAWhite);\n    virtualScreen.DrawPolyLineAntialias(virtualScreen.ComputeOpenedSpline(pts,ssCrossing),BGRA(0,0,0,128),(width+height)/80,True);\n    virtualScreen.DrawPolyLineAntialias(pts,BGRA(0,0,0,128),(width+height)/800,True);\n    virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\n  end;\nend;\n\nprocedure TTest11.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar i: integer;\nbegin\n  if pts = nil then\n  begin\n    setlength(pts,nbPoints);\n    setlength(dirs,nbPoints);\n    for i := 0 to NbPoints-1 do\n    begin\n      pts[i] := pointf(random(Width),random(Height));\n      dirs[i] := pointf((random(Width)-width/2)/20,(random(Height)-height/2)/20);\n    end;\n  end;\n  for i := 0 to NbPoints-1 do\n  begin\n    pts[i].x := pts[i].x+dirs[i].x;\n    if pts[i].x < 0 then\n    begin\n      pts[i].x := 0;\n      dirs[i].x := abs(dirs[i].x);\n    end;\n    if pts[i].x > width-1 then\n    begin\n      pts[i].x := width-1;\n      dirs[i].x := -abs(dirs[i].x);\n    end;\n    pts[i].y := pts[i].y+dirs[i].y;\n    if pts[i].y < 0 then\n    begin\n      pts[i].y := 0;\n      dirs[i].y := abs(dirs[i].y);\n    end;\n    if pts[i].y > height-1 then\n    begin\n      pts[i].y := height-1;\n      dirs[i].y := -abs(dirs[i].y);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest14.pas",
    "content": "unit utest14;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Graphics, BGRABitmap, BGRABitmapTypes, utest;\n\ntype\n  { TTest14 }\n\n  TTest14 = class(TTest)\n  protected\n    virtualScreen: TBGRABitmap;\n    time: single;\n    lightPos1,lightPos2: TPointF;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest14 }\n\nconstructor TTest14.Create;\nbegin\n  inherited Create;\n  Name := 'Layer blending: adding red and green gives yellow';\n  virtualScreen := nil;\n  time := 0;\nend;\n\ndestructor TTest14.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest14.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar layer: TBGRABitmap; x,y: single; radius: integer;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  if time = 0 then exit;\n\n  radius := (width+height) div 8;\n  virtualScreen.Fill(BGRABlack);\n  x := lightPos1.X*Width;\n  y := lightPos1.Y*Height;\n  virtualScreen.FillEllipseAntialias(x,y,radius,radius,BGRA(255,0,0,255));\n  layer := TBGRABitmap.Create(Width,Height,BGRABlack);\n  x := lightPos2.X*Width;\n  y := lightPos2.Y*Height;\n  layer.FillEllipseAntialias(x,y,radius,radius,BGRA(0,255,0,255));\n  virtualScreen.BlendImage(0,0,layer,boAdditive);\n  layer.Free;\n\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest14.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec*0.5;\n  lightPos1 := pointF((sin(time)+1)/4+0.2,(cos(time*0.3)+1)/4+0.3);\n  lightPos2 := pointF((sin(time*0.7+1)+1)/4+0.4,(cos(time*0.5+2)+1)/4+0.3);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest15.pas",
    "content": "unit utest15;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Graphics, Classes, SysUtils, utest, BGRAGradients, BGRABitmap, BGRABitmapTypes;\n\ntype\n\n  { TTest15 }\n\n  TTest15 = class(TTest)\n  private\n    phong: TPhongShading;\n    virtualScreen, map, colorMap: TBGRABitmap;\n    time: double;\n    lightPos1: TPointF;\n    ShouldGenerateMap: Boolean;\n    procedure GenerateMap;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest15 }\n\nconstructor TTest15.Create;\nbegin\n  Name := 'Phong shading and Perlin noise';\n  virtualScreen := nil;\n  time := 0;\n\n  randomize;\n  phong := TPhongShading.Create;\n  phong.LightPositionZ := 128;\n  phong.SpecularIndex := 20;\n  phong.SpecularFactor := 0.5;\n  phong.LightSourceIntensity := 100;\n  phong.AmbientFactor := 0.3;\n  phong.NegativeDiffusionFactor := 0.3;\n  ShouldGenerateMap:= false;\nend;\n\ndestructor TTest15.Destroy;\nbegin\n  phong.Free;\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest15.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nconst lightSize= 20;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(map);\n    FreeAndNil(colorMap);\n  end;\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n  end;\n\n  if ShouldGenerateMap then\n  begin\n    GenerateMap;\n    ShouldGenerateMap := false;\n  end;\n\n  if map <> nil then\n  begin\n    phong.LightPositionF := PointF(lightPos1.x * Width, lightPos1.y * Height);\n    phong.Draw(virtualScreen,map,64,0,0,colorMap);\n    virtualScreen.GradientFill(phong.LightPosition.X-lightSize,phong.LightPosition.Y-lightSize,\n      phong.LightPosition.X+lightSize,phong.LightPosition.Y+lightSize, BGRA(255,255,240,255),BGRAPixelTransparent,\n      gtRadial,PointF(phong.LightPosition.X,phong.LightPosition.Y),PointF(phong.LightPosition.X+lightSize,phong.LightPosition.Y),\n      dmDrawWithTransparency);\n    virtualScreen.Draw(Canvas,Left,Top,OpaqueDraw);\n  end else\n  begin\n    virtualScreen.Fill(BGRABlack);\n    virtualScreen.TextOut(Width div 2, height div 2-virtualScreen.FontHeight div 2,'Generating map...',BGRAWhite,taCenter);\n    virtualScreen.Draw(Canvas,Left,Top,OpaqueDraw);\n    ShouldGenerateMap := True;\n  end;\nend;\n\nprocedure TTest15.GenerateMap;\nvar\n  i: Integer;\n  p: PBGRAPixel;\n  pcol: PBGRAPixel;\n  temp: TBGRABitmap;\nbegin\n  FreeAndNil(map);\n  FreeAndNil(colorMap);\n  map := CreatePerlinNoiseMap(virtualscreen.Width,virtualscreen.Height,2,2);\n  colorMap := TBGRABitmap.Create(map.width,map.Height,BGRAWhite);\n  p := map.Data;\n  pcol := colorMap.Data;\n  for i := 0 to map.NbPixels-1 do\n  begin\n    if p^.red < 64 then pcol^ := BGRA(0,128,255) else //water\n    if p^.red < 96 then pcol^ := BGRA(240,200,100) else //beach\n    if p^.red < 128 then pcol^ := BGRA(100,190,0) else //grass\n    if p^.red < 220 then pcol^ := BGRA(180,120,90) else //mountain\n      pcol^ := BGRAWhite; //snow\n\n    if p^.red < 128 then //water and beach less\n      p^ := MapHeightToBGRA((128-(128-p^.red)/4)/255,255);\n\n    inc(pcol);\n    inc(p);\n  end;\n\n  temp := colorMap.FilterBlurRadial(2,rbCorona);\n  colorMap.Free;\n  colorMap := temp;\nend;\n\nprocedure TTest15.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec;\n  lightPos1 := pointF((sin(time*0.7+1)+1)/4+0.4,(cos(time*0.5+2)+1)/4+0.3);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest16.pas",
    "content": "unit utest16;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Graphics, Classes, SysUtils, utest, BGRAGradients, BGRABitmap, BGRABitmapTypes;\n\ntype\n\n  { TTest16 }\n\n  TTest16 = class(TTest)\n  private\n    phong: TPhongShading;\n    chartTime,lightTime: double;\n    lightPos1: TPointF;\n    RoundCorners : boolean;\n    series: array of record\n      val1,val2: integer;\n    end;\n    color1,color2: TBGRAPixel;\n    procedure NewChart;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses types;\n\n{ TTest16 }\n\nconstructor TTest16.Create;\nbegin\n  Name := 'Phong shading primitives';\n  lightTime := 0;\n  chartTime := 0;\n\n  randomize;\n  phong := TPhongShading.Create;\n  NewChart;\nend;\n\nprocedure TTest16.NewChart;\nvar\n  i: Integer;\n\n  procedure RandomSwap(var color: TBGRAPixel);\n  var temp: byte;\n  begin\n    if random(2)= 0 then\n    begin\n      temp := color.Red;\n      color.red := color.Green;\n      color.green := temp;\n    end;\n    if random(2)= 0 then\n    begin\n      temp := color.green;\n      color.green := color.blue;\n      color.blue := temp;\n    end;\n  end;\n\nbegin\n  setlength(series, 4+random(6));\n  for i := 0 to high(series) do\n  begin\n    series[i].val1 := random(50);\n    series[i].val2 := random(50);\n  end;\n  color1 := BGRA(255,160,0);\n  RandomSwap(color1);\n  color2 := BGRA(140,180,255);\n  RandomSwap(Color2);\n  RoundCorners := not RoundCorners;\nend;\n\ndestructor TTest16.Destroy;\nbegin\n  phong.Free;\n\n  inherited Destroy;\nend;\n\nprocedure TTest16.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar\n  borderSize: integer;\n  barPrecalc: TBGRABitmap;\n\n  procedure DrawBar(image: TBGRABitmap; bounds: TRect; color : TBGRAPixel);\n  begin\n    if barPrecalc <> nil then\n      phong.Draw(image,barPrecalc,borderSize,bounds.Left,bounds.Top,color)\n    else\n      phong.DrawRectangle(image,bounds,borderSize,borderSize,color,RoundCorners,[rmoNoBottomBorder]);\n  end;\n\nconst\n  chartTitle = 'Chart example';\n\nvar\n  image: TBGRABitmap;\n  i: integer;\n  maxVal: integer;\n  r: TRect;\n  gbounds: TRect;\n  s: TSize;\n\nbegin\n  if lightTime = 0 then exit;\n  barPrecalc := nil;\n\n  //create background\n  image := TBGRABitmap.Create(Width,Height);\n  image.GradientFill(0,0,image.Width,image.Height,BGRA(255,255,255),BGRA(128,128,128),gtLinear,PointF(0,0),PointF(image.Width,Image.Height),dmSet);\n\n  gbounds := rect(round(image.Width*0.1),round(image.Height*0.2),round(image.Width*0.9),round(image.Height*0.98));\n  image.Rectangle(gbounds,BGRA(0,0,0,96),dmDrawWithTransparency);\n  borderSize := round((gbounds.right-gbounds.left)/length(series)*0.06);\n  if borderSize = 0 then borderSize := 1;\n\n  //init phong\n  phong.LightPosition := Point(round(lightPos1.X*Width),round(lightPos1.Y*Height));\n  phong.LightPositionZ := 2*borderSize;\n\n  //draw title\n  image.FontHeight := gbounds.Top div 4;\n  s := image.TextSize(chartTitle);\n  phong.DrawSphere(image, rect((gbounds.Left+gbounds.Right-s.cx*2) div 2,(gbounds.Top-s.cy*2) div 2,\n    (gbounds.Left+gbounds.Right+s.cx*2) div 2,(gbounds.Top+s.cy*2) div 2),10,BGRA(0,255,0,192));\n  image.TextOut((gbounds.Left+gbounds.Right) div 2+1, (gbounds.Top-s.cy) div 2+1,ChartTitle,BGRABlack,taCenter);\n  image.TextOut((gbounds.Left+gbounds.Right) div 2-1, (gbounds.Top-s.cy) div 2-1,ChartTitle,BGRAWhite,taCenter);\n\n  //compute max value\n  maxVal := 1;\n  for i := 0 to high(series) do\n  begin\n    if series[i].val1 > maxVal then maxVal := series[i].Val1;\n    if series[i].val2 > maxVal then maxVal := series[i].Val2;\n  end;\n\n  if RoundCorners then\n    barPrecalc := CreateRoundRectangleMap(round((0.4-0.1)/length(series)*(gbounds.Right-gBounds.Left)),gBounds.Bottom-gBounds.Top,borderSize,[rmoNoBottomBorder])\n  else\n    barPrecalc := CreateRectangleMap(round((0.4-0.1)/length(series)*(gbounds.Right-gBounds.Left)),gBounds.Bottom-gBounds.Top,borderSize,[rmoNoBottomBorder]);\n  image.ClipRect := gBounds;\n\n  //draw bars\n  for i := 0 to high(series) do\n  begin\n    r.Left := gbounds.Left+round((i+0.1)/length(series)*(gbounds.Right-gBounds.Left));\n    r.Right := gbounds.Left+round((i+0.4)/length(series)*(gbounds.Right-gBounds.Left));\n    r.top := gbounds.Top+round((gbounds.Bottom-gBounds.Top)*(1-series[i].val1/maxVal));\n    r.bottom := gbounds.Bottom;\n    DrawBar(image,r,color1);\n\n    r.Left := gbounds.Left+round((i+0.43)/length(series)*(gbounds.Right-gBounds.Left));\n    r.Right := gbounds.Left+round((i+0.73)/length(series)*(gbounds.Right-gBounds.Left));\n    r.top := gbounds.Top+round((gbounds.Bottom-gBounds.Top)*(1-series[i].val2/maxVal));\n    r.bottom := gbounds.Bottom;\n    DrawBar(image,r,color2);\n  end;\n\n  image.NoClip;\n  barPrecalc.Free;\n\n  //draw chart\n  image.Draw(Canvas,Left,Top,OpaqueDraw);\n\n  image.free;\nend;\n\nprocedure TTest16.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nbegin\n  lightTime := lightTime+ElapsedSec*0.2;\n  lightPos1 := pointF((sin(lightTime*0.7+1)+1)/2,(cos(lightTime*0.5+2)+1)/4-0.3);\n\n  chartTime := chartTime+ElapsedSec;\n  if chartTime > 10 then\n  begin\n    chartTime := chartTime-10;\n    NewChart;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest17.pas",
    "content": "unit utest17;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Graphics, Classes, SysUtils, utest, BGRABitmap, BGRAClasses, BGRABitmapTypes;\n\ntype\n\n  { TTest17 }\n\n  TTest17 = class(TTest)\n    time: double;\n    dashstyle: TPenStyle;\n    constructor Create;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest17 }\n\nconstructor TTest17.Create;\nbegin\n  Name := 'Line primitives';\n  dashstyle := psSolid;\nend;\n\nprocedure TTest17.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar\n  image: TBGRABitmap;\n  c : TBGRAPixel;\n  angleofs: single;\n\n  procedure DrawLines(x,y: single; title: string);\n  var\n    penwidth: single;\n    i: Integer;\n    ca,sa: single;\n  begin\n    image.textout(round(x),round(y),title,c);\n    IncF(y, image.TextSize(title).cy+10);\n    for i := 1 to 2 do\n    begin\n      ca := cos(sin(angleofs)/2);\n      sa := sin(sin(angleofs)/2);\n      penwidth := i*8+1;\n      image.PenStyle := dashstyle;\n      image.DrawPolyLineAntialias([PointF(x+40,y),PointF(x,y),PointF(x+sa*6*penwidth,y+ca*6*penwidth)],ColorToBGRA(clHighlight),penwidth);\n      if penwidth > 5 then\n      begin\n        image.penStyle := psSolid;\n        image.DrawPolyLineAntialias([PointF(x+40,y),PointF(x,y),PointF(x+sa*6*penwidth,y+ca*6*penwidth)],ColorToBGRA(clHighlightText),1);\n      end;\n      IncF(y, penwidth*2 + 6*penwidth + 5);\n      IncF(angleofs, Pi*0.6);\n    end;\n  end;\n\nbegin\n    angleofs := time;\n    image := TBGRABitmap.Create(Width,Height,ColorToBGRA(clBtnFace));\n    c := ColorToBGRA(clWindowText);\n\n    image.LineCap := pecFlat;\n    DrawLines(30,20,'Flat cap');\n    image.LineCap := pecSquare;\n    DrawLines(115,Height-200,'Square');\n    image.LineCap := pecRound;\n    DrawLines(190,20,'Round cap');\n\n    image.LineCap := pecFlat;\n    image.JoinStyle := pjsBevel;\n    DrawLines(330,20,'Bevel join');\n    image.JoinStyle := pjsMiter;\n    DrawLines(430,Height-200,'Miter join');\n    image.JoinStyle := pjsRound;\n    DrawLines(530,20,'Round join');\n\n    image.Draw(Canvas,Left,Top,OpaqueDraw);\n    image.free;\nend;\n\nprocedure TTest17.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nvar prev5: integer;\nbegin\n  prev5 := trunc(time/5);\n  time := time+0.1;\n  if prev5 <> trunc(time/5) then\n  begin\n    if dashstyle = psDashDotDot then\n      dashstyle := psSolid else\n       dashstyle := succ(dashstyle);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest18.pas",
    "content": "unit utest18;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRAClasses, BGRABitmapTypes;\n\nconst\n  nbPoints = 3;\n\ntype\n  { TTest18 }\n\n  TTest18 = class(TTest)\n  protected\n    virtualScreen,texture,backgroundTile,background: TBGRABitmap;\n    pts: array of TPointF;\n    dirs: array of TPointF;\n    angle: single;\n\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest18 }\n\nconstructor TTest18.Create;\nbegin\n  inherited Create;\n  Name := 'Affine image transformation';\n  texture := TBGRABitmap.Create(ResourceDir+'pac_d1.bmp');\n  texture.ReplaceColor(texture.GetPixel(0,0),BGRAPixelTransparent);\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  randomize;\n  virtualScreen := nil;\n  background := nil;\nend;\n\ndestructor TTest18.Destroy;\nbegin\n  texture.free;\n  virtualScreen.Free;\n  backgroundTile.Free;\n  background.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest18.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if pts = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := backgroundTile.GetPart(rect(0,0,Width,Height));\n  end;\n\n  virtualScreen.PutImage(0,0,background,dmSet);\n  virtualScreen.PutImageAffine(pts[1],pts[0],pts[2],texture);\n\n  virtualScreen.DrawPolyLineAntialias(pts,BGRAWhite,3);\n  virtualScreen.DrawPolyLineAntialias(pts,BGRABlack,1);\n\n  virtualScreen.PutImageAngle(virtualScreen.Width div 2,virtualScreen.Height div 2,texture,angle,texture.Width/2,texture.Height/2);\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest18.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar i: integer;\n    moveFactor: single;\nbegin\n  IncF(angle, ElapsedSec*20);\n  if pts = nil then\n  begin\n    setlength(pts,nbPoints);\n    setlength(dirs,nbPoints);\n    for i := 0 to NbPoints-1 do\n    begin\n      pts[i] := pointf(random(Width),random(Height));\n      dirs[i] := pointf((random(Width)-width/2)/20,(random(Height)-height/2)/20);\n    end;\n  end;\n  moveFactor := ElapsedSec*20;\n  for i := 0 to NbPoints-1 do\n  begin\n    pts[i].x := pts[i].x+dirs[i].x*moveFactor;\n    if pts[i].x < 0 then\n    begin\n      pts[i].x := 0;\n      dirs[i].x := abs(dirs[i].x);\n    end;\n    if pts[i].x > width-1 then\n    begin\n      pts[i].x := width-1;\n      dirs[i].x := -abs(dirs[i].x);\n    end;\n    pts[i].y := pts[i].y+dirs[i].y*moveFactor;\n    if pts[i].y < 0 then\n    begin\n      pts[i].y := 0;\n      dirs[i].y := abs(dirs[i].y);\n    end;\n    if pts[i].y > height-1 then\n    begin\n      pts[i].y := height-1;\n      dirs[i].y := -abs(dirs[i].y);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest19.pas",
    "content": "unit utest19;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, ucube3d, BGRAGradientScanner;\n\ntype\n  { TTest19 }\n\n  TTest19 = class(TTest)\n  protected\n    virtualScreen,texture,backgroundTile,background: TBGRABitmap;\n    gradient: TBGRAGradientScanner;\n    scene: TCubeScene3D;\n\n  public\n    constructor Create(TextureInterpolation: boolean; GradientTexture: boolean);\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses utexture, BGRAScene3D;\n\n{ TTest19 }\n\nconstructor TTest19.Create(TextureInterpolation: boolean; GradientTexture: boolean);\nbegin\n  inherited Create;\n\n  scene := TCubeScene3D.Create;\n  scene.RenderingOptions.TextureInterpolation := TextureInterpolation;\n//  scene.RenderingOptions.LightingInterpolation := liHighQuality;\n\n  if TextureInterpolation then\n    Name := 'Perspective' else\n    Name := 'Linear and perspective';\n\n  Name := Name + ' texture mapping';\n\n  if gradientTexture then\n  begin\n    Name := Name + ' with gradient';\n    gradient := TBGRAGradientScanner.Create(BGRAWhite,BGRABlack,gtRadial,PointF(0.5,0.5),PointF(0.7,0.5),True,True);\n    scene.SetCubeTexture(gradient,1,1);\n  end else\n  begin\n    texture := CreateGreenTexture;\n    if TextureInterpolation then Name := Name + ' with texture interpolation' else\n          Name := Name + ' without texture interpolation';\n    texture.ScanInterpolationFilter := rfHalfCosine;\n    scene.SetCubeTexture(texture);\n  end;\n\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  randomize;\n  virtualScreen := nil;\n  background := nil;\nend;\n\ndestructor TTest19.Destroy;\nbegin\n  scene.free;\n  gradient.free;\n  texture.free;\n  virtualScreen.Free;\n  backgroundTile.Free;\n  background.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest19.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := backgroundTile.GetPart(rect(0,0,Width,Height));\n  end;\n\n  virtualScreen.PutImage(0,0,background,dmSet);\n\n\n  if scene <> nil then\n  begin\n    scene.Surface := virtualScreen;\n\n    if (gradient <> nil) or scene.RenderingOptions.TextureInterpolation then\n    begin\n      scene.Render;\n    end\n    else\n    begin\n      scene.DefaultLightingNormal := lnNone;\n      scene.RenderingOptions.PerspectiveMode := pmLinearMapping;\n      scene.ViewCenter := PointF(virtualScreen.Width/4,virtualScreen.Height/2);\n      scene.Render;\n      scene.RenderingOptions.PerspectiveMode := pmPerspectiveMapping;\n      scene.ViewCenter := PointF(virtualScreen.Width*3/4,virtualScreen.Height/2);\n      scene.Render;\n    end;\n  end;\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest19.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar\n  moveFactor: single;\nbegin\n  moveFactor := ElapsedSec*20;\n\n  with scene.cube.MainPart do\n  begin\n    RotateYRad(0.02*moveFactor);\n    RotateXRad(-0.01*moveFactor);\n    RotateZRad(0.005*moveFactor);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest2.pas",
    "content": "unit utest2;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utestpacrect;\n\ntype\n  { TTest2 }\n\n  TTest2 = class(TTestPacRect)\n  protected\n    virtualScreen: TBitmap;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n  end;\n\nimplementation\n\n{ TTest2 }\n\nconstructor TTest2.Create;\nbegin\n  inherited Create;\n  Name := 'Canvas.Draw(TBitmap) on TBitmap. NOT RECOMMENDED! Non-flickering pacmans walking with a rectangle. Rectangle opacity depends on the standard Canvas rendering capacities on bitmap canvas.';\n  virtualScreen := nil;\nend;\n\ndestructor TTest2.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest2.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar i: integer;\nbegin\n  if backgroundImg = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBitmap.Create;\n    virtualscreen.width := Width;\n    virtualscreen.Height := height;\n  end;\n\n  //draw background as TBitmap on bitmap Canvas\n  virtualscreen.Canvas.Draw(0,0,backgroundImg.Bitmap);\n\n  //draw sprites as TBitmaps on bitmap Canvas\n  for i := 0 to high(pacLoc) do\n    virtualscreen.Canvas.Draw(pacLoc[i].x,pacLoc[i].y,pacImg[numPacImg].Bitmap);\n\n  //draw virtualscreen as TBitmap\n  Canvas.Draw(Left,Top,virtualscreen);\nend;\n\nend.\n"
  },
  {
    "path": "test/testbgrafunc/utest22.pas",
    "content": "unit utest22;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utest;\n\ntype\n  { TTest22 }\n\n  TTest22 = class(TTest)\n  protected\n    virtualScreen,pac: TBGRABitmap;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width, Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest22 }\n\nconstructor TTest22.Create;\nbegin\n  inherited Create;\n  randomize;\n  Name := 'Fast clipping (rectangle)';\n  pac := TBGRABitmap.Create(ResourceDir+'pac_d2.bmp');\n  pac.ReplaceColor(pac.GetPixel(0,0),BGRAPixelTransparent);\nend;\n\ndestructor TTest22.Destroy;\nbegin\n  pac.free;\n  virtualscreen.free;\nend;\n\nprocedure TTest22.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar c: TBGRAPixel; x1,y1,x2,y2,x3,y3: integer; w: single;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height,BGRABlack);\n\n  virtualscreen.ClipRect := rect(Width div 4,Height div 4, Width*3 div 4, Height*3 div 4);\n  c := BGRA(random(256),random(256),random(256),random(128)+128);\n  x1 := random(width);\n  y1 := random(height);\n  x2 := random(width);\n  y2 := random(height);\n  x3 := random(width);\n  y3 := random(height);\n  w := random(width+height)/500;\n\n  case random(12) of\n  0: virtualscreen.DrawHorizLine(x1,y1,x2,c);\n  1: virtualscreen.SetHorizLine(x1,y1,x2,c);\n  2: virtualscreen.DrawLine(x1,y1,x2,y2,c,True);\n  3: virtualscreen.DrawLineAntialias(x1,y1,x2,y2,c,w);\n  4: virtualscreen.EraseLineAntialias(x1,y1,x2,y2,c.alpha,w);\n  5: if random(2)= 0 then\n       virtualscreen.FillPoly([PointF(x1,y1),PointF(x2,y2),PointF(x3,y3)],c,dmDrawWithTransparency)\n    else virtualscreen.FillPolyAntialias([PointF(x1,y1),PointF(x2,y2),PointF(x3,y3)],c);\n  6: virtualscreen.FillEllipseAntialias(x1,y1,x2-x1,y2-y1,c);\n  7: virtualscreen.Rectangle(x1,y1,x2-x1,y2-y1,c,dmDrawWithTransparency);\n  8: virtualscreen.RoundRectAntialias(x1,y1,x2,y2,abs((x2-x1)/6),abs((y2-y1)/6),c,w);\n  9: virtualscreen.FillRect(x1,y1,x2-x1,y2-y1,c,dmDrawWithTransparency);\n  10: virtualscreen.TextOutAngle(x1,y1,random(3600),'Some text',c,taCenter);\n  11: virtualScreen.PutImage(x1,y1,pac,dmDrawWithTransparency);\n  end;\n\n  virtualscreen.NoClip;\n  virtualscreen.SetPixel(random(width),random(height),c);\n\n  //draw virtualscreen opaque on canvas\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest22.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nbegin\n  //nothing\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest23.pas",
    "content": "unit utest23;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, ucube3d;\n\ntype\n  { TTest23 }\n\n  TTest23 = class(TTest)\n  protected\n    virtualScreen,backgroundTile,background: TBGRABitmap;\n    scene: TCubeScene3D;\n\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses BGRAScene3D;\n\n{ TTest23 }\n\nconstructor TTest23.Create;\nbegin\n  inherited Create;\n  Name := 'Multi-polygon antialiasing';\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  virtualScreen := nil;\n  background := nil;\n  scene := TCubeScene3D.Create();\n  scene.RenderingOptions.AntialiasingMode := am3dMultishape;\nend;\n\ndestructor TTest23.Destroy;\nbegin\n  scene.free;\n  virtualScreen.Free;\n  backgroundTile.Free;\n  background.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest23.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := backgroundTile.GetPart(rect(0,0,Width,Height));\n  end;\n\n  virtualScreen.PutImage(0,0,background,dmSet);\n\n  if scene <> nil then\n  begin\n    scene.Surface := virtualScreen;\n    scene.Render;\n  end;\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest23.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar\n  moveFactor: single;\nbegin\n  moveFactor := ElapsedSec*20;\n\n  with scene.cube.MainPart do\n  begin\n    RotateYRad(0.02*moveFactor);\n    RotateXRad(-0.01*moveFactor);\n    RotateZRad(0.005*moveFactor);\n  end;\nend;\n\nend.\n\n\n"
  },
  {
    "path": "test/testbgrafunc/utest24.pas",
    "content": "unit utest24;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, ucube3d;\n\ntype\n  { TTest24 }\n\n  TTest24 = class(TTest)\n  protected\n    virtualScreen,backgroundTile,texture,background: TBGRABitmap;\n    scene: TCubeScene3D;\n\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses utexture, BGRAScene3D;\n\n{ TTest24 }\n\nconstructor TTest24.Create;\nbegin\n  inherited Create;\n  Name := 'Multi-polygon antialiasing with perspective mapping';\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  texture := CreateMarbleTexture(256,256);\n  texture.ScanInterpolationFilter:= rfLinear;\n  virtualScreen := nil;\n  background := nil;\n  scene := TCubeScene3D.Create();\n  scene.RenderingOptions.AntialiasingMode := am3dMultishape;\n  scene.SetCubeTexture(texture);\nend;\n\ndestructor TTest24.Destroy;\nbegin\n  scene.free;\n  virtualScreen.Free;\n  backgroundTile.Free;\n  background.Free;\n  texture.free;\n  inherited Destroy;\nend;\n\nprocedure TTest24.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := backgroundTile.GetPart(rect(0,0,Width,Height));\n  end;\n\n  virtualScreen.PutImage(0,0,background,dmSet);\n\n  if scene <> nil then\n  begin\n    scene.Surface := virtualScreen;\n    scene.Render;\n  end;\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest24.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar\n  moveFactor: single;\nbegin\n  moveFactor := ElapsedSec*20;\n\n  with scene.cube.MainPart do\n  begin\n    RotateYRad(0.02*moveFactor);\n    RotateXRad(-0.01*moveFactor);\n    RotateZRad(0.005*moveFactor);\n  end;\nend;\n\nend.\n\n\n"
  },
  {
    "path": "test/testbgrafunc/utest25.pas",
    "content": "unit utest25;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Graphics, BGRABitmap, BGRABitmapTypes, BGRACanvas, utest;\n\ntype\n  { TTest25 }\n\n  TTest25 = class(TTest)\n  private\n    pacman,virtualScreen: TBGRABitmap;\n    alphaFactor: byte;\n    time: single;\n    pts: array of TPoint;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n    procedure DrawOnCanvas(Canvas: TBGRACanvas);\n  end;\n\nimplementation\n\nuses BGRAGradientScanner;\n\n{ TTest25 }\n\nconstructor TTest25.Create;\nbegin\n  inherited Create;\n  Name := 'BGRACanvas test (with aliasing on the left, with anti-aliasing on the right)';\n  virtualScreen := nil;\n  pacman := TBGRABitmap.Create(ResourceDir+'pac_d1.bmp');\n  pacman.ReplaceColor(pacman.GetPixel(0,0),BGRAPixelTransparent);\n  time := 0;\nend;\n\ndestructor TTest25.Destroy;\nbegin\n  virtualScreen.Free;\n  pacman.free;\n  inherited Destroy;\nend;\n\nprocedure TTest25.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar\n  i: Integer;\n  tx: integer;\nbegin\n  if time=0 then exit;\n\n  tx := (Width+1) div 2;\n  if (virtualscreen <> nil) and ((virtualscreen.width <> tx) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(tx,Height);\n    //randseed := 1;\n    setlength(pts, 20);\n    for i := 0 to high(pts) do\n      pts[i] := Point(Random(virtualScreen.Width),random(virtualScreen.Height));\n  end;\n\n  virtualScreen.CanvasBGRA.AntialiasingMode := amOff;\n  virtualScreen.CanvasBGRA.Font.Quality := fqSystem;\n  DrawOnCanvas(virtualScreen.CanvasBGRA);\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\n\n  virtualScreen.CanvasBGRA.AntialiasingMode := amOn;\n  virtualScreen.CanvasBGRA.Font.Quality := fqFineClearTypeRGB;\n  DrawOnCanvas(virtualScreen.CanvasBGRA);\n  virtualscreen.Draw(Canvas,Left+Width div 2,Top,OpaqueDraw);\nend;\n\nprocedure TTest25.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec;\n  alphaFactor := round((sin(time)+1)/2*255);\nend;\n\nprocedure TTest25.DrawOnCanvas(Canvas: TBGRACanvas);\nvar i,k: integer;\n    grad: TBGRAGradientScanner;\nbegin\n  for k := 1 to 1 do\n  begin\n    grad := TBGRAGradientScanner.Create(BGRA(0,150,255),BGRA(0,0,0),gtLinear,PointF(0,0),PointF(0,Canvas.Height/40),True,True);\n    With Canvas do\n    begin\n      Brush.style := bsSolid;\n      Brush.Color := clWhite;\n      Brush.Opacity := 255;\n      FillRect(0,0,Width,Height);\n\n      Font.Orientation := 0;\n      Font.Color := clBlack;\n      Font.Height := Height div 20;\n      Font.Texture := grad;\n      TextOut(Font.Height div 2,0,'Font rendering');\n\n      Font.Orientation := -450;\n      TextOut(Font.Height,Font.Height,'Text angle');\n\n      pen.width := 2;\n      pen.opacity := 255;\n      Brush.Color := clGreen;\n      brush.Style := bsSolid;\n      pen.Style := psDash;\n      Ellipse(pts[6].x,pts[6].y,pts[7].x,pts[7].y);\n\n      pen.Style := psSolid;\n      pen.width := 1;\n      pen.opacity := 255;\n      Brush.BGRAColor := BGRA(255,128,0);\n      brush.style := bsFDiagonal;\n      Ellipse(pts[14].x,pts[14].y,pts[15].x,pts[15].y);\n\n      pen.style := psClear;\n      pen.opacity := 64;\n      Brush.Color := clBlue;\n      Brush.Opacity := 128;\n      brush.style := bsCross;\n      Rectangle(pts[8].x,pts[8].y,pts[9].x,pts[9].y);\n\n      pen.Style := psSolid;\n      pen.width := 1;\n      pen.opacity := 128;\n      Brush.Color := clRed;\n      Brush.Opacity := 64;\n      brush.Style := bsSolid;\n      RoundRect(pts[10].x,pts[10].y,pts[11].x,pts[11].y,abs(pts[11].x-pts[10].x) div 2,abs(pts[11].y-pts[10].y) div 2);\n\n      brush.style := bsClear;\n      pen.width := 2;\n      RoundRect(pts[16].x,pts[16].y,pts[17].x,pts[17].y,abs(pts[17].x-pts[16].x) div 2,abs(pts[17].y-pts[16].y) div 2);\n\n      pen.style := psClear;\n      Brush.Color := clBlue;\n      Brush.Opacity := 192;\n      brush.style := bsSolid;\n      //Polygon(pts);\n      Pie(pts[12].x,pts[12].y,pts[13].x,pts[13].y,pts[6].x,pts[6].y,pts[7].x,pts[7].y);\n\n      Pen.Color := clBlack;\n      pen.style := psSolid;\n      pen.opacity := 128;\n      MoveTo(pts[0]);\n      for i := 0 to 5 do\n      begin\n        Pen.Width := i+1;\n        LineTo(pts[i+1]);\n      end;\n\n      Font.Texture := nil;\n    end;\n    Grad.Free;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest26.pas",
    "content": "unit utest26;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes;\n\nconst\n  nbPoints = 9;\n\ntype\n  { TTest26 }\n\n  TTest26 = class(TTest)\n  protected\n    virtualScreen,backgroundTile: TBGRABitmap;\n    pts: array of TPointF;\n    dirs: array of TPointF;\n\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest26 }\n\nconstructor TTest26.Create;\nbegin\n  inherited Create;\n  Name := 'Gradient shapes (antialiased or not)';\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  randomize;\n  virtualScreen := nil;\nend;\n\ndestructor TTest26.Destroy;\nbegin\n  virtualScreen.Free;\n  backgroundTile.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest26.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if pts = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  virtualScreen.Fill(backgroundTile);\n\n  virtualScreen.FillQuadLinearColor(pts[3],pts[4],pts[5],pts[6],BGRA(0,192,0),BGRA(0,128,255),BGRA(255,128,0),BGRA(255,255,255));\n  virtualScreen.FillTriangleLinearColorAntialias(pts[0],pts[1],pts[2],BGRA(255,0,0),BGRA(255,255,0),BGRA(255,0,255));\n  virtualScreen.FillEllipseLinearColorAntialias(pts[7].x,pts[7].y,pts[8].x/4,pts[8].y/4,BGRABlack,BGRAWhite);\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest26.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar i: integer;\n    moveFactor: single;\nbegin\n  if pts = nil then\n  begin\n    setlength(pts,nbPoints);\n    setlength(dirs,nbPoints);\n    for i := 0 to NbPoints-1 do\n    begin\n      pts[i] := pointf(random(Width),random(Height));\n      dirs[i] := pointf((random(Width)-width/2)/20,(random(Height)-height/2)/20);\n    end;\n  end;\n  moveFactor := ElapsedSec*20;\n  for i := 0 to NbPoints-1 do\n  begin\n    pts[i].x := pts[i].x+dirs[i].x*moveFactor;\n    if pts[i].x < 0 then\n    begin\n      pts[i].x := 0;\n      dirs[i].x := abs(dirs[i].x);\n    end;\n    if pts[i].x > width-1 then\n    begin\n      pts[i].x := width-1;\n      dirs[i].x := -abs(dirs[i].x);\n    end;\n    pts[i].y := pts[i].y+dirs[i].y*moveFactor;\n    if pts[i].y < 0 then\n    begin\n      pts[i].y := 0;\n      dirs[i].y := abs(dirs[i].y);\n    end;\n    if pts[i].y > height-1 then\n    begin\n      pts[i].y := height-1;\n      dirs[i].y := -abs(dirs[i].y);\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest27.pas",
    "content": "unit utest27;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, BGRAScene3D, utore3d;\n\ntype\n  { TTest27 }\n\n  TTest27 = class(TTest)\n  protected\n    virtualScreen,backgroundTile,background: TBGRABitmap;\n    scene: TToreScene3D;\n  public\n    constructor Create(lightNormal: TLightingNormal3D; lightInterp: TLightingInterpolation3D);\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest27 }\n\nconstructor TTest27.Create(lightNormal: TLightingNormal3D; lightInterp: TLightingInterpolation3D);\nbegin\n  inherited Create;\n  Name := 'Torus with ';\n  case lightNormal of\n    lnFace: Name := Name + 'flat';\n    lnVertex: Name := Name + 'vertex';\n    lnFaceVertexMix: Name := Name + 'half-vertex';\n    lnNone: Name := Name + 'no lighting';\n  end;\n  if lightNormal <> lnNone then\n    case lightInterp of\n      liLowQuality: if lightNormal <> lnFace then Name := Name + ' low-quality shading'\n                  else Name := Name + ' shading';\n      liAlwaysHighQuality: Name := Name + ' high-quality shading';\n    end;\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  virtualScreen := nil;\n  background := nil;\n  scene := TToreScene3D.Create();\n  scene.RenderingOptions.AntialiasingMode := am3dNone;\n  scene.RenderingOptions.LightingInterpolation := lightInterp;\n  scene.DefaultLightingNormal:= lightNormal;\nend;\n\ndestructor TTest27.Destroy;\nbegin\n  scene.free;\n  virtualScreen.Free;\n  backgroundTile.Free;\n  background.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest27.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := backgroundTile.GetPart(rect(0,0,Width,Height));\n  end;\n\n  virtualScreen.PutImage(0,0,background,dmSet);\n\n  if scene <> nil then\n  begin\n    scene.Surface := virtualScreen;\n    scene.Render;\n  end;\n\n  virtualScreen.draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest27.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar\n  moveFactor: single;\nbegin\n  moveFactor := ElapsedSec*20;\n  scene.angle := scene.angle + moveFactor;\nend;\n\nend.\n\n\n"
  },
  {
    "path": "test/testbgrafunc/utest3.pas",
    "content": "unit utest3;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utestpacrect;\n\ntype\n  { TTest3 }\n\n  TTest3 = class(TTestPacRect)\n  public\n    constructor Create;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n  end;\n\nimplementation\n\n{ TTest3 }\n\nconstructor TTest3.Create;\nbegin\n  inherited Create;\n  Name := 'TBGRABitmap.Draw(Form). You should see flickering Pacmans walking on the form with a rectangle. The opacity of the rectangle depends on the rendering capacities of BGRABitmap on windows.';\nend;\n\nprocedure TTest3.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar i: integer;\nbegin\n  if backgroundImg = nil then exit;\n\n  //draw background opaque on canvas\n  backgroundImg.Draw(Canvas,Left,Top,OpaqueDraw);\n\n  //draw sprites transparent on canvas\n  for i := 0 to high(pacLoc) do\n    pacImg[numPacImg].Draw(Canvas, RectWithSize(Left+pacLoc[i].x,Top+pacLoc[i].y,\n      pacImg[numPacImg].Width * (80 + (i * 40 div NbPacman)) div 100,\n      pacImg[numPacImg].Height * (80 + (i * 40 div NbPacman)) div 100),false);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest31.pas",
    "content": "unit utest31;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRAClasses, BGRABitmapTypes, BGRAGradients,\n  BGRATextFX;\n\nconst\n  nbPoints=3;\n\ntype\n\n  { TTest31 }\n\n  TTest31 = class(TTest)\n    virtualScreen: TBGRABitmap;\n    pts: array of TPointF;\n    dirs: array of TPointF;\n    hsla1,hsla2: THSLAPixel;\n\n    textfx: TBGRATextEffect;\n    phong: TPhongShading;\n    wood: TBGRABitmap;\n\n    textfx_multi: TBGRATextEffect;\n    colorArray: array of TBGRAPixel;\n    colorTime: double;\n\n    textfx_lightpos: TBGRATextEffect;\n    time: double;\n    lightPos1: TPointF;\n\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer); override;\n    procedure OnTimer(Width, Height: Integer; ElapsedSec: Double);\n      override;\n  end;\n\nimplementation\n\nuses utexture;\n\n{ TTest31 }\n\nconstructor TTest31.Create;\nbegin\n  inherited Create;\n  Name := 'Gradient and text effect';\n  virtualScreen := nil;\n  hsla1.alpha := $ffff;\n  hsla1.hue := 0;\n  hsla1.lightness := $8000;\n  hsla1.saturation := $C000;\n  hsla2 := hsla1;\n  hsla2.hue := $2000;\n\n  phong := TPhongShading.Create;\n  phong.LightPositionZ := 128;\n  phong.SpecularIndex := 10;\n  phong.SpecularFactor := 0.6;\n  phong.LightSourceIntensity := 300;\n  phong.AmbientFactor := 0.45;\n  phong.NegativeDiffusionFactor := 0.3;\n\n  setlength(colorArray,6);\n  colorArray[0] := BGRA(255,128,128);\n  colorArray[1] := BGRA(255,160,0);\n  colorArray[2] := BGRA(255,255,0);\n  colorArray[3] := BGRA(160,255,0);\n  colorArray[4] := BGRA(0,255,160);\n  colorArray[5] := BGRA(128,128,255);\nend;\n\ndestructor TTest31.Destroy;\nbegin\n  phong.free;\n  textfx.Free;\n  textfx_lightpos.Free;\n  textfx_multi.Free;\n  wood.free;\n  virtualScreen.free;\n  inherited Destroy;\nend;\n\nprocedure TTest31.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar font: TFont; h, r: integer;\nbegin\n  if pts = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(textfx);\n    FreeAndNil(textfx_lightpos);\n    FreeAndNil(textfx_multi);\n    FreeAndNil(wood);\n  end;\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  if wood = nil then\n  begin\n    r := round(sqrt(Width*Height)/4);\n    if r < 64 then r:= 64;\n    wood := CreateWoodTexture(r,r);\n  end;\n\n  font := TFont.Create;\n  font.Name := 'Arial';\n  if textfx = nil then\n  begin\n    font.Bold := true;\n    font.Height := Height div 4;\n    textfx := TBGRATextEffect.Create('BGRA text effect',font,True);\n    font.Bold := false;\n  end;\n  if textfx_lightpos = nil then\n  begin\n    font.Height := Height div 20;\n    textfx_lightpos := TBGRATextEffect.Create('Light position',font,True);\n  end;\n  if textfx_multi = nil then\n  begin\n    font.Height := Height div 12;\n    font.Name := 'Lucida Console';\n    font.Bold := true;\n    textfx_multi := TBGRATextEffect.Create('Multicolor',font,True);\n  end;\n  font.Free;\n\n  virtualScreen.GradientFill(0,0,Width,Height,HSLAToBGRA(hsla1),HSLAToBGRA(hsla2),gtLinear,pts[0],pts[1],dmSet);\n\n  phong.LightPositionF := PointF(lightPos1.x * Width, lightPos1.y * Height);\n  h := round(textfx.Height *0.07);\n  phong.LightPositionZ := h*4;\n  textfx.DrawShaded(virtualScreen,Width div 2,Height div 2-textfx.Height div 2, phong, h,wood, taCenter, True);\n\n  r := textfx_lightpos.height div 8;\n  textfx_lightpos.DrawShadow(virtualScreen, phong.LightPosition.X+2*r,phong.LightPosition.Y+8+2*r,r,BGRABlack,taCenter);\n  textfx_lightpos.DrawOutline(virtualScreen, phong.LightPosition.X,phong.LightPosition.Y+8,BGRABlack,taCenter);\n  textfx_lightpos.Draw(virtualScreen, phong.LightPosition.X,phong.LightPosition.Y+8,BGRAWhite,taCenter);\n  virtualscreen.FillEllipseLinearColorAntialias(phong.LightPosition.X,phong.LightPosition.Y,4,4,BGRABlack,BGRAWhite);\n\n  textfx_multi.DrawShadow(virtualScreen, round(pts[2].x),round(pts[2].y), round(textfx_multi.Height/8), BGRA(255,255,255,255),taCenter);\n  textfx_multi.DrawMulticolored(virtualScreen, round(pts[2].x),round(pts[2].y), colorArray,taCenter);\n\n  //draw virtualscreen opaque on canvas\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest31.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nvar i: integer;\n    moveFactor: single;\n    c,c2: TBGRAPixel;\nbegin\n  if pts = nil then\n  begin\n    setlength(pts,nbPoints);\n    setlength(dirs,nbPoints);\n    for i := 0 to NbPoints-1 do\n    begin\n      pts[i] := pointf(random(Width),random(Height));\n      dirs[i] := pointf((random(Width)-width/2)/20,(random(Height)-height/2)/20);\n    end;\n    dirs[2].x /= 10;\n    dirs[2].y /= 10;\n  end;\n  moveFactor := ElapsedSec*20;\n  for i := 0 to NbPoints-1 do\n  begin\n    pts[i].x := pts[i].x+dirs[i].x*moveFactor;\n    if pts[i].x < 0 then\n    begin\n      pts[i].x := 0;\n      dirs[i].x := abs(dirs[i].x);\n    end;\n    if pts[i].x > width-1 then\n    begin\n      pts[i].x := width-1;\n      dirs[i].x := -abs(dirs[i].x);\n    end;\n    pts[i].y := pts[i].y+dirs[i].y*moveFactor;\n    if pts[i].y < 0 then\n    begin\n      pts[i].y := 0;\n      dirs[i].y := abs(dirs[i].y);\n    end;\n    if pts[i].y > height-1 then\n    begin\n      pts[i].y := height-1;\n      dirs[i].y := -abs(dirs[i].y);\n    end;\n  end;\n  inc(hsla1.hue, round(moveFactor*40) );\n  inc(hsla2.hue, round(moveFactor*40) );\n\n  time := time+ElapsedSec;\n  lightPos1 := pointF((sin(time*0.7+1)+1)/4+0.4,(cos(time*0.5+2)+1)/4+0.3);\n\n  IncF(colorTime, ElapsedSec);\n  if colorTime > 0.3 then\n  begin\n    DecF(colorTime, 0.3);\n    c := colorArray[high(colorArray)];\n    for i := 0 to high(colorArray) do\n    begin\n      c2 := colorArray[i];\n      colorArray[i]:= c;\n      c:= c2;\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest32.pas",
    "content": "unit utest32;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRAClasses, BGRABitmapTypes;\n\ntype\n\n  { TTest32 }\n\n  TTest32 = class(TTest)\n    virtualScreen,background: TBGRABitmap;\n    position,speed,direction: single;\n\n    constructor Create;\n    destructor Destroy; override;\n    procedure DrawRings(ABitmap: TBGRABitmap; APath: IBGRAPath; ACount: integer; ARadius: single);\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer); override;\n    procedure OnTimer(Width, Height: Integer; ElapsedSec: Double);\n      override;\n  end;\n\nimplementation\n\nuses BGRAPath, BGRAVectorize, BGRAGradientScanner, BGRAUTF8;\n\n{ TTest32 }\n\nconstructor TTest32.Create;\nbegin\n  inherited Create;\n  Name := 'Curved text';\n  virtualScreen := nil;\n  background := nil;\n  position := 0;\n  speed := 0;\n  direction := 1;\nend;\n\ndestructor TTest32.Destroy;\nbegin\n  virtualscreen.free;\n  background.free;\n  inherited Destroy;\nend;\n\nprocedure TTest32.DrawRings(ABitmap: TBGRABitmap;\n  APath: IBGRAPath; ACount: integer; ARadius: single);\nvar\n  step: single;\n  cursor: TBGRACustomPathCursor;\nbegin\n  cursor := APath.getCursor;\n  step := cursor.PathLength/ACount;\n  cursor.Position:= 0;\n  repeat\n    with cursor.CurrentCoordinate do\n      ABitmap.FillEllipseAntialias(x,y, ARadius,ARadius, CSSDarkSlateBlue);\n  until cursor.MoveForward(step) < 0.5*step;\n  cursor.Free;\nend;\n\nprocedure TTest32.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar path1: TBGRAPath;\n    cursor1: TBGRAPathCursor;\n    size: single;\n\n  procedure PrepareBackground;\n  var\n    path2: TBGRAPath;\n    gradient: TBGRAGradientScanner;\n    fontRenderer: TBGRAVectorizedFontRenderer;\n  begin\n    background := TBGRABitmap.Create(Width,Height,CSSLightSteelBlue);\n    fontRenderer := TBGRAVectorizedFontRenderer.Create;\n    background.FontRenderer := fontRenderer;\n    background.FontHeight := round(size*0.09);\n    background.FontQuality := fqFineAntialiasing;\n\n    DrawRings(background, path1, 20, size/150);\n\n    path2 := TBGRAPath.Create;\n    path2.arc(width/2,height/2,size*0.4, Pi, 0, true);\n\n    fontRenderer.OutlineColor := BGRABlack;\n    fontRenderer.OutlineWidth := size/600;\n    fontRenderer.OutlineVisible := true;\n    background.FontVerticalAnchor := fvaBaseline;\n\n    gradient := TBGRAGradientScanner.Create(CSSYellow, CSSOrange, gtLinear, PointF(0,height/2), PointF(0,height/2+size*0.5));\n    background.TextOutCurved(path2, ' Left ...', gradient, taLeftJustify, 0);\n    background.TextOutCurved(path2, 'Middle', gradient, taCenter, 0);\n    background.TextOutCurved(path2, '... Right ', gradient, taRightJustify, 0);\n    gradient.free;\n\n    fontRenderer.OutlineVisible := false;\n    background.FontVerticalAnchor := fvaTop;\n\n    path2.Free;\n  end;\n\nvar\n  fontRenderer: TBGRAVectorizedFontRenderer;\n\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  if width < height then size := width else size := height;\n  path1 := TBGRAPath.Create;\n  path1.arc(width/2,height/2,size*0.4, Pi, 0);\n\n  if virtualscreen = nil then\n  begin\n    PrepareBackground;\n\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    fontRenderer := TBGRAVectorizedFontRenderer.Create;\n    virtualScreen.FontRenderer := fontRenderer;\n  end else\n    fontRenderer := virtualScreen.FontRenderer as TBGRAVectorizedFontRenderer;\n\n  virtualScreen.PutImage(0,0, background, dmSet);\n  virtualScreen.FontHeight := background.FontHeight;\n  virtualScreen.FontQuality := background.FontQuality;\n\n  cursor1 := path1.CreateCursor;\n  speed := size/4/cursor1.PathLength;\n  if position < 0 then\n  begin\n    position := 0;\n    direction := 1;\n  end;\n  cursor1.Position := position*cursor1.PathLength;\n  virtualScreen.TextOutCurved(cursor1, 'Curved text '+UTF8_ARABIC_LAM+UTF8_ARABIC_ALEPH, BGRABlack, taLeftJustify, virtualScreen.FontFullHeight/8);\n  if cursor1.Position = cursor1.PathLength then direction := -1;\n  cursor1.Free;\n\n  path1.Free;\n\n  //draw virtualscreen opaque on canvas\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest32.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nbegin\n  IncF(position, ElapsedSec*speed*direction);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest33.pas",
    "content": "unit utest33;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes;\n\ntype\n\n  { TTest33 }\n\n  TTest33 = class(TTest)\n    virtualScreen: TBGRABitmap;\n\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer); override;\n    procedure OnTimer(Width, Height: Integer; ElapsedSec: Double);\n      override;\n  end;\n\nimplementation\n\n{ TTest33 }\n\nconstructor TTest33.Create;\nbegin\n  inherited Create;\n  Name := 'Text vertical anchor';\n  virtualScreen := nil;\nend;\n\ndestructor TTest33.Destroy;\nbegin\n  virtualscreen.free;\n  inherited Destroy;\nend;\n\nprocedure TTest33.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nconst\n  FontVerticalAnchorToStr: array[TFontVerticalAnchor] of string\n    = ('Top of the font with space for Âccents', 'Center of the font', 'Top of the UPPÊRCASE letters',\n       'Center of the UPPERCASE letters', 'Top of x and other small letters',\n       'Center of x and other small letters', 'Baseline of the text',\n       'Descent line for g q, etc.', 'Bottom of the font including bottom line spacing');\nvar y,h: integer;\n  textanchor: TFontVerticalAnchor;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  virtualScreen.Fill(CSSLightSteelBlue);\n  virtualScreen.FontName := 'Times New Roman';\n  h := Height div 20;\n  virtualScreen.FontHeight := h;\n\n  y := 0;\n  textanchor:= low(TFontVerticalAnchor);\n\n  repeat\n    inc(y, h);\n    virtualScreen.HorizLine(0,y,virtualScreen.Width,BGRA(255,255,255),dmDrawWithTransparency);\n    virtualScreen.FontVerticalAnchor := textanchor;\n    virtualScreen.TextOut(virtualScreen.Width/2,y, FontVerticalAnchorToStr[textanchor], BGRABlack, taCenter, h/3);\n    inc(y, h);\n    if textanchor >= high(TFontVerticalAnchor) then break;\n    textanchor:= succ(textanchor);\n  until false;\n\n  //draw virtualscreen opaque on canvas\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest33.OnTimer(Width, Height: Integer;\n  ElapsedSec: Double);\nbegin\n  //nothing\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest4.pas",
    "content": "unit utest4;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utestpacrect;\n\ntype\n  { TTest4 }\n\n  TTest4 = class(TTestPacRect)\n  protected\n    virtualScreen: TBitmap;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n  end;\n\nimplementation\n\n{ TTest4 }\n\nconstructor TTest4.Create;\nbegin\n  inherited Create;\n  Name := 'TBGRABitmap.Draw(Bitmap). Non-flickering pacmans walking with a rectangle. Rectangle opacity depends on the rendering capacities of BGRABitmap on TBitmap.';\n  virtualScreen := nil;\nend;\n\ndestructor TTest4.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest4.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar i: integer;\nbegin\n  if backgroundImg = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBitmap.Create;\n    virtualscreen.width := Width;\n    virtualscreen.Height := height;\n  end;\n\n  //draw background opaque on bitmap canvas\n  backgroundImg.Draw(virtualScreen.Canvas,0,0,OpaqueDraw);\n\n  //draw sprites transparent on bitmap canvas\n  for i := 0 to high(pacLoc) do\n    pacImg[numPacImg].Draw(virtualscreen.Canvas,pacLoc[i].x,pacLoc[i].y,false);\n\n  //draw virtualscreen as TBitmap\n  Canvas.Draw(Left,Top,VirtualScreen);\nend;\n\nend.\n"
  },
  {
    "path": "test/testbgrafunc/utest5.pas",
    "content": "unit utest5;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utestpacrect;\n\ntype\n  { TTest5 }\n\n  TTest5 = class(TTestPacRect)\n  protected\n    virtualScreen: TBGRABitmap;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n  end;\n\nimplementation\n\n{ TTest5 }\n\nconstructor TTest5.Create;\nbegin\n  inherited Create;\n  Name := 'TBGRABitmap.PutImage. This is the recommended way. Non-flickering pacmans walking with a rectangle. Rectangle opacity always there with the rendering capacities on BGRABitmap.';\n  virtualScreen := nil;\nend;\n\ndestructor TTest5.Destroy;\nbegin\n  virtualScreen.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest5.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar i: integer;\nbegin\n  if backgroundImg = nil then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n    FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    //draw background opaque in BGRA bitmap\n    virtualscreen.PutImage(0,0,backgroundImg,dmSet);\n  end;\n\n  //draw sprites transparent in BGRA bitmap\n  for i := 0 to high(pacLoc) do\n    virtualscreen.PutImage(pacLoc[i].x,pacLoc[i].y,pacImg[numPacImg],dmDrawWithTransparency);\n\n  //draw virtualscreen opaque on canvas\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\n\n  //erase sprites\n  for i := 0 to high(pacLoc) do\n    virtualscreen.FillRect(RectWithSize(pacLoc[i].x,pacLoc[i].y,\n                          pacImg[numPacImg].Width,pacImg[numPacImg].Height),\n                          backgroundImg,dmSet);\nend;\n\nend.\n"
  },
  {
    "path": "test/testbgrafunc/utest6.pas",
    "content": "unit utest6;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utestback, Graphics, BGRABitmap, BGRABitmapTypes;\n\ntype\n  { TTest6 }\n\n  TTest6 = class(TTestBack)\n  protected\n    image,virtualScreen: TBGRABitmap;\n    zoomFactor: single;\n    time: single;\n    procedure DrawImage(x,y: integer; pzoomfactor: single; mode : TResampleMode);\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses utest;\n\n{ TTest6 }\n\nprocedure TTest6.DrawImage(x, y: integer; pzoomfactor: single; mode : TResampleMode);\nvar temp: TBGRABitmap;\n    width,height: integer;\nbegin\n   if pzoomfactor = 0 then exit;\n   width := (round(image.width*pzoomfactor)+1) and not 1; //even size for centering\n   if width <= 0 then width := 1;\n   height := (round(image.height*pzoomfactor)+1) and not 1; //even size for centering\n   if height <= 0 then height := 1;\n   temp := image.Resample(width,height,mode);\n   virtualScreen.PutImage(x-width div 2,y-height div 2,temp,dmDrawWithTransparency);\n   temp.Free;\nend;\n\nconstructor TTest6.Create;\nbegin\n  inherited Create;\n  Name := 'Simple stretch vs fine resample';\n  virtualScreen := nil;\n  image := TBGRABitmap.Create(ResourceDir+'resampletest.png');\n  time := Pi/4;\nend;\n\ndestructor TTest6.Destroy;\nbegin\n  virtualScreen.Free;\n  image.free;\n  inherited Destroy;\nend;\n\nprocedure TTest6.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nbegin\n  UpdateBackground(Width,Height);\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  FreeAndNil(virtualScreen);\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  virtualscreen.PutImage(0,0,backgroundImg,dmSet);\n  DrawImage(virtualScreen.Width div 4,virtualScreen.Height div 2, zoomFactor, rmSimpleStretch);\n  image.ResampleFilter := rfHalfCosine;\n  DrawImage(3*virtualScreen.Width div 4,virtualScreen.Height div 2, zoomFactor, rmFineResample);\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest6.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec*0.5;\n  zoomFactor := (sin(time)+1)*Height/image.Height/2;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest7.pas",
    "content": "unit utest7;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  BGRAClasses, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes, BGRAGradientScanner;\n\ntype\n  { TTest7 }\n\n  TTest7 = class(TTest)\n  protected\n    pacman,virtualScreen,background: TBGRABitmap;\n    time: single;\n    multigrad: TBGRACustomGradient;\n    pixels: array of record\n         x,y,dx,dy: single;\n      end;\n    procedure DrawPacman(x,y: integer; angle: single);\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer({%H-}Width,{%H-}Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\n{ TTest7 }\n\nprocedure TTest7.DrawPacman(x, y: integer; angle: single);\nvar temp: TBGRABitmap;\nbegin\n   temp := pacman.FilterRotate(pointF((pacman.width-1)/2,(pacman.height-1)/2),angle);\n   virtualScreen.PutImage(x-temp.width div 2,y-temp.height div 2,temp,dmDrawWithTransparency);\n   temp.Free;\nend;\n\nconstructor TTest7.Create;\nvar temp: TBGRABitmap;\nbegin\n  inherited Create;\n  Name := 'Smart zoom x3 and rotate';\n  virtualScreen := nil;\n  background := nil;\n  pacman := TBGRABitmap.Create(ResourceDir+'pac_d1.bmp');\n  pacman.ReplaceColor(pacman.GetPixel(0,0),BGRAPixelTransparent);\n  temp := pacman.FilterSmartZoom3(moMediumSmooth);\n  pacman.Free;\n  pacman := temp;\n  time := 0;\n  multigrad := TBGRAHueGradient.Create(0,0,65535,40000,[hgoRepeat,hgoPositiveDirection,hgoLightnessCorrection]);\nend;\n\ndestructor TTest7.Destroy;\nbegin\n  virtualScreen.Free;\n  pacman.free;\n  multigrad.Free;\n  background.Free;\n  inherited Destroy;\nend;\n\nprocedure TTest7.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar\n  i: Integer;\n  smallW,smallH: integer;\n  pixBmp: TBGRABitmap;\nbegin\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(background);\n  end;\n\n  smallW := (Width+4) div 8;\n  smallH := (Height+4) div 8;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    background := TBGRABitmap.Create(Width,Height);\n    background.GradientFill(0,0,Width,Height,multigrad,gtRadial,PointF(0,0),PointF(Width/2,Height/2),dmSet,False);\n\n    setlength(pixels, round(sqrt(smallW*smallH)) );\n    for i := 0 to high(pixels) do\n    begin\n      pixels[i].x := random(smallW);\n      pixels[i].y := random(smallH);\n      pixels[i].dx := (random(1001)-500)/500;\n      pixels[i].dy := (random(1001)-500)/500;\n    end;\n  end;\n\n  virtualscreen.PutImage(0,0,background,dmSet);\n\n  pixBmp := TBGRABitmap.Create(smallW, smallH);\n  for i := 0 to high(pixels) do\n  begin\n    pixBmp.DrawPixelF(pixels[i].x, pixels[i].y, BGRABlack, dmDrawWithTransparency);\n    IncF(pixels[i].x, pixels[i].dx);\n    IncF(pixels[i].y, pixels[i].dy);\n    if pixels[i].x <= -1 then pixels[i].x := smallW else\n    if pixels[i].x >= smallW then pixels[i].x := -1;\n    if pixels[i].y <= -1 then pixels[i].y := smallH else\n    if pixels[i].y >= smallH then pixels[i].y := -1;\n  end;\n  virtualScreen.StretchPutImage(rect(0,0,Width,Height), pixBmp, dmDrawWithTransparency);\n  pixBmp.Free;\n\n  DrawPacman(virtualScreen.Width div 4,virtualScreen.Height div 2, ln(time+1)*100);\n  DrawPacman(3*virtualScreen.Width div 4,virtualScreen.Height div 2, -time*4);\n\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest7.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec*5;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest8.pas",
    "content": "unit utest8;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Graphics, BGRABitmap, BGRABitmapTypes, BGRATransform, utest;\n\ntype\n  { TTest8 }\n\n  TTest8 = class(TTest)\n  private\n    backgroundTile: TBGRABitmap;\n    pacman,virtualScreen: TBGRABitmap;\n    twirled: TBGRABitmap;\n    alphaFactor: byte;\n    time: single;\n    procedure DrawPacman(x,y: integer; palphaFactor: byte);\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses Math;\n\n{ TTest8 }\n\nprocedure TTest8.DrawPacman(x, y: integer; palphaFactor: byte);\nbegin\n   virtualScreen.PutImage(x-Pacman.width div 2,y-Pacman.height div 2,Pacman,dmDrawWithTransparency,palphaFactor);\nend;\n\nconstructor TTest8.Create;\nbegin\n  inherited Create;\n  Name := 'Global opacity applied to pacman, background scrolling and twirl';\n  virtualScreen := nil;\n  twirled := nil;\n  pacman := TBGRABitmap.Create(ResourceDir+'pac_d1.bmp');\n  pacman.ReplaceColor(pacman.GetPixel(0,0),BGRAPixelTransparent);\n  time := Pi/4;\n\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\nend;\n\ndestructor TTest8.Destroy;\nbegin\n  virtualScreen.Free;\n  twirled.free;\n  pacman.free;\n  backgroundTile.free;\n  inherited Destroy;\nend;\n\nprocedure TTest8.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar twirl: TBGRATwirlScanner;\nbegin\n  if time=0 then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(twirled);\n  end;\n\n  if virtualscreen = nil then\n  begin\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n    twirled := TBGRABitmap.Create(Width,Height);\n  end;\n\n  virtualscreen.Fill(backgroundTile);\n  DrawPacman(virtualScreen.Width div 4,virtualScreen.Height div 2, alphaFactor);\n  DrawPacman(3*virtualScreen.Width div 4,virtualScreen.Height div 2, 255-alphaFactor);\n\n  twirl := TBGRATwirlScanner.Create(virtualscreen,point(width div 2, height div 2),min(Width,Height)/3,0.3,2);\n  twirled.Fill(virtualscreen);\n  twirled.FillRect(floor(twirl.Center.X-twirl.Radius),floor(twirl.Center.Y-twirl.Radius),\n    ceil(twirl.Center.X+twirl.Radius),ceil(twirl.Center.Y+twirl.Radius),twirl,dmSet);\n  twirled.Draw(Canvas,Left,Top,OpaqueDraw);\n  twirl.Free;\nend;\n\nprocedure TTest8.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec;\n  alphaFactor := round((sin(time)+1)/2*255);\n  backgroundTile.ScanOffset := point(round((sin(time*0.3)+1)/2*1023) mod backgroundTile.Width,\n     round((sin(time*1.7)+1)/2*63) mod backgroundTile.Height);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utest9.pas",
    "content": "unit utest9;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, utestback, Graphics, BGRABitmap, BGRABitmapTypes;\n\ntype\n  { TTest9 }\n\n  TTest9 = class(TTestBack)\n  protected\n    pacman,virtualScreen,masked: TBGRABitmap;\n    time: single;\n    lightPos1,lightPos2: TPointF;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnPaint(Canvas: TCanvas; Left,Top,Width,Height: Integer); override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  end;\n\nimplementation\n\nuses math, utest;\n\n{ TTest9 }\n\nconstructor TTest9.Create;\nbegin\n  inherited Create;\n  Name := 'Simple mask, ellipse and radial gradient';\n  virtualScreen := nil;\n  masked := nil;\n  pacman := TBGRABitmap.Create(ResourceDir+'pac_d1.bmp');\n  pacman.ReplaceColor(pacman.GetPixel(0,0),BGRAPixelTransparent);\n  time := 0;\nend;\n\ndestructor TTest9.Destroy;\nbegin\n  virtualScreen.Free;\n  masked.Free;\n  pacman.free;\n  inherited Destroy;\nend;\n\nprocedure TTest9.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer);\nvar mask: TBGRABitmap; x,y: single;\nbegin\n  UpdateBackground(Width,Height);\n  if time = 0 then exit;\n\n  if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then\n  begin\n    FreeAndNil(virtualScreen);\n    FreeAndNil(masked);\n  end;\n\n  if virtualscreen = nil then\n    virtualscreen := TBGRABitmap.Create(Width,Height);\n\n  if masked = nil then\n  begin\n    masked := backgroundImg.Duplicate;\n    masked.PutImage(virtualScreen.Width div 2,virtualScreen.Height div 2, pacman, dmDrawWithTransparency);\n  end;\n\n  virtualscreen.PutImage(0,0,backgroundImg,dmSet);\n  virtualScreen.FillRect(0,0,virtualScreen.Width,virtualScreen.Height,BGRA(0,0,0,192),dmDrawWithTransparency);\n\n  mask := TBGRABitmap.Create(Width,Height,BGRABlack);\n  mask.FillEllipseAntialias(lightPos1.X*Width,lightPos1.Y*Height,40,40,BGRAWhite);\n  x := lightPos2.X*Width;\n  y := lightPos2.Y*Height;\n  mask.GradientFill(floor(x-60),floor(y-60),ceil(x+60),ceil(y+60),BGRAWhite,BGRAPixelTransparent,gtRadial,pointf(x,y),pointf(x+60,y),dmDrawWithTransparency,True,False);\n  virtualScreen.FillMask(0,0,mask,masked);\n  mask.free;\n\n  virtualscreen.Draw(Canvas,Left,Top,OpaqueDraw);\nend;\n\nprocedure TTest9.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nbegin\n  time := time+ElapsedSec*0.5;\n  lightPos1 := pointF((sin(time)+1)/4+0.2,(cos(time*0.3)+1)/4+0.3);\n  lightPos2 := pointF((sin(time*0.7+1)+1)/4+0.4,(cos(time*0.5+2)+1)/4+0.3);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utestback.pas",
    "content": "unit utestback;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utest;\n\ntype\n  { TTestBack }\n\n  TTestBack = class(TTest)\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure UpdateBackground(Width,Height: integer);\n  protected\n    backgroundTile,backgroundImg: TBGRABitmap;\n  end;\n\nimplementation\n\n{ TTestBack }\n\nconstructor TTestBack.Create;\nbegin\n  inherited Create;\n\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  backgroundImg := nil;\nend;\n\ndestructor TTestBack.Destroy;\nbegin\n  backgroundImg.Free;\n  backgroundTile.free;\n  inherited Destroy;\nend;\n\nprocedure TTestBack.UpdateBackground(Width,Height: integer);\nbegin\n  if (backgroundImg <> nil) and ((backgroundImg.Width <> Width) or (backgroundImg.Height <> Height)) then\n  FreeAndNil(backgroundImg);\n\nif backgroundImg = nil then\n  backgroundImg := backgroundTile.GetPart(rect(0,0,Width,Height));\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utestpacrect.pas",
    "content": "unit utestpacrect;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes, Graphics, utest;\n\nconst NbPacman = 20;\n\ntype\n  { TTestPacRect }\n\n  TTestPacRect = class(TTest)\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure OnTimer(Width,Height: Integer; ElapsedSec: Double); override;\n  protected\n    pacLoc: array of TPoint;\n    pacImg: array of TBGRABitmap;\n    pacSize : TPoint;\n    backgroundTile,backgroundImg: TBGRABitmap;\n    numPacImg: integer;\n    function AddTranspRectTo(filename: string): TBGRABitmap;\n  end;\n\nimplementation\n\n{ TTestPacRect }\n\nconstructor TTestPacRect.Create;\nbegin\n  inherited Create;\n  randomize;\n  setlength(pacImg,4);\n  pacImg[0] := AddTranspRectTo(ResourceDir+'pac_d1.bmp');\n  pacImg[1] := AddTranspRectTo(ResourceDir+'pac_d2.bmp');\n  pacImg[2] := AddTranspRectTo(ResourceDir+'pac_d3.bmp');\n  pacImg[3] := AddTranspRectTo(ResourceDir+'pac_d2.bmp');\n\n  backgroundTile := TBGRABitmap.Create(ResourceDir+'diamondback.png');\n  backgroundImg := nil;\n\n  numPacImg := 0;\n  pacSize := Point(pacImg[0].Width,pacImg[0].Height);\nend;\n\ndestructor TTestPacRect.Destroy;\nvar i: integer;\nbegin\n  backgroundImg.Free;\n  backgroundTile.Free;\n  for i := 0 to high(pacImg) do\n    pacImg[i].Free;\n  inherited Destroy;\nend;\n\nprocedure TTestPacRect.OnTimer(Width, Height: Integer; ElapsedSec: Double);\nvar i: integer;\nbegin\n  if pacLoc = nil then\n  begin\n    setlength(pacLoc,NbPacman);\n    for i := 0 to high(pacLoc) do\n      pacLoc[i] := Point(random(Width+pacSize.X)-pacSize.X,random(Height+pacSize.Y)-pacSize.Y);\n  end else\n  begin\n    for i := 0 to high(pacLoc) do\n      if (pacLoc[i].Y <= -pacSize.Y) or (pacLoc[i].Y >= Height) then\n        pacLoc[i] := Point(random(Width+pacSize.X)-pacSize.X,random(Height+pacSize.Y)-pacSize.Y)\n      else\n      begin\n        inc(pacLoc[i].X,4);\n        if pacLoc[i].X >= Width then\n        begin\n          pacLoc[i].X := -pacSize.X;\n          pacLoc[i].Y := random(Height+pacSize.Y)-pacSize.Y;\n        end;\n      end;\n  end;\n  numPacImg := (numPacImg+1) mod length(pacImg);\n\n  if (backgroundImg <> nil) and ((backgroundImg.Width <> Width) or (backgroundImg.Height <> Height)) then\n    FreeAndNil(backgroundImg);\n\n  if backgroundImg = nil then\n    backgroundImg := backgroundTile.GetPart(rect(0,0,Width,Height));\nend;\n\nfunction TTestPacRect.AddTranspRectTo(filename: string): TBGRABitmap;\nvar originalImage: TBGRABitmap;\nbegin\n  originalImage := TBGRABitmap.Create(filename);\n  originalImage.ReplaceColor(originalImage.GetPixel(0,0),BGRAPixelTransparent);\n  result := TBGRABitmap.Create(originalImage.Width+originalImage.Height,OriginalImage.Height);\n  result.PutImage(0,0,originalImage,dmSet);\n  result.Rectangle(originalImage.Width,0,result.Width,result.Height,BGRABlack,BGRA(0,0,0,64),dmDrawWithTransparency);\n  originalImage.Free;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utexture.pas",
    "content": "unit utexture;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRABitmap, BGRABitmapTypes;\n\nfunction CreateGreenTexture: TBGRABitmap;\nfunction CreateMarbleTexture(tx,ty: integer): TBGRABitmap;\nfunction CreateWoodTexture(tx,ty: integer): TBGRABitmap;\n\nimplementation\n\nuses BGRAGradients;\n\nfunction Interp256(value1,value2,position: integer): integer; inline; overload;\nbegin\n     result := (value1*(256-position) + value2*position) shr 8;\nend;\n\nfunction Interp256(color1,color2: TBGRAPixel; position: integer): TBGRAPixel; inline; overload;\nbegin\n     result.red := Interp256(color1.red,color2.red, position);\n     result.green := Interp256(color1.green,color2.green, position);\n     result.blue := Interp256(color1.blue,color2.blue, position);\n     result.alpha := Interp256(color1.alpha,color2.alpha, position);\nend;\n\nfunction CreateGreenTexture: TBGRABitmap;\nvar\n  p: PBGRAPixel;\n  i: Integer;\nbegin\n  result := CreatePerlinNoiseMap(256,256);\n  BGRAReplace(result,result.Resample(32,32));\n  p := result.data;\n  for i := 1 to result.NbPixels do\n  begin\n    p^ := Interp256( BGRA(0,128,0), BGRA(192,255,0), p^.red );\n    inc(p);\n  end;\nend;\n\nfunction CreateMarbleTexture(tx,ty: integer): TBGRABitmap;\nvar\n  colorOscillation: integer;\n  p: PBGRAPixel;\n  i: Integer;\nbegin\n  result := CreateCyclicPerlinNoiseMap(tx,ty,0.5,0.5,0.8,rfBestQuality);\n  p := result.Data;\n  for i := 0 to result.NbPixels-1 do\n  begin\n    colorOscillation := round(sqrt(sqrt((sin(p^.red*Pi/128+0.5)+1)/2))*256);\n    p^ := Interp256(BGRA(161,117,105),BGRA(218,197,180),colorOscillation);\n    inc(p);\n  end;\nend;\n\nfunction CreateWoodTexture(tx,ty: integer): TBGRABitmap;\nvar\n  colorOscillation, globalColorVariation: integer;\n  p: PBGRAPixel;\n  i: Integer;\nbegin\n  result := CreateCyclicPerlinNoiseMap(tx,ty,1.5,1.5,1,rfBestQuality);\n  p := result.Data;\n  for i := 0 to result.NbPixels-1 do\n  begin\n    colorOscillation := round(sqrt((sin(p^.red*Pi/16)+1)/2)*256);\n    globalColorVariation := p^.red;\n    p^:= Interp256( Interp256(BGRA(247,188,120),BGRA(255,218,170),colorOscillation),\n                    Interp256(BGRA(157,97,60),BGRA(202,145,112),colorOscillation), globalColorVariation);\n    inc(p);\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbgrafunc/utore3d.pas",
    "content": "unit utore3d;\n\n{$mode objfpc}\n\ninterface\n\nuses\n  Classes, SysUtils, BGRAScene3D;\n\ntype\n\n  { TToreScene3D }\n\n  TToreScene3D = class(TBGRAScene3D)\n  private\n    shape,lightObj: IBGRAObject3D;\n    procedure CreateLight;\n    procedure CreateShape;\n  public\n    angle: single;\n    constructor Create;\n    procedure Render; override;\n  end;\n\nimplementation\n\nuses BGRABitmapTypes, BGRAMatrix3D;\n\n{ TToreScene3D }\n\nconstructor TToreScene3D.Create;\nbegin\n  inherited Create;\n  CreateLight;\n  CreateShape;\nend;\n\nprocedure TToreScene3D.Render;\nbegin\n  with shape.MainPart do\n  begin\n    ResetTransform;\n    Translate(sin(angle*Pi/180+Pi/4)*10,0,0);\n    Scale(20);\n    RotateZDeg(angle*0.3);\n    RotateXDeg(angle*0.1+90);\n  end;\n  with lightObj.MainPart do\n  begin\n    ResetTransform;\n    RotateYDeg(angle);\n    Translate(60,0,0);\n  end;\n  inherited Render;\nend;\n\nprocedure TToreScene3D.CreateShape;\nconst NbX = 40;\n      NbY = 20;\nvar\n  v: array[0..NbY-1,0..NbX-1] of IBGRAVertex3D;\n  i,j: integer;\n  m: TMatrix3D;\n  p,ofs: TPoint3D;\nbegin\n  shape := CreateObject(BGRA(255,0,0));\n\n  m := MatrixRotateY(2*Pi/NbY);\n\n  p := Point3D(0.3,0,0);\n  ofs := Point3D(1,0,0);\n  for i := 0 to NbY-1 do\n  begin\n    v[i,0] := shape.MainPart.Add(p+ofs);\n    p := m*p;\n  end;\n\n  m := MatrixRotateZ(2*Pi/NbX);\n  for j := 1 to NbX-1 do\n    for i := 0 to NbY-1 do\n      v[i,j] := shape.MainPart.Add(m*v[i,j-1].SceneCoord);\n\n  for j := 0 to NbX-1 do\n    for i := 0 to NbY-1 do\n      shape.AddFace([v[i,j],v[i,(j+1)mod NbX],v[(i+1) mod NbY,(j+1)mod NbX],v[(i+1) mod NbY,j]]);\nend;\n\nprocedure TToreScene3D.CreateLight;\nvar v: array of IBGRAVertex3D;\n    lamp: IBGRAMaterial3D;\nbegin\n  lightObj := CreateObject(BGRAWhite);\n  DefaultLightingNormal := lnVertex;\n  DefaultMaterial.SpecularIndex := 10;\n { if DefaultLightingNormal = lnFace then\n  begin\n    AmbiantLightness := 0.4;\n    AddPointLight(lightObj.Vertices.Add(0,0,0),40,0.8,-0.3)\n  end\n  else\n  begin  }\n    AmbiantLightColor := BGRA(128,128,128);\n    AddPointLight(lightObj.MainPart.Add(0,0,0),40,BGRA(128,128,64),-0.3);\n  //end;\n\n  v := lightObj.MainPart.Add([-1,-2,-2, 1,-1,-1, 1,1,-1, -1,2,-2,\n                          -1,-2,+2, 1,-1,+1, 1,1,+1, -1,2,+2]);\n\n  lamp := CreateMaterial;\n  lamp.LightThroughFactor := 0.0001;\n  lightObj.Material := lamp;\n  lightObj.AddFace([v[0],v[1],v[2],v[3]],true);\n  lightObj.AddFace([v[4],v[5],v[1],v[0]],true);\n  lightObj.AddFace([v[7],v[6],v[5],v[4]],true);\n  lightObj.AddFace([v[3],v[2],v[6],v[7]],true);\n  lightObj.AddFace([v[1],v[5],v[6],v[2]],true);\n  //lightObj.AddFace([v[4],v[0],v[3],v[7]],true);\n\n  AddPointLight(lightObj.MainPart.Add(5,0,0),4,1,-0.3);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbiditext/project1.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"project1\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"project1.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"project1\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testbiditext/project1.lpr",
    "content": "program project1;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testbiditext/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 617\n  Height = 360\n  Top = 309\n  Width = 535\n  Caption = 'Test RightToLeft, ShowPrefix and line endings'\n  Font.Height = 15\n  OnCreate = FormCreate\n  OnMouseMove = FormMouseMove\n  OnPaint = FormPaint\n  Position = poDefault\n  LCLVersion = '2.0.0.4'\nend\n"
  },
  {
    "path": "test/testbiditext/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Types, FileUtil, Forms, Controls, Graphics, Dialogs,\n  StdCtrls;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    procedure FormCreate(Sender: TObject);\n    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);\n    procedure FormPaint(Sender: TObject);\n  private\n\n  public\n    mx,my: integer;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nuses BGRABitmap, BGRABitmapTypes, BGRAText, BGRAPath;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nbegin\n  mx := x;\n  my := y;\n  Invalidate;\nend;\n\nprocedure TForm1.FormPaint(Sender: TObject);\nconst zoom = 1;\n  TestText = 'في XHTML 1.0 يتم تحقيق ذلك بإضافة + العنصر المضمن bdo.';//'أب+';\n  TestText2 = 'before مصر after سلام كَعْك.';\nvar\n  image: TBGRABitmap;\n  TS, tempTS: TTextStyle;\n  y, prevHeight: Integer;\n  s: TSize;\n  p: TBGRAPath;\nbegin\n  image := TBGRABitmap.Create(ClientWidth div zoom, ClientHeight div zoom, BGRAWhite);\n  image.FontName := Font.Name;\n  image.FontHeight := round(Font.Height*96/PixelsPerInch);\n  image.FontQuality := fqSystemClearType;\n\n  Canvas.Brush.Style := bsClear;\n\n  fillchar(TS, sizeof(TS), 0);\n  TS.Opaque := False;\n  TS.Clipping:= true;\n\n  TS.RightToLeft := False;\n  TS.ShowPrefix := false;\n  ts.Alignment:= taRightJustify;\n  image.TextRect(Rect(5, 25, 240, 45), 5, 25, 'BGRA With RTL=False', TS, BGRA(0,0,0));\n  ts.Alignment:= taLeftJustify;\n  image.TextRect(Rect(250, 25, image.Width, 45), 250, 25, TestText, TS, BGRA(0,0,0));\n\n  TS.RightToLeft := True;\n  TS.ShowPrefix := true;\n  ts.Alignment:= taRightJustify;\n  image.TextRect(Rect(5, 95, 240, 135), 5, 95, 'BGRA' + LineEnding + 'With RTL=True',\n                 TS, BGRA(0,0,0));\n  ts.Alignment:= taLeftJustify;\n  image.TextRect(Rect(250, 95, image.Width, 135), 250, 95, TestText, TS, BGRA(0,0,0));\n\n  image.TextOut(240,190, 'BGRA TextOut LTR', BGRABlack, taRightJustify);\n  image.TextOut(250,190, TestText, BGRABlack, false);\n  image.TextOut(240,210, 'BGRA TextOut RTL', BGRABlack, taRightJustify);\n  image.TextOut(250,210, TestText, BGRABlack, true);\n\n  image.TextOut(240,230, 'BGRA TextOut auto', BGRABlack, taRightJustify);\n  image.TextOut(250,230, TestText, BGRABlack);\n  image.TextOut(240,250, 'BGRA TextOut auto', BGRABlack, taRightJustify);\n  image.TextOut(250,250, TestText2, BGRABlack);\n\n  y := 280;\n  ts.Wordbreak := true;\n  ts.RightToLeft := false;\n  s := image.TextSize(TestText, image.Width-250, ts.RightToLeft);\n  image.TextOut(240,y, 'BGRA WordWrap LTR (fit ' + inttostr(image.TextFitInfo(TestText, image.Width-250)) + ')', BGRABlack, taRightJustify);\n  image.Rectangle(250, y, 250+s.cx,y+s.cy, BGRA(255,0,0,128), dmDrawWithTransparency);\n  image.TextRect(Rect(250, y, 250+s.cx,y+s.cy), 250,y, TestText, ts, BGRABlack);\n  inc(y, s.cy);\n\n  ts.RightToLeft := true;\n  s := image.TextSize(TestText, image.Width-250, ts.RightToLeft);\n  image.TextOut(240,y, 'BGRA WordWrap RTL', BGRABlack, taRightJustify);\n  image.Rectangle(250, y, 250+s.cx,y+s.cy, BGRA(255,0,0,128), dmDrawWithTransparency);\n  image.TextRect(Rect(250, y, 250+s.cx,y+s.cy), 250,y, TestText, ts, BGRABlack);\n  inc(y, s.cy);\n  ts.Wordbreak := false;\n\n  image.TextOut(240,y, 'BGRA TextOutAngle LTR', BGRABlack, taRightJustify);\n  image.FontStyle := [fsUnderline];\n  image.TextOutAngle(250,y, -150, TestText2, BGRABlack, taLeftJustify, False);\n  image.FontStyle := [];\n  inc(y,20);\n\n  image.TextOut(240,y, 'BGRA TextOutAngle RTL', BGRABlack, taRightJustify);\n  image.FontStyle := [fsUnderline];\n  image.TextOutAngle(250,y, -150, TestText2, BGRABlack, taLeftJustify, True);\n  image.FontStyle := [];\n  inc(y,20);\n\n  image.TextOut(240,y, 'BGRA TextOutAngle auto', BGRABlack, taRightJustify);\n  image.FontStyle := [fsUnderline];\n  image.TextOutAngle(250,y, -150, TestText2, BGRABlack, taLeftJustify);\n  image.FontStyle := [];\n  inc(y,40);\n\n  image.FontHeight := 25;\n  image.TextOut(240,y, 'Curved LTR', BGRABlack, taRightJustify);\n  p := TBGRAPath.Create;\n  p.translate(image.FontFullHeight/2, image.FontFullHeight/2);\n  p.moveTo(250,y);\n  p.arc(500,y, 250,50, 0, Pi,0, true);\n  image.FontVerticalAnchor:= fvaCapCenter;\n  image.FontBidiMode:= fbmLeftToRight;\n  image.TextOutCurved(p, TestText2, BGRABlack, taLeftJustify, 0);\n  image.FontVerticalAnchor:= fvaTop;\n  p.Free;\n  inc(y,round(image.FontFullHeight*1.2));\n\n  image.TextOut(240,y, 'Curved RTL', BGRABlack, taRightJustify);\n  p := TBGRAPath.Create;\n  p.translate(image.FontFullHeight/2, image.FontFullHeight/2);\n  p.moveTo(250,y);\n  p.arc(500,y, 250,50, 0, Pi,0, true);\n  image.FontVerticalAnchor:= fvaCapCenter;\n  image.FontBidiMode:= fbmRightToLeft;\n  image.TextOutCurved(p, TestText2, BGRABlack, taLeftJustify, 0);\n  image.FontVerticalAnchor:= fvaTop;\n  p.Free;\n  inc(y,round(image.FontFullHeight*1.2));\n\n  image.TextOut(240,y, 'Curved auto', BGRABlack, taRightJustify);\n  p := TBGRAPath.Create;\n  p.translate(image.FontFullHeight/2, image.FontFullHeight/2);\n  p.moveTo(250,y);\n  p.arc(500,y, 250,50, 0, Pi,0, true);\n  image.FontVerticalAnchor:= fvaCapCenter;\n  image.FontBidiMode:= fbmAuto;\n  image.TextOutCurved(p, TestText2, BGRABlack, taLeftJustify, 0);\n  image.FontVerticalAnchor:= fvaTop;\n  p.Free;\n  inc(y,round(image.FontFullHeight*1.2));\n\n\n  image.FontFullHeight := 40;\n  ts.Alignment := taLeftJustify;\n  TS.EndEllipsis := true;\n  TS.RightToLeft := false;\n  TS.Wordbreak := false;\n  image.TextRect(rect(0,0,ClientWidth,ClientHeight), mx,my-50, 'BGRA test ellipsis', ts, CSSGray);\n  TS.EndEllipsis:= false;\n\n  image.Draw(Canvas, 0,0, true);\n\n  image.Free;\n\n  Canvas.Font.Height := round(Font.Height*96/PixelsPerInch);\n  Canvas.Font.Color := clBlack;\n  TS.RightToLeft := False;\n  TS.ShowPrefix := false;\n  ts.Alignment:= taRightJustify;\n  Canvas.TextRect(Rect(5, 5, 240, 25), 5, 5, 'TCanvas With RTL=False', TS);\n  ts.Alignment:= taLeftJustify;\n  Canvas.TextRect(Rect(250, 5, Canvas.Width, 25), 250, 5, TestText, TS);\n\n  TS.RightToLeft := True;\n  TS.ShowPrefix := true;\n  ts.Alignment:= taRightJustify;\n  Canvas.TextRect(Rect(5, 55, 240, 95), 5, 55, 'TCanvas'+LineEnding+'With &RTL=True', TS);\n  ts.Alignment:= taLeftJustify;\n  Canvas.TextRect(Rect(250, 55, Canvas.Width, 95), 250, 55, TestText, TS);\n\n  ts.Alignment:= taRightJustify;\n  Canvas.TextRect(Rect(5, 140, 240, 160), 5, 140, 'TCanvas TextOut LTR', TS);\n  Canvas.TextOut(250,140, TestText);\n  tempTS := Canvas.TextStyle;\n  tempTS.RightToLeft := true;\n  Canvas.TextStyle := tempTS;\n  Canvas.TextRect(Rect(5, 160, 240, 180), 5, 160, 'TCanvas TextOut RTL', TS);\n  Canvas.TextOut(250,160, TestText);\n  tempTS := Canvas.TextStyle;\n  tempTS.RightToLeft := false;\n  Canvas.TextStyle := tempTS;\n\n  prevHeight := Canvas.Font.Height;\n  Canvas.Font.Color := clGray;\n  Canvas.Font.Height := FontFullHeightSign * 40;\n  ts.Alignment := taLeftJustify;\n  TS.EndEllipsis := true;\n  TS.RightToLeft := false;\n  TS.Wordbreak := false;\n  Canvas.TextRect(rect(0,0,ClientWidth,ClientHeight), mx,my, 'TCanvas test ellipsis', ts);\n  TS.EndEllipsis:= false;\n  Canvas.Font.Height := prevHeight;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testbiditext2/project1.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"project1\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"project1.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"project1\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <UseHeaptrc Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testbiditext2/project1.lpr",
    "content": "program project1;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1;\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testbiditext2/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 345\n  Height = 415\n  Top = 177\n  Width = 722\n  Caption = 'BGRA Text Editor'\n  ClientHeight = 415\n  ClientWidth = 722\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '2.0.8.0'\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\n    Left = 0\n    Height = 383\n    Top = 32\n    Width = 704\n    OnRedraw = BGRAVirtualScreen1Redraw\n    Align = alClient\n    Alignment = taLeftJustify\n    BorderWidth = 1\n    BorderStyle = bsSingle\n    Color = clWhite\n    Font.Height = 12\n    ParentColor = False\n    ParentFont = False\n    TabOrder = 0\n    TabStop = True\n    OnMouseDown = BGRAVirtualScreen1MouseDown\n    OnMouseMove = BGRAVirtualScreen1MouseMove\n    OnMouseWheel = BGRAVirtualScreen1MouseWheel\n  end\n  object Panel1: TPanel\n    Left = 0\n    Height = 32\n    Top = 0\n    Width = 722\n    Align = alTop\n    ClientHeight = 32\n    ClientWidth = 722\n    ParentFont = False\n    TabOrder = 1\n    object SpinEdit_FontSize: TSpinEdit\n      Left = 80\n      Height = 21\n      Top = 5\n      Width = 58\n      MaxValue = 50\n      MinValue = 1\n      OnChange = SpinEdit_FontSizeChange\n      ParentFont = False\n      TabOrder = 0\n      Value = 15\n    end\n    object Label2: TLabel\n      Left = 8\n      Height = 16\n      Top = 7\n      Width = 55\n      Caption = 'Font size'\n      ParentColor = False\n      ParentFont = False\n    end\n    object ToolBar1: TToolBar\n      Left = 144\n      Height = 27\n      Top = 1\n      Width = 80\n      Align = alNone\n      Caption = 'ToolBar1'\n      Images = ImageList1\n      ParentFont = False\n      TabOrder = 1\n      object ToolButtonLeftAlign: TToolButton\n        Left = 1\n        Top = 2\n        Caption = 'Left alignment'\n        ImageIndex = 0\n        OnClick = ToolButtonLeftAlignClick\n      end\n      object ToolButtonCenterAlign: TToolButton\n        Left = 24\n        Top = 2\n        Caption = 'Center'\n        ImageIndex = 1\n        OnClick = ToolButtonCenterAlignClick\n      end\n      object ToolButtonRightAlign: TToolButton\n        Left = 47\n        Top = 2\n        Caption = 'Right alignment'\n        ImageIndex = 2\n        OnClick = ToolButtonRightAlignClick\n      end\n    end\n    object CheckBox_FreeType: TCheckBox\n      Left = 240\n      Height = 18\n      Top = 5\n      Width = 99\n      Caption = 'Use FreeType'\n      OnChange = CheckBox_FreeTypeChange\n      ParentFont = False\n      TabOrder = 2\n    end\n    object CheckBox_ClearType: TCheckBox\n      Left = 352\n      Height = 18\n      Top = 5\n      Width = 120\n      Caption = 'Enable ClearType'\n      OnChange = CheckBox_ClearTypeChange\n      ParentFont = False\n      TabOrder = 3\n    end\n  end\n  object ScrollBar1: TScrollBar\n    Left = 704\n    Height = 383\n    Top = 32\n    Width = 18\n    Align = alRight\n    Kind = sbVertical\n    PageSize = 0\n    TabOrder = 2\n    OnChange = ScrollBar1Change\n  end\n  object TimerBlinkCaret: TTimer\n    Interval = 500\n    OnTimer = TimerBlinkCaretTimer\n    left = 240\n    top = 248\n  end\n  object ImageList1: TImageList\n    left = 344\n    top = 248\n    Bitmap = {\n      4C69030000001000000010000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF00000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF00000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF00000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000010000FF010000FF010000FF010000FF010000FF0100008C000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000010000FF010000FF010000FF010000FF010000FF0100008C000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      000000000000000000000000000000000000010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      000000000000010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      00000000000000000000000000000000000000000000010000FF010000FF0100\n      00FF010000FF010000FF010000FF010000FF010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      000000000000000000000000000000000000010000FF010000FF010000FF0100\n      00FF010000FF0000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000000000000000000000000000000000000000\n      0000000000000000000000000000\n    }\n  end\nend\n"
  },
  {
    "path": "test/testbiditext2/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, Spin, ComCtrls, BGRAVirtualScreen, BGRABitmap, BGRABitmapTypes,\n  BGRATextBidi, BGRAFreeType, EasyLazFreeType, LazFreeTypeFontCollection,\n  fgl, Types;\n\nconst\n  CaretBlinkTimeMs = 500;\n  ssShortcut = {$IFDEF DARWIN}ssMeta{$ELSE}ssCtrl{$ENDIF};\n\ntype\n  TRenderedBrokenLineList = specialize TFPGObjectList<TBGRABitmap>;\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\n    CheckBox_ClearType: TCheckBox;\n    CheckBox_FreeType: TCheckBox;\n    ImageList1: TImageList;\n    Label2: TLabel;\n    Panel1: TPanel;\n    ScrollBar1: TScrollBar;\n    SpinEdit_FontSize: TSpinEdit;\n    TimerBlinkCaret: TTimer;\n    ToolBar1: TToolBar;\n    ToolButtonLeftAlign: TToolButton;\n    ToolButtonCenterAlign: TToolButton;\n    ToolButtonRightAlign: TToolButton;\n    procedure BGRAVirtualScreen1MouseDown(Sender: TObject;\n      Button: TMouseButton; {%H-}Shift: TShiftState; X, Y: Integer);\n    procedure BGRAVirtualScreen1MouseMove(Sender: TObject; Shift: TShiftState;\n      X, Y: Integer);\n    procedure BGRAVirtualScreen1MouseWheel(Sender: TObject; Shift: TShiftState;\n      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure CheckBox_ClearTypeChange(Sender: TObject);\n    procedure CheckBox_FreeTypeChange(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);\n    procedure FormKeyUp(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);\n    procedure FormKeyPress(Sender: TObject; var Key: char);\n    procedure ScrollBar1Change(Sender: TObject);\n    procedure SpinEdit_FontSizeChange(Sender: TObject);\n    procedure TimerBlinkCaretTimer(Sender: TObject);\n    procedure ToolButtonCenterAlignClick(Sender: TObject);\n    procedure ToolButtonLeftAlignClick(Sender: TObject);\n    procedure ToolButtonRightAlignClick(Sender: TObject);\n  private\n    FFontRenderer: TBGRACustomFontRenderer;\n    FTextLayout: TBidiTextLayout;\n    FRenderedParagraphs: array of TRenderedBrokenLineList;\n    FBlinkCaretTime: TDateTime;\n    FBlinkCaretState: boolean;\n    FSelStart,FSelLength: integer;\n    FSelFirstClick,FSelLastClick: integer;\n    FCurFirstParagraph,FCurLastParagraph: integer;\n    FTestText: string;\n    FInUnicode: boolean;\n    FUnicodeValue: LongWord;\n    function GetLayoutReady: boolean;\n    function GetSelLastClick: integer;\n    procedure LayoutBrokenLinesChanged({%H}ASender: TObject;\n      AParagraphIndex: integer; ASubBrokenStart, ASubBrokenChangedCountBefore,\n      ASubBrokenChangedCountAfter: integer; ASubBrokenTotalCountBefore,\n      {%H}ASubBrokenTotalCountAfter: integer);\n    procedure LayoutParagraphDeleted({%H}ASender: TObject; AParagraphIndex: integer);\n    procedure LayoutParagraphMergedWithNext(ASender: TObject;\n      AParagraphIndex: integer);\n    procedure LayoutParagraphSplit({%H}ASender: TObject; AParagraphIndex: integer;\n      ASubBrokenIndex, {%H-}ACharIndex: integer);\n    procedure SetSelLastClick(AValue: integer);\n    procedure SetSelLength(AValue: integer);\n    procedure SetSelStart(AValue: integer);\n    procedure FlushUnicode;\n    procedure DiscardRenderedBrokenLines;\n    procedure LayoutCompletelyChanged;\n  public\n    procedure UpdateCurrentParagraph;\n    procedure UpdateSelectionFromFirstLastClick;\n    procedure SetCurrentParagraphAlign(AAlign: TAlignment);\n    procedure DeleteSelection;\n    procedure InsertText(AText: string);\n    procedure ShowCaret;\n    property SelStart: integer read FSelStart write SetSelStart;\n    property SelLength: integer read FSelLength write SetSelLength;\n    property SelLastClick: integer read GetSelLastClick write SetSelLastClick;\n    property LayoutReady: boolean read GetLayoutReady;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses BGRAText, LCLType, BGRAUTF8, Clipbrd, LCLIntf, math;\n\n{$R *.lfm}\n\nprocedure SetClipboardAsText(Value: string);\nvar\n  strStream: TStringStream;\nbegin\n  strStream := TStringStream.Create(Value);\n  Clipboard.SetFormat(PredefinedClipboardFormat(pcfText), strStream);\n  strStream.Free;\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  FTextLayout := nil;\n  FFontRenderer := nil;\n  FSelStart:= 0;\n  FSelLength:= 0;\n  FSelFirstClick := -1;\n  FSelLastClick:= -1;\n  TimerBlinkCaret.Interval := CaretBlinkTimeMs;\n  FCurFirstParagraph:= -1;\n  FCurLastParagraph:= -1;\n\n  BGRAVirtualScreen1.OnKeyDown:= @FormKeyDown;\n  BGRAVirtualScreen1.OnKeyUp:= @FormKeyUp;\n  BGRAVirtualScreen1.OnKeyPress:= @FormKeyPress;\n  BGRAVirtualScreen1.Cursor := crIBeam;\n  BGRAVirtualScreen1.BitmapAutoScale:= false;\n\n  FTestText := 'تحتوي العربية على 28 حرفاً مكتوباً. ويرى بعض اللغويين أنه يجب إضافة حرف الهمزة إلى حروف العربية، ليصبح عدد الحروف 29. تُكتب العربية من اليمين إلى اليسار - ومثلها اللغة الفارسية والعبرية على عكس كثير من اللغات العالمية - ومن أعلى الصفحة إلى أسفلها.'+LineEnding+\n             'Arabic reversed \"' + UTF8OverrideDirection('صباح الخير',false)+'\". Arabic marks: \"لاٍُ لٍُإ بًٍّ  ةُِ ںْ رُ ٮَ  بٔ\".'+ LineEnding +\n             #9'Le français est une langue indo-européenne de la famille des langues romanes. Le français s''est formé en France (variété de la « langue d''oïl », qui est la langue de la partie septentrionale du pays).'+LineEnding+\n             'Glorious finds itself reversed as '+ UTF8OverrideDirection('\"glorious\"',True) + '. ' +\n               '\"Hello!\" is '+ UTF8EmbedDirection('\"مرحبا!\"',True) + ' in arabic.' + LineEnding +\n             'देवनागरी एक भारतीय लिपि है जिसमें अनेक भारतीय भाषाएँ तथा कई विदेशी भाषाएँ लिखी जाती हैं। यह बायें से दायें लिखी जाती है।' + LineEnding +\n             '对于汉语的分支语言，学界主要有两种观点，一种观点将汉语定义为语言，并将官话、贛語、闽语、粤语、客家语、吴语、湘语七大语言定义为一级方言.'+LineEnding+\n             'עִבְרִית היא שפה שמית, ממשפחת השפות האפרו-אסיאתיות, הידועה כשפתם של היהודים ושל השומרונים, אשר ניב מודרני שלה (עברית ישראלית) משמש כשפה הרשמית והעיקרית של מדינת ישראל.';\n\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  DiscardRenderedBrokenLines;\n  FTextLayout.Free;\n  FFontRenderer.Free;\nend;\n\nprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);\n\n  procedure MoveTo(ANewPos: integer);\n  begin\n    if ssShift in Shift then\n    begin\n      if ANewPos <> -1 then\n        SelLastClick := ANewPos;\n    end else\n    begin\n      if ANewPos <> -1 then\n        SelStart := ANewPos;\n      SelLength:= 0;\n    end;\n  end;\n\nvar\n  idxPara, newPos: Integer;\nbegin\n  if not LayoutReady then exit;\n\n  if (Key = VK_U) and ([ssCtrl,ssShift] <= Shift) then\n  begin\n    FlushUnicode;\n    FInUnicode := true;\n    FUnicodeValue:= 0;\n    Key := 0;\n  end else\n  if FInUnicode then\n  begin\n    case Key of\n      VK_DELETE: begin\n          FUnicodeValue := FUnicodeValue shr 4;\n        end;\n      VK_0..VK_9: begin\n          FUnicodeValue := (FUnicodeValue shl 4) + (Key - VK_0);\n        end;\n      VK_NUMPAD0..VK_NUMPAD9: begin\n          FUnicodeValue := (FUnicodeValue shl 4) + (Key - VK_NUMPAD0);\n        end;\n      VK_A..VK_F: begin\n          FUnicodeValue := (FUnicodeValue shl 4) + (Key - VK_A + 10);\n        end;\n    else\n      FlushUnicode;\n    end;\n    if (FUnicodeValue >= $10FFF0) or\n       (FUnicodeValue >= $11000) then\n      FlushUnicode;\n    Key := 0;\n  end else\n  if KEY = VK_DELETE then\n  begin\n    if SelLength > 0 then DeleteSelection\n    else\n    begin\n      FTextLayout.DeleteText(SelStart, 1);\n      SelStart := SelStart + FTextLayout.IncludeNonSpacingChars(SelStart, 0);\n      ShowCaret;\n    end;\n    Key := 0;\n  end else\n  if (Key = VK_LEFT) or (Key = VK_RIGHT) then\n  begin\n    if (Key = VK_LEFT) xor FTextLayout.ParagraphRightToLeft[FTextLayout.GetParagraphAt(SelLastClick)] then\n    begin\n      if SelLastClick > 0 then\n        newPos := SelLastClick - FTextLayout.IncludeNonSpacingCharsBefore(SelLastClick,1)\n      else newPos := -1;\n\n      MoveTo(newPos);\n    end else\n    begin\n      if SelLastClick < FTextLayout.CharCount then\n        newPos := SelLastClick + FTextLayout.IncludeNonSpacingChars(SelLastClick,1)\n      else newPos := -1;\n\n      MoveTo(newPos);\n    end;\n    Key := 0;\n  end else\n  if (Key = VK_UP) or (Key = VK_DOWN) then\n  begin\n    if Key = VK_UP then\n      newPos := FTextLayout.FindTextAbove(SelLastClick)\n    else\n      newPos := FTextLayout.FindTextBelow(SelLastClick);\n\n    MoveTo(newPos);\n    Key := 0;\n  end else\n  if Key = VK_HOME then\n  begin\n    idxPara := FTextLayout.GetParagraphAt(SelLastClick);\n    if ssCtrl in Shift then newPos := 0 else\n      newPos := FTextLayout.ParagraphStartIndex[idxPara];\n    MoveTo(newPos);\n    Key := 0;\n  end else\n  if Key = VK_END then\n  begin\n    idxPara := FTextLayout.GetParagraphAt(SelLastClick);\n    if ssCtrl in Shift then newPos := FTextLayout.CharCount else\n      newPos := FTextLayout.ParagraphEndIndexBeforeParagraphSeparator[idxPara];\n    MoveTo(newPos);\n    Key := 0;\n  end else\n  if Key = VK_RETURN then\n  begin\n    if SelLength > 0 then DeleteSelection;\n    if ssShift in Shift then\n    begin\n      SelStart := SelStart + FTextLayout.InsertLineSeparator(SelStart);\n    end else\n      InsertText(LineEnding);\n    Key := 0;\n  end else\n  if Key = VK_TAB then\n  begin\n    if SelLength > 0 then DeleteSelection;\n    InsertText(#9);\n    Key := 0;\n  end else\n  If (Key = VK_C) and (ssShortcut in Shift) then\n  begin\n    if SelLength> 0 then\n      SetClipboardAsText(FTextLayout.CopyText(SelStart, SelLength));\n    Key := 0;\n  end else\n  If (Key = VK_X) and (ssShortcut in Shift) then\n  begin\n    if SelLength > 0 then\n    begin\n      SetClipboardAsText(FTextLayout.CopyText(SelStart, SelLength));\n      DeleteSelection;\n    end;\n    Key := 0;\n  end else\n  If (Key = VK_V) and (ssShortcut in Shift) then\n  begin\n    InsertText(Clipboard.AsText);\n    Key := 0;\n  end else\n  If (Key = VK_A) and (ssShortcut in Shift) then\n  begin\n    SelStart:= 0;\n    SelLength:= FTextLayout.CharCount;\n    Key := 0;\n  end;\nend;\n\nprocedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);\nbegin\n  if FInUnicode then\n  begin\n    if (Key = VK_CONTROL) or (Key = VK_SHIFT) then\n      FlushUnicode;\n  end;\nend;\n\nprocedure TForm1.FormKeyPress(Sender: TObject; var Key: char);\nvar\n  delCount: Integer;\nbegin\n  if not LayoutReady then exit;\n\n  if Key = #8 then\n  begin\n    if SelLength > 0 then DeleteSelection\n    else\n    begin\n      if SelStart > 0 then\n      begin\n        delCount := FTextLayout.DeleteTextBefore(SelStart, 1);\n        SelStart := SelStart - delCount;\n        SelStart := SelStart + FTextLayout.IncludeNonSpacingChars(SelStart, 0);\n      end;\n    end;\n  end\n  else\n  if Key = #13 then\n    InsertText(LineEnding)\n  else\n    InsertText(Key);\n  Key := #0\nend;\n\nprocedure TForm1.ScrollBar1Change(Sender: TObject);\nbegin\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.SpinEdit_FontSizeChange(Sender: TObject);\nbegin\n  LayoutCompletelyChanged;\nend;\n\nprocedure TForm1.TimerBlinkCaretTimer(Sender: TObject);\nbegin\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.ToolButtonCenterAlignClick(Sender: TObject);\nbegin\n  SetCurrentParagraphAlign(taCenter);\nend;\n\nprocedure TForm1.ToolButtonLeftAlignClick(Sender: TObject);\nbegin\n  SetCurrentParagraphAlign(taLeftJustify);\nend;\n\nprocedure TForm1.ToolButtonRightAlignClick(Sender: TObject);\nbegin\n  SetCurrentParagraphAlign(taRightJustify);\nend;\n\nfunction TForm1.GetLayoutReady: boolean;\nbegin\n  result := Assigned(FTextLayout) and Assigned(FFontRenderer);\nend;\n\nfunction TForm1.GetSelLastClick: integer;\nbegin\n  if FSelLastClick = -1 then\n    result := FSelStart + FSelLength\n  else\n    result := FSelLastClick;\nend;\n\nprocedure TForm1.LayoutBrokenLinesChanged(ASender: TObject;\n  AParagraphIndex: integer; ASubBrokenStart, ASubBrokenChangedCountBefore,\n  ASubBrokenChangedCountAfter: integer; ASubBrokenTotalCountBefore,\n  ASubBrokenTotalCountAfter: integer);\nvar\n  i: Integer;\nbegin\n  if (AParagraphIndex < 0) or (AParagraphIndex > high(FRenderedParagraphs)) or\n    (FRenderedParagraphs[AParagraphIndex] = nil) then exit;\n  if ASubBrokenTotalCountBefore <> FRenderedParagraphs[AParagraphIndex].Count then\n    FreeAndNil(FRenderedParagraphs[AParagraphIndex])\n  else\n  begin\n    for i := 0 to ASubBrokenChangedCountBefore-1 do\n      FRenderedParagraphs[AParagraphIndex].Delete(ASubBrokenStart);\n    for i := 0 to ASubBrokenChangedCountAfter-1 do\n      FRenderedParagraphs[AParagraphIndex].Insert(ASubBrokenStart, nil);\n  end;\nend;\n\nprocedure TForm1.DiscardRenderedBrokenLines;\nvar\n  i: Integer;\nbegin\n  for i := 0 to high(FRenderedParagraphs) do\n    FreeAndNil(FRenderedParagraphs[i]);\nend;\n\nprocedure TForm1.LayoutCompletelyChanged;\nbegin\n  if Assigned(FTextLayout) then FTextLayout.InvalidateLayout;\n  DiscardRenderedBrokenLines;\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TForm1.LayoutParagraphDeleted(ASender: TObject;\n  AParagraphIndex: integer);\nvar\n  i: Integer;\nbegin\n  if (AParagraphIndex >= 0) and (AParagraphIndex <= high(FRenderedParagraphs)) then\n  begin\n    FreeAndNil(FRenderedParagraphs[AParagraphIndex]);\n    for i := AParagraphIndex to high(FRenderedParagraphs)-1 do\n      FRenderedParagraphs[i] := FRenderedParagraphs[i+1];\n    setlength(FRenderedParagraphs, length(FRenderedParagraphs)-1);\n  end;\nend;\n\nprocedure TForm1.LayoutParagraphMergedWithNext(ASender: TObject;\n  AParagraphIndex: integer);\nvar\n  i, insertIndex: Integer;\n  renderedBrokenLine: TBGRABitmap;\nbegin\n  insertIndex := FRenderedParagraphs[AParagraphIndex].Count;\n  for i := FRenderedParagraphs[AParagraphIndex+1].Count-1 downto 0 do\n  begin\n    renderedBrokenLine := FRenderedParagraphs[AParagraphIndex+1].Items[i];\n    FRenderedParagraphs[AParagraphIndex].Insert(insertIndex, renderedBrokenLine);\n    FRenderedParagraphs[AParagraphIndex+1].Extract(renderedBrokenLine);\n  end;\n  LayoutParagraphDeleted(ASender, AParagraphIndex+1);\nend;\n\nprocedure TForm1.LayoutParagraphSplit(ASender: TObject;\n  AParagraphIndex: integer; ASubBrokenIndex, ACharIndex: integer);\nvar\n  i, j: Integer;\n  renderedBrokenLine: TBGRABitmap;\nbegin\n  if (AParagraphIndex >= 0) and (AParagraphIndex <= high(FRenderedParagraphs)) then\n  begin\n    setlength(FRenderedParagraphs, length(FRenderedParagraphs)+1);\n    for i := high(FRenderedParagraphs) downto AParagraphIndex+2 do\n      FRenderedParagraphs[i] := FRenderedParagraphs[i-1];\n    FRenderedParagraphs[AParagraphIndex+1] := TRenderedBrokenLineList.Create;\n    for j := FRenderedParagraphs[AParagraphIndex].Count-1 downto ASubBrokenIndex+1 do\n    begin\n      renderedBrokenLine := FRenderedParagraphs[AParagraphIndex].Items[j];\n      FRenderedParagraphs[AParagraphIndex+1].Insert(0, renderedBrokenLine);\n      FRenderedParagraphs[AParagraphIndex].Extract(renderedBrokenLine);\n    end;\n  end;\nend;\n\nprocedure TForm1.SetSelLastClick(AValue: integer);\nbegin\n  if FSelFirstClick = -1 then\n    FSelFirstClick := FSelStart;\n  FSelLastClick:= AValue;\n  UpdateSelectionFromFirstLastClick;\nend;\n\nprocedure TForm1.SetSelLength(AValue: integer);\nbegin\n  if FSelLength=AValue then Exit;\n  FSelLength:=AValue;\n  FSelFirstClick:=-1;\n  FSelLastClick:=-1;\n  ShowCaret;\nend;\n\nprocedure TForm1.SetSelStart(AValue: integer);\nbegin\n  if FSelStart=AValue then Exit;\n  FSelStart:=AValue;\n  if FSelStart + FSelLength > FTextLayout.CharCount then\n    FSelLength := FTextLayout.CharCount - FSelStart;\n  FSelFirstClick:=-1;\n  FSelLastClick:=-1;\n  ShowCaret;\nend;\n\nprocedure TForm1.FlushUnicode;\nbegin\n  if not FInUnicode then exit;\n  FInUnicode := false;\n  InsertText(UnicodeCharToUTF8(FUnicodeValue));\nend;\n\nprocedure TForm1.UpdateCurrentParagraph;\nvar curAlign: TAlignment;\nbegin\n  if not LayoutReady then exit;\n\n  FCurFirstParagraph:= FTextLayout.GetParagraphAt(SelStart);\n  FCurLastParagraph:= FTextLayout.GetParagraphAt(SelStart+SelLength);\n  case FTextLayout.ParagraphAlignment[FCurFirstParagraph] of\n  btaCenter: curAlign := taCenter;\n  btaLeftJustify: curAlign := taLeftJustify;\n  btaRightJustify: curAlign:= taRightJustify;\n  btaOpposite: if FTextLayout.ParagraphRightToLeft[FCurFirstParagraph] then\n                 curAlign:= taLeftJustify else curAlign:= taRightJustify;\n  else\n    if FTextLayout.ParagraphRightToLeft[FCurFirstParagraph] then\n               curAlign:= taRightJustify else curAlign:= taLeftJustify;\n  end;\n  ToolButtonLeftAlign.Down := curAlign = taLeftJustify;\n  ToolButtonCenterAlign.Down := curAlign = taCenter;\n  ToolButtonRightAlign.Down := curAlign = taRightJustify;\nend;\n\nprocedure TForm1.UpdateSelectionFromFirstLastClick;\nbegin\n  if FSelLastClick < FSelFirstClick then\n  begin\n    FSelStart := FSelLastClick;\n    FSelLength:= FSelFirstClick-FSelLastClick;\n  end else\n  begin\n    FSelStart:= FSelFirstClick;\n    FSelLength:= FSelLastClick-FSelFirstClick;\n  end;\n  ShowCaret;\nend;\n\nprocedure TForm1.SetCurrentParagraphAlign(AAlign: TAlignment);\nvar\n  i: Integer;\n  newAlign: TBidiTextAlignment;\nbegin\n  if LayoutReady and (FCurFirstParagraph <> -1) then\n  begin\n    for i := FCurFirstParagraph to FCurLastParagraph do\n    begin\n      case AALign of\n        taLeftJustify: if FTextLayout.ParagraphRightToLeft[i] then\n                         newAlign := btaOpposite\n                         else newAlign := btaNatural;\n        taRightJustify: if FTextLayout.ParagraphRightToLeft[i] then\n                         newAlign := btaNatural\n                         else newAlign := btaOpposite;\n        else {taCenter:} newAlign := btaCenter;\n      end;\n      FTextLayout.ParagraphAlignment[i] := newAlign;\n    end;\n\n    BGRAVirtualScreen1.DiscardBitmap;\n  end;\nend;\n\nprocedure TForm1.DeleteSelection;\nbegin\n  if SelLength <> 0 then\n  begin\n    FTextLayout.DeleteText(SelStart, SelLength);\n    SelStart := SelStart + FTextLayout.IncludeNonSpacingChars(SelStart, 0);\n    SelLength:= 0;\n    ShowCaret;\n  end;\nend;\n\nprocedure TForm1.InsertText(AText: string);\nvar\n  insertCount: Integer;\nbegin\n  if not LayoutReady then exit;\n  DeleteSelection;\n  insertCount := FTextLayout.InsertText(AText, SelStart);\n  SelStart := SelStart + insertCount;\n  SelStart := SelStart + FTextLayout.IncludeNonSpacingChars(SelStart, 0);\n  ShowCaret;\nend;\n\nprocedure TForm1.ShowCaret;\nbegin\n  FBlinkCaretState := true;\n  FBlinkCaretTime:= Now;\n  BGRAVirtualScreen1.DiscardBitmap;\n  TimerBlinkCaret.Enabled := false;\n  TimerBlinkCaret.Enabled := true;\nend;\n\nprocedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  zoom, prevAvailWidth: single;\n  caretColor, selectionColor: TBGRAPixel;\n  newTime: TDateTime;\n  oldTopLeft: TPointF;\n  i: Integer;\n  startBroken, endBroken, j, countBroken: LongInt;\n  renderedBroken: TBGRABitmap;\n  renderRect: TRect;\nbegin\n  zoom := BGRAVirtualScreen1.BitmapScale * Screen.PixelsPerInch / 96;\n  if FFontRenderer = nil then\n  begin\n    if CheckBox_FreeType.Checked then\n    begin\n      FFontRenderer := TBGRAFreeTypeFontRenderer.Create;\n      FFontRenderer.FontName := 'Liberation Serif';\n    end else\n    begin\n      FFontRenderer := TLCLFontRenderer.Create;\n      FFontRenderer.FontName := {$IFDEF LINUX}'Liberation Serif'{$ELSE}'serif'{$ENDIF};\n    End;\n  end;\n  if CheckBox_ClearType.Checked then\n  begin\n    //force ClearType to RGB if disabled on the system\n    if fqFineClearType() = fqFineAntialiasing then\n      FFontRenderer.FontQuality:= fqFineClearTypeRGB\n    else\n      FFontRenderer.FontQuality:= fqSystemClearType;\n  end\n  else\n  begin\n    if CheckBox_FreeType.Checked then\n      FFontRenderer.FontQuality:= fqFineAntialiasing\n    else\n      FFontRenderer.FontQuality:= fqSystem;\n  end;\n  FFontRenderer.FontEmHeightF:= SpinEdit_FontSize.Value * zoom;\n\n  if FTextLayout = nil then\n  begin\n    FTextLayout:= TBidiTextLayout.Create(FFontRenderer, FTestText);\n    FTextLayout.ParagraphSpacingBelow:= 0.25;\n    FTextLayout.ParagraphSpacingAbove:= 0.25;\n    FTextLayout.OnParagraphDeleted:=@LayoutParagraphDeleted;\n    FTextLayout.OnParagraphMergedWithNext:=@LayoutParagraphMergedWithNext;\n    FTextLayout.OnParagraphSplit:=@LayoutParagraphSplit;\n    FTextLayout.OnBrokenLinesChanged:=@LayoutBrokenLinesChanged;\n  end else\n    FTextLayout.FontRenderer := FFontRenderer;\n\n  prevAvailWidth := FTextLayout.AvailableWidth;\n  FTextLayout.AvailableWidth := Bitmap.Width - 8*zoom;\n  FTextLayout.TopLeft := PointF(4*zoom,4*zoom);\n  if prevAvailWidth <> FTextLayout.AvailableWidth then\n    DiscardRenderedBrokenLines;\n  FTextLayout.ComputeLayoutIfNeeded;\n\n  oldTopLeft := FTextLayout.TopLeft;\n  ScrollBar1.Min:= 0;\n  ScrollBar1.Max:= round(FTextLayout.TotalTextHeight + 8*zoom);\n  ScrollBar1.PageSize:= Bitmap.Height;\n  ScrollBar1.LargeChange:= Bitmap.Height*2 div 3;\n  ScrollBar1.SmallChange:= round(FTextLayout.LineHeight);\n  if ScrollBar1.Position > max(0, ScrollBar1.Max - ScrollBar1.PageSize) then\n    ScrollBar1.Position := max(0, ScrollBar1.Max - ScrollBar1.PageSize);\n\n  caretColor := BGRA(0,0,255);\n  selectionColor := BGRA(0,0,255,128);\n\n  newTime := Now;\n  if newTime > FBlinkCaretTime + (CaretBlinkTimeMs/1000/24/60/60) then\n  begin\n    FBlinkCaretTime:= newTime;\n    FBlinkCaretState:= not FBlinkCaretState;\n  end;\n\n  FTextLayout.TopLeft := oldTopLeft + PointF(0, -ScrollBar1.Position);\n  if FBlinkCaretState and (SelLength = 0) and BGRAVirtualScreen1.Focused then\n    FTextLayout.DrawCaret(Bitmap, SelStart, BGRA(caretColor.red,caretColor.green,caretColor.blue,140), BGRA(caretColor.red,caretColor.green,caretColor.blue,100));\n\n  for i := FTextLayout.ParagraphCount to high(FRenderedParagraphs) do\n    FreeAndNil(FRenderedParagraphs[i]);\n  setlength(FRenderedParagraphs, FTextLayout.ParagraphCount);\n\n  for i := 0 to FTextLayout.ParagraphCount-1 do\n  begin\n    if FRenderedParagraphs[i] = nil then\n      FRenderedParagraphs[i] := TRenderedBrokenLineList.Create;\n    startBroken := FTextLayout.ParagraphStartBrokenLine[i];\n    endBroken := FTextLayout.ParagraphEndBrokenLine[i];\n    for j := startBroken to endBroken - 1 do\n    begin\n      if j - startBroken >= FRenderedParagraphs[i].Count then\n        FRenderedParagraphs[i].Add(nil);\n      if j - startBroken < FRenderedParagraphs[i].Count then\n      begin\n        renderRect := RectWithSize(0, round(oldTopLeft.y + FTextLayout.BrokenLineRectF[j].Top) - ScrollBar1.Position,\n                                   Bitmap.Width, ceil(FTextLayout.BrokenLineRectF[j].Height));\n        if renderRect.IntersectsWith(Bitmap.ClipRect) then\n        begin\n          if FRenderedParagraphs[i].Items[j - startBroken] = nil then\n          begin\n            renderedBroken := TBGRABitmap.Create(Bitmap.Width,\n            ceil(FTextLayout.BrokenLineRectF[j].Height), BGRAVirtualScreen1.Color);\n            FTextLayout.TopLeft := PointF(oldTopLeft.x, -FTextLayout.BrokenLineRectF[j].Top);\n            FTextLayout.DrawBrokenLines(renderedBroken, j, j+1);\n            FRenderedParagraphs[i].Items[j - startBroken] := renderedBroken;\n          end;\n          Bitmap.PutImage(renderRect.Left, renderRect.Top,\n            FRenderedParagraphs[i].Items[j - startBroken], dmSet);\n        end else\n          FRenderedParagraphs[i].Items[j - startBroken] := nil;\n      end;\n    end;\n    countBroken := endBroken - startBroken;\n    while FRenderedParagraphs[i].Count > countBroken do\n      FRenderedParagraphs[i].Delete(countBroken);\n  end;\n  FTextLayout.TopLeft := oldTopLeft + PointF(0, -ScrollBar1.Position);\n\n  FTextLayout.DrawSelection(Bitmap, SelStart, SelStart+SelLength, selectionColor, BGRA(0,0,192),1);\n\n  if FBlinkCaretState and (SelLength = 0) then\n    FTextLayout.DrawCaret(Bitmap, SelStart, BGRA(caretColor.red,caretColor.green,caretColor.blue,140), BGRA(caretColor.red,caretColor.green,caretColor.blue,100));\n\n  UpdateCurrentParagraph;\n  FTextLayout.TopLeft := oldTopLeft;\n  //let some time for events\n  TimerBlinkCaret.Enabled := false;\n  TimerBlinkCaret.Enabled := true;\nend;\n\nprocedure TForm1.CheckBox_ClearTypeChange(Sender: TObject);\nbegin\n  LayoutCompletelyChanged;\nend;\n\nprocedure TForm1.CheckBox_FreeTypeChange(Sender: TObject);\nbegin\n  LayoutCompletelyChanged;\n  FreeAndNil(FFontRenderer);\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseDown(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nvar\n  index: Integer;\nbegin\n  BGRAVirtualScreen1.SetFocus;\n  if Button = mbLeft then\n  begin\n    index := FTextLayout.GetCharIndexAt(PointF(X, Y) * BGRAVirtualScreen1.BitmapScale\n               + PointF(0,ScrollBar1.Position));\n    FSelFirstClick:= index;\n    FSelLastClick:= index;\n    UpdateSelectionFromFirstLastClick;\n  end;\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseMove(Sender: TObject;\n  Shift: TShiftState; X, Y: Integer);\nvar\n  index: Integer;\nbegin\n  if (FSelFirstClick <> -1) and (ssLeft in Shift) then\n  begin\n    index := FTextLayout.GetCharIndexAt(PointF(X,Y) * BGRAVirtualScreen1.BitmapScale\n               + PointF(0,ScrollBar1.Position));\n    FSelLastClick:= index;\n    UpdateSelectionFromFirstLastClick;\n  end;\nend;\n\nprocedure TForm1.BGRAVirtualScreen1MouseWheel(Sender: TObject;\n  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;\n  var Handled: Boolean);\nbegin\n  ScrollBar1.Position := ScrollBar1.Position - (WheelDelta * ScrollBar1.SmallChange div 120);\nend;\n\ninitialization\n\n  EasyLazFreeType.FontCollection := TFreeTypeFontCollection.Create;\n  EasyLazFreeType.FontCollection.AddFolder(ExtractFilePath(Application.ExeName)\n     {$IFDEF DARWIN} + '../../../' {$ENDIF});\n\nfinalization\n\n  FreeAndNil(EasyLazFreeType.FontCollection);\n\nend.\n\n"
  },
  {
    "path": "test/testcanvas2d/testcanvas2D.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <Flags>\n        <CompatibilityMode Value=\"True\"/>\n      </Flags>\n      <Title Value=\"testcanvas2D\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <XPManifest>\n        <DpiAware Value=\"True/PM_V2\"/>\n      </XPManifest>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\" Active=\"Default\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n        <MinVersion Major=\"1\" Release=\"9\" Build=\"7\" Valid=\"True\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"bgrabitmappack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"60\">\n      <Unit0>\n        <Filename Value=\"testcanvas2D.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"31\" Y=\"2\"/>\n        <UsageCount Value=\"111\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n        <IsVisibleTab Value=\"True\"/>\n        <TopLine Value=\"1019\"/>\n        <CursorPos X=\"37\" Y=\"1028\"/>\n        <UsageCount Value=\"111\"/>\n        <Loaded Value=\"True\"/>\n        <LoadedDesigner Value=\"True\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"bgracanvas2d.pas\"/>\n        <TopLine Value=\"465\"/>\n        <CursorPos X=\"18\" Y=\"475\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit2>\n      <Unit3>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgratransform.pas\"/>\n        <TopLine Value=\"62\"/>\n        <CursorPos X=\"15\" Y=\"41\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit3>\n      <Unit4>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgrapolygon.pas\"/>\n        <TopLine Value=\"34\"/>\n        <CursorPos X=\"18\" Y=\"99\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit4>\n      <Unit5>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <TopLine Value=\"1619\"/>\n        <CursorPos Y=\"1639\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit5>\n      <Unit6>\n        <Filename Value=\"D:\\lazarus\\lcl\\graphics.pp\"/>\n        <TopLine Value=\"34\"/>\n        <CursorPos X=\"3\" Y=\"52\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit6>\n      <Unit7>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <TopLine Value=\"708\"/>\n        <CursorPos X=\"18\" Y=\"715\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit7>\n      <Unit8>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgrapen.pas\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos X=\"10\" Y=\"32\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit8>\n      <Unit9>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <TopLine Value=\"327\"/>\n        <CursorPos Y=\"342\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit9>\n      <Unit10>\n        <Filename Value=\"..\\lazpaintsvn\\bgrabitmap\\bgracanvas2d.pas\"/>\n        <CursorPos X=\"17\" Y=\"12\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit10>\n      <Unit11>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1179\"/>\n        <CursorPos Y=\"1184\"/>\n        <UsageCount Value=\"34\"/>\n      </Unit11>\n      <Unit12>\n        <Filename Value=\"..\\bgrabitmap\\bgradefaultbitmap.pas\"/>\n        <UnitName Value=\"BGRADefaultBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"991\"/>\n        <CursorPos X=\"25\" Y=\"1018\"/>\n        <UsageCount Value=\"27\"/>\n      </Unit12>\n      <Unit13>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmaptypes.pas\"/>\n        <UnitName Value=\"BGRABitmapTypes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"55\"/>\n        <CursorPos Y=\"80\"/>\n        <UsageCount Value=\"30\"/>\n      </Unit13>\n      <Unit14>\n        <Filename Value=\"..\\bgrabitmap\\bgratransform.pas\"/>\n        <UnitName Value=\"BGRATransform\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"28\"/>\n      </Unit14>\n      <Unit15>\n        <Filename Value=\"..\\bgrabitmap\\bgrapath.pas\"/>\n        <UnitName Value=\"BGRAPath\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"2056\"/>\n        <CursorPos Y=\"2078\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit15>\n      <Unit16>\n        <Filename Value=\"..\\bgrabitmap\\bgracanvas.pas\"/>\n        <UnitName Value=\"BGRACanvas\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"373\"/>\n        <CursorPos Y=\"395\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit16>\n      <Unit17>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygon.pas\"/>\n        <UnitName Value=\"BGRAPolygon\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"623\"/>\n        <CursorPos Y=\"636\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit17>\n      <Unit18>\n        <Filename Value=\"..\\bgrabitmap\\bgrafillinfo.pas\"/>\n        <UnitName Value=\"BGRAFillInfo\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1040\"/>\n        <CursorPos X=\"10\" Y=\"1059\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit18>\n      <Unit19>\n        <Filename Value=\"..\\bgrabitmap\\bgrapolygonaliased.pas\"/>\n        <TopLine Value=\"895\"/>\n        <CursorPos Y=\"907\"/>\n        <UsageCount Value=\"5\"/>\n      </Unit19>\n      <Unit20>\n        <Filename Value=\"..\\bgrabitmap\\bgrapen.pas\"/>\n        <UnitName Value=\"BGRAPen\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1086\"/>\n        <CursorPos X=\"13\" Y=\"1103\"/>\n        <UsageCount Value=\"26\"/>\n      </Unit20>\n      <Unit21>\n        <Filename Value=\"..\\bgrabitmap\\bgraresample.pas\"/>\n        <TopLine Value=\"602\"/>\n        <CursorPos X=\"45\" Y=\"618\"/>\n        <UsageCount Value=\"4\"/>\n      </Unit21>\n      <Unit22>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-base\\src\\base64.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"52\"/>\n        <CursorPos X=\"24\" Y=\"33\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit22>\n      <Unit23>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpimage.pp\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"115\"/>\n        <CursorPos X=\"17\" Y=\"133\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit23>\n      <Unit24>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\packages\\fcl-image\\src\\fpimage.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"86\"/>\n        <CursorPos X=\"3\" Y=\"85\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit24>\n      <Unit25>\n        <Filename Value=\"..\\bgrabitmap\\bgragradientscanner.pas\"/>\n        <UnitName Value=\"BGRAGradientScanner\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"1477\"/>\n        <CursorPos Y=\"1501\"/>\n        <UsageCount Value=\"22\"/>\n      </Unit25>\n      <Unit26>\n        <Filename Value=\"..\\bgrabitmap\\bgragradients.pas\"/>\n        <UnitName Value=\"BGRAGradients\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"31\"/>\n        <UsageCount Value=\"22\"/>\n      </Unit26>\n      <Unit27>\n        <Filename Value=\"..\\bgrabitmap\\bgrablend.pas\"/>\n        <UnitName Value=\"BGRABlend\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"361\"/>\n        <CursorPos X=\"3\" Y=\"366\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit27>\n      <Unit28>\n        <Filename Value=\"..\\bgrabitmap\\bgrafilters.pas\"/>\n        <UnitName Value=\"BGRAFilters\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"528\"/>\n        <CursorPos X=\"14\" Y=\"551\"/>\n        <UsageCount Value=\"16\"/>\n      </Unit28>\n      <Unit29>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\objpas\\classes\\classesh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"14\"/>\n        <CursorPos X=\"4\" Y=\"32\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit29>\n      <Unit30>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpash.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"259\"/>\n        <CursorPos X=\"8\" Y=\"274\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit30>\n      <Unit31>\n        <Filename Value=\"D:\\lazarus\\fpc\\2.4.2\\source\\rtl\\inc\\objpas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"782\"/>\n        <CursorPos X=\"10\" Y=\"785\"/>\n        <UsageCount Value=\"8\"/>\n      </Unit31>\n      <Unit32>\n        <Filename Value=\"..\\bgrabitmap\\blurfast.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"22\" Y=\"45\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit32>\n      <Unit33>\n        <Filename Value=\"..\\bgrabitmap\\blurnormal.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"97\"/>\n        <CursorPos Y=\"115\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit33>\n      <Unit34>\n        <Filename Value=\"..\\bgrabitmap\\bgracompressablebitmap.pas\"/>\n        <UnitName Value=\"BGRACompressableBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit34>\n      <Unit35>\n        <Filename Value=\"..\\bgrabitmap\\density256.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"120\"/>\n        <CursorPos X=\"10\" Y=\"131\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit35>\n      <Unit36>\n        <Filename Value=\"..\\bgrabitmap\\bgragrayscalemask.pas\"/>\n        <UnitName Value=\"BGRAGrayscaleMask\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"11\"/>\n      </Unit36>\n      <Unit37>\n        <Filename Value=\"..\\bgrabitmap\\bgracustombitmap.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"224\"/>\n        <CursorPos X=\"36\" Y=\"248\"/>\n        <UsageCount Value=\"9\"/>\n      </Unit37>\n      <Unit38>\n        <Filename Value=\"..\\bgrabitmap\\geometrytypes.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"212\"/>\n        <CursorPos X=\"3\" Y=\"234\"/>\n        <UsageCount Value=\"17\"/>\n      </Unit38>\n      <Unit39>\n        <Filename Value=\"..\\bgrabitmap\\bgrasvg.pas\"/>\n        <UnitName Value=\"BGRASVG\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"73\" Y=\"11\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit39>\n      <Unit40>\n        <Filename Value=\"..\\bgrabitmap\\bgrasvgshapes.pas\"/>\n        <UnitName Value=\"BGRASVGShapes\"/>\n        <EditorIndex Value=\"-1\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit40>\n      <Unit41>\n        <Filename Value=\"..\\bgrabitmap\\bgrasvgtype.pas\"/>\n        <UnitName Value=\"BGRASVGType\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"723\"/>\n        <CursorPos X=\"25\" Y=\"755\"/>\n        <UsageCount Value=\"15\"/>\n      </Unit41>\n      <Unit42>\n        <Filename Value=\"..\\..\\bgracontrols_svn\\bgraresizespeedbutton.pas\"/>\n        <UnitName Value=\"BGRAResizeSpeedButton\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"32\"/>\n        <CursorPos X=\"7\" Y=\"54\"/>\n        <UsageCount Value=\"14\"/>\n      </Unit42>\n      <Unit43>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengl.pas\"/>\n        <UnitName Value=\"BGRAOpenGL\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"36\" Y=\"31\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit43>\n      <Unit44>\n        <Filename Value=\"..\\bgrabitmap\\bgraopengltype.pas\"/>\n        <UnitName Value=\"BGRAOpenGLType\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"45\"/>\n        <CursorPos Y=\"45\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit44>\n      <Unit45>\n        <Filename Value=\"..\\bgrabitmap\\bgragraphics.pas\"/>\n        <UnitName Value=\"BGRAGraphics\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"29\"/>\n        <CursorPos Y=\"59\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit45>\n      <Unit46>\n        <Filename Value=\"C:\\lazarus64\\fpc\\3.0.0\\source\\rtl\\objpas\\classes\\classesh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"72\"/>\n        <CursorPos X=\"3\" Y=\"94\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit46>\n      <Unit47>\n        <Filename Value=\"..\\bgrabitmap\\bgraunits.pas\"/>\n        <UnitName Value=\"BGRAUnits\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"37\"/>\n        <CursorPos X=\"14\" Y=\"58\"/>\n        <UsageCount Value=\"13\"/>\n      </Unit47>\n      <Unit48>\n        <Filename Value=\"C:\\lazarus64\\fpc\\3.0.0\\source\\rtl\\objpas\\sysutils\\sysstrh.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"56\"/>\n        <CursorPos X=\"10\" Y=\"78\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit48>\n      <Unit49>\n        <Filename Value=\"C:\\lazarus64\\fpc\\3.0.0\\source\\rtl\\objpas\\sysutils\\sysstr.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"162\"/>\n        <CursorPos X=\"3\" Y=\"164\"/>\n        <UsageCount Value=\"12\"/>\n      </Unit49>\n      <Unit50>\n        <Filename Value=\"C:\\lazarus64\\components\\lazutils\\laz2_xmlread.pas\"/>\n        <UnitName Value=\"laz2_XMLRead\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"4150\"/>\n        <CursorPos Y=\"4172\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit50>\n      <Unit51>\n        <Filename Value=\"..\\bgrabitmap\\bgrabitmap.pas\"/>\n        <UnitName Value=\"BGRABitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"62\"/>\n        <CursorPos X=\"9\" Y=\"84\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit51>\n      <Unit52>\n        <Filename Value=\"..\\bgrabitmap\\bgrawinbitmap.pas\"/>\n        <UnitName Value=\"BGRAWinBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"82\"/>\n        <CursorPos Y=\"100\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit52>\n      <Unit53>\n        <Filename Value=\"..\\bgrabitmap\\bgralclbitmap.pas\"/>\n        <UnitName Value=\"BGRALCLBitmap\"/>\n        <EditorIndex Value=\"-1\"/>\n        <CursorPos X=\"3\" Y=\"13\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit53>\n      <Unit54>\n        <Filename Value=\"C:\\lazarus64\\fpc\\3.0.0\\source\\rtl\\inc\\objpas.inc\"/>\n        <EditorIndex Value=\"-1\"/>\n        <TopLine Value=\"272\"/>\n        <CursorPos X=\"36\" Y=\"278\"/>\n        <UsageCount Value=\"10\"/>\n      </Unit54>\n      <Unit55>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgravectorize.pas\"/>\n        <UnitName Value=\"BGRAVectorize\"/>\n        <EditorIndex Value=\"2\"/>\n        <TopLine Value=\"1803\"/>\n        <CursorPos X=\"40\" Y=\"1812\"/>\n        <UsageCount Value=\"25\"/>\n        <Loaded Value=\"True\"/>\n      </Unit55>\n      <Unit56>\n        <Filename Value=\"C:\\lazarus\\lcl\\graphics.pp\"/>\n        <UnitName Value=\"Graphics\"/>\n        <EditorIndex Value=\"5\"/>\n        <TopLine Value=\"575\"/>\n        <CursorPos X=\"14\" Y=\"591\"/>\n        <UsageCount Value=\"25\"/>\n        <Loaded Value=\"True\"/>\n      </Unit56>\n      <Unit57>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgratext.pas\"/>\n        <UnitName Value=\"BGRAText\"/>\n        <EditorIndex Value=\"3\"/>\n        <TopLine Value=\"28\"/>\n        <CursorPos X=\"11\" Y=\"44\"/>\n        <UsageCount Value=\"25\"/>\n        <Loaded Value=\"True\"/>\n      </Unit57>\n      <Unit58>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgramsegui_text.inc\"/>\n        <EditorIndex Value=\"4\"/>\n        <CursorPos X=\"7\" Y=\"26\"/>\n        <UsageCount Value=\"25\"/>\n        <Loaded Value=\"True\"/>\n      </Unit58>\n      <Unit59>\n        <Filename Value=\"..\\..\\bgrabitmap\\bgracanvas2d.pas\"/>\n        <UnitName Value=\"BGRACanvas2D\"/>\n        <EditorIndex Value=\"1\"/>\n        <TopLine Value=\"193\"/>\n        <CursorPos X=\"3\" Y=\"209\"/>\n        <UsageCount Value=\"10\"/>\n        <Loaded Value=\"True\"/>\n      </Unit59>\n    </Units>\n    <JumpHistory Count=\"30\" HistoryIndex=\"29\">\n      <Position1>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"159\" Column=\"5\" TopLine=\"137\"/>\n      </Position1>\n      <Position2>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"170\" Column=\"17\" TopLine=\"162\"/>\n      </Position2>\n      <Position3>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"249\" Column=\"21\" TopLine=\"227\"/>\n      </Position3>\n      <Position4>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"257\" Column=\"9\" TopLine=\"235\"/>\n      </Position4>\n      <Position5>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"259\" Column=\"7\" TopLine=\"237\"/>\n      </Position5>\n      <Position6>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"301\" Column=\"24\" TopLine=\"279\"/>\n      </Position6>\n      <Position7>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"304\" Column=\"11\" TopLine=\"282\"/>\n      </Position7>\n      <Position8>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"343\" Column=\"26\" TopLine=\"321\"/>\n      </Position8>\n      <Position9>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"357\" Column=\"26\" TopLine=\"336\"/>\n      </Position9>\n      <Position10>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"851\" Column=\"24\" TopLine=\"839\"/>\n      </Position10>\n      <Position11>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"68\" Column=\"15\" TopLine=\"56\"/>\n      </Position11>\n      <Position12>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"811\" Column=\"41\" TopLine=\"791\"/>\n      </Position12>\n      <Position13>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"68\" Column=\"15\" TopLine=\"57\"/>\n      </Position13>\n      <Position14>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"343\" Column=\"45\" TopLine=\"330\"/>\n      </Position14>\n      <Position15>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"357\" Column=\"45\" TopLine=\"336\"/>\n      </Position15>\n      <Position16>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"793\" Column=\"67\" TopLine=\"782\"/>\n      </Position16>\n      <Position17>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"68\" Column=\"64\" TopLine=\"68\"/>\n      </Position17>\n      <Position18>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"212\" Column=\"32\" TopLine=\"200\"/>\n      </Position18>\n      <Position19>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"333\" Column=\"18\" TopLine=\"320\"/>\n      </Position19>\n      <Position20>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"55\" Column=\"63\" TopLine=\"53\"/>\n      </Position20>\n      <Position21>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"199\" Column=\"29\" TopLine=\"187\"/>\n      </Position21>\n      <Position22>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"286\" Column=\"18\" TopLine=\"273\"/>\n      </Position22>\n      <Position23>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"55\" Column=\"63\" TopLine=\"51\"/>\n      </Position23>\n      <Position24>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"335\" Column=\"3\" TopLine=\"332\"/>\n      </Position24>\n      <Position25>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"200\" Column=\"32\" TopLine=\"186\"/>\n      </Position25>\n      <Position26>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"41\" Column=\"15\" TopLine=\"28\"/>\n      </Position26>\n      <Position27>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"219\" Column=\"3\" TopLine=\"200\"/>\n      </Position27>\n      <Position28>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"41\" Column=\"15\" TopLine=\"28\"/>\n      </Position28>\n      <Position29>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"224\" Column=\"3\" TopLine=\"198\"/>\n      </Position29>\n      <Position30>\n        <Filename Value=\"unit1.pas\"/>\n        <Caret Line=\"74\" Column=\"15\" TopLine=\"63\"/>\n      </Position30>\n    </JumpHistory>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"testcanvas2D\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <DebugInfoType Value=\"dsDwarf3\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testcanvas2d/testcanvas2D.lpr",
    "content": "program testcanvas2D;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, bgracontrols, Unit1, bgrabitmappack;\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testcanvas2d/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 567\n  Height = 955\n  Top = 83\n  Width = 1600\n  Caption = 'Test Canvas2D'\n  ClientHeight = 955\n  ClientWidth = 1600\n  DesignTimePPI = 240\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  OnMouseLeave = FormMouseLeave\n  OnMouseMove = FormMouseMove\n  OnPaint = FormPaint\n  LCLVersion = '3.2.0.0'\n  object VirtualScreen: TBGRAVirtualScreen\n    Left = 0\n    Height = 875\n    Top = 80\n    Width = 1600\n    OnRedraw = VirtualScreenRedraw\n    Align = alClient\n    Alignment = taLeftJustify\n    Color = clBtnFace\n    ParentColor = False\n    TabOrder = 0\n    OnMouseLeave = VirtualScreenMouseLeave\n    OnMouseMove = VirtualScreenMouseMove\n  end\n  object Panel1: TPanel\n    Left = 0\n    Height = 80\n    Top = 0\n    Width = 1600\n    Align = alTop\n    ClientHeight = 80\n    ClientWidth = 1600\n    TabOrder = 1\n    object SpinEdit1: TSpinEdit\n      Left = 8\n      Height = 49\n      Top = 14\n      Width = 148\n      Font.Height = -30\n      MaxValue = 23\n      MinValue = 1\n      OnChange = SpinEdit1Change\n      ParentFont = False\n      TabOrder = 0\n      Value = 1\n    end\n    object CheckBox_PixelCentered: TCheckBox\n      Left = 175\n      Height = 45\n      Top = 16\n      Width = 392\n      Caption = 'Pixel-centered coordinates'\n      Font.Height = -30\n      ParentFont = False\n      TabOrder = 1\n      OnChange = CheckBox_PixelCenteredChange\n    end\n    object Button_toDataURL: TButton\n      Left = 608\n      Height = 55\n      Top = 8\n      Width = 188\n      Caption = 'toDataURL'\n      TabOrder = 2\n      OnClick = Button_toDataURLClick\n    end\n    object CheckBox_Antialiasing: TCheckBox\n      Left = 828\n      Height = 45\n      Top = 16\n      Width = 190\n      Caption = 'Antialiasing'\n      Checked = True\n      State = cbChecked\n      TabOrder = 3\n      OnChange = CheckBox_AntialiasingChange\n    end\n  end\n  object Timer1: TTimer\n    OnTimer = Timer1Timer\n    Left = 155\n    Top = 230\n  end\n  object SaveDialog1: TSaveDialog\n    Title = 'Save as HTML file...'\n    DefaultExt = '.html'\n    Filter = 'HTML file (*.html);*.html'\n    Left = 378\n    Top = 238\n  end\nend\n"
  },
  {
    "path": "test/testcanvas2d/unit1.pas",
    "content": "unit Unit1; \n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Spin,\n  ExtCtrls, StdCtrls, BGRAVirtualScreen, BGRABitmap, BGRAClasses, BGRABitmapTypes,\n  BGRACanvas2D;\n\nconst\n  timeGrain = 15/1000/60/60/24;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    Button_toDataURL: TButton;\n    CheckBox_Antialiasing: TCheckBox;\n    CheckBox_PixelCentered: TCheckBox;\n    Panel1: TPanel;\n    SaveDialog1: TSaveDialog;\n    SpinEdit1: TSpinEdit;\n    VirtualScreen: TBGRAVirtualScreen;\n    Timer1: TTimer;\n    procedure Button_toDataURLClick(Sender: TObject);\n    procedure CheckBox_AntialiasingChange(Sender: TObject);\n    procedure CheckBox_PixelCenteredChange(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure FormMouseLeave(Sender: TObject);\n    procedure FormMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);\n    procedure FormPaint(Sender: TObject);\n    procedure SpinEdit1Change(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n    procedure VirtualScreenMouseLeave(Sender: TObject);\n    procedure VirtualScreenMouseMove(Sender: TObject; {%H-}Shift: TShiftState; X,\n      Y: Integer);\n    procedure VirtualScreenRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n  private\n    { private declarations }\n    mx,my: single;\n    lastTime: TDateTime;\n    timeGrainAcc: double;\n    test4pos, test5pos, Test13pos, test16pos, test17pos, test18pos, test19pos, test23pos: integer;\n    img,abelias: TBGRABitmap;\n    procedure UpdateIn(ms: integer);\n    procedure UseVectorizedFont(ctx: TBGRACanvas2D; AUse: boolean);\n  public\n    { public declarations }\n    procedure Test1(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test2(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\n    procedure Test3(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\n    procedure Test4(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n    procedure Test5(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n    procedure Test6(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test7(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test8(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test9(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test10(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test11(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test12(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test13(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test14(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test15(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n    procedure Test16(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single; grainElapse: integer);\n    procedure Test17(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n    procedure Test18(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n    procedure Test19(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n    procedure Test20(ctx: TBGRACanvas2D; AWidth, AHeight: single; AVectorizedFont: boolean);\n    procedure Test22(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\n    procedure Test23(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\n  end;\n\nvar\n  Form1: TForm1; \n\nimplementation\n\nuses BGRAGradientScanner, Math, BGRASVG, BGRAVectorize;\n\n{$R *.lfm}\n\n{ TForm1 }\n\nprocedure TForm1.FormPaint(Sender: TObject);\nbegin\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  img := TBGRABitmap.Create(ResourceFile('pteRaz.jpg'));\n  abelias := TBGRABitmap.Create(ResourceFile('abelias.png'));\n  mx := -1000;\n  my := -1000;\n  lastTime := Now;\n  VirtualScreen.Color := $d0d0d0;\nend;\n\nprocedure TForm1.CheckBox_PixelCenteredChange(Sender: TObject);\nbegin\n  VirtualScreen.DiscardBitmap;\nend;\n\nprocedure TForm1.Button_toDataURLClick(Sender: TObject);\nvar html: string;\n    t: textfile;\nbegin\n  if SaveDialog1.Execute then\n  begin\n    html := '<html><body><img src=\"';\n    html := html + VirtualScreen.Bitmap.Canvas2D.toDataURL;\n    html := html + '\"/></body></html>';\n    assignfile(t,SaveDialog1.FileName);\n    rewrite(t);\n    write(t,html);\n    closefile(t);\n    MessageDlg('toDataURL','Output: '+ SaveDialog1.FileName,mtInformation,[mbOK],0);\n  end;\nend;\n\nprocedure TForm1.CheckBox_AntialiasingChange(Sender: TObject);\nbegin\n  VirtualScreen.DiscardBitmap;\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  img.Free;\n  abelias.free;\nend;\n\nprocedure TForm1.FormMouseLeave(Sender: TObject);\nbegin\n\nend;\n\nprocedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nbegin\n\nend;\n\nprocedure TForm1.SpinEdit1Change(Sender: TObject);\nbegin\n  VirtualScreen.DiscardBitmap;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nbegin\n  Timer1.Enabled := false;\n  VirtualScreen.DiscardBitmap;\nend;\n\nprocedure TForm1.VirtualScreenMouseLeave(Sender: TObject);\nbegin\n  mx := -1000;\n  my := -1000;\nend;\n\nprocedure TForm1.VirtualScreenMouseMove(Sender: TObject; Shift: TShiftState; X,\n  Y: Integer);\nvar\n  zoom: single;\nbegin\n  zoom := PixelsPerInch / 96;\n  mx := X / zoom;\n  my := Y / zoom;\n  if (SpinEdit1.Value = 1) and not Timer1.Enabled then UpdateIn(10);\nend;\n\nprocedure TForm1.VirtualScreenRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar ctx: TBGRACanvas2D;\n  grainElapse: integer;\n  newTime: TDateTime;\n  zoom, w, h: single;\nbegin\n  newTime := Now;\n  IncF(timeGrainAcc, (newTime - lastTime)/timeGrain);\n  lastTime := newTime;\n  if timeGrainAcc < 1 then timeGrainAcc := 1;\n  if timeGrainAcc > 50 then timeGrainAcc := 50;\n  grainElapse := trunc(timeGrainAcc);\n  DecF(timeGrainAcc, grainElapse);\n\n  ctx := Bitmap.Canvas2D;\n  ctx.antialiasing := CheckBox_Antialiasing.Checked;\n  ctx.pixelCenteredCoordinates := CheckBox_PixelCentered.Checked;\n  ctx.save;\n  zoom := PixelsPerInch / 96;\n  ctx.scale(zoom);\n  w := ctx.Width / zoom;\n  h := ctx.Height / zoom;\n  case SpinEdit1.Value of\n    1: Test1(ctx, w, h);\n    2: Test2(ctx, w, h, zoom);\n    3: Test3(ctx, w, h, zoom);\n    4: Test4(ctx, w, h, grainElapse);\n    5: Test5(ctx, w, h, grainElapse);\n    6: Test6(ctx, w, h);\n    7: Test7(ctx, w, h);\n    8: Test8(ctx, w, h);\n    9: Test9(ctx, w, h);\n   10: Test10(ctx, w, h);\n   11: Test11(ctx, w, h);\n   12: Test12(ctx, w, h);\n   13: Test13(ctx, w, h);\n   14: Test14(ctx, w, h);\n   15: Test15(ctx, w, h);\n   16: Test16(ctx, w, h, zoom, grainElapse);\n   17: Test17(ctx, w, h, grainElapse);\n   18: Test18(ctx, w, h, grainElapse);\n   19: Test19(ctx, w, h, grainElapse);\n   20: Test20(ctx, w, h, false);\n   21: Test20(ctx, w, h, true);\n   22: Test22(ctx, w, h, zoom);\n   23: Test23(ctx, w, h, grainElapse);\n  end;\n  ctx.restore;\nend;\n\nprocedure TForm1.UpdateIn(ms: integer);\nbegin\n  Timer1.Interval := ms;\n  Timer1.Enabled := false;\n  Timer1.Enabled := true;\nend;\n\nprocedure TForm1.UseVectorizedFont(ctx: TBGRACanvas2D; AUse: boolean);\nbegin\n  if AUse and not (ctx.fontRenderer is TBGRAVectorizedFontRenderer) then\n    ctx.fontRenderer := TBGRAVectorizedFontRenderer.Create;\n  if not AUse and (ctx.fontRenderer is TBGRAVectorizedFontRenderer) then\n    ctx.fontRenderer := nil;\nend;\n\nprocedure TForm1.Test1(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n\n  procedure DrawShape(colors: TBGRACustomGradient);\n  begin\n    ctx.fillStyle('rgb(1000,1000,1000)');  //out of bounds so it is saturated to 255,255,255\n    ctx.fillRect (0, 0, AWidth, AHeight);\n    ctx.fillStyle(ctx.createLinearGradient(0,0,20,0,colors));\n    ctx.shadowOffset := PointF(10,10);\n    ctx.shadowColor('rgba(0,0,0,0.5)');\n    ctx.shadowBlur := 4;\n    ctx.fillRect (mx-100, my-100, 200, 200);\n  end;\n\nvar\n  colors: TBGRACustomGradient;\n\n\nbegin\n  if (mx < 0) or (my < 0) then\n  begin\n    mx := HalfUp(AWidth/2);\n    my := HalfUp(AHeight/2);\n  end;\n\n  ctx.save;\n  ctx.beginPath;\n  ctx.moveTo(0,0);\n  ctx.lineTo(AWidth,0);\n  ctx.lineTo(0,AHeight);\n  ctx.clip;\n  colors := TBGRAMultiGradient.Create([BGRA(0,255,0),BGRA(0,192,128),BGRA(0,255,0)],[0,0.5,1],True,True);\n  DrawShape(colors);\n  colors.Free;\n  ctx.restore;\n\n  ctx.save;\n  ctx.beginPath;\n  ctx.moveTo(AWidth,AHeight);\n  ctx.lineTo(0,AHeight);\n  ctx.lineTo(AWidth,0);\n  ctx.clip;\n  colors := TBGRAMultiGradient.Create([BGRA(0,255,255),BGRA(0,192,128),BGRA(0,255,255)],[0,0.5,1],True,True);\n  DrawShape(colors);\n  colors.Free;\n  ctx.restore;\nend;\n\nprocedure TForm1.Test2(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\nvar layer: TBGRABitmap;\nbegin\n  layer := TBGRABitmap.Create(ctx.Surface.Width, ctx.Surface.Height);\n  with layer.Canvas2D do\n  begin\n    scale(AZoom);\n    pixelCenteredCoordinates:= ctx.pixelCenteredCoordinates;\n    antialiasing:= ctx.antialiasing;\n\n    fillStyle('rgb(1000,0,0)'); // fond de couleur rouge\n    beginPath;\n    roundRect(25,25,AWidth-50,AHeight-50,25); // remplissage d un carré 250x250\n    fill;\n\n    clearRect(AWidth-mx-25,AHeight-my-25,50,50); // effacement d un carré\n\n    beginPath;\n    arc(mx,my,30,0,2*Pi);\n    clearPath;\n\n    strokeStyle ('rgb(0,0,1000)'); // contour de couleur bleue\n    strokeRect(100,100,20,20); // contour d un carré\n\n    shadowOffset := PointF(3,3);\n    shadowColor('rgba(0,0,0,0.5)');\n    shadowBlur := 4;\n\n    beginPath;\n    lineWidth := 3;\n    moveTo(20,160);\n    lineTo(200,160);\n    lineStyle([3,1]);\n    stroke;\n\n    beginPath;\n    moveTo(20,180);\n    lineTo(220,180);\n    lineTo(240,160);\n    lineStyle([1,1,2,2]);\n    stroke;\n  end;\n  ctx.surface.PutImage(0,0,layer,dmDrawWithTransparency);\n  layer.Free;\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test3(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\nbegin\n  ctx.fillStyle ('rgb(1000,1000,1000)');\n  ctx.fillRect (0, 0, AWidth, AHeight);\n  // Triangle plein sans bordure\n  ctx.beginPath();\n  ctx.moveTo(100,100);\n  ctx.lineTo(150,30);\n  ctx.lineTo(230,150);\n  ctx.closePath();\n  if ctx.isPointInPath(mx*AZoom+0.5,my*AZoom+0.5) then\n    ctx.fillStyle ('rgb(1000,192,192)')\n  else\n    ctx.fillStyle ('rgb(1000,0,0)');\n  ctx.fill();\n  // Triangle plein avec bordure\n  ctx.fillStyle ('rgb(0,1000,0)');\n  ctx.strokeStyle ('rgb(0,0,1000)');\n  ctx.lineWidth := 8;\n  ctx.beginPath();\n  ctx.moveTo(50,100);\n  ctx.lineTo(50,220);\n  ctx.lineTo(210,200);\n  ctx.closePath();\n  if ctx.isPointInPath(mx*AZoom+0.5,my*AZoom+0.5) then\n    ctx.fillStyle ('rgb(192,1000,192)')\n  else\n    ctx.fillStyle ('rgb(0,1000,0)');\n  ctx.fill();\n  ctx.stroke();\n  // Triangle plein avec bordure\n  UpdateIn(50);\nend;\n\nprocedure TForm1.Test4(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nvar angle: single;\n    p0,p1,p2: TPointF;\nbegin\n  inc(test4pos, grainElapse);\n  angle := test4pos*2*Pi/400;\n  ctx.translate((AWidth-300)/2,(AHeight-300)/2);\n  ctx.skewx( sin(angle) );\n\n  ctx.beginPath;\n  ctx.rect (0, 0, 300, 300);\n  ctx.fillStyle (CSSYellow);\n  ctx.strokeStyle(CSSRed);\n  ctx.lineWidth := 5;\n  ctx.strokeOverFill;\n\n  ctx.beginPath();\n  // coord. centre 150,150  rayon : 50 angle départ 0 fin 2Pi, sens\n  ctx.arc(150,150,50,0,PI*2,true); // Cercle\n  ctx.moveTo(100,150); // aller au pt de départ de l arc\n  ctx.arc(100,100,50,PI/2,PI,false); // Arc sens aig. montre\n  ctx.moveTo(150,150); // aller au pt de départ de l arc\n  ctx.arc(200,150,50,2*PI/2,0,false);  // Autre cercle\n  ctx.lineWidth := 1;\n  ctx.strokeStyle(BGRABlack);\n  ctx.stroke();\n\n  ctx.lineJoin := 'round';\n\n  angle := test4pos*2*Pi/180;\n  p0 := PointF(150,50);\n  p1 := pointF(150+50,50);\n  p2 := pointF(150+50+cos(sin(angle)*Pi/2)*40,50+sin(sin(angle)*Pi/2)*40);\n  ctx.beginPath;\n  ctx.moveTo(p0);\n  ctx.arcTo(p1, p2, 30);\n  ctx.lineTo(p2);\n  ctx.lineWidth := 5;\n  ctx.strokeStyle( BGRA(240,170,0) );\n  ctx.stroke();\n\n  ctx.beginPath;\n  ctx.moveTo(p0);\n  ctx.lineTo(p1);\n  ctx.lineTo(p2);\n  ctx.strokeStyle( BGRA(0,0,255) );\n  ctx.lineWidth := 2;\n  ctx.stroke();\n\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test5(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nvar svg: TBGRASVG;\nbegin\n  inc(test5pos, grainElapse);\n\n  svg := TBGRASVG.Create;\n  svg.LoadFromFile(ResourceFile('Amsterdammertje-icoon.svg'));\n  svg.StretchDraw(ctx, taCenter,tlCenter, 0, 0, AWidth/3, AHeight);\n\n  svg.LoadFromFile(ResourceFile('BespectacledMaleUser.svg'));\n  svg.StretchDraw(ctx, AWidth/3, 0, AWidth*2/3, AHeight/2);\n\n  ctx.save;\n  ctx.beginPath;\n  ctx.rect(AWidth/3,AHeight/2,AWidth*2/3,AHeight/2);\n  ctx.clip;\n  svg.LoadFromFile(ResourceFile('Blue_gyroelongated_pentagonal_pyramid.svg'));\n  svg.Draw(ctx, taCenter,tlCenter, AWidth*2/3, AHeight*3/4);\n  ctx.restore;\n\n  svg.Free;\n\n  ctx.beginPath;\n  ctx.lineWidth:= 1;\n  ctx.strokeStyle(BGRABlack);\n  ctx.moveTo(AWidth/3,0);\n  ctx.lineTo(AWidth/3,AHeight);\n  ctx.moveTo(AWidth/3,AHeight/2);\n  ctx.lineTo(AWidth,AHeight/2);\n  ctx.stroke;\n\n  UpdateIn(20);\nend;\n\nprocedure TForm1.Test6(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nbegin\n  ctx.fillStyle ('rgb(1000,1000,1000)');\n  ctx.fillRect (0, 0, 300, 300);\n// Exemple de courbes de Bézier\n  ctx.fillStyle ( 'yellow');\n  ctx.lineWidth := 15;\n  ctx.lineCap := 'round'; // round butt square\n  ctx.lineJoin := 'miter'; // round miter bevel\n  ctx.strokeStyle ('rgb(200,200,1000)');\n  ctx.beginPath();\n  ctx.moveTo(50,150);\n  ctx.bezierCurveTo(50,80,100,60,130,60);\n  ctx.bezierCurveTo(180,60,250,50,260,130);\n  ctx.bezierCurveTo(150,150,150,150,120,280);\n  ctx.bezierCurveTo(50,250,100,200,50,150);\n  ctx.fill();\n  ctx.stroke();\nend;\n\nprocedure TForm1.Test7(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nvar\n  i: Integer;\nbegin\n  ctx.fillStyle('black');\n  ctx.fillRect(0, 0, 300, 300);\n  // Dessin du fond\n  ctx.fillStyle ('red');\n  ctx.fillRect(0, 0, 150, 150);\n  ctx.fillStyle ('blue');\n  ctx.fillRect(150, 0, 150, 150);\n  ctx.fillStyle ('yellow');\n  ctx.fillRect(0, 150, 150, 150);\n  ctx.fillStyle ('green');\n  ctx.fillRect(150, 150, 150, 150);\n  ctx.fillStyle ('#FFF');\n  // Définition de la valeur de transparence\n  ctx.globalAlpha := 0.1;\n  // Dessin de carrés semi transparents\n  for i := 0 to 9 do\n  begin\n      ctx.beginPath();\n      ctx.fillRect(10*i, 10*i, 300-20*i, 300-20*i);\n      ctx.fill();\n  end;\nend;\n\nprocedure TForm1.Test8(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nbegin\n  ctx.drawImage(img, 0, 0);\n  ctx.globalAlpha:= 0.5;\n  ctx.drawImage(img, 100, 100);\n  ctx.globalAlpha := 0.9;\n  ctx.translate(100,100);\n  ctx.beginPath;\n  ctx.moveTo(50,50);\n  ctx.lineTo(300,50);\n  ctx.lineTo(500,200);\n  ctx.lineTo(50,200);\n  ctx.fillStyle(img);\n  ctx.fill;\nend;\n\nprocedure TForm1.Test9(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nvar\n  i: Integer;\n  j: Integer;\nbegin\n  ctx.translate(AWidth/2 -15*10, AHeight/2 -15*10);\n  ctx.strokeStyle ('#000');\n  ctx.lineWidth :=4;\n  for i := 0 to 14 do\n    for j := 0 to 14 do\n    begin\n      ctx.fillStyle (BGRA ( 255-18*i, 255-18*j, 0) );\n      ctx.strokeStyle (BGRA( 20+10*j, 20+8*i, 0) );\n      ctx.fillRect(j*20, i*20, 20, 20);\n      ctx.strokeRect(j*20, i*20, 20, 20)\n    end;\nend;\n\nprocedure TForm1.Test10(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nvar\n  i: Integer;\n  j: Integer;\nbegin\n  ctx.translate(AWidth/2, AHeight/2);  // centre 0 0 maintenant en position centrale\n  for i := 1 to 9 do\n  begin\n    ctx.save(); // contrebalancé par un restore\n    ctx.fillStyle ( BGRA(25*i,255-25*i,255) );\n    for j := 0 to i*5 do\n    begin\n      ctx.rotate(PI*2/(1+i*5)); //\n      ctx.beginPath();\n      ctx.arc(0, i*16, 6, 0, PI*2, true);\n      ctx.fill();\n    end;\n    ctx.restore();\n  end;\nend;\n\nprocedure TForm1.Test11(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nconst sc=20;  // nb de pixels pour une unité\n\nvar\n  W, H: Single;\n  i: Integer;\n  x,u: Single;\n\n  function f(x: single): single; // fonction à tracer\n  begin\n    result := 3*sin(x)*(cos(x)+1/2*cos(x/2)+1/3*cos(x/3)+1/4*cos(x/4));\n  end;\nbegin\n  H := AHeight;\n  W := AWidth;\n   // tracé du quadrillage\n   ctx.strokeStyle ('#666');\n   ctx.beginPath();\n   ctx.lineWidth:=0.5;\n   // lignes horizontales\n   for i := -trunc(H/2/sc) to trunc(H/2/sc) do\n   begin\n     ctx.moveTo(0, H/2-sc*i);\n     ctx.lineTo(W, H/2-sc*i);\n   end;\n   // lignes verticales\n   for i := 0 to trunc(W/sc) do\n   begin\n     ctx.moveTo(sc*i,H-0);\n     ctx.lineTo(sc*i, H-H);\n   end;\n   ctx.stroke();\n   // tracé de la fonction\n     ctx.strokeStyle ('#ff0000');\n     ctx.lineWidth:=1.5;\n     ctx.beginPath();\n     x:=0;\n     u:=f(x);\n     ctx.moveTo(0, H/2-u*sc);\n     while x < W/sc do\n     begin\n       u := f(x);\n       ctx.lineTo(x*sc, H/2-u*sc);\n       IncF(x, 1/sc);\n     end;\n   ctx.stroke();\nend;\n\nprocedure TForm1.Test12(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nvar\n  W, H: Single;\n  i: Integer;\n  j: Integer;\n\n  function color(): TBGRAPixel;\n  begin\n    result := BGRA(random(256),random(256),random(256));\n  end;\n\n  procedure drawSpirograph(R2: single; r: single; O: single);\n  var\n    x0,x1,x2: single;\n    y0,y1,y2: single;\n    i: integer;\n  begin\n    x0 := R2-O;\n    y0 := 0;\n    i  := 1;\n    ctx.beginPath();\n    x1 := x0;\n    y1 := y0;\n    ctx.moveTo(x1, y1);\n    repeat\n      if (i > 1000) then break;\n      x2 := (R2+r)*cos(i*PI/72) - (r+O)*cos(((R2+r)/r)*(i*PI/72));\n      y2 := (R2+r)*sin(i*PI/72) - (r+O)*sin(((R2+r)/r)*(i*PI/72));\n      ctx.lineTo(x2, y2);\n      x1 := x2;\n      y1 := y2;\n      inc(i);\n    until (abs(x2-x0) < 1e-6) and (abs(y2-y0) < 1e-6);\n    ctx.stroke();\n  end;\n\nbegin\n  W := AWidth;\n  H := AHeight;\n  ctx.fillRect(0, 0, W, H);\n  for i := 0 to 1 do\n    for j := 0 to 2 do\n    begin\n      ctx.save();\n      ctx.strokeStyle ( color() );\n      ctx.translate(110+j*200, 100+i*160);\n      drawSpirograph(40*(j+2)/(j+1), -(3+random(11))*(i+3)/(i+1), 35);\n      ctx.restore();\n    end;\n\n  UpdateIn(3000);\nend;\n\nprocedure TForm1.Test13(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nconst vitesse = 1;\nbegin\n  ctx.fillStyle ('#000');\n  ctx.fillRect (0, 0, 800, 400);\n  ctx.clearRect(0, 0, 800, 400);\n  ctx.fillRect (0, 0, 800, 400);\n  ctx.setTransform(-0.55, 0.85, -1, 0.10, 100, 50+img.width*0.5);\n  ctx.rotate(PI*2*(Test13pos/360)*vitesse );\n  ctx.drawImage(img, img.width*(-0.5)-200, img.height*(-0.8));\n  inc(Test13pos);\n  if (Test13pos=360) then Test13pos := 0;\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test14(ctx: TBGRACanvas2D; AWidth, AHeight: single);\n  procedure pave();\n  begin\n    ctx.save();\n    ctx.fillStyle ('rgb(130,100,800)');\n    ctx.strokeStyle ('rgb(0,0,300)');\n    ctx.beginPath();\n    ctx.lineWidth:=2;\n    ctx.moveTo(5,5);ctx.lineTo(20,10);ctx.lineTo(55,5);ctx.lineTo(45,18);ctx.lineTo(30,50);\n    ctx.closePath();\n    ctx.stroke();\n    ctx.fill();\n    ctx.fillStyle ('rgb(300,300,100)');\n    ctx.lineWidth:=5;\n    ctx.strokeStyle ('rgb(0,300,0)');\n    ctx.beginPath();\n    ctx.moveTo(20,18);ctx.lineTo(40,16);ctx.lineTo(35,26); ctx.lineTo(25,30);\n    ctx.closePath();\n    ctx.stroke();\n    ctx.fill();\n    ctx.restore();\n  end;\n  // dessins d un hexagone à partir de six pavés par rotation\n  procedure six();\n  var\n    i: Integer;\n  begin\n     ctx.save();\n     for i := 0 to 5 do\n     begin\n        ctx.rotate(2*PI/6);\n        pave();\n     end;\n     ctx.restore();\n  end;\n  // pavage utilisant des translations selon deux vecteurs non colinéaires\n  // 0,60*Math.sqrt(3)     et     60*3/2, 60*Math.sqrt(3)/2\n  procedure draw();\n  var\n    i: Integer;\n    j: Integer;\n  begin\n      ctx.fillStyle ('rgb(800,100,50)');\n      ctx.fillRect (0, 0, AWidth, AHeight);\n      for j := 0 to floor((AWidth+60) / 90) do\n      begin\n        ctx.save();\n        ctx.translate(0,(-j div 2)*60*sqrt(3));\n        for i := 0 to round(AHeight / (60*sqrt(3))) do\n        begin\n          six();\n          ctx.translate(0,60*sqrt(3));\n        end;\n\n        ctx.restore();\n        ctx.translate(90, sqrt(3)*60/2);\n      end;\n  end;\n\nbegin\n  draw();\nend;\n\nprocedure TForm1.Test15(ctx: TBGRACanvas2D; AWidth, AHeight: single);\nconst cote = 190;\n\n  procedure pave();\n  begin\n    ctx.drawImage(abelias,0,0);\n  end;\n\n  procedure refl();\n  begin\n     ctx.save();\n     pave();\n     ctx.transform(1,0,0,-1, 0, 0);\n     pave();\n     ctx.restore();\n  end;\n\n  // dessins d un hexagone à partir de six pavés par rotation\n  procedure trois();\n  var\n    i: Integer;\n  begin\n     ctx.save();\n     for i := 0 to 2 do\n     begin\n        ctx.rotate(4*PI/6);\n        refl();\n     end;\n     ctx.restore();\n  end;\n\n  // pavage utilisant des translations selon deux vecteurs non colinéaires\n  // 0,cote*Math.sqrt(3)     et     cote*3/2, cote*Math.sqrt(3)/2\n  procedure draw();\n  var\n    i: Integer;\n    j: Integer;\n  begin\n    ctx.fillStyle ('#330055');\n    ctx.fillRect (0, 0, AWidth, AHeight);\n    ctx.translate(140,140);\n    for j := 0 to trunc(AWidth /(cote*3/2)) do\n    begin\n      ctx.save();\n      ctx.translate(0,-(1/2 + j div 2)*cote*sqrt(3));\n      for i := 0 to trunc(AHeight / (cote*sqrt(3)))+1 do\n      begin\n        trois();\n        ctx.translate(0,cote*sqrt(3));\n      end;\n      ctx.restore();\n      ctx.translate(cote*3/2, sqrt(3)*cote/2);\n    end;\n  end;\n\nbegin\n  draw();\nend;\n\nprocedure TForm1.Test16(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single; grainElapse: integer);\nvar center: TPointF;\n    angle,zoom: single;\nbegin\n  inc(test16pos, grainElapse);\n  center := pointf(AWidth/2,AHeight/2);\n  angle := test16pos*2*Pi/300;\n  zoom := (sin(test16pos*2*Pi/400)+1.1)*min(AWidth,AHeight)/300;\n  with ctx do\n  begin\n    translate(center.X,center.Y);\n    scale(zoom,zoom);\n    rotate(angle);\n    translate(-93,-83);\n    beginPath();\n    moveTo(89.724698,11.312043);\n    bezierCurveTo(95.526308,14.494575,100.52322000000001,18.838808,102.75144,24.966412);\n    bezierCurveTo(114.24578,26.586847,123.07072,43.010127999999995,118.71826,54.504664);\n    bezierCurveTo(114.77805000000001,64.910473,93.426098,68.10145299999999,89.00143800000001,59.252123);\n    bezierCurveTo(86.231818,53.712894999999996,90.877898,48.213108999999996,88.853498,42.139906999999994);\n    bezierCurveTo(87.401408,37.78364299999999,82.208048,33.87411899999999,85.595888,27.098436999999993);\n    bezierCurveTo(87.071858,24.146481999999992,94.76621800000001,25.279547999999995,94.863658,23.444067999999994);\n    bezierCurveTo(95.066728,19.618834999999994,92.648878,18.165403999999995,90.221828,15.326465999999995);\n    closePath();\n    moveTo(53.024288,20.876975);\n    bezierCurveTo(50.128958,26.827119000000003,48.561707999999996,33.260252,50.284608,39.548662);\n    bezierCurveTo(41.840728,47.513997,44.130318,66.017003,54.325338,72.88213300000001);\n    bezierCurveTo(63.554708000000005,79.09700300000002,82.823918,69.36119300000001,81.320528,59.58223300000001);\n    bezierCurveTo(80.379498,53.461101000000006,73.409408,51.65791100000001,71.551608,45.53168800000001);\n    bezierCurveTo(70.219018,41.13739400000001,72.197818,34.94548700000001,65.517188,31.373877000000007);\n    bezierCurveTo(62.606638000000004,29.817833000000007,56.98220800000001,35.18931200000001,55.841908000000004,33.74771500000001);\n    bezierCurveTo(53.465478000000004,30.743354000000007,54.598668,28.159881000000006,54.938648,24.44039800000001);\n    closePath();\n    moveTo(16.284108,78.650993);\n    bezierCurveTo(16.615938,85.259863,18.344168,91.651623,22.885208,96.330453);\n    bezierCurveTo(19.327327999999998,107.37975,30.253377999999998,122.48687000000001,42.495058,123.58667);\n    bezierCurveTo(53.577238,124.58229,65.765908,106.76307,59.734438,98.920263);\n    bezierCurveTo(55.959047999999996,94.01106300000001,48.983098,95.791453,44.402058,91.319753);\n    bezierCurveTo(41.116108,88.112233,39.864737999999996,81.73340300000001,32.289848,81.824883);\n    bezierCurveTo(28.989708,81.864783,26.651538,89.282293,24.957518,88.569003);\n    bezierCurveTo(21.427108,87.08246299999999,21.174458,84.272723,19.679208,80.85010299999999);\n    closePath();\n    moveTo(152.77652,37.616125);\n    bezierCurveTo(156.68534,42.955439,159.37334,49.006564,158.79801,55.501293);\n    bezierCurveTo(168.5256,61.835313,169.5682,80.450283,160.75895,89.021463);\n    bezierCurveTo(152.78409,96.780823,132.08894,90.63274299999999,131.82654,80.742363);\n    bezierCurveTo(131.6623,74.551503,138.19976,71.535693,138.93671,65.17653299999999);\n    bezierCurveTo(139.46532,60.615162999999995,136.41531,54.87470199999999,142.35299,50.170306999999994);\n    bezierCurveTo(144.93985,48.12074299999999,151.43107,52.404562999999996,152.29636,50.78291599999999);\n    bezierCurveTo(154.09968999999998,47.403324999999995,152.52446999999998,45.062994999999994,151.52745,41.463536999999995);\n    closePath();\n    moveTo(139.65359,109.38478);\n    bezierCurveTo(179.13505,123.79982000000001,142.51298,146.31478,119.19800000000001,151.55864);\n    bezierCurveTo(95.883018,156.8025,41.93790800000001,157.82316,75.508908,123.02183);\n    bezierCurveTo(78.980078,119.42344999999999,79.61785800000001,104.19731999999999,82.074898,99.283253);\n    bezierCurveTo(86.361158,93.329663,106.23528,86.908083,113.13709,88.929193);\n    bezierCurveTo(128.23085,93.960443,125.96716,106.89633,139.65359,109.38478);\n    closePath();\n    if isPointInPath(mx*AZoom+0.5,my*AZoom+0.5) then\n      fillStyle ('#6faed9')\n    else\n      fillStyle ('#3f5e99');\n    fill();\n  end;\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test17(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nvar\n  grad: IBGRACanvasGradient2D;\n  angle: single;\nbegin\n  inc(test17pos, grainElapse);\n  angle := test17pos*2*Pi/1000;\n\n  ctx.translate(AWidth/2,AHeight/2);\n  ctx.scale(min(AWidth,AHeight)/2-10);\n  ctx.rotate(angle);\n\n  grad := ctx.createLinearGradient(-1,-1,1,1);\n  grad.addColorStop(0.3, '#ff0000');\n  grad.addColorStop(0.6, '#0000ff');\n  ctx.fillStyle(grad);\n\n  grad := ctx.createLinearGradient(-1,-1,1,1);\n  grad.addColorStop(0.3, '#ffffff');\n  grad.addColorStop(0.6, '#000000');\n  ctx.strokeStyle(grad);\n  ctx.lineWidth := 5;\n\n  ctx.beginPath;\n  ctx.moveto(0,0);\n  ctx.arc(0,0,1,Pi/6,-Pi/6,false);\n  ctx.fill();\n  ctx.stroke();\n\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test18(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nvar pat: TBGRABitmap;\nbegin\n  inc(test18pos, grainElapse);\n  ctx.translate(AWidth/2, AHeight/2);\n  ctx.rotate(test18pos*2*Pi/360);\n  ctx.scale(3,3);\n  pat := TBGRABitmap.Create(8,8);\n  pat.GradientFill(0,0,8,8,BGRABlack,BGRAWhite,gtLinear,PointF(0,0),PointF(8,8),dmSet);\n//  ctx.surface.CreateBrushTexture(bsDiagCross,BGRA(255,255,0),BGRA(255,0,0)) as TBGRABitmap;\n  ctx.fillStyle(ctx.createPattern(pat,'repeat-x'));\n  ctx.fillRect(pat.width,0,AWidth,pat.height);\n  ctx.fillStyle(ctx.createPattern(pat,'repeat-y'));\n  ctx.fillRect(0,0,pat.width,AHeight);\n\n  ctx.rotate(Pi);\n  ctx.globalAlpha:= 0.25;\n  ctx.fillStyle(ctx.createPattern(pat,'repeat-x'));\n  ctx.fillRect(0,0,AWidth,AHeight);\n  ctx.fillStyle(ctx.createPattern(pat,'repeat-y'));\n  ctx.fillRect(0,0,AWidth,AHeight);\n  pat.free;\n\n  UpdateIn(10);\nend;\n\nprocedure TForm1.Test19(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nvar i: integer;\n    tx,ty: single;\nbegin\n  inc(test19pos, grainElapse);\n  ctx.save;\n  ctx.translate(AWidth/2, AHeight/2);\n  ctx.rotate(test19pos*2*Pi/500);\n  ctx.scale(AHeight / 2,AHeight / 2);\n  ctx.beginPath;\n  ctx.moveto(1,0);\n  for i := 1 to 8 do\n  begin\n    ctx.rotate(2*Pi/8);\n    ctx.lineto(1,0);\n  end;\n  ctx.restore;\n  ctx.clip;\n\n  tx := AWidth/2;\n  ty := AHeight/2;\n  ctx.fillStyle ('red');\n  ctx.fillRect(0, 0, tx, ty);\n  ctx.fillStyle ('blue');\n  ctx.fillRect(tx, 0, tx, ty);\n\n  ctx.globalAlpha := 0.75;\n  ctx.fillStyle ('yellow');\n  ctx.fillRect(0, ty, tx, ty);\n  ctx.fillStyle ('green');\n  ctx.fillRect(tx, ty, tx, ty);\n\n  test18(ctx, AWidth, AHeight, grainElapse);\nend;\n\nprocedure TForm1.Test20(ctx: TBGRACanvas2D; AWidth, AHeight: single; AVectorizedFont: boolean);\nvar\n  i: Integer;\n  grad: IBGRACanvasGradient2D;\nbegin\n  UseVectorizedFont(ctx,AVectorizedFont);\n  ctx.save;\n\n  ctx.fontName:= 'default';\n  ctx.fontEmHeight:= AHeight/10;\n  ctx.textBaseline:= 'alphabetic';\n\n  ctx.shadowBlur:= 5;\n  ctx.shadowOffset := PointF(5,5);\n  ctx.shadowColor(BGRABlack);\n\n  ctx.beginPath;\n  if AVectorizedFont then\n    ctx.text('Vectorized font',ctx.fontEmHeight*0.2,ctx.fontEmHeight)\n  else\n    ctx.text('Raster font',ctx.fontEmHeight*0.2,ctx.fontEmHeight);\n  ctx.lineWidth := 5;\n  ctx.lineJoin:= 'round';\n  ctx.strokeStyle(BGRA(0,192,0));\n  ctx.fillStyle(clBlack);\n  ctx.fillOverStroke;\n\n  ctx.shadowNone;\n\n  grad := ctx.createLinearGradient(0,0,AWidth,AHeight);\n  grad.addColorStop(0.3, '#000080');\n  grad.addColorStop(0.7, '#00a0a0');\n  ctx.fillStyle(grad);\n\n  ctx.translate(AWidth/2, AHeight/2);\n\n  for i := 0 to 11 do\n  begin\n    ctx.beginPath;\n    ctx.moveTo(0,0);\n    ctx.lineTo(AWidth+AHeight,0);\n    ctx.strokeStyle(clRed);\n    ctx.lineWidth := 1;\n    ctx.stroke;\n\n    ctx.beginPath;\n    ctx.text('hello',AWidth/10,0);\n    ctx.fill;\n    ctx.rotate(Pi/6);\n  end;\n  ctx.restore;\n  ctx.fontRenderer := nil;\nend;\n\nprocedure TForm1.Test22(ctx: TBGRACanvas2D; AWidth, AHeight, AZoom: single);\nvar layer: TBGRABitmap;\nbegin\n  layer := TBGRABitmap.Create(ctx.Surface.Width, ctx.Surface.Height, CSSRed);\n  UseVectorizedFont(layer.Canvas2D,true);\n  with layer.Canvas2D do\n  begin\n    scale(AZoom);\n    pixelCenteredCoordinates:= ctx.pixelCenteredCoordinates;\n    antialiasing:= ctx.antialiasing;\n    fontName:= 'default';\n    fontStyle := [fsBold];\n    fontEmHeight:= min(AHeight/2, AWidth/4);\n    textBaseline:= 'middle';\n    textAlign := 'center';\n\n    beginPath;\n    text('hole', AWidth/2, AHeight/2);\n    clearPath;\n  end;\n  ctx.surface.DrawCheckers(ctx.Surface.ClipRect, CSSWhite,CSSSilver,\n    HalfUp(8*AZoom), HalfUp(8*AZoom));\n  ctx.surface.PutImage(0, 0, layer, dmDrawWithTransparency);\nend;\n\nprocedure TForm1.Test23(ctx: TBGRACanvas2D; AWidth, AHeight: single; grainElapse: integer);\nbegin\n  UseVectorizedFont(ctx,true);\n  with ctx do\n  begin\n    save;\n    fontName:= 'default';\n    fontStyle := [fsBold];\n    fontEmHeight:= min(AHeight/2, AWidth/6);\n    textBaseline:= 'middle';\n    textAlign := 'center';\n\n    translate(AWidth/2,AHeight/2);\n    transform(cos(test23pos*Pi/60),sin(test23pos*Pi/60),0,1,0,0);\n    beginPath;\n    text('distort', 0,0);\n    fillStyle(clBlack);\n    fill;\n    restore;\n  end;\n  inc(test23pos, grainElapse);\n  UpdateIn(10);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testcore/createfont.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"createfont\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes>\n      <Item Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <RequiredPackages>\n      <Item>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item>\n      <Item>\n        <PackageName Value=\"LCL\"/>\n      </Item>\n    </RequiredPackages>\n    <Units>\n      <Unit>\n        <Filename Value=\"createfont.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"createfont\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib_createfont/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions>\n      <Item>\n        <Name Value=\"EAbort\"/>\n      </Item>\n      <Item>\n        <Name Value=\"ECodetoolError\"/>\n      </Item>\n      <Item>\n        <Name Value=\"EFOpenError\"/>\n      </Item>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testcore/createfont.lpr",
    "content": "program createfont;\n\nuses Interfaces, BGRABitmap, BGRAVectorize, SysUtils;\n\nvar\n  f: TBGRAVectorizedFont;\n\nbegin\n  f := TBGRAVectorizedFont.Create;\n  f.Name:= 'Arial';\n  f.FullHeight:= 30;\n  f.NeedAsciiRange(true);\n  f.SaveGlyphsToFile(ExtractFilePath(ParamStr(0))+'arial.glyphs');\n  f.Free;\nend.\n\n"
  },
  {
    "path": "test/testcore/testcore.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"12\"/>\n    <General>\n      <Flags>\n        <MainUnitHasCreateFormStatements Value=\"False\"/>\n        <MainUnitHasTitleStatement Value=\"False\"/>\n        <MainUnitHasScaledStatement Value=\"False\"/>\n      </Flags>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <Title Value=\"testcore\"/>\n      <UseAppBundle Value=\"False\"/>\n      <ResourceType Value=\"res\"/>\n    </General>\n    <BuildModes>\n      <Item Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n    </RunParams>\n    <Units>\n      <Unit>\n        <Filename Value=\"testcore.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"testcore\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <OtherUnitFiles Value=\"../../bgrabitmap\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <GenerateDebugInfo Value=\"False\"/>\n        <RunWithoutDebug Value=\"True\"/>\n      </Debugging>\n    </Linking>\n    <Other>\n      <CustomOptions Value=\"-dBGRABITMAP_DONT_USE_LCL -dBGRABITMAP_CORE\"/>\n    </Other>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions>\n      <Item>\n        <Name Value=\"EAbort\"/>\n      </Item>\n      <Item>\n        <Name Value=\"ECodetoolError\"/>\n      </Item>\n      <Item>\n        <Name Value=\"EFOpenError\"/>\n      </Item>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testcore/testcore.lpr",
    "content": "program testcore;\n\nuses BGRABitmap, BGRABitmapTypes, BGRACanvas, BGRACanvas2d, BGRAVectorize, SysUtils;\n\nvar bmp: TBGRABitmap;\n  canvas: TBGRACanvas;\n  canvas2d: TBGRACanvas2D;\n  appDir: String;\n\nbegin\n  appDir := ExtractFilePath(paramStr(0));\n\n  // create image with solid background\n  bmp := TBGRABitmap.Create(400, 400, CSSSilver);\n\n  // draw rectangle\n  canvas := TBGRACanvas.Create(bmp);\n  with canvas do\n  begin\n    Brush.BGRAColor := CSSGreen;\n    FillRect(100, 100, 300, 300);\n    Free;\n  end;\n\n  // draw text\n  bmp.FontRenderer := TBGRAVectorizedFontRenderer.Create(appDir);\n  bmp.FontName:= 'Arial';\n  bmp.FontFullHeight:= 30;\n  bmp.TextOut(0,0, 'Hello World WORLD Vamos', CSSBlack);\n\n  // draw a disk with shadow\n  canvas2d := TBGRACanvas2D.Create(bmp);\n  with canvas2d do\n  begin\n    shadowBlur:= 5;\n    shadowOffset:= PointF(5, 5);\n    shadowColor(CSSBlack);\n    circle(200,200,50);\n    fillStyle(CSSBlue);\n    fill;\n    free;\n  end;\n\n  bmp.SaveToFile(appDir + 'square.png');\n  bmp.Free;\nend.\n\n"
  },
  {
    "path": "test/testgif/project1.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"project1\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"project1.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"project1\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testgif/project1.lpr",
    "content": "program project1;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testgif/project2.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"project2\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"project2.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit2.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form2\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"project2\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testgif/project2.lpr",
    "content": "program project2;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, unit2\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm2, Form2);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testgif/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 125\n  Height = 350\n  Top = 127\n  Width = 505\n  AllowDropFiles = True\n  Caption = 'Form1'\n  ClientHeight = 350\n  ClientWidth = 505\n  Color = clSkyBlue\n  Position = poScreenCenter\n  LCLVersion = '3.99.0.0'\n  OnCreate = FormCreate\n  OnDropFiles = FormDropFiles\n  object Panel1: TPanel\n    Left = 305\n    Height = 350\n    Top = 0\n    Width = 200\n    Align = alRight\n    Caption = 'Panel1'\n    ClientHeight = 350\n    ClientWidth = 200\n    Color = clBtnFace\n    ParentBackground = False\n    ParentColor = False\n    TabOrder = 0\n    object Memo1: TMemo\n      Left = 8\n      Height = 251\n      Top = 32\n      Width = 184\n      Anchors = [akTop, akLeft, akRight, akBottom]\n      Lines.Strings = (\n        'Memo1'\n      )\n      ScrollBars = ssVertical\n      TabOrder = 0\n    end\n    object Label1: TLabel\n      Left = 8\n      Height = 16\n      Top = 288\n      Width = 39\n      Anchors = [akLeft, akBottom]\n      Caption = 'Label1'\n    end\n    object Button1: TButton\n      Left = 10\n      Height = 25\n      Top = 312\n      Width = 75\n      Anchors = [akLeft, akBottom]\n      Caption = 'Refresh'\n      TabOrder = 1\n      OnClick = Button1Click\n    end\n    object Button2: TButton\n      Left = 112\n      Height = 25\n      Top = 312\n      Width = 75\n      Anchors = [akLeft, akBottom]\n      Caption = 'Save as...'\n      TabOrder = 2\n      OnClick = Button2Click\n    end\n    object Label2: TLabel\n      Left = 10\n      Height = 16\n      Top = 8\n      Width = 179\n      Caption = 'Drag and drop a GIF or a PNG'\n    end\n  end\n  object Timer1: TTimer\n    Interval = 15\n    Left = 136\n    Top = 128\n  end\n  object SaveDialog1: TSaveDialog\n    DefaultExt = '.gif'\n    Filter = 'Animated GIF|*.gif|Animated PNG|*.png'\n    Left = 392\n    Top = 184\n  end\nend\n"
  },
  {
    "path": "test/testgif/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  BGRABitmap, BGRAAnimatedGif, LCLType, StdCtrls;\n\ntype\n\n  { TGifAnimationPanel }\n\n  TGifAnimationPanel = class(TPanel)\n  private\n    FOnRenderFrame: TNotifyEvent;\n    procedure SetImage(AValue: TBGRAAnimatedGif);\n    procedure SetOnRenderFrame(AValue: TNotifyEvent);\n  protected\n    FImage: TBGRAAnimatedGif;\n    FFirstPaint, FAnimatePaint: boolean;\n    FTimer: TTimer;\n    procedure Paint; override;\n    procedure EraseBackground(DC: HDC); override;\n    procedure ImageChanged(Sender: TObject);\n    procedure TimerTimer(Sender: TObject);\n  public\n    constructor Create(TheOwner: TComponent); override;\n    destructor Destroy; override;\n    property Image: TBGRAAnimatedGif read FImage;\n    property OnRenderFrame: TNotifyEvent read FOnRenderFrame write SetOnRenderFrame;\n  end;\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    SaveDialog1: TSaveDialog;\n    Timer1: TTimer;\n    Panel1: TPanel;\n    Label1: TLabel;\n    Label2: TLabel;\n    Button1: TButton;\n    Button2: TButton;\n    Memo1: TMemo;\n    procedure Button1Click(Sender: TObject);\n    procedure Button2Click(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDropFiles(Sender: TObject; const FileNames: array of string);\n  protected\n    { private declarations }\n    procedure GifAnimationPanelRenderFrame(Sender: TObject);\n  public\n    { public declarations }\n    filename, error: string;\n    animationPanel: TGifAnimationPanel;\n    procedure LoadImage(AFilename: string);\n    procedure FillMemo;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\n{ TGifAnimationPanel }\n\nconstructor TGifAnimationPanel.Create(TheOwner: TComponent);\nbegin\n  inherited Create(TheOwner);\n  FFirstPaint:= true;\n  FAnimatePaint:= false;\n  BevelInner:= bvNone;\n  BevelOuter:= bvNone;\n  FImage := TBGRAAnimatedGif.Create;\n  FImage.OnChange := @ImageChanged;\n  FTimer := TTimer.Create(self);\n  FTimer.Enabled := false;\n  FTimer.OnTimer := @TimerTimer;\nend;\n\ndestructor TGifAnimationPanel.Destroy;\nbegin\n  inherited Destroy;\nend;\n\nprocedure TGifAnimationPanel.SetImage(AValue: TBGRAAnimatedGif);\nbegin\n  FImage.Free;\nend;\n\nprocedure TGifAnimationPanel.SetOnRenderFrame(AValue: TNotifyEvent);\nbegin\n  if FOnRenderFrame=AValue then Exit;\n  FOnRenderFrame:=AValue;\nend;\n\nprocedure TGifAnimationPanel.Paint;\nvar\n  waitTime: Integer;\nbegin\n  inherited Paint;\n\n  if FFirstPaint or not FAnimatePaint then\n  begin\n    Canvas.Brush.Assign(Brush);\n    Canvas.FillRect(ClientRect);\n    image.BackgroundMode := gbmEraseBackground;\n    image.EraseColor:= Color;\n    if Assigned(FImage) and (FImage.Count > 0) then\n      FImage.Show(Canvas, ClientRect);\n  end else\n  begin\n    if Assigned(FImage) and (FImage.Count > 0) then\n      FImage.Update(Canvas, ClientRect);\n  end;\n  FAnimatePaint := false;\n  FFirstPaint := false;\n  if Assigned(FOnRenderFrame) then\n    FOnRenderFrame(self);\n  if Assigned(FImage) and (FImage.Count > 1) then\n  begin\n    waitTime := Image.TimeUntilNextImageMs;\n    if waitTime < 15 then waitTime := 15;\n    FTimer.Interval := waitTime;\n    FTimer.Enabled := true;\n  end;\nend;\n\nprocedure TGifAnimationPanel.EraseBackground(DC: HDC);\nbegin\n  // don't erase background\nend;\n\nprocedure TGifAnimationPanel.ImageChanged(Sender: TObject);\nbegin\n  FTimer.Enabled:= false;\n  Invalidate;\nend;\n\nprocedure TGifAnimationPanel.TimerTimer(Sender: TObject);\nbegin\n  FTimer.Enabled := false;\n  FAnimatePaint := true;\n  Refresh;\nend;\n\n{ TForm1 }\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  animationPanel := TGifAnimationPanel.Create(self);\n  animationPanel.OnRenderFrame := @GifAnimationPanelRenderFrame;\n  animationPanel.Left := 4;\n  animationPanel.Top := 4;\n  animationPanel.Color:= self.Color;\n  InsertControl(animationPanel, 0);\n  LoadImage(ConcatPaths([ExtractFilePath(Application.ExeName), 'waterdrops.gif']));\n  FillMemo;\nend;\n\nprocedure TForm1.Button1Click(Sender: TObject);\nbegin\n  animationPanel.Refresh;\nend;\n\nprocedure TForm1.Button2Click(Sender: TObject);\nbegin\n  try\n    if SaveDialog1.Execute then\n      animationPanel.Image.SaveToFile(SaveDialog1.FileName);\n  except\n    on ex: exception do\n    begin\n      error := ex.Message;\n      FillMemo;\n    end;\n  end;\nend;\n\nprocedure TForm1.FormDropFiles(Sender: TObject; const FileNames: array of string);\nbegin\n  LoadImage(FileNames[0]);\nend;\n\nprocedure TForm1.GifAnimationPanelRenderFrame(Sender: TObject);\nbegin\n  Label1.Caption := 'Frame: ' + inttostr(animationPanel.image.CurrentImage) +\n                    ', Wait: ' + inttostr(animationPanel.Image.TimeUntilNextImageMs);\nend;\n\nprocedure TForm1.LoadImage(AFilename: string);\nbegin\n  filename := AFilename;\n  try\n    if not FileExists(filename) then\n    begin\n      animationPanel.Image.Clear;\n      error := 'Not found';\n    end else\n    begin\n      animationPanel.Image.LoadFromFile(filename);\n      error := 'Ok';\n    end;\n  except\n    on ex:Exception do\n      error := ex.Message;\n  end;\n  animationPanel.Width := animationPanel.Image.Width;\n  animationPanel.Height := animationPanel.Image.Height;\n  FillMemo;\nend;\n\nprocedure TForm1.FillMemo;\nvar s: string;\n  i: Integer;\nbegin\n  with animationPanel do\n  begin\n    s := error + LineEnding +\n         ExtractFileName(filename) + LineEnding +\n         inttostr(image.Width)+'x'+inttostr(image.height) + LineEnding +\n         inttostr(image.Count)+' frames' + LineEnding;\n    if image.LoopCount = 0 then\n      s := s + 'infinite loop' + LineEnding\n    else\n      s := s + inttostr(image.LoopCount)+' loops' + LineEnding;\n    for i := 0 to image.Count-1 do\n      s := s + '#' + inttostr(i)+': '+inttostr(image.FrameDelayMs[i])+' ms, '+\n           inttostr(image.FrameImage[i].Width)+'x'+inttostr(image.FrameImage[i].Height) + LineEnding;\n  end;\n  Memo1.Text := s;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testgif/unit2.lfm",
    "content": "object Form2: TForm2\n  Left = 241\n  Height = 240\n  Top = 150\n  Width = 320\n  Caption = 'Form2'\n  ClientHeight = 240\n  ClientWidth = 320\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '1.6.0.4'\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\n    Left = 0\n    Height = 155\n    Top = 0\n    Width = 156\n    OnRedraw = BGRAVirtualScreen1Redraw\n    Alignment = taLeftJustify\n    Color = clBtnFace\n    ParentColor = False\n    TabOrder = 0\n  end\n  object Timer1: TTimer\n    Interval = 15\n    OnTimer = Timer1Timer\n    left = 111\n    top = 44\n  end\nend\n"
  },
  {
    "path": "test/testgif/unit2.pas",
    "content": "unit unit2;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  BGRABitmap, BGRABitmapTypes, BGRAAnimatedGif, BGRAVirtualScreen, BCTypes;\n\ntype\n\n  { TForm2 }\n\n  TForm2 = class(TForm)\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\n    Timer1: TTimer;\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure FormCreate(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n    image: TBGRAAnimatedGif;\n  end;\n\nvar\n  Form2: TForm2;\n\nimplementation\n\n{$R *.lfm}\n\n{ TForm2 }\n\nprocedure TForm2.FormCreate(Sender: TObject);\nbegin\n  image := TBGRAAnimatedGif.Create('waterdrops.gif');\n  BGRAVirtualScreen1.Width := image.Width;\n  BGRAVirtualScreen1.Height := image.Height;\n  ClientWidth := image.Width;\n  ClientHeight := image.Height;\nend;\n\nprocedure TForm2.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nbegin\n  Bitmap.PutImage(0,0, image.MemBitmap, dmDrawWithTransparency);\nend;\n\nprocedure TForm2.FormDestroy(Sender: TObject);\nbegin\n  image.Free;\nend;\n\nprocedure TForm2.Timer1Timer(Sender: TObject);\nbegin\n  if image.TimeUntilNextImageMs <= 0 then\n    BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testglyph/testglyph.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"9\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"testglyph\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <VersionInfo>\n      <StringTable ProductVersion=\"\"/>\n    </VersionInfo>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"testglyph.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"FMain\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"testglyph\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testglyph/testglyph.lpr",
    "content": "program testglyph;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TFMain, FMain);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testglyph/umain.lfm",
    "content": "object FMain: TFMain\n  Left = 313\n  Height = 240\n  Top = 35\n  Width = 320\n  Caption = 'Test glyph'\n  OnPaint = FormPaint\n  Position = poDefault\n  LCLVersion = '1.6.0.4'\nend\n"
  },
  {
    "path": "test/testglyph/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;\n\ntype\n\n  { TFMain }\n\n  TFMain = class(TForm)\n    procedure FormPaint(Sender: TObject);\n  private\n    { private declarations }\n  public\n    { public declarations }\n  end;\n\nvar\n  FMain: TFMain;\n\nimplementation\n\n{$R *.lfm}\n\nuses Math,BGRABitmapTypes,BGRABitmap,BGRATypewriter,BGRATransform;\n\n{ TFMain }\n\nprocedure TFMain.FormPaint(Sender: TObject);\nconst GoneCount = 8;\nvar\n  radius: single;\n  bmp: TBGRABitmap;\n\n  procedure TestGlyph(center: TPointF; curve: boolean);\n  var\n    glyph: TBGRAPolygonalGlyph;\n    pts: array of TPointF;\n    mem: TMemoryStream;\n    i: Integer;\n  begin\n    setlength(pts, GoneCount);\n    for i := 0 to GoneCount-1 do\n      pts[i] := AffineMatrixRotationDeg((i+0.5)/GoneCount*360)*PointF(0,radius) + center;\n    glyph := TBGRAPolygonalGlyph.Create('o');\n    glyph.SetPoints(pts);\n    glyph.QuadraticCurves:= curve;\n    mem := TMemoryStream.Create;\n    glyph.SaveToStream(mem);\n    glyph.Free;\n    mem.Position:= 0;\n    glyph := TBGRAGlyph.LoadFromStream(mem) as TBGRAPolygonalGlyph;\n    mem.Free;\n    bmp.Canvas2D.lineWidth:= radius*0.02;\n    bmp.Canvas2D.strokeStyle(BGRABlack);\n    glyph.Path(bmp.Canvas2D, AffineMatrixIdentity);\n    glyph.Free;\n    bmp.Canvas2D.stroke;\n  end;\n\nbegin\n  bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRAWhite);\n  radius := min(bmp.Width*0.45,bmp.Height*0.9)*0.5;\n  TestGlyph(PointF(bmp.Width/4,bmp.Height/2),false);\n  TestGlyph(PointF(bmp.Width*3/4,bmp.Height/2),true);\n  bmp.Draw(Canvas,0,0);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testsvg/testsvg.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"testsvg\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <i18n>\n      <EnableI18N LFM=\"False\"/>\n    </i18n>\n    <BuildModes Count=\"3\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n      <Item2 Name=\"Debug\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <PathDelim Value=\"\\\"/>\n          <Target>\n            <Filename Value=\"testsvg\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <OtherUnitFiles Value=\"bgrabitmap\"/>\n            <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <Parsing>\n            <SyntaxOptions>\n              <IncludeAssertionCode Value=\"True\"/>\n            </SyntaxOptions>\n          </Parsing>\n          <CodeGeneration>\n            <Checks>\n              <IOChecks Value=\"True\"/>\n              <RangeChecks Value=\"True\"/>\n              <OverflowChecks Value=\"True\"/>\n              <StackChecks Value=\"True\"/>\n            </Checks>\n            <VerifyObjMethodCallValidity Value=\"True\"/>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <DebugInfoType Value=\"dsDwarf2Set\"/>\n              <UseHeaptrc Value=\"True\"/>\n              <TrashVariables Value=\"True\"/>\n              <UseExternalDbgSyms Value=\"True\"/>\n            </Debugging>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item2>\n      <Item3 Name=\"Release\">\n        <CompilerOptions>\n          <Version Value=\"11\"/>\n          <PathDelim Value=\"\\\"/>\n          <Target>\n            <Filename Value=\"testsvg\"/>\n          </Target>\n          <SearchPaths>\n            <IncludeFiles Value=\"$(ProjOutDir)\"/>\n            <OtherUnitFiles Value=\"bgrabitmap\"/>\n            <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n          </SearchPaths>\n          <CodeGeneration>\n            <SmartLinkUnit Value=\"True\"/>\n            <Optimizations>\n              <OptimizationLevel Value=\"3\"/>\n            </Optimizations>\n          </CodeGeneration>\n          <Linking>\n            <Debugging>\n              <GenerateDebugInfo Value=\"False\"/>\n            </Debugging>\n            <LinkSmart Value=\"True\"/>\n            <Options>\n              <Win32>\n                <GraphicApplication Value=\"True\"/>\n              </Win32>\n            </Options>\n          </Linking>\n        </CompilerOptions>\n      </Item3>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"1\">\n        <Mode0 Name=\"default\"/>\n      </Modes>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"3\">\n      <Unit0>\n        <Filename Value=\"testsvg.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n      <Unit2>\n        <Filename Value=\"uprofiler.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <UnitName Value=\"UProfiler\"/>\n      </Unit2>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <PathDelim Value=\"\\\"/>\n    <Target>\n      <Filename Value=\"testsvg\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <OtherUnitFiles Value=\"bgrabitmap\"/>\n      <UnitOutputDirectory Value=\"lib\\$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testsvg/testsvg.lpr",
    "content": "program testsvg;\r\n\r\n{$mode objfpc}{$H+}\r\n\r\nuses\r\n  //heaptrc,\r\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\r\n  cthreads,\r\n  {$ENDIF}{$ENDIF}\r\n  Interfaces, // this includes the LCL widgetset\r\n  Forms, Unit1, UProfiler\r\n  { you can add units after this };\r\n\r\n{$R *.res}\r\n\r\nbegin\r\n  RequireDerivedFormResource:=True;\r\n  Application.Initialize;\r\n  Application.CreateForm(TForm1, Form1);\r\n  Application.Run;\r\nend.\r\n\r\n"
  },
  {
    "path": "test/testsvg/unit1.lfm",
    "content": "object Form1: TForm1\r\n  Left = 487\r\n  Height = 930\r\n  Top = 32\r\n  Width = 1265\r\n  Caption = 'SVG Test'\r\n  ClientHeight = 930\r\n  ClientWidth = 1265\r\n  Menu = MainMenu1\r\n  OnClose = FormClose\r\n  OnCreate = FormCreate\r\n  OnShow = FormShow\r\n  Position = poDesktopCenter\r\n  LCLVersion = '2.2.0.1'\r\n  object PageControl1: TPageControl\r\n    Left = 0\r\n    Height = 891\r\n    Top = 0\r\n    Width = 1265\r\n    ActivePage = TabSheet1\r\n    Align = alClient\r\n    ParentFont = False\r\n    TabIndex = 0\r\n    TabOrder = 0\r\n    object TabSheet1: TTabSheet\r\n      Caption = 'Main'\r\n      ClientHeight = 861\r\n      ClientWidth = 1259\r\n      ParentFont = False\r\n      object Panel1: TPanel\r\n        Left = 0\r\n        Height = 532\r\n        Top = 0\r\n        Width = 1259\r\n        Align = alTop\r\n        BevelInner = bvLowered\r\n        BevelOuter = bvLowered\r\n        BorderStyle = bsSingle\r\n        ClientHeight = 530\r\n        ClientWidth = 1257\r\n        Color = clSilver\r\n        ParentColor = False\r\n        ParentFont = False\r\n        TabOrder = 0\r\n        object Image1: TImage\r\n          Left = 2\r\n          Height = 526\r\n          Hint = '(svg rendering)'\r\n          Top = 2\r\n          Width = 632\r\n          Align = alLeft\r\n          Center = True\r\n          OnMouseUp = Image1MouseUp\r\n          ParentShowHint = False\r\n          Proportional = True\r\n          ShowHint = True\r\n          Stretch = True\r\n        end\r\n        object Image2: TImage\r\n          Left = 639\r\n          Height = 526\r\n          Top = 2\r\n          Width = 616\r\n          Align = alClient\r\n          Center = True\r\n          OnMouseUp = Image1MouseUp\r\n          ParentShowHint = False\r\n          Proportional = True\r\n          ShowHint = True\r\n          Stretch = True\r\n        end\r\n        object Splitter4: TSplitter\r\n          Left = 634\r\n          Height = 526\r\n          Top = 2\r\n          Width = 5\r\n        end\r\n      end\r\n      object Panel3: TPanel\r\n        Left = 0\r\n        Height = 324\r\n        Top = 537\r\n        Width = 1259\r\n        Align = alClient\r\n        ClientHeight = 324\r\n        ClientWidth = 1259\r\n        ParentFont = False\r\n        TabOrder = 1\r\n        object FileListBox1: TFileListBox\r\n          Left = 1\r\n          Height = 322\r\n          Top = 1\r\n          Width = 634\r\n          Align = alLeft\r\n          Directory = 'C:\\Users\\Fenix\\Desktop\\TEST SVG 4'\r\n          Font.CharSet = ANSI_CHARSET\r\n          Font.Height = -20\r\n          Font.Name = 'Times New Roman'\r\n          Font.Pitch = fpVariable\r\n          Font.Quality = fqDraft\r\n          ItemHeight = 0\r\n          OnChange = FileListBox1Change\r\n          ParentFont = False\r\n          TabOrder = 0\r\n        end\r\n        object Memo1: TMemo\r\n          Left = 640\r\n          Height = 322\r\n          Hint = '(Double click for on/off \"change mode\")'\r\n          Top = 1\r\n          Width = 618\r\n          Align = alClient\r\n          Font.CharSet = ANSI_CHARSET\r\n          Font.Color = clMaroon\r\n          Font.Height = -20\r\n          Font.Name = 'Times New Roman'\r\n          Font.Pitch = fpVariable\r\n          Font.Quality = fqDraft\r\n          OnDblClick = Memo1DblClick\r\n          OnMouseDown = Memo1MouseDown\r\n          ParentFont = False\r\n          ParentShowHint = False\r\n          ReadOnly = True\r\n          ScrollBars = ssVertical\r\n          ShowHint = True\r\n          TabOrder = 1\r\n        end\r\n        object Splitter3: TSplitter\r\n          Left = 635\r\n          Height = 322\r\n          Top = 1\r\n          Width = 5\r\n        end\r\n      end\r\n      object Splitter2: TSplitter\r\n        Cursor = crVSplit\r\n        Left = 0\r\n        Height = 5\r\n        Top = 532\r\n        Width = 1259\r\n        Align = alTop\r\n        Beveled = True\r\n        ResizeAnchor = akTop\r\n      end\r\n    end\r\n  end\r\n  object Panel2: TPanel\r\n    Left = 0\r\n    Height = 39\r\n    Top = 891\r\n    Width = 1265\r\n    Align = alBottom\r\n    BevelInner = bvLowered\r\n    BevelOuter = bvLowered\r\n    ClientHeight = 39\r\n    ClientWidth = 1265\r\n    TabOrder = 1\r\n    object PanProf: TPanel\r\n      Left = 2\r\n      Height = 35\r\n      Top = 2\r\n      Width = 1110\r\n      Align = alClient\r\n      Caption = '0.0s'\r\n      Font.CharSet = ANSI_CHARSET\r\n      Font.Color = clBlack\r\n      Font.Height = -20\r\n      Font.Name = 'Segoe UI'\r\n      Font.Pitch = fpVariable\r\n      Font.Quality = fqDraft\r\n      Font.Style = [fsBold]\r\n      ParentFont = False\r\n      TabOrder = 0\r\n    end\r\n    object CheckBox_ReplaceStrokeAndFill: TCheckBox\r\n      Left = 1112\r\n      Height = 35\r\n      Top = 2\r\n      Width = 151\r\n      Align = alRight\r\n      Caption = 'Replace stroke and fill'\r\n      OnChange = CheckBox_ReplaceStrokeAndFillChange\r\n      TabOrder = 1\r\n    end\r\n  end\r\n  object PopupMenu1: TPopupMenu\r\n    OnPopup = PopupMenu1Popup\r\n    Left = 88\r\n    Top = 56\r\n    object MenuItem1: TMenuItem\r\n      Tag = 100\r\n      Caption = 'Execute Mod Test'\r\n      OnClick = MenuItem1Click\r\n    end\r\n    object MenuItem5: TMenuItem\r\n      Tag = 50\r\n      Caption = 'Execute Mod Test (scale 0.5)'\r\n      OnClick = MenuItem1Click\r\n    end\r\n    object MenuItem6: TMenuItem\r\n      Caption = '-'\r\n    end\r\n    object MCut1: TMenuItem\r\n      Caption = 'Cut'\r\n      OnClick = MCut1Click\r\n    end\r\n    object MCopy1: TMenuItem\r\n      Caption = 'Copy'\r\n      OnClick = MCopy1Click\r\n    end\r\n    object MPaste1: TMenuItem\r\n      Caption = 'Paste'\r\n      OnClick = MPaste1Click\r\n    end\r\n    object MSelectAll: TMenuItem\r\n      Caption = 'Select All'\r\n      OnClick = MSelectAllClick\r\n    end\r\n    object MenuItem3: TMenuItem\r\n      Caption = '-'\r\n    end\r\n    object MenuItem4: TMenuItem\r\n      Caption = 'Save as SVG...'\r\n      OnClick = MenuItem4Click\r\n    end\r\n  end\r\n  object PopupMenu2: TPopupMenu\r\n    Left = 184\r\n    Top = 56\r\n    object MenuItem2: TMenuItem\r\n      Caption = 'Save To...'\r\n      OnClick = MenuItem2Click\r\n    end\r\n  end\r\n  object SaveDialog1: TSaveDialog\r\n    Left = 280\r\n    Top = 56\r\n  end\r\n  object MainMenu1: TMainMenu\r\n    Left = 88\r\n    Top = 144\r\n    object MenuItem7: TMenuItem\r\n      Caption = 'File'\r\n      object MenuItem8: TMenuItem\r\n        Caption = 'ReDraw'\r\n        ShortCut = 16496\r\n        OnClick = MenuItem8Click\r\n      end\r\n      object N1: TMenuItem\r\n        Caption = '-'\r\n      end\r\n      object MenuItem9: TMenuItem\r\n        Caption = 'Exit'\r\n        OnClick = MenuItem9Click\r\n      end\r\n    end\r\n  end\r\nend\r\n"
  },
  {
    "path": "test/testsvg/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, FileCtrl, Menus, ComCtrls, Types,\n\n  BGRABitmapTypes, BGRABitmap, BGRASVG, BGRASVGType, BGRASVGShapes, BGRAUnits,\n\n  UProfiler;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    CheckBox_ReplaceStrokeAndFill: TCheckBox;\n    FileListBox1: TFileListBox;\n    Image1: TImage;\n    Image2: TImage;\n    MainMenu1: TMainMenu;\n    MCopy1: TMenuItem;\n    MCut1: TMenuItem;\n    Memo1: TMemo;\n    MenuItem1: TMenuItem;\n    MenuItem2: TMenuItem;\n    MenuItem3: TMenuItem;\n    MenuItem4: TMenuItem;\n    MenuItem5: TMenuItem;\n    MenuItem6: TMenuItem;\n    MenuItem7: TMenuItem;\n    MenuItem8: TMenuItem;\n    MenuItem9: TMenuItem;\n    N1: TMenuItem;\n    MPaste1: TMenuItem;\n    MSelectAll: TMenuItem;\n    PageControl1: TPageControl;\n    Panel1: TPanel;\n    Panel2: TPanel;\n    Panel3: TPanel;\n    PanProf: TPanel;\n    PopupMenu1: TPopupMenu;\n    PopupMenu2: TPopupMenu;\n    SaveDialog1: TSaveDialog;\n    Splitter2: TSplitter;\n    Splitter3: TSplitter;\n    Splitter4: TSplitter;\n    TabSheet1: TTabSheet;\n    procedure CheckBox_ReplaceStrokeAndFillChange(Sender: TObject);\n    procedure FileListBox1Change(Sender: TObject);\n    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);\n    procedure FormCreate(Sender: TObject);\n    procedure FormShow(Sender: TObject);\n    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure MCopy1Click(Sender: TObject);\n    procedure MCut1Click(Sender: TObject);\n    procedure Memo1DblClick(Sender: TObject);\n    procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure MenuItem1Click(Sender: TObject);\n    procedure MenuItem2Click(Sender: TObject);\n    procedure MenuItem4Click(Sender: TObject);\n    procedure MenuItem8Click(Sender: TObject);\n    procedure MenuItem9Click(Sender: TObject);\n    procedure MPaste1Click(Sender: TObject);\n    procedure MSelectAllClick(Sender: TObject);\n    procedure PopupMenu1Popup(Sender: TObject);\n  private\n    svg: TBGRASVG;\n    last_image: TImage;\n    prof: TProfiler;\n\n    procedure ChangeFill(AElement: TSVGElement; AData: pointer;\n      var ARecursive: boolean);\n    procedure ReloadFile;\n    procedure Test(var ms: TMemoryStream; kzoom: Single = 1; AFillCode: boolean = false);\n    procedure Test(path: String; kzoom: Single = 1; AFillCode: boolean = false);\n\n  public\n\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\nuses\n Clipbrd, BGRAVectorize;\n\n{$R *.lfm}\n\nconst\n s_file_overwrite = 'Existing file: do you want to overwrite it?';\n\nprocedure TForm1.Test(var ms: TMemoryStream; kzoom: Single = 1; AFillCode: boolean = false);\nVar\n v: Double;\n s: String;\n bmp: TBGRABitmap;\nbegin\n bmp:= TBGRABitmap.Create;\n try\n  if Assigned(svg) then\n   svg.Free;\n\n  prof.BeginMeasure;\n  svg:= TBGRASVG.Create(ms);\n  v:= prof.EndMeasure;\n  s:= prof.FormatTime('create: ',v);\n\n  prof.BeginMeasure;\n  svg.ContainerWidthAsPixel := 480;\n  svg.ContainerHeightAsPixel := 360;\n  bmp.FontRenderer := TBGRAVectorizedFontRenderer.Create;\n  bmp.SetSize(Round(svg.WidthAsPixel*kzoom),Round(svg.HeightAsPixel*kzoom));\n  bmp.Fill(BGRAWhite);\n  v:= prof.EndMeasure;\n  s:= s + prof.FormatTime(' | bmp: ',v);\n\n  prof.BeginMeasure;\n  if CheckBox_ReplaceStrokeAndFill.Checked then\n     svg.IterateElements(@ChangeFill, nil, true);\n  svg.StretchDraw(bmp.Canvas2D, 0,0,bmp.Width,bmp.Height);\n  v:= prof.EndMeasure;\n  s:= s + prof.FormatTime(' | draw: ',v);\n\n  Image1.Picture.Bitmap.Assign(bmp);\n  PanProf.Caption:= s;\n\n  if AFillCode then\n    Memo1.Text:= svg.AsUTF8String;\n finally\n  bmp.Free;\n end;\nend;\n\nprocedure TForm1.ChangeFill(AElement: TSVGElement; AData: pointer;\n  var ARecursive: boolean);\nbegin\n  if AElement is TSVGDefine then\n    ARecursive:= false\n  else\n  begin\n   if not AElement.isFillNone then AElement.fillColor := CSSSkyBlue;\n   if not AElement.isStrokeNone then AElement.strokeColor := CSSOrange;\n  end;\nend;\n\nprocedure TForm1.ReloadFile;\nVar\n png_find: Boolean;\n path: String;\nbegin\n if FileListBox1.ItemIndex <> -1 then\n begin\n  path:= FileListBox1.FileName;\n  Test(path, Screen.PixelsPerInch / 96 * GetCanvasScaleFactor, true);\n  //(view correct result)\n  path:= ChangeFileExt(path,'.png');\n  png_find:= False;\n  if FileExists(path) then\n   try\n    with Image2.Picture do\n    begin\n     LoadFromFile(path);\n     Image2.Hint:= '(anteprime: png '+\n                   IntToStr(Width)+'x'+IntToStr(Height)+')';\n    end;\n    png_find:= True;\n   except\n   end;\n  if not png_find then\n  begin\n   Image2.Hint:= '';\n   Image2.Picture:= nil;\n  end;\n end;\nend;\n\nprocedure TForm1.Test(path: String; kzoom: Single = 1;  AFillCode: boolean = false);\nVar\n ms: TMemoryStream;\nbegin\n ms:= TMemoryStream.Create;\n try\n  ms.LoadFromFile(path);\n  ms.Position:= 0;\n\n  path:= ExtractFileName(path);\n  Test(ms, kzoom, AFillCode);\n finally\n  ms.Free;\n end;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nvar baseDir: string;\nbegin\n svg:= nil;\n last_image:= nil;\n\n prof:= TProfiler.Create;\n\n with FileListBox1 do\n begin\n  baseDir := ExtractFilePath(Application.ExeName);\n  {$IFDEF DARWIN}\n  if not DirectoryExists(baseDir+'svg') then\n    baseDir := baseDir + '../../../';\n  {$ENDIF}\n  Directory := baseDir+'svg'+PathDelim;\n  Mask:= '*.svg';\n end;\n\n PanProf.DoubleBuffered:= True;\nend;\n\nprocedure TForm1.FormShow(Sender: TObject);\nbegin\n if FileListBox1.Count <> 0 then\n begin\n  FileListBox1.ItemIndex:= 0;\n  FileListBox1.Click;\n end;\n PageControl1.ActivePageIndex:= 0;\nend;\n\nprocedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);\nbegin\n svg.Free;\n prof.Free;\nend;\n\nprocedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n if Sender is TImage then\n begin\n  last_image:= Sender as TImage;\n  if (Button = mbRight) and (last_image.Picture <> nil) then\n   PopupMenu2.PopUp(Mouse.CursorPos.x,Mouse.CursorPos.y);\n end;\nend;\n\nprocedure TForm1.MCut1Click(Sender: TObject);\nbegin\n if Memo1.SelLength <> 0 then\n  Memo1.CutToClipboard;\nend;\n\nprocedure TForm1.MCopy1Click(Sender: TObject);\nbegin\n if Memo1.SelLength <> 0 then\n  Memo1.CopyToClipboard;\nend;\n\nprocedure TForm1.MPaste1Click(Sender: TObject);\nbegin\n Memo1.PasteFromClipboard;\nend;\n\nprocedure TForm1.MSelectAllClick(Sender: TObject);\nbegin\n Memo1.SelectAll;\nend;\n\nprocedure TForm1.PopupMenu1Popup(Sender: TObject);\nVar\n b: Boolean;\nbegin\n b:= Memo1.SelLength <> 0;\n\n MCut1.Enabled:= b;\n MCopy1.Enabled:= b;\n MPaste1.Enabled:= Clipboard.HasFormat(CF_Text);\n MSelectAll.Enabled:= Length(Memo1.Lines.Text) <> 0;\nend;\n\nprocedure TForm1.Memo1DblClick(Sender: TObject);\nbegin\n Memo1.ReadOnly:= not Memo1.ReadOnly;\nend;\n\nprocedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;\n  Shift: TShiftState; X, Y: Integer);\nbegin\n if (Button = mbRight) and (not Memo1.ReadOnly) then\n  PopupMenu1.PopUp(Mouse.CursorPos.x,Mouse.CursorPos.y);\nend;\n\nprocedure TForm1.MenuItem1Click(Sender: TObject);\nVar\n s: String;\n scale: single;\n ms: TMemoryStream;\nbegin\n if (Sender is TMenuItem) then\n  scale:= (Sender as TMenuItem).Tag / 100\n else\n  scale:= 1;\n\n ms:= TMemoryStream.Create;\n try\n  s:= Memo1.Text;\n  ms.WriteBuffer(s[1],Length(s));\n  ms.Position:= 0;\n  Test(ms,scale);\n finally\n  ms.Free;\n end;\nend;\n\nprocedure TForm1.MenuItem2Click(Sender: TObject);\nVar\n path: String;\nbegin\n SaveDialog1.Filter:= 'png|*.png';\n if SaveDialog1.Execute then\n  try\n   path:= SaveDialog1.FileName;\n   if FileExists(path) then\n    if MessageDlg('', s_file_overwrite, mtConfirmation,\n       [mbYes, mbNo, mbIgnore],0) <> mrYes then\n     Exit;\n   last_image.Picture.SaveToFile(path);\n  except\n  end;\nend;\n\nprocedure TForm1.MenuItem4Click(Sender: TObject);\nVar\n path: String;\nbegin\n SaveDialog1.Filter:= 'svg|*.svg';\n if SaveDialog1.Execute then\n  try\n   path:= SaveDialog1.FileName;\n   if FileExists(path) then\n    if MessageDlg('', s_file_overwrite, mtConfirmation,\n       [mbYes, mbNo, mbIgnore],0) <> mrYes then\n     Exit;\n   Memo1.Lines.SaveToFile(path);\n  except\n  end;\nend;\n\nprocedure TForm1.MenuItem8Click(Sender: TObject);\nbegin\n MenuItem1.Click;\nend;\n\nprocedure TForm1.MenuItem9Click(Sender: TObject);\nbegin\n Close;\nend;\n\nprocedure TForm1.FileListBox1Change(Sender: TObject);\nbegin\n  ReloadFile;\nend;\n\nprocedure TForm1.CheckBox_ReplaceStrokeAndFillChange(Sender: TObject);\nbegin\n  ReloadFile;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testsvg/uprofiler.pas",
    "content": "unit UProfiler;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils;\n\nType\n TProfiler = class\n  private\n   freq,\n   start: Int64;\n\n   function GetCounter: Int64;\n\n  public\n   constructor Create;\n\n   procedure BeginMeasure;\n   function EndMeasure: Double;\n\n   function FormatTime(prefix: String; v: Double): String;\n\n end;\n\nimplementation\n\nuses\n LCLIntf\n {$ifdef WINDOWS}\n , Windows\n {$endif};\n\nconstructor TProfiler.Create;\nbegin\n inherited;\n\n start:= 0;\n {$ifdef WINDOWS}\n if Windows.QueryPerformanceFrequency(freq) then\n  Exit;\n {$endif}\n freq:= 1000;\nend;\n\nfunction TProfiler.GetCounter: Int64;\nbegin\n {$ifdef WINDOWS}\n  if Windows.QueryPerformanceCounter(Result) then\n   Exit;\n {$endif}\n Result:= LCLIntf.GetTickCount64;\nend;\n\nprocedure TProfiler.BeginMeasure;\nbegin\n start:= GetCounter;\nend;\n\nfunction TProfiler.EndMeasure: Double;\nbegin\n Result:= (GetCounter - start) / freq;\nend;\n\nfunction TProfiler.FormatTime(prefix: String; v: Double): String;\nbegin\n Result:= FormatFloat(prefix+'0.######s',v);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/testvirtualscreen/project1.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"project1\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n    </PublishOptions>\n    <RunParams>\n      <local>\n        <FormatVersion Value=\"1\"/>\n      </local>\n    </RunParams>\n    <RequiredPackages Count=\"2\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"LCL\"/>\n      </Item2>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"project1.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"unit1.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"Form1\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n        <UnitName Value=\"Unit1\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"project1\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <Linking>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/testvirtualscreen/project1.lpr",
    "content": "program project1;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, Unit1\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Initialize;\n  Application.CreateForm(TForm1, Form1);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "test/testvirtualscreen/unit1.lfm",
    "content": "object Form1: TForm1\n  Left = 472\n  Height = 339\n  Top = 154\n  Width = 504\n  Caption = 'Test TBGRAVirtualScreen partial redraw'\n  ClientHeight = 339\n  ClientWidth = 504\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  LCLVersion = '1.8.2.0'\n  WindowState = wsMaximized\n  object VirtualScreen: TBGRAVirtualScreen\n    Left = 0\n    Height = 305\n    Top = 34\n    Width = 504\n    OnRedraw = VirtualScreenRedraw\n    Align = alClient\n    Alignment = taLeftJustify\n    Color = clWhite\n    ParentColor = False\n    TabOrder = 0\n  end\n  object Panel1: TPanel\n    Left = 0\n    Height = 34\n    Top = 0\n    Width = 504\n    Align = alTop\n    ClientHeight = 34\n    ClientWidth = 504\n    TabOrder = 1\n    object Label1: TLabel\n      Left = 6\n      Height = 17\n      Top = 8\n      Width = 30\n      Caption = 'Balls:'\n      ParentColor = False\n    end\n    object SpinEdit1: TSpinEdit\n      Left = 48\n      Height = 27\n      Top = 3\n      Width = 66\n      MinValue = 1\n      OnChange = SpinEdit1Change\n      TabOrder = 0\n      Value = 5\n    end\n    object CheckBox1: TCheckBox\n      Left = 128\n      Height = 22\n      Top = 5\n      Width = 86\n      Caption = 'Full redraw'\n      TabOrder = 1\n    end\n  end\n  object Timer1: TTimer\n    Interval = 10\n    OnTimer = Timer1Timer\n    left = 89\n    top = 75\n  end\nend\n"
  },
  {
    "path": "test/testvirtualscreen/unit1.pas",
    "content": "unit Unit1;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,\n  StdCtrls, Spin, BGRAVirtualScreen, BGRABitmap, BGRABitmapTypes;\n\ntype\n\n  { TForm1 }\n\n  TForm1 = class(TForm)\n    CheckBox1: TCheckBox;\n    Label1: TLabel;\n    Panel1: TPanel;\n    SpinEdit1: TSpinEdit;\n    VirtualScreen: TBGRAVirtualScreen;\n    Timer1: TTimer;\n    procedure FormDestroy(Sender: TObject);\n    procedure SpinEdit1Change(Sender: TObject);\n    procedure VirtualScreenRedraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure FormCreate(Sender: TObject);\n    procedure Timer1Timer(Sender: TObject);\n  private\n    FInit: boolean;\n    procedure InitBalls(ACount: integer);\n    procedure Init;\n    function GetBallRect(AIndex: integer): TRect;\n  public\n    ballRadius: integer;\n    background: TBGRABitmap;\n    balls: array of record\n          ballPos: TPoint;\n          ballSpeed: TPoint;\n          ballColor: TBGRAPixel;\n      end;\n  end;\n\nvar\n  Form1: TForm1;\n\nimplementation\n\n{$R *.lfm}\n\nuses BGRAGradients;\n\n{ TForm1 }\n\nprocedure TForm1.VirtualScreenRedraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  i: Integer;\nbegin\n  Init;\n  Bitmap.FillRect(rect(0,0,Bitmap.Width,Bitmap.Height), background, dmSet);\n  for i := 0 to high(balls) do\n    with balls[i] do\n      Bitmap.EllipseAntialias(ballPos.x,ballPos.y, ballRadius,ballRadius, BGRABlack, 1, ballColor);\nend;\n\nprocedure TForm1.SpinEdit1Change(Sender: TObject);\nbegin\n  initBalls(SpinEdit1.Value);\nend;\n\nprocedure TForm1.FormDestroy(Sender: TObject);\nbegin\n  background.Free;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  VirtualScreen.BitmapAutoScale:= false;\nend;\n\nprocedure TForm1.Timer1Timer(Sender: TObject);\nvar\n  i: Integer;\n  rects: array of TRect;\n  nbRects: integer;\nbegin\n  if not FInit then exit;\n  Timer1.Enabled:= false;\n  setlength(rects, length(balls)*2);\n  nbRects := 0;\n\n  for i := 0 to high(balls) do\n  with balls[i] do\n  begin\n    //rect to clear\n    rects[nbRects] := GetBallRect(i);\n    inc(nbRects);\n\n    inc(ballSpeed.Y);\n    inc(ballPos.X, ballSpeed.x);\n    inc(ballPos.Y, ballSpeed.y);\n    if BallPos.Y >= VirtualScreen.BitmapHeight-ballRadius then\n    begin\n      ballPos.Y := VirtualScreen.BitmapHeight-ballRadius;\n      ballSpeed.Y := -abs(ballSpeed.Y);\n\n      if (BallPos.X < -ballRadius) or (BallPos.X > VirtualScreen.BitmapWidth+ballRadius) then\n      begin\n        ballPos := Point(random(VirtualScreen.BitmapWidth), - ballRadius);\n        ballSpeed.Y := 0;\n        Continue;\n      end;\n    end else\n    begin\n      if BallPos.X+ballRadius >= VirtualScreen.BitmapWidth then\n      begin\n        BallPos.X := VirtualScreen.BitmapWidth-ballRadius;\n        ballSpeed.X := -abs(ballSpeed.x);\n      end else\n      if BallPos.X <= ballRadius then\n      begin\n        BallPos.X := ballRadius;\n        ballSpeed.X := abs(ballSpeed.x);\n      end;\n    end;\n\n    //rect to redraw\n    rects[nbRects] := GetBallRect(i);\n    inc(nbRects);\n  end;\n  if CheckBox1.Checked then\n    VirtualScreen.RedrawBitmap\n  else\n    VirtualScreen.RedrawBitmap(slice(rects,nbRects));\n  Timer1.Enabled:= true;\nend;\n\nprocedure TForm1.InitBalls(ACount: integer);\nvar\n  i: Integer;\nbegin\n  randomize;\n  VirtualScreen.DiscardBitmap;\n  setlength(balls, ACount);\n  for i := 0 to high(balls) do\n  with balls[i] do\n  begin\n    ballPos := Point(random(VirtualScreen.BitmapWidth), (i*VirtualScreen.BitmapHeight div length(balls)) - ballRadius);\n    ballSpeed := Point(random(5)-2, 0);\n    ballColor := BGRA(random(256),random(256),random(256));\n    if ballColor.Lightness > 48000 then ballColor.Lightness:= 48000;\n  end;\nend;\n\nprocedure TForm1.Init;\nvar\n  scale: Double;\nbegin\n  if FInit then exit;\n  FInit := true;\n  scale := VirtualScreen.BitmapScale*Screen.PixelsPerInch/96;\n  ballRadius := round(20*scale);\n  initBalls(SpinEdit1.Value);\n  background := CreateCyclicPerlinNoiseMap(round(256*scale),round(256*scale));\nend;\n\nfunction TForm1.GetBallRect(AIndex: integer): TRect;\nbegin\n  with balls[AIndex] do\n    result := Rect(ballPos.X-ballRadius, ballPos.Y-ballRadius,\n                   ballPos.X+ballRadius+1, ballPos.Y+ballRadius+1);\nend;\n\nend.\n\n"
  },
  {
    "path": "test/vectorize/umain.lfm",
    "content": "object FMain: TFMain\n  Left = 403\n  Height = 447\n  Top = 145\n  Width = 545\n  Caption = 'Vectorize'\n  ClientHeight = 447\n  ClientWidth = 545\n  OnCreate = FormCreate\n  LCLVersion = '2.0.0.4'\n  object BCPanel1: TBCPanel\n    Left = 0\n    Height = 38\n    Top = 0\n    Width = 545\n    Align = alTop\n    Background.Color = clBtnFace\n    Background.ColorOpacity = 255\n    Background.Gradient1.StartColor = clBtnFace\n    Background.Gradient1.StartColorOpacity = 255\n    Background.Gradient1.DrawMode = dmSet\n    Background.Gradient1.EndColor = clBtnHighlight\n    Background.Gradient1.EndColorOpacity = 255\n    Background.Gradient1.ColorCorrection = True\n    Background.Gradient1.GradientType = gtLinear\n    Background.Gradient1.Point1XPercent = 0\n    Background.Gradient1.Point1YPercent = 0\n    Background.Gradient1.Point2XPercent = 0\n    Background.Gradient1.Point2YPercent = 100\n    Background.Gradient1.Sinus = False\n    Background.Gradient2.StartColor = clBtnHighlight\n    Background.Gradient2.StartColorOpacity = 255\n    Background.Gradient2.DrawMode = dmSet\n    Background.Gradient2.EndColor = clBtnShadow\n    Background.Gradient2.EndColorOpacity = 255\n    Background.Gradient2.ColorCorrection = True\n    Background.Gradient2.GradientType = gtLinear\n    Background.Gradient2.Point1XPercent = 0\n    Background.Gradient2.Point1YPercent = 0\n    Background.Gradient2.Point2XPercent = 0\n    Background.Gradient2.Point2YPercent = 100\n    Background.Gradient2.Sinus = False\n    Background.Gradient1EndPercent = 35\n    Background.Style = bbsGradient\n    BevelInner = bvNone\n    BevelOuter = bvRaised\n    BevelWidth = 1\n    Border.Color = clBlack\n    Border.ColorOpacity = 255\n    Border.LightColor = clWhite\n    Border.LightOpacity = 255\n    Border.LightWidth = 0\n    Border.Style = bboNone\n    Border.Width = 1\n    FontEx.Color = clDefault\n    FontEx.EndEllipsis = False\n    FontEx.FontQuality = fqFineAntialiasing\n    FontEx.Height = 0\n    FontEx.SingleLine = True\n    FontEx.Shadow = False\n    FontEx.ShadowColor = clBlack\n    FontEx.ShadowColorOpacity = 255\n    FontEx.ShadowRadius = 5\n    FontEx.ShadowOffsetX = 5\n    FontEx.ShadowOffsetY = 5\n    FontEx.Style = []\n    FontEx.TextAlignment = bcaCenter\n    FontEx.WordBreak = False\n    Rounding.RoundX = 1\n    Rounding.RoundY = 1\n    Rounding.RoundOptions = []\n    TabOrder = 0\n    object BCLabel1: TBCLabel\n      Left = 8\n      Height = 17\n      Top = 8\n      Width = 33\n      Background.Color = clBlack\n      Background.ColorOpacity = 255\n      Background.Gradient1.StartColor = clWhite\n      Background.Gradient1.StartColorOpacity = 255\n      Background.Gradient1.DrawMode = dmSet\n      Background.Gradient1.EndColor = clBlack\n      Background.Gradient1.EndColorOpacity = 255\n      Background.Gradient1.ColorCorrection = True\n      Background.Gradient1.GradientType = gtLinear\n      Background.Gradient1.Point1XPercent = 0\n      Background.Gradient1.Point1YPercent = 0\n      Background.Gradient1.Point2XPercent = 0\n      Background.Gradient1.Point2YPercent = 100\n      Background.Gradient1.Sinus = False\n      Background.Gradient2.StartColor = clWhite\n      Background.Gradient2.StartColorOpacity = 255\n      Background.Gradient2.DrawMode = dmSet\n      Background.Gradient2.EndColor = clBlack\n      Background.Gradient2.EndColorOpacity = 255\n      Background.Gradient2.ColorCorrection = True\n      Background.Gradient2.GradientType = gtLinear\n      Background.Gradient2.Point1XPercent = 0\n      Background.Gradient2.Point1YPercent = 0\n      Background.Gradient2.Point2XPercent = 0\n      Background.Gradient2.Point2YPercent = 100\n      Background.Gradient2.Sinus = False\n      Background.Gradient1EndPercent = 35\n      Background.Style = bbsClear\n      Border.Color = clBlack\n      Border.ColorOpacity = 255\n      Border.LightColor = clWhite\n      Border.LightOpacity = 255\n      Border.LightWidth = 0\n      Border.Style = bboNone\n      Border.Width = 1\n      Caption = 'Zoom'\n      FontEx.Color = clDefault\n      FontEx.EndEllipsis = False\n      FontEx.FontQuality = fqFineAntialiasing\n      FontEx.Height = 0\n      FontEx.SingleLine = True\n      FontEx.Shadow = False\n      FontEx.ShadowColor = clBlack\n      FontEx.ShadowColorOpacity = 255\n      FontEx.ShadowRadius = 5\n      FontEx.ShadowOffsetX = 5\n      FontEx.ShadowOffsetY = 5\n      FontEx.Style = []\n      FontEx.TextAlignment = bcaCenter\n      FontEx.WordBreak = False\n      InnerMargin = 0\n      Rounding.RoundX = 1\n      Rounding.RoundY = 1\n      Rounding.RoundOptions = []\n    end\n    object BCTrackbarZoom: TBCTrackbarUpdown\n      Left = 48\n      Height = 26\n      Top = 5\n      Width = 48\n      BarExponent = 1\n      Increment = 1\n      LongTimeInterval = 400\n      MinValue = 1\n      MaxValue = 32\n      OnChange = BCTrackbarChange\n      Value = 8\n      ShortTimeInterval = 100\n      Background.Color = clWindow\n      Background.ColorOpacity = 255\n      Background.Gradient1.StartColor = clWhite\n      Background.Gradient1.StartColorOpacity = 255\n      Background.Gradient1.DrawMode = dmSet\n      Background.Gradient1.EndColor = clBlack\n      Background.Gradient1.EndColorOpacity = 255\n      Background.Gradient1.ColorCorrection = True\n      Background.Gradient1.GradientType = gtLinear\n      Background.Gradient1.Point1XPercent = 0\n      Background.Gradient1.Point1YPercent = 0\n      Background.Gradient1.Point2XPercent = 0\n      Background.Gradient1.Point2YPercent = 100\n      Background.Gradient1.Sinus = False\n      Background.Gradient2.StartColor = clWhite\n      Background.Gradient2.StartColorOpacity = 255\n      Background.Gradient2.DrawMode = dmSet\n      Background.Gradient2.EndColor = clBlack\n      Background.Gradient2.EndColorOpacity = 255\n      Background.Gradient2.ColorCorrection = True\n      Background.Gradient2.GradientType = gtLinear\n      Background.Gradient2.Point1XPercent = 0\n      Background.Gradient2.Point1YPercent = 0\n      Background.Gradient2.Point2XPercent = 0\n      Background.Gradient2.Point2YPercent = 100\n      Background.Gradient2.Sinus = False\n      Background.Gradient1EndPercent = 35\n      Background.Style = bbsColor\n      ButtonBackground.Color = clBlack\n      ButtonBackground.ColorOpacity = 255\n      ButtonBackground.Gradient1.StartColor = clBtnShadow\n      ButtonBackground.Gradient1.StartColorOpacity = 255\n      ButtonBackground.Gradient1.DrawMode = dmSet\n      ButtonBackground.Gradient1.EndColor = clBtnFace\n      ButtonBackground.Gradient1.EndColorOpacity = 255\n      ButtonBackground.Gradient1.ColorCorrection = True\n      ButtonBackground.Gradient1.GradientType = gtLinear\n      ButtonBackground.Gradient1.Point1XPercent = 0\n      ButtonBackground.Gradient1.Point1YPercent = -50\n      ButtonBackground.Gradient1.Point2XPercent = 0\n      ButtonBackground.Gradient1.Point2YPercent = 50\n      ButtonBackground.Gradient1.Sinus = False\n      ButtonBackground.Gradient2.StartColor = clBtnFace\n      ButtonBackground.Gradient2.StartColorOpacity = 255\n      ButtonBackground.Gradient2.DrawMode = dmSet\n      ButtonBackground.Gradient2.EndColor = clBtnShadow\n      ButtonBackground.Gradient2.EndColorOpacity = 255\n      ButtonBackground.Gradient2.ColorCorrection = True\n      ButtonBackground.Gradient2.GradientType = gtLinear\n      ButtonBackground.Gradient2.Point1XPercent = 0\n      ButtonBackground.Gradient2.Point1YPercent = 50\n      ButtonBackground.Gradient2.Point2XPercent = 0\n      ButtonBackground.Gradient2.Point2YPercent = 150\n      ButtonBackground.Gradient2.Sinus = False\n      ButtonBackground.Gradient1EndPercent = 50\n      ButtonBackground.Style = bbsGradient\n      ButtonDownBackground.Color = clBtnShadow\n      ButtonDownBackground.ColorOpacity = 255\n      ButtonDownBackground.Gradient1.StartColor = clWhite\n      ButtonDownBackground.Gradient1.StartColorOpacity = 255\n      ButtonDownBackground.Gradient1.DrawMode = dmSet\n      ButtonDownBackground.Gradient1.EndColor = clBlack\n      ButtonDownBackground.Gradient1.EndColorOpacity = 255\n      ButtonDownBackground.Gradient1.ColorCorrection = True\n      ButtonDownBackground.Gradient1.GradientType = gtLinear\n      ButtonDownBackground.Gradient1.Point1XPercent = 0\n      ButtonDownBackground.Gradient1.Point1YPercent = 0\n      ButtonDownBackground.Gradient1.Point2XPercent = 0\n      ButtonDownBackground.Gradient1.Point2YPercent = 100\n      ButtonDownBackground.Gradient1.Sinus = False\n      ButtonDownBackground.Gradient2.StartColor = clWhite\n      ButtonDownBackground.Gradient2.StartColorOpacity = 255\n      ButtonDownBackground.Gradient2.DrawMode = dmSet\n      ButtonDownBackground.Gradient2.EndColor = clBlack\n      ButtonDownBackground.Gradient2.EndColorOpacity = 255\n      ButtonDownBackground.Gradient2.ColorCorrection = True\n      ButtonDownBackground.Gradient2.GradientType = gtLinear\n      ButtonDownBackground.Gradient2.Point1XPercent = 0\n      ButtonDownBackground.Gradient2.Point1YPercent = 0\n      ButtonDownBackground.Gradient2.Point2XPercent = 0\n      ButtonDownBackground.Gradient2.Point2YPercent = 100\n      ButtonDownBackground.Gradient2.Sinus = False\n      ButtonDownBackground.Gradient1EndPercent = 35\n      ButtonDownBackground.Style = bbsColor\n      Border.Color = clWindowText\n      Border.ColorOpacity = 255\n      Border.LightColor = clWhite\n      Border.LightOpacity = 255\n      Border.LightWidth = 0\n      Border.Style = bboSolid\n      Border.Width = 1\n      Rounding.RoundX = 1\n      Rounding.RoundY = 1\n      Rounding.RoundOptions = []\n      Font.Color = clWindowText\n      Font.Name = 'Arial'\n      HasTrackBar = True\n      ArrowColor = clBtnText\n      TabOrder = 0\n      TabStop = True\n      UseDockManager = False\n    end\n    object BCLabel2: TBCLabel\n      Left = 112\n      Height = 17\n      Top = 8\n      Width = 80\n      Background.Color = clBlack\n      Background.ColorOpacity = 255\n      Background.Gradient1.StartColor = clWhite\n      Background.Gradient1.StartColorOpacity = 255\n      Background.Gradient1.DrawMode = dmSet\n      Background.Gradient1.EndColor = clBlack\n      Background.Gradient1.EndColorOpacity = 255\n      Background.Gradient1.ColorCorrection = True\n      Background.Gradient1.GradientType = gtLinear\n      Background.Gradient1.Point1XPercent = 0\n      Background.Gradient1.Point1YPercent = 0\n      Background.Gradient1.Point2XPercent = 0\n      Background.Gradient1.Point2YPercent = 100\n      Background.Gradient1.Sinus = False\n      Background.Gradient2.StartColor = clWhite\n      Background.Gradient2.StartColorOpacity = 255\n      Background.Gradient2.DrawMode = dmSet\n      Background.Gradient2.EndColor = clBlack\n      Background.Gradient2.EndColorOpacity = 255\n      Background.Gradient2.ColorCorrection = True\n      Background.Gradient2.GradientType = gtLinear\n      Background.Gradient2.Point1XPercent = 0\n      Background.Gradient2.Point1YPercent = 0\n      Background.Gradient2.Point2XPercent = 0\n      Background.Gradient2.Point2YPercent = 100\n      Background.Gradient2.Sinus = False\n      Background.Gradient1EndPercent = 35\n      Background.Style = bbsClear\n      Border.Color = clBlack\n      Border.ColorOpacity = 255\n      Border.LightColor = clWhite\n      Border.LightOpacity = 255\n      Border.LightWidth = 0\n      Border.Style = bboNone\n      Border.Width = 1\n      Caption = 'Diagonal fill %'\n      FontEx.Color = clDefault\n      FontEx.EndEllipsis = False\n      FontEx.FontQuality = fqFineAntialiasing\n      FontEx.Height = 0\n      FontEx.SingleLine = True\n      FontEx.Shadow = False\n      FontEx.ShadowColor = clBlack\n      FontEx.ShadowColorOpacity = 255\n      FontEx.ShadowRadius = 5\n      FontEx.ShadowOffsetX = 5\n      FontEx.ShadowOffsetY = 5\n      FontEx.Style = []\n      FontEx.TextAlignment = bcaCenter\n      FontEx.WordBreak = False\n      InnerMargin = 0\n      Rounding.RoundX = 1\n      Rounding.RoundY = 1\n      Rounding.RoundOptions = []\n    end\n    object BCTrackbarDiagonal: TBCTrackbarUpdown\n      Left = 200\n      Height = 26\n      Top = 5\n      Width = 48\n      BarExponent = 1\n      Increment = 1\n      LongTimeInterval = 400\n      MinValue = 10\n      MaxValue = 90\n      OnChange = BCTrackbarChange\n      Value = 70\n      ShortTimeInterval = 100\n      Background.Color = clWindow\n      Background.ColorOpacity = 255\n      Background.Gradient1.StartColor = clWhite\n      Background.Gradient1.StartColorOpacity = 255\n      Background.Gradient1.DrawMode = dmSet\n      Background.Gradient1.EndColor = clBlack\n      Background.Gradient1.EndColorOpacity = 255\n      Background.Gradient1.ColorCorrection = True\n      Background.Gradient1.GradientType = gtLinear\n      Background.Gradient1.Point1XPercent = 0\n      Background.Gradient1.Point1YPercent = 0\n      Background.Gradient1.Point2XPercent = 0\n      Background.Gradient1.Point2YPercent = 100\n      Background.Gradient1.Sinus = False\n      Background.Gradient2.StartColor = clWhite\n      Background.Gradient2.StartColorOpacity = 255\n      Background.Gradient2.DrawMode = dmSet\n      Background.Gradient2.EndColor = clBlack\n      Background.Gradient2.EndColorOpacity = 255\n      Background.Gradient2.ColorCorrection = True\n      Background.Gradient2.GradientType = gtLinear\n      Background.Gradient2.Point1XPercent = 0\n      Background.Gradient2.Point1YPercent = 0\n      Background.Gradient2.Point2XPercent = 0\n      Background.Gradient2.Point2YPercent = 100\n      Background.Gradient2.Sinus = False\n      Background.Gradient1EndPercent = 35\n      Background.Style = bbsColor\n      ButtonBackground.Color = clBlack\n      ButtonBackground.ColorOpacity = 255\n      ButtonBackground.Gradient1.StartColor = clBtnShadow\n      ButtonBackground.Gradient1.StartColorOpacity = 255\n      ButtonBackground.Gradient1.DrawMode = dmSet\n      ButtonBackground.Gradient1.EndColor = clBtnFace\n      ButtonBackground.Gradient1.EndColorOpacity = 255\n      ButtonBackground.Gradient1.ColorCorrection = True\n      ButtonBackground.Gradient1.GradientType = gtLinear\n      ButtonBackground.Gradient1.Point1XPercent = 0\n      ButtonBackground.Gradient1.Point1YPercent = -50\n      ButtonBackground.Gradient1.Point2XPercent = 0\n      ButtonBackground.Gradient1.Point2YPercent = 50\n      ButtonBackground.Gradient1.Sinus = False\n      ButtonBackground.Gradient2.StartColor = clBtnFace\n      ButtonBackground.Gradient2.StartColorOpacity = 255\n      ButtonBackground.Gradient2.DrawMode = dmSet\n      ButtonBackground.Gradient2.EndColor = clBtnShadow\n      ButtonBackground.Gradient2.EndColorOpacity = 255\n      ButtonBackground.Gradient2.ColorCorrection = True\n      ButtonBackground.Gradient2.GradientType = gtLinear\n      ButtonBackground.Gradient2.Point1XPercent = 0\n      ButtonBackground.Gradient2.Point1YPercent = 50\n      ButtonBackground.Gradient2.Point2XPercent = 0\n      ButtonBackground.Gradient2.Point2YPercent = 150\n      ButtonBackground.Gradient2.Sinus = False\n      ButtonBackground.Gradient1EndPercent = 50\n      ButtonBackground.Style = bbsGradient\n      ButtonDownBackground.Color = clBtnShadow\n      ButtonDownBackground.ColorOpacity = 255\n      ButtonDownBackground.Gradient1.StartColor = clWhite\n      ButtonDownBackground.Gradient1.StartColorOpacity = 255\n      ButtonDownBackground.Gradient1.DrawMode = dmSet\n      ButtonDownBackground.Gradient1.EndColor = clBlack\n      ButtonDownBackground.Gradient1.EndColorOpacity = 255\n      ButtonDownBackground.Gradient1.ColorCorrection = True\n      ButtonDownBackground.Gradient1.GradientType = gtLinear\n      ButtonDownBackground.Gradient1.Point1XPercent = 0\n      ButtonDownBackground.Gradient1.Point1YPercent = 0\n      ButtonDownBackground.Gradient1.Point2XPercent = 0\n      ButtonDownBackground.Gradient1.Point2YPercent = 100\n      ButtonDownBackground.Gradient1.Sinus = False\n      ButtonDownBackground.Gradient2.StartColor = clWhite\n      ButtonDownBackground.Gradient2.StartColorOpacity = 255\n      ButtonDownBackground.Gradient2.DrawMode = dmSet\n      ButtonDownBackground.Gradient2.EndColor = clBlack\n      ButtonDownBackground.Gradient2.EndColorOpacity = 255\n      ButtonDownBackground.Gradient2.ColorCorrection = True\n      ButtonDownBackground.Gradient2.GradientType = gtLinear\n      ButtonDownBackground.Gradient2.Point1XPercent = 0\n      ButtonDownBackground.Gradient2.Point1YPercent = 0\n      ButtonDownBackground.Gradient2.Point2XPercent = 0\n      ButtonDownBackground.Gradient2.Point2YPercent = 100\n      ButtonDownBackground.Gradient2.Sinus = False\n      ButtonDownBackground.Gradient1EndPercent = 35\n      ButtonDownBackground.Style = bbsColor\n      Border.Color = clWindowText\n      Border.ColorOpacity = 255\n      Border.LightColor = clWhite\n      Border.LightOpacity = 255\n      Border.LightWidth = 0\n      Border.Style = bboSolid\n      Border.Width = 1\n      Rounding.RoundX = 1\n      Rounding.RoundY = 1\n      Rounding.RoundOptions = []\n      Font.Color = clWindowText\n      Font.Name = 'Arial'\n      HasTrackBar = True\n      ArrowColor = clBtnText\n      TabOrder = 1\n      TabStop = True\n      UseDockManager = False\n    end\n    object CheckBoxIntermediate: TCheckBox\n      Left = 257\n      Height = 22\n      Top = 6\n      Width = 97\n      Caption = 'Intermediate'\n      Checked = True\n      OnChange = CheckBoxIntermediateChange\n      State = cbChecked\n      TabOrder = 2\n    end\n  end\n  object BGRAVirtualScreen1: TBGRAVirtualScreen\n    Left = 0\n    Height = 409\n    Top = 38\n    Width = 545\n    OnRedraw = BGRAVirtualScreen1Redraw\n    Align = alClient\n    Alignment = taLeftJustify\n    Color = clGray\n    ParentColor = False\n    TabOrder = 1\n    OnMouseDown = BGRAVirtualScreen1MouseDown\n    OnMouseMove = BGRAVirtualScreen1MouseMove\n    OnMouseUp = BGRAVirtualScreen1MouseUp\n  end\nend\n"
  },
  {
    "path": "test/vectorize/umain.pas",
    "content": "unit umain;\n\n{$mode objfpc}{$H+}\n\ninterface\n\nuses\n  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,\n  BCPanel, BCLabel, BCTrackbarUpdown, BGRAVirtualScreen, BGRABitmap,\n  BGRABitmapTypes;\n\ntype\n\n  { TFMain }\n\n  TFMain = class(TForm)\n    BCLabel1: TBCLabel;\n    BCLabel2: TBCLabel;\n    BCPanel1: TBCPanel;\n    BCTrackbarZoom: TBCTrackbarUpdown;\n    BCTrackbarDiagonal: TBCTrackbarUpdown;\n    BGRAVirtualScreen1: TBGRAVirtualScreen;\n    CheckBoxIntermediate: TCheckBox;\n    procedure BCTrackbarChange(Sender: TObject; AByUser: boolean);\n    procedure BGRAVirtualScreen1MouseDown(Sender: TObject;\n      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\n    procedure BGRAVirtualScreen1MouseMove(Sender: TObject; Shift: TShiftState;\n      X, Y: Integer);\n    procedure BGRAVirtualScreen1MouseUp(Sender: TObject; Button: TMouseButton;\n      Shift: TShiftState; X, Y: Integer);\n    procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\n    procedure CheckBoxIntermediateChange(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n  private\n\n    function GetRawBitmap: TBGRABitmap;\n    function GetPosAt(X,Y: Integer): integer;\n  public\n    pos: array of TPoint;\n    pointMoving: integer;\n    pointMoveMouseStart, pointMoveCoordStart: TPoint;\n  end;\n\nvar\n  FMain: TFMain;\n\nimplementation\n\nuses BGRAVectorize, BGRATransform;\n\n{$R *.lfm}\n\n{ TFMain }\n\nprocedure TFMain.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);\nvar\n  bmp: TBGRABitmap;\n  pts: ArrayOfTPointF;\n  zoom, i: Integer;\n  radius: single;\n  m: TAffineMatrix;\nbegin\n  bmp := GetRawBitmap;\n  zoom := BCTrackbarZoom.Value;\n  Bitmap.StretchPutImage(rect(0,0,bmp.Width*zoom,bmp.Height*zoom), bmp, dmSet);\n  if zoom >= 4 then\n  begin\n    for i := 1 to bmp.Height-1 do\n      Bitmap.HorizLine(0,i*zoom-1,bmp.Width*zoom-1,BGRA(144,144,144,128), dmDrawWithTransparency);\n    for i := 1 to bmp.Width-1 do\n      Bitmap.VertLine(i*zoom-1,0,bmp.Height*zoom-1,BGRA(144,144,144,128), dmDrawWithTransparency);\n  end;\n  pts := VectorizeMonochrome(bmp, 1, true, true, BCTrackbarDiagonal.Value, CheckBoxIntermediate.Checked);\n\n  bmp.FillTransparent;\n  bmp.FillPolyAntialias(pts, BGRA(0,128,0,128));\n  Bitmap.StretchPutImage(rect(0,0,bmp.Width*zoom,bmp.Height*zoom), bmp, dmDrawWithTransparency);\n\n  m := AffineMatrixTranslation(-0.5,-0.5)*AffineMatrixScale(zoom,zoom)*AffineMatrixTranslation(0.5,0.5);\n  for i := 0 to high(pts) do pts[i] := m * pts[i];\n\n  Bitmap.DrawPolygonAntialias(pts, CSSRed, 2);\n  if zoom > 6 then\n  begin\n    radius := zoom/6;\n    if radius < 2.5 then radius := 2.5;\n    for i := 0 to high(pts) do\n      Bitmap.EllipseAntialias(pts[i].x,pts[i].y, radius,radius, BGRA(0,0,0,192),1,CSSOrange);\n  end;\n for i := 0 to high(pos) do\n  begin\n    Bitmap.EllipseAntialias(pos[i].x*zoom,pos[i].y*zoom,8,8,BGRABlack,4);\n    Bitmap.EllipseAntialias(pos[i].x*zoom,pos[i].y*zoom,8,8,BGRAWhite,2);\n  end;\n  bmp.Free;\nend;\n\nprocedure TFMain.CheckBoxIntermediateChange(Sender: TObject);\nbegin\n  BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TFMain.FormCreate(Sender: TObject);\nbegin\n  setlength(pos, 4);\n  pos[0] := Point(10,10);\n  pos[1] := Point(60,10);\n  pos[2] := Point(10,20);\n  pos[3] := Point(60,60);\n  pointMoving := -1;\nend;\n\nprocedure TFMain.BCTrackbarChange(Sender: TObject; AByUser: boolean);\nbegin\n  if AByUser then BGRAVirtualScreen1.DiscardBitmap;\nend;\n\nprocedure TFMain.BGRAVirtualScreen1MouseDown(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nvar\n  idx: Integer;\nbegin\n  if Button = mbLeft then\n  begin\n    idx := GetPosAt(X,Y);\n    pointMoving := idx;\n    pointMoveMouseStart := Point(X,Y);\n    pointMoveCoordStart := pos[idx];\n    BGRAVirtualScreen1.Cursor := crHandPoint;\n  end;\n\nend;\n\nprocedure TFMain.BGRAVirtualScreen1MouseMove(Sender: TObject;\n  Shift: TShiftState; X, Y: Integer);\nvar\n  idx, zoom: Integer;\n  newPos: TPoint;\nbegin\n  if pointMoving <> -1 then\n  begin\n    zoom := BCTrackbarZoom.Value;\n    newPos := Point(pointMoveCoordStart.x + round((X-pointMoveMouseStart.x)/zoom),\n                    pointMoveCoordStart.y + round((Y-pointMoveMouseStart.y)/zoom));\n    if (newPos.X <> pos[pointMoving].x) or (newPos.Y <> pos[pointMoving].y) then\n    begin\n      pos[pointMoving] := newPos;\n      BGRAVirtualScreen1.DiscardBitmap;\n    end;\n  end else\n  begin\n    idx := GetPosAt(X,Y);\n    if idx <> -1 then BGRAVirtualScreen1.Cursor := crHandPoint else BGRAVirtualScreen1.Cursor := crDefault;\n  end;\nend;\n\nprocedure TFMain.BGRAVirtualScreen1MouseUp(Sender: TObject;\n  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);\nbegin\n  if Button = mbLeft then pointMoving:= -1;\nend;\n\nfunction TFMain.GetRawBitmap: TBGRABitmap;\nvar\n  zoom: Integer;\nbegin\n  zoom := BCTrackbarZoom.Value;\n  result := TBGRABitmap.Create(BGRAVirtualScreen1.Width div zoom,BGRAVirtualScreen1.Height div zoom, BGRAWhite);\n  result.FillEllipseInRect(rect(pos[2].x,pos[2].y,pos[3].x,pos[3].y), BGRABlack, dmSet);\n  result.DrawLine(pos[0].x,pos[0].y,pos[1].x,pos[1].y, BGRABlack, true);\nend;\n\nfunction TFMain.GetPosAt(X, Y: Integer): integer;\nvar\n  minDist,dist, i, zoom: integer;\nbegin\n  minDist := sqr(8);\n  result := -1;\n  zoom := BCTrackbarZoom.Value;\n  for i := 0 to high(pos) do\n  begin\n    dist := sqr(X-pos[i].X*zoom)+sqr(Y-pos[i].Y*zoom);\n    if dist < minDist then\n    begin\n      minDist := dist;\n      result := i;\n    end;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "test/vectorize/vectorize.lpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"11\"/>\n    <General>\n      <SessionStorage Value=\"InProjectDir\"/>\n      <MainUnit Value=\"0\"/>\n      <Title Value=\"vectorize\"/>\n      <Scaled Value=\"True\"/>\n      <ResourceType Value=\"res\"/>\n      <UseXPManifest Value=\"True\"/>\n      <XPManifest>\n        <DpiAware Value=\"True\"/>\n      </XPManifest>\n      <Icon Value=\"0\"/>\n    </General>\n    <BuildModes Count=\"1\">\n      <Item1 Name=\"Default\" Default=\"True\"/>\n    </BuildModes>\n    <PublishOptions>\n      <Version Value=\"2\"/>\n      <UseFileFilters Value=\"True\"/>\n    </PublishOptions>\n    <RunParams>\n      <FormatVersion Value=\"2\"/>\n      <Modes Count=\"0\"/>\n    </RunParams>\n    <RequiredPackages Count=\"3\">\n      <Item1>\n        <PackageName Value=\"bgracontrols\"/>\n      </Item1>\n      <Item2>\n        <PackageName Value=\"BGRABitmapPack\"/>\n      </Item2>\n      <Item3>\n        <PackageName Value=\"LCL\"/>\n      </Item3>\n    </RequiredPackages>\n    <Units Count=\"2\">\n      <Unit0>\n        <Filename Value=\"vectorize.lpr\"/>\n        <IsPartOfProject Value=\"True\"/>\n      </Unit0>\n      <Unit1>\n        <Filename Value=\"umain.pas\"/>\n        <IsPartOfProject Value=\"True\"/>\n        <ComponentName Value=\"FMain\"/>\n        <HasResources Value=\"True\"/>\n        <ResourceBaseClass Value=\"Form\"/>\n      </Unit1>\n    </Units>\n  </ProjectOptions>\n  <CompilerOptions>\n    <Version Value=\"11\"/>\n    <Target>\n      <Filename Value=\"vectorize\"/>\n    </Target>\n    <SearchPaths>\n      <IncludeFiles Value=\"$(ProjOutDir)\"/>\n      <UnitOutputDirectory Value=\"lib/$(TargetCPU)-$(TargetOS)\"/>\n    </SearchPaths>\n    <CodeGeneration>\n      <Optimizations>\n        <OptimizationLevel Value=\"0\"/>\n      </Optimizations>\n    </CodeGeneration>\n    <Linking>\n      <Debugging>\n        <UseHeaptrc Value=\"True\"/>\n      </Debugging>\n      <Options>\n        <Win32>\n          <GraphicApplication Value=\"True\"/>\n        </Win32>\n      </Options>\n    </Linking>\n  </CompilerOptions>\n  <Debugging>\n    <Exceptions Count=\"3\">\n      <Item1>\n        <Name Value=\"EAbort\"/>\n      </Item1>\n      <Item2>\n        <Name Value=\"ECodetoolError\"/>\n      </Item2>\n      <Item3>\n        <Name Value=\"EFOpenError\"/>\n      </Item3>\n    </Exceptions>\n  </Debugging>\n</CONFIG>\n"
  },
  {
    "path": "test/vectorize/vectorize.lpr",
    "content": "program vectorize;\n\n{$mode objfpc}{$H+}\n\nuses\n  {$IFDEF UNIX}{$IFDEF UseCThreads}\n  cthreads,\n  {$ENDIF}{$ENDIF}\n  Interfaces, // this includes the LCL widgetset\n  Forms, umain\n  { you can add units after this };\n\n{$R *.res}\n\nbegin\n  RequireDerivedFormResource:=True;\n  Application.Scaled:=True;\n  Application.Initialize;\n  Application.CreateForm(TFMain, FMain);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "update_BGRABitmap.json",
    "content": "{\n  \"UpdateLazPackages\" : [\n    {\n      \"ForceNotify\" : false,\n      \"InternalVersion\" : 1,\n      \"Name\" : \"bglcontrols.lpk\",\n      \"Version\" : \"1.2.0.0\"\n    },\n    {\n      \"ForceNotify\" : false,\n      \"InternalVersion\" : 1,\n      \"Name\" : \"bgrabitmappack.lpk\",\n      \"Version\" : \"11.6.6.0\"\n    }\n  ],\n  \"UpdatePackageData\" : {\n    \"DisableInOPM\" : false,\n    \"DownloadZipURL\" : \"https://github.com/bgrabitmap/bgrabitmap/archive/v11.6.6.zip\",\n    \"Name\" : \"bgrabitmap-master\"\n  }\n}"
  },
  {
    "path": "winmake/copyfile.bat",
    "content": "@echo off\nif \"%~1\" == \"\" goto argument\nif \"%~2\" == \"\" goto argument\nsetlocal\nset FILENAME=%1\nset FILENAME=%FILENAME:/=\\%\nset DESTINATION=%2\nset DESTINATION=%DESTINATION:/=\\%\ncopy /y %FILENAME% %DESTINATION%\nexit /b 0\n\n:argument\necho Copies a file to the specified destination.\necho Usage: copyfile [FILENAME] [DESTINATION]\nexit /b 1\n\n\n"
  },
  {
    "path": "winmake/remove.bat",
    "content": "@echo off\nif \"%~1\" == \"\" goto argument\nsetlocal\nset FILENAME=%1\nset FILENAME=%FILENAME:/=\\%\nif exist %FILENAME% del /f /q %FILENAME%\nexit /b 0\n\n:argument\necho Removes a file if it exists.\necho Usage: remove [FILENAME]\nexit /b 1\n\n\n"
  },
  {
    "path": "winmake/removedir.bat",
    "content": "@echo off\nif \"%~1\" == \"\" goto argument\nsetlocal\nset DIRNAME=%1\nset DIRNAME=%DIRNAME:/=\\%\nif exist %DIRNAME% rd /s /q %DIRNAME%\nexit /b 0\n\n:argument\necho Removes a directory and all its content if it exists.\necho Usage: removedir [DIRNAME]\nexit /b 1\n\n\n"
  }
]